sabato 1 gennaio 2000

[AL CORPUS] The Hidden Side of Things [5/6]

MTEzNC7CoMKgwqDCoApUaGVyZSBpcyB0aGUgZWZmZWN0IHByb2R1Y2VkIHVwb24gdGhlIG1lbnRhbCBib2R5IGl0c2VsZiwgYW5kIHdlIGZpbmQgCnRoYXQgdG8gYmUgb2YgdGhlIG5hdHVyZSBvZiBzZXR0aW5nIHVwIGEgaGFiaXQuIFRoZXJlIGFyZSBtYW55IGRpZmZlcmVudCB0eXBlcyAKb2YgbWF0dGVyIGluIHRoZSBtZW50YWwgYm9keSwgYW5kIGVhY2ggb2YgdGhlbSBhcHBlYXJzIHRvIGhhdmUgaXRzIG93biBzcGVjaWFsIApyYXRlIG9mIHVuZHVsYXRpb24sIHRvIHdoaWNoIGl0IHNlZW1zIG1vc3QgYWNjdXN0b21lZCwgc28gdGhhdCBpdCByZWFkaWx5IApyZXNwb25kcyB0byBpdCBhbmQgdGVuZHMgdG8gcmV0dXJuIHRvIGl0IGFzIHNvb24gYXMgcG9zc2libGUgd2hlbiBpdCBoYXMgYmVlbiAKZm9yY2VkIGF3YXkgZnJvbSBpdCBieSBzb21lIHN0cm9uZyBydXNoIG9mIHRob3VnaHQgb3IgZmVlbGluZy4gQSBzdWZmaWNpZW50bHkgCnN0cm9uZyB0aG91Z2h0IG1heSBmb3IgdGhlIG1vbWVudCBzZXQgYWxsIHRoZSBwYXJ0aWNsZXMgb2Ygb25lIGRpdmlzaW9uIG9mIHRoZSAKbWVudGFsIGJvZHkgc3dpbmdpbmcgYXQgdGhlIHNhbWUgcmF0ZTsgYW5kIGV2ZXJ5IHRpbWUgdGhhdCB0aGF0IGhhcHBlbnMgaXQgaXMgYSAKbGl0dGxlIGVhc2llciBmb3IgaXQgdG8gaGFwcGVuIGFnYWluLiBBIGhhYml0IG9mIG1vdmluZyBhdCB0aGF0IHJhdGUgaXMgYmVpbmcgCnNldCB1cCBpbiB0aGVzZSBwYXJ0aWNsZXMgb2YgdGhlIG1lbnRhbCBib2R5LCBzbyB0aGF0IHRoZSBtYW4gd2lsbCByZWFkaWx5IApyZXBlYXQgdGhhdCBwYXJ0aWN1bGFyIHRob3VnaHQuIAoKCjExMzUuwqDCoMKgwqAKVGhlcmUgaXMgdGhlIGVmZmVjdCBwcm9kdWNlZCB1cG9uIHRoZSBvdGhlciB2ZWhpY2xlcyBvZiB0aGUgbWFuLCB3aGljaCAKYXJlIGFib3ZlIGFuZCBiZWxvdyB0aGUgbWVudGFsIGJvZHkgaW4gZGVncmVlIG9mIGRlbnNpdHkuIFdlIGtub3cgdGhhdCBwaHlzaWNhbCAKZGlzdHVyYmFuY2VzIGluIG9uZSB0eXBlIG9mIG1hdHRlciBhcmUgcmVhZGlseSBjb21tdW5pY2F0ZWQgdG8gYW5vdGhlciB0eXBlLS0gCnRoYXQsIGZvciBleGFtcGxlLCBhbiBlYXJ0aHF1YWtlICh3aGljaCBpcyBhIG1vdmVtZW50IGluIHNvbGlkIG1hdHRlcikgd2lsbCAKcHJvZHVjZSBhIG1pZ2h0eSB3YXZlIGluIHRoZSBzZWEgKHdoaWNoIGlzIGxpcXVpZCBtYXR0ZXIpLCBhbmQgYWdhaW4gZnJvbSB0aGUgCm90aGVyIHNpZGUgdGhhdCB0aGUgZGlzdHVyYmFuY2Ugb2YgdGhlIGFpciAod2hpY2ggaXMgZ2FzZW91cyBtYXR0ZXIpIGJ5IGEgc3Rvcm0gCndpbGwgaW1tZWRpYXRlbHkgcHJvZHVjZSByaXBwbGVzLCBhbmQgc2hvcnRseSBncmVhdCB3YXZlcyBpbiB0aGUgb2NlYW4gYmVuZWF0aCAKaXQuIAoKCjExMzYuwqDCoMKgwqAKSW4ganVzdCB0aGUgc2FtZSB3YXkgYSBkaXN0dXJiYW5jZSBpbiBhIG1hbicgcyBhc3RyYWwgYm9keSAod2hpY2ggd2UgCmNvbW1vbmx5IGNhbGwgYW4gZW1vdGlvbikgd2lsbCBzZXQgdXAgdmlicmF0aW9ucyBpbiB0aGUgbWVudGFsIGJvZHksIGFuZCBjYXVzZSAKdGhvdWdodHMgd2hpY2ggY29ycmVzcG9uZCB0byB0aGUgZW1vdGlvbi4gQ29udmVyc2VseSwgdGhlIHdhdmVzIGluIHRoZSBtZW50YWwgCmJvZHkgYWZmZWN0IHRoZSBhc3RyYWwgYm9keSwgaWYgdGhleSBiZSBvZiBhIHR5cGUgd2hpY2ggY2FuIGFmZmVjdCBpdCwgd2hpY2ggCm1lYW5zIHRoYXQgY2VydGFpbiB0eXBlcyBvZiB0aG91Z2h0IHJlYWRpbHkgcHJvdm9rZSBlbW90aW9uLiBKdXN0IGFzIHRoZSB3YXZlIGluIAptZW50YWwgbWF0dGVyIGFjdHMgdXBvbiB0aGUgYXN0cmFsIHN1YnN0YW5jZSwgd2hpY2ggaXMgZGVuc2VyIHRoYW4gaXQgaXMsIHNvIAphbHNvIGRvZXMgaXQgaW5ldml0YWJseSBhY3QgdXBvbiB0aGUgbWF0dGVyIG9mIHRoZSBjYXN1YWwgYm9keSwgd2hpY2ggaXMgZmluZXIgCnRoYW4gaXQ7IGFuZCB0aHVzIHRoZSBoYWJpdHVhbCB0aG91Z2h0IG9mIHRoZSBtYW4gYnVpbGRzIHVwIHF1YWxpdGllcyBpbiB0aGUgZWdvIApoaW1zZWxmLiAKCgoxMTM3LsKgwqDCoMKgClNvIGZhciB3ZSBoYXZlIGJlZW4gZGVhbGluZyB3aXRoIHRoZSBlZmZlY3Qgb2YgdGhlIG1hbicgcyB0aG91Z2h0IHVwb24gCmhpbXNlbGY7IGFuZCB3ZSBzZWUgdGhhdCBpbiB0aGUgZmlyc3QgcGxhY2UgaXQgdGVuZHMgdG8gcmVwZWF0IGl0c2VsZiwgYW5kIHRoYXQgCmluIHRoZSBzZWNvbmQgaXQgYWN0cyBub3Qgb25seSB1cG9uIGhpcyBlbW90aW9ucywgYnV0IGFsc28gcGVybWFuZW50bHkgdXBvbiB0aGUgCm1hbiBoaW1zZWxmLiBOb3cgbGV0IHVzIHR1cm4gdG8gdGhlIGVmZmVjdHMgd2hpY2ggaXQgcHJvZHVjZXMgb3V0c2lkZSBvZiAKaGltc2VsZi0tIHRoYXQgaXMsIHVwb24gdGhlIHNlYSBvZiBtZW50YWwgbWF0dGVyIHdoaWNoIHN1cnJvdW5kcyB1cyBhbGwganVzdCBhcyAKZG9lcyB0aGUgYXRtb3NwaGVyZS4gCgoKMTEzOC7CoMKgwqDCoApFdmVyeSB0aG91Z2h0IHByb2R1Y2VzIGEgcmFkaWF0aW5nIHVuZHVsYXRpb24sIHdoaWNoIG1heSBiZSBlaXRoZXIgc2ltcGxlIApvciBjb21wbGV4IGFjY29yZGluZyB0byB0aGUgbmF0dXJlIG9mIHRoZSB0aG91Z2h0IHdoaWNoIGdpdmVzIGl0IGJpcnRoLiBUaGVzZSAKdmlicmF0aW9ucyBtYXkgdW5kZXIgY2VydGFpbiBjb25kaXRpb25zIGJlIGNvbmZpbmVkIHRvIHRoZSBtZW50YWwgd29ybGQsIGJ1dCAKbW9yZSBmcmVxdWVudGx5IHRoZXkgcHJvZHVjZSBhbiBlZmZlY3QgaW4gd29ybGRzIGFib3ZlIGFuZCBiZWxvdy4gSWYgdGhlIHRob3VnaHQgCmJlIHB1cmVseSBpbnRlbGxlY3R1YWwgYW5kIGltcGVyc29uYWwtLSBpZiwgZm9yIGV4YW1wbGUsIHRoZSB0aGlua2VyIGlzIApjb25zaWRlcmluZyBhIHBoaWxvc29waGljYWwgc3lzdGVtLCBvciBhdHRlbXB0aW5nIHRvIHNvbHZlIGEgcHJvYmxlbSBpbiBhbGdlYnJhIApvciBnZW9tZXRyeS0tIHRoZSB0aG91Z2h0LXdhdmUgd2lsbCBhZmZlY3QgbWVyZWx5IHRoZSBtZW50YWwgbWF0dGVyLiBJZiB0aGUgCnRob3VnaHQgYmUgb2YgYSBzcGlyaXR1YWwgbmF0dXJlLCBpZiBpdCBiZSB0aW5nZWQgd2l0aCBsb3ZlIG9yIGFzcGlyYXRpb24gb3IgCndpdGggZGVlcCB1bnNlbGZpc2ggZmVlbGluZywgaXQgd2lsbCByaXNlIHVwd2FyZHMgaW50byB0aGUgcmVhbG0gb2YgdGhlIGhpZ2hlciAKbWVudGFsLCBhbmQgbWF5IGV2ZW4gYm9ycm93IHNvbWUgb2YgdGhlIHNwbGVuZG91ciBhbmQgZ2xvcnkgb2YgdGhlIGludHVpdGlvbmFsIApsZXZlbC0tIGEgY29tYmluYXRpb24gd2hpY2ggcmVuZGVycyBpdCBleGNlZWRpbmdseSBwb3dlcmZ1bC4gSWYgb24gdGhlIG90aGVyIApoYW5kIHRoZSB0aG91Z2h0IGlzIHRpbmdlZCB3aXRoIHNvbWV0aGluZyBvZiBzZWxmIG9yIG9mIHBlcnNvbmFsIGRlc2lyZSwgaXRzIApvc2NpbGxhdGlvbnMgYXQgb25jZSBkcmF3IGRvd253YXJkcyBhbmQgZXhwZW5kIG1vc3Qgb2YgdGhlaXIgZm9yY2UgaW4gdGhlIGFzdHJhbCAKd29ybGQuIAoKCjExMzkuwqDCoMKgwqAKQWxsIHRoZXNlIHRob3VnaHQtd2F2ZXMgYWN0IHVwb24gdGhlaXIgcmVzcGVjdGl2ZSBsZXZlbHMganVzdCBhcyBkb2VzIGEgCndhdmUgb2YgbGlnaHQgb3Igc291bmQgaGVyZSBvbiB0aGUgcGh5c2ljYWwuIFRoZXkgcmFkaWF0ZSBvdXQgaW4gYWxsIGRpcmVjdGlvbnMsIApiZWNvbWluZyBsZXNzIHBvd2VyZnVsIGluIHByb3BvcnRpb24gdG8gdGhlaXIgZGlzdGFuY2UgZnJvbSB0aGVpciBzb3VyY2UuIFRoZSAKcmFkaWF0aW9uIG5vdCBvbmx5IGFmZmVjdHMgdGhlIHNlYSBvZiBtZW50YWwgbWF0dGVyIHdoaWNoIHN1cnJvdW5kcyB1cywgYnV0IGFsc28gCmFjdHMgdXBvbiBvdGhlciBtZW50YWwgYm9kaWVzIG1vdmluZyB3aXRoaW4gdGhhdCBzZWEuIFdlIGFyZSBhbGwgZmFtaWxpYXIgd2l0aCAKdGhlIGV4cGVyaW1lbnQgaW4gd2hpY2ggYSBub3RlIHN0cnVjayBvbiBhIHBpYW5vIG9yIGEgc3RyaW5nIHNvdW5kZWQgb24gYSB2aW9saW4gCndpbGwgc2V0IHRoZSBjb3JyZXNwb25kaW5nIG5vdGUgc291bmRpbmcgdXBvbiBhbm90aGVyIGluc3RydW1lbnQgb2YgdGhlIHNhbWUgCmtpbmQgd2hpY2ggaGFzIGJlZW4gdHVuZWQgZXhhY3RseSB0byB0aGUgc2FtZSBwaXRjaC4gSnVzdCBhcyB0aGUgdmlicmF0aW9uIHNldCAKdXAgaW4gb25lIGluc3RydW1lbnQgaXMgY29udmV5ZWQgdGhyb3VnaCB0aGUgYWlyIGFuZCBhY3RzIHVwb24gdGhlIG90aGVyIAppbnN0cnVtZW50LCBzbyBpcyB0aGUgdGhvdWdodC12aWJyYXRpb24gc2V0IHVwIGluIG9uZSBtZW50YWwgYm9keSBjb252ZXllZCBieSAKdGhlIHN1cnJvdW5kaW5nIG1lbnRhbCBtYXR0ZXIgYW5kIHJlcHJvZHVjZWQgaW4gYW5vdGhlciBtZW50YWwgYm9keS0tIHdoaWNoLCAKc3RhdGVkIGZyb20gYW5vdGhlciBwb2ludCBvZiB2aWV3LCBtZWFucyB0aGF0IHRob3VnaHQgaXMgaW5mZWN0aW91cy4gV2Ugd2lsbCAKcmV0dXJuIHRvIHRoaXMgY29uc2lkZXJhdGlvbiBsYXRlci4gCgoKMTE0MC7CoMKgwqDCoApFdmVyeSB0aG91Z2h0IHByb2R1Y2VzIG5vdCBvbmx5IGEgd2F2ZSBidXQgYSBmb3JtLS0gYSBkZWZpbml0ZSwgc2VwYXJhdGUgCm9iamVjdCB3aGljaCBpcyBlbmRvd2VkIHdpdGggZm9yY2UgYW5kIHZpdGFsaXR5IG9mIGEgY2VydGFpbiBraW5kLCBhbmQgaW4gbWFueSAKY2FzZXMgYmVoYXZlcyBub3QgYXQgYWxsIHVubGlrZSBhIHRlbXBvcmFyeSBsaXZpbmcgY3JlYXR1cmUuIFRoaXMgZm9ybSwgbGlrZSB0aGUgCndhdmUsIG1heSBiZSBpbiB0aGUgbWVudGFsIHJlYWxtIG9ubHk7IGJ1dCBtdWNoIG1vcmUgZnJlcXVlbnRseSBpdCBkZXNjZW5kcyB0byAKdGhlIGFzdHJhbCBsZXZlbCBhbmQgcHJvZHVjZXMgaXRzIHByaW5jaXBhbCBlZmZlY3QgaW4gdGhlIHdvcmxkIG9mIGVtb3Rpb25zLiBUaGUgCnN0dWR5IG9mIHRoZXNlIHRob3VnaHQtZm9ybXMgaXMgb2YgZXhjZWVkaW5nIGludGVyZXN0OyBhIGRldGFpbGVkIGFjY291bnQgb2YgCm1hbnkgb2YgdGhlbSwgd2l0aCBjb2xvdXJlZCBpbGx1c3RyYXRpb25zIG9mIHRoZWlyIGFwcGVhcmFuY2UsIHdpbGwgYmUgZm91bmQgaW4gCnRoZSBib29rIFRob3VnaHQtRm9ybXMuIEF0IHRoZSBtb21lbnQgd2UgYXJlIGNvbmNlcm5lZCBsZXNzIHdpdGggdGhlaXIgCmFwcGVhcmFuY2UgdGhhbiB3aXRoIHRoZWlyIGVmZmVjdHMgYW5kIHdpdGggdGhlIHdheSBpbiB3aGljaCB0aGV5IGNhbiBiZSAKdXRpbGlzZWQuIAoKCjExNDEuwqDCoMKgwqAKTGV0IHVzIGNvbnNpZGVyIHNlcGFyYXRlbHkgdGhlIGFjdGlvbiBvZiB0aGVzZSB0d28gbWFuaWZlc3RhdGlvbnMgb2YgCnRob3VnaHQtcG93ZXIuIFRoZSB3YXZlIG1heSBiZSBzaW1wbGUgb3IgaXQgbWF5IGJlIGNvbXBsZXgsIGFjY29yZGluZyB0byB0aGUgCmNoYXJhY3RlciBvZiB0aGUgdGhvdWdodDsgYnV0IGl0cyBzdHJlbmd0aCBpcyBwb3VyZWQgb3V0IGNoaWVmbHkgdXBvbiBzb21lIG9uZSAKb2YgdGhlIGZvdXIgbGV2ZWxzIG9mIG1lbnRhbCBtYXR0ZXItLSB0aGUgZm91ciBzdWJkaXZpc2lvbnMgd2hpY2ggY29uc3RpdHV0ZSB0aGUgCmxvd2VyIHBhcnQgb2YgdGhlIG1lbnRhbCB3b3JsZC4gTW9zdCBvZiB0aGUgdGhvdWdodHMgb2YgdGhlIG9yZGluYXJ5IG1hbiBjZW50cmUgCnJvdW5kIGhpbXNlbGYsIGhpcyBkZXNpcmVzIGFuZCBoaXMgZW1vdGlvbnMsIGFuZCB0aGV5IHRoZXJlZm9yZSBwcm9kdWNlIHdhdmVzIGluIAp0aGUgbG93ZXN0IHN1YmRpdmlzaW9uIG9mIHRoZSBtZW50YWwgbWF0dGVyOyBpbmRlZWQsIHRoZSBwYXJ0IG9mIHRoZSBtZW50YWwgYm9keSAKYnVpbHQgb2YgdGhhdCBraW5kIG9mIG1hdHRlciBpcyB0aGUgb25seSBvbmUgd2hpY2ggaXMgYXMgeWV0IGZ1bGx5IGV2b2x2ZWQgYW5kIAphY3RpdmUgaW4gdGhlIGdyZWF0IG1ham9yaXR5IG9mIG1hbmtpbmQuIAoKCjExNDIuwqDCoMKgwqAKSW4gdGhpcyByZXNwZWN0IHRoZSBjb25kaXRpb24gb2YgdGhlIG1lbnRhbCBib2R5IGlzIHF1aXRlIGRpZmZlcmVudCBmcm9tIAp0aGF0IG9mIHRoZSBhc3RyYWwgdmVoaWNsZS4gSW4gdGhlIG9yZGluYXJ5IGN1bHR1cmVkIG1hbiBvZiBvdXIgcmFjZSB0aGUgYXN0cmFsIApib2R5IGlzIGFzIGZ1bGx5IGRldmVsb3BlZCBhcyB0aGUgcGh5c2ljYWwsIGFuZCB0aGUgbWFuIGlzIHBlcmZlY3RseSBjYXBhYmxlIG9mIAp1c2luZyBpdCBhcyBhIHZlaGljbGUgb2YgY29uc2Npb3VzbmVzcy4gSGUgaXMgbm90IHlldCBtdWNoIGluIHRoZSBoYWJpdCBvZiBzbyAKdXNpbmcgaXQsIGFuZCBpcyBjb25zZXF1ZW50bHkgc2h5IGFib3V0IGl0IGFuZCBkaXN0cnVzdGZ1bCBvZiBoaXMgcG93ZXJzOyBidXQgCnRoZSBhc3RyYWwgcG93ZXJzIGFyZSB0aGVyZSwgYW5kIGl0IGlzIG9ubHkgYSBxdWVzdGlvbiBvZiBiZWNvbWluZyBhY2N1c3RvbWVkIHRvIAp0aGVpciB1c2UuIFdoZW4gaGUgZmluZHMgaGltc2VsZiBmdW5jdGlvbmluZyBpbiB0aGUgYXN0cmFsIHdvcmxkLCBlaXRoZXIgZHVyaW5nIApzbGVlcCBvciBhZnRlciBkZWF0aCwgaGUgaXMgZnVsbHkgY2FwYWJsZSBvZiBzaWdodCBhbmQgaGVhcmluZywgYW5kIGNhbiBtb3ZlIAphYm91dCB3aGl0aGVyc29ldmVyIGhlIHdpbGwuIAoKCjExNDMuwqDCoMKgwqAKSW4gdGhlIGhlYXZlbi13b3JsZCwgaG93ZXZlciwgaGUgZmluZHMgaGltc2VsZiB1bmRlciB2ZXJ5IGRpZmZlcmVudCAKY29uZGl0aW9ucywgZm9yIHRoZSBtZW50YWwgYm9keSBpcyBhcyB5ZXQgYnkgbm8gbWVhbnMgZnVsbHkgZGV2ZWxvcGVkLCB0aGF0IApiZWluZyB0aGUgcGFydCBvZiBpdHMgZXZvbHV0aW9uIHVwb24gd2hpY2ggdGhlIGh1bWFuIHJhY2UgaXMgYXQgdGhlIHByZXNlbnQgCm1vbWVudCBlbmdhZ2VkLiBUaGUgbWVudGFsIGJvZHkgY2FuIGJlIGVtcGxveWVkIGFzIGEgdmVoaWNsZSBvbmx5IGJ5IHRob3NlIHdobyAKaGF2ZSBiZWVuIHNwZWNpYWxseSB0cmFpbmVkIGluIGl0cyB1c2UgdW5kZXIgdGVhY2hlcnMgYmVsb25naW5nIHRvIHRoZSBHcmVhdCAKQnJvdGhlcmhvb2Qgb2YgSW5pdGlhdGVzOyBpbiB0aGUgYXZlcmFnZSBtYW4gaXRzIHBvd2VycyBhcmUgb25seSBwYXJ0aWFsbHkgCnVuZm9sZGVkLCBhbmQgaXQgY2Fubm90IGJlIGVtcGxveWVkIGFzIGEgc2VwYXJhdGUgdmVoaWNsZSBvZiBjb25zY2lvdXNuZXNzLiBJbiAKdGhlIG1ham9yaXR5IG9mIG1lbiB0aGUgaGlnaGVyIHBvcnRpb25zIG9mIHRoZSBtZW50YWwgYm9keSBhcmUgYXMgeWV0IHF1aXRlIApkb3JtYW50LCBldmVuIHdoZW4gdGhlIGxvd2VyIHBvcnRpb25zIGFyZSBpbiB2aWdvcm91cyBhY3Rpdml0eS4gVGhpcyBuZWNlc3NhcmlseSAKaW1wbGllcyB0aGF0IHdoaWxlIHRoZSB3aG9sZSBtZW50YWwgYXRtb3NwaGVyZSBpcyBzdXJnaW5nIHdpdGggdGhvdWdodC13YXZlcyAKYmVsb25naW5nIHRvIHRoZSBsb3dlc3Qgc3ViZGl2aXNpb24sIHRoZXJlIGlzIGFzIHlldCBjb21wYXJhdGl2ZWx5IGxpdHRsZSAKYWN0aXZpdHkgb24gdGhlIGhpZ2hlciBzdWItZGl2aXNpb25zLS0gYSBmYWN0IHdoaWNoIHdlIHNoYWxsIG5lZWQgdG8gaGF2ZSAKY2xlYXJseSBpbiBtaW5kIHdoZW4gd2UgY29tZSB0byBjb25zaWRlciBwcmVzZW50bHkgdGhlIHByYWN0aWNhbCBwb3NzaWJpbGl0eSBvZiAKdGhlIHVzZSBvZiB0aG91Z2h0LXBvd2VyLiBJdCBoYXMgYWxzbyBhbiBpbXBvcnRhbnQgYmVhcmluZyB1cG9uIHRoZSBkaXN0YW5jZSB0byAKd2hpY2ggYSB0aG91Z2h0LXdhdmUgbWF5IHBlbmV0cmF0ZS4gCgoKMTE0NC7CoMKgwqDCoApUbyBoZWxwIHVzIHRvIHVuZGVyc3RhbmQgdGhpcyB3ZSBtYXkgdGFrZSBhbiBhbmFsb2d5IGZyb20gdGhlIGFjdGlvbiBvZiAKdGhlIHZvaWNlIG9mIGEgcHVibGljIHNwZWFrZXIuIEhlIGNhbiBtYWtlIGhpbXNlbGYgaGVhcmQgdG8gYSBjZXJ0YWluIGRpc3RhbmNlLS0gCmEgZGlzdGFuY2Ugd2hpY2ggZGVwZW5kcyB1cG9uIHRoZSBwb3dlciBvZiBoaXMgdm9pY2UuIEluIHRoZSBjYXNlIG9mIGEgCnRob3VnaHQtZm9ybSB0aGF0IHBvd2VyIGNvcnJlc3BvbmRzIHRvIHRoZSBzdHJlbmd0aCBvZiB0aGUgdmlicmF0aW9ucy4gQnV0IHRoZSAKZGlzdGFuY2UgdG8gd2hpY2ggYSBzcGVha2VyIGNhbiBiZSB1bmRlcnN0b29kIGlzIHF1aXRlIGFub3RoZXIgbWF0dGVyLCAKYW5kIGRlcGVuZHMgb2Z0ZW4gbW9yZSB1cG9uIHRoZSBjbGVhcm5lc3Mgb2YgaGlzIGVudW5jaWF0aW9uIHRoYW4gdGhlIHN0cmVuZ3RoIApvZiBoaXMgdm9pY2UuIFRoYXQgY2xlYXJuZXNzIG9mIGVudW5jaWF0aW9uIGlzIHJlcHJlc2VudGVkIGluIHRoZSBjYXNlIG9mIGEgCnRob3VnaHQtZm9ybSBieSBkZWZpbml0ZW5lc3MsIGNsZWFybmVzcyBvZiBvdXRsaW5lLiAKCgoxMTQ1LsKgwqDCoMKgCk1hbnkgYSBtYW4gd2hvIGlzIG5vdCB0cmFpbmVkIGluIHRoZSBhcnQgb2YgcHVibGljIHNwZWFraW5nIG1pZ2h0IHNlbmQgCmZvcnRoIGEgc2hvdXQgd2hpY2ggd291bGQgcGVuZXRyYXRlIHRvIGEgY29uc2lkZXJhYmxlIGRpc3RhbmNlLCBidXQgd291bGQgYmUgCnF1aXRlIHVuaW50ZWxsaWdpYmxlLiBKdXN0IGluIHRoZSBzYW1lIHdheSBhIG1hbiB3aG8gZmVlbHMgc3Ryb25nbHksIGJ1dCBpcyBub3QgCnRyYWluZWQgaW4gdGhlIGFydCBvZiB0aGlua2luZywgbWF5IHNlbmQgZm9ydGggYSBwb3dlcmZ1bCB0aG91Z2h0LWZvcm0gd2hpY2ggCmNvbnZleXMgc3Ryb25nbHkgZW5vdWdoIHRoZSBmZWVsaW5nIHdoaWNoIGluc3BpcmVzIGl0LS0gYSBmZWVsaW5nIG9mIGpveSwgb2YgCnRlcnJvciBvciBvZiBzdXJwcmlzZTsgYW5kIHlldCBpdCBtYXkgYmUgc28gdmFndWVseSBvdXRsaW5lZCBhcyB0byBpbXBhcnQgbm8gCmlkZWEgb2YgdGhlIG5hdHVyZSBvciB0aGUgY2F1c2Ugb2YgdGhlIGVtb3Rpb24uIEV2aWRlbnRseSwgdGhlcmVmb3JlLCBkZWFybmVzcyAKb2YgdGhvdWdodCBpcyBhdCBsZWFzdCBhcyBuZWNlc3NhcnkgYXMgc3RyZW5ndGggb2YgdGhvdWdodC4gCgoKMTE0Ni7CoMKgwqDCoApBZ2FpbiwgdGhlIHNwZWFrZXInIHMgdm9pY2UgbWF5IGJlIGNsZWFyIGFuZCBzdHJvbmcsIGFuZCBoaXMgd29yZHMgbWF5IGJlIApwZXJmZWN0bHkgYXVkaWJsZSBhdCB0aGUgcGxhY2Ugd2hlcmUgYW4gYXVkaXRvciBpcyBzdGFuZGluZzsgeWV0IHRoZSB3b3JkcyAKY29udmV5IG5vIG1lYW5pbmcgdG8gdGhhdCBhdWRpdG9yIGlmIGhlIGlzIHNvIHByZW9jY3VwaWVkIHdpdGggc29tZSBvdGhlciBtYXR0ZXIgCnRoYXQgaGUgaXMgbm90IHBheWluZyBhdHRlbnRpb24uIFRoaXMgYWxzbyBoYXMgaXRzIGV4YWN0IGNvcnJlc3BvbmRlbmNlIGluIHRoZSAKd29ybGQgb2YgdGhvdWdodC4gT25lIG1heSBzZW5kIG91dCBhIGNsZWFyLCBzdHJvbmcgdGhvdWdodCwgYW5kIGV2ZW4gYWltIGl0IApkZWZpbml0ZWx5IGF0IGFub3RoZXIgcGVyc29uLCBidXQgaWYgdGhhdCBtYW4nIHMgbWluZCBpcyBlbnRpcmVseSBwcmVvY2N1cGllZCAKd2l0aCBoaXMgb3duIGFmZmFpcnMsIHRoZSB0aG91Z2h0LWZvcm0gY2FuIHByb2R1Y2Ugbm8gaW1wcmVzc2lvbiB1cG9uIGhpcyBtZW50YWwgCmJvZHkuIE9mdGVuIG1lbiBpbiBhIHdpbGQgcGFuaWMgZG8gbm90IGV2ZW4gaGVhciB0aGUgYWR2aWNlIG9yIG9yZGVycyBzaG91dGVkIHRvIAp0aGVtOyB1bmRlciB0aGUgc2FtZSBpbmZsdWVuY2UgdGhleSBhcmUgZXF1YWxseSBpbXBlcnZpb3VzIHRvIHRob3VnaHQtZm9ybXMuIAoKCjExNDcuwqDCoMKgwqAKVGhlIG1ham9yaXR5IG9mIG1hbmtpbmQgZG8gbm90IGtub3cgaG93IHRvIHRoaW5rIGF0IGFsbCwgYW5kIGV2ZW4gdGhvc2UgCndobyBhcmUgYSBsaXR0bGUgbW9yZSBhZHZhbmNlZCB0aGFuIHRoYXQsIHJhcmVseSB0aGluayBkZWZpbml0ZWx5IGFuZCBzdHJvbmdseSwgCmV4Y2VwdCBkdXJpbmcgdGhlIG1vbWVudHMgaW4gd2hpY2ggdGhleSBhcmUgYWN0dWFsbHkgZW5nYWdlZCBpbiBzb21lIHBpZWNlIG9mIApidXNpbmVzcyB3aGljaCBkZW1hbmRzIHRoZWlyIHdob2xlIGF0dGVudGlvbi4gQ29uc2VxdWVudGx5LCBsYXJnZSBudW1iZXJzIG9mIAptaW5kcyBhcmUgYWx3YXlzIGx5aW5nIGZhbGxvdyBhbGwgYWJvdXQgdXMsIHJlYWR5IHRvIHJlY2VpdmUgd2hhdGV2ZXIgc2VlZCB3ZSAKbWF5IHNvdyBpbiB0aGVtLiAKCgoxMTQ4LsKgwqDCoMKgClRIRSBUSE9VR0hULVdBVkUgCgoKMTE0OS7CoMKgwqDCoApUaGUgYWN0aW9uIG9mIHRoZSB0aG91Z2h0LXZpYnJhdGlvbiBpcyBlbWluZW50bHkgYWRhcHRhYmxlLiBJdCBtYXkgCmV4YWN0bHkgcmVwcm9kdWNlIGl0c2VsZiwgaWYgaXQgZmluZHMgYSBtZW50YWwgYm9keSB3aGljaCByZWFkaWx5IHJlc3BvbmRzIHRvIGl0IAppbiBldmVyeSBwYXJ0aWN1bGFyOyBidXQgd2hlbiB0aGlzIGlzIG5vdCB0aGUgY2FzZSwgaXQgbWF5IG5ldmVydGhlbGVzcyBwcm9kdWNlIAphIG1hcmtlZCBlZmZlY3QgYWxvbmcgbGluZXMgYnJvYWRseSBzaW1pbGFyIHRvIGl0cyBvd24uIFN1cHBvc2UsIGZvciBleGFtcGxlLCAKdGhhdCBhIENhdGhvbGljIGtuZWVscyBpbiBkZXZvdGlvbiBiZWZvcmUgYW4gaW1hZ2Ugb2YgdGhlIEJsZXNzZWQgVmlyZ2luLiBIZSAKc2VuZHMgcmlwcGxpbmcgb3V0IGZyb20gaGltIGluIGFsbCBkaXJlY3Rpb25zIHN0cm9uZywgZGV2b3Rpb25hbCB0aG91Z2h0LXdhdmVzOyAKaWYgdGhleSBzdHJpa2UgdXBvbiB0aGUgbWVudGFsIG9mIGFzdHJhbCBib2R5IG9mIGFub3RoZXIgQ2F0aG9saWMsIHRoZXkgYXJvdXNlIAppbiBoaW0gYSB0aG91Z2h0IGFuZCBmZWVsaW5nIGlkZW50aWNhbCB3aXRoIHRoZSBvcmlnaW5hbDsgYnV0IGlmIHRoZXkgc3RyaWtlIAp1cG9uIGEgQ2hyaXN0aWFuIG9mIHNvbWUgb3RoZXIgc2VjdCwgdG8gd2hvbSB0aGUgaW1hZ2Ugb2YgdGhlIEJsZXNzZWQgVmlyZ2luIGlzIAp1bmZhbWlsaWFyLCB0aGV5IHN0aWxsIGF3YWtlbiBpbiBoaW0gdGhlIHNlbnRpbWVudCBvZiBkZXZvdGlvbiwgYnV0IHRoYXQgd2lsbCAKZm9sbG93IGFsb25nIGl0cyBhY2N1c3RvbWVkIGNoYW5uZWwsIGFuZCBiZSBkaXJlY3RlZCB0b3dhcmRzIHRoZSBDaHJpc3QuIAoKCjExNTAuwqDCoMKgwqAKSWYgdGhleSB0b3VjaCBhIE11aGFtbWFkYW4gdGhleSBhcm91c2UgaW4gaGltIGRldm90aW9uIHRvIEFsbGFoLCB3aGlsZSBpbiAKdGhlIGNhc2Ugb2YgYSBIaW5kdSB0aGUgb2JqZWN0IG1heSBiZSBLcmlzaG5hLCBhbmQgaW4gdGhlIGNhc2Ugb2YgYSBQYXJzaSAKQWh1cmFtYXpkYS4gVGhleSBleGNpdGUgZGV2b3Rpb24gb2Ygc29tZSBzb3J0IHdoZXJldmVyIHRoZXJlIGlzIGEgcG9zc2liaWxpdHkgb2YgCnJlc3BvbnNlIHRvIHRoYXQgaWRlYS4gSWYgdGhpcyB0aG91Z2h0LXdhdmUgdG91Y2hlcyB0aGUgbWVudGFsIGJvZHkgb2YgYSAKbWF0ZXJpYWxpc3QsIHRvIHdob20gdGhlIHZlcnkgaWRlYSBvZiBkZXZvdGlvbiBpbiBhbnkgZm9ybSBpcyB1bmtub3duLCBldmVuIAp0aGVyZSBpdCBwcm9kdWNlcyBhbiBlbGV2YXRpbmcgZWZmZWN0OyBpdCBjYW5ub3QgYXQgb25jZSBjcmVhdGUgYSB0eXBlIG9mIAp1bmR1bGF0aW9uIHRvIHdoaWNoIHRoZSBtYW4gaXMgd2hvbGx5IHVuYWNjdXN0b21lZCwgYnV0IGl0cyB0ZW5kZW5jeSBpcyB0byBzdGlyIAphIGhpZ2hlciBwYXJ0IG9mIGhpcyBtZW50YWwgYm9keSBpbnRvIHNvbWUgc29ydCBvZiBhY3Rpdml0eSwgYW5kIHRoZSBlZmZlY3QsIAp0aG91Z2ggbGVzcyBwZXJtYW5lbnQgdGhhbiBpbiB0aGUgY2FzZSBvZiB0aGUgc3ltcGF0aGV0aWMgcmVjaXBpZW50LCBjYW5ub3QgZmFpbCAKdG8gYmUgZ29vZC4gCgoKMTE1MS7CoMKgwqDCoApUaGUgYWN0aW9uIG9mIGFuIGV2aWwgb3IgaW1wdXJlIHRob3VnaHQgaXMgZ292ZXJuZWQgYnkgdGhlIHNhbWUgbGF3cy4gQSAKbWFuIHdobyBpcyBzbyBmb29saXNoIGFzIHRvIGFsbG93IGhpbXNlbGYgdG8gdGhpbmsgb2YgYW5vdGhlciB3aXRoIGhhdHJlZCBvciAKZW52eSwgcmFkaWF0ZXMgYSB0aG91Z2h0LXdhdmUgdGVuZGluZyB0byBwcm92b2tlIHNpbWlsYXIgcGFzc2lvbnMgaW4gb3RoZXJzLCBhbmQgCnRob3VnaCBoaXMgZmVlbGluZyBvZiBoYXRyZWQgaXMgZm9yIHNvbWUgb25lIHF1aXRlIHVua25vd24gdG8gdGhlc2Ugb3RoZXJzLCBhbmQgCnNvIGl0IGlzIGltcG9zc2libGUgdGhhdCB0aGV5IHNob3VsZCBzaGFyZSBoaXMgZmVlbGluZywgeWV0IHRoZSB3YXZlIHdpbGwgc3RpciAKaW4gdGhlbSBhbiBlbW90aW9uIG9mIHRoZSBzYW1lIG5hdHVyZSB0b3dhcmRzIGEgdG90YWxseSBkaWZmZXJlbnQgcGVyc29uLiAKCgoxMTUyLsKgwqDCoMKgClRIRSBUSE9VR0hULUZPUk0gCgoKMTE1My7CoMKgwqDCoApUaGUgd29yayBvZiB0aGUgdGhvdWdodC1mb3JtIGlzIG1vcmUgbGltaXRlZCwgYnV0IG11Y2ggbW9yZSBwcmVjaXNlIHRoYW4gCnRoYXQgb2YgdGhlIHdhdmUuIEl0IGNhbm5vdCByZWFjaCBzbyBtYW55IHBlcnNvbnMtLSBpbmRlZWQsIGl0IGNhbm5vdCBhY3QgdXBvbiBhIApwZXJzb24gYXQgYWxsIHVubGVzcyBoZSBoYXMgaW4gaGltIHNvbWV0aGluZyB3aGljaCBpcyBoYXJtb25pb3VzIHdpdGggdGhlIAp2aWJyYW50IGVuZXJneSB3aGljaCBlbnNvdWxzIGl0LiBUaGUgcG93ZXJzIGFuZCBwb3NzaWJpbGl0aWVzIG9mIHRoZXNlIAp0aG91Z2h0LWZvcm1zIHdpbGwgcGVyaGFwcyBiZSBjbGVhcmVyIHRvIHVzIGlmIHdlIGF0dGVtcHQgdG8gY2xhc3NpZnkgdGhlbS4gTGV0IAp1cyBjb25zaWRlciBmaXJzdCB0aGUgdGhvdWdodCB3aGljaCBpcyBkZWZpbml0ZWx5IGRpcmVjdGVkIHRvd2FyZHMgYW5vdGhlciAKcGVyc29uLiAKCgoxMTU0LsKgwqDCoMKgCldoZW4gYSBtYW4gc2VuZHMgZm9ydGggZnJvbSBoaW1zZWxmIGEgdGhvdWdodCBvZiBhZmZlY3Rpb24gb3Igb2YgCmdyYXRpdHVkZSAob3IgdW5mb3J0dW5hdGVseSBpdCBtYXkgYmUgc29tZXRpbWVzIG9mIGVudnkgb3IgamVhbG91c3kpIHRvd2FyZHMgCnNvbWUgb25lIGVsc2Ugc3VjaCBhIHRob3VnaHQgcHJvZHVjZXMgcmFkaWF0aW5nIHdhdmVzIHByZWNpc2VseSBhcyB3b3VsZCBhbnkgCm90aGVyLCBhbmQgdGhlcmVmb3JlIHRlbmRzIHRvIHJlcHJvZHVjZSBpdHMgZ2VuZXJhbCBjaGFyYWN0ZXIgaW4gdGhlIG1pbmRzIG9mIAp0aG9zZSB3aXRoaW4gdGhlIHNwaGVyZSBvZiBpdHMgaW5mbHVlbmNlLiBCdXQgdGhlIHRob3VnaHQtZm9ybSB3aGljaCBpdCBjcmVhdGVzIAppcyBpbWJ1ZWQgd2l0aCBkZWZpbml0ZSBpbnRlbnRpb24sIGFuZCBhcyBzb29uIGFzIGl0IGJyZWFrcyBhd2F5IGZyb20gdGhlIG1lbnRhbCAKYW5kIGFzdHJhbCBib2RpZXMgb2YgdGhlIHRoaW5rZXIsIGl0IGdvZXMgc3RyYWlnaHQgdG93YXJkcyB0aGUgcGVyc29uIHRvIHdob20gaXQgCmlzIGRpcmVjdGVkIGFuZCBmYXN0ZW5zIGl0c2VsZiB1cG9uIGhpbS4gCgoKMTE1NS7CoMKgwqDCoApJZiBoZSBoYXBwZW5zIGF0IHRoZSBtb21lbnQgdG8gYmUgdGhpbmtpbmcgb2Ygbm90aGluZyBpbiBwYXJ0aWN1bGFyLCBhbmQgCmlzIGNvbnNlcXVlbnRseSBpbiBhIHBhc3NpdmUgY29uZGl0aW9uLCBpdCBhdCBvbmNlIHBlbmV0cmF0ZXMgaGlzIG1lbnRhbCBhbmQgCmFzdHJhbCBib2RpZXMgYW5kIGlzIGxvc3QgaW4gdGhlbSwganVzdCBhcyBhIGNvbWV0IG1pZ2h0IGZhbGwgaW50byB0aGUgc3VuLiBJdCAKdGVuZHMgdG8gYXJvdXNlIGluIHRoZW0gdmlicmF0aW9ucyBzaW1pbGFyIHRvIGl0cyBvd24tLSB3aGljaCBtZWFucyB0aGF0IHRoZSBtYW4gCndpbGwgYmVnaW4gdG8gdGhpbmsgdXBvbiB0aGF0IHBhcnRpY3VsYXIgc3ViamVjdCwgd2hhdGV2ZXIgaXQgbWF5IGJlLiBJZiBoZSBpcyAKaW4gYSBjb25kaXRpb24gb2YgbWVudGFsIGFjdGl2aXR5LCBhbmQgYW55IHBhcnQgb2YgdGhhdCBhY3Rpdml0eSBpcyBvZiB0aGUgc2FtZSAKbmF0dXJlIGFzIHRoZSBhcnJpdmluZyB0aG91Z2h0LWZvcm0sIGl0IGVudGVycyBoaXMgbWVudGFsIGJvZHkgdGhyb3VnaCB0aGF0IHBhcnQgCm9mIGl0IHdoaWNoIGlzIGV4cHJlc3NpbmcgdGhlIHN5bXBhdGhldGljIHRob3VnaHQsIGFuZCBhZGRzIGl0cyBzdHJlbmd0aCB0byB0aGF0IAp0aG91Z2h0LiBJZiB0aGUgcmVjaXBpZW50JyBzIG1pbmQgaXMgc28gcHJlb2NjdXBpZWQgdGhhdCB0aGUgdGhvdWdodC1mb3JtIGNhbm5vdCAKZmluZCBlbnRyYW5jZSwgaXQgd2lsbCBob3ZlciBhYm91dCBoaW0gdW50aWwgaGUgaXMgc3VmZmljaWVudGx5IGRpc2VuZ2FnZWQgdG8gCmdpdmUgaXQgYW4gb3Bwb3J0dW5pdHkgdG8gZ2FpbiBpdHMgb2JqZWN0LiAKCgoxMTU2LsKgwqDCoMKgCkluIHRoZSBjYXNlIG9mIGEgdGhvdWdodCB3aGljaCBpcyBub3QgZGlyZWN0ZWQgdG8gc29tZSBvdGhlciBwZXJzb24sIGJ1dCAKaXMgY29ubmVjdGVkIGNoaWVmbHkgd2l0aCB0aGUgdGhpbmtlciBoaW1zZWxmIChhcyBpbmRlZWQgYXJlIHRoZSBtYWpvcml0eSBvZiAKbWVuJyBzIHRob3VnaHRzKSB0aGUgd2F2ZSBzcHJlYWRzIGluIGFsbCBkaXJlY3Rpb25zIGFzIHVzdWFsLCBidXQgdGhlIAp0aG91Z2h0LWZvcm0gZmxvYXRzIGluIHRoZSBpbW1lZGlhdGUgbmVpZ2hib3VyaG9vZCBvZiBpdHMgY3JlYXRvciwgYW5kIGl0cyAKdGVuZGVuY3kgaXMgY29uc3RhbnRseSB0byByZWFjdCB1cG9uIGhpbS4gQXMgbG9uZyBhcyBoaXMgbWluZCBpcyBmdWxseSBvY2N1cGllZCAKd2l0aCBidXNpbmVzcywgb3Igd2l0aCBhIHRob3VnaHQgb2Ygc29tZSBvdGhlciB0eXBlLCB0aGUgZmxvYXRpbmcgZm9ybSB3YWl0cywgCmJpZGluZyBpdHMgdGltZTsgYnV0IHdoZW4gaGlzIHRyYWluIG9mIHRob3VnaHQgaXMgZXhoYXVzdGVkLCBvciBoaXMgbWluZCBmb3IgYSAKbW9tZW50IGxpZXMgZmFsbG93LCBpdCBoYXMgYW4gb3Bwb3J0dW5pdHkgdG8gcmVhY3QgdXBvbiBoaW0sIGFuZCBpdCBpbW1lZGlhdGVseSAKYmVnaW5zIHRvIHJlcGVhdCBpdHNlbGYtLSB0byBzdGlyIHVwIGluIGhpbSBhIHJlcGV0aXRpb24gb2YgdGhlIHRob3VnaHQgdG8gd2hpY2ggCmhlIGhhcyBwcmV2aW91c2x5IHlpZWxkZWQgaGltc2VsZi4gTWFueSBhIG1hbiBpcyBzdXJyb3VuZGVkIGJ5IGEgc2hlbGwgb2Ygc3VjaCAKdGhvdWdodC1mb3JtcywgYW5kIGhlIGZyZXF1ZW50bHkgZmVlbHMgdGhlaXIgcHJlc3N1cmUgdXBvbiBoaW0tLSBhIGNvbnN0YW50IApzdWdnZXN0aW9uIGZyb20gd2l0aG91dCBvZiBjZXJ0YWluIHRob3VnaHRzOyBhbmQgaWYgdGhlIHRob3VnaHQgYmUgZXZpbCBoZSBtYXkgCmJlbGlldmUgaGltc2VsZiB0byBiZSB0ZW1wdGVkIGJ5IHRoZSBkZXZpbCwgd2hlcmVhcyB0aGUgdHJ1dGggaXMgdGhhdCBoZSBpcyBoaXMgCm93biB0ZW1wdGVyIGFuZCB0aGF0IHRoZSBldmlsIHRob3VnaHRzIGFyZSBlbnRpcmVseSBoaXMgb3duIGNyZWF0aW9uLiAKCgoxMTU3LsKgwqDCoMKgClRoZXJlIGlzIHRoZSBjbGFzcyBvZiB0aG91Z2h0IHdoaWNoIGlzIG5laXRoZXIgY2VudHJlZCByb3VuZCB0aGUgdGhpbmtlciAKbm9yIHNwZWNpYWxseSBhaW1lZCBhdCBhbnkgcGVyc29uLiBUaGUgdGhvdWdodC1mb3JtIGdlbmVyYXRlZCBpbiB0aGlzIGNhc2UgZG9lcyAKbm90IGhhbmcgYWJvdXQgdGhlIHRoaW5rZXIsIG5vciBoYXMgaXQgYW55IHNwZWNpYWwgYXR0cmFjdGlvbiB0b3dhcmRzIGFub3RoZXIgCm1hbiwgc28gaXQgcmVtYWlucyBpZGx5IGZsb2F0aW5nIGF0IHRoZSBwbGFjZSB3aGVyZSBpdCB3YXMgY2FsbGVkIGludG8gCmV4aXN0ZW5jZS4gRWFjaCBtYW4sIGFzIGhlIG1vdmVzIHRocm91Z2ggbGlmZSwgaXMgdGh1cyBwcm9kdWNpbmcgdGhyZWUgY2xhc3NlcyAKb2YgdGhvdWdodC1mb3JtczogCgoKMTE1OC7CoMKgwqDCoApUaG9zZSB3aGljaCBzaG9vdCBzdHJhaWdodCBvdXQgYXdheSBmcm9tIGhpbSwgYWltaW5nIGF0IGEgZGVmaW5pdGUgCm9iamVjdGl2ZS4gCgoKMTE1OS7CoMKgwqDCoApUaG9zZSB3aGljaCBob3ZlciByb3VuZCBoaW0gYW5kIGZvbGxvdyBoaW0gd2hlcmV2ZXIgaGUgZ29lcy4gCgoKMTE2MC7CoMKgwqDCoApUaG9zZSB3aGljaCBoZSBsZWF2ZXMgYmVoaW5kIGhpbSBhcyBhIHNvcnQgb2YgdHJhaWwgd2hpY2ggbWFya3MgaGlzIApyb3V0ZS4gCgoKMTE2MS7CoMKgwqDCoApUaGUgd2hvbGUgYXRtb3NwaGVyZSBpcyBmaWxsZWQgd2l0aCB0aG91Z2h0cyBvZiB0aGlzIHRoaXJkIHR5cGUsIHZhZ3VlIAphbmQgaW5kZXRlcm1pbmF0ZTsgYXMgd2Ugd2FsayBhbG9uZyB3ZSBhcmUgcGlja2luZyBvdXIgd2F5IHRocm91Z2ggdmFzdCBtYXNzZXMgCm9mIHRoZW0sIGFuZCBpZiBvdXIgbWluZHMgYXJlIG5vdCBhbHJlYWR5IGRlZmluaXRlbHkgb2NjdXBpZWQsIHRoZXNlIHZhZ3VlLCAKd2FuZGVyaW5nIGZyYWdtZW50cyBvZiBvdGhlciBwZW9wbGUnIHMgdGhvdWdodHMgb2Z0ZW4gc2VyaW91c2x5IGFmZmVjdCB1cy4gVGhleSAKc3dlZXAgdGhyb3VnaCB0aGUgbWluZCB3aGljaCBpcyBseWluZyBpZGxlLCBhbmQgcHJvYmFibHkgbW9zdCBvZiB0aGVtIGRvIG5vdCAKYXJvdXNlIGluIGl0IGFueSBlc3BlY2lhbCBpbnRlcmVzdDsgYnV0IG5vdyBhbmQgdGhlbiBjb21lcyBvbmUgd2hpY2ggYXR0cmFjdHMgCmF0dGVudGlvbiwgYW5kIHRoZSBtaW5kIGZhc3RlbnMgdXBvbiBpdCwgZW50ZXJ0YWlucyBpdCBmb3IgYSBtb21lbnQgb3IgdHdvLCBhbmQgCmRpc21pc3NlcyBpdCBhIGxpdHRsZSBzdHJvbmdlciB0aGFuIGl0IHdhcyBvbiBhcnJpdmFsLiAKCgoxMTYyLsKgwqDCoMKgCk5hdHVyYWxseSB0aGlzIG1peHR1cmUgb2YgdGhvdWdodHMgZnJvbSBtYW55IHNvdXJjZXMgaGFzIG5vIGRlZmluaXRlIApjb2hlcmVuY2U7IHRob3VnaCBhbnkgb25lIG9mIHRoZW0gbWF5IHN0YXJ0IGEgbGluZSBvZiBhc3NvY2lhdGUgaWRlYXMsIGFuZCBzbyAKc2V0IHRoZSBtaW5kIHRoaW5raW5nIG9uIGl0cyBvd24gYWNjb3VudC4gSWYgYSBtYW4gcHVsbHMgaGltc2VsZiB1cCBzdWRkZW5seSBhcyAKaGUgd2Fsa3MgYWxvbmcgdGhlIHN0cmVldCwgYW5kIGFza3MgaGltc2VsZjogCgoKMTE2My7CoMKgwqDCoArvv71XaGF0IGFtIEkgdGhpbmtpbmcgYWJvdXQsIGFuZCB3aHk/IGhvdyBkaWQgSSByZWFjaCB0aGlzIHBhcnRpY3VsYXIgcG9pbnQgCmluIG15IHRyYWluIG9mIHRob3VnaHQ/77+9IGFuZCBpZiBoZSB0cmllcyB0byBmb2xsb3cgYmFjayB0aGUgbGluZSBvZiBoaXMgdGhvdWdodHMgCmZvciB0aGUgbGFzdCB0ZW4gbWludXRlcywgaGUgd2lsbCBwcm9iYWJseSBiZSBxdWl0ZSBzdXJwcmlzZWQgdG8gZGlzY292ZXIgaG93IAptYW55IGlkbGUgYW5kIHVzZWxlc3MgZmFuY2llcyBoYXZlIHBhc3NlZCB0aHJvdWdoIGhpcyBtaW5kIGluIHRoYXQgc3BhY2Ugb2YgCnRpbWUuIE5vdCBvbmUtZm91cnRoIG9mIHRoZW0gYXJlIGhpcyBvd24gdGhvdWdodHM7IHRoZXkgYXJlIHNpbXBseSBmcmFnbWVudHMgCndoaWNoIGhlIGhhcyBwaWNrZWQgdXAgYXMgaGUgcGFzc2VkIGFsb25nLiBJbiBtb3N0IGNhc2VzIHRoZXkgYXJlIHF1aXRlIHVzZWxlc3MsIAphbmQgdGhlaXIgZ2VuZXJhbCB0ZW5kZW5jeSBpcyBtb3JlIGxpa2VseSB0byBiZSBldmlsIHRoYW4gZ29vZC4gCgoKMTE2NC7CoMKgwqDCoApXSEFUIFdFIENBTiBETyBCWSBUSE9VR0hUIAoKCjExNjUuwqDCoMKgwqAKTm93IHRoYXQgd2UgdW5kZXJzdGFuZCB0byBzb21lIGV4dGVudCB0aGUgYWN0aW9uIG9mIHRob3VnaHQsIGxldCB1cyBzZWUgCndoYXQgdXNlIGl0IGlzIHBvc3NpYmxlIHRvIG1ha2Ugb2YgdGhpcyBrbm93bGVkZ2UsIGFuZCB3aGF0IHByYWN0aWNhbCAKY29uc2lkZXJhdGlvbnMgZW1lcmdlIGZyb20gaXQuIEtub3dpbmcgdGhlc2UgdGhpbmdzLCB3aGF0IGNhbiB3ZSBkbyB0byBmb3J3YXJkIApvdXIgb3duIGV2b2x1dGlvbiwgYW5kIHdoYXQgY2FuIHdlIGRvIHRvIGhlbHAgb3RoZXJzPyBPYnZpb3VzbHksIGEgc2NpZW50aWZpYyAKY29uc2lkZXJhdGlvbiBvZiB0aGUgd2F5IGluIHdoaWNoIHRob3VnaHQgd29ya3MsIGV4aGliaXRzIGl0IGFzIGEgbWF0dGVyIG9mIGZhciAKZ3JlYXRlciBpbXBvcnRhbmNlLCBub3Qgb25seSBmb3Igb3VyIG93biBldm9sdXRpb24gYnV0IGFsc28gZm9yIHRoYXQgb2Ygb3RoZXJzLCAKdGhhbiBpcyBvcmRpbmFyaWx5IHN1cHBvc2VkLiAKCgoxMTY2LsKgwqDCoMKgCldoZW4gd2UgbG9vayBhdCB0aGlzIHF1ZXN0aW9uIG9mIHRob3VnaHQgd2l0aCByZWdhcmQgdG8gaXRzIGVmZmVjdHMgdXBvbiAKb3RoZXJzLCB3ZSBmaW5kIG91cnNlbHZlcyBicm91Z2h0IGJhY2sgYWdhaW4gZnJvbSB0aGlzIGRpZmZlcmVudCBwb2ludCBvZiB2aWV3IAp0byBldmVyeSBvbmUgb2YgdGhlIGNvbnNpZGVyYXRpb25zIHdoaWNoIHdlIGhhdmUgYWxyZWFkeSBlbXBoYXNpc2VkIHdoZW4gCnNwZWFraW5nIG9mIHRoZSByZWFjdGlvbiBvZiB0aGlzIGZvcmNlIHVwb24gb3Vyc2VsdmVzLiBUaGlzIGlzIG5hdHVyYWwsIGZvciB3aGF0IAp0ZW5kcyB0byBvdXIgcHJvZ3Jlc3MgbXVzdCB0ZW5kIGFsc28gdG8gdGhhdCBvZiBvdGhlcnMuIFNvIHdlIG11c3QgdG91Y2ggdGhlc2UgCnN1YmplY3RzIGFnYWluLCB0aG91Z2ggYnV0IGluIHBhc3NpbmcuIAoKCjExNjcuwqDCoMKgwqAKU2luY2UgZXZlcnkgdGhvdWdodCBvciBlbW90aW9uIHByb2R1Y2VzIGEgcGVybWFuZW50IGVmZmVjdCBieSAKc3RyZW5ndGhlbmluZyBvciB3ZWFrZW5pbmcgYSB0ZW5kZW5jeSwgYW5kIHNpbmNlIGZ1cnRoZXJtb3JlIGV2ZXJ5IHRob3VnaHQtd2F2ZSAKYW5kIHRob3VnaHQtZm9ybSBtdXN0IG5vdCBvbmx5IHJlYWN0IHVwb24gdGhlIHRoaW5rZXIsIGJ1dCBhbHNvIGluZmx1ZW5jZSBtYW55IApvdGhlciBwZW9wbGUsIHRoZSBncmVhdGVzdCBjYXJlIG11c3QgYmUgZXhlcmNpc2VkIGFzIHRvIHRoZSB0aG91Z2h0IG9yIGVtb3Rpb24gCndoaWNoIGEgbWFuIHBlcm1pdHMgd2l0aGluIGhpbXNlbGYuIFRoZSBvcmRpbmFyeSBtYW4gcmFyZWx5IHRoaW5rcyBvZiAKYXR0ZW1wdGluZyB0byBjaGVjayBhbiBlbW90aW9uOyB3aGVuIGhlIGZlZWxzIGl0IHN1cmdpbmcgd2l0aGluIGhpbSBoZSB5aWVsZHMgCmhpbXNlbGYgdG8gaXQgYW5kIGNvbnNpZGVycyBpdCBtZXJlbHkgbmF0dXJhbC4gT25lIHdobyBzdHVkaWVzIHNjaWVudGlmaWNhbGx5IAp0aGUgYWN0aW9uIG9mIHRoZXNlIGZvcmNlcyByZWFsaXNlcyB0aGF0IGl0IGlzIGhpcyBpbnRlcmVzdCBhcyB3ZWxsIGFzIGhpcyBkdXR5IAp0byBjaGVjayBldmVyeSBzdWNoIHVwd2VsbGluZywgYW5kIGNvbnNpZGVyLCBiZWZvcmUgaGUgYWxsb3dzIGl0IHRvIHN3YXkgaGltLCAKd2hldGhlciBpdCBpcyBvciBpcyBub3QgcHJlanVkaWNpYWwgdG8gaGlzIGV2b2x1dGlvbiBhbmQgdG8gdGhhdCBvZiBoaXMgCm5laWdoYm91cnMuIAoKCjExNjguwqDCoMKgwqAKSW5zdGVhZCBvZiBhbGxvd2luZyBoaXMgZW1vdGlvbnMgdG8gcnVuIGF3YXkgd2l0aCBoaW0gaGUgbXVzdCBoYXZlIHRoZW0gCmFic29sdXRlbHkgdW5kZXIgY29udHJvbDsgYW5kIHNpbmNlIHRoZSBzdGFnZSBvZiBldm9sdXRpb24gYXQgd2hpY2ggd2UgaGF2ZSAKYXJyaXZlZCBpcyB0aGUgZGV2ZWxvcG1lbnQgb2YgdGhlIG1lbnRhbCBib2R5LCBoZSBtdXN0IHRha2UgdGhpcyBtYXR0ZXIgCnNlcmlvdXNseSBpbiBoYW5kIGFuZCBzZWUgd2hhdCBjYW4gYmUgZG9uZSB0byBhc3Npc3QgdGhhdCBkZXZlbG9wbWVudC4gSW5zdGVhZCAKb2YgYWxsb3dpbmcgdGhlIG1pbmQgdG8gaW5kdWxnZSBpbiBpdHMgdmFnYXJpZXMgaGUgc2hvdWxkIGVuZGVhdm91ciB0byBhc3NlcnQgCmNvbnRyb2wgb3ZlciBpdCwgcmVjb2duaXNpbmcgdGhhdCB0aGUgbWluZCBpcyBub3QgdGhlIG1hbiwgYnV0IGlzIGFuIGluc3RydW1lbnQgCndoaWNoIHRoZSBtYW4gbXVzdCBsZWFybiB0byB1c2UuIEl0IG11c3Qgbm90IGJlIGxlZnQgdG8gbGllIGZhbGxvdzsgaXQgbXVzdCBub3QgCmJlIGFsbG93ZWQgdG8gcmVtYWluIGlkbGUsIHNvIHRoYXQgYW55IHBhc3NpbmcgdGhvdWdodC1mb3JtIGNhbiBkcmlmdCBpbiB1cG9uIGl0IAphbmQgaW1wcmVzcyBpdC4gVGhlIGZpcnN0IHN0ZXAgdG93YXJkcyBjb250cm9sIG9mIHRoZSBtaW5kIGlzIHRvIGtlZXAgaXQgCnVzZWZ1bGx5IG9jY3VwaWVkLS0gdG8gaGF2ZSAoYXMgaGFzIGFscmVhZHkgYmVlbiBzYWlkKSBzb21lIGRlZmluaXRlLCBnb29kIGFuZCAKdXNlZnVsIHNldCBvZiB0aG91Z2h0cyBhcyBhIGJhY2tncm91bmQgdG8gdGhlIG1pbmQnIHMgb3BlcmF0aW9uLS0gc29tZXRoaW5nIHVwb24gCndoaWNoIGl0IHNoYWxsIGFsd2F5cyBmYWxsIGJhY2sgd2hlbiB0aGVyZSBpcyBubyBpbW1lZGlhdGUgbmVlZCBmb3IgaXRzIGFjdGl2aXR5IAppbiBjb25uZWN0aW9uIHdpdGggZHV0eSB0byBiZSBkb25lLiAKCgoxMTY5LsKgwqDCoMKgCkFub3RoZXIgbmVjZXNzYXJ5IHBvaW50IGluIGl0cyB0cmFpbmluZyBpcyB0aGF0IGl0IHNoYWxsIGJlIHRhdWdodCB0byBkbyAKdGhvcm91Z2hseSB0aGF0IHdoaWNoIGl0IGhhcyB0byBkby0tIGluIG90aGVyIHdvcmRzLCB0aGF0IHRoZSBwb3dlciBvZiAKY29uY2VudHJhdGlvbiBzaGFsbCBiZSBhY3F1aXJlZC4gVGhpcyBpcyBubyBsaWdodCB0YXNrLCBhcyBhbnkgdW5wcmFjdGlzZWQgCnBlcnNvbiB3aWxsIGZpbmQgd2hvIGVuZGVhdm91cnMgdG8ga2VlcCBoaXMgbWluZCBhYnNvbHV0ZWx5IHVwb24gb25lIHBvaW50IGV2ZW4gCmZvciBmaXZlIG1pbnV0ZXMuIEhlIHdpbGwgZmluZCB0aGF0IHRoZXJlIGlzIGFuIGFjdGl2ZSB0ZW5kZW5jeSB0byB3YW5kZXItLSB0aGF0IAphbGwga2luZHMgb2Ygb3RoZXIgdGhvdWdodHMgdGhydXN0IHRoZW1zZWx2ZXMgaW47IHRoZSBmaXJzdCBlZmZvcnQgdG8gZml4IHRoZSAKbWluZCBvbiBvbmUgc3ViamVjdCBmb3IgZml2ZSBtaW51dGVzIGlzIGxpa2VseSB0byByZXNvbHZlIGl0c2VsZiBpbnRvIHNwZW5kaW5nIApmaXZlIG1pbnV0ZXMgaW4gYnJpbmdpbmcgdGhlIG1pbmQgYmFjayBhZ2FpbiBhbmQgYWdhaW4gZnJvbSB2YXJpb3VzIHNpZGUtaXNzdWVzIAp3aGljaCBpdCBoYXMgZm9sbG93ZWQuIAoKCjExNzAuwqDCoMKgwqAKRm9ydHVuYXRlbHksIHRob3VnaCBjb25jZW50cmF0aW9uIGl0c2VsZiBpcyBubyBlYXN5IHRoaW5nLCB0aGVyZSBhcmUgCnBsZW50eSBvZiBvcHBvcnR1bml0aWVzIGZvciBhdHRlbXB0aW5nIGl0LCBhbmQgaXRzIGFjcXVpc2l0aW9uIGlzIG9mIGdyZWF0IHVzZSAKaW4gb3VyIGRhaWx5IGxpZmUuIFdlIHNob3VsZCBsZWFybiB0aGVuLCB3aGF0ZXZlciB3ZSBhcmUgZG9pbmcsIHRvIGZvY3VzIG91ciAKYXR0ZW50aW9uIHVwb24gaXQgYW5kIHRvIGRvIGl0IHdpdGggYWxsIG91ciBtaWdodCBhbmQgYXMgd2VsbCBhcyBpdCBjYW4gYmUgZG9uZTsgCmlmIHdlIHdyaXRlIGEgbGV0dGVyLCBsZXQgdGhhdCBsZXR0ZXIgYmUgd2VsbCBhbmQgYWNjdXJhdGVseSB3cml0dGVuLCBhbmQgbGV0IG5vIApjYXJlbGVzc25lc3MgaW4gZGV0YWlsIGRlbGF5IGl0IG9yIG1hciBpdHMgZWZmZWN0OyBpZiB3ZSBhcmUgcmVhZGluZyBhIGJvb2ssIApldmVuIHRob3VnaCBpdCBiZSBvbmx5IGEgbm92ZWwsIGxldCB1cyByZWFkIGl0IHdpdGggYXR0ZW50aW9uLCB0cnlpbmcgdG8gZ3Jhc3AgCnRoZSBhdXRob3InIHMgbWVhbmluZywgYW5kIHRvIGdhaW4gZnJvbSBpdCBhbGwgdGhhdCB0aGVyZSBpcyB0byBiZSBnYWluZWQuIFRoZSAKZW5kZWF2b3VyIHRvIGJlIGNvbnN0YW50bHkgbGVhcm5pbmcgc29tZXRoaW5nLCB0byBsZXQgbm8gZGF5IHBhc3Mgd2l0aG91dCBzb21lIApkZWZpbml0ZSBleGVyY2lzZSBvZiB0aGUgbWluZCwgaXMgYSBtb3N0IHNhbHV0YXJ5IG9uZTsgZm9yIGl0IGlzIG9ubHkgYnkgCmV4ZXJjaXNlIHRoYXQgc3RyZW5ndGggY29tZXMsIGFuZCBkaXN1c2UgbWVhbnMgYWx3YXlzIHdlYWtuZXNzIGFuZCBldmVudHVhbCAKYXRyb3BoeS4gCgoKMTE3MS7CoMKgwqDCoApJdCBpcyBhbHNvIG9mIGdyZWF0IGltcG9ydGFuY2UgdGhhdCB3ZSBzaG91bGQgbGVhcm4gdG8gaHVzYmFuZCBvdXIgCmVuZXJneS4gRWFjaCBtYW4gcG9zc2Vzc2VzIG9ubHkgYSBjZXJ0YWluIGFtb3VudCBvZiBlbmVyZ3ksIGFuZCBoZSBpcyAKcmVzcG9uc2libGUgZm9yIGl0cyB1dGlsaXNhdGlvbiB0byB0aGUgYmVzdCBhZHZhbnRhZ2UuIFRoZSBvcmRpbmFyeSBtYW4gd2FzdGVzIApoaXMgZm9yY2UgaW4gdGhlIG1vc3QgZm9vbGlzaCBtYW5uZXIuIEhlIGlzIGFsd2F5cyBmcml0dGVyaW5nIGl0IGF3YXkgCndpdGhvdXQgYSBzaGFkb3cgb2YgbmVjZXNzaXR5IG9yIGp1c3RpZmljYXRpb24uIFNvbWV0aW1lcyBoZSBpcyBmdWxsIG9mIGVhZ2VyIApkZXNpcmUgZm9yIHNvbWV0aGluZyB3aGljaCBpcyBxdWl0ZSB1bm5lY2Vzc2FyeTsgb3IgaGUgaXMgZnVsbCBvZiB3b3JyeSBhYm91dCAKc29tZSBmYW5jaWVkIGV2aWwgd2hpY2ggaGUgaW1hZ2luZXMgbWF5IGJlIGltcGVuZGluZy4gQXQgYW5vdGhlciB0aW1lIGhlIGlzIApkZWVwbHkgZGVwcmVzc2VkLCBidXQgZG9lcyBub3Qga25vdyBleGFjdGx5IHdoeTsgYnV0IHdoYXRldmVyIGhlIGFsbGVnZXMgYXMgdGhlIApvc3RlbnNpYmxlIGNhdXNlLCB0aGUgZmFjdCByZW1haW5zIHRoYXQgaGUgaXMgbW9yZSBvciBsZXNzIGluIGEgY29uZGl0aW9uIG9mIApleGNpdGVtZW50IGFuZCBhZ2l0YXRpb24sIGJlY2F1c2UgaGUgd2lsbCBub3QgdGFrZSB0aGluZ3MgcGhpbG9zb3BoaWNhbGx5LCBhbmQgCmxheSB0byBoZWFydCB0aGUgd2lzZSBvbGQgbWF4aW0gdGhhdCwgYXMgcmVnYXJkcyB3aGF0IGNvbWVzIHVwb24gdXMgZnJvbSB0aGUgCm91dGVyIHdvcmxkLCDvv71ub3RoaW5nIG1hdHRlcnMgbXVjaCwgYW5kIG1vc3QgdGhpbmdzIGRvbicgdCBtYXR0ZXIgYXQgYWxsLu+/vSBUaGUgCnRob3VnaHRzIGFuZCBlbW90aW9ucyBvZiBhbiBhdmVyYWdlIGNyb3dkIGFyZSBsaWtlIHRoZSBpbmhhYml0YW50cyBvZiBhIApkaXN0dXJiZWQgYW50LWhpbGwsIGFsbCBydXNoaW5nIHdpbGRseSBhbmQgYWltbGVzc2x5IGFib3V0IGluIGRpZmZlcmVudCAKZGlyZWN0aW9ucywgYnV0IGNhdXNpbmcgYSB2YXN0IGFtb3VudCBvZiBkaXNvcmRlciBhbmQgdHVtdWx0OyB3aGljaCBpcyBwcmVjaXNlbHkgCndoeSB0aGUgb2NjdWx0aXN0IGludmFyaWFibHkgYXZvaWRzIGEgY3Jvd2QsIHVubGVzcyBkdXR5IHRha2VzIGhpbSBpbnRvIGl0LiBJdCAKaXMgZXNwZWNpYWxseSBuZWNlc3NhcnkgZm9yIHRoZSBzdHVkZW50IG9mIG9jY3VsdGlzbSB0byBsZWFybiB0byBhdm9pZCB0aGlzIApkaXNzaXBhdGlvbiBvZiBoaXMgZW5lcmdpZXMuIAoKCjExNzIuwqDCoMKgwqAKT25lIHdheSBpbiB3aGljaCB0aGUgYXZlcmFnZSBtYW4gd2FzdGVzIGEgZ3JlYXQgZGVhbCBvZiBmb3JjZSBpcyBieSAKdW5uZWNlc3NhcnkgYXJndW1lbnQuIEl0IGFwcGVhcnMgdG8gYmUgaW1wb3NzaWJsZSBmb3IgaGltIHRvIGhvbGQgYW55IG9waW5pb24sIAp3aGV0aGVyIGl0IGJlIHJlbGlnaW91cyBvciBwb2xpdGljYWwsIG9yIHJlbGF0aW5nIHRvIHNvbWUgbWF0dGVyIGluIG9yZGluYXJ5IApsaWZlLCB3aXRob3V0IGJlY29taW5nIGEgcHJleSB0byBhbiBvdmVybWFzdGVyaW5nIGRlc2lyZSB0byBmb3JjZSB0aGlzIG9waW5pb24gCnVwb24gZXZlcnkgb25lIGVsc2UsIEhlIHNlZW1zIHF1aXRlIGluY2FwYWJsZSBvZiBncmFzcGluZyB0aGUgcnVkaW1lbnRhcnkgZmFjdCAKdGhhdCB3aGF0IGFub3RoZXIgbWFuIGNob29zZXMgdG8gYmVsaWV2ZSBpcyBubyBidXNpbmVzcyBvZiBoaXMsIGFuZCB0aGF0IGhlIGlzIApub3QgY29tbWlzc2lvbmVkIGJ5IHRoZSBhdXRob3JpdGllcyBpbiBjaGFyZ2Ugb2YgdGhlIHdvcmxkIHRvIGdvIHJvdW5kIGFuZCAKc2VjdXJlIHVuaWZvcm1pdHkgaW4gdGhvdWdodCBhbmQgcHJhY3RpY2UuIAoKCjExNzMuwqDCoMKgwqAKVGhlIHdpc2UgbWFuIHJlYWxpc2VzIHRoYXQgdHJ1dGggaXMgYSBtYW55LXNpZGVkIHRoaW5nLCBub3QgY29tbW9ubHkgaGVsZCAKaW4gaXRzIGVudGlyZWx5IGJ5IGFueSBvbmUgbWFuLCBvciBieSBhbnkgb25lIHNldCBvZiBtZW47IGhlIGtub3dzIHRoYXQgdGhlcmUgaXMgCnJvb20gZm9yIGRpdmVyc2l0eSBvZiBvcGluaW9uIHVwb24gYWxtb3N0IGFueSBjb25jZWl2YWJsZSBzdWJqZWN0LCBhbmQgdGhhdCAKdGhlcmVmb3JlIGEgbWFuIHdob3NlIHBvaW50IG9mIHZpZXcgaXMgb3Bwb3NpdGUgdG8gaGlzIG93biBtYXkgbmV2ZXJ0aGVsZXNzIGhhdmUgCnNvbWV0aGluZyBvZiByZWFzb24gYW5kIHRydXRoIGluIGhpcyBiZWxpZWYuIEhlIGtub3dzIHRoYXQgbW9zdCBvZiB0aGUgc3ViamVjdHMgCm92ZXIgd2hpY2ggbWVuIGFyZ3VlIGFyZSBub3QgaW4gdGhlIGxlYXN0IHdvcnRoIHRoZSB0cm91YmxlIG9mIGRpc2N1c3Npb24sIGFuZCAKdGhhdCB0aG9zZSB3aG8gc3BlYWsgbW9zdCBsb3VkbHkgYW5kIG1vc3QgY29uZmlkZW50bHkgYWJvdXQgdGhlbSBhcmUgdXN1YWxseSAKdGhvc2Ugd2hvIGtub3cgbGVhc3QuIFRoZSBzdHVkZW50IG9mIG9jY3VsdGlzbSB3aWxsIHRoZXJlZm9yZSBkZWNsaW5lIHRvIHdhc3RlIApoaXMgdGltZSBpbiBhcmd1bWVudDsgaWYgaGUgaXMgYXNrZWQgZm9yIGluZm9ybWF0aW9uIGhlIGlzIHdpbGxpbmcgdG8gZ2l2ZSBpdCwgCmJ1dCBub3QgdG8gd2FzdGUgaGlzIHRpbWUgYW5kIHN0cmVuZ3RoIGluIHVucHJvZml0YWJsZSB3cmFuZ2xpbmcuIAoKCjExNzQuwqDCoMKgwqAKQW5vdGhlciBwYWluZnVsbHkgY29tbW9uIG1ldGhvZCBvZiB3YXN0aW5nIHN0cmVuZ3RoIGlzIHRoYXQgd29ycnkgb2YgCndoaWNoIEkgaGF2ZSBhbHJlYWR5IHdyaXR0ZW4gYXMgc28gc2VyaW91cyBhbiBvYnN0YWNsZSBpbiB0aGUgcGF0aCBvZiBwZWFjZS4gCk1hbnkgbWVuIGFyZSBjb25zdGFudGx5IGZvcmVjYXN0aW5nIGV2aWwgZm9yIHRoZW1zZWx2ZXMgYW5kIGZvciB0aG9zZSB3aG9tIHRoZXkgCmxvdmUtLSB0cm91YmxpbmcgdGhlbXNlbHZlcyB3aXRoIHRoZSBmZWFyIG9mIGRlYXRoIGFuZCBvZiB3aGF0IGNvbWVzIGFmdGVyIGl0LCAKd2l0aCB0aGUgZmVhciBvZiBmaW5hbmNpYWwgcnVpbiBvciBsb3NzIG9mIHNvY2lhbCBwb3NpdGlvbi4gQSB2YXN0IGFtb3VudCBvZiAKc3RyZW5ndGggaXMgZnJpdHRlcmVkIGF3YXkgYWxvbmcgdGhlc2UgdW5wcm9maXRhYmxlIGFuZCB1bnBsZWFzYW50IGxpbmVzOyBidXQgCmFsbCBzdWNoIGZvb2xpc2huZXNzIGlzIHN3ZXB0IGFzaWRlIGZvciB0aGUgbWFuIHdobyByZWFsaXNlcyB0aGF0IHRoZSB3b3JsZCBpcyAKZ292ZXJuZWQgYnkgYSBsYXcgb2YgYWJzb2x1dGUganVzdGljZSwgdGhhdCBwcm9ncmVzcyB0b3dhcmRzIHRoZSBoaWdoZXN0IGlzIHRoZSAKRGl2aW5lIFdpbGwgZm9yIGhpbSwgdGhhdCBoZSBjYW5ub3QgZXNjYXBlIGZyb20gdGhhdCBwcm9ncmVzcywgdGhhdCB3aGF0ZXZlciAKY29tZXMgaW4gaGlzIHdheSBhbmQgd2hhdGV2ZXIgaGFwcGVucyB0byBoaW0gaXMgbWVhbnQgdG8gaGVscCBoaW0gYWxvbmcgdGhhdCAKbGluZSwgYW5kIHRoYXQgaGUgaGltc2VsZiBpcyB0aGUgb25seSBwZXJzb24gd2hvIGNhbiBkZWxheSB0aGF0IGFkdmFuY2UuIEhlIG5vIApsb25nZXIgdHJvdWJsZXMgYW5kIGZlYXJzIGFib3V0IGhpbXNlbGYgYW5kIGFib3V0IG90aGVyczsgaGUgc2ltcGx5IGdvZXMgb24gYW5kIApkb2VzIHRoZSBkdXR5IHRoYXQgY29tZXMgbmVhcmVzdCBpbiB0aGUgYmVzdCB3YXkgdGhhdCBoZSBjYW4sIGNvbmZpZGVudCB0aGF0IGlmIApoZSBkb2VzIHRoYXQsIGFsbCB3aWxsIGJlIHdlbGwgZm9yIGhpbS4gSGUga25vd3MgdGhhdCB3b3JyeSBuZXZlciB5ZXQgaGVscGVkIGFueSAKb25lLCBub3IgaGFzIGl0IGV2ZXIgYmVlbiBvZiB0aGUgc2xpZ2h0ZXN0IHVzZSwgYnV0IHRoYXQgaXQgaGFzIGJlZW4gcmVzcG9uc2libGUgCmZvciBhbiBpbW1lbnNlIGFtb3VudCBvZiBldmlsIGFuZCB3YXN0ZSBvZiBmb3JjZTsgYW5kIHRoZSB3aXNlIG1hbiBkZWNsaW5lcyB0byAKc3BlbmQgaGlzIHN0cmVuZ3RoIGluIGlsbC1kaXJlY3RlZCBlbW90aW9uLiAKCgoxMTc1LsKgwqDCoMKgClNvIHdlIHNlZSB0aGF0IGlmIGl0IGlzIG5lY2Vzc2FyeSBmb3IgaGlzIG93biBldm9sdXRpb24gdGhhdCBtYW4gc2hvdWxkIAprZWVwIG1pbmQgYW5kIGVtb3Rpb24gdW5kZXIgY29udHJvbCwgYW5kIG5vdCBmb29saXNobHkgd2FzdGUgaGlzIGZvcmNlLCBpdCBpcyAKc3RpbGwgbW9yZSBuZWNlc3NhcnkgZnJvbSBhbm90aGVyIHBvaW50IG9mIHZpZXcsIGJlY2F1c2UgaXQgaXMgb25seSBieSBzdWNoIGNhcmUgCnRoYXQgaGUgY2FuIGVuYWJsZSBoaW1zZWxmIHRvIGJlIG9mIHVzZSB0byBoaXMgZmVsbG93IG1lbiwgdGhhdCBoZSBjYW4gYXZvaWQgCmRvaW5nIGhhcm0gdG8gdGhlbSBhbmQgY2FuIGxlYXJuIGhvdyB0byBkbyBnb29kLiBJZiwgZm9yIGV4YW1wbGUsIGhlIGxldHMgCmhpbXNlbGYgZmVlbCBhbmdyeSwgaGUgbmF0dXJhbGx5IHByb2R1Y2VzIGEgZ3JhdmUgZWZmZWN0IHVwb24gaGltc2VsZiwgYmVjYXVzZSAKaGUgc2V0cyB1cCBhbiBldmlsIGhhYml0IGFuZCBtYWtlcyBpdCBtb3JlIGRpZmZpY3VsdCB0byByZXNpc3QgdGhlIGV2aWwgaW1wdWxzZSAKbmV4dCB0aW1lIGl0IGFzc2FpbHMgaGltLiBCdXQgaGUgYWxzbyBhY3RzIHNlcmlvdXNseSB1cG9uIG90aGVycyBhcm91bmQgaGltLCBmb3IgCmluZXZpdGFibHkgdGhlIHZpYnJhdGlvbnMgd2hpY2ggcmFkaWF0ZSBmcm9tIGhpbSBtdXN0IGFmZmVjdCB0aGVtIGFsc28uIAoKCjExNzYuwqDCoMKgwqAKSWYgaGUgaXMgbWFraW5nIGFuIGVmZm9ydCB0byBjb250cm9sIGhpcyBpcnJpdGFiaWxpdHksIHNvIHBlcmhhcHMgYXJlIAp0aGV5LCBhbmQgaGlzIGFjdGlvbiB3aWxsIGhlbHAgb3IgaGluZGVyIHRoZW0sIGV2ZW4gdGhvdWdoIGhlIGlzIG5vdCBpbiB0aGUgCmxlYXN0IHRoaW5raW5nIG9mIHRoZW0uIEV2ZXJ5IHRpbWUgdGhhdCBoZSBhbGxvd3MgaGltc2VsZiB0byBzZW5kIG91dCBhIHdhdmUgb2YgCmFuZ2VyLCB0aGF0IHRlbmRzIHRvIGFyb3VzZSBhIHNpbWlsYXIgdmlicmF0aW9uIGluIHRoZSBtaW5kIG9yIGFzdHJhbCBib2R5IG9mIAphbm90aGVyLS0gdG8gYXJvdXNlIGl0IGlmIGl0IGhhcyBub3QgcHJldmlvdXNseSBleGlzdGVkIGFuZCB0byBpbnRlbnNpZnkgaXQgaWYgCml0IGlzIGFscmVhZHkgcHJlc2VudDsgYW5kIHRodXMgaGUgbWFrZXMgaGlzIGJyb3RoZXInIHMgd29yayBvZiBzZWxmLWRldmVsb3BtZW50IApoYXJkZXIgZm9yIGhpbSwgYW5kIHBsYWNlcyBhIGhlYXZpZXIgYnVyZGVuIHVwb24gaGlzIHNob3VsZGVycy4gT24gdGhlIG90aGVyIApoYW5kLCBpZiBoZSBjb250cm9scyBhbmQgcmVwcmVzc2VzIHRoZSB3YXZlIG9mIGFuZ2VyLCBoZSByYWRpYXRlcyBpbnN0ZWFkLCAKY2FsbWluZyBhbmQgc29vdGhpbmcgaW5mbHVlbmNlcyB3aGljaCBhcmUgZGlzdGluY3RseSBoZWxwZnVsIHRvIGFsbCB0aG9zZSBuZWFyIApoaW0gd2hvIGFyZSBlbmdhZ2VkIGluIHRoZSBzYW1lIHN0cnVnZ2xlLiAKCgoxMTc3LsKgwqDCoMKgCkZldyBwZW9wbGUgcmVhbGlzZSB0aGVpciByZXNwb25zaWJpbGl0aWVzIGluIHRoaXMgbWF0dGVyLiBJdCBpcyBiYWQgCmVub3VnaCBzdXJlbHkgdGhhdCBhbnkgZXZpbCB0aG91Z2h0IG9mIG91cnMgc2hvdWxkIGNvbW11bmljYXRlIGl0c2VsZiB0byB0aGUgCm1pbmRzIG9mIGFueSBwZXJzb25zIHdpdGhpbiByYW5nZSBvZiB1cyB3aG8gbWF5IGhhcHBlbiB0byBiZSBpZGxlIGFuZCAKdW5vY2N1cGllZC4gQnV0IHRoZSB0cnV0aCBpcyBtdWNoIHdvcnNlIHRoYW4gdGhhdC4gSW4gZXZlcnkgbWFuIHRoZXJlIGxpZSBnZXJtcyAKb3IgcG9zc2liaWxpdGllcyBvZiBldmlsIHdoaWNoIGhhdmUgY29tZSBvdmVyIGZyb20gYSBwcmV2aW91cyBsaWZlLCBidXQgaGF2ZSBub3QgCmFzIHlldCBiZWVuIGNhbGxlZCBpbnRvIGFjdGl2aXR5IGluIHRoaXMgaW5jYXJuYXRpb24uIElmIHdlIHNlbmQgb3V0IGFuIGV2aWwgb3IgCmltcHVyZSB0aG91Z2h0LCBpdCBtYXkgZWFzaWx5IGhhcHBlbiB0aGF0IGl0IGFyb3VzZXMgaW50byBhY3Rpdml0eSBvbmUgb2YgdGhlc2UgCmdlcm1zLCBhbmQgc28gdGhyb3VnaCBvdXIgbGFjayBvZiBzZWxmLWNvbnRyb2wgdGhlcmUgY29tZXMgaW50byB0aGF0IG1hbicgcyBsaWZlIAphbiBldmlsIG9mIHdoaWNoIG90aGVyd2lzZSBoZSBtaWdodCBoYXZlIGdvdCByaWQuIFdlIHJldml2ZSBpbiBoaW0gdGhlIGRvcm1hbnQgCnRlbmRlbmN5IHdoaWNoIHdhcyBpbiB0aGUgYWN0IG9mIGR5aW5nIG91dCwgYW5kIHRoZXJlYnkgd2UgZGVsYXkgaGltIGluIGhpcyAKdXB3YXJkIHByb2dyZXNzLiAKCgoxMTc4LsKgwqDCoMKgClNvIGxvbmcgYXMgdGhhdCBnZXJtIGlzIGRvcm1hbnQgdGhlIHF1YWxpdHkgaXMgZHlpbmcgb3V0LCBidXQgd2hlbiBpdCBpcyAKYXJvdXNlZCBhZ2FpbiBpdCBtYXkgaW5jcmVhc2UgdG8gYW55IGV4dGVudC4gSXQgaXMgbGlrZSBicmVha2luZyBhIGhvbGUgdGhyb3VnaCAKYSBkeWtlIGFuZCBsZXR0aW5nIG91dCB0aGUgd2F0ZXIuIEluIGZhY3QsIGEgbWFuIHdobyBzZW5kcyBvdXQgYW4gZXZpbCB0aG91Z2h0IApjYW5ub3QgdGVsbCBmb3Igd2hhdCBhbW91bnQgb2YgZXZpbCBoZSBtYXkgbWFrZSBoaW1zZWxmIHJlc3BvbnNpYmxlOyBmb3IgYSBtYW4gCndobyBiZWNvbWVzIHdpY2tlZCwgaW4gY29uc2VxdWVuY2Ugb2YgdGhhdCB0aG91Z2h0LCBtYXkgaW4gdHVybiBhZmZlY3Qgb3RoZXIgCnBlb3BsZSwgYW5kIHRob3NlIHlldCBvdGhlcnMgaW4gdHVybjsgc28gaXQgaXMgYWN0dWFsbHkgdHJ1ZSB0aGF0IGJlY2F1c2Ugb2Ygb25lIApldmlsIHRob3VnaHQgZ2VuZXJhdGlvbnMgeWV0IHRvIGNvbWUgbWF5IHN1ZmZlci4gSGFwcGlseSBhbGwgdGhpcyBpcyB0cnVlIG9mIApnb29kIHRob3VnaHRzIGFzIHdlbGwgYXMgb2YgZXZpbCwgYW5kIHRoZSBtYW4gd2hvIHVuZGVyc3RhbmRzIHRoaXMgZmFjdCB1c2VzIAp3aXNlbHkgdGhlIHBvd2VyIHdoaWNoIGl0IGdpdmVzIGhpbSwgYW5kIG1heSBoYXZlIGFuIGluZmx1ZW5jZSBmb3IgZ29vZCB3aGljaCBpcyAKYmV5b25kIGFsbCBjYWxjdWxhdGlvbi4gCgoKMTE3OS7CoMKgwqDCoApUSEUgUkVTUE9OU0lCSUxJVFkgT0YgVEhPVUdIVCAKCgoxMTgwLsKgwqDCoMKgClBvc3Nlc3NpbmcgdGhpcyB0cmVtZW5kb3VzIHBvd2VyLCB3ZSBtdXN0IGJlIGNhcmVmdWwgaG93IHdlIGV4ZXJjaXNlIGl0LiAKV2UgbXVzdCByZW1lbWJlciB0byB0aGluayBvZiBhIHBlcnNvbiBhcyB3ZSB3aXNoIGhpbSB0byBiZSwgZm9yIHRoZSBpbWFnZSB0aGF0IAp3ZSB0aHVzIG1ha2Ugb2YgaGltIHdpbGwgbmF0dXJhbGx5IGFjdCBwb3dlcmZ1bGx5IHVwb24gaGltLCBhbmQgdGVuZCB0byBkcmF3IGhpbSAKZ3JhZHVhbGx5IGludG8gaGFybW9ueSB3aXRoIGl0c2VsZi4gTGV0IHVzIGZpeCBvdXIgdGhvdWdodHMgdXBvbiB0aGUgZ29vZCAKcXVhbGl0aWVzIG9mIG91ciBmcmllbmRzLCBiZWNhdXNlIGluIHRoaW5raW5nIG9mIGFueSBxdWFsaXR5IHdlIHRlbmQgdG8gCnN0cmVuZ3RoZW4gaXRzIHZpYnJhdGlvbnMsIGFuZCB0aGVyZWZvcmUgdG8gaW50ZW5zaWZ5IGl0LiAKCgoxMTgxLsKgwqDCoMKgCkZyb20gdGhpcyBjb25zaWRlcmF0aW9uIGl0IGZvbGxvd3MgdGhhdCB0aGUgaGFiaXQgb2YgZ29zc2lwIGFuZCBzY2FuZGFsLCAKaW4gd2hpY2ggbWFueSBwZW9wbGUgdGhvdWdodGxlc3NseSBpbmR1bGdlIHRoZW1zZWx2ZXM7IGlzIGluIHJlYWxpdHkgaGVpbm91cyAKd2lja2VkbmVzcywgaW4gY29uZGVtbmluZyB3aGljaCBubyBleHByZXNzaW9uIGNhbiBiZSB0b28gc3Ryb25nLiBXaGVuIHBlb3BsZSBhcmUgCmd1aWx0eSBvZiB0aGUgaW1wZXJ0aW5lbmNlIG9mIGRpc2N1c3Npbmcgb3RoZXJzLCBpdCBpcyBub3QgdXN1YWxseSB1cG9uIHRoZSBnb29kIApxdWFsaXRpZXMgdGhhdCB0aGV5IG1vc3QgaW5zaXN0LiBXZSBoYXZlIHRoZXJlZm9yZSBhIG51bWJlciBvZiBwZW9wbGUgZml4aW5nIAp0aGVpciB0aG91Z2h0IHVwb24gc29tZSBhbGxlZ2VkIGV2aWwgaW4gYW5vdGhlciwgYW5kIGNhbGxpbmcgdG8gdGhhdCBldmlsIHRoZSAKYXR0ZW50aW9uIG9mIG90aGVycyB3aG8gbWlnaHQgcGVyaGFwcyBub3QgaGF2ZSBvYnNlcnZlZCBpdDsgYW5kIGluIHRoaXMgd2F5LCBpZiAKdGhhdCBiYWQgcXVhbGl0eSByZWFsbHkgZXhpc3RzIGluIHRoZSBwZXJzb24gd2hvbSB0aGV5IGFyZSBzbyBpbXByb3Blcmx5IApjcml0aWNpc2luZywgdGhleSBkaXN0aW5jdGx5IGluY3JlYXNlIGl0IGJ5IHN0cmVuZ3RoZW5pbmcgdGhlIHVuZHVsYXRpb24gd2hpY2ggCmlzIGl0cyBleHByZXNzaW9uLiBJZiwgYXMgaXMgdXN1YWxseSB0aGUgY2FzZSwgdGhlIGRlcHJhdml0eSBleGlzdHMgb25seSBpbiAKdGhlaXIgb3duIHBydXJpZW50IGltYWdpbmF0aW9uLCBhbmQgaXMgbm90IHByZXNlbnQgaW4gdGhlIHBlcnNvbiBhYm91dCB3aG9tIHRoZXkgCmFyZSBnb3NzaXBpbmcsIHRoZW4gdGhleSBhcmUgZG9pbmcgdGhlIHV0bW9zdCBpbiB0aGVpciBwb3dlciB0byBjcmVhdGUgdGhhdCBldmlsIApxdWFsaXR5IGluIHRoYXQgcGVyc29uLCBhbmQgaWYgdGhlcmUgYmUgYW55IGxhdGVudCBnZXJtIG9mIGl0IGV4aXN0aW5nIGluIHRoZWlyIAp2aWN0aW0sIHRoZWlyIG5lZmFyaW91cyBlZmZlY3QgaXMgb25seSB0b28gbGlrZWx5IHRvIGJlIHN1Y2Nlc3NmdWwuIAoKCjExODIuwqDCoMKgwqAKV2UgbWF5IHRoaW5rIGhlbHBmdWxseSBvZiB0aG9zZSB3aG9tIHdlIGxvdmU7IHdlIG1heSBob2xkIGJlZm9yZSB0aGVtIGluIAp0aG91Z2h0IGEgaGlnaCBpZGVhbCBvZiB0aGVtc2VsdmVzLCBhbmQgd2lzaCBzdHJvbmdseSB0aGF0IHRoZXkgbWF5IHByZXNlbnRseSBiZSAKZW5hYmxlZCB0byBhdHRhaW4gaXQ7IGJ1dCBpZiB3ZSBrbm93IG9mIGNlcnRhaW4gZGVmZWN0cyBvciB2aWNlcyBpbiBhIG1hbicgcyAKY2hhcmFjdGVyLCB3ZSBzaG91bGQgbmV2ZXIgdW5kZXIgYW55IGNpcmN1bXN0YW5jZXMgbGV0IG91ciB0aG91Z2h0cyBkd2VsbCB1cG9uIAp0aGVtIGFuZCBpbnRlbnNpZnkgdGhlbTsgb3VyIHBsYW4gc2hvdWxkIGJlIHRvIGZvcm11bGF0ZSBhIHN0cm9uZyB0aG91Z2h0IG9mIHRoZSAKY29udHJhcnkgdmlydHVlcywgYW5kIHRoZW4gc2VuZCBvdXQgd2F2ZXMgb2YgdGhhdCB0aG91Z2h0IHRvIHRoZSBtYW4gd2hvIG5lZWRzIApvdXIgaGVscC4gVGhlIG9yZGluYXJ5IG1ldGhvZCBpcyBmb3Igb25lIHRvIHNheSB0byBhbm90aGVyLiAKCgoxMTgzLsKgwqDCoMKgCu+/vU8gbXkgZGVhciwgd2hhdCBhIHRlcnJpYmxlIHRoaW5nIGl0IGlzIHRoYXQgTXJzLiBTby1hbmQtU28gaXMgc28gCmlsbC10ZW1wZXJlZCEgV2h5LCBkbyB5b3Uga25vdywgb25seSB5ZXN0ZXJkYXkgc2hlIGRpZCB0aGlzIGFuZCB0aGF0LCBhbmQgSSBoYXZlIApoZWFyZCB0aGF0IHNoZSBjb25zdGFudGx5LCBldGMuLCBldGMuIElzbicgdCBpdCBhIHRlcnJpYmxlIHRoaW5nP++/vSAKCgoxMTg0LsKgwqDCoMKgCkFuZCB0aGlzIGlzIHJlcGVhdGVkIGJ5IGVhY2ggcGVyc29uIHRvIGhlciB0aGlydHkgb3IgZm9ydHkgZGVhcmVzdCAKZnJpZW5kcywgYW5kIGluIGEgZmV3IGhvdXJzIHNldmVyYWwgaHVuZHJlZCBwZW9wbGUgYXJlIHBvdXJpbmcgY29udmVyZ2luZyAKc3RyZWFtcyBvZiB0aG91Z2h0LCBhbGwgYWJvdXQgYW5nZXIgYW5kIGlycml0YWJpbGl0eSwgdXBvbiB0aGUgdW5mb3J0dW5hdGUgCnZpY3RpbS4gSXMgaXQgYW55IHdvbmRlciB0aGF0IHNoZSBwcmVzZW50bHkganVzdGlmaWVzIHRoZWlyIGV4cGVjdGF0aW9ucywgYW5kIApnaXZlcyB0aGVtIHlldCBhbm90aGVyIGV4YW1wbGUgb2YgaWxsLXRlbXBlcmVkIG92ZXIgd2hpY2ggdGhleSBjYW4gZ2xvYXQ/IAoKCjExODUuwqDCoMKgwqAKQSBwZXJzb24gd2lzaGluZyB0byBoZWxwIGluIHN1Y2ggYSBjYXNlIHdpbGwgYmUgZXNwZWNpYWxseSBjYXJlZnVsIHRvIAphdm9pZCB0aGlua2luZyBhYm91dCBhbmdlciBhdCBhbGwsIGJ1dCBpbnN0ZWFkIHdpbGwgdGhpbmsgd2l0aCBmb3JjZTogCgoKMTE4Ni7CoMKgwqDCoArvv71JIHdpc2ggTXJzLiBTby1hbmQtU28gd2VyZSBjYWxtIGFuZCBzZXJlbmU7IHNoZSBoYXMgdGhlIHBvc3NpYmlsaXR5IG9mIApzdWNoIHNlbGYtY29udHJvbCB3aXRoaW4gaGVyOyBsZXQgbWUgdHJ5IGZyZXF1ZW50bHkgdG8gc2VuZCBoZXIgc3Ryb25nLCBjYWxtLCAKc29vdGhpbmcgdGhvdWdodC13YXZlcywgc3VjaCBhcyB3aWxsIGhlbHAgaGVyIHRvIHJlYWxpc2UgdGhlIERpdmluZSBwb3NzaWJpbGl0eSAKd2l0aGluIGhlci7vv70gCgoKMTE4Ny7CoMKgwqDCoApJbiB0aGUgb25lIGNhc2UgdGhlIHRob3VnaHQgaXMgb2YgYW5nZXI7IGluIHRoZSBvdGhlciBpdCBpcyBvZiBzZXJlbml0eTsgCmluIGJvdGggYWxpa2UgaXQgd2lsbCBpbmV2aXRhYmx5IGZpbmQgaXRzIGdvYWwsIGFuZCB0ZW5kIHRvIHJlcHJvZHVjZSBpdHNlbGYgaW4gCnRoZSBtZW50YWwgYW5kIGFzdHJhbCBib2RpZXMgb2YgdGhlIHJlY2lwaWVudCBvZiB0aGUgdGhvdWdodC4gQnkgYWxsIG1lYW5zIGxldCAKdXMgdGhpbmsgZnJlcXVlbnRseSBhbmQgbG92aW5nbHkgb2Ygb3VyIGZyaWVuZHMsIGJ1dCBsZXQgdXMgdGhpbmsgb2YgdGhlaXIgZ29vZCAKcG9pbnRzIG9ubHksIGFuZCB0cnksIGJ5IGNvbmNlbnRyYXRpbmcgb3VyIGF0dGVudGlvbiB1cG9uIHRob3NlLCB0byBzdHJlbmd0aGVuIAp0aGVtIGFuZCB0byBoZWxwIG91ciBmcmllbmRzIGJ5IHRoZWlyIG1lYW5zLiAKCgoxMTg4LsKgwqDCoMKgCkEgbWFuIG9mdGVuIHNheXMgdGhhdCBoZSBjYW5ub3QgY29udHJvbCBoaXMgdGhvdWdodHMgb3IgaGlzIHBhc3Npb25zLS0gCnRoYXQgaGUgaGFzIG9mdGVuIHRyaWVkIHRvIGRvIHNvLCBidXQgaGFzIGNvbnNpc3RlbnRseSBmYWlsZWQsIGFuZCBoYXMgdGhlcmVmb3JlIApjb21lIHRvIHRoZSBjb25jbHVzaW9uIHRoYXQgc3VjaCBlZmZvcnQgaXMgdXNlbGVzcy4gVGhpcyBpZGVhIGlzIHdob2xseSAKdW5zY2llbnRpZmljLiBJZiBhbiBldmlsIHF1YWxpdHkgb3IgaGFiaXQgcG9zc2Vzc2VzIGEgY2VydGFpbiBhbW91bnQgb2Ygc3RyZW5ndGggCndpdGhpbiB1cywgaXQgaXMgYmVjYXVzZSBpbiBwcmV2aW91cyBsaXZlcyB3ZSBoYXZlIGFsbG93ZWQgdGhhdCBzdHJlbmd0aCB0byAKYWNjdW11bGF0ZS0tIGJlY2F1c2Ugd2UgaGF2ZSBub3QgcmVzaXN0ZWQgaXQgaW4gdGhlIGJlZ2lubmluZyB3aGVuIGl0IGNvdWxkIAplYXNpbHkgaGF2ZSBiZWVuIHJlcHJlc3NlZCwgYnV0IGhhdmUgcGVybWl0dGVkIGl0IHRvIGdhdGhlciB0aGUgbW9tZW50dW0gd2hpY2ggCm1ha2VzIGl0IGRpZmZpY3VsdCBub3cgdG8gZGVhbCB3aXRoIGl0LiAKCgoxMTg5LsKgwqDCoMKgCldlIGhhdmUsIGluIGZhY3QsIG1hZGUgaXQgZWFzeSBmb3Igb3Vyc2VsdmVzIHRvIG1vdmUgYWxvbmcgYSBjZXJ0YWluIApsaW5lLCBhbmQgY29ycmVzcG9uZGluZ2x5IGRpZmZpY3VsdCB0byBtb3ZlIGFsb25nIGFub3RoZXIgbGluZS0tIGRpZmZpY3VsdCwgYnV0IApub3QgaW1wb3NzaWJsZS4gVGhlIGFtb3VudCBvZiBtb21lbnR1bSBvciBlbmVyZ3kgYWNjdW11bGF0ZWQgaXMgbmVjZXNzYXJpbHkgYSAKZmluaXRlIGFtb3VudDsgZXZlbiBpZiB3ZSBoYXZlIGRldm90ZWQgc2V2ZXJhbCBsaXZlcyBlbnRpcmVseSB0byBzdG9yaW5nIHVwIHN1Y2ggCmVuZXJneSAoYW4gdW5saWtlbHkgc3VwcG9zaXRpb24pLCBzdGlsbCB0aGUgdGltZSBzbyBvY2N1cGllZCBoYXMgYmVlbiBhIGxpbWl0ZWQgCnRpbWUsIGFuZCB0aGUgcmVzdWx0cyBhcmUgbmVjZXNzYXJpbHkgZmluaXRlLiAKCgoxMTkwLsKgwqDCoMKgCklmIHdlIGhhdmUgbm93IHJlYWxpc2VkIHRoZSBtaXN0YWtlIHdlIG1hZGUsIGFuZCBhcmUgc2V0dGluZyBvdXJzZWx2ZXMgdG8gCmNvbnRyb2wgdGhhdCBoYWJpdCBhbmQgdG8gbmV1dHJhbGlzZSB0aGF0IGltcGV0dXMsIHdlIHNoYWxsIGZpbmQgaXQgbmVjZXNzYXJ5IHRvIApwdXQgZm9ydGggZXhhY3RseSBhcyBtdWNoIHN0cmVuZ3RoIGluIHRoZSBvcHBvc2l0ZSBkaXJlY3Rpb24gYXMgd2Ugb3JpZ2luYWxseSAKc3BlbnQgaW4gc2V0dGluZyB1cCB0aGF0IG1vbWVudHVtLiBOYXR1cmFsbHkgd2UgY2Fubm90IGluc3RhbnRseSBwcm9kdWNlIApzdWZmaWNpZW50IGZvcmNlIGVudGlyZWx5IHRvIGNvdW50ZXJhY3QgdGhlIHdvcmsgb2YgbWFueSB5ZWFycywgYnV0IGV2ZXJ5IGVmZm9ydCAKd2hpY2ggd2UgbWFrZSB3aWxsIHJlZHVjZSB0aGUgYW1vdW50IG9mIGZvcmNlIHN0b3JlZCB1cC4gV2Ugb3Vyc2VsdmVzIGFzIGxpdmluZyAKc291bHMgY2FuIGdvIG9uIGdlbmVyYXRpbmcgZm9yY2UgaW5kZWZpbml0ZWx5OyB3ZSBoYXZlIGFuIGluZmluaXRlIHN0b3JlIG9mIApzdHJlbmd0aCBvbiB3aGljaCB0byBkcmF3LCBhbmQgdGhlcmVmb3JlIGl0IGlzIGFic29sdXRlbHkgY2VydGFpbiB0aGF0IGlmIHdlIApwZXJzZXZlcmUgd2UgbXVzdCBldmVudHVhbGx5IHN1Y2NlZWQuIEhvd2V2ZXIgb2Z0ZW4gd2UgbWF5IGZhaWwsIGVhY2ggdGltZSAKc29tZXRoaW5nIGlzIHdpdGhkcmF3biBmcm9tIHRoYXQgZmluaXRlIHN0b3JlIG9mIGZvcmNlLCBhbmQgaXQgd2lsbCBiZSBleGhhdXN0ZWQgCmJlZm9yZSB3ZSBzaGFsbCwgc28gdGhhdCBvdXIgZXZlbnR1YWwgc3VjY2VzcyBpcyBzaW1wbHkgYSBtYXR0ZXIgb2YgbWVjaGFuaWNzLgoKCjExOTEuwqDCoMKgwqAKVGhlIGtub3dsZWRnZSBvZiB0aGUgdXNlIG9mIHRoZXNlIHRob3VnaHQtY3VycmVudHMgbWFrZXMgaXQgcG9zc2libGUgZm9yIAp1cyBhbHdheXMgdG8gZ2l2ZSBhc3Npc3RhbmNlIHdoZW4gd2Uga25vdyBvZiBzb21lIGNhc2Ugb2Ygc29ycm93IG9yIHN1ZmZlcmluZy4gCkl0IG9mdGVuIGhhcHBlbnMgdGhhdCB3ZSBhcmUgdW5hYmxlIHRvIGRvIGFueXRoaW5nIGZvciB0aGUgc3VmZmVyZXIgcGh5c2ljYWxseTsgCm91ciBib2RpbHkgcHJlc2VuY2UgbWF5IG5vdCBiZSBoZWxwZnVsIHRvIGhpbTsgaGlzIHBoeXNpY2FsIGJyYWluIG1heSBiZSBjbG9zZWQgCnRvIG91ciBzdWdnZXN0aW9ucyBieSBwcmVqdWRpY2Ugb3IgYnkgcmVsaWdpb3VzIGJpZ290cnkuIEJ1dCBoaXMgYXN0cmFsIGFuZCAKbWVudGFsIGJvZGllcyBhcmUgZmFyIG1vcmUgZWFzaWx5IGltcHJlc3NpYmxlIHRoYW4gdGhlIHBoeXNpY2FsLCBhbmQgaXQgaXMgCmFsd2F5cyBvcGVuIHRvIHVzIHRvIGFwcHJvYWNoIHRoZXNlIGJ5IGEgd2F2ZSBvZiBoZWxwZnVsIHRob3VnaHQgb3Igb2YgYWZmZWN0aW9uIAphbmQgc29vdGhpbmcgZmVlbGluZy4gCgoKMTE5Mi7CoMKgwqDCoApUaGUgbGF3IG9mIGNhdXNlIGFuZCBlZmZlY3QgaG9sZHMgZ29vZCBqdXN0IGFzIGNlcnRhaW5seSBpbiBmaW5lciBtYXR0ZXIgCmFzIGluIGRlbnNlciwgYW5kIGNvbnNlcXVlbnRseSB0aGUgZW5lcmd5IHdoaWNoIHdlIHBvdXIgZm9ydGggbXVzdCByZWFjaCBpdHMgCmdvYWwgYW5kIG11c3QgcHJvZHVjZSBpdCBlZmZlY3QuIFRoZXJlIGNhbiBiZSBubyBxdWVzdGlvbiB0aGF0IHRoZSBpbWFnZSBvciB0aGUgCmlkZWEgd2hpY2ggd2Ugd2lzaCB0byBwdXQgYmVmb3JlIHRoZSBtYW4gZm9yIGhpcyBjb21mb3J0IG9yIGhpcyBoZWxwIHdpbGwgcmVhY2ggCmhpbTsgd2hldGhlciBpdCB3aWxsIHByZXNlbnQgaXRzZWxmIGNsZWFybHkgdG8gaGlzIG1pbmQgd2hlbiBpdCBhcnJpdmVzIGRlcGVuZHMsIApmaXJzdCB1cG9uIHRoZSBkZWZpbml0ZW5lc3Mgb2Ygb3V0bGluZSB3aGljaCB3ZSBoYXZlIGJlZW4gYWJsZSB0byBnaXZlIHRvIGl0LCAKYW5kIHNlY29uZGx5IHVwb24gaGlzIG1lbnRhbCBjb25kaXRpb24gYXQgdGhlIHRpbWUuIEhlIG1heSBiZSBzbyBmdWxseSBvY2N1cGllZCAKd2l0aCB0aG91Z2h0cyBvZiBoaXMgb3duIHRyaWFscyBhbmQgc3VmZmVyaW5ncyB0aGF0IHRoZXJlIGlzIGxpdHRsZSByb29tIGZvciBvdXIgCmlkZWEgdG8gaW5zZXJ0IGl0c2VsZjsgYnV0IGluIHRoYXQgY2FzZSBvdXIgdGhvdWdodC1mb3JtIHNpbXBseSBiaWRlcyBpdHMgdGltZSwgCmFuZCB3aGVuIGF0IGxhc3QgaGlzIGF0dGVudGlvbiBpcyBkaXZlcnRlZCwgb3IgZXhoYXVzdGlvbiBmb3JjZXMgaGltIHRvIHN1c3BlbmQgCnRoZSBhY3Rpdml0eSBvZiBoaXMgb3duIHRyYWluIG9mIHRob3VnaHQsIG91cnMgd2lsbCBhdCBvbmNlIHNsaXAgaW4gYW5kIGRvIGl0cyAKZXJyYW5kIG9mIG1lcmN5LiBUaGVyZSBhcmUgc28gbWFueSBjYXNlcyB3aGVyZSB0aGUgYmVzdCB3aWxsIGluIHRoZSB3b3JsZCBjYW4gZG8gCm5vdGhpbmcgcGh5c2ljYWxseTsgYnV0IHRoZXJlIGlzIG5vIGNvbmNlaXZhYmxlIGNhc2UgaW4gd2hpY2ggZWl0aGVyIGluIHRoZSAKbWVudGFsIG9yIHRoZSBhc3RyYWwgd29ybGQgc29tZSByZWxpZWYgY2Fubm90IGJlIGdpdmVuIGJ5IHN0ZWFkeSwgY29uY2VudHJhdGVkLCAKbG92aW5nIHRob3VnaHQuIAoKCjExOTMuwqDCoMKgwqAKVGhlIHBoZW5vbWVuYSBvZiBtaW5kLWN1cmUgc2hvdyBob3cgcG93ZXJmdWwgdGhvdWdodCBtYXkgYmUgZXZlbiBpbiB0aGUgCnBoeXNpY2FsIHdvcmxkLCBhbmQgc2luY2UgaXQgYWN0cyBzbyBtdWNoIG1vcmUgZWFzaWx5IGluIGFzdHJhbCBhbmQgbWVudGFsIAptYXR0ZXIgd2UgbWF5IHJlYWxpc2Ugdml2aWRseSBob3cgdHJlbWVuZG91cyB0aGUgcG93ZXIgcmVhbGx5IGlzLCBpZiB3ZSB3aWxsIGJ1dCAKZXhlcmNpc2UgaXQuIFdlIHNob3VsZCB3YXRjaCBmb3IgZXZlcnkgb3Bwb3J0dW5pdHkgb2YgYmVpbmcgdGh1cyBoZWxwZnVsOyB0aGVyZSAKaXMgbGl0dGxlIGRvdWJ0IHRoYXQgcGxlbnR5IG9mIGNhc2VzIHdpbGwgb2ZmZXIgdGhlbXNlbHZlcy4gQXMgd2Ugd2FsayBhbG9uZyB0aGUgCnN0cmVldCwgYXMgd2UgcmlkZSBpbiBhIHRyYW0tY2FyIG9yIHJhaWx3YXkgdHJhaW4sIHdlIG9mdGVuIHNlZSBzb21lIG9uZSB3aG8gaXMgCm9idmlvdXNseSBzdWZmZXJpbmcgZnJvbSBkZXByZXNzaW9uIG9yIHNhZG5lc3M7IHRoZXJlIGlzIG91ciBvcHBvcnR1bml0eSwgYW5kIHdlIAptYXkgaW1tZWRpYXRlbHkgdGFrZSBhZHZhbnRhZ2Ugb2YgaXQgYnkgdHJ5aW5nIHRvIGFyb3VzZSBhbmQgdG8gaGVscCBoaW0uIAoKCjExOTQuwqDCoMKgwqAKTGV0IHVzIHRyeSB0byBzZW5kIGhpbSBzdHJvbmdseSB0aGUgZmVlbGluZyB0aGF0LCBpbiBzcGl0ZSBvZiBoaXMgCnBlcnNvbmFsIHNvcnJvd3MgYW5kIHRyb3VibGVzLCB0aGUgc3VuIHN0aWxsIHNoaW5lcyBhYm92ZSBhbGwsIGFuZCB0aGVyZSBpcyAKc3RpbGwgbXVjaCBmb3Igd2hpY2ggdG8gYmUgdGhhbmtmdWwsIG11Y2ggdGhhdCBpcyBnb29kIGFuZCBiZWF1dGlmdWwgaW4gdGhlIAp3b3JsZC4gU29tZXRpbWVzIHdlIG1heSBzZWUgdGhlIGluc3RhbnQgZWZmZWN0IG9mIG91ciBlZmZvcnQtLSB3ZSBtYXkgYWN0dWFsbHkgCndhdGNoIHRoZSBtYW4gYnJpZ2h0ZW4gdXAgdW5kZXIgdGhlIGluZmx1ZW5jZSBvZiB0aGUgdGhvdWdodCB3aGljaCB3ZSBoYXZlIHNlbnQgCnRvIGhpbS4gV2UgY2Fubm90IGFsd2F5cyBleHBlY3Qgc3VjaCBpbW1lZGlhdGUgcGh5c2ljYWwgcmVzdWx0OyBidXQgaWYgd2UgCnVuZGVyc3RhbmQgdGhlIGxhd3Mgb2YgbmF0dXJlIHdlIHNoYWxsIGluIGV2ZXJ5IGNhc2UgYmUgZXF1YWxseSBzdXJlIHRoYXQgc29tZSAKcmVzdWx0IGlzIGJlaW5nIHByb2R1Y2VkLiAKCgoxMTk1LsKgwqDCoMKgCkl0IGlzIG9mdGVuIGRpZmZpY3VsdCBmb3IgdGhlIG1hbiB3aG8gaXMgdW5hY2N1c3RvbWVkIHRvIHRoZXNlIHN0dWRpZXMgdG8gCmJlbGlldmUgdGhhdCBoZSBpcyByZWFsbHkgYWZmZWN0aW5nIHRob3NlIGF0IHdob20gaGlzIHRob3VnaHQgaXMgYWltZWQ7IGJ1dCAKZXhwZXJpZW5jZSBpbiBhIGdyZWF0IG51bWJlciBvZiBjYXNlcyBoYXMgc2hvd24gdXMgdGhhdCBhbnlvbmUgd2hvIG1ha2VzIGEgCnByYWN0aWNlIG9mIHN1Y2ggZWZmb3J0cyB3aWxsIGluIHRpbWUgZmluZCBldmlkZW5jZSBvZiBoaXMgc3VjY2VzcyBhY2N1bXVsYXRpbmcgCnVudGlsIGl0IGlzIG5vIGxvbmdlciBwb3NzaWJsZSBmb3IgaGltIHRvIGRvdWJ0LiBUaGUgbWFuIHNob3VsZCBtYWtlIGl0IHBhcnQgb2YgCmhpcyBsaWZlIHRodXMgdG8gdHJ5IHRvIGhlbHAgYWxsIHdob20gaGUga25vd3MgYW5kIGxvdmVzLCB3aGV0aGVyIHRoZXkgYmUgbGl2aW5nIApvciB3aGF0IGlzIGNvbW1vbmx5IGNhbGxlZCBkZWFkOyBmb3IgbmF0dXJhbGx5IHRoZSBwb3NzZXNzaW9uIG9yIHRoZSBhYnNlbmNlIG9mIAp0aGUgcGh5c2ljYWwgYm9keSBtYWtlcyBubyBkaWZmZXJlbmNlIHdoYXRldmVyIHRvIHRoZSBhY3Rpb24gb2YgZm9yY2VzIHdoaWNoIGFyZSAKbGV2ZWxsZWQgYXQgdGhlIG1lbnRhbCBhbmQgYXN0cmFsIGJvZGllcy4gQnkgc3RlYWR5LCByZWd1bGFyIHByYWN0aWNlIG9mIHRoaXMgCnNvcnQgZ3JlYXQgZ29vZCB3aWxsIGJlIGRvbmUsIGZvciB3ZSBnYWluIHN0cmVuZ3RoIGJ5IHByYWN0aWNlLCBhbmQgc28sIHdoaWxlIHdlIAphcmUgZGV2ZWxvcGluZyBvdXIgb3duIHBvd2VycyBhbmQgaW5zdXJpbmcgb3VyIHByb2dyZXNzLCB0aGUgd29ybGQgd2lsbCBiZSAKaGVscGVkIGJ5IG91ciBraW5kbHkgZWZmb3J0cy4gCgoKMTE5Ni7CoMKgwqDCoApUaHVzIHdoYXRldmVyIGlzIHRydWx5IGZvciBvdXIgb3duIGludGVyZXN0IGlzIGFsc28gZm9yIHRoZSBpbnRlcmVzdCBvZiAKdGhlIHdvcmxkLCBhbmQgd2hhdCBpcyBub3QgZ29vZCBmb3IgdGhlIHdvcmxkIGNhbiBuZXZlciBpbiByZWFsaXR5IGJlIGZvciBvdXIgCmludGVyZXN0IGVpdGhlci4gRm9yIGFsbCB0cnVlIGdhaW4gaXMgZ2FpbmVkIGZvciBhbGwuIFRvIG1hbnkgYSBtYW4gdGhpcyBtYXkgCmFwcGVhciBhIHN0cmFuZ2Ugc3RhdGVtZW50LCBiZWNhdXNlIHdlIGFyZSBhY2N1c3RvbWVkIHRvIHRoaW5rIHRoYXQgd2hhdCBvbmUgbWFuIApnYWlucyBhbm90aGVyIGxvc2VzOyB5ZXQgaXQgZW5zaHJpbmVzIGEgZ3JlYXQgdHJ1dGguIEVsc2V3aGVyZSBJIGhhdmUgc2hvd24gdGhhdCAKaWYgb25lIHBhcnR5IHRvIGEgdHJhbnNhY3Rpb24gaXMgdW5mYWlybHkgdHJlYXRlZCwgYW5kIHRoZXJlZm9yZSBsb3NlcywgdGhlcmUgaXMgCm5vIHRydWUgZ2FpbiBmb3IgdGhlIG90aGVyLiAKCgoxMTk3LsKgwqDCoMKgCkEgc3RyYWlnaHRmb3J3YXJkLCBob25lc3QgcGllY2Ugb2YgYnVzaW5lc3MgbWVhbnMgZ2FpbiBmb3IgYm90aCBwYXJ0aWVzLiAKQSB0cmFkZXNtYW4sIGxldCB1cyBzdXBwb3NlLCBidXlzIGhpcyBnb29kcyB3aG9sZXNhbGUsIGFuZCB0aGVuLCB0YWtpbmcgY2FyZSB0byAKc2F5IG9mIHRoZW0gb25seSB3aGF0IGlzIHN0cmljdGx5IHRydWUsIGRpc3Bvc2VzIG9mIHRoZW0gYnkgcmV0YWlsIGF0IGEgCnJlYXNvbmFibGUgcHJvZml0LiBIZXJlIGFsbCBwYXJ0aWVzIGdhaW4sIGZvciB0aGUgd2hvbGVzYWxlIG1lcmNoYW50IGFuZCB0aGUgCnRyYWRlc21hbiBtYWtlIHRoZWlyIGxpdmluZywgd2hpbGUgdGhlIHB1cmNoYXNlcnMgYXJlIHdpbGxpbmcgdG8gcGF5IHRoZSByZXRhaWwgCnByaWNlIGluIG9yZGVyIHRvIGhhdmUgdGhlIGNvbnZlbmllbmNlIG9mIGJ1eWluZyBpbiBzbWFsbCBxdWFudGl0aWVzLiBFYWNoIApwZXJzb24gZ2FpbnMgd2hhdCBoZSB3aXNoZXM7IG5vIG9uZSBsb3NlczsgYWxsIGFyZSBzYXRpc2ZpZWQuIAoKCjExOTguwqDCoMKgwqAKVGhpcyBpcyBtZXJlbHkgYSBzdXBlcmZpY2lhbCBleGFtcGxlIGZyb20gdGhlIHBoeXNpY2FsIHdvcmxkOyBpdCBpcyBpbiAKdGhlIGhpZ2hlciByZWFsbXMgb2YgdGhvdWdodCB0aGF0IHdlIG1heSBzZWUgbW9zdCBjbGVhcmx5IGhvdyBiZWF1dGlmdWxseSB0aGlzIApydWxlIHdvcmtzLiBTdXBwb3NlIHRoYXQgYSBtYW4gZ2FpbnMga25vd2xlZGdlLiBIZSBtYXkgaW1wYXJ0IGhpcyBnYWluIHRvIGEgCmh1bmRyZWQgb3RoZXJzLCB5ZXQgaGUgaGltc2VsZiB3aWxsIGhhdmUgbG9zdCBub3RoaW5nLiBOb3Qgb25seSBzbywgYnV0IGV2ZW4gCm90aGVycywgdG8gd2hvbSBoZSBkb2VzIG5vdCBpbXBhcnQgaXQsIHdpbGwgZ2FpbiBpbmRpcmVjdGx5IGZyb20gaGlzIHBvc3Nlc3Npb24gCm9mIGl0LiBCZWNhdXNlIGhlIGhhcyB0aGlzIGFkZGVkIGtub3dsZWRnZSwgaGUgaXMgYnkgc28gbXVjaCBhIHdpc2VyIGFuZCBtb3JlIAp1c2VmdWwgbWFuOyBoaXMgd29yZHMgc2hvdWxkIGJlIHRoZSBtb3JlIHdlaWdodHksIGhpcyBhY3Rpb25zIHRoZSBtb3JlIApzYWdhY2lvdXMsIGFuZCBzbyBvdGhlcnMgYXJvdW5kIGhpbSBzaG91bGQgYmUgdGhlIGJldHRlciBmb3IgaGlzIGxlYXJuaW5nLiAKCgoxMTk5LsKgwqDCoMKgCldlIG1heSBnbyBkZWVwZXIgc3RpbGwuIFNpbmNlIHRoZSBtYW4ga25vd3MgbW9yZSwgbm90IG9ubHkgaGlzIHdvcmRzIGFuZCAKYWN0aW9uIGJ1dCBoaXMgdGhvdWdodHMgd2lsbCBiZSB3aXNlciB0aGFuIGJlZm9yZS4gSGlzIHRob3VnaHQtZm9ybXMgd2lsbCBiZSAKYmV0dGVyLCB0aGUgd2F2ZXMgZmxvd2luZyBmcm9tIGhpcyBtZW50YWwgYm9keSBoaWdoZXIgYW5kIHJpY2hlcjsgYW5kIHRoZXNlIG11c3QgCmluZXZpdGFibHkgcHJvZHVjZSB0aGVpciByZXN1bHQgdXBvbiB0aGUgbWVudGFsIGJvZGllcyBvZiBvdGhlcnMgYXJvdW5kIGhpbS4gCkxpa2UgYWxsIG90aGVyIHdhdmVzIGluIG5hdHVyZSB0aGV5IHRlbmQgdG8gcmVwcm9kdWNlIHRoZW1zZWx2ZXMsIHRvIHByb3Zva2UgYSAKc2ltaWxhciByYXRlIG9mIHVuZHVsYXRpb24gaW4gYW55dGhpbmcgd2l0aCB3aGljaCB0aGV5IGNvbWUgaW50byBjb250YWN0LiBUaGUgCnNhbWUgbmF0dXJhbCBsYXcsIGJ5IHRoZSBhY3Rpb24gb2Ygd2hpY2ggaW4gdGhlIHBoeXNpY2FsIHdvcmxkIHlvdSBhcmUgYWJsZSB0byAKYm9pbCB0aGUgd2F0ZXIgZm9yIHlvdXIgdGVhIG9yIHRvIHRvYXN0IHlvdXIgYnJlYWQgYXQgdGhlIGZpcmUsIG1ha2VzIGl0IAphYnNvbHV0ZWx5IGNlcnRhaW4gdGhhdCB0aGUgZ29vZCBlZmZlY3RzIG9mIGFkZGl0aW9uYWwgd2lzZG9tIHdpbGwgaW5mbHVlbmNlIApvdGhlcnMsIGV2ZW4gdGhvdWdoIHRoZSBwb3NzZXNzb3Igc3BlYWtzIG5ldmVyIGEgd29yZC4gCgoKMTIwMC7CoMKgwqDCoApUaGF0IGlzIHdoeSBpbiBhbGwgcmVsaWdpb25zIHNvIG11Y2ggaW1wb3J0YW5jZSBpcyBhdHRhY2hlZCB0byB0aGUgCmNvbXBhbnkgb2YgdGhlIGdvb2QsIHRoZSB3aXNlLCB0aGUgcHVyZS4gSHVtYW4gcXVhbGl0aWVzIGFyZSBpbmZlY3Rpb3VzLCBhbmQgaXQgCmlzIG9mIHRoZSBncmVhdGVzdCBtb21lbnQgdGhhdCB3ZSBzaG91bGQgYmUgY2FyZWZ1bCB0byB3aGljaCBvZiB0aGVtIHdlIHN1YmplY3QgCm91cnNlbHZlcy4gCgoKMTIwMS7CoMKgwqDCoApUYWtlIGFub3RoZXIgaW5zdGFuY2UuIFN1cHBvc2UgdGhhdCB5b3UgZ2FpbiB0aGUgdmFsdWFibGUgcG93ZXIgb2YgCnNlbGYtY29udHJvbC4gUGVyaGFwcyB5b3Ugd2VyZSBmb3JtZXJseSBhIHBhc3Npb25hdGUgbWFuLCBhbmQgbm93IHlvdSBoYXZlIApsZWFybnQgdG8gY2hlY2sgdGhhdCBvdXRwb3VyaW5nIG9mIGZvcmNlLCBhbmQgdG8gaG9sZCBpdCBpbiBzdWJqZWN0aW9uLiBMZXQgdXMgCnNlZSBob3cgdGhhdCBhZmZlY3RzIG90aGVycyBhYm91dCB5b3UuIEluIHRoZSBwaHlzaWNhbCB3b3JsZCBpdCBpcyAKdW5xdWVzdGlvbmFibHkgcGxlYXNhbnRlciBmb3IgdGhlbSwgYnV0IHRoZW0sIGJ1dCBsZXQgdXMgY29uc2lkZXIgdGhlIGVmZmVjdCBvbiAKdGhlaXIgZmluZXIgdmVoaWNsZXMuIAoKCjEyMDIuwqDCoMKgwqAKV2hlbiBpbiBlYXJsaWVyIGRheXMgeW91IGFsbG93ZWQgeW91cnNlbGYgdG8gZ2V0IGludG8gYSByYWdlLCBncmVhdCB3YXZlcyAKb2Ygc3Ryb25nIHdyYXRoIHBvdXJlZCBvdXQgZnJvbSB5b3UgaW4gYWxsIGRpcmVjdGlvbnMuIE5vIG9uZSB3aG8gaGFzIHNlZW4gdGhlIAppbGx1c3RyYXRpb24gb2Ygc3VjaCBhbiBvdXRydXNoIGFzIHRoYXQgd2hpY2ggYXBwZWFycyBpbiBNYW4gVmlzaWJsZSBhbmQgCkludmlzaWJsZSAsIHdpbGwgbmVlZCB0byBiZSB0b2xkIHdoYXQgZGlzYXN0cm91cyBlZmZlY3RzIHN1Y2ggd2F2ZXMgbXVzdCAKaGF2ZSBwcm9kdWNlZCB1cG9uIHRoZSBhc3RyYWwgYm9kaWVzIG9mIHRob3NlIHdobyB3ZXJlIHNvIHVuZm9ydHVuYXRlIGFzIHRvIGJlIApuZWFyIHlvdS4gUGVyaGFwcyBvbmUgb2YgdGhvc2UgbWVuIHdhcyBoaW1zZWxmIHN0cnVnZ2xpbmcgdGhlIHNhbWUgZXZpbCBoYWJpdC4gCklmIHNvLCB0aGUgZW1hbmF0aW9ucyBvZiB5b3VyIGZ1cnkgc3RpcnJlZCB1cCBzaW1pbGFyIGFjdGl2aXR5IGluIGhpcyBhc3RyYWwgCmJvZHksIGFuZCBzbyB5b3Ugc3RyZW5ndGhlbmVkIHRoYXQgZXZpbCwgeW91IG1hZGUgeW91ciBicm90aGVyJyBzIHRhc2sgaGFyZGVyLCAKYW5kIGhpcyBidXJkZW4gaGVhdmllciB0byBiZWFyIHRoYW4gaXQgb3RoZXJ3aXNlIHdvdWxkIGhhdmUgYmVlbi4gQW5kIG9uY2UgbW9yZSAKSSBtdXN0IGluc2lzdCB0aGF0IHlvdSBoYXZlIG5vIHJpZ2h0IHRvIGRvIHRoYXQuIAoKCjEyMDMuwqDCoMKgwqAKQnV0IG5vdyB0aGF0IHlvdSBoYXZlIGdhaW5lZCBzZWxmLWNvbnRyb2wsIGFsbCB0aGlzIGlzIG1vc3QgaGFwcGlseSAKY2hhbmdlZC4gU3RpbGwgeW91IHJhZGlhdGUgdmlicmF0aW9ucywgZm9yIHRoYXQgaXMgTmF0dXJlJyBzIGxhdywgYnV0IG5vdyB0aGV5IAphcmUgbm8gbG9uZ2VyIHRoZSBsdXJpZCBmbGFzaGVzIG9mIGFuZ2VyLCBidXQgdGhlIGNhbG0sIG1lYXN1cmVkIHN3ZWVwIG9mIHRoZSAKc3Ryb25nIHdhdmVzIG9mIGxvdmUgYW5kIHBlYWNlLiBBbmQgdGhlc2UgYWxzbyBpbXBpbmdlIHVwb24gdGhlIGFzdHJhbCBib2R5IG9mIAp5b3VyIGZlbGxvdyBtYW4sIGFuZCB0ZW5kIHRvIHJlcHJvZHVjZSB0aGVtc2VsdmVzIGluIGhpbTsgYW5kIGlmIGhlIGlzIGZpZ2h0aW5nIAphIGJhdHRsZSBhZ2FpbnN0IHBhc3Npb24sIHRoZWlyIHN0YXRlbHkgcmh5dGhtIGhlbHBzIGhpbSBhbmQgc3RlYWRpZXMgaGltLiBZb3VyIApmb3JjZSBpcyBiZWluZyBleGVydGVkIG9uIGhpcyBzaWRlIGluc3RlYWQgb2YgYWdhaW5zdCBoaW0sIGFuZCBzbyB5b3UgbGlnaHRlbiAKaGlzIGJ1cmRlbiwgeW91IGFpZCBoaW0gb24gaGlzIHVwd2FyZCBwYXRoLiBJcyBpdCBub3QgdHJ1ZSB0aGVuIHRoYXQgaW4geW91ciAKZ2FpbiBoZSBoYXMgZ2FpbmVkIGFsc28/IAoKCjEyMDQuwqDCoMKgwqAKTWVuIGFyZSBzbyBpbmV4dHJpY2FibHkgbGlua2VkIHRvZ2V0aGVyLCBodW1hbml0eSBpcyBzbyB0cnVseSBhIHVuaXR5IAphbWlkc3QgYWxsIGl0cyBtYXJ2ZWxsb3VzIGRpdmVyc2l0eSwgdGhhdCBubyBvbmUgY2FuIGFkdmFuY2Ugb3IgcmVjZWRlIHdpdGhvdXQgCmhlbHBpbmcgb3IgaGluZGVyaW5nIHRoZSBwcm9ncmVzcyBvZiBvdGhlcnMuIFdoZXJlZm9yZSBpdCBiZWhvdmVzIHVzIHRvIHRha2UgCmhlZWQgdGhhdCB3ZSBhcmUgYW1vbmcgdGhlIGhlbHBlcnMgYW5kIG5vdCBhbW9uZyB0aGUgaGluZGVyZXJzLCBhbmQgdGhhdCBubyAKbGl2aW5nIGJlaW5nLCB3aGV0aGVyIG1hbiBvciBhbmltYWwsIHNoYWxsIGV2ZXIgYmUgdGhlIHdvcnNlIGZvciBhbnkgdGhvdWdodCBvciAKd29yZCBvciBkZWVkIG9mIG91cnMuIAoKCjEyMDUuwqDCoMKgwqAKQ0hBUFRFUiBYWCAKCgoxMjA2LsKgwqDCoMKgCkJZIFdIQVQgV0UgRE8gCgoKMTIwNy7CoMKgwqDCoApXT1JLIEZPUiBUSEUgUE9PUiAKCgoxMjA4LsKgwqDCoMKgClRIRSBxdWVzdGlvbiBvZiB3aGF0IHdlIGNhbiBkbyBpcyBvbmUgd2hpY2ggaXQgaXMgaW1wb3NzaWJsZSB0byB0cmVhdCAKZnVsbHksIGZvciB0aGUgcmVhc29uIHRoYXQgZWFjaCBwZXJzb24gaGFzIGhpcyBvd24gb3Bwb3J0dW5pdGllcywgYW5kIG5vIHR3byAKc2V0cyBvZiBvcHBvcnR1bml0aWVzIGFyZSBhbGlrZS4gV2UgYXJlIG9mdGVuIGFza2VkIHdoZXRoZXIgYSBUaGVvc29waGlzdCBzaG91bGQgCnVuZGVydGFrZSBhbnkgb2YgdGhlIG9yZGluYXJ5IGNoYXJpdGFibGUgbGluZXMgb2Ygd29yaywgd2hpY2ggYXJlIG5vdCBzcGVjaWFsbHkgCmNvbm5lY3RlZCB3aXRoIHRoZSBUaGVvc29waGljYWwgU29jaWV0eS4gVGhpcyBpcyBhIHF1ZXN0aW9uIHdoaWNoIGVhY2ggbXVzdCAKYW5zd2VyIGZvciBoaW1zZWxmLCBiZWNhdXNlIHRoZSBhbnN3ZXIgdG8gaXQgZGVwZW5kcyBvbiBoaXMgc3BlY2lhbCAKY2lyY3Vtc3RhbmNlcy4gSSB0aGluayB0aGF0IGl0IG1heSBiZSBsYWlkIGRvd24gYXMgYSBnZW5lcmFsIHJ1bGUgdGhhdCB3aGVuIAp0aGVyZSBpcyBzcGVjaWFsbHkgVGhlb3NvcGhpY2FsIHdvcmsgdGhhdCBoZSBjYW4gZG8sIGhlIHNob3VsZCBkZXZvdGUgaGlzIHRpbWUgCnRvIHRoYXQsIGJlY2F1c2UgdGhhdCBpcyBhIGtpbmQgb2YgYnVzaW5lc3MgdGhhdCBvbmx5IGhlIGNhbiBkbywgd2hlcmVhcyBtYW55IApvdGhlciBwZW9wbGUgY2FuIGRvIHRoZSBvcmRpbmFyeSBjaGFyaXRhYmxlIGxhYm91ciBhcyB3ZWxsIGFzIGhlLiAKCgoxMjA5LsKgwqDCoMKgClRha2UgZm9yIGV4YW1wbGUgYSBjYXNlIG9mIHdoYXQgaXMgY2FsbGVkIHNsdW0gd29yaywgdGhlIGRpcmVjdCBoZWxwIG9mIAp0aGUgcG9vciBieSB2aXNpdGluZyB0aGVtIGFuZCBjYXJyeWluZyB0byB0aGVtIHZhcmlvdXMgc21hbGwgY29tZm9ydHMuIE5vbmUgY2FuIApkZW55IHRoYXQgdGhpcyBpcyBhIG1vc3QgZXhjZWxsZW50IHRoaW5nIHRvIGRvLCBhbmQgdGhhdCBpdCBzYWRseSBuZWVkcyBkb2luZzsgCmJ1dCBpZiBvbmUgaXMgdG8gY2hvb3NlIGJldHdlZW4gc3BlbmRpbmcgYSBjZXJ0YWluIHRpbWUgaW4gdGhpcyBkaXN0aW5jdGx5IApwaHlzaWNhbCBvY2N1cGF0aW9uIGFuZCBkb2luZyBzb21ldGhpbmcgaW4gYSBoaWdoZXIgd29ybGQgd2hpY2ggd2lsbCB0ZW5kIHRvIApicmluZyBuZWFyZXIgdGhlIHRpbWUgd2hlbiBzbHVtcyBzaGFsbCBubyBsb25nZXIgZXhpc3QsIHRoZW4gSSBzYXkgdGhhdCB0aGUgCmxhdHRlciBpcyB0aGUgZ3JlYXRlciB3b3JrIHRvIGRvIGFuZCB0aGUgYmV0dGVyIHdheSBvZiBlbXBsb3lpbmcgdGhlIHRpbWUsIGZvciAKb25seSBvbmUgd2hvIGhhcyBzdHVkaWVkIFRoZW9zb3BoeSBjYW4gaGVscCB0byBzcHJlYWQgdGhlIFRoZW9zb3BoaWNhbCB0ZWFjaGluZywgCndoZXJlYXMgYW55IGdvb2QgYW5kIGtpbmQtaGVhcnRlZCBwZXJzb24sIG9mIHdoYXRldmVyIGNsYXNzLCBjYW4gdW5kZXJ0YWtlIHRoZSAKdGFzayBvZiBjYXJyeWluZyBmb29kIGFuZCBibGFua2V0cyB0byB0aGUgcG9vci4gCgoKMTIxMC7CoMKgwqDCoApJdCBpcyBnb29kIHdvcmssIHN1cmVseSwgdG8gaGVscCB0byBtYWtlIGEgcm9hZCwgYnV0IHdlIHNob3VsZCBub3QgcHV0IHRvIAp0aGF0IHRhc2sgb2Ygcm9hZC1tYWtpbmcgYSBtYW4gd2hvIGhhcyBxdWFsaWZpZWQgaGltc2VsZiBhcyBhbiBlbmdpbmVlciBvciBhIApkb2N0b3IuIEFueSBtYW4gd2hvIGhhcyBhIHRhbGVudCBpbiBhIGNlcnRhaW4gZGlyZWN0aW9uIG9yIGhhcyB0aGUga25vd2xlZGdlIApuZWNlc3NhcnkgdG8gZW5hYmxlIGhpbSB0byB3b3JrIGluIGEgcGFydGljdWxhciB3YXksIHNob3VsZCBiZSBlbXBsb3llZCBhbG9uZyAKaGlzIHNwZWNpYWwgbGluZSwgZm9yIHRoZXJlIGFyZSBvbmx5IGEgZmV3IHdobyBjYW4gZG8gdGhhdCwgd2hlcmVhcyBhbnlvbmUgY2FuIApkbyB0aGUgdW5za2lsbGVkIGxhYm91ciBvZiB0aGUgd29ybGQsIGFuZCB0aGVyZSBhcmUgdmFzdCBudW1iZXJzIHdobyBjYW4gZG8gCm9ubHkgdGhhdC4gVGhlcmVmb3JlIGl0IHNlZW1zIHRvIG1lIHRoYXQgd2hlbiBhIFRoZW9zb3BoaXN0IGNhbiBlbXBsb3kgaGlzIAp0aW1lIGluIHNwcmVhZGluZyBhbmQgdGVhY2hpbmcgVGhlb3NvcGh5LCBoZSBzaG91bGQgbm90IHB1dCB0aGlzIGFzaWRlIGluIG9yZGVyIAp0byB0YWtlIHVwIGEgbW9yZSBvcmRpbmFyeSBraW5kIG9mIHdvcmsgZm9yIHRoZSB3b3JsZC4gQnV0IGlmIGhlIGlzIHNvIHNpdHVhdGVkIAp0aGF0IGhlIGNhbm5vdCBkbyBhbnl0aGluZyBmb3IgdGhlIFRoZW9zb3BoaWNhbCBwcm9wYWdhbmRhIHdoaWNoIGlzIGhpcyAKc3BlY2lhbGl0eSwgaGUgb3VnaHQgY2VydGFpbmx5IHRoZW4gdG8gZW1wbG95IGhpcyBzcGFyZSB0aW1lIGluIHRoZSBoaWdoZXN0IHR5cGUgCm9mIGNoYXJpdGFibGUgbGFib3VyIHdpdGhpbiBoaXMgcmVhY2guIAoKCjEyMTEuwqDCoMKgwqAKV2hhdCBpcyByZXF1aXJlZCBpcyB0aGF0IGhlIHNob3VsZCBjdWx0aXZhdGUgYSBzcGlyaXQgb2YgYmVuZXZvbGVuY2UsIAp0aGF0IGhlIHNob3VsZCBiZSBlYWdlcmx5IHdhdGNoaW5nIGFsbCBkYXkgbG9uZyBmb3Igb3Bwb3J0dW5pdGllcyBvZiBiZWluZyAKaGVscGZ1bC4gQmVzdCBvZiBjb3Vyc2UgaWYgaGUgY2FuIGJlIHVzZWZ1bCBpbiB0aGUgaGlnaGVzdCB3YXksIGlzIGd1aWRpbmcgCnBlb3BsZSB0b3dhcmRzIFRoZW9zb3BoeSwgYnV0IHdoZW4gdGhhdCBpcyBub3QgZm9yIHRoZSBtb21lbnQgcG9zc2libGUsIGhlIApzaG91bGQgYmUgaGVscGZ1bCBpbiBhIG1vcmUgb3JkaW5hcnkgbWFubmVyLiBIZSBzaG91bGQgZW1wbG95IGhpbXNlbGYgaW4gc2VuZGluZyAKb3V0IGJlbmV2b2xlbnQgdGhvdWdodHMsIG9yIGluIG1ha2luZyBwZW9wbGUgaGFwcHkgaW4gdGhlIHBoeXNpY2FsIHdvcmxkLiBIZSAKc2hvdWxkIGltcG9ydCB0aGUgaWRlYSBvZiBoZWxwZnVsbmVzcyBpbnRvIGV2ZXJ5IGxpdHRsZSBkYWlseSBhY3Rpb24uIEVhY2ggbWFuIAptdXN0IGRlY2lkZSBmb3IgaGltc2VsZiBob3cgaGUgY2FuIGJlc3QgZG8gdGhpcywgYW5kIGhpcyBzdHVkeSBvZiB0aGUgaGlkZGVuIApzaWRlIG9mIHRoaW5ncyB3aWxsIG9mZmVyIGhpbSBtYW55IHN1Z2dlc3Rpb25zOyBmb3IgaXQgbWFrZXMgZGFpbHkgbGlmZSBtdWNoIAptb3JlIGludGVyZXN0aW5nLCBhbmQgZW5hYmxlcyB1cyBtdWNoIG1vcmUgdXNlZnVsIHRoYW4gd2UgY291bGQgYmUgd2l0aG91dCBpdC4KCgoxMjEyLsKgwqDCoMKgCkl0IHNob3dzIHVzIHRoYXQgbWFueSBhcHBhcmVudGx5IHRyaXZpYWwgYWN0aW9ucyByZWFjaCBmdXJ0aGVyIHRoYW4gd2UgCnRoaW5rLCBhbmQgdGhlcmVmb3JlIGltcHJlc3NlcyBzdHJvbmdseSB1cG9uIHVzIHRoZSBuZWNlc3NpdHkgZm9yIGxpdmluZyAKY2FyZWZ1bGx5IGFuZCByZWNvbGxlY3RlZGx5LiBJdCBzaG93cyBhIG1hbiB0aGF0IGV2ZXJ5IGFjdGlvbiBoYXMgaXRzIGVmZmVjdCAKdXBvbiB0aG9zZSBhcm91bmQgaGltLCBldmVuIHdoZW4gaXQgc2VlbXMgb24gdGhlIHN1cmZhY2UgdG8gY29uY2VybiBoaW1zZWxmIAphbG9uZTsgdGhhdCBmb3IgdGhpcyBlZmZlY3Qgb24gb3RoZXJzIGhlIGlzIHJlc3BvbnNpYmxlLCBhbmQgdGhhdCBpdCBvZmZlcnMgaGltIAphIHdlbGNvbWUgb3Bwb3J0dW5pdHkgZm9yIGRvaW5nIGdvb2QuIFdoZW4gdGhpcyBpcyBvbmNlIGdyYXNwZWQsIGhlIHJlYWxpc2VzIAp0aGF0IGhlIG11c3Qgb3JkZXIgaGlzIGxpZmUgZnJvbSB0aGlzIG5ldyBwb2ludCBvZiB2aWV3LS0gdGhhdCBpdCBtdXN0IGJlIHNwZW50LCAKZXZlbiBpbiBzbWFsbCB0aGluZ3MsIG5vdCBmb3IgaGltc2VsZiwgYnV0IGZvciBvdGhlcnMuIE1hbnkgYSBtYW4gbGl2ZXMgZm9yIApvdGhlcnMgaW4gdGhlIHNlbnNlIHRoYXQgaGUgcmVndWxhdGVzIGhpcyBsaWZlIG9uIHdoYXQgaGUgaW1hZ2luZXMgb3RoZXJzIGFyZSAKdGhpbmtpbmcgYWJvdXQgaGltOyBidXQgb3VyIHN0dWRlbnQnIHMgYWx0cnVpc20gd2lsbCBiZSBvZiBhbm90aGVyIHNvcnQuIEhlIHdpbGwgCnB1dCBiZWZvcmUgaGltc2VsZiBmb3IgaGlzIGd1aWRhbmNlIHR3byBzdHJpbmdlbnQgcnVsZXM6IAoKCjEyMTMuwqDCoMKgwqAKVGhhdCBldmVyeXRoaW5nIHNoYWxsIGJlIGRvbmUgdW5zZWxmaXNobHkuIAoKCjEyMTQuwqDCoMKgwqAKVGhhdCBldmVyeXRoaW5nIHNoYWxsIGJlIGRvbmUgd2l0aCBkZWZpbml0ZSBwdXJwb3NlLCBhbmQgYXMgcGVyZmVjdGx5IGFzIApoZSBjYW4gZG8gaXQuIAoKCjEyMTUuwqDCoMKgwqAKVEhFIEZPUkNFIE9GIFRIRSBNQVNURVIgCgoKMTIxNi7CoMKgwqDCoApJZiBoZSBkb2VzIHRoaXMsIGlmIGhlIGxpdmVzIGluIHRoaXMgd2F5LCB0aGUgUG93ZXJzIHdobyBydWxlIHRoZSB3b3JsZCAKd2lsbCBzb29uIHJlY29nbmlzZSBoaW0gYW5kIHVzZSBoaW0sIGZvciBieSBsaXZpbmcgdGh1cyBoZSBtYWtlcyBoaW1zZWxmIGEgcmVhZHkgCmNoYW5uZWwgZm9yIHRoZSBwb3dlciBvZiB0aGUgTWFzdGVyLCBhIHZhbHVhYmxlIGluc3RydW1lbnQgaW4gSGlzIGhhbmRzLiBUcnVseSwgCnRoZSBoZWxwIG9mIHRoZSBIb2x5IE9uZXMgaXMgZ2l2ZW4gY2hpZWZseSB1cG9uIGhpZ2hlciBwbGFuZXM7IGJ1dCBpdCBpcyBub3QgCmNvbmZpbmVkIHRvIHRoZW07IGl0IGFjdHMgaW4gdGhlIHBoeXNpY2FsIHdvcmxkIGFzIHdlbGwsIGlmIHdlIGdpdmUgaXQgdGhlIApvcHBvcnR1bml0eS4gVGhlIE1hc3RlciB3aWxsIG5vdCB3YXN0ZSBIaXMgc3RyZW5ndGggaW4gZm9yY2luZyBhIHN0cmVhbSAKb2YgSGlzIGVuZXJneSBkb3duIGludG8gdGhlIGRlbnNlIG1hdHRlciBvZiB0aGlzIGxvd2VyIHdvcmxkLCBiZWNhdXNlIHRvIGRvIHRoYXQgCndvdWxkIG5vdCBiZSBnb29kIHNwaXJpdHVhbCBlY29ub21pY3M7IGl0IHdvdWxkIG5vdCBiZSB1dGlsaXNpbmcgdGhhdCBhbW91bnQgb2YgCmVuZXJneSB0byB0aGUgYmVzdCBhZHZhbnRhZ2UuIEJ1dCBpZiBhIG1hbiBhbHJlYWR5IGxpdmluZyBpbiBvdXIgbG93ZXIgd29ybGQgc28gCmFycmFuZ2VzIGhpcyBsaWZlIGFzIHRvIG1ha2UgaGltc2VsZiBhIGZpdCBjaGFubmVsIGZvciB0aGF0IGVuZXJneSwgdGhlIHBvc2l0aW9uIAppcyBhbHRlcmVkLCBhbmQgaXQgYmVjb21lcyB3b3J0aCB0aGUgTWFzdGVyJyBzIHdoaWxlIHRvIG1ha2UgYW4gZWZmb3J0IHdoaWNoIAp3b3VsZCBub3Qgb3RoZXJ3aXNlIGhhdmUgYmVlbiByZW11bmVyYXRpdmUuIAoKCjEyMTcuwqDCoMKgwqAKV2UgaGF2ZSB0byByZW1lbWJlciB0aGF0IGEgY2hhbm5lbCBtdXN0IGJlIG9wZW4gYXQgYm90aCBlbmRzLCBub3QgYXQgb25lIAplbmQgb25seS4gVGhlIGhpZ2hlciBlbmQgb2Ygb3VyIGNoYW5uZWwgY29uc2lzdHMgaW4gdGhlIGRldm90aW9uIGFuZCAKdW5zZWxmaXNobmVzcyBvZiB0aGUgbWFuLCBpbiB0aGUgdmVyeSBmYWN0IHRoYXQgaGUgaXMgYW54aW91cyB0byBiZSB1c2VkLCBhbmQgaXMgCm9yZGVyaW5nIGhpcyBsaWZlIGZvciB0aGF0IHB1cnBvc2UuIFRoZSBsb3dlciBlbmQgaXMgdGhlIG1hbicgcyBwaHlzaWNhbCBib2R5LCAKdGhyb3VnaCB3aGljaCB0aGUgaW5mbHVlbmNlIG11c3QgcGFzcyBvdXQsIGFuZCB0aGlzIGFsc28gbmVlZHMgY2FyZWZ1bCAKYXR0ZW50aW9uLCBpbiBvcmRlciB0aGF0IGl0IG1heSBub3QgYmVmb3VsIHRoZSBzdHJlYW0gd2hpY2ggdGhlIE1hc3RlciBzZW5kcy4KCgoxMjE4LsKgwqDCoMKgClJlbWVtYmVyIHRoYXQgd2UgYXJlIGRlYWxpbmcgd2l0aCBubyB2YWd1ZSBhYnN0cmFjdGlvbiwgYnV0IHdpdGggYSAKcGh5c2ljYWwgdGhvdWdoIGludmlzaWJsZSBmbHVpZCwgd2hpY2ggcGVybWVhdGVzIHRoZSBtYXR0ZXIgb2YgdGhlIGJvZHkgYW5kIApleHVkZXMgdGhyb3VnaCB0aGUgcG9yZXMgb2YgdGhlIHNraW4sIG9yIGlzIHByb2plY3RlZCBmcm9tIHRoZSBoYW5kcyBvciBmZWV0LiAKVGhlcmVmb3JlIHRoYXQgYm9keSBtdXN0IGJlIHB1cmUgaW5zaWRlLCB1bmNvbnRhbWluYXRlZCBieSBmbGVzaC1mb29kcywgYWxjb2hvbCAKb3IgdG9iYWNjbzsgYW5kIGl0IG11c3QgYWxzbyBiZSBrZXB0IHNjcnVwdWxvdXNseSBjbGVhbiBvdXRzaWRlIGJ5IGZyZXF1ZW50IGFuZCAKdGhvcm91Z2ggYWJsdXRpb25zLCBlc3BlY2lhbCBhdHRlbnRpb24gYmVpbmcgcGFpZCB0byB0aGUgaGFuZHMgYW5kIGZlZXQuIApPdGhlcndpc2UgdGhlIGZsdWlkLCB0cmFuc211dGVkIHdpdGggc28gbXVjaCBjYXJlIGZyb20gaGlnaGVyIHBsYW5lcywgd2lsbCBiZSAKcG9sbHV0ZWQgYXMgaXQgcGFzc2VzIHRocm91Z2ggbWFuLCBhbmQgd2lsbCBmYWlsIHRvIGFjaGlldmUgdGhlIG9iamVjdCBmb3Igd2hpY2ggCml0IHdhcyBzZW50LiAKCgoxMjE5LsKgwqDCoMKgCkFsdGhvdWdoIHRoaXMgZm9yY2UgcmFkaWF0ZXMgZnJvbSB0aGUgd29ydGh5IHN0dWRlbnQgYXQgYWxsIHRpbWVzLCBoZSBjYW4gCmFsc28gZ2F0aGVyIGl0IHVwIGFuZCBwb3VyIGl0IG91dCB3aXRoIGRlZmluaXRlIGludGVudGlvbiB1cG9uIGEgcGFydGljdWxhciAKb2JqZWN0LiBJbiBhIHByZXZpb3VzIGNoYXB0ZXIgaXQgd2FzIGV4cGxhaW5lZCBob3cgdGhlIG9yZGluYXJ5IG1hbiBjYW4gcHJvdGVjdCAKaGltc2VsZiBmcm9tIGV2aWwgaW5mbHVlbmNlIHdoZW4gc2hha2luZyBoYW5kcywgb3Igd2hlbiBzdXJyb3VuZGVkIGJ5IGEgY3Jvd2Q7IApidXQgdGhlIHN0dWRlbnQsIGluc3RlYWQgb2YgcHJvdGVjdGluZyBoaW1zZWxmLCB3aWxsIG1ha2Ugb3V0IG9mIHRoZXNlIAp1bnBsZWFzaW5nIG9jY3VycmVuY2VzIG9wcG9ydHVuaXRpZXMgdG8gYWN0IHVwb24gb3RoZXJzLiBXaGVuIGhlIHNoYWtlcyBoYW5kcyAKd2l0aCBhIG1hbiwgaGUgd2lsbCBzZW5kIHRoZSBNYXN0ZXInIHMgcG93ZXIgcnVzaGluZyB0aHJvdWdoIGhpcyBleHRlbmRlZCBhcm0uIApUaGUgYmVnaW5uZXIgbWF5IGFzazog77+9SG93IGNhbiBJIGRvIHRoYXQ/IEFuZCBldmVuIGlmIEkgdHJ5LCBob3cgY2FuIEkgYmUgCmNlcnRhaW4gdGhhdCBJIGhhdmUgc3VjY2VlZGVkID/vv70gCgoKMTIyMC7CoMKgwqDCoApBbGwgdGhhdCBpcyBuZWVkZWQgaGVyZSBpcyBhIGZpcm0gY29udmljdGlvbiBhbmQgYW4gaW50ZW5zZSByZXNvbHZlLS0gYSAKY29udmljdGlvbiwgYmFzZWQgdXBvbiBoaXMgc3R1ZHksIHRoYXQgdGhpcyBpcyBhIHRoaW5nIHRoYXQgY2FuIGJlIGRvbmUsIGFuZCB0aGUgCmludGVuc2UgcmVzb2x2ZSB0byBkbyBpdCwgd2hpY2ggY29tZXMgZnJvbSBoaXMgZGVlcCBkZXZvdGlvbiB0byB0aGUgTWFzdGVyIGFuZCAKaGlzIGVhcm5lc3QgZGVzaXJlIHRvIGRvIEhpcyB3aWxsLiBTdWNjZXNzIGluIGFsbCBtYWdpY2FsIGVmZm9ydHMgZGVwZW5kcyB1cG9uIAp0aGUgYWJzb2x1dGUgY29uZmlkZW5jZSBvZiB0aGUgb3BlcmF0b3I7IGEgbWFuIHdobyBkb3VidHMgaGlzIG93biBjYXBhY2l0eSBoYXMgCmFscmVhZHkgZmFpbGVkLiBTbyB0aGF0IGFsbCB0aGF0IGlzIG5lY2Vzc2FyeSBpcyB0aGF0IGhlIHNob3VsZCBtaW5nbGUgd2l0aCB0aGUgCmhlYXJ0eSB3ZWxjb21lIHdoaWNoIGhlIGV4dGVuZHMgdG8gaGlzIHZpc2l0b3IgdGhlIHN0cm9uZyB0aG91Z2h0OiDvv71JIGdpdmUgeW91IApoZXJld2l0aCB0aGUgbG92ZSBvZiB0aGUgTWFzdGVyLu+/vSBJbiB0aGUgc2FtZSB3YXksIHdoZW4gaGUgZmluZHMgaGltc2VsZiBpbiBhIApjcm93ZCwgaGUgd2lsbCBzcHJlYWQgYW1vbmcgdGhlIHBlb3BsZSB0aGF0IHNhbWUgaW5mbHVlbmNlIG9mIHRoZSBNYXN0ZXInIHMgCmxvdmU7IGFuZCB0aGF0IG91dHBvdXJpbmcgd2lsbCBiZSBmb3IgaGltIGEgZmFyIGJldHRlciBwcm90ZWN0aW9uIHRoYW4gYW55IApzaGVsbC4gCgoKMTIyMS7CoMKgwqDCoApUSEUgTUFOVUZBQ1RVUkUgT0YgVEFMSVNNQU5TIAoKCjEyMjIuwqDCoMKgwqAKQW5vdGhlciB1c2Ugd2hpY2ggY2FuIGJlIG1hZGUgb2YgdGhpcyBmb3JjZSBpcyB0byBjaGFyZ2UgY2VydGFpbiBvYmplY3RzIAp3aXRoIGl0LCB0aGVyZWJ5IGNvbnZlcnRpbmcgdGhlbSBpbnRvIHRhbGlzbWFucy4gSSBoYXZlIHdyaXR0ZW4gYmVmb3JlIG9mIHRoZSAKZWZmZWN0cyBwcm9kdWNpYmxlIGJ5IHN1Y2ggY2hhcm1zOyBJIHNwZWFrIG5vdyBvZiB0aGUgcHJvY2VzcyBvZiB0aGVpciAKbWFudWZhY3R1cmUuIFRoZSBtb3JlIGFkdmFuY2VkIGJyYW5jaGVzIG9mIHRoaXMgYXJ0IHJlcXVpcmUgZGVmaW5pdGUga25vd2xlZGdlLCAKb2J0YWluYWJsZSBvbmx5IGJ5IGFuIGV4dGVuZGVkIGNvdXJzZSBvZiBzdHVkeTsgYnV0IGFueSBlYXJuZXN0IG1hbiBjYW4gbWFrZSBhIAp0ZW1wb3JhcnkgdGFsaXNtYW4gd2hpY2ggd2lsbCBiZSBvZiBncmVhdCB1c2UgdG8gb25lIHdobyBuZWVkcyBoZWxwLiAKCgoxMjIzLsKgwqDCoMKgCk9uZSB3aG8gaXMgYWNjdXN0b21lZCB0byB0aGUgd29yayBjYW4gcGVyZm9ybSBhbnkgb3JkaW5hcnkgcHJvY2VzcyBvZiAKbWFnbmV0aXNhdGlvbiBvciBkZW1hZ25ldGlzYXRpb24gcHJhY3RpY2FsbHkgaW5zdGFudGFuZW91c2x5IGJ5IHRoZSBtZXJlIApleGVydGlvbiBvZiBoaXMgd2lsbDsgYnV0IHRoZSBiZWdpbm5lciB1c3VhbGx5IGZpbmRzIGl0IG5lY2Vzc2FyeSB0byBoZWxwIApoaW1zZWxmIGluIHRoZSBjb25jZW50cmF0aW9uIG9mIGhpcyB3aWxsIGJ5IHRoaW5raW5nIGNhcmVmdWxseSBvZiB0aGUgdmFyaW91cyAKc3RhZ2VzIG9mIHRoZSBwcm9jZXNzIGFuZCB1c2luZyB0aGUgYXBwcm9wcmlhdGUgZ2VzdHVyZXMuIFN1cHBvc2UsIGZvciBleGFtcGxlLCAKdGhhdCBpdCBpcyBkZXNpcmFibGUgdG8gbWFnbmV0aXNlIHNvbWUgc21hbGwgYm9keSAoc3VjaCBhcyBhIHJpbmcsIGEgbG9ja2V0LCBhIApwZW5ob2xkZXIpIGluIG9yZGVyIHRvIG1ha2UgaXQgYW4gYW11bGV0IGFnYWluc3QgZmVhcjsgd2hhdCBpcyB0aGUgZWFzaWVzdCAKbWV0aG9kIG9mIHByb2NlZHVyZT8gCgoKMTIyNC7CoMKgwqDCoApSZWFsaXNlIGZpcnN0IGV4YWN0bHkgd2hhdCBpcyB3YW50ZWQuIFdlIHdpc2ggdG8gbG9hZCB0aGF0IGJvZHkgd2l0aCAKZXRoZXJpYywgYXN0cmFsIGFuZCBtZW50YWwgbWF0dGVyIGhlYXZpbHkgY2hhcmdlZCB3aXRoIGEgcGFydGljdWxhciBzZXQgb2YgCnVuZHVsYXRpb25zLS0gdGhvc2Ugb2YgY291cmFnZSBhbmQgY29uZmlkZW5jZS4gVGhlIHRyYWluZWQgb2NjdWx0aXN0IHdvdWxkIApnYXRoZXIgdG9nZXRoZXIgZWFjaCBvZiB0aG9zZSBsZXZlbHMgc3VjaCB0eXBlcyBvZiBtYXR0ZXIgYXMgd2lsbCBtb3N0IGVhc2lseSAKcmVjZWl2ZSBhbmQgcmV0YWluIHZpYnJhdGlvbnMgb2YganVzdCB0aGF0IGNoYXJhY3RlcjsgdGhlIGJlZ2lubmVyLCBrbm93aW5nIApub3RoaW5nLCBvZiB0aGF0LCBtdXN0IHVzZSB3aGF0ZXZlciBtYXRlcmlhbCBjb21lcyB0byBoYW5kIGFuZCBzbyB3aWxsIGhhdmUgdG8gCmV4cGVuZCBhIGdyZWF0ZXIgYW1vdW50IG9mIGZvcmNlIHRoYW4gd291bGQgYmUgZXhlcnRlZCBieSBoaXMgbW9yZSBleHBlcmllbmNlZCAKYnJvdGhlci4gCgoKMTIyNS7CoMKgwqDCoApUaGUgbWFraW5nIG9mIGFuIGFtdWxldCBtYXkgYmUgbGlrZW5lZCB0byB0aGUgd3JpdGluZyBvZiBhbiBpbnNjcmlwdGlvbiwgCmFuZCB0aGUgYWNxdWlzaXRpb24gb2YgdGhlIHJpZ2h0IGtpbmQgb2YgbWF0dGVyIGNvcnJlc3BvbmRzIHRvIG9idGFpbmluZyBhIApwZXJmZWN0IHN1cmZhY2Ugb24gd2hpY2ggdG8gd3JpdGUuIFRoZSBiZWdpbm5lciwgd2hvIGNhbm5vdCBkbyB0aGlzIG11c3Qgd3JpdGUgCndpdGggZ3JlYXRlciBsYWJvdXIgYW5kIGxlc3MgcGVyZmVjdGlvbiBvZiByZXN1bHQgdXBvbiB0aGUgc3VyZmFjZSB0aGF0IGhhcHBlbnMgCnRvIGJlIGF2YWlsYWJsZS4gVGhlIGZpcnN0IGRpZmZpY3VsdHkgdGhhdCBjb25mcm9udHMgaGltIGlzIHRoYXQgaGlzIHNoZWV0IGlzIApub3QgZXZlbiBhIGJsYW5rIG9uZTsgaGlzIHBhcGVyIGFscmVhZHkgYmVhcnMgYW4gaW5zY3JpcHRpb24sIHdoaWNoIG11c3QgYmUgCnJlbW92ZWQgYmVmb3JlIGhlIGNhbiB1c2UgaXQuIElmLCB0aGUgcmluZyBvciBsb2NrZXQgaGFzIGJlZW4gd29ybiBieSBhbnlvbmUsIGl0IAppcyBhbHJlYWR5IGZ1bGwgb2YgdGhlIG1hZ25ldGlzbSBvZiB0aGF0IHBlcnNvbi0tIG1hZ25ldGlzbSB3aGljaCBtYXkgYmUgYmV0dGVyIApvciBtYXkgYmUgd29yc2UgdGhhbiB0aGF0IG9mIHRoZSBzdHVkZW50LCBidXQgaXMgYXQgYW55IHJhdGUgZGlmZmVyZW50IGZyb20gaXQsIAphbmQgc28gaXMgYW4gb2JzdGFjbGUtLSBqdXN0IGFzIGFueSBraW5kIG9mIHdyaXRpbmcsIGhvd2V2ZXIgZ29vZCwgd2hpY2ggYWxyZWFkeSAKZmlsbHMgYSBzaGVldCBvZiBwYXBlciwgc3RhbmRzIGluIHRoZSB3YXkgb2YgaXRzIHVzZSBmb3IgZnVydGhlciB3cml0aW5nLiBFdmVuIAppZiB0aGUgcmluZyBvciBwZW4taG9sZGVyIGJlIHF1aXRlIG5ldywgaXQgaXMgbGlrZWx5IHRvIGNvbnRhaW4gc29tZXRoaW5nIG9mIHRoZSAKc3BlY2lhbCBtYWduZXRpc20gZWl0aGVyIG9mIHRoZSBtYWtlciBvciBvZiB0aGUgc2VsbGVyOyBzbyBpbiBhbnkgY2FzZSB0aGUgZmlyc3QgCnRoaW5nIGlzIHRvIHJlbW92ZSB3aGF0ZXZlciBtYXkgYmUgdGhlcmUtLSB0byBvYnRhaW4gYSBjbGVhciBzaGVldCBmb3Igb3VyIAppbnNjcmlwdGlvbi4gVGhlcmUgYXJlIHZhcmlvdXMgbWV0aG9kcyBieSB3aGljaCB0aGlzIG1heSBiZSBkb25lOyBsZXQgbWUgCmRlc2NyaWJlIGEgc2ltcGxlIG9uZS4gCgoKMTIyNi7CoMKgwqDCoApSZXN0IHRoZSB0aXAgb2YgdGhlIGZvcmVmaW5nZXIgb2YgdGhlIHJpZ2h0IGhhbmQgYWdhaW5zdCB0aGUgZW5kIG9mIHRoZSAKdGh1bWIsIHNvIGFzIHRvIG1ha2UgYSByaW5nLCBhbmQgaW1hZ2luZSBhIGZpbG0gb2YgZXRoZXIgc3RyZXRjaGVkIGFjcm9zcyB0aGF0IApyaW5nIGxpa2UgdGhlIGhlYWQgb2YgYSBkcnVtLiBXaWxsIHN0cm9uZ2x5IHRoYXQgc3VjaCBhIGZpbG0gc2hvdWxkIGJlIAptYWRlLCBhbmQgcmVtZW1iZXIgdGhhdCB0aGF0IHZlcnkgZWZmb3J0IG9mIHRoZSB3aWxsIGRvZXMgbWFrZSBpdCwgCmFsdGhvdWdoIHlvdSBjYW5ub3Qgc2VlIGl0LiBSZW1lbWJlciBhbHNvIHRoYXQgaXQgaXMgZXNzZW50aWFsIHRvIHRoZSBzdWNjZXNzIG9mIAp0aGUgZXhwZXJpbWVudCB0aGF0IHlvdSBzaG91bGQgYmUgcXVpdGUgY2VydGFpbiBvZiB0aGlzIGZhY3QtLSB0aGF0IHlvdXIgCnByZXZpb3VzIHN0dWR5IHNob3VsZCBoYXZlIGNvbnZpbmNlZCB5b3UgdGhhdCB0aGUgaHVtYW4gd2lsbCBoYXMgdGhlIHBvd2VyIHRvIAphcnJhbmdlIHN1YnRsZSBtYXR0ZXIgaW4gdGhpcyBvciBhbnkgb3RoZXIgd2F5LiAKCgoxMjI3LsKgwqDCoMKgClRoZW4sIGtlZXBpbmcgeW91ciBhdHRlbnRpb24gZmlybWx5IGZpeGVkIHVwb24gdGhhdCBmaWxtLCBzbyBhcyB0byBob2xkIAppdCBxdWl0ZSByaWdpZCwgcGFzcyBzbG93bHkgdGhyb3VnaCBpdCB0aGUgb2JqZWN0IHRvIGJlIGRlbWFnbmV0aXNlZCwgYW5kIGJ5IHNvIApkb2luZyB5b3Ugd2lsbCBjbGVhbnNlIGl0IGVudGlyZWx5IG9mIHRoZSBldGhlcmljIHBhcnQgb2YgaXRzIHByZXZpb3VzIAptYWduZXRpc20uIEkgZG8gbm90IG1lYW4gdGhhdCB5b3Ugd2lsbCBsZWF2ZSBpdCB3aXRob3V0IGV0aGVyaWMgbWF0dGVyLCBidXQgdGhhdCAKZXZlcnkgcGFydGljbGUgb2Ygc3VjaCBtYXR0ZXIgd2lsbCBiZSBzd2VwdCBvdXQgYW5kIHJlcGxhY2VkOyBqdXN0IGFzLCBpZiBhIHR1YmUgCmlzIGZpbGxlZCB3aXRoIGdhcyBhbmQgb25lIGJsb3dzIHN0cm9uZ2x5IGludG8gb25lIGVuZCBvZiBpdCwgYWxsIHRoZSBnYXMgaXMgCmRyaXZlbiBvdXQ7IGJ1dCB0aGUgdHViZSBpcyBub3QgdGhlcmVmb3JlIGVtcHR5LCBhcyB0aGUgcHJlc3N1cmUgb2YgdGhlIApzdXJyb3VuZGluZyBhaXIgaW1tZWRpYXRlbHkgcmVmaWxscyBpdC4gU28gdGhlIHNwZWNpYWxseSBjaGFyZ2VkIGV0aGVyIGlzIApkcmVkZ2VkIG91dCBvZiB0aGUgbG9ja2V0IG9yIHBlbi1ob2xkZXIsIGFuZCBpdHMgcGxhY2UgaXMgdGFrZW4gYnkgdGhlIG9yZGluYXJ5IApldGhlciB3aGljaCBpbnRlcnBlbmV0cmF0ZXMgdGhlIHN1cnJvdW5kaW5nIGF0bW9zcGhlcmUuIAoKCjEyMjguwqDCoMKgwqAKVGhlIG5leHQgc3RlcCBpcyB0byBsZXQgdGhlIGV0aGVyaWMgZmlsbSBkaXNzb2x2ZSwgYW5kIHJlcGxhY2UgaXQgYnkgb25lIApvZiBhc3RyYWwgbWF0dGVyLCB0aHJvdWdoIHdoaWNoIHRoZSBvYmplY3QgaXMgYWdhaW4gcGFzc2VkLiBUaGUgcHJvY2VzcyBtYXkgYmUgCnJlcGVhdGVkIHdpdGggYSBmaWxtIG9mIG1lbnRhbCBtYXR0ZXIsIGFuZCB3ZSBzaGFsbCB0aGVuIGhhdmUgdGhlIG9iamVjdCAKZW50aXJlbHkgZnJlZSBvbiBhbGwgdGhyZWUgcGxhbmVzIGZyb20gYW55IHNvcnQgb2Ygc3BlY2lhbGlzZWQgbWFnbmV0aXNtLS0gYSAKY2xlYW4gc2hlZXQsIGluIGZhY3QsIHVwb24gd2hpY2ggd2UgY2FuIHdyaXRlIHdoYXQgd2Ugd2lsbC4gQWZ0ZXIgYSBjZXJ0YWluIAphbW91bnQgb2YgcHJhY3RpY2UgdGhlIHN0dWRlbnQgY2FuIG1ha2UgYSBjb21iaW5lZCBmaWxtIGNvbnRhaW5pbmcgZXRoZXJpYywgCmFzdHJhbCBhbmQgbWVudGFsIG1hdHRlciwgc28gYXMgdG8gcGVyZm9ybSB0aGUgd2hvbGUgb3BlcmF0aW9uIGJ5IHBhc3NpbmcgdGhlIApvYmplY3Qgb25jZSB0aHJvdWdoIHRoZSByaW5nLiAKCgoxMjI5LsKgwqDCoMKgClRoZSBvcGVyYXRvciBtdXN0IHRoZW4gZXhlcmNpc2UgYWxsIGhpcyBzdHJlbmd0aCB0byBmaWxsIGhpbXNlbGYgd2l0aCB0aGUgCnF1YWxpdGllcyB3aGljaCBoZSB3aXNoZXMgdGhlIGFtdWxldCB0byBjb252ZXkgKGluIHRoaXMgY2FzZSBmZWFybGVzc25lc3MgYW5kIApzZWxmLXJlbGlhbmNlKSwgZXhjbHVkaW5nIGZvciB0aGUgbW9tZW50IGFsbCB0aG91Z2h0IG9mIG90aGVyIGF0dHJpYnV0ZXMgYW5kIApiZWNvbWluZyB0aGUgbGl2aW5nIGluY2FybmF0aW9uIG9mIHRoZXNlLiBUaGVuLCB3aGVuIGhlIGhhcyB0aHVzIHdvdW5kIGhpbXNlbGYgCnVwIHRvIGhpcyBoaWdoZXN0IGxldmVsIG9mIGVudGh1c2lhc20sIGxldCBoaW0gdGFrZSB0aGUgb2JqZWN0IGluIGhpcyBsZWZ0IGhhbmQsIApvciBsYXkgaXQgb24gdGhlIHRhYmxlIGluIGZyb250IG9mIGhpbSwgYW5kIHBvdXIgbWFnbmV0aXNtIG9uIGl0IHRocm91Z2ggdGhlIApmaW5nZXJzIG9mIGhpcyByaWdodCBoYW5kLCBhbGwgdGhlIHRpbWUgd2lsbGluZyB3aXRoIGhpcyB1dG1vc3Qgc3RyZW5ndGggdGhhdCBpdCAKc2hhbGwgYmUgZmlsbGVkIHdpdGggdGhlIHZlcnkgZXNzZW5jZSBvZiB2YWxvdXIsIGNhbG1uZXNzIGFuZCBpbnRyZXBpZGl0eS4gCgoKMTIzMC7CoMKgwqDCoApJdCB3aWxsIHByb2JhYmx5IGhlbHAgaGltIGluIGNvbmNlbnRyYXRpb24gaWYsIHdoaWxlIGRvaW5nIHRoaXMsIGhlIApyZXBlYXRzIHRvIGhpbXNlbGYgZmlybWx5IGFnYWluIGFuZCBhZ2FpbiBzdWNoIHdvcmRzIGFzOiDvv71Db3VyYWdlLCBjb25maWRlbmNlLCAKaW4gdGhlIE5hbWUgb2YgdGhlIE1hc3Rlcizvv70g77+9V2hlcmUgdGhpcyBvYmplY3QgaXMsIG1heSBubyBmZWFyIGVudGVyLO+/vSBvciBhbnkgCm90aGVycyBleHByZXNzaW5nIGEgc2ltaWxhciBpZGVhLiBMZXQgaGltIGRvIHRoaXMgZm9yIGEgZmV3IG1pbnV0ZXMsIG5ldmVyIAphbGxvd2luZyBoaXMgYXR0ZW50aW9uIHRvIHN3ZXJ2ZSBmb3IgYSBtb21lbnQsIGFuZCBoZSBuZWVkIGhhdmUgbm8gc2hhZGUgb2YgCmRvdWJ0IHRoYXQgaGUgaGFzIG1hZGUgYSByZWFsbHkgZWZmZWN0aXZlIHRhbGlzbWFuLiAKCgoxMjMxLsKgwqDCoMKgClRoaXMgcHJvY2VzcyB3aWxsIHByb2JhYmx5IG9jY3VweSB0aGUgdHlybyBmb3Igc29tZSB0aW1lLCBidXQgYSBtYW4gd2hvIAppcyBhY2N1c3RvbWVkIHRvIGl0IGRvZXMgaXQgcXVpY2tseSBhbmQgZWFzaWx5LiBUaGUgdHJhaW5lZCBvY2N1bHRpc3QgbWFrZXMgCmNvbnN0YW50IHVzZSBvZiB0aGlzIHBvd2VyIGFzIGEgbWVhbnMgb2YgaGVscGluZyB0aG9zZSB3aXRoIHdob20gaGUgY29tZXMgaW50byAKY29udGFjdDsgaGUgbmV2ZXIgZGVzcGF0Y2hlcyBhIGxldHRlciwgb3IgZXZlbiBhIHBvc3RjYXJkLCB3aXRob3V0IHRoaW5raW5nIHdoYXQgCmdvb2QgZ2lmdCBvZiByZWZyZXNoaW5nLCBjb25zb2xpbmcgb3Igc3RyZW5ndGhlbmluZyBtYWduZXRpc20gaGUgY2FuIHNlbmQgd2l0aCAKaXQuIEhlIGhhcyBhdCBoaXMgY29tbWFuZCBtYW55IG90aGVyIHdheXMgb2YgbWFraW5nIGEgdGFsaXNtYW4gYmVzaWRlcyB0aGF0IAp3aGljaCBJIGhhdmUgZGVzY3JpYmVkOyBwZXJoYXBzIGl0IG1heSBoZWxwIHRvd2FyZHMgYSBmdWxsZXIgY29tcHJlaGVuc2lvbiBvZiAKdGhlIHN1YmplY3QgaWYgSSBlbnVtZXJhdGUgc29tZSBvZiB0aGVtLCBldmVuIHRob3VnaCB0aGV5IGFyZSBxdWl0ZSBiZXlvbmQgdGhlIApyZWFjaCBvZiB0aGUgb3JkaW5hcnkgc3R1ZGVudC4gCgoKMTIzMi7CoMKgwqDCoApWQVJJRVRJRVMgT0YgVEFMSVNNQU5TIAoKCjEyMzMuwqDCoMKgwqAKQW11bGV0cyBhcmUgb2YgYWxsIHNvcnRzIGFuZCBraW5kcy0tIGxpdGVyYWxseSBtYW55IHRob3VzYW5kcyBvZiBraW5kcy0tIApidXQgdGhleSBtYXkgYmUgYXJyYW5nZWQgZm9yIG91ciBwdXJwb3NlcyBpbnRvIGZvdXIgY2xhc3Nlcywgd2hpY2ggd2Ugd2lsbCBjYWxsIApyZXNwZWN0aXZlbHkgZ2VuZXJhbCwgYWRhcHRlZCwgZW5zb3VsZWQgYW5kIGxpbmtlZC4gCgoKMTIzNC7CoMKgwqDCoApHZW5lcmFsLiBUaGUgbWV0aG9kIHdoaWNoIEkgaGF2ZSBzdWdnZXN0ZWQgYWJvdmUgcHJvZHVjZXMgYSAKdGFsaXNtYW4gb2YgdGhpcyBkZXNjcmlwdGlvbi4gVGhlIHRyYWluZWQgbWFuIG5hdHVyYWxseSBvYnRhaW5zIHdpdGggbGVzcyBsYWJvdXIgCmEgYmV0dGVyIHJlc3VsdCwgbm90IG9ubHkgYmVjYXVzZSBoZSBrbm93cyBob3cgdG8gdXNlIGhpcyB3aWxsIGVmZmVjdGl2ZWx5LCBidXQgCmJlY2F1c2UgaGUgaGFzIGxlYXJudCB0byBzZWxlY3QgdGhlIG1vc3Qgc3VpdGFibGUgbWF0ZXJpYWxzOyBjb25zZXF1ZW50bHkgdGhlIAppbmZsdWVuY2Ugb2YgaGlzIGFtdWxldCBpcyBzdHJvbmdlciwgYW5kIGxhc3RzIGZvciBtYW55IHllYXJzIGluc3RlYWQgb2YgcGVyaGFwcyAKZm9yIGEgZmV3IG1vbnRocy4gVGhpcyBmb3JtIG9mIHRhbGlzbWFuIGlzIHF1aXRlIHNpbXBsZTsgaXRzIGJ1c2luZXNzIGlzIHRvIHBvdXIgCm91dCBhIHN0ZWFkeSBzdHJlYW0gb2YgdW5kdWxhdGlvbnMgZXhwcmVzc2luZyB0aGUgcXVhbGl0eSB3aXRoIHdoaWNoIGl0IGlzIApjaGFyZ2VkLCBhbmQgaXQgd2lsbCBjb250aW51ZSB0byBkbyB0aGlzIHdpdGggdW5kaW1pbmlzaGVkIHZpZ291ciBmb3IgYSBwZXJpb2QgCnRoZSBsZW5ndGggb2Ygd2hpY2ggZGVwZW5kcyB1cG9uIHRoZSBmb3JjZSBvcmlnaW5hbGx5IHB1dCBpbnRvIGl0LiAKCgoxMjM1LsKgwqDCoMKgCjIgLiBBZGFwdGVkLiBUaGUgYWRhcHRlZCBhbXVsZXQgaXMgb25lIHRoYXQgaGFzIGJlZW4gY2FyZWZ1bGx5IApwcmVwYXJlZCB0byBmaXQgYSBwYXJ0aWN1bGFyIHBlcnNvbi4gSXRzIG1ha2VyIHN0dWRpZXMgdGhlIG1hbiBmb3Igd2hvbSBpdCBpcyAKaW50ZW5kZWQsIGFuZCBub3RlcyBjYXJlZnVsbHkgdGhlIGRlZmljaWVuY2llcyBpbiBoaXMgbWVudGFsLCBhc3RyYWwgYW5kIGV0aGVyaWMgCmJvZGllcy4gVGhlbiBoZSBjdWxscyBmcm9tIHRoZSBtYXR0ZXIgb2YgdGhlIHZhcmlvdXMgcGxhbmVzIHRoZSBpbmdyZWRpZW50cyBvZiAKaGlzIHRhbGlzbWFuLCBqdXN0IGFzIGEgcGh5c2ljaWFuIHNlbGVjdHMgdGhlIGRydWdzIHRvIGNvbXBvdW5kIGludG8gYSAKcHJlc2NyaXB0aW9uLCBjaG9vc2luZyBhIGNlcnRhaW4gdHlwZSBvZiBlc3NlbmNlIGluIG9yZGVyIHRvIHJlcHJlc3MgYW4gCnVuZGVzaXJhYmxlIGFzdHJhbCB0ZW5kZW5jeSwgYW5vdGhlciBpbiBvcmRlciB0byBzdGltdWxhdGUgdGhlIHNsdWdnaXNoIGFjdGlvbiAKb2Ygc29tZSBkZWZlY3RpdmUgZGVwYXJ0bWVudCBvZiBtZW50YWwgYWN0aXZpdHksIGFuZCBzbyBvbi4gVGh1cyBoZSBwcm9kdWNlcyBhbiAKYW11bGV0IGFjY3VyYXRlbHkgYWRhcHRlZCB0byB0aGUgbmVlZHMgb2YgYSBwYXJ0aWN1bGFyIHBlcnNvbiwgYW5kIGNhcGFibGUgb2YgCmRvaW5nIGZvciB0aGF0IHBlcnNvbiBlbm9ybW91c2x5IG1vcmUgdGhhbiBhIGdlbmVyYWwgdGFsaXNtYW4gY2FuIGRvOyBidXQgaXQgCndvdWxkIGJlIG9mIGxpdHRsZSB1c2UgdG8gYW55b25lIGVsc2UgYnV0IHRoZSBtYW4gZm9yIHdob20gaXQgaXMgaW50ZW5kZWQuIEl0IGlzIApsaWtlIGEgc2tpbGxmdWxseS1tYWRlIGtleSB3aXRoIG1hbnkgd2FyZHMsIHdoaWNoIGV4YWN0bHkgZml0cyBpdHMgbG9jaywgYnV0IAp3aWxsIG5vdCBvcGVuIGFueSBvdGhlcjsgd2hpbGUgYSBnZW5lcmFsIHRhbGlzbWFuIG1heSBiZSBjb21wYXJlZCB0byBhIHNrZWxldG9uIAprZXksIHdoaWNoIHdpbGwgb3BlbiBtYW55IGluZmVyaW9yIGxvY2tzLCBidXQgZG9lcyBub3QgcGVyZmVjdGx5IHN1aXQgYW55LiAKCgoxMjM2LsKgwqDCoMKgCjMgLiBFbnNvdWxlZC4gU29tZXRpbWVzIGl0IGlzIGRlc2lyZWQgdG8gZXN0YWJsaXNoIGEgY2VudHJlIG9mIApyYWRpYXRpb24gd2hpY2gsIGluc3RlYWQgb2YgYWN0aW5nIGZvciBhIGZldyBzY29yZSB5ZWFycyBhdCBtb3N0LCBzaGFsbCBjb250aW51ZSAKaXRzIG91dHBvdXJpbmcgdGhyb3VnaCB0aGUgY2VudHVyaWVzLiBJbiB0aGlzIGNhc2UgaXQgaXMgbm90IGVub3VnaCB0byBjaGFyZ2UgCnRoZSBzZWxlY3RlZCBvYmplY3Qgd2l0aCBhIGRvc2Ugb2YgbWFnbmV0aWMgZm9yY2UtLSBmb3IsIGhvd2V2ZXIgbGFyZ2UgdGhhdCBkb3NlIAptYXkgYmUsIGl0IG11c3Qgc29tZSB0aW1lIGJlIGV4aGF1c3RlZDsgdG8gcHJvZHVjZSB0aGlzIG1vcmUgcGVybWFuZW50IHJlc3VsdCB3ZSAKbXVzdCBicmluZyBpbnRvIHBsYXkgc29tZSBmb3JtIG9mIGxpZmU7IGFuZCBmb3IgdGhpcyBwdXJwb3NlIG9uZSBvZiB0d28gbWV0aG9kcyAKaXMgdXN1YWxseSBhZG9wdGVkLiAKCgoxMjM3LsKgwqDCoMKgClRoZSBmaXJzdCBpcyB0byBpbmNsdWRlIGluIHRoZSBwaHlzaWNhbCBjaGFybSBhIG1pbnV0ZSBmcmFnbWVudCBvZiBvbmUgb2YgCnRob3NlIGhpZ2hlciBtaW5lcmFscyB3aGljaCBhcmUgc3VmZmljaWVudGx5IGFsaXZlIHRvIHRocm93IG91dCBhIGNlYXNlbGVzcyAKc3RyZWFtIG9mIHBhcnRpY2xlcy4gV2hlbiB0aGF0IGlzIGRvbmUsIHRoZSBzdG9yZSBvZiBmb3JjZSBwb3VyZWQgaW50byB0aGUgCmFtdWxldCB3aWxsIGxhc3QgYWxtb3N0IGluZGVmaW5pdGVseSBsb25nZXIsIGZvciBpbnN0ZWFkIG9mIHJhZGlhdGluZyBzdGVhZGlseSAKaW4gYWxsIGRpcmVjdGlvbnMgb24gaXRzIG93biBhY2NvdW50LCBpdCByZW1haW5zIHNlbGYtY29udGFpbmVkLCBhbmQgY2hhcmdlcyAKb25seSB0aGUgcGFydGljbGVzIHdoaWNoIHBhc3MgdGhyb3VnaCBpdC4gVGhlIHdvcmsgb2YgZGlzdHJpYnV0aW9uIGlzIHRodXMgZG9uZSAKYnkgdGhlIG1pbmVyYWwsIGFuZCBhIHZhc3QgZWNvbm9teSBvZiBlbmVyZ3kgaXMgdGhlcmVieSBzZWN1cmVkLiAKCgoxMjM4LsKgwqDCoMKgClRoZSBzZWNvbmQgcGxhbiBpcyBzbyB0byBhcnJhbmdlIHRoZSBpbmdyZWRpZW50cyBvZiB0aGUgdGFsaXNtYW4gYXMgdG8gCm1ha2UgaXQgYSBtZWFucyBvZiBtYW5pZmVzdGF0aW9uIGZvciBhbnkgb25lIG9mIGNlcnRhaW4gY29tcGFyYXRpdmVseSAKdW5kZXZlbG9wZWQgb3JkZXJzIG9mIG5hdHVyZS1zcGlyaXRzLiBUaGVyZSBhcmUgdHJpYmVzIG9mIHRoZXNlIGNyZWF0dXJlcyB3aGljaCwgCnRob3VnaCBmdWxsIG9mIGVuZXJneSBhbmQgc3Ryb25nbHkgZGVzaXJvdXMgdG8gZG8gc29tZXRoaW5nIHdpdGggaXQsIGNhbm5vdCAKZXhwcmVzcyB0aGVtc2VsdmVzIHVubGVzcyB0aGV5IGNhbiBmaW5kIHNvbWUgc29ydCBvZiBvdXRsZXQuIEl0IGlzIHBvc3NpYmxlIHNvIAp0byBtYWduZXRpc2UgYW4gYW11bGV0IGFzIHRvIG1ha2UgaXQgcHJlY2lzZWx5IHRoZSBraW5kIG9mIG91dGxldCByZXF1aXJlZCwgYW5kIAp0aHVzIHRvIGVuc3VyZSB0aGUgc3RlYWR5IG91dGZsb3cgdGhyb3VnaCBpdCBvZiBhIHN0cmVhbSBvZiBlbmVyZ3kgYXQgaGlnaCAKcHJlc3N1cmUsIHdoaWNoIG1heSBsYXN0IGZvciB0aG91c2FuZHMgb2YgeWVhcnMsIHRvIHRoZSBpbnRlbnNlIGRlbGlnaHQgb2YgdGhlIApuYXR1cmUtc3Bpcml0cyBhbmQgdGhlIGdyZWF0IGJlbmVmaXQgb2YgYWxsIHdobyBhcHByb2FjaCB0aGUgbWFnbmV0aXNlZCBjZW50cmUuCgoKMTIzOS7CoMKgwqDCoApMaW5rZWQuIFRoZSBsaW5rZWQgdGFsaXNtYW4gZGlmZmVycyBjb21wbGV0ZWx5IGZyb20gdGhlIG90aGVyIApraW5kcyBpbiBvbmUgaW1wb3J0YW50IHBhcnRpY3VsYXIuIEFsbCB0aG9zZSBwcmV2aW91c2x5IGRlc2NyaWJlZCBhcmUgbWFkZSBhbmQgCnNldCBnb2luZyBieSB0aGVpciBjcmVhdG9ycywgYW5kIHRoZW4gbGVmdCB0byBydW4gdGhlaXIgY291cnNlIGFuZCBsaXZlIHRoZWlyIApsaWZlLCBqdXN0IGFzIGEgY2xvY2ttYWtlciBjb25zdHJ1Y3RzIGEgdGltZXBpZWNlIGFuZCB0aGVuIHNlbGxzIGl0IHRvIGEgCmN1c3RvbWVyIGFuZCBrbm93cyBubyBtb3JlIGFib3V0IGl0LiBCdXQgdGhlIGNsb2NrbWFrZXIgc29tZXRpbWVzIGNob29zZXMgdG8gCnJlbWFpbiBpbiB0b3VjaCB3aXRoIGhpcyBtYXN0ZXJwaWVjZSwgYW5kIHVuZGVydGFrZXMgdG8ga2VlcCBpdCB3b3VuZCBhbmQgaW4gCm9yZGVyOyBhbmQgdGhpcyBjb3JyZXNwb25kcyB0byB0aGUgYXJyYW5nZW1lbnQgbWFkZSBpbiB0aGUgY2FzZSBvZiBhIGxpbmtlZCAKdGFsaXNtYW4uIEluc3RlYWQgb2YgbWVyZWx5IGxvYWRpbmcgdGhlIG9iamVjdCB3aXRoIGluZmx1ZW5jZSBvZiBhIGNlcnRhaW4gdHlwZSwgCnRoZSBvcGVyYXRvciB3aGVuIGhlIG1hZ25ldGlzZXMgaXQgYnJpbmdzIGl0IGludG8gY2xvc2UgcmFwcG9ydCB3aXRoIApoaW1zZWxmLCBzbyB0aGF0IGl0IG1heSBiZWNvbWUgYSBraW5kIG9mIG91dHBvc3Qgb2YgaGlzIGNvbnNjaW91c25lc3MsIGEgc29ydCBvZiAKdGVsZXBob25lLXJlY2VpdmVyIGFsd2F5cyBjb25uZWN0ZWQgd2l0aCBoaW0sIHRocm91Z2ggd2hpY2ggaGUgY2FuIHJlYWNoIHRoZSAKaG9sZGVyIG9yIGJlIHJlYWNoZWQgYnkgaGltLiAKCgoxMjQwLsKgwqDCoMKgCkFuIGFtdWxldCBvZiB0aGlzIHR5cGUgZG9lcyBub3Qgd29yayBtZWNoYW5pY2FsbHkgdXBvbiB0aGUgZ3lyb3Njb3BlIApwcmluY2lwbGUsIGFzIHRoZSBvdGhlcnMgZG87IG9yIHBlcmhhcHMgSSBzaG91bGQgcmF0aGVyIHNheSBpdCBoYXMgYSBzbGlnaHQgCmFjdGlvbiBvZiB0aGF0IHNvcnQsIGJlY2F1c2UgaXQgc28gc3Ryb25nbHkgc3VnZ2VzdHMgdGhlIHByZXNlbmNlIG9mIGl0IGNyZWF0b3IgCnRoYXQgaXQgb2Z0ZW4gYWN0cyBhcyBhIGRldGVycmVudCwgcHJldmVudGluZyB0aGUgd2VhcmVyIGZyb20gZG9pbmcgd2hhdCBoZSAKd291bGQgbm90IGxpa2UgdGhlIG1ha2VyIHRvIHNlZSBoaW0gZG87IGJ1dCBpdHMgcHJpbmNpcGFsIGFjdGlvbiBpcyBvZiBxdWl0ZSAKYW5vdGhlciBraW5kLiBJdCBtYWtlcyBhIGxpbmsgdGhyb3VnaCB3aGljaCB0aGUgd2VhcmVyIGNhbiBhdCBhIGNyaXRpY2FsIG1vbWVudCAKc2VuZCBhIGNyeSBmb3IgaGVscCB0byBpdHMgYnVpbGRlciwgd2hvIHdpbGwgaW5zdGFudGx5IGZlZWwgdGhlIGFwcGVhbCBhbmQgCnJlc3BvbmQgYnkgYW4gb3V0cG91cmluZyBvZiBzdHJlbmd0aCBvZiB3aGF0ZXZlciB0eXBlIG1heSBiZSByZXF1aXJlZC4gCgoKMTI0MS7CoMKgwqDCoApJdHMgbWFudWZhY3R1cmVyIGNhbiBhbHNvIHVzZSBpdCBhcyBhIGNoYW5uZWwgdGhyb3VnaCB3aGljaCBoZSBjYW4gc2VuZCAKcGVyaW9kaWMgd2F2ZXMgb2YgaW5mbHVlbmNlLCBhbmQgc28gYWRtaW5pc3RlciBhIGNvdXJzZSBvZiB0cmVhdG1lbnQtLSBhIGtpbmQgb2YgCmVtb3Rpb25hbCBvciBtZW50YWwgbWFzc2FnZS4gU3VjaCBhIG1ldGhvZCBvZiBoYW5kbGluZyBhIGNhc2UgKEkgYmVsaWV2ZSBvdXIgCkNocmlzdGlhbiBTY2llbmNlIGZyaWVuZHMgY2FsbCBpdCDvv71hYnNlbnQgdHJlYXRtZW5077+9KSBtYXkgYmUgdW5kZXJ0YWtlbiB3aXRob3V0IAphbiBhbXVsZXQsIG1lcmVseSBieSBwcm9qZWN0aW5nIGFzdHJhbCBhbmQgbWVudGFsIGN1cnJlbnRzOyBidXQgYSB0YWxpc21hbiBtYWtlcyAKdGhlIHdvcmsgZWFzaWVyLCBhbmQgZW5hYmxlcyB0aGUgb3BlcmF0b3IgdG8gZGVhbCBtb3JlIHJlYWRpbHkgd2l0aCB0aGUgZXRoZXJpYyAKZG91YmxlIG9mIHRoZSBzdWJqZWN0LiAKCgoxMjQyLsKgwqDCoMKgClVzdWFsbHkgdGhlIGxpbmsgaXMgbWFkZSBvbmx5IGluIHRoZSBwaHlzaWNhbCwgYXN0cmFsIGFuZCBsb3dlciBtZW50YWwgCndvcmxkcywgYW5kIGlzIHRoZXJlZm9yZSBjb25maW5lZCB0byB0aGUgcGVyc29uYWxpdHkgb2YgaXRzIGNvbnN0cnVjdG9yOyBidXQgCnRoZXJlIGFyZSBpbnN0YW5jZXMgd2hlbiBhIEdyZWF0IE9uZSBoYXMgY2hvc2VuIHRvIGxpbmsgYSBwaHlzaWNhbCB0YWxpc21hbiB0byAKSGltc2VsZiBpbiBIaXMgY2F1c2FsIGJvZHksIGFuZCB0aGVuIGl0cyBpbmZsdWVuY2UgbGFzdHMgdGhyb3VnaCB0aGUgYWdlcy4gVGhpcyAKd2FzIGRvbmUgaW4gdGhlIGNhc2Ugb2YgdGhlIHBoeXNpY2FsIG9iamVjdHMgYnVyaWVkIGF0IHZhcmlvdXMgcG9pbnRzIG9mIGZ1dHVyZSAKaW1wb3J0YW5jZSBieSBBcG9sbG9uaXVzIG9mIFR5YW5hLiAKCgoxMjQzLsKgwqDCoMKgCkRFTUFHTkVUSVNBVElPTiAKCgoxMjQ0LsKgwqDCoMKgCkl0IG5vdCBpbmZyZXF1ZW50bHkgb2NjdXJzIHRoYXQgaXQgaXMgZGVzaXJhYmxlIHRvIGRlbWFnbmV0aXNlIG9iamVjdHMgCndoaWNoIGFyZSBsYXJnZXIgdGhhbiB0aG9zZSBpbnN0YW5jZWQgYWJvdmUuIEluIHN1Y2ggY2FzZXMgb25lIG1heSBob2xkIHRoZSB0d28gCmhhbmRzIGF0IHRoZSByZXF1aXNpdGUgZGlzdGFuY2UgYXBhcnQsIGFuZCBpbWFnaW5lIGEgYnJvYWQgYmFuZCBvZiBldGhlcmljIAptYXR0ZXIgZXh0ZW5kaW5nIGJldHdlZW4gdGhlbSwgd2l0aCB3aGljaCB0aGUgcHJldmlvdXMgbWFnbmV0aXNtIGNhbiBiZSBkcmVkZ2VkIApvdXQgYXMgYmVmb3JlLiBBbm90aGVyIHBsYW4gaXMgdG8gaG9sZCB0aGUgdHdvIGhhbmRzIG9uZSBvbiBlYWNoIHNpZGUgb2YgdGhlIApvYmplY3QsIGFuZCBzZW5kIGEgc3Ryb25nIHN0cmVhbSBvZiBldGhlcmljIG1hdHRlciB0aHJvdWdoIGl0IGZyb20gb25lIGhhbmQgdG8gCnRoZSBvdGhlciwgdGh1cyB3YXNoaW5nIGF3YXkgdGhlIHVuZGVzaXJlZCBpbmZsdWVuY2UuIFRoZSBzYW1lIGZvcmNlIGNhbiBvZnRlbiAKYmUgZW1wbG95ZWQgaW4gdGhlIHNhbWUgd2F5IHRvIHJlbGlldmUgcGFpbi4gQSBoZWFkYWNoZSwgZm9yIGV4YW1wbGUsIGlzIHVzdWFsbHkgCmVpdGhlciBjYXVzZWQgb3IgYWNjb21wYW5pZWQgYnkgYSBjb25nZXN0aW9uIG9mIGV0aGVyaWMgbWF0dGVyIGluIHRoZSBicmFpbiwgYW5kIAppdCBjYW4gb2Z0ZW4gYmUgY3VyZWQgYnkgdGhhdCBzYW1lIHBsYW4gb2YgcHV0dGluZyB0aGUgaGFuZHMgb25lIG9uIGVhY2ggc2lkZSBvZiAKdGhlIHN1ZmZlcmVyJyBzIHRlbXBsZXMgYW5kIHdhc2hpbmcgYXdheSB0aGUgY29uZ2VzdGVkIG1hdHRlciBieSBhbiBlZmZvcnQgb2YgCnRoZSB3aWxsLiAKCgoxMjQ1LsKgwqDCoMKgCkFub3RoZXIgdXNlIHRvIHdoaWNoIHRoZSBwb3dlciBvZiBkZW1hZ25ldGlzYXRpb24gY2FuIGJlIHB1dCBpcyB0byBjbGVhciAKb2JqZWN0aW9uYWJsZSBpbmZsdWVuY2VzIG91dCBvZiBhIHJvb20uIE9uZSBtYXkgaGF2ZSBhIHZpc2l0b3Igd2hvIGxlYXZlcyBhbiAKdW5wbGVhc2FudCBhdG1vc3BoZXJlIGJlaGluZCBoaW07IG9yIG9uZSBtYXkgZmluZCB1bmNvbWZvcnRhYmxlIGFzdHJhbCAKY29uZGl0aW9ucyBwcmV2YWlsaW5nIGluIG9uZScgcyBhcGFydG1lbnQgYXQgYSBob3RlbDsgYW5kIGlmIHN1Y2ggYW4gZW1lcmdlbmN5IAphcmlzZXMsIGl0IGlzIHVzZWZ1bCB0byBrbm93IGhvdyB0byBkZWFsIHdpdGggaXQuIE9uZSBwcmFjdGlzZWQgaW4gdGhlc2UgbWlsZCAKZm9ybXMgb2YgbWFnaWMgd291bGQgbWFuYWdlIHRoZSBidXNpbmVzcyBpbiBhIGZldyBtb21lbnRzIGJ5IHRoZSBleGVyY2lzZSBvZiBoaXMgCnRyYWluZWQgd2lsbDsgYnV0IHRoZSB5b3VuZ2VyIHN0dWRlbnQgd2lsbCBwcm9iYWJseSBmaW5kIGl0IGJldHRlciB0byBlbXBsb3kgCmludGVybWVkaWF0ZSBtZWFucywgcHJlY2lzZWx5IGFzIHRoZSBDYXRob2xpYyBDaHVyY2ggZG9lcy4gCgoKMTI0Ni7CoMKgwqDCoApUaGUgY3ViaWMgY29udGVudCBvZiBldmVuIGEgc21hbGwgcm9vbSBpcyB0b28gZ3JlYXQgZm9yIHRoZSBlbXBsb3ltZW50IG9mIAp0aGUgZHJlZGdpbmcgdGFjdGljcyBwcmV2aW91c2x5IHJlY29tbWVuZGVkLCBzbyB3ZSBtdXN0IGludm9rZSB0aGUgZ3JlYXQgCnByaW5jaXBsZSBvZiBzeW1wYXRoeSBhbmQgYW50aXBhdGh5LCBhbmQgc2V0IHVwIHdpdGhpbiB0aGUgcm9vbSBhIHNlcmllcyBvZiAKdmlicmF0aW9ucyBzbyBob3N0aWxlIHRvIHRoZSBldmlsIGluZmx1ZW5jZSB0aGF0IHRoZSBsYXR0ZXIgaXMgZG9taW5hdGVkIG9yIApkcml2ZW4gZm9ydGguIFRvIGNyZWF0ZSBzdWNoIGFuIHVuZHVsYXRpb24gaXMgbm90IGRpZmZpY3VsdDsgYnV0IG1lYW5zIG11c3QgYmUgCmZvdW5kIGZvciBzcHJlYWRpbmcgaXQgcmFwaWRseSBhbGwgb3ZlciB0aGUgcm9vbS4gT25lIHJlYWR5IG1ldGhvZCBpcyB0aGUgCmJ1cm5pbmcgb2YgaW5jZW5zZSBvciBwYXN0aWxsZXM7IGFub3RoZXIgaXMgc3ByaW5rbGluZyBvZiB3YXRlcjsgYnV0IGJvdGggCmluY2Vuc2UgYW5kIHdhdGVyIG11c3QgZmlyc3QgYmUgcGFzc2VkIHRocm91Z2ggdGhlIHByb2Nlc3MgcmVjb21tZW5kZWQgZm9yIHRoZSAKbWFraW5nIG9mIGEgdGFsaXNtYW4uIFRoZWlyIG9yaWdpbmFsIG1hZ25ldGlzbSBtdXN0IGJlIHJlbW92ZWQsIGFuZCB0aGV5IG11c3QgYmUgCmxvYWRlZCB3aXRoIHRoZSB0aG91Z2h0IG9mIHB1cml0eSBhbmQgcGVhY2UuIElmIHRoYXQgYmUgdGhvcm91Z2hseSBkb25lLCB3aGVuIAp0aGUgaW5jZW5zZSBpcyBidXJuZWQsIGl0cyBwYXJ0aWNsZXMgKGVhY2ggYmVhcmluZyB0aGUgZGVzaXJlZCBpbmZsdWVuY2UpIHdpbGwgCnF1aWNrbHkgYmUgZGlzc2VtaW5hdGVkIHRocm91Z2ggZXZlcnkgY3ViaWMgaW5jaCBvZiBhaXIgaW4gdGhlIHJvb207IG9yIGlmIHdhdGVyIApiZSB1c2VkIGFuZCBzcHJpbmtsZWQgYWJvdXQgdGhlIGNoYW1iZXIsIGVhY2ggZHJvcCBvZiBpdCB3aWxsIGF0IG9uY2UgYmVjb21lIGEgCmNlbnRyZSBvZiBhY3RpdmUgcmFkaWF0aW9uLiBBIHZhcG9yaXNlciBpcyBhbiBldmVuIG1vcmUgZWZmZWN0aXZlIG1ldGhvZCBvZiAKZGlzdHJpYnV0aW9uOyBhbmQgaWYgcm9zZS13YXRlciBiZSB1c2VkIGluc3RlYWQgb2Ygb3JkaW5hcnkgd2F0ZXIsIHRoZSB3b3JrIG9mIAp0aGUgc3R1ZGVudCB3aWxsIGJlIGNvbnNpZGVyYWJseSBmYWNpbGl0YXRlZC4gCgoKMTI0Ny7CoMKgwqDCoApUaGUgbWV0aG9kIG9mIGFjdGlvbiBvZiB0aGVzZSBldGhlcmljIG9yIGFzdHJhbCBkaXNpbmZlY3RhbnRzIGlzIG9idmlvdXMuIApUaGUgZGlzdHVyYmluZyBpbmZsdWVuY2Ugb2Ygd2hpY2ggd2UgZGVzaXJlIHRvIHJpZCBvdXJzZWx2ZXMgZXhwcmVzc2VzIGl0c2VsZiBpbiAKZXRoZXJpYyBhbmQgYXN0cmFsIHdhdmVzIG9mIGEgY2VydGFpbiBsZW5ndGguIE91ciBtYWduZXRpYyBlZmZvcnRzIGZpbGwgdGhlIHJvb20gCndpdGggYW5vdGhlciBzZXQgb2Ygd2F2ZXMsIGRpZmZlcmVudCBpbiBsZW5ndGggYW5kIG1vcmUgcG93ZXJmdWwsIGJlY2F1c2UgdGhleSAKaGF2ZSBiZWVuIGludGVudGlvbmFsbHkgc2V0IHN3aW5naW5nLCB3aGljaCBwcm9iYWJseSB0aGUgb3RoZXJzIHdlcmUgbm90LiBUaGUgCnR3byBzZXRzIG9mIGluaGFybW9uaW91cyB2aWJyYXRpb25zIGNhbm5vdCBjby1leGlzdCwgYW5kIHNvIHRoZSBzdHJvbmdlciAKb3ZlcnBvd2VycyBhbmQgZXh0aW5ndWlzaGVzIHRoZSB3ZWFrZXIuIAoKCjEyNDguwqDCoMKgwqAKVGhlc2UgYXJlIHNvbWUgb2YgdGhlIHdheXMgaW4gd2hpY2ggdGhlIGZvcmNlIHRoYXQgZHdlbGxzIHdpdGhpbiBtYW4sIHRoZSAKZm9yY2UgdGhhdCBmbG93cyB0aHJvdWdoIG1hbiwgbWF5IGJlIHVzZWQuIEluIHRoaXMgY2FzZSwgYXMgaW4gZXZlcnkgb3RoZXIsIAprbm93bGVkZ2UgaXMgcG93ZXIsIGluIHRoaXMgY2FzZSwgYXMgaW4gZXZlcnkgb3RoZXIsIGFkZGl0aW9uYWwgcG93ZXIgbWVhbnMgCmFkZGl0aW9uYWwgcmVzcG9uc2liaWxpdHkgYW5kIGFkZGl0aW9uYWwgb3Bwb3J0dW5pdHkuIElmIHlvdSBjYW4gcmVhZGlseSBkZXZlbG9wIAp0aGlzIHBvd2VyLCBpZiB5b3UgY2FuIGRvIHRoZXNlIHRoaW5ncyBxdWlja2x5IGFuZCBlYXNpbHksIHNvIG11Y2ggdGhlIGJldHRlciAKZm9yIHlvdSwgc28gbG9uZyBhcyB5b3UgdXNlIHRoaXMgYWR2YW50YWdlIHVuc2VsZmlzaGx5LCBhbmQgbWFrZSB0aGUgd29ybGQgYnkgCml0cyBtZWFucyBhIGxpdHRsZSBoYXBwaWVyLCBhIGxpdHRsZSBiZXR0ZXIsIGEgbGl0dGxlIGNsZWFuZXIgYXMgdGhlIHJlc3VsdCBvZiAKeW91ciBlZmZvcnRzLiAKCgoxMjQ5LsKgwqDCoMKgCkRPIExJVFRMRSBUSElOR1MgV0VMTCAKCgoxMjUwLsKgwqDCoMKgClJlbWVtYmVyIHRoZSBzZWNvbmQgbWF4aW0tLSB0aGF0IGV2ZXJ5dGhpbmcgc2hhbGwgYmUgZG9uZSBhcyBwZXJmZWN0bHkgYXMgCndlIGNhbiBkbyBpdC4gQ2hhcmdlIHlvdXIgbGV0dGVyIHdpdGggbWFnbmV0aXNtIGFuZCBtYWtlIGEgdGFsaXNtYW4gb2YgaXQsIGJ5IAphbGwgbWVhbnM7IHlvdSB3aWxsIGRvIGdyZWF0IGdvb2QgdGhlcmVieTsgYnV0IGRvIG5vdCBmb3JnZXQgdGhhdCB0aGUgbWVyZSAKcGh5c2ljYWwgaGFuZHdyaXRpbmcgbXVzdCBiZSBwZXJmZWN0IGFsc28tLSBmaXJzdCwgb3V0IG9mIGNvdXJ0ZXN5IHRvIHRoZSAKcmVjaXBpZW50LCBhbmQgc2Vjb25kbHksIGJlY2F1c2UgYWxsIHdvcmsgZG9uZSBmb3IgdGhlIE1hc3RlciBtdXN0IGJlIGRvbmUgd2l0aCAKdGhlIHV0bW9zdCBjYXJlLCBldmVuIHRvIHRoZSBtaW51dGVzdCBkZXRhaWwuIEFuZCBhcyBhbGwgb3VyIHdvcmsgaXMgCndvcmsgZm9yIEhpbSwgZXhlY3V0ZWQgaW4gSGlzIG5hbWUgYW5kIHRvIEhpcyBnbG9yeSwgdGhhdCBtZWFucyB0aGF0IG5vdGhpbmcgCm11c3QgZXZlciBiZSBkb25lIGNhcmVsZXNzbHkuIEluIHRoaXMsIHRvbywgdW5zZWxmaXNobmVzcyBtYXkgYmUgYXBwbGllZDsgbm8gb25lIApoYXMgdGhlIHJpZ2h0IHRvIGNhdXNlIHRyb3VibGUgdG8gYW5vdGhlciBieSBpbGxlZ2libGUgaGFuZHdyaXRpbmctLSB0byBzYXZlIGEgCmZldyBtb21lbnRzIG9mIGhpcyBvd24gdGltZSBieSB3YXN0aW5nIG1hbnkgbWludXRlcyBvZiBhbm90aGVyJyBzLiAKCgoxMjUxLsKgwqDCoMKgCldlIG11c3Qgbm90IHRoaW5rIHRoYXQgYmVjYXVzZSB3ZSBrbm93IG1vcmUgb2YgdGhlIGhpZGRlbiBzaWRlIG9mIHRoaW5ncyAKdGhhbiBvdGhlcnMsIGFuZCBzbyBhcmUgYWJsZSB0byBhZGQgdW5leHBlY3RlZCBibGVzc2luZ3MgdG8gZGFpbHkgYWN0cywgd2UgYXJlIAp0aGVyZWJ5IGFic29sdmVkIGZyb20gZG9pbmcgdGhlIG9yZGluYXJ5IHBhcnQgb2YgdGhvc2UgYWN0cyB0byB0aGUgdmVyeSBiZXN0IG9mIApvdXIgYWJpbGl0eS4gTm90IHdvcnNlIGJ1dCBiZXR0ZXIgdGhhbiB0aGF0IG9mIG90aGVycyBtdXN0IG91ciB3b3JrIGJlLCBpbiBldmVyeSAKcmVzcGVjdCBhbmQgZnJvbSBldmVyeSBwb2ludCBvZiB2aWV3LCBmb3IgdGhlIGhvbm91ciBvZiB0aGUgTWFzdGVyIHdob20gd2UgCnNlcnZlLiBXaGF0IHRoZSB3b3JrIGlzIHRoYXQgSGUgZ2l2ZXMgdXMsIG1hdHRlcnMgbGl0dGxlOyB0aGF0IGl0IApzaG91bGQgYmUgbm9ibHkgZG9uZSBtYXR0ZXJzIHN1cHJlbWVseS4gQW5kIHRoZSBtYW4gd2hvLCBhbGwgaGlzIGxpZmUgdGhyb3VnaCwgCmRvZXMgdGhlIHNtYWxsLCBkYWlseSBkZXRhaWxzIHdlbGwgYW5kIGNhcmVmdWxseSwgd2lsbCBub3QgYmUgZm91bmQgd2FudGluZyB3aGVuIApzb21lIGRheSBoZSBzdWRkZW5seSBmaW5kcyBoaW1zZWxmIGZhY2UgdG8gZmFjZSB3aXRoIGEgZ3JlYXQgb3Bwb3J0dW5pdHkuIAoKCjEyNTIuwqDCoMKgwqAKVGhlIGxpdHRsZSB0aGluZ3MgaW4gbGlmZSB3ZWlnaCBtb3JlIHRoYW4gdGhlIGJpZyB0aGluZ3M7IHRoZXJlIGFyZSBzbyAKbWFueSBvZiB0aGVtLCBhbmQgaXQgaXMgc28gbXVjaCBtb3JlIGRpZmZpY3VsdCB0byBnbyBvbiBzdGVhZGlseSBkb2luZyB0aGVtLiAKU2FpbnQgQXVndXN0aW5lIHJlbWFya2VkOiDvv71NYW55IHRoZXJlIGJlIHdobyB3aWxsIGRpZSBmb3IgQ2hyaXN0LCBidXQgZmV3IHRoZXJlIApiZSB3aG8gd2lsbCBsaXZlIGZvciBIaW0u77+9IE1hbnkgb2YgdXMgd291bGQgaW5zdGFudGx5IGFuZCBnbGFkbHkgZG8gc29tZSBncmVhdCAKdGhpbmcgZm9yIHRoZSBNYXN0ZXI7IGJ1dCBIZSBkb2VzIG5vdCBjb21tb25seSBhc2sgZm9yIHRoYXQuIEhlIGFza3MgdXMgdG8gbGl2ZSAKb3VyIGRhaWx5IGxpZmUgbm9ibHksIG5vdCBmb3Igb3Vyc2VsdmVzIGJ1dCBmb3Igb3RoZXJzOyB0byBmb3JnZXQgb3Vyc2VsdmVzLCAKb25seSB0byByZW1lbWJlciB0aGUgZ29vZCBvZiBtYW5raW5kLiBMZXQgdXMgdGhlbiBmb3JtIHRoZSBoYWJpdCBvZiAKaGVscGZ1bG5lc3MtLSBmb3IgaXQgc29vbiBiZWNvbWVzIGEgaGFiaXQsIGxpa2UgZXZlcnl0aGluZyBlbHNlLiBJdCBjZXJ0YWlubHkgCm1ha2VzIGxpZmUgbW9yZSBpbnRlcmVzdGluZzsgYW5kLCBhYm92ZSBhbGwsIGl0IGJyaW5ncyB1cyBldmVyeSBkYXkgbmVhcmVyIHRvIApIaW0uIAoKCjEyNTMuwqDCoMKgwqAKV1JJVElORyBBIExFVFRFUiAKCgoxMjU0LsKgwqDCoMKgCkkgbWVudGlvbmVkIHNvbWUgcGFnZXMgYmFjayB0aGF0IGFuIG9jY3VsdGlzdCBuZXZlciBkZXNwYXRjaGVzIGEgbGV0dGVyIAp3aXRob3V0IHB1dHRpbmcgaW50byBpdCBzb21ldGhpbmcgb2Ygc3RyZW5ndGggYW5kIGVuY291cmFnZW1lbnQ7IGJ1dCBpdCBkb2VzIG5vdCAKbmVlZCBwZXJzb24gb2YgYSBncmVhdCBhZHZhbmNlbWVudCB0byBwZXJmb3JtIHNvIGVsZW1lbnRhcnkgYW4gYWN0IG9mIG1hZ2ljIGFzIAp0aGlzLiBBbnlvbmUgbWF5IGRvIGl0IHdpdGggYSBsaXR0bGUgdHJvdWJsZSwgd2hlbiBiZSB1bmRlcnN0YW5kcyBob3cgdGhlc2UgCmZvcmNlcyB3b3JrLiAKCgoxMjU1LsKgwqDCoMKgCldlIGFsbCBrbm93IHRoYXQgd2hlbiBhIHBzeWNob21ldHJpc3QgdGFrZXMgYSBsZXR0ZXIgaW50byBoaXMgaGFuZCBoZSBjYW4gCmRlc2NyaWJlIHRoZSBwZXJzb25hbCBhcHBlYXJhbmNlIG9mIHRoZSB3cml0ZXIsIHRoZSBjb25kaXRpb24gb2YgaGlzIG1pbmQgYXQgdGhlIAp0aW1lIG9mIHdyaXRpbmcsIHRoZSByb29tIGluIHdoaWNoIGhlIHdhcyBzaXR0aW5nLCBhbnkgb3RoZXIgcGVvcGxlIHdobyBoYXBwZW5lZCAKdG8gYmUgcHJlc2VudCwgYW5kIGV2ZW4gdGhlIHN1cnJvdW5kaW5nIHNjZW5lcnkuIAoKCjEyNTYuwqDCoMKgwqAKSXQgaXMgbWFuaWZlc3QsIHRoZXJlZm9yZSwgdGhhdCBhIGxldHRlciBicmluZ3Mgd2l0aCBpdCBtdWNoIG1vcmUgdGhhbiAKdGhlIG1lc3NhZ2Ugd3JpdHRlbiBpbiBpdCwgYW5kIHRob3VnaCBvbmx5IG9uZSB3aG8gaXMgZGV2ZWxvcGVkIGFzIGEgCnBzeWNob21ldHJpc3QgbWF5IGJlIGFibGUgdG8gc2Vuc2UgdGhpcyB3aXRoIHN1ZmZpY2llbnQgY2xlYXJuZXNzIHRvIHJlZHVjZSBpdCAKdG8gYWN0dWFsIHZpc2lvbiwgeWV0IGFuIGVmZmVjdCBvZiBzb21lIHNvcnQgbXVzdCBvYnZpb3VzbHkgYmUgcHJvZHVjZWQgZXZlbiAKdXBvbiB0aG9zZSB3aG8gZG8gbm90IGZ1bGx5IHNlZS4gVGhlIHZpYnJhdGlvbnMgdXBvbiB3aGljaCB0aGUgcHN5Y2hvbWV0cmlzdCcgcyAKb2JzZXJ2YXRpb25zIGFyZSBmb3VuZGVkIGFyZSB0aGVyZSwgd2hldGhlciB0aGVyZSBpcyBvciBpcyBub3QgYW55b25lIHByZXNlbnQgCndobyBjYW4gc2VlIGJ5IHRoZWlyIG1lYW5zLCBhbmQgdGhleSBtdXN0IGFmZmVjdCB0byBzb21lIGV4dGVudCBhbnlvbmUgd2l0aCB3aG9tIAp0aGV5IGNvbWUgZGlyZWN0bHkgaW50byBjb250YWN0LiBUaGlzIGJlaW5nIHNvLCB3ZSBzZWUgdGhhdCBoZXJlIGlzIGFuIApvcHBvcnR1bml0eSBmb3IgdGhlIHBlcnNvbiB3aG8gdW5kZXJzdGFuZHMuIFRoZSBzdHVkZW50IGNhbiBsZWFybiB0aGUgb3BlcmF0aW9uIApvZiB0aGVzZSBmb3JjZXMsIGFuZCBjYW4gdGhlbiBkaXJlY3QgdGhlbSBpbnRlbGxpZ2VudGx5IGFzIGhlIHdpbGwuIAoKCjEyNTcuwqDCoMKgwqAKU3VwcG9zZSwgZm9yIGV4YW1wbGUsIGhlIHdpc2hlcyB0byB3cml0ZSBhIGxldHRlciBvZiBjb25kb2xlbmNlIGFuZCAKY29uc29sYXRpb24gdG8gc29tZSBmcmllbmQgd2hvIGhhcywgYXMgd2UgbWlzdGFrZW5seSBwaHJhc2UgaXQsIGAgbG9zdCcgc29tZSBvbmUgCm5lYXIgYW5kIGRlYXIgdG8gaGltLiBXZSBhbGwga25vdyB0aGUgZGlmZmljdWx0eSBvZiB3cml0aW5nIHN1Y2ggYSBsZXR0ZXIuIEluIAphdHRlbXB0aW5nIGl0IHdlIHB1dCB1cG9uIHRoZSBwYXBlciB3aGF0ZXZlciBvZiBzb2xhY2UgY29tZXMgaW50byBvdXIgbWluZHMsIGFuZCAKd2UgdHJ5IHRvIGV4cHJlc3MgaXQgYXMgZm9yY2VmdWxseSBhbmQgc3ltcGF0aGV0aWNhbGx5IGFzIHdlIGNhbiwgeWV0IHdlIGFyZSAKY29uc2Npb3VzIGFsbCB0aGUgd2hpbGUgdGhhdCB3b3JkcyBhcmUgaW1wb3RlbnQgaW4gc3VjaCBhIGNhc2UsIGFuZCB0aGF0IHRoZXkgCmNhbiBicmluZyBidXQgcG9vciBjb21mb3J0IHRvIHRoZSBiZXJlYXZlZCBvbmUuIFdlIGZlZWwgdGhlIGZ1dGlsaXR5IGFuZCAKaW5lZmZpY2llbmN5IG9mIG91ciBjb21tdW5pY2F0aW9uLCB0aG91Z2ggd2Ugc2VuZCBpdCBiZWNhdXNlIHdlIHdpc2ggdG8gZXhwcmVzcyAKb3VyIGNvbW1pc2VyYXRpb24sIGFuZCB3ZSBrbm93IHRoYXQgd2Ugb3VnaHQgdG8gZG8gc29tZXRoaW5nLiAKCgoxMjU4LsKgwqDCoMKgClN1Y2ggYSBsZXR0ZXIgbmVlZCBub3QgYmUgZnJ1aXRsZXNzIGFuZCB1bmF2YWlsaW5nLiBPbiB0aGUgY29udHJhcnkgaXQgCm1heSBwcm9kdWNlIHRoZSBtb3N0IGJlbmVmaWNlbnQgZWZmZWN0LCBhbmQgbWF5IGxlYWQgdG8gZ3JlYXQgYWxsZXZpYXRpb24gb2YgCnN1ZmZlcmluZy4gV29yZHMgb2Z0ZW4gZmFpbCB1cywgYnV0IG91ciB0aG91Z2h0cyBkbyBub3Q7IGFuZCBpbiB0aGUgd3JpdGluZyBvZiAKc3VjaCBhIGxldHRlciBhIG1hbicgcyBoZWFydCBtYXkgYmUgZmlsbGVkIHdpdGggdGhlIHN0cm9uZyB3aXNoIHRvIGJyaW5nIAplbmNvdXJhZ2VtZW50IGFuZCBoZWxwLCBob3dldmVyIHBvb3JseSB0aGUgd3JpdHRlbiBsaW5lcyBtYXkgZXhwcmVzcyBpdC4gSWYgaGUgCmV4ZXJjaXNlcyBoaXMgd2lsbCBoZSBtYXkgbWFrZSB0aGF0IGxldHRlciBiZWFyIHdpdGggaXQgaGlzIHRob3VnaHQgYW5kIGZlZWxpbmcsIApzbyB0aGF0IHRoZXkgc2hhbGwgcmVhY3QgdXBvbiB0aGUgbWluZCBhbmQgZW1vdGlvbnMgb2YgdGhlIHJlY2lwaWVudCwgd2hpbGUgaGlzIApleWVzIGFyZSBwZXJ1c2luZyB0aGUgbWFudXNjcmlwdC4gCgoKMTI1OS7CoMKgwqDCoApXZSBrbm93IHRoYXQgY3VycmVudHMgb2YgdGhvdWdodCBhbmQgZmVlbGluZyBjYW4gYmUgc2VudCB0byB0aGUgbW91cm5lciAKaW1tZWRpYXRlbHkgYW5kIHdpdGhvdXQgdGhlIHBoeXNpY2FsIGFnZW5jeSBvZiBhIGxldHRlciwgYW5kIG9uZSB3aG8gaGFzIG5vIApvdGhlciBwcmVzc2luZyB3b3JrIGNvdWxkIHVuZG91YnRlZGx5IGNvbnNvbGUgYW5kIHN0cmVuZ3RoZW4gdGhlIHN1ZmZlcmVyIGJ5IApwb3VyaW5nIHVwb24gaGltIGEgc3RlYWR5IHN0cmVhbSBvZiBzdWNoIHRob3VnaHQgYW5kIGZlZWxpbmcuIFRoZSB3cml0aW5nIG9mIHRoZSAKbGV0dGVyIGJ5IG5vIG1lYW5zIHByZWNsdWRlcyB0aGUgc3R1ZGVudCBmcm9tIG9mZmVyaW5nIGVmZmljaWVudCBoZWxwIGluIHRoYXQgCm90aGVyIHdheSBhcyB3ZWxsOyBidXQgaXQgdXNlZnVsbHkgc3VwcGxlbWVudHMgc3VjaCB3b3JrLCBhbmQgY2FycmllcyBpdCBvbiAKd2hpbGUgdGhlIHN0dWRlbnQgaXMgb3RoZXJ3aXNlIGVuZ2FnZWQuIAoKCjEyNjAuwqDCoMKgwqAKVGhvc2Ugd2hvIGFyZSB0cnlpbmcgb24gdGhlaXIgc21hbGwgc2NhbGUgdG8gaGVscCB0aGUgd29ybGQgc29vbiBmaW5kIAp0aGF0IHRoZXkgaGF2ZSBhIG11bHRpdHVkZSBvZiBjYXNlcyB1cG9uIHRoZWlyIGhhbmRzLCBhbmQgdGhhdCB0aGV5IGNhbiB3b3JrIApiZXN0IGJ5IGRpdmlkaW5nIHRoZWlyIHRpbWUgYmV0d2VlbiB0aGVtLiBUaGUgbW9yZSBhZHZhbmNlZCBzdHVkZW50IHdpbGwgbGVhdmUgCndpdGggZWFjaCBzdWNoIGNhc2UgYSBwdWlzc2FudCB0aG91Z2h0LWZvcm0sIHdoaWNoIHdpbGwgcmFkaWF0ZSBpbnZpZ29yYXRpb24gYW5kIApjaGVlcmZ1bG5lc3MgdW50aWwgaGUgY2FuIGFnYWluIHR1cm4gaGlzIGF0dGVudGlvbiB0byB0aGF0IGNhc2UuIEJ1dCBvbmUgd2hvIGhhcyAKbm90IHlldCBkZXZlbG9wZWQgaGlzIHBvd2VycyB0byB0aGF0IGV4dGVudCBtYXkgcmVhZGlseSBwcm9kdWNlIGFuIGVmZmVjdCBhbG1vc3QgCmVxdWl2YWxlbnQsIGlmIGhlIGhhcyBhIHBoeXNpY2FsIGJhc2lzIHVwb24gd2hpY2ggdG8gZm91bmQgdGhlIHRob3VnaHQtZm9ybS4gQSAKbGV0dGVyIGZ1cm5pc2hlcyBoaW0gd2l0aCBleGFjdGx5IHN1Y2ggYSBiYXNpcywgYW5kIGludG8gaXQgaGUgY2FuIHBvdXIgaGVhbGluZyAKYW5kIHN0cmVuZ3RoZW5pbmcgZm9yY2VzIHVudGlsIGl0IGJlY29tZXMgYSB2ZXJpdGFibGUgdGFsaXNtYW4uIElmIHRoZSB3cml0ZXIgCnRoaW5rcyBzdHJvbmdseSBvZiBoaXMgc3ltcGF0aHkgYW5kIGFmZmVjdGlvbiwgYW5kIHdpbGxzIGVhcm5lc3RseSB0byBjaGFyZ2UgdGhlIApsZXR0ZXIgd2l0aCB0aGlzIHRob3VnaHQgYW5kIGZlZWxpbmcsIGl0IHdpbGwgYXNzdXJlZGx5IGJlYXIgdGhpcyBtZXNzYWdlIGZvciAKaGltLiBXaGVuIGl0IHJlYWNoZXMgaXRzIGRlc3RpbmF0aW9uIHRoZSBmcmllbmQgd2hvIG9wZW5zIGl0IHdpbGwgbmF0dXJhbGx5IApyZWNvZ25pc2UgdGhlIGtpbmRseSBpbnRlbnRpb24gb2YgdGhlIHNlbmRlciwgYW5kIGJ5IHRoYXQgdmVyeSByZWNvZ25pdGlvbiB3aWxsIApvcGVuIGhpbXNlbGYgdG93YXJkcyB0aGUgaW5mbHVlbmNlLCBhbmQgYWRvcHQgdW5jb25zY2lvdXNseSBhIHJlY2lwaWVudCAKYXR0aXR1ZGUuIEFzIGhlIHJlYWRzIHRoZSB3cml0dGVuIG1lc3NhZ2UsIHRoZSBoZWxwZnVsIHRob3VnaHRzIGFuZCBmZWVsaW5ncyBhcmUgCnBsYXlpbmcgYWxsIHRoZSB3aGlsZSB1cG9uIGhpcyBtaW5kIGFuZCBlbW90aW9ucywgYW5kIHRoZSBlZmZlY3QgcHJvZHVjZWQgdXBvbiAKaGltIHdpbGwgYmUgb3V0IG9mIGFsbCBwcm9wb3J0aW9uIHRvIHRoZSBtZXJlIHBoeXNpY2FsIHdvcmRzLiAKCgoxMjYxLsKgwqDCoMKgClRoZSBhY3Rpb24gb2YgdGhlIGxldHRlciBkb2VzIG5vdCBjZWFzZSBoZXJlLiBUaGUgcmVjaXBpZW50IHJlYWRzIGl0LCAKbGF5cyBpdCBhc2lkZSBhbmQgcGVyaGFwcyBmb3JnZXRzIGl0LCBidXQgaXRzIHZpYnJhdGlvbnMgYXJlIG5ldmVydGhlbGVzcyAKc3RlYWRpbHkgcmFkaWF0aW5nLCBhbmQgdGhleSBjb250aW51ZSB0byBpbmZsdWVuY2UgaGltIGxvbmcgYWZ0ZXIgdGhlIGxldHRlciAKaXRzZWxmIGhhcyBwYXNzZWQgZnJvbSBoaXMgbWluZC4gSWYgaGUgaGFwcGVucyB0byBwdXQgdGhlIGxldHRlciBpbiBoaXMgcG9ja2V0IAphbmQgY2FycnkgaXQgYWJvdXQgd2l0aCBoaW0sIGl0cyBpbmZsdWVuY2UgdXBvbiBoaW0gd2lsbCBuYXR1cmFsbHkgYmUgY2xvc2VyIGFuZCAKc3Ryb25nZXI7IGJ1dCBpbiBhbnkgY2FzZSBzdWNoIGEgbGV0dGVyIG9mIGhlbHBmdWxuZXNzIGFuZCBnb29kIGludGVudGlvbiB3aWxsIApmaWxsIHRoZSB3aG9sZSByb29tIHdpdGggcGVhY2UgYW5kIGNvbWZvcnQsIHNvIHRoYXQgdGhlIG1vdXJuZXIgd2lsbCBmZWVsIGl0cyAKZWZmZWN0IHdoZW5ldmVyIGhlIGVudGVycyBoaXMgY2hhbWJlciwgaG93ZXZlciB1bmNvbnNjaW91cyBoZSBtYXkgYmUgYXMgdG8gaXRzIApzb3VyY2UuIAoKCjEyNjIuwqDCoMKgwqAKT2J2aW91c2x5IGl0IGlzIG5vdCBvbmx5IGZvciBjb25zb2xhdGlvbiB0aGF0IHRoaXMgcG93ZXIgY2FuIGJlIGVtcGxveWVkLiAKQSBtb3RoZXIsIHdobyBmZWVscyB1bmVhc3kgYXMgdG8gdGhlIHRlbXB0YXRpb25zIHdoaWNoIG1heSBzdXJyb3VuZCBhbiBhYnNlbnQgCnNvbiwgbWF5IHNlbmQgaGltIGxldHRlcnMgd2hpY2ggd2lsbCBlbmNvbXBhc3MgaGltIHdpdGggYSBoYWxvIG9mIHB1cml0eSBhbmQgCnBlYWNlLCBhbmQgYmVhciBoaW0gdW5jb25zY2lvdXMgYW5kIHVuY29udGFtaW5hdGVkIHRocm91Z2ggbWFueSBhIHNjZW5lIG9mIApwZXJpbC4gQSBtdWx0aXR1ZGUgb2Ygd29yZHMgaXMgbm90IG5lY2Vzc2FyeTsgZXZlbiBhIGh1bWJsZSBwb3N0Y2FyZCBtYXkgYmVhciAKaXRzIG1lc3NhZ2Ugb2YgbG92ZSBhbmQgc3RyZW5ndGgsIGFuZCBtYXkgYmUgYSByZWFsIHNoaWVsZCBhZ2FpbnN0IGV2aWwgdGhvdWdodCwgCm9yIGFuIGltcHVsc2UgaW4gdGhlIGRpcmVjdGlvbiBvZiBnb29kLiAKCgoxMjYzLsKgwqDCoMKgCkl0IG1heSBvY2N1ciB0byBzb21lIHJlYWRlcnMgdGhhdCBhIGxldHRlciBpcyBoYW5kbGVkIGJ5IHNvIG1hbnkgcGVyc29ucyAKYmVmb3JlIGl0IHJlYWNoZXMgaXRzIGRlc3RpbmF0aW9uIHRoYXQgYW55IG1hZ25ldGlzbSB0aGF0IGl0IG1pZ2h0IGJyaW5nIHdpdGggaXQgCndvdWxkIG5lY2Vzc2FyaWx5IGJlIG9mIG1peGVkIGNoYXJhY3Rlci4gVGhlcmUgaXMgbXVjaCB0cnV0aCBpbiB0aGlzOyBidXQgdGhlIApwb3N0bWVuLCB0aGUgc29ydGVycyBhbmQgdGhlIHNlcnZhbnRzIHdobyBoYW5kbGUgaXQgaGF2ZSBubyBzcGVjaWFsIGludGVyZXN0IGluIAppdCwgYW5kIGNvbnNlcXVlbnRseSBzdWNoIGluZmx1ZW5jZSBhcyB0aGVpciB0aG91Z2h0cyBtYXkgZXhlcmNpc2UgdXBvbiBpdCBpcyBvZiAKdGhlIG1vc3Qgc3VwZXJmaWNpYWwgY2hhcmFjdGVyOyB3aGVyZWFzIHRoZSB3cml0ZXIgaGFzIGludGVudGlvbmFsbHkgdGhyb3duIGludG8gCml0IGEgd2VhbHRoIG9mIGZlZWxpbmcgd2hpY2ggaGFzIHRob3JvdWdobHkgcGVybWVhdGVkIGl0IGFuZCBpcyBzdHJvbmcgZW5vdWdoIHRvIApvdmVycG93ZXIgYWxsIGNhc3VhbCBjb25uZWN0aW9ucyBvZiB0aGlzIHNvcnQuIAoKCjEyNjQuwqDCoMKgwqAKSW5jaWRlbnRhbGx5IHRoaXMgaGVscHMgdXMgdG8gdW5kZXJzdGFuZCB0aGF0IHRoZXJlIGlzIGFsd2F5cyBhIApyZXNwb25zaWJpbGl0eSBhdHRhY2hlZCB0byB0aGlzIGFjdGlvbiBvZiB3cml0aW5nIGEgbGV0dGVyLiBXZSBtYXkgY2hhcmdlIG91ciAKd3JpdGluZyB2b2x1bnRhcmlseSB3aXRoIGEgZ3JlYXQgZm9yY2UgZm9yIGdvb2QsIGFuZCB0aGF0IG5lZWRzIGEgc3BlY2lhbCBlZmZvcnQgCm9mIHRoZSB3aWxsOyBidXQgZXZlbiB3aXRob3V0IGFueSBzcGVjaWFsIGVmZm9ydCwgb3VyIG1vb2Qgd2hlbiB3cml0aW5nIAp1bmRvdWJ0ZWRseSBpbXByZXNzZXMgaXRzZWxmIHVwb24gdGhlIHBhcGVyLCB0aG91Z2ggbmF0dXJhbGx5IG5vdCBzbyBzdHJvbmdseS4gCklmIHRoZXJlZm9yZSBhIG1hbiBiZSBpbiBhIGNvbmRpdGlvbiBvZiBpcnJpdGF0aW9uIG9yIGRlcHJlc3Npb24gd2hlbiBpbmRpdGluZyBhIApsZXR0ZXIsIHRoZXNlIGVtb3Rpb25zIG9mIGhpcyB3aWxsIGJlIGZhaXRoZnVsbHkgbWlycm9yZWQgaW4gaGlzIHdvcmssIGFuZCB0aGUgCmxldHRlciB3aWxsIGJlYXIgdGhlc2UgdmlicmF0aW9ucyB3aXRoIGl0IGFuZCByYWRpYXRlIHRoZW0gdG8gdGhlIHJlY2lwaWVudCwgCmV2ZW4gdGhvdWdoIHRoZXkgYXJlIG5vdCBhdCBhbGwgaW50ZW5kZWQgZm9yIGhpbSwgYW5kIHRoZSBvcmlnaW5hbCBhbm5veWFuY2Ugb3IgCmRlcHJlc3Npb24gd2FzIGluIG5vIHdheSBjb25uZWN0ZWQgd2l0aCBoaW0uIElmIG9uIHRoZSBvdGhlciBoYW5kIHRoZSB3cml0ZXIgaXMgCnNlcmVuZSBhbmQgaGFwcHksIGEgbGV0dGVyIGZvciBoaW0sIGV2ZW4gdGhvdWdoIGl0IGJlIG5vdGhpbmcgYnV0IGEgY3VydCAKYnVzaW5lc3MgY29tbXVuaWNhdGlvbiwgd2lsbCBjb250YWluIHdpdGhpbiBpdHNlbGYgc29tZXRoaW5nIG9mIHRoZXNlIHF1YWxpdGllcywgCmFuZCB3aWxsIHNwcmVhZCBhIGdvb2QgaW5mbHVlbmNlIGFyb3VuZCBpdC4gCgoKMTI2NS7CoMKgwqDCoApJdCBpcyB0aGVyZWZvcmUgZXhjZWVkaW5nbHkgbmVjZXNzYXJ5IHRoYXQgYSBwZXJzb24gYW1vbmcgd2hvc2UgZHV0aWVzIGl0IApjb21lcyB0byB3cml0ZSBtYW55IGxldHRlcnMgc2hvdWxkIGN1bHRpdmF0ZSBzZXJlbml0eSBhbmQga2luZGxpbmVzcywgYW5kIHNob3VsZCAKZW5kZWF2b3VyIHRvIGhvbGQgaGltc2VsZiBpbiBhIHN5bXBhdGhldGljIGFuZCBoZWxwZnVsIGZyYW1lIG9mIG1pbmQsIGluIG9yZGVyIAp0aGF0IGhpcyBsZXR0ZXJzIHNob3VsZCBjYXJyeSB3aXRoIHRoZW0gdGhpcyBnb29kIGluZmx1ZW5jZS4gT25lIHdobyBpcyBjYXB0aW91cyAKYW5kIGNyaXRpY2FsLCBkaWN0YXRvcmlhbCBhbmQgaWxsLXRlbXBlcmVkLCBpcyBlbnRpcmVseSB1bmZpdCB0byBob2xkIGFueSAKc2VjcmV0YXJpYWwgcG9zaXRpb24sIGFzIGhlIHdpbGwgaW5ldml0YWJseSBkaXN0cmlidXRlIGRpc2NvbWZvcnQgYW5kIGRpc3NlbnNpb24gCnRvIGFsbCB0aG9zZSB3aG8gYXJlIHNvIHVuZm9ydHVuYXRlIGFzIHRvIGhhdmUgdG8gY29ycmVzcG9uZCB3aXRoIGhpbS4gCgoKMTI2Ni7CoMKgwqDCoApUaGUgcHJlZmVyZW5jZSB3aGljaCBtYW55IHNlbnRpbWVudGFsIHBlb3BsZSBmZWVsIGZvciBhIGxldHRlciB3cml0dGVuIGluIAptYW51c2NyaXB0LCByYXRoZXIgdGhhbiBmb3Igb25lIHByb2R1Y2VkIGJ5IG1lYW5zIG9mIGEgdHlwZXdyaXRlciwgaXMgZHVlIHRvIHRoZSAKZmFjdCB0aGF0IGluIHBhc3NpbmcgdGhlIGhhbmQgYWdhaW4gYW5kIGFnYWluIG92ZXIgdGhlIHBhcGVyIGEgbXVjaCBncmVhdGVyIAphbW91bnQgb2YgcGVyc29uYWwgbWFnbmV0aXNtIGlzIHN0b3JlZCBpbiB0aGUgbGV0dGVyIHRoYW4gd2hlbiB0aGUgaGFuZCBkb2VzIG5vdCAKY29tZSBkaXJlY3RseSBpbnRvIGNvbnRhY3Qgd2l0aCBpdDsgdGhvdWdoIGEgc3R1ZGVudCBvZiBvY2N1bHRpc20gd2hvIHdyaXRlcyBhIApsZXR0ZXIgaW4gdHlwZSBjaGFyZ2VzIGl0IHdpdGggbWFnbmV0aXNtIGJ5IGEgc2luZ2xlIGVmZm9ydCBvZiBoaXMgd2lsbCBmYXIgbW9yZSAKZWZmZWN0dWFsbHkgdGhhbiBpdCBpcyB1bmNvbnNjaW91c2x5IGNoYXJnZWQgd2hlbiB3cml0dGVuIGJ5IHRoZSBoYW5kIG9mIG9uZSB3aG8gCmhhcyBub3QgbGVhcm50IHRoZXNlIHRydXRocy4gCgoKMTI2Ny7CoMKgwqDCoApUaGUgb2NjdWx0aXN0IGV4dGVuZHMgdGhpcyBpZGVhIGluIG1hbnkgb3RoZXIgZGlyZWN0aW9ucy4gRXZlcnkgcHJlc2VudCAKd2hpY2ggaGUgZ2l2ZXMgdG8gYSBmcmllbmQgaXMgbWFkZSB0byBwcm9kdWNlIGEgZmFyIG1vcmUgcGVybWFuZW50IHJlc3VsdCB0aGFuIAp0aGUgbWVyZSBwbGVhc3VyZSB0aGF0IGlzIGNhdXNlZCBieSBpdHMgYXJyaXZhbC4gSWYgaGUgZ2l2ZXMgb3IgbGVuZHMgYSBib29rIHRvIApzb21lIG9uZSwgaGUgZG9lcyBub3QgZm9yZ2V0IHRvIGFkZCB0byB0aGUgYXJndW1lbnRzIG9mIHRoZSBhdXRob3IgaGlzIG93biAKZWFybmVzdCBkZXNpcmUgdGhhdCB0aGUgcmVhZGVyJyBzIHRob3VnaHRzIG1heSBiZSB3aWRlbmVkIGFuZCBsaWJlcmFsaXNlZC4gTGV0IAp1cyBhbGwgdHJ5IHRvIHNwcmVhZCBoZWxwIGFuZCBibGVzc2luZyBpbiB0aGlzIHdheTsgYXNzdXJlZGx5IG91ciBlZmZvcnRzIHdpbGwgCm5vdCBmYWlsIHRvIGJyaW5nIGFib3V0IHRoZWlyIGR1ZSBlZmZlY3QuIEV2ZXJ5IG9iamVjdCBhYm91dCB1cyBtdXN0IGJlIGEgY2VudHJlIApvZiBpbmZsdWVuY2UsIGFuZCB3ZSBtYXkgbWFrZSBpdHMgYWN0aW9uIHN0cm9uZyBvciB3ZWFrLCB1c2VmdWwgb3IgZGV0cmltZW50YWwuIApJdCBpcyBmb3IgdXMgdGhlcmVmb3JlIHRvIHNlZSB0aGF0IHdoZW5ldmVyIHdlIG1ha2UgYSBwcmVzZW50IHRvIGEgZnJpZW5kIGl0cyAKaW5mbHVlbmNlIHNoYWxsIGJlIHBvd2VyZnVsIGFuZCBkZWZpbml0ZSwgYW5kIGFsd2F5cyBmb3IgZ29vZC4gVGhlc2UgbWF0dGVycyBhcmUgCmxpdHRsZSBzdHVkaWVkIHlldCBpbiB0aGUgb3V0ZXIgd29ybGQsIGJ1dCB0aGV5IHJlcHJlc2VudCBncmVhdCB0cnV0aHMgZm9yIGFsbCAKdGhhdC4gV2lzZSBtZW4gd2lsbCBwYXkgYXR0ZW50aW9uIHRvIHRoZW0gYW5kIGdvdmVybiB0aGVpciBsaXZlcyBhY2NvcmRpbmdseSwgCmFuZCB0aGVyZWJ5IG1ha2UgdGhlbXNlbHZlcyBib3RoIGZhciBoYXBwaWVyIGFuZCBmYXIgbW9yZSB1c2VmdWwgdGhhbiB0aG9zZSB3aG8gCmFyZSBjb250ZW50IHRvIHJlbWFpbiBpZ25vcmFudCBvZiB0aGUgaGlnaGVyIHNjaWVuY2UuIAoKCjEyNjguwqDCoMKgwqAKV09SSyBEVVJJTkcgU0xFRVAgCgoKMTI2OS7CoMKgwqDCoApPbmUgb2YgdGhlIG1vc3QgcGxlYXNpbmcgb2YgdGhlIHN1YnNpZGlhcnkgcG9pbnRzIHJldmVhbGVkIHRvIHVzIGJ5IApUaGVvc29waGljYWwgc3R1ZHkgaXMgdGhhdCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdXNlZnVsbHkgZW1wbG95aW5nIHRoZSBob3VycyAKZHVyaW5nIHdoaWNoIHRoZSBib2R5IGlzIHNsZWVwaW5nLiBJIHdlbGwgcmVtZW1iZXIgaW4gbXkgeW91bmdlciBkYXlzIGhvdyAKZmllcmNlbHkgSSByZXNlbnRlZCB0aGUgbmVjZXNzaXR5IG9mIHNwZW5kaW5nIHRpbWUgaW4gc2xlZXAgd2hlbiB0aGVyZSB3YXMgc3VjaCAKYW4gb3ZlcndoZWxtaW5nIGFtb3VudCBvZiB3b3JrIHRvIGJlIGRvbmUsIGFuZCBob3cgSSBjb25zZXF1ZW50bHkgdHJpZWQgdG8gCm1pbmltaXNlIHRoZSB0aW1lIGRldm90ZWQgdG8gdGhpcy4gQmVpbmcgaGVhbHRoeSBhbmQgaGFyZHksIGZvciBzb21lIHllYXJzIEkgCm1hbmFnZWQgdG8gZXhpc3Qgb24gb25seSBmb3VyIGhvdXJzIG9mIHNsZWVwIGVhY2ggbmlnaHQsIGFuZCB0aG91Z2h0IHRoYXQgSSB3YXMgCnRoZXJlYnkgZ2FpbmluZyB0aW1lIGZvciB0aGUgd29yayB3aGljaCBJIGhhZCB0byBkby4gTm93IHRoYXQgSSBrbm93IG1vcmUgYWJvdXQgCml0LCBJIHJlYWxpc2UgdGhhdCBJIHdhcyBpbiBlcnJvciwgaG93IHRoYXQgSSBjb3VsZCBhY3R1YWxseSBoYXZlIGluY3JlYXNlZCBteSAKdXNlZnVsbmVzcyBpZiBJIGhhZCBhbGxvd2VkIG15c2VsZiB0byB0YWtlIGFuIG9yZGluYXJ5IGFtb3VudCBvZiByZXN0LCBiZXNpZGVzIApwcm92aWRpbmcgbXlzZWxmIHdpdGggYSBzdGlsbCBzdHJvbmdlciBib2R5IGZvciB0aGUgd29yayBvZiBteSBsYXRlciB5ZWFycy4gQnV0IAppdCB3YXMgaW5kZWVkIGEgY29tZm9ydCB0byBtZSB3aGVuIEkgZm91bmQgZnJvbSB0aGUgVGhlb3NvcGhpY2FsIGxpdGVyYXR1cmUgdGhhdCAKb25seSB0aGUgYm9keSBpcyBpbnNlbnNpYmxlIGR1cmluZyBzbGVlcCwgYW5kIHRoYXQgdGhlIHJlYWwgbWFuIGNhbiBjb250aW51ZSBoaXMgCndvcmsgYW5kIGluZGVlZCBkbyBhbGwgdGhlIG1vcmUgb2YgaXQsIGFuZCBkbyBpdCBiZXR0ZXIsIGJlY2F1c2UgaGUgaXMgCnVudHJhbW1lbGxlZCBieSBoaXMgcGh5c2ljYWwgdmVoaWNsZS4gCgoKMTI3MC7CoMKgwqDCoApZZXQgZXZlbiBUaGVvc29waGljYWwgc3R1ZGVudHMsIHdobyBhcmUgcXVpdGUgYWNjdXN0b21lZCB0byB0aGluayBhYm91dCAKdGhlIGhpZ2hlciB3b3JsZHMgYW5kIHRoZSBwb3NzaWJpbGl0eSBvZiBhY3Rpdml0eSBpbiB0aGVtLCBvZnRlbiBkbyBub3QgcmVhbGlzZSAKaG93IGVudGlyZWx5IHRoYXQgaXMgdGhlIHJlYWwgbGlmZSwgYW5kIHRoaXMgaW4gdGhlIHBoeXNpY2FsIHdvcmxkIG9ubHkgCmFuIGludGVybHVkZSBpbiBpdC4gSW4gb3VyIHdha2luZyBjb25zY2lvdXNuZXNzIG1vc3Qgb2YgdXMgYWx3YXlzIGNvbnNpZGVyIHRoZSAKZGl1cm5hbCBsaWZlIGFzIHJlYWwsIGFuZCB0aGUgbm9jdHVybmFsIG9yIGRyZWFtIGxpZmUgYXMgdW5yZWFsOyBidXQgaW4gdHJ1dGggCnRoZSB2ZXJ5IHJldmVyc2UgaXMgdGhlIGNhc2UsIGFzIG1heSBlYXNpbHkgYmUgc2VlbiBpZiB3ZSByZW1lbWJlciB0aGF0IGluIAp0aGlzIGxpZmUgbW9zdCBvZiB1cyBrbm93IG5vdGhpbmcgd2hhdGV2ZXIgb2YgdGhhdCAsIHdoZXJlYXMgaW4KdGhhdCBsaWZlIHdlIHJlbWVtYmVyIHRoZSB3aG9sZSBvZiB0aGlzLiBUaGlzIGxpZmUsIHRoZXJlZm9yZSwgCmhhcyBsb25nIGRhaWx5IGJyZWFrcyBpbiBpdHMgY29udGludWl0eTsgdGhhdCBpcyBjb250aW51b3VzIGZyb20gdGhlIApjcmFkbGUgdG8gdGhlIGdyYXZlIGFuZCBiZXlvbmQgaXQuIEZ1cnRoZXJtb3JlLCBiZWNhdXNlIGR1cmluZyB0aGF0IGxpZmUgdGhlIApwaHlzaWNhbCBib2R5IGlzIGZvciB0aGUgdGltZSBsYWlkIGFzaWRlLCB0aGUgZWdvIGNhbiBtYW5pZmVzdCBtdWNoIG1vcmUgb2YgCmhpbXNlbGYuIFRoZSBtYW4gaW4gaGlzIGFzdHJhbCBib2R5IGlzIG11Y2ggbW9yZSBuZWFybHkgaGltc2VsZiB0aGFuIHRoaXMgCmZldHRlcmVkIHJlcHJlc2VudGF0aW9uIG9mIGhpbSB3aGljaCBpcyBhbGwgdGhhdCB3ZSBjYW4gc2VlIGRvd24gaGVyZS4gV2hlbiwgCmxhdGVyIG9uIGluIG91ciBldm9sdXRpb24sIGZ1cnRoZXIgZGV2ZWxvcG1lbnQgdGFrZXMgcGxhY2UgYW5kIHRoZSBtYW4gY2FuIApmdW5jdGlvbiBpbiBoaXMgbWVudGFsIGJvZHksIHdlIGFyZSBhbm90aGVyIHdob2xlIHN0YWdlIG5lYXJlciB0byB0aGUgcmVhbGl0eTsgCmluZGVlZCwgYmV5b25kIHRoYXQgaXQgaXMgb25seSBvbmUgc3RhZ2UgdG8gdGhlIG1hbmlmZXN0YXRpb24gb2YgdGhlIGVnbyBpbiBoaXMgCmNhdXNhbCBib2R5LCBoYXZpbmcgYSB1bmlmaWVkIGNvbnNjaW91c25lc3Mgd2hpY2ggZXh0ZW5kcyB0aHJvdWdoIGFsbCB0aGUgYWdlcywgCmZyb20gdGhlIHRpbWUgd2hlbiBsb25nIGFnbyBoZSByb3NlIGZyb20gdGhlIGFuaW1hbCBraW5nZG9tIHRvIHRoZSBpbmZpbml0eSAKd2hpY2ggbGllcyBiZWZvcmUgaGltLiAKCgoxMjcxLsKgwqDCoMKgCkxldCB1cyBzZWUgdGhlbiB3aGF0IHdlIGNhbiBkbyB3aXRoIHRoaXMgbGlmZSBhdCBuaWdodCwgd2hpbGUgd2UgbGVhdmUgCm91ciBwaHlzaWNhbCBib2R5IHRvIGl0cyByZXN0LiBNYW55IGZvcm1zIG9mIGFjdGl2aXR5IG9wZW4gYmVmb3JlIHVzLCBhbmQgYXMgSSAKaGF2ZSB3cml0dGVuIGZ1bGx5IGFib3V0IHRoZW0gaW4gdGhlIGJvb2sgY2FsbGVkIEludmlzaWJsZSBIZWxwZXJzIEkgCndpbGwgbm90IHJlcGVhdCBteXNlbGYgaGVyZS4gSSBtYXkgc3VtbWFyaXNlIGJ5IHNheWluZyB0aGF0IGR1cmluZyBvdXIgd2FraW5nIApob3VycyB3ZSBjYW4gaGVscCBhbnlvbmUgd2hvbSB3ZSBrbm93IHRvIGJlIGluIHNvcnJvdyBvciBzdWZmZXJpbmcsIGJ5IHNpdHRpbmcgCmRvd24gYW5kIGZvcm1pbmcgYSBjbGVhciBzdHJvbmcgdGhvdWdodC1pbWFnZSBvZiB0aGUgc3VmZmVyZXIsIGFuZCB0aGVuIHBvdXJpbmcgCm91dCBhIHN0cmVhbSBvZiBjb21wYXNzaW9uLCBhZmZlY3Rpb24gYW5kIHN0cmVuZ3RoOyBidXQgZHVyaW5nIHRoZSBuaWdodCB3ZSBjYW4gCmRvIG1vcmUgdGhhbiB0aGlzLS0gd2UgY2FuIGNhcnJ5IHRoaXMgdHJlYXRtZW50IGZ1cnRoZXIsIGJlY2F1c2Ugd2UgY2FuIApvdXJzZWx2ZXMgZ28gaW4gdGhlIGFzdHJhbCBib2R5IGFuZCBzdGFuZCBieSB0aGUgYmVkc2lkZSBvZiB0aGUgc3VmZmVyZXIsIHNvIGFzIAp0byBzZWUgZXhhY3RseSB3aGF0IGlzIG5lZWRlZCwgYW5kIGdpdmUgd2hhdGV2ZXIgbWF5IGJlIHNwZWNpYWxseSByZXF1aXJlZCBieSAKdGhlIHBhcnRpY3VsYXIgY2FzZSwgaW5zdGVhZCBvZiBvZmZlcmluZyBtZXJlbHkgZ2VuZXJhbCBjb21mb3J0IGFuZCBjb25zb2xhdGlvbi4KCgoxMjcyLsKgwqDCoMKgCkhlbHAgYW5kIGVuY291cmFnZW1lbnQsIGNhbiBiZSBnaXZlbiBub3Qgb25seSB0byB0aGUgbGl2aW5nIGJ1dCBhbHNvIHRvIAp0aGUgdmFzdCBob3N0IG9mIHRoZSBkZWFkLCBhbmQgdGhleSBvZnRlbiBzZXJpb3VzbHkgbmVlZCBpdCwgb3dpbmcgcGFydGx5IHRvIHRoZSAKZmFsc2UgYW5kIHdpY2tlZCByZWxpZ2lvdXMgdGVhY2hpbmcgd2hpY2ggaXMgc28gb2Z0ZW4gZ2l2ZW4sIGFuZCBwYXJ0bHkgdG8gdGhlIApibGFuayBpZ25vcmFuY2Ugb2Ygb3RoZXItd29ybGQgY29uZGl0aW9ucyB3aGljaCBvYnRhaW5zIGFtb25nIHRoZSBnZW5lcmFsIHB1YmxpYyAKb24gdGhpcyBzaWRlIG9mIHRoZSB2ZWlsLiBJbiBzdWNoIHdvcmsgYXMgdGhpcyB0aGVyZSBpcyBpbmZpbml0ZSB2YXJpZXR5LCB5ZXQgCmV2ZW4gdGhpcyBieSBubyBtZWFucyBleGhhdXN0cyB0aGUgcG9zc2liaWxpdGllcyB3aGljaCBvcGVuIGJlZm9yZSB1cy4gSW4gdGhlIAphc3RyYWwgd29ybGQgd2UgY2FuIGJvdGggZ2l2ZSBhbmQgcmVjZWl2ZSBpbnN0cnVjdGlvbi4gRnJvbSB0aGUgYW5vbnltaXR5IG9mIHRoZSAKYXN0cmFsIHdvcmxkIHdlIGNhbiBhc3Npc3QsIGluc3BpcmUgYW5kIGFkdmlzZSBhbGwgc29ydHMgb2YgcGVvcGxlIHdobyB3b3VsZCBiZSAKdW5saWtlbHkgdG8gbGlzdGVuIHRvIHVzIHBoeXNpY2FsbHkuIFdlIGNhbiBzdWdnZXN0IGdvb2QgYW5kIGxpYmVyYWwgaWRlYXMgdG8gCm1pbmlzdGVycyBhbmQgc3RhdGVzbWVuLCB0byBwb2V0cyBhbmQgcHJlYWNoZXJzLCBhbmQgdG8gYWxsIHRoZSBtYW55IHZhcmlldGllcyAKb2Ygd3JpdGVycyBpbiBib29rcywgbWFnYXppbmVzIGFuZCBuZXdzcGFwZXJzLiBXZSBjYW4gc3VnZ2VzdCBhbGlrZSBwbG90cyB0byAKbm92ZWxpc3RzIGFuZCBnb29kIGlkZWFzIHRvIHBoaWxhbnRocm9waXN0cy4gV2UgYXJlIGZyZWUgdG8gcmFuZ2Ugd2hlcmV2ZXIgd2UgCndpbGwgYW5kIHRvIGRvIHdoYXRldmVyIHdvcmsgcHJlc2VudHMgaXRzZWxmIHRvIHVzLiBJbmNpZGVudGFsbHkgd2UgY2FuIHZpc2l0IAphbGwgdGhlIGludGVyZXN0aW5nIHNwb3RzIG9mIHRoZSB3b3JsZCwgYW5kIHNlZSBhbGwgaXRzIG1vc3QgbWFnbmlmaWNlbnQgCmJ1aWxkaW5ncyBhbmQgaXRzIG1vc3QgbG92ZWx5IHNjZW5lcnk7IGl0cyBmaW5lc3QgYXJ0IGFuZCBpdHMgZ3JhbmRlc3QgbXVzaWMgYXJlIAplbnRpcmVseSBhdCBvdXIgZGlzcG9zYWwsIHdpdGhvdXQgbW9uZXkgYW5kIHdpdGhvdXQgcHJpY2UsIHRvIHNheSBub3RoaW5nLCBvZiAKdGhlIGZhciBncmFuZGVyIG11c2ljIGFuZCB0aGUgZmFyIG1vcmUgc3BsZW5kaWQgY29sb3VyaW5nIG9mIHRoZSBhc3RyYWwgd29ybGQgCml0c2VsZi4gCgoKMTI3My7CoMKgwqDCoApXaGF0IGNhbiBhIG1hbiBkbyBkb3duIGhlcmUgdG8gcHJlcGFyZSBoaW1zZWxmIHRvIHRha2UgcGFydCBpbiB0aGF0IApoaWdoZXIgd29yaz8gV2VsbCwgdGhlIGxpZmUgaXMgYSBjb250aW51b3VzIGxpZmUsIGFuZCB3aGF0ZXZlciBjaGFyYWN0ZXJpc3RpY3MgYSAKbWFuIHNob3dzIGhlcmUgaW4gaGlzIHBoeXNpY2FsIGJvZHkgaGUgd2lsbCBhc3N1cmVkbHkgYWxzbyBzaG93IGluIGhpcyBhc3RyYWwgCmJvZHkuIElmIGhlcmUgaGUgaXMgZnVsbCBvZiBjaGVlcmZ1bG5lc3MgYW5kIGFsd2F5cyBhbnhpb3VzIGZvciBhbiBvcHBvcnR1bml0eSAKdG8gZG8gc2VydmljZS0tIHRoZW4sIGV2ZW4gdGhvdWdoIGhlIG1heSByZW1lbWJlciBub3RoaW5nIG9mIGl0LCBoZSBtYXkgYmUgcXVpdGUgCmNvbmZpZGVudCB0aGF0IGhlIGlzIGVtcGxveWluZyBoaW1zZWxmIHVzZWZ1bGx5IHRvIHRoZSB1dG1vc3Qgb2YgaGlzIGNhcGFjaXR5IGluIAp0aGUgYXN0cmFsIHJlYWxtIGFsc28uIEFueSBsaW1pdGF0aW9ucyBvZiBjaGFyYWN0ZXIgd2hpY2ggc2hvdyB0aGVtc2VsdmVzIGRvd24gCmhlcmUsIHN1Y2ggYXMgaXJyaXRhYmlsaXR5LCBmb3IgZXhhbXBsZSwgYXJlIGNlcnRhaW5seSBjb250cmFjdGluZyB0aGUgc3BoZXJlIG9mIApoaXMgdXNlZnVsbmVzcyBpbiB0aGUgYXN0cmFsIHdvcmxkLiBBbmQgc28sIGlmIGEgbWFuIHdobyBkb2VzIG5vdCBicmluZyB0aHJvdWdoIAphbnkgcmVjb2xsZWN0aW9uIGZyb20gdGhhdCBsaWZlIHdpc2hlcyB0byBtYWtlIHF1aXRlIHN1cmUgdGhhdCBoZSBpcyB3ZWxsIAplbXBsb3llZCB0aGVyZSBhbmQgaXMgZG9pbmcgaGlzIGZ1bGwgZHV0eSwgaGUgY2FuIGVhc2lseSBiZSBjZXJ0YWluIG9mIGl0IGJ5IApjYXJlZnVsbHkgbWFraW5nIGhpcyBsaWZlIGhlcmUgc3VjaCBhcyBoZSBrbm93cyB0byBiZSBuZWNlc3NhcnkgZm9yIHRoYXQgCnB1cnBvc2UuIFRoZXJlIGlzIG5vIG15c3RlcnkgYXMgdG8gdGhlIHJlcXVpcmVtZW50cy4gU2luZ2xlLW1pbmRlZG5lc3MsIApjYWxtbmVzcywgY291cmFnZSwga25vd2xlZGdlIGFuZCBsb3ZlIHdpbGwgbWFrZSBhIHRob3JvdWdobHkgdXNlZnVsIGFzdHJhbCAKd29ya2VyLCBhbmQgYWxsIHRoZXNlIHF1YWxpZmljYXRpb25zIGFyZSB3aXRoaW4gcmVhY2ggb2YgYW55IG1hbiB3aG8gd2lsbCB0YWtlIAp0aGUgdHJvdWJsZSB0byBkZXZlbG9wIHRoZW0gaW4gaGltc2VsZi4gCgoKMTI3NC7CoMKgwqDCoApJdCBpcyBub3QgZGlmZmljdWx0IHRvIHNlZSB3aHkgYWxsIHRoZXNlIGFyZSBuZWNlc3NhcnkuIEEgbWFuIGNhbm5vdCAKdGhyb3cgYWxsIGhpcyBlbmVyZ3kgaW50byBzdWNoIHdvcmsgYXMgdGhpcyB1bmxlc3MgdGhlIGhpZ2hlciBsaWZlIGlzIGZvciBoaW0gCnRoZSBvbmUgb2JqZWN0LiBLbm93bGVkZ2Ugb2YgdGhlIGFzdHJhbCB3b3JsZCwgaXRzIGhhYml0YW50cyBhbmQgaXRzIApjaGFyYWN0ZXJpc3RpY3MgaGUgbXVzdCBoYXZlOyBvdGhlcndpc2UgaGUgd2lsbCBjb25zdGFudGx5IGJsdW5kZXIsIGFuZCB3aWxsIApmaW5kIGhpbXNlbGYgaGVscGxlc3MgYmVmb3JlIGV2ZXJ5IGVtZXJnZW5jeSB3aGljaCBhcmlzZXMuIENvdXJhZ2UgaGUgb2J2aW91c2x5IApuZWVkcywganVzdCBhcyBkb2VzIHRoZSBtYW4gd2hvIHBsdW5nZXMgaW50byB1bmV4cGxvcmVkIGp1bmdsZXMgb3IgdHJ1c3RzIApoaW1zZWxmIG9uIHRoZSBzdXJmYWNlIG9mIHRoZSBtaWdodHkgZGVlcC4gQ2FsbW5lc3MgYWxzbyBoZSBtdXN0IGhhdmUsIGZvciAKdGhvdWdoIGl0IGlzIGEgc3VmZmljaWVudGx5IHNlcmlvdXMgbWF0dGVyIGZvciBhIG1hbiB0byBsb29zZSBoaXMgdGVtcGVyIGluIHRoZSAKcGh5c2ljYWwgd29ybGQsIGl0IGlzIHNvbWV0aGluZyBpbmZpbml0ZWx5IG1vcmUgc2VyaW91cyB3aGVuIHRoZXJlIGlzIG5vIApwaHlzaWNhbCBtYXR0ZXIgdG8gcHJldmVudCB0aGUgZnVsbCBzd2luZyBvZiB0aGUgdmlicmF0aW9ucyBvZiBhbmdlci4gQW55IAptYW5pZmVzdGF0aW9ucyBvZiBpcnJpdGFiaWxpdHksIGV4Y2l0ZW1lbnQgb3IgaW1wYXRpZW5jZSBpbiB0aGUgYXN0cmFsIHdvcmxkIGF0IApvbmNlIG1ha2UgaGltIGEgZmVhcnNvbWUgb2JqZWN0LCBzbyB0aGF0IHRob3NlIHdob20gaGUgd2lzaGVzIHRvIGhlbHAgZmx5IGZyb20gCmhpbSBpbiB0ZXJyb3IuIExvdmUgb2YgaHVtYW5pdHksIGFuZCB0aGUgY29uc2VxdWVudCBlYXJuZXN0IGRlc2lyZSB0byBoZWxwLCBoZSAKbXVzdCBwb3NzZXNzIGluIHRoZSBmdWxsZXN0IGRlZ3JlZSwgZm9yIHdpdGhvdXQgdGhhdCBoZSBjYW4gbmV2ZXIgaGF2ZSB0aGUgCnBhdGllbmNlIHRvIGRlYWwgZ2VudGx5IHdpdGggdGhlIHBhbmljIGZlYXIgYW5kIHRoZSB1bnJlYXNvbmluZyBzdHVwaWRpdHkgd2hpY2ggCndlIHNvIG9mdGVuIGZpbmQgYW1vbmcgdGhlIGRlYWQuIEZvciBtYW55IG9mIHRoZSBjYXNlcyB3aXRoIHdoaWNoIHdlIGhhdmUgdG8gCmRlYWwgc3VjaCBleGNlZWRpbmcgZ2VudGxlbmVzcyBhbmQgbG9uZy1zdWZmZXJpbmcgYXJlIHJlcXVpcmVkIHRoYXQgbm8gbWFuLCAKaG93ZXZlciBlbmVyZ2V0aWMgYW5kIGVhcm5lc3QgaGUgbWF5IGJlLCBpcyBvZiB1c2UgaW4gZGVhbGluZyB3aXRoIHRoZW0gdW5sZXNzIApoZSBpcyBmdWxsIG9mIHJlYWwgYWZmZWN0aW9uIGFuZCBoYXMgaGlzIHZlaGljbGVzIHBlcmZlY3RseSB1bmRlciBjb250cm9sLiAKCgoxMjc1LsKgwqDCoMKgCk11Y2ggd29yayBpcyBkb25lIGluIHRoZSBhc3RyYWwgd29ybGQgYmVzaWRlcyB0aGF0IGluIHdoaWNoIHdlIGFyZSBtb3N0IApzcGVjaWFsbHkgaW50ZXJlc3RlZC4gTWFueSBwaHlzaWNpYW5zIHZpc2l0LCBkdXJpbmcgdGhlIHNsZWVwIG9mIHRoZSBib2R5LCBjYXNlcyAKaW4gd2hpY2ggdGhleSBhcmUga2Vlbmx5IGludGVyZXN0ZWQgb3IgYWJvdXQgd2hpY2ggdGhleSBmZWVsIGFueGlvdXMuIEluIG1vc3QgCmNhc2VzIHRoZSBtYW4gaW4gdGhlIHBoeXNpY2FsIGJvZHkgaXMgbm90IGNvbnNjaW91cyBvZiB0aGlzLCBidXQgYW55IG5ldyAKaW5mb3JtYXRpb24gdGhhdCBoZSBnYWlucyBmcm9tIGhpcyBhc3RyYWwgaW52ZXN0aWdhdGlvbnMsIG9mdGVuIGNvbWVzIHRocm91Z2ggYXMgCmEga2luZCBvZiBpbnR1aXRpb24gaW50byB0aGUgd2FraW5nIGNvbnNjaW91c25lc3MuIEkgaGF2ZSBrbm93biBkb2N0b3JzIHdobyBhcmUgCmFibGUgdG8gZG8gdGhpcyBpbnRlbnRpb25hbGx5IGFuZCBpbiBmdWxsIGNvbnNjaW91c25lc3MsIGFuZCBuYXR1cmFsbHkgdGhpcyAKY2FwYWNpdHkgZ2l2ZXMgdGhlbSBhIGdyZWF0IGFkdmFudGFnZSBvdmVyIHRoZWlyIGNvbGxlYWd1ZXMuIEEgZG9jdG9yIHdobyBkaWVzLCAKb2Z0ZW4gY29udGludWVzIGFmdGVyIGRlYXRoIHRvIHRha2UgYW4gaW50ZXJlc3QgaW4gaGlzIHBhdGllbnRzLCBhbmQgc29tZXRpbWVzIAplbmRlYXZvdXJzIHRvIGN1cmUgdGhlbSBmcm9tIHRoZSBvdGhlciBzaWRlLCBvciB0byBzdWdnZXN0ICh0byBoaXMgc3VjY2Vzc29yIGluIApjaGFyZ2Ugb2YgdGhlIGNhc2UpIHRyZWF0bWVudCB3aGljaCwgd2l0aCBoaXMgbmV3bHkgYWNxdWlyZWQgYXN0cmFsIGZhY3VsdHksIGhlIApzZWVzIHdvdWxkIGJlIHVzZWZ1bC4gSSBrbmV3IG9uZSBkb2N0b3IgKGEgbWVtYmVyIG9mIG91ciBTb2NpZXR5KSB3aG8gCmltbWVkaWF0ZWx5IGFmdGVyIGhpcyBkZWF0aCB3ZW50IHJvdW5kIHRvIGNvbGxlY3QgYWxsIGhpcyBwYXRpZW50cyB3aG8gaGFkIApwYXNzZWQgb3ZlciBiZWZvcmUgaGltLCBhbmQgcmVndWxhcmx5IHByZWFjaGVkIFRoZW9zb3BoeSB0byB0aGVtLCBzbyB0aGF0IGhlIG5vdyAKZ29lcyBhYm91dCBpbiB0aGUgYXN0cmFsIHdvcmxkIHdpdGggYSBsYXJnZSBiYW5kIG9mIGF0dGVuZGFudCBkaXNjaXBsZXMuIAoKCjEyNzYuwqDCoMKgwqAKSSBoYXZlIGtub3duIG1hbnkgY2FzZXMgYWxzbyBvZiBmcmllbmRzaGlwcyBmb3JtZWQgaW4gdGhlIGFzdHJhbCB3b3JsZC4gCkl0IG9mdGVuIGhhcHBlbnMsIGZvciBleGFtcGxlLCB0aGF0IG1lbWJlcnMgb2Ygb3VyIFNvY2lldHkgd2hvIGxpdmUgYXQgb3Bwb3NpdGUgCnNpZGVzIG9mIHRoZSB3b3JsZCBhbmQgaGF2ZSBubyBvcHBvcnR1bml0eSBvZiBtZWV0aW5nIHBoeXNpY2FsbHksIHlldCBrbm93IG9uZSAKYW5vdGhlciB3ZWxsIGluIHRoZWlyIGFzdHJhbCBsaWZlLiBXaGVuIHRoZXkgYXJlIGFjdHVhbGx5IG9uIG9wcG9zaXRlIHNpZGVzIG9mIAp0aGUgd29ybGQgdGhlIGRheSBvZiBvbmUgaXMgdGhlIG5pZ2h0IG9mIHRoZSBvdGhlciwgYnV0IHRoZXJlIGlzIGdlbmVyYWxseSAKc3VmZmljaWVudCBvdmVybGFwcGluZyB0byBtYWtlIGFjcXVhaW50YW5jZSBwb3NzaWJsZS4gVGhvc2Ugd2hvIGFyZSByZWFkeSBhbmQgCmVmZmVjdGl2ZSBsZWN0dXJlcnMgaW4gdGhlIHBoeXNpY2FsIHdvcmxkIHVzdWFsbHkgY29udGludWUgdGhlaXIgYWN0aXZpdGllcyBpbiAKdGhhdCBsaW5lIGR1cmluZyBzbGVlcC4gR3JvdXBzIG9mIHN0dWRlbnRzIGNvbnRpbnVlIHRoZWlyIG1lZXRpbmdzIGFuZCwgd2l0aCB0aGUgCmFkZGl0aW9uYWwgZmFjaWxpdGllcyB3aGljaCB0aGUgYXN0cmFsIHdvcmxkIGdpdmVzIHRvIHRoZW0sIGFyZSBmcmVxdWVudGx5IGFibGUgCnRvIHNvbHZlIHByb2JsZW1zIHdoaWNoIGhhdmUgcHJlc2VudGVkIGRpZmZpY3VsdGllcyBkb3duIGhlcmUuIAoKCjEyNzcuwqDCoMKgwqAKTm90IG9ubHkgZGVhZCBmcmllbmRzIGJ1dCBsaXZpbmcgZnJpZW5kcyBmcm9tIHRoZSBvdGhlciBzaWRlIG9mIHRoZSB3b3JsZCAKYXJlIHJvdW5kIHVzIGFsbCBkYXkgbG9uZywgYWx0aG91Z2ggd2l0aCBvdXIgcGh5c2ljYWwgZXllcyB3ZSBkbyBub3Qgc2VlIHRoZW0uIApXZSBhcmUgbmV2ZXIgYWxvbmUsIGFuZCBhcyBpbiB0aGUgYXN0cmFsIHdvcmxkIG1vc3QgdGhvdWdodHMgYXJlIHZpc2libGUsIGl0IApiZWhvdmVzIHVzIHRvIGJlYXIgdGhhdCBmYWN0IGluIG1pbmQsIGxlc3Qgd2Ugc2hvdWxkIGNhcmVsZXNzbHkgc2VuZCBvdXQgYXN0cmFsIApvciBtZW50YWwgdmlicmF0aW9ucyB3aGljaCB3b3VsZCBjYXVzZSBwYWluIHRvIHRob3NlIHdob20gd2UgbG92ZS4gCgoKMTI3OC7CoMKgwqDCoApDSEFQVEVSIFhYSSAKCgoxMjc5LsKgwqDCoMKgCkJZIENPTExFQ1RJVkUgVEhPVUdIVCAKCgoxMjgwLsKgwqDCoMKgCkNIVVJDSCBIWU1OUyBBTkQgUklUVUFMUyAKCgoxMjgxLsKgwqDCoMKgCklOIGFuIGVhcmxpZXIgY2hhcHRlciBJIGhhdmUgZXhwbGFpbmVkIGhvdyB0aGUgY29uZ3JlZ2F0aW9uIGFuZCB0aGUgCnBhcmlzaGlvbmVycyBhcmUgYWZmZWN0ZWQgYnkgdGhlIGNlcmVtb25pZXMgb2YgdGhlIENodXJjaCwgYW5kIGZyb20gd2hhdCB3YXMgCnRoZW4gc2FpZCBpdCBpcyBub3QgZGlmZmljdWx0IHRvIHNlZSBob3cgdGhlIHByaWVzdCBmcm9tIGhpcyBzaWRlIGNhbiBpbmZsdWVuY2UgCnRob3NlIGFib3V0IGhpbS4gSGUgaGFzIGNob3NlbiBhIHBvc2l0aW9uIHRoZSByZXNwb25zaWJpbGl0aWVzIG9mIHdoaWNoIGFyZSAKZ3JlYXQsIGFuZCBpbiBvcmRlciB0byBkaXNjaGFyZ2UgdGhlbSBwcm9wZXJseSBpdCBpcyBpbXBvcnRhbnQgdGhhdCBoZSBzaG91bGQgCmtub3cgc29tZXRoaW5nIG9mIHRoZSBoaWRkZW4gc2lkZSBvZiB0aGluZ3MsIHRoYXQgaGUgbWF5IHVuZGVyc3RhbmQgdGhlIHJlYWwgCm1lYW5pbmcgb2YgdGhlIHNlcnZpY2VzIG9mIHRoZSBDaHVyY2ggdG8gd2hpY2ggaGUgYmVsb25ncywgYW5kIGhvdyB0byBvcmRlciB0aGVtIAphcmlnaHQuIAoKCjEyODIuwqDCoMKgwqAKTXVjaCBleGNlcHRpb24gaGFzIGJlZW4gdGFrZW4gYnkgdGhlIGlnbm9yYW50IHRvIHRoZSBzdGF0ZW1lbnQgYWx3YXlzIAptYWRlIGJ5IHRoZSBDaHVyY2ggdGhhdCB0aGUgY2VsZWJyYXRpb24gb2YgdGhlIEV1Y2hhcmlzdCBpcyBhIGRhaWx5IHJlcGV0aXRpb24gCm9mIHRoZSBzYWNyaWZpY2Ugb2YgdGhlIENocmlzdC4gQnV0IHdoZW4gd2UgdW5kZXJzdGFuZCBmcm9tIHRoZSBvY2N1bHQgcG9pbnQgb2YgCnZpZXcgdGhhdCB0aGF0IHNhY3JpZmljZSBvZiB0aGUgQ2hyaXN0IG1lYW5zIHRoZSBkZXNjZW50IGludG8gbWF0dGVyIG9mIHRoZSAKb3V0cG91cmluZyBvZiB0aGUgU2Vjb25kIEFzcGVjdCBvZiBEZWl0eSwgd2Ugc2VlIHRoYXQgdGhlIHN5bWJvbGlzbSBpcyBhbiAKYWNjdXJhdGUgb25lLCBzaW5jZSB0aGUgb3V0ZmxvdyBvZiBmb3JjZSBldm9rZWQgYnkgdGhlIGNvbnNlY3JhdGlvbiBoYXMgYSAKc3BlY2lhbCBhbmQgaW50aW1hdGUgY29ubmVjdGlvbiB3aXRoIHRoYXQgZGVwYXJ0bWVudCBvZiBuYXR1cmUgd2hpY2ggaXMgdGhlIApleHByZXNzaW9uIG9mIHRoYXQgZGl2aW5lIEFzcGVjdC4gCgoKMTI4My7CoMKgwqDCoApUaGUgcHJpZXN0IHdobyBjb21wcmVoZW5kcyB0aGlzIHdpbGwgbm90IGZhaWwgdG8gYXNzaWduIHRvIHRoYXQgc2VydmljZSAKaXRzIGR1ZSBwb3NpdGlvbiwgYW5kIHdpbGwgdGFrZSBjYXJlIHRvIHN1cnJvdW5kIGl0cyBjdWxtaW5hdGluZyBwb2ludCB3aXRoIAp3aGF0ZXZlciBpbiB0aGUgd2F5IG9mIHJpdHVhbCBhbmQgbXVzaWMgd2lsbCBhZGQgdG8gaXRzIGVmZmVjdCBhbmQgcHJlcGFyZSB0aGUgCnBlb3BsZSB0byB0YWtlIHBhcnQgaW4gaXQgbW9yZSByZWNlcHRpdmVseS4gUmVhbGlzaW5nIGFsc28gb2YgaG93IHRyZW1lbmRvdXMgYSAKbXlzdGVyeSBoZSBpcyBoZXJlIHRoZSBjdXN0b2RpYW4sIGhlIHdpbGwgYXBwcm9hY2ggaXRzIGNlbGVicmF0aW9uIHdpdGggdGhlIAp1dG1vc3QgcmV2ZXJlbmNlIGFuZCBhd2UsIGZvciB0aG91Z2ggaGlzIGF0dGl0dWRlIHRvd2FyZHMgaXQgbWFrZXMgbm8gZGlmZmVyZW5jZSAKdG8gdGhlIGNlbnRyYWwgZmFjdCBhbmQgdG8gaXRzIGVmZmVjdHMsIHRoZXJlIGlzIG5vIGRvdWJ0IHRoYXQgaGlzIGRlZXAgCmRldm90aW9uLCBoaXMgY29tcHJlaGVuc2lvbiBhbmQgY28tb3BlcmF0aW9uIGNhbiBicmluZyBkb3duIGFuIGFkZGl0aW9uYWwgCmluZmx1ZW5jZSB3aGljaCB3aWxsIGJlIG9mIHRoZSBncmVhdGVzdCBoZWxwIHRvIGhpcyBjb25ncmVnYXRpb24gYW5kIGhpcyBwYXJpc2guIApBIHByaWVzdCB3aG8gaGFzIHRoZSBhZHZhbnRhZ2Ugb2YgYmVpbmcgYWxzbyBhbiBvY2N1bHRpc3QgaGFzIGEgbWFnbmlmaWNlbnQgCm9wcG9ydHVuaXR5IG9mIHdpZGVzcHJlYWQgdXNlZnVsbmVzcy4gCgoKMTI4NC7CoMKgwqDCoApBcyBhIHN0dWRlbnQgb2YgbWFnaWMsIGhlIGFwcHJlY2lhdGVzIHRvIHRoZSBmdWxsLCB0aGUgZWZmZWN0IHByb2R1Y2VkIGJ5IAptdXNpYywgYW5kIGtub3dzIGhvdyB0byB1dGlsaXNlIGl0IHNvIGFzIHRvIHByb2R1Y2UgaGFybW9uaW91cyBhbmQgcG93ZXJmdWwgCmZvcm1zLiBBIGdyZWF0IGRlYWwgbWF5IGJlIGRvbmUgYnkgaW5kdWNpbmcgdGhlIGNvbmdyZWdhdGlvbiBhcyBmYXIgYXMgcG9zc2libGUgCnRvIGpvaW4gaW4gdGhlIG11c2ljIG9mIHRoZSBjaHVyY2guIEl0IGlzIGltcG9zc2libGUgdGhhdCB0aGV5IHNob3VsZCBkbyBzbyBpbiAKdGhlIHByb2R1Y3Rpb24gb2YgdGhlIG1vcmUgZWxhYm9yYXRlIGFuZCBtYWduaWZpY2VudCBmb3Jtcywgd2hpY2ggcHJvZHVjZSAKZmFyLXJlYWNoaW5nIGVmZmVjdHMgYXQgaGlnaGVyIGxldmVscywgYnV0IHRoZXkgdGhlbXNlbHZlcyBtYXkgYmUgaGVscGVkIHRvIGFuIAphbG1vc3QgaW5jYWxjdWxhYmxlIGV4dGVudCBpZiB0aGV5IGNhbiBiZSBpbmR1Y2VkIHRvIGpvaW4gaGVhcnRpbHkgaW4gc3RpcnJpbmcgCmFuZCB3ZWxsLWNob3NlbiBoeW1ucyBhbmQgY2hhbnRzLiAKCgoxMjg1LsKgwqDCoMKgClRoaXMgaGFzIGJlZW4gbW9yZSBmdWxseSByZWNvZ25pc2VkIGJ5IHRoZSBFbmdsaXNoIGJyYW5jaCBvZiB0aGUgQ2F0aG9saWMgCkNodXJjaCB0aGFuIGJ5IHRoZSBSb21hbiwgYW5kIGEgY29ycmVzcG9uZGluZyBhZHZhbnRhZ2UgaGFzIGJlZW4gcmVhcGVkLiBUaGUgCnBvd2VyZnVsIGluZmx1ZW5jZSBvZiB0aGUgY29ycmVzcG9uZGluZyBhZHZhbnRhZ2UgaGFzIGJlZW4gcmVhcGVkLiBUaGUgcG93ZXJmdWwgCmluZmx1ZW5jZSBvZiB0aGUgcHJvY2Vzc2lvbmFsIGh5bW4gbXVzdCBub3QgYmUgbmVnbGVjdGVkLCBmb3IgdGhpcyBvcGVyYXRlcyAKdXNlZnVsbHkgaW4gYWxsIGRpcmVjdGlvbnM7IGZpcnN0LCBieSBicmluZ2luZyB0aGUgY2hvaXIgZG93biBhbW9uZyB0aGUgCmNvbmdyZWdhdGlvbiBhbmQgbW92aW5nIHRoZW0gc2xvd2x5IHRocm91Z2ggdGhlIGRpZmZlcmVudCBzZWN0aW9ucyBvZiBpdCwgdGhlIApwZW9wbGUgYXJlIGdyZWF0bHkgZW5jb3VyYWdlZCBhbmQgaGVscGVkIHRvIHRocm93IHRoZW1zZWx2ZXMgd2l0aCB2aWdvdXIgaW50byAKdGhlIHNpbmdpbmcuIFNlY29uZGx5LCB0aGUgc3BsZW5kaWQgYXBwZWFyYW5jZSBvZiBhIHdlbGwtb3JnYW5pc2VkIHByb2Nlc3Npb24sIAp0aGUgY29sb3VyIGFuZCBsaWdodCwgdGhlIHJpY2ggYmFubmVycyBhbmQgc3BsZW5kaWQgdmVzdG1lbnRzLCBhbGwgY29tYmluZSB0byAKZmlyZSB0aGUgaW1hZ2luYXRpb24sIHRvIHJhaXNlIHRoZSBwZW9wbGUnIHMgdGhvdWdodHMgYWJvdmUgdGhlIHByb3NhaWMgbGV2ZWwgb2YgCm9yZGluYXJ5IGxpZmUsIGFuZCB0byBoZWxwIHRoZWlyIGRldm90aW9uIGFuZCBlbnRodXNpYXNtLiAKCgoxMjg2LsKgwqDCoMKgCkNPTkdSRUdBVElPTlMgCgoKMTI4Ny7CoMKgwqDCoApNYW55IG9mIHRoZXNlIGNvbnNpZGVyYXRpb25zIGFwcGx5IGFsc28gdG8gbWluaXN0ZXJzIG9mIG90aGVyIApkZW5vbWluYXRpb25zLiBUaG91Z2ggdGhleSBoYXZlIG5vdCB0aGUgcG93ZXIgb2YgdGhlIHByaWVzdCB3aGljaCBicmluZ3MgdGhlbSAKaW50byB0b3VjaCB3aXRoIHRoZSByZXNlcnZvaXIgb2YgZm9yY2UgYXJyYW5nZWQgYnkgdGhlIENocmlzdCBmb3IgaGlzIENodXJjaCwgCnRoZXkgbWF5IGRvIGEgZ3JlYXQgZGVhbCBmb3IgdGhlaXIgY29uZ3JlZ2F0aW9ucywgZmlyc3QgYnkgdGhlaXIgb3duIGRldm90aW9uIAphbmQgc2Vjb25kbHkgYnkgZXZva2luZyB0aGF0IG9mIHRoZWlyIHBlb3BsZS4gVGhlIHJlc291cmNlcyBvZiBjb25ncmVnYXRpb25hbCAKbXVzaWMgYXJlIGF0IHRoZWlyIGRpc3Bvc2FsLCBhbmQgaWYgdGhleSBjYW4gd29yayB0aGVpciBmb2xsb3dlcnMgdXAgdG8gdGhlIApyZXF1aXJlZCBsZXZlbCwgdGhleSBhbHNvIG1heSBwcm9kdWNlIHRoZSB3b25kZXJmdWwgcmVzdWx0cyB3aGljaCBmbG93IGZyb20gdGhlIApjb21iaW5lZCBkZXZvdGlvbiBvZiBhIGxhcmdlIG51bWJlciBvZiBwZW9wbGUuIAoKCjEyODguwqDCoMKgwqAKQSBncmFuZCBvdXRwb3VyaW5nIG9mIGZvcmNlLCBhbmQgYSBtYWduaWZpY2VudCBhbmQgZWZmZWN0aXZlIGNvbGxlY3RpdmUgCnRob3VnaHQtZm9ybSBjYW4gdGh1cyBiZSBtYWRlIGJ5IGEgZ2F0aGVyaW5nIG9mIG1lbiB3aG8gam9pbiBoZWFydGlseSBpbiBhIApzZXJ2aWNlOyBidXQgdGhlcmUgaXMgZ2VuZXJhbGx5IGdyZWF0IGRpZmZpY3VsdHkgaW4gb2J0YWluaW5nIHRoaXMgcmVzdWx0LCAKYmVjYXVzZSB0aGUgbWVtYmVycyBvZiB0aGUgYXZlcmFnZSBjb25ncmVnYXRpb24gYXJlIGVudGlyZWx5IHVudHJhaW5lZCBpbiAKY29uY2VudHJhdGlvbiwgYW5kIGNvbnNlcXVlbnRseSB0aGUgY29sbGVjdGl2ZSB0aG91Z2h0LWZvcm0gaXMgdXN1YWxseSBhIGJyb2tlbiAKYW5kIGNoYW90aWMgbWFzcywgaW5zdGVhZCBvZiBhIHNwbGVuZGlkIGFuZCBvcmdhbmlzZWQgd2hvbGUuIFdoZW4gaXQgaGFwcGVucyAKdGhhdCBhIG51bWJlciBvZiBvY2N1bHQgc3R1ZGVudHMgYmVsb25nIHRvIHN1Y2ggYW4gYXNzZW1ibHksIHRoZXkgY2FuIGJlIG9mIApncmVhdCB1c2UgdG8gdGhlaXIgZmVsbG93LXdvcnNoaXBwZXJzIGJ5IGNvbnNjaW91c2x5IGdhdGhlcmluZyB0b2dldGhlciB0aGUgCnNjYXR0ZXJlZCBzdHJlYW1zIG9mIGRldm90aW9uIGFuZCB3ZWxkaW5nIHRoZW0gaW50byBvbmUgaGFybW9uaW91cyBhbmQgbWlnaHR5IApjdXJyZW50LiBJdCBpcyBldmlkZW50IGF0IG9uY2UgdGhhdCBldmVyeSBtZW1iZXIgb2YgY29uZ3JlZ2F0aW9uIGhhcyBoZXJlIGEgCmRlZmluaXRlIGR1dHkuIAoKCjEyODkuwqDCoMKgwqAKTU9OQVNURVJJRVMgCgoKMTI5MC7CoMKgwqDCoApCZXR0ZXIgcmVzdWx0cyB0aGFuIHRob3NlIHByb2R1Y2VkIGJ5IGFuIG9yZGluYXJ5IGNvbmdyZWdhdGlvbiBhcmUgCmZyZXF1ZW50bHkgb2J0YWluZWQgZnJvbSB0aGUgdW5pdGVkIGRldm90aW9ucyBvZiBhIGJvZHkgb2YgbW9ua3MsIGJlY2F1c2UgdGhleSAKaGF2ZSBncmFkdWFsbHkgdHJhaW5lZCB0aGVtc2VsdmVzIGludG8gc29tZXRoaW5nIGFwcHJvYWNoaW5nIHRvIGNvbmNlbnRyYXRpb24sIAphbmQgYXJlIGFsc28gd2VsbCB1c2VkIHRvIHdvcmtpbmcgdG9nZXRoZXIuIFRoZSBpbmZsdWVuY2UgZmxvd2luZyBmcm9tIGEgCm1vbmFzdGVyeSBvciBudW5uZXJ5IG9mIHRoZSBjb250ZW1wbGF0aXZlIG9yZGVyIGlzIG9mdGVuIGJlYXV0aWZ1bCBhbmQgbW9zdCAKaGVscGZ1bCB0byB0aGUgd2hvbGUgY291bnRyeS1zaWRlLS0gYSBmYWN0IHdoaWNoIHNob3dzIGNsZWFybHkgaG93IGZvb2xpc2ggYW5kIApzaG9ydC1zaWdodGVkIGlzIHRoZSBvYmplY3Rpb24gc29tZXRpbWVzIG1hZGUgYnkgdGhlIFByb3Rlc3RhbnQgdGhhdCwgd2hpbGUgdGhlIAphY3RpdmUgb3JkZXJzIG9mIG1vbmtzIGFyZSBhdCBsZWFzdCBkb2luZyBnb29kIHdvcmsgYW1vbmcgdGhlIHBvb3IgYW5kIHRoZSBzaWNrLCAKdGhvc2Ugd2hvIGFkb3B0IGEgY29udGVtcGxhdGl2ZSBsaW5lIGFyZSBtZXJlbHkgZHJlYW1pbmcgYXdheSB0aGVpciBsaXZlcyBpbiAKc2VsZmlzaCBpc29sYXRpb24gZnJvbSB0aGUgcmVzdCBvZiB0aGUgd29ybGQuIAoKCjEyOTEuwqDCoMKgwqAKSW4gbW9zdCBvZiBzdWNoIG1vbmFzdGVyaWVzIHRoZSBob3VycyBvZiBwcmF5ZXIgYXJlIHN0cmljdGx5IG9ic2VydmVkLCAKYW5kIHRoZSBlZmZlY3Qgb2YgdGhpcyBpcyBhIHJlZ3VsYXIgb3V0LWZsb3cgb2YgZm9yY2Ugb3ZlciB0aGUgbmVpZ2hib3VyaG9vZCAKbWFueSB0aW1lcyBlYWNoIGRheS4gVGhlcmUgYXJlIHNvbWUgc3VjaCBpbnN0aXR1dGlvbnMgaW4gd2hpY2ggdGhlIHNjaGVtZSBvZiAKcGVycGV0dWFsIGFkb3JhdGlvbiBpcyBjYXJyaWVkIG91dCBiZWZvcmUgdGhlIGNvbnNlY3JhdGVkIEhvc3QgaW4gdGhlIGNoYXBlbCBvZiAKdGhlIG1vbmFzdGVyeSwgYW5kIGluIHN1Y2ggYSBjYXNlIHRoZXJlIGlzIGEgc3RlYWR5IGFuZCBwb3dlcmZ1bCBzdHJlYW0gYWx3YXlzIApwb3VyaW5nIG91dCwgYm90aCBuaWdodCBhbmQgZGF5LCBicmluZ2luZyB0byB0aGUgc3Vycm91bmRpbmcgY291bnRyeSBhIGJlbmVmaXQgCndoaWNoIGNhbiBoYXJkbHkgYmUgb3ZlcmVzdGltYXRlZC4gCgoKMTI5Mi7CoMKgwqDCoApFRkZFQ1QgVVBPTiBUSEUgREVBRCAKCgoxMjkzLsKgwqDCoMKgClRoZSBlZmZlY3QgcHJvZHVjZWQgaW4gYWxsIHRoZXNlIGNhc2VzIGlzIGZhciB3aWRlciB0aGFuIHRoZSBvcmRpbmFyeSAKdGhpbmtlciByZWFsaXNlcy4gVGhlIHlvdW5nIHN0dWRlbnQgb2Ygb2NjdWx0aXNtLCBpZiBoZSBkb2VzIG5vdCBoYXBwZW4gdG8gYmUgCmNsYWlydm95YW50LCBzb21ldGltZXMgZmluZHMgaXQgZGlmZmljdWx0IHRvIHJlbWVtYmVyIHRoYXQgdGhlIGhvc3Qgb2YgdGhlIAp1bnNlZW4gaXMgc28gbXVjaCBncmVhdGVyIHRoYW4gdGhlIG51bWJlciBvZiB0aGUgc2VlbiwgYW5kIHRoYXQgdGhlcmVmb3JlIHRoZSAKcGVvcGxlIHdobyBiZW5lZml0IGJ5IGNodXJjaCBzZXJ2aWNlcyBvciBieSBvdXRwb3VyaW5ncyBvZiBjb2xsZWN0aXZlIHRob3VnaHQgCmFuZCBmZWVsaW5nIGFyZSBub3Qgb25seSB0aGUgbGl2aW5nIGJ1dCBhbHNvIHRoZSBkZWFkLS0gbm90IG9ubHkgaHVtYW4gYmVpbmdzIApldmVuLCBidXQgZ3JlYXQgaG9zdHMgb2YgbmF0dXJlLXNwaXJpdHMgYW5kIG9mIHRoZSBsb3dlciBvcmRlcnMgb2YgdGhlIGFuZ2Vscy4gCk5hdHVyYWxseSwgd2hhdGV2ZXIgZmVlbGluZyBtYXkgYmUgYXJvdXNlZCBpbiB0aGVtIHJlYWN0cyB1cG9uIHVzIGluIHR1cm4sIHNvIAp0aGF0IG1hbnkgZGlmZmVyZW50IGZhY3RvcnMgY29tYmluZSB0byBzdHJlbmd0aGVuIHVzIHdoZW4gd2UgbWFrZSBhbnkgZWZmb3J0IGZvciAKZ29vZC4gCgoKMTI5NC7CoMKgwqDCoApUaGUgQ2hyaXN0aWFuIENodXJjaCBkaXJlY3RzIHNvbWUgb2YgaGVyIGVmZm9ydHMgaW50ZW50aW9uYWxseSB0b3dhcmRzIApoZXIgZGVwYXJ0ZWQgbWVtYmVycywgYW5kIHByYXllcnMgYW5kIG1hc3NlcyBmb3IgdGhlIGRlYWQgYXJlIGEgZ3JlYXQgZmVhdHVyZSBvZiAKdGhlIGxpZmUgaW4gQ2F0aG9saWMgY291bnRyaWVzLiBBIG1vc3QgdXNlZnVsIGZlYXR1cmUgY2VydGFpbmx5OyBmb3Igbm90IG9ubHkgZG8gCnRoZSBnb29kIHdpc2hlcyBhbmQgdGhlIG91dHBvdXJpbmdzIG9mIGZvcmNlIHJlYWNoIGFuZCBoZWxwIHRob3NlIGF0IHdob20gdGhleSAKYXJlIGFpbWVkLCBidXQgYWxzbyB0aGUgZm9ybWF0aW9uIG9mIHN1Y2ggcHJheWVycyBhbmQgd2lzaGVzIGlzIGEgZ29vZCBhbmQgCmNoYXJpdGFibGUgdW5kZXJ0YWtpbmcgZm9yIHRoZSBsaXZpbmcsIGJlc2lkZXMgcHJvdmlkaW5nIHRoZW0gd2l0aCBhIApzYXRpc2ZhY3RvcnkgYW5kIGNvbnNvbGF0b3J5IG91dGxldCBmb3IgdGhlaXIgZmVlbGluZ3MgaW4gdGhlIHNoYXBlIG9mIGRvaW5nIApzb21ldGhpbmcgdG8gaGVscCB0aGUgZGVwYXJ0ZWQgaW5zdGVhZCBvZiBtZXJlbHkgbW91cm5pbmcgZm9yIHRoZW0uIAoKCjEyOTUuwqDCoMKgwqAKU0FWSU5HIFNPVUxTIAoKCjEyOTYuwqDCoMKgwqAKSHVuZHJlZHMgb2YgZ29vZCBhbmQgZWFybmVzdCBwZW9wbGUgYXJlIHB1dHRpbmcgYSBncmVhdCBkZWFsIG9mIHN0cmVuZ3RoIAphbmQgZGV2b3Rpb24gaW50byBlZmZvcnRzIChhcyB0aGV5IHB1dCBpdCkgdG8g77+9c2F2ZSBzb3Vsc++/vS0tIHdoaWNoIHRvIHRoZW0gCmdlbmVyYWxseSBtZWFucyBpbXByaXNvbmluZyBwZW9wbGUgd2l0aGluIHRoZSBsaW1pdHMgb2Ygc29tZSBwYXJ0aWN1bGFybHkgbmFycm93IAphbmQgdW5jaGFyaXRhYmxlIHNlY3QuIEZvcnR1bmF0ZWx5LCB0aGVpciBlbmRlYXZvdXJzIGluIHRoaXMgcGFydGljdWxhciAKZGlyZWN0aW9uIGFyZSBub3Qgb2Z0ZW4gc3VjY2Vzc2Z1bC4gQnV0IHdlIG11c3Qgbm90IHN1cHBvc2UgdGhhdCBhbGwgdGhlaXIgCmVuZXJneSBhbmQgdGhvdWdodCBmb3Igb3RoZXJzIGlzIHRoZXJlZm9yZSBuZWNlc3NhcmlseSB3YXN0ZWQuIEl0IGRvZXMgbm90IGRvIApoYWxmIHRoZSBnb29kIHRoYXQgaXQgd291bGQgaWYgaXQgd2VyZSBpbnRlbGxpZ2VudGx5IGRpcmVjdGVkOyBidXQgc3VjaCBhcyBpdCAKaXMsIGl0IGlzIHVuc2VsZmlzaCBhbmQga2luZGx5IG1lYW50LCBhbmQgc28gaXQgYnJpbmdzIGRvd24gYSBjZXJ0YWluIGFtb3VudCBvZiAKcmVzcG9uc2UgZnJvbSBoaWdoZXIgbGV2ZWxzLCB3aGljaCBpcyBwb3VyZWQgdXBvbiBib3RoIHRoZSBwZXRpdGlvbmVyIGFuZCB0aGUgCm9iamVjdCBvZiBoaXMgcHJheWVycy4gSWYgdGhlIHN1cHBsaWFudCBiZSBlYXJuZXN0IGFuZCBmcmVlIGZyb20gY29uY2VpdCwgTmF0dXJlIAphbnN3ZXJzIHRoZSBzcGlyaXQgcmF0aGVyIHRoYW4gdGhlIGxldHRlciBvZiBzdWNoIGEgcmVxdWVzdCwgYW5kIGJyaW5ncyBnZW5lcmFsIApnb29kIGFuZCBhZHZhbmNlbWVudCB0byBpdHMgb2JqZWN0IHdpdGhvdXQgYWxzbyBpbmZsaWN0aW5nIHVwb24gaGltIHRoZSBjdXJzZSBvZiAKYSBuYXJyb3cgdGhlb2xvZ3kuIAoKCjEyOTcuwqDCoMKgwqAKUEVPUExFIFdITyBESVNMSUtFIENFUkVNT05JRVMgCgoKMTI5OC7CoMKgwqDCoApUaGVyZSBhcmUgaW4gdGhlIHdvcmxkIG1hbnkgcGVvcGxlIHNvIGNvbnN0aXR1dGVkIHRoYXQgY2VyZW1vbmllcyBvZiBhbnkgCnNvcnQgZG8gbm90IGFwcGVhbCB0byB0aGVtLiBJdCBtYXkgYmUgYXNrZWQgd2hhdCBraW5kIG9mIHByb3Zpc2lvbiBOYXR1cmUgbWFrZXMgCmZvciB0aGVtLCBhbmQgaG93IHRoZXkgYXJlIGNvbXBlbnNhdGVkIGZvciB0aGVpciBpbmFiaWxpdHkgdG8gYXBwcmVjaWF0ZSBvciB0byAKc2hhcmUgaW4gdGhlIGJlbmVmaXRzIG9mIHRoZXNlIHZhcmlvdXMgbGluZXMgb2YgZWNjbGVzaWFzdGljYWwgaW5mbHVlbmNlIG9mIAp3aGljaCBJIGhhdmUgd3JpdHRlbi4gRmlyc3QgdG8gYSBjb25zaWRlcmFibGUgZXh0ZW50IHRoZXkgZG8gc2hhcmUgaW4gdGhlIApiZW5lZml0IG9mIHRoZW0sIHRob3VnaCB0aGV5IHdvdWxkIHByb2JhYmx5IGJlIHRoZSBsYXN0IHBlb3BsZSB0byBhZG1pdCBpdC4gClBlcmhhcHMgdGhleSBuZXZlciBlbnRlciBjaHVyY2hlczsgYnV0IEkgaGF2ZSBhbHJlYWR5IGRlc2NyaWJlZCBob3cgdGhlc2UgCmluZmx1ZW5jZXMgcmFkaWF0ZSBmYXIgYmV5b25kIHRoZSBtZXJlIGJ1aWxkaW5ncywgYW5kIGhvdyB0aGUgdmlicmF0aW9ucyBhcmUgCnNlbnQgb3V0IG9uIGFsbCBsZXZlbHMsIGFuZCBjb25zZXF1ZW50bHkgaGF2ZSBzb21ldGhpbmcgd2hpY2ggYWZmZWN0cyBhbGwgCnZhcmlldGllcyBvZiBwZW9wbGUuIAoKCjEyOTkuwqDCoMKgwqAKU3RpbGwsIGl0IGlzIGNsZWFyIHRoYXQgc3VjaCBtZW4gbWlzcyBhIGdvb2QgZGVhbCB3aGljaCB0aGUgb3RoZXJzIG1heSAKZ2FpbiBpZiB0aGV5IHdpbGw7IHdoYXQgc291cmNlcyB0aGVuIGFyZSBvcGVuIHRvIHRoZW0gZnJvbSB3aGljaCB0aGV5IG1heSBvYnRhaW4gCmNvcnJlc3BvbmRpbmcgYWR2YW5jZT8gVGhleSBjYW5ub3Qgd2VsbCBnYWluIHRoZSBzYW1lIHVwbGlmdGluZy0tIG5vciwgSSAKc3VwcG9zZSwgd291bGQgdGhleSBkZXNpcmUgaXQ7IGJ1dCB0aGV5IG1heSBnYWluIGEgbWVudGFsIHN0aW11bHVzLiBKdXN0IGFzIHRoZSAKdGhvdWdodCBvZiB0aGUgZ3JlYXQgc2FpbnQsIHJhZGlhdGluZyBvdXQgYWxsIHJvdW5kIGhpbSwgYXJvdXNlcyBkZXZvdGlvbiBpbiAKdGhvc2Ugd2hvIGFyZSBjYXBhYmxlIG9mIGZlZWxpbmcgaXQsIHNvIGRvZXMgdGhlIHRob3VnaHQgb2YgdGhlIGdyZWF0IG1hbiBvZiAKc2NpZW5jZSwgb3Igb2YgYW55b25lIHdobyBpcyBoaWdobHkgZGV2ZWxvcGVkIGludGVsbGVjdHVhbGx5LCByYWRpYXRlIG91dCB1cG9uIAp0aGUgbWVudGFsIGxldmVsIGFuZCBhZmZlY3QgdGhlIG1pbmRzIG9mIG90aGVycywgc28gZmFyIGFzIHRoZXkgYXJlIGNhcGFibGUgb2YgCnJlc3BvbmRpbmcgdG8gaXQuIEl0cyBhY3Rpb24gc3RpbXVsYXRlcyBtZW50YWwgZGV2ZWxvcG1lbnQsIHRob3VnaCBpdCBkb2VzIG5vdCAKbmVjZXNzYXJpbHkgYWN0IHNvIGRpcmVjdGx5IHVwb24gdGhlIGNoYXJhY3RlciBhbmQgZGlzcG9zaXRpb24gb2YgdGhlIG1hbiBhcyAKZG9lcyB0aGUgb3RoZXIgaW5mbHVlbmNlLiAKCgoxMzAwLsKgwqDCoMKgClBlcmZlY3Qga25vd2xlZGdlIG11c3QgbWFrZSBmb3IgZ29vZG5lc3Mgb2YgbGlmZSBhcyBtdWNoIGFzIHBlcmZlY3QgCmRldm90aW9uOyBidXQgd2UgYXJlIGFzIHlldCBzbyBmYXIgZnJvbSBwZXJmZWN0aW9uIHRoYXQgaW4gcHJhY3RpY2FsIGxpZmUgd2UgCmhhdmUgdG8gZGVhbCByYXRoZXIgd2l0aCB0aGUgaW50ZXJtZWRpYXRlIG9yIGV2ZW4gZWxlbWVudGFyeSBzdGFnZXMsIGFuZCBpdCAKc2VlbXMgY2xlYXIgdGhhdCBlbGVtZW50YXJ5IGtub3dsZWRnZSBpcyBsZXNzIGxpa2VseSBvbiB0aGUgd2hvbGUgdG8gYWZmZWN0IHRoZSAKY2hhcmFjdGVyIHRoYW4gZWxlbWVudGFyeSBkZXZvdGlvbi4gQm90aCBhcmUgbmVjZXNzYXJ5LCBhbmQgYmVmb3JlIEFkZXB0c2hpcCBpcyAKcmVhY2hlZCBib3RoIG11c3QgYmUgYWNxdWlyZWQgaW4gdGhlaXIgZW50aXJldHk7IGJ1dCBhdCBwcmVzZW50IHdlIGFyZSBzbyAKcGFydGlhbGx5IGRldmVsb3BlZCB0aGF0IHRoZSB2YXN0IG1ham9yaXR5IG9mIG1lbiBhcmUgYWltaW5nIGF0IG9uZSBhbmQgdG8gc29tZSAKZXh0ZW50IG5lZ2xlY3RpbmcgdGhlIG90aGVyLS0gSSBtZWFuLCBvZiBjb3Vyc2UsIHRoZSBtYWpvcml0eSBvZiB0aG9zZSBtZW4gd2hvIAphcmUgdHJ5aW5nIGF0IGFsbCwgZm9yIHRoZSBncmVhdGVyIHBhcnQgb2YgdGhlIHdvcmxkIGhhcyBub3QgYXJyaXZlZCBhcyB5ZXQgYXQgCnJlY29nbmlzaW5nIHRoZSBuZWNlc3NpdHkgZm9yIGVpdGhlciBrbm93bGVkZ2Ugb3IgZGV2b3Rpb24uIFRoZSBvbmx5IApvcmdhbmlzYXRpb24sIGluIHdlc3Rlcm4gY291bnRyaWVzIGF0IGxlYXN0LCB3aGljaCBmdWxseSBtZWV0cyBhbmQgc2F0aXNmaWVzIAptYW4nIHMgcmVxdWlyZW1lbnRzIGFsb25nIGJvdGggdGhlc2UgbGluZXMgYXBwZWFycyB0byBtZSB0byBiZSB0aGUgVGhlb3NvcGhpY2FsIApTb2NpZXR5LCBhbmQgaXRzIG1lZXRpbmdzLCBzbWFsbCBhbmQgdW5pbXBvcnRhbnQgdGhvdWdoIHRoZXkgbWF5IHNlZW0gdG8gYW4gCm91dHNpZGVyLCBhcmUgY2FwYWJsZSB3aGVuIHByb3Blcmx5IG1hbmFnZWQgb2YgcmFkaWF0aW5nIGEgcG93ZXJmdWwgaW5mbHVlbmNlIAp3aGljaCB3aWxsIGJlIGV4Y2VlZGluZ2x5IHVzZWZ1bCB0byB0aGUgY29tbXVuaXR5LiAKCgoxMzAxLsKgwqDCoMKgClRIRU9TT1BISUNBTCBNRUVUSU5HUyAKCgoxMzAyLsKgwqDCoMKgCkEgbWVldGluZyBtYXkgcHJvZHVjZSBtb3N0IGltcG9ydGFudCByZXN1bHRzLCBub3Qgb25seSBmb3IgdGhvc2Ugd2hvIHRha2UgCnBhcnQgaW4gaXQsIGJ1dCBmb3IgdGhlaXIgdW5jb25zY2lvdXMgbmVpZ2hib3Vycy4gQnV0IGluIG9yZGVyIHRoYXQgaXQgbWF5IGRvIAp0aGlzLCB0aGUgbWVtYmVycyBtdXN0IHVuZGVyc3RhbmQgdGhlIGhpZGRlbiBzaWRlIG9mIHRoZWlyIG1lZXRpbmcsIGFuZCBtdXN0IAp3b3JrIHdpdGggYSB2aWV3IHRvIHByb2R1Y2UgdGhlIGhpZ2hlc3QgcG9zc2libGUgZWZmZWN0cy4gTWFueSBtZW1iZXJzIHV0dGVybHkgCm92ZXJsb29rIHRoaXMgbW9zdCBpbXBvcnRhbnQgcGFydCBvZiB0aGVpciB3b3JrLCBhbmQgaGF2ZSBpbiBjb25zZXF1ZW5jZSBxdWl0ZSAKYW4gdW53b3J0aHkgaWRlYSBvZiB3aGF0IHRoZSB3b3JrIG9mIGEgTG9kZ2UgaXMuIAoKCjEzMDMuwqDCoMKgwqAKSSBoYXZlIHNvbWV0aW1lcyBoZWFyZCBhIG1lbWJlciBmcmFua2x5IGNvbmZlc3MgdGhhdCB0aGUgTG9kZ2UgbWVldGluZ3MgCmFyZSBvZnRlbiByYXRoZXIgZHVsbCwgYW5kIHNvIGhlIGRvZXMgbm90IGFsd2F5cyBhdHRlbmQgdGhlbS4gQSBtZW1iZXIgd2hvIG1ha2VzIApzdWNoIGEgcmVtYXJrIGhhcyBub3QgZ3Jhc3BlZCB0aGUgbW9zdCBydWRpbWVudGFyeSBmYWN0cyBhYm91dCB0aGUgd29yayBvZiB0aGUgCkxvZGdlOyBoZSBldmlkZW50bHkgc3VwcG9zZXMgdGhhdCBpdCBleGlzdHMgZm9yIHRoZSBwdXJwb3NlIG9mIGFtdXNpbmcgaGltLCBhbmQgCmlmIGl0cyBtZWV0aW5ncyBhcmUgbm90IGludGVyZXN0aW5nIHRvIGhpbSBoZSB0aGlua3MgdGhhdCBoZSBpcyBiZXR0ZXIgb2ZmIGF0IApob21lLiBUaGUgZXhjdXNlIGZvciBzdWNoIGFuIGF0dGl0dWRlIChpZiB0aGVyZSBpcyBhbiBleGN1c2UpIGlzIHRoYXQgdGhyb3VnaCAKbWFueSBsaXZlcywgYW5kIHByb2JhYmx5IHRocm91Z2ggdGhlIGVhcmxpZXIgcGFydCBvZiB0aGlzIGxpZmUsIHN1Y2ggYSBtYW4gaGFzIApiZWVuIGxvb2tpbmcgYXQgZXZlcnl0aGluZyBlbnRpcmVseSBmcm9tIHRoZSBvdXRzaWRlIGFuZCBmcm9tIHRoZSBzZWxmaXNoIHBvaW50IApvZiB2aWV3LCBhbmQgaGUgaXMgb25seSBub3cgZ3JhZHVhbGx5IGFjY3VzdG9taW5nIGhpbXNlbGYgdG8gdGhlIHRydWUgYW5kIGhpZ2hlciAKc3RhbmRwb2ludC0tIHRoZSBjb21tb24tc2Vuc2UgYXR0aXR1ZGUgd2hpY2ggdGFrZXMgYWNjb3VudCBvZiBhbGwgdGhlIGZhY3RvcnMsIAp0aGUgaGlnaGVyIGFzIHdlbGwgYXMgdGhlIGxvd2VyIGFuZCBsZXNzIGltcG9ydGFudC4gCgoKMTMwNC7CoMKgwqDCoApUaGUgcGVyc29uIHdobyBhdHRlbmRzIGEgbWVldGluZyBmb3IgdGhlIHNha2Ugb2Ygd2hhdCBoZSBjYW4gZ2V0LCBvciB0byAKYmUgZW50ZXJ0YWluZWQgdGhlcmUsIGlzIHRoaW5raW5nIG9mIGhpbXNlbGYgb25seSBhbmQgbm90IG9mIGhpcyBMb2RnZSBvciBvZiB0aGUgClNvY2lldHkuIFdlIHNob3VsZCBqb2luIHRoZSBTb2NpZXR5IG5vdCBmb3IgYW55dGhpbmcgdGhhdCB3ZSBnZXQgZnJvbSBpdCwgYnV0IApiZWNhdXNlLCBoYXZpbmcgc2F0aXNmaWVkIG91cnNlbHZlcyBvZiB0aGUgdHJ1dGggb2Ygd2hhdCBpdCBwcm9jbGFpbXMsIHdlIGFyZSAKYW54aW91cyB0byBzcHJlYWQgdGhhdCB0cnV0aCB0byBvdGhlcnMgYXMgZmFyIGFzIHBvc3NpYmxlLiBJZiB3ZSBhcmUgbWVyZWx5IApzZWxmaXNoIGluIHJlZ2FyZCB0byB0aGlzIG1hdHRlciwgd2UgY2FuIGJ1eSB0aGUgVGhlb3NvcGhpY2FsIGJvb2tzIGFuZCBzdHVkeSAKdGhlbSB3aXRob3V0IGJlbG9uZ2luZyB0byB0aGUgU29jaWV0eSBhdCBhbGwuIFdlIGpvaW4gaXQgZm9yIHRoZSBzYWtlIG9mIApzcHJlYWRpbmcgdGhlIHRlYWNoaW5nLCBhbmQgZm9yIHRoZSBzYWtlIG9mIHVuZGVyc3RhbmRpbmcgaXQgYmV0dGVyIGJ5IApkaXNjdXNzaW5nIGl0IHdpdGggdGhvc2Ugd2hvIGhhdmUgc3BlbnQgeWVhcnMgaW4gdHJ5aW5nIHRvIGxpdmUgaXQuIFdlIHdobyAKYmVsb25nIHRvIGl0IGRvIGdldCBhIGdvb2QgZGVhbCBmcm9tIGl0LCBpbiB0aGUgd2F5IG9mIGluc3RydWN0aW9uIGFuZCBvZiBoZWxwIAppbiB1bmRlcnN0YW5kaW5nIGRpZmZpY3VsdCBwb2ludHMsIG9mIGJyb3RoZXJseSBmZWVsaW5nIGFuZCBvZiBraW5kbHkgdGhvdWdodC4KCgoxMzA1LsKgwqDCoMKgCkkga25vdyB0aGF0IEkgaGF2ZSByZWNlaXZlZCBtdWNoIG9mIGFsbCB0aGVzZSB0aGluZ3MgZHVyaW5nIG15IHRoaXJ0eSAKeWVhcnMgb2YgbWVtYmVyc2hpcCwgYnV0IEkgYW0gcXVpdGUgc3VyZSB0aGF0IGlmIEkgaGFkIGpvaW5lZCB0aGUgU29jaWV0eSB3aXRoIAp0aGUgaWRlYSBvZiBnZXR0aW5nIHNvbWV0aGluZyBvdXQgb2YgaXQsIEkgc2hvdWxkIG5vdCBoYXZlIGdhaW5lZCBoYWxmIG9mIHdoYXQgSSAKaGF2ZS4gSW4gbXkgZXhwZXJpZW5jZSBvZiB0aGUgU29jaWV0eSBJIGhhdmUgc2VlbiBvdmVyIGFuZCBvdmVyIGFnYWluIHRoYXQgdGhlIApwZXJzb24gd2hvIGNvbWVzIGluIHdpdGggdGhlIGlkZWEg77+9V2hhdCBzaGFsbCBJIGdldD/vv70gZ2FpbnMgbGl0dGxlLCBiZWNhdXNlIHNvIApmYXIgYXMgdGhlIGZsb3dpbmcgb2YgaGlnaGVyIGZvcmNlcyBnb2VzIGhlIGlzIGEgY3VsLWRlLXNhYyA7IGhlIGlzIAp3aGF0IHBsdW1iZXJzIGNhbGwgYSDvv71kZWFkIGVuZCzvv70gb3V0IG9mIHdoaWNoIG5vdGhpbmcgaXMgcnVubmluZy4gV2hhdCBjYW4gdGhlcmUgCmJlIGluIHRoZSBkZWFkIGVuZCBvZiBhIHBpcGUgYnV0IGEgbGl0dGxlIHN0YWduYW50IHdhdGVyPyBCdXQgaWYgdGhlIHBpcGUgYmUgCm9wZW4gYW5kIHRoZSB3YXRlciBmbG93cyBmcmVlbHksIHRoZW4gYSB2YXN0IGFtb3VudCBtYXkgcGFzcyB0aHJvdWdoLiAKCgoxMzA2LsKgwqDCoMKgCkluIHRoZSBzYW1lIHdheSwgaWYgbWVtYmVycyBjb21lIHRvIGEgbWVldGluZywgdGhpbmtpbmcgYWxsIHRoZSB0aW1lIAphYm91dCB0aGVtc2VsdmVzLCBhbmQgaG93IHRoZXkgbGlrZSB3aGF0IGlzIHNhaWQgb3IgZG9uZSwgdGhleSBhc3N1cmVkbHkgZ2FpbiAKYnV0IGxpdHRsZSBnb29kIGZyb20gaXQsIGNvbXBhcmVkIHRvIHdoYXQgdGhleSBtaWdodCBnYWluIGlmIHRoZWlyIGF0dGl0dWRlIHdlcmUgCm1vcmUgcmF0aW9uYWwuIE5vIGRvdWJ0IHN1Y2ggcGVvcGxlIGhhdmUgc3Bhc21zIG9mIHVuc2VsZmlzaG5lc3M7IGJ1dCB0aGF0IGlzIAppbnN1ZmZpY2llbnQuIFRoZSB3aG9sZSBsaWZlIG9mIGEgbWVtYmVyIG91Z2h0IHRvIGJlIGRldm90ZWQgdG8gdHJ5aW5nIHRvIGZpbGwgCmhpcyBwbGFjZSB3ZWxsLCBhbmQgdG8gZG8gaGlzIGR1dHkgdG8gdGhlIHV0bW9zdCBvZiBoaXMgcG93ZXIuIFRoZXJlZm9yZSwgYmVpbmcgCmEgbWVtYmVyIG9mIHRoZSBTb2NpZXR5IGFuZCBvZiBhIExvZGdlLCBoZSBoYXMgaGlzIGR1dHkgdG8gZG8gZnJvbSB0aGF0IHBvaW50IG9mIAp2aWV3IGFsc28uIElmIGEgbWVtYmVyIHNheXMgdGhhdCBMb2RnZSBtZWV0aW5ncyBhcmUgZHVsbCwgb25lIGFsd2F5cyBmZWVscyAKaW5jbGluZWQgdG8gYmVnaW4gYnkgYXNraW5nIGhpbTog77+9V2hhdCBhcmUgeW91IGRvaW5nIHRvIGFsbG93IHRoZW0gdG8gYmUgZHVsbD8gCllvdSBhcmUgdGhlcmUgYWxzbyBhbmQgaXQgaXMgeW91ciBidXNpbmVzcyB0byBzZWUgdGhhdCB0aGluZ3MgYXJlIGtlcHQgZ29pbmcgYXMgCmZhciBhcyBtYXkgYmUu77+9IElmIGVhY2ggaW5kaXZpZHVhbCBtZW1iZXIgZmVlbHMgcmVzdGluZyB1cG9uIGhpbSB0aGUgZHV0eSBvZiAKdHJ5aW5nIHRvIG1ha2UgZWFjaCBtZWV0aW5nIGEgc3VjY2VzcywgaXQgd2lsbCBiZSBtdWNoIG1vcmUgbGlrZWx5IHRvIHN1Y2NlZWQgCnRoYW4gaWYgaGUgZ29lcyB0aGVyZSBqdXN0IHRvIGJlIGFtdXNlZCBvciBldmVuIG1lcmVseSB0byBiZSBpbnN0cnVjdGVkLiAKCgoxMzA3LsKgwqDCoMKgCkxldCB1cyBjb25zaWRlciB0aGVuIHRoZSBoaWRkZW4gc2lkZSBvZiB0aGUgbWVldGluZyBvZiBhIFRoZW9zb3BoaWNhbCAKTG9kZ2UuIAoKCjEzMDguwqDCoMKgwqAKRm9yIHRoZSBwdXJwb3NlcyBvZiBvdXIgaWxsdXN0cmF0aW9uIEkgd2lsbCB0YWtlIHRoZSBvcmRpbmFyeSB3ZWVrbHkgCm1lZXRpbmdzLCBhdCB3aGljaCB0aGUgTG9kZ2UgaXMgcHJvc2VjdXRpbmcgaXRzIGRlZmluaXRlIGxpbmUgb2Ygc3R1ZHkuIEkgYW0gCnJlZmVycmluZyB0byB0aGUgbWVldGluZ3Mgb2YgbWVtYmVycyBvZiB0aGUgTG9kZ2Ugb25seSwgZm9yIHRoZSBvY2N1bHQgZWZmZWN0IAp3aGljaCBJIHdpc2ggdG8gZGVzY3JpYmUgaXMgaW1wb3NzaWJsZSBpbiBjb25uZWN0aW9uIHdpdGggYW55IG1lZXRpbmdzIHRvIHdoaWNoIApub24tbWVtYmVycyBhcmUgYWRtaXR0ZWQuIAoKCjEzMDkuwqDCoMKgwqAKTmF0dXJhbGx5IHRoZSB3b3JrIG9mIGV2ZXJ5IExvZGdlIGhhcyBpdHMgcHVibGljIHNpZGUuIFRoZXJlIGFyZSBsZWN0dXJlcyAKZ2l2ZW4gdG8gdGhlIHB1YmxpYywgYW5kIG9wcG9ydHVuaXRpZXMgb2ZmZXJlZCBmb3IgdGhlaXIgcXVlc3Rpb25zOyBhbGwgdGhpcyBpcyAKZ29vZCBhbmQgbmVjZXNzYXJ5LiBCdXQgZXZlcnkgTG9kZ2Ugd2hpY2ggaXMgd29ydGh5IG9mIHRoZSBuYW1lIGlzIGFsc28gZG9pbmcgCnNvbWV0aGluZyBmYXIgaGlnaGVyIHRoYW4gYW55IHdvcmsgaW4gdGhlIHBoeXNpY2FsIHdvcmxkLCBhbmQgdGhpcyBoaWdoZXIgd29yayAKY2FuIG9ubHkgYmUgZG9uZSBieSB2aXJ0dWUgb2YgaXRzIG93biBwcml2YXRlIG1lZXRpbmdzLiBGdXJ0aGVybW9yZSwgaXQgY2FuIGJlIApkb25lIG9ubHkgaWYgdGhlc2UgcHJpdmF0ZSBtZWV0aW5ncyBhcmUgcHJvcGVybHkgY29uZHVjdGVkIGFuZCBlbnRpcmVseSAKaGFybW9uaW91cy4gSWYgdGhlIG1lbWJlcnMgYXJlIHRoaW5raW5nIG9mIHRoZW1zZWx2ZXMgaW4gYW55IHdheS0tIGlmIHRoZXkgaGF2ZSAKcGVyc29uYWwgdmFuaXR5LCBzdWNoIGFzIG1pZ2h0IHNob3cgaXRzZWxmIGluIHRoZSBkZXNpcmUgdG8gc2hpbmUgb3IgdG8gdGFrZSBhIApwcm9taW5lbnQgcGFydCBpbiB0aGUgcHJvY2VlZGluZzsgaWYgdGhleSBoYXZlIG90aGVyIHBlcnNvbmFsIGZlZWxpbmdzLCBzbyB0aGF0IAp0aGV5IHdvdWxkIGJlIGNhcGFibGUgb2YgdGFraW5nIG9mZmVuY2Ugb3Igb2YgYmVpbmcgYWZmZWN0ZWQgYnkgZW52eSBvciAKamVhbG91c3ktLSBubyB1c2VmdWwgb2NjdWx0IGVmZmVjdCBjYW4gcG9zc2libHkgYmUgcHJvZHVjZWQuIEJ1dCBpZiB0aGV5IGhhdmUgCmZvcmdvdHRlbiB0aGVtc2VsdmVzIGluIHRoZSBlYXJuZXN0IGVuZGVhdm91ciB0byBjb21wcmVoZW5kIHRoZSBzdWJqZWN0IAphcHBvaW50ZWQgZm9yIHN0dWR5LCBhIGNvbnNpZGVyYWJsZSBhbmQgYmVuZWZpY2lhbCByZXN1bHQsIG9mIHdoaWNoIHRoZXkgdXN1YWxseSAKaGF2ZSBubyBjb25jZXB0aW9uLCBtYXkgcmVhZGlseSBiZSBwcm9kdWNlZC4gTGV0IG1lIGV4cGxhaW4gdGhlIHJlYXNvbiBvZiB0aGlzLgoKCjEzMTAuwqDCoMKgwqAKV2Ugd2lsbCBhc3N1bWUgYSBzZXJpZXMgb2YgbWVldGluZ3MgYXQgd2hpY2ggYSBjZXJ0YWluIGJvb2sgaXMgYmVpbmcgdXNlZCAKZm9yIHN0dWR5LiBFdmVyeSBtZW1iZXIga25vd3MgYmVmb3JlaGFuZCB3aGF0IHBhcmFncmFwaCBvciBwYWdlIHdpbGwgYmUgdGFrZW4gYXQgCnRoZSBhcHByb2FjaGluZyBtZWV0aW5nLCBhbmQgaXQgaXMgZXhwZWN0ZWQgdGhhdCBoZSBzaGFsbCB0YWtlIHRoZSB0cm91YmxlIHRvIApwcmVwYXJlIGhpbXNlbGYgdG8gYmVhciBoaXMgcGFydCBpbiBpdCBpbnRlbGxpZ2VudGx5LiBIZSBtdXN0IG5vdCBiZSBpbiB0aGUgCmF0dGl0dWRlIG9mIHRoZSB5b3VuZyBuZXN0bGluZywgd2FpdGluZyB3aXRoIG9wZW4gbW91dGggYW5kIGV4cGVjdGluZyB0aGF0IApzb21lb25lIGVsc2Ugd2lsbCBmZWVkIGhpbTsgb24gdGhlIGNvbnRyYXJ5LCBldmVyeSBtZW1iZXIgc2hvdWxkIGhhdmUgYW4gCmludGVsbGlnZW50IGNvbXByZWhlbnNpb24gb2YgdGhlIHN1YmplY3Qgd2hpY2ggaXMgdG8gYmUgY29uc2lkZXJlZCwgYW5kIHNob3VsZCAKYmUgcHJlcGFyZWQgdG8gY29udHJpYnV0ZSBoaXMgc2hhcmUgb2YgaW5mb3JtYXRpb24gd2l0aCByZWdhcmQgdG8gaXQuIAoKCjEzMTEuwqDCoMKgwqAKQSBnb29kIHBsYW4gaXMgZm9yIGVhY2ggbWVtYmVyIG9mIHRoZSBjaXJjbGUgdG8gbWFrZSBoaW1zZWxmIHJlc3BvbnNpYmxlIApmb3IgdGhlIGV4YW1pbmF0aW9uIG9mIGNlcnRhaW4gb2Ygb3VyIFRoZW9zb3BoaWNhbCBib29rcy0tIG9uZSB0YWtpbmcgdGhlIGZpcnN0IAp2b2x1bWUgb2YgVGhlIFNlY3JldCBEb2N0cmluZSwgbGV0IHVzIHNheSwgYW5vdGhlciB0aGUgc2Vjb25kLCBhbm90aGVyIAp0aGUgdGhpcmQsIGFub3RoZXIgVGhlIEFuY2llbnQgV2lzZG9tLCBhbm90aGVyIEVzb3RlcmljIEJ1ZGRoaXNtLCAKYW5kIHNvIG9uLiBTb21lIG9mIHRoZSBtZW1iZXJzIGNvdWxkIGVhc2lseSB0YWtlIHR3byBvciB0aHJlZSBvZiB0aGUgc21hbGxlciAKYm9va3MsIGFuZCBvbiB0aGUgb3RoZXIgaGFuZCwgaWYgdGhlIExvZGdlIGJlIGxhcmdlIGVub3VnaCwgYSB2b2x1bWUgb2YgVGhlIApTZWNyZXQgRG9jdHJpbmUgbWlnaHQgdmVyeSB3ZWxsIGJlIGRpdmlkZWQgYW1vbmcgc2V2ZXJhbCBtZW1iZXJzLCBlYWNoIAp0YWtpbmcgdXAgYSBodW5kcmVkIG9yIGEgaHVuZHJlZCBhbmQgZmlmdHkgcGFnZXMuIFRoZSBleGFjdCBzdWJqZWN0IHRvIGJlIApjb25zaWRlcmVkIGF0IHRoZSBuZXh0IG1lZXRpbmcgaXMgYW5ub3VuY2VkIGF0IHRoZSBwcmV2aW91cyBvbmUsIGFuZCBlYWNoIG1lbWJlciAKbWFrZXMgaGltc2VsZiByZXNwb25zaWJsZSBmb3IgbG9va2luZyBjYXJlZnVsbHkgdGhyb3VnaCB0aGUgYm9vayBvciBib29rcyAKY29tbWl0dGVkIHRvIGhpcyBjaGFyZ2UgZm9yIGFueSByZWZlcmVuY2UgdG8gaXQsIHNvIHRoYXQgd2hlbiBoZSBjb21lcyB0byB0aGUgCm1lZXRpbmcgaGUgaXMgYWxyZWFkeSBwb3NzZXNzZWQgb2YgYW55IGluZm9ybWF0aW9uIGFib3V0IGl0IHdoaWNoIGlzIGNvbnRhaW5lZCAKaW4gdGhhdCBwYXJ0aWN1bGFyIGJvb2ssIGFuZCBpcyBwcmVwYXJlZCB0byBjb250cmlidXRlIHRoaXMgd2hlbiBjYWxsZWQgdXBvbi4gSW4gCnRoaXMgd2F5IGV2ZXJ5IG1lbWJlciBoYXMgaGlzIHdvcmsgdG8gZG8sIGFuZCBlYWNoIGlzIGdyZWF0bHkgaGVscGVkIHRvIGEgZnVsbCAKYW5kIGNsZWFyIGNvbXByZWhlbnNpb24gb2YgdGhlIG1hdHRlciB1bmRlciBjb25zaWRlcmF0aW9uLCBiZWNhdXNlIGFsbCBwcmVzZW50IAphcmUgdGh1cyBlYXJuZXN0bHkgZml4aW5nIHRoZWlyIHRob3VnaHQgdXBvbiBpdC4gV2hlbiB0aGUgbWVldGluZyBvcGVucywgdGhlIApjaGFpcm1hbiB3aWxsIGZpcnN0IGFwcG9pbnQgc29tZSBvbmUgdG8gcmVhZCB0aGUgcGFzc2FnZSBjaG9zZW4gZm9yIHN0dWR5LCBhbmQgCndpbGwgdGhlbiBhc2sgZWFjaCBtZW1iZXIgaW4gdHVybiB3aGF0LCBpZiBhbnl0aGluZywgaGlzIGJvb2sgaGFzIHRvIHNheSB3aGljaCAKYmVhcnMgdXBvbiBpdC4gQWZ0ZXIgYWxsIGhhdmUgdGh1cyBib3JuZSB0aGVpciBwYXJ0LCBxdWVzdGlvbnMgbWF5IGJlIGFza2VkIGFuZCAKYW55IHBvaW50cyB3aGljaCBhcmUgbm90IHF1aXRlIGNsZWFyIG1heSBiZSBkaXNjdXNzZWQuIElmIGFueSBxdWVzdGlvbiBhcmlzZXMgCndoaWNoIHRoZSBvbGRlciBtZW1iZXJzIHByZXNlbnQgZG8gbm90IGZlZWwgdGhlbXNlbHZlcyBmdWxseSBjb21wZXRlbnQgdG8gCmFuc3dlciwgaXQgc2hvdWxkIGJlIHdyaXR0ZW4gb3V0IGFuZCBzZW50IHRvIHRoZSBIZWFkcXVhcnRlcnMgb2YgdGhlIFNvY2lldHkuCgoKMTMxMi7CoMKgwqDCoApJZiBzb21lIHN1Y2ggcGxhbiBhcyB0aGF0IGJlIGFkb3B0ZWQsIG5vIG9uZSB3aWxsIGhhdmUgcmVhc29uIHRvIGNvbXBsYWluIApvZiB0aGUgZHVsbG5lc3Mgb2YgdGhlIG1lZXRpbmdzLCBmb3IgZXZlcnkgbWVtYmVyIHdpbGwgZXhlcnQgaGltc2VsZiB0byBiZWFyIGhpcyAKb3duIHBhcnQgaW4gZWFjaCBvZiB0aGVtLiBFYWNoIG11c3QgZ28gdG8gdGhlIG1lZXRpbmcgaW4gYSBzcGlyaXQgb2YgCmhlbHBmdWxuZXNzLCB0aGlua2luZyBvZiB3aGF0IGhlIGNhbiBjb250cmlidXRlIGFuZCBpbiB3aGF0IHdheSBoZSBjYW4gYmUgCnVzZWZ1bCwgZm9yIHVwb24gdGhlIGF0dGl0dWRlIG9mIG1pbmQgbXVjaCBkZXBlbmRzLiAKCgoxMzEzLsKgwqDCoMKgCkxldCB1cyBjb25zaWRlciB3aGF0IGVmZmVjdCBzdWNoIGEgbWVldGluZyB3aWxsIHByb2R1Y2UgdXBvbiB0aGUgCm5laWdoYm91cmhvb2QgaW4gd2hpY2ggaXQgaXMgaGVsZC4gV2UgaGF2ZSBhbHJlYWR5IG5vdGVkIHRoYXQgYSBDaHVyY2ggc2VydmljZSAKaXMgYSBwb3dlcmZ1bCBjZW50cmUgb2YgaW5mbHVlbmNlOyBob3cgZG9lcyBhIFRoZW9zb3BoaWNhbCBtZWV0aW5nIGFjdCBpbiB0aGlzIApyZXNwZWN0PyAKCgoxMzE0LsKgwqDCoMKgClRvIHVuZGVyc3RhbmQgdGhhdCwgcmVjYWxsIGZvciBhIG1vbWVudCB3aGF0IGhhcyBiZWVuIHNhaWQgYXMgdG8gdGhlIAphY3Rpb24gb2YgdGhvdWdodC4gVGhlIHRob3VnaHQtd2F2ZSBtYXkgYmUgZ2VuZXJhdGVkIGF0IHZhcmlvdXMgbGV2ZWxzIG9mIHRoZSAKbWVudGFsIGJvZHkuIEEgc2VsZmlzaCB0aG91Z2h0IHVzZXMgdGhlIGxvd2VzdCBraW5kIG9mIG1lbnRhbCBtYXR0ZXIsIHdoaWxlIGFuIAp1bnNlbGZpc2ggdGhvdWdodCwgb3IgYW4gYXR0ZW1wdCB0byBjb21wcmVoZW5kIHNvbWUgZWxldmF0ZWQgaWRlYSwgdXNlcyB0aGUgCmhpZ2hlciBraW5kcyBvbmx5LiBBbiBpbnRlbnNlIGVmZm9ydCBhdCB0aGUgcmVhbGlzYXRpb24gb2YgdGhlIGFic3RyYWN0LS0gYW4gCmF0dGVtcHQgdG8gY29tcHJlaGVuZCB3aGF0IGlzIG1lYW50IGJ5IHRoZSBmb3VydGggZGltZW5zaW9uIG9yIGJ5IHRoZSB0YWJ1bGFyaXR5IApvZiBhIHRhYmxlLS0gbWVhbnMsIGlmIHN1Y2Nlc3NmdWwsIGEgZGF3bmluZyBhY3Rpdml0eSBvZiB0aGUgY2F1c2FsIGJvZHk7IHdoaWxlIAppZiB0aGUgdGhvdWdodCBpcyBtaW5nbGVkIHdpdGggdW5zZWxmaXNoIGFmZmVjdGlvbiwgd2l0aCBoaWdoIGFzcGlyYXRpb24gb3IgCmRldm90aW9uLCBpdCBpcyBldmVuIHBvc3NpYmxlIHRoYXQgYSB2aWJyYXRpb24gb2YgdGhlIGludHVpdGlvbmFsIHdvcmxkIG1heSAKZW50ZXIgaW50byBpdCBhbmQgbXVsdGlwbHkgaXRzIHBvd2VyIGEgaHVuZHJlZGZvbGQuIAoKCjEzMTUuwqDCoMKgwqAKVGhlIGRpc3RhbmNlIHRvIHdoaWNoIGEgdGhvdWdodC13YXZlIGNhbiByYWRpYXRlIGVmZmVjdGl2ZWx5LCBkZXBlbmRzIApwYXJ0bHkgdXBvbiBpdHMgbmF0dXJlIGFuZCBwYXJ0bHkgdXBvbiB0aGUgb3Bwb3NpdGlvbiB3aXRoIHdoaWNoIGl0IG1lZXRzLiBXYXZlcyAKaW4gdGhlIGxvd2VyIHR5cGVzIG9mIGFzdHJhbCBtYXR0ZXIgYXJlIHVzdWFsbHkgc29vbiBkZWZsZWN0ZWQgb3Igb3ZlcndoZWxtZWQgYnkgCmEgbXVsdGl0dWRlIG9mIG90aGVyIHZpYnJhdGlvbnMgYXQgdGhlIHNhbWUgbGV2ZWwsIGp1c3QgYXMgaW4gdGhlIG1pZHN0IG9mIHRoZSAKcm9hciBvZiBhIGdyZWF0IGNpdHkgYSBzb2Z0IHNvdW5kIGlzIGVudGlyZWx5IGRyb3duZWQuIAoKCjEzMTYuwqDCoMKgwqAKRm9yIHRoaXMgcmVhc29uIHRoZSBvcmRpbmFyeSBzZWxmLWNlbnRyZWQgdGhvdWdodCBvZiB0aGUgYXZlcmFnZSBtYW4sIAp3aGljaCBiZWdpbnMgb24gdGhlIGxvd2VzdCBvZiB0aGUgbWVudGFsIGxldmVscywgYW5kIGluc3RhbnRseSBwbHVuZ2VzIGRvd24gdG8gCmNvcnJlc3BvbmRpbmdseSBsb3cgbGV2ZWxzIG9mIHRoZSBhc3RyYWwsIGlzIGNvbXBhcmF0aXZlbHkgaW5lZmZlY3RpdmUuIEl0cyAKcG93ZXIgaW4gYm90aCB0aGUgd29ybGRzIGlzIGxpbWl0ZWQsIGJlY2F1c2UsIGhvd2V2ZXIgdmlvbGVudCBpdCBtYXkgYmUsIHRoZXJlIAppcyBzdWNoIGFuIGltbWVuc2UgYW5kIHR1cmJ1bGVudCBzZWEgb2Ygc2ltaWxhciB0aG91Z2h0IHN1cmdpbmcgYWxsIGFyb3VuZCB0aGF0IAppdHMgd2F2ZXMgYXJlIGluZXZpdGFibHkgc29vbiBsb3N0IGFuZCBvdmVycG93ZXJlZCBpbiB0aGF0IGNvbmZ1c2lvbi4gQSB0aG91Z2h0IApnZW5lcmF0ZWQgYXQgYSBoaWdoZXIgbGV2ZWwsIGhvd2V2ZXIsIGhhcyBhIG11Y2ggY2xlYXJlciBmaWVsZCBmb3IgaXRzIGFjdGlvbiwgCmJlY2F1c2UgYXQgcHJlc2VudCB0aGUgbnVtYmVyIG9mIHRob3VnaHRzIHByb2R1Y2luZyBzdWNoIHdhdmVzIGlzIHZlcnkgc21hbGwtLSAKaW5kZWVkLCBUaGVvc29waGljYWwgdGhvdWdodCBpcyBhbG1vc3QgYSBjbGFzcyBieSBpdHNlbGYgZnJvbSB0aGlzIHBvaW50IG9mIAp2aWV3LiBUaGVyZSBhcmUgcmVsaWdpb3VzIHBlb3BsZSB3aG9zZSB0aG91Z2h0IGlzIHF1aXRlIGFzIGVsZXZhdGVkIGFzIG91cnMsIGJ1dCAKbmV2ZXIgc28gcHJlY2lzZSBhbmQgZGVmaW5pdGU7IHRoZXJlIGFyZSBsYXJnZSBudW1iZXJzIG9mIHBlb3BsZSB3aG9zZSB0aG91Z2h0cyAKb24gbWF0dGVycyBvZiBidXNpbmVzcyBhbmQgbW9uZXktbWFraW5nIGFyZSBhcyBwcmVjaXNlIGFzIGNvdWxkIGJlIGRlc2lyZWQsIGJ1dCAKdGhleSBhcmUgbm90IGVsZXZhdGVkIG9yIGFsdHJ1aXN0aWMuIEV2ZW4gc2NpZW50aWZpYyB0aG91Z2h0IGlzIHNjYXJjZWx5IGV2ZXIgaW4gCnRoZSBzYW1lIGNsYXNzIGFzIHRoYXQgb2YgdGhlIHRydWUgVGhlb3NvcGhpc3QsIHNvIHRoYXQgb3VyIHN0dWRlbnRzIGhhdmUgCnByYWN0aWNhbGx5IGEgZmllbGQgdG8gdGhlbXNlbHZlcyBpbiB0aGUgbWVudGFsIHdvcmxkLiAKCgoxMzE3LsKgwqDCoMKgClRoZSByZXN1bHQgb2YgdGhpcyBpcyB0aGF0IHdoZW4gYSBtYW4gdGhpbmtzIG9uIFRoZW9zb3BoaWNhbCBzdWJqZWN0cywgaGUgCmlzIHNlbmRpbmcgb3V0IGFsbCByb3VuZCBoaW0gYSB3YXZlIHdoaWNoIGlzIHBvd2VyZnVsIGJlY2F1c2UgaXQgaXMgcHJhY3RpY2FsbHkgCnVub3Bwb3NlZCwgbGlrZSBhIHNvdW5kIGluIHRoZSBtaWRzdCBvZiBhIHZhc3Qgc2lsZW5jZSwgb3IgYSBsaWdodCBzaGluaW5nIGZvcnRoIApvbiB0aGUgZGFya2VzdCBuaWdodC4gSXQgc2V0cyBpbiBtb3Rpb24gYSBsZXZlbCBvZiBtZW50YWwgbWF0dGVyIHdoaWNoIGlzIGFzIHlldCAKYnV0IHJhcmVseSB1c2VkLCBhbmQgdGhlIHJhZGlhdGlvbnMgd2hpY2ggYXJlIGNhdXNlZCBieSBpdCBpbXBpbmdlIHVwb24gdGhlIAptZW50YWwgYm9keSBvZiB0aGUgYXZlcmFnZSBtYW4gYXQgYSBwb2ludCB3aGVyZSBpdCBpcyBxdWl0ZSBkb3JtYW50LiBUaGlzIGdpdmVzIAp0byBzdWNoIHRob3VnaHQgaXRzIHBlY3VsaWFyIHZhbHVlLCBub3Qgb25seSB0byB0aGUgdGhpbmtlciBidXQgdG8gb3RoZXJzIHJvdW5kIApoaW07IGZvciBpdHMgdGVuZGVuY3kgaXMgdG8gYXdha2VuIGFuZCB0byBicmluZyBpbnRvIHVzZSBhbiBlbnRpcmVseSBuZXcgcGFydCBvZiAKdGhlIHRoaW5raW5nIGFwcGFyYXR1cy4gU3VjaCBhIHdhdmUgZG9lcyBub3QgbmVjZXNzYXJpbHkgY29udmV5IFRoZW9zb3BoaWNhbCAKdGhvdWdodCB0byB0aG9zZSB3aG8gYXJlIGlnbm9yYW50IG9mIGl0OyBidXQgaW4gYXdha2VuaW5nIHRoaXMgaGlnaGVyIHBvcnRpb24gb2YgCnRoZSBtZW50YWwgYm9keSwgaXQgdGVuZHMgdG8gZWxldmF0ZSBhbmQgbGliZXJhbGlzZSB0aGUgbWFuJyBzIHRob3VnaHQgYXMgYSAKd2hvbGUsIGFsb25nIHdoYXRldmVyIGxpbmVzIGl0IG1heSBiZSBpbiB0aGUgaGFiaXQgb2YgbW92aW5nLCBhbmQgaW4gdGhpcyB3YXkgCnByb2R1Y2VzIGFuIGluY2FsY3VsYWJsZSBiZW5lZml0LiAKCgoxMzE4LsKgwqDCoMKgCklmIHRoZSB0aG91Z2h0IG9mIGEgc2luZ2xlIG1hbiBwcm9kdWNlcyB0aGVzZSByZXN1bHRzLCB0aGUgdGhvdWdodCBvZiAKdHdlbnR5IG9yIHRoaXJ0eSBwZW9wbGUgZGlyZWN0ZWQgdG8gdGhlIHNhbWUgc3ViamVjdCB3aWxsIGFjaGlldmUgYW4gZWZmZWN0IAplbm9ybW91c2x5IGdyZWF0ZXIuIFRoZSBwb3dlciBvZiB0aGUgdW5pdGVkIHRob3VnaHQgb2YgYSBudW1iZXIgb2YgbWVuIGlzIGFsd2F5cyAKZmFyIG1vcmUgdGhhbiB0aGUgc3VtIG9mIHRoZWlyIHNlcGFyYXRlIHRob3VnaHRzOyBpdCB3b3VsZCBiZSBtdWNoIG1vcmUgbmVhcmx5IApyZXByZXNlbnRlZCBieSB0aGVpciBwcm9kdWN0LiBTbyBpdCB3aWxsIGJlIHNlZW4gdGhhdCwgZXZlbiBmcm9tIHRoaXMgcG9pbnQgb2YgCnZpZXcgYWxvbmUsIGl0IGlzIGFuIGV4Y2VlZGluZ2x5IGdvb2QgdGhpbmcgZm9yIGFueSBjaXR5IG9yIGNvbW11bml0eSB0aGF0IGEgClRoZW9zb3BoaWNhbCBMb2RnZSBzaG91bGQgYmUgY29uc3RhbnRseSBtZWV0aW5nIGluIGl0cyBtaWRzdCwgZm9yIGl0cyAKcHJvY2VlZGluZ3MsIGlmIHRoZXkgYXJlIGNvbmR1Y3RlZCBpbiBhIHByb3BlciBzcGlyaXQsIGNhbm5vdCBidXQgaGF2ZSBhIApkaXN0aW5jdGx5IGVsZXZhdGluZyBhbmQgZW5ub2JsaW5nIGVmZmVjdCB1cG9uIHRoZSB0aG91Z2h0IG9mIHRoZSBzdXJyb3VuZGluZyAKcG9wdWxhdGlvbi4gTmF0dXJhbGx5IHRoZXJlIGFyZSBtYW55IHBlb3BsZSB3aG9zZSBtaW5kcyBjYW5ub3QgeWV0IGJlIGF3YWtlbmVkIAphdCBhbGwgdXBvbiB0aG9zZSBoaWdoZXIgbGV2ZWxzOyBidXQgZXZlbiBmb3IgdGhlbSB0aGUgY29uc3RhbnQgYmVhdGluZyBvZiB0aGUgCndhdmVzIG9mIHRoaXMgbW9yZSBhZHZhbmNlZCB0aG91Z2h0IGF0IGxlYXN0IGJyaW5ncyBuZWFyZXIgdGhlIHRpbWUgb2YgdGhlaXIgCmF3YWtlbmluZy4gCgoKMTMxOS7CoMKgwqDCoApOb3IgbXVzdCB3ZSBmb3JnZXQgdGhlIHJlc3VsdCBwcm9kdWNlZCBieSB0aGUgZm9ybWF0aW9uIG9mIGRlZmluaXRlIAp0aG91Z2h0LWZvcm1zLiBUaGVzZSBhbHNvIGFyZSByYWRpYXRlZCBmcm9tIHRoZSBjZW50cmUgb2YgYWN0aXZpdHksIGJ1dCB0aGV5IGNhbiAKYWZmZWN0IG9ubHkgc3VjaCBtaW5kcyBhcyBhcmUgYWxyZWFkeSB0byBzb21lIGV4dGVudCByZXNwb25zaXZlIHRvIGlkZWFzIG9mIHRoaXMgCm5hdHVyZS4gSW4gdGhlc2UgZGF5cywgaG93ZXZlciwgdGhlcmUgYXJlIG1hbnkgc3VjaCBtaW5kcywgYW5kIG91ciBtZW1iZXJzIGNhbiAKYXR0ZXN0IHRoZSBmYWN0IHRoYXQgYWZ0ZXIgdGhleSBoYXZlIGJlZW4gZGlzY3Vzc2luZyBzdWNoIGEgcXVlc3Rpb24gYXMgCnJlaW5jYXJuYXRpb24gaXQgbm90IGluZnJlcXVlbnRseSBoYXBwZW5zIHRoYXQgdGhleSBhcmUgdGhlbXNlbHZlcyBhc2tlZCBmb3IgCmluZm9ybWF0aW9uIHVwb24gdGhhdCBzdWJqZWN0IGJ5IHBlcnNvbnMgd2hvbSB0aGV5IGhhZCBub3QgcHJldmlvdXNseSBzdXBwb3NlZCAKdG8gYmUgaW50ZXJlc3RlZCBpbiBpdC4gVGhlIHRob3VnaHQtZm9ybSBpcyBjYXBhYmxlIG9mIGNvbnZleWluZyB0aGUgZXhhY3QgCm5hdHVyZSBvZiB0aGUgdGhvdWdodCB0byB0aG9zZSB3aG8gYXJlIHNvbWV3aGF0IHByZXBhcmVkIHRvIHJlY2VpdmUgaXQsIHdoZXJlYXMgCnRoZSB0aG91Z2h0LXZpYnJhdGlvbiwgdGhvdWdoIGl0IHJlYWNoZXMgYSBmYXIgd2lkZXIgY2lyY2xlLCBpcyBtdWNoIGxlc3MgCmRlZmluaXRlIGluIGl0cyBhY3Rpb24uIAoKCjEzMjAuwqDCoMKgwqAKSGVyZSBpcyBhbHJlYWR5IGEgbW9tZW50b3VzIGVmZmVjdCB1cG9uIHRoZSBtZW50YWwgbGV2ZWwsIHByb2R1Y2VkIHF1aXRlIAp1bmludGVudGlvbmFsbHkgYnkgb3VyIG1lbWJlcnMgaW4gdGhlIG9yZGluYXJ5IGNvdXJzZSBvZiB0aGVpciBzdHVkeS0tIHNvbWV0aGluZyAKZmFyIGdyZWF0ZXIgaW4gcmVhbGl0eSB0aGFuIHRoZWlyIGludGVudGlvbmFsIGVmZm9ydHMgaW4gdGhlIHdheSBvZiBwcm9wYWdhbmRhIAphcmUgZXZlciBsaWtlbHkgdG8gcHJvZHVjZS4gQnV0IHRoaXMgaXMgbm90IGFsbCwgZm9yIGJ5IGZhciB0aGUgbW9zdCBpbXBvcnRhbnQgCnBhcnQgaXMgeWV0IHRvIGNvbWUuIEV2ZXJ5IExvZGdlIG9mIHRoaXMgU29jaWV0eSBpcyBhIGNlbnRyZSBvZiBpbnRlcmVzdCB0byB0aGUgCkdyZWF0IE1hc3RlcnMgb2YgdGhlIFdpc2RvbSwgYW5kIHdoZW4gaXQgd29ya3Mgd2VsbCBhbmQgbG95YWxseSBUaGVpciB0aG91Z2h0cyAKYW5kIHRob3NlIG9mIFRoZWlyIHB1cGlscyBhcmUgZnJlcXVlbnRseSB0dXJuZWQgdG93YXJkcyBpdC4gSW4gdGhpcyB3YXkgYSBmb3JjZSAKbW9yZSBleGFsdGVkIHRoYW4gb3VyIG93biBtYXkgb2Z0ZW4gc2hpbmUgb3V0IGZyb20gb3VyIGdhdGhlcmluZ3MsIGFuZCBhbiAKaW5mbHVlbmNlIG9mIGluZXN0aW1hYmxlIHZhbHVlIG1heSBiZSBmb2N1c2VkIHdoZXJlLCBzbyBmYXIgYXMgd2Uga25vdywgaXQgd291bGQgCm5vdCBvdGhlcndpc2Ugc3BlY2lhbGx5IHJlc3QuIFRoaXMgbWF5IGluZGVlZCBzZWVtIHRoZSB1bHRpbWF0ZSBsaW1pdCB3aGljaCBvdXIgCndvcmsgY2FuIGF0dGFpbjsgeWV0IHRoZXJlIGlzIHNvbWV0aGluZyBiZXlvbmQgZXZlbiB0aGlzLiAKCgoxMzIxLsKgwqDCoMKgCkFsbCBzdHVkZW50cyBvZiB0aGUgb2NjdWx0IGFyZSBhd2FyZSB0aGF0IHRoZSBMaWZlIGFuZCBMaWdodCBvZiB0aGUgRGVpdHkgCmZsb29kIHRoZSB3aG9sZSBvZiBIaXMgc3lzdGVtLS0gdGhhdCBpbiBldmVyeSB3b3JsZCwgYXQgZXZlcnkgbGV2ZWwsIGlzIApvdXRwb3VyZWQgZnJvbSBIaW0gdGhhdCBlc3BlY2lhbCBtYW5pZmVzdGF0aW9uIG9mIEhpcyBzdHJlbmd0aCB3aGljaCBpcyAKYXBwcm9wcmlhdGUgdG8gaXQuIE5hdHVyYWxseSwgdGhlIGhpZ2hlciB0aGUgd29ybGQsIHRoZSBsZXNzIHZlaWxlZCBpcyBIaXMgCmdsb3J5LCBiZWNhdXNlIGFzIHdlIGFzY2VuZCB3ZSBhcmUgZHJhd2luZyBuZWFyZXIgdG8gaXRzIFNvdXJjZS4gTm9ybWFsbHkgdGhlIApmb3JjZSBvdXRwb3VyZWQgaW4gZWFjaCB3b3JsZCBpcyBzdHJpY3RseSBsaW1pdGVkIHRvIGl0OyBidXQgaXQgY2FuIGRlc2NlbmQgaW50byAKYW5kIGlsbHVtaW5hdGUgYSBsb3dlciBsZXZlbCBpZiBhIHNwZWNpYWwgY2hhbm5lbCBiZSBwcmVwYXJlZCBmb3IgaXQuIAoKCjEzMjIuwqDCoMKgwqAKU3VjaCBhIGNoYW5uZWwgaXMgYWx3YXlzIHByb3ZpZGVkIHdoZW5ldmVyIGFueSB0aG91Z2h0IG9yIGZlZWxpbmcgaGFzIGFuIAplbnRpcmVseSB1bnNlbGZpc2ggYXNwZWN0LiBUaGUgc2VsZmlzaCBlbW90aW9uIG1vdmVzIGluIGEgY2xvc2VkIGN1cnZlLCBhbmQgc28gCmJyaW5ncyBpdHMgb3duIHJlc3BvbnNlIG9uIGl0cyBvd24gbGV2ZWw7IHRoZSB1dHRlcmx5IHVuc2VsZmlzaCBlbW90aW9uIGlzIGFuIApvdXRydXNoIG9mIGVuZXJneSB3aGljaCBkb2VzIG5vdCByZXR1cm4sIGJ1dCBpbiBpdHMgdXB3YXJkIG1vdmVtZW50IHByb3ZpZGVzIGEgCmNoYW5uZWwgZm9yIGEgZG93bnBvdXJpbmcgb2YgZGl2aW5lIFBvd2VyIGZyb20gdGhlIGxldmVsIG5leHQgYWJvdmUsIHdoaWNoIGlzIAp0aGUgcmVhbGl0eSBseWluZyBhdCB0aGUgYmFjayBvZiB0aGUgb2xkIGlkZWEgb2YgdGhlIGFuc3dlciB0byBwcmF5ZXIuIAoKCjEzMjMuwqDCoMKgwqAKVG8gYSBjbGFpcnZveWFudCB0aGlzIGNoYW5uZWwgaXMgdmlzaWJsZSBhcyBhIGdyZWF0IHZvcnRleCwgYSBraW5kIG9mIApnaWdhbnRpYyBjeWxpbmRlciBvciBmdW5uZWwuIFRoaXMgaXMgdGhlIG5lYXJlc3Qgd2UgY2FuIGNvbWUgdG8gZXhwbGFpbmluZyBpdCBpbiAKdGhlIHBoeXNpY2FsIHdvcmxkLCBidXQgaXQgZG9lcyBub3QgcmVhbGx5IGdpdmUgYXQgYWxsIGFuIGFkZXF1YXRlIGlkZWEgb2YgaXRzIAphcHBlYXJhbmNlLCBmb3IgYXMgdGhlIGZvcmNlIGZsb3dzIGRvd24gdGhyb3VnaCB0aGUgY2hhbm5lbCBpdCBzb21laG93IG1ha2VzIAppdHNlbGYgb25lIHdpdGggdGhlIHZvcnRleCwgYW5kIGlzc3VlcyBmcm9tIGl0IGNvbG91cmVkIGJ5IGl0LCBhbmQgYmVhcmluZyB3aXRoIAppdCBkaXN0aW5jdGl2ZSBjaGFyYWN0ZXJpc3RpY3Mgd2hpY2ggc2hvdyB0aHJvdWdoIHdoYXQgY2hhbm5lbCBpdCBoYXMgY29tZS4gCgoKMTMyNC7CoMKgwqDCoApTdWNoIGEgY2hhbm5lbCBjYW4gYmUgbWFkZSBvbmx5IGlmIGFsbCB0aGUgdGhvdWdodCBpcyBlYXJuZXN0IGFuZCAKaGFybW9uaW91cy4gSSBkbyBub3QgbWVhbiB0aGF0IHRoZXJlIG11c3QgYmUgbm8gZGlzY3Vzc2lvbiBhdCB0aGUgbWVldGluZ3MsIGJ1dCAKdGhhdCBhbGwgc3VjaCBkaXNjdXNzaW9uIG11c3QgaW52YXJpYWJseSBiZSBvZiB0aGUgbW9zdCBmcmllbmRseSBjaGFyYWN0ZXIsIGFuZCAKY29uZHVjdGVkIHdpdGggdGhlIGZ1bGxlc3QgYnJvdGhlcmx5IGZlZWxpbmcuIFdlIG11c3QgbmV2ZXIgc3VwcG9zZSB0aGF0IGEgbWFuIApkaWZmZXJzIGZyb20gdXMgaXMgbmVjZXNzYXJpbHkgd2VhayBpbiB0aG91Z2h0IG9yIHVuY29tcHJlaGVuZGluZy4gVGhlcmUgYXJlIAphbHdheXMgYXQgbGVhc3QgdHdvIHNpZGVzIHRvIGV2ZXJ5IHF1ZXN0aW9uLCBzbyB0aGF0IHRoZSBtYW4gd2hvIGRpc2FncmVlcyBtYXkgCm9mdGVuIHNpbXBseSBiZSBzZWVpbmcgYW5vdGhlciBzaWRlLiBJZiB0aGF0IGlzIHNvLCB3ZSBtYXkgZ2F0aGVyIHNvbWV0aGluZyBmcm9tIApoaW0gYW5kIGhlIHNvbWV0aGluZyBmcm9tIHVzLCBhbmQgaW4gdGhhdCB3YXkgd2UgbWF5IGRvIGVhY2ggb3RoZXIgZ29vZDsgYnV0IGlmIAp3ZSBiZWNvbWUgYW5ncnkgb3ZlciBhIGRpc2N1c3Npb24gd2UgZG8gZWFjaCBvdGhlciBoYXJtIGFuZCB0aGUgaGFybW9ueSBvZiB0aGUgCnRob3VnaHQtd2F2ZXMgaXMgbG9zdC4gT25lIHN1Y2ggdGhvdWdodCBhcyB0aGF0IHNvIG9mdGVuIHNwb2lscyBhIGJlYXV0aWZ1bCAKZWZmZWN0LiBJIGhhdmUgc2VlbiB0aGF0IGhhcHBlbiBtYW55IHRpbWVzLS0gYSBudW1iZXIgb2YgcGVvcGxlIHdvcmtpbmcgYWxvbmcgCnF1aXRlIGhhcHBpbHkgYW5kIGJ1aWxkaW5nIHVwIGEgYmVhdXRpZnVsIGNoYW5uZWw7IHN1ZGRlbmx5IHNvbWUgb25lIG9mIHRoZW0gCndpbGwgc2F5IHNvbWV0aGluZyB1bmtpbmQgb3IgcGVyc29uYWwsIGFuZCB0aGVuIGluIGEgbW9tZW50IHRoZSB0aGluZyBicmVha3MgdXAsIAphbmQgdGhlIG9wcG9ydHVuaXR5IHRvIGhlbHAgaXMgbG9zdC4gCgoKMTMyNS7CoMKgwqDCoApXaGVuZXZlciBhbnlvbmUgaXMgc3BlYWtpbmcsIG9yIHJlYWRpbmcgYSBwYXJhZ3JhcGgsIG9yIHRyeWluZyB0byBkbyAKYW55dGhpbmcgaGVscGZ1bCwgdHJ5IGZvciB0aGUgdGltZSB0byBoZWxwIGhpbSwgYW5kIGRvIG5vdCBiZSBldmVybGFzdGluZ2x5IAp0aGlua2luZyBob3cgbXVjaCBiZXR0ZXIgeW91IGNvdWxkIGRvIGl0IHlvdXJzZWxmLiBEbyBub3QgY3JpdGljaXNlLCBidXQgZ2l2ZSAKaGltIHRoZSBhaWQgb2YgeW91ciB0aG91Z2h0LiBZb3UgbWF5IGFmdGVyd2FyZHMgZW5xdWlyZSBhcyB0byBhbnkgcG9pbnRzIHRoYXQgCmFyZSBub3QgY2xlYXIsIGJ1dCBkbyBub3QgYXQgdGhlIHRpbWUgc2VuZCBhIGhvc3RpbGUgb3IgY3JpdGljYWwgdGhvdWdodCBhZ2FpbnN0IApoaW0sIGJlY2F1c2UgaWYgeW91IGRvIHlvdSBtYXkgaW50ZXJmZXJlIHdpdGggdGhlIHNlcXVlbmNlIG9mIGhpcyB0aG91Z2h0IGFuZCAKc3BvaWwgaGlzIGxlY3R1cmUuIE1ha2UgYSBtZW50YWwgbm90ZSBvZiBhbnkgcG9pbnQgYWJvdXQgd2hpY2ggeW91IHdpc2ggdG8gYXNrLCAKYnV0IGZvciB0aGUgdGltZSB0cnkgdG8gc2VlIHdoYXQgZ29vZCB0aGVyZSBpcyBpbiB3aGF0IGhlIHNheXMsIGFzIGluIHRoYXQgd2F5IAp5b3Ugd2lsbCBzdHJlbmd0aGVuIGhpbS4gCgoKMTMyNi7CoMKgwqDCoApBIGNsYWlydm95YW50IHNlZXMgdGhlIGN1cnJlbnQgb2YgdGhvdWdodCBmbG93aW5nIG91dCBmcm9tIHRoZSBsZWN0dXJlciwgCmFuZCBvdGhlciBjdXJyZW50cyBvZiBjb21wcmVoZW5zaW9uIGFuZCBhcHByZWNpYXRpb24gcmlzaW5nIGZyb20gdGhlIGF1ZGllbmNlIAphbmQgam9pbmluZyB3aXRoIGl0OyBidXQgY3JpdGljYWwgdGhvdWdodCBtZWV0cyBpdCB3aXRoIGFuIG9wcG9zaW5nIHJhdGUgb2YgCnZpYnJhdGlvbiwgYnJlYWtzIHVwIHRoZSBzdHJlYW0sIGFuZCB0aHJvd3MgaXQgYWxsIGludG8gY29uZnVzaW9uLiBPbmUgd2hvIHNlZXMgCnRoaXMgaW5mbHVlbmNlIGluIGFjdGlvbiB3aWxsIGZpbmQgdGhlc2UgY29uc2lkZXJhdGlvbnMgc28gZm9yY2libHkgaW1wcmVzc2VkIAp1cG9uIGhpbSB0aGF0IGhlIGlzIGxpdHRsZSBsaWtlbHkgdG8gZm9yZ2V0IHRoZW0gYW5kIGFjdCBjb250cmFyeSB0byB0aGVtLiBUaGUgCmhlbHBmdWwgdGhvdWdodHMgb2YgbWVtYmVycyBvZiBoaXMgYXVkaWVuY2UgdGVuZCB0byBtYWtlIGEgbGVjdHVyZXInIHMgCnByZXNlbnRhdGlvbiBjbGVhcmVyLCBhbmQgdG8gaW1wcmVzcyBpdCB1cG9uIHRob3NlIHRvIHdob20gaXQgaXMgbm90IGZhbWlsaWFyLiAKRm9yIHRoaXMgcmVhc29uIG1lbWJlcnMgc2hvdWxkIGJlIHByZXNlbnQgZXZlbiBhdCBwdWJsaWMgbGVjdHVyZXMgdXBvbiB0aGUgbW9zdCAKZWxlbWVudGFyeSBzdWJqZWN0cyBkZWxpdmVyZWQgYnkgdGhlaXIgZmVsbG93cywgaW4gb3JkZXIgdGhhdCB0aGV5LCB3aG8gCnVuZGVyc3RhbmQgdGhvcm91Z2hseSwgbWF5IGhlbHAgdGhlIGxlY3R1cmVyIGJ5IG1ha2luZyBjbGVhciB0aG91Z2h0LWZvcm1zIApjb25uZWN0ZWQgd2l0aCBoaXMgc3ViamVjdCwgd2hpY2ggd2lsbCBpbXByZXNzIHRoZW1zZWx2ZXMgdXBvbiB0aGUgbWluZHMgb2YgdGhlIApwdWJsaWMgd2hvIGFyZSB0cnlpbmcgdG8gdW5kZXJzdGFuZC4gCgoKMTMyNy7CoMKgwqDCoApUaGUgbWFuIHdobyBpcyBvY2N1cGllZCBpbiB0aGUgZWFybmVzdCBzdHVkeSBvZiBoaWdoZXIgdGhpbmdzIGlzIGZvciB0aGUgCnRpbWUgbGlmdGVkIGVudGlyZWx5IG91dCBvZiBoaW1zZWxmLCBhbmQgZ2VuZXJhdGVzIGEgcG93ZXJmdWwgdGhvdWdodC1mb3JtIGluIAp0aGUgbWVudGFsIHdvcmxkLCB3aGljaCBpcyBpbW1lZGlhdGVseSBlbXBsb3llZCBhcyBhIGNoYW5uZWwgYnkgdGhlIGZvcmNlIApob3ZlcmluZyBpbiB0aGUgd29ybGQgbmV4dCBhYm92ZS4gV2hlbiBhIGJvZHkgb2YgbWVuIGpvaW4gdG9nZXRoZXIgaW4gYSB0aG91Z2h0IApvZiB0aGlzIG5hdHVyZSwgdGhlIGNoYW5uZWwgd2hpY2ggdGhleSBtYWtlIGlzIG91dCBvZiBhbGwgcHJvcG9ydGlvbiBsYXJnZXIgaW4gCml0cyBjYXBhY2l0eSB0aGFuIHRoZSBzdW0gb2YgdGhlaXIgc2VwYXJhdGUgY2hhbm5lbHM7IGFuZCBzdWNoIGEgYm9keSBvZiBtZW4gaXMgCnRoZXJlZm9yZSBhbiBpbmVzdGltYWJsZSBibGVzc2luZyB0byB0aGUgY29tbXVuaXR5IGFtaWRzdCB3aGljaCBpdCB3b3JrcywgZm9yIAp0aHJvdWdoIHRoZW0gKGV2ZW4gaW4gdGhlaXIgbW9zdCBvcmRpbmFyeSBtZWV0aW5ncyBmb3Igc3R1ZHksIHdoZW4gdGhleSBhcmUgCmNvbnNpZGVyaW5nIHN1Y2ggc3ViamVjdHMgYXMgcm91bmRzIGFuZCByYWNlcyBhbmQgcGxhbmV0YXJ5IGNoYWlucykgdGhlcmUgbWF5IApjb21lIGFuIG91dHBvdXJpbmcgaW50byB0aGUgbG93ZXIgbWVudGFsIHdvcmxkIG9mIHRoYXQgZm9yY2Ugd2hpY2ggaXMgbm9ybWFsbHkgCnBlY3VsaWFyIHRvIHRoZSBoaWdoZXIgbWVudGFsOyB3aGlsZSBpZiB0aGV5IHR1cm4gdGhlaXIgYXR0ZW50aW9uIHRvIHRoZSBoaWdoZXIgCnNpZGUgb2YgdGhlIFRoZW9zb3BoaWNhbCB0ZWFjaGluZywgYW5kIHN0dWR5IHN1Y2ggcXVlc3Rpb25zIG9mIGV0aGljcyBhbmQgb2YgCnNvdWwtZGV2ZWxvcG1lbnQgYXMgd2UgZmluZCBpbiBBdCB0aGUgRmVldCBvZiB0aGUgTWFzdGVyLCBMaWdodCBvbiB0aGUgUGF0aCwgClRoZSBWb2ljZSBvZiB0aGUgU2lsZW5jZSBhbmQgb3VyIG90aGVyIGRldm90aW9uYWwgYm9va3MsIHRoZXkgbWF5IG1ha2UgYSAKY2hhbm5lbCBvZiBtb3JlIGVsZXZhdGVkIHRob3VnaHQgdGhyb3VnaCB3aGljaCB0aGUgZm9yY2Ugb2YgdGhlIGludHVpdGlvbmFsIAp3b3JsZCBpdHNlbGYgbWF5IGRlc2NlbmQgaW50byB0aGUgbWVudGFsLCBhbmQgdGh1cyByYWRpYXRlIG91dCBhbiBpbmZsdWVuY2UgZm9yIApnb29kIHVwb24gbWFueSBhIHNvdWwgd2hvIHdvdWxkIG5vdCBiZSBpbiB0aGUgbGVhc3Qgb3BlbiB0byB0aGUgYWN0aW9uIG9mIHRoYXQgCmZvcmNlIGlmIGl0IGhhZCByZW1haW5lZCBvbiBpdHMgb3JpZ2luYWwgbGV2ZWwuIAoKCjEzMjguwqDCoMKgwqAKVGhpcyBpcyB0aGUgcmVhbCBhbmQgdGhlIGdyZWF0ZXN0IGZ1bmN0aW9uIG9mIGEgTG9kZ2Ugb2YgdGhlIFRoZW9zb3BoaWNhbCAKU29jaWV0eS0tIHRvIGZ1cm5pc2ggYSBjaGFubmVsIGZvciB0aGUgZGlzdHJpYnV0aW9uIG9mIHRoZSBEaXZpbmUgTGlmZTsgYW5kIHRodXMgCndlIGhhdmUgYW5vdGhlciBpbGx1c3RyYXRpb24gdG8gc2hvdyB1cyBob3cgZmFyIGdyZWF0ZXIgaXMgdGhlIHVuc2VlbiB0aGFuIHRoZSAKc2Vlbi4gVG8gdGhlIGRpbSBwaHlzaWNhbCBleWUgYWxsIHRoYXQgaXMgdmlzaWJsZSBpcyBhIHNtYWxsIGJhbmQgb2YgaHVtYmxlIApzdHVkZW50cyBtZWV0aW5nIHdlZWtseSBpbiB0aGUgZWFybmVzdCBlbmRlYXZvdXIgdG8gbGVhcm4gYW5kIHRvIHF1YWxpZnkgCnRoZW1zZWx2ZXMgdG8gYmUgb2YgdXNlIHRvIHRoZWlyIGZlbGxvdy1tZW47IGJ1dCB0byB0aG9zZSB3aG8gY2FuIHNlZSBtb3JlIG9mIAp0aGUgd29ybGQsIGZyb20gdGhpcyB0aW55IHJvb3QgdGhlcmUgc3ByaW5ncyBhIGdsb3Jpb3VzIGZsb3dlciwgZm9yIG5vIGxlc3MgdGhhbiAKZm91ciBtaWdodHkgc3RyZWFtcyBvZiBpbmZsdWVuY2UgYXJlIHJhZGlhdGluZyBmcm9tIHRoYXQgc2VlbWluZ2x5IGluc2lnbmlmaWNhbnQgCmNlbnRyZS0tIHRoZSBzdHJlYW0gb2YgdGhvdWdodC13YXZlcywgdGhlIGNsdXN0ZXIgb2YgdGhvdWdodC1mb3JtcywgdGhlIAptYWduZXRpc20gb2YgdGhlIE1hc3RlcnMgb2YgdGhlIFdpc2RvbSwgYW5kIHRoZSBtaWdodHkgdG9ycmVudCBvZiB0aGUgRGl2aW5lIApFbmVyZ3kuIAoKCjEzMjkuwqDCoMKgwqAKSGVyZSBhbHNvIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBlbWluZW50bHkgcHJhY3RpY2FsIGltcG9ydGFuY2Ugb2YgYSAKa25vd2xlZGdlIG9mIHRoZSB1bnNlZW4gc2lkZSBvZiBsaWZlLiBGb3IgbGFjayBvZiBzdWNoIGtub3dsZWRnZSBtYW55IGEgbWVtYmVyIApoYXMgYmVlbiBsYXggaW4gdGhlIHBlcmZvcm1hbmNlIG9mIGhpcyBkdXR5LCBjYXJlbGVzcyBhcyB0byBoaXMgYXR0ZW5kYW5jZSBhdCAKTG9kZ2UgbWVldGluZ3M7IGFuZCB0aHVzIGhlIGhhcyBsb3N0IHRoZSBpbmVzdGltYWJsZSBwcml2aWxlZ2Ugb2YgYmVpbmcgcGFydCBvZiAKYSBjaGFubmVsIGZvciB0aGUgRGl2aW5lIExpZmUuIFN1Y2ggYSBtYW4gaGFzIG5vdCB5ZXQgZ3Jhc3BlZCB0aGUgZWxlbWVudGFyeSAKZmFjdCB0aGF0IGhlIGpvaW5lZCBub3QgdG8gcmVjZWl2ZSBidXQgdG8gZ2l2ZSwgbm90IHRvIGJlIGludGVyZXN0ZWQgYW5kIGFtdXNlZCwgCmJ1dCB0byB0YWtlIGhpcyBzaGFyZSBpbiBhIG1pZ2h0eSB3b3JrIGZvciB0aGUgZ29vZCBvZiBtYW5raW5kLiAKCgoxMzMwLsKgwqDCoMKgCkNIQVBURVIgWFhJSSAKCgoxMzMxLsKgwqDCoMKgCkJZIE9VUiBSRUxBVElPTiBUTyBDSElMRFJFTiAKCgoxMzMyLsKgwqDCoMKgCkZST00gdGhlIFRoZW9zb3BoaWMgc3RhbmRwb2ludCB0aGUgc3ViamVjdCBvZiBvdXIgcmVsYXRpb24gdG8gY2hpbGRyZW4gaXMgCmFuIGV4Y2VlZGluZ2x5IGltcG9ydGFudCBhbmQgcHJhY3RpY2FsIG9uZS4gSWYgd2UgcmVhbGlzZSB0aGUgcHVycG9zZSBmb3Igd2hpY2ggCnRoZSBlZ28gZGVzY2VuZHMgaW50byBpbmNhcm5hdGlvbiwgYW5kIGlmIHdlIGtub3cgdG8gaG93IGdyZWF0IGFuIGV4dGVudCBpdHMgCmF0dGFpbm1lbnQgb2YgdGhhdCBwdXJwb3NlIGRlcGVuZHMgdXBvbiB0aGUgdHJhaW5pbmcgZ2l2ZW4gdG8gaXRzIHZhcmlvdXMgCnZlaGljbGVzIGR1cmluZyB0aGVpciBjaGlsZGhvb2QgYW5kIGdyb3d0aCwgd2UgY2Fubm90IGJ1dCBmZWVsIHRoYXQgYSB0cmVtZW5kb3VzIApyZXNwb25zaWJpbGl0eSBhdHRhY2hlcyB0byBhbGwgd2hvIGFyZSBpbiBhbnkgd2F5IGNvbm5lY3RlZCB3aXRoIGNoaWxkcmVuLCAKd2hldGhlciBhcyBwYXJlbnRzLCBlbGRlciByZWxhdGl2ZXMsIG9yIHRlYWNoZXJzLiBJdCBpcyB3ZWxsLCB0aGVyZWZvcmUsIHRoYXQgd2UgCnNob3VsZCBjb25zaWRlciB3aGF0IGhpbnRzIFRoZW9zb3BoeSBjYW4gZ2l2ZSB1cyBhcyB0byB0aGUgd2F5IGluIHdoaWNoIHdlIGNhbiAKYmVzdCBkaXNjaGFyZ2UgdGhpcyByZXNwb25zaWJpbGl0eS4gCgoKMTMzMy7CoMKgwqDCoApXaGF0IGlzIHRoZSBwcmVzZW50IGNvbmRpdGlvbiBvZiBvdXIgcmVsYXRpb24gdG8gY2hpbGRyZW4tLSB0byBib3lzLCBhdCAKYW55IHJhdGUtLSBoZXJlIGluIHRoZSBtaWRzdCBvZiBvdXIgRXVyb3BlYW4gY2l2aWxpc2F0aW9uPyBUaGUgcHJhY3RpY2FsIHJlc3VsdCAKb2YgbmluZXRlZW4gY2VudHVyaWVzIG9mIG9zdGVuc2libHkgQ2hyaXN0aWFuIHRlYWNoaW5nIGlzIHRoYXQgb3VyIGJveXMgbGl2ZSAKYW1vbmcgdXMgYXMgYW4gYWxpZW4gcmFjZSwgd2l0aCBsYXdzIGFuZCBydWxlcyBvZiBsaWZlIG9mIHRoZWlyIG93biwgZW50aXJlbHkgCmRpZmZlcmVudCBmcm9tIG91cnMsIGFuZCB3aXRoIGEgY29kZSBvZiBtb3JhbHMgb2YgdGhlaXIgb3duLCBhbHNvIGVudGlyZWx5IApkaWZmZXJlbnQgZnJvbSB0aGF0IGJ5IHdoaWNoIHdlIGNvbnNpZGVyIG91cnNlbHZlcyBib3VuZC4gVGhleSByZWdhcmQgZ3Jvd24tdXAgCnBlb3BsZSAoaW4gdGhlIG1hc3MpIHdpdGggc2NhcmNlbHkgdmVpbGVkIGhvc3RpbGl0eSwgb3IsIGF0IHRoZSBiZXN0LCB3aXRoIGEgCmtpbmQgb2YgYXJtZWQgbmV1dHJhbGl0eSwgYW5kIGFsd2F5cyB3aXRoIGRlZXAgZGlzdHJ1c3QsIGFzIGZvcmVpZ25lcnMgd2hvc2UgCm1vdGl2ZXMgYXJlIGluY29tcHJlaGVuc2libGUgdG8gdGhlbSwgYW5kIHdob3NlIGFjdGlvbnMgYXJlIHBlcnBldHVhbGx5IAppbnRlcmZlcmluZyBpbiB0aGUgbW9zdCB1bndhcnJhbnRhYmxlIGFuZCBhcHBhcmVudGx5IG1hbGljaW91cyBtYW5uZXIgd2l0aCB0aGVpciAKcmlnaHQgdG8gZW5qb3kgdGhlbXNlbHZlcyBpbiB0aGVpciBvd24gd2F5LiAKCgoxMzM0LsKgwqDCoMKgClRoaXMgbWF5IHNvdW5kIHJhdGhlciBhIHN0YXJ0bGluZyBzdGF0ZW1lbnQgdG8gdGhvc2Ugd2hvIGhhdmUgbmV2ZXIgCmNvbnNpZGVyZWQgdGhlIG1hdHRlciwgYnV0IGFueSBwYXJlbnQgd2hvIGhhcyBib3lzIGF0IG9uZSBvZiBvdXIgbGFyZ2Ugc2Nob29scyAKd2lsbCBhcHByZWNpYXRlIHRoZSB0cnV0aCBvZiBpdDsgYW5kIGlmIGhlIGNhbiBsb29rIGJhY2sgdG8gaGlzIG93biBzY2hvb2wtZGF5cywgCmFuZCBpbiB0aG91Z2h0IHJlYWxpc2Ugb25jZSBtb3JlIHRoZSBmZWVsaW5ncyBhbmQgY29uZGl0aW9ucyBvZiB0aGF0IHBlcmlvZCAKKHdoaWNoIG1vc3Qgb2YgdXMgaGF2ZSBzbyBlbnRpcmVseSBmb3Jnb3R0ZW4pLCBoZSB3aWxsIHJlY29nbmlzZSwgcGVyaGFwcyB3aXRoIGEgCnN0YXJ0IG9mIHN1cnByaXNlLCB0aGF0IGl0IGlzIG5vdCBhbiBpbmFjY3VyYXRlIGRlc2NyaXB0aW9uIG9mIHdoYXQgaGlzIG93biAKYXR0aXR1ZGUgb25jZSB3YXMuIAoKCjEzMzUuwqDCoMKgwqAKV2hlbmV2ZXIgdGhlIGxhd3MgYW5kIGN1c3RvbXMgb2YgdGhpcyByYWNlIChsaXZpbmcgYW1vbmcgdXMsIHlldCBub3QgdXMpIApkaWZmZXIgZnJvbSBvdXJzLCB0aGV5IGFyZSBpbnZhcmlhYmx5IGEgcmV2ZXJzaW9uIHRvIGFuIGVhcmxpZXIgdHlwZSwgYW5kIHRlbmQgCmluIHRoZSBkaXJlY3Rpb24gb2YgcHJpbWl0aXZlIHNhdmFnZXJ5LS0gYSBmYWN0IHdoaWNoIG1pZ2h0IGJlIGNpdGVkIGluIHN1cHBvcnQgCm9mIHRoZSBUaGVvc29waGljYWwgdGhlb3J5IHRoYXQgaW4gZWFjaCBpbmNhcm5hdGlvbiwgYmVmb3JlIHRoZSBlZ28gaGFzIGFjcXVpcmVkIApjb250cm9sIG9mIGhpcyB2ZWhpY2xlcywgdGhlIGVhcmxpZXIgc3RhZ2VzIG9mIG91ciBldm9sdXRpb24gYXJlIGh1cnJpZWRseSBydW4gCnRocm91Z2ggb25jZSBtb3JlLiBUaGUgb25seSByaWdodCByZWNvZ25pc2VkIGFtb25nIHRoZW0gaXMgdGhlIHJpZ2h0IG9mIHRoZSAKc3Ryb25nZXN0OyB0aGUgYm95IHdobyBydWxlcyB0aGVpciBsaXR0bGUgU3RhdGUgaXMgbm90IHRoZSBiZXN0IGJveSwgbm9yIHRoZSAKY2xldmVyZXN0IGJveSwgYnV0IHRoZSBvbmUgd2hvIGNhbiBmaWdodCBiZXN0OyBhbmQgdGhlaXIgbGVhZGVyc2hpcCBpcyB1c3VhbGx5IApkZWNpZGVkIGJ5IGNvbWJhdCwganVzdCBhcyBpdCBpcyB0byB0aGlzIGRheSBhbW9uZyBtYW55IGEgc2F2YWdlIHRyaWJlLiAKCgoxMzM2LsKgwqDCoMKgClRoZWlyIGNvZGUgb2YgbW9yYWxzIGlzIGRpc3RpbmN0bHkgdGhlaXIgb3duLCBhbmQgdGhvdWdoIGl0IGNhbm5vdCBiZSBzbyAKZGlyZWN0bHkgcGFyYWxsZWxlZCBhbW9uZyBwcmltaXRpdmUgcmFjZXMgYXMgc29tZSBvZiB0aGVpciBvdGhlciBjdXN0b21zLCBpdCBpcyAKZGVjaWRlZGx5IG9uIGEgbG93ZXIgbGV2ZWwgdGhhbiBldmVuIG91ciBvd24uIFRvIG9wcHJlc3MgYW5kIGlsbC10cmVhdCB0aGUgd2VhaywgCmFuZCBldmVuIHRvcnR1cmUgdGhlbSB0byB0aGUgdXRtb3N0IGxpbWl0IG9mIGVuZHVyYW5jZSwgc2VlbXMgdG8gYmUgdGhvdWdodCBhIApjb21wYXJhdGl2ZWx5IGlubm9jZW50IGZvcm0gb2YgcmVjcmVhdGlvbiwgYW5kIGl0IHdvdWxkIGJlIG9ubHkgYW4gdW51c3VhbGx5IApzZXZlcmUgY2FzZSB3aGljaCB3b3VsZCBhcm91c2UgZXZlbiBhIHBhc3NpbmcgbWFuaWZlc3RhdGlvbiBvZiBwdWJsaWMgb3BpbmlvbiAKYWdhaW5zdCB0aGUgb2ZmZW5kZXIuIFRoZSB0aGVmdCBvZiBtb25leSBpcywgaGFwcGlseSwgcmVnYXJkZWQgYXMgY29udGVtcHRpYmxlLCAKYnV0IHRoZSB0aGVmdCBvZiBmcnVpdCBvciBqYW0gaXMgbm90OyBub3IsIGluZGVlZCwgd291bGQgdGhlIHN0ZWFsaW5nIG9mIAphbnl0aGluZyBlYXRhYmxlIGJlIGNvbnNpZGVyZWQgY3JpbWluYWwuIEZhbHNlaG9vZCBvZiB0aGUgbW9zdCBvdXRyYWdlb3VzIGtpbmQgCmlzIGNvbnNpZGVyZWQgYXMgbm90IG9ubHkgYWxsb3dhYmxlIGJ1dCBhbXVzaW5nLCB3aGVuIHByYWN0aXNlZCB1cG9uIHNvbWUgCnRvby1jcmVkdWxvdXMgeW91bmdzdGVyOyBpZiByZXN0b3JlZCB0byBpbiBvcmRlciB0byBjb25jZWFsIGZyb20gYW4gYWR1bHQgdGhlIAptaXNkZWVkcyBvZiBhIGZlbGxvdy1jcmltaW5hbCwgaXQgaXMgb2Z0ZW4gbG9va2VkIHVwb24gYXMgaGVyb2ljIGFuZCBub2JsZS4gQnV0IAp0aGUgbW9zdCBoZWlub3VzIGNyaW1lIG9mIGFsbC0tIHRoZSB2ZXJ5IGxvd2VzdCBhYnlzcyBvZiB0dXJwaXR1ZGUtLSBpcyB0byBjYWxsIAppbiB0aGUgaW50ZXJ2ZW50aW9uIG9mIGEgZ3Jvd24tdXAgcGVyc29uIHRvIHJpZ2h0IGV2ZW4gdGhlIG1vc3QgZmxhZ3JhbnQgd3JvbmdzOyAKYW5kIG1hbnkgYSB3ZWFrIGFuZCBuZXJ2b3VzIGNoaWxkIGVuZHVyZXMgYWdvbmllcyBib3RoIHBoeXNpY2FsbHkgYW5kIG1lbnRhbGx5IApmcm9tIHRoZSBiYXJiYXJpdHkgb2YgYnVsbGllcyB3aXRob3V0IGJyZWF0aGluZyBhIHdvcmQgb2YgaGlzIHN1ZmZlcmluZ3MgZWl0aGVyIAp0byBwYXJlbnQgb3IgdGVhY2hlci0tIHNvIGRlZXAgaXMgdGhlIGRpc3RydXN0IHdpdGggd2hpY2ggcHVibGljIG9waW5pb24gYW1vbmdzdCAKYm95cyByZWdhcmRzIHRoZSBob3N0aWxlIHJhY2Ugb2YgYWR1bHRzLiAKCgoxMzM3LsKgwqDCoMKgCkluIHNwaXRlIG9mIHRoZSB0ZXJyaWJsZSBzdWZmZXJpbmcgd2hpY2ggaXQgZnJlcXVlbnRseSBlbnRhaWxzIHVwb24gdGhlIAp3ZWFrIGFuZCBzZW5zaXRpdmUgYm95LCBJIGFtIGluIG5vIHdheSBibGluZCB0byB0aGUgZ29vZCBzaWRlIG9mIHB1YmxpYy1zY2hvb2wgCmxpZmUtLSB0byB0aGUgY291cmFnZSBhbmQgc2VsZi1yZWxpYW5jZSwgd2hpY2ggaXQgZ2l2ZXMgdG8gdGhlIHN0cm9uZyBhbmQgaGFyZHkgCmxhZCwgYW5kIHRoZSB0cmFpbmluZyBpbiB0aGUgY29tbWFuZCBvZiB0aGUgb3RoZXJzIHdpdGggd2hpY2ggaXQgcHJvdmlkZXMgdGhlIAptZW1iZXJzIG9mIGl0cyBoaWdoZXIgZm9ybXMuIEkgc3VwcG9zZSB0aGF0IEVuZ2xhbmQgaXMgdGhlIG9ubHkgY291bnRyeSBvbiBlYXJ0aCAKd2hlcmUgdGhlIG1haW50ZW5hbmNlIG9mIG9yZGVyIGluIHRoZSBzbWFsbCB3b3JsZCBvZiBzY2hvb2wgbGlmZSBjYW4gYmUgKGFuZCBpcykgCmxlZnQgcHJhY3RpY2FsbHkgaW4gdGhlIGhhbmRzIG9mIHRoZSBib3lzIHRoZW1zZWx2ZXMsIGFuZCB0aGVyZSBpcyBtdWNoIGluIHRoaXMgCnRvIGJlIGhpZ2hseSBjb21tZW5kZWQ7IGJ1dCBJIGFtIGF0IHByZXNlbnQgY29uY2VybmVkIHdpdGggdGhlIHJlbGF0aW9ucyBiZXR3ZWVuIApib3lzIGFzIGEgY2xhc3MgYW5kIGFkdWx0cyBhcyBhIGNsYXNzLCBhbmQgaXQgY2FuIGhhcmRseSBiZSBkZW5pZWQgdGhhdCBvbiB0aGUgCndob2xlIHRoZXNlIGFyZSBzb21ld2hhdCBzdHJhaW5lZCwgdGhlIGRpc3RydXN0IG9mIHdoaWNoIEkgaGF2ZSBzcG9rZW4gb24gdGhlIApvbmUgc2lkZSBiZWluZyBmcmVxdWVudGx5IG1ldCBieSBkaXNsaWtlIGFuZCBlbnRpcmUgd2FudCBvZiBjb21wcmVoZW5zaW9uIG9uIHRoZSAKb3RoZXIuIAoKCjEzMzguwqDCoMKgwqAKTWFueSBhIG1hbiAob3Igd29tYW4pIHRoaW5rcyBvZiBib3lzIG9ubHkgYXMgbm9pc3ksIGRpcnR5LCBncmVlZHksIApjbHVtc3ksIHNlbGZpc2ggYW5kIGdlbmVyYWxseSBvYmplY3Rpb25hYmxlOyBhbmQgaGUgbmV2ZXIgcmVhbGlzZXMgdGhhdCB0aGVyZSAKbWF5IGJlIGEgZ29vZCBkZWFsIG9mIHNlbGZpc2huZXNzIGluIHRoaXMgcG9pbnQgb2YgdmlldyBvZiBoaXMsIGFuZCB0aGF0IGlmIGFueSAKcGFydCBvZiBoaXMgaW5kaWN0bWVudCBpcyB0cnVlLCB0aGUgZmF1bHQgaXMgbm90IHNvIG11Y2ggaW4gdGhlIGJveXMgdGhlbXNlbHZlcyAKYXMgaW4gdGhlIHVucmVhc29uYWJsZSB3YXkgaW4gd2hpY2ggdGhleSBoYXZlIGJlZW4gYnJvdWdodCB1cDsgZnVydGhlcm1vcmUsIHRoYXQgCmluIGFueSBjYXNlIGhpcyBkdXR5IGlzIG5vdCB0byB3aWRlbiB0aGUgY2hhc20gYmV0d2VlbiB0aGVtIGFuZCBoaW1zZWxmIGJ5IAphZG9wdGluZyBhbiBhdHRpdHVkZSBvZiBkaXNsaWtlIGFuZCBkaXN0cnVzdCwgYnV0IHJhdGhlciB0byBlbmRlYXZvdXIgdG8gaW1wcm92ZSAKdGhlIHBvc2l0aW9uIG9mIGFmZmFpcnMgYnkganVkaWNpb3VzIGtpbmRuZXNzIGFuZCBoZWFydHksIHBhdGllbnQgZnJpZW5kbGluZXNzIAphbmQgc3ltcGF0aHkuIAoKCjEzMzkuwqDCoMKgwqAKU3VyZWx5IHRoZXJlIGlzIHNvbWV0aGluZyB3cm9uZyBhYm91dCBzdWNoIHVuc2F0aXNmYWN0b3J5IHJlbGF0aW9uczsgCnN1cmVseSBzb21lIGltcHJvdmVtZW50IG1pZ2h0IGJlIGJyb3VnaHQgYWJvdXQgaW4gdGhpcyB1bmZvcnR1bmF0ZSBjb25kaXRpb24gb2YgCm11dHVhbCBob3N0aWxpdHkgYW5kIG1pc3RydXN0LiBUaGVyZSBhcmUgaG9ub3VyYWJsZSBleGNlcHRpb25zOyB0aGVyZSBhcmUgYm95cyAKd2hvIHRydXN0IHRoZWlyIG1hc3RlcnMsIGFuZCBtYXN0ZXJzIHdobyB0cnVzdCB0aGVpciBib3lzLCBhbmQgSSBteXNlbGYgaGF2ZSAKbmV2ZXIgZm91bmQgYW55IGRpZmZpY3VsdHkgaW4gd2lubmluZyB0aGUgY29uZmlkZW5jZSBvZiB0aGUganV2ZW5pbGVzIGJ5IAp0cmVhdGluZyB0aGVtIHByb3Blcmx5OyBidXQgaW4gYSBzYWRseSBsYXJnZSBudW1iZXIgb2YgaW5zdGFuY2VzIHRoZSBjYXNlIGlzIGFzIApJIGhhdmUgZGVzY3JpYmVkIGl0LiAKCgoxMzQwLsKgwqDCoMKgClRoYXQgaXQgbmVlZCBub3QgYmUgc28gaXMgc2hvd24sIG5vdCBvbmx5IGJ5IHRoZSBleGNlcHRpb25zIG1lbnRpb25lZCAKYWJvdmUsIGJ1dCBieSB0aGUgY29uZGl0aW9uIG9mIGFmZmFpcnMgd2hpY2ggd2UgZmluZCBleGlzdGluZyBpbiBzb21lIE9yaWVudGFsIApsYW5kcy4gSSBoYXZlIG5vdCB5ZXQgaGFkIHRoZSBwbGVhc3VyZSBvZiB2aXNpdGluZyB0aGUgRW1waXJlIG9mIEphcGFuLCBidXQgSSAKaGVhciBmcm9tIHRob3NlIHdobyBoYXZlIGJlZW4gdGhlcmUgYW5kIGhhdmUgbWFkZSBzb21lIHN0dWR5IG9mIHRoaXMgcXVlc3Rpb24sIAp0aGF0IHRoZXJlIGlzIG5vIGNvdW50cnkgaW4gdGhlIHdvcmxkIHdoZXJlIGNoaWxkcmVuIGFyZSBzbyB3ZWxsIGFuZCBzbyBzZW5zaWJseSAKdHJlYXRlZC0tIHdoZXJlIHRoZWlyIHJlbGF0aW9ucyB3aXRoIHRoZWlyIGVsZGVycyBhcmUgc28gY29tcGxldGVseSAKc2F0aXNmYWN0b3J5LiBIYXJzaG5lc3MsIGl0IGlzIHNhaWQsIGlzIGVudGlyZWx5IHVua25vd24sIHlldCB0aGUgY2hpbGRyZW4gaW4gbm8gCndheSBwcmVzdW1lIHVwb24gdGhlIGdlbnRsZW5lc3Mgb2YgdGhlIG9sZGVyIHBlb3BsZS4gCgoKMTM0MS7CoMKgwqDCoApJbmRlZWQsIG5vIHByb3Blcmx5IHRyZWF0ZWQgY2hpbGQgZXZlciBkb2VzIG9yIGV2ZXIgd291bGQgc28gcHJlc3VtZSBpbiAKYW55IGNvdW50cnkuIElmIGhlIGNvdWxkIGRvIHNvLCBpdCB3b3VsZCBiZSBhIGNsZWFyIGluZGljYXRpb24gdGhhdCB0aGUgYWR1bHQgCmhhZCBmYWlsZWQgaW4gaGlzIG1hbmFnZW1lbnQuIEFsbCBoYXJzaG5lc3MgaW4gdGhlIHRyZWF0bWVudCBvZiBjaGlsZHJlbiBpcyBhIApyZWxpYyBvZiBzYXZhZ2VyeTsgaXQgbWF5IGJlIHRoYXQgd2hlbiB3ZSB3ZXJlIGF0IHRoZSBsZXZlbCBvZiB0aGUgc3RvbmUtYWdlIHdlIAprbmV3IG5vIGJldHRlciwgYnV0IGluIHRoZXNlIGRheXMgb2Ygc3VwcG9zZWQgZW5saWdodGVubWVudCBpdCBpcyBzaW1wbHkgCmNyaW1pbmFsLiBUaGUgaW50ZW50aW9uYWwgaW5mbGljdGlvbiBvZiBwYWluIHVwb24gYW55IGxpdmluZyBjcmVhdHVyZSBpcyBvbmUgb2YgCnRoZSBtb3N0IHNlcmlvdXMgb2Ygc2lucywgYW5kIHRoZSBrYXJtYSB3aGljaCBmb2xsb3dzIHVwb24gaXQgaXMgb2YgdGhlIG1vc3QgCmFwcGFsbGluZyBjaGFyYWN0ZXIuIFRoZSBzdWdnZXN0aW9uIHRoYXQgaXQgaXMgaW50ZW5kZWQgdG8gcHJvZHVjZSBhIGdvb2QgcmVzdWx0IAppcyBubyBleGN1c2Ugd2hhdGV2ZXI7IGluIHRoaXMgY2FzZSwgYXMgaW4gYWxsIG90aGVycywgaXQgY2FuIG5ldmVyIGJlIHJpZ2h0IHRvIApkbyBldmlsIHRoYXQgZ29vZCBtYXkgY29tZS4gQW5kIHRoYXQgcXVpdGUgYXBhcnQgZnJvbSB0aGUgZmFjdCB0aGF0IGdvb2QgbmV2ZXIgCmRvZXMgY29tZS4gTm90aGluZyBidXQgdGhlIG1vc3QgaG9ycmlibGUgZXZpbCByZXN1bHRzIGZyb20gdGhlIGNvbW1vbiBkZWx1c2lvbiAKb24gdGhpcyBzdWJqZWN0LiAKCgoxMzQyLsKgwqDCoMKgClRoZSB3aG9sZSB0aGluZyBpcyBhbiBhYm9taW5hdGlvbiB3aGljaCBjcmllcyB0byBoZWF2ZW4gZm9yIGEgcmVtZWR5LCAKanVzdCBhcyBpcyB0aGUgZ2hhc3RseSwgY2Vhc2VsZXNzIHNsYXVnaHRlciBvZiBhbmltYWxzIGluIG9yZGVyIHRoYXQgbWVuIG1heSAKZGVncmFkZSB0aGVtc2VsdmVzIGJ5IHB1dHRpbmcgaW50byB0aGVpciBib2RpZXMgYSBwZWN1bGlhcmx5IHVuc3VpdGFibGUgYW5kIApvYmplY3Rpb25hYmxlIGZvcm0gb2YgZm9vZC4gSW4gYm90aCB0aGVzZSBjYXNlLS0gdGhlIGlsbC10cmVhdG1lbnQgb2YgY2hpbGRyZW4gCmFuZCB0aGUgc2xhdWdodGVyIG9mIGFuaW1hbHMtLSB3ZSwgaW4gRW5nbGFuZCwgYXJlIGluIGEgY29uZGl0aW9uIG9mIGFic29sdXRlIApiYXJiYXJpc207IGFuZCB0aGUgbWVuIG9mIHRoZSBmdXR1cmUsIGxvb2tpbmcgYmFjayB1cG9uIHRoaXMgdGltZSwgd2lsbCBmaW5kIGl0IAppbXBvc3NpYmxlIHRvIHVuZGVyc3RhbmQgaG93IHN1Y2ggdXR0ZXJseSBob3JyaWJsZSBwcmFjdGljZXMgY291bGQgY28tZXhpc3Qgd2l0aCAKdGhlIGtub3dsZWRnZSBvZiBwaGlsb3NvcGh5LCBldGhpY3MgYW5kIHJlbGlnaW9uIHdoaWNoIHdlIHBvc3Nlc3MuIE91ciBleWVzIGFyZSAKYmxpbmRlZCB0byB0aGUgd2lja2VkbmVzcyBvZiB0aGVzZSB0aGluZ3MgYnkgdGhlIGdsYW1vdXIgb2YgY3VzdG9tOyBidXQgYW55b25lIAp3aG8gc3R1ZGllcyB0aGUgaGlkZGVuIHNpZGUgb2YgdGhpbmdzIHNvb24gbGVhcm5zIHRoYXQgY3VzdG9tIGlzIGFuIGVudGlyZWx5IAp1bnJlbGlhYmxlIGd1aWRlIGFuZCB0aGF0IGhlIG11c3QgZmFjZSB0aGUgZmFjdHMgb2YgbmF0dXJlIGFzIHRoZXkgYXJlLCBhbmQgbm90IAphcyBpZ25vcmFudCBwZW9wbGUgc3VwcG9zZSB0aGVtIHRvIGJlLiAKCgoxMzQzLsKgwqDCoMKgClRoaXMgYWxtb3N0IHVuaXZlcnNhbCBjcnVlbHR5IHRvIGNoaWxkcmVuIGlzIHRoZSByZWFzb24gZm9yIHRoZSBsYWNrIG9mIApjb25maWRlbmNlIGJldHdlZW4gdGhlbSBhbmQgYWR1bHRzOyBpZiB3ZSB0cmVhdCB0aGVtIGFzIHNhdmFnZXMgd2UgYXJlIGRvaW5nIG91ciAKYmVzdCB0byBpbmR1Y2UgdGhlbSB0byBhY3QgYXMgc2F2YWdlcy4gVGhlIGluY29tcGV0ZW50IHBhcmVudCBvciB0ZWFjaGVyIApwcmV0ZW5kcyB0aGF0IGhlIGludGVudGlvbmFsbHkgaW5qdXJlcyBhIGNoaWxkIHdpdGggYSB2aWV3IHRvIGNvcnJlY3RpbmcgaGlzIApmYXVsdHM7IGlmIGhlIGtuZXcgYW55dGhpbmcgb2YgdGhlIHJlYWwgZmFjdHMgb2YgbGlmZSBoZSB3b3VsZCBiZSBhd2FyZSB0aGF0IHRoZSAKZWZmZWN0IG9mIHN1Y2ggaW5qdXJ5IGlzIGluIGV2ZXJ5IGNhc2UgZmFyIHdvcnNlIHRoYW4gdGhhdCBvZiB0aGUgZmF1bHQgd2hpY2ggaGUgCmltYWdpbmVzIGhpbXNlbGYgdG8gYmUgdHJ5aW5nIHRvIGNvcnJlY3QuIEhpcyBtZXRob2QgaXMgc28gZW50aXJlbHkgaXJyYXRpb25hbCAKdGhhdCBpdCBzZWVtcyB0byB0aGUgb2NjdWx0aXN0IGxpa2UgdGhlIGNyYXp5IGluY29uc2VxdWVuY2Ugb2YgYSBuaWdodG1hcmUtLSBhbGwgCnRoZSBtb3JlIHNvIHdoZW4gd2UgdGhpbmsgb2YgdGhlIHZhc3QgbWFzcyBvZiBoYXRyZWQsIGhvc3RpbGl0eSBhbmQgCm1pc3VuZGVyc3RhbmRpbmcgZm9yIHdoaWNoIGl0IGlzIHJlc3BvbnNpYmxlLiAKCgoxMzQ0LsKgwqDCoMKgCkJ1dCBob3csIGl0IG1heSBiZSBhc2tlZCwgaXMgaXQgcHJvcG9zZWQgdGhhdCB0aGlzIHBvc2l0aW9uIG9mIG11dHVhbCAKbWlzdHJ1c3QgYW5kIG1pc3VuZGVyc3RhbmRpbmcgc2hvdWxkIGJlIGltcHJvdmVkID8gV2VsbCwgaXQgaXMgZXZpZGVudCB0aGF0IGluIApjYXNlcyB3aGVyZSB0aGlzIGJyZWFjaCBhbHJlYWR5IGV4aXN0cywgaXQgY2FuIG9ubHkgYmUgYnJpZGdlZCBvdmVyIGJ5IAp1bndlYXJ5aW5nIGtpbmRuZXNzLCBhbmQgYnkgZ3JhZHVhbCwgcGF0aWVudCwgYnV0IGNvbnN0YW50IGVmZm9ydHMgdG8gcHJvbW90ZSBhIApiZXR0ZXIgdW5kZXJzdGFuZGluZyBieSBzdGVhZGlseSBzaG93aW5nIHVuc2VsZmlzaCBhZmZlY3Rpb24gYW5kIHN5bXBhdGh5OyBpbiAKZmFjdCwgYnkgaGFiaXR1YWxseSBwdXR0aW5nIG91cnNlbHZlcyBpbiB0aGUgY2hpbGQnIHMgcGxhY2UgYW5kIHRyeWluZyB0byAKcmVhbGlzZSBleGFjdGx5IGhvdyBhbGwgdGhlc2UgbWF0dGVycyBhcHBlYXIgdG8gaGltLiBJZiB3ZSwgd2hvIGFyZSBhZHVsdHMsIGhhZCAKbm90IHNvIGVudGlyZWx5IGZvcmdvdHRlbiBvdXIgb3duIGNoaWxkaXNoIGRheXMsIHdlIHNob3VsZCBtYWtlIGZhciBncmVhdGVyIAphbGxvd2FuY2VzIGZvciB0aGUgY2hpbGRyZW4gb2YgdG8tZGF5LCBhbmQgc2hvdWxkIHVuZGVyc3RhbmQgYW5kIGdldCBvbiB3aXRoIAp0aGVtIG11Y2ggYmV0dGVyLiAKCgoxMzQ1LsKgwqDCoMKgClRoaXMgaXMsIGhvd2V2ZXIsIGVtcGhhdGljYWxseSBvbmUgb2YgdGhlIGNhc2VzIGluIHdoaWNoIHRoZSBvbGQgcHJvdmVyYiAKaG9sZHMgZ29vZCwgd2hpY2ggdGVsbHMgdXMgdGhhdCBwcmV2ZW50aW9uIGlzIGJldHRlciB0aGFuIGN1cmUuIElmIHdlIHdpbGwgYnV0IAp0YWtlIGEgbGl0dGxlIHRyb3VibGUgdG8gYmVnaW4gaW4gdGhlIHJpZ2h0IHdheSB3aXRoIG91ciBjaGlsZHJlbiBmcm9tIHRoZSAKZmlyc3QsIHdlIHNoYWxsIGVhc2lseSBiZSBhYmxlIHRvIGF2b2lkIHRoZSB1bmRlc2lyYWJsZSBzdGF0ZSBvZiBhZmZhaXJzIHdoaWNoIAp3ZSBoYXZlIGJlZW4gZGVzY3JpYmluZy4gQW5kIHRoaXMgaXMgZXhhY3RseSB3aGVyZSBUaGVvc29waHkgaGFzIG1hbnkgYSB2YWx1YWJsZSAKaGludCB0byBvZmZlciB0byB0aG9zZSB3aG8gYXJlIGluIGVhcm5lc3QgaW4gd2lzaGluZyB0byBkbyB0aGVpciBkdXR5IGJ5IHRoZSAKeW91bmcgb25lcyBjb21taXR0ZWQgdG8gdGhlaXIgY2hhcmdlLiAKCgoxMzQ2LsKgwqDCoMKgClRIRSBEVVRZIE9GIFBBUkVOVFMgCgoKMTM0Ny7CoMKgwqDCoApUaGUgYWJzb2x1dGUgbmF0dXJlIG9mIHRoaXMgZHV0eSBvZiBwYXJlbnRzIGFuZCB0ZWFjaGVycyB0b3dhcmRzIGNoaWxkcmVuIAptdXN0IGZpcnN0IGJlIHJlY29nbmlzZWQuIEl0IGNhbm5vdCBiZSB0b28gc3Ryb25nbHkgb3IgdG9vIHJlcGVhdGVkbHkgaW5zaXN0ZWQgCnVwb24gdGhhdCBwYXJlbnRhZ2UgaXMgYW4gZXhjZWVkaW5nbHkgaGVhdnkgcmVzcG9uc2liaWxpdHkgb2YgYSByZWxpZ2lvdXMgCm5hdHVyZSwgaG93ZXZlciBsaWdodGx5IGFuZCB0aG91Z2h0bGVzc2x5IGl0IG1heSBvZnRlbiBiZSB1bmRlcnRha2VuLiBUaG9zZSB3aG8gCmJyaW5nIGEgY2hpbGQgaW50byB0aGUgd29ybGQgbWFrZSB0aGVtc2VsdmVzIGRpcmVjdGx5IHJlc3BvbnNpYmxlIHRvIHRoZSBsYXcgb2YgCmthcm1hIGZvciB0aGUgb3Bwb3J0dW5pdGllcyBvZiBldm9sdXRpb24gd2hpY2ggdGhleSBvdWdodCB0byBnaXZlIHRvIHRoYXQgZWdvLCAKYW5kIGhlYXZ5IGluZGVlZCB3aWxsIGJlIHRoZWlyIHBlbmFsdHkgaWYgYnkgdGhlaXIgY2FyZWxlc3NuZXNzIG9yIHNlbGZpc2huZXNzIAp0aGV5IHB1dCBoaW5kcmFuY2VzIGluIGhpcyBwYXRoLCBvciBmYWlsIHRvIHJlbmRlciBoaW0gYWxsIHRoZSBoZWxwIGFuZCBndWlkYW5jZSAKd2hpY2ggaGUgaGFzIGEgcmlnaHQgdG8gZXhwZWN0IGZyb20gdGhlbS4gWWV0IGhvdyBvZnRlbiB0aGUgbW9kZXJuIHBhcmVudCAKZW50aXJlbHkgaWdub3JlcyB0aGlzIG9idmlvdXMgcmVzcG9uc2liaWxpdHk7IGhvdyBvZnRlbiBhIGNoaWxkIGlzIHRvIGhpbSAKbm90aGluZyBidXQgYSBjYXVzZSBvZiBmYXR1b3VzIHZhbml0eSBvciBhbiBvYmplY3Qgb2YgdGhvdWdodGxlc3MgbmVnbGVjdCEgCgoKMTM0OC7CoMKgwqDCoApJZiB3ZSB3YW50IHRvIHVuZGVyc3RhbmQgb3VyIGR1dHkgdG93YXJkcyB0aGUgY2hpbGQgd2UgbXVzdCBmaXJzdCAKY29uc2lkZXIgaG93IGhlIGNhbWUgdG8gYmUgd2hhdCBoZSBpczsgd2UgbXVzdCB0cmFjZSBoaW0gYmFjayBpbiB0aG91Z2h0IHRvIGhpcyAKcHJldmlvdXMgaW5jYXJuYXRpb24uIFdoYXRldmVyIG1heSBoYXZlIGJlZW4gaGlzIG91dHdhcmQgY2lyY3Vtc3RhbmNlcyBhdCB0aGF0IAp0aW1lLCBoZSBoYWQgYSBkZWZpbml0ZSBkaXNwb3NpdGlvbiBvZiBoaXMgb3duLS0gYSBjaGFyYWN0ZXIgY29udGFpbmluZyB2YXJpb3VzIAptb3JlIG9yIGxlc3MgZGV2ZWxvcGVkIHF1YWxpdGllcywgc29tZSBnb29kIGFuZCBzb21lIGJhZC4gCgoKMTM0OS7CoMKgwqDCoApJbiBkdWUgY291cnNlIG9mIHRpbWUgdGhhdCBsaWZlIG9mIGhpcyBjYW1lIHRvIGFuIGVuZDsgYnV0IHdoZXRoZXIgdGhhdCAKZW5kIGNhbWUgc2xvd2x5IGJ5IGRpc2Vhc2Ugb3Igb2xkIGFnZSwgb3Igc3dpZnRseSBieSBzb21lIGFjY2lkZW50IG9yIHZpb2xlbmNlLCAKaXRzIGFkdmVudCBtYWRlIG5vIHN1ZGRlbiBjaGFuZ2Ugb2YgYW55IHNvcnQgaW4gaGlzIGNoYXJhY3Rlci4gQSBjdXJpb3VzIApkZWx1c2lvbiBzZWVtcyB0byBwcmV2YWlsIGluIG1hbnkgcXVhcnRlcnMgdGhhdCB0aGUgbWVyZSBmYWN0IG9mIGRlYXRoIGF0IG9uY2UgCnR1cm5zIGEgZGVtb24gaW50byBhIHNhaW50LS0gdGhhdCwgd2hhdGV2ZXIgYSBtYW4nIHMgbGlmZSBtYXkgaGF2ZSBiZWVuLCB0aGUgCm1vbWVudCBoZSBkaWVzIGhlIGJlY29tZXMgcHJhY3RpY2FsbHkgYW4gYW5nZWwgb2YgZ29vZG5lc3MuIE5vIGlkZWEgY291bGQgCnBvc3NpYmx5IGJlIGZ1cnRoZXIgZnJvbSB0aGUgdHJ1dGgsIGFzIHRob3NlIHdob3NlIHdvcmsgbGllcyBpbiB0cnlpbmcgdG8gaGVscCAKdGhlIGRlcGFydGVkIGtub3cgZnVsbCB3ZWxsLiBUaGUgY2FzdGluZyBvZmYgb2YgYSBtYW4nIHMgcGh5c2ljYWwgYm9keSBubyBtb3JlIAphbHRlcnMgaGlzIGRpc3Bvc2l0aW9uIHRoYW4gZG9lcyB0aGUgY2FzdGluZyBvZmYgb2YgaGlzIG92ZXJjb2F0OyBoZSBpcyAKcHJlY2lzZWx5IHRoZSBzYW1lIG1hbiB0aGUgZGF5IGFmdGVyIGhpcyBkZWF0aCBhcyBoZSB3YXMgdGhlIGRheSBiZWZvcmUsIHdpdGggCnRoZSBzYW1lIHZpY2VzIGFuZCB0aGUgc2FtZSB2aXJ0dWVzLiAKCgoxMzUwLsKgwqDCoMKgClRydWUsIG5vdyB0aGF0IGhlIGlzIGZ1bmN0aW9uaW5nIG9ubHkgaW4gdGhlIGFzdHJhbCB3b3JsZCBoZSBoYXMgbm90IHRoZSAKc2FtZSBvcHBvcnR1bml0aWVzIG9mIGRpc3BsYXlpbmcgdGhlbTsgYnV0IHRob3VnaCB0aGV5IG1heSBtYW5pZmVzdCB0aGVtc2VsdmVzIAppbiB0aGUgYXN0cmFsIGxpZmUgaW4gYSBkaWZmZXJlbnQgbWFubmVyLCB0aGV5IGFyZSBub25lIHRoZSBsZXNzIHN0aWxsIHRoZXJlLCAKYW5kIHRoZSBjb25kaXRpb25zIGFuZCBkdXJhdGlvbiBvZiB0aGF0IGxpZmUgYXJlIHRoZWlyIHJlc3VsdC4gSW4gdGhhdCB3b3JsZCBoZSAKbXVzdCBzdGF5IHVudGlsIHRoZSBlbmVyZ3kgcG91cmVkIGZvcnRoIGJ5IGhpcyBsb3dlciBkZXNpcmVzIGFuZCBlbW90aW9ucyBkdXJpbmcgCnBoeXNpY2FsIGxpZmUgaGFzIHdvcm4gaXRzZWxmIG91dC0tIHVudGlsIHRoZSBhc3RyYWwgYm9keSB3aGljaCBoZSBoYXMgbWFkZSBmb3IgCmhpbXNlbGYsIGRpc2ludGVncmF0ZXM7IGZvciBvbmx5IHRoZW4gY2FuIGhlIGxlYXZlIGl0IGZvciB0aGUgaGlnaGVyIGFuZCBtb3JlIApwZWFjZWZ1bCByZWFsbSBvZiB0aGUgaGVhdmVuLXdvcmxkLiBCdXQgdGhvdWdoIHRob3NlIHBhcnRpY3VsYXIgcGFzc2lvbnMgYXJlIHRoZSAKdGltZSB3b3JuIG91dCBhbmQgZG9uZSB3aXRoIGZvciBoaW0sIHRoZSBnZXJtcyBvZiB0aGUgcXVhbGl0aWVzIGluIGhpbSwgd2hpY2ggCm1hZGUgaXQgcG9zc2libGUgZm9yIHRoZW0gdG8gZXhpc3QgaW4gaGlzIG5hdHVyZSwgYXJlIHN0aWxsIHRoZXJlLiBUaGV5IGFyZSAKbGF0ZW50IGFuZCBpbmVmZmVjdGl2ZSwgY2VydGFpbmx5LCBiZWNhdXNlIGRlc2lyZSBvZiB0aGF0IHR5cGUgcmVxdWlyZXMgYXN0cmFsIAptYXR0ZXIgZm9yIGl0cyBtYW5pZmVzdGF0aW9uOyB0aGV5IGFyZSB3aGF0IE1hZGFtZSBCbGF2YXRza3kgb25jZSBjYWxsZWQgCu+/vXByaXZhdGlvbnMgb2YgbWF0dGVyLO+/vSBidXQgdGhleSBhcmUgcXVpdGUgcmVhZHkgdG8gY29tZSBpbnRvIHJlbmV3ZWQgYWN0aXZpdHksIAppZiBzdGltdWxhdGVkLCB3aGVuIHRoZSBtYW4gYWdhaW4gZmluZHMgaGltc2VsZiB1bmRlciBjb25kaXRpb25zIHdoZXJlIHRoZXkgY2FuIAphY3QuIAoKCjEzNTEuwqDCoMKgwqAKQW4gYW5hbG9neSBtYXkgcGVyaGFwcywgaWYgbm90IHB1c2hlZCB0b28gZmFyLCBiZSBvZiB1c2UgaW4gaGVscGluZyB1cyB0byAKZ3Jhc3AgdGhpcyBpZGVhLiBJZiBhIHNtYWxsIGJlbGwgYmUgbWFkZSB0byByaW5nIGNvbnRpbnVvdXNseSBpbiBhbiBhaXItdGlnaHQgCnZlc3NlbCwgYW5kIHRoZSBhaXIgYmUgdGhlbiBncmFkdWFsbHkgd2l0aGRyYXduLCB0aGUgc291bmQgd2lsbCBncm93IGZhaW50ZXIgYW5kIApmYWludGVyLCB1bnRpbCBpdCBiZWNvbWVzIGluYXVkaWJsZS4gVGhlIGJlbGwgaXMgc3RpbGwgcmluZ2luZyBhcyB2aWdvcm91c2x5IGFzIApldmVyLCB5ZXQgaXRzIHZpYnJhdGlvbiBpcyBubyBsb25nZXIgbWFuaWZlc3QgdG8gb3VyIGVhcnMsIGJlY2F1c2UgdGhlIG1lZGl1bSBieSAKbWVhbnMgb2Ygd2hpY2ggYWxvbmUgaXQgY2FuIHByb2R1Y2UgYW55IGVmZmVjdCB1cG9uIHRoZW0gaXMgYWJzZW50LiBBZG1pdCB0aGUgCmFpciB0byB0aGUgdmVzc2VsLCBhbmQgaW1tZWRpYXRlbHkgeW91IGhlYXIgdGhlIHNvdW5kIG9mIHRoZSBiZWxsIG9uY2UgbW9yZSBqdXN0IAphcyBiZWZvcmUuIAoKCjEzNTIuwqDCoMKgwqAKU2ltaWxhcmx5LCB0aGVyZSBhcmUgY2VydGFpbiBxdWFsaXRpZXMgaW4gbWFuJyBzIG5hdHVyZSB3aGljaCBuZWVkIGFzdHJhbCAKbWF0dGVyIGZvciB0aGVpciBtYW5pZmVzdGF0aW9uLCBqdXN0IGFzIHNvdW5kIG5lZWRzIGVpdGhlciBhaXIgb3Igc29tZSBkZW5zZXIgCm1hdHRlciBmb3IgaXRzIHZlaGljbGU7IGFuZCB3aGVuLCBpbiB0aGUgcHJvY2VzcyBvZiBoaXMgd2l0aGRyYXdhbCBpbnRvIGhpbXNlbGYgCmFmdGVyIHdoYXQgd2UgY2FsbCBkZWF0aCwgaGUgbGVhdmVzIHRoZSBhc3RyYWwgd29ybGQgZm9yIHRoZSBtZW50YWwsIHRob3NlIApxdWFsaXRpZXMgY2FuIG5vIGxvbmdlciBmaW5kIGV4cHJlc3Npb24sIGFuZCBtdXN0IHRoZXJlZm9yZSBwZXJmb3JjZSByZW1haW4gCmxhdGVudC4gQnV0IHdoZW4sIGNlbnR1cmllcyBsYXRlciwgb24gaGlzIGRvd253YXJkIGNvdXJzZSBpbnRvIHJlaW5jYXJuYXRpb24gaGUgCnJlLWVudGVycyB0aGUgYXN0cmFsIHJlYWxtLCB0aGVzZSBxdWFsaXRpZXMgd2hpY2ggaGF2ZSByZW1haW5lZCBsYXRlbnQgZm9yIHNvIApsb25nIG1hbmlmZXN0IHRoZW1zZWx2ZXMgb25jZSBtb3JlLCBhbmQgYmVjb21lIHRoZSB0ZW5kZW5jaWVzIG9mIHRoZSBuZXh0IApwZXJzb25hbGl0eS4gCgoKMTM1My7CoMKgwqDCoApJbiB0aGUgc2FtZSB3YXkgdGhlcmUgYXJlIHF1YWxpdGllcyBvZiB0aGUgbWluZCB3aGljaCBuZWVkIGZvciB0aGVpciAKZXhwcmVzc2lvbiB0aGUgbWF0dGVyIG9mIHRoZSBsb3dlciBtZW50YWwgbGV2ZWxzOyBhbmQgd2hlbiwgYWZ0ZXIgaGlzIGxvbmcgcmVzdCAKaW4gdGhlIGhlYXZlbi13b3JsZCwgdGhlIGNvbnNjaW91c25lc3Mgb2YgdGhlIG1hbiB3aXRoZHJhd3MgaW50byB0aGUgdHJ1ZSBlZ28gCnVwb24gdGhlIGhpZ2hlciBtZW50YWwgbGV2ZWxzLCB0aGVzZSBxdWFsaXRpZXMgYWxzbyBwYXNzIGludG8gbGF0ZW5jeS4gCgoKMTM1NC7CoMKgwqDCoApCdXQgd2hlbiB0aGUgZWdvIGlzIGFib3V0IHRvIHJlaW5jYXJuYXRlLCBoZSBoYXMgdG8gcmV2ZXJzZSB0aGlzIHByb2Nlc3MgCm9mIHdpdGhkcmF3YWwtLSB0byBwYXNzIGRvd253YXJkIHRocm91Z2ggdGhlIHZlcnkgc2FtZSB3b3JsZHMgdGhyb3VnaCB3aGljaCBoZSAKY2FtZSBvbiBoaXMgdXB3YXJkIGpvdXJuZXkuIFdoZW4gdGhlIHRpbWUgb2YgaGlzIG91dGZsb3cgY29tZXMsIGhlIHB1dHMgaGltc2VsZiAKZG93biBmaXJzdCBvbiB0byB0aGUgbG93ZXIgbGV2ZWxzIG9mIGhpcyBvd24gd29ybGQsIGFuZCBzZWVrcyB0byBleHByZXNzIGhpbXNlbGYgCnRoZXJlLCBhcyBmYXIgYXMgaXMgcG9zc2libGUgaW4gdGhhdCBsZXNzIHBlcmZlY3QgYW5kIGxlc3MgcGxhc3RpYyBtYXR0ZXIuIEluIApvcmRlciB0aGF0IGhlIG1heSBzbyBleHByZXNzIGhpbXNlbGYgYW5kIGZ1bmN0aW9uIGluIHRoYXQgd29ybGQsIGhlIG11c3QgY2xvdGhlIApoaW1zZWxmIGluIGl0cyBtYXR0ZXIuIAoKCjEzNTUuwqDCoMKgwqAKVGh1cyB0aGUgZWdvIGFnZ3JlZ2F0ZXMgYXJvdW5kIGhpbXNlbGYgbWF0dGVyIG9mIHRoZSBsb3dlciBtZW50YWwgCmxldmVscy0tIHRoZSBtYXR0ZXIgd2hpY2ggd2lsbCBhZnRlcndhcmRzIGJlY29tZSBoaXMgbWluZC1ib2R5LiBCdXQgdGhpcyBtYXR0ZXIgCmlzIG5vdCBzZWxlY3RlZCBhdCByYW5kb207IG91dCBvZiBhbGwgdGhlIHZhcmllZCBhbmQgaW5leGhhdXN0aWJsZSBzdG9yZSBhcm91bmQgCmhpbSBoZSBhdHRyYWN0cyB0byBoaW1zZWxmIGp1c3Qgc3VjaCBhIGNvbWJpbmF0aW9uIGFzIGlzIHBlcmZlY3RseSBmaXR0ZWQgdG8gCmdpdmUgZXhwcmVzc2lvbiB0byBoaXMgbGF0ZW50IG1lbnRhbCBxdWFsaXRpZXMuIEluIHByZWNpc2VseSB0aGUgc2FtZSB3YXksIHdoZW4gCmhlIG1ha2VzIHRoZSBmdXJ0aGVyIGRlc2NlbnQgdG8gdGhlIGFzdHJhbCB3b3JsZCwgdGhlIG1hdHRlciBvZiB0aGF0IHdvcmxkIHdoaWNoIAppcyBieSBuYXR1cmFsIGxhdyBhdHRyYWN0ZWQgdG8gaGltIHRvIHNlcnZlIGFzIGhpcyB2ZWhpY2xlIGlzIGV4YWN0bHkgdGhhdCB3aGljaCAKd2lsbCBnaXZlIGV4cHJlc3Npb24gdG8gdGhlIGRlc2lyZXMgd2hpY2ggd2VyZSBoaXMgYXQgdGhlIGNvbmNsdXNpb24gb2YgaGlzIAphc3RyYWwgbGlmZS4gSW4gcG9pbnQgb2YgZmFjdCwgaGUgcmVzdW1lcyBoaXMgbGlmZSBpbiBlYWNoIHdvcmxkIGp1c3Qgd2hlcmUgaGUgCmxlZnQgaXQgbGFzdCB0aW1lLiAKCgoxMzU2LsKgwqDCoMKgCkhpcyBxdWFsaXRpZXMgYXJlIG5vdCBhcyB5ZXQgaW4gYW55IHdheSBpbiBhY3Rpb247IHRoZXkgYXJlIHNpbXBseSB0aGUgCmdlcm1zIG9mIHF1YWxpdGllcywgYW5kIGZvciB0aGUgbW9tZW50IHRoZWlyIG9ubHkgaW5mbHVlbmNlIGlzIHRvIHNlY3VyZSBmb3IgCnRoZW1zZWx2ZXMgYSBwb3NzaWJsZSBmaWVsZCBvZiBtYW5pZmVzdGF0aW9uIGJ5IHByb3ZpZGluZyBzdWl0YWJsZSBtYXR0ZXIgZm9yIAp0aGVpciBleHByZXNzaW9uIGluIHRoZSB2YXJpb3VzIHZlaGljbGVzIG9mIHRoZSBjaGlsZC4gV2hldGhlciB0aGV5IGRldmVsb3Agb25jZSAKbW9yZSBpbiB0aGlzIGxpZmUgaW50byB0aGUgc2FtZSBkZWZpbml0ZSB0ZW5kZW5jaWVzIGFzIGluIHRoZSBsYXN0IG9uZSwgd2lsbCAKZGVwZW5kIGxhcmdlbHkgdXBvbiB0aGUgZW5jb3VyYWdlbWVudCBvciBvdGhlcndpc2UgZ2l2ZW4gdG8gdGhlbSBieSB0aGUgCnN1cnJvdW5kaW5ncyBvZiB0aGUgY2hpbGQgZHVyaW5nIGhpcyBlYXJseSB5ZWFycy4gQW55IG9uZSBvZiB0aGVtLCBnb29kIG9yIGJhZCwgCm1heSBiZSByZWFkaWx5IHN0aW11bGF0ZWQgaW50byBhY3Rpdml0eSBieSBlbmNvdXJhZ2VtZW50LCBvciwgb24gdGhlIG90aGVyIGhhbmQsIAptYXkgYmUgc3RhcnZlZCBvdXQgZm9yIGxhY2sgb2YgdGhhdCBlbmNvdXJhZ2VtZW50LiBJZiBzdGltdWxhdGVkLCBpdCBiZWNvbWVzIGEgCm1vcmUgcG93ZXJmdWwgZmFjdG9yIGluIHRoZSBtYW4nIHMgbGlmZSB0aGlzIHRpbWUgdGhhbiBpdCB3YXMgaW4gaGlzIHByZXZpb3VzIApleGlzdGVuY2U7IGlmIHN0YXJ2ZWQgb3V0LCBpdCByZW1haW5zIG1lcmVseSBhcyBhbiB1bmZydWN0aWZpZWQgZ2VybSwgd2hpY2ggCnByZXNlbnRseSBhdHJvcGhpZXMgYW5kIGRpZXMgb3V0LCBhbmQgZG9lcyBub3QgbWFrZSBpdHMgYXBwZWFyYW5jZSBpbiB0aGUgCnN1Y2NlZWRpbmcgaW5jYXJuYXRpb24gYXQgYWxsLiAKCgoxMzU3LsKgwqDCoMKgClRoaXMsIHRoZW4sIGlzIHRoZSBjb25kaXRpb24gb2YgdGhlIGNoaWxkIHdoZW4gZmlyc3QgaGUgY29tZXMgdW5kZXIgaGlzIApwYXJlbnRzJyBjYXJlLiBIZSBjYW5ub3QgYmUgc2FpZCB0byBoYXZlIGFzIHlldCBhIGRlZmluaXRlIG1pbmQtYm9keSBvciBhIApkZWZpbml0ZSBhc3RyYWwgYm9keSwgYnV0IGhlIGhhcyBhcm91bmQgYW5kIHdpdGhpbiBoaW0gdGhlIG1hdHRlciBvdXQgb2Ygd2hpY2ggCnRoZXNlIGFyZSB0byBiZSBidWlsZGVkLiAKCgoxMzU4LsKgwqDCoMKgCkhlIHBvc3Nlc3NlcyB0ZW5kZW5jaWVzIG9mIGFsbCBzb3J0cywgc29tZSBvZiB0aGVtIGdvb2QgYW5kIHNvbWUgb2YgdGhlbSAKZXZpbCwgYW5kIGl0IGlzIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgZGV2ZWxvcG1lbnQgb2YgdGhlc2UgdGVuZGVuY2llcyB0aGF0IHRoaXMgCmJ1aWxkaW5nIHdpbGwgYmUgcmVndWxhdGVkLiBBbmQgdGhpcyBkZXZlbG9wbWVudCBpbiB0dXJuIGRlcGVuZHMgYWxtb3N0IGVudGlyZWx5IAp1cG9uIHRoZSBpbmZsdWVuY2VzIGJyb3VnaHQgdG8gYmVhciB1cG9uIGhpbSBmcm9tIG91dHNpZGUgZHVyaW5nIHRoZSBmaXJzdCBmZXcgCnllYXJzIG9mIGhpcyBleGlzdGVuY2UuIER1cmluZyB0aGVzZSB5ZWFycyB0aGUgZWdvIGhhcyBhcyB5ZXQgYnV0IGxpdHRsZSBob2xkIApvdmVyIGhpcyB2ZWhpY2xlcywgYW5kIGhlIGxvb2tzIHRvIHRoZSBwYXJlbnRzIHRvIGhlbHAgaGltIHRvIG9idGFpbiBhIGZpcm1lciAKZ3Jhc3AsIGFuZCB0byBwcm92aWRlIGhpbSB3aXRoIHN1aXRhYmxlIGNvbmRpdGlvbnM7IGhlbmNlIHRoZWlyIHJlc3BvbnNpYmlsaXR5LgoKCjEzNTkuwqDCoMKgwqAKVEhFIFBMQVNUSUNJVFkgT0YgQ0hJTERIT09EIAoKCjEzNjAuwqDCoMKgwqAKSXQgaXMgaW1wb3NzaWJsZSB0byBleGFnZ2VyYXRlIHRoZSBwbGFzdGljaXR5IG9mIHRoZXNlIHVuZm9ybWVkIHZlaGljbGVzLiAKV2Uga25vdyB0aGF0IHRoZSBwaHlzaWNhbCBib2R5IG9mIGEgY2hpbGQsIGlmIG9ubHkgaXRzIHRyYWluaW5nIGJlIGJlZ3VuIGF0IGEgCnN1ZmZpY2llbnRseSBlYXJseSBhZ2UsIG1heSBiZSBtb2RpZmllZCB0byBhIGNvbnNpZGVyYWJsZSBleHRlbnQuIEFuIGFjcm9iYXQsIApmb3IgZXhhbXBsZSwgd2lsbCB0YWtlIGEgYm95IG9mIGZpdmUgb3Igc2l4IHllYXJzIG9sZCwgd2hvc2UgYm9uZXMgYW5kIG11c2NsZXMgCmFyZSBub3QgeWV0IGFzIGhhcmRlbmVkIGFuZCBmaXJtbHkgc2V0IGFzIG91cnMgYXJlLCBhbmQgd2lsbCBncmFkdWFsbHkgYWNjdXN0b20gCmhpcyBsaW1icyBhbmQgYm9keSB0byB0YWtlIHJlYWRpbHkgYW5kIHdpdGggY29tZm9ydCBhbGwgc29ydHMgb2YgcG9zaXRpb25zIHdoaWNoIAp3b3VsZCBiZSBhYnNvbHV0ZWx5IGltcG9zc2libGUgZm9yIG1vc3Qgb2YgdXMgbm93LCBldmVuIHdpdGggYW55IGFtb3VudCBvZiAKdHJhaW5pbmcuIFlldCBvdXIgb3duIGJvZGllcyBhdCB0aGUgc2FtZSBhZ2UgZGlmZmVyZWQgaW4gbm8gZXNzZW50aWFsIHJlc3BlY3QgCmZyb20gdGhhdCBib3knIHMsIGFuZCBpZiB0aGV5IGhhZCBiZWVuIHB1dCB0aHJvdWdoIHRoZSBzYW1lIGV4ZXJjaXNlcyB0aGV5IHdvdWxkIApoYXZlIGJlY29tZSBhcyBzdXBwbGUgYW5kIGVsYXN0aWMgYXMgaGlzLiAKCgoxMzYxLsKgwqDCoMKgCklmIHRoZSBwaHlzaWNhbCBib2R5IG9mIGEgY2hpbGQgaXMgdGh1cyBwbGFzdGljIGFuZCByZWFkaWx5IGltcHJlc3NpYmxlLCAKaGlzIGFzdHJhbCBhbmQgbWVudGFsIHZlaGljbGVzIGFyZSBmYXIgbW9yZSBzby4gVGhleSB0aHJpbGwgaW4gcmVzcG9uc2UgdG8gZXZlcnkgCnZpYnJhdGlvbiB3aGljaCB0aGV5IGVuY291bnRlciwgYW5kIGFyZSBlYWdlcmx5IHJlY2VwdGl2ZSB3aXRoIHJlZ2FyZCB0byBhbGwgCmluZmx1ZW5jZXMsIHdoZXRoZXIgZ29vZCBvciBldmlsLCB3aGljaCBlbWFuYXRlIGZyb20gdGhvc2UgYXJvdW5kIHRoZW0uIFRoZXkgCnJlc2VtYmxlIHRoZSBwaHlzaWNhbCBib2R5IGFsc28gaW4gdGhpcyBvdGhlciBjaGFyYWN0ZXJpc3RpYy0tIHRoYXQgdGhvdWdoIGluIAplYXJseSB5b3V0aCB0aGV5IGFyZSBzbyBzdXNjZXB0aWJsZSBhbmQgc28gZWFzaWx5IG1vdWxkZWQsIHRoZXkgc29vbiBzZXQgYW5kIApzdGlmZmVuIGFuZCBhY3F1aXJlIGRlZmluaXRlIGhhYml0cyB3aGljaCwgd2hlbiBvbmNlIGZpcm1seSBlc3RhYmxpc2hlZCwgY2FuIGJlIAphbHRlcmVkIG9ubHkgd2l0aCBncmVhdCBkaWZmaWN1bHR5LiAKCgoxMzYyLsKgwqDCoMKgCldoZW4gd2UgcmVhbGlzZSB0aGlzLCB3ZSBzZWUgYXQgb25jZSB0aGUgZXh0cmVtZSBpbXBvcnRhbmNlIG9mIHRoZSAKc3Vycm91bmRpbmdzIGluIHdoaWNoIGEgY2hpbGQgcGFzc2VzIGhpcyBlYXJsaWVzdCB5ZWFycywgYW5kIHRoZSBoZWF2eSAKcmVzcG9uc2liaWxpdHkgd2hpY2ggcmVzdHMgdXBvbiBldmVyeSBwYXJlbnQgdG8gc2VlIHRoYXQgdGhlIGNvbmRpdGlvbnMgb2YgdGhlIApjaGlsZCcgcyBkZXZlbG9wbWVudCBhcmUgYXMgZ29vZCBhcyB0aGV5IGNhbiBiZSBtYWRlLiBUaGUgbGl0dGxlIGNyZWF0dXJlIGlzIGFzIApjbGF5IGluIG91ciBoYW5kcyB0byBtb3VsZCBhbG1vc3QgYXMgd2Ugd2lsbDsgbW9tZW50IGJ5IG1vbWVudCB0aGUgZ2VybXMgb2YgZ29vZCAKb3IgZXZpbCBxdWFsaXR5IGJyb3VnaHQgb3ZlciBmcm9tIHRoZSBsYXN0IGJpcnRoIGFyZSBhd2FrZW5pbmcgaW50byBhY3Rpdml0eTsgCm1vbWVudCBieSBtb21lbnQgYXJlIGJlaW5nIGJ1aWx0IHVwIHRob3NlIHZlaGljbGVzIHdoaWNoIHdpbGwgY29uZGl0aW9uIHRoZSAKd2hvbGUgb2YgaGlzIGFmdGVyLWxpZmU7IGFuZCBpdCByZXN0cyB3aXRoIHVzIHRvIGF3YWtlbiB0aGUgZ2VybSBvZiBnb29kLCB0byAKc3RhcnZlIG91dCB0aGUgZ2VybSBvZiBldmlsLiBUbyBhIGZhciBsYXJnZXIgZXh0ZW50IHRoYW4gaXMgZXZlciByZWFsaXNlZCBieSAKZXZlbiB0aGUgZm9uZGVzdCBwYXJlbnRzLCB0aGUgY2hpbGQnIHMgZnV0dXJlIGlzIHVuZGVyIHRoZWlyIGNvbnRyb2wuIAoKCjEzNjMuwqDCoMKgwqAKVGhpbmsgb2YgYWxsIHRoZSBmcmllbmRzIHdob20geW91IGtub3cgc28gd2VsbCwgYW5kIHRyeSB0byBpbWFnaW5lIHdoYXQgCnNwbGVuZGlkIHNwZWNpbWVucyBvZiBodW1hbml0eSB0aGV5IHdvdWxkIGJlIGlmIGFsbCB0aGVpciBnb29kIHF1YWxpdGllcyB3ZXJlIAplbm9ybW91c2x5IGludGVuc2lmaWVkLCBhbmQgYWxsIHRoZSBsZXNzIGVzdGltYWJsZSBmZWF0dXJlcyBhYnNvbHV0ZWx5IHdlZWRlZCAKb3V0IG9mIHRoZWlyIGNoYXJhY3RlcnMuIAoKCjEzNjQuwqDCoMKgwqAKVGhhdCBpcyB0aGUgcmVzdWx0IHdoaWNoIGl0IGlzIGluIHlvdXIgcG93ZXIgdG8gcHJvZHVjZSBpbiB5b3VyIApjaGlsZCwgaWYgeW91IGRvIHlvdXIgZnVsbCBkdXR5IGJ5IGhpbTsgc3VjaCBhIHNwZWNpbWVuIG9mIGh1bWFuaXR5IHlvdSBtYXkgbWFrZSAKaGltIGlmIHlvdSB3aWxsIGJ1dCB0YWtlIHRoZSB0cm91YmxlLiAKCgoxMzY1LsKgwqDCoMKgClRIRSBJTkZMVUVOQ0UgT0YgUEFSRU5UUyAKCgoxMzY2LsKgwqDCoMKgCkJ1dCBob3c/IHlvdSB3aWxsIHNheTsgYnkgcHJlY2VwdD8gYnkgZWR1Y2F0aW9uPyBZZXMsIHRydWx5LCBtdWNoIG1heSBiZSAKZG9uZSBpbiB0aGF0IHdheSB3aGVuIHRoZSB0aW1lIGNvbWVzOyBidXQgYW5vdGhlciBhbmQgZmFyIGdyZWF0ZXIgcG93ZXIgdGhhbiAKdGhhdCBpcyBpbiB5b3VyIGhhbmRzLS0gYSBwb3dlciB3aGljaCB5b3UgbWF5IGJlZ2luIHRvIHdpZWxkIGZyb20gdGhlIHZlcnkgCm1vbWVudCBvZiB0aGUgY2hpbGQnIHMgYmlydGgsIGFuZCBldmVuIGJlZm9yZSB0aGF0OyBhbmQgdGhhdCBpcyB0aGUgcG93ZXIgb2YgdGhlIAppbmZsdWVuY2Ugb2YgeW91ciBvd24gbGlmZS4gCgoKMTM2Ny7CoMKgwqDCoApUbyBzb21lIGV4dGVudCB0aGlzIGlzIHJlY29nbmlzZWQsIGZvciBtb3N0IGNpdmlsaXNlZCBwZW9wbGUgYXJlIGNhcmVmdWwgCm9mIHRoZWlyIHdvcmRzIGFuZCBhY3Rpb25zIGluIHRoZSBwcmVzZW5jZSBvZiBhIGNoaWxkLCBhbmQgaXQgd291bGQgYmUgYW4gCnVudXN1YWxseSBkZXByYXZlZCBwYXJlbnQgd2hvIHdvdWxkIGFsbG93IGhpcyBjaGlsZHJlbiB0byBoZWFyIGhpbSB1c2UgdmlvbGVudCAKbGFuZ3VhZ2UsIG9yIHRvIHNlZSBoaW0gZ2l2ZSBhd2F5IHRvIGEgZml0IG9mIHBhc3Npb247IGJ1dCB3aGF0IGEgbWFuIGRvZXMgbm90IApyZWFsaXNlIGlzIHRoYXQgaWYgaGUgd2lzaGVzIHRvIGF2b2lkIGRvaW5nIHRoZSBtb3N0IHNlcmlvdXMgaGFybSB0byBoaXMgbGl0dGxlIApvbmVzLCBoZSBtdXN0IGxlYXJuIHRvIGNvbnRyb2wgbm90IG9ubHkgaGlzIHdvcmRzIGFuZCBkZWVkcywgYnV0IGFsc28gaGlzIAp0aG91Z2h0cy4gSXQgaXMgdHJ1ZSB0aGF0IHlvdSBjYW5ub3QgaW1tZWRpYXRlbHkgc2VlIHRoZSBwZXJuaWNpb3VzIGVmZmVjdCAKb2YgeW91ciBldmlsIHRob3VnaHQgb3IgZGVzaXJlIHVwb24gdGhlIG1pbmQgb2YgeW91ciBjaGlsZCwgYnV0IG5vbmUgdGhlIGxlc3MgaXQgCmlzIHRoZXJlLCBhbmQgaXQgaXMgbW9yZSByZWFsIGFuZCBtb3JlIHRlcnJpYmxlLCBtb3JlIGluc2lkaW91cyBhbmQgbW9yZSAKZmFyLXJlYWNoaW5nIHRoYW4gdGhlIGhhcm0gd2hpY2ggaXMgb2J2aW91cyB0byB0aGUgcGh5c2ljYWwgZXllLiAKCgoxMzY4LsKgwqDCoMKgCklmIGEgcGFyZW50IGFsbG93cyBoaW1zZWxmIHRvIGNoZXJpc2ggZmVlbGluZ3Mgb2YgYW5nZXIgb3IgamVhbG91c3ksIG9mIAplbnZ5IG9yIGF2YXJpY2UsIG9mIHNlbGZpc2huZXNzIG9yIHByaWRlLCBldmVuIHRob3VnaCBoZSBtYXkgbmV2ZXIgZ2l2ZSB0aGVtIApvdXR3YXJkIGV4cHJlc3Npb24sIHRoZSB3YXZlcyBvZiBlbW90aW9uIHdoaWNoIGhlIHRoZXJlYnkgY2F1c2VzIGluIGhpcyBvd24gCmRlc2lyZS1ib2R5IGFyZSBhc3N1cmVkbHkgYWN0aW5nIGFsbCB0aGUgd2hpbGUgdXBvbiB0aGUgcGxhc3RpYyBhc3RyYWwgYm9keSBvZiAKaGlzIGNoaWxkLCB0dW5pbmcgaXRzIHVuZHVsYXRpb25zIHRvIHRoZSBzYW1lIGtleSwgYXdha2VuaW5nIGludG8gYWN0aXZpdHkgYW55IApnZXJtcyBvZiB0aG9zZSBzaW5zIHRoYXQgbWF5IGhhdmUgYmVlbiBicm91Z2h0IG92ZXIgZnJvbSBoaXMgcGFzdCBsaWZlLCBhbmQgCnNldHRpbmcgdXAgaW4gaGltIGFsc28gdGhlIHNhbWUgc2V0IG9mIGV2aWwgaGFiaXRzLCB3aGljaCB3aGVuIHRoZXkgaGF2ZSBvbmNlIApiZWNvbWUgZGVmaW5pdGVseSBmb3JtZWQgd2lsbCBiZSBleGNlZWRpbmdseSBkaWZmaWN1bHQgdG8gY29ycmVjdC4gQW5kIHRoaXMgaXMgCmV4YWN0bHkgd2hhdCBpcyBiZWluZyBkb25lIGluIHRoZSBjYXNlIG9mIG1vc3Qgb2YgdGhlIGNoaWxkcmVuIHdob20gd2Ugc2VlIAphcm91bmQgdXMuIAoKCjEzNjkuwqDCoMKgwqAKVEhFIEFVUkEgT0YgQSBDSElMRCAKCgoxMzcwLsKgwqDCoMKgCkFzIGl0IHByZXNlbnRzIGl0c2VsZiB0byBhIGNsYWlydm95YW50LCB0aGUgc3VidGxlIGJvZHkgb2YgYSBjaGlsZCBpcyAKb2Z0ZW4gYSBtb3N0IGJlYXV0aWZ1bCBvYmplY3QtLSBwdXJlIGFuZCBicmlnaHQgaW4gaXRzIGNvbG91ciwgZnJlZSwgYXMgeWV0LCAKZnJvbSB0aGUgc3RhaW5zIG9mIHNlbnN1YWxpdHkgYW5kIGF2YXJpY2UsIGFuZCBmcm9tIHRoZSBkdWxsIGNsb3VkIG9mIGlsbC13aWxsIAphbmQgc2VsZmlzaG5lc3Mgd2hpY2ggc28gZnJlcXVlbnRseSBkYXJrZW5zIGFsbCB0aGUgbGlmZSBvZiB0aGUgYWR1bHQuIEluIGl0IGFyZSAKdG8gYmUgc2VlbiBseWluZyBsYXRlbnQgYWxsIHRoZSBnZXJtcyBhbmQgdGVuZGVuY2llcyBvZiB3aGljaCB3ZSBoYXZlIHNwb2tlbi0tIApzb21lIG9mIHRoZW0gZXZpbCwgc29tZSBvZiB0aGVtIGdvb2Q7IGFuZCB0aHVzIHRoZSBwb3NzaWJpbGl0aWVzIG9mIHRoZSBjaGlsZCcgcyAKZnV0dXJlIGxpZmUgbGllIHBsYWluIGJlZm9yZSB0aGUgZXllIG9mIHRoZSB3YXRjaGVyLiAKCgoxMzcxLsKgwqDCoMKgCkJ1dCBob3cgc2FkIGl0IGlzIHRvIHNlZSB0aGUgY2hhbmdlIHdoaWNoIGFsbW9zdCBpbnZhcmlhYmx5IGNvbWVzIG92ZXIgCnRoYXQgbG92ZWx5IGNoaWxkLWF1cmEgYXMgdGhlIHllYXJzIHBhc3Mgb24tLSB0byBub3RlIGhvdyBwZXJzaXN0ZW50bHkgdGhlIGV2aWwgCnRlbmRlbmNpZXMgYXJlIGZvc3RlcmVkIGFuZCBzdHJlbmd0aGVuZWQgYnkgaGlzIGVudmlyb25tZW50LCBhbmQgaG93IGVudGlyZWx5IAp0aGUgZ29vZCBvbmVzIGFyZSBuZWdsZWN0ZWQhIEFuZCBzbyBpbmNhcm5hdGlvbiBhZnRlciBpbmNhcm5hdGlvbiBpcyBhbG1vc3QgCndhc3RlZCwgYW5kIGEgbGlmZSB3aGljaCwgd2l0aCBqdXN0IGEgbGl0dGxlIG1vcmUgY2FyZSBhbmQgc2VsZi1yZXN0cmFpbnQgb24gdGhlIApwYXJ0IG9mIHBhcmVudHMgYW5kIHRlYWNoZXJzLCBtaWdodCBoYXZlIGJvcm5lIHJpY2ggZnJ1aXQgb2Ygc3Bpcml0dWFsIApkZXZlbG9wbWVudCwgY29tZXMgcHJhY3RpY2FsbHkgdG8gbm90aGluZywgYW5kIGF0IGl0cyBjbG9zZSBsZWF2ZXMgc2NhcmNlIGFueSAKaGFydmVzdCB0byBiZSBnYXJuZXJlZCBpbnRvIHRoZSBlZ28gb2Ygd2hpY2ggaXQgaGFzIGJlZW4gc28gb25lLXNpZGVkIGFuIApleHByZXNzaW9uLiAKCgoxMzcyLsKgwqDCoMKgCkNBUkVMRVNTTkVTUyBPRiBQQVJFTlRTIAoKCjEzNzMuwqDCoMKgwqAKV2hlbiBvbmUgd2F0Y2hlcyB0aGUgY3JpbWluYWwgY2FyZWxlc3NuZXNzIHdpdGggd2hpY2ggdGhvc2Ugd2hvIGFyZSAKcmVzcG9uc2libGUgZm9yIHRoZSBicmluZ2luZy11cCBvZiBjaGlsZHJlbiBhbGxvdyB0aGVtIHRvIGJlIHBlcnBldHVhbGx5IApzdXJyb3VuZGVkIGJ5IGFsbCBraW5kcyBvZiBldmlsIGFuZCB3b3JsZGx5IHRob3VnaHRzLCBvbmUgY2Vhc2VzIHRvIG1hcnZlbCBhdCAKdGhlIGV4dHJhb3JkaW5hcnkgc2xvd25lc3Mgb2YgaHVtYW4gZXZvbHV0aW9uLCBhbmQgdGhlIGFsbW9zdCBpbXBlcmNlcHRpYmxlIApwcm9ncmVzcyB3aGljaCBpcyBhbGwgdGhhdCB0aGUgZWdvIGhhcyB0byBzaG93IGZvciBsaWZlIGFmdGVyIGxpZmUgc3BlbnQgaW4gdGhlIAp0b2lsIGFuZCBzdHJ1Z2dsZSBvZiB0aGlzIGxvd2VyIHdvcmxkLiBZZXQgd2l0aCBzbyBsaXR0bGUgbW9yZSB0cm91YmxlIHNvIHZhc3QgCmFuIGltcHJvdmVtZW50IG1pZ2h0IGJlIGludHJvZHVjZWQhIAoKCjEzNzQuwqDCoMKgwqAKSXQgbmVlZHMgbm8gYXN0cmFsIHZpc2lvbiB0byBzZWUgd2hhdCBhIGNoYW5nZSB3b3VsZCBjb21lIG92ZXIgdGhpcyB3ZWFyeSAKb2xkIHdvcmxkIGlmIHRoZSBtYWpvcml0eSwgb3IgZXZlbiBhbnkgbGFyZ2UgcHJvcG9ydGlvbiBvZiB0aGUgbmV4dCBnZW5lcmF0aW9uLCAKd2VyZSBzdWJqZWN0ZWQgdG8gdGhlIHByb2Nlc3Mgc3VnZ2VzdGVkIGFib3ZlLS0gaWYgYWxsIHRoZWlyIGV2aWwgcXVhbGl0aWVzIHdlcmUgCnN0ZWFkaWx5IHJlcHJlc3NlZCBhbmQgYXRyb3BoaWVkIGZvciBsYWNrIG9mIG5vdXJpc2htZW50LCB3aGlsZSBhbGwgdGhlIGdvb2QgaW4gCnRoZW0gd2FzIGFzc2lkdW91c2x5IGN1bHRpdmF0ZWQgYW5kIGRldmVsb3BlZCB0byB0aGUgZnVsbGVzdCBwb3NzaWJsZSBleHRlbnQuIApPbmUgaGFzIG9ubHkgdG8gdGhpbmsgd2hhdCB0aGV5IGluIHR1cm4gd291bGQgZG8gZm9yIHRoZWlyIGNoaWxkcmVuLCB0byAKcmVhbGlzZSB0aGF0IGluIHR3byBvciB0aHJlZSBnZW5lcmF0aW9ucyBhbGwgdGhlIGNvbmRpdGlvbnMgb2YgbGlmZSB3b3VsZCBiZSAKZGlmZmVyZW50LCBhbmQgYSB0cnVlIGdvbGRlbiBhZ2Ugd291bGQgaGF2ZSBiZWd1bi4gRm9yIHRoZSB3b3JsZCBhdCBsYXJnZSBhZ2UgCm1heSBzdGlsbCBiZSBkaXN0YW50LCBidXQgc3VyZWx5IHdlIHdobyBhcmUgbWVtYmVycyBvZiB0aGUgVGhlb3NvcGhpY2FsIFNvY2lldHkgCm91Z2h0IHRvIGJlIGRvaW5nIG91ciBiZXN0IHRvIGhhc3RlbiBpdHMgYWR2ZW50OiBhbmQgdGhvdWdoIHRoZSBpbmZsdWVuY2Ugb2Ygb3VyIApleGFtcGxlIG1heSBub3QgZXh0ZW5kIGZhciwgaXQgaXMgYXQgbGVhc3Qgd2l0aGluIG91ciBwb3dlciB0byBzZWUgdGhhdCBvdXIgb3duIApjaGlsZHJlbiBoYXZlIGZvciB0aGVpciBkZXZlbG9wbWVudCBldmVyeSBhZHZhbnRhZ2Ugd2hpY2ggd2UgY2FuIGdpdmUgdGhlbS4gCgoKMTM3NS7CoMKgwqDCoApUaGUgZ3JlYXRlc3QgY2FyZSwgdGhlbiwgb3VnaHQgdG8gYmUgdGFrZW4gYXMgdG8gdGhlIHN1cnJvdW5kaW5ncyBvZiAKY2hpbGRyZW4sIGFuZCBwZW9wbGUgd2hvIHdpbGwgcGVyc2lzdCBpbiB0aGlua2luZyBjb2Fyc2UgYW5kIHVubG92aW5nIHRob3VnaHRzIApzaG91bGQgYXQgbGVhc3QgbGVhcm4gdGhhdCB3aGlsZSB0aGV5IGFyZSBkb2luZyBzbywgdGhleSBhcmUgdW5maXQgdG8gY29tZSBuZWFyIAp0aGUgeW91bmcsIGxlc3QgdGhleSBpbmZlY3QgdGhlbSB3aXRoIGEgY29udGFnaW9uIG1vcmUgdmlydWxlbnQgdGhhbiBmZXZlci4gCgoKMTM3Ni7CoMKgwqDCoApNdWNoIGNhcmUgaXMgbmVlZGVkLCBmb3IgZXhhbXBsZSwgaW4gdGhlIHNlbGVjdGlvbiBvZiB0aGUgbnVyc2VzIHRvIHdob20gCmNoaWxkcmVuIG11c3Qgc29tZXRpbWVzIGJlIGNvbW1pdHRlZDsgdGhvdWdoIGl0IGlzIHN1cmVseSBvYnZpb3VzIHRoYXQgdGhlIGxlc3MgCnRoZXkgYXJlIGxlZnQgaW4gdGhlIGhhbmRzIG9mIHNlcnZhbnRzIHRoZSBiZXR0ZXIuIE51cnNlcyBvZnRlbiBkZXZlbG9wIHRoZSAKc3Ryb25nZXN0IGFmZmVjdGlvbiBmb3IgdGhlaXIgY2hhcmdlcywgYW5kIHRyZWF0IHRoZW0gYXMgdGhvdWdoIHRoZXkgd2VyZSBvZiAKdGhlaXIgb3duIGZsZXNoIGFuZCBibG9vZDsgeWV0IHRoaXMgaXMgbm90IGludmFyaWFibHkgdGhlIGNhc2UsIGFuZCwgZXZlbiBpZiBpdCAKYmUsIHRoZSBzZXJ2YW50cyBhcmUgYWxtb3N0IGluZXZpdGFibHkgbGVzcyBlZHVjYXRlZCBhbmQgbGVzcyByZWZpbmVkIHRoYW4gdGhlaXIgCm1pc3RyZXNzZXMuIEEgY2hpbGQgd2hvIGlzIGxlZnQgdG9vIG11Y2ggdG8gdGhlaXIgY29tcGFuaW9uc2hpcCBpcyB0aGVyZWZvcmUgCmNvbnN0YW50bHkgc3ViamVjdGVkIHRvIHRoZSBpbXBhY3Qgb2YgdGhvdWdodCB3aGljaCBpcyBsaWtlbHkgdG8gYmUgb2YgYSBsZXNzIAplbGV2YXRlZCBvcmRlciB0aGFuIGV2ZW4gdGhlIGF2ZXJhZ2UgbGV2ZWwgb2YgdGhhdCBvZiBoaXMgcGFyZW50cy4gU28gdGhhdCB0aGUgCm1vdGhlciB3aG8gd2lzaGVzIGhlciBjaGlsZCB0byBncm93IHVwIGludG8gYSByZWZpbmVkIGFuZCBkZWxpY2F0ZS1taW5kZWQgbWFuIApzaG91bGQgZW50cnVzdCBoaW0gdG8gdGhlIGNhcmUgb2Ygb3RoZXJzIGFzIGxpdHRsZSBhcyBwb3NzaWJsZSwgYW5kIHNob3VsZCwgCmFib3ZlIGFsbCB0aGluZ3MsIHRha2UgZ29vZCBoZWVkIHRvIGhlciBvd24gdGhvdWdodHMgd2hpbGUgd2F0Y2hpbmcgb3ZlciBoaW0uCgoKMTM3Ny7CoMKgwqDCoApIZXIgZ3JlYXQgYW5kIGNhcmRpbmFsIHJ1bGUgc2hvdWxkIGJlIHRvIGFsbG93IGhlcnNlbGYgdG8gaGFyYm91ciBubyAKdGhvdWdodCBhbmQgbm8gZGVzaXJlIHdoaWNoIHNoZSBkb2VzIG5vdCB3aXNoIHRvIHNlZSByZXByb2R1Y2VkIGluIGhlciBzb24uIE5vciAKaXMgdGhpcyBtZXJlbHkgbmVnYXRpdmUgY29ucXVlc3Qgb3ZlciBoZXJzZWxmIHN1ZmZpY2llbnQsIGZvciwgaGFwcGlseSwgYWxsIHRoYXQgCmhhcyBiZWVuIHNhaWQgYWJvdXQgdGhlIGluZmx1ZW5jZSBhbmQgcG93ZXIgb2YgdGhvdWdodCBpcyB0cnVlIG9mIGdvb2QgdGhvdWdodHMgCmp1c3QgYXMgbXVjaCBhcyBvZiBldmlsIG9uZXMsIGFuZCBzbyB0aGUgcGFyZW50cycgZHV0eSBoYXMgYSBwb3NpdGl2ZSBhcyB3ZWxsIGFzIAphIG5lZ2F0aXZlIHNpZGUuIE5vdCBvbmx5IG11c3QgdGhleSBhYnN0YWluIG1vc3QgY2FyZWZ1bGx5IGZyb20gZm9zdGVyaW5nLCBieSAKdW53b3J0aHkgb3Igc2VsZmlzaCB0aG91Z2h0cyBvZiB0aGVpciBvd24sIGFueSBldmlsIHRlbmRlbmN5IHdoaWNoIG1heSBleGlzdCBpbiAKdGhlaXIgY2hpbGQsIGJ1dCBpdCBpcyBhbHNvIHRoZWlyIGR1dHkgdG8gY3VsdGl2YXRlIGluIHRoZW1zZWx2ZXMgc3Ryb25nLCAKdW5zZWxmaXNoIGFmZmVjdGlvbiwgcHVyZSB0aG91Z2h0cywgaGlnaCBhbmQgbm9ibGUgYXNwaXJhdGlvbnMsIGluIG9yZGVyIHRoYXQgCmFsbCB0aGVzZSBtYXkgcmVhY3QgdXBvbiB0aGVpciBjaGFyZ2UsIHF1aWNrZW4gd2hhdGV2ZXIgb2YgZ29vZCBpcyBhbHJlYWR5IApsYXRlbnQgaW4gaGltLCBhbmQgY3JlYXRlIGEgdGVuZGVuY3kgdG93YXJkcyBhbnkgZ29vZCBxdWFsaXR5IHdoaWNoIGlzIGFzIHlldCAKdW5yZXByZXNlbnRlZCBpbiBoaXMgY2hhcmFjdGVyLiAKCgoxMzc4LsKgwqDCoMKgCk5vciBuZWVkIHRoZXkgaGF2ZSBhbnkgZmVhciB0aGF0IHN1Y2ggZWZmb3J0IG9uIHRoZWlyIHBhcnQgd2lsbCBmYWlsIGluIAppdHMgZWZmZWN0LCBiZWNhdXNlIHRoZXkgYXJlIHVuYWJsZSB0byBmb2xsb3cgaXRzIGFjdGlvbiBmb3IgbGFjayBvZiBhc3RyYWwgCnZpc2lvbi4gVG8gdGhlIHNpZ2h0IG9mIGEgY2xhaXJ2b3lhbnQgdGhlIHdob2xlIHRyYW5zYWN0aW9uIGlzIG9idmlvdXM7IGhlIApkaXN0aW5ndWlzaGVzIHRoZSB3YXZlcyBzZXQgdXAgaW4gdGhlIG1pbmQtYm9keSBvZiB0aGUgcGFyZW50IGJ5IHRoZSBpbmNlcHRpb24gCm9mIHRoZSB0aG91Z2h0LCBzZWVzIGl0IHJhZGlhdGluZyBmb3J0aCwgYW5kIG5vdGVzIHRoZSBzeW1wYXRoZXRpYyB1bmR1bGF0aW9ucyAKY3JlYXRlZCBieSBpdHMgaW1waW5nZW1lbnQgdXBvbiB0aGUgbWluZC1ib2R5IG9mIHRoZSBjaGlsZDsgYW5kIGlmIGhlIHJlbmV3cyBoaXMgCm9ic2VydmF0aW9uIGF0IGludGVydmFscyBkdXJpbmcgc29tZSBjb25zaWRlcmFibGUgcGVyaW9kLCBoZSBkaXNjZXJucyB0aGUgCmdyYWR1YWwgYnV0IHBlcm1hbmVudCBjaGFuZ2UgcHJvZHVjZWQgaW4gdGhhdCBtaW5kLWJvZHkgYnkgdGhlIGNvbnN0YW50IApyZXBldGl0aW9uIG9mIHRoZSBzYW1lIHN0aW11bHVzIHRvIHByb2dyZXNzLiBJZiB0aGUgcGFyZW50cyB0aGVtc2VsdmVzIHBvc3Nlc3MgCmFzdHJhbCBzaWdodCwgaXQgd2lsbCwgbm8gZG91YnQsIGJlIG9mIGdyZWF0IGFzc2lzdGFuY2UgdG8gdGhlbSBpbiBzaG93aW5nIApleGFjdGx5IHdoYXQgYXJlIHRoZSBjYXBhYmlsaXRpZXMgb2YgdGhlaXIgY2hpbGQsIGFuZCBpbiB3aGF0IGRpcmVjdGlvbnMgaGUgbW9zdCAKbmVlZHMgZGV2ZWxvcG1lbnQ7IGJ1dCBpZiB0aGV5IGhhdmUgbm90IHlldCB0aGF0IGFkdmFudGFnZSwgdGhlcmUgbmVlZCBub3QgCnRoZXJlZm9yZSBiZSB0aGUgc2xpZ2h0ZXN0IGRvdWJ0IG9yIHF1ZXN0aW9uIGFib3V0IHRoZSByZXN1bHQsIGZvciB0aGF0IG11c3QgCndpdGggbWF0aGVtYXRpY2FsIGNlcnRhaW50eSBmb2xsb3cgc3VzdGFpbmVkIGVmZm9ydCwgd2hldGhlciB0aGUgcHJvY2VzcyBvZiBpdHMgCndvcmtpbmcgYmUgdmlzaWJsZSB0byB0aGVtIG9yIG5vdC4gCgoKMTM3OS7CoMKgwqDCoApXaXRoIHdoYXRldmVyIGNhcmUgdGhlIHBhcmVudHMgbWF5IHN1cnJvdW5kIHRoZSBjaGlsZCwgaXQgY2Fubm90IGJ1dCBiZSAKKGlmIGhlIGxpdmVzIGluIHRoZSB3b3JsZCBhdCBhbGwpIHRoYXQgaGUgd2lsbCBzb21lIGRheSBlbmNvdW50ZXIgaW5mbHVlbmNlcyAKd2hpY2ggd2lsbCBzdGltdWxhdGUgdGhlIGdlcm1zIG9mIGV2aWwgaW4gaGlzIGNvbXBvc2l0aW9uLiBCdXQgaXQgbWFrZXMgYWxsIHRoZSAKZGlmZmVyZW5jZSBpbiB0aGUgd29ybGQgd2hpY2ggZ2VybXMgYXJlIHN0aW11bGF0ZWQgZmlyc3QuIFVzdWFsbHkgdGhlIApldmlsIGlzIHRob3JvdWdobHkgYXdha2VuZWQgaW50byBhY3Rpdml0eSBiZWZvcmUgdGhlIGVnbyBoYXMgYW55IGhvbGQgdXBvbiB0aGUgCnZlaGljbGVzLCBhbmQgc28gd2hlbiBoZSBkb2VzIGdyYXNwIHRoZW0gaGUgZmluZHMgdGhhdCBoZSBoYXMgdG8gY29tYmF0IGEgc3Ryb25nIApwcmVkaXNwb3NpdGlvbiB0byB2YXJpb3VzIGV2aWxzLiBXaGVuIHRoZSBnZXJtcyBvZiBnb29kIGFyZSB0YXJkaWx5IGFyb3VzZWQgdGhleSAKaGF2ZSB0byBzdHJ1Z2dsZSB0byBhc3NlcnQgdGhlbXNlbHZlcyBhZ2FpbnN0IGEgc2V0IG9mIGluaGFybW9uaW91cyB0aG91Z2h0LXdhdmUgCndoaWNoIGFyZSBhbHJlYWR5IGZpcm1seSBlc3RhYmxpc2hlZDsgYW5kIG9mdGVuIHRoZXkgZG8gbm90IHN1Y2NlZWQuIElmLCAKaG93ZXZlciwgYnkgZXhjZWVkaW5nIGNhcmUgYmVmb3JlIGJpcnRoIGFuZCBmb3Igc2V2ZXJhbCB5ZWFycyBhZnRlciBpdCB0aGUgCnBhcmVudHMgYXJlIGZvcnR1bmF0ZSBlbm91Z2ggdG8gYmUgYWJsZSB0byBleGNpdGUgb25seSB0aGUgZ29vZCB1bmR1bGF0aW9ucywgYXMgCnRoZSBlZ28gZ2FpbnMgY29udHJvbCBoZSBmaW5kcyBpdCBuYXR1cmFsbHkgZWFzeSB0byBleHByZXNzIGhpbXNlbGYgYWxvbmcgdGhvc2UgCmxpbmVzLCBhbmQgYSBkZWNpZGVkIGhhYml0IGlzIHNldCB1cCBpbiB0aGF0IGRpcmVjdGlvbi4gVGhlbiB3aGVuIHRoZSBldmlsIApleGNpdGF0aW9uIGNvbWVzLCBhcyBjb21lIGl0IHN1cmVseSB3aWxsIHNvbWUgdGltZSBvciBvdGhlciwgaXQgZmluZHMgYSBzdHJvbmcgCm1vbWVudHVtIGluIHRoZSBkaXJlY3Rpb24gb2YgZ29vZCwgd2hpY2ggaXQgc3RyaXZlcyBpbiB2YWluIHRvIG92ZXJjb21lLiAKCgoxMzgwLsKgwqDCoMKgClRoZSBjb21tYW5kIG9mIHRoZSBlZ28gb3ZlciB0aGlzIGxvd2VyIHZlaGljbGVzIGlzIG9mdGVuIGJ1dCBzbWFsbCwgCnVubGVzcyBoZSBpcyB1bnVzdWFsbHkgYWR2YW5jZWQ7IGJ1dCBoaXMgd2lsbCBpcyBhbHdheXMgZm9yIGdvb2QsIGJlY2F1c2UgaGlzIApkZXNpcmUgaW4gY29ubmVjdGlvbiB3aXRoIHRoZXNlIHZlaGljbGVzIGlzIHRvIGV2b2x2ZSBoaW1zZWxmIGJ5IHRoZWlyIG1lYW5zLCAKYW5kIHN1Y2ggcG93ZXIgYXMgaGUgaXMgYWJsZSB0byB0aHJvdyBpbnRvIHRoZSBiYWxhbmNlIGlzIHRoZXJlZm9yZSBhbHdheXMgb24gCnRoZSByaWdodCBzaWRlLiBCdXQgd2l0aCBoaXMgYXQgcHJlc2VudCBzb21ld2hhdCB1bmNlcnRhaW4gZ3Jhc3AgdXBvbiBoaXMgYXN0cmFsIAphbmQgbWVudGFsIGJvZGllcywgaGUgaXMgZnJlcXVlbnRseSB1bmFibGUgdG8gb3ZlcmNvbWUgYSBzdHJvbmcgdGVuZGVuY3kgaW4gdGhlIApkaXJlY3Rpb24gb2YgZXZpbCB3aGVuIHRoYXQgaGFzIGJlZW4gYWxyZWFkeSBlc3RhYmxpc2hlZC4gSWYsIGhvd2V2ZXIsIGhlIGZpbmRzIAp0aGUgc3Ryb25nIHRlbmRlbmN5IHNldCB1cCBpbiB0aGUgb3Bwb3NpdGUgZGlyZWN0aW9uLCBoZSBpcyBlbmFibGUgdGhlcmVieSB0byAKZ2V0IGhvbGQgb2YgaGlzIHZlaGljbGVzIG1vcmUgZWZmZWN0dWFsbHk7IGFuZCBhZnRlciBoZSBoYXMgZG9uZSB0aGF0LCB0aGUgZXZpbCAKc3VnZ2VzdGlvbiB3aGljaCBjb21lcyBsYXRlciBjYW4gb25seSB3aXRoIGRpZmZpY3VsdHkgc3VjY2VlZCBpbiBvYnRhaW5pbmcgYW4gCmVudHJhbmNlLiBJbiB0aGUgb25lIGNhc2UgdGhlcmUgaXMgaW4gdGhlIHBlcnNvbmFsaXR5IGEgdGFzdGUgZm9yIGV2aWwsIGEgCnJlYWRpbmVzcyB0byByZWNlaXZlIGl0IGFuZCBpbmR1bGdlIGluIGl0OyBpbiB0aGUgb3RoZXIgdGhlcmUgaXMgYSBzdHJvbmcgCm5hdHVyYWwgZGlzdGFzdGUgZm9yIGV2aWwgd2hpY2ggbWFrZXMgdGhlIHdvcmsgb2YgdGhlIGVnbyBtdWNoIGVhc2llci4gCgoKMTM4MS7CoMKgwqDCoApOb3Qgb25seSBzaG91bGQgYSBwYXJlbnQgd2F0Y2ggaGlzIHRob3VnaHRzLCBidXQgaGlzIG1vb2RzIGFsc28uIEEgY2hpbGQgCmlzIHF1aWNrIHRvIG5vdGljZSBhbmQgdG8gcmVzZW50IGluanVzdGljZTsgYW5kIGlmIGhlIGZpbmRzIGhpbXNlbGYgc2NvbGRlZCBhdCAKb25lIHRpbWUgZm9yIGFuIGFjdGlvbiB3aGljaCBvbiBhbm90aGVyIG9jY2FzaW9uIGNhdXNlZCBvbmx5IGFtdXNlbWVudCwgd2hhdCAKd29uZGVyIHRoYXQgaGlzIHNlbnNlIG9mIHRoZSBpbnZhcmlhYmlsaXR5IG9mIE5hdHVyZScgcyBsYXdzIGlzIG91dHJhZ2VkISBBZ2FpbiwgCndoZW4gdHJvdWJsZSBvciBzb3Jyb3cgY29tZXMgdXBvbiB0aGUgcGFyZW50LCBhcyBpbiB0aGlzIHdvcmxkIGl0IHNvbWV0aW1lcyAKbXVzdCwgaXQgaXMgc3VyZWx5IGhpcyBkdXR5IHRvIHRyeSwgYXMgZmFyIGFzIHBvc3NpYmxlLCB0byBwcmV2ZW50IGhpcyBsb2FkIG9mIApncmllZiBmcm9tIHdlaWdoaW5nIHVwb24gaGlzIGNoaWxkcmVuIGFzIHdlbGwgYXMgdXBvbiBoaW1zZWxmOyBhdCBsZWFzdCB3aGVuIGluIAp0aGVpciBwcmVzZW5jZSBoZSBzaG91bGQgbWFrZSBhIHNwZWNpYWwgZWZmb3J0IHRvIGJlIGNoZWVyZnVsIGFuZCByZXNpZ25lZCwgbGVzdCAKdGhlIGR1bGwsIGxlYWRlbiBodWUgb2YgZGVwcmVzc2lvbiBzaG91bGQgZXh0ZW5kIGl0c2VsZiBmcm9tIGhpcyBhc3RyYWwgYm9keSB0byAKdGhlaXJzLiAKCgoxMzgyLsKgwqDCoMKgCk1hbnkgYSB3ZWxsLW1lYW5pbmcgcGFyZW50IGhhcyBhbiBhbnhpb3VzIGFuZCBmdXNzeSBuYXR1cmUtLSBpcyBhbHdheXMgCmZpZGdldGluZyBhYm91dCB0cmlmbGVzLCBhbmQgd29ycnlpbmcgaGlzIGNoaWxkcmVuIGFuZCBoaW1zZWxmIGFib3V0IG1hdHRlcnMgCndoaWNoIGFyZSByZWFsbHkgcXVpdGUgdW5pbXBvcnRhbnQuIElmIGhlIGNvdWxkIGJ1dCBvYnNlcnZlIGNsYWlydm95YW50bHkgdGhlIAp1dHRlciB1bnJlc3QgYW5kIGRpc3F1aWV0IHdoaWNoIGhlIHRodXMgcHJvZHVjZXMgaW4gaGlzIG93biBoaWdoZXIgYm9kaWVzLCBhbmQgCmNvdWxkIGZ1cnRoZXIgc2VlIGhvdyB0aGVzZSBkaXN0dXJiZWQgd2F2ZXMgaW50cm9kdWNlIHF1aXRlIHVubmVjZXNzYXJ5IAphZ2l0YXRpb24gYW5kIGlycml0YXRpb24gaW50byB0aGUgc3VzY2VwdGlibGUgdmVoaWNsZXMgb2YgaGlzIGNoaWxkcmVuLCBoZSB3b3VsZCAKbm8gbG9uZ2VyIGJlIHN1cnByaXNlZCBhdCB0aGVpciBvY2Nhc2lvbmFsIG91dGJ1cnN0cyBvZiBwZXR1bGFuY2Ugb3IgbmVydm91cyAKZXhjaXRhYmlsaXR5LCBhbmQgd291bGQgcmVhbGlzZSB0aGF0IGluIHN1Y2ggYSBjYXNlIGhlIGlzIG9mdGVuIGZhciBtb3JlIHRvIApibGFtZSB0aGFuIHRoZXkuIFdoYXQgaGUgc2hvdWxkIGNvbnRlbXBsYXRlIGFuZCBzZXQgYmVmb3JlIGhpbSBhcyBoaXMgb2JqZWN0LCBpcyAKYSByZXN0ZnVsLCB1bnJ1ZmZsZWQgc3Bpcml0LS0gdGhlIHBlYWNlIHdoaWNoIHBhc3NldGggYWxsIHVuZGVyc3RhbmRpbmctLSB0aGUgCnBlcmZlY3QgY2FsbSB3aGljaCBjb21lcyBmcm9tIHRoZSBjb25maWRlbmNlIHRoYXQgYWxsIHdpbGwgYXQgbGFzdCBiZSB3ZWxsLiAKCgoxMzgzLsKgwqDCoMKgCkFib3ZlIGFsbCB0aGluZ3MgbXVzdCBoZSBzdHJpdmUgdG8gYmVjb21lIGFuIGVtYm9kaW1lbnQgb2YgdGhlIERpdmluZSAKTG92ZSwgc28gdGhhdCBoZSBtYXkgZnVsbHkgcmVhbGlzZSBpdCBpbiBoaXMgb3duIGxpZmUsIGluIG9yZGVyIHRoYXQgaGUgbWF5IApmbG9vZCB3aXRoIGl0IHRoZSBsaWZlIG9mIGhpcyBjaGlsZC4gVGhlIGJvZHkgbXVzdCBsaXZlIGluIGFuIGF0bW9zcGhlcmUgb2YgCmxvdmU7IGhlIG91Z2h0IG5ldmVyIHRvIG1lZXQgd2l0aCBhIGphcnJpbmcgdmlicmF0aW9uLCBuZXZlciBldmVuIHRvIGtub3cgaW4gaGlzIAp5b3VuZyBkYXlzIHRoYXQgdGhlcmUgaXMgYW55dGhpbmcgYnV0IGxvdmUgaW4gdGhpcyB3b3JsZC4gQW5kIHdoZW4gdGhlIHRpbWUgCmNvbWVzLCBhcyBjb21lIGl0IHVuaGFwcGlseSBtdXN0LCB3aGVuIGhlIGxlYXJucyB0aGF0IGluIHRoZSBvdXRzaWRlIHdvcmxkIGxvdmUgCmlzIG9mdGVuIHNhZGx5IGxhY2tpbmctLSBhbGwgdGhlIG1vcmUgbGV0IGhpbSBmZWVsIHRoYXQgaGlzIGhvbWUgd2lsbCBuZXZlciBmYWlsIApoaW0sIHRoYXQgdGhlcmUsIGF0IGxlYXN0LCBoZSBtYXkgYWx3YXlzIGNvdW50IHVwb24gdGhlIHV0dGVybW9zdCBsb3ZlLCB0aGUgCmZ1bGxlc3QgY29tcHJlaGVuc2lvbi4gCgoKMTM4NC7CoMKgwqDCoApJdCBpcyBvYnZpb3VzIHRoYXQgdGhlIHRyYWluaW5nIG9mIHRoZSBwYXJlbnRzJyBjaGFyYWN0ZXIgd2hpY2ggaXMgCm5lY2Vzc2l0YXRlZCBieSB0aGVzZSBjb25zaWRlcmF0aW9ucyBpcyBpbiBldmVyeSByZXNwZWN0IGEgc3BsZW5kaWQgb25lLCBhbmQgCnRoYXQgaW4gdGh1cyBoZWxwaW5nIG9uIHRoZSBldm9sdXRpb24gb2YgdGhlaXIgY2hpbGRyZW4gdGhleSBhbHNvIGJlbmVmaXQgCnRoZW1zZWx2ZXMgdG8gYW4gZXh0ZW50IHdoaWNoIGlzIGFic29sdXRlbHkgaW5jYWxjdWxhYmxlLCBmb3IgdGhlIHRob3VnaHRzIHdoaWNoIAphdCBmaXJzdCBoYXZlIGJlZW4gc3VtbW9uZWQgYnkgY29uc2Npb3VzIGVmZm9ydCBmb3IgdGhlIHNha2Ugb2YgdGhlIGNoaWxkIHdpbGwgCnNvb24gYmVjb21lIG5hdHVyYWwgYW5kIGhhYml0dWFsLCBhbmQgd2lsbCwgaW4gdGltZSwgZm9ybSB0aGUgYmFja2dyb3VuZCBvZiB0aGUgCnBhcmVudHMnIGVudGlyZSBsaWZlLiAKCgoxMzg1LsKgwqDCoMKgCkl0IG11c3Qgbm90IGJlIHN1cHBvc2VkIHRoYXQgdGhlc2UgcHJlY2F1dGlvbnMgbWF5IGJlIHJlbGF4ZWQgYXMgdGhlIApjaGlsZCBncm93cyBvbGRlciwgZm9yIHRob3VnaCB0aGlzIGV4dHJhb3JkaW5hcnkgc2Vuc2l0aXZlbmVzcyB0byB0aGUgaW5mbHVlbmNlIApvZiBoaXMgc3Vycm91bmRpbmdzIGNvbW1lbmNlcyBhcyBzb29uIGFzIHRoZSBlZ28gZGVzY2VuZHMgdXBvbiB0aGUgZW1icnlvLCBsb25nIApiZWZvcmUgYmlydGggdGFrZXMgcGxhY2UsIGl0IGNvbnRpbnVlcywgaW4gbW9zdCBjYXNlcywgdXAgdG8gYWJvdXQgdGhlIHBlcmlvZCBvZiAKbWF0dXJpdHkuIElmIHN1Y2ggaW5mbHVlbmNlcyBhcyBhcmUgYWJvdmUgc3VnZ2VzdGVkIGhhdmUgYmVlbiBicm91Z2h0IHRvIGJlYXIgCnVwb24gaGltIGR1cmluZyBpbmZhbmN5IGFuZCBjaGlsZGhvb2QsIHRoZSBib2R5IG9mIHR3ZWx2ZSBvciBmb3VydGVlbiB3aWxsIGJlIApmYXIgYmV0dGVyIGVxdWlwcGVkIGZvciB0aGUgZWZmb3J0cyB3aGljaCBsaWUgYmVmb3JlIGhpbSB0aGFuIGhpcyBsZXNzIGZvcnR1bmF0ZSAKY29tcGFuaW9ucywgd2l0aCB3aG9tIG5vIHNwZWNpYWwgdHJvdWJsZSBoYXMgYmVlbiB0YWtlbi4gQnV0IGhlIGlzIHN0aWxsIGZhciAKbW9yZSBpbXByZXNzaW9uYWJsZSB0aGFuIGFuIGFkdWx0OyBoZSBzdGlsbCBuZWVkcyB0byBiZSBzdXJyb3VuZGVkIGJ5IHRoZSBzYW1lIApib3VuZGxlc3Mgc2VhIG9mIG5ldmVyLWZhaWxpbmcgbG92ZTsgdGhlIHNhbWUgc3Ryb25nIGhlbHAgYW5kIGd1aWRhbmNlIHVwb24gdGhlIAptZW50YWwgbGV2ZWwgbXVzdCBzdGlsbCBiZSBjb250aW51ZWQsIGluIG9yZGVyIHRoYXQgdGhlIGdvb2QgaGFiaXRzIGJvdGggb2YgCnRob3VnaHQgYW5kIG9mIGFjdGlvbiBtYXkgbm90IHlpZWxkIGJlZm9yZSB0aGUgbmV3ZXIgdGVtcHRhdGlvbnMgd2hpY2ggYXJlIApsaWtlbHkgdG8gYXNzYWlsIGhpbS4gCgoKMTM4Ni7CoMKgwqDCoApBbHRob3VnaCBpbiBoaXMgZWFybGllciB5ZWFycyBpdCB3YXMgbmF0dXJhbGx5IGNoaWVmbHkgdG8gaGlzIHBhcmVudHMgCnRoYXQgaGUgaGFkIHRvIGxvb2sgZm9yIHN1Y2ggYXNzaXN0YW5jZSwgYWxsIHRoYXQgaGFzIGJlZW4gc2FpZCBvZiB0aGVpciBkdXRpZXMgCmFwcGxpZXMgZXF1YWxseSB0byBhbnlvbmUgd2hvIGNvbWVzIGludG8gY29udGFjdCB3aXRoIGNoaWxkcmVuIGluIGFueSBjYXBhY2l0eSwgCmFuZCBtb3N0IGVzcGVjaWFsbHkgdG8gdGhvc2Ugd2hvIHVuZGVydGFrZSB0aGUgdHJlbWVuZG91cyByZXNwb25zaWJpbGl0aWVzIG9mIAp0aGUgdGVhY2hlci4gVGhpcyBpbmZsdWVuY2Ugb2YgYSBtYXN0ZXIgZm9yIGdvb2Qgb3IgZm9yIGV2aWwgb3ZlciBoaXMgcHVwaWxzIGlzIApvbmUgdGhhdCBjYW5ub3QgcmVhZGlseSBiZSBtZWFzdXJlZCwgYW5kIChleGFjdGx5IGFzIGJlZm9yZSkgaXQgZGVwZW5kcyBub3Qgb25seSAKdXBvbiB3aGF0IGhlIHNheXMgb3Igd2hhdCBoZSBkb2VzLCBidXQgZXZlbiBtb3JlIHVwb24gd2hhdCBoZSB0aGlua3MuIE1hbnkgYSAKbWFzdGVyIHJlcGVhdGVkbHkgcmVwcm92ZXMgaW4gaGlzIGJveXMgdGhlIGV4aGliaXRpb24gb2YgdGVuZGVuY2llcyBmb3IgdGhlIApjcmVhdGlvbiBvZiB3aGljaCBoZSBpcyBoaW1zZWxmIGRpcmVjdGx5IHJlc3BvbnNpYmxlOyBpZiBoaXMgdGhvdWdodCBpcyBzZWxmaXNoIApvciBpbXB1cmUsIHRoZW4gaGUgd2lsbCBmaW5kIHNlbGZpc2huZXNzIGFuZCBpbXB1cml0eSByZWZsZWN0ZWQgYWxsIGFyb3VuZCBoaW0sIApub3IgZG9lcyB0aGUgZXZpbCBjYXVzZWQgYnkgc3VjaCBhIHRob3VnaHQgZW5kIHdpdGggdGhvc2Ugd2hvbSBpdCBpbW1lZGlhdGVseSAKYWZmZWN0cy4gCgoKMTM4Ny7CoMKgwqDCoApUaGUgeW91bmcgbWluZHMgdXBvbiB3aGljaCBpdCBpcyByZWZsZWN0ZWQgdGFrZSBpdCB1cCBhbmQgbWFnbmlmeSBhbmQgCnN0cmVuZ3RoZW4gaXQsIGFuZCB0aHVzIGl0IHJlYWN0cyB1cG9uIG90aGVycyBpbiB0dXJuIGFuZCBiZWNvbWVzIGFuIHVuaG9seSAKdHJhZGl0aW9uIGhhbmRlZCBkb3duIGZyb20gb25lIGdlbmVyYXRpb24gb2YgYm95cyB0byBhbm90aGVyLCBhbmQgc28gc3RhbXBzIGl0cyAKcGVjdWxpYXIgY2hhcmFjdGVyIHVwb24gYSBwYXJ0aWN1bGFyIHNjaG9vbCBvciBhIHBhcnRpY3VsYXIgY2xhc3MuIEhhcHBpbHksIGEgCmdvb2QgdHJhZGl0aW9uIG1heSBiZSBzZXQgdXAgYWxtb3N0IGFzIGVhc2lseSBhcyBhIGJhZCBvbmUtLSBub3QgcXVpdGUgYXMgCmVhc2lseSwgYmVjYXVzZSB0aGVyZSBhcmUgYWx3YXlzIHVuZGVzaXJhYmxlIGV4dGVybmFsIGluZmx1ZW5jZXMgdG8gYmUgdGFrZW4gCmludG8gYWNjb3VudDsgYnV0IHN0aWxsIGEgdGVhY2hlciB3aG8gcmVhbGlzZXMgaGlzIHJlc3BvbnNpYmlsaXRpZXMgYW5kIG1hbmFnZXMgCmhpcyBzY2hvb2wgdXBvbiB0aGUgcHJpbmNpcGxlcyB0aGF0IGhhdmUgYmVlbiBzdWdnZXN0ZWQgd2lsbCBzb29uIGZpbmQgdGhhdCBoaXMgCnNlbGYtY29udHJvbCBhbmQgc2VsZi1kZXZvdGlvbiBoYXZlIG5vdCBiZWVuIGZydWl0bGVzcy4gCgoKMTM4OC7CoMKgwqDCoApUSEUgTkVDRVNTSVRZIEZPUiBMT1ZFIAoKCjEzODkuwqDCoMKgwqAKVGhlcmUgaXMgb25seSBvbmUgd2F5IGluIHdoaWNoIGVpdGhlciBwYXJlbnQgb3IgdGVhY2hlciBjYW4gcmVhbGx5IG9idGFpbiAKZWZmZWN0aXZlIGluZmx1ZW5jZSBvdmVyIGEgY2hpbGQgYW5kIGRyYXcgb3V0IGFsbCB0aGUgYmVzdCB0aGF0IGlzIGluIGhpbS0tIGFuZCAKdGhhdCBpcyBieSBlbmZvbGRpbmcgaGltIGluIHRoZSBwdXJlIGZpcmUgb2YgYSB3YXJtLCBjb25zdGFudCwgcGVyc29uYWwgbG92ZSwgCmFuZCB0aGVyZWJ5IHdpbm5pbmcgaGlzIGxvdmUgYW5kIGNvbmZpZGVuY2UgaW4gcmV0dXJuLiBNb3JlIHRoYW4gYW55IG90aGVyIApxdWFsaWZpY2F0aW9uIGlzIHRoaXMgaW5zaXN0ZWQgdXBvbiBpbiBBbGN5b25lJyBzIHdvbmRlcmZ1bCBib29rIEVkdWNhdGlvbiAKYXMgU2VydmljZSAtLSBhIGJvb2sgd2hpY2ggZXZlcnkgcGFyZW50IGFuZCB0ZWFjaGVyIHNob3VsZCByZWFkLCBmb3IgdGhlIApzYWtlIG9mIHRoZSBzd2VldCBzcGlyaXQgd2hpY2ggaXQgYnJlYXRoZXMsIGFuZCB0aGUgdmFsdWFibGUgaGludHMgd2hpY2ggaXQgCmNvbnRhaW5zLiAKCgoxMzkwLsKgwqDCoMKgCkl0IGlzIHRydWUgdGhhdCBvYmVkaWVuY2UgbWF5IGJlIGV4dG9ydGVkIGFuZCBkaXNjaXBsaW5lIHByZXNlcnZlZCBieSAKaW5zcGlyaW5nIGZlYXIsIGJ1dCBydWxlcyBlbmZvcmNlZCBieSBzdWNoIGEgbWV0aG9kIGFyZSBrZXB0IG9ubHkgc28gbG9uZyBhcyBoZSAKd2hvIGltcG9zZXMgdGhlbSAob3Igc29tZSBvbmUgcmVwcmVzZW50aW5nIGhpbSkgaXMgcHJlc2VudCwgYW5kIGFyZSBpbnZhcmlhYmx5IApicm9rZW4gd2hlbiB0aGVyZSBpcyBubyBmZWFyIG9mIGRldGVjdGlvbjsgdGhlIGNoaWxkIGtlZXBzIHRoZW0gYmVjYXVzZSBoZSBtdXN0LCAKYW5kIG5vdCBiZWNhdXNlIGhlIHdpc2hlcyB0byBkbyBzbzsgYW5kIG1lYW50aW1lIHRoZSBlZmZlY3QgdXBvbiBoaXMgY2hhcmFjdGVyIAppcyBvZiB0aGUgbW9zdCBkaXNhc3Ryb3VzIGRlc2NyaXB0aW9uLiAKCgoxMzkxLsKgwqDCoMKgCklmLCBvbiB0aGUgb3RoZXIgaGFuZCwgaGlzIGFmZmVjdGlvbiBoYXMgYmVlbiBpbnZva2VkLCBoaXMgd2lsbCBhdCBvbmNlIApyYW5nZXMgaXRzZWxmIG9uIHRoZSBzaWRlIG9mIHRoZSBydWxlOyBoZSB3aXNoZXMgdG8ga2VlcCBpdCwgYmVjYXVzZSBoZSBrbm93cyAKdGhhdCBpbiBicmVha2luZyBpdCBoZSB3b3VsZCBjYXVzZSBzb3Jyb3cgdG8gb25lIHdob20gaGUgbG92ZXM7IGFuZCBpZiBvbmx5IHRoaXMgCmZlZWxpbmcgYmUgc3Ryb25nIGVub3VnaCwgaXQgd2lsbCBlbmFibGUgaGltIHRvIHJpc2Ugc3VwZXJpb3IgdG8gYWxsIHRlbXB0YXRpb24sIAphbmQgdGhlIHJ1bGUgd2lsbCBiZSBiaW5kaW5nLCBubyBtYXR0ZXIgd2hvIG1heSBiZSBwcmVzZW50IG9yIGFic2VudC4gVGh1cyB0aGUgCm9iamVjdCBpcyBhdHRhaW5lZCBub3Qgb25seSBtdWNoIG1vcmUgdGhvcm91Z2hseSwgYnV0IGFsc28gbXVjaCBtb3JlIGVhc2lseSBhbmQgCnBsZWFzYW50bHkgYm90aCBmb3IgdGVhY2hlciBhbmQgcHVwaWwsIGFuZCBhbGwgdGhlIGJlc3Qgc2lkZSBvZiB0aGUgY2hpbGQnIHMgCm5hdHVyZSBpcyBjYWxsZWQgaW50byBhY3Rpdml0eSwgaW5zdGVhZCBvZiBhbGwgdGhlIHdvcnN0LiBJbnN0ZWFkIG9mIHJvdXNpbmcgdGhlIApjaGlsZCcgcyB3aWxsIGludG8gc3VsbGVuIGFuZCBwZXJzaXN0ZW50IG9wcG9zaXRpb24sIHRoZSB0ZWFjaGVyIGFycmF5cyBpdCBvbiAKaGlzIG93biBzaWRlIGluIHRoZSBjb250ZXN0IGFnYWluc3QgZGlzdHJhY3Rpb25zIG9yIHRlbXB0YXRpb25zOyB0aGUgZGFuZ2VyIG9mIApkZWNlaXQgYW5kIHNlY3JldGl2ZW5lc3MgaXMgYXZvaWRlZCwgYW5kIHRodXMgcmVzdWx0cyBhcmUgYWNoaWV2ZWQgd2hpY2ggY291bGQgCm5ldmVyIGJlIGFwcHJvYWNoZWQgb24gdGhlIG90aGVyIHN5c3RlbS4gCgoKMTM5Mi7CoMKgwqDCoApJdCBpcyBvZiB0aGUgdXRtb3N0IGltcG9ydGFuY2UgYWx3YXlzIHRvIHRyeSB0byB1bmRlcnN0YW5kIHRoZSBjaGlsZCwgYW5kIAp0byBtYWtlIGhpbSBmZWVsIGNlcnRhaW4gdGhhdCBoZSBoYXMgb25lJyBzIGZyaWVuZGxpbmVzcyBhbmQgc3ltcGF0aHkuIEFsbCAKYXBwZWFyYW5jZSBvZiBoYXJzaG5lc3MgbXVzdCBiZSBjYXJlZnVsbHkgYXZvaWRlZCwgYW5kIHRoZSByZWFzb24gb2YgYWxsIAppbnN0cnVjdGlvbnMgZ2l2ZW4gdG8gaGltIHNob3VsZCBhbHdheXMgYmUgZnVsbHkgZXhwbGFpbmVkLiBJdCBtdXN0IGluZGVlZCBiZSAKbWFkZSBjbGVhciB0byBoaW0gdGhhdCBzb21ldGltZXMgc3VkZGVuIGVtZXJnZW5jaWVzIGFyaXNlIGluIHdoaWNoIHRoZSBvbGRlciAKcGVyc29uIGhhcyBubyB0aW1lIHRvIGV4cGxhaW4gaGlzIGluc3RydWN0aW9ucywgYW5kIGhlIHNob3VsZCB1bmRlcnN0YW5kIHRoYXQgaW4gCnN1Y2ggYSBjYXNlIGhlIHNob3VsZCBvYmV5LCBldmVuIHRob3VnaCBoZSBtYXkgbm90IGZ1bGx5IGNvbXByZWhlbmQ7IGJ1dCBldmVuIAp0aGVuIHRoZSBleHBsYW5hdGlvbiBzaG91bGQgYmUgYWx3YXlzIGdpdmVuIGFmdGVyd2FyZHMuIAoKCjEzOTMuwqDCoMKgwqAKVW53aXNlIHBhcmVudHMgb3IgdGVhY2hlcnMgb2Z0ZW4gbWFrZSB0aGUgbWlzdGFrZSBvZiBoYWJpdHVhbGx5IGV4YWN0aW5nIApvYmVkaWVuY2Ugd2l0aG91dCB1bmRlcnN0YW5kaW5nLS0gYSBtb3N0IHVucmVhc29uYWJsZSBkZW1hbmQ7IGluZGVlZCwgdGhleSAKZXhwZWN0IGZyb20gdGhlIGNoaWxkIGF0IGFsbCB0aW1lcyBhbmQgdW5kZXIgYWxsIGNvbmRpdGlvbnMgYW4gYW5nZWxpYyBwYXRpZW5jZSAKYW5kIHNhaW50bGluZXNzIHdoaWNoIHRoZXkgYXJlIGZhciBpbmRlZWQgZnJvbSBwb3NzZXNzaW5nIHRoZW1zZWx2ZXMuIFRoZXkgaGF2ZSAKbm90IHlldCByZWFsaXNlZCB0aGF0IGhhcnNobmVzcyB0b3dhcmRzIGEgY2hpbGQgaXMgYWx3YXlzIG5vdCBvbmx5IHdpY2tlZCwgYnV0IAphYnNvbHV0ZWx5IHVucmVhc29uYWJsZSBhbmQgZm9vbGlzaCBhcyB3ZWxsLCBzaW5jZSBpdCBjYW4gbmV2ZXIgYmUgdGhlIG1vc3QgCmVmZmVjdGl2ZSB3YXkgb2Ygb2J0YWluaW5nIGZyb20gaGltIHdoYXQgaXMgZGVzaXJlZC4gCgoKMTM5NC7CoMKgwqDCoApBIGNoaWxkJyBzIGZhdWx0cyBhcmUgb2Z0ZW4gdGhlIGRpcmVjdCByZXN1bHRzIG9mIHRoZSB1bm5hdHVyYWwgd2F5IGluIAp3aGljaCBoZSBpcyB0cmVhdGVkLiBTZW5zaXRpdmUgYW5kIG5lcnZvdXMgdG8gYSBkZWdyZWUsIGhlIGNvbnN0YW50bHkgZmluZHMgCmhpbXNlbGYgbWlzdW5kZXJzdG9vZCBhbmQgc2NvbGRlZCBvciBpbGwtdHJlYXRlZCBmb3Igb2ZmZW5jZXMgd2hvc2UgdHVycGl0dWRlIGhlIApkb2VzIG5vdCBpbiB0aGUgbGVhc3QgY29tcHJlaGVuZDsgaXMgaXQgd29uZGVyZnVsIHRoYXQsIHdoZW4gdGhlIHdob2xlIAphdG1vc3BoZXJlIGFib3V0IGhpbSByZWVrcyB3aXRoIHRoZSBkZWNlaXQgYW5kIGZhbHNlaG9vZCBvZiBoaXMgZWxkZXJzLCBoaXMgCmZlYXJzIHNob3VsZCBzb21ldGltZXMgZHJpdmUgaGltIGludG8gdW50cnV0aGZ1bG5lc3MgYWxzbz8gSW4gc3VjaCBhIGNhc2UgdGhlIAprYXJtYSBvZiB0aGUgc2luIHdpbGwgZmFsbCBtb3N0IGhlYXZpbHkgdXBvbiB0aG9zZSB3aG8gYnkgdGhlaXIgY3JpbWluYWwgCmhhcnNobmVzcyBoYXZlIHBsYWNlZCBhIHdlYWsgYW5kIHVuZGV2ZWxvcGVkIGJlaW5nIGluIGEgcG9zaXRpb24gd2hlcmUgaXQgd2FzIAphbG1vc3QgaW1wb3NzaWJsZSBmb3IgaGltIHRvIGF2b2lkIGl0LiAKCgoxMzk1LsKgwqDCoMKgCklmIHdlIGV4cGVjdCB0cnV0aCBmcm9tIG91ciBjaGlsZHJlbiwgd2UgbXVzdCBmaXJzdCBvZiBhbGwgcHJhY3Rpc2UgaXQgCm91cnNlbHZlczsgd2UgbXVzdCB0aGluayB0cnV0aCBhcyB3ZWxsIGFzIHNwZWFrIHRydXRoIGFuZCBhY3QgdHJ1dGgsIGJlZm9yZSB3ZSAKY2FuIGhvcGUgdG8gYmUgc3Ryb25nIGVub3VnaCB0byBzYXZlIHRoZW0gZnJvbSB0aGUgc2VhIG9mIGZhbHNlaG9vZCBhbmQgZGVjZWl0IAp3aGljaCBzdXJyb3VuZHMgdXMgb24gZXZlcnkgc2lkZS4gQnV0IGlmIHdlIHRyZWF0IHRoZW0gYXMgcmVhc29uYWJsZSBiZWluZ3MtLSBpZiAKd2UgZXhwbGFpbiBmdWxseSBhbmQgcGF0aWVudGx5IHdoYXQgd2Ugd2FudCBmcm9tIHRoZW0sIGFuZCBzaG93IHRoZW0gdGhhdCB0aGV5IApoYXZlIG5vdGhpbmcgdG8gZmVhciBmcm9tIHVzLCBiZWNhdXNlIO+/vXBlcmZlY3QgbG92ZSBjYXN0ZXRoIG91dCBmZWFy77+9LS0gdGhlbiB3ZSAKc2hhbGwgZmluZCBubyBkaWZmaWN1bHR5IGFib3V0IHRydXRoZnVsbmVzcy4gCgoKMTM5Ni7CoMKgwqDCoApBIGN1cmlvdXMgYnV0IG5vdCB1bmNvbW1vbiBkZWx1c2lvbi0tIGEgcmVsaWMsIHBlcmhhcHMsIG9mIHRoZSB0ZXJyaWJsZSAKZGF5cyB3aGVuLCBmb3IgaXRzIHNpbnMsIHRoaXMgdW5oYXBweSBjb3VudHJ5IG9mIEVuZ2xhbmQgZ3JvYW5lZCB1bmRlciB0aGUgCmdoYXN0bHkgdHlyYW5ueSBvZiBwdXJpdGFuaXNtLS0gaXMsIHRoYXQgY2hpbGRyZW4gY2FuIG5ldmVyIGJlIGdvb2QgdW5sZXNzIHRoZXkgCmFyZSB1bmhhcHB5LCB0aGF0IHRoZXkgbXVzdCBiZSB0aHdhcnRlZCBhdCBldmVyeSB0dXJuLCBhbmQgbmV2ZXIgYnkgYW55IGNoYW5jZSAKYWxsb3dlZCB0byBoYXZlIHRoZWlyIG93biB3YXkgaW4gYW55dGhpbmcsIGJlY2F1c2Ugd2hlbiB0aGV5IGFyZSBlbmpveWluZyAKdGhlbXNlbHZlcyB0aGV5IG11c3QgbmVjZXNzYXJpbHkgYmUgaW4gYSBjb25kaXRpb24gb2YgZGVzcGVyYXRlIHdpY2tlZG5lc3MhIApBYnN1cmQgYW5kIGF0cm9jaW91cyBhcyB0aGlzIGRvY3RyaW5lIGlzLCB2YXJpb3VzIG1vZGlmaWNhdGlvbnMgb2YgaXQgYXJlIHN0aWxsIAp3aWRlbHkgcHJldmFsZW50LCBhbmQgaXQgaXMgcmVzcG9uc2libGUgZm9yIGEgdmFzdCBhbW91bnQgb2YgY3J1ZWx0eSBhbmQgCnVubmVjZXNzYXJ5IG1pc2VyeSwgd2FudG9ubHkgaW5mbGljdGVkIHVwb24gbGl0dGxlIGNyZWF0dXJlcyB3aG9zZSBvbmx5IGNyaW1lIGlzIAp0aGF0IHRoZXkgYXJlIG5hdHVyYWwgYW5kIGhhcHB5LiBVbmRvdWJ0ZWRseSBOYXR1cmUgaW50ZW5kcyB0aGF0IGNoaWxkaG9vZCBzaGFsbCAKYmUgYSBoYXBweSB0aW1lLCBhbmQgd2Ugb3VnaHQgdG8gc3BhcmUgbm8gZWZmb3J0cyB0byBtYWtlIGl0IHNvLCBmb3IgaW4gdGhhdCAKcmVzcGVjdCwgYXMgaW4gYWxsIG90aGVycywgaWYgd2UgdGh3YXJ0IE5hdHVyZSB3ZSBkbyBzbyBhdCBvdXIgcGVyaWwuIEEgaHltbiAKdGVsbHMgdXM6IAoKCjEzOTcuwqDCoMKgwqAKR29kIHdvdWxkIGhhdmUgdXMgaGFwcHksIGhhcHB5IGFsbCB0aGUgZGF5LCAKCgoxMzk4LsKgwqDCoMKgCmFuZCBpbiB0aGlzIGNhc2UgYXMgaW4gYWxsIG90aGVycyBpdCBpcyBvdXIgZHV0eSBhbmQgb3VyIHByaXZpbGVnZSB0byBiZSAKZmVsbG93LXdvcmtlcnMgdG9nZXRoZXIgd2l0aCBIaW0uIAoKCjEzOTkuwqDCoMKgwqAKSXQgd2lsbCBoZWxwIHVzIG11Y2ggaW4gb3VyIGRlYWxpbmdzIHdpdGggY2hpbGRyZW4gaWYgd2UgcmVtZW1iZXIgdGhhdCAKdGhleSBhbHNvIGFyZSBlZ29zLCB0aGF0IHRoZWlyIHNtYWxsIGFuZCBmZWVibGUgcGh5c2ljYWwgYm9kaWVzIGFyZSBidXQgdGhlIAphY2NpZGVudCBvZiB0aGUgbW9tZW50LCBhbmQgdGhhdCBpbiByZWFsaXR5IHdlIGFyZSBhbGwgYWJvdXQgdGhlIHNhbWUgYWdlOyBzbyAKdGhhdCB3ZSBvd2UgdGhlbSByZXNwZWN0IGFzIHdlbGwgYXMgYWZmZWN0aW9uLCBhbmQgd2UgbXVzdCBub3QgZXhwZWN0IHRvIGltcG9zZSAKb3VyIHdpbGwgb3IgaW5kaXZpZHVhbGl0eSB1cG9uIHRoZWlycy4gT3VyIGJ1c2luZXNzIGluIHRyYWluaW5nIHRoZW0gaXMgdG8gCmRldmVsb3Agb25seSB0aGF0IGluIHRoZWlyIGxvd2VyIHZlaGljbGVzIHdoaWNoIHdpbGwgY28tb3BlcmF0ZSB3aXRoIHRoZSBlZ28tLSAKd2hpY2ggd2lsbCBtYWtlIHRoZW0gYmV0dGVyIGNoYW5uZWxzIGZvciB0aGUgZWdvIHRvIHdvcmsgdGhyb3VnaC4gTG9uZyBhZ28sIGluIAp0aGUgZ29sZGVuIGFnZSBvZiB0aGUgb2xkIEF0bGFudGVhbiBjaXZpbGlzYXRpb24sIHRoZSBpbXBvcnRhbmNlIG9mIHRoZSBvZmZpY2UgCm9mIHRoZSB0ZWFjaGVyIG9mIHRoZSBjaGlsZHJlbiB3YXMgc28gZnVsbHkgcmVjb2duaXNlZCB0aGF0IG5vbmUgd2FzIHBlcm1pdHRlZCAKdG8gaG9sZCBpdCBleGNlcHQgYSB0cmFpbmVkIGNsYWlydm95YW50LCB3aG8gY291bGQgc2VlIGFsbCB0aGUgbGF0ZW50IHF1YWxpdGllcyAKYW5kIGNhcGFiaWxpdGllcyBvZiBoaXMgY2hhcmdlcywgYW5kIGNvdWxkLCB0aGVyZWZvcmUsIHdvcmsgaW50ZWxsaWdlbnRseSB3aXRoIAplYWNoLCBzbyBhcyB0byBkZXZlbG9wIHdoYXQgd2FzIGdvb2QgaW4gaGltIGFuZCB0byBhbWVuZCB3aGF0IHdhcyBldmlsLiAKCgoxNDAwLsKgwqDCoMKgCkluIHRoZSBkaXN0YW50IGZ1dHVyZSBvZiB0aGUgc2l4dGggcm9vdC1yYWNlIHRoYXQgd2lsbCBiZSBzbyBvbmNlIG1vcmU7IApidXQgdGhhdCB0aW1lIGlzLCBhcyB5ZXQsIGZhciBhd2F5LCBhbmQgd2UgaGF2ZSB0byBkbyBvdXIgYmVzdCB1bmRlciBsZXNzIApmYXZvdXJhYmxlIGNvbmRpdGlvbnMuIFlldCB1bnNlbGZpc2ggYWZmZWN0aW9uIGlzIGEgd29uZGVyZnVsIHF1aWNrZW5lciBvZiB0aGUgCmludHVpdGlvbiwgYW5kIHRob3NlIHdobyByZWFsbHkgbG92ZSB0aGVpciBjaGlsZHJlbiB3aWxsIHJhcmVseSBiZSBhdCBhIGxvc3MgdG8gCmNvbXByZWhlbmQgdGhlaXIgbmVlZHM7IGFuZCBrZWVuIGFuZCBwZXJzaXN0ZW50IG9ic2VydmF0aW9uIHdpbGwgZ2l2ZSB0aGVtLCAKdGhvdWdoIGF0IHRoZSBjb3N0IG9mIG11Y2ggbW9yZSB0cm91YmxlLCBzb21lIGFwcHJvYWNoIHRvIHRoZSBjbGVhcmVyIGluc2lnaHQgb2YgCnRoZWlyIEF0bGFudGVhbiBwcmVkZWNlc3NvcnMuIEF0IGFueSByYXRlLCBpdCBpcyB3ZWxsIHdvcnRoIHRoZSB0cnlpbmcsIGZvciB3aGVuIApvbmNlIHdlIHJlYWxpc2Ugb3VyIHRydWUgcmVzcG9uc2liaWxpdHkgaW4gcmVsYXRpb24gdG8gY2hpbGRyZW4gd2Ugc2hhbGwgCmFzc3VyZWRseSB0aGluayBubyBsYWJvdXIgdG9vIGdyZWF0IHdoaWNoIGVuYWJsZXMgdXMgdG8gZGlzY2hhcmdlIGl0IGJldHRlci4gCkxvdmUgaXMgbm90IGFsd2F5cyB3aXNlLCB3ZSBrbm93OyBidXQgYXQgbGVhc3QgaXQgaXMgd2lzZXIgdGhhbiBjYXJlbGVzc25lc3MsIAphbmQgcGFyZW50cyBhbmQgdGVhY2hlcnMgd2hvIHRydWx5IGxvdmUgd2lsbCBiZSB0aGVyZWJ5IHNwdXJyZWQgb24gdG8gZ2FpbiAKd2lzZG9tIGZvciB0aGUgc2FrZSBvZiB0aGUgY2hpbGRyZW4uIAoKCjE0MDEuwqDCoMKgwqAKUkVMSUdJT1VTIFRSQUlOSU5HIAoKCjE0MDIuwqDCoMKgwqAKTWFueSBtZW1iZXJzIG9mIG91ciBTb2NpZXR5LCB3aGlsZSBmZWVsaW5nIHRoYXQgdGhlaXIgY2hpbGRyZW4gbmVlZCAKc29tZXRoaW5nIHRvIHRha2UgdGhlIHBsYWNlIGZpbGxlZCBpbiBvcmRpbmFyeSBlZHVjYXRpb24gYnkgdGhlIHJlbGlnaW91cyAKdHJhaW5pbmcsIGhhdmUgeWV0IGZvdW5kIGl0IGFsbW9zdCBpbXBvc3NpYmxlIHNvIHRvIHB1dCBUaGVvc29waHkgYmVmb3JlIHRoZW0gYXMgCnRvIG1ha2UgaXQgaW4gYW55IHdheSBpbnRlbGxpZ2libGUgdG8gdGhlbS4gU29tZSBoYXZlIGV2ZW4gcGVybWl0dGVkIHRoZWlyIApjaGlsZHJlbiB0byBnbyB0aHJvdWdoIHRoZSBvcmRpbmFyeSByb3V0aW5lIG9mIGJpYmxlIGxlc3NvbnMsIHNheWluZyB0aGF0IHRoZXkgCmRpZCBub3Qga25vdyB3aGF0IGVsc2UgdG8gZG8sIGFuZCB0aGF0IHRob3VnaCBtdWNoIG9mIHRoZSB0ZWFjaGluZyB3YXMgb2J2aW91c2x5IAp1bnRydWUgaXQgY291bGQgYmUgY29ycmVjdGVkIGFmdGVyd2FyZHMuIFRoaXMgY291cnNlIGlzIGVudGlyZWx5IGluZGVmZW5zaWJsZTsgCm5vIGNoaWxkIHNob3VsZCBldmVyIHdhc3RlIGhpcyB0aW1lIGluIGxlYXJuaW5nIHdoYXQgaGUgd2lsbCBoYXZlIHRvIHVubGVhcm4gCmFmdGVyd2FyZHMuIElmIHRoZSB0cnVlIGlubmVyIG1lYW5pbmcgb2YgQ2hyaXN0aWFuaXR5IGNhbiBiZSB0YXVnaHQgdG8gb3VyIApjaGlsZHJlbiwgdGhhdCBpbmRlZWQgaXMgd2VsbCwgYmVjYXVzZSB0aGF0IGlzIHB1cmUgVGhlb3NvcGh5OyBidXQgdW5mb3J0dW5hdGVseSAKdGhhdCBpcyBub3QgdGhlIGZvcm0gd2hpY2ggcmVsaWdpb3VzIGluc3RydWN0aW9uIHRha2VzIGluIG9yZGluYXJ5IHNjaG9vbHMuIAoKCjE0MDMuwqDCoMKgwqAKVGhlcmUgaXMgbm8gcmVhbCBkaWZmaWN1bHR5IGluIHB1dHRpbmcgdGhlIGdyYW5kIHRydXRocyBvZiBUaGVvc29waHkgCmludGVsbGlnaWJseSBiZWZvcmUgdGhlIG1pbmRzIG9mIG91ciBjaGlsZHJlbi4gSXQgaXMgdXNlbGVzcyB0byB0cm91YmxlIHRoZW0gCndpdGggcm91bmRzIGFuZCByYWNlcywgd2l0aCBtdWxhcHJha3JpdGkgYW5kIHBsYW5ldGFyeSBjaGFpbnM7IGJ1dCB0aGVuLCBob3dldmVyIAppbnRlcmVzdGluZyBhbmQgdmFsdWFibGUgYWxsIHRoaXMgaW5mb3JtYXRpb24gbWF5IGJlLCBpdCBpcyBvZiBsaXR0bGUgaW1wb3J0YW5jZSAKaW4gdGhlIHByYWN0aWNhbCByZWd1bGF0aW9uIG9mIGNvbmR1Y3QsIHdoZXJlYXMgdGhlIGdyZWF0IGV0aGljYWwgdHJ1dGhzIHVwb24gCndoaWNoIHRoZSB3aG9sZSBzeXN0ZW0gcmVzdHMgY2FuLCBoYXBwaWx5LCBiZSBtYWRlIGNsZWFyIGV2ZW4gdG8gdGhlIGNoaWxkaXNoIAp1bmRlcnN0YW5kaW5nLiBXaGF0IGNvdWxkIGJlIHNpbXBsZXIgaW4gZXNzZW5jZSB0aGFuIHRoZSB0aHJlZSBncmVhdCB0cnV0aHMgCndoaWNoIGFyZSBnaXZlbiB0byBTZW5zYSBpbiBUaGUgSWR5bGwgb2YgdGhlIFdoaXRlIExvdHVzPyAKCgoxNDA0LsKgwqDCoMKgClRoZSBzb3VsIG9mIG1hbiBpcyBpbW1vcnRhbCwgYW5kIGl0cyBmdXR1cmUgaXMgdGhlIGZ1dHVyZSBvZiBhIHRoaW5nIAp3aG9zZSBncm93dGggYW5kIHNwbGVuZG91ciBoYXZlIG5vIGxpbWl0LiAKCgoxNDA1LsKgwqDCoMKgClRoZSBwcmluY2lwbGUgd2hpY2ggZ2l2ZXMgbGlmZSBkd2VsbHMgaW4gdXMgYW5kIHdpdGhvdXQgdXMsIGlzIHVuZHlpbmcgCmFuZCBldGVybmFsbHkgYmVuZWZpY2VudCwgaXMgbm90IGhlYXJkLCBub3Igc2Vlbiwgbm9yIHNtZWx0LCBidXQgaXMgcGVyY2VpdmVkIGJ5IAp0aGUgbWFuIHdobyBkZXNpcmVzIHBlcmNlcHRpb24uIAoKCjE0MDYuwqDCoMKgwqAKRWFjaCBtYW4gaXMgaGlzIG93biBhYnNvbHV0ZSBsYXdnaXZlciwgdGhlIGRpc3BlbnNlciBvZiBnbG9yeSBvciBnbG9vbSB0byAKaGltc2VsZi0tIHRoZSBkZWNyZWVyIG9mIGhpcyBsaWZlLCBoaXMgcmV3YXJkLCBoaXMgcHVuaXNobWVudC4gCgoKMTQwNy7CoMKgwqDCoApUaGVzZSB0cnV0aHMsIHdoaWNoIGFyZSBhcyBncmVhdCBhcyBpcyBsaWZlLCBpdHNlbGYsIGFyZSBhcyBzaW1wbGUgYXMgdGhlIApzaW1wbGVzdCBtaW5kIG9mIG1hbi4gRmVlZCB0aGUgaHVuZ3J5IHdpdGggdGhlbS4gCgoKMTQwOC7CoMKgwqDCoApXZSBtaWdodCBleHByZXNzIHRoZXNlIG1vcmUgdGVyc2VseSBieSBzYXlpbmc6IO+/vU1hbiBpcyBpbW1vcnRhbDsgR29kIGlzIApnb29kOyBhcyB3ZSBzb3csIHNvIHNoYWxsIHdlIHJlYXAu77+9IFN1cmVseSBub25lIG9mIG91ciBjaGlsZHJlbiBjYW4gZmFpbCB0byAKZ3Jhc3AgdGhlc2Ugc2ltcGxlIGlkZWFzIGluIHRoZWlyIGJyb2FkIG91dGxpbmUsIHRob3VnaCBhcyB0aGV5IGdyb3cgb2xkZXIgdGhleSAKbWF5IHNwZW5kIG1hbnkgYSB5ZWFyIGluIGxlYXJuaW5nIG1vcmUgYW5kIG1vcmUgb2YgdGhlIGltbWVuc2l0eSBvZiB0aGVpciBmdWxsIAptZWFuaW5nLiAKCgoxNDA5LsKgwqDCoMKgClRlYWNoIHRoZW0gdGhlIGdyYW5kIG9sZCBmb3JtdWxhIHRoYXQg77+9ZGVhdGggaXMgdGhlIGdhdGUgb2YgbGlmZe+/vS0tIG5vdCBhIAp0ZXJyaWJsZSBmYXRlIHRvIGJlIGZlYXJlZCwgYnV0IHNpbXBseSBhIHN0YWdlIG9mIHByb2dyZXNzIHRvIGJlIHdlbGNvbWVkIHdpdGggCmludGVyZXN0LiBUZWFjaCB0aGVtIHRvIGxpdmUsIG5vdCBmb3IgdGhlbXNlbHZlcywgYnV0IGZvciBvdGhlcnMtLSB0byBnbyB0aHJvdWdoIAp0aGUgd29ybGQgYXMgZnJpZW5kcyBhbmQgaGVscGVycywgZWFybmVzdCBpbiBsb3ZpbmcgcmV2ZXJlbmNlIGFuZCBjYXJlIGZvciBhbGwgCmxpdmluZyB0aGluZ3MuIFRlYWNoIHRoZW0gdG8gZGVsaWdodCBpbiBzZWVpbmcgYW5kIGluIGNhdXNpbmcgaGFwcGluZXNzIGluIApvdGhlcnMsIGluIGFuaW1hbHMgYW5kIGJpcmRzIGFzIHdlbGwgYXMgaW4gaHVtYW4gYmVpbmdzOyB0ZWFjaCB0aGVtIHRoYXQgdG8gCmNhdXNlIHBhaW4gdG8gYW55IGxpdmluZyB0aGluZyBpcyBhbHdheXMgYSB3aWNrZWQgYWN0aW9uLCBhbmQgY2FuIG5ldmVyIGhhdmUgCmF1Z2h0IG9mIGludGVyZXN0IG9yIGFtdXNlbWVudCBmb3IgYW55IHJpZ2h0LXRoaW5raW5nIG9yIGNpdmlsaXNlZCBtYW4uIEEgY2hpbGQnIApzIHN5bXBhdGhpZXMgYXJlIHNvIGVhc2lseSByb3VzZWQsIGFuZCBoaXMgZGVsaWdodCBpbiBkb2luZyBzb21ldGhpbmcgaXMgc28gCmdyZWF0LCB0aGF0IGhlIHJlc3BvbmRzIGF0IG9uY2UgdG8gdGhlIGlkZWEgdGhhdCBoZSBzaG91bGQgdHJ5IHRvIGhlbHAsIGFuZCAKc2hvdWxkIG5ldmVyIGhhcm0sIGFsbCB0aGUgY3JlYXR1cmVzIGFyb3VuZCBoaW0uIEhlIHNob3VsZCBiZSB0YXVnaHQgdG8gYmUgCm9ic2VydmFudCwgdGhhdCBoZSBtYXkgc2VlIHdoZXJlIGhlbHAgaXMgbmVlZGVkLCB3aGV0aGVyIGJ5IG1hbiBvciBieSBhbmltYWwsIAphbmQgcHJvbXB0bHkgdG8gc3VwcGx5IHRoZSB3YW50IHNvIGZhciBhcyBsaWVzIGluIGhpcyBwb3dlci4gCgoKMTQxMC7CoMKgwqDCoApBIGNoaWxkIGxpa2VzIHRvIGJlIGxvdmVkLCBhbmQgaGUgbGlrZXMgdG8gcHJvdGVjdCwgYW5kIGJvdGggdGhlc2UgCmZlZWxpbmdzIG1heSBiZSB1dGlsaXNlZCBpbiB0cmFpbmluZyBoaW0gdG8gYmUgYSBmcmllbmQgb2YgYWxsIGNyZWF0dXJlcy4gSGUgCndpbGwgcmVhZGlseSBsZWFybiB0byBhZG1pcmUgZmxvd2VycyBhcyB0aGV5IGdyb3csIGFuZCBub3Qgd2lzaCB0byBwbHVjayB0aGVtIApoZWVkbGVzc2x5LCBjYXN0aW5nIHRoZW0gYXNpZGUgYSBmZXcgbWludXRlcyBsYXRlciB0byB3aXRoZXIgb24gdGhlIHJvYWRzaWRlOyAKdGhvc2Ugd2hpY2ggaGUgcGx1Y2tzIGhlIHdpbGwgcGljayBjYXJlZnVsbHksIGF2b2lkaW5nIGluanVyeSB0byB0aGUgcGxhbnQ7IGhlIAp3aWxsIHByZXNlcnZlIGFuZCB0ZW5kIHRoZW0sIGFuZCBoaXMgd2F5IHRocm91Z2ggd29vZCBhbmQgZmllbGQgd2lsbCBuZXZlciBiZSAKdHJhY2VhYmxlIGJ5IGZhZGluZyBibG9zc29tcyBhbmQgdXByb290ZWQgcGxhbnRzLiAKCgoxNDExLsKgwqDCoMKgClBIWVNJQ0FMIFRSQUlOSU5HIAoKCjE0MTIuwqDCoMKgwqAKVGhlIHBoeXNpY2FsIHRyYWluaW5nIG9mIHRoZSBjaGlsZCBpcyBhIG1hdHRlciBvZiB0aGUgZ3JlYXRlc3QgCmltcG9ydGFuY2UsIGZvciBhIHN0cm9uZywgcHVyZSwgaGVhbHRoeSBib2R5IGlzIG5lY2Vzc2FyeSBmb3IgdGhlIGZ1bGwgCmV4cHJlc3Npb24gb2YgdGhlIGRldmVsb3Bpbmcgc291bCB3aXRoaW4uIFRlYWNoIGhpbSBmcm9tIHRoZSBmaXJzdCB0aGUgZXhjZWVkaW5nIAppbXBvcnRhbmNlIG9mIHBoeXNpY2FsIHB1cml0eSwgc28gdGhhdCBoZSBtYXkgcmVnYXJkIGhpcyBkYWlseSBiYXRoIGFzIGp1c3QgYXMgCm11Y2ggYW4gaW50ZWdyYWwgcGFydCBvZiBoaXMgbGlmZSBhcyBoaXMgZGFpbHkgZm9vZC4gU2VlIHRvIGl0IHRoYXQgaGlzIGJvZHkgaXMgCm5ldmVyIGJlZm91bGVkIHdpdGggc3VjaCBmaWx0aHkgYWJvbWluYXRpb25zIG9mIG1vZGVybiBzYXZhZ2VyeSBhcyBtZWF0LCBhbGNvaG9sIApvciB0b2JhY2NvOyBzZWUgdG8gaXQgdGhhdCBoZSBoYXMgYWx3YXlzIHBsZW50eSBvZiBzdW5saWdodCwgb2YgZnJlc2ggYWlyIGFuZCBvZiAKZXhlcmNpc2UuIAoKCjE0MTMuwqDCoMKgwqAKV2UgaGF2ZSBzZWVuIGluIGFuIGVhcmxpZXIgY2hhcHRlciBob3cgaG9ycmlibGUgYXJlIHRoZSBzdXJyb3VuZGluZ3MgaW4gYSAKZ3JlYXQgdG93bjsgYW5kIGlmIHRoZXNlIGFyZSBldmlsIGluIHRoZWlyIGluZmx1ZW5jZSBvbiBhZHVsdHMsIHRoZXkgYXJlIHRlbiAKdGltZXMgd29yc2UgZm9yIHRoZSBtb3JlIHNlbnNpdGl2ZSBjaGlsZHJlbi4gVGhlIHRydXRoIGlzIHRoYXQgbm8gY2hpbGRyZW4gb3VnaHQgCmV2ZXIgdG8gYmUgYnJvdWdodCB1cCBpbiBhIHRvd24gYXQgYWxsOyBhbmQgdGhvc2Ugd2hvc2UgZXZpbCBrYXJtYSBjb21wZWxzIHRoZW0gCnRvIHdvcmsgaW4gc3VjaCBwbGFjZXMgc2hvdWxkIGF0IGxlYXN0IHRyeSBpZiBwb3NzaWJsZSB0byBsaXZlIGEgbGl0dGxlIHdheSAKb3V0c2lkZSBvZiB0aGVtIGZvciB0aGUgc2FrZSBvZiB0aGVpciBjaGlsZHJlbi4gSXQgaXMgZmFyIGJldHRlciBmb3IgdGhlIApjaGlsZHJlbiB0byBiZSBicm91Z2h0IHVwIGluIHRoZSBjb3VudHJ5LCBldmVuIHRob3VnaCBpdCBiZSBpbiBjb21wYXJhdGl2ZSAKcG92ZXJ0eSwgdGhhbiB0aGF0LCBpbiBvcmRlciB0byBhbWFzcyBtb25leSBmb3IgdGhlbSwgdGhlIHBhcmVudHMgc2hvdWxkIGFsbG93IAp0aGVtIHRvIGdyb3cgdXAgYW1pZHN0IGFsbCB0aGUgbm94aW91cyBpbmZsdWVuY2VzIG9mIGEgbGFyZ2UgdG93bi4gV2hlcmUgdGhlIAp1cmJhbiBsaWZlIGlzIHVuZm9ydHVuYXRlbHkgdW5hdm9pZGFibGUsIHRoZXkgc2hvdWxkIGF0IGxlYXN0IGJlIHRha2VuIG91dCBvZiAKdGhlIGNpdHkgYXMgb2Z0ZW4gYXMgcG9zc2libGUsIGFuZCBrZXB0IG91dCBhcyBsb25nIGFzIHBvc3NpYmxlLiAKCgoxNDE0LsKgwqDCoMKgClNvIHNoYWxsIHlvdXIgY2hpbGQgZ3JvdyB1cCBwdXJlLCBoZWFsdGh5IGFuZCBoYXBweTsgc28gc2hhbGwgeW91IApwcm92aWRlLCBmb3IgdGhlIHNvdWwgZW50cnVzdGVkIHRvIHlvdXIgY2FyZSwgYSBjYXNrZXQgb2Ygd2hpY2ggaXQgbmVlZCBub3QgYmUgCmFzaGFtZWQsIGEgdmVoaWNsZSB0aHJvdWdoIHdoaWNoIGl0IHNoYWxsIHJlY2VpdmUgb25seSB0aGUgaGlnaGVzdCBhbmQgYmVzdCB0aGF0IAp0aGUgcGh5c2ljYWwgd29ybGQgY2FuIGdpdmUtLSB3aGljaCBpdCBjYW4gdXNlIGFzIGEgZml0dGluZyBpbnN0cnVtZW50IGZvciB0aGUgCm5vYmxlc3QgYW5kIHRoZSBob2xpZXN0IHdvcmsuIAoKCjE0MTUuwqDCoMKgwqAKQXMgdGhlIHBhcmVudCB0ZWFjaGVzIHRoZSBjaGlsZCwgaGUgd2lsbCBhbHNvIGJlIG9ibGlnZWQgdG8gc2V0IHRoZSAKZXhhbXBsZSBpbiB0aGlzIGFzIGluIG90aGVyIHRoaW5ncywgYW5kIHNvIHRoZSBjaGlsZCB3aWxsIHRodXMgYWdhaW4gY2l2aWxpc2UgCmhpcyBlbGRlcnMgYXMgd2VsbCBhcyBpbXByb3ZlIGhpbXNlbGYuIEJpcmRzIGFuZCBidXR0ZXJmbGllcywgY2F0cyBhbmQgZG9ncywgYWxsIAp3aWxsIGJlIGhpcyBmcmllbmRzLCBhbmQgaGUgd2lsbCBkZWxpZ2h0IGluIHRoZWlyIGJlYXV0eSBpbnN0ZWFkIG9mIGxvbmdpbmcgdG8gCmNoYXNlIG9yIGRlc3Ryb3kgdGhlbS4gQ2hpbGRyZW4gdGh1cyB0cmFpbmVkIHdpbGwgZ3JvdyB1cCBpbnRvIG1lbiBhbmQgd29tZW4gd2hvIApyZWNvZ25pc2UgdGhlaXIgcGxhY2UgaW4gZXZvbHV0aW9uIGFuZCB0aGVpciB3b3JrIGluIHRoZSB3b3JsZCwgYW5kIGVhY2ggd2lsbCAKc2VydmUgYXMgYSBmcmVzaCBjZW50cmUgb2YgaHVtYW5pc2luZyBmb3JjZSwgZ3JhZHVhbGx5IGNoYW5naW5nIHRoZSBkaXJlY3Rpb24gb2YgCmh1bWFuIGluZmx1ZW5jZSBvbiBhbGwgbG93ZXIgdGhpbmdzLiAKCgoxNDE2LsKgwqDCoMKgCklmIHRodXMgd2UgdHJhaW4gb3VyIGNoaWxkcmVuLCBpZiB3ZSBhcmUgdGh1cyBjYXJlZnVsIGluIG91ciByZWxhdGlvbnMgCndpdGggdGhlbSwgd2Ugc2hhbGwgYmVhciBub2JseSBvdXIgZ3JlYXQgcmVzcG9uc2liaWxpdHksIGFuZCBpbiBzbyBkb2luZyB3ZSAKc2hhbGwgaGVscCBvbiB0aGUgZ3JhbmQgd29yayBvZiBldm9sdXRpb247IHdlIHNoYWxsIGJlIGRvaW5nIG91ciBkdXR5LCBub3Qgb25seSAKdG8gb3VyIGNoaWxkcmVuLCBidXQgdG8gdGhlIGh1bWFuIHJhY2UtLSBub3Qgb25seSB0byB0aGVzZSBwYXJ0aWN1bGFyIGVnb3MsIGJ1dCAKdG8gdGhlIG1hbnkgbWlsbGlvbnMgeWV0IHRvIGNvbWUuIAoKCjE0MTcuwqDCoMKgwqAKQ0hBUFRFUiBYWElJSSAKCgoxNDE4LsKgwqDCoMKgCkJZIE9VUiBSRUxBVElPTiBUTyBMT1dFUiBLSU5HRE9NUyAKCgoxNDE5LsKgwqDCoMKgCkRPTUVTVElDIEFOSU1BTFMgCgoKMTQyMC7CoMKgwqDCoApXRSBoYXZlIGEgcmVzcG9uc2liaWxpdHkgd2hpY2ggbXVzdCBub3QgYmUgZm9yZ290dGVuIHRvd2FyZHMgdGhlIGFuaW1hbHMgCndoaWNoIHdlIGRyYXcgYXJvdW5kIHVzLiBUaGlzIG1heSBiZSBvZiB0d28ga2luZHMsIG9yIHJhdGhlciBvZiB0d28gZGVncmVlcy4gQSAKZmFybWVyIGluIHRoZSBjb3Vyc2Ugb2YgaGlzIGJ1c2luZXNzIGhhcyB0byBkZWFsIHdpdGggYSBsYXJnZSBudW1iZXIgb2YgYW5pbWFscyAKd2hpY2ggbWF5IGJlIGRlc2NyaWJlZCBhcyBzZW1pLWRvbWVzdGljYXRlZC4gSGlzIGR1dHkgdG93YXJkcyB0aGVtIGlzIGNsZWFybHkgdG8gCmZlZWQgdGhlbSB3ZWxsIGFuZCB0byB0YWtlIGFsbCBwb3NzaWJsZSBjYXJlIHRvIGtlZXAgdGhlbSBpbiBwZXJmZWN0IGhlYWx0aC4gSGUgCm1heSBzb21ldGltZXMgYXR0YWNoIHRvIGhpbXNlbGYgc29tZSBvbmUgb2YgdGhlc2UsIGJ1dCBvbiB0aGUgd2hvbGUgaGlzIHJlbGF0aW9uIAp0b3dhcmRzIHRoZW0gaXMgaW4gdGhlIG1hc3Mgb25seSwgYW5kIGFzIHRoZXkgYXJlIHlldCBmYXIgZnJvbSB0aGUgcG9zc2liaWxpdHkgCm9mIGluZGl2aWR1YWxpc2F0aW9uLCBpdCBpcyBub3QgbGlrZWx5IHRoYXQgaGlzIGluZmx1ZW5jZSBvdmVyIHRoZW0gY2FuIGdvIGZhciwgCm9yIGJlIG1vcmUgdGhhbiBhIGdlbmVyYWwgb25lLiBIaXMgcmVsYXRpb24gd2l0aCB0aGVtIGlzLCBpbiBmYWN0LCBhIGJ1c2luZXNzIApyZWxhdGlvbiwgdGhvdWdoIGhlIHNob3VsZCBsb29rIGFmdGVyIHRoZW0gYXMgY2FyZWZ1bGx5IGFzIHRob3VnaCB0aGV5IHdlcmUgCmh1bWFuLiAKCgoxNDIxLsKgwqDCoMKgClRoZSBjYXNlIGlzIHF1aXRlIGRpZmZlcmVudCB3aXRoIHRoZSByZWFsbHkgZG9tZXN0aWMgYW5pbWFscyB3aGljaCBsaXZlIAppbiB0aGUgaG91c2Ugd2l0aCB1cywgYW5kIGNvbWUgaW50byBpbnRpbWF0ZSBwZXJzb25hbCByZWxhdGlvbnMgd2l0aCB1cy4gTm8gb25lIAppcyBvYmxpZ2VkIHRvIGtlZXAgYSBkb2cgb3IgYSBjYXQsIGJ1dCBpZiBoZSBkb2VzIHNvIGhlIGluY3VycyBhIG11Y2ggZ3JlYXRlciAKcmVzcG9uc2liaWxpdHkgdG93YXJkcyB0aGF0IGFuaW1hbCB0aGFuIHRoZSBmYXJtZXIgaGFzIHRvd2FyZHMgYW55IG1lbWJlciBvZiBoaXMgCmZsb2NrLiBJdCB3b3VsZCBiZSB1bnBhcmRvbmFibGUgc2VsZmlzaG5lc3MgZm9yIGFueW9uZSB3aG8ga2VlcHMgc3VjaCBhbiBhbmltYWwgCnRvIHRoaW5rIG9ubHkgb2YgaGlzIG93biBwbGVhc3VyZSBpbiBjb25uZWN0aW9uIHdpdGggaXQsIGFuZCBub3Qgb2YgdGhlIGFuaW1hbCcgCnMgZGV2ZWxvcG1lbnQuIAoKCjE0MjIuwqDCoMKgwqAKVGhlIGRvbWVzdGljIGFuaW1hbCBpcyBpbiBmYWN0IGEga2luZCBvZiB5b3VuZ2VyIGNoaWxkLS0gd2l0aCB0aGlzIApkaWZmZXJlbmNlLCB0aGF0IHdoZXJlYXMgdGhlIGNoaWxkIGlzIGFscmVhZHkgYW4gZWdvIGFuZCBoYXMgdG8gYmUgaGVscGVkIHRvIApjb250cm9sIGhpcyBuZXcgdmVoaWNsZXMsIHRoZSBhbmltYWwgaXMgbm90IHlldCBhIHNlcGFyYXRlIGVnbyBhbmQgaGFzIHRvIGJlIApoZWxwZWQgdG8gYmVjb21lIG9uZS4gVGhlIHByb2Nlc3Mgb2YgdGhlIGluZGl2aWR1YWxpc2F0aW9uIG9mIGFuIGFuaW1hbCBoYXMgYmVlbiAKb2Z0ZW4gZGVzY3JpYmVkOyBub3RlcyB1cG9uIGl0IG1heSBiZSBmb3VuZCBpbiBBIFRleHQtYm9vayBvZiBUaGVvc29waHksIFRoZSAKSW5uZXIgTGlmZSwgTWFuIFZpc2libGUgYW5kIEludmlzaWJsZSBhbmQgVGhlIENocmlzdGlhbiBDcmVlZC4gQSAKcGVydXNhbCBvZiB3aGF0IGlzIHRoZXJlIHdyaXR0ZW4gd2lsbCBzaG93IGF0IG9uY2UgYWxvbmcgd2hhdCBsaW5lIG91ciBkdXRpZXMgdG8gCnRoZSBhbmltYWxzIGxpZS4gV2UgbXVzdCBlbmRlYXZvdXIgdG8gZGV2ZWxvcCB0aGVpciBhZmZlY3Rpb24gYW5kIHRoZWlyIAppbnRlbGxlY3QsIGFuZCB0aGUgcHJpbmNpcGFsIGZhY3RvciBpbiBib3RoIHRob3NlIGRldmVsb3BtZW50cyBpcyB0aGUgYWZmZWN0aW9uIAp3aGljaCB3ZSBmZWVsIGZvciB0aGVtLiAKCgoxNDIzLsKgwqDCoMKgCkkgaGF2ZSB3cml0dGVuIGF0IGNvbnNpZGVyYWJsZSBsZW5ndGgsIGluIFRoZSBJbm5lciBMaWZlICwgVm9sLiAKaWksIHVwb24gbWlzdGFrZXMgd2hpY2ggYXJlIGZyZXF1ZW50bHkgbWFkZSBieSBtZW4gaW4gdGhlaXIgcmVsYXRpb24gdG8gZG9tZXN0aWMgCmFuaW1hbHMuIEFsbCB0aG9zZSBtaXN0YWtlcyBhcmUgZHVlIHRvIGEgc2VsZmlzaCBhdHRpdHVkZSB3aXRoIHJlZ2FyZCB0byB0aGUgCmFuaW1hbCwgYW4gZW5kZWF2b3VyIHRvIGVtcGxveSBoaW0gZm9yIHRoZSBncmF0aWZpY2F0aW9uIG9mIG91ciBvd24gZXZpbCAKcGFzc2lvbnMtLSBhcywgZm9yIGV4YW1wbGUsIHdoZW4gYSBkb2cgaXMgdHJhaW5lZCB0byBodW50LCBhbmQgbWFkZSBpbiB0aGF0IHdheSAKdG8gZG8gdmFzdGx5IG1vcmUgaGFybSB0aGFuIGhpcyBmb3JlZmF0aGVycyBldmVyIGRpZCBhcyB3aWxkIGJlYXN0cyBpbiB0aGUgCmp1bmdsZS4gRm9yIHRoZSB3aWxkIGJlYXN0IGtpbGxzIG9ubHkgZm9yIGZvb2QsIHdoZW4gaW1wZWxsZWQgdG8gZG8gc28gYnkgCmh1bmdlcjsgYnV0IHRoZSBkb2cgaXMgdHJhaW5lZCB0byBraWxsIGZvciB0aGUgcGxlYXN1cmUgb2Yga2lsbGluZywgYW5kIGlzIAp0aGVyZWJ5IGRlZ3JhZGVkIGluIHRoZSBzY2FsZSBvZiBldm9sdXRpb24gaW5zdGVhZCBvZiBiZWluZyByYWlzZWQuIAoKCjE0MjQuwqDCoMKgwqAKQmV0d2VlbiB0aGUgdHdvIGNhdGVnb3JpZXMsIG9mIHJlYWxseSBkb21lc3RpYyBhbmltYWxzIGFuZCBmYXJtIGFuaW1hbHMsIAp3ZSBtYXkgcGxhY2UgdGhlIGhvcnNlLCBmb3IgaXQgY29tZXMgaW50byBtb3JlIGluZGl2aWR1YWwgcmVsYXRpb24gd2l0aCB0aGUgCnJpZGVyIHRoYW4gZG9lcyB0aGUgZmFybSBhbmltYWwsIGFuZCB5ZXQgYXQgdGhlIHNhbWUgdGltZSBpdCBpcyBmYXIgZnJvbSAKcG9zc2Vzc2luZyB0aGUgaW50ZWxsaWdlbmNlIG9mIHRoZSBkb2cgb3IgdGhlIGNhdC4gSXQgYWxzbyBtdXN0IGJlIHRyZWF0ZWQgCmludGVsbGlnZW50bHksIGFuZCBhYm92ZSBhbGwgd2l0aCB1bnZhcnlpbmcga2luZG5lc3MuIFRoZSByaWRlciBzaG91bGQgcmVtZW1iZXIgCmFsd2F5cyB0aGF0IHRoZSBob3JzZSBkb2VzIG5vdCBleGlzdCBzb2xlbHkgdG8gc2VydmUgaGltLCBidXQgaGFzIGFuIGV2b2x1dGlvbiAKb2YgaXRzIG93biB3aGljaCBpdCBpcyBoaXMgZHV0eSB0byBmb3J3YXJkLiBUaGVyZSBpcyBubyB3cm9uZyBpbiBoaXMgdXRpbGlzaW5nIAppdCB0byBoZWxwIGhpbSwgYmVjYXVzZSB0aGUgYXNzb2NpYXRpb24gd2l0aCBoaW0gbWF5IGRldmVsb3AgaXRzIGFmZmVjdGlvbiBhbmQgCmludGVsbGlnZW5jZTsgYnV0IGhlIG11c3QgdHJlYXQgaXQgYWx3YXlzIGFzIGhlIHdvdWxkIHRyZWF0IGEgaHVtYW4gc2VydmFudCwgYW5kIApuZXZlciBmb3JnZXQgaXRzIGludGVyZXN0IHdoaWxlIGhlIGlzIG1ha2luZyBpdCBzZXJ2ZSBoaXMgb3duLiAKCgoxNDI1LsKgwqDCoMKgCkJJUkRTIAoKCjE0MjYuwqDCoMKgwqAKQSBzdHVkZW50IG9mIHRoZSBoaWRkZW4gc2lkZSBvZiBsaWZlIGNhbm5vdCBidXQgZGVwcmVjYXRlIHRoZSBwcmFjdGljZSBvZiAKa2VlcGluZyBiaXJkcyBpbiBjYWdlcy4gUGVyZmVjdCBsaWJlcnR5IGFuZCB0aGUgc2Vuc2Ugb2YgZ3JlYXQgb3BlbiBzcGFjZXMgYXJlIApvZiB0aGUgdmVyeSBlc3NlbmNlIG9mIHRoZSBsaWZlIG9mIGEgYmlyZCwgYW5kIGhpcyBtaXNlcnkgYXQgYmVpbmcgaW1wcmlzb25lZCBpcyAKb2Z0ZW4gaW50ZW5zZSBhbmQgbW9zdCBwYXRoZXRpYy4gVGhpcyBpcyBhbHdheXMgZXNwZWNpYWxseSBtYXJrZWQgaW4gdGhlIGNhc2Ugb2YgCnRob3NlIGJpcmRzIHdoaWNoIGFyZSBuYXRpdmVzIG9mIHRoZSBjb3VudHJ5LCBhbmQgYWxsIHN1Y2ggb3VnaHQgY2VydGFpbmx5IGF0IApvbmNlIHRvIGJlIHNldCBmcmVlLiAKCgoxNDI3LsKgwqDCoMKgCkZvcmVpZ24gYmlyZHMsIHdoaWNoIGNhbiBsaXZlIGhhcHBpbHkgb25seSBpbiBvdGhlciBjbGltYXRlcywgY29tZSB1bmRlciAKYSBkaWZmZXJlbnQgY2F0ZWdvcnkuIFRoZXkgYWxzbyBzcGVuZCBtb3N0IG9mIHRoZSB0aW1lIGluIG1lbW9yaWVzIG9mIHNwbGVuZGlkIAp0cm9waWNhbCBzY2VuZXMsIGFuZCBpbiBsb25naW5nIGZvciB0aGUgaG9tZSBmcm9tIHdoaWNoIHRoZXkgaGF2ZSBiZWVuIHRha2VuLS0gCnRvIHdoaWNoIHRoZXkgb3VnaHQgdG8gYmUgc2VudCBiYWNrIGF0IHRoZSBlYXJsaWVzdCBwb3NzaWJsZSBtb21lbnQuIFRoZSBzaW4gCnRoZXJlIGxpZXMgd2l0aCB0aG9zZSB3aG8gb3JpZ2luYWxseSBjYXVnaHQgdGhlbTsgYW5kIHRob3NlIHdobyBrZWVwIHRoZW0gbm93IApzaGFyZSBpbiBpdCBvbmx5IHNvIGZhciBhcyB0aGF0IHRoZWlyIGFjdGlvbiBtYWtlcyBpdCBwcm9maXRhYmxlLiBBIHN0dWRlbnQgd2hvIApoYXMgYWxyZWFkeSB0aG91Z2h0bGVzc2x5IGFjcXVpcmVkIHN1Y2ggYmlyZHMgYXMgdGhlc2UsIGNhbiBoYXJkbHkgZG8gb3RoZXIgdGhhbiAKa2VlcCB0aGVtLCB1bmxlc3MgaGUgaXMgaW4gYSBwb3NpdGlvbiB0byByZXR1cm4gdGhlbSB0byB0aGVpciBuYXRpdmUgY291bnRyeTsgCmJ1dCBoZSBzaG91bGQgcHJvdmlkZSB0aGVtIHdpdGggdGhlIGxhcmdlc3QgY2FnZXMsIGFuZCBsZXQgdGhlbSBvdXQgb2YgdGhlbSB0byAKZmx5IGFib3V0IHRoZSByb29tIGFzIG9mdGVuIGFzIHBvc3NpYmxlLCB3aGlsZSBoZSBjZXJ0YWlubHkgc2hvdWxkIG5vdCBlbmNvdXJhZ2UgCmEgbmVmYXJpb3VzIHRyYWZmaWMgYnkgYnV5aW5nIGFueSBtb3JlIG9mIHN1Y2ggY3JlYXR1cmVzLiAKCgoxNDI4LsKgwqDCoMKgClRoZSBvbmx5IHJhdGlvbmFsIGFuZCB1c2VmdWwgcmVsYXRpb24gdGhhdCB3ZSBjYW4gZXN0YWJsaXNoIHdpdGggYmlyZHMgaXMgCnRoYXQgd2hpY2ggb2NjYXNpb25hbGx5IGV4aXN0cyBpbiBjb3VudHJ5IHBsYWNlcy0tIHRoYXQgZm9vZCBpcyByZWd1bGFybHkgcHV0IApvdXQgZm9yIHRoZSBiaXJkcyBpbiBhIGNlcnRhaW4gcGxhY2UgYW5kIHRoZXkgY29tZSBhbmQgdGFrZSBpdCwgd2hpbGUgcmVtYWluaW5nIApvdGhlcndpc2UgcGVyZmVjdGx5IGZyZWUuIElmIGEgbWFuIHdhbnRzIHRvIGtlZXAgYSBiaXJkLCBoZSBzaG91bGQga2VlcCBpdCAKcHJlY2lzZWx5IGFzIGhlIHdvdWxkIGtlZXAgYSBjYXQtLSBwcm92aWRlIGl0IHdpdGggcGxlbnR5IG9mIGZvb2QgYW5kIGFuIGFiaWRpbmcgCnBsYWNlIHdoZW5ldmVyIGl0IGNob29zZXMgdG8gYWNjZXB0IGl0LCBidXQgbGVhdmUgaXQgb3RoZXJ3aXNlIGZyZWUgdG8gZ28gd2hlcmUgCml0IHdpbGwuIFRoZSBkaWZmaWN1bHR5IGluIHRoZSB3YXkgaXMgdGhhdCB0aGUgYmlyZCcgcyBpbnRlbGxpZ2VuY2UgaXMgc28gbXVjaCAKbGVzcyBkZXZlbG9wZWQgdGhhbiB0aGUgY2F0JyBzIHRoYXQgaXQgd291bGQgYmUgbW9yZSBkaWZmaWN1bHQgdG8gZ2V0IGl0IHRvIAp1bmRlcnN0YW5kIHRoZSBjb25kaXRpb25zIG9mIHRoZSBhcnJhbmdlbWVudC4gQnkgZmFyIHRoZSBiZXN0IHBsYW4gaXMgdG8gaGF2ZSAKbm90aGluZyB0byBkbyB3aXRoIGZvcmVpZ24gYmlyZHMsIGJ1dCB0byB0cnkgdG8gbWFrZSBmcmllbmRzIG9mIHRoZSB3aWxkIGJpcmRzIApvZiB0aGUgbmVpZ2hib3VyaG9vZC4gCgoKMTQyOS7CoMKgwqDCoApJbmRpdmlkdWFsaXNhdGlvbiBpcyBub3QgYSBwb3NzaWJpbGl0eSwgYXMgdGhlIGJpcmQgaXMgbm90IGRldmVsb3BpbmcgCmFsb25nIG91ciBsaW5lOyB3aGVuIGl0IHRyYW5zY2VuZHMgdGhlIGJpcmQgZXZvbHV0aW9uIGlzIHBhc3NlcyBkaXJlY3RseSBpbnRvIApvbmUgb2YgdGhlIGhpZ2hlciBvcmRlcnMgb2YgbmF0dXJlLXNwaXJpdHMuIE5ldmVydGhlbGVzcywga2luZG5lc3Mgc2hvd24gdG8gCmJpcmRzIGFyb3VzZXMgZ3JhdGl0dWRlIGFuZCBhZmZlY3Rpb24gaW4gdGhlbSwgYW5kIGhlbHBzIHRoZW0gZm9yd2FyZCBpbiB0aGVpciAKZXZvbHV0aW9uLiAKCgoxNDMwLsKgwqDCoMKgClBMQU5UUyAKCgoxNDMxLsKgwqDCoMKgCkFub3RoZXIgZGlyZWN0aW9uIGluIHdoaWNoIHdlIG1heSBleGVyY2lzZSBhIGdvb2QgZGVhbCBvZiBpbmZsdWVuY2UgaWYgd2UgCndpbGwsIGlzIHVwb24gdGhlIHBsYW50cyBpbiBvdXIgZ2FyZGVucy4gUGxhbnRzLCBsaWtlIGFuaW1hbHMsIGFyZSBxdWljayB0byAKcmVzcG9uZCB0byB3aXNlIGFuZCBsb3ZpbmcgY2FyZSwgYW5kIGFyZSBkaXN0aW5jdGx5IGFmZmVjdGVkIG5vdCBvbmx5IGJ5IHdoYXQgd2UgCmRvIGZvciB0aGVtIHBoeXNpY2FsbHksIGJ1dCBhbHNvIGJ5IG91ciBmZWVsaW5ncyB0b3dhcmRzIHRoZW0uIEFueW9uZSB3aG8gCnBvc3Nlc3NlcyBhc3RyYWwgc2lnaHQgd2lsbCBiZSBhd2FyZSB0aGF0IGZsb3dlcnMgZGVsaWdodCBpbiBhbmQgcmVzcG9uZCB0byBhIApmZWVsaW5nIG9mIGFkbWlyYXRpb24uIFRoZSBmZWVsaW5ncyBvZiB0aGUgdmVnZXRhYmxlIGRpZmZlciByYXRoZXIgaW4gZGVncmVlIAp0aGFuIGluIGtpbmQgZnJvbSB0aG9zZSBvZiB0aGUgYW5pbWFsIG9yIG9mIHRoZSBodW1hbiBiZWluZywgYW5kIHRoZXkgYmVhciAKc29tZXdoYXQgdGhlIHNhbWUgcmVsYXRpb24gdG8gdGhvc2Ugb2YgdGhlIGFuaW1hbCBhcyBkbyB0aG9zZSBvZiB0aGUgYW5pbWFsIHRvIAp0aG9zZSBvZiB0aGUgaHVtYW4gYmVpbmcu

Nessun commento:

Posta un commento

[AL CORPUS] Occult Chemistry [2/2]

VGhlc2UgdW5pdHMgYXJlIGFsbCBhbGlrZSwgc3BoZXJpY2FsIGFuZCBhYnNvbHV0ZWx5IHNpbXBsZSBpbiAKY29uc3RydWN0aW9uLiBUaG91Z2ggdGhleSBhcmUgdGhlIGJhc2lzIG9m...