MTk4NzA0MDgJQ09VUE9OIENVVCBPTiBLRUlIQU5TSElOIFJFQUwgRVNUQVRFIFdBUlJBTlQgQk9ORCBUaGUgY291cG9uIG9uIHRoZSAyNSBtbG4gZGxyIGVxdWl0eSB3YXJyYW50IGV1cm9ib25kIGZvciBLZWloYW5zaGluIFJlYWwgRXN0YXRlIENvIEx0ZCBoYXMgYmVlbiBzZXQgYXQgMi0xLzggcGN0IGNvbXBhcmVkIHdpdGggdGhlIDItMS80IHBjdCBpbmRpY2F0aW9uLCBsZWFkIG1hbmFnZXIgRGFpd2EgRXVyb3BlIEx0ZCBzYWlkLiAgICAgVGhlIGV4ZXJjaXNlIHByaWNlIGhhcyBiZWVuIHNldCBhdCA4MTAgeWVuIHBlciBzaGFyZSB3aGljaCByZXByZXNlbnRzIGEgcHJlbWl1bSBvZiAyLjUzIHBjdCBvdmVyIHRvZGF5J3MgY2xvc2luZyBwcmljZSBvZiA3OTAgeWVuLiBUaGUgZXhjaGFuZ2UgcmF0ZSB3YXMgc2V0IDE0Ni4zMCB5ZW4gdG8gdGhlIGRvbGxhci4gICAgIFRoZSBmaXZlLXllYXIgZGVhbCBpcyBwcmljZWQgYXQgcGFyIGFuZCBndWFyYW50ZWVkIGJ5IHRoZSBTdW1pdG9tbyBCYW5rIEx0ZC4gIFJFVVRFUiAzOwoxOTg3MDQwOAlJUkFRSSBUUk9PUFMgUkVQT1JURUQgUFVTSElORyBCQUNLIElSQU5JQU5TIElyYXEgc2FpZCB0b2RheSBpdHMgdHJvb3BzIHdlcmUgcHVzaGluZyBJcmFuaWFuIGZvcmNlcyBvdXQgb2YgcG9zaXRpb25zIHRoZXkgaGFkIGluaXRpYWxseSBvY2N1cGllZCB3aGVuIHRoZXkgbGF1bmNoZWQgYSBuZXcgb2ZmZW5zaXZlIG5lYXIgdGhlIHNvdXRoZXJuIHBvcnQgb2YgQmFzcmEgZWFybHkgeWVzdGVyZGF5LiAgICAgQSBIaWdoIENvbW1hbmQgY29tbXVuaXF1ZSBzYWlkIElyYXFpIHRyb29wcyBoYWQgd29uIGEgc2lnbmlmaWNhbnQgdmljdG9yeSBhbmQgd2VyZSBjb250aW51aW5nIHRvIGFkdmFuY2UuICAgICBJcmFxIHNhaWQgaXQgaGFkIGZvaWxlZCBhIHRocmVlLXByb25nZWQgdGhydXN0IHNvbWUgMTAga20gKHNpeCBtaWxlcykgZnJvbSBCYXNyYSwgYnV0IGFkbWl0dGVkIHRoZSBJcmFuaWFucyBoYWQgb2NjdXBpZWQgZ3JvdW5kIGhlbGQgYnkgdGhlIE1vaGFtbWVkIGFsLVFhc3NlbSB1bml0LCBvbmUgb2YgdGhyZWUgZGl2aXNpb25zIGF0dGFja2VkLiAgICAgVGhlIGNvbW11bmlxdWUgc2FpZCBJcmFuaWFuIFJldm9sdXRpb25hcnkgR3VhcmRzIHdlcmUgdW5kZXIgYXNzYXVsdCBmcm9tIHdhcnBsYW5lcywgaGVsaWNvcHRlciBndW5zaGlwcywgaGVhdnkgYXJ0aWxsZXJ5IGFuZCB0YW5rcy4gICAgICJPdXIgZm9yY2VzIGFyZSBjb250aW51aW5nIHRoZWlyIGFkdmFuY2UgdW50aWwgdGhleSBwdXJnZSB0aGUgbGFzdCBmb290aG9sZCIgb2NjdXBpZWQgYnkgdGhlIElyYW5pYW5zLCBpdCBzYWlkLiAgICAgKElyYW4gc2FpZCBpdHMgdHJvb3BzIGhhZCBraWxsZWQgb3Igd291bmRlZCBtb3JlIHRoYW4gNCwwMDAgSXJhcWlzIGFuZCB3ZXJlIHN0YWJpbGlzaW5nIHRoZWlyIG5ldyBwb3NpdGlvbnMuKSAgICAgVGhlIEJhZ2hkYWQgY29tbXVuaXF1ZSBzYWlkIElyYXFpIHBsYW5lcyBhbHNvIGRlc3Ryb3llZCBvaWwgaW5zdGFsbGF0aW9ucyBhdCBJcmFuJ3Mgc291dGh3ZXN0ZXJuIEFodmF6IGZpZWxkIGR1cmluZyBhIHJhaWQgdG9kYXkuIEl0IGRlbmllZCBhbiBJcmFuaWFuIHJlcG9ydCB0aGF0IGFuIElyYXFpIGpldCB3YXMgc2hvdCBkb3duLiAgICAgSXJhcSBhbHNvIHJlcG9ydGVkIGEgbmF2YWwgYmF0dGxlIGF0IHRoZSBub3J0aGVybiB0aXAgb2YgdGhlIEd1bGYuIElyYXFpIG5hdmFsIHVuaXRzIGFuZCBmb3JjZXMgZGVmZW5kaW5nIGFuIG9mZnNob3JlIHRlcm1pbmFsIHNhbmsgc2l4IElyYW5pYW4gb3V0IG9mIDI4IElyYW5pYW4gYm9hdHMgYXR0ZW1wdGluZyB0byBhdHRhY2sgYW4gb2Zmc2hvcmUgdGVybWluYWwsIHRoZSBjb21tdW5pcXVlIHNhaWQuICAgICAgUmV1dGVyIDM7CjE5ODcwNDA4CVNVTUlUT01PIEJBTksgQUlNUyBBVCBRVUlDSyBSRUNPVkVSWSBGUk9NIE1FUkdFUiBTdW1pdG9tbyBCYW5rIEx0ZCA8U1VNSS5UPiBpcyBjZXJ0YWluIHRvIGxvc2UgaXRzIHN0YXR1cyBhcyBKYXBhbidzIG1vc3QgcHJvZml0YWJsZSBiYW5rIGFzIGEgcmVzdWx0IG9mIGl0cyBtZXJnZXIgd2l0aCB0aGUgSGVpd2EgU29nbyBCYW5rLCBmaW5hbmNpYWwgYW5hbHlzdHMgc2FpZC4gICAgIE9zYWthLWJhc2VkIFN1bWl0b21vLCB3aXRoIGRlc3Bvc2l0cyBvZiBhcm91bmQgMjMuOSB0cmlsbGlvbiB5ZW4sIG1lcmdlZCB3aXRoIEhlaXdhIFNvZ28sIGEgc21hbGwsIHN0cnVnZ2xpbmcgYmFuayB3aXRoIGFuIGVzdGltYXRlZCAxLjI5IGJpbGxpb24gZGxycyBpbiB1bnJlY292ZXJhYmxlIGxvYW5zLCBpbiBPY3RvYmVyLiAgICAgQnV0IGRlc3BpdGUgdGhlIGxpbmstdXAsIFN1bWl0b21vIFByZXNpZGVudCBLb2ggS29tYXRzdSB0b2xkIFJldXRlcnMgaGUgaXMgY29uZmlkZW50IGhpcyBiYW5rIGNhbiBxdWlja2x5IHJlZ2FpbiBpdHMgcG9zaXRpb24uICAgICAiV2UnbGwgYmUgYmFjayBpbiBwb3NpdGlvbiBpbiBmaXJzdCBwbGFjZSB3aXRoaW4gdGhyZWUgeWVhcnMsIiBLb21hdHN1IHNhaWQgaW4gYW4gaW50ZXJ2aWV3LiAgICAgSGUgc2FpZCB0aGF0IHdoaWxlIHRoZSBtZXJnZXIgd2lsbCBpbml0aWFsbHkgcmVkdWNlIFN1bWl0b21vJ3MgcHJvZml0YWJpbGl0eSBhbmQgZWZmaWNpZW5jeSwgaXQgd2lsbCB2YXN0bHkgZXhwYW5kIFN1bWl0b21vJ3MgYnJhbmNoIG5ldHdvcmsgaW4gdGhlIFRva3lvIG1ldHJvcG9saXRhbiBhcmVhIHdoZXJlIGl0IGhhcyBiZWVuIHJlbGF0aXZlbHkgd2Vhay4gICAgIEJ1dCBmaW5hbmNpYWwgYW5hbHlzdHMgYXJlIGRpdmlkZWQgb24gd2hldGhlciBhbmQgaG93IHF1aWNrbHkgdGhlIGdhbWJsZSB3aWxsIHBheSBvZmYuICAgICBTb21lIHNhaWQgU3VtaXRvbW8gbWF5IGhhdmUgcGFpZCB0b28gbXVjaCBmb3IgSGVpd2EgU29nbyBpbiB2aWV3IG9mIHRoZSBzbWFsbGVyIGJhbmsncyBsYXJnZSBkZWJ0cy4gT3RoZXJzIGFyZ3VlIHRoZSBtZXJnZXIgd2FzIG1vcmUgY29zdCBlZmZlY3RpdmUgdGhhbiBjcmVhdGluZyBhIGNvbXBhcmFibGUgYnJhbmNoIG5ldHdvcmsgZnJvbSBzY3JhdGNoLiAgICAgVGhlIGFuYWx5c3RzIGFncmVlZCB0aGUgYmFuayB3YXMgYWdncmVzc2l2ZS4gSXQgaGFzIGV4cGFuZGVkIG92ZXJzZWFzLCBlbnRlcmVkIHRoZSBsdWNyYXRpdmUgc2VjdXJpdGllcyBidXNpbmVzcyBhbmQgZ2VhcmVkIHVwIGZvciBkb21lc3RpYyBjb21wZXRpdGlvbiwgYnV0IHRoZXkgcXVlc3Rpb25lZCB0aGUgd2lzZG9tIG9mIHNvbWUgb2YgdGhvc2UgbW92ZXMuICAgICAiVGhleSd2ZSBtYWRlIGJvbGQgbW92ZXMgdG8gcHV0IGV2ZXJ5dGhpbmcgaW4gcGxhY2UuIE5vdyBpdCdzIGxhcmdlbHkgb3V0IG9mIHRoZWlyIGhhbmRzLCIgc2FpZCBLbGVpbndvcnQgQmVuc29uIEx0ZCBmaW5hbmNpYWwgYW5hbHlzdCBTaW1vbiBTbWl0aHNvbi4gICAgIEFtb25nIFN1bWl0b21vJ3MgcHJvYmxlbXMgYXJlIGxpbWl0cyBwbGFjZWQgb24gaXRzIG1vdmUgdG8gZW50ZXIgVS5TLiBTZWN1cml0aWVzIGJ1c2luZXNzIGJ5IHRha2luZyBhIHNoYXJlIGluIEFtZXJpY2FuIGludmVzdG1lbnQgYmFuayBHb2xkbWFuLCBTYWNocyBhbmQgQ28uICAgICBTdW1pdG9tbyBsYXN0IEF1Z3VzdCBhZ3JlZWQgdG8gcGF5IDUwMCBtbG4gZGxycyBmb3IgYSAxMi41IHBjdCBsaW1pdGVkIHBhcnRuZXJzaGlwIGluIHRoZSBiYW5rLCBidXQgZm9yIHRoZSB0aW1lIGJlaW5nIGF0IGxlYXN0LCB0aGUgRmVkZXJhbCBSZXNlcnZlIEJvYXJkIGhhcyBmb3JiaWRkZW4gdGhlbSB0byBleGNoYW5nZSBwZXJzb25uZWwsIG9yIGluY3JlYXNlIHRoZSBidXNpbmVzcyB0aGV5IGRvIHdpdGggZWFjaCBvdGhlci4gICAgICJUaGUgdGllLXVwIGlzIHdpZGVseSBsb29rZWQgb24gYXMgYSBsYW1lIGR1Y2sgYmVjYXVzZSB0aGUgRmVkIHdhcyBzdHJpY3RlciB0aGFuIFN1bWl0b21vIGV4cGVjdGVkLCIgc2FpZCBvbmUgYW5hbHlzdC4gICAgIEJ1dCBLb21hdHN1IHNhaWQgdGhlIG1vdmUgd2lsbCBwYXkgb2ZmIGluIHRpbWUuICAgICAiVS5TLiBSZWd1bGF0aW9ucyB3aWxsIGNoYW5nZSBpbiB0aGUgbmVhciBmdXR1cmUgYW5kIGlmIHNvLCB3ZSBjYW4gZG8gdmFyaW91cyB0aGluZ3MuIFdlIG9ubHkgaGF2ZSB0byB3YWl0IHR3byBvciB0aHJlZSB5ZWFycywgbm90IHVudGlsIHRoZSAyMXN0IGNlbnR1cnksIiBLb21hdHN1IHNhaWQuICAgICBLb21hdHN1IGlzIGFsc28gd2lsbGluZyB0byBiZSBwYXRpZW50IGFib3V0IHBvc3NpYmxlIHJvdXRlcyBpbnRvIHRoZSBzZWN1cml0aWVzIGJ1c2luZXNzIGF0IGhvbWUuICAgICBBcnRpY2xlIDY1IG9mIHRoZSBTZWN1cml0aWVzIGFuZCBFeGNoYW5nZSBBY3QsIEphcGFuJ3MgdmVyc2lvbiBvZiB0aGUgVS5TLiBHbGFzcy1TdGVhZ2FsbCBBY3QsIHNlcGFyYXRlcyBjb21tZXJjaWFsIGZyb20gaW52ZXN0bWVudCBiYW5raW5nLiAgICAgQnV0IHRoZSB3YWxscyBiZXR3ZWVuIHRoZSB0d28gYXJlIGNydW1ibGluZyBhbmQgS29tYXRzdSBzYWlkIGhlIGhvcGVzIGZ1cnRoZXIgZGVyZWd1bGF0aW9uIHdpbGwgY3JlYXRlIG5ldyBvcHBvcnR1bml0aWVzLiAgICAgIldlIG5lZWQgdG8gZmluZCBuZXcgYnVzaW5lc3MgY2hhbmNlcywiIEtvbWF0c3Ugc2FpZC4gIkluIHNvbWUgY2FzZXMgdGhlc2Ugd2lsbCBiZSBzZWN1cml0aWVzIHJlbGF0ZWQsIGluIHNvbWUgY2FzZXMgdHJ1c3QgYmFuayByZWxhdGVkLiBUaGF0J3MgdGhlIGtpbmQgb2YgZGVyZWd1bGF0aW9uIHdlIHdhbnQuIiAgICAgVW50aWwgc3VjaCBjaGFuZ2VzIG9jY3VyLCBTdW1pdG9tbyB3aWxsIGZvY3VzIG9uIHN1Y2ggZG9tZXN0aWMgc2VjdXJpdGllcyBidXNpbmVzcyBhcyBwcm9maXRhYmxlIGdvdmVybm1lbnQgYm9uZCBkZWFsaW5nIGFuZCBzdHJlbmd0aGVuaW5nIHJlbGF0aW9ucyB3aXRoIE1laWtvIFNlY3VyaXRpZXMgQ28gTHRkLCBpbiB3aGljaCBpdCBob2xkcyBhIGZpdmUgcGN0IHNoYXJlLCBLb21hdHN1IHNhaWQuICAgICBIZSBzYWlkIFN1bWl0b21vIGlzIGNhdXRpb3VzbHkgb3B0aW1pc3RpYyBhYm91dCBlbnRlcmluZyB0aGUgc2VjdXJpdGllcyBidXNpbmVzcyBoZXJlIHRocm91Z2ggaXRzIFN3aXNzIHVuaXZlcnNhbCBiYW5rIHN1YnNpZGlhcnksIEJhbmNhIGRlbCBHb3R0YXJkby4gICAgICBUaGUgRmluYW5jZSBNaW5pc3RyeSBpcyBleHBlY3RlZCB0byBncmFudCBsaWNlbmNlcyB0byBzZWN1cml0aWVzIHN1YnNpZGlhcmllcyBvZiBVLlMuIENvbW1lcmNpYWwgYmFua3Mgc29vbiwgZm9sbG93aW5nIGEgc2ltaWxhciBkZWNpc2lvbiBmb3Igc3Vic2lkaWFyaWVzIG9mIEV1cm9wZWFuIHVuaXZlcnNhbCBiYW5rcyBpbiB3aGljaCB0aGUgcGFyZW50IGhvbGRzIGEgbGVzcyB0aGFuIDUwIHBjdC4gICAgIEJ1dCBLb21hdHN1IGlzIHJlbHVjdGFudCB0byBwdXNoIGhhcmQgZm9yIGEgc2ltaWxhciBkZWNpc2lvbiBvbiBhIEdvdHRhcmRvIHN1YnNpZGlhcnkuICAgICAiV2UgZG9uJ3Qgd2FudCB0byBtYWtlIHdhdmVzLiBXZSBleHBlY3QgdGhpcyB3aWxsIGJlIGFsbG93ZWQgaW4gdHdvIG9yIHRocmVlIHllYXJzLCIgaGUgc2FpZC4gICAgIExpa2Ugb3RoZXIgY2l0eSBiYW5rcywgU3VtaXRvbW8gaXMgYWxzbyBwdXNoaW5nIHRvIGV4cGFuZCBsZW5kaW5nIHRvIGluZGl2aWR1YWxzIGFuZCBzbWFsbCBhbmQgbWVkaXVtIGJ1c2luZXNzZXMgdG8gcmVwbGFjZSBkaXNhcHBlYXJpbmcgZGVtYW5kIGZyb20gYmlnIGJ1c2luZXNzLCBoZSBhZGRlZC4gICAgIFRoZSBhbmFseXN0cyBzYWlkIFN1bWl0b21vIHdpbGwgaGF2ZSB0byBkZXZvdGUgYSBsb3Qgb2YgdGltZSB0byBkaWdlc3RpbmcgaXRzIG1vc3QgcmVjZW50IGluaXRpYXRpdmVzLCBpbmNsdWRpbmcgdGhlIG1lcmdlciB3aXRoIGFpbGluZyBIZWl3YSBTb2dvLiAgICAgIkl0J3MgKFN1bWl0b21vKSBiZWVuIGJvbGQgaW4gaXRzIHN0cmF0ZWdpZXMsIiBzYWlkIEtsZWlud29ydCdzIFNtaXRoc29uLiAgICAgIkFmdGVyIHRoYXQsIGl0J3MgYSBxdWVzdGlvbiBvZiBhYnNvcmJpbmcgYW5kIGp1Z2dsaW5nIGFyb3VuZC4gSXQgd2lsbCBiZSB0aGUgbmV4dCBkZWNhZGUgYmVmb3JlIHdlIHNlZSBpZiB0aGUgc3RyYXRlZ3kgaXMgcmlnaHQgb3Igd3JvbmcuIiAgUkVVVEVSIDM7CjE5ODcwNDA4CVUuSy4gTU9ORVkgTUFSS0VUIERFRklDSVQgRk9SRUNBU1QgQVQgMjUwIE1MTiBTVEcgVGhlIEJhbmsgb2YgRW5nbGFuZCBzYWlkIGl0IGZvcmVjYXN0IGEgc2hvcnRhZ2Ugb2YgYXJvdW5kIDI1MCBtbG4gc3RnIGluIHRoZSBtb25leSBtYXJrZXQgdG9kYXkuICAgICBBbW9uZyB0aGUgbWFpbiBmYWN0b3JzIGFmZmVjdGluZyBsaXF1aWRpdHksIGJpbGxzIG1hdHVyaW5nIGluIG9mZmljaWFsIGhhbmRzIGFuZCB0aGUgdGFrZS11cCBvZiB0cmVhc3VyeSBiaWxscyB3aWxsIGRyYWluIHNvbWUgNTA1IG1sbiBzdGcsIHdoaWxlIGJpbGxzIGZvciByZXB1cmNoYXNlIGJ5IHRoZSBtYXJrZXQgd2lsbCByZW1vdmUgYXJvdW5kIDE5NCBtbG4uIEluIGFkZGl0aW9uLCBhIHJpc2UgaW4gbm90ZSBjaXJjdWxhdGlvbiBhbmQgYmFua2VycycgYmFsYW5jZXMgYmVsb3cgdGFyZ2V0IHdpbGwgZWFjaCBkcmFpbiBhcm91bmQgMTEwIG1sbiBzdGcuICAgICBQYXJ0bHkgb2Zmc2V0dGluZyB0aGVzZSBvdXRmbG93cywgZXhjaGVxdWVyIHRyYW5zYWN0aW9ucyB3aWxsIGFkZCBzb21lIDY5MCBtbG4gc3RnIHRvIHRoZSBzeXN0ZW0gdG9kYXkuICBSRVVURVIgMzsKMTk4NzA0MDgJVS5LLiBNT05FWSBNQVJLRVQgR0lWRU4gNTMgTUxOIFNURyBBU1NJU1RBTkNFIFRoZSBCYW5rIG9mIEVuZ2xhbmQgc2FpZCBpdCBwcm92aWRlZCB0aGUgbW9uZXkgbWFya2V0IHdpdGggNTMgbWxuIHN0ZyBhc3Npc3RhbmNlIGluIHRoZSBtb3JuaW5nIHNlc3Npb24uICAgICBUaGlzIGNvbXBhcmVzIHdpdGggdGhlIGJhbmsncyBlc3RpbWF0ZSBvZiBhIHNob3J0YWdlIGluIHRoZSBzeXN0ZW0gb2YgYXJvdW5kIDMwMCBtbG4gc3RnIHdoaWNoIGl0IGVhcmxpZXIgcmV2aXNlZCB1cCBmcm9tIDI1MCBtbG4uICAgICBUaGUgY2VudHJhbCBiYW5rIG1hZGUgb3V0cmlnaHQgcHVyY2hhc2VzIG9mIGJhbmsgYmlsbHMgY29tcHJpc2luZyA0NiBtbG4gc3RnIGluIGJhbmQgdGhyZWUgYXQgOS0zLzQgcGN0IGFuZCBzZXZlbiBtbG4gc3RnIGluIGJhbmQgZm91ciBhdCA5LTExLzE2IHBjdC4gIFJFVVRFUiAzOwoxOTg3MDQwOAlVLksuIE1PTkVZIE1BUktFVCBHSVZFTiBGVVJUSEVSIDE2NiBNTE4gU1RHIEhFTFAgVGhlIEJhbmsgb2YgRW5nbGFuZCBzYWlkIGl0IHByb3ZpZGVkIHRoZSBtYXJrZXQgd2l0aCBmdXJ0aGVyIGhlbHAgdG90YWxsaW5nIDE2NiBtbG4gc3RnIGR1cmluZyB0aGUgYWZ0ZXJub29uLiAgICAgSW4gYmFuZCBvbmUsIGl0IGJvdWdodCAzMSBtbG4gc3RnIG9mIHRyZWFzdXJ5IGJpbGxzIGFuZCB0aHJlZSBtbG4gc3RnIG9mIGJhbmsgYmlsbHMgYXQgOS03LzggcGN0LCB3aGlsZSBpbiBiYW5kIHR3byBpdCBib3VnaHQgNjkgbWxuIHN0ZyBvZiBiYW5rIGJpbGxzIGF0IDktMTMvMTYgcGN0LiBJbiBhZGRpdGlvbiwgaXQgYm91Z2h0IDYzIG1sbiBzdGcgb2YgYmFuZCB0aHJlZSBiYW5rIGJpbGxzIGF0IDktMy80IHBjdC4gICAgIFRoaXMgYnJpbmdzIHRoZSB0b3RhbCBhc3Npc3RhbmNlIGJ5IHRoZSBCYW5rIHNvIGZhciB0b2RheSB0byAyMTkgbWxuIHN0ZyBhZ2FpbnN0IGEgbGlxdWlkaXR5IHNob3J0YWdlIGl0IGhhcyBlc3RpbWF0ZWQgYXQgYXJvdW5kIDMwMCBtbG4gc3RnLiAgUkVVVEVSIDM7CjE5ODcwNDA5CTxFTUNPUj4gQ09NUExFVEVTIFNBTEUgT0YgU1RPQ0sgVE8gSU5WRVNUT1JTIEVtY29yZSBzYWlkIGl0IGNvbXBsZXRlZCB0aGUgc2FsZSBvZiA0LjEgbWxuIGRscnMgb2Ygc3RvY2sgdG8gQ2l0aWNvcnAgVmVudHVyZSBDYXBpdGFsIEx0ZCwgQ29uY29yZCBWZW50dXJlcyBvZiBEaWxsb24gUmVhZCBhbmQgQ28gYW5kIHByaXZhdGUgaW52ZXN0b3JzLiAgUmV1dGVyIDM7CjE5ODcwNDA5CTxUUlVNUCBQTEFaQT4gNFRIIFFUUiBORVQgTmV0IHByb2ZpdCAyLDUyOSwwMDAgdnMgbG9zcyAxLDA2NiwwMDAgICAgIFJldnMgNTkuMCBtbG4gdnMgNTIuNiBtbG4gICAgIFllYXIgICAgIE5ldCBwcm9maXQgMTUuNCBtbG4gdnMgcHJvZml0IDg2NSwwMDAgICAgIFJldnMgMjQ3LjAgbWxuIHZzIDIzMS4xIG1sbiAgICAgTk9URTogQ29tcGFueSBiZWNhbWUgd2hvbGx5IG93bmVkIGFuZCBvcGVyYXRlZCBieSBEb25hbGQgVHJ1bXAgaW4gTWF5IDE5ODYsIHdoZW4gaGUgYWNxdWlyZWQgNTAgcGN0IGludGVyZXN0IHRoYXQgaGFkIGJlZW4gb3duZWQgYnkgZm9ybWVyIG9wZXJhdG9yIEhvbGlkYXkgQ29ycCA8SElBPi4gIFJldXRlciAzOwoxOTg3MDQwOQlBQkJPVFQgPEFCVD4gU0VFUyBHQUlOUyBGUk9NIFdFQUtFUiBET0xMQVIgQWJib3R0IExhYm9yYXRvcmllcyBJbmMgc2FpZCBpdHMgMTk4NyBmaXJzdCBxdWFydGVyIHJlY29yZCByZXN1bHRzIHJlZmxlY3RlZCBjb250aW51ZWQgcHJvZHVjdGl2aXR5IGltcHJvdmVtZW50LCBoaWdoZXIgdm9sdW1lLCBiZXR0ZXIgcHJvZHVjdCBtaXggYW5kIGEgd2Vha2VyIFUuUy4gZG9sbGFyLiAgICAgQWJib3R0IHJlcG9ydGVkIDE5ODcgZmlyc3QgcXVhcnRlciBlYXJuaW5ncyByb3NlIHRvIGEgcmVjb3JkIDE0MiBtbG4gZGxycyBvciA2MiBjdHMgYSBzaGFyZSBvbiByZWNvcmQgc2FsZXMgb2Ygb25lIGJpbGxpb24gZGxycy4gICAgIFJlc2VhcmNoIGFuZCBkZXZlbG9wbWVudCBleHBlbnNlcywgbW9zdCBvZiB3aGljaCB3YXMgYXBwbGllZCB0byBkaWFnbm9zdGljIGFuZCBwaGFybWFjZXV0aWNhbCBwcm9kdWN0cywgaW5jcmVhc2VkIGJ5IDIzIHBjdCB0byA3OCBtbG4gZGxycywgaXQgc2FpZC4gICAgIFNhbGVzIG9mIHBoYXJtYWNldXRpY2FsIGFuZCBudXRyaXRpb25hbCBwcm9kdWN0cyB3ZXJlIDU0OCBtbG4gZGxycyBpbiB0aGUgZmlyc3QgcXVhcnRlciwgdXAgMTcuNiBwY3Qgb3ZlciBhIHllYXIgYWdvLCBBYmJvdHQgc2FpZC4gSG9zcGl0YWwgYW5kIGxhYm9yYXRvcnkgcHJvZHVjdCBzYWxlcyBpbiB0aGUgZmlyc3QgcXVhcnRlciByb3NlIDE0LjEgcGN0IHRvIDQ1NiBtbG4gZGxycywgaXQgc2FpZC4gICAgIEZpcnN0IHF1YXJ0ZXIgc2FsZXMgaW4gZG9tZXN0aWMgbWFya2V0cyBhZHZhbmNlZCAxMS41IHBjdCB0byA2ODggbWxuIGRscnMgd2hpbGUgaW50ZXJuYXRpb25hbCBzYWxlcyBqdW1wZWQgMjcuMSBwY3QgdG8gMzE2IG1sbiBkbHJzLCBBYmJvdHQgc2FpZC4gIFJldXRlciAzOwoxOTg3MDQwOQlBREFNUyBFWFBSRVNTIENPIDxBRFg+IE1BUkNIIDMxIEFTU0VUUyBTaHIgMjIuNTAgZGxycyB2cyAyMS43NCBkbHJzICAgICBBc3NldHMgNTQ2LjkgbWxuIHZzIDQ4NS4yIG1sbiAgICAgU2hycyBvdXQgMjQuMyBtbG4gdnMgMjIuMyBtbG4gICAgIE5PVEU6IGxhc3Rlc3QgYXNzZXRzIGFmdGVyIGNhcGl0YWwgZ2FpbiBkaXN0cmlidXRpb25zIG9mIDI4IGN0cyBhIHNoYXJlIGluIEZlYnJ1YXJ5IDE5ODcgYW5kIDIuNTUgZGxycyBhIHNoYXJlIGluIERlY2VtYmVyIDE5ODYgIFJldXRlciAzOwoxOTg3MDQwOQlBRUdPTiBFWFBFQ1RTIE1PREVSQVRFIFJJU0UgSU4gMTk4NyBQUk9GSVRTIER1dGNoIGluc3VyZXIgQUVHT04gTlYgPEFFR04uQVM+IHJlcG9ydGVkIGEgNi40IHBjdCBpbmNyZWFzZSBpbiAxOTg2IG5ldCBwcm9maXRzIHRvIDMyNy4xIG1sbiBndWlsZGVycyBhbmQgc2FpZCBpdCBleHBlY3RlZCBhIG1vZGVyYXRlIGluY3JlYXNlIGluIHByb2ZpdHMgZm9yIDE5ODcuICAgICBUb3RhbCByZXZlbnVlIHdhcyBlaWdodCBwY3QgbG93ZXIgaW4gMTk4NiBhdCA3Ljk3IGJpbGxpb24gZ3VpbGRlcnMgdnMgOC43IGJpbGxpb24gZ3VpbGRlcnMgaW4gMTk4NS4gVGhlIGNvbXBhbnkgc2FpZCBpdHMgcmV2ZW51ZXMgd2VyZSBkb3duIGR1ZSB0byBsb3dlciBmb3JlaWduIGV4Y2hhbmdlIHJhdGVzIGFuZCBhIGNoYW5nZSBpbiBhY2NvdW50aW5nIHByYWN0aWNlLiBJdCBhZGRlZCB0aGF0IHJldmVudWVzIHdvdWxkIGhhdmUgcmlzZW4gYnkgYWJvdXQgc2V2ZW4gcGN0IGhhZCB0aG9zZSBjaGFuZ2VzIG5vdCBvY2N1cnJlZC4gICAgIFJldmVudWUgZnJvbSBEdXRjaCBvcGVyYXRpb25zIHJvc2UgZml2ZSBwY3QgaW4gMTk4NiwgbWFpbmx5IGR1ZSB0byBpdHMgbGlmZSBpbnN1cmFuY2UgYnVzaW5lc3MuICAgICBIZWFsdGggaW5zdXJhbmNlIHJldmVudWVzIGluIHRoZSBOZXRoZXJsYW5kcyBhbHNvIHJvc2UgZGVzcGl0ZSBhIG5vdGFibGUgc2hpZnQgdG8gaW5zdXJhbmNlcyB3aXRoIGxvd2VyIHByZW1pdW1zIGFuZCBoaWdoZXIgcGVyc29uYWwgcmlza3MuICAgICBEYW1hZ2UgaW5zdXJhbmNlcyBtYWRlIGxvc3NlcywgbWFpbmx5IGR1ZSB0byBjYXIgZGFtYWdlIGluc3VyYW5jZXMuIEFFR09OIGRpZCBub3Qgc3BlY2lmeSB0aGUgbG9zcy4gICAgIEluIHRoZSBVbml0ZWQgU3RhdGVzLCByZXZlbnVlIGluIGd1aWxkZXJzIGZyb20gaGVhbHRoIGFuZCBsaWZlIGluc3VyYW5jZSB3YXMgbG93ZXIuIEFFR09OIHNhaWQgdGhpcyB3YXMgZHVlIHRvIGEgY2hhbmdlIGluIGFjY291bnRpbmcgZm9yIFUuUy4gQW5udWl0aWVzLiAgICAgQUVHT04gc2FpZCBhbm51aXRpZXMgYXJlIHN1YmplY3QgdG8gc3VjaCBzdHJvbmcgcGVyc29uYWwgaW52ZXN0bWVudCBpbmZsdWVuY2VzIHRoYXQgaXQgc2hvdWxkIGJlIGFjY291bnRlZCBkaWZmZXJlbnRseSBmcm9tIHRoZSBtb3JlIHRyYWRpdGlvbmFsIGluc3VyYW5jZXMuICAgICBUaGlzIGNoYW5nZSBpbiBhY2NvdW50aW5nIHByYWN0aWNlIGFuZCBhbm90aGVyIGNoYW5nZSB0byBhY2NvdW50IGZvciBwcm9maXRzIG1hZGUgb24gZml4ZWQgaW50ZXJlc3QgaW52ZXN0bWVudHMsIHJlc3VsdGVkIGluIGFuIGluY2lkZW50YWwgcmlzZSBpbiBuZXQgcHJvZml0cyBvZiAzMSBtbG4gZ3VpbGRlcnMuICAgICBBRUdPTiBzYWlkIGluY2lkZW50YWwgbmVnYXRpdmUgaW5mbHVlbmNlcyBvbiBuZXQgcHJvZml0cyB3ZXJlIHNsaWdodGx5IGhpZ2hlciwgYmVpbmcgdGhlIGxvd2VyIGRvbGxhciByYXRlLCBoaWdoIGluaXRpYWwgY29zdHMgZm9yIG5ldyBwcm9kdWN0cywgYW5kIHRoZSBjb3N0IG9mIG5ldyBoZWFkcXVhcnRlcnMgaW4gVGhlIEhhZ3VlLiAgICAgSW4gMTk4NiwgYSBsYXJnZSBudW1iZXIgb2YgbmV3IGluc3VyYW5jZSBwcm9kdWN0cyBlbWVyZ2VkIGluIHRoZSBOZXRoZXJsYW5kcyBhbmQgdGhlIFUuUy4sIEFFR09OIHNhaWQuIExhcmdlIGluaXRpYWwgY29zdHMgZm9yIHRoZXNlIHByb2R1Y3RzIGhhdmUgZGVwcmVzc2VkIG5ldCBwcm9maXRzIHNvbWV3aGF0LiAgICAgTW9udW1lbnRhbCBDb3JwLCBhIFUuUy4gSW5zdXJlciB3aGljaCBtZXJnZWQgd2l0aCBBRUdPTiBpbiBNYXkgMTk4Niwgc2F3IGl0cyBwcm9maXRzIGFsbW9zdCBjb21wbGV0ZWx5IGVyb2RlZCBieSB0aGVzZSBjb3N0cyBhbmQgbWFkZSBvbmx5IGEgc21hbGwgY29udHJpYnV0aW9uIHRvIHRoZSBncm91cCdzIHByb2ZpdHMuICAgICBBRUdPTiBzYWlkIGl0IGhhcyB3cml0dGVuLW9mZiA2NTcgbWxuIGd1aWxkZXJzIGluIGdvb2R3aWxsIGZvciBNb251bWVudGFsIENvcnAuICAgICBBRUdPTidzIG5ldCBlcXVpdHkgd2FzIDIuNzEgYmlsbGlvbiBndWlsZGVycyBpbiBEZWNlbWJlciAxOTg2LCBhZ2FpbnN0IDMuNDYgYmlsbGlvbiB0aGUgeWVhciBiZWZvcmUuICAgUkVVVEVSIDM7CjE5ODcwNDA5CUFMRVguIEJST1dOIDxBQlNCPiBTRVRTIFNQTElULCBUTyBPRkZFUiBTSEFSRVMgQWxleC4gQnJvd24gSW5jIHNhaWQgaXQgaGFzIGRlY2xhcmVkIGEgdGhyZWUtZm9yLXR3byBzdG9jayBzcGxpdCwgcGF5YWJsZSBNYXkgMjksIHJlY29yZCBNYXkgMjIuICAgICBUaGUgY29tcGFueSBhbHNvIHNhaWQgaXQgaGFzIGZpbGVkIHRvIG9mZmVyIDkxMiwwMDAgY29tbW9uIHNoYXJlcywgaW5jbHVkaW5nIDE2MiwwMDAgdG8gYmUgc29sZCBieSBhIHNoYXJlaG9sZGVyLCB3aXRoIGNvbXBhbnkgcHJvY2VlZHMgdG8gYmUgdXNlZCBmb3Igd29ya2luZyBjYXBpdGFsIGFuZCBnZW5lcmFsIGNvcnBvcmF0ZSBwdXJwb3Nlcy4gIEl0cyBBbGV4LiBCcm93biBhbmQgU29ucyBJbmMgc3Vic2lkaWFyeSBpcyBsZWFkIHVuZGVyd3JpdGVyLiAgICAgVGhlIG9mZmVyaW5nIGlzIGV4cGVjdGVkIHRvIGJlIG1hZGUgYmVmb3JlIHRoZSByZWNvcmQgZGF0ZSBvZiB0aGUgc3BsaXQsIHRoZSBjb21wYW55IHNhaWQuICBSZXV0ZXIgMzsKMTk4NzA0MDkJQU1FUklDQU4gV09PRE1BUksgPEFNV0Q+IFRPIEJVSUxEIFBMQU5UIEFtZXJpY2FuIFdvb2RtYXJrIENvcnAgc2FpZCBpdCBwbGFucyB0byBidWlsZCBhIDEwMCwwMDAgc3F1YXJlIGZvb3Qga2l0Y2hlbiBjYWJpbmV0IGNvbXBvbmVudCBwbGFudCBpbiBUb2Njb2EsIEdhLiwgd2l0aCBjb21wbGV0aW9uIGV4cGVjdGVkIGluIHRoZSBzcHJpbmcgb2YgMTk4OC4gIFJldXRlciAzOwoxOTg3MDQwOQlBTU9TS0VBRyBCQU5LIFNIQVJFUyBJTkMgPEFNS0c+IDFTVCBRVFIgTkVUIFNociA3MCBjdHMgdnMgNjcgY3RzICAgICBOZXQgNiw0MTYsMDAwIHZzIDYsMDU3LDAwMCAgICAgTk9URTogTmV0IGluY2x1ZGVzIHByZXRheCBzZWN1cml0aWVzIHNhbGVzIGdhaW5zIG9mIDUsOTAwLDAwMCBkbHJzIHZzIDUsOTAwLDAwMCBkbHJzLiAgUmV1dGVyIDM7CjE5ODcwNDA5CUFNUk8gQkFOSyBQTEFOUyAzMDAgTUxOIEdVSUxERVIgNi43NSBQQ1QgQk9ORFMgQW1zdGVyZGFtLVJvdHRlcmRhbSBCYW5rIE5WIDxBTVJPLkFTPiBzYWlkIGl0IHBsYW5zIHRvIGlzc3VlIDMwMCBtbG4gNi43NSBwY3QgY2FwaXRhbCBib25kcyBkdWUgMTk4OC8yMDA3LiAgICAgVGhlIGJvbmRzIHdpbGwgYmUgcmVkZWVtYWJsZSBpbiAyMCBhbG1vc3QgZXF1YWwgYW5udWFsIGluc3RhbG1lbnRzIHN0YXJ0aW5nIEp1bmUgMSwgMTk4OC4gICAgIEVhcmx5IHJlZGVtcHRpb24gaXMgbm90IHBlcm1pdHRlZCwgdGhlIGJhbmsgc2FpZC4gICAgIFRoZSBpc3N1ZSBwcmljZSB3aWxsIGJlIGFubm91bmNlZCBubyBsYXRlciB0aGFuIFdlZG5lc2RheSwgQXByaWwgMTUuIFN1YnNjcmlwdGlvbnMgY2xvc2Ugb24gVGh1cnNkYXkgQXByaWwgMTYgYXQgMTUuMDAgaHJzIGxvY2FsIHRpbWUuIFRoZSBjb3Vwb24gYW5kIHBheW1lbnQgZGF0ZSBpcyBKdW5lIDEuICAgICBUaGUgYm9uZHMgd2lsbCBiZSBsaXN0ZWQgb24gdGhlIEFtc3RlcmRhbSBTdG9jayBFeGNoYW5nZS4gICAgIEEgc3Bva2VzbWFuIGZvciB0aGUgYmFuayBzYWlkIHRoZSBjYXBpdGFsIGJvbmRzIHdlcmUgc3Vib3JkaW5hdGVkIGFuZCBoYWQgYW4gYXZlcmFnZSBtYXR1cml0eSBvZiAxMC41IHllYXJzLiAgICAgVGhlIGJvbmRzIHdpbGwgYmUgaW4gZGVub21pbmF0aW9ucyBvZiAxLDAwMCBhbmQgNSwwMDAgZ3VpbGRlcnMuICBSRVVURVIgMzsKMTk4NzA0MDkJQU5BTFlTVFMgRE9VQlQgRkVEIEZJUk1FRCBERVNQSVRFIEJPUlJPV0lORyBSSVNFIEVjb25vbWlzdHMgc2FpZCB0aGF0IHRoZXkgZG91YnQgdGhlIEZlZGVyYWwgUmVzZXJ2ZSBpcyBmaXJtaW5nIHBvbGljeSB0byBhaWQgdGhlIGRvbGxhciwgZGVzcGl0ZSBoaWdoZXIgZGlzY291bnQgd2luZG93IGJvcnJvd2luZ3MgaW4gdGhlIGxhdGVzdCB0d28td2VlayBzdGF0ZW1lbnQgcGVyaW9kIGFuZCB2ZXJ5IGhlYXZ5IGJvcnJvd2luZ3MgV2VkbmVzZGF5LiAgICAgRGF0YSBvdXQgdG9kYXkgc2hvdyBuZXQgYm9ycm93aW5ncyBmcm9tIHRoZSBGZWQgYXZlcmFnZWQgMzkzIG1sbiBkbHJzIGluIHRoZSB0d28gd2Vla3MgdG8gV2VkbmVzZGF5LCB1cCBmcm9tIDI2NSBtbG4gZGxycyBpbiB0aGUgcHJpb3Igc3RhdGVtZW50IHBlcmlvZC4gV2VkbmVzZGF5IGJvcnJvd2luZ3Mgd2VyZSAxLjQgYmlsbGlvbiBkbHJzIGFzIEZlZGVyYWwgZnVuZHMgYXZlcmFnZWQgYSBoaWdoIDYuNDUgcGN0LiAgICAgIk9uZSBjb3VsZCBtYWtlIGEgY2FzZSB0aGF0IHRoZSBGZWQgaXMgZmlybWluZywgYnV0IGl0IHByb2JhYmx5IGlzbid0LCIgc2FpZCBXaWxsaWFtIFN1bGxpdmFuIG9mIERlYW4gV2l0dGVyIFJleW5vbGRzLiAgICAgU3VsbGl2YW4gc2FpZCBzb21lIG1heSBhc3N1bWUgdGhlIEZlZCBoYXMgZmlybWVkIHBvbGljeSBtb2Rlc3RseSB0byBzdXBwb3J0IHRoZSBkb2xsYXIgYmVjYXVzZSBuZXQgYm9ycm93aW5ncyBpbiB0aGUgdHdvLXdlZWtzIHRvIFdlZG5lc2RheSB3ZXJlIG5lYXJseSA0MDAgbWxuIGRscnMgYWZ0ZXIgYXZlcmFnaW5nIGFyb3VuZCAyNTAgbWxuIGRscnMgb3ZlciB0aGUgcHJldmlvdXMgdHdvIG1vbnRocy4gICAgIEhvd2V2ZXIsIHRoZSBEZWFuIFdpdHRlciBlY29ub21pc3Qgbm90ZWQgdGhhdCB0aGUgbGF0ZXN0IHR3by13ZWVrIHBlcmlvZCBpbmNsdWRlZCBhIHF1YXJ0ZXIgZW5kIHdoZW4gc2Vhc29uYWwgZGVtYW5kIG9mdGVuIHB1c2hlcyB1cCBib3Jycm93aW5ncy4gICAgICJTb21lIG1pZ2h0IGFyZ3VlIHRoYXQgdGhlIEZlZCB3YXMgZmlybWluZyBwb2xpY3ksIGJ1dCBpdCBsb29rcyBsaWtlIGl0IHRyaWVkIHRvIHBsYXkgY2F0Y2h1cCB3aXRoIHJlc2VydmUgcHJvdmlzaW9ucyBsYXRlIGluIHRoZSBzdGF0ZW1lbnQgcGVyaW9kIGFuZCBkaWRuJ3QgcXVpdGUgbWFrZSBpdCwiIHNhaWQgV2FyZCBNY0NhcnRoeSBvZiBNZXJyaWxsIEx5bmNoIENhcGl0YWwgTWFya2V0cy4gICAgIEEgRmVkIHNwb2tlc21hbiB0b2xkIGEgcHJlc3MgcHJlc3MgY29uZmVyZW5jZSB0b2RheSB0aGF0IHRoZSBGZWQgaGFkIG5vIGxhcmdlIG5ldCBvbmUtZGF5IG1pc3Mgb2YgdHdvIGJpbGxpb24gZGxycyBvciBtb3JlIGluIGl0cyByZXNlcnZlIHByb2plY3Rpb25zIGluIHRoZSB3ZWVrIGVuZGVkIFdlZG5lc2RheS4gICAgIFN0aWxsLCBNY0NhcnRoeSBzYWlkIGl0IG1heSBoYXZlIGhhZCBhIGN1bXVsYXRpdmUgbWlzcyBpbiBpdHMgZXN0aW1hdGVzIG92ZXIgdGhlIHdlZWsgdGhhdCBjYXVzZWQgaXQgdG8gYWRkIGZld2VyIHJlc2VydmVzIGVhcmxpZXIgaW4gdGhlIHdlZWsgdGhhbiB3ZXJlIGFjdHVhbGx5IG5lZWRlZC4gICAgIFRoZSBGZWQgdG9vayBubyBtYXJrZXQgcmVzZXJ2ZSBtYW5hZ2VtZW50IGFjdGlvbiBsYXN0IFRodXJzZGF5IGFuZCBGcmlkYXksIHRoZSBmaXJzdCB0d28gZGF5cyBvZiB0aGUgd2Vlay4gSXQgYWRkZWQgdGVtcG9yYXJ5IHJlc2VydmVzIGluZGlyZWN0bHkgb24gTW9uZGF5IHZpYSB0d28gYmlsbGlvbiBkbHJzIG9mIGN1c3RvbWVyIHJlcHVyY2hhc2UgYWdyZWVtZW50cyBhbmQgdGhlbiBzdXBwbGllZCByZXNlcnZlcyBkaXJlY3RseSB2aWEgU3lzdGVtIHJlcHVyY2hhc2VzIG9uIFR1ZXNkYXkgYW5kIFdlZG5lc2RheS4gICAgIEJhc2VkIG9uIEZlZCBkYXRhIG91dCB0b2RheSwgZWNvbm9taXN0cyBjYWxjdWxhdGVkIHRoYXQgdGhlIHR3by1kYXkgU3lzdGVtIHJlcHVyY2hhc2UgYWdyZWVtZW50cyB0aGUgRmVkIGFycnJhbmdlZCBvbiBUdWVzZGF5IHRvdGFsZWQgYXJvdW5kIDUuOSBiaWxsaW9uIGRscnMuIFRoZXkgcHV0IFdlZG5lc2RheSdzIG92ZXJuaWdodCBTeXN0ZW0gcmVwb3MgYXQgYXBwcm94aW1hdGVseSAzLjQgYmlsbGlvbiBkbHJzLiAgICAgIkl0IGlzIHF1aXRlIGNsZWFyIHRoYXQgdGhlIEZlZCBpcyBub3QgZmlybWluZyBwb2xpY3kgYXQgdGhpcyB0aW1lLCIgc2FpZCBMYXJyeSBMZXV6emkgb2YgUy5HLiBXYXJidXJnIGFuZCBDbyBJbmMuICAgICBDaXRpbmcgdGhlIHZpZXcgc2hhcmVkIGJ5IHRoZSBvdGhlciB0d28gZWNvbm9taXN0cywgTGV1enppIHNhaWQgdGhlIEZlZCBjYW5ub3QgcmVhbGx5IGFmZm9yZCB0byBzZXJpb3VzbHkgbGlmdCBpbnRlcmVzdCByYXRlcyB0byBoZWxwIHRoZSBkb2xsYXIgYmVjYXVzZSB0aGF0IHdvdWxkIGhhcm0gYWxyZWFkeSB3ZWFrIGVjb25vbWllcyBpbiB0aGUgVW5pdGVkIFN0YXRlcyBhbmQgYWJyb2FkIGFuZCBhZGQgdG8gdGhlIGZpbmFuY2lhbCBzdHJlc3Mgb2YgZGV2ZWxvcGluZyBjb3VudHJpZXMgYW5kIHRoZWlyIGxlbmRlcnMuICAgICAiVGhvc2Ugd2hvIGJlbGlldmUgdGhlIEZlZCB0aWdodGVuZWQgcG9saWN5IGluIHRoZSBsYXRlc3Qgc3RhdGVtZW50IHBlcmlvZCBoYXZlIHRvIGV4cGxhaW4gd2h5IGl0IGFjdGVkIGJlZm9yZSB0aGUgZG9sbGFyIHR1bWJsZWQsIiBzYWlkIE1jQ2FydGh5IG9mIE1lcnJpbGwgTHluY2guICAgICBIZSBzYWlkIHRoZSBkb2xsYXIgc3RhZ2VkIGEgcHJlY2lwaXRvdXMgZHJvcCBhcyBhIG5ldyBzdGF0ZW1lbnQgcGVyaW9kIGJlZ2FuIHRvZGF5IG9uIGRpc2FwcG9pbnRtZW50IHllc3RlcmRheSdzIFdhc2hpbmd0b24gbWVldGluZ3Mgb2YgaW50ZXJuYXRpb25hbCBtb25ldGFyeSBvZmZpY2lhbHMgZmFpbGVkIHRvIHByb2R1Y2UgYW55dGhpbmcgdGhhdCB3b3VsZCBvZmZlciBzdWJzdGFudGl2ZSBkb2xsYXIgYWlkLiAgICAgSW4gZmFjdCwgY3VycmVuY3kgZGVhbGVycyBzYWlkIHRoZXJlIHdhcyBub3RoaW5nIGluIFdlZG5lc2RheSdzIEctNyBjb21tdW5pcXVlIHRvIGFsdGVyIHRoZSBwcmV2YWlsaW5nIHZpZXcgdGhhdCB0aGUgeWVuIG5lZWRzIHRvIHJpc2UgZnVydGhlciB0byByZWRyZXNzIHRoZSBodWdlIHRyYWRlIGltYmFsYW5jZSBiZXR3ZWVuIHRoZSBVbml0ZWQgU3RhdGVzIGFuZCBKYXBhbi4gICAgIFRoZSBlY29ub21pc3RzIGdlbmVyYWxseSBhZ3JlZWQgdGhhdCB0aGUgRmVkIGlzIGFpbWluZyBmb3Igc3RlYWR5IHBvbGljeSBub3cgdGhhdCBzaG91bGQgY29ycmVzcG9uZCB0byBhIHdlZWtseSBhdmVyYWdlIEZlZCBmdW5kcyByYXRlIGJldHdlZW4gc2l4IGFuZCA2LTEvOCBwY3QuIFRoaXMgaXMgYWJvdXQgd2hlcmUgdGhlIHJhdGUgaGFzIGJlZW4gc2luY2UgZWFybHkgTm92ZW1iZXIuICAgICAiSSdtIG5vdCBzbyBzdXJlIHRoYXQgdGhlIEZlZCBpcyBlbmdpbmVlcmluZyBhIHRpZ2h0ZXIgcG9saWN5IHRvIGhlbHAgdGhlIGRvbGxhciwgYXMgc29tZSBzdXNwZWN0LCIgc2FpZCBTdWxsaXZhbiBvZiBEZWFuIFdpdHRlci4gICAgIElmIGl0IGlzLCBob3dldmVyLCBoZSBzYWlkIHRoYXQgRmVkIHByb2JhYmx5IGhhcyBqdXN0IG51ZGdlZCB1cCBpdHMgZnVuZHMgcmF0ZSBnb2FsIHRvIGFyb3VuZCA2LjI1IHRvIDYuMzUgcGN0IGZyb20gc2l4IHRvIDYuMTAgcGN0IHByZXZpb3VzbHkuICBSZXV0ZXIgMzsKMTk4NzA0MDkJQU5DSE9SIEZJTkFOQ0lBTCA8QUZDWD4gVE8gTUFLRSBBQ1FVSVNJVElPTiBBbmNob3IgRmluYW5jaWFsIENvcnAgc2FpZCBpdCBoYXMgYWdyZWVkIHRvIGFjcXVpcmUgV2FjY2FtYXcgU3RhdGUgQmFuayBvZiBTdXJmc2lkZSBCZWFjaCwgUy5DLiwgaW4gYW4gZXhjaGFuZ2Ugb2YgMS40MzUgQW5jaG9yIHNoYXJlcyBmb3IgZWFjaCBXYWNjYW1hdyBzaGFyZSwgc3ViamVjdCB0byByZWd1bGF0b3J5IGFuZCBzaGFyZWhvbGRlciBhcHByb3ZhbHMuICAgICBXYWNjYW1hdyBoYWQgYXNzZXRzIG9mIDIyLjggbWxuIGRscnMgYXMgb2YgTWFyY2ggMzEuICBSZXV0ZXIgMzsKMTk4NzA0MDkJQVJHRU5USU5FIDE5ODYvODcgR1JBSU4gT0lMU0VFRCBSRUdJU1RSQVRJT05TIEFyZ2VudGluZSBncmFpbiBib2FyZCBwcmVsaW1pbmFyeSBmaWd1cmVzIHNob3cgMTk4Ni84NyBjcm9wIGV4cG9ydCByZWdpc3RyYXRpb25zIG9mIGdyYWlucyBhbmQgb2lsc2VlZHMgaW4gdGhlIHdlZWsgdG8gQXByaWwgOCwgd2VyZSBhcyBmb2xsb3dzLCBpbiB0b25uZXMsIGNvbXBhcmVkIHdpdGggdGhlIHByZXZpb3VzIHdlZWsgYW5kIHRoZSBjb21wYXJhYmxlIHdlZWsgYSB5ZWFyIGVhcmxpZXIuICAgICBCUkVBRCBXSEVBVCAgICAgICAgIG5pbCAgICAgICAgbmlsICAgICAgIG5pbCAgICAgTUFJWkUgICAgICAgICAgICAgIDExMyw1MDAgICAgMjEsODAwICAgIDUxLDMwMCAgICAgU09SR0hVTSAgICAgICAgICAgICAxMyw2MDAgICAgICBuaWwgICAgIDI2LDUwMCAgICAgU09ZQkVBTiAgICAgICAgICAgICAzMCwwMDAgICAgMzYsMDAwICAgIDcyLDAwMCAgICAgU1VORkxPV0VSU0VFRCAgICAgICAgbmlsICAgICAgICBuaWwgICAgIDE5LDEwMCAgICAgQ3VtdWxhdGl2ZSBmaWd1cmVzIGV4cG9ydCByZWdpc3RyYXRpb25zIGZvciB0aGUgMTk4Ni84NyBjcm9wIHRvIEFwcmlsIDgsIDE5ODcsIHdpdGggY29tcGFyYXRpdmUgZmlndXJlcyBmb3IgdGhlIDE5ODUvODYgY3JvcCB1cCB0byBBcHJpbCA5LCAxOTg2LCBpbiBicmFja2V0cywgd2VyZSBpbiB0aG91c2FuZHMgb2YgdG9ubmVzLiAgICAgQlJFQUQgV0hFQVQgICAgICAgICAgICAyLDY5Miw0ICAgICg0LDE2MS4wKSAgICAgTUFJWkUgICAgICAgICAgICAgICAgICAyLDMwNS4xICAgICg1LDIwMC4wKSAgICAgU09SR0hVTSAgICAgICAgICAgICAgICAgIDIyMC41ICAgICAgKDYyNS43KSAgICAgU09ZQkVBTiAgICAgICAgICAgICAgICAgIDU2MS4zICAgICAgKDUyNC41KSAgICAgU1VORkxPV0VSU0VFRCAgICAgICAgICAgICA0NS43ICAgICAgKDIxMy4yKSAgUkVVVEVSIDM7CjE5ODcwNDA5CUFSR0VOVElORSBDQVRUTEUgTUFSS0VUIFJFUE9SVCBBQk9VVCAzLDMxNCBIRUFEIE9GIENBVFRMRSBXRVJFIEFVQ1RJT05FRCBJTiBMSU5JRVJTIENBVFRMRSBNQVJLRVQsIEFHQUlOU1QgMTMsOTUyIE9OIFdFRE5FU0RBWSBBTkQgOSwyMTcgTEFTVCBUSFVSU0RBWSwgVFJBREUgU09VUkNFUyBTQUlELiAgICAgTUFYSU1VTiBQUklDRVMsIElOIEFVU1RSQUxFUyBQRVIgS0lMTywgV0lUSCBET0xMQVIgRVFVSVZBTEVOVCBJTiBCUkFDS0VUUywgSU5DTFVERUQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUT0RBWSAgICAgV0VETkVTREFZICAgICBTVEVFUlMgT1ZFUiA0ODAgS0lMT1MgICAxLjAyKDAuNjU4KSAxLjAxNSgwLjY1NCkgICAgIFNURUVSUyA0NjAgVE8gNDgwIEtJTE9TIDEuMDUoMC42NzcpIDEuMDMyKDAuNjY1KSAgICAgQ09XUyBGT1IgQ0FOTklORyAgICAgICAgMC41NigwLjM2MSkgMC41NiAoMC4zNjEpIFJFVVRFUiAzOwoxOTg3MDQwOQlBUkdFTlRJTkUgR1JBSU4gQkVMVCBXRUFUSEVSIFJFUE9SVCBBUkdFTlRJTkUgR1JBSU4gQkVMVCBURU1QRVJBVFVSRVMgKENFTlRJR1JBREUpIEFORCBSQUlOIChNTSkgSU4gVEhFIDI0IEhPVVJTIFRPIDEyLjAwIEdNVCBXRVJFOiAgICAgLi4uLi4uLi4uLi4uLi4uTUFYIFRFTVAuLk1JTiBURU1QLi5SQUlORkFMTCAgICAgQlVFTk9TIEFJUkVTLi4uLi4uLjI0Li4uLi4uLjEyLi4uLi4uLi4uLi4uMCAgICAgQkFISUEgQkxBTkNBLi4uLi4uLjIyLi4uLi4uLi43Li4uLi4uLi4uLi4uMCAgICAgVFJFUyBBUlJPWU9TLi4uLi4uLjIyLi4uLi4uLi44Li4uLi4uLi4uLi4uMCAgICAgVEFORElMLi4uLi4uLi4uLi4uLjIyLi4uLi4uLi43Li4uLi4uLi4uLi4uMCAgICAgSlVOSU4uLi4uLi4uLi4uLi4uLjI0Li4uLi4uLjExLi4uLi4uLi4uLi4uMCAgICAgU0FOVEEgUk9TQS4uLi4uLi4uLi0tLi4uLi4uLi42Li4uLi4uLi4uLi4uMCAgICAgQ09SRE9CQS4uLi4uLi4uLi4uLjIzLi4uLi4uLjEyLi4uLi4uLi4uLi4uMSAgICAgU0FOVEEgRkUuLi4uLi4uLi4uLjIxLi4uLi4uLjE4Li4uLi4uLi4uLi4xNyBSRVVURVIgMzsKMTk4NzA0MDkJQVJHRU5USU5FIEdSQUlOIE1BUktFVCBSRVZJRVcgVGhlIEFyZ2VudGluZSBncmFpbiBtYXJrZXQgd2FzIHF1aWV0IGluIHRoZSB3ZWVrIHRvIFdlZG5lc2RheSwgd2l0aCBwcmljZXMgcmlzaW5nIHNsaWdodGx5IG9uIGluY3JlYXNlZCBpbnRlcmVzdCBpbiB3aGVhdCwgbWlsbGV0IGFuZCBiaXJkc2VlZC4gICAgIFdoZWF0IGZvciBkb21lc3RpYyBjb25zdW1wdGlvbiByb3NlIHNpeCBBdXN0cmFscyBwZXIgdG9ubmUgdG8gMTE4LiAgICAgRm9yIGV4cG9ydCBpdCByb3NlIGVpZ2h0IHRvIDEwOCBwZXIgdG9ubmUgZnJvbSBCYWhpYSBCbGFuY2EsIGluY3JlYXNlZCAwLjUwIHRvIDEwNCBhdCBOZWNvY2hlYSBhbmQgd2FzIHVuY2hhbmdlZCBhdCBSb3NhcmlvIGF0IDEwOC4zMC4gICAgIE1haXplIGluY3JlYXNlZCBvbmUgdG8gOTAgcGVyIHRvbm5lIGF0IEJ1ZW5vcyBBaXJlcywgd2FzIHVuY2hhbmdlZCBhdCA4MiBpbiBCYWhpYSBCbGFuY2EsIGluY3JlYXNlZCAwLjUwIHRvIDg1IGF0IE5lY29jaGVhIGFuZCBmZWxsIG9uZSB0byA4OCBhdCBQYXJhbmEgUml2ZXIgcG9ydHMuICAgICBTb3JnaHVtIGZyb20gQmFoaWEgQmxhbmNhIGluY3JlYXNlZCAwLjUwIEF1c3RyYWxzIHRvIDc2LjUwIHBlciB0b25uZSBhbmQgZHJvcHBlZCBvbmUgdG8gNzUgYXQgUm9zYXJpby4gICAgIEl0IHdhcyBxdW90ZWQgYXQgNzUgYXQgVmlsbGEgQ29uc3RpdHVjaW9uLCBTYW4gTmljb2xhcyBhbmQgUHVlcnRvIEFsdmVhci4gICAgIE9hdHMgd2VyZSB1bmNoYW5nZWQgYXQgMTY4IHBlciB0b25uZSBhdCBCdWVub3MgQWlyZXMuICAgICBNaWxsZXQgZnJvbSBCdWVub3MgQWlyZXMgYW5kIFJvc2FyaW8gcm9zZSBmaXZlIHBlciB0b25uZSB0byAxNDAgYW5kIGJpcmRzZWVkIHJvc2UgMTUgdG8gMjA1IGF0IEJ1ZW5vcyBBaXJlcy4gIFJFVVRFUiAzOwoxOTg3MDQwOQlBUlVTIDxBUlNDQz4gR0VUUyA1LjIgTUxOIERMUiBPUkRFUiBBcnVzIENvcnAgc2FpZCBpdCBoYXMgcmVjZWl2ZWQgYSBsZXR0ZXIgb2YgaW50ZW50IGZyb20gV2luc3RvbiBGaW5hbmNpYWwgQ29ycCBmb3IgdGhlIHB1cmNoYXNlIG9mIG92ZXIgNSwyMDAsMDAwIGRscnMgaW4gdGVsZXBob25lIGRpYWdub3N0aWMgdGVzdGluZyBlcXVpcG1lbnQuICAgICBJdCBzYWlkIGl0IGV4cGVjdHMgdG8gbmVnb3RpYXRlIGEgZmlybSBvcmRlciBpbiBNYXkuICAgICBUaGUgY29tcGFueSBzYWlkIHRoZSB0b3RhbCB2YWx1ZSBvZiB0aGUgb3JkZXIgaXMgYXQgbGVhc3QgNSwyMDAsMDAwIGRscnMgYW5kIGNvdWxkIGJlIG1vcmUsIGRlcGVuZGluZyBvbiBjaXJjdWl0IGNvbmZpZ3VyYXRpb25zIHJlcXVpcmVkLiAgUmV1dGVyIDM7CjE5ODcwNDA5CUFTQVJDTyBVUFMgVS5TLiBMRUFEIFBSSUNFIDAuNTAgQ1QgVE8gMjYuNTAgQ1RTIEFzYXJjbyBJbmMgc2FpZCBpdCBpcyBpbmNyZWFzaW5nIGl0cyBiYXNlIHNwb3Qgc2FsZXMgcHJpY2UgZm9yIHJlZmluZWQgbGVhZCBieSBvbmUtaGFsZiBjZW50IHRvIDI2LjUwIGNlbnRzIGEgbGIsIEZPQiwgZGVsaXZlcmVkIGluIGNhcmxvYWQgbG90cywgZWZmZWN0aXZlIGltbWVkaWF0ZWx5LiAgUmV1dGVyIDM7CjE5ODcwNDA5CUFTU0VUUyBPRiBVLlMuIE1PTkVZIEZVTkRTIFJPU0UgSU4gV0VFSyBBc3NldHMgb2YgbW9uZXkgbWFya2V0IG11dHVhbCBmdW5kcyBpbmNyZWFzZWQgMS4zOSBiaWxsaW9uIGRscnMgaW4gdGhlIHdlZWsgZW5kZWQgeWVzdGVyZGF5IHRvIDIzNi43NyBiaWxsaW9uIGRscnMsIHRoZSBJbnZlc3RtZW50IENvbXBhbnkgSW5zdGl0dXRlIHNhaWQuICAgICBBc3NldHMgb2YgOTMgaW5zdGl0dXRpb25hbCBmdW5kcyB3ZXJlIHVwIDQ4MS4xIG1sbiBkbHJzIHRvIDY1LjY1IGJpbGxpb24gZGxycywgOTMgYnJva2VyLWRlYWxlciBmdW5kcyByb3NlIDI4NS4zIG1sbiBkbHJzIHRvIDEwNy4zMSBiaWxsaW9uIGRscnMsIGFuZCAxOTcgZ2VuZXJhbCBwdXJwb3NlIGZ1bmRzIGdhaW5lZCA2MjUuNSBtbG4gZGxycyB0byA2My44IGJpbGxpb24gZGxycy4gIFJldXRlciAzOwoxOTg3MDQwOQlBVVNUUkFMSUFOIFVOSU9OUyBBTkQgTlNXIEdPVkVSTk1FTlQgUkVBQ0ggREVBTCBVbmlvbiBhbmQgTmV3IFNvdXRoIFdhbGVzIGdvdmVybm1lbnQgb2ZmaWNpYWxzIGhhdmUgcmVhY2hlZCBhIGNvbXByb21pc2UgaW4gYSBkaXNwdXRlIG92ZXIgd29ya2VycyBjb21wZW5zYXRpb24sIGF2ZXJ0aW5nIGluY3JlYXNlZCBpbmR1c3RyaWFsIGFjdGlvbiBpbiB0aGUgc3RhdGUsIHVuaW9uIHNvdXJjZXMgc2FpZC4gICAgIEJ1dCBzb21lIHVuaW9ucywgaW5jbHVkaW5nIHRob3NlIG9mIGJ1aWxkaW5nIGFuZCBtaW5pbmcgd29ya2Vycywgc2FpZCB0aGV5IHdlcmUgZGlzc2F0aXNmaWVkIHdpdGggdGhlIGRlYWwgYW5kIHdvdWxkIGNvbnRpbnVlIHRoZWlyIHN0cmlrZXMgZm9yIGEgZmV3IG1vcmUgZGF5cy4gICAgIFN0YXRlIG9mZmljaWFscyBzYWlkIHRoZSBnb3Zlcm5tZW50IGhhZCBhZ3JlZWQgdG8gcmV2aXNlIGl0cyBwcm9wb3NhbHMgdG8gY3V0IGNvbXBlbnNhdGlvbiBhbmQgd291bGQgYWxsb3cgc2xpZ2h0bHkgaGlnaGVyIGNhc2ggYmVuZWZpdHMgZm9yIGluanVyZWQgd29ya2Vycy4gICAgIFVuZGVyIHRoZSBvcmlnaW5hbCBwcm9wb3NhbCwgd2hpY2ggc3BhcmtlZCBzdHJpa2VzIGFuZCBvdGhlciBpbmR1c3RyaWFsIGFjdGlvbiBpbiB0aGUgc3RhdGUgb24gQXByaWwgNywgd29ya2VycycgY29tcGVuc2F0aW9uIHdvdWxkIGhhdmUgYmVlbiBjdXQgYnkgb25lIHRoaXJkLiBGdWxsIGRldGFpbHMgb2YgdGhlIGNvbXByb21pc2UgcGFja2FnZSBhcmUgbm90IHlldCBrbm93bi4gICAgIFRoZSBMYWJvdXIgQ291bmNpbCwgYWZmaWxpYXRlZCB0byB0aGUgQXVzdHJhbGlhbiBDb3VuY2lsIG9mIFRyYWRlIFVuaW9ucyAoQUNUVSksIGhhZCB0aHJlYXRlbmVkIHRvIHBhcmFseXNlIE5ldyBTb3V0aCBXYWxlcyB1bmxlc3MgdGhlIGdvdmVybm1lbnQgbW9kaWZpZWQgaXRzIHBlbmRpbmcgbGVnaXNsYXRpb24gb24gdGhlIGlzc3VlLiAgICAgU3RhdGUgb2ZmaWNpYWxzIHNhaWQgdGhlIG9ubHkgc2VjdG9ycyBhZmZlY3RlZCBpbiB0aGUgcGFzdCB0aHJlZSBkYXlzIHdlcmUgc29tZSBnb3Zlcm5tZW50IGJ1aWxkaW5nIHByb2plY3RzLCByYWlsd2F5IGZyZWlnaHQgbW92ZW1lbnQgYW5kIGNhcmdvIGhhbmRsaW5nIGluIFN5ZG5leSdzIHBvcnRzLiAgUkVVVEVSIDM7CjE5ODcwNDA5CUFWRVJBR0UgWUVOIENEIFJBVEVTIEZBTEwgSU4gTEFURVNUIFdFRUsgQXZlcmFnZSBpbnRlcmVzdCByYXRlcyBvbiB5ZW4gY2VydGlmaWNhdGVzIG9mIGRlcG9zaXQgKENEKSBmZWxsIHRvIDQuMTMgcGN0IGluIHRoZSB3ZWVrIGVuZGVkIEFwcmlsIDggZnJvbSA0LjMzIHBjdCB0aGUgcHJldmlvdXMgd2VlaywgdGhlIEJhbmsgb2YgSmFwYW4gc2FpZC4gICAgIE5ldyByYXRlcyAocHJldmlvdXMgaW4gYnJhY2tldHMpIC0gICAgIEF2ZXJhZ2UgQ0QgcmF0ZXMgYWxsIGJhbmtzIDQuMTMgcGN0ICg0LjMzKSAgICAgTW9uZXkgTWFya2V0IENlcnRpZmljYXRlIChNTUMpIGNlaWxpbmcgcmF0ZXMgZm9yIHdlZWsgc3RhcnRpbmcgZnJvbSBBcHJpbCAxMyAtICAgICAgIDMuMzggcGN0ICgzLjU4KSAgICAgQXZlcmFnZSBDRCByYXRlcyBvZiBjaXR5LCB0cnVzdCBhbmQgbG9uZy10ZXJtIGJhbmtzIC0gICAgIExlc3MgdGhhbiA2MCBkYXlzICAgICAgICAgIDQuMTUgcGN0ICg0LjQxKSAgICAgNjAtOTAgZGF5cyAgICAgICAgICAgICAgICAgNC4xNCBwY3QgKDQuMjkpICAgICBBdmVyYWdlIENEIHJhdGVzIG9mIGNpdHksIHRydXN0IGFuZCBsb25nLXRlcm0gYmFua3MgLSAgICAgOTAtMTIwIGRheXMgICAgICAgICAgICAgICAgNC4xMiBwY3QgKDQuMjUpICAgICAxMjAtMTUwIGRheXMgICAgICAgICAgICAgICA0LjEyIHBjdCAoNC4yMykgICAgIDE1MC0xODAgZGF5cyAgICAgICAgICAgICAgIHVucXVvdGVkICg0LjAzKSAgICAgMTgwLTI3MCBkYXlzICAgICAgICAgICAgICAgNC4wNSBwY3QgKDQuMDUpICAgICBPdmVyIDI3MCBkYXlzICAgICAgICAgICAgICA0LjA1IHBjdCAodW5xdGQpICAgICBBdmVyYWdlIHllbiBiYW5rZXJzIGFjY2VwdGFuY2UgcmF0ZXMgb2YgY2l0eSwgdHJ1c3QgYW5kIGxvbmctdGVybSBiYW5rcyAtICAgICAzMCB0byBsZXNzIHRoYW4gNjAgZGF5cyAgICAzLjk4IHBjdCAoNC4yMCkgICAgIDYwLTkwIGRheXMgICAgICAgICAgICAgICAgIDQuMDMgcGN0ICgzLjk3KSAgICAgOTAtMTIwIGRheXMgICAgICAgICAgICAgICAgdW5xdW90ZWQgKHVucXRkKSAgUkVVVEVSIDM7CjE5ODcwNDA5CUJBTksgT0YgRlJBTkNFIExFQVZFUyBJTlRFUlZFTlRJT04gUkFURSBVTkNIQU5HRUQgVGhlIEJhbmsgb2YgRnJhbmNlIHNhaWQgaXQgbGVmdCBpdHMgaW50ZXJ2ZW50aW9uIHJhdGUgdW5jaGFuZ2VkIGF0IDctMy80IHBjdCB3aGVuIGl0IGluamVjdGVkIGZ1bmRzIGluIHRoZSBtYXJrZXQgYWdhaW5zdCBmaXJzdCBjYXRlZ29yeSBwYXBlciBpbiB0b2RheSdzIG1vbmV5IG1hcmtldCBpbnRlcnZlbnRpb24gdGVuZGVyLiAgICAgTW9uZXkgbWFya2V0IGRlYWxlcnMgaGFkIGVhcmxpZXIgZXhwcmVzc2VkIG1peGVkIHZpZXdzIG9uIHRoZSBwb3NzaWJpbGl0eSBvZiBxdWFydGVyIHBvaW50IGN1dC4gICAgIFRoZSByYXRlIHdhcyBsYXN0IGFkanVzdGVkIG9uIE1hcmNoIDksIHdoZW4gaXQgd2FzIGN1dCB0byA3LTMvNCBwY3QgZnJvbSB0aGUgZWlnaHQgcGN0IHJhdGUgc2V0IGluIEphbnVhcnkuICBSRVVURVIgMzsKMTk4NzA0MDkJQkFOSyBPRiBGUkFOQ0UgVE8gSE9MRCBNT05FWSBNQVJLRVQgVEVOREVSIFRPREFZIFRoZSBCYW5rIG9mIEZyYW5jZSBzYWlkIGl0IGhhcyBpbnZpdGVkIG9mZmVycyBvZiBmaXJzdCBjYXRlZ29yeSBwYXBlciB0b2RheSBmb3IgYSBtb25leSBtYXJrZXQgaW50ZXJ2ZW50aW9uIHRlbmRlci4gICAgIE1vbmV5IG1hcmtldCBvcGVyYXRvcnMgd2VyZSBkaXZpZGVkIG92ZXIgd2hldGhlciB0aGUgQmFuayBvZiBGcmFuY2Ugd2lsbCB1c2UgdG8gb2NjYXNpb24gdG8gY3V0IGl0cyBpbnRlcnZlbnRpb24gcmF0ZSwgd2hpY2ggaGFzIHN0b29kIGF0IDctMy80IHBjdCBzaW5jZSBNYXJjaCA5LiAgICAgU29tZSB0aG91Z2h0IGEgcHJpY2UgY3V0IHVubGlrZWx5IHdoaWxlIG90aGVycyBzYWlkIHRoZXJlIHdhcyByb29tIGZvciBhIGZ1cnRoZXIgMS80IHBvaW50IGN1dCBieSB0aGUgYmFuay4gIFJFVVRFUiAzOwoxOTg3MDQwOQlCQU5LIE9GIEpBUEFOIEJVWVMgRE9MTEFSUyBJTiBUT0tZTywgREVBTEVSUyBTQVkgVGhlIEJhbmsgb2YgSmFwYW4gYm91Z2h0IGEgbW9kZXN0IGFtb3VudCBvZiBkb2xsYXJzIGF0IGFyb3VuZCAxNDUuMTAgeWVuIGp1c3QgYWZ0ZXIgdGhlIG1hcmtldCBoZXJlIG9wZW5lZCwgZGVhbGVycyBzYWlkLiAgICAgSnVzdCBiZWZvcmUgdGhlIG9wZW5pbmcsIHRoZSBkb2xsYXIgZHJvcHBlZCBzd2lmdGx5IGFzIHNwZWN1bGF0b3JzIGNvbmNsdWRlZCB0aGUgR3JvdXAgb2YgU2V2ZW4gKEctNykgY29tbWludWlxdWUgaXNzdWVkIGluIFdhc2hpbmd0b24gY29udGFpbmVkIG5vdGhpbmcgYmFzaWNhbGx5IG5ldywgdGhleSBzYWlkLiBJdCBmZWxsIGFib3V0IGEgaGFsZiB5ZW4sIHRvIGFyb3VuZCAxNDUuICAgICBUaGUgRy03IHJlYWZmaXJtZWQgdGhhdCB0aGVpciBjdXJyZW5jaWVzIGFyb3VuZCBjdXJyZW50IGxldmVscyByZWZsZWN0IGVjb25vbWljIGZ1bmRhbWVudGFscy4gICAgIE9uZSBkZWFsZXIgc2FpZCB0aGUgQmFuayBvZiBKYXBhbiBwcm9iYWJseSBpbnRlcnZlbmVkIGluIEF1c3RyYWxpYSBiZWZvcmUgdGhlIG9wZW5pbmcgaGVyZSwgYnV0IGNvdWxkIG5vdCBjb25maXJtIHRoaXMuICBSRVVURVIgMzsKMTk4NzA0MDkJQkFOS0VSUyBUUlVTVCA8QlQ+IEZJTEVTIDQwMCBNTE4gRExSIE9GRkVSSU5HIEJhbmtlcnMgVHJ1c3QgTmV3IFlvcmsgQ29ycCBmaWxlZCB3aXRoIHRoZSBTZWN1cml0aWVzIGFuZCBFeGNoYW5nZSBDb21taXNzaW9uIGZvciBhIHNoZWxmIG9mZmVyaW5nIG9mIHVwIHRvIDQwMCBtbG4gZGxycyBvZiBzdWJvcmRpbmF0ZWQgZGViZW50dXJlcyBvbiB0ZXJtcyB0byBiZSBzZXQgYXQgdGhlIHRpbWUgb2Ygc2FsZS4gICAgIFRoZSBiYW5rIGhvbGRpbmcgY29tcGFueSBzYWlkIHByb2NlZWRzIHdpbGwgYmUgdXNlZCBmb3IgZ2VuZXJhbCBjb3Jwb3JhdGUgcHVycG9zZXMgaW5jbHVkaW5nIGludmVzdG1lbnRzIGluIG9yIGV4dGVuc2lvbnMgb2YgY3JlZGl0IHRvIGl0cyBzdWJzaWRpYXJpZXMuICAgICBVbmRlcndyaXRlcnMgd2VyZSBub3QgbmFtZWQgaW4gdGhlIGRyYWZ0IHByb3NwZWN0dXMuICBSZXV0ZXIgMzsKMTk4NzA0MDkJQkFOS1MgT0YgTUlELUFNRVJJQ0EgSU5DIDxCT01BPiAxU1QgUVRSIE5FVCBTaHIgbG9zcyAxOCBjdHMgdnMgbG9zcyA4OSBjdHMgICAgIE5ldCBwcm9maXQgMTYxLDAwMCB2cyBsb3NzIDUsOTM4LDAwMCAgICAgQXNzZXRzIDMuNDMgYmlsbGlvbiB2cyAzLjQ2IGJpbGxpb24gICAgIERlcG9zaXRzIDIuNjggYmlsbGlvbiB2cyAyLjY3IGJpbGxpb24gICAgIExvYW5zIDEuNDUgYmlsbGlvbiB2cyAxLjY0IGJpbGxpb24gICAgIE5vdGU6IFNociBkYXRhIGFmdGVyIHBheW1lbnQgb2YgcHJlZmVycmVkIGRpdmlkZW5kcy4gIFJldXRlciAzOwoxOTg3MDQwOQlCQVlCQU5LUyBJTkMgPEJCTks+IDFTVCBRVFIgTkVUIE9wZXIgc2hyIDEuMDggZGxycyB2cyA5NiBjdHMgICAgIE9wZXIgc2hyIGRpbHV0ZWQgMS4wMiBkbHJzIHZzIDg5IGN0cyAgICAgT3BlciBuZXQgMTYuMSBtbG4gdnMgMTIuOCBtbG4gICAgIEF2ZyBzaHJzIDE0LjkgbWxuIHZzIDEzLjQgbWxuICAgICBBdmcgc2hycyAxNi4xIG1sbiB2cyAxNC44IG1sbiAgICAgTk9URTogMTk4NyBuZXQgZXhjbHVkZXMgZ2FpbiA0LDgyMCwwMDAgZGxycyBmcm9tIGN1bXVsYXRpdmUgZWZmZWN0IG9mIGNoYW5nZSBpbiBjYWxjdWxhdGluZyBkZXByZWNpYXRpb24gZXhwZW5zZS4gIFJldXRlciAzOwoxOTg3MDQwOQlCRUxHSUFOIENVUlJFTlQgQUNDT1VOVCBTVVJQTFVTIFdJREVOUyBJTiAxOTg2IEJlbGdpdW0ncyBjdXJyZW50IGFjY291bnQgc3VycGx1cywgbWVhc3VyZWQgb24gYSBjYXNoIGJhc2lzLCB3aWRlbmVkIHNoYXJwbHkgdG8gMTM0LjkgYmlsbGlvbiBmcmFuY3MgbGFzdCB5ZWFyIGZyb20gMTcuNSBiaWxsaW9uIGluIDE5ODUsIHRoZSBGaW5hbmNlIE1pbmlzdHJ5IHNhaWQuICAgICBUaGUgaW5jcmVhc2Ugd2FzIGR1ZSBhbG1vc3QgZW50aXJlbHkgdG8gYSBzaGFycCByaXNlIGluIHRoZSBnb29kcyB0cmFkZSBzdXJwbHVzIHRvIDEyNi4xIGJpbGxpb24gZnJhbmNzIGZyb20gMjAuNCBiaWxsaW9uLiAgICAgVGhlIHNlcnZpY2VzIHRyYWRlIHN1cnBsdXNlcyBpbmNyZWFzZWQgdG8gNTIuNCBiaWxsaW9uIGZyYW5jcyBmcm9tIDM4LjkgYmlsbGlvbiB3aGlsZSB0aGUgZGVmaWNpdCBvbiB0cmFuc2ZlcnMgcm9zZSBzbGlnaHRseSB0byA0My42IGJpbGxpb24gZnJvbSA0MS44IGJpbGxpb24uICAgICBQcml2YXRlIHNlY3RvciBjYXBpdGFsIG9wZXJhdGlvbnMgc2hvd2VkIGEgc3RlZXBseSBoaWdoZXIgZGVmaWNpdCBvZiAxNjAuNyBiaWxsaW9uIGZyYW5jcyBhZnRlciA1Ni45IGJpbGxpb24gaW4gMTk4NS4gIFJldXRlciAzOwoxOTg3MDQwOQlCRUxHSVVNIExBVU5DSEVTIEJPTkRTIFdJVEggR09MRCBXQVJSQU5UUyBUaGUgS2luZ2RvbSBvZiBCZWxnaXVtIGlzIGxhdW5jaGluZyAxMDAgbWxuIFN3aXNzIGZyYW5jcyBvZiBzZXZlbiB5ZWFyIG5vdGVzIHdpdGggd2FycmFudHMgYXR0YWNoZWQgdG8gYnV5IGdvbGQsIGxlYWQgbWFuYWdlciBDcmVkaXQgU3Vpc3NlIHNhaWQuICAgICBUaGUgbm90ZXMgdGhlbXNlbHZlcyBoYXZlIGEgMy0zLzggcGN0IGNvdXBvbiBhbmQgYXJlIHByaWNlZCBhdCBwYXIuIFBheW1lbnQgaXMgZHVlIEFwcmlsIDMwLCAxOTg3LCBhbmQgZmluYWwgbWF0dXJpdHkgQXByaWwgMzAsIDE5OTQuICAgICBFYWNoIDUwLDAwMCBmcmFuYyBub3RlIGNhcnJpZXMgMTUgd2FycmFudHMuIFR3byB3YXJyYW50cyBhcmUgcmVxdWlyZWQgdG8gYWxsb3cgdGhlIGhvbGRlciB0byBidXkgMTAwIGdyYW1tZXMgb2YgZ29sZCBhdCBhIHByaWNlIG9mIDIsNDUwIGZyYW5jcywgZHVyaW5nIHRoZSBlbnRpcmUgbGlmZSBvZiB0aGUgYm9uZC4gICAgIFRoZSBsYXRlc3QgZ29sZCBwcmljZSBpbiBadXJpY2ggd2FzIDIsMDQ1LzIsMDcwIGZyYW5jcyBwZXIgMTAwIGdyYW1tZXMuICBSZXV0ZXIgMzsKMTk4NzA0MDkJQkVMR0lVTSBMQVVOQ0hFUyBCT05EUyBXSVRIIEdPTEQgV0FSUkFOVFMgVGhlIEtpbmdkb20gb2YgQmVsZ2l1bSBpcyBsYXVuY2hpbmcgMTAwIG1sbiBTd2lzcyBmcmFuY3Mgb2Ygc2V2ZW4geWVhciBub3RlcyB3aXRoIHdhcnJhbnRzIGF0dGFjaGVkIHRvIGJ1eSBnb2xkLCBsZWFkIG1hbmFuZ2VyIENyZWRpdCBTdWlzc2Ugc2FpZC4gICAgIFRoZSBub3RlcyB0aGVtc2VsdmVzIGhhdmUgYSAzLTMvOCBwY3QgY291cG9uIGFuZCBhcmUgcHJpY2VkIGF0IHBhci4gUGF5bWVudCBpcyBkdWUgQXByaWwgMzAsIDE5ODcgYW5kIGZpbmFsIG1hdHVyaXR5IEFwcmlsIDMwLCAxOTk0LiAgICAgRWFjaCA1MCwwMDAgZnJhbmMgbm90ZSBjYXJyaWVzIDE1IHdhcnJhbnRzLiBUd28gd2FycmFudHMgYXJlIHJlcXVpcmVkIHRvIGFsbG93IHRoZSBob2xkZXIgdG8gYnV5IDEwMCBncmFtbWVzIG9mIGdvbGQgYXQgYSBwcmljZSBvZiAyLDQ1MCBmcmFuY3MsIGR1cmluZyB0aGUgZW50aXJlIGxpZmUgb2YgdGhlIGJvbmQuICAgICBUaGUgbGF0ZXN0IGdvbGQgcHJpY2UgaW4gWnVyaWNoIHdhcyAyLDA0NS8yLDA3MCBmcmFuY3MgcGVyIDEwMCBncmFtbWVzLiAgUkVVVEVSIDM7CjE5ODcwNDA5CUJFTEdJVU0gVE8gSVNTVUUgR09MRCBXQVJSQU5UUywgU09VUkNFUyBTQVkgQmVsZ2l1bSBwbGFucyB0byBpc3N1ZSBTd2lzcyBmcmFuYyB3YXJyYW50cyB0byBidXkgZ29sZCwgd2l0aCBDcmVkaXQgU3Vpc3NlIGFzIGxlYWQgbWFuYWdlciwgbWFya2V0IHNvdXJjZXMgc2FpZC4gICAgIE5vIGNvbmZpcm1hdGlvbiBvciBmdXJ0aGVyIGRldGFpbHMgd2VyZSBpbW1lZGlhdGVseSBhdmFpbGFibGUuICBSRVVURVIgMzsKMTk4NzA0MDkJQkVSTElORVIgQkFOSyBJU1NVRVMgNTAgTUxOIEFVU1RSQUxJQU4gRExSIEJPTkQgQmVybGluZXIgQmFuayBBRyBCZXJsaW4gaXMgaXNzdWluZyBhIDUwIG1sbiBBdXN0cmFsaWFuIGRsciBldXJvYm9uZCBkdWUgTm92ZW1iZXIgMTMsIDE5OTAgcGF5aW5nIDE0LTEvNCBwY3QgYW5kIHByaWNlZCBhdCAxMDEtMS8yIHBjdCwgbGVhZCBtYW5hZ2VyIEJhbnF1ZSBQYXJpYmFzIENhcGl0YWwgTWFya2V0cyBzYWlkLiAgICAgVGhlIG5vbi1jYWxsYWJsZSBib25kIGlzIGF2YWlsYWJsZSBpbiBkZW5vbWluYXRpb25zIG9mIDEsMDAwIEF1c3RyYWxpYW4gZGxycyBhbmQgd2lsbCBiZSBsaXN0ZWQgaW4gTHV4ZW1ib3VyZy4gVGhlIHNlbGxpbmcgY29uY2Vzc2lvbiBpcyBvbmUgcGN0IHdoaWxlIG1hbmFnZW1lbnQgYW5kIHVuZGVyd3JpdGluZyBjb21iaW5lZCBwYXlzIDUvOCBwY3QuICAgICBUaGUgcGF5bWVudCBkYXRlIGlzIE1heSAxMyBhbmQgdGhlcmUgd2lsbCBiZSBhIGxvbmcgZmlyc3QgY291cG9uIHBlcmlvZC4gIFJFVVRFUiAzOwoxOTg3MDQwOQlCRVJNVURBIFNFRUtTIDQwIE1MTiBETFIgUkVWT0xWSU5HIENSRURJVCBUaGUgR292ZXJubWVudCBvZiBCZXJtdWRhIGlzIHNlZWtpbmcgYSA0MCBtbG4gZGxyLCBzZXZlbiB5ZWFyIHJldm9sdmluZyBjcmVkaXQsIHdoaWNoIHdpbGwgYmUgdGhlIG9ubHkgY3JlZGl0IG91dHN0YW5kaW5nIGluIGl0cyBvd24gbmFtZSwgTi5NLiBSb3Roc2NoaWxkIGFuZCBTb25zIEx0ZCBzYWlkIGFzIGFycmFuZ2VyIGFuZCBhZ2VudC4gICAgIFRoZSBjcmVkaXQgd2lsbCBwYXkgYSBtYXJnaW4gb2YgMjAgYmFzaXMgcG9pbnRzIG92ZXIgVS5TLiBEb2xsYXIgTG9uZG9uIEludGVyYmFuayBPZmZlcmVkIFJhdGVzIChMSUJPUikgYW5kIHdpbGwgaW5jb3Jwb3JhdGUgYSB0ZW5kZXIgcGFuZWwgZm9yIFUuUy4gRGxyIGFkdmFuY2VzLiAgICAgVGhlcmUgaXMgYSAxMCBiYXNpcyBwb2ludCBhbm51YWwgZmFjaWxpdHkgZmVlIGluIHllYXJzIG9uZSB0byBmb3VyLCByaXNpbmcgdG8gMTItMS8yIHBvaW50cyB0aGVyZWFmdGVyLiAgQSA3LTEvMiBiYXNpcyBwb2ludCBwYXJ0aWNpcGF0aW9uIGZlZSBpcyBwYXlhYmxlIG9uIHRoZSB0cmFuc2FjdGlvbiwgd2hpY2ggc3RhcnRlZCBzeW5kaWNhdGlvbiB0aGlzIHdlZWsuICBSZXV0ZXIgMzsKMTk4NzA0MDkJQkVWSVMgPEJFVkk+IFJFQ0VJVkVTIFRBS0VPVkVSIElOUVVJUklFUyBCZXZpcyBJbmR1c3RyaWVzIEluYywgd2hpY2ggaGFzIGJlZW4gc2Vla2luZyB0byBiZSBhY3F1aXJlZCwgc2FpZCBpdCByZWNlbnRseSByZWNlaXZlZCBpbnF1aXJpZXMgY29uY2VybmluZyB0aGUgcHVyY2hhc2Ugb2YgdGhlIGNvbXBhbnkuICAgICBUaGUgY29tcGFueSBkaWQgbm90IGlkZW50aWZ5IHRoZSBwYXJ0aWVzIHRoYXQgbWFkZSB0aGUgaW5xdWlyaWVzLCBidXQgaXQgc2FpZCB0aGV5IGhhZCBiZWVuIHJlZmVycmVkIHRvIGl0cyBpbnZlc3RtZW50IGJhbmtlcnMsIFR1Y2tlciwgQW50aG9ueSBhbmQgUi5MLiBEYXkgSW5jLCBmb3Igc3R1ZHkuICAgICBPbiBNYXJjaCAxOCwgdGhlIGNvbXBhbnkgc2FpZCBpdCBlbmdhZ2VkIFR1Y2tlciwgQW50aG9ueSB0byBzZWVrIHB1cmNoYXNlcnMgb2YgaXRzIG9wZXJhdGluZyB1bml0cywgR3JlZW52aWxsZSBUdWJlIENvcnAgYW5kIE1EIFBuZXVtYXRpY3MgSW5jLiAgUmV1dGVyIDM7CjE5ODcwNDA5CUJGSU0tU09WQUMgT0ZGRVJTIEJPTkQgUkVERU1QVElPTiBCYW5xdWUgZGUgRmluYW5jZW1lbnQgSW1tb2JpbGllciBTT1ZBQywgQkZJTS1TT1ZBQywgbGF1bmNoZWQgYW4gb2ZmZXIgdG8gcmVwdXJjaGFzZSBpdHMgMTQuMzAgcGN0IDE5ODAgYm9uZCBpc3N1ZSBhdCBhIHByaWNlIG9mIDIsMTgwIGZyYW5jcyBwZXIgYm9uZCwgYSBQYXJpcyBCb3Vyc2Ugc3RhdGVtZW50IHNhaWQuICAgICBUaGUgcmVwdXJjaGFzZSBvZmZlciwgbWFuYWdlZCBieSBMYXphcmQgRnJlcmVzIGV0IENpZSwgb3BlbnMgQXByaWwgMTAgYW5kIGNsb3NlcyBBcHJpbCAyNy4gVGhlIDE0MCBtbG4gZnJhbmMgaXNzdWUgY29tcHJpc2VkIDcwLDAwMCBib25kcyBvZiAyLDAwMCBmcmFuYyBub21pbmFsIHZhbHVlIGVhY2guICBSZXV0ZXIgMzsKMTk4NzA0MDkJQk9ORCBJTlRFUk5BVElPTkFMIFNFTExTIEguSy4gUkVTSURFTlRJQUwgQlVJTERJTkcgPEJvbmQgQ29ycCBJbnRlcm5hdGlvbmFsIEx0ZD4gc2FpZCBpdCBoYXMgc29sZCBhIHJlc2lkZW50aWFsIGJsb2NrIGF0IEhvbmcgS29uZydzIG1pZC1sZXZlbHMgdG8gYSBqb2ludCB2ZW50dXJlIGJldHdlZW4gU3VuIEh1bmcgS2FpIFByb3BlcnRpZXMgTHRkIDxTSEtQLkhLPiBhbmQgPE5ldyBUb3duIChOLlQuKSBQcm9wZXJ0aWVzIEx0ZD4gZm9yIDEzOCBtbG4gSC5LLiBEbHJzLiAgICAgQm9uZCBJbnRlcm5hdGlvbmFsLCBhIHN1YnNpZGlhcnkgb2YgdGhlIEF1c3RyYWxpYSBiYXNlZCBCb25kIENvcnAgSG9sZGluZ3MgTHRkIDxCT05BLlM+LCB3aWxsIHJlY2VpdmUgbmV0IHByb2ZpdHMgb2YgYWJvdXQgMTYgbWxuIGRscnMgZnJvbSB0aGUgZGVhbC4gICAgIFRoZSBmaXJtIGJvdWdodCB0aGUgYnVpbGRpbmcsIHdoaWNoIGhhcyB0b3RhbCBmbG9vciBzcGFjZXMgb2YgMTEwLDU4MCBzcSBmdCBhbmQgaXMgbm93IGZ1bGx5IGxldCwgYXMgcGFydCBvZiBhIHBhcmNlbCBvZiBwcm9wZXJ0aWVzIHdoaWNoIGl0IGFjcXVpcmVkIGZyb20gSG9uZ2tvbmcgTGFuZCBDbyBMdGQgPEhLTEQuSEs+IGZvciAxLjQzIGJpbGxpb24gZGxycyBsYXRlIGxhc3QgeWVhci4gIFJFVVRFUiAzOwoxOTg3MDQwOQlCUkFNQUxMIFRPIEFDUVVJUkUgR0VMQ08gRk9SIFVQIFRPIDI2LjMgTUxOIERMUlMgPEMuRC4gQnJhbWFsbCBQbGM+IHNhaWQgaW4gYSBzdGF0ZW1lbnQgYWNjb21wYW55aW5nIGl0cyBhbm51YWwgcmVzdWx0cyB0aGF0IGl0IHByb3Bvc2VkIHRvIGFjcXVpcmUgR2VsY28gVS5LLiBGb3Igc29tZSAyNi4zIG1sbiBkbHJzLiAgICAgUGFydCBvZiB0aGUgY29zdCB3aWxsIGJlIG1ldCBieSB0aGUgaXNzdWUgb2YgMi4xNCBtbG4gbmV3IG9yZGluYXJ5IEJyYW1hbGwgc2hhcmVzIHdoaWNoIGFyZSBiZWluZyBwbGFjZWQgYXQgMjY1cCBlYWNoLiAgICAgVGhlIGFjcXVpc2l0aW9uIHdpbGwgYmUgc2F0aXNmaWVkIGJ5IGFuIGluaXRpYWwgcGF5bWVudCBvZiBzb21lIDI1LjMgbWxuIGRscnMgaW4gY2FzaCB3aXRoIGZ1cnRoZXIgcGF5bWVudHMgb2YgNTAwLDAwMCBkbHJzIHVwIHRvIGEgbWF4aW11bSAyNi4zIG1sbiBkbHJzLiBUaGVzZSBmdXJ0aGVyIHBheW1lbnRzIHdpbGwgb25seSBiZSBtYWRlIGlmIHByb2ZpdHMgYWNoaWV2ZWQgYnkgR2VsY28gZm9yIHRoZSB5ZWFyIGVuZGluZyBKdWx5IDMxLCAxOTg3IHJlYWNoIGEgY2VydGFpbiBsZXZlbC4gICAgIEJyYW1hbGwgc2hhcmVzIHdlcmUgdHJhZGluZyA2cCBsb3dlciBhdCAyNzhwLiAgUkVVVEVSIDM7CjE5ODcwNDA5CUJSQVpJTCBDT0NPQSBFWFBPUlRFUlMgVU5MSUtFTFkgVE8gTElNSVQgU0FMRVMgQnJhemlsaWFuIGNvY29hIGV4cG9ydGVycyBhcmUgbm90IGxpa2VseSB0byBmb2xsb3cgdGhlIGV4YW1wbGUgb2YgQ29jb2EgUHJvZHVjZXJzIEFsbGlhbmNlLCBDUEEsIG1lbWJlcnMsIHdobyBtYXkgbGltaXQgc2FsZXMgb2YgdGhlIHByb2R1Y3QgaW4gYW4gZWZmb3J0IHRvIGJvb3N0IHdvcmxkIHByaWNlcywgdHJhZGUgc291cmNlcyBzYWlkLiAgICAgVGhleSBzYWlkIGEgc2ltaWxhciBwcm9jZWR1cmUgd2FzIHRha2VuIGluIHRoZSBwYXN0IGluIEJyYXppbCBhbmQgdGhhdCBpdCBkaWQgbm90IHdvcmsgb3V0IGFjY29yZGluZyB0byBwbGFucy4gICAgICJUaGUgY29jb2EgbWFya2V0IGlzIGNvbXBsZXRlbHkgZnJlZS4gVW5saWtlIGNvZmZlZSwgd2hpY2ggaXMgY29udHJvbGxlZCB0aHJvdWdoIGV4cG9ydCByZWdpc3RyYXRpb25zLCBjb2NvYSBleHBvcnRlcnMgaW4gQnJhemlsIG9wZXJhdGUgYXQgdGhlaXIgb3duIGZyZWUgd2lsbCwiIGEgdHJhZGUgc291cmNlIHNhaWQuICAgICBUaGUgdHJhZGVycyB3ZXJlIHJlc3BvbmRpbmcgdG8gcXVlc3Rpb25zIHdoZXRoZXIgdGhleSB3b3VsZCBmb2xsb3cgdGhlIGV4YW1wbGUgb2YgQ1BBIG1lbWJlcnMgbWVldGluZyBpbiBZYW91bmRlLiAgICAgVGhlIHNvdXJjZXMgc2FpZCB0aGUgQmFuY28gZG8gQnJhc2lsJ3MgRm9yZWlnbiBUcmFkZSBEZXBhcnRtZW50LCBDQUNFWCwgbmV2ZXIgaW50ZXJmZXJlcyBpbiB0aGUgY29jb2EgbWFya2V0IGJ5IHJlamVjdGluZyBzYWxlcyB0aGF0IGRvIG5vdCBtZWV0IGNlcnRhaW4gcHJpY2Ugb3Igc2hpcG1lbnQgY3JpdGVyaWEuICAgICAiVGhlIHBvc2l0aW9uIG9mIGxvY2FsIHByb2R1Y2VycyBpcyBhbHdheXMgdG8gbmVnb3RpYXRlIGFzIHRoZXkgcGxlYXNlLiBJZiB0aGV5IGJ1eSBmb3IgdGVuIGFuZCBzZWxsIGZvciBlbGV2ZW4gYW5kIHRoaW5rIGl0J3MgYSBnb29kIGRlYWwsIHRoZXkgYXJlIGZyZWUgdG8gZ28gYWhlYWQsIiBvbmUgc291cmNlIGFkZGVkLiAgUmV1dGVyIDM7CjE5ODcwNDA5CUJSQVpJTCBDT1RUT04gQ1JPUCBMT1dFUiAtLSBVU0RBIFJFUE9SVCBCcmF6aWwncyAxOTg2Lzg3IGNvdHRvbiBjcm9wIGVzdGltYXRlIGhhcyBiZWVuIHJlZHVjZWQgdG8gNzEwLDAwMCBmcm9tIDczNSwwMDAgdG9ubmVzIChsaW50IGJhc2lzKSwgdGhlIFUuUy4gQWdyaWN1bHR1cmUgRGVwYXJ0bWVudCdzIG9mZmljZXIgaW4gU2FvIFBhdWxvIHNhaWQgaW4gYSBmaWVsZCByZXBvcnQuICAgICBUaGUgcmVwb3J0LCBkYXRlZCBBcHJpbCA3LCBzYWlkIHRoZSByZWR1Y3Rpb24gaXMgYmFzZWQgb24gYW4gZXhwZWN0ZWQgc21hbGxlciBoYXJ2ZXN0IGluIHRoZSBjZW50ZXItc291dGggcmVnaW9uLiAgICAgVGhlIGNlbnRlci1zb3V0aCBjcm9wIGlzIG5vdyBlc3RpbWF0ZWQgYXQgNTUwLDAwMCB0b25uZXMgLS0gMjUsMDAwIHRvbm5lcyBiZWxvdyB0aGUgcHJldmlvdXMgZXN0aW1hdGUuICAgICBIb3QsIGRyeSB3ZWF0aGVyIGR1cmluZyBwYXJ0IG9mIEphbnVhcnkgYW5kIGV4Y2Vzc2l2ZSByYWlucyBpbiBzb21lIGFyZWFzIGluIEZlYnJ1YXJ5IHJlZHVjZWQgeWllbGQgcHJvc3BlY3RzIGFuZCBtYXkgaGF2ZSBhZmZlY3RlZCBxdWFsaXR5LCB0aGUgcmVwb3J0IHNhaWQuICAgICBOZWFybHkgNjAgcGN0IG9mIHRoZSBjcm9wIGhhcyBiZWVuIGhhcnZlc3RlZCBpbiBQYXJhbmEgYW5kIHNsaWdodGx5IGxlc3MgaW4gU2FvIFBhdWxvLCBpdCBzYWlkLiBDb3R0b24gZW50ZXJpbmcgZ2lucyBpcyBvZiBmYWlybHkgZ29vZCBxdWFsaXR5LCBhY2NvcmRpbmcgdG8gdHJhZGUgc291cmNlcywgaXQgc2FpZC4gIFJldXRlciAzOwoxOTg3MDQwOQlCUkFaSUwgU09ZQkVBTiBZSUVMRFMgU0VFTiBBVkVSQUdFIC0gVVNEQSBSRVBPUlQgQmFzZWQgb24gZmllbGQgdHJhdmVsIGluIHRoZSBCcmF6aWxpYW4gc3RhdGUgb2YgUGFyYW5hLCBzb3liZWFuIHlpZWxkcyBzaG91bGQgYmUgYWJvdXQgYXZlcmFnZSBvciAyLjAgdG8gMi4yIHRvbm5lcyBwZXIgaGVjdGFyZSwgdGhlIFUuUy4gQWdyaWN1bHR1cmUgRGVwYXJ0bWVudCdzIG9mZmljZXIgaW4gU2FvIFBhdWxvIHNhaWQgaW4gYSBmaWVsZCByZXBvcnQuICAgICBUaGUgcmVwb3J0LCBkYXRlZCBNYXJjaCAyNCwgbm90ZWQgUGFyYW5hIGFjY291bnRzIGZvciBhYm91dCAyMCB0byAyNCBwY3Qgb2YgQnJhemlsJ3MgdG90YWwgc295YmVhbiBjcm9wLiAgICAgSXQgc2FpZCBnZW5lcmFsbHkgZmF2b3JhYmxlIHdlYXRoZXIgZnJvbSBlYXJseSBEZWNlbWJlciB0aHJvdWdoIEZlYnJ1YXJ5IGhlbHBlZCBjb21wZW5zYXRlIGZvciBlYXJsaWVyIGRyeW5lc3MuICAgICBIb3dldmVyLCBob3QsIGRyeSB3ZWF0aGVyIGR1cmluZyB0aGUgcGFzdCAyMCB0byAzMCBkYXlzIGZvbGxvd2VkIGJ5IGFuIHVuc2Vhc29uYWJseSBicmllZiBjb2xkIHNwZWxsIGR1cmluZyB0aGUgc2Vjb25kIHdlZWsgb2YgbWFyY2ggaGFzIHJhaXNlZCBjb25jZXJuIGFib3V0IGxhdGUgcGxhbnRlZCBzb3liZWFucyB3aGljaCBhcmUgc3RpbGwgaW1tYXR1cmUsIGJ1dCB0aGUgaW1wYWN0IG1heSBiZSBsb2NhbGl6ZWQsIHRoZSByZXBvcnQgc2FpZC4gICAgIFRoZSBjb3JuIGNyb3AgaXMgZXhwZWN0ZWQgdG8gYmUgYSByZWNvcmQgYW5kIHdpbGwgY3JlYXRlIHNlcmlvdXMgc3RvcmFnZSBwcm9ibGVtcywgdGhlIHJlcG9ydCBzYWlkLiAgICAgRHVlIHRvIGZhdm9yYWJsZSBzdXBwb3J0IHByaWNlcywgY29ybiBhcmVhIGluY3JlYXNlZCBieSBtb3JlIHRoYW4gMjUgcGN0IGF0IHRoZSBleHBlbnNlIG9mIHNveWJlYW5zLCBhbmQgeWllbGRzIGFyZSBleHBlY3RlZCB0byBiZSBhYm92ZSBhdmVyYWdlLCBpdCBzYWlkLiAgICAgRHVlIHRvIGxhdGUgcGxhbnRpbmdzIG9ubHkgYWJvdXQgMjAgcGN0IG9mIHRoZSBjb3JuIGNyb3AgY3JvcCBoYXMgYmVlbiBoYXJ2ZXN0ZWQuICAgICBEdXJpbmcgdGhlIGZpZWxkIHRyaXAgbG9uZyB0cnVjayBsaW5lcyB3ZXJlIG5vdGVkIGF0IGdyYWluIGVsZXZhdG9ycyB3aGVyZSBwcmVmZXJlbmNlIGlzIGdpdmVuIHRvIHNveWJlYW5zIG92ZXIgY29ybiwgdGhlIHJlcG9ydCBzYWlkLiAgICAgTmV3IGNyb3Agd2hlYXQgcGxhbnRpbmdzIGFyZSBleHBlY3RlZCB0byBkZWNsaW5lICAtLSBQYXJhbmEgYWNjb3VudHMgZm9yIGFib3V0IDYwIHBjdCBvZiB0b3RhbCBwcm9kdWN0aW9uLiBNYWpvciByZWFzb25zIGZvciB0aGUgZGVjbGluZSBhcmUgZXhwZWN0ZWQgcmVkdWNlZCBnb3Zlcm5tZW50IHN1cHBvcnQgcHJpY2UgYW5kIGdvb2Qgc3VtbWVyIGNyb3AgaGFydmVzdHMuICBSZXV0ZXIgMzsKMTk4NzA0MDkJQlJBWklMSUFOIFNPWSBSQUlORkFMTCBUSEUgRk9MTE9XSU5HIFJBSU5GQUxMIFdBUyBSRUNPUkRFRCBJTiBUSEUgMjQgSE9VUlMgVVAgVE8gKDEyMDApIEdNVCBUT0RBWSAgICAgUEFSQU5BIFNUQVRFOiBDQVNDQVZFTCBOSUwsIFBPTlRBIEdST1NTQSBOSUwsQ0FNUE8gTU9VUkFPIE5JTCwgTE9ORFJJTkEgTklMLCBNQVJJTkdBIE5JTC4gICAgIFJJTyBHUkFORE8gRE8gU1VMIFNUQVRFOiBQQVNTTyBGVU5ETyBOSUwsIFNBTlRBIE1BUklBIDcuMCBNSUxMSU1FVFJFUywgQ1JVWiBBTFRBIDguNSBNTSwgU0FPIExVSVogR09OWkFHQSA0LjQgTU0uIFJFVVRFUiAzOwoxOTg3MDQwOQlCUkVOREEgTUlORVMgU0VMTElORyBLRVJSIEFERElTT04gU0hBUkVTIDxCcmVuZGEgTWluZXMgTHRkPiBzYWlkIGl0IHNvbGQgMiw4MzAsMzkwIDxLZXJyIEFkZGlzb24gTWluZXMgTHRkPiBzaGFyZXMgdG8gYSBncm91cCBvZiB1bmRlcndyaXRlcnMgbGVkIGJ5IFdvb2QgR3VuZHkgSW5jIGFuZCBCcm93biwgQmFsZHdpbiBOaXNrZXIgTHRkIGZvciByZWRpc3RyaWJ1dGlvbi4gICAgIEZpbmFuY2lhbCB0ZXJtcyB3ZXJlIHVuZGlzY2xvc2VkLiAgUmV1dGVyIDM7CjE5ODcwNDA5CUJSSVRJU0ggQUlSV0FZUyBJU1NVRVMgMTAwIE1MTiBTVEcgRVVST0JPTkQgQnJpdGlzaCBBaXJ3YXlzIFBsYyA8QkFCLkw+IGlzIGlzc3VpbmcgYSAxMDAgbWxuIHN0ZyBldXJvYm9uZCBkdWUgTWF5IDYsIDE5OTcsIHBheWluZyA5LTEvMiBwY3QgYW5kIHByaWNlZCBhdCAxMDEtMS8yLCBsZWFkIG1hbmFnZXIgVW5pb24gQmFuayBvZiBTd2l0emVybGFuZCBzYWlkLiAgICAgVGhlIG5vbi1jYWxsYWJsZSBib25kIGlzIGF2YWlsYWJsZSBpbiBkZW5vbWluYXRpb25zIG9mIDEsMDAwIGFuZCAxMCwwMDAgc3RnIGFuZCB3aWxsIGJlIGxpc3RlZCBpbiBMb25kb24uIFRoZSBzZWxsaW5nIGNvbmNlc3Npb24gaXMgMS0xLzQgcGN0IHdoaWxlIG1hbmFnZW1lbnQgYW5kIHVuZGVyd3JpdGluZyBjb21iaW5lZCBwYXlzIDMvNCBwY3QuICAgICBQYXltZW50IGRhdGUgaXMgTWF5IDYuICBSRVVURVIgMzsKMTk4NzA0MDkJQlVOREVTQkFOSyBTRUVTIE5PIENIQU5HRSBJTiBNT05FVEFSWSBDT1VSU0UgVGhlIEJ1bmRlc2Jhbmsgc2VlcyBubyBjdXJyZW50IHJlYXNvbiB0byBjaGFuZ2UgbW9uZXRhcnkgY291cnNlLCB2aWNlLXByZXNpZGVudCBIZWxtdXQgU2NobGVzaW5nZXIgdG9sZCBSZXV0ZXJzIGluIGEgdGVsZXBob25lIGludGVydmlldy4gICAgIFNjaGxlc2luZ2VyIHdhcyByZXNwb25kaW5nIHRvIHF1ZXN0aW9ucyBmb2xsb3dpbmcgcmVtYXJrcyB5ZXN0ZXJkYXkgYnkgQnVuZGVzYmFuayBib2FyZCBtZW1iZXIgQ2xhdXMgS29laGxlciBhbmQgV2VzdCBCZXJsaW4gc3RhdGUgY2VudHJhbCBiYW5rIHByZXNpZGVudCBEaWV0ZXIgSGlzcywgd2hpY2gsIGRlYWxlcnMgc2FpZCwgcmV2aXZlZCBzb21lIHNwZWN1bGF0aW9uIHRoYXQgR2VybWFuIGludGVyZXN0IHJhdGUgY3V0cyBtYXkgb25jZSBhZ2FpbiBiZSB1bmRlciBkaXNjdXNzaW9uLiAgICAgU2NobGVzaW5nZXIgc2FpZCBoZSBoYWQgbm8gY29tbWVudCBvbiB0aGUgcmVtYXJrcyBvZiBoaXMgdHdvIGNlbnRyYWwgYmFuayBjb3VuY2lsIGNvbGxlYWd1ZXMuICAgICBCdXQgaGUgYWRkZWQgdGhhdCB0aGUgbGFzdCBjZW50cmFsIGJhbmsgY291bmNpbCBtZWV0aW5nIG9uIEFwcmlsIDIgaGFkIGRpc2N1c3NlZCB0aGUgZWNvbm9taWMgc2l0dWF0aW9uIHdpdGggYSBtb29kIG9mICJzdWJkdWVkIG9wdGltaXNtLCIgcGFydGljdWxhcmx5IGluZmx1ZW5jZWQgYnkgdGhlIG5ld3MgYnJvdWdodCBieSBzZXZlcmFsIHN0YXRlIGNlbnRyYWwgYmFuayBwcmVzaWRlbnRzLiAgICAgIk11Y2ggaXMgZ29pbmcgYmV0dGVyIHRoYW4gdGhlIGltcHJlc3Npb24gZ2FpbmVkIGJ5IHRoZSBwdWJsaWMgZnJvbSB0aGUgSmFudWFyeSBmaWd1cmVzLCB3aGljaCBoYXZlIGJlZW4gaW4gdGhlIG1lYW50aW1lIHN1cGVyc2VkZWQsIiBoZSBzYWlkLiAgICAgR2VybWFuIEphbnVhcnkgaW5kdXN0cmlhbCBvdXRwdXQgZmVsbCAzLjAgcGN0IGFmdGVyIGEgZGVjbGluZSBvZiAwLjkgcGN0IGluIERlY2VtYmVyLiBOZXcgaW5kdXN0cnkgb3JkZXJzIGZlbGwgMS45IHBjdCBhZnRlciB0aGV5IGhhZCBiZWVuIHVuY2hhbmdlZCBpbiBEZWNlbWJlci4gICAgIEJhbmsgZWNvbm9taXN0cyBzYWlkIHRoYXQgdGhlIHR3byB0b2dldGhlciBzaG93ZWQgdGhlIGVjb25vbXkgd291bGQgZWl0aGVyIHN0YWduYXRlIG9yIGNvbnRyYWN0IGluIHRoZSBmaXJzdCBxdWFydGVyIG9mIDE5ODcuICAgICBBc2lkZSBmcm9tIHRoZSBlY29ub21pYyBkZXZlbG9wbWVudHMsIFNjaGxlc2luZ2VyIGFkZGVkLCBhIHN0ZWFkeSBtb25ldGFyeSBjb3Vyc2Ugd2FzIGltcG9ydGFudCB0byBob2xkIHRoZSBkb2xsYXIvbWFyayByYXRlIGFyb3VuZCBjdXJyZW50IGxldmVscyBhcyBCdW5kZXNiYW5rIHByZXNpZGVudCBLYXJsIE90dG8gUG9laGwgaGFkIHNhaWQgd2hpbGUgYXR0ZW5kaW5nIHRoZSBXYXNoaW5ndG9uIFdvcmxkIEJhbmsvSU1GIG1lZXRpbmcuICAgICBBc2tlZCwgaG93ZXZlciwgaWYgdGhlIEJ1bmRlc2JhbmsgY291bGQgbW92ZSB0byBjdXQgcmF0ZXMgb24gcmVwdXJjaGFzZSBhZ3JlZW1lbnRzIGF0IHRoZSBzZXR0aW5nIG9mIHRoZSBuZXh0IHJlcHVyY2hhc2UgdGVuZGVyLCBkdWUgbmV4dCBUdWVzZGF5LCBTY2hsZXNpbmdlciBzYWlkLCAiU2luY2UgdGhlIGNlbnRyYWwgYmFuayBjb3VuY2lsIGdpdmVzIGl0cyBvcGluaW9uIG9uIHRoaXMgdGhlbWUgb25seSBldmVyeSAxNCBkYXlzLCB0aGlzIGlzIGhhcmRseSBwcm9iYWJsZS4iICAgICBSZXNwb25kaW5nIHRvIHRoZSBxdWVzdGlvbiB3aGV0aGVyIHRoZSBCdW5kZXNiYW5rIGhhZCBtb3ZlZCBhd2F5IGZyb20gYSBwb2xpY3kgb2YgdGFyZ2V0dGluZyBtb25ldGFyeSBncm93dGggdG93YXJkIG9uZSBvZiB0YXJnZXR0aW5nIGN1cnJlbmN5IHJhdGVzLCBTY2hsZXNpbmdlciBzYWlkIGhlIGNvdWxkIGhhdmUgbm8gY29tbWVudCBvbiB0aGUgc3ViamVjdCB3aGlsZSBuZWdvdGlhdGlvbnMgd2VyZSBzdGlsbCBpbiBwcm9ncmVzcyBpbiBXYXNoaW5ndG9uLiAgUkVVVEVSIDM7CjE5ODcwNDA5CUJVUkxJTkdUT04gSU5EVVNUUklFUyA8QlVSPiBTRUxMUyBDT05WRVJUSUJMRVMgQnVybGluZ3RvbiBJbmR1c3RyaWVzIEluYyBpcyByYWlzaW5nIDc1IG1sbiBkbHJzIHRocm91Z2ggYW4gb2ZmZXJpbmcgb2YgY29udmVydGlibGUgc3Vib3JkaW5hdGVkIGRlYmVudHVyZXMgZHVlIDIwMTIgd2l0aCBhIDYtMS80IHBjdCBjb3Vwb24gYW5kIHBhciBwcmljaW5nLCBzYWlkIGxlYWQgbWFuYWdlciBLaWRkZXIsIFBlYWJvZHkgYW5kIENvIEluYy4gICAgIFRoZSBkZWJlbnR1cmVzIGFyZSBjb252ZXJ0aWJsZSBpbnRvIHRoZSBjb21wYW55J3MgY29tbW9uIHN0b2NrIGF0IDYzLjUwIGRscnMgcGVyIHNoYXJlLCByZXByZXNlbnRpbmcgYSBwcmVtaXVtIG9mIDE4LjEgcGN0IG92ZXIgdGhlIHN0b2NrIHByaWNlIHdoZW4gdGVybXMgb24gdGhlIGRlYnQgd2VyZSBzZXQuICAgICBOb24tY2FsbGFibGUgZm9yIHRocmVlIHllYXJzLCB0aGUgaXNzdWUgaXMgcmF0ZWQgQmEtMiBieSBNb29keSdzIEludmVzdG9ycyBTZXJ2aWNlIEluYyBhbmQgQkJCIGJ5IFN0YW5kYXJkIGFuZCBQb29yJ3MgQ29ycC4gTWVycmlsbCBMeW5jaCBDYXBpdGFsIE1hcmtldHMgYW5kIFNhbG9tb24gQnJvdGhlcnMgSW5jIGNvLW1hbmFnZWQgdGhlIGRlYWwuICBSZXV0ZXIgMzsKMTk4NzA0MDkJQlVSTUFIIE9JTCBQUk9TUEVDVFMgUkVNQUlOIEZBVk9VUkFCTEUgVGhlIGN1cnJlbnQgeWVhciBoYXMgb3BlbmVkIHdlbGwsIHdpdGggdHJhZGluZyBwcm9zcGVjdHMgcmVtYWluaW5nIGZhdm91cmFibGUsIEJ1cm1haCBPaWwgQ28gUGxjIDxCVVJNLkw+IHNhaWQgaW4gYSBzdGF0ZW1lbnQgd2l0aCBpdHMgMTk4NiByZXN1bHRzLiAgICAgVGhlIGNvbXBhbnkgcGxhbnMgdG8gbWFpbnRhaW4gYSBzdGVhZHkgcmF0ZSBvZiBpbnZlc3RtZW50IGluIGl0cyBtYXJrZXRpbmcgb3BlcmF0aW9ucyBhbmQgdG8gb2J0YWluIGltcHJvdmVkIHByb2ZpdCBtYXJnaW5zIG9uIGl0cyBsaXF1aWZpZWQgbmF0dXJhbCBnYXMsIExORywgcHJvamVjdC4gICAgIEJ1cm1haCBoYXMgdGhlIGZpbmFuY2lhbCBjYXBhY2l0eSB0byBjb250aW51ZSBtYWtpbmcgYWNxdWlzaXRpb25zIHdpdGhpbiBpdHMgYnVzaW5lc3Mgc2VjdG9ycywgaXQgYWRkZWQuIFRoZSByYXRpb25hbGlzYXRpb24gcHJvZ3JhbW1lLCBpbmNsdWRpbmcgc2FsZSBvZiB0aGUgQmFoYW1hcyBvaWwgdGVybWluYWwgYW5kIGFsbCBwZXJpcGhlcmFsIGFjdGl2aXRpZXMsIGlzIG5vdyBjb21wbGV0ZS4gICAgIFByZS10YXggcHJvZml0IGZvciAxOTg2IHJvc2UgdG8gMTA1LjkgbWxuIHN0ZyBmcm9tIDc5LjYgbWxuLiBSRVVURVJeTSAzOwoxOTg3MDQwOQlDLk8uTS5CLiA8Q01DTz4gTUFLRVMgQUNRVUlTSVRJT04gQy5PLk0uQi4gQ28gc2FpZCBpdCBhY3F1aXJlZCBmb3IgOC43IG1sbiBkbHJzIHRoZSBwcmluY2lwYWwgYXNzZXRzIG9mIE5hdGlvbmFsIFRlY2ggSW5kdXN0cmllcyBJbmMgYW5kIFRlbGtvbiBDb3JwLiAgICAgVGhlIGNvbXBhbmllcyBhcmUgZW5nYWdlZCBpbiBzZXJ2aWNpbmcsIHNhbGVzIGFuZCB0ZWxlbWFya2V0aW5nIG9mIGNvbnN1bWVyIGVsZWN0cm9uaWMgbWVyY2hhbmRpc2UuICBSZXV0ZXIgMzsKMTk4NzA0MDkJQy5PLk0uQi4gPENNQ08+IE1BS0VTIEFDUVVJU0lUSU9OIEMuTy5NLkIuIENvIHNhaWQgaXQgaGFzIGFjcXVpcmVkIHRoZSBwcmluY2lwYWwgYXNzZXRzIG9mIE5hdGlvbmFsIFRlY2ggSW5kdXN0cmllcyBJbmMgYW5kIFRlbGtvbSBDb3JwLCB3aGljaCBhcmUgZW5nYWdlZCBpbiB0aGUgc2FsZSBhbmQgdGVsZW1hcmtldGluZyBvZiBjb25zdW1lciBlbGVjdHJvbmljIG1lcmNoYW5kaXNlIGFuZCBkbyBidXNpbmVzcyBhcyBIb3VzZSBvZiBJbXBvcnRzIGFuZCBOLkwuIEluZHVzdHJpZXMgcmVzcGVjdGl2ZWx5LiAgICAgVGhlIGNvbXBhbnkgc2FpZCBpdCBwYWlkIGEgdG90YWwgb2YgOCw3MDAsMDAwIGRscnMsIGluY2x1ZGluZyB0aGUgYXNzdW1wdGlvbiBvZiBsaWFiaWxpdGllcy4gICAgIE5hdGlvbmFsIFRlY2ggaGFkIHNhbGVzIG9mIGFib3V0IDIzIG1sbiBkbHJzIGZvciAxOTg2LCBpdCBzYWlkLiAgUmV1dGVyIDM7CjE5ODcwNDA5CUNBRElMTEFDIEZBSVJWSUVXIFNBWVMgSVQgUkVDRUlWRUQgVEFLRU9WRVIgQklEUyA8Q2FkaWxsYWMgRmFpcnZpZXcgQ29ycCBMdGQ+IHNhaWQgaXQgcmVjZWl2ZWQgcHJvcG9zYWxzIHRvIGFjcXVpcmUgdGhlIGNvbXBhbnksIGZvbGxvd2luZyBpdHMgYW5ub3VuY2VtZW50IGxhc3QgQXVndXN0IHRoYXQgaXQgaGFkIHJldGFpbmVkIGludmVzdG1lbnQgZGVhbGVycyB0byBzb2xpY2l0IG9mZmVycyBmb3IgYWxsIG91dHN0YW5kaW5nIGNvbW1vbiBzaGFyZXMuICAgICBDYWRpbGxhYyBGYWlydmlldyBzYWlkIHRoZSBvZmZlcnMgYXJlIHN1YmplY3QgdG8gY2xhcmlmaWNhdGlvbiBhbmQgbmVnb3RpYXRpb24gYW5kIG9mZmVyZWQgbm8gZnVydGhlciBkZXRhaWxzLiAgUmV1dGVyIDM7CjE5ODcwNDA5CUNBTkFEQSBGRUJSVUFSWSBUUkFERSBTVVJQTFVTIDEuMiBCSUxMSU9OIERMUlMgQ2FuYWRhIGhhZCBhIHRyYWRlIHN1cnBsdXMgb2YgMS4yNSBiaWxsaW9uIGRscnMgaW4gRmVicnVhcnkgY29tcGFyZWQgd2l0aCBhbiB1cHdhcmQgcmV2aXNlZCA2MjMgbWxuIGRscnMgc3VycGx1cyBpbiBKYW51YXJ5LCBTdGF0aXN0aWNzIENhbmFkYSBzYWlkLiAgICAgVGhlIEphbnVhcnkgc3VycGx1cyBvcmlnaW5hbGx5IHdhcyByZXBvcnRlZCBhdCA1MzMgbWxuIGRscnMuIFRoZSBGZWJydWFyeSBzdXJwbHVzIGxhc3QgeWVhciB3YXMgMTg5IG1sbiBkbHJzLiAgICAgRmVicnVhcnkgZXhwb3J0cywgc2Vhc29uYWxseSBhZGp1c3RlZCwgd2VyZSAxMC40NCBiaWxsaW9uIGRscnMgYWdhaW5zdCA5Ljg1IGJpbGxpb24gaW4gSmFudWFyeSBhbmQgMTAuMDUgYmlsbGlvbiBpbiBGZWJydWFyeSwgMTk4Ni4gICAgIEZlYnJ1YXJ5IGltcG9ydHMgd2VyZSA5LjE5IGJpbGxpb24gZGxycyBhZ2FpbnN0IDkuMjMgYmlsbGlvbiBpbiBKYW51YXJ5IGFuZCA5Ljg2IGJpbGxpb24gaW4gRmVicnVhcnksIDE5ODYuICBSZXV0ZXIgMzsKMTk4NzA0MDkJQ0FOQURBIFRSQURFIFJJU0UgU0VFTiBBUyBTVEFSVCBPRiBSRUNPVkVSWSBDYW5hZGEncyB0cmFkZSBwaWN0dXJlIGhhcyBicmlnaHRlbmVkIGNvbnNpZGVyYWJseSwgdW5kZXJzY29yaW5nIGVjb25vbWlzdHMnIHByZWRpY3Rpb25zIHRoZSBzZWN0b3Igd291bGQgcG9zdCBhIGxvbmcgYXdhaXRlZCByZWNvdmVyeSB0aGlzIHllYXIuICAgICBUaGUgZmVkZXJhbCBnb3Zlcm5tZW50IHJlcG9ydGVkIHRvZGF5IHRoYXQgdGhlIG1vbnRobHkgc3VycGx1cyBzb2FyZWQgdG8gMS4yNSBiaWxsaW9uIENhbmFkaWFuIGRscnMgaW4gRmVicnVhcnksIGRvdWJsZSBKYW51YXJ5J3MgNjIzIG1sbiBkbHJzIHN1cnBsdXMgYW5kIHNoYXJwbHkgaGlnaGVyIHRoYW4gRmVicnVhcnkgMTk4NidzIDE4OSBtbG4gZGxyIHRhbGx5LiAgICAgIkhvcGVmdWxseSBpdCdzIHRoZSBiZWdpbm5pbmcgb2YgYSB0cmVuZCwiIHNhaWQgUmljaGFyZHNvbiBHcmVlbnNoaWVsZHMgb2YgQ2FuYWRhIEx0ZCBlY29ub21pc3QgU3VzYW4gQ2xhcmsgaW4gVG9yb250by4gICAgIEVjb25vbWlzdHMgZ2VuZXJhbGx5IGRvbid0IGV4cGVjdCBzdWNoIGxhcmdlIGdhaW5zIG92ZXIgdGhlIG5leHQgbW9udGhzLCBidXQgYXJlIGxvb2tpbmcgZm9yIGFuIHVwd2FyZCB0cmVuZCB0aHJvdWdob3V0IHRoZSB5ZWFyLiAgICAgIldlIHRob3VnaHQgdGhlIHRyYWRlIGJhbGFuY2Ugd291bGQgaW1wcm92ZSAuLi4gb3ZlciB0aGUgeWVhciwgYW5kIGl0IGNlcnRhaW5seSBsb29rcyBhcyBpZiB0aGlzIG1vcm5pbmcncyBmaWd1cmUgaXMgaW5kaWNhdGl2ZSBvZiB0aGF0LCIgY29tbWVudGVkIGVjb25vbWlzdCBKYW1lcyBEb25lZ2FuIGF0IHRoZSBUb3JvbnRvIHNlY3VyaXRpZXMgZmlybSBvZiBNaWRsYW5kIERvaGVydHkgTHRkLiAgICAgU3RhdGlzdGljcyBDYW5hZGEgcmVwb3J0ZWQgdGhlIHN1cnBsdXMgd2FzIGRyaXZlbiBieSBhIDIzIHBjdCBnYWluIGluIGF1dG9tb2JpbGUgcHJvZHVjdCBleHBvcnRzIHRvIGEgcmVjb3JkIDMuMiBiaWxsaW9uIGRscyBpbiB0aGUgbW9udGguICAgICAiUmVjb3ZlcnkgaW4gdGhlIGF1dG9tb3RpdmUgc2VjdG9yIGhlbHBlZCBwdXNoIHRoZSB2YWx1ZSBvZiBleHBvcnRzIHVwIGJ5IDUuOSBwY3QgaW4gRmVicnVhcnksIiB0aGUgYWdlbmN5IHNhaWQgaW4gaXRzIG1vbnRobHkgcmVwb3J0LiAgICAgVG90YWwgZXhwb3J0cyBleHBhbmRlZCB0byAxMC40NCBiaWxsaW9uIGRscnMgZnJvbSA5Ljg1IGJpbGxpb24gZGxycyBpbiBGZWJydWFyeSwgd2hpbGUgaW1wb3J0cyBzbGlwcGVkIHRvIDkuMTkgYmlsbGlvbiBkbHJzIGZyb20gOS4yMyBiaWxsaW9uIGRscnMuICAgICBFY29ub21pc3RzIGhhdmUgcHJlZGljdGVkIHRoZSAxOTg3IHRyYWRlIHN1cnBsdXMgd291bGQgZW5kIHVwIHRocmVlIHRvIGZpdmUgYmlsbGlvbiBkbHJzIGhpZ2hlciB0aGFuIGxhc3QgeWVhcidzIGRpc21hbCAxMC4xIGJpbGxpb24gZGxyIHRvdGFsLiBJbiAxOTg1IHRoZSBzdXJwbHVzIHdhcyAxNy40OCBiaWxsaW9uIGRscnMuICAgICBNb25leSBtYXJrZXQgYW5hbHlzdHMgc2FpZCB0aGUgcG9zaXRpdmUgdHJhZGUgbmV3cyB0b3VjaGVkIG9mZiBhIG1vZGVzdCByYWxseSBpbiB0aGUgQ2FuYWRpYW4gZG9sbGFyLCB3aGljaCByb3NlIHRvIDc2Ljg1IFUuUy4gY3RzIG9uIE5vcnRoIEFtZXJpY2FuIG1hcmtldHMgZWFybHkgdGhpcyBtb3JuaW5nIGFmdGVyIGNsb3NpbmcgYXQgNzYuNTggY3RzIFdlZG5lc2RheS4gICAgIFRoZSBjdXJyZW5jeSB3YXMgaG92ZXJpbmcgYXJvdW5kIDc2Ljc4IGN0cyBpbiBlYXJseSBhZnRlcm5vb24gdHJhZGluZy4gICAgIEVjb25vbWlzdHMgaGF2ZSBiZWVuIGJhbmtpbmcgb24gYW4gaW1wcm92ZWQgdHJhZGUgcGVyZm9ybWFuY2UgdGhpcyB5ZWFyIHRvIHN0aW11bGF0ZSBhbiBvdGhlcndpc2Ugc2x1Z2dpc2ggQ2FuYWRpYW4gZWNvbm9teS4gICAgIE1vbmV5IG1hcmtldCBhbmFseXN0cyBzYWlkIHRoZSBwb3NpdGl2ZSB0cmFkZSBuZXdzIHRvdWNoZWQgb2ZmIGEgbW9kZXN0IHJhbGx5IGluIHRoZSBDYW5hZGlhbiBkb2xsYXIsIHdoaWNoIHJvc2UgdG8gNzYuODUgVS5TLiBjdHMgb24gTm9ydGggQW1lcmljYW4gbWFya2V0cyBlYXJseSB0aGlzIG1vcm5pbmcgYWZ0ZXIgY2xvc2luZyBhdCA3Ni41OCBjdHMgV2VkbmVzZGF5LiAgICAgVGhlIGN1cnJlbmN5IHdhcyBob3ZlcmluZyBhcm91bmQgNzYuNzggY3RzIGluIGVhcmx5IGFmdGVybm9vbiB0cmFkaW5nLiAgICAgRWNvbm9taXN0cyBoYXZlIGJlZW4gYmFua2luZyBvbiBhbiBpbXByb3ZlZCB0cmFkZSBwZXJmb3JtYW5jZSB0aGlzIHllYXIgdG8gc3RpbXVsYXRlIGFuIG90aGVyd2lzZSBzbHVnZ2lzaCBDYW5hZGlhbiBlY29ub215LiAgICAgVGhleSBzYXkgdGhlIGNvdW50cnkncyBjb25zdW1lcnMsIHdobyBoYXZlIGJlZW4gc3BlbmRpbmcgYXQgYSB0b3JyaWQgcGFjZSBpbiByZWNlbnQgeWVhcnMsIHdpbGwgc2hhcnBseSBjdXJ0YWlsIG91dGxheXMgdGhpcyB5ZWFyIGFuZCB0aGlzIHNob3VsZCBoZWxwIGN1cnRhaWwgdGhlIGZsb3cgb2YgaW1wb3J0cyBpbnRvIHRoZSBjb3VudHJ5LiAgICAgTWVhbndoaWxlLCBkZW1hbmQgZm9yIENhbmFkaWFuIGV4cG9ydHMgaW4gdGhlIFVuaXRlZCBTdGF0ZXMsIGJ5IGZhciB0aGUgY291bnRyeSdzIGxhcmdlc3QgbWFya2V0LCBpcyBleHBlY3RlZCB0byBiZSBzdHJvbmcgYXMgYSByZXN1bHQgb2YgYSBwcm9qZWN0ZWQgcmlzZSBpbiBBbWVyaWNhbiBjb25zdW1lciBzcGVuZGluZyBhbmQgdGhlIHJlbGF0aXZlbHkgbG93IHZhbHVlIG9mIHRoZSBDYW5hZGlhbiBjdXJyZW5jeS4gICAgICJXZSBtYWludGFpbiB3aGF0J3MgZ29pbmcgdG8gZHJpdmUgQ2FuYWRhJ3MgZXhwb3J0IHBlcmZvcm1hbmNlIGlzIGluY29tZSBncm93dGggaW4gdGhlIFUuUy4sIiBzYWlkIE1pZGxhbmQncyBEb25lZ2FuLiAgICAgQnV0IGF0IHRoZSBCYW5rIG9mIE5vdmEgU2NvdGlhLCBkZXB1dHkgY2hpZWYgZWNvbm9taXN0IFdhcnJlbiBKZXN0aW4gd2FzIGxlc3Mgb3B0aW1pc3RpYyBhYm91dCB0aGUgVS5TLiBvdXRsb29rIGFuZCBzYWlkIGl0IGNvdWxkIGJlIGEgbWlzdGFrZSB0byByZWFkIHRvbyBtdWNoIGludG8gRmVicnVhcnkncyB0cmFkZSB1cHR1cm4uICAgICBKZXN0aW4gc2FpZCwgIkdpdmVuIHRoZSBmYWN0IHRoZSBVLlMuIGVjb25vbXkgaXMgc2hvd2luZyBzaWducyBvZiB3ZWFrZW5pbmctLXBhcnRpY3VsYXJseSBjYXIgc2FsZXMtLWl0IHdvdWxkIGluZGljYXRlIHRoYXQgcGFydCBvZiB0aGUgc3RyZW5ndGggKGluIENhbmFkYSdzIHRyYWRlIGZpZ3VyZXMpIGlzIHByb2JhYmx5IHRyYW5zaXRvcnkuIiAgUmV1dGVyIDM7CjE5ODcwNDA5CUNBTkFESUFOIEJBTksgUkFURSBSSVNFUyBJTiBXRUVLIENhbmFkYSdzIGtleSBiYW5rIHJhdGUgcm9zZSB0byA3LjIwIHBjdCBmcm9tIDcuMTUgcGN0IHRoZSB3ZWVrIGJlZm9yZSwgQmFuayBvZiBDYW5hZGEgc2FpZC4gICAgIEJhbmsgcmF0ZSBpcyBzZXQgMS80IHBlcmNlbnRhZ2UgcG9pbnQgYWJvdmUgdGhlIGF2ZXJhZ2UgeWllbGQgb24gdGhlIHdlZWtseSBpc3N1ZSBvZiA5MS1kYXkgdHJlYXN1cnkgYmlsbHMuIFRoaXMgd2VlaydzIHlpZWxkIHdhcyA2Ljk1IHBjdCBjb21wYXJlZCB3aXRoIHRoZSBwcmV2aW91cyB3ZWVrJ3MgNi45MCBwY3QuICAgICBUZW5kZXJzIHdlcmUgYWNjZXB0ZWQgZm9yIDIuNTUgYmlsbGlvbiBkbHJzIG9mIDkxLWRheSBiaWxscyBhdCBhbiBhdmVyYWdlIHByaWNlIG9mIDk4LjI5NiBkbHJzIGFnYWluc3QgOTguMzEwIGRscnMgbGFzdCB3ZWVrLiAgICAgVGhlIDEuNDAgYmlsbGlvbiBkbHJzIG9mIDE4Mi1kYXkgYmlsbHMgd2VyZSBwcmljZWQgYXQgYW4gYXZlcmFnZSA5Ni40ODggZGxycyBhZ2FpbnN0IDk2LjU0OSBkbHJzIGxhc3Qgd2VlaywgdG8geWllbGQgYW4gYXZlcmFnZSA3LjMwIHBjdCwgdmVyc3VzIDcuMTcgcGN0IGxhc3Qgd2Vlay4gICAgIFRoZSA1MDAgbWxuIGRscnMgb2YgMzY0LWRheSBiaWxscyB3ZXJlIHByaWNlZCBhdCBhbiBhdmVyYWdlIDkyLjk2OSBkbHJzIGFnYWluc3QgOTMuMTU5IGRscnMgbGFzdCB3ZWVrLCB0byB5aWVsZCBhbiBhdmVyYWdlIDcuNTggcGN0IHZlcnN1cyA3LjM4IHBjdCBsYXN0IHdlZWsuICAgICBUZW5kZXJzIHdpbGwgYmUgcmVjZWl2ZWQgbmV4dCB3ZWVrIGZvciAyLjUwIGJpbGxpb24gZGxycyBvZiAgOTEtZGF5IGJpbGxzLCAxLjQwIGJpbGxpb24gZGxycyBvZiAxODItZGF5IGJpbGxzIGFuZCA1MDAgbWxuIGRscnMgb2YgMzY0LWRheSBiaWxscy4gICAgICAgICAgICBSZXV0ZXIgMzsKMTk4NzA0MDkJQ0FOQU0gTUFOQUMgV0lOUyA4LjUgTUxOIERMUiBDT05UUkFDVCAoVGhlIENhbmFtIE1hbmFjIEdyb3VwIEluYykgc2FpZCBpdHMgQ2FuYW0gU3RlZWwgV29ya3MgdW5pdCByZWNlaXZlZCBhIGNvbnRyYWN0IHZhbHVlZCBhdCA4LjUgbWxuIGRscnMgdG8gc3VwcGx5IHN0ZWVsIHRydXNzZXMgdG8gKENhbnJvbiBJbmMpIGZvciBhIG5ldyBjYXIgcGxhbnQgaW4gSW5nZXJzb2xsLCBPbnRhcmlvLiAgICAgQ2FuYW0gTWFuYWMgc2FpZCBpdCB3aWxsIHByb2R1Y2UgdGhlIHRydXNzZXMgYXQgaXRzIFF1ZWJlYyBhbmQgT250YXJpbyBwbGFudHMgYW5kIGRlbGl2ZXJ5IHdpbGwgYmUgY29tcGxldGVkIGJ5IEF1Z3VzdC4gIFJldXRlciAzOwoxOTg3MDQwOQlDQU5OT04gSU5UJ0wgPENBTj4gU0VUUyBQSElMSVBQSU5FUyBGSUxNIFBBQ1QgQ2Fubm9uIEludGVybmF0aW9uYWwgc2FpZCA8Vml2YSBGaWxtcyBJbnRlcm5hdGlvbmFsPiBhZ3JlZWQgdG8gZXhjbHVzaXZlbHkgZGlzdHJpYnV0ZSBDYW5ub24gZmlsbXMgaW4gdGhlIFBoaWxpcHBpbmVzIGZvciB0aGUgbmV3IGZvdXIgeWVhcnMuICAgICBUaGUgY29tcGFueSBzYWlkIHRoZSBhZ3JlZW1lbnQgY292ZXJzIGJvdGggdGhlYXRyaWNhbCBhbmQgdmlkZW8gZGlzdHJpYnV0aW9uLiBUZXJtcyB3ZXJlIG5vdCBkaXNjbG9zZWQuICAgUmV1dGVyIDM7CjE5ODcwNDA5CUNBUkdJTEwgQ09ORklSTVMgV0hJVEUgU1VHQVIgU0FMRSBUTyBJTkRJQSBMb25kb24tYmFzZWQgdHJhZGVyIENhcmdpbGwgKFUuSy4pIEx0ZCBjb25maXJtZWQgaXQgc29sZCBvbmUgY2FyZ28gb2Ygd2hpdGUgc3VnYXIgdG8gSW5kaWEgZm9yIHNoaXBtZW50IEFwcmlsIDE1L01heSAxNSBhdCB5ZXN0ZXJkYXkncyB0ZW5kZXIuICAgICBQcmljZSBkZXRhaWxzIHdlcmUgbm90IGltbWVkaWF0ZWx5IGF2YWlsYWJsZSBidXQgc29tZSB0cmFkZXJzIHN1Z2dlc3RlZCBidXNpbmVzcyBoYWQgYmVlbiBkb25lIGFyb3VuZCAyMjAgZGxycyBhIHRvbm5lIGNpZi4gICAgIEluZGlhIHRlbmRlcmVkIGZvciBvbmUgb3IgdHdvIGNhcmdvZXMgb2Ygd2hpdGUgc3VnYXIuIFRoZXJlIHdhcyBubyBzcGVjaWZpYyByZXF1aXJlbWVudCBvbiBzaGlwcGluZyBwZXJpb2QuICBSRVVURVIgMzsKMTk4NzA0MDkJQ0NDIEdVQVJBTlRFRVMgVE8gSVJBUSBTV0lUQ0hFRCAtLVVTREEgVGhlIENvbW1vZGl0eSBDcmVkaXQgQ29ycG9yYXRpb24gKENDQykgaGFzIHRyYW5zZmVycmVkIDEyLjAgbWxuIGRscnMgaW4gY3JlZGl0IGd1YXJhbnRlZXMgcHJldmlvdXNseSBlYXJtYXJrZWQgZm9yIHNhbGVzIG9mIFUuUy4gaGF0Y2hpbmcgZWdncyBhbmQgNy4wIG1sbiBkbHJzIGluIGd1YXJhbnRlZXMgZm9yIGJyZWVkZXIgbGl2ZXN0b2NrIHRvIGluY3JlYXNlIGNvdmVyYWdlIG9uIHNhbGVzIG9mIFUuUy4gcHJvdGVpbiBjb25jZW50cmF0ZXMgdG8gSXJhcSwgdGhlIFUuUy4gQWdyaWN1bHR1cmUgRGVwYXJ0bWVudCBzYWlkLiAgICAgVGhlIGFjdGlvbiB3YXMgdGFrZW4gYXQgdGhlIHJlcXVlc3Qgb2YgSXJhcSdzIFN0YXRlIFRyYWRlIE9yZ2FuaXphdGlvbiBmb3IgR3JhaW5zIGFuZCBGb29kc3R1ZmZzIGFuZCByZWR1Y2VzIHRoZSBsaW5lIGZvciBoYXRjaGluZyBlZ2dzIHRvIHplcm8gYW5kIHRoZSBsaW5lIGZvciBicmVlZGVyIGxpdmVzdG9jayBmcm9tIDE1LjAgbWxuIGRscnMgdG8gOC4wIG1sbiBkbHJzLCB0aGUgZGVwYXJ0bWVudCBzYWlkLiAgICAgVGhlIGd1YXJhbnRlZSBsaW5lIGZvciBzYWxlcyBvZiBwcm90ZWluIGNvbmNlbnRyYXRlcyBoYXMgYmVlbiBpbmNyZWFzZWQgZnJvbSAyNS4wIG1sbiBkbHJzIHRvIDQ0LjAgbWxuIGRscnMsIGl0IHNhaWQuICAgICAgUmV1dGVyIDM7CjE5ODcwNDA5CUNDRiBSRVBPUlRTIDM0LjggUENUIFBST0ZJVCBCT09TVCwgU0hBUkUgU1BMSVQgU0VFTiBDcmVkaXQgQ29tbWVyY2lhbCBkZSBGcmFuY2UgPENDRlAuUEE+IHJlcG9ydGVkIGEgcGFyZW50IGNvbXBhbnkgbmV0IHByb2ZpdCB1cCAzNC44IHBjdCB0byAxNDAuMSBtbG4gZnJhbmNzIGZyb20gMTAzLjkgbWxuIGZyYW5jcyBhIGZldyB3ZWVrcyBiZWZvcmUgaXRzIGRlbmF0aW9uYWxpc2F0aW9uIGFyb3VuZCB0aGUgZW5kIG9mIHRoaXMgbW9udGguICAgICBPZmZpY2lhbCBzb3VyY2VzIHNhaWQgdGhlIGJhbmssIEZyYW5jZSdzIHNpeHRoIGxhcmdlc3QgaW4gdGVybXMgb2YgaXRzIGRlcG9zaXRzIGFuZCBzZXZlbnRoIGluIHRlcm1zIG9mIGl0cyBhc3NldHMsICBwbGFubmVkIGEgc2hhcmUgc3BsaXQgdG8gaW5jcmVhc2UgdGhlIG51bWJlciBvZiBzaGFyZXMgb24gb2ZmZXIgYWhlYWQgb2YgdGhlIHNhbGUgb2YgNDAgcGN0IG9mIGl0cyBvcmRpbmFyeSBzaGFyZSBjYXBpdGFsIHRvIHRoZSBwdWJsaWMsIG9mIDEwIHBjdCB0byBzdGFmZiBhbmQgMjAgcGN0IGFicm9hZC4gICAgIFByZXZpb3VzbHkgb25lIG9mIEZyYW5jZSdzIGJpZ2dlc3QgcHJpdmF0ZSBiYW5rcywgaXQgd2FzIG5hdGlvbmFsaXNlZCBieSB0aGUgU29jaWFsaXN0cyBpbiAxOTgyLiAgICAgVGhlIHNvdXJjZXMgc2FpZCBpdCB3YXMgdG9vIGVhcmx5IHRvIGdpdmUgZGV0YWlscyBvZiB0aGUgcGxhbm5lZCBzcGxpdCBvciBvZiB0aGUgc2hhcmUgcHJpY2UsIGJ1dCBjaXRlZCBBcHJpbCAyNyBhcyBhIGxpa2VseSBkYXRlIGZvciB0aGUgZmxvdGF0aW9uIGxhdW5jaC4gICAgIFNvIGZhciAzMCBwY3Qgb2YgdGhlIGdyb3VwJ3MgY2FwaXRhbCwgY3VycmVudGx5IGF0IDEwLjMzIG1sbiBzaGFyZXMgb2YgMTAwIGZyYW5jcyBub21pbmFsLCBoYXMgYmVlbiBvZmZlcmVkIGZvciBzYWxlIHRvIGxhcmdlIHByaXZhdGUgaW52ZXN0b3JzIHRvIGNvbnN0aXR1dGUgYSBzb2xpZCBjb3JlIG9mIGVpZ2h0IHRvIHRlbiBzaGFyZWhvbGRlcnMgYmVmb3JlIHRoZSBmbG90YXRpb24uICAgICBUaGUgcHJpdmF0ZSB0ZW5kZXIgb2ZmZXIgY2xvc2VzIG9uIEFwcmlsIDE2LCB3aGlsZSBhIDEyIG1sbiBmcmFuYyBhZHZlcnRpc2luZyBjYW1wYWlnbiBmb3IgdGhlIGZsb3RhdGlvbiBiZWdpbnMgb24gU3VuZGF5LiAiVGhlIHByaXZhdGlzYXRpb24gd2lsbCBiZSBhIHdheSBvZiBhdHRyYWN0aW5nIGV4dHJhIGNsaWVudHMsIiBDQ0YgZGVwdXR5IGRpcmVjdG9yLWdlbmVyYWwgUmVuZSBkZSBsYSBTZXJyZSB0b2xkIFJldXRlcnMuICAgICBNYXJrZXQgc291cmNlcyBwdXQgdGhlIHRvdGFsIHZhbHVlIG9mIENDRidzIHByaXZhdGlzYXRpb24gYXQgYmV0d2VlbiBmb3VyIGFuZCBmaXZlIGJpbGxpb24gZnJhbmNzLiAgICAgRGUgbGEgU2VycmUgc2FpZCB0aGUgYmFuayB3YXMgbGlrZWx5IHRvIGF0dHJhY3QgYXQgbGVhc3QgdGhlIHNhbWUgbnVtYmVyIG9mIGludmVzdG9ycyBhcyA8U29nZW5hbD4sIGFub3RoZXIgcmVjZW50bHkgcHJpdmF0aXNlZCBiYW5rIGluIHdoaWNoIDg1MCwwMDAgcGVvcGxlIGJvdWdodCBzaGFyZXMuICAgICBUaGUgZ292ZXJubWVudCdzIHN3ZWVwaW5nIHByaXZhdGlzYXRpb24gcHJvZ3JhbW1lIGhhcyBhbHNvIGluY2x1ZGVkIHRoZSBzYWxlIG9mIFNhaW50LUdvYmFpbiA8U0dFUC5QQT4sIGFuZCBDaWUgRmluYW5jaWVyZSBkZSBQYXJpYmFzIDxQQVJJLlBBPi4gVGhlIHNhbGUgb2YgPEJhbnF1ZSBkdSBCYXRpbWVudCBldCBkZXMgVHJhdmF1eCBQdWJsaWNzPiBhbmQgPEJhbnF1ZSBJbmR1c3RyaWVsbGUgZXQgTW9iaWxpZXJlIFByaXZlZT4gc2hvdWxkIGJlIGNvbXBsZXRlZCB0aGlzIG1vbnRoLCB3aGlsZSB0aGlyZCBsYXJnZXN0IEZyZW5jaCBiYW5rIFNvY2lldGUgR2VuZXJhbGUgPFNHRU4uUEE+IHdpbGwgYmUgcHJpdmF0aXNlZCBsYXRlciB0aGlzIHllYXIuICBSRVVURVIgMzsKMTk4NzA0MDkJQ0VOVEVMIDxDTlQ+IENPTVBMRVRFUyBBQ1FVSVNJVElPTiBDZW50ZWwgQ29ycCBzYWlkIGl0IGNvbXBsZXRlZCB0aGUgYWNxdWlzaXRpb24gb2YgV2VsYmFjIENhYmxlIFRlbGV2aXNpb24gQ29ycCwgd2hpY2ggc2VydmVzIG1vcmUgdGhhbiAyLDUwMCBjYWJsZSB0ZWxldmlzaW9uIHN1YnNjcmliZXJzIGluIGVhc3QgY2VudHJhbCBNaWNoaWdhbi4gICAgIFRlcm1zIHdlcmUgbm90IGRpc2Nsb3NlZC4gICAgIFdpdGggdGhlIGFkZGl0aW9uIG9mIFdlbGJhYyBjdXN0b21lcnMsIENlbnRlbCBDYWJsZSBUZWxldmlzaW9uIENvIG9mIE1pY2hpZ2FuIHNlcnZlcyBtb3JlIHRoYW4gODMsMDAwIGN1c3RvbWVycy4gT3ZlcmFsbCwgQ2VudGVsIGhhcyBuZWFybHkgNDk1LDAwMCBjdXN0b21lcnMgaW4gc2V2ZW4gc3RhdGVzLiAgUmV1dGVyIDM7CjE5ODcwNDA5CUNFTlRFTCA8Q05UPiBTRUxMUyBERUJFTlRVUkVTIEFUIDkuMjMzIFBDVCBDZW50ZWwgQ29ycCBpcyByYWlzaW5nIDUwIG1sbiBkbHJzIHRocm91Z2ggYW4gb2ZmZXJpbmcgb2YgZGViZW50dXJlcyBkdWUgMjAxNyB5aWVsZGluZyA5LjIzMyBwY3QsIHNhaWQgbGVhZCBtYW5hZ2VyIFNtaXRoIEJhcm5leSwgSGFycmlzIFVwaGFtIGFuZCBDbyBJbmMuICAgICBUaGUgZGViZW50dXJlcyBoYXZlIGEgOS0xLzggcGN0IGNvdXBvbiBhbmQgd2VyZSBwcmljZWQgYXQgOTguOTAgdG8geWllbGQgMTE3IGJhc2lzIHBvaW50cyBvdmVyIGNvbXBhcmFibGUgVHJlYXN1cnkgc2VjdXJpdGllcy4gICAgIE5vbi1jYWxsYWJsZSBmb3IgZml2ZSB5ZWFycywgdGhlIGlzc3VlIGlzIHJhdGVkIEEtMyBieSBNb29keSdzIEludmVzdG9ycyBTZXJ2aWNlIEluYyBhbmQgQSBieSBTdGFuZGFyZCBhbmQgUG9vcidzIENvcnAuICAgICBFLkYuIEh1dHRvbiBhbmQgQ28gSW5jIGFuZCBVQlMgU2VjdXJpdGllcyBJbmMgY28tbWFuYWdlZCB0aGUgZGVhbC4gIFJldXRlciAzOwoxOTg3MDQwOQlDRVJUSUZJQ0FURUQgQ09UVE9OIFNUT0NLUyBDZXJ0aWZpY2F0ZWQgY290dG9uIHN0b2NrcyBkZWxpdmVyYWJsZSBvbiB0aGUgTmV3IFlvcmsgQ290dG9uIEV4Y2hhbmdlIE5vIDIgY290dG9uIGZ1dHVyZXMgY29udHJhY3QgYXMgb2YgQXByaWwgOCB3ZXJlIHJlcG9ydGVkIGF0IDM0LDY2MSBiYWxlcywgZG93biA0MjEgYmFsZXMgZnJvbSB0aGUgcHJldmlvdXMgZGF5J3MgZmlndXJlLiBUaGVyZSB3ZXJlIG5vIGJhbGVzIGF3YWl0aW5nIHJldmlldyBhbmQgMSwyMTggYmFsZXMgYXdhaXRpbmcgZGVjZXJ0aWZpY2F0aW9uLiAgUmV1dGVyIDM7CjE5ODcwNDA5CUNISUNBR08gUEFDSUZJQyA8Q1BBQz4gU0VMTFMgQ09OVkVSVElCTEUgREVCVCBDaGljYWdvIFBhY2lmaWMgQ29ycCBpcyByYWlzaW5nIDE1MCBtbG4gZGxycyB0aHJvdWdoIGFuIG9mZmVyaW5nIG9mIGNvbnZlcnRpYmxlIHN1Ym9yZGluYXRlZCBkZWJlbnR1cmVzIGR1ZSAyMDEyIHdpdGggYSA2LTEvMiBwY3QgY291cG9uIGFuZCBwYXIgcHJpY2luZywgc2FpZCBsZWFkIG1hbmFnZXIgR29sZG1hbiwgU2FjaHMgYW5kIENvLiAgICAgVGhlIGRlYmVudHVyZXMgYXJlIGNvbnZlcnRpYmxlIGludG8gdGhlIGNvbXBhbnkncyBjb21tb24gc3RvY2sgYXQgNjIuNTAgZGxycyBwZXIgc2hhcmUsIHJlcHJlc2VudGluZyBhIHByZW1pdW0gb2YgMjUuNjMgcGN0IG92ZXIgdGhlIHN0b2NrIHByaWNlIHdoZW4gdGVybXMgb24gdGhlIGRlYnQgd2VyZSBzZXQuICAgICBOb24tY2FsbGFibGUgZm9yIHR3byB5ZWFycywgdGhlIGlzc3VlIGlzIHJhdGVkIEItMSBieSBNb29keSdzIEludmVzdG9ycyBTZXJ2aWNlIEluYyBhbmQgQiBieSBTdGFuZGFyZCBhbmQgUG9vcidzIENvcnAuIEZpcnN0IEJvc3RvbiBDb3JwIGFuZCBMYXphcmQgRnJlcmVzIGFuZCBDbyBjby1tYW5hZ2VkIHRoZSBkZWFsLiAgUmV1dGVyIDM7CjE5ODcwNDA5CUNISUxFQU4gVFJBREUgU1VSUExVUyBOQVJST1dTIFNMSUdIVExZIElOIEZFQlJVQVJZIGNoaWxlJ3MgdHJhZGUgc3VycGx1cyBuYXJyb3dlZCB0byAxMDIuMiBtbG4gZGxycyBpbiBmZWJydWFyeSwgZnJvbSAxMDUuNCBtbG4gZGxycyBpbiB0aGUgc2FtZSBtb250aCBsYXN0IHllYXIsIGJ1dCBpdCB3YXMgYWJvdmUgdGhlIDE4LjItbWxuLWRsciBzdXJwbHVzIHJlY29yZGVkIGluIGphbnVhcnkgMTk4NywgdGhlIGNlbnRyYWwgYmFuayBzYWlkLiAgICAgRXhwb3J0cyBpbiBmZWJydWFyeSB0b3RhbGxlZCAzNzkuNCBtbG4gZGxycywgMTcuMiBwY3QgYWJvdmUgdGhlIGphbnVhcnkgZmlndXJlLiBJbXBvcnRzIGZlbGwgOS4yIHBjdCBmcm9tIHRoZSBwcmV2aW91cyBtb250aCB0byAyNzcuMiBtbG4gZGxycy4gVGhlIGZpZ3VyZXMgZm9yIHRoZSBzYW1lIG1vbnRoIGxhc3QgeWVhciB3ZXJlIDMxNCBtbG4gYW5kIDIwOC42IG1sbiBkbHJzLCByZXNwZWN0aXZlbHkuICAgICBUaGUgYWNjdW11bGF0ZWQgdHJhZGUgc3VycGx1cyBvdmVyIHRoZSBmaXJzdCB0d28gbW9udGhzIG9mIDE5ODcgc3RhbmRzIGF0IDEyMC40IG1sbiBkbHJzIGFnYWluc3QgMTMyLjggbWxuIGRscnMgdGhlIHByZXZpb3VzIHllYXIuICBSZXV0ZXIgMzsKMTk4NzA0MDkJQ0hJTkEgTElHSFQgVU5JVCBSRU5FV1MgQ09NTUVSQ0lBTCBQQVBFUiBGQUNJTElUWSA8S293bG9vbiBFbGVjdHJpY2l0eSBTdXBwbHkgQ28gTHRkPiwgYSBqb2ludCB2ZW50dXJlIG9mIENoaW5hIExpZ2h0IGFuZCBQb3dlciBDbyBMdGQgPENMUEguSEs+IGFuZCBFeHhvbiBDb3JwIDxYT04+LCBoYXMgcmVuZXdlZCBhbmQgaW5jcmVhc2VkIGFuIGV4aXN0aW5nIGNvbW1lcmNpYWwgcGFwZXIgcHJvZ3JhbSwgYXJyYW5nZXIgPFNjaHJvZGVycyBBc2lhIEx0ZD4gc2FpZC4gICAgIFRoZSBmdWxseSB1bmRlcndyaXR0ZW4gcHJvZ3JhbSwgd2hpY2ggZXhwaXJlcyB0aGlzIG1vbnRoLCBoYXMgYmVlbiBleHRlbmRlZCB0byBEZWNlbWJlciAxOTkwIGFuZCBpbmNyZWFzZWQgdG8gNTQwIG1sbiBILksuIERscnMgZnJvbSB0aGUgb3JpZ2luYWwgNTAwIG1sbiBkbHJzLCBpdCBzYWlkLiAgICAgVGhlIHVuZGVyd3JpdGluZyBmZWUgaXMgMS84IG9mIGEgcGVyY2VudGFnZSBwb2ludCBvdmVyIHRoZSBIb25nIEtvbmcgaW50ZXJiYW5rIG9mZmVyZWQgcmF0ZS4gICAgIENvbW1lcmNpYWwgcGFwZXIgaW4gdGVudXJlcyBvZiBvbmUgdG8gdGhyZWUgbW9udGhzIHdpbGwgYmUgaXNzdWVkIGluIGRlbm9taW5hdGlvbnMgb2Ygb25lIG1sbiBkbHJzLCBpdCBzYWlkLiAgICAgVGhlIHByb2dyYW0gb2ZmZXJzIGEgVS5TLiBEbHIgb3B0aW9uIHdoZXJlYnkgY29tbWVyY2lhbCBwYXBlciBpbiBkZW5vbWluYXRpb25zIG9mIDEwMCwwMDAgVS5TLiBEbHJzIHdpbGwgYmUgaXNzdWVkIHN1YmplY3QgdG8gdGhlIHNhbWUgdW5kZXJ3cml0aW5nIG1hcmdpbi4gICAgIEpvaW5pbmcgU2Nocm9kZXJzIGFzIHVuZGVyd3JpdGVycyBhcmUgQmFyY2xheXMgQmFuayBQbGMsIENpdGljb3JwIEludGVybmF0aW9uYWwgTHRkLCBQYXJpYmFzIEFzaWEgTHRkLCBTYW53YSBJbnRlcm5hdGlvbmFsIEZpbmFuY2UgTHRkIGFuZCBTdW1pdG9tbyBGaW5hbmNlIChBc2lhKSBMdGQuICAgICBUaGUgc2l4IHVuZGVyd3JpdGVycyB3aWxsIGJlIGpvaW5lZCBieSAxMSBvdGhlciBmaW5hbmNpYWwgaW5zdGl0dXRpb25zIGluIHRoZSB0ZW5kZXIgcGFuZWwuICBSRVVURVIgMzsKMTk4NzA0MDkJQ0hJTkEnUyBXSEVBVCBDUk9QIFRIUkVBVEVORUQgQlkgUEVTVFMsIERJU0VBU0UgUGVzdHMgYW5kIGRpc2Vhc2UsIHdoaWNoIGRlc3Ryb3llZCAxLjEgbWxuIHRvbm5lcyBvZiB3aGVhdCBpbiBDaGluYSBpbiAxOTg2LCBhcmUgdGhyZWF0ZW5pbmcgY3JvcHMgb24gMTEuNjQgbWxuIGhlY3RhcmVzIHRoaXMgeWVhciwgdGhlIENoaW5hIERhaWx5IHNhaWQuICAgICBBYm91dCAxNC41NCBtbG4gaGVjdGFyZXMgb2Ygd2hlYXQgd2VyZSBhZmZlY3RlZCBpbiAxOTg2LiAgICAgVGhlIHBhcGVyIHNhaWQgYWJub3JtYWwgd2VhdGhlciBjb25kaXRpb25zIGhhZCBlbmNvdXJhZ2VkIHRoZSBzcHJlYWQgb2Ygd2hlYXQgbWlkZ2VzIGluIDIuNDcgbWxuIGhlY3RhcmVzIGluIFNoYW54aSwgSGVuYW4sIFNpY2h1YW4sIEFuaHVpLCBIZWJlaSBhbmQgSmlhbmdzdS4gICAgIEluIEhlbmFuLCBTaGFuZG9uZyBhbmQgSGViZWkgd2hlYXQgYXBoaWRzIGFyZSBhZmZlY3RpbmcgNC42NyBtbG4gaGVjdGFyZXMsIHdoZWF0IHJlZCBtaXRlIDIuOCBtbG4gaGVjdGFyZXMgYW5kIHdoZWF0IHBvd2RlcnkgbWlsZGV3IDEuNyBtbG4gaGVjdGFyZXMuICBSRVVURVIgMzsKMTk4NzA0MDkJQ0hJTkVTRSBCQU5LIFRPIE1BS0UgRklSU1QgRk9SRUlHTiBCT1JST1dJTkcgVGhlIHN0YXRlLW93bmVkIFBlb3BsZSdzIENvbnN0cnVjdGlvbiBCYW5rIG9mIENoaW5hIGlzIG1ha2luZyBpdHMgZmlyc3QgZm9yZWlnbiBib3Jyb3dpbmcsIDMwMCBtbG4gZGxycyB0byBmaW5hbmNlIGEgbGFyZ2UgZXRoeWxlbmUgcGxhbnQgaW4gU2hhbmdoYWksIHRoZSBQZW9wbGUncyBEYWlseSBzYWlkLiAgICAgVGhlIG5ld3NwYXBlcidzIG92ZXJzZWFzIGVkaXRpb24gc2FpZCB0aGUgcGxhbnQgd2lsbCBwcm9kdWNlIDMwMCwwMDAgdG9ubmVzIG9mIGV0aHlsZW5lIGEgeWVhci4gICAgIEl0IHNhaWQgdGhlIGJhbmsgbGFzdCB5ZWFyIHN0YXJ0ZWQgZm9yZWlnbiBleGNoYW5nZSBzZXJ2aWNlcyBmb3IgdGhlIGZpcnN0IHRpbWUgb24gYW4gZXhwZXJpbWVudGFsIGJhc2lzIGluIFNoZW56aGVuLCBaaHVoYWkgYW5kIFhpYW1lbiwgYnV0IGl0IGdhdmUgbm8gbW9yZSBkZXRhaWxzLiAgUkVVVEVSIDM7CjE5ODcwNDA5CUNJQkMgVU5JVCBJU1NVRVMgQVVTVFJBTElBTiBETFIgWkVSTyBDT1VQT04gQk9ORCBDSUJDIEF1c3RyYWxpYSBMdGQgaXMgaXNzdWluZyBhIHplcm8gY291cG9uIGV1cm9ib25kIHdpdGggYSB0b3RhbCByZWRlbXB0aW9uIGFtb3VudCBvZiAxMjUgbWxuIEF1c3RyYWxpYW4gZGxycyBkdWUgTWF5IDE1LCAxOTkyIHByaWNlZCBhdCA1NCBwY3QsIHNvbGUgbGVhZCBtYW5hZ2VyIENJQkMgTHRkIHNhaWQuICAgICBUaGUgaXNzdWUgaXMgYXZhaWxhYmxlIGluIGRlbm9taW5hdGlvbnMgb2YgMSwwMDAgYW5kIDEwLDAwMCBBdXN0cmFsaWFuIGRscnMgYW5kIGlzIGd1YXJhbnRlZWQgQ2FuYWRpYW4gSW1wZXJpYWwgQmFuayBvZiBDb21tZXJjZS4gVGhlIHNlbGxpbmcgY29uY2Vzc2lvbiBpcyAzLzQgcGN0LCB3aGlsZSBtYW5hZ2VtZW50IGFuZCB1bmRlcndyaXRpbmcgY29tYmluZWQgcGF5cyA1LzggcGN0LiAgICAgVGhlIHBheW1lbnQgZGF0ZSBpcyBNYXkgMTUuICBSRVVURVIgMzsKMTk4NzA0MDkJQ0xFVklURSA8Q0xFVj4gQU1FTkRTIFJJR0hUUyBQTEFOIENsZXZpdGUgSW5kdXN0cmllcyBJbmMsIHdoaWNoIGVhcmxpZXIgcmVjZWl2ZWQgYSA5NiBtbG4gZGxyIHRha2VvdmVyIG9mZmVyIGZyb20gSi5QLiBJbmR1c3RyaWVzIEluYyA8SlBJPiwgc2FpZCBpdCBhbWVuZGVkIGl0cyBTaGFyZWhvbGRlciBSaWdodHMgUGxhbiBzbyB0aGF0IGNlcnRhaW4gcHJvdmlzaW9ucyBvZiB0aGUgcGxhbiBjYW5ub3Qgb2NjdXIgdW50aWwgdGhlIGJvYXJkIGRldGVybWluZXMgdGhhdCBpdCBpcyBpbiB0aGUgYmVzdCBpbnRlcmVzdHMgb2YgdGhlIGNvbXBhbnkgYW5kIHN0b2NraG9sZGVycy4gICAgIFRoZSBwbGFuLCBhZG9wdGVkIGluIERlY2VtYmVyIDE5ODYsIHBlcm1pdHMgQ2xldml0ZSB0byBpc3N1ZSBzaGFyZXMgYXQgaGFsZiBwcmljZSB0byBleGlzdGluZyBzdG9ja2hvbGRlcnMgYW5kIGFsbG93cyBzdG9ja2hvbGRlcnMgdG8gYnV5IHNoYXJlcyBvZiBhbiB1bmZyaWVuZGx5IGJpZGRlciBhdCBoYWxmIHByaWNlLiAgICAgQ2xldml0ZSBzYWlkIHRoZSBhbWVuZG1lbnRzIGJ5IGl0cyBib2FyZCBlZmZlY3RpdmVseSBtZWFuIHRoYXQgdGhlIHNvLWNhbGxlZCBmbGlwLWluIGFuZCBmbGlwLW92ZXIgcHJvdmlzaW9ucyBvZiBpdHMgcmlnaHRzIHBsYW4gY2FuIG9ubHkgYmUgdHJpZ2dlcmVkIGJ5IGFmZmlybWF0aXZlIGJvYXJkIGFwcHJvdmFsLiAgICAgVGhlIGNvbXBhbnkgc2FpZCBpdCBhY3RlZCBpbnZpZXcgb2YgdGhlIHByb3Bvc2VkIGFjcXVpc2l0aW9uIGFuZCBiZWNhdXNlIGNlcnRhaW4gZGVidCByZXN0cmljdGlvbnMgY291bGQgYmxvY2sgaXRzIGFiaWxpdHkgdG8gcmVkZWVtIHRoZSByaWdodHMuICBSZXV0ZXIgMzsKMTk4NzA0MDkJQ0xFVklURSA8Q0xFVj4gR0VUUyAxMy41MCBETFIvU0hSIE9GRkVSIENsZXZpdGUgSW5kdXN0cmllcyBJbmMgc2FpZCBpdCByZWNlaXZlZCBhIHdyaXR0ZW4gcHJvcG9zYWwgZnJvbSBKLlAuIEluZHVzdHJpZXMgSW5jIDxKUEk+IHNlZWtpbmcgdG8gYnV5IGFsbCBvZiBpdHMgb3V0c3RhbmRpbmcgc2hhcmVzIGZvciAxMy41MCBkbHJzIGEgc2hhcmUuICAgICBDbGV2aXRlJ3Mgc3RvY2sgd2FzIHRyYWRpbmcgb24gTkFTREFRIGF0IDEzLTEvNC4gICAgIEouUC4gSW5kdXN0cmllcyByZWNlbnRseSBjb21wbGV0ZWQgdGhlIGFjcXVpc2l0aW9uIG9mIENsZXZpdGUncyBFbmdpbmUgUGFydHMgRGl2aXNpb24uICAgICBKLlAuIEluZHVzdHJpZXMgc2FpZCBpdHMgcHJvcG9zZWQgdHJhbnNhY3Rpb24gd291bGQgYmUgZmluYW5jZWQgdGhyb3VnaCBib3Jyb3dpbmdzIHVuZGVyIGl0cyBhdmFpbGFibGUgYmFuayBsaW5lcyBhbmQgYSBicmlkZ2UgZmluYW5jaW5nIGZhY2lsaXR5IHdoaWNoIERvbmFsZHNvbiBMdWZraW4gYW5kIEplbnJldHRlIFNlY3VyaXRpZXMgQ29ycCBhZ3JlZWQgdG8gYXJyYW5nZS4gICAgIFRvIGV4cGVkaXRlIHRoZSB0cmFuc2FjdGlvbiwgSi5QLiBJbmR1c3RyaWVzIHNhaWQgaXQgd291bGQgYmUgd2lsbGluZyB0byBzdGFydCBhIGNhc2ggdGVuZGVyIGZvciBDbGV2aXRlJ3Mgc2hhcmVzIHdpdGhpbiBmaXZlIGRheXMgYWZ0ZXIgYWdyZWVpbmcgdXBvbiBhIGRlZmluaXRpdmUgbWVyZ2VyIGFuZCBjb25maXJtYXRpb24gb2YgQ2xldml0ZSdzIGZpbmFuY2lhbCByZXN1bHRzIGFuZCBjb25kaXRpb24uICAgUmV1dGVyIDM7CjE5ODcwNDA5CUNPQVNUIFNBVklOR1MgPENTQT4gSU4gVEFMS1MgT04gQlVZSU5HIEJBTksgQ29hc3QgU2F2aW5ncyBhbmQgTG9hbiBBc3NvY2lhdGlvbiBzYWlkIGl0IGlzIGluIHRhbGtzIHdpdGggdGhlIEZlZGVyYWwgU2F2aW5ncyBhbmQgTG9hbiBJbnN1cmFuY2UgQ29ycCBvbiB0aGUgYWNxdWlzaXRpb24gb2YgQ2VudHJhbCBTYXZpbmdzIGFuZCBMb2FuIEFzc29jaWF0aW9uIG9mIFNhbiBEaWVnby4gICAgIENlbnRyYWwsIHdoaWNoIG9wZXJhdGVzIDQ2IGJyYW5jaGVzLCBoYXMgYmVlbiB1bmRlciBtYW5hZ2VtZW50IGd1aWRhbmNlIG9mIHRoZSBGU0xJQyBzaW5jZSBNYXkgMTk4NS4gICAgIENvYXN0IHNhaWQgdGhlIGFjcXVpc2l0aW9uIHdvdWxkIGdpdmUgaXQgYW4gZW50cnkgaW50byB0aGUgU2FuIEpvYXF1aW4gVmFsbGV5IG1hcmtldCBiZXNpZGVzIHN0cmVuZ3RoZW5pbmcgaXRzIHByZXNlbmNlIGluIHRoZSBTYW4gRGllZ28sIExvcyBBbmdlbGVzIGFuZCBPcmFuZ2UgQ291bnRpZXMgYXJlYXMuICBSZXV0ZXIgMzsKMTk4NzA0MDkJQ09MT05JQUwgQkFOQ0dST1VQIDxDTEJHQT4gTUFLRVMgQUNRVUlTSVRJT04gQ29sb25pYWwgQmFuY0dyb3VwIHNhaWQgaXQgaGFzIHNpZ25lZCBsZXR0ZXIgb2YgaW50ZW50IHRvIGFjcXVpcmUgQ29tbXVuaXR5IEJhbmsgYW5kIFRydXN0IG9mIEhhcnRzZWxsZSwgQWxhLiwgd2l0aCBhc3NldHMgb2YgMjYgbWxuIGRscnMsIGZvciB1bmRpc2Nsb3NlZCB0ZXJtcywgc3ViamVjdCB0byBhcHByb3ZhbCBieSByZWd1bGF0b3J5IGF1dGhvcml0aWVzIGFuZCBDb21tdW5pdHkgQmFuayBzaGFyZWhvbGRlcnMuICAgICBDb21wbGV0aW9uIGlzIGV4cGVjdGVkIHdpdGhpbiB0aGUgbmV4dCB5ZWFyLCBpdCBzYWlkLiAgUmV1dGVyIDM7CjE5ODcwNDA5CUNPTURBVEEgPENETj4gR0VUUyBNRVJHRVIgRklOQU5DSU5HIENvbWRhdGEgTmV0d29yayBJbmMgc2FpZCBpdCBoYXMgcmVjZWl2ZWQgYSBsZXR0ZXIgZnJvbSBEcmV4ZWwgQnVybmhhbSBMYW1iZXJ0IEluYyBzdGF0aW5nIHRoYXQsIHN1YmplY3QgdG8gY29uZGl0aW9ucywgdGhlIGNvbXBhbnkgY291bGQgcmFpc2UgdXAgdG8gMjM1IG1sbiBkbHJzIGluIGRlYnQgc2VjdXJpdGllcyB0byBmaW5hbmNlIHRoZSBwcmV2aW91c2x5IGFubm91bmNlZCBtZXJnZXIgb2YgYSBuZXdseSBmb3JtZWQgY29ycG9yYXRpb24gY29udHJvbGxlZCBieSA8V2Vsc2gsIENhcnNvbiwgQW5kZXJzb24gYW5kIFN0b3dlIElWPiBhbmQgQ29tZGF0YS4gICAgIENvbWRhdGEgc2FpZCB0aGUgbGV0dGVyIHdhcyBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIHByZXZpb3VzbHkgYW5ub3VuY2VkIHRlcm1zIHdpdGggV2Vsc2gsIENhcnNvbi4gIFJldXRlciAzOwoxOTg3MDQwOQlDT01JTkNPIDxDTFQ+IFRPIEZPUk0gRVhQTE9SQVRJT04gVU5JVCBDb21pbmNvIEx0ZCBzYWlkIGl0IGlzIGZvcm1pbmcgYSBuZXcgcHVibGljbHkgaGVsZCBjb21wYW55LCBDb21pbmNvIFJlc291cmNlcyBJbnRlcm5hdGlvbmFsIEx0ZCwgdG8gY29udGludWUgZXhwbG9yYXRpb24gYW5kIGRldmVsb3BtZW50IG9mIGl0cyBtaW5lcmFsIGhvbGRpbmdzIG91dHNpZGUgQ2FuYWRhLCBBbGFza2EgYW5kIEF1c3RyYWxpYS4gICAgIENvbWluY28gd2lsbCBtYWludGFpbiBhIG1ham9yaXR5IHBvc2l0aW9uIGluIHRoZSBjb21wYW55LCBidXQgdGhlIHJlbWFpbmluZyBpbnRlcmVzdCB3aWxsIGJlIHNvbGQgaW4gb2ZmZXJpbmdzIGxlZCBieSBXb29kIEd1bmR5IEluYyBhbmQgRmlyc3QgTWFyYXRob24gU2VjdXJpdGllcyBMdGQgaW4gQ2FuYWRhLCBhbmQgUy5HLiBXYXJidXJnIFNlY3VyaXRpZXMgYW5kIFdvb2QgR3VuZHkgSW5jIGludGVybmF0aW9uYWxseS4gICAgIENvbWluY28gc2FpZCBpdCBpcyBmaWxpbmcgYSBwcmVsaW1pbmFyeSBwcm9zcGVjdHVzIHdpdGggc2VjdXJpdGllcyByZWd1bGF0b3JzIGluIGFsbCBDYW5hZGlhbiBwcm92aW5jZXMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXV0ZXIgMzsKMTk4NzA0MDkJQ09NTU9OV0VBTFRIIEVESVNPTiA8Q1dFPiBGSUxFUyBERUJUIE9GRkVSIENvbW1vbndlYWx0aCBFZGlzb24gQ28gZmlsZWQgd2l0aCB0aGUgU2VjdXJpdGllcyBhbmQgRXhjaGFuZ2UgQ29tbWlzc2lvbiBmb3IgdGhlIHNhbGUgb2YgMzc1IG1sbiBkbHJzIGluIGZpcnN0IG1vcnRnYWdlIGJvbmRzLiAgICAgSXQgc2FpZCB0aGUgcHJvY2VlZGluZ3Mgd291bGQgYmUgdXNlZCB0byBkaXNjaGFyZ2Ugb3IgcmVmdW5kIG91dHN0YW5kaW5nIG9ibGlnYXRpb25zLiAgICAgTm8gdW5kZXJ3cml0ZXIgd2FzIG5hbWVkLiAgUmV1dGVyIDM7CjE5ODcwNDA5CUNPTU1VTklUWSBCQU5LIFNZU1RFTSBJTkMgPENCU0k+IDFTVCBRVFIgTkVUIFNociA0NiBjdHMgdnMgNDkgY3RzICAgICBOZXQgMSwxMDEsNTUxIHZzIDgzMSwzOTggICAgIE5PVEU6IFNoYXJlIGFkanVzdGVkIGZvciB0d28tZm9yLW9uZSBzdG9jayBzcGxpdCBpbiBNYXkgMTk4Ni4gIFJldXRlciAzOwoxOTg3MDQwOQlDT05TRU5TVVMgU0VFTiBPTiBUSU4gUEFDVCBFWFRFTlNJT04gVGhlIHF1YXJ0ZXJseSBzZXNzaW9uIG9mIHRoZSBJbnRlcm5hdGlvbmFsIFRpbiBDb3VuY2lsIChJVEMpIGNvbnRpbnVlZCB3aXRob3V0IGZvcm1hbCBhZ3JlZW1lbnQgb24gYW4gZXh0ZW5zaW9uIG9mIHRoZSBzaXh0aCBJbnRlcm5hdGlvbmFsIFRpbiBBZ3JlZW1lbnQgKElUQSksIGJ1dCBkZWxlZ2F0ZXMgc2FpZCBpdCB3YXMgYXBwYXJlbnQgdGhlcmUgd2FzIGEgZ2VuZXJhbCBjb25zZW5zdXMgdGhlIEFncmVlbWVudCBzaG91bGQgYmUgcHJvbG9uZ2VkLiAgICAgU29tZSBkZWxlZ2F0aW9ucyBhcmUgc3RpbGwgYXdhaXRpbmcgZm9ybWFsIGluc3RydWN0aW9ucyBmcm9tIGNhcGl0YWxzLCBidXQgaW5mb3JtYWxseSBtb3N0IGhhdmUgaW5kaWNhdGVkIHRoZXkgZmF2b3VyIGFuIGV4dGVuc2lvbiwgZGVsZWdhdGVzIHNhaWQuICAgICBUaGlzIGFmdGVybm9vbidzIHNlc3Npb24gd2FzIHVzZWQgYnkgZGVsZWdhdGVzIHRvIHNlZWsgZnVydGhlciBjbGFyaWZpY2F0aW9uIG9uIHNvbWUgb2YgdGhlIGlzc3VlcyBpbnZvbHZlZCwgYW5kIHRvIGRpc2N1c3MgaW50ZXJuYWwgbWF0dGVycy4gICAgIFNvbWUgc291cmNlcyB3ZXJlIG9wdGltaXN0aWMgYSByZXNvbHV0aW9uIG9uIGFuIGV4dGVuc2lvbiBjb3VsZCBiZSBwYXNzZWQgdG9tb3Jyb3cgYnV0IG90aGVycyBzdWdnZXN0ZWQgYSBzcGVjaWFsIHNlc3Npb24gd291bGQgYmUgY29udmVuZWQgdG8gYWRvcHQgdGhlIHJlc29sdXRpb24gYWZ0ZXIgdGhlIEFzc29jaWF0aW9uIG9mIFRpbiBQcm9kdWNpbmcgQ291bnRyaWVzIG1lZXRpbmcgQXByaWwgMTQgdG8gMTYuICAgICBUaGUgZnVsbCBDb3VuY2lsIHNlc3Npb24gcmVzdW1lcyB0b21vcnJvdyBhdCAxMzMwIEdNVCBhZnRlciBhIEV1cm9wZWFuIENvbW11bml0eSBjb29yZGluYXRpb24gbWVldGluZyBhdCAxMTAwLiAgUmV1dGVyIDM7CjE5ODcwNDA5CUNPTlNVTUVSUyBQT1dFUiA8Q01TPiBUTyBSRURFRU0gQk9ORFMgQ29uc3VtZXJzIFBvd2VyIENvIHNhaWQgaXQgaGFzIDU2IG1sbiBkbHJzIGF2YWlsYWJsZSB0byBiZSB1c2VkIHRvIHJlZGVlbSBhdCBwYXIgYW55IDE1IHBjdCBzZXJpZXMgZmlyc3QgbW9ydGdhZ2UgYm9uZHMgdGhhdCBhcmUgbm90IGV4Y2hhbmdlZCB1bmRlciBhbiBvdXRzdGFuZGluZyBib25kIGV4Y2hhbmdlIHByb2dyYW0uICAgICBUaGUgdXRpbGl0eSBvbiBNYXJjaCAxNyBvZmZlcmVkIHRvIGV4Y2hhbmdlIGl0cyAxNSBwY3QgZmlyc3QgbW9ydGdhZ2UgYm9uZHMgZHVlIE1hcmNoIDEsIDE5OTQgZm9yIGEgbmV3IHNlcmllcyBvZiBmaXJzdCBtb3J0Z2FnZSBib25kcywgOS0xLzQgcGN0IGR1ZSBBcHJpbCAxLCAxOTk3LiBUaGUgb2ZmZXIgd2lsbCBleHBpcmUgQXByaWwgMTQsIDE5ODcuICBSZXV0ZXIgMzsKMTk4NzA0MDkJQ09OVEkgU0hBUkVTIE9QRU4gSElHSEVSIE9OIEdPT0QgTkVXIFRZUkUgUkVWSUVXUyBTaGFyZXMgb2YgQ29udGluZW50YWwgR3VtbWktV2Vya2UgQUcgPENPTkcuRj4gb3BlbmVkIGVpZ2h0IG1hcmtzIHN0cm9uZ2VyIGluIGFuIG90aGVyd2lzZSBtaXhlZCBGcmFua2Z1cnQgbWFya2V0IGFuZCBkZWFsZXJzIGF0dHJpYnV0ZWQgdGhlIHRyZW5kIHRvIGZhdm91cmFibGUgcHJlc3MgcmVwb3J0cyBhYm91dCBhIG5ldyB0eXJlIHN5c3RlbSB0aGUgY29tcGFueSBpcyBkZXZlbG9waW5nLiAgICAgVGhlIHNoYXJlcyBsYXRlciBlYXNlZCB0byAzNDQuNTAuICAgICBBIHNwb2tlc21hbiBmb3IgdGhlIFdlc3QgR2VybWFuIEF1dG9tb2JpbGUgQXNzb2NpYXRpb24sIEFEQUMsIHNhaWQgdGhlIEFEQUMgbWFnYXppbmUgaW4gYSByZWNlbnQgZWRpdGlvbiBkZXNjcmliZWQgYWR2YW50YWdlcyBvZiB0aGUgbmV3IHR5cmUuICBSRVVURVIgMzsKMTk4NzA0MDkJQ09VUE9OIENVVCBPTiBCQU5LIE9GIFRPS1lPIERPTExBUiBDT05WRVJUSUJMRSBUaGUgY291cG9uIG9uIHRoZSAxMDAgbWxuIGRsciwgMTUteWVhciwgY29udmVydGlibGUgZXVyb2JvbmQgZm9yIHRoZSBCYW5rIG9mIFRva3lvIEx0ZCBoYXMgYmVlbiBjdXQgdG8gMS0zLzQgcGN0IGZyb20gdGhlIHR3byBwY3QgaW5pdGlhbGx5IGluZGljYXRlZCwgbGVhZCBtYW5hZ2VyIEJhbmsgb2YgVG9reW8gSW50ZXJuYXRpb25hbCBMdGQgc2FpZC4gICAgIFRoZSBmb3JlaWduIGV4Y2hhbmdlIHJhdGUgaGFzIGJlZW4gc2V0IGF0IDE0Ni40MCB5ZW4gdG8gdGhlIGRvbGxhciBidXQgZGV0YWlscyBvZiB0aGUgY29udmVyc2lvbiBwcmljZSB3ZXJlIG5vdCBpbW1lZGlhdGVseSBhdmFpbGFibGUuICBSRVVURVIgMzsKMTk4NzA0MDkJQ09VUE9OIENVVCBPTiBCQU5LIE9GIFRPS1lPIFNXSVNTIEZSQU5DIElTU1VFIFRoZSBjb3Vwb24gb24gdGhlIEJhbmsgb2YgVG9reW8gTHRkJ3MgMTAwIG1sbiBTd2lzcyBmcmFuYyBjb252ZXJ0aWJsZSBoYXMgYmVlbiBjdXQgdG8gNy84IHBjdCBmcm9tIHRoZSBpbmRpY2F0ZWQgMS0xLzQgcGN0LCBsZWFkIG1hbmFnZXIgU3dpc3MgQmFuayBDb3JwIHNhaWQuICAgICBUaGUgY29udmVyc2lvbiBwcmljZSBoYXMgYmVlbiBzZXQgYXQgMSw1OTAgeWVuLCB0aGUgc2FtZSBhcyB0b2RheSdzIGNsb3NlLiAgICAgVGhlIGV4Y2hhbmdlIHJhdGUgaGFzIGJlZW4gc2V0IGF0IDk2Ljg0IHllbiB0byB0aGUgZnJhbmMuICAgICBQYXltZW50IGlzIGR1ZSBBcHJpbCAzMC4gVGhlIGNvbnZlcnNpb24gcGVyaW9kIGlzIGZyb20gTWF5IDIwLCAxOTg3IHVudGlsIFNlcHRlbWJlciAyMCwgMTk5Mi4gIFJFVVRFUiAzOwoxOTg3MDQwOQlDUkFZIDxDWVI+IEdFVFMgNi42IE1MTiBETFJTIE9SREVSIEZST00gQlAgPEJQPiBDcmF5IFJlc2VhcmNoIEluYyBzYWlkIEJyaXRpc2ggUGV0cm9sZXVtIG9yZGVyZWQgYSBDUkFZIFgtTVAvMjQgc3VwZXJjb21wdXRlciB2YWx1ZWQgYXQgYWJvdXQgNi42IG1sbiBkbHJzLiAgICAgVGhlIGxlYXNlZCBzeXN0ZW0gd2lsbCBiZSBpbnN0YWxsZWQgYXQgQlAgRXhwbG9yYXRpb24gQ28gTHRkJ3MgTG9uZG9uIGhlYWRxdWFydGVycyBpbiB0aGUgZm91cnRoIHF1YXJ0ZXIgb2YgMTk4NywgcGVuZGluZyBleHBvcnQgbGljZW5zZSBhcHByb3ZhbCwgaXQgc2FpZC4gICAgIFRoZSBDUkFZIFgtTVAvMjQgd2lsbCByZXBsYWNlIGEgQ1JBWSBYLU1QLzEyIHN1cGVyY29tcHV0ZXIgaW4gb3BlcmF0aW9uIHNpbmNlIDE5ODUsIGl0IGFkZGVkLiAgICAgU2VwYXJhdGVseSwgdGhlIGNvbXBhbnkgc2FpZCB0aGF0IGEgQ1JBWSBYLU1QLzI0IHN5c3RlbSB2YWx1ZWQgYXQgOC41IG1sbiBkbHJzIHdhcyBpbnN0YWxsZWQgYXQgTG9ja2hlZWQgTWlzc2lsZXMgYW5kIFNwYWNlIENvLiAgUmV1dGVyIDM7CjE5ODcwNDA5CUNSRURJVCBOQVRJT05BTCBJU1NVRVMgQklMTElPTiBGUkFOQyBDT05WRVJUSUJMRSBDcmVkaXQgTmF0aW9uYWwgaXMgaXNzdWluZyBhIG9uZSBiaWxsaW9uIGZyYW5jIGNvbnZlcnRpYmxlIGJvbmQgaXNzdWUgaW4gdHdvIHRyYW5jaGVzIGJvdGggcGF5aW5nIDguNTAgcGN0IGFuZCBpbiA1LDAwMCBmcmFuYyB1bml0cywgbGVhZCBtYW5hZ2VycyBDYWlzc2UgTmF0aW9uYWxlIGRlIENyZWRpdCBBZ3JpY29sZSwgVW5pb24gZGUgR2FyYW50aWUgZXQgZGUgUGxhY2VtZW50IGFuZCBNb3JnYW4gZXQgQ2llIHNhaWQuICAgICBCb3RoIHRyYW5jaGVzIHdpbGwgYmUgcmVkZWVtYWJsZSBhdCB0aGUgZW5kIG9mIHRoZWlyIGxpdmVzIGFuZCBib3RoIGhhdmUgYSBwYXltZW50IGRhdGUgb2YgQXByaWwgMjcuICAgICBPbmUgc2V2ZW4geWVhciB0cmFuY2hlIHdpbGwgYmUgcHJpY2VkIGF0IDk5Ljk0IHBjdC4gRWFjaCBib25kIHdpbGwgYmUgY29udmVydGlibGUgb24gYSBvbmUtZm9yLW9uZSBiYXNpcyBmb3IgYSA4LTEvMiB5ZWFyLCA4LjUwIHBjdCBib25kIHByaWNlZCBhdCA5OC43NiBwY3QsIHJlZGVlbWFibGUgYXQgdGhlIGVuZCBvZiBpdHMgbGlmZS4gICAgIFRoaXMgYm9uZCB3aWxsIHBheSBhIGZpcnN0IGNvdXBvbiBvZiA0LjI1IHBjdCBvbiBBcHJpbCAyNyBuZXh0IHllYXIgYW5kIHRoZSBwYXltZW50IGRhdGUgd2lsbCBiZSBPY3RvYmVyIDI3LCAxOTg3LiAgICAgQSAxMy15ZWFyIHRyYW5jaGUsIHByaWNlZCBhdCA5Ny43NCBwY3QsIHdpbGwgYWxzbyBiZSBjb252ZXJ0aWJsZSB1bnRpbCBPY3RvYmVyIDEwLCAxOTg3IG9uIGEgb25lIGZvciBvbmUgYmFzaXMgZm9yIGEgOC41MCBwY3QsIDEwLTEvMiB5ZWFyIHllYXIgYm9uZCBwcmljZWQgYXQgOTguMDggcGN0LiAgICAgVGhpcyBib25kIHdpbGwgcGF5IGEgZmlyc3QgY291cG9uIG9mIDIxMi41MCBmcmFuY3Mgb24gT2N0b2JlciAyNyBuZXh0IHllYXIgYW5kIHRoZSBwYXltZW50IGRhdGUgd2lsbCBiZSBPY3RvYmVyIDI3IHRoaXMgeWVhci4gIFJFVVRFUiAzOwoxOTg3MDQwOQlDUlVERSBPSUwgTkVUQkFDS1MgVVAgU0hBUlBMWSBJTiBFVVJPUEUsIFUuUy4gQ3J1ZGUgb2lsIG5ldGJhY2sgdmFsdWVzIGluIGNvbXBsZXggcmVmaW5lcmllcyByb3NlIHNoYXJwbHkgaW4gRXVyb3BlIGFuZCBmaXJtZWQgaW4gdGhlIFUuUy4gbGFzdCBGcmlkYXkgZnJvbSB0aGUgcHJldmlvdXMgd2VlayBidXQgZmVsbCBzaGFycGx5IGluIFNpbmdhcG9yZSwgYWNjb3JkaW5nIHRvIGNhbGN1bGF0aW9ucyBieSBSZXV0ZXJzIFBpcGVsaW5lLiAgICAgVGhlIGZpcm1lciB0b25lIHRvIHJlZmluaW5nIG1hcmdpbnMgaW4gRXVyb3BlIGFuZCB0aGUgVS5TLiByZWxlY3RlZCBoaWdoZXIgcHJpY2VzIGZvciBwZXRyb2xldW0gcHJvZHVjdHMsIHBhcnRpY3VsYXJseSBnYXNvbGluZSwgYW5kIHN1cHBvcnQgZnJvbSBjcnVkZSBvaWwgcHJpY2VzLiAgICAgTmV0YmFjayB2YWx1ZXMgZm9yIGNydWRlIG9pbCByZWZpbmVkIGluIE5vcnRoZXJuIEV1cm9wZSByb3NlIHN1YnN0YW50aWFsbHkgZm9sbG93aW5nIHN0cm9uZyBnYWlucyBpbiBnYXNvbGluZSBwcmljZXMgdGhlcmUuIEJyZW50IGlzIHZhbHVlZCBhdCAxOS40NSBkbHJzLCB1cCA1NiBjdHMgYSBiYXJyZWwgb3IgdGhyZWUgcGN0IGZyb20gdGhlIHByZXZpb3VzIHdlZWsuICAgICBJbiB0aGUgVS5TLiBHdWxmLCBzd2VldCBjcnVkZXMgcm9zZSBpbiB2YWx1ZSBieSAxNCBjdHMgdG8gMTkuMzMgZGxycyBmb3IgV2VzdCBUZXhhcyBJbnRlcm1lZGlhdGUsIHVwIGFib3V0IDAuNyBwY3QuICAgICBTb3VyIGdyYWRlcyBpbiB0aGUgVS5TLiBHdWxmIHNob3dlZCBhbiBpbmNyZWFzZSBvZiAzMyBjdHMgYSBiYXJyZWwgZm9yIEFsYXNrYSBOb3J0aCBTbG9wZSwgdXAgMS43IHBjdC4gICAgIEJ1dCBuZXRiYWNrcyBmb3IgY3J1ZGUgb2lsIHJlZmluZWQgaW4gU2luZ2Fwb3JlIGZlbGwgc2hhcnBseSwgZG93biAxNSBjdHMgdG8gYXMgbXVjaCBhcyA2OCBjdHMgYSBiYXJyZWwgYXMgYW1wbGUgZGlzdGlsbGF0ZSBzdXBwbGllcyB3ZWlnaGVkIG9uIHBldHJvbGV1bSBwcm9kdWN0IHByaWNlcy4gICAgIEF0dGFrYSBpbiBTaW5nYXBvcmUgaXMgdmFsdWVkIGF0IDE4LjU1IGRscnMsIGEgZGVjbGluZSBvZiA2OCBjdHMgYSBiYXJyZWwgb3IgMy41IHBjdCBmcm9tIHRoZSBwcmV2aW91cyB3ZWVrLiAgICAgRm9yIHJlZmluZXJpZXMgaW4gdGhlIE1lZGl0ZXJyYW5lYW4sIG5ldGJhY2sgdmFsdWVzIHdlcmUgbW9zdGx5IGxvd2VyLCB3aXRoIGRlY2xpbmVzIG9mIHNldmVuIHRvIDE0IGN0cy4gVGhlIHZhbHVlIG9mIEt1d2FpdCBjcnVkZSBmZWxsIDE0IGN0cyB0byAxOC4zNyBkbHJzLCB3aGlsZSBJcmFuaWFuIExpZ2h0IGZlbGwgMTEgY3RzIHRvIDE5LjE0IGRscnMuICAgICBPbiB0aGUgVS5TLiBXZXN0IENvYXN0LCBuZXRiYWNrIHZhbHVlcyBmb3IgQU5TIENJRiBMLkEuIGFsc28ganVtcGVkIHNoYXJwbHksIHVwIDQwIGN0cyBhIGJhcnJlbCBvciAyLjIgcGN0IHRvIDE4LjgyIGRscnMgb24gaGlnaGVyIGdhc29saW5lIHByaWNlcy4gIFJldXRlciAzOwoxOTg3MDQwOQlEQVlUT04gSFVEU09OIDxESD4gTUFSQ0ggU0FMRVMgT0ZGIDQuOSBQQ1QgRGF5dG9uIEh1ZHNvbiBDb3JwIHNhaWQgcmV0YWlsIHNhbGVzIGZvciB0aGUgZml2ZSB3ZWVrcyBlbmRlZCBBcHJpbCBGb3VyIHdlcmUgNzkxLjggbWxuIGRscnMgY29tcGFyZWQgdG8gNzU1LjYgbWxuIGRscnMgYSB5ZWFyIGFnby4gT24gYSBjb21wYXJhYmxlIHN0b3JlIGJhc2lzLCBpdCBzYWlkIHNhbGVzIGRlY2xpbmVkIDQuOSBwY3QuICAgICBTYWxlcyBmb3IgdGhlIG5pbmUgbW9udGhzIHdlcmUgMS4zOSBiaWxsaW9uIGRscnMsIHVwIGZyb20gMS4yNiBiaWxsaW9uIGRscnMgaW4gdGhlIHNhbWUgMTk4NiBwZXJpb2QuIE9uIGEgY29tcGFyYWJsZSBzdG9yZSBiYXNpcywgdGhlIHNhbGVzIHJvc2UgMS4yIHBjdC4gIFJldXRlciAzOwoxOTg3MDQwOQlERUtBTEIgQ09SUCA8REtMQkI+IDJORCBRVFIgRkVCIDI4IE5FVCBTaHIgMjAgY3RzIHZzIDE0IGN0cyAgICAgTmV0IDIuNCBtbG4gdnMgMS43IG1sbiAgICAgUmV2cyAxMzYuNyBtbG4gdnMgMTc0LjQgbWxuICAgICBTaXggTXRocyAgICAgU0RociA3MiBjdHMgdnMgODIgY3RzICAgICBOZXQgOC42IG1sbiB2cyA5LjkgbWxuICAgICBSZXZzIDIxMi41IG1sbiB2cyAyNjguOCBtbG4gIFJldXRlciAzOwoxOTg3MDQwOQlESUFNT05EIENSWVNUQUwgPERTTFQ+IE1JR0hUIFNFTEwgU0FMVCBVTklUIERpYW1vbmQgQ3J5c3RhbCBTYWx0IENvIHNhaWQgaXQgbWlnaHQgc2VsbCBpdHMgc2FsdCBkaXZpc2lvbi4gICAgIFRoZSBjb21wYW55IHNhaWQgaXQgcmV0YWluZWQgRmlyc3QgQm9zdG9uIENvcnAgdG8gYXNzaXN0IGl0IHdpdGggdGhlIHBvc3NpYmxlIHNhbGUgb2YgdGhlIGRpdmlzaW9uLCAiYXNzdW1pbmcgYSBmYWlyIHByaWNlIGFuZCByZWFzb25hYmxlIHRlcm1zIGNhbiBiZSBvYnRhaW5lZC4iICAgICBEaWFtb25kIENyeXN0YWwgc2FpZCBzYWxlIG9mIHRoZSB1bml0IHdhcyBpbiB0aGUgYmVzdCBsb25nLXRlcm0gaW50ZXJlc3RzIG9mIGl0cyBzaGFyZWhvbGRlcnMuICAgICBUaGUgY29tcGFueSBhbHNvIHNhaWQgaXQgaW5jb3Jwb3JhdGVkIGl0cyBQYWNrZXQgUHJvZHVjdHMgRGl2aXNpb24gYXMgb2YgQXByaWwgb25lLiBUaGUgdW5pdCB3aWxsIGJlIGFuIGluZGlyZWN0IHdob2xseSBvd25lZCBzdWJzaWRpYXJ5IGNhbGxlZCBEaWFtb25kIENyeXN0YWwgU3BlY2lhbHR5IEZvb2RzIEluYy4gQ3VycmVudCBtYW5hZ2VtZW50IG9mIHRoZSBkaXZpc2lvbiB3aWxsIHJlbWFpbi4gIFJldXRlciAzOwoxOTg3MDQwOQlESVNFQVNFIFBVVFMgWklNQkFCV0UgQkVFRiBFWFBPUlRTIElOIEpFT1BBUkRZIFppbWJhYndlJ3MgYmVlZiBleHBvcnRzIHRvIHRoZSBFdXJvcGVhbiBDb21tdW5pdHkgKEVDKSwgcG90ZW50aWFsbHkgd29ydGggNzAgbWxuIFppbWJhYndlYW4gZGxycyB0aGlzIHllYXIsIG1heSBiZSBqZW9wYXJkaXNlZCBieSBhbiBvdXRicmVhayBvZiBmb290IGFuZCBtb3V0aCBkaXNlYXNlIGluIHNvdXRod2VzdGVybiBNYXRhYmVsZWxhbmQsIGluZHVzdHJ5IHNvdXJjZXMgc2FpZC4gICAgIFRoZSBjb3VudHJ5IGhhcyB0ZW1wb3JhcmlseSBzdXNwZW5kZWQgYmVlZiBleHBvcnRzIHRvIHRoZSBFQyBiZWNhdXNlIG9mIHRoZSBvdXRicmVhayBhbmQgYXdhaXRzIGEgZGVjaXNpb24gZnJvbSB0aGUgRUMgdmV0ZXJpbmFyeSBjb21taXR0ZWUsIHdoaWNoIGlzIGNvbnNpZGVyaW5nIGEgZm9ybWFsIGJhbi4gICAgIFRoZSBvdXRicmVhayBpbiB0aGUgY291bnRyeSdzIG1haW4gcmFuY2hpbmcgcHJvdmluY2UgaGFzIGFscmVhZHkgbGVkIG5laWdoYm91cmluZyBiZWVmLXByb2R1Y2luZyBCb3Rzd2FuYSBhbmQgWmFtYmlhIHRvIGJhciBiZWVmIGFuZCBkYWlyeSBpbXBvcnRzIGZyb20gWmltYmFid2UsIHRocmVhdGVuaW5nIHRoZSBkYWlyeSBpbmR1c3RyeSB3aXRoIGEgbG9zcyBvZiBhdCBsZWFzdCBvbmUgbWxuIGRscnMgaW4gZXhwb3J0IHJldmVudWUuICAgICAiVGhlIHNpdHVhdGlvbiBpcyBzdGlsbCB1bmNlcnRhaW4gYXQgdGhlIG1vbWVudC4gTm9ybWFsbHkgd2hlbiBhbiBvdXRicmVhayBvY2N1cnMgdGhlcmUgaXMgYW4gYXV0b21hdGljIHN1c3BlbnNpb24gb2YgYmVlZiBleHBvcnRzLCIgb25lIGluZHVzdHJ5IHNvdXJjZSBzYWlkIHllc3RlcmRheS4gICAgICBDb21tZW50aW5nIG9uIEVDIHBvbGljeSwgaGUgZXhwbGFpbmVkLCAiRGVwZW5kaW5nIG9uIHRoZSBzZXJpb3VzbmVzcyBvZiB0aGUgb3V0YnJlYWsgdGhlICh2ZXRlcmluYXJ5KSBjb21taXR0ZWUgdGhlbiBkZWNpZGVzIG9uIHRocmVlIG9wdGlvbnMsIGFsbG93aW5nIHVzIHRvIGNvbnRpbnVlIGV4cG9ydGluZyBiZWVmIGZyb20gZGlzZWFzZS1mcmVlIGFyZWFzLCBjbGFtcGluZyBhIHRocmVlLW1vbnRoIHN1c3BlbnNpb24gb24gZXhwb3J0cyBvciBiYW5uaW5nIHVzIGZyb20gZXhwb3J0aW5nIGZvciBhIHllYXIuIFdlIGFyZSBzdGlsbCBhd2FpdGluZyB0aGVpciBkZWNpc2lvbiwiIGhlIGFkZGVkLCBhc2tpbmcgbm90IHRvIGJlIGlkZW50aWZpZWQuICAgICBaaW1iYWJ3ZSB3YXMgZ3JhbnRlZCBhbiBleHBvcnQgcXVvdGEgb2YgOCwxMDAgdG9ubmVzIG9mIGhpZ2gtZ3JhZGUgYmVlZiB0byBFQyBtYXJrZXRzIGluIDE5ODUgYWZ0ZXIgdGhlIGNvdW50cnkgaGFkIHNwZW50IG1pbGxpb25zIG9mIGRvbGxhcnMgZXJlY3RpbmcgZGlzZWFzZS1jb250cm9sIGZlbmNlcyBhbmQgdXBncmFkaW5nIGFiYXR0b2lycyB0byBtZWV0IHN0cmluZ2VudCBFQyBydWxlcy4gICAgIFNob3VsZCB0aGUgRUMgYmFuIFppbWJhYndlYW4gZXhwb3J0cywgdGhlIGNvdW50cnkgd2lsbCBiZSBmb3JjZWQgdG8gc2VsbCBpdHMgYmVlZiBvbiBnbHV0dGVkIHdvcmxkIGJlZWYgbWFya2V0cyBhdCBsb3cgcHJpY2VzLCB0aGUgc291cmNlIHNhaWQuIFByb2plY3RlZCBlYXJuaW5ncyBmcm9tIGJlZWYgc2FsZXMgY291bGQgZmFsbCBhYm91dCAyMyBtbG4gZGxycyBhcyBhIHJlc3VsdCwgaGUgc2FpZC4gIFJldXRlciAzOwoxOTg3MDQwOQlESVNORVkgRkFNSUxZIE1BS0VTIEJJRCBGT1IgSE9MTFkgU1VHQVIgPEhMWT4gVGhlIFJveSBEaXNuZXkgZmFtaWx5IGRpc2Nsb3NlZCBpbiBhIGZpbGluZyB3aXRoIHRoZSBTZWN1cml0aWVzIGFuZCBFeGNoYW5nZSBDb21taXNzaW9uIHRoYXQgaXQgbWFkZSBhIGJpZCB0byBhY3F1aXJlIEhvbGx5IFN1Z2FyIENvcnAgZm9yIGEgcGFja2FnZSBvZiBjYXNoIGFuZCBzZWN1cml0aWVzLiAgICAgU2hhbXJvY2sgSG9sZGluZ3Mgb2YgQ2FsaWZvcm5pYSBJbmMsIGEgRGlzbmV5IGZhbWlseSBjb21wYW55LCBzYWlkIGl0IHN1Ym1pdHRlZCB0aGUgYmlkIG9uIEFwcmlsIDggdG8gU2Fsb21vbiBCcm90aGVycyBJbmMsIEhvbGx5IFN1Z2FyJ3MgaW52ZXN0bWVudCBiYW5rZXIuICAgICBUaGUgb2ZmZXIgd2FzIGZvciA0NSBkbHJzIGluIGNhc2gsIHNlY3VyaXRpZXMgd2l0aCBhIGZhY2UgdmFsdWUgb2YgNzAgZGxycywgYW5kIGEgImNvbnRpbmdlbnQgcGF5bWVudCBjZXJ0aWZpY2F0ZSIgdGhhdCB3b3VsZCBwYXkgb3V0IGFzIG11Y2ggYXMgNzAgZGxycyBvdmVyIGEgMjAteWVhciBwZXJpb2QgZm9yIGVhY2ggc2hhcmUgb2YgSG9sbHkgU3VnYXIgb3V0c3RhbmRpbmcuICAgICBUaGUgRGlzbmV5IGZhbWlseSBhbHJlYWR5IGhvbGRzIDEwMSwzMDAgSG9sbHkgU3VnYXIgc2hhcmVzIG9yIDkuMCBwY3Qgb2YgdGhlIHRvdGFsIG91dHN0YW5kaW5nIGZvbGxvd2luZyBwdXJjaGFzZXMgb2YgMTIsNTAwIHNoYXJlcyBNYXJjaCAxMy1BcHJpbCAxNywgU2hhbXJvY2sgdG9sZCB0aGUgU0VDLiAgICAgU2hhbXJvY2sgc2FpZCBpdCBoYWQgYXNrZWQgZm9yIGNlcnRhaW4gaW5mb3JtYXRpb24gYWJvdXQgSG9sbHkgU3VnYXIncyBmaW5hbmNpYWwgY29uZGl0aW9uIGJ1dCBoYWQgYmVlbiB0dXJuZWQgZG93bi4gSXQgc2FpZCBpdHMgb2ZmZXIgd2FzIHRoZXJlZm9yZSBzdWJqZWN0IHRvIGZ1cnRoZXIgZGlzY3Vzc2lvbnMuICAgICAiT25jZSB3ZSBoYXZlIGhhZCBhbiBvcHBvcnR1bml0eSB0byBjb21wbGV0ZSBvdXIgZHVlIGRpbGlnZW5jZSBldmFsdWF0aW9uIG9mIHRoZSBjb21wYW55LCBpbmNsdWRpbmcgaW5zcGVjdGlvbnMgb2YgY2VydGFpbiBmYWNpbGl0aWVzIGFuZCBtZWV0aW5ncyB3aXRoIGtleSBtYW5hZ2VtZW50IHBlcnNvbm5lbCwgd2Ugd291bGQgYmUgcHJlcGFyZWQgdG8gbmVnb3RpYXRlIGFsbCBhc3BlY3RzIG9mIG91ciBwcm9wb3NhbCwgaW5jbHVkaW5nIHByaWNlLCIgaXQgc2FpZCBpbiBpdHMgQXByaWwgOCBsZXR0ZXIuIFJFVVRFUl5NIDM7CjE5ODcwNDA5CURPRSBSVU4gUkFJU0VTIExFQUQgUFJJQ0UgMC41MCBDVCBUTyAyNi41MCBDVFMgRG9lIFJ1biBDb21wYW55IHNhaWQgaXQgaXMgaW5jcmVhc2luZyB0aGUgcHJpY2Ugb2YgaXRzIGNvcnJvZGluZyBncmFkZSBsZWFkIGJ5IG9uZS1oYWxmIGNlbnQgdG8gMjYuNTAgY2VudHMgYSBsYiwgZWZmZWN0aXZlIGltbWVkaWF0ZWx5LiAgICAgVGhlIHByaWNlIGlzIHF1b3RlZCBGT0IsIEhlcmN1bGFuZXVtLCBNby4sIGFuZCBGT0IsIEJvc3MsIE1vLiwgd2l0aCBmcmVpZ2h0IGFsbG93ZWQgZm9yIGNhcmxvYWQgcXVhbnRpdGllcy4gICAgICBSZXV0ZXIgMzsKMTk4NzA0MDkJRE9MTEFSIEVORFMgTE9XRVIgSU4gTEFDS0xVU1RSRSBGUkFOS0ZVUlQgVGhlIGRvbGxhciBkcmlmdGVkIGRvd24gdG8gZW5kIG9uZSBwZmVubmlnIGxvd2VyIGFmdGVyIGEgbGFja2x1c3RyZSBzZXNzaW9uLCBoZWxkIGluIGxpbWl0cyBieSB0aGUgbGFjayBvZiBjb25jcmV0ZSBuZXdzIGZyb20gdGhlIEdyb3VwIG9mIFNldmVuIG1lZXRpbmcgYW5kIGNvbW1lbnRzIG9uIHRoZSBlZGdlIG9mIHRoZSBXYXNoaW5ndG9uIElNRi9Xb3JsZCBCYW5rIG1lZXRpbmcuICAgICBEZWFsZXJzIHNhaWQgdGhlIGNvbW11bmlxdWUgZWFybHkgaW4gdGhlIEV1cm9wZWFuIG1vcm5pbmcgZnJvbSB0aGUgRy03IG1lZXRpbmcgY29udGFpbmVkIG5vIHNpZ25pZmljYW50IG5ldyBmYWN0b3JzIGFuZCBhbHRob3VnaCB0aGUgZG9sbGFyIGRpcHBlZCBpdCBnZW5lcmFsbHkgcmVzaXN0ZWQgZnVydGhlciBhdHRlbXB0cyB0byBwdXNoIGl0IGxvd2VyIHRocm91Z2ggdGhlIGRheS4gICAgIFRoZSBVLlMuIEN1cnJlbmN5IGVuZGVkIGF0IDEuODI3MC84MCBtYXJrcywgYmVsb3cgeWVzdGVyZGF5J3MgbGFzdCAxLjgzNjUvNzUuICAgICBLb2NoIHNhaWQgdGhlIGFzc2Vzc21lbnQgb2YgdGhlIGRvbGxhcidzIGRpcmVjdGlvbiB3YXMgYmFzZWQgb24gYSBnbG9iYWwgdmlldywgd2l0aCBvcGVyYXRvcnMgcGF5aW5nIG1vc3QgYXR0ZW50aW9uIHRvIGNvbW1lbnRzIGJ5IGZpbmFuY2Ugb2ZmaWNpYWxzIHRvIHNlZSBob3cgY2xvc2VseSB0aGV5IHN0YXRlZCBhZGhlcmVuY2UgdG8gaW50ZXJuYXRpb25hbCBhZ3JlZW1lbnRzIHN1Y2ggYXMgdGhvc2Ugc2V0IGF0IHRoZSBQbGF6YSBIb3RlbCBpbiAxOTg1IGFuZCBpbiBQYXJpcyBvbiBGZWJydWFyeSAyMi4gICAgIEtvY2ggZGVzY3JpYmVkIHRoZSB3b3JkaW5nIG9mIHRoZSBjb21tdW5pcXVlIGZyb20gdGhlIEctNyBhcyAic29mdCBhcyB3YXguIiAgICAgQnVuZGViYW5rIHZpY2UtcHJlc2lkZW50IEhlbG11dCBTY2hsZXNpbmdlciB0b2xkIFJldXRlcnMgaW4gYSB0ZWxlcGhvbmUgaW50ZXJ2aWV3IHRoYXQgdGhlIEdlcm1hbiBjZW50cmFsIGJhbmsgc2VlcyBubyBjdXJyZW50IHJlYXNvbiB0byBjaGFuZ2UgbW9uZXRhcnkgY291cnNlIGF0IHByZXNlbnQuICAgICBTY2hsZXNpbmdlciB3YXMgcmVzcG9uZGluZyB0byBxdWVzdGlvbnMgZm9sbG93aW5nIHJlbWFya3MgeWVzdGVyZGF5IGJ5IEJ1bmRlc2JhbmsgYm9hcmQgbWVtYmVyIENsYXVzIEtvZWhsZXIgYW5kIFdlc3QgQmVybGluIHN0YXRlIGNlbnRyYWwgYmFuayBwcmVzaWRlbnQgRGlldGVyIEhpc3MsIHdoaWNoIGRlYWxlcnMgc2FpZCByZXZpdmVkIHNvbWUgc3BlY3VsYXRpb24gdGhhdCBHZXJtYW4gaW50ZXJlc3QgcmF0ZSBjdXRzIG1heSBiZSB1bmRlciBjb25zaWRlcmF0aW9uLiAgICAgR2VybWFuIGNhbGwgbW9uZXkgd2FzIHNsaWdodGx5IHNvZnRlciB0b2RheSwgYXQgYXJvdW5kIDMuNzAgcGN0IGFmdGVyIDMuODAgeWVzdGVyZGF5LiAgICAgU29tZSBkZWFsZXJzIHNhaWQgcmF0ZXMgb24gbmV3IGxpcXVpZGl0eSBpbmplY3Rpb25zIGFkZGVkIHZpYSBCdW5kZXNiYW5rIHNlY3VyaXRpZXMgcmVwdXJjaGFzZSBhZ3JlZW1lbnRzIG1heSBiZSBjdXQgbmV4dCB3ZWVrLiBIb3BlcyBvZiBhIGN1dCB3ZXJlIGRhc2hlZCBvbiBUdWVzZGF5IHdpdGggYW4gYWxsb2NhdGlvbiBhdCBhbiB1bmNoYW5nZWQgMy44MCBwY3QuICAgICBCdXQgc3BlYWtpbmcgb2YgdGhlIHBhY3QgdGVuZGVyIHJhdGUgbmV4dCB3ZWVrLCBTY2hsZXNpbmdlciBzYWlkLCAic2luY2UgdGhlIGNlbnRyYWwgYmFuayBjb3VuY2lsIGdpdmVzIGl0cyBvcGluaW9uIG9uIHRoaXMgdGhlbWUgb25seSBldmVyeSAxNCBkYXlzLCB0aGlzIGlzIGhhcmRseSBwcm9iYWJsZS4iICAgICBFdXJvbWFyayByYXRlcyBzY2FyY2VseSByZXNwb25kZWQgdG8gdGhlIGNlbnRyYWwgYmFua2VycyBjb21tZW50cywgd2l0aCBzaXggbW9udGhzIGZ1bmRzIGVuZGluZyB1bmFsdGVyZWQgYXQgYXJvdW5kIDMtNy84IHBjdC4gRXVyb2RvbGxhcnMgZm9yIHRoZSBzYW1lIG1hdHVyaXR5IHJvc2UgYSBmcmFjdGlvbmFsIDEvMTYgcGN0IGZyb20geWVzdGVyZGF5IHRvIGFyb3VuZCA2LTExLzE2IHBjdC4gICAgIFN0ZXJsaW5nIGRpcHBlZCB0byBlbmQgYXQgMi45NTIvOTU2IG1hcmtzIGFmdGVyIDIuOTYwLzk2NSBsYXN0IG5pZ2h0LiBUaGUgU3dpc3MgZnJhbmMgZmlybWVkIHNsaWdodGx5IHRvIDEyMC4zMC80NSBtYXJrcyBwZXIgMTAwIGZyb20gMTIwLjI1LzQwLCB3aXRoIHRoZSB5ZW4gc29hcmluZyBob3dldmVyIHRvIDEuMjU3MC85MCBtYXJrcyBwZXIgMTAwIGZyb20gMS4yNTE1LzM1IHllc3RlcmRheS4gICAgIEVNUyBjdXJyZW5jaWVzIHNhdyB0aGUgRnJlbmNoIGZyYW5jIGVuZCB1bmNoYW5nZWQgZnJvbSBsYXN0IG5pZ2h0IGF0IDMwLjAzLzA2IG1hcmtzIHBlciAxMDAsIHdpdGggdGhlIEJlbGdpYW4gZnJhbmMgZWFzaW5nIGhvd2V2ZXIgdG8gNC44MjkvODMxIG1hcmtzIHBlciAxMDAgZnJvbSA0LjgzMS84MzMuICBSRVVURVIgMzsKMTk4NzA0MDkJRE9MTEFSIEZBTExTIEJFTE9XIDE0MyBZRU4gSU4gVE9LWU8gVGhlIGRvbGxhciBmZWxsIGJlbG93IDE0MyB5ZW4gaW4gaGVjdGljIGVhcmx5IFRva3lvIHRyYWRpbmcgZGVzcGl0ZSBhZ2dyZXNzaXZlIEJhbmsgb2YgSmFwYW4gaW50ZXJ2ZW50aW9uLCBkZWFsZXJzIHNhaWQuICAgICBBZnRlciBvcGVuaW5nIGF0IGEgVG9reW8gbG93IG9mIDE0My43NSB5ZW4sIHRoZSBkb2xsYXIgZmVsbCBhcyBsb3cgYXMgMTQyLjkwIHllbiBvbiBoZWF2eSBzZWxsaW5nIGxlZCBieSBzZWN1cml0aWVzIGZpcm1zIGFuZCBpbnN0aXR1dGlvbmFsIGludmVzdG9ycywgdGhleSBzYWlkLiAgUkVVVEVSIDM7CjE5ODcwNDA5CURPTExBUiBPUEVOUyBBVCBUT0tZTyBSRUNPUkQgTE9XIE9GIDE0My43NSBZRU4gVGhlIGRvbGxhciBvcGVuZWQgYXQgYSByZWNvcmQgVG9reW8gbG93IG9mIDE0My43NSB5ZW4gZGVzcGl0ZSBhZ2dyZXNzaXZlIEJhbmsgb2YgSmFwYW4gaW50ZXJ2ZW50aW9uLCBkZWFsZXJzIHNhaWQuICAgICBUaGUgcHJldmlvdXMgcmVjb3JkIGxvdyB3YXMgMTQ0LjcwIHllbiBzZXQgb24gTWFyY2ggMzAuIFRoZSBvcGVuaW5nIGNvbXBhcmVzIHdpdGggMTQzLjkwLzE0NC4wMCB5ZW4gYXQgdGhlIGNsb3NlIGluIE5ldyBZb3JrLiAgICAgVGhlIGNlbnRyYWwgYmFuayBib3VnaHQgZG9sbGFycyB0aHJvdWdoIFRva3lvIGJyb2tlcnMganVzdCBiZWZvcmUgYW5kIGFmdGVyIHRoZSBtYXJrZXQgb3BlbmluZywgdGhlIGRlYWxlcnMgc2FpZC4gICAgIFRoZSBpbnRlcnZlbnRpb24gdG9vayBwbGFjZSB3aGVuIHRoZSBkb2xsYXIgZmVsbCB0byAxNDMuMjAgeWVuLCBvbmUgZGVhbGVyIHNhaWQuICAgICBUaGUgZG9sbGFyIG9wZW5lZCBhdCAxLjgxNTUvNjAgbWFya3MgYWdhaW5zdCAxLjgxODcvOTcgaW4gTmV3IFlvcmsuICAgICBUaGUgZG9sbGFyIGZlbGwgYXMgbG93IGFzIDE0Mi45MCB5ZW4gZGVzcGl0ZSBjZW50cmFsIGJhbmsgaW50ZXJ2ZW50aW9uIGF0IDE0My4wMCB5ZW4sIGRlYWxlcnMgc2FpZC4gICAgIFNlbGxpbmcgcHJlc3N1cmUgd2FzIHN0cm9uZyBmcm9tIHNlY3VyaXRpZXMgaG91c2VzIGFuZCBpbnN0aXR1dGlvbmFsIGludmVzdG9ycyBpbiBoZWN0aWMgYW5kIG5lcnZvdXMgdHJhZGluZyBvbiB1bmRlcmx5aW5nIGJlYXJpc2ggc2VudGltZW50IGZvciB0aGUgZG9sbGFyLCB0aGV5IHNhaWQuICAgICBNb3N0IGRlYWxlcnMgd2VyZSBzdXJwaXNlZCBieSB0aGUgZG9sbGFyJ3Mgc2hhcnAgZmFsbCBhZ2FpbnN0IHRoZSB5ZW4gaW4gTmV3IFlvcmssIGFsdGhvdWdoIG1hbnkgaGFkIGV4cGVjdGVkIHN1Y2ggYSBkcm9wIHRvIGhhcHBlbiBldmVudHVhbGx5LiAgICAgSW5zdGl0dXRpb25hbCBpbnZlc3RvcnMgYXJlIGV4cGVjdGVkIHRvIHNlbGwgdGhlIGRvbGxhciBhZ2dyZXNzaXZlbHkgaWYgaXQgcmlzZXMgdG8gYXJvdW5kIDE0My41MCB5ZW4sIGRlYWxlcnMgc2FpZC4gICAgIFRoZSBVLlMuIEN1cnJlbmN5IHN0ZWFkaWVkIHdlbGwgYWJvdmUgMTQzLjAwIHllbiBhZnRlciBCYW5rIG9mIEphcGFuIGludGVydmVudGlvbiBhbmQgc2NhdHRlcmVkIHNob3J0LWNvdmVyaW5nLCB0aGV5IHNhaWQuICAgICBUaGUgZG9sbGFyIG9wZW5lZCBhdCAxLjUxMjAvMzAgU3dpc3MgZnJhbmNzIGFnYWluc3QgMS41MDg1LzAwIGF0IHRoZSBOZXcgWW9yayBjbG9zZS4gICAgIFN0ZXJsaW5nIHN0YXJ0ZWQgYXQgMS42MTkwLzAwIGRscnMgYWdhaW5zdCAxLjYxOTUvMDUuICBSRVVURVIgMzsKMTk4NzA0MDkJRS5GLiBIVVRUT04gPEVGSD4gVU5JVCdTIFBVUk9MQVRPUiBPRkZFUiBFWFBJUkVTIEUuRi4gSHV0dG9uIExCTyBJbmMgc2FpZCB0aGUgdGVuZGVyIG9mZmVyIGJ5IGl0cyB3aG9sbHkgb3duZWQgdW5pdCwgUEMgQWNxdWlzaXRpb24gSW5jLCBmb3IgUHVyb2xhdG9yIENvdXJpZXIgQ29ycCA8UENDPiBleHBpcmVkIGF0IDI0MDAgRURUIHllc3RlcmRheSB3aXRob3V0IHRoZSBwdXJjaGFzZSBvZiBhbnkgUHVyb2xhdG9yIGNvbW1vbiBzdG9jay4gICAgIEh1dHRvbiBhZGRlZCB0aGF0IFBDIEFjcXVpc2l0aW9uIGFsc28gdGVybWluYXRlZCBpdHMgbWVyZ2VyIGFncmVlbWVudCB3aXRoIFB1cm9sYXRvci4gICAgIEh1dHRvbiBzYWlkIHRoZSBvZmZlciwgd2hpY2ggaGFkIGJlZW4gY29uZGl0aW9uZWQgdXBvbiB0aGUgdGVuZGVyIG9mIGF0IGxlYXN0IDUsMTE2LDg5MiBQdXJvbGF0b3Igc2hhcmVzLCBvciBhYm91dCB0d28tdGhpcmRzIG9mIHRoZSBvdXRzdGFuZGluZyBzaGFyZXMsIHdhcyB0ZXJtaW5hdGVkIGJlY2F1c2UgdGhlIG1pbmltdW0gbnVtYmVyIG9mIHNoYXJlcyB3YXMgbm90IHRlbmRlcmVkLiAgICAgUHVyb2xhdG9yIGhhZCBlbnRlcmVkIGludG8gYSBkZWZpbml0aXZlIGFncmVlbWVudCB3aXRoIFBDIEFjcXVpc2l0aW9uLCBwYXJ0LW93bmVkIGJ5IEUuRi4gSHV0dG9uIExCTyBJbmMsIGEgdW5pdCBvZiBFLkYuIEh1dHRvbiwgYW5kIHNvbWUgb2ZmaWNlcnMgb2YgUHVyb2xhdG9yJ3MgVS5TLiBjb3VyaWVyIGRpdmlzaW9uLCBpbiB3aGljaCBQQyBvZmZlcmVkIHRvIHB1cmNoYXNlIDYsMzMyLDQ3MSBQdXJvbGF0b3IgY29tbW9uIHN0b2NrIHNoYXJlcyBmb3IgMzUgZGxycyBhIHNoYXJlLiAgICAgRm9sbG93aW5nIHRoYXQgbW92ZSwgUEMgQWNxdWlzaXRpb24gcGxhbm5lZCB0byBtZXJnZSBhIHN1YnNpZGlhcnkgaW50byBQdXJvbGF0b3IsIGNvbnZlcnRpbmcgYWxsIG91dHN0YW5kaW5nIFB1cm9sYXRvciBjb21tb24gaXQgZGlkIG5vdCBvd24gaW50byBhbiBhZ2dyZWdhdGUgNDYgbWxuIGRscnMgcHJpbmNpcGFsIGFtb3VudCBvZiAxMiBwY3QgZ3VhcmFudGVlZCBkZWJlbnR1cmVzIGR1ZSAyMDAyIGFuZCB3YXJyYW50cyB0byBwdXJjaGFzZSAxNSBwY3Qgb2YgYSBQdXJvbGF0b3IgdW5pdCBjb21wcmlzZWQgb2YgUHVyb2xhdG9yJ3MgVS5TIGNvdXJpZXIgb3BlcmF0aW9ucy4gICAgIEh1dHRvbiBzYWlkIGFzIG9mIDI0MDAgRURUIHllc3RlcmRheSBhYm91dCAxODEsMDAwIHNoYXJlcyBvZiBQdXJvbGF0b3IgY29tbW9uIHN0b2NrLCBvciBhYm91dCAyLjQgcGN0IG9mIHRoZSBvdXRzdGFuZGluZyBzaGFyZXMsIGhhZCBiZWVuIHZhbGlkbHkgdGVuZGVyZWQgYW5kIG5vdCB3aXRoZHJhd24uICAgICBQQyBBY3F1aXNpdGlvbiBoYXMgaW5zdHJ1Y3RlZCBpdHMgZGVwb3NpdG9yeSBmb3IgdGhlIG9mZmVyIHRvIHJldHVybiBwcm9tcHRseSB0aGUgUHVyb2xhdG9yIHN0b2NrIGRlcG9zaXRlZCBieSwgb3Igb24gYmVoYWxmIG9mLCB0ZW5kZXJpbmcgc2hhcmVob2xkZXJzLCBIdXR0b24gc2FpZC4gIFJldXRlciAzOwoxOTg3MDQwOQlFQyBDT01NSVNTSU9OIEFVVEhPUklTRUQgVE8gQlVZIE1BSVpFIElOIEpVTkUgVGhlIEV1cm9wZWFuIENvbW1pc3Npb24gd2FzIGF1dGhvcmlzZWQgdG8gYnV5IHVwIHRvIG9uZSBtbG4gdG9ubmVzIG9mIG1haXplIGludG8gaW50ZXJ2ZW50aW9uIHN0b3JlcyBpbiB0aGUgc2Vjb25kIGhhbGYgb2YgSnVuZSwgYWx0aG91Z2ggc2FsZXMgaW50byBpbnRlcnZlbnRpb24gbm9ybWFsbHkgZW5kIG9uIEFwcmlsIDMwLCBDb21taXNzaW9uIHNvdXJjZXMgc2FpZC4gICAgIFRoZXkgc2FpZCBhcHByb3ZhbCB3YXMgZ2l2ZW4gYnkgdGhlIEVDJ3MgQ2VyZWFscyBNYW5hZ2VtZW50IENvbW1pdHRlZSBiZWNhdXNlIG9mIHRoZSBwb3NzaWJsZSBkaXN0dXJiYW5jZSBvZiB0aGUgbWFya2V0IGR1ZSB0byBoZWF2eSBpbXBvcnRzIG9mIG1haXplIHVuZGVyIHRoZSBhZ3JlZW1lbnQgYmV0d2VlbiB0aGUgRUMgYW5kIHRoZSBVbml0ZWQgU3RhdGVzLiAgICAgVGhlIGFncmVlbWVudCBndWFyYW50ZWVzIGFjY2VzcyB0byB0aGUgU3BhbmlzaCBtYXJrZXQgZm9yIHR3byBtbG4gdG9ubmVzIG9mIG5vbi1FQyBtYWl6ZSBhIHllYXIgZm9yIHRoZSBuZXh0IGZvdXIgeWVhcnMuICAgICBUaGUgc291cmNlcyBzYWlkIHRoZSBpbnRlcnZlbnRpb24gcHJpY2UgZm9yIHRoZSBtYWl6ZSB3b3VsZCBiZSAyMDEuNDkgRWN1cyBhIHRvbm5lLiAgICAgVGhleSBzYWlkIGF0IHRoaXMgcHJpY2UgaXQgc2VlbWVkIHVubGlrZWx5IHRoYXQgdGhlIGZ1bGwgICAgIFRoZXkgYWRkZWQgdGhlIGRlY2lzaW9uIGlzIGFsc28gZGVzaWduZWQgdG8gcHJldmVudCBtYXNzaXZlIG9mZmVycyBvZiBtYWl6ZSBmb3IgaW50ZXJ2ZW50aW9uIGp1c3QgYWhlYWQgb2YgdGhlIG5vcm1hbCBBcHJpbCAzMCBkZWFkbGluZSwgd2hpY2ggY291bGQgYmUgY2F1c2VkIGJ5IHNwZWN1bGF0aW9uIGFib3V0IHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYWNjb3JkIHdpdGggdGhlIFVuaXRlZCBTdGF0ZXMuICBSZXV0ZXIgMzsKMTk4NzA0MDkJRUMgR1JBTlRTIEZSRUUgTUFSS0VUIEJBUkxFWSwgTUFJWkUgRVhQT1JUUyBUaGUgRXVyb3BlYW4gQ29tbWlzc2lvbiBhdXRob3Jpc2VkIHRoZSBleHBvcnQgb2YgNjUsMDAwIHRvbm5lcyBvZiBmcmVlIG1hcmtldCBiYXJsZXkgYXQgdG9kYXkncyB0ZW5kZXIgYXQgYSBtYXhpbXVtIHJlYmF0ZSBvZiAxMzguNzUgRXVyb3BlYW4gY3VycmVuY3kgdW5pdHMgYW5kIDU1LDAwMCB0b25uZXMgb2YgRnJlbmNoIG1haXplIGF0IDEzMCBFY3VzLCBncmFpbiB0cmFkZXJzIGhlcmUgc2FpZC4gICAgIEl0IHJlamVjdGVkIGJpZHMgZm9yIGJyZWFkbWFraW5nIGFuZCBmZWVkIHdoZWF0LCB0aGV5IHNhaWQuICBSZXV0ZXIgMzsKMTk4NzA0MDkJRUMgTEFVTkNIRVMgQU5USS1EVU1QSU5HIFBST0JFIE9OIEpBUEFORVNFIENISVBTIFRoZSBFdXJvcGVhbiBDb21tdW5pdHkgbGF1bmNoZWQgYW4gaW52ZXN0aWdhdGlvbiBpbnRvIGFsbGVnYXRpb25zIG9mIGR1bXBpbmcgYnkgSmFwYW5lc2Ugc2VtaWNvbmR1Y3RvciBtYWtlcnMgaW4gYSBtb3ZlIHdoaWNoIGRpcGxvbWF0cyBzYWlkIGNvdWxkIG1hcmsgYW4gaW50ZW5zaWZpY2F0aW9uIG9mIHdvcmxkIHRyYWRlIHN0cmFpbnMuICAgICBUb2t5byBhbHJlYWR5IGZhY2VzIGEgZGVhZGxpbmUgb2YgQXByaWwgMTcgZnJvbSBXYXNoaW5ndG9uIGZvciB0aGUgaW1wb3NpdGlvbiBvZiAzMDAgbWxuIGRscnMgd29ydGggb2YgdGFyaWZmcyBvbiBjaGlwcyBpdCBpbXBvcnRzIGludG8gdGhlIFUuUy4gICAgIFRoZSBFQyBFeGVjdXRpdmUgQ29tbWlzc2lvbiBzYWlkIHRvZGF5IHRoZSBFdXJvcGVhbiBFbGVjdHJpY2FsIENvbXBvbmVudCBNYW51ZmFjdHVyZXJzIEFzc29jaWF0aW9uIGNvbXBsYWluZWQgdGhhdCBKYXBhbmVzZSBmaXJtcyB3ZXJlIHNlbGxpbmcgaGlnaCBjYXBhY2l0eSBFUFJPTSB0eXBlIChlcmFzYWJsZSBwcm9ncmFtbWFibGUgcmVhZCBvbmx5IG1lbW9yeSkgY2hpcHMgYXQgdW5mYWlybHkgbG93IHByaWNlcy4gICAgIEphcGFuIGxhc3QgeWVhciB0b29rIDc4IHBjdCBvZiB0aGUgMTcwIG1sbiBkbHIgRUMgRVBST00gbWFya2V0LCB1cCBmcm9tIDYwIHBjdCBpbiAxOTg0LiBUaGUgRUMgZmlybXMgc2FpZCB0aGV5IGhhZCBiZWVuIGZvcmNlZCB0byBvZmZlciB0aGVpciBwcm9kdWN0cyBhdCBhIGRpc2NvdW50IG9mIHVwIHRvIDMwIHBjdCBpbiBvcmRlciB0byBjb21wZXRlIHdpdGggdGhlIEphcGFuZXNlLiAgICAgVGhlIENvbW1pc3Npb24gc2FpZCBpdCBiZWxpZXZlZCB0aGUgQXNzb2NpYXRpb24gaGFkIGdpdmVuIHN1ZmZpY2llbnQgZWxlbWVudHMgb2YgcHJvb2YgZm9yIGR1bXBpbmcgdG8gd2FycmFudCBhbiBpbnZlc3RpZ2F0aW9uLCB3aGljaCBjb3VsZCBsZWFkIGl0IHRvIGltcG9zZSBkdXRpZXMgaWYgaXQgZm91bmQgdGhlIGNvbXBsYWludHMgd2VyZSBqdXN0aWZpZWQuICAgICBUaGUgQ29tbWlzc2lvbiBjbGFpbXMgbGFzdCB5ZWFyJ3MgYWNjb3JkIGJldHdlZW4gdGhlIFUuUy4gQW5kIEphcGFuIG9uIG1pY3JvY2hpcCBwcmljaW5nIGdpdmVzIFUuUy4gRmlybXMgcHJpdmlsZWdlZCBhY2Nlc3MgdG8gdGhlIEphcGFuZXNlIG1hcmtldC4gIFJFVVRFUiAzOwoxOTg3MDQwOQlFQyBTVUdBUiBURU5ERVIgU0VFTiBNQVJLSU5HIE5PIENIQU5HRSBJTiBQT0xJQ1kgVGhlIG1heGltdW0gZXhwb3J0IHJlYmF0ZSBncmFudGVkIGF0IHllc3RlcmRheSdzIEVDIHN1Z2FyIHRlbmRlciBtYXJrZWQgbm8gY2hhbmdlIGluIHBvbGljeSBvdmVyIHByb2R1Y2VyIGNvbXBsYWludHMgdGhhdCB0aGV5IGFyZSBub3Qgb2J0YWluaW5nIHRoZSBFQyBpbnRlcnZlbnRpb24gcHJpY2UgaW4gZXhwb3J0aW5nIHN1Z2FyIG91dHNpZGUgdGhlIENvbW11bml0eSwgRUMgQ29tbWlzc2lvbiBzb3VyY2VzIHNhaWQuICAgICBUaGUgbWF4aW11bSByZWJhdGUgd2FzIDQ2LjQ5NiBFY3VzIHBlciAxMDAga2lsb3MgZm9yIDExOCwzNTAgdG9ubmVzIG9mIHN1Z2FyLCBkb3duIGZyb20gNDYuODY0IEVjdXMgdGhlIHByZXZpb3VzIHdlZWssIGJ1dCB0aGUgY2hhbmdlIGlzIGV4cGxhaW5lZCBieSB3b3JsZCBtYXJrZXQgY29uZGl0aW9ucy4gICAgIFByb2R1Y2VycyBjbGFpbSB0aGUgcmViYXRlIHdhcyBzaG9ydCBvZiB0aGUgbGV2ZWwgbmVlZGVkIHRvIG9idGFpbiBhIHByaWNlIGVxdWl2YWxlbnQgdG8gdGhlIGludGVydmVudGlvbiBwcmljZSBieSBvdmVyIG9uZSBFY3UgcGVyIDEwMCBraWxvcywgYW5kIHdhcyAwLjg3IEVjdSBzaG9ydCB0aGUgcHJldmlvdXMgd2VlaywgdGhlIHNvdXJjZXMgc2FpZC4gICAgIFRoZXkgc2FpZCB0aGlzIHdhcyBkZXNwaXRlIHRoZSBmYWN0IHRoYXQgdGhlIENvbW1pc3Npb24gaGFkIHRvIGFjY2VwdCA3ODUsMDAwIHRvbm5lcyBvZiBzdWdhciBpbnRvIGludGVydmVudGlvbiBmcm9tIG9wZXJhdG9ycyBwcm90ZXN0aW5nIHRoYXQgcmViYXRlcyBhcmUgdG9vIGxvdy4gICAgIE9wZXJhdG9ycyBoYXZlIG5vdyB1bnRpbCBlYXJseSBNYXkgdG8gd2l0aGRyYXcgdGhpcyBzdWdhci4gQnV0IHRoZXkgaGF2ZSBub3QgZ2l2ZW4gYW55IHNpZ24gb2YgcGxhbm5lZCB3aXRoZHJhd2FscyB1bmxlc3MgdGhlIENvbW1pc3Npb24gcmV2aWV3cyBpdHMgZXhwb3J0IHBvbGljeSwgdGhleSBzYWlkLiAgUkVVVEVSIDM7CjE5ODcwNDA5CUVDT05PTUlDIFNQT1RMSUdIVCAtIFRFTEVDT00gSVMgS0VZIEpBUEFOIE1JTklTVFJZIEphcGFuJ3MgbGl0dGxlLWtub3duIE1pbmlzdHJ5IG9mIFBvc3RzIGFuZCBUZWxlY29tbXVuaWNhdGlvbnMgKE1QVCkgaGFzIGVtZXJnZWQgYXMgYW4gaW50ZXJuYXRpb25hbCBmb3JjZSB0byBiZSByZWNrb25lZCB3aXRoLCBwb2xpdGljYWwgYW5hbHlzdHMgc2FpZC4gICAgIE1QVCwgdGhydXN0IGludG8gdGhlIHNwb3RsaWdodCBieSB0cmFkZSByb3dzIHdpdGggdGhlIFUuUy4gQW5kIEJyaXRhaW4sIGlzIGluIGEgcG9zaXRpb24gb2Ygc3RyZW5ndGggZHVlIHRvIGl0cyBjb250cm9sIG9mIGEgbHVjcmF0aXZlIGluZHVzdHJ5IGFuZCBpdHMgdGllcyB3aXRoIGltcG9ydGFudCBwb2xpdGljaWFucywgdGhleSBzYWlkLiAgICAgIlRoZSBtaW5pc3RyeSBpcyBzdGFuZGluZyBhdGh3YXJ0IHRoZSByZWd1bGF0b3J5IGNvbnRyb2wgb2YgYSBrZXkgaW5kdXN0cmlhbCBzZWN0b3IsIHRlbGVjb21tdW5pY2F0aW9ucyBhbmQgaW5mb3JtYXRpb24sIiBzYWlkIG9uZSBkaXBsb21hdGljIHNvdXJjZS4gICAgICJUaGV5IGFyZSBhIHBvdGVudCBwb2xpdGljYWwgZm9yY2UsIiB0aGUgZGlwbG9tYXRpYyBzb3VyY2Ugc2FpZC4gICAgIEJ1dCBNUFQgaXMgZmluZGluZyBkb21lc3RpYyBwb2xpdGljYWwgcHJvd2VzcyBkb2VzIG5vdCBhbHdheXMgaGVscCB3aGVuIGl0IGNvbWVzIHRvIHRyYWRlIGZyaWN0aW9uIGRpcGxvbWFjeSwgYW5hbHlzdHMgc2FpZC4gICAgICJUaGUgbWluaXN0cnkgd2FzIGEgbWlub3IgbWluaXN0cnkgYW5kIGl0cyBwZW9wbGUgd2VyZSBub3Qgc28gaW50ZXJuYXRpb25hbGl6ZWQsIiBzYWlkIFdhc2VkYSBVbml2ZXJzaXR5IHByb2Zlc3NvciBNaXRzdXJ1IFVjaGlkYS4gIlN1ZGRlbmx5IHRoZXkncmUgc3RhbmRpbmcgYXQgdGhlIGNlbnRyZSBvZiB0aGUgd29ybGQgY29tbXVuaXR5IGFuZCBpbiB0aGF0IHNlbnNlLCB0aGV5J3JlIGF0IGEgbG9zcyAoYXMgdG8pIGhvdyB0byBmYWNlIHRoZSBzaXR1YXRpb24uIiAgICAgTW9zdCByZWNlbnRseSB0aGUgbWluaXN0cnkgaGFzIGJlZW4gZW1icm9pbGVkIGluIGEgcm93IHdpdGggTG9uZG9uIG92ZXIgZWZmb3J0cyBieSBCcml0YWluJ3MgQ2FibGUgYW5kIFdpcmVsZXNzIFBsYyB0byBrZWVwIGEgbWFqb3Igc3Rha2UgaW4gb25lIG9mIHR3byBjb25zb3J0aWEgdHJ5aW5nIHRvIGNvbXBldGUgaW4gSmFwYW4ncyBsdWNyYXRpdmUgb3ZlcnNlYXMgdGVsZXBob25lIGJ1c2luZXNzLiAgICAgVGhlIG1pbmlzdHJ5IGhhcyBmYXZvdXJlZCB0aGUgbWVyZ2VyIG9mIHRoZSB0d28gcml2YWwgZ3JvdXBzLCBhcmd1aW5nIHRoZSBtYXJrZXQgY2Fubm90IHN1cHBvcnQgbW9yZSB0aGFuIG9uZSBjb21wZXRpdG9yIHRvIEtva3VzYWkgRGVuc2hpbiBEZW53YSBDbyBMdGQsIHdoaWNoIG5vdyBtb25vcG9saXplcyB0aGUgYnVzaW5lc3MuICAgICBJdCBoYXMgYWxzbyBvcHBvc2VkIGEgbWFqb3IgbWFuYWdlbWVudCByb2xlIGluIHRoZSBwbGFubmVkIG1lcmdlciBmb3IgYW55IG5vbi1KYXBhbmVzZSBvdmVyc2VhcyB0ZWxlY29tbXVuaWNhdGlvbnMgZmlybSBvbiB0aGUgZ3JvdW5kcyB0aGF0IG5vIHN1Y2ggaW50ZXJuYXRpb25hbCBwcmVjZWRlbnQgZXhpc3RzLiAgICAgVGhlIG1pbmlzdHJ5J3Mgc3RhbmNlIGhhcyBvdXRyYWdlZCBib3RoIExvbmRvbiwgd2hpY2ggaGFzIHRocmVhdGVuZWQgdG8gcmV0YWxpYXRlLCBhbmQgV2FzaGluZ3Rvbiwgd2hpY2ggc2F5cyB0aGUgbWVyZ2VyIHBsYW4gaXMgZXZpZGVuY2Ugb2YgSmFwYW4ncyBmYWlsdXJlIHRvIGhvbm91ciBwbGVkZ2VzIHRvIG9wZW4gaXRzIHRlbGVjb21tdW5pY2F0aW9ucyBtYXJrZXQuICAgICBXYXNoaW5ndG9uIGlzIGFsc28gYW5ncnkgb3ZlciBvdGhlciBtaW5pc3RyeSBtb3ZlcyB3aGljaCBpdCBzYXlzIGhhdmUgbGltaXRlZCBhY2Nlc3MgZm9yIFUuUy4gRmlybXMgdG8gSmFwYW4ncyBjYXIgdGVsZXBob25lIGFuZCBzYXRlbGxpdGUgY29tbXVuaWNhdGlvbnMgbWFya2V0LiAgICAgTXVjaCBvZiBNUFQncyBuZXcgcHJvbWluZW5jZSBzdGVtcyBmcm9tIHRoZSBncm93dGggb2YgdGhlIHNlY3RvciBpdCByZWd1bGF0ZXMuICAgICAiV2hhdCBoYXMgYmVlbiBoYXBwZW5pbmcgaXMgYW4gaW1wb3J0YW50IHNoaWZ0IGluIHRoZSBlY29ub215IHdoaWNoIG1ha2VzIHRoZSBtaW5pc3RyeSBhIHZlcnkgaW1wb3J0YW50IHBsYWNlLCIgc2FpZCBKYW1lcyBBYmVnZ2xlbiwgaGVhZCBvZiB0aGUgY29uc3VsdGluZyBmaXJtIEFzaWEgQWR2aXNvcnkgU2VydmljZSBJbmMuICAgICBBIGRlY2lzaW9uIHRvIG9wZW4gdGhlIHRlbGVjb21tdW5pY2F0aW9ucyBpbmR1c3RyeSB0byBjb21wZXRpdGlvbiB1bmRlciBhIG5ldyBzZXQgb2YgbGF3cyBwYXNzZWQgaW4gMTk4NSBoYXMgYm9vc3RlZCByYXRoZXIgdGhhbiBsZXNzZW5lZCBNUFQncyBhdXRob3JpdHksIGFuYWx5c3RzIHNhaWQuICAgICAiV2l0aCB0aGUgbGVnYWwgZnJhbWV3b3JrIGVhc2VkLCB0aGV5IGJlY2FtZSB0aGUgZGUgZmFjdG8gbGVnYWwgZnJhbWV3b3JrLCIgc2FpZCBCYWNoZSBTZWN1cml0aWVzIChKYXBhbikgYW5hbHlzdCBEYXJyZWxsIFdoaXR0ZW4uICAgICBDbG9zZSBsaW5rcyB3aXRoIHRoZSBwb3dlcmZ1bCBwb2xpdGljYWwgZmFjdGlvbiBvZiB0aGUgcnVsaW5nIExpYmVyYWwgRGVtb2NyYXRpYyBQYXJ0eSAoTERQKSBudXJ0dXJlZCBieSBmb3JtZXIgUHJpbWUgTWluaXN0ZXIgS2FrdWVpIFRhbmFrYSBhcmUgYW5vdGhlciBrZXkgdG8gTVBUJ3MgaW5mbHVlbmNlLCB0aGUgYW5hbHlzdHMgc2FpZC4gICAgICJPdGhlciBmYWN0aW9ucyBpZ25vcmVkIE1QVCAoaW4gdGhlIDE5NzBzKSwgYnV0IHRoZSBUYW5ha2EgZmFjdGlvbiB3YXMgZm9yd2FyZCBsb29raW5nIGFuZCAuLi4gUmVjb2duaXplZCB0aGUgaW1wb3J0YW5jZSBvZiBNUFQsIiBVY2hpZGEgc2FpZC4gTWFueSBmb3JtZXIgYnVyZWF1Y3JhdHMgYmVjYW1lIG1lbWJlcnMgb2YgdGhlIGluZmx1ZW50aWFsIHBvbGl0aWNhbCBncm91cCwgaGUgYWRkZWQuICAgICBUaGUgbWluaXN0cnkgYWxzbyBoYXMgcG93ZXIgaW4gdGhlIGZpbmFuY2lhbCBzZWN0b3IgZHVlIHRvIHRoZSBtb3JlIHRoYW4gMTAwLDAwMCBiaWxsaW9uIHllbiB3b3J0aCBvZiBkZXBvc2l0cyBpbiB0aGUgUG9zdGFsIFNhdmluZ3MgU3lzdGVtLCBhbmFseXN0cyBzYWlkLiAgICAgTVBUIGhhcyBoZWxwZWQgYmxvY2sgRmluYW5jZSBNaW5pc3RyeSBwbGFucyB0byBkZXJlZ3VsYXRlIGludGVyZXN0IHJhdGVzIG9uIHNtYWxsIGRlcG9zaXRzLCBhIGtleSBlbGVtZW50IGluIGZpbmFuY2lhbCBsaWJlcmFsaXNhdGlvbiwgc2luY2UgdGhlIGNoYW5nZSB3b3VsZCByZW1vdmUgdGhlIFBvc3RhbCBTYXZpbmdzIFN5c3RlbSdzIGFiaWxpdHkgdG8gb2ZmZXIgc2xpZ2h0bHkgaGlnaGVyIHJhdGVzIHRoYW4gYmFua3MsIHRoZXkgc2FpZC4gICAgIERpcGxvbWF0aWMgc291cmNlcywgZnJ1c3RyYXRlZCB3aXRoIHdoYXQgdGhleSBzZWUgYXMgTVBUJ3Mgb2JzdHJ1Y3Rpb25pc3QgYW5kIHByb3RlY3Rpb25pc3QgcG9zdHVyZSwgaGF2ZSBjaGFyYWN0ZXJpemVkIHRoZSBtaW5pc3RyeSBhcyBmZXVkYWwuICAgICBDcml0aWNzIGNoYXJnZSBNUFQgd2l0aCBwcm90ZWN0aW5nIGl0cyBvd24gdHVyZiwgbGltaXRpbmcgY29tcGV0aXRpb24gYW5kIHNoZWx0ZXJpbmcgdGhlIGZvcm1lciBtb25vcG9saWVzIHVuZGVyIGl0cyB3aW5nLiBQcm92aWRpbmcgY29uc3VtZXJzIHdpdGggdGhlIGJlc3Qgc2VydmljZSBhdCB0aGUgbG93ZXN0IHByaWNlIHRha2VzIGEgYmFjayBzZWF0IHRvIHN1Y2ggY29uc2lkZXJhdGlvbnMsIHRoZXkgc2FpZC4gICAgIEJ1dCBtYW55IG9mIHRoZSBtaW5pc3RyeSdzIGFjdGlvbnMgYXJlIG5vdCB1bmxpa2UgdGhvc2Ugb2YgaXRzIGJ1cmVhdWNyYXRpYyBjb3VudGVycGFydHMgaW4gbXVjaCBvZiB0aGUgV2VzdGVybiB3b3JsZCBpbmNsdWRpbmcgQnJpdGFpbiwgc2V2ZXJhbCBhbmFseXN0cyBzYWlkLiAgICAgIlRoZSBVbml0ZWQgU3RhdGVzIGlzIHJlYWxseSB0aGUgb2RkIG1hbiBvdXQsIiBBYmVnZ2xlbiBzYWlkLiAiRm9yIGEgZ292ZXJubWVudCB0byB0YWtlIHRoZSB2aWV3IHRoYXQgaXQgd2FudHMgdG8ga2VlcCBvcmRlciBpbiB1dGlsaXRpZXMgbWFya2V0cyBpcyBub3QgYW4gdW51c3VhbCBhbmQvb3IgdW5yZWFzb25hYmxlIHZpZXcsIiBoZSBzYWlkLiAgUkVVVEVSIDM7CjE5ODcwNDA5CUVDVUFET1IgQ1JVREUgT0lMIE9VVFBVVCBUTyBSRVNVTUUgTkVYVCBNT05USCBFY3VhZG9yIGlzIGR1ZSB0byByZXN1bWUgbGltaXRlZCBjcnVkZSBvaWwgb3V0cHV0IG9uIE1heSA4IHdoZW4gYSBuZXcgNDMga20gcGlwZWxpbmUgdG8gbmVpZ2hib3VyaW5nIENvbG9tYmlhIHNob3VsZCBiZSBmaW5pc2hlZCwgYW4gZW5lcmd5IG1pbmlzdHJ5IHNwb2tlc21hbiBzYWlkLiAgICAgT2lsIG91dHB1dCB3YXMgaGFsdGVkIG9uIE1hcmNoIDUgYnkgYW4gZWFydGhxdWFrZSB3aGljaCBkYW1hZ2VkIDUwIGttIG9mIHRoZSBtYWluIHBpcGVsaW5lIGxpbmtpbmcganVuZ2xlIG9pbGZpZWxkcyBhdCBMYWdvIEFncmlvIHRvIHRoZSBFY3VhZG9yZWFuIHBvcnQgb2YgQmFsYW8gb24gdGhlIFBhY2lmaWMuICAgICBBYm91dCAxMyBrbSBvZiB0aGUgbmV3IGxpbmssIGNhcGFibGUgb2YgY2Fycnlpbmcgc29tZSA1MCwwMDAgYmFycmVscyBwZXIgZGF5IChicGQpLCBoYXMgYmVlbiBidWlsdCwgaGUgc2FpZC4gICAgIEVjdWFkb3IgcHVtcGVkIDI0NSwwMDAgdG8gMjUwLDAwMCBicGQgYmVmb3JlIHRoZSBlYXJ0aHF1YWtlLiAgICAgVGhlIG5ldyBsaW5rIHdpbGwgY29ubmVjdCBMYWdvIEFncmlvIHRvIFB1ZXJ0byBDb2xvbiBpbiBDb2xvbWJpYSwgdGhlIHN0YXJ0aW5nIHBvaW50IG9mIENvbHVtYmlhJ3MgcGlwZWxpbmUgdG8gdGhlIFBhY2lmaWMgb2NlYW4gcG9ydCBvZiBUZW11Y28uICAgICBUaGUgZ292ZXJubWVudCBlc3RpbWF0ZXMgaXQgd2lsbCB0YWtlIGFib3V0IGZvdXIgbW9yZSBtb250aHMgdG8gcmVwYWlyIHRoZSBMYWdvIEFncmlvIHRvIEJhbGFvIHBpcGVsaW5lIGFuZCByZXR1cm4gb3V0cHV0IHRvIG5vcm1hbCBsZXZlbHMsIHRoZSBzcG9rZXNtYW4gc2FpZC4gIFJFVVRFUiAzOwoxOTg3MDQwOQlFR1lQVCBCVVlTIFBMIDQ4MCBXSEVBVCBGTE9VUiAtIFUuUy4gVFJBREVSUyBFZ3lwdCBib3VnaHQgMTI1LDcyMyB0b25uZXMgb2YgVS5TLiB3aGVhdCBmbG91ciBpbiBpdHMgUEwgNDgwIHRlbmRlciB5ZXN0ZXJkYXksIHRyYWRlIHNvdXJjZXMgc2FpZC4gICAgIFRoZSBwdXJjaGFzZSBpbmNsdWRlZCA1MSw4ODAgdG9ubmVzIGZvciBNYXkgc2hpcG1lbnQgYW5kIDczLDg0MyB0b25uZXMgZm9yIEp1bmUgc2hpcG1lbnQuIFByaWNlIGRldGFpbHMgd2VyZSBub3QgYXZhaWxhYmxlLiAgUmV1dGVyIDM7CjE5ODcwNDA5CUVHWVBUIENBTkNFTFMgV0hFQVQgVEVOREVSIEVneXB0IGhhcyBjYW5jZWxsZWQgaXRzIEFwcmlsIDIgdGVuZGVyIGZvciAyMDAsMDAwIHRvbm5lcyBvZiBhbnkgb3JpZ2luIHdoZWF0IGZvciBBcHJpbCAxNS0zMCBzaGlwbWVudCwgdHJhZGUgYW5kIEVneXB0aWFuIG9mZmljaWFsIHNvdXJjZXMgc2FpZC4gICAgIFRyYWRlIHNvdXJjZXMgc2FpZCB0aGUgY2FuY2VsbGF0aW9uIGZvbGxvd2VkIGFuIG9mZmVyIGJ5IGFuIEVneXB0aWFuIGNvbXBhbnksIElzbGFtaWMgQ29ycCwgYXQgODUuODAgZGxycy90b25uZSBjb3N0IGFuZCBmcmVpZ2h0LCB1bmRlcmN1dHRpbmcgb3RoZXIgdHJhZGVycycgb2ZmZXJzIG9mIGJldHdlZW4gOTMuOTAgYW5kIDk0LjQ5IGRscnMvdG9ubmUuICAgICBBbiBFZ3lwdGlhbiB0cmFkZSBvZmZpY2lhbCBpbiBQYXJpcyBjb25maXJtZWQgY2FuY2VsbGF0aW9uIG9mIHRoZSB0ZW5kZXIgZm9sbG93aW5nIHRoZSBJc2xhbWljIENvcnAgb2ZmZXIsIHdoaWNoIGhlIHNhaWQgdGhlIGdvdmVybm1lbnQgaGFkIHJlZnVzZWQgZm9yIGxlZ2FsIHJlYXNvbnMuICAgICBUaGUgb2ZmaWNpYWwgZGVuaWVkIHRyYWRlIHJlcG9ydHMgdGhhdCB0aGUgZ292ZXJubWVudCBtaWdodCBoYXZlIHN1YnN0aXR1dGVkIGEgcHJpdmF0ZSBkZWFsIHdpdGggSXNsYW1pYyBDb3JwIGZvciB0aGUgb3JpZ2luYWwgdGVuZGVyLiAgUmV1dGVyIDM7CjE5ODcwNDA5CUVHWVBUIFNFRUtJTkcgNTAwLDAwMCBUT05ORVMgQ09STiAtIFUuUy4gVFJBREVSUyBFZ3lwdCBpcyBleHBlY3RlZCB0byB0ZW5kZXIgQXByaWwgMjIgZm9yIDUwMCwwMDAgdG9ubmVzIG9mIGNvcm4gZm9yIE1heSB0aHJvdWdoIFNlcHRlbWJlciBzaGlwbWVudHMsIHByaXZhdGUgZXhwb3J0IHNvdXJjZXMgc2FpZC4gIFJldXRlciAzOwoxOTg3MDQwOQlFSUIgSVNTVUVTIDQwIEJJTExJT04gWUVOIEVVUk9CT05EIFRoZSBFdXJvcGVhbiBJbnZlc3RtZW50IEJhbmsgKEVJQikgaXMgaXNzdWluZyBhIDQwIGJpbGxpb24geWVuIGV1cm9ib25kIGR1ZSBNYXkgNiwgMTk5NCBwYXlpbmcgNC01LzggcGN0IGFuZCBwcmljZWQgYXQgMTAxLTEvMiwgbGVhZCBOb211cmEgSW50ZXJuYXRpb25hbCBMdGQgc2FpZC4gICAgIFRoZSBub24tY2FsbGFibGUgYm9uZCBpcyBhdmFpbGFibGUgaW4gZGVub21pbmF0aW9ucyBvZiBvbmUgbWxuIHllbiBhbmQgd2lsbCBiZSBsaXN0ZWQgaW4gTHV4ZW1ib3VyZy4gVGhlIHNlbGxpbmcgY29uY2Vzc2lvbiBpcyAxLTEvOCBwY3Qgd2hpbGUgbWFuYWdlbWVudCBhbmQgdW5kZXJ3cml0aW5nIGNvbWJpbmVkIHBheXMgMS8yIHBjdC4gVGhlIHBheW1lbnQgZGF0ZSBpcyBNYXkgNi4gICAgIFRoZXJlIGlzIGEgbWFuZGF0b3J5IHB1cmNoYXNlIGZ1bmQgb3BlcmF0aW5nIGluIHllYXJzIG9uZSBhbmQgdHdvLCBleGNlcHQgZm9yIHRoZSBmaXJzdCBtb250aCBhZnRlciB0aGUgcGF5bWVudCBkYXRlLCB3aGVyZWJ5IHRoZSBFSUIgY2FuIHB1cmNoYXNlIHVwIHRvIGZpdmUgcGN0IG9mIHRoZSBpc3N1ZSBlYWNoIHllYXIgaWYgaXQgaXMgdHJhZGluZyBiZWxvdyBwYXIuICBSRVVURVIgMzsKMTk4NzA0MDkJRVFVSVRJQ09SUCBILksuIFVOSVQgVE8gUkFJU0UgMzAgTUxOIFUuUy4gRExSUyA8RXF1aXRpY29ycCBIb25na29uZyBMdGQ+IGlzIHBsYW5uaW5nIGEgMzAgbWxuIFUuUy4gRGxyIHRyYW5zZmVycmFibGUgbG9hbiBmYWNpbGl0eSB0byByYWlzZSB3b3JraW5nIGNhcGl0YWwsIGxlYWQgbWFuYWdlcnMgPE1hbnVmYWN0dXJlcnMgSGFub3ZlciBBc2lhIEx0ZD4gYW5kIDxNYW51ZmFjdHVyZXJzIEhhbm92ZXIgTHRkPiwgc2FpZC4gICAgIFRoZSB0d28geWVhciBsb2FuIHdpdGggYnVsbGV0IHJlcGF5bWVudCBjYXJyaWVzIGludGVyZXN0IGF0IDUvOCBvZiBhIHBlcmNlbnRhZ2UgcG9pbnQgb3ZlciB0aGUgTG9uZG9uIGludGVyYmFuayBvZmZlcmVkIHJhdGUuIEl0IHdpbGwgYmUgZ3VhcmFudGVlZCBieSBwYXJlbnQgY29tcGFueSA8RXF1aXRpY29ycCBIb2xkaW5ncyBMdGQ+IG9mIE5ldyBaZWFsYW5kLCB0aGUgbWFuYWdlcnMgc2FpZC4gICAgIFN5bmRpY2F0aW9uIGlzIHByb2NlZWRpbmcgYW5kIG1hbmFnZXJzIGFuZCBwYXJ0aWNpcGFudHMgYXJlIGJlaW5nIGludml0ZWQgdG8gcGFydGljaXBhdGUgYXQgZm91ciBsZXZlbHMgd2l0aCBtYW5hZ2VtZW50IGZlZXMgcmFuZ2luZyBmcm9tIDE1IHRvIDMwIGJhc2lzIHBvaW50cywgaXQgc2FpZC4gIFJFVVRFUiAzOwoxOTg3MDQwOQlFVVJPUEVBTiBNQVJLRVRTIFJFQUNUIFFVSUVUTFkgVE8gRy03IENPTU1VTklRVUUgRXVyb3BlYW4gY3VycmVuY3kgbWFya2V0cyByZWFjdGVkIHF1aWV0bHkgdG8gdGhlIEctNyBjb21tdW5pcXVlLCB3aXRoIGNvbW1lbnRzIGZyb20gYmFua2VycyBhbmQgZGVhbGVycyByYW5naW5nIGZyb20gZGlzYXBwb2ludG1lbnQgdGhhdCBpdCB3YXMgbm90IG1vcmUgY29uY3JldGUgdG8gc3VycHJpc2UgdGhhdCB0aGUgbWFya2V0cyBzaG91bGQgaGF2ZSBleHBlY3RlZCBzbyBtdWNoLiAgICAgVGhlIGRvbGxhciBvcGVuZWQgbG93ZXIgYWdhaW5zdCB2aXJ0dWFsbHkgYWxsIGN1cnJlbmNpZXMgYW5kIHRyYWRlZCBpbiBhIG5hcnJvdyByYW5nZSBhZnRlciB0aGUgY29tbXVuaXF1ZSwgd2hpY2ggcmVhZmZpcm1lZCBzdXBwb3J0IGZvciB0aGUgUGFyaXMgYWNjb3JkIG9uIGN1cnJlbmN5IHN0YWJpbGlzYXRpb24gYnV0IGNvbnRhaW5lZCBubyBtb3ZlcyB0byBzdHJlbmd0aGVuIGl0LiAgICAgRGVhbGVycyBpbiBGcmFua2Z1cnQgYW5kIFp1cmljaCBzYXcgdGhlIGRvbGxhciByZW1haW5pbmcgYnJvYWRseSBlbnRyZW5jaGVkIGluIGl0cyBjdXJyZW50IHRyYWRpbmcgcmFuZ2UuICAgICAiVGhlIGRvbGxhciBpcyBsaWtlbHkgdG8gc3RheSB3aXRoaW4gYSByYW5nZSBvZiAxLjgwIHRvIDEuODQgbWFya3MsIiBzYWlkIEdpc2VsYSBTdGVpbmhhZXVzZXIsIHNlbmlvciBkZWFsZXIgYXQgQ2hhc2UgQmFuayBBRy4gU2hlIHNhaWQgdGhlcmUgd2FzIHNvbWUgcmVzaXN0YW5jZSB0byBmdXJ0aGVyIGNsaW1icy4gICAgIEhvd2V2ZXIsIHNoZSBzYWlkIHRoZSBkb2xsYXIgY291bGQgYnJlYWsgb3V0IG9mIHRoZSByYW5nZSB3aXRoIG1ham9yIHN1cnByaXNlcyBzdWNoIGFzIGEgd29yc2UtdGhhbi1leHBlY3RlZCBVLlMuIE1lcmNoYW5kaXNlIHRyYWRlIGRlZmljaXQsIGR1ZSBuZXh0IFR1ZXNkYXkuICAgICBUaGVvZG9yIFN0YWRlbG1hbm4sIGRlYWxlciB3aXRoIEJhbmsgSnVsaXVzIEJhZXIgYW5kIENvIEx0ZCBpbiBadXJpY2gsIHNhaWQgaGUgZXhwZWN0cyB0aGUgZG9sbGFyIHRvIGhvbGQgc3RlYWR5IGFnYWluc3QgdGhlIG1hcmsgYW5kIFN3aXNzIGZyYW5jIGJ1dCB0byB3ZWFrZW4gZnVydGhlciBhZ2FpbnN0IHRoZSB5ZW4sIHBvc3NpYmx5IHRvIDE0MCB5ZW4uICAgICBBIE1pbGFuIGJhbmtlciBzaGFyZWQgU3RhZGVsbWFubidzIHZpZXcsIHNheWluZyBoZSBleHBlY3RzIGEgZG9sbGFyLXllbiByYW5nZSBvZiAxNDAtMTUwIGluIHRoZSBzaG9ydCB0ZXJtLiAgICAgTG9uZG9uIHRyYWRlcnMgc2FpZCB0aGUgRy03IGNvbW11bmlxdWUgZmFpbGVkIHRvIGN1cmIgdW5kZXJseWluZyBiZWFyaXNobmVzcyB0b3dhcmQgdGhlIGRvbGxhciBidXQgdGhpcyBuZWdhdGl2ZSBzZW50aW1lbnQgd2FzIG5vdCB5ZXQgc3Ryb25nIGVub3VnaCB0byB0ZW1wdCBpbnRlcmJhbmsgb3BlcmF0b3JzIHRvIHRlc3QgdGhlIGRvd25zaWRlLiAgICAgQ29uY2VybiB0aGF0IGZpbmFuY2UgbWluaXN0ZXJzIGFuZCBvZmZpY2lhbHMgc3RpbGwgaW4gV2FzaGluZ3RvbiBjb3VsZCBpc3N1ZSBtb3JlIGNvbmNyZXRlIHN0YXRlbWVudHMgaW4gZmF2b3VyIG9mIGN1cnJlbmN5IHN0YWJpbGlzYXRpb24ga2VwdCBwbGF5ZXJzIHNpZGVsaW5lZCwgYWxvbmcgd2l0aCB3b3JyaWVzIGFib3V0IHByb3Zva2luZyBmcmVzaCBjZW50cmFsIGJhbmsgaW50ZXJ2ZW50aW9uIGluIHRoZSBuZWFyIHRlcm0sIHRoZSB0cmFkZXJzIHNhaWQuICAgICBNb3N0IFBhcmlzIGRlYWxlcnMgZXhwcmVzc2VkIGRpc2FwcG9pbnRtZW50IGF0IHRoZSBjb21tdW5pcXVlLCBzYXlpbmcgbm90aGluZyBoYXMgY2hhbmdlZCB0byByZXZlcnNlIHRoZSBkb2xsYXIncyBkb3dud2FyZCB0cmVuZC4gICAgIFRyYWRlcnMgaW4gc2V2ZXJhbCBjZW50cmVzIHNhaWQgdGhlIG1hcmtldCB3b3VsZCBsb29rIGZvciBmcmVzaCBvcHBvcnR1bml0aWVzIHRvIHRlc3QgdGhlIHdpbGxpbmduZXNzIG9mIGNlbnRyYWwgYmFua3MgdG8gZGVmZW5kIGN1cnJlbnQgcmFuZ2VzLCB3aGljaCB0aGUgY29tbXVuaXF1ZSBzYWlkIHdlcmUgImJyb2FkbHkgY29uc2lzdGVudCB3aXRoIGVjb25vbWljIGZ1bmRhbWVudGFscyBhbmQgdGhlIGJhc2ljIHBvbGljeSBpbnRlbnRpb25zIG91dGxpbmVkIGF0IHRoZSBMb3V2cmUgbWVldGluZy4iICAgICBEYXZlIEpvdWhpbiwgc2VuaW9yIGRlYWxlciBhdCBNaWRsYW5kIEJhbmsgaW4gTG9uZG9uLCBzYWlkICJUaGV5J3JlIGdvaW5nIHRvIHB1dCBzb21lYm9keSdzIHJlc29sdmUgdG8gdGhlIHRlc3Qgc29vbi4iIFRoZSBVLlMuIEZlYnJ1YXJ5IHRyYWRlIGRhdGEgbWF5IHByb3ZpZGUgdGhlIHRyaWdnZXIsIGRlYWxlcnMgc2FpZC4gICAgIEhvd2V2ZXIsIHNvbWUgZGVhbGVycyBzYWlkIExvbmRvbi1iYXNlZCBvcGVyYXRvcnMgd291bGQgYmUgdW5saWtlbHkgdG8gb3BlbiBtYWpvciBwb3NpdGlvbnMgbmV4dCB3ZWVrIGFoZWFkIG9mIHRoZSBsb25nIEVhc3RlciB3ZWVrZW5kLiBUaGV5IHNhdyBuZWFyLXRlcm0gdGVjaG5pY2FsIHN1cHBvcnQgYXQgMS44MjUgbWFya3MgYW5kIDE0NSB5ZW4gYW5kIHJlc2lzdGFuY2UgYWJvdXQgMS44MyBtYXJrcyBhbmQgMTQ2IHllbi4gICAgIENoYXNlIEJhbmsncyBTdGVpbmhhZXVzZXIgYW5kIG90aGVyIEZyYW5rZnVydCBkZWFsZXJzIHNhaWQgdGhlIEctNyBjb21tdW5pcXVlIGd1YXJhbnRlZWQgYSByZWxhdGl2ZWx5IGNhbG0gYW5kIHN0YWJsZSBtYXJrZXQgZm9yIHRoZSBmb3Jlc2VlYWJsZSBmdXR1cmUgY29tcGFyZWQgd2l0aCB0aGUgZXh0cmVtZSB2b2xhdGlsaXR5IHNlZW4gaW4gdGhlIGZpcnN0IGZldyBtb250aHMgb2YgdGhpcyB5ZWFyLiAgICAgT25lIGRlYWxlciBhdCBhIEdlcm1hbiBiYW5rIHNhaWQgdGhlIHdvcmRpbmcgb2YgdGhlIGNvbW11bmlxdWUgbWFkZSBjbGVhciB0aGUgbGVhZGluZyBuYXRpb25zIGRpZCBub3Qgd2FudCBhIGZ1cnRoZXIgZG9sbGFyIGRyb3AsIGFuZCB0aGlzIHdhcyBzdXBwb3J0aW5nIHRoZSBkb2xsYXIuICAgICBUaGUgR2VybWFuIGRlYWxlciBzYXcgdGhlIGRvbGxhciBncmFkdWFsbHkgYXBwcmVjaWF0aW5nIHRvIDEuODcgbWFya3MsIGJyb2FkbHkgc2VlbiBhcyBpdHMgdXBwZXIgbGltaXQgd2l0aGluIHRoZSBMb3V2cmUgYWNjb3JkJ3Mgc3VwcG9zZWQgY3VycmVuY3kgdGFyZ2V0IHJhbmdlLiAgICAgQSBTd2lzcyBiYW5rIGVjb25vbWlzdCBzYWlkIGhlIGJlbGlldmVkIHRoZSBtYXJrZXRzIHdlcmUgcmVhZHkgZm9yIGEgcGVyaW9kIG9mICJtYWlubHkgc2lkZXdheXMgbW92ZW1lbnQuIiAgICAgQnV0IE1pbGFuIGRlYWxlcnMgd2VyZSBzY2VwdGljYWwgYWJvdXQgdGhlIGNvbW11bmlxdWUgY29udHJpYnV0aW5nIHRvIGdyZWF0ZXIgc3RhYmlsaXR5LiAgICAgIk5vdGhpbmcgaGFzIGNoYW5nZWQgc3Vic3RhbnRpYWxseSB0byBnaXZlIHRoZSBkb2xsYXIgYSBiaWcgYm9vc3QsIiBzYWlkIG9uZSBkZWFsZXIsIHdoaWxlIGFub3RoZXIgSXRhbGlhbiBiYW5rZXIgc2FpZCBoZSBleHBlY3RzIHRoZSBkb2xsYXIgdG8gdHJhZGUgYmV0d2VlbiAxLjc3IGFuZCAxLjg3IEdlcm1hbiBtYXJrcyBpbiB0aGUgbmV4dCB0aHJlZSBtb250aHMuICAgICBBIFN3aXNzIG1vbmV0YXJ5IHNvdXJjZSwgd2hvIGFza2VkIG5vdCB0byBiZSBuYW1lZCwgc2FpZCB0aGUgY29tbXVuaXF1ZSBoYWQgYmVlbiBpbiBsaW5lIHdpdGggcmVhbGlzdGljIGV4cGVjdGF0aW9ucyBhbmQgc2hvdWxkIG5vdCBoYXZlIHByb2R1Y2VkIGRpc2FwcG9pbnRtZW50LiAgICAgIlRoZSBwcm9ibGVtIGlzIHRoYXQgdGhlIGNoYW5nZXMgbmVlZGVkIGluIGZpc2NhbCBhbmQgdHJhZGUgcG9saWNpZXMgdG8gcmVkcmVzcyBjdXJyZW50IGltYmFsYW5jZXMgYXJlIG9mIGEgZGlmZmVyZW50IHRpbWVzY2FsZSB0aGFuIGN1cnJlbmN5IG1hcmtldHMgb3BlcmF0ZSBvbiwiIHRoZSBzb3VyY2UgdG9sZCBSZXV0ZXJzLCAiVGhpcyBpcyBhIHBvbGl0aWNhbCBwcm9jZXNzIHdoaWNoIHRha2VzIHRpbWUuIiAgICAgQWxvaXMgU2Nod2lldGVydCwgY2hpZWYgZWNvbm9taXN0IGF0IFN3aXNzIEJhbmsgQ29ycCBpbiBCYXNsZSwgYWxzbyBxdWVzdGlvbmVkIHRoZSB0b25lIG9mIGRpc2FwcG9pbnRtZW50IGV2aWRlbnQgb24gY3VycmVuY3kgbWFya2V0cyB0b2RheS4gIkRpZCBwZW9wbGUgcmVhbGx5IGV4cGVjdCBhIHBhdGVudCByZW1lZHk/IiBoZSBhc2tlZC4gICAgIEJhbmsgZWNvbm9taXN0cyBpbiBQYXJpcyBub3RlZCB5ZXN0ZXJkYXkncyBtZWV0aW5nIHdhcyBvbmx5IHRoZSBmaXJzdCBpbiBhIHNlcmllcyBhbmQgc2FpZCB0aGUgbWFya2V0IHdvdWxkIHdhdGNoIGNhcmVmdWxseSBpbiB0aGUgbmV4dCBmZXcgd2Vla3MgZm9yIGFueSBjaGFuZ2VzIGluIHBvc2l0aW9ucy4gICAgIEEgc2VuaW9yIGVjb25vbWlzdCB3aXRoIEJhbnF1ZSBJbmRvc3VleiBzYWlkIHRoZSBmb2N1cyB3YXMgbm93IG9uIHRyYWRlIGFuZCBncm93dGggcmF0aGVyIHRoYW4gaW50ZXJlc3QgcmF0ZXMuIEFueSBtb3ZlIGJ5IEphcGFuIGFuZCBXZXN0IEdlcm1hbnkgdG8gYm9vc3QgdGhlaXIgZWNvbm9taWMgZ3Jvd3RoIGNvdWxkIGxlYWQgdG8gYSBxdWljayBjaGFuZ2UgaW4gdGhlIFUuUy4gUG9zaXRpb24uICAgICBEZWFsZXJzIGluIGFsbCBjZW50cmVzIGFncmVlZCB0aGF0IG1hcmtldHMgd291bGQgYmUgd2FyeSBpbiBwdXNoaW5nIHRoZSBkb2xsYXIgdG9vIGZhciB0b28gcXVpY2tseSBpbiB0aGUgY29taW5nIG1vbnRocyB3aGlsZSBjZW50cmFsIGJhbmtzIGFwcGVhciByZXNvbHZlZCB0byB1c2UgdGhlaXIgbXVzY2xlIHRvIHN1cHBvcnQgdGhlIFBhcmlzIGFjY29yZC4gIFJFVVRFUiAzOwoxOTg3MDQwOQlFVVJPUEVBTiBNQVJLRVRTIFJFQUNUIFFVSUVUTFkgVE8gRy03IENPTU1VTklRVUUgRXVyb3BlYW4gY3VycmVuY3kgbWFya2V0cyByZWFjdGVkIHF1aWV0bHkgdG8gdGhlIEctNyBjb21tdW5pcXVlLCB3aXRoIGNvbW1lbnRzIGZyb20gYmFua2VycyBhbmQgZGVhbGVycyByYW5naW5nIGZyb20gZGlzYXBwb2ludG1lbnQgdGhhdCBpdCB3YXMgbm90IG1vcmUgY29uY3JldGUgdG8gc3VycHJpc2UgdGhhdCB0aGUgbWFya2V0cyBzaG91bGQgaGF2ZSBleHBlY3RlZCBzbyBtdWNoLiAgICAgVGhlIGRvbGxhciBvcGVuZWQgbG93ZXIgYWdhaW5zdCB2aXJ0dWFsbHkgYWxsIGN1cnJlbmNpZXMgYW5kIHRyYWRlZCBpbiBhIG5hcnJvdyByYW5nZSBhZnRlciB0aGUgY29tbXVuaXF1ZSwgd2hpY2ggcmVhZmZpcm1lZCBzdXBwb3J0IGZvciB0aGUgUGFyaXMgYWNjb3JkIG9uIGN1cnJlbmN5IHN0YWJpbGlzYXRpb24gYnV0IGNvbnRhaW5lZCBubyBtb3ZlcyB0byBzdHJlbmd0aGVuIGl0LiAgICAgRnJhbmtmdXJ0IGFuZCBadXJpY2ggZGVhbGVycyBzYXcgdGhlIGRvbGxhciBzdGF5aW5nIGJyb2FkbHkgZW50cmVuY2hlZCBpbiBpdHMgY3VycmVudCB0cmFkaW5nIHJhbmdlLiAgUkVVVEVSIDM7CjE5ODcwNDA5CUVVUk9QRUFOIE1BUktFVFMgUkVBQ1QgUVVJRVRMWSBUTyBHLTcgQ09NTVVOSVFVRSBFdXJvcGVhbiBjdXJyZW5jeSBtYXJrZXRzIHJlYWN0ZWQgcXVpZXRseSB0byB0aGUgRy03IGNvbW11bmlxdWUsIHdpdGggY29tbWVudHMgZnJvbSBiYW5rZXJzIGFuZCBkZWFsZXJzIHJhbmdpbmcgZnJvbSBkaXNhcHBvaW50bWVudCB0aGF0IGl0IHdhcyBub3QgbW9yZSBjb25jcmV0ZSB0byBzdXJwcmlzZSB0aGF0IHRoZSBtYXJrZXRzIHNob3VsZCBoYXZlIGV4cGVjdGVkIHNvIG11Y2guICAgICBUaGUgZG9sbGFyIG9wZW5lZCBsb3dlciBhZ2FpbnN0IHZpcnR1YWxseSBhbGwgY3VycmVuY2llcyBhbmQgdHJhZGVkIGluIGEgbmFycm93IHJhbmdlIGFmdGVyIHRoZSBjb21tdW5pcXVlLCB3aGljaCByZWFmZmlybWVkIHN1cHBvcnQgZm9yIHRoZSBQYXJpcyBhY2NvcmQgb24gY3VycmVuY3kgc3RhYmlsaXNhdGlvbiBidXQgY29udGFpbmVkIG5vIG1vdmVzIHRvIHN0cmVuZ3RoZW4gaXQuICAgICBEZWFsZXJzIGluIEZyYW5rZnVydCBhbmQgWnVyaWNoIHNhdyB0aGUgZG9sbGFyIHJlbWFpbmluZyBicm9hZGx5IGVudHJlbmNoZWQgaW4gaXRzIGN1cnJlbnQgdHJhZGluZyByYW5nZS4gICAgICJUaGUgZG9sbGFyIGlzIGxpa2VseSB0byBzdGF5IHdpdGhpbiBhIHJhbmdlIG9mIDEuODAgdG8gMS44NCBtYXJrcywiIHNhaWQgR2lzZWxhIFN0ZWluaGFldXNlciwgc2VuaW9yIGRlYWxlciBhdCBDaGFzZSBCYW5rIEFHLiBTaGUgc2FpZCB0aGVyZSB3YXMgc29tZSByZXNpc3RhbmNlIHRvIGZ1cnRoZXIgY2xpbWJzLiAgICAgSG93ZXZlciwgc2hlIHNhaWQgdGhlIGRvbGxhciBjb3VsZCBicmVhayBvdXQgb2YgdGhlIHJhbmdlIHdpdGggbWFqb3Igc3VycHJpc2VzIHN1Y2ggYXMgYSB3b3JzZS10aGFuLWV4cGVjdGVkIFUuUy4gTWVyY2hhbmRpc2UgdHJhZGUgZGVmaWNpdCwgZHVlIG5leHQgVHVlc2RheS4gICAgIFRoZW9kb3IgU3RhZGVsbWFubiwgZGVhbGVyIHdpdGggQmFuayBKdWxpdXMgQmFlciBhbmQgQ28gTHRkIGluIFp1cmljaCwgc2FpZCBoZSBleHBlY3RzIHRoZSBkb2xsYXIgdG8gaG9sZCBzdGVhZHkgYWdhaW5zdCB0aGUgbWFyayBhbmQgU3dpc3MgZnJhbmMgYnV0IHRvIHdlYWtlbiBmdXJ0aGVyIGFnYWluc3QgdGhlIHllbiwgcG9zc2libHkgdG8gMTQwIHllbi4gICAgIEEgTWlsYW4gYmFua2VyIHNoYXJlZCBTdGFkZWxtYW5uJ3Mgdmlldywgc2F5aW5nIGhlIGV4cGVjdHMgYSBkb2xsYXIteWVuIHJhbmdlIG9mIDE0MC0xNTAgaW4gdGhlIHNob3J0IHRlcm0uICAgICBMb25kb24gdHJhZGVycyBzYWlkIHRoZSBHLTcgY29tbXVuaXF1ZSBmYWlsZWQgdG8gY3VyYiB1bmRlcmx5aW5nIGJlYXJpc2huZXNzIHRvd2FyZCB0aGUgZG9sbGFyIGJ1dCB0aGlzIG5lZ2F0aXZlIHNlbnRpbWVudCB3YXMgbm90IHlldCBzdHJvbmcgZW5vdWdoIHRvIHRlbXB0IGludGVyYmFuayBvcGVyYXRvcnMgdG8gdGVzdCB0aGUgZG93bnNpZGUuICAgICBDb25jZXJuIHRoYXQgZmluYW5jZSBtaW5pc3RlcnMgYW5kIG9mZmljaWFscyBzdGlsbCBpbiBXYXNoaW5ndG9uIGNvdWxkIGlzc3VlIG1vcmUgY29uY3JldGUgc3RhdGVtZW50cyBpbiBmYXZvdXIgb2YgY3VycmVuY3kgc3RhYmlsaXNhdGlvbiBrZXB0IHBsYXllcnMgc2lkZWxpbmVkLCBhbG9uZyB3aXRoIHdvcnJpZXMgYWJvdXQgcHJvdm9raW5nIGZyZXNoIGNlbnRyYWwgYmFuayBpbnRlcnZlbnRpb24gaW4gdGhlIGxvbmcgdGVybSwgdGhlIHRyYWRlcnMgc2FpZC4gICAgIE1vc3QgUGFyaXMgZGVhbGVycyBleHByZXNzZWQgZGlzYXBwb2ludG1lbnQgYXQgdGhlIGNvbW11bmlxdWUsIHNheWluZyBub3RoaW5nIGhhcyBjaGFuZ2VkIHRvIHJldmVyc2UgdGhlIGRvbGxhcidzIGRvd253YXJkIHRyZW5kLiAgICAgVHJhZGVycyBpbiBzZXZlcmFsIGNlbnRyZXMgc2FpZCB0aGUgbWFya2V0IHdvdWxkIGxvb2sgZm9yIGZyZXNoIG9wcG9ydHVuaXRpZXMgdG8gdGVzdCB0aGUgd2lsbGluZ25lc3Mgb2YgY2VudHJhbCBiYW5rcyB0byBkZWZlbmQgY3VycmVudCByYW5nZXMsIHdoaWNoIHRoZSBjb21tdW5pcXVlIHNhaWQgd2VyZSAiYnJvYWRseSBjb25zaXN0ZW50IHdpdGggZWNvbm9taWMgZnVuZGFtZW50YWxzIGFuZCB0aGUgYmFzaWMgcG9saWN5IGludGVudGlvbnMgb3V0bGluZWQgYXQgdGhlIExvdXZyZSBtZWV0aW5nLiIgICAgIERhdmUgSm91aGluLCBzZW5pb3IgZGVhbGVyIGF0IE1pZGxhbmQgQmFuayBpbiBMb25kb24sIHNhaWQgIlRoZXkncmUgZ29pbmcgdG8gcHV0IHNvbWVib2R5J3MgcmVzb2x2ZSB0byB0aGUgdGVzdCBzb29uLiIgVGhlIFUuUy4gRmVicnVhcnkgdHJhZGUgZGF0YSBtYXkgcHJvdmlkZSB0aGUgdHJpZ2dlciwgZGVhbGVycyBzYWlkLiAgICAgSG93ZXZlciwgc29tZSBkZWFsZXJzIHNhaWQgTG9uZG9uLWJhc2VkIG9wZXJhdG9ycyB3b3VsZCBiZSB1bmxpa2VseSB0byBvcGVuIG1ham9yIHBvc2l0aW9ucyBuZXh0IHdlZWsgYWhlYWQgb2YgdGhlIGxvbmcgRWFzdGVyIHdlZWtlbmQuIFRoZXkgc2F3IG5lYXItdGVybSB0ZWNobmljYWwgc3VwcG9ydCBhdCAxLjgyNSBtYXJrcyBhbmQgMTQ1IHllbiBhbmQgcmVzaXN0YW5jZSBhYm91dCAxLjgzIG1hcmtzIGFuZCAxNDYgeWVuLiAgICAgQ2hhc2UgQmFuaydzIFN0ZWluaGFldXNlciBhbmQgb3RoZXIgRnJhbmtmdXJ0IGRlYWxlcnMgc2FpZCB0aGUgRy03IGNvbW11bmlxdWUgZ3VhcmFudGVlZCBhIHJlbGF0aXZlbHkgY2FsbSBhbmQgc3RhYmxlIG1hcmtldCBmb3IgdGhlIGZvcmVzZWVhYmxlIGZ1dHVyZSBjb21wYXJlZCB3aXRoIHRoZSBleHRyZW1lIHZvbGF0aWxpdHkgc2VlbiBpbiB0aGUgZmlyc3QgZmV3IG1vbnRocyBvZiB0aGlzIHllYXIuICAgICBPbmUgZGVhbGVyIGF0IGEgR2VybWFuIGJhbmsgc2FpZCB0aGUgd29yZGluZyBvZiB0aGUgY29tbXVuaXF1ZSBtYWRlIGNsZWFyIHRoZSBsZWFkaW5nIG5hdGlvbnMgZGlkIG5vdCB3YW50IGEgZnVydGhlciBkb2xsYXIgZHJvcCwgYW5kIHRoaXMgd2FzIHN1cHBvcnRpbmcgdGhlIGRvbGxhci4gICAgIFRoZSBHZXJtYW4gZGVhbGVyIHNhdyB0aGUgZG9sbGFyIGdyYWR1YWxseSBhcHByZWNpYXRpbmcgdG8gMS44NyBtYXJrcywgYnJvYWRseSBzZWVuIGFzIGl0cyB1cHBlciBsaW1pdCB3aXRoaW4gdGhlIExvdXZyZSBhY2NvcmQncyBzdXBwb3NlZCBjdXJyZW5jeSB0YXJnZXQgcmFuZ2UuICAgICBBIFN3aXNzIGJhbmsgZWNvbm9taXN0IHNhaWQgaGUgYmVsaWV2ZWQgdGhlIG1hcmtldHMgd2VyZSByZWFkeSBmb3IgYSBwZXJpb2Qgb2YgIm1haW5seSBzaWRld2F5cyBtb3ZlbWVudC4iICAgICBCdXQgTWlsYW4gZGVhbGVycyB3ZXJlIHNjZXB0aWNhbCBhYm91dCB0aGUgY29tbXVuaXF1ZSBjb250cmlidXRpbmcgdG8gZ3JlYXRlciBzdGFiaWxpdHkuICAgICAiTm90aGluZyBoYXMgY2hhbmdlZCBzdWJzdGFudGlhbGx5IHRvIGdpdmUgdGhlIGRvbGxhciBhIGJpZyBib29zdCwiIHNhaWQgb25lIGRlYWxlciwgd2hpbGUgYW5vdGhlciBJdGFsaWFuIGJhbmtlciBzYWlkIGhlIGV4cGVjdHMgdGhlIGRvbGxhciB0byB0cmFkZSBiZXR3ZWVuIDEuNzcgYW5kIDEuODcgR2VybWFuIG1hcmtzIGluIHRoZSBuZXh0IHRocmVlIG1vbnRocy4gIFJldXRlciAzOwoxOTg3MDQwOQlFWFBPUlQgQk9OVVMgV0hFQVQgRkxPVVIgVE8gSVJBUSAtLVVTREEgVGhlIENvbW1vZGl0eSBDcmVkaXQgQ29ycG9yYXRpb24gKENDQykgYWNjZXB0ZWQgYSBiaWQgZm9yIGFuIGV4cG9ydCBib251cyB0byBjb3ZlciBhIHNhbGUgb2YgMTIsNTAwIHRvbm5lcyBvZiBVLlMuIHdoZWF0IGZsb3VyIHRvIElyYXEsIHRoZSBVLlMuIEFncmljdWx0dXJlIERlcGFydG1lbnQgc2FpZC4gICAgIFRoZSBkZXBhcnRtZW50IHNhaWQgdGhlIGJvbnVzIGF3YXJkZWQgd2FzIDEwNS44MiBkbHJzIHBlciB0b25uZSBhbmQgdGhlIHdoZWF0IGZsb3VyIGlzIGZvciBzaGlwbWVudCBKdWx5IDEtMTAsIDE5ODcuICAgICBUaGUgYm9udXMgd2FzIGF3YXJkZWQgdG8gVGhlIFBpbGxzYnVyeSBDb21wYW55IGFuZCB3aWxsIGJlIHBhaWQgaW4gdGhlIGZvcm0gb2YgY29tbW9kaXRpZXMgZnJvbSBDQ0Mgc3RvY2tzLiAgICAgQW4gYWRkaXRpb25hbCAxNTAsMDAwIHRvbm5lcyBvZiB3aGVhdCBmbG91ciBpcyBzdGlsbCBhdmFpbGFibGUgdG8gSXJhcSB1bmRlciB0aGUgRXhwb3J0IEVuaGFuY2VtZW50IFByb2dyYW0gaW5pdGlhdGl2ZSBhbm5vdW5jZWQgSmFudWFyeSA3LCAxOTg3LCB0aGUgZGVwYXJ0bWVudCBzYWlkLiAgUmV1dGVyIDM7CjE5ODcwNDA5CUVYUE9SVCBCT05VUyBXSEVBVCBGT1IgSk9SREFOIC0tVVNEQSBUaGUgQ29tbW9kaXR5IENyZWRpdCBDb3Jwb3JhdGlvbiAoQ0NDKSBhY2NlcHRlZCBlaWdodCBib251cyBvZmZlcnMgZnJvbSB0d28gZXhwb3J0ZXJzIG9uIHNhbGVzIG9mIDE5MCwwMDAgdG9ubmVzIG9mIGhhcmQgcmVkIHdpbnRlciBhbmQgMzUsMDAwIHRvbm5lcyBvZiBzb2Z0IHJlZCB3aW50ZXIgd2hlYXQgdG8gSm9yZGFuLCB0aGUgVS5TLiBBZ3JpY3VsdHVyZSBEZXBhcnRtZW50IHNhaWQuICAgICBUaGUgZGVwYXJ0bWVudCBzYWlkIHRoZSBib251c2VzIGF3YXJkZWQgYXZlcmFnZWQgMzguMDggZGxycyBwZXIgdG9ubmUgYW5kIHRoZSB3aGVhdCBpcyBmb3IgZGVsaXZlcnkgTWF5LU5vdmVtYmVyLCAxOTg3LiAgICAgVGhlIGJvbnVzIGF3YXJkcyB3ZXJlIG1hZGUgdG8gTG91aXMgRHJleWZ1cyBDb3JwICgyMDAsMDAwICB0b25uZXMpLCBhbmQgQ29udGluZW50YWwgR3JhaW4gQ28gKDI1LDAwMCB0b25uZXMpIGFuZCB3aWxsIGJlIHBhaWQgaW4gdGhlIGZvcm0gb2YgY29tbW9kaXRpZXMgZnJvbSBDQ0Mgc3RvY2tzLiAgICAgVGhlIHB1cmNoYXNlcyBvZiBVLlMuIHdoZWF0IGNvbXBsZXRlcyB0aGUgRXhwb3J0IEVuaGFuY2VtZW50IFByb2dyYW0gaW5pdGlhdGl2ZSBhbm5vdW5jZWQgb24gRGVjZW1iZXIgMzEsIDE5ODYuICBSZXV0ZXIgMzsKMTk4NzA0MDkJRVhYT04gPFhPTj4gQ1VUUyBIRUFUSU5HIE9JTCBQUklDRSwgVFJBREVSUyBTQUlEIE9pbCB0cmFkZXJzIGluIHRoZSBOZXcgWW9yayBhcmVhIHNhaWQgRXh4b24gQ29ycCdzIEV4eG9uIFUuUy5BLiB1bml0IHJlZHVjZWQgdGhlIHByaWNlIGl0IGNoYXJnZXMgY29udHJhY3QgYmFyZ2UgY3VzdG9tZXJzIGZvciBoZWF0aW5nIG9pbCBpbiBOZXcgWW9yayBoYXJib3IgMC41MCBjZW50IGEgZ2FsbG9uLCBlZmZlY3RpdmUgdG9kYXkuICAgICBUaGV5IHNhaWQgdGhlIHJlZHVjdGlvbiBicmluZ3MgRXh4b24ncyBjb250cmFjdCBiYXJnZSBwcmljZSB0byA0OS43NS4gVGhlIHByaWNlIGRlY3JlYXNlIGZvbGxvd3Mgc2hhcnAgZGVjbGluZXMgaW4gaGVhdGluZyBvaWwgcHJpY2VzIGluIHRoZSBzcG90IGFuZCBmdXR1cmVzIG1hcmtldHMsIHRyYWRlcnMgc2FpZC4gIFJldXRlciAzOwoxOTg3MDQwOQlFWFhPTiA8WE9OPiBTT1VUSCBBRlJJQ0FOIFVOSVQgQUNRVUlSRUQgQlkgWkVORVggPFplbmV4IE9pbCBQdHkgTHRkPiBzYWlkIGl0IGFjcXVpcmVkIHRoZSBpbnRlcmVzdHMgb2YgRXNzbyBTb3V0aCBBZnJpY2EsIHRoZSBsb2NhbCBzdWJzaWRpYXJ5IG9mIEV4eG9uIENvcnAgPFhPTiksIGFuZCB3aWxsIHVzZSB1cCB0byAyMCBtbG4gcmFuZCBpbiBwcm9maXRzIHRvIGZpbmFuY2UgZWR1Y2F0aW9uYWwgYW5kIHNvY2lhbCBwcm9ncmFtcy4gICAgIFRoZSBwcm9maXQgc2NoZW1lIHdpbGwgYmVnaW4gYWZ0ZXIgWmVuZXggaGFzIHBhaWQgRXh4b24gYW4gdW5kaXNjbG9zZWQgcHVyY2hhc2UgcHJpY2UgZm9yIEVzc28sIFplbmV4IGNoYWlybWFuIEpvaG4gVHJ1c2NvdHQgc2FpZCBpbiBhIHN0YXRlbWVudC4gICAgIFRoZSBhY3F1aXNpdGlvbiBmb2xsb3dzIHRoZSBFeHhvbiB3aXRoZHJhd2FsIGZyb20gU291dGggQWZyaWNhIGFubm91bmNlZCBsYXN0IERlY2VtYmVyLiAgUmV1dGVyIDM7CjE5ODcwNDA5CUYuIFcuIFdPT0xXT1JUSCA8Wj4gTUFSQ0ggU0FMRVMgVVAgMC4yIFBDVCBGLiBXLiBXb29sd29ydGggQ28gc2FpZCBzYWxlcyBmb3IgdGhlIGZpdmUgd2Vla3MgZW5kZWQgYXByaWwgNCByb3NlIDAuMiBwY3QgdG8gNTkxIG1sbiBkbHJzIGZyb20gNTkwIG1sbiBkbHJzLiAgICAgRG9tZXN0aWMgc2FsZXMgZGVjcmVhc2VkIDQuNCBwY3QgdG8gMzU1IG1sbiBkbHJzIGZyb20gMzcxIG1sbiBkbHJzIGFuZCBmb3JlaWduIHNhbGVzLCBleHByZXNzZWQgaW4gVS5TLiBkbHJzLCByb3NlIDcuOSBwY3QsIHRoZSBjb21wYW55IHNhaWQuICAgICBJZiBmb3JlaWduIGV4Y2hhbmdlIHJhdGVzIGhhZCByZW1haW5lZCBjb25zdGFudCwgZm9yZWlnbiBzYWxlcyB3b3VsZCBoYXZlIGRlY3JlYXNlZCA0LjAgcGN0IGFuZCB0b3RhbCBzYWxlcyA0LjIgcGN0LCBpdCBzYWlkLiAgICAgRm9yIHRoZSBuaW5lIHdlZWtzLCB0b3RhbCBzYWxlcyByb3NlIDQuMyBwY3QgdG8gMS4wMSBiaWxsaW9uIGZyb20gOTY0IG1sbiBkbHJzLiAgICAgRG9tZXN0aWMgc2FsZXMgb2YgNjA0IG1sbiBkbHJzIHdlcmUgdW5jaGFuZ2VkIGFuZCBmb3JlaWduIHNhbGVzLCBleHByZXNzZWQgaW4gZGxycywgaW5jcmVhc2VkIDExLjQgcGN0IGZyb20gdGhlIHllYXIgZWFybGllciBwZXJpb2QuIElmIGZvcmVpZ24gZXhjaGFuZ2UgcmF0ZXMgd2VyZSBjb25zdGFudCwgZm9yZWlnbiBzYWxlcyB3b3VsZCBoYXZlIGRlY3JlYXNlZCAxLjAgcGN0IGFuZCB0b3RhbCBzYWxlcyAwLjQgcGN0LCB0aGUgY29tcGFueSBzYWlkLiAgICAgIkFzIGFudGljaXBhdGVkLCBNYXJjaCBzYWxlcyB3ZXJlIGxhY2tsdXN0ZXIgaW4gb3VyIHNlYXNvbmFsbHkgc2Vuc2l0aXZlIGJ1c2luZXNzZXMgZHVlIHRvIEVhc3RlcidzIGJlaW5nIHRocmVlIHdlZWtzIGxhdGVyIHRoaXMgeWVhciB0aGFuIGxhc3QsIiB0aGUgY29tcGFueSBzYWlkIGluIGEgc3RhdGVtZW50LiAgUmV1dGVyIDM7CjE5ODcwNDA5CUZBTyBTRUVTIExPV0VSIEdMT0JBTCBXSEVBVCwgR1JBSU4gT1VUUFVUIElOIDE5ODcgVGhlIFUuTi4gRm9vZCBhbmQgQWdyaWN1bHR1cmUgT3JnYW5pc2F0aW9uIChGQU8pIHNhaWQgZ2xvYmFsIHdoZWF0IGFuZCBjb2Fyc2UgZ3JhaW4gb3V0cHV0IHdhcyBsaWtlbHkgdG8gZmFsbCBpbiAxOTg3IGJ1dCBzdXBwbGllcyB3b3VsZCByZW1haW4gYWRlcXVhdGUgdG8gbWVldCBkZW1hbmQuICAgICBGQU8gc2FpZCBpbiBpdHMgbW9udGhseSBmb29kIG91dGxvb2sgYnVsbGV0aW4gdG90YWwgd29ybGQgZ3JhaW4gb3V0cHV0IHdhcyBleHBlY3RlZCB0byBmYWxsIDM4IG1sbiB0b25uZXMgdG8gMSwzNTMgbWxuIGluIDE5ODcsIGR1ZSBtYWlubHkgdG8gdW51c3VhbGx5IGhpZ2ggd2ludGVyIGxvc3NlcyBpbiB0aGUgU292aWV0IFVuaW9uLCBkcm91Z2h0IGluIENoaW5hIGFuZCByZWR1Y2VkIHBsYW50aW5ncyBpbiBOb3J0aCBBbWVyaWNhLiAgICAgV29ybGQgY2VyZWFsIHN0b2NrcyBhdCB0aGUgZW5kIG9mIDE5ODYvODcgd2VyZSBmb3JlY2FzdCB0byByaXNlIDQ3IG1sbiB0b25uZXMgdG8gYSByZWNvcmQgNDUyIG1sbiB0b25uZXMsIHNvZnRlbmluZyB0aGUgaW1wYWN0IG9mIHJlZHVjZWQgcHJvZHVjdGlvbi4gQnV0IHN0b2NrcyBhcmUgdW5ldmVubHkgZGlzdHJpYnV0ZWQsIHdpdGggYWJvdXQgNTAgcGN0IGhlbGQgYnkgdGhlIFUuUy4gICAgICJUaHVzIHRoZSBmb29kIHNlY3VyaXR5IHByb3NwZWN0cyBpbiAxOTg3Lzg4IGZvciBtYW55IGRldmVsb3BpbmcgY291bnRyaWVzLCBwYXJ0aWN1bGFybHkgaW4gQWZyaWNhLCBkZXBlbmQgY3J1Y2lhbGx5IG9uIHRoZSBvdXRjb21lIG9mIHRoaXMgeWVhcidzIGhhcnZlc3RzLCIgRkFPIHNhaWQuICAgICBGQU8gc2FpZCB3b3JsZCBjZXJlYWwgc3VwcGxpZXMgaW4gMTk4Ni84NyB3ZXJlIGVzdGltYXRlZCBhdCBhIHJlY29yZCAyLDExMyBtbG4gdG9ubmVzLCBhYm91dCBmaXZlIHBjdCBoaWdoZXIgdGhhbiBsYXN0IHNlYXNvbiBhbmQgZHVlIG1haW5seSB0byBsYXJnZSBzdG9ja3MgYW5kIGEgcmVjb3JkIDE5ODYgaGFydmVzdCwgZXN0aW1hdGVkIGF0IDEsODY1IG1sbiB0b25uZXMuICAgICBGQU8ncyBmb3JlY2FzdCBvZiAxOTg2Lzg3IHdvcmxkIGNlcmVhbHMgdHJhZGUgd2FzIHJldmlzZWQgdXB3YXJkcyBieSBlaWdodCBtbG4gdG9ubmVzIHRvIDE3OSBtbG4gZHVlIHRvIHRoZSBsaWtlbGlob29kIG9mIHN1YnN0YW50aWFsIGJ1eWluZyBieSBDaGluYSBhbmQgdGhlIFNvdmlldCBVbmlvbi4gIFJFVVRFUiAzOwoxOTg3MDQwOQlGQ09KIE1PVkVNRU5UIDQsNDk2LDUzMyBHQUxMT05TIExBU1QgV0VFSyBGbG9yaWRhIENpdHJ1cyBQcm9jZXNzb3JzIEFzc29jaWF0aW9uIHNhaWQgZnJvemVuIGNvbmNlbnRyYXRlZCBvcmFuZ2UganVpY2UgbW92ZW1lbnQgaW50byB0cmFkZSBjaGFubmVscyBpbiB0aGUgd2VlayBlbmRlZCBBcHJpbCA0IHRvdGFsbGVkIDQsNDk2LDUzMyBnYWxsb25zIHZlcnN1cyA1LDA1OCw5NzYgZ2FsbG9ucyBpbiB0aGUgd2VlayBlbmRlZCBNYXJjaCAyOCBhbmQgNCwxNDEsNTc4IGdhbGxvbnMgaW4gdGhlIGNvcnJlc3BvbmRpbmcgeWVhci1hZ28gcGVyaW9kLiAgICAgVGhlcmUgd2VyZSA0OTksOTY3IGdhbGxvbnMgb2YgZm9yZWlnbiBpbXBvcnRzIGxhc3Qgd2VlayB2ZXJzdXMgMzQxLDI4MCBnYWxsb25zIHRoZSB3ZWVrIGJlZm9yZS4gRG9tZXN0aWMgaW1wb3J0cyBsYXN0IHdlZWsgd2VyZSAyNCw3NzQuIFJldGFpbCBtb3ZlbWVudCB3YXMgMSw3NDEsMTM5IHZlcnN1cyAxLDQ2NCw0OTAgYSB5ZWFyIGFnby4gQnVsayBtb3ZlbWVudCB3YXMgMiwzMjgsMzY4IGFnYWluc3QgMiwxMzksMzgzIGEgeWVhciBlYXJsaWVyLiAgICAgQ3VycmVudCBzZWFzb24gY3VtdWxhdGl2ZSBtb3ZlbWVudCB3YXMgNzksNTE2LDc1MyBnYWxsb25zIHZlcnN1cyA3Niw5MTksMTE5IGxhc3QgeWVhci4gQ3VtdWxhdGl2ZSBuZXQgcGFjayBmb3IgdGhlIHNlYXNvbiB3YXMgODYsMjU0LDg0NiB2ZXJzdXMgODIsMzU1LDg2NCBhIHllYXIgYWdvLiBJbnZlbnRvcnkgd2FzIDc1LDIxMiw3MTEgdmVyc3VzIDc1LDk4NSw2OTYgYSB5ZWFyIGFnby4gIFJldXRlciAzOwoxOTg3MDQwOQlGRUQgTUFZIEFERCBSRVNFUlZFUyBUTyBCQU5LSU5HIFNZU1RFTSBUaGUgRmVkZXJhbCBSZXNlcnZlIG1heSBpbnRlcnZlbmUgaW4gdGhlIGdvdmVybm1lbnQgc2VjdXJpdGllcyBtYXJrZXQgdG8gc3VwcGx5IHRlbXBvcmFyeSByZXNlcnZlcyBpbmRpcmVjdGx5IHZpYSBjdXN0b21lciByZXB1cmNoYXNlIGFncmVlbWVudHMsIGVjb25vbWlzdHMgc2FpZC4gICAgIFRoZXkgc2FpZCB0aGF0IHdoaWxlIHRoZSBGZWQgZmFjZXMgbm8gZ3JlYXQgdXJnZW5jeSB0byBhZGQgcmVzZXJ2ZXMgYXQgdGhlIHN0YXJ0IG9mIHRoZSB0d28td2VlayBtYWludGVuYW5jZSBwZXJpb2QgdG9kYXkgaXQgd291bGQgcHJvYmFibHkgZG8gc28gaW4gb3JkZXIgdG8gb2Zmc2V0IGEgcmVsYXRpdmVseSBoaWdoIGZlZGVyYWwgZnVuZHMgcmF0ZS4gICAgIEZlZCBmdW5kcyBvcGVuZWQgYXQgNi0zLzE2IHBjdCBhbmQgcmVtYWluZWQgdGhlcmUgaW4gZWFybHkgdHJhZGluZy4gWWVzdGVyZGF5LCB0aGV5IGF2ZXJhZ2VkIDYuNDUgcGN0LCBhZnRlciByaXNpbmcgYXMgaGlnaCBhcyBzZXZlbiBwY3QgYXQgdGhlIGNsb3NlLiAgUmV1dGVyIDM7CjE5ODcwNDA5CUZFRCBTRUVOIEJVWUlORyBET0xMQVJTIEZPUiBZRU4gSU4gT1BFTiBNQVJLRVQgVGhlIEZlZGVyYWwgUmVzZXJ2ZSB3YXMgZGV0ZWN0ZWQgYnV5aW5nIGRvbGxhcnMgZm9yIHllbiBpbiB0aGUgb3BlbiBtYXJrZXQgYXMgdGhlIGRvbGxhciBmZWxsIHRvIGEgNDAteWVhciBsb3cgb2YgMTQ0LjYwIHllbiBpbiBuZXJ2b3VzIGxhdGUgbW9ybmluZyB0cmFkaW5nLCBjdXJyZW5jeSBkZWFsZXJzIHNhaWQuICAgICAgVGhleSBzYWlkIHRoZSBzaXplIG9mIHRoZSBpbnRlcnZlbnRpb24gd2FzIHJlbGF0aXZlbHkgbW9kZXN0IHNvIGZhciBidXQgaXQgd2FzIGEgY2xlYXIgaW5kaWNhdGlvbiB0aGF0IHRoZSBVLlMuIHJlbWFpbmVkIGNvbW1pdHRlZCB0byB0aGUgbGF0ZSBGZWJydWFyeSBQYXJpcyBjdXJyZW5jeSBzdGFiaWxpemF0aW9uIGFjY29yZCwgd2hpY2ggd2FzIHJlYWZmaXJtZWQgaW4gV2FzaGluZ3RvbiBsYXN0IG5pZ2h0LiAgICAgQSBGZWQgc3Bva2Vzd29tYW4gaGFkIG5vIGNvbW1lbnQgb24gdGhlIGRlYWxlciByZXBvcnRzLiAgICAgVGhlIGRvbGxhciBob3ZlcmVkIGFyb3VuZCAxNDQuNzAganVzdCBiZWZvcmUgbWlkZGF5LiAgUmV1dGVyIDM7CjE5ODcwNDA5CUZFREVSQVRFRCBERVBBUlRNRU5UIFNUT1JFUyA8RkRTPiBNQVJDSCBTQUxFUyBVUCBGZWRlcmF0ZWQgRGVwYXJ0bWVudCBTdG9yZXMgSW5jIHNhaWQgc2FsZXMgZm9yIHRoZSBmaXZlIHdlZWtzIGVuZGVkIEFwcmlsIEZvdXIgd2VyZSB1cCA0LjkgcGN0IHRvIDkzNC45IG1sbiBkbHJzIGZyb20gODkxLjYgbWxuIGRscnMgYSB5ZWFyIGJlZm9yZS4sICAgICBUaGUgY29tcGFueSBzYWlkIHNhbGVzIGZvciB0aGUgZmlyc3QgdHdvIG1vbnRocyBvZiBpdHMgZmlzY2FsIHllYXIgd2VyZSB1cCA2LjggcGN0IHRvIDEuNjUgYmlsbGlvbiBkbHJzIGZyb20gMS41NSBiaWxsaW9uIGRscnMgYSB5ZWFyIGJlZm9yZS4gIFJldXRlciAzOwoxOTg3MDQwOQlGSExCQiBDSEFOR0VTIFNIT1JULVRFUk0gRElTQ09VTlQgTk9URSBSQVRFUyBUaGUgRmVkZXJhbCBIb21lIExvYW4gQmFuayBCb2FyZCBhZGp1c3RlZCB0aGUgcmF0ZXMgb24gaXRzIHNob3J0LXRlcm0gZGlzY291bnQgbm90ZXMgYXMgZm9sbG93czogICAgIE1BVFVSSVRZICAgTkVXIFJBVEUgIE9MRCBSQVRFICBNQVRVUklUWSAgIDMwLTE3NCBkYXlzICA1LjAwIHBjdCAgNS4wMCBwY3QgICAzMC0xNzQgZGF5cyAgMTc1LTE5MCBkYXlzICA1Ljg4IHBjdCAgNS44NSBwY3QgIDE3NS0xOTAgZGF5cyAgMTkxLTI3MCBkYXlzICA1LjAwIHBjdCAgNS4wMCBwY3QgIDE5MS0yNzAgZGF5cyAgMjcxLTI4OCBkYXlzICA1LjkyIHBjdCAgNS45MiBwY3QgIDI3MS0yODggZGF5cyAgMjg5LTM2MCBkYXlzICA1LjAwIHBjdCAgNS4wMCBwY3QgIDI4OS0zNjAgZGF5cyAgICAgICAgICAgICAgICAgICAgICAgICAgUmV1dGVyIDM7CjE5ODcwNDA5CUZITEJCIENIQU5HRVMgU0hPUlQtVEVSTSBESVNDT1VOVCBOT1RFIFJBVEVTIFRoZSBGZWRlcmFsIEhvbWUgTG9hbiBCYW5rIEJvYXJkIGFkanVzdGVkIHRoZSByYXRlcyBvbiBpdHMgc2hvcnQtdGVybSBkaXNjb3VudCBub3RlcyBhcyBmb2xsb3dzOiAgICAgTUFUVVJJVFkgICBORVcgUkFURSAgT0xEIFJBVEUgIE1BVFVSSVRZICAgMzAtMTc0IGRheXMgIDUuMDAgcGN0ICA1LjAwIHBjdCAgICAzMC04NyBkYXlzICAxNzUtMTkwIGRheXMgIDUuODUgcGN0ICA1LjgyIHBjdCAgIDg4LTEwMyBkYXlzICAxOTEtMjcwIGRheXMgIDUuMDAgcGN0ICA1LjAwIHBjdCAgMTA0LTE3OSBkYXlzICAyNzEtMjg4IGRheXMgIDUuOTIgcGN0ICA1Ljg1IHBjdCAgMTgwLTIwNSBkYXlzICAyODktMzYwIGRheXMgIDUuMDAgcGN0ICA1LjAwIHBjdCAgMjA2LTM2MCBkYXlzICAgICAgICAgICAgICAgICAgICAgICAgICBSZXV0ZXIgMzsKMTk4NzA0MDkJRklOQUwgVEVTVCBJTkMgPEZOTFQ+IDRUSCBRVFIgTE9TUyBTaHIgbG9zcyBzaXggY3RzIHZzIGxvc3MgODggY3RzICAgICBOZXQgbG9zcyAxMjMsODQwIHZzIGxvc3MgMSwyOTgsMzc3ICAgICBSZXZzIDEsMzMzLDQxNiB2cyAzODUsMTQ2ICAgICBZZWFyICAgICBTaHIgcHJvZml0IHNpeCBjdHMgdnMgbG9zcyAxLjQ3IGRscnMgICAgIE5ldCBwcm9maXQgMTI0LDg3MiB2cyBsb3NzIDIsMTcxLDAxMSAgICAgUmV2cyA0LDYxOCwyMzIgdnMgMiw5NTksMTQxICBSZXV0ZXIgMzsKMTk4NzA0MDkJRklOQU5DRSBNSU5JU1RFUlMgQUdSRUUgT04gTkVFRCBGT1IgU1RBQklMSVRZIEZpbmFuY2UgbWluaXN0ZXJzIGZyb20gc2V2ZW4gbWFqb3IgaW5kdXN0cmlhbGl6ZWQgbmF0aW9ucyBhZ3JlZWQgb24gdGhlIG5lZWQgdG8gc3RhYmlsaXplIGN1cnJlbmNpZXMgYXQgY3VycmVudCBsZXZlbHMgYnV0IHNhaWQgbW9yZSBhY3Rpb24gd2FzIG5lZWRlZCB0byByZWR1Y2UgdHJhZGUgaW1iYWxhbmNlcyBhbmQgc3VzdGFpbiBlY29ub21pYyBncm93dGguICAgICBJbiBhIGNvbW11bmlxdWUgaXNzdWVkIGFmdGVyIGEgZm91ci1ob3VyIG1lZXRpbmcgYXQgdGhlIFUuUy4gVHJlYXN1cnkgdGhhdCBlbmRlZCBsYXN0IG5pZ2h0LCB0aGUgbWluaXN0ZXJzIHNhaWQgdGhlIHZhbHVlIG9mIHRoZSBkb2xsYXIgYW5kIG90aGVyIGN1cnJlbmNpZXMgd2FzIGJhc2ljYWxseSBjb3JyZWN0IG5vdywgYW5kIHRoZXkgd2VsY29tZWQgbmV3IG1lYXN1cmVzIHBsYW5uZWQgYnkgdGhlIEphcGFuZXNlIHRvIGJvb3N0IHRoZWlyIGVjb25vbXkuICAgICBXZXN0IEdlcm1hbiBGaW5hbmNlIE1pbmlzdGVyIEdlcmhhcmQgU3RvbHRlbmJlcmcgY2FsbGVkIGl0IGEgImdvb2QgbWVldGluZyIgYW5kIGluIGJyaWVmIHJlbWFya3MgZXhjaGFuZ2VkIHdpdGggcmVwb3J0ZXJzIG90aGVyIG1pbmlzdGVycyBzZWVtZWQgcGxlYXNlZCB3aXRoIGl0cyBvdXRjb21lLiAgICAgU2hvcnRseSBhZnRlciB0aGUgY29tbXVuaXF1ZSB3YXMgaXNzdWVkIGFuZCBqdXN0IGFzIGZvcmVpZ24gZXhjaGFuZ2UgdHJhZGluZyBvcGVuZWQgaW4gVG9reW8sIHRoZSBCYW5rIG9mIEphcGFuIGludGVydmVuZWQgYWdhaW4gdG8gcHJldmVudCB0aGUgeWVuIHJpc2luZyB0b28gcXVpY2tseS4gICAgIFRoZSBjb21tdW5pcXVlIHNhaWQsICJUaGUgbWluaXN0ZXJzIGFuZCBnb3Zlcm5vcnMgcmVhZmZpcm1lZCB0aGUgY29tbWl0bWVudCB0byB0aGUgY29vcGVyYXRpdmUgYXBwcm9hY2ggYWdyZWVkIGF0IHRoZSByZWNlbnQgUGFyaXMgbWVldGluZy4gVGhleSBhZ3JlZWQsIGhvd2V2ZXIsIHRoYXQgZnVydGhlciBhY3Rpb25zIHdpbGwgYmUgZXNzZW50aWFsIHRvIHJlc2lzdCByaXNpbmcgcHJvdGVjdGlvbmlzdCBwcmVzc3VyZXMsIHN1c3RhaW4gZ2xvYmFsIGVjb25vbWljIGV4cGFuc2lvbiBhbmQgcmVkdWNlIHRyYWRlIGltYmFsYW5jZXMuIiAgICAgSXQgd2VsY29tZWQgdGhlIHBsYW5zIHNldCB0aGlzIHdlZWsgYnkgdGhlIEphcGFuJ3MgcnVsaW5nIExpYmVyYWwgRGVtb2NyYXRpYyBQYXJ0eSB0byBzdGltdWxhdGUgaXRzIGVjb25vbXkgd2l0aCB3aGF0IHRoZSBjb21tdW5pcXVlIHRlcm1lZCAiZXh0cmFvcmRpbmFyeSBhbmQgdXJnZW50IG1lYXN1cmVzIiBpbmNsdWRpbmcgYW4gInVucHJlY2VkZW50ZWQgZnJvbnQtZW5kIGxvYWRpbmcgb2YgcHVibGljIHdvcmtzIGV4cGVuZGl0dXJlcy4iICAgICBUaGUgbWVldGluZyBvZiB0aGUgc28tY2FsbGVkIEdyb3VwIG9mIFNldmVuIGJyb3VnaHQgdG9nZXRoZXIgbWluaXN0ZXJzIGFuZCBjZW50cmFsIGJhbmsgZ292ZXJub3JzIG9mIHRoZSBzZXZlbiBtYWpvciBpbmR1c3RyaWFsIGRlbW9jcmFjaWVzLCB0aGUgVW5pdGVkIFN0YXRlcywgSmFwYW4sIFdlc3QgR2VybWFueSwgRnJhbmNlLCBCcml0YWluLCBJdGFseSBhbmQgQ2FuYWRhLiAgICAgVGhlIGNvbW11bmlxdWUgc2FpZCB0aGUgbWluaXN0ZXJzIHJlYWZmaXJtZWQgdGhlIGNvbW1pdG1lbnQgb24gY29vcGVyYXRpb24gcmVhY2hlZCBpbiBhIG1lZXRpbmcgb24gRmVicnVhcnkgMjIgaW4gUGFyaXMgd2hlbiB0aGV5IGhhZCBhZ3JlZWQgdG8gc3RhYmlsaXplIGZvcmVpZ24gZXhjaGFuZ2UgcmF0ZXMgYXQgdGhlIHRoZW4tY3VycmVudCBsZXZlbHMuICAgICBJbiB0aGUgd2Vla3MgdGhhdCBmb2xsb3dlZCwgdGhlIGRvbGxhciBjb250aW51ZWQgdG8gZmFsbCBhZ2FpbnN0IHRoZSBKYXBhbmVzZSB5ZW4gZGVzcGl0ZSBtYXNzaXZlIGRvbGxhciBwdXJjaGFzZXMgYnkgdGhlIEJhbmsgb2YgSmFwYW4gYW5kIG90aGVyIGNlbnRyYWwgYmFua3MgYW5kIGlzIG5vdyB0cmFkaW5nIGF0IGFyb3VuZCBwb3N0d2FyIGxvd3MuICAgICBKYXBhbiBoYXMgY29tZSB1bmRlciBncm93aW5nIGNyaXRpY2lzbSBmcm9tIGJvdGggdGhlIFVuaXRlZCBTdGF0ZXMgYW5kIEV1cm9wZWFuIGNvdW50cmllcyBmb3IgaXRzIG9ubHkgbW9kZXN0IGVmZm9ydHMgdG8gb3BlbiBpdHMgbWFya2V0cyB0byBvdXRzaWRlIGNvbXBldGl0aW9uIGFuZCB0byByZWR1Y2UgaXRzIGV4cG9ydHMuICAgICBUaGUgY29tbXVuaXF1ZSBzYWlkIEphcGFuIGFmZmlybWVkIGl0cyBpbnRlbnRpb24gdG8gb3BlbiBkb21lc3RpYyBtYXJrZXRzIHRvIGZvcmVpZ24gZ29vZHMgYW5kIHNlcnZpY2VzIGJ1dCBkaWQgbm90IGVsYWJvcmF0ZS4gICAgIEl0IHNhaWQgdGhlIG9mZmljaWFscyAicmVhZmZpcm1lZCB0aGUgdmlldyB0aGF0IGFyb3VuZCBjdXJyZW50IGxldmVscyB0aGVpciBjdXJyZW5jaWVzIGFyZSB3aXRoaW4gcmFuZ2VzIGJyb2FkbHkgY29uc2lzdGVudCB3aXRoIGVjb25vbWljIGZ1bmRhbWVudGFscyBhbmQgdGhlIGJhc2ljIHBvbGljeSBpbnRlbnRpb25zIG91dGxpbmVkIGF0IHRoZSBMb3V2cmUgbWVldGluZy4iICBSZXV0ZXIgMzsKMTk4NzA0MDkJRklOQU5DSUFMIE5FV1MgTkVUV09SSyBJTkMgPEZOTkk+IDJORCBRVFIgTkVUIFF0ciBlbmRlZCBGZWJydWFyeSAyOCAgICAgU2hyIHNpeCBjdHMgdnMgdGhyZWUgY3RzICAgICBOZXQgNzY1LDEzOCB2cyAzMTEsMzg4ICAgICBSZXYgOC4zIG1sbiB2cyAzLjcgbWxuICAgICBBdmcgc2hhcmVzIDEyLDI3MiwyNjUgdnMgMTEsMzc3LDQ5MSAgICAgU2l4IG1vbnRocyAgICAgU2hyIDE3IGN0cyB2cyBmaXZlIGN0cyAgICAgTmV0IDIsMDczLDA1NyB2cyA1MTUsMjI5ICAgICBSZXYgMTUuMCBtbG4gdnMgNy40IG1sbiAgICAgQXZnIHNoYXJlcyAxMiwyOTUsOTM0IHZzIDExLDIwMCwwMDAgIFJldXRlciAzOwoxOTg3MDQwOQlGSVJFIEFUIFRBVEUvTFlMRSBMT05ET04gSkVUVFkgSEFMVFMgVU5MT0FESU5HIE5vIHJhdyBzdWdhciBpcyBiZWluZyB1bmxvYWRlZCBhdCBUYXRlIGFuZCBMeWxlcyByZWZpbmVyeSBhdCBTaWx2ZXJ0b3duIG9uIHRoZSBSaXZlciBUaGFtZXMgZm9sbG93aW5nIGEgZmlyZSB5ZXN0ZXJkYXkgYWZ0ZXJub29uLCBUYXRlIGFuZCBMeWxlIFBsYyBzYWlkLiAgICAgVGhlIGZpcmUgZGVzdHJveWVkIGEgbGFyZ2Ugc2VjdG9yIG9mIHRoZSBtYWluIGNvbnZleW9yIGZyb20gdGhlIHJhdyBzdWdhciBqZXR0eSB0byB0aGUgd2VpZ2hob3VzZS4gICAgIFRoZSBjb21wYW55IHNhaWQgaXQgaXMgbm90IHlldCBrbm93biBob3cgbG9uZyB0aGUgamV0dHkgd2lsbCBiZSBvdXQgb2YgdXNlIGJ1dCBpdCBob3BlZCB0aGF0IGJ5IHRvbW9ycm93IHVubG9hZGluZyBvZiB0aGUgYnVsayBjYXJyaWVyIE15a29uIFdhdmUgd2lsbCBiZSBhYmxlIHRvIGNvbnRpbnVlIHVzaW5nIHRlbXBvcmFyeSBhcnJhbmdlbWVudHMsIFRhdGUgYW5kIEx5bGUgc2FpZC4gICAgIFRoZSBNeWtvbiBXYXZlIGFycml2ZWQgaW4gdGhlIHBvcnQgcmVjZW50bHkgd2l0aCBhYm91dCAxOCwzMDAgdG9ubmVzIG9mIGJ1bGsgc3VnYXIgZnJvbSBNYXB1dG8gaW4gU3dhemlsYW5kLiBBYm91dCAxLDYwMCB0b25uZXMgcmVtYWluIHRvIGJlIGRpc2NoYXJnZWQuICAgICBGaXZlIG90aGVyIHNoaXBzIGxvYWRlZCB3aXRoIHJhdyBzdWdhciBhcmUgYXdhaXRpbmcgYXQgU2lsdmVydG93biB0byBiZSBkaXNjaGFyZ2VkLCBUYXRlIGFuZCBMeWxlIGFkZGVkLiAgUmV1dGVyIDM7CjE5ODcwNDA5CUZJUk0gSEFTIDE0LjggUENUIE9GIERFQ0lTSU9OL0NBUElUQUwgRlVORDxEQ0Y+IEdhYmVsbGkgR3JvdXAgSW5jIHNhaWQgaXQgYW5kIHR3byBzdWJzaWRpYXJpZXMgaGVsZCBhIHRvdGFsIG9mIDI5NSw4MDAgRGVjaXNpb24vQ2FwaXRhbCBGdW5kIEluYyBzaGFyZXMgb3IgMTQuOCBwY3Qgb2YgdGhlIHRvdGFsIG91dHN0YW5kaW5nLiAgICAgSXQgc2FpZCB0aGUgc2hhcmVzIHdlcmUgaGVsZCBvbiBiZWhhbGYgb2YgaW52ZXN0bWVudCBjbGllbnRzIGFuZCBpdCBzYWlkIGl0IGhhZCBubyBpbnRlbnRpb24gb2Ygc2Vla2luZyBjb250cm9sIG9mIHRoZSBmdW5kLiAgICAgR2FiZWxsaSBzYWlkIGl0cyBtb3N0IHJlY2VudCBwdXJjaGFzZXMgb2YgRGVjaXNpb24vQ2FwaXRhbCBGdW5kIHN0b2NrIGluY2x1ZGVkIDk1LDgwMCBzaGFyZXMgYm91Z2h0IEFwcmlsIDMtNiBvbiB0aGUgUGhpbGFkZWxwaGlhIFN0b2NrIEV4Y2hhbmdlLiAgICAgR2FiZWxsaSBpcyBhbiBpbnZlc3RtZW50IGZpcm0gaGVhZHF1YXJ0ZXJlZCBpbiBOZXcgWW9yayBDaXR5LiBJdHMgR2FiZWxsaSBhbmQgQ28gc3Vic2lkaWFyeSBpcyBhIGJyb2tlcmFnZSBmaXJtLiAgUmV1dGVyIDM7CjE5ODcwNDA5CUZJUlNUIEJBTksgPEZCUz4gU0VFUyBMT1NTIE9OIEJSQVpJTElBTiBMT0FOUyBGaXJzdCBCYW5rIFN5c3RlbXMgSW5jLCBpbiByZXBvcnRpbmcgaGlnaGVyIGZpcnN0IHF1YXJ0ZXIgbmV0LCBzYWlkIHRoYXQgaWYgaW50ZXJlc3QgaXMgbm90IHBhaWQgb24gdGhlIDE0MCBtbG4gZGxycyBpbiBCcmF6aWxpYW4gbG9hbnMgYW5kIG5pbmUgbWxuIGRscnMgaW4gRWN1YWRvcmlhbiBsb2FucyBmb3IgdGhlIHJlc3Qgb2YgMTk4NywgaXRzIHByb2ZpdHMgZm9yIHRoZSBlbnRpcmUgeWVhciB3aWxsIGJlIGN1dCBieSA2LjkgbWxuIGRscnMuICAgICBUaGUgYmFua2luZyBmaXJtIHNhaWQgdGhlIG5vbi1wZXJmb3JtaW5nIHN0YXR1cyBvZiB0aGVzZSBsb2FucyBjdXQgZmlyc3QgcXVhcnRlciBuZXQgYnkgMS43IG1sbiBkbHJzLiAgICAgRWFybGllciBpdCByZXBvcnRlZCBmaXJzdCBxdWFydGVyIHByb2ZpdHMgb2YgNTcuNCBtbG4gZGxycyBvciA5NSBjdHMgYSBzaGFyZSwgdXAgZnJvbSA0Ni42IG1sbiBkbHJzIG9yIDgwIGN0cyBhIHNoYXJlIGluIHRoZSB5ZWFyLWFnbyBwZXJpb2QuICAgICBOb25hY2NydWFsIGxvYW5zLCByZXN0cnVjdHVyZWQgbG9hbnMgYW5kIG90aGVyIHJlYWwgZXN0YXRlIHdlcmUgNjM3IG1sbiBkbHJzLCBvciAyLjI0IHBjdCBvZiB0b3RhbCBhc3NldHMsIGNvbXBhcmVkIHRvIDUxNCBtbG4gZGxycyBvciAxLjg0IHBjdCBvZiBhc3NldHMgYXQgdGhlIGVuZCBvZiAxOTg2IGFuZCA2MzYuMSBtbG4sIG9yIDIuNDYgcGN0IG9mIGFzc2V0cyBhdCBNYXJjaCAzMSwgMTk4Ni4gICAgIFRoZSBwcm92aXNpb24gZm9yIGxvYW4gbG9zc2VzIGluIHRoZSBxdWFydGVyIHdhcyAzNSBtbG4gZGxycywgY29tcGFyZWQgdG8gMTUyLjEgbWxuIGluIHRoZSBmaXJzdCBxdWFydGVyIDE5ODYsIHdoZW4gdGhlcmUgd2FzIGEgc3BlY2lhbCBhZGRpdGlvbiB0byB0aGUgcmVzZXJ2ZSBvZiAxMDAgbWxuIGRscnMuIE5ldCBjaGFyZ2Ugb2ZmcyB3ZXJlIDM0LjcgbWxuLCBjb21wYXJlZCB0byA0MS4xIG1sbiBkbHJzIGEgeWVhciBlYXJsaWVyLiBSRVVURVJeTSAzOwoxOTg3MDQwOQlGSVJTVCBCQU5LIFNZU1RFTSBJTkMgPEZCUz4gMVNUIFFUUiBORVQgU2hyIDk1IGN0cyB2cyA4MCBjdHMgICAgIE5ldCA1Ny40IG1sbiB2cyA0Ni42IG1sbiAgICAgQXNzZXRzIDI4LjM5IGJpbGxpb24gdnMgMjUuODcgYmlsbGlvbiAgICAgTG9hbnMgMTMuOTkgYmlsbGlvbiB2cyAxNC4zNSBiaWxsaW9uICBSZXV0ZXIgMzsKMTk4NzA0MDkJRklUQ0hCVVJHIEdBUyA8RkdFPiBQTEFOUyBUTyBJU1NVRSBOT1RFUyBGaXRjaGJ1cmcgR2FzIGFuZCBFbGVjdHJpYyBMaWdodCBDbyBzYWlkIGl0cyBCb2FyZCBvZiBEaXJlY3RvcnMgYXV0aG9yaXplZCBhIGZpbGluZyB3aXRoIHRoZSBNYXNzYWNodXNldHRzIERlcGFydG1lbnQgb2YgUHVibGljIFV0aWxpdGllcyBzZWVraW5nIGF1dGhvcml0eSB0byBpc3N1ZSB1cCB0byAyNyBtbG4gZGxycyBvZiBsb25nLXRlcm0gbm90ZXMuICAgICBQcm9jZWVkcyB3aWxsIGJlIHVzZWQgdG8gcmVkZWVtLCBhZnRlciBKdW5lIG9uZSwgYWxsIG91dHN0YW5kaW5nIHNoYXJlcyBvZiB0aGUgY29tcGFueSdzIGN1bXVsYXRpdmUgcHJlZmVycmVkIHN0b2NrLCBmb3VyIGRsciBzZXJpZXMsIHJlZGVlbSBjZXJ0YWluIG91dHN0YW5kaW5nIGxvbmctdGVybSBpbmRlYnRlZG5lc3MgYW5kIHJlcGF5IG91dHN0YW5kaW5nIHNob3J0LXRlcm0gaW5kZWJ0ZWRuZXNzLiAgICAgRml0Y2hidXJnIHNhaWQgdGhpcyB3b3VsZCBsb3dlciBpdHMgY29zdCBvZiBjYXBpdGFsIGluIHRoZSBmdXR1cmUgYW5kIGdpdmUgdGhlIHV0aWxpdHkgYW4gb3Bwb3J0dW5pdHkgdG8gcmVkdWNlIGV4aXN0aW5nIGxpbmVzIG9mIGNyZWRpdC4gICAgICBSZXV0ZXIgMzsKMTk4NzA0MDkJRkxVT1JPQ0FSQk9OIDxGQ0JOPiBCVVlTIEVBVE9OIDxFVE4+IERJVklTSU9OIEZsdW9yb2NhcmJvbiBDbyBzYWlkIGl0IHNpZ25lZCBhIGRlZmluaXRpdmUgYWdyZWVtZW50IHRvIGFjcXVpcmUgRWF0b24gQ29ycCdzIEluZHVzdHJpYWwgUG9seW1lciBkaXZpc2lvbiBmb3IgYW4gdW5kaXNjbG9zZWQgcHJpY2UuICAgICBUaGUgcG9seW1lciBkaXZpc2lvbiwgYmFzZWQgaW4gQXVyb3JhLCBPaGlvLCBoYWQgMTk4NiBzYWxlcyBvZiA4NiBtbG4gZGxycywgRmx1b3JvY2FyYm9uIGFsc28gc2FpZC4gIFJldXRlciAzOwoxOTg3MDQwOQlGT09USElMTCA8RkdJPiwgU0lFUlJJVEEgSU4gU1RBTkRTVElMTCBBQ0NPUkQgRm9vdGhpbGwgR3JvdXAgSW5jIHNhaWQgaXQgcmVhY2hlZCBhIHN0YW5kc3RpbGwgYWdyZWVtZW50IHdpdGggU2FudGEgQ3J1eiBSZXNvdXJjZXMgSW5jIGFuZCBpdHMgcGFyZW50LCBTaWVycml0YSBSZXNvdXJjZXMgSW5jLCB0aGF0IGJhcnMgdGhlIGNvbXBhbmllcyBmcm9tIGFjcXVpcmluZyBtb3JlIHRoYW4gYSAzMCBwY3QgaW50ZXJlc3QgaW4gRm9vdGhpbGwsIGV4Y2VwdCB0aHJvdWdoIGEgYnVzaW5lc3MgY29tYmluYXRpb24gYXBwcm92ZWQgYnkgRm9vdGhpbGwncyBib2FyZC4gICAgIFRoZSBjb21wYW55IGFsc28gc2FpZCBTYW50YSBDcnV6IGhhcyBhZHZpc2VkIGl0IHRoYXQgaXQgb3ducyAyNC43IHBjdCBvZiBGb290aGlsbCdzIG91dHN0YW5kaW5nIGNvbW1vbiBzdG9jay4gICAgIEluIGFkZGl0aW9uLCBTYW50YSBDcnV6IGFuZCBTaWVycml0YSBoYXZlIGFncmVlZCB0byB2b3RlIHRoZWlyIHNoYXJlcyBpbiBhY2NvcmRhbmNlIHdpdGggaW5zdHJ1Y3Rpb25zIGZyb20gdGhlIEZvb3RoaWxsIGJvYXJkIGluIGNvbm5lY3Rpb24gd2l0aCBjZXJ0YWluIGJ1c2luZXNzIGNvbWJpbmF0aW9ucyBhbmQgY2VydGFpbiBhbnRpLXRha2VvdmVyIG1hdHRlcnMsIEZvb3RoaWxsIHNhaWQuICAgICBGb290aGlsbCBzYWlkIHRoZSBhcnJhbmdlbWVudCBhbHNvIGJhcnMgU2FudGEgQ3J1eiBhbmQgU2llcnJpdGEgZnJvbiB0ZW5kZXJpbmcgYW55IEZvb3RoaWxsIHNlY3VyaXRpZXMgb3duZWQgYnkgdGhlbSBpbnRvIGFueSB0ZW5kZXIgb2ZmZXIgdW5sZXNzIGNlcnRhaW4gdW5zcGVjaWZpZWQgY29uZGl0aW9ucyBhcmUgbWV0LiAgUmV1dGVyIDM7CjE5ODcwNDA5CUZSQU5DRSdTIEJBTExBRFVSIFNBWVMgVEFSR0VUIFpPTkUgTk9USU9OIE5FQVJFUiBGcmVuY2ggRmluYW5jZSBNaW5pc3RlciBFZG91YXJkIEJhbGxhZHVyIHNhaWQgdGhhdCB0aGUgZmluYW5jaWFsIGNvbW11bml0eSBpcyBjbG9zZXIgdG8gYXJyaXZpbmcgYXQgYSBzeXN0ZW0gb2YgdGFyZ2V0IHpvbmVzIGZvciBjdXJyZW5jaWVzIGRlc3BpdGUgdGhlIGZhY3QgdGhhdCBsaXR0bGUgaXMgYmVpbmcgc2FpZCBhYm91dCB0aGVtLiAgICAgU3BlYWtpbmcgd2l0aCByZXBvcnRlcnMgYXQgdGhlIHNlbWlhbm51YWwgbWVldGluZ3Mgb2YgdGhlIEludGVybmF0aW9uYWwgTW9uZXRhcnkgRnVuZCwgQmFsbGFkdXIgc2FpZCwgIldlIGFyZSBub3QgdmVyeSBmYXIgZnJvbSB0aGUgbm90aW9uIG9mIHRhcmdldCB6b25lcywgZXZlbiBpZiB3ZSBkb24ndCBzYXkgc28uIiAgICAgSGUgdG9sZCByZXBvcnRlcnMgdGhhdCAib3VyIGlkZWFzIGFyZSBwcm9ncmVzc2luZywiIGFkZGluZyB0aGF0IHRoZSBmaW5hbmNlIG1pbmlzdGVycyBoYXZlIGJlZW4gdGFsa2luZyBhYm91dCBtb3JlIGNvb3BlcmF0aW9uIG9uIGVjb25vbWljIHBvbGljaWVzIGFuZCBvbiBsZXZlbHMgYXJvdW5kIHdoaWNoIGN1cnJlbmNpZXMgc2hvdWxkIHN0YWJpbGl6ZS4gIFJldXRlciAzOwoxOTg3MDQwOQlGUkVOQ0ggRlJFRSBNQVJLRVQgQ0VSRUFMIEVYUE9SVCBCSURTIERFVEFJTEVEIEZyZW5jaCBvcGVyYXRvcnMgaGF2ZSByZXF1ZXN0ZWQgbGljZW5jZXMgdG8gZXhwb3J0IDMyMCwwMDAgdG9ubmVzIG9mIGZyZWUgbWFya2V0IGJhcmxleSwgMjI1LDAwMCB0b25uZXMgb2YgbWFpemUsIDI1LDAwMCB0b25uZXMgb2YgZnJlZSBtYXJrZXQgYnJlYWQtbWFraW5nIHdoZWF0IGFuZCAyMCwwMDAgdG9ubmVzIG9mIGZlZWQgd2hlYXQgYXQgdG9kYXkncyBFQyB0ZW5kZXIsIHRyYWRlIHNvdXJjZXMgc2FpZC4gICAgIEZvciB0aGUgYmFybGV5LCByZWJhdGVzIG9mIGJldHdlZW4gMTM4IGFuZCAxNDEuMjUgRXVyb3BlYW4gY3VycmVuY3kgdW5pdHMgKEVjdXMpIHBlciB0b25uZSB3ZXJlIHNvdWdodCwgZm9yIG1haXplIHRoZXkgd2VyZSBiZXR3ZWVuIDEyOS42NSBhbmQgMTM5IEVjdXMsIGZvciBicmVhZC1tYWtpbmcgd2hlYXQgYXJvdW5kIDE0NSBFY3VzIGFuZCBmb3IgZmVlZCB3aGVhdCBhcm91bmQgMTQyLjQ1IEVjdXMuICAgICBCYXJsZXkgcmViYXRlcyBvZiB1cCB0byAxMzguNTAgRWN1cyB3ZXJlIHJlcXVlc3RlZCBmb3IgYSB0b3RhbCBvZiA0MCwwMDAgdG9ubmVzIGFuZCBhdCAxMzkgRWN1cyBmb3IgODUsMDAwIHRvbm5lcy4gICAgIFJlYmF0ZXMgb2YgdXAgdG8gMTMwIEVjdXMgcGVyIHRvbm5lIHdlcmUgcmVxdWVzdGVkIGZvciBhIHRvdGFsIG9mIDU1LDAwMCB0b25uZXMgbWFpemUgYW5kIHVwIHRvIDEzMSBFY3VzIGZvciAxMDUsMDAwIHRvbm5lcywgdGhlIHNvdXJjZXMgc2FpZC4gIFJldXRlciAzOwoxOTg3MDQwOQlGUk9TVCBBTkQgU1VMTElWQU4gSU5DIDxGUlNMPiBJTkNSRUFTRVMgUEFZT1VUIFNlbWktYW5udWFsIGRpdiBzZXZlbiBjdHMgdnMgc2l4IGN0cyBwcmlvciAgICAgUGF5IEp1bmUgT25lICAgICBSZWNvcmQgTWF5IE9uZSAuICBSZXV0ZXIgMzsKMTk4NzA0MDkJRlVOREFNRU5UQUwgQlJPS0VSUyBCVVlTIFBBUlQgT0YgTUtJIEJST0tFUlMgRnVuZGFtZW50YWwgQnJva2VycyBJbnN0aXR1dGlvbmFsIEFzc29jaWF0ZXMsIGEgbGVhZGluZyBpbnRlci1kZWFsZXIgYnJva2VyIGluIFUuUy4gZ292ZXJubWVudCBzZWN1cml0aWVzLCBzYWlkIGl0IGhhcyBhZ3JlZWQgdG8gYWNxdWlyZSBjZXJ0YWluIGFzc2V0cyBvZiBNS0kgR292ZXJubWVudCBCcm9rZXJzIEluYyBmb3IgdW5kaXNjbG9zZWQgdGVybXMuICAgICBBY3F1aXNpdGlvbiBkb2N1bWVudHMgaGF2ZSBiZWVuIHNpZ25lZCBhbmQgYXJlIGJlaW5nIGhlbGQgaW4gZXNjcm93IHBlbmRpbmcgdGhlIHJlY2VpcHQgb2YgY2VydGFpbiBjb25zZW50cywgaXQgc2FpZC4gICAgIEluIGNvbmp1bmN0aW9uIHdpdGggdGhlIHNhbGUgb2YgYXNzZXRzLCBNS0kgaGFzIGNlYXNlZCBicm9rZXJpbmcgdHJlYXN1cnkgYmlsbHMsIG5vdGVzIGFuZCBib25kcywgRnVuZGFtZW50YWwgc2FpZC4gICAgIEluZHVzdHJ5IHNvdXJjZXMgdG9sZCBSZXV0ZXJzIHllc3RlcmRheSB0aGF0IEZ1bmRhbWVudGFsIHdhcyBjbG9zZSB0byBhY3F1aXJpbmcgdGhlIGdvdmVybm1lbnQgc2VjdXJpdGllcyBicm9rZXJhZ2UgZGl2aXNpb24gb2YgTUtJLCBhIG1ham9yIGJyb2tlciBvZiBjb3Jwb3JhdGUgYm9uZHMuICAgICBGdW5kYW1lbnRhbCBzYWlkIGl0IGludGVuZHMgdG8gdXNlIHRoZSBmYWNpbGl0aWVzIGZvcm1lcmx5IHVzZWQgYnkgTUtJIHRvIHByb3ZpZGUgYSBuZXcgYmxvY2sgYnJva2VyaW5nIHNlcnZpY2UgaW4gdGhlIG1vc3QgYWN0aXZlIFRyZWFzdXJ5IGlzc3Vlcy4gICAgIEJ5IHNlcGFyYXRpbmcgdGhlIGV4ZWN1dGlvbiBvZiB3aG9sZXNhbGUgdHJhZGVzIGZyb20gdGhlIGhlYXZ5IHZvbHVtZSBvZiBzbWFsbGVyIGxvdHMsIGxhcmdlLXNjYWxlIHRyYW5zYWN0aW9ucyB3aWxsIGJlIGZhY2lsaXRhdGVkLCB0aGUgY29tcGFueSBzYWlkLiAgICAgIlRoZSBuZXcgc3lzdGVtIGlzIGV4cGVjdGVkIHRvIHN1YnN0YW50aWFsbHkgZW5oYW5jZSB0aGUgbGlxdWlkaXR5IGFuZCBlZmZpZW5jeSBvZiBtYXJrZXRzLCIgRnVuZGFtZW50YWwgc2FpZC4gICAgIFRoZSB3aG9sZXNhbGUgYnJva2VyaW5nIHNlcnZpY2Ugd2lsbCBiZWdpbiBvbiBvciBhcm91bmQgQXByaWwgMjAuICBSZXV0ZXIgMzsKMTk4NzA0MDkJRy03IElTU1VFUyBTVEFURU1FTlQgQUZURVIgTUVFVElORyBGb2xsb3dpbmcgaXMgdGhlIHRleHQgb2YgYSBzdGF0ZW1lbnQgYnkgdGhlIEdyb3VwIG9mIFNldmVuIC0tIHRoZSBVLlMuLCBKYXBhbiwgV2VzdCBHZXJtYW55LCBGcmFuY2UsIEJyaXRhaW4sIEl0YWx5IGFuZCBDYW5hZGEgLS0gaXNzdWVkIGFmdGVyIGEgV2FzaGluZ3RvbiBtZWV0aW5nIHllc3RlcmRheS4gICAgIDEuIFRoZSBmaW5hbmNlIG1pbmlzdGVycyBhbmQgY2VudHJhbCBiYW5rIGdvdmVybm9ycyBvZiBzZXZlbiBtYWpvciBpbmR1c3RyaWFsIGNvdW50cmllcyBtZXQgdG9kYXkuICAgICBUaGV5IGNvbnRpbnVlZCB0aGUgcHJvY2VzcyBvZiBtdWx0aWxhdGVyYWwgc3VydmVpbGxhbmNlIG9mIHRoZWlyIGVjb25vbWllcyBwdXJzdWFudCB0byB0aGUgYXJyYW5nZW1lbnRzIGZvciBzdHJlbmd0aGVuZWQgZWNvbm9taWMgcG9saWN5IGNvb3JkaW5hdGlvbiBhZ3JlZWQgYXQgdGhlIDE5ODYgVG9reW8gc3VtbWl0IG9mIHRoZWlyIGhlYWRzIG9mIHN0YXRlIG9yIGdvdmVybm1lbnQuICAgICBUaGUgbWFuYWdpbmcgZGlyZWN0b3Igb2YgdGhlIEludGVybmF0aW9uYWwgTW9uZXRhcnkgRnVuZCBhbHNvIHBhcnRpY2lwYXRlZCBpbiB0aGUgbWVldGluZy4gICAgIDIuIFRoZSBtaW5pc3RlcnMgYW5kIGdvdmVybm9ycyByZWFmZmlybWVkIHRoZSBjb21taXRtZW50IHRvIHRoZSBjb29wZXJhdGl2ZSBhcHByb2FjaCBhZ3JlZWQgYXQgdGhlIHJlY2VudCBQYXJpcyBtZWV0aW5nLCBhbmQgbm90ZWQgdGhlIHByb2dyZXNzIGFjaGlldmVkIGluIGltcGxlbWVudGluZyB0aGUgdW5kZXJ0YWtpbmdzIGVtYm9kaWVkIGluIHRoZSBMb3V2cmUgQWdyZWVtZW50LiAgICAgVGhleSBhZ3JlZWQsIGhvd2V2ZXIsIHRoYXQgZnVydGhlciBhY3Rpb25zIHdpbGwgYmUgZXNzZW50aWFsIHRvIHJlc2lzdCByaXNpbmcgcHJvdGVjdGlvbmlzdCBwcmVzc3VyZXMsIHN1c3RhaW4gZ2xvYmFsIGVjb25vbWljIGV4cGFuc2lvbiwgYW5kIHJlZHVjZSB0cmFkZSBpbWJhbGFuY2VzLiAgICAgSW4gdGhpcyBjb25uZWN0aW9uIHRoZXkgd2VsY29tZWQgdGhlIHByb3Bvc2FscyBqdXN0IGFubm91bmNlZCBieSB0aGUgZ292ZXJuaW5nIExpYmVyYWwgRGVtb2NyYXRpYyBQYXJ0eSBpbiBKYXBhbiBmb3IgZXh0cmFvcmRpbmFyeSBhbmQgdXJnZW50IG1lYXN1cmVzIHRvIHN0aW11bGF0ZSBKYXBhbidzIGVjb25vbXkgdGhyb3VnaCBlYXJseSBpbXBsZW1lbnRhdGlvbiBvZiBhIGxhcmdlIHN1cHBsZW1lbnRhcnkgYnVkZ2V0IGV4Y2VlZGluZyB0aG9zZSBvZiBwcmV2aW91cyB5ZWFycywgYXMgd2VsbCBhcyB1bnByZWNlZGVudGVkIGZyb250LWVuZCBsb2FkaW5nIG9mIHB1YmxpYyB3b3JrcyBleHBlbmRpdHVyZXMuICAgICBUaGUgZ292ZXJubWVudCBvZiBKYXBhbiByZWFmZmlybWVkIGl0cyBpbnRlbnRpb24gdG8gZnVydGhlciBvcGVuIHVwIGl0cyBkb21lc3RpYyBtYXJrZXRzIHRvIGZvcmVpZ24gZ29vZHMgYW5kIHNlcnZpY2VzLiAgICAgMy4gVGhlIG1pbmlzdGVycyBhbmQgZ292ZXJub3JzIHJlYWZmaXJtZWQgdGhlIHZpZXcgdGhhdCBhcm91bmQgY3VycmVudCBsZXZlbHMgdGhlaXIgY3VycmVuY2llcyBhcmUgd2l0aGluIHJhbmdlcyBicm9hZGx5IGNvbnNpc3RlbnQgd2l0aCBlY29ub21pYyBmdW5kYW1lbnRhbHMgYW5kIHRoZSBiYXNpYyBwb2xpY3kgaW50ZW50aW9ucyBvdXRsaW5lZCBhdCB0aGUgTG91dnJlIG1lZXRpbmcuICAgICBJbiB0aGF0IGNvbm5lY3Rpb24gdGhleSB3ZWxjb21lZCB0aGUgc3Ryb25nIGltcGxlbWVudGF0aW9uIG9mIHRoZSBMb3V2cmUgQWdyZWVtZW50LiAgICAgVGhleSBjb25jbHVkZWQgdGhhdCBwcmVzZW50IGFuZCBwcm9zcGVjdGl2ZSBwcm9ncmVzcyBpbiBpbXBsZW1lbnRpbmcgdGhlIHBvbGljeSB1bmRlcnRha2luZ3MgYXQgdGhlIExvdXZyZSBhbmQgaW4gdGhpcyBzdGF0ZW1lbnQgcHJvdmlkZWQgYSBiYXNpcyBmb3IgY29udGludWluZyBjbG9zZSBjb29wZXJhdGlvbiB0byBmb3N0ZXIgdGhlIHN0YWJpbGl0eSBvZiBleGNoYW5nZSByYXRlcy4gIFJFVVRFUiAzOwoxOTg3MDQwOQlHLTcgV0FOVFMgVE8gU0hPVyBNQVJLRVRTIElUUyBSRVNPTFZFIC0gTUlZQVpBV0EgSmFwYW5lc2UgRmluYW5jZSBNaW5pc3RlciBLaWljaGkgTWl5YXphd2Egc2FpZCB0aGUgR3JvdXAgb2YgU2V2ZW4gKEctNykgY291bnRyaWVzIHJlYWZmaXJtZWQgdGhlaXIgUGFyaXMgYWNjb3JkIG9uIHN0YWJpbGlzaW5nIGN1cnJlbmNpZXMgdG8gY29udmluY2UgdGhlIG1hcmtldCBvZiB0aGVpciByZXNvbHZlLiAgICAgQXQgYSBuZXdzIGNvbmZlcmVuY2UgYWZ0ZXIgdG9kYXkncyBHLTcgbWVldGluZywgTWl5YXphd2Egc2FpZCB0aGUgbWluaXN0ZXJzIGFuZCBjZW50cmFsIGJhbmsgZ292ZXJub3JzIGRpZCBub3QgYmVsaWV2ZSBhIHRvdGFsbHkgbmV3IHN0YXRlbWVudCB3YXMgbmVlZGVkLiAgICAgVGhlIHNwZWN1bGF0aXZlIHNlbGxpbmcgZGlkIG5vdCByZWZsZWN0IGVjb25vbWljIGZ1bmRhbWVudGFscywgYW5kIHNpbmNlIHRoZSBmdW5kYW1lbnRhbHMgaGFkIG5vdCBjaGFuZ2VkIG9ubHkgYSByZWFmZmlybWF0aW9uIG9mIHRoZSBnb2FscyBvZiB0aGUgUGFyaXMgYWNjb3JkIHdhcyBuZWVkZWQsIGhlIHNhaWQuICAgICBIZSBhbHNvIG5vdGVkIHRoYXQgdGhpcyB0ZXN0IG9mIHRoZSBHLTcgbmF0aW9ucyByZXNvbHZlIGhhZCBjb25jZW50cmF0ZWQgb24gdGhlIHllbiwgd2hpbGUgb3RoZXIgY3VycmVuY2llcywgZXNwZWNpYWxseSB0aGUgbWFyaywgaGFkIHJlbWFpbmVkIHN0YWJsZS4gICAgIE1peWF6YXdhIHNhaWQgYW55IGNoYW5nZSBpbiBlY29ub21pYyBjb25kaXRpb25zIHNpbmNlIHRoZSBQYXJpcyBhY2NvcmQgd2FzIG5vdCB3b3J0aCBiZWluZyBjYWxsZWQgZnVuZGFtZW50YWwuICAgICAiQXMgSSBzYWlkIGF0IGEgdGltZSBvZiBMb3V2cmUgKGFncmVlbWVudCksIHRoZSBleHByZXNzaW9uIG9mICdjdXJyZW50IGxldmVsJyBpcyByYXRoZXIgdmFndWUgaWRlYSwiIGhlIHNhaWQuICAgICBUaGUgeWVuJ3MgbW92ZW1lbnQgaW4gdGhlIHBhc3Qgc2V2ZXJhbCB3ZWVrcyBpcyB3aXRoaW4gdGhlIHJhbmdlIGFncmVlZCBpbiBQYXJpcyBpbiBGZWJyYXVyeSwgaGUgc2FpZC4gICAgIEl0IHdhcyBiZXR0ZXIgdG8gZ2l2ZSBhIHZhZ3VlIGV4cHJlc3Npb24gdGhhbiBwaW4tcG9pbnRpbmcgYSBsZXZlbCwgd2hpY2ggY291bGQgaGF2ZSBhbiBhZHZlcnNlIGltcGFjdCBvbiB0aGUgbWFya2V0LCBNaXlhemF3YSBzYWlkLiAgICAgQXNrZWQgd2h5IG9ubHkgSmFwYW4gd2FzIGNvbW1pdHRlZCB0byBmcmVzaCBtZWFzdXJlcyBpbiB0aGUgc3RhdGVtZW50LCBoZSBzYWlkIEphcGFuIHdhcyBleGNlcHRpb25hbCBhbW9uZyB0aGUgc2V2ZW4gYmVjYXVzZSB0aGUgeWVuIGFwcHJlY2lhdGVkIGFnYWluc3QgdGhlIGRvbGxhciB3aGlsZSBvdGhlciBtYWpvciBjdXJyZW5jaWVzIGxhcmdlbHkgaGF2ZSBiZWVuIHN0YWJsZS4gICAgIEhlIGFsc28gc2FpZCBKYXBhbidzIHJ1bGluZyBMaWJlcmFsIERlbW9jcmF0aWMgUGFydHkgaGFzIGp1c3RlZCBhZG9wZWQgYSBwYWNrYWdlIHRvIHJlZmxhdGUgdGhlIGVjb25vbXkgd2hpbGUgb3RoZXIgbmF0aW9ucyBhcmUgbm90IHN1cHBvc2VkIHRvIHByb2R1Y2UgbmV3IG1lYXN1cmVzIGluIGEgc2hvcnQgcGVyaW9kIHNpbmNlIHRoZSBQYXJpcyBhZ3JlZW1lbnQuICAgICBNaXlhemF3YSBhbHNvIHNhaWQgdGhlIFUuUy4gc2FuY3Rpb25zIGFnYWluc3QgSmFwYW5lc2Ugc2VtaWNvbmR1Y3RvciBwcm9kdWN0cyB3YXMgbm90IGRpc2N1c3NlZCB0aHJvdWdoIHRoZSBHLTcgbWVldGluZyBhbmQgZGlkIG5vdCBhZmZlY3QgdGhlIGN1cnJlbmN5IHRhbGtzLiAgICAgVGhlIHNldmVuIG5hdGlvbnMgZGlzY3Vzc2VkIHRoZSBkZWJ0IHByb2JsZW1zIG9mIGRldmVsb3BpbmcgY291bnRyaWVzIGFuZCB3YXlzIHRvIHByb2NlZWQgaW4gbGluZSB3aXRoIHRoZSBkZWJ0IGluaXRpYXRpdmUgb3V0bGluZWQgYnkgVS5TLiBUcmVhc3VyeSBTZWNyZXRhcnkgSmFtZXMgQmFrZXIgMTggbW9udGhzIGFnby4gIFJFVVRFUiAzOwoxOTg3MDQwOQlHQUxBWFkgT0lMIDxHT1g+IEJFSU5HIERFTElTVEVEIEJZIEFNRVggR2FsYXh5IE9pbCBDbyBzYWlkIGl0cyBjb21tb24gc3RvY2sgYW5kIG5pbmUgcGN0IGNvbnZlcnRpYmxlIHN1Ym9yZGluYXRlZCBkZWJlbnR1cmVzIGR1ZSAxOTk0IGFyZSBiZWluZyBkZWxpc3RlZCBmcm9tIHRoZSA8QW1lcmljYW4gU3RvY2sgRXhjaGFuZ2U+IGJlY2F1c2UgdGhlIGNvbXBhbnkgbm8gbG9uZ2VyIG1lZXRzIGxpc3RpbmcgY3JpdGVyaWEuICAgICBHYWxheHkgZmlsZWQgQ2hhcHRlciAxMSBiYW5rcnVwdGN5IG9uIEFwcmlsIFNpeC4gICAgIFRoZSBjb21wYW55IHNhaWQgdHJhZGluZyBpbiBib3RoIGlzc3VlcyB3aWxsIGJlIHN1c3BlbmRlZCBieSB0aGUgQW1leCBhdCB0aGUgY2xvc2Ugb24gTWF5IE9uZSBidXQgaXMgZXhwZWN0ZWQgdG8gc3RhcnQgZWxzZXdoZXJlIG9uIE1heSBGb3VyLiAgUmV1dGVyIDM7CjE5ODcwNDA5CUdBVEVXQVkgQ09NTVVOSUNBVElPTlMgSU5DIDxHV0FZPiAxU1QgUVRSIE5FVCBTaHIgMTQgY3RzIHZzIHNpeCBjdHMgICAgIE5ldCA2NTMsNTYxIHZzIDI1MSw5NTUgICAgIFJldnMgNCwxNDMsMDU2IHZzIDIsMTk5LDIzOCAgUmV1dGVyIDM7CjE5ODcwNDA5CUdFTUlOQSBIQVMgTk8gQ09NTUVOVCBPTiBBTUJST1NJQU5PIFJFUE9SVCBIb2xkaW5nIGNvbXBhbnkgPEdlbWluYSBTcGE+IHNhaWQgaXQgaGFkIG5vIGNvbW1lbnQgb24gYW4gSXRhbGlhbiBwcmVzcyByZXBvcnQgdG9kYXkgdGhhdCBpdCBoYXMgYWNxdWlyZWQgYSAxMiBwY3Qgc3Rha2UgaW4gPE51b3ZvIEJhbmNvIEFtYnJvc2lhbm8gU3BhPi4gICAgIEl0YWxpYW4gZGFpbHkgTGEgUmVwdWJibGljYSBzYWlkIHRoYXQgR2VtaW5hIHBhaWQgMjA1IGJpbGxpb24gbGlyZSBmb3IgdGhlIHNoYXJlaG9sZGluZyBmcm9tIHNldmVyYWwgSXRhbGlhbiBiYW5rcy4gQSBHZW1pbmEgc3Bva2Vzd29tYW4gdG9sZCBSZXV0ZXJzLCAiV2UgaGF2ZSBub3RoaW5nIHRvIHNheSBhYm91dCB0aGUgcmVwb3J0LiIgICAgIEEgc3Bva2Vzd29tYW4gZm9yIE1pbGFuLWJhc2VkIEFtYnJvc2lhbm8gc2FpZCwgIldlIGhhdmUgbm8gaW5mb3JtYXRpb24gYXQgdGhpcyB0aW1lLiIgSW4gRmVicnVhcnksIEFtYnJvc2lhbm8gY2hhaXJtYW4gR2lvdmFubmkgQmF6b2xpIHNhaWQgZm9yZWlnbiBhbmQgZG9tZXN0aWMgZmlybXMgaGF2ZSBleHByZXNzZWQgaW50ZXJlc3QgaW4gYnV5aW5nIHN0YWtlcyBpbiB0aGUgYmFuay4gICAgIFJFVVRFUiAzOwoxOTg3MDQwOQlHRU5FUkFMIFBBUlRORVJTIENVVFMgU1RBS0UgSU4gR0VOQ09SUCA8R1k+IEdlbmVyYWwgUGFydG5lcnMgdG9sZCB0aGUgU2VjdXJpdGllcyBhbmQgRXhjaGFuZ2UgQ29tbWlzc2lvbiBpdCBoYXMgcmVkdWNlZCBpdHMgc3Rha2UgaW4gR2VuQ29ycCBJbmMgdG8gOC42IHBjdCwgZnJvbSA5LjggcGN0LCBieSBzZWxsaW5nIDI1MCwwMDAgc2hhcmVzIGF0IGEgcHJpY2UgZXF1YWwgdG8gMTE4LjUgZGxycyBwZXIgc2hhcmUuICAgICBHZW5lcmFsIFBhcnRuZXJzLCB3aGljaCBpbmNsdWRlcyBHQyBIb2xkaW5ncyBJbmMgYW5kIEdlbmVyYWwgQWNxdWlzaXRpb25zIEluYywgc2FpZCB5ZXN0ZXJkYXkgaXQgd2FzIGRyb3BwaW5nIGl0cyAxMDAtZGxyLWEtc2hhcmUgaG9zdGlsZSB0YWtlb3ZlciBiaWQgZm9yIEdlbkNvcnAgYmVjYXVzZSBvZiBHZW5Db3JwJ3MgbW92ZSB0byBidXkgYmFjayBpdHMgc2hhcmVzIGZvciB1cCB0byAxMzAgZGxycyBlYWNoLiAgUmV1dGVyIDM7CjE5ODcwNDA5CUdFT1JHRSBXSU1QRVkgU0FZUyBCRU5FRklUUyBPRiBSRVNUUlVDVFVSSU5HIFNFRU4gR2VvcmdlIFdpbXBleSBQbGMgPFdNUFkuTD4gc2FpZCAgdGhlIG91dGxvb2sgZm9yIDE5ODcgbG9va2VkIGVuY291cmFnaW5nIGFzIHRoZSBjb21wYW55IHJlYWxpc2VkIHRoZSBjb250aW51aW5nIGJlbmVmaXRzIG9mIHJlc3RydWN0dXJpbmcuICAgICBJdCBzYWlkIGl0cyBvdmVyYWxsIGZpbmFuY2lhbCBwb3NpdGlvbiBzaG93ZWQgZnVydGhlciBpbXByb3ZlbWVudCBpbiAxOTg2IGFuZCB0aGUgcmVzaGFwaW5nIG9mIGl0cyBVLksuIEJ1c2luZXNzIGludG8gY2xlYXJseSBkZWZpbmVkIGFuZCBhY3Rpdml0eSByZWxhdGVkIGRpdmlzaW9ucyBoYWQgYmVlbiBzdWNjZXNzZnVsbHkgYWNoaWV2ZWQuICAgICBXaW1wZXkgd2FzIGNvbW1lbnRpbmcgaW4gYSBzdGF0ZW1lbnQgb24gaXRzIDE5ODYgcmVzdWx0cyB3aGljaCBzaG93ZWQgcHJldGF4IHByb2ZpdHMgdXAgNDIgcGN0IHRvIDY2LjUgbWxuIHN0Zy4gICAgIFRoZSBncm91cCBoYWQgYSBnb29kIG92ZXJhbGwgeWVhciBpbiBOb3J0aCBBbWVyaWNhLCB0aGUgY29tcGFueSBzYWlkIGluIGEgc3RhdGVtZW50LiAgUmV1dGVyIDM7CjE5ODcwNDA5CUdFUk1BTiBCQU5LRVJTJyBSRU1BUktTIFJFVklWRSBUQUxLIE9GIFJBVEUgQ1VUIFJlbWFya3MgYnkgdHdvIGxlYWRpbmcgY2VudHJhbCBiYW5rZXJzIHNwYXJrZWQgcmVuZXdlZCBzcGVjdWxhdGlvbiBpbiBmaW5hbmNpYWwgbWFya2V0cyB0aGF0IGEgY3V0IGluIHRoZSBXZXN0IEdlcm1hbiB0aHJlZSBwY3QgZGlzY291bnQgcmF0ZSBtYXkgYmUgdW5kZXIgZGlzY3Vzc2lvbiwgY3VycmVuY3kgZGVhbGVycyBzYWlkLiAgICAgQnVuZGVzYmFuayBib2FyZCBtZW1iZXIgQ2xhdXMgS29laGxlciBzYWlkIGluIGEgc3BlZWNoIHRoYXQgbW9uZXRhcnkgZ3Jvd3RoIHJlc3VsdGluZyBmcm9tIHNwZWN1bGF0aXZlIGNhcGl0YWwgaW5mbG93cyByZXF1aXJlZCBjdXRzIGluIGludGVyZXN0IHJhdGVzLiAgICAgU2VwYXJhdGVseSwgV2VzdCBCZXJsaW4gc3RhdGUgY2VudHJhbCBiYW5rIHByZXNpZGVudCBEaWV0ZXIgSGlzcyB0b2xkIGpvdXJuYWxpc3RzIHRoYXQgdGhlIGRpc2NvdW50IHJhdGUgY291bGQgZmFsbCBiZWxvdyBpdHMgbG93ZXN0IGV2ZXIgcG9pbnQgb2YgMi43NSBwY3QuIEhlIG1hZGUgY2xlYXIgdGhhdCBoZSB3YXMgbm90IG1ha2luZyBhIGZvcmVjYXN0IG9uIGludGVyZXN0IHJhdGVzLCBob3dldmVyLiAgICAgQ3VycmVuY3kgZGVhbGVycyBoZXJlIGFuZCBpbiB0aGUgRmFyIEVhc3Qgc2FpZCB0aGUgZG9sbGFyIGdhaW5lZCBzbGlnaHQgYmFja2dyb3VuZCBzdXBwb3J0IGZyb20gdGhlIHNwZWN1bGF0aW9uLiAgICAgQnV0IEdlcm1hbiBkZWFsZXJzIG5vdGVkIHRoYXQgdGhlIEJ1bmRlc2Jhbmsga2VwdCB0aGUgMy44MCBwY3QgcmF0ZSB1bmNoYW5nZWQgYXQgd2hpY2ggaXQgb2ZmZXJlZCBsaXF1aWRpdHkgdG8gdGhlIG1vbmV5IG1hcmtldCB0aGlzIHdlZWssIGRhc2hpbmcgc29tZSBleHBlY3RhdGlvbnMgdGhhdCBpdCBtYXkgZWl0aGVyIG9mZmVyIGxvd2VyIGZpeGVkIHJhdGUgbW9uZXkgb3Igb2ZmZXIgYSByZWR1Y2VkIG1pbmltdW0gcmF0ZSBhbmQgbGV0IHRoZSBzdHJlbmd0aCBvZiBiYW5rcycgZGVtYW5kcyBzZXQgdGhlIGFsbG9jYXRpb24gcmF0ZS4gICAgIEl0IGFsbG9jYXRlZCA2LjEgYmlsbGlvbiBtYXJrcyBpbiBuZXcgbGlxdWlkaXR5LCBtdWNoIGxlc3MgdGhhbiB0aGUgMTQuOSBiaWxsaW9uIGxlYXZpbmcgdGhlIG1hcmtldCBhcyBhIHByaW9yIHBhY3QgZXhwaXJlZC4gVGhpcyBmdXJ0aGVyIHdlYWtlbmVkIHNlbnRpbWVudCB0aGUgQnVuZGVzYmFuayBjb3VsZCBtb3ZlIHRvIGEgbW9yZSBhY2NvbW1vZGF0aXZlIG1vbmV0YXJ5IHN0YW5jZSwgZGVhbGVycyBzYWlkLiAgICAgS29laGxlciBzYWlkIGluIGEgc3BlZWNoIGluIFN1cnJleSwgRW5nbGFuZCwgc3BlY3VsYXRpdmUgY2FwaXRhbCBpbmZsb3dzIG1heSBjYXVzZSBtb25ldGFyeSBncm93dGgsIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBjZW50cmFsIGJhbmtzIGludGVydmVuZWQgb3IgZXhjaGFuZ2UgcmF0ZXMgZmVsbC4gICAgICJJbiBvdGhlciB3b3JkcywgdGhlIG1vbmV0YXJ5IHBvbGljeSBtZWFzdXJlcyByZXF1aXJlZCBhcmUgZGlmZmVyZW50IGZyb20gLS0gYW5kIHNvbWV0aW1lcyBkaWFtZXRyaWNhbGx5IG9wcG9zZWQgdG8gLS0gdGhvc2UgbmVlZGVkIHdoZW4gdGhlIG1vbmV5IHN0b2NrIGlzIGluY3JlYXNpbmcgYXMgYSByZXN1bHQgb2YgbW91bnRpbmcgZWNvbm9taWMgYWN0aXZpdHkuIiAgICAgVGhvdWdoIEtvZWhsZXIgd2FzIGtub3duIHRvIGJlIHRoZSBtb3N0IGxpYmVyYWwgb2YgdGhlIGdlbmVyYWxseSBtb25ldGFyaXN0IEJ1bmRlc2JhbmsgYm9hcmQsIGhpcyBjb21tZW50cyBtYXJrZWQgdGhlIGZpcnN0IHRpbWUgY3V0cyBpbiByYXRlcyBoYWQgYmVlbiBjb25jcmV0ZWx5IHN1Z2dlc3RlZCBhcyBhIGNvdW50ZXJwb2ludCB0byBvdmVybHkgc3Ryb25nIG1vbmV0YXJ5IGdyb3d0aCwgZGVhbGVycyBzYWlkLiBSRVVURVJeTSAzOwoxOTg3MDQwOQlHRVJNQU4gTU9ORVkgTUFSS0VUIFNQTElUIE9OIExPV0VSIFJBVEUgUFJPU1BFQ1RTIFJlbWFya3MgYnkgY2VudHJhbCBiYW5rZXJzIHJhaXNlZCBzb21lIGhvcGVzIHRoZSBCdW5kZXNiYW5rIHdpbGwgY3V0IHJhdGVzIG9uIHNlY3VyaXRpZXMgcmVwdXJjaGFzZSBwYWN0cywgYnV0IG9wZXJhdG9ycyByZW1haW5lZCBkaXZpZGVkIG9uIHRoZSBsaWtlbGlob29kIG9mIGEgbW92ZSBpbiB0aGUgbmVhciB0ZXJtLCBtb25leSBtYXJrZXQgZGVhbGVycyBzYWlkLiAgICAgQ29tbWVudHMgYnkgQnVuZGVzYmFuayBib2FyZCBtZW1iZXIgQ2xhdXMgS29laGxlciB5ZXN0ZXJkYXkgdGhhdCByYXRlIGN1dHMgd2VyZSBuZWVkZWQgdG8gY3VyYiBtb25leSBzdXBwbHkgZ3Jvd3RoIGZyb20gc3BlY3VsYXRpdmUgY2FwaXRhbCBpbmZsb3dzLCBhbmQgYnkgV2VzdCBCZXJsaW4gc3RhdGUgY2VudHJhbCBiYW5rIHByZXNpZGVudCBEaWV0ZXIgSGlzcyB0aGF0IHRoZXJlIHdhcyBubyBuYXR1cmFsIGxvd2VyIGxpbWl0IHRvIHRoZSBkaXNjb3VudCByYXRlIGhhZCwgaG93ZXZlciwgbm8gaW1tZWRpYXRlIGltcGFjdC4gICAgIENhbGwgbW9uZXkgZGVjbGluZWQgdG8gMy42NS83NSBwY3QgZnJvbSAzLjc1Lzg1IHBjdCBidXQgdGhlIGRyb3Agd2FzIHRpZWQgdG8gZXh0cmEgbGlxdWlkaXR5IGluIHRoZSBtYXJrZXQsIGRlYWxlcnMgc2FpZC4gICAgIERlYWxlcnMgc2FpZCB0aGUgQnVuZGVzYmFuaydzIGxhdGVzdCBsaXF1aWRpdHkgYWxsb3RtZW50IHRoaXMgd2VlayBkYXNoZWQgc29tZSBob3BlcyBvZiBsb3dlciByYXRlcy4gICAgIFRoZSBCdW5kZXNiYW5rIGFsbG90dGVkIG9ubHkgNi4xIGJpbGxpb24gbWFya3MgeWVzdGVyZGF5IGluIG5ldyBsaXF1aWRpdHkgaW4gYSByZXB1cmNoYXNlIHBhY3QgYXQgYW4gdW5jaGFuZ2VkIHJhdGUgb2YgMy44MCBwY3QsIHRodXMgc3VidHJhY3Rpbmcgc29tZSA4LjggYmlsbGlvbiBtYXJrcyBmcm9tIHRoZSBtYXJrZXQsIGFzIGFuIG91dGdvaW5nIDE0LjkgYmlsbGlvbiBwYWN0IGV4cGlyZWQuICAgICBCdXQgc29tZSBkZWFsZXJzIHNhaWQgdGhlIHNtYWxsZXIgdm9sdW1lIGF3YXJkZWQgYnkgdGhlIHBhY3Qgd2FzIGluIGxpbmUgd2l0aCBwcmVzZW50IGxpcXVpZCBtb25leSBtYXJrZXQgY29uZGl0aW9ucywgYW5kIGRpZCBub3QgZXhsdWRlIGEgY3V0IGluIHRoZSByZXB1cmNoYXNlIHBhY3QgcmF0ZSBzb29uIHRvIDMuNzAgcGN0IGlmIG1vbmV5IG1hcmtldCByYXRlcyBjb250aW51ZSBhdCBwcmVzZW50IGxldmVscy4gICAgIFRoZSBuZXh0IG9wcG9ydHVuaXR5IGZvciB0aGUgQnVuZGVzYmFuayB0byBsb3dlciByYXRlcyBvbiByZXB1cmNoYXNlIHBhY3RzIHdpbGwgYmUgaW4gYSB0ZW5kZXIgZXhwZWN0ZWQgbmV4dCBUdWVzZGF5LiAgICAgQnVuZGVzYmFuayBvZmZpY2lhbHMgaGF2ZSBhbHJlYWR5IHNhaWQgdGhleSBmYXZvdXIgbW9yZSBkaXNjcmVldCByYXRlIGFkanVzdG1lbnRzIHRocm91Z2ggcmVwdXJjaGFzZSBwYWN0cywgcmF0aGVyIHRoYW4gdGhlIG1vcmUgcHVibGljIGFkanVzdG1lbnQgb2YgbGVhZGluZyByYXRlcy4gICAgIFRoZSBCdW5kZXNiYW5rIG1heSBlaXRoZXIgc2V0IGEgZml4ZWQgYWxsb2NhdGlvbiByYXRlIGFuZCBhbGxvdyBiYW5rcyB0byB0ZW5kZXIgZm9yIHRoZSB2b2x1bWUsIGFzIGhhcyBiZWVuIHRoZSBjYXNlIHNpbmNlIGl0IGxvd2VyZWQgaXRzIGRpc2NvdW50IHJhdGUgSmFudWFyeSAyMiwgb3IgZWxzZSBpdCBtYXkgYWxsb3cgYmFua3MgdG8gdGVuZGVyIGZvciB0aGUgcmF0ZSBhbmQgc2V0IHRoZSB2b2x1bWUgaXRzZWxmLiAgICAgRGVhbGVycyBleHBlY3Qgdm9sdW1lIG9mIHRoZSB0ZW5kZXIgdG8gYmUgbG93ZXIgdGhhbiB0aGUgMTUuMiBiaWxsaW9uIG1hcmtzIGZsb3dpbmcgb3V0LCB0byBvZmZzZXQgb3RoZXIgaW5jb21pbmcgZnVuZHMuICAgICBTb21lIHNldmVuIGJpbGxpb24gbWFya3MgaXMgZXhwZWN0ZWQgdG8gZmxvdyBpbiBuZXh0IHdlZWsuIFRoaXMgc2hvdWxkIHRoZW4gZmxvdyBiYWNrIGludG8gdGhlIG1hcmtldCBhcyBpdCBpcyBkZXBvc2l0ZWQgd2l0aCBiYW5rcy4gICAgIEJhbmtzIHdlcmUgd2VsbCBzdXBwbGllZCB3aXRoIGxpcXVpZGl0eSwgaG9sZGluZyA2MS41IGJpbGxpb24gbWFya3MgaW4gcmVzZXJ2ZXMgYXQgdGhlIEJ1bmRlc2Jhbmsgb24gVHVlc2RheS4gICAgIEhvbGRpbmdzIG9mIGF2ZXJhZ2UgZGFpbHkgcmVzZXJ2ZXMgb3ZlciB0aGUgZmlyc3Qgc2V2ZW4gZGF5cyBvZiBBcHJpbCBzdG9vZCBhdCA1OS42IGJpbGxpb24gbWFya3MsIHN0aWxsIGFib3ZlIHRoZSBlc3RpbWF0ZWQgNTEgYmlsbGlvbiByZXF1aXJlZCBmb3IgYWxsIG9mIEFwcmlsLiAgUkVVVEVSIDM7CjE5ODcwNDA5CUdJTExFVFRFIENBTkFEQSBJU1NVRVMgNzAgTUxOIFNURyBCT05EIEdpbGxldHRlIENhbmFkYSBJbmMgaXMgaXNzdWluZyBhIDcwIG1sbiBzdGcgYm9uZCBkdWUgT2N0b2JlciAzMCwgMTk5MyBjYXJyeWluZyBhIGNvdXBvbiBvZiA5LTUvOCBwY3QgYW5kIHByaWNlZCBhdCAxMDEtMS8yLCBNb3JnYW4gU3RhbmxleSBMdGQgc2FpZCBhcyBsZWFkIG1hbmFnZXIuICAgICBUaGUgaXNzdWUgaXMgZ3VhcmFudGVlZCBieSBHaWxsZXR0ZSBDbyBhbmQgaXMgYXZhaWxhYmxlIGluIGRlbm9taW5hdGlvbnMgb2YgMSwwMDAgYW5kIDUsMDAwIHN0Zy4gUGF5bWVudCBkYXRlIGlzIEFwcmlsIDMwIGFuZCB0aGVyZSBpcyBhIGxvbmcgZmlyc3QgY291cG9uLiAgICAgVGhlIGlzc3VlIHdpbGwgYmUgbGlzdGVkIGluIEx1eGVtYm91cmcuICAgICBUaGVyZSBpcyBhIHNlbGxpbmcgY29uY2Vzc2lvbiBvZiAxLTEvNCBwY3QgYW5kIGEgY29tYmluZWQgbWFuYWdlbWVudCBhbmQgdW5kZXJ3cml0aW5nIGZlZSBvZiA1LzggcGN0LiAgUmV1dGVyIDM7CjE5ODcwNDA5CUdJTExFVFRFIENBTkFEQSBJU1NVRVMgNzAgTUxOIFNURyBCT05EIEdpbGxldHRlIENhbmFkYSBJbmMgaXMgaXNzdWluZyBhIDcwIG1sbiBzdGcgYm9uZCBkdWUgT2N0b2JlciAzMCwgMTk5MyBjYXJyeWluZyBhIGNvdXBvbiBvZiA5LTUvOCBwY3QgYW5kIHByaWNlZCBhdCAxMDEtMS8yLCBNb3JnYW4gU3RhbmxleSBMdGQgc2FpZCBhcyBsZWFkIG1hbmFnZXIuICAgICBUaGUgaXNzdWUgaXMgZ3VhcmFudGVlZCBieSBHaWxsZXR0ZSBDbyBhbmQgaXMgYXZhaWxhYmxlIGluIGRlbm9taW5hdGlvbnMgb2YgMSwwMDAgYW5kIDUsMDAwIHN0Zy4gUGF5bWVudCBkYXRlIGlzIEFwcmlsIDMwIGFuZCB0aGVyZSBpcyBhIGxvbmcgZmlyc3QgY291cG9uLiAgICAgVGhlIGlzc3VlIHdpbGwgYmUgbGlzdGVkIGluIEx1eGVtYm91cmcuICAgICBUaGVyZSBpcyBhIHNlbGxpbmcgY29uY2Vzc2lvbiBvZiAxLTEvNCBwY3QgYW5kIGEgY29tYmluZWQgbWFuYWdlbWVudCBhbmQgdW5kZXJ3cml0aW5nIGZlZSBvZiA1LzggcGN0LiAgUkVVVEVSIDM7CjE5ODcwNDA5CUdMT0JBTCBFQ09OT01JQyBTTE9XRE9XTiBSQUlTRVMgTkVXIERFQlQgRkVBUlMgVGhlIGdsb2JhbCBlY29ub215IGlzIGV4cGVjdGVkIHRvIHdlYWtlbiB0aGlzIHllYXIsIGFkZGluZyBuZXcgd29ycmllcyB0byBhbiBhbHJlYWR5IHNlcmlvdXMgcG92ZXJ0eSBvdXRsb29rLCBlY29ub21pYyBhbmFseXN0cyBzYWlkLiAgICAgRm9yIGZpbmFuY2UgbWluaXN0ZXJzIGFuZCBjZW50cmFsIGJhbmtlcnMgYXR0ZW5kaW5nIHRoaXMgd2VlaydzIHNlbWktYW5udWFsIG1lZXRpbmdzIG9mIHRoZSBJbnRlcm5hdGlvbmFsIE1vbmV0YXJ5IEZ1bmQgYW5kIFdvcmxkIEJhbmssIHRoZSBuZXcgZmlndXJlcyByZWxlYXNlZCBieSB0aGUgSU1GIGFkZCBhbiBhZGRpdGlvbmFsIGNvbmNlcm4uICAgICBUaGUgRnVuZCBlc3RpbWF0ZWQgd29ybGQgb3V0cHV0IHdvdWxkIG9ubHkgZ3JvdyBieSAyLjcgcGN0IHRoaXMgeWVhciwgdmVyc3VzIDIuOSBwY3QgbGFzdCB5ZWFyLCBhbmQgMy4xIHBjdCBpbiAxOTg1LiAgICAgSW4gdGhlIGluZHVzdHJpYWwgY291bnRyaWVzLCBHcm9zcyBOYXRpb25hbCBQcm9kdWN0LCBhIG1lYXN1cmUgb2YgYWxsIGdvb2RzIGFuZCBzZXJ2aWNlcywgd2FzIGV4cGVjdGVkIHRvIGRlY2xpbmUgdG8gMi4zIHBjdCB0aGlzIHllYXIsIGNvbXBhcmVkIHdpdGggMi40IHBjdCBpbiAxOTg2LCB0aGUgSU1GIHNhaWQuICAgICBGb3IgdGhlIGRldmVsb3BpbmcgY291bnRyaWVzLCB0aGUgR3Jvc3MgRG9tZXN0aWMgUHJvZHVjdCwgYW5vdGhlciBtZWFzdXJlIG9mIGVjb25vbWljIGdyb3d0aCwgd2FzIGV4cGVjdGVkIHRvIGZhbGwgdG8gMy4wIHBjdCBmcm9tIDMuNSBwY3QgbGFzdCB5ZWFyLiAgICAgVGhlIG5ldyBmaWd1cmVzIGFyZSBjb25zaWRlcmVkIGEgbWFqb3IgZGlzYXBwb2ludG1lbnQgdG8gdGhlIHBvb3Jlc3QgY291bnRyaWVzLiBUaGV5IGhhZCBob3BlZCB0aGF0IG5ldyB2aXRhbGl0eSBpbiB0aGUgaW5kdXN0cmlhbCBjb3VudHJpZXMgYnJvdWdodCBvbiBieSBhIHNoYXJwIGRlY2xpbmUgaW4gb2lsIHByaWNlcyB3b3VsZCBhc3Npc3QgdGhlaXIgZWNvbm9taWMgcmVjb3ZlcnkgYW5kIGhlbHAgdGhlbSBjb3BlIHdpdGggZ3Jvd2luZyBtb3VuZHMgb2YgZGVidC4gICAgIElNRiBvZmZpY2lhbHMsIGRpc2N1c3NpbmcgdGhlaXIgb3V0bG9vaywgc2FpZCB0aGV5IGJlbGlldmVkIHRoZSBpbmR1c3RyaWFsIGNvdW50cnkgZWNvbm9taWVzIHdvdWxkIG1vdmUgdXAgdG8gYW4gYW5udWFsIGdyb3d0aCByYXRlIG9mIHRocmVlIHBjdCBieSB0aGUgZW5kIG9mIHRoZSBkZWNhZGUuICAgICBFY29ub21pYyBhbmFseXN0cyBhbmQgdGhlIElNRiBoYXZlIGJlZW4gc2F5aW5nIGZvciBzb21lIHRpbWUgdGhhdCB0aGUgYWJpbGl0eSB0byBrZWVwIHRoZSBkZWJ0IGNyaXNpcyBmcm9tIHR1cm5pbmcgaW50byBhbiBlY29ub21pYyByb3V0IHJlc3RzIG9uIHN1c3RhaW5lZCBlY29ub21pYyBncm93dGguICAgICBTaW5jZSB0aGUgZGVidG9yIGNvdW50cmllcyBtdXN0IGxvb2sgdG8gdGhlIHdlYWx0aGllciBzdGF0ZXMgZm9yIG1hcmtldHMgZm9yIHRoZWlyIHByb2R1Y3RzIGFzIHdlbGwgYXMgZmluYW5jaWFsIGFzc2lzdGFuY2UsIGVjb25vbWljIHdlYWtuZXNzIGluIHRoZSBkZXZlbG9wZWQgbmF0aW9ucycgIGVjb25vbWllcyBwb3NlcyBmdW5kYW1lbnRhbCB3b3JyaWVzLiAgICAgRGVidG9yIGNvdW50cmllcywgaW5jbHVkaW5nIHRoZSB2ZXJ5IHBvb3Jlc3Qgc3RhdGVzLCBoYXZlIG9ubHkgYSBmZXcgYXZlbnVlcyBvcGVuIHRvIHRoZW0gZm9yIGVhcm5pbmcgZm9yZWlnbiBleGNoYW5nZSwgaW5jbHVkaW5nIHRoZSBrZXkgb25lIG9mIGV4cG9ydHMuICAgICBUaGUgVS5TLiBlY29ub215LCB3aGljaCBpcyBpbiBpdHMgZmlmdGggeWVhciBvZiBleHBhbnNpb24sIGhhcyBzZXJ2ZWQgYXMgYSBtYWluc3RheSBmb3IgZGV2ZWxvcGluZyBjb3VudHJ5IGV4cG9ydHMsIGJ1dCBpdCB0b28gaXMgc2VlbiBhcyBiZWluZyByYXRoZXIgZmVlYmxlIHRoaXMgeWVhciwgZ3Jvd2luZyBieSBvbmx5IDIuMyBwY3QsIGFjY29yZGluZyB0byB0aGUgSU1GLiAgICAgRm9yIHRoaXMgcmVhc29uIGFuZCBiZWNhdXNlIG9mIGEgaGlnaCB0cmFkZSBkZWZpY2l0LCB0aGUgVW5pdGVkIFN0YXRlcyBoYXMgYmVlbiBwcmVzc3VyaW5nIEphcGFuIGFuZCBXZXN0IEdlcm1hbnkgdG8gaWduaXRlIHRoZWlyIGVjb25vbWllcyBidXQgd2l0aCBsaXR0bGUgYXBwYXJlbnQgc3VjY2Vzcy4gICAgIFRoZSBJTUYgc3R1ZHkgYWxzbyBleGFtaW5lcyB0aGUgY291cnNlIG9mIHRoZSBkb2xsYXIgYW5kIHRoZSBjdXJpb3VzIGxhY2sgb2YgaW1wYWN0IGl0IGhhcyBoYWQgb24gdGhlIFUuUy4gdHJhZGUgZGVmaWNpdC4gICAgIFJlYWdhbiBhZG1pbmlzdHJhdGlvbiBvZmZpY2lhbHMgaGF2ZSBiZWVuIHNheWluZyB0aGF0IHRoZSBpbXBhY3QgaXMgbm93IGJlZ2lubmluZyB0byBzaG93IHVwLCBhbHRob3VnaCBpdCBoYXMgYmVlbiBtdWNoIHNsb3dlciB0aGFuIGV4cGVjdGVkLiAgICAgVGhlIElNRiBvYnNlcnZlZCBpbiBpdHMgV29ybGQgRWNvbm9taWMgT3V0bG9vayB0aGF0ICJpdCBoYXMgdG8gYmUgcmVjb2duaXplZCB0aGF0IGV4Y2hhbmdlIHJhdGUgYWRqdXN0bWVudHMgdGFrZSB0aW1lIHRvIHdvcmsgdGhyb3VnaCB0byBwYXltZW50cyBmbG93cyAtLSBwcm9iYWJseSBhdCBsZWFzdCB0aHJlZSB5ZWFycyB0byBnZXQgYSByZXNvbmFibHkgY29tcGxldGUgZWZmZWN0LiIgICAgIFRoZSByZXBvcnQgYWRkZWQsIGhvd2V2ZXIsICJ0aGUgYWRqdXN0bWVudHMgbWF5IHRha2UgZXZlbiBtb3JlIHRpbWUgb24gdGhpcyBvY2Nhc2lvbi4iIFJFVVRFUl5NIDM7CjE5ODcwNDA5CUdPT0RNQU4gRklFTERFUiBQTEFOUyAxMDAgTUxOIERMUiBOT1RFIEZBQ0lMSVRZIDxHb29kbWFuIEZpZWxkZXIgTHRkPiwgYW4gQXVzdHJhbGlhbiBmb29kIHByb2R1Y3RzIGFuZCBzdXBlcm1hcmtldCBmaXJtLCBpcyBwbGFubmluZyBhIDEwMCBtbG4gVS5TLiBEbHIgbXVsdGktb3B0aW9uIG5vdGUgaXNzdWFuY2UgZmFjaWxpdHksIGxlYWQgbWFuYWdlciBCVCBBc2lhIEx0ZCBzYWlkLiAgICAgVW5kZXIgdGhlIHRocmVlLXllYXIgImV2ZXJncmVlbiIgZmFjaWxpdHksIHdoaWNoIGNhbiBiZSBleHRlbmRlZCBhbm51YWxseSwgbm90ZXMgd2lsbCBiZSBpc3N1ZWQgYnkgaXRzIHN1YnNpZGlhcmllcyA8R29vZG1hbiBGaWVsZGVyIE5ldyBaZWFsYW5kIEx0ZD4gYW5kIDxHb29kbWFuIEZpZWxkZXIgSW5kdXN0cmllcyBMdGQ+IGFuZCBndWFyYW50ZWVkIGJ5IHRoZSBwYXJlbnQgY29tcGFueS4gICAgIFRoZSBmYWNpbGl0eSBpcyB1bmRlcndyaXR0ZW4gdXAgdG8gNzUgbWxuIGRscnMgYXQgYSBtYXhpbXVtIG9mIDE3LjUgYmFzaXMgcG9pbnRzIG92ZXIgdGhlIExvbmRvbiBpbnRlcmJhbmsgb2ZmZXJlZCByYXRlLiBUaGUgdW5kZXJ3cml0aW5nIGZlZSBpcyAxMCBiYXNpcyBwb2ludHMsIEJUIEFzaWEgc2FpZC4gICAgIFRoZSBmYWNpbGl0eSB3aWxsIGFsbG93IHRoZSBpc3N1ZXJzIHRvIG9wdCBmb3Igbm90ZXMgbm90IGV4Y2VlZGluZyA1MCBtbG4gQXVzdHJhbGlhbiBkbHJzIGFuZCA1MCBtbG4gTmV3IFplYWxhbmQgZGxycyBvbiBhIG5vbi11bmRlcndyaXR0ZW4gYmFzaXMsIGJ1dCB0aGUgb3V0c3RhbmRpbmcgdG90YWwgaXMgbGltaXRlZCB0byAxMDAgbWxuIFUuUy4gRGxycywgQlQgQXNpYSBzYWlkLiAgICAgVGhlIG5vdGVzLCBpbiBkZW5vbWluYXRpb25zIG9mIDEwMCwwMDAgVS5TLiBPciBBdXN0cmFsaWFuIG9yIE5ldyBaZWFsYW5kIGRscnMsIHdpbGwgaGF2ZSBtYXR1cml0aWVzIG9mIG9uZSB0byAxMiBtb250aHMuICAgICBUaGUgYm9ycm93ZXIgaGFzIGEgZnVydGhlciBvcHRpb24gdG8gaXNzdWUsIGFsc28gb24gYSBub24tdW5kZXJ3cml0dGVuIGJhc2lzLCBtZWRpdW0gdGVybSBub3RlcyB3aXRoIG1hdHVyaXRpZXMgb2Ygb25lIHRvIHRocmVlIHllYXJzLCBpdCBhZGRlZC4gICAgIFRoZSBtYW5hZ2VtZW50IGZlZSB3YXMgbm90IGRpc2Nsb3NlZCBhbmQgc3luZGljYXRpb24gaXMgZXhwZWN0ZWQgdG8gY2xvc2UgdG9tb3Jyb3cuICBSRVVURVIgMzsKMTk4NzA0MDkJR09SREVYIE1JTkVSQUxTIExPQ0FURVMgQ0FOQURBIEdPTEQgREVQT1NJVFMgR29yZGV4IE1pbmVyYWwgTHRkIHNhaWQgZ2VvbG9naXN0cyBsb2NhdGVkIG1vcmUgdGhhbiBvbmUgbWxuIHNob3J0IHRvbnMgb2YgZ29sZC1iZWFyaW5nIGRlcG9zaXRzLCAwLjA1NyBvdW5jZXMgcGVyIHRvbiwgYXQgQ2FwZSBTcGVuY2VyLiAgICAgVGhlIGNvbXBhbnkgc2FpZCBpdCBwbGFucyB0byBpbnZlc3QgMi41IG1sbiBDYW5hZGlhbiBkbHJzIHRvIGV4cGFuZCBvbi1zaXRlIHRyZWF0bWVudCBmYWNpbGl0aWVzIHRvIHByb2Nlc3MgMTAwLDAwMCB0b25zIG9mIGdvbGQtYmVhcmluZyBkZXBvc2l0cyB0aGlzIHllYXIgYW5kIDIwMCwwMDAgdG9ucyBpbiAxOTg4LiAgICAgUHJpb3IgdG8gdGhlIGNvbXBsZXRpb24gb2YgdGhlIHJlY2VudCBleHBsb3JhdGlvbiBwcm9ncmFtLCBHb3JkZXggZXN0aW1hdGVkIHRoZSBDYXBlIFNwZW5jZXIgZGVwb3NpdCBoYWQgMjAwLDAwMCB0b25zLiAgICAgR29yZGV4IHNhaWQgdGhlIGV4cGFuc2lvbiBvZiB0aGUgQ2FwZSBTcGVuY2VyIGZhY2lsaXRpZXMgaXMgaW50ZW5kZWQgdG8gZW5hYmxlIG9wZXJhdGlvbiAyNCBob3VycyBhIGRheSB0aHJvdWdob3V0IHRoZSB5ZWFyLiAgUmV1dGVyIDM7CjE5ODcwNDA5CUdPUkRFWCBNSU5FUkFMUyBMT0NBVEVTIEdPTEQgREVQT1NJVFMgPEdvcmRleCBNaW5lcmFsIEx0ZD4gc2FpZCBnZW9sb2dpc3RzIGxvY2F0ZWQgbW9yZSB0aGFuIG9uZSBtbG4gdG9ucyBvZiBnb2xkLWJlYXJpbmcgZGVwb3NpdHMsIDAuMDU3IG91bmNlcyBwZXIgdG9uLCBhdCBDYXBlIFNwZW5jZXIuICAgICBUaGUgY29tcGFueSBzYWlkIGl0IHBsYW5zIHRvIGludmVzdCAyLjUgbWxuIENhbmFkaWFuIGRscnMgdG8gZXhwYW5kIG9uLXNpdGUgdHJlYXRtZW50IGZhY2lsaXRpZXMgdG8gcHJvY2VzcyAxMDAsMDAwIHRvbnMgb2YgZ29sZC1iZWFyaW5nIGRlcG9zaXRzIHRoaXMgeWVhciBhbmQgMjAwLDAwMCB0b25zIGluIDE5ODguICAgICBQcmlvciB0byB0aGUgY29tcGxldGlvbiBvZiB0aGUgcmVjZW50IGV4cGxvcmF0aW9uIHByb2dyYW0sIEdvcmRleCBlc3RpbWF0ZWQgdGhlIENhcGUgU3BlbmNlciBkZXBvc2l0IGhhZCAyMDAsMDAwIHRvbnMuICAgICBHb3JkZXggc2FpZCB0aGUgZXhwYW5zaW9uIG9mIHRoZSBDYXBlIFNwZW5jZXIgZmFjaWxpdGllcyBpcyBpbnRlbnRlZCB0byBlbmFibGUgaXQgdG8gb3BlcmF0ZSAyNCBob3VycyBhIGRheSB0aHJvdWdob3V0IHRoZSB5ZWFyLiAgUmV1dGVyIDM7CjE5ODcwNDA5CUdSQUlOIFNISVBNRU5UUyBUTyBUSEUgVVNTUiAtLSBVU0RBIFRoZXJlIHdlcmUgMjg3LDcwMCB0b25uZXMgb2YgVS5TLiBjb3JuIHNoaXBwZWQgdG8gdGhlIFNvdmlldCBVbmlvbiBpbiB0aGUgd2VlayBlbmRlZCBBcHJpbCAyLCBhY2NvcmRpbmcgdG8gdGhlIFUuUy4gQWdyaWN1bHR1cmUgRGVwYXJ0bWVudCdzIGxhdGVzdCBFeHBvcnQgU2FsZXMgcmVwb3J0LiAgICAgVGhhdCBjb21wYXJlcyB3aXRoIDEwNiwyMDAgdG9ubmVzIHNoaXBwZWQgaW4gdGhlIHByaW9yIHdlZWsuICAgICBUaGVyZSB3ZXJlIG5vIHdoZWF0IG9yIHNveWJlYW4gc2hpcG1lbnRzIGR1cmluZyB0aGUgd2Vlay4gICAgIFRoZSBVU1NSIGhhcyBwdXJjaGFzZWQgMiw4MjUsNjAwIHRvbm5lcyBvZiBVLlMuIGNvcm4sIGFzIG9mIEFwcmlsIDIsIGZvciBkZWxpdmVyeSBpbiB0aGUgZm91cnRoIHllYXIgb2YgdGhlIFUuUy4tVVNTUiBncmFpbiBhZ3JlZW1lbnQuICAgICBUb3RhbCBzaGlwbWVudHMgaW4gdGhlIHRoaXJkIHllYXIgb2YgdGhlIFUuUy4tVVNTUiBncmFpbnMgYWdyZWVtZW50LCB3aGljaCBlbmRlZCBTZXB0ZW1iZXIgMzAsIGFtb3VudGVkIHRvIDE1Miw2MDAgdG9ubmVzIG9mIHdoZWF0LCA2LDgwOCwxMDAgdG9ubmVzIG9mIGNvcm4gYW5kIDEsNTE4LDcwMCB0b25uZXMgb2Ygc295YmVhbnMuICBSZXV0ZXIgMzsKMTk4NzA0MDkJR1JBSU4gU0hJUFMgTE9BRElORyBBVCBQT1JUTEFORCBUaGVyZSB3ZXJlIHNpeCBncmFpbiBzaGlwcyBsb2FkaW5nIGFuZCBlaWdodCBzaGlwcyB3ZXJlIHdhaXRpbmcgdG8gbG9hZCBhdCBQb3J0bGFuZCwgYWNjb3JkaW5nIHRvIHRoZSBQb3J0bGFuZCBNZXJjaGFudHMgRXhjaGFuZ2UuICAgICBSZXV0ZXIgMzsKMTk4NzA0MDkJR1JBSU4gU0hJUFMgV0FJVElORyBBVCBORVcgT1JMRUFOUyBUZW4gZ3JhaW4gc2hpcHMgd2VyZSBsb2FkaW5nIGFuZCAxNCB3ZXJlIHdhaXRpbmcgdG8gbG9hZCBhdCBOZXcgT3JsZWFucyBlbGV2YXRvcnMsIHRyYWRlIHNvdXJjZXMgc2FpZC4gIEVMRVZBVE9SICAgICAgICAgICAgICAgICAgICAgTE9BRElORyAgV0FJVElORyAgQ29udGluZW50YWwgR3JhaW4sIFdlc3R3ZWdvICAgICAxICAgICAgNiAgTWlzc2lzc2lwcGkgUml2ZXIsIE15cnRsZSBHcm92ZSAxICAgICAgMCAgQURNIEdyb3dtYXJrICAgICAgICAgICAgICAgICAgICAxICAgICAgNCAgQnVuZ2UgR3JhaW4sIERlc3RyZWhhbiAgICAgICAgICAxICAgICAgMCAgICAgRUxFVkFUT1IgICAgICAgICAgICAgICAgTE9BRElORyAgV0FJVElORyAgU1QgQ0hBUkxFUyBERVNUUkVIQU4gICAgICAgICAxICAgICAgMSAgUkVTRVJWRSBFTEVWQVRPUiBDT1JQICAgICAgICAxICAgICAgMCAgUEVBVkVZIENPLCBTVCBFTE1PICAgICAgICAgICAxICAgICAgMCAgQ0FSR0lMTCBHUkFJTiwgVEVSUkUgSEFVVEUgICAyICAgICAgMSAgQ0FSR0lMTCBHUkFJTiwgUE9SVCBBTExFTiAgICAwICAgICAgMCAgWkVOLU5PSCAgICAgICAgICAgICAgICAgICAgICAxICAgICAgMiAgcmV1dGVyIDM7CjE5ODcwNDA5CUdSRUFUIEFNRVJJQ0FOIE1HTVQ8R0FNST4gSEFTIEFUQ09SPEFUQ08+IFNUQUtFIEdyZWF0IEFtZXJpY2FuIE1hbmFnZW1lbnQgYW5kIEludmVzdG1lbnQgSW5jIHRvbGQgdGhlIFNlY3VyaXRpZXMgYW5kIEV4Y2hhbmdlIENvbW1pc3Npb24gaXQgYWNxdWlyZWQgYSA3LjcgcGN0IHN0YWtlIGluIEF0Y29yIEluYy4gICAgIEdyZWF0IEFtZXJpY2FuIHNhaWQgaXQgYm91Z2h0IHRoZSBzdGFrZSBmb3IgaW52ZXN0bWVudC4gICAgIEl0IGFkZGVkIHRoYXQgaXQgaGFzIGFsc28gY29uc2lkZXJlZC0tYnV0IG5vdCB5ZXQgZGVjaWRlZC0tdG8gYnV5IGFkZGl0aW9uYWwgQXRjb3Igc2hhcmVzLCBlaXRoZXIgaW4gdGhlIG9wZW4gbWFya2V0LCBpbiBwcml2YXRlIHRyYW5zYWN0aW9ucywgdGhyb3VnaCBhIHRlbmRlciBvZmZlciBvciBvdGhlcndpc2UuICAgICBHcmVhdCBBbWVyaWNhbiBzYWlkIGl0IHBhaWQgYWJvdXQgNi4xIG1sbiBkbHJzIGZvciBpdHMgNDYyLDQwMCBBdGNvciBzaGFyZXMuIEl0IHNhaWQgaXRzIG1vc3QgcmVjZW50IHB1cmNoYXNlcyBpbmNsdWRlZCAxOTEsNDAwIHNoYXJlcyBib3VnaHQgTWFyY2ggMTgtQXByaWwgNi4gIFJldXRlciAzOwoxOTg3MDQwOQlHUkVZQ09BVCBHUk9VUCBTRUVLUyBUV08gRklOQU5DSU5HUyBVLksuIFByb3BlcnR5IGNvbXBhbnkgR3JleWNvYXQgR3JvdXAgUGxjIGlzIHNlZWtpbmcgdHdvIGZpbmFuY2luZ3MsIG9uZSBmb3IgMTIwIG1sbiBzdGcgYW5kIHRoZSBvdGhlciBmb3IgMTYgbWxuIHN0ZywgaW4gY29ubmVjdGlvbiB3aXRoIGl0cyBFbWJhbmttZW50IFBsYWNlIGRldmVsb3BtZW50IGFib3ZlIGFuZCBhcm91bmQgQ2hhcmluZyBDcm9zcyBzdGF0aW9uIGluIExvbmRvbiwgYmFua2luZyBzb3VyY2VzIHNhaWQuICAgICBUaGUgZmlyc3QgdHJhbnNhY3Rpb24sIGEgMTIwIG1sbiBzdGcgY3JlZGl0LCB3aWxsIGJlIGFycmFuZ2VkIGJ5IE4uTS4gUm90aHNjaGlsZCBhbmQgU29ucyBMdGQgYW5kIEJhbmsgb2YgVG9reW8gSW50ZXJuYXRpb25hbCBMdGQgb24gYmVoYWxmIG9mIGEgc3BlY2lhbCBwdXJwb3NlIEdyZXljb2F0IHN1YnNpZGlhcnkgeWV0IHRvIGJlIGluY29ycG9yYXRlZC4gICAgIEl0IG1hdHVyZXMgaW4gSnVuZSAxOTkzIGJ1dCB3aWxsIGJlIGV4dGVuZGlibGUgYnkgdXAgdG8gdHdvIHllYXJzIHRvIEp1bmUgMTk5NSBhdCB0aGUgb3B0aW9uIG9mIHRoZSBib3Jyb3dlci4gICAgIFRoZSBmaXJzdCBjcmVkaXQsIGEgcHJvamVjdCBmaW5hbmNpbmcsIHdpbGwgY2FycnkgYSBiYXNpYyBtYXJnaW4gb2YgNS84IHBvaW50IG92ZXIgTG9uZG9uIEludGVyYmFuayBPZmZlcmVkIFJhdGVzIChMSUJPUiksIHdpdGggYW4gYWRkaXRpb25hbCAxLzQgcGN0IHBlciBhbm51bSBwYXlhYmxlIG9uIG91dHN0YW5kaW5nIGFtb3VudHMgdG8gdGhlIGV4dGVudCB0aGF0IHRoZSBwcm9wZXJ0eSBpcyBub3Qgc3Vic3RhbnRpYWxseSBwcmUtbGV0LiAgICAgSW4gYWRkaXRpb24sIGlmIHRoZSBwcm9wZXJ0eSBpcyBwcmUtc29sZCB3aGlsZSBhbW91bnRzIGFyZSBzdGlsbCBvdXRzdGFuZGluZywgdGhlIGJhc2ljIG1hcmdpbiB3aWxsIGJlIHJlZHVjZWQgdG8gMS8yIHBvaW50IG92ZXIgTElCT1IsIHRoZSBiYW5raW5nIHNvdXJjZXMgc2FpZC4gICAgIEZvciBhIG9uZSB5ZWFyIGV4dGVuc2lvbiBvZiB0aGUgbWF0dXJpdHkgYW4gZXh0cmEgMS84IHBvaW50IG1hcmdpbiB3aWxsIGJlIHBhaWQsIHdpdGggYSBmdXJ0aGVyIDEvOCBwb2ludCBpZiB0aGUgbWF0dXJpdHkgaXMgbGVuZ3RoZW5lZCBmb3IgdGhlIG9wdGlvbmFsIHNlY29uZCB5ZWFyLiAgICAgVGhlcmUgd2lsbCBiZSBhIGNvbW1pdG1lbnQgZmVlIG9mIDEvNCBwY3QgcGVyIGFubnVtIG9uIGF2YWlsYWJsZSBhbW91bnRzIGFuZCBvZiAxLzggcGN0IG9uIHVuYXZhaWxhYmxlIGFtb3VudHMsIHRoZSBzb3VyY2VzIHNhaWQuIFJvdGhzY2hpbGQgaXMgc29sZSBhZ2VudCBmb3IgdGhpcyB0cmFuc2FjdGlvbi4gICAgIFRoZSBzZWNvbmQgdHJhbnNhY3Rpb24sIGEgMTYgbWxuIHN0ZyBjcmVkaXQgZm9yIHRoZSBwdXJwb3NlIG9mIHdvcmtpbmcgY2FwaXRhbCwgaXMgYmVpbmcgYXJyYW5nZWQgYnkgUm90aHNjaGlsZCBhbG9uZSBvbiBiZWhhbGYgb2YgdGhlIEdyZXljb2F0IEdyb3VwIFBsYyBpdHNlbGYuIEl0IHdpbGwgYmUgc2VjdXJlZCBvbiBhIHByb3BlcnR5IGNhbGxlZCBCcmV0dGVuaGFtIEhvdXNlLiAgICAgVGhlIG1hcmdpbiB3aWxsIGJlIDEvMiBwb2ludCBvdmVyIExJQk9SIGluIHllYXJzIG9uZSB0byBmb3VyLCA1LzggcG9pbnQgb3ZlciBMSUJPUiBpbiB5ZWFycyBmaXZlIGFuZCBzaXggYW5kIDMvNCBwb2ludCBvdmVyIExJQk9SIHRoZXJlYWZ0ZXIuIFRoZSBjcmVkaXQgd2lsbCBtYXR1cmUgaW4gSnVuZSwgMTk5NS4gICAgIFRoZSBzb3VyY2VzIHNhaWQgdGhhdCBhIGNvbW1pdG1lbnQgZmVlIG9mIDIwIGJhc2lzIHBvaW50cyB3aWxsIGJlIHBheWFibGUgb24gdGhlIGF2YWlsYWJsZSB0cmFuY2hlLCB3aXRoIDEwIGJhc2lzIHBvaW50cyBvbiB1bmF2YWlsYWJsZSBhbW91bnRzLiAgUmV1dGVyIDM7CjE5ODcwNDA5CUdST1VQIE9GIDEwIFdFTENPTUVTIExBVEVTVCBHLTcgQUdSRUVNRU5UIFRoZSBHcm91cCBvZiAxMCBkZXZlbG9wZWQgbmF0aW9ucyBpc3N1ZWQgYSBjb21tdW5pcXVlIHdlbGNvbWluZyB0aGUgcmVhZmZpcm1hdGlvbiBvZiB0aGUgUGFyaXMgYWNjb3JkIG9uIGN1cnJlbmN5IHN0YWJpbGl0eSBieSB0aGUgR3JvdXAgb2YgU2V2ZW4gbGVhZGluZyBpbmR1c3RyaWFsIGRlbW9jcmFjaWVzIHllc3RlcmRheS4gICAgIEluIHRoZSBjb21tdW5pcXVlIGlzc3VlZCB0aGlzIG1vcm5pbmcsIHRoZSBHLTEwIHNhaWQgInByb3NwZWN0cyBvZiBtZW1iZXIgY291bnRyaWVzJyBlY29ub21pZXMgd291bGQgYmUgaW1wcm92ZWQgYnkgc3RhYmlsaXR5IGluIHRoZSBleGNoYW5nZSByYXRlcyBvZiB0aGVpciBjdXJyZW5jaWVzLiIgICAgIFRoZSBHLTEwIGluY2x1ZGVzIHRoZSBncm91cCBvZiBzZXZlbiAtIHRoZSBVbml0ZWQgU3RhdGVzLCBDYW5hZGEsIEJyaXRhaW4sIEphcGFuLCBJdGFseSwgV2VzdCBHZXJtYW55IGFuZCBGcmFuY2UgLSBwbHVzIEJlbGdpdW0sIHRoZSBOZXRoZXJsYW5kcywgU3dlZGVuIGFuZCBhbHNvIFN3aXR6ZXJsYW5kLiAgICAgU291cmNlcyB3aG8gYXR0ZW5kZWQgdGhlIEctMTAgY29uZmVyZW5jZSB0aGlzIG1vcm5pbmcgc2FpZCB0aGUgcmVmZXJlbmNlIHRvIHRoZSBsYXRlc3QgRy03IGFncmVlbWVudCB3YXMgZXNwZWNpYWxseSBhZGRlZCB0byB0aGUgYnJpZWYgY29tbXVuaXF1ZSBiZWNhdXNlIGN1cnJlbmN5IHN0YWJpbGl0eSB3aWxsIGJlbmVmaXQgYWxsIHRoZSBHLTEwIG1lbWJlcnMuICAgICBUaGUgRy0xMCBtZXQgYnJpZWZseSBiZWZvcmUgdGhlIEludGVybmF0aW9uYWwgTW9uZXRhcnkgRnVuZCBJbnRlcmltIENvbW1pdHRlZSBtZWV0aW5nIHNjaGVkdWxlZCBmb3IgdG9kYXkuIC4gIFJldXRlciAzOwoxOTg3MDQwOQlIQU5TT04gPEhBTj4gVE8gQlVZIElOVCdMIFBST1RFSU4gPFBSTz4gU1RPQ0sgSW50ZXJuYXRpb25hbCBQcm90ZWlucyBDb3JwIHNhaWQgaXQgaGFzIGFncmVlZCB0byBzZWxsIGluIGEgcHJpdmF0ZSBwbGFjZW1lbnQgMzMwLDAwMCBjb21tb24gc2hhcmVzIGF0IDExLjc1IGRscnMgYSBzaGFyZSB0byBhIFUuUy4gc3Vic2lkaWFyeSBvZiBIYW5zb24gVHJ1c3QgUGxjLiAgICAgSW4gYWRkaXRpb24sIERhdmlkIENsYXJrZSB0aGUgcHJlc2lkZW50IG9mIGFub3RoZXIgSGFuc29uIFRydXN0IHN1YnNpZGlhcnksIEhhbnNvbiBJbmR1c3RyaWVzLCB3aWxsIGJlIG5hbWVkIGNoYWlybWFuIG9mIEludGVybmF0aW9uYWwgUHJvdGVpbnMncyBleGVjdXRpdmUgY29tbWl0dGVlIHVwb24gaGlzIGVsZWN0aW9uIHRvIHRoZSBib2FyZCBhdCB0aGUgYW5udWFsIG1lZXRpbmcuICAgICBJbnRlcm5hdGlvbmFsIFByb3RlaW5zIHJlY2VudGx5IGFjcXVpcmVkIENsYXJrZSdzIGZhbWlseSBidXNpbmVzcywgR3JlYXQgU291dGggQmVhY2ggU2FsZXMgQ28sIGZvciA5MDAsMDAwIHJlc3RyaWN0ZWQgY29tbW9uIHNoYXJlcyBvZiB3aGljaCAzNTAsMDAwIGhhdmUgYmVlbiBpc3N1ZWQgdG8gZGF0ZS4gICAgIEludGVybmF0aW9uYWwgUHJvdGVpbnMgc2FpZCBpdHMgYWdyZWVtZW50IHdpdGggSGFuc29uIFRydXN0IGlzIHN1YmplY3QgdG8gc3RvY2tob2xkZXIgYXBwcm92YWwgYXQgdGhlIGFubnVhbCBtZWV0aW5nIHdoaWNoIGlzIGV4cGVjdGVkIHRvIGJlIGhlbGQgaW4gSnVuZS4gICAgIFRoZSBjb21wYW55IHNhaWQgSGFuc29uIFRydXN0IGlzIHB1cmNoYXNpbmcgdGhlIHN0b2NrIGZvciBpbnZlc3RtZW50IHB1cnBvc2VzLCBhZGRpbmcgdGhlIGFncmVlbWVudCBpbmNsdWRlcyByZXN0cmljdGlvbnMgb24gcHVyY2hhc2Ugb3Igc2FsZSBvZiB0aGUgY29tcGFueSBieSBIYW5zb24gZm9yIHRoZSBuZXh0IGZpdmUgeWVhcnMuICAgICBJbnRlcm5hdGlvbmFsIFByb3RlaW5zIHNhaWQgaXQgd2lsbCB1c2UgdGhlIHByb2NlZWRzIHRvIGV4cGFuZCBkb21lc3RpYyBvcGVyYXRpb25zLiAgICAgVGhlIGNvbXBhbnkgaGFzIGFib3V0IDIuMSBtbG4gc2hhcmVzIG91dHN0YW5kaW5nLiAgICAgICAgICAgICAgUmV1dGVyIDM7CjE5ODcwNDA5CUhBV0FJSUFOIEVMRUNUUklDIDxIRT4gVE8gQlVZIEhBV0FJSUFOIElOU1VSQU5DRSBIYXdhaWlhbiBFbGVjdHJpYyBJbmR1c3RyaWVzIHNhaWQgaXQgaGFzIGVudGVyZWQgYSBsZXR0ZXIgb2YgaW50ZW50IHRvIGJ1eSB0aGUgSGF3YWlpYW4gSW5zdXJhbmNlIENvbXBhbmllcy4gICAgIFRoZSB0cmFuc2FjdGlvbiBpcyBzdWJqZWN0IHRvIGEgZGVmaW5pdGl2ZSBhZ3JlZW1lbnQsIGFuZCBnb3Zlcm5tZW50IGFuZCBib2FyZCBhcHByb3ZhbHMuICAgICBUaGUgSGF3YWlpYW4gSW5zdXJhbmNlIENvbXBhbmllcyBhZCBhc3NldHMgYXQgdGhlIGVuZCBvZiAxOTg2IG9mIDEzNy40IG1sbiBkbHJzIGFuZCBlYXJuZWQgcHJlbWl1bXMgb2YgNDYuMSBtbG4gZGxycy4gICAgIEhhd2FpaWFuIEVsZWN0cmljIHNhaWQgaXQgcGxhbnMgdG8gb3BlcmF0ZSB0aGUgY29tYXBueSwgd2hpY2ggaGFzIDIyNiBlbXBsb3llZXMsIHdpdGggY3VycmVudCBtYW5hZ2VtZW50LiAgUmV1dGVyIDM7CjE5ODcwNDA5CUhFQUxUSCBBTkQgUkVIQUJJTElUQVRJT04gPEhSUD4gSU5JVElBTCBQQVlPVVQgSGVhbHRoIGFuZCBSZWhhYmlsaXRhdGlvbiBQcm9wZXJ0aWVzIFRydXN0IHNhaWQgaXQgZGVjbGFyZWQgYW4gaW50aXRpYWwgZGl2aWRlbmQgb2YgNTUgY3RzIHBlciBzaGFyZSBmb3IgdGhlIHBlcmlvZCBlbmRpbmcgTWFyY2ggMzEsIDE5ODcgICAgIFRoZSBkaXZpZGVuZCB3aWxsIGJlIHBheWVkIE1heSAyMCB0byBzaGFyZWhvbGRlcnMgb2YgcmVjb3JkIG9uIEFwcmlsIDIwLCB0aGUgY29tcGFueSBzYWlkLiAgICAgVGhlIGNvbXBhbnkgc2FpZCBpdCBvcmdhbml6ZWQgaW4gbGF0ZSAxOTg2IGFuZCBjbG9zZWQgaXRzIGludGl0aWFsIHB1YmxpYyBvZmZlcmluZyBvZiBzaGFyZXMgRGVjIDIzLCAxOTg2LiAgICAgVGhlIGluaXRpdGFsIGRpdmlkZW5kIGluY2x1ZGVzIGZpdmUgY3RzIGF0dHJpYnV0YWJsZSB0byB0aGUgcGVyaW9kIGJldHdlZW4gRGVjIDIzIGFuZCAzMSwgMTk4NiwgYW5kIDUwIGN0cyBhdHRyaWJ1dGFibGUgdG8gdGhlIGZpcnN0IHF0ciBvZiAxOTg3LCBlbmRpbmcgTWFyY2ggMzEsIDE5ODcuICBSZXV0ZXIgMzsKMTk4NzA0MDkJSEVBTFRIL1JFSEFCSUxJVEFUSU9OIDxIUlA+IFNFVFMgRklSU1QgUEFZT1VUIEhlYWx0aCBhbmQgUmVoYWJpbGl0YXRpb24gUHJvcGVydGllcyBUcnVzdCBzYWlkIGl0cyBib2FyZCBkZWNsYXJlZCBhbiBpbml0aWFsIGRpdmlkZW5kIG9mIDU1IGN0cywgaW5jbHVkaW5nIDUwIGN0cyBmb3IgdGhlIGZpcnN0IHF1YXJ0ZXIganVzdCBlbmRlZCBhbmQgZml2ZSBjdHMgZnJvbSBpdHMgaW5pdGlhbCBvcGVyYXRpbmcgcGVyaW9kIHRoYXQgYmVnYW4gRGVjZW1iZXIgMjMuICAgICBUaGUgZGl2aWRlbmQgaXMgcGF5YWJsZSBNYXkgMzAsIHJlY29yZCBBcHJpbCAyMC4gIFJldXRlciAzOwoxOTg3MDQwOQlIRVJJVEFHRSBGSU5BTkNJQUwgU0VSVklDRVMgPEhFUlM+IDFTVCBRVFIgTkVUIFNociA0NSBjdHMgdnMgNDMgY3RzICAgICBOZXQgMSw1MDMsMDAwIHZzIDkzOCwwMDAgICAgIEF2ZyBzaHJzIDMsMzU4LDY2NCB2cyAyLDE1OCw2NjQgICAgIE5PVEU6IENvbXBhbnkgaGFkIGl0cyBpbml0aWFsIHB1YmxpYyBvZmZlcmluZyBvZiAxLDIwMCwwMDAgc2hhcmVzIGluIE9jdG9iZXIsIDE5ODYgIFJldXRlciAzOwoxOTg3MDQwOQlIT0cgQU5EIENBVFRMRSBTTEFVR0hURVIgR1VFU1NUSU1BVEVTIENoaWNhZ28gTWVyY2FudGlsZSBFeGNoYW5nZSBmbG9vciB0cmFkZXJzIGFuZCBjb21taXNzaW9uIGhvdXNlIHJlcHJlc2VudGF0aXZlcyBhcmUgZ3Vlc3N0aW1hdGluZyB0b2RheSdzIGhvZyBzbGF1Z2h0ZXIgYXQgYWJvdXQgMjg3LDAwMCB0byAyOTUsMDAwIGhlYWQgdmVyc3VzIDI5MiwwMDAgd2VlayBhZ28gYW5kIDMyMiwwMDAgYSB5ZWFyIGFnby4gICAgIENhdHRsZSBzbGF1Z2h0ZXIgaXMgZ3Vlc3N0aW1hdGVkIGF0IGFib3V0IDEyNCwwMDAgdG8gMTI4LDAwMCBoZWFkIHZlcnN1cyAxMjksMDAwIHdlZWsgYWdvIGFuZCAxMzQsMDAwIGEgeWVhciBhZ28uICBSZXV0ZXIgMzsKMTk4NzA0MDkJSE9LS0FJRE8gVEFLVVNIT0tVIENPTlZFUlRJQkxFIEVVUk9CT05EIENPVVBPTiBDVVQgVGhlIGNvdXBvbiBvbiB0aGUgMTAwIG1sbiBkbHIsIDE1LXllYXIsIGNvbnZlcnRpYmxlIGV1cm9ib25kIGZvciBIb2trYWlkbyBUYWt1c2hva3UgQmFuayBMdGQgaGFzIGJlZW4gc2V0IGF0IDEtMy80IHBjdCBjb21wYXJlZCB3aXRoIHRoZSBpbmRpY2F0ZWQgdHdvIHBjdCwgam9pbnQtbGVhZCBib29rcnVubmVyIFlhbWFpY2hpIEludGVybmF0aW9uYWwgKEV1cm9wZSkgTHRkIHNhaWQuICAgICBUaGUgY29udmVyc2lvbiBwcmljZSB3YXMgc2V0IGF0IDEsMDUyIHllbiwgd2hpbGUgdGhlIGZvcmVpZ24gZXhjaGFuZ2UgcmF0ZSB3YXMgZml4ZWQgYXQgMTQ2LjIwIHllbiBwZXIgZG9sbGFyLiAgUkVVVEVSIDM7CjE5ODcwNDA5CUhPTUUgU0FWSU5HUyBCQU5LIDxITVNCPiAxU1QgUVRSIE5FVCBTaHIgNTEgY3RzIHZzIG5vdCBnaXZlbiAgICAgTmV0IDYsMDg5LDAwMCB2cyA3LDMxMCwwMDAgICAgIE5PVEU6IENvbXBhbnkgd2VudCBwdWJsaWMgaW4gTm92ZW1iZXIgMTk4Ni4gICAgIE5ldCBpbmNsdWRlcyBsb2FuIGxvc3MgcHJvdmlzaW9ucyBvZiA3NSwwMDAgZGxycyB2cyAzMCwwMDAgZGxycyBhbmQgZ2FpbnMgb24gc2FsZSBvZiBzZWN1cml0aWVzIG9mIDc1NiwwMDAgZGxycyB2cyAyLDQ2OCwwMDAgZGxycyBwcmV0YXguICAgICAxOTg2IG5ldCBpbmNsdWRlcyB0YXggY3JlZGl0IDEsMDIyLDAwMCBkbHJzLiAgICAgMTk4NyBuZXQgaW5jbHVkZXMgMiw0MDAsMDAwIGRsciBnYWluIGZyb20gdGF4IGNyZWRpdCByZXN1bHRpbmcgaW4gcmVkdWN0aW9uIG9mIGdvb2R3aWxsLiAgUmV1dGVyIDM7CjE5ODcwNDA5CUhPTkVZV0VMTCBCVUxMIFNFRUtJTkcgNDAwIE1MTiBETFIgRkFDSUxJVFkgPEhvbmV5d2VsbCBCdWxsPiBpcyBzZWVraW5nIGEgNDAwIG1sbiBkbHIsIGZpdmUteWVhciBtdWx0aSBvcHRpb24gZmFjaWxpdHksIGFycmFuZ2VyIEJhbnF1ZSBOYXRpb25hbGUgZGUgUGFyaXMgc2FpZC4gICAgIFRoZSBmYWNpbGl0eSB3aWxsIGJlIGNvLWFycmFuZ2VkIGJ5IE1vcmdhbiBHdWFyYW50eSBhbmQgVGhlIEluZHVzdHJpYWwgQmFuayBvZiBKYXBhbiBMdGQuICAgICBUaGUgb3BlcmF0aW9uIGhhcyBhbiAiZXZlcmdyZWVuIiBmYWNpbGl0eSBhbmQgY2FuIGJlIGV4dGVuZGVkIHVwIHRvIGVpZ2h0IHllYXJzLCBCTlAgc2FpZC4gICAgIFRoZSBmYWNpbGl0eSB3aWxsIGJlIG1hZGUgdXAgb2YgdHdvIGNvbXBvbmVudHMuIFRoZSBmaXJzdCAiQSIgcGFydCB3aWxsIGNvbnNpc3Qgb2YgYSBtYXhpbXVtIDQwMCBtbG4gZGxycyB3aXRoIGEgbWF4aW11bSBzcHJlYWQgb2YgTGlib3IgcGx1cyAzLzggcGN0LiAgICAgQ29tcG9uZW50ICJCLCIgdG8gYmUgdW5zZWN1cmVkLCB3aWxsIGJlIGZvciBhIG1heGltdW0gb2YgMjAwIG1sbiBkbHJzIHdpdGggYSBtYXhpbXVtIHNwcmVhZCBvZiBMaWJvciBwbHVzIDUvOCBwY3QgZm9yIHRoZSBmaXJzdCB0aHJlZSB5ZWFycywgTGlib3IgcGx1cyAzLzQgcGN0IGZvciB0aGUgZm91cnRoIHRvIHNpeHRoIHllYXJzIGFuZCBMSUJPUiBwbHVzIDcvOCBwY3QgZm9yIHRoZSBzZXZlbnRoIHllYXIuICAgICBIb25leXdlbGwgQnVsbCB3YXMgcmVjZW50bHkgY3JlYXRlZCBieSBDaWUgZGVzIE1hY2hpbmVzIEJ1bGwgPEJVTFAuUEE+LCA8SG9uZXl3ZWxsIEluYz4gYW5kIDxORUMgQ29ycD4gb2YgSmFwYW4uICBSRVVURVIgMzsKMTk4NzA0MDkJSE9VU0UgUEFORUwgV0FOVFMgUEVOVEFHT04gTUFOQUdFIFUuUy4gU1RPQ0tQSUxFIFRoZSBIb3VzZSBBcm1lZCBTZXJ2aWNlcyBDb21taXR0ZWUgaGFzIHZvdGVkIGZvciBhIHRyYW5zZmVyIGluIHRoZSBtYW5hZ2VtZW50IG9mIHN0b2NrcGlsZWQgbWF0ZXJpYWxzIGZvciBuYXRpb25hbCBkZWZlbnNlIHRvIHRoZSBVLlMuIERlZmVuc2UgU2VjcmV0YXJ5LiAgICAgVGhlIGNvbW1pdHRlZSBhbHNvIHZvdGVkIGZvciBsZWdhbGx5LWJpbmRpbmcgcXVhbnRpdHkgYW5kIHF1YWxpdHkgcmVxdWlyZW1lbnRzIG9uIHRoZSBtYXRlcmlhbHMsIG1vc3RseSBtZXRhbHMuICAgICBUaGUgbWVhc3VyZXMgYXJlIGEgcGFydCBvZiB0aGUgRGVmZW5zZSBBdXRob3JpemF0aW9uIEJpbGwgd2hpY2ggd2lsbCBiZSB2b3RlZCBvbiBpbiB0aGUgSG91c2UgbmV4dCBtb250aC4gICAgIFRoZSBwdXJwb3NlIG9mIHRoZSBtZWFzdXJlcywgcGFzc2VkIGJ5IHRoZSBjb21taXR0ZWUgeWVzdGVyZGF5LCBpcyB0byBpbXByb3ZlIHN0b2NrcGlsZSBtYW5hZ2VtZW50IGFuZCBkaXNjb3VyYWdlIHNlbGwtb2ZmcyBvZiBtYXRlcmlhbHMgdGhhdCBjb3VsZCBqZW9wYXJkaXplIHN0cmF0ZWdpYyBuZWVkcywgYSBzdGFmZiBtZW1iZXIgb2YgdGhlIGNvbW1pdHRlZSB0b2xkIFJldXRlcnMuICAgICAiVGhleSAodGhlIHN0b2NrcGlsZXMpIHN0YW5kIHRvIGdhaW4gdGhlIG1vc3QgYnkgYmVpbmcgbWFuYWdlZCBwcm9wZXJseSwiIHNhaWQgdGhlIHN0YWZmZXIuICJNYW5hZ2VtZW50IG9mIHRoZSBzdG9ja3BpbGUgb3ZlciB0aGUgbGFzdCAxMCB5ZWFycyBoYXMgYmVlbiBhdHJvY2lvdXMuIiAgICAgUmVzcG9uc2liaWxpdHkgZm9yIHN0b2NrcGlsZSBtYW5hZ2VtZW50IG5vdyBiZWxvbmdzIHRvIGEgV2hpdGUgSG91c2UgYWdlbmN5LCB0aGUgRmVkZXJhbCBFbWVyZ2VuY3kgTWFuYWdlbWVudCBBZ2VuY3kuICAgICBUaGUgc3RhZmZlciBzYWlkIHVuZGVyIHRoZSBtZWFzdXJlcyBwYXNzZWQgYnkgdGhlIGNvbW1pdHRlZSB0aGUgU2VjcmV0YXJ5IG9mIERlZmVuc2Ugd291bGQgaGF2ZSBtb3JlIGluZmx1ZW5jZSBvdmVyIGRlY2lzaW9ucyB0byBrZWVwIG9yIHNlbGwgc3RyYXRlZ2ljIHN0b2NrcGlsZSBtYXRlcmlhbHMuICAgICBUaGUgYWRtaW5pc3RyYXRpb24gaGFzIHByb3Bvc2VkIGEgZ29hbCBvZiA3MDAgbWlsbGlvbiBkbHJzIHdvcnRoIG9mIHN0cmF0ZWdpYyBtYXRlcmlhbHMgdG8gYmUgaGVsZCBpbiB0aGUgc3RvY2twaWxlLiBUaGUgc3RvY2twaWxlIG5vdyBjb250YWlucyBhcm91bmQgMTAgYmlsbGlvbiBkbHJzIG9mIG1hdGVyaWFscy4gICAgIEhlIHNhaWQgc2V2ZXJhbCBhZ2VuY2llcyBjdXJyZW50bHkgaGVscGVkIEZFTUEgdG8gbWFuYWdlIHRoZSBzdG9ja3BpbGUgYW5kIGRlY2lkZSBob3cgbXVjaCB0byBzZWxsIHRvIGhlbHAgdGhlIGRlZmljaXQuICAgICBUaGVzZSBhZ2VuY2llcyBpbmNsdWRlZCB0aGUgT2ZmaWNlIG9mIE1hbmFnZW1lbnQgYW5kIEJ1ZGdldCBhbmQgdGhlIERlcGFydG1lbnRzIG9mIEludGVyaW9yIGFuZCBDb21tZXJjZSwgaGUgc2FpZC4gICAgIFRoZSBjb21taXR0ZWUgYmVsaWV2ZWQgdGhlIHNoYXJlZCBpbnZvbHZlbWVudCBpbiBzdG9ja3BpbGUgbWFuYWdlbWVudCB3YXMgY291bnRlci1wcm9kdWN0aXZlLCBoZSBzYWlkLiAgUmV1dGVyIDM7CjE5ODcwNDA5CUhPVVNFIFBBTkVMIFdBTlRTIFBFTlRBR09OIE1BTkFHRSBVLlMuIFNUT0NLUElMRSBUaGUgSG91c2UgQXJtZWQgU2VydmljZXMgQ29tbWl0dGVlIGhhcyB2b3RlZCBmb3IgYSB0cmFuc2ZlciBpbiB0aGUgbWFuYWdlbWVudCBvZiBzdG9ja3BpbGVkIG1hdGVyaWFscyBmb3IgbmF0aW9uYWwgZGVmZW5zZSB0byB0aGUgVS5TLiBEZWZlbnNlIFNlY3JldGFyeS4gICAgIFRoZSBjb21taXR0ZWUgYWxzbyB2b3RlZCBmb3IgbGVnYWxseS1iaW5kaW5nIHF1YW50aXR5IGFuZCBxdWFsaXR5IHJlcXVpcmVtZW50cyBvbiB0aGUgbWF0ZXJpYWxzLCBtb3N0bHkgbWV0YWxzLiAgICAgVGhlIG1lYXN1cmVzIGFyZSBhIHBhcnQgb2YgdGhlIERlZmVuc2UgQXV0aG9yaXphdGlvbiBCaWxsIHdoaWNoIHdpbGwgYmUgdm90ZWQgb24gaW4gdGhlIEhvdXNlIG5leHQgbW9udGguICAgICBUaGUgcHVycG9zZSBvZiB0aGUgbWVhc3VyZXMsIHBhc3NlZCBieSB0aGUgY29tbWl0dGVlIHllc3RlcmRheSwgaXMgdG8gaW1wcm92ZSBzdG9ja3BpbGUgbWFuYWdlbWVudCBhbmQgZGlzY291cmFnZSBzZWxsLW9mZnMgb2YgbWF0ZXJpYWxzIHRoYXQgY291bGQgamVvcGFyZGl6ZSBzdHJhdGVnaWMgbmVlZHMsIGEgc3RhZmYgbWVtYmVyIG9mIHRoZSBjb21taXR0ZWUgdG9sZCBSZXV0ZXJzLiAgICAgIlRoZXkgKHRoZSBzdG9ja3BpbGVzKSBzdGFuZCB0byBnYWluIHRoZSBtb3N0IGJ5IGJlaW5nIG1hbmFnZWQgcHJvcGVybHksIiBzYWlkIHRoZSBzdGFmZmVyLiAiTWFuYWdlbWVudCBvZiB0aGUgc3RvY2twaWxlIG92ZXIgdGhlIGxhc3QgMTAgeWVhcnMgaGFzIGJlZW4gYXRyb2Npb3VzLiIgICAgIFJlc3BvbnNpYmlsaXR5IGZvciBzdG9ja3BpbGUgbWFuYWdlbWVudCBub3cgYmVsb25ncyB0byBhIFdoaXRlIEhvdXNlIGFnZW5jeSwgdGhlIEZlZGVyYWwgRW1lcmdlbmN5IE1hbmFnZW1lbnQgQWdlbmN5LiAgICAgVGhlIHN0YWZmZXIgc2FpZCB0aGF0IHVuZGVyIHRoZSBtZWFzdXJlcyBwYXNzZWQgYnkgdGhlIGNvbW1pdHRlZSB0aGUgU2VjcmV0YXJ5IG9mIERlZmVuc2Ugd291bGQgaGF2ZSBtb3JlIGluZmx1ZW5jZSBvdmVyIGRlY2lzaW9ucyB0byBrZWVwIG9yIHNlbGwgc3RyYXRlZ2ljIHN0b2NrcGlsZSBtYXRlcmlhbHMuICAgICBUaGUgYWRtaW5pc3RyYXRpb24gaGFzIHByb3Bvc2VkIGEgZ29hbCBvZiA3MDAgbWlsbGlvbiBkbHJzIHdvcnRoIG9mIHN0cmF0ZWdpYyBtYXRlcmlhbHMgdG8gYmUgaGVsZCBpbiB0aGUgc3RvY2twaWxlLiBUaGUgc3RvY2twaWxlIG5vdyBjb250YWlucyBhcm91bmQgMTAgYmlsbGlvbiBkbHJzIG9mIG1hdGVyaWFscy4gICAgIEhlIHNhaWQgc2V2ZXJhbCBhZ2VuY2llcyBjdXJyZW50bHkgaGVscGVkIEZFTUEgdG8gbWFuYWdlIHRoZSBzdG9ja3BpbGUgYW5kIGRlY2lkZSBob3cgbXVjaCB0byBzZWxsIHRvIGhlbHAgdGhlIGRlZmljaXQuICAgICBUaGVzZSBhZ2VuY2llcyBpbmNsdWRlZCB0aGUgT2ZmaWNlIG9mIE1hbmFnZW1lbnQgYW5kIEJ1ZGdldCBhbmQgdGhlIERlcGFydG1lbnRzIG9mIEludGVyaW9yIGFuZCBDb21tZXJjZSwgaGUgc2FpZC4gICAgIFRoZSBjb21taXR0ZWUgYmVsaWV2ZWQgdGhlIHNoYXJlZCBpbnZvbHZlbWVudCBpbiBzdG9ja3BpbGUgbWFuYWdlbWVudCB3YXMgY291bnRlci1wcm9kdWN0aXZlLCBoZSBzYWlkLiAgUmV1dGVyIDM7CjE5ODcwNDA5CUhVTUFOQSA8SFVNPiBUTyBTRUxMIE1FRElDQUwgT0ZGSUNFUyBIdW1hbmEgSW5jIHNhaWQgaXQgaGFzIGFncmVlZCBpbiBwcmluY2lwbGUgdG8gc2VsbCA2OCBNZWRGaXJzdCBwcmltYXJ5IG1lZGljYWwgY2FyZSBmYWNpbGl0aWVzIHRvIDxQcmltZWRpY2FsIENvcnA+IGZvciB1bmRpc2Nsb3NlZCB0ZXJtcywgd2l0aCB0cmFuc2ZlcnMgdGFraW5nIHBsYWNlIG92ZXIgdGhlIG5leHQgZm91ciBtb250aHMuICAgICBJdCBzYWlkIGl0IHJldGFpbnMgMzcgTWVkRmlyc3Qgb2ZmaWNlcywgbW9zdGx5IGluIHRoZSBDaGljYWdvIGFyZWEuICAgICBUaGUgdHJhbnNhY3Rpb24gaXMgbm90IGV4cGVjdGVkIHRvIGhhdmUgYW55IGltcGFjdCBvbiBlYXJuaW5ncywgSHVtYW5hIHNhaWQuICBSZXV0ZXIgMzsKMTk4NzA0MDkJSURBIEdJVkVTIDE4LjYgTUxOIERMUiBMT0FOIFRPIFNSSSBMQU5LQSBUaGUgSW50ZXJuYXRpb25hbCBEZXZlbG9wbWVudCBBc3NvY2lhdGlvbiAoSURBKSBpcyBsZW5kaW5nIDE4LjYgbWxuIGRscnMgdG8gU3JpIExhbmthIGZvciBhZ3JpY3VsdHVyYWwgcmVzZWFyY2ggYW5kIGRldmVsb3BtZW50LCB0aGUgV29ybGQgQmFuayBzYWlkIGluIGEgc3RhdGVtZW50LiAgICAgVGhlIGxvYW4gaXMgcGFydCBvZiBhIDI2LjUgbWxuIGRsciBwcm9qZWN0IHRvIGltcHJvdmUgcHJvZHVjdGlvbiBvZiBjb21tb2RpdGllcywgbWFpbmx5IHJpY2UsIGFuZCByYWlzZSBmYXJtZXIgaW5jb21lcy4gT3RoZXIgZmluYW5jaW5nIGZvciB0aGUgcHJvamVjdCB3aWxsIGNvbWUgZnJvbSBTcmkgTGFua2EgKDcuMSBtbG4gZGxycykgYW5kIFdlc3QgR2VybWFueSAoODAwLDAwMCBkbHJzKS4gICAgIFRoZSBJREEgY3JlZGl0IGlzIGludGVyZXN0LWZyZWUgYW5kIGZvciA1MCB5ZWFycy4gSXQgaW5jbHVkZXMgYSAxMC15ZWFyIGdyYWNlIHBlcmlvZCBidXQgaGFzIGFubnVhbCBjaGFyZ2VzIG9mIDAuNSBwY3Qgb24gdGhlIHVuZGlzYnVyc2VkIGJhbGFuY2UsIGFuZCAwLjc1IHBjdCBvbiB0aGUgZGlzYnVyc2VkIGJhbGFuY2UsIHRoZSBCYW5rIHN0YXRlbWVudCBzYWlkLiAgICAgVGhlIHByb2plY3QgZW52aXNhZ2VzIHRoZSBjcmVhdGlvbiBvZiBhIENvdW5jaWwgb2YgQWdyaWN1bHR1cmFsIFJlc2VhcmNoIHRvIGZvcm11bGF0ZSBhIG5hdGlvbmFsIGFncmljdWx0dXJhbCBzdHJhdGVneSBhbmQgaW50cm9kdWNlIGEgY29udHJhY3QgcmVzZWFyY2ggcHJvZ3JhbW1lIHRvIGZpbmFuY2UgcmVzZWFyY2ggYWN0aXZpdGllcywgdGhlIEJhbmsgc2FpZC4gICAgIFRoZSBXYXNoaW5ndG9uLWJhc2VkIElEQSBpcyB0aGUgV29ybGQgQmFuaydzIGFmZmlsaWF0ZSBmb3IgY29uY2Vzc2lvbmFyeSBsZW5kaW5nLiAgUkVVVEVSIDM7CjE5ODcwNDA5CUlEQSBHUkFOVFMgU1JJIExBTktBIDE4LjYgTUxOIERMUiBDUkVESVQgVGhlIEludGVybmF0aW9uYWwgRGV2ZWxvcG1lbnQgQXNzb2NpYXRpb24gc2FpZCBpdCBhcHByb3ZlZCBhIDE4LjYgbWxuIGRsciBjcmVkaXQgdG8gU3JpIExhbmthIHRvIGhlbHAgdGhhdCBjb3VudHJ5IHN0cmVuZ3RoZW4gaXRzIGFncmljdWx0dXJhbCByZXNlYXJjaCBhbmQgZGV2ZWxvcG1lbnQuICAgICBJREEsIHRoZSBXb3JsZCBCYW5rIGFybSB0aGF0IG1ha2VzIGludGVyZXN0IGZyZWUgbG9hbnMgdG8gdGhlIHBvb3Jlc3QgbmF0aW9ucywgc2FpZCB0aGUgY3JlZGl0IHdpbGwgc3VwcG9ydCBjaGFuZ2VzIGRlc2lnbmVkIHRvIHJhaXNlIGZhcm0gaW5jb21lIGJ5IGJvb3N0aW5nIHByb2R1Y3Rpb24sIGRldmVsb3BpbmcgYmV0dGVyIGNyb3AgdmFyaWV0aWVzIGFuZCBpbXByb3ZpbmcgZmFybSBzeXN0ZW1zLiAgICAgSXQgc2FpZCB0aGVzZSBnb2FscyB3aWxsIGJlIGFjY29tcGxpc2hlZCB0aHJvdWdoIHRoZSBlc3RhYmxpc2htZW50IG9mIGEgQ291bmNpbCBvZiBBZ3JpY3VsdHVyYWwgUmVzZWFyY2ggd2hpY2ggd2lsbCBmb3JtdWxhdGUgYW5kIGluc3RpdHV0ZSBhbiBhZ3JpY3VsdHVyYWwgcmVzZWFyY2ggc3RyYXRlZ3kuICBSZXV0ZXIgMzsKMTk4NzA0MDkJSU5ESUEgRk9PREdSQUlOIFRBUkdFVCAxNjAgTUxOIFRPTk5FUyBJTiAxOTg3Lzg4IEluZGlhJ3MgbmF0aW9uYWwgZm9vZGdyYWluIHRhcmdldCBoYXMgYmVlbiBmaXhlZCBhdCAxNjAgbWxuIHRvbm5lcyBpbiAxOTg3Lzg4IChBcHItTWFyKSwgdW5jaGFuZ2VkIGZyb20gdGhlIDE5ODYvODcgdGFyZ2V0LCB0aGUgQWdyaWN1bHR1cmUgTWluaXN0cnkgc2FpZCBpbiBpdHMgYW5udWFsIHJlcG9ydCBmb3IgMTk4Ni84Ny4gICAgIEFjdHVhbCBvdXRwdXQgd2FzIGVzdGltYXRlZCBhdCAxNTEgbWxuIHRvbm5lcyBpbiAxOTg2Lzg3IGR1ZSB0byBmYWlsdXJlIG9mIG1vbnNvb24gcmFpbnMgaW4gMTUgb3V0IG9mIDM1IG1ldGVyb2xvZ2ljYWwgc3ViLWRpdmlzaW9ucyBvZiB0aGUgY291bnRyeS4gICAgIFRoZSByZXBvcnQgZ2F2ZSB0aGUgdGFyZ2V0cyBmb3IgdmFyaW91cyBjcm9wcyB3aXRoIGVzdGltYXRlZCBoYXJ2ZXN0ZWQgY3JvcHMgaW4gMTk4Ni84NyBpbiBicmFja2V0cyBhcyBmb2xsb3dpbmcsIGluIG1sbiB0b25uZXMgLSByaWNlIDY1ICg2MCksIHdoZWF0IDQ5ICg0OSksIGNvYXJzZSBncmFpbnMgaW5jbHVkaW5nIHNvcmdodW0gYW5kIG1pbGxldHMgMzIgKDI5KSBhbmQgcHVsc2VzIDE0ICgxMykuICAgICBEZXNwaXRlIGZhaWx1cmUgb2YgbW9uc29vbiByYWlucyBpbiByZWNlbnQgeWVhcnMsIGl0IHdhcyBwb3NzaWJsZSB0byBtYWludGFpbiBoaWdoZXIgZm9vZGdyYWluIHByb2R1Y3Rpb24sIHNpZ25pZnlpbmcgZ3Jvd2luZyByZXNpbGllbmNlIGluIGFncmljdWx0dXJhbCBzZWN0b3IsIHRoZSByZXBvcnQgc2FpZC4gICAgIFRoZSBzdHJhdGVneSBmb3IgaW5jcmVhc2luZyBpcnJpZ2F0aW9uIHBvdGVudGlhbCBhbG9uZyB3aXRoIGdyZWF0ZXIgdXNlIG9mIGhpZ2ggeWllbGRpbmcgc2VlZCB2YXJpZWl0ZXMgYW5kIGltcHJvdmVtZW50IGluIGZlcnRpbGlzZXIgZWZmaWNpZW5jeSBpcyB5aWVsZGluZyByZXN1bHRzLCBpdCBzYWlkLCBhZGRpbmcgdG90YWwgZm9vZGdyYWluIG91dHB1dCBpbiAxOTg1Lzg2LCAxOTg0Lzg1IGFuZCAxOTgzLzg0IHJlc3BlY3RpdmVseSB3YXMgMTUwLjUgbWxuIHRvbm5lcywgMTQ1LjUgbWxuIGFuZCBhIHJlY29yZCAxNTIuNCBtbG4uICAgIEluZGlhIGhhcyB0YXJnZXRlZCB0byBwcm9kdWNlIGJldHdlZW4gMTc4IGFuZCAxODMgbWxuIHRvbm5lcyBvZiBmb29kZ3JhaW5zIGJ5IHRoZSBsYXN0IHllYXIgb2YgdGhlIHNldmVudGggZml2ZS15ZWFyIGRldmVsb3BtZW50IHBsYW4gZW5kaW5nIE1hcmNoIDMxLCAxOTkwLiAgICAgVGFraW5nIHRoZSBtaWRwb2ludCBvZiAxODAgbWxuIHRvbm5lcyBhcyB0aGUgdGFyZ2V0IGFuZCB0aGUgMTk4Ni84NyBlc3RpbWF0ZWQgcHJvZHVjdGlvbiBvZiBhcm91bmQgMTUxIG1sbiB0b25uZXMsIHRoZSBnYXAgb2YgMjkgbWxuIHRvbm5lcyBoYXMgdG8gYmUgbWFkZSB1cCBkdXJpbmcgdGhlIHJlbWFpbmluZyB0aHJlZSB5ZWFycyBvZiB0aGUgcGxhbiBieSBpbmNyZWFzaW5nIGdyYWluIG91dHB1dCBhbm51YWxseSBieSBtb3JlIHRoYW4gbmluZSBtbG4gdG9ubmVzLiBCdXQgdGhlIHRhcmdldCBjYW4gYmUgYWNoaWV2ZWQgb25seSB3aXRoIGdvb2Qgd2VhdGhlciwgdGhlIHJlcG9ydCBzYWlkLiAgICAgIlRoZSBtYWpvciB0aHJ1c3QgcHJvZ3JhbW1lIHdpbGwsIHRoZXJlZm9yZSwgYmUgYmV0dGVyIHdhdGVyIChpcnJpZ2F0aW9uKSBtYW5hZ2VtZW50LiBTaW11bHRhbmVvdXNseSwgZWZmb3J0cyBmb3Igc3ByZWFkIG9mIGltcHJvdmVkIHRlY2hub2xvZ3kgaW5jbHVkaW5nIHRpbWVseSB1c2Ugb2YgaW5wdXRzIChmYXJtIG1hdGVyaWFscyBsaWtlIGZlcnRpbGlzZXJzKSBpbiBhZGVxdWF0ZSBxdWFudGl0aWVzIGhhdmUgdG8gYmUgdmlncm91c2x5IHB1cnN1ZWQsIiBpdCBzYWlkLiAgUmV1dGVyIDM7CjE5ODcwNDA5CUlORElBIE9JTFNFRUQgT1VUUFVUIEZPUkVDQVNUIFRPIFJJU0UgSW5kaWEncyBvaWxzZWVkIG91dHB1dCBpcyBleHBlY3RlZCB0byByaXNlIHRvIDEyLjI1IG1sbiB0b25uZXMgaW4gMTk4Ni84NyBlbmRpbmcgT2N0b2JlciwgdXAgb24gMTEuMTUgbWxuIGluIDE5ODUvODYgYnV0IGRvd24gZnJvbSAxMi45NSBtbG4gaGFydmVzdGVkIGluIDE5ODQvODUsIHRoZSBBZ3JpY3VsdHVyZSBNaW5pc3RyeSdzIDE5ODYvODcgcmVwb3J0IHNhaWQuICAgICBCdXQgdGhlIGZvcmVjYXN0IGZvciAxOTg2Lzg3IGlzIHdlbGwgYmVsb3cgYSB0YXJnZXQgb2YgMTQuOCBtbG4gdG9ubmVzIGZpeGVkIGZvciB0aGUgeWVhciwgaXQgc2FpZCwgYWRkaW5nIGJhZCB3ZWF0aGVyIGhpdCBncm91bmRudXQgYW5kIG90aGVyIG9pbHNlZWQgY3JvcHMuICAgICBUaGUgTmF0aW9uYWwgT2lsc2VlZHMgRGV2ZWxvcG1lbnQgUHJvZ3JhbSB3aWxsIGludmVzdCAzMDAgbWxuIHJ1cGVlcyBpbiAxOTg2Lzg3IG9uIHN1cHBseWluZyBpbXByb3ZlZCBoaWdoLXlpZWxkaW5nIHNlZWRzIGFuZCBvdGhlciBzdXBwb3J0IHNlcnZpY2VzIHRvIGhlbHAgYm9vc3QgcHJvZHVjdGlvbiwgaXQgYWRkZWQuIEluZGlhIGltcG9ydHMgYWJvdXQgMS4yIG1sbiB0b25uZXMgb2YgZWRpYmxlIG9pbHMgYSB5ZWFyLiAgUmV1dGVyIDM7CjE5ODcwNDA5CUlORElBTiBTVEFURSBDT01QQU5ZIEJPTkRTIFBST1ZPS0UgQ09NUExBSU5UUyBJbmRpYSdzIHByaXZhdGUgYnVzaW5lc3NtZW4gc2F5IHRoZXkgaGF2ZSBiZWVuIHBsYWNlZCBvbiBhbiB1bmVxdWFsIGZvb3RpbmcgaW4gcmFpc2luZyBtb25leSBmcm9tIHRoZSBjYXBpdGFsIG1hcmtldCBiZWNhdXNlIGdvdmVybm1lbnQgY29tcGFuaWVzIGFyZSB3b29pbmcgaW52ZXN0b3JzIGJ5IGlzc3VpbmcgbW9yZSBhdHRyYWN0aXZlIHRheC1mcmVlIGJvbmRzLiAgICAgU3RvY2sgYnJva2VycyBhbmQgYmFua2VycyBwb2xsZWQgYnkgUmV1dGVycyBzYWlkIGFsdGhvdWdoIGVxdWl0eSBzaGFyZXMgb3IgZGViZW50dXJlIGlzc3VlcyBmbG9hdGVkIGJ5IHByaXZhdGUgZmlybXMgcHJvdmlkZSBhIGhpZ2hlciByZXR1cm4gYW5kIHNob3J0ZXIgbWF0dXJpdHksIHRoZXkgYXJlIGZhc3QgbG9zaW5nIHRoZWlyIHBvcHVsYXIgYXBwZWFsIGFzIHRoZXkgYXJlIGxpYWJsZSB0byBib3RoIHdlYWx0aCBhbmQgaW5jb21lIHRheGVzLiAgICAgQnJva2VycyBzYWlkIG1hbnkgaW52ZXN0b3JzIGFyZSB0cmFuc2ZlcnJpbmcgZnVuZHMgaW50byBnb3Zlcm5tZW50IGNvbXBhbnkgYm9uZHMgYmVjYXVzZSBvZiB0aGVpciB0YXgtZnJlZSBzdGF0dXMgYW5kIGVhc3kgdHJhbnNmZXJhYmlsaXR5LiAgICAgQWJvdXQgMTAwIHByaXZhdGUgY29tcGFuaWVzIGhhdmUgcG9zdHBvbmVkIHBsYW5zIHRvIGlzc3VlIGVxdWl0eSBzaGFyZXMgYW5kIGRlYmVudHVyZXMgaW4gdGhlIGZpcnN0IHF1YXJ0ZXIgb2YgZmlzY2FsIDE5ODcvODggcGFydGx5IG9uIGFjY291bnQgb2YgZmllcmNlIGNvbXBldGl0aW9uIGZyb20gcHVibGljIHNlY3RvciBib25kcywgYSBtZXJjaGFudCBiYW5rZXIgc2FpZC4gICAgIFRoZXkgaW5jbHVkZWQgZXF1aXR5IHNoYXJlcyBhbmQgcmlnaHRzIGlzc3VlIHdvcnRoIG9uZSBiaWxsaW9uIHJ1cGVlcyBwbGFubmVkIHRvIGJlIGlzc3VlZCB0aGlzIG1vbnRoIGJ5IFRhdGEgRmVydGlsaXNlcnMgTHRkLCBoZSBzYWlkLCBhZGRpbmcgdGhlIGlzc3VlIGhhcyBiZWVuIHBvc3Rwb25lZCBpbmRlZmluaXRlbHkuICAgICAiVGhlIGdvdmVybm1lbnQgYm9uZHMgYXJlIG1ha2luZyBzZXJpb3VzIGlucm9hZHMgb24gdGhlIHByaXZhdGUgc2VjdG9yIGNvbXBhbmllcycgcmVzb3VyY2VzLCIgc2FpZCBSLiBQLiBHb2Vua2EsIHByZXNpZGVudCBvZiB0aGUgRmVkZXJhdGlvbiBvZiBJbmRpYW4gQ2hhbWJlcnMgb2YgQ29tbWVyY2UgYW5kIEluZHVzdHJ5LiAgICAgIlRoZSBkaXNjcmltaW5hdG9yeSB0YXggdHJlYXRtZW50IHNob3VsZCBiZSBkb25lIGF3YXkgd2l0aCBhbmQgZXF1YWwgZmFjaWxpdGllcyBiZSBwcm92aWRlZCB0byB0aGUgdHdvIHNlY3RvcnMgdG8gbW9iaWxpc2UgcmVzb3VyY2VzIGZyb20gdGhlIG1hcmtldCB3aGljaCBpcyBjb21tb24gdG8gYm90aCwiIEdvZW5rYSBzYWlkLiAgICAgQSBzZW5pb3IgRmluYW5jZSBNaW5pc3RyeSBvZmZpY2lhbCBzYWlkIGdvdmVybm1lbnQgYW5kIHByaXZhdGUgZmlybXMgd2VyZSBmcmVlIHRvIGNvbXBldGUgdG8gcmFpc2UgcmVzb3VyY2VzLCBhZGRpbmcgaXQgd2FzIG5vdCBjb3JyZWN0IHRoYXQgcHVibGljIHNlY3Rvci1pc3N1ZWQgYm9uZHMgd2VyZSBwcmV2ZW50aW5nIHByaXZhdGUgZmlybXMgZnJvbSByYWlzaW5nIG1vbmV5IG9uIHRoZSBzdG9jayBtYXJrZXQuICAgICAiRGViZW50dXJlcyBhbmQgZXF1aXR5IHNoYXJlcyBmbG9hdGVkIGJ5IHByaXZhdGUgY29tcGFuaWVzIHN0aWxsIGFjY291bnQgZm9yIGF0IGxlYXN0IDYwIHBjdCBvZiB0b3RhbCBjYXBpdGFsIHJhaXNlZCBpbiBzdG9jayBleGNoYW5nZXMsIiB0aGUgbWluaXN0cnkgb2ZmaWNpYWwgc2FpZC4gICAgIEEgc3Bva2VzbWFuIGF0IEJvbWJheSBzdG9jayBicm9rZXJzIEJhdGxpd2FsYSBhbmQgS2FyYW5pIHNhaWQgZ292ZXJubWVudCBib25kcyB3ZXJlIHZhbHVlZCBhdCBhYm91dCAyMCBiaWxsaW9uIHJ1cGVlcyBvciBhYm91dCA0MCBwY3Qgb2YgNTAgYmlsbGlvbiBydXBlZXMgcmFpc2VkIGJ5IGJvdGggZ292ZXJubWVudCBhbmQgbm9uLWdvdmVybm1lbnQgZmlybXMgaW4gdGhlIGRvbWVzdGljIGNhcGl0YWwgbWFya2V0IGluIDE5ODYvODcuICAgICBUaGUgc2hhcmUgd2FzIDM1IHRvIDQwIHBjdCBvZiBhYm91dCAzNi45NSBiaWxsaW9uIHJ1cGVlcyBtb2JpbGlzZWQgaW4gMTk4NS84NiwgaGUgc2FpZC4gIlRvIHNhdmUgdGF4ZXMsIGNvbW1lcmNpYWwgYmFua3MsIG1haW5seSBmb3JlaWduIGJhbmtzLCBhbmQgc29tZSBwcml2YXRlIGNvbXBhbmllcywgYXJlIGludmVzdGluZyB0aGVpciBzdXJwbHVzIGZ1bmRzIGluIHRoZSB0YXggZnJlZSBib25kcywiIGhlIHNhaWQuICAgICAiSW5kaXZpZHVhbHMgd2hvIGFyZSB2ZXJ5IHdlbGwgb2ZmIGFyZSBhbHNvIGludmVzdGluZyBpbiB0aGUgYm9uZHMgdG8gZ2FpbiB0YXggYmVuZWZpdHMgd2hpbGUgb25seSBzbWFsbCBpbnZlc3RvcnMgYXJlIGdvaW5nIGZvciBlcXVpdGllcyBvciBkZWJlbnR1cmVzIGZsb2F0ZWQgYnkgcHJpdmF0ZSBjb21wYW5pZXMgb24gYSBzZWxlY3RpdmUgYmFzaXMsIiB0aGUgc3Bva2VzbWFuIHNhaWQuICAgICBUaGUgbWF0dXJpdHkgcGVyaW9kIG9mIGdvdmVybm1lbnQgY29tcGFueSBib25kcyB2YXJpZXMgYmV0d2VlbiBzZXZlbiBhbmQgMTAgeWVhcnMuIE5vIHdlYWx0aCBvciBpbmNvbWUgdGF4ZXMgYXJlIHBheWFibGUgb24gbmluZSBwY3Qgc2V2ZW4teWVhciBib25kcyBidXQgdGhvc2UgY2FycnlpbmcgMTMgcGN0IGludGVyZXN0IG9uIDEwLXllYXIgYm9uZHMgYXJlIHN1YmplY3RlZCB0byBpbmNvbWUgdGF4IGlmIGludGVyZXN0IGFtb3VudF5NIGV4Y2VlZHMgNywwMDAgcnVwZWVzIGEgeWVhci4gICAgIEVxdWl0eSBzaGFyZXMsIHRoZSAxNCBwY3Qgbm9uLWNvbnZlcnRpYmxlIGRlYmVudHVyZXMgYW5kIDEyLjUgdG8gMTQgcGN0IGNvbnZlcnRpYmxlIGRlYmVudHVyZXMgaXNzdWVkIGJ5IHByaXZhdGUgY29tcGFuaWVzIGFyZSBub3QgZXhlbXB0ZWQgZnJvbSBlaXRoZXIgdGhlIHdlYWx0aCB0YXggb3IgZnJvbSB0aGUgdGF4IG9uIGluY29tZSBlYXJuZWQgZnJvbSB0aGVtLiAgICAgVGhlIGdvdmVybm1lbnQgYm9uZHMgYXJlIGxpc3RlZCBhcyBzZWN1cml0aWVzIGJ1dCB0cmFkZWQgb24gSW5kaWEncyBmb3VyIG1ham9yIHN0b2NrIGV4Y2hhbmdlcy4gVGhleSBjYW4gYmUgc29sZCBmcmVlbHkgb24gdGhlIHN0b2NrIG1hcmtldCBieSBzaW1wbGUgZW5kb3JzZW1lbnQgd2hpbGUgZGViZW50dXJlcyBjYW4gb25seSBiZSBzb2xkIHRvIHRoZSBjb21wYW55IGFmdGVyIG9uZSB5ZWFyLCBicm9rZXJzIHNhaWQuICAgICBHb3Zlcm5tZW50IGNvbXBhbmllcyBhcmUgdHJ5aW5nIHRvIGNhcGl0YWxpc2Ugb24gYSBib29tIGluIHRoZSBzdG9jayBtYXJrZXQgc2luY2UgMTk4NC84NSBzcGFya2VkIGJ5IGxpYmVyYWwgdGF4IGNvbmNlc3Npb25zIGFuZCByZWZvcm1zIGluIGV4Y2hhbmdlIG9wZXJhdGlvbnMsIGJyb2tlcnMgc2FpZC4gICAgIFRoZSBOYXRpb25hbCBUaGVybWFsIFBvd2VyIENvcnAsIE5UUEMsIHdhcyB0aGUgZmlyc3QgZ292ZXJubWVudCBjb21wYW55IHRvIGlzc3VlIHRoZSBib25kcyB0byByYWlzZSBvbmUgYmlsbGlvbiBydXBlZXMgaW4gSmFudWFyeSBsYXN0IHllYXIsIGJyZWFraW5nIHRoZSBtb25vcG9seSBvZiBwcml2YXRlIGNvbXBhbmllcyBvbiB0aGUgY2FwaXRhbCBtYXJrZXQuIFRoZSBzZXZlbi15ZWFyIE5UUEMgYm9uZCB3YXMgb3ZlcnN1YnNjcmliZWQgdGhyZWUgdGltZXMsIGJyb2tlcnMgc2FpZC4gICAgIE9mZmljaWFsIGZpZ3VyZXMgc2hvdyBib25kcyBmbG9hdGVkIGJ5IGdvdmVybm1lbnQgY29tcGFuaWVzIGhhdmUgYmVlbiBoZWF2aWx5IG92ZXJzdWJzY3JpYmVkLiBNb3JlIHN0YXRlIGNvbXBhbmllcyBoYXZlIHNvdWdodCB0aGUgTWluaXN0cnkncyBwZXJtaXNzaW9uIHRvIGlzc3VlIHRoZW0gaW4gY29taW5nIG1vbnRocy4gICAgIE5UUEMncyBzZWNvbmQgYm9uZCBpc3N1ZSBhdCB0aGUgZW5kIG9mIDE5ODYgcmFpc2VkIDQuNTEgYmlsbGlvbiBydXBlZXMgYWdhaW5zdCAxLjIgYmlsbGlvbiBvcmlnaW5hbGx5IHBlcm1pdHRlZCBieSB0aGUgRmluYW5jZSBNaW5pc3RyeS4gICAgIFRoZSBNYWhhbmFnYXIgVGVsZXBob25lIE5pZ2FtIG1vYmlsaXNlZCAzLjgzIGJpbGxpb24gcnVwZWVzIGxhc3QgeWVhciBhZ2FpbnN0IGF1dGhvcmlzZWQgMS41IGJpbGxpb24gYW5kIGxhc3QgbW9udGggdGhlIEluZGlhbiBSYWlsd2F5IEZpbmFuY2UgQ29ycG9yYXRpb24ncyByZWNvcmQgc3VzYmNyaXB0aW9uIHRvdGFsbGVkIDUuNSBiaWxsaW9uIHJ1cGVlcyBhZ2FpbnN0IGF1dGhvcmlzZWQgMi41IGJpbGxpb24uICAgICBJbiBtb3N0IGNhc2VzLCB0aGUgZ292ZXJubWVudCBoYXMgYWxsb3dlZCB0aGUgY29tcGFuaWVzIHRvIG1haW50YWluIHRoZSBvdmVyc3Vic2NyaWJlZCBhbW91bnQsIGJyb2tlcnMgc2FpZC4gICAgIEdvZW5rYSBzYWlkIHRoYXQgZ292ZXJubWVudCBib25kcyBhcmUgbWFraW5nIGl0IGluY3JlYXNpbmdseSBkaWZmaWN1bHQgZm9yIHByaXZhdGUgY29tcGFuaWVzIHRvIGxhdW5jaCBuZXcgZXF1aXR5IG9yIGRlYmVudHVyZSBpc3N1ZXMuIEhlIHNhaWQgdGhlIGdvdmVybm1lbnQgY291bGQgYXQgbGVhc3QgImZpeCBhIHN1aXRhYmxlIGxpbWl0IG9uIHRoZSBmdW5kcyB0byBiZSByYWlzZWQgdGhyb3VnaCBzdWNoIGJvbmRzIGJ5IHRoZSBwdWJsaWMgc2VjdG9yLiIgICAgIE1lcmNoYW50IGJhbmtlcnMgc2FpZCB0aGUgZ292ZXJubWVudCBpcyBwcmVzc2luZyBzdGF0ZSBjb21wYW5pZXMgdG8gYm9ycm93IGZyb20gdGhlIHB1YmxpYyBieSByZWR1Y2luZyBmaW5hbmNpYWwgc3VwcG9ydCB0byB0aGVtLiAgICAgVG8gZWFzZSBpdHMgaW50ZXJuYWwgZGVidCBidXJkZW4sIHRoZSBnb3Zlcm5tZW50IGhhcyByZWR1Y2VkIHRoZSBidWRnZXRhcnkgc3VwcG9ydCB0byBkZXZlbG9wbWVudCBpbnZlc3RtZW50IGluIGFib3V0IDEyMCBwdWJsaWMgc2VjdG9yIGNvbXBhbmllcyB0byA2OS45MiBiaWxsaW9uIHJ1cGVlcyBpbiAxOTg3Lzg4IGZyb20gNzcuOTIgYmlsbGlvbiBhIHllYXIgZWFybGllciwgb2ZmaWNpYWwgZmlndXJlcyBzaG93LiAgUkVVVEVSIDM7CjE5ODcwNDA5CUlOVEVSRVNUIFJBVEUgRElGRkVSRU5USUFMUyBUT08gU01BTEwsIEJBTktFUiBTQVlTIFN3aXNzIE5hdGlvbmFsIEJhbmsgUHJlc2lkZW50IFBpZXJyZSBMYW5ndWV0aW4gc2FpZCBhIHdpZGVyIGludGVyZXN0IHJhdGUgZGlmZmVyZW50aWFsIGJldHdlZW4gdGhlIGRvbGxhciBhbmQgc3Ryb25nZXIgY3VycmVuY2llcyB3YXMgbmVlZGVkIHRvIGJyYWtlIHRoZSBkb2xsYXIncyBmYWxsLiAgICAgQXQgYSBuZXdzIGNvbmZlcmVuY2UsIGhlIHNhaWQgSmFwYW4gYW5kIFdlc3QgR2VybWFueSBjb3VsZCB0cnkgdG8gc3RpbXVsYXRlIHRoZWlyIGVjb25vbWllcyBmdXJ0aGVyIGJ5IGV4cGFuZGluZyBtb25leSBzdXBwbHksIGJ1dCBoZSBhZGRlZCAiSSdtIG5vdCBzbyBzdXJlIGl0IHdvdWxkIGJlIGRlc2lyYWJsZSBpZiBtb25ldGFyeSBwb2xpY3kgYmVjYW1lIG1vcmUgZXhwYW5zaXZlLiAgICAgIkJ1dCB3aGF0IHdvdWxkIGJlIHVzZWZ1bCBpcyBhIGdyZWF0ZXIgZGlmZmVyZW50aWFsIGluIGludGVyZXN0IHJhdGVzLCIgaGUgc2FpZC4gIFJFVVRFUiAzOwoxOTg3MDQwOQlJTlRFUk5BVElPTkFMIEFNRVJJQ0FOIDxIT01FPiBUTyBBQ1FVSVJFIENPUyBJbnRlcm5hdGlvbmFsIEFtZXJpY2FuIEhvbWVzIEluYyBzYWlkIGl0IGVudGVyZWQgaW50byBhIGNvbmRpdGlvbmFsIGNvbnRyYWN0IHRvIGFjcXVpcmUgdGhlIDxNYWlvbmUtSGlyc2NoYmVyZyBDb3MgSW5jPiBhbmQgYWZmaWxpYXRlZCBlbnRpdGxlcyBmb3IgMTkgbWxuIGRscnMuICAgICBJbnRlcm5hdGlvbmFsIEFtZXJpY2FuLCB3aG9zZSBzdG9jayB3YXMgaGFsdGVkIG9uIE5hc2RhcSBlYXJsaWVyLCBzYWlkIHRoZSBwdXJjaGFzZSBwcmljZSBpcyBwYXlhYmxlIDEyIG1sbiBkbHJzIGluIGNhc2ggYW5kIHRoZSBiYWxhbmNlIGluIGl0cyBvd24gY29tbW9uIHNoYXJlcy4gICAgIFNlbGxpbmcgc2hhcmVob2xkZXJzIG1heSBlYXJuIGFuIGFkZGl0aW9uYWwgYW1vdW50IHVwIHRvIGEgbWF4aW11bSBvZiBlaWdodCBtbG4gZGxycyBwYXlhYmxlIGluIGNhc2ggYmFzZWQgb24gdGhlIGZ1dHVyZSBwZXJmb3JtYW5jZSBvZiB0aGUgY29tcGFuaWVzIGFjcXVpcmVkIGR1cmluZyB0aGUgdGhyZWUgeWVhcnMgZW5kaW5nIE1hcmNoIDMxLCAxOTkwLCBJbnRlcm5hdGlvbmFsIHNhaWQuICAgICBUaGUgYWNxdWlzaXRpb24gaXMgc3ViamVjdCB0byBjZXJ0YWluIGNvbmRpdGlvbnMsIHN1Y2ggYXMgc2F0aXNmYWN0b3J5IHJlc3VsdHMgb2YgZHVlIGRpbGlnZW5jZSBpbnZlc3RpZ2F0aW9ucywgdGhlIGNvbXBhbnkgc2FpZC4gICAgICBSZXV0ZXIgMzsKMTk4NzA0MDkJSU5URVJOQVRJT05BTCBUSE9NU09OIFRPIFJFUE9SVCBJTiBVLlMuIEZVTkRTIDxJbnRlcm5hdGlvbmFsIFRob21zb24gT3JnYW5pc2F0aW9uIEx0ZD4gc2FpZCBpdCB3aWxsIHJlcG9ydCBmaW5hbmNpYWwgcmVzdWx0cyBpbiBVLlMuIGZ1bmRzIHJhdGhlciB0aGFuIHN0ZXJsaW5nLCBiZWdpbm5pbmcgZnJvbSBKYW4gMSwgMTk4Ny4gICAgIEl0IHNhaWQgdGhlIGNoYW5nZSB3aWxsIG5vdCBiZSBhcHBsaWVkIHJldHJvYWN0aXZlbHkgdG8gcHJpb3IgZmluYW5jaWFsIHBlcmlvZHMuICAgICBUaGUgY29tcGFueSBzYWlkIGFzIGEgcmVzdWx0IG9mIHJlY2VudCBpbnZlc3RtZW50cywgbW9zdCBvZiBpdHMgYXNzZXRzIG5vdyBhcmUgbG9jYXRlZCBpbiB0aGUgVW5pdGVkIFN0YXRlcy4gICAgICAgICAgICAgICBSZXV0ZXIgMzsKMTk4NzA0MDkJSVJUIFBST1BFUlRZIExBVU5DSEVTIERFQkVOVFVSRSBJTiBFVVJPTUFSS0VUIElSVCBQcm9wZXJ0eSBDbywgYSByZWFsIGVzdGF0ZSBpbnZlc3RtZW50IHRydXN0IGJhc2VkIGluIEF0bGFudGEsIEdlb3JnaWEsIGhhcyBsYXVuY2hlZCBhIDMwIG1sbiBkbHIgY29udmVydGlibGUgc3Vib3JkaW5hdGVkIGRlYmVudHVyZSBpbiB0aGUgRXVyb21hcmtldCwgYSBwYXJ0bmVyIG9mIENoYW5kbGVyIFBhcnRuZXJzaGlwIEx0ZCBzYWlkLiAgICAgVGhlIGlzc3VlIGlzIHVuaXF1ZSBpbiBzZXZlcmFsIHJlc3BlY3RzIGFuZCBpcyBvbmx5IG9uZSBvZiBhIGhhbmRmdWwgb2Ygc3VjaCBkZWFscyB0byBiZSBicm91Z2h0IHRvIHRoaXMgbWFya2V0LCBoZSBzYWlkLiAgICAgVW5saWtlIG1vc3QgZXVyb2JvbmRzLCB0aGUgaXNzdWUgd2lsbCBub3QgYmUgdW5kZXJ3cml0dGVuLiBJbnN0ZWFkLCBJUlQgbWFuZGF0ZWQgQ2hhbmRsZXIgUGFydG5lcnNoaXAgdG8gZmluZCBwb3RlbnRpYWwgaW52ZXN0b3JzIHdpdGggd2hvbSB0aGUgaXNzdWUgY2FuIGJlIHByZXBsYWNlZCBhbmQgdG8gdGhlbiBwbGFjZSBvbiBhICJiZXN0IGVmZm9ydHMiIGJhc2lzIHdoYXQgZXZlciBhbW91bnQgbWF5IG5vdCBiZSBzdWJzY3JpYmVkLiAgICAgQ2hhbmRsZXIgaXRzZWxmIHdhcyBzZXQgdXAgaW4gdGhlIElzbGUgb2YgSmVyc2V5IGluIHRoZSBtaWRkbGUgb2YgbGFzdCB5ZWFyIGFzIGEgcGFydG5lcnNoaXAsIHdob3NlIG1lbWJlcnMgaGF2ZSBiZWVuIGludm9sdmVkIGluIGZpbmFuY2lhbCBtYXJrZXRzLiAgICAgVGhlIGRlYWwgaGFzIHR3byBzcG9uc29ycyB3aG8gYXNzaXN0IGluIHRoZSBwbGFjZW1lbnQtLSBJbnRlcmFsbGlhbnogQmFuayBadXJpY2ggQUcgYW5kIE5pdmlzb24gQ2FudHJhZGUgTHRkLCBhIHNtYWxsIFUuSy4gVHJhZGluZyBmaXJtIHRoYXQgZm9ybWVybHkgd2FzIGJyb2tlciBSLiBOaXZpc29uIGFuZCBDby4gICAgIFRoZSBkZWJlbnR1cmVzIGFyZSBkdWUgSnVuZSAxLCAyMDAyIGFuZCBwYXkgYSBzZW1pLWFubnVhbCBjb3Vwb24gb2YgdHdvIHBjdCBhbmQgYXJlIHByaWNlZCBhdCBwYXIuIFRoZXkgY2FuIGJlIGNvbnZlcnRlZCBpbnRvIHNoYXJlcyBvZiB0aGUgY29tcGFueSdzIHN0b2NrIGF0IDIzLTEvMiBkbHJzIGEgc2hhcmUuICAgICBJUlQncyBzaGFyZXMgY2xvc2VkIGxhc3QgbmlnaHQgb24gdGhlIE5ldyBZb3JrIFN0b2NrIEV4Y2hhbmdlIGF0IDE5LTcvOC4gICAgIFRoZSBkZWJlbnR1cmVzIGNhbiBiZSByZWRlZW1lZCBhdCBwYXIgYXQgbWF0dXJpdHkgYW5kIGFyZSBjYWxsYWJsZSBhdCB0aGUgY29tcGFueSdzIG9wdGlvbiBhZnRlciB0aGUgZmlyc3QgdHdvIHllYXJzLiAgICAgT24gb3IgYWZ0ZXIgQXVndXN0IDE5ODkgdGhlIGNvbXBhbnkgY2FuIGNhbGwgaGFsZiB0aGUgZGViZW50dXJlcyBpZiB0aGUgc3RvY2sgdHJhZGVzIGZvciAzMCBkYXlzIGF0IDEyMyBwY3Qgb2YgdGhlIGNvbnZlcnNpb24gcHJpY2UgYW5kIGhhbGYgaWYgaXQgcmVhY2hlcyAxNDAgcGN0IG9mIHRoZSBjb252ZXJzaW9uIHByaWNlLCBOaXZpc29uIHNhaWQuICAgICBJbiBhZGRpdGlvbiwgaG9sZGVycyB3aWxsIGJlIGFibGUgdG8gc3VycmVuZGVyIGhhbGYgdGhlIGJvbmRzIGR1cmluZyBNYXkgMTk5MSBhdCAxMjMgcGN0IGZvciBhIHNlbWktYW5udWFsIHlpZWxkIG9mIDcuMDQzIHBjdCBhbmQgdGhlIG90aGVyIGhhbGYgaW4gTWF5IDE5OTMgYXQgMTQwIHBjdCwgZm9yIGEgeWllbGQgb2YgNy4zODMgcGN0LiAgICAgVGhlIHBheW1lbnQgZGF0ZSBpcyBKdW5lIDEsIDE5ODcuIFRoZSBkZWJlbnR1cmVzIHdpbGwgYmUgbGlzdGVkIGluIExvbmRvbiBhbmQgdGhlIGZlZXMgZm9yIHRoZSBkZWFsIHRvdGFsIDItMS80IHBjdC4gICAgIE5pdmlzb24gc2FpZCB0aGF0IHRoZSBkZWFsIGNvbnRhaW5zIGEgY29udmVuZW50IHdoaWNoIHN0YXRlcyB0aGF0IGlmIHRoZSBjb21wYW55J3MgZGVidCB0byBlcXVpdHkgcmF0aW8gZXhjZWVkcyB0d28gdG8gb25lIHRoZSBkZWJlbnR1cmVzIGNhbm5vdCBiZSBjb252ZXJ0ZWQgdW5sZXNzIHRoZSBjb21wYW55IG9idGFpbnMgYSBiYW5rIGd1YXJhbnRlZSBvciBhIGxldHRlciBvZiBjcmVkaXQuICAgICBOaXZpc29uIHNhaWQgSVJUJ3MgZGVidCB0byBlcXVpdHkgcmF0aW8gY3VycmVudGx5IGlzIGxlc3MgdGhhbiBvbmUgdG8gb25lLiAgICAgVGhlIENoYW5kbGVyIHBhcnRuZXIgc2FpZCB0aGF0IHRoaXMgdHlwZSBvZiBkZWFsIGdpdmVzIHRoZSBib3Jyb3dlciBmdW5kcyB0aGF0IGFyZSBsZXNzIGNvc3RseSB0aGFuIGlmIGl0IGhhZCBkb25lIGFuIGlzc3VlIGluIHRoZSBVLlMuIERvbWVzdGljIG1hcmtldC4gIFJFVVRFUiAzOwoxOTg3MDQwOQlJVEFMSUFOIFRSRUFTVVJZIEJJTEwgT0ZGRVIgTUVFVFMgTUlYRUQgREVNQU5EIE1hcmtldCByZXNwb25zZSB0byB0aGUgSXRhbGlhbiBUcmVhc3VyeSdzIDMsMDAwIGJpbGxpb24gbGlyZSBvZmZlciBvZiBzaG9ydC10ZXJtIGJpbGxzIChCT1RzKSB3YXMgbWl4ZWQsIHdpdGggc2l4IG1vbnRoIHBhcGVyIG92ZXJzdWJzY3JpYmVkIGJ1dCAxMi1tb250aCBiaWxscyBsaXR0bGUgaW4gZGVtYW5kLCBCYW5rIG9mIEl0YWx5IGZpZ3VyZXMgc2hvdy4gICAgIFJhdGVzIHdlcmUgdW5jaGFuZ2VkIG9uIHRob3NlIGluZGljYXRlZCBhdCB0aGUgdGltZSB0aGUgb2ZmZXIgd2FzIGFubm91bmNlZCBvbiBBcHJpbCA0LiAgICAgVGhlIG1hcmtldCB3YXMgYXNzaWduZWQgYWxsIHRoZSAxLDUwMCBiaWxsaW9uIGxpcmUgd29ydGggb2Ygc2l4LW1vbnRoIGJpbGxzIG9uIG9mZmVyIGFmdGVyIHJlcXVlc3RpbmcgYSB0b3RhbCBvZiAxLDY2MCBiaWxsaW9uLiBFZmZlY3RpdmUgbmV0IGFubnVhbGl6ZWQgY29tcG91bmQgeWllbGQgb24gdGhlIGJpbGxzIGlzIDkuMTkgcGN0LCBhZ2FpbnN0IDkuMjQgcGN0IGF0IHRoZSBlbmQtTWFyY2ggYXVjdGlvbi4gICAgIE9mIHRoZSAxLDUwMCBiaWxsaW9uIGxpcmUgb2YgMTItbW9udGggcGFwZXIgb2ZmZXJlZCwgb3BlcmF0b3JzIHJlcXVlc3RlZCBhbmQgd2VyZSBhc3NpZ25lZCA5MTEuOTc1IGJpbGxpb24gbGlyZSBhdCBhIG5ldCBhbm51YWxpemVkIGNvbXBvdW5kIHJhdGUgb2YgOS4wMiBwY3QuICAgICBUaGUgQmFuayBvZiBJdGFseSB0b29rIHVwIHRoZSByZW1haW5pbmcgNTg4LjAyNSBiaWxsaW9uIGxpcmUgb2YgMTItbW9udGggcGFwZXIuICAgICBUaGUgYmlsbHMgcmVwbGFjZSBtYXR1cmluZyBwYXBlciB3b3J0aCAyLDQ4NSBiaWxsaW9uIGxpcmUgb2Ygd2hpY2ggMSw5ODUgYmlsbGlvbiB3YXMgaW4gdGhlIGhhbmRzIG9mIG1hcmtldCBvcGVyYXRvcnMgYW5kIHRoZSByZW1haW5kZXIgd2l0aCB0aGUgQmFuayBvZiBJdGFseS4gIFJldXRlciAzOwoxOTg3MDQwOQlKQUNPUiA8SkNPUj4gVE8gQlVZIFRXTyBERU5WRVIgUkFESU8gU1RBVElPTlMgSmFjb3IgQ29tbXVuaWNhdGlvbnMgSW5jIHNhaWQgaXQgYWdyZWVkIHRvIGJ1eSB0d28gRGVudmVyIHJhZGlvIHN0YXRpb25zIGZyb20gQS5ILiBCZWxvIENvcnAgPEJMQz4gZm9yIDI0IG1sbiBkbHJzIGluIGNhc2ggYW5kIG5vdGVzLiAgICAgSmFjb3Igc2FpZCB0aGUgdHdvIHN0YXRpb25zIGFyZSBLT0EtQU0gYW5kIEtPQVEtRk0uICAgICBUaGUgYWNxdWlzaXRpb25zIG11c3QgYmUgYXBwcm92ZWQgYnkgdGhlIEZlZGVyYWwgQ29tbXVuaWNhdGlvbnMgQ29tbWlzc2lvbiwgSmFjb3IgYWRkZWQuICBSZXV0ZXIgMzsKMTk4NzA0MDkJSkFNRVNXQVkgPEpNWT4gTUFSQ0ggU0FMRVMgVVAgMTUgUENUIEphbWVzd2F5IENvcnAgc2FpZCBzYWxlcyBmb3IgdGhlIGZpdmUgd2Vla3MgZW5kZWQgQXByaWwgRm91ciB3ZXJlIHVwIDE1IHBjdCB0byA1NC4xIG1sbiBkbHJzIGZyb20gNDcuMSBtbG4gZGxycyBhIHllYXIgYmVmb3JlLCB3aXRoIHNhbWUtc3RvcmUgc2FsZXMgdXAgZm91ciBwY3QuICAgICBUaGUgY29tcGFueSBzYWlkIHNhbGVzIGZvciB0aGUgZmlyc3QgbmluZSB3ZWVrcyBvZiBpdHMgZmlzY2FsIHllYXIgd2VyZSB1cCAxNCBwY3QgdG8gODUuOCBtbG4gZGxycyBmcm9tIDc1LjEgbWxuIGRscnMgYSB5ZWFyIGJlZm9yZSwgd2l0aCBzYW1lLXN0b3JlIHNhbGVzIHVwIGZvdXIgcGN0LiAgICAgSXQgbm90ZWQgdGhhdCBFYXN0ZXIgc2FsZXMgd2lsbCBmYWxsIGluIEFwcmlsIHRoaXMgeWVhciwgaW5zdGVhZCBvZiBNYXJjaCBhcyBsYXN0IHllYXIuICBSZXV0ZXIgMzsKMTk4NzA0MDkJSkFQQU4gQlVTSU5FU1MgTEVBREVSUyBTQVkgRy03IEFDQ09SRCBJUyBXT1JSWUlORyBUaGUgbGVhZGVycyBvZiB0d28gb2YgSmFwYW4ncyB0b3AgYnVzaW5lc3MgZ3JvdXBzIHNhaWQgaW4gc2VwYXJhdGUgc3RhdGVtZW50cyB0aGUgR3JvdXAgb2YgU2V2ZW4gKEctNykgYWNjb3JkIHJlYWNoZWQgaW4gV2FzaGluZ3RvbiB5ZXN0ZXJkYXkgaXMgb2YgZGVlcCBjb25jZXJuIHRvIEphcGFuIGJlY2F1c2UgaXQgc2hvd3MgdGhlIG1ham9yIGluZHVzdHJpYWwgbmF0aW9ucyByZWdhcmQgdGhlIHllbidzIGN1cnJlbnQgbGV2ZWwgYXMgYXBwcm9wcmlhdGUuICAgICBFaXNoaXJvIFNhaXRvLCBjaGFpcm1hbiBvZiB0aGUgRmVkZXJhdGlvbiBvZiBFY29ub21pYyBPcmdhbml6YXRpb25zIChLZWlkYW5yZW4pLCBzYWlkIHRoZSB5ZW4ncyBwcmVzZW50IHJhdGUgaXMgd2VsbCBhYm92ZSBhZGVxdWF0ZSBsZXZlbHMuIEhlIGRpZCBub3QgZWxhYm9yYXRlLiAgICAgVGFrYXNoaSBJc2hpaGFyYSwgY2hhaXJtYW4gb2YgdGhlIEphcGFuIENvbW1pdHRlZSBmb3IgRWNvbm9taWMgRGV2ZWxvcG1lbnQsIHNhaWQgdGhlIGFjY29yZCB3aWxsIG5vdCBwcmV2ZW50IHRoZSB5ZW4gZnJvbSByaXNpbmcgZnVydGhlci4gICAgICJXZSBkbyBub3QgdW5kZXJzdGFuZCB3aHkgdGhlIEctNyBhcHByb3ZlZCBwcmVzZW50IHJhdGVzIGFzIHRoZSB5ZW4gaGFzIHJpc2VuIGV4Y2Vzc2l2ZWx5IHNpbmNlIHRoZSBQYXJpcyBhY2NvcmQsIiBJc2hpaGFyYSBzYWlkLiAgICAgRy03IG1lbWJlcnMgQnJpdGFpbiwgQ2FuYWRhLCBGcmFuY2UsIEl0YWx5LCBKYXBhbiwgdGhlIFUuUy4gQW5kIFdlc3QgR2VybWFueSBzYWlkIGluIGEgc3RhdGVtZW50IHRoZXkgY29uc2lkZXIgdGhlaXIgY3VycmVuY2llcyBhcmUgbm93IHdpdGhpbiByYW5nZXMgYnJvYWRseSBjb25zaXN0ZW50IHdpdGggZWNvbm9taWMgZnVuZGFtZW50YWxzLiAgICAgU2FpdG8gY2FsbGVkIG9uIGVhY2ggRy03IG1lbWJlciBuYXRpb24gdG8gcHJlcGFyZSB0byBpbnRlcnZlbmUgaW4gdGhlIG1hcmtldCBzdHJvbmdseSBlbm91Z2ggdG8gZW5zdXJlIGV4Y2hhbmdlIHJhdGVzIGFyZSBzdGFiaWxpc2VkIGF0IGFwcHJvcHJpYXRlIGxldmVscy4gIFJFVVRFUiAzOwoxOTg3MDQwOQlKQVBBTiBCVVNJTkVTUyBMRUFERVJTIFNBWSBHLTcgQUNDT1JEIFdPUlJZSU5HIFRoZSBsZWFkZXJzIG9mIHR3byBvZiBKYXBhbidzIHRvcCBidXNpbmVzcyBncm91cHMgc2FpZCBpbiBzZXBhcmF0ZSBzdGF0ZW1lbnRzIHRoZSBHcm91cCBvZiBTZXZlbiAoRy03KSBhY2NvcmQgcmVhY2hlZCBpbiBXYXNoaW5ndG9uIHllc3RlcmRheSBpcyBvZiBkZWVwIGNvbmNlcm4gdG8gSmFwYW4gYmVjYXVzZSBpdCBzaG93cyB0aGUgbWFqb3IgaW5kdXN0cmlhbCBuYXRpb25zIHJlZ2FyZCB0aGUgeWVuJ3MgY3VycmVudCBsZXZlbCBhcyBhcHByb3ByaWF0ZS4gICAgIEVpc2hpcm8gU2FpdG8sIGNoYWlybWFuIG9mIHRoZSBGZWRlcmF0aW9uIG9mIEVjb25vbWljIE9yZ2FuaXphdGlvbnMgKEtlaWRhbnJlbiksIHNhaWQgdGhlIHllbidzIHByZXNlbnQgcmF0ZSBpcyB3ZWxsIGFib3ZlIGFkZXF1YXRlIGxldmVscy4gSGUgZGlkIG5vdCBlbGFib3JhdGUuICAgICBUYWthc2hpIElzaGloYXJhLCBjaGFpcm1hbiBvZiB0aGUgSmFwYW4gQ29tbWl0dGVlIGZvciBFY29ub21pYyBEZXZlbG9wbWVudCwgc2FpZCB0aGUgYWNjb3JkIHdpbGwgbm90IHByZXZlbnQgdGhlIHllbiBmcm9tIHJpc2luZyBmdXJ0aGVyLiAgICAgIldlIGRvIG5vdCB1bmRlcnN0YW5kIHdoeSB0aGUgRy03IGFwcHJvdmVkIHByZXNlbnQgcmF0ZXMgYXMgdGhlIHllbiBoYXMgcmlzZW4gZXhjZXNzaXZlbHkgc2luY2UgdGhlIFBhcmlzIGFjY29yZCwiIElzaGloYXJhIHNhaWQuICBSZXV0ZXIgMzsKMTk4NzA0MDkJSkFQQU4gQlVZUyA1LDAwMCBUT05ORVMgQ0FOQURJQU4gUkFQRVNFRUQgSmFwYW4gYm91Z2h0IDUsMDAwIHRvbm5lcyBDYW5hZGlhbiByYXBlc2VlZCBvdmVybmlnaHQgYXQgYW4gdW5kaXNjbG9zZWQgcHJpY2UgZm9yIE1heSBzaGlwbWVudCwgdHJhZGUgc291cmNlcyBzYWlkLiAgUmV1dGVyIDM7CjE5ODcwNDA5CUpBUEFOIERFVkVMT1BNRU5UIEJBTksgSVNTVUVTIDE1MCBNTE4gRExSIEVVUk9CT05EIFRoZSBKYXBhbiBEZXZlbG9wbWVudCBCYW5rIGlzIGlzc3VpbmcgYSAxNTAgbWxuIGRsciBldXJvYm9uZCBkdWUgTWF5IDIwLCAxOTk0IHBheWluZyBlaWdodCBwY3QgYW5kIHByaWNlZCBhdCAxMDEtMS84IHBjdCwgbGVhZCBtYW5hZ2VyIEJhbmsgb2YgVG9reW8gSW50ZXJuYXRpb25hbCBMdGQgc2FpZC4gICAgIFRoZSBub24tY2FsbGFibGUgYm9uZCBpcyBndWFyYW50ZWVkIGJ5IEphcGFuIGFuZCBpcyBhdmFpbGFibGUgaW4gZGVub21pbmF0aW9ucyBvZiA1LDAwMCBkbHJzLiAgICAgVGhlIHNlbGxpbmcgY29uY2Vzc2lvbiBpcyAxLTEvNCBwY3Qgd2hpbGUgbWFuYWdlbWVudCBhbmQgdW5kZXJ3cml0aW5nIGNvbWJpbmVkIHBheXMgNS84IHBjdC4gICAgIFRoZSBwYXltZW50IGRhdGUgaXMgTWF5IDIwLiBMaXN0aW5nIHdpbGwgYmUgaW4gTG9uZG9uLiAgUkVVVEVSIDM7CjE5ODcwNDA5CUpBUEFOIEhBUyBOTyBQTEFOUyBUTyBDVVQgRElTQ09VTlQgUkFURSBCYW5rIG9mIEphcGFuIHNvdXJjZXMgc2FpZCB0aGUgYmFuayBoYXMgbm8gcGxhbnMgdG8gY3V0IGl0cyBkaXNjb3VudCByYXRlLiAgICAgVGhleSB0b2xkIHJlcG9ydGVycyB0aGF0IHRoZXJlIHdhcyBubyBwcmVzc3VyZSBvbiBKYXBhbiBkdXJpbmcgdGhlIEdyb3VwIG9mIFNldmVuIChHLTcpIG1lZXRpbmcgaGVyZSB5ZXN0ZXJkYXkgdG8gbG93ZXIgaXRzIGRpc2NvdW50IHJhdGUuIFRoZXkgYWRkZWQgdGhhdCB0aGV5IHRoZW1zZWx2ZXMgZG8gbm90IGZlZWwgYW55IG5lZWQgZm9yIGEgY3V0IGF0IGFsbC4gICAgIENoYW5jZWxsb3Igb2YgdGhlIEV4Y2hlcXVlciBOaWdlbCBMYXdzb24gdG9sZCByZXBvcnRlcnMgZWFybGllciB0b2RheSB0aGF0IHNvbWUgY291bnRyaWVzIC0gdGhvc2Ugd2l0aCBzdHJvbmcgY3VycmVuY2llcyAtIG1pZ2h0IGhhdmUgdG8gY3V0IGludGVyZXN0IHJhdGVzLiAgICAgVGhlIEJhbmsgb2YgSmFwYW4gc291cmNlcyBhbHNvIHNhaWQgdGhhdCBpdCB3YXMgdG9vIHNvb24gdG8gY2FsbCB0aGUgRy03IHBhY3QgYSBmYWlsdXJlLiAgICAgVGhlIGNlbnRyYWwgYmFuayBzb3VyY2VzIHdlcmUgY29tbWVudGluZyBvbiB0aGUgZG9sbGFyJ3MgcmVuZXdlZCB0dW1ibGUgaW4gTmV3IFlvcmsgYW5kIFRva3lvLCB3aGljaCB3YXMgc3BhcmtlZCBieSByZW1hcmtzIGJ5IFUuUy4gVHJlYXN1cnkgU2VjcmV0YXJ5IEphbWVzIEJha2VyIHRoYXQgdGhlIGRvbGxhcidzIGZhbGwgaGFkIGJlZW4gb3JkZXJseS4gICAgIFRoZXkgc2FpZCB0aGUgbWFya2V0IG11c3QgaGF2ZSBtaXNpbnRlcnByZXRlZCBCYWtlcidzIGNvbW1lbnRzIGJlY2F1c2UgaGUgd2FzIHJlZmVycmluZyB0byB0aGUgZG9sbGFyJ3MgZmFsbCBzaW5jZSB0aGUgUGxhemEgYWdyZWVtZW50IGluIFNlcHRlbWJlciAxOTg1LCBvdmVyIGEgbG9uZy10aW1lIHNwYW4sIG5vdCB0aGUgY3VycmVuY3kncyByZWNlbnQgbW92ZW1lbnRzLiAgICAgVGhleSBhZGRlZCB0aGF0IHRoZSBmb3JlaWduIGV4Y2hhbmdlIG1hcmtlc3Qgc2VlbSB0byBzZWl6ZSBvbiBhbnl0aGluZyB0byB1c2UgYXMgYW4gZXhjdXNlIHRvIGRyaXZlIHRoZSBkb2xsYXIgb25lIHdheSBvciB0aGUgb3RoZXIuICAgICBUaGUgQmFuayBvZiBKYXBhbiBzb3VyY2VzIHNhaWQgdGhlIFUuUy4gSXMgcHV0dGluZyBtb3JlIHdlaWdodCBvbiB0aGUgZG9sbGFyL3llbiByYXRlIGluIHRlcm1zIG9mIGp1ZGdpbmcgbWFya2V0IHN0YWJpbGl0eSB0aGFuIG9uIG90aGVyIGN1cnJlbmNpZXMuICAgICBUaHJvdWdob3V0IHRoZSBHLTcgbWVldGluZywgSmFwYW4gcG9pbnRlZCB0byB0aGUgZGFuZ2VycyB0aGF0IHdvdWxkIGFyaXNlIGZyb20gYSBmdXJ0aGVyIGRvbGxhciBmYWxsIGJlY2F1c2UgaXQgd291bGQgcmVkdWNlIHRoZSBmbG93IG9mIEphcGFuZXNlIGNhcGl0YWwgdG8gdGhlIFUuUy4sIEh1cnRpbmcgdGhlIFUuUy4gQW5kIHdvcmxkIGVjb25vbWllcywgdGhleSBzYWlkLiAgICAgSW4gRmVicnVhcnkgYW5kIGluIE1hcmNoIG9mIHRoaXMgeWVhciwgSmFwYW5lc2UgaW52ZXN0b3JzIHJlZHVjZWQgdGhlaXIgcHVyY2hhc2VzIG9mIFUuUy4gVHJlYXN1cnkgYm9uZHMsIHRoZSBzb3VyY2VzIHNhaWQuICAgICBFYWNoIGNvdW50cnkgaW4gdGhlIEctNyAtIEJyaXRhaW4sIENhbmFkYSwgRnJhbmNlLCBJdGFseSwgSmFwYW4sIHRoZSBVLlMuIEFuZCBXZXN0IEdlcm1hbnkgLSBoYXMgYSBkaWZmZXJlbnQgdmlldyBhYm91dCBjdXJyZW5jeSBzdGFiaWxpdHksIHRoZSBCYW5rIG9mIEphcGFuIHNvdXJjZXMgc2FpZC4gICAgIFRoaXMgaXMgYmVjYXVzZSB0aGUgb3ZlcmFsbCBmb3JlaWduIGV4Y2hhbmdlIG1hcmtldCBpcyBhIHRyaWFuZ2xlIG9mIGRvbGxhci95ZW4sIEV1cm9wZWFuIGN1cnJlbmNpZXMveWVuIGFuZCBkb2xsYXIvRXVyb3BlYW4gY3VycmVuY2llcy4gICAgIEF0IHRoZSB0aW1lIG9mIHRoZSBMb3V2cmUgYWdyZWVtZW50LCBFdXJvcGVhbiBjb3VudHJpZXMgZGlkIG5vdCB3YW50IHRoZSB5ZW4gdG8gd2Vha2VuIGFnYWluc3QgdGhlaXIgY3VycmVuY2llcyBzbyB0aGV5IGRpZCBub3Qgb2JqZWN0IHRvIHRoZSB5ZW4gc3RyZW5ndGhlbmluZywgdGhleSBzYWlkLiAgUkVVVEVSIDM7CjE5ODcwNDA5CUpPSE5TT04gTUFUVEhFWSdTIFBMQVRJTlVNIEdST1VQIFBSSUNFUyBKb2huc29uIE1hdHRoZXkgdG9kYXkgaXNzdWVkIHRoZSBmb2xsb3dpbmcgUGxhdGludW0gZ3JvdXAgYmFzZSBwcmljZXMgKHVuZmFicmljYXRlZCksIGFsbCBVLlMuIERscnMgcGVyIHRyb3kgb3VuY2UuICBQcmV2aW91cyBwcmljZXMgaW4gcGFyZW50aGVzZXMuICBQTEFUSU5VTSAgLSAgIDU2MiAgICg1NjcpICBQQUxMQURJVU0gLSAgIDEzMCAgICgxMzApICBJUklESVVNICAgLSAgIDQwMCAgICg0MDApICBSSE9ESVVNICAgICAxLDIzMCAoMSwyMzApICBSVVRIRU5JVU0gLSAgICA4MCAgICAoODApIDM7CjE5ODcwNDA5CUpQIElORFVTVFJJRVMgPEpQST4gQ09ORklSTVMgUFJPUE9TQUwgSlAgSW5kdXN0cmllcyBJbmMgY29uZmlybWVkIHRoZSBhbm5vdW5jZW1lbnQgYnkgQ2xldml0ZSBJbmR1c3RyaWVzIEluYyA8Q0xFVj4gdGhhdCBKUCBJbmR1c3RyaWVzIGhhcyBzdWJtaXR0ZWQgYSBwcm9wb3NhbCB0byBDbGV2aXRlIGZvciB0aGUgYWNxdWlzaXRpb24gb2YgdGhlIGNvbXBhbnkgYXQgMTMuNTAgZGxycyBwZXIgc2hhcmUgaW4gY2FzaC4gICAgIEpvaG4gUHNhcm91dGhha2lzLCBjaGFpcm1hbiBhbmQgcHJlc2lkZW50IG9mIEpQIEluZHVzdHJpZXMsIHNhaWQgdGhhdCB0aGUgY29tcGFueSBob3BlcyB0byBwcm9tcHRseSBuZWdvdGlhdGUgYW4gYWdyZWVtZW50IHdpdGggdGhlIHNwZWNpYWwgY29tbWl0dGVlIG9mIENsZXZpdGUncyBib2FyZC4gICAgIEluIEZlYnJ1YXJ5LCBKUCBJbmR1c3RyaWVzIHNhaWQgaXQgcHVyY2hhc2VkIENsZXZpdGUncyBlbmdpbmUgcGFydHMgZGl2aXNpb24uICAgICBKUCBJbmR1c3RyaWVzIHNhaWQgaXQgaXMgbm90IGF3YXJlIG9mIGFueSBvdGhlciByZWFzb24gZm9yIGFjdGl2aXR5IGluIGl0cyBzdG9jay4gIFJldXRlciAzOwoxOTg3MDQwOQlLIE1BUlQgPEtNPiBNQVJDSCBTQUxFUyBTSE9XIElOQ1JFQVNFIEsgbWFydCBDb3JwIHNhaWQgaXRzIHNhbGVzIGZvciB0aGUgZml2ZSB3ZWVrcyBlbmRlZCBBcHJpbCBPbmUgcm9zZSA0LjYgcGN0IHRvIDIuMTggYmlsbGlvbiBkbHJzIGZyb20gMi4wOCBiaWxsaW9uIGRscnMgYSB5ZWFyIGVhcmxpZXIuIE9uIGEgY29tcGFyYWJsZSBzdG9yZSBiYXNpcywgc2FsZXMgcm9zZSBvbmUtdGVudGggb2Ygb25lIHBjdC4gICAgIEl0IHNhaWQgeWVhci10by1kYXRlIHNhbGVzIGluY3JlYXNlZCA3LjkgcGN0IHRvIDMuNjQgYmlsbGlvbiBkbHJzIGZyb20gMy4zNyBiaWxsaW9uIGRscnMgaW4gdGhlIHNhbWUgMTk4NiBwZXJpb2QuIE9uIGEgY29tcGFyYWJsZSBzdG9yZSBiYXNpcywgdGhlIGluY3JlYXNlIHdhcyAzLjIgcGN0LiAgUmV1dGVyIDM7CjE5ODcwNDA5CUsgTUFSVCA8S00+IE9QRU5TIEJBTksgQlJBTkNIRVMgSU4gU1RPUkVTIEsgTWFydCBDb3JwIHNhaWQgaXQgd2FzIG9wZW5pbmcgYnJhbmNoIG9mZmljZXMgb2YgPEZpcnN0IE5hdGlvbndpZGUgQmFuaz4gaW4gMjEgb2YgaXRzIHN0b3JlcyBpbiBGbG9yaWRhLiAgICAgVGhlIGNvbXBhbnkgc2FpZCB0aGlzIGJyaW5ncyB0byA1NyB0aGUgbnVtYmVyIG9mIGJhbmsgYnJhbmNoLCB3aGljaCBhcmUgcGFydCBvZiB0aGUgTmF0aW9ud2lkZSBOZXR3b3JrLCBhbiBhbGxpYW5jZSBvZiA0MCBpbmRlcGVuZGVudCBsb2NhbGx5IG1hbmFnZWQgZmluYW5jaWFsIGluc3RpdHV0aW9ucywgbG9jYXRpb25zIGluIEZsb3JpZGEuICBSZXV0ZXIgMzsKMTk4NzA0MDkJS0FQT0sgQ09SUCA8S1BLPiBDVVJFUyBURUNITklDQUwgREVGQVVMVFMgS2Fwb2sgQ29ycCBzYWlkIGl0IGhhcyBjdXJlZCB0ZWNobmljYWwgZGVmYXVsdHMgb24gbGFvbnMgZnJvbSBTb3V0aGVhc3QgQmFua2luZyBDb3JwIDxTVEI+IGFuZCBNdXJyYXkgU3RlaW5mZWxkIGFuZCBoYXMgbmVnb3RpYXRlZCBleHRlbnNpb25zIG9mIGJvdGggbG9hbnMuICAgICBUaGUgY29tcGFueSBhbHNvIHNhaWQgaXQgaGFzIGFycmFuZ2VkIGEgb25lIG1sbiBkbHIgbG9hbiBzZWN1cmVkIGJ5IGl0cyBGb3J0IExhdWRlcmRhbGUsIEZsYS4sIHByb3BlcnR5IGZyb20gUmVwdWJsaWMgQmFuayBmb3IgU2F2aW5ncyBvZiBKYWNrc29uLCBNaXNzLiwgYW5kIGhhcyBzb2xkIGl0cyBQZXRlciBQYW4gUmVzdGF1cmFudCBpbiBVcmJhbmEsIE1kLiwgZm9yIDEsMTAwLDAwMCBkbHJzLiAgUmV1dGVyIDM7CjE5ODcwNDA5CUtVUlotS0FTQ0ggVVBTIFNUQUtFIElOIENPTVBPTkVOVCBURUNIIDxDVEVDPiBLdXJ6LUthc2NoIEluYywgYSBEYXl0b24gdGhlcm1vc2V0IG1vbGRpbmcgbWFrZXIsIHRvbGQgdGhlIFNlY3VyaXRpZXMgYW5kIEV4Y2hhbmdlIENvbW1pc3Npb24gaXQgaGFkIGluY3JlYXNlZCBpdHMgaG9sZGluZ3MgaW4gQ29tcG9uZW50IFRlY2hub2xvZ3kgQ29ycCBieSB0d28gcGN0LCB0byA5LjMgcGN0LiAgICAgSXQgc2FpZCBpdCBib3VnaHQgdGhlIDM5LDAwMCBzaGFyZXMgb2Ygc3RvY2sgYXQgNS4zMC02Ljg3NSBkbHJzIGEgc2hhcmUgZm9yIGludmVzdG1lbnQgcHVycG9zZXMuICBSZXV0ZXIgMzsKMTk4NzA0MDkJTEEgTEFORCA8TExYPixEVSBQT05UIDxERD5HRVQgRVhQTE9SQVRJT04gVFJBQ1RTIExvdWlzaWFuYSBMYW5kIGFuZCBFeHBsb3JhdGlvbiBDbyBzYWlkIGl0LCBEdSBQb250IENvJ3MgQ29ub2NvIEluYyBzdWJzaWRpYXJ5IGFuZCA8T3JhbmplLU5hc3NhdSBFbmVyZ2llIEIuVi4+IGhhdmUgYmVlbiBvZmZlcmVkIGZvdXIgZXhwbG9yYXRpb24gYmxvY2tzIG9mZnNob3JlIFRoZSBOZXRoZXJsYW5kcy4gICAgIExvdWlzaWFuYSBMYW5kIHNhaWQgQmxvY2tzIFE0YSwgRTEyYyBhbmQgRTE1YiB3ZXJlIG9mZmVyZWQgdG8gdGhlIGdyb3VwIGluIHdoaWNoIENvbm9jbyBoYXMgYSA2Ny41IHBjdCBpbnRlcmVzdCwgTG91aXNpYW5hIExhbmQgMjAgcGN0IGFuZCBPcmFuZ2UtTmFzc2F1IDEyLjUgcGN0LCB3aGlsZSB0aGlzIGdyb3VwIGFsb25nIHdpdGggYSBjb25zb3J0aXVtIGhlYWRlZCBieSBQZW5uem9pbCBDbyA8UFpMPiB3ZXJlIG9mZmVyZWQgQmxvY2sgUTVjLiBUaGUgb2ZmZXJzIHdlcmUgdGhlIHJlc3VsdCBvZiBhcHBsaWNhdGlvbnMgc3VibWl0dGVkIHRvIHRoZSBNaW5pc3RyeSBvZiBFY29ub21pYyBBZmZhaXJzIGZvciB0aGUgTmV0aGVybGFuZHMgU2l4dGggT2Zmc2hvcmUgTGljZW5zaW5nIFJvdW5kLiAgICAgTG91aXNpYW5hIExhbmQgc2FpZCB0aGUgQ29ub2NvIGdyb3VwIGludGVuZHMgdG8gcHJvdmlkZSBhIGZvcm1hbCBhY2NlcHRhbmNlIG9mIHRoZSBibG9ja3Mgd2l0aCBwbGFucyB0byBzdGFydCBleHBsb3JhdGlvbiB0aGlzIHllYXIuICAgICBUaGUgY29tcGFueSBhbHNvIHNhaWQgdGhlIHR3byBRIGJsb2NrcyBpbW1lZGlhdGVseSBvZmZzZXQgb3RoZXIgb2Zmc2hvcmUgYmxvY2tzIG9uIHdoaWNoIGh5ZHJvY2FyYm9ucyBoYXZlIGJlZW4gZm91bmQgaW4gY29tbWVyY2lhbCBxdWFudGl0aWVzLiAgUmV1dGVyIDM7CjE5ODcwNDA5CUxBV1NPTiBTQVlTIFNPTUUgQ09VTlRSSUVTIENPVUxEIENVVCBSQVRFUyBOaWdlbCBMYXdzb24sIEJyaXRhaW4ncyBDaGFuY2VsbG9yIG9mIHRoZSBFeGNoZXF1ZXIsIHNhaWQgc29tZSBjb3VudHJpZXMgbWF5IG5lZWQgdG8gY3V0IGludGVyZXN0IHJhdGVzIHdpdGggdGhlIGFpbSBvZiBtYWludGFpbmluZyBleGNoYW5nZSByYXRlIHN0YWJpbGl0eS4gICAgIFNwZWFraW5nIHRvIGpvdXJuYWxpc3RzIG9uZSBkYXkgYWZ0ZXIgdGhlIEdyb3VwIG9mIFNldmVuIGNvdW50cmllcyByZWFmZmlybWVkIGdvYWxzIHNldCBpbiBQYXJpcyBzaXggd2Vla3MgYWdvLCBoZSBzYWlkIGNlbnRyYWwgYmFua3Mgd291bGQgY29udGludWUgdG8gaW50ZXJ2ZW5lICJhcyBhbmQgd2hlbiBuZWNlc3NhcnkuIiAgICAgSGUgc2FpZCB0aGUgRy03IGNvdW50cmllcyB3ZXJlIGNvbmNlcm5lZCB0aGF0IEphcGFuIGRvIG1vcmUgdG8gc3RpbXVsYXRlIGRvbWVzdGljIGRlbWFuZCBhbmQgd2VsY29tZWQgbWVhc3VyZXMgb3V0bGluZWQgYnkgSmFwYW5lc2UgRmluYW5jZSBNaW5pc3RlciBLaWljaGkgTWl5YXphd2EgeWVzdGVyZGF5LiAgICAgTGF3c29uIHNhaWQgaGUgd2FzIHN0aWxsIHdvcnJpZWQgYWJvdXQgIHRoZSByaXNrIG9mIGEgc2ltdWx0YW5lb3VzIHJlY2Vzc2lvbiBpbiB0aGUgVW5pdGVkIFN0YXRlcywgSmFwYW4gYW5kIFdlc3QgR2VybWFueSwgdGhvdWdoIGxlc3Mgc28gdGhhbiB3aGVuIGhlIGdhdmUgaGlzIE1hcmNoIDE3IGJ1ZGdldCBzcGVlY2ggdG8gdGhlIEJyaXRpc2ggUGFybGlhbWVudC4gICAgICJJZiBhbnl0aGluZyBJJ20gYSBsaXR0bGUgYml0IGxlc3MgY29uY2VybmVkLCBidXQgdGhlcmUgaXMgc3RpbGwgYSByaXNrLCIgaGUgc2FpZC4gICAgIEFza2VkIGlmIHRoZSBVbml0ZWQgU3RhdGVzIHNob3VsZCBjb25zaWRlciBpbmNyZWFzaW5nIGludGVyZXN0IHJhdGVzIHRvIHN1cHBvcnQgdGhlIGRvbGxhciwgaGUgc2FpZCwgIklmIHRoZXJlIGlzIGEgbmVlZCBmb3IgY2hhbmdlcyBpbiByZWxhdGl2ZSBpbnRlcmVzdCByYXRlcywgaXQgZG9lc24ndCBuZWVkIHRvIGJlIGEgcmlzZSBpbiBpbnRlcmVzdCByYXRlcyBpbiB0aGUgVW5pdGVkIFN0YXRlcy4iICAgICBMYXdzb24gc2FpZCB0aGVyZSB3YXMgc29tZSBjb25jZXJuIGV4cHJlc3NlZCBpbiB5ZXN0ZXJkYXkncyBtZWV0aW5ncyBhdCB0aGUgc2xvdyBwcm9ncmVzcyB0aGUgVW5pdGVkIFN0YXRlcyBoYWQgbWFkZSBpbiByZWR1Y2luZyBpdHMgYnVkZ2V0IGRlZmljaXQuICAgICAiV2UgYmVsaWV2ZSB0aGVyZSB3aWxsIGJlIHNvbWUgd29ydGh3aGlsZSBwcm9ncmVzcyBpbiByZWR1Y2luZyB0aGUgZGVmaWNpdCB0aGlzIHllYXIuIFRoZSBpbXBvcnRhbnQgdGhpbmcgaXMgdGhhdCBpdCBjb250aW51ZSB5ZWFyIGFmdGVyIHllYXIsIiBMYXdzb24gc2FpZC4gICAgIFRoZSBGZWJydWFyeSAyMiBMb3V2cmUgYWNjb3JkIGNhbGxlZCBmb3IgZWZmb3J0cyB0byBzdGFiaWxpemUgY3VycmVuY2llcyBhdCB0aGVuLWN1cnJlbnQgZXhjaGFuZ2UgcmF0ZXMuIEluIHRoZSBzaXggd2Vla3MgdGhhdCBmb2xsb3dlZCB0aGUgSmFwYW5lc2UgeWVuIGNvbnRpbnVlZCB0byByaXNlIGFnYWluc3QgdGhlIGRvbGxhciBkZXNwaXRlIG1hc3NpdmUgY2VudHJhbCBiYW5rIGludGVydmVudGlvbi4gICAgIEFza2VkIHdoZXRoZXIgdGhpcyBpbnRlcnZlbnRpb24gd2FzIGEgc2lnbiBvZiB3ZWFrbmVzcyBpbiB0aGUgTG91dnJlIGFjY29yZCwgaGUgc2FpZCwgIkkgZG9uJ3QgdGhpbmsgc28uIElmIHRoZXJlIGhhZCBiZWVuIG5vIGludGVydmVudGlvbiB5b3Ugd291bGQgaGF2ZSBjYWxsZWQgdGhhdCBhIHNpZ24gb2Ygd2Vha25lc3MuIiAgICAgQWx0aG91Z2ggaW50ZXJ2ZW50aW9uIGNvdWxkIGJlIGEgY2F1c2Ugb2YgaW5mbGF0aW9uLCBMYXdzb24gc2FpZCwgInRoZSB3b3JsZCBkb2VzIG5vdCBhcHBlYXIgdG8gYmUgaW4gYW4gaW5mbGF0aW9uYXJ5IG1vZGUgLi4uIGJ1dCBvbmUgaGFzIHRvIGJlIHZpZ2lsYW50LiIgICAgIEhlIHNhaWQgeWVzdGVyZGF5J3MgRy03IHN0YXRlbWVudCwgd2hpY2ggYWZmaXJtZWQgdGhhdCAiY3VycmVudCBsZXZlbHMiIG9mIGV4Y2hhbmdlIHJhdGVzIHdlcmUgYXBwcm9wcmlhdGUsIGhhZCBiZWVuICJjYXJlZnVsbHkgd29yZGVkLiIgIldlIGtub3cgd2hhdCB3ZSBtZWFuLCBhbmQgd2UgYWxsIG1lYW4gdGhlIHNhbWUgdGhpbmcsIiBoZSBzYWlkLiAgICAgTGF3c29uIHNhaWQgZmluYW5jaWFsIG1hcmtldHMgc2VlbSB0byBiZWxpZXZlIHRoYXQgSmFwYW5lc2UgbWVhc3VyZXMgb3V0bGluZWQgaW4gdGhlIExvdXZyZSBhY2NvcmQgd2VyZSB0aGUgc291cmNlIG9mIHdlYWtuZXNzIGZvciB0aGF0IGFncmVlbWVudC4gICAgIFRoZXJlZm9yZSwgdGhlIEctNyBjb3VudHJpZXMgd2VsY29tZWQgTWl5YXphd2EncyBwcmVzZW50YXRpb24gb2YgcGxhbnMgZm9yIGEgc3VwcGxlbWVudGFsIGJ1ZGdldCB0byBzdGltdWxhdGUgZG9tZXN0aWMgZGVtYW5kLiAgICAgVGhleSBwYXJ0aWN1bGFybHkgd2VsY29tZWQgdGhlIGdvYWwgb2YgYW4gaW1tZWRpYXRlIGluY3JlYXNlIGluIHB1YmxpYyB3b3JrcyBzcGVuZGluZywgYnV0IExhd3NvbiBzYWlkIHRoZSBwYWNrYWdlIGFsc28gaW52b2x2ZWQgYSBzZWNvbmQgc3RhZ2UgdG8gaW5jcmVhc2UgZXhwZW5kaXR1cmVzIGR1cmluZyB0aGUgc2Vjb25kIGhhbGYgb2YgdGhpcyB5ZWFyLiAgUmV1dGVyIDM7CjE5ODcwNDA5CUxBV1NPTiBTRUVTIE5PIENIQU5HRSBJTiBVLksuIE1PTkVUQVJZIFBPTElDWSBCcml0aXNoIENoYW5jZWxsb3Igb2YgdGhlIEV4Y2hlcXVlciBOaWdlbCBMYXdzb24gc2FpZCBoZSBzYXcgbm8gaW1tZWRpYXRlIGltcGxpY2F0aW9ucyBmb3IgQnJpdGlzaCBtb25ldGFyeSBwb2xpY3kgYXJpc2luZyBmcm9tIHRoZSBHcm91cCBvZiBTZXZlbiBtZWV0aW5nIHllc3RlcmRheS4gICAgICJFeGNoYW5nZSByYXRlIHN0YWJpbGl0eSBpcyBpbiB0aGUgVS5LLidzIGludGVyZXN0LCIgaGUgdG9sZCBqb3VybmFsaXN0cy4gICAgIEFza2VkIHdoYXQgaXQgbWVhbnQgZm9yIFUuSy4gbW9uZXRhcnkgcG9saWN5LCBoZSBzYWlkLCAiTm8sIEkgZG8gbm90IHRoaW5rIHRoZXJlIGFyZSBhbnkgaW1tZWRpYXRlIGltcGxpY2F0aW9ucy4iICBSZXV0ZXIgMzsKMTk4NzA0MDkJTEVBRCBQUklDRVMgUklTRSBPTiBGSU5FTFkgQkFMQU5DRUQgUEhZU0lDQUxTIExlYWQgcHJpY2VzIGhhdmUgcmlzZW4gdGhpcyB3ZWVrIGFnYWluc3QgYSBiYWNrZ3JvdW5kIG9mIGEgZmluZWx5IGJhbGFuY2VkIHBoeXNpY2FsIHNlY3RvciwgdHJhZGVycyBzYWlkLiAgICAgRnVydGhlciBnYWlucyBhcmUgcG9zc2libGUgaWYgdGhlIFVTU1Igc3RlcHMgdXAgaXRzIGJ1eWluZyBvciBpZiBsYWJvdXIgcHJvYmxlbXMgZGV2ZWxvcCBpbiBOb3J0aCBBbWVyaWNhLCB0aGV5IGFkZGVkLiAgICAgTG9uZG9uIE1ldGFsIEV4Y2hhbmdlIChMTUUpIHByaWNlcyBhcmUgdW51c3VhbGx5IGJ1b3lhbnQgYXQgYSB0aW1lIG9mIHllYXIgd2hlbiBzZWFzb25hbCBkZW1hbmQgaXMgbm9ybWFsbHkgc2xhY2tlbmluZyBhbmQgcHJpY2VzIHRlbmRpbmcgdG8gZHJpZnQgbG93ZXIuICAgICBUaGlzIGJ1b3lhbmN5IGlzIGdlbmVyYWxseSBhdHRyaWJ1dGVkIGJ5IHRyYWRlcnMgdG8gdGhlIGxvdyBsZXZlbCBvZiBMTUUgc3RvY2tzIGFuZCBzdGVhZHksIGlmIHVuc3BlY3RhY3VsYXIsIHBoeXNpY2FsIGRlbWFuZCBpbiB0aGUgTm9ydGhlcm4gSGVtaXNwaGVyZSBmaW5kaW5nIHN1cHBsaWVzIGN1cnRhaWxlZC4gICAgIFRoZSBzdXBwbHkgcHJvYmxlbXMgYXJlIG5vdCBuZXcgYnV0IGFyZSBiZWdpbm5pbmcgdG8gYmUgZmVsdCBieSBhIG1hcmtldCBpbiB3aGljaCwgYXMgcGVhayB3aW50ZXIgZGVtYW5kIHRhaWxzIG9mZiwgc3RvY2tzIHVzdWFsbHkgYnVpbGQgZmFzdCBhbmQgYXZhaWxhYmlsaXR5IGluY3JlYXNlcywgdHJhZGVycyBzYWlkLiAgICAgVGhlIGxvd2VyIHN1cHBseSBsZXZlbHMgcmVzdWx0IGZyb20gYSBudW1iZXIgb2YgZGlmZmVyZW50IGZhY3RvcnMgYXJvdW5kIHRoZSBnbG9iZS4gICAgIERlbGF5ZWQgc2hpcG1lbnRzIGZyb20gUGVydSB0byBNZWRpdGVycmFuZWFuIGNvdW50cmllcyBiZWNhdXNlIG9mIHByb2R1Y3Rpb24gYW5kIHRyYW5zcG9ydCBwcm9ibGVtcywgbGFjayBvZiBTcGFuaXNoIGV4cG9ydHMgc2luY2UgdGhlIGNsb3N1cmUgbGFzdCB5ZWFyIG9mIENpYSBMYSBDcnV6J3Mgc21lbHRlciBhdCBMaW5hcmVzIGFuZCBsb3dlciBvdXRwdXQgaW4gTW9yb2NjbyBhbmQgR3JlZWNlIGhhdmUgYWxsIG1lYW50IGFkZGl0aW9uYWwgZGVtYW5kIGJlaW5nIGRpcmVjdGVkIHRvIG1lcmNoYW50cyB3aG8gaW4gdHVybiBoYXZlIGJlZW4gZHJhd2luZyBvbiBMTUUgc3RvY2tzLiAgICAgSW4gYWRkaXRpb24gQnJva2VuIEhpbGwgQXNzb2NpYXRlZCBTbWVsdGVycycgUG9ydCBQaXJpZSwgU291dGggQXVzdHJhbGlhLCBzbWVsdGVyIGlzIGhhbHRpbmcgcHJvZHVjdGlvbiBmb3IgZml2ZSB3ZWVrcyBmb3IgbWFpbnRlbmFuY2UuIEFsdGhvdWdoIHRoZSBjb21wYW55IHNhaWQgaXQgd291bGQgbWVldCBjb21taXRtZW50cywgdGhpcyB3aWxsIHB1dCBmdXJ0aGVyIHByZXNzdXJlIG9uIHN0b2Nrcy4gICAgIEFuZCB0aGUgVS5TLiBDb21wYW55IERvZSBSdW4gaGFzIGtlcHQgaXRzIDE0MCwwMDAgdG9ubmVzIHBlciB5ZWFyIEJvc3MsIE1vbnRhbmEgc21lbHRlciBjbG9zZWQuIFRoaXMgY3V0IHByb2R1Y2VyIHN0b2NrcyBhbmQgY29udHJpYnV0ZWQgdG8gYSBjbG9zZXIgc3VwcGx5L2RlbWFuZCBiYWxhbmNlIHdpdGhpbiB0aGUgVS5TLiBNYXJrZXQsIGZvciBtYW55IHllYXJzIGRlcHJlc3NlZCBieSBzdXJwbHVzIHByb2R1Y3Rpb24gYW5kIGEgcmVndWxhciBzdXBwbGllciB0byB0aGUgd29ybGQgbWFya2V0LiAgICAgTWV4aWNhbiBzdXBwbGllcywgd2hpY2ggaGF2ZSBzb21ldGltZXMgc3dlbGxlZCBMTUUgc3RvY2tzLCBoYXZlIGJlZW4gbm9ybWFsIGJ1dCBhcmUgZmluZGluZyByZWFkeSBidXllcnMsIHRyYWRlcnMgc2FpZC4gICAgIE9uIHRoZSBkZW1hbmQgc2lkZSwgd2ludGVyIGJhdHRlcnkgbWFudWZhY3R1cmUgaGFzIGhlbGQgdXAgcXVpdGUgd2VsbCBhbmQgc29tZSBVLlMuIEJ1eWluZyBvZiBsZWFkIHNoZWV0IGhhcyBiZWVuIHJlcG9ydGVkIGluIHRoZSBVLksuIFNvdmlldCBsZWFkIGJ1eWluZywgbm90YWJseSBhYnNlbnQgaW4gRXVyb3BlIGluIHRoZSBmaXJzdCB0d28gbW9udGhzIG9mIHRoZSB5ZWFyLCB3YXMgcmVzdW1lZCB3aGVuIGEgbGFyZ2UgYnV5aW5nIG9yZGVyIHdhcyBmaWxsZWQgYnkgbWVyY2hhbnRzIGluIE1hcmNoLiAgICAgTWVyY2hhbnQgZGVtYW5kIGhhcyBmdWVsbGVkIHRoZSByaXNlIGluIExNRSBsZWFkIHByaWNlcyB0aGlzIHdlZWsgYW5kIGhhcyBzZWVuIGNhc2ggbWV0YWwgbW92ZSBhYm92ZSAzMjAgc3RnIGFuZCBlc3RhYmxpc2ggYSBwcmVtaXVtIG9mIGFyb3VuZCAxMCBzdGcgb3ZlciB0aHJlZSBtb250aHMgZGVsaXZlcnkuIFNwZWNpZmljIGRlbWFuZCBoYXMgYmVlbiBkaXJlY3RlZCB0b3dhcmRzIG1ldGFsIGluIEdvdGhlbmJ1cmcgYW5kIFRyaWVzdGUgd2FyZWhvdXNlcy4gR290aGVuYnVyZyBtYXRlcmlhbCBpcyBvZnRlbiBhIHRhcmdldCBmb3IgbWVyY2hhbnRzIHNoaXBwaW5nIHRvIHRoZSBVU1NSLCB0cmFkZXJzIHNhaWQuICAgICBPbiBzdG9ja3MsIHRoZSBwb3B1bGFyIExNRSBDb250aW5lbnRhbCB3YXJlaG91c2VzLCBBbnR3ZXJwIGFuZCBSb3R0ZXJkYW0sIGhhdmUgbGl0dGxlIG1vcmUgdGhhbiAzLDAwMCB0b25uZXMgb2YgbGVhZCBlYWNoLCBhbmQgdGhpcyBpcyBiZWxpZXZlZCB0byBiZSBpbiBzdHJvbmcgaGFuZHMuICAgICBPdXQgb2YgYSB0b3RhbCAyMiwxMjUgdG9ubmVzIGluIExNRSBzdG9ja3MsIHRoZSBsb3dlc3QgbGV2ZWwgc2luY2UgSnVuZSAxOTgwLCBqdXN0IG92ZXIgaGFsZiBpcyBpbiBVLksuIFdhcmVob3VzZXMgd2hpY2ggYXJlIG5vdCBwb3B1bGFyIHdpdGggbWVyY2hhbnRzIHB1dHRpbmcgdG9nZXRoZXIgc2hpcG1lbnRzLiAgICAgQnV0IGV2ZW4gVS5LLiBTdG9ja3MgaGF2ZSBkcm9wcGVkIGFyb3VuZCA2LDAwMCB0b25uZXMgc2luY2UgdGhlIHN0YXJ0IG9mIHRoZSB5ZWFyLiBUcmFkZXJzIHNhaWQgdGhpcyBpcyBwYXJ0bHkgZHVlIHRvIHNlY29uZGFyeSBzbWVsdGVycyBidXlpbmcgaW5nb3RzIHRvIHN1cHBsZW1lbnQgZmVlZCBzdXBwbGllcyBhZmZlY3RlZCBieSBlbnZpcm9ubWVudGFsIGNvbnRyb2xzLCB3aGljaCBwdXQgcmVzdHJpY3Rpb25zIG9uIHRoZSB0cmFuc3BvcnQgb2YgdXNlZCBiYXR0ZXJpZXMuICAgICBMYWJvdXIgbmVnb3RpYXRpb25zIGluIE5vcnRoIEFtZXJpY2Egd2lsbCBwbGF5IGFuIGltcG9ydGFudCBwYXJ0IGluIGRldGVybWluaW5nIHRoZSBkaXJlY3Rpb24gb2YgcHJpY2VzLCB3aXRoIGNvbnRyYWN0cyBleHBpcmluZyBlbmQtQXByaWwgYXQgQ29taW5jbydzIFRyYWlsIGFuZCBLaW1iZXJsZXksIEIuQy4sIE1pbmUvc21lbHRlciBhbmQgYXQgRG9lIFJ1bidzIEhlcmN1bGFuZXVtLCBNbywgc21lbHRlci4gICAgIE5vcmFuZGEncyBOZXcgQnJ1bnN3aWNrIG1pbmUvc21lbHRlciBhbHNvIGhhcyBhIGNvbnRyYWN0IGV4cGlyeSBpbiBKdWx5IHdoaWNoIG1heSBjYXVzZSBzb21lIG5lcnZvdXNuZXNzIGluIHZpZXcgb2Ygc3RyaWtlcyBieSBpdHMgemluYyBhbmQgY29wcGVyIHdvcmtlcnMgb3ZlciByZWNlbnQgbW9udGhzLiAgICAgVHJhZGVycyBzYWlkIExNRSB0aHJlZSBtb250aHMgZGVsaXZlcnksIGFscmVhZHkgYXR0cmFjdGluZyBzcGVjdWxhdGl2ZSBidXlpbmcsIGNvdWxkIHJpc2UgdG8gMzIwLzMzMCBzdGcgb24gY3VycmVudCBmaXJtbmVzcywgd2hpbGUgbmVhcmJ5IHRpZ2h0bmVzcyBjb3VsZCB3aWRlbiB0aGUgY2FzaCBwcmVtaXVtIHRvIDIwIGZyb20gZm91ci4gVGhyZWUgbW9udGhzIHdhcyBxdW90ZWQgYXQgMzEzIHN0ZyBhdCBtaWRzZXNzaW9uLiAgUmV1dGVyIDM7CjE5ODcwNDA5CUxFQkFORVNFIFBPVU5EIEZBTExTIFNIQVJQTFkgQUdBSU5TVCBET0xMQVIgVGhlIExlYmFuZXNlIFBvdW5kIGZlbGwgc2hhcnBseSBhZ2FpbnN0IHRoZSBVLlMuIERvbGxhciBhZ2FpbiB0b2RheSB3aXRoIGRlYWxlcnMgYXR0cmlidXRpbmcgdGhlIGRlY2xpbmUgdG8gY29udGludWVkIHBvbGl0aWNhbCB1bmNlcnRhaW50eS4gICAgIFRoZSBwb3VuZCBjbG9zZWQgYXQgMTE4LjI1LzExOC43NSBhZ2FpbnN0IHRoZSBkb2xsYXIgY29tcGFyZWQgdG8geWVzdGVyZGF5J3MgY2xvc2Ugb2YgMTE1LjYwLzExNS44MC4gICAgICJQb2xpdGljYWwgZGVhZGxvY2sgaXMgcmVmbGVjdGVkIGluIHRoZSBwb3VuZCdzIHBvc2l0aW9uLiBUaGVyZSB3YXMgbW9yZSBkZW1hbmQgYW5kIGxlc3Mgb24gb2ZmZXIgaW4gdGhlIG1hcmtldCwiIG9uZSBkZWFsZXIgdG9sZCBSZXV0ZXJzLiAgICAgVGhlIHBvdW5kLCB3aGljaCB3YXMgYXQgMTggdG8gdGhlIGRvbGxhciBpbiBKYW51YXJ5LCAxOTg2LCBoYXMgbG9zdCBtb3JlIHRoYW4gMzAgcGN0IG9mIGl0cyBpbnRlcm5hdGlvbmFsIHZhbHVlIG92ZXIgdGhlIHBhc3QgdGhyZWUgbW9udGhzLiAgUkVVVEVSIDM7CjE5ODcwNDA5CUxFWCBTRVJWSUNFIEJVWVMgU0VBUlMgTU9UT1IgR1JPVVAgTGV4IFNlcnZpY2UgUGxjIDxMRVhMLkw+IHNhaWQgaXQgaGFkIGFjcXVpcmVkIDxTZWFycyBNb3RvciBHcm91cCBMdGQ+LCB0aGUgcmV0YWlsIG1vdG9yIGRpc3RyaWJ1dGlvbiBhcm0gb2YgU2VhcnMgUGxjIDwgU0VITC5MPiwgYW5kIGFuIDExLjkgbWxuIHN0ZyBsb2FuIG5vdGUgcGF5YWJsZSBieSBTZWFycyBNb3RvciBmb3IgMzMuNCBtbG4gc3RnLiAgICAgVGhlIHB1cmNoYXNlIHdpbGwgYmUgdGhyb3VnaCAxLjQgbWxuIHN0ZyBpbiBjYXNoIGFuZCB0aGUgaXNzdWUgdG8gU2VhcnMgUGxjIG9mIDguMCBtbG4gbmV3IExleCBvcmRpbmFyeSBzaGFyZXMuICAgICBUaGUgY29tcGFueSBzYWlkIGluIGEgc3RhdGVtZW50IHRoYXQgaW1tZWRpYXRlbHkgZm9sbG93aW5nIHRoZSBhY3F1aXNpdGlvbiBvZiB0aGUgbW90b3IgZ3JvdXAsIGl0cyBjYXIgYW5kIGNvbW1lcmNpYWwgdmVoaWNsZSBjb250cmFjdCBoaXJlIGZsZWV0IG9mIHNvbWUgMywwMDAgdmVoaWNsZXMgd2FzIHNvbGQgdG8gPExleCBWZWhpY2xlIExlYXNpbmcgTHRkPiBmb3IgMTQuMyBtbG4gc3RnIGluIGNhc2gsIGEgc3VtIGVxdWFsIHRvIHRoZSBuZXQgYm9vayB2YWx1ZSBvZiB0aGUgdmVoaWNsZXMgdHJhbnNmZXJyZWQuICAgICBMZXggVmVoaWNsZSBpcyBvd25lZCBlcXVhbGx5IGJ5IExleCBTZXJ2aWNlcyBhbmQgPExvbWJhcmQgTm9ydGggQ2VudHJhbCBQbGM+LiAgICAgTGV4IHNhaWQgdGhlIHNoYXJlcyBpbnZvbHZlZCBpbiB0aGUgdHJhbnNhY3Rpb24gd2VyZSB0b2RheSBiZWluZyBwbGFjZWQgZm9yIFNlYXJzIFBsYyB3aXRoIGluc3RpdHV0aW9ucyBhdCA0MDBwLiBUaGVzZSBzaGFyZXMgd2lsbCBub3QgcXVhbGlmeSBmb3IgdGhlIGZpbmFsIExleCBkaXZpZGVuZCBvbiAxMCBBcHJpbC4gICAgIExleCBzYWlkIGluIGEgc3RhdGVtZW50IHRoYXQgaXRzIGFjcXVpc2l0aW9uIG9mIFNlYXJzIE1vdG9yIEdyb3VwIHJlcHJlc2VudHMgYSBtYWpvciBkZXZlbG9wbWVudCBmb3IgaXRzIGF1dG9tb3RpdmUgYWN0aXZpdGllcy4gVGhlIGVubGFyZ2VkIHJldGFpbGluZyBvcGVyYXRpb25zIG9mIHRoZSBMZXggQXV0b21vdGl2ZSBncm91cCBub3cgaGF2ZSBhIHR1cm5vdmVyIG9mIDUzMCBtbG4gc3RnLiBMZXgncyBleGlzdGluZyBhdXRvbW90aXZlIGludGVyZXN0cyBpbmNsdWRlIFZvbHZvIENvbmNlc3Npb25haXJlcywgdGhlIHNvbGUgaW1wb3J0ZXIgb2YgVm9sdm8gY2FycyBhbmQgcGFydHMgaW50byB0aGUgVS5LLiAgICAgTGV4IHNhaWQgdGhlIHR1cm5vdmVyIGZvciBTZWFycyBNb3RvciBHcm91cCBpbiB0aGUgeWVhciB0byAzMSBEZWNlbWJlciAxOTg2IHdhcyAyNDIgbWxuIHN0ZyBhbmQgdGhhdCBhdCB0aGUgZGF0ZSBvZiB0aGUgYWNxdWlzaXRpb24gdGhlIGdyb3VwIGhhZCBhYm91dCA1MCBtbG4gc3RnIGluIGV4dGVybmFsIGJvcnJvd2luZ3MuICAgICBMZXggc2hhcmVzIGZlbGwgb24gdGhlIGFubm91bmNlbWVudCB0byB0cmFkZSBhcm91bmQgNDA5cCBmcm9tIGEgNDE5cCBjbG9zZSB5ZXN0ZXJkYXkuICBSRVVURVIgMzsKMTk4NzA0MDkJTE9ORE9OIEVVUk9ET0xMQVIgQk9ORFMgQ0xPU0UgTE9XRVIgRXVyb2RvbGxhciBib25kcyBjbG9zZWQgYXMgbXVjaCBhcyBhIGZ1bGwgcG9pbnQgbG93ZXIgYXMgdGhlIGRvbGxhciBmZWxsIHRvIGEgcG9zdC13YXIgbG93IGFnYWluc3QgdGhlIHllbiBhbmQgaW50ZXJlc3QgcmF0ZXMgb24gVS5TLiBUcmVhc3VyaWVzIHJvc2UgYWxtb3N0IHRvIGVpZ2h0IHBjdC4gICAgIFRoZSBkb2xsYXIgZmVsbCB0byAxNDQuMzAgeWVuIGFuZCByZWNvdmVyZWQgb25seSBzbGlnaHRseSBhZnRlciBmb3JlaWduIGV4Y2hhbmdlIHRyYWRlcnMgaW4gTmV3IFlvcmsgc2FpZCB0aGUgRmVkZXJhbCBSZXNlcnZlIGludGVydmVuZWQgdG8gYnV5IGRvbGxhcnMgZm9yIHllbi4gICAgIEJ1dCBkZXNwaXRlIHRoZSBkb2xsYXIncyB3b2VzLCBKYXBhbiBEZXZlbG9wbWVudCBCYW5rLCB3aG9sbHkgb3duZWQgYnkgdGhlIEphcGFuZXNlIGdvdmVybm1lbnQsIHJhaXNlZCAxNTAgbWxuIGRscnMgaW4gYSBzZXZlbi15ZWFyIGV1cm9ib25kIGNhcnJ5aW5nIGFuIGVpZ2h0IHBjdCBjb3Vwb24uICAgICBMZWFkIG1hbmFnZXIgZm9yIHRoZSBpc3N1ZSwgQmFuayBvZiBUb2t5bywgc2FpZCB0aGUgZGVhbCwgYXQgdGhlIHRpbWUgb2YgcHJpY2luZywgd2FzIHRvIHlpZWxkIDYwIGJhc2lzIHBvaW50cyBvdmVyIGNvbXBhcmFibGUgbWF0dXJpdHkgVHJlYXN1cmllcy4gSG93ZXZlciwgYnkgdGhlIGNsb3NlIG9mIHRyYWRpbmcsIHRoYXQgc3ByZWFkIGhhZCBuYXJyb3dlZCB0byA1NSBhbmQgY29udGludWVkIHRvIHNsaWRlIGluIGFmdGVybWFya2V0IGFjdGl2aXR5LiAgICAgRGVhbGVycyBub3RlZCB0aGF0IHRoZSBzcHJlYWQgdG8gVHJlYXN1cmllcyBpcyB3aWRlIGZvciBhIG5ld2x5LXByaWNlZCBBQUEtcmF0ZWQgYm9ycm93ZXIgbGlrZSBKYXBhbiBEZXZlbG9wbWVudCBCYW5rLiBGb3IgZXhhbXBsZSwgZWFybGllciB0aGlzIHdlZWssIHRoZSBXb3JsZCBCYW5rIHJhaXNlZCBVLlMuIERscnMgYXQgb25seSAyNSBiYXNpcyBwb2ludHMgb3ZlciBUcmVhc3VyaWVzLiBEZWFsZXJzIHNhaWQgdGhhdCBiZWNhdXNlIHRoZSBib3Jyb3dlciBjb21lcyB0byBtYXJrZXQgZmFpcmx5IGluZnJlcXVlbnRseSAtLSB0aGUgbGFzdCB0aW1lIHdhcyBhYm91dCBuaW5lIG1vbnRocyBhZ28sIHRoZSBzcHJlYWQgYXBwZWFycyB3aWRlLiAgICAgQnV0IG9mZmljaWFscyBhdCBCYW5rIG9mIFRva3lvIHNhaWQgdGhlIHNwcmVhZCBpcyBpbnRlbmRlZCB0byBjb21wZW5zYXRlIGZvciB0aGUgbGFjayBvZiBsaXF1aWRpdHkgYW5kIGZvciB0aGUgdW5jZXJ0YWludHkgY3VycmVudGx5IGFzc29jaWF0ZWQgd2l0aCBvd25pbmcgZG9sbGFyIHNlY3VyaXRpZXMuICAgICBUaGUgb2ZmaWNpYWxzIHNhaWQgdGhlIGJvcnJvd2VyIG9wdGVkIHRvIHJhaXNlIGZ1bmRzIGluIGRvbGxhcnMsIGRlc3BpdGUgdGhlIGN1cnJlbmN5J3Mgd2Vha25lc3MsIGJlY2F1c2UgaXQgaXMgdGhlIG9ubHkgbWFya2V0IGRlZXAgZW5vdWdoIHRvIGFjY29tbW9kYXRlIGFuIGlzc3VlIG9mIHRoYXQgc2l6ZS4gSmFwYW4gRGV2ZWxvcG1lbnQgQmFuayBpcyBub3QgYWxsb3dlZCB0byByYWlzZSBldXJveWVuLiAgICAgTWFya2V0IHNvdXJjZXMgc2FpZCB0aGUgZGVhbCBpcyBsaWtlbHkgdG8gYmUgc3dhcHBlZCBpbnRvIHllbiBhcyB0aGUgYm9ycm93ZXJzIHByZXZpb3VzIGlzc3VlcyB3ZXJlLiAgICAgTGF0ZSBpbiB0aGUgZGF5LCB0aGUgZGVhbCB3YXMgdHJhZGluZyBqdXN0IGluc2lkZSBpdHMgZmVlcyBhdCBsZXNzIDEuNzUgbGVzcyAxLjU1LiAgICAgQWxzbyBpc3N1ZWQgdG9kYXkgd2FzIGEgNDAgbWxuIGRsciBmaXZlLXllYXIgb2ZmZXJpbmcgZnJvbSBUb3NoaWJhIEludGVybmF0aW9uYWwgRmluYW5jZSAoTmV0aGVybGFuZHMpIGNhcnJ5aW5nIGEgNy0zLzggcGN0IGNvdXBvbiBhbmQgcHJpY2VkIGF0IDEwMS0xLzIuICAgICBUaHJlZSBlcXVpdHkgbGlua2VkIGRvbGxhciBkZW5vbWluYXRlZCBkZWFscyB3ZXJlIG9mZmVyZWQsIHRoZSBsYXJnZXN0IG9mIHdoaWNoIHdhcyBhIDIwMCBtbG4gZGxyIG9mZmVyaW5nIGJ5IFNla2lzdWkgQ2hlbWljYWwgQ28gYW5kIGd1YXJhbnRlZWQgYnkgU2Fud2EgQmFuayBMdGQuIFRoZSBpc3N1ZSBoYXMgZXF1aXR5IHdhcnJhbnRzIGF0dGFjaGVkIGFuZCBsYXRlIGluIHRoZSBkYXkgaXQgd2FzIHF1b3RlZCBvbiBicm9rZXJzJyBzY3JlZW5zIGF0IDEwNi0xLzIsIGJpZCBvbmx5LiAgICAgVGhlIEF1c3RyYWxpYW4gZG9sbGFyIG1hcmtldCBjb250aW51ZWQgYWN0aXZlLCB3aXRoIENhbmFkaWFuIEltcGVyaWFsIEJhbmsgb2YgQ29tbWVyY2Ugb2ZmZXJpbmcgYSBib25kIG9mIDEyNSBtbG4gZml2ZS15ZWFyIHdpdGggYSB6ZXJvIGNvdXBvbiBwcmljZWQgYXQgNTQuICAgICBMYXRlIGluIHRoZSBkYXksIHRoZSBkZWFsIHdhcyBxdW90ZWQgYXQgbGVzcyAxLTEvNCBiaWQuIEEgc2ltaWxhciBkZWFsIHllc3RlcmRheSBieSBUb3JvbnRvIERvbWluaW9uLCBwcmljZWQgc2xpZ2h0bHkgaGlnaGVyIGF0IDU0LjM3IHBjdCBmb3IgYW4gZWZmZWN0aXZlIHlpZWxkIG9mIDEzLjUyIHBjdCwgd2FzIHF1b3RlZCBzbGlnaHRseSBsb3dlciBhdCBsZXNzIDEuMzcgbGVzcyAxLjI1IHBjdC4gICAgIERlYWxlcnMgc2FpZCB0aGF0IGludmVzdG9ycyBhcmUgYXBwYXJlbnRseSB3aWxsaW5nIHRvIGFjY2VwdCB6ZXJvLWNvdXBvbiBib25kcyB5aWVsZGluZyA1MCB0byAxMDAgYmFzaXMgcG9pbnRzIGxlc3MgdGhhbiBhbm51YWwtcGF5IGJvbmRzIGJlY2F1c2UgdGhlaXIgYXJlIHRheCBiZW5lZml0cyBmb3IgcmV0YWlsIGJ1eWVycy4gQWxzbywgdGhlIGJvbmRzIGFyZSBtb3JlIHZvbGF0aWxlIGFuZCBpZiBpbnRlcmVzdCByYXRlcyBmYWxsIGluIEF1c3RyYWxpYSBhcyBtYW55IGFuYWx5c3RzIGV4cGVjdCwgdGhlIHBvdGVudGlhbCBmb3IgY2FwaXRhbCBnYWlucyBpcyBncmVhdGVyIHdpdGggYSB6ZXJvLWNvdXBvbi4gVGhlIGJvbmRzIGFyZSBhbHNvIGJldHRlciBmb3IgdGhvc2Ugd2hvIGV4cGVjdCB0aGUgYXVzdHJhbGlhbiBkbHIgdG8gYXBwcmVjaWF0ZS4gICAgIERlYWxlcnMgc2FpZCB0aGF0IHRoZSBBdXN0cmFsaWEgZGxyIHplcm8gY291cG9uIGJvbmRzIGFyZSBhcHBhcmVudGx5IGJlaW5nIHBsYWNlZCB3aXRoIHJldGFpbCBhY2NvdW50cyBvbiB0aGUgRXVyb3BlYW4gY29udGluZW50IHdpdGggdmVyeSBsaXR0bGUgcGxhY2VtZW50IGJlaW5nIGRvbmUgaW4gSmFwYW4uICAgICBFdXJveWVuIGlzc3VlcyBzYW5rIHNsaWdodGx5IGluIGxpbmUgd2l0aCBwcmljZXMgb24gZG9tZXN0aWMgSmFwYW5lc2UgYm9uZCBtYXJrZXRzIGJ1dCByZWNvdmVyZWQgaW4gbGF0ZSB0cmFkZSBhcyB0aGUgeWVuIHNvYXJlZC4gQWZ0ZXIgdGhlIG1hcmtldHMgY2xvc2VkLCB0aGUgZG9sbGFyIGZlbGwgdG8gMTQ0IHllbi4gICAgIFRoZSBFdXJvcGVhbiBJbnZlc3RtZW50IEJhbmsgKEVJQikgaXNzdWVkIGEgNDAgbWxuIGV1cm95ZW4gaXNzdWUgcGF5aW5nIDQtNS84IHBjdCBvdmVyIHNldmVuIHllYXJzLiBUaGlzIGlzIHRoZSBzZWNvbmQgc2V2ZW4teWVhciB5ZW4gaXNzdWUgaW4gdHdvIGRheXMgLS0gYSBzZWN0b3Igb2YgdGhlIHlpZWxkIGN1cnZlIGluIEphcGFuIHRoYXQgZGVhbGVycyBmZWVsIGhhcyBub3QgeWV0IGJlY29tZSBvdmVycHJpY2VkLiAgUkVVVEVSIDM7CjE5ODcwNDA5CUxPTkRPTiBGUkVJR0hUIE1BUktFVCBGRUFUVVJFUyBHUkFJTiBPVVQgT0YgVS5TLiBNb2RlcmF0ZWx5IGFjdGl2ZSBncmFpbiBmaXhpbmcgd2FzIHJlcG9ydGVkIG91dCBvZiB0aGUgVS5TLiBCdXQgbm9uZSBvZiB0aGUgYnVzaW5lc3MgaW52b2x2ZWQgdGhlIHNpZ25pZmljYW50IHZveWFnZXMgdG8gdGhlIENvbnRpbmVudCBvciBKYXBhbiwgc2hpcCBicm9rZXJzIHNhaWQuICAgICBBIHN0ZWFkeSAxMy41MCBkbHJzIHdhcyBwYWlkIGZyb20gdGhlIFUuUy4gR3VsZiB0byBNb3JvY2NvIGFuZCAyMy4yNSBkbHJzIHdhcyBwYWlkIGZvciAyNywwMDAgbG9uZyB0b25zIGZyb20gdGhlIEd1bGYgdG8gVGFpd2FuLiBBIHZlc3NlbCBjYXJyeWluZyAxMyw1MDAgbG9uZyB0b25zIG9mIGJhZ2dlZCB3aGVhdCBmbG91ciBmcm9tIHRoZSBHdWxmIHRvIEFxYWJhIHJlY2VpdmVkIGEgbHVtcCBzdW0gb2YgNDcyLDUwMCBkbHJzLiAgICAgR3JhaW4gZnJvbSB0aGUgR3JlYXQgTGFrZXMgdG8gQWxnZXJpYSBtYWRlIDI4IGRscnMgYWdhaW5zdCAyNy43NSBwYWlkIGZvciBzaW1pbGFyIGZpeGluZyB0b3dhcmRzIHRoZSBlbmQgb2YgTWFyY2guICAgICBNYXJrZXQgdGFsayBzdWdnZXN0ZWQgYSBGZWRlcmFsIENvbW1lcmNlIHZlc3NlbCBoYWQgYmVlbiBib29rZWQgdG8gbW92ZSBncmFpbiBmcm9tIHRoZSBHcmVhdCBMYWtlcyB0byBNb3JvY2NvIG9uIENvbWFuYXYgYWNjb3VudCBhdCBhYm91dCAyMiBkbHJzIGFuZCAxNS41MCBoYWQgYmVlbiBwYWlkIGZvciBhIGNhcmdvIG9mIG9pbHNlZWRzIGZyb20gQnJpdGlzaCBDb2x1bWJpYSB0byBKYXBhbiwgYnV0IG5vIGNvbmZpcm1hdGlvbiB3YXMgb2J0YWluYWJsZS4gICAgIE9uIHRoZSBDb250aW5lbnQsIHNoaXBwZXJzIGFncmVlZCAxOSBkbHJzIGZvciB3aGVhdCBmcm9tIExhIFBhbGxpY2UgdG8gQnVlbmF2ZW50dXJhIGFuZCAxMC43NSBkbHJzIGZvciBncmFpbiBmcm9tIEdoZW50IHRvIE5hcGxlcy9WZW5pY2UgcmFuZ2UuIEVsc2V3aGVyZSwgbWFpemUgZnJvbSBFYXN0IExvbmRvbiB0byBKYXBhbiBwYWlkIDIyIGRscnMuICAgICBTb3ZpZXQgY2hhcnRlcmVycyByZWFwcGVhcmVkIGluIHRoZSB0aW1lY2hhcnRlciBzZWN0b3IgYW5kIHNlY3VyZWQgYSAzMCwwMDAgdG9ubmVyIGZyb20gU2F2b25hIGZvciBhIHRyYW5zLUF0bGFudGljIHJvdW5kIHRyaXAgYXQgNCw0NTAgZGxycyBkYWlseSBhbmQgYSAzMSwwMDAgdG9ubmVyIGZyb20gQW50d2VycC1IYW1idXJnIGZvciBhIHNpbWlsYXIgdm95YWdlIGF0IDQsMjUwIGRscnMgZGFpbHkuICBSZXV0ZXIgMzsKMTk4NzA0MDkJTE9ORE9OIEdSQUlOIEZSRUlHSFRTIDI3LDAwMCBsb25nIHRvbnMgVVNHL1RhaXdhbiAyMy4yNSBkbHJzIGZpbyBmaXZlIGRheXMvMSw1MDAgMS0xMC81IENvbnRpbmVudGFsLiAgICAgVHJhZGUgQmFubmVyIC0gMzAsMDAwIGxvbmcgdG9ucyBncmFpbiBVU0cvTW9yb2NjbyAxMy41MCBkbHJzIDUsMDAwLzUsMDAwIGVuZC1BcHJpbC9lYXJseS1NYXkgQ29tYW5hdi4gICAgIFJlZmVyZW5jZSBOZXcgWW9yayBHcmFpbiBGcmVpZ2h0cyAxIG9mIEFwcmlsIDgsIHNoaXAgYnJva2VycyBzYXkgdGhlIHZlc3NlbCBmaXhlZCBieSBDYW0gZnJvbSB0aGUgR3JlYXQgTGFrZXMgdG8gQWxnZXJpYSBhdCAyOCBkbHJzIGlzIHJlcG9ydGVkIHRvIGJlIHRoZSBWYW1hbmQgV2F2ZS4gICAgIFJlZmVyZW5jZSBOZXcgWW9yayBHcmFpbiBGcmVpZ2h0cyAyIG9mIEFwcmlsIDgsIHRoZXkgc2F5IHRoZSBDb3J5IEdyYWluIG1haXplIGJ1c2luZXNzIGZyb20gRWFzdCBMb25kb24gYXQgMjIgZGxycyBpcyB0byBKYXBhbiBhbmQgbm90IHRvIFNwYWluIGFzIHJlcG9ydGVkLiAgUmV1dGVyIDM7CjE5ODcwNDA5CUxWSSBHUk9VUCA8TFZJPiBUTyBNQUtFIEFDUVVJU0lUSU9OIExWSSBHcm91cCBJbmMgc2FpZCBpdCBoYXMgYWdyZWVkIGluIHByaW5jaXBsZSB0byBwdXJjaGFzZSBhbGwgb3V0c3RhbmRpbmcgc2hhcmVzIG9mIDxTcGVjdHJ1bSBIb2xkaW5nIENvcnA+IGZvciBhIHByb3Bvc2VkIDEzIG1sbiBkbHJzIGluIGNhc2guICAgICBMVkkgc2FpZCBhbiBhZGRpdGlvbmFsIDEwIG1sbiBkbHJzIGluIGNvbW1vbiBzdG9jayBhbmQgc2V2ZW4gbWxuIGRscnMgaW4gbm90ZXMgd2lsbCBiZWNvbWUgcGF5YWJsZSBpZiBTcGVjdHJ1bSBoYXMgY2VydGFpbiBtaW5pbXVtIGZ1dHVyZSBlYXJuaW5ncy4gICAgIExWSSwgYW4gaW50ZXJpb3IgY29uc3RydWN0aW9uIGZpcm0sIHNhaWQgdGhlIGFjcXVpc2l0aW9uIGlzIHN1YmplY3QgdG8gZXhlY3V0aW9uIG9mIGEgZGVmaW5pdGl2ZSBhZ3JlZW1lbnQgYW5kIGNvbXBsZXRpb24gb2YgZHVlIGRpbGlnZW5jZS4gICAgIExWSSBhbmQgU3BlY3RydW0sIGFuIGFzYmVzdG9zIGFiYXRlbWVudCBjb25jZXJuLCBleHBlY3QgdG8gY2xvc2UgdGhlIGRlYWwgaW4gSnVuZSwgTFZJIHNhaWQuICBSZXV0ZXIgMzsKMTk4NzA0MDkJTUFHTUEgUkFJU0VTIENPUFBFUiBQUklDRSAwLjI1IENUIFRPIDY1Ljc1IENUUyBNYWdtYSBDb3BwZXIgQ28sIGEgc3Vic2lkaWFyeSBvZiBOZXdtb250IE1pbmluZyBDb3JwLCBzYWlkIGl0IGlzIHJhaXNpbmcgaXRzIGNvcHBlciBjYXRob2RlIHByaWNlIGJ5IDAuMjUgY2VudCB0byA2NS43NSBjZW50cyBhIGxiLCBlZmZlY3RpdmUgaW1tZWRpYXRlbHkuICBSZXV0ZXIgMzsKMTk4NzA0MDkJTUFKT1IgUlVCQkVSIFBST0RVQ0VSUyBUTyBNRUVUIElOIFNJTkdBUE9SRSBPZmZpY2lhbHMgZnJvbSBJbmRvbmVzaWEsIE1hbGF5c2lhLCBTaW5nYXBvcmUgYW5kLCBwZXJoYXBzLCBUaGFpbGFuZCB3aWxsIG1lZXQgaGVyZSB0b21vcnJvdyB0byBkaXNjdXNzIGluY3JlYXNlZCByZWdpb25hbCBjb29wZXJhdGlvbiBvbiBydWJiZXIgbWFya2V0aW5nIGFuZCB3YXlzIHRvIHJhaXNlIHJ1YmJlciBwcmljZXMsIGluZHVzdHJ5IHNvdXJjZXMgc2FpZC4gICAgIFRoZSBvZmZpY2lhbHMgd2lsbCBkaXNjdXNzIGxpbmtpbmcgcnViYmVyIG1hcmtldHMgaW4gdGhlIGZvdXIgY291bnRyaWVzIHRvIGltcHJvdmUgcHJpY2UgdHJhbnNwYXJlbmN5LCB0aGUgc291cmNlcyBzYWlkLiAgICAgVGhpcyBpcyB0aGUgZmlyc3QgdGltZSBJbmRvbmVzaWEgaXMgYXR0ZW5kaW5nIHN1Y2ggYSBtZWV0aW5nLCB0aGV5IHNhaWQsIGJ1dCByZXByZXNlbnRhdGl2ZXMgZnJvbSBUaGFpbGFuZCBtYXkgbm90IGJlIGFibGUgdG8gYXR0ZW5kIGJlY2F1c2Ugb2YgdGhlaXIgdGlnaHQgc2NoZWR1bGUuIE1hbGF5c2lhLCBJbmRvbmVzaWEgYW5kIFRoYWlsYW5kIGFjY291bnQgZm9yIDkwIHBjdCBvZiB3b3JsZCBydWJiZXIgZXhwb3J0cyBhbmQgU2luZ2Fwb3JlIGlzIGEgbWFqb3IgcmVnaW9uYWwgcnViYmVyIHRyYWRpbmcgY2VudHJlLiAgICAgVGhlIE1hbGF5c2lhbiBSdWJiZXIgRnV0dXJlcyBtYXJrZXQsIGZyZWlnaHRpbmcgYW5kIGNvbnRyYWN0cyBmb3IgcnViYmVyIGFyZSBhbW9uZyBvdGhlciBpc3N1ZXMgZXhwZWN0ZWQgdG8gYmUgZGlzY3Vzc2VkLiAgICAgTGFzdCBtb250aCwgcnViYmVyIGltcG9ydGluZyBhbmQgZXhwb3J0aW5nIGNvdW50cmllcyBhZG9wdGVkIGEgbmV3IEludGVybmF0aW9uYWwgTmF0dXJhbCBSdWJiZXIgQWdyZWVtZW50IGluIEdlbmV2YS4gVGhlIG5ldyBwYWN0IGlzIG1vcmUgcmVzcG9uc2l2ZSB0byBtYXJrZXQgdHJlbmRzIHRoYW4gaXRzIHByZWRlY2Vzc29yLCB0aGUgc291cmNlcyBzYWlkLCBhbmQgZWFybGllciBwcm92aXNpb25zIGFsbG93aW5nIHRoZSBidWZmZXIgc3RvY2sgdG8gYm9ycm93IGZyb20gYmFua3MgaGF2ZSBiZWVuIGVsaW1pbmF0ZWQuICBSRVVURVIgMzsKMTk4NzA0MDkJTUFMQVlTSUEgU0VFS1MgNDIgQklMTElPTiBZRU4gUElQRUxJTkUgTE9BTiBNYWxheXNpYSBoYXMgYXNrZWQgSmFwYW4gZm9yIGEgNDIgYmlsbGlvbiB5ZW4gMjUteWVhciBsb2FuIHRvIGZpbmFuY2UgdGhlIGNvbnN0cnVjdGlvbiBvZiBnYXMgcGlwZWxpbmVzIGZyb20gZWFzdGVybiBUcmVuZ2dhbnUgdG8gc291dGhlcm4gSm9ob3IsIHRoZSBPdmVyc2VhcyBFY29ub21pYyBDb29wZXJhdGlvbiBGdW5kIChPRUNGKSBzYWlkLiAgICAgT0VDRidzIGNoaWVmIHJlcHJlc2VudGF0aXZlLCBUYWthc2hpIE1hdHN1eWEsIHRvbGQgcmVwb3J0ZXJzIHRoZSBKYXBhbmVzZSBHb3Zlcm5tZW50IGlzIGFwcHJhaXNpbmcgdGhlIGxvYW4uIEFub3RoZXIgT0VDRiBvZmZpY2lhbCB0b2xkIFJldXRlcnMgSmFwYW4gaXMgbGlrZWx5IHRvIGFwcHJvdmUgdGhlIGxvYW4gYmVjYXVzZSAiaXQgaXMgdGVjaG5pY2FsbHkgYW5kIGVjb25vbWljYWxseSB2aWFibGUuIiAgICAgSWYgYXBwcm92ZWQsIHRoZSBsb2FuIHdvdWxkIGNhcnJ5IGEgY291cG9uIHJhdGUgb2YgZm91ciBwY3QsIGEgZ3JhY2UgcGVyaW9kIG9mIHNldmVuIHllYXJzLCBNYXRzdXlhIHNhaWQuIEl0IHdvdWxkIGJlIGRpc2J1cnNlZCBvdmVyIHRocmVlIHllYXJzLCBoZSBhZGRlZC4gICAgIFRoZSBwaXBlbGluZSBjb250cnVjdGlvbiBpcyB0aGUgc2Vjb25kIHBoYXNlIG9mIHRoZSBQZW5pbnN1bGFyIEdhcyBVdGlsaXNhdGlvbiBQcm9qZWN0IGJ5IFBldHJvbmFzLCBNYWxheXNpYSdzIG5hdGlvbmFsIG9pbCBjb21wYW55LiAgICAgVGhlIGZpcnN0IHBoYXNlIHdhcyB0aGUgc3VwcGx5IG9mIGdhcyB0byBob3VzZWhvbGRzIGluIGFuZCBhcm91bmQgdGhlIGVhc3Rlcm4gb2lsIHRvd24gb2YgS2VydGloLiAgUkVVVEVSIDM7CjE5ODcwNDA5CU1BUkNIIFUuUy4gU0FWSU5HUyBCT05EUyBTQUxFUyBSSVNFIFNUUk9OR0xZIFRoZSBUcmVhc3VyeSBzYWlkIHNhbGVzIG9mIEVFIFUuUy4gc2F2aW5ncyBib25kcyB3ZXJlIDE3IHBjdCBoaWdoZXIgZHVyaW5nIE1hcmNoIGF0IDcwMyBtbG4gZGxycyB0aGFuIGluIE1hcmNoLCAxOTg2LiAgICAgSXQgd2FzIHRoZSBoaWdoZXN0IHNhdmluZ3MgYm9uZCBzYWxlcyB0b3RhbCBmb3IgYW55IE1hcmNoIHNpbmNlIDE5NzguICAgICBUb3RhbCBob2xkaW5ncyBvZiBVLlMuIHNhdmluZ3MgYm9uZHMgcmVhY2hlZCA5NC43NiBiaWxsaW9uIGRscnMsIHRoZSBoaWdoZXN0IGluIHRoZSBoaXN0b3J5IG9mIHRoZSBwcm9ncmFtLCB0aGUgVHJlYXN1cnkgc2FpZC4gICAgIE1hcmNoIHJlZGVtcHRpb25zIGZlbGwgc2l4IHBjdCB0byA0NDEgbWxuIGRscnMgbGFzdCBtb250aCBmcm9tIDQ2OCBtbG4gZGxycyBpbiBNYXJjaCwgMTk4Ni4gICAgIEZvciB0aGUgZmlyc3Qgc2l4IG1vbnRocyBvZiBmaXNjYWwgMTk4Nywgc2F2aW5ncyBib25kcyBzYWxlcyBoYXZlIHJpc2VuIDEyOSBwY3QgZnJvbSB0aGUgY29tcGFyYWJsZSBmaXNjYWwgMTk4NiBwZXJpb2QgdG8gNy4wMSBiaWxsaW9uIGRscnMgZnJvbSAzLjA3IGJpbGxpb24gZGxycywgdGhlIFRyZWFzdXJ5IHNhaWQuICBSZXV0ZXIgMzsKMTk4NzA0MDkJTUFVUklUSVVTIEdFVFMgMjUgTUxOIERMUiBXT1JMRCBCQU5LIExPQU4gVGhlIFdvcmxkIEJhbmsgc2FpZCBpdCBhcHByb3ZlZCBhIDI1IG1sbiBkbHIgc3RydWN0dXJhbCBhZGp1c3RtZW50IGxvYW4gZm9yIE1hdXJpdGl1cyB0byBhaWQgdGhhdCBjb3VudHJ5J3MgaW5kdXN0cmlhbCBzZWN0b3IuICAgICBUaGUgQmFuayBzYWlkIHRoZSAxNy15ZWFyIGxvYW4gd2lsbCBzdXBwb3J0IHBvbGljeSByZWZvcm1zIGRlc2lnbmVkIHRvIGhlbHAgaW5jcmVhc2UgdGhlIGVmZmljaWVuY3kgb2YgdGhlIGNvdW50cnkncyBtYW51ZmFjdHVyaW5nIHNlY3RvciwgZGV2ZWxvcCBleHBvcnQgZW50ZXJwcmlzZXMgYW5kIGVuY291cmFnZSBlZmZpY2llbnQgdXNlIG9mIHJlc291cmNlcy4gICAgIEl0IGFkZGVkLCAiVGhlIGluY3JlYXNlZCBhdmFpbGFiaWxpdHkgb2YgZm9yZWlnbiBleGNoYW5nZSBmb3IgaW1wb3J0cyBpcyBleHBlY3RlZCB0byBoZWxwIHRoZSBleHBhbnNpb24gb2YgaW5kdXN0cmlhbCBvdXRwdXQgYW5kIGV4cG9ydHMuIiAgUmV1dGVyIDM7CjE5ODcwNDA5CU1DRE9OTkVMTCBET1VHTEFTIDxNRD4gQlVZUyBDT01QVVRFUiBGSVJNIE1jRG9ubmVsbCBEb3VnbGFzIENvcnAgc2FpZCBpdCBhY3F1aXJlZCBGcmFtcHRvbiBDb21wdXRlciBTZXJ2aWNlcyBMdGQsIGEgQnJpdGlzaCBzb2Z0d2FyZSBjb21wYW55IHRoYXQgaXMgYWxzbyBrbm93biBhcyBJc2lzLiAgICAgVGVybXMgb2YgdGhlIGFjcXVpc2l0aW9uIHdlcmUgbm90IGRpc2Nsb3NlZC4gICAgIEJhc2VkIGluIEJyaXN0b2wsIEVuZ2xhbmQsIElzaXMgZW1wbG95cyA2NSB3b3JrZXJzIGFuZCBoYXMgYW5udWFsIHJldmVudWVzIG9mIGFib3V0IGZpdmUgbWxuIGRscnMsIE1jRG9ubmVsbCBEb3VnbGFzIHNhaWQuICAgICBUaGUgY29tcGFueSBhZGRlZCB0aGF0IElzaXMgd2lsbCBvcGVyYXRlIGFzIHBhcnQgb2YgTWNEb25uZWxsIERvdWdsYXMgSW5mb3JtYXRpb24gU3lzdGVtcyBJbnRlcm5hdGlvbmFsLiAgUmV1dGVyIDM7CjE5ODcwNDA5CU1FUEMgRVhURU5EUyBPRkZFUiBGT1IgT0xESEFNIE1FUEMgUGxjIDxNRVBDLkw+IHNhaWQgdGhhdCBpdHMgb2ZmZXIgZm9yIDxPbGRoYW0gRXN0YXRlcyBMdGQ+IHdvdWxkIHJlbWFpbiBvcGVuIHVudGlsIGZ1cnRoZXIgbm90aWNlLiAgICAgT24gRmVicnVhcnkgMjYgTUVQQyBtYWRlIGFuIGFncmVlZCBiaWQgZm9yIE9sZGhhbSBiYXNlZCBvbiBhIGZvcm11bGEgcmVmbGVjdGluZyBpdHMgYXNzZXQgdmFsdWUgYXQgMzAgU2VwdGVtYmVyIDE5ODYuIEEgeWVhciBlYXJsaWVyIE9sZGhhbSdzIG5ldCBhc3NldCB2YWx1ZSB3YXMgcHV0IGF0IDUzMS40IG1sbiBzdGcuICAgICBBcyBvZiAxIEFwcmlsIHRoZSB2YWx1YXRpb24gdXNlZCB1bmRlciB0aGUgZm9ybXVsYSBoYWQgc3RpbGwgdG8gYmUgYWdyZWVkIHNvIE9sZGhhbSBoYWQgeWV0IHRvIGdpdmUgYSBmaXJtIHJlY29tbWVuZGF0aW9uIHRvIGl0cyBzaGFyZWhvbGRlcnMgcmVnYXJkaW5nIHRoZSB2YWx1ZSBvZiB0aGUgdGhlIG9mZmVyLiAgUkVVVEVSIDM7CjE5ODcwNDA5CU1FUkNBTlRJTEUgU1RPUkVTIDxNU1Q+IE1BUkNIIFNBTEVTIFVQIDAuNSBQQ1QgTWVyY2FudGlsZSBTdG9yZXMgQ28gSW5jIHNhaWQgc2FsZXMgZm9yIHRoZSBmaXZlIHdlZWtzIGVuZGVkIEFwcmlsIGZvdXIgd2VyZSB1cCAwLjUgcGN0IHRvIDE4NC43IG1sbiBkbHJzIGZyb20gMTgzLjcgbWxuIGRscnMgYSB5ZWFyIGVhcmxpZXIsIHdpdGggc2FtZS1zdG9yZSBzYWxlcyBvZmYgMS43IHBjdC4gICAgIE1lcmNhbnRpbGUgc2FpZCBzYWxlcyBmb3IgdGhlIGZpcnN0IG5pbmUgd2Vla3Mgb2YgaXRzIGZpc2NhbCB5ZWFyIHdlcmUgdXAgMi45IHBjdCB0byAyOTcuOSBtbG4gZGxycyBmcm9tIDI4OS42IG1sbiBkbHJzIGEgeWVhciBiZWZvcmUsIHdpdGggc2FtZS1zdG9yZSBzYWxlcyB1cCAwLjUgcGN0IHRvIDI4OC42IG1sbiBkbHJzIGZyb20gMjg3LjMgbWxuIGRscnMuICBSZXV0ZXIgMzsKMTk4NzA0MDkJTUlDSElHQU4gR0VORVJBTCA8TUdMPiBFWFRFTkRTIEVYQ0hBTkdFIE9GRkVSIE1pY2hpZ2FuIEdlbmVyYWwgQ29ycCBzYWlkIGl0IGhhcyBleHRlbmRlZCBpdHMgZXhjaGFuZ2Ugb2ZmZXIgZm9yIGl0cyAxMC0zLzQgcGN0IHNlbmlvciBzdWJvcmRpbmF0ZWQgZGViZW50dXJlcyBkdWUgRGVjZW1iZXIgMSwgMTk4OCB1bnRpbCBBcHJpbCAyMy4gICAgIEl0IHNhaWQgdGhlIG9mZmVyIGlzIGJlaW5nIGV4dGVuZGVkIHRvIGFsbG93IGl0IHRvIGNvbmNsdWRlIHRhbGtzIHdpdGggaXRzIGxlbmRlciBhbmQgd2l0aCByZXByZXNlbnRhdGl2ZXMgb2YgdGhlIGhvbGRlcnMgb2YgNzUgcGN0IG9mIHRoZSBkZWJlbnR1cmVzIG9uIHRoZSB0ZXJtcyBvZiB0aGUgb2ZmZXIuICAgICBUaGUgaG9sZGVycyBoYXZlIGluZGljYXRlZCB0aGVpciBpbnRlbnRpb24gdG8gdGVuZGVyIGFuZCB0byByZWFjaCBhbiBhZ3JlZW1lbnQgd2l0aCB0aGUgY29tcGFueSwgTWljaGlnYW4gR2VuZXJhbCBzYWlkLiAgUmV1dGVyIDM7CjE5ODcwNDA5CU1JRExBTlRJQyBDT1JQIDxNSURMPiAxU1QgUVRSIE5FVCBTaHIgZGlsdXRlZCAxLjE4IGRscnMgdnMgMS4wNCBkbHJzICAgICBOZXQgNDUuMCBtbG4gdnMgMzkuMiBtbG4gICAgIEFzc2V0cyAxNi43IGJpbGxpb24gdnMgMTUuMiBiaWxsaW9uICAgICBEZXBvc2l0cyAxMy4wIGJpbGxpb24gdnMgMTIuMSBiaWxsaW9uICAgICBMb2FucyAxMS45IGJpbGxpb24gdnMgMTAuMSBiaWxsaW9uICAgICBOT1RFOiBSZXN1bHRzIHJlc3RhdGVkIGZvciBtZXJnZXIgb2YgTWlkbGFudGljIEJhbmtzIEluYyBhbmQgQ29udGluZW50YWwgQmFuY29ycCBJbmMgb24gSmFudWFyeSAzMCwgMTk4Ny4gIFJldXRlciAzOwoxOTg3MDQwOQlNSU5OVEVDSCA8TU5UWD4gU0VFUyBGSVJTVCBRVUFSVEVSIExPU1MgTWlubnRlY2ggQ29ycCBzYWlkIGl0IGV4cGVjdHMgdG8gcmVwb3J0IGxvc3MgZm9yIGl0cyBmaXNjYWwgMTk4OCBmaXJzdCBxdWFydGVyIHRvIGVuZCBKdW5lIDMwLCBkdWUgdG8gc3RhcnQtdXAgY29zdHMgcmVsYXRlZCB0byBhIG5ldyBtZW1icmFuZSBveHlnZW5hdG9yIGFuZCB3YXRlciBmaWx0cmF0aW9uIHByb2R1Y3RzLiAgICAgSG93ZXZlciwgcmV2ZW51ZXMgYW5kIGVhcm5pbmdzIHNob3VsZCBjb25zaXN0ZW50bHkgaW5jcmVhc2UgdGhyb3VnaG91dCB0aGUgcmVtYWluZGVyIG9mIHRoZSB5ZWFyLCBQcmVzaWRlbnQgTG91aXMgQ29zZW50aW5vIHRvbGQgYW5hbHlzdHMuICBSZXV0ZXIgMzsKMTk4NzA0MDkJTUlUU1VCSVNISSBUTyBJU1NVRSBUV08gQ09OVkVSVElCTEUgQk9ORFMgTWl0c3ViaXNoaSBDb3JwIDxNSVRULlQ+IHNhaWQgaXQgd2lsbCBpc3N1ZSBhIDUwIGJpbGxpb24geWVuIHVuc2VjdXJlZCBzZXZlbi15ZWFyIGNvbnZlcnRpYmxlIGJvbmQgYW5kIGEgMzAgYmlsbGlvbiB5ZW4gdW5zZWN1cmVkIG5pbmUteWVhciBjb252ZXJ0aWJsZSBib25kIG9uIHRoZSBkb21lc3RpYyBjYXBpdGFsIG1hcmtldCB0aHJvdWdoIHB1YmxpYyBwbGFjZW1lbnQgd2l0aCBOaWtrbyBTZWN1cml0aWVzIENvIEx0ZCBhcyBsZWFkIG1hbmFnZXIuICAgICBDb3Vwb24gYW5kIGNvbnZlcnNpb24gcHJpY2UgZm9yIGJvdGggcGFyLXByaWNlZCBib25kcyB3aWxsIGJlIHNldCBhdCBhIGJvYXJkIG1lZXRpbmcgdG8gYmUgaGVsZCBsYXRlciB0aGlzIG1vbnRoIGFuZCBwYXltZW50IGlzIGR1ZSBvbiBNYXkgMTQsIE1pdHN1YmlzaGkgc2FpZCBpbiBhIHN0YXRlbWVudC4gVGhlIHNldmVuLXllYXIgYm9uZCBtYXR1cmVzIG9uIFNlcHRlbWJlciAzMCwgMTk5NCwgYW5kIHRoZSBuaW5lLXllYXIgYm9uZCBvbiBTZXB0ZW1iZXIgMzAsIDE5OTYuIE1pdHN1YmlzaGkncyBzaGFyZSBwcmljZSBmZWxsIDMwIHllbiB0byAxLDIwMCBvbiB0aGUgVG9reW8gU3RvY2sgRXhjaGFuZ2UgdG9kYXkuICBSRVVURVIgMzsKMTk4NzA0MDkJTUlZQVpBV0EgU0FZUyBZRU4gU1RJTEwgSU5TSURFIFBBUklTIFJBTkdFIEphcGFuZXNlIEZpbmFuY2UgTWluaXN0ZXIgS2lpY2hpIE1peWF6YXdhIHNhaWQgdGhlIHN0cmVuZ3RoZW5pbmcgb2YgdGhlIHllbiBhZ2FpbnN0IHRoZSBkb2xsYXIgc2luY2UgdGhlIFBhcmlzIEFncmVlbWVudCB3YXMgd2l0aGluIHRoZSByYW5nZSBhZ3JlZWQgaW4gdGhlIExvdXZyZSBkaXNjdXNzaW9ucy4gICAgICJJIHdvdWxkIHNheSB0aGF0IHdoYXQgaGFzIGhhcHBlbmVkICh0byB0aGUgeWVuKSBpbiB0aGUgcGFzdCBzZXZlcmFsIHdlZWtzIHdhcyBub3Qgb3V0c2lkZSB0aGUgcmFuZ2Ugd2UgYWdyZWVkIHRvIGluIHRoZSBkaXNjdXNzaW9ucyBpbiBQYXJpcywiIE1peWF6YXdhIHRvbGQgYSBwcmVzcyBjb25mZXJlbmNlIGZvbGxvd2luZyB0aGUgR3JvdXAgb2YgU2V2ZW4gbWVldGluZyBoZXJlLiAgICAgSGUgc2FpZCB0aGUgY3VycmVudCBkaXNjdXNzaW9ucyB3ZXJlIGEgInJlYWZmaXJtYXRpb24iIG9mIHRoYXQgYWdyZWVtZW50LCBzYXlpbmcgdGhlICJzb2xpZGFyaXR5IiB0aGF0IG9jY3VycmVkIGluIFBhcmlzIHdhcyBzdGlsbCBpbiBwbGFjZS4gIFJldXRlciAzOwoxOTg3MDQwOQlNSVlBWkFXQSBTQVlTIFlFTiBTVElMTCBJTlNJREUgUEFSSVMgUkFOR0UgSmFwYW5lc2UgRmluYW5jZSBNaW5pc3RlciBLaWljaGkgTWl5YXphd2Egc2FpZCB0aGUgc3RyZW5ndGhlbmluZyBvZiB0aGUgeWVuIGFnYWluc3QgdGhlIGRvbGxhciB0aGF0IGhhcyBvY2N1cnJlZCBzaW5jZSB0aGUgUGFyaXMgQWdyZWVtZW50IHdhcyB3aXRoaW4gdGhlIHJhbmdlIGFncmVlZCBvbiBpbiB0aGUgTG91dnJlIGRpc2N1c3Npb25zLiAgICAgIkkgd291bGQgc2F5IHRoYXQgd2hhdCBoYXMgaGFwcGVuZWQgKHRvIHRoZSB5ZW4pIGluIHRoZSBwYXN0IHNldmVyYWwgd2Vla3Mgd2FzIG5vdCBvdXRzaWRlIHRoZSByYW5nZSB3ZSBhZ3JlZWQgdG8gaW4gdGhlIGRpc2N1c3Npb25zIGluIFBhcmlzLCIgTWl5YXphd2EgdG9sZCBhIHByZXNzIGNvbmZlcmVuY2UgZm9sbG93aW5nIHRoZSBHcm91cCBvZiBTZXZlbiBtZWV0aW5nIGhlcmUuICAgICBIZSBhZGRlZCB0aGF0IHRoZSBjdXJyZW50IGRpc2N1c3Npb25zIHdlcmUgYSAicmVhZmZpcm1hdGlvbiIgb2YgdGhhdCBhZ3JlZW1lbnQsIGluZGljYXRpbmcgdGhhdCB0aGUgInNvbGlkYXJpdHkiIHRoYXQgb2NjdXJyZWQgaW4gUGFyaXMgd2FzIHN0aWxsIGluIHBsYWNlLiAgcmV1dGVyIDM7CjE5ODcwNDA5CU1PQklMIEFVU1RSQUxJQSBSRVBPUlRTIDM4LjYgTUxOIERMUiAxOTg2IExPU1MgV2hvbGx5LW93bmVkIE1vYmlsIENvcnAgPE1PQj4gdW5pdCwgPE1vYmlsIE9pbCBBdXN0cmFsaWEgTHRkPiwgcmVwb3J0ZWQgYSAzOC42MyBtbG4gZGxyIG5ldCBsb3NzIGluIDE5ODYsIGEgdHVybmFyb3VuZCBmcm9tIGl0cyAzNy4yNSBtbG4gcHJvZml0IGluIDE5ODUuICAgICBUaGUgbG9zcyByZWZsZWN0ZWQgYSBjb21iaW5hdGlvbiBvZiBzdHJpa2VzIHBsdXMgc2NoZWR1bGVkIGFuZCB1bnNjaGVkdWxlZCByZWZpbmVyeSBzaHV0ZG93bnMgZm9yIG1haW50ZW5hbmNlIGFuZCBpbnZlbnRvcnkgbG9zc2VzIGNhdXNlZCBieSBnb3Zlcm5tZW50IGNvbnRyb2xzIG9uIGJvdGggY3J1ZGUgYW5kIHByb2R1Y3QgcHJpY2VzLCBNb2JpbCBzYWlkIGluIGEgc3RhdGVtZW50LiAgICAgSG93ZXZlciwgZXF1aXR5LWFjY291bnRpbmcgb2YgYXNzb2NpYXRlcycgcHJvZml0cyByZWR1Y2VkIHRoZSBsb3NzIHRvIDI0IG1sbiBkbHJzIGFnYWluc3QgYSAzNyBtbG4gcHJvZml0IGluIDE5ODUuICAgICBNb2JpbCBzYWlkIGl0IHdhcyBjb25maWRlbnQgMTk4NyB3b3VsZCBzZWUgYSByZXR1cm4gdG8gcHJvZml0IGFzIGl0IGJ1aWx0IGZ1cnRoZXIgb24gaXRzIDE5ODUgY29tcGFueSByZXN0cnVjdHVyaW5nLiAgUkVVVEVSIDM7CjE5ODcwNDA5CU1PTlNBTlRPIDxNVEM+IFVOSVQgU0VFUyBPUEVSQVRJTkcgTE9TUyBJTiAxOTg3IE1vbnNhbnRvIENvcnAncyBHLkQuIFNlYXJsZSBhbmQgQ28gdW5pdCBzYWlkIGl0IHdpbGwgcmVwb3J0IGFuIG9wZXJhdGluZyBsb3NzIGZvciAxOTg3LCBtYWlubHkgZHVlIHRvIGV4cGVuc2VzIGZvciByZXNlYXJjaCBhbmQgZGV2ZWxvcG1lbnQuICAgICBTZWFybGUgY2hhaXJtYW4gU2hlbGRvbiBHaWxnb3JlIHNhaWQgU2VhcmxlJ3Mgb3BlcmF0aW5nIGxvc3MgaW4gMTk4NyB3aWxsIGJlIGxlc3MgdGhhbiB0aGUgODcgbWxuIGRsciBvcGVyYXRpbmcgbG9zcyBpbiAxOTg2LiAgICAgSGUgc2FpZCBTZWFybGUncyBmaXJzdCBxdWFydGVyIHNhbGVzIHdpbGwgYmUgdXAgMjEuOCBwY3QgdG8gMTc5IG1sbiBkbHJzIGZyb20gMTQ3IG1sbiBkbHJzIGluIHRoZSB5ZWFyIGFnbyBxdWFydGVyLiBJbiAxOTg2IFNlYXJsZSdzIHNhbGVzIHdlcmUgNjY1IG1sbiBkbHJzLiAgICAgR2lsZ29yZSBzYWlkIHRoZSBjb21wYW55IGludGVuZHMgdG8gaGF2ZSBzYWxlcyBvZiB0aHJlZSBiaWxsaW9uIGRscnMgYnkgdGhlIG1pZC0xOTkwcy4gICAgIEhlIHNhaWQgdGhlIGNvbXBhbnkgYW50aWNpcGF0ZXMgYXBwcm92YWwgaW4gSmFwYW4sIHRoZSBVLlMuLCBJdGFseSwgU3BhaW4gYW5kIHRoZSBVLksuIGZvciBpdHMgdWxjZXIgdHJlYXRtZW50IGRydWcgQ3l0b3RlY2guICAgICBIZSBhbHNvIHNhaWQgdGhhdCBpbiBhIHBhcGVyIG5vdCB5ZXQgcHVibGlzaGVkIHRoZSBkcnVnIHdhcyBzaG93biB0byBwcmV2ZW50IGEgZmxhcmUtdXAgb2YgdWxjZXJzIGZvciBhIGxvbmdlciBwZXJpb2Qgb2YgdGltZSB0aGFuIFRhZ2FtZXQsIG1hZGUgYnkgU21pdGhLbGluZSBCZWNrbWFuIENvcnAgPFNLQj4uICAgICBPdGhlciBkcnVncyBpbiBTZWFybGUncyBwaXBlbGluZSBpbmNsdWRlIHRpc3N1ZSBwbGFzbWlub2dlbiBhY3RpdmF0b3IgKFRQQSksIG1hZGUgYnkgYSBkaWZmZXJlbnQgcHJvY2VzcyB0aGFuIEdlbmVudGVjaCdzIDxHRU5FPiBUUEEsIGV4cGVjdGVkIHRvIGJlIGFwcHJvdmVkIGZvciBtYXJrZXRpbmcgdGhpcyB5ZWFyLiAgICAgIFJldXRlciAzOwoxOTg3MDQwOQlNT09SRSA8TUNMPiBTRUVTIFNVQlNUQU5USUFMIDE5ODcgUFJPRklUIEdBSU4gTW9vcmUgQ29ycCBMdGQgZXhwZWN0cyAxOTg3IHByb2ZpdHMgZnJvbSBjb250aW51aW5nIG9wZXJhdGlvbnMgd2lsbCBleGNlZWQgMTk4NiByZXN1bHRzIGFuZCByZWNvdmVyIHRvIDE5ODUgbGV2ZWxzIHdoZW4gdGhlIGNvbXBhbnkgZWFybmVkIDE1MiBtbG4gVS5TLiBkbHJzIG9yIDEuNzAgZGxycyBhIHNoYXJlLCBwcmVzaWRlbnQgTS4gS2VpdGggR29vZHJpY2ggc2FpZC4gICAgICJXZSdsbCBoYXZlIGEgc3Vic3RhbnRpYWwgaW5jcmVhc2UgaW4gZWFybmluZ3MgZnJvbSBjb250aW51aW5nIG9wZXJhdGlvbnMsIiBoZSB0b2xkIHJlcG9ydGVycyBhZnRlciB0aGUgYW5udWFsIG1lZXRpbmcuIEhlIHNhaWQgaGUgZXhwZWN0ZWQgcHJvZml0cyB3b3VsZCByZWNvdmVyIGxhc3QgeWVhcidzIGxvc3QgZ3JvdW5kIGFuZCByZWFjaCAxOTg1IHJlc3VsdHMuICAgICBJbiAxOTg2LCBwcm9maXRzIGZyb20gY29udGludWluZyBvcGVyYXRpb25zIHNsdW1wZWQgdG8gMTM5LjUgbWxuIGRscnMgb3IgMS41NCBkbHJzIGEgc2hhcmUuIFRoZSB0b3RhbCBleGNsdWRlZCBsb3NzZXMgb2YgMzAgbWxuIGRscnMgb24gZGlzY29udGludWVkIG9wZXJhdGlvbnMuICAgICBHb29kcmljaCBzYWlkIE1vb3JlIGlzIHN0aWxsIGFjdGl2ZWx5IGxvb2tpbmcgZm9yIGFjcXVpc2l0aW9ucyByZWxhdGVkIHRvIGl0cyBjb3JlIGFyZWFzIG9mIGJ1c2luZXNzIGZvcm1zIG1hbnVmYWN0dXJpbmcgb3IgaGFuZGxpbmcuICAgICAiV2UgY291bGQgZG8gYSBsYXJnZSBhY3F1aXNpdGlvbiwiIGhlIHNhaWQgd2hlbiBhc2tlZCBpZiB0aGUgY29tcGFueSBjb3VsZCByYWlzZSBhcyBtdWNoIGFzIG9uZSBiaWxsaW9uIGRscnMgZm9yIHRoaXMgcHVycG9zZS4gICAgIENoYWlybWFuIEp1ZHNvbiBTaW5jbGFpciwgYW5zd2VyaW5nIGEgc2hhcmVob2xkZXIncyBxdWVzdGlvbiwgdG9sZCB0aGUgYW5udWFsIG1lZXRpbmcgdGhhdCBhIHNwZWNpYWwgcmVzb2x1dGlvbiBwYXNzZWQgYnkgc2hhcmVob2xkZXJzIHRvIGNyZWF0ZSBhIG5ldyBjbGFzcyBvZiBwcmVmZXJyZWQgc2hhcmVzIHdvdWxkIGFsbG93IE1vb3JlIHRvIG1vdmUgcXVpY2tseSBpZiBpdCBkZWNpZGVkIHRvIHB1cnN1ZSBhbiBhY3F1aXNpdGlvbi4gICAgICJJZiB3ZSB3ZXJlIHRvIG1ha2UgYSBtYWpvciBhY3F1aXNpdGlvbiAuLi4gaXQgbWVhbnMgd2UgY2FuIG1vdmUgd2l0aCBhIGNlcnRhaW4gZXhwZWRpZW5jeSwiIFNpbmNsYWlyIHNhaWQuICAgICBBc2tlZCBpZiB0aGUgcmVzb2x1dGlvbiB3YXMgZGVzaWduZWQgdG8gZ2l2ZSBNb29yZSBwcm90ZWN0aW9uIGZyb20gYSBwb3NzaWJsZSBob3N0aWxlIHRha2VvdmVyLCBTaW5jbGFpciBzYWlkIG9ubHksICJJIGtub3cgb2Ygbm8gdGhyZWF0IHRvIHRoZSBjb3Jwb3JhdGlvbiBhdCB0aGlzIHRpbWUuIiAgICAgICAgICAgUmV1dGVyIDM7CjE5ODcwNDA5CU1PUkdBTiwgT0xNU1RFQUQsIEtFTk5FRFkgPE1PS0c+IE5BTUVTIFBSRVMgTW9yZ2FuLCBPbG1zdGVhZCwgS2VubmVkeSBhbmQgR2FyZG5lciBDYXBpdGFsIENvcnAgc2FpZCBNaWNoYWVsIEZ1c2NvIGhhcyBiZWVuIG5hbWVkIHByZXNpZGVudCBvZiBpdHMgc2VjdXJpdGllcyBicm9rZXJhZ2UgYW5kIGludmVzdG1lbnQgYmFua2luZyBmaXJtLCBNb3JnYW4sIE9sbXN0ZWFkLCBLZW5uZWR5IGFuZCBHYXJkbmVyIEluYy4gICAgIEZ1c2NvIGZvcm1lcmx5IHdhcyBleGVjdXRpdmUgdmljZSBwcmVzaWRlbnQgb2YgUGFpbmVXZWJiZXIgSW5jLiAgICAgSGUgcmVwbGFjZXMgRy4gQnJ5YW4gSGVycm1hbm4sIHdobyB3aWxsIHJldGFpbiBoaXMgdGl0bGUgb2YgcHJlc2lkZW50IG9mIHRoZSBwYXJlbnQgZ3JvdXAsIGFuZCBhc3N1bWUgdGhlIHRpdGxlIG9mIHZpY2UgY2hhaXJtYW4gb2YgdGhlIHBhcmVudCwgdGhlIGNvbXBhbnkgc2FpZC4gIFJldXRlciAzOwoxOTg3MDQwOQlNT1JPQ0NPIFRFTkRFUlMgRk9SIDU1LDAwMCBUT05ORVMgUEwgNDgwIFNPWU9JTCBNb3JvY2NvIGlzIHNjaGVkdWxlZCB0byB0ZW5kZXIgQXByaWwgMTQgZm9yIGEgdG90YWwgb2YgNTUsMDAwIHRvbm5lcyBvZiBVLlMuIHNveW9pbCB1bmRlciBQTC00ODAgZm9yIHNoaXBtZW50cyBmcm9tIE1heSB0aHJvdWdoIFNlcHRlbWJlciwgcHJpdmF0ZSBleHBvcnQgc291cmNlcyBzYWlkLiAgICAgVGhlIHRlbmRlciBjYWxscyBmb3Igc2hpcG1lbnQgb2YgNiwxMDAgdG9ubmVzIGluIE1heSwgMTIsMjAwIHRvbm5lcyBlYWNoIGluIEp1bmUsIEp1bHkgYW5kIEF1Z3VzdCBhbmQgMTIsMzAwIHRvbm5lcyBpbiBTZXB0ZW1iZXIsIHRoZXkgc2FpZC4gIFJldXRlciAzOwoxOTg3MDQwOQlOLlkuIEJBTksgRElTQ09VTlQgQk9SUk9XSU5HUyAxNjkgTUxOIERMUlMgVGhlIGVpZ2h0IG1ham9yIE5ldyBZb3JrIENpdHkgYmFua3MgaGFkIGRhaWx5IGF2ZXJhZ2UgYm9ycm93aW5ncyBvZiAxNjkgbWxuIGRscnMgZnJvbSB0aGUgRmVkZXJhbCBSZXNlcnZlIGluIHRoZSB3ZWVrIGVuZGVkIEFwcmlsIDgsIGEgRmVkIHNwb2tlc21hbiBzYWlkLiAgICAgQSBGZWQgc3Bva2VzbWFuIHNhaWQgdGhhdCBhbGwgb2YgdGhlIGJvcnJvd2luZ3Mgd2VyZSBtYWRlIHllc3RlcmRheSBieSBmZXdlciB0aGFuIGhhbGYgdGhlIGJhbmtzLiAgICAgSXQgd2FzIHRoZSBzZWNvbmQgaGFsZiBvZiB0aGUgdHdvLXdlZWsgYmFuayBzdGF0ZW1lbnQgcGVyaW9kIHRoYXQgZW5kZWQgb24gV2VkbmVzZGF5LiBBdmVyYWdlIGJvcnJvd2luZ3MgYnkgdGhlc2UgYmFua3Mgd2VyZSAxNDIgbWxuIGRscnMgaW4gdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHBlcmlvZC4gICAgICBSZXV0ZXIgMzsKMTk4NzA0MDkJTi5aLiBUUkFESU5HIEJBTksgREVQT1NJVCBHUk9XVEggRUFTRVMgU0xJR0hUTFkgTmV3IFplYWxhbmQncyB0cmFkaW5nIGJhbmsgc2Vhc29uYWxseSBhZGp1c3RlZCBkZXBvc2l0IGdyb3d0aCByb3NlIDIuMSBwY3QgaW4gRmVicnVhcnkgY29tcGFyZWQgd2l0aCBhIDIuNiBwY3QgcmlzZSBpbiBKYW51YXJ5LCB0aGUgUmVzZXJ2ZSBCYW5rIHNhaWQuICAgICBZZWFyLW9uLXllYXIgdG90YWwgZGVwb3NpdHMgcm9zZSAyOC45IHBjdCBjb21wYXJlZCB3aXRoIGEgMzAuNiBwY3QgcmlzZSBpbiBKYW51YXJ5IGFuZCAzNC40IHBjdCByaXNlIGluIEZlYnJ1YXJ5IGEgeWVhciBhZ28gcGVyaW9kLCB0aGUgYmFuayBzYWlkIGluIGl0cyB3ZWVrbHkgc3RhdGlzdGljYWwgcmVsZWFzZS4gICAgIFRvdGFsIGRlcG9zaXRzIHJvc2UgdG8gMTcuNTUgYmlsbGlvbiBOLlouIERscnMgaW4gRmVicnVhcnkgY29tcGFyZWQgd2l0aCAxNy4xOCBiaWxsaW9uIGluIEphbnVhcnkgYW5kIDEzLjYxIGJpbGxpb24gaW4gRmVicnVhcnkgMTk4Ni4gIFJldXRlciAzOwoxOTg3MDQwOQlOQVBDTyA8TlBDTz4gTUFOQUdFTUVOVCBDQU5OT1QgUkFJU0UgRlVORElORyBOYXBjbyBJbnRlcm5hdGlvbmFsIEluYyBzYWlkIGl0IGhhcyBzdXNwZW5kZWQgaXRzIHBsYW4gdG8gc2VsbCBpdHMgaW50ZXJuYXRpb25hbCBidXNpbmVzcyB0byBhIGdyb3VwIG9mIHRoYXQgYnVzaW5lc3MnIHRvcCBtYW5hZ2VycyBiZWNhdXNlIHRoZSBncm91cCBoYXMgZmFpbGVkIHRvIG9idGFpbiBzYXRpc2ZhY3RvcnkgZmluYW5jaW5nLiAgICAgVGhlIGNvbXBhbnkgYWxzbyBzYWlkIGl0IHN0aWxsIGludGVuZHMgdG8gcHVyc3VlIGEgbmV3IGNvcnBvcmF0ZSBkaXJlY3Rpb24sIGFuZCBpcyBleHBsb3JpbmcgYWNxdWlzaXRpb24gYWx0ZXJuYXRpdmVzLiAgUmV1dGVyIDM7CjE5ODcwNDA5CU5BVElPTkFMIEFWRVJBR0UgUFJJQ0VTIEZPUiBGQVJNRVItT1dORUQgUkVTRVJWRSBUaGUgVS5TLiBBZ3JpY3VsdHVyZSBEZXBhcnRtZW50IHJlcG9ydGVkIHRoZSBmYXJtZXItb3duZWQgcmVzZXJ2ZSBuYXRpb25hbCBmaXZlLWRheSBhdmVyYWdlIHByaWNlIHRocm91Z2ggQXByaWwgOCBhcyBmb2xsb3dzIChEbHJzL0J1LVNvcmdodW0gQ3d0KSAtICAgICAgICAgIE5hdGwgICBMb2FuICAgICAgICAgICBSZWxlYXNlICAgQ2FsbCAgICAgICAgICBBdmdlICAgUmF0ZS1YICBMZXZlbCAgICBQcmljZSAgUHJpY2UgIFdoZWF0ICAgMi42MiAgIDIuNDAgICAgICAgSVYgICAgIDQuNjUgICAgIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWICAgICA0LjY1ICAgICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWSSAgICAgNC40NSAgICAgLS0gIENvcm4gICAgMS4zOCAgIDEuOTIgICAgICAgSVYgICAgIDMuMTUgICAzLjE1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWICAgICAzLjI1ICAgICAtLSAgWCAtIDE5ODYgUmF0ZXMuICAgICAgICAgICBOYXRsICAgTG9hbiAgICAgICAgICBSZWxlYXNlICAgQ2FsbCAgICAgICAgICAgQXZnZSAgIFJhdGUtWCAgTGV2ZWwgICBQcmljZSAgUHJpY2UgIE9hdHMgICAgIDEuNTggICAwLjk5ICAgICAgICBWICAgIDEuNjUgICAgLS0gICBCYXJsZXkgICAxLjU1ICAgMS41NiAgICAgICBJViAgICAyLjU1ICAgMi41NSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFYgICAgMi42NSAgICAtLSAgIFNvcmdodW0gIDIuNTQgICAzLjI1LVkgICAgIElWICAgIDUuMzYgICA1LjM2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgViAgICA1LjU0ICAgIC0tICAgICAgUmVzZXJ2ZXMgSSwgSUkgYW5kIElJSSBoYXZlIG1hdHVyZWQuIExldmVsIElWIHJlZmxlY3RzIGdyYWluIGVudGVyZWQgYWZ0ZXIgT2N0IDYsIDE5ODEgZm9yIGZlZWRncmFpbiBhbmQgYWZ0ZXIgSnVseSAyMywgMTk4MSBmb3Igd2hlYXQuIExldmVsIFYgd2hlYXQvYmFybGV5IGFmdGVyIDUvMTQvODIsIGNvcm4vc29yZ2h1bSBhZnRlciA3LzEvODIuIExldmVsIFZJIGNvdmVycyB3aGVhdCBlbnRlcmVkIGFmdGVyIEphbnVhcnkgMTksIDE5ODQuICBYLTE5ODYgcmF0ZXMuIFktZGxycyBwZXIgQ1dUICgxMDAgbGJzKS4gIFJldXRlciAzOwoxOTg3MDQwOQlOQVRJT05BTCBCRVZFUkFHRSBUTyBBQ1FVSVJFIEZBWUdPIDxOYXRpb25hbCBCZXZlcmFnZSBDb3JwPiBzYWlkIGl0IGFncmVlZCB0byBhY3F1aXJlIHByaXZhdGVseSBoZWxkIEZheWdvIEJldmVyYWdlcyBJbmMgZm9yIGFuIHVuZGlzY2xvc2VkIGFtb3VudCBvZiBjYXNoLiAgICAgVGhlIGNvbXBhbnkgc2FpZCBEZXRyb2l0LWJhc2VkIEZheWdvLCBhIHNvZnQgZHJpbmsgbWFrZXIsIGhhcyBhbm51YWwgcmV2ZW51ZXMgb2YgbW9yZSB0aGFuIDEwMCBtbG4gZGxycy4gICAgIE5hdGlvbmFsIEJldmVyYWdlLCB3aGljaCBpcyBhbHNvIHByaXZhdGVseSBoZWxkLCBvd25zIGFuZCBib3R0bGVzIFNoYXN0YSBCZXZlcmFnZXMsIFNwcmVlIEFsbCBOYXR1cmFsIEJldmVyYWdlcyBhbmQgcHJpdmF0ZSBsYWJlbCBicmFuZHMgaW4gaXRzIDExIGJvdHRsaW5nIGZhY2lsaXRpZXMgaW4gdGhlIFVuaXRlZCBTdGF0ZXMuICBSZXV0ZXIgMzsKMTk4NzA0MDkJTkFUSU9OQUwgQkVWRVJBR0UgVE8gQUNRVUlSRSBGQVlHTyBCRVZFUkFHRVMgPE5hdGlvbmFsIEJldmVyYWdlIENvcnA+IHNhaWQgaXQgYWdyZWVkIHRvIGFjcXVpcmUgPEZheWdvIEJldmVyYWdlcyBJbmM+IGZvciBhbiB1bmRpc2Nsb3NlZCBhbW91bnQgb2YgY2FzaC4gICAgIEZheWdvIGhhcyByZXZlbnVlcyBpbiBleGNlc3Mgb2Ygb2YgMTAwIG1sbiBkbHJzLCBOYXRpb25hbCBCZXZlcmFnZSBzYWlkLiAgICAgICBSZXV0ZXIgMzsKMTk4NzA0MDkJTkFUSU9OQUwgQ09NUFVURVIgPE5MQ1M+IFNFRVMgRUFSTklOR1MgR1JPV1RIIE5hdGlvbmFsIENvbXB1dGVyIFN5c3RlbXMgSW5jIGV4cGVjdHMgZmlzY2FsIHllYXIgZWFybmluZ3MgdG8gaW1wcm92ZSBieSBhYm91dCAyMCBwY3QsIHRoZSBjb21wYW55IHRvbGQgYW5hbHlzdHMsIGFsdGhvdWdoIGl0IHNhaWQgdGhlIEFwcmlsIDMwIGZpcnN0IHF1YXJ0ZXIgc2hvdWxkIHNob3cgImRvd24gZWFybmluZ3MgYW5kIHZpcnR1YWxseSBmbGF0IHJldmVudWVzLiIgICAgIENoYWlybWFuIENoYXJsZXMgT3N3YWxkIHNhaWQgTmF0aW9uYWwgQ29tcHV0ZXIgaGFzIHRha2VuIHN0ZXBzIHRvIGltcHJvdmUgbWFyZ2lucy4gSGUgc2FpZCByZXZlbnVlcyBhcmUgZXhwZWN0ZWQgdG8gaW5jcmVhc2UgbW9kZXN0bHkgYmVjYXVzZSBvZiB0aGUgY29tcGFueSdzIGRlY2lzaW9uIHRvIGRvd25zaXplIGl0cyBsZWFzaW5nIGJ1c2luZXNzLCBub25yZWN1cnJpbmcgcmV2ZW51ZXNsYXN0IHllYXIgZnJvbSBhIG9uZS10aW1lIFRleGFzIHRlYWNoZXIgYXNzZXNzbWVudCBwcm9qZWN0IGFuZCB0aGUgaW1wYWN0IG9mIHRoZSBkaXNjb250aW51YW5jZSBvZiBwcm9kdWN0cyBsYXN0IHllYXIuICAgICBPc3dhbGQgc2FpZCBOYXRpb25hbCBDb21wdXRlcidzIGZpcnN0IHF1YXJ0ZXIgcmVzdWx0cyB3aWxsIGJlIGRvd24gYXMgYSByZXN1bHQgb2YgYSBtYWpvciBmaW5hbmNpYWwgc3lzdGVtcyBzYWxlcyBsYXN0IHllYXIsIGEgaGlnaGVyIGVmZmVjdGl2ZSB0YXggcmF0ZSBhbmQgdGhlIGluY3JlYXNlZCBudW1iZXIgb2Ygc2hhcmVzIG91dHN0YW5kaW5nLiAgICAgVGhlIGNvbXBhbnkgc2FpZCB0aGUgbmV4dCB0aHJlZSBjb25zZWN1dGl2ZSBxdWFydGVycyBzaG91bGQgZGVtb25zdHJhdGUgImV4Y2VsbGVudCBlYXJuaW5ncyBncm93dGguIiAgUmV1dGVyIDM7CjE5ODcwNDA5CU5BVElPTkFMIERJU1RJTExFUlMgPERSPiBTRUVTIFNFQ09ORCBRVFIgR0FJTiBOYXRpb25hbCBEaXN0aWxsZXJzIGFuZCBDaGVtaWNhbCBDb3JwIGV4cGVjdHMgdG8gcmVhbGl6ZSBhIHNlY29uZCBxdWFydGVyIGFmdGVyLXRheCBnYWluIG9mIGZvdXIgZGxycyBwZXIgc2hhcmUgZnJvbSB0aGUgNTQ1IG1sbiBkbHIgc2FsZSBvZiBpdHMgc3Bpcml0cyBidXNpbmVzcyB0byBBbWVyaWNhbiBCcmFuZHMgSW5jIDxBTUI+LiAgICAgTmF0aW9uYWwgRGlzdGlsbGVycycgc3RvY2sgcm9zZSAxLTEvOCB0byA2NS0xLzIsIGFmdGVyIGFuIG9wZW5pbmcgZGVsYXkgb24gdGhlIE5ldyBZb3JrIFN0b2NrIGV4Y2hhbmdlIGZvciBhbiBpbWJhbGFuY2Ugb2Ygb3JkZXJzLiAgICAgIkkgdGhpbmsgdGhlIHNhbGVzIHByaWNlIHdhcyBoaWdoZXIgdGhhbiBtb3N0IHBlb3BsZSBleHBlY3RlZCwiIHNhaWQgSm9obiBIZW5yeSBvZiBFLkYuIEh1dHRvbiBHcm91cC4gICAgIEEgY29tcGFueSBzcG9rZXN3b21hbiBzYWlkIHRoZSBmb3VyIGRsciBwZXIgc2hhcmUgZ2FpbiB3aWxsIGJlIGluY2x1ZGVkIGluIHNlY29uZCBxdWFydGVyIG5ldCwgd2hpY2ggY29tcGFyZXMgd2l0aCAzMSBjdHMgcGVyIHNoYXJlIGxhc3QgeWVhciwgaW5jbHVkaW5nIHRoZSBzcGlyaXRzIGFuZCB3aW5lIGJ1c2luZXNzICAgICAiVGhleSBuZXR0ZWQgb3ZlciA3MDAgbWxuIGRscnMgZm9yIHNwaXJpdHMgYW5kIHdpbmUuIFRoYXQgd2lsbCBlYXNlIHRoZWlyIGludGVyZXN0IGNvc3QgYnVyZGVuLCIgc2FpZCBIZW5yeS4gICAgIE5hdGlvbmFsIERpc3RpbGxlcnMgc29sZCBpdHMgd2luZSBidXNpbmVzcyBsYXN0IG1vbnRoIHRvIEdyYW5kIE1ldHJvcG9saXRhbiBQTEMncyBIZXVibGVpbiBJbmMgZm9yIDEyOCBtbG4gZGxycy4gICAgIEhlbnJ5IHNhaWQgaGUgaGFkIGFudGljaXBhdGVkIE5hdGlvbmFsIERpc3RpbGxlcnMgd291bGQgbmV0IG9ubHkgNjAwIG1sbiBkbHJzIGF0IHRoZSBtb3N0IGZyb20gdGhlIHNhbGUgb2YgdGhlIHR3byBsaXF1b3IgYnVzaW5lc3Nlcy4gICAgIEhlbnJ5IHNhaWQgdGhlIGNvbXBhbnkgcmVjb3ZlcmVkIGZyb20gdGhlIHNhbGVzIHRoZSBjb3N0IG9mIGJ1eWluZyBFbnJvbiBDaGVtaWNhbHMgaW4gdGhlIGZvdXJ0aCBxdWFydGVyIGxhc3QgeWVhci4gTmF0aW9uYWwgRGlzdGlsbGVycyBwYWlkIDU3MCBtbG4gZGxycyBjYXNoIGZvciBFbnJvbiBhbmQgYXNzdW1lZCAzNCBtbG4gZGxycyBpbiBkZWJ0LiBOYXRpb25hbCBEaXN0aWxsZXJzIHNhaWQgYXQgdGhlIHRpbWUgaXQgYm91Z2h0IEVucm9uIGl0IHdvdWxkIHNlbGwgdGhlIHNwaXJpdHMgYW5kIHdpbmUgYnVzaW5lc3NlcywgbW92aW5nIG1vcmUgaW50byB0aGUgY2hlbWljYWwgYXJlYS4gICAgIEZvciAxOTg2LCB0d28gdGhpcmRzIG9mIGluY29tZSB3ZXJlIGZyb20gY2hlbWljYWxzIGFuZCBwcm9wYW5lLiBOYXRpb25hbCBEaXN0aWxsZXJzIGVhcm5lZCwgZXhjbHVkaW5nIHRoZSBsaXF1b3IgYnVzaW5lc3NlcywgMi4yMSBkbHJzIHBlciBzaGFyZSBmb3IgMTk4Ni4gSW5jb21lIGZyb20gZGlzY29udGludWVkIG9wZXJhdGlvbnMsIGluY2x1ZGluZyB0aGUgbGlxdW9yIGJ1c2luZXNzZXMsIHdhcyA2NyBjdHMgcGVyIHNoYXJlLiAgUmV1dGVyIDM7CjE5ODcwNDA5CU5BVElPTkFMIEhFUklUQUdFIDxOSEVSPiBCVVlTIE1BTkFHRU1FTlQgRklSTSBOYXRpb25hbCBIZXJpdGFnZSBJbmMgc2FpZCBpdCBhY3F1aXJlZCB0aGUgYXNzZXRzIG9mIENoYXJ0aGFtIE1hbmFnZW1lbnQgQ29ycCBvZiBTYWxlbSwgT3JlLiAgICAgVGVybXMgd2VyZSBub3QgZGlzY2xvc2VkLiAgICAgVGhlIGFzc2V0cyBhY3F1aXJlZCB3aWxsIGJlIHVzZWQgdG8gZm9ybSBhIG5ldyBkaXZpc2lvbmFsIG9mZmljZSBzZXJ2aW5nIHRoZSBub3J0aHdlc3QsIHRoZSBudXJzaW5nIGhvbWUgb3BlcmF0b3Igc2FpZC4gICAgIFRoZSBuZXdseSBhY3F1aXJlZCBTYWxlbSBvcGVyYXRpb24gaGFzIG1hbmFnZW1lbnQgcmVzcG9uc2liaWxpdHkgZm9yIGFib3V0IDIsNTAwIGJlZHMgaW4gMjggbnVyc2luZyBob21lcyBpbiBzZXZlbiBzdGF0ZXMuICAgICBTb3V0aG1hcmsgQ29ycCA8U00+LCB3aGljaCBvd25zIDgwIHBjdCBvZiBOYXRpb25hbCBIZXJpdGFnZSwgcmVjZW50bHkgYWdyZWVkIHRvIGFjcXVpcmUgdGhlIDI4IGZhY2lsaXRpZXMuIE5hdGlvbmFsIGlzIHRoZSBtYW5hZ2VyIG9mIG51cnNpbmcgaG9tZSBwcm9wZXJ0aWVzIG93bmVkIGJ5IFNvdXRobWFyay4gIFJldXRlciAzOwoxOTg3MDQwOQlOQVRJT05BTCBNRURJQ0FMIDxOTUU+IEZJTEVTIEZPUiBERUJUIE9GRkVSSU5HIE5hdGlvbmFsIE1lZGljYWwgRW50ZXJwcmlzZXMgSW5jIHNhaWQgaXQgZmlsZWQgYSByZWdpc3RyYXRpb24gc3RhdGVtZW50IHdpdGggdGhlIFNlY3VyaXRpZXMgYW5kIEV4Y2hhbmdlIENvbW1pc3Npb24gY292ZXJpbmcgMzAwIG1sbiBkbHJzIG9mIGRlYnQgc2VjdXJpdGllcy4gICAgIFRoZSBwcm9wb3NlZCBvZmZlcmluZyBpbmNsdWRlcyAxNTAgbWxuIGRscnMgb2YgMzAteWVhciBkZWJlbnR1cmVzIGFuZCAxNTAgbWxuIGRscnMgb2YgMTAteWVhciBub3RlcywgdGhlIGNvbXBhbnkgc2FpZC4gICAgIE5ldCBwcm9jZWVkcyBmcm9tIHRoZSBvZmZlcmluZyB3aWxsIGJlIHVzZWQgdG8gcmVkdWNlIGJhbmsgYm9ycm93aW5ncywgTmF0aW9uYWwgTWVkaWNhbCBzYWlkLCBhZGRpbmcsIE1lcnJpbGwgTHluY2ggQ2FwaXRhbCBNYXJrZXRzIHdpbGwgbWFuYWdlIHRoZSB1bmRlcndyaXRpbmcuICBSZXV0ZXIgMzsKMTk4NzA0MDkJTkFUTkVEIEZPUkVDQVNUUyAxOTg3IFJFU1VMVFMgSU4gTElORSBXSVRIIDE5ODYgVGhlIE5ldGhlcmxhbmRzJyBsYXJnZXN0IGluc3VyZXIgTmF0aW9uYWxlIE5lZGVybGFuZGVuIE5WIDxOVFROLkFTPiAoTmF0TmVkKSBzYWlkIGl0IGV4cGVjdGVkIGF0IGxlYXN0IHVuY2hhbmdlZCByZXN1bHRzIGluIDE5ODcgYWZ0ZXIgcmVwb3J0aW5nIDE5ODYgbmV0IHByb2ZpdHMgdXAgNS4zIHBjdCB0byA2MzUuNSBtbG4gZ3VpbGRlcnMgZnJvbSA2MDMuNCBtbG4gaW4gMTk4NSwgICAgIFJldmVudWVzIGluY3JlYXNlZCBieSAwLjUgcGN0IHRvIDE3LjM1IGJpbGxpb24gZ3VpbGRlcnMgYWZ0ZXIgMTcuMjcgYmlsbGlvbiB0aGUgcHJldmlvdXMgeWVhciwgYW5kIHRoZSBkaXZpZGVuZCB3YXMgcmFpc2VkIHRvIDIuNTAgZ3VpbGRlcnMgcGVyIHNoYXJlIGZyb20gMi4zOCBndWlsZGVycyBpbiAxOTg1LCBjb3JyZWN0ZWQgb24gYSBjYXBpdGFsIGluY3JlYXNlLiAgICAgVGhlIGNvbXBhbnkgc2FpZCBndWlsZGVyIHJldmVudWUgYW5kIHByb2ZpdCB3ZXJlIHByZXNzdXJlZCBieSBmYWxscyBpbiBleGNoYW5nZSByYXRlcywgcGFydGljdWxhcmx5IGluIHRoZSBVUyBhbmQgQXVzdHJhbGlhbiBkb2xsYXIgYW5kIHN0ZXJsaW5nLiAgICAgV2l0aG91dCB0aGVzZSBjdXJyZW5jeSBmbHVjdHVhdGlvbnMsIG5ldCBwcm9maXQgd291bGQgaGF2ZSBiZWVuIDMwLjcgbWxuIGd1aWxkZXJzIGhpZ2hlciBhbmQgcmV2ZW51ZSAxLjk3IGJpbGxpb24gaGlnaGVyLCBOYXROZWQgc2FpZC4gICAgIFRoZSBpbnRlcm5hdGlvbmFsIHNoYXJlIGluIHR1cm5vdmVyIHdhcyA1MCBwY3QgaW4gMTk4NiBjb21wYXJlZCB3aXRoIDUyIHBjdCBpbiAxOTg1LiAgICAgVGhlIGNvbXBhbnkncyBsaWZlIGluc3VyYW5jZSByZXN1bHQgZmVsbCB0byAzNjUuNyBtbG4gZ3VpbGRlcnMgYWZ0ZXIgNDI4LjQgbWxuIGluIDE5ODUgZHVlIHRvIGN1cnJlbmN5IGluZmx1ZW5jZXMsIHRpZ2h0ZXIgaW50ZXJlc3QgbWFyZ2lucyBhbmQgaW5jcmVhc2VkIGludmVzdG1lbnQuICAgICBDbGFpbSBwYXlvdXRzIGZlbGwgdG8gOS45IG1sbiBndWlsZGVycyBhZnRlciA2Ni42IG1sbiB0aGUgcHJldmlvdXMgeWVhci4gICAgIFRoZSBjb21wYW55J3MgdG90YWwgYXNzZXRzIHJlYWNoZWQgNjkuODcgYmlsbGlvbiBndWlsZGVycyBpbiAxOTg2IGFnYWluc3QgNjcgYmlsbGlvbiB0aGUgeWVhciBiZWZvcmUuICAgICBBc3NldHMgcGVyIHNoYXJlIGVxdWFsbGVkIDY1LjY4IGd1aWxkZXJzIGFnYWluc3QgNjUuNTMuICAgICBXaXRob3V0IHRoZXNlIGN1cnJlbmN5IGZsdWN0dWF0aW9ucywgbmV0IHByb2ZpdCB3b3VsZCBoYXZlIGJlZW4gMzAuNyBtbG4gZ3VpbGRlcnMgaGlnaGVyIGFuZCByZXZlbnVlIDEuOTcgYmlsbGlvbiBoaWdoZXIsIE5hdE5lZCBzYWlkLiAgICAgVGhlIGludGVybmF0aW9uYWwgc2hhcmUgaW4gdHVybm92ZXIgd2FzIDUwIHBjdCBpbiAxOTg2IGNvbXBhcmVkIHdpdGggNTIgcGN0IGluIDE5ODUuICAgICBUaGUgY29tcGFueSdzIGxpZmUgaW5zdXJhbmNlIHJlc3VsdCBmZWxsIHRvIDM2NS43IG1sbiBndWlsZGVycyBhZnQgIElOVEVSUlVQVEVEIDM7CjE5ODcwNDA5CU5FUkNJIDxORVI+IFVOSVQgQ0xPU0VTIE9JTC9HQVMgQUNRVUlTSVRJT04gTmVyY28gSW5jIHNhaWQgaXRzIG9pbCBhbmQgZ2FzIHVuaXQgY2xvc2VkIHRoZSBhY3F1aXNpdGlvbiBvZiBhIDQ3IHBjdCB3b3JraW5nIGludGVyZXN0IGluIHRoZSBCcm91c3NhcmQgb2lsIGFuZCBnYXMgZmllbGQgZnJvbSA8RGF2aXMgT2lsIENvPiBmb3IgYWJvdXQgMjIuNSBtbG4gZGxycyBpbiBjYXNoLiAgICAgTmVyY28gc2FpZCBpdCBlc3RpbWF0ZXMgdGhlIGZpZWxkJ3MgdG90YWwgcHJvdmVkIGRldmVsb3BlZCBhbmQgdW5kZXZlbG9wZWQgcmVzZXJ2ZXMgYXQgMjQgYmlsbGlvbiBjdWJpYyBmZWV0LCBvciBlcXVpdmFsZW50LCBvZiBuYXR1cmFsIGdhcywgd2hpY2ggbW9yZSB0aGFuIGRvdWJsZXMgdGhlIGNvbXBhbnkncyBwcmV2aW91cyByZXNlcnZlcy4gICAgIFRoZSBmaWVsZCBpcyBsb2NhdGVkIGluIHNvdXRoZXJuIExvdWlzaWFuYS4gIFJldXRlciAzOwoxOTg3MDQwOQlORVQgQ0hBTkdFIElOIEVYUE9SVCBDT01NSVRNRU5UUyAtLSBVU0RBIFRoZSBVLlMuIEFncmljdWx0dXJlIERlcGFydG1lbnQgZ2F2ZSB0aGUgbmV0IGNoYW5nZSBpbiBleHBvcnQgY29tbWl0bWVudHMsIGluY2x1ZGluZyBzYWxlcywgY2FuY2VsbGF0aW9ucywgZm9yZWlnbiBwdXJjaGFzZXMgYW5kIGN1bXVsYXRpdmUgZXhwb3J0cywgaW4gdGhlIGN1cnJlbnQgc2Vhc29ucyB0aHJvdWdoIHRoZSB3ZWVrIGVuZGVkIEFwcmlsIDIsIHdpdGggY29tcGFyaXNvbnMsIGFzIGZvbGxvd3MsIGluIHRvbm5lcywgZXhjZXB0IGFzIG5vdGVkIC0tICAgICAgICAgICAgICAgICAgICAgICAgIDQvMi84NyAgIFByZXYgV2VlayAgICAgICAgICAgICBBbGwgV2hlYXQgICAxMTksODAwICAgIDM2OCwzMDAgICAgICAgICAgICAgICAgICBDb3JuIDEsMDAxLDkwMCAgICA5MjcsMDAwICAgICAgICAgICAgICBTb3liZWFucyAgIDI0MCw1MDAgICAgMzAwLDkwMCAgICAgICAgICBTb3kgQ2FrZS9NZWFsICAxMTcsNzAwICAgIDE3MCwyMDAgICAgICAgICAgIFNveWJlYW4gT2lsICAgICAyLDQwMC14ICAgIDgsMTAwICAgICAgICAgICAgIENvdHRvbi1ZICAgICA2MCwyMDAgICAgIDMxLDkwMCAgICB4LW1pbnVzIHRvdGFsLiBZLXJ1bm5pbmcgYmFsZXMuICAgICBUaGUgaW5kaWNhdGVkIHRvdGFscyBpbmNsdWRlIHJlcG9ydGVkIGNvbW1pdG1lbnRzIHRvIGJvdGggbmFtZWQgYW5kIHVubmFtZWQgZGVzdGluYXRpb25zLCBzYWxlcyBvbiBleHBvcnRlcnMnIG93biBhY2NvdW50IGFuZCBvcHRpb25hbCBvcmlnaW4gc2FsZXMgcGx1cyBhY3R1YWwgZXhwb3J0cyBhbHJlYWR5IG1hZGUgZHVyaW5nIHRoZSByZXNwZWN0aXZlIG1hcmtldGluZyBzZWFzb25zLiAgICAgVGhlIFVTREEgY2F1dGlvbnMgdGhhdCByZXBvcnRlZCBvdXRzdGFuZGluZyBzYWxlcyBhcmUgc3ViamVjdCB0byBtb2RpZmljYXRpb24sIGRlZmVycmFsIG9yIGNhbmNlbGxhdGlvbiBhbmQgaXQgaXMgdW5saWtlbHkgdGhhdCBhbGwgcmVwb3J0ZWQgcXVhbnRpdGllcyB3aWxsIGJlIGV4cG9ydGVkLiAgICAgVVNEQSBnYXZlIGRldGFpbGVkIGJyZWFrZG93bnMgZm9yIHRoZSAxOTg2Lzg3IGFuZCAxOTg3Lzg4IHNlYXNvbnMgYXMgZm9sbG93cywgaW4gdGhvdXNhbmQgdG9ubmVzIHVubGVzcyBzdGF0ZWQgLS0gIChBKSAtIEZpcm0gc2FsZXMgdG8gYSBkZWNsYXJlZCBkZXN0aW5hdGlvbi4gIChCKSAtIFVsdGltYXRlIGRlc3RpbmF0aW9uIG5vdCB5ZXQgZGVjbGFyZWQuICAoQykgLSBTYWxlcyBtYWRlIG9uIGV4cG9ydGVycycgb3duIGFjY291bnQuICAoRCkgLSBFeHBvcnRlciBob2xkcyBvcHRpb24gdG8gZmlsbCBjb21taXRtZW50IHdpdGggc3VwcGxpZXMgIGZyb20gb3JpZ2lucyBvdGhlciB0aGFuIFUuUy4gIChFKSAtIEFjY3VtdWxhdGVkIGV4cG9ydHMgc2luY2Ugc2Vhc29uIGJlZ2FuIGJhc2VkIG9uIGRhdGEgIHJlcG9ydGVkIGJ5IGV4cG9ydGVycy4gIChGKSAtIEluZGljYXRlZCB0b3RhbCBmb3Igc2Vhc29uLiAgKEcpIC0gVVNEQS1wcm9qZWN0ZWQgZXhwb3J0cyBmb3Igc2Vhc29uLiAgTm90ZSAtLSBUb3RhbHMgbWF5IG5vdCBhZGQgZHVlIHRvIHJvdW5kaW5nLiAgICAgIEFMTCBXSEVBVCAgICAgICAgICAgICAgICAgMTk4Ni84NyAgICAgICAgICAgICAxOTg3Lzg4ICAgICAgICAgICAgICA0LzIvODcgICBQcmV2IFdrICA0LzMvODcgUHJldiBXayAgTmFtZWQtQSAgICAzLDE1Ny42ICAgMyw2ODQuMSAxLDU5MS40IDEsNjM1LjYgIFVubmFtZWQtQiAgICAxNDMuOCAgICAgMTQ0LjMgICAgODcuMSAgICA1Ny4xICBFLk8uQS4tQyAgICAgICA5LjUgICAgICAgOS41ICAgICBuaWwgICAgIG5pbCAgTy5PLlAuLUQgICAgICAgbmlsICAgICAgIG5pbCAgICAgbmlsICAgICBuaWwgIEdyIFRvdGFsICAgMywzMTAuOSAgIDMsODM3LjkgMSw2NzkuMCAxLDY5Mi43ICBBeSBFeHBkLUUgMjEsMDQ0LjYgIDIwLDQzMy40ICBJbmQgVHRsLUYgMjQsMzU1LjUgIDI0LDI3MS4zICBVU0RBUFJKLUcgMjcsOTAwLjAgIDI3LDkwMC4wICAgICBTT1lCRUFOUyAgICAgICAgICAgICAgICAgIDE5ODYvODcgICAgICAgICAgICAxOTg3Lzg4ICAgICAgICAgICAgICA0LzIvODcgICBQcmV2IFdrICAgNC8yLzg3ICBQcmV2IFdrICBOYW1lZC1BICAgIDEsNzc0LjcgIDEsNzgwLjMgICAgIDIxNS45ICAgMjE1LjkgIFVubmFtZWQtQiAgICA1MDAuMyAgICA1MjQuOCAgICAgICBuaWwgICAgMzAuMCAgRS5PLkEuLUMgICAgICAxOC40ICAgICAxOC40ICAgICAgIG5pbCAgICAgbmlsICBPLk8uUC4tRCAgICAgICBuaWwgICAgICBuaWwgICAgICAgbmlsICAgICBuaWwgIEdyIFRvdGFsICAgMiwyOTMuNCAgMiwzMjMuNSAgICAgMjE1LjkgICAyNDUuOSAgQXkgRXhwZC1FIDE0LDMzNC4yIDE0LDE4My4yICBJbmQgVHRsLUYgMTYsNjI3LjYgMTYsNTA2LjcgIFVTREFQUkotRyAxOSwwNTAuMCAxOSwwNTAuMCAgICAgQ09STiAgICAgICAgICAgICAgICAgMTk4Ni84NyAgICAgICAgICAgICAxOTg3Lzg4ICAgICAgICAgICAgIDQvMi84NyAgICBQcmV2IFdrICAgIDQvMi84NyBQcmV2IFdLICBOYW1lZC1BICAgIDgsNTU5LjggICA4LDY4NC44ICAgIDc3Mi4xICAgMjY4LjggIFVubmFtZWQtQiAgICA5NDUuNyAgICAgOTIwLjEgICAgICBuaWwgICAgIG5pbCAgRS5PLkEtQyAgICAgICA5MC44ICAgICAgNjYuOSAgICAgIG5pbCAgICAgbmlsICBPLk8uUC1EICAgICAgMTM4LjAgICAgIDE3NS4wICAgICAgbmlsICAgICBuaWwgIEdyIFRvdGFsICAgOSw3MzQuMyAgIDksODQ2LjkgICAgNzcyLjEgICAyNjguOCAgQXkgRXhwZC1FIDIwLDI5Ni4wICAxOSwyOTMuOCAgSW5kIFR0bC1GIDMwLDAzMC4zICAyOSwxNDAuNyAgVVNEQVBSSi1HIDMxLDc1MC4wICAzMSw3NTAuMCAgICAgU09SR0hVTSAgICAgICAgICAgICAgICAgMTk4Ni84NyAgICAgICAgICAgIDE5ODcvODggICAgICAgICAgICAgIDQvMi84NyAgUHJldiBXayAgICA0LzIvODcgUHJldiBXSyAgTmFtZWQtQSAgICAgIDg3NS42ICAgIDgwNS4xICAgICBuaWwgICAgICBuaWwgIFVubmFtZWQtQiAgICAxNTEuMiAgICAxNTEuMiAgICAgMTAuMi14ICAgbmlsICBFLk8uQS1DICAgICAgICBuaWwgICAgICBuaWwgICAgIG5pbCAgICAgIG5pbCAgTy5PLlAtRCAgICAgIDExNC41ICAgIDEzOC4zICAgICBuaWwgICAgICBuaWwgIEdyIFRvdGFsICAgMSwxNDEuMyAgMSwwOTQuNiAgICAgMTAuMi14ICAgbmlsICBBeSBFeHBkLUUgIDMsMjIyLjUgIDMsMTQ5LjcgIEluZCBUdGwtRiAgNCwzNjMuOCAgNCwyNDQuMyAgVVNEQVBSSi1HICA1LDcyMC4wICA1LDcyMC4wICB4LW1pbnVzIHRvdGFsICAgICAgV0hFQVQgUFJPRFVDVFMgICAgICAgICAgICAgICAgMTk4Ni84NyAgICAgICAgICAgIDE5ODcvODggICAgICAgICAgICAgNC8yLzg3ICBQcmV2IFdrICAgNC8yLzg3ICAgUHJldiBXayAgTmFtZWQtQSAgICAgMzIxLjAgICA0MDEuOSAgICAgICBuaWwgICAgbmlsICBVbm5hbWVkLUIgICAgIG5pbCAgICAgbmlsICAgICAgIG5pbCAgICBuaWwgIEUuTy5BLi1DICAgICAgbmlsICAgICBuaWwgICAgICAgbmlsICAgIG5pbCAgTy5PLlAuLUQgICAgICBuaWwgICAgIG5pbCAgICAgICBuaWwgICAgbmlsICBHciBUb3RhbCAgICAzMjEuMCAgIDQwMS45ICAgICAgIG5pbCAgICBuaWwgIEF5IEV4cGQtRSAgIDkyNi45ICAgODQwLjkgIEluZCBUdGwtRiAxLDM0OC4yIDEsMjQyLjggICBOb3RlIC0gSW5jbHVkZXMgYnVsZ3VyLCBzZW1vbGluYSwgZmFyaW5hLCByb2xsZWQsIGNyYWNrZWQgYW5kIGNydXNoZWQgd2hlYXQuICAgICBTT1lCRUFOIE9JTCAgICAgICAgICAgICAgICAxOTg2Lzg3ICAgICAgICAgICAxOTg3Lzg4ICAgICAgICAgICAgNC8yLzg3ICBQcmV2IFdrICAgIDQvMi84NyAgUHJldiBXayAgTmFtZWQtQSAgICAgIDguOCAgICAxMC40ICAgICAgbmlsICAgICBuaWwgIFVubmFtZWQtQiAgICA3LjAgICAgMTAuNSAgICAgIG5pbCAgICAgbmlsICBFLk8uQS1DICAgICAgbmlsICAgICBuaWwgICAgICBuaWwgICAgIG5pbCAgTy5PLlAtRCAgICAgIG5pbCAgICAgbmlsICAgICAgbmlsICAgICBuaWwgIEdyIFRvdGFsICAgIDE1LjggICAgMjAuOSAgICAgIG5pbCAgICAgbmlsICBBeSBFeHBkLUUgIDEzOC40ICAgMTM1LjggIEluZCBUdGwtRiAgMTU0LjIgICAxNTYuNyAgVVNEQVBSSi1HICA2MTAuMCAgIDYxMC4wICAgICBTT1lCRUFOIENBS0UgQU5EIE1FQUwgICAgICAgICAgICAgICAgIDE5ODYvODcgICAgICAgICAgICAgMTk4Ny84OCAgICAgICAgICAgICAgNC8yLzg3ICBQcmV2IFdrICAgIDQvMi84NyBQcmV2IFdrICBOYW1lZC1BICAgICAgNzg4LjAgICAgODY5LjcgICAgNTAuNyAgICAgIDQ4LjQgIFVubmFtZWQtQiAgICAgNzYuMCAgICAgOTQuMCAgICAgbmlsICAgICAgIG5pbCAgRS5PLkEtQyAgICAgICAgMi43ICAgICAgNi4xICAgICBuaWwgICAgICAgbmlsICBPLk8uUC1EICAgICAgICBuaWwgICAgICBuaWwgICAgIG5pbCAgICAgICBuaWwgIEdyIFRvdGFsICAgICA4NjYuNyAgICA5NjkuOCAgICA1MC43ICAgICAgNDguNCAgQXkgRXhwZC1FICA0LDA5OC4wICAzLDg4MC42ICBJbmQgVHRsLUYgIDQsOTY0LjcgIDQsODUwLjQgIFVTREFQUkotRyAgNSw3NjAuMCAgNSw3NjAuMCAgICAgIENPVFRPTlNFRUQgT0lMICAgICAgICAgICAgICAgIDE5ODYvODcgICAgICAgICAgICAxOTg3Lzg4ICAgICAgICAgICAgIDQvMi84NyAgUHJldiBXayAgIDQvMi84NyAgIFByZXYgV2sgIE5hbWVkLUEgICAgICA3LjQgICAgIDcuMiAgICAgICBuaWwgICAgIG5pbCAgVW5uYW1lZC1CICAgIDAuMyAgICAgMC4zICAgICAgIG5pbCAgICAgbmlsICBFLk8uQS4tQyAgICAgbmlsICAgICBuaWwgICAgICAgbmlsICAgICBuaWwgIE8uTy5QLi1EICAgICA3LjggICAgIDcuOCAgICAgICBuaWwgICAgIG5pbCAgR3IgVG90YWwgICAgMTUuNCAgICAxNS4yICAgICAgIG5pbCAgICAgbmlsICAgICBBTEwgVVBMQU5EIERPTUVTVElDIFJBVyBDT1RUT04tWSAgICAgICAgICAgICAgICAgMTk4Ni84NyAgICAgICAgICAgIDE5ODcvODggICAgICAgICAgICAgNC8yLzg3ICAgIFByZXYgV2sgICA0LzIvODcgIFByZXYgV2sgIE5hbWVkLUEgICAgMiwwMDcuOSAgMiwwNzYuMSAgICAgNDY4LjIgICA0NTcuMiAgVW5uYW1lZC1CICAgICAyMC4zICAgICAyMC4yICAgICAgIG5pbCAgICAgbmlsICBFLk8uQS1DICAgICAgICBuaWwgICAgICBuaWwgICAgICAgbmlsICAgICBuaWwgIE8uTy5QLUMgICAgICAgIG5pbCAgICAgIG5pbCAgICAgICBuaWwgICAgIG5pbCAgR3IgVG90YWwgICAyLDAyOC4yICAyLDA5Ni4zICAgICA0NjguMiAgIDQ1Ny4yICBBeSBFeHBkLUUgIDQsMzMzLjEgIDQsMjA0LjcgIEluZCBUdGwtRiAgNiwzNjEuMyAgNiwzMDEuMCAgVVNEQVBSSi1HICA2LDMzNS4wICA2LDMzNS4wICAgWS1JbiB0aG91c2FuZCBydW5uaW5nIGJhbGVzLiAgICAgQkFSTEVZICAgICAgICAgICAgICAgICAgMTk4Ni84NyAgICAgICAgICAgIDE5ODcvODggICAgICAgICAgICAgNC8yLzg3ICAgUHJldiBXayAgICAgNC8yLzg3IFByZXYgV2sgIE5hbWVkLUEgICAgICA1NTkuNSAgICA1ODQuNSAgICAgIG5pbCAgICAgIG5pbCAgVW5uYW1lZC1CICAgICAxMi43ICAgICAxMi43ICAgICAgbmlsICAgICAgbmlsICBFLk8uQS4tQyAgICAgICBuaWwgICAgICBuaWwgICAgICBuaWwgICAgICBuaWwgIE8uTy5QLi1EICAgICAgMjUuMCAgICAgMjUuMCAgICAgIG5pbCAgICAgIG5pbCAgR3IgVG90YWwgICAgIDU5Ny4xICAgIDYyMi4xICAgICAgbmlsICAgICAgbmlsICBBeSBFeHB0LUUgIDIsNDY0LjYgIDIsNDQwLjcgIEluZCBUdGwtRiAgMywwNjEuNyAgMywwNjIuOCAgVVNEQVBSSi1HICAzLDI3MC4wICAzLDI3MC4wICAgICBPQVRTICAgICAgICAgICAgICAxOTg2Lzg3ICAgICAgICAgICAgMTk4Ny84OCAgICAgICAgICAgIDQvMi84NyBQcmV2IFdrICAgIDQvMi84NyAgUHJldiBXayAgTmFtZWQtQSAgICAgbmlsICAgIG5pbCAgICAgICBuaWwgICAgbmlsICBVbm5hbWVkLUIgICBuaWwgICAgbmlsICAgICAgIG5pbCAgICBuaWwgIEUuTy5BLi1DICAgIG5pbCAgICBuaWwgICAgICAgbmlsICAgIG5pbCAgTy5PLlAuLUQgICAgbmlsICAgIG5pbCAgICAgICBuaWwgICAgbmlsICBHciBUb3RhbCAgICBuaWwgICAgbmlsICAgICAgIG5pbCAgICBuaWwgIEF5IEV4cGQtRSAgIDIuNCAgICAyLjQgIEluZCBUdGwtRiAgIDIuNCAgICAyLjQgIFVTREFQUkotRyAgMzAuMCAgIDMwLjAgICAgIFJJQ0UgICAgICAgICAgICAgICAgIDE5ODYvODcgICAgICAgICAgICAxOTg3Lzg4ICAgICAgICAgICAgIDQvMi84NyAgIFByZXYgV2sgICAgNC8yLzg3ICBQcmV2IFdrICBOYW1lZC1BICAgICAgMzQ3LjYgICAgMzY5LjEgICAgICBuaWwgICAgIG5pbCAgVW5uYW1lZC1CICAgICAgMS4wICAgICAgMS4wICAgICAgbmlsICAgICBuaWwgIEUuTy5BLUMgICAgICAgIG5pbCAgICAgIG5pbCAgICAgIG5pbCAgICAgbmlsICBPLk8uUC1EICAgICAgICBuaWwgICAgICBuaWwgICAgICBuaWwgICAgIG5pbCAgR3IgVG90YWwgICAgIDM0OC42ICAgIDM3MC4xICAgICAgbmlsICAgICBuaWwgIEF5IEV4cGQtRSAgMSw3MTguOCAgMSw2ODguMiAgSW5kIFR0bC1GICAyLDA2Ny40ICAyLDA1OC4zICBVU0RBUFJKLUcgIDIsNTgwLjAgIDIsNTgwLjAgICAgIEhBUkQgUkVEIFdJTlRFUiBXSEVBVCAgICAgICAgICAgICAgICAxOTg2Lzg3ICAgICAgICAgICAgMTk4Ny84OCAgICAgICAgICAgIDQvMi84NyAgIFByZXYgV2sgICAgIDQvMi84NyAgUHJldiBXayAgTmFtZWQtQSAgIDEsNzM4LjAgIDIsMDE5LjcgICAgIDg5My4wICAgOTQzLjAgIFVubmFtZWQtQiAgICA4MC41ICAgICA3MC41ICAgICAxMDcuNiAgICA3Ny4yICBFLk8uQS4tQyAgICAgIG5pbCAgICAgIG5pbCAgICAgICBuaWwgICAgIG5pbCAgTy5PLlAuLUQgICAgICBuaWwgICAgICBuaWwgICAgICAgbmlsICAgICBuaWwgIEdyIFRvdGFsICAxLDgxOC41ICAyLDA5MC4yICAgMSwwMDAuNiAxLDAyMC4yICBBeSBFeHAtRSAgOCwzMzIuMSAgNyw5NzQuNSAgSW5kIFRsLUYgMTAsMTUwLjYgMTAsMDY0LjggICAgIFdISVRFIFdIRUFUICAgICAgICAgICAgICAgIDE5ODYvODcgICAgICAgICAgICAxOTg3Lzg4ICAgICAgICAgICAgIDQvMi84NyAgUHJldiBXayAgICA0LzIvODcgICBQcmV2IFdrICBOYW1lZC1BICAgICA1NDguNSAgICA2MzUuNiAgICAgNTguMCAgICA1OC4wICBVbm5hbWVkLUIgICAgMTkuMC14ICAgMTkuMC14ICAgIDYuMC14ICAgNi4wLXggIEUuTy5BLi1DICAgICAgbmlsICAgICAgbmlsICAgICAgbmlsICAgICBuaWwgIE8uTy5QLi1EICAgICAgbmlsICAgICAgbmlsICAgICAgbmlsICAgICBuaWwgIEdyIFRvdGFsICAgIDUyOS41ICAgIDYxNi42ICAgICA1Mi4wICAgIDUyLjAgIEF5IEV4cC1FICAzLDgzMS41ICAzLDc1Ny43ICBJbmQgVGwtRiAgNCwzNjEuMCAgNCwzNzQuMyAgIHggLSBkZW5vdGVzIG1pbnVzIGZpZ3VyZSAgICAgSEFSRCBSRUQgU1BSSU5HIFdIRUFUICAgICAgICAgICAgICAgMTk4Ni84NyAgICAgICAgICAgICAxOTg3Lzg4ICAgICAgICAgICA0LzIvODcgICBQcmV2IFdrICAgIDQvMi84NyAgIFByZXYgV2sgIE5hbWVkLUEgICAgNTc2LjYgICAgNjIwLjYgICAgMTY0LjcgICAxNjQuNyAgVW5uYW1lZC1CICAgMjkuNiAgICAgMTYuMCAgICAgIG5pbCAgICAgbmlsICBFLk8uQS4tQyAgICAgMC45ICAgICAgMC45ICAgICAgbmlsICAgICBuaWwgIE8uTy5QLi1EICAgICBuaWwgICAgICBuaWwgICAgICBuaWwgICAgIG5pbCAgR3IgVG90YWwgICA2MDcuMSAgICA2MzcuNSAgICAxNjQuNyAgIDE2NC43ICBBeSBFeHAtRSA0LDMxMi40ICA0LDI0Ny42ICBJbmQgVGwtRiA0LDkxOS41ICA0LDg4NS4xICAgICAgRFVSVU0gV0hFQVQgICAgICAgICAgICAgICAxOTg2Lzg3ICAgICAgICAgICAgICAxOTg3Lzg4ICAgICAgICAgICAgNC8yLzg3ICAgUHJldiBXayAgICA0LzIvODcgIFByZXYgV2sgIE5hbWVkLUEgICAgMTY2LjYgICAgMjgwLjMgICAgICA5My40ICAgOTMuNCAgVW5uYW1lZC1CICAgNTIuOCAgICAgNzYuOSAgICAgICBuaWwgICAgbmlsICBFLk8uQS4tQyAgICAgMi44ICAgICAgMi44ICAgICAgIG5pbCAgICBuaWwgIE8uTy5QLi1EICAgICBuaWwgICAgICBuaWwgICAgICAgbmlsICAgIG5pbCAgR3IgVG90YWwgICAyMjIuMiAgICAzNjAuMCAgICAgIDkzLjQgICA5My40ICBBeSBFeHAtRSAxLDg0Mi42ICAxLDcyNy41ICBJbmQgVGwtRiAyLDA2NC44ICAyLDA4Ny41ICAgICBTT0ZUIFJFRCBXSU5URVIgV0hFQVQgICAgICAgICAgICAgICAgMTk4Ni84NyAgICAgICAgICAgICAxOTg3Lzg4ICAgICAgICAgICAgIDQvMi84NyAgUHJldiBXayAgICAgNC8yLzg3ICBQcmV2IFdrICBOYW1lZC1BICAgICAxMjcuOCAgICAxMjcuOCAgICAzODIuMyAgIDM3Ni41ICBVbm5hbWVkLUIgICAgIG5pbCAgICAgIG5pbCAgICAgMTQuMC14ICAxNC4wLXggIEUuTy5BLi1DICAgICAgNS44ICAgICAgNS44ICAgICAgbmlsICAgICBuaWwgIE8uTy5QLi1EICAgICAgbmlsICAgICAgbmlsICAgICAgbmlsICAgICBuaWwgIEdyIFRvdGFsICAgIDEzMy42ICAgIDEzMy42ICAgIDM2OC4zICAgMzYyLjUgIEF5IEV4cC1FICAyLDcyNi4wICAyLDcyNi4wICBJbmQgVGwtRiAgMiw4NTkuNiAgMiw4NTkuNiAgeC1taW51cyBmaWd1cmUgICAgIENvdW50cnkgYW5kIGRlc3RpbmF0aW9ucyBvZiB0aGUgaWRlbnRpZmllZCBzYWxlcyBvZiBjb21tb2RpdGllcyByZXBvcnRlZCBieSBleHBvcnRlcnMgaW4gd2VlayBlbmRlZCBBcHJpbCAyIGZvciB0aGUgcmVzcGVjdGl2ZSBtYXJrZXRpbmcgc2Vhc29ucyB3ZXJlIGRldGFpbGVkIGJ5IHRoZSBVU0RBIGFzIGZvbGxvd3MsIHdpdGggY29tcGFyaXNvbnMgZm9yIHRoZSBwcmV2aW91cyB3ZWVrLCBpbiB0aG91c2FuZHMgb2YgdG9ubmVzLCBleGNlcHQgd2hlcmUgbm90ZWQtLSAgIEFMTCBXSEVBVCAgICAgICAgICAgICAgICAgIDE5ODYvODcgICAgICAgICAgICAgMTk4Ny84OCAgICAgICAgICAgICAgNC8yLzg3ICBQcmV2IFdrICAgNC8yLzg3ICAgUHJldiBXayAgRS5DLiAgICAgICAgICBuaWwgICAgIG5pbCAgICAgIDUwLjAgICAgNTAuMCAgT3RoZXIgV2VzdCAgRXVyb3BlICAgICAgMjE4LjggICAyMzYuOCAgICAgICBuaWwgICAgIG5pbCAgRWFzdCBFdXJvcGUgMjYxLjAgICAzNDYuMCAgICAgIDI1LjAgICAgMjUuMCAgICAgQUxMIFdIRUFUIENvbnRpbnVlZCAgICAgICAgICAgICAgICAgIDE5ODYvODcgICAgICAgICAgICAxOTg3Lzg4ICAgICAgICAgICAgICA0LzIvODcgIFByZXYgV2sgICAgNC8yLzg3ICBQcmV2IFdrICBVU1NSICAgICAgICAgICBuaWwgICAgICBuaWwgICAgICBuaWwgICAgIG5pbCAgSmFwYW4gICAgICAgIDQ5MC40ICAgIDY2Mi4yICAgICAgbmlsICAgICBuaWwgIENoaW5hICAgICAgICAgOTAuMCAgICAgOTAuMCAgICA5MTAuMCAgIDkxMC4wICBUYWl3YW4gICAgICAgMTE1LjAgICAgMTQxLjAgICAgMTQ0LjAgICAxNDQuMCAgT3RoZXIgQXNpYSBhbmQgIE9jZWFuaWEgICAgICA2NTQuOSAgICA3MzAuOSAgICAgMjguNiAgICA3OC42ICBBZnJpY2EgICAgICAgOTU5LjUgIDEsMTE1LjAgICAgMTY3LjEgICAxNjcuMSAgV2VzdGVybiAgSGVtaXNwaGVyZSAgIDM2Ny45ICAgIDM2Mi4xICAgIDI2Ni43ICAgMjYwLjkgIFNPWUJFQU5TICAgICAgICAxOTg2Lzg3ICAgICAgICAgICAgMTk4Ny84OCAgICAgICAgICAgICA0LzIvODcgICBQcmV2IFdrICAgNC8yLzg3ICAgUHJldiBXayAgRS5DLiAgICAgICAgMzAyLjIgICAgIDMxNy43ICAgIDkxLjQgICAgIDkxLjQgIE90aGVyIFdlc3QgIEV1cm9wZSAgICAgICAyNS4wICAgICAgMjUuMCAgICAgbmlsICAgICAgbmlsICBFYXN0IEV1cm9wZSAxMDEuMCAgICAgMTAxLjAgICAgIG5pbCAgICAgIG5pbCAgSmFwYW4gICAgICAgMzU1LjQgICAgIDMzMC41ICAgICBuaWwgICAgICBuaWwgIENoaW5hICAgICAgICAgbmlsICAgICAgIG5pbCAgICAgbmlsICAgICAgbmlsICBUYWl3YW4gICAgICA0NzIuMCAgICAgNDk5LjAgICAgODcuMCAgICAgODcuMCAgT3RoZXIgQXNpYSBhbmQgIE9jZWFuaWEgICAgIDE2NC42ICAgICAxODcuNyAgICAgbmlsICAgICAgbmlsICBBZnJpY2EgICAgICAgIG5pbCAgICAgICBuaWwgICAgIG5pbCAgICAgIG5pbCAgV2VzdGVybiAgSGVtaXNwaGVyZSAgMzU0LjQgICAgIDM5MS41ICAgICAzNy41ICAgIDM3LjUgICAgIFNPWUJFQU4gT0lMICAgICAgICAgICAgICAxOTg2Lzg3ICAgICAgICAgICAxOTg3Lzg4ICAgICAgICAgICA0LzIvODcgIFByZXYgV2sgICAgNC8yLzg3ICBQcmV2IFdrICBFLkMuICAgICAgICAxLjUgICAgIDEuNSAgICAgIG5pbCAgICAgbmlsICBJbmRpYSAgICAgICBuaWwgICAgIG5pbCAgICAgIG5pbCAgICAgbmlsICBPdGhlciBBc2lhIGFuZCAgT2NlYW5pYSAgICAgbmlsICAgICBuaWwgICAgICBuaWwgICAgIG5pbCAgQWZyaWNhICAgICAgbmlsICAgICBuaWwgICAgICBuaWwgICAgIG5pbCAgV2VzdGVybiAgSGVtaXNwaGVyZSAgNy4zICAgICA4LjkgICAgICBuaWwgICAgIG5pbCAgICAgU09ZQkVBTiBDQUtFL01FQUwgICAgICAgICAgICAgICAgICAxOTg2Lzg3ICAgICAgICAgICAgMTk4Ny84OCAgICAgICAgICAgICA0LzIvODcgICBQcmV2IFdrICAgNC8yLzg3ICAgUHJldiBXayAgRS5DLiAgICAgICAgMzAxLjcgICAzNTAuNyAgICAgNDcuMiAgIDQ1LjAgIE90aGVyIFdlc3QgIEV1cm9wZSAgICAgICAgbmlsICAgICBuaWwgICAgICBuaWwgICAgbmlsICBFYXN0IEV1cm9wZSAgIG5pbCAgICAzNi4wICAgICAgbmlsICAgIG5pbCAgSmFwYW4gICAgICAgICBuaWwgICAgIDMuNSAgICAgIG5pbCAgICBuaWwgIE90aGVyIEFzaWEgYW5kICBPY2VhbmlhICAgICAgMjUuMCAgICA0MC4wICAgICAgbmlsICAgIG5pbCAgQWZyaWNhICAgICAgIDMwLjIgICAgMzguMCAgICAgIG5pbCAgICBuaWwgIFdlc3Rlcm4gIEhlbWlzcGhlcmUgIDQzMS4wICAgNDAxLjUgICAgICAzLjQgICAgMy40ICAgICBDT1JOICAgICAgICAgMTk4Ni84NyAgICAgICAgICAgIDE5ODcvODggICAgICAgICAgICAgICA0LzIvODcgICBQcmV2IFdrICAgNC8yLzg3ICBQcmV2IFdrICBFLkMuICAgICAgICAgICA4Mi41ICAgICAyMi41ICAgICAgIDAuMiAgICAgMC4yICBPdGhlciBXZXN0ICBFdXJvcGUgICAgICAgICAgbmlsICAgICAgMC44ICAgICAgIG5pbCAgICAgbmlsICBFLiBFdXJvcGUgICAgICA5NC4wICAgICA1MC4wICAgICAgNTAuMCAgICA1MC4wICBVU1NSICAgICAgICAyLDQzMi43ICAyLDU0My44ICAgICAgIG5pbCAgICAgbmlsICBKYXBhbiAgICAgICAyLDc2Ny40ICAyLDc4Ny44ICAgICAgNTIuNCAgICAyMS4wICBDaGluYSAgICAgICAgIDQ5NS4wICAgIDU1NS4wICAgICAgIG5pbCAgICAgbmlsICBUYWl3YW4gICAgICAgIDc5MS4wICAgIDgzNi4wICAgICAzOTAuMCAgIDE3MC4wICBPdGhlciBBc2lhIGFuZCAgT2NlYW5pYSAgICAgICA3MjEuNyAgICA2MTUuMiAgICAgMjUwLjAgICAgIG5pbCAgQWZyaWNhICAgICAgICAxMjUuMCAgICAxOTUuNSAgICAgICBuaWwgICAgIG5pbCAgV2VzdEhlbSAgICAgMSwwNTAuNSAgMSwxMTQuMCAgICAgIDI5LjQgICAgMjcuNiAgICAgVVBMQU5EIENPVFRPTiAoSW4gdGhvdXNhbmQgYmFsZXMpICAgICAgICAgICAgICAgIDE5ODYvODcgICAgICAgICAgICAgMTk4Ny84OCAgICAgICAgICAgICA0LzIvODcgIFByZXYgV2sgICAgIDQvMi84NyBQcmV2IFdrICBFLkMuICAgICAgICAyNjAuOSAgICAyNjYuMSAgICAgOTcuOSAgICA5NS4wICBPdGhlciBXZXN0ICBFdXJvcGUgICAgICAgNjIuMiAgICAgNjYuMiAgICAgIDguNyAgICAgOC43ICBFLiBFdXJvcGUgICAgIDMuMSAgICAgIDMuMSAgICAgIG5pbCAgICAgbmlsICBKYXBhbiAgICAgICA0NDUuOCAgICA0ODQuMSAgICAgNzIuMyAgICA3MC4xICBUYWl3YW4gICAgICAzNzcuOSAgICAzOTAuNCAgICAgNDEuNiAgICAzOS41ICBPdGhlciBBc2lhIGFuZCAgT2NlYW5pYSAgICAgNzQxLjcgICAgNzgzLjQgICAgMjQ0LjUgICAyNDEuMSAgQWZyaWNhICAgICAgIDE2LjcgICAgIDEzLjQgICAgICBuaWwgICAgIG5pbCAgV2VzdGVybiAgSGVtaXNwaGVyZSAgIDk5LjYgICAgIDY5LjUgICAgICAzLjIgICAgIDIuNyAgUmV1dGVyIDM7CjE5ODcwNDA5CU5FVyBKRVJTRVkgSU5WRVNUT1IgQlVZUyA1LjIgUENUIE9GIEtJTkFSSyA8S0lOPiBBIE5ldyBKZXJzZXkgaW52ZXN0b3IsIEpvc2VwaCBGYWxrZW5zdGVpbiwgdG9sZCB0aGUgU2VjdXJpdGllcyBhbmQgRXhjaGFuZ2UgQ29tbWlzc2lvbiBoZSBob2xkcyA1LjIgcGN0IG9mIHRoZSBzaGFyZXMgb2YgS2luYXJrIENvcnAuICAgICBIZSBzYWlkIGhlIGhhcyBubyBwbGFucyB0byBjaGFuZ2UgdGhlIGNvbXBhbnkgYW5kIHRoYXQgaGUgYm91Z2h0IHRoZSBzaGFyZXMgYmVjYXVzZSBoZSBiZWxpZXZlZCB0aGUgc3RvY2sgd2FzIHVuZGVydmFsdWVkIGFuZCB3b3VsZCByaXNlIGluIHRoZSBuZXh0IHNpeCBtb250aHMuICByZXV0ZXIgMzsKMTk4NzA0MDkJTkVXIFlPUksgQlVTSU5FU1MgTE9BTlMgRkFMTCAxLjMxIEJJTExJT04gRExSUyBDb21tZXJjaWFsIGFuZCBpbmR1c3RyaWFsIGxvYW5zIG9uIHRoZSBib29rcyBvZiB0aGUgMTAgbWFqb3IgTmV3IFlvcmsgYmFua3MsIGV4Y2x1ZGluZyBhY2NlcHRhbmNlcywgZmVsbCAxLjMxIGJpbGxpb24gZGxycyB0byA2Mi43MCBiaWxsaW9uIGluIHRoZSB3ZWVrIGVuZGVkIEFwcmlsIDEsIHRoZSBGZWRlcmFsIFJlc2VydmUgQmFuayBvZiBOZXcgWW9yayBzYWlkLiAgICAgSW5jbHVkaW5nIGFjY2VwdGFuY2VzLCBsb2FucyBkcm9wcGVkIDEuMzQgYmlsbGlvbiBkbHJzIHRvIDYzLjIzIGJpbGxpb24uICAgICBDb21tZXJjaWFsIHBhcGVyIG91dHN0YW5kaW5nIG5hdGlvbmFsbHkgZmVsbCA0LjgwIGJpbGxpb24gZGxycyB0byAzMzQuMjggYmlsbGlvbi4gICAgIE5hdGlvbmFsIGJ1c2luZXNzIGxvYW4gZGF0YSBhcmUgc2NoZWR1bGVkIHRvIGJlIHJlbGVhc2VkIG9uIEZyaWRheS4gIFJldXRlciAzOwoxOTg3MDQwOQlORVdIQUxMIElOVkVTVE1FTlQgPE5JUD4gU0VUUyBTUEVDSUFMIFBBWU9VVCBOZXdoYWxsIEludmVzdG1lbnQgUHJvcGVydGllcyBzYWlkIGl0IGRlY2xhcmVkIGEgc3BlY2lhbCBkaXN0cmlidXRpb24gb2YgNTAgY3RzIHBlciBzaGFyZSwgcGF5YWJsZSBKdW5lIG9uZSwgdG8gdW5pdGhvbGRlcnMgb2YgcmVjb3JkIEFwcmlsIDI0LiAgUmV1dGVyIDM7CjE5ODcwNDA5CU5PUkFOREEgQkVHSU5TIE1VUkRPQ0hWSUxMRSBNSU5FIFNBTFZBR0UgTm9yYW5kYSBJbmMgc2FpZCBpdCBiZWdhbiBzYWx2YWdlIG9wZXJhdGlvbnMgYXQgaXRzIE11cmRvY2h2aWxsZSwgUXVlYmVjIG1pbmUgd2hlcmUgYSBmaXJlIGxhc3Qgd2VlayBraWxsZWQgb25lIG1pbmVyIGFuZCBjYXVzZWQgMTAgbWxuIGRscnMgaW4gZGFtYWdlLiAgICAgIE5vcmFuZGEgc2FpZCB0aGUgY2F1c2UgYW5kIGZ1bGwgZXh0ZW50IG9mIHRoZSBkYW1hZ2UgaXMgc3RpbGwgdW5rbm93biBidXQgdGhlIGZpcmUgZGVzdHJveWVkIDYsMDAwIGZlZXQgb2YgY29udmV5b3IgYmVsdC4gICAgIFRoZSBjb21wYW55IHNhaWQgZXh0cmVtZSBoZWF0IGZyb20gdGhlIGZpcmUgY2F1c2VkIHNldmVyZSByb2NrIGRlZ3JhZGF0aW9uIGFsb25nIHNldmVyYWwgcmFtcHMgYW5kIGRyaWZ0cyBpbiB0aGUgbWluZS4gICAgIFByb2R1Y3Rpb24gYXQgdGhlIG1pbmUgaGFzIGJlZW4gc3VzcGVuZGVkIHVudGlsIGludmVzdGlnYXRpb25zIGFyZSBjb21wbGV0ZS4gVGhlIGNvcHBlciBtaW5lIGFuZCBzbWVsdGVyIHByb2R1Y2VkIDcyLDAwMCB0b25zIG9mIGNvcHBlciBhbm9kZXMgaW4gMTk4Ni4gICAgICBUaGUgc21lbHRlciBjb250aW51ZXMgdG8gb3BlcmF0ZSB3aXRoIGF2YWlsYWJsZSBjb25jZW50cmF0ZSBmcm9tIHN0b2NrcGlsZWQgc3VwcGxpZXMsIE5vcmFuZGEgc2FpZC4gIFJldXRlciAzOwoxOTg3MDQwOQlOT1JBTkRBIEJFR0lOUyBTQUxWQUdFIE9QRVJBVElPTlMgQVQgTVVSRE9DSFZJTExFIDxOb3JhbmRhIEluYz4gc2FpZCBpdCBiZWdhbiBzYWx2YWdlIG9wZXJhdGlvbnMgYXQgaXRzIE11cmRvY2h2aWxsZSwgUXVlYmVjLCBtaW5lLCB3aGVyZSBhIGZpcmUgbGFzdCB3ZWVrIGtpbGxlZCBvbmUgbWluZXIgYW5kIGNhdXNlZCAxMCBtbG4gZGxycyBpbiBkYW1hZ2UuICAgICAgQW5vdGhlciA1NiBtaW5lcnMgd2VyZSB0cmFwcGVkIHVuZGVyZ3JvdW5kIGZvciBhcyBsb25nIGFzIDI0IGhvdXJzIGJlZm9yZSB0aGV5IHdlcmUgYnJvdWdodCB0byBzYWZldHkuICAgICBOb3JhbmRhIHNhaWQgdGhlIGNhdXNlIGFuZCBmdWxsIGV4dGVudCBvZiB0aGUgZGFtYWdlIGlzIHN0aWxsIHVua25vd24gYnV0IHNhaWQgaXQgZG9lcyBrbm93IHRoYXQgdGhlIGZpcmUgZGVzdHJveWVkIDYsMDAwIGZlZXQgb2YgY29udmV5b3IgYmVsdC4gICAgICBOb3JhbmRhIHNhaWQgd29yayBjcmV3cyBoYXZlIGJlZ3VuIHNlY3VyaW5nIHRoZSByYW1wIGxlYWRpbmcgaW50byB0aGUgem9uZSB3aGVyZSB0aGUgZmlyZSB3YXMgbG9jYXRlZC4gVGhlIGNvbXBhbnkgc2FpZCBleHRyZW1lIGhlYXQgZnJvbSB0aGUgZmlyZSBjYXVzZWQgc2V2ZXJlIHJvY2sgZGVncmFkYXRpb24gYWxvbmcgc2V2ZXJhbCByYW1wcyBhbmQgZHJpZnRzIGluIHRoZSBtaW5lLiAgICAgIE5vcmFuZGEgZXN0aW1hdGVkIHRoYXQgdGhlIHNlY3VyaW5nIG9wZXJhdGlvbiBmb3IgdGhlIHpvbmUgd2lsbCBub3QgYmUgY29tcGxldGVkIGJlZm9yZSB0aGUgZW5kIG9mIEFwcmlsLiAgICAgTm9yYW5kYSBzYWlkIHRoZSBRdWViZWMgSGVhbHRoIGFuZCBTYWZldHkgQ29tbWlzc2lvbiwgdGhlIFF1ZWJlYyBQcm92aW5jaWFsIFBvbGljZSBhbmQgTm9yYW5kYSBpdHNlbGYgYXJlIGVhY2ggY29uZHVjdGluZyBhbiBpbnZlc3RpZ2F0aW9uIGludG8gdGhlIGZpcmUuICAgICBQcm9kdWN0aW9uIGF0IHRoZSBtaW5lIGhhcyBiZWVuIHN1c3BlbmRlZCB1bnRpbCB0aGUgaW52ZXN0aWdhdGlvbnMgYXJlIGNvbXBsZXRlLiBUaGUgY29wcGVyIG1pbmUgYW5kIHNtZWx0ZXIgcHJvZHVjZWQgNzIsMDAwIHRvbnMgb2YgY29wcGVyIGFub2RlcyBpbiAxOTg2IGFuZCBlbXBsb3lzIDY4MCBwZW9wbGUuICAgICAgVGhlIHNtZWx0ZXIgY29udGludWVzIHRvIG9wZXJhdGUgd2l0aCBhdmFpbGFibGUgY29uY2VudHJhdGUgZnJvbSBzdG9ja3BpbGVkIHN1cHBsaWVzLCBOb3JhbmRhIHNhaWQuIFJldXRlciAgUmV1dGVyIDM7CjE5ODcwNDA5CU5PUlRIRVJOIFRSVVNUIDxOVFJTPiBORVQgSFVSVCBCWSBCUkFaSUwgTE9BTlMgTm9ydGhlcm4gVHJ1c3QgQ29ycCBzYWlkIGl0cyBmaXJzdCBxdWFydGVyIGVhcm5pbmdzIHdlcmUgcmVkdWNlZCBieSA4NzUsMDAwIGRscnMgYnkgcGxhY2luZyA1My4yIG1sbiBkbHJzIG9mIGxvYW5zIHRvIEJyYXppbCBhbmQgc2l4IG1sbiBkbHJzIGluIGxvYW5zIHRvIEVjdWFkb3Igb24gYSBjYXNoIGJhc2lzLiAgICAgU2hvdWxkIHRoZXNlIGxvYW5zIHJlbWFpbiBvbiBub25wZXJmb3JtaW5nIGJhc2lzIGZvciB0aGUgcmVzdCBvZiAxOTg3LCBuZXQgaW5jb21lIGZvciB5ZWFyIHdpbGwgYmUgY3V0IGJ5IGFib3V0IDMuMiBtbG4gZGxycywgdGhlIGJhbmsgc2FpZC4gICAgIEVhcmxpZXIgaXQgcG9zdGVkIG5ldCBpbmNvbWUgZm9yIHRoZSBwZXJpb2Qgb2YgMTQuNyBtbG4gZGxycyBvciA4NyBjdHMgYSBzaGFyZSwgdXAgZnJvbSAxMS43IG1sbiBkbHJzIG9yIDczIGN0cyBhIHNoYXJlLiAgICAgVG90YWwgbm9ucGVyZm9ybWluZyBhc3NldHMgd2VyZSAxMTQuMSBtbG4gZGxycyBhdCBNYXJjaCAzMSwgdXAgZnJvbSA1My40IG1sbiBkbHJzIGF0IERlY2VtYmVyIDMxIGFuZCA3OSBtbG4gZGxycyBhdCBNYXJjaCAzMSwgMTk4NiB0aGUgYmFuayBzYWlkLiAgICAgVGhlIHByb3Zpc2lvbiBmb3IgbG9hbiBsb3NzZXMgZm9yIHRoZSBmaXJzdCBxdWFydGVyIHdhcyBlaWdodCBtbG4gZGxycyBjb21wYXJlZCB0byAxMSBtbG4gYSB5ZWFyIGFnby4gTmV0IGxvYW4gY2hhcmdlIG9mZnMgd2VyZSBzaXggbWxuIGRscnMsIGRvd24gZnJvbSAxMSBtbG4gZGxycyBhIHllYXIgYWdvLiAgICAgVGhlIHJlc2VydmUgZm9yIGxvYW4gbG9zc2VzIHdhcyA3OC4xIG1sbiBkbHJzLCBvciB0d28gcGN0IG9mIG91dHN0YW5kaW5nIGxvYW5zLCBoaWdoZXIgdGhhbiB0aGUgNTYgbWxuIGRscnMgb2YgMS42NSBwY3Qgb2YgbG9hbnMgb3V0c3RhbmRpbmcgYXQgTWFyY2ggMzEsIDE5ODYuICAgICAgUmV1dGVyIDM7CjE5ODcwNDA5CU9ISU8gTUFUVFJFU1MgPE9NVD4gQlVZUyBTRUFMWSBPRiBNSUNISUdBTiBPaGlvIE1hdHRyZXNzIENvIHNhaWQgdGhhdCBpdHMgT2hpby1TZWFseSBNYXR0cmVzcyBNYW51ZmFjdHVyaW5nIENvIHVuaXQgY29tcGxldGVkIGl0cyBwcmV2aW91c2x5IGFubm91bmNlZCBhY3F1aXNpdGlvbiBvZiBTZWFseSBNYXR0cmVzcyBDbyBvZiBNaWNoaWdhbiBJbmMuICAgICBJbiBhZGRpdGlvbiwgdGhlIGNvbXBhbnkgc2FpZCBTZWFseSBJbmMsIG9mIHdoaWNoIGl0cyBvd25zIDgyIHBjdCwgcmVkZWVtZWQgdGhlIG91dHN0YW5kaW5nIFNlYWx5IHN0b2NrIGhlbGQgYnkgTWljaGlnYW4gU2VhbHksIHRodXMgaW5jcmVhc2luZyB0aGUgY29tcGFueSdzIHN0YWtlIGluIFNlYWx5IHRvIDkzIHBjdC4gIFJldXRlciAzOwoxOTg3MDQwOQlQQUtJU1RBTiBHRVRTIDcwIE1MTiBETFIgV09STEQgQkFOSyBMT0FOIG1sbi1kbHIsIDIwLXllYXIgbG9hbiB0byBhc3Npc3QgUGFraXN0YW4gaW4gYSBwcm9qZWN0IGRlc2lnbmVkIHRvIGltcHJvdmUgcG93ZXIgcGxhbnQgZWZmaWNpZW5jeS4gICAgIE5vdGluZyB0aGF0IGEgc2hvcnRhZ2Ugb2YgcG93ZXIgY29uc3RyYWlucyBQYWtpc3RhbidzIGVjb25vbWljIGRldmVsb3BtZW50LCB0aGUgQmFuayBzYWlkIG9uZSBvYmplY3RpdmUgb2YgdGhlIHByb2plY3QgaXMgdG8gcHJvdmlkZSBhdCBsZWFzdCAyMDAgbWVnYXdhdHRzIG9mIGFkZGl0aW9uYWwgZ2VuZXJhdGluZyBjYXBhY2l0eS4gICAgIEFub3RoZXIgb2JqZWN0aXZlIGlzIHRvIGltcHJvdmUgdGhlIGVmZmljaWVuY3kgd2l0aCB3aGljaCBoeWRyb2NhcmJvbnMgYXJlIHVzZWQgYnkgUGFraXN0YW4ncyBXYXRlciBhbmQgUG93ZXIgRGV2ZWxvcG1lbnQgQXV0aG9yaXR5IChXQVBEQSkgaW4gcG93ZXIgcHJvZHVjdGlvbiwgaXQgc2FpZC4gT25lIGVmZmVjdCBvZiB0aGlzIHdvdWxkIGJlIHJlZHVjZWQgYXRtb3NwaGVyaWMgcG9sbHV0aW9uLiAgUmV1dGVyIDM7CjE5ODcwNDA5CVBBUlRORVJTSElQIEJVWVMgSVBDTyA8SUhTPiBTVEFLRSBPRiA2LjggUENUIE1QIENvLCBhIE5ldyBZb3JrIGludmVzdG1lbnQgcGFydG5lcnNoaXAsIHRvbGQgdGhlIFNlY3VyaXRpZXMgYW5kIEV4Y2hhbmdlIENvbW1pc3Npb24gaXQgYm91Z2h0IGEgNi44IHBjdCBzdGFrZSBpbiBJUENPIENvcnAgY29tbW9uIHN0b2NrLiAgICAgVGhlIHBhcnRuZXJzaGlwIHNhaWQgaXQgYWNxdWlyZWQgMzQ2LDYwMCBJUENPIHNoYXJlcywgcGF5aW5nIDQuOSBtbG4gZGxycywgYmVjYXVzZSBpdCBiZWxpZXZlZCB0aGUgc2VjdXJpdGllcyB0byBiZSAiYW4gYXR0cmFjdGl2ZSBpbnZlc3RtZW50IG9wcG9ydHVuaXR5LiIgICAgIEl0IHNhaWQgaXQgcGxhbm5lZCB0byByZWd1bGFybHkgcmV2aWV3IGl0cyBpbnZlc3RtZW50IGFuZCBtYXkgaW4gdGhlIGZ1dHVyZSByZWNvbW1lbmQgYnVzaW5lc3Mgc3RyYXRlZ2llcyBvciBhbiBleHRyYW9yZGluYXJ5IGNvcnBvcmF0ZSB0cmFuc2FjdGlvbiBzdWNoIGFzIGEgbWVyZ2VyLCByZW9yZ2FuaXphdGlvbiwgbGlxdWlkYXRpb24gb3IgYXNzZXQgc2FsZS4gICAgIFRoZSBwYXJ0bmVyc2hpcCBpcyBjb250cm9sbGVkIGJ5IE1hcmN1cyBTY2hsb3NzIGFuZCBDbyBJbmMsIGEgTmV3IFlvcmsgYnJva2VyYWdlIGZpcm0sIGFuZCBQcmltZSBNZWRpY2FsIFByb2R1Y3RzIEluYywgYSBHcmVlbndvb2QsIFMuQy4sIG1lZGljYWwgc3VwcGxpZXMgZmlybS4gIFJldXRlciAzOwoxOTg3MDQwOQlQQVRJRU5UIDxQVEk+IENPTlNJREVSSU5HIERFQlQgUkVTVFJVQ1RVUklORyBQYXRpZW50IFRlY2hub2xvZ3kgSW5jIHNhaWQgaXQgcmV0YWluZWQgYW4gaW52ZXN0bWVudCBiYW5raW5nIGZpcm0gdG8gY29uc2lkZXIgYWx0ZXJuYXRpdmVzIGluIHJlc3RydWN0dXJpbmcgaXRzIGxvbmctdGVybSBkZWJ0LCBpbmNsdWRpbmcgYSBwb3NzaWJsZSBleGNoYW5nZSBvZmZlciBmb3IgMjAgbWxuIGRscnMgb2Ygb3V0c3RhbmRpbmcgY29udmVydGlibGUgZGViZW50dXJlcy4gICAgIE9uIEFwcmlsIG9uZSwgaXQgYmVnYW4gY29uc29saWRhdGluZyBzYWxlcywgbWFya2V0aW5nIGFuZCBtYW51ZmFjdHVyaW5nIG9wZXJhdGlvbnMuIFRoZSBjb25zb2xpZGF0aW9uIGlzIGV4cGVjdGVkIHRvIGJlIGNvbXBsZXRlIGJ5IEp1bmUgb25lIGFuZCB0aGUgY29tcGFueSBzYWlkIGl0IGlzIG5vdyBmb2N1c2luZyBvbiByZXN0cnVjdHVyaW5nIGl0cyBiYWxhbmNlIHNoZWV0LiAgICAgICBUaGUgY29tcGFueSBzYWlkIHRoZSBmaXJzdCBxdWFydGVyIHdpbGwgYmUgYWR2ZXJzZWx5IGFmZmVjdGVkIGJ5IHRoZSBjb25zb2xpZGF0aW9uIGVmZm9ydC4gICAgIEZvciB0aGUgeWVhciBhZ28gZmlyc3QgcXVhcnRlciwgdGhlIGNvbXBhbnkgcmVwb3J0ZWQgYSBwcm9maXQgb2YgMTAwLDAwMCBkbHJzIG9uIDcuMyBtbG4gZGxycy4gICAgIFRoZSBjb21wYW55IGZ1cnRoZXIgc2FpZCB0aGF0IHRoZSBzZWNvbmQgcXVhcnRlciB3aWxsIGJlICB0cmFuc2l0aW9uYWwgcGVyaW9kIGFuZCB0aGF0IGVhcm5pbmdzIGdyb3d0aCB3aWxsIHJlc3VtZSBpbiB0aGUgc2Vjb25kIGhhbGYgb2YgMTk4Ny4gICAgIEZvciB0aGUgeWVhciBlbmRlZCBEZWNlbWJlciAzMSwgMTk4NiwgUGF0aWVudCByZXBvcnRlZCBhIG5ldCBsb3NzIG9mIDEuNCBtbG4gZGxycyBvbiBzYWxlcyBvZiAyOS44IG1sbiBkbHJzLCBkdWUgdG8gd3JpdGUtb2ZmcyBmcm9tIGRpc2NvbnRpbnVlZCBvcGVyYXRpb25zIGFuZCBhIHRlbXBvcmFyeSBiYWNrbG9nIG9mIG9yZGVycy4gICAgICBSZXV0ZXIgMzsKMTk4NzA0MDkJUEVSR0FNT04gSE9MRElOR1MgUkVEVUNFUyBCUENDIEFORCBIT0xMSVMgU1RBS0VTIDxQZXJnYW1vbiBIb2xkaW5ncyBMdGQ+IGFuZCBpdHMgYXNzb2NpYXRlIGNvbXBhbmllcyBzYWlkIHRoYXQgdGhleSBoYWQgc29sZCAzMCBtbG4gb3JkaW5hcnkgc2hhcmVzIGluIHRoZSBCcml0aXNoIFByaW50aW5nIGFuZCBDb21tdW5pY2F0aW9uIENvcnAgUGxjIDxCUENMLkw+IGFuZCAxMC41IG1sbiBpbiA8SG9sbGlzIFBsYz4gdG9nZXRoZXIgd2l0aCBvdGhlciBzZWN1cml0aWVzLiAgICAgTm8gdG90YWwgcHJpY2Ugd2FzIGdpdmVuIGJ1dCB0aGUgY29tcGFueSBzYWlkIHRoZSBwcm9jZWVkcyBvZiB0aGUgc2FsZXMgd291bGQgYmUgdXNlZCB0byBmdW5kIFBlcmdhbW9uJ3MgZXhwYW5zaW9uIHByb2dyYW1tZSBhbmQgd29ybGR3aWRlIGFjcXVpc2l0aW9uIHN0YXRlZ3kuIFRoZSBjb21wYW55IHNhaWQgdGhhdCBmb2xsb3dpbmcgdGhlc2Ugc2FsZXMgUGVyZ2Ftb24ncyBvcmRpbmFyeSBzaGFyZWhvbGRpbmdzIGluIGJvdGggQlBDQyBhbmQgSG9sbGlzIHJlbWFpbmVkIGFib3ZlIDUxIHBjdC4gSXQgc2FpZCBpdCBoYWQgbm8gaW50ZW50aW9uIG9mIGZ1cnRoZXIgcmVkdWNpbmcgaXRzIGhvbGRpbmdzIGluIGVpdGhlciBjb21wYW55LiAgUkVVVEVSIDM7CjE5ODcwNDA5CVBFVFJPTEVVTSBBTkQgUkVTT1VSQ0VTIENPUlAgPFBFTz4gTUFSQ0ggMzEgU2hyIDMxLjM2IGRscnMgdnMgMjUuMjMgZGxycyAgICAgQXNzZXRzIDI4Ni41IG1sbiB2cyAyNTMuMCBtbG4gICAgIFNocnMgb3V0IDksMTM4LDUyNiB2cyA4LDgzOSw2OTUgICAgIE5PVEU6IGxhdGVzdCBhc3NldHMgYWZ0ZXIgY2FwaXRhbCBnYWluIGRpc3RyaWJ1dGlvbnMgb2YgNTAgY3RzIGEgc2hhcmUgaW4gRmVicnVhcnkgMTk4NyBhbmQgODMgY3RzIGEgc2hhcmUgaW4gRGVjZW1iZXIgMTk4NiwgYW5kIHdpdGggMjksOTU1LDAwMCBzdGF0ZWQgdmFsdWUgMS42NzYgZGxyIGNvbnZlcnRpYmxlIHByZWZlcnJlZCBzdG9jayBvdXRzdGFuZGluZy4gIFJldXRlciAzOwoxOTg3MDQwOQlQSElMSVBQSU5FIFRFTEVQSE9ORSBGSVJNIFBMQU5TIFNUT0NLIFNQTElUIFRoZSBQaGlsaXBwaW5lIExvbmcgRGlzdGFuY2UgVGVsZXBob25lIENvIDxQTERULk1OPiBpcyBwbGFubmluZyBhIHR3by1mb3Itb25lIHN0b2NrIHNwbGl0IGFuZCBhIDIwIHBjdCBzdG9jayBkaXZpZGVuZCBsYXRlciB0aGlzIHllYXIgdG8gcmVkdWNlIGV4Y2VzcyBtYXJrZXQgYnVveWFuY3ksIFZpY2UtUHJlc2lkZW50IFNlbm5lbiBMYXpvIHRvbGQgUmV1dGVycy4gICAgIExhem8gc2FpZCB0aGUgc3RvY2sgc3BsaXQgd291bGQgcmVkdWNlIHRoZSBwYXIgdmFsdWUgb2YgdGhlIGNvbXBhbnkncyBjb21tb24gc3RvY2sgZnJvbSAxMCB0byBmaXZlIHBlc29zLiAgICAgSGUgc2FpZCB0aGUgc3RvY2sgc3BsaXQgd291bGQgYXBwbHkgdG8gaG9sZGVycyBvZiBhYm91dCAxOCBtbG4gY29tbW9uIHNoYXJlcyBvZiBzdG9jayBvbiB0aGUgcmVjb3JkIGRhdGUgb2YgU2VwdGVtYmVyIDE1IDE5ODcuICJUaGUgZXhlcmNpc2Ugc2hvdWxkIG1ha2Ugb3VyIHN0b2NrIG1vcmUgbWFya2V0YWJsZSwiIExhem8gc2FpZC4gIk5vdyBpdCBpcyBiZXlvbmQgdGhlIHJlYWNoIG9mIG1hbnkgc21hbGwgaW52ZXN0b3JzLiIgICAgIFBMRFQgY29tbW9uIHN0b2NrIHN1cmdlZCBmcm9tIGEgbG93IG9mIDM3IHBlc29zIGluIEZlYnJ1YXJ5IDE5ODYgdG8gMzY3LjUwIGF0IGNsb3NlIG9mIHRyYWRpbmcgeWVzdGVyZGF5IG9uIHRoZSBNYW5pbGEgU3RvY2sgRXhjaGFuZ2UuICAgICBMYXpvIHNhaWQgdGhlIDIwIHBjdCBzdG9jayBkaXZpZGVuZCwgcGF5YWJsZSBvbiBPY3RvYmVyIDE1LCB3b3VsZCBhbHNvIGFwcGx5IHRvIHN0b2NraG9sZGVycyBvbiByZWNvcmQgYXMgb2YgU2VwdGVtYmVyIDE1LiAgICAgUExEVCByZXBvcnRlZCAxOTg2IG5ldCBpbmNvbWUgb2YgMS44OSBiaWxsaW9uIHBlc29zLCB1cCA2OCBwY3QgZnJvbSA3NzguOSBtbG4gcGVzb3MgaW4gMTk4NSwgb24gb3BlcmF0aW5nIHJldmVudWVzIG9mIHNpeCBiaWxsaW9uIHBlc29zLCB1cCBmcm9tIDQuNyBiaWxsaW9uIHBlc29zIGluIDE5ODUuICAgICBBdCBlbmQgRGVjZW1iZXIgMTk4NiB0aGUgY29tcGFueSBoYWQgNDE3LDEwMCBzdG9ja2hvbGRlcnMuICAgICBBIFBMRFQgc3Bva2VzbWFuIHNhaWQgdGhlIGNvbXBhbnkncyBwcm9maXRzIGFyZSBsaWtlbHkgdG8gYmUgc3Vic3RhbnRpYWwgc2luY2UgdGhlIGdvdmVybm1lbnQgcmFpc2VkIGl0cyBmcmFuY2hpc2UgdGF4IHRvIHRocmVlIHBjdCBmcm9tIHR3byBhbmQgdG8gaW1wb3NlIGEgMzUgcGN0IGNvcnBvcmF0ZSBpbmNvbWUgdGF4IGZyb20gd2hpY2ggaXQgd2FzIHByZXZpb3VzbHkgZXhlbXB0LiAgICAgVGhlIGdvdmVybm1lbnQgaGFzIG5vdCBzbyBmYXIgb3JkZXJlZCB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIHRheCBkZWNpc2lvbi4gICAgIFBMRFQgaXMgdGhlIGxhcmdlc3Qgb2YgNTggdGVsZXBob25lIGNvbXBhbmllcyBpbiB0aGUgUGhpbGlwcGluZXMuIE9uIERlY2VtYmVyIDMxIDE5ODYgdGhlIGNvbXBhbnkgaGFkIDg1NiwwMTQgdGVsZXBob25lcyBpbiBvcGVyYXRpb24sIHJlcHJlc2VudGluZyA5NCBwY3Qgb2YgYWxsIGluc3RydW1lbnRzIGluIHRoZSBjb3VudHJ5LiAgICAgSW4gTWFuaWxhIGl0ZW0gIlBoaWxpcHBpbmUgVGVsZXBob25lIGZpcm0gcGxhbnMgc3RvY2sgc3BsaXQiIHBsZWFzZSByZWFkIGluIHBhZ2UgMywgZmlyc3QgcGFyYSwgInRoZSBjb21wYW55J3MgcHJvZml0cyBhcmUgbGlrZWx5IHRvIGJlIHN1YnN0YW50aWFsbHkgY3V0IiAoaW5zZXJ0aW5nIGRyb3BwZWQgd29yZCkuIFRoaXMgcmVwbGFjZXMgICJ0aGUgY29tcGFueSdzIHByb2ZpdHMgYXJlIGxpa2VseSB0byBiZSBzdWJzdGFudGlhbCIgMzsKMTk4NzA0MDkJUEhPRU5JWCBGSU5BTkNJQUwgPFBIRkM+IEJVWVMgREFUQSBBQ0NFU1MgU1RBS0UgRGF0YSBBY2Nlc3MgU3lzdGVtcyBJbmMgc2FpZCBjaGFpcm1hbiBEYXZpZCBDb2hlbiBoYXMgc29sZCAxLDgwMCwwMDAgY29tbW9uIHNoYXJlcyB0byBQaG9lbml4IEZpbmFuY2lhbCBjb3JwIGZvciB1bmRpc2Nsb3NlZCB0ZXJtcyBhbmQgcmVzaWduZWQgYXMgY2hhaXJtYW4gYW5kIGNoaWVmIGV4ZWN1dGl2ZSBvZmZpY2VyLiAgICAgVGhlIGNvbXBhbnkgc2FpZCBQaG9lbml4IEZpbmFuY2lhbCBub3cgaGFzIGEgMjcgcGN0IGludGVyZXN0IGluIERhdGEgQWNjZXNzIGFuZCBlZmZlY3RpdmUgY29udHJvbC4gICAgIERhdGEgQWNjZXNzIHNhaWQgUGhvZW5peCBjaGFpcm1hbiBNYXJ0aW4gUy4gQWNrZXJtYW4gaGFzIGJlZW4gbmFtZWQgY2hhaXJtYW4gb2YgRGF0YSBBY2Nlc3MgYXMgd2VsbCBhbmQgdHdvIG90aGVyIFBob2VuaXggcmVwcmVzZW50YXRpdmVzIGhhdmUgYmVlbiBuYW1lZCB0byB0aGUgRGF0YSBBY2Nlc3MgYm9hcmQuICBJdCBzYWlkIGZvdXIgZGlyZWN0b3JzIG90aGVyIHRoYW4gQ29oZW4gaGF2ZSByZXNpZ25lZCBmcm9tIHRoZSBib2FyZC4gIFJldXRlciAzOwoxOTg3MDQwOQlQSFlTSU8gVEVDSE5PTE9HWSA8UEhZVD4gU0VFUyBMT1NTLCBJTiBERUZBVUxUIFBoeXNpbyBUZWNobm9sb2d5IEluYyBzYWlkIGl0IGV4cGVjdHMgdG8gaGF2ZSBhIHRoaXJkIHF1YXJ0ZXIsIGVuZGVkIE1hcmNoIDMxLCBsb3NzIG9mIGFib3V0IDIwMCwwMDAgZGxycyBhbmQgaXMgaW4gZGVmYXVsdCBvbiBpdHMgYmFuayBsb2FuIGJlY2F1c2Ugb2YgdGhlIHJlc2lnbmF0aW9uIG9mIGNoYWlybWFuIGFuZCBjaGllZiBleGVjdXRpdmUgb2ZmaWNlci4gICAgIFRoZSBjb21wYW55IHNhaWQgdGhlIGxvc3MgZm9sbG93ZWQgZm91ciBxdWFydGVycyBvZiBtb2Rlc3QgcHJvZml0cy4gSW4gdGhlIHllYXIgYWdvIHF1YXJ0ZXIgaXQgZWFybmVkIDExLDAwMCBkbHJzLCBvciBvbmUgY2VudCBhIHNoYXJlLiBGb3IgdGhlIGZpcnN0IGhhbGYgb2YgZmlzY2FsIDE5ODcsIGl0IHJlcG9ydGVkIGEgcHJvZml0IG9mIDQyLDAwMCBkbHJzLCBvciB0d28gY3RzIGEgc2hhcmUsIGNvbXBhcmVkIHRvIGEgeWVhciBlYXJsaWVyIGxvc3Mgb2YgMjk0LDAwMCBkbHJzLCBvciAxNyBjdHMgYSBzaGFyZS4gICAgIEl0IHNhaWQgUHJlc2lkZW50IE1pY2hhZWwgUi4gSGFsbCB3aWxsIGFzc3VtZSB0aGUgZHV0aWVzIG9mIGNoaWVmIGV4ZWN1dGl2ZSBvZmZpY2VyLiAgICAgUGh5c2lvIFRlY2hub2xvZ3kgc2FpZCB0aGUgcmVzaWduYXRpb24gb2YgQ2hhaXJtYW4gSmFtZXMgQy4gTGFuZSBjYW4gY29uc3RpdHV0ZSBub24tY29tcGxpYW5jZSB3aXRoIGl0cyBTZXJpZXMgQSBjb252ZXJ0aWJsZSBzdWJvcmRpbmF0ZWQgZGViZW50dXJlcyBkdWUgMTk5NiBhbmQgYSBkZWZhdWx0IHVuZGVyIGl0cyBhZ3JlZW1lbnQgd2l0aCB0aGUgTWVyY2hhbnRzIEJhbmsgb2YgS2Fuc2FzIENpdHkuICAgICBJdCBleHBsYWluZWQgYSBkZWNsYXJhdGlvbiBvZiBub24tY29tcGxpYW5jZSB1bmRlciB0aGUgZGViZW50dXJlcyB3b3VsZCBjcmVhdGUgYSBhIGRlZmF1bHQgdW5kZXIgdGhlIGxvYW4gYWdyZWVtZW50cyByZXF1aXJpbmcgaW1tZWRpYXRlIHBheW1lbnQgb2YgMS44IG1sbiBkbHJzIG9mIGRlYmVudHVyZXMgYW5kIGFib3V0IDQ1MCwwMDAgZGxycyBvdXRzdGFuZGluZyB1bmRlciB0aGUgYmFuayBjcmVkaXQgbGluZS4gICAgIFRoZSBjb21wYW55IHNhaWQgdGhlIGRlYmVudHVyZSBob2xkZXJzIGludGVuZCB0byB3YWl2ZSB0aGUgbm9uLWNvbXBsaWFuY2UsIGJ1dCByZXNlcnZlIHRoZSByaWdodCB0byB3aXRoZHJhdyB0aGUgd2FpdmVyIGF0IHRoZSBlbmQgb2YgYW55IDMwIGRheSBwZXJpb2QuICAgICBQaHlzaW8gVGVjaG5vbG9neSBzYWlkIGl0IGlzIGNoYW5naW5nIGl0cyBmaWVsZCBzYWxlcyBmb3JjZSB0byBpbmRlcGVuZGVudCByZXByZXNlbnRhdGl2ZXMgYW5kIGRlYWxlcnMgZnJvbSBlbXBsb3llZXMgdG8gInNpZ25pZmljYW50bHkgcmVkdWNlIGl0cyBmaXhlZCBvdmVyaGVhZC4iICAgICBJdHMgc3RhdGVtZW50IGRpZCBub3QgaW5kaWNhdGUgaG93IG1hbnkgZW1wbG95ZWVzIHdvdWxkIGJlIGFmZmVjdGVkIGJ5IHRoZSBtb3ZlLiAgICAgVGhlIGNvbXBhbnkgc2FpZCBMYW5lIHdpbGwgYmVjb21lIGFuIGluZGVwZW5kZW50IGRlYWx0ZXIgZm9yIHRoZSBjb21wYW55IGluIGNlcnRhaW4gbWlkd2VzdGVybiBzdGF0ZXMuIEhlIHdpbGwgY29udGludWUgdG8gc2VydmUgYXMgYSBkaXJlY3RvciwgaXQgYWRkZWQuICBSZXV0ZXIgMzsKMTk4NzA0MDkJUE9MWUNBU1QgPFBUQ0M+IFJFRFVDRVMgU1BBUlRFQ0ggPFNQVE4+IFNUQUtFIFBvbHljYXN0IFRlY2hub2xvZ3kgQ29ycCB0b2xkIHRoZSBTZWN1cml0aWVzIGFuZCBFeGNoYW5nZSBDb21taXNzaW9uIGl0IHNvbGQgb2ZmIDExOSw4MDAgb2YgaXRzIFNwYXJ0ZWNoIENvcnAgY29tbW9uIHNoYXJlcywgcmVkdWNpbmcgaXRzIHN0YWtlIGluIFNwYXJ0ZWNoIHRvIDMwLDAwMCBzaGFyZXMgb3IgMS4yIHBjdCBvZiB0aGUgdG90YWwgb3V0c3RhbmRpbmcuICAgICBQb2x5Y2FzdCBzYWlkIGl0IG1hZGUgdGhlIHNhbGVzIEFwcmlsIDYtOCBpbiB0aGUgb3Zlci10aGUtY291bnRlciBtYXJrZXQuICAgICBJdCBnYXZlIG5vIHJlYXNvbiBmb3IgdGhlIHNhbGVzLiAgUmV1dGVyIDM7CjE5ODcwNDA5CVBPTkNFIEZFREVSQUwgQkFOSyBGLlMuQi4gPFBGQlM+IDFTVCBRVFIgTkVUIFNociA2MyBjdHMgdnMgODkgY3RzICAgICBOZXQgMyw0MjUsMjE2IHZzIDMsMzcwLDY4MiAgICAgQXZnIHNocnMgNSw0MjEsMzMwIHZzIDMsODAzLDQyNSAgICAgTk9URTogbmV0IGZvciBib3RoIHF0cnMgcmVmbGVjdHMgZ2FpbnMgb24gc2FsZXMgb2Ygc2VjdXJpdGllcyBvZiAxLDc1NSwxMzcsIG9yIDUxIHBjdCBvZiBuZXQsIGluIDE5ODc7IGFuZCAzLDAwMSwyMjIsIG9yIDg5IHBjdCBvZiBuZXQgaW4gMTk4Ni4gIFJldXRlciAzOwoxOTg3MDQwOQlQUklDRVMgR0VORVJBTExZIExPV0VSIEFUIE5BSVJPQkkgQ09GRkVFIEFVQ1RJT04gUHJpY2VzIHdlcmUgbG93ZXIgYXQgdGhpcyB3ZWVrJ3MgY29mZmVlIGF1Y3Rpb24gZm9yIGFsbCBncmFkZXMgYW5kIHF1YWxpdGllcyBleGNlcHQgYmV0dGVyIHF1YWxpdHkgQUIgZ3JhZGVzLCB3aGljaCBoZWxkIHN0ZWFkeSwgdGhlIENvZmZlZSBCb2FyZCBvZiBLZW55YSBzYWlkLiAgICAgVGhlIGJvYXJkIHNhaWQgaXQgb2ZmZXJlZCAzNSwwMDAgYmFncyBhbmQgc29sZCAzMiw4NzYuICAgICBTbyBmYXIgdGhpcyBjb2ZmZWUgeWVhciwgS2VueWEgaGFzIHNvbGQgOTE4LDcwNyBiYWdzIHRvIGFsbCBtYXJrZXRzLCBvZiB3aGljaCAzMjYsMTgyIGFyZSBmb3IgdGhlIDE5ODYvNyBwb29sLCB3aXRoIGFuIG92ZXJhbGwgYXZlcmFnZSBwcmljZSBvZiA0MSw1MDAgc2hpbGxpbmdzIGEgdG9ubmUsIGl0IGFkZGVkLiAgICAgVGhlIGJvYXJkIHdpbGwgb2ZmZXIgMzUsMDAwIGJhZ3MgYXQgaXRzIG5leHQgYXVjdGlvbiBvbiBBcHJpbCAxNC4gICAgICAgICAgIEJBR1MgICAgICAgICAgICAgICAgUFJJQ0UgUEVSIDUwIEtHICAgICAgIE9GRkVSRUQgU09MRCAgICAgICAgQVZFUkFHRSAgUEIgICAgICA0MzAgICA0MzAgICAyMzA0Ljc4ICgyMjY3LjIxKSAgQUEgICAgIDcyODkgIDY4MzQgICAyMjkyLjkyICgyMzU4Ljk2KSAgQUIgICAgMTI2NjQgMTE4OTUgICAyMjg5Ljk5ICgyMjkxLjEzKSAgQyAgICAgIDMxOTggIDI4NjcgICAyMDczLjE1ICgyMTA3LjY0KSAgVCAgICAgICA4NzYgICA4NzYgICAxNTA4Ljc5ICgxNTEwLjY3KSAgVFQgICAgIDEzNzUgIDEzNzUgICAyMDUzLjI1ICgyMDk1LjY0KSAgRSAgICAgICAxNTkgICAxNTkgICAyMjUwLjE5ICgyMjUyLjE4KSAgTUlTQyAgIDkwMDkgIDg0NDAgICAxNDA5LjUwICgxMzk4LjYwKSAgVE9UQUwgMzUwMDAgMzI4NzYgICAgIEFWRVJBR0UgRk9SIFNBTEUgICAgICAyMDE0LjkzICgxOTk0Ljk0KSAgUmV1dGVyIDM7CjE5ODcwNDA5CVBST1RFQ1RJVkUgTElGRSA8UFJPVD4gSU4gQUNRVUlTSVRJT04gUHJvdGVjdGl2ZSBMaWZlIENvcnAgc2FpZCBpdCBoYXMgc2lnbmVkIGEgbGV0dGVyIG9mIGludGVudCB0byBhc3N1bWUgPExpYmVydHkgTGlmZSBJbnN1cmFuY2UgQ28ncz4gZ3JvdXAgaW5zdXJhbmNlIG9uIEp1bHkgMSwgc3ViamVjdCB0byByZWd1bGF0b3J5IGFwcHJvdmFscy4gICAgIFRlcm1zIHdlcmUgbm90IGRpc2Nsb3NlZC4gICBSZXV0ZXIgMzsKMTk4NzA0MDkJUFNFIFRPIFNUQVJUIE9QVElPTiBUUkFERSBPTiBCQUtFUiBIVUdIRVMgPEJIST4gVGhlIFBhY2lmaWMgU3RvY2sgRXhjaGFuZ2Ugc2FpZCBpdCB3aWxsIHN0YXJ0IG9wdGlvbnMgdHJhZGluZyBvbiBCYWtlciBIdWdoZXMgSW5jIHRvZGF5LiAgICAgRXhwaXJhdGlvbnMgd2lsbCBiZSBKYW51YXJ5LCBNYXksIEp1bHkgYW5kIE9jdG9iZXIuICBSZXV0ZXIgMzsKMTk4NzA0MDkJUkFOR0VSIDxSR08+IFNFVFMgVEVSTVMgT0YgRVVST0JPTkQgT0ZGRVIgUmFuZ2VyIE9pbCBMdGQgc2FpZCBpdHMgcHJldmlvdXNseSByZXBvcnRlZCBwdWJsaWMgNzUgbWxuIFUuUy4gY29udmVydGlibGUgZGViZW50dXJlIHRvIGJlIHBsYWNlZCBpbiB0aGUgRXVyb3BlYW4gbWFya2V0IHdvdWxkIG1hdHVyZSBBcHJpbCAyOCwgMjAwMiwgYmVhciB5ZWFybHkgaW50ZXJlc3Qgb2YgNi0xLzIgcGN0IGFuZCBoYXZlIGEgc2l4IFUuUy4gZGxyIGEgc2hhcmUgY29udmVyc2lvbiBwcmljZS4gICAgIExlYWQgbWFuYWdlcnMgYXJlIENyZWRpdCBTdWlzc2UgRmlyc3QgQm9zdG9uIEx0ZCBhbmQgQ2F6ZW5vdmUgYW5kIENvLiAgUmV1dGVyIDM7CjE5ODcwNDA5CVJFSUNISE9MRCBDSEVNSUNBTCA8UkNJPiBTRVRTIEFOVEktVEFLRU9WRVIgUExBTiBSZWljaGhvbGQgQ2hlbWljYWwgSW5jIHNhaWQgaXRzIGJvYXJkIGFkb3B0ZWQgYSB3YXJyYW50IGRpdmlkZW5kIHBsYW4gaW4gd2hpY2ggb25lIHByZWZlcnJlZCBzdG9jayBwdXJjaGFzZSByaWdodCB3aWxsIGJlIGRpc3RyaWJ1dGVkIGFzIGEgZGl2aWRlbmQgb24gZWFjaCBjb21tb24gc2hhcmUgb3V0c3RhbmRpbmcuICAgICBUaGUgY29tcGFueSBzYWlkIGl0cyB3YXJyYW50IGRpdmlkZW5kIHBsYW4gaXMgZGVzaWduZWQgdG8gcHJvdGVjdCBpdHMgc2hhcmVob2xkZXJzIGFnYWluc3QgdW5zb2xpY3RlZCwgY29lcmNpdmUgYXR0ZW1wdHMgdG8gYXF1aXJlIGNvbnRyb2wgd2l0aG91dCBtYWtpbmcgYW4gYWRlcXVhdGUgb2ZmZXIgZm9yIGFsbCBzaGFyZXMuICAgICBSZWljaGhvbGQgc2FpZCB0aGUgYWRvcHRpb24gaXMgbm90IGEgcmVzcG9uc2UgdG8gYW55IHNwZWNpZmljIHRha2VvdmVyIGF0dGVtcHQuICAgICBSZWljaGhvbGQgc2FpZCBlYWNoIHJpZ2h0IHdpbGwgZW50aXRsZSBzaGFyZWhvbGRlcnMgdG8gYnV5IG9uZSBvbmUtaHVuZHJldGggb2YgYSBzaGFyZSBvZiBhIG5ld2x5IGNyZWF0ZWQgc2VyaWVzIG9mIHByZWZlcnJlZCBzdG9jayBhdCBhbiBpbml0aWFsIGV4ZXJjaXNlIHByaWNlIG9mIDEyMCBkbHJzLCB3aXRoIGRpdmlkZW5kIGFuZCB2b3RpbmcgcmlnaHRzIGFwcHJveGltYXRlbHkgZXF1YWwgdG8gdGhvc2Ugb2Ygb25lIHNoYXJlIG9mIHRoZSBjb21wYW55J3MgY29tbW9uIHN0b2NrLiAgICAgVGhlIHJpZ2h0cyB3aWxsIGJlIGV4ZXJjaXNhYmxlIG9ubHkgaWYsIHdpdGhvdXQgUmVpY2hob2xkJ3MgcHJpb3IgY29uc2VudCwgYSBwZXJzb24gb3IgZ3JvdXAgYSBhY3F1aXJlcyAyMCBwY3Qgb3IgbW9yZSBvZiB0aGUgdm90aW5nIHBvd2VyIG9yIGFubm91bmNlcyBhIHRlbmRlciBvZmZlciB3aGljaCB3b3VsZCByZXN1bHQgaW4gMjAgcGN0IG93bmVyc2hpcCwgdGhlIGNvbXBhbnkgc2FpZC4gICAgIFJlaWNoaG9sZCBzYWlkIGl0IGlzIGVudGl0bGVkIHRvIHJlZGVlbSB0aGUgcmlnaHRzIGF0IGZpdmUgY3RzIGFwaWVjZSBiZWZvcmUgYSAyMCBwY3QgcG9zaXRpb24gaGFzIGJlZW4gYWNxdWlyZWQsIG9yIGJlZm9yZSBhbiBleGlzdGluZyAyMCBwY3Qgc2hhcmVob2xkZXIgYnV5cyBhbiBhZGRpdGlvbmFsIHR3byBwY3Qgb3IgbW9yZSBvZiB0aGUgdm90aW5nIHBvd2VyIG9mIHRoZSBjb21wYW55LCBvciBpbiBjb25uZWN0aW9uIHdpdGggY2VydGFpbiB0cmFuc2FjdGlvbnMgYWZ0ZXJ3YXJkLiAgICAgVGhlIHRheC1mcmVlIGRpc3RyaWJ1dGlvbiB3aWxsIGJlY29tZSBlZmZlY3RpdmUgTWF5IDEsIDE5ODcsIGFuZCB3aWxsIGV4cGlyZSAxMCB5ZWFycyBsYXRlciwgdGhlIGNvbXBhbnkgc2FpZC4gICAgIERldGFpbHMgb2YgdGhlIHBsYW4gYXJlIG91dGxpbmVkIGluIGEgbGV0dGVyIHRvIGJlIG1haWxlZCB0byBzdG9ja2hvbGRlcnMuICBSZXV0ZXIgMzsKMTk4NzA0MDkJUkVYSEFNIDxSWEg+IFJFUFVSQ0hBU0VTIFNUQUtFIEZST00gTk9SVEVLIDxOVEs+IFJleGhhbSBDb3JwIHNhaWQgaXQgaGFzIHJlcHVyY2hhc2VkIDM4MSwwNTAgb2YgaXRzIHNoYXJlcyBvciA5LjEgcGN0IGZyb20gTm9ydGVrIEluYyBmb3IgNDIgZGxycyBlYWNoLCBhbmQgTm9ydGVrIGhhcyB3aXRoZHJhd24gaXRzIHByb3Bvc2FsIHRvIGFjcXVpcmUgUmV4aGFtIGZvciA0MyBkbHJzIHBlciBzaGFyZS4gICAgIFJleGhhbSBzYWlkIE5vcnRlayBoYXMgYWxzbyBhZ3JlZWQgbm90IHRvIGJ1eSBSZXhoYW0gc2hhcmVzIG9yIHRha2Ugb3RoZXIgYWN0aW9ucyB1bmRlciBhIDEwLXllYXIgc3RhbmRzdGlsbCBhZ3JlZW1lbnQuICBUaGUgUmV4aGFtIGJvYXJkIGhhZCByZWplY3RlZCB0aGUgTm9ydGVrIGJpZCBhcyBpbmFkZXF1YXRlLiAgICAgVGhlIGNvbXBhbnkgYWxzbyBzYWlkIGl0cyBib2FyZCBoYXMgYXV0aG9yaXplZCB0aGUgcmVwdXJjaGFzZSBpbiB0aGUgb3BlbiBtYXJrZXQgb3IgcHJpdmF0ZWx5IGZyb20gdGltZSB0byB0aW1lIG9mIHVwIHRvIGFuIGFkZGl0aW9uYWwgZml2ZSBwY3Qgb2YgaXRzIG93biBzaGFyZXMgYW5kIHRoZSBlc3RhYmxpc2htZW50IG9mIGFuIEVtcGxveWVlIFN0b2NrIE93bmVyc2hpcCBQbGFuLiAgVGhlIHBsYW4gaXMgZXhwZWN0ZWQgdG8gcHVyY2hhc2UgZnJvbSBSZXhoYW0gYSBuZXcgY29udmVydGlibGUgcHJlZmVycmVkIHN0b2NrIHdpdGggMTEuNSBwY3Qgb2YgUmV4aGFtJ3Mgdm90aW5nIHBvd2VyIHdpdGggcHJvY2VlZHMgb2YgYSBwZW5zaW9uIHBsYW4gb3ZlcmZ1bmRpbmcgYW5kIGJvcnJvd2luZ3MuICBSZXV0ZXIgMzsKMTk4NzA0MDkJUkpSIE5BQklTQ08gPFJKUj4gSEFTIE9GRlNFVFRJTkcgR0FJTlMsIENIQVJHRVMgUkpSIE5hYmlzY28gSW5jIHNhaWQgaXRzIDE5ODcgZmlyc3QgcXVhcnRlciByZXN1bHRzIHdpbGwgaW5jbHVkZSBhbiBhZnRlci10YXggZ2FpbiBvZiAyMDggbWxuIGRscnMgZnJvbSB0aGUgc2FsZSBvZiBIZXVibGVpbiBJbmMgYW5kIG9mZnNldHRpbmcgY2hhcmdlcy4gICAgIFRoZSBjb21wYW55IHNhaWQgaXRzIG9wZXJhdGlvbnMgYXJlIHBlcmZvcm1pbmcgd2VsbCBhbmQgaW4gbGluZSB3aXRoIGV4cGVjdGF0aW9ucy4gICAgIFJKUiBOYWJpc2NvIHNhaWQgdGhlIGNoYXJnZXMgcmVmbGVjdCByZXNlcnZlcyBpdCBlc3RhYmxpc2hlZCB0byBjb3ZlciBjZXJ0YWluIGV4cGVuc2VzLiAgICAgUkpSIE5hYmlzY28gc2FpZCB0aGUgZXhwZW5zZXMgY292ZXJlZCwgb24gYWZ0ZXItdGF4IGJhc2lzLCBpbmNsdWRlIC0tICAgICAtLSA1MCBtbG4gZGxycyBmb3IgdGhlIHdyaXRlLWRvd24gb2YgcmVkdW5kYW50IGVxdWlwbWVudCBhbmQgZmFjaWxpdGllcyByZXN1bHRpbmcgZnJvbSBtb2Rlcm5pemF0aW9uIG9mIGl0cyBVLlMuIHRvYmFjY28gb3BlcmF0aW9ucywgICAgIC0tIDc5IG1sbiBkbHJzIGZvciBjb250aW51aW5nIHJlc3RydWN0aW9uIG9mIGl0cyBmb29kIHN1YnNpZGlhcmllcywgYW5kICAgICAtLSA4MCBtbG4gZGxycyBpbiBjb25uZWN0aW9uIHdpdGggdGhlIGVhcmx5IHJldGlyZW1lbnQgb2YgaGlnaCBjb3Vwb24gZGVidC4gIFJldXRlciAzOwoxOTg3MDQwOQlST1BBSyA8Uk9QSz4gRk9STVMgSkFQQU5FU0UgVU5JVCBSb3BhayBjb3JwIHNhaWQgaXQgaGFzIGZvcm1lZCBhIG5ldyBUb2t5by1iYXNlZCBzdWJzaWRpYXJ5IGNhbGxlZCBSb3BhayBOaXBwb24gTHRkIHRvIG1hcmtldCBpdHMgTm9ydGggQW1lcmljYW4gcHJvZHVjdHMgaW4gSmFwYW4uICAgICBJdCBzYWlkIHRoZSBuZXcgdW5pdCBoYXMgc3RhcnRlZCBpbXBvcnRpbmcgcGxhc3RpYyBwYW5zIGFuZCBvdGhlciBwcm9kdWN0cyBmb3IgdGhlIHBhY2thZ2luZyBvZiBzZWFmb29kIGFuZCB3aWxsIGFsc28gbWFya2V0IHJpZ2lkLXBsYXN0aWMgc2hpcHBpbmcgcGFpbHMgZm9yIGEgdmFyaWV0eSBvZiBwYWNrYWdpbmcgdXNlcy4gIFJldXRlciAzOwoxOTg3MDQwOQlST1lBTCBEVVRDSCAoUkQpIFVOSVQgVE8gUkFJU0UgSEVBVlkgRlVFTCBQUklDRVMgU2NhbGxvcCBQZXRyb2xldW0gQ29ycCwgYSBzdWJzaWRpYXJ5IG9mIFJveWFsIER1dGNoL1NoZWxsIGdyb3VwLCBzYWlkIGl0IHdpbGwgcmFpc2UgY29udHJhY3QgcHJpY2VzIGZvciBoZWF2eSBmdWVsIDUwIGN0cyB0byBvbmUgZGxyIGEgYmFycmVsLCBlZmZlY3RpdmUgdG9tb3Jyb3cuICAgICBUaGUgaW5jcmVhc2UgYnJpbmdzIHRoZSBwcmljZSBmb3IgMC41IHBjdCBzdWxwaHVyIGZ1ZWwgdG8gMjEuNTAgZGxycywgdXAgNTAgY3RzLCAwLjcgcGN0IHN1bHBodXIgdG8gMjEgZGxycywgdXAgNzUgY3RzLCAwLjcgcGN0IHN1bHBodXIgdG8gMjEgZGxycywgdXAgNzUgY3RzLCBvbmUgcGN0IHN1bHBodXIgdG8gMjAuMjUgZGxycywgdXAgNzUgY3RzLCB0d28gcGN0IHN1bHBodXIgdG8gMTkuNzUgZGxycywgdXAgb25lIGRsciwgMi4yIHBjdCBzdWxwaHVyIHRvIDE5LjUwIGRscnMsIHVwIG9uZSBkbHIsIDIuOCBwY3Qgc3VscGh1ciAxOSBkbHJzLCB1cCBvbmUgZGxyLCB0aGUgY29tcGFueSBzYWlkLiAgICAgUHJpY2UgZm9yIDAuMyBwY3Qgc3VscGh1ciB3YXMgdW5jaGFuZ2VkIGF0IDIyLjI1IGRscnMsIGl0IHNhaWQuICBSZXV0ZXIgMzsKMTk4NzA0MDkJUk9ZQUwgRFVUQ0ggPFJEPiBVTklUIFRPIENVVCBIRUFUSU5HIE9JTCBQUklDRSBSb3lhbCBEdXRjaC9TaGVsbCdzIFNjYWxsb3AgUGV0cm9sZXVtIENvIHN1YnNpZGlhcnkgc2FpZCBpdCB3aWxsIHJlZHVjZSB0aGUgcHJpY2UgaXQgY2hhcmdlcyBjb250cmFjdCBiYXJnZSBjdXN0b21lcnMgaW4gTmV3IFlvcmsgaGFyYm9yIGZvciBoZWF0aW5nIG9pbCBieSAyLjUgY3RzIGEgZ2FsbG9uLCBlZmZlY3RpdmUgdG9tb3Jyb3cuICAgICBUaGUgY29tcGFueSBzYWlkIHRoZSBwcmljZSBjdXQgd2lsbCBicmluZyB0aGUgY29udHJhY3QgYmFyZ2UgcHJpY2UgZm9yIGhlYXRpbmcgb2lsIHRvIDUxIGN0cyBhIGdhbGxvbi4gIFJldXRlciAzOwoxOTg3MDQwOQlSVFogU0VFUyBSSVNJTkcgVS5TLiBPVVRQVVQgQUlESU5HIDE5ODcgUkVTVUxUUyBSaW8gVGludG8tWmluYyBDb3JwIFBsYyA8UlRaTC5MPiwgUlRaLCBzYWlkIHRoZSBwcmVkaWN0ZWQgcmlzZSBpbiBpbmR1c3RyaWFsIHByb2R1Y3Rpb24gaW4gdGhlIFUuUy4gQW5kIEV1cm9wZSBzaG91bGQgYm9vc3QgaXRzIDE5ODcgcGVyZm9ybWFuY2UuICAgICBDb25zdW1wdGlvbiBvZiBzb21lIGJhc2UgbWV0YWxzIGFuZCB0aGVpciBkbHIgcHJpY2VzIGFyZSBzaG93aW5nIHNpZ25zIG9mIGltcHJvdmVtZW50LCBhbHRob3VnaCBpcm9uIG9yZSBtYXJrZXRzIGhhdmUgd2Vha2VuZWQuIFRoZSBvaWwgcHJpY2UgaW4gVS5TLiBEbHJzIGlzIGFib3ZlIHRoZSAxOTg2IGF2ZXJhZ2UsIGFuZCBpZiBzdXN0YWluZWQsIHNob3VsZCBpbXByb3ZlIGVuZXJneSBlYXJuaW5ncy4gICAgIFRoZSBjb21wYW55IHdhcyBjb21tZW50aW5nIGluIGEgc3RhdGVtZW50IG9uIGl0cyAxOTg2IHJlc3VsdHMgd2hpY2gsIG9uIGEgcmVzdGF0ZWQgYmFzaXMsIHNob3dlZCBuZXQgYXR0cmlidXRhYmxlIHByb2ZpdHMgbG93ZXIgYXQgMjQ1IG1sbiBzdGcgYWZ0ZXIgMjU3IG1sbiB0aGUgcHJldmlvdXMgeWVhci4gUHJldGF4IHByb2ZpdHMgYWxzbyBkaXBwZWQgdG8gNjAxLjcgbWxuIHN0ZyBhZnRlciA2MTQuNCBtbG4uICAgICBSVFogc2FpZCB0aGUgZXhjZWxsZW50IHBlcmZvcm1hbmNlIG9mIGl0cyBleHBhbmRpbmcgcmFuZ2Ugb2YgaW5kdXN0cmlhbCBidXNpbmVzc2VzIGluIDE5ODYgd2FzIG9mZnNldCBieSB0aGUgY29sbGFwc2UgaW4gb2lsIHByaWNlcy4gICAgIEluZHVzdHJpYWwgYnVzaW5lc3NlcyBjb250cmlidXRlZCAyMDIgbWxuIHN0ZyB0byBuZXQgcHJvZml0LCBhIDQwIHBjdCBpbmNyZWFzZSBmcm9tIDE0NCBtbG4gaW4gMTk4NSwgYW5kIDYwIHBjdCBvZiB0aGUgdG90YWwuIFRyYWRpbmcgcGVyZm9ybWFuY2UgaW1wcm92ZWQgYXQgd2hvbGx5LW93bmVkIHN1YnNpZGlhcmllcyBSVFogQm9yYXggTHRkLCBSVFogQ2VtZW50IEx0ZCwgUlRaIENoZW1pY2FscyBMdGQgYW5kIFJUWiBQaWxsYXIgTHRkLiBGaXJzdCB0aW1lIGNvbnRyaWJ1dGlvbnMgZnJvbSByZWNlbnQgaW52ZXN0bWVudCBhbmQgYWNxdWlzaXRpb25zIG1haW5seSBpbiBzcGVjaWFsaXR5IGNoZW1pY2FscyBhbmQgbWluZXJhbHMgYWxzbyBhaWRlZCBwZXJmb3JtYW5jZS4gICAgIE1ldGFscyBhY3Rpdml0aWVzIGNvbnRyaWJ1dGVkIDgzIG1sbiBzdGcgdG8gbmV0IHByb2ZpdC4gICAgICAgICAgICAgICAgICAzOwoxOTg3MDQwOQlTQUxMSUUgTUFFIEFESlVTVFMgU0hPUlQtVEVSTSBESVNDT1VOVCBOT1RFIFJBVEVTIFRoZSBTdHVkZW50IExvYW4gTWFya2V0aW5nIEFzc29jaWF0aW9uIHNhaWQgaXRzIHJhdGVzIG9uIHNob3J0LXRlcm0gZGlzY291bnQgbm90ZXMgd2VyZSBhcyBmb2xsb3dzOiAgICAgTUFUVVJJVFkgICBORVcgUkFURSAgICBPTEQgUkFURSAgTUFUVVJJVFkgICAgIDUtMTQgZGF5cyAgNS44MCBwY3QgICAgNS43NSBwY3QgICAgIDUtMTQgZGF5cyAgIDE1LTM2MCBkYXlzICA1LjAwIHBjdCAgICA1LjAwIHBjdCAgICAxNS04NSBkYXlzICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUuODAgcGN0ICAgIDg2LTkxIGRheXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgNS4wMCBwY3QgICA5Mi0xNzYgZGF5cyAgICAgICAgICAgICAgICAgICAgICAgICAgICA1LjgzIHBjdCAgMTc3LTE4MyBkYXlzICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUuMDAgcGN0ICAxODQtMzYwIGRheXMgIFJldXRlciAzOwoxOTg3MDQwOQlTQU5LRUkgQlVJTERJTkcgSVNTVUVTIEVRVUlUWSBXQVJSQU5UIEVVUk9CT05EIFNhbmtlaSBCdWlsZGluZyBDbyBMdGQgaXMgaXNzdWluZyBhIDYwIG1sbiBkbHIgZXF1aXR5IHdhcnJhbnQgZXVyb2JvbmQgZHVlIE1heSA3LCAxOTkyIHBheWluZyBhbiBpbmRpY2F0ZWQgY291cG9uIG9mIDItMS84IHBjdCBhbmQgcHJpY2VkIGF0IHBhciwgbGVhZCBtYW5hZ2VyIE5vbXVyYSBJbnRlcm5hdGlvbmFsIEx0ZCBzYWlkLiAgICAgVGhlIGlzc3VlIGlzIGd1YXJhbnRlZWQgYnkgU3VtaXRvbW8gQmFuayBMdGQgYW5kIGlzIGF2YWlsYWJsZSBpbiBkZW5vbWluYXRpb25zIG9mIDUsMDAwIGRscnMuIFRoZSBzZWxsaW5nIGNvbmNlc3Npb24gaXMgMS0xLzIgcGN0IHdoaWxlIG1hbmFnZW1lbnQgYW5kIHVuZGVyd3JpdGluZyBjb21iaW5lZCBwYXlzIDMvNCBwY3QuIFRoZSBwYXltZW50IGRhdGUgaXMgTWF5IDcgYW5kIGxpc3Rpbmcgd2lsbCBiZSBpbiBMdXhlbWJvdXJnLiAgICAgRmluYWwgdGVybXMgd2lsbCBiZSBmaXhlZCBvbiBBcHJpbCAxNS4gVGhlIHdhcnJhbnRzIGFyZSBleGVyY2lzYWJsZSBmcm9tIE1heSAyMSwgMTk4NyB1bnRpbCBBcHJpbCAyMywgMTk5Mi4gIFJFVVRFUiAzOwoxOTg3MDQwOQlTQVVESSBSQVRFUyBSSVNFIEFTIEJBSFJBSU4gQkFOS1MgQ0FVR0hUIFNIT1JUIFNhdWRpIHJpeWFsIGludGVyZXN0IHJhdGVzIHJvc2UgYXMgQmFocmFpbi1iYXNlZCBiYW5rcyBzY3JhbWJsZWQgdG8gY292ZXIgc2hvcnQgcG9zaXRpb25zLCBkZWFsZXJzIHNhaWQuICAgICBTZXZlcmFsIEJhaHJhaW4gYmFua3MgaGFkIGJlZW4gbGVuZGluZyBpbiB0aGUgZml4ZWQgcGVyaW9kcyBhbmQgYm9ycm93aW5nIGluIHRoZSBzaG9ydCBkYXRlcywgYnV0IHRvZGF5IHRoZXkgZm91bmQgdGhlIGRheS10by1kYXkgbW9uZXkgaW4gc2hvcnQgc3VwcGx5LCBkZWFsZXJzIHNhaWQuICAgICAiRXZlcnlib2R5J3Mgc3R1Y2sgaW4gdGhlIHNwb3QtbmV4dCwiIG9uZSB0cmFkZXIgc2FpZC4gICAgIFNwb3QtbmV4dCByb3NlIHRvIGFzIGhpZ2ggYXMgNi0xLzQsIHNpeCBwY3QgZnJvbSA1LTEvNCwgZml2ZSBwY3QgeWVzdGVyZGF5LCBhbmQgdGhlIGJvcnJvd2luZyBpbnRlcmVzdCBzcGlsbGVkIG92ZXIgaW50byB0aGUgcGVyaW9kcywgd2l0aCBvbmUgbW9udGggcmlzaW5nIHRvIGFyb3VuZCA2LTMvMTYsIDUtMTUvMTYgcGN0IGZyb20gNS0xNS8xNiwgNy84IHBjdCB5ZXN0ZXJkYXkuICAgICBUaHJlZSBtb250aHMgZWRnZWQgdXAgdG8gYXJvdW5kIDYtOS8xNiwgNS8xNiBwY3QgZnJvbSA2LTcvMTYsIDEvNCBwY3QsIHdoaWxlIHNpeCBtb250aHMgd2FzIHF1b3RlZCBhIHRvdWNoIGZpcm1lciBieSBzb21lIGJhbmtzIGF0IHNldmVuLCA2LTMvNCBwY3QuICAgICBDb21tZXJjaWFsIGJhbmtzIHF1b3RlZCB0aGUgc3BvdCByaXlhbCBhdCAzLjc1MDAvMDQgdG8gdGhlIGRvbGxhciBhZnRlciAzLjc1MDcvMDkgeWVzdGVyZGF5LiAgUkVVVEVSIDM7CjE5ODcwNDA5CVNFQVJTLCBST0VCVUNLIDxTPiBNQVJDSCBSRVRBSUwgU0FMRVMgVVAgU2VhcnMsIFJvZWJ1Y2sgYW5kIENvIHNhaWQgcmV0YWlsIHNhbGVzIG9mIGl0cyBNZXJjaGFuZGlzZSBHcm91cCBpbiBNYXJjaCByb3NlIDQuMiBwY3QgdG8gMi42MiBiaWxsaW9uIGRscnMgZnJvbSAyLjUxIGJpbGxpb24gZGxycyBhIHllYXIgYWdvLiAgICAgRm9yIHRoZSBuaW5lIHdlZWtzIGVuZGVkIEFwcmlsIEZvdXIsIFNlYXJzIE1lcmNoYW5kaXNlIEdyb3VwIHNhbGVzIHJvc2UgNC41IHBjdCB0byA0LjQ2IGJpbGxpb24gZGxycyBmcm9tIDQuMjcgYmlsbGlvbiBkbHJzIGluIHRoZSBzYW1lIDE5ODYgcGVyaW9kLiAgUmV1dGVyIDM7CjE5ODcwNDA5CVNFQVNPTkFMIEVYUE9SVFMgUkVQT1JURUQgQlkgVS5TLiBFWFBPUlRFUlMgRXhwb3J0cyBvZiB0aGUgZm9sbG93aW5nIGNvbW1vZGl0aWVzIGJldHdlZW4gc3RhcnQgb2YgY3VycmVudCBzZWFzb25zIGFuZCBBcHJpbCAyLCB3aXRoIGNvbXBhcmlzb25zLCBhcyByZXBvcnRlZCB0byBVU0RBIGJ5IGV4cG9ydGVycywgaW4gdGhvdXNhbmQgdG9ubmVzLCB1bmxlc3Mgbm90ZWQgLS0gICAgICAgICAgICAgICAgNC8yLzg3ICAgIFByZXYgV2sgICA0LzMvODYgIFdoZWF0ICAgICAgICAyMSwwNDQuNiAgMjAsMzk4LjMgIDE5LDcyNS44ICBTb3liZWFucyAgICAgMTQsMzM0LjIgIDE0LDA2My41ICAxNCw2OTguNCAgQ29ybiAgICAgICAgIDIwLDI5Ni4wICAxOSwxOTQuNiAgMjUsMTgyLjYteCAgU29yZ2h1bSAgICAgICAzLDIyMi41ICAgMywxNDkuNyAgIDMsMTY4LjkteCAgU295YmVhbiBPaWwgICAgIDEzOC40ICAgICAxMzUuOCAgICAgMTc5LjkgIFNveWJlYW4gTWVhbCAgNCwwOTguMCAgIDMsODgwLjYgICAzLDE0MS4zICBDb3R0b24gICAgICAgIDQsMzMzLjEgICA0LDIwNC43ICAgMSw1MTAuNCAgWC0yLDA1OSwzMDAgdG9ubmVzIG9mIGNvcm4gYW5kIDc2Myw4MDAgdG9ubmVzIG9mIHNvcmdodW0gYWRkZWQgdG8gcmVmbGVjdCBjaGFuZ2UgaW4gbWFya2V0aW5nIHllYXIgdG8gU2VwdC1BdWcuICBSZXV0ZXIgMzsKMTk4NzA0MDkJU0VLSVNVSSBDSEVNSUNBTCBJU1NVRVMgRVFVSVRZIFdBUlJBTlQgRVVST0JPTkQgU2VraXN1aSBDaGVtaWNhbCBDbyBMdGQgaXMgaXNzdWluZyBhIDIwMCBtbG4gZGxyIGVxdWl0eSB3YXJyYW50IGJvbmQgZHVlIE1heSA3LCAxOTkyIHBheWluZyBhbiBpbmRpY2F0ZWQgY291cG9uIG9mIHR3byBwY3QgYW5kIHByaWNlZCBhdCBwYXIsIGxlYWQgbWFuYWdlciBZYW1haWNoaSBJbnRlcm5hdGlvbmFsIChFdXJvcGUpIEx0ZCBzYWlkLiAgICAgVGhlIGlzc3VlIGlzIGd1YXJhbnRlZWQgYnkgU2Fud2EgQmFuayBMdGQgYW5kIGlzIGF2YWlsYWJsZSBpbiBkZW5vbWluYXRpb25zIG9mIDUsMDAwIGRscnMuIFRoZSBzZWxsaW5nIGNvbmNlc3Npb24gaXMgMS0xLzIgcGN0IHdoaWxlIG1hbmFnZW1lbnQgYW5kIHVuZGVyd3JpdGluZyBjb21iaW5lZCBwYXlzIDMvNCBwY3QuIFRoZSBwYXltZW50IGRhdGUgaXMgTWF5IDcgd2hpbGUgbGlzdGluZyB3aWxsIGJlIGluIEx1eGVtYm91cmcuICAgICBGaW5hbCB0ZXJtcyB3aWxsIGJlIGZpeGVkIG9uIEFwcmlsIDE1LiBUaGUgd2FycmFudHMgYXJlIGV4ZXJjaXNhYmxlIGZyb20gTWF5IDIwLCAxOTg3IHVudGlsIEFwcmlsIDIwLCAxOTkyLiAgUkVVVEVSIDM7CjE5ODcwNDA5CVNIQU5HSEFJIFRZUkViIEZBQ1RPUlkgVE8gUkFJU0UgMzAgTUxOIFUuUy4gRExSUyBUYSBDaHVuZyBIdWEgUnViYmVyIEZhY3Rvcnkgb2YgU2hhbmdoYWkgd2lsbCByYWlzZSBhIDMwIHRvIDM1IG1sbiBVLlMuIERsciBsb2FuIHRvIGV4cGFuZCBhbmQgbW9kZXJuaXNlIGl0cyBwbGFudCwgYXJyYW5nZXIgQ0NJQyBGaW5hbmNlIEx0ZCBzYWlkLiAgICAgVGhlIGxvYW4sIHRvIGJlIGxlYWQgbWFuYWdlZCBieSB0aGUgQmFuayBvZiBDaGluYSwgaXMgZXhwZWN0ZWQgdG8gbWF0dXJlIGluIGVpZ2h0IHRvIG5pbmUgeWVhcnMsIGJ1dCB0ZXJtcyBoYXZlIG5vdCBiZWVuIGZpbmFsaXplZC4gICAgIFRoZSBtb25leSB3aWxsIGJlIHVzZWQgdG8gaW1wb3J0IG1hbnVmYWN0dXJpbmcgZXF1aXBtZW50IGluY2x1ZGluZyB0ZWNobm9sb2d5IHRyYW5zZmVyIGZvciB0aGUgcHJvZHVjdGlvbiBvZiB0cnVjayByYWRpYWwgdHlyZXMuIFBhcnQgb2YgdGhlIG91dHB1dCB3aWxsIGJlIGV4cG9ydGVkLiAgICAgVGhlIGV4cGFuc2lvbiBwcm9ncmFtIGlzIGV4cGVjdGVkIHRvIGNvc3QgYSB0b3RhbCA1NCBtbG4gZGxycy4gVGhlIHNob3J0ZmFsbCB3aWxsIGJlIGZpbmFuY2VkIGRvbWVzdGljYWxseS4gIFJFVVRFUiAzOwoxOTg3MDQwOQlTSEFXTVVUIENPUlAgPFNIQVM+IDFTVCBRVFIgTkVUIFNociAxLjMyIGRscnMgdnMgMS4yNiBkbHJzICAgICBOZXQgMjEuMiBtbG4gdnMgMTcuNCBtbG4gICAgIEF2ZyBzaHJzIDE2LjEgbWxuIHZzIDEzLjggbWxuICAgICBBc3NldHMgMTAuMCBiaWxsaW9uIHZzIDguNCBiaWxsaW9uICAgICBEZXBvc2l0cyA3LjIgYmlsbGlvbiB2cyA2LjEgYmlsbGlvbiAgICAgTG9hbnMgNi43IGJpbGxpb24gdXAgMjYgcGN0ICAgICBOT1RFOiBSZXN1bHRzIHJlc3RhdGVkIGZvciBwb29sZWQgYWNxdWlzaXRpb25zIG9mIFNoYXdtdXQgSG9tZSBCYW5rIGFuZCBGaWRlbGl0eSBUcnVzdCBDbyBhbmQgaW5jbHVkZSBGaXJzdCBHaWJyYWx0YXIgTW9ydGdhZ2UgQ29ycCBmcm9tIERlY2VtYmVyIDMwLCAxOTg2IHB1cmNoYXNlLiAgICAgTG9hbiBsb3NzIHByb3Zpc2lvbiA4LDgwMCwwMDAgZGxycyB2cyA2LDMwMCwwMDAgZGxycy4gIFJldXRlciAzOwoxOTg3MDQwOQlTSE9XQk9BVCA8U0JPPiBERUNMQVJFUyBTVE9DSyBTUExJVCBTaG93Ym9hdCBJbmMgc2FpZCBpdHMgYm9hcmQgZGVjbGFyZWQgYSB0d28tZm9yLW9uZSBzdG9jayBzcGxpdCwgcGF5YWJsZSB0byBzaGFyZWhvbGRlcnMgb2YgcmVjb3JkIG9uIE1heSAxNS4gIFJldXRlciAzOwoxOTg3MDQwOQlTSUxJQ09OIFNZU1RFTVMgSU5DIDxTTENOPiAyTkQgUVRSIE1BUkNIIDI4IFNociBwcm9maXQgZml2ZSBjdHMgdnMgcHJvZml0IHR3byBjdHMgICAgIE5ldCBwcm9maXQgMzI1LDAwMCB2cyBwcm9maXQgMTA1LDAwMCAgICAgUmV2cyAxOS41IG1sbiB2cyAxNi4xIG1sbiAgICAgU2l4IE10aHMgICAgIFNociBwcm9maXQgbmluZSBjdHMgdnMgbG9zcyAzNSBjdHMgICAgIE5ldCBwcm9maXQgNjI3LDAwMCB2cyBsb3NzIDIsMjgwLDAwMCAgICAgUmV2cyAzNi45IG1sbiB2cyAyNy40IG1sbiAgUmV1dGVyIDM7CjE5ODcwNDA5CVNPTlkgQ0hBSVJNQU4gRk9SRUNBU1RTIExPV0VSIFBST0ZJVFMgVEhJUyBZRUFSIFNvbnkgQ29ycCA8U05FLlQ+IGNoYWlybWFuIEFraW8gTW9yaXRhIHNhaWQgU29ueSdzIHByb2ZpdHMgd291bGQgYmUgc2hhcnBseSBkb3duIGluIDE5ODcgYXMgYSByZXN1bHQgb2YgdGhlIGRvbGxhcidzIGRlY2xpbmUuICAgICBTb255IENvcnAgcG9zdGVkIG5ldCBjb25zb2xpZGF0ZWQgaW5jb21lIG9mIDQxLjg5IGJpbGxpb24geWVuICgyOTAgbWlsbGlvbiBkb2xsYXJzKSBpbiAxOTg2LCA0Mi42IHBjdCBkb3duIG9uIDE5ODUncyA3My4wMiBiaWxsaW9uIHllbiAoNTA2IG1pbGxpb24gZG9sbGFycykuICAgICBCdXQgTW9yaXRhIGFkZGVkIHRoYXQgSmFwYW4gd291bGQgYmVuZWZpdCBmcm9tIHRoZSBzdHJvbmcgeWVuIGJ5IHNhdmluZyBvbiBpdHMgZW5lcmd5IGltcG9ydCBiaWxsIGFuZCBoZSBleHBlY3RlZCBwcm9maXRzIHRvIHJlY292ZXIgZnJvbSAxOTg4IG9ud2FyZHMuICAgICBIZSB3YXMgc3BlYWtpbmcgdG8gcmVwb3J0ZXJzIGF0IGEgc29ueSBmYWN0b3J5IG9wZW5pbmcgaGVyZS4gIFJldXRlciAzOwoxOTg3MDQwOQlTT1VUSE1BUksgPFNNPiBUTyBJU1NVRSBBTUVSSUNBTiBSRUFMVFkgUklHSFRTIFNvdXRobWFyayBDb3JwIHNhaWQgc2hhcmVob2xkZXJzIHdpbGwgYmUgaXNzdWVkLCBhcyBhIHNwZWNpYWwgZGl2aWRlbmQsIHJpZ2h0cyB0byBhY3F1aXJlIDIyIHNoYXJlcyBvZiBBbWVyaWNhbiBSZWFsdHkgVHJ1c3QgPEFSQj4gZm9yIGVhY2ggMTAwIHNoYXJlcyBvZiBTb3V0aG1hcmsgb3duZWQuICAgICBUaGUgcmVjb3JkIGRhdGUgZm9yIFNvdXRobWFyayBzaGFyZWhvbGRlcnMgdG8gcmVjZWl2ZSB0aGVzZSByaWdodHMgd2lsbCBiZSBNYXkgb25lIHdpdGggYW4gZXgtZGl2aWRlbmQgZGF0ZSBvZiBBcHJpbCAyNy4gICAgIFNvdXRobWFyayByZWNlaXZlZCB0aGVzZSByaWdodHMgb24gQXByaWwgc2l4LCBhcyB0aGUgaG9sZGVyIG9mIGFib3V0IDg0IHBjdCBvZiBBbWVyaWNhbiBSZWFsdHkgVHJ1c3QncyBvdXRzdGFuZGluZyBzaGFyZXMuICAgICAgUmV1dGVyIDM7CjE5ODcwNDA5CVNPVVRITUFSSyA8U00+IFRPIE9GRkVSIFNQRUNJQUwgRElWSURFTkQgU291dGhtYXJrIENvcnAgc2FpZCBpdCB3aWxsIGlzc3VlIGl0cyBzaGFyZWhvbGRlcnMgYSBzcGVjaWFsIGRpdmlkZW5kIHJpZ2h0IHRvIGFjcXVpcmUgMjIgc2hhcmVzIG9mIEFtZXJpY2FuIFJlYWx0eSBUcnVzdCA8QVJCPiBmb3IgZWFjaCAxMDAgc2hhcmVzIG9mIFNvdXRobWFyayB0aGV5IG93bi4gICAgIEVhY2ggcmlnaHQgZW50aXRsZXMgdGhlIGhvbGRlciB0byBidXkgb25lIHNoYXJlIG9mIGJlbmVmaWNpYWwgaW50ZXJlc3Qgb2YgQW1lcmljYW4gUmVhbHR5IFRydXN0IGF0IGEgcHJpY2Ugb2YgMy43NSBkbHJzIHBlciBzaGFyZSwgU291dGhtYXJrIHNhaWQuICAgICBTb3V0aG1hcmsgc2FpZCB0aGUgb2ZmZXIncyByZWNvcmQgZGF0ZSBpcyBNYXkgMSwgd2l0aCBhbiBleC1kaXZpZGVuZCBkYXRlIG9mIEFwcmlsIDI3LCBhZGRpbmcgdGhhdCB0aGUgaXQgd2lsbCBpc3N1ZSB0aGUgcmlnaHRzIHRvIHNoYXJlaG9sZGVycyBvbiBNYXkgNiBhbmQgdGhlIG9mZmVyIHdpbGwgZXhwaXJlIG9uIE1heSAyMi4gICAgIFNvdXRobWFyayBzYWlkIGl0IHJlY2VpdmVkIHRoZSByaWdodHMgb24gQXByaWwgNiBhcyB0aGUgaG9sZGVyIG9mIGFib3V0IDg0IHBjdCBvZiBBbWVyaWNhbiBSZWFsdHkgVHJ1c3QncyBvdXRzdGFuZGluZyBzaGFyZXMuICAgICBIb2xkZXJzIG9mIGZld2VyIHRoYW4gNDU1IFNvdXRobWFyayBzaGFyZXMgd2hvIHdvdWxkIHJlY2VpdmUgcmlnaHRzIHRvIGFjcXVpcmUgZmV3ZXIgdGhhbiAxMDAgQW1lcmljYW4gUmVhbHR5IHNoYXJlcyB3aWxsIGJlIHBhaWQgY2FzaCBpbiBsaWV1IG9mIHRoZSByaWdodHMgZGlzdHJpYnV0aW9uLCB0aGUgY29tcGFueSBzYWlkLiAgICAgU291dGhtYXJrIHNhaWQgaXQgd2lsbCBjb21wdXRlIHRoZSBjYXNoIHByaWNlIHBhaWQgYmFzZWQgb24gdGhlIGF2ZXJhZ2UgY2xvc2luZyBtYXJrZXQgcHJpY2Ugb2YgdGhlIHJpZ2h0cyBvbiB0aGUgQW1lcmljYW4gU3RvY2sgRXhjaGFuZ2UgZm9yIHRoZSBmaXJzdCB0ZW4gZGF5cyB0aGUgcmlnaHRzIGFyZSB0cmFkZWQsIGJlZ2lubmluZyBBcHJpbCA2LiAgICAgSW4gb3JkZXIgdG8gZ2V0IHRoZSBkaXZpZGVuZCBmb3IgdGhlc2UgcmlnaHRzIGEgU291dGhtYXJrIHNoYXJlaG9sZGVyIG11c3Qgb3duIGNvbW1vbiBzdG9jayBvbiB0aGUgZXgtZGl2aWRlbmQgZGF0ZSwgQXByaWwgMjcsIHRoZSBjb21wYW55IHNhaWQuICAgICBBZnRlciB0aGF0LCBTb3V0aG1hcmsgc2FpZCBpdHMgY29tbW9uIHN0b2NrIHdpbGwgYmUgdHJhZGVkIG9uIGFuIGV4LXJpZ2h0cyBiYXNpcy4gIFJldXRlciAzOwoxOTg3MDQwOQlTT1ZJRVQgVU5JT04gVE8gSU1QT1JUIE1PUkUgR1JBSU4gSU4gODYvODctVVNEQSBUaGUgVS5TLiBBZ3JpY3VsdHVyZSBEZXBhcnRtZW50IGluY3JlYXNlZCBpdHMgZXN0aW1hdGUgb2YgMTk4Ni84NyBncmFpbiBwdXJjaGFzZXMgYnkgdGhlIFNvdmlldCBVbmlvbiB0byAyOCBtbG4gdG9ubmVzLCB1cCB0d28gbWxuIHRvbm5lcyBmcm9tIGxhc3QgbW9udGguICAgICBJbiBpdHMgbW9udGhseSByZXBvcnQgb24gdGhlIFNvdmlldCBncmFpbiBzaXR1YXRpb24sIHRoZSBVU0RBIHNhaWQgaW1wb3J0cyB3aWxsIGJlIGhpZ2hlciB0aGFuIGVhcmxpZXIgZXN0aW1hdGVkIGJlY2F1c2UgU292aWV0IGdyYWluIGJ1eWVycyBoYXZlIGJlZW4gYWN0aXZlbHkgcHVyY2hhc2luZyBpbiB0aGUgbGFzdCBtb250aC4gICAgIFVTREEgc2FpZCB0aGUgaW5jcmVhc2VkIHB1cmNoYXNpbmcgaXMgInNvbWV3aGF0IHN1cnByaXNpbmciIGJlY2F1c2Ugb2YgcmVjZW50IGhpZ2hlciBTb3ZpZXQgY3JvcCBlc3RpbWF0ZXMuICAgICBBbGwgb2YgdGhlIGluY3JlYXNlIGluIGVzdGltYXRlZCBpbXBvcnRzIHdpbGwgYmUgaW4gY29ybiwgVVNEQSBzYWlkLiAgICAgT2YgdGhlIDI4IG1sbiB0b25uZXMgdG90YWwsIDE1IG1sbiB0b25uZXMgd2lsbCBiZSB3aGVhdCwgMTIgbWxuIHRvbm5lcyBjb2Fyc2UgZ3JhaW5zLCBhbmQgdGhlIHJlbWFpbmluZyBvbmUgbWxuIHRvbm5lcyBtaXNjZWxsYW5lb3VzIGdyYWlucyBhbmQgcHVsc2VzLCBVU0RBIHNhaWQuICAgICBVU0RBIG5vdGVkIHRoYXQgdGhlIFNvdmlldCB3aW50ZXIgZ3JhaW4gY3JvcCBzdWZmZXJlZCB0aHJvdWdoIGEgc2V2ZXJlIHdpbnRlciBhbmQgc3ByaW5nIGZpZWxkIHdvcmsgaGFzIGJlZW4gZGVsYXllZC4gICAgIFRoZSBzZXZlcmUgd2ludGVyICJpcyBiZWxpZXZlZCB0byBoYXZlIHJlc3VsdGVkIGluIGFib3ZlIGF2ZXJhZ2Ugd2ludGVyLWtpbGwsIiBVU0RBIHNhaWQuICAgICBTb21lIGdyYWluIHRyYWRlIGFuYWx5c3RzIGhhdmUgc2FpZCBhYm5vcm1hbCB3aW50ZXIgbG9zc2VzIG1heWJlIG9uZSByZWFzb24gd2h5IHRoZSBTb3ZpZXQgVW5pb24gaGFzIGJlZW4gYWN0aXZlbHkgYnV5aW5nIGdyYWluIHJlY2VudGx5LiAgICAgVVNEQSBzYWlkIE1vc2NvdyBhbHJlYWR5IGhhcyBwdXJjaGFzZWQgb3ZlciAyNSBtbG4gdG9ubmVzIGdyYWluIGZvciBkZWxpdmVyeSBpbiAxOTg2Lzg3LCBpbmNsdWRpbmcgMTQgbWxuIHRvbm5lcyB3aGVhdCBhbmQgMTIgbWxuIHRvbm5lcyBjb2Fyc2UgZ3JhaW4uICBSZXV0ZXIgMzsKMTk4NzA0MDkJU1BBSU4gSEFTIDM1IE1MTiBETFIgQ1VSUkVOVCBTVVJQTFVTIEZFQlJVQVJZIFNwYWluIGhhZCBhIDM1IG1sbiBkbHIgY3VycmVudCBhY2NvdW50IHN1cnBsdXMgaW4gRmVicnVhcnkgY29tcGFyZWQgd2l0aCBhIDY4IG1sbiBkbHIgc3VycGx1cyBpbiBKYW51YXJ5IGFuZCBhIDM1NSBtbG4gZGxyIHN1cnBsdXMgaW4gRmVicnVhcnkgbGFzdCB5ZWFyLCBCYW5rIG9mIFNwYWluIGZpZ3VyZXMgc2hvdy4gICAgIFNwYWluJ3MgdHJhZGUgZGVmaWNpdCBuYXJyb3dlZCB0byA1ODEgbWxuIGRscnMgY29tcGFyZWQgd2l0aCA2NjQgbWxuIGRscnMgaW4gSmFudWFyeSBidXQgdGhlIGxhcmdlIGluY3JlYXNlIGluIG5vbi1vaWwgaW1wb3J0cyBjb250cmlidXRlZCB0byB0aGUgc3Vic3RhbnRpYWwgaW5jcmVhc2Ugb3ZlciB0aGUgMTU5IG1sbiBkbHIgZGVmaWNpdCByZWdpc3RlcmVkIGluIEZlYnJ1YXJ5IDE5ODYuICAgICBFeHBvcnRzIGF0IDIuNTggYmlsbGlvbiBkbHJzIHdlcmUgdXAgMTkgcGN0IGNvbXBhcmVkIHdpdGggRmVicnVhcnkgbGFzdCB5ZWFyLCBidXQgaW1wb3J0cyB3ZXJlIDQ2IHBjdCBoaWdoZXIgdGhhbiBsYXN0IEZlYnJ1YXJ5LCB0b3RhbGxpbmcgMy4xNiBiaWxsaW9uIGRscnMuICAgICBOb24tb2lsIGltcG9ydHMgdG90YWxsZWQgMi43OSBiaWxsaW9uIGRscnMgY29tcGFyZWQgd2l0aCAxLjkxIGJpbGxpb24gaW4gRmVicnVhcnkgbGFzdCB5ZWFyLCByZWZsZWN0aW5nIHRoZSBsYXJnZSBhbW1vdW50IG9mIGludmVzdG1lbnQgZ29vZHMgZW50ZXJpbmcgdGhlIGNvdW50cnkgd2l0aCB0aGUgcmVjb3Zlcnkgb2YgdGhlIFNwYW5pc2ggZWNvbm9teSwgdGhlIEJhbmsgb2YgU3BhaW4gc2FpZC4gICAgIFNwYWluJ3MgdG91cmlzbSBlYXJuaW5ncyBjb250aW51ZWQgdG8gZ3JvdyBhbmQgdG90YWxsZWQgNjU1IG1sbiBkbHJzIGluIEZlYnJ1YXJ5LCBjb21wYXJlZCB3aXRoIDEwMyBtbG4gZGxycyBpbiBKYW51YXJ5IGFuZCA1MDIgbWxuIGRscnMgaW4gRmVicnVhcnkgbGFzdCB5ZWFyLiAgUkVVVEVSIDM7CjE5ODcwNDA5CVNQQUlOJ1MgRk9SRUlHTiBSRVNFUlZFUyBSSVNFIElOIEZFQlJVQVJZIFNwYWluJ3MgZm9yZWlnbiByZXNlcnZlcyByb3NlIGJ5IDkwNSBtbG4gZGxycyBpbiBGZWJydWFyeSB0byB0b3RhbCAxNy4wNSBiaWxsaW9uIGRscnMsIGNvbXBhcmVkIHdpdGggMTQuMTEgYmlsbGlvbiBkbHJzIGluIEZlYnJ1YXJ5IDE5ODYsIEJhbmsgb2YgU3BhaW4gZmlndXJlcyBzaG93LiAgICAgVW5kZXIgYSBuZXcgYWNjb3VudGluZyBzeXN0ZW0gaW50cm9kdWNlZCB0aGlzIG1vbnRoLCBTcGFpbidzIGZvcmVpZ24gcmVzZXJ2ZXMgbm93IGV4Y2x1ZGUgZm9yZWlnbiBjdXJyZW5jeSBoZWxkIGJ5IGZpbmFuY2lhbCBpbnN0aXR1dGlvbnMuICAgICBVbmRlciB0aGUgcHJldmlvdXMgc3lzdGVtLCBTcGFpbidzIGZvcmVpZ24gcmVzZXJ2ZXMgd291bGQgaGF2ZSByaXNlbiBieSAzOTEgbWxuIGRscnMgaW4gRmVicnVhcnksIHRha2luZyBpbnRvIGFjY291bnQgYSBmYWxsIG9mIDUxNCBtbG4gZGxycyBpbiBmaW5hbmNpYWwgaW5zdGl0dXRpb25zJyBmb3JlaWduIGN1cnJlbmN5IHBvc2l0aW9uLiAgICAgSW4gSmFudWFyeSB0aGlzIHllYXIsIHRoZSBDZW50cmFsIEJhbmsncyBmb3JlaWduIHJlc2VydmVzIHJvc2UgYnkgMTQzIG1sbiBkbHJzLCB3aGlsZSBmaW5hbmNpYWwgaW5zdGl0dXRpb25zJyBmb3JlaWduIGN1cnJlbmN5IHBvc2l0aW9uIGZlbGwgYnkgMTE4IG1sbiBkbHJzLiAgUkVVVEVSIDM7CjE5ODcwNDA5CVNQQU5JU0ggRU1QTE9ZRVJTIFdPUlJJRUQgQlkgSElHSCBJTlRFUkVTVCBSQVRFUyBUaGUgaGVhZCBvZiBTcGFpbidzIGVtcGxveWVycycgZmVkZXJhdGlvbiwgSm9zZSBNYXJpYSBDdWV2YXMsIHNhaWQgZW1wbG95ZXJzIHdlcmUgd29ycmllZCBhYm91dCB0aGUgZ292ZXJubWVudCdzIG1vbmV0YXJ5IHBvbGljaWVzIGJlY2F1c2UgaGlnaCByZWFsIGludGVyZXN0IHJhdGVzIHdlcmUgaGFtcGVyaW5nIGludmVzdG1lbnQuICAgICBIZSB0b2xkIGEgbmV3cyBjb25mZXJlbmNlIHdhZ2UgcGFjdHMgc2lnbmVkIHNvIGZhciB0aGlzIHllYXIgd2VyZSBub3QgZW5kYW5nZXJpbmcgdGhlIGdvdmVybm1lbnQncyBmaXZlIHBjdCBpbmZsYXRpb24gdGFyZ2V0LiBUaGUgZ292ZXJubWVudCdzIHBlcmNlaXZlZCBuZWVkIHRvIGNvbnRyb2wgaW5mbGF0aW9uIGJ5IGtlZXBpbmcgYSB0aWdodCByZWluIG9uIGNyZWRpdCB3YXMgdW5uZWNlc3NhcnksIGhlIHNhaWQuICAgICBIaWdoIHJlYWwgaW50ZXJlc3QgcmF0ZXMgd2VyZSBhdHRyYWN0aW5nIGFuIGluZmx1eCBvZiBzcGVjdWxhdGl2ZSBmb3JlaWduIGNhcGl0YWwgd2hpY2ggd2FzIHVuZGVyY3V0dGluZyB0aGUgZ292ZXJubWVudCdzIHRhcmdldCBmb3IgbW9uZXRhcnkgZ3Jvd3RoLCBDdWV2YXMgc2FpZC4gICAgIFNwYWluJ3MgbW9zdCBjbG9zZWx5LXdhdGNoZWQgbWVhc3VyZSBvZiBtb25leSBzdXBwbHksIGxpcXVpZCBhc3NldHMgaW4gcHVibGljIGhhbmRzLCBncmV3IGF0IGFuIGFubnVhbGlzZWQgcmF0ZSBvZiAxNyBwY3QgaW4gTWFyY2gsIGFnYWluc3QgMTEuNCBwY3QgaW4gRGVjZW1iZXIgbGFzdCB5ZWFyIGFuZCBhIHRhcmdldCByYW5nZSBvZiA2LjUgdG8gOS41IHBjdCBmb3IgMTk4Ny4gICAgIFRvIGNvbWJhdCB0aGlzLCB0aGUgQmFuayBvZiBTcGFpbiBoYXMgcmFpc2VkIGl0cyBjYWxsIG1vbmV5IHJhdGUgMTQgdGltZXMgc28gZmFyIHRoaXMgeWVhciwgdG8gMTQuNSBwY3QgYXQgcHJlc2VudCBmcm9tIDExLjggYXQgZW5kLTE5ODYuICAgICBDdWV2YXMgc2FpZCBlbXBsb3llcnMgd2VyZSBoZWVkaW5nIHRoZSBnb3Zlcm5tZW50J3MgY2FsbCB0byBob2xkIHdhZ2UgaW5jcmVhc2VzIHRvIGl0cyBmaXZlIHBjdCBpbmZsYXRpb24gdGFyZ2V0IHRoaXMgeWVhciwgd2l0aCBpbmNyZWFzZXMgZnJvbSBzYWxhcnkgcmV2aWV3cyBhd2FyZGVkIGxhc3QgeWVhciBhbmQgbmV3IHdhZ2UgcGFjdHMgYXZlcmFnaW5nIDUuNiBwY3QgaW4gdGhlIGZpcnN0IHF1YXJ0ZXIgb2YgMTk4Ny4gICAgIFRoZXNlIGFncmVlbWVudHMgY292ZXJlZCBsZXNzIHRoYW4gNDAgcGN0IG9mIFNwYW5pc2ggd29ya2VycywgQ3VldmFzIHNhaWQsIHdpdGggdGhlIHJlc3Qgc3RpbGwgaW4gd2FnZSBuZWdvdGlhdGlvbnMuICAgICBIZSBzYWlkIFNwYWluJ3MgY3VycmVudCB3YXZlIG9mIHN0cmlrZXMgbWFpbmx5IGFmZmVjdGVkIHRoZSBzdGF0ZSBzZWN0b3IsIHdoZXJlIHRoZSBnb3Zlcm5tZW50IGlzIHRyeWluZyB0byBpbXBvc2UgaXRzIGZpdmUgcGN0IHdhZ2UgY2VpbGluZy4gICAgIEN1ZXZhcyBzYWlkIGVtcGxveWVycyB3ZXJlIGFsc28gd29ycmllZCBhYm91dCB0aGUgdHJlbmQgaW4gU3BhaW4ncyBmb3JlaWduIHRyYWRlIGJhbGFuY2UuIFRoZSB0cmFkZSBkZWZpY2l0IGluIHRoZSBmaXJzdCB0d28gbW9udGhzIG9mIDE5ODcgdG90YWxsZWQgMjMzIGJpbGxpb24gcGVzZXRhcywgYSA2OCBwY3QgaW5jcmVhc2Ugb3ZlciB0aGUgY29ycmVzcG9uZGluZyBwZXJpb2QgbGFzdCB5ZWFyLiAgICAgSG93ZXZlciwgZW1wbG95ZXJzIGRpZCBub3QgZmF2b3VyIGEgZGV2YWx1YXRpb24gb2YgdGhlIHBlc2V0YSB0byBjb3JyZWN0IHRoZSBpbWJhbGFuY2UuICBSRVVURVIgMzsKMTk4NzA0MDkJU1BPVCBUSU4gRUFTSUVSIE9OIEVVUk9QRUFOIEZSRUUgTUFSS0VUIFNwb3QgdGluIG9uIHRoZSBFdXJvcGVhbiBmcmVlIG1hcmtldCB3YXMgaW5kaWNhdGVkIGluIHRoZSBlYXNpZXIgcmFuZ2UgNCwyMDAgdG8gNCwyMzAgc3RnIHBlciB0b25uZSwgZm9yIGhpZ2ggZ3JhZGUgbWV0YWwgaW4gd2FyZWhvdXNlIFJvdHRlcmRhbSwgZG93biAyMCBzdGcgZnJvbSB5ZXN0ZXJkYXkncyBhZnRlcm5vb24ga2VyYiBjbG9zZS4gICAgIFN0YWJpbGl0eSBpbiBzdGVybGluZyB2ZXJzdXMgdGhlIGRvbGxhciBjb250aW51ZWQgdG8gYXBwbHkgcHJlc3N1cmUgdG8gYSBtYXJrZXQgd2hpY2ggaXMgY29taW5nIGNsb3NlIHRvIHRlc3RpbmcgYSBwc3ljaG9sb2dpY2FsIGNoYXJ0IHN1cHBvcnQgYmFzZSBhdCA0LDIwMCBzdGcsIHRyYWRlcnMgc2FpZC4gICAgIERlYWxlcnMgc2FpZCBtYWpvciBjb25zdW1lcnMgc3RpbGwgbmVlZCB0byBjb3ZlciB0aGVpciBNYXkgYW5kIEp1bmUgcmVxdWlyZW1lbnRzIGJ1dCBhcmUgaG9sZGluZyBvdXQgZm9yIGV2ZW4gbG93ZXIgb2ZmZXJzLiBSZXBvcnRlZCBoaWdoIGdyYWRlIHRpbiBidXNpbmVzcyBpbiBMb25kb24gd2FzIGNvbmZpbmVkIHRvIGVuZCBBcHJpbCBtZXRhbCBhdCA0LDIyNSBzdGcuICAgICBTbWFsbC1zY2FsZSBzcG90IGJ1c2luZXNzIHdhcyByZXBvcnRlZCBieSBXZXN0IEdlcm1hbiBvcGVyYXRvcnMgYXQgMTIuNjAgYW5kIDEyLjYzIG1hcmtzIHBlciBraWxvIGFsdGhvdWdoIHRoZSBtYXJrZXQgd2FzIHN0aWxsIGJlaW5nIHVuZGVyY3V0IGJ5IENoaW5lc2UgbWF0ZXJpYWwsIHdoaWNoIHRyYWRlZCBhdCBvbmUgc3RhZ2UgZG93biB0byAxMi41NCBtYXJrcyBwZXIga2lsbywgdHJhZGVycyBzYWlkLiAgUkVVVEVSIDM7CjE5ODcwNDA5CVNQUklOS0VMIFNBWVMgVEFYIEhJS0UgV09VTEQgTk9UIFJFRFVDRSBERUZJQ0lUIENvdW5jaWwgb2YgRWNvbm9taWMgQWR2aXNlcnMgY2hhaXJtYW4gQmVyeWwgU3ByaW5rZWwgc2FpZCB0aGUgUmVhZ2FuIEFkbWluaXN0cmF0aW9uIHJlbWFpbnMgc3Ryb25nbHkgb3Bwb3NlZCB0byBhIHRheCBpbmNyZWFzZSwgaW5jbHVkaW5nIDE4IGJpbGxpb24gZGxycyBvZiBuZXcgcmV2ZW51ZXMgaW4gdGhlIGJ1ZGdldCBwbGFuIGJ5IENvbmdyZXNzaW9uYWwgRGVtb2NyYXRzLiAgICAgIldlIGJlbGlldmUgdGhhdCBzaWduaWZpY2FudCBpbmNyZWFzZXMgaW4gdGF4ZXMgd291bGQgbm90IHJlZHVjZSBkZWZpY2l0cyBhbmQgY291bGQgaGF2ZSBhZHZlcnNlIGVmZmVjdHMgb24gZ3Jvd3RoLCIgU3ByaW5rZWwgdG9sZCB0aGUgSG91c2UgUnVsZXMgQ29tbWl0dGVlLiAgICAgSGUgc2FpZCB0aGUgQWRtaW5pc3RyYXRpb24gd2FudGVkIHRvIGNvbnRpbnVlIGl0cyBwb2xpY3kgb2YgZ3JhZHVhbGx5IHJlZHVjaW5nIGRlZmljaXRzIHRocm91Z2ggcmVzdHJhaW5pbmcgZ292ZXJubWVudCBzcGVuZGluZyBhbmQgcHJvbW90aW5nIGVjb25vbWljIGdyb3d0aC4gU3ByaW5rZWwgc2FpZCBjdXR0aW5nIHRoZSBidWRnZXQgZGVmaWNpdCB3YXMgdGhlIGJlc3Qgd2F5IHRvIGxvd2VyIHRoZSB0cmFkZSBkZWZpY2l0LiAgUmV1dGVyIDM7CjE5ODcwNDA5CVNUQU5EQVJEIEVMRUtUUklLIElTU1VFUyBBVVNUUkFMSUFOIERMUiBFVVJPQk9ORCBTdGFuZGFyZCBFbGVrdHJpayBMb3JlbnogRmluYW56IEJWIGlzIGlzc3VpbmcgYSA0MCBtbG4gQXVzdHJhbGlhbiBkbHIgZXVyb2JvbmQgZHVlIE1heSAxMSwgMTk5MCBwYXlpbmcgMTQtMS80IHBjdCBhbmQgcHJpY2VkIGF0IDEwMS0xLzIgcGN0LCBsZWFkIG1hbmFnZXIgQ3JlZGl0IFN1aXNzZSBGaXJzdCBCb3N0b24gTHRkIHNhaWQuIEl0IGlzIGd1YXJhbnRlZWQgYnkgU3RhbmRhcmQgRWxla3RyaWsgTG9yZW56IEFHLiAgICAgVGhlIG5vbi1jYWxsYWJsZSBib25kIGlzIGF2YWlsYWJsZSBpbiBkZW5vbWluYXRpb25zIG9mIDEsMDAwIGFuZCA1LDAwMCBBdXN0cmFsaWFuIGRscnMgYW5kIHdpbGwgYmUgbGlzdGVkIGluIEx1eGVtYm91cmcuIFRoZSBzZWxsaW5nIGNvbmNlc3Npb24gaXMgb25lIHBjdCB3aGlsZSBtYW5hZ2VtZW50IGFuZCB1bmRlcndyaXRpbmcgY29tYmluZWQgcGF5cyAxLzIgcGN0LiAgICAgVGhlIHBheW1lbnQgZGF0ZSBpcyBNYXkgMTEuICBSRVVURVIgMzsKMTk4NzA0MDkJU1RBVFVTIEdBTUUgQ09SUCA8U1RHTT4gM1JEIFFUUiBGRUIgMjggTkVUIE9wZXIgc2hyIHNpeCBjdHMgdnMgb25lIGN0ICAgICBPcGVyIG5ldCAxOTQsMTA5IHZzIDI4LDc1MSAgICAgUmV2cyAyLDczMSw2ODggdnMgMzQ3LDEzNCAgICAgQXZnIHNocnMgMywzNjAsNTI3IHZzIDIsMjk1LDM1OSAgICAgTmluZSBtdGhzICAgICBPcGVyIHNociAxMSBjdHMgdnMgZml2ZSBjdHMgICAgIE9wZXIgbmV0IDM1Niw1NzEgdnMgMTExLDU0NSAgICAgUmV2cyA1LDkyMyw5MDcgdnMgMSw0OTEsODUyICAgICBBdmcgc2hycyAzLDI5Niw5ODIgdnMgMiwyODksNzYyICAgICBOT1RFOiBTaGFyZSBhZGp1c3RlZCBmb3IgMTAgcGN0IHN0b2NrIGRpdmlkZW5kIGluIERlY2VtYmVyIDE5ODYuIFByaW9yIHllYXIgbmV0IGV4Y2x1ZGVzIHRheCBjcmVkaXRzIG9mIDUsNzc1IGRscnMgaW4gcXVhcnRlciBhbmQgMTcsMzI1IGRscnMgaW4gbmluZSBtdGhzLiAgICAgTmV0IGV4Y2x1ZGVzIGRpc2NvbnRpbnVlZCBhbXVzZW1lbnQgZ2FtZSBvcGVyYXRpb25zIGdhaW5zIDE0NCwwOTUgZGxycyB2cyA3MCwxOTQgZGxycyBpbiBxdWFydGVyIGFuZCBsb3NzIDIsOTUyLDgxNCBkbHJzIHZzIGdhaW4gMTk2LDg3MiBkbHJzIGluIG5pbmUgbXRocy4gIFJldXRlciAzOwoxOTg3MDQwOQlTVEVQLVNBVkVSIDxDT0RBPiBTQVlTIFdBUlJBTlQgRVhFUkNJU0VEIFN0ZXAtU2F2ZXIgRGF0YSBTeXN0ZW1zIEluYyBzYWlkIEJlcmdlbi1SaWNoYXJkcyBDb3JwIGhhcyBleGVyY2lzZWQgYSB3YXJyYW50IHRvIGJ1eSA0NTAsMDAwIFN0ZXAtU2F2ZXIgc2hhcmVzIGF0IHR3byBkbHJzIGVhY2guICAgICBJdCBzYWlkIHdhcnJhbnRzIGlzc3VlZCB0byB0aGUgdW5kZXJ3cml0ZXIgaW4gaXRzIGluaXRpYWwgcHVibGljIG9mZmVyaW5nIHdlcmUgZXhlcmNpc2VkIGluIE1hcmNoIGZvciBhbiBhZ2dyZWdhdGUgb2YgMTY5LDIwMCBkbHJzLiAgUmV1dGVyIDM7CjE5ODcwNDA5CVNUT0xURU5CRVJHIE5PVCBTVVJQUklTRUQgQlkgRE9MTEFSIFJFQUNUSU9OIFdlc3QgR2VybWFuIEZpbmFuY2UgTWluaXN0ZXIgR2VyaGFyZCBTdG9sdGVuYmVyZyBzYWlkIGhlIHdhcyBub3Qgc3VycHJpc2VkIGJ5IHRoZSBvdmVybmlnaHQgZGVjbGluZSBvZiB0aGUgZG9sbGFyIGluIGZvcmVpZ24gZXhjaGFuZ2UgbWFya2V0cy4gICAgIFNwZWFraW5nIGJyaWVmbHkgd2l0aCByZXBvcnRlcnMgYmVmb3JlIGVudGVyaW5nIGEgbWVldGluZyBvZiB0aGUgSW50ZXJuYXRpb25hbCBNb25ldGFyeSBGdW5kIGhlIHNhaWQsICJUaGVzZSBtaW5vciBtb3ZlbWVudHMgZG9uJ3QgcmVhbGx5IGFmZmVjdCB1cy4iICAgICBUaGUgZG9sbGFyIGRlY2xpbmVkIGluIHRoZSBpbml0aWFsIHJlYWN0aW9uIHRvIGEgc3RhdGVtZW50IGJ5IHRoZSBHcm91cCBvZiBTZXZlbiBpbmR1c3RyaWFsIGNvdW50cmllcyByZWFmZmlybWluZyB0aGVpciBQYXJpcyBhZ3JlZW1lbnQgaW4gRmVicnVhcnkgdG8gbWFpbnRhaW4gdGhlaXIgY3VycmVuY2llcyBhcm91bmQgY3VycmVudCBsZXZlbHMuICBSZXV0ZXIgMzsKMTk4NzA0MDkJU1RPUCBBTkQgU0hPUCBDT1MgPFNIUD4gSU4gVFdPLUZPUi1PTkUgU1BMSVQgVGhlIFN0b3AgYW5kIFNob3AgQ29zIEluYyBzYWlkIGl0cyBib2FyZCB2b3RlZCBhIHR3by1mb3Itb25lIHN0b2NrIHNwbGl0IHBheWFibGUgSnVseSBPbmUsIHRvIHN0b2NraG9sZGVycyBvZiByZWNvcmQgTWF5IDI5LiAgICAgSXQgYWxzbyBzYWlkIGl0IHdhcyByYWlzaW5nIGl0cyBxdWFydGVybHkgY2FzaCBkaXZpZGVuZCAxNiBwY3QgdG8gMzIgY3RzIHBlciBzaGFyZSBmcm9tIDI3LjUgY3RzIHBlciBzaGFyZSBwcmlvci4gICAgIEFzIGEgcmVzdWx0IG9mIHRoZSBzcGxpdCwgdGhlIG51bWJlciBvZiBvdXRzdGFuZGluZyBzaGFyZXMgd2lsbCBpbmNyZWFzZSB0byAyOCBtbG4gZnJvbSAxNCBtbG4sIHRoZSBjb21wYW55IHNhaWQuICAgICBUaGUgZGl2aWRlbmQgaXMgcGF5YWJsZSBKdWx5IE9uZSB0byBzaGFyZWhvbGRlcnMgb2YgcmVjb3JkIE1heSAyOSwgaXQgc2FpZC4gIFJldXRlciAzOwoxOTg3MDQwOQlTVE9QIEFORCBTSE9QJ1MgPFNIUD4gQlJBRExFRVMgTUFSQ0ggU0FMRVMgUklTRSBTdG9wIGFuZCBTaG9wIENvcyBJbmMgc2FpZCBpdHMgQnJhZGxlZXMgRGlzY291bnQgRGVwYXJ0bWVudCBTdG9yZXMgRGl2aXNpb24ncyBzYWxlcyBmb3IgdGhlIGZpdmUgd2Vla3MgZW5kZWQgQXByaWwgZm91ciB3ZXJlIHVwIHNpeCBwY3QgdG8gMTU2IG1sbiBkbHJzIGZyb20gMTQ3IG1sbiBkbHJzIGEgeWVhciBiZWZvcmUsIHdpdGggc2FtZS1zdG9yZSBzYWxlcyB1cCBvbmUgcGN0LiAgICAgVGhlIGNvbXBhbnkgc2FpZCBzYWxlcyBmb3IgdGhlIGZpcnN0IG5pbmUgd2Vla3Mgb2YgdGhlIHllYXIgd2VyZSB1cCBzaXggcGN0IHRvIDI1OSBtbG4gZGxycyBmcm9tIDI0NSBtbG4gZGxycyBhIHllYXIgYmVmb3JlLCB3aXRoIHNhbWUtc3RvcmUgc2FsZXMgdXAgdHdvIHBjdC4gIFJldXRlciAzOwoxOTg3MDQwOQlTVU5UUlVTVCBCQU5LUyBJTkMgPFNUST4gMVNUIFFUUiBORVQgU2hyIDU0IGN0cyB2cyA0OSBjdHMgICAgIE5ldCA3MC4yIG1sbiB2cyA2NC4wIG1sbiAgICAgTk9URTogU2hhcmUgYWRqdXN0ZWQgZm9yIHR3by1mb3Itb25lIHNwbGl0IGluIEp1bHkgMTk4Ni4gICAgIFJlc3VsdHMgcmVzdGF0ZWQgZm9yIHBvb2xlZCBhY3F1aXNpdGlvbiBvZiBUaGlyZCBOQXRpb25hbCBDb3JwIGluIERlY2VtYmVyIDE5ODYuICAgICBOZXQgY2hhcmdlb2ZmcyAxNS4wIG1sbiBkbHJzIHZzIDE0LjIgbWxuIGRscnMuICAgICBBc3NldHMgMjUuOCBiaWxsaW9uIGRscnMsIHVwIDcuMiBwY3QgZnJvbSBhIHllYXIgZWFybGllciwgZGVwb3NpdHMgMjEuMSBiaWxsaW9uLCB1cCA5LjQgcGN0LCBhbmQgbG9hbnMgMTcuMSBiaWxsaW9uIGRscnMsIHVwIDE3LjIgcGN0LiAgUmV1dGVyIDM7CjE5ODcwNDA5CVNXRURJU0ggRFJVRyBGSVJNIEFTVFJBIFJJU0UgT04gQUlEUyBIT1BFUyBTd2VkaXNoIGRydWcgZmlybSBBQiBBc3RyYSA8QVNUUy5TVD4gc2hhcmVzIHJvc2UgNDggY3Jvd25zIHRvIDY5MCBpbiB0aGUgZmlyc3QgdHdvIGhvdXJzIG9mIHRyYWRpbmcgb24gdGhlIFN0b2NraG9sbSBCb3Vyc2UsIGFtaWQgaG9wZXMgaXRzIHJlc2VhcmNoIGludG8gYW50aS12aXJhbCBkcnVncyBtYXkgaGF2ZSBwcm9taXNpbmcgcmVzdWx0cyBpbiB0aGUgdHJlYXRtZW50IG9mIEFjcXVpcmVkIEltbXVuZSBEZWZpY2llbmN5IFN5bmRyb21lIChBSURTKS4gICAgIFN0b2NrYnJva2VycyBzYWlkIHRoZSBzaGFyZXMsIHdoaWNoIGNsaW1iZWQgYW1pZCBoZWF2eSBpbnN0aXR1dGlvbmFsIGJ1eWluZywgYWxzbyByb3NlIGluIHJlYWN0aW9uIHRvIGFuIG9wdGltaXN0aWMgYXNzZXNzbWVudCBvZiBmdXR1cmUgcHJvZHVjdHMgaW4gdGhlIGZpcm0ncyBhbm51YWwgcmVwb3J0IHdoaWNoIHdhcyByZWxlYXNlZCB0aGlzIHdlZWsuICAgICBCcm9rZXJzIEVuc2tpbGRhIEZvbmRrb21taXNzaW9uIHNhaWQgaW4gYSByZXBvcnQgdGhpcyBtb250aCB0aGF0IEFzdHJhIHdhcyBhIHdvcmxkIGxlYWRlciBpbiBhbnRpLXZpcmFsIGRydWdzLiAgICAgQWx0aG91Z2ggRW5za2lsZGEgc2FpZCBBc3RyYSBoYWQgbm90IG1hZGUgYW55IGJyZWFrdGhyb3VnaCBpbiBkZXZlbG9waW5nIGEgc3BlY2lmaWMgZHJ1ZyB0byB0cmVhdCB0aGUgQWNxdWlyZWQgSW1tdW5lIERlZmljaWVuY3kgU3luZHJvbWUgaXQgbm90ZWQgdGhhdCBpbnZlc3RvcnMgd2VyZSBvbmx5IG5vdyBkaXNjb3ZlcmluZyB0aGF0IHRoZSBmaXJtJ3MgYXBwcm9hY2ggaW4gdGhlIGFyZWEgd2FzIHByb21pc2luZy4gICAgICJJdCBpcyBjbGVhciB0aGF0IEFzdHJhIGhhcyBhIHRyYWRpdGlvbiBpbiBhbnRpLXZpcmFsIHJlc2VhcmNoIHdoaWNoIHNob3VsZCBwcm92ZSB2YWx1YWJsZSBpbiBmaWdodGluZyB0aGlzIGRpc2Vhc2UsIiB0aGUgcmVwb3J0IGJ5IEVuc2tpbGRhLCB0aGUgaW52ZXN0bWVudCBiYW5raW5nIHVuaXQgb2YgU2thbmRpbmF2aXNrYSBFbnNraWxkYSBCYW5rZW4gPFNFQlMuU1Q+LCBzYWlkLiAgICAgQ29tcGFueSBvZmZpY2lhbHMgY291bGQgbm90IGJlIHJlYWNoZWQgZm9yIGNvbW1lbnQgb24gdGhlIGNhdXNlcyBvZiB0b2RheSdzIHNoYXJlIHJpc2UuICBSRVVURVIgMzsKMTk4NzA0MDkJU1dJU1MgQUdSRUUgT04gTkVXIFBST1NQRUNUVVMgUlVMRVMgRk9SIE5PVEVTIFN3aXNzIGZyYW5jIG5vdGVzIGlzc3VlZCBhZnRlciBNYXkgMSBtdXN0IGJlIHByb3ZpZGVkIHdpdGggYSBwcm9zcGVjdHVzLCB2aXJ0dWFsbHkgZXJhc2luZyB0aGUgZGlmZmVyZW5jZSBpbiBpbmZvcm1hdGlvbiByZXF1aXJlbWVudHMgYmV0d2VlbiBub3RlcyBhbmQgcHVibGljIGJvbmRzLCBhY2NvcmRpbmcgdG8gYSBjb252ZW50aW9uIGRyYWZ0ZWQgYnkgdGhlIEJhbmtlcnMnIEZlZGVyYXRpb24uICAgICBUaGUgY29udmVudGlvbiByZXF1aXJlcyB0aGF0IGxlYWQgbWFuYWdlcnMgZHJhdyB1cCBhIHByb3NwZWN0dXMgbmFtaW5nIGFsbCBzeW5kaWNhdGUgbWVtYmVycyBhbmQgcHJvdmlkaW5nIGNlcnRhaW4gZGV0YWlscyBhYm91dCB0aGUgYm9ycm93ZXIuICAgICBJbiBjb250cmFzdCB0byBwdWJsaWMgaXNzdWVzLCB0aG91Z2gsIHRoZSBwcm9zcGVjdHVzIG11c3QgbWVyZWx5IGJlIG1hZGUgYXZhaWxhYmxlIHRvIGNsaWVudHMgb24gcmVxdWVzdCB2aWEgYWxsIHN5bmRpY2F0ZSBiYW5rcyByYXRoZXIgdGhhbiBwdWJsaXNoZWQgYW5kIGRpc3RyaWJ1dGVkIGluIHByaW50ZWQgZm9ybS4gICAgIFRoZSBjb252ZW50aW9uLCB3aGljaCB3YXMgYXBwcm92ZWQgYnkgYmFua3MgZWFybGllciB0aGlzIG1vbnRoLCByZXBsYWNlcyBhbiBlYXJsaWVyIGNvbnZlbnRpb24gZGF0aW5nIGZyb20gMTk4NCBhbmQgZGVhbHMgd2l0aCB3aGF0IGhhZCBiZWVuIHdpZGVseSBzZWVuIGFzIGFuIGluY3JlYXNpbmdseSBhbmFjaHJvbmlzdGljIGRpc3RpbmN0aW9uIGJldHdlZW4gbm90ZXMgYW5kIHB1YmxpYyBpc3N1ZXMuICAgICBJdHMgcHVibGljYXRpb24gZm9sbG93cyBhIGxvbmcgZGViYXRlIGFtb25nIGJhbmtlcnMgb24gdGhlIGFtb3VudCBvZiBpbmZvcm1hdGlvbiB0aGF0IHNob3VsZCBiZSBwcm92aWRlZCBieSBib3Jyb3dlcnMsIGhlaWdodGVuZWQgYnkgZGlmZmljdWx0aWVzIHdpdGggU3dpc3MgZnJhbmMgaXNzdWVzIGhlcmUgb24gcmVjZW50IG9jY2FzaW9ucyAuICAgICBJdCBhcHBsaWVzIHRvIGFsbCBub3RlcyBpbiB1bml0cyBvZiBhdCBsZWFzdCA1MCwwMDAgU3dpc3MgZnJhbmNzLCB0aGUgdXN1YWwgZGVub21pbmF0aW9uLCB3aGljaCBhcmUgcGxhY2VkIGRpcmVjdGx5IHdpdGggY3VzdG9tZXJzIGJ5IHRoZSBzeW5kaWNhdGUgYW5kIG5vdCBxdW90ZWQgb24gdGhlIGJvdXJzZS4gICAgIEFueXRoaW5nIHNtYWxsZXIgdGhhbiA1MCwwMDAgZnJhbmNzIHdpbGwgYmUgZ292ZXJuZWQgYnkgdGhlIHVuY2hhbmdlZCwgbW9yZSBkZW1hbmRpbmcgcnVsZXMgdGhhdCBhcHBseSB0byBwdWJsaWMgaXNzdWVzLiAgICAgQmFua2VycyBjb250YWN0ZWQgYnkgUmV1dGVycyBzYWlkIHRoZXkgZGlkIG5vdCBlbnZpc2FnZSB0aGF0IHRoZSBuZXcgcmVxdWlyZW1lbnQgd291bGQgcHJlc2VudCB0aGVtIHdpdGggcHJvYmxlbXMgb3IgcHVzaCB1cCBmZWVzLiBNYW55IGJhbmtzIHNhaWQgdGhhdCB0aGV5IGhhZCBmb3Igc29tZSB0aW1lIGJlZW4gcHJvdmlkaW5nIG1vcmUgdGhhbiB0aGUgbGVnYWwgbWluaW11bSBvZiBpbmZvcm1hdGlvbi4gICAgIFRyYWRpdGlvbmFsbHksIG5vdGVzIG9yIHByaXZhdGUgcGxhY2VtZW50cywgYXMgdGhleSB3ZXJlIGFsc28ga25vd24sIHdlcmUgbWVkaXVtIHRlcm0gaW5zdHJ1bWVudHMgZGVub21pbmF0ZWQgaW4gNTAsMDAwIGZyYW5jcyBhbmQgcGxhY2VkIGxhcmdlbHkgd2l0aCBpbnN0aXR1dGlvbmFsIGludmVzdG9ycy4gICAgIFRoZXkgd2VyZSBub3JtYWxseSBub3QgYnJvdWdodCBvbnRvIHRoZSBvcGVuIG1hcmtldCBhbmQgbmV2ZXIgcXVvdGVkIG9uIHRoZSBzdG9jayBleGNoYW5nZS4gICAgIEJ1dCBvdmVyIHRoZSB5ZWFycyB0aGUgZGlzdGluY3Rpb24gYmV0d2VlbiBub3RlcyBhbmQgdGhlIHB1YmxpY2x5IHF1b3RlZCBhbmQgdHJhZGVkIGJvbmRzIGdyYWR1YWxseSBicm9rZSBkb3duLiBUaGUgTmF0aW9uYWwgQmFuayB0aGVyZWZvcmUgbGFzdCBNYXkgYWJvbGlzaGVkIGFsbCByZW1haW5pbmcgcmVzdHJpY3Rpb25zIG9uIG1hdHVyaXRpZXMgYW5kIGRlbm9taW5hdGlvbnMgd2hpY2ggc3RpbGwgZm9ybWFsbHkgZGl2aWRlZCB0aGVtLiAgICAgSG93ZXZlciwgaXQgd2FzIG5vdCBpbiB0aGUgY29tcGV0ZW5jZSBvZiB0aGUgTmF0aW9uYWwgQmFuayB0byBydWxlIG9uIHByb3NwZWN0dXNlcyBhbmQgYmFua3MgaGF2ZSBzaW5jZSBjb250aW51ZWQgbGFyZ2VseSBhcyBiZWZvcmU6IHB1YmxpYyBpc3N1ZXMsIGdlbmVyYWxseSBxdW90ZWQgb24gc3RvY2sgZXhjaGFuZ2VzLCBoYXZlIGJlZW4gcHJvdmlkZWQgd2l0aCBkZXRhaWxlZCBwcm9zcGVjdHVzZXMsIHdoaWxlIG5vdGVzLCB2aXJ0dWFsbHkgYWx3YXlzIG5vdC1xdW90ZWQsIGhhdmUgYmVlbiBlcXVpcHBlZCBvbmx5IHdpdGggImluZm9ybWF0aW9uIG1lbW9yYW5kdW1zIiB3aXRoIHZhcnlpbmcgZGVncmVlcyBvZiBkZXRhaWwuICAgICBUaGUgbmV3IGNvbnZlbnRpb24gYXR0ZW1wdHMgdG8gcHV0IGFuIGVuZCB0byB0aGlzLiBJdCBzYXlzIGVhY2ggbm90ZXMgcHJvc3BlY3R1cyBtdXN0IGNvbnRhaW4gdGhlIGZvbGxvd2luZyBzZXZlbiBwb2ludHM6ICAgICAtIFRoZSBwcmVjaXNlIHRlcm1zIG9mIHRoZSBpc3N1ZSAgICAgLSBEZXRhaWxzIG9mIHRoZSBjb21wYW55IHBlcmZvcm1hbmNlIGlmIGl0IGlzIG1vcmUgdGhhbiBzaXggbW9udGhzIHNpbmNlIHRoZSBsYXN0IGFubnVhbCByZXBvcnQgICAgIC0gTmFtaW5nIG9mIGFsbCBndWFyYW50b3JzICAgICAtIFRoZSBzb3VyY2Ugb2YgdGhlIGluZm9ybWF0aW9uICAgICAtIERldGFpbHMgb2YgcmF0aW5ncywgaW5zb2ZhciBhcyB0aGV5IGhhdmUgYmVlbiBtYWRlICAgICAtIEZvciBlcXVpdHkgbGlua2VkIG5vdGVzLCBkZXRhaWxzIG9mIHdoZXJlIHRoZSBjb21wYW55J3Mgc2hhcmVzIGFyZSBsaXN0ZWQgYW5kIHByaWNlIGhpZ2ggYW5kIGxvd3Mgb3ZlciBhdCBsZWFzdCB0aGUgbGFzdCB0aHJlZSB5ZWFycy4gICAgIC0gVGhhdCB0aGUgbGVhZCBtYW5hZ2VyIGhhcyByZXF1aXJlZCB0aGUgYm9ycm93ZXIgdG8gcHJvdmlkZSBpbmZvcm1hdGlvbiBkdXJpbmcgdGhlIGxpZmV0aW1lIG9mIHRoZSBub3RlcyBvbiB0aGUgcHJvZ3Jlc3Mgb2YgaGlzIGJ1c2luZXNzLiAgICAgIEFjY29yZGluZyB0byBmaWd1cmVzIGZyb20gU3dpc3MgQmFuayBDb3JwLCB0b3RhbCBub3RlIGlzc3VlcyBieSBmb3JlaWduIGJvcnJvd2VycyByZWFjaGVkIDE4LjYgYmlsbGlvbiBTd2lzcyBmcmFuY3MgbGFzdCB5ZWFyLCBjb21wYXJlZCB3aXRoIDIzLjYgYmlsbGlvbiBmcmFuY3MgYm9ycm93ZWQgaW4gdGhlIGZvcm0gb2YgcHVibGljIGJvbmRzLiAgICAgQSBtYWpvcml0eSBvZiB0aGUgbm90ZSBpc3N1ZXMgd2VyZSBmb3IgSmFwYW5lc2UgYm9ycm93ZXJzLiAgUkVVVEVSIDM7CjE5ODcwNDA5CVNXSVNTIFRPIExBVU5DSCBORVcgU0VSSUVTIE9GIE1PTkVZIE1BUktFVCBQQVBFUiBUaGUgU3dpc3MgRmVkZXJhbCBHb3Zlcm5tZW50IHdpbGwgbGF1bmNoIGEgbmV3IHNlcmllcyBvZiB0aHJlZSBtb250aCBtb25leSBtYXJrZXQgY2VydGlmaWNhdGVzIHRvdGFsbGluZyBhcm91bmQgMTUwIG1sbiBTd2lzcyBmcmFuY3MsIHRoZSBOYXRpb25hbCBCYW5rIHNhaWQuICAgICBTdWJzY3JpcHRpb25zIGNsb3NlIEFwcmlsIDE0IGFuZCBwYXltZW50IGRhdGUgaXMgQXByaWwgMTYuICAgICBUaGUgbGFzdCBzZXJpZXMgb2YgdGhyZWUgbW9udGggcGFwZXIgaXNzdWVkIGluIE1hcmNoIHJhaXNlZCAxNDcuMyBtbG4gZnJhbmNzIGF0IGFuIGlzc3VlIHByaWNlIG9mIDk5LjE0MiBwY3QsIGdpdmluZyBhbiBhdmVyYWdlIGFubnVhbCB5aWVsZCBvZiAzLjUwMSBwY3QuICAgICBSRVVURVIgMzsKMTk4NzA0MDkJVC4gUk9XRSBQUklDRSA8VFJPVz4gU0VFUyBISUdIRVIgRklSU1QgUVVBUlRFUiBULiBSb3dlIFByaWNlIEFzc29jaWF0ZXMgc2FpZCBpdHMgZmlyc3QgcXVhcnRlciBlYXJuaW5ncyByb3NlIGFib3V0IDUwIHBjdCBmcm9tIHRoZSB5ZWFyLWFnbyAyLDYzNCwwMDAgZGxycyBhbmQgcmV2ZW51ZXMgYWJvdXQgMzAgcGN0IGZyb20gdGhlIHllYXItYWdvIDI0LjIgbWxuIGRscnMuICAgICBJdCBzYWlkIGl0IGV4cGVjdHMgInZlcnkgZ29vZCIgZWFybmluZ3MgYW5kIHJldmVudWUgZ3Jvd3RoIHRoaXMgeWVhci4gIEluIDE5ODYgaXQgZWFybmVkIDE0LjggbWxuIGRscnMgb24gcmV2ZW51ZXMgb2YgMTExLjEgbWxuIGRscnMuICBSZXV0ZXIgMzsKMTk4NzA0MDkJVEFCVUNISSBFTEVDVFJJQyBJU1NVRVMgMzAgTUxOIFNXSVNTIEZSQU5DIE5PVEVTIFRhYnVjaGkgRWxlY3RyaWMgQ28gaXMgbGF1bmNoaW5nIDMwIG1sbiBTd2lzcyBmcmFuY3Mgb2YgZml2ZS15ZWFyIHN0cmFpZ2h0IG5vdGVzIHdpdGggYSA0LTMvNCBwY3QgY291cG9uIGFuZCBwYXIgaXNzdWUgcHJpY2UsIGxlYWQgbWFuYW5nZXIgU3dpc3MgQmFuayBDb3JwIHNhaWQuICAgICBQYXltZW50IGlzIGR1ZSBBcHJpbCAyMi4gIFJFVVRFUiAzOwoxOTg3MDQwOQlUQUZUIEJST0FEQ0FTVElORyA8VEZCPiBDT01QTEVURVMgU1RBVElPTiBTQUxFIFRWWCBCcm9hZGNhc3QgR3JvdXAgSW5jIDxUVlhHPiBzYWlkIGl0IGhhcyBjb21wbGV0ZWQgdGhlIHByZXZpb3VzbHktYW5ub3VuY2VkIHB1cmNoYXNlIG9mIGZpdmUgVGFmdCB0ZWxldmlzaW9uIHN0YXRpb25zLiAgICAgTGFzdCB3ZWVrLCBUVlggc2FpZCB0aGUgc2FsZSwgd2hpY2ggd2FzIHNjaGVkdWxlZCB0byBjbG9zZSB0aGVuLCBoYWQgYmVlbiBkZWxheWVkLiAgICAgVGFmdCBzYWlkIHRoZSBwdXJjaGFzZSBwcmljZSB3YXMgMjQwIG1sbiBkbHJzLCBhcyBwcmV2aW91c2x5IGFubm91bmNlZC4gVGhlIHByaWNlIGlzIHN1YmplY3QgdG8gZmluYWwgYWRqdXN0bWVudHMsIFRhZnQgc2FpZC4gICAgIFRhZnQgZGlkIG5vdCBpbmRpY2F0ZSB0aGUgc2l6ZSBvZiB0aGUgZ2FpbiwgaWYgYW55LCBpdCB3b3VsZCBwb3N0IG9uIHRoZSBzYWxlLiAgICAgSXQgc2FpZCB0aGUgc3RhdGlvbnMgYXJlIFdUQUYtUGhpbGFkZWxwaGlhLCBXRENBLVdhc2hpbmd0b24sIFdDSVgtTWlhbWksIEtUWEEtRGFsbGFzIGFuZCBLVFhILUhvdXN0b24uICBSZXV0ZXIgMzsKMTk4NzA0MDkJVEFMS0lORyBQT0lOVC9TVEVFTCBDT01QQU5JRVMgU3RlZWwgc3RvY2tzLCB3aGljaCBoYXZlIGhhZCBhIGhlYWx0aHkgcnVudXAgcmVjZW50bHksIHN0aWxsIHByZXNlbnQgc29tZSBzaG9ydCB0ZXJtIGludmVzdG1lbnQgb3Bwb3J0dW5pdGllcywgYWNjb3JkaW5nIHRvIHNvbWUgc3RlZWwgYW5hbHlzdHMuICAgICBCdXQgb3RoZXJzIHNheSB0aGUgdXB0dXJuLCBiYXNlZCBvbiBzdHJvbmcgb3JkZXJzIGFuZCBmaXJtIHByaWNlcyB0aGlzIHNwcmluZywgaGFzIGJlZW4gc3RyaWN0bHkgc2Vhc29uYWwgYW5kIHdpbGwgZW5kIHNvb24uIFRoZXkgcmVjb21tZW5kIHRha2luZyBwcm9maXRzLiAgICAgIkl0J3MgdGhhdCB0aW1lIG9mIHllYXIuIFRoaXMgaXMgc3RyaWN0bHkgc2Vhc29uYWwsIiBzYWlkIENoYXJsZXMgQnJhZGZvcmQgb2YgTWVycmlsbCBMeW5jaCBhbmQgQ28uICJPcmRlcnMgd2lsbCBiZSBzdHJvbmcgZm9yIGFib3V0IHR3byBtb250aHMsIGFuZCB0aGVyZSBhcmUgc2lnbnMgdGhhdCBzb21lIChvcmRlciByYXRlcykgYXJlIHN0YXJ0aW5nIHRvIGRpdmUgYWxyZWFkeS4iICAgICBCdXQgRGVhbiBXaXR0ZXIgUmV5bm9sZHMgSW5jIGFuYWx5c3QgQ2xhcmVuY2UgTW9ycmlzb24gc2VlcyBzb21lIHNob3J0LXRlcm0gcG90ZW50aWFsIGluIHRoZSBncm91cCwgd2hpY2ggaW5jbHVkZXMgVVNYIENvcnAgPFg+LCBCZXRobGVoZW0gU3RlZWwgQ29ycCA8QlM+LCBBcm1jbyBJbmMgPEFTPiBhbmQgSW5sYW5kIFN0ZWVsIEluZHVzdHJpZXMgSW5jIDxJQUQ+LiAgICAgIlRoZXJlIGlzIHN0aWxsIHNvbWUgYXR0cmFjdGl2ZW5lc3MgdG8gc3RlZWxzIG92ZXIgdGhlIHNob3J0LSB0byBpbnRlcm1lZGlhdGUtdGVybSBiYXNlZCBvbiBpbXByb3ZlZCBvcmRlciByYXRlcyBhbmQgcmlzaW5nIHByaWNlcywiIE1vcnJpc29uIHNhaWQuIEhlIG9ubHkgcmVjb21tZW5kcyBvbmUgc3RvY2ssIGhvd2V2ZXIsIElubGFuZCwgd2hpY2ggaXMgbW9kZXJuaXppbmcgc3RlZWxtYWtpbmcgb3BlcmF0aW9ucyB0byBtYWtlIHRoZW0gbW9yZSBlZmZpY2llbnQuICAgICBEZXNwaXRlIGhpcyBiZWFyaXNobmVzcywgTWVycmlsbCdzIEJyYWRmb3JkIGNvbnRpbnVlcyB0byByZWNvbW1lbmQgQXJtY28sIHdoaWNoIGhlIHNlZXMgYXMgYSBtYWpvciB0dXJuYXJvdW5kLiAgICAgQXJtY28ncyBzdGVlbG1ha2luZyBvcGVyYXRpb25zIGFyZSBwcm9maXRhYmxlLCB0aGUgYmFsYW5jZSBzaGVldCBoYXMgYmVlbiBpbXByb3ZlZCwgYW5kIGl0cyBvaWxmaWVsZCBlcXVpcG1lbnQgYnVzaW5lc3MgaGFzIGJlZW4gc2xpbW1lZCBhbmQgcHV0IGluIGEgam9pbnQgdmVudHVyZSB3aXRoIFVTWCwgQnJhZGZvcmQgbm90ZWQuICJJdCdzIG5vdCBhIGhpZ2gtcXVhbGl0eSBpbnZlc3RtZW50IHNpdHVhdGlvbiB5ZXQgYnV0IHRoZXkndmUgY29tZSBhIGxvbmcgd2F5LCIgaGUgc2FpZC4gICAgICJXZSB0aGluayB0aGUgc3RvY2sgd2lsbCBkbyBtb2RlcmF0ZWx5IGJldHRlciB0aGFuIHRoZSBtYXJrZXQsIiBoZSBzYWlkLiBBcm1jbyBzaGFyZXMsIHRyYWRpbmcgb2ZmIDEvNCBhdCAxMCB0b2RheSwgY291bGQgZ28gdG8gMTIsIGFuZCBwb3NzaWJseSBhcyBoaWdoIGFzIDE1LCBoZSBzYWlkLiAgICAgQnJhZGZvcmQgc2VlcyBBcm1jbyBlYXJuaW5nIDUwIHRvIDc1IGN0cyBhIHNoYXJlIGluIDE5ODcsIGJlZm9yZSBzcGVjaWFsIGdhaW5zIGZyb20gcmVjb3VwZWQgaW52ZXN0bWVudCB0YXggY3JlZGl0cywgYWdhaW5zdCBsb3NzZXMgbGFzdCB5ZWFyLiAgICAgQXJtY28ncyAxOTg4IGVhcm5pbmdzIGNvdWxkIGJlIHNpZ25pZmljYW50bHkgaGlnaGVyLCBoZSBzYWlkLiAgICAgQnJhZGZvcmQgaXMgcmVjb21tZW5kaW5nIHNhbGUgb2YgVVNYIHNoYXJlcy4gIldlIGhhZCBhIGJ1eSBvbiBpdCBiZWxvdyAyMCBidXQgd2hlbiBpdCBnZXRzIHRvIDI4LCBsZXQgc29tZWJvZHkgZWxzZSBoYXZlIGl0LCIgaGUgc2FpZC4gICAgIFRoZSBzdGVlbCBhbmQgZW5lcmd5IGNvbmNlcm4gd2lsbCBlYXJuIGFib3V0IG9uZSBkbHIgYSBzaGFyZSBpbiAxOTg3LCBhYm91dCBoYWxmIG9mIHRoYXQgY29taW5nIGZyb20gYXNzZXQgc2FsZXMsIGFuZCBmcm9tIHR3byBkbHJzIHRvIDIuNTAgZGxycyBpbiAxOTg4LCBCcmFkZm9yZCBzYWlkLiAiQnV0IGEgbG90IGRlcGVuZHMgb24gb2lsIHByaWNlcywiIGhlIGFkZGVkLiBBYm91dCA2MCBwY3Qgb2YgVVNYJ3Mgc2FsZXMgY29tZSBmcm9tIG9pbCBhbmQgbmF0dXJhbCBnYXMuICAgICBPdGhlciBhbmFseXN0cywgaW5jbHVkaW5nIE1pY2hlbGxlIEdhbGFudGVyIEFwcGxlYmF1bSBvZiBTYWxvbW9uIEJyb3RoZXJzIEluYywgcmVjb21tZW5kIFVTWC4gIlRoZSBjb21wYW55J3MgZG9uZSBhIGxvdCAob2YgcmVzdHJ1Y3R1cmluZyksIG1vcmUgdGhhbiB0aGUgbWFya2V0J3MgZ2l2ZW4gdGhlbSBjcmVkaXQgZm9yLCIgc2hlIHNhaWQuICAgICBTaGUgc2VlcyB0aGUgc3RvY2sgZ29pbmcgdG8gdGhlIG1pZCAzMHMgb3IgaGlnaGVyLiBVU1ggd2FzIHRyYWRpbmcgdXAgMS84IGF0IDI4LTEvMi4gU2hlIHByZWRpY3RzIFVTWCB3aWxsIGVhcm4gMTggY3RzIGEgc2hhcmUgdGhpcyB5ZWFyIGFuZCAyLjczIGRscnMgbmV4dCB5ZWFyIGFnYWluc3QgbGFyZ2UgbG9zc2VzIGluIDE5ODYuICAgICBBcHBsZWJhdW0sIHdobyBpcyBhbHNvIHBvc2l0aXZlIG9uIEFybWNvIGFuZCBJbmxhbmQsIGhhcyBiZWVuIHJlY29tbWVuZGluZyB0aGUgc3RvY2tzIHNpbmNlIGxhc3QgTm92ZW1iZXIuICAgICBQZXRlciBNYXJjdXMgb2YgUGFpbmV3ZWJiZXIgSW5jIGlzIG5ldXRyYWwgb24gdGhlIGdyb3VwIGFsdGhvdWdoIGhlIHNhaWQgdGhlIGVhcm5pbmdzIG91dGxvb2sgaXMgaW1wcm92ZWQgdGhyb3VnaCB0aGUgdGhpcmQgcXVhcnRlci4gICAgIEJ1dCBoZSBzZWVzIHBvdGVudGlhbCB0cm91YmxlIGJleW9uZCB0aGVuLiAiSSB0aGluayAoc3RlZWwpIHByaWNlcyBvbiBhIGJvb2tpbmdzIGJhc2lzIHdpbGwgc3RhcnQgdG8gZHJvcCBieSB0aGUgc3VtbWVyLCIgaGUgc2FpZC4gICAgIEFwcGxlYmF1bSBvZiBTYWxvbW9uIEJyb3RoZXJzIGFsc28gc2VlcyBzb21lIHNlYXNvbmFsIGRyb3BvZmYgbGF0ZXIgaW4gdGhlIHllYXIuICJCdXQgdGhlcmUgYXJlIG1vcmUgcG9zaXRpdmVzIHRoYW4gbmVnYXRpdmVzLCIgc2hlIHNhaWQsIGNpdGluZyByZWR1Y2VkIGNhcGFjaXR5IGluIHRoZSBkb21lc3RpYyBpbmR1c3RyeSwgYmV0dGVyIHByaWNlcywgYW5kIGEgd2Vha2VyIGRvbGxhciwgd2hpY2ggc2hvdWxkIGNhdXNlIHN0ZWVsIGltcG9ydHMgdG8gZHJvcCBvZmYgc2xpZ2h0bHkgZnJvbSBsYXN0IHllYXIuICBSZXV0ZXIgMzsKMTk4NzA0MDkJVEVYQVMgQU1FUklDQU4gPFRBRT4gT01JVFMgUFJFRkVSUkVEIFBBWU9VVCBUZXhhcyBBbWVyaWNhbiBFbmVyZ3kgQ29ycCBzYWlkIGl0cyBib2FyZCBoYXMgZGVjaWRlZCB0byBhZ2FpbiBvbWl0IHRoZSBxdWFydGVybHkgZGl2aWRlbmQgb24gaXRzIDIuNTc1IGRsciBjdW11bGF0aXZlIGNvbnZlcnRpYmxlIGV4Y2hhbmdlYWJsZSBwcmVmZXJyZWQgc3RvY2suICAgICBUaGUgZGl2aWRlbmQgd291bGQgaGF2ZSBiZWVuIHBheWFibGUgTWF5IE9uZS4gIFRoZSBjb21wYW55IGxhc3QgcGFpZCA2NC4zIGN0cyBhIHNoYXJlIG9uIHRoZSBpc3N1ZSBpbiBBdWd1c3QgMTk4Ni4gIFJldXRlciAzOwoxOTg3MDQwOQlURVhBUyBJTlRFUk5BVElPTkFMIDxURUk+IFJFVElSRVMgU09NRSBOT1RFUyBUZXhhcyBJbnRlcm5hdGlvbmFsIENvIHNhaWQgaXQgaGFzIHJldGlyZWQgMiw3MDAsMDAwIGRscnMgb2YgaXRzIDEwIHBjdCB0aGlyZCBkZWxheWVkIGNvbnZlcnRpYmxlIHNuaW9yIHN1Ym9yZGluYXRlZCBub3RlcyBvZiAxOTkzIFNlcmllcyBBIGFuZCBCLiAgICAgQXMgYSByZXN1bHQsIGl0IHNhaWQgaXQgaGFzIGVsaW1pbmF0ZWQgdGhlIHNjaGVkdWxlZCBNYXkgMTk4NyBjb252ZXJzaW9ucyBvZiAxLDMwMCwwMDAgZGxycyBvZiBTZXJpZXMgQSBub3RlcyBhbmQgMSw0MDAsMDAwIGRscnMgb2YgU2VyaWVzIEIgbm90ZXMuICBSZXV0ZXIgMzsKMTk4NzA0MDkJVEhBSSBSSUNFIEVYUE9SVFMgRkFMTCBJTiBXRUVLIFRPIEFQUklMIDcgVGhhaWxhbmQgZXhwb3J0ZWQgNTYsNjUyIHRvbm5lcyBvZiByaWNlIGluIHRoZSB3ZWVrIGVuZGVkIEFwcmlsIDcsIGRvd24gZnJvbSA3NSwxNjAgdG9ubmVzIHRoZSBwcmV2aW91cyB3ZWVrLCB0aGUgQ29tbWVyY2UgTWluaXN0cnkgc2FpZC4gICAgIEl0IHNhaWQgdGhlIGdvdmVybm1lbnQgYW5kIHByaXZhdGUgZXhwb3J0ZXJzIHNoaXBwZWQgNDEsNjA3IGFuZCAxNSwwNDUgdG9ubmVzIHJlc3BlY3RpdmVseS4gICAgIFByaXZhdGUgZXhwb3J0ZXJzIGNvbmNsdWRlZCBhZHZhbmNlIHdlZWtseSBzYWxlcyBmb3IgNDgsMDYyIHRvbm5lcyBhZ2FpbnN0IDIyLDA4NiB0b25uZXMgdGhlIHByZXZpb3VzIHdlZWsuICAgICBUaGFpbGFuZCBleHBvcnRlZCAxLjI5IG1sbiB0b25uZXMgb2YgcmljZSBzbyBmYXIgaW4gMTk4NywgZG93biBmcm9tIDEuMzkgbWxuIHRvbm5lcyBhIHllYXIgYWdvLiAgICAgSXQgaGFzIGNvbW1pdG1lbnRzIHRvIGV4cG9ydCBhIGZ1cnRoZXIgMzUzLDA0NSB0b25uZXMgdGhpcyB5ZWFyLiAgUkVVVEVSIDM7CjE5ODcwNDA5CVRIQUlMQU5EIFRPIFJFTkVXIExPTkcgVEVSTSBTVUdBUiBDT05UUkFDVFMgLVRSQURFIFRoYWlsYW5kIGlzIHRvIG5lZ290aWF0ZSB0b21vcnJvdyB3aXRoIHNlbGVjdGVkIHRyYWRlIGhvdXNlcyBmb3IgcmVuZXdhbCBvZiBsb25nIHRlcm0gcmF3IHN1Z2FyIHNhbGVzIGNvbnRyYWN0cywgdG8gY292ZXIgdGhlIG5leHQgZml2ZSB5ZWFycyBhdCBhIHJhdGUgb2YgNjAsMDAwIHRvbm5lcyBhbm51YWxseSwgdHJhZGVycyBzYWlkLiAgICAgVGhleSBhbHNvIHJlcG9ydGVkIHZhZ3VlIHRhbGsgQWxnZXJpYSBtYXkgYmUgc2Vla2luZyA1MCwwMDAgdG9ubmVzIG9mIHJhd3MgdG9tb3Jyb3cgYnV0IGRldGFpbHMgYXJlIHVuY2xlYXIuICBSRVVURVIgMzsKMTk4NzA0MDkJVElNRSA8VEw+IFRPIFNFTEwgUEFSVCBPRiBVTklUIFRpbWUgSW5jIHNhaWQgaXRzIFRpbWUtTGlmZSBWaWRlbyBJbmMgc3Vic2lkaWFyeSBoYXMgYWdyZWVkIGluIHByaW5jaXBsZSB0byBzZWxsIGl0cyBpbnN0aXR1dGlvbmFsIHRyYWluaW5nIGJ1c2luZXNzIHRvIFRpbWUtTGlmZSBWaWRlbyBwcmVzaWRlbnQgV2lsbGlhbSBWLiBBbWJyb3NlIGZvciB1bmRpc2Nsb3NlZCB0ZXJtcy4gICAgIEl0IHNhaWQgdGhlIGJ1c2luZXNzIHdpbGwgb3BlcmF0ZSBhcyBBbWJyb3NlIFZpZGVvIFB1Ymxpc2hpbmcuICBSZXV0ZXIgMzsKMTk4NzA0MDkJVE9ERCBTSElQWUFSRFMgPFRPRD4gU1RSVUNLIE9OIFdFU1QgQ09BU1QgVG9kZCBTaGlweWFyZHMgQ29ycCBzYWlkIHByb2R1Y3Rpb24gd29ya2VycyByZXByZXNlbnRlZCBieSB0aGUgbXVsdGktdW5pb24gUGFjaWZpYyBDb2FzdCBNZXRhbCBUcmFkZXMgRGlzdHJpY3QgQ291bmNpbCBhdCBpdHMgU2FuIEZyYW5jaXNjbyBkaXZpc2lvbiBzdHJ1Y2sgb24gQXByaWwgU2l4LiAgICAgSXQgc2FpZCBuZWdvdGlhdGlvbnMgYXJlIGV4cGVjdGVkIHRvIHJlc3VtZSBhdCB0aGUgZW5kIG9mIHRoaXMgbW9udGguICAgICBUb2RkIGFsc28gc2FpZCB0aGUgY29sbGVjdGl2ZSBiYXJnYWluaW5nIGRpdmlzaW9uIGluIGVmZmVjdCBhdCBpdHMgR2FsdmVzdG9uIERpdmlzaW9uIGV4cGlyZXMgQXByaWwgMTcsIGFuZCBuZWdvdGlhdGlvbnMgd2l0aCB0aGUgR2FsdmVzdG9uIE1ldGFsIFRyYWRlcyBDb3VuY2lsIGFyZSBjb250aW51aW5nLiAgICAgVGhlIGNvbXBhbnkgc2FpZCByZXN1bHRzIG9mIGJhbGxvdGluZyBvbiBhIG5ldyBjb2xsZWN0aXZlIGJhcmdhaW5pbmcgYWdyZWVtZW50IHByb3Bvc2FsIGluIGl0cyBTZWF0dGxlIERpdmlzaW9uIGFyZSBleHBlY3RlZCB0byBiZSB0YWJ1bGF0ZWQgYXQgdGhlIGNsb3NlIG9mIGJ1c2luZXNzIHRvbW9ycm93LiAgICAgVGhlIFBhY2lmaWMgQ29hc3QgQ291bmNpbCBoYXMgcmVjb21tZW5kZWQgYWNjZXB0YW5jZSBvZiB0aGF0IHByb3Bvc2FsIGJ5IG1lbWJlcnNoaXAsIFRvZGQgc2FpZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXV0ZXIgMzsKMTk4NzA0MDkJVE9ST05UTyBET01JTklPTiBBVVNUUkFMSUEgRE9MTEFSIEJPTkQgSU5DUkVBU0VEIFRvcm9udG8gRG9taW5pb24gQmFuaywgTmFzc2F1IEJyYW5jaCwgaGFzIGluY3JlYXNlZCBpdHMgZXVyb2JvbmQgb2ZmZXJpbmcgdG8gNTAgbWxuIEF1c3RyYWxpYW4gZGxycyBmcm9tIDQwIG1sbiwgbGVhZCBtYW5hZ2VyIEhhbWJyb3MgQmFuayBMdGQgc2FpZC4gICAgIEFsbCBvdGhlciB0ZXJtcyByZW1haW4gdGhlIHNhbWUuICBSRVVURVIgMzsKMTk4NzA0MDkJVE9ST05UTyBET01JTklPTiBBVVNUUkFMSUEgRE9MTEFSIEJPTkQgSU5DUkVBU0VEIFRvcm9udG8gRG9taW5pb24gQmFuaywgTmFzc2F1IEJyYW5jaCwgaGFzIGluY3JlYXNlZCBpdHMgZXVyb2JvbmQgb2ZmZXJpbmcgdG8gNTAgbWxuIEF1c3RyYWxpYW4gPGRscnMgZnJvbSA0MCBtbG4sIGxlYWQgbWFuYWdlciBIYW1icm9zIEJhbmsgTHRkIHNhaWQuICAgICBBbGwgb3RoZXIgdGVybXMgcmVtYWluIHRoZSBzYW1lLiAgUkVVVEVSIDM7CjE5ODcwNDA5CVRSQU5TQ0FQSVRBTCA8VEZDPiBVTklUIENMT1NJTkcgMTIgT0ZGSUNFUyBUcmFuc0NhcGl0YWwgRmluYW5jaWFsIENvcnAncyBUUkFOU09ISU8gU2F2aW5ncyBCYW5rIHN1YnNpZGlhcnkgc2FpZCBpdCBwbGFucyB0byBjbG9zZSAxMSBvZmZpY2VzIGluIHRoZSBDbGV2ZWxhbmQgYXJlYSBhbmQgb25lIGluIENvbHVtYnVzLCBPaGlvLCByZWR1Y2luZyBpdHMgdG90YWwgbnVtYmVyIG9mIG9mZmljZXMgdG8gODEgc3RhdGV3aWRlLiAgICAgVGhlIGNvbXBhbnkgc2FpZCBhY2NvdW50cyB3aWxsIGJlIG1vdmVkIGludG8gb3RoZXIgVFJBTlNPSElPIG9mZmljZXMuICBGb3VyIGNsb3NpbmdzIGFyZSBzZXQgZm9yIE1heSAyMyBhbmQgZm91ciBmb3IgSnVuZSAyMCBhbmQgdGhlIHJlc3QgYXJlIHRlbnRhdGl2ZWx5IHNldCBmb3IgU2VwdGVtYmVyIDE5LiAgICAgSXQgc2FpZCBpdCBpcyBjbG9zaW5nIGJyYW5jaGVzIHdlcmUgb3ZlcmxhcHMgZXhpc3QgZm9sbG93aW5nIGl0cyBBdWd1c3QgMTk4NiBhY3F1aXNpdGlvbnMgb2YgQ2l0aXplbnMgRmVkZXJhbCBTYXZpbmdzIGFuZCBMb2FuIEFzc29jaWF0aW9uIG9mIENsZXZlbGFuZCBhbmQgRG9sbGFyIFNhdmluZ3MgQmFuayBvZiBDb2x1bWJ1cyBvciB3aGVyZSBlZmZpY2llbmNpZXMgY291bGQgYmUgaW1wcm92ZWQuICBSZXV0ZXIgMzsKMTk4NzA0MDkJVFJFQVNVUlknUyBCQUtFUiBTQVlTIFNZU1RFTSBORUVEUyBTVEFCSUxJVFkgVHJlYXN1cnkgU2VjcmV0YXJ5IEphbWVzIEJha2VyIHNhaWQgdGhlIGZsb2F0aW5nIGV4Y2hhbmdlIHJhdGUgc3lzdGVtIGhhcyBub3QgYmVlbiBhcyBlZmZlY3RpdmUgYXMgaGFkIGJlZW4gaG9wZWQgaW4gcHJvbW90aW5nIHN0YWJpbGl0eSBhbmQgcHJldmVudGluZyBpbWJhbGFuY2VzIGZyb20gZW1lcmdpbmcgaW4gdGhlIGdsb2JhbCBlY29ub215LiAgICAgSW4gcmVtYXJrcyBiZWZvcmUgdGhlIGFmdGVybm9vbiBzZXNzaW9uIG9mIHRoZSBJbnRlcm5hdGlvbmFsIE1vbmV0YXJ5IEZ1bmQncyBJbnRlcmltIENvbW1pdHRlZSwgQmFrZXIgc2FpZCBoZSB3YXMgbm90IHN1Z2dlc3RpbmcgdGhhdCB0aGUgc3lzdGVtIHNob3VsZCBiZSBhYmFuZG9uZWQuICAgICAiQnV0IEkgZG8gc3VnZ2VzdCwiIGhlIHNhaWQsICJ0aGF0IHdlIG5lZWQgc29tZXRoaW5nIHRvIGdpdmUgaXQgbW9yZSBzdGFiaWxpdHkgYW5kIHRvIGtlZXAgaXQgaGVhZGVkIGluIHRoZSByaWdodCBkaXJlY3Rpb24gd2hlbiB0aGUgd2luZCBzaGlmdHMuIiAgICAgSGUgc2FpZCB0aGF0IGluZGljYXRvcnMgY2FuIHNlcnZlICJhcyBhIGtpbmQgb2YgY29tcGFzcyIgYnV0IGFkZGVkIHRoYXQgc3RydWN0dXJhbCBpbmRpY2F0b3JzIGNhbiBoZWxwIGZvY3VzIGF0dGVudGlvbiBvbiBzb21lIHBvbGljaWVzLiAgICAgQmFrZXIsIGhvd2V2ZXIsIHNhaWQgdGhlIElNRiAibmVlZHMgdG8gbW92ZSBiZXlvbmQgbWFjcm9lY29ub21pYyBpbmRpY2F0b3JzIGFuZCBmaW5kIHN0cnVjdHVyYWwgaW5kaWNhdG9ycyB0aGF0IGNhbiBoZWxwIGZvY3VzIGF0dGVudGlvbiBvbiBzb21lIG9mIHRoZSBwb2xpY2llcyBvZiBzcGVjaWZpYyByZWxldmFuY2UgdG8gdGhlIGltYmFsYW5jZXMgd2UgZmFjZSB0b2RheS4iICAgICBUaGUgVHJlYXN1cnkgU2VjcmV0YXJ5IHNhaWQgdGhhdCBpbmRpY2F0b3JzIHNob3VsZCBiZSBnaXZlbiBhIG1vcmUgcHJvbWluZW50IHJvbGUgaW4gdGhlIGFubnVhbCBlY29ub21pYyByZXZpZXdzIC0tIEFydGljbGUgSVYgY29uc3VsdGF0aW9ucyAtLSB0aGF0IHRoZSBGdW5kIHBlcmZvcm1zLiAgICAgQmFrZXIgYWxzbyB0b2xkIHRoZSBwb2xpY3kgbWFraW5nIGdyb3VwIHRoYXQgaXQgd2FzIHRpbWUgZm9yIHRoZSBJTUYgdG8gYWRvcHQgZWFybGllciByZWNvbW1lbmRhdGlvbnMgbWFraW5nIElNRiBzdXJ2ZWlsbGFuY2UgbW9yZSByZWxldmFudCB0byBuYXRpb25hbCBwb2xpY3ltYWtlcnMgYW5kIHRoZSBwdWJsaWMuICAgICAiSW4gcGFydGljdWxhciwgd2UgdXJnZSBpbmNyZWFzZWQgcHVibGljaXR5IGZvciBJTUYgYXBwcmFpc2FscyBkZXZlbG9wZWQgaW4gQXJ0aWNsZSBJViBjb25zdWx0YXRpb25zLCB0aGUgdXNlIG9mIGZvbGxvdy11cCByZXBvcnRzIG9uIGNvdW50cnkgYWN0aW9ucyB0byBpbXBsZW1lbnQgSU1GIHJlY29tbWVuZGF0aW9ucywgYW5kIGdyZWF0ZXIgdXNlIG9mIHNwZWNpYWwgY29uc3VsdGF0aW9uIHByb2NlZHVyZXMsIiBoZSBzYWlkLiAgICAgQmFrZXIgZW1waGFzaXplZCB0aGF0IGluZGljYXRvcnMgd2VyZSBhIGRldmljZSAiZm9yIG1vdmluZyBiZXlvbmQgcmhldG9yaWMgdG8gYWN0aW9uLiIgICAgIEhlIHNhaWQgdGhleSBwcm92aWRlICJtb3JlIHN0cnVjdHVyZSB0byB0aGUgc3lzdGVtLCBhbmQgaW5kdWNlIG1vcmUgZGlzY2lwbGluZSBhbmQgcGVlciBwcmVzc3VyZSBpbnRvIHRoZSBwcm9jZXNzIG9mIHBvbGljeSBjb29yZGluYXRpb24uIiAgICAgSGUgc2FpZCB0aGUgRnVuZCdzIHByb2NlZHVyZXMgZm9yIHN1cnZlaWxsYW5jZSBuZWVkIHRvIGJlIHJldmlld2VkIGFuZCB1cGRhdGVkIHRvIHJlZmxlY3QgdGhlIHVzZSBvZiBpbmRpY2F0b3JzLiAgICAgIlRoaXMgc2hvdWxkIGJlIG1hdHRlciBvZiBwcmlvcml0eSBmb3IgdGhlIGV4ZWN1dGl2ZSBib2FyZCwiIGhlIHNhaWQuICAgICBCYWtlciBhbHNvIHVyZ2VkIHRoZSBGdW5kIHRvIGRldmVsb3AgYWx0ZXJuYXRpdmUgbWVkaXVtLXRlcm0gZWNvbm9taWMgc2NlbmFyaW9zIGZvciBjb3VudHJpZXMgdGhhdCAiY2FuIGhlbHAgdXMgZm9jdXMgZXZlbiBtb3JlIGNsZWFybHkgb24gdGhlIG1vc3QgaW1wb3J0YW50IGltYmFsYW5jZXMsIGJ5IGlkZW50aWZ5aW5nIG9wdGlvbnMgZm9yIGFkZHJlc3NpbmcgdGhlbSBhbmQgYW5hbHl6aW5nIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhlc2Ugb3B0aW9ucy4iICAgICBIZSBzYWlkIGFsc28gdGhhdCBmdXJ0aGVyIHdvcmsgc2hvdWxkIGJlIGRvbmUgb24gZmluZGluZyBwYXRocyB0aGF0IGxlYWQgdG93YXJkIHBvc3NpYmxlIG1lZGl1bS10ZXJtIG9iamVjdGl2ZXMuICAgICAiSWYgd2UgYXJlIHRvIHRha2UgZWZmZWN0aXZlIHJlbWVkaWFsIGFjdGlvbiB3aGVuIHRoZXJlIGFyZSBzaWduaWZpY2FudCBkZXZpYXRpb25zIGZyb20gYW4gaW50ZW5kZWQgY291cnNlLCB0aGVuIHdlIG11c3QgaGF2ZSBtb3JlIGRlZmluaXRpdmUgd2F5cyBvZiBpbmRlbnRpZnlpbmcgdGhlIHJpZ2h0IGNvdXJzZSBmb3Iga2V5IHZhcmlhYmxlcywiIGhlIHNhaWQuICBSZXV0ZXIgMzsKMTk4NzA0MDkJVS5LLiBNT05FWSBNQVJLRVQgREVGSUNJVCBSRU1PVkVEIFRoZSBCYW5rIG9mIEVuZ2xhbmQgc2FpZCBpdCBoYXMgc2F0aXNmaWVkIGl0cyByZXZpc2VkIGVzdGltYXRlIG9mIHRvZGF5J3Mgc2hvcnRmYWxsIGluIHRoZSBtb25leSBtYXJrZXQsIHByb3ZpZGluZyAyNjEgbWxuIHN0ZyBhc3Npc3RhbmNlIGluIGFmdGVybm9vbiBvcGVyYXRpb25zLiAgICAgVGhlIEJhbmsgYm91Z2h0IGluIGJhbmQgb25lLCA2MCBtbG4gc3RnIGJhbmsgYmlsbHMgYXQgOS03LzggcGN0IGFuZCBpbiBiYW5kIHR3byAyMDAgbWxuIHN0ZyBiYW5rIGJpbGxzIGFuZCBvbmUgbWxuIHN0ZyB0cmVhc3VyeSBiaWxscyBhdCA5LTEzLzE2IHBjdC4gVGhpcyBicmluZ3MgdGhlIHRvdGFsIGhlbHAgc28gZmFyIHRvZGF5IHRvIDM2NCBtbG4gc3RnLCBjb21wYXJlZCB3aXRoIGl0cyBkZWZpY2l0IGVzdGltYXRlIG9mIDM1MCBtbG4gc3RnLiAgUkVVVEVSIDM7CjE5ODcwNDA5CVUuSy4gTU9ORVkgTUFSS0VUIERFRklDSVQgUkVWSVNFRCBET1dOV0FSRCBUaGUgQmFuayBvZiBFbmdsYW5kIHNhaWQgaXQgaGFzIHJldmlzZWQgaXRzIGVzdGltYXRlIG9mIHRvZGF5J3Mgc2hvcnRmYWxsIHRvIDM1MCBtbG4gc3RnIGZyb20gNDAwIG1sbiwgYmVmb3JlIHRha2luZyBhY2NvdW50IG9mIDEwMyBtbG4gc3RnIG1vcm5pbmcgYXNzaXN0YW5jZS4gIFJFVVRFUiAzOwoxOTg3MDQwOQlVLksuIE1PTkVZIE1BUktFVCBHRVRTIDEwMyBNTE4gU1RHIEhFTFAgVGhlIEJhbmsgb2YgRW5nbGFuZCBzYWlkIGl0IG9wZXJhdGVkIGluIHRoZSBtb25leSBtYXJrZXQgdGhpcyBtb3JuaW5nLCBidXlpbmcgMTAzIG1sbiBzdGcgYmFuayBiaWxscy4gICAgIFRoZSBjZW50cmFsIGJhbmsgYm91Z2h0IGluIGJhbmQgb25lIDYwIG1sbiBzdGcgYXQgOS03LzgsIGluIGJhbmQgdHdvIGVpZ2h0IG1sbiBhdCA5LTEzLzE2LCBpbiBiYW5kIHRocmVlIDI2IG1sbiBhdCA5LTMvNCBhbmQgaW4gYmFuZCBmb3VyIG5pbmUgbWxuIHN0ZyBhdCA5LTExLzE2IHBjdC4gICAgIFRoaXMgY29tcGFyZXMgd2l0aCB0aGUgYmFuaydzIGZvcmVjYXN0IG9mIGEgNDAwIG1sbiBzdGcgc2hvcnRmYWxsIHRvZGF5LiAgUkVVVEVSIDM7CjE5ODcwNDA5CVUuSy4gUE9UQVRPIEZVVFVSRVMgVFJBRElORyBOT1QgVE8gQkUgU1VTUEVOREVEIFRyYWRpbmcgb24gdGhlIExvbmRvbiBwb3RhdG8gZnV0dXJlcyBtYXJrZXQgd2lsbCBub3QgYmUgc3VzcGVuZGVkLCBSaWNoYXJkIEhhcnJpcywgQ2hhaXJtYW4gb2YgdGhlIExvbmRvbiBQb3RhdG8gRnV0dXJlcyBBc3NvY2lhdGlvbiAoTFBGQSksIHNhaWQgaW4gYSBzdGF0ZW1lbnQgdG8gZmxvb3IgbWVtYmVycy4gICAgIEl0IHdhcyBpbiByZXNwb25zZSB0byBzdHJvbmcgcmVwcmVzZW50YXRpb25zIGJ5IHRoZSBQb3RhdG8gTWFya2V0aW5nIEJvYXJkIChQTUIpIGNvbXBsYWluaW5nIG9mIGEgZ3Jvc3MgZGlzdG9ydGlvbiBvZiBwcmljZSB3aGljaCB0aGV5IHNheSB3aWxsIHJlc3VsdCBpbiBsYXJnZSBkZWxpdmVyaWVzIGludG8gdGhlIHBoeXNpY2FsIG1hcmtldCB3aGVuIHRoZSBBcHJpbCBmdXR1cmVzIHBvc2l0aW9uIGV4cGlyZXMuICAgICBUaGUgUE1CIGhhZCBzb3VnaHQgYW4gaW1tZWRpYXRlIHN1c3BlbnNpb24gaW4gZnV0dXJlcyB0cmFkaW5nIGFuZCBhc2tlZCB0aGUgTFBGQSB0byB0YWtlIGFjdGlvbiB0byByZXN0b3JlIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBmdXR1cmVzIGFuZCBwaHlzaWNhbHMuICAgICBGYXJtZXJzIGFuZCBtZXJjaGFudHMgaGF2ZSBhbGxlZ2VkIGEgc3F1ZWV6ZSBhbmQgY29ybmVyaW5nIG9mIHRoZSBtYXJrZXQgYnV0IEhhcnJpcyBwb2ludGVkIG91dCB0aGF0IHJlY2VudCBpbnZlc3RpZ2F0aW9ucyBieSB0aGUgQXNzb2NpYXRpb24gb2YgRnV0dXJlcyBCcm9rZXJzIGFuZCBEZWFsZXJzIChBRkJEKSwgdGhlIEludGVybmF0aW9uYWwgQ29tbW9kaXRpZXMgQ2xlYXJpbmcgSG91c2UgKElDQ0gpIGFuZCBvdGhlciBwYXJ0aWVzLCBmb3VuZCBubyBldmlkZW5jZSB0byBzdWJzdGFudGlhdGUgdGhpcy4gICAgIFRoZSBtYWluIGNvbXBsYWludCBmcm9tIHNvbWUgc2VjdGlvbnMgb2YgdGhlIHBoeXNpY2FsIG1hcmtldCBpcyB3aGF0IHRoZXkgc2F5IGlzIGFuIHVucmVhbGlzdGljIGZ1dHVyZXMgcHJlbWl1bSBvdmVyIHRoZSBQTUIncyBhdmVyYWdlIGV4LWZhcm0gcHJpY2UuIEFwcmlsIGZ1dHVyZXMgdHJhZGVkIHRoaXMgbW9ybmluZyBiZXR3ZWVuIDE2OCBhbmQgMTcwIHN0ZyBwZXIgdG9ubmUgY29tcGFyZWQgd2l0aCBQTUIncyBhdmVyYWdlIHByaWNlIG9mIDEwNCBzdGcuICAgICBCaWxsIEVuZ2xlYnJpZ2h0LCBqb2ludCBzZWNyZXRhcnkgb2YgdGhlIExQRkEgc2FpZCB0aGVyZSBpcyBhIHR3by10aWVyIG1hcmtldCBmb3IgcGh5c2ljYWwgcG90YXRvZXMuIEhlIHNhaWQgcXVhbGl0eSBwb3RhdG9lcyBhcmUgaW4gc2hvcnQgc3VwcGx5IGFuZCBwcmVwYWNrZXJzIGhhdmUgYmVlbiBwYXlpbmcgYmV0d2VlbiAxNDUgYW5kIDE2NSBzdGcgcGVyIHRvbm5lIGZvciBiZXN0IHNhbXBsZXMuIEJ1dCBsZXNzZXIgcXVhbGl0eSBncmFkZXMgaGF2ZSB0cmFkZWQgYmVsb3cgMTAwIHN0Zy4gICAgIFNvbWUgbWVyY2hhbnRzIGZlYXIgdGhhdCBhIGxhcmdlIHRvbm5hZ2Ugd2lsbCBiZSBkZWxpdmVyZWQgYWdhaW5zdCB0aGUgQXByaWwgZnV0dXJlcyBjb250cmFjdCBiZXR3ZWVuIG5vdyBhbmQgdGhlIGVuZCBvZiB0aGUgbW9udGgsIGFuZCBwb3NzaWJseSBkaXNydXB0IHRoZSBwaHlzaWNhbCBtYXJrZXQuICAgICBIYXJyaXMgc2FpZCB0aGUgTFBGQSBydWxlIGJvb2sgYWxsb3dzIHRoZSBtYW5hZ2VtZW50IGNvbW1pdHRlZSB0byB0YWtlIHN0ZXBzIGFzIG5lY2Vzc2FyeSB0byBjb3JyZWN0IGFueSBtYWxwcmFjdGljZSBhbmQgaGUgYXNzdXJlZCB0aGUgY29tbWl0dGVlIGlzIG1vbml0b3JpbmcgdGhlIHNpdHVhdGlvbi4gIFJldXRlciAzOwoxOTg3MDQwOQlVLlMuIEJBTksgRElTQ09VTlQgQk9SUk9XSU5HUyAzNjEgTUxOIERMUlMgVS5TLiBiYW5rIGRpc2NvdW50IHdpbmRvdyBib3Jyb3dpbmdzIGxlc3MgZXh0ZW5kZWQgY3JlZGl0cyBhdmVyYWdlZCAzNjEgbWxuIGRscnMgYSBkYXkgaW4gdGhlIHdlZWsgdG8gV2VkbmVzZGF5LCBBcHJpbCA4LCB0aGUgRmVkZXJhbCBSZXNlcnZlIHNhaWQuICAgICBUb3RhbCBkYWlseSBib3Jyb3dpbmdzIGluIHRoZSB3ZWVrIGZlbGwgOTkgbWxuIGRscnMgdG8gNTkxIG1sbiBkbHJzLCB3aXRoIGV4dGVuZGVkIGNyZWRpdHMgZG93biAzNSBtbG4gZGxycyBhdCAyMzAgbWxuIGRscnMuIFRoZSB3ZWVrIHdhcyB0aGUgc2Vjb25kIGhhbGYgb2YgdGhlIHR3by13ZWVrIHN0YXRlbWVudCBwZXJpb2QgdGhhdCBlbmRlZCBXZWRuZXNkYXkuIE5ldCBib3Jyb3dpbmdzIGF2ZXJhZ2VkIDQyNSBtbG4gZGxycyBpbiB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgcGVyaW9kLiAgICAgQ29tbWVudGluZyBvbiB0aGUgdHdvLXdlZWsgc3RhdGVtZW50IHBlcmlvZCB0aGF0IGVuZGVkIG9uIEFwcmlsIDgsIHRoZSBGZWQgc2FpZCBiYW5rcyBoYWQgYXZlcmFnZSBuZXQgZnJlZSByZXNlcnZlcyBvZiA0NDcgbWxuIGRscnMuICAgICBBIEZlZCBzcG9rZXNtYW4gdG9sZCBhIHByZXNzIGNvbmZlcmVuY2UgdGhhdCB0aGVyZSB3ZXJlIG5vIGxhcmdlIG9uZS1kYXkgbmV0IG1pc3NlcyBpbiB0aGUgRmVkJ3MgZXN0aW1hdGVzIG9mIHJlc2VydmVzIGluIHRoZSB3ZWVrIGVuZGVkIFdlZG5lc2RheS4gICAgIE9mIHRoZSB3ZWVrJ3MgYm9ycm93aW5ncywgbW9uZXkgY2VudGVyIGJhbmtzIGFjY291bnRlZCBmb3IgNjUgcGN0LCBhbmQgc21hbGwgYmFua3MgZm9yIGFsbW9zdCAzNSBwY3QuIE9uIFdlZG5lc2RheSwgd2hlbiBuZXQgYm9ycm93aW5ncyB3ZXJlIDEuMzYgYmlsbGlvbiBkbHJzIGFuZCBGZWQgZnVuZHMgYXZlcmFnZWQgYSBoaWdoIDYuNDUgcGN0LCBtb25leSBjZW50ZXIgYmFua3MgYWNjb3VudGVkIGZvciBtb3JlIHRoYW4gOTAgcGN0IG9mIHRoZSBib3Jyb3dpbmcuICAgICBCb3Jyb3dpbmdzIGluIHRoZSBsYXRlc3QgdHdvIHdlZWtzIGF2ZXJhZ2VkIDM5MyBtbG4gZGxycyBhIGRheSwgdGhlIGhpZ2hlc3Qgc2luY2UgdGhlIHN0YXRlbWVudCBwZXJpb2QgZW5kZWQgSmFudWFyeSAyOC4gICAgIEZsb2F0IHJhbmdlZCBmcm9tIGFib3V0IDI1MCBtbG4gZGxycyBvbiBUaHVyc2RheSB0byBiZXR3ZWVuIG9uZSBhbmQgMS4yNSBiaWxsaW9uIGRscnMgb24gTW9uZGF5IGFuZCBUdWVzZGF5LiAgICAgVGhlIHNwb2tlc21hbiBzYWlkIE1vbmRheSdzIGZsb2F0IGluY2x1ZGVkIDUwMCBtbG4gZGxycyBpbiBob2xkb3ZlciBmbG9hdCBhdCBvbmUgRmVkIGJyYW5jaCBkdWUgdG8gbWVjaGFuaWNhbCBwcm9ibGVtcy4gICAgIEFib3V0IDUwMCBtbG4gZGxycyBvZiBUdWVzZGF5J3MgZmxvYXQgcmVmbGVjdGVkIG5vbi13ZWF0aGVyLXJlbGF0ZWQgdHJhbnNwb3J0YXRpb24gZmxvYXQgaW4gb25lIEVhc3Rlcm4gUmVzZXJ2ZSBiYW5rLiAgICAgQXMtb2YgYWRqdXN0bWVudHMgcmFuZ2VkIGZyb20gbWludXMgNTAwIG1sbiBkbHJzIG9uIE1vbmRheSwgd2hlbiBjYXNoIGxldHRlciBlcnJvcnMgYXQgdHdvIGVhc3Rlcm4gcmVzZXJ2ZSBiYW5rcyB3ZXJlIGNvcnJlY3RlZCwgdG8gcGx1cyA1MDAgbWxuIGRscnMgb24gVGh1cnNkYXksIHdoZW4gYSBjb3JyZWN0aW9uIHdhcyBtYWRlIHRvIHVucG9zdGVkIGZ1bmRzIGF0IGEgc2luZ2xlIGJhbmsuICAgICBJbiB0aGUgZmlyc3QgaGFsZiBvZiB0aGUgc3RhdGVtZW50IHBlcmlvZCBlbmRlZCBXZWRuZXNkYXksIGJhbmtzIGhlbGQgZXhjZXNzIHJlc2VydmVzIG9uIHRoZSBmaXJzdCBmb3VyIGRheXMgb2YgdGhlIHdlZWsgYnV0IHJhbiBhIGRlZmljaXQgb24gV2VkbmVzZGF5LiAgICAgSW4gdGhlIHNlY29uZCB3ZWVrLCB0aGV5IHJhbiBhIGRlZmljaXQgb24gVGh1cnNkYXksIEZyaWRheSBhbmQgTW9uZGF5IGJ1dCBoZWxkIGV4Y2VzcyByZXNlcnZlcyBvbiB0aGUgZmluYWwgdHdvIGRheXMuICBSZXV0ZXIgMzsKMTk4NzA0MDkJVS5TLiBDT05HUkVTU01BTiBJTlRST0RVQ0VTIFJFQUdBTiBTVUdBUiBCSUxMIFJlcC4gSm9obiBQb3J0ZXIsIFItSWxsLiwgaW50cm9kdWNlZCBpbiB0aGUgSG91c2Ugb2YgUmVwcmVzZW50YXRpdmVzIGxlZ2lzbGF0aW9uIHByb3Bvc2VkIGJ5IHRoZSBSZWFnYW4gYWRtaW5pc3RyYXRpb24gdG8gc2xhc2ggdGhlIFUuUy4gc3VnYXIgcHJpY2Ugc3VwcG9ydCwgYSBzcG9rZXNtYW4gZm9yIFBvcnRlciBzYWlkLiAgICAgVGhlIHNwb2tlc21hbiBzYWlkIHRoZSBiaWxsIHdhcyBpbnRyb2R1Y2VkIHdpdGhvdXQgYW55IGNoYW5nZXMgZnJvbSB0aGUgYWRtaW5pc3RyYXRpb24ncyBwcm9wb3NhbCBzZW50IHRvIENvbmdyZXNzIGxhc3QgbW9udGguICAgICBUaGF0IHBsYW4gY2FsbHMgZm9yIGEgY3V0IGluIHRoZSBzdWdhciBsb2FuIHJhdGUgdG8gMTIgY2VudHMgcGVyIHBvdW5kIGZyb20gMTggY2VudHMgbm93LiBTdWdhciBncm93ZXJzIHdvdWxkIGJlIGNvbXBlbnNhdGVkIGZvciB0aGUgcHJpY2UgY3V0IHdpdGggdGFyZ2V0ZWQgZGlyZWN0IHBheW1lbnRzLCB0byBiZSBncmFkdWFsbHkgcGhhc2VkLW91dCB0aHJvdWdoIDE5OTAuIFRoZSBwYXltZW50cyB0byBncm93ZXJzIHdvdWxkIGNvc3QgYW4gZXN0aW1hdGVkIDEuMSBiaWxsaW9uIGRscnMuICAgICBSZXByZXNlbnRhdGl2ZXMgb2Ygc3VnYXIgZ3Jvd2VycyBoYXZlIHJlamVjdGVkIHRoZSBwcm9wb3NhbCwgc2F5aW5nIGl0IHdvdWxkIHJ1aW4gdGhlIGRvbWVzdGljIHN1Z2FyIGluZHVzdHJ5LiAgUmV1dGVyIDM7CjE5ODcwNDA5CVUuUy4gRE9MTEFSIExPU1NFUyBQUk9QRUwgQlJPQUQgQ09NTU9ESVRZIEdBSU5TIENvbW1vZGl0aWVzIGZyb20gZ29sZCB0byBncmFpbnMgdG8gY290dG9uIHBvc3RlZCBzb2xpZCBnYWlucyBpbiBhIGZsdXJyeSBvZiBidXlpbmcgdG9kYXkgYXMgbG9zc2VzIGluIHRoZSBVLlMuIGRvbGxhciBhbmQgcmlzaW5nIGludGVyZXN0IHJhdGVzIGtpbmRsZWQgZmVhcnMgb2YgaW5mbGF0aW9uIGFuZCBlY29ub21pYyBpbnN0YWJpbGl0eS4gICAgIEdhaW5zIHdlcmUgbW9zdCBwcm9ub3VuY2VkIG9uIHRoZSBDb21tb2RpdHkgRXhjaGFuZ2UgaW4gTmV3IFlvcmssIHdoZXJlIGdvbGQganVtcGVkIDEyLjQwIGRscnMgYW5kIGNsb3NlZCBhdCA0MzYuNTAgZGxycyBhIHRyb3kgb3VuY2UsIGFuZCBzaWx2ZXIgMjIuNSBjZW50cyB0byA2Ljg2IGRscnMgYSB0cm95IG91bmNlLiAgICAgQSBrZXkgZmFjdG9yIGJlaGluZCB0aGUgYWR2YW5jZSB3YXMgYW50aWNpcGF0aW9uIHRoYXQgaW5mbGF0aW9uIHdpbGwgYmUgdGhlIG9ubHkgd2F5IGZvciB0aGUgbWFqb3IgaW5kdXN0cmlhbCBuYXRpb25zIHRvIGhhbHQgdGhlIHNsaWRlIGluIHRoZSB2YWx1ZSBvZiB0aGUgVS5TLiBkb2xsYXIsIHNhaWQgU3RldmUgQ2hyb25vd2l0eiwgZGlyZWN0b3Igb2YgY29tbW9kaXR5IHJlc2VhcmNoIHdpdGggU21pdGggQmFybmV5LCBIYXJyaXMgVXBoYW0gYW5kIENvLiwgaW4gTmV3IFlvcmsuICAgICBUaGUgZG9sbGFyIHR1bWJsZWQgb25lIGRheSBhZnRlciB0b3AgZmluYW5jZSBvZmZpY2lhbHMgZnJvbSB0aGUgc2V2ZW4gbGFyZ2VzdCBpbmR1c3RyaWFsIG5hdGlvbnMgcmVhZmZpcm1lZCB0aGVpciBjb21taXRtZW50IHRvIHN1cHBvcnQgaXRzIHZhbHVlLCBhbmQgZGVzcGl0ZSByZXBvcnRzIG9mIGludGVydmVudGlvbiBieSB0aGUgVS5TLiBGZWRlcmFsIFJlc2VydmUgQmFuaywgdHJhZGVycyBzYWlkLiAgICAgVHJhZGVycyBzYWlkIGl0IGFwcGVhcnMgdGhhdCB0aGUgaW5kdXN0cmlhbCBuYXRpb25zLCBrbm93biBhcyB0aGUgR3JvdXAgb2YgU2V2ZW4sIGxhY2sgdGhlIGFiaWxpdHkgdG8gY2hhbmdlIHRoZSBsb25nLXRlcm0gZGlyZWN0aW9uIG9mIHRoZSBjdXJyZW5jeSBtYXJrZXRzLiAgICAgIk1heWJlIHRoZXkgaGF2ZSBzb21lIGlkZWFzIG9yIHBsYW5zLCIgc2FpZCBDaHJvbm93aXR6LiAiSWYgdGhleSBkbywgaXQncyBub3QgZXZpZGVudC4iICAgICAiSXQgbG9va3MgbGlrZSB0aGVyZSdzIG5vIGN1cmUgYnV0IHRvIGxldCB0aGUgZnJlZSBtYXJrZXQgdGFrZSB2YWx1ZXMgdG8gd2hlcmUgdGhleSBzaG91bGQgYmUuICAgICAiT25lIHdheSBvciBhbm90aGVyLCB3ZSB3aWxsIGZvcmNlIG91ciBtYWpvciB0cmFkaW5nIHBhcnRuZXJzIHRvIHN0aW11bGF0ZSB0aGVpciBlY29ub21pZXMsIiBhcyBhIG1lYXN1cmUgdG8gY29ycmVjdCB0aGUgbW91bnRpbmcgVS5TLiB0cmFkZSBkZWZpY2l0LCBDaHJvbm93aXR6IHNhaWQuICAgICAiSSB0aGluayB0aGUgbWFya2V0cyBiZWxpZXZlLCBhbmQgaGF2ZSBiZWxpZXZlZCBmb3IgYSBsb25nIHRpbWUsIHRoYXQgdGhlIG9ubHkgcmVjb3Vyc2UgaXMgdG8gcmVmbGF0ZSBhdCBzb21lIHBvaW50LiBJdCdzIGdvaW5nIHRvIGJlIGEgbG9uZyBhbmQgdGVkaW91cyBwcm9jZXNzLCBidXQgdGhhdCdzIHdoYXQncyBoYXBwZW5pbmcsIiBoZSBzYWlkLiAgICAgVGhlIGZhbGxpbmcgdmFsdWUgb2YgdGhlIGRvbGxhciBtYWtlcyBVLlMuIGNvbW1vZGl0aWVzIGNoZWFwZXIgZm9yIGZvcmVpZ24gYnV5ZXJzLCBzdGltdWxhdGluZyBkZW1hbmQuICAgICBBdCB0aGUgc2FtZSB0aW1lLCB0cmFkZXJzIHdobyBhcmUgaG9sZGluZyBzdG9ja3MgYW5kIGJvbmRzIHNhdyB0aGUgdmFsdWUgb2YgdGhlaXIgaW52ZXN0bWVudHMgZmFsbGluZyBhbmQgbWFueSBhcmUgdHVybmluZyB0byBjb21tb2RpdGllcyBzdWNoIGFzIHByZWNpb3VzIG1ldGFscyBhcyBhIGhlZGdlLCBzYWlkIE1hcnR5IE1jTmVpbGwsIGEgbWV0YWxzIGFuYWx5c3QgaW4gTmV3IFlvcmsgd2l0aCB0aGUgdHJhZGluZyBob3VzZSBvZiBEb21pbmljayBhbmQgRG9taW5pY2suICAgICBUaGUgcmVhY3Rpb24gaW4gdGhlIG1ldGFsIG1hcmtldHMgcmV2ZXJiZXJhdGVkIHRocm91Z2hvdXQgdGhlIGNvbW1vZGl0aWVzIG1hcmtldHMsIGFzIGdyYWlucywgbGl2ZXN0b2NrLCBhbmQgY290dG9uIHBvc3RlZCBicm9hZCBnYWlucy4gICAgIFRyYWRlcnMgYXQgdGhlIENoaWNhZ28gQm9hcmQgb2YgVHJhZGUgc2FpZCBhdHRlbnRpb24gaW4gdGhlIGdyYWluIG1hcmtldHMgaGFzIHNoaWZ0ZWQgZnJvbSBjb25jZXJuIGFib3V0IGJ1cmRlbnNvbWUgc3VwcGxpZXMgdG8gdGhlIG91dGxvb2sgdGhhdCBhIGxvd2VyIGRvbGxhciB3aWxsIHN0aW11bGF0ZSBleHBvcnQgZGVtYW5kLiAgICAgQWZ0ZXIgdGhlIGNsb3NlIG9mIHRyYWRpbmcsIHRoZSBBZ3JpY3VsdHVyZSBEZXBhcnRtZW50IHJhaXNlZCBpdHMgZXN0aW1hdGUgZm9yIGdyYWluIGltcG9ydHMgYnkgdGhlIFNvdmlldCBVbmlvbiBieSB0d28gbWxuIHRvbm5lcyBmcm9tIHRoZSBtb250aC1lYXJsaWVyIHJlcG9ydC4gICAgIExpdmUgaG9ncyBhbmQgZnJvemVuIHBvcmsgYmVsbGllcyBwb3N0ZWQgc2hhcnAgZ2FpbnMgb24gdGhlIENoaWNhZ28gTWVyY2FudGlsZSBFeGNoYW5nZSwgd2hpbGUgbGl2ZSBjYXR0bGUgd2VyZSBtb2RlcmF0ZWx5IGhpZ2hlci4gICAgIEFuYWx5c3RzIHNhaWQgc2V2ZXJhbCBmYWN0b3JzIGJvb3N0ZWQgaG9nIHByaWNlcy4gVGhleSBzYWlkIGhvZ3MgaGF2ZW4ndCBiZWVuIG1ha2luZyB0aGUgd2VpZ2h0IGdhaW5zIHRoYXQgYXJlIG5vcm1hbCBhdCB0aGlzIHRpbWUgb2YgeWVhciwgYW5kIGZhcm1lcnMgaGF2ZSBiZWVuIHRvbyBidXN5IHdpdGggZmllbGQgd29yayB0byBtYXJrZXQgYW5pbWFscy4gIFJldXRlciAzOwoxOTg3MDQwOQlVLlMuIEVORVJHWSBGVVRVUkVTIENBTExFRCBVTkNIQU5HRUQgVE8gTE9XRVIgVHJhZGVycyBleHBlY3QgVS5TLiBlbmVyZ3kgZnV0dXJlcyB3aWxsIG9wZW4gdW5jaGFuZ2VkIHRvIHNsaWdodGx5IGxvd2VyIHRoaXMgbW9ybmluZyB3aXRoIHN1cHBvcnQgbmVhciB5ZXN0ZXJkYXkncyBsb3dzLiAgICAgQ3J1ZGUgZnV0dXJlcyBhcmUgY2FsbGVkIHVuY2hhbmdlZCB0byBmaXZlIGN0cyB3ZWFrZXIgdHJhY2tpbmcgdW5jaGFuZ2VkIGRvbWVzdGljIGNydWRlcyBhbmQgTm9ydGggU2VhIEJyZW50IGNydWRlLCB3aGljaCB0cmFkZWQgYXQgMTguMDEgZGxycyBhIGJhcnJlbCB0b2RheSwgYWJvdXQgdGVuIGN0cyBiZWxvdyB5ZXN0ZXJkYXkncyBOZXcgWW9yayBjbG9zZS4gICAgIFRyYWRlcnMgc2FpZCB0aGUgc3VwcGx5IHNxdWVlemUgaW4gMTUtZGF5IGZvcndhcmQgQXByaWwgQnJlbnQgYXBwZWFycyB0byBoYXZlIGVuZGVkLiAgICAgUHJvZHVjdCBmdXR1cmVzLCB3aGljaCBmZWxsIHNoYXJwbHkgeWVzdGVyZGF5LCBhcmUgZHVlIHRvIG9wZW4gdW5jaGFuZ2VkIHRvIDAuMjUgY2VudCBsb3dlciwgdHJhZGVycyBzYWlkLiAgICAgVHJhZGVycyBleHBlY3Qgc29tZSBmb2xsb3d0aHJvdWdoIHNlbGxpbmcgaW4gcHJvZHVjdHMgYnV0IHNhaWQgZ2Fzb2lsIGZ1dHVyZXMgaW4gTG9uZG9uIHdpbGwgcHJvYmFibHkgbGVuZCBzb21lIHN1cHBvcnQgc2luY2UgdGhleSBhcmUgdHJhZGluZyBhcyBleHBlY3RlZC4gTWF5IGdhc29pbCBmdXR1cmVzIHdlcmUgb2ZmIDEuNTAgZGxycyBhIHRvbm5lIHRoaXMgbW9ybmluZyB3aGlsZSBKdW5lIHdhcyBkb3duIDEuMjUgZGxycyBpbiB0aGluIGNvbmRpdGlvbnMuICBSZXV0ZXIgMzsKMTk4NzA0MDkJVS5TLiBGSVJTVCBUSU1FIEpPQkxFU1MgQ0xBSU1TIEZFTEwgSU4gV0VFSyBOZXcgYXBwbGljYXRpb25zIGZvciB1bmVtcGxveW1lbnQgaW5zdXJhbmNlIGJlbmVmaXRzIGZlbGwgdG8gYSBzZWFzb25hbGx5IGFkanVzdGVkIDMzOCwwMDAgaW4gdGhlIHdlZWsgZW5kZWQgTWFyY2ggMjggZnJvbSAzNTUsMDAwIGluIHRoZSBwcmlvciB3ZWVrLCB0aGUgTGFib3IgRGVwYXJ0bWVudCBzYWlkLiAgICAgVGhlIG51bWJlciBvZiBwZW9wbGUgYWN0dWFsbHkgcmVjZWl2aW5nIGJlbmVmaXRzIHVuZGVyIHJlZ3VsYXIgc3RhdGUgcHJvZ3JhbXMgdG90YWxlZCAyLDQzNiwwMDAgaW4gdGhlIHdlZWsgZW5kZWQgTWFyY2ggMjEsIHRoZSBsYXRlc3QgcGVyaW9kIGZvciB3aGljaCB0aGF0IGZpZ3VyZSB3YXMgYXZhaWxhYmxlLiAgICAgVGhhdCB3YXMgZG93biBmcm9tIDIsNDgwLDAwMCB0aGUgcHJldmlvdXMgd2Vlay4gICAgICAgIFJldXRlciAzOwoxOTg3MDQwOQlVLlMuIE0tMSBNT05FWSBTVVBQTFkgRkFMTFMgVFdPIEJJTExJT04gRExSUyBVLlMuIE0tMSBtb25leSBzdXBwbHkgZmVsbCB0d28gYmlsbGlvbiBkbHJzIHRvIGEgc2Vhc29uYWxseSBhZGp1c3RlZCA3MzguOSBiaWxsaW9uIGRscnMgaW4gdGhlIE1hcmNoIDMwIHdlZWssIHRoZSBGZWRlcmFsIFJlc2VydmUgc2FpZC4gICAgIFRoZSBwcmV2aW91cyB3ZWVrJ3MgTS0xIGxldmVsIHdhcyByZXZpc2VkIHRvIDc0MC45IGJpbGxpb24gZGxycyBmcm9tIDc0MS4wIGJpbGxpb24sIHdoaWxlIHRoZSBmb3VyLXdlZWsgbW92aW5nIGF2ZXJhZ2Ugb2YgTS0xIHJvc2UgdG8gNzM5LjggYmlsbGlvbiBkbHJzIGZyb20gNzM5LjcgYmlsbGlvbi4gICAgIEVjb25vbWlzdHMgcG9sbGVkIGJ5IFJldXRlcnMgc2FpZCB0aGF0IE0tMSB3b3VsZCBiZSBhbnl3aGVyZSBmcm9tIGRvd24gdHdvIGJpbGxpb24gZGxycyB0byB1cCAxLjggYmlsbGlvbi4gIFJldXRlciAzOwoxOTg3MDQwOQlVLlMuIE1BUkNIIFJFVEFJTCBTQUxFUyBDVVQgQlkgTEFURSBFQVNURVIgVS5TLiByZXRhaWxlcnMnIGxhY2tsdXN0ZXIgTWFyY2ggc2FsZXMgd2VyZSBkdWUgdG8gYSBsYXRlIEVhc3RlciwgYWNjb3JkaW5nIHRvIGFuYWx5c3RzIHdobyBleHBlY3QgYSByZWNvdmVyeSBpbiBBcHJpbC4gICAgICJTYWxlcyBsb29rIHNvZnQgYmVjYXVzZSBvZiB0aGUgRWFzdGVyIHNoaWZ0LCBidXQgdW5kZXJseWluZyBidXNpbmVzcyBpcyBiZXR0ZXIgdGhhbiB0aGUgbnVtYmVycyBpbmRpY2F0ZSwiIHNhaWQgQmVhciBTdGVhcm5zIGFuYWx5c3QgTW9ucm9lIEdyZWVuc3RlaW4uICAgICAgQW5hbHlzdHMgZ2VuZXJhbGx5IGF2ZXJhZ2UgdGhlIHNhbGVzIHJlc3VsdHMgb2YgTWFyY2ggYW5kIEFwcmlsIHRvIGFjY291bnQgZm9yIHRoZSB2YXJpYXRpb24gb2YgRWFzdGVyJ3Mgb2NjdXJhbmNlLiBUaGlzIHllYXIsIEVhc3RlciBpcyBiZWluZyBvYnNlcnZlZCBvbiBBcHJpbCAxOSwgd2hpY2ggaXMgdGhyZWUgd2Vla3MgbGF0ZXIgdGhhbiBsYXN0IHllYXIuICAgICBBbmFseXN0IEVkd2FyZCBKb2huc29uIG9mIEpvaG5zb24gUmVkYm9vayBBc3NvY2lhdGVzIHNhaWQgc2FsZXMgZm9yIE1hcmNoIHJvc2UgYW4gdW5hZGp1c3RlZCAyLjUgdG8gMy4wIHBjdCwgYW5kIGEgc2Vhc29uYWxseSBhZGp1c3RlZCA1LjUgcGN0IHRvIHNpeCBwY3QsIGNvbXBhcmVkIHRvIGFuIGFkanVzdGVkIDUuNyBwY3QgbGFzdCB5ZWFyLiAgICAgIlRoZSBvYnZpb3VzIHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhlc2UgbnVtYmVycyBpbmRpY2F0ZSB0aGF0IHRoZSBjb25zdW1lciBhY3Rpdml0eSBpcyBzbG93aW5nLCBidXQgaXQgZG9lcyBub3QgYXBwZWFyIHRvIGJlIGJlY2F1c2UgbGlxdWlkaXR5IGFuZCBlbXBsb3ltZW50IGFyZSByaXNpbmcsIiBzYWlkIGFuYWx5c3QgSmVmZiBFZGVsbWFuLCBhbmFseXN0IG9mIERyZXhlbCBMYW1iZXJ0IGFuZCBCdXJuaGFtLiAgICAgT3ZlcmFsbCwgYW5hbHlzdHMgc2FpZCBmaXJzdCBoYWxmIHNhbGVzIGFyZSBjb21pbmcgaW4gYWNjb3JkaW5nIHRvIGV4cGVjdGF0aW9ucy4gU2FsZXMgZm9yIGFsbCBvZiAxOTg3IGFyZSBleHBlY3RlZCB0byByaXNlIGFib3V0IDUuNSBwY3QgdG8gc2l4IHBjdCwgdXAgYSBiaXQgZnJvbSAxOTg2J3MgcmlzZS4gICAgICBJbiBNYXJjaCwgc2FsZXMgb2YgaG91c2V3YXJlcywgZnVybml0dXJlIGFuZCBiaWcgdGlja2V0IGl0ZW1zIHdlcmUgc3Ryb25nZXIgdGhhbiBhcHBhcmVsIHNhbGVzLCBzaWduYWxpbmcgdG8gbWFueSBhbmFseXN0cyB0aGF0IGFwcGFyZWwgc2FsZXMgd2lsbCBiZSBzdHJvbmcgaW4gQXByaWwgYXMgdGhlIGhvbGlkYXkgbmVhcnMuICAgICAiU2FsZXMgZ2FpbnMgaW4gaG9tZSBhcHBsaWFuY2VzIGFuZCBob21lIGZhc2hpb25zIHJlZmxlY3QgYSBjb250aW51aW5nIHN0cmVuZ3RoIGluIHRoZSBob3VzaW5nIG1hcmtldCwiIHNhaWQgRWR3YXJkIEJyZW5uYW4sIGNoYWlybWFuIG9mIFNlYXJzIFJvZWJ1Y2sgYW5kIENvIDxTPiB3aGljaCByZXBvcnRlZCBhbiBvdmVyYWxsIHNhbGVzIGdhaW4gb2YgNC4yIHBjdC4gQnJlbm5hbiBzYWlkIHNhbGVzIG9mIHdvbWVuJ3Mgc3BvcnRzd2VhciB3ZXJlIGFsc28gZXhjZWxsZW50LiAgICAgIlNlYXJzJyB0b3RhbCBhcHBhcmVsIHNhbGVzIHdhcyB1cCBvbmx5IG1vZGVzdGx5LCBidXQgZXZlbiBhIG1vZGVzdCBpbXByb3ZlbWVudCBpbiBhcHBhcmVsIGlzIGEgdmVyeSBnb29kIGFjY29tcGxpc2htZW50IGR1ZSB0byB0aGUgZmFjdCB0aGF0IG1vc3QgcGVvcGxlIHdpbGwgYnV5IGFwcGFyZWwgaW4gQXByaWwsIiBzYWlkIEMuSi4gTGF3cmVuY2UgYW5hbHlzdHMgSGFycnkgTW9ydG5lci4gICAgICBKLkMuIFBlbm5leSBDbyBJbmMgPEpDUD4gYW5kIERheXRvbiBIdWRzb24gQ29ycCA8REg+IHdlcmUgYW1vbmcgdGhlIHdlYWtlciBwZXJmb3JtZXJzIHdpdGggY29tcGFyYWJsZSBzdG9yZXMgc2FsZXMgZGVjbGluaW5nIDEuNSBwY3QgYW5kIDQuOSBwY3QsIHJlc3BlY3RpdmVseS4gUGVubmV5J3Mgc3RvcmUgYW5kIGNhdGFsb2cgc2FsZXMgZGVjbGluZWQgMS4zIHBjdCBvdmVyYWxsIGFuZCBEYXl0b24gSHVkc29uJ3Mgb3ZlcmFsbCBzYWxlcyByb3NlIDQuOCBwY3QuICAgICBQZW5uZXkgY2hhaXJtYW4gV2lsbGlhbSBIb3dlbGwgc2FpZCwgIlNhbGVzIGNvbnRpbnVlZCBzdHJvbmcgZm9yIGNhdGFsb2cgb3BlcmF0aW9ucyBhbmQsIGdlb2dyYXBoaWNhbGx5LCByYW5nZWQgZnJvbSB2ZXJ5IGFjdGl2ZSBpbiB0aGUgZWFzdCB0byB3ZWFrIGluIHRoZSBlY29ub21pY2FsbHkgZGVwcmVzc2VkIHNvdXRod2VzdC4iICAgICAiUGVubmV5J3MgYmVlbiBzaGlmdGluZyBhd2F5IGZyb20gbGVpc3VyZSB0aW1lIGFjdGl2aXR5IHdlYXIgdG8gb3RoZXIgYXBwYXJlbCBsaW5lcywgd2hpY2ggeWllbGQgaGlnaGVyIHByb2ZpdCBtYXJnaW5zLCBidXQgYXJlIGN1cnJlbnRseSBodXJ0aW5nIHNhbGVzLCIgc2FpZCBHcmVlbnN0ZWluIG9mIEJlYXIgU3RlYXJucy4gICAgIEh1ZHNvbiBjaGFpcm1hbiBLZW5uZXRoIE1hY2tlcyBjaXRlZCB0aGUgbGF0ZSBFYXN0ZXIgZm9yIHRoZSBkZWNsaW5lLiBFZGVsbWFuIG9mIERyZXhlbCBzYWlkIHRoYXQgIkh1ZHNvbiBoYWQgYSB0b3VnaGVyIGNvbXBhcmlzb24gYmVjYXVzZSBpdCBoYWQgYW4gZXhjZXB0aW9uYWxseSBnb29kIDE5ODYuIiAgICAgTW9zdCBhbmFseXN0cyBhZ3JlZWQgdGhhdCBwcm9tb3Rpb25zIGFyZSBzbGlnaHRseSBsb3dlciB0aGFuIGxhc3QgeWVhci4gICAgICJSZXRhaWxlcnMgYXJlIG5vdCBwbGFubmluZyBmb3IgbXVjaCAtIGludmVudG9yaWVzIGFyZSBiZWluZyBrZXB0IGxlYW4sIG1hcmtkb3ducyBhcmUgbG93ZXIgdGhhbiBsYXN0IHllYXIsIGJ1dCBzYWxlcyBhcmUgY29taW5nIHRocm91Z2ggYW55d2F5LCIgc2FpZCBDSiBBbmFseXN0IEhhcnJ5IE1vcnRuZXIuICAgICBNb3J0bmVyIHNhaWQgaGUgZXhwZWN0cyBwcm9maXRzIGluIHRoZSBmaXJzdCBxdWFydGVyIHRvICAgYmUgYmV0dGVyIHRoYW4gaGUgaGFkIG9yaWdpbmFsbHkgZXhwZWN0ZWQgaW4gdGhlIGJlZ2lubmluZyBvZiB0aGUgeWVhci4gICAgIE1vc3QgcmV0YWlsZXJzIHJlcG9ydCB0aGVpciBmaXJzdCBxdWFydGVyIGluIHRoZSBtaWRkbGUgb2YgTWF5LiAgICAgIE1BUkNIIFJFVEFJTCBTQUxFUyBGT1IgTUFKT1IgVS5TLiBSRVRBSUxFUlMgICAgIFNUT1JFICAgICAgIFBDVCAgICAgICAgMTk4NyAgICAgICAxOTg2ICAgICBTRUFSUyAgICAgICA0LjIgICAgIDIuNiBCSUwgICAgICAgMi41IEJJTCAgICAgIEsgTUFSVCAgICAgIDQuNiAgICAgMi4yIEJJTCAgICAgICAyLjEgQklMICAgICAgSkMgUEVOTkVZICAoMS4zKSAgICAxLjEgQklMICAgICAgIDEuMSBCSUwgICAgICBXQUwtTUFSVCAgICAgMzIgICAgIDEuMSBCSUwgICAgICAgODU1IE1MTiAgICAgRkVERVJBVEVEICAgNC45ICAgICA5MzQgTUxOICAgICAgIDg5MSBNTE4gICAgIE1BWSAgICAgICAgIDMuNSAgICAgODg1IE1MTiAgICAgICA4NTUgTUxOICAgICBEQVlUT04gICAgICA0LjggICAgIDc5MiBNTE4gICAgICAgNzU2IE1MTiAgICAgV09PTFdPUlRIICAgMC4yICAgICA1OTEgTUxOICAgICAgIDU5MCBNTE4gICAgIFpBWVJFICAgICAgMTIuNyAgICAgNTIyIE1MTiAgICAgICA0NjQgTUxOICBSZXV0ZXIgMzsKMTk4NzA0MDkJVS5TLiBNQVJLRVRTIE9GRkVSIEdMSU1QU0UgT0YgVk9MQ0tFUiBOSUdIVE1BUkUgVG9kYXkncyB0dXJtb2lsIGluIHRoZSBVLlMuIEZpbmFuY2lhbCBtYXJrZXRzLCB3aXRoIGJvbmQgYW5kIHN0b2NrIHByaWNlcyB0dW1ibGluZyBpbiB0aGUgZG9sbGFyJ3Mgd2FrZSwgaXMgZXZpZGVuY2Ugb2YgYSBtYWpvciBzaGlmdCBpbiBpbnZlc3RvciBwc3ljaG9sb2d5IHRoYXQgaXMgbGlrZWx5IHRvIHNwZWxsIG1vcmUgdHVyYnVsZW5jZSBhaGVhZCwgZWNvbm9taXN0cyBzYWlkLiAgICAgRm9yIHR3byB5ZWFycywgdGhlIG1hcmtldHMgaGFkIGhhaWxlZCB0aGUgZG9sbGFyJ3MgZGVjbGluZSBhcyB0aGUgY3VyZS1hbGwgZm9yIHRoZSBVLlMuIFRyYWRlIGRlZmljaXQuIEludGVyZXN0IHJhdGVzIGZlbGwgc2hhcnBseSBhbmQgV2FsbCBTdHJlZXQgYmVjYW1lIGEgb25lLXdheSBzdHJlZXQsIHVwLiAgICAgQnV0IHRoYXQgY29uZmlkZW5jZSBpcyBub3cgY3JhY2tpbmcgYXMgdGhlIGZpbmFuY2lhbCBtYXJrZXRzIHN1ZGRlbmx5IGJlbGlldmUgRmVkIGNoYWlybWFuIFBhdWwgVm9sY2tlcidzIG9mdGVuLXJlcGVhdGVkIHdhcm5pbmdzIGFib3V0IHRoZSByaXNrcyBvZiBhIGRvbGxhciBjb2xsYXBzZS4gICAgICJWb2xja2VyJ3MgYmVlbiBzYXlpbmcgZm9yIGEgbG9uZyB0aW1lIHRoYXQgYSBkb2xsYXIgZnJlZWZhbGwgd291bGQgYmUgZXh0cmVtZWx5IGRhbmdlcm91cyAtIG5vdyBoZSdzIGdvdCBpdCwiIHNhaWQgRGF2aWQgSm9uZXMsIGVjb25vbWlzdCBhdCBBdWJyZXkgRy4gTGFuc3RvbiBhbmQgQ28gSW5jLiAgICAgVGhlIGRvbGxhciBmZWxsIGJlbG93IDE0NCB5ZW4gdG9kYXkgZm9yIHRoZSBmaXJzdCB0aW1lIGluIDQwIHllYXJzIGFzIHRoZSBHcm91cCBvZiBTZXZlbiBmaW5hbmNlIG1pbmlzdGVycyBpbiBXYXNoaW5ndG9uIGZhaWxlZCB0byBjb252aW5jZSB0aGUgZm9yZWlnbiBleGNoYW5nZSBtYXJrZXQgdGhhdCB0aGV5IGhhdmUgYSBjcmVkaWJsZSBzdHJhdGVneSBmb3IgcmVkcmVzc2luZyBnbG9iYWwgdHJhZGUgaW1iYWxhbmNlcywgc2hvcnQgb2YgZnVydGhlciBkZXByZWNpYXRpb24gb2YgdGhlIGRvbGxhci4gICAgIEJvbmRzIHN1ZmZlcmVkIHRoZWlyIGJpZ2dlc3Qgb25lLWRheSBkcm9wIGluIG1vbnRocyBhbWlkIHdvcnJpZXMgdGhhdCB0aGUgZG9sbGFyJ3Mgc2xpZGUgd2lsbCByZWtpbmRsZSBpbmZsYXRpb24sIHNjYXJlIGF3YXkgZm9yZWlnbiBpbnZlc3RvcnMgYW5kIGZvcmNlIHRoZSBGZWQgdG8gdGlnaHRlbiBjcmVkaXQuICAgICBUaGUgaW5mbGF0aW9uYXJ5IGZlYXJzIGJvb3N0ZWQgZ29sZCBidWxsaW9uIGJ5IG1vcmUgdGhhbiAxMiBkbHJzIHRvIGEgMTk4NyBoaWdoIG9mIDQzMi4yMC83MCBkbHJzIGFuIG91bmNlLCB3aGlsZSB0aGUgc3Bpa2UgaW4gaW50ZXJlc3QgcmF0ZXMgcHVsbGVkIHRoZSBEb3cgSm9uZXMgSW5kdXN0cmlhbCBBdmVyYWdlIGRvd24gYnkgMzMgcG9pbnRzIHRvIDIzMzkuICAgICBOb3JtYW4gUm9iZXJ0c29uLCBNZWxsb24gQmFuayBjaGllZiBlY29ub21pc3QsIGNhbGxlZCB0aGUgbWFya2V0cycgaW5zdGFiaWxpdHkgZnJpZ2h0ZW5pbmcuIEhlIGJlbGlldmVzIGVjb25vbWljIGZ1bmRhbWVudGFscyBkbyBub3QganVzdGlmeSB0aGUgYmVhcmlzaG5lc3MgYnV0IHNhaWQgdGhhdCAib25jZSB5b3Ugc3RhcnQgdGhlIGJhbGwgcm9sbGluZyBpdCdzIGRpZmZpY3VsdCB0byBzdG9wLiIgICAgICJUaGVyZSdzIGEgc3RhcmsgcG9zc2liaWxpdHkgdGhhdCB5b3UgY291bGQgZ2V0IGEgZGVzdGFiaWxpemluZyBkcm9wIGluIHRoZSBkb2xsYXIgdGhhdCBmb3JjZXMgdXAgaW50ZXJlc3QgcmF0ZXMgYW5kIGRyaXZlcyB1cyBpbnRvIHJlY2Vzc2lvbi4gVGhlIG1hcmtldHMgYXJlIGluIGEgcGFuaWMuIiAgICAgU3RlcGhlbiBNYXJyaXMgb2YgdGhlIEluc3RpdHV0ZSBmb3IgSW50ZXJuYXRpb25hbCBFY29ub21pY3MgaW4gV2FzaGluZ3RvbiwgaGFzIGJlZW4gd2FybmluZyBmb3IgYSBsb25nIHRpbWUgdGhhdCB0aGUgY29udHJvbGxlZCBkZWNsaW5lIG9mIHRoZSBkb2xsYXIgc2luY2UgcGVha3Mgb2YgMy40NyBtYXJrcyBhbmQgMjY0IHllbiBpbiBGZWJydWFyeSAxOTg1IGNvdWxkIHR1cm4gaW50byBhIG5pZ2h0bWFyZS4gICAgICJXZSdyZSBzdGlsbCBtb3JlIG9yIGxlc3Mgb24gdHJhY2sgZm9yIGEgaGFyZCBsYW5kaW5nLi4uIEJ1dCB0aGUgYWdvbnkgbWF5IGJlIGZhaXJseSBkcmF3biBvdXQsIiBNYXJyaXMgdG9sZCBSZXV0ZXJzLiAgICAgTWFycmlzIGRvZXMgbm90IGV4cGVjdCB0aGUgY3Jpc2lzIHRvIHBlYWsgdW50aWwgbGF0ZXIgdGhpcyB5ZWFyLCBidXQgaGUgd2FybmVkIHRoYXQgdGhlIHNpdHVhdGlvbiBpcyBzbyBmcmFnaWxlIHRoYXQgaXQgd291bGQgdGFrZSB2ZXJ5IGxpdHRsZSB0byB0b3VjaCBvZmYgd2hhdCBoZSBjYWxscyB0aGUgc2Vjb25kIHBoYXNlIG9mIHRoZSBoYXJkIGxhbmRpbmcsIHdoZXJlYnkgYSBsb3NzIG9mIGNvbmZpZGVuY2UgaW4gdGhlIGRvbGxhciBwdXNoZXMgdXAgaW50ZXJlc3QgcmF0ZXMgYW5kIGxlYWRzIHRvIGEgcmVjZXNzaW9uLiAgICAgVGhlIHN0b2NrIG1hcmtldCdzIHJlYWN0aW9uIHRvZGF5IGFuZCBpdHMgc2hhcnAgZHJvcCBvbiBNYXJjaCAzMCBzaG93cyBob3cgdGhlIGxvc3Mgb2YgY29uZmlkZW5jZSBjb3VsZCBjb21lIGFib3V0LiAgICAgVGhlIGZhY3QgdGhhdCBpdCBoYXMgbm90IGhhcHBlbmVkIHlldCBpcyBjb25zaXN0ZW50IHdpdGggaGlzdG9yaWNhbCBleHBlcmllbmNlLCB3aGljaCB0ZWFjaGVzIHRoYXQgZG9tZXN0aWMgbWFya2V0cyBhcmUgbm90IGFmZmVjdGVkIHVudGlsIGEgY3VycmVuY3kgaXMgaW4gdGhlIGZpbmFsIHN0YWdlcyBvZiBpdHMgZGVjbGluZSwgTWFycmlzIHNhaWQuIEhlIGhhcyBmb3JlY2FzdCBhIGRyb3AgdG8gYWJvdXQgMTI1IHllbi4gICAgIE1hcnJpcyBmZWx0IHRoYXQgYSBtYWpvciBpbXBldHVzIGZvciB0aGUgZG9sbGFyJ3MgbGF0ZXN0IHdlYWtuZXNzIHdhcyB0aGUgbG9zcyBvZiBjcmVkaWJpbGl0eSB0aGF0IGNlbnRyYWwgYmFua3Mgc3VmZmVyZWQgd2hlbiB0aGV5IGZhaWxlZCB0byBwcmV2ZW50IHRoZSBkb2xsYXIgZnJvbSBmYWxsaW5nIGJlbG93IDE1MCB5ZW4sIHRoZSBmbG9vciB0aGF0IHRoZSBtYXJrZXQgYmVsaWV2ZXMgd2FzIHNldCBhcyBwYXJ0IG9mIHRoZSBHLTcgUGFyaXMgYWdyZWVtZW50IGluIEZlYnJ1YXJ5LiAgICAgUm9iZXJ0c29uIGF0IE1lbGxvbiwgYnkgY29udHJhc3QsIHNhaWQgdGhlIGxvc3Mgb2YgY29uZmlkZW5jZSB3YXMgdHJpZ2dlcmVkIGxhc3Qgd2VlayB3aGVuIFdhc2hpbmd0b24gYW5ub3VuY2VkIHBsYW5zIHRvIHNsYXAgMzAwIG1sbiBkbHJzIG9mIHRhcmlmZnMgb24gSmFwYW5lc2UgZWxlY3Ryb25pYyBpbXBvcnRzLCByYWlzaW5nIHRoZSBzcGVjdGVyIG9mIGEgZGViaWxpdGF0aW5nIHRyYWRlIHdhci4gICAgIE1hbnkgZWNvbm9taXN0cyBiZWxpZXZlIHRoYXQgbG9uZy1ydW4gc3RhYmlsaXR5IHdpbGwgbm90IHJldHVybiB0byB0aGUgbWFya2V0cyB1bnRpbCB0aGUgcm9vdCBjYXVzZSBvZiB0aGUgdHJhZGUgZ2FwIGlzIGFkZHJlc3NlZCAtIGV4Y2Vzc2l2ZSBjb25zdW1wdGlvbiBpbiB0aGUgVS5TLiwgUmVmbGVjdGVkIGluIHRoZSBtYXNzaXZlIGJ1ZGdldCBkZWZpY2l0LiAgICAgQnV0IGluIHRoZSBzaG9ydCB0ZXJtLCBnaXZlbiB0aGUgZmFpbHVyZSBvZiB0aGUgRy03IGFuZCBvZiBjZW50cmFsIGJhbmsgaW50ZXJ2ZW50aW9uLCBzb21lIGZlZWwgdGhhdCB0aGUgRmVkIHdpbGwgaGF2ZSBubyBjaG9pY2UgYnV0IHRvIHRpZ2h0ZW4gY3JlZGl0IHRvIHJlc3RvcmUgZmFpdGggaW4gdGhlIGRvbGxhci4gICAgICJUaGUgb25seSB0aGluZyB0aGF0IHdpbGwgc3RvcCB0aGUgZG9sbGFyIGZhbGxpbmcgaXMgYSBzdWJzdGFudGlhbCBpbmNyZWFzZSBpbiB0aGUgZGlzY291bnQgcmF0ZSBhbmQgYSBjb3JyZXNwb25kaW5nIGN1dCBhYnJvYWQsIGF0IGxlYXN0IGJ5IEphcGFuLCIgc2FpZCBMYW5zdG9uJ3MgSm9uZXMuICAgICBNYXJyaXMgZXhwZWN0cyB0aGUgRmVkIHRvIGFjdCBxdWlja2x5IHRvIHJhaXNlIGludGVyZXN0IHJhdGVzLCBldmVuIGF0IHRoZSByaXNrIG9mIGluY3JlYXNpbmcgdGhlIGRlYnQgYnVyZGVuIGZvciBBbWVyaWNhbiBmYXJtZXJzLCBMYXRpbiBBbWVyaWNhbiBnb3Zlcm5tZW50cyBhbmQgb3RoZXJzLiAgICAgQnV0IFJvYmVydCBHaW9yZGFubywgY2hpZWYgZWNvbm9taXN0IGF0IEdvbGRtYW4gU2FjaHMgYW5kIENvLCBzY29mZmVkIGF0IHRoZSBub3Rpb24uICJJdCdzIHJpZGljdWxvdXMgdG8gdGhpbmsgdGhlIEZlZGVyYWwgUmVzZXJ2ZSB3aWxsIHJhaXNlIGludGVyZXN0IHJhdGVzIHdoZW4gdGhlIGRvbGxhciBpcyB3ZWFrIGFnYWluc3QganVzdCBvbmUgY3VycmVuY3kuIFRoaXMgaXMgeWVuIHN0cmVuZ3RoLCBub3QgZG9sbGFyIHdlYWtuZXNzLCIgaGUgc2FpZC4gICAgIEdpb3JkYW5vIHNhaWQgdGhlIG1hcmtldCB3YXMgaWdub3JpbmcgdGhlIHByb2dyZXNzIGJlaW5nIG1hZGUgdG93YXJkIHJlZHVjaW5nIHRoZSBVLlMuIEJ1ZGdldCBkZWZpY2l0LiAgICAgIldlJ3JlIGdvaW5nIHRvIGhhdmUgb25lIG9mIHRoZSBiaWdnZXN0IHJlZHVjdGlvbnMgaW4gdGhlIGJ1ZGdldCBkZWZpY2l0IHJlbGF0aXZlIHRvIEdOUCBpbiBoaXN0b3J5IHRoaXMgeWVhciwgYW5kIG5vYm9keSBjYXJlcywiIGhlIHNhaWQsIG5vdGluZyB0aGF0IG9ubHkgdGhlIGRlZmljaXQgY3V0IGluIDE5NjgtNjkgd2lsbCBoYXZlIGJlZW4gZ3JlYXRlci4gICAgIEhlIHNhaWQgaGUgZG9lcyBub3QgZXhwZWN0IHRoZSBkb2xsYXIgdG8gY29sbGFwc2UgYW5kIHRoaW5rcyBpbnRlcmVzdCByYXRlcyBhcmUgbGlrZWx5IHRvIGZhbGwgYmFjayBsYXRlciB0aGlzIHllYXIuICAgICBCdXQgZm9yIG5vdywgbWFya2V0IHBzeWNob2xvZ3kgaGFzIGNoYW5nZWQgc28gYWJydXB0bHkgdGhhdCBhIGZ1cnRoZXIgZHJvcCBpbiB0aGUgYm9uZCBtYXJrZXQgY2Fubm90IGJlIHJ1bGVkIG91dC4gIlB1dCBvbiB5b3VyIGhlbG1ldHMsIiBHaW9yZGFubyBzYWlkLiAgUkVVVEVSIDM7CjE5ODcwNDA5CVUuUy4gT0lMIERFUEVOREVOQ1kgU0VFTiBSSVNJTkcgVE8gUkVDT1JEIExFVkVMIFRoZSBVbml0ZWQgU3RhdGVzJyBkZXBlbmRlbmN5IG9uIGZvcmVpZ24gb2lsIHNvdXJjZXMgbWF5IHJlYWNoIHJlY29yZCBsZXZlbHMgYnkgdGhlIG1pZC0xOTkwcywgYWNjb3JkaW5nIHRvIEpvaG4gSC4gTGljaHRibGF1LCBwcmVzaWRlbnQgb2YgUGV0cm9sZXVtIEluZHVzdHJ5IFJlc2VhcmNoIEFzc29jaWF0ZXMuICAgICBMaWNodGJsYXUsIHNwZWFraW5nIGF0IGFuIGFsdGVybmF0aXZlIGVuZXJneSBjb25mZXJlbmNlIGhlcmUsIHNhaWQgdGhlIFUuUy4gbWF5IGRlcGVuZCBvbiBmb3JlaWduIHN1cHBsaWVycyBmb3IgYXMgbXVjaCBhcyA1MiBwY3Qgb2YgaXRzIG9pbCBieSAxOTk1LCBzdXJwYXNzc2luZyB0aGUgcHJldmlvdXMgaGlnaCBsZXZlbCBvZiA0NyBwY3QgaW4gMTk3Ny4gICAgICJUaGUgbG9uZyB0ZXJtIGdyb3d0aCBpbiBkZXBlbmRlbmN5IG9uIGZvcmVpZ24gb2lsIGlzIGluZXZpdGFibGUsIiBMaWNodGJsYXUgc2FpZC4gQXMgbXVjaCBhcyAzMCBwY3Qgb2YgVS5TLiBvaWwgaW1wb3J0cyBpbiAxOTk1IGNvdWxkIGNvbWUgZnJvbSBPUEVDIG5hdGlvbnMsIGhlIHNhaWQuICAgICBMaWNodGJsYXUgc2FpZCB0aGUgVS5TLiBkZXBlbmRlZCBvbiBmb3JlaWduIHN1cHBsaWVycyBmb3IgMzMgcGN0IG9mIGl0cyBvaWwgaW4gMTk4NiBhbmQgcHJlZGljdGVkIHRoYXQgd291bGQgaW5jcmVhc2UgdG8gNDAgcGN0IGJ5IDE5OTAuICAgICAiSG93ZXZlciwgdGhlIHJhdGUgb2YgdGhpcyBncm93dGggY2FuIGJlIGFmZmVjdGVkIHBvc2l0aXZlbHkgb3IgbmVnYXRpdmVseSB0aHJvdWdoIGdvdmVybm1lbnQgYWN0aW9uIG9yIGluYWN0aW9uLCIgTGljaHRibGF1IHNhaWQuICAgICBIZSBzYWlkIHRoYXQgb25lIG9mIHRoZSBnb3Zlcm5tZW50J3MgbmVnYXRpdmUgYWN0aW9ucyBpcyB0aGUgbWFpbnRlbmFuY2Ugb2YgdGhlIHdpbmRmYWxsIHByb2ZpdHMgdGF4IHdoaWNoIGFjdHMgYXMgYSBkaXNpbmNlbnRpdmUgdG8gZGV2ZWxvcGluZyBleGlzdGluZyBmaWVsZHMgYW5kIHJlZHVjZXMgY2FzaCBmbG93IGZvciBvaWwgZXhwbG9yYXRpb24uICAgICBMaWNodGJsYXUgY2FsbGVkIGZvciB0aGUgYWRvcHRpb24gb2YgYW4gaW50ZXJuYXRpb25hbCBmbG9vciBwcmljZSBmb3IgY3J1ZGUgb2lsIHRvIGhlbHAgc3RhYmlsaXplIHdvcmxkIG9pbCBwcmljZXMuICAgICAiQW4gaW50ZXJuYXRpb25hbCBmbG9vciBwcmljZSBhZG9wdGVkIGJ5IGFsbCBvciBtb3N0IGluZHVzdHJpYWwgY291bnRyaWVzIHdvdWxkIGNsZWFybHkgYmUgYSBtdWNoIG1vcmUgZWZmZWN0aXZlIG1lYXN1cmUgYW5kIHdvdWxkIGJlIG11Y2ggbGVzcyBkaXN0b3J0aXZlIGZvciB0aGUgVS5TLiB0aGFuIGlmIHdlIGltcG9zZWQgaXQgYWxvbmUsIiBMaWNodGJsYXUgc2FpZC4gICAgIERldmVsb3BtZW50IG9mIGFsdGVybmF0ZSBlbmVyZ3kgc291cmNlcyBzdWNoIGFzIHN5bnRoZXRpYyBmdWVscyBhcyB3ZWxsIGFzIGluY3JlYXNlZCBkZXZlbG9wbWVudCBpbiBBbGFza2EgY291bGQgbGVzc2VuIFUuUy4gZGVwZW5kZW5jeSBvbiBmb3JlaWduIG9pbCwgTGljaHRibGF1IHNhaWQuICAgICBBIHBvdGVudGlhbCBmb3IgYWx0ZXJuYXRpdmUgc3VwcGxpZXMgY291bGQgbGltaXQgdGhlIHdpbGxpbmduZXNzIG9mIE9QRUMgbmF0aW9ucyB0byByYWlzZSBvaWwgcHJpY2VzLCBoZSBzYWlkLiAgICAgTGljaHRibGF1IGFsc28gY2FsbGVkIGZvciB0aGUgZmVkZXJhbCBnb3Zlcm5tZW50IHRvIG9mZmVyIHRheCBhYmF0ZW1lbnRzIGZvciBvaWwgZHJpbGxpbmcsIHRvIGZpbGwgdGhlIFN0cmF0ZWdpYyBQZXRyb2xldW0gUmVzZXJ2ZSBhdCBhIGZhc3RlciByYXRlIGFuZCB0byBkZXZlbG9wIHBpbG90IHBsYW5zIGZvciBhbHRlcm5hdGl2ZSBlbmVyZ3kuICBSZXV0ZXIgMzsKMTk4NzA0MDkJVS5TLiBPTkUtWUVBUiBCSUxMIFlJRUxEUyBSQVRFIE9GIDUuOTIgUENUIFRoZSBVLlMuIFRyZWFzdXJ5IHNhaWQgaXRzIGF1Y3Rpb24gb2YgOS43NiBiaWxsaW9uIGRscnMgb2YgNTItd2VlayBiaWxscyBwcm9kdWNlZCBhbiBhdmVyYWdlIHJhdGUgb2YgNS45MiBwY3QuICAgICBUaGUgcmF0ZSB3YXMgdXAgZnJvbSA1LjY4IHBjdCBhdCB0aGUgbGFzdCBhdWN0aW9uIG9mIG9uZS15ZWFyIGJpbGxzIG9uIE1hcmNoIDEyLiAgICAgQXQgdG9kYXkncyBzYWxlLCB0aGUgYm9uZC1lcXVpdmFsZW50IHlpZWxkIHdhcyA2LjMwIHBjdC4gIEFjY2VwdGVkIGJpZHMgcmFuZ2VkIGZyb20gNS44OCBwY3QgdG8gNS45MyBwY3QgYW5kIDgwIHBjdCBvZiBiaWRzIGF0IHRoZSBoaWdoLCBvciBzdG9wb3V0LCByYXRlIHdlcmUgdGFrZW4uICAgICBUaGUgVHJlYXN1cnkgcmVjZWl2ZWQgMjYuNyBiaWxsaW9uIGRscnMgb2YgYmlkcywgaW5jbHVkaW5nIDU1NCBtbG4gZGxycyBpbiBub24tY29tcGV0aXRpdmUgYmlkcyBmcm9tIHRoZSBwdWJsaWMuICAgICBUaGUgYXZlcmFnZSBwcmljZSBvZiB0aGUgb25lLXllYXIgYmlsbHMgd2FzIDk0LjAxNCBhbmQgdGhlIHJhbmdlIHdhcyA5NC4wNTUgdG8gOTQuMDA0LiAgICAgVGhlIGF2ZXJhZ2UgcmF0ZSBvZiA1LjkyIHBjdCB3YXMgdGhlIGhpZ2hlc3Qgc2luY2UgNS45OCBwY3Qgb24gSnVseSA4LCAxOTg2LiAgUmV1dGVyIDM7CjE5ODcwNDA5CVUuUy4gU0FJRCBUTyBWSUVXIEctNyBNRUVUSU5HIEFTIE1BSk9SIFNVQ0NFU1MgVGhlIFVuaXRlZCBTdGF0ZXMsIHdoaWNoIGhhcyBsb25nIHNvdWdodCBKYXBhbmVzZSBhY3Rpb24gdG8gc3RpbXVsYXRlIGl0cyBlY29ub215LCBhcHBlYXJzIHRvIGJlIHNhdGlzZmllZCBUb2t5bydzIGxhdGVzdCBwYWNrYWdlIGlzIGEgbWFqb3IgZGV2ZWxvcG1lbnQgYW5kIGFsbG93cyBsZWFkaW5nIGluZHVzdHJpYWwgbmF0aW9ucyB0byByZWFmZmlybSB0aGVpciBhZ3JlZW1lbnQgdG8gc3RhYmlsaXplIGN1cnJlbmNpZXMuICAgICBNb25ldGFyeSBzb3VyY2VzIHNhaWQgdGhleSBiZWxpZXZlZCB0aGF0IFUuUy4gVHJlYXN1cnkgU2VjcmV0YXJ5IEphbWVzIEJha2VyIGNvbnNpZGVyZWQgVG9reW8ncyBwYWNrYWdlLCBhbm5vdW5jZWQgeWVzdGVyZGF5LCB0byBiZSBhIG1ham9yIHN0aW11bGF0aW9uIG9mIHRoZSBKYXBhbmVzZSBlY29ub215LiAgICAgQnV0IHllc3RlcmRheSdzIHN0YXRlbWVudCBieSBzZXZlbiBsZWFkaW5nIGluZHVzdHJpYWwgcG93ZXJzIGVuZG9yc2VzIHRoZSB5ZW4ncyByaXNlIGZyb20gYXJvdW5kIDE1MyB0byB0aGUgZG9sbGFyLCB0aGUgbGV2ZWwgYXQgdGhlIEZlYnJ1YXJ5IDIyIFBhcmlzIEFjY29yZCwgdG8gYWJvdXQgMTQ1IHRvZGF5LiAgICAgQW5kIHRoZSBpbml0aWFsIHJlYWN0aW9uIG9mIGN1cnJlbmN5IG1hcmtldHMgaW4gdGhlIEZhciBFYXN0IGRlbW9uc3RyYXRlcyB0aGF0IGZpbmFuY2lhbCBtYXJrZXRzIGFyZSB1bmNvbnZpbmNlZCB0aGF0IGN1cnJlbmNpZXMgeWV0IHJlZmxlY3QgZWNvbm9taWMgZnVuZGFtZW50YWxzLCBldmVuIHRob3VnaCB0aGUgY291bnRyaWVzIGFwcGVhciB0byBkbyBzby4gVGhlIHllbiBzYW5rIGJlbG93IDE0NSBhdCBvbmUgcG9pbnQgZGVzcGl0ZSBpbnRlcnZlbnRpb24gYnkgdGhlIEJhbmsgb2YgSmFwYW4uICAgICBLaWljaGkgTWl5YXphd2EsIEphcGFuJ3MgRmluYW5jZSBNaW5pc3Rlciwgc2FpZCB0aGUgbW92ZW1lbnQgc2luY2UgUGFyaXMgd2FzIGNvbnNpc3RlbnQgd2l0aCBjdXJyZW5jeSB0cmFkaW5nIHJhbmdlcyB0aGUgbmF0aW9ucyBhZ3JlZWQgdG8gZGVmZW5kIGluIHRoZSBGZWJydWFyeSB0YWxrcy4gICAgICJJIHdvdWxkIHNheSB0aGF0IHdoYXQgaGFzIGhhcHBlbmVkICh0byB0aGUgeWVuKSBpbiB0aGUgcGFzdCBzZXZlcmFsIHdlZWtzIHdhcyBub3Qgb3V0c2lkZSB0aGUgcmFuZ2Ugd2UgYWdyZWVkIHRvIGluIHRoZSBkaXNjdXNzaW9ucyBpbiBQYXJpcywiIE1peWF6YXdhIHNhaWQgeWVzdGVyZGF5LiAgICAgVGhlIHN1cHBsZW1lbnRhcnkgYnVkZ2V0IHdvcnRoIGFib3V0IDM0LjQ4IGJpbGxpb24gZGxycyB3YXMgYW5ub3VuY2VkIGJ5IHRoZSBydWxpbmcgTGliZXJhbCBEZW1vY3JhdGljIFBhcnR5IG9uIHRoZSBldmUgb2YgTWl5YXphd2EncyBkZXBhcnR1cmUgZm9yIFdhc2hpbmd0b24sIHRvIGF0dGVuZCB5ZXN0ZXJkYXkncyBtZWV0aW5ncyBvZiBsZWFkaW5nIGluZHVzdHJpYWwgbmF0aW9ucy4gICAgIEluIGEgc3Ryb25nbHkgd29yZGVkIHN0YXRlbWVudCB0ZXJtaW5nIHRoZSBKYXBhbmVzZSBhY3Rpb24gImV4dHJhb3JkaW5hcnkgYW5kIHVyZ2VudCIsIHRoZSBtZWV0aW5nIHJlYWZmaXJtZWQgdGhlIFBhcmlzIEFjY29yZCBieSBub3RpbmcgdGhhdCBjdXJyZW50IGV4Y2hhbmdlIHJhdGVzIGFyZSB3aXRoaW4gcmFuZ2VzIGJyb2FkbHkgY29uc2lzdGVudCB3aXRoIGZ1bmRhbWVudGFscywgb3IgZWNvbm9taWMgcmVhbGl0eS4gICAgIFRoZSBHcm91cCBvZiBTZXZlbiAtLSB0aGUgVW5pdGVkIFN0YXRlcywgSmFwYW4sIFdlc3QgR2VybWFueSwgRnJhbmNlLCBCcml0YWluLCBJdGFseSBhbmQgQ2FuYWRhIC0tIHRoZXJlZm9yZSByZXBlYXRlZCB0aGVpciB3aWxsaW5nbmVzcyB0byBjb250aW51ZSBjbG9zZSBjb29wZXJhdGlvbiB0byBmb3N0ZXIgZXhjaGFuZ2UgcmF0ZSBzdGFiaWxpdHkuICAgICBUaGUgY29vcGVyYXRpb24gYWdyZWVtZW50IGhhcyByZXN1bHRlZCBpbiBjb25jZXJ0ZWQgY2VudHJhbCBiYW5rIGludGVydmVudGlvbiBvZiA4IGJpbGxpb24gdG8gOSBiaWxsaW9uIGRscnMgdG8gaGFsdCB0aGUgZG9sbGFyJ3MgZmFsbC4gV2hpbGUgcmVsYXRpdmVseSB1bnN1Y2Nlc3NmdWwsIHRoZSBzY2FsZSBvZiBpbnRlcnZlbnRpb24gYmV0d2VlbiBzbyBtYW55IG5hdGlvbnMgaXMgdW5wcmVjZWRlbnRlZCBpbiByZWNlbnQgeWVhcnMuIE1vbmV0YXJ5IHNvdXJjZXMgYWxzbyBzYWlkIHRoZXkgdW5kZXJzdG9vZCB0aGF0IFNlY3JldGFyeSBCYWtlciBjb25zaWRlcmVkIHRoZSBtZWV0aW5nIHRvIGJlIGV4dHJlbWVseSBzdWNjZXNzZnVsIGluIHRoZSBsaWdodCBvZiB0aGUgSmFwYW5lc2UgYW5ub3VuY2VtZW50LiAgICAgVGhleSBhbHNvIHNhaWQgdGhlcmUgd2FzIGEgZ3Jvd2luZyBmZWVsaW5nIGFtb25nIHRoZSBmaW5hbmNlIG1pbmlzdGVycyBhbmQgY2VudHJhbCBiYW5rZXJzIHRoYXQgY29vcGVyYXRpb24gb3ZlciBtZWRpdW0tdGVybSBwb2xpY2llcyBoYXMgcmVwbGFjZWQgdGhlIGJpY2tlcmluZyBvdmVyIHNob3J0LXRlcm0gZGlmZmVyZW5jZXMgaW4gcGFzdCBtZWV0aW5ncy4gICAgIFdlc3QgR2VybWFueSwgd2hvc2UgY3VycmVuY3kgaGFzIG5vdCByaXNlbiBhbnl0aGluZyBsaWtlIHRoZSB5ZW4gc2luY2UgdGhlIFBhcmlzIEFncmVlbWVudCwgYXBwZWFycyBmcm9tIHRoZSBmYWNlIG9mIHllc3RlcmRheSdzIHN0YXRlbWVudCB0byBoYXZlIHdvbiBhY2NlcHRhbmNlIGZyb20gb3RoZXIgY291bnRyaWVzIHRoYXQgaXRzIGV4Y2hhbmdlIHJhdGUgaXMgYWNjZXB0YWJsZS4gICAgIEJvbm4ncyBmaW5hbmNlIG1pbmlzdGVyIEdlcmhhcmQgU3RvbHRlbmJlcmcgYXJndWVzIHRoYXQgbWFqb3IgY3VycmVuY3kgc2hpZnRzIG5lZWRlZCB0byByZW1lZHkgdGhlIGh1Z2UgaW1iYWxhbmNlIGJldHdlZW4gV2VzdCBHZXJtYW55IGFuZCBKYXBhbidzIHRyYWRlIHN1cnBsdXNlcyBhbmQgQW1lcmljYSdzIHRyYWRlIGRlZmljaXQgaGF2ZSBhbHJlYWR5IHRha2VuIHBsYWNlLiAgICAgTm8gbWVudGlvbiB3YXMgbWFkZSwgaG93ZXZlciwgb2YgdGhlIFUuUy4gY29tbWl0bWVudCB0byBjdXQgdGhlIGJ1ZGdldCBkZWZpY2l0IGV2ZW4gdGhvdWdoIGl0IGlzIGltcGxpZWQgaW4gdGhlIHJlYWZmZmlybWF0aW9uIG9mIFBhcmlzLiAgICAgRXVyb3BlYW4gbmF0aW9ucyBhbmQgSmFwYW4gYmVsaWV2ZSBkZWZpY2l0IGN1dHMgYXJlIGVzc2VudGlhbCB0byBjdXJiaW5nIHRoZSByZWNvcmQgVS5TLiB0cmFkZSBzaG9ydGZhbGwgdGhhdCByZWFjaGVkIG5lYXJseSAxNzAgYmlsbGlvbiBkbHJzIGxhc3QgeWVhci4gICAgIEEgc2ltaWxhciBhcmd1bWVudCB3YXMgbWFkZSBvbiBDYXBpdG9sIEhpbGwgZWFybGllciB0aGlzIHdlZWsgYnkgRmVkZXJhbCBSZXNlcnZlIEJvYXJkIGNoYWlybWFuIFBhdWwgVm9sY2tlci4gQSBmdXJ0aGVyIHNoYXJwIGZhbGwgdG8gcmVkcmVzcyB0cmFkZSBpbWJhbGFuY2VzIHdvdWxkICJjbGVhcmx5IHBvc2Ugc3Vic3RhbnRpYWwgcmlza3Mgb2YgcmVuZXdlZCBpbmZsYXRpb25hcnkgbW9tZW50dW0gYW5kIGNvdWxkIHVuZGVybWluZSBjb25maWRlbmNlIGluIGZ1dHVyZSBmaW5hbmNpYWwgc3RhYmlsaXR5LCIgaGUgc2FpZC4gICAgIFZvbGNrZXIgd2FybmVkIGEgZnVydGhlciBkb2xsYXIgZmFsbCBtaWdodCBmb3JjZSB0aGUgcG9saXRpY2FsbHkgaW5kZXBlbmRlbnQgRmVkIHRvIGRyaXZlIHVwIGludGVyZXN0IHJhdGVzLiAgICAgTW9uZXRhcnkgc291cmNlcyBzYWlkIHRoYXQsIHByaXZhdGVseSwgV2VzdCBHZXJtYW55IHdlbGNvbWVkIHRoZSByaXNlIGluIHRoZSB5ZW4gYWdhaW5zdCB0aGUgZG9sbGFyIHdoaWxlIGl0cyBvd24gY3VycmVuY3kgcmVtYWluZWQgcmVsYXRpdmVseSBzdGFibGUgYWdhaW5zdCB0aGUgVS5TLiB1bml0LiAgICAgQm9ubiBhbmQgb3RoZXIgRXVyb3BlYW4gbmF0aW9ucyB3b3JyeSB0aGF0IG9uY2UgdGhlIHdlYWsgZG9sbGFyIGJsdW50cyBUb2t5bydzIGV4cG9ydCBkcml2ZSB0byB0aGUgVW5pdGVkIFN0YXRlcywgdGhlIEphcGFuZXNlIG1vbm9saXRoIHdpbGwgY29uY2VudHJhdGUgb24gRXVyb3BlYW4gbWFya2V0cy4gICAgIFRoZSBtaW5pc3RlcnMsIG1lYW53aGlsZSwgYWxzbyBjb250aW51ZWQgdGFsa3Mgb24gbWFraW5nIHRoZWlyIHBvbGljeSBjb29yZGluYXRpb24gbW9yZSBiaW5kaW5nIGFuZCBvbmUsIENhbmFkaWFuIEZpbmFuY2UgTWluaXN0ZXIgTWljaGFlbCBXaWxzb24sIHNhaWQgZ29vZCBwcm9ncmVzcyB3YXMgbWFkZS4gICAgIFdpbHNvbiBzYWlkIHRoZXkgd2lsbCBtZWV0IGJlZm9yZSB0aGUgSnVuZSBFY29ub21pYyBTdW1taXQgdG8gcHJlcGFyZSBhIHJlcG9ydCBmb3IgdGhlIGxlYWRlcnMgb2YgdGhlIHNldmVuIG5hdGlvbnMuICAgICBUaGUgVW5pdGVkIFN0YXRlcyBhbmQgRnJhbmNlLCBiYWNrZWQgYnkgdGhlIEludGVybmF0aW9uYWwgTW9uZXRhcnkgRnVuZCwgd2FudCB0aGUgc2V2ZW4gdG8gYWdyZWUgb24gcmFuZ2VzIG9yICJub3JtcyIgZm9yIGEgbGltaXRlZCBudW1iZXIgb2YgZWNvbm9taWMgb2JqZWN0aXZlcyBzdWNoIGFzIGdyb3d0aCwgaW5mbGF0aW9uLCBtb25ldGFyeSBjb25kaXRpb25zLCB0cmFkZSBiYWxhbmNlcyBhbmQgY3VycmVudCBhY2NvdW50IGJhbGFuY2VzLiAgICAgU2hhcnAgZGV2aWF0aW9ucyBmcm9tIHRoZXNlIGd1aWRlbGluZXMgd291bGQgcmVzdWx0IGluIGNvbnN1bHRhdGlvbnMgYmV0d2VlbiB0aGUgY291bnRyaWVzIG9uIHdoZXRoZXIgY29ycmVjdGl2ZSBhY3Rpb24gc2hvdWxkIGJlIHJlcXVpcmVkLiAgICAgQnV0IHRoZSBpbmNsdXNpb24gb2YgY3VycmVuY2llcyBhcyBvbmUgb2YgdGhlIG9iamVjdGl2ZXMgaGFzIEJvbm4gYW5kIExvbmRvbiB3b3JyaWVkLCBtb25ldGFyeSBzb3VyY2VzIHNheSwgYmVjYXVzZSBpdCBpbXBsaWVzIFdhc2hpbmd0b24gaXMgbW92aW5nIGluIHRoZSBkaXJlY3Rpb24gb2YgdGFyZ2V0IHpvbmVzLiAgICAgVGhlIHNvdXJjZXMgc2FpZCB0aGUgUmVhZ2FuIGFkbWluaXN0cmF0aW9uIHVuc3VjY2Vzc2Z1bGx5IHNvdW5kZWQgb3V0IGl0cyBhbGxpZXMgb24gYSBzeXN0ZW0gb2YgdGFyZ2V0IHpvbmVzIHRvIGxpbWl0IGN1cnJlbmN5IGZsdWN0dWF0aW9ucyBqdXN0IGJlZm9yZSB0aGUgRmVicnVhcnkgbWVldGluZy4gICAgIFRoZSBjb25jZXB0IGlzIGEgbXVjaCBtb3JlIHJpZ2lkIG9uZSB0aGFuIHRoZSBzZWNyZXQgcmFuZ2VzIG9mIHRoZSBQYXJpcyBBY2NvcmQgYW5kIHdvdWxkIG1hcmsgYSBzaGFycCBkZXBhcnR1cmUgZnJvbSB0aGUgcmVsYXRpdmVseSBmcmVlIGN1cnJlbmN5IG1hcmtldHMgb2YgcmVjZW50IHllYXJzLiAgUmV1dGVyIDM7CjE5ODcwNDA5CVUuUy4gVFJFQVNVUlknUyBCQUtFUiBTQVlTIFJBVEUgU0hJRlRTIE9SREVSTFkgVHJlYXN1cnkgU2VjcmV0YXJ5IEphbWVzIEJha2VyIHNhaWQgdGhhdCBjaGFuZ2VzIGluIGV4Y2hhbmdlIHJhdGVzIGhhdmUgZ2VuZXJhbGx5IGJlZW4gb3JkZXJseSBhbmQgaGF2ZSBpbXByb3ZlZCB0aGUgcHJvc3BlY3RzIGZvciBhIHJlZHVjdGlvbiBpbiBleHRlcm5hbCBpbWJhbGFuY2VzIHRvIG1vcmUgc3VzdGFpbmFibGUgbGV2ZWxzLiAgICAgSW4gcmVtYXJrcyBiZWZvcmUgdGhlIElNRidzIHBvbGljeS1tYWtpbmcgSW50ZXJpbSBDb21taXR0ZWUsIEJha2VyIHJlaXRlcmF0ZWQgYSBHcm91cCBvZiBTZXZlbiBzdGF0ZW1lbnQgbGFzdCBuaWdodCB0aGF0IHRoZSBzdWJzdGFudGlhbCBleGNoYW5nZSByYXRlIGNoYW5nZXMgc2luY2UgdGhlIFBsYXphIGFncmVlbWVudCAxOCBtb250aHMgYWdvIGhhdmUgIm5vdyBicm91Z2h0IGN1cnJlbmNpZXMgd2l0aGluIHJhbmdlcyBicm9hZGx5IGNvbnNpc3RlbnQgd2l0aCBlY29ub21pYyBmdW5kYW1lbnRhbHMuIiAgICAgQmFrZXIgc2FpZCwgIlRoZXNlIGV4Y2hhbmdlIHJhdGUgc2hpZnRzIGhhdmUgZ2VuZXJhbGx5IGJlZW4gb3JkZXJseSwgYW5kIGhhdmUgaW1wcm92ZWQgcHJvc3BlY3RzIGZvciB0aGUgcmVkdWN0aW9uIG9mIGV4dGVybmFsIGltYmFsYW5jZXMgdG8gbW9yZSBzdXN0YWluYWJsZSBsZXZlbHMuIiAgICAgQXMgdGhleSBhcmUgdG9kYXksIHRoZSB0cmFkZSBhbmQgY3VycmVudCBhY2NvdW50IGltYmFsYW5jZXMgInNpbXBseSBhcmUgbm90IHN1c3RhaW5hYmxlLCIgQmFrZXIgdG9sZCB0aGUgbWluaXN0ZXJzLiAgICAgSGUgc2FpZCB0aGF0IHRoZSBSZWFnYW4gYWRtaW5pc3RyYXRpb24gd2FzIHJlc2lzdGluZyAic3Ryb25nIGRvbWVzdGljIHByZXNzdXJlIiBmb3IgdHJhZGUgcHJvdGVjdGlvbiBhbmQgd2FzIHdvcmtpbmcgY2xvc2VseSB3aXRoIHRoZSBVLlMuIENvbmdyZXNzIGluIGNyYWZ0aW5nIGEgdHJhZGUgYmlsbC4gICAgICJXaGlsZSB3ZSBjYW5ub3QgeWV0IGJlIHN1cmUgb2YgdGhlIG91dGNvbWUsIHdlIGFyZSBkb2luZyB3aGF0IHdlIGNhbiB0byBlbnN1cmUgdGhhdCB0aGUgYmlsbCBpcyBub3QgcHJvdGVjdGlvbmlzdCwiIGhlIHNhaWQuICAgICBCYWtlciBhbHNvIHVyZ2VkIHRoZSBJbnRlcm5hdGlvbmFsIE1vbmV0YXJ5IEZ1bmQncyBleGVjdXRpdmUgYm9hcmQgdG8gcmV2aWV3IHBvc3NpYmxlIG1vZGlmaWNhdGlvbnMgdG8gdGhlIEZ1bmQncyBjb21wZW5zYXRvcnkgZmluYW5jaW5nIGZhY2lsaXR5IGJlZm9yZSB0aGUgYW5udWFsIG1lZXRpbmcgdGhpcyBmYWxsLiAgICAgIldlIHNob3VsZCBwYXkgcGFydGljdWxhciBhdHRlbnRpb24gdG8gdGhlIGxhY2sgb2YgY29udGludWluZyBjb25kaXRpb25hbGl0eSBhc3NvY2lhdGVkIHdpdGggdGhlIHVzZSBvZiB0aGUgQ0ZGIGFuZCB0byB3aGV0aGVyIHNob3J0ZmFsbHMgaW4gZXhwb3J0IGVhcm5pbmdzIGFyZSBpbmRlZWQgdGVtcG9yYXJ5LCIgaGUgc2FpZC4gIFJldXRlciAzOwoxOTg3MDQwOQlVLlMuIFdFRUtMWSBTT1lCRUFOIENSVVNIIDE5LDQxNiwwMDAgQlVTSEVMUyBSZXBvcnRpbmcgbWVtYmVycyBvZiB0aGUgTmF0aW9uYWwgU295YmVhbiBQcm9jZXNzb3JzIEFzc29jaWF0aW9uIChOU1BBKSBjcnVzaGVkIDE5LDQxNiwwMDAgYnVzaGVscyBvZiBzb3liZWFucyBpbiB0aGUgd2VlayBlbmRlZCBBcHJpbCA4IGNvbXBhcmVkIHdpdGggMjAsMTE1LDAwMCBidXNoZWxzIGluIHRoZSBwcmV2aW91cyB3ZWVrIGFuZCAxNywxNjAsMDAwIGluIHRoZSB5ZWFyLWFnbyB3ZWVrLCB0aGUgYXNzb2NpYXRpb24gc2FpZC4gICAgIEl0IHNhaWQgdG90YWwgY3J1c2hpbmcgY2FwYWNpdHkgZm9yIG1lbWJlcnMgd2FzIDI1LDg3Myw5MDQgYnVzaGVscyB2cyAyNSw4NzMsOTA0IGxhc3Qgd2VlayBhbmQgMjUsNDU5LDIzOCBidXNoZWxzIGxhc3QgeWVhci4gICAgIE5TUEEgYWxzbyBzYWlkIFUuUy4gc295YmVhbiBtZWFsIGV4cG9ydHMgaW4gdGhlIHdlZWsgd2VyZSA3MCwzNTEgdG9ubmVzIHZzIDEzNSw0NTIgdG9ubmVzIGEgd2VlayBhZ28gYW5kIGNvbXBhcmVkIHdpdGggNzYsMDY1IHRvbm5lcyBpbiB0aGUgeWVhci1hZ28gd2Vlay4gICAgIE5TUEEgc2FpZCB0aGUgZmlndXJlcyBpbmNsdWRlIG9ubHkgTlNQQSBtZW1iZXIgZmlybXMuICAgICBOU1BBIGdhdmUgdGhlIGZvbGxvd2luZyBicmVha2Rvd24gb2YgdGhlIHNveWJlYW4gY3J1c2ggZm9yIHRoZSB3ZWVrLCB3aXRoIGNvbXBhcmlzb25zLCBpbiAxLDAwMCBidTogICAgICAgICAgICAgICAgICAgICA0LzA4Lzg3ICAgNC8wMS84NyAgWUVBUi1BR08gICAgICAgICAgICBJbGxpbm9pcyAgIDIsNTc2ICAgIDMsNDc5ICAgICAgICBYICAgICAgIEluZCwgS3ksIE9oaW8gICAzLDU4NiAgICAzLDM3NiAgICA2LDA1My1ZICAgICAgICAgIFNvdXRoIEVhc3QgICAzLDg3MSAgICAzLDc5MSAgICAzLDA1OCAgICAgICBTb3V0aCBDZW50cmFsICAgMSw2MzEgICAgMSw5MzQgICAgMSw1NjMgICAgICAgICAgU291dGggV2VzdCAgIDIsNDI2ICAgIDIsMzM0ICAgIDIsMTgzICAgICAgICAgICAgICAgIElvd2EgICAzLDQ1MCAgICAzLDU1MCAgICAyLDgxNSAgICBNaW5uLCBOLkQuLCBTLkQuICAgMSw4NzUgICAgMSw2NTEgICAgMSw0ODggICAgICAgICAgVG90YWwgVS5TLiAgMTksNDE2ICAgMjAsMTE1ICAgMTcsMTYwICBYLUlsbCBub3QgcmVwb3J0ZWQgZXhjbHVzaXZlIG9mIEluZCwgS3kgYW5kIE9oaW8gaW4geWVhci1hZ28gcGVyaW9kLiBZLUluY2x1ZGVzIElsbC4gICAgICAgICAgICAgICAgICAgICAgIFJldXRlciAzOwoxOTg3MDQwOQlVU0RBIENPTU1FTlRTIE9OIEVYUE9SVCBTQUxFUyBSRVBPUlQgIFUuUy4gY29ybiBzYWxlcyBvZiBqdXN0IG92ZXIgMS4wIG1sbiB0b25uZXMgaW4gdGhlIHdlZWsgZW5kZWQgQXByaWwgMiB3ZXJlIGVpZ2h0IHBjdCBhYm92ZSB0aGUgcHJpb3Igd2VlaywgYnV0IDI1IHBjdCBiZWxvdyB0aGUgZm91ci13ZWVrIGF2ZXJhZ2UsIHRoZSBVLlMuIEFncmljdWx0dXJlIERlcGFydG1lbnQgc2FpZC4gICAgIEluIGNvbW1lbnRzIG9uIGl0cyBsYXRlc3QgRXhwb3J0IFNhbGVzIFJlcG9ydCwgdGhlIGRlcGFydG1lbnQgc2FpZCBJcmFxLCBKYXBhbiBhbmQgdGhlIFVTU1Igd2VyZSB0aGUgbGFyZ2VzdCBidXllcnMuICAgICBTYWxlcyBmb3IgdGhlIG5leHQgbWFya2V0aW5nIHllYXIsIHdoaWNoIGJlZ2lucyBTZXB0ZW1iZXIgMSwgdG90YWxlZCA1MDMsMjAwIHRvbm5lcyBhbmQgd2VyZSBtYWlubHkgdG8gSXJhcSBhbmQgVGFpd2FuLiAgICAgV2hlYXQgc2FsZXMgb2YgMTE5LDMwMCB0b25uZXMgZm9yIHRoZSBjdXJyZW50IHNlYXNvbiBhbmQgbmV0IHJlZHVjdGlvbnMgb2YgMTMsNzAwIHRvbm5lcyBmb3IgdGhlIDE5ODcvODggc2Vhc29uIHdlcmUgZm91ci1maWZ0aHMgYmVsb3cgdGhlIGNvbWJpbmVkIHRvdGFsIGZvciB0aGUgcHJpb3Igd2VlayBhbmQgdGhlIGZvdXItd2VlayBhdmVyYWdlLCBpdCBzYWlkLiAgICAgU3JpIExhbmthIHdhcyB0aGUgbW9zdCBhY3RpdmUgd2hlYXQgZGVzdGluYXRpb24gd2l0aCBwdXJjaGFzZXMgb2YgNTIsNTAwIHRvbm5lcyBmb3IgdGhlIGN1cnJlbnQgeWVhciwgaXQgc2FpZC4gICAgIE90aGVyIHNpZ25pZmljYW50IHB1cmNoYXNlcnMgZm9yIHRoZSBjdXJyZW50IHllYXIgd2VyZSBNZXhpY28gYW5kIEhvbmR1cmFzLCBpdCBzYWlkLiAgICAgU295YmVhbiBzYWxlcyBvZiAyNDAsNTAwIHRvbm5lcyB3ZXJlIG9uZS1maWZ0aCBiZWxvdyB0aGUgcHJpb3Igd2VlayBhbmQgbmVhcmx5IG9uZS10aGlyZCBiZWxvdyB0aGUgZm91ci13ZWVrIGF2ZXJhZ2UuICAgICBKYXBhbiwgTWV4aWNvLCBTb3V0aCBLb3JlYSwgSXRhbHkgYW5kIElzcmFlbCB3ZXJlIHRoZSBtYWpvciBwdXJjaGFzZXJzLCB0aGUgZGVwYXJ0bWVudCBzYWlkLiAgICAgTmV0IHNhbGVzIG9mIDExNyw3MDAgdG9ubmVzIG9mIHNveWJlYW4gY2FrZSBhbmQgbWVhbCBmZWxsIDMxIHBjdCBmcm9tIHRoZSBwcmV2aW91cyB3ZWVrIGFuZCAzOCBwY3QgYmVsb3cgdGhlIGZvdXItd2VlayBhdmVyYWdlLiBNYWpvciBpbmNyZWFzZXMgZm9yIFdlc3QgR2VybWFueSwgVmVuZXp1ZWxhLCB0aGUgTmV0aGVybGFuZHMgYW5kIFNhdWRpIEFyYWJpYSB3ZXJlIHBhcnRpYWxseSBvZmZzZXQgYnkgcmVkdWN0aW9ucyBmb3IgdW5rbm93biBkZXN0aW5hdGlvbnMsIFVTREEgc2FpZC4gICAgIEFjdGl2aXR5IGluIHNveWJlYW4gb2lsIHJlc3VsdGVkIGluIGRlY3JlYXNlcyBvZiAyLDQwMCB0b25uZXMsIHdpdGggc2FsZXMgdG8gdW5rbm93biBkZXN0aW5hdGlvbnMgZG93biBieSAyLDcwMCB0b25uZXMsIHdoaWxlIHNhbGVzIHRvIENhbmFkYSBpbmNyZWFzZWQgMjAwIHRvbm5lcywgdGhlIERlcGFydG1lbnQgc2FpZC4gICAgIENvbWJpbmVkIHNhbGVzIG9mIDcxLDMwMCBydW5uaW5nIGJhbGVzIG9mIGNvdHRvbiAtLSA2MCwyMDAgYmFsZXMgZm9yIHRoZSBjdXJyZW50IHNlYXNvbiBhbmQgMTEsMTAwIGJhbGVzIGZvciAxOTg3Lzg4IHNlYXNvbiAtLSB3ZXJlIGZvdXItZmlmdGhzIGhpZ2hlciB0aGFuIHRoZSBwcmlvciB3ZWVrJ3MgbGV2ZWwgYnV0IG5pbmUgcGN0IGJlbG93IHRoZSBmb3VyLXdlZWsgYXZlcmFnZS4gICAgIE1leGljbyB3YXMgdGhlIGRvbWluYW50IGJ1eWVyIGZvciB0aGUgY3VycmVudCB5ZWFyIGZvbGxvd2VkIGJ5IFphaXJlLCBJdGFseSwgYW5kIFNwYWluLCB0aGUgZGVwYXJ0bWVudCBzYWlkLiBUaGUgcHJpbWFyeSBidXllcnMgZm9yIHRoZSAxOTg3Lzg4IHNlYXNvbiB3ZXJlIFNvdXRoIEtvcmVhLCBTcGFpbiwgSmFwYW4gYW5kIFRhaXdhbiwgdGhlIGRlcGFydG1lbnQgc2FpZC4gICAgIFNvcmdodW0gc2FsZXMgb2YgMTQzLDMwMCB0b25uZXMgd2VyZSAyNSBwY3QgbGVzcyB0aGFuIHRoZSBwcmlvciB3ZWVrLCB3aXRoIEphcGFuIGFuZCBWZW5lenVlbGEgdGhlIG1haW4gYnV5ZXJzLiAgIFJldXRlciAzOwoxOTg3MDQwOQlVU0RBIEVTVElNQVRFUyBTT1ZJRVQgV0hFQVQsIENPQVJTRSBHUkFJTlMgVGhlIFUuUy4gQWdyaWN1bHR1cmUgRGVwYXJ0bWVudCBmb3JlY2FzdCB0aGUgU292aWV0IDE5ODYvODcgd2hlYXQgY3JvcCBhdCA5Mi4zMCBtbG4gdG9ubmVzLCB2cyA5Mi4zMCBtbG4gdG9ubmVzIGxhc3QgbW9udGguIEl0IHB1dCB0aGUgMTk4NS84NiBjcm9wIGF0IDc4LjEwIG1sbiB0b25uZXMsIHZzIDc4LjEwIG1sbiB0b25uZXMgbGFzdCBtb250aC4gICAgIFNvdmlldCAxOTg2Lzg3IGNvYXJzZSBncmFpbiBwcm9kdWN0aW9uIGlzIGVzdGltYXRlZCBhdCAxMDMuMzAgbWxuIHRvbm5lcywgdnMgMTAzLjMwIG1sbiB0b25uZXMgbGFzdCBtb250aC4gUHJvZHVjdGlvbiBpbiAxOTg1Lzg2IGlzIHByb2plY3RlZCBhdCA5OS45OSBtbG4gdG9ubmVzLCB2cyAxMDAuMDAgbWxuIHRvbm5lcyBsYXN0IG1vbnRoLiAgICAgVVNTUiB3aGVhdCBpbXBvcnRzIGFyZSBmb3JlY2FzdCBhdCAxNS4wMCBtbG4gdG9ubmVzIGluIDE5ODYvODcsIHZzIDE1LjAwIG1sbiB0b25uZXMgbGFzdCBtb250aC4gSW1wb3J0cyBpbiAxOTg1Lzg2IGFyZSBwdXQgYXQgMTUuNzAgbWxuIHRvbm5lcywgdnMgMTUuNzAgbWxuIHRvbm5lcyBsYXN0IG1vbnRoLiBVU0RBIGVzdGltYXRlZCBTb3ZpZXQgMTk4Ni84NyBjb2Fyc2UgZ3JhaW4gaW1wb3J0cyBhdCAxMi4wMCBtbG4gdG9ubmVzLCB2cyAxMC4wMCBtbG4gdG9ubmVzIGxhc3QgbW9udGgsIGFuZCAxOTg1Lzg2IGltcG9ydHMgYXQgMTMuNzAgbWxuIHRvbm5lcywgdnMgMTMuNzAgbWxuIHRvbm5lcyBsYXN0IG1vbnRoLiAgICAgVVNEQSBzYWlkIFNvdmlldCBjb2Fyc2UgZ3JhaW4gaW1wb3J0cyBpbmNsdWRlIDE5ODYvODcgY29ybiBpbXBvcnRzLCB3aGljaCBpdCBmb3JlY2FzdCBhdCA4LjAwIG1sbiB0b25uZXMsIHZzIDYuMDAgbWxuIHRvbm5lcyBsYXN0IG1vbnRoLiBDb3JuIGltcG9ydHMgaW4gMTk4NS84NiBhcmUgZXN0aW1hdGVkIGF0IDEwLjQwIG1sbiB0b25uZXMsIHZzIDEwLjQwIG1sbiBsYXN0IG1vbnRoLiAgICAgVG90YWwgU292aWV0IGdyYWluIGltcG9ydHMgaW4gMTk4Ni84NywgYXQgMjguMCBtbG4gdG9ubmVzLCBpbmNsdWRlIG9uZSBtbG4gdG9ubmVzIG9mIG1pc2NlbGxhbmVvdXMgZ3JhaW5zLiAgUmV1dGVyIDM7CjE5ODcwNDA5CVVTREEgRkxPUklEQSBPUkFOR0UgUkVQT1JUIENPTlNJREVSRUQgQkVBUklTSCBUaGUgVS5TLiBBZ3JpY3VsdHVyZSBEZXBhcnRtZW50J3MgbGF0ZXN0IGVzdGltYXRlcyBvbiAxOTg2Lzg3IEZsb3JpZGEgb3JhbmdlIHByb2R1Y3Rpb24gYW5kIG9yYW5nZSBqdWljZSB5aWVsZCBhcmUgYmVhcmlzaCBmb3IgdGhlIGZyb3plbiBjb25jZW50cmF0ZWQgb3JhbmdlIGp1aWNlIGZ1dHVyZXMgbWFya2V0IGJlY2F1c2UgdGhlIHlpZWxkIGluY3JlYXNlIHdhcyBncmVhdGVyIHRoYW4gZXhwZWN0ZWQsIEZDT0ogdHJhZGVycyBhbmQgYW5hbHlzdHMgc2FpZC4gICAgIFRoZSBVU0RBIHByb2plY3RlZCBhbiBhdmVyYWdlIHlpZWxkIG9mIDEuNTAgZ2FsbG9ucyBvZiBGQ09KIHBlciBib3ggdmVyc3VzIGxhc3QgbW9udGgncyBlc3RpbWF0ZSBvZiAxLjQ3IGdhbGxvbnMuICAgICBUaGUgZ292ZXJubWVudCBlc3RpbWF0ZWQgRmxvcmlkYSBvcmFuZ2UgcHJvZHVjdGlvbiAoZXhjbHVkaW5nIFRlbXBsZXMpIGF0IDEyMi45IG1sbiBib3hlcyB2ZXJzdXMgMTI0IG1sbiBsYXN0IG1vbnRoLiBUZW1wbGVzIHdlcmUgdW5jaGFuZ2VkIGF0IDMuNCBtbG4gYm94ZXMuICAgICBUcmFkZXJzIGFuZCBhbmFseXN0cyBzYWlkIHRoZSB1bmV4cGVjdGVkbHkgbGFyZ2UgeWllbGQgaW5jcmVhc2Ugb3V0d2VpZ2hlZCB0aGUgYW50aWNpcGF0ZWQgZHJvcCBpbiBib3ggY291bnQuICByZXV0ZXIgMzsKMTk4NzA0MDkJVVNEQSBGT1JFQ0FTVFMgQlJBWklML0FSR0VOVElORSBTT1lCRUFOIENST1BTIFRoZSBVLlMuIEFncmljdWx0dXJlIERlcGFydG1lbnQgZm9yZWNhc3QgQnJhemlsJ3MgMTk4Ni84NyBzb3liZWFuIGNyb3AgYXQgMTcuMDAgbWxuIHRvbm5lcywgdnMgMTcuMDAgZXN0aW1hdGVkIGxhc3QgbW9udGguIEl0IHB1dCB0aGUgMTk4NS84NiBjcm9wIGF0IDEzLjkwIG1sbiB0b25uZXMsIHZzIDEzLjcwIG1sbiBsYXN0IG1vbnRoLiAgICAgVGhlIGRlcGFydG1lbnQgZm9yZWNhc3QgQXJnZW50aW5hJ3MgMTk4Ni84NyBzb3liZWFuIGNyb3AgYXQgNy43MCBtbG4gdG9ubmVzLCB2cyA3LjcwIG1sbiBsYXN0IG1vbnRoLiBJdCBwcm9qZWN0ZWQgdGhlIDE5ODUvODYgY3JvcCBhdCA3LjMwIG1sbiB0b25uZXMsIHZzIDcuMzAgbWxuIGxhc3QgbW9udGguICAgICBCcmF6aWwncyAxOTg2Lzg3IHNveWJlYW4gZXhwb3J0cyB3ZXJlIGZvcmVjYXN0IGF0IDIuNTAgbWxuIHRvbm5lcywgdnMgMi41MCBtbG4gdG9ubmVzIGVzdGltYXRlZCBsYXN0IG1vbnRoLiBVU0RBIHByb2plY3RlZCAxOTg1Lzg2IGV4cG9ydHMgYXQgMS4yMCBtbG4gdG9ubmVzLCB2cyAxLjIwIG1sbiBsYXN0IG1vbnRoLiAgUmV1dGVyIDM7CjE5ODcwNDA5CVVTREEgT1JBTkdFIEpVSUNFIFlJRUxEIEVTVElNQVRFIFRoZSBVLlMuIEFncmljdWx0dXJlIERlcGFydG1lbnQgcHJvamVjdGVkIGFuIGF2ZXJhZ2UgeWllbGQgb2YgMS41MCBnYWxsb25zIG9mIGZyb3plbiBjb25jZW50cmF0ZWQgb3JhbmdlIGp1aWNlIHBlciBib3ggKDQyLjAgZGVncmVlIGJyaXggZXF1aXZhbGVudCkgZnJvbSBGbG9yaWRhJ3MgMTk4Ni84NyBjcm9wLiAgICAgVGhhdCBjb21wYXJlcyB3aXRoIDEuNDcgZ2FsbG9ucyBwZXIgYm94IHByZXZpb3VzbHkgYW5kIDEuMzggZ2FsbG9ucyBwZXIgYm94IGZyb20gdGhlIDE5ODUvODYgY3JvcC4gICAgIFRoZSBjcm9wIHJlcG9ydGluZyBib2FyZCBzYWlkIHRoZSBlc3RpbWF0ZXMgZm9yIHRoZSAxOTg2Lzg3IHNlYXNvbiBhcmUgYmFzZWQgb24gbWF0dXJpdHkgYW5kIHlpZWxkcyB0ZXN0cyBhcyBvZiBBcHJpbCAxLiAgUmV1dGVyIDM7CjE5ODcwNDA5CVVTREEgUkVQT1JUUyBFWFBPUlQgU0FMRVMgQUNUSVZJVFkgVGhlIFUuUy4gQWdyaWN1bHR1cmUgRGVwYXJ0bWVudCBzYWlkIHByaXZhdGUgVS5TLiBleHBvcnRlcnMgcmVwb3J0ZWQgc2FsZXMgb2YgMjAwLDAwMCB0b25uZXMgb2Ygd2hlYXQgdG8gSm9yZGFuLCAzMDAsMDAwIHRvbm5lcyBvZiBzb3liZWFuIG1lYWwgdG8gSXJhcSBhbmQgMTAwLDAwMCB0b25uZXMgb2YgY29ybiB0byBBbGdlcmlhLiAgICAgVGhlIHdoZWF0IGZvciBKb3JkYW4gaW5jbHVkZXMgMTY1LDAwMCB0b25uZXMgb2YgaGFyZCByZWQgd2ludGVyIGFuZCAzNSwwMDAgdG9ubmVzIG9mIHNvZnQgcmVkIHdpbnRlciBhbmQgaXMgZm9yIGRlbGl2ZXJ5IGR1cmluZyB0aGUgMTk4Ny84OCBtYXJrZXRpbmcgeWVhci4gICAgIFRoZSBzb3liZWFuIG1lYWwgc2FsZXMgdG8gSXJhcSBpbmNsdWRlcyAxODAsMDAwIHRvbm5lcyBmb3IgZGVsaXZlcnkgZHVyaW5nIHRoZSAxOTg2Lzg3IHNlYXNvbiBhbmQgMTIwLDAwMCB0b25uZXMgZHVyaW5nIHRoZSAxOTg3Lzg4IHNlYXNvbiwgdGhlIGRlcGFydG1lbnQgc2FpZC4gICAgIFRoZSAxMDAsMDAwIHRvbm5lcyBvZiBjb3JuIHNhbGVzIHRvIEFsZ2VyaWEgYXJlIGZvciBkZWxpdmVyeSBkdXJpbmcgdGhlIDE5ODYvODcgc2Vhc29uLCBpdCBzYWlkLiAgICAgVGhlIG1hcmtldGluZyB5ZWFyIGZvciB3aGVhdCBiZWdpbnMgSnVuZSAxLCBjb3JuIFNlcHRlbWJlciAxLCBhbmQgc295YmVhbiBtZWFsIE9jdG9iZXIgMS4gIFJldXRlciAzOwoxOTg3MDQwOQlVU0RBIFJFVklTRVMgMTk4NiBTVU1NRVIgUE9UQVRPRVMgVGhlIFUuUy4gQWdyaWN1bHR1cmUgRGVwYXJ0bWVudCBtYWRlIHRoZSBmb2xsb3dpbmcgcmV2aXNpb25zIGZvciAxOTg2IGNyb3Agc3VtbWVyIHBvdGF0b2VzIC0tICAgICBQcm9kdWN0aW9uIC0tIDIxLDAwMywwMDAgY3d0ICgxMDAgbGJzKSwgdnMgMjAsOTAwLDAwMCBjd3QgZXN0aW1hdGVkIHByZXZpb3VzbHkuICAgICBBY3JlYWdlIGZvciBoYXJ2ZXN0IC0tIDk1LDcwMCBhY3JlcywgdnMgOTUsODAwIGFjcmVzIGVzdGltYXRlZCBwcmV2aW91c2x5LiAgICAgWWllbGQgcGVyIGhhcnZlc3RlZCBhY3JlIC0tIDIxOSBjd3QgcGVyIGFjcmUsIHZzIDIxOCBjd3QgcGVyIGFjcmUgcHJldmlvdXNseSBlc3RpbWF0ZWQsIHRoZSBkZXBhcnRtZW50IHNhaWQuICBSZXV0ZXIgMzsKMTk4NzA0MDkJVVNEQSBTUFJJTkcgUE9UQVRPIEVTVElNQVRFUyBUaGUgVS5TLiBBZ3JpY3VsdHVyZSBEZXBhcnRtZW50IGVzdGltYXRlZCAxOTg3IHNwcmluZyBwb3RhdG8gcHJvZHVjdGlvbiwgYmFzZWQgb24gQXByaWwgMSBjb25kaXRpb25zLCBhdCAxOSwyNjcsMDAwIGN3dHMgKDEwMCBsYnMpLCB2cyAxOSw4MjIsMDAwIGN3dHMgaW5kaWNhdGVkIGxhc3QgeWVhci4gICAgIFRoZSBkZXBhcnRtZW50IGVzdGltYXRlZCBzcHJpbmcgcG90YXRvIGFyZWEgZm9yIGhhcnZlc3QgYXQgNzksMTAwIGFjcmVzLCB2cyA3Niw3MDAgYWNyZXMgZXN0aW1hdGVkIGxhc3QgbW9udGggYW5kIDc1LDkwMCBhY3JlcyBoYXJ2ZXN0ZWQgbGFzdCB5ZWFyLiAgICAgU3ByaW5nIHBvdGF0byB5aWVsZCBwZXIgaGFydmVzdGVkIGFjcmUgaXMgZm9yZWNhc3QgYXQgMjQ0IGN3dCBwZXIgYWNyZSwgdnMgMjYxIGN3dCBwZXIgYWNyZSBhIHllYXIgYWdvLCBVU0RBIHNhaWQuICBSZXV0ZXIgMzsKMTk4NzA0MDkJVVNTUiBBRERTIFUuUy4gQ09STiBUTyBDT01NSVRNRU5UUyAtIFVTREEgVGhlIFNvdmlldCBVbmlvbiBoYXMgYWRkZWQgMTc1LDYwMCB0b25uZXMgb2YgVS5TLiBjb3JuIHRvIGl0cyBwcmV2aW91cyBjb21taXRtZW50cyBmb3IgZGVsaXZlcnkgaW4gdGhlIGZvdXJ0aCB5ZWFyIG9mIHRoZSBVLlMuLVVTU1IgR3JhaW4gU3VwcGx5IEFncmVlbWVudCwgd2hpY2ggYmVnYW4gT2N0b2JlciAxLCAxOTg2LCB0aGUgVS5TLiBBZ3JpY3VsdHVyZSBEZXBhcnRtZW50IHNhaWQuICAgICBBY2NvcmRpbmcgdG8gdGhlIGRlcGFydG1lbnQncyBFeHBvcnQgU2FsZXMgUmVwb3J0LCBjb3ZlcmluZyB0cmFuc2FjdGlvbnMgaW4gdGhlIHdlZWsgZW5kZWQgQXByaWwgMiwgY29ybiB0cmFuc2FjdGlvbnMgY29uc2lzdGVkIG9mIDE0MCw2MDAgdG9ubmVzIG9mIG5ldyBzYWxlcyBhbmQgY2hhbmdlcyBpbiBkZXN0aW5hdGlvbnMgZm9yIDM1LDAwMCB0b25uZXMuICAgICBUb3RhbCBjb3JuIGNvbW1pdG1lbnRzIHRvIHRoZSBVU1NSICBmb3IgZGVsaXZlcnkgaW4gdGhlIGZvdXJ0aCBhZ3JlZW1lbnQgeWVhciBhbW91bnQgdG8gMiw4MjUsNjAwIHRvbm5lcy4gVGhlIFNvdmlldHMgaGF2ZSBub3QgcHVyY2hhc2VkIHdoZWF0IG9yIHNveWJlYW5zIGluIHRoZSBmb3VydGggeWVhciBvZiB0aGUgYWdyZWVtZW50LiAgUmV1dGVyIDM7CjE5ODcwNDA5CVZBTEVYIFBFVFJPTEVVTSBJTkMgPFZBTFA+IFlFQVIgREVDIDMxIFNociBsb3NzIHNpeCBjdHMgdnMgbG9zcyA4NCBjdHMgICAgIE5ldCBsb3NzIDIxOSw2MzIgdnMgbG9zcyAxNi4zIG1sbiAgICAgUmV2cyAxLjQgbWxuIHZzIDIuOCBtbG4gICAgIE5PVEU6MTk4NSBuZXQgaW5jbHVkZXMgMTUuNSBtbG4gZGxycyBvZiB3cml0ZWRvd25zIGFuZCB0YXggYmVuZWZpdCBvZiA1MSwyOTQuICAgICAgUmV1dGVyIDM7CjE5ODcwNDA5CVZMU0kgPFZMU0k+IFBMQU5TIERFQlQgT0ZGRVJJTkcgVkxTSSBUZWNobm9sb2d5IEluYyBzYWlkIGl0IHBsYW5zIHRvIGZpbGUgYSByZWdpc3RyYXRpb24gc3RhdGVtZW50IHdpdGggdGhlIFNlY3VyaXRpZXMgYW5kIEV4Y2hhbmdlIENvbW1pc3Npb24gaW4gbWlkLUFwcmlsIGNvdmVyaW5nIGEgcHJvcG9zZWQgdW5kZXJ3cml0dGVuIHB1YmxpYyBvZmZlcmluZyBvZiA1MCBtbG4gZGxycyBwcmluY2lwYWwgYW1vdW50IG9mIGNvbnZlcnRpYmxlIHN1Ym9yZGluYXRlZCBkZWJlbnR1cmVzLiAgICAgVGhlIGNvbXBhbnkgc2FpZCBpdCBwbGFucyB0byB1c2UgcHJvY2VlZHMgZnJvbSB0aGUgb2ZmZXJpbmcgdG8gZnVuZCBncm93dGggYW5kIGZvciBjYXBpdGFsIGV4cGVuZGl0dXJlcyBhc3NvY2lhdGVkIHdpdGggaW5jcmVhc2luZyBtYW51ZmFjdHVyaW5nIGNhcGFjaXR5LiAgUmV1dGVyIDM7CjE5ODcwNDA5CVZMU0kgVEVDSE5PTE9HWSBJTkMgPFZMU0k+IDFTVCBRVFIgTkVUIFNociBzZXZlbiBjdHMgdnMgc2l4IGN0cyAgICAgTmV0IDEsNjEyLDAwMCB2cyAxLDQwNiwwMDAgICAgIFJldnMgMzguMiBtbG4gdnMgMzQuMyBtbG4gICAgIEF2ZyBzaHJzIDIzLDc0MiwwMDAgdnMgMjIsOTQ1LDAwMCAgUmV1dGVyIDM7CjE5ODcwNDA5CVZPTEtTV0FHRU4gRElWSURFTkQgVU5DSEFOR0VEIE9OIDE5ODYgRGl2aWRlbmQgb24gMTk4NiBidXNpbmVzcyB1bmNoYW5nZWQgYXQgMTAgbWFya3MgcGVyIG9yZGluYXJ5IHNoYXJlLiBDb21wYW55IGFsc28gc2V0IGRpdmlkZW5kIG9mIDExIG1hcmtzIGZvciBuZXcgcHJlZmVyZW5jZSBzaGFyZXMsIHdoaWNoIHdlcmUgaXNzdWVkIGxhc3QgeWVhci4gICAgIChOb3RlOiBDb21wYW55IGhhcyBzYWlkIHByb2ZpdCB3aWxsIG1hdGNoIDE5ODUgbGV2ZWwsIGRlc3BpdGUgcHJvdmlzaW9ucyBvZiA0ODAgbWxuIG1hcmtzIGNvbm5lY3RlZCB3aXRoIGFsbGVnZWQgY3VycmVuY3kgZnJhdWQuIEdyb3VwIG5ldCBwcm9maXQgaW4gMTk4NSB3YXMgNTk2IG1sbiBtYXJrcywgcGFyZW50IGNvbXBhbnkgbmV0IHdhcyA0NzcgbWxuIG1hcmtzLiBDb21wYW55J3MgZnVsbCBuYW1lIGlzIFZvbGtzd2FnZW4gQUcgPFZPV0cuRj4pLiAgUkVVVEVSIDM7CjE5ODcwNDA5CVZXIFNBWVMgNDgwIE1MTiBNQVJLUyBNQVhJTVVNIEZPUiBDVVJSRU5DWSBMT1NTRVMgTG9zc2VzIGZvciBWb2xrc3dhZ2VuIEFHIDxWT1dHLkY+LCBWVywgbGlua2VkIHRvIGFuIGFsbGVnZWQgZm9yZWlnbiBjdXJyZW5jeSBmcmF1ZCB3aWxsIG5vdCBleGNlZWQgdGhlIDQ4MCBtbG4gbWFya3MgcHJvdmlzaW9uIGFscmVhZHkgbWFkZSwgYSBWVyBzcG9rZXNtYW4gc2FpZC4gICAgIFRoZSBzcG9rZXNtYW4gd2FzIGNvbW1lbnRpbmcgYWZ0ZXIgVlcgaGFkIGNvbmZpcm1lZCBpdCB3b3VsZCBwYXkgYW4gdW5jaGFuZ2VkIDEwIG1hcmsgZGl2aWRlbmQgZm9yIG9yZGluYXJ5IHNoYXJlcyBvbiAxOTg2IGJ1c2luZXNzLCBkZXNwaXRlIHRoZSBwcm92aXNpb24uICAgICBPbmUgV2VzdCBHZXJtYW4gbmV3c3BhcGVyIHRvZGF5IHF1b3RlZCBmb3JlaWduIGN1cnJlbmN5IGRlYWxlcnMgaW4gRnJhbmtmdXJ0IGFzIHNwZWN1bGF0aW5nIHRoYXQgdGhlIHRvdGFsIGxvc3NlcyBmcm9tIHRoZSBjdXJyZW5jeSBhZmZhaXIgY291bGQgYmUgYXMgaGlnaCBhcyAxLjUgYmlsbGlvbiBtYXJrcywgYnV0IHRoZSBWVyBzcG9rZXNtYW4gZGVzY3JpYmVkIDQ4MCBtbG4gbWFya3MgYXMgYW4gInVwcGVyIGxpbWl0LiIgICAgIFZXIHNhaWQgaW4gYSBzdGF0ZW1lbnQgZm9sbG93aW5nIHRvZGF5J3Mgc3VwZXJ2aXNvcnkgYm9hcmQgbWVldGluZyB0aGF0IGl0IGhhZCBkaXNjdXNzZWQgdGhlIGZvcmVpZ24gY3VycmVuY3kgc2NhbmRhbCBpbiBkZXRhaWwsIGFuZCB3YXMgc2V0dGluZyB1cCBhIG5ldyBwcm9iZSBpbnRvIGl0cyBmb3JlaWduIGN1cnJlbmN5IGFjdGl2aXRpZXMgdG8gYmUgY2FycmllZCBvdXQgYnkgYW4gdW5uYW1lZCBhdWRpdGluZyBjb21wYW55LiAgICAgVlcgaGFzIHNhaWQgY29tcHV0ZXIgcHJvZ3JhbXMgd2VyZSBlcmFzZWQgYW5kIGRvY3VtZW50cyB3ZXJlIGZha2VkIGluIHRoZSBhbGxlZ2VkIGZyYXVkIGluIHdoaWNoIGl0IGJlbGlldmVzIHRyYW5zYWN0aW9ucyBpbnRlbmRlZCB0byBwcm90ZWN0IGl0IGFnYWluc3QgcG9zc2libGUgZm9yZWlnbiBjdXJyZW5jeSBsb3NzZXMgd2VyZSBub3QgY29tcGxldGVkLiAgICAgVlcncyBmb3JtZXIgZm9yZWlnbiBjdXJyZW5jeSBjaGllZiBCdXJraGFyZCBKdW5nZXIgd2FzIGFycmVzdGVkIG9uIE1vbmRheSBvbiBzdXNwaWNpb24gb2YgZW1iZXp6bGVtZW50IGFuZCBvZiBoYXZpbmcgZXZhZGVkIGp1c3RpY2UuICAgICBFYXJsaWVyIFZXIGhhZCBzYWlkIHRoYXQgaXRzIDE5ODYgcmVzdWx0cyB3b3VsZCBtYXRjaCAxOTg1IHByb2ZpdHMuIFZXJ3MgZ3JvdXAgbmV0IHByb2ZpdCBpbiAxOTg1IHdhcyA1OTYgbWxuIG1hcmtzIGFuZCBwYXJlbnQgY29tcGFueSBuZXQgd2FzIDQ3NyBtbG4gbWFya3MuIEl0IGFsc28gc2FpZCBpdCByZWNvbW1lbmQgYW4gdW5jaGFuZ2VkIGRpdmlkZW5kIHRvIHRoZSBzdXBlcnZpc29yeSBib2FyZC4gVGhlIGNvbXBhbnkgaGFzIGFsc28gc2V0IGEgZGl2aWRlbmQgb2YgMTEgbWFya3MgZm9yIG5ldyBwcmVmZXJlbmNlIHNoYXJlcywgd2hpY2ggd2VyZSBpc3N1ZWQgbGFzdCB5ZWFyLiBBbmFseXN0cyBoYXZlIGRlc2NyaWJlZCB0aGUgaGVsZCBkaXZpZGVuZCBhcyBhIG1vdmUgdG8gcmVhc3N1cmUgd29ycmllZCBzaGFyZWhvbGRlcnMuICAgICBWVyBpbmNyZWFzZWQgbm9taW5hbCBjYXBpdGFsIGJ5IDMwMCBtYXJrcyBsYXN0IHllYXIgdG8gMS41IGJpbGxpb24gbWFya3MsIHdpdGggdGhlIHJlc3VsdCB0aGF0IGl0cyB0b3RhbCBkaXZpZGVuZCBwYXltZW50IG9uIDE5ODYgd2lsbCBiZSAzMDYgbWxuIG1hcmtzIGNvbXBhcmVkIHdpdGggMjQwIG1sbiBvbiAxOTg1LCBzaW5jZSB0aGUgbmV3IGNhcGl0YWwgd2FzIGluIHByZWZlcmVuY2Ugc2hhcmVzLiAgICAgVGhlIHNoYXJlIGFuYWx5c3RzIHNheSBWVyB3aWxsIGhhdmUgdG8gZGlnIGludG8gcmVzZXJ2ZXMgaW4gb3JkZXIgdG8gbWFpbnRhaW4gdGhlIGRpc2Nsb3NlZCAxOTg2IHByb2ZpdCBhdCAxOTg1IGxldmVscy4gQXQgdGhlIGVuZCBvZiAxOTg1LCBWVyBoYWQgcGFyZW50IGNvbXBhbnkgcmVzZXJ2ZXMgb2Ygc2xpZ2h0bHkgbGVzcyB0aGFuIHRocmVlIGJpbGxpb24gbWFya3MuICBSRVVURVIgMzsKMTk4NzA0MDkJV0FMTCBTVFJFRVQgU1RPQ0tTL1VBTCBJTkMgPFVBTD4gVGFrZW92ZXIgc3BlY3VsYXRpb24gY29udGludWVzIHRvIGZ1ZWwgaGVhdnkgdHJhZGluZyBpbiBVQUwgSW5jLCB0cmFkZXJzIHNhaWQuICAgICBVQUwgcm9zZSAxLTUvOCB0byA3My01Lzggb24gdm9sdW1lIG9mIG1vcmUgdGhhbiB0d28gbWxuIHNoYXJlcywgYWZ0ZXIgdHJhZGluZyB3aXRoIGxpdHRsZSB1cHdhcmQgbW92ZW1lbnQgZWFybGllciBpbiB0aGUgc2Vzc2lvbi4gICAgIFRyYWRlcnMgc2FpZCBydW1vcnMsIHdoaWNoIGJlZ2FuIHllc3RlcmRheSwgYWRkZWQgdG8gc3BlY3VsYXRpb24gdGhhdCB0aGUgY29tcGFueSB3b3VsZCBiZSB0aGUgdGFyZ2V0IG9mIGEgdGFrZW92ZXIuICAgICBUaGV5IHNhaWQgaXQgd2FzIGJlbGlldmVkIENvbmlzdG9uIFBhcnRuZXJzIGFuZCB0aGUgUHJpdHprZXIgZmFtaWx5IG9mIENoaWNhZ28gd2VyZSBidXlpbmcgdGhlIHN0b2NrLiAgICAgQ29uaXN0b24gZGVjbGluZWQgY29tbWVudCBhbmQgdGhlIFByaXR6a2VycyBoYWQgbm8gY29tbWVudC4gICAgIFRyYWRlcnMgc2FpZCB0aGVyZSB3YXMgc3BlY3VsYXRpb24gYSBiaWRkZXIgbWlnaHQgYXBwZWFyLCBhbmQgYWxzbyB0aGF0IHJlYWwgZXN0YXRlIGRldmVsb3BlciBEb25hbGQgVHJ1bXAsIHdobyBob2xkcyBhIHN0YWtlIGluIFVBTCwgbWlnaHQgcGFydGljaXBhdGUgaW4gYSB0YWtlb3ZlciBiaWQuIFVBTCBwaWxvdHMgc2FpZCB0aGV5IHdvdWxkIGJlIHdpbGxpbmcgdG8gcGF5IDQuNSBiaWxsaW9uIGRscnMsIHdoaWNoIGluY2x1ZGVzIGRlYnQsIGZvciB0aGUgY29tcGFueSdzIFVuaXRlZCBBaXJsaW5lcyB1bml0LiAgUmV1dGVyIDM7CjE5ODcwNDA5CVdBTkcgPFdBTj4gU0lHTlMgTUFSS0VUSU5HIEFHUkVFTUVOVCBXYW5nIExhYm9yYXRvcmllcyBzYWlkIGl0IHNpZ25lZCBhbiBhZ3JlZW1lbnQgd2l0aCA8RGVzayBUb3AgRmluYW5jaWFsIFNvbHV0aW9ucyBJbmM+IGdpdmluZyBXYW5nIHRoZSByaWdodCB0byBtYXJrZXQgdGhlIERlc2sgVG9wIEZpbmFuY2lhbCBQbGFubmluZyBTeXN0ZW0gZm9yIFdhbmcncyBPZmZpY2UgSW5mb3JtYXRpb24gU3lzdGVtcyAoT0lTKSBwcm9kdWN0IGxpbmUuICAgICBXYW5nIHNhaWQgdGhlIERlc2sgVG9wIEZpbmFuY2lhbCBQbGFubmluZyBTeXN0ZW0gZm9yIGl0cyBPSVMgY29tZXMgaW4gdHdvIGJhc2ljIHBhY2thZ2VzIC0tIHRoZSBBZHZhbmNlZCBQbGFubmluZyBTeXN0ZW0sIHByaWNlZCBhdCAyLDk5NSBkbHJzLCBhbmQgdGhlIEJ1ZGdldCBSZXBvcnRpbmcgU3lzdGVtLCBwcmljZWQgYXQgMSw5OTUgZGxycy4gICAgIEJvdGggYXJlIGF2aWFsYWJsZSBvbiBlaWdodCBpbmNoIGFuZCA1LTEvNCBpbmNoIGRpc2tldHRlcywgV2FuZyBzYWlkLiAgUmV1dGVyIDM7CjE5ODcwNDA5CVdBU0hJTkdUT04gRkVERVJBTCBTQVZJTkdTIDxXRlNMPiAyTkQgUVRSIE5FVCBRdHIgZW5kcyBNYXJjaCAzMSAgICAgU2hyIG9uZSBkbHIgdnMgNzYgY3RzICAgICBOZXQgMTEuOSBtbG4gdnMgOCw5MjksMDAwICAgICBTaXggbXRocyAgICAgU2hyIDEuOTIgZGxycyB2cyAxLjQzIGRscnMgICAgIE5ldCAyMi44IG1sbiB2cyAxNi44IG1sbiAgICAgTk9URTogZnVsbCBuYW1lIG9mIGJhbmsgaXMgd2FzaGluZ3RvbiBmZWRlcmFsIHNhdmluZ3MgYW5kIGxvYW4gYXNzb2NpYXRpb24uICBSZXV0ZXIgMzsKMTk4NzA0MDkJV0VBVEhFUiBIVVJUUyBJVEFMSUFOIE9SQU5HRVMgLSBVU0RBIFJFUE9SVCBVbmZhdm9yYWJsZSB3ZWF0aGVyIGNvbmRpdGlvbnMgZHVyaW5nIHRoZSBzZWNvbmQgd2VlayBvZiBNYXJjaCBjYXVzZWQgZGFtYWdlIHRvIG9yYW5nZXMgaW4gdGhlIENhbGFicmlhIHJlZ2lvbiBpbiBzb3V0aGVybiBJdGFseSwgdGhlIFUuUy4gQWdyaWN1bHR1cmUgRGVwYXJ0bWVudCdzIG9mZmljZXIgaW4gUm9tZSBzYWlkIGluIGEgZmllbGQgcmVwb3J0LiAgICAgVGhlIHJlcG9ydCwgZGF0ZWQgQXByaWwgMywgc2FpZCB0aGUgcmVnaW9uIGFjY291bnRzIGZvciBhYm91dCAyMiwwMDAgaGVjdGFyZXMgb2YgdGhlIEl0YWxpYW4gb3JhbmdlIGNyb3Agb3IgYWJvdXQgMjYgcGN0IG9mIHRvdGFsIHByb2R1Y3Rpb24uICAgICBIb3dldmVyLCBvcmFuZ2UgcHJvZHVjdGlvbiBpbiB0aGUgcmVnaW9uIGZvciBtYXJrZXRpbmcgeWVhciAxOTg2Lzg3IGlzIGZvcmVjYXN0IGF0IDU2NSwwMDAgdG9ubmVzIG9yIDI1IHBjdCBvZiB0aGUgdG90YWwgSXRhbGlhbiBvcmFuZ2UgY3JvcCwgaXQgc2FpZC4gICAgIFRoZSByZXBvcnQgc2FpZCB0cmFkZSBjb250YWN0cyBhZ3JlZSB0aGF0IGFib3V0IDE1IHBjdCBvZiB0aGUgb3JhbmdlIG91dHB1dCBpbiBDYWxhYnJpYSB3YXMgZGFtYWdlZCBieSBmcm9zdC4gIFJldXRlciAzOwoxOTg3MDQwOQlXRUVLTFkgQ0FSIFBST0RVQ1RJT04gRVNUSU1BVEVEIExPV0VSIFdpdGggc2V2ZW4gY2FyIGFzc2VtYmx5IHBsYW50cyBkb3duIHRoaXMgd2VlaywgaW5jbHVkaW5nIHNpeCBhdCBHZW5lcmFsIE1vdG9ycyBDb3JwIDxHTT4sIFUuUy4gY2FybWFrZXJzIGFyZSBleHBlY3RlZCB0byBidWlsdCBhbiBlc3RpbWF0ZWQgMTYwLDExMSBjYXJzIGZvciB0aGUgd2VlayBlbmRpbmcgQXByaWwgMTEsIGRvd24gZnJvbSAxNzcsNjg3IGEgeWVhciBhZ28sIHNhaWQgdGhlIHRyYWRlIHB1YmxpY2F0aW9uIFdhcmQncyBBdXRvbW90aXZlIFJlcG9ydHMuICAgICBZZWFyIHRvIGRhdGUsIGl0IGVzdGltYXRlZCBkb21lc3RpYyBjYXIgb3V0cHV0IGF0IDIsMzM0LDUyOCwgZG93biBmcm9tIDIsNDQyLDIyMSBpbiB0aGUgc2FtZSAxOTg2IHBlcmlvZC4gICAgIEl0IHByb2plY3RlZCB0aGUgd2Vla3MgdHJ1Y2sgb3V0cHV0IGF0IDgwLDE2OCwgdXAgZnJvbSA3MiwwMjYgYSB5ZWFyIGVhcmxpZXIuIEN1bXVsYXRpdmUgdHJ1Y2sgc2FsZXMgd2VyZSBwZWdnZWQgYXQgMSwwOTYsNzMyLCB1cCBmcm9tIDEsMDExLDAyOSBhIHllYXIgYWdvLiAgICAgIFJldXRlciAzOwoxOTg3MDQwOQlXRVNUIEdFUk1BTiBCRUVUIFBMQU5USU5HUyBERUxBWUVEIFRIUkVFIFdFRUtTIFVuc2Vhc29uYWwgY29sZCB3ZWF0aGVyIGhhcyBkZWxheWVkIHN1Z2FyIGJlZXQgcGxhbnRpbmdzIGluIFdlc3QgR2VybWFueSBieSB1cCB0byB0aHJlZSB3ZWVrcywgdGhlIGFncmljdWx0dXJlIG1pbmlzdHJ5IHNhaWQuICAgICBBIG1pbmlzdHJ5IHNwb2tlc21hbiBzYWlkIGluIHNvbWUgY2VudHJhbCBhcmVhcywgZXNwZWNpYWxseSBpbiB0aGUgUmhpbmVsYW5kLCBmYXJtZXJzIGhhdmUgdGFrZW4gYWR2YW50YWdlIG9mIHdhcm1lciB3ZWF0aGVyIGFuZCBzdGFydGVkIHBsYW50aW5ncyBpbiB0aGUgcGFzdCB0d28gZGF5cy4gICAgIFdlc3QgR2VybWFuIHBsYW50aW5nIGludGVudGlvbnMgdGhpcyB5ZWFyIGFyZSBwdXQgYXQgMzgxLDAwMCBoZWN0YXJlcywgZG93biBmcm9tIDM5MCw1MDAgaGEgbGFzdCB5ZWFyLCBoZSBzYWlkLCBhZGRpbmcgdGhhdCB0aGUgMTk4MC8xOTg1IGF2ZXJhZ2Ugd2FzIDQwNSwwMDAgaGEuICBSRVVURVIgMzsKMTk4NzA0MDkJV0VTVCBHRVJNQU5ZJ1MgVEhFU0lORyBJU1NVRVMgMTAgTUxOIFNGUiBCT05EIDxUaGVzaW5nLVZlcndhbHR1bmdzZ2VzZWxsc2NoYWZ0IEdtYkg+IG9mIENvZXNmZWxkLCBXZXN0IEdlcm1hbnksIGlzIGlzc3VpbmcgYSAxMCBtbG4gU3dpc3MgZnJhbmMgZWlnaHQgeWVhciBib25kIHdpdGggYW4gaW5kaWNhdGVkIDYtMy84IHBjdCBjb3Vwb24gYW5kIHBhciBpc3N1ZSBwcmljZSwgam9pbnQgbGVhZCBtYW5hZ2VycyBGaW50cmVsZXggU0EgYW5kIEUuR3V0endpbGxlciB1bmQgQ2llLCBCYW5xdWllcnMgc2FpZC4gICAgIFN1YnNjcmlwdGlvbiBpcyBmcm9tIE1heSA3IHVudGlsIE1heSAxMy4gICAgIFRoZSBpc3N1ZSBpcyBndWFyYW50ZWVkIGJ5IFNjaGFsbHBsYXR0ZW50cnVoZSBBLiBUaGVzaW5nIEdtYkggdW5kIENvIEtvbW1hbmRpdGdlc2VsbHNjaGFmdCwgTWFydGluIFRoZXNpbmcgSGFuZGVsc2dlc2VsbHNjaGFmdC4gIFJFVVRFUiAzOwoxOTg3MDQwOQlXRVNURVJOIEZFREVSQUwgU0FWSU5HUyBCQU5LIDxXRlBSPiAxU1QgUVRSIE5FVCBTaHIgNzQgY3RzIHZzIDkyIGN0cyAgICAgTmV0IDEsMzAwLDQ1MCB2cyAxLDYwMCwyNTggICAgIE5PVEU6IFNoYXJlIGFkanVzdGVkIGZvciAxMCBwY3Qgc3RvY2sgZGl2aWRlbmQgaW4gSnVseSAxOTg2LiAgICAgQ29tcGFueSBiYXNlZCBpbiBNYXlhZ3VleiwgUHVlcnRvIFJpY28uICBSZXV0ZXIgMzsKMTk4NzA0MDkJV0VTVElOR0hPVVNFIEVMRUNUUklDIDxXWD4gT1BUSU1JU1RJQyBGT1IgWUVBUiBXZXN0aW5naG91c2UgRWxlY3RyaWMgQ29ycCBjaGFpcm1hbiBEb3VnbGFzIERhbmZvcnRoIHNhaWQgaGUgd2FzIGVuY291cmFnZWQgYnkgZmlyc3QgcXVhcnRlciByZXN1bHRzIGZvciBmaXNjYWwgMTk4NywgYW5kIHNhaWQgdGhlIGNvbXBhbnkgd2FzIHBvc2l0aW9uZWQgdG8gY2FwaXRhbGl6ZSBvbiB0aGUgZWNvbm9teSdzIG1vZGVzdCBncm93dGggZm9yIHRoZSByZXN0IG9mIHRoZSB5ZWFyLiAgICAgIkkgYW0gZW5jb3VyYWdlZCBieSB0aGUgY29udGludWluZyBpbXByb3ZlbWVudCBpbiBlYXJuaW5ncywiIERhbndvcnRoIHNhaWQuICJUaGUgZmlyc3QgcXVhcnRlciBtZXQgb3VyIGV4cGVjdGF0aW9ucy4iICAgICBXZXN0aW5naG91c2UgcmVjb3JkZWQgbmV0IGluY29tZSBmb3IgdGhlIGZpcnN0IHF1YXJ0ZXIgb2YgMTUxLjYgbWxuIGRscnMsIG9yIDEuMDUgZGxycyBwZXIgc2hhcmUsIG9uIHJldmVudWVzIG9mIDIuMzIgYmlsbGlvbiBkbHJzLiAgICAgRGFud29ydGggYXR0cmlidXRlZCB0aGUgcmVzdWx0cyB0byBhbiBpbmNyZWFzZSBpbiB0aGUgb3BlcmF0aW5nIHByb2ZpdCBpbiB0aGUgZW5lcmd5IGFuZCBhZHZhbmNlZCB0ZWNobm9sb2d5LCBpbmR1c3RyaWVzIGFuZCBjb21tZXJpY2FsIHNlZ21lbnRzLiAgUmV1dGVyIDM7CjE5ODcwNDA5CVdJTk4gRU5URVJQUklTRVMgPFdOTj4gVU5JVCBTRUxMUyBEQUlSWSBXaW5uIEVudGVycHJpc2VzJyBLbnVkc2VuIEZvb2RzIEluYyBzYWlkIGl0IGVudGVyZWQgYW4gYWdyZWVtZW50IHRvIHNlbGwgaXRzIEhhd2FpaWFuIGRhaXJ5IG9wZXJhdGlvbnMgdG8gRm9yZW1vc3QgRm9vZHMgSW5jIGZvciAxMyBtbG4gZGxycyBjYXNoLiAgICAgIFRoZSBjb21wYW55IHNhaWQgdGhlIHB1cmNoYXNlIHByaWNlIGlzIHN1YmplY3QgdG8gYWRqdXN0bWVudCBhbmQgdGhlIGVudGlyZSB0cmFuc2FjdGlvbiBpcyBzdWJqZWN0IHRvIGFwcHJvdmFsIGJ5IHRoZSBVLlMuIEJhbmtydXB0Y3kgQ291cnQgZm9yIHRoZSBDZW50cmFsIERpc3RyaWN0IG9mIENhbGlmb3JuaWEuICBSZXV0ZXIgMzsKMTk4NzA0MDkJV0lOVEVSSEFMVEVSIDxXTlRMQz4gSE9MREVSUyBPS0FZIFRBS0VPVkVSIFdpbnRlcmhhbHRlciBJbmMgc2FpZCBpdHMgc2hhcmVob2xkZXJzIGFwcHJvdmVkIHRoZSA1MjUsMDAwIGRsciBhY3F1aXNpdGlvbiBvZiBXaW50ZXJoYWx0ZXIgYnkgSW50ZXJmYWNlIFN5c3RlbXMgSW5jIDxJTlRGPi4gICAgIFRoZSBhY3F1aXNpdGlvbiB3b3VsZCBiZSBmb3IgMTUgY3RzIHBlciBXaW50ZXJoYWx0ZXIgc2hhcmUuICBSZXV0ZXIgMzsKMTk4NzA0MDkJV09STEQgQkFOSyBUTyBTVVBQT1JUIFNSSSBMQU5LQSBJRiBERUZJQ0lUUyBDVVQgVGhlIFdvcmxkIEJhbmsgd2lsbCBzdXBwb3J0IFNyaSBMYW5rYSdzIGRldmVsb3BtZW50IHByb2dyYW0gcHJvdmlkZWQgdGhlIGNvdW50cnkgcmVkdWNlcyBpdHMgYnVkZ2V0IGFuZCBjdXJyZW50IGFjY291bnQgZGVmaWNpdHMsIHRoZSBNaW5pc3RyeSBvZiBGaW5hbmNlIHNhaWQuICAgICBJdCBzYWlkIEJhbmsgUHJlc2lkZW50IEJhcmJlciBDb25hYmxlIGF0IGEgbWVldGluZyB3aXRoIFNyaSBMYW5rYSdzIEZpbmFuY2UgTWluaXN0ZXIgUm9ubmllIGRlIE1lbCBpbiBXYXNoaW5ndG9uIGFsc28gZW1waGFzaXNlZCB0aGUgbmVlZCBmb3Igc3RydWN0dXJhbCBhZGp1c3RtZW50IGFuZCByZWZvcm0gdG8gdGhlIGVjb25vbXksIGJhdHRlcmVkIGJ5IGZpdmUgeWVhcnMgb2Ygc2VwYXJhdGlzdCBkaXN0dXJiYW5jZXMuICAgICBPZmZpY2lhbHMgc2FpZCBTcmkgTGFua2EncyBidWRnZXQgZGVmaWNpdCB0aGlzIHllYXIgaXMgZXhwZWN0ZWQgdG8gc3VycGFzcyB0aGUgcHJvamVjdGVkIDI4LjcgYmlsbGlvbiBydXBlZXMgd2hpbGUgZGVmZW5jZSBzcGVuZGluZywgYWxyZWFkeSB1cCBieSB0d28gYmlsbGlvbiBydXBlZXMgZnJvbSBhIHRhcmdldHRlZCAxMCBiaWxsaW9uLCBpcyBhbHNvIGxpa2VseSBncm93LiAgICAgVGhlIE1pbmlzdHJ5IHNhaWQgZGUgTWVsIGFza2VkIHRoZSBXb3JsZCBCYW5rIHRvIGdpdmUgU3JpIExhbmthIDYuNSBiaWxsaW9uIHJ1cGVlcyBiYWxhbmNlIG9mIHBheW1lbnRzIHN1cHBvcnQuICBSRVVURVIgMzsKMTk4NzA0MDkJV09STEQgTUFSS0VUIFBSSUNFIEZPUiBVUExBTkQgQ09UVE9OIC0gVVNEQSBUaGUgVS5TLiBBZ3JpY3VsdHVyZSBEZXBhcnRtZW50IGFubm91bmNlZCB0aGUgcHJldmFpbGluZyB3b3JsZCBtYXJrZXQgcHJpY2UsIGFkanVzdGVkIHRvIFUuUy4gcXVhbGl0eSBhbmQgbG9jYXRpb24sIGZvciBTdHJpY3QgTG93IE1pZGRsaW5nLCAxLTEvMTYgaW5jaCB1cGxhbmQgY290dG9uIGF0IDUwLjU3IGN0cyBwZXIgbGIsIHRvIGJlIGluIGVmZmVjdCB0aHJvdWdoIG1pZG5pZ2h0IEFwcmlsIDE2LiAgICAgVGhlIGFkanVzdGVkIHdvcmxkIHByaWNlIGlzIGF0IGF2ZXJhZ2UgVS5TLiBwcm9kdWNpbmcgbG9jYXRpb25zIChuZWFyIEx1YmJvY2ssIFRleGFzKSBhbmQgd2lsbCBiZSBmdXJ0aGVyIGFkanVzdGVkIGZvciBvdGhlciBxdWFsaXRpZXMgYW5kIGxvY2F0aW9ucy4gVGhlIHByaWNlIHdpbGwgYmUgdXNlZCBpbiBkZXRlcm1pbmluZyBGaXJzdCBIYW5kbGVyIENvdHRvbiBDZXJ0aWZpY2F0ZSBwYXltZW50IHJhdGVzLiAgICAgVGhlIGRlcGFydG1lbnQgc2FpZCBzaW5jZSB0aGUgYWRqdXN0ZWQgd29ybGQgcHJpY2UgaXMgYWJvdmUgdGhlIGxvYW4gcmVwYXltZW50IHJhdGUgb2YgNDQgY3RzIHBlciBsYiBmb3IgdGhlIGJhc2UgcXVhbGl0eSwgbm8gRmlyc3QgSGFuZGxlciBDb3R0b24gQ2VydGlmaWNhdGVzIHdpbGwgYmUgaXNzdWVkIGR1cmluZyB0aGUgcGVyaW9kLiAgICAgQmFzZWQgb24gZGF0YSBmb3IgdGhlIHdlZWsgZW5kZWQgQXByaWwgOSwgdGhlIGFkanVzdGVkIHdvcmxkIHByaWNlIGZvciB1cGxhbmQgY290dG9uIGlzIGRldGVybWluZWQgYXMgZm9sbG93cywgaW4gY3RzIHBlciBsYiAtLSAgICAgICAgIE5vcnRoZXJuIEV1cm9wZWFuIFByaWNlIC0tIDYyLjg4ICAgICAgICAgICAgICAgICAgQWRqdXN0bWVudHMgLS0gIEF2ZXJhZ2UgVS5TLiBTcG90IE1rdCBMb2NhdGlvbiAtLSAgOS45OCAgICAgICAgICBTTE0gMS0xLzE2IEluY2ggQ290dG9uIC0tICAxLjgwICAgICAgICAgICBBdmVyYWdlIFUuUy4gTG9jYXRpb24gLS0gIDAuNTMgICAgICAgICAgICAgIFN1bSBvZiBBZGp1c3RtZW50cyAtLSAxMi4zMiAgICAgICAgICAgIEFkanVzdGVkIFdvcmxkIFByaWNlIC0tIDUwLjYzICBSZXV0ZXIgMzsKMTk4NzA0MDkJV09STEQgU1VQUExZL0RFTUFORCBFU1RJTUFURVMgSVNTVUVEIEJZIFVTREEgVGhlIFUuUy4gQWdyaWN1bHR1cmUgRGVwYXJ0bWVudCBtYWRlIHRoZSBmb2xsb3dpbmcgMTk4Ni84NyBwcm9qZWN0aW9ucyBpbiBpdHMgd29ybGQgU3VwcGx5L0RlbWFuZCByZXBvcnQsIHdpdGggY29tcGFyaXNvbnMsIGluIG1sbiB0b25uZXMsIGV4Y2VwdCB3aGVyZSBub3RlZCAtLSAgICAgVG90YWwgV29ybGQgR3JhaW4gICAgICAgICAgICAgICAgMTk4Ni84NyAgICAgICAgICAgIDE5ODUvODYgICAgICAgICAgMDQvMDkvODcgIDAzLzA5Lzg3ICAwNC8wOS84NyAgMDMvMDkvODcgIFByb2R1YyAgMSw2ODIuMzEgIDEsNjg2LjExICAxLDY2My42OSAgMSw2NjMuNzAgIFRvdGFsICBTdXBwbHkgIDIsMDI1LjcxICAyLDAyOC40NSAgMSw5MTkuMTggIDEsOTIwLjEzICBUcmFkZS1YICAgMjEyLjE1ICAgIDIxMS44OSAgICAyMDQuNDIgICAgMjAzLjkyICBVc2FnZSAgIDEsNjM1LjAxICAxLDYzMC40MCAgMSw1NzUuNzggIDEsNTc3Ljc5ICBFbmQgU3RrcyAgMzkwLjcwICAgIDM5OC4wNSAgICAzNDMuNDAgICAgMzQyLjM0ICBYLUJhc2VkIG9uIGV4cG9ydCBlc3RpbWF0ZS4gICAgIEFsbCBXaGVhdCAgICAxOTg2Lzg3ICAgICAgICAgICAxOTg1Lzg2ICAgICAgICAgICAgMDQvMDkvODcgMDMvMDkvODcgIDA0LzA5Lzg3IDAzLzA5Lzg3ICBTdGFydCBTdGtzICAxMzcuMDUgICAxMzYuNDggICAxMjUuNTQgICAxMjUuODcgIFByb2R1Y3Rpb24gIDUyOS4yMCAgIDUyOC40MCAgIDQ5OC45NyAgIDQ5OC44MSAgSW1wb3J0cyAgICAgIDk3LjU3ICAgIDk4LjI3ICAgIDk0LjU2ICAgIDk0LjM2ICBGZWVkIFVzZSAgICAxMDEuNzkgICAxMDAuODIgICAgOTAuMTkgICAgOTAuNTYgIFRvdGFsIERvbWVzIDUxNy4yNiAgIDUxNC44OSAgIDQ4Ny40NSAgIDQ4OC4yMCAgRXhwb3J0cyAgICAgMTAxLjA4ICAgMTAxLjIwICAgIDk1LjkyICAgIDk1Ljc2ICBFbmQgU3RvY2tzICAxNDguOTkgICAxNDkuOTkgICAxMzcuMDUgICAxMzYuNDggICBOb3RlIC0gV29ybGQgaW1wb3J0cy9leHBvcnRzIG1heSBub3QgYmFsYW5jZSBkdWUgdG8gZGlmZmVyaW5nIG1hcmtldGluZyB5ZWFycywgZ3JhaW5zIGluIHRyYW5zaXQgYW5kIHJlcG9ydGluZyBkaXNjcmVwYW5jaWVzLiAgICAgQ29hcnNlIEdyYWluICAgICAgICAgICAgICAgICAxOTg2Lzg3ICAgICAgICAgICAxOTg1Lzg2ICAgICAgICAgICAgMDQvMDkvODcgMDMvMDkvODcgIDA0LzA5Lzg3IDAzLzA5Lzg3ICBTdGFydCBTdGNrcyAxODEuNjQgIDE4MS4xMCAgICAxMDcuODAgIDEwOC40MCAgUHJvZHVjdGlvbiAgODM1LjIxICA4MzguODIgICAgODQ0LjYwICA4NDQuODQgIEltcG9ydHMgICAgICA5NS42NiAgIDkzLjc3ICAgICA5NS43MCAgIDk1LjE4ICBGZWVkIFVzZSAgICA1MTQuMDcgIDUxMC4yMCAgICA1MTAuMjAgIDUxMC44MCAgVG90YWwgRG9tZXMgNzk2LjMzICA3OTMuNjQgICAgNzcwLjc2ICA3NzIuMTQgIEV4cG9ydHMgICAgICA5OC45NyAgIDk4LjQ3ICAgICA5Ni4wMiAgIDk1Ljc2ICBFbmQgU3RvY2tzICAyMjAuNTIgIDIyNi4yOCAgICAxODEuNjQgIDE4MS4xMCAgIE5vdGUgLSBXb3JsZCBpbXBvcnRzL2V4cG9ydHMgbWF5IG5vdCBiYWxhbmNlIGR1ZSB0byBkaWZmZXJpbmcgbWFya2V0aW5nIHllYXJzLCBncmFpbiBpbiB0cmFuc2l0IGFuZCByZXBvcnRpbmcgZGlzY3JlcGFuY2llcy4gICAgIENvcm4gKE1sbiBUb25uZXMpICAgICAgICAgICAgICAgICAxOTg2Lzg3ICAgICAgICAgICAxOTg1Lzg2ICAgICAgICAgICAgMDQvMDkvODcgMDMvMDkvODcgIDA0LzA5Lzg3IDAzLzA5Lzg3ICBTdGFydCBTdGNrcyAxMjMuMDggIDEyMy4xMSAgICAgNjEuMDkgICA2MS43NSAgUHJvZHVjdGlvbiAgNDc3LjI2ICA0ODAuMjkgICAgNDgxLjg2ICA0ODEuOTIgIEltcG9ydHMgICAgICA2MS4wMyAgIDU4LjU5ICAgICA2Mi4xMiAgIDYyLjA4ICBGZWVkIFVzZSAgICAyOTUuNDkgIDI4OS40NyAgICAyODYuNTMgIDI4Ny40MiAgVHRsIERvbWVzICAgNDQ0Ljc4ICA0MzkuODAgICAgNDE5Ljg4ICA0MjAuNTUgIEV4cG9ydHMgICAgICA2Mi44MCAgIDYyLjEwICAgICA2Mi41MyAgIDYyLjE1ICBFbmQgU3RvY2tzICAxNTUuNTYgIDE2My42MSAgICAxMjMuMDggIDEyMy4xMSAgIE5vdGUgLSBXb3JsZCBpbXBvcnRzL2V4cG9ydHMgbWF5IG5vdCBiYWxhbmNlIGR1ZSB0byBkaWZmZXJpbmcgbWFya2V0aW5nIHllYXJzLCBncmFpbiBpbiB0cmFuc2l0IGFuZCByZXBvcnRpbmcgZGlzY3JlcGFuY2llcy4gICAgICBTb3liZWFucyAgICAgICAgICAgICAgICAgMTk4Ni84NyAgICAgICAgICAgMTk4NS84NiAgICAgICAgICAgIDA0LzA5Lzg3IDAzLzA5Lzg3ICAwNC8wOS84NyAwMy8wOS84NyAgU3RhcnQgU3Rja3MgIDIzLjAzICAgMjIuODQgICAgMTcuNTkgICAxNy41OCAgUHJvZHVjdGlvbiAgIDk5Ljk4ICAgOTkuNDMgICAgOTYuNzQgICA5Ni41MyAgSW1wb3J0cyAgICAgIDI2LjIxICAgMjYuMjcgICAgMjcuMDggICAyNy4wOCAgQ3J1c2hpbmdzICAgIDc5LjY5ICAgNzkuMzMgICAgNzYuMTYgICA3Ni4xNSAgVHRsIERvbWVzICAgIDk3LjUzICAgOTYuNDAgICAgOTIuMzYgICA5Mi4zNCAgRXhwb3J0cyAgICAgIDI2LjQ1ICAgMjYuNDMgICAgMjYuMDIgICAyNi4wMSAgRW5kIFN0b2NrcyAgIDI1LjIzICAgMjUuNzEgICAgMjMuMDMgICAyMi44NCAgIE5vdGUgLSBJbXBvcnRzIGFuZCBleHBvcnRzIGRvIG5vdCBiYWxhbmNlIGR1ZSB0byBkaWZmZXJpbmcgbWFya2V0aW5nIHllYXJzIGFuZCB0aW1lIGxhZ3MgYmV0d2VlbiByZXBvcnRlZCBleHBvcnRzIGFuZCBpbXBvcnRzLiAgICAgU295YmVhbiBNZWFsICAgICAgICAgICAgICAgICAxOTg2Lzg3ICAgICAgICAgICAgMTk4NS84NiAgICAgICAgICAgIDA0LzA5Lzg3IDAzLzA5Lzg3ICAwNC8wOS84NyAwMy8wOS84NyAgU3RhcnQgU3RvY2tzICAyLjU1ICAgIDIuNDcgICAgIDIuNzkgICAgMi43NCAgUHJvZHVjdGlvbiAgIDYyLjcxICAgNjIuNDAgICAgNjAuMDkgICA2MC4wOSAgSW1wb3J0cyAgICAgIDIzLjQ3ICAgMjMuNDkgICAgMjMuNDggICAyMy40NyAgQ29uc3VtcHRpb24gIDYyLjY5ICAgNjIuNDkgICAgNjEuMDYgICA2MS4xMCAgRXhwb3J0cyAgICAgIDIzLjUxICAgMjMuMzkgICAgMjIuNzYgICAyMi43NCAgRW5kIFN0b2NrcyAgICAyLjUyICAgIDIuNDcgICAgIDIuNTUgICAgMi40NyAgIE5vdGUgLSBJbXBvcnRzIGFuZCBleHBvcnRzIG1heSBub3QgYmFsYW5jZSBkdWUgdG8gZGlmZmVyaW5nIG1hcmtldGluZyB5ZWFycyBhbmQgdGltZSBsYWdzIGJldHdlZW4gcmVwb3J0ZWQgZXhwb3J0cyBhbmQgaW1wb3J0cy4gICAgIFNveWJlYW4gT2lsICAgICAgICAgICAgICAgICAxOTg2Lzg3ICAgICAgICAgIDE5ODUvODYgICAgICAgICAgICAwNC8wOS84NyAwMy8wOS84NyAgMDQvMDkvODcgMDMvMDkvODcgIFN0YXJ0IFN0b2NrcyAgMS42MSAgIDEuNTEgICAgICAgMS4zNyAgIDEuMzYgIFByb2R1Y3Rpb24gICAxNC4yMCAgMTQuMTMgICAgICAxMy42NSAgMTMuNjYgIEltcG9ydHMgICAgICAgMy4zMSAgIDMuMjkgICAgICAgMy4wOCAgIDMuMDUgIENvbnN1bXB0aW9uICAxNC4wMiAgMTQuMDMgICAgICAxMy4zMyAgMTMuNDAgIEV4cG9ydHMgICAgICAgMy4zMyAgIDMuMzUgICAgICAgMy4xNSAgIDMuMTYgIEVuZCBTdG9ja3MgICAgMS43OCAgIDEuNTQgICAgICAgMS42MSAgIDEuNTEgICAgTm90ZSAtIEltcG9ydHMgYW5kIGV4cG9ydHMgZG8gbm90IGJhbGFuY2UgZHVlIHRvIGRpZmZlcmluZyBtYXJrZXRpbmcgeWVhcnMgYW5kIHRpbWUgbGFncyBiZXR3ZWVuIHJlcG9ydGVkIGV4cG9ydHMgYW5kIGltcG9ydHMuICAgICBDb3R0b24gKE1sbiBCYWxlcykgICAgICAgICAgICAgICAgMTk4Ni84NyAgICAgICAgICAxOTg1Lzg2ICAgICAgICAgICAwNC8wOS84NyAwMy8wOS84NyAgMDQvMDkvODcgMDMvMDkvODcgIFN0YXJ0IFN0Y2tzIDQ1Ljg3ICAgNDguMTQgICAgNDIuNzAgICA0My4xMSAgUHJvZHVjdGlvbiAgNjkuNTMgICA2OS42NiAgICA3OC45NCAgIDc4LjkyICBJbXBvcnRzICAgICAyMy4wNyAgIDIzLjA3ICAgIDIxLjQ5ICAgMjEuNDUgIE1pbGwgVXNlICAgIDgwLjcyICAgNzcuMDggICAgNzYuODQgICA3NC43OSAgRXhwb3J0cyAgICAgMjMuMzcgICAyMy41MCAgICAyMC4yNSAgIDIwLjI4ICBFbmQgU3RvY2tzICAzNC4xNiAgIDM5Ljk5ICAgIDQ1Ljg3ICAgNDguMTQgICBOb3RlIC0gSW1wb3J0cyBhbmQgZXhwb3J0cyBtYXkgbm90IGJhbGFuY2UgZHVlIHRvIGNvdHRvbiBpbiB0cmFuc2l0IGFuZCByZXBvcnRpbmcgZGlzY3JlcGFuY2llcyBpbiBzb21lIGNvdW50cmllcy4gICAgIFJpY2UgKE1pbGxlZCBCYXNpcykgICAgICAgICAgICAgICAgIDE5ODYvODcgICAgICAgICAgMTk4NS84NiAgICAgICAgICAgIDA0LzA5Lzg3IDAzLzA5Lzg3ICAwNC8wOS84NyAwMy8wOS84NyAgU3RhcnQgU3RvY2tzIDI0LjcxICAgMjQuNzUgICAgIDIyLjE2ICAgMjIuMTYgIFByb2R1Y3Rpb24gIDMxNy45MCAgMzE4LjkwICAgIDMyMC4xMiAgMzIwLjA1ICBJbXBvcnRzICAgICAgMTAuNTYgICAxMC42MyAgICAgMTEuNjggICAxMS43MCAgRG9tLiBVc2UgICAgMzIxLjQxICAzMjEuODcgICAgMzE3LjU4ICAzMTcuNDYgIEV4cG9ydHMgICAgICAxMi4xMSAgIDEyLjIyICAgICAxMi40OSAgIDEyLjM5ICBFbmQgU3RvY2tzICAgMjEuMTkgICAyMS43OCAgICAgMjQuNzEgICAyNC43NSAgUmV1dGVyIDM7CjE5ODcwNDA5CVhZVklTSU9OIElTU1VFUyBDT05WRVJUSUJMRSBFVVJPQk9ORCBYWVZpc2lvbiBJbmMgaXMgaXNzdWluZyBhIDI1IG1sbiBkbHIgY29udmVydGlibGUgZXVyb2JvbmQgZHVlIE1heSA1LCAyMDAyIHBheWluZyBhbiBpbmRpY2F0ZWQgY291cG9uIG9mIGJldHdlZW4gNS0zLzQgYW5kIHNpeCBwY3QgYW5kIHByaWNlZCBhdCBwYXIsIGxlYWQgbWFuYWdlciBDcmVkaXQgU3Vpc3NlIEZpcnN0IEJvc3RvbiBMdGQgc2FpZC4gICAgIFRoZSBpc3N1ZSBpcyBjYWxsYWJsZSBhZnRlciAzMCBkYXlzIGF0IDEwNiBwY3QgZGVjbGluaW5nIGJ5IG9uZSBwY3QgcGVyIGFubnVtIHRvIHBhciB0aGVyZWFmdGVyLiBJdCBpcyBub3QgY2FsbGFibGUgZm9yIHRocmVlIHllYXJzIHVubGVzcyB0aGUgY29udmVyc2lvbiBwcmljZSBleGNlZWRzIHRoZSBzdG9jayBwcmljZSBieSAxMzAgcGN0LiAgICAgVGhlIHNlbGxpbmcgY29uY2Vzc2lvbiBpcyAxLTEvMiBwY3Qgd2hpbGUgbWFuYWdlbWVudCBhbmQgdW5kZXJ3cml0aW5nIGVhY2ggcGF5IDEvMiBwY3QuIEZpbmFsIHRlcm1zIHdpbGwgYmUgc2V0IG9uLCBvciBiZWZvcmUsIEFwcmlsIDE1LiAgICAgVGhlIGlzc3VlIGlzIGF2YWlsYWJsZSBpbiBiZWFyZXIgYW5kIHJlZ2lzdGVyZWQgZm9ybSBpbiBkZW5vbWluYXRpb25zIG9mIDUsMDAwIGRscnMuIEl0IHdpbGwgYmUgbGlzdGVkIGluIEx1eGVtYm91cmcgd2hpbGUgdGhlIHBheW1lbnQgZGF0ZSBpcyBNYXkgNS4gIFJFVVRFUiAzOwoxOTg3MDQwOQlZRU4gU0VFTiBSSVNJTkcgQUZURVIgRy03IENPTU1VTklRVUUgVGhlIHllbiBpcyBsaWtlbHkgdG8gc3RhcnQgYW5vdGhlciB1bmV2ZW4gcmlzZSBhZ2FpbnN0IHRoZSBkb2xsYXIgYW5kIG90aGVyIG1ham9yIGN1cnJlbmNpZXMgYmVjYXVzZSB0aGUgR3JvdXAgb2YgU2V2ZW4gY29tbXVuaXF1ZSBjb250YWluZWQgbm90aGluZyBuZXcsIGN1cnJlbmN5IGFuZCBib25kIGFuYWx5c3RzIGhlcmUgc2FpZC4gICAgICJJcyB0aGF0IGl0PyBJIHdhcyBleHBlY3Rpbmcgc29tZXRoaW5nIG1vcmUgdGhhbiB0aGF0LCIgc2FpZCBvbmUgdHJhZGVyIGF0IGEgbWFqb3IgV2FsbCBTdHJlZXQgc2VjdXJpdGllcyBjb21wYW55LiAgICAgTWFyYyBDb2hlbiBvZiBSZXB1YmxpYyBOYXRpb25hbCBCYW5rIG9mIE5ldyBZb3JrIHNhaWQ6ICJUaGUgbWFya2V0IG5vdyBoYXMgdGhlIGltcGV0dXMgdG8gZHJpdmUgdGhlIGRvbGxhciBsb3dlciBhZ2Fpbi4iICAgICBUaGUgZG9sbGFyIGhvdmVyZWQgYmV0d2VlbiAxNDUuNTAgYW5kIDE0NyB5ZW4gaW4gdGhlIGRheXMganVzdCBiZWZvcmUgdGhlIHRhbGtzLiBEZWFsZXJzIHJlc3RyYWluZWQgdGhlaXIgdW5kZXJseWluZyBiZWFyaXNobmVzcyBhbmQgc3F1YXJlZCBwb3NpdGlvbnMgYWhlYWQgb2YgV2VkbmVzZGF5J3MgbWVldGluZyBvZiB0aGUgZmluYW5jZSBtaW5pc3RlcnMgYW5kIGNlbnRyYWwgYmFua2VycyBvZiB0aGUgdG9wIHNldmVuIGluZHVzdHJpYWxpemVkIG5hdGlvbnMgaW4gV2FzaGluZ3Rvbi4gICAgIEFmdGVyIG1vcmUgdGhhbiBmb3VyIGhvdXJzIG9mIHRhbGtzLCB0aGUgRy03IGlzc3VlZCBhIGNvbW11bmlxdWUgd2hpY2ggbWVyZWx5IHJlYWZmaXJtZWQgdGhlIHJlY2VudCBQYXJpcyBhZ3JlZW1lbnQncyB2aWV3IHRoYXQgcHJldmFpbGluZyBjdXJyZW5jeSBsZXZlbHMgd2VyZSBicm9hZGx5IGNvbnNpc3RlbnQgd2l0aCBlY29ub21pYyBmdW5kYW1lbnRhbHMgYW5kIHRoYXQgZXhjaGFuZ2UgcmF0ZSBzdGFiaWxpdHkgc2hvdWxkIGJlIGZvc3RlcmVkIGFyb3VuZCB0aGVzZSBsZXZlbHMuICAgICBUaGUgZG9sbGFyIHNhbmsgdG8gMTQ0Ljc1IHllbiBpbiBlYXJseSBUb2t5byB0cmFkaW5nLiAgICAgIlRoZXkgc2FpZCB0aGF0IHRoZSBkb2xsYXIveWVuIHJhdGUgd2FzIGJyb2FkbHkgaW4gbGluZSB3aXRoIGZ1bmRhbWVudGFscyB3aGVuIGl0IHdhcyAxNTQuIE5vdyB0aGV5IGFyZSBzYXlpbmcgaXQncyBpbiBsaW5lIHdoZW4gaXQncyBhdCAxNDYuIFdpbGwgdGhpcyBzdGlsbCBiZSBzbyBhdCAxMzggb3IgMTMwPywiIGFza2VkIFJlcHVibGljJ3MgQ29oZW4uICAgICBKYXBhbmVzZSBGaW5hbmNlIE1pbmlzdGVyIEtpaWNoaSBNaXlhemF3YSBmdWVsbGVkIHNwZWN1bGF0aW9uIGFib3V0IHRoZSBhbW91bnQgb2YgZmx1Y3R1YXRpb24gdGhlIGF1dGhvcml0aWVzIGFyZSBwcmVwYXJlZCB0byB0b2xlcmF0ZSBieSBzYXlpbmcgdGhhdCB0aGUgY3VycmVudCB5ZW4gbGV2ZWwgaXMgc3RpbGwgaW5zaWRlIHRoZSByYW5nZSBhZ3JlZWQgb24gaW4gUGFyaXMgaW4gbGF0ZSBGZWJydWFyeS4gICAgIE9mZmljaWFsIHN0YXRlbWVudHMgaW4gcmVjZW50IHdlZWtzIGhhZCBpbmRpY2F0ZWQgdGhhdCB0aGUga2V5IHBzeWNob2xvZ2ljYWwgbGV2ZWwgb2YgMTUwIHllbiB3YXMgYXQgdGhlIGxvd2VyIGVuZCBvZiB0aGUgYXV0aG9yaXRpZXMnIHBlcm1pc3NpYmxlIHJhbmdlLiAgICAgRGVhbGVycyBhbmQgYW5hbHlzdHMgd2FybmVkIHRoYXQgdGhlIGRvbGxhcidzIGRlY2xpbmUgd291bGQgcHJvYmFibHkgYmUgdW5ldmVuLiBUaGV5IGFudGljaXBhdGVkIGEgY29uY2VydGVkIGVmZm9ydCB0byBwcm9wIHVwIHRoZSBkb2xsYXIgYW5kIHJlc3RyYWluIHRoZSB5ZW4gdmlhIGEgbWl4dHVyZSBvZiBvcGVuIG1hcmtldCBpbnRlcnZlbnRpb24gYW5kIHB1YmxpYyBjb21tZW50cy4gICAgIFNob3J0bHkgYWZ0ZXIgdGhlIFRva3lvIG1hcmtldCBvcGVuZWQgdG9kYXkgdGhlIEJhbmsgb2YgSmFwYW4gd2FzIGRldGVjdGVkIGJ5IGxvY2FsIGRlYWxlcnMgYnV5aW5nIG1vZGVyYXRlIGFtb3VudHMgb2YgZG9sbGFycy4gVGhlIGRvbGxhciByZWJvdW5kZWQgdG8gYWJvdXQgMTQ1LjIwIHllbi4gICAgIFRoZSBzb3VyY2VzIHNhaWQgdGhlIG1hcmtldCBtYXkgYWxzbyBiZSB3YXJ5IG9mIGFncmVzc2l2ZWx5IHNlbGxpbmcgZG9sbGFycyBmb3IgeWVuIGJlZm9yZSBUdWVzZGF5J3MgRmVicnVhcnkgVS5TLiBUcmFkZSBkYXRhLiBUaGUgZmlndXJlcyBhcmUgZXhwZWN0ZWQgdG8gc2hvdyBhIGRlZmljaXQgb2YgMTMgYmlsbGlvbiBkbHJzLCBmcm9tIGEgcHJvdmlzaW9uYWwgMTQuOCBiaWxsaW9uIGluIEphbnVhcnkuICAgICAzOwoxOTg3MDQwOQlZVUdPU0xBVklBIFRPIFRFTkRFUiBGT1IgMTAwLDAwMCBUT05ORVMgV0hFQVQgWXVnb3NsYXZpYSB3aWxsIHRlbmRlciBBcHJpbCAxNCBmb3IgMTAwLDAwMCB0b25uZXMgb2Ygd2hlYXQsIHRoZSBVLlMuIEFncmljdWx0dXJlIERlcGFydG1lbnQncyBDb3Vuc2Vsb3IgaW4gQmVsZ3JhZGUgc2FpZCBpbiBhIGZpZWxkIHJlcG9ydC4gICAgIFRoZSByZXBvcnQsIGRhdGVkIEFwcmlsIDcsIHNhaWQgdGhlIHdoZWF0IG11c3QgYmUgZnJvbSAxOTg2IGFuZCAxOTg3IGhhcnZlc3QsIGFuZCBpbXBvcnRzIG9mIHNvZnQgd2hlYXQgZnJvbSBFdXJvcGUgYW5kIGZyb20gb3RoZXIgc3VwcGxpZXJzIHdpbGwgbm90IGJlIGNvbnNpZGVyZWQuICAgICBJdCBzYWlkIHRoZSBpbXBvcnRzIHdpbGwgYmUgdXNlZCB0byByZWJ1aWxkIHRoZSBmZWRlcmFsIHJlc2VydmVzIGFuZCBhcyBhIHJlc3VsdCB3aWxsIG5vdCBiZSBzdWJqZWN0IHRvIGltcG9ydCBzdXJjaGFyZ2VzLiAgUmV1dGVyIDM7CjE5ODcwNDExCUJSSVRJU0ggTUlOSVNURVIgU0FZUyBIRSBXQVJORUQgVE9LWU8gT0YgU0FOQ1RJT05TIEEgQnJpdGlzaCBtaW5pc3RlciBzYWlkIGhlIGhhZCBnaXZlbiB0aGUgSmFwYW5lc2UgZ292ZXJubWVudCBhIGNsZWFyIHdhcm5pbmcgb2Ygc2FuY3Rpb25zIGFnYWluc3QgSmFwYW5lc2UgY29tcGFuaWVzIGlmIFRva3lvIGRpZCBub3QgYWxsb3cgbW9yZSBhY2Nlc3MgdG8gaXRzIGludGVybmFsIG1hcmtldHMgImFuZCBpdCB3YXMgY2xlYXJseSB1bmRlcnN0b29kLiIgICAgIENvcnBvcmF0ZSBBZmZhaXJzIE1pbmlzdGVyIE1pY2hhZWwgSG93YXJkIHNhaWQgb24gaGlzIHJldHVybiBmcm9tIGEgdmlzaXQgdG8gSmFwYW4gaGUgdGhvdWdodCB0aGUgSmFwYW5lc2Ugd2VyZSBiZWdpbm5pbmcgdG8gYXBwcmVjaWF0ZSB0aGUgbmVlZCB0byBiZSAiZmFpciBhbmQgb3BlbiIgYWJvdXQgYWNjZXNzIHRvIHRoZWlyIG93biBtYXJrZXRzLiAgICAgQXQgYW4gYWlycG9ydCBuZXdzIGNvbmZlcmVuY2UgSG93YXJkIGRlbmllZCBvcHBvc2l0aW9uIGNoYXJnZXMgdGhhdCBoaXMgdHJpcCBoYWQgYmVlbiBhIGZhaWx1cmUgYmVjYXVzZSBoZSBoYWQgcmV0dXJuZWQgZW1wdHktaGFuZGVkLiAgICAgIkkgZGlkIHdoYXQgSSBzZXQgb3V0IHRvIGRvLiBJIHdhcyBzZW50IHRvIGRlbGl2ZXIgYSBjbGVhciBtZXNzYWdlIHRvIHRoZSBKYXBhbmVzZSBnb3Zlcm5tZW50LCBhbmQgSSBkZWxpdmVyZWQgaXQgdmVyeSBjbGVhcmx5LCBhbmQgaXQgaGFzIGJlZW4gY2xlYXJseSB1bmRlcnN0b29kLiIgICAgIEhvd2FyZCBzYWlkIHRoYXQgdW5kZXIgdGhlIEZpbmFuY2lhbCBTZXJ2aWNlcyBBY3QgdGhlIGdvdmVubWVudCBoYWQgY29uc2lkZXJhYmxlIGZsZXhpYmlsaXR5IGluIHRha2luZyBzYW5jdGlvbnMgYWdhaW5zdCBKYXBhbmVzZSBjb21wYW5pZXMgYW5kIGZpbmFuY2UgaG91c2VzIG9wZXJhdGluZyBpbiBCcml0YWluLiAgICAgIkl0IGlzIG5vdCBzaW1wbHkgYSBxdWVzdGlvbiBvZiB3aXRoZHJhd2luZyBvciByZWZ1c2luZyBvcGVyYXRpbmcgbGljZW5jZXMuIFdlIGNhbiBiYW4gZmlybXMgZnJvbSBjZXJ0YWluIGNvdW50cmllcyBmcm9tIGNhcnJ5aW5nIG91dCBjZXJ0YWluIGtpbmRzIG9mIGJ1c2luZXNzLCB3aGlsZSBhbGxvd2luZyB0aGVtIHRvIGNhcnJ5IG91dCBvdGhlciBraW5kcy4iICAgICAiSSBob3BlIHdlIGRvbid0IGhhdmUgdG8gdXNlIHRoZXNlIHBvd2VycywgYnV0IEkgbWFkZSBpdCBjbGVhciBpbiBKYXBhbiB0aGF0IGlmIG91ciB0aW1ldGFibGUgaXNuJ3QgbWV0LCB3ZSBzaGFsbCB1c2UgdGhlbS4iICAgICBIZSBzYWlkIGl0IHdvdWxkIGJlIHVuZm9ydHVuYXRlIGlmIEJyaXRhaW4gYW5kIEphcGFuIGJlY2FtZSBpbnZvbHZlZCBpbiBhIHRpdC1mb3ItdGF0IGV4Y2hhbmdlLCBhZGRpbmcgdGhhdCBKYXBhbiBnYWluZWQgbW9yZSB0aGFuIGFueW9uZSBlbHNlIGZyb20gYW4gb3BlbiB0cmFkaW5nIHJlbGF0aW9uc2hpcC4gICAgICJJIHRoaW5rIHRoZXkgYXJlIGJlZ2lubmluZyB0byBhcHByZWNpYXRlIHRoYXQgaWYgdGhpcyByZWxhdGlvbnNoaXAgaXMgdG8gY29udGludWUsIGl0IGlzIHZlcnkgaW1wb3J0YW50IGZvciB0aGVtIHRvIGJlIGZhaXIgYW5kIG9wZW4gYWJvdXQgYWNjZXNzIHRvIHRoZWlyIG93biBtYXJrZXRzLiIgICAgIE9uIHRoZSBxdWVzdGlvbiBvZiB0aGUgQnJpdGlzaCBmaXJtIENhYmxlIGFuZCBXaXJlbGVzcyBQbGMgPENBV0wuTD4sIHdoaWNoIGlzIHRyeWluZyB0byB3aW4gYSBzaWduaWZpY2FudCBzaGFyZSBvZiB0ZWxlY29tbXVuaWNhdGlvbnMgY29udHJhY3RzIGluIEphcGFuLCBIb3dhcmQgc2FpZCBoZSBoYWQgdG9sZCB0aGUgSmFwYW5lc2UgdGhpcyB3YXMgYmVpbmcgd2lkZWx5IHJlZ2FyZGVkIGFzIGEgdGVzdCBjYXNlLiAgICAgSGUgc2FpZCB0aGVyZSB3ZXJlIHNpZ25zIG9mIG1vdmVtZW50IG9uIHRoZSBjYXNlLiBDYWJsZSBhbmQgV2lyZWxlc3Mgd2FzIGR1ZSB0byB0YWtlIHBhcnQgaW4gdGFsa3MgaW4gSmFwYW4gbmV4dCBUdWVzZGF5LCBoZSBzYWlkLiAgICAgRWFybGllciB0aGlzIHdlZWsgQnJpdGlzaCBQcmltZSBNaW5pc3RlciBNYXJnYXJldCBUaGF0Y2hlciBzYWlkIEJyaXRhaW4gY291bGQgbm90IGdvIGl0IGFsb25lIG9uIHNhbmN0aW9ucyBhZ2FpbnN0IEphcGFuLCBidXQgd291bGQgaGF2ZSB0byBjb29yZGluYXRlIGFjdGlvbiB3aXRoIGl0cyBFdXJvcGVhbiBDb21tdW5pdHkgcGFydG5lcnMuICAgICBDb21tdW5pdHkgc291cmNlcyBzYWlkIGFmdGVyIGEgbWVldGluZyBvZiB0cmFkZSBvZmZpY2lhbHMgeWVzdGVyZGF5IHRoYXQgdGhlIGdyb3VwIG1pZ2h0IGltcG9zZSBzdGVlcCBuZXcgdGFyaWZmcyBvbiBhIHJhbmdlIG9mIEphcGFuZXNlIGdvb2RzIHRvIHByZXZlbnQgZGl2ZXJzaW9uIGZyb20gVW5pdGVkIFN0YXRlcyBtYXJrZXRzIGlmIFdhc2hpbmd0b24gaW1wb3NlcyB0cmFkZSBzYW5jdGlvbnMgYWdhaW5zdCBUb2t5byBhcyBpdCBoYXMgdGhyZWF0ZW5lZC4gIFJFVVRFUiAzOwoxOTg3MDQxMQlEUlkgU1BFTEwgSU4gUEhJTElQUElORVMgREFNQUdFUyBBR1JJQ1VMVFVSRSBDUk9QUyBBIHByb2xvbmdlZCBkcnkgc3BlbGwgaGFzIGRhbWFnZWQgMTExLDM1MCBoZWN0YXJlcyBvZiByaWNlIGFuZCBjb3JuIHBsYW50YXRpb25zIGluIDEwIHByb3ZpbmNlcyBpbiB0aGUgY2VudHJhbCBhbmQgc291dGhlcm4gUGhpbGlwcGluZXMsIGFncmljdWx0dXJlIG9mZmljaWFscyBzYWlkLiAgICAgVGhleSBzYWlkIHNvbWUgNzEsMDcwIHRvbm5lcyBvZiBhZ3JpY3VsdHVyYWwgcHJvZHVjZSBlc3RpbWF0ZWQgYXQgYWJvdXQgMjUwIG1sbiBwZXNvcyB3YXMgbG9zdCB0byB0aGUgbGFjayBvZiByYWluZmFsbC4gVGhleSB3YXJuZWQgb2YgYSBzZXZlcmUgZHJvdWdodCBpZiB0aGUgcHJldmFpbGluZyBjb25kaXRpb25zIGNvbnRpbnVlZCB1bnRpbCBuZXh0IG1vbnRoLiAgICAgQWdyaWN1bHR1cmUgU2VjcmV0YXJ5IENhcmxvcyBEb21pbmd1ZXogc2FpZCBoZSBob3BlZCB0aGUgbG9zc2VzIHdvdWxkIGJlIG9mZnNldCBieSB0aGUgZXhwZWN0ZWQgaW5jcmVhc2UgaW4gb3V0cHV0IGluIG90aGVyLCBub3JtYWxseSBtb3JlIHByb2R1Y3RpdmUgYXJlYXMgbm90IGFmZmVjdGVkIGJ5IHRoZSBkcnkgc3BlbGwuICAgICBBZmZlY3RlZCB3ZXJlIDE0LDAzMCBoZWN0YXJlcyBvZiBwYWxheSAodW5taWxsZWQgcmljZSksIHJlcHJlc2VudGluZyBhIHByb2R1Y3Rpb24gbG9zcyBvZiAyMiwyNTAgdG9ubmVzIHZhbHVlZCBhdCA3Ny44IG1sbiBwZXNvcywgRGVwYXJ0bWVudCBvZiBBZ3JpY3VsdHVyZSByZXBvcnRzIHNhaWQuICAgICBBYm91dCA0OCw4MjAgdG9ubmVzIG9mIGNvcm4gZnJvbSA5NywzMjAgaGVjdGFyZXMgdmFsdWVkIGF0IDE3MC44IG1sbiBwZXNvcyBoYXZlIGFsc28gYmVlbiBsb3N0LCB0aGV5IHNhaWQuICAgICBPZmZpY2lhbHMgc2FpZCB0aGUgaGVjdGFyYWdlIHBsYW50ZWQgdG8gcGFsYXkgdGhhdCBoYXMgYmVlbiBoaXQgYnkgdGhlIGRyb3VnaHQgYWNjb3VudGVkIGZvciBvbmx5IG9uZSBwY3Qgb2YgbmF0aW9uYWwgdG90YWwgdGh1cyB0aGUgZGFtYWdlIGlzIGNvbnNpZGVyZWQgbmVnbGlnaWJsZS4gICAgIEluIHRoZSBjYXNlIG9mIGNvcm4sIHRoZXkgc2FpZCB0aGUgbG9zcyBjYW4gYmUgZmlsbGVkIGJ5IHByb2R1Y3Rpb24gZnJvbSBub24tdHJhZGl0aW9uYWwgY29ybiBmYXJtcyB3aGljaCBkaXZlcnNpZmllZCBpbnRvIHRoZSBjYXNoIGNyb3AgZnJvbSBzdWdhciB0d28geWVhcnMgYWdvLiAgICAgIFRoZSBQaGlsaXBwaW5lIENvY29udXQgQXV0aG9yaXR5IHNhaWQgY29jb251dCBwcm9kdWN0aW9uIGluIHRoZSBtYWpvciBwcm9kdWNpbmcgcmVnaW9uIG9mIEJpY29sIG1pZ2h0IGRyb3AgYnkgMjUgcGN0IHRvIDMyMCwwMDAgdG9ubmVzIGlmIHRoZSBkcnkgc3BlbGwgY29udGludWVkLiBUaGVyZSB3ZXJlIG5vIHJlcG9ydHMgb2YgYWN0dWFsIGRhbWFnZS4gIFJFVVRFUiAzOwoxOTg3MDQxMQlKQVBBTiBXQVJOUyBVLlMuIElUIE1BWSBSRVRBTElBVEUgSU4gVFJBREUgRElTUFVURSBKYXBhbiB3YXJuZWQgdGhlIFVuaXRlZCBTdGF0ZXMgaXQgbWF5IHRha2UgcmV0YWxpYXRvcnkgbWVhc3VyZXMgaWYgdGhlIFVuaXRlZCBTdGF0ZXMgaW1wb3NlcyBpdHMgcGxhbm5lZCB0cmFkZSBzYW5jdGlvbnMgb24gQXByaWwgMTcsIGEgc2VuaW9yIGdvdmVybm1lbnQgb2ZmaWNpYWwgc2FpZC4gICAgIFNoaW5qaSBGdWt1a2F3YSwgVmljZSBNaW5pc3RlciBvZiB0aGUgSW50ZXJuYXRpb25hbCBUcmFkZSBhbmQgSW5kdXN0cnkgTWluaXN0cnksIHNhaWQgaW4gYSBzdGF0ZW1lbnQgSmFwYW4gd291bGQgY29uc2lkZXIgbWVhc3VyZXMgdW5kZXIgdGhlIEdlbmVyYWwgQWdyZWVtZW50IG9uIFRhcmlmZnMgYW5kIFRyYWRlIGFuZCBvdGhlciBhY3Rpb25zIGlmIHRoZSBVbml0ZWQgU3RhdGVzIGltcG9zZXMgMTAwIHBjdCB0YXJpZmZzIG9uIHNvbWUgSmFwYW5lc2UgZXhwb3J0cyBhcyBwbGFubmVkIG5leHQgd2Vlay4gICAgIEhvd2V2ZXIsIEZ1a3VrYXdhIHNhaWQgSmFwYW4gd2FzIHJlYWR5IHRvIGNvbnRpbnVlIHRyYWRlIHRhbGtzIHdpdGggdGhlIFVuaXRlZCBTdGF0ZXMgZGVzcGl0ZSBpdHMgZmFpbHVyZSB0byBjb252aW5jZSBBbWVyaWNhIHRvIGNhbGwgb2ZmIHRoZSB0aHJlYXRlbmVkIHRhcmlmZnMgZHVyaW5nIHR3byBkYXlzIG9mIGVtZXJnZW5jeSB0YWxrcyB3aGljaCBlbmRlZCBpbiBXYXNoaW5ndG9uIHllc3RlcmRheS4gICAgIExhc3QgbW9udGggUHJlc2lkZW50IFJlYWdhbiBhbm5vdW5jZWQgdGhlIHNhbmN0aW9ucyBpbiByZXRhbGlhdGlvbiBmb3Igd2hhdCBoZSBjYWxsZWQgSmFwYW4ncyBmYWlsdXJlIHRvIGhvbm91ciBhIEp1bHkgMTk4NiBhZ3JlZW1lbnQgdG8gc3RvcCBkdW1waW5nIGNvbXB1dGVyIG1pY3JvY2hpcHMgaW4gbWFya2V0cyBvdXRzaWRlIHRoZSBVbml0ZWQgU3RhdGVzIGFuZCB0byBvcGVuIGl0cyBob21lIG1hcmtldCB0byBBbWVyaWNhbiBnb29kcy4gICAgIEZ1a3VrYXdhIHNhaWQgdGhlIFVuaXRlZCBTdGF0ZXMgaGFkIHJlZ3JldHRhYmx5IG5vdCBsaXN0ZW5lZCB0byBKYXBhbidzIGV4cGxhbmF0aW9uIG9mIGl0cyBlZmZvcnRzIHRvIGxpdmUgdXAgdGhlIHBhY3QgYW5kIHNhaWQgV2FzaGluZ3RvbiBoYWQgbm90IGdpdmVuIGFueSBkZXRhaWxlZCBleHBsYW5hdGlvbiBvZiB3aHkgaXQgcGxhbm5lZCB0byBpbXBvc2UgdGhlIHRhcmlmZnMuICBSRVVURVIgMzsKMTk4NzA0MTEJS1VXQUlUIElOQ1JFQVNFUyBTVEFLRSBJTiBTSU1FIERBUkJZIFRoZSBLdXdhaXQgSW52ZXN0bWVudCBPZmZpY2UgKEtJTykgaGFzIGluY3JlYXNlZCBpdHMgc3Rha2UgaW4gPFNpbWUgRGFyYnkgQmhkPiB0byA2My43MiBtbG4gc2hhcmVzLCByZXByZXNlbnRpbmcgNi44OCBwY3Qgb2YgU2ltZSBEYXJieSdzIHBhaWQtdXAgY2FwaXRhbCwgZnJvbSA2MC43IG1sbiBzaGFyZXMsIE1hbGF5YW4gQmFua2luZyBCaGQgPE1CS00uU0k+IHNhaWQuICAgICBTaW5jZSBsYXN0IE5vdmVtYmVyLCBLSU8gaGFzIGJlZW4gYWdncmVzc2l2ZWx5IGluIHRoZSBvcGVuIG1hcmtldCBidXlpbmcgc2hhcmVzIGluIFNpbWUgRGFyYnksIGEgbWFqb3IgY29ycG9yYXRpb24gd2l0aCBpbnRlcmVzdHMgaW4gaW5zdXJhbmNlLCBwcm9wZXJ0eSBkZXZlbG9wbWVudCwgcGxhbnRhdGlvbnMgYW5kIG1hbnVmYWN0dXJpbmcuICAgICBUaGUgc2hhcmVzIHdpbGwgYmUgcmVnaXN0ZXJlZCBpbiB0aGUgbmFtZSBvZiBNYWxheWFuIEJhbmtpbmcgc3Vic2lkaWFyeSBNYXliYW4gKE5vbWluZWVzKSBTZG4gQmhkLCB3aXRoIEtJTyBhcyB0aGUgYmVuZWZpY2lhbCBvd25lci4gIFJFVVRFUiAzOwoxOTg3MDQxMQlTTVVHR0xJTkcgQkxBTUVEIEZPUiBDTE9TVVJFIE9GIEhBSVRJQU4gU1VHQVIgRklSTSBBIHN1Z2FyIG1pbGwgd2hpY2ggd2FzIHRoaXMgbmF0aW9uJ3Mgc2Vjb25kIGxhcmdlc3QgZW1wbG95ZXIgY2xvc2VkIGl0cyBkb29ycyB5ZXN0ZXJkYXksIHNheWluZyBpdCBoYWQgYmVlbiBydW4gb3V0IG9mIGJ1c2luZXNzIGJ5IHN1Z2FyIHNtdWdnbGVkIGZyb20gTWlhbWkgYW5kIHRoZSBuZWlnaGJvdXJpbmcgRG9taW5pY2FuIFJlcHVibGljLiAgICAgVGhlIGNsb3N1cmUgb2YgdGhlIEhhaXRpYW4gQW1lcmljYW4gU3VnYXIgQ29tcGFueSAoSEFTQ08pIHdpbGwgaWRsZSAzLDUwMCBlbXBsb3llZXMgYW5kIGFmZmVjdCBhcyBtYW55IGFzIDMwLDAwMCB0byA0MCwwMDAgc21hbGwgc3VnYXIgY2FuZSBwbGFudGVycyBpbiByZWdpb25zIGFyb3VuZCB0aGUgY2FwaXRhbCwgdGhlIGNvbXBhbnkgc2FpZC4gICAgICJCZWNhdXNlIG9mIHVucHJlY2VkZW50ZWQgYW5kIGV2ZXItZ3Jvd2luZyBzbXVnZ2xpbmcsIEhBU0NPIHJlZ3JldHMgLi4uIEl0IGNhbm5vdCBjb250aW51ZSB0byBhY2NlcHQgZGVsaXZlcnkgb2Ygc3VnYXIgY2FuZSBhZnRlciBBcHJpbCAxMCwiIHRoZSBtaWxsIHdhcm5lZCBwbGFudGVycyBlYXJsaWVyIHRoaXMgd2Vlay4gICAgIFNpbmNlIFByZXNpZGVudCBKZWFuLUNsYXVkZSBEdXZhbGllciBmbGVkIEhhaXRpIGZvdXJ0ZWVuIG1vbnRocyBhZ28sIHdpZGVzY2FsZSBzbXVnZ2xpbmcgb2YgYmFzaWMgZ29vZHMgc3VjaCBhcyBjb29raW5nIG9pbCwgZmxvdXIsIHJpY2UsIHN1Z2FyIGFuZCBjYW5uZWQgbWlsayBoYXMgbG93ZXJlZCBjb25zdW1lciBwcmljZXMgYnV0IGJhbmtydXB0ZWQgc2V2ZXJhbCBsb2NhbCBtYW51ZmFjdHVyZXJzLCB0aHJvd2luZyBodW5kcmVkcyBvZiB0aG91c2FuZHMgb2YgSGFpdGlhbnMgb3V0IG9mIHdvcmsuICAgICBBdCB0aGUgSEFTQ08gY29tcG91bmQsIHdoZXJlIGdyaW0tZmFjZWQgd29ya2VycyBsaW5lZCB1cCB0byByZWNlaXZlIHRoZWlyIGxhc3QgcGF5LCBTcG9rZXNtYW4gR2VvcmdlcyBELiBSaWdhdWQgc2hvd2VkIGEgd2FyZWhvdXNlIHN0b2NrZWQgd2l0aCBhbiBlc3RpbWF0ZWQgNDQ1LDAwMCB1bnNvbGQgMTAwLXBvdW5kICg0NS1rZykgYmFncyBvZiBzdWdhci4gICAgICJXZSBhcmUgY2xvc2luZyBiZWNhdXNlIG9mIG91ciBodWdlIHN0b2NrIG9mIHVuc29sZCBzdWdhci4gV2UgaGF2ZSBubyBtb25leSBsZWZ0IHRvIGNvbnRpbnVlIG9wZXJhdGlvbnMsIiBSaWdhdWQgc2FpZC4gICAgIEhlIHNhaWQgdGhlIGNvbXBhbnkgb3dlZCA3LjYgbWxuIGRscnMgYW5kIGhhZCBib3Jyb3dlZCBhbiBhZGRpdGlvbmFsIDEuNSBtbG4gZGxycyBpbiBvcmRlciB0byBwYXkgb2ZmIHdvcmtlcnMuICAgICBSaWdhdWQgYmxhbWVkIHRoZSBtaWxsJ3MgcHJvYmxlbXMgb24gYW4gb3JkZXIgYnkgRHV2YWxpZXIgdHdvIHllYXJzIGFnbyBmb3JiaWRkaW5nIEhBU0NPIGZyb20gcmVmaW5pbmcgc3VnYXIuICAgICBIZSBzYWlkIHRoZSBnb3Zlcm5tZW50IHRoZW4gYmVnYW4gaW1wb3J0aW5nIHJlZmluZWQgc3VnYXIgYXQgd29ybGQgbWFya2V0IHByaWNlcyBhbmQgcmVzZWxsaW5nIGl0IGF0IGEgaHVnZSBwcm9maXQgYW5kIHRoZSBwcm92aXNpb25hbCBtaWxpdGFyeS1jaXZpbGlhbiBnb3Zlcm5tZW50IHRoYXQgcmVwbGFjZWQgRHV2YWxpZXIgbGFzdCB5ZWFyIGNvbnRpbnVlZCB0aGUgcG9saWN5LiAgICAgIkJ1dCBub3cgd2l0aCBhbGwgdGhlIHNtdWdnbGluZyBldmVuIHRoZSBzdGF0ZSBjYW4ndCBjb21wZXRlIHdpdGggc211Z2dsZWQgRG9taW5pY2FuIHJlZmluZWQgc3VnYXIsIiBSaWdhdWQgc2FpZC4gICAgIEhBU0NPIHdvcmtlcnMgZWFybmVkIDQuMjAgZGxycyBkYWlseSwgY29uc2lkZXJhYmx5IGFib3ZlIHRoZSB1c3VhbCBtaW5pbXVtIHdhZ2Ugb2YgdGhyZWUgZGxycy4gICAgIEl0IGlzIGdlbmVyYWxseSBlc3RpbWF0ZWQgdGhhdCBldmVyeSBlbXBsb3llZCBIYWl0aWFuIHN1cHBvcnRzIGF0IGxlYXN0IHNpeCBwZW9wbGUuIFJpZ2F1ZCBzYWlkIEhBU0NPJ3MgY2xvc2luZyBhdCBhIG1pbmltdW0gd291bGQgYWZmZWN0IDI4MCwwMDAgdG8gMzAwLDAwMCBwZW9wbGUuICAgICBMYWlkLW9mZiB3b3JrZXJzIHdlcmUgYml0dGVyIGFib3V0IHRoZSBjbG9zdXJlLiAiV2UncmUgZGVhZCwgYW5kIGl0J3MgdGhlIGdvdmVybm1lbnQgdGhhdCdzIGNhdXNpbmcgdXMgdG8gZGllLCIgZGVjbGFyZWQgTHVjaWVuIEZlbGl4LCAzNCwgd2hvIGhhcyBmaXZlIGRlcGVuZGVudHMuICBSRVVURVIgMzsKMTk4NzA0MTEJU1BBTklTSCBVTkVNUExPWU1FTlQgRkFMTFMgU0xJR0hUTFkgSU4gTUFSQ0ggU3BhaW4ncyByZWdpc3RlcmVkIHVuZW1wbG95bWVudCBmZWxsIGJ5IDEwLDQ2NSBwZW9wbGUgdG8gMi45NyBtbG4gb3IgMjEuNCBwY3Qgb2YgdGhlIHdvcmtmb3JjZSBpbiBNYXJjaCwgTGFib3VyIE1pbmlzdHJ5IGZpZ3VyZXMgc2hvdy4gICAgIFJlZ2lzdGVyZWQgdW5lbXBsb3ltZW50IGluIEZlYnJ1YXJ5IHdhcyAyLjk4IG1sbiBwZW9wbGUsIG9yIDIxLjUgcGN0IG9mIHRoZSB3b3JrZm9yY2UuICAgICBUaGUgZmlndXJlcyB3ZXJlIG5vbmV0aGVsZXNzIGhpZ2hlciB0aGFuIHRob3NlIGZvciBNYXJjaCAxOTg2IC0tIDIuOCBtbG4gcGVvcGxlIGFuZCAyMSBwY3Qgb2YgdGhlIHdvcmtmb3JjZS4gIFJFVVRFUiAzOwoxOTg3MDQxMQlUQUlXQU4gQU5OT1VOQ0VTIE5FVyBST1VORCBPRiBJTVBPUlQgVEFSSUZGIENVVFMgVGFpd2FuIGFubm91bmNlZCBwbGFucyBmb3IgYW5vdGhlciByb3VuZCBvZiBpbXBvcnQgdGFyaWZmIGN1dHMgb24gODYyIGZvcmVpZ24gZ29vZHMgc2hvcnRseSBiZWZvcmUgdHJhZGUgdGFsa3Mgd2l0aCBXYXNoaW5ndG9uIHdoaWNoIG9mZmljaWFscyBkZXNjcmliZWQgYXMgYSBtb3ZlIHRvIGhlbHAgYmFsYW5jZSB0cmFkZSB3aXRoIHRoZSBVbml0ZWQgU3RhdGVzLiAgICAgV2FuZyBEZXItSHdhLCBEZXB1dHkgRGlyZWN0b3Igb2YgdGhlIEZpbmFuY2UgTWluaXN0cnkncyBDdXN0b21zIEFkbWluaXN0cmF0aW9uIERlcGFydG1lbnQsIHRvbGQgcmVwb3J0ZXJzIHRoZSBsaXN0IG9mIHByb2R1Y3RzIGluY2x1ZGVkIDYwIGl0ZW1zIGFza2VkIGJ5IFdhc2hpbmd0b24uICAgICAiVGhlIG1vdmUgaXMgcGFydCBvZiBvdXIgZ292ZXJubWVudCBlZmZvcnRzIHRvIGVuY291cmFnZSBpbXBvcnRzIGZyb20gb3VyIHRyYWRpbmcgcGFydG5lcnMsIHBhcnRpY3VsYXJseSBmcm9tIHRoZSBVbml0ZWQgU3RhdGVzLCIgaGUgc2FpZC4gICAgIEhlIHNhaWQgdGhlIG1pbmlzdHJ5IHNlbnQgYSBwcm9wb3NhbCB0b2RheSB0byB0aGUgY2FiaW5ldCB0aGF0IHRoZSB0YXJpZmZzIG9uIHN1Y2ggcHJvZHVjdHMgYXMgY29zbWV0aWNzLCBiaWN5Y2xlcywgYXBwbGVzLCByYWRpb3MsIGdhcm1lbnRzLCBzb3liZWFucyBhbmQgdGVsZXZpc2lvbiBzZXRzIGJlIGN1dCBieSBiZXR3ZWVuIGZpdmUgYW5kIDUwIHBjdC4gICAgIFRoZSBjYWJpbmV0IHdhcyBleHBlY3RlZCB0byBnaXZlIGl0cyBhcHByb3ZhbCBuZXh0IFRodXJzZGF5IGFuZCB0aGUgbmV3IHRhcmlmZiBjdXRzIHdvdWxkIGJlIGltcGxlbWVudGVkIHBvc3NpYmx5IHN0YXJ0aW5nIG9uIEFwcmlsIDIwLCBoZSBhZGRlZC4gICAgIFRhaXdhbiBpbnRyb2R1Y2VkIGEgc3dlZXBpbmcgdGFyaWZmIGN1dCBvbiBzb21lIDEsNzAwIGZvcmVpZ24gcHJvZHVjdHMgbGFzdCBKYW51YXJ5IGFpbWVkIGF0IGhlbHBpbmcgcmVkdWNlIGl0cyBncm93aW5nIHRyYWRlIHN1cnBsdXMgd2l0aCB0aGUgVW5pdGVkIFN0YXRlcywgdGhlIGlzbGFuZCdzIGxhcmdlc3QgdHJhZGluZyBwYXJ0bmVyLiAgICAgV2FzaGluZ3RvbiBob3dldmVyIHdhcyBub3Qgc2F0aXNmaWVkIHdpdGggdGhlIGN1dHMgYW5kIHByZXNzZWQgZm9yIG1vcmUgcmVkdWN0aW9ucyBhcyBhIHdheSBvZiBjdXR0aW5nIGl0cyBodWdlIHRyYWRlIGRlZmljaXQgd2l0aCBUYWlwZWkuICAgICBXYXNoaW5ndG9uJ3MgZGVmaWNpdCB3aXRoIFRhaXBlaSByb3NlIHRvIGEgcmVjb3JkIDEzLjYgYmlsbGlvbiBVLlMuIERscnMgbGFzdCB5ZWFyIGZyb20gMTAuMiBiaWxsaW9uIGluIDE5ODUuIEl0IHdpZGVuZWQgdG8gMy42MSBiaWxsaW9uIGluIHRoZSBmaXJzdCBxdWFydGVyIG9mIDE5ODcgZnJvbSAyLjc4IGJpbGxpb24gYSB5ZWFyIGVhcmxpZXIsIFRhaXdhbidzIG9mZmljaWFsIGZpZ3VyZXMgc2hvdy4gICAgIFRvZGF5J3MgYW5ub3VuY2VtZW50IGNhbWUgYmVmb3JlIGEgZGVwYXJ0dXJlIGxhdGVyIHRvZGF5IG9mIGEgMTUtbWVtYmVyIFRhaXdhbiBkZWxlZ2F0aW9uIGZvciBXYXNoaW5ndG9uIGZvciBhIHNlcmllcyBvZiB0cmFkZSB0YWxrcyB3aXRoIFUuUy4gT2ZmaWNpYWxzLiAgICAgVGhlIGRlbGVnYXRpb24ncyBsZWFkZXIsIFZpbmNlbnQgU2lldywgdG9sZCByZXBvcnRlcnMgbGFzdCBuaWdodCBoZSB3YXMgbGVhdmluZyB3aXRoICJhIGhlYXZ5IGhlYXJ0LCIgbWVhbmluZyB0aGF0IGhlIHdvdWxkIGZhY2UgdG91Z2ggdGFsa3MgaW4gV2FzaGluZ3RvbiBiZWNhdXNlIG9mIHJpc2luZyBwcm90ZWN0aW9uaXN0IHNlbnRpbWVudHMgaW4gdGhlIFUuUy4gQ29uZ3Jlc3MuIFRhaXdhbidzIDE5ODYgdHJhZGUgc3VycGx1cyB3aXRoIFdhc2hpbmd0b24gd2FzIHRoZSB0aGlyZCBsYXJnZXN0LCBhZnRlciBKYXBhbiBhbmQgQ2FuYWRhLiAgICAgU2lldyBzYWlkIHRoZSB0YWxrcywgc3RhcnRpbmcgb24gQXByaWwgMTQsIHdvdWxkIGNvdmVyIFUuUy4gQ2FsbHMgZm9yIFRhaXdhbiB0byBvcGVuIGl0cyBtYXJrZXQgdG8gQW1lcmljYW4gcHJvZHVjdHMsIHB1cmNoYXNlcyBvZiBtYWpvciBVLlMuIE1hY2hpbmVyeSBhbmQgcG93ZXIgcGxhbnQgZXF1aXBtZW50LCBpbXBvcnQgdGFyaWZmIGN1dHMgYW5kIHByb3RlY3Rpb24gb2YgaW50ZWxsZWN0dWFsIHByb3BlcnR5LiAgICAgIkkgYW0gYWZyYWlkIHRoaXMgdGltZSB3ZSBoYXZlIHRvIGdpdmUgbW9yZSB0aGFuIHRha2UgZnJvbSBvdXIgdGFsa3Mgd2l0aCB0aGUgVS5TLiwiIGhlIHNhaWQgd2l0aG91dCBlbGFib3JhdGluZy4gIFJFVVRFUiAzOwoxOTg3MDQxMQlVR0FOREEgUFVMTFMgT1VUIE9GIENPRkZFRSBNQVJLRVQgLSBUUkFERSBTT1VSQ0VTIFVnYW5kYSdzIENvZmZlZSBNYXJrZXRpbmcgQm9hcmQgKENNQikgaGFzIHN0b3BwZWQgb2ZmZXJpbmcgY29mZmVlIG9uIHRoZSBpbnRlcm5hdGlvbmFsIG1hcmtldCBiZWNhdXNlIGl0IGlzIHVuaGFwcHkgd2l0aCBjdXJyZW50IHByaWNlcywgY29mZmVlIHRyYWRlIHNvdXJjZXMgc2FpZC4gICAgIFRoZSBib2FyZCBzdXNwZW5kZWQgb2ZmZXJpbmdzIGxhc3Qgd2VlayBidXQgYmVjYXVzZSBvZiBpdHMgdXJnZW50IG5lZWQgZm9yIGNhc2ggaXQgd2FzIG5vdCBpbW1lZGlhdGVseSBjbGVhciBob3cgbG9uZyBpdCBjb3VsZCBzdXN0YWluLCB0aGUgc291cmNlcyBhZGRlZC4gICAgIEh1bmRyZWRzIG9mIFVnYW5kYW4gY29mZmVlIGZhcm1lcnMgYW5kIHByb2Nlc3NvcnMgaGF2ZSBiZWVuIHdhaXRpbmcgc2V2ZXJhbCBtb250aHMgZm9yIHBheW1lbnQgZnJvbSB0aGUgQ01CLCB3aGljaCBoYXMgaGFkIHRyb3VibGUgZmluZGluZyBlbm91Z2ggcmFpbHdheSB3YWdvbnMgdG8gbW92ZSB0aGUgY29mZmVlIHRvIHRoZSBLZW55YW4gcG9ydCBvZiBNb21iYXNhLiAgICAgRm9yZWlnbiBiYW5rcyBoYXZlIGNvbnRyaWJ1dGVkIHRvIHRoZSBjYXNoIGNyaXNpcyBieSBob2xkaW5nIHVwIHJlbWl0dGFuY2Ugb2YgVWdhbmRhJ3MgaGFyZCBjdXJyZW5jeSBlYXJuaW5ncyBmcm9tIGNvZmZlZSBleHBvcnRzLCB0aGUgZ292ZXJubWVudCBuZXdzcGFwZXIgTmV3IFZpc2lvbiBzYWlkLiAgICAgVGhlIGJhbmtzIGFyZSBob2xkaW5nIHVwIHRvIHNldmVuIG1sbiBkbHJzIGluIGNvZmZlZSBtb25leSBhbmQgUHJlc2lkZW50IFlvd2VyaSBNdXNldmVuaSBpcyB0aGlua2luZyBvZiBpbXBvc2luZyBhIHBlbmFsdHkgZm9yIHN1Y2ggZGVsYXlzLCBpdCBhZGRlZC4gICAgIEJhbmtpbmcgc291cmNlcyBzYWlkIGEgdGhpcmQgZmFjdG9yIGluIHRoZSBjcmlzaXMgd2FzIHRoYXQgY29tbWVyY2lhbCBiYW5rcyBoYXZlIGxlbnQgdGhlIGJvYXJkIG9ubHkgNzcgYmlsbGlvbiBzaGlsbGluZ3MgLS0gdGhlIGVxdWl2YWxlbnQgb2YgNTUgbWxuIGRscnMgLS0gZm9yIGNyb3AgZmluYW5jZSBpbiB0aGUgY3VycmVudCBjb2ZmZWUgeWVhciwgd2hpbGUgdGhlIGdvdmVybm1lbnQgaGFkIGFza2VkIGZvciAxMDAgYmlsbGlvbi4gICAgIFRoZSBDTUIgaGFzIDQ1NSwwMDAgNjAta2cgYmFncyBvZiBjb2ZmZWUsIGFib3V0IDE1IHBjdCBvZiBhbm51YWwgcHJvZHVjdGlvbiwgc3RvY2twaWxlZCBpbiBLYW1wYWxhIGF3YWl0aW5nIHNoaXBtZW50LiAgICAgVGhlIGNyb3AgYWNjb3VudHMgZm9yIG92ZXIgOTAgcGN0IG9mIFVnYW5kYSdzIGV4cG9ydCBlYXJuaW5ncyBhbmQgdGhlIHJlY2VudCBzbGlkZSBpbiBwcmljZXMgdG8gZm91ci15ZWFyIGxvd3MgaXMgbGlrZWx5IHRvIG1vcmUgdGhhbiBvZmZzZXQgYW4gZXhwZWN0ZWQgaW5jcmVhc2UgaW4gcHJvZHVjdGlvbi4gICAgIENNQiBvZmZpY2lhbHMgaGF2ZSBmb3JlY2FzdCB0aGF0IGJlY2F1c2UgdGhlIGdvdmVybm1lbnQgaGFzIHJlc3RvcmVkIGxhdyBhbmQgb3JkZXIgaW4gaW1wb3J0YW50IGdyb3dpbmcgYXJlYXMsIFVnYW5kYSB3aWxsIHByb2R1Y2Ugb3ZlciB0aHJlZSBtbG4gYmFncyBvZiBjb2ZmZWUgaW4gdGhlIHllYXIgZW5kaW5nIFNlcHRlbWJlciAzMCwgYWJvdXQgMjUgcGN0IG1vcmUgdGhhbiBpbiAxOTg1LzYuICBSRVVURVIgMzsKMTk4NzA0MTEJVy5HRVJNQU4gQ09DT0EgR1JJTkQgVVAgMi45IFBDVCBJTiBGSVJTVCBRVUFSVEVSIFRoZSBXZXN0IEdlcm1hbiBjb2NvYSBncmluZCByb3NlIDIuOSBwY3QgdG8gNTUsMTkwIHRvbm5lcyBpbiB0aGUgZmlyc3QgcXVhcnRlciBvZiAxOTg3IGZyb20gNTMsNjQzIHRvbm5lcyBpbiB0aGUgc2FtZSBxdWFydGVyIG9mIG9mIDE5ODYsIHRoZSBCb25uLWJhc2VkIENvbmZlY3Rpb25lcnkgSW5kdXN0cnkgQXNzb2NpYXRpb24gc2FpZCBpbiBhIHN0YXRlbWVudC4gIFJFVVRFUiBUQVcgMzsKMTk4NzA0MTEJWUlFTEQgUklTRVMgT04gMzAtREFZIFNBTUEgREVQT1NJVFMgVGhlIHlpZWxkIG9uIDMwLWRheSBCYW5rZXJzIFNlY3VyaXR5IERlcG9zaXQgQWNjb3VudHMgaXNzdWVkIHRoaXMgd2VlayBieSB0aGUgU2F1ZGkgQXJhYmlhbiBNb25ldGFyeSBBZ2VuY3kgKFNBTUEpIHJvc2UgYnkgbW9yZSB0aGFuIDEvOCBwb2ludCB0byA1Ljk1OTEzIHBjdCBmcm9tIDUuNzkzNDggYSB3ZWVrIGFnbywgYmFua2VycyBzYWlkLiAgICAgU0FNQSBkZWNyZWFzZWQgdGhlIG9mZmVyIHByaWNlIG9uIHRoZSA5MDAgbWxuIHJpeWFsIGlzc3VlIHRvIDk5LjUwNTg2IGZyb20gOTkuNTE5NTMgbGFzdCBTYXR1cmRheS4gTGlrZS1kYXRlZCBpbnRlcmJhbmsgZGVwb3NpdHMgd2VyZSBxdW90ZWQgdG9kYXkgYXQgNi0zLzgsIDEvOCBwY3QgLS0gMS84IHBvaW50IGhpZ2hlciB0aGFuIGxhc3QgU2F0dXJkYXkuICAgICBTQU1BIG9mZmVycyBhIHRvdGFsIG9mIDEuOSBiaWxsaW9uIHJpeWFscyBpbiAzMCwgOTEgYW5kIDE4MC1kYXkgcGFwZXIgdG8gYmFua3MgaW4gdGhlIGtpbmdkb20gZWFjaCB3ZWVrLiAgUkVVVEVSIDM7CjE5ODcwNDEzCUJBTksgT0YgRU5HTEFORCBUTyBNT05JVE9SIFdIRU4tSVNTVUVEIFRSQURJTkcgVGhlIEJhbmsgb2YgRW5nbGFuZCB3aWxsIHN0ZXAgdXAgcmVwb3J0aW5nIHJlcXVpcmVtZW50cyBmb3IgcHJpbWFyeSBkZWFsZXJzIGluIFUuSy4gR292ZXJubWVudCBnaWx0cyBkdXJpbmcgdGhlIHdoZW4taXNzdWVkIHRyYWRpbmcgcGVyaW9kIGluIGJldHdlZW4gdGhlIGRhdGUgYW4gYXVjdGlvbiBpcyBhbm5vdW5jZWQgYW5kIHRoZSBkYXRlIHRoZSBzYWxlIGlzIGFjdHVhbGx5IGhlbGQuICAgICBJbiBpdHMgZG9jdW1lbnQgb24gdGhlIGF1Y3Rpb25zLCB0aGUgQmFuayBzYWlkICJUaGUgQmFuayBpcyBjb250ZW50IGZvciBzdWNoICh3aGVuLWlzc3VlZCkgdHJhZGluZyB0byBjZXZlbG9wIHN1YmplY3QgdG8gY2VydGFpbiBjb25kaXRpb25zLCBpbiBwYXJ0aWN1bGFyIGZvciBwcmVkZW50aWFsIHN1cGVydmlzaW9uIG9mIHRoZSBjcmVkaXQgcmlzayB0byB3aGljaCB0aGUgZ2lsdC1lZGdlZCBtYXJrZXQgbWFrZXJzIGFuZCBJbnRlci1kZWFsZXIgYnJva2VycyBtYXkgYmVjb21lIGV4cG9zZWQuIiAgICAgVGhlIEJhbmsgaXMgd2lkZWx5IGV4cGVjdGVkIHRvIHJlcXVpcmUgZGVhbGVycyB0byByZXBvcnQgd2Vobi1pc3N1ZWQgdHJhZGluZyBwb3NpdGlvbnMgb24gYSBkYWlseSBiYXNpcy4gICAgIFdoZW4taXNzdWVkIHRyYWRpbmcgcHJlc2VudHMgY2VydGFpbiB1bnVzdWFsIHJpc2tzIGJlY2F1c2UgZGVhbGVycyBhcmUgYnV5aW5nIGFuZCBzZWxsaW5nIGEgc2VjdXJpdHkgdGhhdCB0ZWNobmljYWxseSBkb2VzIG5vdCBleGlzdCBhbHRob3VnaCB0aGVyZSBpcyBubyB1bmNlcnRhaW50eSBhYm91dCB3aGVuIGl0IHdpbGwgYmUgaXNzdWVkLiAgICAgU3RpbGwsIHRoZSBmYWN0IHRoZXJlIGlzIG5vIHBoeXNpY2FsIGRlbGl2ZXJ5IHBvc3NpYmxlIHByZXNlbnRzIGNlcnRhaW4gY3JlZGl0IHJpc2tzIGFzIHdlbGwuICAgICBUaGUgQmFuayBpcyB3aWRlbHkgZXhwZWN0ZWQgdG8gZXhwYW5kIGl0cyByZXBvcnRpbmcgcmVxdWlyZW1lbm10cyBmb3IgdW5zZXR0bGVkIHRyYWRlcywgcmVxdWlyaW5nIGZpcm1zIHRvIHJlcG9ydCB1bnNldHRsZWQgd2hlbi1pc3N1ZWQgdHJhZGVzIG9uZSBkYXkgYWZ0ZXIgdGhleSBvY2N1ci4gTm9ybWFsbHksIHVuc2V0dGxlZCB0cmFkZXMgbXVzdCBiZSByZXBvcnRlZCB0aHJlZSBkYXlzIGFmdGVyIHRoZXkgb2NjdXIuICBSRVVURVIgMzsKMTk4NzA0MTMJQkFOSyBPRiBORVcgRU5HTEFORCA8QktORS5PPiBQT1NUIFBSTyBGT1JNQSBORVQgQmFuayBvZiBOZXcgRW5nbGFuZCBDb3JwIHJlcG9ydGVkIHRoYXQgcHJvIGZvcm1hIGZpcnN0IHF1YXJ0ZXIgZWFybmluZ3MsIHdoaWNoIHJlZmxlY3QgaXRzICBjb21iaW5lZCBvcGVyYXRpb25zIHVuZGVyIGEgcGVuZGluZyBtZXJnZXIgd2l0aCB0aGUgQ29uaWZlciBHcm91cCwgcm9zZSB0byA2MCBtbG4gZGxycywgb3IgODkgY3RzIGEgc2hhcmUsIGZyb20gNDkgbWxuIGRscnMsIG9yIDc1IGN0cyBhIHNoYXJlIGluIDE5ODYuICAgICBUaGUgbWVyZ2VyIGlzIGV4cGVjdGVkIHRvIGNsb3NlIG9uIEFwcmlsIDIyLiAgICAgRWFybGllciwgQmFuayBvZiBOZXcgRW5nbGFuZCByZXBvcnRlZCBmaXJzdCBxdWFydGVyIG5ldCBpbmNvbWUsIG5vdCB0YWtpbmcgdGhlIG1lcmdlciBpbnRvIGFjY291bnQsIHJvc2UgdG8gMS4wNCBkbHJzIGZyb20gODMgY3RzIGEgc2hhcmUuICAgICBOT1RFOkZpcnN0IHF1YXJ0ZXIgb2YgMTk4NiBkb2VzIG5vdCBpbmNsdWRlIHJlc3RhdGVtZW50IGZyb20gcmVjZW50IGFjcXVpc2l0aW9ucy4gQWZ0ZXIgcmVzdGF0ZW1lbnQsIG5ldCBpbmNvbWUgd2FzIDM5LjggbWxuIGRscnMuICAgICBUaGUgMTk4NyBwcm8gZm9ybWEgZmlyc3QgcXVhcnRlciByZXN1bHRzIGluY2x1ZGUgbm9ucmVjdXJyaW5nIG1lcmdlciBleHBlbnNlcyBvZiA0LjcgbWxuIGRscnMuICAgICBFeGNsdWRpbmcgdGhlc2UgZXhwZW5zZXMsIGdyb3d0aCBpbiBvcGVyYXRpbmcgZXhwZW5zZXMgb2YgdGhlIGNvbWJpbmVkIGNvbXBhbmllcyB3YXMgcmVkdWNlZCBmcm9tIDE0IHBjdCB0byAxMiBwY3QgZHVyaW5nIHRoZSBmaXJzdCBxdWFydGVyLiAgICAgTG9hbnMgYW5kIGxlYXNlcyBpbmNyZWFzZWQgMzQgcGN0IHRvIDE5LjUgYmlsbGlvbiBkbHJzIGFuZCBkZXBvc2l0cyBncmV3IDE0IHBjdCB0byAxOS42IGJpbGxpb24gZGxycy4gICAgIFRoZSBwcm92aXNpb24gZm9yIHBvc3NpYmxlIGNyZWRpdCBsb3NzZXMgd2FzIDE0LjQgbWxuIGRscnMgaW4gdGhlIGZpcnN0IHF1YXJ0ZXIgY29tcGFyZWQgd2l0aCAxOS43IG1sbiBkbHJzIGxhc3QgeWVhci4gICAgIE5ldCBjaGFyZ2Utb2ZmcyB3ZXJlIDEwLjkgbWxuIGRscnMsIGRvd24gZnJvbSAxMi44IG1sbiBkbHJzIGluIDE5ODYuICBSZXV0ZXIgMzsKMTk4NzA0MTMJQk9TVE9OIEZJVkUgPEJGQ1MuTz4sIE5FV09STEQgPE5XT1IuTz4gVE8gTUVSR0UgQm9zdG9uIEZpdmUgQ2VudHMgU2F2aW5ncyBCYW5rIHNhaWQgaXQgYW5kIE5ld29ybGQgQmFuayBmb3IgU2F2aW5ncyBoYXZlIGFncmVlZCB0byBtZXJnZSwgZm9ybWluZyBhIG5ldyBob2xkaW5nIGNvbXBhbnksIEJvc3RvbiBGaXZlIEJhbmNvcnAuICAgICBCb3N0b24gRml2ZSBzYWlkIHRoZSBwcm9wb3NhbCBjYWxscyBmb3IgaXRzIGhvbGRlcnMgdG8gcmVjZWl2ZSAxLjE2MyBzaGFyZXMgb2YgdGhlIG5ldyBjb21wYW55J3Mgc3RvY2sgZm9yIGVhY2ggc2hhcmUgbm93IGhlbGQgYW5kIGZvciBOZXdvcmxkIEJhbmsgaG9sZGVycyB0byByZWNpZXZlIG9uZSBzaGFyZSBmb3IgZWFjaCBzaGFyZSBoZWxkIGluIGEgdGF4IGZyZWUgZXhjaGFuZ2UuICAgICBCb3N0b24gRml2ZSBzYWlkIHRoZSBwbGFubmVkIG1lcmdlciB3aXRoIE5ld3dvcmxkIEJhbmsgZm9yIFNhdmluZ3MgV2lsbCBjcmVhdGUgdGhlIGxhcmdlc3Qgc2F2aW5ncyBiYW5rIGluIE1hc3NhY2h1c2V0dHMgYW5kIHRoZSB0aGlyZCBsYXJnZXN0IGluIE5ldyBFbmdsYW5kIHdpdGggY29tYmluZWQgYXNzZXRzIG9mIDMuMSBiaWxsaW9uIGRscnMuICAgICBCb3N0b24gRml2ZSBjaGFpcm1hbiBSb2JlcnQgSi4gU3BpbGxlciBzYWlkICJUaGVyZSBpcyBhIG5hdHVyYWwgZml0IGJldHdlZW4gYm90aCBiYW5rcy4gV2UgY29uc2lkZXIgdGhpcyB0byBiZSBhIG1lcmdlciBvZiBlcXVhbHMuIiAgICAgU3BpbGxlciB3aWxsIGJlY29tZSBDaGFpcm1hbiBvZiBCb3N0b24gRml2ZSBCYW5jb3JwIGFuZCBOZXdvcmxkIHByZXNpZGVudCBKYW1lcyBNLiBPYXRlcyB3aWxsIGJlIHByZXNpZGVudCBhbmQgY2hpZWYgZXhlY3V0aXZlIG9mZmljZXIuICAgICAgQm9zdG9uIEZpdmUgc2FpZCBpdHMgUHJlc2lkZW50LCBQZXRlciBKLiBCbGFtcGllZCwgd2lsbCBiZWNvbWUgdmljZSBjaGFpcm1hbiBhbmQgY2hpZWYgb3BlcmF0aW5nIG9mZmljZXIgb2YgdGhlIGhvbGRpbmcgY29tcGFueS4gVGhlIGJvYXJkIG9mIHRoZSBob2xkaW5nIGNvbXBhbnkgd2lsbCBoYXZlIGFuIGVxdWFsIG51bWJlciBvZiBkaXJlY3RvcnMgZnJvbSBlYWNoIGluc3RpdHV0aW9uLiAgICAgIlVubGlrZSBtYW55IHJlY2VudCBjb21iaW5hdGlvbnMsIHRoaXMgbWVyZ2VyIGhhcyBubyBhY3F1aXNpdGlvbiBwcmVtaXVtIGFzc29jaWF0ZWQgd2l0aCBpdCwiIEJsYW1waWVkIHNhaWQuICAgICBCb3N0b24gRml2ZSBoYXMgYXNzZXRzb2YgMS45IGJpbGxpb24gZGxycyBhbmQgMzUgb2ZmaWNlcnMuIE5ld29ybGQgaGFzIGFzc2V0cyBvZiAxLjIgYmlsbGlvbiBkbHJzIGFuZCAyNCBvZmZpY2VycyBpbiBNYXNzYWNodXNldHRzLiBJdCBhbHNvIGhhcyBhIGxvYW4gY2VudGVyIGluIE5ldyBIYW1wc2hpcmUuICBSZXV0ZXIgMzsKMTk4NzA0MTMJUFJJTUFSWSBHSUxUUyBERUFMRVJTIE5FRUQgTk9UIEJVWSBBVCBBVUNUSU9OUyBQcmltYXJ5IGRlYWxlcnMgaW4gVS5LLiBHb3Zlcm5tZW50IGdpbHRzIHdpbGwgbm90IGJlIHJlcXVpcmVkIHRvIHVuZGVyd3JpdGUgdGhlIGdvdmVybm1lbnQncyBvZmZlcmluZyBvZiBpdHMgc2VjdXJpdGllcyB3aGVuIHRoZSBmaXJzdCBhdWN0aW9ucyBiZWdpbiBpbiBNaWQtTWF5LCB0aGUgQmFuayBvZiBFbmdsYW5kIHNhaWQuICAgICBJbiBhbiBvZmZpY2lhbCBub3RpY2UgcmVsZWFzZWQgdG9kYXksIHRoZSBCYW5rIHNhaWQgIlRoZXJlIHdpbGwgYmUgbm8gZm9ybWFsIG9yIGluZm9ybWFsIHVuZGVyd3JpdGluZyBhcnJhbmdlbWVudCBmb3IgdGhlIGF1Y3Rpb25zIGJ1dCB0aGUgQmFuayBlbmNvdXJhZ2VzIGFsbCBnaWx0LWVkZ2VkIG1hcmtldCBtYWtlcnMsIGFzIHBhcnQgb2YgdGhlaXIgY29tbWl0bWVudCB0byB0aGUgbWFya2V0LCB0byBwYXJ0aWNpcGF0ZSBhY3RpdmVseSBpbiB0aGUgYXVjdGlvbiBwcm9jZXNzLiIgICAgIFRoZSBCYW5rIHdhcyBvcmlnaW5hbGx5IGJlbGlldmVkIHRvIGhhdmUgZmF2b3VyZWQgcmVxdWlyaW5nIHRoZSBkZWFsZXJzIHRvIHVuZGVyd3JpdGUgYXVjdGlvbnMsIHdoaWNoIGFyZSBwYXR0ZXJuZWQgYWZ0ZXIgdGhvc2UgaW4gdGhlIFUuUy4gVHJlYXN1cnkgbWFya2V0LiAgICAgSG93ZXZlciwgdGhlIFRyZWFzdXJ5IHdhcyBiZWxpZXZlZCB0byBoYXZlIGJhdWxrZWQgYXQgdGhlIHJlcXVlc3QgYnkgdGhlIDI3IG1hcmtldCBtYWtlcnMgZm9yIGFuIGFsbG90bWVudCBjb21taXNzaW9uIHdoaWNoIHdvdWxkIGRpc2NvdXJhZ2UgdGhlIGxhcmdlc3QgaW5zdGl0dXRpb25hbCBpbnZlc3RvcnMgZnJvbSBwbGFjaW5nIG9yZGVycyBmb3IgbmV3IHN0b2NrIGRpcmVjdGx5IHRocm91Z2ggdGhlIEJhbmsgb2YgRW5nbGFuZCwgdGh1cyBkZW55aW5nIHByaW1hcnkgZGVhbGVycyBzb21lIG9mIHRoZWlyIGJlc3QgY3VzdG9tZXJzLiBDb21taXNzaW9uIHdvdWxkIGhhdmUgYmVlbiBwYXNzZWQgYWxvbmcgdG8gY3VzdG9tZXJzIHdobyBkaWQgcGxhY2Ugb3JkZXJzIHZpYSB0aGUgcHJpbWFyeSBkZWFsZXJzLCBtYWtpbmcgaXQgbGVzcyBleHBlbnNpdmUgdG8gYnV5IHRocm91Z2ggdGhlbSB0aGFuIHRvIGdvIGRpcmVjdGx5IHRvIHRoZSBCYW5rLiAgICAgTWFya2V0IHNvdXJjZXMgc2FpZCB0aGUgQmFuayBoYWQsIGluIGl0cyBkaXNjdXNzaW9ucyB3aXRoIHRoZSBkZWFsZXJzIGFib3V0IHRoZSB1cGNvbWluZyBhdWN0aW9ucywgYWdyZWVkIHRoYXQgdGhlIGFsbG90bWVudCBjb21taXNzaW9uIHdhcyByZWFzb25hYmxlIGlmIHRoZSBkZWFsZXJzIGhhZCBhIGNvbmN1cnJlbnQgY29tbWl0bWVudCB0byBidXkgYXQgdGhlIGF1Y3Rpb24gcmVnYXJkbGVzcyBvZiBtYXJrZXQgY29uZGl0aW9ucy4gICAgIEluZGVlZCwgdGhlIEJhbmsgYW5kIHRoZSBnaWx0cyBkZWFsZXJzIGFyZSBiZWxpZXZlZCB0byBiZSBkaXNhcHBvaW50ZWQgdGhhdCB0aGUgVHJlYXN1cnkgaGFzIG5vdCBhZ3JlZWQgdG8gZ28gYWxvbmcgd2l0aCB0aGUgcGxhbi4gSG93ZXZlciwgaW4gaXRzIHBhcGVyLCB0aGUgQmFuayBzdWdnZXN0ZWQgdGhhdCBhbnkgY29uZGl0aW9ucyBhcHBsaWVkIGZvciB0aGUgZmlyc3QgZmV3IGF1Y3Rpb25zIG1heSBiZSBhYmFuZG9uZWQgb3IgbW9kaWZpZWQgaW4gZnV0dXJlIHNhbGVzIG9mIGdpbHRzIGlmIHRoZXkgcHJvdmUgaW5lZmZpY2llbnQgb3IgdW53aWVsZHkuICAgICBBbW9uZyBvdGhlciBpdGVtcyBpbiB0aGUgZG9jdW1lbnQsIHRoZSBCYW5rIHNhaWQgaXRzIGZpcnN0IGF1Y3Rpb24gd2lsbCBjb25zaXN0IG9mIHVwIHRvIDEuMjUgYmlsbGlvbiBzdGcgaW4gY29udmVudGlvbmFsIHNob3J0LWRhdGVkIHN0b2NrIGFuZCBoYXZlIGEgbWF0dXJpdHkgb2Ygc2V2ZW4geWVhcnMgb3IgbGVzcy4gICAgIFN1YnNlcXVlbnQgYXVjdGlvbnMgdG8gYmUgaGVsZCBpbiB0aGUgMTk4Ny04OCBmaW5hbmNpYWwgeWVhciB3b3VsZCBmaXJzdCBiZSBvZiB1cCB0byBvbmUgYmlsbGlvbiBzdGcgb2YgbG9uZy1kYXRlZCBzdG9jayBoYXZpbmcgYSBtYXR1cml0eSBvZiAxNSB5ZWFycyBvciBsb25nZXIgYW5kIHRoZW4gb2YgdXAgdG8gb25lIGJpbGxpb24gc3RnIG9mIG1lZGl1bSBkYXRlZCBzdG9jayBvZiBzZXZlbiB0byAxNSB5ZWFycyBpbiBtYXR1cml0eS4gICAgIFRoZSByZW1haW5kZXIgb2YgdGhlIGdpbHQtZWRnZWQgZnVuZGluZyBwcm9ncmFtIHdvdWxkIGJlIG1ldCBieSB0cmFkaXRpb25hbCB0YXAgb2ZmZXJpbmdzIG9mIHN0b2NrIHZpYSB0aGUgZ292ZXJubWVudCBicm9rZXIuICAgICBUbyBwcm90ZWN0IHRoZSBidXllcnMgb2YgdGhlIG5ld2x5IGF1Y3Rpb25lZCBzdG9jaywgdGhlIEJhbmsgaGFzIGFncmVlZCB0byBlc3RhYmxpc2ggYSBzby1jYWxsZWQgZmFsbG93IHBlcmlvZCwgYSAyOC1kYXkgcGVyaW9kIGR1cmluZyB3aGljaCBpdCBhZ3JlZXMgbm90IHRvIGlzc3VlIGFueSBuZXcgc3RvY2sgb2YgdGhlIHNhbWUgdHlwZSwgYW5kIGl0IHdpbGwgbm90IG5lY2Vzc2FyaWx5IHJlc3VtZSBzZWxsaW5nIHRoZSBzdG9jayBvbmNlIHRoZSBmYWxsb3cgcGVyaW9kIGV4cGlyZXMuICAgICBJbiB0aGUgZXZlbnQgdGhhdCBwcmljZXMgb2ZmZXJlZCBmb3IgdGhlIHN0b2NrIHRvIGJlIHNvbGQgYXJlIHN1YnN0YW50aWFsbHkgb3V0IG9mIGxpbmUgd2l0aCBtYXJrZXQgY29uZGl0aW9ucywgdGhlIEJhbmsgd2lsbCBhZ3JlZSB0byB0YWtlIHRoZSBzdG9jayBvbnRvIGl0cyBvd24gYm9va3MuICAgICBUaGUgYmFuayB3b3VsZCB0aGVuIGJlIGZyZWUgdG8gc2VsbCB0aGUgc3RvY2sgZHVyaW5nIHRoZSBmYWxsb3cgcGVyaW9kIGJ1dCBub3QgYXQgYSBwcmljZSBiZWxvdyB0aGUgbWluaW11bSB0ZW5kZXIgcHJpY2UuICAgICBUaGUgQmFuayBhbHNvIHNhaWQgdGhhdCBhdCBsZWFzdCBpbml0aWFsbHksIGF1Y3Rpb25zIHdpbGwgYmUgYWxsb3RlZCBvbiBhIGJpZCBwcmljZSBiYXNpcywgYSBzeXN0ZW0gdW5kZXIgd2hpY2ggYmlkZGVycyBhcmUgYWxsb3R0ZWQgc3RvY2sgYXQgdGhlIHByaWNlIHdoaWNoIHRoZXkgYmlkLiAgICAgSG93ZXZlciwgdGhlIEJhbmsgc2FpZCBpdCByZXNlcnZlcyB0aGUgcmlnaHQgdG8gbGltaXQgYW55IG1vbmV5IG1hcmtldCBtYWtlciBmcm9tIGJ1eWluZyBtb3JlIHRoYW4gMjUgcGN0IG9mIGEgc2luZ2xlIGF1Y3Rpb24uIFRoZSBCYW5rIGlzIHdpZGVseSBiZWxpZXZlZCB0byBiZSBjb25jZXJuZWQgYWJvdXQgcHJldmVudGluZyBhIHNpbmdsZSBtYXJrZXQgbWFrZXIgZnJvbSBjb3JuZXJpbmcgYSBzdG9jayB0byBkcml2ZSB0aGUgcHJpY2UgdXAuICAgIFRoZSBCYW5rIGhhcyByZXBlYXRlZGx5IHNpZ25hbGxlZCBpdHMgaW50ZW50aW9uIHRvIHByZXZlbnQgZGVhbGVycyBmcm9tIGNvcm5lcmluZyB0aGUgbWFya2V0IGluIGEgc3RvY2ssIGlzc3VpbmcgYWRkaXRpb25hbCBzdG9jaywgb24gb2NjYXNpb24sIHRvIGVuZCBhIG1hcmtldCBzaG9ydGFnZS4gICAgIFRoZSBCYW5rIGhhcyBhbHNvIGFncmVlZCB0byBwdWJsaXNoIGluZm9ybWF0aW9uIGFib3V0IHRoZSBhdWN0aW9uIHJlc3VsdHMgYXMgc29vbiBhcyBwb3NzaWJsZSBhZnRlciB0aGUgc2FsZSBpcyBjb21wbGV0ZSwgd2hpY2ggaXMgd2lkZWx5IGV4cGVjdGVkIHRvIGJlIG9uIHRoZSBzYW1lIGRheS4gICAgIEluZm9ybWF0aW9uIHRvIGJlIHJlbGVhc2VkIHdpbGwgaW5jbHVkZSB0aGUgYW1vdW50IG9mIHN0b2NrIGFsbG90dGVkIGluIHRlcm1zIG9mIGJvdGggY29tcGV0aXRpdmUgYW5kIG5vbi1jb21wZXRpdGl2ZSBiaWRzLCBhbmQgdGhlIGhpZ2hlc3QsIGxvd2VzdCBhbmQgYXZlcmFnZSBwcmljZSBvZiB0aGUgc3VjY2Vzc2Z1bCBiaWRzLiAgUkVVVEVSIDM7CjE5ODcwNDEzCVUuSy4gTU9ORVkgTUFSS0VUIERFRklDSVQgRk9SRUNBU1QgQVQgNDAwIE1MTiBTVEcgVGhlIEJhbmsgb2YgRW5nbGFuZCBzYWlkIGl0IGZvcmVjYXN0IGEgc2hvcnRhZ2Ugb2YgYXJvdW5kIDQwMCBtbG4gc3RnIGluIHRoZSBtb25leSBtYXJrZXQgdG9kYXkuICAgICBBbW9uZyB0aGUgbWFpbiBmYWN0b3JzIGFmZmVjdGluZyBsaXF1aWRpdHksIGJpbGxzIG1hdHVyaW5nIGluIG9mZmljaWFsIGhhbmRzIGFuZCB0aGUgdGFrZS11cCBvZiB0cmVhc3VyeSBiaWxscyB3aWxsIGRyYWluIHNvbWUgMS4wODUgYmlsbGlvbiBzdGcuICAgICBQYXJ0bHkgb2Zmc2V0dGluZyB0aGVzZSBvdXRmbG93cywgYSBmYWxsIGluIG5vdGUgY2lyY3VsYXRpb24gd2lsbCBhZGQgc29tZSAzNDAgbWxuIHN0ZywgZXhjaGVxdWVyIHRyYW5zYWN0aW9ucyBhcm91bmQgMzAwIG1sbiBhbmQgYmFua2VycycgYmFsYW5jZXMgYWJvdmUgdGFyZ2V0IGFib3V0IDUwIG1sbi4gIFJFVVRFUiAzOwoxOTg3MDQxMwlVLksuIE1PTkVZIE1BUktFVCBHSVZFTiA3NSBNTE4gU1RHIEFTU0lTVEFOQ0UgVGhlIEJhbmsgb2YgRW5nbGFuZCBzYWlkIGl0IGhhZCBwcm92aWRlZCB0aGUgbW9uZXkgbWFya2V0IHdpdGggNzUgbWxuIHN0ZyBoZWxwIGluIHRoZSBtb3JuaW5nIHNlc3Npb24uIFRoaXMgY29tcGFyZXMgd2l0aCB0aGUgQmFuaydzIGVzdGltYXRlIHRoYXQgdGhlIHN5c3RlbSB3b3VsZCBmYWNlIGEgc2hvcnRhZ2Ugb2YgYXJvdW5kIDQwMCBtbG4gc3RnIHRvZGF5LiAgICAgVGhlIGNlbnRyYWwgYmFuayBib3VnaHQgYmFuayBiaWxscyBvdXRyaWdodCBjb21wcmlzaW5nIHR3byBtbG4gc3RnIGluIGJhbmQgdHdvIGF0IDktMTMvMTYgcGN0LCAxNSBtbG4gc3RnIGluIGJhbmQgdGhyZWUgYXQgOS0zLzQgcGN0IGFuZCA1OCBtbG4gc3RnIGluIGJhbmQgdGhyZWUgYXQgOS0xMS8xNiBwY3QuICBSRVVURVIgMzsKMTk4NzA0MTMJVS5LLiBNT05FWSBNQVJLRVQgR0lWRU4gRlVSVEhFUiA2OCBNTE4gU1RHIEhFTFAgVGhlIEJhbmsgb2YgRW5nbGFuZCBzYWlkIGl0IHByb3ZpZGVkIHRoZSBtYXJrZXQgd2l0aCBhIGZ1cnRoZXIgNjggbWxuIHN0ZyBhc3Npc3RhbmNlIHRoaXMgYWZ0ZXJub29uLCBicmluZ2luZyBpdHMgdG90YWwgYXNzaXN0YW5jZSBvbiB0aGUgZGF5IHRvIDE0MyBtbG4gc3RnLiAgICBTaG9ydGx5IGJlZm9yZSwgdGhlIEJhbmsgc2FpZCBpdCBoYWQgcmV2aXNlZCBpdHMgZXN0aW1hdGUgb2YgdGhlIHNob3J0YWdlIHVwIHRvIDQ1MCBtbG4gc3RnIGZyb20gdGhlIGVhcmxpZXIgZm9yZWNhc3Qgb2YgNDAwIG1sbi4gICAgIER1cmluZyB0aGUgYWZ0ZXJub29uLCB0aGUgYmFuayBib3VnaHQgMjIgbWxuIHN0ZyBvZiBiYW5kIHR3byBiYW5rIGJpbGxzIGF0IDktMTMvMTYgcGN0IGFuZCB0d28gbWxuIHN0ZyBvZiBsb2NhbCBhdXRob3JpdHkgYmlsbHMgcGx1cyA0NCBtbG4gc3RnIG9mIGJhbmsgYmlsbHMgaW4gYmFuZCBmb3VyIGF0IDktMTEvMTYgcGN0LiBUaGVzZSByYXRlcyB3ZXJlIGluIGFsbCBjYXNlcyB1bmNoYW5nZWQgZnJvbSBwcmV2aW91cyBpbnRlcnZlbnRpb24gbGV2ZWxzLiAgUkVVVEVSIDM7CjE5ODcwNDEzCVUuSy4gTU9ORVkgTUFSS0VUIEdJVkVOIExBVEUgSEVMUCBPRiAyMTAgTUxOIFNURyBUaGUgQmFuayBvZiBFbmdsYW5kIHNhaWQgaXQgZ2F2ZSB0aGUgbWFya2V0IGxhdGUgYXNzaXN0YW5jZSBvZiBhcm91bmQgMjEwIG1sbiBzdGcsIGJyaW5naW5nIGl0cyB0b3RhbCBoZWxwIG9uIHRoZSBkYXkgdG8gc29tZSAzNTMgbWxuIHN0Zy4gICAgIFRoaXMgY29tcGFyZXMgd2l0aCB0aGUgQmFuaydzIGVzdGltYXRlIG9mIHRoZSBsaXF1aWRpdHkgc2hvcnRhZ2Ugb2YgYXJvdW5kIDQ1MCBtbG4gc3RnLCByYWlzZWQgZnJvbSBpdHMgZWFybHkgZm9yZWNhc3Qgb2YgNDAwIG1sbiBzdGcuICBSRVVURVIgMzsKMTk4NzA2MDEJKFNVQlVSQkFOIEJBTkNPUlApLCAoV09PRFNUT0NLIEJBTkNPUlApIFRPIE1FUkdFIChTdWJ1cmJhbiBCYW5jb3JwIEluYykgYW5kIChXb29kc3RvY2sgU3RhdGUgQmFuY29ycCBJbmMpIHNhaWQgdGhleSBhZ3JlZWQgdG8gYSBtZXJnZXIgdW5kZXIgd2hpY2ggU3VidXJiYW4gd2lsbCBwdXJjaGFzZSBXb29kc3RvY2sncyBzaGFyZXMgZm9yIGEgdG90YWwgb2YgbW9yZSB0aGFuIDE4IG1sbiBkbHJzIGluIGNhc2ggYW5kIFN1YnVyYmFuIEJhbmNvcnAgc2hhcmVzLiAgICAgV29vZHN0b2NrIGlzIHRoZSBob2xkaW5nIGNvbXBhbnkgZm9yIHRoZSAxMTAgbWxuIGRsciBTdGF0ZSBCYW5rIG9mIFdvb2RzdG9jay4gVGhlIG1lcmdlciB3aWxsIGJyaW5nIFN1YnVyYmFuJ3MgYXNzZXRzIHRvIDY2MSBtbG4gZGxycyBhbmQgaXRzIHRvdGFsIGJhbmtzIHRvIDEzLiAgICAgVGhlIG1lcmdlciBpcyBzdWJqZWN0IHRvIHJlZ3VsYXRvcnkgYW5kIHNoYXJlaG9sZGVyIGFwcHJvdmFsLiAgUmV1dGVyIDM7CjE5ODcwNjAxCTxTRU1JQ09OIFRPT0xTIElOQz4gTUFLSU5HIEFDUVVJU0lUSU9OIFNlbWljb24gVG9vbHMgSW5jIHNhaWQgaXQgaGFzIHNpZ25lZCBhIGxldHRlciBvZiBpbnRlbnQgdG8gYWNxdWlyZSBhIG1ham9yaXR5IGludGVyZXN0IGluIHByaXZhdGVseSBoZWxkIEVhc3QgQ29hc3QgU2FsZXMsIGEgZGlzdHJpYnV0b3IgYW5kIGZhYnJpY2F0b3Igb2YgdGVjaG5pY2FsIGNlcmFtaWMgcHJvZHVjdHMgYW5kIGRpc3Bvc2FibGUgY2xlYW4gcm9vbSBtYXRlcmlhbHMgYW5kIHN1cHBsaWVzLiAgICAgVGVybXMgd2VyZSBub3QgZGlzY2xvc2VkLiAgICAgSXQgc2FpZCBpdCBleHBlY3RzIHRvIGFjcXVpc2l0aW9uIHRvIHJlc3VsdCBpbiBhIHN1YnN0YW50aWFsIHNhbGVzIGluY3JlYXNlLiAgUmV1dGVyIDM7CjE5ODcwNjAxCUFEVkFOQ0VEIFNZU1RFTVMgSU5DPEFTWT4gMk5EIFFUUiBBUFJJTCAzMCBORVQgU2hyIDMyIGN0cyB2cyAyMiBjdHMgICAgIE5ldCAyLDAyMiwwMDAgdnMgMSwzNTUsMDAwICAgICBSZXZzIDE2LjAgbWxuIHZzIDEzLjIgbWxuICAgICBBdmcgc2hycyA2LDIzNywwMDAgdnMgNiwwNTIsMDAwICAgICBTaXggbXRocyAgICAgU2hyIDU4IGN0cyB2cyA0MiBjdHMgICAgIE5ldCAzLDU2MSwwMDAgdnMgMiw1MjUsMDAwICAgICBSZXZzIDMwLjAgbWxuIHZzIDI2LjEgbWxuICAgICBBdmcgc2hycyA2LDE4MCwwMDAgdnMgNiwwMTcsMDAwICBSZXV0ZXIgMzsKMTk4NzA2MDEJQUxMSUVELVNJR05BTCA8QUxEPiBDT01QTEVURVMgU0FMRSBPRiBNUEIgQ09SUCBBbGxpZWQtU2lnbmFsIEluYyBzYWlkIGl0ICBjb21wbGV0ZWQgdGhlIHNhbGUgb2YgaXRzIE1QQiBDb3JwIHVuaXQgdG8gQmVhcmluZyBBY3F1aXNpdGlvbiBDb3JwIGZvciAxNDUgbWxuIGRscnMgcGx1cyBhc3N1bXB0aW9uIG9mIGNlcnRhaW4gTVBCIGxpYWJpbGl0aWVzLiAgICAgSGVhZHF1YXJ0ZXJlZCBpbiBLZWVuZSwgTi5ILiwgTVBCIGRlc2lnbnMgYW5kIG1ha2VzIHByZWNpc2lvbiBiYWxsIGFuZCByb2xsZXIgYmVhcmluZ3MgdXNlZCBpbiBhZXJvc3BhY2UsIG9yZG5hbmNlIGFuZCBjb21wdXRlciBhcHBsaWNhdGlvbnMuIEFsbGllZC1TaWduYWwgc2FpZCB0aGUgdW5pdCBoYWQgMTk4NiBzYWxlcyBvZiBvdmVyIDkwIG1sbiBkbHJzLiAgICAgSXQgbm90ZWQgdGhlIHNhbGUgdG8gbmV3bHkgZm9ybWVkIEJlYXJpbmcgQWNxdWlzaXRpb24gd2FzIGFubm91bmNlZCBNYXkgMTguICAgICAgICAgQWxsaWVkLVNpZ25hbCBzYWlkIEJlYXJpbmcgQWNxdWlzaXRpb24gaXMgYSBuZXdseS1mb3JtZWQgY29ycG9yYXRpb24gb3duZWQgYnkgYW4gaW52ZXN0b3JzIGdyb3VwIG9yZ2FuaXplZCBieSBIYXJvbGQgUy4gR2VuZWVuIGFuZCBEb25hbGRzb24gTHVma2luIGFuZCBKZW5yZXR0ZSBTZWN1cml0aWVzIENvcnAuICAgICBXZWxscyBGYXJnbyBCYW5rIHByb3ZpZGVkIHNlbmlvciBkZWJ0IGZpbmFuY2luZyB0byBCZWFyaW5nIEFjcXVpc2l0aW9uIGFuZCBEb25hbGRzb24gTHVma2luIGFuZCBKZW5yZXR0ZSBwcm92aWRlZCBicmlkZ2UgZmluYW5jaW5nIGluIHRoZSBmb3JtIG9mIHN1Ym9yZGluYXRlZCBub3RlcywgcHJlZmVycmVkIHN0b2NrIGFuZCBjb21tb24gc3RvY2sgaW4gYW4gYW1vdW50IHN1ZmZpY2llbnQgdG8gZnVuZCB0aGUgcHVyY2hhc2UgcHJpY2UsIEFsbGllZC1TaWduYWwgYWRkZWQuICBSZXV0ZXIgMzsKMTk4NzA2MDEJQVRDT1I8QVRDTy5PPiBTRUVLUyBCVVlFUlMgRk9SIENPTlNVTUVSIEJVU0lORVNTIEF0Y29yIEluYyBzYWlkIHRoYXQgUm90aC1BbWVyaWNhbiBJbmMsIHdoaWNoIGhhZCBzaWduZWQgYSBsZXR0ZXIgb2YgaW50ZW50IG9uIE1heSAxIHRvIGFjcXVpcmUgaXRzIFR1cmNvIGFuZCBDaGFybWdsb3cgb3BlcmF0aW9ucyBvZiBpdHMgY29uc3VtZXIgcHJvZHVjdHMgc2VnbWVudCwgaGFzIGRlY2lkZWQgYWdhaW5zdCBidXlpbmcgQ2hhcm1nbG93LiAgICAgV2hpbGUgUm90aC1BbWVyaWNhbiBzYWlkIGl0IGlzIHN0aWxsIGludGVyZXN0ZWQgaW4gYWNxdWlyaW5nIFR1cmNvLCBBdGNvciBzYWlkIGl0IGlzIG5vdyByZXZpZXdpbmcgaXRzIG9wdGlvbnMgd2l0aCBvdGhlciBwb3RlbnRpYWwgYnV5ZXJzIHdobyBoYXZlIGV4cHJlc3NlZCBpbnRlcmVzdCBpbiBpdHMgY29uc3VtZXIgcHJvZHVjdHMgYnVzaW5lc3Nlcy4gIFJldXRlciAzOwoxOTg3MDYwMQlCQUtFUiBIVUdIRVMnIDxCSEk+IFUuUy4gUklHIENPVU5UIEZBTExTIFRPIDc1OCBUaGUgVS5TLiBkcmlsbGluZyByaWcgY291bnQgZmVsbCBieSBmb3VyIGxhc3Qgd2VlayB0byBhIHRvdGFsIG9mIDc1OCwgYWdhaW5zdCA3MjMgd29ya2luZyByaWdzIGF0IHRoaXMgdGltZSBsYXN0IHllYXIsIEJha2VyIEh1Z2hlcyBJbmMgc2FpZC4gICAgIEluIENhbmFkYSwgdGhlIHdlZWtseSByaWcgY291bnQgcm9zZSAxOSB0byAxMDAsIGNvbXBhcmVkIHRvIDQ2IHdvcmtpbmcgcmlncyBsYXN0IHllYXIuICAgICBBbW9uZyBpbmRpdmlkdWFsIHN0YXRlcywgdGhlIHN0ZWVwZXN0IGRlY2xpbmVzIHdlcmUgaW4gT2tsYWhvbWEgYW5kIExvdWlzaWFuYSB3aGljaCBsb3N0IGVpZ2h0IGFuZCBzZXZlbiwgcmVzcGVjdGl2ZWx5LiBEcmlsbGluZyBpbmNyZWFzZXMgd2VyZSByZXBvcnRlZCBieSBNaWNoaWdhbiwgdXAgYnkgZml2ZSByaWdzLCBhbmQgT2hpbyBhbmQgUGVubnN5bHZhbmlhIHdoaWNoIGVhY2ggcm9zZSBieSB0aHJlZS4gQmFrZXIgSHVnaGVzIHNhaWQgdGhlIHRvdGFsIG9mIDc1OCB3b3JraW5nIHJpZ3MgaW4gdGhlIFVuaXRlZCBTdGF0ZXMgaW5jbHVkZWQgODQgcmlncyB3b3JraW5nIGluIG9mZnNob3JlIHdhdGVycy4gIFJldXRlciAzOwoxOTg3MDYwMQlCQVJMRVkgU09MRCBUTyBTQVVESSBBUkFCSUEgIC0gVVNEQSBQcml2YXRlIGV4cG9ydGVycyByZXBvcnRlZCBzYWxlcyBvZiAxNTAsMDAwIHRvbm5lcyBvZiBiYXJsZXkgdG8gU2F1ZGkgQXJhYmlhIGZvciBkZWxpdmVyeSBpbiB0aGUgMTk4Ny84OCBzZWFzb24sIHRoZSBVLlMuIEFncmljdWx0dXJlIERlYXBhcnRtZW50IHNhaWQuICAgICBUaGUgMTk4Ny84OCBzZWFzb24gZm9yIGJhcmxleSBiZWdpbnMgdG9kYXkuICBSZXV0ZXIgMzsKMTk4NzA2MDEJQklMWkVSSUFOIFBSRVBBUkVEIFRPIFRFTkRFUiBGT1IgUEFZIE4nUEFLIDxQTlA+IEludmVzdG9yIFBhdWwgQmlsemVyaWFuIHNhaWQgaWYgUGF5IE4nIFBhayBTdG9yZXMgSW5jIGVudGVycyBpbnRvIGEgbWVyZ2VyIGFjY29yZCB3aXRoIGhpbSBoZSB3aWxsIGltbWVkaWF0ZWx5IGJlZ2luIGEgdGVuZGVyIG9mZmVyIGZvciA3LjUgbWxuIHNoYXJlcyBmb3IgMjAgZGxycyBwZXIgc2hhcmUgaW4gY2FzaC4gICAgIEJpbHplcmlhbiB0b2xkIFJldXRlcnMgaGUgYmVsaWV2ZXMgaGlzIG9mZmVyIGlzIHN1cGVyaW9yIHRvIGEgbGV2ZXJhZ2VkIGJ1eW91dCBwcm9wb3NhbCBkaXNjbG9zZWQgaW4gYW4gYW5ub3VuY2VtZW50IGJ5IHRoZSBjb21wYW55IHRoaXMgbW9ybmluZy4gICAgIFRoZSBjb21wYW55IHNhaWQgaXQgaXMgZXZhbHVhdGluZyBib3RoIHByb3Bvc2Fscy4gQmlsaXplcmlhbiBzYWlkIGhlIHdhcyBvcHRpbWlzdGljIGhpcyBvZmZlciB3aWxsIGJlIGFjY2VwdGVkIGF0IGEgbWVldGluZyBvZiB0aGUgYm9hcmQgb2YgZGlyZWN0b3JzIFdlZG5lc2RheS4gT2ZmaWNpYWxzIG9mIFBheSBOJyBQYWsgZGlkIHdlcmUgbm90IGltbWVkaWF0ZWx5IGF2YWlsYWJsZSBmb3IgY29tbWVudC4gICAgICAgQmlsemVyaWFuIHNhaWQgaGUgaGFzIGEgcG9vbCBvZiAxNTAgbWxuIGRscnMgcmFpc2VkIGJ5IFNoZWFyc29uIExlaG1hbiBCcm90aGVycyBJbmMgYXZhaWxhYmxlIGZvciB0aGUgdGVuZGVyIGFuZCAid2UgbWF5IGFkZCBhIGJhbmsgdG8gdGhhdC4iICAgICAiV2UndmUgc3VibWl0dGVkIGFuIGFncmVlbWVudCB3ZSdyZSBwcmVwYXJlZCB0byBzaWduLCIgaGUgc2FpZC4gU2hhcmVzIG5vdCBhY2NlcHRlZCBpbiBCaWx6ZXJpYW4ncyB0ZW5kZXIgd291bGQgYmUgZXhjaGFuZ2VhYmxlIGZvciAyMCBkbHJzIGluIGNvbnZlcnRpYmxlIHByZWZlcnJlZCBzdG9jay4gICAgIEFza2VkIHdoYXQgd291bGQgaGFwcGVuIGlmIHRoZSBsZXZlcmFnZWQgYnV5b3V0IGdyb3VwLCB3aGljaCB0aGUgY29tcGFueSBkaWQgbm90IGlkZW50aWZ5LCB0b3BwZWQgaGlzIG9mZmVyIGJldHdlZW4gbm93IGFuZCB0aGUgYm9hcmQgbWVldGluZywgQmlsemVyaWFuIHNhaWQgaGUgZXhwZWN0ZWQgYW4gb3Bwb3J0dW5pdHkgdG8gcmVzcG9uZC4gICAgIFBheSBOJyBQYWsgZ2F2ZSBubyBkZXRhaWxzIGFib3V0IHRoZSBidXlvdXQgZ3JvdXAsIGJ1dCBkaWQgc2F5IHRoZSBvZmZlciB3YXMgY29udGluZ2VudCBvbiBmaW5hbmNpbmcgYW5kIG9uIGFuIGFncnJlZW1lbnQgcmVnYXJkaW5nIG1hbmFnZW1lbnQncyBlcXVpdHkgcGFydGljaXBhdGlvbi4gICAgIEJpbHplcmlhbiBzYWlkIGl0IHdhcyBoaXMgdW5kZXJzdGFuZGluZyB0aGF0IHRoZSBtYW5hZ2VtZW50IHBhcnRpY3BhdGlvbiB3YXMgIm5vbWluYWwuIiAgICAgUGF5IE4nIFBhayBmZWxsIDEtMS8yIHRvIDE5LiBBcmJpdHJhZ2V1cnMgc2FpZCB0aGVyZSB3YXMgZGlzYXBwb2ludG1lbnQgdGhhdCBuZWl0aGVyIG9mIHRoZSBvZmZlcnMgdG9wcGVkIDIwIGRscnMuICAgICAiV2Ugd2VyZSBleHBlY3RpbmcgYW4gb2ZmZXIgbm9ydGggb2YgKGFib3ZlKSAyMSBvciAyMiBkbHJzLCIgc2FpZCBvbmUgYXJiaXRyYWdldXIuIFRoZSBsZXZlcmFnZWQgYnV5b3V0IHBsYW4gd2FzIGZvciAxNy41MCBkbHJzIHBlciBzaGFyZSBpbiBjYXNoIGFuZCAyLjUwIGRscnMgaW4gMTMtMS8yIHBjdCBjdW11bGF0aXZlIHByZWZlcnJlZCBzdG9jay4gICAgICBSb2JlcnQgQ2hlYWRsZSwgYW5hbHlzdCBhdCBNb250Z29tZXJ5IFNlY3VyaXRpZXMsIHNhaWQgInlvdSBoYXZlIHRvIGFzayB5b3Vyc2VsZiB3aHkgbm8gb25lIGluIHRoZSBpbmR1c3RyeSBtYWRlIGEgYmlkLiIgICAgIFNjb3R0IERyeXNkYWxlLCBhbmFseXN0IGF0IEJpcnIgV2lsc29uIFNlY3VyaXRpZXMsIHNhaWQgdGhlIGNvbXBhbnkgaGFzIG5vdCBtYWRlIHRoZSBiZXN0IHN0cmF0ZWdpYyBtb3ZlcyBvdmVyIHRoZSB5ZWFycy4gIlRoZXkgaGF2ZSBub3QgZG9uZSB0aGUgcmlnaHQgdGhpbmdzIGF0IHRoZSByaWdodCB0aW1lLCIgaGUgc2FpZCwgYW5kIGFzIGEgcmVzdWx0IGVhcm5pbmdzIHBlciBzaGFyZSBoYXZlIHN0ZWFkaWx5IGRlY2xpbmVkIHNpbmNlIDE5ODQuIFRoZSA1NyBjdHMgcGVyIHNoYXJlIGluIGVhcm5pbmdzIHJlcG9ydGVkIGZvciB0aGUgZmlzY2FsIHllYXIgZW5kZWQgaW4gRmVicnVhcnkgd2FzIGxvd2VyIHRoYW4gMTk3OCdzIGVhcm5pbmdzLCBoZSBzYWlkLiBFYXJuaW5ncyB0b3RhbGVkIDUuNyBtbG4gZGxycyBvbiByZXZlbnVlIG9mIDM5OC40IG1sbiBkbHJzLiAgICAgRHJ5c2RhbGUgc2FpZCBQYXkgTicgUGFrIGhhcyBiZXR0ZXIgdHJhaW5lZCBzYWxlcyBwZW9wbGUgdGhhbiBtYW55IGNvbXBldGl0b3JzLCBidXQgaXQgY29tcGV0ZXMgb24gcHJpY2UgZXZlbiB0aG91Z2ggY29tcGV0aXRvcnMgaGF2ZSBsb3dlciBjb3N0cy4gVGhlIHJlc3VsdCBpcyBzcXVlZXplZCBtYXJnaW5zLiBIZSBub3RlZCB0aGF0IHRoZXJlIGhhdmUgYmVlbiBubyBvdGhlciBwdWJsaWNseSBpZGVudGlmaWVkIGJpZGRlcnMgc3RlcHBpbmcgZm9yd2FyZCBzaW5jZSB0aGUgY29tcGFueSByZWplY3RlZCBhbiBlYXJsaWVyIEJpbHplcmlhbiBwcm9wb3NhbCBpbiBtaWQtQXByaWwuICAgICBBbm90aGVyIGFyYml0cmFnZXVyIHNhaWQgaXQgbWlnaHQgbm90IGJlIHRvbyBsYXRlIGZvciBhbm90aGVyIGJpZGRlciB0byBnZXQgaW4gdGhlIGdhbWUuIEhlIHNwZWN1bGF0ZWQgdGhhdCBzb21lb25lIGluIHRoZSBzYW1lIGhvbWUgaW1wcm92ZW1lbnQgYnVzaW5lc3MgbWlnaHQgYmUgYWJsZSB0byBvZmZlciBhIGRlYWwgZm9yIHN0b2NrIHRoYXQgd291bGQgdG9wIGJvdGggdGhlIGJ1eW91dCBwcm9wb3NhbCBhbmQgQmlsemVyaWFuJ3MgcGxhbi4gIFJldXRlciAzOwoxOTg3MDYwMQlCT0VJTkcgPEJBPiBUTyBBQ1FVSVJFIERFRkVOU0UgRUxFQ1RST05JQ1MgRklSTSBCb2VpbmcgQ28gYW5kIEFSR09TeXN0ZW1zIEluYyA8QVJHSS5PPiBzYWlkIHRoZXkgcmVhY2hlZCBhbiBhZ3JlZW1lbnQgZm9yIEJvZWluZyB0byBhY3F1aXJlIHRoZSBTdW5ueXZhbGUsIENhbGlmLiwgZGVmZW5zZSBlbGVjdHJvbmljcyBmaXJtIGZvciBhYm91dCAyNzUgbWxuIGRscnMuICAgICBUaGUgYm9hcmRzIG9mIGJvdGggY29tcGFuaWVzIGhhdmUgYXBwcm92ZWQgdGhlIG1lcmdlciwgd2hpY2ggd2lsbCBiZSBhY2NvbXBsaXNoZWQgdGhyb3VnaCBhIHRlbmRlciBvZmZlciBieSBhIEJvZWluZyBzdWJzaWRpYXJ5IG9mIDM3IGRscnMgYSBzaGFyZSBjYXNoIGZvciBhbGwgb2YgQVJHT1N5c3RlbXMnIHNoYXJlcywgdGhlIGNvbXBhbmllcyBzYWlkLiAgICAgVW5kZXIgdGhlIGFncmVlbWVudCwgdGhlIEJvZWluZyBzdWJzaWRpYXJ5LCBUQkMgSG9sZGluZ3MgQ29ycCwgd2lsbCBiZWdpbiB0aGUgdGVuZGVyIG9mZmVyIHByb21wdGx5LiBJZiBhdCBsZWFzdCA5MCBwY3Qgb2YgdGhlIHNoYXJlcyBhcmUgbm90IHRlbmRlcmVkLCB0aGUgb2ZmZXIgd2lsbCBiZSBwcm9yYXRlZCB0byA0OSBwY3QsIHRoZSBjb21wYW5pZXMgc2FpZC4gICAgIEFSR09TeXN0ZW1zIGhhcyBncmFudGVkIEJvZWluZyBhbiBvcHRpb24gdG8gYnV5IDEsMjM4LDMxMSBzaGFyZXMgb3IgMTguNSBwY3Qgb2YgdGhlIG91dHN0YW5kaW5nIHN0b2NrIGZvciAzNyBkbHJzIGEgc2hhcmUsIHRoZXkgc2FpZC4gICAgIEFsc28sIEJpbGwgTWF5LCBjaGFpcm1hbiBvZiBBUkdPU3lzdGVtcywgYW5kIHRocmVlIG90aGVyIG9mZmljZXJzIGhhdmUgZ3JhbnRlZCBCb2VpbmcgYW4gb3B0aW9uIHRvIGJ1eSB0aGVpciBzaGFyZXMsIGFub3RoZXIgOC45IHBjdCBvZiB0aGUgb3V0c3RhbmRpbmcgc3RvY2ssIGZvciAzNyBkbHJzIGEgc2hhcmUuICAgICBBUkdPU3lzdGVtcyBtYWtlcyBlcXVpcG1lbnQgdG8gbW9uaXRvciBhbmQgYW5hbHl6ZSBtaWxpdGFyeSBjb21tdW5pY2F0aW9ucyBzaWduYWxzLCBlbGVjdHJvbmljIHdhcmZhcmUgZXF1aXBtZW50IHRvIG1vbml0b3IgYW5kIGphbSByYWRhciBzaWduYWxzIGFuZCBzaWduYWwgcHJvY2Vzc2luZyBzeXN0ZW1zLiAgICAgRm9yIHRoZSBuaW5lIG1vbnRocyBlbmRlZCBNYXJjaCAzMSwgMTk4NywgQVJHT1N5c3RlbXMgcmVwb3J0ZWQgZWFybmluZ3MgbW9yZSB0aGFuIGRvdWJsZWQgdG8gNi4zIG1sbiBkbHJzIG9yIDk1IGN0cyBhIHNoYXJlIGZyb20gMy4xIG1sbiBkbHJzIG9yIDQ2IGN0cy4gVGhlIHllYXItYWdvIHBlcmlvZCBpbmNsdWRlZCBhIDIuMiBtbG4gZGxyIGNoYXJnZSBmcm9tIGEgd3JpdGVkb3duIG9mIHNlY3VyaXRpZXMuIFNhbGVzIHJvc2UgMjMuNSBwY3QgdG8gNzAuOSBtbG4gZGxycy4gICAgIFNhbGVzIGFyZSBleHBlY3RlZCB0byBleGNlZWQgMTAwIG1sbiBkbHJzIGZvciB0aGUgZmlzY2FsIHllYXIgZW5kaW5nIEp1bmUgMzAsIHRoZSBjb21wYW5pZXMgc2FpZCBpbiBhIGpvaW50IHN0YXRlbWVudC4gICAgIFRoZSBjb21wYW55J3MgYmFja2xvZyBpcyBjdXJyZW50bHkgbW9yZSB0aGFuIDE4MCBtbG4gZGxycywgdGhleSBzYWlkLiBJdCBoYXMgYWJvdXQgMSwyMDAgZW1wbG95ZWVzLiAgICAgQWJvdXQgMzAgcGN0IG9mIEFSR09TeXN0ZW1zJyBidXNpbmVzcyBjb21lcyBmcm9tIGludGVybmF0aW9uYWwgY3VzdG9tZXJzLiAgICAgIkFSR09TeXN0ZW1zIGlzIGEgY2xlYXIgbGVhZGVyIGluIGl0cyBmaWVsZC4gVGhpcyBhc3NvY2lhdGlvbiB3aWxsIGV4cGFuZCBvdXIgb3ZlcmFsbCBhY3Rpdml0aWVzIGFuZCBzaWduaWZpY2FudGx5IGVuaGFuY2Ugb3VyIGFiaWxpdHkgdG8gY29tcGV0ZSBpbiB0aGUgZGVmZW5zZSBlbGVjdHJvbmljcyBhcmVhLCIgQm9laW5nIHByZXNpZGVudCBGcmFuayBTaHJvbnR6IHNhaWQgaW4gYSBzdGF0ZW1lbnQuICAgICBBUkdPU3lzdGVtcyB3aWxsIG9wZXJhdGUgYXMgYSB3aG9sbHkgb3duZWQgc3Vic2lkaWFyeSBvZiBCb2VpbmcgQ28uICAgICBUaGUgbWVyZ2VyIGZvbGxvd2luZyB0aGUgdGVuZGVyIG9mZmVyIHdpbGwgYmUgc3ViamVjdCB0byBhcHByb3ZhbCBieSBBUkdPU3lzdGVtcyBzaGFyZWhvbGRlcnMsIHRoZSBjb21wYW5pZXMgc2FpZC4gICAgIFRoZSB0ZW5kZXIgb2ZmZXIgYW5kIG1lcmdlciBhcmUgc3ViamVjdCB0byBjdXN0b21hcnkgY29uZGl0aW9ucyBhbmQgZXhwaXJhdGlvbiBvZiB0aGUgSGFydC1TY290dC1Sb2Rpbm8gbm90aWZpY2F0aW9uIHdhaXRpbmcgcGVyaW9kLCB0aGV5IHNhaWQuICBSZXV0ZXIgMzsKMTk4NzA2MDEJQk9SREVOIDxCTj4gVE8gQUNRVUlSRSBNQUpPUiBQQVNUQSBNQUtFUiBCb3JkZW4gSW5jIHNhaWQgaXQgaXMgYWNxdWlyaW5nIDxQcmluY2UgQ28gSW5jPiBhbmQgdGhyZWUgY29tcGFuaWVzIHByb2R1Y2luZyBncm9jZXJ5IHByb2R1Y3RzIGZvciAxODAgbWxuIGRscnMuICAgICBCb3JkZW4gc2FpZCB0aGUgZm91ciBjb21wYW5pZXMgYXJlIGV4cGVjdGVkIHRvIGhhdmUgMTk4NyBzYWxlcyB0b3RhbGluZyAyMzAgbWxuIGRscnMuICAgICBJdCBzYWlkIFByaW5jZSwgYSBMb3dlbGwsIE1hc3MuLCBwcm9kdWNlciBvZiBwYXN0YSBhbmQgSXRhbGlhbiBmb29kIHNhdWNlcywgaXMgZXhwZWN0ZWQgdG8gYWNjb3VudCBmb3IgMjEwIG1sbiBkbHJzIG9mIHRoaXMgdG90YWwuIFRoaXMgeWVhcidzIHNhbGVzIG9mIEJvcmRlbiBwYXN0YSAtLSBieSB0aGUgMTMgcmVnaW9uYWwgYnJhbmRzIGFuZCB0aGUgcHJlbWl1bSBDcmVhbWV0dGUgYnJhbmQgZGlzdHJpYnV0ZWQgb24gYSBuZWFybHkgbmF0aW9uYWwgYmFzaXMgLS0gYXJlIGV4cGVjdGVkIHRvIHRvYWwgMjg1IG1sbiBkbHJzLCBpdCBzYWlkLiAgICAgQm9yZGVuIHNhaWQgdGhlIG90aGVyIHRocmVlIGNvbXBhbmllcyBiZWluZyBhY3F1aXJlZCBhcmUgU3RlZXJvIEJvdWlsbG9uIG9mIEplcnNleSBDaXR5LCBOLkouLCBCbHVlIENoYW5uZWwgSW5jLCBhIEJlYXVmb3J0LCBTLkMuLCBwcm9kdWNlciBvZiBjYW5uZWQgY3JhYm1lYXQsIGFuZCB0aGUgY2FubmVkIHNocmltcCBwcm9kdWN0cyBsaW5lIG9mIERlSmVhbiBQYWNraW5nIEluYyBvZiBCaWxveGksIE1pc3MuICAgICBCb3JkZW4gYWxzbyBzYWlkIHRoZSBkaXZlc3RtZW50IG9mIHRocmVlIG9wZXJhdGlvbnMgd2l0aCBhYm91dCA1MCBtbG4gZGxycyBhIHllYXIgaW4gc2FsZXMgaXMgZXhwZWN0ZWQgdG8gcHJvZHVjZSBuZWFybHkgNDUgbWxuIGRscnMgaW4gY2FzaCBmb3IgdXNlIHRvd2FyZCB0aGUgcHVyY2hhc2Ugb2YgbmV3IGJ1c2luZXNzZXMuICAgICBJdCBzYWlkIHRoZSBzYWxlIG9mIFBvbHljbyBvZiBDaW5jaW5uYXRpLCBPaGlvLCB3aGljaCBtYWtlcyBwb2x5dmlueWwgYWNldGF0ZSBlbXVsc2lvbnMsIHRvIFJvaG0gYW5kIEhhYXMgQ28gPFJPSD4gd2FzIGFubm91bmNlZCBieSB0aGUgYnV5ZXIgbGFzdCBtb250aC4gICAgICAgICBCb3JkZW4gc2FpZCB0aGUgZGl2ZXN0bWVudCBvZiB0d28gcHJvZHVjZXJzIG9mIHRveSBtb2RlbHMgYW5kIGhvYmJ5IGl0ZW1zIC0tIEhlbGxlciBpbiBGcmFuY2UgYW5kIEh1bWJyb2wgaW4gRW5nbGFuZCAtLSBpcyBpbiBwcm9jZXNzLiAgUmV1dGVyIDM7CjE5ODcwNjAxCUJSQVpJTCBOT1QgU0VMTElORyBUTyBDT0NPQSBCVUZGRVIgU1RPQ0sgLSBUUkFERSBCcmF6aWwgaXMgbm90IHNlbGxpbmcgY29jb2EgYmVhbnMgdG8gdGhlIEludGVybmF0aW9uYWwgQ29jb2EgT3JnYW5pemF0aW9uLCBJQ0NPLCBidWZmZXIgc3RvY2ssIGFzIHNwb3QgcHJpY2VzIGZvciBiZWFucyBpbiB0aGUgaW50ZXJpb3IgYXJlYSBhcmUgMjAgdG8gMjUgcGN0IGhpZ2hlciB0aGFuIGxldmVscyB3aGljaCB3b3VsZCBiZSBwYWlkIGJ5IHRoZSBJQ0NPIGJ1ZmZlciBzdG9jayBtYW5hZ2VyLCB0cmFkZSBzb3VyY2VzIGluIHRoZSBtYWpvciBwcm9kdWNpbmcgc3RhdGUgQmFoaWEgc2FpZC4gICAgIFRoZSBzY2FyY2l0eSBvZiBiZWFucyBiZWNhdXNlIG9mIHRoZSBlZmZlY3RzIG9mIGRyb3VnaHQgb24gdGhlIGN1cnJlbnQgdGVtcG9yYW8gaGFydmVzdCBoYXMgcHVzaGVkIHByaWNlcyB3ZWxsIGFib3ZlIGludGVybmF0aW9uYWwgbGV2ZWxzLCB0aGUgc291cmNlcyBub3RlZC4gICAgIFRoZSBvbmx5IGJ1eWVycyBhcmUgYmVhbiBleHBvcnRlcnMgb3IgbG9jYWwgcHJvY2Vzc29ycyBjb3ZlcmluZyBwcmV2aW91c2x5IGNvbnRyYWN0ZWQgY29tbWl0bWVudHMsIHRoZXkgYWRkZWQuICAgICBJZiBzYWxlcyB3ZXJlIG1hZGUgdGhleSB3b3VsZCBiZSBleGVjdXRlZCBieSBpbmRpdmlkdWFsIGV4cG9ydGluZyBjb21wYW5pZXMgd2hpY2ggYXJlIG1lbWJlcnMgb2YgdGhlIEJyYXppbGlhbiBDb2NvYSBUcmFkZSBDb21taXNzaW9uLCB0aGV5IHNhaWQuICBSZXV0ZXIgMzsKMTk4NzA2MDEJQlVOREVTQkFOSyBSRVBPUlRFRCBUTyBIQVZFIE5PIFBMQU4gRk9SIFJBVEUgQ1VUIEJ1bmRlc2JhbmsgRGVwdXR5IFByZXNpZGVudCBIZWxtdXQgU2NobGVzaW5nZXIgc2FpZCB0aGUgV2VzdCBHZXJtYW4gY2VudHJhbCBiYW5rIGhhZCBubyBwbGFuIHRvIGN1dCBpdHMgdGhyZWUgcGN0IGRpc2NvdW50IHJhdGUsIE5paG9uIEtlaXphaSBuZXdzcGFwZXIgcmVwb3J0ZWQuICAgICBUaGUgZmluYW5jaWFsIGRhaWx5IHF1b3RlZCBTY2hsZXNpbmdlciBhcyBzYXlpbmcgaW4gYW4gaW50ZXJ2aWV3IHRoYXQgdGhlIGJhbmsgd291bGQgdHJ5IHRvIG1haW50YWluIGN1cnJlbnQgaW50ZXJlc3QgcmF0ZSBsZXZlbHMgZm9yIHRoZSB0aW1lIGJlaW5nLiAgICAgSGUgYWxzbyB0b2xkIHRoZSBuZXdzcGFwZXIgaGUgc2F3IG5vIG5lZWQgZm9yIGxhcmdlLXNjYWxlIGludGVydmVudGlvbiBpbiB0aGUgZm9yZWlnbiBleGNoYW5nZSBtYXJrZXQgYmVjYXVzZSBleGNoYW5nZSByYXRlcyBhcmUgc3RhYmxlLiAgICAgIEVhcmxpZXIsIFNjaGxlc2luZ2VyIHRvbGQgYSBwcmVzcyBjb25mZXJlbmNlIHRoYXQgdGhlIEJ1bmRlc2Jhbmsgd291bGQgY29udGludWUgaXRzIHBvbGljeSBvZiBtYWludGFpbmluZyBzaG9ydC10ZXJtIGludGVyZXN0IHJhdGVzIGF0IGEgbG93IGxldmVsIGZvciBjdXJyZW5jeSBzdGFiaWxpdHkuICAgICBIZSBhbHNvIHNhaWQgaGUgd2FzIHNhdGlzZmllZCB3aXRoIHRoZSBjdXJyZW50IGRvbGxhci9tYXJrIGV4Y2hhbmdlIHJhdGUgYnV0IGFkZGVkIHRoYXQgaGUgd2FzIG5vdCBjZXJ0YWluIGlmIGl0IHdhcyBpZGVhbCBmb3IgdGhlIFdlc3QgR2VybWFuIGVjb25vbXkuICBSRVVURVIgMzsKMTk4NzA2MDEJQlVSTElOR1RPTiA8QlVSPiBIRUFSSU5HIFRPIENPTlRJTlVFIFRPTU9SUk9XIFUuUy4gRGlzdHJpY3QgQ291cnQgSnVkZ2UgRXVnZW5lIEEuIEdvcmRvbiBzYWlkIGhlIHBsYW5zIHRvIGlzc3VlIGEgZGVjaXNpb24gdG9tb3Jyb3cgb24gQnVybGluZ3RvbiBJbmR1c3RyaWVzIEluYydzIHJlcXVlc3QgZm9yIGFuIGluanVuY3Rpb24gdG8gc3RvcCBTYW1qZW5zIEFjcXVpc2l0aW9uIENvcnAncyB0YWtlb3ZlciBiaWQgZm9yIHRoZSBjb21wYW55LiAgICAgV2FsbCBTdHJlZXQgc291cmNlcyBoYXZlIHNhaWQgdGhlIG91dGNvbWUgb2YgdGhlIGNhc2UgY291bGQgYmUgcGl2b3RhbCBpbiBkZXRlcm1pbmluZyB0aGUgd2lubmVyIGluIHRoZSBmaWVyY2UgdGFrZW92ZXIgYmF0dGxlIGZvciBCdXJsaW5ndG9uLCB0aGUgbGFyZ2VzdCB1LnMuIHRleHRpbGUgbWFrZXIuICAgICBHb3Jkb24gcHJlc2lkZWQgb3ZlciBzaXggaG91cnMgb2YgYXJndW1lbnQgdG9kYXkgYnkgbGF3eWVycyBmb3IgQnVybGluZ3RvbiBhbmQgU2FtamVucywgYSBwYXJ0bmVyc2hpcCBmb3JtZWQgYnkgRG9taW5pb24gVGV4dGlsZSBJbmMgYW5kIE5ldyBZb3JrIGludmVzdG9yIEFzaGVyIEVkZWxtYW4uICAgICBIZWFyaW5ncyBhcmUgc2NoZWR1bGVkIHRvIGNvbnRpbnVlIHRvbW9ycm93LiBBIHByZWxpbWluYXJ5IGluanVuY3Rpb24gd291bGQgaG9sZCB1cCBTYW1qZW5zIDIuNDcgYmlsbGlvbiBkbHIgb2ZmZXIgdW50aWwgdGhlIGNhc2UgaXMgZGVjaWRlZC4gICAgIEJ1cmxpbmd0b24gaGFkIHByZXZpb3VzbHkgYWdyZWVkIHRvIGEgMi40NCBiaWxsaW9uIGRsciBidXlvdXQgZnJvbSBNb3JnYW4gU3RhbmxleSBHcm91cCBJbmMgPE1TPiwgb25lIGRsciBwZXIgc2hhcmUgbG93ZXIgdGhhbiBhIHN3ZWV0ZW5lZCA3NyBkbHIgcGVyIHNoYXJlIGJpZCBtYWRlIGJ5IFNhbWplbnMgbGFzdCB3ZWVrLiBCdXJsaW5ndG9uIGhhcyBub3QgcmVzcG9uZGVkIHRvIHRoZSBuZXcgU2FtamVucyBvZmZlci4gICAgIEJ1cmxpbmd0b24gaGFzIGFsbGVnZWQgaW4gaXRzIGxhd3N1aXQgdGhhdCBFZGVsbWFuIGFuZCBEb21pbmlvbiB1c2VkIGlsbGVnYWxseSBvYnRhaW5lZCBjb25maWRlbnRpYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGNvbXBhbnkgaW4gbWFraW5nIHRoZWlyIHRha2VvdmVyIGF0dGVtcHQuICAgICAgIFRoYXQgaW5mb3JtYXRpb24sIEJ1cmxpbmd0b24gc2FpZCwgd2FzIHByb3ZpZGVkIGJ5IEphbWVzIEFtbWVlbiwgYSBmb3JtZXIgQnVybGluZ3RvbiBleGVjdXRpdmUsIHRocm91Z2ggUGFpbmVXZWJiZXIgR3JvdXAgSW5jIDxQV0o+LiBBbW1lZW4sIHdobyBoYWQgd29ya2VkIGZvciBCdXJsaW5ndG9uIGZvciAyMyB5ZWFycywgaGFkIGFzIG1hbnkgYXMgMTIgZGl2aXNpb25zIHdpdGggNTAgcGN0IG9mIEJ1cmxpbmd0b24ncyBzYWxlcyByZXBvcnRpbmcgdG8gaGltLiBXaGVuIGhlIGxlZnQgQnVybGluZ3RvbiBpbiBOb3ZlbWJlciwgMTk4NSwgQnVybGluZ3RvbiBzYWlkIGhlIHNpZ25lZCBhIGNvbnRyYWN0IHByb21pc2luZyBuZXZlciB0byBkaXZ1bGdlIGluc2lkZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY29tcGFueS4gICAgIEJ1cmxpbmd0b24gbGF3eWVycyBzYWlkIHNob3J0bHkgYWZ0ZXIgaGUgbGVmdCBoZSBiZWdhbiB3b3JraW5nIHdpdGggYSBQYWluZVdlYmJlciBlbXBsb3llZSBvbiBhIGhvc3RpbGUgcGxhbiB0byAidGFrZW92ZXIgdGhlIGNvbXBhbnksIGRpc21lbWJlciB0aGUgY29tcGFueSBhbmQgZGlzcGxhY2UgaXRzIG1hbmFnZW1lbnQsIiBCdXJsaW5ndG9uIGxhd3llciBIdWJlcnQgSHVtcGhyZXkgc2FpZC4gICAgIFNhbWplbnMgbGF3eWVycyBhY2tub3dsZWRnZWQgaXQgcmVjZWl2ZWQgaW5mb3JtYXRpb24gZnJvbSBQYWluZVdlYmJlciwgYnV0IGFyZ3VlZCB0aGUgaW5mb3JtYXRpb24gd2FzIHB1YmxpYyBpbmZvcm1hdGlvbiBhbmQgY291bGQgYmUgb2J0YWluZWQgZWl0aGVyIGZyb20gdGV4aXRsZSBpbmR1c3RyeSBhbmFseXN0cyBvciBCdXJsaW5ndG9uJ3MgcHVibGljIGZpbmFuY2lhbCBzdGF0ZW1lbnRzLiAgICAgQnVybGluZ3RvbiBsYXd5ZXJzIHNhaWQgUGFpbmVXZWJiZXIgYW5kIEFtbWVlbiBtZXQgd2l0aCBFZGVsbWFuIGFuZCBEb21pbmlvbiBpbiBOb3ZlbWJlciBhbmQgY29udGludWVkIHRvIG1lZXQgd2l0aCB0aGVtIHVudGlsIGEgY291cGxlIG9mIGRheXMgYmVmb3JlIEVkZWxtYW4gYW5kIERvbWluaW9uIHdlbnQgcHVibGljIEFwcmlsIDI0IHdpdGggdGhlaXIgaW50ZW50aW9uIHRvIHRha2Ugb3ZlciB0aGUgY29tcGFueS4gQnVybGluZ3RvbiBsYXd5ZXJzIGNsYWltIERvbWluaW9uJ3MgYm9hcmQgZGVjaWRlZCB0byBhdHRlbXB0IGEgdGFrZW92ZXIgb2YgQnVybGluZ3RvbiBhZnRlciBBbW1lZW4gbWV0IHdpdGggdGhlIGJvYXJkIGluIEZlYnJ1YXJ5LiAgICAgQnVybGluZ3RvbiBsYXd5ZXJzIHNhaWQgRWRlbG1hbiBhbmQgRG9taW5pb24gaGVsZCBkaXNjdXNzaW9ucyB3aXRoIFBhaW5lV2ViYmVyIGFuZCBBbW1lZW4gYWJvdXQgYWN0aW5nIGFzIGZpbmFuY2lhbCBhZHZpc2VycyB0byBTYW1qZW5zLiBCdXQgdGhleSBhbGxlZ2UgdGFsa3MgYnJva2Ugb2ZmIGJlY2F1c2UgUGFpbmV3ZWJiZXIgYW5kIEFtbWVlbiBjb3VsZCBub3Qgc2F0aXNmeSBFZGVsbWFuIGFuZCBkb21pbmlvbiB3aXRoIGEgd3JpdHRlbiBzdGF0ZW1lbnQgdGhhdCB0aGV5IGRpZCBub3QgcHJvdmlkZSBpbnNpZGUgaW5mb3JtYXRpb24uICAgICBMYXd5ZXJzIGZvciBTYW1qZW5zIGNvbnRlbmRlZCB0aGF0IFBhaW5ld2ViYmVyIGFuZCBBbW1lZW4gd2l0aGRyZXcgYXMgcG90ZW50aWFsIGFkdmlzZXJzIGJlY2F1c2UgQnVybGluZ3RvbiBjaGFpcm1hbiBGcmFuayBHcmVlbmJlcmcgaGFkIGNhbGxlZCBhIFBhaW5lV2ViYmVyIGV4ZWN1dGl2ZSBhbmQgdGhyZWF0ZW5lZCBsZWdhbCBhY3Rpb24gaWYgUGFpbmVXZWJiZXIgZ290IGludm9sdmVkIGluIGFuIGVmZm9ydCB0byB0YWtlb3ZlciBCdXJsaWxnbnRvbi4gICAgICJUaGUgdWx0aW1hdGUgcXVlc3Rpb24gaXMgbm90IHRoZSBwcmljZSBwZXIgc2hhcmUgb3IgdGhlIHByb2ZpdCwgYnV0IHJhdGhlciB0aGUgcGVybWlzc2FibGUgc3RhbmRhcmRzIG9mIGNvbmR1Y3QgZm9yIHRob3NlIHdobyB3b3VsZCB0YWtlb3ZlciBhbiBBbWVyaWNhbiBjb21wYW55LCIgc2FpZCBidXJsaW5ndG9uIGxhd3llciBIdW1waHJleS4gICAgIEJ1cmxpbmd0b24gbGF3eWVycyBhbHNvIGNvbnRlbmRlZCB0aGF0IEJ1cmxpbmd0b24sIGFzIHRoZSBsYXJnZXN0IG1hbnVmYWN0dXJlciBvZiBkZW5pbSBpbiB0aGUgVW5pdGVkIFN0YXRlcywgd291bGQgYmUgaW4gdmlvbGF0aW9uIG9mIGFudGktdHJ1c3QgbGF3cyBpZiBpdCBhY3F1aXJlZCBEb21pbmlvbiwgQ2FuYWRhJ3MgbGFyZ2VzdCB0ZXh0aWxlIG1ha2VyLiBEb21pbmlvbiBoYXMgZGVuaW0gbWFudWZhY3R1cmluZyBwbGFudHMgaW4gR2VvcmdpYSwgd2hpY2ggd291bGQgcmVkdWNlIGNvbXBldGl0aW9uIGluIHRoZSBkZW5pbSBtYXJrZXQsIHRoZSBsYXd5ZXJzIHNhaWQuICAgICBTYW1qZW5zJyBsYXd5ZXJzIGRpc2NvdW50ZWQgdGhlIGNvbmNlcm4uIFRoZXkgc2FpZCB0aGUgbWFya2V0IGZvciBkZW5pbSBpcyBtb3JlIGZyYWdtZW50ZWQgdGhhbiBCdXJsaW5ndG9uIGNvbnRlbmRzIGFuZCB0aGF0IEJ1cmxpbmd0b24gaGFzIHRoZSBhYmlsaXR5IHRvIHN3aXRjaCBiZXR3ZWVuIGxpZ2h0IHdlaWdodCBhbmQgaGVhdnkgd2VpZ2h0IGRlbmltIHByb2R1Y3Rpb24gYXMgZGVtYW5kIGFuZCBwcmljZSBkaWN0YXRlLiAgICAgU2FtamVucyBsYXd5ZXJzIGFsc28gcG9pbnRlZCB0byBhIGxhd3N1aXQgZmlsZWQgYnkgQnVybGluZ3RvbiBpbiBDYW5hZGEsIGluIHdoaWNoIGl0IHNhaWQgaXQgd2FzIGNvbnNpZGVyaW5nIGEgYmlkIGZvciBEb21pbmlvbi4gIlN1cmVseSwgd2hhdCB3b3VsZCBoYXZlIGJlZW4gc2F1Y2UgZm9yIHRoZSBnb29zZSB3b3VsZCBoYXZlIGJlZW4gc2F1Y2UgZm9yIHRoZSBnYW5kZXIsIiBzYWlkIFNpZG5leSBSb3NkZWl0Y2hlciwgYSBTYW1qZW5zIGxhd3llci4gIFJldXRlciAzOwoxOTg3MDYwMQlDQU1QRUFVIDxDTVAuVD4gVU5JVCBUTyBTRUxMIEdBUkZJTkNLRUwnUyBDYW1wZWF1IENvcnAgc2FpZCBpdHMgQWxsaWVkIFN0b3JlcyBDb3JwIGVudGVyZWQgaW50byBhIGRlZmluaXRpdmUgYWdyZWVtZW50IHRvIHNlbGwgaXRzIEdhcmZpbmNrZWwncyBkaXZpc2lvbiB0byA8UmFsZWlnaCBTdG9yaWVzIENvcnA+IGZvciA5NSBtbG4gZGxycy4gICAgICBUaGUgdHJhbnNhY3Rpb24gaXMgZXhwZWN0ZWQgdG8gY2xvc2UgaW4gSnVseSwgdGhlIGNvbXBhbnkgc2FpZC4gICAgIEdhcmZpbmNrZWwncyBuZXQgc2FsZXMgZm9yIGZpc2NhbCAxOTg2IHdlcmUgMTExLjkgbWxuIGRscnMsIHRoZSBjb21wYW55IHNhaWQuICAgICBDYW1wZWF1IHNhaWQgaXQgZXhwZWN0cyB0byBzZWxsIGl0cyByZW1haW5pbmcgQWxsaWVkIGRpdmlzaW9ucyBpbiB0aGUgbmVhciBmdXR1cmUuIENhbXBlYXUgYW5ub3VuY2VkIGl0cyBmaXJzdCBhZ3JlZW1lbnQgdG8gc2VsbCBhbiBBbGxpZWQgdW5pdCBpbiBBcHJpbCwgdGhlIGNvbXBhbnkgc2FpZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJldXRlciAzOwoxOTg3MDYwMQlDSElOQSBQUk9WSU5DRSBCRUNPTUVTIEdSQUlOIElNUE9SVEVSIFRoZSBzb3V0aCBDaGluYSBwcm92aW5jZSBvZiBHdWFuZ2RvbmcgaXMgaW1wb3J0aW5nIG1pbGxpb25zIG9mIHRvbm5lcyBvZiBncmFpbiBhIHllYXIgZnJvbSBvdmVyc2VhcyBhbmQgb3RoZXIgcGFydHMgb2YgQ2hpbmEgYmVjYXVzZSBmYXJtZXJzIGhhdmUgc3dpdGNoZWQgZnJvbSBncmFpbiB0byBtb3JlIHByb2ZpdGFibGUgY3JvcHMsIHRoZSBQZWtpbmcgUmV2aWV3IG1hZ2F6aW5lIHNhaWQuICAgICBUaGUgb2ZmaWNpYWwgbWFnYXppbmUgc2FpZCB0aGUgcHJvdmluY2UncyBncmFpbiBhcmVhIGZlbGwgdG8gNC4zMyBtbG4gaGVjdGFyZXMgaW4gMTk4NSBmcm9tIDUuNyBtbG4gaW4gMTk3OCBvdXQgb2YgYSB0b3RhbCBmYXJtbGFuZCBhcmVhIG9mIDcuNCBtbG4gaGVjdGFyZXMuICAgICBGYXJtZXJzIGhhdmUgc3dpdGNoZWQgdG8gY2FzaCBjcm9wcyBzdWNoIGFzIHN1Z2FyY2FuZSwgYmFuYW5hcywgb3JhbmdlcywgcGFwYXlhIGFuZCBmcmVzaHdhdGVyIGZpc2gtZmFybWluZywgaW4gcGFydCB0byBzdXBwbHkgbWFqb3IgY29uc3VtZXIgbWFya2V0cyBpbiBIb25nIEtvbmcgYW5kIE1hY2FvLCB0aGUgbWFnYXppbmUgc2FpZC4gSXQgZ2F2ZSBubyAxOTg2IGFyZWEgZmlndXJlcy4gICAgIFRoZSBtYWdhemluZSBzYWlkIENoaW5hIGFpbXMgdG8ga2VlcCA4MCBwY3Qgb2YgbmF0aW9uYWwgZmFybWxhbmQgdW5kZXIgZ3JhaW4sIDEwIHBjdCB1bmRlciBjYXNoIGNyb3BzIGFuZCAxMCBwY3QgdW5kZXIgb3RoZXIgY3JvcHMsIGFsdGhvdWdoIHRoZSByYXRpbyB3aWxsIHZhcnkgZnJvbSBwbGFjZSB0byBwbGFjZS4gICAgIEl0IHNhaWQgcHJpbWl0aXZlIGN1bHRpdmF0aW9uIG1ldGhvZHMsIGxhYm91ci1pbnRlbnNpdHkgYW5kIGxvdyBwcm9kdWN0aXZpdHkgbWFrZSBncmFpbiB0aGUgbGVhc3QgcHJvZml0YWJsZSBmYXJtIGNvbW1vZGl0eS4gRmFybWVycyBpbiBvbmUgY2VudHJhbCByZWdpb24gb2YgQ2hpbmEgY2FuIGZyb20gMC4xIGhlY3RhcmUgZWFybiAyLDI1MCB5dWFuIGEgeWVhciBmcm9tIHZlZ2V0YWJsZXMsIDM3NS00NTAgeXVhbiBmcm9tIGNvdHRvbiBvciAyMjUgeXVhbiBmcm9tIGdyYWluLCBpdCBhZGRlZC4gICAgIEl0IHNhaWQgY29uc3VtZXIgcHJpY2VzIGZvciBmb29kZ3JhaW4gY2FuIGJlIGFkanVzdGVkIG9ubHkgZ3JhZHVhbGx5IGFzIHBhcnQgb2YgYSByZWZvcm0gb2YgdGhlIGVudGlyZSBwcmljaW5nIHN5c3RlbS4gIFJFVVRFUiAzOwoxOTg3MDYwMQlDTy1PUEVSQVRJVkUgPENPQksuTz4gQ09NUExFVEVTIEFDUVVJU0lUSU9OIENvLW9wZXJhdGl2ZSBCYW5jb3JwIHNhaWQgaXQgY29tcGxldGVkIHRoZSBhY3F1aXNpdGlvbiBvZiBhbGwgdGhlIGlzc3VlZCBhbmQgb3V0c3RhbmRpbmcgc3RvY2sgb2YgdGhlIFF1aW5jeSBDby1vcGVyYXRpdmUgQmFuayA8UUJDSy5PPi4gICAgIFVuZGVyIHRoZSBhZ3JlZW1lbnQsIFF1aW5jeSBzdG9ja2hvbGRlcnMgd2lsbCByZWNlaXZlIDMwIGRscnMgY2FzaCBmb3IgZWFjaCBzaGFyZSBvd25lZCBvZiB0aGUgUXVpbmN5IENvLW9wZXJhdGl2ZSBCYW5rLCBmb3IgYSB0b3RhbCB0cmFuc2FjdGlvbiBvZiBhcHByb3hpbWF0ZWx5IDUwIG1sbiBkbHJzLCBDby1vcGVyYXRpdmUgc2FpZC4gIFJldXRlciAzOwoxOTg3MDYwMQlDT0NPQSBPUklHSU5TIERJU01BWUVEIEJZIEJVRkZFUiBTVE9DSyBBQ1RJT04gVHJhZGVycyByZWNlbnRseSByZXR1cm5lZCBmcm9tIFdlc3QgQWZyaWNhIHNheSBzb21lIHByb2R1Y2VycyB0aGVyZSBhcmUgZGlzbWF5ZWQgYnkgdGhlIGluZWZmZWN0aXZlIGFjdGlvbiBzbyBmYXIgYnkgdGhlIEludGVybmF0aW9uYWwgQ29jb2EgT3JnYW5pemF0aW9uIChJQ0NPKSBidWZmZXIgc3RvY2sgbWFuYWdlciBvbiBidWZmZXIgc3RvY2sgcHVyY2hhc2VzLiAgICAgT25lIHRyYWRlciBzYWlkIHNvbWUgV2VzdCBBZnJpY2FuIHByb2R1Y2VycyBhcmUgYW5ub3llZCB0aGUgQnVmZmVyIFN0b2NrIG1hbmFnZXIgaXMgbm90IHBsYXlpbmcgaGlzIHBhcnQgYXMgcmVxdWlyZWQgYnkgdGhlIEludGVybmF0aW9uYWwgQ29jb2EgUGFjdCB0byBzdGFiaWxpc2UgcHJpY2VzIGZyb20gY3VycmVudCBsb3dzLiAgICAgU28gZmFyLCBvbmx5IDIxLDAwMCB0b25uZXMgb2Ygc2Vjb25kIGhhbmQgY29jb2EgaGF2ZSBiZWVuIHRha2VuIHVwIGZvciBidWZmZXIgc3RvY2sgcHVycG9zZXMgYW5kIHRoaXMsIHRyYWRlcnMgbm90ZWQsIG9ubHkgb24gYW4gaW50ZXJtaXR0ZW50IGJhc2lzLiAgICAgVGhleSBub3RlZCB0aGUgcHVyY2hhc2VzLCBvZiA4LDAwMCB0b25uZXMgaW4gdGhlIGZpcnN0IHdlZWsgaGUgYm91Z2h0IGFuZCAxMywwMDAgaW4gdGhlIHNlY29uZCwgYXJlIHdlbGwgc2hvcnQgb2YgdGhlIGxpbWl0YXRpb25zIG9mIG5vIG1vcmUgdGhhbiA1LDAwMCB0b25uZXMgaW4gb25lIGRheSBhbmQgMjAsMDAwIGluIG9uZSB3ZWVrIHdoaWNoIHRoZSBjb2NvYSBhZ3JlZW1lbnQgcGxhY2VzIG9uIGhpbS4gICAgIFRoZSB0cmFkZXJzIHJlY2VudGx5IHJldHVybmVkIGZyb20gV2VzdCBBZnJpY2Egc2F5IHByb2R1Y2VycyB0aGVyZSBhcmUgdW5oYXBweSBhYm91dCB0aGUgaW1wYWN0IG9uIGNvY29hIHByaWNlcyBzbyBmYXIsIG5vdGluZyBwcm9kdWNpbmcgY291bnRyaWVzIGFyZSBwYXJ0IG9mIHRoZSBpbnRlcm5hdGlvbmFsIGNvY29hIHBhY3QgYW5kIGRlc2VydmUgdGhlIHNhbWUgdHJlYXRtZW50IGFzIGNvbnN1bWVycy4gICAgIExvbmRvbiB0cmFkZXJzIHNheSB0ZXJtaW5hbCBtYXJrZXQgcHJpY2VzIHdvdWxkIGhhdmUgdG8gZ2FpbiBhcm91bmQgMzAwIHN0ZyBhIHRvbm5lIHRvIHRha2UgdGhlIElDQ08gMTAtZGF5IGF2ZXJhZ2UgaW5kaWNhdG9yIHRvIGl0cyAxLDkzNSBzZHIgcGVyIHRvbm5lIG1pZHdheSBwb2ludCAob3IgcmVmZXJlbmNlIHByaWNlKS4gICAgIEhvd2V2ZXIsIGxpdHRsZSBwcm9ncmVzcyBoYXMgYmVlbiBtYWRlIGluIHRoYXQgZGlyZWN0aW9uLCBhbmQgdGhlIDEwLWRheSBhdmVyYWdlIGlzIHN0aWxsIHdlbGwgYmVsb3cgdGhlIDEsNjAwIHNkciBsb3dlciBpbnRlcnZlbnRpb24gbGV2ZWwgYXQgMSw1NjIuODcgZnJvbSAxLDU2OS40NiBwcmV2aW91c2x5LiAgICAgVGhlIGJ1ZmZlciBzdG9jayBtYW5hZ2VyIG1heSBhbm5vdW5jZSB0b2RheSBoZSB3aWxsIGJlIG1ha2luZyBwdXJjaGFzZXMgdG9tb3Jyb3csIGFsdGhvdWdoIHVuZGVyIHRoZSBydWxlcyBvZiB0aGUgYWdyZWVtZW50IHN1Y2ggYWN0aW9uIGlzIG5vdCBhdXRvbWF0aWMsIHRyYWRlcnMgc2FpZC4gICAgIENvbXBsYWludHMgYWJvdXQgdGhlIGluYWN0aW9uIG9mIHRoZSBidWZmZXIgc3RvY2sgbWFuYWdlciBhcmUgbm90IGNvbmZpbmVkIHRvIFdlc3QgQWZyaWNhbiBwcm9kdWNlcnMsIHRoZXkgb2JzZXJ2ZWQuICAgICBBIFJldXRlciByZXBvcnQgZnJvbSBSb3R0ZXJkYW0gcXVvdGVkIGluZHVzdHJ5IHNvdXJjZXMgdGhlcmUgc2F5aW5nIER1dGNoIGNvY29hIHByb2Nlc3NvcnMgYWxzbyBhcmUgdW5oYXBweSB3aXRoIHRoZSBpbnRlcm1pdHRlbnQgYnVmZmVyIHN0b2NrIGJ1eWluZyBhY3Rpdml0aWVzLiAgICAgSW4gTG9uZG9uLCB0cmFkZXJzIGV4cHJlc3NlZCBzdXJwcmlzZSB0aGF0IG5vIG1vcmUgdGhhbiAyMSwwMDAgdG9ubmVzIGNvY29hIGhhcyBiZWVuIGJvdWdodCBzbyBmYXIgYWdhaW5zdCB0b3RhbCBwb3RlbnRpYWwgcHVyY2hhc2VzIHVuZGVyIHRoZSBuZXcgYWdyZWVtZW50IG9mIDE1MCwwMDAgdG9ubmVzLiBDYXJyeW92ZXIgaG9sZGluZ3MgZnJvbSB0aGUgcHJldmlvdXMgSW50ZXJuYXRpb25hbCBDb2NvYSBBZ3JlZW1lbnQgaW4gdGhlIHN0b2NrIHRvdGFsIDEwMCwwMDAgdG9ubmVzLiAgICAgVGVybWluYWwgcHJpY2VzIHRvZGF5IHJvc2UgYnkgdXAgdG8gMTAgc3RnIGEgdG9ubmUgZnJvbSBGcmlkYXkncyBjbG9zZSwgYmFzaXMgSnVseSBhdCBpdHMgaGlnaCBvZiAxLDI3MS4gICAgIEl0IHNlZW1zIHRoYXQgd2hlbiB0aGUgYnVmZmVyIHN0b2NrIG1hbmFnZXIgaXMgYWJzZW50IGZyb20gdGhlIG1hcmtldCwgcHJpY2VzIGdvIHVwLCB3aGlsZSB3aGVuIGhlIGRlY2xhcmVzIGhpcyBpbnRlbnRpb24gdG8gYnV5LCBxdWl0ZSBvZnRlbiB0aGUgcmV2ZXJzZSBhcHBsaWVzLCB0cmFkZXJzIHNhaWQuICBSZXV0ZXIgMzsKMTk4NzA2MDEJQ09MVCBJTkRVU1RSSUVTIDxDT1Q+IFRPIFNFTEwgQlJJVElTSCBVTklUIENvbHQgSW5kdXN0cmllcyBJbmMgc2FpZCBpdCBzaWduZWQgYSBjb25kaXRpb25hbCBhZ3JlZW1lbnQgdG8gc2VsbCBpdHMgV29vZHZpbGxlIFBvbHltZXIgRW5naW5lZXJpbmcgTHRkIHN1YnNpZGlhcnkgaW4gR3JlYXQgQnJpdGFpbiB0byB0aGUgRG93dHkgR3JvdXAgUExDIG9mIEdsb3VjZXN0ZXJzaGlyZSwgRW5nbGFuZCwgZm9yIDM1LjkgbWxuIHN0Zy4gICAgIFRoZSBkZWFsIGlzIHNjaGVkdWxlZCB0byBjbG9zZSBieSB0aGUgZW5kIG9mIEp1bmUsIHRoZSBjb21wYW55IHNhaWQuICAgICBXb29kdmlsbGUsIHdoaWNoIG1ha2VzIGhpZ2ggdGVjaG5vbG9neSBwcmVjaXNpb24gcHJvZHVjdHMgZm9yIGFlcm9zcGFjZSwgYXV0b21vdGl2ZSBhbmQgb3RoZXIgaW5kdXN0cmllcywgaGFkIDE5ODYgc2FsZXMgb2YgYWJvdXQgMjQgbWxuIHN0ZywgaXQgc2FpZC4gIFJldXRlciAzOwoxOTg3MDYwMQlDT01JTkNPIDxDTFQuVE8+IFNFRVMgTUVFVElORyBXSVRIIFNUUklLSU5HIFVOSU9OIExPQ0FMUyBDb21pbmNvIEx0ZCBzYWlkIGl0IGV4cGVjdHMgdG8gbWVldCB0b2RheSB3aXRoIHR3byBvZiBmaXZlIFVuaXRlZCBTdGVlbHdvcmtlcnMgb2YgQW1lcmljYSBsb2NhbHMgb24gc3RyaWtlIGF0IGl0cyBUcmFpbCBzbWVsdGVyIGFuZCBLaW1iZXJsZXksIEIuQy4gbGVhZC16aW5jIG1pbmUsIGEgQ29taW5jbyBzcG9rZXNtYW4gc2FpZC4gICAgIEl0IGhhZCBubyBtZWV0aW5nIHNjaGVkdWxlZCB3aXRoIHRoZSBvdGhlciB0aHJlZSBzdHJpa2luZyBsb2NhbHMsIHdoaWNoIHJlamVjdGVkIGEgdGVudGF0aXZlIHRocmVlLXllYXIgY29udHJhY3QgU2F0dXJkYXksIENvbWluY28gc3Bva2VzbWFuIFJpY2hhcmQgRmlzaCBzYWlkLiAgICAgRmlzaCBzYWlkIHRoZSBwYWN0IHRoYXQgd2FzIHJlamVjdGVkIGNvbnRhaW5lZCBhIGNvc3Qgb2YgbGl2aW5nIGluY3JlYXNlIHRpZWQgdG8gdGhlIENhbmFkaWFuIGNvbnN1bWVyIHByaWNlIGluZGV4LCBidXQgbm8gd2FnZSBpbmNyZWFzZS4gV2l0aCA4MSBwY3Qgb2YgdGhlIG1lbWJlcnNoaXAgdm90aW5nLCA1NC41IHBjdCB2b3RlZCBubyBhbmQgNDUuNSBwY3Qgdm90ZWQgeWVzLCB0aGUgdW5pb24gc2FpZC4gICAgIFRoZSB0aHJlZSBsb2NhbHMgcmVwcmVzZW50IGFib3V0IDIsNjAwIHByb2R1Y3Rpb24gYW5kIG1haW50ZW5hbmNlIHdvcmtlcnMsIHdoaWxlIHRoZSByZW1haW5pbmcgdHdvIGxvY2FscyBjb3ZlciBhYm91dCA2MDAgb2ZmaWNlIGFuZCB0ZWNobmljYWwgd29ya2Vycy4gICAgIFRoZSBvZmZpY2UgYW5kIHRlY2huaWNhbCB3b3JrZXJzIGxhc3QgbmVnb3RpYXRlZCBNYXkgMjEuIFByb2R1Y3Rpb24gYXQgVHJhaWwgYW5kIEtpbWJlcmxleSBoYXMgYmVlbiBzaHV0IGRvd24gc2luY2UgdGhlIHN0cmlrZSBiZWdhbiBNYXkgOSBhbmQgQ29taW5jbyBoYXMgaGFkIHRvIGRlY2xhcmUgZm9yY2UgbWFqZXVyZSwgd2hpY2ggbWVhbnMgdGhlIGNvbXBhbnkgbWF5IGJlIHVuYWJsZSB0byBob25vciBjb250cmFjdHMgZm9yIHByb2R1Y3RzIGZyb20gdGhlIHNtZWx0ZXIgYW5kIG1pbmUuICAgICBFYWNoIG9mIHRoZSBmaXZlIGxvY2FscyBoYXZlIHNlcGFyYXRlIGNvbnRyYWN0cywgYWxsIG9mIHdoaWNoIGV4cGlyZWQgQXByaWwgMzAsIGJ1dCB0aGUgbWFpbiBpc3N1ZXMgYXJlIHNpbWlsYXIuICAgICBUaGUgVHJhaWwgc21lbHRlciwgYWJvdXQgNDAwIG1pbGVzIGVhc3Qgb2YgVmFuY291dmVyLCBwcm9kdWNlZCAyNDAsMDAwIGxvbmcgdG9ucyBvZiB6aW5jIGFuZCAxMTAsMDAwIGxvbmcgdG9ucyBvZiBsZWFkIGxhc3QgeWVhci4gVGhlIFN1bGxpdmFuIG1pbmUgYXQgS2ltYmVybGV5LCBhYm91dCA0NTAgbWlsZXMgZWFzdCBvZiBWYW5jb3V2ZXIsIHByb2R1Y2VkIDIuMiBtbG4gbG9uZyB0b25zIG9mIG9yZSBsYXN0IHllYXIsIG1vc3QgZm9yIHByb2Nlc3NpbmcgYXQgdGhlIFRyYWlsIHNtZWx0ZXIuICAgICBUaGUgc21lbHRlciBhbHNvIHByb2R1Y2VkIGNhZG1pdW0sIGJpc211dGggYW5kIGluZGl1bS4gICAgIFRyYWlsIHNtZWx0ZXIgcmV2ZW51ZSB3YXMgMzU2IG1sbiBDYW5hZGlhbiBkbHJzIGluIDE5ODYuICBSZXV0ZXIgMzsKMTk4NzA2MDEJQ09NSU5DTyA8Q0xULlRPPiBVTklPTiBSRUpFQ1RTIENPTlRSQUNUIFRocmVlIFVuaXRlZCBTdGVlbHdvcmtlcnMgb2YgQW1lcmljYSBsb2NhbHMgb24gc3RyaWtlIGF0IENvbWluY28gTHRkIHJlamVjdGVkIGEgdGVudGF0aXZlIHRocmVlLXllYXIgY29udHJhY3QsIGEgdW5pb24gcmVwcmVzZW50YXRpdmUgc2FpZC4gICAgICAiVGhlIHZvdGUgd2FzIDEsMjI5LCBvciA1NC41IHBjdCwgYWdhaW5zdCwgYW5kIDEsMDI4LCBvciA0NS41IHBjdCwgZm9yIHRoZSBjb250cmFjdC4gRWlnaHR5LW9uZSBwY3Qgb2YgdGhlIG1lbWJlcnNoaXAgdm90ZWQsIiBoZSBzYWlkLiAgICAgIFRoZSB1bmlvbiByZXByZXNlbnRhdGl2ZSBzYWlkIHRoYXQgdGhlIHBhY3Qgb2ZmZXJlZCBjb3N0IG9mIGxpdmluZyBpbmNyZWFzZXMgZGVzaWduZWQgdG8ga2VlcCBwYWNlIHdpdGggaW5mbGF0aW9uLCBidXQgY29udGFpbmVkIG5vIHdhZ2UgaW5jcmVhc2UuICAgICAgICAgICAgVGhlIGxvY2FscycgYmFyZ2FpbmluZyBjb21taXR0ZWVzIGFyZSBleHBlY3RlZCB0byBtZWV0IGFuZCBwcmVwYXJlIGZvciB0aGUgcmVvcGVuaW5nIG9mIG5lZ290aWF0aW9ucyB3aXRoIENvbWluY28sIGhlIHNhaWQuICAgICAgVGhlIHRocmVlIGxvY2FscyBjb3ZlciBhYm91dCAyLDYwMCBwcm9kdWN0aW9uIGFuZCBtYWludGVuYW5jZSB3b3JrZXJzIGF0IENvbWluY28ncyBUcmFpbCBzbWVsdGVyIGFuZCBLaW1iZXJsZXksIEIuQy4gbGVhZC16aW5jIG1pbmUuICAgICAgT3V0cHV0IGF0IGJvdGggc2l0ZXMgaGFzIGJlZW4gc2h1dCBkb3duIHNpbmNlIHRoZSBwcm9kdWN0aW9uIGFuZCBtYWludGVuYW5jZSB3b3JrZXJzLCBhbG9uZyB3aXRoIGFib3V0IDYwMCBvZmZpY2UgYW5kIHRlY2huaWNhbCB3b3JrZXJzLCB3ZW50IG9uIHN0cmlrZSBNYXkgbmluZS4gICAgICAgICAgIFRoZSB0d28gU3RlZWx3b3JrZXJzIGxvY2FscyByZXByZXNlbnRpbmcgdGhlIG9mZmljZSBhbmQgdGVjaG5pY2FsIHdvcmtlcnMgaGF2ZSBub3QgbmVnb3RpYXRlZCBzaW5jZSBNYXkgMjEuICAgICAgVGhlIHN0cmlrZSBjYXVzZWQgQ29taW5jbyB0byBkZWNsYXJlIGZvcmNlIG1hamVpcmUsIHdoaWNoIG1lYW5zIHRoZSBjb21wYW55IG1heSBub3QgYmUgYWJsZSB0byBob25vciBjb250cmFjdHMgZm9yIHByb2R1Y3RzIGZyb20gdGhlIHNtZWx0ZXIgYW5kIG1pbmUuICAgICBFYWNoIG9mIHRoZSBmaXZlIGxvY2FscyBoYXZlIHNlcGFyYXRlIGNvbnRyYWN0cywgYWxsIG9mIHdoaWNoIGV4cGlyZWQgQXByaWwgMzAsIGJ1dCB0aGUgbWFpbiBpc3N1ZXMgYXJlIHNpbWlsYXIuICAgICAgICAgICAgICBUaGUgdW5pb24gaGFkIHJlcXVlc3RlZCBhIHRocmVlIHBjdCB3YWdlIGluY3JlYXNlIGluIGVhY2ggeWVhciBvZiBhIHR3by15ZWFyIGNvbnRyYWN0LiBDb21pbmNvIGhhZCBwcmVzc2VkIGZvciBhIHRocmVlLXllYXIgY29udHJhY3QgYW5kIHNvbWUgbG9vc2VuaW5nIG9mIHRoZSBydWxlcyBvbiBqb2IgY2xhc3NpZmljYXRpb25zLiAgICAgIFRoZSBUcmFpbCBzbWVsdGVyLCBhYm91dCA0MDAgbWlsZXMgZWFzdCBvZiBWYW5jb3V2ZXIsIHByb2R1Y2VkIDI0MCwwMDAgbG9uZyB0b25zIG9mIHppbmMgYW5kIDExMCwwMDAgbG9uZyB0b25zIG9mIGxlYWQgbGFzdCB5ZWFyLiBUaGUgU3VsbGl2YW4gbWluZSBhdCBLaW1iZXJsZXksIGFib3V0IDQ1MCBtaWxlcyBlYXN0IG9mIFZhbmNvdXZlciwgcHJvZHVjZWQgMi4yIG1sbiBsb25nIHRvbnMgb2Ygb3JlIGxhc3QgeWVhciwgbW9zdCBmb3IgcHJvY2Vzc2luZyBhdCB0aGUgVHJhaWwgc21lbHRlci4gICAgICBUaGUgc21lbHRlciBhbHNvIHByb2R1Y2VkIGNhZG1pdW0sIGJpc211dGggYW5kIGluZGl1bS4gICAgICBSZXZlbnVlcyBmcm9tIHRoZSBUcmFpbCBzbWVsdGVyIHRvdGFsbGVkIDM1NiBtbG4gQ2FuYWRpYW4gZGxycyBpbiAxOTg2LiAgICAgICAgICBSZXV0ZXIgMzsKMTk4NzA2MDEJQ09NSU5DTyBMRUFEL1pJTkMgVU5JT04gUkVKRUNUUyBDT05UUkFDVCBUaHJlZSBVbml0ZWQgU3RlZWx3b3JrZXJzIG9mIEFtZXJpY2EgbG9jYWxzIG9uIHN0cmlrZSBhdCBDb21pbmNvIEx0ZCByZWplY3RlZCBhIHRlbnRhdGl2ZSB0aHJlZS15ZWFyIGNvbnRyYWN0LCBhIHVuaW9uIHJlcHJlc2VudGF0aXZlIHNhaWQuICAgICAiVGhlIHZvdGUgd2FzIDEsMjI5LCBvciA1NC41IHBjdCwgYWdhaW5zdCwgYW5kIDEsMDI4LCBvciA0NS41IHBjdCwgZm9yIHRoZSBjb250cmFjdC4gRWlnaHR5LW9uZSBwY3Qgb2YgdGhlIG1lbWJlcnNoaXAgdm90ZWQsIiBoZSBzYWlkLiAgICAgVGhlIHVuaW9uIHJlcHJlc2VudGF0aXZlIHNhaWQgdGhhdCB0aGUgcGFjdCBvZmZlcmVkIGNvc3Qgb2YgbGl2aW5nIGluY3JlYXNlcyBkZXNpZ25lZCB0byBrZWVwIHBhY2Ugd2l0aCBpbmZsYXRpb24sIGJ1dCBjb250YWluZWQgbm8gd2FnZSBpbmNyZWFzZS4gICAgIFRoZSBsb2NhbHMnIGJhcmdhaW5pbmcgY29tbWl0dGVlcyBhcmUgZXhwZWN0ZWQgdG8gbWVldCBhbmQgcHJlcGFyZSBmb3IgdGhlIHJlb3BlbmluZyBvZiBuZWdvdGlhdGlvbnMgd2l0aCBDb21pbmNvLCBoZSBzYWlkLiAgICAgVGhlIHRocmVlIGxvY2FscyBjb3ZlciBhYm91dCAyLDYwMCBwcm9kdWN0aW9uIGFuZCBtYWludGVuYW5jZSB3b3JrZXJzIGF0IENvbWluY28ncyBUcmFpbCBzbWVsdGVyIGFuZCBLaW1iZXJsZXksIEIuQy4gbGVhZC16aW5jIG1pbmUuICAgICBPdXRwdXQgYXQgYm90aCBzaXRlcyBoYXMgYmVlbiBzaHV0IGRvd24gc2luY2UgdGhlIHByb2R1Y3Rpb24gYW5kIG1haW50ZW5hbmNlIHdvcmtlcnMsIGFsb25nIHdpdGggYWJvdXQgNjAwIG9mZmljZSBhbmQgdGVjaG5pY2FsIHdvcmtlcnMsIHdlbnQgb24gc3RyaWtlIE1heSA5LiAgICAgVGhlIHR3byBTdGVlbHdvcmtlcnMgbG9jYWxzIHJlcHJlc2VudGluZyB0aGUgb2ZmaWNlIGFuZCB0ZWNobmljYWwgd29ya2VycyBoYXZlIG5vdCBuZWdvdGlhdGVkIHNpbmNlIE1heSAyMS4gICAgIFRoZSBzdHJpa2UgY2F1c2VkIENvbWluY28gdG8gZGVjbGFyZSBmb3JjZSBtYWpldXJlLCB3aGljaCBtZWFucyB0aGUgY29tcGFueSBtYXkgbm90IGJlIGFibGUgdG8gaG9ub3IgY29udHJhY3RzIGZvciBwcm9kdWN0cyBmcm9tIHRoZSBzbWVsdGVyIGFuZCBtaW5lLiAgICAgRWFjaCBvZiB0aGUgZml2ZSBsb2NhbHMgaGF2ZSBzZXBhcmF0ZSBjb250cmFjdHMsIGFsbCBvZiB3aGljaCBleHBpcmVkIEFwcmlsIDMwLCBidXQgdGhlIG1haW4gaXNzdWVzIGFyZSBzaW1pbGFyLiAgICAgVGhlIHVuaW9uIGhhZCByZXF1ZXN0ZWQgYSB0aHJlZSBwY3Qgd2FnZSBpbmNyZWFzZSBpbiBlYWNoIHllYXIgb2YgYSB0d28teWVhciBjb250cmFjdC4gQ29taW5jbyBoYWQgcHJlc3NlZCBmb3IgYSB0aHJlZS15ZWFyIGNvbnRyYWN0IGFuZCBzb21lIGxvb3NlbmluZyBvZiB0aGUgcnVsZXMgb24gam9iIGNsYXNzaWZpY2F0aW9ucy4gICAgIFRoZSBUcmFpbCBzbWVsdGVyLCBhYm91dCA0MDAgbWlsZXMgZWFzdCBvZiBWYW5jb3V2ZXIsIHByb2R1Y2VkIDI0MCwwMDAgbG9uZyB0b25zIG9mIHppbmMgYW5kIDExMCwwMDAgbG9uZyB0b25zIG9mIGxlYWQgbGFzdCB5ZWFyLiBUaGUgU3VsbGl2YW4gbWluZSBhdCBLaW1iZXJsZXksIGFib3V0IDQ1MCBtaWxlcyBlYXN0IG9mIFZhbmNvdXZlciwgcHJvZHVjZWQgMi4yIG1sbiBsb25nIHRvbnMgb2Ygb3JlIGxhc3QgeWVhciwgbW9zdCBmb3IgcHJvY2Vzc2luZyBhdCB0aGUgVHJhaWwgc21lbHRlci4gICAgIFRoZSBzbWVsdGVyIGFsc28gcHJvZHVjZWQgY2FkbWl1bSwgYmlzbXV0aCBhbmQgaW5kaXVtLiAgICAgUmV2ZW51ZXMgZnJvbSB0aGUgVHJhaWwgc21lbHRlciB0b3RhbGxlZCAzNTYgbWxuIENhbmFkaWFuIGRscnMgaW4gMTk4Ni4gIFJldXRlciAzOwoxOTg3MDYwMQlDT01JTkNPIFNFRUtTIE1FRVRJTkcgV0lUSCBTVFJJS0lORyBVTklPTiBMT0NBTFMgQ29taW5jbyBMdGQgc2FpZCBpdCBleHBlY3RzIHRvIG1lZXQgdG9kYXkgd2l0aCB0d28gb2YgZml2ZSBVbml0ZWQgU3RlZWx3b3JrZXJzIG9mIEFtZXJpY2EgbG9jYWxzIG9uIHN0cmlrZSBhdCBpdHMgVHJhaWwgc21lbHRlciBhbmQgS2ltYmVybGV5LCBCLkMuIGxlYWQtemluYyBtaW5lLCBhIENvbWluY28gc3Bva2VzbWFuIHNhaWQuICAgICBJdCBoYWQgbm8gbWVldGluZyBzY2hlZHVsZWQgd2l0aCB0aGUgb3RoZXIgdGhyZWUgc3RyaWtpbmcgbG9jYWxzLCB3aGljaCByZWplY3RlZCBhIHRlbnRhdGl2ZSB0aHJlZS15ZWFyIGNvbnRyYWN0IFNhdHVyZGF5LCBDb21pbmNvIHNwb2tlc21hbiBSaWNoYXJkIEZpc2ggc2FpZC4gICAgIEZpc2ggc2FpZCB0aGUgcGFjdCB0aGF0IHdhcyByZWplY3RlZCBjb250YWluZWQgYSBjb3N0IG9mIGxpdmluZyBpbmNyZWFzZSB0aWVkIHRvIHRoZSBDYW5hZGlhbiBjb25zdW1lciBwcmljZSBpbmRleCwgYnV0IG5vIHdhZ2UgaW5jcmVhc2UuIFdpdGggODEgcGN0IG9mIHRoZSBtZW1iZXJzaGlwIHZvdGluZywgNTQuNSBwY3Qgdm90ZWQgbm8gYW5kIDQ1LjUgcGN0IHZvdGVkIHllcywgdGhlIHVuaW9uIHNhaWQuICAgICBUaGUgdGhyZWUgbG9jYWxzIHJlcHJlc2VudCBhYm91dCAyLDYwMCBwcm9kdWN0aW9uIGFuZCBtYWludGVuYW5jZSB3b3JrZXJzLCB3aGlsZSB0aGUgcmVtYWluaW5nIHR3byBsb2NhbHMgY292ZXIgYWJvdXQgNjAwIG9mZmljZSBhbmQgdGVjaG5pY2FsIHdvcmtlcnMuICAgICBUaGUgb2ZmaWNlIGFuZCB0ZWNobmljYWwgd29ya2VycyBsYXN0IG5lZ290aWF0ZWQgTWF5IDIxLiBQcm9kdWN0aW9uIGF0IFRyYWlsIGFuZCBLaW1iZXJsZXkgaGFzIGJlZW4gc2h1dCBkb3duIHNpbmNlIHRoZSBzdHJpa2UgYmVnYW4gTWF5IDkgYW5kIENvbWluY28gaGFzIGhhZCB0byBkZWNsYXJlIGZvcmNlIG1hamV1cmUsIHdoaWNoIG1lYW5zIHRoZSBjb21wYW55IG1heSBiZSB1bmFibGUgdG8gaG9ub3IgY29udHJhY3RzIGZvciBwcm9kdWN0cyBmcm9tIHRoZSBzbWVsdGVyIGFuZCBtaW5lLiAgICAgRWFjaCBvZiB0aGUgZml2ZSBsb2NhbHMgaGF2ZSBzZXBhcmF0ZSBjb250cmFjdHMsIGFsbCBvZiB3aGljaCBleHBpcmVkIEFwcmlsIDMwLCBidXQgdGhlIG1haW4gaXNzdWVzIGFyZSBzaW1pbGFyLiAgICAgVGhlIFRyYWlsIHNtZWx0ZXIsIGFib3V0IDQwMCBtaWxlcyBlYXN0IG9mIFZhbmNvdXZlciwgcHJvZHVjZWQgMjQwLDAwMCBsb25nIHRvbnMgb2YgemluYyBhbmQgMTEwLDAwMCBsb25nIHRvbnMgb2YgbGVhZCBsYXN0IHllYXIuIFRoZSBTdWxsaXZhbiBtaW5lIGF0IEtpbWJlcmxleSwgYWJvdXQgNDUwIG1pbGVzIGVhc3Qgb2YgVmFuY291dmVyLCBwcm9kdWNlZCAyLjIgbWxuIGxvbmcgdG9ucyBvZiBvcmUgbGFzdCB5ZWFyLCBtb3N0IGZvciBwcm9jZXNzaW5nIGF0IHRoZSBUcmFpbCBzbWVsdGVyLiAgICAgVGhlIHNtZWx0ZXIgYWxzbyBwcm9kdWNlZCBjYWRtaXVtLCBiaXNtdXRoIGFuZCBpbmRpdW0uICAgICBUcmFpbCBzbWVsdGVyIHJldmVudWUgd2FzIDM1NiBtbG4gQ2FuYWRpYW4gZGxycyBpbiAxOTg2LiAgUmV1dGVyIDM7CjE5ODcwNjAxCUNPTVBST01JU0UgU0VFTiBMSUtFTFkgT1ZFUiBDT05PQ08tU1RBVE9JTCBESVNQVVRFIE5vcndheSBpcyBleHBlY3RlZCB0byBzZWVrIGEgY29tcHJvbWlzZSBzb2x1dGlvbiB0byBkZWZ1c2UgYSByb3cgYmV0d2VlbiBEZW4gTm9yc2tlIFN0YXRzIE9samVzZWxza2FwIEEvUyA8U1RBVC5PTD4gKFN0YXRvaWwpIGFuZCBDb25vY28gTm9yZ2UgQS9TIG92ZXIgd2hpY2ggZmlybSB3aWxsIG9wZXJhdGUgdGhlIEhlaWRydW4gb2lsIGZpZWxkLCBnb3Zlcm5tZW50IHNvdXJjZXMgc2FpZC4gICAgIFRoZSBzb3VyY2VzLCB3aG8gYXNrZWQgbm90IHRvIGJlIG5hbWVkLCBzYWlkIHRoZSBnb3Zlcm5tZW50IHdpbGwgbGlrZWx5IHJlY29tbWVuZCB0aGF0IENvbm9jbyBiZSBhbGxvd2VkIHRvIGNvbnRpbnVlIGFzIHRoZSBmaWVsZCdzIG9wZXJhdG9yIHRocm91Z2ggdGhlIGRldmVsb3BtZW50IHBoYXNlLCB3aXRoIFN0YXRvaWwgdGFraW5nIG92ZXIgb25seSBhZnRlciBwcm9kdWN0aW9uIHN0YXJ0cyBpbiB0aGUgZWFybHkgMTk5MHMuICAgICBPaWwgTWluaXN0ZXIgQXJuZSBPZWllbiB0b2xkIFJldXRlcnMgdGhlIGdvdmVybm1lbnQgaGFkIHRvZGF5IGRpc2N1c2VkIHRoZSBIZWlkcnVuIG1hdHRlciBidXQgdGhhdCBubyBmaW5hbCBkZWNpc2lvbiBoYWQgYmVlbiB0YWtlbiBhbmQgc2V2ZXJhbCBxdWVzdGlvbnMgcmVtYWluZWQgdW5yZXNvbHZlZC4gICAgIEl0IHdhcyB1bmxpa2VseSB0aGUgZ292ZXJubWVudCB3b3VsZCBhbm5vdW5jZSBpdHMgZGVjaXNpb24gb24gSGVpZHJ1biBvcGVyYXRvcnNoaXAgdW50aWwgYWZ0ZXIgVGh1cnNkYXkncyBjYWJpbmV0IG1lZXRpbmcgYW5kIGFmdGVyIGRpc2N1c3NpbmcgYSBwcm9wb3NlZCBzb2x1dGlvbiB3aXRoIGJvdGggY29tcGFuaWVzLCB0aGUgc291cmNlcyBhZGRlZC4gICAgIFRoaXMgc3ByaW5nIE5vcndheSdzIHN0YXRlLW93bmVkIG9pbCBjb21wYW55IFN0YXRvaWwgZXhlcmNpc2VkIGFuIG9wdGlvbiBpbiB0aGUgSGVpZHJ1biBmaWVsZCBleHBsb3JhdGlvbiBsaWNlbnNlIHRoYXQsIGlmIGFwcHJvdmVkIGJ5IHRoZSBnb3Zlcm5tZW50LCB3b3VsZCBhbGxvdyBpdCB0byByZWxpZXZlIENvbm9jbyBhcyBIZWlkcnVuIG9wZXJhdG9yLCBhIG1vdmUgc2hhcnBseSBjcml0aWNpc2VkIGJ5IENvbm9jby4gICAgIEhlaWRydW4gaXMgb2Z0ZW4gY2l0ZWQgYnkgdGhlIGdvdmVybm1lbnQgYW5kIGluZHVzdHJ5IGFzIHRoZSBtb3N0IGxpa2VseSBjYW5kaWRhdGUgZm9yIHRoZSBmaXJzdCBmaWVsZCBkZXZlbG9wbWVudCBwcm9qZWN0IG9uIHRoZSBIYWx0ZW5iYW5rZW4gZXhwbG9yYXRpb24gdHJhY3Qgb2ZmIGNlbnRyYWwgTm9yd2F5LiAgUmV1dGVyIDM7CjE5ODcwNjAxCUNPTVBVVEVSIEFTU09DLiA8Q0E+IEJPTFNURVJTIEhBTkQgQUdBSU5TVCBJQk0gQ29tcHV0ZXIgQXNzb2NpYXRlcyBJbnRlcm5hdGlvbmFsIEluYydzIDgwMCBtbG4gZGxyIG1lcmdlciB3aXRoIFVjY2VsIENvcnAgPFVDRT4gd2lsbCBlbGltaW5hdGUgaXRzIHN0cm9uZ2VzdCByaXZhbCwgYnV0IHRoZSBjb21wYW55IHN0aWxsIGZhY2VzIHN0aWZmIGNvbXBldGl0aW9uIGZyb20gSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3JwIDxJQk0+LCBXYWxsIFN0cmVldCBhbmFseXN0cyBzYWlkLiAgICAgICJJQk0gaXMgc3RpbGwgdGhlIHJ1bGluZyBmb3JjZSBpbiBtYWluZnJhbWUgc3lzdGVtcyBzb2Z0d2FyZSwiIHNhaWQgU2NvdHQgU21pdGgsIGFuIGFuYWx5c3Qgd2l0aCBEb25hbGRzb24gTHVma2luIGFuZCBKZW5yZXR0ZS4gICAgICJCdXQgdGhlIGNvbWJpbmF0aW9uIG9mIHRoZSB0d28gY29tcGFuaWVzIHdpbGwgY2xlYXJseSBwcmVzZW50IGEgbXVjaCBzdHJvbmdlciBmcm9udCwiIGhlIHNhaWQuICAgICBCZXNpZGVzIElCTSwgIkNvbXB1dGVyIEFzc29jaWF0ZXMgd2lsbCBiZSBmYXIgYW5kIGF3YXkgdGhlIG1vc3QgcG93ZXJmdWwgY29tcGFueSBpbiB0aGUgZmllbGQsIiBhZGRlZCBFLkYuIEh1dHRvbiBhbmFseXN0IFRlcmVuY2UgUXVpbm4uICAgICBUaGF0IGZpZWxkIGlzIGEgc2VnbWVudCBvZiB0aGUgbWFya2V0IGtub3duIGFzIHN5c3RlbSB1dGlsaXRpZXMsIG9yIHNvZnR3YXJlIHBhY2thZ2VzIHRoYXQgYm9vc3QgdGhlIHByb2R1Y3Rpdml0eSBvZiBhIGNvbXBhbnkncyBkYXRhIHByb2Nlc3NpbmcgZmFjaWxpdGllcyBieSBpbmNyZWFzaW5nIHRoZSBzcGVlZCwgcG93ZXIgYW5kIGVmZmljaWVuY3kgb2YgbGFyZ2UgbWFpbmZyYW1lIGNvbXB1dGVycy4gICAgIFRoZSBtZXJnZXIgb2YgVWNjZWwgYW5kIENvbXB1dGVyIEFzc29jaWF0ZXMgY29tYmluZXMgdGhlIHR3byBiaWdnZXN0IHN5c3RlbXMgdXRpbGl0aWVzIHN1cHBsaWVycyBvdGhlciB0aGFuIElCTS4gQW5hbHlzdHMgc2FpZCB0aGUgcmVtYWluaW5nIHBsYXllcnMgYXJlIG1vc3RseSBzbWFsbCBmaXJtcyB0aGF0IHdpbGwgZmluZCB0aGUgY29tcGV0aXRpb24gbXVjaCBoYXJkZXIgdGhhbiBpbiB0aGUgcGFzdC4gICAgIEZvciBDb21wdXRlciBBc3NvY2lhdGVzLCB0aGUgbWVyZ2VyIHdpdGggVWNjZWwgY2FwcyBhIHNpeC15ZWFyIGFjcXVpc2l0aW9uIGNhbXBhaWduIHRoYXQgaGFzIHZhdWx0ZWQgdGhlIEdhcmRlbiBDaXR5LCBOLlkuLWJhc2VkIGNvbXBhbnkgdG8gdGhlIHRvcCBvZiB0aGUgc29mdHdhcmUgaW5kdXN0cnkuICAgICBXaGVuIHRoZSBkZWFsIGlzIGNvbXBsZXRlZCBzb21ldGltZSBpbiBBdWd1c3QsIHRoZSBjb21wYW55J3MgcmV2ZW51ZXMgd2lsbCBleGNlZWQgNDUwIG1sbiBkbHJzLCBwdXNoaW5nIGl0IHBhc3QgIE1pY3Jvc29mdCBDb3JwIDxNRlNUPiBhcyB0aGUgd29ybGQncyBsYXJnZXN0IGluZGVwZW5kZW50IHNvZnR3YXJlIHZlbmRvci4gICAgIENvbXB1dGVyIEFzc29jaWF0ZXMgZm91bmRlciBhbmQgY2hhaXJtYW4gQ2hhcmxlcyBCLiBXYW5nIHRvb2sgdGhlIGNvbXBhbnkgcHVibGljIGluIDE5ODEsIGFuZCBzaW5jZSB0aGVuIGhlIGhhcyBib3VnaHQgMTUgY29tcGFuaWVzIGFuZCBib29zdGVkIGFubnVhbCBzYWxlcyBmcm9tIDE4LjUgbWxuIHRvIDMwOS4zIG1sbiBkbHJzIGZvciB0aGUgeWVhciBlbmRlZCBNYXJjaCAzMS4gICAgIExpZW1hbmR0IHRvb2sgY2hhcmdlIG9mIFd5bHksIHNvbGQgb2ZmIGl0cyBub24tY29tcHV0ZXIgYnVzaW5lc3NlcyBhbmQgZGVjaWRlZCB0aGF0IGl0IHdvdWxkIGZvY3VzIHNvbGVseSBvbiBtYWluZnJhbWUgY29tcHV0ZXIgc29mdHdhcmUuIEluIDE5ODQsIHRoZSBjb21wYW55IHdhcyByZW5hbWVkIFVjY2VsIENvcnAuICAgICBMaWVtYW5kdCwgd2hvIHNhaWQgaGUgd2lsbCBsZWF2ZSB0aGUgY29tcGFueSBhZnRlciB0aGUgbWVyZ2VyIGlzIGNvbXBsZXRlZCwgYWxzbyB0dXJuZWQgdG8gYWNxdWlzaXRpb25zIGZvciBncm93dGguICAgICBPbiB0aGUgbGFzdCBkYXkgb2YgMTk4NiwgVWNjZWwgY29tcGxldGVkIHRoZSBidXlvdXRzIG9mIHNpeCBjb21wYW5pZXMgZm9yIGEgdG90YWwgb2YgYWJvdXQgNjAgbWxuIGRscnMuICAgICBGb3IgMTk4NiwgaXQgZWFybmVkIDE3LjAgbWxuIGRscnMsIG9yIDEuMDEgZGxycyBhIHNoYXJlLCBvbiBzYWxlcyBvZiAxNDEuNSBtbG4gZGxycy4gICAgIFRoZSBhZ3JlZW1lbnQgdG9vayBpbmR1c3RyeSBhbmFseXN0cyBieSBzdXJwcmlzZSwgbGFyZ2VseSBiZWNhdXNlIHRoZSBjb21wYW5pZXMgaGFkIGJlZW4gc3VjaCBiaXR0ZXIgcml2YWxzLiBBbHNvLCBEYWxsYXMtYmFzZWQgVWNjZWwgaGFkIGVuZ2luZWVyZWQgYSBzdHJvbmcgY29tZWJhY2sgZnJvbSB0aGUgZGFyayBkYXlzIG9mIDE5ODIsIHdoZW4sIGFzIFd5bHkgQ29ycCwgaXQgbG9zdCA3LjcgbWxuIGRscnMsIG9yIDU2IGN0cyBhIHNoYXJlLiAgICBBdCB0aGF0IHRpbWUsIFd5bHkgb3duZWQgYSBwb3Rwb3Vycmkgb2YgMTMgZGlmZmVyZW50IGJ1c2luZXNzZXMsIG9ubHkgdGhyZWUgb2Ygd2hpY2ggd2VyZSBpbnZvbHZlZCBpbiBjb21wdXRlciBzb2Z0d2FyZS4gSW4gMTk4MywgV2FsdGVyIEhhZWZuZXIsIGEgU3dpc3MgZmluYW5jaWVyIGFuZCBhIG1ham9yIFd5bHkgaW52ZXN0b3IsIGx1cmVkIEdyZWdvcnkgSi4gTGllbWFuZHQgYXdheSBmcm9tIGhpcyBqb2IgYXMgY2hhaXJtYW4gb2YgR2VuZXJhbCBFbGVjdHJpYyBDbydzIDxHRT4gY29tcHV0ZXIgc2VydmljZXMgdW5pdC4gICAgIENvbXB1dGVyIEFzc29jaWF0ZXMnIFdhbmcgYW5kIFVjY2VsJ3MgTGllbWFuZHQgc2FpZCBhdCBhIG5ld3MgY29uZmVyZW5jZSB0aGF0IHRoZSBtZXJnZXIgd291bGQgZ2l2ZSBjb21wdXRlciB1c2VycyBhIHNpbmdsZSBzb3VyY2UgZm9yIGEgd2lkZSByYW5nZSBvZiBzb2Z0d2FyZSBwcm9kdWN0cy4gICAgIEluIGFkZGl0aW9uIHRvIHN5c3RlbSB1dGlsaXRpZXMsIENvbXB1dGVyIEFzc29jaWF0ZXMgYWxzbyBzZWxsIHByb2R1Y3RzIGZvciBtaWNyb2NvbXB1dGVycywgd2hpbGUgVWNjZWwgaGFzIG1hZGUgaW5yb2FkcyBpbiB0aGUgYXBwbGljYXRpb25zIHNvZnR3YXJlIG1hcmtldCwgd2hlcmUgYW5hbHlzdHMgc2FpZCBpdCBoYXMgYmVlbiBzdWNjZXNzZnVsIHdpdGggYWNjb3VudGluZyBhbmQgYmFua2luZyBzeXN0ZW1zLiAgICAgV2FuZyBzYWlkIENvbXB1dGVyIEFzc29jaWF0ZXMgd291bGQgY29udGludWUgdG8gc3VwcG9ydCBhbmQgZW5oYW5jZSBib3RoIGNvbXBhbmllcycgcHJvZHVjdCBsaW5lcywgYnV0IG5vdGVkIHRoYXQgdGhlIGNvbXBhbnkgd2lsbCBldmVudHVhbGx5IHdlZWQgb3V0IGR1cGxpY2F0ZSBvZmZlcmluZ3MuIEhlIHNhaWQgYWJvdXQgMjAgcGN0IG9mIHRoZSBjb21wYW5pZXMnIHByb2R1Y3RzIG92ZXJsYXAuICAgICBBbmFseXN0cyBzYWlkIHRoZSBtZXJnZXIgd291bGQgZGlsdXRlIHRoZSBob2xkaW5ncyBvZiBjdXJyZW50IENvbXB1dGVyIEFzc29jaWF0ZXMgc2hhcmVob2xkZXJzIGJ5IGFib3V0IDEwIHBjdC4gQnV0IHRoZXkgam9pbmVkIFdhbmcgaW4gZm9yZWNhc3RpbmcgdGhhdCB0aGUgZGVhbCB3aWxsIG5vdCBkaWx1dGUgQ29tcHV0ZXIgQXNzb2NpYXRlcycgZWFybmluZ3MgZm9yIHRoZSBjdXJyZW50IGZpc2NhbCB5ZWFyLiAgICAgUXVpbm4gb2YgRS5GLiBIdXR0b24gc2FpZCBXYW5nIGhhcyBhIHByb3ZlbiB0cmFjayByZWNvcmQgb2YgY29tcGxldGluZyBhY3F1aXNpdGlvbnMgd2l0aG91dCBlYXJuaW5ncyBkaWx1dGlvbi4gVGhlcmVmb3JlLCBoZSBzYWlkIGhlIHdvdWxkIG5vdCBjaGFuZ2UgaGlzIDE5ODggZWFybmluZ3MgZXN0aW1hdGUgb2YgMS4wNSBkbHJzIGEgc2hhcmUuICAgICBXYW5nIHNhaWQgaGUgd291bGQgbG9vayBjbG9zZWx5IGF0IHRoZSBjb21iaW5lZCBvcGVyYXRpb25zIG9mIHRoZSB0d28gY29tcGFuaWVzIGFuZCBjdXQgZHVwbGljYXRpb24gaW4gc2FsZXMsIG1hcmtldGluZyBhbmQgcmVzZWFyY2ggYW5kIGRldmVsb3BtZW50LiAgICAgQW5hbHlzdHMgc2FpZCBDb21wdXRlciBBc3NvY2lhdGVzIHBhaWQgYSBwcmVtaXVtIGZvciBVY2NlbC4gQmFzZWQgb24gRnJpZGF5J3MgY2xvc2luZyBwcmljZSwgdGhlIGNvbXBhbnkgd2lsbCBzd2FwIDQ3LjUwIGRscnMgd29ydGggb2YgaXRzIHN0b2NrIGZvciBlYWNoIFVjY2VsIHNoYXJlLCB3aGljaCBpcyBuZWFybHkgMzMgdGltZXMgVWNjZWwncyAxOTg3IGVzdGltYXRlZCBlYXJuaW5ncyBvZiAxLjQ1IGRscnMgYSBzaGFyZS4gICAgIFN0ZXBoZW4gVC4gTWNDbGVsbGFuIG9mIE1lcnJpbGwgTHluY2ggUmVzZWFyY2ggc2FpZCBtb3N0IHNvZnR3YXJlIGNvbXBhbmllcyBhcmUgY3VycmVudGx5IHZhbHVlZCBhdCBhYm91dCAyMCB0aW1lcyBwZXItc2hhcmUgZWFybmluZ3MuIEJ1dCB0aGUgYW5hbHlzdCBzYWlkIFVjY2VsIHdhcyB3b3J0aCB0aGUgcHJlbWl1bSBiZWNhdXNlIG9mIGl0cyBlYXJuaW5ncyBwb3RlbnRpYWwgYW5kIGN1c3RvbWVyIGJhc2UuICAgICAgV2FuZyBzYWlkIEhhZWZuZXIsIHRoZSBTd2lzcyBpbnZlc3Rvciwgd291bGQgaG9sZCBhYm91dCAyNSBwY3Qgb2YgQ29tcHV0ZXIgQXNzb2NpYXRlcyBzdG9jayBhZnRlciB0aGUgbWVyZ2VyLiBIZSBjdXJyZW50bHkgb3ducyA1OCBwY3Qgb2YgVWNjZWwuICAgICBUaGUgZXhlY3V0aXZlIHNhaWQgdGhlIG1lcmdlciB3b3VsZCBub3QgYWx0ZXIgaGlzIHRhcmdldCBvZiBtYWludGFpbmluZyBzYWxlcyBhbmQgZWFybmluZ3MgZ3Jvd3RoIG9mIDMwIHBjdCB0byAzNSBwY3QuICAgICBJbiBhZGRpdGlvbiwgaGUgc2FpZCBoZSBleHBlY3RzIG5vIHByb2JsZW1zIGluIGhhdmluZyB0aGUgZGVhbCBjbGVhcmVkIGJ5IHRoZSBhbnRpdHJ1c3QgZGl2aXNpb24gb2YgdGhlIFUuUy4gSnVzdGljZSBEZXBhcnRtZW50LiAgICAgVWNjZWwncyBMaWVtYW5kdCBkZWNsaW5lZCB0byBzYXkgd2hhdCBoZSB3aWxsIGRvIGFmdGVyIHRoZSBtZXJnZXIsIGJ1dCBoZSBkaWQgbm90IHJ1bGUgb3V0IHdvcmtpbmcgdG9nZXRoZXIgd2l0aCBXYW5nLiAgIFJldXRlciAzOwoxOTg3MDYwMQlDT01QVVRFUiBBU1NPQ0lBVEVTIDxDQT4sIFVDQ0VMIFNFVCBNRVJHRVIgQ29tcHV0ZXIgQXNzb2NpYXRlcyBJbnRlcm5hdGlvbmFsIEluYyBhbmQgVUNDRUwgQ29ycCA8VUNFPiBzYWlkIHRoZXkgaGF2ZSBzaWduZWQgYSBkZWZpbml0aXZlIG1lcmdlciBhZ3JlZW1lbnQgdW5kZXIgd2hpY2ggQ29tcHV0ZXIgQXNzb2NpYXRlcyB3aWxsIHBheSBhYm91dCA4MDAgbWxuIGRscnMgaW4gc3RvY2sgZm9yIGFsbCBvdXRzdGFuZGluZyBVQ0NFTCBzaGFyZXMuICAgICBUaGUgY29tcGFuaWVzIHNhaWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBhZ3JlZW1lbnQsIGFsbCBVQ0NFTCBzaGFyZWhvbGRlcnMgd2lsbCByZWNlaXZlIGFib3V0IDEuNjkgc2hhcmVzIG9mIENvbXB1dGVyIGNvbW1vbiBzdG9jayBmb3IgZWFjaCBvZiB0aGUgYXBwcm94aW1hdGVseSAxNyBtbG4gVUNDRUwgc2hhcmVzIG91dHN0YW5kaW5nLiAgICAgICAgIEFjY29yZGluZyB0byB0aGUgY29tcGFuaWVzLCB0aGlzIHdvdWxkIGFtb3VudCB0byBhYm91dCA0Ny41MCBkbHJzIHBlciBVQ0NFTCBzaGFyZSwgYmFzZWQgb24gTWF5IDI5IE5ldyBZb3JrIFN0b2NrIEV4Y2hhbmdlIGNsb3NpbmcgcHJpY2VzLiAgICAgQ2xvc2luZyBvZiB0aGUgdHJhbnNhY3Rpb24gaXMgYW50aWNpcGF0ZWQgaW4gQXVndXN0LCB0aGUgY29tcGFuaWVzIHNhaWQuIFRoZSBjb21wYW5pZXMgc2FpZCB0aGUgcmVzdWx0aW5nIGNvbXBhbnkgd2lsIHJldGFpbiB0aGUgbmFtZSBDb21wdXRlciBBc3NvY2lhdGVzIEludGVybmF0aW9uYWwgSW5jLiAgICAgQWRkaXRpb25hbGx5LCB0aGUgY29tcGFuaWVzIHNhaWQgQ2hhcmxlcyBXYW5nLCBjdXJyZW50bHkgQ29tcHV0ZXIgQXNzb2NpYXRlcyBjaGFpcm1hbiBhbmQgY2hpZWYgZXhlY3V0aXZlLCB3aWxsIGNvbnRpbnVlIGFzIGNoYWlybWFuIG9mIHRoZSBuZXcgY29tcGFueS4gIFJldXRlciAzOwoxOTg3MDYwMQlDT01QVVRFUkxBTkQgVE8gQkUgQUNRVUlSRUQgQlkgSU5WRVNUT1IgR1JPVVAgQ29tcHV0ZXJsYW5kIENvcnAgc2FpZCBhbiBpbnZlc3RvciBncm91cCBsZWQgYnkgdGhlIGZpbmFuY2lhbCBzZXJ2aWNlcyBmaXJtIEUuTS4gV2FyYnVyZyBQaW5jdXMgYW5kIENvIEluYyBoYXMgYWdyZWVkIHRvIGFjcXVpcmUgQ29tcHV0ZXJsYW5kJ3MgYnVzaW5lc3MuICAgICBDb21wdXRlcmxhbmQsIGEgcHJpdmF0ZWx5LWhlbGQgY29tcGFueSBzYWlkIHRvIGJlIHRoZSB3b3JsZCdzIGxhcmdlc3QgcmV0YWlsZXIgb2YgcGVyc29uYWwgY29tcHV0ZXJzLCBkZWNsaW5lZCB0byBwcm92aWRlIGRldGFpbHMgb2YgdGhlIGFycmFuZ2VtZW50LiAgICAgQnV0IHRoZSBjb21wYW55IHNhaWQgaXQgZXhwZWN0cyB0byBjbG9zZSB0aGUgYWNxdWlzaXRpb24gb3ZlciB0aGUgbmV4dCA2MCB0byA5MCBkYXlzLiAgICAgSW4gYW5ub3VuY2luZyB0aGUgdHJhbnNhY3Rpb24sIENvbXB1dGVybGFuZCBzYWlkIHRoZSBhY3F1aXNpdGlvbiB3aWxsIHByb3ZpZGUgaXQgd2l0aCByZXNvdXJjZXMgYW5kIHN1cHBvcnQgdG8gbWFpbnRhaW4gYW5kIGV4cGFuZCBpdHMgbGVhZGVyc2hpcCBwb3NpdGlvbiBpbiB0aGUgY29tcHV0ZXIgcmV0YWlsIGluZHVzdHJ5LiAgICAgQ29tcHV0ZXJsYW5kIGFsc28gc2FpZCBpdHMgbmV0d29yayByZXRhaWwgc2FsZXMgaW4gMTk4NiB0b3RhbGxlZCAxLjQ1IGJpbGxpb24gZGxycy4gIFJldXRlciAzOwoxOTg3MDYwMQlDT05HUkVTU01BTiBTQVlTIFUuUy4gVU5QUkVQQVJFRCBGT1IgT0lMIENVVE9GRiBSZXAuIE1pa2UgU3luYXIgc2FpZCB0b2RheSB0aGF0IHdoaWxlIFByZXNpZGVudCBSZWFnYW4gaXMgcmVhZHkgdG8gdXNlIG1pbGl0YXJ5IGZvcmNlIHRvIHByb3RlY3QgS3V3YWl0IHRhbmtlcnMgaW4gdGhlIEd1bGYsIHRoZSBVbml0ZWQgU3RhdGVzIGlzIGlsbC1wcmVwYXJlZCBhdCBob21lIHRvIGRlYWwgd2l0aCBhIG5ldyBlbmVyZ3kgY3Jpc2lzLiAgICAgU3luYXIsIERlbW9jcmF0IG9mIE9rbGFob21hLCBtYWRlIGhpcyByZW1hcmtzIGluIGNvbW1lbnRzIG9uIGEgc3R1ZHkgYnkgdGhlIEdlbmVyYWwgQWNjb3VudGluZyBPZmZpY2UgKEdBTykgb24gdGhlIFUuUy4gcGFydGljaXBhdGlvbiBpbiB0aGUgMTk4NSB0ZXN0IG9mIHRoZSBlbWVyZ2VuY3kgb2lsIHNoYXJpbmcgcHJvZ3JhbSBvZiB0aGUgSW50ZXJuYXRpb25hbCBFbmVyZ3kgQWdlbmN5LiAgICAgVGhlIElFQSwgYW4gYWxsaWFuY2Ugb2YgMjEgb2lsIGNvbnN1bWluZyBjb3VudHJpZXMsIHdhcyBmb3JtZWQgYWZ0ZXIgdGhlIDE5NzMtNzQgQXJhYiBvaWwgZW1iYXJnbyB0byBmaW5kIHdheXMgdG8gZGVhbCB3aXRoIGFueSBmdXR1cmUgb2lsIGN1dG9mZi4gICAgIFN5bmFyIHNhaWQsICJ0aGUgcHJlc2lkZW50IGlzIHByZXBhcmVkIHRvIHRha2UgbWlsaXRhcnkgYWN0aW9uIHRvIHByb3RlY3QgS3V3YWl0aSBvaWwgdGFua2VycyBidXQgaGFzIGJlZW4gdW53aWxsaW5nIHRvIHRha2UgbGVzcyBkYW5nZXJvdXMsIGVxdWFsbHktaW1wb3J0YW50IGFjdGlvbiB0byBwcmVwYXJlIG91ciBuYXRpb24gZm9yIHRoZSBuZXh0IGVuZXJneSBjcmlzaXMuIiAgICAgUmVhZ2FuIHNhaWQgdGhlIFUuUy4gbWlsaXRhcnkgd291bGQgcHJvdGVjdCBLdXdhaXRpIG9pbGVycyB0byBhc3N1cmUgdGhlIFdlc3Qgb2YgYSBjb250aW51aW5nIHN1cHBseSBvZiBNaWRkbGUgRWFzdCBvaWwsIGluY3JlYXNpbmdseSBiZWluZyB0aHJlYXRlbmVkIGJ5IHRoZSBJcmFuaWFuLUlyYXFpIHdhci4gU3luYXIsIHdobyBhc2tlZCBmb3IgdGhlIEdBTyByZXBvcnQgYWZ0ZXIgY3JpdGljaXNtIG9mIFUuUy4gYWN0aW9uIGluIGEgcHJldmlvdXMgSUVBIHRlc3QsIHNhaWQgdGhlIFVuaXRlZCBTdGF0ZXMgc3VjY2Vzc2Z1bGx5IGFkdm9jYXRlZCBhIHRlc3QgbGltaXRlZCB0byB0cmFpbmluZyBwYXJ0aWNpcGFudHMgaW4gb2lsIHNoYXJpbmcgcHJvY2VkdXJlcyBhbmQgdGhlIHN5c3RlbSdzIG1lY2hhbmljYWwgYXNwZWN0cy4gIFJldXRlciAzOwoxOTg3MDYwMQlDT05JU1RPTiBHUk9VUCBUTyBDT05USU5VRSBCSUQgRk9SIEFMTEVHSVMgPEFFRz4gQW4gaW52ZXN0b3IgZ3JvdXAgbGVkIGJ5IENvbmlzdG9uIFBhcnRuZXJzIHNhaWQgaXQgcGxhbnMgdG8gY29udGludWUgaXRzIGVmZm9ydCB0byBnYWluIGNvbnRyb2wgb2YgQWxsZWdpcyBDb3JwIGRlc3BpdGUgdGhlIGRlZmVuc2l2ZSBtYW5ldXZlcnMgQWxsZWdpcyBhbm5vdW5jZWQgbGFzdCB3ZWVrLiAgICAgQWxsZWdpcyBzYWlkIHRoZW4gdGhhdCBpdCB3b3VsZCBib3Jyb3cgdGhyZWUgYmlsbGlvbiBkbHJzIGFuZCBwYXkgc2hhcmVob2xkZXJzIGEgZGl2aWRlbmQgb2YgNjAgZGxycyBwZXIgc2hhcmUsIGxvd2VyaW5nIHRoZSBjb21wYW55J3MgbmV0IHdvcnRoLiBUaGUgQ29uaXN0b24gZ3JvdXAsIHdoaWNoIG93bnMgMTMgcGN0IG9mIEFsbGVnaXMgc3RvY2ssIGhhcyBzYWlkIHRoYXQgaXQgd291bGQgc2VlayBzaGFyZWhvbGRlciBjb25zZW50cyB0byByZW1vdmUgMTMgb2YgdGhlIDE2IEFsbGVnaXMgZGlyZWN0b3JzLiBUaGUgZ3JvdXAgaGFkIHNhaWQgaXQgd291bGQgY29uc2lkZXIgYnJlYWtpbmcgdXAgQWxsZWdpcyBpbnRvIGl0cyBhaXJsaW5lLCBob3RlbCBhbmQgdmVoaWNsZSByZW50YWwgY29tcG9uZW50cyBpZiBpdCBzdWNjZWVkZWQuICAgICBUaGUgQ29uaXN0b24gZ3JvdXAgc2FpZCBpdCBleHBlY3RzIHRvIG1ha2UgYSBmdXJ0aGVyIGFubm91bmNlbWVudCB0b2RheSBvbiBpdHMgcGxhbnMgZm9yIEFsbGVnaXMuICAgICBXYWxsIFN0cmVldCBhbmFseXN0cyBhbmQgdHJhZGVycyBoYWQgbm90IGV4cGVjdGVkIENvbmlzdG9uIHRvIGFiYW5kb24gaXRzIHB1cnN1aXQgb2YgQWxsZWdpcyBhcyBhIHJlc3VsdCBvZiB0aGUgQWxsZWdpcyBkZWZlbnNpdmUgbWVhc3VyZXMuICAgICBBbGxlZ2lzIG9mZmljaWFscyB3ZXJlIHVuYXZhaWxhYmxlIGZvciBjb21tZW50LiAgUmV1dGVyIDM7CjE5ODcwNjAxCUNPTlQnTCBNQVRFUklBTFMgPENVTz4gRU5EUyBDT05TSURFUkFUSU9OIE9GIEJJRCBDb250aW5lbnRhbCBNYXRlcmlhbHMgQ29ycCBzYWlkIGl0cyBkaXJlY3RvcnMgZGVjaWRlZCBub3QgdG8gZ2l2ZSBmdXJ0aGVyIGNvbnNpZGVyYXRpb24gdG8gImJ1c2luZXNzIGNvbWJpbmF0aW9uIiBwcm9wb3NlZCBieSBhIHN0b2NraG9sZGVyIGdyb3VwIHRoYXQgaG9sZHMgNS4yIHBjdCBvZiBDb250aW5lbnRhbCBNYXRlcmlhbHMgc3RvY2suICAgICBDb250aW5lbnRhbCBNYXRlcmlhbHMgc2FpZCB0aGUgb2ZmZXIgaGFkIGJlZW4gcmVjZWl2ZWQgZnJvbSBDb250aW5lbnRhbCBBc3NvY2lhdGVzLCBhIGdyb3VwIG9mIFN0LiBMb3VpcyBidXNpbmVzc21lbi4gICAgIEFjY29yZGluZyB0byBDb250aW5lbnRhbCBNYXRlcmlhbHMsIHRoZSBncm91cCBzYWlkIE1heSAxMSBpdCBtaWdodCBib29zdCBpdHMgc3Rha2UgaW4gQ29udGluZW50YWwgTWF0ZXJpYWxzLiBCdXQgdGhlIGdyb3VwIGFsc28gc2FpZCBpbiBhIGxldHRlciBsYXN0IHdlZWsgdG8gdGhlIGNvbXBhbnkgdGhhdCB0aGUgZ3JvdXAgaGFkIG5vIGZpbmFuY2luZy4gVGhlIGJvYXJkICJkaWQgbm90IGNvbnNpZGVyIGl0IGFuIG9mZmljaWFsIG9mZmVyLCIgYSBDb250aW5lbnRhbCBNYXRlcmlhbHMgc3Bva2Vzd29tYW4gc2FpZC4gIFJldXRlciAzOwoxOTg3MDYwMQlDT1VSVCBVUEhPTERTIEJBTksgQlVJTERJTkcgPEJCPiBTRUxGLVRFTkRFUiBCYW5rIEJ1aWxkaW5nIGFuZCBFcXVpcG1lbnQgQ29ycCBvZiBBbWVyaWNhIHNhaWQgdGhlIERlbGF3YXJlIENoYW5jZXJ5IENvdXJ0IGRlbmllZCBhIHN0b2NraG9sZGVyJ3MgcmVxdWVzdCBmb3IgYSBwcmVsaW1pbmFyeSBpbmp1bmN0aW9uIGFnYWluc3QgYW4gb2ZmZXIgZm9yIEJhbmsgQnVpbGRpbmcgc3RvY2sgbWFkZSBieSB0aGUgY29tcGFueSBhbmQgaXRzIGVtcGxveWVlIHN0b2NrIG93bmVyc2hpcCBwbGFuIGFuZCB0cnVzdC4gICAgIEJhbmsgQnVpbGRpbmcgc2FpZCB0aGUgam9pbnQgb2ZmZXIgaXMgZm9yIDc4MCwzMDAgc2hhcmVzIG9mIEJhbmsgQnVpbGRpbmcgc3RvY2sgYXQgMTQgZGxycyBhIHNoYXJlLiBUaGUgb2ZmZXIgaXMgc2NoZWR1bGVkIHRvIGV4cGlyZSBtaWRuaWdodCAoRURUKSBvbiBKdW5lIDIuICAgICBCYW5rIEJ1aWxkaW5nIGFsc28gc2FpZCBpdHMgYm9hcmQgc2V0IEp1bHkgMzAgYXMgdGhlIGRhdGUgb2YgdGhlIGNvbXBhbnkncyBhbm51YWwgbWVldGluZywgd2l0aCBhIHJlY29yZCBkYXRlIG9mIEp1bHkgc2l4LiAgUmV1dGVyIDM7CjE5ODcwNjAxCURFS0FMQiA8REtMQkIuTz4gU0VMTFMgSEVJTk9MRCBIT0cgTUFSS0VUIERla2FsYiBDb3JwIHNhaWQgaXQgc29sZCBpdHMgSGVpbm9sZCBIb2cgTWFya2V0IEluYyB0byB0aGUgdW5pdCdzIGVtcGxveWVlcyB0aHJvdWdoIGFuIEVtcGxveWVlIFN0b2NrIE93bmVyc2hpcCBQbGFuIChFU09QKS4gICAgIFRlcm1zIHdlcmUgbm90IGRpc2Nsb3NlZCwgYnV0IHByZXNpZGVudCBCcnVjZSBCaWNrbmVyIHNhaWQgdGhlIHNhbGUgd2lsbCBoYXZlIGEgcG9zaXRpdmUsIGJ1dCBub3Qgc3Vic3RhbnRpYWwsIGltcGFjdCBvbiBEZUthbGIgYXMgYSB3aG9sZS4gICAgIFRoZSBjb21wYW55IHNhaWQgdGhlIGhvZyBtYXJrZXRpbmcgdW5pdCBkaWQgbm90IGZpdCB3aXRoIGl0cyBzdHJhdGVneSBvZiBpbnZlc3RpbmcgaW4gaXRzIGNvcmUgYnVzaW5lc3Nlcy4gICBSZXV0ZXIgMzsKMTk4NzA2MDEJRElWRVJTSUZJRUQgSU5EVVNUUklFUyAoRE1DKSBUTyBTRUxMIFVOSVRTIERpdmVyc2lmaWVkIEluZHVzdHJpZXMgSW5jIHBsYW5zIHRvIHJlY292ZXIgbW9yZSB0aGFuIGZvdXIgbWxuIGRscnMgZnJvbSB0aGUgc2FsZSBvZiB0d28gbWFyZ2luYWwgc3Vic2lkaWFyaWVzLCBjaGFpcm1hbiBCZW4gRml4bWFuIHRvbGQgdGhlIGFubnVhbCBtZWV0aW5nLiAgICAgRml4bWFuIHNhaWQgRGl2ZXJzaWZpZWQgSW5kdXN0cmllcywgYXMgcGFydCBvZiBpdHMgZWZmb3J0IHRvIHJlZGVwbG95IGFzc2V0cywgd2FudHMgdG8gc2VsbCBpdHMgVGhlb2RvcmUgU2FsbCBJbmMgYW5kIExpYmVydHkgU21lbHRpbmcgV29ya3MgKDE5NjIpIEx0ZCB1bml0cy4gVGhlIHR3byBlaXRoZXIgbG9zdCBtb25leSBvciBoYWQgbWFyZ2luYWwgcHJvZml0YWJpbGl0eSBpbiByZWNlbnQgeWVhcnMsIGhlIHNhaWQuICAgICBEaXZlcnNpZmllZCBhbHNvIHNhaWQgaXQgaXMgaW4gdGhlIHByb2Nlc3Mgb2Ygb2J0YWluaW5nIHNpeCBtbG4gZGxycyBpbiBhbiBpbmR1c3RyaWFsIHJldmVudWUgYm9uZCBmaW5hbmNpbmcgZnJvbSB0aGUgU3RhdGUgb2YgQ29ubmVjdGljdXQgdG8gbW9kZXJuaXplIHRoZSBjb21wYW55J3MgUGx1bWUgYW5kIEF0d29vZCBCcmFzcyBNaWxsIHBsYW50IGluIFRob21hc3RvbiwgQ29ubi4gIFJldXRlciAzOwoxOTg3MDYwMQlEUkVTU0VSIDxEST4gVE8gU0VMTCBVTklUIFRPIFJPU0VOS1JBTlogQU5EIENPIERyZXNzZXIgSW5kdXN0cmllcyBJbmMgc2FpZCBpdCBzaWduZWQgYSBkZWZpbml0aXZlIGFncmVlbWVudCB0byBzZWxsIGl0cyBSZWxpYW5jZSBTdGFuZGFyZCBMaWZlIEluc3VyYW5jZSBDbyB0byBSU0wgSG9sZGluZyBDbyBJbmMuLCBhIHN1YnNpZGlhcnkgb2YgdGhlIHByaXZhdGVseS1oZWxkLCBOZXcgWW9yay1iYXNlZCBpbnZlc3RtZW50IGZpcm0gb2YgUm9zZW5rcmFueiBhbmQgQ28uICAgICBUZXJtcyB3ZXJlIG5vdCB1bmRpc2Nsb3NlZC4gUGhpbGFkZWxwaGlhLWJhc2VkIFJlbGlhbmNlIGVhcm5lZCAyNS4zIG1sbiBkbHJzIG9uIHNhbGVzIG9mIDIwMS42IG1sbiBkbHJzIGluIDE5ODYuICAgICBEcmVzc2VyIHNhaWQgaXQgd2lsbCB1c2UgdGhlIHByb2NlZWRzIGZyb20gdGhlIHNhbGUgZm9yIHN0b2NrIHJlcHVyY2hhc2VzLCBkZWJ0IHJlZHVjdGlvbiwgYW5kIHBvc3NpYmx5IGNvbXBsZW1lbnRhcnkgYWNxdWlzaXRpb25zIGluIHRoZSBmaWVsZCBvZiBlbmdpbmVlcmVkIHByb2R1Y3RzIGFuZCBzZXJ2aWNlcyBmb3IgZW5lcmd5IHByb2R1Y2Vycy4gIFJldXRlciAzOwoxOTg3MDYwMQlEVVRDSCBDT0NPQSBQUk9DRVNTT1JTIFVOSEFQUFkgV0lUSCBJQ0NPIEJVRkZFUiBEdXRjaCBjb2NvYSBwcm9jZXNzb3JzIGFyZSB1bmhhcHB5IHdpdGggdGhlIGludGVybWl0dGVudCBidXlpbmcgYWN0aXZpdGllcyBvZiB0aGUgSW50ZXJuYXRpb25hbCBDb2NvYSBPcmdhbml6YXRpb24ncyBidWZmZXIgc3RvY2sgbWFuYWdlciwgaW5kdXN0cnkgc291cmNlcyB0b2xkIFJldXRlcnMuICAgICAiVGhlIHdheSBoZSBpcyBvcGVyYXRpbmcgYXQgdGhlIG1vbWVudCBpcyBkb2luZyBhbG1vc3Qgbm90aGluZyB0byBzdXBwb3J0IHRoZSBtYXJrZXQuIEluIGZhY3QgaGUgY291bGQgYmUgc2FpZCB0byBiZSBhY3RpdmVseSBkZXByZXNzaW5nIGl0LCIgb25lIGNvbXBhbnkgc3Bva2VzbWFuIHNhaWQuICAgICBJbmNsdWRpbmcgdGhlIDMsMDAwIHRvbm5lcyBoZSBhY3F1aXJlZCBvbiBGcmlkYXksIHRoZSB0b3RhbCBhbW91bnQgb2YgY29jb2EgYm91Z2h0IGJ5IHRoZSBidWZmZXIgc3RvY2sgbWFuYWdlciBzaW5jZSBoZSByZWNlbnRseSBiZWdhbiBzdXBwb3J0IG9wZXJhdGlvbnMgdG90YWxzIDIxLDAwMCB0b25uZXMuICAgICBEZXNwaXRlIHRoaXMgYnV5aW5nLCB0aGUgcHJpY2Ugb2YgY29jb2EgaXMgd2VsbCB1bmRlciB0aGUgMSw2MDAgU3BlY2lhbCBEcmF3aW5nIFJpZ2h0cywgU0RScywgYSB0b25uZSBsZXZlbCBiZWxvdyB3aGljaCB0aGUgYnNtIGlzIG9ibGlnZWQgdG8gYnV5IGNvY29hIG9mZiB0aGUgbWFya2V0LiAgICAgIkV2ZW4gYmVmb3JlIGhlIHN0YXJ0ZWQgb3BlcmF0aW9ucywgdHJhZGVycyBlc3RpbWF0ZWQgdGhlIG1hbmFnZXIgd291bGQgbmVlZCB0byBidXkgYXQgbGVhc3QgdXAgdG8gaGlzIDc1LDAwMCB0b25uZXMgbWF4aW11bSBiZWZvcmUgcHJpY2VzIG1vdmVkIHVwIHRvIG9yIGFib3ZlIHRoZSAxLDYwMCBTRFIgbGV2ZWwsIGFuZCB5ZXQgaGUgYXBwZWFycyByZWx1Y3RhbnQgdG8gZG8gc28sIiBvbmUgbWFudWZhY3R1cmVyIHNhaWQuICAgICAiV2UgYWxsIGhvcGVkIHRoZSBtYW5hZ2VyIHdvdWxkIG1vdmUgaW50byB0aGUgbWFya2V0IHRvIGJ1eSB1cCB0byA3NSwwMDAgdG9ubmVzIGluIGEgZmFpcmx5IHNob3J0IHBlcmlvZCwgYW5kIHRoZW4gc2ltcGx5IHN0ZXAgYmFjaywiIGhlIGFkZGVkLiAgICAgIlRoZSB3YXkgdGhlIG1hbmFnZXIgaXMgb25seSBuaWJibGluZyBhdCB0aGUgZWRnZSBvZiB0aGUgbWFya2V0IGF0IHRoZSBtb21lbnQgaXMgYWN0dWFsbHkgZGVwcmVzc2luZyBzZW50aW1lbnQgYW5kIHRoZSBtYXJrZXQgYmVjYXVzZSBldmVyeW9uZSBpcyBob2xkaW5nIGJhY2sgZnJvbSBib3RoIGJ1eWluZyBhbmQgc2VsbGluZyB3YWl0aW5nIHRvIHNlZSB3aGF0IHRoZSBtYW5hZ2VyIHdpbGwgZG8gbmV4dCwiIG9uZSBwcm9jZXNzb3Igc2FpZC4gICAgICJBcyBsb25nIGFzIGhpcyBidXlpbmcgdGFjdGljcyByZW1haW4gdGhlIHNhbWUgdGhlIG1hcmtldCBpcyBsaWtlbHkgdG8gc3RheSBpbiB0aGUgZG9sZHJ1bXMsIGFuZCBJIHNlZSBubyBpbmRpY2F0aW9uIGhlIGlzIGFib3V0IHRvIGFsdGVyIGhpcyBtZXRob2RzLCIgaGUgYWRkZWQuICAgICBQcm9jZXNzb3JzIGFuZCBjaG9jb2xhdGUgbWFudWZhY3R1cmVycyBzYWlkIGNvbnN1bWVyIHByaWNlcyBmb3IgY29jb2EgcHJvZHVjdHMgd2VyZSB1bmxpa2VseSB0byBiZSBhZmZlY3RlZCBieSBidWZmZXIgc3RvY2sgYnV5aW5nIGZvciBzb21lIHRpbWUgdG8gY29tZS4gIFJldXRlciAzOwoxOTg3MDYwMQlEVVRDSCBPRkZJQ0lBTCBSQVRFIENVVCBTRUVOIFNUSUxMIExJS0VMWSBBIGN1dCBvZiBhYm91dCBoYWxmIGEgcGVyY2VudGFnZSBwb2ludCBpbiBEdXRjaCBvZmZpY2lhbCBpbnRlcmVzdCByYXRlcyBpcyBzdGlsbCBpbiBwcm9zcGVjdCwgYWx0aG91Z2ggZWNvbm9taXN0cyBzYWlkIHRoZSB0aW1pbmcgd291bGQgZGVwZW5kIG9uIEJ1bmRlc2JhbmsgbW92ZXMuICAgICBTcGVjdWxhdGlvbiBoYXMgYmVlbiByaWZlIHRoYXQgdGhlIER1dGNoIENlbnRyYWwgQmFuaywgZW5jb3VyYWdlZCBieSBhIHN0cm9uZyBndWlsZGVyL21hcmsgcmVsYXRpb25zaGlwIGFuZCB3aWRlIHByZW1pdW1zIGZvciBEdXRjaCBtb25leSBhbmQgY2FwaXRhbCBtYXJrZXQgcmF0ZXMgb3ZlciBHZXJtYW4sIG1pZ2h0IGxvd2VyIHJhdGVzIHdpdGhvdXQgdGhlIEJ1bmRlc2JhbmsgbW92aW5nIGZpcnN0LiAgICAgTGFzdCBtb250aCwgdGhlIENlbnRyYWwgQmFuayBsb3dlcmVkIGl0cyBzcGVjaWFsIGFkdmFuY2VzIHJhdGUgdG8gNS4xIHBjdCBmcm9tIDUuMjUgcGN0IGFmdGVyIHRoZSBCdW5kZXNiYW5rIGRyb3BwZWQgaXRzIHJlcHVyY2hhc2UgdGVuZGVyIHJhdGUgdG8gMy41NSBwY3QgZnJvbSAzLjggcGN0LiAgICAgVGhhdCByYXRlIGhhcyByZW1haW5lZCBpbiBmb3JjZSwganVzdCBob2xkaW5nIGFib3ZlIHRoZSBmaXZlIHBjdCBvZmZpY2lhbCBzZWN1cmVkIGxvYW5zIHJhdGUgd2hpY2ggZ292ZXJucyBjb21tZXJjaWFsIGJhbmsgYm9ycm93aW5ncy4gICAgIEdpdmVuIGEgc3Ryb25nIGd1aWxkZXIsIGEgZnVydGhlciBmYWxsIGluIHRoZSBXZXN0IEdlcm1hbiByZXBvIHJhdGUgd291bGQgdHJpZ2dlciBhIGxvd2VyIHNwZWNpYWwgYWR2YW5jZXMgdGFyaWZmLCBmb3JjaW5nIGFuIG9mZmljaWFsIER1dGNoIHJhdGUgY3V0LCBhbmFseXN0cyBzYWlkLiAgICAgSW4gRmVicnVhcnksIHdoZW4gdGhlIEJ1bmRlc2JhbmsgY3V0IGl0cyBkaXNjb3VudCByYXRlIHRvIHRocmVlIHBjdCBmcm9tIDMuNSBwY3QsIHRoZSBDZW50cmFsIEJhbmsgb25seSBsb3dlcmVkIG1vbmV5IG1hcmtldCByYXRlcyBhbmQgcmVtb3ZlZCBhIHN1cmNoYXJnZSBvdmVyIHRoZSBzZWN1cmVkIGxvYW5zIHJhdGUgb24gbGVuZGluZyB1bmRlciBpdHMgdGhyZWUgbW9udGggY3JlZGl0IHF1b3RhLiAgICAgU2luY2UgdGhlbiwgaG93ZXZlciwgYm90aCB0aGUgQ2VudHJhbCBCYW5rIGFuZCBGaW5hbmNlIE1pbmlzdHJ5IGhhdmUgbWFkZSBpdCBjbGVhciB0aGV5IGZhdm91ciBsb3dlciBvZmZpY2lhbCByYXRlcy4gICAgIEluIEFwcmlsLCBDZW50cmFsIEJhbmsgUHJlc2lkZW50IFdpbSBEdWlzZW5iZXJnIHNhaWQgaGUgd291bGQgZm9sbG93IGFueSBCdW5kZXNiYW5rIGN1dCwgYW5kIGxhc3Qgd2VlayB0aGUgRmluYW5jZSBNaW5pc3RyeSBleHByZXNzZWQgc2F0aXNmYWN0aW9uIHdoZW4gaXQgcmFpc2VkIDIuMjUgYmlsbGlvbiBndWlsZGVycyB3aXRoIGEgc2l4IHBjdCBjb3Vwb24gc3RhdGUgbG9hbiBwcmljZWQgYXQgMTAwLjEwIHBjdCBmb3IgYW4gZWZmZWN0aXZlIHlpZWxkIG9mIDUuOTggcGN0LCB0aGUgbG93ZXN0IHNpbmNlIDE5NjUuICAgICBUZWNobmljYWxseSwgYW5hbHlzdHMgc2FpZCwgdGhlcmUgaGFzIHRvIGJlIGEgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSBzZWN1cmVkIGxvYW5zIHJhdGUgd2hpY2ggYXBwbGllcyB0byBsZW5kaW5nIHVuZGVyIHRoZSBjcmVkaXQgcXVvdGEsIGFuZCB0aGUgdGFyaWZmIG9uIHNwZWNpYWwgYWR2YW5jZXMgd2hpY2ggYWRkIGV4dHJhIGxpcXVpZGl0eSB0byB0aGUgbW9uZXkgbWFya2V0LiAgICAgQmFuayBlY29ub21pc3RzIGFuZCBkZWFsZXJzIHNhaWQgYSBXZXN0IEdlcm1hbiBtb3ZlIHRvIGZ1cnRoZXIgbG93ZXIgdGhlIHJhdGUgb24gc2VjdXJpdGllcyByZXB1cmNoYXNlIHBhY3RzIHdvdWxkIHJlc3VsdCBpbiB0aGUgQ2VudHJhbCBCYW5rIGVhc2luZyB0aGUgc3BlY2lhbCBhZHZhbmNlIHJhdGUsIHByb3ZpZGVkIHRoZSBndWlsZGVyL21hcmsgcmVsYXRpb25zaGlwIHBlcm1pdHRlZC4gICAgIFRoZSBDZW50cmFsIEJhbmsgYWltcyB0byBrZWVwIHRoZSBndWlsZGVyIHN0YWJsZSBhcm91bmQgaXRzIHBhcml0eSB2YWx1ZSB3aXRoaW4gdGhlIEV1cm9wZWFuIE1vbmV0YXJ5IFN5c3RlbSBvZiAxMTIuNjczIGd1aWxkZXJzIHBlciAxMDAgbWFya3MuICAgICBUb2RheSwgZm9yZWlnbiBleGNoYW5nZSBidXlpbmcgcHVzaGVkIHRoZSBtYXJrIHVwIDEwIGd1aWxkZXIgY2VudHMgdG8gMTEyLjcwNSBndWlsZGVycyBwZXIgMTAwIGF0IHRoZSBmaXgsIGEgbGV2ZWwgdGhhdCB3b3VsZCBub3QgcGVybWl0IGEgY2hhbmdlIGluIHRoZSBpbnRlcmVzdCByYXRlIGRpZmZlcmVudGlhbCBiZXR3ZWVuIFdlc3QgR2VybWFueSBhbmQgdGhlIE5ldGhlcmxhbmRzLCBkZWFsZXJzIHNhaWQuICAgICBBbiBlY29ub21pc3QgYXQgQUJOIEJhbmsgc2FpZCBoZSBleHBlY3RlZCBXZXN0IEdlcm1hbiBhbmQgRHV0Y2ggaW50ZXJlc3QgcmF0ZXMgdG8gZWFzZSBpbiB0aGUgc2hvcnQgdGVybS4gSG93ZXZlciwgaGUgc2FpZCBuZXcgd2FnZSBhZ3JlZW1lbnRzIGluIFdlc3QgR2VybWFueSBoYWQgcmFpc2VkIGluZmxhdGlvbiBleHBlY3RhdGlvbnMgd2hpY2ggd291bGQgcHV0IHVwd2FyZCBwcmVzc3VyZSBvbiBpbnRlcmVzdCByYXRlcyBpbiB0aGUgbG9uZ2VyIHRlcm0uICAgICBJbiB0aGUgTmV0aGVybGFuZHMsIHRoZSBpbmZsYXRpb24gb3V0bG9vayBmb3IgMTk4NyBpcyBuaWwsIG9yIGV2ZW4gbmVnYXRpdmUsIHdoaWxlIHRoZSBsYXRlc3Qgb2ZmaWNpYWwgZWNvbm9taWMgZm9yZWNhc3RzIHBvaW50IHRvIGEgZmFsbGluZyByYXRlIG9mIGVjb25vbWljIGdyb3d0aC4gICAgICJJdCB3aWxsIGRlcGVuZCBvbiB0aGUgb3V0Y29tZSBvZiBjb2xsZWN0aXZlIHdhZ2UgYWdyZWVtZW50IG5lZ290aWF0aW9ucyBoZXJlIHdoZXRoZXIgdGhlcmUgY291bGQgYmUgY29zdCBwdXNoIGluZmxhdGlvbiwiIHRoZSBBQk4gZWNvbm9taXN0IHNhaWQuICAgICBIZSBzYWlkIER1dGNoIG1vbmV5IHN1cHBseSBncm93dGgsIHdoaWNoIHJhbiBhdCAzLjQgcGN0IGluIEphbnVhcnksIGNvdWxkIGFsc28gY29udHJpYnV0ZSB0byBzb21lIGluZmxhdGlvbi4gICAgIEF0IEFtcm8gQmFuaywgYSBsZWFkaW5nIGFuYWx5c3Qgc2FpZCBpbmZsYXRpb24gY291bGQgcnVuIHRvIHR3byBwY3QgbmV4dCB5ZWFyLiBUaGUgYmFuayBleHBlY3RzIER1dGNoIGNhcGl0YWwgbWFya2V0IHJhdGVzLCBjdXJyZW50bHkgYXZlcmFnaW5nIGFyb3VuZCA2LjEgcGN0LCB0byBzdG9wIGVhc2luZyBpbiB0aGUgc2Vjb25kIGhhbGYgb2YgdGhpcyB5ZWFyIGFuZCBzdGFiaWxpemUgYXJvdW5kIDUuNiBwY3QuICAgICBBbmFseXN0cyBzYWlkIGFuIG9mZmljaWFsIHJhdGUgY3V0IGNvdWxkIHRyaWdnZXIgYSBidXlpbmcgc3ByZWUgb24gdGhlIGJvbmQgbWFya2V0IHdoaWNoIHdvdWxkIGJyaW5nIHlpZWxkcyBkb3duLCBwcm9iYWJseSBvbmx5IHRlbXBvcmFyaWx5LCB3aGlsZSBtb25leSByYXRlcyBjb3VsZCBmYWxsIGJlbG93IGZpdmUgcGN0LiAgICAgQ3VycmVudGx5LCBhbGwgcGVyaW9kcyBhcmUgdHJhZGVkIGF0IDUuMTIgdG8gNS4yNSBwY3QgaW4gdGhlIG1vbmV5IG1hcmtldC4gIFJFVVRFUiAzOwoxOTg3MDYwMQlFQyBNSU5JU1RFUlMgQ09OU0lERVIgQ1VUQkFDS1MgSU4gU1RFRUwgU1VQUE9SVCBBIG5ldyBzdGVlbCBxdW90YSBzeXN0ZW0gdGhhdCB3b3VsZCBzdHJpY3RseSBsaW1pdCBFdXJvcGVhbiBDb21tdW5pdHkgKEVDKSBzdXBwb3J0IHRvIHRoZSBpbmR1c3RyeSBjb3VsZCBiZSBmb3JjZWQgb24gcHJvZHVjZXJzIGlmIHRoZXkgZmFpbCB0byBmaW5kIHRoZWlyIG93biBzb2x1dGlvbiBxdWlja2x5LCBvZmZpY2lhbHMgc2FpZC4gICAgIEVDIGluZHVzdHJ5IG1pbmlzdGVycyBtZWV0aW5nIGhlcmUgY29uc2lkZXJlZCB0d28ga2V5IHByb3Bvc2FscyBhaW1lZCBhdCBjdXR0aW5nIGJhY2sgc3VycGx1cyBjYXBhY2l0eSBieSAzMCBtbG4gdG9ubmVzIGJ5IDE5OTAuICAgICBUaGUgZmlyc3Qgd291bGQgbGltaXQgdGhlIGN1cnJlbnQgcXVvdGEgc3lzdGVtLCB3aGljaCBoYXMgcHJvdGVjdGVkIEVDIG91dHB1dCBmb3Igc2V2ZW4geWVhcnMsIG9ubHkgdG8gZmxhdCBwcm9kdWN0cyBhbmQgaGVhdnkgc2VjdGlvbnMsIHRoZXJlYnkgZm9yY2luZyBvdGhlciB0eXBlcyBvZiBzdGVlbCBwcm9kdWN0cyBpbnRvIGZyZWUgbWFya2V0IGNvbXBldGl0aW9uLiAgICAgVGhlIHNlY29uZCBwcm9wb3NhbCB3b3VsZCBsaW5rIGNvbnRpbnVhdGlvbiBvZiBhIHF1b3RhIHN5c3RlbSB3aXRoIHByb2dyZXNzIHRvd2FyZCBwbGFudCBjbG9zdXJlcywgYWx0aG91Z2ggbGVzcyB0aGFuIGEgbW9udGggYWdvIHRoZSBFQyBzdGVlbG1ha2VycycgbG9iYnkgZ3JvdXAgRXVyb2ZlciBzYWlkIHRoZXkgaGFkIGFiYW5kb25lZCBlZmZvcnRzIHRvIGNsb3NlIHBsYW50cyB2b2x1bnRhcmlseS4gICAgIFRoZSBtaW5pc3RlcnMgc3RvcHBlZCBzaG9ydCBvZiBpbXBvc2luZyB0aGVpciBvd24gc29sdXRpb24gaW1tZWRpYXRlbHksIGluc3RlYWQgdXJnaW5nIHN0ZWVsIHByb2R1Y2VycyB0byB0cnkgYWdhaW4gdG8gcmVhY2ggYWdyZWVtZW50IG9uIHZvbHVudGFyeSBjdXRiYWNrcy4gICAgIFRoZSBFQyBDb21taXNzaW9uIGhhcyBzYWlkIGl0IHdpbGwgY29tZSB1cCB3aXRoIGRldGFpbGVkIHByb3Bvc2FscyBpbiBKdWx5IG9uIHRoZSBmdXR1cmUgb2YgdGhlIEVDIHN0ZWVsIGluZHVzdHJ5IGFuZCBFQyBpbmR1c3RyeSBtaW5pc3RlcnMgbWVldCBhZ2FpbiBpbiBTZXB0ZW1iZXIgdG8gcmVhY2ggYSBmaW5hbCBkZWNpc2lvbi4gIFJldXRlciAzOwoxOTg3MDYwMQlFTlRFUlRBSU5NRU5UIE1BS0VTIEJVWU9VVCBPRkZFUiBUTyBDUkFaWSBFRERJRSBFbnRlcnRhaW5tZW50IE1hcmtldGluZyBJbmMgPEVNPiBzYWlkIGl0IGhhcyBtYWRlIGFuIG9mZmVyIHRvIHRoZSBib2FyZCBvZiBDcmF6eSBFZGRpZSBJbmMgdG8gYWNxdWlyZSBhbGwgb3V0c3RhbmRpbmcgc2hhcmVzIG9mIENyYXp5IEVkZGllIEluYyBmb3IgZWlnaHQgZGxycyBhIHNoYXJlIGluIGNhc2guICAgICBFbnRlcnRhaW5tZW50IHNhaWQgdGhlIG9mZmVyIHdvdWxkIGJlIGNvbmR1Y3RlZCB0aHJvdWdoIGEgbmVnb3RpYXRlZCBtZXJnZXIgd2l0aCBhIG5ldyBjb3Jwb3JhdGlvbiB0byBiZSBmb3JtZWQgYnkgRW50ZXJ0YWlubWVudCBNYXJrZXRpbmcuICAgICBFbnRlcnRhaW1lbnQgc2FpZCBpdCBoYXMgcmVxdWVzdGVkIGFuIGVhcmx5IG1lZXRpbmcgd2l0aCBDcmF6eSBFZGRpZSBJbmMncyBib2FyZCBhbmQgdGhhdCBpdCBoYXMgY29tbWl0dGVkIDUwIG1sbiBkbHJzIHRvd2FyZCB0aGUgcHVyY2hhc2Ugb2YgdGhlIHNoYXJlcyBpbmNsdWRpbmcgdGhvc2UgYWxyZWFkeSBwdXJjaGFzZWQuICAgICAgICAgVGhlIGNvbXBhbnkgYWxzbyBzYWlkIGl0IGhhcyByZXRhaW5lZCBEZWFuIFdpdHRlciBSZXlub2xkcyBJbmMgdG8gYXNzaXN0IGluIHJhaXNpbmcgdGhlIGJhbGFuY2Ugb2YgdGhlIGZpbmFuY2luZy4gICAgIEFjY29yZGluZyB0byBFbnRlcnRhaW5tZW50LCBpdHMgY29tcGFueSBhbmQgaXRzIGNoYWlybWFuIG93biBhYm91dCA0LjMgcGN0IG9mIENyYXp5IEVkZGllJ3MgY3VycmVudGx5IG91dHN0YW5kaW5nIHNoYXJlcy4gICAgIEFkZGl0aW9uYWxseSwgdGhlIGNvbXBhbnkgc2FpZCBpdCBpcyB3aWxsaW5nIHRvIG5lZ290aWF0ZSBhbGwgYXNwZWN0cyBvZiBpdHMgb2ZmZXIgYW5kIGlzIHdpbGxpbmcgdG8gY29uc2lkZXIgYSB0cmFuc2FjdGlvbiB3aGljaCB3b3VsZCBiZSB0YXggZnJlZSB0byBDcmF6eSBFZGRpZSdzIHNoYXJlaG9sZGVycy4gIFJldXRlciAzOwoxOTg3MDYwMQlFTlRFUlRBSU5NRU5UIE1BUktFVElORyBUT1BTIENSQVpZIEVERElFIE9GRkVSIEEgcXVpY2tseSBncm93aW5nIFRleGFzLWJhc2VkIGRpc3RyaWJ1dG9yIG9mIGVsZWN0cm9uaWNzIHByb2R1Y3RzIG9mZmVyZWQgMjQwIG1sbiBkbHJzIGZvciBDcmF6eSBFZGRpZSBJbmMgPGNyenk+LCB0aGUgbGVhZGluZyBOZXcgWW9yayBDaXR5IGVsZWN0cm9uaWNzIHJldGFpbGVyLCBvciBvbmUgZGxyIHBlciBzaGFyZSBtb3JlIHRoYW4gaXRzIGZvdW5kZXIgaGFzIGJpZC4gICAgIFRoZSA4LWRsci1hLXNoYXJlIG9mZmVyIGJ5IEVudGVydGFpbm1lbnQgTWFya2V0aW5nIEluYyA8ZW0+IGZvciBDcmF6eSBFZGRpZSBjb21lcyBsZXNzIHRoYW4gdHdvIHdlZWtzIGFmdGVyIGZvdW5kZXIgRWRkaWUgQW50YXIgYW5kIGEgZmlybSBjb250cm9sbGVkIGJ5IHRoZSBCZWx6YmVyZ3Mgb2YgQ2FuYWRhIGFubm91bmNlZCBhIGJpZCB0byB0YWtlIHRoZSAzMi1zdG9yZSBDcmF6eSBFZGRpZSBjaGFpbiBwcml2YXRlLiAgICAgQW5hbHlzdHMgc2FpZCBFbnRlcnRhaW5tZW50IE1hcmtldGluZywgd2hvc2UgcmV2ZW51ZXMgYW5kIHByb2ZpdHMgcXVhZHJ1cGxlZCBpbiAxOTg2LCBtYXkgYmUgbG9va2luZyB0byBicmVhayBpbnRvIHRoZSBoaWdobHkgY29tcGV0aXRpdmUgTmV3IFlvcmsgQ2l0eSByZXRhaWwgbWFya2V0IGZvciBjb25zdW1lciBlbGVjdHJvbmljcywgdGhlIG5hdGlvbidzIGJpZ2dlc3QsIGF0IGEgdGltZSB0aGUgZm9ydHVuZXMgb2YgZWxlY3Ryb25pY3MgcmV0YWlsZXJzIGhhdmUgc2FnZ2VkLiAgICAgVGhlIGFuYWx5c3RzIHF1ZXN0aW9uZWQgd2hldGhlciBIb3VzdG9uLWJhc2VkIEVudGVydGFpbm1lbnQgTWFya2V0aW5nLCBmb3VuZGVkIGJ5IGEgZm9ybWVyIGVsZWN0cm9uaWNzIHJldGFpbGVyIGJ1dCB3aG9zZSBwcmVzZW50IGJ1aW5lc3NlcyBhcmUgcHJpbWFyaWx5IGFzIHdob2xlc2FsZSBkaXN0cmlidXRvcnMsIGhhZCB0aGUgbWFuYWdlbWVudCBleHBlcnRpc2UgZm9yIHJldGFpbGluZyBvciB3YXMgbWVyZWx5IHRyeWluZyB0byBkcml2ZSB1cCB0aGUgcHJpY2Ugb2YgdGhlIENyYXp5IEVkZGllIHNoYXJlcyBpdCBhbHJlYWR5IG93bnMuICAgICAiSSBoYXZlIG1peGVkIGZlZWxpbmdzLCIgc2FpZCBhbmFseXN0IERlbm5pcyBUZWx6cm93IG9mIEVwcGxlciwgR2V1cmluIGFuZCBUdXJuZXIsIGEgRGFsbGFzIGJyb2tlcmFnZS4gIk9uIHRoZSBvbmUgaGFuZCBpdCdzIHByb2JhYmx5IGEgY2hlYXAgcHJpY2UuIE9uIHRoZSBvdGhlciBoYW5kLCBkb2VzIEVudGVydGFpbm1lbnQgTWFya2V0aW5nIGhhdmUgdGhlIG1hbmFnZW1lbnQgdGFsZW50IHRvIHJ1biBpdCBhbmQgd2lsbCB0aGUgQ3JhenkgRWRkaWUgcGVvcGxlIGxlYXZlPyIgICAgICJJdCdzIGEgcmlza3kgc3RyYXRlZ3kgZm9yIEVudGVydGFpbm1lbnQgTWFya2V0aW5nLCIgc2FpZCBhbmFseXN0IEVsaW90IExhdXJlbmNlIG9mIFdlc3NlbHMgQXJub2xkIGFuZCBIZW5kZXJzb24sIGEgTWlubmVhcG9saXMgYnJva2VyYWdlLiAiRWxlY3Ryb25pY3MgcmV0YWlsaW5nIGlzIHZlcnkgbWFuYWdlbWVudCBjb25jZW50cmF0ZWQ7IHRoZXknZCB3YW50IHRvIGtlZXAgQ3JhenkgRWRkaWUncyBtYW5hZ2VtZW50IGluIHBsYWNlLiIgICAgIExhdXJlbmNlIHNhaWQgdGhhdCwgc2luY2UgRW50ZXJ0YWlubWVudCBNYXJrZXRpbmcgYWxyZWFkeSBvd25zIDQuMyBwZXJjZW50IG9mIENyYXp5IEVkZGllJ3MgMzEuMyBtaWxsaW9uIHNoYXJlcywgaXQgbWF5IGJlIHRyeWluZyB0byBnZXQgdGhlIEFudGFyLUJlbHpiZXJnIGdyb3VwIHRvIGluY3JlYXNlIGl0cyA3LWRsci1hLXNoYXJlIG9mZmVyLiAgICAgU2hhcmVzIG9mIENyYXp5IEVkZGllLCB3aGljaCBoYXZlIGp1bXBlZCBmcm9tIHRoZSBoaWdoIDQtZGxyIHJhbmdlIHRvIGFib3ZlIDcgZGxycyBzaW5jZSB0aGUgQW50YXItQmVsemJlcmcgYmlkIHdhcyBhbm5vdW5jZWQgTWF5IDIwLCByb3NlIGFub3RoZXIgNTAgY2VudHMgTW9uZGF5IHRvIDguMzc1IGEgc2hhcmUgaW4gb3Zlci10aGUtIGNvdW50ZXIgdHJhZGluZy4gICAgICBBbnRhciwgdGhlIHJlY2x1c2l2ZSBmb3VuZGVyIG9mIHRoZSBjaGFpbiBpbiB0aGUgTmV3IFlvcmsgQ2l0eSwgUGhpbGFkZWxwaGlhIGFuZCBDb25uZWN0aWN1dCBhcmVhcywgc2FpZCBsYXN0IG1vbnRoIHRoYXQgaGlzIGdyb3VwIGNvbnRyb2xsZWQgMTQgcGVyY2VudCBvZiBDcmF6eSBFZGRpZSdzIHNoYXJlcy4gICAgIEEgQ3JhenkgRWRkaWUgc3Bva2VzbWFuIHNhaWQgdGhlIGNvbXBhbnkncyBib2FyZCBoYXMgdGFrZW4gbm8gZGVjaXNpb24gb24gdGhlIEFudGFyLUJlbHpiZXJnIG9mZmVyLCB3b3J0aCBzb21lIDE4NyBtbG4gZGxycyBzaW5jZSB0aGV5IG93biBtb3JlIHNoYXJlcyB0aGFuIEVudGVydGFpbm1lbnQgTWFya2V0aW5nLiBIZSB3b3VsZCBub3QgY29tbWVudCBvbiB0aGUgbmV3IG9mZmVyLiAgICAgRW50ZXJ0YWlubWVudCBNYXJrZXRpbmcgc2VsbHMgY29tcHV0ZXIgcHJvZHVjdHMgc3VjaCBhcyBkaXNrIGRyaXZlcyBhbmQgb3RoZXIsIG9mdGVuIGRpc2NvdW50ZWQgZWxlY3Ryb25pY3MgZ29vZHMgdG8gcmV0YWlsZXJzLCBwcmltYXJpbHkgaW4gdGhlIHNvdXRod2VzdCwgYW5kIGRpcmVjdGx5IHRvIGNvbnN1bWVycyBieSBjYWJsZSB0ZWxldmlzaW9uLiAgICAgSW4gZmlzY2FsIDE5ODYsIGVuZGluZyBsYXN0IEphbnVhcnksIGl0cyByZXZlbnVlcyByb3NlIHRvIDg3LjkgbWxuIGRscnMgZnJvbSAyMS4zIG1sbiBkbHJzIHRoZSBwcmV2aW91cyB5ZWFyLiBOZXQgcHJvZml0IHdlbnQgdG8gMy4yIG1sbiBkbHJzIGZyb20gNzUwLDAwMCBkbHJzIGluIDE5ODUuICAgICBFbnRlcnRhaW5tZW50IE1hcmtldGluZywgd2hvc2UgY2hpZWYgZXhlY3V0aXZlIG9mZmljZXIsIEVsaWFzIFppbm4sIG9uY2UgcmFuIGFuIGVsZWN0cm9uaWNzIHJldGFpbGluZyBidXNpbmVzcywgc2FpZCBpbiBhIHN0YXRlbWVudCBpdCBoYWQgY29tbWl0dGVkIDUwIG1sbiBkbHJzIHRvd2FyZCB0aGUgcHVyY2hhc2Ugb2YgQ3JhenkgRWRkaWUgYW5kIGhhZCByZXRhaW5lZCBEZWFuIFdpdHRlciBSZXlub2xkcyBJbmMgdG8gYXNzaXN0IGluIGZpbmFuY2luZyB0aGUgYmFsYW5jZS4gICAgIEFuYWx5c3QgVGVsemVyb3cgZXN0aW1hdGVkIHRoYXQgdGhlIGNvbXBhbnkgd291bGQgaGF2ZSB0byBib3Jyb3cgYWJvdXQgMTAwIG1sbiBkbHJzIHRvIGNvbXBsZXRlIHRoZSBwcm9wb3NlZCBidXlvdXQgc2luY2UgQ3JhenkgRWRkaWUgaGFzIGNhc2ggYW5kIG90aGVyIGFzc2V0cyB3b3J0aCBhYm91dCB0aGUgc2FtZSBhbW91bnQuICAgICBTaGFyZXMgb2YgRW50ZXJ0YWlubWVudCBNYXJrZXRpbmcgd2VyZSB1cCAxMi41IGNlbnRzIE1vbmRheSB0byA5LjUwLiAgUmV1dGVyIDM7CjE5ODcwNjAxCUVRVUlUSUNPUlAgVEFTTUFOIFRPIEJJRCBGT1IgTU9OSUVSIExURCA8RXF1aXRpY29ycCBUYXNtYW4gTHRkPiAoRVRMKSBzYWlkIGl0IHdpbGwgb2ZmZXIgNC4xNSBkbHJzIGEgc2hhcmUgY2FzaCBmb3IgYWxsIHRoZSBpc3N1ZWQgY2FwaXRhbCBvZiBNb25pZXIgTHRkIDxNTlJBLlM+LCBjdXJyZW50bHkgdGhlIHN1YmplY3Qgb2YgYSAzLjgwIGRscnMgYSBzaGFyZSBiaWQgYnkgQ1NSIEx0ZCA8Q1NSQS5TPi4gICAgIEFsdGVybmF0aXZlbHksIEVUTCB3aWxsIG9mZmVyIHRocmVlIHNoYXJlcyBwbHVzIDgyIGNlbnRzIGNhc2ggZm9yIGVhY2ggTW9uaWVyIHNoYXJlLCBpdCBzYWlkIGluIGEgc3RhdGVtZW50LiAgICAgQXMgcHJldmlvdXNseSByZXBvcnRlZCwgRVRMIG1vdmVkIGludG8gdGhlIG1hcmtldCBmb3IgTW9uaWVyIHNoYXJlcyBsYXN0IHdlZWssIHRha2luZyBpdHMgc3Rha2UgdG8gMTMuNyBwY3QgYnkgRnJpZGF5LiAgICAgSXQgbm93IGhvbGRzIDE0Ljk5IHBjdCwgdGhlIG1heGltdW0gYWxsb3dlZCB3aXRob3V0IEZvcmVpZ24gSW52ZXN0bWVudCBSZXZpZXcgQm9hcmQgKEZJUkIpIGFwcHJvdmFsLiBFVEwgaXMgY2xhc3NpZmllZCBhcyBmb3JlaWduIGJlY2F1c2Ugb2YgaXRzIE5ldyBaZWFsYW5kIGJhc2UuICAgICBUaGUgRVRMIGNhc2ggb2ZmZXIgdmFsdWVzIE1vbmllcidzIGlzc3VlZCBjYXBpdGFsIG9mIDE1Ni4yOCBtbG4gc2hhcmVzIGF0IDY0OSBtbG4gZGxycywgYWdhaW5zdCA1OTMgbWxuIGZvciB0aGUgQ1NSIGJpZC4gICAgIEJhc2VkIG9uIHRoZSBjdXJyZW50IHByaWNlIG9mIEVUTCBzaGFyZXMgb2YgMS4wNSBkbHJzLCB0aGUgYWx0ZXJuYXRpdmUgaXMgd29ydGggMy45NyBkbHJzIHBlciBzaGFyZSwgYnV0IEVUTCBzYWlkIHRoZSB2YWx1ZSBwbGFjZWQgb24gaXRzIHNoYXJlcyBmb3IgdGhlIG9mZmVyIGFwcm94aW1hdGVzIHRvIHRoZSBkaWx1dGVkIGFzc2V0IGJhY2tpbmcgb2YgRVRMIGFzIGF0IE1hcmNoIDMxLiAgICAgRVRMIHNhaWQgdGhlIG9mZmVyIHdpbGwgaGF2ZSBubyBtaW5pbXVtIGFjY2VwdGFuY2UgY29uZGl0aW9ucyBhbmQgd2lsbCBiZSBzdWJqZWN0IHRvIEF1c3RyYWxpYW4gZm9yZWlnbiBpbnZlc3RtZW50IGFuZCBVLlMuIEhhcnQtU2NvdHQtUm9kaW5vIGFudGktdHJ1c3QgY2xlYXJhbmNlcy4gICAgIEVUTCBjaGFpcm1hbiBBbGxhbiBIYXdraW5zIHNhaWQgaW4gdGhlIHN0YXRlbWVudCB0aGF0IHRoZSBzaGFyZWhvbGRpbmcgaW4gTW9uaWVyIHdhcyBhIGxvbmcgdGVybSBpbnZlc3RtZW50LiAgICAgRVRMIGFuZCBpdHMgPEZlbHRleCBJbnRlcm5hdGlvbmFsIEx0ZD4gYXNzb2NpYXRlIGhhdmUgdGFyZ2V0dGVkIHRoZSBidWlsZGluZyBwcm9kdWN0cyBzZWN0b3IgYXMgYW4gYXJlYSBvZiBleHBhbnNpb24gYW5kIE1vbmllciBmaXRzIHdlbGwgd2l0aCB0aGlzIGFpbSwgaGUgYWRkZWQuICAgICBNb25pZXIgY2hhaXJtYW4gQmlsbCBMb2NrZSBzYWlkIGluIGEgc2VwYXJhdGUgc3RhdGVtZW50IHRoYXQgdGhlIGluZGVwZW5kZW50IGRpcmVjdG9ycyBvZiBNb25pZXIgaW50ZW5kIHRvIHJlY29tbWVuZCBhY2NlcHRhbmNlIG9mIHRoZSBFVEwgYmlkIGluIHRoZSBhYnNlbmNlIG9mIGEgaGlnaGVyIGJpZC4gICAgIEhlIGFsc28gc2FpZCBNb25pZXIgd2lsbCBub3Qgbm93IHByb2NlZWQgd2l0aCB0aGUgb25lLWZvci10d28gYm9udXMgaXNzdWUgYW5ub3VuY2VkIHdpdGggaXRzIGludGVyaW0gcmVzdWx0cyBvbiBNYXJjaCAxOSBpbiB2aWV3IG9mIHRoZSBwcm9wb3NlZCB0YWtlb3ZlciBiaWRzLiAgICAgQXMgcHJldmlvdXNseSByZXBvcnRlZCwgdGhlIENTUiBvZmZlciBpbnZvbHZlcyBhIGNvbXBsZXggcHV0IGFuZCBjYWxsIG9wdGlvbiBkZWFsIHdpdGggTW9uaWVyJ3MgbWFqb3Igc2hhcmVob2xkZXIsIFJlZGxhbmQgUGxjIDxSRExELkw+LCB3aGljaCBnaXZlcyBSZWRsYW5kIHRoZSBjaG9pY2Ugb2YgYWNjZXB0aW5nIHRoZSBDU1Igb2ZmZXIgZm9yIGl0cyA0OS44IHBjdCBzdGFrZSBvciBtb3ZpbmcgdG8gNTAuMSBwY3Qgd2l0aGluIHNpeCBtb250aHMgb2YgdGhlIGJpZCBjbG9zaW5nLiAgICAgQ1NSIG9mZmljaWFscyBoYXZlIG1hZGUgaXQgY2xlYXIgdGhhdCB0aGV5IHNlZSBSZWRsYW5kIHRha2luZyB0aGUgc2Vjb25kIG9wdGlvbiwgcmVzdWx0aW5nIGluIHRoZSB0d28gY29tcGFuaWVzIHJ1bm5pbmcgTW9uaWVyIGFzIGEgam9pbnQgdmVudHVyZS4gICAgIENTUiBvZmZpY2lhbHMgaGF2ZSBhbHNvIHNhaWQgdGhleSBoYWQgbm8gaW50ZW50aW9uIG9mIHJhaXNpbmcgdGhlIGNvbXBhbnkncyBiaWQgZm9yIE1vbmllciBhZnRlciBFVEwncyBpbnRlcnZlbnRpb24gYmVjYW1lIHB1YmxpYyBsYXN0IHdlZWsuICBSRVVURVIgMzsKMTk4NzA2MDEJRVNTTyBSQUlTRVMgU0lOR0FQT1JFIFBFVFJPTCBQVU1QIFBSSUNFUyBFc3NvIFNpbmdhcG9yZSBQdGUgTHRkIHNhaWQgaXQgcmFpc2VkIHB1bXAgcHJpY2VzIG9mIHBldHJvbCBmcm9tIHRvZGF5LiAgICAgTmV3IHByaWNlcyBmb3IgMC4xNSBnbSBsZWFkIGdyYWRlcyBhcmUgOTcuMCBjZW50cy9saXRyZSBmb3IgOTcgb2N0YW5lIGFuZCA5MC44IGNlbnRzIGZvciA5NSBvY3RhbmUuICAgICBPdGhlciBTaW5nYXBvcmUgb2lsIGNvbXBhbmllcyBhbm5vdW5jZWQgeWVzdGVyZGF5IHRoYXQgdGhleSB3b3VsZCByZXZpc2UgdGhlaXIgcHVtcCBwcmljZXMgZWZmZWN0aXZlIHRvZGF5LiAgICAgU2hlbGwgRWFzdGVybiBQZXRyb2xldW0gUHRlIEx0ZCwgTW9iaWwgT2lsIFNpbmdhcG9yZSBQdGUgTHRkLCBDYWx0ZXggQXNpYSBMdGQsIFNpbmdhcG9yZSBQZXRyb2xldW0gQ28gUHRlIEx0ZCBhbmQgQlAgU2luZ2Fwb3JlIFB0ZSBMdGQgYXJlIHByaWNpbmcgOTcgb2N0YW5lIGF0IDk2LjggY2VudHMuIFNoZWxsLCBNb2JpbCBhbmQgQ2FsdGV4IGFyZSBwcmljaW5nIDkyIG9jdGFuZSBhdCA5MC4yIGNlbnRzLCBhbmQgU1BDIGFuZCBCUCBhdCA5MC42IGNlbnRzLiAgUkVVVEVSIDM7CjE5ODcwNjAxCUZFRCBFWFBFQ1RFRCBUTyBTRVQgQ1VTVE9NRVIgUkVQVVJDSEFTRVMgVGhlIEZlZGVyYWwgUmVzZXJ2ZSBpcyBleHBlY3RlZCB0byBhZGQgcmVzZXJ2ZXMgdG8gdGhlIFUuUy4gYmFua2luZyBzeXN0ZW0gYnkgYXJyYW5naW5nIGEgcm91bmQgb2YgY3VzdG9tZXIgcmVwdXJjaGFzZSBhZ3JlZW1lbnRzIGR1cmluZyB0aGlzIG1vcm5pbmcncyBpbnRlcnZlbnRpb24gcGVyaW9kLCBzZXZlcmFsIGVjb25vbWlzdHMgc2FpZC4gICAgIFNvbWUgb3RoZXJzLCBob3dldmVyLCBqdWRnZWQgdGhhdCB0aGUgRmVkIGhhcyBhbG1vc3QgY29tcGxldGVkIGl0cyByZXNlcnZlLWFkZGluZyByZXF1aXJlbWVudCBmb3IgdGhlIHN0YXRlbWVudCBwZXJpb2QgZW5kaW5nIG9uIFdlZG5lc2RheSBhbmQgd2lsbCBub3QgbmVlZCB0byBvcGVyYXRlIHRvZGF5LiAgICAgRmVkIGZ1bmRzIHdlcmUgdHJhZGluZyBhdCA2LTExLzE2IHBjdCwgY29tcGFyZWQgd2l0aCBGcmlkYXkncyBhdmVyYWdlIG9mIDYuNjMgcGN0LiAgUmV1dGVyIDM7CjE5ODcwNjAxCUZJTkFOQ0lBTCBTRUNVUklUWSA8RlNTTEEuTz4gVE8gQkUgQUNRVUlSRUQgRmluYW5jaWFsIFNlY3VyaXR5IFNhdmluZ3MgYW5kIExvYW4gQXNzb2NpYXRpb24gc2FpZCBpdCBzaWduZWQgYSBsZXR0ZXIgb2YgaW50ZW50IGZvciBhIGNvbnRyb2xsaW5nIGludGVyZXN0IHRvIGJlIGFjcXVpcmVkIGJ5IGFuIGludmVzdG9yIGdyb3VwIGxlZCBieSBTb3V0aCBGbG9yaWRhIGRldmVsb3BlciBXaWxsaWFtIExhbmRhLiAgICAgVGVybXMgd2VyZSBub3QgZGlzY2xvc2VkLiAgUmV1dGVyIDM7CjE5ODcwNjAxCUZJUlNUIE9GIEFNRVJJQ0EgKEZBQksuTykgQUNRVUlSRVMgS0VZU1RPTkUgRmlyc3Qgb2YgQW1lcmljYSBCYW5rIENvcnAgc2FpZCBpdCBhY3F1aXJlZCAoS2V5c3RvbmUgQmFuY3NoYXJlcyBJbmMpIGZvciAyNSBtbG4gZGxycy4gICAgIEtleXN0b25lIHNoYXJlaG9sZGVycyB3aWxsIHJlY2VpdmUgNDUgZGxycyBwZXIgS2V5c3RvbmUgc2hhcmUsIHBheWFibGUgaW4gRmlyc3Qgb2YgQW1lcmljYSBjb252ZXJ0aWJsZSBwcmVmZXJyZWQgc3RvY2sgaGF2aW5nIGEgZGl2aWRlbmQgcmF0ZSBvZiBuaW5lIHBjdC4gICAgIEtleXN0b25lIGhhcyB0d28gYWZmaWxpYXRlcyB3aXRoIGNvbWJpbmVkIGFzc2V0cyBvZiAyMDUgbWxuIGRscnMuIEZpcnN0IG9mIEFtZXJpY2EgaGFzIDcuOSBiaWxsaW9uIGRscnMgaW4gYXNzZXRzLiAgUmV1dGVyIDM7CjE5ODcwNjAxCUZJUlNUIFVOSU9OIDxGVU5DLk8+IENPTVBMRVRFUyBBQ1FVSVNJVElPTlMgRmlyc3QgVW5pb24gQ29ycCBzYWlkIGl0IGNvbXBsZXRlZCB0aGUgYWNxdWlzaXRpb24gb2YgdHdvIEZsb3JpZGEtYmFzZWQgYmFua3MsIE5vcnRoIFBvcnQgQmFuaywgYmFzZWQgaW4gTm9ydGggUG9ydCwgYW5kIENpdHkgQ29tbWVyaWNhbCBCYW5rLCBiYXNlZCBpbiBTYXJhc290YS4gIFJldXRlciAzOwoxOTg3MDYwMQlGSVNIRVIgU0hBUkVIT0xERVIgSU5ERUNJU0lWRSBPVkVSIFNUT0NLIEJVWSBGaXNoZXIgRm9vZHMgSW5jIDxGSFI+IHNhaWQgPDUzMDAgUmljaG1vbmQgUm9hZCBDb3JwPiwgaXRzIGxhcmdlc3Qgc2hhcmVob2xkZXIsIGhhcyBub3QgeWV0IHJlYWNoZWQgYSBkZWZpbml0aXZlIGRlY2lzaW9uIGFib3V0IHdoZXRoZXIgaXQgd2lsbCBidXkgbW9yZSBGaXNoZXIgc3RvY2sgdGhyb3VnaCBhIHBvc3NpYmxlIG1lcmdlciwgdGVuZGVyIG9mZmVyIG9yIGFub3RoZXIgYWNxdWlzaXRpb24gcHJvcG9zYWwuICAgICA1MzAwIGlzIGEgRGVsYXdhcmUgY29ycG9yYXRpb24gZm9ybWVkIGJ5IDxBbWVyaWNhbiBTZWF3YXlzIEZvb2RzIEluYz4sIDxSaW5pIEhvbGRpbmcgQ28+IGFuZCA8UmVnbyBDb21wYW5pZXM+IHdoaWNoIG93bnMgMS41IG1sbiBzaGFyZXMgb2YgRmlzaGVyLCBvciBhYm91dCA0NCBwY3Qgb2YgaXRzIG91dHN0YW5kaW5nIGNvbW1vbiBzdG9jay4gICAgIEZpc2hlciBzYWlkIDUzMDAgaGFkIGFubm91bmNlZCBvbiBBcHJpbCAyMCB0aGF0IHRoZXkgd291bGQgbWFrZSBhIGRlY2lzaW9uIG9uIEp1bmUgMSBhYm91dCB0aGUgbW92ZS4gICAgIEZpc2hlciBzYWlkIDUzMDAgYWxzbyB0b2xkIGl0IHRoZXkgd2lsbCBjb250aW51ZSB0byBleHBsb3JlIHBvc3NpYmxlIGFkdmFudGFnZXMgYW5kIGRpc2FkdmFudGFnZXMgb2YgdmFyaW91cyBhY3F1aXNpdGlvbiBwcm9wb3NhbHMuICAgICA1MzAwIGFsc28gc2FpZCBpdCBpcyBjb250aW51aW5nIHRvIGRpc2N1c3Mgd2l0aCB2YXJpb3VzIGZpbmFuY2lhbCBncm91cHMgYWJvdXQgcG9zc2libGUgZmluYW5jaW5nIGZvciBzdWNoIGEgbW92ZSwgYnV0IGdhdmUgbm8gaW5kaWNhdGlvbiBvZiB3aGVuIGFueSBmaW5hbmNpbmcgb3IgcHJvcG9zYWwgd291bGQgYmUgZmluYWxpemVkLCBGaXNoZXIgc2FpZC4gIFJldXRlciAzOwoxOTg3MDYwMQlGUkVOQ0ggU0FZIFdIRUFUIFNUT0NLUyBGT1JFQ0FTVCBOTyBTVVJQUklTRSBUaGUgVS5TLiBEZXBhcnRtZW50IG9mIEFncmljdWx0dXJlJ3MgZm9yZWNhc3QgdGhhdCBGcmVuY2ggZW5kLW9mLXNlYXNvbiBzb2Z0IHdoZWF0IHN0b2NrcyB3aWxsIGFsbW9zdCBkb3VibGUgaW4gMTk4Ny84OCBpcyBwcmVtYXR1cmUgYnV0IHdvdWxkIG5vdCBiZSBzdXJwcmlzaW5nLCBhY2NvcmRpbmcgdG8gRnJlbmNoIGNlcmVhbCBvcmdhbmlzYXRpb24gb2ZmaWNpYWxzLiAgICAgVGhlIENlcmVhbHMgSW50ZXJ2ZW50aW9uIEJvYXJkLCBPTklDLCBXaGVhdCBQcm9kdWNlcnMnIEFzc29jaWF0aW9uIGFuZCB0aGUgTmF0aW9uYWwgVW5pb24gb2YgQWdyaWN1bHR1cmFsIGFuZCBDZXJlYWwgQ29vcGVyYXRpdmVzIGhhdmUgbm90IHlldCBmb3JlY2FzdCAxOTg3Lzg4IGV4cG9ydHMgb3IgZW5kLW9mLXNlYXNvbiBzdG9ja3MuICAgICBIb3dldmVyLCB0aGUgb2ZmaWNpYWxzIHNhaWQgdGhlIFVTREEncyBmaWd1cmUgb2YgZW5kIDE5ODcvODggc3RvY2tzIGF0IDUuMDMgbWxuIHRvbm5lcyBhZ2FpbnN0IDE5ODYvODcncyAyLjg3IG1sbiB3YXMgbm90IHN1cnByaXNpbmcgZ2l2ZW4gYSByZWNvcmQgaGlnaCB5aWVsZCBmb3JlY2FzdCBpbiBBcHJpbC4gICAgIFRoZSBGcmVuY2ggRmVlZCBDZXJlYWxzIFJlc2VhcmNoIEluc3RpdHV0ZSwgSVRDRiwgZm9yZWNhc3QgaW4gbWlkLUFwcmlsIGFuIGF2ZXJhZ2UgeWllbGQgb2YgNi41OCB0b25uZXMgcGVyIGhlY3RhcmUgZm9yIHNvZnQgd2hlYXQgaW4gMTk4Ny84OCBjb21wYXJlZCB3aXRoIDUuNiB0b25uZXMgaW4gMTk4Ni84NyBhbmQgdGhlIHJlY29yZCBoaWdoIHlpZWxkIG9mIDYuNS82LjYgdG9ubmVzIGluIDE5ODQuICAgICBUaGlzIHdvdWxkIHJlc3VsdCBpbiBhIEZyZW5jaCBzb2Z0IHdoZWF0IGhhcnZlc3Qgb2YgYXJvdW5kIDMxIG1sbiB0b25uZXMgYWdhaW5zdCAyNS41IG1sbiBpbiAxOTg2Lzg3LCBnaXZlbiBhIE1pbmlzdHJ5IG9mIEFncmljdWx0dXJlIGVzdGltYXRlIG9mIGFyZWEgcGxhbnRlZCBvZiA0LjY2IG1sbiBoZWN0YXJlcyBhZ2FpbnN0IDQuNjEgbWxuIGluIDE5ODYvODcuICAgICBPTklDJ3MgZmlyc3QgcHJlbGltaW5hcnkgZm9yZWNhc3Qgb2YgdGhlIDE5ODcvODggY2FtcGFpZ24gd2lsbCBiZSByZWxlYXNlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIFNlcHRlbWJlciwgYW4gT05JQyBvZmZpY2lhbCBzYWlkLiAgICAgU29mdCB3aGVhdCBleHBvcnRzIGluIDE5ODcvODggd2VyZSBleHRyZW1lbHkgZGlmZmljdWx0IHRvIGVzdGltYXRlIGF0IHRoaXMgc3RhZ2UsIGJvdGggd2l0aGluIHRoZSBFdXJvcGVhbiBDb21tdW5pdHkgYW5kIHRvIG5vbi1FQyBjb3VudHJpZXMsIGFuIE9OSUMgb2ZmaWNpYWwgc2FpZC4gICAgIEhlIHNhaWQsIGhvd2V2ZXIsIHRoYXQgYW1vbmcgY291bnRyaWVzIHRvIHdoaWNoIEZyYW5jZSBjb3VsZCBpbmNyZWFzZSBpdHMgd2hlYXQgZXhwb3J0cyB3ZXJlIEVneXB0IGFuZCB0aGUgTWFnaHJlYiBjb3VudHJpZXMgKE1vcm9jY28sIEFsZ2VyaWEgYW5kIFR1bmlzaWEpLCBoZSBzYWlkLiAgICAgVGhlIFVTREEncyBmb3JlY2FzdCBvZiBhbiAxMS42NSBtbG4gdG9ubmUgbWFpemUgY3JvcCBpbiAxOTg3Lzg4IGFnYWluc3QgMTEuNDggbWxuIGluIDE5ODYvODcsIHdoaWxlIGFnYWluIHByZW1hdHVyZSwgd2FzIG5vdCBvdXQgb2YgbGluZSB3aXRoIGVzdGltYXRlcyBvZiB0aGUgRnJlbmNoIE1haXplIFByb2R1Y2VycyBBc3NvY2lhdGlvbiwgQUdQTSwgYW4gQUdQTSBvZmZpY2lhbCBzYWlkLiAgICAgTWFpemUgcGxhbnRpbmdzIHdvdWxkIGJlIGRvd24gaW4gMTk4Ny84OCBidXQgeWllbGRzIHdlcmUgZXhwZWN0ZWQgdG8gYmUgaGlnaGVyLCB0aGUgQUdQTSBvZmZpY2lhbCBzYWlkLiAgICAgSXQgZXN0aW1hdGVkIDE5ODcvODggbWFpemUgcGxhbnRpbmdzIG9mIDEuNzMgbWxuIGhlY3RhcmVzLCBkb3duIHNldmVuIHBjdCBmcm9tIHRoZSAxLjg3IG1sbiBoZWN0YXJlcyBwbGFudGVkIGluIDE5ODYvODcuICBSZXV0ZXIgMzsKMTk4NzA2MDEJR0FTIENBUlJJRVIgRVNDQVBFRCBHVUxGIEFUVEFDSyBMQVNUIFdFRUsgLSBMTE9ZRFMgVGhlIFBhbmFtYW5pYW4gbGlxdWlmaWVkIGdhcyBjYXJyaWVyIE55aGFtbWVyLCA0OCw3NzIgZHd0LCB3YXMgYXR0YWNrZWQgYnkgYW4gSXJhbmlhbiBndW5ib2F0IG9uIE1heSAyNCwgTGxveWRzIFNoaXBwaW5nIEludGVsbGlnZW5jZSBzYWlkLiAgICAgT25lIHJvY2tldCB3YXMgZmlyZWQgYnV0IG1pc3NlZC4gICAgIFRoZSB2ZXNzZWwgc3Vic2VxdWVudGx5IGFycml2ZWQgYXQgaXRzIGRlc3RpbmF0aW9uIG9mIFJhcyBUYW51cmEgb24gTWF5IDI1IGFuZCBsZWZ0IHRoaXMgbW9ybmluZy4gIFJFVVRFUiAzOwoxOTg3MDYwMQlHRU9EWU5FIFJFU09VUkNFUyBJTkMgPEdFT0QuTz4gNFRIIFFUUiBGRUIgMjggU2hyIHByb2ZpdCB0aHJlZSBjdHMgdnMgcHJvZml0IDMxIGN0cyAgICAgTmV0IHByb2ZpdCAzMzAsOzU3NSB2cyBwcm9maXQgMSw0OzczLDEwMCAgICAgUmV2cyAxLDUwMSw5OTYgdnMgMiw2MDIsNTY4ICAgICBBdmcgc2hycyAxMCw5NjQsNzg2IHZzIDQsNDQ2LDk1OCAgICAgWWVhciAgICAgU2hyIGxvc3MgZWlnaHQgY3RzIHZzIHByb2ZpdCBzaXggY3RzICAgICBOZXQgbG9zcyA5MSw1MjMgdnMgcHJvZml0IDc0NiwyODkgICAgIFJldnMgMyw4NTQsODIxIHZzIDUsMjMxLDU5OCAgICAgQXZnIHNocnMgNiwwOTEsMzM0IHZzIDQsNDQ2LDk1OCAgICAgTk9URTogU2hhcmUgcmVzdWx0cyBhZnRlciBwcmVmZXJyZWQgZGl2aWRlbmQgcmVxdWlyZW1lbnRzIG9mIDQ0LDE3NCBkbHJzIHZzIDk5LDkwMSBkbHJzIGluIHF1YXJ0ZXIgYW5kIDM3NywxMTEgZGxycyB2cyA0ODAsODUxIGRscnMgaW4geWVhciAgICAgQ29tcGFueSA0MCBwY3Qgb3duZWQgYnkgUGFpbldlYmJlciBHcm91cCBJbmMgPFBXSj4gIFJldXRlciAzOwoxOTg3MDYwMQlIQVJDT1VSVCA8SEJKPiBERUJFTlRVUkVTIE1BWSBUUklHR0VSIFNVSVQgSG9sZGVycyBvZiBjb252ZXJ0aWJsZSBzdWJvcmRpbmF0ZWQgZGViZW50dXJlcyBvZiBIYXJjb3VydCBCcmFjZSBKb3Zhbm92aWNoIEluYyB0aHJlYXRlbmVkIHRvIHN1ZSB0aGUgY29tcGFueSBpZiB0aGV5IGRvIG5vdCBnZXQgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBob3cgdGhlaXIgaW52ZXN0bWVudCB3aWxsIGJlIGFmZmVjdGVkIGJ5IHRoZSBjb21wYW55J3MgcHJvcG9zZWQgcmVjYXBpdGFsaXphdGlvbiBwbGFuLiAgICAgVGhlIGhvbGRlcnMsIG5vbmUgb2Ygd2hvbSB3YXMgd2lsbGluZyB0byBiZSBpZGVudGlmaWVkLCBzYWlkIGFsdGhvdWdoIEhhcmNvdXJ0IGhhcyB1cmdlZCB0aGF0IHRoZXkgY29udmVydCB0aGVpciBzaGFyZXMgdG8gY29tbW9uIHN0b2NrIGJ5IHRoZSBKdW5lIGVpZ2h0IHJlY29yZCBkYXRlIGZvciBhIHNwZWNpYWwgZGl2aWRlbmQsIHRoZXkgd2VyZSB1bmFibGUgdG8gZGV0ZXJtaW5lIGlmIGl0IG1pZ2h0IGJlIGJldHRlciBmb3IgdGhlbSB0byBjb250aW51ZSBob2xkaW5nIHRoZSBkZWJlbnR1cmVzLiAgICAgICAgICJUaGVyZSBhcmUgcnVtb3JzIHRoYXQgdmFyaW91cyBob3VzZXMgd2lsbCBicmluZyBsaXRpZ2F0aW9uIGlmIHdlIGRvbid0IGdldCBhbnN3ZXJzLCIgc2FpZCBhIFdhbGwgU3RyZWV0IHNvdXJjZS4gT2ZmaWNpYWxzIG9mIEhhcmNvdXJ0IGRlY2xpbmVkIHRvIGNvbW1lbnQsIGNpdGluZyBhIHN1aXQgYnJvdWdodCBieSBCcml0aXNoIHB1Ymxpc2hlciBSb2JlcnQgTWF4d2VsbCB3aG9zZSBoYXMgYmVlbiB0cnlpbmcgdG8gYWNxdWlyZSBIYXJjb3VydC4gICAgIEV4ZWN1dGl2ZXMgb2YgRmlyc3QgQm9zdG9uIEluYywgSGFyY291cnQncyBmaW5hbmNpYWwgYWR2aXNlciwgZGlkIG5vdCByZXR1cm4gYSB0ZWxlcGhvbmUgY2FsbCBzZWVraW5nIGNvbW1lbnQuICAgICBXaGVuIGl0IGFubm91bmNlZCBpdHMgcmVjYXBpdGFsaXphdGlvbiBNYXkgMjYgSGFyY291cnQgYWR2aXNlZCBob2xkZXJzIG9mIHRoZSA2LTMvOCBwY3QgY29udmVydGlibGUgc3Vib3JkaW5hdGVkIGRlYmVudHVyZXMgZHVlIDIwMTEgdG8gY29udmVydCBpbnRvIGNvbW1vbiBieSB0aGUgSnVuZSBlaWdodCByZWNvcmQgZGF0ZSBmb3IgdGhlIGNvbXBhbnkncyBzcGVjaWFsIGRpdmlkZW5kLiAgICAgSGFyY291cnQncyBzcGVjaWFsIGRpdmlkZW5kIHBheXMgNDAgZGxycyBwZXIgc2hhcmUgaW4gY2FzaCBwbHVzIGEgc2VjdXJpdHkgd29ydGggMTAgZGxycy4gSG9sZGVycyB3b3VsZCBhbHNvIHJldGFpbiBzdG9jayBpbiB0aGUgcmVjYXBpdGFsaXplZCBmaXJtLiAgICAgVGhlIGRlYmVudHVyZXMgaGFkIGJlZW4gY29udmVydGlibGUgYXQgMzQgZGxycyBwZXIgc2hhcmUuIEhhcmNvdXJ0J3MgTWF5IDI2IGFubm91bmNlbWVudCBzYWlkIHRoZSBjb252ZXJzaW9uIHByaWNlIHdvdWxkIGJlIGFkanVzdGVkIGFjY29yZGluZyB0byB0aGUgaW5kZW50dXJlIGNvdmVyaW5nIHRoZSBzZWN1cml0aWVzLiBBcmJpdHJhZ2V1cnMgc2FpZCB0aGUgY29udmVyc2lvbiBmb3JtdWxhIHlpZWxkZWQgYSAibmVnYXRpdmUgbnVtYmVyIiBhbmQgdGh1cyB0aGV5IG5lZWRlZCBmdXJ0aGVyIGluZm9ybWF0aW9uIGZyb20gdGhlIGNvbXBhbnkuICBSZXV0ZXIgMzsKMTk4NzA2MDEJSEFXS0lOUyBDSEVNSUNBTCBJTkM8SFdLTi5PPiAyTkQgUVRSIE1BUiAzMSBORVQgU2hyIDEyIGN0cyB2cyBzaXggY3RzICAgICBOZXQgMzk4LDMxOCB2cyAyMTEsODAxICAgICBTYWxlcyA3LDM4NSwxMDcgdnMgNywyNzUsMTYyICAgICBTaXggTXRocyAgICAgU2hyIDIyIGN0cyB2cyAxMyBjdHMgICAgIE5ldCA3MzYsMjE5IHZzIDQ0NiwyODggICAgIFNhbGVzIDE0LjMgbWxuIHZzIDE0LjIgbWxuICAgICBOT1RFOiBQZXIgc2hhcmUgZWFybmluZ3MgYWRqdXN0ZWQgZm9yIHRlbiBwY3Qgc3RvY2sgZGl2aWRlbmQgcGFpZCBGZWJydWFyeSAxOTg3LiAgUmV1dGVyIDM7CjE5ODcwNjAxCUhJQ0tTL0hBQVMgR1JPVVAgSEFTIFNQRUNUUkFEWU5FIDxTUERZLk8+IEZVTkRTIFNQSSBIb2xkaW5nIEluYywgYSBncm91cCBjb25zaXN0aW5nIG9mIEhpY2tzIGFuZCBIYWFzIGFuZCBBY2FkaWEgUGFydG5lcnMgTFAsIHNhaWQgaXQgaGFzIHJlY2VpdmVkIGNvbW1pdG1lbnRzIGZvciB0aGUgc2VuaW9yIGJhbmsgZmluYW5jaW5nIG5lZWRlZCB0byBjb21wbGV0ZSBpdHMgcHJvcG9zZWQgYWNxdWlzaXRpb24gb2YgU3BlY3RyYWR5bmUgSW5jIGZvciA0NiBkbHJzIGEgc2hhcmUgaW4gY2FzaCBvciBzZWN1cml0aWVzLCBvciBhIHRvdGFsIG9mIGFib3V0IDQ1MiBtbG4gZGxycy4gICAgIFRoZSB0cmFuc2FjdGlvbiB3YXMgY29uZGl0aW9uZWQgb24gdGhlIGFycmFuZ2VtZW50IGZvIGZpbmFuY2luZyBieSB0b2RheS4gICAgIEl0IHNhaWQgaXQgaGFzIGFsc28gZXhlY3V0ZWQgbXVsdGkteWVhciBlbXBsb3ltZW50IGFuZCBub24tY29tcGV0aXRpb24gYWdyZWVtZW50cyB3aXRoIGZpdmUgU3BlY3RyYXluZSBzZW5pb3IgbWFuYWdlcnMuICBSZXV0ZXIgMzsKMTk4NzA2MDEJSFVNQU5BIDxIVU0+IFRPIEJVWSBJTlQnTCBNRURJQ0FMIEFTU0VUUyBIdW1hbmEgSW5jIHNhaWQgYSBGbG9yaWRhIEp1ZGdlIGFwcHJvdmVkIGEgcHJldmlvdXNseSBhbm5vdW5jZWQgcHJvcG9zYWwgZm9yIHRoZSBjb21wYW55IHRvIGJ1eSBjZXJ0YWluIGFzc2V0cyBvZiBJbnRlcm5hdGlvbmFsIE1lZGljYWwgQ2VudGVycywgd2hpY2ggaGFkIGJlZW4gZGVjbGFyZWQgaW5zb2x2ZW50IGFuZCBwdXQgaW50byByZWNlaXZlcnNoaXAgaW4gZWFybHkgTWF5LiAgICAgSHVtYW5hIHNhaWQgaXQgd2lsbCBwYXkgNDAgbWxuIGRscnMgdG8gdGhlIHN0YXRlJ3MgRGVwYXJ0bWVudCBvZiBJbnN1cmFuY2UgdG8gcGF5IHByaW9yIGNsYWltcyBhbmQgMjAgbWxuIGRscnMgaW4gd29ya2luZyBjYXBpdGFsLiAgUmV1dGVyIDM7CjE5ODcwNjAxCUlEQSBFWFRFTkRTIDM3LjEgTUxOIERMUlMgSU4gQUZSSUNBIExPQU5TIFRoZSBXb3JsZCBCYW5rIHNhaWQgaXQgd2lsbCBwcm92aWRlIDM3LjEgbWxuIGRscnMgdG8gVGFuemFuaWEgYW5kIFJ3YW5kYSB0aHJvdWdoIHRoZSBJbnRlcm5hdGlvbmFsIERldmVsb3BtZW50IEFzc29jaWF0aW9uIChJREEpLCB0aGUgYmFuaydzIGNvbmNlc3Npb25hcnkgbGVuZGluZyBhZmZpbGlhdGUuICAgICBUYW56YW5pYSB3aWxsIHJlY2lldmUgYSAyMyBtbG4gZGxyIElEQSBsb2FuIHRvIGhlbHAgcmVoYWJpbGl0YXRlIGl0cyB0ZWxlY29tbXVuaWNhdGlvbnMgbmV0d29yaywgdGhlIGJhbmsgc2FpZC4gICAgIFRoZSAxNC4xIG1sbiBkbHIgSURBIGxvYW4gdG8gUndhbmRhIHdpbGwgaGVscCBmaW5hbmNlIHRyb3BpY2FsIGZvcmVzdCBjb25zZXJ2YXRpb24gcHJvamVjdHMgYW5kIGEgcmVmb3Jlc3RhdGlvbiBwcm9ncmFtLCB0aGUgYmFuayBzYWlkLiAgICAgVGhlIElEQSBjcmVkaXQgaXMgZm9yIDUwIHllYXJzLCBpbmNsdWRpbmcgMTAgeWVhcnMgb2YgZ3JhY2UsIGFuZCBjYXJyaWVzIG5vIGludGVyZXN0LCB0aGUgYmFuayBzYWlkLiAgUmV1dGVyIDM7CjE5ODcwNjAxCUlORElBIFBMQU5TIE1PUkUgQk9NQkFZIE9GRlNIT1JFIE9JTCBXRUxMUyBJbmRpYSdzIHN0YXRlLW93bmVkIE9pbCBhbmQgTmF0dXJhbCBHYXMgQ29tbWlzc2lvbiAoT05HQykgcGxhbnMgdG8gZHJpbGwgbW9yZSB3ZWxscyBpbiB0aGUgQm9tYmF5IG9mZnNob3JlIGFyZWEsIHdoZXJlIGEgd2VsbCBzcHVkZGVkIGluIEZlYnJ1YXJ5IHRoaXMgeWVhciBnYXZlIGJvdGggb2lsIGFuZCBnYXMsIGFuIE9OR0Mgc3Bva2VzbWFuIHNhaWQuICAgICBUaGUgZXhwbG9yYXRvcnkgd2VsbCwgc3B1ZGRlZCBhdCBhIGRlcHRoIG9mIDIsMTQwIG1ldHJlcywgeWllbGRlZCAyLDAwMCBiYXJyZWxzIG9mIG9pbCBhbmQgMTgwLDAwMCBjdWJpYyBtZXRyZXMgb2YgZ2FzIHBlciBkYXksIGhlIHNhaWQuICAgICAiVGhlIHdlbGwsIG9uZSBvZiB0aGUgZm91ciBzdHJ1Y3R1cmVzIGRyaWxsZWQgaW4gdGhlIGFyZWEgODAga20gbm9ydGgtd2VzdCBvZiBCb21iYXksIGluZGljYXRlcyBnb29kIHByb3NwZWN0cyBvZiBib3RoIG9pbCBhbmQgZ2FzLiBXZSd2ZSBkZWNpZGVkIHRvIGRyaWxsIGF0IGxlYXN0IHRocmVlIG1vcmUgd2VsbHMgaW4gdGhlcmUgYmVmb3JlIHN0YXJ0aW5nIHByb2R1Y3Rpb24gb24gYSBjb21tZXJjaWFsIHNjYWxlLiIgICAgIFByb2R1Y3Rpb24gb2YgQm9tYmF5IEhpZ2gsIHBhcnQgb2YgdGhlIEJvbWJheSBvZmZzaG9yZSBmaWVsZCwgaGFzIHN0YWJpbGlzZWQgYXQgYXJvdW5kIDUwMCwwMDAgYmFycmVscyBwZXIgZGF5IGZvciB0aGUgbGFzdCB0d28geWVhcnMuICAgICBPTkdDIHByb2R1Y2VkIDI3Ljg1IG1sbiB0b25uZXMgb2YgY3J1ZGUgaW4gMTk4Ni84NyBlbmRpbmcgTWFyY2gsIHVwIGZyb20gMjcuNTEgdGhlIHByZXZpb3VzIHllYXIuIEJvbWJheSBIaWdoIGFjY291bnRlZCBmb3IgMjAuNjEgbWxuIHRvbm5lcywgbWFyZ2luYWxseSB1cCBmcm9tIDIwLjEwIHRoZSB5ZWFyIGJlZm9yZS4gSW5kaWEncyB0b3RhbCBvaWwgb3V0cHV0IGlzIGFyb3VuZCAzMCBtbG4gdG9ubmVzLiAgICAgT05HQyBoYXMgYmVlbiBleHBsb3JpbmcgdGhlIEJvbWJheSBvZmZzaG9yZSBhcmVhLCBkZXZlbG9wZWQgc2luY2UgdGhlIGxhdGUgMTk3MHMsIGZvciBtb3JlIG9pbCBhcyBwcm9kdWN0aW9uIGZyb20gQm9tYmF5IEhpZ2ggaGFzIHJlYWNoZWQgYSBwbGF0ZWF1LiAgUkVVVEVSIDM7CjE5ODcwNjAxCUlOVEVSTkFUSU9OQUwgQ09ST05BIDxJQ1IuVE8+IDJORCBRVFIgTkVUIFBlcmlvZCBlbmRlZCBNYXJjaCAzMSAgICAgT3BlciBzaHIgcHJvZml0IGZvdXIgY3RzIHZzIGxvc3MgMTcgY3RzICAgICBPcGVyIG5ldCBwcm9maXQgNTg0LDAwMCB2cyBsb3NzIDIsMTY1LDAwMCAgICAgUmV2cyA3LDQ5MywwMDAgdnMgbm90IGdpdmVuICAgICBTSVggTVRIUyAgICAgT3BlciBzaHIgcHJvZml0IGVpZ2h0IGN0cyB2cyBsb3NzIDE0IGN0cyAgICAgT3BlciBuZXQgcHJvZml0IDEsMTc3LDAwMCB2cyBsb3NzIDEsNzc4LDAwMCAgICAgUmV2cyAxNC44IG1sbiB2cyBub3QgZ2l2ZW4uICAgICAgcmV1dGVyIDM7CjE5ODcwNjAxCUlOVkVTVE9SUyBNQVkgVEFLRSBDT01QVVRFUkxBTkQgUFVCTElDIFRoZSBpbnZlc3RvciBncm91cCB0aGF0IGhhcyBhZ3JlZWQgdG8gYnV5IDxDb21wdXRlcmxhbmQgQ29ycD4gd2lsbCBsaWtlbHkgdGFrZSB0aGUgbGVhZGluZyBwZXJzb25hbCBjb21wdXRlciByZXRhaWxlciBwdWJsaWMgb3Igc2VsbCBpdCB0byBvdGhlciBpbnZlc3RvcnMsIGluZHVzdHJ5IGFuYWx5c3RzIHNhaWQuICAgICAiTm93J3MgYSBnb29kIHRpbWUsIiBzYWlkIEpvZSBMZXZ5IG9mIEludGVybmF0aW9uYWwgRGF0YSBDb3JwLiAiVGhlIHBlcnNvbmFsIGNvbXB1dGVyIGluZHVzdHJ5IGhhcyBib3R0b21lZCBvdXQgYW5kIGlzIG9uIHRoZSB3YXkgdXAgYWdhaW4sIiBoZSBzYWlkLiAgICAgRWFybGllciB0b2RheSwgY2xvc2VseSBoZWxkIENvbXB1dGVybGFuZCwgdGhlIGxhcmdlc3QgUEMgcmV0YWlsaW5nIGNoYWluIGluIHRoZSBjb3VudHJ5LCBzYWlkIGl0IGFncmVlZCB0byBiZSBib3VnaHQgYnkgYW4gaW52ZXN0b3IgZ3JvdXAgbGVkIGJ5IEUuTS4gV2FyYnVyZyBQaW5jdXMgYW5kIENvLCBOZXcgWW9yay4gICAgIE5laXRoZXIgQ29tcHV0ZXJsYW5kLCB3aGljaCBpcyA5NiBwY3Qgb3duZWQgYnkgaXRzIGZvdW5kZXIsIFdpbGxpYW0gSC4gTWlsbGFyZCwgbm9yIEUuTS4gV2FyYnVyZywgYSBtb25leSBtYW5hZ2VtZW50IGFuZCB2ZW50dXJlIGNhcGl0YWwgZmlybSwgd291bGQgZGlzY2xvc2UgdGhlIHZhbHVlIG9mIHRoZSB0cmFuc2FjdGlvbi4gICAgIEFuYWx5c3RzIGVzdGltYXRlZCB0aGF0IENvbXB1dGVybGFuZCwgd2hvc2UgODAwIHN0b3JlcyBnZW5lcmF0ZWQgMS40IGJpbGxpb24gZGxycyBpbiBzYWxlcyBsYXN0IHllYXIsIHdvdWxkIGZldGNoICAxNTAgbWxuIGRscnMgdG8gMjUwIG1sbiBkbHJzLiBDb21wdXRlcmxhbmQgZnJhbmNoaXNlIG93bmVycyBwYXkgcm95YWx0aWVzIGF2ZXJhZ2luZyA1LjkgcGN0IHRvIHRoZSBwYXJlbnQgY29tcGFueS4gICAgIE9mZmljaWFscyBmb3IgRS5NLiBXYXJidXJnIHJlZmVycmVkIGFsbCBxdWVzdGlvbnMgdG8gQ29tcHV0ZXJsYW5kLiBDb21wdXRlcmxhbmQgb2ZmaWNpYWxzIGNvdWxkIG5vdCBpbW1lZGlhdGVseSBiZSByZWFjaGVkIGZvciBjb21tZW50LiAgICAgRS5NLiBXYXJidXJnIGN1cnJlbnRseSBtYW5hZ2VzIDEuNSBiaWxsaW9uIGRscnMgaW4gdmVudHVyZSBjYXBpdGFsIGZ1bmRzLCBhbmQgaXRzIHBhc3QgaW52ZXN0bWVudHMgaGF2ZSBpbmNsdWRlZCBNYXR0ZWwgSW5jIDxNQVQ+IGFuZCB0aGUgSW5nZXJzb2xsIG5ld3NwYXBlciBjaGFpbi4gSXQgaXMgYWxzbyBhIG1vbmV5IG1hbmFnZXIsIHdpdGggMy41IGJpbGxpb24gZGxycyB1bmRlciBtYW5hZ2VtZW50LiAgICBBbHRob3VnaCB0aGUgUEMgcmV0YWlsZXJzIGFyZSBiZW5lZml0dGluZyBmcm9tIHRoZSBzdHJvbmcgdXB0dXJuIGluIFBDIHNhbGVzLCBhbmFseXN0cyBzYWlkIENvbXB1dGVybGFuZCBtdXN0IG1ha2Uga2V5IGNoYW5nZXMgaWYgaXQgaXMgdG8gZmVuZCBvZmYgYWR2YW5jZXMgZnJvbSByaXZhbHMgbGlrZSBCdXNpbmVzc2xhbmQgSW5jIDxCVVNMLk8+IGFuZCBUYW5keSBDb3JwJ3MgPFRBTj4gUmFkaW8gU2hhY2sgc3RvcmVzLiAiVGhlIG5hbWUgb2YgdGhlIGdhbWUgbm93IGlzIG91dGJvdW5kIHNhbGVzIGZvcmNlcywgY3VzdG9tZXIgc2VydmljZSBhbmQgY3VzdG9tZXIgc3VwcG9ydCwiIHNhaWQgTGV2eSBvZiBJbnRlcm5hdGlvbmFsIERhdGEuICAgICAgUmVsYXRpb25zIGJldHdlZW4gQ29tcHV0ZXJsYW5kIGFuZCBpdHMgZnJhbmNoaXNlIG93bmVycyBoYXZlIG1lbGxvd2VkIHJlY2VudGx5IGFmdGVyIE1pbGxhcmQgd2FzIGZvcmNlZCB0byBnaXZlIHVwIG1hbmFnbWVudCBjb250cm9sIG9mIHRoZSBjb21wYW55IGluIDE5ODUuICAgICBFZCBGYWJlciwgd2hvIHRvb2sgb3ZlciBhcyBjaGFpcm1hbiBhbmQgY2hpZWYgZXhlY3V0aXZlIG9mZmljZXIsIHJldmFtcGVkIHRoZSBjb21wYW55J3Mgcm95YWx0eSBwbGFuLCB3aGljaCBoZWxwIHF1ZWxsIG11Y2ggb2YgdGhlIGZyYW5jaGlzZWUgZGlzc2VudC4gICAgICBSZXV0ZXIgMzsKMTk4NzA2MDEJSVJBTiBTQVlTIElUIFdJTEwgQ09NQkFUIEdVTEYgSU5URVJWRU5USU9OIElyYW5pYW4gZm9yZWlnbiBtaW5pc3RlciBBbGkgQWtiYXIgVmVsYXlhdGkgd2FybmVkIHRoYXQgSXJhbiB3b3VsZCBjb21iYXQgYW55IHN1cGVycG93ZXIgaW50ZXJ2ZW50aW9uIGluIHRoZSBHdWxmLiAgICAgIklyYW4sIHdoaWNoIGlzIHRoZSBtb3N0IHBvd2VyZnVsIChjb3VudHJ5KSBpbiB0aGUgR3VsZi4uLiBXaWxsIG5vdCBhbGxvdyB0aGUgc3VwZXJwb3dlcnMgb3IgYW55IG90aGVyIGZvcmVpZ24gZm9yY2VzIHRvIGludGVyZmVyZSBpbiB0aGUgcmVnaW9uLCIgaGUgc2FpZC4gICAgIFZlbGF5YXRpLCB2aXNpdGluZyB0aGUgVW5pdGVkIEFyYWIgRW1pcmF0ZXMgb24gdGhlIGZpcnN0IGxlZyBvZiBhIEd1bGYgdG91ciwgdG9sZCByZXBvcnRlcnMgSXJhbiBoYWQgdGhlICJjYXBhYmlsaXRpZXMgYW5kIG1lYW5zIiB0byBwcmV2ZW50IGFueSBpbnRlcmZlcmVuY2UuIFByZXNpZGVudCBSZWFnYW4gaGFzIHBsZWRnZWQgdG8ga2VlcCB0aGUgR3VsZiBzZWFsYW5lcyBvcGVuIGFuZCB0byBwcm90ZWN0IEt1d2FpdGkgdGFua2VycyBmcm9tIHBvc3NpYmxlIElyYW5pYW4gYXR0YWNrLiAgUkVVVEVSIDM7CjE5ODcwNjAxCUpBUEFOIEVYVEVORFMgMjQgQklMTElPTiBZRU4gTE9BTiBUTyBCQU5HTEFERVNIIEphcGFuIGhhcyBleHRlbmRlZCBhIDI0IGJpbGxpb24geWVuIGxvYW4gdG8gQmFuZ2xhZGVzaCwgRmluYW5jZSBNaW5pc3RyeSBvZmZpY2lhbHMgc2FpZC4gICAgIFRoZSBsb2FuLCB0byBiZSBkaXNidXJzZWQgb3ZlciB0d28geWVhcnMgZnJvbSBuZXh0IEp1bHksIGlzIGZvciBjaGVtaWNhbHMsIGNlbWVudCwgc3RlZWwgYW5kIG1hY2hpbmVyeSBpbXBvcnRzIGFuZCBmb3Igc2V0dGluZyB1cCBhIHBvd2VyIHBsYW50IGluIGVhc3Rlcm4gU3lsaGV0IGRpc3RyaWN0LCB0aGV5IHNhaWQuIFRlcm1zIHdlcmUgbm90IGRpc2Nsb3NlZC4gICAgIFRoZSBjcmVkaXQgYnJpbmdzIHRvdGFsIEphcGFuZXNlIGxvYW5zIGFuZCBncmFudHMgdG8gQmFuZ2xhZGVzaCB0byA0NDEuMjUgYmlsbGlvbiB5ZW4gc2luY2UgMTk3MiwgdGhleSBzYWlkLiAgUkVVVEVSIDM7CjE5ODcwNjAxCUtJTkdTQlJJREdFLCBNQVNDTyBTRVQgTUVSR0VSIEtpbmdzYnJpZGdlIEhvbGRpbmdzIEx0ZCwgc2FpZCBpdCBzaWduZWQgYSBsZXR0ZXIgb2YgaW50ZW50IGZvciBhIG1lcmdlciB3aXRoIDxNYXNjbyBTcG9ydHMgSW5jPi4gICAgIFRoZSB0cmFuc2FjdGlvbiBjYWxscyBmb3IgMjMwIG1sbiBzYWhyZXMgb2YgS2luZ3NicmlkZ2UgY29tbW9uIHN0b2NrIHRvIGJlIGlzc3VlZCB0byBzaGFyZWhvbGRlcnMgb2YgTWFzY28uICAgUmV1dGVyIDM7CjE5ODcwNjAxCUxBVElOIERFQlRPUlMgTUFLRSBORVcgUFVTSCBGT1IgREVCVCBSRUxJRUYgUmlzaW5nIGludGVyZXN0IHJhdGVzIGFuZCBwcm90ZWN0aW9uaXN0IHRyYWRlIHBvbGljaWVzIGhhZCBwcm9tcHRlZCBhIG5ldyBwdXNoIGJ5IExhdGluIEFtZXJpY2FuIG5hdGlvbnMgdG8gd2luIGRlYnQgcmVsaWVmLCByZWdpb25hbCBmb3JlaWduIGFuZCBmaW5hbmNlIG1pbmlzdHJ5IG9mZmljaWFscyBzYWlkIGhlcmUuICAgICBPZmZpY2lhbHMgb2YgdGhlIENhcnRhZ2VuYSBncm91cCBvZiAxMSBkZWJ0b3IgbmF0aW9ucyBtZXQgaGVyZSB0aGlzIHdlZWsgdG8gZHJhdyB1cCBuZXcgcHJvcG9zYWxzIGluIHJlYWN0aW9uIHRvIHdoYXQgdGhleSBjYWxsZWQgYSBkZXRlcmlvcmF0aW5nIHdvcmxkIHBhbm9yYW1hLCBhbmQgQ2l0aWNvcnAncyBkZWNpc2lvbiB0byBjcmVhdGUgcmVzZXJ2ZXMgYWdhaW5zdCB0aGlyZCB3b3JsZCBsb2Fucy4gICAgIChTRUUgRUNSQSBGT1IgU1BPVExJR0hUIEhFQURMSU5FUykgICAgICJXZSBhcmUgbG9va2luZyBhdCB0cmFkZSwgaW50ZXJlc3QgcmF0ZXMgYW5kIGZpbmFuY2lhbCBmbG93cy4uLi4uSW4gb3JkZXIgdG8gcHV0IGZvcndhcmQgYSBiYXNpcyBmb3Igc29tZSBwZXJtYW5lbnQgc29sdXRpb25zLCIgTWV4aWNvJ3MgcHVibGljIGNyZWRpdCBkaXJlY3RvciBBbmdlbCBHdXJyaWEgc2FpZC4gICAgIFJlY2VudCBkZXZlbG9wbWVudHMgaGF2ZSBsZWQgdG8gbW92ZXMgZm9yIGEgc3VtbWl0IG9mIExhdGluIEFtZXJpY2FuIHByZXNpZGVudHMgYW5kIGRlYmF0ZSBvbiBuZXcgc29sdXRpb25zLiAgICAgSWRlYXMgaW5jbHVkZSBzY2hlbWVzIHRvIGxpbmsgZGVidCBwYXltZW50cyB0byB0cmFkZSwgYW5kIHByb3Bvc2FscyBmb3Igc3RhYmxlIGludGVyZXN0IHJhdGVzLiBUaGUgbGF0dGVyIHdhcyBwcm9wb3NlZCBpbiBhIGxldHRlciB0aGlzIHdlZWsgZnJvbSBDYXJ0YWdlbmEgdG8gRy03IGxlYWRlcnMgd2hvIGFyZSBkdWUgdG8gYXR0ZW5kIGEgc3VtbWl0IGluIFZlbmljZSB0aGlzIG1vbnRoLiAgICAgQW5vdGhlciBpZGVhIGlzIHRvIGluY2x1ZGUgZGVidCB1bmRlciBHYXR0IG5lZ290aWF0aW9ucywgYnV0IENhcnRlZ2VuYSBtaW5pc3RlcnMgaGF2ZSB5ZXQgdG8gZW5kb3JzZSBhbnkgcHJvcG9zYWxzLiAgICAgU3BlYWtpbmcgZWFybGllciBpbiBOZXcgWW9yaywgVXJ1Z3VheSdzIEZvcmVpZ24gTWluaXN0ZXIgYW5kIENhcnRhZ2VuYSBncm91cCBjaGFpcm1hbiBFbnJpcXVlIElnbGVzaWFzIHNhaWQgQ2l0aWNvcnAncyBkZWNpc2lvbiBjb3VsZCBkaXNjb3VyYWdlIG5ldyBsZW5kaW5nLiBCdXQgaXQgbWlnaHQgaGVscCBDYXJ0YWdlbmEncyBiaWQgdG8gaGF2ZSBvbGQgYW5kIG5ldyBkZWJ0IHRyZWF0ZWQgc2VwYXJhdGVseS4gICAgIFRoZSBDYXJ0YWdlbmEgZ3JvdXAsIHdoaWNoIGhhcyBub3QgbWV0IGF0IG1pbmlzdGVyaWFsIGxldmVsIGZvciBvdmVyIGEgeWVhciwgd2FudHMgdG8gcmVwYXkgZGVidCBjb250cmFjdGVkIGJlZm9yZSB0aGUgZGVidCBjcmlzaXMgYXQgdGhlIGxvdyBpbnRlcmVzdCByYXRlcyBwcmV2YWlsaW5nIGluIHRoZSAxOTcwcy4gSXQgd291bGQgcGF5IG5ldyBsb2FucyBhdCBjdXJyZW50IG1hcmtldCByYXRlcy4gICAgICJNYW55IGNvdW50cmllcyBmZWFyIHRoYXQgd2hhdCB0aGV5IGhhdmUgZ2FpbmVkIGluIG1vbnRocyBvZiBhcmR1b3VzIGRlYnQgbmVnb3RpYXRpb25zIHRoZXkgY2FuIGxvc2UgYXQgYSBzdHJva2Ugd2l0aCBhIG9uZSBwb2ludCByaXNlIGluIGludGVyZXN0IHJhdGVzLCIgb25lIG9mZmljaWFsIGhlcmUgc2FpZC4gICAgICJUaGUgbmV3IGluY3JlYXNlIGluIGludGVyZXN0IHJhdGVzIGhhcyBjb21lIHByZWNpc2VseSB3aGVuIHdlIHRob3VnaHQgdGhleSBoYWQgc3RpbGwgbm90IGNvbWUgZG93biBlbm91Z2gsIiBJZ2xlc2lhcyBzYWlkLiAgICAgTGF0aW4gQW1lcmljYW4gb2ZmaWNpYWxzIGFyZSBhbHNvIGNvbmNlcm5lZCB0aGF0IHZhcnlpbmcgaW50ZXJlc3Qgc3ByZWFkcyBncmFudGVkIHRvIGRpZmZlcmVudCBkZWJ0b3IgbmF0aW9ucyBjb3VsZCBnZW5lcmF0ZSBkaXNjb3JkLCBhcyB3aXRoIHRoZSBQaGlsaXBwaW5lcycgcmVjZW50IHByb3Rlc3QgYXQgYmVpbmcgZ2l2ZW4gbGVzcyBmYXZvdXJhYmxlIHRlcm1zIHRoYW4gQXJnZW50aW5hLiAgICAgVGhlcmUgaGFzIGJlZW4gc3BlY3VsYXRpb24gVmVuZXp1ZWxhIHdvdWxkIGRlbWFuZCBhIGN1dCBpbiBpdHMgNy84IHBjdCBzcHJlYWQsIGJ1dCBwdWJsaWMgZmluYW5jZXMgZGlyZWN0b3IgSm9yZ2UgTWFyY2FubyBzYWlkIGhlcmUgdGhlcmUgd2VyZSBubyBwbGFucyB0byByZW5lZ290aWF0ZSB0ZXJtcy4gICAgIFRoaXMgd2VlaydzIG1lZXRpbmcgY2FtZSBhZnRlciB0aHJlZSBMYXRpbiBBbWVyaWNhbiBwcmVzaWRlbnRzIG1lZXRpbmcgaW4gTW9udGV2aWRlbyBjYWxsZWQgZm9yIHN0YWJsZSBpbnRlcmVzdCByYXRlcyBvbiB0aGUgcmVnaW9uJ3MgMzgwIGJpbGxpb24gZGxyIGZvcmVpZ24gZGVidC4gSXQgd2FzIGNhbGxlZCB0byByZXZpZXcgZGV2ZWxvcG1lbnRzIHNpbmNlIHRoZSBsYXN0IG1pbmlzdGVyaWFsIG1lZXRpbmcgaW4gRmVicnVhcnkgMTk4NiBhbmQgdG8gdGhpbmsgdXAgbmV3IGlkZWFzLiAgICAgU2luY2UgdGhlIGxhc3QgbWluaXN0ZXJpYWwgbWVldGluZyB0aGVyZSBoYXZlIGJlZW4gc29tZSBhZHZhbmNlcywgc3VjaCBhcyBNZXhpY28ncyBncm93dGgtb3JpZW50ZWQgNzcgYmlsbGlvbiBkbHIgbG9hbiBhbmQgcmVmaW5hbmNpbmcgcGFja2FnZSBhZ3JlZWQgbGFzdCBTZXB0ZW1iZXIuIEJ1dCB0aGVyZSBoYXZlIGFsc28gYmVlbiBzZXRiYWNrcywgbGlrZSBCcmF6aWwncyBwYXltZW50cyBtb3JhdG9yaXVtLiAgICAgVGhlIGxvYW5zIGV4cGVjdGVkIGluIHRoZSBCYWtlciBwbGFuIGhhdmUgbm90IG1hdGVyaWFsaXplZCBhbmQgZGVidG9ycyBoYXZlIGJlZW4gZm9yY2VkIHRvIGJyb3diZWF0IHJlbHVjdGFudCBiYW5rcy4gICAgICJXZSBoYXZlIGNsZWFybHkgc3RyZXRjaGVkIHRoZSByZXN0cnVjdHVyaW5nIHByb2Nlc3MgdG8gaXRzIGxpbWl0cyBhbmQgYW5kIHRoZSBxdWVzdGlvbiBpcyBub3cgd2hlcmUgZG8gd2UgZ28gZnJvbSBoZXJlPyIgYSBzZW5pb3IgTWV4aWNhbiBmb3JlaWduIG1pbmlzdHJ5IG9mZmljaWFsIHNhaWQuICAgICBFeGlzdGluZyBkZWJ0IHN0cmF0ZWd5IGhhcyBiZWVuIGJhc2VkIG9uIG51cnNpbmcgZGVidG9yIGVjb25vbWllcyBiYWNrIHRvIGEgcG9zaXRpb24gd2hlcmUgdGhleSBjYW4gYWdhaW4gc2VydmljZSB0aGVpciBkZWJ0cyBhbmQgcXVhbGlmeSBmb3IgbmV3IGxvYW5zLiAgICAgQnV0IGFmdGVyIGZpdmUgeWVhcnMgb2YgZWNvbm9taWMgYWRqdXN0bWVudCwgTGF0aW4gQW1lcmljYW4gZGVidG9ycyBhcmUgY3VycmVudGx5IHVuYWJsZSB0byByYWlzZSB2b2x1bnRhcnkgY3JlZGl0cywgd2l0aCB0aGUgZXhjZXB0aW9uIG9mIENvbG9tYmlhLiBPbmx5IFZlbmV6dWVsYSBpcyBwYXlpbmcgYmFjayBwcmluY2lwYWwuIE1vc3QgY291bnRyaWVzIGhhdmUgbm8gcHJvc3BlY3Qgb2YgcGF5aW5nIHRoZWlyIGRlYnRzIGluIHRoZSBmb3Jlc2VlYWJsZSBmdXR1cmUuICAgICBDaXRpY29ycCBoYXMgbWFkZSBjbGVhciBpdHMgZGVjaXNpb24gdG8gbW92ZSB0aHJlZSBiaWxsaW9uIGRscnMgdG8gcmVzZXJ2ZXMgZG9lcyBub3QgbWVhbiBpdCBpcyB3cml0aW5nLW9mZiB0aGUgbG9hbnMuICAgICBMYXRpbiBBbWVyaWNhbiBvZmZpY2lhbHMgaGVyZSBzYWlkIENpdGljb3JwJ3MgbW92ZSB3b3VsZCBwcm9iYWJseSBib29zdCB0cmFkaW5nIG9mIGRpc2NvdW50ZWQgdGhpcmQgd29ybGQgZGVidCBpbiB0aGUgc2Vjb25kYXJ5IG1hcmtldCwgaW1wbGljaXRseSBkb3dudmFsdWluZyB0aGUgYW1vdW50IG93ZWQuIEJ1dCB0aGV5IHNhaWQgaXQgbWlnaHQgbWFrZSBuZXcgbGVuZGluZyBldmVuIG1vcmUgcmVtb3RlLiAgICAgRGlzY291bnRlZCBkZWJ0IGNhbiBiZSBib3VnaHQgYnkgZm9yZWlnbiBpbnZlc3RvcnMgdGhyb3VnaCBkZWJ0LWVxdWl0eSBzY2hlbWVzIHRoYXQgZ2VuZXJhdGUgbmV3IHJlc291cmNlcyBmb3IgZGVidG9yIGVjb25vbWllcy4gQ2hpbGUgYW5kIE1leGljbyBhcmUgY3VycmVudGx5IGZyb250LXJ1bm5lcnMgaW4gdGhpcyBmaWVsZCwgYnV0IG1vc3QgTGF0aW4gQW1lcmljYW4gb2ZmaWNpYWxzIHNlZSB0aGVzZSBzY2hlbWVzIGFzIGxpbWl0ZWQgYW5kIG5vIHBhbmFjZWEgZm9yIHRoZSBvdmVyYWxsIHByb2JsZW0uICAgICBNb3N0IExhdGluIG9mZmljaWFscyBzZXQgZ3JlYXRlciBzdG9yZSBvbiBidWlsZGluZyB1cCBleHBvcnQgaW5jb21lIHRoYW4gb24gZGVidC1lcXVpdHkgc2NoZW1lcy4gICAgIEV4cG9ydHMgaGl0IDk3LjcgYmlsbGlvbiBkbHJzIGluIDE5ODQsIGN1dHRpbmcgdGhlIHJlZ2lvbidzIGRlYnQgc2VydmljZSByYXRpbyB0byAzNiBwY3QsIGJ1dCB0aGV5IGZlbGwgdG8gNzguMyBiaWxsaW9uIGxhc3QgeWVhci4gU28sIGV2ZW4gdGhvdWdoIGludGVyZXN0IHJhdGVzIGhhZCBkcm9wcGVkIHRoZSByYXRpbyBoYXJkbHkgY2hhbmdlZC4gICAgIFRoZSBDYXJ0YWdlbmEgZ3JvdXAgaGFzIGNhbGxlZCBmb3IgdGhlIGRlYnQtdHJhZGUgbGluayB0byBiZSByZWNvZ25pemVkIGJlZm9yZSwgYnV0IGhhcyBub3QgbWFkZSBkZXRhaWxlZCBwcm9wb3NhbHMuICAgICBPZmZpY2lhbHMgc2FpZCBpbml0aWF0aXZlcyBkaXNjdXNzZWQgaGVyZSB3b3VsZCBiZSBzdWJtaXR0ZWQgdG8gZm9yZWlnbiBhbmQgZmluYW5jZSBtaW5pc3RlcnMgb2YgdGhlIDExIG5hdGlvbnMsIGJlZm9yZSBJTUYgYW5kIFdvcmxkIEJhbmsgYW5udWFsIG1lZXRpbmdzIGxhdGVyIHRoaXMgeWVhci4gIFJFVVRFUiAzOwoxOTg3MDYwMQlMSVRUTEUgUkVBQ1RJT04gVE8gQ09NRVggUFJJQ0UgTElNSVQgUkVNT1ZBTCBUaGUgZWxpbWluYXRpb24gb2YgcHJpY2UgbGltaXRzIG9uIHByZWNpb3VzIG1ldGFscyBjb250cmFjdHMgdHJhZGluZyBhdCB0aGUgQ29tbW9kaXR5IEV4Y2hhbmdlIGluIE5ldyBZb3JrIGFwcGVhcnMgdG8gYmUgaGF2aW5nIGxpdHRsZSBlZmZlY3Qgb24gdGhlIG1hcmtldCwgYW5hbHlzdHMgc2FpZC4gICAgICJUaGVyZSBpcyBub3RoaW5nIGFwcGFyZW50IGZyb20gdGhlIGNoYW5nZSwiIHNhaWQgV2lsbGlhbSBPJ05laWxsLCBkaXJlY3RvciBvZiBmdXR1cmVzIHJlc2VhcmNoIGF0IEVsZGVycyBGdXR1cmVzIEluYy4gIlRoZSBtYXJrZXQgaGFzIG5vdCBhcHByb2FjaGVkIHRoZSBvbGQgcHJpY2UgbGltaXRzIGFuZCB0cmFkaW5nIGlzIHJlbGF0aXZlIHF1aWV0LCBpbiBuYXJyb3cgcmFuZ2VzLCIgaGUgYWRkZWQuICAgICBHb2xkIGZ1dHVyZXMsIHdoaWNoIHByZXZpb3VzbHkgaGFkIGEgbGltaXQgb2YgMjUgZGxycyBvbiBtYXJrZXQgbW92ZXMgaW4gbW9zdCBiYWNrIG1vbnRocywgd2VyZSBhYm91dCA3LjAwIGRscnMgd2Vha2VyIGluIHRoZSBuZWFyYnkgY29udHJhY3RzIGFtaWQgdGhpbiBjb25kaXRpb25zLCB0cmFkZXJzIHNhaWQuICAgICBPbiBNYXkgNSwgQ09NRVggZGlkIGF3YXkgd2l0aCBwcmljZSBsaW1pdHMgb24gdGhlIHR3byBjb250cmFjdHMgZm9sbG93aW5nIHNwb3QgYWZ0ZXIgYSB2b2xhdGlsZSBtYXJrZXQgaW4gc2lsdmVyIGZ1dHVyZXMgYXQgdGhlIGVuZCBvZiBBcHJpbCBjYXVzZWQgc2V2ZXJlIGRpc3J1cHRpb25zLiAgICAgRHVyaW5nIHRoZSBsYXN0IHdlZWsgb2YgQXByaWwsIHNpbHZlciBmdXR1cmVzIHRyYWRlZCB1cCBhbmQgZG93biB0aGUgcHJpY2UgbGltaXQgaW4gdGhlIGJhY2sgbW9udGhzLCBjYXVzaW5nIHRyYWRlcnMgdG8gcnVzaCBpbnRvIHRoZSBzcG90IGNvbnRyYWN0IHRvIG9mZnNldCB0aG9zZSBtb3ZlcywgYW5hbHlzdHMgc2FpZC4gIEFzIGEgcmVzdWx0LCBFbGRlcnMnIE8nTmVpbGwgc2FpZCwgdGhlcmUgd2FzIG11Y2ggY29uZnVzaW9uLCBtYW55IHVubWF0Y2hlZCB0cmFkZXMsIGFuZCBsYXJnZSBsb3NzZXMuICAgICBUaGUgQ09NRVggZmluZWQgRWxkZXJzIEZ1dHVyZXMgYW5kIHRocmVlIG90aGVyIGxhcmdlIGZpcm1zIGEgdG90YWwgb2YgMTAwLDAwMCBkbHJzIGZvciBmYWlsdXJlIHRvIHJlc29sdmUgdW5tYXRjaGVkIHRyYWRlcyBpbiBhIHRpbWVseSBtYW5uZXIuICAgICBTaWx2ZXIgZnV0dXJlcyB3ZXJlIHRyYWRpbmcgYWJvdXQgMzAtNDAgY3RzIHdlYWtlciBpbiB0aGUgbmVhcmJ5IGNvbnRyYWN0cyBhbWlkIHF1aWV0IHRyYWRpbmcgdG9kYXkuICAgICBPJ05laWxsIHNhaWQgdGhlIGVsaW1pbmF0aW9uIG9mIHByaWNlIGxpbWl0cyBvbiBhbGwgQ09NRVggbWV0YWxzIGZ1dHVyZXMgd291bGQgYWRkIGNhdXRpb24gdG8gdHJhZGluZyBzaW5jZSBhbGwgY29udHJhY3RzIGNvdWxkIG1vdmUgYW55IGRpc3RhbmNlLiAgICAgIlRoaXMgaXMgYW1vcmUgcmVhbGlzdGljIGFwcHJvYWNoIGJlY2F1c2UgdGhlIG1ldGFscyBtYXJrZXQgaXMgYSAyNCBob3VycyBtYXJrZXQgYW5kIHByaWNlcyBjYW4gbW92ZSB3aXRob3V0IGxpbWl0LCIgTydOZWlsbCBzYWlkLiAgICAgUGF1bCBDYWluLCBhIHZpY2UgcHJlc2lkZW50IGF0IFNoZWFyc29uIExlaG1hbiBCcm90aGVycywgc2FpZCB0aGUgZWxpbWluYXRpb24gb2YgcHJpY2UgbGltaXRzIHdpbGwgY3V0IGJhY2sgb24gcGFuaWMgYnV5aW5nIG9yIHNlbGxpbmcgIGFuZCBjb250cmlidXRlIHRvIG1vcmUgb3JkZXJseSBtYXJrZXRzLiAgICAgIFJldXRlciAzOwoxOTg3MDYwMQlMSVRUTEUgUkVBQ1RJT04gVE8gUkVNT1ZBTCBDT01FWCBEQUlMWSBMSU1JVFMgVGhlIGVsaW1pbmF0aW9uIG9mIGxpbWl0cyBvbiBkYWlseSBwcmljZSBmbHVjdHVhdGlvbnMgZm9yIG1ldGFscyBmdXR1cmVzIGNvbnRyYWN0cyB0cmFkZWQgb24gdGhlIENvbW1vZGl0eSBFeGNoYW5nZSwgQ09NRVgsIGFwcGVhcnMgdG8gYmUgaGF2aW5nIGxpdHRsZSBlZmZlY3Qgb24gdGhlIG1hcmtldCwgYW5hbHlzdHMgc2FpZC4gICAgICJUaGVyZSBpcyBub3RoaW5nIGFwcGFyZW50IGZyb20gdGhlIGNoYW5nZSwiIHNhaWQgV2lsbGlhbSBPJ05laWxsLCBkaXJlY3RvciBvZiBmdXR1cmVzIHJlc2VhcmNoIGF0IEVsZGVycyBGdXR1cmVzIEluYy4gICAgICJUaGUgbWFya2V0IGhhcyBub3QgYXBwcm9hY2hlZCB0aGUgb2xkIHByaWNlIGxpbWl0cyBhbmQgdHJhZGluZyBpcyByZWxhdGl2ZSBxdWlldCwgaW4gbmFycm93IHJhbmdlcywiIGhlIHNhaWQuICAgICBPbiBNYXkgNSwgQ09NRVggZWxpbWluYXRlZCBwcmljZSBsaW1pdHMgb24gdGhlIHR3byBjb250cmFjdHMgZm9sbG93aW5nIGVhY2ggc3BvdCBkZWxpdmVyeSBpbiBnb2xkLCBzaWx2ZXIsIGNvcHBlciBhbmQgYWx1bWludW0gZnV0dXJlcyBhZnRlciBhIHJldmlldyBvZiBpdHMgY2xlYXJpbmcgb3BlcmF0aW9ucywgd2hpY2ggd2VyZSBzZXZlcmVseSB0ZXN0ZWQgYnkgYSB2b2xhdGlsZSBtYXJrZXQgaW4gc2lsdmVyIGZ1dHVyZXMgYXQgdGhlIGVuZCBvZiBBcHJpbC4gQ09NRVggYW5ub3VuY2VkIEZyaWRheSB0aGUgbGlmdGluZyBvZiBhbGwgZGFpbHkgbGltaXRzLCBlZmZlY3RpdmUgdG9kYXkuICAgICBHb2xkIGZ1dHVyZXMsIHdoaWNoIHByZXZpb3VzbHkgaGFkIGEgbGltaXQgb2YgMjUgZGxycyBwZXIgb3VuY2UgaW4gbW9zdCBiYWNrIG1vbnRocywgd2VyZSBhYm91dCA3LjAwIGRscnMgd2Vha2VyIGluIHRoZSBuZWFyYnkgY29udHJhY3RzIGFtaWQgdGhpbiB2b2x1bWUgY29uZGl0aW9ucywgdHJhZGVycyBzYWlkLiAgICAgU2lsdmVyIGZ1dHVyZXMsIHByZXZpb3VzbHkgbGltaXRlZCBhdCA1MCBjZW50cyBpbiBtb3N0IGJhY2sgbW9udGhzLCB3ZXJlIHRyYWRpbmcgYWJvdXQgMzAtNDAgY3RzIHdlYWtlciBpbiB0aGUgbmVhcmJ5IGNvbnRyYWN0cyBhbWlkIHF1aWV0IHRyYWRpbmcgdG9kYXkuICAgICBEdXJpbmcgdGhlIGxhc3Qgd2VlayBvZiBBcHJpbCwgc2lsdmVyIGZ1dHVyZXMgb2Z0ZW4gdHJhZGVkIGF0IHRoZSBkYWlseSBhbGxvd2FibGUgbGltaXQgYW1pZCBjb25jZXJucyBhYm91dCBpbmZsYXRpb24sIHRoZSBkb2xsYXIsIGFuZCBvdGhlciBmYWN0b3JzLiBUcmFkZXJzIHJ1c2hlZCBpbnRvIHRoZSBzcG90LCBvciB1bmxpbWl0ZWQsIGNvbnRyYWN0IHRvIG9mZnNldCB0aG9zZSBtb3ZlcywgYW5hbHlzdHMgc2FpZC4gICAgIEFzIGEgcmVzdWx0LCBPJ05laWxsIHNhaWQsIHRoZXJlIHdhcyBtdWNoIGNvbmZ1c2lvbiwgbWFueSB1bm1hdGNoZWQgdHJhZGVzLCBhbmQgbGFyZ2UgbG9zc2VzIGZvciBzb21lIHRyYWRlcnMuICAgICBUaGUgQ09NRVggZmluZWQgZm91ciBsYXJnZSBmaXJtcyBhIHRvdGFsIG9mIDEwMCwwMDAgZGxycyBmb3IgZmFpbHVyZSB0byByZXNvbHZlIHVubWF0Y2hlZCB0cmFkZXMgaW4gYSB0aW1lbHkgbWFubmVyLiAgICAgUGF1bCBDYWluLCBhIHZpY2UgcHJlc2lkZW50IGF0IFNoZWFyc29uIExlaG1hbiBCcm90aGVycywgc2FpZCB0aGUgZWxpbWluYXRpb24gb2YgcHJpY2UgbGltaXRzIHdpbGwgY3V0IGJhY2sgb24gcGFuaWMgYnV5aW5nIG9yIHNlbGxpbmcgYW5kIGNvbnRyaWJ1dGUgdG8gbW9yZSBvcmRlcmx5IG1hcmtldHMuICAgICBPJ05laWxsIGFkZGVkIHRoYXQgdGhlIGVsaW1pbmF0aW9uIG9mIGRhaWx5IGxpbWl0cyB3b3VsZCBhZGQgY2F1dGlvbiB0byB0cmFkaW5nLiAgICAgIlRoaXMgaXMgYSBtb3JlIHJlYWxpc3RpYyBhcHByb2FjaCBiZWNhdXNlIHRoZSBtZXRhbHMgbWFya2V0IGlzIGEgMjQgaG91cnMgbWFya2V0IGFuZCBwcmljZXMgY2FuIG1vdmUgd2l0aG91dCBsaW1pdCwiIE8nTmVpbGwgc2FpZC4gIFJldXRlciAzOwoxOTg3MDYwMQlNQUpPUiBVLlMuIE9JTCBQSVBFTElORSBTSFVUIERPV04gQlkgRkxPT0RTIEZsb29kaW5nIGluIHRoZSBSZWQgUml2ZXIgb24gdGhlIFRleGFzL09rbGFob21hIGJvcmRlciBoYXMgc2h1dCBkb3duIHRoZSBCYXNpbiBQaXBlbGluZSwgYSAyNC1pbmNoIHBpcGVsaW5lIHRoYXQgdHJhbnNwb3J0cyBhcyBtdWNoIGFzIDMwMCwwMDAgYmFycmVscyBwZXIgZGF5IG9mIHN3ZWV0IGFuZCBzb3VyIGNydWRlcyBmcm9tIFRleGFzIHRvIEN1c2hpbmcsIE9rbGEsIGEgVGV4YWNvIFBpcGVsaW5lIENvIHNwb2tlc21hbiBjb25maXJtZWQuICAgICAiVGhlIHdhdGVyIGlzIHJ1c2hpbmcgYnkgc28gZmFzdCB0aGF0IHdlIGNhbid0IGdldCBhbnkgZGl2ZXJzIGRvd24gdG8gYXNzZXNzIHRoZSBkYW1hZ2UgYnV0IHRoZXJlIGlzIHNvbWUgcG9zc2liaWxpdHkgdGhhdCB0aGUgcGlwZWxpbmUgY291bGQgYmUgdXAgYnkgdGhlIGVuZCBvZiB0aGUgd2VlaywiIGEgY29tcGFueSBzb3VyY2Ugc2FpZC4gICAgIFRoZSBwaXBlbGluZSB0cmFuc21pdHMgcm91Z2hseSB0d28tdGhpcmRzIHNvdXIgY3J1ZGUgYW5kIG9uZS10aGlyZCBzd2VldCBjcnVkZSBvaWwgZnJvbSB0aGUgTWlkbGFuZCwgVGV4YXMgcmVnaW9uLiAgICAgVGV4YWNvIHNvdXJjZXMgc2FpZCB0aGF0IGlmIHRoZSBwaXBlbGluZSBzZXJ2aWNlIGlzIHJlc3RvcmVkIGJ5IEZyaWRheSB0aGVyZSB3b3VsZCBiZSBsaXR0bGUgcHJvYmxlbSBpbiByZXN0b3Jpbmcgb2lsIHdoaWNoIGhhcyBiZWVuIGxvc3QgdG8gdGhlIGZsb29kLiAgICAgIkJ1dCBpZiB0aGUgcGlwZWxpbmUgaXMgZG93biBtb3JlIHRoYW4gMTAgZGF5cyBpdCB3aWxsIGJlIGRpZmZpY3VsdCB0byBtYWtlIHVwIHdpdGhvdXQgcHJvcmF0aW9uaW5nIGFuZCB3ZSB3b3VsZCBub3QgbGlrZSB0byBwcm9yYXRpb24gdGhpcyBwaXBlbGluZSwgaWYgd2UgZG9uJ3QgaGF2ZSB0by4iICAgICBUaGUgQmFzaW4gUGlwZWxpbmUgaXMgam9pbnRseSBvd25lZCBieSBBdGxhbnRpYyBSaWNoZmllbGQgQ29ycCA8QVJDPiwgU2hlbGwgT2lsIENvLCBhIHN1YnNpZGlhcnkgb2YgdGhlIFJveWFsIER1dGNoL1NoZWxsIEdyb3VwIDxSRD4gYW5kIFRleGFjbyBJbmMgPFRYPiwgd2hpY2ggaXMgdGhlIHBpcGVsaW5lJ3Mgb3BlcmF0b3IuICAgICAgUGV0ZXIgQmV1dGVsLCBhbmFseXN0IGF0IEVsZGVycyBGdXR1cmVzIEluYywgc2FpZCBjcnVkZSBvaWwgZnV0dXJlcyBjb250cmFjdHMgb24gTmV3IFlvcmsgTWVyY2FudGlsZSBFeGNoYW5nZSByb3NlIHRvIG5ldyBoaWdocyB0aGlzIGFmdGVybm9vbiBmb2xsb3dpbmcgbmV3cyBvZiB0aGUgcGlwZWxpbmUgYnJlYWsuICAgICBKdWx5IGNydWRlIGZ1dHVyZXMgb2YgV2VzdCBUZXhhcyBJbnRlcm1lZGlhdGUgdHJhZGVkIHVwIHRvIDE5LjYwIGRscnMgYSBiYXJyZWwsIGEgcmlzZSBvZiBtb3JlIHRoYW4gMjAgY3RzLiAgICAgQ2FzaCBtYXJrZXQgcHJpY2VzIGFsc28gZmlybWVkIG9uIHRoZSBuZXdzIHdpdGggc2VsbGVycyBvZiBXVEkgcmFpc2luZyBvZmZlcnMgdG8gMTkuNjAgZGxycyBhIGJhcnJlbC4gICAgIFNvdXIgY3J1ZGVzLCB3aGljaCB3b3VsZCBiZSBtb3N0IGFmZmVjdGVkIGJ5IHRoZSBwaXBlbGluZSBzaHV0ZG93biwgaG93ZXZlciwgd2VyZSBzbG93IHRvIHJlYWN0IHRvIHRoZSBuZXdzIHdpdGggV2VzdCBUZXhhcyBTb3VyIGFuZCBBbGFza2EgTm9ydGggU2xvcGUgaG9sZGluZyA1MCBjdHMgdG8gb25lIGRsciBhIGJhcnJlbCBiZWxvdyBXVEksIHJlc3BlY3RpdmVseS4gICAgIERhbiBTdGV2ZW5zLCBtYW5hZ2VyIG9mIHB1YmxpYyBhbmQgZ292ZXJubWVudCBhZmZhaXJzIGF0IFRleGFjbywgc2FpZCB0aGUgY29tcGFueSBob3BlcyB0byBmaXggdGhlIHBpcGVsaW5lIGluIGZpdmUgZGF5cyBidXQgdGhhdCB3aWxsIGRlcGVuZCBvbiB3aGVuIHRoZSB3YXRlciBsZXZlbCBvZiB0aGUgUmVkIFJpdmVyIHJlY2VkZXMuIFRoZXJlIGlzIGFscmVhZHkgZXZpZGVuY2UgdGhhdCB0aGUgd2F0ZXIgbGV2ZWwgaXMgZHJvcHBpbmcgYW5kIGl0IGFwcGVhcnMgdGhlIHJhaW4gaGFzIHN0b3BwZWQgaW4gdGhlIGFyZWEgYWZmZWN0aW5nIHRoZSBwaXBlbGluZSwgU3RldmVucyBzYWlkLiAgICAgSGUgc2FpZCB0aGUgc2VnbWVudCBvZiB0aGUgcGlwZWxpbmUgdGhhdCB3YXMgZGFtYWdlZCB3YXMgdW5kZXJncm91bmQgYW5kIGF0IGEgZGlzdGFuY2UgZnJvbSB0aGUgUmVkIFJpdmVyIHRoYXQgZmxvb2RlZC4gVGhlIHBpcGVsaW5lIHJ1bnMgb3ZlciB0aGUgUmVkIFJpdmVyIGFuZCB1bmRlciB0aGUgc3Vic29pbCBuZWFyYnksIGFjY29yZGluZyB0byBTdGV2ZW5zLiBIZSBzYWlkIHNvbWUgb2YgdGhpcyBzdWJzb2lsIHdhcyBhcHBhcmVudGx5IHdhc2hlZCBhd2F5LiAgICAgICAgIFRoZSBwb3RlbnRpYWwgZm9yIGVudmlyb25tZW50YWwgZGFtYWdlIGlzIGJlaW5nIGRvd25wbGF5ZWQgYXQgdGhpcyB0aW1lIGRlc3BpdGUgdGhlIHZvbHVtZSBvZiBvaWwgdGhhdCBydW5zIHRocm91Z2ggdGhpcyBsaW5lLiAgICAgVGV4YWNvJ3MgU3RldmVucyBzYWlkIHRoYXQgYWVyaWFsIHN1cnZlaWxsYW5jZSBoYXMgbm90IGZvdW5kIGFueSBjcnVkZSBvbiB0aGUgd2F0ZXIgaW4gdGhlIHJpdmVyIG9yIGluIExha2UgVGV4b21hLCB3aGljaCBpcyBuZWFyYnkuICBSZXV0ZXIgMzsKMTk4NzA2MDEJTUFSQ0FERSBHUk9VUCA8TUFSPiBQTEFOUyBBQ1FVSVNJVElPTiBNYXJjYWRlIEdyb3VwIEluYyBzYWlkIGl0IGhhcyBhZ3JlZWQgaW4gcHJpbmNpcGxlIHRvIGFjcXVpcmUgYSBwcm9taW5lbnQsIHByaXZhdGVseS1oZWxkIG1ha2VyIG9mIGxhZGllcycgc3BvcnRzIHdlYXIgZm9yIGFuIGNhc2gsIHNoYXJlcyBhbmQgb3B0aW9ucyB0byBwdXJjaGFzZSBNYXJjYWRlIGNvbW1vbiB2YWx1ZWQgYXQgYWJvdXQgMjAgbWxuIGRscnMuICAgICBJbiBpdHMgZmlzY2FsIHllYXIgcmVjZW50bHkgZW5kZWQsIE1hcmNhZGUgc2FpZCwgdGhlIGNvbXBhbnkgdG8gYmUgYWNxdWlyZWQgd2hpY2ggb3ducyBmaXZlIFUuUy4gbWFudWZhY3R1cmluZyBmYWNpbGl0aWVzIGFuZCBvbmUgb2Zmc2hvcmUgaGFkIHJldmVudWVzIG9mIG92ZXIgNjAgbWxuIGRscnMgYW5kIHByZXRheCBlYXJuaW5ncyBvZiBhYm91dCBmb3VyIG1sbiBkbHJzLiAgUmV1dGVyIDM7CjE5ODcwNjAxCU1BWFdFTEwgRklMRVMgU1VJVCBUTyBTVE9QIEhBUkNPVVJUIDxIQko+IFB1Ymxpc2hlciBSb2JlcnQgTWF4d2VsbCdzIEJyaXRpc2ggUHJpbnRpbmcgYW5kIENvbW11bmljYXRvbiBDb3JwIFBMQyBzYWlkIGl0IGZpbGVkIGEgbGF3c3VpdCBpbiBVLlMuIGRpc3RyaWN0IGNvdXJ0IGFnYWluc3QgSGFyY291cnQgQnJhY2UgSm92YW5vdmljaCBJbmMsIGl0cyBkaXJlY3RvcnMgYW5kIGFkdmlzZXJzIHRvIHN0b3AsIGFtb25nIG90aGVyIHRoaW5ncywgcGF5bWVudCBvZiB0aGUgc3BlY2lhbCBkaXZpZGVuZCBIYXJjb3VydCBpcyBwYXlpbmcgYXMgcGFydCBvZiBpdHMgcmVjYXBpdGFsaXphdGlvbi4gICAgIFRoZSBzdWl0LCBmaWxlZCBpbiBNYW5oYXR0YW4sIGFsc28gbmFtZXMgRmlyc3QgQm9zdG9uIENvcnAgPEZCQz4gYW5kIHNlZWtzIHRvIHZvaWQgdGhlIGlzc3VlIGJ5IEhhcmNvdXJ0IG9mIDQwLDAwMCBzaGFyZXMgb2Ygc3VwZXIgdm90aW5nIHByZWZlcnJlZCBzdG9jayB0byBGaXJzdCBCb3N0b24gU2VjdXJpdGllcyBDb3JwIGFuZCB0aGUgaXNzdWUgb2YgY29udmVydGlibGUgdm90aW5nIHByZWZlcnJlZCBzdG9jayB3aXRoIDQsNzAwLDAwMCB2b3RlcyBpbiB0aGUgSGFyY291cnQgZW1wbG95ZWUgc3RvY2sgb3duZXJzaGlwIHBsYW4uICAgICBUaGUgcHJlZmVycmVkIHNoYXJlcyB0byBiZSBpc3N1ZWQgdG8gRmlyc3QgQm9zdG9uIGhhdmUgOCwxNjAsMDAwIHZvdGVzLiBUaGUgc3VpdCwgYnJvdWdodCBkZXJpdmF0aXZlbHkgb24gYmVoYWxmIG9mIEhhcmNvdXJ0IGFuZCBpbmRpdmlkdWFsbHkgaW4gQnJpdGlzaCBQcmludGluZydzIGNhcGFjaXR5IGFzIGEgc3Vic3RhbnRpYWwgaG9sZGVyIG9mIEhhcmNvdXJ0IGNvbW1vbiBzaGFyZXMgYW5kIDYtMy84IHBjdCBjb252ZXJ0aWJsZSBkZWJlbnR1cmVzLiAgICAgVGhlIHN1aXQgYWxsZWdlcyBIYXJjb3VydCdzIHNwZWNpYWwgZGl2aWRlbmQgZXhjZWVkcyBieSBtb3JlIHRoYW4gb25lIGJpbGxpb24gZGxycyBIYXJjb3V0J3Mgc3VycGx1cyBhdmFpbGFibGUgZm9yIGRpdmlkZW5kcyB1bmRlciBOZXcgWW9yayBsYXcgYW5kIGNvbnRzdGl0dXRlcyBhIGZyYXVkdWxlbnQgY29udmV5YW5jZS4gICAgIFRoZSBsYXdzdWl0IGFsc28gYWxsZWdlcyB0aGF0IEhhcmNvdXJ0IGZhaWxlZCB0byBkaXNjbG9zZSB0aGF0IG9uZSBjb25zZXF1ZW5jZSBvZiB0aGUgcGF5bWVudCBvZiB0aGUgZGl2aWRlbmQsIHdoaWNoIGl0IHRlcm1zIGlsbGVnYWwsIHdpbGwgYmUgdGhhdCBzaGFyZWhvbGRlcnMgd2lsbCBiZSBsaWFibGUgdG8gcmVwYXkgaXQuICAgICBIYXJjb3VydCBsYXN0IHdlZWsgc2FpZCBpdCB3b3VsZCBwYXkgNDAgZGxycyBwZXIgc2hhcmUgdG8gc3RvY2tob2xkZXJzIGFzIGEgc3BlY2lhbCBkaXZpZGVuZC4gSGFyY291cnQgYWxzbyBhbm5vdW5jZWQgYW4gZXh0ZW5zaXZlIHJlY2FwaXRhbGl6YXRpb24gcGxhbiwgd2hpY2ggYW5hbHlzdHMgc2FpZCB3YXMgYWltZWQgYXQgdGh3YXJ0aW5nIGEgdGFrZW92ZXIgZWZmb3J0IGJ5IEJyaXRpc2ggUHJpbnRpbmcuICAgICBCcml0aXNoIFByaW50aW5nIGxhc3Qgd2VlayB3aXRoZHJldyBpdHMgNDQgZGxyIHBlciBzaGFyZSwgb3IgdHdvIGJpbGxpb24gZGxyIG9mZmVyIGZvciBIYXJjb3VydCBiZWNhdXNlIG9mIHRoZSByZWNhcGl0YWxpemF0b24gcGxhbi4gQXQgdGhlIHRpbWUsIGl0IHNhaWQgaXQgd2FzIHJldmlld2luZyBpdHMgYWx0ZXJuYXRpdmVzLiAgICAgQnJpdGlzaCBQcmludGluZyBzYWlkIGl0IGZpbGVkIHRoZSBzdWl0IGFmdGVyIGNvbnN1bHRhdGlvbiB3aXRoIGl0cyBhZHZpc2Vycy4gSXRzIGxhd3N1aXQgYWxzbyBhbGxlZ2VzIHRoYXQgSGFyY291cnQgZmFpbGVkIHRvIGRpc2Nsb3NlIHRoZSBlZmZlY3Qgb2YgdGhlIHNwZWNpYWwgZGl2aWRlbmQgb24gSGFyY291cnQgNi0zLzggcGN0IGNvbnZlcnRpYmxlIGRlYmVudHVyZXMuICAgICBCcml0aXNoIFByaW50aW5nIGFsbGVnZXMgdGhlIGVmZmVjdCB3aWxsIGJlIGFuIGVub3Jtb3VzIGluY3JlYXNlIGVmZmVjdGl2ZSBvbiB0aGUgSnVuZSBlaWdodCByZWNvcmQgZGF0ZSBmb3IgdGhlIGRpdmlkZW5kIGluIHRoZSBudW1iZXIgb2YgSGFyY291cnQgY29tbW9uIHNoYXJlcyBpc3N1YWJsZSB1cG9uIGNvbnZlcnNpb24gb2YgdGhlIGRlYmVudHVyZXMuIEJyaXRpc2ggUHJpbnRpbmcgYWxzbyBjaGFyZ2VkICBIYXJjb3VydCBpcyB1bmxhd2Z1bGx5IGNvZXJjaW5nIGRlYmVudHVyZSBob2xkZXJzIHRvIGNvbnZlcnQgZGVuYmVudHVyZXMgYmVmb3JlIHRoZSByZWNvcmQgZGF0ZSBiZWNhdXNlIEhhcmNvdXJ0IG1heSBub3QgaGF2ZSBlbm91Z2ggYXV0aG9yaXplZCBjb21tb24gc2hhcmVzIHRvIGhvbm9yIGNvbnZlcnNpb24gYWZ0ZXIgdGhlIGRhdGUuICAgICBCcml0aXNoIFByaW50aW5nIGhvbGRzIDQ2MCw2MDAgc2hhcmVzIGFuZCA1LjYgbWxuIGRscnMgd29ydGggb2YgZGViZW50dXJlcy4gICAgIFRoZSBzdWl0IGFsc28gYWxsZWdlcyB0aGF0IG1hbmFnZW1lbnQsIHRoZSBib2FyZCBvZiBkaXJlY3RvcnMsIGFuZCBGaXJzdCBCb3N0b24gZW5nYWdlZCBpbiBhbiBpbGxlZ2FsIHNjaGVtZSBvZiBlbnRyZW5jaG1lbnQgdGhyb3VnaCBhIGNvbWJpbmF0aW9uIG9mIHNlbGxpbmcgdG8gRmlyc3QgQm9zdG9uIFNlY3VyaXRpZXMgQ29ycCB0aGUgc3VwZXIgdm90aW5nIHByZWZlcnJlZCBhdCBhIGJhcmdhaW4gcHJpY2UsIHRoZSBncmFudCB0byB0aGUgY29tcGFueSBlbXBsb3llZSBzdG9jayBwbGFuIG9mIGNvbnZlcnRpYmxlIHZvdGluZyBwcmVmZXJyZWQsIHRoZSBzaXggbWxuIHNoYXJlIG9wZW4gbWFya2V0IHJlcHVyY2hhc2UgcHJvZ3JhbSBhbmQgdGhlIG1hbm5lciBpbiB3aGljaCBpdHMgZmluYW5jaW5nIGhhcyBiZWVuIHN0cnVjdHVyZWQuICBSZXV0ZXIgMzsKMTk4NzA2MDEJTUFYV0VMTCBXT1VMRCBOT1QgUkVORVcgQklEIElGIFNVSVQgRkFJTFMgQnJpdGlzaCBwcmVzcyBtYWduYXRlIFJvYmVydCBNYXh3ZWxsIHNhaWQgaGlzIEJyaXRpc2ggUHJpbnRpbmcgYW5kIENvbW11bmljYXRpb24gQ29ycCBQbGMgd291bGQgbm90IHJlbmV3IGl0cyBiaWQgZm9yIEhhcmNvdXJ0IEJyYWNlIEpvdmFub3ZpY2ggSW5jIDxIQko+IGlmIHRoZSBsYXdzdWl0IGZpbGVkIGFnYWluc3QgSGFyY291cnQgaW4gTmV3IFlvcmsgdG9kYXkgZmFpbHMuICAgICBTcGVha2luZyBhdCBhIHByZXNzIGNvbmZlcmVuY2UsIE1heHdlbGwgZGVuaWVkIG1hcmtldCBydW1vcnMgdGhhdCBCcml0aXNoIFByaW50aW5nIGhhZCBhcHByb2FjaGVkIEJyaXRpc2ggaW5zdGl0dXRpb25zIHRvIGFycmFuZ2UgYSByaWdodHMgaXNzdWUgd2l0aCBhIHZpZXcgdG8gcmVsYXVuY2hpbmcgaXRzIGJpZCBmb3IgdGhlIFUuUy4gcHVibGlzaGluZyBjb25jZXJuLiAgICAgIkkgZG9uJ3QgYmVsaWV2ZSBpbiBjaGFzaW5nIG1pcmFnZXMsIiBtYXh3ZWxsIHNhaWQuICAgICBCcml0aXNoIFByaW50aW5nIGZpbGVkIHN1aXQgaW4gVS5TLiBEaXN0cmljdCBDb3VydCBpbiBNYW5oYXR0YW4gdG8gYmxvY2sgd2hhdCBNYXh3ZWxsIGNhbGxlZCBhIGZyYXVkdWxlbnQgcmVjYXBpdGFsaXphdGlvbiBhbm5vdW5jZWQgYnkgSGFyY291cnQgbGFzdCB3ZWVrLiAgICAgSGFyY291cnQsIGluIHJlc3BvbnNlIHRvIGEgaG9zdGlsZSB0d28gYmlsbGlvbiBkbHIgdGFrZW92ZXIgcHJvcG9zYWwgZnJvbSBNYXh3ZWxsLCBwbGFubmVkIGEgcmVjYXBpdGFsaXphdGlvbiB0aGF0IHdvdWxkIHBheSBzaGFyZWhvbGRlcnMgNDAgZGxycyBwZXIgc2hhcmUuIFVuZGVyIHRoZSBwbGFuLCBpdCBhbHNvIHNhaWQgNDAgcGN0IG9mIGl0cyBzaGFyZXMgd2lsbCBiZSBjb250cm9sbGVkIGJ5IGl0cyBlbXBsb3llZXMsIG1hbmFnZW1lbnQsIGFuZCBpdHMgZmluYW5jaWFsIGFkdmlzZXIsIEZpcnN0IEJvc3RvbiBDb3JwIDxGQkM+LiAgUmV1dGVyIDM7CjE5ODcwNjAxCU1DTEFJTiBJTkRVU1RSSUVTIElOQyA8TUNDTC5PPiAyTkQgUVRSIE1BUkNIIDMxIFNociAxMSBjdHMgdnMgMTMgY3RzICAgICBOZXQgMjM0LDMyNiB2cyAyNjYsNjUzICAgICBSZXZzIDUuNSBtbG4gdnMgNS44IG1sbiAgICAgU2l4IG1vbnRocyAgICAgU2hyIDIxIGN0cyB2cyAzMSBjdHMgICAgIE5ldCA0NDUsNTA5IHZzIDY0Niw5NzggICAgIFJldnMgOS40IG1sbiB2cyAxMC44IG1sbiAgUmV1dGVyIDM7CjE5ODcwNjAxCU1PQklMIFJBSVNFUyBTSU5HQVBPUkUgUEVUUk9MIFBVTVAgUFJJQ0VTIE1vYmlsIE9pbCBTaW5nYXBvcmUgUHRlIEx0ZSB3aWxsIHJhaXNlIHB1bXAgcHJpY2VzIG9mIHBldHJvbCBmcm9tIEp1bmUgMiwgYSBzcG9rZXN3b21hbiBzYWlkLiAgICAgR3JhZGUgOTcgb2N0YW5lIHdpdGggMC4xNSBnbSBsZWFkIHdpbGwgYmUgOTYuOCBjZW50cy9saXRyZSBhZ2FpbnN0IDk0IGNlbnRzIHByZXZpb3VzbHkgZm9yIDAuNCBnbSBsZWFkLiBHcmFkZSA5MiBvY3RhbmUgd2lsbCBiZSA5MC4yIGNlbnRzIGFnYWluc3QgODcuNiBwcmV2aW91c2x5LiAgICAgU1BDIGVhcmxpZXIgYW5ub3VuY2VkIGl0cyBwdW1wIHByaWNlcyBvZiA5Ni44IGNlbnRzIGFuZCA5MC42IGNlbnRzIGZvciA5NyBhbmQgOTIgb2N0YW5lLCByZXNwZWN0aXZlbHksIGZvciAwLjE1IGdtIGxlYWQgcGV0cm9sIHdoaWNoIGlzIGJlaW5nIHNvbGQgaW4gU2luZ2Fwb3JlIGZyb20gdG9kYXkgaW4gbGluZSB3aXRoIHRoZSBNaW5pc3RyeSBvZiBFbnZpcm9ubWVudCdzIHJlZ3VsYXRpb25zLiAgUkVVVEVSIDM7CjE5ODcwNjAxCU1PTlNBTlRPIDxNVEM+IFRPIEFDUVVJUkUgUkhPTkUtUE9VTEVOQyBBU1NFVFMgTW9uc2FudG8gQ28gc2FpZCBpdCBpcyBhY3F1aXJpbmcgY2VydGFpbiBjb21tZXJpY2FsIGFzc2V0cyBvZiA8UmhvbmUtUG91bGVuYyBDaGltaWUncz4gcG9seXBoZW55bCBidXNpbmVzcy4gICAgIFRlcm1zIG9mIHRoZSB0cmFuc2FjdGlvbiB3ZXJlIG5vdCBkaXNjbG9zZWQuICAgICBBbW9uZyB0aGUgYXNzZXRzIGJlaW5nIGFjcXVpcmVkIGFyZSBpdHMgcG9seXBoZW55bCBidXNpbmVzcyB3b3JsZHdpZGUsIGluY2x1ZGluZyBiaXBoZW55bCBhbmQgdGhlIGhlYXQgdHJhbnNmZXIgZmx1aWQgR2lsb3RoZXJtIFRILCB0b2dldGhlciB3aXRoIGFzc29jaWF0ZWQgbWFudWZhY3R1cmluZyBhbmQgYXBwbGljYXRpb24gdGVjaG5vbG9neSwgTW9uc2FudG8gc2FpZC4gIFJldXRlciAzOwoxOTg3MDYwMQlNT1NDT1cgU0FZUyBXSUxMIFJFVEFMSUFURSBBR0FJTlNUIEdVTEYgQVRUQUNLUyBBbnkgSXJhbmlhbiBhdHRhY2sgb24gU292aWV0IHNoaXBzIGluIHRoZSBHdWxmIHdpbGwgYnJpbmcgYSBmb3JjZWZ1bCBhbmQgdmlvbGVudCByZXNwb25zZSwgYSBTb3ZpZXQgZm9yZWlnbiBtaW5pc3RyeSBvZmZpY2lhbCBzYWlkIGluIGFuIGludGVydmlldyBwdWJsaXNoZWQgaGVyZS4gICAgIEFsZXhhbmRlciBJdmFub3YsIGhlYWQgb2YgdGhlIEd1bGYgZGVzayBhdCB0aGUgU292aWV0IEZvcmVpZ24gTWluaXN0cnksIHRvbGQgQWwtUmFpIGFsLUFhbSBuZXdzcGFwZXIgTW9zY293ICJ3aWxsIGFuc3dlciBiYWNrIHdpdGggZm9yY2UgYW5kIHZpb2xlbmNlIGlmIElyYW4gYXR0ZW1wdHMgdG8gYXR0YWNrIGFueSBTb3ZpZXQgc2hpcCBvciB0YW5rZXIgaW4gdGhlIEd1bGYuIiBBIFNvdmlldCB0YW5rZXIgaGl0IGEgbWluZSBpbiB0aGUgR3VsZiBsYXN0IG1vbnRoLiAgICAgSXZhbm92IGFsc28gYWNjdXNlZCB0aGUgVW5pdGVkIFN0YXRlcyBvZiBzdGVwcGluZyB1cCB0aGUgcmVnaW9uYWwgY3Jpc2lzIGFuZCBvZiBmYWlsaW5nIHRvIGV4ZXJ0IGdlbnVpbmUgZWZmb3J0cyB0byBlbmQgdGhlIElyYW4tSXJhcSB3YXIuICBSRVVURVIgMzsKMTk4NzA2MDEJTk9SVEhHQVRFIDxOR1g+IFFVRUJFQyBXT1JLRVJTIEVORCBTVFJJS0UgTm9ydGhnYXRlIEV4cGxvcmF0aW9uIEx0ZCBzYWlkIGhvdXJseS1wYWlkIHdvcmtlcnMgYXQgaXRzIHR3byBDaGlib3VnYW1hdSwgUXVlYmVjLCBtaW5lcyB2b3RlZCBvbiB0aGUgd2Vla2VuZCB0byBhY2NlcHQgYSB0aHJlZS15ZWFyIGNvbnRyYWN0IG9mZmVyIGFuZCByZXR1cm5lZCB0byB3b3JrIHRvZGF5IGFmdGVyIGEgb25lLW1vbnRoIHN0cmlrZS4gICAgIEl0IHNhaWQgdGhlIHdvcmtlcnMsIHJlcHJlc2VudGVkIGJ5IFVuaXRlZCBTdGVlbHdvcmtlcnMgb2YgQW1lcmljYSwgd291bGQgcmVjZWl2ZSBhIDEuMjEtZGxyLWFuLWhvdXIgcGF5IHJhaXNlIG92ZXIgdGhlIGxpZmUgb2YgdGhlIG5ldyBjb250cmFjdCBhbmQgaW1wcm92ZWQgYmVuZWZpdHMuICAgICBOb3J0aGdhdGUsIHdoaWNoIHByb2R1Y2VkIDIzLDQwMCBvdW5jZXMgb2YgZ29sZCBpbiBmaXJzdCBxdWFydGVyLCBzYWlkIHRoYXQgd2hpbGUgdGhlIHN0cmlrZSBzbG93ZWQgcHJvZHVjdGlvbiwgIldlIGFyZSBzdGlsbCBsb29raW5nIGZvcndhcmQgdG8gYSB2ZXJ5IHNhdGlzZmFjdG9yeSBwZXJmb3JtYW5jZS4iIFRoZSBDaGlib3VnYW1hdSBtaW5lcyBwcm9kdWNlZCA4MSw1MDAgb3VuY2VzIG9mIGdvbGQgbGFzdCB5ZWFyLiAgUmV1dGVyIDM7CjE5ODcwNjAxCU5PUlRIR0FURSBRVUVCRUMgR09MRCBXT1JLRVJTIEVORCBTVFJJS0UgTm9ydGhnYXRlIEV4cGxvcmF0aW9uIEx0ZCBzYWlkIGhvdXJseS1wYWlkIHdvcmtlcnMgYXQgaXRzIHR3byBDaGlib3VnYW1hdSwgUXVlYmVjIG1pbmVzIHZvdGVkIG9uIHRoZSB3ZWVrZW5kIHRvIGFjY2VwdCBhIG5ldyB0aHJlZS15ZWFyIGNvbnRyYWN0IG9mZmVyIGFuZCByZXR1cm5lZCB0byB3b3JrIHRvZGF5IGFmdGVyIGEgb25lLW1vbnRoIHN0cmlrZS4gICAgIEl0IHNhaWQgdGhlIHdvcmtlcnMsIHJlcHJlc2VudGVkIGJ5IFVuaXRlZCBTdGVlbHdvcmtlcnMgb2YgQW1lcmljYSwgd291bGQgcmVjZWl2ZSBhIDEuMjEgZGxyIGFuIGhvdXIgcGF5IHJhaXNlIG92ZXIgdGhlIGxpZmUgb2YgdGhlIG5ldyBjb250cmFjdCBhbmQgaW1wcm92ZWQgYmVuZWZpdHMuICAgICBOb3J0aGdhdGUsIHdoaWNoIHByb2R1Y2VkIDIzLDQwMCBvdW5jZXMgb2YgZ29sZCBpbiBmaXJzdCBxdWFydGVyLCBzYWlkIHRoYXQgd2hpbGUgdGhlIHN0cmlrZSBzbG93ZWQgcHJvZHVjdGlvbiwgIldlIGFyZSBzdGlsbCBsb29raW5nIGZvcndhcmQgdG8gYSB2ZXJ5IHNhdGlzZmFjdG9yeSBwZXJmb3JtYW5jZS4iICAgICBUaGUgQ2hpYm91Z2FtYXUgbWluZXMgcHJvZHVjZWQgODEsNTAwIG91bmNlcyBvZiBnb2xkIGxhc3QgeWVhci4gIFJldXRlciAzOwoxOTg3MDYwMQlOUFBDIEFQUEVBTCBPTiBDQU5BRElBTiBQT1JLIERJU01JU1NFRCBUaGUgVS5TLiBDb3VydCBvZiBJbnRlcm5hdGlvbmFsIFRyYWRlIGhhcyB1cGhlbGQgdGhlIEludGVybmF0aW9uYWwgVHJhZGUgQ29tbWlzc2lvbidzIHJlZnVzYWwgdG8gZXh0ZW5kIGNvdW50ZXJ2YWlsaW5nIGR1dGllcyBvbiBDYW5hZGlhbiBob2dzIHRvIGluY2x1ZGUgcG9yayBwcm9kdWN0cywgdGhlIE5hdGlvbmFsIFBvcmsgUHJvZHVjZXJzJyBDb3VuY2lsIHNhaWQuICAgICBUaGUgY291cnQncyBydWxpbmcgY2FtZSBpbiBhbiBhcHBlYWwgdG8gdGhlIFRyYWRlIENvbW1pc3Npb24ncyBkZWNpc2lvbiBmaWxlZCBieSB0aGUgUG9yayBQcm9kdWNlcnMnIENvdW5jaWwuICAgICBDb3VuY2lsIHByZXNpZGVudCBUb20gTWlsbGVyIHNhaWQgaGUgd2FzIGRpc2FwcG9pbnRlZCBieSB0aGUgY291cnQgcnVsaW5nIGFuZCBzYWlkIHRoZSBjb3VuY2lsIHdpbGwgYWNjZWxlcmF0ZSBhY3Rpdml0aWVzIGluIHN1cHBvcnQgb2YgYW4gYW1lbmRtZW50IHRvIHRoZSAxOTMwIFRhcmlmZiBBY3QgdGhhdCB3b3VsZCBhZGRyZXNzIHRoZSBvYmplY3Rpb25zIG91dGxpbmVkIGluIHRoZSBUcmFkZSBDb21taXNzaW9uJ3MgcnVsaW5nLiAgICAgVGhlIENvbW1pc3Npb24gaGFkIHNhaWQgdGhlcmUgd2FzIGluc3VmZmljaWVudCBlY29ub21pYyBpbnRlZ3JhdGlvbiBiZXR3ZWVuIHRoZSBwb3JrIHByb2R1Y3Rpb24gaW5kdXN0cnkgYW5kIHRoZSBwb3JrIHBhY2tpbmcgaW5kdXN0cnkgdG8ganVzdGlmeSBleHRlbmRpbmcgdGhlIGR1dHkgb24gbGl2ZSBob2dzIHRvIGZyZXNoLCBjaGlsbGVkIG9yIGZyb3plbiBwb3JrLiAgICAgVGhlIGxlZ2lzbGF0aW9uIGhhcyBhbHJlYWR5IHBhc3NlZCB0aGUgSG91c2Ugb2YgUmVwcmVzZW50YXRpdmVzIGFuZCByZWNlbnRseSBwYXNzZWQgdGhlIFNlbmF0ZSBGaW5hbmNlIENvbW1pdHRlZS4gSXQgaXMgZXhwZWN0ZWQgdG8gYmUgY29uc2lkZXJlZCBieSB0aGUgZnVsbCBTZW5hdGUgYnkgdGhlIGVuZCBvZiB0aGUgc3VtbWVyLiAgICAgQW4gYXBwZWFsIGJ5IHRoZSBDYW5hZGlhbiBQb3JrIENvdW5jaWwgdGhhdCB0aGUgY3VycmVudCBjb3VudGVydmFpbGluZyBkdXR5IG9uIENhbmFkaWFuIGhvZ3MgZW50ZXJpbmcgdGhlIFUuUy4gYmUgbGlmdGVkIGlzIHBlbmRpbmcgYmVmb3JlIHRoZSBDb3VydC4gIFJldXRlciAzOwoxOTg3MDYwMQlPS0xBSE9NQSBDTEVBTklORyBVUCBBRlRFUiBXRUVLIE9GIEZMT09EUywgUkFJTlMgUmVzaWRlbnRzIG9mIGNlbnRyYWwgT2tsYWhvbWEgcmV0dXJuZWQgdG8gdGhlaXIgaG9tZXMgb3ZlciB0aGUgd2Vla2VuZCBhZnRlciBhIHdlZWsgb2YgaGVhdnkgcmFpbnMgYW5kIHNldmVyZSBmbG9vZGluZyB0aGF0IGxlZnQgdHdvIGRlYWQgYW5kIGNhdXNlZCBtb3JlIHRoYW4gMjAgbWxuIGRscnMgaW4gZGFtYWdlLCBvZmZpY2lhbHMgc2FpZC4gICAgIFNvbWUgOTAwIHBlb3BsZSB3ZXJlIGV2YWN1YXRlZCBmcm9tIHRoZWlyIGhvbWVzIGR1cmluZyB0aGUgcmFpbnMgYW5kIGZsb29kaW5nIGxhc3Qgd2VlaywgY2l2aWwgZGVmZW5zZSBvZmZpY2lhbHMgc2FpZC4gICAgIE1hbnkgb2YgdGhlIHNoZWx0ZXJzIHNldCB1cCB0aHJvdWdob3V0IHRoZSBzdGF0ZSBpbiBhcmVhcyB0aHJlYXRlbmVkIGJ5IGZsb29kaW5nLCBleGNlcHQgdGhvc2UgbmVhciB0aGUgV2FzaGl0YSBhbmQgUmVkIFJpdmVycywgY2xvc2VkIGFzIHJlc2lkZW50cyByZXR1cm5lZCB0byB0aGVpciBkYW1hZ2VkIGhvbWVzLiAgICAgRmFybWVycyB3aG8gaGFkIGV4cGVjdGVkIGEgbmVhci1yZWNvcmQgd2hlYXQgY3JvcCBub3cgc2F5IHRoaXMgeWVhciB3aWxsIHNlZSBvbmUgb2YgdGhlIGxhcmdlc3QgbG9zc2VzIGluIGRlY2FkZXMuICAgICBHb3YuIEhlbnJ5IEJlbGxtb24sIHdobyBvbiBUaHVyc2RheSBkZWNsYXJlZCBhIGZsb29kaW5nIGVtZXJnZW5jeSBmb3IgY2VudHJhbCBPa2xhaG9tYSwgd2FzIGV4cGVjdGVkIHRvIGFzayBQcmVzaWRlbnQgUmVhZ2FuIGZvciBmZWRlcmFsIGRpc2FzdGVyIHJlbGllZiBmb3IgdGhlIGFyZWEuICAgICBJbiBub3J0aGVybiBUZXhhcywgb2ZmaWNpYWxzIHJlcG9ydGVkIHNldmVyYWwgdG9ybmFkb2VzIG9uIEZyaWRheS4gQSB0d2lzdGVyIGluIEx1YmJvY2sgeWVzdGVyZGF5IGRhbWFnZWQgc2l4IG1vYmlsZSBob21lcyBhbmQgdHdvIGhvdXNlcy4gTm8gaW5qdXJpZXMgd2VyZSByZXBvcnRlZC4gIFJldXRlciAzOwoxOTg3MDYwMQlQQVkgTicgUEFLIDxQTlA+IEdFVFMgVFdPIE9GRkVSUyBGT1IgQ09NUEFOWSBQYXkgTicgUGFrIFN0b3JlcyBJbmMgc2FpZCBpdCByZWNlaXZlZCB0d28gcHJvcG9zYWxzIGluIHJlc3BvbnNlIHRvIGl0cyBwcmV2aW91c2x5IGFubm91bmNlZCBzb2xpY2l0YXRpb24gb2YgcG90ZW50aWFsIGJ1eWVycyBmb3IgdGhlIGNvbXBhbnkuICAgICBUaGUgY29tcGFueSBzYWlkIGl0IGlzIGV2YWx1YXRpbmcgdGhlIHByb3Bvc2FscyBmcm9tIFBhdWwgQmlsemVyaWFuIGFuZCBmcm9tIGEgdGhpcmQgcGFydHkgd2hpY2ggaXMgYWN0aXZlIGluIHRoZSBsZXZlcmFnZWQgYnV5b3V0IGZpZWxkIGJ1dCB3aGljaCBQYXkgTicgUGFrIGRlY2xpbmVkIHRvIGlkZW50aWZ5LiAgICAgSXQgc2FpZCB0aGUgQmlsemVyaWFuIHByb3Bvc2FsIGNhbGxzIGZvciBzaGFyZWhvbGRlcnMgdG8gcmVjZWl2ZSBvbiBhIGJsZW5kZWQgYmFzaXMgMTYuNjcgZGxycyBpbiBjYXNoIGFuZCAzLjMwIGRscnMgaW4gbGlxdWlkYXRpb24gdmFsdWUgb2YgY3VtdWxhdGl2ZSBleGNoYW5nZWFibGUgcmVkZWVtYWJsZSBwcmVmZXJyZWQgc3RvY2sgZm9yIGVhY2ggY29tbW9uIHNoYXJlLiAgICAgICAgIFBheSBOJyBQYWsgc2FpZCB0aGUgc2Vjb25kIHByb3Bvc2FsIGlzIHN0cnVjdHVyZWQgYXMgYSBtZXJnZXIgaW4gd2hpY2ggZWFjaCBob2xkZXIgd291bGQgcmVjZWl2ZSBhIGNvbWJpbmF0aW9uIG9mIDE3LjUwIGRscnMgaW4gY2FzaCBhbmQgMi41MCBkbHJzIGluIGxpcXVpZGF0aW9uIHZhbHVlIG9mIDEzLTEvMiBwY3QgY3VtdWxhdGl2ZSBwcmVmZXJyZWQuICAgICBUaGUgY29tcGFueSBzYWlkIHRoZSBkaXZpZGVuZCBvbiB0aGUgcHJlZmVycmVkIG9mZmVyZWQgYnkgQmlsemVyaWFuIHdvdWxkIGJlIHNldCBzbyB0aGF0IGluIHRoZSBvcGluaW9uIGhpcyBmaW5hbmNpYWwgYWR2aXNvciBhbmQgdGhlIGNvbXBhbnkncyBmaW5hbmNpYWwgYWR2aXNvciB0aGUgcHJlZmVycmVkIHdvdWxkIHRyYWRlIGluIHRoZSBwdWJsaWMgbWFya2V0IGF0IGl0cyBsaXF1aWRhdGlvbiB2YWx1ZS4gICAgIERpdmlkZW5kcyBvbiB0aGUgcHJlZmVycmVkIGNvdWxkIGJlIHBhaWQgYXQgdGhlIG9wdGlvbiBvZiB0aGUgc3Vydml2aW5nIGNvcnBvcmF0aW9uIGluIGNhc2ggb3IgYWRkaXRpb25hbCBzaGFyZXMgb2YgcHJlZmVycmVkIGZvciB0aGUgZmlyc3QgZml2ZSB5ZWFycywgaXQgYWRkZWQuLiAgICAgICAgIFBheSBOJyBQYWsgc2FpZCBCaWx6ZXJpYW4ncyBwcm9wb3NhbCBpcyBzdWJqZWN0IHRvIGEgcGh5c2ljYWwgaW52ZW50b3J5IG9mIG1lcmNoYW5kaXNlIGF0IEp1bmUgMzAuIEJpbHplcmlhbiBkaWQgbm90IHByb3ZpZGUgZGV0YWlscyB3aXRoIHJlc3BlY3QgdG8gZmluYW5jaW5nIG9mIGhpcyBwcm9wb3NhbCwgd2hpY2ggaXMgbm90IHN1YmplY3QgdG8gYSBmaW5hbmNpbmcgY29uZGl0aW9uLiAgICAgVGhlIGNvbXBhbnkgc2FpZCBkaXZpZGVuZHMgb24gdGhlIHByZWZlcnJlZCBiZWluZyBvZmZlcmVkIGluIHRoZSBzZWNvbmQgcHJvcG9zYWwgd291bGQgYmUgcGFpZCBpbiBhZGRpdGlvbmFsIHByZWZlcnJlZCBpbiB0aGUgZmlyc3QgdGhyZWUgeWVhcnMgYW5kIHRoZSBwcmVmZXJyZWQgd291bGQgYmUgcmVkZWVtZWQgaW4geWVhcnMgMTIgYW5kIDEzLiAgICAgSXQgc2FpZCB0aGUgc2Vjb25kIG9mZmVyIGlzIGNvbnRpbmdlbnQgb24gdGhlIGFycmFuZ2VtZW50IG9mIGZpbmFuY2luZywgYWRkaW5nIHRoZSBwYXJ0eSBtYWtpbmcgdGhlIG9mZmVyIGlzIGNvbmZpZGVudCBvZiBpdHMgYWJpbGl0eSB0byBvYnRhaW4gdGhlIGJhbGFuY2Ugb2YgdGhlIGZpbmFuY2luZy4gICAgICAgICBQYXkgTicgUGFrIHNhaWQgdGhlIHNlY29uZCBwcm9wb3NhbCBpcyBjb25kaXRpb25lZCB1cG9uIGEgc2F0aXNmYWN0b3J5IGFncmVlbWVudCB3aXRoIHRoZSBjb21wYW55J3MgbWFuYWdlbWVudCByZWdhcmRpbmcgaXRzIGVxdWl0eSBwYXJ0aWNpcGF0aW9uIGluIHRoZSBuZXcgY29tcGFueS4gICAgIFRoZSBzZWNvbmQgcGFydHkgYW50aWNpcGF0ZXMgZXhlY3V0aW5nIGEgbGV0dGVyIG9mIGludGVudCB3aGVuIGl0IGRlbGl2ZXJzIGl0cyBmaW5hbmNpbmcgY29tbWl0bWVudCB0byB0aGUgUGF5IE4nIFBhayBib2FyZCB0aGF0IHdvdWxkIGluY29ycG9yYXRlIGFuIGV4cGVuc2UgcmVpbmJ1cnNlbWVudCBhbmQgb3B0aW9uIGFycmFuZ2VtZW50LCB0aGUgY29tcGFueSBzYWlkLiAgUmV1dGVyIDM7CjE5ODcwNjAxCVBFTUVYIE9GRklDSUFMIFNBWVMgT1BFQyBPVVRQVVQgQ1JJVElDQUwgVE8gUFJJQ0UgQ3J1ZGUgb2lsIHByaWNlcyBjb3VsZCByZW1haW4gYXJvdW5kIDE4IGRscnMgYSBiYXJyZWwgdW50aWwgdGhlIGVuZCBvZiB0aGUgeWVhciwgYnV0IE9QRUMncyBkZWNpc2lvbiBvbiBvdXRwdXQgYXQgaXRzIG5leHQgbWVldGluZyB3b3VsZCBiZSB0aGUgY3JpdGljYWwgZmFjdG9yLCBhbiBvZmZpY2lhbCBvZiBNZXhpY28ncyBzdGF0ZSBvaWwgY29tcGFueSwgUGV0cm9sZW9zIE1leGljYW5vcyAoUGVtZXgpLCB0b2xkIGEgZ3JvdXAgb2YgSmFwYW5lc2UgYnVzaW5lc3NtZW4uICAgICBBZHJpYW4gTGFqb3VzLCBQZW1leCcgZXhlY3V0aXZlIHZpY2UgcHJlc2lkZW50IG9mIGludGVybmF0aW9uYWwgdHJhZGUsIHNhaWQgY3VycmVudCBPUEVDIG91dHB1dCBhbHJlYWR5IGFwcGVhcmVkIHRvIGJlIHZlcnkgbmVhciB0aGUgMTYuNiBtbG4gYmFycmVsIHBlciBkYXkgbGV2ZWwgaXQgc2V0IGl0c2VsZiBmb3IgdGhlIHRoaXJkIHF1YXJ0ZXIuICJQcm9kdWN0aW9uIGlzIHN1cmdpbmcgYWhlYWQgb2Ygd2hhdCB3YXMgb3JpZ2luYWxseSBwbGFubmVkLCB3aGlsZSBkZW1hbmQgaXMgZ3Jvd2luZyBtb3JlIHNsb3dseSB0aGFuIGVudmlzYWdlZCBhIGZldyBtb250aHMgYWdvLCIgaGUgc2FpZC4gICAgIEhlIHNhaWQgT1BFQyBoYWQgdG8gbG9vayB2ZXJ5IGNhcmVmdWxseSBhdCB3aGF0IGxldmVsIG9mIHByb2R1Y3Rpb24gaW4gdGhlIHRoaXJkIHF1YXJ0ZXIgd291bGQgZWZmZWN0aXZlbHkgc3VzdGFpbiB0aGUgMTggZGxycyBwcmljZSwgYW5kIHRoYXQgYW4gaW5jcmVhc2UgdG8gd2hhdCBoYWQgb3JpZ2luYWxseSBiZWVuIGVudmlzYWdlZCBtaWdodCBzb2Z0ZW4gcHJpY2UgbGV2ZWxzLiAgICAgVGhlIDEzLW1lbWJlciBjYXJ0ZWwgaXMgc2NoZWR1bGVkIHRvIG1lZXQgb24gSnVuZSAyNSBpbiBWaWVubmEgdG8gcmV2aWV3IGl0cyBEZWNlbWJlciBhY2NvcmQgb24gcHJpY2VzIGFuZCBvdXRwdXQuICAgICAiSSBob3BlIE9QRUMgd2lsbCBmb2xsb3cgYSB2ZXJ5IGNvbnNlcnZhdGl2ZSBhdHRpdHVkZSBpbiB0ZXJtcyBvZiB2b2x1bWUgZGVjaXNpb25zLCIgTGFqb3VzIHNhaWQuICAgICBBIHJlcGV0aXRpb24gb2Ygd2hhdCBoYXBwZW5lZCBsYXN0IHllYXIsIHdoZW4gT1BFQyBib29zdGVkIG91dHB1dCBhbmQgc2VudCBvaWwgcHJpY2VzIHR1bWJsaW5nIGRvd24gYmVsb3cgMTAgZGxycywgaXMgYWx3YXlzIHRoZXJlIGFzIGEgcG9zc2liaWxpdHksIGhlIHNhaWQuICAgICAiSSBob3BlIG5ldmVyIGFnYWluIHRvIGdvIHRocm91Z2ggdGhlIHRyYXVtYSBvZiAxOTg2LiBJIGV4cGVjdCBvdGhlciBvaWwgZXhwb3J0ZXJzIGhhdmUgbGVhcm5lZCB0aGVpciBsZXNzb25zIGFuZCBkaXNjaXBsaW5lIHdpbGwgYmUgbWFpbnRhaW5lZCwiIGhlIHNhaWQuICAgICBMYWpvdXMgc2FpZCB0aGVyZSB3YXMgc3RpbGwgZXhjZXNzIHN1cHBseSBhbmQgYXMgbG9uZyBhcyB0aGlzIHJlbWFpbnMgdGhlcmUgd2lsbCBiZSBhIHRlbmRlbmN5IHRvIGluc3RhYmlsaXR5IGluIG9pbCBtYXJrZXRzLCBidXQgcHJpY2VzIHNob3VsZCByZW1haW4gYXJvdW5kIDE4IHRvIDE5IGRscnMgZHVyaW5nIDE5ODcgaWYgb3V0cHV0IHJlbWFpbnMgdW5kZXIgY29udHJvbC4gICAgIEhlIHNhaWQgU2F1ZGkgS2luZyBGYWhkJ3MgcmVtYXJrcyBsYXN0IG1vbnRoLCB0aGF0IGluY3JlYXNlZCBwcm9kdWN0aW9uIHdhcyBub3Qgc28gaW1wb3J0YW50IGFzIGxvbmcgYXMgaW5jb21lcyB3b3VsZCBub3QgYmUgYWZmZWN0ZWQgYnkgdGhlIG91dHB1dCwgd2VyZSAidmVyeSByZWxldmFudCBhbmQgd2VsY29tZSBmcm9tIHN1Y2ggYSBwb3dlcmZ1bCBwcm9kdWNlci4iICBSRVVURVIgMzsKMTk4NzA2MDEJUEhBUk1BQ09OVFJPTCA8UEhBUi5PPiBBQ1FVSVJFUyBSRVZDTyBVTklUIFBoYXJtYUNvbnRyb2wgQ29ycCBzYWlkIGl0IGFjcXVpcmVkIFByaXZhdGUgRm9ybXVsYXRpb25zIEluYyBmcm9tIDxSZXZjbyBELlMuIEluYz4gZm9yIHNpeCBtbG4gZGxycyBpbiBjYXNoLCBhIDEzLDU1MCwwMDAgZGxyIHByb21pc3Nvcnkgbm90ZSBhbmQgd2FycmFudHMgdG8gYnV5IDIwMCwwMDAgUGhhcm1hQ29udHJvbCBjb21tb24gc2hhcmVzLiAgICAgUGhhcm1hQ29udHJvbCBzYWlkIHRoZSBwdXJjaGFzZSBwcmljZSB3YXMgZmluYW5jZWQsIGFsb25nIHdpdGggb25lIG1sbiBkbHJzIGluIHdvcmtpbmcgY2FwaXRhbCwgdGhyb3VnaCBzZWN1cmVkIGluc3RpdHV0aW9uYWwgZmluYW5jaW5nLiAgICAgVGhlIGNvbXBhbnkgc2FpZCBiZXR3ZWVubSAxMSw1NTAsMDAwIGRscnMgYW5kIDEyLDU1MCwwMDAgZGxycyBmIHRoZSBwcmluY2lwYWwgYW1vdW50IG9mIHRoZSBSZXZjbyBub3RlLCBwbHVzIGFjY3J1ZWQgaW50ZXJlc3QsIGlzIHBheWFibGUgSnVuZSAzMC4gVGhlIGJhbGFuY2UgaXMgcGF5YWJsZSBvdmVyIHRocmVlIHllYXJzLiAgICAgUGhhcm1hQ29udHJvbCBzYWlkIGl0IGV4cGVjdHMgdG8gbWFrZSB0aGUgcGF5bWVudCBkdWUgdG8gUmV2Y28gZnJvbSBwcm9jZWVkcyBvZiBhIHByb3Bvc2VkIG9mZmVyaW5nIG9mIHVuaXRzIGNvbnNpc3Rpbmcgb2YgY29udmVydGlibGUgc3Vib3JkaW5hdGVkIGRlYmVudHVyZXJzIGFuZCBjb21tb24gc3RvY2sgY3VycmVudGx5IG9uIGZpbGUgd2l0aCB0aGUgU2VjdXJpdGllcyBhbmQgRXhjaGFuZ2UgQ29tbWlzc2lvbi4gICAgIFVwb24gY2xvc2luZyBvZiB0aGUgcHVibGljIG9mZmVyaW5nLCB0aGUgY29tcGFueSBzYWlkLCBpdCBleHBlY3RzIHRoZSBzZWN1cmVkIGluc3RpdHV0aW9uYWwgZmluYW5jaW5nIHRvIGluY3JlYXNlIHRvIGEgdG90YWwgb2YgMTIgbWxuIGRscnMuICAgICBQcml2YXRlIEZvcm11bGF0aW9ucyBpcyBwcmltYXJpbHkgZW5nYWdlZCBpbiB0aGUgbWFudWZhY3R1cmUgYW5kIGRpc3RyaWJ1dGlvbiBvZiB2aXRhbWlucyBhbmQgcHJpdmF0ZSBsYWJlbCBvdmVyLXRoZS1jb3VudGVyIHBoYXJtYWNldXRpY2FsIHByb2R1Y3RzLiAgUmV1dGVyIDM7CjE5ODcwNjAxCVBISUxJUCBDUk9TQlkgPFBDUk8uTz4gTUFLRVMgQUNRVUlTSVRJT04gUGhpbGlwIENyb3NieSBBc3NvY2lhdGVzIEluYyBzYWlkIGl0IGhhcyBhZ3JlZWQgdG8gYWNxdWlyZSBQcm9jZXNzIEludGVncml0eSBJbmMgb2YgRGFsbGFzLCBhIGNvbXB1dGVyIHNvZnR3YXJlIGRlc2lnbmVyLCBmb3IgdW5kaXNjbG9zZWQgdGVybXMuICAgICBJdCBzYWlkIFByb2Nlc3MnIHNvZnR3YXJlIGhlbHBzIGNvbXBhbmllcyBtb25pdG9yIGluZHVzdHJpYWwgcHJvY2Vzc2VzLCBpZGVudGlmaWVzIHByb2JsZW1zIGFuZCByZWNvbW1lbmRzIHNvbHV0aW9ucy4gIFJldXRlciAzOwoxOTg3MDYwMQlQSElMSVBQSU5FIENPQ09OVVQgQ0hJRUYgVE8gTE9CQlkgQUdBSU5TVCBFQyBUQVggUGhpbGlwcGluZSBDb2NvbnV0IEF1dGhvcml0eSAoUENBKSBjaGFpcm1hbiBKb3NlIFJvbWVybyBzYWlkIGhlIHdvdWxkIHZpc2l0IEJydXNzZWxzIGxhdGVyIHRoaXMgbW9udGggdG8gbG9iYnkgYWdhaW5zdCBhIHByb3Bvc2VkIDEwMCBwY3QgRXVyb3BlYW4gQ29tbXVuaXR5IChFQykgbGV2eSBvbiB2ZWdldGFibGUgb2lsIGltcG9ydHMuICAgICAiSSBpbnRlbmQgdG8gdmlzaXQgQnJ1c3NlbHMgYW5kIHRhbGsgdG8gd2hvZXZlciBpcyBwdXR0aW5nIHVwIHRoaXMgZGV2aWxpc2ggc2NoZW1lIHRvIGltcG92ZXJpc2ggdGhpcmQgd29ybGQgY291bnRyaWVzIGxpa2UgdGhlIFBoaWxpcHBpbmVzLCIgUm9tZXJvIHNhaWQgaW4gYW4gaW50ZXJ2aWV3LiAgICAgSGUgc2FpZCBoZSBkaWQgbm90IGtub3cgaG93IG11Y2ggc3VwcG9ydCB0aGUgbGV2eSBoYWQgd2l0aGluIHRoZSBFQyBidXQgaGUgc2FpZCBoZSBiZWxpZXZlZCB0aG9zZSBvcmlnaW5hbGx5IG9wcG9zZWQgdG8gdGhlIHRheCB3ZXJlIHVuZGVyIHByZXNzdXJlIHRvIGNoYW5nZSB0aGVpciBwb3NpdGlvbi4gICAgIFJvbWVybyBzYWlkIGEgZ3JvdXAgb2YgRUMgbWVtYmVycyBsZWQgYnkgV2VzdCBHZXJtYW55LCB0aGUgTmV0aGVybGFuZHMsIERlbm1hcmsgYW5kIE5vcndheSB3ZXJlIG9wcG9zZWQgdG8gdGhlIHRheC4gQnV0IHRoZXJlIHdhcyBhIGRhbmdlciBzb21lIG9mIHRoZW0gd291bGQgYmUgcGVyc3VhZGVkIHRvIGNoYW5nZSBzaWRlcywgYW5kIGlmIHRoYXQgaGFwcGVuZWQgb3Bwb3NpdGlvbiBjb3VsZCBjcnVtYmxlLiAgICAgUm9tZXJvIHNhaWQgYW5vdGhlciB0aHJlYXQgdG8gZXhwb3J0cyBsYXkgaW4gYW4gRUMgd2FybmluZyB0aGF0IGNvcHJhIG1lYWwgY2FrZSB1c2VkIGluIGxpdmVzdG9jayBmZWVkcyBjb250YWluZWQgZGFuZ2Vyb3VzIGxldmVscyBvZiBhZmxhdG94aW4sIGEgY2FyY2lub2dlbmljIGNoZW1pY2FsLiAgICAgSGUgc2FpZCB0aGUgRUMgc3RhbmRhcmQgb2YgMC4wMiBwYXJ0cyBvZiBhZmxhdG94aW4gcGVyIG1pbGxpb24gcGFydHMgb2YgbWVhbCwgd2hpY2ggRUMgY291bnRyaWVzIGhhZCBiZWVuIGFza2VkIHRvIGFwcGx5IGJ5IE9jdG9iZXIgMTk4OCwgd2FzIHRvbyByaWdpZC4gSGUgc2FpZCBQaGlsaXBwaW5lIGNvcHJhIGNha2UgY29udGFpbmVkIG11Y2ggaGlnaGVyIGxldmVscyBvZiBhZmxhdG94aW4uICAgICBBZmxhdG94aW4gY29tZXMgZnJvbSBtb3VsZHMgd2hpY2ggZGV2ZWxvcCBpbiBjb3ByYSB3aGVuIGl0IGlzIG5vdCBwcm9wZXJseSBkcmllZCBvciBncm91bmQuICAgICBSb21lcm8gc2FpZCBoZSB3b3VsZCB0ZWxsIGJpZyBidXllcnMgb2YgY29wcmEgbWVhbCBpbiBMb25kb24gdGhhdCB0aGUgUGhpbGlwcGluZXMgd2FzIGRvaW5nIGl0cyBiZXN0IHRvIG1lZXQgRUMgc3RhbmRhcmRzLiBJdCB3YXMgYWxzbyB0cnlpbmcgdG8gZWxpbWluYXRlIGFmbGF0b3hpbiB0b3RhbGx5LCBidXQgdGhpcyB3YXMgbGlrZWx5IHRvIHRha2Ugc2V2ZXJhbCB5ZWFycyBvZiByZXNlYXJjaC4gICAgIENvcHJhIG1lYWwgZXhwb3J0cyB3ZXJlIDgxNyw2NDEgdG9ubmVzIG9yIDM1IHBjdCBvZiB0b3RhbCBjb2NvbnV0IGV4cG9ydHMgaW4gMTk4Ni4gVGhlIG1lYWwgd2FzIHdvcnRoIDczLjUgbWxuIGRscnMuICAgICBSb21lcm8gc2FpZCBoZSB3b3VsZCBhbHNvIHZpc2l0IE94Zm9yZCBVbml2ZXJzaXR5J3MgZGVwYXJ0bWVudCBvZiBhZ3JpY3VsdHVyYWwgZWNvbm9taWNzIHRvIGRpc2N1c3Mgd2F5cyBvZiBhdm9pZGluZyB0aGUgY29wcmEgcHJvY2VzcyBhbHRvZ2V0aGVyLiAgICAgIlRoZXJlIGFyZSB3YXlzIG9mIHByb2R1Y2luZyBjb2NvbnV0IHByb2R1Y3RzIG91dHNpZGUgb2YgY29wcmEsIiBSb21lcm8gc2FpZC4gIldlIGNhbiBwcm9jZXNzIGZyZXNoIGNvY29udXQgd2l0aG91dCBkcnlpbmcgdGhlIG1lYXQgaW4gdGhlIHN1bi4gVGhyb3VnaCB0aGUgd2V0IHByb2Nlc3Mgd2UgY2FuIHByb2Nlc3MgY29jb251dHMgaW50byBvdGhlciBmb29kIG9yIG5vbi1mb29kIHByb2R1Y3RzLCBvciB3ZSBjYW4gZ28gdG8gdGhlIGNoZW1pY2FsIHJvb3QuIiAgICAgSGUgc2FpZCB0aGVyZSB3YXMgYSB0ZW5kZW5jeSBmb3IgYWdyaWN1bHR1cmFsIGNvdW50cmllcyB0byBiZWNvbWUgbW9yZSBwcm90ZWN0aW9uaXN0IGFuZCBoZSBleHBlY3RlZCBleHBvcnQgcHJpY2VzIG9mIGNvY29udXQgcHJvZHVjdHMgdG8gZHJvcC4gICAgICJJbiB0aGUgbG9uZyB0ZXJtIHdlIHdpbGwgYmUgZ2V0dGluZyBsZXNzIGFuZCBsZXNzIGZvciBtb3JlIGFuZCBtb3JlIHByb2R1Y3Rpb24sIGFuZCBJJ20gbm90IGNvbWZvcnRhYmxlIHdpdGggdGhhdCwiIGhlIHNhaWQuICAgICBXaXRoIGNvdW50cmllcyBsaWtlIEluZG9uZXNpYSBhbmQgTWFsYXlzaWEgc3RlcHBpbmcgdXAgcHJvZHVjdGlvbiBvZiBwYWxtIG9pbCwgYSBjb2NvbnV0IG9pbCBzdWJzdGl0dXRlLCBwYWxtIG9pbCBvdXRwdXQgaGFkIHJpc2VuIG5lYXJseSA3MCBwY3Qgc2luY2UgMTk3MSwgUm9tZXJvIHNhaWQuICAgICAiVG8gYWRkIHRvIHRoYXQgdGhlIFUuUy4gU295YmVhbiBBc3NvY2lhdGlvbiBpcyBzcGVuZGluZyBiaWxsaW9ucyBvZiBkb2xsYXJzIHRvIGRpc2NyZWRpdCBwYWxtIG9pbCBhbmQgY29jb251dCBvaWwgYnkgc2F5aW5nIHRoYXQgdGhleSBhcmUgcG9seXNhdHVyYXRlZCBmYXRzIGFuZCBiYWQgZm9yIHRoZSBoZWFydCwiIGhlIHNhaWQuICAgICBSb21lcm8gc2FpZCBoZSBleHBlY3RlZCBjb2NvbnV0IHByb2R1Y3QgZXhwb3J0IHByaWNlcyB0byBzdGF5IHVwIGZvciB0aGUgcmVzdCBvZiB0aGUgeWVhci4gVGhleSB3b3VsZCBwcm9iYWJseSB0b3VjaCBhIGhpZ2ggb2YgMjAgY2VudHMvcG91bmQgZnJvbSB0aGUgY3VycmVudCBsZXZlbCBvZiAxOC41OSBjZW50cywgYW5kIGEgc2hhcnAgcmlzZSBmcm9tIHllYXItYWdvIGxldmVscyBvZiAxMC41MCBjZW50cy4gICAgIFJvbWVybyBzYWlkIHRoZSBQaGlsaXBwaW5lcyB3YXMgYXQgdGhlIGVuZCBvZiBhIGZpdmUteWVhciBjb2NvbnV0IHByb2R1Y3Rpb24gY3ljbGUgd2hpY2ggc2hvd2VkIHByb2R1Y3Rpb24gdGVuZGVkIHRvIGZhbGwgYWZ0ZXIgdHdvIHN1Y2Nlc3NpdmUgeWVhcnMgb2YgZ29vZCBoYXJ2ZXN0cy4gICAgIEhlIHNhaWQgMTk4NSBhbmQgMTk4NiB3ZXJlIGdvb2QgaGFydmVzdHMgYW5kIHRoaXMgeWVhciwgdG8gYWRkIHRvIHRoZSBwcm9kdWN0aW9uIGZhbGwsIGRyb3VnaHQgaGFkIGFmZmVjdGVkIG91dHB1dC4gICAgICJUcmFkZXJzIGFyZSBzdG9ja2luZyB1cCBhbmQgd2hlbiB0aGV5IGhhdmUgb3ZlcmJvdWdodCB0aGUgcHJpY2VzIHdpbGwgc3RhcnQgZGVjbGluaW5nIGFnYWluLiBUaGUgb25seSBzdXJlIHdheSB0byBrZWVwIHByaWNlcyBzdGFibGUgaXMgYnkgcHJvY2Vzc2luZywgYWRkaW5nIG1vcmUgdmFsdWUsIiBoZSBzYWlkLiAgICAgQ29jb251dCBmYXJtZXJzIHdlcmUgYmVpbmcgZW5jb3VyYWdlZCB0byBpbnRlcmNyb3AgYnkgcGxhbnRpbmcgb3RoZXIgY2FzaCBjcm9wcyBiZXR3ZWVuIGNvY29udXQgdHJlZXMsIGhlIHNhaWQuICAgICAiQSB0eXBpY2FsIGZhcm0gbWF5IGhhdmUgZnJvbSAxMDAgdG8gMTUwIHRyZWVzIHNpdHRpbmcgb24gMTAsMDAwIHNxdWFyZSBtZXRyZXMgb2YgbGFuZC4gVGhhdCdzIGEgbG90IG9mIHNwYWNlLCIgUm9tZXJvIHNhaWQuIEhlIHNhaWQgdGhlIGdvdmVybm1lbnQncyBwcm9wb3NlZCBsYW5kIHJlZm9ybSBwcm9ncmFtIHdvdWxkIGV4Y2x1ZGUgYWJvdXQgNzUgcGN0IG9mIHRoZSBjb2NvbnV0IGZhcm1lcnMgYmVjYXVzZSB0aGV5IGhhZCBsZXNzIHRoYW4gdGhlIHByb3Bvc2VkIHNldmVuLWhlY3RhcmVzIG9mIGxhbmQuICAgICAiSWYgdGhlIGlkZWEgb2YgbGFuZCByZWZvcm0gaXMgdG8gaW5jcmVhc2UgaW5jb21lIGxldmVscywgcHJvZHVjdGlvbiBhbmQgZW1wbG95bWVudCB0aGVuIGl0IHdvbid0IGhhcHBlbiwiIGhlIHNhaWQuICAgICBQQ0EgZmlndXJlcyBzaG93IGFib3V0IG9uZS10aGlyZCBvZiB0aGUgY291bnRyeSdzIHBvcHVsYXRpb24gaXMgZGVwZW5kZW50IG9uIHRoZSBjb2NvbnV0IGluZHVzdHJ5LiAgICAgQ29jb251dHMgYXJlIHBsYW50ZWQgb24gYWJvdXQgMy4yIG1sbiBoZWN0YXJlcyBvciBvbmUtZm91cnRoIG9mIHRvdGFsIGFncmljdWx0dXJhbCBsYW5kLiAgUkVVVEVSIDM7CjE5ODcwNjAxCVBJT1NFQyA8UElPLkFMPiBBQ1FVSVJFUyBTRU1JQ09ORFVDVE9SIFNUQUtFIFBpb3NlYyBUZWNobm9sb2d5IEx0ZCBzYWlkIGl0IGV4Y2hhbmdlZCA0LjUgbWxuIGNvbW1vbiBzaGFyZXMgZm9yIDIxIHBjdCBvZiBwcml2YXRlbHkgb3duZWQgPEFsbGlhbmNlIFNlbWljb25kdWN0b3IgQ29ycD4gb2YgU2FudGEgQ2xhcmEsIENhbGlmLiAgICAgRm9sbG93aW4gdGhlIGFjcXVpc2l0aW9uLCBhIFBpb3NlYyBzcG9rZXNtYW4gc2FpZCwgdGhlIGNvbXBhbnkgaGFzIDYuNSBtbG4gc2hhcmVzIG91dHN0YW5kaW5nLiAgUmV1dGVyIDM7CjE5ODcwNjAxCVBPUkVYIDxQT1JYLk8+IFRPIE1FUkdFIFdJVEggTUVEQ08gPE1DQ1MuTz4gUG9yZXggVGVjaG5vbG9naWVzIENvcnAgc2FpZCBpdCBoYXMgYWdyZWVkIHRvIG1lcmdlIHdpdGggaXRzIHBhcnRseS1vd25lZCBzdWJzaWRpYXJ5IE1lZGNvIENvbnRhaW5tZW50IFNlcnZpY2VzIEluYyBpbiBhIGRlYWwgd29ydGggYWJvdXQgMzgwIG1sbiBkbHJzIGluIGNhc2ggYW5kIGNvbW1vbiBzdG9jayB0byBQb3JleCBzaGFyZWhvbGRlcnMuICAgICBUaGUgY29tcGFueSBzYWlkIHVuZGVyIHRoZSBhZ3JlZW1lbnQsIFByZXggaG9sZGVycyB3b3VsZCByZWNlaXZlIG5ldyBNZWRjbyBzaGFyZXMgcmVwcmVzZW50aW5nIGEgcHJvIHJhdGEgc2hhcmUgb2YgdGhlIDksMTU5LDU1MiBNZWRjbyBzaGFyZXMgbm93IG93bmVkIGJ5IFBvcmV4IHBsdXMgYSBwcm8gcmF0YSBzaGFyZXMgb2YgdGhlIGNhc2ggdmFsdWUgb2Ygb3RoZXIgcG9yZXggYXNzZXRzLCB3aGljaCBpcyBlc3RpbWF0ZWQgYXQgNjAgbWxuIGRscnMgc3ViamVjdCB0byBhZGp1c3RtZW50LiAgICAgTWVkY28gbm93IGhhcyAxNi45IG1sbiBzaGFyZXMgb3V0c3RhbmRpbmcuICAgICBXaGlsZSBleGFjdCB0ZXJtcyBtYXkgbm90IGJlIGRldGVybWluZWQgdW50aWwgdGhlIHRyYW5zYWN0aW9uIGJlY29tZXMgZWZmZWN0aXZlLCBQb3JleCBzYWlkIGVhY2ggUG9yZXggc2hhcmUgaXMgZXhwZWN0ZWQgdG8gYmUgZXhjaGFuZ2VkIGZvciAwLjgyIE1lZGNvIHNoYXJlIGFuZCA1LjM4IGRscnMgaW4gY2FzaCwgc3ViamVjdCB0byBhcHByb3ZhbCBieSBzaGFyZWhvaWxkZXJzIG9mIGJvdGggY29tcGFuaWVzLiBBcyBwYXJ0IG9mIHRoZSBkZWFsLCBNZWRjbyB3aWxsIHNwbGl0IGl0cyBzdG9jayBmaXZlIGZvciB0d28uICAgICBUaGUgY29tcGFueSBzYWlkIHRoZSBtZXJnZXIgd2lsbCBiZSBhY2NvdW50ZWQgZm9yIGFzIGEgY29ycG9yYXRlIHJlb3JnYW5pemF0aW9uIGFuZCBiZSByZWNvcmRlZCBhdCBoaXN0b3JpY2FsIGJvb2sgdmFsdWVzLiAgUmV1dGVyIDM7CjE5ODcwNjAxCVJBVkVOIElORFVTVFJJRVMgPFJBVj4gQlVZUyBUUlVDSyBCT0RZIEJVU0lORVNTIFJhdmVuIEluZHVzdHJpZXMgSW5jIHNhaWQgaXQgcHVyY2hhc2VkIHRoZSB1dGlsaXR5IHRydWNrIGJvZHkgYnVzaW5lc3Mgb2YgKEFzdG9yaWEgRmlicmEtU3RlZWwsIEluYykgZm9yIGNhc2guICAgICBEZXRhaWxzIG9mIHRoZSB0cmFuc2FjdGlvbiB3ZXJlIG5vdCBkaXNjbG9zZWQuICAgICBUaGUgQXN0b3JpYSBwcm9kdWN0IGxpbmUsIHdoaWNoIGhhcyBhbm51YWwgc2FsZXMgb2YgYWJvdXQgMi41IG1sbiBkbHJzLCB3aWxsIGJlIG1hbnVmYWN0dXJlZCBhbmQgc29sZCBieSBSYXZlbidzIG5ld2x5IGZvcm1lZCBzdWJzaWRpYXJ5LCBBc3RvcmlhIEluZHVzdHJpZXMgSW5jLCBSYXZlbiBzYWlkLiBJdHMgR2xhc3N0aXRlIEluYyBzdWJzaWRpYXJ5IGFsc28gbWFudWZhY3R1cmVzIGFuZCBzZWxscyB1dGlsaXR5IHRydWNrIGJvZGllcy4gICBSZXV0ZXIgMzsKMTk4NzA2MDEJUkVBR0FOIEhJTlRTIFUuUy4gV0FOVFMgSEVMUCBJTiBQQVRST0xMSU5HIEdVTEYgUHJlc2lkZW50IFJlYWdhbiBzYWlkIGhlIHdvdWxkIGRpc2N1c3MgdGhlIE1pZGVhc3QgR3VsZiBzaXR1YXRpb24gd2l0aCBhbGxpZWQgbGVhZGVycyBhdCBuZXh0IHdlZWsncyBWZW5pY2UgZWNvbm9taWMgc3VtbWl0IGFuZCBoaW50ZWQgaGUgd291bGQgc2VlayB0aGVpciBoZWxwIGluIHByZXNlcnZpbmcgZnJlZSBuYXZpZ2F0aW9uLiAgICAgSW4gYSBzcGVlY2ggcHJlcGFyZWQgZm9yIGRlbGl2ZXJ5IGFzIHRoZSBVbml0ZWQgU3RhdGVzIG1hZGUgcGxhbnMgdG8gcHJvdGVjdCAxMSBLdXdhaXRpIG9pbCB0YW5rZXJzIGZyb20gSXJhbmlhbiBhdHRhY2ssIFJlYWdhbiBzYWlkIHRoZSBBbWVyaWNhbiBwZW9wbGUgd2VyZSBhd2FyZSB0aGF0ICJpdCBpcyBub3Qgb3VyIGludGVyZXN0cyBhbG9uZSB0aGF0IGFyZSBiZWluZyBwcm90ZWN0ZWQuIiAgICAgU2F5aW5nIHRoYXQgYWxsaWVkIGRlcGVuZGVuY2Ugb24gZ3VsZiBvaWwgd2FzIG5vIHNlY3JldCwgUmVhZ2FuIGRlY2xhcmVkLCAiRHVyaW5nIHRoZSB1cGNvbWluZyBzdW1taXQgaW4gVmVuaWNlLCB3ZSB3aWxsIGJlIGRpc2N1c3NpbmcgdGhlIGNvbW1vbiBzZWN1cml0eSBpbnRlcmVzdHMgc2hhcmVkIGJ5IHRoZSB3ZXN0ZXJuIGRlbW9jcmFjaWVzIGluIHRoZSBNSURFQVNUIEd1bGYuICAgICAiVGhlIGZ1dHVyZSBiZWxvbmdzIHRvIHRoZSBicmF2ZS4gRnJlZSBtZW4gc2hvdWxkIG5vdCBjb3dlciBiZWZvcmUgc3VjaCBjaGFsbGVuZ2VzLCBhbmQgdGhleSBzaG91bGQgbm90IGV4cGVjdCB0byBzdGFuZCBhbG9uZS4iICAgICBSZWFnYW4gd2lsbCBtZWV0IHRoZSBsZWFkZXJzIG9mIEJyaXRhaW4sIEZyYW5jZSwgV2VzdCBHZXJtYW55LCBJdGFseSwgQ2FuYWRhIGFuZCBKYXBhbiBhdCB0aGUgZWNvbm9taWMgc3VtbWl0LCB3aGljaCB3aWxsIHRha2UgcGxhY2UgaW4gVmVuaWNlIEp1bmUgOC0xMC4gICAgICAgICBUaGUgMTN0aCBhbm51YWwgdG9wLWxldmVsIG1lZXRpbmcgb2YgdGhlIG1ham9yIGluZHVzdHJpYWwgZGVtb2NyYWNpZXMgd2lsbCB0YWtlIHBsYWNlIGFnYWluc3QgYSBiYWNrZHJvcCBvZiByaXNpbmcgY29uZ3Jlc3Npb25hbCBjb25jZXJuIG92ZXIgUmVhZ2FuJ3MgcGxhbiB0byBwcm90ZWN0IGd1bGYgc2hpcHBpbmcgYW5kIGRlbWFuZHMgdGhhdCB0aGUgYWxsaWVzIGRvIG1vcmUuICAgICAgVGhlc2UgY29uY2VybnMgd2VyZSBoZWlnaHRlbmVkIGJ5IHRoZSBNYXkgMTcgSXJhcWkgbWlzc2lsZSBhdHRhY2sgb24gdGhlIFUuUy4gZnJpZ2F0ZSBTdGFyayB3aGljaCBraWxsZWQgMzcgc2VhbWVuLiAgICAgIlRoZXkgZGllZCB3aGlsZSBndWFyZGluZyBhIGNob2tlcG9pbnQgb2YgZnJlZWRvbSwgZGV0ZXJyaW5nIGFnZ3Jlc3Npb24gYW5kIHJlYWZmaXJtaW5nIEFtZXJpY2EncyB3aWxsaW5nbmVzcyB0byBwcm90ZWN0IGl0cyB2aXRhbCBpbnRlcmVzdHMsIiBSZWFnYW4gc2FpZC4gICAgICAgICBJbiBhIHByZS1zdW1taXQgc3BlZWNoIGNlbGVicmF0aW5nIHRoZSA0MHRoIGFubml2ZXJzYXJ5IG9mIHRoZSBNYXJzaGFsbCBQbGFuLCBSZWFnYW4sIHdobyBzcG9rZSB0byBhbiBhdWRpZW5jZSBvZiBmb3JlaWduIGFmZmFpcnMgZXhwZXJ0cywgYWxzbyBwbGVkZ2VkIHRvIHB1c2ggZm9yIGVjb25vbWljIGV4cGFuc2lvbiBieSBXZXN0IEdlcm1hbnkgYW5kIEphcGFuIHRvIGJvbHN0ZXIgdGhlIHdvcmxkIHRyYWRpbmcgc3lzdGVtLiAgICAgIldoaWxlIHRoZSB2aWJyYW5jeSBvZiB0aGUgVS5TLiBlY29ub215IGhhcyBjb250cmlidXRlZCBlbm9ybW91c2x5IHRvIHRoZSB3b3JsZCBleHBhbnNpb24sIHByZXNlcnZpbmcgYSBncm93aW5nIHdvcmxkIGVjb25vbXkgaXMgdGhlIGJ1c2luZXNzIG9mIGV2ZXJ5IG1lbWJlciBvZiB0aGUgd29ybGQgdHJhZGluZyBjb21tdW5pdHksIiBoZSBzYWlkLiAgICAgICAgICJJdCB3aWxsIGJlIG1hZGUgY2xlYXIsIGVzcGVjaWFsbHkgdG8gb3VyIGZyaWVuZHMgaW4gSmFwYW4gYW5kIHRoZSBGZWRlcmFsIFJlcHVibGljIG9mIEdlcm1hbnksIHRoYXQgZ3Jvd3RoLW9yaWVudGVkIGRvbWVzdGljIHBvbGljaWVzIGFyZSBuZWVkZWQgdG8gYm9sc3RlciB0aGUgd29ybGQgdHJhZGluZyBzeXN0ZW0gb24gd2hpY2ggdGhleSBkZXBlbmQuIiAgICAgUmVhZ2FuIGNvdXBsZWQgdGhpcyBhcHBlYWwgd2l0aCBhIGNhbGwgZm9yIGNvbXBsaWFuY2Ugd2l0aCBhbGxpZWQgYWNjb3JkcyBvbiBleGNoYW5nZSByYXRlIHN0YWJpbGl0eS4gICAgICJFY29ub21pYyBwb2xpY3kgZGVjaXNpb25zIG1hZGUgbGFzdCB5ZWFyIGluIFRva3lvIGFuZCBhdCB0aGlzIHllYXIncyBtZWV0aW5ncyBvZiBHcm91cCBvZiBTZXZlbiBmaW5hbmNlIG1pbmlzdGVycyBpbiBQYXJpcyBhbmQgaW4gV2FzaGluZ3RvbiBjYW5ub3QgYmUgaWdub3JlZCBvciBmb3Jnb3R0ZW4sIiBoZSBzYWlkLiAiVGhlIGNvbW1pdG1lbnRzIG1hZGUgYXQgdGhlc2UgbWVldGluZ3MgbmVlZCB0byBiZSB0cmFuc2xhdGVkIGludG8gYWN0aW9uLiIgIFJldXRlciAzOwoxOTg3MDYwMQlSRU5JU09OIEdDIEFORCBDSVRZIFJFU09VUkNFUyBTRVQgUE5HIEdPTEQgVkVOVFVSRSBSZW5pc29uIEdvbGRmaWVsZHMgQ29uc29saWRhdGVkIEx0ZCA8UkdGSi5TPiAoUkdDKSBhbmQgZXhwbG9yZXIgPENpdHkgUmVzb3VyY2VzIEx0ZD4gaGF2ZSBhZ3JlZWQgaW4gcHJpbmNpcGxlIG9uIGEgam9pbnQgdmVudHVyZSB0byByZS1leGFtaW5lIHRoZSBCdWxvbG8gYWxsdXZpYWwgZ29sZCBmaWVsZCBpbiBQYXB1YSBOZXcgR3VpbmVhLCBDaXR5IFJlc291cmNlcyBzYWlkLiAgICAgQ2l0eSBSZXNvdXJjZXMgd291bGQgcHJvZ3Jlc3NpdmVseSBlYXJuIHVwIHRvIDY2LjY2IHBjdCBvZiBSR0MncyBQcm9zcGVjdGluZyBBdXRob3JpdHkgNTg1LCB3aGljaCBjb3ZlcnMgYWxsIHRoZSBmaWVsZCwgYnkgc3BlbmRpbmcgYSB0b3RhbCBvZiA2LjUgbWxuIGtpbmEsIGl0IHNhaWQgaW4gYSBzdGF0ZW1lbnQuICAgICBJdCBzYWlkIGl0IGJlbGlldmVkIEJ1bG9sbyB3YXMgbm90IGZ1bGx5IGV4cGxvaXRlZCBpbiB0aGUgcGFzdCwgbm90aW5nIHRoZSBsaXRlcmF0dXJlIHJlZmVycyB0byBoZWF2eSBnb2xkIGxvc3NlcyBpbiB0YWlsaW5ncyBkdXJpbmcgZHJlZGdpbmcgZnJvbSAxOTMxIHRvIDE5Njcgd2hpY2ggcHJvZHVjZWQgYSB0b3RhbCBvZiAyLjEgbWxuIG91bmNlcy4gICAgIENpdHkgUmVzb3VyY2VzIGFsc28gc2FpZCBwcmV2aW91cyBkcmVkZ2luZyB3YXMgb25seSBjYXJyaWVkIG91dCB0byBhIGRlcHRoIG9mIDM2IG1ldHJlcyBhbmQgaGlnaCBncmFkZSBnb2xkIHZhbHVlcyBhcmUgcmVwb3J0ZWQgdG8gYXQgbGVhc3QgNjAgbWV0cmVzIGluIHRoZSBjZW50cmFsIHBhcnQgb2YgdGhlIEJ1bG9sbyBWYWxsZXkgYW5kIHBvc3NpYmx5IGFzIGRlZXAgYXMgOTAgbWV0cmVzLiAgICAgSW4gaXRzIHByb2R1Y3RpdmUgbGlmZSwgcmVjb3ZlcmVkIGF2ZXJhZ2UgZ3JhZGUgYXQgQnVsb2xvIHdhcyAwLjMgcnB0IDAuMyBncmFtcyBhIHRvbm5lIGZyb20gc29tZSAyMDcgbWxuIGN1YmljIG1ldHJlcyBvZiBncmF2ZWwsIGl0IHNhaWQuIENpdHkgUmVzb3VyY2VzIHdpbGwgYWN0IGFzIG9wZXJhdG9yLiAgICAgVGhlIEJ1bG9sbyBmaWVsZCwgaW4gTW9yb2JlIFByb3ZpbmNlLCB3YXMgdGhlIGZpcnN0IHN1Y2Nlc3NmdWwgZ29sZCBtaW5pbmcgb3BlcmF0aW9uIG9mIDxQbGFjZXIgRGV2ZWxvcG1lbnQgTHRkPiBhZnRlciBpdCB3YXMgZmxvYXRlZCBpbiBDYW5hZGEgaW4gMTkyNi4gSXQgb3BlcmF0ZWQgdGhlIGZpZWxkIHVudGlsIGRyZWRnaW5nIGNlYXNlZCBpbiAxOTY3LiAgUkVVVEVSIDM7CjE5ODcwNjAxCVJPWUVYIEdPTEQgTUlOSU5HIDxSR00uVE8+IDJORCBRVFIgTUFSQ0ggMzEgTkVUIE9wZXIgc2hyIGxvc3MgdGhyZWUgY3RzIHZzIGxvc3Mgb25lIGN0ICAgICBPcGVyIG5ldCBsb3NzIDEsNzk2LDAwMCB2cyBsb3NzIDM4MSwwMDAgICAgIFJldnMgMiw1MDEsMDAwIHZzIDIsNjk1LDAwMCAgICAgU0lYIE1USFMgICAgIE9wZXIgc2hyIGxvc3MgZWlnaHQgY3RzIHZzIGxvc3MgZm91ciBjdHMgICAgIE9wZXIgbmV0IGxvc3MgMywyMzUsMDAwIHZzIGxvc3MgMSwxMjMsMDAwICAgICBSZXZzIDQsODUwLDAwMCB2cyA0LDU1MSwwMDAgICAgIE5vdGU6IDE5ODcgbmV0IGV4Y2x1ZGVzIDJuZCBxdHIgZXh0cmFvcmRpbmFyeSBnYWluIG9mIDg3IG1sbiBkbHJzIG9yIDEuNTQgZGxycyBzaHIgZnJvbSBzYWxlIG9mIDUxIHBjdCBzdGFrZSBvZiBNYXNjb3QgR29sZCBNaW5lcyBMdGQgPE1TRy5UTz4uIEZ1bGwgbmFtZSBSb3lleCBHb2xkIE1pbmluZyBDb3JwLiAgUmV1dGVyIDM7CjE5ODcwNjAxCVNBVURJIFJFTkVHT1RJQVRJT04gT0YgQVJBTUNPIERFQUwgTU9WSU5HIEFMT05HIFNhdWRpIEFyYWJpYSdzIHJlbmVnb3RpYXRpb24gb2YgaXRzIGNvbGxlY3RpdmUgYWdyZWVtZW50IHdpdGggQXJhbWNvIHRvIHB1cmNoYXNlIG9pbCBmb3IgdGhlIGxhdHRlcidzIGV4LXBhcnRuZXJzIGlzIG1vdmluZyBhbG9uZyBhbmQgc2hvdWxkIGxlYWQgdG8gYSBmdW5kYW1lbnRhbCBzdHJ1Y3R1cmFsIGNoYW5nZSBpbiB0aGUgY29udHJhY3QsIG9pbCBpbmR1c3RyeSBzb3VyY2VzIHNhaWQuICAgICBQZXRyb2xldW0gSW50ZWxsaWdlbmNlIFdlZWtseSwgaW4gdGhpcyBNb25kYXkncyBlZGl0aW9uLCBzYWlkIG5lZ290aWF0aW9ucyBhcmUgbW92aW5nIGFsb25nIGZvciBhZGp1c3RtZW50IG9mIHRoZSAxLjM0IG1sbiBicGQgam9pbnQgbG9uZyB0ZXJtIGFncmVlbWVudCBhdCBvZmZpY2lhbCBwcmljZXMgYW5kIHZvbHVtZXMgYW5kIG90aGVyIHRlcm1zIG1heSBiZSByZWFycmFuZ2VkLiAgICAgVGhlIGFncmVlbWVudCBzaWduZWQgaW4gSmFudWFyeSBmb3IgdGhlIG1vbnRocyBmcm9tIEZlYnJ1YXJ5IHRvIEp1bmUgaXMgdXAgZm9yIHJlbmVnb3RpYXRpb24uICAgICBVbmRlciB0aGUgSmFudWFyeSBjb250cmFjdCBBcmFtY28gd2FzIHRvIHB1cmNoYXNlIDEuMzQgbWxuIGJwZCBmb3IgdGhlIGZvdXIgcGFydG5lcnMgYWxsb2NhdGVkIGFtb25nIHRoZW0gYXMgRXh4b24gQ29ycCA8WE9OPiA0NDAsMDAwIGJwZCwgVGV4YWNvIEluYyA8VFg+IDM1MCwwMDAgYnBkLCBNb2JpbCBDb3JwIDxNT0I+IGFuZCBDaGV2cm9uIENvcnAgPENIVj4gNTUwLDAwMCBicGQgYmV0d2VlbiB0aGVtLiAgICAgQnV0IGFuIG92ZXJsaWZ0aW5nIGJ5IFRleGFjbyBJbmMgaW4gdGhlIGZpcnN0IHF1YXJ0ZXIgYWxsb3dlZCBvdGhlciBjb21wYW5pZXMgbGlrZSBFeHhvbiBDb3JwIHRvIHVuZGVybGlmdCBpdHMgb2JsaWdhdGlvbnMgdW5kZXIgdGhlIGNvbnRyYWN0ICAgICBQSVcgc2FpZCB0aGF0IHRoYXQgb25lIGFsdGVybmF0aXZlIHVuZGVyIGNvbnNpZGVyYXRpb24gaXMgdG8gcmV2ZXJ0IHRvIGZvdXIgaW5kaXZpZHVhbCBjb250cmFjdHMgcmF0aGVyIHRoYW4gYSBjb2xsZWN0aXZlIGFncmVtZW50LiAgICAgSm9obiBMaWNodGJsYXUsIGRpcmVjdG9yIG9mIHRoZSBQZXRyb2xldW0gSW5kdXN0cnkgUmVzZWFyY2ggRm91bmRhdGlvbiBJbmMgc2FpZCB0aGF0IHJlbmVnb3RpYXRpb24gb2YgdGhlIHBhY3Qgd2FzIG1vcmUgb2YgYSBmb3JtYWxpdHkgYXMgdGhlIFNhdWRpcyBoYXZlIGVhY2ggY29tcGFueSBvbiBhIHNlcGFyYXRlIHNjaGVkdWxlIGFsdGhvdWdoIHNlcGFyYXRlIGFncmVlbWVudHMgd2l0aCB0aGUgY29tcGFuaWVzIHdvdWxkIGZhdm9yIG9uZSBvbiBvbmUgbmVnb3RpYXRpb25zIGFuZCBlbnN1cmUgdGhhdCBjb250cmFjdGVkIGxpZnRpbmdzIG9jY3VyIC4gICAgICJUaGUgY29tcGFuaWVzIHdpbGwgcHJvYmFibHkgZm9sbG93IHRoZSBTYXVkaSB3YW50cyB3aXRoaW4gbGltaXRzIGFzIHRoZXkgZG8gbm90IHdhbnQgdG8gYW50YWdvbml6ZSB0aGVtIGZvciB0aGUgbG9uZyBoYXVsLCIgaGUgc2FpZC4gICAgIExpY2h0YmxhdSBzYWlkIHRoYXQgdGhlIHJlbmVnb3RpYXRpb25zIHdvdWxkIG1vc3QgbGlrZWx5IGNvbmNlbnRyYXRlIG9uIHZvbHVtZSByYXRoZXIgdGhhbiBwcmljZS4gICAgIFNhdWRpIGRpc3BsZWFzdXJlIHdpdGggdGhlIGFncmVlbWVudCBoYXMgbG9uZyBiZWVuIG5vdGVkIGFuZCBpbiBBcHJpbCBpbmR1c3RyeSBwdWJsaWNhdGlvbnMgc2FpZCB0aGF0IHJlbmVnb3RpYXRpb24gd2VyZSBiZWluZyBzb3VnaHQsIGEgZmFjdCBsYXRlciBjb25maXJtZWQgYnkgUmV1dGVycyB3aXRoIEFyYW1jby4gICAgIEFyYW1jbyBDb3JwIHdhcyBmb3JtZXJseSBvd25lZCBieSBDaGV2cm9uIENvcnAgPENIVj4sIEV4eG9uIENvcnAgPFhPTj4sIE1vYmlsIENvcnAgPE1PQj4gYW5kIFRleGFjbyBJbmMgPFRYPiBidXQgaXMgbm93IG93bmVkIGJ5IFNhdWRpIEFyYWJpYSB3aGljaCBib3VnaHQgaXRzIGFzc2V0cyBhbHRob3VnaCB0aGUgZXgtcGFydG5lcnMgaGF2ZSB2YXJpb3VzIGFncmVlbWVudHMgd2l0aCBTYXVkaSBBcmFiaWEuICBSZXV0ZXIgMzsKMTk4NzA2MDEJU0VPVUwgQU5OT1VOQ0VTIE1PUkUgVEFSSUZGIENVVFMgRk9SIFUuUy4gU291dGggS29yZWEgd2lsbCBjdXQgaW1wb3J0IHRheGVzIG9uIDUwIGl0ZW1zLCBpbmNsdWRpbmcgY29uc3RydWN0aW9uIGVxdWlwbWVudCwgcGhvdG9ncmFwaGljIGZpbG0sIGNpZ2FyZXR0ZXMgYW5kIHBpcGUgdG9iYWNjbywgdG8gaGVscCByZWR1Y2UgaXRzIHRyYWRlIHN1cnBsdXMgd2l0aCB0aGUgVW5pdGVkIFN0YXRlcywgdGhlIGZpbmFuY2UgbWluaXN0cnkgc2FpZC4gICAgIFRoZSB0YXJpZmYgY3V0cywgb2YgYmV0d2VlbiBmaXZlIGFuZCAzMCBwZXJjZW50YWdlIHBvaW50cywgdGFrZSBlZmZlY3Qgb24gSnVseSAxLiAgICAgVGhpcyBicmluZ3MgdG8gMTU3IHRoZSBudW1iZXIgb2YgZ29vZHMgb24gd2hpY2ggaW1wb3J0IHRheGVzIGhhdmUgYmVlbiBjdXQgdGhpcyB5ZWFyLCBhIG1pbmlzdHJ5IG9mZmljaWFsIHNhaWQuICAgICBUaGUgMTU3IGFyZSBhbW9uZyBhYm91dCAyOTAgaXRlbXMgb24gd2hpY2ggV2FzaGluZ3RvbiBoYXMgYXNrZWQgU2VvdWwgdG8gbG93ZXIgdGFyaWZmcywgaGUgYWRkZWQuICAgICBUb2RheSdzIGFubm91bmNlbWVudCBmb2xsb3dzIFNhdHVyZGF5J3MgcmVtb3ZhbCBvZiBpbXBvcnQgY3VyYnMgb24gMTcwIHByb2R1Y3RzLiBGb3IgNDYgb2YgdGhvc2UgcHJvZHVjdHMsIHRoZSBVLlMuIEhhZCBoYWQgc291Z2h0IGZyZWUgYWNjZXNzIHRvIHRoZSBTb3V0aCBLb3JlYW4gbWFya2V0LiAgICAgIlRoaXMgaXMgaW4gbGluZSB3aXRoIHRoZSBnb3Zlcm5tZW50J3MgcG9saWN5IHRvIGxpbWl0IG91ciB0cmFkZSBzdXJwbHVzIHdpdGggdGhlIFVuaXRlZCBTdGF0ZXMgdG8gaGVscCByZWR1Y2UgdHJhZGUgZnJpY3Rpb24gYmV0d2VlbiB0aGUgdHdvIGNvdW50cmllcywiIHRoZSBvZmZpY2lhbCBzYWlkLiAgICAgU291dGggS29yZWEncyB0cmFkZSBzdXJwbHVzIHdpdGggdGhlIFUuUy4gUm9zZSB0byA3LjMgYmlsbGlvbiBkbHJzIGluIDE5ODYgZnJvbSA0LjMgYmlsbGlvbiBpbiAxOTg1LiBPZmZpY2lhbHMgc2FpZCB0aGUgc3VycGx1cyB3YXMgZXhwZWN0ZWQgdG8gd2lkZW4gZnVydGhlciBpbiAxOTg3IGJ1dCBTZW91bCB3b3VsZCB0cnkgdG8gaG9sZCBpdCBiZWxvdyBlaWdodCBiaWxsaW9uIGRscnMuICAgICBUaGUgZmluYW5jZSBtaW5pc3RyeSBzYWlkIHRhcmlmZnMgd291bGQgYmUgY3V0IGxhdGVyIHRoaXMgbW9udGggb24gYSBmdXJ0aGVyIDUzIGl0ZW1zLCBpbmNsdWRpbmcgYWNyeWxpYyB5YXJuIGFuZCBldGh5bGVuZSwgYnkgYW4gYXZlcmFnZSA3LjcgcGVyY2VudGFnZSBwb2ludHMgaW4gb3JkZXIgdG8gY2hlY2sgaW5mbGF0aW9uLiAgICAgVGhlIG9mZmljaWFscyBzYWlkIHRoZSB0YXJpZmYgY3V0cyB3b3VsZCBjb250cmlidXRlIHRvIGhvbGRpbmcgd2hvbGVzYWxlIGFuZCBjb25zdW1lciBwcmljZSByaXNlcyBhdCBsZXNzIHRoYW4gdGhyZWUgcGN0IHRoaXMgeWVhci4gIFJFVVRFUiAzOwoxOTg3MDYwMQlTRU9VTCBBTk5PVU5DRVMgTU9SRSBUQVJJRkYgQ1VUUyBGT1IgVS5TLiBTb3V0aCBLb3JlYSB3aWxsIGN1dCBpbXBvcnQgdGF4ZXMgb24gNTAgZ29vZHMsIGluY2x1ZGluZyBjb25zdHJ1Y3Rpb24gZXF1aXBtZW50LCBjaWdhcmV0dGVzIGFuZCB0b2JhY2NvLCB0byBoZWxwIHJlZHVjZSBpdHMgdHJhZGUgc3VycGx1cyB3aXRoIHRoZSBVbml0ZWQgU3RhdGVzLCB0aGUgRmluYW5jZSBNaW5pc3RyeSBzYWlkIHRvZGF5LiBUaGUgdGFyaWZmIGN1dHMgb2YgYmV0d2VlbiBmaXZlIGFuZCAzMCBwY3Qgd2lsbCB0YWtlIGVmZmVjdCBvbiBKdWx5IDEuICAgICBTb3V0aCBLb3JlYSByYW4gYSB0cmFkZSBzdXJwbHVzIG9mIDcuMyBiaWxsaW9uIGRscnMgd2l0aCBXYXNoaW5ndG9uIGluIDE5ODYsIHNoYXJwbHkgdXAgZnJvbSA0LjMgYmlsbGlvbiBpbiAxOTg1LiAgICAgVG9kYXkncyBhbm5vdW5jZW1lbnQgYnJpbmdzIHRvIDE1NyB0aGUgbnVtYmVyIG9mIGdvb2RzIGZvciB3aGljaCBzaW1pbGFyIG1lYXN1cmVzIHdlcmUgdGFrZW4gdGhpcyB5ZWFyLCBhIG1pbmlzdHJ5IG9mZmljaWFsIHNhaWQuIFRoZSAxNTcgYXJlIGFtb25nIGFib3V0IDI5MCBpdGVtcyBvbiB3aGljaCBXYXNoaW5ndG9uIGhhcyBhc2tlZCBTZW91bCB0byBsb3dlciB0YXJpZmZzLiAgICAgIlRoaXMgaXMgaW4gbGluZSB3aXRoIHRoZSBnb3Zlcm5tZW50J3MgcG9saWN5IHRvIGxpbWl0IG91ciB0cmFkZSBzdXJwbHVzIHdpdGggdGhlIFVuaXRlZCBTdGF0ZXMgdG8gaGVscCByZWR1Y2UgdHJhZGUgZnJpY3Rpb24gYmV0d2VlbiB0aGUgdHdvIGNvdW50cmllcywiIHNhaWQgdGhlIG9mZmljaWFsLiAgUmV1dGVyIDM7CjE5ODcwNjAxCVNIRUxMLCBDQUxURVgsIEJQIFJFVklTRSBTSU5HQVBPUkUgUEVUUk9MIFBSSUNFUyBTaGVsbCBFYXN0ZXJuIFB0ZSBMdGQgd2lsbCByZXZpc2UgcHVtcCBwcmljZXMgb2YgcGV0cm9sIGZyb20gMjMwMCBob3VycyBsb2NhbCB3aGlsZSBDYWx0ZXggQXNpYSBMdGQgYW5kIEJQIFNpbmdhcG9yZSBQdGUgTHRkIHdpbGwgcmV2aXNlIHRoZWlycyBhdCBtaWRuaWdodCB0b25pZ2h0LCBjb21wYW55IG9mZmljaWFscyBzYWlkLiAgICAgQ2FsdGV4IGFuZCBTaGVsbCB3aWxsIHNldCBwcmljZXMgb2YgMC4xNSBnbSBsZWFkIGF0IDk2LjggY2VudHMvbGl0cmUgZm9yIDk3IG9jdGFuZSBhbmQgOTAuMiBjZW50cyBmb3IgOTIgb2N0YW5lLiBCUCB3aWxsIHNldCBwcmljZXMgYXQgOTYuOCBjZW50cy9saXRyZSBhbmQgOTAuNiBjZW50cywgcmVzcGVjdGl2ZWx5LiBQcmV2aW91cyBpbmR1c3RyeSBwdW1wIHByaWNlcyBmb3IgMC40IGdtIGxlYWQgd2VyZSA5NCBjZW50cyBmb3IgOTcgb2N0YW5lIGFuZCA4Ny42IGNlbnRzIGZvciA5MiBvY3RhbmUuICBSRVVURVIgMzsKMTk4NzA2MDEJU0lOR0FQT1JFIE9JTCBDT01QQU5JRVMgVE8gU0VUIE9XTiBQVU1QIFBSSUNFUyBTaW5nYXBvcmUgb2lsIGNvbXBhbmllcyBjYW4gc2V0IHRoZWlyIG93biBwZXRyb2wgYW5kIGRpZXNlbCBwcmljZXMgYXQgdGhlIHB1bXAgZnJvbSB0b2RheSBzdWJqZWN0IHRvIGNlaWxpbmdzIGRldGVybWluZWQgYnkgdGhlaXIgaW5kaXZpZHVhbCB3aG9sZXNhbGUgcHJpY2VzLCBUaGUgTWluaXN0cnkgb2YgVHJhZGUgYW5kIEluZHVzdHJ5IHNhaWQuICAgICBUaGUgbWluaXN0cnkgcHJldmlvdXNseSByZXZpc2VkIHB1bXAgcHJpY2VzIGFuZCBhbm5vdW5jZWQgdGhlIGNoYW5nZXMgZm9yIHRoZSBvaWwgY29tcGFuaWVzLiAgICAgTGVhZCBjb250ZW50IG9mIHBldHJvbCBpcyBmdXJ0aGVyIGN1dCB0byAwLjE1IGdtL2xpdHJlIGZyb20gMC40IGdtIGZyb20gdG9kYXkuIFB1bXAgcHJpY2VzIG9mIHRoZSBsb3dlciBsZWFkIHBldHJvbCBncmFkZXMgYXJlIGV4cGVjdGVkIHRvIGJlIGFubm91bmNlZCBzb29uIGJ5IHRoZSBvaWwgY29tcGFuaWVzIHdoaWNoIGhhdmUgc2FpZCB3aG9sZXNhbGUgcHJpY2VzIGFyZSBiZXR3ZWVuIDEuMyBjZW50cy9saXRyZSB0byAzLjIgY2VudHMgaGlnaGVyIHRoYW4gcHJldmlvdXMgZ3JhZGVzLiAgUkVVVEVSIDM7CjE5ODcwNjAxCVNJTkdBUE9SRSBQRVRST0xFVU0gQ08gUkVWSVNFUyBQRVRST0wgUFVNUCBQUklDRVMgU2luZ2Fwb3JlIFBldHJvbGV1bSBDbyBQdGUgTHRkIHdpbGwgcmV2aXNlIHB1bXAgcHJpY2VzIG9mIHBldHJvbCBmcm9tIEp1bmUgMiwgYW4gb2ZmaWNpYWwgc2FpZC4gICAgIEdyYWRlIDk3IG9jdGFuZSB3aXRoIDAuMTUgZ20vbGVhZCB3aWxsIGJlIDk2LjggY2VudHMvbGl0cmUgYWdhaW5zdCA5NCBjZW50cyBwcmV2aW91c2x5IGZvciAwLjQgZ20gbGVhZC4gR3JhZGUgOTIgb2N0YW5lIHdpbGwgYmUgOTAuNiBjZW50cyBhZ2FpbnN0IDg3LjYgcHJldmlvdXNseS4gICAgIFNQQydzIHByaWNlIHJldmlzaW9uIGZvbGxvd3MgdGhlIE1pbmlzdHJ5IG9mIFRyYWRlIGFuZCBJbmR1c3RyeSdzIG1vdmUgdG8gbGliZXJhbGlzZSBwZXRyb2wgcHJpY2luZyBieSBhbGxvd2luZyBvaWwgY29tcGFuaWVzIHRvIHNldCB0aGVpciBvd24gcHVtcCBwcmljZXMuICAgICBOZXcgZ3JhZGVzIG9mIHBldHJvbCB3aXRoIGxvd2VyIGxlYWQgY29udGVudCBhcmUgc29sZCBpbiBTaW5nYXBvcmUgZnJvbSB0b2RheSBpbiBsaW5lIHdpdGggdGhlIE1pbmlzdHJ5IG9mIEVudmlyb25tZW50J3MgcmVndWxhdGlvbnMuICBSRVVURVIgMzsKMTk4NzA2MDEJU09DSUVUWSBGT1IgU0FWSU5HUyA8U09DUy5PPiBGT1JNUyBQQVJFTlQgU29jaWV0eSBmb3IgU2F2aW5ncyBCYW5jb3JwIEluYyBzYWlkIGl0IGhhcyBjb21wbGV0ZWQgaXRzIHByZXZpb3VzbHkgYW5ub3VuY2VkIHBsYW4gb2YgYWNxdWlzaXRpb24gbWFraW5nIGEgbmV3IERlbGF3YXJlLWNoYXJ0ZXJlZCBiYW5rIGhvbGRpbmcgY29tcGFueSB0aGUgcGFyZW50IG9mIENvbm5ldGljdXQgY2hhcnRlcmVkIFNvY2lldHkgZm9yIFNhdmluZ3MuICBSZXV0ZXIgMzsKMTk4NzA2MDEJU09DSUVUWS9TQVZJTkdTIDxTT0NTLk8+IEZPUk1TIEhPTERJTkcgQ09NUEFOWSBTb2NpZXR5IGZvciBTYXZpbmdzIHNhaWQgaXQgaGFzIGNvbXBsZXRlZCBhIG1lcmdlciBpbnRvIG5ld2x5IGZvcm1lZCBob2xkaW5nIGNvbXBhbnkgU29jaWV0eSBmb3IgU2F2aW5ncyBCYW5jb3JwIEluYyBvbiBhIHNoYXJlLWZvci1zaGFyZSBiYXNpcy4gIFJldXRlciAzOwoxOTg3MDYwMQlTT1VUSCBLT1JFQSBJTkNSRUFTRVMgRFVUWSBPTiBDUlVERSBJTVBPUlRTIFNvdXRoIEtvcmVhIGhhcyBpbmNyZWFzZWQgaXRzIGR1dHkgb24gY3J1ZGUgb2lsIGltcG9ydHMgdG8gNC4yOSBkbHJzIGEgYmFycmVsIGZyb20gMy4yOSBkbHJzLCBlZmZlY3RpdmUgdG9kYXksIHRoZSBlbmVyZ3kgbWluaXN0cnkgc2FpZC4gICAgIFRoZSBkdXR5LCB0byByYWlzZSBmdW5kcyBmb3Igc3BlY2lhbCBlbmVyZ3kgcHJvamVjdHMsIHdhcyBhZGp1c3RlZCBhZnRlciBhdmVyYWdlIGNydWRlIGltcG9ydCBwcmljZXMgcm9zZSB0byAxNi44NSBkbHJzIGEgYmFycmVsIGluIEFwcmlsLCBmcm9tIDE2LjY1IGRscnMgaW4gTWFyY2ggYW5kIDEzLjA4IGRscnMgaW4gQXByaWwgMTk4NiwgbWluaXN0cnkgb2ZmaWNpYWxzIHNhaWQuICAgICBBIHNlcGFyYXRlIDI0LjUgcGN0IGltcG9ydCB0YXggb24gY3J1ZGUgb2lsIGlzIHVuY2hhbmdlZC4gIFJFVVRFUiAzOwoxOTg3MDYwMQlTUEVDVFJBLVBIWVNJQ1MgPFNQWT4gQk9BUkQgUkVKRUNUUyBURU5ERVIgT0ZGRVIgU3BlY3RyYS1QaHlzaWNzIEluYyBzYWlkIGl0cyBib2FyZCByZWplY3RlZCBhIDMyIGRscnMgcGVyIHNoYXJlIHVuc29saWNpdGVkIHRlbmRlciBvZmZlciBmb3IgdGhlIGNvbXBhbnkncyBzdG9jayBmcm9tIENpYmEtR2VpZ3kgTHRkIDxDSUdaLlo+LCB3aGljaCBhbHJlYWR5IGhvbGRzIDE4LjggcGN0IG9mIHRoZSBzdG9jay4gICAgIFNwZWN0cmEtUGh5c2ljcyBzYWlkIGl0IGFsc28gZmlsZWQgYSBsYXdzdWl0IGluIERlbGF3YXJlIGZlZGVyYWwgY291cnQgdGhpcyBtb3JuaW5nIHNlZWtpbmcgdG8gZW5qb2luIHRoZSBvZmZlciBhbmQgYWxsZWdpbmcsIGFtb25nIG90aGVyIHRoaW5ncywgdGhhdCB0aGUgb2ZmZXIgdmlsYXRlcyBmZWRlcmFsIHNlY3VyaXRpZXMgbGF3cywgY2VydGFpbiBhZ3JlZW1lbnRzIGJldHdlZW4gQ2liYS1HZWlneSBhbmQgU3BlY3RyYS1QaHlzaWNzLCBhbmQgQ2liYS1HZWlneSdzIGZpZHVjaWFyeSBkdXRpZXMuICAgICBTcGVjdHJhLVBoeXNpY3Mgc2FpZCB0aGUgdHdvIENpYmEtR2VpZ3kgZGVzaWduZXNzIHRvIGl0cyBib2FyZCB3ZXJlIG5vdCBwcmVzZW50IGF0IHllc3RlcmRheSdzIHNwZWNpYWwgbWVldGluZyB3aGljaCB2b3RlZCB0byByZWplY3QgdGhlIG9mZmVyIGFzIGZpbmFuY2lhbGx5IGluYWRlcXVhdGUsIHVuZmFpciBhbmQgbm90IGluIHRoZSBiZXN0IGludGVyZXN0cyBvZiBTcGVjdHJhLVBoeXNpY3Mgb3IgaXRzIHN0b2NraG9sZGVycy4gICAgIFRoZSBjb21wYW55IHNhaWQgdGhlIGJvYXJkIGFsc28gYXV0aG9yaXplZCBhIHNwZWNpYWwgY29tbWl0dGVlIG9mIG91dHNpZGUgZGlyZWN0b3JzIHRvIHRha2Ugd2hhdGV2ZXIgc3RlcHMgaXQgZGVlbXMgbmVjZXNzYXJ5IHRvIHByb3RlY3QgdGhlIGludGVyZXN0cyBvZiBTcGVjdHJhLVBoeXNpY3MgYW5kIGl0cyBzdG9ja2hvbGRlcnMgYW5kIHRvIGludmVzdGlnYXRlIGFsbCBhbHRlcm5hdGl2ZXMgdG8gbWF4aW1pemUgdGhlIHZhbHVlIG9mIHRoZSBzdG9jaywgaW5jbHVkaW5nIHRhbGtzIHdpdGggdGhpcmQgcGFydGllcy4gICAgIFNwZWN0cmEtUGh5c2ljcyBzYWlkIGEgbGV0dGVyIGNvbW11bmljYXRpbmcgdGhlIGJvYXJkJ3MgcmVjb21tZW5kYXRpb24gYW5kIHJlYXNvbnMgdGhlcmVmb3JlIGlzIGJlaW5nIG1haWxlZCB0byBzdG9ja2hvbGRlcnMuICAgICBJdCBzYWlkIFJvYmVydCBCcnVjZSwgUmVsaWFuY2UgR3JvdXAgSG9sZGluZ3MgSW5jJ3MgPFJFTD4gZGVzaWduZWUgb24gU3BlY3RyYS1QaHlzaWNzJyBib2FyZCwgcmVzaWduZWQgaGlzIHBvc2l0aW9uIG9uIE1heSAyOS4gSGlzIGxldHRlciBvZiByZXNpZ25hdGlvbiBzYWlkIHRoZSBhY3Rpb24gd2FzIHRvIGFsbGV2aWF0ZSBDaWJhLUdlaWd5J3Mgc3RhdGVkIGp1c3RpZmljYXRpb24gZm9yIG1ha2luZyB0aGUgdW5zb2xpY2l0ZWQgb2ZmZXIgdGhhdCBpdCBoYWQgbm90IGNvbnRlbXBsYXRlZCBhbm90aGVyIHNpZ25pZmljYW50IGludmVzdG9yIGhhdmluZyByZXByZXNlbnRhdGlvbiBvbiB0aGUgYm9hcmQgd2hlbiBpdHMgU3BlY3RyYS1QaHlzaWNzJyBpbnZlc3RtZW50IHdhcyBtYWRlLiAgUmV1dGVyIDM7CjE5ODcwNjAxCVNSSSBMQU5LQSBPRkZFUlMgMjUwIE1MTiBSVVBFRVMgSU4gVC1CSUxMUyBUaGUgQ2VudHJhbCBCYW5rIHNhaWQgaXQgd2lsbCBvZmZlciBvZmZlciAyNTAgbWxuIHJ1cGVlcyB3b3J0aCBvZiB0aHJlZS1tb250aCB0cmVhc3VyeSBiaWxscyBpbiBhIHRlbmRlciBjbG9zaW5nIG9uIEp1bmUgNC4gIFJFVVRFUiAzOwoxOTg3MDYwMQlTUkkgTEFOS0FOIFRFQSBXT1JLRVJTIExBVU5DSCBPTkUtREFZIFBST1RFU1QgVGhvdXNhbmRzIG9mIHRlYSB3b3JrZXJzIG9mIEluZGlhbiBvcmlnaW4gd2VudCBvbiBzdHJpa2UgdG9kYXkgdG8gcHJlc3MgZGVtYW5kcyBmb3IgY2l0aXplbnNoaXAgYW5kIHZvdGluZyByaWdodHMgaW4gU3JpIExhbmthLCBhIHVuaW9uIHN0YXRlbWVudCBzYWlkLiAgICAgVGhlIENleWxvbiBXb3JrZXJzIENvbmdyZXNzIChDV0MpIHNhaWQgaXRzIDQwMCwwMDAgbWVtYmVycyBsYXVuY2hlZCBhIHByYXllciBjYW1wYWlnbiBhdCB0ZW1wbGVzIGFuZCBvdGhlciBwbGFjZXMgaW4gYSBub24tdmlvbGVudCBwcm90ZXN0IHRvIGdldCB0aGUgYXV0aG9yaXRpZXMgdG8gZXhwZWRpdGUgY2l0aXplbnNoaXAgcHJvY2VkdXJlcy4gICAgIEEgQ1dDIHNwb2tlc21hbiBzYWlkIGEgdGhyZWUtZGF5IGNhbXBhaWduIHdhcyBzdXNwZW5kZWQgYWZ0ZXIgYSBDYWJpbmV0IGNvbW1pdHRlZSBwcm9taXNlZCB0byBzcGVlZCB1cCBwcm9jZWR1cmVzIHVuZGVyIGEgbmV3IHNldCBvZiByZWd1bGF0aW9ucy4gVHJhZGUgc291cmNlcyBzYWlkIHRoZSBzdHJpa2UgZGlkIG5vdCBhZmZlY3QgcHJvZHVjdGlvbiBvciB0b2RheSdzIENvbG9tYm8gYXVjdGlvbi4gIFJldXRlciAzOwoxOTg3MDYwMQlTVVBFUk1BUktFVFMgR0VORVJBTCA8U0dMPiBURU5ERVIgRVhQSVJFUyBTTUcgQWNxdWlzaXRpb24gQ29ycCwgYSBzdWJzaWRpYXJ5IG9mIE1lcnJpbGwgTHluY2ggQ2FwaXRhbCBQYXJ0bmVycyBJbmMsIHNhaWQgMzguMyBtbG4gc2hhcmVzIG9mIFN1cGVybWFya2V0cyBHZW5lcmFsIENvcnAgd2VyZSB2YWxpZGx5IHRlbmRlcmVkIGJ5IHRoZSBtaWRuaWdodCBGcmlkYXkgZXhwaXJhdGlvbiwgcmVzdWx0aW5nIGluIGEgcHJlbGltaW5hcnkgcHJvcmF0aW9uIGZhY3RvciBvZiA4NS42NiBwY3QuICAgICBNZXJyaWxsIEx5bmNoIHNhaWQgaXQgZXhwZWN0cyB0byBhbm5vdW5jZSB0aGUgZmluYWwgcHJvcmF0aW9uIGZhY3RvciB3aXRoaW4gMTAgYnVzaW5lc3MgZGF5cyBhbmQgYmVnaW4gcGF5bWVudCBpbW1lZGlhdGVseSB0aGVyZWFmdGVyLiBTaGFyZXMgdmFsaWRseSB0ZW5kZXJlZCByZXByZXNlbnRlZCBhYm91dCA5OC43NSBwY3Qgb2YgdGhlIG91dHN0YW5kaW5nIHNoYXJlcyBvZiBTdXBlcm1hcmtldHMgR2VuZXJhbCwgdGhlIGFubm91bmNlbWVudCBzYWlkLiBUaGUgY2FzaCB0ZW5kZXIgb2ZmZXIgd2FzIGZvciB1cCB0byAzMi44IG1sbiBzaGFyZXMgYXQgNDYuNzUgZGxycyBuZXQgcGVyIHNoYXJlLiAgUmV1dGVyIDM7CjE5ODcwNjAxCVRBS0VPVkVSIFNQRUNVTEFUSU9OIExJRlRTIEhVVFRPTiA8RUZIPiBTSEFSRVMgRS5GLiBIdXR0b24gR3JvdXAgSW5jIHNoYXJlcyByb3NlIG9uIHNwZWN1bGF0aW9uIHRoZSBjb21wYW55IHdvdWxkIHJlY2VpdmUgYSB0YWtlb3ZlciBvZmZlciwgdHJhZGVycyBzYWlkLiAgICAgSHV0dG9uJ3Mgc3RvY2sgYWxzbyB3YXMgYWZmZWN0ZWQgYnkgYSBuZXdzcGFwZXIgcmVwb3J0IHRoYXQgRmlyc3QgQm9zdG9uIENvcnAgPEZCQz4gYWNjdW11bGF0ZWQgYWxtb3N0IGZpdmUgcGN0IG9mIEh1dHRvbidzIHN0b2NrIG9uIGJlaGFsZiBvZiBhbiBvdXRzaWRlIGNsaWVudCwgdHJhZGVycyBzYWlkLiBUcmFkZXJzIHNhaWQgdGhlIHN0b3J5LCB3aGljaCBhcHBlYXJlZCBpbiBVU0EgVG9kYXksIGFkZGVkIHNwZWN1bGF0aW9uIHdoaWNoIGJlZ2FuIG9uIHRoZSBzdHJlZXQgbGFzdCB3ZWVrLiBUaGV5IHNhaWQgdGhlcmUgd2VyZSBydW1vcnMgdGhlIHN0b2NrIHdhcyB1bmRlciBhY2N1bXVsYXRpb24gYW5kIHNwZWN1bGF0aW9uIGFib3VuZGVkIHRoZSBjb21wYW55IHdvdWxkIHNvb24gcmVjZWl2ZSBhbiBvZmZlci4gQSBIdXR0b24gb2ZmaWNpYWwgZGVjbGluZWQgY29tbWVudC4gSHV0dG9uJ3Mgc3RvY2sgcm9zZSAyLTEvNCB0byAzOS0zLzguICAgICBIdXR0b24gc2V2ZXJhbCBtb250aHMgYWdvIHJlamVjdGVkIGEgYnV5b3V0IG9mZmVyIGZyb20gU2hlYXJzb24gTGVobWFuIEJyb3RoZXJzIEluYyA8U0hFPi4gVGhlIG5ld3NwYXBlciBzdG9yeSBtZW50aW9uZWQgc3BlY3VsYXRpb24gQW1lcmljYW4gRXhwcmVzcyBDbyA8QVhQPiwgdGhlIHBhcmVudCBvZiBTaGVhcnNvbiwgd2FzIGEgcG9zc2libGUgYnV5ZXIuIEJ1dCB0cmFkZXJzIHNhaWQgdGhlIHJ1bW9ycyB0b2RheSBkaWQgbm90IG5hbWUgYnV5ZXJzLiBGaXJzdCBCb3N0b24gb2ZmaWNpYWxzIHdlcmUgbm90IGltbWVkaWF0bGV5IGF2YWlsYWJsZSBmb3IgY29tbWVudC4gICAgIFBydWRlbnRpYWwgQmFjaGUgYW5hbHlzdCBMYXJyeSBFY2tlbmZlbGRlciBzYWlkIGhlIGRvdWJ0ZWQgdGhlIHNwZWN1bGF0aW9uIGFib3V0IEFtZXJpY2FuIEV4cHJlc3MuIEhlIHNhaWQgaGUgYmVsaWV2ZWQgSHV0dG9uLCB3aGljaCBpcyBvY2Nhc3Npb25hbGx5IHN1cnJvdW5kZWQgYnkgcnVtb3JzLCBtb3ZlZCB1cCB0b2RheSBhcyBhIHJlc3VsdCBvZiB0aGUgbmV3c3BhcGVyIGFydGljbGUuICJIdXR0b24gaXMgc3RpbGwgYSB0YWtlb3ZlciBjYW5kaWRhdGUsIiBzYWlkIEVja2VuZmVsZGVyLiAgUmV1dGVyIDM7CjE5ODcwNjAxCVRJTiBUUkFERVJTJyBSRVNQT05TRSBNVVRFRCBUTyBLTCBGVVRVUkVTIE1BUktFVCBFdXJvcGVhbiBmcmVlIG1hcmtldCB0aW4gdHJhZGVycyBtYWRlIGEgc29tZXdoYXQgbXV0ZWQgcmVzcG9uc2UgdG8gcGxhbnMgZm9yIGEgS3VhbGEgTHVtcHVyIGRvbGxhci1iYXNlZCB0aW4gZnV0dXJlcyBtYXJrZXQgZHVlIHRvIGJlIGxhdW5jaGVkIGluIE9jdG9iZXIuICAgICBUcmFkZXJzIHNhaWQgdGhlIG5ldyBtYXJrZXQgd291bGQgcHJvYmFibHkgYmUgYSB1c2VmdWwgdHJhZGluZyBtZWRpdW0gZm9yIEphcGFuIGFuZCBvdGhlciBTb3V0aCBFYXN0IEFzaWFuIHRpbiBpbnRlcmVzdHMgYWx0aG91Z2ggRXVyb3BlYW4gdHJhZGVycyBnZW5lcmFsbHkgYXBwZWFyIHRvIGJlIHJlYXNvbmFibHkgc2F0aXNmaWVkIHdpdGggdGhlIGN1cnJlbnQgImZyZWUgbWFya2V0IiBzeXN0ZW0gd2hpY2ggaGFzIGJlZW4gb3BlcmF0aW5nIHNpbmNlIExvbmRvbiBNZXRhbCBFeGNoYW5nZSwgTE1FLCB0aW4gdHJhZGluZyBjZWFzZWQgaW4gT2N0b2JlciAxOTg1LiBEZWFsZXJzIGhlcmUgd2lsbCBhbHNvIHdhbnQgdG8gc2VlIGhvdyBhY2NlcHRhYmxlIGZvcmVpZ24gbWV0YWwgd2lsbCBiZSBvbiB0aGUgbmV3IG1hcmtldCBhbmQgd2hhdCBzb3J0IG9mIGRlbWFuZCBkZXZlbG9wcyBmb3IgZm9yd2FyZCBkZWxpdmVyaWVzLiAgICAgVGhlcmUgaXMgYWxzbyBhIHZpZXcgYW1vbmcgRXVyb3BlYW4gdHJhZGVycyB0aGF0LCB3aGlsZSB0aGUgcHJvcG9zZWQgS3VhbGEgTHVtcHVyIHRpbiBmdXR1cmVzIG1hcmtldCB3b3VsZCBwcm92aWRlIGFub3RoZXIgdXNlZnVsIHJlZmVyZW5jZSBwb2ludCwgYSBtYXJrZXQgaW5hdWd1cmF0ZWQgYnkgdGhlIE1hbGF5c2lhbiBnb3Zlcm5tZW50IC0tIGluIHRoZSBwYXN0IHZpZXdlZCBhcyBhIG1ham9yIHBsYXllciBhdCB0aW1lcyBieSB0aGUgdHJhZGUgLS0gd291bGQgbWFrZSBwYXJ0aWNpcGFudHMgdW5jb21mb3J0YWJsZS4gICAgIFNvbWUgdHJhZGVycyBleHByZXNzZWQgYSBwcmVmZXJlbmNlIGZvciBhIHJlc3VtcHRpb24gb2YgdHJhZGluZyBvbiB0aGUgTG9uZG9uIE1ldGFsIEV4Y2hhbmdlLCBidXQgdGhleSBhZGRlZCB0aGF0IHdoaWxlIHRoZXJlIGhhcyBiZWVuIHNvbWUgYmVoaW5kIHRoZSBzY2VuZXMgZGlzY3Vzc2lvbiBvbiB0aGUgc3ViamVjdCBhIGRlZmluaXRlIG1vdmUgaXMgdW5saWtlbHkgdW50aWwgb3V0c3RhbmRpbmcgSGlnaCBDb3VydCBsaXRpZ2F0aW9uIGFjdGlvbnMgaGF2ZSBiZWVuIHJlc29sdmVkLiAgICAgU3BvdCB0aW4gcHJpY2VzIG9uIHRoZSBFdXJvcGVhbiBmcmVlIG1hcmtldCBhcmUgY3VycmVudGx5IGFyb3VuZCA0LDIwMCBzdGcgcGVyIHRvbm5lIGZvciBoaWdoIGdyYWRlIG1ldGFsIGluIHdhcmVob3VzZSBSb3R0ZXJkYW0uIE92ZXIgdGhlIHBhc3QgMTggbW9udGhzIHRoZSBwcmljZSBtb3ZlZCB0byBhIHRlbiB5ZWFyIGxvdyBvZiAzLDQwMCBzdGcgaW4gTWFyY2ggMTk4NiBhbmQgcmVib3VuZGVkIHRvIGFzIGhpZ2ggYXMgNCw2ODAgc3RnIGluIERlY2VtYmVyIDE5ODYuICAgICBUaGlzIGNvbXBhcmVzIHdpdGggOCwxNDAgc3RnIGxhc3QgcGFpZCB3aGVuIExNRSB0cmFkaW5nIGNlYXNlZCBpbiBPY3RvYmVyIDE5ODUgYW5kIGEgcmVjb3JkIGhpZ2ggdGluIHByaWNlIG9mIDEwLDM1MCBzdGcgdHJhZGVkIGZvciBDYXNoIFN0YW5kYXJkIEdyYWRlIG1ldGFsIGluIEp1bmUgb2YgdGhhdCB5ZWFyLiAgICAgTE1FIHdhcmVob3VzZSBzdG9ja3MgYXJlIG5vdyBuZWFyIGEgdHdvLXllYXIgbG93IGF0IDI4LDA2NSB0b25uZXMsIGhhdmluZyBmYWxsZW4gc3RlYWRpbHkgZnJvbSBhIHJlY29yZCBoaWdoIG9mIDcyLDQ4NSB0b25uZXMgcmVhY2hlZCBpbiBGZWJydWFyeSAxOTg2LiAgICAgVHJhZGVycyBzYWlkIHRoZSBmcmVlIG1hcmtldCB0dXJuZWQgYnVsbGlzaCBkdXJpbmcgbGF0ZSBsYXN0IHllYXIgYmFzZWQgb24gcHJvZHVjZXIgZm9yZWNhc3RzIG9mIGEgc3VwcGx5L2RlbWFuZCBkZWZpY2l0IG9mIHNvbWUgMjgsMDAwLzI5LDAwMCB0b25uZXMuIEFuYWx5c3RzIHdlcmUgcHJlZGljdGluZyBwcmljZXMgb2YgdXAgdG8gNSwwMDAgc3RnIHBlciB0b25uZSBkdXJpbmcgMTk4Ny4gICAgIEhvd2V2ZXIsIHRoZSB0cmVuZCB3YXMgcmV2ZXJzZWQgZm9sbG93aW5nIGEgc3Ryb25nIHVwc3dpbmcgaW4gc3RlcmxpbmcgdmVyc3VzIHRoZSBkb2xsYXIgYW5kIHZhbHVlcyBmZWxsIGJhY2sgYnJpZWZseSB0byA0LDEwMCBzdGcgbGFzdCBtb250aCBhZnRlciBhcHByb2FjaGluZyA0LDcwMCBzdGcgaW4gRGVjZW1iZXIuICAgICBUaGUgZGVjbGluZSBhY2NlbGVyYXRlZCBhcyBwcm9kdWNlcnMgd2hvIGhhZCBzb2xkIHZlcnkgbGl0dGxlIG1ldGFsIGF0IHRoZSBoaWdoZXIgbGV2ZWxzIGJlY2FtZSBjb21wZXRpdGl2ZSBzZWxsZXJzLiAgICAgVGhlcmUgd2FzIGFsc28gYSBsYWNrIG9mIHNpZ25pZmljYW50IGRlbWFuZCBmcm9tIG1ham9yIHN0ZWVsIG1pbGxzIHdobyBtYWRlIGxhcmdlIHB1cmNoYXNlcyBwcmlvciB0byB0aGUgbmV3IHllYXIuICAgICBUcmFkZXJzIHNheSB0aGUgMTUgSVRDIGNyZWRpdG9yIGJhbmtzJyBvcmlnaW5hbCB0aW4gaG9sZGluZ3Mgb2YgbmVhcmx5IDQ1LDAwMCB0b25uZXMgaGF2ZSBub3cgYmVlbiBhbG1vc3QgaGFsdmVkLCBhbmQgdGhlIGJ1bGsgb2YgbWF0ZXJpYWwgc3RpbGwgYXZhaWxhYmxlIGlzIGJlaW5nIGhlbGQgYnkgTWFsYXlzaWFuIGFuZCBKYXBhbmVzZSBmaXJtcyB3aGljaCBhcmUgcmVsdWN0YW50IHRvIGRlcHJlc3MgdGhlIG1hcmtldCB3aXRoIHVud2FudGVkIG1ldGFsLiAgICAgU29tZSA4MCwwMDAgdG9ubmVzIHdlcmUgaGVsZCBieSBiYW5rcyBhbmQgYnJva2VycyBhZnRlciB0aGUgSW50ZXJuYXRpb25hbCBUaW4gQ291bmNpbCdzLCBJVEMsIGJ1ZmZlciBzdG9jayBtYW5hZ2VyIGhhbHRlZCBzdXBwb3J0IG9wZXJhdGlvbnMgb24gdGhlIExNRSBvbiBiZWhhbGYgb2YgdGhlIDIyIG1lbWJlcnMgbmF0aW9ucyBvZiB0aGUgSW50ZXJuYXRpb25hbCBUaW4gQWdyZWVtZW50LiAgICAgVGhlIG92ZXJoYW5nIG9mIG1ldGFsIHdhcyByZWR1Y2VkIGZ1cnRoZXIgYnkgYnJva2VyIFNoZWFyc29uIExlaG1hbiBCcm90aGVycywgd2hpY2ggZWFybGllciB0aGlzIHllYXIgcmVwb3J0ZWQgaGF2aW5nIHNvbGQgaXRzIElUQy1yZWxhdGVkIGhvbGRpbmdzIGFuZCBoYWx2ZWQgaXRzIG92ZXJhbGwgdGluIHBvc2l0aW9uLiAgICAgQW5hbHlzdHMgc2VlIG5vIGltbWVkaWF0ZSBzaWduIG9mIGEgcmFsbHkgaW4gRXVyb3BlYW4gdGluIHByaWNlcyBhbmQgbW92ZW1lbnRzIGFyZSBzdGlsbCBleHBlY3RlZCB0byBiZSBsYXJnZWx5IHJlbGF0ZWQgdG8gY3VycmVuY3kgZmx1Y3R1YXRpb25zLCB1bmxlc3Mgc2lnbmlmaWNhbnQgY29uc3VtZXIgZGVtYW5kIGVtZXJnZXMgZm9yIHRoZSB0aGlyZCBxdWFydGVyLiAgICAgVGhlIEFzc29jaWF0aW9uIG9mIFRpbiBQcm9kdWNpbmcgQ291bnRyaWVzLCBBVFBDLCBoYXMgbWFkZSBlZmZvcnRzIHNpbmNlIHRoZSBjb2xsYXBzZSBvZiB0aGUgSVRBIHRvIGFjaGlldmUgaGlnaGVyIHdvcmxkIHByaWNlcyBieSBhdHRlbXB0aW5nIHRvIGJyaW5nIGFsbCBtYWpvciBwcm9kdWNlcnMgdW5kZXIgYW4gZXhwb3J0IGNvbnRyb2wgdW1icmVsbGEsIGJ1dCB0byBkYXRlIEJyYXppbCBhbmQgQ2hpbmEsIHR3byBtYWpvciBwcm9kdWNlcnMsIHJlbWFpbiB1bmFmZmVjdGVkIGJ5IHRoZSBBVFBDIGFyZ3VtZW50IGFuZCBhcHBhcmVudGx5IGFyZSBjb250aW51aW5nIHRvIG9mZmVyIG1hdGVyaWFsIGF0IGRpc2NvdW50cyB0byBjb25zdW1lcnMgaW4gbWFpbiBFdXJvcGVhbiB0cmFkaW5nIGNlbnRyZXMsIGRlYWxlcnMgc2FpZC4gIFJldXRlciAzOwoxOTg3MDYwMQlUT1RBTCBIRUFMVEggPFRMSFQuTz4gVE8gTUFLRSBBQ1FVSVNJVElPTiBUb3RhbCBIZWFsdGggU3lzdGVtcyBJbmMgc2FpZCBpdCBoYXMgYWdyZWVkIHRvIGFjcXVpcmUgQ29NRUQgSW5jIG9mIERlbnZpbGxlLCBOLkouLCBhIGhlYWx0aCBtYWludGVuYW5jZSBvcmdhbml6YXRpb24gd2l0aCBvdmVyIDYzLDAwMCBzdWJzY3JpYmVycywgZm9yIGFuIHVuZGlzY2xvc2VkIGFtb3VudCBvZiBjYXNoLCB0aGUgYXNzdW1wdGlvbiBvZiBsaWFiaWxpdGllcyBhbmQgdGhlIHByb3Zpc2lvbiBvZiB1cCB0byAxMCBtbG4gZGxycyBpbiBlcXVpdHkgYW5kIGRlYnQgZmluYW5jaW5nLiAgICAgVGhlIGNvbXBhbnkgc2FpZCB0aGUgYWNxdWlzaXRpb24gaXMgc3ViamVjdCB0byByZWd1bGF0b3J5IGFwcHJvdmFscy4gICAgIEl0IHNhaWQgQ29NRUQgaGFkIDE5ODYgcmV2ZW51ZXMgb2YgMzAuMCBtbG4gZGxycyBhbmQgZWFybmluZ3Mgb2YgNjUwLDM4MyBkbHJzIGFuZCBoYWQgcmV2ZW51ZXMgZm9yIHRoZSBmaXJzdCBmb3VyIG1vbnRocyBvZiAxOTg3IG9mIDEzLjYgbWxuIGRscnMsIHVwIDYwIHBjdCBmcm9tIGEgeWVhciBiZWZvcmUuICAgUmV1dGVyIDM7CjE5ODcwNjAxCVRPVEFMIFBFVFJPTEVVTSA8VFBOPiBTSFVUUyBURVhBUyBQSVBFTElORVMgVG90YWwgUGV0cm9sZXVtIE5BIDxUUE4+IHNodXQgZG93biBzZXZlcmFsIHNtYWxsIGNydWRlIG9pbCBwaXBlbGluZXMgb3BlcmF0aW5nIG5lYXIgdGhlIFRleGFzL09rbGFob21hIGJvcmRlciBsYXN0IEZyaWRheSBhcyBhIHByZWNhdXRpb24gYWdhaW5zdCBkYW1hZ2UgZnJvbSBsb2NhbCBmbG9vZGluZywgYWNjb3JkaW5nIHRvIEdhcnkgWm9sbGluZ2VyLCBtYW5hZ2VyIG9mIG9wZXJhdGlvbnMuICAgICBUb3RhbCBzaHV0IGEgMTItaW5jaCBsaW5lIHRoYXQgcnVucyBhY3Jvc3MgdGhlIE91YWNoaXRhIFJpdmVyIGZyb20gV3lubmV3b29kIHRvIEFyZG1vcmUgd2l0aCBhIGNhcGFjaXR5IG9mIDYyLDAwMCBicGQgYXMgd2VsbCBhcyBzZXZlcmFsIHNtYWxsZXIgcGlwZWxpbmVzIGEgZmV3IGluY2hlcyB3aWRlIHdpdGggY2FwYWNpdGllcyBvZiBzZXZlcmFsIHRob3VzYW5kIGJwZCBvciBsZXNzLCBab2xsaW5nZXIgc2FpZC4gICAgIFRoZSBCYXNpbiBQaXBlbGluZSwgYSBtYWpvciBwaXBlbGluZSBydW5uaW5nIDMwMCwwMDAgYnBkLCBydW4gYnkgYSBjb25zb3J0aXVtIG9mIG90aGVyIG9pbCBjb21wYW5pZXMsIHdhcyBjbG9zZWQgdG9kYXkuICAgICBPbmUgb3RoZXIgc21hbGwgcGlwZWxpbmUgdGhhdCBUb3RhbCBhbHNvIGNsb3NlZCBoYXMgYSBjYXBhY2l0eSBvZiAzLDAwMCB0byA0LDAwMCBicGQgYW5kIGNyb3NzZXMgdGhlIFJlZCBSaXZlciBpbiBGYXJnbywgVGV4YXMsIFpvbGxpbmdlciBzYWlkLiAgICAgSGUgc2FpZCB0aGUgY2xvc2VkIHBpcGVsaW5lcyBydW4gdW5kZXIgcml2ZXIgd2F0ZXIgYW5kIGNvdWxkIGJlIGRhbWFnZWQgYXMgdGhlIGZsb29kZWQgcml2ZXJzIGVyb2RlIHRoZSByaXZlciBiYW5rcyBhbmQgZXhwb3NlIHRoZSBwaXBpbmcuICAgICBab2xsaW5nZXIgc2FpZCBUb3RhbCBpcyB3YWl0aW5nIGZvciB0aGUgcml2ZXIgd2F0ZXJzIHRvIHJlY2VkZSBiZWZvcmUgdGhleSByZWFjdGl2YXRlIHRoZSBwaXBlbGluZXMuICBSZXV0ZXIgMzsKMTk4NzA2MDEJVS5LLiBCQU5LRVJTIENPTlNJREVSIE5FVyBFQ0dEIEZJTkFOQ0lORyBQTEFOIFJlcHJlc2VudGF0aXZlcyBvZiBtYWpvciBVLksuIEJhc2VkIGJhbmtzIGFyZSBtZWV0aW5nIGhlcmUgdG9kYXkgdG8gY29uc2lkZXIgYSBuZXcgcGxhbiBmb3IgcmVkdWNpbmcgdGhlIGNvc3Qgb2YgZmluYW5jaW5nIEJyaXRpc2ggZXhwb3J0cyBndWFyYW50ZWVkIGJ5IHRoZSBFeHBvcnQgQ3JlZGl0cyBHdWFyYW50ZWUgRGVwYXJ0bWVudCAoRUNHRCksIHNlbmlvciBiYW5raW5nIHNvdXJjZXMgc2FpZC4gICAgIFRoZSBwbGFuIGlzIGJlaW5nIGRldmVsb3BlZCBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZSBFQ0dEIGFuZCB0aGUgQmFuayBvZiBFbmdsYW5kLiAgICAgTmVpdGhlciB0aGUgRUNHRCBub3IgdGhlIEJhbmsgb2YgRW5nbGFuZCB3b3VsZCBjb21tZW50IG9uIHRoZSBwbGFuLiBIb3dldmVyLCBiYW5rZXJzIHNhaWQgb25lIG9mIHRoZSBtYWluIHBvaW50cyB1bmRlciBkaXNjdXNzaW9uIGlzIGEgcGxhbiB0byByZWZpbmFuY2UgdGhlIGJ1bGsgb2YgdGhlIEVDR0QncyBtZWRpdW0gdGVybSBjcmVkaXQgcG9ydGZvbGlvIGluIHRoZSBpbnRlcm5hdGlvbmFsIGNhcGl0YWwgbWFya2V0cy4gICAgICBUaGUgcHJvcG9zYWxzIGludm9sdmUgaW50cm9kdWNpbmcgYSBzZXQgb2YgaW50ZXJlc3QgbWFyZ2lucyBvbiBFQ0dEIGJhY2tlZCBkZWJ0IG9mIDUvMTYgdG8gNy84IHBjdCwgZGVwZW5kaW5nIG9uIHRoZSBzaXplIGFuZCBtYXR1cml0eSBvZiB0aGUgY3JlZGl0IGFuZCB0aGUgY3VycmVuY3kuICAgICBUaGUgYmFua3MgYXJlIGxpa2VseSB0byBwdXNoIGZvciBhIGhpZ2hlciBtYXJnaW4uIEJhbmtlcnMgc2FpZCB0aGF0IHdoaWxlIHRoZXNlIHJhdGVzIHdvdWxkIHJlZHVjZSBhIGJhbmsncyByZXR1cm4gdGhleSB3b3VsZCBzdGlsbCBiZSBtb3JlIHRoYW4gdGhvc2UgcHJvcG9zZWQgYWJvdXQgYSB5ZWFyIGFnbyB3aGVuIHRoZSBnb3Zlcm5tZW50IGF0dGVtcHRlZCB1bnN1Y2Nlc3NmdWxseSB0byBpbml0aWF0ZSBhbm90aGVyIGNvc3QgcmVkdWN0aW9uIHBsYW4uICAgICBBdCB0aGUgc2FtZSB0aW1lLCB0aGUgYmFua3Mgd291bGQgYmUgZXhwZWN0ZWQgdG8gYWxsb3cgdGhlIEVDR0QgdG8gcmVhbGlzZSBhZGRpdGlvbmFsIHNhdmluZ3MgYnkgcmVmaW5hbmNpbmcgZXhpc3RpbmcgZ292ZXJubWVudCBiYWNrZWQgY3JlZGl0IGluIHRoZSBjYXBpdGFsIG1hcmtldHMuICAgICAgT24gY3JlZGl0cyB0aGF0IGFyZSByZWZpbmFuY2VkIGFuIG9yaWdpbmFsIGxlbmRlciB3b3VsZCByZWNlaXZlIGEgcmVzaWR1YWwgbWFyZ2luIG9mIDcvMTYgcGN0IGZvciBsb2FucyB1cCB0byAxMCBtbG4gc3RnIGFuZCAzLzE2IHBjdCBvbiBsYXJnZXIgdHJhbnNhY3Rpb25zLiAgIFJFVVRFUiAzOwoxOTg3MDYwMQlVLksuIE1PTkVZIE1BUktFVCBHSVZFTiAyNSBNTE4gU1RHIExBVEUgQVNTSVNUQU5DRSBUaGUgQmFuayBvZiBFbmdsYW5kIHNhaWQgaXQgcHJvdmlkZWQgdGhlIG1vbmV5IG1hcmtldCB3aXRoIGxhdGUgYXNzaXN0YW5jZSBvZiBhcm91bmQgMjUgbWxuIHN0Zy4gICAgIFRoaXMgdGFrZXMgdGhlIEJhbmsncyB0b3RhbCBoZWxwIHRvZGF5IHRvIHNvbWUgMTM3IG1sbiBzdGcgYW5kIGNvbXBhcmVzIHdpdGggaXRzIGxhdGVzdCBmb3JlY2FzdCBvZiBhIDE1MCBtbG4gc3RnIHNob3J0YWdlLiAgUkVVVEVSIDM7CjE5ODcwNjAxCVUuUy4gQkFOQ09SUCA8VVNCQy5PPiBIQVMgQUNRVUlTSVRJT04gQVBQUk9WQUwgVS5TLiBCYW5jb3JwIChPcmVnb24pIHNhaWQgaXQgaGFzIGJlZW4gYWR2aXNlZCBvcmFsbHkgdGhhdCBpdHMgYXBwbGljYXRpb24gZm9yIHRoZSBhY3F1aXNpdGlvbiBvZiBPbGQgTmF0aW9uYWwgQmFuY29ycCBoYXMgYmVlbiBhcHByb3ZlZCBieSB0aGUgQm9hcmQgb2YgR292ZXJub3JzIG9mIHRoZSBGZWRlcmFsIFJlc2VydmUuICAgICBUaGUgY29tcGFueSBzYWlkIGl0IGhhcyBhbHNvIGJlZW4gYWR2aXNlZCB0aGF0IGl0IGhhcyByZWNlaXZlZCBGZWQgYXBwcm92YWxzIGZvciBpdHMgYWNxdWlzaXRpb24gb2YgSGVyaXRhZ2UgQmFuayBvZiBDYW1hcywgV2FzaC4sIGFuZCBmb3IgaXRzIGNvbnZlcnNpb24gb2YgaXRzIHN1YnNpZGlhcnksIFUuUy4gVGhyaWZ0IGFuZCBMb2FuIG9mIFNhbHQgTGFrZSBDaXR5LCBVdGFoLCBpbnRvIGEgY29tbWVyY2lhbCBiYW5rLiAgICAgSW4gSmFudWFyeSBVLlMuIEJhbmNvcnAgYW5kIE9sZCBOYXRpb25hbCByZWFjaGVkIGEgZGVmaW5pdGl2ZSBhZ3JlZW1lbnQgY292ZXJpbmcgdGhlIGFjcXVpc2l0aW9uIG9mIGFsbCB0aGUgc3RvY2sgb2YgT2xkIE5hdGlvbmFsIHdoaWNoIGl0IGRvZXMgbm90IGFscmVhZHkgb3duIGZvciAxNzEgbWxuIGRscnMuICAgICBVLlMuIEJhbmNvcnAgY3VycmVudGx5IG93bnMgNC45IHBjdCBvZiBPbGQgTmF0aW9uYWwncyBzdG9jay4gIFJldXRlciAzOwoxOTg3MDYwMQlVLlMuIEdVTEYgT0YgTUVYSUNPIFJJRyBDT1VOVCBDTElNQlMgVE8gMzguOSBQQ1QgVXRpbGl6YXRpb24gb2Ygb2Zmc2hvcmUgbW9iaWxlIHJpZ3MgaW4gdGhlIEd1bGYgb2YgTWV4aWNvIGNsaW1iZWQgYnkgMi4xIHBjdCBsYXN0IHdlZWsgdG8gMzguOSBwY3QsIHJlZmxlY3RpbmcgYSB0b3RhbCBvZiA5MSB3b3JraW5nIHJpZ3MsIE9mZnNob3JlIERhdGEgU2VydmljZXMgc2FpZC4gICAgIE9uZSB5ZWFyIGFnbywgdGhlIEd1bGYgb2YgTWV4aWNvIHV0aWxpemF0aW9uIHJhdGUgd2FzIDMyLjUgcGN0LiBPZmZzaG9yZSBEYXRhIFNlcnZpY2VzIHNhaWQgc29tZSBkcmlsbGluZyBjb250cmFjdG9ycyBoYWQgcmVwb3J0ZWQgcmVjZW50IGluY3JlYXNlcyBvZiBhYm91dCAxLDAwMCBkbHJzIGEgZGF5IG9uIGxhcmdlIGphY2t1cCByaWdzLCB3aGljaCBub3cgY29tbWFuZCByYXRlcyBvZiAxMSwwMDAgdG8gMTIsMDAwIGRscnMgYSBkYXkuICAgICBJbiB0aGUgRXVyb3BlYW4vTWVkaXRlcnJhbmVhbiBhcmVhIHRoZSByaWcgdXRpbGl6YXRpb24gcmF0ZSByb3NlIDAuNiBwY3QgdG8gNTMuNiBwY3QsIGFnYWluc3QgNjcuMyBwY3Qgb25lIHllYXIgYWdvLiAgICAgV29ybGR3aWRlIHJpZyB1dGlsaXphdGlvbiByb3NlIGJ5IDEuMiBwY3QgdG8gNTcuNyBwY3QsIHJlZmxlY3RpbmcgYSBuZXQgaW5jcmVhc2Ugb2YgZWlnaHQgd29ya2luZyByaWdzLiBPZmZzaG9yZSBEYXRhIFNlcnZpY2VzIHNhaWQgYSB0b3RhbCBvZiA0MTkgcmlncyB3ZXJlIGluIHVzZSB3b3JsZHdpZGUgYW5kIDMwNyB3ZXJlIGlkbGVkIGxhc3Qgd2Vlay4gIFJldXRlciAzOwoxOTg3MDYwMQlVLlMuIFNUVURZIFNBWVMgVEFSSUZGUyBBTkQgUVVPVEFTIENPVUxEIEJBQ0tGSVJFIFRoZSB1c2Ugb2YgdGFyaWZmcyBhbmQgcXVvdGFzIHRvIHJlZHVjZSB0aGUgZmxvdyBvZiBmb3JlaWduIGdvb2RzIGludG8gdGhlIFVuaXRlZCBTdGF0ZXMgd2lsbCBkbyBsaXR0bGUgdG8gY3V0IHRoZSBuYXRpb24ncyBzd2VsbGluZyB0cmFkZSBkZWZpY2l0LCBhIGdvdmVybm1lbnQgc3R1ZHkgc2FpZC4gICAgIEluIGZhY3QsIHRoZSBGZWRlcmFsIFRyYWRlIENvbW1pc3Npb24gKEZUQykgcmVwb3J0IHNhaWQsIHN1Y2ggcHJvdGVjdGlvbmlzdCBwb2xpY2llcyBjb3VsZCBtYWtlIFUuUy4gUHJvZHVjdHMgbGVzcyBjb21wZXRpdGl2ZSBpbiB0aGUgd29ybGQgbWFya2V0cGxhY2UgYnkgcmFpc2luZyB0aGUgY29zdCBvZiBpbXBvcnRlZCBwcm9kdWN0cyB0aGF0IGFyZSByZS1leHBvcnRlZCBpbiBkaWZmZXJlbnQgZm9ybXMuICAgICAiU3VjaCBwb2xpY2llcyBhcmUgbXVjaCBtb3JlIGxpa2VseSB0byBodXJ0LCByYXRoZXIgdGhhbiBoZWxwLCB0aGUgcHJvZHVjdGl2ZSBjYXBhYmlsaXRpZXMgb2YgdGhlIFUuUy4gRWNvbm9teSwiIGl0IHNhaWQuICAgICBUaGUgMjE4LXBhZ2UgcmVwb3J0LCB3cml0dGVuIGJ5IEZUQyBlY29ub21pc3RzIEpvaG4gSGlsa2UgYW5kIFBoaWxpcCBOZWxzb24sIGJsYW1lZCB0aGUgcmlzaW5nIHRyYWRlIHNob3J0ZmFsbCwgd2hpY2ggY2xpbWJlZCB0byBhIHJlY29yZCAxNjYuMyBiaWxsaW9uIGRscnMgbGFzdCB5ZWFyLCBvbiBzaGlmdGluZyBjdXJyZW5jeSBleGNoYW5nZSByYXRlcyBhbmQgZ3Jvd2luZyBVLlMgY29uc3VtZXIgZGVtYW5kLiAgICAgT3RoZXIgZmFjdG9ycyBjb21tb25seSBibGFtZWQgZm9yIHRoZSBkZWZpY2l0LCBzdWNoIGFzIGZvcmVpZ24gdHJhZGUgcHJhY3RpY2VzLCBkZXRlcmlvcmF0aW5nIFUuUy4gSW5kdXN0cmlhbCBjb21wZXRpdGl2ZW5lc3MsIGhpZ2ggbGFib3VyIGNvc3RzIGFuZCBnb3Zlcm5tZW50IHJlc3RyaWN0aW9ucyBvbiBtZXJnZXJzLCBhZGRlZCBsaXR0bGUgdG8gdGhlIHByb2JsZW0sIGl0IHNhaWQuICAgICAiQWx0aG91Z2ggZWFjaCBpbmR1c3RyeSdzIGNvbXBldGl0aXZlbmVzcyBhZmZlY3RzIHRoZSBsZXZlbCBvZiBpbXBvcnRzIGFuZCBleHBvcnRzIGluIHRoYXQgaW5kdXN0cnksIGluIGdlbmVyYWwgd2UgZmluZCB0aGF0IHRoZXJlIGhhdmUgYmVlbiBubyBzaWduaWZpY2FudCBpbmR1c3RyeS1zcGVjaWZpYyBjaGFuZ2VzIGFmZmVjdGluZyBjb21wZXRpdGl2ZW5lc3MgdGhhdCB3b3VsZCBleHBsYWluIHRoZSBpbmNyZWFzZSBpbiB0aGUgb3ZlcmFsbCB0cmFkZSBkZWZpY2l0LCIgdGhlIHN0dWR5IHNhaWQuICAgICAiVG8gdGhlIGV4dGVudCBhbnkgZ292ZXJubWVudCBhY3Rpb24gaXMgbmVlZGVkIHRvIGRlYWwgd2l0aCB0aGUgdHJhZGUgZGVmaWNpdHMsIHBvbGljaWVzIHNob3VsZCBmb2N1cyBvbiBlY29ub215LXdpZGUgcGhlbm9tZW5hIHN1Y2ggYXMgZXhjaGFuZ2UgcmF0ZXMgYW5kIHJlbGF0aXZlIGVjb25vbWljIGdyb3d0aCwiIHRoZSBGVEMgc3R1ZHkgc2FpZC4gICAgIFN1cHBvcnRpbmcgaXRzIGNvbmNsdXNpb24gdGhhdCBicm9hZC1iYXNlZCBlY29ub21pYyBzaGlmdHMgd2VyZSB0aGUgY2F1c2Ugb2YgdGhlIGluY3JlYXNlIGluIHRoZSB0cmFkZSBkZWZpY2l0LCB0aGUgcmVwb3J0IHNhaWQgaXQgZm91bmQgdGhhdCBuZWFybHkgYWxsIFUuUy4gSW5kdXN0cmllcyBsb3N0IHNvbWUgZG9tZXN0aWMgbWFya2V0IHNoYXJlIHRvIGZvcmVpZ24gY29tcGV0aXRvcnMgaW4gdGhlIDE5ODBzLiAgICAgSXQgYWxzbyBzYWlkIGl0IGZvdW5kIGEgImZhaXJseSBkaXJlY3QgcmVsYXRpb25zaGlwIiBiZXR3ZWVuIHRoZSBpbmNyZWFzZWQgdHJhZGUgZGVmaWNpdCBhbmQgdGhlIGluZmx1ZW5jZSBvZiBzaGlmdGluZyBjdXJyZW5jeSBleGNoYW5nZSByYXRlcywgVS5TLiBFY29ub21pYyBncm93dGggYW5kIGRvbWVzdGljIGRlbWFuZCBmb3IgZ29vZHMgYW5kIHNlcnZpY2VzLCB3aGljaCBoYXMgb3V0cGFjZWQgZm9yZWlnbiBjb25zdW1lciBkZW1hbmQuICAgICBUaGUgc3R1ZHkgZXhhbWluZWQgc2V2ZW4gZmFjdG9ycyB3aGljaCBoYXZlIGJlZW4gY29tbW9ubHkgYmxhbWVkIGZvciB0aGUgdHJhZGUgZGVmaWNpdDogZm9yZWlnbiBnb3Zlcm5tZW50IHN1YnNpZGllcyBhbmQgdHJhZGUgYmFycmllcnMgdG8gcHJvdGVjdCBmb3JlaWduIGluZHVzdHJpZXMsIGEgbGFjayBvZiBpbnZlc3RtZW50IGluIFUuUy4gSW5kdXN0cnksIGRlY2xpbmluZyByZXNlYXJjaCBhbmQgZGV2ZWxvcG1lbnQgaW4gVS5TLiBJbmR1c3RyeSwgaGlnaCBsYWJvdXIgY29zdHMsIHVuaW9uIHdvcmsgcnVsZXMsIHRoZSBvaWwgcHJpY2VzIHJpc2VzIG9mIHRoZSAxOTcwcyBhbmQgVS5TLiBBbnRpdHJ1c3QgcmVndWxhdGlvbnMuICAgICBJbiBlYWNoIGNhc2UsIHRoZSBzdHVkeSBmb3VuZCBsaXR0bGUgb3Igbm8gZXZpZGVuY2UgdGhhdCB0aGUgZmFjdG9yIGhhZCBhbnkgaW1wYWN0IG9uIHRoZSB0cmFkZSBkZWZpY2l0LiAgUkVVVEVSIDM7CjE5ODcwNjAxCVUuUy4gVFJBREUgQklMTCBWRVJZIERBTkdFUk9VUyBGT1IgQ0FOQURBLCBMT0JCWSBBIHRyYWRlIGJpbGwgYmVmb3JlIHRoZSBVbml0ZWQgU3RhdGVzIEhvdXNlIG9mIFJlcHJlc2VudGF0aXZlcyAiaXMgYSB2ZXJ5IGRhbmdlcm91cyBiaWxsIGZvciBDYW5hZGlhbiBpbmR1c3RyeSwiIENhbmFkaWFuIEZvcmVzdCBJbmR1c3RyeSBDb3VuY2lsIGNoYWlybWFuIEFkYW0gWmltbWVybWFuIHRvbGQgcmVwb3J0ZXJzLiAgICAgQnkgY2hhbmdpbmcgdGhlIGRlZmluaXRpb24gb2Ygc3Vic2lkeSB1bmRlciBVLlMuIGNvdW50ZXJ2YWlsaW5nIGR1dHkgbGF3LCBIb3VzZSBvZiBSZXByZXNlbnRhdGl2ZXMgQmlsbCAzIHJlbW92ZXMgcHJvdGVjdGlvbiBmb3IgY29tcGFuaWVzIHRoYXQgdGFrZSBhZHZhbnRhZ2Ugb2Ygd2lkZWx5IHVzZWQgZ292ZXJubWVudCBwcm9ncmFtcywgWmltbWVybWFuIHRvbGQgYSBtZWRpYSBicmllZmluZy4gICAgICJDbGVhcmx5LCBhbnkgaW5kdXN0cnkgdG8gd2hpY2ggQ2FuYWRpYW4gZ292ZXJubWVudHMgZ3JhbnQgcmlnaHRzIHRvIGZpc2gsIG1pbmUsIGN1dCB0aW1iZXIsIG9yIHByb2R1Y2UgcG93ZXIgY291bGQgYmUgdnVsbmVyYWJsZSB0byBhIGZpbmRpbmcgb2YgYSBzdWJzaWR5IHVuZGVyIHRoaXMgbGFuZ3VhZ2UsIiBoZSBzYWlkLiAgICAgVGhlIENhbmFkaWFuIGZvcmVzdCBsb2JieSdzIFppbW1lcm1hbiBhbHNvIHNhaWQgdGhlIEhvdXNlIG9mIFJlcHJlc2VudGF0aXZlIEJpbGwgd291bGQgYWRvcHQgYSBuZXcgd2F5IG9mIG1lYXN1cmluZyBzdWJzaWRpZXMgdGhhdCB3b3VsZCBncmVhdGx5IGluY3JlYXNlIHRoZSBzaXplIG9mIGFueSBjb3VudGVydmFpbGluZyBkdXRpZXMgdGhhdCBtaWdodCBiZSBpbXBvc2VkIG9uIENhbmFkaWFuIHJlc291cmNlIGV4cG9ydHMgdG8gdGhlIFUuUy4gICAgIFVuZGVyIHRoZSBiaWxsLCBhbnkgZGlmZmVyZW5jZSBiZXR3ZWVuIENhbmFkaWFuIHByaWNlcyBhbmQgVS5TLiBvciB3b3JsZCBtYXJrZXQgcHJpY2VzIHdvdWxkIGNvbnN0aXR1dGUgYSBzdWJzaWR5LCBoZSBzYWlkLiBTdWNoIGEgbWV0aG9kIHdvdWxkIG1ha2UgQ2FuYWRpYW4gcmVzb3VyY2UgaW5kdXN0cmllcyB2dWxuZXJhYmxlIHRvIHNpbWlsYXIgcGVuYWx0aWVzIGxpa2UgYSAxNSBwY3QgZXhwb3J0IHRheCBpbXBvc2VkIGxhc3QgSmFudWFyeSBvbiBzaGlwbWVudHMgb2YgQ2FuYWRpYW4gc29mdHdvb2QgbHVtYmVyIHRvIHRoZSBVLlMuLCBaaW1tZXJtYW4gYWRkZWQuICAgICBDYW5hZGlhbiBuZWdvdGlhdG9ycyBhZ3JlZWQgdG8gbGV2eSB0aGUgbmV3IHRheCBpZiBhIFUuUy4gZm9yZXN0IGluZHVzdHJ5IGxvYmJ5IHdvdWxkIGRyb3AgaXRzIHJlcXVlc3QgZm9yIGEgY291bnRlcnZhaWwgZHV0eSBvbiBpbXBvcnRzIG9mIENhbmFkaWFuIHNvZnR3b29kIGx1bWJlci4gICAgICJXZSByZXByZXNlbnQgdGhlIGZpcnN0IHZpY3RpbSBvZiB0aGUgbW92ZSB0byBwcmljZSBvdGhlciBjb3VudHJpZXMnIG5hdHVyYWwgcmVzb3VyY2VzIGFjY29yZGluZyB0byB0aGUgVS5TLiBzeXN0ZW0sIiBaaW1tZXJtYW4gc2FpZC4gICAgICJJZiB3ZSdyZSBhbiBleGFtcGxlLCB0aGFuIG90aGVyIHJlc291cmNlIGluZHVzdHJpZXMgaGFkIGJldHRlciB3YXRjaCBvdXQsIiBoZSBhZGRlZC4gICAgIFppbW1lcm1hbiBzYWlkIHRoZSBDYW5hZGlhbiBGb3Jlc3QgSW5kdXN0cnkgQ291bmNpbCBwbGFucyB0byBkaXNjdXNzIGNvbmNlcm5zIGFib3V0IHRoZSBVLlMuIHRyYWRlIGJpbGwgd2l0aCBsb2JieSBncm91cHMgZnJvbSBvdGhlciBDYW5hZGlhbiByZXNvdXJjZSBpbmR1c3RyaWVzLiAgUmV1dGVyIDM7CjE5ODcwNjAxCVUuUy4gVFJBREUgREFUQSBTRUVOIEFTIEtFWSBUTyBET0xMQVIgVFJFTkQgVGhlIGRvbGxhcidzIHJlY2VudCBzaWducyBvZiBzdGFiaWxpdHkgaGF2ZSByYWlzZWQgaG9wZXMgdGhhdCBpdHMgMjctbW9udGggZGVjbGluZSBtYXkgYmUgbmVhcmx5IG92ZXIsIGJ1dCBtb3N0IGN1cnJlbmN5IGFuYWx5c3RzIHJlZnVzZSB0byBjb21taXQgdGhlbXNlbHZlcyB1bnRpbCBhZnRlciB0aGUgSnVuZSAxMiByZWxlYXNlIG9mIFUuUy4gdHJhZGUgZGF0YSBmb3IgQXByaWwuICAgICAiVGhlIHRyYWRlIGRhdGEgd2lsbCBiZSBhIGRlY2lkaW5nIGZhY3RvciB0byBzZWUgaWYgdGhlIGRvbGxhciBoYXMgYm90dG9tZWQgb3V0LCIgc2FpZCBKaW0gTWNHcm9hcnR5IG9mIERpc2NvdW50IENvcnAuICAgICBTaW5jZSBGZWJydWFyeSAxOTg1LCB0aGUgZG9sbGFyIGhhcyBuZWFybHkgaGFsdmVkIGl0cyB2YWx1ZSBhZ2FpbnN0IHRoZSB5ZW4gYW5kIHRoZSBtYXJrIGFzIHBhcnQgb2YgYW4gb2ZmaWNpYWxseSBvcmNoZXN0cmF0ZWQgY2FtcGFpZ24gdG8gbWFrZSBVLlMuIGdvb2RzIG1vcmUgY29tcGV0aXRpdmUgb24gd29ybGQgbWFya2V0cyBhbmQgcmVkcmVzcyBnYXBpbmcgd29ybGQgdHJhZGUgaW1iYWxhbmNlcy4gICAgIE9uIEFwcmlsIDI3LCB0aGUgZG9sbGFyIGZlbGwgdG8gYSA0MC15ZWFyIGxvdyBvZiAxMzcuMjUgeWVuIGJ1dCBoYXMgZW5qb3llZCBhIG1vZGVzdCByZWNvdmVyeSBvdmVyIHRoZSBsYXN0IGZldyB3ZWVrcywgdG9wcGluZyAxNDUgeWVuIHRvZGF5IGZvciB0aGUgZmlyc3QgdGltZSBpbiBuZWFybHkgdHdvIG1vbnRocy4gICAgIE1hbnkgZWNvbm9taXN0cyBub3cgYmVsaWV2ZSB0aGF0IHRoZSBkb2xsYXIgaGFzIGZhbGxlbiBmYXIgZW5vdWdoIHRvIGVhc2UgdGhlIHRyYWRlIGRlZmljaXQncyBkcmFnIG9uIHRoZSBVLlMuIGVjb25vbXkuICAgICBUaGUgVS5TLiB0cmFkZSBnYXAgbmFycm93ZWQgdG8gMTMuNiBiaWxsaW9uIGRscnMgaW4gTWFyY2ggZnJvbSAxNS4xIGJpbGxpb24gaW4gRmVicnVhcnkgYW5kIGlzIGV4cGVjdGVkIHRvIHNob3cgY29udGludWVkIGltcHJvdmVtZW50IGluIEFwcmlsIGluIHZvbHVtZSwgaWYgbm90IGluIHJlYWwsIHRlcm1zLiAgICAgS2VpaWNoaSBVZGFnYXdhIG9mIEJhbmsgb2YgVG9reW8gaW4gTmV3IFlvcmsgc2FpZCB0aGF0IGlmIGZ1cnRoZXIgcHJvZ3Jlc3MgaXMgcmVwb3J0ZWQsIHRoZSBkb2xsYXIgd291bGQgaGVhZCBiYWNrIHVwIHRvd2FyZHMgMTUwIHllbi4gICAgICJUaGVyZSBpcyBncm93aW5nIGNvbnNlbnN1cyB0aGF0IHRoZSBkb2xsYXIgaGFzIGJvdHRvbWVkIG91dCBmb3IgdGhlIG1lZGl1bSB0ZXJtLCIgYWRkZWQgVG9tIENhbXBiZWxsIG9mIEZpcnN0IE5hdGlvbmFsIEJhbmsgb2YgQ2hpY2Fnby4gICAgIE90aGVyIGZhY3RvcnMgc3VwcG9ydGluZyB0aGlzIGJ1bGxpc2ggdmlldyB3ZXJlIGdyb3dpbmcgZXhwZWN0YXRpb25zIHRoYXQgRmVkZXJhbCBSZXNlcnZlIENoYWlybWFuIFBhdWwgVm9sY2tlciB3b3VsZCBiZSByZWFwcG9pbnRlZCBmb3IgYSB0aGlyZCBmb3VyLXllYXIgdGVybSBpbiBBdWd1c3QsIEphcGFuJ3MgbGFyZ2VyLXRoYW4tZXhwZWN0ZWQgZWNvbm9taWMgc3RpbXVsdXMgcGFja2FnZSBsYXN0IHdlZWsgYW5kICBtb3JlIGZhdm9yYWJseSB0ZWNobmljYWwgY2hhcnQgc2lnbmFscywgYW5hbHlzdHMgc2FpZC4gICAgIFRoZSBkb2xsYXIgd2FzIGFsc28gYWlkZWQgYnkgSmFwYW4ncyBtb3ZlcyB0byBkYW1wZW4gc3BlY3VsYXRpdmUgc2VsbGluZyBpbiBUb2t5byBhbmQgYnkgcmVwb3J0cyBvZiBhY3RpdmUgY2VudHJhbCBiYW5rIGludGVydmVudGlvbiB0byBzdXBwb3J0IHRoZSBkb2xsYXIuICAgICBUaGUgRmVkZXJhbCBSZXNlcnZlIEJhbmsgb2YgTmV3IFlvcmsgc2FpZCBsYXN0IHdlZWsgdGhhdCB0aGUgVS5TLiBtb25ldGFyeSBhdXRob3JpdGllcyBib3VnaHQgbW9yZSB0aGFuIGZvdXIgYmlsbGlvbiBkbHJzIGR1cmluZyB0aGUgRmVicnVhcnktQXByaWwgcGVyaW9kIC0tIHRoZSBsYXJnZXN0IGFtb3VudCBzaW5jZSB0aGUgZG9sbGFyIGNyaXNpcyBvZiB0aGUgbGF0ZSAxOTcwJ3MuICAgICBEaXNjb3VudCBDb3JwJ3MgTWNHcm9hcnR5IGRlc2NyaWJlZCB0aGUgRmVkJ3MgaW50ZXJ2ZW50aW9uIHZvbHVtZSBhcyAiaW1wcmVzc2l2ZSIuICAgICBKYW1lcyBPJ05laWxsIG9mIE1hcmluZSBNaWRsYW5kIEJhbmsgd2FzIG5vdCBzbyBwb3NpdGl2ZSwgaG93ZXZlcjogInRoZSBkb2xsYXIgaGFzIG5vdCB5ZXQgYm90dG9tZWQgb3V0LiBBZnRlciB0aGUgdHJhZGUgZGF0YSBhcmUgcmVsZWFzZWQsIHRoZSBkb2xsYXIgY291bGQgZmFsbCB0b3dhcmRzIDEuNzcgbWFya3MgYW5kIDE0MCB5ZW4uIiAgICAgU2ltaWxhcmx5LCBOYXRzdW8gT2thZGEgb2YgU3VtaXRvbW8gQmFuayBpbiBOZXcgWW9yayB3YXJuZWQsICJJIGRvbid0IHRoaW5rIHRoZSBkb2xsYXIgaGFzIGJvdHRvbWVkIG91dCB5ZXQuIiAgICAgQWx0aG91Z2ggdGhlIGRvbGxhciBjb3VsZCByaXNlIGFzIGhpZ2ggYXMgMTQ2LjUwIHllbiwgT2thZGEgc2FpZCBtYXJrZXQgaW1wYXRpZW5jZSBhYm91dCB0aGUgcGFpbnN0YWtpbmdseSBzbG93IGRlY2xpbmUgb2YgdGhlIFUuUy4gdHJhZGUgZGVmaWNpdCBtYXkgbGVhZCB0byByZW5ld2VkIHByZXNzdXJlLiAgICAgQ3VycmVuY3kgYW5hbHlzdHMgYWxzbyB3YXJuZWQgYWJvdXQgYW4gdW5mYXZvcmFibGUgcmVhY3Rpb24gdG8gdGhlIHNldmVuLW5hdGlvbiBlY29ub21pYyBTdW1taXQgb24gSnVuZSA4IHRvIDEwIGluIFZlbmljZSwgd2hpY2ggaXMgbGlrZWx5IHRvIGZvY3VzIG9uIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBwcmV2aW91cyBjb21taXRtZW50cyByYXRoZXIgdGhhbiB5aWVsZCBhbnkgZnJlc2ggaW5pdGlhdGl2ZXMuICAgICBQcmVzaWRlbnQgUmVhZ2FuIHNhaWQgdG9kYXksICJlY29ub21pYyBwb2xpY3kgZGVjaXNpb25zIG1hZGUgbGFzdCB5ZWFyIGluIFRva3lvIGFuZCBhdCB0aGlzIHllYXIncyBtZWV0aW5ncyBvZiBHcm91cCBvZiBTZXZlbiBmaW5hbmNlIG1pbmlzdGVycyBpbiBQYXJpcyBhbmQgV2FzaGluZ3RvbiBjYW5ub3QgYmUgaWdub3JlZCBvciBmb3Jnb3R0ZW4uIiAgICAgIlRoZSBjb21taXRtZW50cyBtYWRlIGF0IHRoZXNlIG1lZXRpbmdzIG5lZWQgdG8gYmUgdHJhbnNsYXRlZCBpbnRvIGFjdGlvbiwiIGhlIGFkZGVkIGluIGEgc3BlZWNoLCBjZWxlYnJhdGluZyB0aGUgNDB0aCBhbm5pdmVyc2FyeSBvZiB0aGUgTWFyc2hhbGwgYWlkIHBsYW4gZm9yIEV1cm9wZS4gICAgIE5vdyB0aGF0IFRva3lvIGhhcyB1bnZlaWxlZCBpdHMgZmlzY2FsIHN0aW11bHVzIHBhY2thZ2UsIGFuYWx5c3RzIGV4cGVjdGVkIEJvbm4gYW5kIHRoZSBkb2xsYXIvbWFyayByYXRlIHRvIGJlYXIgdGhlIGJydW50IG9mIFUuUy4gY2FsbHMgZm9yIGZ1cnRoZXIgYWN0aW9uLiAgICAgTWFyaW5lIE1pZGxhbmQncyBPJ05laWxsIHNhaWQsICJwcmVzc3VyZSB3aWxsIGJ1aWxkIHVwIG9uIEdlcm1hbnkgdG8gdGFrZSBzdGltdWxhdGl2ZSBhY3Rpb24gbGlrZSBKYXBhbi4iICAgICBTb21lIEphcGFuZXNlIGJhbmsgZGVhbGVycyB3YXJuZWQgdGhhdCBhbHRob3VnaCB0aGUgZG9sbGFyIGNvdWxkIGhvbGQgYWJvdmUgMTQ1IHllbiBmb3Igc29tZSBtb250aHMgaXQgY291bGQgYWxzbyBjb21lIHVuZGVyIGF0dGFjayBhZ2FpbiBpZiBpdCBzZWVtcyB0aGUgbGF0ZXN0IGVjb25vbWljIHBhY2thZ2UgaXMgbm90IGhhdmluZyBtdWNoIGltcGFjdCBvbiBKYXBhbidzIGVjb25vbXkgYW5kIGl0cyB0cmFkZSBzdXJwbHVzLiBSZWZsZWN0aW5nIGEgbG9uZ2VyLXRlcm0gdW5jZXJ0YWludHksIHNvbWUgc29tZSB0cnVzdCBiYW5rcyBhbmQgSmFwYW5lc2UgaW5zdXJlcnMgYXJlIGtlZXBpbmcgdGhlaXIgc2hvcnQgZG9sbGFyIHBvc2l0b25zIGhlZGdlZCBhZ2FpbnN0IGV4Y2hhbmdlIGxvc3NlcyBpbiB0aGVpciBmb3JlaWduIHBvcnRmb2xpb3MsIHdoaWxlIHNvbWUgb3RoZXJzIGhhdmUgc3RhcnRlZCBjb3ZlcmluZyB0aG9zZSBzaG9ydCBwb3NpdGlvbnMsIEphcGFuZXNlIGJhbmsgZGVhbGVycyBzYWlkLiAgUmV1dGVyIDM7CjE5ODcwNjAxCVUuUy4gVklERU8gPFZWQ08uTz4sIEZJUlNUIE5BVElPTkFMIElOIE1FUkdFUiBVLlMuIFZpZGVvIFZlbmRpbmcgQ29ycCBzYWlkIGl0IGNvbXBsZXRlZCBhY3F1aXJpbmcgRmlyc3QgTmF0aW9uYWwgVGVsZWNvbW11bmljYXRpb25zIElOYyBmcm9tIEZpcnN0IE5hdGlvbmFsIEVudGVydGFpbm1lbnQgQ29ycCBmb3IgYWJvdXQgMTAgbWxuLCBvciBhIGNvbnRyb2xsaW5nIGludGVyZXN0IG9mIFUuUy4gVmlkZW8gVmVuZGluZyBzaGFyZXMuICAgICBQdXJzdWFudCB0byB0aGUgdHJhbnNhY3Rpb24sIEhhcnZleSBTZXNsb3dza3kgYW5kIFdpbGxpYW0gSG9kZXMgcmVzaWduZWQgZnJvbSBVLlMuIFZpZGVvJ3MgYm9hcmQgYW5kIHdlcmUgcmVwbGFjZWQgYnkgZm91ciBtZW1iZXJzIG9mIEZpcnN0IE5hdGlvbmFsLiAgUmV1dGVyIDM7CjE5ODcwNjAxCVVOSVRFRCBBU1NFVCA8VUFNPiBDT01QTEVURVMgQUNRVUlTSVRJT04gVW5pdGVkIEFzc2V0IE1hbmFnZW1lbnQgY29ycCBzYWlkIGl0IGhhcyBjb21wbGV0ZWQgdGhlIGFjcXVpc2l0aW9uIG9mIFJpY2UsIEhhbGwsIEphbWVzIGFuZCBBc3NvY2lhdGVzIG9mIFNhbiBEaWVnbyBmb3IgdW5kaXNjbG9zZWQgdGVybXMuICAgICBJdCBzYWlkIFJpY2UgSGFsbCBtYW5hZ2VzIGludmVzdG1lbnRzIGZvciBpbnN0aXR1dGlvbnMgYW5kIGluZGl2aWR1YWxzIGFuZCBoYXMgYWJvdXQgNjkwIG1sbiBkbHJzIGluIGFzc2V0cyB1bmRlciBtYW5hZ2VtZW50IGN1cnJlbnRseS4gIFJldXRlciAzOwoxOTg3MDYwMQlVTklURUQgVE9URSBJTkMgPFRPVEUuTz4gMk5EIFFUUiBBUFJJTCAzMCBTaHIgcHJvZml0IGZvdXIgY3RzIHZzIHByb2ZpdCB0aHJlZSBjdHMgICAgIE5ldCBwcm9maXQgNjQsMTk3IHZzIHByb2ZpdCA1Niw0MzcgICAgIFJldnMgNC45IG1sbiB2cyAxLjYgbWxuICAgICBTaXggbW9udGhzICAgICBTaHIgcHJvZml0IGZvdXIgdnMgbG9zcyBzZXZlbiBjdHMgICAgIE5ldCBwcm9maXQgNjcsMTMzIHZzIGxvc3MgMTE0LDQyNyAgICAgUmV2cyA5LjEgbWxuIHZzIDIuOCBtbG4gICAgIE5PVEU6MTk4NyBmaXJzdCBoYWxmIGluY2x1ZGVzIHJldm51ZXMgb2YgbmV3IHJhY2V0cmFjayBvcGVyYXRpb24uICAgUmV1dGVyIDM7CjE5ODcwNjAxCVVTUENJIDxVUEM+IFNFRU4gUkVKRUNUSU5HIFVOSU9OIFBBQ0lGSUMgQklEIHNoYXJlIGJpZCBtYWRlIGxhc3QgV2VkbmVzZGF5IGJ5IFVuaW9uIFBhY2lmaWMgQ29ycCAoVU5QKSwgIGFuYWx5c3RzIHNhaWQuICAgICAiVGhlIG9mZmVyIGlzIGluYWRlcXVhdGUsIiBzYWlkIERvdWdsYXMgQXVnZW50aGFsZXIsIGFuIGFuYWx5c3Qgd2l0aCBFLkYuIEh1dHRvbiwgbm90aW5nIHRoYXQgaXQgZG9lcyBub3QgcmVwcmVzZW50IHRoZSBuZWVkZWQgcHJlbWl1bSBvdmVyIHRoZSBjb21wYW55J3MgZnVuZGFtZW50YWwgdmFsdWUgYmFzZWQgb24gZWFybmluZ3MgZXN0aW1hdGVzLiAgICAgVVNQQ0ksIHdoaWNoIGhhcyA4LjcgbWxuIHNoYXJlcyBvdXRzdGFuZGluZywgd2FzIHRyYWRpbmcgYXQgNDgtMS84LCBkb3duIDMvOC4gICAgIFVTUENJIHZpY2UgcHJlc2lkZW50IG9mIGZpbmFuY2UgTGFycnkgU2hlbHRvbiBzYWlkIGhlIGNvdWxkIG5vdCBjb21tZW50IG9uIHRoZSBhZGVxdWFjeSBvZiB0aGUgb2ZmZXIgb3Igb24gd2hlbiB0aGUgYm9hcmQgd291bGQgbWVldCB0byBjb25zaWRlciBpdC4gICAgIEF1Z2VudGhhbGVyIHNhaWQgdGhhdCB3aGlsZSBVU1BDSSB3YXMgdHJhZGluZyBhdCBvbmx5IDM0IGRscnMgYSBzaGFyZSBhdCB0aGUgdGltZSBvZiB0aGUgdGFrZW92ZXIgYmlkLCBpdHMgYW5ub3VuY2VtZW50IHRoYXQgc2FtZSBkYXkgb2YgaGlnaGVyIGVhcm5pbmdzIGV4cGVjdGF0aW9ucyBjaGFuZ2VkIGl0cyB2YWx1ZS4gVVNQQ0kgc2FpZCBpdHMgc2Vjb25kIHF1YXJ0ZXIgZWFybmluZ3Mgd291bGQgZXhjZWVkIGFuYWx5c3RzIGV4cGVjdGF0aW9ucyBvZiAyNCB0byAzMCBjdHMgYSBzaGFyZS4gICAgIEF0IHRoYXQgcHJpY2UsIFVTUENJIGNvdWxkIG1haW50YWluIGEgc3RvY2sgcHJpY2UgaW4gdGhlIGxvdyA0MHMsIEF1Z2VudGhhbGVyIHNhaWQuICAgICBIdXR0b24gcmV2aXNlZCBpdHMgMTk4NyBlYXJuaW5ncyBlc3RpbWF0ZSBmb3IgdGhlIHdhc3RlIG1hbmFnZW1lbnQgY29uY2VybiB0byAxLjQwIGRscnMgYSBzaGFyZSBmcm9tIDEuMjAgZGxycyBvbiB0aGUgYW5ub3VuY21lbnQsIGhlIHNhaWQuIEl0IGxpZnRlZCBpdHMgMTk4OCBwcm9qZWN0aW9uIHRvIDEuOTAgZGxycyBhIHNoYXJlIGZyb20gMS43MCBkbHJzLiAgICAgSW4gYWRkaXRpb24sIGFuYWx5c3RzIHNhaWQgdGhlIGhhemFyZG91cyB3YXN0ZSBtYW5hZ2VtZW50IGJ1c2luZXNzIGhvbGRzIHNpZ25pZmljYW50IGdyb3d0aCBwb3RlbnRpYWwuIFRoZSBpbmR1c3RyeSBoYXMgZ3Jvd24gZnJvbSAxNiB0byAzNSBwY3Qgb3ZlciB0aGUgbGFzdCBmaXZlIHllYXJzLCBiYXNlZCBvbiBlYXJuaW5ncyBwZXIgc2hhcmUsIHNhaWQgSmVmZnJleSBLbGVpbiwgYW4gYW5hbHlzdCB3aXRoIEtpZGRlciBQZWFib2R5IGFuZCBDby4gVGhlIGluZHVzdHJ5IGlzIGV4cGVjdGVkIHRvIGNvbnRpbnVlIGdyb3dpbmcgYXQgMTUgdG8gMzUgcGN0IG92ZXIgdGhlIG5leHQgZml2ZSB5ZWFycywgaGUgc2FpZC4gICAgIEF1Z2VudGhhbGVyIHNhaWQgdGhlIDQzLWRsci1hLXNoYXJlIG9mZmVyLCBvciAzNzUgbWxuIGRscnMgdG90YWwsIHdvdWxkIGJlIGEgYmFyZ2FpbiBmb3IgVW5pb24gUGFjaWZpYy4gVGhlIHRyYW5zcG9ydGF0aW9uIGFuZCBlbmVyZ3kgY29tcGFueSB3b3VsZCBib3RoIGdhaW4gZW50cnkgaW50byBhIHByb2ZpdGFibGUgYnVzaW5lc3MgYW5kIHdpbiBjb3N0LWNvbnRyb2wgYmVuZWZpdHMsIGhlIHNhaWQuICAgICAiVW5pb24gUGFjaWZpYyBoYXMgd2hhdCBhcmUgcnVtb3JlZCB0byBiZSBzb21lIGZhaXJseSBzaWduZmljYW50IGVudmlyb25tbWVudGFsIHByb2JsZW1zIG9mIGl0cyBvd24sIiBoZSBzYWlkLiAgICAgSGVyYiBNZWUgSnIuLCBwcmVzaWRlbnQgb2YgQmVhcmQgT2lsIENvIChCRUMpLCB3aGljaCBob2xkcyBhIDMwLjQgcGN0IHN0YWtlIGluIFVTUENJLCBzYWlkIGxhc3Qgd2VlayBVbmlvbiBQYWNpZmljJ3Mgb2ZmZXIgd2FzICJncm9zc2x5IGluYWRlcXVhdGUuIiAgUmV1dGVyIDM7CjE5ODcwNjAxCVZFTkVaVUVMQSBHRVRTIDMwMCBNTE4gRExSUyBDUkVESVQgRk9SIEFMVU1JTlVNIFZlbmV6dWVsYSBoYXMgb2J0YWluZWQgbW9yZSB0aGFuIDMwMCBtbG4gZGxycyBpbiBmaW5hbmNpbmcgZm9yIGluZHVzdHJpYWwgcHJvamVjdHMgYW5kIGluY3JlYXNlZCBpdHMgbGluZXMgb2YgY3JlZGl0IGZvciBpbXBvcnQgZmluYW5jaW5nLCBmaW5hbmNlIG1pbmlzdGVyIE1hbnVlbCBBenB1cnVhIHNhaWQuICAgICAnV2UgY2FuIHNheSB0aGF0IHdlIGFyZSBhY2hpZXZpbmcgdGhlIHJlY3VwZXJhdGlvbiBvZiBjcmVkaXQsIGJ1dCB0aGF0IGNhbm5vdCBiZSBkb25lIG92ZXJuaWdodCwnIEF6cHVydWEgc2FpZCBpbiBhIHRlbGV2aXNpb24gaW50ZXJ2aWV3LiAgICAgSGUgc2FpZCBhIGNyZWRpdCBhZ3JlZW1lbnQgZm9yIDEwMCBtbG4gbWFya3Mgd2lsbCBiZSBzaWduZWQgdGhpcyB3ZWVrIHdpdGggdGhlIEdlcm1hbiBzdGF0ZSBiYW5rIEtyZWRpdGFuc3RhbHQgZnVyIFdpZWRlcmF1ZmJhdSAoS0ZXKSwgdG8gZmluYW5jZSBhbiBleHBhbnNpb24gb2YgdGhlIHN0YXRlIGFsdW1pbnVtIGNvbXBhbnkgVmVuYWx1bS4gICAgIFRoZSBjcmVkaXQgd2lsbCBiZSBkaXZpZGVkIGludG8gdHdvIHNlcGFyYXRlIGFncmVlbWVudHMsIG9uZSBmb3IgODUgbWxuIG1hcmtzIHdpdGggYW4gaW50ZXJlc3QgcmF0ZSBvZiA2LjEzIHBjdCwgYW5kIGFub3RoZXIgZm9yIDE1IG1sbiBtYXJrcywgYXQgNi4yMCBwY3QuICAgICBBenB1cnVhIHNhaWQgZmluYW5jaW5nIGhhcyBhbHNvIGJlZW4gb2J0YWluZWQgZm9yIGV4cGFuc2lvbiBvZiBBbGNhc2EsIGFub3RoZXIgc3RhdGUgYWx1bWludW0gY29tcGFueSwgYW5kIGZvciBwcm9qZWN0cyBpbiB0aGUgc3RhdGUgc3RlZWwgYW5kIHBldHJvY2hlbWljYWwgaW5kdXN0cmllcy4gICAgIFllc3RlcmRheSwgaGUgc2FpZCBWZW5lenVlbGEgb2J0YWluZWQgdHdvIG5ldyBjcmVkaXRzIG9mIDUuMCBtbG4gZGxycyBlYWNoIGZvciBleHBvcnQgZmluYW5jaW5nLCBvbmUgZnJvbSBDcmVkaXQgZHUgTm9yZCBvZiBGcmFuY2UgYW5kIHRoZSBvdGhlciBmcm9tIEJyaXRhaW4ncyBNaWRsYW5kIEJhbmsuICAgICBUaGUgVmVuZXp1ZWxhbiBnb3Zlcm5tZW50IGhhcyBiZWVuIGNyaXRpY2lzZWQgYXQgaG9tZSBmb3IgZmFpbGluZyB0byBvYnRhaW4gbmV3IGNyZWRpdHMsIGRlc3BpdGUgaXRzIGluc2lzdGVuY2Ugb24gcmVwYXlpbmcgZm9yZWlnbiBkZWJ0IGFjY29yZGluZyB0byB0aGUgdGVybXMgb2YgYSByZXNjaGVkdWxpbmcgYWNjb3JkIHJlYWNoZWQgbGFzdCBGZWJydWFyeS4gICAgIEF6cHVydWEgcmVjZW50bHkgdmlzaXRlZCBUb2t5byBob3BpbmcgdG8gYWNxdWlyZSBuZXcgY3JlZGl0cyBmb3IgaW5kdXN0cmlhbCBleHBhbnNpb25zIGJ1dCBjbGluY2hlZCBubyBhZ3JlZW1lbnRzLiBKYXBhbmVzZSBvZmZpY2lhbHMgcmVmdXNlZCB0byBhbGxvdyBhIG5ldyBpc3N1ZSBvZiBWZW5lenVlbGFuIGJvbmRzIHVudGlsIHRoZSBjb3VudHJ5IHJlZ2FpbnMgaXRzICdUcmlwbGUgQScgY3JlZGl0IHJhdGluZy4gIFJldXRlciAzOwoxOTg3MDYwMQlWRU5FWlVFTEEgSEFTIE5PIFBMQU5TIFRPIFNFRUsgUkVWSVNFRCBERUJUIEFDQ09SRCBWZW5lenVlbGEgaGFzIG5vIHBsYW5zIHRvIHRyeSB0byByZW5lZ290aWF0ZSB0aGUgZGVidCByZXNjaGVkdWxpbmcgYWdyZWVtZW50IGl0IHdvcmtlZCBvdXQgd2l0aCBjcmVkaXRvciBiYW5rcyBpbiBGZWJydWFyeSwgcHVibGljIGZpbmFuY2UgZGlyZWN0b3IgSm9yZ2UgTWFyY2FubyB0b2xkIFJldXRlcnMuICAgICBTcGVha2luZyBoZXJlIGFmdGVyIGEgbWVldGluZyBvZiB0aGUgMTEtbmF0aW9uIENhcnRhZ2VuYSBncm91cCwgTWFyY2FubyBzYWlkIGhlIHdhcyBhd2FyZSBvZiBwb2xpdGljYWwgcHJlc3N1cmUgYXQgaG9tZSB0byByZWR1Y2UgZGVidCBwYXltZW50cyBidXQgZGlkIG5vdCB0aGluayBzdWNoIGEgbW92ZSB3b3VsZCBiZW5lZml0IFZlbmV6dWVsYS4gICAgICJXZSBoYXZlIG5vIGludGVudGlvbiBvZiByZXZpc2luZyB0aGUgdGVybXMgb2YgdGhlIGFjY29yZCwiIGhlIHNhaWQuICJUaGVyZSB3b3VsZCBiZSBsaXR0bGUgdG8gZ2FpbiBhbmQgaW4gZmFjdCBpdCB3b3VsZCBwcm9iYWJseSBiZSBkZXRyaW1lbnRhbC4iICAgICBWZW5lenVlbGEgYWdyZWVkIHdpdGggaXRzIGJhbmsgYWR2aXNvcnkgY29tbWl0dGVlIG9uIGEgMTQuNSB5ZWFyIHJlc2NoZWR1bGluZyBvZiAyMC4zIGJpbGxpb24gZGxycyBpbiBwdWJsaWMgc2VjdG9yIGZvcmVpZ24gZGVidCwgd2l0aCBhbiBpbnRlcmVzdCByYXRlIDcvOCBwY3Qgb3ZlciBMaWJvci4gVGhlIHByZXZpb3VzIGFncmVlbWVudCwgcmVhY2hlZCBhIHllYXIgYmVmb3JlIGJ1dCBuZXZlciBpbXBsZW1lbnRlZCwgd2FzIGZvciAxMi0xLzIgeWVhcnMgd2l0aCBhIDEtMS84IHBjdCBzcHJlYWQuICAgICBJbiBDYXJhY2FzIHRoZXJlIGhhdmUgcmVjZW50bHkgYmVlbiBjYWxscyB0byBpbnZva2UgdGhlIGFncmVlbWVudCdzIGNvbnRpbmdlbmN5IGNsYXVzZSB3aGljaCB0aGUgZ292ZXJubWVudCB1c2VkIGxhc3QgeWVhciB0byBhbWVuZCB0aGUgb3JpZ2luYWwgdGVybXMgYWZ0ZXIgYSA0MCBwY3QgZHJvcCBpbiBvaWwgaW5jb21lLiAgICAgQnV0IE1hcmNhbm8gc2FpZCB0aGUgYnVsayBvZiBwYXltZW50cyB0byBiZSBtYWRlIHRoaXMgeWVhciBhcmUgb24gcHJpdmF0ZSBkZWJ0cyBhbmQgbm9uLXJlc2NoZWR1bGVkIHB1YmxpYyBkZWJ0cy4gICAgIE1hcmNhbm8gc2FpZCBWZW5lenVlbGEsIHdoaWNoIGhhcyByZWR1Y2VkIGl0cyBkZWJ0IGJ5IHNpeCBiaWxsaW9uIGRscnMgc2luY2UgMTk4Mywgc2hvdWxkIGhhdmUgbm8gcHJvYmxlbXMgaW4gcmVwYXlpbmcgcmVzdHJ1Y3R1cmVkIGRlYnQgdGhpcyB5ZWFyIG9yIG5leHQuICAgICBBc2tlZCB3aGV0aGVyIHRoZSBnb3Zlcm5tZW50IGZlbHQgYmFkbHkgdHJlYXRlZCB3aXRoIGl0cyA3LzggcGN0IHNwcmVhZCB3aGVuIE1leGljbyBhbmQgQXJnZW50aW5hIGhhdmUgd29uIGEgMTMvMTYgcGN0IG1hcmdpbiwgTWFyY2FubyBzYWlkIGhlIHN0aWxsIGZlbHQgVmVuZXp1ZWxhIGhhZCBhIGdvb2QgZGVhbC4gICAgICJWZW5lenVlbGEgaGFzIHJlc3RydWN0dXJlZCBpdHMgZGVidCBzbyB0aGF0IG1vc3Qgb2YgaXQgaXMgYmVpbmcgcmVwYWlkIGF0IDcvOCBwY3QsIHdoaWNoIEkgdGhpbmsgaXMgYmV0dGVyIHRoYW4gdGhlIG90aGVyIGNvdW50cmllcywiIGhlIHNhaWQuIFRoZSByZXNjaGVkdWxpbmcgYWNjb3JkIGNvdmVycyBzb21lIDkwIHBjdCBvZiBWZW5lenVlbGEncyBjb21tZXJjaWFsIGJhbmsgZGVidCwgd2hpY2ggYWNjb3VudHMgZm9yIG1vcmUgdGhhbiA5MCBwY3Qgb2YgdGhlIHRvdGFsIHB1YmxpYyBzZWN0b3IgZXh0ZXJuYWwgZGVidC4gICAgIFZlbmV6dWVsYSBoYXMgYWxtb3N0IG5vIGRlYnQgb3V0c3RhbmRpbmcgdG8gbXVsdGlsYXRlcmFsIGFnZW5jaWVzLiAgICAgTWFyY2FubyBzYWlkIGF0dGVtcHRpbmcgdG8gcmV2aXNlIHRoZSByZXNjaGVkdWxpbmcgYWNjb3JkIGEgc2Vjb25kIHRpbWUgd291bGQgcHJvYmFibHkgaHVydCBWZW5lenVlbGEncyBiaWQgdG8gcmVzdG9yZSBpdCBjcmVkaXQgcmF0aW5nIGFuZCByYWlzZSBuZXcgbG9hbnMuICAgICBIZSBzYWlkIFZlbmV6dWVsYSBub3cgb2J0YWlucyB0cmFkZSBjcmVkaXQgbGluZXMgd2l0aG91dCBhIGdvdmVybm1lbnQgZ3VhcmFudGVlLCBzb21ldGhpbmcgdGhhdCBBcmdlbnRpbmEgYW5kIG90aGVycyBhcmUganVzdCBzdGFydGluZyB0byB0cnkgdG8gbmVnb3RpYXRlIGluIHRoZWlyIHJlc3RydWN0dXJpbmcgcGFja2FnZXMuICAgICBWZW5lenVlbGEgaXMgY3VycmVudGx5IHNlZWtpbmcgbG9hbnMgaW4gSmFwYW4gYW5kIFdlc3QgR2VybWFueSB0byBmaW5hbmNlIHN0ZWVsIGFuZCBhbHVtaW5pdW0gZXhwYW5zaW9uLiAgICAgQWNjb3JkaW5nIHRvIGZpbmFuY2UgbWluaXN0ZXIgTWFudWVsIEF6cHVydWEsIGEgMTAwIG1sbiBtYXJrIGNyZWRpdCBoYXMgYmVlbiBsaW5lZCB1cCBmb3IgdGhlIFZlbmFsdW0gYWx1bWluaXVtIHBsYW50LiAgICAgTWFyY2FubyBzYWlkIG5vIG1hbmRhdGUgaGFzIHlldCBiZWVuIGdpdmVuIGZvciBhIHBsYW5uZWQgMTAwIG1sbiBkbHIgYm9uZCBpc3N1ZSwgYWx0aG91Z2ggaGUgY29uZmlybWVkIHRoYXQgdGFsa3Mgd2VyZSBjb250aW51aW5nIHdpdGggTW9yZ2FuIEd1YXJhbnR5IGFuZCBvdGhlciBiYW5rcy4gICAgIEJhbmtpbmcgc291cmNlcyBzYWlkIG9uZSBvcHRpb24gd2FzIHRvIHByaXZhdGVseSBwbGFjZSB0aGUgYm9uZHMgdGhyb3VnaCB0aGUgQ2FyYWNhcy1iYXNlZCBCYW5jbyBkZSBWZW5lenVlbGEsIHdoaWNoIHdvdWxkIHVuZGVyd3JpdGUgdGhlIGlzc3VlLCBidXQgTWFyY2FubyBzYWlkIG5vIGRlY2lzaW9uIGhhcyB5ZXQgYmVlbiBtYWRlLiAgUkVVVEVSIDM7CjE5ODcwNjAxCVZFTkVaVUVMQSBPQlRBSU5FRCAzMDAgTUlMTElPTiBETFJTIElOIENSRURJVFMgdmVuZXp1ZWxhIGhhcyBvYnRhaW5lZCBtb3JlIHRoYW4gMzAwIG1sbiBkbHJzIGluIGZpbmFuY2luZyBmb3IgaW5kdXN0cmlhbCBwcm9qZWN0cyBhbmQgaGFzIGFsc28gaW5jcmVhc2VkIGl0cyBsaW5lcyBvZiBjcmVkaXQgZm9yIGltcG9ydCBmaW5hbmNpbmcsIGZpbmFuY2UgbWluaXN0ZXIgbWFudWVsIGF6cHVydWEgc2FpZC4gICAgICJ3ZSBjYW4gc2F5IHRoYXQgd2UgYXJlIGFjaGlldmluZyB0aGUgcmVjdXBlcmF0aW9uIG9mIGNyZWRpdCwgYnV0IHRoYXQgY2Fubm90IGJlIGRvbmUgb3Zlcm5pZ2h0LCIgYXpwdXJ1YSBzYWlkIGluIGEgdGVsZXZpc2lvbiBpbnRlcnZpZXcuICAgICBBenB1cnVhIHNhaWQgYSBjcmVkaXQgYWdyZWVtZW50IGZvciAxMDAgbWxuIG1hcmtzIHdpbGwgYmUgc2lnbmVkIHRoaXMgd2VlayB3aXRoIHRoZSBnZXJtYW4gc3RhdGUgYmFuayBrcmVkaXRhbnN0YWx0IGZ1ciB3aWVkZXJhdWZiYXUgKGtmdyksIHRvIGZpbmFuY2UgYW4gZXhwYW5zaW9uIG9mIHRoZSBzdGF0ZSBhbHVtaW51bSBjb21wYW55IHZlbmFsdW0uICAgICBUaGUgY3JlZGl0IHdpbGwgYmUgZGl2aWRlZCBpbnRvIHR3byBzZXBhcmF0ZSBhZ3JlZW1lbnRzLCBvbmUgZm9yIDg1IG1sbiBtYXJrcyB3aXRoIGFuIGludGVyZXN0IHJhdGUgb2YgNi4xMyBwY3QsIGFuZCBhbm90aGVyIGZvciAxNSBtbG4gbWFya3MsIGF0IDYuMjAgcGN0LiBBenB1cnVhIHNhaWQgZmluYW5jaW5nIGhhZCBhbHNvIGJlZW4gb2J0YWluZWQgZm9yIHRoZSBleHBhbnNpb24gb2YgYWxjYXNhLCBhbm90aGVyIHN0YXRlIGFsdW1pbnVtIGNvbXBhbnksIGFzIHdlbGwgYXMgZm9yIHByb2plY3RzIGluIHRoZSBzdGF0ZSBzdGVlbCBhbmQgcGV0cm9jaGVtaWNhbCBpbmR1c3RyaWVzLiBIZSBkaWQgbm90IHByb3ZpZGUgZGV0YWlscy4gICAgIFllc3RlcmRheSwgYWZ0ZXIgYSBtZWV0aW5nIG9mIGxlYWRlcnMgb2YgdGhlIHJ1bGluZyBhY2Npb24gZGVtb2NyYXRpY2EgcGFydHksIGF6cHVydWEgc2FpZCB2ZW5lenVlbGEgaGFkIG9idGFpbmVkIHR3byBuZXcgY3JlZGl0cyBvZiBmaXZlIG1sbiBkbHJzIGVhY2ggZm9yIGV4cG9ydCBmaW5hbmNpbmcsIG9uZSBmcm9tIGNyZWRpdCBkdSBub3JkIG9mIGZyYW5jZSBhbmQgdGhlIG90aGVyIGZyb20gdGhlIG1pZGxhbmQgYmFuayBvZiBncmVhdCBicml0YWluLiAgICAgVGhlIGZpbmFuY2UgbWluaXN0ZXIncyBzdGF0ZW1lbnRzIGNhbWUgYXMgdGhlIGdvdmVybm1lbnQgaXMgdW5kZXIgc2hhcnAgY3JpdGljaXNtIGZvciBmYWlsaW5nIHRvIG9idGFpbiBuZXcgY3JlZGl0cywgZGVzcGl0ZSBpdHMgaW5zaXN0ZW5jZSBvbiByZXBheWluZyB0aGUgZm9yZWlnbiBkZWJ0IGFjY29yZGluZyB0byB0aGUgdGVybXMgb2YgYSByZXNjaGVkdWxpbmcgYWNjb3JkIHJlYWNoZWQgbGFzdCBmZWJydWFyeS4gICAgIEF6cHVydWEgYW5kIG90aGVyIHNlbmlvciBlY29ub21pYyBvZmZpY2FscyByZXR1cm5lZCBmcm9tIGEgdHJpcCB0byB0b2t5byBsYXN0IHdlZWsgaW4gd2hpY2ggdGhleSBob3BlZCB0byBhY3F1aXJlIG5ldyBjcmVkaXRzIGZvciBpbmR1c3RyaWFsIGV4cGFuc2lvbnMsIGJ1dCBubyBhZ3JlZW1lbnRzIHdlcmUgcmVhY2hlZC4gICAgIEphcGFuZXNlIG9mZmljaWFscyBhbHNvIHJlZnVzZWQgdG8gYWxsb3cgYSBuZXcgaXNzdWUgb2YgdmVuZXp1ZWxhbiBkZWJ0IGJvbmRzIGJlY2F1c2UgdW50aWwgdGhlIGNvdW50cnkgcmVnYWlucyBpdHMgJ3RyaXBsZSBhJyBjcmVkaXQgY2xhc3NpZmljYXRpb24uICBSZXV0ZXIgMzsKMTk4NzA2MDEJVkVORVpVRUxBIFRJR0hURU5TIEZPUkVJR04gRVhDSEFOR0UgUkVTVFJJQ1RJT05TIFZlbmV6dWVsYSdzIGNlbnRyYWwgYmFuayBoYXMgb3JkZXJlZCBWZW5lenVlbGFuIGJhbmtzIGFuZCBleGNoYW5nZSBob3VzZXMgdG8gY2Vhc2UgZm9yZWlnbiBleGNoYW5nZSBvcGVyYXRpb25zIHdpdGggYnJva2VycyBiYXNlZCBvdXRzaWRlIHRoZSBjb3VudHJ5LCBhY2NvcmRpbmcgdG8gYSBjb3B5IG9mIGEgY2VudHJhbCBiYW5rIHRlbGV4IG1hZGUgYXZhaWxhYmxlIHRvIFJldXRlcnMuICAgICBUaGUgbWVhc3VyZSwgY29uZmlybWVkIGJ5IGEgYnJva2VyYWdlIGZpcm0gaGVyZSwgaGFzIGVmZmVjdGl2ZWx5IGN1dCBvZmYgYWxsIGZvcmVpZ24gcGFydGljaXBhdGlvbiBpbiBWZW5lenVlbGEncyB2b2xhdGlsZSBjdXJyZW5jeSBtYXJrZXQuICAgICBUaGUgdGVsZXgsIGlzc3VlZCBvbiBNYXkgMTksIHdhcyBzaWduZWQgYnkgQ2FybG9zIEhlcm5hbmRleiBEZWxmaW5vLCBtYW5hZ2VyIG9mIHRoZSBiYW5rJ3MgZGVwYXJ0bWVudCBvZiBpbnRlcm5hdGlvbmFsIG9wZXJhdGlvbnMuICAgICBUaGUgdGVsZXggc2FpZCB0aGUgcmVzdHJpY3Rpb24gb24gYnVzaW5lc3Mgd2l0aCBmb3JlaWduIGJyb2tlcnMgaXMgaW4gbGluZSB3aXRoIGFuIGVhcmxpZXIgbWVhc3VyZSBwcm9oaWJpdGluZyBmb3JlaWduIGV4Y2hhbmdlIGhvdXNlcyBmcm9tIHNlbGxpbmcgZG9sbGFycyBvciBvdGhlciBmb3JlaWduIGN1cnJlbmNpZXMgdG8gYW55b25lIGxpdmluZyBvdXRzaWRlIFZlbmV6dWVsYS4gICAgIEluIHJlY2VudCB3ZWVrcyB0aGUgVmVuZXp1ZWxhbiBnb3Zlcm5tZW50IGhhcyBkZW5pZWQgcnVtb3VycyB0aGF0IGl0IGludGVuZHMgdG8gaW1wb3NlIGZvcmVpZ24gZXhjaGFuZ2UgY29udHJvbHMgdG8gcHJvcCB1cCB0aGUgd2Vha2VuaW5nIGJvbGl2YXIuICAgICBCdXQgYnJva2VycyBzYWlkIHRoZSBjZW50cmFsIGJhbmsncyBtb3ZlIGlzIHNlZW4gYXMgYSBkZSBmYWN0byBjdXJyZW5jeSBjb250cm9sLiAiSXQgaXMgZGVmaW5pdGVseSBhIGNvbnRyb2wgaW4gdGhlIHNlbnNlIHRoYXQgdGhlcmUncyBubyBsb25nZXIgY29tcGxldGUgZnJlZWRvbSB0byBvcGVyYXRlLCIgb25lIGJyb2tlciBoZXJlIHNhaWQuICAgICAiR3JhZHVhbGx5IHRoZXkncmUgaW1wb3NpbmcgcmVzdHJpY3Rpb25zIGFuZCB0aGUgZGlyZWN0aW9uIGlzIHRvd2FyZHMgY29tcGxldGUgY29udHJvbCwiIHRoZSBicm9rZXIgc2FpZC4gICAgIFRoZSBicm9rZXIsIHdobyByZXF1ZXN0ZWQgYW5vbnltaXR5LCBzYWlkIHZpcnR1YWxseSBhbGwgaGlzIFZlbmV6dWVsYW4gY3VzdG9tZXJzIGhhZCBzdG9wcGVkIGRvaW5nIGJ1c2luZXNzIHdpdGggaGltIHNpbmNlIHRoZSBjZW50cmFsIGJhbmsgaXNzdWVkIHRoZSB0ZWxleCBhbmQgZm9sbG93ZWQgaXQgdXAgd2l0aCB0ZWxlcGhvbmUgY2FsbHMuICAgICBIZSBzYWlkIHRoYXQgYmVmb3JlIHRoZSByZXN0cmljdGlvbiB3YXMgaW1wb3NlZCB0aGUgdm9sdW1lIG9mIGhpcyBmaXJtJ3MgdHJhbnNhY3Rpb25zIHdpdGggVmVuZXp1ZWxhIHdhcyBhYm91dCAxMCBtbG4gZGxycyBhIGRheS4gIkl0IHdhcyBhIGZyZW5ldGljIG1hcmtldCwgaXQgd2FzIHJlYWxseSBxdWl0ZSBhY3RpdmUsIiBoZSBzYWlkLiAgICAgVGhlIGJyb2tlciBzYWlkIGhlIHNhdyBubyBsb2dpY2FsIGV4cGxhbmF0aW9uIGZvciB0aGUgcHJvaGliaXRpb24gYmVjYXVzZSBoaXMgZmlybSBvbmx5IGFjdGVkIGFjdCBhcyBhbiBpbnRlcm1lZGlhcnkgYmV0d2VlbiBWZW5lenVlbGFuIGJyb2tlcnMsIGV4Y2hhbmdlIGhvdXNlcyBhbmQgYmFua3MuICAgICAiV2Ugd2VyZW4ndCBidXlpbmcgZG9sbGFycyBmcm9tIFZlbmV6dWVsYW5zLCB0aGF0J3MgcmlkaWN1bG91cywiIGhlIHNhaWQuICJUaGV5J3ZlIGJlZW4gb24gYSByYW1wYWdlIGFnYWluc3QgZm9yZWlnbmVycy4iICAgICBUaGUgYnJva2VyIG5vdGVkIHRoYXQgdHdvIG1vbnRocyBhZ28gVmVuZXp1ZWxhJ3MgY2VudHJhbCBiYW5rIHF1aWV0bHkgYW5ub3VuY2VkIHRoYXQgYmFua3MgZG9pbmcgZm9yZWlnbiBleGNoYW5nZSBidXNpbmVzcyBvdXRzaWRlIFZlbmV6dWVsYSB3b3VsZCBoYXZlIHRvIHJlc3BlY3QgYSBuZXcgMjAwIHBjdCByZXNlcnZlIHJlcXVpcmVtZW50LiAgICAgSW4gRmVicnVhcnksIHRoZSBjZW50cmFsIGJhbmsgYWxzbyBwcm9oaWJpdGVkIHRyYWRpbmcgaW4gYm9saXZhciBmdXR1cmVzLCB0aGUgYnJva2VyIHNhaWQuICAgICAiV2UgdXNlZCB0byBoYXZlIGEgZm9yd2FyZCBtYXJrZXQsIiBoZSBzYWlkLiAiRm9yIGEgc21hbGwgY3VycmVuY3kgaXQgd2FzIG1pcmFjdWxvdXMuIiAgICAgSGUgc2FpZCB0aGUgYm9saXZhciwgd2hpY2ggYXZlcmFnZWQgMjAuMjkgdG8gdGhlIFUuUy4gRG9sbGFyIGluIDE5ODYsIHdvdWxkIGNvbnRpbnVlIHRvIHNsaXAgZnJvbSBpdHMgY3VycmVudCByYW5nZSBvZiAyOC4zNSB0byAyOC41MCBiZWNhdXNlIHRoZSBjZW50cmFsIGJhbmsgd2FzIHJhcGlkbHkgcnVubmluZyBvdXQgb2YgZm9yZWlnbiByZXNlcnZlcyB0byBzdXBwb3J0IHRoZSBjdXJyZW5jeSBvbiB0aGUgZnJlZSBtYXJrZXQuICBSRVVURVIgMzsKMTk4NzA2MDEJVklERU8gPEpVS0UuTz4gVE8gQlVZIFBSRVNJREVOVCdTIFNIQVJFUyBWaWRlbyBKdWtlYm94IE5ldHdvcmsgaW5jIHNhaWQgaXQgc2lnbmVkIGEgbGV0dGVyIG9mIGludGVudCB0byBwdXJjaGFzZSB1cCB0byAzLjUgbWxuIHNoYXJlcyBvZiB0aGUgZm91ciBtbG4gc2hhcmVzIG9mIHRoZSBjb21wYW55J3MgY29tbW9uIHN0b2NrIGZyb20gaXRzIGZvdW5kZXIgYW5kIHByZXNpZGVudCwgU3RldmVuIFBldGVycy4gICAgIFZpZGVvIHNhaWQgdGhlIHNoYXJlcyBhcmUgdG8gYmUgcHVyY2hhc2VkIGJ5IExvdWlzIFdvbGZzb24gSUlJLCBzZW5pb3IgdmljZSBwcmVzaWRlbnQgb2YgPFZlbnR1cmUgVyBJbmM+LCA8TmF0aW9uYWwgQnJhbmRzIEluYz4sIEouIFBhdHJpY2sgTWljaGFlbHMgSnIgYW5kIDxDRUEgSW52ZXN0b3JzIFBhcnRuZXJzaGlwIElJPi4gICAgIFZpZGVvIHNhaWQgaXQgY3VycmVudGx5IGhhcyA3LDUyNSwwMDAgc2hhcmVzIG9mIGNvbW1vbiBzdG9jayBvdXRzdGFuZGluZy4gVGhlIGNvbXBhbnkgc2FpZCBpdCB3ZW50IHB1YmxpYyBlYXJsaWVyIHRoaXMgeWVhciBhbmQgaXRzIGN1cnJlbnQgYXNrIHByaWNlIHdhcyAxLTcvOC4gICAgICAgICBDRUEgSW52ZXN0b3JzIFBhcnRuZXJzaGlwIElJIGhhcyBwbGFubmVkIHRoZSBwYXJ0bmVyc2hpcCB0byBiZSBvcGVyYXRlZCBieSBNaWNoYWVscywgd2hvIGlzIGNoYWlybWFuIGFuZCBwcmVzaWRlbnQgb2YgPENvbW11bmljYXRpb25zIEVxdWl0eSBBc3NvY2lhdGVzIEluYz4sIGEgbWVkaWEgYnJva2VyYWdlIGZpcm0sIFZpZGVvIHNhaWQuICAgICBUaGUgdGVybXMgb2YgdGhlIHByb3Bvc2VkIHRyYW5zYWN0aW9uIHdlcmUgbm90IGRpc2Nsb3NlZC4gICAgIFZpZGVvIHNhaWQgUGV0ZXJzIHdpbGwgY29udGludWUgYXMgY2hhaXJtYW4gYW5kIHByZXNpZGVudCBvZiB0aGUgY29tcGFueS4gICAgIEl0IHNhaWQgdGhlIHBhcnRpZXMgaGF2ZSB1bnRpbCBKdW5lIDI5IHRvIGFncmVlIHRvIGFsbCB0ZXJtcyBvZiB0aGUgbGV0dGVyIG9mIGludGVudC4gIFJldXRlciAzOwoxOTg3MDYwMQlXQVNURSBNQU5BR0VNRU5UIDxXTVg+IEJPQVJEIE9LQVlTIE1PRFVMQUlSRSBCVVkgV2FzdGUgTWFuYWdlbWVudCBJbmMgc2FpZCBpdHMgZGlyZWN0b3JzIGFwcHJvdmVkIGEgTWF5IDEwIGFjY29yZCB3aXRoIE1vZHVsYWlyZSBJbmR1c3RyaWVzIDxNT0RYLk8+IHVuZGVyIHdoaWNoIFdhc3RlIE1hbmFnZW1lbnQgd291bGQgYWNxdWlyZSBNb2R1bGFpcmUuICAgICBVbmRlciB0aGUgYWdyZWVtZW50LCBNb2R1bGFpcmUgc3RvY2tob2xkZXJzIHdvdWxkIHJlY2VpdmUgMTYgZGxycyBpbiBXYXN0ZSBNYW5hZ2VtZW50IHN0b2NrIGZvciBlYWNoIE1vZHVsYWlyZSBzaGFyZS4gICAgIE1vZHVsYWlyZSBoYXMgc2NoZWR1bGVkIGEgc3BlY2lhbCBzaGFyZWhvbGRlcnMgbWVldGluZyBmb3IgSnVseSAxNSB0byB2b3RlIG9uIHRoZSBtZXJnZXIuIFdhc3RlIE1hbmFnZW1lbnQgc2FpZCBpdCBoYXMgcmVjZWl2ZWQgcHJveGllcyBmcm9tIGhvbGRlcnMgb2YgNDkuNiBwY3Qgb2YgTW9kdWxhaXJlJ3MgY29tbW9uIHN0b2NrIHRoYXQgY291bGQgYmUgdm90ZWQgaW4gZmF2b3Igb2YgdGhlIG1lcmdlci4gICAgIFRoZSBIYXJ0LVNjb3R0LVJvZGluZyB3YWl0aW5nIHBlcmlvZCBvbiB0aGUgdGFrZW92ZXIgd2lsbCBleHBpcmUgSnVuZSAxNy4gIFJldXRlciAzOwoxOTg3MDYwMQlXSU5ET1cgRk9SIEJBTksgQUlEIElOIEtVV0FJVCBSRU1BSU5TIFNIVVQgVGhlIEt1d2FpdCBDZW50cmFsIEJhbmsga2VwdCBpdHMgd2luZG93IGZvciBmdW5kcyB0byB0aGUgZG9tZXN0aWMgaW50ZXJiYW5rIGRlcG9zaXQgbWFya2V0IHNodXQgYXMgYmFua3MgcmV0dXJuZWQgZnJvbSBhIGZvdXIgZGF5IGhvbGlkYXksIGRlYWxlcnMgc2FpZC4gICAgIFRoZSBtb3ZlIGRyb3ZlIHNob3J0LXRlcm0gaW50ZXJlc3QgcmF0ZXMgc2hhcnBseSBoaWdoZXIsIHdpdGggb3Zlcm5pZ2h0IGFuZCB0b21vcnJvdy1uZXh0IGZ1bmRzIG1vcmUgdGhhbiBkb3VibGluZyBmcm9tIGxhc3QgV2VkbmVzZGF5IGFuZCBoaXR0aW5nIDIwIHBjdC4gICAgIFRoZXJlIHdlcmUgZmV3IG9mZmVycyBpbiBhIHRpZ2h0IG1hcmtldCBhbmQgdHJhZGVycyBzY3JhbWJsZWQgZm9yIGFueSBhdmFpbGFibGUgZnVuZHMuIE9uZS1tb250aCB0byBvbmUteWVhciBkZXBvc2l0cyB3ZXJlIGluZGljYXRlZCBvbmUgcG9pbnQgaGlnaGVyIGF0IGVpZ2h0LCBzZXZlbiBwY3QgYnV0IHRoZXJlIHdhcyBsaXR0bGUgYWN0aXZpdHkgYXQgdGhlIGxvbmdlciBlbmQgb2YgdGhlIG1hcmtldC4gICAgIEJhbmtlcnMgc2VlIHRoZSBzdXNwZW5zaW9uIG9mIGNlbnRyYWwgYmFuayBhaWQgYXMgYSBkZWxpYmVyYXRlIG1vdmUgdG8gZHJpdmUgdXAgS3V3YWl0aSBkaW5hciBpbnRlcmVzdCByYXRlcyBhbmQgc3RlbSBhIGZsb3cgb2YgZnVuZHMgb3V0IG9mIHRoZSBjb3VudHJ5LCB3aGVyZSBtYXJrZXQgbmVydm91c25lc3MgaXMgaW5jcmVhc2luZyBvdmVyIHRoZSBncm93aW5nIHRlbnNpb24gaW4gdGhlIEd1bGYuICAgICBUaGUgY2VudHJhbCBiYW5rJ3MgbW92ZSBoYXMgYmVlbiBjb21iaW5lZCB3aXRoIGEgc3RlYWR5IGN1dCBpbiB0aGUgZGluYXIgZXhjaGFuZ2UgcmF0ZS4gICAgIFRvZGF5J3MgcmF0ZSB3YXMgcmVkdWNlZCB0byAwLjI3OTM5LzczIHRvIHRoZSBkb2xsYXIgZnJvbSAwLjI3NzU4LzkyIG9uIFdlZG5lc2RheSBiZWZvcmUgdGhlIGZvdXIgZGF5IGJhbmsgaG9saWRheSB0aGF0IGNlbGVicmF0ZWQgdGhlIGVuZCBvZiB0aGUgZmFzdGluZyBtb250aCBvZiBSYW1hZGFuLiAgUkVVVEVSIDM7CjE5ODcwNjAxCVpBTUJJQSBDVVRTIFBSSUNFUyBBUyBUUk9PUFMgUEFUUk9MIENPUFBFUkJFTFQgVGhlIFphbWJpYW4gZ292ZXJubWVudCB0b2RheSBhbm5vdW5jZWQgbWlub3IgcHJpY2UgY3V0cyBmb3IgZXNzZW50aWFsIGNvbW1vZGl0aWVzIGFzIHBhcnQgb2YgaXRzIG5ldyBlY29ub21pYyBzdHJhdGVneSwgd2hpbGUgcG9saWNlIGFuZCB0cm9vcHMgcGF0cm9sbGVkIHRoZSBub3J0aGVybiBDb3BwZXJiZWx0IHRvIHByZXZlbnQgYW55IG91dGJyZWFrcyBvZiByaW90aW5nLiAgICAgSG93ZXZlciwgc3RhcGxlIGZvb2RzLCBzdWNoIGFzIGJyZWFkLCBzdWdhciBhbmQgbWFpemUgbWVhbCwgd2VyZSBub3QgYWZmZWN0ZWQgYnkgdGhlIGN1dHMgYW5kIG1hbnkgcGVvcGxlIHNhaWQgdGhpcyBjb3VsZCBwcm92b2tlIHRyb3VibGUgZnJvbSBkaXNncnVudGxlZCBlbGVtZW50cyB3aG8gaGFkIGV4cGVjdGVkIG1vcmUgc3dlZXBpbmcgcmVkdWN0aW9ucy4gICAgIE9ic2VydmVycyBpbiB0aGUgY2FwaXRhbCBleHByZXNzZWQgZGlzaWxsdXNpb25tZW50IHdpdGggdGhlIHNtYWxsIGV4dGVudCBvZiB0aGUgcHJpY2UgY3V0cywgd2hpY2ggcmFuZ2VkIHVwIHRvIDEwIHBjdCBvbiBpdGVtcyBzdWNoIGFzIGJsYW5rZXRzLCBzb2FwLCBkZXRlcmdlbnRzIGFuZCBiYWJ5IGZvb2QuICAgICBSZXNpZGVudHMgaW4gdGhlIENvcHBlcmJlbHQgY29udGFjdGVkIGJ5IHRlbGVwaG9uZSBzYWlkIGdvdmVybm1lbnQgZm9yY2VzIGhhZCBzZXQgdXAgcm9hZGJsb2NrcyBhcm91bmQgdGhlIG1haW4gdG93bnMuICAgICBJbiBMdXNha2EsIGJ1c2luZXNzIHdlbnQgb24gYXMgdXN1YWwgYW5kIHRoZXJlIHdhcyBubyBzaWduIG9mIHRyb29wcyBvciBwb2xpY2UgcmVpbmZvcmNlbWVudHMgb24gdGhlIHN0cmVldHMuICAgICBQcmVzaWRlbnQgS2F1bmRhIGhhZCBvcmRlcmVkIHRoZSBwcmljZSByZWR1Y3Rpb25zIHRvIHRha2UgYWNjb3VudCBvZiBsb3dlciBpbXBvcnQgY29zdHMgZm9sbG93aW5nIHRoZSByZXZhbHVhdGlvbiBvZiB0aGUga3dhY2hhIHRvIGEgZml4ZWQgcmF0ZSBvZiBlaWdodCBwZXIgZGxyIGZyb20gMjEgb24gTWF5IDEuICAgICBUaGUgcmV2YWx1YXRpb24gZm9ybWVkIHBhcnQgb2YgYSBuZXcgZ28taXQtYWxvbmUgZWNvbm9taWMgc3RyYXRlZ3kgd2hpY2ggS2F1bmRhIGFkb3B0ZWQgdG8gcmVwbGFjZSBaYW1iaWEncyBJTUYgYXVzdGVyaXR5IHByb2dyYW0uICAgICBMYWJvdXIgbGVhZGVycyBpbiB0aGUgQ29wcGVyYmVsdCBzYWlkIGxhc3Qgd2VlayBnYW5ncyBvZiB1bmVtcGxveWVkIHlvdXRocyB3ZXJlIGJlaW5nIGZvcm1lZCBpbiB0aGUgcG9saXRpY2FsbHkgdm9sYXRpbGUgcmVnaW9uIHRvIHRha2UgYWN0aW9uIGFnYWluc3Qgc2hvcHMgdGhhdCBkaWQgbm90IHJlZHVjZSB0aGVpciBwcmljZXMgYWZ0ZXIgdG9kYXkncyBkZWFkbGluZS4gRmlmdGVlbiBwZW9wbGUgd2VyZSBraWxsZWQgaW4gdGhlIENvcHBlcmJlbHQgZHVyaW5nIGZvb2QgcmlvdHMgbGFzdCBEZWNlbWJlciBhZnRlciB0aGUgZ292ZXJubWVudCB0cmllZCB0byBsaWZ0IG1haXplIHN1YnNpZGllcy4gIFJldXRlciAzOwoxOTg3MDYwMglLVVdBSVQgUkVKRUNUUyBJUkFOSUFOIFNQWSBCT0FUIENIQVJHRVMgS3V3YWl0LCBhIHRhcmdldCBvZiBJcmFuaWFuIGFuZ2VyIG92ZXIgdGhlIGVtaXJhdGUncyBiYWNraW5nIGZvciBJcmFxIGluIHRoZSBHdWxmIHdhciwgdG9kYXkgcmVqZWN0ZWQgY2hhcmdlcyB0aGF0IGZpc2hpbmcgdmVzc2VscyBzZWl6ZWQgcmVjZW50bHkgYnkgSXJhbiB3ZXJlIHNweSBib2F0cy4gICAgICJUaGVyZSBhcmUgbm8gYmFzZXMgb2YgdHJ1dGggdG8gdGhlIGNvbnRlbnRzIG9mIHRoZSBJcmFuaWFuIGFjY3VzYXRpb24gb24gdGhlIG5hdHVyZSBvZiB0aGUgb3BlcmF0aW9ucyBvZiB0aGUgdmVzc2VscyByZWNlbnRseSB0YWtlbiBpbnRvIGN1c3RvZHkgYnkgSXJhbi4gVGhlc2UgdmVzc2VscyB3ZXJlIG91dCBmaXNoaW5nLCIgdGhlIEZvcmVpZ24gTWluaXN0cnkgc2FpZCBpbiBhIHN0YXRlbWVudC4gICAgIEl0IHNhaWQgSXJhbmlhbiBDaGFyZ2UgZCdBZmZhaXJlcyBNb2hhbW1hZCBCYXFlcmkgd2FzIHN1bW1vbmVkIGJ5IHRoZSBNaW5pc3RyeSB5ZXN0ZXJkYXkgdG8gY29uZmVyIHdpdGggRm9yZWlnbiBVbmRlcnNlY3JldGFyeSBTdWxlaW1hbiBNYWplZCBhbC1TaGFoZWVuLiAgICAgVGhlIElyYW5pYW4gTmV3cyBBZ2VuY3kgSVJOQSBzYWlkIG9uIFN1bmRheSBJcmFuIGhhZCBzZWl6ZWQgc2V2ZW4gS3V3YWl0aSBzcGVlZCBib2F0cyBhbmQgZGV0YWluZWQgdGhlaXIgY3Jldywgd2hvIGNvbmZlc3NlZCB0byBzcHlpbmcgZm9yIElyYXEgdW5kZXIgdGhlIGNvdmVyIG9mIGZpc2hpbmcuICAgICBJdCBzYWlkIHRoZSBib2F0cyB3ZXJlIGludGVyY2VwdGVkIGluIHRoZSBLaHVyIEFiZHVsbGFoIHdhdGVyd2F5IHdoaWNoIHNlcGFyYXRlcyBLdXdhaXQgYW5kIElyYXEncyBGYXcgcGVuaW5zdWxhIGF0IHRoZSBoZWFkIG9mIHRoZSBHdWxmLCBjYXB0dXJlZCBieSBJcmFuIGxhc3QgeWVhci4gICAgIFRoZSBLdXdhaXRpIHJlc3BvbnNlIGNhbWUgYXMgSXJhbmlhbiBlbnZveXMgdG91cmVkIEd1bGYgQXJhYiBzdGF0ZXMgc2F5aW5nIHJlc3BvbnNpYmlsaXR5IGZvciBzZWN1cml0eSBhbmQgc3RhYmlsaXR5IGluIHRoZSB3YXRlcndheSB3YXMgYSByZWdpb25hbCBtYXR0ZXIuIEEgVS5TLiBTZW5hdGUgdGVhbSB3YXMgc2NoZWR1bGVkIHRvZGF5IHRvIG1lZXQgS3V3YWl0J3MgQ3Jvd24gUHJpbmNlIGFuZCBQcmltZSBNaW5pc3RlciBTaGVpa2ggU2FhZCBhbC1BYmR1bGxhIGFsLVNhYmFoIGFuZCB0aGUgZGVmZW5jZSBhbmQgb2lsIG1pbmlzdGVycy4gICAgIFRvZGF5J3MgRm9yZWlnbiBNaW5pc3RyeSBzdGF0ZW1lbnQsIGNhcnJpZWQgYnkgdGhlIEt1d2FpdCBOZXdzIEFnZW5jeSBLVU5BLCBzYWlkIHRoZSByZWNlbnQgZGV0ZW50aW9uIG9mIEt1d2FpdGkgZmlzaGluZyB2ZXNzZWxzIGJ5IElyYW4gd2FzIG5vdCB0aGUgZmlyc3QuICAgICBUZWhyYW4gaW4gdGhlIHBhc3QgaGFkIGhlbGQgYmFjayBhIG51bWJlciBvZiB2ZXNzZWxzIEt1d2FpdCBoYWQgc291Z2h0IHRvIHJlbGVhc2UgdGhyb3VnaCBkaXBsb21hdGljIGNvbnRhY3RzLCBpdCBzYWlkLiAgICAgIkhvd2V2ZXIsIEt1d2FpdCBpcyBwZXJwbGV4ZWQgdGhhdCB0aGlzIHRpbWUgdGhlIElyYW5pYW4gY2hhcmdlcyBhcmUgYWNjb21wYW5pZWQgYnkgYWNjdXNhdGlvbnMgdGhhdCB0aGUgdmVzc2VscyB3ZXJlIHVuZGVydGFraW5nIGVzcGlvbmFnZSBhY3Rpdml0aWVzLCIgaXQgc2FpZC4gICAgIFNoYWhlZW4gY29uZGVtbmVkIHRoZSBkZXRlbnRpb25zIGFuZCBhY2N1c2F0aW9ucywgYW5kIGFza2VkIFRlaHJhbiB0byBmcmVlIGFsbCBmaXNoaW5nIGJvYXRzIGFuZCBzYWlsb3JzIGhlbGQgYnkgSXJhbiwgdGhlIHN0YXRlbWVudCBzYWlkLiAgUkVVVEVSIDM7CjE5ODcwNjAyCUxBV1NPTiBDQUxMUyBJTlRFUlZFTlRJT04gUFJPT0YgT0YgU1RBQklMSVRZIEdPQUwgVGhlIHNjYWxlIG9mIGZvcmVpZ24gZXhjaGFuZ2UgaW50ZXJ2ZW50aW9uIHRoZSBCYW5rIG9mIEVuZ2xhbmQgaGFzIGNhcnJpZWQgb3V0IHJlY2VudGx5IGlzIGNsZWFyIHByb29mIG9mIEJyaXRhaW4ncyBkZXRlcm1pbmF0aW9uIHRvIHN0YWJpbGlzZSBleGNoYW5nZSByYXRlcyBhcyBhZ3JlZWQgYmV0d2VlbiB0aGUgR3JvdXAgb2YgU2V2ZW4gaW5kdXN0cmlhbGlzZWQgY291bnRyaWVzIGluIFBhcmlzIGluIEZlYnJ1YXJ5LCBDaGFuY2VsbG9yIG9mIHRoZSBFeGNoZXF1ZXIgTmlnZWwgTGF3c29uIHNhaWQuICAgICBTYXlpbmcgaGUgd2FzICJjb250ZW50IiB3aXRoIHN0ZXJsaW5nJ3MgY3VycmVudCB2YWx1ZSwgTGF3c29uIHRvbGQgcmVwb3J0ZXJzIGhlIHdhbnRlZCAidG8gbWFpbnRhaW4gdGhlIGV4Y2hhbmdlIHJhdGUgc3RhYmlsaXR5IHdlIGhhdmUgYWxsIHNpZ25lZCB1cCBmb3IuIiBIZSBkZWNsaW5lZCB0byBzYXkgaWYgaGUgZmF2b3VyZWQgYSByaXNlIG9yIGEgZmFsbCBmcm9tIHByZXNlbnQgc3RlcmxpbmcgbGV2ZWxzLiAgTWF5IGN1cnJlbmN5IHJlc2VydmVzLCBvdXQgdG9kYXksIHNob3dlZCBhIHJlY29yZCA0LjggYmlsbGlvbiBzdGcgcmlzZSwgcG9pbnRpbmcgdG8gbWFzc2l2ZSBjdXJyZW5jeSBpbnRlcnZlbnRpb24uICAgICBJbiBBcHJpbCwgcmVzZXJ2ZXMgcm9zZSBhIGhlZnR5IDIuOSBiaWxsaW9uIHN0Zy4gICAgIFBvaW50aW5nIHRvIHRoZSByZXNlcnZlcyBkYXRhLCBMYXdzb24gc2FpZCwgIldlIGhhdmUgYmVlbiBwbGF5aW5nIGEgdmVyeSBmdWxsIHBhcnQgb3Vyc2VsdmVzIiBpbiBtZWV0aW5nIG91ciBjb21taXRtZW50cyB0b3dhcmQgZXhjaGFuZ2UgcmF0ZSBzdGFiaWxpdHkgYXMgYWdyZWVkIGluIFBhcmlzLiAgICAgIldlIHdpc2ggdG8gc2VlIGl0IChzdGFiaWxpdHkpIGNvbnRpbnVpbmcsIiBoZSBhZGRlZC4gICAgIEFza2VkIHdoaWNoIHRlY2huaXF1ZXMgd2VyZSBhdmFpbGFibGUgdG8gcHJlc2VydmUgc3RhYmlsaXR5LCBMYXdzb24gc2FpZCBib3RoIGNlbnRyYWwgYmFuayBpbnRlcnZlbnRpb24gYW5kIGludGVyZXN0IHJhdGUgY2hhbmdlcyBjb3VsZCBiZSB1c2VkIHRvIHRhY2tsZSAidGhlIG1hcmtldCBwcmVzc3VyZXMgdGhlcmUgYXJlIGZyb20gdGltZSB0byB0aW1lLiIgICAgICJJbnRlcmVzdCByYXRlIHN0YWJpbGl0eSBpcyBub3QgYW4gb2JqZWN0aXZlIGluIHRoYXQgc2Vuc2UuLi5SYXRlcyBoYXZlIHRvIGJlIG1vdmVkIHVwIGFuZCBkb3duIGF0IHRpbWVzLCIgaGUgYWRkZWQuICAgICBMYXdzb24gc2FpZCBoZSBleHBlY3RlZCBpbnRlcnZlbnRpb24gdG8gYmUgInN0ZXJpbGlzZWQiIGJ5IGRyYWluaW5nIGV4Y2VzcyBzdGVybGluZyBsaXF1aWRpdHkgZnJvbSB0aGUgbWFya2V0IHRocm91Z2ggbmV3IGlzc3VlcyBvZiBnb3Zlcm5tZW50IHNlY3VyaXRpZXMgYW5kIGZvcmVpZ24gY3VycmVuY3kgc2FsZXMsIHdoZW4gdGhlIG1hcmtldCBhbGxvd2VkLiAgICAgVGhpcyB3b3VsZCBsaW1pdCB0aGUgaW5mbGF0aW9uYXJ5IGltcGFjdCBvZiBpbnRlcnZlbnRpb24sIGhlIHNhaWQuICAgICAiU3RlcmlsaXNhdGlvbiB3aWxsIGJlIGRpY3RhdGVkIGJ5IG1hcmtldCB0YWN0aWNzLi4uTm90IG5lY2Vzc2FyaWx5IGluIHRoZSBtb250aCBpbiB3aGljaCBpbnRlcnZlbnRpb24gb2NjdXJzLCIgTGF3c29uIHNhaWQuICJJIGFtIGNvbmZpZGVudCB0aGF0IHdlIGNhbiBzdGVyaWxpc2Ugb24gdGhpcyBzY2FsZS4iICBSRVVURVIgMzsKMTk4NzA2MDIJTEFXU09OIFNBWVMgTE9VVlJFIENVUlJFTkNZIEFDQ09SRCBTQVRJU0ZBQ1RPUlkgVGhlIExvdXZyZSBhZ3JlZW1lbnQgYnkgdGhlIEdyb3VwIG9mIFNldmVuIGZpbmFuY2UgbWluaXN0ZXJzIGFuZCBjZW50cmFsIGJhbmtlcnMgdG8gc3RhYmlsaXNlIGN1cnJlbmNpZXMgaGFzIHdvcmtlZCB3ZWxsIGFuZCBuZWVkcyBubyBmdW5kYW1lbnRhbCBzdHJlbmd0aGVuaW5nIGF0IHRoZSBlY29ub21pYyBzdW1taXQgaW4gVmVuaWNlIG9uIEp1bmUgOC0xMCwgVS5LLiBDaGFuY2VsbG9yIG9mIHRoZSBFeGNoZXF1ZXIgTmlnZWwgTGF3c29uIHNhaWQuICAgICBQcmV2aWV3aW5nIHRoZSBzdW1taXQsIHdoaWNoIGhlIGV4cGVjdGVkIHdvdWxkIG5vdCBwcm9kdWNlIGFueSBtYWpvciBuZXcgZWNvbm9taWMgaW5pdGlhdGl2ZXMsIExhd3NvbiB0b2xkIHJlcG9ydGVycyB3b3JrIHJlbWFpbmVkIHRvIGJlIGRvbmUgb24gaW1wcm92aW5nIHRoZSBjb25kaXRpb25zIGZvciBsYXN0aW5nIHdvcmxkIGVjb25vbWljIGdyb3d0aC78NTszMDtzaWRlIG1lYXN1cmVzIHRvIGJvb3N0IGdyb3d0aCwgaGUgc2FpZC4gICAgICAiSSB0aGluayBpdCBpcyBwb3NzaWJsZSB0aGF0IHRoZXJlIG1heSBiZSBzY29wZSBmb3IgYSBmdXJ0aGVyIHJlZHVjdGlvbiBpbiBpbnRlcmVzdCByYXRlcyBpbiBHZXJtYW55LCIgaGUgYWRkZWQsIGJ1dCBzdHJlc3NlZCB0aGF0IGhlIGhhZCBoYWQgbm8gaW5kaWNhdGlvbiB0aGF0IHN1Y2ggYSBtb3ZlIHdhcyBsaWtlbHkuIEhlIG1hZGUgbm8gbWVudGlvbiBvZiBKYXBhbmVzZSBpbnRlcmVzdCByYXRlcy4gICAgIExhd3NvbiBzYWlkIHRoZSBVLlMuIFNob3VsZCBlbWJhcmsgb24gImEgZ3JhZHVhbCByZWR1Y3Rpb24gb2YgaXRzIGZpc2NhbCBkZWZpY2l0cyBvdmVyIHRoZSBuZXh0IHR3byBvciB0aHJlZSB5ZWFycy4iICAgICBIZSBzYWlkIHRoZSBGZWJydWFyeSAyMiBMb3V2cmUgYWNjb3JkIGhhZCBwcm9kdWNlZCAic2F0aXNmYWN0b3J5IGV4Y2hhbmdlIHJhdGUgc3RhYmlsaXR5LCIgaW4gcGFydCB0aGFua3MgdG8gaGVhdnkgY29vcmRpbmF0ZWQgaW50ZXJ2ZW50aW9uIG9mIEdyb3VwIG9mIFNldmVuIGNlbnRyYWwgYmFua3MsIGFuZCBoZSB3YXMgImNvbnRlbnQiIHdpdGggc3RlcmxpbmcncyBleGNoYW5nZSByYXRlLiAgICAgUG9pbnRpbmcgdG8gdGhlIHJlY29yZCA0LjggYmlsbGlvbiBzdGcgcmlzZSBpbiBVLksuIE1heSBjdXJyZW5jeSByZXNlcnZlcyBhbm5vdW5jZWQgdG9kYXkgaGUgc2FpZCwgIndlIGhhdmUgYmVlbiBwbGF5aW5nIGEgdmVyeSBmdWxsIHBhcnQgb3Vyc2VsdmVzIC4uLiBXZSBoYXZlIGJlZW4gaW50ZXJ2ZW5pbmcgdG8gYSB2ZXJ5IG11Y2ggZ3JlYXRlciBleHRlbnQgdGhhbiB3ZSBoYWQgZG9uZSBoaXRoZXJ0by4iICAgICBMYXdzb24gc2FpZCB0aGVyZSB3YXMgYSByaXNrIHRoYXQgdGhlIExvdXZyZSBhZ3JlZW1lbnQgbWF5IGZhbHRlciBpZiBtZW1iZXIgc3RhdGVzIGRpZCBub3QgaW1wbGVtZW50IHRoZSBtYWNyby1lY29ub21pYyBjb21taXRtZW50cyB1bmRlcmx5aW5nIHRoZSBhY2NvcmQuICAgICAiQ2VydGFpbmx5IGl0IHdvdWxkIGJlIG1vcmUgZGlmZmljdWx0IHRvIG1haW50YWluIGV4Y2hhbmdlIHJhdGUgc3RhYmlsaXR5IGlmIGNvdW50cmllcyBhcmUgc2VlbiBub3QgdG8gaW1wbGVtZW50IHRoZWlyIGNvbW1pdG1lbnRzIGluIFBhcmlzIC4uLiBJbiB0aGlzIHJlc3BlY3QuIiBIZSBzYWlkIHRoZSBVLlMuIEJ1ZGdldCBkZWZpY2l0IHdhcyAidmVyeSBpbXBvcnRhbnQuIiAgICAgTm90aW5nIHRoZSA2LDAwMCBiaWxsaW9uIHllbiBlY29ub21pYyBwYWNrYWdlIGFubm91bmNlZCBieSBKYXBhbmVzZSBQcmltZSBNaW5pc3RlciBZYXN1aGlybyBOYWthc29uZSBsYXN0IHdlZWsgTGF3c29uIHNhaWQsICJ3aGF0IGlzIHJlYWxseSBuZWVkZWQgaW4gSmFwYW4gaXMgYW4gaW5jcmVhc2UgaW4gbWVyY2hhbmRpc2UgaW1wb3J0cy4gU3VwcGx5IHNpZGUgbWVhc3VyZXMgYXJlIGNyaXRpY2FsLiIgICAgICJUaGVyZSBpcyBhIHNwZWNpZmljIHJhbmdlIG9mIGNvbnN1bWVyIGFuZCBhZ3JpY3VsdHVyYWwgZ29vZHMgd2hlcmUgdGhleSBoYXZlIGFuIGV4dHJlbWVseSByZXN0cmljdGl2ZSByZWdpbWUgd2hpY2ggaXMgd2hvbGx5IHVuanVzdGlmaWVkLCIgaGUgc2FpZC4gICAgIExhd3NvbiBkb3VidGVkIHRoYXQgVG9reW8ncyBwYXJ0bmVycyB3b3VsZCBpbmR1bGdlIGluICJKYXBhbiBiYXNoaW5nIiBhdCB0aGUgc3VtbWl0IGVzcGVjaWFsbHkgYWZ0ZXIgdGhlIGVjb25vbWljIHN0aW11bGF0aW9uIHBhY2thZ2UgYW5kIHRoZSBhbm5vdW5jZW1lbnQgb2YgTmFrYXNvbmUncyBwbGFucyB0byBpbmNyZWFzZSBKYXBhbmVzZSBkZXZlbG9wbWVudCBhaWQgb3ZlciB0aGUgbmV4dCB0aHJlZSB5ZWFycy4gICAgIEphcGFuJ3MgbW9yZSBmbGV4aWJsZSBzdGFuY2Ugb24gVG9reW8gc3RvY2sgZXhjaGFuZ2UgbWVtYmVyc2hpcCB3b3VsZCBhbHNvIGhlbHAgZGVmbGVjdCBjcml0aWNpc20sIGhlIHNhaWQuICAgICBIZSBzYWlkIGhlIHRob3VnaHQgV2VzdCBHZXJtYW55IHdvdWxkIGluc3RlYWQgY29tZSB1bmRlciBwcmVzc3VyZSBhdCB0aGUgc3VtbWl0IHRvIGFkb3B0IHNpbWlsYXIgc3RpbXVsYXRpb24gbWVhc3VyZXMgdG8gamFjayB1cCBmYWx0ZXJpbmcgZWNvbm9taWMgZ3Jvd3RoLiAgICAgSW4gdGhpcyByZXNwZWN0IExhd3NvbiBzYWlkIGhlIGhvcGVkIEJvbm4gd291bGQgYnJpbmcgZm9yd2FyZCB0byBKYW51YXJ5IDE5ODggcGFydCBvZiBpdHMgYWdyZWVkIHBhY2thZ2Ugb2YgdGF4IGN1dHMgc2NoZWR1bGVkIGZvciAxOTkwLiBIZSBhbHNvIGNhbGxlZCBvbiBCb25uIHRvIHB1c2ggYWhlYWQgd2l0aCB0aGUgcHJpdmF0aXNhdGlvbiBvZiBHZXJtYW4gbmF0aW9uYWwgaW5kdXN0cmllcy4gICAgIE9uIGRlYnQsIExhd3NvbiBzYWlkIGhlIGV4cGVjdGVkIGEgdGhyZWUgcG9pbnQgQnJpdGlzaCBwbGFuIHRvIGFsbGV2aWF0ZSB0aGUgYnVyZGVuIG9mIHRoZSBwb29yZXN0IHN1Yi1zYWhhcmFuIGNvdW50cmllcyB0byBtYWtlIHByb2dyZXNzIGluIFZlbmljZS4gICAgIFRoZSBwbGFuLCBpbnZvbHZpbmcgY29uY2Vzc2lvbmFsIHJlc2NoZWR1bGluZyBvZiBzb3ZlcmVpZ24gZGVidCBpbiB0aGUgUGFyaXMgQ2x1Yiwgd2FzIGZpcnN0IHByb3Bvc2VkIGF0IHRoZSBJTUYgYW5kIFdvcmxkIEJhbmsgbWVldGluZ3MgaW4gV2FzaGluZ3RvbiBlYXJsaWVyIHRoaXMgeWVhci4gICAgIExhd3NvbiBzYWlkIGhlIHdvdWxkIHNlZWsgInRvIGNvbnNvbGlkYXRlIHBvbGl0aWNhbCBiYWNraW5nIGZvciB0aGUgcGxhbiBhdCB0aGUgVmVuaWNlIHN1bW1pdCIgYW5kIGhvcGVkIHRoZSBwcm9ncmFtbWUgd291bGQgYmUgZmluYWxpc2VkIGF0IHRoZSBBdXR1bW4gbWVldGluZ3Mgb2YgdGhlIElNRiBhbmQgV29ybGQgQmFuay4gICAgIEhlIHdlbGNvbWVkIHRoZSByZWNlbnQgbW92ZXMgYnkgQ2l0aWNvcnAgYW5kIENoYXNlIE1hbmhhdHRhbiB0byBpbmNyZWFzZSBzaGFycGx5IHRoZWlyIFRoaXJkIFdvcmxkIGRlYnQgcHJvdmlzaW9ucy4gICAgICJGaXJzdCwgaXQgaXMgYSBibG93IGZvciByZWFsaXNtLiBTZWNvbmQsIGJlY2F1c2UgdGhlIG1hcmtldCByZXNwb25zZSBoYXMgc2hvd24gdGhhdCBiYW5rcyBoYXZlIG11Y2ggbGVzcyB0byBmZWFyIGZyb20gdGhpcyBzb3J0IG9mIG1vdmUgdGhhbiB0aGV5IGZlbHQgYmVmb3JlIENpdGljb3JwLCIgaGUgc2FpZC4gICAgIFUuSy4gQmFua3Mgc2hvdWxkIGZvbGxvdyBCYW5rIG9mIEVuZ2xhbmQgcmVjb21tZW5kYXRpb25zLCBzdHJlbmd0aGVuaW5nIHRoZWlyIGJhbGFuY2Ugc2hlZXRzIGFuZCBtYWtpbmcgbW9yZSBwcm92aXNpb25zLiAiVGhleSBoYXZlIGRvbmUgaXQgdG8gc29tZSBleHRlbnQsIHRoZXkgbmVlZCB0byBkbyBpdCBtb3JlLCIgTGF3c29uIHNhaWQsIGFkZGluZyBpdCB3YXMgdXAgdG8gdGhlIGJhbmtzIHRoZW1zZWx2ZXMgdG8gZGV0ZXJtaW5lIHRoZSBhcHByb3ByaWF0ZSBzaXplIG9mIHByb3Zpc2lvbnMuICAgICBIZSBhbHNvIHNhaWQgdGhlIGRpc21hbnRsaW5nIG9mIGZhcm0gc3Vic2lkaWVzIHdvdWxkIGJlIGRpc2N1c3NlZCBhdCB0aGUgc3VtbWl0LiAiVGhlcmUgaXMgYSBjb25zZW5zdXMsIHdoaWNoIHdlIGhhdmUgdG8gcHVzaCBmdXJ0aGVyLiIgIFJFVVRFUiAzOwoxOTg3MDYwMglVLksuIFJFU0VSVkVTIExJRlQgSE9QRVMgT0YgRlVSVEhFUiBCQVNFIFJBVEUgQ1VUIFRoZSByZWNvcmQgNC45IGJpbGxpb24gZGxycyByaXNlIGluIFUuSy4gUmVzZXJ2ZXMgaW4gTWF5IHRvIGEgdG90YWwgMzQuNyBiaWxsaW9uIGhhcyBsaWZ0ZWQgaG9wZXMgZm9yIGEgZnVydGhlciBjdXQgaW4gYmFuayBiYXNlIGxlbmRpbmcgcmF0ZXMgYWZ0ZXIgdGhlIEp1bmUgMTEgZ2VuZXJhbCBlbGVjdGlvbiwgbWFya2V0IGFuYWx5c3RzIHNhaWQuICAgICBTdGVybGluZyB3b3VsZCBoYXZlIHJpc2VuIG9uIHRoZSBtdWNoIGJldHRlciB0aGFuIGV4cGVjdGVkIG51bWJlciBidXQgZm9yIG1hcmtldCBuZXJ2ZXMgYWJvdXQgdGhlIHBvbGwgb3V0Y29tZSwgdGhleSBzYWlkLiAgICAgQnV0IHRoZSB3ZWlnaHQgb2YgZm9yZWlnbiBjdXJyZW5jeSBhbmQgZ29sZCByZXNlcnZlcyBub3cgYXZhaWxhYmxlIHRvIHRoZSBhdXRob3JpdGllcyB0byBzdXBwb3J0IHRoZSBwb3VuZCBzaG91bGQgY3VyYiBhbnkgbWFya2V0IHRlbmRlbmN5IHRvIHBhbmljIGlmIFUuSy4gT3BpbmlvbiBwb2xscyBzaG93IHRoZSBydWxpbmcgQ29uc2VydmF0aXZlIFBhcnR5J3MgbGVhZCBzbGlwcGluZywgdGhleSBhZGRlZC4gICAgICJXZSBoYXZlIGJlZW4gaW50ZXJ2ZW5pbmcgdG8gYSB2ZXJ5IG11Y2ggZ3JlYXRlciBleHRlbnQgdGhhbiB3ZSBoYXZlIGRvbmUgaGl0aGVydG8sIiBDaGFuY2VsbG9yIG9mIHRoZSBFeGNoZXF1ZXIgTmlnZWwgTGF3c29uIHNhaWQgYXQgYSBuZXdzIGNvbmZlcmVuY2UgdG9kYXksIGNvbW1lbnRpbmcgb24gdGhlIG5ld3Mgb2YgdGhlIHJlY29yZCByZXNlcnZlcyByaXNlLiAgICAgSGUgcHV0IHRoZSBVLksuIEludGVydmVudGlvbiBpbiB0aGUgY29udGV4dCBvZiB0aGUgTG91dnJlIGFjY29yZCBiZXR3ZWVuIGxlYWRpbmcgaW5kdXN0cmlhbCBuYXRpb25zIHRvIHN0YWJpbGlzZSB0aGUgZG9sbGFyLCBwYXJ0bHkgdGhyb3VnaCBkaXJlY3QgaW50ZXJ2ZW50aW9uIG9uIGZvcmVpZ24gZXhjaGFuZ2VzLiAiV2UgaGF2ZSBiZWVuIHBsYXlpbmcgYSB2ZXJ5IGZ1bGwgcGFydCBvdXJzZWx2ZXMsIiBoZSBzYWlkLiAgICAgQnV0IG1hcmtldCBhbmFseXN0cyBzZWUgdGhlIHJlY2VudCB1cHdhcmQgcHJlc3N1cmUgb24gc3RlcmxpbmcsIGFuZCBjb25zZXF1ZW50IG5lZWQgZm9yIG9mZmljaWFsIHNhbGVzIHRvIGRhbXAgZG93biBpdHMgcmlzZSwgbW9yZSBpbiB0aGUgbGlnaHQgb2YgbG9jYWwgZmFjdG9ycy4gICAgIFN0ZXZlbiBCZWxsLCBjaGllZiBlY29ub21pc3QgYXQgTW9yZ2FuIEdyZW5mZWxsIFNlY3VyaXRpZXMsIHNhaWQgdGhhdCBjb3Jwb3JhdGUgbW9uZXkgaGFzIGJlZW4gZmxvd2luZyBiYWNrIGludG8gQnJpdGFpbiBhbWlkIGhvcGVzIG9mIGFub3RoZXIgQ29uc2VydmF0aXZlIGdvdmVybm1lbnQsIGFmdGVyIGZlYXJzIGxhc3QgYXV0dW1uIG9mIGEgTGFib3VyIGVsZWN0aW9uIHZpY3Rvcnkgc2VudCBpdCBmbG9vZGluZyBvdXQuICAgICBVLksuIFBvcnRmb2xpbyBpbnZlc3RtZW50IGlzIGFsc28gcmV0dXJuaW5nLCB3aGlsZSBmb3JlaWduIGJ1eWVycyBzZWUgVS5LLiBHcm93dGggcHJvcGVjdHMgYW5kIGhpZ2ggYm9uZCB5aWVsZHMgYXMgYXR0cmFjdGl2ZS4gVGhleSB3aWxsIGJlIHN0cm9uZyBidXllcnMgb2YgVS5LLiBBc3NldHMsIG5vdGFibHkgZXF1aXRpZXMsIG9uY2UgdGhlIGVsZWN0aW9uIGlzIG91dCBvZiB0aGUgd2F5LCBCZWxsIHNhaWQuICAgICBBbmFseXN0cyBzZWUgdGhpcyBwcmVzc3VyZSBhcyB0aGUgbWFpbiBob3BlIGZvciBsb3dlciBpbnRlcmVzdCByYXRlcywgYXMgdGhlIGdvdmVybm1lbnQgaXMgZXhwZWN0ZWQgdG8gdHJ5IHRvIHJldmVyc2UgdGhlIGxvc3Mgb2YgZXhwb3J0IGNvbXBldGl0aXZlbmVzcyBjYXVzZWQgYnkgYSBzdHJvbmcgcG91bmQuICAgICBUb2RheSwgaG93ZXZlciwgdGhlIHBvdW5kIGhhcmRseSBtb3ZlZCBvbiB0aGUgcmVzZXJ2ZXMgbmV3cywgZGlwcGluZyBvbiBpdHMgdHJhZGUtd2VpZ2h0ZWQgaW5kZXggYWdhaW5zdCBhIGJhc2tldCBvZiBjdXJyZW5jaWVzIGZyb20gNzMuMSBwY3Qgb2YgaXRzIDE5NzUgdmFsdWUgYXQgMTAwMCBHTVQgdG8gNzMuMCBwY3QgYXQgMTEwMCBHTVQsIGhhbGYgYW4gaG91ciBhZnRlciB0aGUgZmlndXJlcyB3ZXJlIHJlbGVhc2VkLiAgICAgIlRoZSBtYXJrZXQgZG9lc24ndCB3YW50IHRvIGRvIGFueXRoaW5nIGJlY2F1c2Ugb2YgdGhlIGVsZWN0aW9uLCIgY29tbWVudGVkIGFuIGVjb25vbWlzdCBhdCBhIGJpZyBVLlMuIEludmVzdG1lbnQgYmFuay4gICAgIFNldmVyYWwgZGVhbGVycyBhbmQgYW5hbHlzdHMgYWRkZWQgdGhhdCBtYXJrZXQgZm9yZWNhc3RzIG9mIGEgcmlzZSBpbiByZXNlcnZlcyBvZiBiZXR3ZWVuIG9uZSBhbmQgdGhyZWUgYmlsbGlvbiBkbHJzIGhhZCBvdmVyZXN0aW1hdGVkIHRoZSBhbW91bnQgb2YgcG91bmQgc2FsZXMgdGhhdCB3ZXJlIGxpa2VseSB0byBoYXZlIGJlZW4gZGlzZ3Vpc2VkIGJ5IHN3YXAgYXJyYW5nZW1lbnRzIG9yIHRyYW5zYWN0aW9ucyBvbiB0aGUgZm9yd2FyZCBtYXJrZXQuICAgICBUaGUgbWFya2V0IGFsc28gc2VlbWVkIHRvIGhhdmUgb3ZlcmVzdGltYXRlZCB0aGUgYW1vdW50IG9mIHN0ZXJsaW5nIHRoZSBCYW5rIG9mIEVuZ2xhbmQgYm91Z2h0IGF0IHRoZSBlbmQgb2YgTWF5IHRvIHNtb290aCB0aGUgcG91bmQncyBzdWRkZW4gZG93bnR1cm4sIHdoaWxlIHNvbWUgb2YgdGhlIGludGVydmVudGlvbiByZXBvcnRlZCBpbiBNYXkgcHJvYmFibHkgb2NjdXJyZWQgaW4gQXByaWwsIHRoZXkgc2FpZC4gICAgIFRoZSBrZXkgdGhyZWUgbW9udGhzIGludGVyYmFuayBtb25leSBtYXJrZXQgcmF0ZXMgZWFzZWQgYWJvdXQgMS84IHBvaW50LCByZWZsZWN0aW5nIGNhdXRpb3VzIGhvcGVzIHRoYXQgdGhlIGRvd250cmVuZCBpbiBVLksuIEludGVyZXN0IHJhdGVzIHdpbGwgYmUgcmV2aXZlZCBmb2xsb3dpbmcgdGhlIHJlc2VydmVzIG5ld3MsIGFuYWx5c3RzIHNhaWQuICAgICBHb3Zlcm5tZW50IGJvbmQgcHJpY2VzIGluaXRpYWxseSBmaXJtZWQsIGJ1dCB0aGUgbWFya2V0IHdhcyBtdXRlZCBhcyB0cmFkZXJzIHdvcnJpZWQgYWJvdXQgdGhlIGZ1bmRpbmcgaW1wbGljYXRpb25zIG9mIGFub3RoZXIgaHVnZSByaXNlIGluIHJlc2VydmVzLCB0aGV5IGFkZGVkLiAgICAgTW9yZ2FuIEdyZW5mZWxsJ3MgQmVsbCBmb3JlY2FzdCBhIGhhbGYgcG9pbnQgYmFzZSByYXRlIGN1dCBmcm9tIHRoZSBjdXJyZW50IG5pbmUgcGN0IGxldmVsIHNvb24gYWZ0ZXIgdGhlIGVsZWN0aW9uLCBzbyBsb25nIGFzIHBvbGwgcHJvamVjdGlvbnMgb2YgYW5vdGhlciBDb25zZXJ2YXRpdmUgdmljdG9yeSBwcm92ZSBhY2N1cmF0ZSwgd2l0aCBhbm90aGVyIGhhbGYgcG9pbnQgbGF0ZXIuICAgICBKdXN0aW4gU2lsdmVydG9uLCBlcXVpdHkgZWNvbm9taXN0IGF0IENyZWRpdCBTdWlzc2UgQnVja21hc3RlciBhbmQgTW9vcmUsIHNhaWQgYSBmdWxsIHBvaW50IHJlZHVjdGlvbiBtaWdodCBiZSBwb3NzaWJsZS4gIlN0ZXJsaW5nIHdpbGwgYmUgaGVsZCBkb3duIGJ5IGludGVyZXN0IHJhdGUgY3V0cyBpbiBmdXR1cmUsIHJhdGhlciB0aGFuIHRoaXMgYWN0aXZlIGludGVydmVudGlvbiwiIGhlIHByZWRpY3RlZC4gICAgIEtldmluIEJvYWtlcyBvZiBHcmVlbndlbGwgTW9udGFndSBHaWx0LUVkZ2VkIGNhdXRpb25lZCBhZ2FpbnN0IG92ZXItb3B0aW1pc3RpYyBmb3JlY2FzdHMsIGJ1dCBhZ3JlZWQgYSBoYWxmIHBvaW50IGN1dCBsb29rZWQgbGlrZWx5LiAgICAgQSBjdXQgYmVmb3JlIHRoZSBlbGVjdGlvbiBoYXMgYmVlbiB2aXJ0dWFsbHkgcnVsZWQgb3V0LiAgICAgIlRoZSBCYW5rIChvZiBFbmdsYW5kKSBpcyBib3RoIHdvcnJpZWQgYWJvdXQgdGhlIHBvbGl0aWNhbCBwcm9ibGVtIG9mIGN1dHRpbmcgcmF0ZXMgZHVyaW5nIGFuIGVsZWN0aW9uIGNhbXBhaWduIC4uLiBBbmQgaGFzIHNpZ25hbGxlZCBzb21lIHdvcnJ5IGFib3V0IGJyb2FkIG1vbmV5IChncm93dGgpLCIgc2FpZCBSb2JpbiBNYXJzaGFsbCwgY2hpZWYgVS5LLiBFY29ub21pc3QgYXQgQ2hhc2UgTWFuaGF0dGFuIFNlY3VyaXRpZXMuICAgICBIZSBzYWlkIHRoZSAxMCBiaWxsaW9uIGRscnMgaW5jcmVhc2UgaW4gdG90YWwgcmVzZXJ2ZXMgaW4gdGhlIHBhc3Qgc2V2ZW4gbW9udGhzIG1heSBmb3Jlc2hhZG93IGZ1bGwgVS5LLiBFbnRyeSBpbnRvIHRoZSBFdXJvcGVhbiBNb25ldGFyeSBTeXN0ZW0uICAgICBCdXQgQmVsbCBzYWlkIHRoZSBhdXRob3JpdGllcyB3b3VsZCBsaWtlIHRvIHNlZSBhbm90aGVyIDEwIG9yIDE1IGJpbGxpb24gZGxycyBpbiB0aGUgcmVzZXJ2ZXMgYmVmb3JlIGpvaW5pbmcsIGlmIHRoZXkgZGlkIHNvLiBCdXQsIHVubGlrZSBtYW55IGFuYWx5c3RzLCBoZSBkb3VidGVkIHRoZSBVLksuIFdpbGwgZ28gaW4uICBSRVVURVIgMzsKMTk4NzA2MDIJVS5LLiBSRVNFUlZFUyBTSE9XIFJFQ09SRCBVTkRFUkxZSU5HIFJJU0UgSU4gTUFZIEJyaXRhaW4ncyBnb2xkIGFuZCBjdXJyZW5jeSByZXNlcnZlcyByb3NlIGEgcmVjb3JkIHVuZGVybHlpbmcgNC43NiBiaWxsaW9uIGRscnMgaW4gTWF5LCBmb2xsb3dpbmcgQXByaWwncyAyLjkgYmlsbGlvbiBkbHJzIGluY3JlYXNlLCB0aGUgVHJlYXN1cnkgc2FpZC4gICAgIFRoZSB1bmRlcmx5aW5nIHRyZW5kIGluZGljYXRlcyB0aGUgbGV2ZWwgb2YgcmVjZW50IEJhbmsgb2YgRW5nbGFuZCBpbnRlcnZlbnRpb24gb24gY3VycmVuY3kgbWFya2V0cyB0byBjdXJiIHN0ZXJsaW5nJ3Mgc3RyZW5ndGguIEl0IHdhcyBhYm92ZSBtYXJrZXQgZXhwZWN0YXRpb25zIHdoaWNoIGhhZCBiZWVuIGZvciBhIHJpc2Ugb2YgYmV0d2VlbiBvbmUgYmlsbGlvbiBhbmQgdGhyZWUgYmlsbGlvbiBkbHJzLiAgICAgVGhlIFRyZWFzdXJ5IGRlY2xpbmVkIGNvbW1lbnQgb24gdGhlIGZpZ3VyZXMuICAgICBBY3R1YWwgcmVzZXJ2ZXMgcm9zZSA0Ljg3IGJpbGxpb24gZGxycyBpbiBNYXksIGNvbXBhcmVkIHdpdGggQXByaWwncyAyLjggYmlsbGlvbiBpbmNyZWFzZSwgdG8gYSB0b3RhbCB2YWx1ZSBvZiAzNC42OCBiaWxsaW9uIGRscnMsIGNvbXBhcmVkIHdpdGggMjkuODEgYmlsbGlvbiBhdCB0aGUgZW5kIG9mIEFwcmlsLiAgICAgQm9ycm93aW5ncyB1bmRlciB0aGUgZXhjaGFuZ2UgY292ZXIgc2NoZW1lIHdlcmUgMjM4IG1sbiBkbHJzLCBhZ2FpbnN0IEFwcmlsJ3MgNjYgbWxuLiBSZXBheW1lbnRzIHVuZGVyIHRoZSBzY2hlbWUgd2VyZSA4NSBtbG4gZGxycywgYWZ0ZXIgOTAgbWxuIHByZXZpb3VzbHksIHdpdGggY2FwaXRhbCByZXBheW1lbnRzIG9mIGVpZ2h0IG1sbiwgYWZ0ZXIgdGhyZWUgbWxuIGxhc3QgbW9udGguICAgICBSZXBheW1lbnRzIG9mIGdvdmVybm1lbnQgZGVidCBhbW91bnRlZCB0byAzMyBtbG4gZGxycy4gICAgIFRoZSB1bmRlcmx5aW5nIHJlc2VydmVzIGluY3JlYXNlIGlzIG5ldCBvZiBib3Jyb3dpbmdzIGFuZCByZXBheW1lbnRzLiAgICAgSXQgd2FzIGxhcmdlciB0aGFuIHRoZSBwcmV2aW91cyByZWNvcmQgMy4wNCBiaWxsaW9uIGRscnMgcmlzZSBzZWVuIGluIE9jdG9iZXIgMTk3Ny4gVGhlIE1heSBpbmNyZWFzZSByZXByZXNlbnRzIHRoZSBzZXZlbnRoIG1vbnRobHkgcmlzZSwgd2l0aCByZXNlcnZlcyB1cCA5Ljk0NyBiaWxsaW9uIGRscnMgaW4gdGhhdCBwZXJpb2QsIGFuZCB1cCA5LjgxNiBiaWxsaW9uIHNpbmNlIHRoZSBzdGFydCBvZiAxOTg3LiAgUkVVVEVSIDM7Cg==