KnF1b3Rlcy50eHQqICAgIEZvciBWaW0gdmVyc2lvbiA3LjQuICBMYXN0IGNoYW5nZTogMjAxMCBOb3YgMDMKCgoJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwgICAgYnkgQnJhbSBNb29sZW5hYXIKCgoJCQkJCQkJKnF1b3RlcyoKSGVyZSBhcmUgc29tZSBuaWNlIHF1b3RlcyBhYm91dCBWaW0gdGhhdCBJIGNvbGxlY3RlZCBmcm9tIG5ld3MgYW5kIG1haWwuCgoKdmltICh2aW0pIG5vdW4gLSBFYnVsbGllbnQgdml0YWxpdHkgYW5kIGVuZXJneS4gIFtMYXRpbiwgYWNjdXNhdGl2ZSBvZiB2aXMsCnN0cmVuZ3RoXSAgKERpY3Rpb25hcnkpCgpWaW0gaXMgc28gbXVjaCBiZXR0ZXIgdGhhbiB2aSB0aGF0IGEgZ3JlYXQgbWFueSBvZiBteSBvbGQgdmkgOm1hcCdzIGJlY2FtZQppbW1lZGlhdGVseSBvYnNvbGV0ZSEgKFRvbnkgTnVnZW50LCBBdXN0cmFsaWEpCgpDb21pbmcgd2l0aCBhIHZlcnkgR1VJIG1pbmRzZXQgZnJvbSBXaW5kb3dzLCBJIGFsd2F5cyB0aG91Z2h0IG9mIHBlb3BsZSB1c2luZwpWaSBhcyBzb21lIGtpbmQgb2Ygb3V0ZXIgc3BhY2UgYWxpZW4gaW4gaHVtYW4gY2xvdGhlcy4gIE9uY2UgSSB0cmllZCBJIHJlYWxseQpnb3QgYWRkaWN0ZWQgYnkgaXRzIHBvd2VyIGFuZCBub3cgSSBmb3VuZCBteXNlbGYgdHlwaW5nIFZpbSBrZXlwcmVzc2VzIGluIHRoZQpvZGRlc3QgcGxhY2VzISBUaGF0J3Mgd2h5IEkgd291bGQgbGlrZSB0byBzZWUgVmltIGVtYmVkZGVkIGluIGV2ZXJ5CmFwcGxpY2F0aW9uIHdoaWNoIGRlYWxzIHdpdGggdGV4dCBlZGl0aW5nLiAgKEpvc+kgRm9uc2VjYSkKCkkgd2FzIGEgMTIteWVhciBlbWFjcyB1c2VyIHdobyBzd2l0Y2hlZCB0byBWaW0gYWJvdXQgYSB5ZWFyIGFnbyBhZnRlciBmaW5hbGx5CmdpdmluZyB1cCBvbiB0aGUgbXVsdGlwbGUgaW5jb21wYXRpYmxlIHZlcnNpb25zLCBmbGFreSBjb250cmlidXRlZCBwYWNrYWdlcywKZGlzb3JnYW5pemVkIGtleXN0cm9rZXMsIGV0Yy4gIEFuZCBpdCB3YXMgb25lIG9mIHRoZSBiZXN0IG1vdmVzIEkgZXZlciBtYWRlLgooSm9lbCBCdXJ0b24pCgpBbHRob3VnaCBhbGwgb2YgdGhlIHByb2dyYW1zIHdlcmUgdXNlZCBkdXJpbmcgdGhlIHByZXBhcmF0aW9uIG9mIHRoZSBuZXcgYW5kCnJldmlzZWQgbWF0ZXJpYWwsIG1vc3Qgb2YgdGhlIGVkaXRpbmcgd2FzIGRvbmUgd2l0aCBWaW0gdmVyc2lvbnMgNC41IGFuZCA1LjAKdW5kZXIgR05VLUxpbnV4IChSZWRoYXQgNC4yKS4gIChBcm5vbGQgUm9iYmlucywgSXNyYWVsLCBhdXRob3Igb2YgIkxlYXJuaW5nCnRoZSBWaSBlZGl0b3IiKQoKT3V0IG9mIGFsbCB0aGUgb3BlbiBzb2Z0d2FyZSBpJ3ZlIGV2ZXIgc2VlbiBhbmQgdXNlZCwgYW5kIGkndmUgc2VlbiBhIGxvdCwgVmltCmlzIHRoZSBiZXN0LCBtb3N0IHVzZWZ1bCBhbmQgaGlnaGVzdCBxdWFsaXR5IHRvIHdvcmsgd2l0aCwgc2Vjb25kIG9ubHkgdG8gdGhlCmxpbnV4IGtlcm5lbCBpdHNlbGYuICAoUGV0ZXIgSmF5IFNhbHptYW4pCgpJdCdzIHdlbGwgd29ydGggbm90aW5nIHRoYXQgdGhlIF9lbnRpcmV0eV8gb2YgU291cmNlRm9yZ2Ugd2FzIHdyaXR0ZW4gdXNpbmcKVmltIGFuZCBpdHMgbmlmdHkgUEhQIHN5bnRheCBoaWdobGlnaHRpbmcuICBJIHRoaW5rIHRoZSBlbnRpcmUgU0YubmV0IHRlY2gKc3RhZmYgdXNlcyBWaW0gYW5kIHdlJ3JlIGFsbCBleGNpdGVkIHRvIGhhdmUgeW91IGFib2FyZCEgKFRpbSBQZXJkdWUpCgpWaW0gaXMgb25lIG9mIGEgc2VsZWN0IGJ1bmNoIG9mIHRvb2xzIGZvciB3aGljaCBJIGhhdmUgbm8gc3Vic3RpdHV0ZS4gIEl0IGlzCmEgYnJpbGxpYW50IHBpZWNlIG9mIHdvcmshIChCaWp1IENoYWNrbykKCkEgcHJldmlvdXMgZ2lybGZyaWVuZCBvZiBtaW5lIHN3aXRjaGVkIHRvIGVtYWNzLiAgTmVlZGxlc3MgdG8gc2F5LCB0aGUKcmVsYXRpb25zaGlwIHdlbnQgbm93aGVyZS4gIChHZW9mZnJleSBNYW5uKQoKSSByYXJlbHkgdGhpbmsgYWJvdXQgVmltLCBpbiB0aGUgc2FtZSB3YXkgdGhhdCBJIGd1ZXNzIGEgZmlzaCByYXJlbHkgdGhpbmtzCmFib3V0IHdhdGVyLiAgSXQncyB0aGUgZW52aXJvbm1lbnQgaW4gd2hpY2ggZXZlcnl0aGluZyBlbHNlIGhhcHBlbnMuICBJJ20gYQpmYWlybHkgYnVzeSBzeXN0ZW0gYWRtaW5pc3RyYXRvciB3b3JraW5nIG9uIGEgbG90IG9mIGRpZmZlcmVudCBwbGF0Zm9ybXMuICBWaW0KaXMgdGhlIG9ubHkgdGhpbmcgdGhhdCdzIGNvbnNpc3RlbnQgYWNyb3NzIGFsbCBteSBzeXN0ZW1zLCBhbmQgaXQncyBqdXN0IGFib3V0CnRoZSBvbmx5IHRoaW5nIHRoYXQgZG9lc24ndCBicmVhayBmcm9tIHRpbWUgdG8gdGltZS4gIFdoZW4gYSBuZXcgc3lzdGVtIGNvbWVzCmluIHRoZSBkb29yIHdpdGhvdXQgVmltLCBJIGluc3RhbGwgaXQgcmlnaHQgYXdheS4gIEdyZWF0IHRvIGhhdmUgYSB0b29sIHRoYXQncwp0aGUgc2FtZSBldmVyeXdoZXJlLCB0aGF0J3MgY29tcGxldGVseSByZWxpYWJsZSwgc28gSSBjYW4gaWdub3JlIGl0IGFuZCB0aGluawphYm91dCBvdGhlciB0aGluZ3MuICAoUGV0ZSBTY2hhZWZmZXIpCgpIYXZpbmcgcmVjZW50bHkgc3VjY2VlZGVkIGluIHJ1bm5pbmcgVmltIHZpYSB0ZWxuZXQgdGhyb3VnaCBhIE5va2lhCkNvbW11bmljYXRvciwgSSBjYW4gbm93IHJlcG9ydCB0aGF0IGl0IHdvcmtzIG5pY2VseSBvbiBhIFBhbG0gUGlsb3QgdG9vLgooQWxsYW4gS2VsbHksIFNjb3RsYW5kKQoKWW91J3ZlIGRvbmUgYSB0cmVtZW5kb3VzIGpvYiB3aXRoICdWSU0nLCBCcmFtISAgVGhlIG1vcmUgSSB1c2UgaXQsIHRoZSBtb3JlCmltcHJlc3NlZCBJIGdldCAoSSBhbSBhbiBvbGQgJ3ZpJyBkaWUgaGFyZCB3aG8gb25jZSBzdGFydGVkIG91dCB3aXRoIGVhcmx5CnZlcnNpb25zIG9mICdlbWFjcycgaW4gdGhlIGxhdGUgMTk3MCdzIGFuZCB3YXMgcmVsaWV2ZWQgYnkgZmluZGluZyAndmknIGluIHRoZQpmaXJzdCBVTklYIEkgY2FtZSBhY3Jvc3MgaW4gMTk4MykuICBJbiBteSBvcGluaW9uLCBpdCdzIGFib3V0IHRpbWUgJ1ZJTScKcmVwbGFjZSAnZW1hY3MnIGFzIHRoZSBzdGFuZGFyZCBmb3IgdG9wIGVkaXRvcnMuICAoQm8gVGhpZGUnLCBTd2VkZW4pCgpJIGxvdmUgYW5kIHVzZSBWSU0gaGVhdmlseSB0b28uICAoTGFycnkgV2FsbCkKClZpIGlzIGxpa2UgYSBGZXJyYXJpLCBpZiB5b3UncmUgYSBiZWdpbm5lciwgaXQgaGFuZGxlcyBsaWtlIGEgYml0Y2gsIGJ1dCBvbmNlCnlvdSBnZXQgdGhlIGhhbmcgb2YgaXQsIGl0J3Mgc21hbGwsIHBvd2VyZnVsIGFuZCBGQVNUISAoVW5rbm93bikKVklNIGlzIGxpa2UgYSBuZXcgbW9kZWwgRmVycmFyaSwgYW5kIHNvdW5kcyBsaWtlIG9uZSB0b28gLSAiVklJSUlJSU1NTSEiCihTdGVwaGVuIFJpZWhtLCBHZXJtYW55KQoKU2Nob24gYmVpIE51dHp1bmcgZWluZXMgQnJ1Y2h0ZWlscyBkZXIgVklNLUZ1bmt0aW9uZW4gd2lyZCBkZXIgQmVudXR6ZXIgcmVjaHQKc2NobmVsbCBkaWUgVm9yenVlZ2UgZGllc2VzIEVkaXRvcnMga2VubmVuLSB1bmQgc2NoYWV0emVubGVybmVuLgpUcmFuc2xhdGVkOiBFdmVuIHdoZW4gb25seSB1c2luZyBhIGZyYWN0aW9uIG9mIFZJTS1mdW5jdGlvbnMsIHRoZSB1c2VyIHdpbGwKcXVpY2tseSBnZXQgdXNlZCB0byBhbmQgYXBwcmVjaWF0ZSB0aGUgYWR2YW50YWdlcyBvZiB0aGlzIGVkaXRvci4gIChHYXJyeQpHbGVuZG93biwgY29uY2x1c2lvbiBvZiBhbiBhcnRpY2xlIG9uIFZJTSBpbiBpWCBtYWdhemluZSA5LzE5OTgpCgpJJ3ZlIHJlY2VudGx5IGFjcXVpcmVkIHRoZSBPJ1JlaWxseSBib29rIG9uIFZJIChpdCBhbHNvIGRpc2N1c3NlcyBWSU0KaW4tZGVwdGgpLCBhbmQgSSdtIGFtYXplZCBhdCBqdXN0IGhvdyBwb3dlcmZ1bCB0aGlzIGFwcGxpY2F0aW9uIGlzLiAgKEplZmZyZXkKUmFua2luKQoKVGhpcyBndWlkZSB3YXMgd3JpdHRlbiB1c2luZyB0aGUgV2luZG93cyA5LnggZGlzdHJpYnV0aW9uIG9mIEdWSU0sIHdoaWNoIGlzCnF1aXRlIHBvc3NpYmx5IHRoZSBncmVhdGVzdCB0aGluZyB0byBjb21lIGFsb25nIHNpbmNlIEdvZCBjcmVhdGVkIHRoZSBuYWtlZApnaXJsLiAgKE1pY2hhZWwgRGlCZXJuYXJkbykKCkJveSwgSSB0aG91Z2h0IEkga25ldyBhbG1vc3QgZXZlcnl0aGluZyBhYm91dCBWSU0sIGJ1dCBldmVyeSB0aW1lIEkgYnJvd3NlIHRoZQpvbmxpbmUgZG9jdW1lbnRhdGlvbiwgSSBoaXQgdXBvbiBhIG1pbm9yIGJ1dCBjb29sIGFzcGVjdCBvZiBhIFZJTSBmZWF0dXJlIHRoYXQKSSBkaWRuJ3Qga25vdyBiZWZvcmUhICBJIG11c3Qgc2F5IHRoZSBkb2N1bWVudGF0aW9uIGlzIG9uZSB0aGUgZmluZXN0IEkndmUKZXZlciBzZWVuIGluIGEgcHJvZHVjdCAtLSBldmVuIGJldHRlciB0aGFuIG1vc3QgY29tbWVyY2lhbCBwcm9kdWN0cy4KKEdhdXRhbSBNdWR1bnVyaSkKClZJTSA0LjUgaXMgcmVhbGx5IGEgZmFudGFzdGljIGVkaXRvci4gIEl0IGhhcyBzb29vb28gbWFueSBmZWF0dXJlcyBhbmQgbW9yZQppbXBvcnRhbnRseSwgdGhlIGRlZmF1bHRzIGFyZSBzbyB3ZWxsIHRob3VnaHQgb3V0IHRoYXQgeW91IHJlYWxseSBkb24ndCBoYXZlCnRvIGNoYW5nZSBhbnl0aGluZyEhICBXb3JkcyBjYW5ub3QgZXhwcmVzcyBteSBhbWF6ZW1lbnQgYW5kIGdyYXRpdHVkZSB0byB0aGUKY3JlYXRvcnMgb2YgVklNLiAgS2VlcCBpdCB1cC4gIChWaWthcywgVVNBKQoKSSB3b25kZXIgaG93IGxvbmcgaXQgd2lsbCBiZSBiZWZvcmUgcGVvcGxlIHdpbGwgcmVmZXIgdG8gb3RoZXIgVmkgZWRpdG9ycyBhcwpWSU0gY2xvbmVzPyAgKERhcnJlbiBIaWViZXJ0KQoKSSByZWFkIGFib3V0IFthdXRvLXBvc2l0aW9uaW5nLWluLWZpbGUtYmFzZWQtb24tdGhlLWVycm9ycy1mcm9tLW1ha2VdIGluIG9uZQpvZiB0aG9zZSAiUGVyZmVjdCBQcm9ncmFtbWVyJ3MgRWRpdG9yIiB0aHJlYWRzIGFuZCB3YXMgZGVsaWdodGVkIHRvIGRpc2NvdmVyCnRoYXQgVklNIGFscmVhZHkgc3VwcG9ydHMgaXQuICAoQnJlbmRhbiBNYWNtaWxsYW4sIEF1c3RyYWxpYSkKCkkganVzdCBkaXNjb3ZlcmVkIFZJTSAoNS4wKSBhbmQgSSdtIHRlbGxpbmcgZXZlcnlvbmUgSSBrbm93IGFib3V0IGl0IQpJIHRlbGwgdGhlbSBWSU0gc3RhbmRzIGZvciBWSSBmb3IgdGhlIG5ldyAoTSlpbGxlbml1bS4gIFRoYW5rcyBzbyBtdWNoIQooTWF0dCBGLiBWYWxlbnRpbmUpCgpJIHRoaW5rIGZyb20gbm93IG9uICJ2aSIgc2hvdWxkIGJlIGNhbGxlZCAiVmltIEltaXRhdGlvbiIsIG5vdCB0aGUgb3RoZXIgd2F5CmFyb3VuZC4gIChSdW5ndW4gUmFtYW5hdGhhbikKClRoZSBMYXcgb2YgVklNOgpGb3IgZWFjaCBtZW1iZXIgYiBvZiB0aGUgcG9zc2libGUgYmVoYXZpb3VyIHNwYWNlIEIgb2YgcHJvZ3JhbSBQLCB0aGVyZSBleGlzdHMKYSBmaW5pdGUgdGltZSB0IGJlZm9yZSB3aGljaCBhdCBsZWFzdCBvbmUgdXNlciB1IGluIHRoZSB0b3RhbCB1c2VyIHNwYWNlIFUgb2YKcHJvZ3JhbSBQIHdpbGwgcmVxdWVzdCBiIGJlY29tZXMgYSBtZW1iZXIgb2YgdGhlIGFsbG93ZWQgYmVoYXZpb3VyIHNwYWNlIEInCihCJyA8PSBCKS4KSW4gb3RoZXIgd29yZHM6IFNvb25lciBvciBsYXRlciBldmVyeW9uZSB3YW50cyBldmVyeXRoaW5nIGFzIGFuIG9wdGlvbi4KKE5lZ3JpKQoKV2hlbmV2ZXIgSSBtb3ZlIHRvIGEgbmV3IGNvbXB1dGluZyBwbGF0Zm9ybSwgdGhlIGZpcnN0IHRoaW5nIEkgZG8gaXMgdG8gcG9ydApWSU0uICBMYXRlbHksIEkgYW0gc2ltcGx5IHN0dW5uZWQgYnkgaXRzIGVhc2Ugb2YgY29tcGlsYXRpb24gdXNpbmcgdGhlCmNvbmZpZ3VyZSBmYWNpbGl0eS4gIChBLk0uIFNhYnVuY3UsIFR1cmtleSkKClRoZSBvcHRpb25zIGFyZSByZWFsbHkgZXhjZWxsZW50IGFuZCB2ZXJ5IHBvd2VyZnVsLiAgKEFuaXNoIE1haGFyYWopCgpUaGUgU3ByaW5nIHVzZXItaW50ZXJmYWNlIGRlc2lnbnMgYXJlIGluLCBhbmQgd29yZCBmcm9tIHRoZSBib3V0aXF1ZXMgaXMgdGhhdAo4MHgyNCB0ZXh0LW9ubHkgbW9kZSBpcyBiYWNrIHdpdGggYSAqdmVuZ2VhbmNlISBWaSBlZGl0b3IgY2xvbmUgVklNIGJ1cnN0IG9udG8KTWFyY2ggZGVzay10b3BzIHdpdGggYSBkYXp6bGluZyBzaG93IG9mIHBhc3RlbCBzeW50YXggaGlnaGxpZ2h0cyBmb3IgaXRzIDUuMApsb29rLiAgU3RyaWRlbnQgYW5kIGN1c3RvbWl6YWJsZSwgVklNIHJhaXNlcyBleWVicm93cyB3aXRoIGl0cyBpbnRlcnByZXRhdGlvbgpvZiB0aGUgY2xhc3NpYyBWaSBzaW5nbGUta2V5IG1hY3JvIGNvbGxlY3Rpb24uCmh0dHA6Ly93d3cubnRrLm5ldC9pbmRleC5jZ2k/YmFjaz1hcmNoaXZlOTgvbm93MDMyNy50eHQmbGluZT0xNzkjbAoKSSBqdXN0IHdhbnRlZCB0byB0YWtlIHRoaXMgb3Bwb3J0dW5pdHkgdG8gbGV0IHlvdSBrbm93IHRoYXQgVklNIDUgUk9DS1MhClN5bnRheCBoaWdobGlnaHRpbmc6IGhvdyBkaWQgSSBzdXJ2aXZlIHdpdGhvdXQgaXQ/ISAgVGhhbmsgeW91IGZvciBjcmVhdGluZwptYW5raW5kJ3MgYmVzdCBlZGl0b3IhICAoTXVuIEpvaGwsIFVTQSkKClRoYW5rcyBhZ2FpbiBmb3IgVklNLiAgSSB1c2UgaXQgZXZlcnkgZGF5IG9uIExpbnV4LiAgKEVyaWMgRm9zdGVyLUpvaG5zb24sCmF1dGhvciBvZiB0aGUgYm9vayAiVU5JWCBQcm9ncmFtbWluZyBUb29scyIpCgpUaGUgQkVTVCBFRElUT1IgRVZFUiAoU3R1YXJ0IFdvb2xmb3JkKQoKSSBoYXZlIHVzZWQgbW9zdCBvZiBWSU0ncyBmYW5jeSBmZWF0dXJlcyBhdCBsZWFzdCBvbmNlLCBtYW55IGZyZXF1ZW50bHksIGFuZCBJCmNhbiBob25lc3RseSBzYXkgdGhhdCBJIGNvdWxkbid0IGxpdmUgd2l0aCBhbnl0aGluZyBsZXNzIGFueW1vcmUuICBNeQpwcm9kdWN0aXZpdHkgaGFzIGVhc2lseSBkb3VibGVkIGNvbXBhcmVkIHRvIHdoYXQgaXQgd2FzIHdoZW4gSSB1c2VkIHZpLgooU2l0YXJhbSBDaGFtYXJ0eSkKCkkgbHV2IFZJTS4gIEl0IGlzIGluY3JlZGlibGUuICBJJ20gbmFtaW5nIG15IGZpcnN0LWJvcm4gVmltYmVybHkuICAoSm9zZQpVbnBpbmdjbywgVVNBKQoKSGludDogICJWSU0iIGlzICJ2aSBpbXByb3ZlZCIgLSBtdWNoIGJldHRlciEgKFN2ZW4gR3Vja2VzLCBHZXJtYW55KQoKSSB1c2UgVklNIGV2ZXJ5IGRheS4gIEkgc3BlbmQgbW9yZSB0aW1lIGluIFZJTSB0aGFuIGluIGFueSBvdGhlciBwcm9ncmFtLi4uCkl0J3MgdGhlIGJlc3QgdmkgY2xvbmUgdGhlcmUgaXMuICBJIHRoaW5rIGl0J3MgZ3JlYXQuICAoQ3JhaWcgU2FuZGVycywKQXVzdHJhbGlhKQoKSSBzdHJvbmdseSBhZHZpc2UgdXNpbmcgVklNLS1pdHMgaW5maW5pdGUgdW5kby9yZWRvIHNhdmVkIG1lIG11Y2ggZ3JpZWYuCihUZXJyeSBCcm93bikKClRoYW5rcyB2ZXJ5IG11Y2ggZm9yIHdyaXRpbmcgd2hhdCBpbiBteSBvcGluaW9uIGlzIHRoZSBmaW5lc3QgdGV4dCBlZGl0b3Igb24KdGhlIHBsYW5ldC4gIElmIEkgd2VyZSB0byBnZXQgYW5vdGhlciBjYXQsIEkgd291bGQgbmFtZSBpdCAiVmltIi4KKEJvYiBTaGVlaGFuLCBVU0EpCgpJIHR5cGVkIDpzZXQgYWxsIGFuZCB0aGUgc2NyZWVuIEZJTExFRCB1cCB3aXRoIG9wdGlvbnMuICBBIHdob2xlIHNjcmVlbiBvZgp0aGluZ3MgdG8gYmUgc2V0IGFuZCB1bnNldC4gIEkgc2F3IHNvbWUgb2YgbXkgb2xkIGZyaWVuZHMgbGlrZSB3cmFwbWFyZ2luLAptb2RlbGluZXMgYW5kIHNob3dtb2RlLCBidXQgdGhlIHNjcmVlbiB3YXMgRklMTEVEIHdpdGggbmV3IGZyaWVuZHMhICAgSSBsb3ZlCnRoZW0gYWxsISAgIEkgbG92ZSBWSU0hICAgSSdtIHNvIGhhcHB5IHRoYXQgSSd2ZSBmb3VuZCB0aGlzIGVkaXRvciEgIEkgZmVlbApsaWtlIGhvdyBJIG9uY2UgZmVsdCB3aGVuIEkgc3RhcnRlZCB1c2luZyB2aSBhZnRlciBhIGNvdXBsZSBvZiB5ZWFycyBvZiB1c2luZwplZC4gIEkgbmV2ZXIgdGhvdWdodCBJJ2QgZm9yc2FrZSBteSBiZWxvdmVkIGVkLCBidXQgdmkgLi4uIG9oIGdvZCwgdmkgd2FzCmdyZWF0LiAgQW5kIG5vdywgVklNLiAgKFBldGVyIEpheSBTYWx6bWFuLCBVU0EpCgpJIGFtIHJlYWxseSBoYXBweSB3aXRoIHN1Y2ggYSB3b25kZXJmdWwgc29mdHdhcmUgcGFja2FnZS4gIE11Y2ggYmV0dGVyIHRoYW4KYWxtb3N0IGFueSBleHBlbnNpdmUsIG9mZiB0aGUgc2hlbGYgcHJvZ3JhbS4gIChKZWZmIFdhbGtlcikKCldoZW5ldmVyIEkgcmVyZWFkIHRoZSBWSU0gZG9jdW1lbnRhdGlvbiBJJ20gb3ZlcmNvbWUgd2l0aCBleGNpdGVtZW50IGF0IHRoZQpwb3dlciBvZiB0aGUgZWRpdG9yLiAgKFdpbGxpYW0gRWR3YXJkIFdlYmJlciwgQXVzdHJhbGlhKQoKSHVycmFoIGZvciBWSU0hISBJdCBpcyAiYXQgeW91ciBmaW5nZXJ0aXBzIiBsaWtlIHZpLCBhbmQgaGFzIHRoZSBleHRlbnNpb25zCnRoYXQgdmkgc29yZWx5IG5lZWRzOiBoaWdobGlnaHRpbmcgZm9yIGV4ZWN1dGluZyBjb21tYW5kcyBvbiBibG9ja3MsIGFuIGVhc2lseQpuYXZpZ2FibGUgYW5kIGRpZ2VzdGlibGUgaGVscCBzY3JlZW4sIGFuZCBtb3JlLiAgKFBhdWwgUGF4KQoKVGhlIHJlYXNvbiBXSFkgSSBkb24ndCBoYXZlIHRoaXMgYW1hemluZ2x5IHVzZWZ1bCBtYWNybyBhbnkgbW9yZSwgaXMgdGhhdCBJCm5vdyB1c2UgVklNIC0gYW5kIHRoaXMgaXMgYnVpbHQgaW4hISAoU3RlcGhlbiBSaWVobSwgR2VybWFueSkKCkkgYW0gYSB1c2VyIG9mIFZJTSBhbmQgSSBsb3ZlIGl0LiAgSSB1c2UgaXQgdG8gZG8gYWxsIG15IHByb2dyYW1taW5nLCBDLApDKyssIEhUTUwgd2hhdCBldmVyLiAgKFRpbSBBbGx3aW5lKQoKSSBkaXNjb3ZlcmVkIFZJTSBhZnRlciB5ZWFycyBvZiBzdHJ1Z2dsaW5nIHdpdGggdGhlIG9yaWdpbmFsIHZpLCBhbmQgSSBqdXN0CmNhbid0IGxpdmUgd2l0aG91dCBpdCBhbnkgbW9yZS4gIChFbW1hbnVlbCBNb2dlbmV0LCBVU0EpCgpFbWFjcyBoYXMgbm90IGEgYml0IG9mIGNoYW5jZSB0byBzdXJ2aXZlIHNvIGxvbmcgYXMgVklNIGlzIGFyb3VuZC4gIEJlc2lkZXMsCml0IGFsc28gaGFzIHRoZSBtb3N0IGRldGFpbGVkIHNvZnR3YXJlIGRvY3VtZW50YXRpb24gSSBoYXZlIGV2ZXIgc2Vlbi0tLW11Y2gKYmV0dGVyIHRoYW4gbW9zdCBjb21tZXJjaWFsIHNvZnR3YXJlISAgKExlaW1pbmcgUWlhbikKClRoaXMgdmVyc2lvbiBvZiBWSU0gd2lsbCBqdXN0IGJsb3cgcGVvcGxlIGFwYXJ0IHdoZW4gdGhleSBkaXNjb3ZlciBqdXN0IGhvdwpmYW50YXN0aWMgaXQgaXMhIChUb255IE51Z2VudCwgQXVzdHJhbGlhKQoKSSB0b29rIHlvdXIgYWR2aWNlICYgZmluYWxseSBnb3QgVklNICYgSSdtIHJlYWxseSBpbXByZXNzZWQuICBJbnN0YW50IGNvbnZlcnQuCihQYXRyaWNrIEtpbGxlbGVhLCBVU0EpCgpWSU0gaXMgYnkgZmFyIG15IGZhdm9yaXRlIHBpZWNlIG9mIHNoYXJld2FyZSBhbmQgSSBoYXZlIGJlZW4gcGFydGljdWxhcmx5CnBsZWFzZWQgd2l0aCB2ZXJzaW9uIDMuMC4gIFRoaXMgaXMgcmVhbGx5IGEgc29saWQgcGllY2Ugb2Ygd29yay4gIChSb2JlcnQKQ29sb24sIFVTQSkKClZJTSBpcyBhIGpveSB0byB1c2UsIGl0IGlzIHNvIHdlbGwgdGhvdWdodCBhbmQgcHJhY3RpY2FsIHRoYXQgSSB3b25kZXIgd2h5CmFueWJvZHkgd291bGQgdXNlIHZpc3VhbCBkZXZlbG9wbWVudCB0b29scy4gIFZJTSBpcyBwb3dlcmZ1bCBhbmQgZWxlZ2FudCwgaXQKbG9va3MgZGVjZXB0aXZlbHkgc2ltcGxlIGJ1dCBpcyBhbG1vc3QgYXMgY29tcGxleCBhcyBhIDc0NyAoZXNwZWNpYWxseSB3aGVuIEkKbG9vayBhdCBteSBncm93aW5nIC52aW1yYyksIGtlZXAgdXAgdGhhdCB3b25kZXJmdWwgam9iLCBWSU0gaXMgYSBjZW50ZXJwaWVjZQpvZiB0aGUgZnJlZSBzb2Z0d2FyZSB3b3JsZC4gIChMb3Vpcy1EYXZpZCBNaXR0ZXJhbmQsIFVTQSkKCkkgY2Fubm90IGJlbGlldmUgaG93IGdyZWF0IGl0IGlzIHRvIHVzZSBWSU0uICBJIHRoaW5rIHRoZSBndXlzIGF0IHdvcmsgYXJlCmdldHRpbmcgdGlyZWQgb2YgaGVhcmluZyBtZSBicmFnZ2luZyBhYm91dCBpdC4gIE90aGVycyBleWVzIGFyZSBsaWdodGluZyB1cC4KKFJpY2sgQ3Jvb3RlKQoKRW1hY3MgdGFrZXMgd2F5IHRvbyBtdWNoIHRpbWUgdG8gc3RhcnQgdXAgYW5kIHJ1biwgaXQgaXMgdG9vIGJpZyBhbmQgYnVsa3kgZm9yCmVmZmVjdGl2ZSB1c2UgYW5kIHRoZSBpbnRlcmZhY2UgaXMgbW9yZSBjb25mdXNpbmcgdGhhbiBpdCBpcyBvZiBhbnkgaGVscC4gIFZJTQpob3dldmVyIGlzIHNob3J0LCBpdCBpcyBmYXN0LCBpdCBpcyBwb3dlcmZ1bCwgaXQgaGFzIGEgZ29vZCBpbnRlcmZhY2UgYW5kIGl0CmlzIGFsbCBwdXJwb3NlLiAgKFBhYWwgRGl0bGVmc2VuIEVrcmFuKQoKRnJvbSB0aGUgZmlyc3QgdGltZSBJIGdvdCBWSU0zLjAsIEkgd2FzIHZlcnkgZW50aHVzaWFzdGljLiAgSXQgaGFzIGFsbW9zdCBubwpwcm9ibGVtcy4gIFRoZSBzd2FwZmlsZSBoYW5kbGluZyBhbmQgdGhlIGJhY2t1cCBwb3NzaWJpbGl0aWVzIGFyZSByb2J1c3QsIGFsc28KdGhlIHByb3RlY3Rpb24gYWdhaW5zdCBlZGl0aW5nIG9uZSBmaWxlIHR3aWNlLiAgSXQgaXMgdmVyeSBjb21wYXRpYmxlIHRvIHRoZQpyZWFsIFZJIChhbmQgdGhhdCBpcyBhIE1VU1QsIGJlY2F1c2UgbXkgYnJhaW4gaXMgdHJhaW5lZCBvdmVyIHllYXJzIGluIHVzaW5nCml0KS4gIChHZXJ0IHZhbiBBbnR3ZXJwZW4sIEhvbGxhbmQpCgpWaXN1YWwgbW9kZSBpbiBWSU0gaXMgYSB2ZXJ5IHBvd2VyZnVsIHRoaW5nISAoVG9ueSBOdWdlbnQsIEF1c3RyYWxpYSkKCkkgaGF2ZSB0byBzYXkgdGhhdCBWSU0gaXMgPVRIRT0gc2luZ2xlIGdyZWF0ZXN0IHBpZWNlIG9mIHNvdXJjZSBjb2RlIHRvIGV2ZXIKY29tZSBhY3Jvc3MgdGhlIG5ldCAoSmltIEJhdHRsZSwgVVNBKS4KCkluIGZhY3QsIGlmIHlvdSBkbyB3YW50IHRvIGdldCBhIG5ldyB2aSBJJ2Qgc3VnZ2VzdCBWSU0tMy4wLiAgVGhpcyBpcywgYnkKZmFyLCB0aGUgYmVzdCB2ZXJzaW9uIG9mIHZpIEkndmUgZXZlciBzZWVuIChBbGJlcnQgVy4gU2NodWVsbGVyKS4KCkkgc2hvdWxkIG1lbnRpb24gdGhhdCBWSU0gaXMgYSB2ZXJ5IGdvb2QgZWRpdG9yIGFuZCBjYW4gY29tcGV0ZSB3aXRoIGFueXRoaW5nCihJbHlhIEJlbG9vemVyb3YpLgoKVG8gdGVsbCB0aGUgdHJ1dGggc29tZXRpbWVzIEkgdXNlZCBlbHZpcywgdmlsZSwgeHZpLCBjYWx2aW4sIGV0Yy4gIEFuZCB0aGlzIGlzCnRoZSByZWFzb24gdGhhdCBJIGNhbiBzdGF0ZSB0aGF0IFZJTSBpcyB0aGUgYmVzdCEgKEZlcmVuYyBEZWFrLCBIdW5nYXJ5KQoKVklNIGlzIGJ5IGZhciB0aGUgYmVzdCBlZGl0b3IgdGhhdCBJIGhhdmUgdXNlZCBpbiBhIGxvbmcgdGltZSwgYW5kIEkgaGF2ZQpsb29rZWQgYXQganVzdCBhYm91dCBldmVyeSB0aGluZyB0aGF0IGlzIGF2YWlsYWJsZSBmb3IgZXZlcnkgcGxhdGZvcm0gdGhhdCBJCnVzZS4gIFZJTSBpcyB0aGUgYmVzdCBvbiBhbGwgb2YgdGhlbS4gIChHdXkgTC4gT2xpdmVyKQoKVklNIGlzIHRoZSBncmVhdGVzdCBlZGl0b3Igc2luY2UgdGhlIHN0b25lIGNoaXNlbC4gIChKb3NlIFVucGluZ2NvLCBVU0EpCgpJIHdvdWxkIGxpa2UgdG8gc2F5IHRoYXQgd2l0aCBWSU0gSSBhbSBmaW5hbGx5IG1ha2luZyB0aGUgJ2VtYWNzIHRvIHZpJwp0cmFuc2l0aW9uIC0gYXMgYW4gRWRpdG9yIGl0IGlzIHNvIG11Y2ggYmV0dGVyIGluIG1hbnkgd2F5czoga2V5Ym9hcmQgbGF5b3V0LAptZW1vcnkgdXNhZ2UsIHRleHQgYWx0ZXJhdGlvbiB0byBuYW1lIDMuICAoTWFyayBBZGFtKQoKSW4gZmFjdCwgbm93IGlmIEkgd2FudCB0byBrbm93IHdoYXQgYSBwYXJ0aWN1bGFyIHNldHRpbmcgZG9lcyBpbiB2aSwgSSBmaXJlIHVwClZJTSBhbmQgY2hlY2sgb3V0IGl0cyBoZWxwISAgKE5pa2hpbCBQYXRlbCwgVVNBKQoKQXMgYSB2aSB1c2VyLCBWSU0gaGFzIG1hZGUgd29ya2luZyB3aXRoIHRleHQgYSBmYXIgbW9yZSBwbGVhc2FudCB0YXNrIHRoYW4KYmVmb3JlIEkgZW5jb3VudGVyZWQgdGhpcyBwcm9ncmFtLiAgKFN0ZWluYXIgS251dHNlbiwgTm9yd2F5KQoKSSB1c2UgVklNIHNpbmNlIHZlcnNpb24gMy4wLiAgU2luY2UgdGhhdCB0aW1lLCBpdCBpcyB0aGUgT05MWSBlZGl0b3IgSSB1c2UsCndpdGggU29sYXJpcywgTGludXggYW5kIE9TLzIgV2FycC4gIEkgc3VnZ2VzdCBhbGwgbXkgZnJpZW5kcyB0byB1c2UgVklNLCB0aGV5CnRyeSwgYW5kIHRoZXkgY29udGludWUgdXNpbmcgaXQuICBWSU0gaXMgcmVhbGx5IHRoZSBiZXN0IHNvZnR3YXJlIEkgaGF2ZSBldmVyCmRvd25sb2FkZWQgZnJvbSB0aGUgSW50ZXJuZXQsIGFuZCB0aGUgYmVzdCBlZGl0b3IgSSBrbm93IG9mLiAgKE1hcmNvCkVjY2V0dHVhdG8sIEl0YWx5KQoKCkluIHN1bW1hcnk6CiAgICAgX18gICAgIF9fXwkJICAgIF8JICAgIF8JXyAgX19fIF9fX19fIGAKICAgICBcIFwgICAvIChfKV8gX18gX19fICAgKF8pX19fICB8IHwgfCB8LyBfIFxfICAgX3wgYAogICAgICBcIFwgLyAvfCB8ICdfIGAgXyBcICB8IC8gX198IHwgfF98IHwgfCB8IHx8IHwgYAogICAgICAgXCBWIC8gfCB8IHwgfCB8IHwgfCB8IFxfXyBcIHwgIF8gIHwgfF98IHx8IHwgYAoJXF8vICB8X3xffCB8X3wgfF98IHxffF9fXy8gfF98IHxffFxfX18vIHxffCBgCgkgICAgIF9fX18gX19fX18gXyAgIF8gX19fX18gX19fX18gXyBfIGAKCSAgICAvIF9fX3xfICAgX3wgfCB8IHwJX19ffCAgX19ffCB8IHwgYAoJICAgIFxfX18gXCB8IHwgfCB8IHwgfCB8XyAgfCB8XyAgfCB8IHwgYAoJICAgICBfX18pIHx8IHwgfCB8X3wgfAlffCB8ICBffCB8X3xffCBgCgkgICAgfF9fX18vIHxffAlcX19fL3xffCAgIHxffAkgKF98XykJICAgIChUb255IE51Z2VudCwgQXVzdHJhbGlhKSBgCgoKIHZpbTp0dz03ODp0cz04OmZ0PWhlbHA6bm9ybDoK