SG93IHRvIGJ1aWxkIFB5dGhvbiBmcm9tIGEgc291cmNlIGRpc3RyaWJ1dGlvbi4KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCk5PVEU6IFRoZXNlIG5vdGVzIGFyZSBmb3IgYnVpbGRpbmcgYSBQeXRob24gZnJvbSBhIG1hY2hpbmUtaW5kZXBlbmRlbnQKc291cmNlIGRpc3RyaWJ1dGlvbiwgKm5vdCogZm9yIGJ1aWxkaW5nIGEgUHl0aG9uIGZyb20gYSBtYWMtc3BlY2lmaWMKc291cmNlIGRpc3RyaWJ1dGlvbi4KCllvdSB3aWxsIG5lZWQgYSBQeXRob24gc291cmNlIGRpc3RyaWJ1dGlvbiBpbiB0YXIgZm9ybS4gU28sIHRoZQpmaXJzdCB0aGluZyB5b3UgbmVlZCBpcyBhIHRhciBwcm9ncmFtIGZvciB0aGUgbWFjLiBTdW50YXIgaXMKcmVhc29uYWJsZSBhbmQgY2FuIGJlIGZvdW5kIGF0IHRoZSBpbmZvLW1hYyBzaXRlcy4gRWRpdCB0aGUKcHJlZmVyZW5jZXMgdG8gbWFrZSBpdCBleHRyYWN0IEMgc291cmNlcyB3aXRoIGNyZWF0b3IgQ1dJRQphbmQgLnB5IGZpbGVzIGFzIHRleHQgZmlsZXMgd2l0aCBjcmVhdG9yIFB5dGgsIHRoaXMgd2lsbCBzYXZlCnlvdSB3b3JrIGxhdGVyLgoKWW91IHdpbGwgYWxzbyBuZWVkIENvZGVXYXJyaW9yIDguIElmIHlvdSBoYXZlIGFub3RoZXIgZGV2ZWxvcG1lbnQKZW52aXJvbm1lbnQgeW91IGFyZSBvbiB5b3VyIG93biwgYmFzaWNhbGx5LgoKWW91IG1heSBhbHNvIG5lZWQgdGhlIGltZyBkaXN0cmlidXRpb24gYW5kIHRoZSBzdGR3aW4gZGlzdHJpYnV0aW9uLgpJZiB5b3UgZG9uJ3Qgd2FudCB0aGVtIHlvdSBtYXkgaGF2ZSB0byBlZGl0IHNvbWUgb2YgdGhlIHByb2plY3RzCnRvIHJlbW92ZSByZWZlcmVuY2VzIHRvIHRoZW0uCgpXaGVuIHlvdSd2ZSBleHRyYWN0ZWQgZXZlcnl0aGluZyB5b3UgbWF5IGhhdmUgdG8gdW5wYWNrIHRoZQouaHF4IGZpbGVzIGluIE1hYzpSZXNvdXJjZXMgYW5kIE1hYzptd2Vya3M6UHJvamVjdHMgKGJ1dCBzdW50YXIKbWF5IGhhdmUgZG9uZSB0aGlzIGZvciB5b3UgYWxyZWFkeSkuCgpZb3UgaGF2ZSB0byByZW1vdmUgTW9kdWxlczpmbW1vZHVsZS5jLCB0aGUgU0dJIGZtIG1vZHVsZSwgd2hpY2ggaGFzIGEKbmFtZSBjb25mbGljdCB3aXRoIHRoZSBNYWMgRm1tb2R1bGUuYy4KCk5leHQsIGNyZWF0ZSB5b3VyIGJ1aWxkIGRpcmVjdG9yaWVzLiBJIHVzZSB0aGUgZm9sbG93aW5nIG5hbWluZwpjb252ZW50aW9uOgpidWlsZC5tYWNwcGMuc2hhcmVkCQlQb3dlclBDIHNoYXJlZC1saWJyYXJ5CmJ1aWxkLm1hYzY4ay5zdGFuZAkJNjhLIG5vbi1zaGFyZWQKYW5kIHRoZXJlIGFyZSBhbHNvIHByb2plY3RzIGZvciBwcGMgc3RhbmRhbG9uZSBhbmQgc29tZSBvdGhlcnMsIHRoZXkKbWF5IGJlIHVzZWZ1bCBhdCB0aW1lcy4gVGhlIHByb2plY3QgZmlsZXMgZXhwZWN0IHRoZSBidWlsZCBkaXJlY3Rvcmllcwp0byBiZSBsb2NhdGVkIHJpZ2h0IGluIHRoZSBtYWluIHB5dGhvbiBmb2xkZXIsIGlmIHlvdSBwdXQgdGhlbSBlbHNld2hlcmUKeW91IHdpbGwgaGF2ZSB0byBlZGl0IHRoZSBhY2Nlc3MgcGF0aHMuCgpNb3ZlIE1XQ1B5dGhvbkNvcmVSdW50aW1lLrUsIFB5dGhvbkNvcmUutSwgUHl0aG9uUFBDLrUgYW5kClB5dGhvbkFwcGxldC61IChmcm9tIHRoZSBNYWM6bXdlcmtzOnByb2plY3RzIGZvbGRlcikgdG8KYnVpbGQubWFjcHBjLnNoYXJlZCwgbW92ZSBQeXRob242OEsutSB0byBidWlsZC5tYWM2OGsuc3RhbmQuCgpCdWlsZCB0aGUgcHJvamVjdHMuIEZvciB0aGUgUFBDIHByb2plY3RzLCBrZWVwIHRoZSBvcmRlciBnaXZlbiBhYm92ZS4KRG8gKm5vdCogcnVuIHRoZSBweXRob24gaW50ZXJwcmV0ZXIgeWV0LiBGaXJzdCwgbW92ZSB0aGUgaW50ZXJwcmV0ZXIKdG8gdGhlIG1haW4gcHl0aG9uIGZvbGRlci4gRm9yIFBQQywgYWxzbyBtb3ZlIFB5dGhvbkNvcmUgdG8gdGhlIG1haW4KcHl0aG9uIGZvbGRlci4KCk5vdyB0cnkgeW91ciBweXRob24gaW50ZXJwcmV0ZXIsIHRoaXMgd2lsbCBjcmVhdGUgYW4gaW5pdGlhbApwcmVmZXJlbmNlcyBmaWxlLgoKRm9yIDY4SyBweXRob24geW91IGFyZSBub3cgZG9uZS4KCkZvciBQUEMgUHl0aG9uLCBkb24ndCB0cnkgY29tcGxpY2F0ZWQgc2NyaXB0cyB5ZXQsIHlvdSBmaXJzdCBoYXZlIHRvCmNyZWF0ZSB0aGUgZHluYW1pY2FsbHkgbG9hZGFibGUgbW9kdWxlcy4gQ3JlYXRlIGEgZm9sZGVyIFBsdWdJbnMgKGluCnRoZSB0b3BsZXZlbCBweXRob24gZm9sZGVyKSBhbmQgbW92ZSBhbGwgdGhlIHByb2plY3RzIHRoYXQgaGF2ZQoibW9kdWxlIiBvciAibW9kdWxlcyIgaW4gdGhlaXIgbmFtZSB0aGVyZS4gQnVpbGQgdGhlc2UgcHJvamVjdHMuIFRoaXMKd2lsbCBjcmVhdGUgYSBudW1iZXIgb2YgIi5leHAiIGZpbGVzLCBlZGl0IHRoZXNlIGZpbGVzIHRvIGNvbnRhaW4gb25seQphbGwgdGhlICJpbml0IiBtb2R1bGVzLCBhbmQgYnVpbGQgdGhlIHByb2plY3RzIGFnYWluLiBUaGlzIGxhdHRlciBzdGVwCmlzbid0IHJlYWxseSBlc3NlbnRpYWwsIHNvIGZlZWwgZnJlZSB0byBza2lwIGl0LgoKVGhlIG5leHQgc3RlcCBpcyB0byBjcmVhdGUgYWxpYXNlcyBmb3IgdGhlIHZhcmlvdXMgbW9kdWxlcyB0aGF0ICJsaXZlCnRvZ2V0aGVyIiBpbiBvbmUgc2hhcmVkIGxpYnJhcnkuIEZvciB0aGlzLCB0YWtlIE1rUGx1Z2luQWxpYXNlcy5weSBhbmQKTWtQbHVnaW5BbGlhc2VzLnJzcmMgZnJvbSB0aGUgTWFjOnNjcmlwdHMgZm9sZGVyIGFuZCBtb3ZlIG9yIGNvcHkgdGhlbQp0byB0aGUgcHl0aG9uIGhvbWUgZm9sZGVyLiAgUnVuIHRoZSBzY3JpcHQgZnJvbSB0aGVyZS4KCklmIHlvdSBoYXZlbid0IGNyZWF0ZWQgYWxsIHBsdWdpbnMgeW91J2xsIGdldCBzb21lIGVycm9ycyBhYm91dCBmaWxlcwpub3QgZXhpc3RpbmcsIGRvbid0IHdvcnJ5LiBEb24ndCBmb3JnZXQgdG8gbW92ZSB0aGUgc2NyaXB0cyBiYWNrLgoKTmV4dCwgbWFrZSBhbiBhbGlhcyBvZiBQeXRob25Db3JlIChhbHNvIG5hbWVkIFB5dGhvbkNvcmUpIGFuZCBwdXQgaXQKaW4gU3lzdGVtIEZvbGRlcjpFeHRlbnNpb25zLiBUaGlzIHdpbGwgZW5zdXJlIHRoYXQgeW91IGNhbiBydW4gcHl0aG9uCmFueXdoZXJlLCBub3QganVzdCBmcm9tIHRoZSBmb2xkZXIgd2hlcmUgUHl0aG9uQ29yZSBsaXZlcy4KCk1vc3Qgb2YgeW91ciBlbnZpcm9ubWVudCBpcyBub3cgc2V0dXAuIFlvdSBjYW4gdHJ5IGl0IGJ5IHJ1bm5pbmcKRWRpdFB5dGhvblByZWZzLnB5IChpbiBNYWM6c2NyaXB0cyksIGl0IHNob3VsZCBub3cgd29yayBmcm9tIHRoZXJlLgoKTGFzdGx5LCB5b3Ugc2hvdWxkIHNldHVwIHNvbWUgc3R1ZmYgbmVlZGVkIGZvciBhcHBsZXQgY3JlYXRpb24uIEZpcnN0LAp5b3Ugc2hvdWxkIHB1dCBQeXRob25BcHBsZXQgKG9yIGFuIGFsaWFzIHRvIGl0KSBpbiB0aGUgcHl0aG9uIGhvbWUKZm9sZGVyLiBOZXh0LCB5b3Ugc2hvdWxkIHR1cm4gbWthcHBsZXQucHkgKGZyb20gbWFjOnNjcmlwdHMpIGludG8gYW4KYXBwbGV0IGl0c2VsZjogZG91YmxlLWNsaWNrIGl0IGFuZCBnaXZlIGl0IGl0c2VsZiBhcyBpbnB1dCBpbiB0aGUKaW5wdXQgZmlsZSBkaWFsb2cuCgpOb3cgdGhhdCB5b3UgaGF2ZSBjcmVhdGVkIG1rYXBwbGV0IHlvdSBjYW4gdXNlIHRoaXMgYXMgYSBkcm9wbGV0OgpkcmFnLWFuZC1kcm9wIHB5dGhvbiBzb3VyY2VzIG9udG8gaXQgKEVkaXRQeXRob25QcmVmcy5weSBhbmQKUnVuTGliU2NyaXB0LnB5IGNvbWUgdG8gbWluZCkgYW5kIHRoZSBhcHBsZXRzIHdpbGwgYmUgY3JlYXRlZC4KCgkJCUphY2sgSmFuc2VuLCBDV0ksIDE4IE1hcmNoIDE5OTYuIAo=