sabato 1 gennaio 2000

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

NTc0LsKgwqDCoMKgwqDCoMKgClRoaXMgaXMgcGVyaGFwcyB0aGUgbW9zdCB0ZXJyaWJsZSBmb3JtIG9mIHNsYXZlcnkgdW5kZXIgd2hpY2ggYSBodW1hbiAKYmVpbmcgY2FuIHN1ZmZlciwgYW5kIHlldCB0byBvYnRhaW4gZnJlZWRvbSBmcm9tIGl0LCBpdCBpcyBvbmx5IG5lY2Vzc2FyeSB0byAKYXNzZXJ0IGl0LiBXaGF0IG90aGVyIHBlb3BsZSBzYXkgY2FuIG1ha2UgdG8gdXMgb25seSBzdWNoIGRpZmZlcmVuY2UgYXMgd2UgCm91cnNlbHZlcyBjaG9vc2UgdG8gYWxsb3cgaXQgdG8gbWFrZS4gV2UgaGF2ZSBidXQgdG8gcmVhbGlzZSB3aXRoaW4gb3Vyc2VsdmVzIAp0aGF0IGl0IGRvZXMgbm90IGluIHRoZSBsZWFzdCBtYXR0ZXIgd2hhdCBhbnlib2R5IHNheXMsIGFuZCBhdCBvbmNlIHdlIGFyZSAKcGVyZmVjdGx5IGZyZWUuIFRoaXMgaXMgYSBsZXNzb24gd2hpY2ggdGhlIG9jY3VsdGlzdCBtdXN0IGxlYXJuIGF0IGFuIGVhcmx5IApzdGFnZSBvZiBoaXMgcHJvZ3Jlc3MuIEhlIGxpdmVzIHVwb24gYSBoaWdoZXIgbGV2ZWwsIGFuZCBoZSBjYW4gYWxsb3cgaGltc2VsZiB0byAKYmUgaW5mbHVlbmNlZCBvbmx5IGJ5IGhpZ2hlciBjb25zaWRlcmF0aW9ucy4gSGUgdGFrZXMgaW50byBhY2NvdW50IHRoZSBoaWRkZW4gCnNpZGUgb2YgdGhpbmdzIG9mIHdoaWNoIG1vc3QgcGVvcGxlIGtub3cgbm90aGluZzsgYW5kLCBiYXNpbmcgaGlzIGp1ZGdtZW50IHVwb24gCnRoYXQsIGhlIGRlY2lkZXMgZm9yIGhpbXNlbGYgd2hhdCBpcyByaWdodCBhbmQgd2hhdCBpcyB3cm9uZywgYW5kIChoYXZpbmcgCmRlY2lkZWQpIGhlIHRyb3VibGVzIGhpbXNlbGYgbm8gbW9yZSBhcyB0byB3aGF0IG90aGVyIHBlb3BsZSBzYXkgb2YgaGltIHRoYW4gd2UgCnRyb3VibGUgb3Vyc2VsdmVzIGFzIHRvIHRoZSBmbGllcyB0aGF0IGNpcmNsZSByb3VuZCBvdXIgaGVhZHMuIEl0IG5ldmVyIG1hdHRlcnMgCmluIHRoZSBsZWFzdCB0byB1cyB3aGF0IGFueW9uZSBlbHNlIHNheXMsIGJ1dCBpdCBtYXR0ZXJzIG11Y2ggdG8gdXMgd2hhdCB3ZSAKb3Vyc2VsdmVzIHNheS4gCgoKNTc1LsKgwqDCoMKgwqDCoMKgCkEgQkVUVEVSIEFTUEVDVCAKCgo1NzYuwqDCoMKgwqDCoMKgwqAKSGFwcGlseSB0aGlzIG1pZ2h0eSBwb3dlciBvZiB0aG91Z2h0IGNhbiBiZSB1c2VkIGZvciBnb29kIGFzIHdlbGwgYXMgZm9yIApldmlsLCBhbmQsIGluIHNvbWUgd2F5cywgdGhlIHByZXNzdXJlIG9mIHB1YmxpYyBvcGluaW9uIGlzIG9jY2FzaW9uYWxseSBvbiB0aGUgCnNpZGUgb2YgdHJ1dGggYW5kIHJpZ2h0ZW91c25lc3MuIFB1YmxpYyBvcGluaW9uLCBhZnRlciBhbGwsIHJlcHJlc2VudHMgdGhlIApvcGluaW9uIG9mIHRoZSBtYWpvcml0eSwgYW5kIHRoZXJlZm9yZSB0aGUgcHJlc3N1cmUgd2hpY2ggaXQgZXhlcmNpc2VzIGlzIGFsbCB0byAKdGhlIGdvb2Qgd2hlbiBpdCBpcyBhcHBsaWVkIHRvIHRob3NlIHdobyBhcmUgYmVsb3cgdGhlIGxldmVsIG9mIHRoZSBtYWpvcml0eS4gSXQgCmlzIGluZGVlZCBvbmx5IHRoZSBleGlzdGVuY2Ugb2YgdGhpcyBtYXNzIG9mIG9waW5pb24gd2hpY2ggcmVuZGVycyBzb2NpYWwgYW5kIApjaXZpbGlzZWQgbGlmZSBwb3NzaWJsZTsgb3RoZXJ3aXNlIHdlIHNob3VsZCBiZSBhdCB0aGUgbWVyY3kgb2YgdGhlIHN0cm9uZ2VzdCAKYW5kIHRoZSBtb3N0IHVuc2NydXB1bG91cyBhbW9uZyB1cy4gQnV0IHRoZSBzdHVkZW50IG9mIG9jY3VsdGlzbSBpcyB0cnlpbmcgdG8gCnJhaXNlIGhpbXNlbGYgdG8gYSBsZXZlbCBtdWNoIGFib3ZlIHRoZSBtYWpvcml0eSwgYW5kIGZvciB0aGF0IHB1cnBvc2UgCml0IGlzIG5lY2Vzc2FyeSB0aGF0IGhlIHNob3VsZCBsZWFybiB0byB0aGluayBmb3IgaGltc2VsZiwgYW5kIG5vdCB0byBhY2NlcHQgCnJlYWR5LW1hZGUgb3BpbmlvbnMgd2l0aG91dCBleGFtaW5pbmcgdGhlbS4gVGhpcyBtdWNoIGF0IGxlYXN0IG1heSBiZSBzYWlkLS0gCnRoYXQsIGlmIHB1YmxpYyBvcGluaW9uIGRvZXMgbm90IHlldCBleGFjdCBhIHZlcnkgaGlnaCBsZXZlbCBvZiBjb25kdWN0LCBhdCAKbGVhc3QgdGhlIHB1YmxpYyBpZGVhbCBpcyBhIGhpZ2ggb25lLCBhbmQgaXQgbmV2ZXIgZmFpbHMgdG8gcmVzcG9uZCB0byB0aGUgbm9ibGUgCmFuZCB0aGUgaGVyb2ljIHdoZW4gdGhhdCBpcyBwdXQgYmVmb3JlIGl0LiBDbGFzcyBmZWVsaW5nIGFuZCBlc3ByaXQgZGUgY29ycHMgCmRvIGhhcm0gd2hlbiB0aGV5IGxlYWQgbWVuIHRvIGRlc3Bpc2Ugb3RoZXJzOyBidXQgdGhleSBkbyBnb29kIHdoZW4gdGhleSAKZXN0YWJsaXNoIGEgc3RhbmRhcmQgYmVsb3cgd2hpY2ggdGhlIG1hbiBmZWVscyB0aGF0IGhlIGNhbm5vdCBmYWxsLiAKCgo1NzcuwqDCoMKgwqDCoMKgwqAKSW4gRW5nbGFuZCB3ZSBoYXZlIGEgd2F5IG9mIGF0dHJpYnV0aW5nIG91ciBtb3JhbHMgdG8gb3VyIHJlbGlnaW9uLCAKd2hlcmVhcyB0aGUgdHJ1dGggc2VlbXMgdG8gYmUgdGhhdCB0aGVyZSBpcyBsaXR0bGUgcmVhbCBjb25uZWN0aW9uIGJldHdlZW4gdGhlbS4gCkl0IG11c3QgYmUgYWRtaXR0ZWQgdGhhdCBsYXJnZSBudW1iZXJzIG9mIHRoZSBjdWx0dXJlZCBjbGFzc2VzIGluIGFsbW9zdCBhbnkgCkV1cm9wZWFuIGNvdW50cnkgaGF2ZSBubyByZWFsIGVmZmVjdGl2ZSBiZWxpZWYgaW4gcmVsaWdpb24gYXQgYWxsLiBQZXJoYXBzIHRvIGEgCmNlcnRhaW4gZXh0ZW50IHRoZXkgdGFrZSBhIGZldyBnZW5lcmFsIGRvZ21hcyBmb3IgZ3JhbnRlZCwgYmVjYXVzZSB0aGV5IGhhdmUgCm5ldmVyIHJlYWxseSB0aG91Z2h0IGFib3V0IHRoZW0gb3Igd2VpZ2hlZCB0aGVtIGluIHRoZWlyIG1pbmRzLCBidXQgaXQgd291bGQgYmUgCmFuIGVycm9yIHRvIHN1cHBvc2UgdGhhdCByZWxpZ2lvdXMgY29uc2lkZXJhdGlvbnMgZGlyZWN0IHRoZWlyIGFjdGlvbnMgb3IgYmVhciAKYW55IGxhcmdlIHBhcnQgaW4gdGhlaXIgbGlmZS4gCgoKNTc4LsKgwqDCoMKgwqDCoMKgClRoZXkgYXJlLCBob3dldmVyLCBncmVhdGx5IGluZmx1ZW5jZWQsIGFuZCBpbmZsdWVuY2VkIGFsd2F5cyBmb3IgZ29vZCwgYnkgCmFub3RoZXIgYm9keSBvZiBpZGVhcyB3aGljaCBpcyBlcXVhbGx5IGludGFuZ2libGUtLSB0aGUgc2Vuc2Ugb2YgaG9ub3VyLiBUaGUgCmdlbnRsZW1hbiBpbiBldmVyeSByYWNlIGhhcyBhIGNvZGUgb2YgaG9ub3VyIG9mIGhpcyBvd247IHRoZXJlIGFyZSBjZXJ0YWluIAp0aGluZ3Mgd2hpY2ggaGUgbXVzdCBub3QgZG8sIHdoaWNoIGhlIGNhbm5vdCBkbyBiZWNhdXNlIGhlIGlzIGEgZ2VudGxlbWFuLiBUbyBkbyAKYW55IG9mIHRob3NlIHRoaW5ncyB3b3VsZCBsb3dlciBoaW0gaW4gaGlzIG93biBlc3RpbWF0aW9uLCB3b3VsZCBkZXN0cm95IGhpcyAKZmVlbGluZyBvZiBzZWxmLXJlc3BlY3Q7IGJ1dCBpbiBmYWN0IGhlIGhhcyBuZXZlciBldmVuIHRoZSB0ZW1wdGF0aW9uIHRvIGRvIAp0aGVtLCBiZWNhdXNlIGhlIHJlZ2FyZHMgdGhlbSBhcyBpbXBvc3NpYmxlIGZvciBoaW0uIFRvIHRlbGwgYW4gdW50cnV0aCwgdG8gZG8gYSAKbWVhbiBvciBkaXNob25vdXJhYmxlIGFjdGlvbiwgdG8gYmUgZGlzcmVzcGVjdGZ1bCB0byBhIGxhZHk7IHRoZXNlIGFuZCBzdWNoIGFzIAp0aGVzZSwgaGUgd2lsbCB0ZWxsIHlvdSwgYXJlIHRoaW5ncyB3aGljaCBhcmUgbm90IGRvbmUgaW4gaGlzIHJhbmsgb2YgCmxpZmUuIFRoZSBwcmVzc3VyZSBvZiBzdWNoIGNsYXNzIGZlZWxpbmcgYXMgdGhpcyBpcyBhbGwgdG8gdGhlIGdvb2QsIGFuZCBpcyBieSAKYWxsIG1lYW5zIHRvIGJlIGVuY291cmFnZWQuIFRoZSBzYW1lIHRoaW5nIGlzIHRvIGJlIGZvdW5kIGluIGEgbWlub3IgZGVncmVlIGluIAp0aGUgdHJhZGl0aW9uIG9mIG91ciBncmVhdCBzY2hvb2xzIG9yIGNvbGxlZ2VzLCBhbmQgbWFueSBhIGJveSB3aG8gaGFzIGJlZW4gCnN0cm9uZ2x5IHRlbXB0ZWQgdG8gZXNjYXBlIGZyb20gc29tZSBkaWZmaWN1bHR5IGJ5IGFuIGFjdCBvZiBkaXNob25vdXIgaGFzIHNhaWQgCnRvIGhpbXNlbGY6IO+/vUkgY2Fubm90IGRvIHRoYXQsIGZvciB0aGUgc2FrZSBvZiB0aGUgb2xkIHNjaG9vbDsgaXQgc2hhbGwgbmV2ZXIgYmUgCnNhaWQgdGhhdCBvbmUgb2YgaXRzIG1lbWJlcnMgZGVzY2VuZGVkIHRvIHN1Y2ggYW4gYWN0aW9uLu+/vSBTbyB0aGVyZSBpcyBhIGdvb2QgCnNpZGUgYXMgd2VsbCBhcyBhIGJhZCBvbmUgdG8gdGhpcyBtYXR0ZXIgb2YgcHVibGljIG9waW5pb24sIGFuZCBvdXIgYnVzaW5lc3MgaXMgCnRvIHVzZSBhbHdheXMgdGhlIGdyZWF0IHZpcnR1ZSBvZiBkaXNjcmltaW5hdGlvbiwgc28gdGhhdCB3ZSBtYXkgc2VwYXJhdGUgdGhlIApkZXNpcmFibGUgZnJvbSB0aGUgdW5kZXNpcmFibGUuIAoKCjU3OS7CoMKgwqDCoMKgwqDCoApBbm90aGVyIHBvaW50IHdvcnRoIHJlbWVtYmVyaW5nIGlzIHRoYXQgdGhpcyBncmVhdCwgY2x1bXN5LCBzdHVwaWQgZm9yY2UgCm9mIHB1YmxpYyBvcGluaW9uIGNhbiBpdHNlbGYgYmUgc2xvd2x5IGFuZCBncmFkdWFsbHkgbW91bGRlZCBhbmQgaW5mbHVlbmNlZC4gV2UgCm91cnNlbHZlcyBhcmUgbWVtYmVycyBvZiB0aGUgcHVibGljLCBhbmQgdW5kZXIgdGhlIHVuaXZlcnNhbCBsYXcgb3VyIHZpZXdzIG11c3QgCnRvIHNvbWUgZXh0ZW50IGFmZmVjdCBvdGhlcnMuIFRoZSB3b25kZXJmdWwgY2hhbmdlLCB3aGljaCBkdXJpbmcgdGhlIGxhc3QgdGhpcnR5IAp5ZWFycyBoYXMgY29tZSBvdmVyIG1vZGVybiB0aG91Z2h0IGluIGNvbm5lY3Rpb24gd2l0aCB0aGUgc3ViamVjdHMgd2hpY2ggd2UgCnN0dWR5LCBpcyBsYXJnZWx5IGR1ZSB0byB0aGUgcGVyc2lzdGVudCB3b3JrIG9mIG91ciBTb2NpZXR5LiBUaHJvdWdoIGFsbCB0aG9zZSAKeWVhcnMgd2UgaGF2ZSBzdGVhZGlseSBjb250aW51ZWQgdG8gc3BlYWssIHRvIHdyaXRlLCBhbmQgYWJvdmUgYWxsIHRvIHRoaW5rIApzYW5lbHkgYW5kIHJhdGlvbmFsbHkgYWJvdXQgdGhlc2UgcXVlc3Rpb25zLiBJbiBkb2luZyBzbyB3ZSBoYXZlIGJlZW4gcG91cmluZyAKb3V0IHZpYnJhdGlvbnMsIGFuZCB0aGVpciBlZmZlY3QgaXMgcGxhaW5seSB2aXNpYmxlIGluIGEgZ3JlYXQgbW9kaWZpY2F0aW9uIG9mIAp0aGUgdGhvdWdodCBvZiBvdXIgZGF5LiBPbmx5IHRob3NlIG1lbiB3aG8gYXJlIGZ1bGx5IHJlYWR5IGNhbiBiZSBicm91Z2h0IGFzIGZhciAKYXMgVGhlb3NvcGh5LCBidXQgdGhvdXNhbmRzIG1vcmUgbWF5IGJlIGJyb3VnaHQgaGFsZi13YXktLSBpbnRvIE5ldyBUaG91Z2h0LCAKaW50byBTcGlyaXR1YWxpc20sIGludG8gbGliZXJhbCBDaHJpc3RpYW5pdHkuIEluIHRoaXMgY2FzZSwgYXMgaW4gZXZlcnkgb3RoZXIsIAp0byBrbm93IHRoZSBsYXcgaXMgdG8gYmUgYWJsZSB0byB3aWVsZCBpdHMgZm9yY2VzLiAKCgo1ODAuwqDCoMKgwqDCoMKgwqAKQ0hBUFRFUiBYSSAKCgo1ODEuwqDCoMKgwqDCoMKgwqAKQlkgT0NDQVNJT05BTCBFVkVOVFMgCgoKNTgyLsKgwqDCoMKgwqDCoMKgCkEgRlVORVJBTCAKCgo1ODMuwqDCoMKgwqDCoMKgwqAKU08gZmFyIHdlIGhhdmUgYmVlbiBjb25zaWRlcmluZyBjaGllZmx5IHRoZSBpbmZsdWVuY2VzIHdoaWNoLCB3aGV0aGVyIAplbWFuYXRpbmcgZnJvbSBuYXR1cmUgb3IgZnJvbSBodW1hbml0eSBhcm91bmQgdXMsIGFyZSBzdGVhZGlseSBleGVyY2lzaW5nIHVwb24gCnVzIGEgZmFpcmx5IGNvbnN0YW50IHByZXNzdXJlLCBvZiB3aGljaCB3ZSBhcmUgdXN1YWxseSBpZ25vcmFudCBwcmVjaXNlbHkgCmJlY2F1c2UgaXQgaXMgY29uc3RhbnQuIEl0IHdpbGwgbm93IGJlIHdlbGwgdG8gbWVudGlvbiB0aGUgaGlkZGVuIHNpZGUgb2Ygc3VjaCAKb2NjdXJyZW5jZXMgYXMgY29tZSBvbmx5IG9jY2FzaW9uYWxseSBpbnRvIG91ciBsaXZlcywgYXMsIGZvciBleGFtcGxlLCB3aGVuIHdlIAphdHRlbmQgYSBmdW5lcmFsLCB3aGVuIHdlIHVuZGVyZ28gYSBzdXJnaWNhbCBvcGVyYXRpb24sIHdoZW4gd2UgYXR0ZW5kIGEgCmxlY3R1cmUsIGEgcG9saXRpY2FsIG1lZXRpbmcsIG9yIGEgc3Bpcml0dWFsaXN0aWMgc++/vWFuY2UsIHdoZW4gdGhlcmUgaXMgYSAKcmVsaWdpb3VzIHJldml2YWwgaW4gb3VyIG5laWdoYm91cmhvb2QsIHdoZW4gYSBncmVhdCBuYXRpb25hbCBmZXN0aXZhbCBpcyAKY2VsZWJyYXRlZCwgb3Igd2hlbiB0aGVyZSBpcyBhIHdhciwgYW4gZWFydGhxdWFrZSwgYW4gZXJ1cHRpb24gb3Igc29tZSBncmVhdCAKY2FsYW1pdHkgaW4gdGhlIHdvcmxkLiAKCgo1ODQuwqDCoMKgwqDCoMKgwqAKRmlyc3QsIHRoZW4sIGhvdyBpcyBhIG1hbiBhZmZlY3RlZCBieSB0aGUgaGlkZGVuIHNpZGUgb2YgYSBmdW5lcmFsPyBJIGRvIApub3QgbWVhbiBob3cgaXMgYSBtYW4gYWZmZWN0ZWQgYnkgaGlzIG93biBmdW5lcmFsLCB0aG91Z2ggdGhhdCBhbHNvIGlzIGEgCnF1ZXN0aW9uIG9mIGludGVyZXN0LCBmb3IgaXQgYWZmZWN0cyBzb21lIHBlb3BsZSB0byBhbiBleHRyYW9yZGluYXJ5IGV4dGVudC4gTm8gCnBlcnNvbiBvZiBwaGlsb3NvcGhpY2FsIHRlbXBlcmFtZW50IHdvdWxkIHRyb3VibGUgaGltc2VsZiBhcyB0byB3aGF0IHdhcyBkb25lIAp3aXRoIGhpcyBib2R5LCB3aGljaCBpcyBhZnRlciBhbGwgb25seSBhIHdvcm5vdXQgZ2FybWVudDsgYnV0IHRoZXJlIGFyZSBtYW55IApwZW9wbGUgaW4gdGhlIHdvcmxkIHdobyBhcmUgbm90IHBoaWxvc29waGljYWwsIGFuZCB0byB0aGVtIGl0IGlzIHNvbWV0aW1lcyBhIAptYXR0ZXIgb2YgZ3JlYXQgbW9tZW50LiAKCgo1ODUuwqDCoMKgwqDCoMKgwqAKQWxsIGNsYXNzaWNhbCBoaXN0b3J5IGFzc3VyZXMgdXMgdGhhdCB0aGUgYW5jaWVudCBHcmVlaywgd2hlbiBoZSBkaWVkLCAKd2FzIGV4Y2VlZGluZ2x5IGFueGlvdXMgdGhhdCBoaXMgYm9keSBzaG91bGQgcmVjZWl2ZSB3aGF0IGhlIGNvbnNpZGVyZWQgZGVjZW50IApzZXB1bHR1cmUtLSBtYWlubHkgYmVjYXVzZSBoZSBsYWJvdXJlZCB1bmRlciB0aGUgaWxsdXNpb24gdGhhdCB1bmxlc3MgdGhpcyB3YXMgCmRvbmUgaGUgd291bGQgbm90IGJlIGZyZWUgdG8gcHVyc3VlIHRoZSBldmVuIHRlbm9yIG9mIGhpcyB3YXkgYWZ0ZXIgZGVhdGguIE1vc3QgCm9mIHRoZSBnaG9zdCBzdG9yaWVzIG9mIGFuY2llbnQgR3JlZWNlIHJlbGF0ZWQgdG8gcGVvcGxlIHdobyBjYW1lIGJhY2sgdG8gCmFycmFuZ2UgZm9yIHRoZSBkdWUgZGlzcG9zYWwgb2YgdGhlaXIgYm9kaWVzLiAKCgo1ODYuwqDCoMKgwqDCoMKgwqAKVGhlIHBvb3JlciBjbGFzc2VzIGFtb25nIHRoZSBtb2Rlcm4gSXJpc2ggc2VlbSB0byBzaGFyZSB0aGlzIApleHRyYW9yZGluYXJ5IGFueGlldHkgYWJvdXQgdGhlIGRpc3Bvc2FsIG9mIHRoZWlyIGJvZGllcywgZm9yIG9uIHNldmVyYWwgCm9jY2FzaW9ucyBJIGhhdmUgY29tZSBhY3Jvc3MgSXJpc2ggd29tZW4gd2hvc2Ugb25lIHRob3VnaHQgYWZ0ZXIgZGVhdGggd2FzIG5vdCAKaW4gdGhlIGxlYXN0IGZvciB0aGUgd2VsZmFyZSBvciBwcm9ncmVzcyBvZiB0aGVpciBzb3VscywgYnV0IHRoYXQgdGhlIG51bWJlciBvZiAKY2FycmlhZ2VzIGZvbGxvd2luZyB0aGVpciBmdW5lcmFsIHByb2Nlc3Npb24gc2hvdWxkIG5vdCBmYWxsIGJlbG93IGEgY2VydGFpbiAKbnVtYmVyLCBvciB0aGF0IHRoZSBjb2ZmaW4gcHJvdmlkZWQgZm9yIHRoZSBib2R5IHNob3VsZCBub3QgYmUgaW4gYW55IHJlc3BlY3QgCmluZmVyaW9yIHRvIHRoYXQgd2hpY2ggTXJzLiBTby1hbmQtU28gaGFkIGhhZCBhIGZldyB3ZWVrcyBiZWZvcmUuIAoKCjU4Ny7CoMKgwqDCoMKgwqDCoApUaGlzLCBob3dldmVyLCBpcyBhIG1lcmUgZGlncmVzc2lvbiwgYW5kIHdoYXQgd2UgaGF2ZSB0byBjb25zaWRlciBpcyB0aGUgCmVmZmVjdCBvZiBhIGZ1bmVyYWwgdXBvbiB0aGUgc3Vydml2b3JzLCBhbmQgbm90IHVwb24gdGhlIGRlYWQgbWFuICh3aG8gLApuZXZlcnRoZWxlc3MsIGlzIHVzdWFsbHkgcHJlc2VudCwgYW5kIHJlZ2FyZHMgdGhlIHByb2NlZWRpbmdzIGZyb20gdmFyaW91cyAKcG9pbnRzIG9mIHZpZXcsIGFjY29yZGluZyB0byBoaXMgdGVtcGVyYW1lbnQpLiAKCgo1ODguwqDCoMKgwqDCoMKgwqAKQSBmdW5lcmFsIGlzIGRpc3RpbmN0bHkgYSBmdW5jdGlvbiB0byBiZSBhdm9pZGVkIGJ5IHRoZSBvY2N1bHRpc3Q7IGJ1dCAKc29tZXRpbWVzIGhlIG1heSBmaW5kIGhpbXNlbGYgaW4gY2lyY3Vtc3RhbmNlcyB3aGVyZSBoaXMgcmVmdXNhbCB0byBhdHRlbmQgbWlnaHQgCmJlIG1pc2NvbnN0cnVlZCBieSBpZ25vcmFudCBhbmQgdW5jb21wcmVoZW5kaW5nIHJlbGF0aW9ucy4gSW4gc3VjaCBhIGNhc2UgaGUgCnNob3VsZCBleGVydCBoaXMgd2lsbCwgYW5kIHB1dCBoaW1zZWxmIGludG8gYSBkZXRlcm1pbmVkIGFuZCBwb3NpdGl2ZSBhdHRpdHVkZSwgCnNvIHRoYXQgaGUgbWF5IG9uIG5vIGFjY291bnQgYmUgYWZmZWN0ZWQgYnkgdGhlIGluZmx1ZW5jZXMgYXJvdW5kIGhpbSwgYW5kIGF0IAp0aGUgc2FtZSB0aW1lIGJlIGluIGEgcG9zaXRpb24gcG93ZXJmdWxseSB0byBhZmZlY3Qgb3RoZXJzLiAKCgo1ODkuwqDCoMKgwqDCoMKgwqAKSGUgc2hvdWxkIHRoaW5rIGZpcnN0IG9mIHRoZSBkZWFkIG1hbiAod2hvIHdpbGwgbW9zdCBsaWtlbHkgYmUgcHJlc2VudCkgCndpdGggc3Ryb25nLCBmcmllbmRseSBpbnRlcmVzdCBhbmQgYWZmZWN0aW9uLCBhbmQgd2l0aCBhIGRldGVybWluZWQgd2lsbCBmb3IgaGlzIApwZWFjZSBhbmQgYWR2YW5jZW1lbnQuIEhlIHNob3VsZCBhZG9wdCBhbHNvIGEgcG9zaXRpdmUgYXR0aXR1ZGUgb2YgbWluZCBpbiBoaXMgCnRob3VnaHQgdG93YXJkcyB0aGUgbW91cm5lcnMsIGVuZGVhdm91cmluZyBzdHJvbmdseSB0byBpbXByZXNzIHVwb24gdGhlbSB0aGF0IAp0aGV5IG11c3Qgbm90IGdyaWV2ZSwgYmVjYXVzZSB0aGUgbWFuIHdob20gdGhleSBtb3VybiBhcyBkZWFkIGlzIGluIHJlYWxpdHksIApzdGlsbCBsaXZpbmcsIGFuZCB0aGVpciBncmllZiB3aWxsIGhpbmRlciBoaW0gaW4gaGlzIG5ldyBjb25kaXRpb24uIEhlIG11c3QgdHJ5IAptZW50YWxseSB0byBob2xkIHRoZW0gZmlybWx5IGluIGhhbmQsIGFuZCB0byBwcmV2ZW50IHRoZW0gZnJvbSByZWxheGluZyBpbnRvIApoeXN0ZXJpY3MgYW5kIGhlbHBsZXNzbmVzcy4gCgoKNTkwLsKgwqDCoMKgwqDCoMKgClRoZSBtb2Rlcm4gZnVuZXJhbCBpcyBmYXIgZnJvbSBpZGVhbC4gSXQgc2VlbXMgdG8gYmUgYW4gZXN0YWJsaXNoZWQgCmNvbnZlbnRpb24gdGhhdCB0aGVyZSBtdXN0IGJlIHNvbWUga2luZCBvZiBjZXJlbW9ueSBjb25uZWN0ZWQgd2l0aCB0aGUgZGlzcG9zYWwgCm9mIHRoZSBkaXNjYXJkZWQgY2xvdGhpbmcgb2YgdGhlIGxpYmVyYXRlZCBlZ287IGJ1dCBzdXJlbHkgc29tZXRoaW5nIGJldHRlciAKbWlnaHQgYmUgZGV2aXNlZCB0aGFuIHdoYXQgaXMgdXN1YWxseSBkb25lIGF0IHByZXNlbnQuIFRoZSBmdW5lcmFsIGluIHRoZSAKdmlsbGFnZSBjaHVyY2ggaXMgbm90IHdpdGhvdXQgYSBjZXJ0YWluIGFtb3VudCBvZiBhcHByb3ByaWF0ZW5lc3MtLSBldmVuIGEgCmNlcnRhaW4gY29uc29sYXRpb247IHRoZSBtb3VybmVycyBhcmUgaW4gYSBidWlsZGluZyB3aGljaCBoYXMgZm9yIHRoZW0gaG9seSBhbmQgCmVsZXZhdGluZyBhc3NvY2lhdGlvbnMgb2YgYWxsIHNvcnRzLCBhbmQgdGhlIHNlcnZpY2UgYXBwb2ludGVkIGJ5IHRoZSBDaHVyY2ggb2YgCkVuZ2xhbmQgaXMgYmVhdXRpZnVsLCB0aG91Z2ggaGVyZSBhbmQgdGhlcmUgb25lIHdvdWxkIGxpa2UgdG8gaW5mdXNlIGludG8gaXQgYSAKbm90ZSBvZiBtb3JlIGVudGh1c2lhc3RpYyBjZXJ0YWludHkuIAoKCjU5MS7CoMKgwqDCoMKgwqDCoApCdXQgZm9yIHRoZSBzZXJ2aWNlIHBlcmZvcm1lZCBpbiBhIGNlbWV0ZXJ5IGNoYXBlbCB0aGVyZSBpcyBub3RoaW5nIAp3aGF0ZXZlciB0byBiZSBzYWlkLiBUaGUgcGxhY2UgaXMgbmV2ZXIgdXNlZCBmb3IgYW55IG90aGVyIHB1cnBvc2UgdGhhbiBhIApmdW5lcmFsLCBhbmQgaXRzIHdob2xlIGF0bW9zcGhlcmUgaXMgcGVydmFkZWQgd2l0aCBob3BlbGVzcyBncmllZi4gRXZlcnl0aGluZyBpcyAKdXN1YWxseSBhcyBiYXJlIGFuZCBhcyBnbG9vbXkgYXMgcG9zc2libGU7IHRoZSB2ZXJ5IHdhbGxzIHJlZWsgb2YgdGhlIApjaGFybmVsLWhvdXNlLiBXZSBtdXN0IHJlbWVtYmVyIHRoYXQsIGZvciBvbmUgcGVyc29uIHdobyB1bmRlcnN0YW5kcyB0aGUgdHJ1dGggCmFib3V0IGRlYXRoIGFuZCB0YWtlcyBhbiBpbnRlbGxpZ2VudGx5IGhvcGVmdWwgdmlldyBvZiBpdCwgdGhlcmUgYXJlIGh1bmRyZWRzIAp3aG8gaGF2ZSBub3RoaW5nIGJ1dCB0aGUgbW9zdCBpcnJhdGlvbmFsIGFuZCBncnVlc29tZSBpZGVhcy4gU3VjaCBhIHBsYWNlIGFzIAp0aGF0LCB0aGVyZWZvcmUsIGlzIGZpbGxlZCB3aXRoIHRoZSBibGFja2VzdCBkZXNwYWlyIGFuZCB0aGUgbW9zdCBwb2lnbmFudCAKbWVudGFsIHN1ZmZlcmluZzsgYW5kIGl0IGlzIGNvbnNlcXVlbnRseSBvZiBhbGwgcGxhY2VzIHRoZSBtb3N0IHVuZGVzaXJhYmxlIGludG8gCndoaWNoIHRvIHRha2UgdGhvc2Ugd2hvIGhhdmUgZXhwZXJpZW5jZWQgd2hhdCBzZWVtcyB0byB0aGVtIHRvIGJlIGEgYmVyZWF2ZW1lbnQuCgoKNTkyLsKgwqDCoMKgwqDCoMKgClRIRSBESVNQT1NBTCBPRiBUSEUgREVBRCBCT0RZIAoKCjU5My7CoMKgwqDCoMKgwqDCoApObyBvbmUgd2hvIGhhcyB0aGUgZmFpbnRlc3QgZ2xpbXBzZSBvZiB0aGUgaGlkZGVuIHNpZGUgb2YgdGhpbmdzIGNhbiAKYXBwcm92ZSBvZiBvdXIgcHJlc2VudCBiYXJiYXJvdXMgbWV0aG9kIG9mIGRpc3Bvc2luZyBvZiB0aGUgYm9kaWVzIG9mIHRoZSBkZWFkLiAKRXZlbiBvbiB0aGUgcGh5c2ljYWwgZWFydGggdGhlcmUgaXMgbm8gc2luZ2xlIHBvaW50IGluIGl0cyBmYXZvdXIsIGFuZCB0aGVyZSBhcmUgCm1hbnkgd2VpZ2h0eSBjb25zaWRlcmF0aW9ucyBhZ2FpbnN0IGl0LiBGcm9tIHRoZSBzZW50aW1lbnRhbCBwb2ludCBvZiB2aWV3IAphbG9uZSwgaXQgaXMgaW1wb3NzaWJsZSB0byB1bmRlcnN0YW5kIGhvdyBhbnkgcGVyc29uIGNhbiByZWNvbmNpbGUgaGltc2VsZiB0byAKdGhlIGlkZWEgdGhhdCB0aGUgY2FzdC1vZmYgZ2FybWVudCBvZiBvbmUgd2hvbSBoZSBsb3ZlcyBzaG91bGQgYmUgbGVmdCB0byBhIHNsb3cgCmFuZCBsb2F0aHNvbWUgZGVjYXkgdW5kZXIgY29uZGl0aW9ucyBmcm9tIHdoaWNoIGltYWdpbmF0aW9uIHNocmlua3Mgd2l0aCBob3Jyb3I7IAphbmQgd2hlbiB0byB0aGlzIHdlIGFkZCB0aGUgZHJlYWRmdWwgZGFuZ2VyIG9mIGRpc2Vhc2UgdG8gdGhlIGxpdmluZyBmcm9tIHRoZSAKdW5zcGVha2FibGUgcG9sbHV0aW9uIG9mIGFpciBhbmQgb2Ygd2F0ZXIsIHdlIGJlZ2luIHRvIHVuZGVyc3RhbmQgdGhhdCBvdXIgCmZ1bmVyYWwgY3VzdG9tcyBhcmUgb25lIG9mIHRoZSBtYW55IGluZGljYXRpb25zIHRoYXQgb3VyIGJvYXN0ZWQgY2l2aWxpc2F0aW9uIAppcywgYWZ0ZXIgYWxsIG9ubHkgYSB2ZW5lZXIuIAoKCjU5NC7CoMKgwqDCoMKgwqDCoApTdGlsbCBtb3JlIGRlY2lkZWRseSBpcyB0aGlzIGltcHJlc3Npb24gY29uZmlybWVkIHdoZW4gd2UgZ2FpbiBhbiBpbnNpZ2h0IAppbnRvIHRoYXQgc2lkZSBvZiB0aGVzZSBtYXR0ZXJzIHdoaWNoIGlzIGFzIHlldCB1bmtub3duIHRvIHRoZSBtYWpvcml0eS4gV2UgCmJlY29tZSBhd2FyZSB0aGVuIHdoYXQga2luZCBvZiBlbnRpdHkgaXQgaXMgdGhhdCBpcyBhdHRyYWN0ZWQgYnkgdGhlIHByb2Nlc3Mgb2YgCnNsb3cgcHV0cmVmYWN0aW9uLCBhbmQgd2Ugc2VlIHRoYXQgaW4gdGhpcyB3YXkgYWxzbyB0ZXJyaWJsZSwgdW5uZWNlc3NhcnkgaGFybSAKaXMgYmVpbmcgZG9uZSB0byB0aGUgc3Vydml2b3JzLiAKCgo1OTUuwqDCoMKgwqDCoMKgwqAKRm9yIHRoZSBkZWFkIG1hbiwgaWYgaGUgaXMgd2lzZSwgaXQgbWF0dGVycyBsaXR0bGUgd2hhdCBiZWNvbWVzIG9mIHRoZSAKd29ybi1vdXQgZ2FybWVudDsgYnV0IGl0IHNob3VsZCBiZSByZW1lbWJlcmVkIHRoYXQgYWxsIGRlYWQgbWVuIGFyZSBub3QgCm5lY2Vzc2FyaWx5IHdpc2UsIGFuZCB0aGF0IGZvciBzb21lIG9mIHRoZW0gKHdobyBrbm93IG5vIGJldHRlcikgdGhpcyBhYm9taW5hYmxlIApjdXN0b20gb2Ygb3VycyBtYWtlcyBwb3NzaWJsZSBhIHNlcmlvdXMgbWlzdGFrZSwgd2hpY2ggdW5kZXIgcHJvcGVyIGNvbmRpdGlvbnMgCmNvdWxkIG5vdCBiZSBjb21taXR0ZWQuIAoKCjU5Ni7CoMKgwqDCoMKgwqDCoApUaGUgYXZlcmFnZSBtYW4gaW4gaGlzIG9yZGluYXJ5IHRoaW5raW5nIGlzIG5vdCBpbiB0aGUgaGFiaXQgb2YgCnNlcGFyYXRpbmcgaGltc2VsZiBpbnRvIGJvZHkgYW5kIHNvdWwgYXMgZGVmaW5pdGVseSBhcyBkb2VzIHRoZSBzdHVkZW50IG9mIApvY2N1bHRpc20uIFRydWUsIHRoZSBkZWFkIG1hbiBoYXMgZmluYWxseSBsZWZ0IGhpcyBwaHlzaWNhbCB2ZWhpY2xlLCBhbmQgaXQgaXMgCnByYWN0aWNhbGx5IGltcG9zc2libGUgZm9yIGhpbSBhZ2FpbiB0byB0YWtlIHBvc3Nlc3Npb24gb2YgaXQ7IGJ1dCBoZSBpcyAKaW50aW1hdGVseSBhY3F1YWludGVkIHdpdGggaXQsIGFuZCBpdHMgcmF0ZXMgb2YgdmlicmF0aW9uIGFyZSBmYW1pbGlhciBhbmQgCnN5bXBhdGhldGljIHRvIGhpbS4gVW5kZXIgYWxsIG5vcm1hbCBhbmQgY2xlYW4gYW5kIHByb3BlciBjb25kaXRpb25zIGhlIGhhcyBkb25lIAp3aXRoIGl0IGVudGlyZWx5OyBidXQgdGhlcmUgYXJlIHRob3NlIHdobywgaGF2aW5nIGhhZCBubyBpZGVhcywgbm8gY29uY2VwdGlvbnMgCm9mIGFueSBzb3J0IGJleW9uZCB0aGUgcGh5c2ljYWwgZHVyaW5nIGxpZmUsIGJlY29tZSBjcmF6eSB3aXRoIGZlYXIgd2hlbiB0aGV5IApmaW5kIHRoZW1zZWx2ZXMgYWx0b2dldGhlciBjdXQgYWRyaWZ0IGZyb20gaXQuIFN1Y2ggbWVuIHNvbWV0aW1lcyBtYWtlIGZyYW50aWMgCmVmZm9ydHMgdG8gcmV0dXJuIGludG8gc29tZSBzb3J0IG9mIHRvdWNoIHdpdGggcGh5c2ljYWwgbGlmZS4gTW9zdCBkbyBub3QgCnN1Y2NlZWQ7IGJ1dCB3aGVuIGFueSBvZiB0aGVtIGRvIHN1Y2NlZWQgdG8gc29tZSBsaW1pdGVkIGV4dGVudCwgaXQgY2FuIGJlIG9ubHkgCmJ5IG1lYW5zIG9mIHRoZWlyIG93biBwaHlzaWNhbCBib2RpZXMuIAoKCjU5Ny7CoMKgwqDCoMKgwqDCoApTdWNoIFJhcHBvcnQgYXMgdGhleSBzdGlsbCByZXRhaW4gd2l0aCB0aGUgZGVjYXlpbmcgdmVzdHVyZXMgCnNvbWV0aW1lcyBlbmFibGVzIHRoZW0gdG8gZHJhdyBmcm9tIHRoZW0gdGhlIGJhc2lzIG9mIGFuIGltcGVyZmVjdCBhbmQgdW5uYXR1cmFsIApoYWxmLW1hdGVyaWFsaXNhdGlvbi0tIG5vdCBuZWFybHkgZW5vdWdoIHRvIGJyaW5nIHRoZW0gYmFjayBpbnRvIHRvdWNoIHdpdGggdGhlIApwaHlzaWNhbCB3b3JsZCwgYnV0IHlldCBzdWZmaWNpZW50IHRvIHRlYXIgdGhlbSBmb3IgdGhlIHRpbWUgZnJvbSBoZWFsdGh5IGFzdHJhbCAKbGlmZS4gU3VjaCBwZW9wbGUgbWFrZSBmb3IgdGhlbXNlbHZlcyBmb3IgYXdoaWxlLS0gZm9ydHVuYXRlbHkgb25seSBmb3IgYXdoaWxlLS0gCmEgZGltLCBncmV5IHdvcmxkIG9mIGhvcnJvciBpbiB3aGljaCB0aGV5IHNlZSBwaHlzaWNhbCBoYXBwZW5pbmdzIGFzIGluIGEgZ2xhc3MgCmRhcmtseS0tIGFzIHRocm91Z2ggYSB3b3JsZCBvZiBtaXN0IGluIHdoaWNoIHRoZXkgd2FuZGVyLCBsb3N0IGFuZCBoZWxwbGVzcy4gCgoKNTk4LsKgwqDCoMKgwqDCoMKgClRoZXkgY2Fubm90IGdldCBiYWNrIGVudGlyZWx5IGludG8gdGhlIGRlbnNlIGJvZGllczsgYSBtYW4gd2hvIGRpZCB3b3VsZCAKYmVjb21lIGEgdmFtcGlyZS4gQnV0IHRoZXkgZG8gZ2V0IGhvbGQgb2YgdGhlIGV0aGVyaWMgbWF0dGVyIG9mIHRoZWlyIGRpc2NhcmRlZCAKdmVoaWNsZXMsIGFuZCBkcmFnIGl0IGFib3V0IHdpdGggdGhlbSwgYW5kIHRoaXMgaXMgdGhlIGNhdXNlIG9mIGFsbCB0aGVpciAKc3VmZmVyaW5nOyBhbmQgdW50aWwgdGhleSBjYW4gZ2V0IHJpZCBvZiB0aGlzIGVudGFuZ2xlbWVudCwgdW50aWwgdGhleSBjYW4gCnBsdW5nZSB0aHJvdWdoIHRoZSBncmF5bmVzcyBhbmQgZ2V0IGludG8gdGhlIGxpZ2h0LCB0aGVyZSBjYW4gYmUgbm8gcmVzdCBmb3IgCnRoZW0uIFRoZXJlIGFyZSB1bnBsZWFzYW50IGZvcm1zIG9mIGJsYWNrIG1hZ2ljLCB0b28sIGtub3duIGluIG9yaWVudGFsIApjb3VudHJpZXMgYW5kIHRvIHRob3NlIHdobyBoYXZlIHN0dWRpZWQgdGhlIG1ldGhvZHMgb2YgdGhlIFZvb2RvbyBvciB0aGUgT2JlYWgsIAp3aGljaCBkZXBlbmQgZm9yIHRoZWlyIHN1Y2Nlc3MgdXBvbiB0aGUgZGVjYXlpbmcgcGh5c2ljYWwgYm9keTsgdGhvdWdoIHRoaXMgaXMgCmhhcHBpbHkgbm90IGEgY29uc2lkZXJhdGlvbiBvZiBwcmFjdGljYWwgaW1wb3J0YW5jZSB0byB0aG9zZSB3aG8gbGl2ZSBhbW9uZyAKY29tbXVuaXRpZXMgdW52ZXJzZWQgaW4gc3VjaCBldmlsIGxvcmUuIAoKCjU5OS7CoMKgwqDCoMKgwqDCoApCdXQgYXQgbGVhc3QgdGhpcyBpcyBjbGVhci0tIHRoYXQgYWxsIHBvc3NpYmlsaXRpZXMgb2YgZXZpbCwgYm90aCBmb3IgdGhlIApkZWFkIGFuZCBmb3IgdGhlIGxpdmluZywgYXJlIGF2b2lkZWQgYnkgdGhlIHJhdGlvbmFsIGRpc3Bvc2FsIG9mIHRoZSBkaXNjYXJkZWQgCnZlc3R1cmUgb2YgZmxlc2guIFdoZW4gd2UgcmV0dXJuIHRvIHRoZSBjdXN0b20gb2YgY3JlbWF0aW9uLCBwcmFjdGlzZWQgYnkgdGhlIApIaW5kdXMsIHRoZSBHcmVla3MgYW5kIHRoZSBSb21hbnMsIHdlIHJlZHVjZSB0aGUgcGh5c2ljYWwgdmVoaWNsZSBhcyByYXBpZGx5IGFzIApwb3NzaWJsZSB0byBpdHMgY29uc3RpdHVlbnQgZWxlbWVudHMgaW4gYSBtYW5uZXIgd2hpY2ggaXMgYXQgb25jZSBjbGVhbiwgZGVjZW50LCAKYW5kIHdob2xseSBzYXRpc2ZhY3RvcnkgdG8gdGhlIGFlc3RoZXRpYyBzZW50aW1lbnQgYXMgd2VsbCBhcyB0byB0aGUgcmF0aW9uYWwgCnZpZXcgb2YgdGhlIG1hbiBvZiBzZW5zZS4gCgoKNjAwLsKgwqDCoMKgwqDCoMKgClNvbWUgcGVvcGxlIGhhdmUgZmVhcmVkIHRoZSBwb3NzaWJpbGl0eSB0aGF0LCBlc3BlY2lhbGx5IGluIHRoZSBjYXNlcyBvZiAKc3VkZGVuIGRlYXRoLCB0aGUgZGVhZCBtYW4gbWlnaHQgZmVlbCB0aGUgZmxhbWUtLSBtaWdodCBiZSBpbiBzb21lIHdheSBub3QgeWV0IApmdWxseSBzZXBhcmF0ZWQgZnJvbSBoaXMgYm9keSwgYW5kIHNvIG1pZ2h0IHN1ZmZlciB3aGVuIHRoYXQgYm9keSB3YXMgYnVybmVkLiAKRXZlbiBpZiB0aGUgZGVhdGggYmUgc3VkZGVuLCBzbyBsb25nIGFzIGl0IGlzIGRlYXRoLCB0aGUgYXN0cmFsIGFuZCAKZXRoZXJpYyBtYXR0ZXIgaGF2ZSBiZWVuIGNvbXBsZXRlbHkgc2VwYXJhdGVkIGZyb20gdGhlIGRlbnNlciBwaHlzaWNhbCwgYW5kIGl0IAp3b3VsZCBiZSBxdWl0ZSBpbXBvc3NpYmxlIHRoYXQgdGhlIGRlYWQgbWFuIGNvdWxkIHVuZGVyIGFueSBjaXJjdW1zdGFuY2VzIGZlZWwgCndoYXQgd2FzIGRvbmUgdG8gdGhlIHBoeXNpY2FsIGJvZHkuIEkgbWVhbiB0aGF0IGhlIGNvdWxkIG5vdCByZWFsbHkgCmZlZWwgaXQsIGJlY2F1c2UgdGhlIGNvbm5lY3Rpb24gdGhyb3VnaCB3aGljaCBoZSBmZWVscyBpcyBkZWZpbml0ZWx5IGJyb2tlbjsgCndoYXQgaXMgcGVyaGFwcyBwb3NzaWJsZSBpcyB0aGF0LCBzZWVpbmcgdGhlIGNyZW1hdGlvbiwgaGUgbWlnaHQgaGF2ZSBhIGNlcnRhaW4gCmZlYXIgbGVzdCBoZSBzaG91bGQgZmVlbCBpdC0tIHRoZSBpZGVhIHRoYXQgaGUgb3VnaHQgdG8gYmUgZmVlbGluZyBpdCwgYXMgaXQgCndlcmU7IGFuZCBzbyBpbWFnaW5hdGlvbiBtaWdodCBjb21lIGludG8gcGxheSB0byBzb21lIGV4dGVudC4gCgoKNjAxLsKgwqDCoMKgwqDCoMKgCkkgaGF2ZSBuZXZlciBzZWVuIHN1Y2ggYSBjYXNlIGluIGNvbm5lY3Rpb24gd2l0aCBjcmVtYXRpb247IGJ1dCBJIApyZW1lbWJlciBoZWFyaW5nIG9uIGdvb2QgYXV0aG9yaXR5IG9mIGEgeW91bmcgbWFuIHdob3NlIHRlZXRoIHdlcmUgYWxsIGRyYXduIAphZnRlciBoaXMgZGVhdGggYnkgYSBkaXNob25lc3QgdW5kZXJ0YWtlciwgaW4gb3JkZXIgdGhhdCB0aGV5IG1pZ2h0IGJlIHNvbGQgYXMgCmFydGlmaWNpYWwgdGVldGguIFRoZSB5b3VuZyBtYW4gYXBwZWFyZWQgdG8gaGlzIGZhdGhlciB3aXRoIGJsb29kIGZsb3dpbmcgZnJvbSAKaGlzIG1vdXRoLCBleGNsYWltaW5nIGluIGdyZWF0IGluZGlnbmF0aW9uIHRoYXQgdGhleSBoYWQgdG9ydHVyZWQgaGltIGJ5IGRyYXdpbmcgCmhpcyB0ZWV0aC4gVGhlIGJvZHkgd2FzIGV4aHVtZWQsIGFuZCBpdCB3YXMgZm91bmQgdGhhdCBoaXMgc3Rvcnkgd2FzIGNvcnJlY3QuIEluIAp0aGlzIGNhc2UsIGlmIHRoZSBtYW4gd2FzIHJlYWxseSBkZWFkLCBpdCBpcyBxdWl0ZSBpbXBvc3NpYmxlIHRoYXQgaGUgY291bGQgaGF2ZSAKZmVsdCBhbnkgcGFpbjsgYnV0IGhlIGJlY2FtZSBhd2FyZSBvZiB3aGF0IHdhcyBiZWluZyBkb25lLCBhbmQgd2FzIHZlcnkgYW5ncnkgCmFib3V0IGl0OyBhbmQgbm8gZG91YnQgaGUgbWF5IGhhdmUgdGhvdWdodCBvZiBoaW1zZWxmIGFzIHJlYWxseSBpbmp1cmVkLCBiZWNhdXNlIApkdXJpbmcgbGlmZSB0aGUgaWRlYSBvZiB0b290aC1kcmF3aW5nIGhhZCBiZWVuIGFzc29jaWF0ZWQgd2l0aCBncmVhdCBwYWluLiAKCgo2MDIuwqDCoMKgwqDCoMKgwqAKVGhlIGRpZmZlcmVuY2Ugd2hpY2ggdGhlIGtub3dsZWRnZSBvZiB0aGUgaGlkZGVuIHNpZGUgb2YgdGhpbmdzIG1ha2VzIGluIAp0aGUgY29uc2lkZXJhdGlvbiBvZiB0aGUgd2hvbGUgc3ViamVjdCBvZiBkZWF0aCBpcyB2ZXJ5IGFwdGx5IHNob3duIGJ5IHR3byBvZiAKdGhlIGZpZ3VyZXMgcmVwcm9kdWNlZCBpbiB0aGUgYm9vayBvbiBUaG91Z2h0LUZvcm1zIC0tIHRob3NlIHdoaWNoIAppbGx1c3RyYXRlIHRoZSB0aG91Z2h0LWltYWdlcyBjcmVhdGVkIGJ5IHR3byBtZW4gc3RhbmRpbmcgc2lkZSBieSBzaWRlIGF0IGEgCmZ1bmVyYWwuIFRoZXJlIGl0IGlzIHNlZW4gdGhhdCB0aGUgbWFuIHdobyBoYWQgbGl2ZWQgaW4gdGhlIG9yZGluYXJ5IGJsYW5rIAppZ25vcmFuY2Ugd2l0aCByZWdhcmQgdG8gZGVhdGgsIGhhZCBubyB0aG91Z2h0IGluIGNvbm5lY3Rpb24gd2l0aCBpdCBidXQgc2VsZmlzaCAKZmVhciBhbmQgZGVwcmVzc2lvbjsgd2hlcmVhcyB0aGUgbWFuIHdobyB1bmRlcnN0b29kIHRoZSBmYWN0cyB3YXMgZW50aXJlbHkgZnJlZSAKZnJvbSBhbnkgc3VnZ2VzdGlvbiBvZiB0aG9zZSBmZWVsaW5ncywgZm9yIHRoZSBvbmx5IHNlbnRpbWVudHMgZXZva2VkIGluIGhpbSAKd2VyZSB0aG9zZSBvZiBzeW1wYXRoeSBhbmQgYWZmZWN0aW9uIGZvciB0aGUgbW91cm5lcnMsIGFuZCBvZiBkZXZvdGlvbiBhbmQgaGlnaCAKYXNwaXJhdGlvbi4gCgoKNjAzLsKgwqDCoMKgwqDCoMKgCkluZGVlZCwga25vd2xlZGdlIG9mIHRoZSBoaWRkZW4gc2lkZSBvZiBsaWZlIGVudGlyZWx5IGNoYW5nZXMgYSBtYW4nIHMgCmF0dGl0dWRlIHRvd2FyZHMgZGVhdGgsIGZvciBpdCBzaG93cyBoaW0gaW5zdGFudGx5IHRoYXQgaW5zdGVhZCBvZiBiZWluZyB0aGUgZW5kIApvZiBhbGwgdGhpbmdzLCBhcyBpcyBvZnRlbiBpZ25vcmFudGx5IHN1cHBvc2VkLCBpdCBpcyBzaW1wbHkgdGhlIHBhc3NhZ2UgZnJvbSAKdGhpcyBzdGFnZSBvZiBsaWZlIHRvIGFub3RoZXIgd2hpY2ggaXMgZnJlZXIgYW5kIHBsZWFzYW50ZXIgdGhhbiB0aGUgcGh5c2ljYWwsIAphbmQgdGhhdCBjb25zZXF1ZW50bHkgaXQgaXMgdG8gYmUgZGVzaXJlZCByYXRoZXIgdGhhbiB0byBiZSBmZWFyZWQuIEhlIHNlZXMgYXQgCm9uY2UgaG93IHV0dGVybHkgYSBkZWx1c2lvbiBpcyB0aGUgdGhlb3J5IHRoYXQgdGhvc2Ugd2hvIGNhc3QgYXNpZGUgdGhlaXIgCnBoeXNpY2FsIGJvZGllcyBhcmUgbG9zdCB0byB1cywgZm9yIGhlIGtub3dzIHRoYXQgdGhleSByZW1haW4gbmVhciB1cyBqdXN0IGFzIApiZWZvcmUsIGFuZCB0aGF0IGFsbCB0aGF0IHdlIGhhdmUgbG9zdCBpcyB0aGUgcG93ZXIgdG8gc2VlIHRoZW0uIFRvIHRoZSAKY29uc2Npb3VzbmVzcyBvZiB0aGUgbWFuIHdobyBwb3NzZXNzZXMgZXZlbiBhc3RyYWwgc2lnaHQsIHRoZSBzby1jYWxsZWQgZGVhZCBhcmUgCmp1c3QgYXMgZGVmaW5pdGVseSBwcmVzZW50IGFzIHRoZSBzby1jYWxsZWQgbGl2aW5nLCBhbmQgc2luY2UgaGUgc2VlcyBob3cgCnJlYWRpbHkgdGhleSBhcmUgYWZmZWN0ZWQgYnkgdGhlIHZpYnJhdGlvbnMgd2hpY2ggd2Ugc2VuZCBvdXQgdG8gdGhlbSwgaGUgCnVuZGVyc3RhbmRzIGhvdyBoYXJtZnVsIGlzIHRoZSBhdHRpdHVkZSBvZiBtb3VybmluZyBhbmQgZ3JpZWYgc28gb2Z0ZW4gCnVuZm9ydHVuYXRlbHkgYWRvcHRlZCBieSB0aGUgZnJpZW5kcyB3aG8gc3RpbGwgcmV0YWluIHRoZWlyIHBoeXNpY2FsIGJvZGllcy4gCgoKNjA0LsKgwqDCoMKgwqDCoMKgCkEga25vd2xlZGdlIG9mIHRoZSBoaWRkZW4gc2lkZSBvZiBsaWZlIGJ5IG5vIG1lYW5zIHRlYWNoZXMgdXMgdG8gZm9yZ2V0IApvdXIgZGVhZCwgYnV0IGl0IG1ha2VzIHVzIGV4Y2VlZGluZ2x5IGNhcmVmdWwgYXMgdG8gaG93IHdlIHRoaW5rIG9mIHRoZW07IGl0IAp3YXJucyB1cyB0aGF0IHdlIG11c3QgYWRvcHQgYSByZXNvbHV0ZWx5IHVuc2VsZmlzaCBhdHRpdHVkZSwgdGhhdCB3ZSBtdXN0IGZvcmdldCAKYWxsIGFib3V0IG91cnNlbHZlcywgYW5kIHRoZSBwYWluIG9mIHRoZSBhcHBhcmVudCBzZXBhcmF0aW9uLCBhbmQgdGhpbmsgb2YgdGhlbSAKbmVpdGhlciB3aXRoIGdyaWVmIG5vciB3aXRoIGxvbmdpbmcsIGJ1dCBhbHdheXMgd2l0aCBzdHJvbmcgYWZmZWN0aW9uYXRlIHdpc2hlcyAKZm9yIHRoZWlyIGhhcHBpbmVzcyBhbmQgdGhlaXIgcHJvZ3Jlc3MuIAoKCjYwNS7CoMKgwqDCoMKgwqDCoApUaGUgY2xhaXJ2b3lhbnQgc2VlcyBleGFjdGx5IGluIHdoYXQgbWFubmVyIHN1Y2ggd2lzaGVzIGFmZmVjdCB0aGVtLCBhbmQgCmF0IG9uY2UgcGVyY2VpdmVzIHRoZSB0cnV0aCB3aGljaCB1bmRlcmxpZXMgdGhlIHRlYWNoaW5nIG9mIHRoZSBDYXRob2xpYyBDaHVyY2ggCndpdGggcmVnYXJkIHRvIHRoZSBhZHZpc2FiaWxpdHkgb2YgcHJheWVycyBmb3IgdGhlIGRlYWQuIEJ5IHRoZXNlIGJvdGggdGhlIApsaXZpbmcgYW5kIHRoZSBkZWFkIGFyZSBoZWxwZWQ7IGZvciB0aGUgZm9ybWVyLCBpbnN0ZWFkIG9mIGJlaW5nIHRocm93biBiYWNrIAp1cG9uIGhpcyBncmllZiB3aXRoIGEgaG9wZWxlc3MgZmVlbGluZyB0aGF0IG5vdyBoZSBjYW4gZG8gbm90aGluZywgc2luY2UgdGhlcmUgCmlzIGEgZ3JlYXQgZ3VsZiBiZXR3ZWVuIGhpbXNlbGYgYW5kIGhpcyBsb3ZlZCBvbmUsIGlzIGVuY291cmFnZWQgdG8gdHVybiBoaXMgCmFmZmVjdGlvbmF0ZSB0aG91Z2h0IGludG8gZGVmaW5pdGUgYWN0aW9uIHdoaWNoIHByb21vdGVzIHRoZSBoYXBwaW5lc3MgYW5kIAphZHZhbmNlbWVudCBvZiBoaW0gd2hvIGhhcyBwYXNzZWQgZnJvbSBoaXMgc2lnaHQgaW4gdGhlIHBoeXNpY2FsIHdvcmxkLiBPZiBhbGwgCnRoaXMgYW5kIG11Y2ggbW9yZSBJIGhhdmUgd3JpdHRlbiBmdWxseSBpbiB0aGUgYm9vayBjYWxsZWQgVGhlIE90aGVyIFNpZGUgT2YgCkRlYXRoLCBzbyBoZXJlIEkgd2lsbCBvbmx5IHRodXMgZmFyIHRvdWNoIHVwb24gdGhlIHN1YmplY3QsIGFuZCByZWZlciB0byAKdGhhdCB2b2x1bWUgYW55IHdobyB3aXNoIGZvciBtb3JlIGRldGFpbGVkIGluZm9ybWF0aW9uLiAKCgo2MDYuwqDCoMKgwqDCoMKgwqAKQSBTVVJHSUNBTCBPUEVSQVRJT04gCgoKNjA3LsKgwqDCoMKgwqDCoMKgCkluIHRoZXNlIGRheXMgb2YgdGhlIHRyaXVtcGggb2Ygc3VyZ2VyeSBpdCBub3QgaW5mcmVxdWVudGx5IGhhcHBlbnMgdGhhdCAKYSBtYW4gaGFzIHRvIHN1Ym1pdCBoaW1zZWxmIHRvIGFuIG9wZXJhdGlvbi4gVGhlcmUgaXMgbGVzcyBvZiBhIGhpZGRlbiBzaWRlIHRvIAp0aGlzIHRoYW4gdG8gbWFueSBvdGhlciBldmVudHMsIGJlY2F1c2UgdGhlIHVzZSBvZiBhbmFlc3RoZXRpY3MgZHJpdmVzIHRoZSBtYW4gCmF3YXkgZnJvbSBoaXMgcGh5c2ljYWwgYm9keSBhbHRvZ2V0aGVyLiBCdXQgaW4gdGhhdCB2ZXJ5IGFic2VuY2UgbXVjaCB0aGF0IGlzIG9mIAppbnRlcmVzdCB0byBoaW0gdGFrZXMgcGxhY2UsIGFuZCBpdCBpcyB3ZWxsIHRvIGVuZGVhdm91ciB0byBub3RlIGFuZCByZW1lbWJlciBhcyAKZmFyIGFzIG1heSBiZSB3aGF0IG9jY3Vycy4gVGhpcyBpcyBhIGRpZmZpY3VsdCB0aGluZyB0byBkbzsgbW9yZSBkaWZmaWN1bHQgdGhhbiAKdGhlIGJyaW5naW5nIHRocm91Z2ggb2YgdGhlIG1lbW9yeSBmcm9tIHRoZSBhc3RyYWwgd29ybGQsIGJlY2F1c2Ugd2hhdCBpcyBkcml2ZW4gCm91dCBieSB0aGUgYW5hZXN0aGV0aWMgaXMgdGhlIGV0aGVyaWMgcGFydCBvZiB0aGUgcGh5c2ljYWwgbWFuLCBhbmQgYXMgdGhlIApldGhlcmljIGRvdWJsZSBpcyBvbmx5IGEgcG9ydGlvbiBvZiB0aGUgcGh5c2ljYWwgYm9keSwgYW5kIGluIG5vIHNlbnNlIGEgcGVyZmVjdCAKdmVoaWNsZSBpbiBpdHNlbGYsIGEgbWFuIGNhbm5vdCB1c3VhbGx5IGJyaW5nIHRocm91Z2ggYSBjbGVhciBtZW1vcnkuIAoKCjYwOC7CoMKgwqDCoMKgwqDCoApJIHJlbWVtYmVyIGEgY2FzZSBvZiB0aGlzIG5hdHVyZSB3aGljaCBJIHdhcyBhc2tlZCBieSB0aGUgdmljdGltIHRvIAphdHRlbmQuIEhlIHdhcyBtdWNoIGludGVyZXN0ZWQgaW4gdGhlIG9jY3VsdCBzaWRlIG9mIHRoZSBhZmZhaXIsIGFuZCBhbnhpb3VzIHRvIApyZW1lbWJlciBhbGwgdGhhdCBoZSBjb3VsZC4gSGUgd2FzIHBsYWNlZCB1cG9uIHRoZSBvcGVyYXRpbmcgdGFibGUsIGFuZCB0aGUgCmFuYWVzdGhldGljIHdhcyBhZG1pbmlzdGVyZWQuIEFsbW9zdCBpbW1lZGlhdGVseSB0aGUgbWFuIHNwcmFuZyBvdXQgaW4gaGlzIAphc3RyYWwgYm9keSwgcmVjb2duaXNlZCBtZSwgYW5kIHN0YXJ0ZWQgZG93biB0aGUgcm9vbSB0b3dhcmRzIG1lIHdpdGggYW4gCmV4cHJlc3Npb24gb2Ygdml2aWQgZGVsaWdodCB1cG9uIGhpcyBmYWNlLCBldmlkZW50bHkgb3ZlcmpveWVkIGF0IGZpbmRpbmcgCmhpbXNlbGYgZnVsbHkgY29uc2Npb3VzIGluIHRoZSBhc3RyYWwgd29ybGQuIEJ1dCBpbiBhIG1vbWVudCBjYW1lIHBvdXJpbmcgZm9ydGggCmZyb20gdGhlIHBoeXNpY2FsIGJvZHkgYSBncmVhdCBjbG91ZCBvZiBldGhlcmljIG1hdHRlciB3aGljaCB3YXMgZm9yY2VkIG91dCBieSAKdGhlIGFuYWVzdGhldGljLiBUaGlzIGNsb3VkIGltbWVkaWF0ZWx5IHdyYXBwZWQgaXRzZWxmIHJvdW5kIGhpbSwgYW5kIEkgY291bGQgCnNlZSB0aGUgaW50ZWxsaWdlbmNlIGZhZGUgb3V0IG9mIGhpcyBmYWNlIHVudGlsIGl0IGJlY2FtZSBhIG1lcmUgbWFzay4gCgoKNjA5LsKgwqDCoMKgwqDCoMKgCldoZW4gSSB3YXMgcGVybWl0dGVkIHRvIHNlZSBoaW0gYWdhaW4gdHdvIGRheXMgYWZ0ZXJ3YXJkcywgaGlzIG1lbW9yeSBvZiAKd2hhdCBoYWQgaGFwcGVuZWQgdGFsbGllZCBleGFjdGx5IHdpdGggdGhhdCBJIGhhZCBzZWVuLiBIZSByZW1lbWJlcmVkIHRoZSBydXNoIApvdXQgb2YgaGlzIGJvZHk7IGhlIHJlY29sbGVjdGVkIGNsZWFybHkgc2VlaW5nIG1lIGF0IHRoZSBvdGhlciBlbmQgb2YgdGhlIHJvb20sIAphbmQgZmVlbGluZyBncmVhdGx5IGRlbGlnaHRlZCB0aGF0IGV2ZXJ5dGhpbmcgc2VlbWVkIHNvIHJlYWwuIFRoZW4gaGUgc3RhcnRlZCAKZG93biB0aGUgcm9vbSB0b3dhcmRzIG1lLCBidXQgc29tZWhvdyBoZSBuZXZlciBhcnJpdmVkLCBhbmQga25ldyBub3RoaW5nIG1vcmUgCnVudGlsIGhlIGNhbWUgYmFjayBpbnRvIHRoZSBib2R5IGFuIGhvdXIgbGF0ZXIgd2hlbiB0aGUgd2hvbGUgb3BlcmF0aW9uIHdhcyAKb3Zlci4gSSBmZWx0IG9uIHRoYXQgb2NjYXNpb24gd2hhdCBhbiBhZHZhbnRhZ2UgdGhlIHBvc3Nlc3Npb24gb2YgY2xhaXJ2b3lhbmNlIAp3b3VsZCBoYXZlIGJlZW4gdG8gdGhlIHR3byBkb2N0b3JzIGVuZ2FnZWQuIFRoZXkgZ2F2ZSB0aGUgcGF0aWVudCB0b28gbXVjaCBvZiAKdGhlIGFuYWVzdGhldGljLCBhbmQgY2FtZSB3aXRoaW4gYW4gYWNlIG9mIGZpbmFsbHkgZHJpdmluZyBvdXQgdGhlIHdob2xlIG9mIGhpcyAKZXRoZXJpYyBkb3VibGUsIGluc3RlYWQgb2Ygb25seSBwYXJ0IG9mIGl0IGFzIHRoZXkgaW50ZW5kZWQuIEFzIG15IGNsYWlydm95YW50IApjb21wYW5pb24gZm9yY2libHkgcmVtYXJrZWQsIHRoZXkgbGVmdCBoYXJkbHkgZW5vdWdoIG9mIGl0IHRvIGNvdmVyIApoYWxmLWEtY3Jvd24sIGFuZCB0aGUgY29uc2VxdWVuY2Ugd2FzIHRoYXQgdGhlIHBhdGllbnQgY2FtZSBwZXJpbG91c2x5IG5lYXIgdG8gCmRlYXRoLCBhbmQgdGhleSBoYWQgdG8gcHVtcCBveHlnZW4gaW50byBoaXMgbHVuZ3MgZm9yIHRlbiBtaW51dGVzIGluIG9yZGVyIHRvIApicmluZyBoaW0gYmFjayB0byBsaWZlIGF0IGFsbC4gCgoKNjEwLsKgwqDCoMKgwqDCoMKgCkEgZmV3IHllYXJzIGFnbyBhIHZpc2l0IHRvIHRoZSBkZW50aXN0IGZyZXF1ZW50bHkgbWVhbnQgYSBtaW5vciAKb3BlcmF0aW9uLCBpbiB3aGljaCB0aGUgcGF0aWVudCBwYXNzZWQgdGhyb3VnaCBhIHNvbWV3aGF0IHNpbWlsYXIgYnV0IG11Y2ggCnNob3J0ZXIgZXhwZXJpZW5jZSwgb3dpbmcgdG8gdGhlIGFkbWluaXN0cmF0aW9uIG9mIG5pdHJvdXMgb3hpZGUsIGFuZCBtYW55IApjdXJpb3VzIHBoZW5vbWVuYSBoYXZlIHNob3duIHRoZW1zZWx2ZXMgaW4gY29ubmVjdGlvbiB3aXRoIHRoYXQuIEFuIGV4YW1wbGUgaW4gCnBvaW50IHdpbGwgYmUgZm91bmQgaW4gbXkgYm9vayBvbiBEcmVhbXMgKHBhZ2UgMzgpLiBJbiB0aGVzZSBkYXlzIG9mIApsb2NhbCBhbmFlc3RoZXRpY3MgdGhlIGRlbnRpc3QgaXMgdXN1YWxseSBhYmxlIHRvIGRvIGhpcyB3b3JrIHdpdGhvdXQgdGhlIAphZG1pbmlzdHJhdGlvbiBvZiBnYXMsIGFuZCBjb25zZXF1ZW50bHkgdGhlIGV4cGVyaWVuY2VzIGNvbm5lY3RlZCB3aXRoIGhpcyAKb3BlcmF0aW9uIGFyZSBvZiBhIGxlc3Mgb2NjdWx0IG5hdHVyZS4gCgoKNjExLsKgwqDCoMKgwqDCoMKgCkEgTEVDVFVSRSAKCgo2MTIuwqDCoMKgwqDCoMKgwqAKV2UgaGF2ZSBpbiBhIHByZXZpb3VzIGNoYXB0ZXIgY29uc2lkZXJlZCB0aGUgY29uc2VxdWVuY2VzIHdoaWNoIGF0dGVuZCAKdXBvbiB0aGUgYWN0aW9uIG9mIGdvaW5nIHRvIGNodXJjaDsgbGV0IHVzIG5vdyBjb25zaWRlciB0aGUgaW5uZXIgc2lkZSBvZiAKYXR0ZW5kaW5nIGEgbGVjdHVyZSwgYSBwb2xpdGljYWwgbWVldGluZywgYSBzcGlyaXR1YWxpc3RpYyBz77+9YW5jZSwgb3IgYSAKcmVsaWdpb3VzIHJldml2YWwuIAoKCjYxMy7CoMKgwqDCoMKgwqDCoApPZiB0aGVzZSBmb3JtcyBvZiBleGNpdGVtZW50IHRoZSBsZWN0dXJlIGlzIHVzdWFsbHkgdGhlIG1pbGRlc3QsIHRob3VnaCAKZXZlbiB0aGF0IHRvIHNvbWUgZXh0ZW50IGRlcGVuZHMgdXBvbiBpdHMgc3ViamVjdC4gVGhlcmUgaXMgZ2VuZXJhbGx5IG11Y2ggbGVzcyAKdW5pZm9ybWl0eSBhYm91dCB0aGUgYXVkaWVuY2UgYXQgYSBsZWN0dXJlIHRoYW4gYWJvdXQgYSBjb25ncmVnYXRpb24gaW4gYSAKY2h1cmNoLiBUaGVyZSBhcmUgb2Z0ZW4gbWFueSBhbmQgcmF0aGVyIGRlY2lzaXZlIHBvaW50cyBvZiBsaWtlbmVzcyBiZXR3ZWVuIAp0aG9zZSB3aG8gYWRvcHQgdGhlIHNhbWUgcmVsaWdpb3VzIGJlbGllZiwgd2hlcmVhcyB0aGUgcGVvcGxlIHdobyBhcmUgaW50ZXJlc3RlZCAKaW4gYSBsZWN0dXJlIHVwb24gc29tZSBwYXJ0aWN1bGFyIHN1YmplY3QgbWF5IGNvbWUgZnJvbSBtYW55IGRpZmZlcmVudCBmb2xkcywgCmFuZCBiZSBvZiBhbGwgc29ydHMgb2YgcXVpdGUgZGlmZmVyZW50IHR5cGVzLiBTdGlsbCwgZm9yIHRoZSB0aW1lIGJlaW5nIHRoZXJlIGlzIAphIGxpbmsgYmV0d2VlbiB0aGVtLCB0aGUgbGluayBvZiBpbnRlcmVzdCBpbiBhIHBhcnRpY3VsYXIgc3ViamVjdDogYW5kIAp0aGVyZWZvcmUsIGhvd2V2ZXIgZGlmZmVyZW50IHRoZWlyIG1pbmRzIG1heSBiZSwgdGhlIHNhbWUgcG9ydGlvbiBvZiB0aGUgbWluZCBpcyAKZm9yIHRoZSBtb21lbnQgYmVpbmcgYnJvdWdodCBpbnRvIGFjdGl2aXR5IGluIGFsbCBvZiB0aGVtLCBhbmQgdGhhdCBjcmVhdGVzIGEgCmNlcnRhaW4gc3VwZXJmaWNpYWwgaGFybW9ueS4gCgoKNjE0LsKgwqDCoMKgwqDCoMKgClNpbmNlIHRoZSBUaGVvc29waGljYWwgc3R1ZGVudCBmcmVxdWVudGx5IGhhcyB0byBkZWxpdmVyIGxlY3R1cmVzIGFzIHdlbGwgCmFzIHRvIGVuZHVyZSB0aGVtLCBpdCBpcyBwZXJoYXBzIHdlbGwgbm90IGVudGlyZWx5IHRvIG5lZ2xlY3QgdGhhdCBzaWRlIG9mIHRoZSAKc3ViamVjdCwgYnV0IHRvIG5vdGUgdGhhdCwgaWYgdGhlIGxlY3R1cmVyIHdpc2hlcyB0byBhY3QgZWZmZWN0aXZlbHkgdXBvbiB0aGUgCm1pbmQtYm9kaWVzIG9mIGhpcyBhdWRpZW5jZSwgaGUgbXVzdCBmaXJzdCBvZiBhbGwgaGF2ZSBhIGNsZWFybHkgZGVmaW5lZCBpZGVhIApleHByZXNzaW5nIGl0c2VsZiB0aHJvdWdoIGhpcyBvd24gbWluZC1ib2R5LiBBcyBoZSB0aGlua3MgZWFybmVzdGx5IG9mIHRoZSAKZGlmZmVyZW50IHBhcnRzIG9mIGhpcyBzdWJqZWN0IGFuZCB0cmllcyB0byBwdXQgdGhlbSBiZWZvcmUgaGlzIHBlb3BsZSwgaGUgaXMgCm1ha2luZyBhIHNlcmllcyBvZiB0aG91Z2h0LWZvcm1zLS0gdW51c3VhbGx5IHN0cm9uZyB0aG91Z2h0LWZvcm1zIGJlY2F1c2Ugb2YgdGhlIAplZmZvcnQuIAoKCjYxNS7CoMKgwqDCoMKgwqDCoApIZSBoYXMgYSBmaW5lIG9wcG9ydHVuaXR5LCBiZWNhdXNlIGhpcyBhdWRpZW5jZSBpcyBuZWNlc3NhcmlseSB0byBhIGdyZWF0IApleHRlbnQgaW4gYSByZWNlcHRpdmUgY29uZGl0aW9uLiBUaGV5IGhhdmUgdGFrZW4gdGhlIHRyb3VibGUgdG8gY29tZSBpbiBvcmRlciB0byAKaGVhciBhYm91dCB0aGlzIHBhcnRpY3VsYXIgc3ViamVjdCwgYW5kIHRoZXJlZm9yZSB3ZSBtdXN0IHN1cHBvc2UgdGhhdCB0aGV5IGFyZSAKaW4gYSBjb25kaXRpb24gb2YgcmVhZGluZXNzIHRvIGhlYXIuIElmIHVuZGVyIHRoZXNlIGZhdm91cmFibGUgY29uZGl0aW9ucyBoZSAKZmFpbHMgdG8gbWFrZSB0aGVtIHVuZGVyc3RhbmQgaGltLCBpdCBtdXN0IGJlIGJlY2F1c2UgaGlzIG93biB0aG91Z2h0IHVwb24gdGhlIApzdWJqZWN0IGlzIG5vdCBzdWZmaWNpZW50bHkgY2xlYXJjdXQuIEEgY2x1bXN5IGFuZCBpbmRlZmluaXRlIHRob3VnaHQtZm9ybSBtYWtlcyAKYnV0IGEgc2xpZ2h0IGltcHJlc3Npb24sIGFuZCBldmVuIHRoYXQgd2l0aCBtdWNoIGRpZmZpY3VsdHkuIEEgY2xlYXJseS1jdXQgb25lIApmb3JjZXMgdGhlIG1lbnRhbCBib2RpZXMgaW4gdGhlIGF1ZGllbmNlIHRvIHRyeSB0byByZXByb2R1Y2UgaXQuIFRoZWlyIApyZWZsZWN0aW9ucyBvZiBpdCB3aWxsIGFsbW9zdCBpbnZhcmlhYmx5IGJlIGxlc3MgZGVmaW5pdGUgYW5kIGxlc3Mgc2F0aXNmYWN0b3J5IAp0aGFuIGl0IGlzLCBidXQgc3RpbGwsIGlmIGl0cyBlZGdlcyBhcmUgc2hhcnAgZW5vdWdoLCB0aGV5IHdpbGwgY29udmV5IHRoZSBpZGVhIAp0byBzb21lIGV4dGVudDsgYnV0IGlmIHRoYXQgZnJvbSB3aGljaCB0aGV5IGhhdmUgdG8gY29weSBpcyBpdHNlbGYgYmx1cnJlZCwgaXQgCmlzIGVtaW5lbnRseSBwcm9iYWJsZSB0aGF0IHRoZSByZXByb2R1Y3Rpb25zIHdpbGwgcHJvdmUgZW50aXJlbHkgdW5yZWNvZ25pc2FibGUuCgoKNjE2LsKgwqDCoMKgwqDCoMKgClNvbWV0aW1lcyB0aGUgbGVjdHVyZXIgcmVjZWl2ZXMgdW5leHBlY3RlZCBhc3Npc3RhbmNlLiBUaGUgZmFjdCB0aGF0IGhlIAppcyBlbmdhZ2VkIGluIHRoaW5raW5nIHN0cm9uZ2x5IG9mIG9uZSBwYXJ0aWN1bGFyIHN1YmplY3QgYXR0cmFjdHMgdGhlIGF0dGVudGlvbiAKb2YgZGlzZW1ib2RpZWQgZW50aXRpZXMgd2hvIGhhcHBlbiB0byBiZSBpbnRlcmVzdGVkIGluIHRoYXQgc3ViamVjdCwgYW5kIHRoZSAKYXVkaWVuY2Ugb2Z0ZW4gaW5jbHVkZXMgYSBncmVhdGVyIG51bWJlciBvZiBwZW9wbGUgaW4gYXN0cmFsIHRoYW4gaW4gcGh5c2ljYWwgCmJvZGllcy4gTWFueSBvZiB0aGVzZSBjb21lIHNpbXBseSB0byBoZWFyLCBhcyBkbyB0aGVpciBicm90aGVycyBpbiB0aGUgcGh5c2ljYWwgCndvcmxkLCBidXQgc29tZXRpbWVzIGl0IGhhcHBlbnMgdGhhdCBvbmUgb2YgdGhvc2Ugd2hvIGFyZSBhdHRyYWN0ZWQga25vd3MgbW9yZSAKYWJvdXQgdGhlIHN1YmplY3QgdGhhbiB0aGUgbGVjdHVyZXIuIEluIHRoYXQgY2FzZSBoZSBzb21ldGltZXMgYXNzaXN0cyBieSAKc3VnZ2VzdGlvbnMgb3IgaWxsdXN0cmF0aW9ucy4gVGhlc2UgbWF5IGNvbWUgdG8gdGhlIGxlY3R1cmVyIGluIHZhcmlvdXMgd2F5cy4gSWYgCmhlIGlzIGNsYWlydm95YW50IGhlIG1heSBzZWUgaGlzIGFzc2lzdGFudCwgYW5kIHRoZSBuZXcgaWRlYXMgb3IgaWxsdXN0cmF0aW9ucyAKd2lsbCBiZSBtYXRlcmlhbGlzZWQgaW4gc3VidGxlciBtYXR0ZXIgYmVmb3JlIGhpbS4gSWYgaGUgaXMgbm90IGNsYWlydm95YW50LCBpdCAKd2lsbCBwcm9iYWJseSBiZSBuZWNlc3NhcnkgZm9yIHRoZSBoZWxwZXIgdG8gaW1wcmVzcyB0aGUgaWRlYXMgdXBvbiBoaXMgYnJhaW4sIAphbmQgaW4gc3VjaCBhIGNhc2UgaGUgbWF5IHdlbGwgc3VwcG9zZSB0aGVtIHRvIGJlIGhpcyBvd24uIFNvbWV0aW1lcyB0aGUgCmFzc2lzdGFudCBpcyBub3QgZGlzZW1ib2RpZWQsIG9yIHJhdGhlciBvbmx5IHRlbXBvcmFyaWx5IGRpc2VtYm9kaWVkOyBmb3IgdGhpcyAKaXMgb25lIG9mIHRoZSBwaWVjZXMgb2Ygd29yayBmcmVxdWVudGx5IHRha2VuIGluIGhhbmQgYnkgdGhlIGludmlzaWJsZSBoZWxwZXJzLgoKCjYxNy7CoMKgwqDCoMKgwqDCoApJbiBzb21lIGNhc2VzIHRoZSBlZ28gb2YgdGhlIGxlY3R1cmVyIG1hbmlmZXN0cyBoaW1zZWxmIGluIHNvbWUgY3VyaW91cyAKZXh0ZXJpb3Igd2F5LiBGb3IgZXhhbXBsZSwgSSBoYXZlIGhlYXJkIHRoZSBncmVhdGVzdCBvcmF0b3Igbm93IGxpdmluZyBzYXkgdGhhdCwgCndoaWxlIHNoZSBpcyBzcGVha2luZyBvbmUgc2VudGVuY2Ugb2YgYSBsZWN0dXJlLCBzaGUgaGFiaXR1YWxseSBzZWVzIHRoZSBuZXh0IApzZW50ZW5jZSBhY3R1YWxseSBtYXRlcmlhbGlzZSBpbiB0aGUgYWlyIGJlZm9yZSBoZXIsIGluIHRocmVlIGRpZmZlcmVudCBmb3JtcywgCmZyb20gd2hpY2ggc2hlIGNvbnNjaW91c2x5IHNlbGVjdHMgdGhhdCBvbmUgd2hpY2ggc2hlIHRoaW5rcyB0aGUgYmVzdC4gVGhpcyBtdXN0IApiZSB0aGUgd29yayBvZiB0aGUgZWdvLCB0aG91Z2ggaXQgaXMgYSBsaXR0bGUgZGlmZmljdWx0IHRvIHNlZSB3aHkgaGUgdGFrZXMgdGhhdCAKbWV0aG9kIG9mIGNvbW11bmljYXRpb24sIHNpbmNlIGFmdGVyIGFsbCBpdCBpcyBoZSB3aG8gaXMgZGVsaXZlcmluZyB0aGUgbGVjdHVyZSAKdGhyb3VnaCB0aGUgcGh5c2ljYWwgb3JnYW5zLiBBdCBmaXJzdCBibHVzaCBpdCBzZWVtcyB0aGF0IGl0IHdvdWxkIGJlIGFzIGVhc3kgCmZvciBoaW0tLSBvciBwZXJoYXBzIGV2ZW4gZWFzaWVyLS0gdG8gc2VsZWN0IGEgZm9ybSBoaW1zZWxmLCBhbmQgaW1wcmVzcyBvbmx5IAp0aGF0IG9uZSB1cG9uIGxvd2VyIG1hdHRlcjsgYW5kIGV2ZW4gdGhlbiBpdCBtaWdodCBhcyB3ZWxsIGNvbWUgZGlyZWN0bHkgdG8gdGhlIApicmFpbiBhcyBiZSBtYXRlcmlhbGlzZWQgaW4gdGhlIGFpciBiZWZvcmUgaXQuIAoKCjYxOC7CoMKgwqDCoMKgwqDCoApSZXR1cm5pbmcgZnJvbSB0aGUgbGVjdHVyZXIgdG8gaGlzIGF1ZGllbmNlLCB3ZSBtYXkgbm90ZSB0aGF0IGl0IGlzIApwb3NzaWJsZSBmb3IgaGlzIGhlYXJlcnMgdG8gZ2l2ZSBoaW0gZ3JlYXQgYXNzaXN0YW5jZSBpbiBoaXMgd29yay4gT2xkZXIgbWVtYmVycyAKb2YgYSBicmFuY2ggaGF2ZSBzb21ldGltZXMgYmVlbiBoZWFyZCB0byBzYXkgdGhhdCB0aGV5IGRpZCBub3QgZmVlbCBpdCBuZWNlc3NhcnkgCnRvIGdvIGRvd24gdG8gdGhlIGxvZGdlIG1lZXRpbmcgb24gYSBjZXJ0YWluIG9jY2FzaW9uLCBhcyB0aGUgbGVjdHVyZSB3YXMgYWJvdXQgCmEgc3ViamVjdCB3aXRoIHdoaWNoIHRoZXkgd2VyZSBhbHJlYWR5IHRob3JvdWdobHkgYWNxdWFpbnRlZC4gQXBhcnQgZnJvbSB0aGUgCmxhcmdlIGFzc3VtcHRpb24gaW52b2x2ZWQgaW4gdGhlIHN0YXRlbWVudCB0aGF0IG9uZSBjYW4gZXZlciBiZSBmdWxseSAKYWNxdWFpbnRlZCB3aXRoIGFueSBUaGVvc29waGljYWwgdGVhY2hpbmcsIGl0IGlzIG5vdCBhY2N1cmF0ZSB0byBzYXkgdGhhdCBhIG1hbicgCnMgcHJlc2VuY2UgaXMgdXNlbGVzcyBiZWNhdXNlIGhlIGtub3dzIHRoZSBzdWJqZWN0LiBFeGFjdGx5IHRoZSBvcHBvc2l0ZSByZW1hcmsgCndvdWxkIGhhdmUgbXVjaCBtb3JlIHRydXRoIGluIGl0OyBiZWNhdXNlIGhlIGtub3dzIHRoZSBzdWJqZWN0IHRob3JvdWdobHkgaGUgCmFsc28gY2FuIG1ha2Ugc3Ryb25nIGFuZCBjbGVhciB0aG91Z2h0LWZvcm1zIG9mIHRoZSBkaWZmZXJlbnQgaWxsdXN0cmF0aW9ucyAKcmVxdWlyZWQsIGFuZCBpbiB0aGF0IHdheSBoZSBjYW4gZ3JlYXRseSBhc3Npc3QgdGhlIGxlY3R1cmVyIGluIGltcHJlc3Npbmcgb24gCnRoZSBhdWRpZW5jZSB3aGF0IGhlIHdpc2hlcyB0byBjb252ZXkgdG8gdGhlbS4gCgoKNjE5LsKgwqDCoMKgwqDCoMKgClRoZSBncmVhdGVyIHRoZSBudW1iZXIgb2YgcGVvcGxlIHByZXNlbnQgYXQgYSBsZWN0dXJlIHdobyB0aG9yb3VnaGx5IAp1bmRlcnN0YW5kIGl0cyBzdWJqZWN0LCB0aGUgZWFzaWVyIHdpbGwgaXQgYmUgZm9yIGFsbCB0aG9zZSB0byB3aG9tIGl0IGlzIG5ldyB0byAKb2J0YWluIGEgY2xlYXIgY29uY2VwdGlvbiBvZiBpdC4gVGhlIGxlY3R1cmVyLCB0aGVyZWZvcmUsIGlzIGRpc3RpbmN0bHkgaGVscGVkIApieSB0aGUgcHJlc2VuY2Ugb2YgdGhvc2Ugd2hvIGNhbiBmdWxseSBjb21wcmVoZW5kIGhpbS4gSGUgYWxzbyBtYXkgYmUgbXVjaCAKaGVscGVkIG9yIGhpbmRlcmVkIGJ5IHRoZSBnZW5lcmFsIGF0dGl0dWRlIG9mIGhpcyBhdWRpZW5jZS4gSW4gdGhlIG1haW4gdGhhdCBpcyAKdXN1YWxseSBmcmllbmRseSwgc2luY2UgdGhlIG1ham9yaXR5IG9mIHBlb3BsZSB3aG8gY29tZSB0byBhIGxlY3R1cmUgY29tZSAKYmVjYXVzZSB0aGV5IGFyZSBpbnRlcmVzdGVkIGluIHRoZSBzdWJqZWN0IGFuZCB3aXNoIHRvIGxlYXJuIHNvbWV0aGluZyBhYm91dCBpdC4gClNvbWV0aW1lcywgaG93ZXZlciwgb25lIG9yIHR3byBhcHBlYXIgd2hvc2UgbWFpbiBkZXNpcmUgaXMgdG8gY3JpdGljaXNlLCBhbmQgCnRoZWlyIHByZXNlbmNlIGlzIGFueXRoaW5nIGJ1dCBoZWxwZnVsLiAKCgo2MjAuwqDCoMKgwqDCoMKgwqAKQSBQT0xJVElDQUwgTUVFVElORyAKCgo2MjEuwqDCoMKgwqDCoMKgwqAKVGhpcyBsYXR0ZXIgZWZmZWN0IGlzIG11Y2ggbW9yZSBpbiBldmlkZW5jZSBhdCBhIHBvbGl0aWNhbCBtZWV0aW5nLCBmb3IgCnRoZXJlIGl0IHNlZW1zIHRvIGJlIHRoZSBydWxlIHRoYXQsIHdoaWxlIHNvbWUgcGVvcGxlIGdvIGZvciB0aGUgcHVycG9zZSBvZiAKc3VwcG9ydGluZyB0aGUgc3BlYWtlciwgb3RoZXJzIGdvIG1lcmVseSBmb3IgdGhlIHB1cnBvc2Ugb2YgY2hhbGxlbmdpbmcgYW5kIAppbnRlcnJ1cHRpbmcgaGltLiBDb25zZXF1ZW50bHkgdGhlIGZlZWxpbmdzIHRvIGJlIGV4cGVyaWVuY2VkLCBhbmQgdGhlIAp0aG91Z2h0LWZvcm1zIHRvIGJlIHNlZW4sIGF0IHBvbGl0aWNhbCBtZWV0aW5ncyBhcmUgbm90IGVhc3kgdG8gcHJlZGljdCAKYmVmb3JlaGFuZC4gQnV0IG9uZSBvZnRlbiBzZWVzIGNhc2VzIGluIHdoaWNoIGZvcm1zIGNvbXBvc2VkIGVudGlyZWx5IG9yIApwcmluY2lwYWxseSBvZiB0aGUgdGhvdWdodHMgb2YgdGhlIGFkaGVyZW50cyBvZiBvbmUgcGFydHkgbWFrZSBodWdlIHdhdmVzIG9mIAplbnRodXNpYXNtLCB3aGljaCBydXNoIG92ZXIgdGhlIGF1ZGllbmNlLCBzdXJyb3VuZCB0aGUgc3BlYWtlciBhbmQgd29yayBoaW0gdXAgCmludG8gYSBjb3JyZXNwb25kaW5nIGNvbmRpdGlvbiBvZiBlbnRodXNpYXNtLiAKCgo2MjIuwqDCoMKgwqDCoMKgwqAKTWFueSB5ZWFycyBhZ28gSSByZW1lbWJlciBhdHRlbmRpbmcgYSBtZWV0aW5nIG9mIHRoaXMgZGVzY3JpcHRpb24sIGFuZCAKYmVpbmcgbXVjaCBzdHJ1Y2sgYnkgdGhlIGVmZmVjdCBwcm9kdWNlZCBieSBnZXR0aW5nIGFsbCB0aGUgcGVvcGxlIHRvIGpvaW4gCnRvZ2V0aGVyIGluIHNpbmdpbmcuIFNvbWUgZ3JlYXQgZ3VuIG9mIHRoZSBwYXJ0eSB3YXMgdG8gc3BlYWssIGFuZCBjb25zZXF1ZW50bHkgCnRoZSBodWdlIGhhbGwgd2FzIGNyb3dkZWQgdG8gc3VmZm9jYXRpb24gYSBjb3VwbGUgb2YgaG91cnMgYmVmb3JlIHRoZSBhZHZlcnRpc2VkIAp0aW1lOyBidXQgdGhlIG9yZ2FuaXNlcnMgb2YgdGhlIG1lZXRpbmcgd2VyZSB3aXNlIGluIHRoZWlyIGdlbmVyYXRpb24sIGFuZCB0aGV5IAplbXBsb3llZCB0aGF0IHRpbWUgbW9zdCBlZmZpY2llbnRseSBieSB3b3JraW5nIHVwIHRoYXQgdmFzdCBoZXRlcm9nZW5lb3VzIGNyb3dkIAppbnRvIGEgY29uZGl0aW9uIG9mIGxveWFsIGVudGh1c2lhc20uIEFsbCBzb3J0cyBvZiBwYXRyaW90aWMgc29uZ3MgZm9sbG93ZWQgb25lIAphbm90aGVyIGluIHF1aWNrIHN1Y2Nlc3Npb24sIGFuZCB0aG91Z2ggZmV3IHJlYWxseSBrbmV3IHRoZSB0dW5lcywgYW5kIHN0aWxsIApmZXdlciB0aGUgd29yZHMsIHRoZXJlIHdhcyBhdCBsZWFzdCBubyBsYWNrIG9mIGVudGh1c2lhc3RpYyBnb29kIGZlZWxpbmcuIFRoZSAKdHdvIGhvdXJzIG9mIHdhaXRpbmcgcGFzc2VkIGxpa2UgYW4gZW50ZXJ0YWlubWVudCwgYW5kIEkgdGhpbmsgbW9zdCBwZW9wbGUgd2VyZSAKc3VycHJpc2VkIHRvIGZpbmQgaG93IHF1aWNrbHkgdGltZSBoYWQgZmxlZC4gCgoKNjIzLsKgwqDCoMKgwqDCoMKgClRoZSBvY2N1bHQgc2lkZSBvZiB0aGUgYXZlcmFnZSBwb2xpdGljYWwgbWVldGluZywgaG93ZXZlciwgaXMgZmFyIGZyb20gCmF0dHJhY3RpdmUsIGZvciBmcm9tIHRoZSBhc3RyYWwgd29ybGQgaXQgbm90IHVuZnJlcXVlbnRseSBiZWFycyBhIHN0cm9uZyBnZW5lcmFsIApyZXNlbWJsYW5jZSB0byBhbiBleGNlZWRpbmdseSB2aW9sZW50IHRodW5kZXJzdG9ybS4gVGhlcmUgaXMgb2Z0ZW4gbXVjaCB3YXJyaW5nIApmZWVsaW5nLCBhbmQgZXZlbiBhIGdvb2QgZGVhbCBvZiBwZXJzb25hbCBlbm1pdHkuIE9uIHRoZSB3aG9sZSB3ZSBoYXZlIHVzdWFsbHkgYSAKcHJlcG9uZGVyYW5jZSBvZiBhIHNvcnQgb2Ygcm91Z2ggYW5kIHBlcmhhcHMgcmF0aGVyIGNvYXJzZSwgZ29vZC1odW1vdXJlZCAKam9sbGl0eSwgb2Z0ZW4gcGllcmNlZCwgaG93ZXZlciwgYnkgc3BlYXJzIG9mIGFueGlvdXMgZmVlbGluZyBmcm9tIHRoZSAKcHJvbW90ZXJzLiBVbmxlc3MgZHV0eSBhY3R1YWxseSBjYWxscyBvbmUgdG8gc3VjaCBnYXRoZXJpbmdzIGl0IGlzIGdlbmVyYWxseSAKYmV0dGVyIHRvIGF2b2lkIHRoZW0sIGZvciBvbiBzdWNoIG9jY2FzaW9ucyB0aGVyZSBpcyBhbHdheXMgYSBjbGFzaCBvZiBhc3RyYWwgCmN1cnJlbnRzIHRoYXQgY2Fubm90IGJ1dCBpbmR1Y2UgZ3JlYXQgZmF0aWd1ZSBpbiBhbnlvbmUgd2hvIGlzIGluIHRoZSBsZWFzdCAKc2Vuc2l0aXZlLiAKCgo2MjQuwqDCoMKgwqDCoMKgwqAKQ1JPV0RTIAoKCjYyNS7CoMKgwqDCoMKgwqDCoApJdCBpcyBhbHNvIGRlc2lyYWJsZSB0byBhdm9pZCBhcyBmYXIgYXMgcG9zc2libGUgdGhlIG1peGluZyBvZiBtYWduZXRpc20gCndoaWNoIGNvbWVzIGZyb20gdG9vIGNsb3NlIGNvbnRhY3Qgd2l0aCBhIHByb21pc2N1b3VzIGNyb3dkLiBOb3QgdGhhdCB3ZSBtdXN0IAphc3N1bWUgZm9yIGEgbW9tZW50IHRoYXQgdGhlIHBlcnNvbnMgY29tcG9zaW5nIHRoZSBjcm93ZCBhcmUgbmVjZXNzYXJpbHkgbG93ZXIgCm9yIHdvcnNlIHRoYW4gb3Vyc2VsdmVzLiBJdCB3b3VsZCBiZSBtb3N0IHVuZGVzaXJhYmxlIHRoYXQgdGhlIHN0dWRlbnQgc2hvdWxkIApiZWNvbWUgc2VsZi1jb25zY2lvdXMsIHNlbGYtY29uY2VpdGVkIG9yIHNlbGYtcmlnaHRlb3VzLiBJdCBpcyBwcm9iYWJseSB0cnVlIAp0aGF0IHRoZSBhaW1zIGFuZCBvYmplY3RzIG9mIHRoZSBtYWpvcml0eSBvZiBwZW9wbGUgaW4gYW55IGNyb3dkLCB0YWtlbiBhdCAKcmFuZG9tLCBhcmUgb2YgbW9yZSB3b3JsZGx5IHR5cGUgdGhhbiB0aG9zZSBvZiB0aGUgVGhlb3NvcGhpY2FsIHN0dWRlbnQ7IGJ1dCBpdCAKd291bGQgYmUgYm90aCB3cm9uZyBhbmQgZm9vbGlzaCB0byBkZXNwaXNlIHRoZSBwZW9wbGUgb24gdGhhdCBhY2NvdW50LiBUaGUgcG9pbnQgCnRvIGJlYXIgaW4gbWluZCBpcywgbm90IHRoYXQgd2UgYXJlIGJldHRlciB0aGFuIHRoZXksIGJ1dCB0aGF0IHRoZXJlIGlzIGEgCmRpZmZlcmVuY2UgaW4gdGhlIHJhdGVzIG9mIHZpYnJhdGlvbiwgYW5kIHRoYXQgY29uc2VxdWVudGx5IHRvIGJlIGluIGNvbnN0YW50IApjb250YWN0IHdpdGggb3RoZXJzIGNhdXNlcyBkaXN0dXJiYW5jZSBpbiB0aGUgdmFyaW91cyB2ZWhpY2xlcywgd2hpY2ggaXQgaXMgCmJldHRlciB0byBhdm9pZC4gCgoKNjI2LsKgwqDCoMKgwqDCoMKgCk5ldmVydGhlbGVzcywgd2hlbiBkdXR5IHJlbmRlcnMgaXQgbmVjZXNzYXJ5IG9yIGRlc2lyYWJsZSB0aGF0IHRoZSAKc3R1ZGVudCBzaG91bGQgZW50ZXIgYSBjcm93ZCwgdGhlcmUgYXJlIGF0IGhpcyBkaXNwb3NhbCB2YXJpb3VzIG1lYW5zIGJ5IHdoaWNoIApoZSBjYW4gcHJvdGVjdCBoaW1zZWxmLiBUaGUgbW9zdCB1c3VhbCBpcyB0aGUgbWFraW5nIG9mIGEgc2hlbGwsIGVpdGhlciBldGhlcmljLCAKYXN0cmFsIG9yIG1lbnRhbDsgYnV0IHRoZSBiZXN0IHByb3RlY3Rpb24gb2YgYWxsIGlzIGEgcmFkaWFudCBnb29kd2lsbCBhbmQgCnB1cml0eS4gSSBzaGFsbCBwcmVzZW50bHkgZGV2b3RlIGEgY2hhcHRlciB0byB0aGUgY29uc2lkZXJhdGlvbiBvZiB0aGlzIHF1ZXN0aW9uIApvZiBwcm90ZWN0aW9uLiAKCgo2MjcuwqDCoMKgwqDCoMKgwqAKQSBT77+9QU5DRSAKCgo2MjguwqDCoMKgwqDCoMKgwqAKT2YgYWxsIGZvcm1zIG9mIG1lZXRpbmcgb25lIG9mIHRoZSBtb3N0IGludGVyZXN0aW5nIGZyb20gdGhlIG9jY3VsdCBwb2ludCAKb2YgdmlldyBpcyB0aGUgc3Bpcml0dWFsaXN0aWMgc++/vWFuY2UsIHRob3VnaCBvZiB0aGlzIHRoZXJlIGFyZSBzbyBtYW55IGRpZmZlcmVudCAKdHlwZXMgdGhhdCBoYXJkbHkgYW55dGhpbmcgY2FuIGJlIHNhaWQgd2hpY2ggd291bGQgYXBwbHkgZXF1YWxseSB0byBhbGwgb2YgCnRoZW0tLSBleGNlcHQgcGVyaGFwcyB0aGF0IG9uZSBhbG1vc3QgaW52YXJpYWJsZSBjaGFyYWN0ZXJpc3RpYyBpcyBhbiBhdG1vc3BoZXJlIApvZiBqb3lvdXNuZXNzIGFuZCBob3BlZnVsbmVzcy4gVGhlIGNpcmNsZXMgdG8gd2hpY2ggb3V0c2lkZXJzIGFyZSBvZnRlbiAKaW50cm9kdWNlZCwgdGhvc2Ugb2Ygd2hpY2ggd2UgaGVhciBhbmQgb2Ygd2hpY2ggd2UgbWF5IG9jY2FzaW9uYWxseSByZWFkIGluIHRoZSAKbmV3c3BhcGVycy0tIHRoZXNlIGFyZSBhZnRlciBhbGwgdGhlIGZldywgYW5kIGJlaGluZCB0aGVtLCBmb3JtaW5nIHRoZSByZWFsIApibG9jayBvZiBzcGlyaXR1YWxpc20sIGFyZSB0d28gb3RoZXIgdmFyaWFudHMgb2Ygd2hpY2ggd2UgaGVhciB2ZXJ5IGxpdHRsZS4gCgoKNjI5LsKgwqDCoMKgwqDCoMKgClRoZXJlIGlzIHRoZSBvcmRpbmFyeSBz77+9YW5jZSwgcXVpdGUgYW1vbmcgdGhlIHBvb3IsIHdpdGggYSBtZWRpdW0gCnByb2JhYmx5IG9mIHRoZSBzdG91dCB3YXNoZXItd29tYW4gdHlwZSwgd2hlcmUgbm8gc2Vuc2F0aW9uYWwgcGhlbm9tZW5hIHRha2UgCnBsYWNlLCB3aGVyZSB0aGUgc3Bpcml0cyBhcmUgZnJlcXVlbnRseSB1bmdyYW1tYXRpY2FsLiBUaG91c2FuZHMgb2Ygc3VjaCBz77+9YW5jZXMgCmFyZSBiZWluZyBoZWxkIGFsbCBvdmVyIHRoZSB3b3JsZCwgYW5kIHRoZXJlIGlzIGEgc3Ryb25nIGZhbWlseSBsaWtlbmVzcyBiZXR3ZWVuIAp0aGVtLiBUbyBhIHZpc2l0b3IgdGhlaXIgcHJvY2VlZGluZ3Mgd291bGQgYXBwZWFyIHByb2ZvdW5kbHkgdW5pbnRlcmVzdGluZy4gClVzdWFsbHkgdGhlIG1lZGl1bSBnaXZlcyBhIGtpbmQgb2YgZm91cnRoLXJhdGUgZXRoaWNhbCBhZGRyZXNzLS0gb3IgcGVyaGFwcyBpdCAKaXMgcmVhbGx5IGdpdmVuIHRocm91Z2ggdGhlIG1lZGl1bS0tIGJ1dCBpbiBhbnkgY2FzZSBpdCB1c3VhbGx5IApmYWl0aGZ1bGx5IHJlcHJvZHVjZXMgYWxsIGhlciBmYXZvdXJpdGUgZXJyb3JzIGluIGdyYW1tYXIgYW5kIGluIHByb25vdW5jaWF0aW9uLiAKVGhlbiBhcyBhIGdlbmVyYWwgcnVsZSBhIGZldyB3b3JkcyBhcmUgc2FpZCBzcGVjaWFsbHkgdG8gZWFjaCBvZiB0aGUgcGVyc29ucyAKcHJlc2VudCwgb2Z0ZW4gdGFraW5nIHRoZSBmb3JtIG9mIGEgZGVzY3JpcHRpb24gb2YgdGhlaXIgc3Vycm91bmRpbmdzIG9yIG9mIHRoZSAKc3Bpcml0cyB3aGljaCBhcmUgc3VwcG9zZWQgdG8gYmUgaG92ZXJpbmcgYWJvdXQgdGhlbS4gU3VjaCBkZXNjcmlwdGlvbnMgYXJlIAp1c3VhbGx5IHZhZ3VlIGFuZCB1bmNlcnRhaW4gdG8gdGhlIGxhc3QgZGVncmVlLCBidXQgbm93IGFuZCBhZ2FpbiBzdHJpa2luZyAKaWRlbnRpZmljYXRpb25zIGFyZSBtYWRlLS0gZmFyIHRvbyBtYW55IHRvIGJlIGV4cGxpY2FibGUgb24gYW55IHRoZW9yeSBvZiBtZXJlIApjb2luY2lkZW5jZS4gQW5kIGhvd2V2ZXIgZHVsbCBhbGwgdGhpcyBtYXkgc2VlbSB0byB0aGUgb3V0c2lkZXIsIGl0IGRvZXMgCnVuZG91YnRlZGx5IGNhcnJ5IHBlYWNlIGFuZCBjb252aWN0aW9uIHRvIHRoZSBtZW1iZXJzIG9mIHRoZSBjaXJjbGUsIGFuZCBnaXZlcyAKdGhlbSBhIHJlYWwgbGl2aW5nIGtub3dsZWRnZSBhbmQgY2VydGFpbnR5IHdpdGggcmVnYXJkIHRvIHRoZSBjb250aW51ZWQgCmV4aXN0ZW5jZSBvZiBtYW4gYWZ0ZXIgZGVhdGgsIHdoaWNoIHB1dHMgdG8gc2hhbWUgdGhlIGZhaXRoIG9mIHRoZSBmYXNoaW9uYWJsZSAKY2h1cmNoZXMuIAoKCjYzMC7CoMKgwqDCoMKgwqDCoApUaGUgaGlkZGVuIHNpZGUgb2YgYSBz77+9YW5jZSBzdWNoIGFzIHRoaXMgaGFzIG9mdGVuIHNvbWV0aGluZyBwYXRoZXRpYyAKYWJvdXQgaXQuIEJlaGluZCB0aGUgbWVkaXVtIHRoZXJlIGlzIHVzdWFsbHkgd2hhdCBpcyBjYWxsZWQgYSBzcGlyaXQtZ3VpZGUtLSBhIApkZWFkIHBlcnNvbiwgc29tZXRpbWVzIG9mIHRoZSBtZWRpdW0nIHMgb3duIGNsYXNzIGluIGxpZmUsIHNvbWV0aW1lcyBvZiBhIApkZWNpZGVkbHkgaGlnaGVyIHR5cGUtLSBhIGRlYWQgcGVyc29uIHdobyBoYXMgYnkgbXVjaCBwYXRpZW50IGVmZm9ydCBsZWFybmVkIGhvdyAKdG8gaW5mbHVlbmNlIHdpdGggYSByZWFzb25hYmxlIGFtb3VudCBvZiBjZXJ0YWludHkgdGhlIGNsdW1zeSBvcmdhbmlzbSBvZiB0aGUgCm1lZGl1bSwgd2hpY2gsIGhvd2V2ZXIgdW5zdWl0YWJsZSBpdCBtYXkgYmUgaW4gbW9zdCBvdGhlciByZXNwZWN0cywgYXQgbGVhc3QgCnBvc3Nlc3NlcyB0aGUgaW52YWx1YWJsZSBmYWN1bHR5IHRoYXQgaXQgY2FuIGJlIGluZmx1ZW5jZWQgYW5kIHRoYXQgCmNvbW11bmljYXRpb25zIGNhbiBpbiBzb21lIHdheSBvciBvdGhlciBiZSBnb3QgdGhyb3VnaC4gVGhlIHBhdGllbmNlIHdpdGggd2hpY2ggCnRoaXMgZW50aXR5IGRlYWxzIHdpdGggdGhlIHBvb3Igc291bHMgdGhhdCBjb21lIHRvIGhpbSBmcm9tIGJvdGggc2lkZXMgb2YgdGhlIAp2ZWlsIGlzIGFkbWlyYWJsZTsgZm9yIGhlIGhhcyB0byB0cnkgdG8gYnJpbmcgaW50byBoYXJtb255IG5vdCBvbmx5IHRoZSB0ZWFyZnVsIAppbmNvbnNlcXVlbmNlIG9mIHNjb3JlcyBvZiBzb3Jyb3dpbmcgcmVsYXRpb25zIG9uIHRoaXMgc2lkZSwgYnV0IGFsc28gdGhlIApmZXZlcmlzaCBhbmQgY2xhbW9yb3VzIGV4Y2l0ZW1lbnQgb2YgYSBjcm93ZCB3aG8gYXJlIHRyeWluZyB0byBydXNoIGludG8gCm1hbmlmZXN0YXRpb24gZnJvbSB0aGUgb3RoZXIuIFdpdGggaGlzIGNsYXNzIGFuZCBpbiBoaXMgd2F5IHN1Y2ggYW4gZW50aXR5IGRvZXMgCmEgZ3JlYXQgZGVhbCBvZiBnb29kLCBhbmQgaGlzIGxpZmUgb2YgdW5ub3RpY2VkIHRvaWwgaW4gc29tZSBvYnNjdXJlIGRpc3RyaWN0IAphZGRzIG1vcmUgdG8gdGhlIHN1bSB0b3RhbCBvZiBodW1hbiBoYXBwaW5lc3MgdGhhbiBtYW55IGZhciBtb3JlIHNob3d5IGVmZm9ydHMgCndoaWNoIHJlY2VpdmUgZ3JlYXRlciBjcmVkaXQgaW4gdGhlIGV5ZXMgb2YgdGhlIHB1YmxpYy4gRXZlbiBzdWNoIGEgc++/vWFuY2UgYXMgCnRoaXMsIHdoZW4gZXhhbWluZWQgd2l0aCBhc3RyYWwgc2lnaHQsIGlzIHNlZW4gdG8gYmUgYSBjZW50cmUgb2YgYSBraW5kIG9mIAp2b3J0ZXguIHRoZSBkZXBhcnRlZCBydXNoaW5nIGluIGZyb20gYWxsIGRpcmVjdGlvbnMsIGRlc2lyaW5nIGVpdGhlciB0aGVtc2VsdmVzIAp0byBtYW5pZmVzdCBvciB0byB3YXRjaCB0aGUgbWFuaWZlc3RhdGlvbi4gCgoKNjMxLsKgwqDCoMKgwqDCoMKgClRoZXJlIGlzIGFub3RoZXIgdmFyaWV0eSBvZiBz77+9YW5jZSBvZiB3aGljaCBmZXcga25vdyBhbnl0aGluZy0tIHRoZSAKcHJpdmF0ZSBmYW1pbHkgY2lyY2xlIHRvIHdoaWNoIG5vIG91dHNpZGVyIGlzIGV2ZXIgYWRtaXR0ZWQuIFRoaXMgaXMgaW5maW5pdGVseSAKdGhlIG1vc3Qgc2F0aXNmYWN0b3J5IHNpZGUgb2Ygc3Bpcml0dWFsaXNtLCBmb3IgdGhyb3VnaCBpdCBtYW55IHRob3VzYW5kcyBvZiAKZmFtaWxpZXMgY29tbXVuaWNhdGUgZGF5IGJ5IGRheSB3aXRoIGZyaWVuZHMgb3IgcmVsYXRpb25zIHdobyBoYXZlIHBhc3NlZCBmcm9tIAp0aGUgcGh5c2ljYWwgd29ybGQsIGFuZCBpbiB0aGlzIHdheSBub3Qgb25seSBsZWFybiBhIG51bWJlciBvZiBpbnRlcmVzdGluZyBmYWN0cyAKYnV0IGFyZSBrZXB0IGNvbnN0YW50bHkgaW4gdG91Y2ggd2l0aCBzcGlyaXR1YWwgc3ViamVjdHMgYW5kIGF0IGEgaGlnaCBsZXZlbCBvZiAKdGhvdWdodCB3aXRoIHJlZ2FyZCB0byB0aGVtLiBNb3N0IGNvbW1vbmx5IHRoZSBjZW50cmFsIGZpZ3VyZSBhdCB0aGVzZSBwcml2YXRlIApz77+9YW5jZXMgaXMgc29tZSBkZXBhcnRlZCBtZW1iZXIgb2YgdGhlIGZhbWlseSwgYW5kIHRoZSBjb21tdW5pY2F0aW9ucyBvcmRpbmFyaWx5IAphcmUgYWZmZWN0aW9uYXRlIGxpdHRsZSBzZXJtb25ldHRlcyBvZiBhIGRldm90aW9uYWwgY2hhcmFjdGVyLCBvZnRlbiBzb21ld2hhdCAKcmhhcHNvZGljYWwuIAoKCjYzMi7CoMKgwqDCoMKgwqDCoApPY2Nhc2lvbmFsbHksIGhvd2V2ZXIsIHdoZXJlIHRoZSBkZXBhcnRlZCByZWxhdGlvbiBoYXBwZW5zIHRvIGJlIGEgbWFuIG9mIApvcmlnaW5hbCB0aG91Z2h0IG9yIG9mIGEgc2NpZW50aWZpYyB0dXJuIG9mIG1pbmQsIGEgZ3JlYXQgdm9sdW1lIG9mIGRlZmluaXRlIAppbmZvcm1hdGlvbiBpcyBncmFkdWFsbHkgZ2F0aGVyZWQgdG9nZXRoZXIuIFRoZXJlIGFyZSBmYXIgbW9yZSBvZiB0aGVzZSBwcml2YXRlIApyZXZlbGF0aW9ucyBpbiBleGlzdGVuY2UgdGhhbiBpcyBnZW5lcmFsbHkgc3VzcGVjdGVkLCBmb3IgaGFyZGx5IG9uZSBpbiBhIApodW5kcmVkIG9mIHRob3NlIHdobyByZWNlaXZlIHRoZW0gaXMgcHJlcGFyZWQgdG8gZmFjZSBhbiBleHBvc3VyZSB0byBwdWJsaWMgCnJpZGljdWxlIG9mIHdoYXQgdG8gaGltIGlzIGFib3ZlIGFsbCB0aGluZ3MgYSBob2x5IHRoaW5nLCBpbiB0aGUgaG9wZSBvZiBzbyAKaW1wcm9iYWJsZSBhIHJlc3VsdCBhcyB0aGUgY29udmVyc2lvbiBvZiBzb21lIHNjZXB0aWNhbCBzdHJhbmdlci4gCgoKNjMzLsKgwqDCoMKgwqDCoMKgCkF0IHN1Y2ggc++/vWFuY2VzIGFzIHRoZXNlLCByZW1hcmthYmxlIHBoZW5vbWVuYSBhcmUgbm90IGluZnJlcXVlbnQsIGFuZCAKbWF0ZXJpYWxpc2F0aW9ucyBvZiB0aGUgbW9zdCBzdGFydGxpbmcga2luZCBhcmUgc29tZXRpbWVzIHBhcnQgb2YgdGhlIGRhaWx5IApwcm9ncmFtbWUuIE9mdGVuIHRoZSBzby1jYWxsZWQgZGVhZCBhcmUganVzdCBhcyBtdWNoIHBhcnQgb2YgdGhlIGRhaWx5IGxpZmUgb2YgCnRoZSBmYW1pbHkgYXMgdGhlIGxpdmluZywgYXMgd2FzIHRoZSBjYXNlLCBmb3IgZXhhbXBsZSwgd2l0aCB0aGUgcGhlbm9tZW5hIHdoaWNoIAp0b29rIHBsYWNlIGF0IHRoZSBob3VzZSBvZiBNci4gTW9yZWwgVGhlb2JhbGQsIGF0IEhhc2xlbWVyZS4gVGhlIHPvv71hbmNlcyAKZGVzY3JpYmVkIGJ5IE1yLiBSb2JlcnQgRGFsZSBPd2VuIGFyZSBsYXJnZWx5IG9mIHRoaXMgY2hhcmFjdGVyLCBhbmQgdGhleSAKcmVwcmVzZW50IHRoZSBoaWdoZXN0IHBvc3NpYmxlIGtpbmQgb2Ygc3Bpcml0dWFsaXNtLCB0aG91Z2ggaW4gdGhlIHZlcnkgbmF0dXJlIApvZiB0aGUgY2FzZSBpdCBpcyBoYXJkbHkgZXZlciBhdmFpbGFibGUgdG8gdGhlIG9yZGluYXJ5IGVucXVpcmVyLiAKCgo2MzQuwqDCoMKgwqDCoMKgwqAKVGhlIGhpZGRlbiBzaWRlIG9mIHN1Y2ggc++/vWFuY2VzIGFzIHRoZXNlIGlzIHRydWx5IG1hZ25pZmljZW50LCBmb3IgdGhleSAKZm9ybSBwb2ludHMgb2YgaGFiaXR1YWwgY29udGFjdCBiZXR3ZWVuIHRoZSBhc3RyYWwgYW5kIHBoeXNpY2FsIHdvcmxkcy0tIAp2b3J0aWNlcyBhZ2FpbiwgYnV0IHRoaXMgdGltZSBvbmx5IG9mIHRoZSBoaWdoZXIgYW5kIG5vYmxlciB2YXJpZXRpZXMgb2YgYXN0cmFsIApsaWZlLiBUaGUgdGhvdWdodC1mb3JtcyBzdXJyb3VuZGluZyB0aGVtIGFyZSBvZiB0aGUgcmVsaWdpb3VzIG9yIHRoZSBzY2llbnRpZmljIAp0eXBlIGFjY29yZGluZyB0byB0aGUgbmF0dXJlIG9mIHRoZSBtYW5pZmVzdGF0aW9ucywgYnV0IHRoZXkgYXJlIGFsd2F5cyBnb29kIAp0aG91Z2h0LWZvcm1zLCBjYWxjdWxhdGVkIHRvIHJhaXNlIHRoZSBtZW50YWwgb3Igc3Bpcml0dWFsIGxldmVsIG9mIHRoZSBkaXN0cmljdCAKaW4gd2hpY2ggdGhleSBhcmUgdG8gYmUgZm91bmQuIAoKCjYzNS7CoMKgwqDCoMKgwqDCoApQdXR0aW5nIGFzaWRlIHRoZXNlIHR3byBsYXJnZSBjbGFzc2VzLCB3ZSBoYXZlIG5leHQgdGhlIHNtYWxsZXIgZ3JvdXAgb2YgCnB1YmxpYyBz77+9YW5jZXMgd2hpY2ggdG8gbW9zdCBvdXRzaWRlcnMgcmVwcmVzZW50IHRoZSB3aG9sZSBvZiBzcGlyaXR1YWxpc20uIEFsbCAKc29ydHMgb2YgcGVvcGxlIGFyZSBhZG1pdHRlZCB0byB0aGVzZSwgdXN1YWxseSwgb24gcGF5bWVudCBvZiBhIHNtYWxsIHN1bSBvZiAKbW9uZXksIGFuZCB0aGUgZW50aXRpZXMgd2hvIGFwcGVhciBvbiB0aGUgYXN0cmFsIHNpZGUgYXJlIGp1c3QgYXMgY3VyaW91cyBhIApjb25nbG9tZXJhdGUgYXMgdGhvc2Ugd2hvIGF0dGVuZCBvbiB0aGUgcGh5c2ljYWwuIEhlcmUgYWxzbyB0aGVyZSBpcyBhbG1vc3QgCmFsd2F5cyBhIHNwaXJpdC1ndWlkZSBpbiBjaGFyZ2UuIFRoZSBoaWdoZXN0IGFzdHJhbCB0eXBlcyBhcmUgbm90IHRvIGJlIGZvdW5kIAphbW9uZyB0aGUgaGFiaXR177+9cyBvZiBzdWNoIHPvv71hbmNlcyBhcyB0aGVzZSwgYnV0IHRoZXJlIGlzIHVzdWFsbHkgYSBzcHJpbmtsaW5nIApvZiBkZWFkIHBlb3BsZSB3aG8gaGF2ZSBkZXZvdGVkIHRoZW1zZWx2ZXMgdG8gdGhlIGlkZWEgb2YgYmVpbmcgdXNlZnVsIHRvIHRob3NlIApzdGlsbCBvbiB0aGUgcGh5c2ljYWwgZWFydGgsIGJ5IHRoZSBleGhpYml0aW9uIG9mIHBoZW5vbWVuYSBhbmQgdGhlIGdpdmluZyBvZiAKdmFyaW91cyBzbWFsbCB0ZXN0cy4gCgoKNjM2LsKgwqDCoMKgwqDCoMKgClRoZSBhdXJhIG9mIHN1Y2ggYSBz77+9YW5jZSBpcyB1c3VhbGx5IG9uIHRoZSB3aG9sZSBzb21ld2hhdCB1bnBsZWFzYW50LCAKZm9yIGl0IGF0dHJhY3RzIGEgZ3JlYXQgZGVhbCBvZiBhdHRlbnRpb24gaW4gdGhlIGFzdHJhbCB3b3JsZCBhcyB3ZWxsIGFzIGluIHRoZSAKcGh5c2ljYWwsIGFuZCBjb25zZXF1ZW50bHkgcm91bmQgZXZlcnkgb25lIG9mIHRoZW0gaXMgYWx3YXlzIGEgY2xhbW9yb3VzIGNyb3dkIApvZiB0aGUgbW9zdCB1bmRlc2lyYWJsZSBlbnRpdGllcywgd2hvIGFyZSByZXN0cmFpbmVkIG9ubHkgYnkgZm9yY2UgZnJvbSBwdXNoaW5nIAppbiBhbmQgc2VpemluZyB1cG9uIHRoZSBtZWRpdW0uIEFtb25nIHRoZSBkYW5nZXJzIGF0dGVuZGluZyB0aGVzZSBz77+9YW5jZXMgaXMgdGhlIApwb3NzaWJpbGl0eSB0aGF0IG9uZSBvZiB0aGVzZSBkZXNwZXJhdGUgY3JlYXR1cmVzIG1heSBzZWl6ZSB1cG9uIGFueSBzZW5zaXRpdmUgCnNpdHRlciBhbmQgb2JzZXNzIGhpbTsgd29yc2Ugc3RpbGwsIHRoYXQgaGUgbWF5IGZvbGxvdyBoaW0gaG9tZSwgYW5kIHNlaXplIHVwb24gCmhpcyB3aWZlIG9yIGRhdWdodGVyLiBUaGVyZSBoYXZlIGJlZW4gbWFueSBzdWNoIGNhc2VzLCBhbmQgdXN1YWxseSBpdCBpcyBhbG1vc3QgCmltcG9zc2libGUgdG8gZ2V0IHJpZCBvZiBhbiBlbnRpdHkgd2hpY2ggaGFzIHRodXMgb2JzZXNzZWQgdGhlIGJvZHkgb2YgYSBsaXZpbmcgCmh1bWFuIGJlaW5nLiAKCgo2MzcuwqDCoMKgwqDCoMKgwqAKVGhlIGhpZGRlbiBzaWRlIG9mIHN1Y2ggYSBz77+9YW5jZSBpcyBnZW5lcmFsbHkgYSBjb25mdXNlZCBuZXR3b3JrIG9mIApjcm9zcy1jdXJyZW50cywgc29tZSBnb29kIGFuZCBzb21lIGJhZCwgYnV0IG5vbmUgdmVyeSBnb29kIGFuZCBzb21lIHZlcnkgYmFkLiAKVGhlIGNsYWlydm95YW50IGF0dGVuZGluZyBzdWNoIGEgc++/vWFuY2UgbWF5IG9idGFpbiBhIGNlcnRhaW4gYW1vdW50IG9mIAppbnN0cnVjdGlvbiBmcm9tIHdhdGNoaW5nIHRoZSB2YXJpb3VzIG1ldGhvZHMgYnkgd2hpY2ggdGhlIHBoZW5vbWVuYSBhcmUgCnByb2R1Y2VkLCB3aGljaCBhcmUgc29tZXRpbWVzIGV4Y2VlZGluZ2x5IGluZ2VuaW91cy4gSGUgd2lsbCBiZSBhc3RvbmlzaGVkIGF0IAp0aGUgY2xldmVybmVzcyBvZiB0aGUgcGVyc29uYXRpb25zLCBhbmQgYXQgdGhlIGFtYXppbmcgZmFjaWxpdHkgd2l0aCB3aGljaCB0aG9zZSAKd2hvIGtub3cgbm90aGluZyBvZiB0aGlzIHNpZGUgb2YgbGlmZSBjYW4gYmUgZGVjZWl2ZWQuIAoKCjYzOC7CoMKgwqDCoMKgwqDCoApBIFJFTElHSU9VUyBSRVZJVkFMIAoKCjYzOS7CoMKgwqDCoMKgwqDCoApGcm9tIHRoZSBwb2ludCBvZiB2aWV3IG9mIHRoZSBzdHVkZW50IG9mIHRoZSBpbm5lciB3b3JsZHMgb25lIG9mIHRoZSBtb3N0IApyZW1hcmthYmxlIHBoZW5vbWVuYSBvZiBvdXIgZGF5IGlzIHdoYXQgaXMgY2FsbGVkIGEgcmVsaWdpb3VzIHJldml2YWwuIEEgCnJlbGlnaW91cyByZXZpdmFsLCBhcyBzZWVuIGZyb20gdGhlIHBoeXNpY2FsIHdvcmxkLCB1c3VhbGx5IG1lYW5zIGEgZ2F0aGVyaW5nIG9mIApwZW9wbGUgb2YgdGhlIGxvd2VyIGNsYXNzZXMgd2hvc2UgZmVlbGluZ3MgYXJlIGluZmxhbWVkIGJ5IGhpZ2hseSBlbW90aW9uYWwgYW5kIApvZnRlbiBsdXJpZCBhcHBlYWxzIGZyb20gc29tZSBmYW5hdGljYWwgZXhwb25lbnQgb2YgdGhlIGdvc3BlbCBvZiBhIHBhcnRpY3VsYXIgCnNlY3QuIERheSBhZnRlciBkYXkgdGhlc2UgbWVldGluZ3MgdGFrZSBwbGFjZSwgYW5kIHRoZXkgYXJlIG9mdGVuIGFjY29tcGFuaWVkIGJ5IAp0aGUgbW9zdCBleHRyYW9yZGluYXJ5IHBoZW5vbWVuYSBvZiBuZXJ2b3VzIGV4Y2l0ZW1lbnQuIAoKCjY0MC7CoMKgwqDCoMKgwqDCoApQZW9wbGUgd29yayB0aGVtc2VsdmVzIHVwIGludG8gc29tZSBzb3J0IG9mIGh5c3RlcmljYWwgY29uZGl0aW9uIGluIHdoaWNoIAp0aGV5IGZlZWwgdGhlbXNlbHZlcyB0byBiZSBzYXZlZCwgYXMgdGhleSBjYWxsIGl0LS0gdG8gaGF2ZSBlc2NhcGVkIGZvcmV2ZXIgZnJvbSAKdGhlIGJvbmRhZ2Ugb2YgdGhlIG9yZGluYXJ5IGxpZmUgb2YgdGhlIHdvcmxkLCBhbmQgdG8gaGF2ZSBiZWNvbWUgbWVtYmVycyBvZiBhIApzcGlyaXR1YWwgY29tbXVuaXR5IHdob3NlIGFpbXMgYXJlIG9mIHRoZSBoaWdoZXN0IGRlc2NyaXB0aW9uLiBPZnRlbiB0aGV5IGFyZSAKbW92ZWQgdG8gY29uZmVzcyBpbiBwdWJsaWMgd2hhdCB0aGV5IGNvbnNpZGVyIHRvIGhhdmUgYmVlbiB0aGVpciBtaXNkZWVkcywgYW5kIAp0aGV5IGFyZSBhcHQgdG8gZG8gdGhpcyB3aXRoIGEgd2VhbHRoIG9mIGVtb3Rpb24gYW5kIHJlcGVudGFuY2UgZW50aXJlbHkgb3V0IG9mIApwcm9wb3J0aW9uIHRvIGFueXRoaW5nIHRoYXQgdGhleSBoYXZlIHRvIGNvbmZlc3MuIFRoZSB3YXZlIG9mIG5lcnZvdXMgZXhjaXRlbWVudCAKc3ByZWFkcyBsaWtlIGFuIGluZmVjdGlvdXMgZGlzZWFzZSwgYW5kIHVzdWFsbHkgaXQgbGFzdHMgZm9yIHNvbWUgd2Vla3MsIHRob3VnaCAKb2Z0ZW4gdG93YXJkcyB0aGUgZW5kIG9mIHRoYXQgdGltZSBzeW1wdG9tcyBvZiB1bml2ZXJzYWwgZXhoYXVzdGlvbiBhcHBlYXIgYW5kIAp0aGUgd2hvbGUgdGhpbmcgc29tZXdoYXQgc2hhbWVmYWNlZGx5IGRpZXMgZG93biBpbnRvIGNvbW1vbnBsYWNlIGxpZmUgYWdhaW4uIAoKCjY0MS7CoMKgwqDCoMKgwqDCoApJbiBhIHNtYWxsIHBlcmNlbnRhZ2Ugb2YgdGhlIGNhc2VzIHRoZSBzcGlyaXR1YWwgZWxldmF0aW9uIGFwcGVhcnMgdG8gYmUgCm1haW50YWluZWQsIGFuZCB0aGUgdmljdGltcyBjb250aW51ZSB0byBsaXZlIGEgbGlmZSBhdCBhIGRpc3RpbmN0bHkgaGlnaGVyIGxldmVsIAp0aGFuIHRoYXQgd2hpY2ggaGFkIGJlZW4gdGhlaXJzIHByZXZpb3VzbHk7IGJ1dCBieSBmYXIgdGhlIGdyZWF0ZXIgbnVtYmVyIG9mIHRoZSAKY2FzZXMgcmVsYXBzZSBlaXRoZXIgc3VkZGVubHkgYW5kIGRyYW1hdGljYWxseSwgb3IgYnkgc2xvdyBhbmQgZ3JhZHVhbCBzdGFnZXMsIAppbnRvIG11Y2ggdGhlIHNhbWUga2luZCBvZiBsaWZlIGFzIHRoZXkgaGFkIGxlZCBiZWZvcmUgdGhlIGV4Y2l0ZW1lbnQgY2FtZS4gClN0YXRpc3RpY3Mgc2hvdyB0aGF0IHRoZSBjdWxtaW5hdGlvbiBvZiB0aGlzIGVtb3Rpb25hbCBleGNpdGVtZW50IGlzIGFjY29tcGFuaWVkIApieSBncmVhdCBzZXh1YWwgZGlzdHVyYmFuY2UsIGFuZCB0aGF0IHRoZSBudW1iZXIgb2YgaWxsZWdpdGltYXRlIHVuaW9ucyBvZiBhbGwgCnNvcnRzIGlzIHRlbXBvcmFyaWx5IGdyZWF0bHkgaW5jcmVhc2VkLiBUaGVyZSBhcmUgY2VydGFpbiBzZWN0cyB3aGljaCB0YWtlIGFzIApwYXJ0IG9mIHRoZWlyIHJlZ3VsYXIgc3lzdGVtIGEgbXVjaCBtb2RpZmllZCBmb3JtIG9mIHRoaXMgZXhjaXRlbWVudCwgYW5kIApjb25zaWRlciBpdCBuZWNlc3NhcnkgZm9yIHRoZWlyIGp1bmlvciBtZW1iZXJzIHRvIHBhc3MgdGhyb3VnaCBhIGNyaXNpcyB3aGljaCBpcyAKc29tZXRpbWVzIGRlc2NyaWJlZCBhcyDvv71iZWluZyBjb252aW5jZWQgb2Ygc2luLO+/vSBhbmQgaW4gb3RoZXIgY2FzZXMgc2ltcGx5IGFzIArvv71nZXR0aW5nIHJlbGlnaW9u77+9LiAKCgo2NDIuwqDCoMKgwqDCoMKgwqAKU3VjaCBhIHJldml2YWwgYXMgdGhpcyBpcyBzZWVuIGluIGl0cyBtb3N0IGV4dHJhdmFnYW50IGZvcm0gYW1vbmcgdGhlIApuZWdyb2VzIG9mIEFtZXJpY2EsIGFtb25nIHdob20gaXQgcmVhY2hlcyBhIGxldmVsIG9mIGZyZW56eSBub3QgY29tbW9ubHkgCmF0dGFpbmVkIGJ5IHRoZSB3aGl0ZSByYWNlcy4gVGhlIG5lZ3JvZXMgZmluZCBpdCBuZWNlc3NhcnkgdG8gcmVsaWV2ZSB0aGVpciAKZmVlbGluZ3MgYnkgZGFuY2VzIGFuZCBsZWFwcyBhbmQgY29udG9ydGlvbnMgb2YgdGhlIHdpbGRlc3Qga2luZCwgYW5kIHRoZXNlIGFyZSAKb2Z0ZW4gY2FycmllZCBvbiBmb3IgaG91cnMgdG9nZXRoZXIsIGFjY29tcGFuaWVkIGJ5IHllbGxzIGFuZCBncm9hbnMgb2YgYSB0cnVseSAKYWxhcm1pbmcgY2hhcmFjdGVyLiAKCgo2NDMuwqDCoMKgwqDCoMKgwqAKVGhhdCB0aGlzIHNvcnQgb2YgdGhpbmcgc2hvdWxkIHRha2UgcGxhY2UgaW4gdGhlIHR3ZW50aWV0aCBjZW50dXJ5LCBhbmQgCmFtb25nIHBlb3BsZSB3aG8gdGhpbmsgdGhlbXNlbHZlcyBjaXZpbGlzZWQgaXMgc3VyZWx5IGEgbW9zdCByZW1hcmthYmxlIApwaGVub21lbm9uLCBhbmQgb25lIGRlc2VydmluZyBjYXJlZnVsIGNvbnNpZGVyYXRpb24gZnJvbSBhIHN0dWRlbnQgb2YgdGhlIGlubmVyIApzaWRlIG9mIHRoaW5ncy4gRm9yIG9uZSB3aG8gcG9zc2Vzc2VzIGFzdHJhbCB2aXNpb24gc3VjaCBhbiBvdXRidXJzdCBpcyBhIAp3b25kZXJmdWwgYnV0IHVucGxlYXNhbnQgc2lnaHQuIFRoZSBtaXNzaW9uZXIgb3IgcmV2aXZhbGlzdCBwcmVhY2hlciB3aG8gZmlyc3QgCmNvbW1lbmNlcyBzdWNoIGEgbW92ZW1lbnQgaXMgdXN1YWxseSBhbmltYXRlZCBieSB0aGUgaGlnaGVzdCBtb3RpdmVzLiBIZSBiZWNvbWVzIAppbXByZXNzZWQgd2l0aCB0aGUgb3ZlcmZsb3dpbmcgbG92ZSBvZiBHb2QsIG9yIHdpdGggdGhlIHdpY2tlZG5lc3Mgb2YgYSAKcGFydGljdWxhciBzZWN0aW9uIG9mIHRoZSBjb21tdW5pdHksIGFuZCBoZSBmZWVscyB0aGF0IHRoZSBzcGlyaXQgbW92ZXMgaGltIHRvIApwcm9jbGFpbSB0aGUgb25lIGFuZCB0byByZWJ1a2UgdGhlIG90aGVyLiBIZSB3b3JrcyBoaW1zZWxmIHVwIGludG8gYSBjb25kaXRpb24gCm9mIHRyZW1lbmRvdXMgZW1vdGlvbmFsIGV4Y2l0ZW1lbnQsIGFuZCBzZXRzIGhpcyBhc3RyYWwgYm9keSBzd2luZ2luZyBmYXIgYmV5b25kIAp0aGUgZGVncmVlIG9mIHNhZmV0eS4gCgoKNjQ0LsKgwqDCoMKgwqDCoMKgCkZvciBhIG1hbiBtYXkgeWllbGQgaGltc2VsZiB0byBlbW90aW9uIHVwIHRvIGEgY2VydGFpbiBwb2ludCwgYW5kIHlldCAKcmVjb3ZlciBoaW1zZWxmLCBqdXN0IGFzIGEgc2hpcCBtYXkgcm9sbCB0byBhIGNlcnRhaW4gZXh0ZW50IGFuZCB5ZXQgc3dpbmcgYmFjayAKYWdhaW4gdG8gaGVyIG5vcm1hbCBwb3NpdGlvbjsgYnV0IGp1c3QgYXMgdGhlIHNoaXAgY2Fwc2l6ZXMgaWYgc2hlIHJvbGxzIGJleW9uZCAKdGhhdCBwb2ludCBvZiBzYWZldHksIHNvIGlmIHRoZSBtYW4gbGV0cyBoaXMgYXN0cmFsIGJvZHkgZW50aXJlbHkgZXNjYXBlIGZyb20gCmNvbnRyb2wsIGhlIGRpZXMsIG9yIGJlY29tZXMgaW5zYW5lIG9yIGlzIG9ic2Vzc2VkLiBTdWNoIGFuIG9ic2Vzc2lvbiBuZWVkIG5vdCAKbmVjZXNzYXJpbHkgYmUgd2hhdCB3ZSBzaG91bGQgY2FsbCBhbiBldmlsIG9uZSwgdGhvdWdoIHRoZSB0cnV0aCBpcyB0aGF0IGFsbCAKb2JzZXNzaW9uIGlzIGV2aWw7IGJ1dCBJIG1lYW4gdGhhdCB3ZSBuZWVkIG5vdCBjcmVkaXQgdGhlIG9ic2Vzc2luZyBlbnRpdHkgd2l0aCAKYW55dGhpbmcgYnV0IGdvb2QgaW50ZW50aW9ucywgdGhvdWdoIGhlIHVzdWFsbHkgdGFrZXMgYWR2YW50YWdlIG9mIHN1Y2ggYW4gCm9wcG9ydHVuaXR5IG1vcmUgZm9yIHRoZSBzYWtlIG9mIHRoZSBleGNpdGVtZW50IGFuZCB0aGUgZmVlbGluZyB3aGljaCBoZSBoaW1zZWxmIApnZXRzIG91dCBvZiBpdCB0aGFuIGZyb20gYW55IGFsdHJ1aXN0aWMgbW90aXZlLiAKCgo2NDUuwqDCoMKgwqDCoMKgwqAKSW4gbWFueSBjYXNlcywgaG93ZXZlciwgdGhlIG9ic2Vzc2luZyBlbnRpdHkgaXMgYSBkZXBhcnRlZCBwcmVhY2hlciBvZiAKdGhlIHNhbWUgcmVsaWdpb24sIHN0eWxlIGFuZCB0eXBlIGFzIHRoZSBtYW4gb2JzZXNzZWQsIGFuZCB0aHVzIHdlIGhhdmUgCnRlbXBvcmFyaWx5IHR3byBzb3VscyB3b3JraW5nIHRocm91Z2ggb25lIGJvZHkuIFRoZSBkb3VibGUgZm9yY2UgdGh1cyBnYWluZWQgaXMgCnBvdXJlZCBvdXQgcmVja2xlc3NseSB1cG9uIGFueSBhdWRpZW5jZSB0aGF0IGNhbiBiZSBnYXRoZXJlZCB0b2dldGhlci4gVGhlIAp0cmVtZW5kb3VzIHN3aW5naW5nIGVuZXJneSBvZiB0aGVzZSBoeXN0ZXJpY2FsIGV4Y2Vzc2VzIGlzIGNvbnRhZ2lvdXMsIGFuZCBzaW5jZSAKc3VjaCByZXZpdmFscyBhcmUgdXN1YWxseSBzZXQgb24gZm9vdCBhbW9uZyBwZW9wbGUgd2hvc2UgZW1vdGlvbnMgYXJlIG5vdCB1bmRlciAKdGhlIGNvbnRyb2wgb2YgYSBzdHJvbmdseSBkZXZlbG9wZWQgaW50ZWxsZWN0LCB0aGUgcHJlYWNoZXIgc29vbiBmaW5kcyBvdGhlcnMgCndobyBjYW4gYmUgcmVkdWNlZCBieSBzeW1wYXRoZXRpYyB2aWJyYXRpb24gdG8gYSBjb25kaXRpb24gYXMgdW5iYWxhbmNlZCBhcyBoaXMgCm93bi4gCgoKNjQ2LsKgwqDCoMKgwqDCoMKgCkV2ZXJ5IG9uZSB3aG8gc3dpbmdzIG92ZXIgdGhlIHNhZmV0eSBwb2ludCBhZGRzIHRvIHRoZSBzdHJlbmd0aCBvZiB0aGVzZSAKZXhhZ2dlcmF0ZWQgdmlicmF0aW9ucywgYW5kIHNvb24gYW4gYXN0cmFsIGRpc3R1cmJhbmNlIGlzIHNldCB1cCBvZiB0aGUgbmF0dXJlIApvZiBhIGdpZ2FudGljIHdoaXJscG9vbC4gVG93YXJkcyB0aGlzIGZyb20gYWxsIHNpZGVzIHBvdXIgYXN0cmFsIGVudGl0aWVzIHdob3NlIApvbmUgZGVzaXJlIGlzIGZvciBzZW5zYXRpb24tLSBubyBsb25nZXIgbWVyZWx5IG9yIGV2ZW4gY2hpZWZseSBodW1hbiBiZWluZ3MsIGJ1dCAKYWxsIGtpbmRzIG9mIG5hdHVyZS1zcGlyaXRzIHdobyBkZWxpZ2h0IGluIGFuZCBiYXRoZSBpbiB0aGUgdmlicmF0aW9ucyBvZiB3aWxkIApleGNpdGVtZW50IGp1c3QgYXMgY2hpbGRyZW4gcGxheSBpbiB0aGUgc3VyZi4gSXQgaXMgdGhleSB3aG8gc3VwcGx5IGFuZCAKY29uc3RhbnRseSByZWluZm9yY2UgdGhlIGVuZXJneSB3aGljaCBpcyBleHBlbmRlZCB3aXRoIHN1Y2ggdGVycmlibGUgCnJlY2tsZXNzbmVzcy4gSXQgaXMgdGhleSB3aG8gdHJ5IHRvIGtlZXAgdXAgdGhlIGxldmVsIG9mIHRoZSBleGNpdGVtZW50LCBzbyBsb25nIAphcyB0aGV5IGNhbiBmaW5kIGFueSBodW1hbiBiZWluZ3Mgd2hvIGNhbiBiZSBkcmFnZ2VkIGludG8gdGhlIHZvcnRleCBhbmQgaW5kdWNlZCAKdG8gZ2l2ZSB0aGVtIHRoZSBwbGVhc3VyYWJsZSBzZW5zYXRpb25zIHdoaWNoIHRoZXkgZGVzaXJlLiAKCgo2NDcuwqDCoMKgwqDCoMKgwqAKVGhlIGVtb3Rpb24sIHJlbWVtYmVyLCBpcyBlbXBoYXRpY2FsbHkgbm90IG9mIGEgaGlnaCB0eXBlLCBmb3IgaXQgaXMgCmludGVuc2VseSBwZXJzb25hbC4gSXQgaXMgYWx3YXlzIG1vdGl2ZWQgYnkgYW4gZXhhbHRlZCBlZ29pc20sIHRoZSBkZXNpcmUgdG8gCnNhdmUgb25lJyBzIG93biBzb3VsOyBzbyB0aGF0IHRoZSBkb21pbmFudCBpZGVhIGlzIGEgc2VsZmlzaCBvbmUuIFRoYXQgZGVmaW5lcyAKdGhlIGtpbmQgb2YgbWF0dGVyIHdoaWNoIGlzIHNldCBpbiBtb3Rpb24gaW4gdGhlc2UgdHJlbWVuZG91cyBzd2lybGluZ3MsIGFuZCAKdGhhdCBhZ2FpbiBsaW1pdHMgdGhlIG5hdHVyZS1zcGlyaXRzIHdobyBlbmpveSBpdCB0byBzdWNoIHR5cGVzIGFzIGZpbmQgCnRoZW1zZWx2ZXMgaW4gdHVuZSB3aXRoIHRoYXQga2luZCBvZiBtYXR0ZXIuIFRoZXNlIGFyZSBuYXR1cmFsbHkgYnkgbm8gbWVhbnMgdGhlIApoaWdoZXN0IHR5cGVzOyB0aGV5IGFyZSB1c3VhbGx5IGNyZWF0dXJlcyB3aXRob3V0IG11Y2ggaW50ZWxsaWdlbmNlIG9yIApjb21wcmVoZW5zaW9uLCB1bmRlcnN0YW5kaW5nIG5vdGhpbmcgYWJvdXQgdGhlaXIgaHVtYW4gdmljdGltczsgYW5kIHF1aXRlIHVuYWJsZSAKdG8gc2F2ZSB0aGVtIGZyb20gdGhlIGNvbnNlcXVlbmNlcyBvZiB0aGVpciBtYWQgZXhjaXRlbWVudCwgZXZlbiBpZiB0aGV5IGNvdWxkIApiZSBzdXBwb3NlZCB0byBjYXJlIHRvIGRvIHNvLiAKCgo2NDguwqDCoMKgwqDCoMKgwqAKVGhpcyB0aGVuIGlzIHRoZSBoaWRkZW4gc2lkZSBvZiBzdWNoIGEgbW92ZW1lbnQ7IHRoaXMgaXMgd2hhdCB0aGUgCmNsYWlydm95YW50IHNlZXMgd2hlbiBoZSB3YXRjaGVzIG9uZSBvZiB0aGVzZSBtb3N0IGFzdG9uaXNoaW5nIG1lZXRpbmdzLiBIZSBzZWVzIAphIG51bWJlciBvZiBodW1hbiBiZWluZ3Mgd2hvIGFyZSB0YWtlbiBvdXQgb2YgdGhlbXNlbHZlcywgd2hvc2UgaGlnaGVyIHZlaGljbGVzIAphcmUgZm9yIHRoZSB0aW1lIGJlaW5nIG5vIGxvbmdlciB0aGVpciBvd24sIGJ1dCBhcmUgYmVpbmcgdXNlZCB0byBzdXBwbHkgdGhpcyAKdG9ycmVudCBvZiBlbmVyZ3kuIEFsbCB0aGVzZSBwZW9wbGUgYXJlIHBvdXJpbmcgb3V0IHRoZWlyIGVtb3Rpb25zIGluIG9yZGVyIHRvIAptYWtlIGEgdmFzdCBhc3RyYWwgd2hpcmxwb29sIGludG8gd2hpY2ggdGhlc2UgZ3JlYXQgbmF0dXJlLXNwaXJpdHMgdGhyb3cgCnRoZW1zZWx2ZXMgd2l0aCBpbnRlbnNlIGRlbGlnaHQsIHBsdW5naW5nIGFuZCBmbHlpbmcgdGhyb3VnaCBpdCBhZ2FpbiBhbmQgYWdhaW4gCmluIHdpbGQgYWJhbmRvbm1lbnQgb2YgdXR0ZXIgcGxlYXN1cmUuIEZvciB0aGV5IGNhbiBhYmFuZG9uIHRoZW1zZWx2ZXMgdG8gCnBsZWFzdXJlIHdpdGggYSB0aG9yb3VnaG5lc3Mgb2Ygd2hpY2ggdGhlIGhlYXZpZXIgaHVtYW4gYmVpbmcga25vd3Mgbm90aGluZy4gClRoZWlyIHdob2xlIGxpZmUgZm9yIHRoZSB0aW1lIGlzIG9uZSB3aWxkIHBhcm94eXNtLCBhbmQgdGhpcyBmZWVsaW5nIHJlYWN0cyB1cG9uIAp0aGUgaHVtYW4gYmVpbmdzIHdobyB1bmNvbnNjaW91c2x5IG1pbmlzdGVyIHRvIHRoZWlyIHBsZWFzdXJlcywgYW5kIGdpdmVzIHRoZW0gCmFsc28gYSBzZW5zYXRpb24gb2YgaW50ZW5zZSBleHVsdGF0aW9uLiAKCgo2NDkuwqDCoMKgwqDCoMKgwqAKSGVyZSB3ZSBzZWUgdGhlIGV4cGxhbmF0aW9uIG9mIHRoZSBwYXNzaW9uYWwgc2lkZSBvZiB0aGVzZSBleHRyYW9yZGluYXJ5IApkaXNwbGF5cy4gQWxsIHRoYXQgdGhlIG5hdHVyZS1zcGlyaXRzIGRlc2lyZSBpcyBpbnRlbnNlIGVtb3Rpb24gb2Ygb25lIGtpbmQgb3IgCm90aGVyIG9uIHRoZSBwYXJ0IG9mIHRoZWlyIGh1bWFuIHNsYXZlcy4gSXQgaXMgbm90aGluZyB0byB0aGVtIHdoZXRoZXIgdGhhdCAKZW1vdGlvbiBiZSByZWxpZ2lvdXMgb3Igc2V4dWFsOyBwcm9iYWJseSB0aGV5IGRvIG5vdCBldmVuIGtub3cgdGhlIGRpZmZlcmVuY2UuIApDZXJ0YWlubHkgdGhleSBjYW5ub3Qga25vdyB3aGV0aGVyIGVpdGhlciBpcyBoZWxwZnVsIG9yIGhhcm1mdWwgdG8gdGhlIGV2b2x1dGlvbiAKb2YgdGhlIGh1bWFuIGJlaW5ncyBjb25jZXJuZWQuIFRoZSB3aG9sZSB0aGluZyBpcyBhIHdpbGQsIG1hZCBvcmdpZSBvZiBub24taHVtYW4gCmVudGl0aWVzLCBwcmVjaXNlbHkgdGhlIHNhbWUgdGhpbmcgYXMgdGhlIG1lZGlhZXZhbCB3aXRjaGVzJyBzYWJiYXRoLCBidXQgCnByb3Zva2VkIGluIHRoaXMgY2FzZSBieSBhbiBlbW90aW9uIHdoaWNoIG1hbnkgY29uc2lkZXIgYXMgYmVsb25naW5nIHRvIHRoZSBnb29kIApzaWRlIGluc3RlYWQgb2YgdG8gdGhlIGV2aWwgc2lkZSBvZiBsaWZlLiBCdXQgdG8gdGhlc2UgbmF0dXJlLXNwaXJpdHMgYWxsIHRoYXQgCm1ha2VzIG5vIGRpZmZlcmVuY2UuIFRoZXkga25vdyBub3RoaW5nIG9mIGdvb2Qgb3IgZXZpbDsgd2hhdCB0aGV5IGVuam95IGlzIHRoZSAKdHJlbWVuZG91cyBleGNpdGVtZW50IHdoaWNoIHRoZXkgY2FuIGdhaW4gb25seSBieSBzd2F5aW5nIG1hc3NlcyBvZiBodW1hbiBiZWluZ3MgCnNpbXVsdGFuZW91c2x5IGludG8gYSBjb25kaXRpb24gaW1taW5lbnRseSBkYW5nZXJvdXMgdG8gdGhlIHNhbml0eSBvZiB0aGVpciAKdmljdGltcy4gTm8gb25lIG1hbiBhbG9uZSBjb3VsZCByZWFjaCBzbyBkYW5nZXJvdXMgYSBsZXZlbCBvZiBleGNpdGVtZW50LiBUaGVyZSAKbXVzdCBiZSBhIGdyZWF0IG51bWJlciByZWFjdGluZyB1cG9uIGFuZCwgYXMgaXQgd2VyZSwgZW5jb3VyYWdpbmcgYW5kIApzdHJlbmd0aGVuaW5nIG9uZSBhbm90aGVyLiBJbmRlZWQsIEkgc2hvdWxkIGFkdmlzZSB0aGUgc3R1ZGVudCBub3QgdG8gYXR0ZW5kIApyZXZpdmFsIG1lZXRpbmdzLCBiZWNhdXNlLCB1bmxlc3MgaGUgaXMgaW4gZ29vZCBoZWFsdGggYW5kIHdlbGwgcG9pc2VkLCB0aGVyZSBpcyAKZGVmaW5pdGUgZGFuZ2VyIHRoYXQgZXZlbiBoZSBtYXkgYmUgc3dlcHQgb2ZmIGhpcyBmZWV0LiAKCgo2NTAuwqDCoMKgwqDCoMKgwqAKSSB3aXNoIGl0IHRvIGJlIGRpc3RpbmN0bHkgdW5kZXJzdG9vZCB0aGF0IGluIHdoYXQgSSBoYXZlIHdyaXR0ZW4gSSBhbSBpbiAKbm8gd2F5IGRlbnlpbmcgdGhlIGdyZWF0IGZhY3QgdGhhdCB3aGF0IGlzIGNhbGxlZCDvv71zdWRkZW4gY29udmVyc2lvbu+/vSBkb2VzIApzb21ldGltZXMgdGFrZSBwbGFjZSwgYW5kIHRoYXQgdGhlIG1hbiB0byB3aG9tIGl0IGhhcHBlbnMgaXMgZXZlciBhZnRlciB0aGUgCmJldHRlciBmb3IgaXQuIFRoZSB3b3JkIGAgY29udmVyc2lvbicgaXMgYSBub2JsZSBvbmUsIGlmIHdlIGNhbiBvbmx5IGRpc3NvY2lhdGUgCml0IGZyb20gc3VjaCB1bmRpZ25pZmllZCBzdXJyb3VuZGluZ3MgYXMgdGhvc2UgdGhhdCBJIGhhdmUgYmVlbiBkZXNjcmliaW5nLiBJdCAKbWVhbnMg77+9dG8gdHVybiBhbG9uZyB3aXRoLO+/vSBhbmQgaXRzIGltcGxpY2F0aW9uIGlzIHRoYXQgdGhlIG1hbiwgd2hvIGhhcyAKaGl0aGVydG8gYmVlbiB3b3JraW5nIGFsb25nIGhpcyBvd24gc2VsZmlzaCByb2FkLCByZWFsaXNlcyBmb3IgdGhlIGZpcnN0IHRpbWUgCnRoZSBtaWdodHkgdHJ1dGggdGhhdCBHb2QgaGFzIGEgcGxhbiBmb3IgbWFuLCBhbmQgdGhhdCBpdCBpcyB3aXRoaW4gaGlzIHBvd2VyIHRvIAphZGFwdCBoaW1zZWxmIGludGVsbGlnZW50bHkgdG8gdGhpcyBwbGFuIGFuZCBmdWxmaWwgdGhlIHBhcnQgaW4gaXQgd2hpY2ggaXMgCmRlc3RpbmVkIGZvciBoaW0uIFdoZW4gaGUgcmVhbGlzZXMgdGhpcywgaGUgdHVybnMgcm91bmQgYW5kIO+/vWdvZXMgdG9nZXRoZXIgd2l0aO+/vSAKdGhlIGRpdmluZSBXaWxsLCBpbnN0ZWFkIG9mIGlnbm9yYW50bHkgd29ya2luZyBhZ2FpbnN0IGl0OyBhbmQgYWZ0ZXIgaGUgaGFzIG9uY2UgCmRvbmUgdGhpcywgYWx0aG91Z2ggaGUgbWF5IGJlY29tZSB3aGF0IHRoZSBDaHJpc3RpYW5zIGNhbGwgYSBiYWNrc2xpZGVyLAphbHRob3VnaCBoaXMgdmVoaWNsZXMgbWF5IHJ1biBhd2F5IHdpdGggaGltLCBhbmQgY2FycnkgaGltIGludG8gYWxsIHNvcnRzIApvZiBleGNlc3NlcywgaGUgY2FuIG5ldmVyIGFnYWluIHNpbiB3aXRob3V0IGZlZWxpbmcgcmVtb3JzZS0tIHdpdGhvdXQga25vd2luZyAKdGhhdCBoZSBoYXMgZmFsbGVuLCBhbmQgcmVncmV0dGluZyB0aGUgZmFsbC4gCgoKNjUxLsKgwqDCoMKgwqDCoMKgClRoaXMga25vd2xlZGdlIG9mIHRoZSBncmVhdCBmYWN0cyBvZiBsaWZlIGlzIGNhbGxlZCBpbiB0aGUgRWFzdCDvv710aGUgCmFjcXVpcmVtZW50IG9mIGRpc2NyaW1pbmF0aW9u77+9IG9yIHNvbWV0aW1lcyDvv710aGUgb3BlbmluZyBvZiB0aGUgZG9vcnMgb2YgdGhlIAptaW5k77+9LiBVc3VhbGx5IGl0IGlzIGEgZ3JhZHVhbCBwcm9jZXNzLCBvciBhdCBsZWFzdCBvbmUgd2hpY2ggY29tZXMgYXMgdGhlIApyZXN1bHQgb2YgY29udGludWFsIHRob3VnaHQgb3IgcmVhc29uaW5nLiBTb21ldGltZXMsIGhvd2V2ZXIsIHRoZSBmaW5hbCAKY29udmljdGlvbiBpcyBib3JuZSBpbiB1cG9uIHRoZSBtYW4gaW4gYW4gaW5zdGFudCwgYW5kIHRoYXQgaXMgYSBjYXNlIG9mIHdoYXQgaXMgCmNhbGxlZCDvv71zdWRkZW4gY29udmVyc2lvbu+/vS4gSWYgdGhlIG1hbiB0byB3aG9tIHRoYXQgaW5zdGFudGFuZW91cyBmbGFzaCBvZiAKY29udmljdGlvbiBjb21lcyBoYXMgcHJldmlvdXNseSByZWFzb25lZCB0aGUgdGhpbmcgb3V0IHdpdGggaGltc2VsZiAocGVyaGFwcyBpbiAKb3RoZXIgbGl2ZXMpIGFuZCBoYXMgYWxtb3N0IHBlcnN1YWRlZCBoaW1zZWxmLCBzbyB0aGF0IGhlIG5lZWRzIG1lcmVseSBhIGZpbmFsIAp0b3VjaCBvZiBpbGx1bWluYXRpb24gdG8gbWFrZSBoaW0gcXVpdGUgY2VydGFpbi0tIHRoZW4gdGhlIGVmZmVjdCBvZiBzdWNoIGEgCmNvbnZlcnNpb24gaXMgcGVybWFuZW50LiBOb3QgdGhhdCwgZXZlbiB0aGVuLCB0aGUgbWFuIG1heSBub3QgZnJlcXVlbnRseSBmYWxsIApiYWNrLCBidXQgaGUgd2lsbCBhbHdheXMgcmVjb3ZlciBmcm9tIHN1Y2ggZmFsbHMsIGFuZCB3aWxsIG9uIHRoZSB3aG9sZSBtYWtlIApzdGVhZHkgcHJvZ3Jlc3MuIAoKCjY1Mi7CoMKgwqDCoMKgwqDCoApBcyBoYXMgYmVlbiBkZXNjcmliZWQsIHRoZSBlbW90aW9uYWwgZWZmZWN0IG9mIGEgZ3JlYXQgcmV2aXZhbCBtZWV0aW5nIGlzIAp2ZXJ5IHBvd2VyZnVsLiBOb3Qgb25seSB3aWxsIGl0IGdpdmUgdGhlIGxpdHRsZSBhZGRpdGlvbmFsIHRvdWNoIHdoaWNoIGlzIG5lZWRlZCAKZm9yIHRoZSBgIGNvbnZlcnNpb24nIG9mIGEgbWFuIHdobyBpcyBuZWFybHkgcmVhZHkgZm9yIHRoYXQgcHJvY2VzcywgYnV0IGl0IHdpbGwgCnNvbWV0aW1lcyBzZWl6ZSB1cG9uIGEgbWFuIHdobyBpcyBhcyB5ZXQgYnkgbm8gbWVhbnMgcmVhZHksIGFuZCBpdCBtYXkgYmUgCnBvd2VyZnVsIGVub3VnaCB0byBzd2luZyBoaW0gb3ZlciB0aGUgZGl2aWRpbmcgbGluZSwgYW5kIG1ha2UgaGltIHByb2Zlc3MgCmhpbXNlbGYgZm9yIHRoZSBtb21lbnQgKGFuZCBxdWl0ZSBob25lc3RseSkgYXMgaGVhcnRpbHkgY29udmVydGVkIGFzIHRoZSBvdGhlci4gCkJ1dCB0aGUgcGVybWFuZW50IGVmZmVjdCBpcyBieSBubyBtZWFucyB0aGUgc2FtZS4gSW4gdGhpcyBsYXR0ZXIgY2FzZSwgdGhlIG1hbiAKaXMgbm90IHJlYWxseSByZWFkeTsgdGhlcmUgaXMgYSB2YXN0IGFtb3VudCBvZiBmb3JjZSBzdGlsbCB1bmNvbnRyb2xsZWQgaW4gdGhlIApsb3dlciBwYXJ0IG9mIGhpcyBuYXR1cmUsIGFuZCBhbHRob3VnaCB0aGF0IHdhcyBmb3IgdGhlIHRpbWUgZG9taW5hdGVkIGJ5IHRoZSAKZm9yY2VzIHByZXNlbnQgYXQgdGhlIHJldml2YWwgbWVldGluZywgd2hlbiB0aGF0IGlzIG92ZXIgaXQgcmVhc3NlcnRzIGl0c2VsZiwgCmFuZCB0aGUgbWFuIGluZXZpdGFibHkgZmFsbHMgYmFjayBhZ2FpbiBpbnRvIGhpcyBmb3JtZXIgY291cnNlcy4gV2UgbXVzdCBub3QgCmJsYW1lIGhpbSBmb3IgdGhhdDsgdGhlIHN0cmVuZ3RoIHdoaWNoIGlzIG5lZWRlZCBmb3IgdGhlIHBlcm1hbmVudCBjb250cm9sIG9mIAp0aGUgbG93ZXIgbmF0dXJlIGdyb3dzIHZlcnkgc2xvd2x5LCBhbmQgaXQgd291bGQgYmUgdW5yZWFzb25hYmxlIHRvIGV4cGVjdCB0aGF0IAppdCBjYW4gZXZlciBiZSBkZXZlbG9wZWQgaW4gYSBtb21lbnQgb2YgZW50aHVzaWFzbS4gVGhlIGNhc2VzIGluIHdoaWNoIGl0IAphcHBlYXJzIHRvIGJlIHNvIGRldmVsb3BlZCBhcmUgc2ltcGx5IHRob3NlIGluIHdoaWNoIHRoZSBmb3JjZSBoYXMgYmVlbiBzZWNyZXRseSAKZ2F0aGVyaW5nIGl0c2VsZiBmb3IgYSBsb25nIHRpbWUgcHJldmlvdXNseS4gCgoKNjUzLsKgwqDCoMKgwqDCoMKgClRoZXJlZm9yZSBJIHNheSBhZ2FpbiB0aGF0IEkgZG8gbm90IGZvciBhIG1vbWVudCBkZW55IHRoZSBvY2Nhc2lvbmFsIApyZWFsaXR5IG9mIHN1ZGRlbiBjb252ZXJzaW9uczsgSSBkbyBub3QgZGVueSB0aGF0IGEgY2VydGFpbiBhbW91bnQgb2YgZ29vZCBtdXN0IApmb2xsb3cgZnJvbSBhbGwgdGhlIGRldm90aW9uYWwgZW50aHVzaWFzbSB3aGljaCBpcyB0aHJvd24gaW50byBhIHJlbGlnaW91cyAKcmV2aXZhbC4gQnV0IEkgYWxzbyBzYXkgdGhhdCBldmVyeSB3b3JkIHRoYXQgSSBoYXZlIHdyaXR0ZW4gYWJvdmUgYXMgdG8gdGhlIApnZW5lcmFsIGVmZmVjdCBvZiBzdWNoIGdhdGhlcmluZ3MsIGFuZCB0aGUgcGFydCB0YWtlbiBpbiB0aGVtIGJ5IG5vbi1odW1hbiAKZW50aXRpZXMsIGlzIGFic29sdXRlbHkgdHJ1ZTsgYW5kIGZvciB0aGF0IHJlYXNvbiBJIGNhbm5vdCBidXQgdGhpbmsgdGhhdCBzdWNoIApleGNpdGVtZW50IHNob3VsZCBiZSBhdm9pZGVkIGJ5IHRoZSBzdHVkZW50IG9mIG9jY3VsdGlzbS4gCgoKNjU0LsKgwqDCoMKgwqDCoMKgCkluIHRoZSByYXJlIGNhc2VzIHdoZXJlIGEgdmFzdCBjcm93ZCBpcyBtb3ZlZCBieSBhIGRvbWluYW50IGlkZWEgd2hpY2ggaXMgCndob2xseSB1bnNlbGZpc2gsIHF1aXRlIGEgZGlmZmVyZW50IG9yZGVyIG9mIGVudGl0aWVzIGNvbWVzIGludG8gcGxheS0tIHRoZSAKYXN0cmFsIGFuZ2Vscywgd2hvIGhhdmUgYW4gYWN0aXZlIGRlbGlnaHQgaW4gZ29vZC4gVW5kZXIgc3VjaCBndWlkYW5jZSBhcyAKdGhlaXJzLCB0aGUgZXhjZXNzaXZlIHRlbXBvcmFyeSB2aWJyYXRpb24gaXMgc2FmZSBhbmQgZXZlbiBoZWxwZnVsLCBmb3IgdGhlc2UgCmJlaW5ncyB1bmRlcnN0YW5kIGh1bWFuaXR5IGFuZCBrbm93IGhvdyB0byBicmluZyBpdCBiYWNrIGFnYWluIHNhZmVseSBpbnRvIGl0cyAKb3JkaW5hcnkgY29uZGl0aW9uLiAKCgo2NTUuwqDCoMKgwqDCoMKgwqAKU29tZSB5ZWFycyBhZ28gSSBoYXBwZW5lZCB0byBzZWUgYSByZW1hcmthYmxlIGluc3RhbmNlIG9mIHRoaXMgd2hpY2ggSSAKd2lsbCBwcmVzZW50bHkgZGVzY3JpYmUsIGJ1dCBJIG11c3QgZmlyc3Qgc2F5IGEgZmV3IHdvcmRzIGFzIHRvIHRoZSB2aXJ0dWUgd2hpY2ggCmNhdXNlZCB0aGUgb3V0YnVyc3QuIEZvciB0aGUgd2hvbGUgZGlmZmVyZW5jZSBpcyBpbiB0aGUgbW90aXZlOiBpbiB0aGUgY2FzZSAKcHJldmlvdXNseSBkZXNjcmliZWQgaXQgd2FzIGZ1bmRhbWVudGFsbHkgc2VsZmlzaCwgYnV0IGluIHRoaXMgaXQgd2FzIHVuc2VsZmlzaDsgCmluIHRoYXQgaXQgd2FzIHRoZSBob3BlIG9mIHBlcnNvbmFsIHNhbHZhdGlvbiwgaW4gdGhpcyBpdCB3YXMgbG95YWx0eSBhbmQgCnBhdHJpb3Rpc20uIAoKCjY1Ni7CoMKgwqDCoMKgwqDCoApBIFdBVkUgT0YgUEFUUklPVElTTSAKCgo2NTcuwqDCoMKgwqDCoMKgwqAKUGF0cmlvdGlzbSBpcyBhIHZpcnR1ZSB1cG9uIHdoaWNoIGluIHRoZXNlIGRheXMgaXQgaXMgdmVyeSBuZWNlc3NhcnkgdG8gCmluc2lzdC4gQnV0IHdlIG11c3QgYmUgc3VyZSBvZiB3aGF0IHdlIG1lYW4gYnkgdGhlIHRlcm0uIEl0IGlzIG5vdCBwcmVqdWRpY2UsIApub3IgaXMgaXQgaWxsLW1hbm5lcmVkIGJvYXN0aW5nLiBUaGVyZSBhcmUgdGhvc2Ugd2hvIGNhbiBzZWUgbm8gZ29vZCBpbiBhbnkgCmNvdW50cnkgYnV0IHRoZWlyIG93biwgd2hvIGFyZSBjb25zdGFudGx5IHZhdW50aW5nIHdpdGggb2ZmZW5zaXZlIHN3YWdnZXIgd2hhdCAKdGhleSBjb25zaWRlciBpdHMgc3VwZXJsYXRpdmUgZXhjZWxsZW5jaWVzLCBhbmQgZGlzcGFyYWdpbmcgYWxsIG90aGVycy4gVGhlc2UgCmFyZSBub3QgcGF0cmlvdHMsIGJ1dCBtZXJlIGJyYWdnYXJ0czogdGhleSBleGhpYml0IG5vdCB0aGUgc3RyZW5ndGggb2YgdGhlaXIgCmxveWFsdHksIGJ1dCB0aGUgZGVwdGggb2YgdGhlaXIgaWdub3JhbmNlLiAKCgo2NTguwqDCoMKgwqDCoMKgwqAKVHJ1ZSBwYXRyaW90aXNtIGlzIHRoZSB2ZXJ5IGFudGl0aGVzaXMgb2YgYWxsIHRoaXM7IGl0IHJlY29nbmlzZXMgdGhhdCAKZWFjaCBjb3VudHJ5IGhhcyBpdHMgYWR2YW50YWdlcyBhbmQgaXRzIGRpc2FkdmFudGFnZXMsIHRoYXQgZWFjaCBuYXRpb24gaGFzIGl0cyAKZXhjZWxsZW5jaWVzLCBidXQgYWxzbyBhbHdheXMgaXRzIGRlZmljaWVuY2llcywgc2luY2Ugbm8gcG9saXRpY2FsIG9yIHNvY2lhbCAKc2NoZW1lIGlzIHlldCBwZXJmZWN0LCBhbmQgdGhlcmUgaXMgYSBnb29kIGRlYWwgb2YgaHVtYW4gbmF0dXJlIGV2ZXJ5d2hlcmUuIApOZXZlcnRoZWxlc3MgaXQgYWxzbyBzZWVzIHRoYXQganVzdCBhcyBtYW4gb3dlcyBjb25zaWRlcmF0aW9uIHRvIHRoZSBwYXJlbnRzIHdobyAKaGF2ZSB0ZW5kZWQgaGltIGFuZCB0byB0aGUgZmFtaWx5IG9mIHdoaWNoIGhlIGZpbmRzIGhpbXNlbGYgYSBwYXJ0LCBzbyBkb2VzIGhlIAphbHNvIG93ZSBzb21ldGhpbmcgdG8gdGhlIGNvdW50cnkgaW50byB3aGljaCBoZSBpcyBib3JuLCBmb3IgdGhhdCBiaXJ0aCBpcyBub3QgYSAKbWF0dGVyIG9mIGNoYW5jZSBidXQgb2Yga2FybWEuIEhlIGlzIHB1dCB0aGVyZSBiZWNhdXNlIHRoZXNlIGFyZSB0aGUgCnN1cnJvdW5kaW5ncyB0aGF0IGhlIGhhcyBkZXNlcnZlZCwgYW5kIHRoZXkgYXJlIGFsc28gdGhvc2UgYmVzdCBzdWl0ZWQgdG8gaGVscCAKb253YXJkIGhpcyBldm9sdXRpb24uIEhlIGlzIHB1dCB0aGVyZSBub3QgdG8gcmVjZWl2ZSBvbmx5LCBidXQgdG8gZ2l2ZTsgZm9yIG1hbiAKbGVhcm5zIGJlc3QgYnkgc2VydmljZS4gVGh1cyBoZSBzaG91bGQgYmUgcHJlcGFyZWQgd2hlbiBjYWxsZWQgdXBvbiB0byB3b3JrIGZvciAKaGlzIGNvdW50cnk7IGhlIHNob3VsZCBhY3F1aWVzY2UgY2hlZXJmdWxseSBpbiBzdWNoIG1lYXN1cmVzIGFzIG1heSBiZSBuZWNlc3NhcnkgCmZvciB0aGUgZ2VuZXJhbCBnb29kLCBldmVuIHRob3VnaCB0aGV5IG1heSBicmluZyBsb3NzIHRvIGhpbSBpbmRpdmlkdWFsbHk7IGhlIApzaG91bGQgZm9yZ2V0IGZvciBoaXMgY291bnRyeScgcyBzYWtlIGhpcyBwcml2YXRlIGludGVyZXN0cyBhbmQgZGVzaXJlcywgYW5kIAp3aGVuIHRoZSBvcHBvcnR1bml0eSBhcmlzZXMgaGUgc2hvdWxkIGdpdmUgaGltc2VsZiB1bnNwYXJpbmdseSB0byBoZXIgc2VydmljZS4KCgo2NTkuwqDCoMKgwqDCoMKgwqAKSSBhbSBhd2FyZSB0aGF0LCBhbW9uZyBzdHVkZW50cyBvZiB3aGF0IGlzIGNhbGxlZCBhZHZhbmNlZCB0aG91Z2h0LCB0aGVyZSAKYXJlIHRob3NlIHdobyBzbmVlciBhdCBwYXRyaW90aXNtIGFzIGEgdmlydHVlIHdoaWNoIGlzIGhhbGYgYSB2aWNlLS0gYXMgYW4gCmV2aWRlbmNlIG9mIGEgbG93IHN0YWdlIG9mIGRldmVsb3BtZW50LiBCdXQgdGhhdCBpcyBhIG1pc3Rha2VuIHZpZXc6IGFzIHdlbGwgCm1pZ2h0IG9uZSByYWlsIGF0IGZhbWlseSBhZmZlY3Rpb24gZm9yIGV4YWN0bHkgdGhlIHNhbWUgcmVhc29ucy4gVHJ1bHkgYm90aCBsb3ZlIApmb3IgZmFtaWx5IGFuZCBsb3ZlIGZvciBjb3VudHJ5IGFyZSBtb3JlIGxpbWl0ZWQgdGhhbiB1bml2ZXJzYWwgbG92ZSwgYnV0IHRoZXkgCmFyZSBuZXZlcnRoZWxlc3Mgc3RhZ2VzIG9uIHRoZSB3YXkgdG8gaXQuIElmIHByaW1pdGl2ZSBtYW4gdGhpbmtzIG9ubHkgZm9yIApoaW1zZWxmLCBpdCBpcyBhbiBhZHZhbmNlIGZvciBoaW0gdG8gZXh0ZW5kIGhpcyBsb3ZlIHRvIHRoYXQgd2lkZXIgc2VsZiB3aGljaCB3ZSAKY2FsbCB0aGUgZmFtaWx5LCBhbmQgdG8gbGVhcm4gdG8gZmVlbCBhbmQgdG8gdGhpbmsgZm9yIGhpcyBuYXRpb24gaXMgYnV0IGEgCmZ1cnRoZXIgc3RlcCBvbiB0aGUgc2FtZSByb2FkLiBMYXRlciBzdGlsbCBoZSB3aWxsIGxlYXJuIHRvIHRoaW5rIGFuZCB0byBmZWVsIApmb3IgaHVtYW5pdHkgYXMgYSB3aG9sZSwgYW5kIHRoZW4gaGUgd2lsbCBjb21lIHRvIHNlZSB0aGF0IHRoZSBhbmltYWwgYW5kIHRoZSAKcGxhbnQgYXJlIG91ciBicm90aGVycywgZXZlbiB0aG91Z2ggdGhleSBtYXkgYmUgeW91bmdlciBicm90aGVycywgYW5kIHRoYXQgYWxsIApsaWZlIGlzIHRoZSBkaXZpbmUgTGlmZSwgYW5kIHNvIHRoZSBsb3ZlIHdoaWNoIHdhcyBvbmNlIGNvbmZpbmVkIHRvIGhpbXNlbGYsIHRvIApoaXMgZmFtaWx5LCB0byBoaXMgY2xhbiwgdG8gaGlzIG5hdGlvbiwgaGFzIGJlY29tZSB3aWRlIGFzIHRoZSBzaG9yZWxlc3Mgc2VhIG9mIAp0aGUgZGl2aW5lIExvdmUuIAoKCjY2MC7CoMKgwqDCoMKgwqDCoApCdXQgYSB2ZXJ5IG5lY2Vzc2FyeSBzdGFnZSBvbiB0aGUgd2F5IHRvIHRoaXMgZ29hbCBpcyB0aGF0IHBhdHJpb3Rpc20gCndoaWNoIGxlYWRzIGEgbWFuIHRvIGZvcmVnbyBoaXMgb3duIGVhc2UgYW5kIGNvbWZvcnQsIHRvIHB1dCBhc2lkZSBoaXMgcHJpdmF0ZSAKb3Bwb3J0dW5pdGllcyBvZiBnYWluLCBuYXksIHRvIHNhY3JpZmljZSBoaXMgdmVyeSBsaWZlLCBpbiBvcmRlciB0byBzZXJ2ZSBoaXMgCmNvdW50cnkuIE5hdHVyYWxseSBhbHNvIGhlIHBlcnNvbmlmaWVzIGhpcyBjb3VudHJ5IGluIHRoZSBwZXJzb24gb2YgaGVyIHJ1bGVyLCAKYW5kIHNvIGlzIGRldmVsb3BlZCB0aGUgb3RoZXIgdmlydHVlIG9mIGxveWFsdHksIGFuZCBoaXMgY2hhcmFjdGVyIGlzIHRoZXJlYnkgCmdyZWF0bHkgZWxldmF0ZWQgYW5kIHB1cmlmaWVkLiBUaGF0IGluZGl2aWR1YWwga2luZ3MgaGF2ZSBpbiB0aGUgcGFzdCBvZnRlbiBiZWVuIAp1bndvcnRoeSBvZiB0aGlzIGhpZ2ggZmVlbGluZyBpcyBhIHNhZCBmYWN0LCBidXQgaXQgZG9lcyBub3QgaW50ZXJmZXJlIHdpdGggdGhlIApvdGhlciBmYWN0IG9mIHRoZSBiZW5lZml0IHdoaWNoIGFjY3J1ZXMgdG8gdGhvc2UgaW4gd2hvbSBzdWNoIGZlZWxpbmcgaXMgZXZva2VkLiAKV2hlbiBpdCBmb3J0dW5hdGVseSBoYXBwZW5zIHRoYXQgdGhlIHNvdmVyZWlnbiBpcyBhbGwgdGhhdCBhIHJ1bGVyIHNob3VsZCBiZSwgd2UgCmhhdmUgYSBjb2xsb2NhdGlvbiBvZiBjaXJjdW1zdGFuY2VzIGluIHdoaWNoIGxveWFsdHkgY2FuIHdvcmsgd2l0aCBpdHMgZ3JlYXRlc3QgCmVmZmVjdCwgYW5kIHNwbGVuZGlkIHJlc3VsdHMgbWF5IGJlIGFjaGlldmVkIGJvdGggZm9yIHRoZSBLaW5nIGFuZCBoaXMgcGVvcGxlLgoKCjY2MS7CoMKgwqDCoMKgwqDCoApBIHJlbWFya2FibGUgaW5zdGFuY2Ugb2YgdGhpcyB3YXMgc2VlbiBpbiB0aGUgZW50aHVzaWFzbSBldm9rZWQgYnkgdGhlIApjZWxlYnJhdGlvbiBvZiB0aGUgRGlhbW9uZCBKdWJpbGVlIG9mIHRoZSBsYXRlIFF1ZWVuIFZpY3RvcmlhLiBGb3IgdGhvc2Ugd2hvIApjb3VsZCBzZWUgaXQsIHRoZSBpbm5lciBzaWRlIG9mIHRoZSBwcm9jZWVkaW5ncyBvZiB0aGF0IGRheSB3YXMgYSBzcGVjdGFjbGUgCm5ldmVyIHRvIGJlIGZvcmdvdHRlbi4gCgoKNjYyLsKgwqDCoMKgwqDCoMKgCkl0IGhhcHBlbmVkIHRoYXQgb24gdGhhdCBvY2Nhc2lvbiBJIGhhZCwgdGhyb3VnaCB0aGUga2luZG5lc3Mgb2YgYSAKZnJpZW5kLCBhIHNlYXQgYXQgb25lIG9mIHRoZSBvZmZpY2Utd2luZG93cyBpbiB0aGUgQ2l0eSBvbiB0aGUgcm91dGUgb2YgdGhlIApncmVhdCBwcm9jZXNzaW9uLiBFdmVuIGZyb20gdGhlIHBoeXNpY2FsIHBvaW50IG9mIHZpZXcsIHRoZSBkZWNvcmF0aW9ucyBoYWQgCnRyYW5zZm9ybWVkIHRoZSBnbG9vbXkgTG9uZG9uIHN0cmVldHMuIFRoZSB3aG9sZSBvZiB0aGUgZnJvbnRzIG9mIHRoZSB0YWxsIApob3VzZXMgb24gYm90aCBzaWRlcyBvZiB0aGUgZGluZ3kgc3RyZWV0IHdlcmUgY292ZXJlZCB3aXRoIGEgc29ydCBvZiBzY2FmZm9sZGluZyAKd2hpY2ggZm9ybWVkIHRlbXBvcmFyeSBiYWxjb25pZXMgdG8gZWFjaCBvZiB0aGUgd2luZG93cywgYW5kIGFsbCB0aGVzZSB3ZXJlIApjbG9zZWx5IHBhY2tlZCB3aXRoIG1lbiwgd29tZW4gYW5kIGNoaWxkcmVuLCBzbyB0aGF0IHRoZSBncmltIGhvdXNlLWZyb250cyB3ZXJlIApsaWtlIGNsaWZmcyBsaW5lZCB3aXRoIGZhY2VzLCByaXNpbmcgdGllciBhYm92ZSB0aWVyLCBhbmQgdGhlIHByb2Nlc3Npb24gd291bmQgCml0cyB3YXkgYXQgdGhlIGZvb3QsIGFzIGFsb25nIGEgZ29yZ2Ugd2hvc2Ugc2lkZXMgd2VyZSBidWlsdCBvZiBodW1hbiBib2RpZXMuCgoKNjYzLsKgwqDCoMKgwqDCoMKgCk1vc3RseSB0aGUgcGVvcGxlIHdlcmUgYnVzaW5lc3MgbWVuIHdpdGggdGhlaXIgd2l2ZXMgYW5kIGZhbWlsaWVzLCBhbmQgCmNvdW50cnkgZnJpZW5kczsgYW5kIHRoZXNlIGxhdHRlciBpbnRyb2R1Y2VkIGFuIGVsZW1lbnQgb2YgZ2FpZXR5IGFuZCBjdXJpb3NpdHkgCnRvIHdoaWNoIHRob3NlIHN0ZXJuLCBkYXJrIENpdHkgc3RyZWV0cyBhcmUgdW5hY2N1c3RvbWVkLCBmb3IgYXMgYSBydWxlIHRoZSAKcGVvcGxlIGdhdmUgdGhlbXNlbHZlcyB1cCB0byB0aGUgZW5qb3ltZW50IG9mIHRoZSBvY2Nhc2lvbiwgYW5kIHRvIHRoZSAKY3JpdGljaXNpbmcgb2YgdGhlaXIgbmVpZ2hib3VycycgdG9pbGV0cy4gVGhlIENpdHkgbWVuIHRoZW1zZWx2ZXMgd2VyZSBpbiB0aGUgCm1ham9yaXR5IG9mIGNhc2VzIHVuYWJsZSB0byBzaGFrZSBvZmYgdGhlaXIgYW54aWV0aWVzLCBhbmQgd2VyZSB0byBiZSBzZWVuIHN0aWxsIApzdXJyb3VuZGVkIGJ5IHRob3VnaHQtZm9ybXMgb2YgcHJpY2VzIGFuZCBwZXJjZW50YWdlcy4gT2NjYXNpb25hbGx5IGEgcHJpdmlsZWdlZCAKY2FycmlhZ2Ugd291bGQgZGFzaCBieSwgb3IgYSByZWdpbWVudCBvZiBzb2xkaWVycyBvbiBpdHMgd2F5IHRvIHRha2UgcGFydCBpbiB0aGUgCnBhZ2VhbnQ7IGJ1dCB0aG9zZSByYXJlbHkgY2xhaW1lZCBtb3JlIHRoYW4gYSBtb21lbnQnIHMgYXR0ZW50aW9uIGZyb20gdGhlc2UgCmJ1c2luZXNzIG1lbiwgd2hvIGNvbGxhcHNlZCBhbG1vc3QgaW1tZWRpYXRlbHkgaW50byB0aGVpciBjYWxjdWxhdGlvbnMgYWdhaW4uIApFdmVuIHdoZW4gYXQgbGFzdCB0aGUgZ3JlYXQgcHJvY2Vzc2lvbiBpdHNlbGYgYXBwZWFyZWQsIHRoZWlyIGludGVyZXN0IGluIGl0IHdhcyAKYnV0IGhhbGYtaGVhcnRlZCwgYW5kIHRoZXkgc2F3IGl0IGFnYWluc3QgYSBiYWNrZ3JvdW5kIG9mIHN0b2NrcyBhbmQgc2hhcmVzIGFuZCAKZmluYW5jaWFsIGFueGlldHkuIAoKCjY2NC7CoMKgwqDCoMKgwqDCoApOb3cgYW5kIGFnYWluIHNvbWUgc3BlY2lhbGx5IHBvcHVsYXIgdmlzaXRvciByZWNlaXZlZCBhIGxpdHRsZSBvdmF0aW9uLCAKYnV0IG9uIHRoZSB3aG9sZSB0aGUgYXN0cmFsIGFwcGVhcmFuY2Ugb2YgdGhhdCBodWdlIGNyb3dkIGRpZmZlcmVkIGxpdHRsZSBhdCAKdGhhdCBwZXJpb2QgZnJvbSB0aGF0IG9mIG90aGVyIHNpbWlsYXIgZ2F0aGVyaW5ncy4gVGhlIGRlbGlnaHQgb2YgdGhlIGNoaWxkcmVuIAphdCBzbyB1bnVzdWFsIGEgaG9saWRheSBzaG93ZWQgaXRzZWxmIGluIG1hbnkgYSBmbGFzaCBhbmQgY29ydXNjYXRpb24gb2YgY29sb3VyLCAKd2hpbGUgdGhlaXIgZmF0aGVycycgdGhvdWdodHMgZnJlcXVlbnRseSBvZmZlcmVkIHRoZSB1bmZhdm91cmFibGUgY29udHJhc3Qgb2YgCmRhcmsgYW5kIGxlYWRlbiBwYXRjaGVzLCBibG90cyB1cG9uIHRoZSB2YXJpZWdhdGVkIGJyaWxsaWFuY3kgb2YgdGhlIHNjZW5lLCBmb3IgCnRoZXkgd2VyZSBidXQgbGl0dGxlIGFmZmVjdGVkIGJ5IHRoZSB3YXZlcyBvZiBleGNpdGVtZW50IHdoaWNoIHdlcmUgYmVnaW5uaW5nIHRvIApsZWFwIGFjcm9zcyBmcm9tIHNpZGUgdG8gc2lkZSBvZiB0aGUgc3RyZWV0LiBCdXQgdGhlIHZpYnJhdGlvbiBvZiBmZWVsaW5nIGdyZXcgCnN0cm9uZ2VyIGFuZCBzdHJvbmdlciwgYW5kIHdoZW4gdGhlIHNwbGVuZG91ciBvZiB0aGF0IG1hcnZlbGxvdXMgcGFnZWFudCAKY3VsbWluYXRlZCBpbiB0aGUgYXBwcm9hY2ggb2YgdGhlIFF1ZWVuIGhlcnNlbGYsIGEgc3RhcnRsaW5nIGNoYW5nZSB0b29rIHBsYWNlLCAKZm9yIGFsbCB0aGUgdGhvdXNhbmRzIG9mIGxpdHRsZSBsb2NhbCBmbGFzaGVzIGFuZCB2b3J0aWNlcyBvZiBjb2xvdXIgZGlzYXBwZWFyZWQgCnV0dGVybHksIG92ZXJ3aGVsbWVkIGluIHRoZSB0cmVtZW5kb3VzIGNhdGFyYWN0IG9mIG1pbmdsZWQgYmx1ZSBhbmQgcm9zZSBhbmQgCnZpb2xldCwgd2hpY2ggd2FzIHBvdXJpbmcgbGlrZSBhIHZlcml0YWJsZSBOaWFnYXJhIGRvd24gYm90aCBzaWRlcyBvZiB0aGF0IApsaXZpbmcgdmFsbGV5IG9mIGZhY2VzLiAKCgo2NjUuwqDCoMKgwqDCoMKgwqAKTGl0ZXJhbGx5IHRoZSBvbmx5IGNvbXBhcmlzb24gcG9zc2libGUgZm9yIGl0IHdhcyB0aGF0IHNtb290aCwgcmVzaXN0bGVzcyAKcnVzaCB3aGljaCBpcyBzbyBpbXByZXNzaXZlIGFzIG9uZSBsb29rcyB1cCBmcm9tIGJlbG93IGF0IHRoZSBncmVhdGVzdCB3YXRlcmZhbGwgCm9mIHRoZSB3b3JsZCwgYnV0IGhlcmUgaXQgd2FzIGNvbWJpbmVkIHdpdGggYSB3ZWFsdGggb2YgaW5kZXNjcmliYWJseSBnbG9yaW91cyAKY29sb3VyIGZhciBiZXlvbmQgYW55IGNvbmNlcHRpb24gb24gdGhlIHBoeXNpY2FsIHBsYW5lLiBObyB3b3JkcyBjYW4gZ2l2ZSBhbnkgCmlkZWEgb2YgdGhlIGVmZmVjdCBvZiB0aGF0IHRyZW1lbmRvdXMgb3V0YnVyc3Qgb2Ygc2ltdWx0YW5lb3VzIGVudGh1c2lhc20sIHRoYXQgCmNvcnVzY2F0aW5nIGNhc2NhZGUgb2YgbG92ZSBhbmQgbG95YWx0eSBhbmQgdmVuZXJhdGlvbiwgYWxsIGNvbnZlcmdpbmcgdXBvbiB0aGUgCmNhcnJpYWdlIGluIHdoaWNoIHRoZSBSb3lhbCBMYWR5IHNhdCwgdW5yZXN0cmFpbmVkbHkgd2VlcGluZyBpbiBzeW1wYXRoeSB3aXRoIAp0aGUgb3ZlcmZsb3dpbmcgZW1vdGlvbiBvZiBoZXIgc3ViamVjdHMuIFllcywgYW5kIGhlciBzdWJqZWN0cyB3ZXB0IGFsc28tLSB3ZXB0IApmb3IgcHVyZSBqb3kgYW5kIGRlcHRoIG9mIGZlZWxpbmctLSBhbmQgdGhvc2UgaGFyZC1oZWFkZWQgYnVzaW5lc3MgbWVuIGZvcmdvdCAKdGhlaXIgY2FsY3VsYXRpb25zIGFuZCB0aGVpciBhbnhpZXRpZXMsIGZvcmdvdCB0aGVtc2VsdmVzIGFuZCB0aGVpciBzb3JkaWQgCmZpbmFuY2lhbCBjb25zaWRlcmF0aW9ucyB1dHRlcmx5IGZvciB0aGUgdGltZSwgYW5kIHdlcmUgdHJhbnNwb3J0ZWQgaW50byBhIApoaWdoZXIgd29ybGQsIGxpZnRlZCBjbGVhciBvdXQgb2YgdGhlbXNlbHZlcywgdXAgdG8gYSBwbGFuZSBvZiB0aG91Z2h0IGFuZCAKZmVlbGluZyB3aGljaCBtYW55IG9mIHRoZW0gaGFkIG5vdCB0b3VjaGVkIHNpbmNlIGVhcmx5IGRheXMgb2YgaW5ub2NlbnQgCmNoaWxkaG9vZC4gCgoKNjY2LsKgwqDCoMKgwqDCoMKgCkFuIHVuaXF1ZSBleHBlcmllbmNlLCBub3QgZWFzaWx5IHRvIGJlIGhhZCBpbiBwcm9zYWljIHRpbWVzIGxpa2UgdGhlc2UsIApidXQgYSBtb3N0IHNhbHV0YXJ5IG9uZSwgd2hpY2ggY291bGQgbm90IGJ1dCBsZWF2ZSBhIGJlbmVmaWNpYWwgaW1wcmVzc2lvbiB1cG9uIApldmVyeW9uZSB3aG8gcGFzc2VkIHRocm91Z2ggaXQuIFRoYXQgc3Ryb25nIHNvdWwtc2hha2luZyB3YXMgdHJhbnNpZW50LCBubyAKZG91YnQsIHlldCBldmVyeSBoZWFydCBoYWQgZm9yIHRoZSBtb21lbnQgYmVlbiBzdGlycmVkIHRvIGl0cyBwcm9mb3VuZGVzdCBkZXB0aHMgCmJ5IG5vYmxlLCB1bnNlbGZpc2ggZW1vdGlvbiwgYW5kIGV2ZXJ5IGhlYXJ0IHdhcyB0aGUgYmV0dGVyIGZvciBpdC4gCgoKNjY3LsKgwqDCoMKgwqDCoMKgCkEgc2ltaWxhciBhbmQgZXZlbiBtb3JlIHNwbGVuZGlkIGV4aGliaXRpb24gb2YgdW5zZWxmaXNoIGVtb3Rpb24gaGFzIAp0YWtlbiBwbGFjZSByZWNlbnRseSBhdCB0aGUgQ29yb25hdGlvbiBvZiBIaXMgTWFqZXN0eSBLaW5nIEdlb3JnZSBWLiBJIGhhZCBub3QgCm15c2VsZiB0aGUgcHJpdmlsZWdlIG9mIHNlZWluZyB0aGF0IGluIHRoZSBwaHlzaWNhbCBib2R5OyBidXQgYW4gYWNjb3VudCBmcm9tIAp0aG9zZSBjbGFpcnZveWFudHMgd2hvIGRpZCBzZWUgaXQgc2hvd3MgdGhhdCBpdCBtdXN0IGhhdmUgc3VycGFzc2VkIGV2ZW4gdGhhdCAKb3RoZXIgZGVtb25zdHJhdGlvbi4gCgoKNjY4LsKgwqDCoMKgwqDCoMKgCldBUiAKCgo2NjkuwqDCoMKgwqDCoMKgwqAKQW5vdGhlciBvY2Nhc2lvbmFsIGV2ZW50LS0gaGFwcGlseSB2ZXJ5IG9jY2FzaW9uYWwgYW5kIGdyb3dpbmcgcmFyZXIgYW5kIApyYXJlci0tIHdoaWNoIHByb2ZvdW5kbHkgc3RpcnMgdGhlIGhlYXJ0cyBvZiB0aGUgcGVvcGxlLCBpcyB3YXIuIE5vdyBJIHN1cHBvc2UgCnRoYXQgZmV3IGF0IHRoZSBwcmVzZW50IGRheSB3b3VsZCB2ZW50dXJlIHRvIGRlbnkgdGhhdCB3YXIgaXMgYW4gYWJzdXJkIGFuZCAKYXRyb2Npb3VzIGFuYWNocm9uaXNtLiBJZiB3ZSBwYXVzZSBmb3IgYSBtb21lbnQgdG8gdGhpbmssIHdlIGFsbCBrbm93IHBlcmZlY3RseSAKd2VsbCB0aGF0IHRoZSByZXN1bHQgb2YgYSBiYXR0bGUgZG9lcyBub3QgaW4gdGhlIGxlYXN0IGRlY2lkZSB0aGUgb3JpZ2luYWwgCnF1ZXN0aW9uIGF0IGlzc3VlLiBJdCBtYXkgc2hvdyB3aGljaCBhcm15IGhhcyB0aGUgY2xldmVyZXN0IGdlbmVyYWwgb3IgdGhlIApncmVhdGVzdCB3ZWlnaHQgb2YgYXJ0aWxsZXJ5OyBpdCBjZXJ0YWlubHkgZG9lcyBub3Qgc2hvdyB3aGljaCBzaWRlIGlzIAppbiB0aGUgcmlnaHQgaW4gdGhlIHF1YXJyZWwsIGlmIHRoZXJlIGJlIGFueSByaWdodC4gU28gZmFyIGFzIGluZGl2aWR1YWxzIGFyZSAKY29uY2VybmVkLCBhbGwgZXhjZXB0IHRoZSB2ZXJ5IGxvd2VzdCBjbGFzc2VzIGhhdmUgcGFzc2VkIGJleW9uZCB0aGUgc3RhZ2Ugb2YgCmF0dGVtcHRpbmcgdG8gZGVjaWRlIHBlcnNvbmFsIGRpc3B1dGVzIGJ5IG9yZGVhbCBvZiBiYXR0bGU7IHdoZW4gb3VyIGNvbnZpY3Rpb25zIAphcyB0byBhIGJvdW5kYXJ5IGxpbmUgZGlmZmVyIHByb25vdW5jZWRseSBmcm9tIG91ciBuZWlnaGJvdXInIHMsIHdlIG5vIGxvbmdlciAKYXNzZW1ibGUgb3VyIHNlcnZhbnRzIGFuZCB0cnkgdG8gYXJndWUgdGhlIG1hdHRlciB3aXRoIHJpZmxlcyBvciBibHVkZ2VvbnMsIGJ1dCAKd2UgcmVmZXIgdGhlIGNhc2UgaW5zdGVhZCB0byBhIHRyaWJ1bmFsIGluIHdob3NlIGltcGFydGlhbGl0eSB3ZSBib3RoIGhhdmUgCnJlYXNvbmFibGUgY29uZmlkZW5jZS4gCgoKNjcwLsKgwqDCoMKgwqDCoMKgCkFzIG5hdGlvbnMsIGhvd2V2ZXIsIHdlIGFyZSBub3QgeWV0IGF0IHRoZSBsZXZlbCBvZiBldm9sdXRpb24gd2hpY2ggd2UgCmhhdmUgcmVhY2hlZCBhcyBpbmRpdmlkdWFsczsgd2UgYXJlIHdpbGxpbmcgKHNvbWUgb2YgdXMpIHRvIHN1Ym1pdCBjb21wYXJhdGl2ZWx5IAp1bmltcG9ydGFudCBtYXR0ZXJzIG9mIGRpc3B1dGUgdG8gYXJiaXRyYXRpb24sIGJ1dCB0aGVyZSBpcyBhcyB5ZXQgbm8gY291cnQgaW4gCndoaWNoIHRoZSByYWNlcyBvZiB0aGUgd29ybGQgaGF2ZSBzdWZmaWNpZW50IHRydXN0IHRvIGFjY2VwdCBpdHMgZGVjaXNpb24gaW4gYSAKcXVlc3Rpb24gdml0YWwgdG8gdGhlaXIgZXhpc3RlbmNlLiBTbyB0aGUgaXJyYXRpb25hbCBhcHBlYWwgdG8gYnJ1dGUgZm9yY2Ugc3RpbGwgCnJlbWFpbnMgYXMgYSBwb3NzaWJpbGl0eSBob3ZlcmluZyBldmVyIGluIHRoZSBiYWNrZ3JvdW5kIG9mIG5hdGlvbmFsIGxpZmUgbGlrZSBhIAptZW5hY2luZyB0aHVuZGVyY2xvdWQuIAoKCjY3MS7CoMKgwqDCoMKgwqDCoApQb2V0cyBoYXZlIHN1bmcgb2YgdGhlIGdsb3JpZXMgb2Ygd2FyLCBidXQgdGhlIGxlZ2lvbnMgb2YgdGhlIFJlZCBDcm9zcywgCndobyBnbyBmb3J0aCBub3QgdG8gaHVydCBidXQgdG8gaGVscCwgd2hvIGNvbWUgdXBvbiB0aGUgYmF0dGxlLWZpZWxkIGFmdGVyIHRoZSAKcmlmbGUgYW5kIHRoZSBjYW5ub24gaGF2ZSBkb25lIHRoZWlyIHdvcmstLSB0aGVzZSBjYW4gdGVsbCB1cyBzb21ldGhpbmcgb2YgdGhlIAp0cnVlIG1lYW5pbmcgb2Ygd2FyLCBhbmQgb2YgYWxsIHRoZSBnaGFzdGx5IGhvcnJvcnMgaW52b2x2ZWQgaW4gdGhlIGdhbGxhbnQgCmRlZmVuY2Ugb3IgdGhlIHN1Y2Nlc3NmdWwgY2hhcmdlLiBXYXIgbWF5IHN0aWxsIGJlIHNvbWV0aW1lcyBhIG5lY2Vzc2l0eS0tIHRoZSAKbGVzc2VyIG9mIHR3byBldmlsczsgYnV0IGl0IGlzIHNvIG9ubHkgYmVjYXVzZSBvdXIgYm9hc3RlZCBjaXZpbGlzYXRpb24gaXMgc3RpbGwgCmxhbWVudGFibHkgZGVmaWNpZW50LiBZZXQsIGhvcnJpYmxlIGFuZCBzZW5zZWxlc3MgdGhvdWdoIGl0IGJlLCBpdCBpcyBjYXBhYmxlIGluIAphIGNlcnRhaW4gd2F5IG9mIHV0aWxpc2F0aW9uOyBpdCBoYXMgaXRzIHBhcnQgdG8gcGxheSBhdCBhbiBlYXJseSBzdGFnZSBvZiAKZXZvbHV0aW9uLiAKCgo2NzIuwqDCoMKgwqDCoMKgwqAKVW5xdWVzdGlvbmFibHkgdGhlIGVnb3MgaW5jYXJuYXRlZCBpbiB0aGUgWnVsdSBob3JkZXMsIHRoYXQgZGlkIG5vdCAKaGVzaXRhdGUgdG8gbWFyY2ggdG8gY2VydGFpbiBkZWF0aCBhdCB0aGUgY29tbWFuZCBvZiBDaGFrYSBvciBDZXRld2F5bywgYWNxdWlyZWQgCmluIHRoYXQgd2F5IHF1YWxpdGllcyBvZiBvYmVkaWVuY2UsIHNlbGYtY29udHJvbCBhbmQgc2VsZi1zYWNyaWZpY2Ugd2hpY2ggd2lsbCAKYmUgdmFsdWFibGUgdG8gdGhlbSBpbiBsYXRlciBiaXJ0aHMgYW1pZCBzdXJyb3VuZGluZ3Mgd2hlcmUgdGhleSBjYW4gYmUgcHV0IHRvIAptb3JlIHJhdGlvbmFsIHVzZTsgYW5kIGl0IGlzIHRvIHRoZSBadWx1IGxldmVsIG9mIGRldmVsb3BtZW50IHRoYXQgd2FyIHByb3Blcmx5IApiZWxvbmdzLiBUaGUgc2FtZSBsZXNzb25zLCBob3dldmVyLCBhcmUgbmVlZGVkIGJ5IG1hbnkgd2hvIG9idGFpbiBiaXJ0aCBpbiAKaGlnaGVyIHJhY2VzIHRoYW4gdGhlIFp1bHU7IGFuZCB3aXRob3V0IGFiYXRpbmcgb25lIGpvdCBvZiBvdXIgaG9ycm9yIG9mIHRoZSAKZ2hhc3RseSBjcnVlbHR5IGFuZCBzZW5zZWxlc3NuZXNzIG9mIHdhciwgd2UgbWF5IHlldCBhZG1pdCB0aGF0IHN1Y2ggZGV2b3Rpb24gdG8gCnRoZSBhYnN0cmFjdCBpZGVhIG9mIHBhdHJpb3Rpc20gYXMgd2lsbCBsZWFkIGEgbWFuIHRvIGJlIHJlYWR5IHRvIGRpZSBmb3IgaXQsIAptZWFucyBhIGRpc3RpbmN0IGFkdmFuY2UgdXBvbiB0aGUgbm9ybWFsIGF0dGl0dWRlIG9mIHRoZSBjbGFzcyBmcm9tIHdoaWNoIG91ciAKY29tbW9uIHNvbGRpZXJzIGFyZSBjaGllZmx5IGRyYXduLiBUaG9zZSB3aG8gYXJlIGNsb3NlbHkgYWNxdWFpbnRlZCB3aXRoIG91ciAKYWdyaWN1bHR1cmFsIHBvcHVsYXRpb24gY2Fubm90IGhhdmUgZmFpbGVkIGFsc28gdG8gb2JzZXJ2ZSB0aGUgZGlmZmVyZW5jZSB3aGljaCAKbWlsaXRhcnkgb3IgbmF2YWwgdHJhaW5pbmcgbWFrZXMgaW4gdGhlIHlvdW5nIG1hbi0tIGhvdywgZnJvbSBiZWluZyBzbG93IG9mIApzcGVlY2ggYW5kIGNvbXByZWhlbnNpb24sIGhlIGJlY29tZXMgYWxlcnQsIGRleHRlcm91cywgcmVzb3VyY2VmdWwgYW5kIApzZWxmLXJlc3BlY3RpbmcuIFVuZm9ydHVuYXRlbHkgaGUgc29tZXRpbWVzIHBpY2tzIHVwIG90aGVyIGFuZCBsZXNzIGRlc2lyYWJsZSAKaGFiaXRzIGF0IHRoZSBzYW1lIHRpbWUsIGJ1dCBhdCBsZWFzdCBoZSBpcyBsZXNzIGJvdmluZSBhbmQgbW9yZSBodW1hbi4gCgoKNjczLsKgwqDCoMKgwqDCoMKgClRoZXJlIGlzLCBob3dldmVyLCBubyByZWFzb24gd2h5IGFuIGV4Y2VsbGVudCBzeXN0ZW0gb2YgcGh5c2ljYWwgdHJhaW5pbmcgCnNob3VsZCBub3QgYmUgdW5pdmVyc2FsbHkgYWRvcHRlZCBldmVuIHdoZW4gcGVhY2UgcmVpZ25zIHN1cHJlbWUsIHNvIHRoYXQgd2UgCm1pZ2h0IGdhaW4gYWxsIHRoZSBiZW5lZml0IHdoaWNoIGlzIGF0IHByZXNlbnQgZGVyaXZlZCBieSB0aG9zZSB3aG8gYXJlIHRyYWluZWQgCmluIHRoZSBhcm15IGFuZCBuYXZ5LCB3aXRob3V0IHRoZSBzaW5mdWwgYW5kIHJpZGljdWxvdXMgd2FzdGUgb2YgbGlmZSBhbmQgbW9uZXkgCmluIGFjdHVhbCB3YXJmYXJlLiBBIHN0ZXAgaW4gdGhpcyBkaXJlY3Rpb24gaXMgYWxyZWFkeSBiZWluZyB0YWtlbiBieSB0aGUgCmFkbWlyYWJsZSBvcmdhbmlzYXRpb24gY2FsbGVkIHRoZSBCb3kgU2NvdXRzLCBhbmQgaXQgaXMgZmVydmVudGx5IHRvIGJlIGhvcGVkIAp0aGF0IHRoaXMgbWF5IHNwcmVhZCBvdmVyIHRoZSB3aG9sZSB3b3JsZCwgc28gdGhhdCBpdHMgYmVuZWZpdHMgbWF5IGJlIHNoYXJlZCBieSAKYWxsLiAKCgo2NzQuwqDCoMKgwqDCoMKgwqAKVGVycmlibGUgYW5kIHdpY2tlZCB0aG91Z2ggaXQgYmUsIHdhciwgd2hlbiBpdCBkb2VzIG9jY3VyICh0aGF0IGlzLCB3aGVuIAppdCBjYW5ub3QgbG9uZ2VyIGJlIHByZXZlbnRlZCksIGlzIGFsd2F5cyB1dGlsaXNlZCBhbmQgdHVybmVkIHRvIGF0IGxlYXN0IHNvbWUgCnNvcnQgb2YgY29tcGVuc2F0b3J5IGdvb2QgYnkgdGhlIEF1dGhvcml0aWVzIHdobyBzdGFuZCBiZWhpbmQuIEl0IGlzIHNvbWV0aW1lcyAKZW1wbG95ZWQgYWxzbyBhcyBhbiBhbHRlcm5hdGl2ZSB0byBzb21ldGhpbmcgc3RpbGwgd29yc2UsIG9yIGEgc21hbGxlciB3YXIgaXMgCnBlcm1pdHRlZCBpbiBvcmRlciB0byBhdm9pZCBhIG1vcmUgZGlzYXN0cm91cyBvbmUuIAoKCjY3NS7CoMKgwqDCoMKgwqDCoApJIGhhdmUgYmVlbiB0b2xkIHRoYXQgaWYgdGhlIHdhciB3aGljaCBFbmdsYW5kIHJlY2VudGx5IHdhZ2VkIGluIFNvdXRoIApBZnJpY2EgaGFkIG5vdCB0YWtlbiBwbGFjZSwgYSBjb2xvc3NhbCBhbmQgdGVycmlibGUgRXVyb3BlYW4gd2FyIHdvdWxkIGhhdmUgYmVlbiAKaW5ldml0YWJsZSwgd2hpY2ggd291bGQgaGF2ZSBpbnZvbHZlZCBmYXIgbW9yZSB3aWRlc3ByZWFkIGRlc3RydWN0aW9uLiBJdCBpcyAKYWxzbyBjZXJ0YWluIHRoYXQgdGhhdCB3YXIgd2FzIHV0aWxpc2VkIHRvIGJpbmQgbW9yZSBjbG9zZWx5IHRvZ2V0aGVyIHRoZSAKZGlmZmVyZW50IHBhcnRzIG9mIHRoZSBCcml0aXNoIEVtcGlyZSwgc28gdGhhdCBpbiBzdGFuZGluZyBzaWRlIGJ5IHNpZGUgdXBvbiB0aGUgCmJhdHRsZS1maWVsZCBtZW4gbWlnaHQgbGVhcm4gdG8gYmVjb21lIG1vcmUgYnJvdGhlcmx5IGFuZCB0byB1bmRlcnN0YW5kIG9uZSAKYW5vdGhlciBiZXR0ZXIuIEluZGVlZCwgdGhhdCBpcyBhbiBlZmZlY3Qgd2hpY2ggaGFzIG9mdGVuIGZvbGxvd2VkIHVwb24gd2FyLCAKdGhhdCB0aGUgZmFjdGlvbnMgd2l0aGluIGEgY291bnRyeSBoYXZlIGFncmVlZCB0byBmb3JnZXQgdGhlaXIgZGlmZmVyZW5jZXMgaW4gCnRoZSBmYWNlIG9mIHRoZSBjb21tb24gZW5lbXkuIFRoZSBhdHRhY2sgb2YgSXRhbHkgdXBvbiBUcmlwb2xpIG1heSBvciBtYXkgbm90IGJlIAppbiB0aGUgYWJzdHJhY3QganVzdGlmaWFibGU7IGJ1dCBubyBvbmUgd2hvIGhhcyBsaXZlZCBpbiB0aGUgY291bnRyeSBjYW4gZG91YnQgCnRoYXQgaXQgaGFzIGhhZCBpdHMgdmFsdWUgaW4gYnJpbmdpbmcgdGhlIHNvbWV3aGF0IGhldGVyb2dlbmVvdXMgcG9wdWxhdGlvbiBvZiAKSXRhbHkgaW50byBhIGNsb3NlciB1bml0eSB0aGFuIGV2ZXIgYmVmb3JlLS0gaW50byBhIHJlYWxpc2F0aW9uIG9mIGl0cyAKc29saWRhcml0eSBhcyBhIG5hdGlvbi4gCgoKNjc2LsKgwqDCoMKgwqDCoMKgClRoZSBoaWRkZW4gc2lkZSBvZiB0aGUgYWN0dWFsIGZpZ2h0aW5nIGlzIHBlcmhhcHMgbGVzcyByZW1hcmthYmxlIHRoYW4gCm1pZ2h0IGJlIGV4cGVjdGVkLiBUaGUgc291bmQtZm9ybXMgcHJvZHVjZWQgYnkgdGhlIGRpc2NoYXJnZSBvZiBhcnRpbGxlcnkgYW5kIGJ5IAp0aGUgY2Vhc2VsZXNzIHJhdHRsaW5nIG9mIHRoZSByaWZsZXMgYXJlIG5hdHVyYWxseSBvZiBhIHN0cmlraW5nIG5hdHVyZSwgYnV0IGFzIApmYXIgYXMgdGhlIGFzdHJhbCB3b3JsZCBpcyBjb25jZXJuZWQsIGEgc3VyZ2luZyBtYXNzIG9mIGNvbmZ1c2lvbiBpcyB0aGUgCnByaW5jaXBhbCBjaGFyYWN0ZXJpc3RpYyBpbiB0aGUgbmVpZ2hib3VyaG9vZCBvZiB0aGUgYmF0dGxlLWZpZWxkLiAKCgo2NzcuwqDCoMKgwqDCoMKgwqAKVGhlcmUgaXMgaW5ldml0YWJseSBhIGNlcnRhaW4gYW1vdW50IG9mIGZlYXIgY29taW5nIGZyb20gdGhvc2Ugd2hvIGFyZSAKbmV3IHRvIHRoZSBnaGFzdGx5IHdvcms7IGJ1dCB0aGVyZSBpcyB1c3VhbGx5IGNvbXBhcmF0aXZlbHkgbGl0dGxlIG9mIGFjdHVhbCAKaGF0cmVkLiBUaGUgcGFpbiBhbmQgZ3JpZWYgb2YgdGhlIHdvdW5kZWQgYXJlIHRlcnJpYmxlIGVub3VnaCwgeWV0IGV2ZW4gdGhlbiAKdGhlcmUgaXMgaW4gbW9zdCBjYXNlcyBsaXR0bGUgb2YgaGF0cmVkIG9yIHBlcnNvbmFsaXR5LiBUaGVyZSBpcyBnZW5lcmFsbHkgYSAKc3Ryb25nIHNlbnNlIG9mIG9yZGVyLCBvYmVkaWVuY2UsIGRldGVybWluYXRpb24sIGNvbWluZyBwZXJoYXBzIHByaW5jaXBhbGx5IGZyb20gCnRoZSBvZmZpY2VycyBhbmQgdGhlIG9sZGVyIHNvbGRpZXJzLiBCdXQgdW5sZXNzIHRoZSBzcGVjdGF0b3Igc2Vuc2VzIHRoZSAKdGhvdWdodC1mb3JtcyBvZiB0aGUgZ2VuZXJhbHMsIGl0IGlzIGRpZmZpY3VsdCB0byBnZXQgYW55IGNvaGVyZW50IGlkZWEgb2YgdGhlIApzY2VuZSBhcyBhIHdob2xlLiAKCgo2NzguwqDCoMKgwqDCoMKgwqAKTWFueSBpbnZpc2libGUgaGVscGVycyBhcmUgYnJvdWdodCB0b2dldGhlciBkdXJpbmcgYSBiYXR0bGUsIHRvIHJlY2VpdmUgCnRoZSBkZWFkIGFuZCBleHRlbmQgdG8gdGhlbSBhbnkgYXNzaXN0YW5jZSBvZiB3aGljaCB0aGV5IG1heSBiZSBpbiBuZWVkLiBCdXQsIAp0YWtpbmcgaXQgYXMgYSB3aG9sZSwgdGhlcmUgaXMgZmFyIG1vcmUgZmVlbGluZyBleGNpdGVkIGFib3V0IHdhciBpbiB0aGUgbWluZHMgCm9mIGNvdW50cnltZW4gYW5kIHJlbGF0aW9ucyB0aGFuIGluIHRob3NlIG9mIHRoZSBzb2xkaWVycyB0aGVtc2VsdmVzIHdobyAKYWN0dWFsbHkgdGFrZSBwYXJ0IGluIGl0LiAKCgo2NzkuwqDCoMKgwqDCoMKgwqAKQ0FUQVNUUk9QSEVTIAoKCjY4MC7CoMKgwqDCoMKgwqDCoApTb21ldGltZXMgZ3JlYXQgY2F0YXN0cm9waGVzIG90aGVyIHRoYW4gd2FyIG92ZXJ0YWtlIHRoZSB3b3JsZC4gVHdvIApodW5kcmVkIHRob3VzYW5kIHBlb3BsZSBwZXJpc2hlZCBzdWRkZW5seSBpbiBhbiBlYXJ0aHF1YWtlIGF0IE1lc3NpbmE7IHdoYXQgaXMgCnRoZSBvY2N1bHQgc2lkZSBvZiBzdWNoIGEgaGFwcGVuaW5nIGFzIHRoYXQ/IFRoZSBpbm5lciBzaWdodCBoZWxwcyB1cyB0byBsb29rIAptb3JlIHVuZGVyc3RhbmRpbmdseSBvbiBzdWNoIGV2ZW50cyBhcyB0aGlzLCBhbmQgd2hpbGUgd2UgcGl0eSB0aGUgc3VmZmVyZXJzIG5vIApsZXNzLCB3ZSB5ZXQgYXZvaWQgdGhlIGZlZWxpbmcgb2Ygb3ZlcndoZWxtaW5nIGhvcnJvciBhbmQgZGlzbWF5IHdoaWNoIHBhcmFseXNlcyAKbWFueSBhdCB0aGUgdGhvdWdodCBvZiBzdWNoIGFuIG9jY3VycmVuY2UuIExldCB1cyB0aGluayBjYWxtbHksIGFuYWx5dGljYWxseSwgCndoYXQgcmVhbGx5IGhhcHBlbmVkIGluIHRoYXQgY2FzZS4gVHdvIGh1bmRyZWQgdGhvdXNhbmQgcGVvcGxlIHdlcmUgc3VkZGVubHkgCnJlbGVhc2VkIGZyb20gdGhlIGJ1cmRlbiBvZiB0aGUgZmxlc2guIFN1cmVseSB3ZSBoYXZlIG5vIG5lZWQgdG8gcGl0eSB0aGVtLiAKV2UgY2Fubm90IHNwZWFrIG9mIHRoZW0gYXMgc3VmZmVyZXJzLCBmb3IgdGhleSBoYXZlIGJlZW4gbGlmdGVkIHN1ZGRlbmx5IGFuZCAKcGFpbmxlc3NseSBpbnRvIGEgaGlnaGVyIGFuZCBoYXBwaWVyIGxpZmUsIGFuZCBpbiBzdWNoIGEgY2F0YXN0cm9waGUgYXMgdGhpcyAKdGhlcmUgaXMgcmVhbGx5IGxlc3Mgb2Ygc3VmZmVyaW5nIHRoYW4gaW4gY29ubmVjdGlvbiB3aXRoIG1hbnkgaXNvbGF0ZWQgY2FzZXMgb2YgCmRlYXRoLiAKCgo2ODEuwqDCoMKgwqDCoMKgwqAKVGhlIHN1ZmZlcmluZyBjYXVzZWQgYnkgc3VkZGVuIGRlYXRoIGlzIG5ldmVyIHRvIHRoZSBkZWFkIG1hbiwgYnV0IHRvIHRoZSAKcmVsYXRpb25zIHdobywgbm90IHVuZGVyc3RhbmRpbmcgdGhlIGZhY3RzIG9mIGRlYXRoLCBzdXBwb3NlIHRoZW1zZWx2ZXMgdG8gaGF2ZSAKbG9zdCBoaW0uIEJ1dCBwcmVjaXNlbHkgaW4gYSBncmVhdCBjYXRhc3Ryb3BoZSBvZiB0aGlzIG5hdHVyZSwgZmV3IGFyZSBsZWZ0IHRvIAptb3VybiBmb3IgdGhlIG90aGVycywgc2luY2UgdGhlIGZhbWlsaWVzIHdpdGhpbiBhIGNlcnRhaW4gYXJlYSBhcmUgYWxtb3N0IGFsbCAKZGVzdHJveWVkLiBUaGUgZGlyZWN0IHJlbGF0aW9ucyBpbiBtb3N0IGNhc2VzIGRpZSB0b2dldGhlciwgYW5kIHRob3NlIHdobyBhcmUgCmxlZnQgdG8gbW91cm4gYXJlIG1vcmUgZGlzdGFudCByZWxhdGlvbnMgc2V0dGxlZCBpbiBmYXItYXdheSBkaXN0cmljdHMuIAoKCjY4Mi7CoMKgwqDCoMKgwqDCoApTb21lIHRoZXJlIHdlcmUgYmV5b25kIGRvdWJ0IHdobyBzdWZmZXJlZCB0ZXJyaWJseS0tIG1lbiB3aG8gd2VyZSB3b3VuZGVkIAphbmQgbGVmdCBmb3IgZGF5cyBhd2FpdGluZyBzdWNjb3VyOyBvdGhlcnMgd2hvIHdlcmUgc2h1dCBpbiBiZW5lYXRoIGhlYXBzIG9mIApydWlucyBhbmQgc3VmZm9jYXRlZCBvciBzdGFydmVkIHRvIGRlYXRoLiBUb3dhcmRzIHRoZXNlIGluZGVlZCBvdXIga2VlbmVzdCAKc3ltcGF0aHkgbWF5IHdlbGwgZ28gZm9ydGguIFlldCByZW1lbWJlciB0aGF0IHRoZXkgY2FuIGhhdmUgYmVlbiBhdCBtb3N0IGJ1dCAKZmV3LCBhIHNtYWxsZXIgbnVtYmVyIHRoYW4gdGhvc2Ugd2hvIGRpZSBvZiBzdGFydmF0aW9uIGV2ZXJ5IHdlZWsgaW4gb3VyIGNhcGl0YWwgCmNpdHkgb2YgTG9uZG9uLCBmb3Igc3RhcnZhdGlvbiBpcyBub3QgbWVyZWx5IGFic29sdXRlIGxhY2sgb2YgZm9vZCBmb3IgYSBjZXJ0YWluIApudW1iZXIgb2YgZGF5cy4gQSBtYW4gd2hvIGhhcyBpbnN1ZmZpY2llbnQgZm9vZCwgb3IgYmFkIGZvb2QgY29udGFpbmluZyAKaW5zdWZmaWNpZW50IG5vdXJpc2htZW50LCBmb3IgYSBwZXJpb2Qgb2YgeWVhcnMsIGlzIHN0YXJ2aW5nIHRvIGRlYXRoIHF1aXRlIGFzIApzdXJlbHkgYXMgdGhlIG1hbiB3aG8gZm9yIGEgZmV3IGRheXMgaGFzIG5vIGZvb2QgYXQgYWxsLCBhbmQgdGhlcmUgaXMgZmFyIG1vcmUgCnByb2xvbmdlZCBzdWZmZXJpbmcgaW4gdGhlIGZvcm1lciBjYXNlIHRoYW4gaW4gdGhlIGxhdHRlci4gCgoKNjgzLsKgwqDCoMKgwqDCoMKgCkJ1dCBhZ2FpbiwgaXQgbWF5IGJlIHNhaWQsIGluIHRoZSBlYXJ0aHF1YWtlIHRoZXJlIHdhcyBhIHZhc3QgYW1vdW50IG9mIApzdWZmZXJpbmcsIGJlY2F1c2UgbWFueSBwZW9wbGUgd2VyZSByZW5kZXJlZCBob21lbGVzcywgYW5kIGJlY2F1c2UgdGhleSB3ZXJlIApiZXJlZnQgb2YgdGhlaXIgb3JkaW5hcnkgc3VwcGxpZXMgb2YgZm9vZC4gVGhhdCBhZ2FpbiBpcyB0cnVlLCBhbmQgdG8gCnRob3NlIGFsc28gb3VyIGhlYXJ0aWVzdCBzeW1wYXRoeSBtdXN0IGJlIGV4dGVuZGVkLiBJbmRlZWQsIHdlIGtub3cgdGhhdCB0aGUgCndob2xlIHdvcmxkIGRpZCBzbyBleHRlbmQgaXQsIGFuZCBmcm9tIHRoZSBvY2N1bHQgdmlldyBieSBmYXIgdGhlIG1vc3QgaW1wb3J0YW50IAplZmZlY3Qgb2YgdGhhdCBlYXJ0aHF1YWtlIHdhcyB0aGUgZ3JlYXQgd2F2ZSBvZiBzeW1wYXRoeSBhbmQgcGl0eSB3aGljaCBjYW1lIApyb2xsaW5nIGluIHVwb24gdGhlIHBsYWNlIGZyb20gZXZlcnkgcGFydCBvZiB0aGUgaGFiaXRhYmxlIGdsb2JlIHRvIHdoaWNoIHRoZSAKbmV3cyBoYWQgYmVlbiBjYXJyaWVkLiAKCgo2ODQuwqDCoMKgwqDCoMKgwqAKSXQgaXMgbm90IGRlYXRoIHdoaWNoIHdlIHNob3VsZCByZWdhcmQgYXMgYW4gZXZpbCBmYXRlOyBvdXIgVGhlb3NvcGhpY2FsIAprbm93bGVkZ2UgaGFzIGF0IGxlYXN0IHRhdWdodCB1cyB0aGF0LiBJdCBpcyBuZXZlciB0aGUgZGVhZCB3aG9tIHdlIHNob3VsZCBwaXR5LCAKYnV0IHRoZSBsaXZpbmcgd2hvIHN0aWxsIHN1ZmZlciB1bmRlciBhbGwgdGhlIGNyYW1waW5nIHJlc3RyaWN0aW9ucyBvZiB0aGlzIApzdHJhbmdlIHBoeXNpY2FsIHBsYW5lLiBGb3IgdGhvc2Ugd2hvc2UgY29uc2Npb3VzbmVzcyBrbm93cyBubyBvdGhlciB3b3JsZCwgaXQgCnNlZW1zIHRlcnJpYmxlIHRvIGhhdmUgdG8gcXVpdCB0aGlzOyBhIG1hbiB3aG9zZSBzaWdodCByYW5nZXMgb3ZlciB0aGUgaGlnaGVyIAp3b3JsZHMga25vd3MsIHdpdGggYSB2aXZpZCBjZXJ0YWludHkgdGhhdCBub3RoaW5nIGNhbiBzaGFrZSwgdGhhdCwgaWYgb25lIGlzIHRvIApjb25zaWRlciBoYXBwaW5lc3MgYWxvbmUsIHRoZSBoYXBwaWVzdCBtb21lbnQgZm9yIGV2ZXJ5IG1hbiBpcyB0aGF0IGluIHdoaWNoIGhlIAplc2NhcGVzIGZyb20gdGhpcyB3b3JsZCBpbnRvIHRoZSB3aWRlciBhbmQgbW9yZSByZWFsIGxpZmUgYWJvdmUuIAoKCjY4NS7CoMKgwqDCoMKgwqDCoApHcmFudGVkIHRoYXQgb3VyIGxpZmUgaGVyZSBpcyBhIG5lY2Vzc2l0eSwgdGhhdCB3ZSBoYXZlIGRldmVsb3BtZW50IHRvIAptYWtlIHdoaWNoIGNhbiBiZSBtYWRlIG9ubHkgdW5kZXIgdGhlc2UgaGFyZCBjb25kaXRpb25zOyBpdCBpcyBmb3IgdGhhdCByZWFzb24gCnRoYXQgb3VyIHBoeXNpY2FsIGxpZmUgaXMgbmVjZXNzYXJ5LCBhbmQgc28gd2UgY29tZSBmb3J0aCBpbnRvIGl0IGFzIGEgbWFuIGdvZXMgCmZvcnRoIGZyb20gaGlzIGhvbWUgdG8gc29tZSB1bnBsZWFzYW50IHRhc2sgd2hpY2ggbmV2ZXJ0aGVsZXNzIGhlIGtub3dzIG11c3QgYmUgCmRvbmUuIFBpdHkgYnkgYWxsIG1lYW5zIHRoZSBwb29yIGZlbGxvdyB3aG8gaXMgZXhpbGVkIGZyb20gdGhhdCBoaWdoZXIgbGlmZSwgYnV0IApkbyBub3Qgd2FzdGUgeW91ciBzb3Jyb3cgdXBvbiB0aG9zZSB3aG8gaGF2ZSBnb25lIGhvbWUgYWdhaW4gdG8gdGhlIGdsb3J5LCB0aGUgCmJlYXV0eSBhbmQgdGhlIHJlc3QuIAoKCjY4Ni7CoMKgwqDCoMKgwqDCoApTZWVuIGZyb20gdGhlIHBoeXNpY2FsIHdvcmxkIGV2ZXJ5dGhpbmcgaXMgZGlzdG9ydGVkLCBiZWNhdXNlIHdlIHNlZSBvbmx5IApzbyB0aW55IGEgcGFydCBvZiBpdCwgYW5kIHRoZW4gd2l0aCBzdHJhbmdlIHN0dXBpZGl0eSBpbnNpc3QgdXBvbiB0YWtpbmcgdGhhdCAKZm9yIHRoZSB3aG9sZS4gT2NjdWx0aXNtIHRlYWNoZXMgdXMgYSBmaW5lciBwcm9wb3J0aW9uLCBhbmQgYnJpbmdzIG91ciBsaWZlIGludG8gCnBlcnNwZWN0aXZlIGZvciB1cywgYW5kIHNvLCB3aGlsZSB3ZSBsYWNrIG5vdGhpbmcgb2Ygc3ltcGF0aHkgZm9yIGFsbCB3aG8gCnN1ZmZlciwgd2UgeWV0IGxlYXJuIHRoYXQgdGhvc2Ugd2hvIG1vc3QgbmVlZCBvdXIgc3ltcGF0aHkgYXJlIG5vdCB0aG9zZSB1cG9uIAp3aG9tIHRoZSB1bmRpc2Nlcm5pbmcgd29ybGQgc2hvd2VycyBpdCBtb3N0IGZyZWVseS4gCgoKNjg3LsKgwqDCoMKgwqDCoMKgCkFsbCB3b3JsZHMgYWxpa2UgYXJlIHBhcnQgb2YgdGhlIGdyZWF0IFNvbGFyIERlaXR5OyBpbiBIaW0g77+9d2UgbGl2ZSBhbmQgCm1vdmUgYW5kIGhhdmUgb3VyIGJlaW5nLO+/vSBhbmQgc2luY2Ugd2UgY2Fubm90IGZhbGwgYXdheSBmcm9tIEhpcyBwcmVzZW5jZSBub3IgCmVzY2FwZSBIaXMgZ3VpZGluZyBoYW5kLCB3aGF0IG1hdHRlcnMgYWxsIHRoZSByZXN0PyAKCgo2ODguwqDCoMKgwqDCoMKgwqAKQ0hBUFRFUiBYSUkgCgoKNjg5LsKgwqDCoMKgwqDCoMKgCkJZIFVOU0VFTiBCRUlOR1MgCgoKNjkwLsKgwqDCoMKgwqDCoMKgClNFTlNJVElWRSBQRU9QTEUgCgoKNjkxLsKgwqDCoMKgwqDCoMKgClRIRSBvY2Nhc2lvbmFsIGV2ZW50cyB0byB3aGljaCB3ZSBoYXZlIGhpdGhlcnRvIHJlZmVycmVkIGhhdmUgYmVlbiBzdWNoIAphcyBtaWdodCBjb21lIGludG8gdGhlIGxpZmUgb2YgYWxtb3N0IGFueW9uZS4gVGhlcmUgaXMgYW5vdGhlciBjbGFzcyBvZiAKb2NjYXNpb25hbCBldmVudHMgd2hpY2ggdXN1YWxseSBjb21lIG9ubHkgdG8gYSBjZXJ0YWluIHR5cGUgb2YgcGVvcGxlOyBidXQgdXBvbiAKdGhvc2UgcGVvcGxlIHRoZXkgZXhlcmNpc2UgYW4gaW5mbHVlbmNlIHNvIGdyZWF0IHRoYXQgaXQgY2Fubm90IHJlYWRpbHkgYmUgCm1lYXN1cmVkLS0gZ3JlYXQgZW5vdWdoIG9mdGVuIHRvIGFsdGVyIHRoZSB3aG9sZSBjdXJyZW50IG9mIGEgbGlmZS4gVGhlcmUgYXJlIAp0aG9zZSBhbW9uZyB1cyB3aG8gYXJlIG1vcmUgc2Vuc2l0aXZlIHRoYW4gdGhlIG1ham9yaXR5IG9mIG1lbiwgd2hvIGRyZWFtIGRyZWFtcyAKYW5kIHNlZSB2aXNpb25zOyBhbmQgdG8gdGhlc2UgcGVvcGxlIHRoZWlyIHZpc2lvbnMgYXJlIHRoZSBtb3N0IGltcG9ydGFudCBmYWN0IApvZiBsaWZlLiBOYXR1cmFsbHkgYWxzbywgc3VjaCBwZW9wbGUgYXJlIGF0dHJhY3RlZCB0byB0aGUgc3R1ZHkgb2Ygb2NjdWx0aXNtLCBzbyAKdGhhdCB0aGUgcHJvcG9ydGlvbiBvZiB0aGVtIGFtb25nIG91ciByZWFkZXJzIGlzIGxpa2VseSB0byBiZSBmYXIgZ3JlYXRlciB0aGFuIAppbiB0aGUgd29ybGQgd2hpY2ggY2FyZXMgZm9yIG5vbmUgb2YgdGhlc2UgdGhpbmdzLiBUbyB0aGVzZSB2aXNpb25zIGFsc28gdGhlcmUgCmlzIGEgaGlkZGVuIHNpZGUsIG9uZSB3aGljaCBpdCBpcyBvZiBncmVhdCBpbXBvcnRhbmNlIHRvIHN0dWR5LiAKCgo2OTIuwqDCoMKgwqDCoMKgwqAKVmlzaW9ucyBhcmUgb2YgbWFueSBraW5kcy0tIHNvbWUgdHJpdmlhbCBhbmQgdW5pbXBvcnRhbnQsIG90aGVycyAKcHJvZm91bmRseSBpbnRlcmVzdGluZyBhbmQgcHJvZHVjdGl2ZSBvZiBmYXItcmVhY2hpbmcgZWZmZWN0cyB0byB0aG9zZSB3aG8gCmV4cGVyaWVuY2UgdGhlbS4gSW4gc29tZSBjYXNlcyB0aGVpciBnZW5lc2lzIGlzIG9idmlvdXM7IGluIG90aGVycyBjdXJpb3VzIGFuZCAKdW5leHBlY3RlZCBhc3NvY2lhdGlvbnMgcGxheSB0aGVpciBwYXJ0LCBhbmQgYSBudW1iZXIgb2YgcXVpdGUgc2VwYXJhdGUgY2F1c2VzIAptYXkgY29tYmluZSB0byBwcm9kdWNlIHdoYXQgc2VlbXMgdG8gYmUgYSBzaW5nbGUgc3RvcnkuIAoKCjY5My7CoMKgwqDCoMKgwqDCoApBcyBJIGhhdmUgd3JpdHRlbiBzZXZlcmFsIGJvb2tzIHVwb24gdGhlIGNvbmRpdGlvbnMgb2YgdGhlIGFzdHJhbCB3b3JsZCwgCml0IG5vdCB1bmZyZXF1ZW50bHkgaGFwcGVucyB0aGF0IHBlcnNvbnMgd2hvIGhhdmUgaGFkIHBzeWNoaWMgZXhwZXJpZW5jZXMgb3IgCnZpc2lvbnMgd2hpY2ggdGhleSBoYXZlIG5vdCBmdWxseSBjb21wcmVoZW5kZWQsIHNlbmQgbWUgYWNjb3VudHMgb2YgdGhlbSBhbmQgYXNrIAptZSB3aGV0aGVyIG15IGV4cGVyaWVuY2UgYWxvbmcgdGhlc2UgbGluZXMgc3VnZ2VzdHMgYW55IGV4cGxhbmF0aW9uLiBTdWNoIApsZXR0ZXJzIGFyZSBub3QgYWx3YXlzIGVhc3kgdG8gYW5zd2VyLS0gbm90IHRoYXQgdGhlcmUgaXMgdXN1YWxseSBhbnkgZGlmZmljdWx0eSAKaW4gZm9ybXVsYXRpbmcgYSBoeXBvdGhlc2lzIHdoaWNoIHdpbGwgZml0IHRoZSBmYWN0cywgYnV0IGJlY2F1c2UgdGhlcmUgYXJlIHRvbyAKbWFueSBzdWNoIGh5cG90aGVzZXMuIEFsbW9zdCBldmVyeSBleHBlcmllbmNlIGRlc2NyaWJlZCBtaWdodCBlcXVhbGx5IGVhc2lseSAKaGF2ZSBiZWVuIHByb2R1Y2VkIGluIGFueSBvbmUgb2YgaGFsZi1hLWRvemVuIHdheXMsIGFuZCB3aXRob3V0IHVuZGVydGFraW5nIGEgCnNwZWNpYWwgYW5kIGRldGFpbGVkIGludmVzdGlnYXRpb24gaXQgaXMgb2Z0ZW4gaW1wb3NzaWJsZSB0byBzYXkgd2hpY2ggb2YgdGhlc2UgCm1ldGhvZHMgd2FzIGVtcGxveWVkIGluIGEgcGFydGljdWxhciBjYXNlLiBOYXR1cmFsbHksIGJ1dCBmZXcgb2YgdGhlIGh1bmRyZWRzIG9mIApjYXNlcyBzdWJtaXR0ZWQgYXJlIG9mIHN1ZmZpY2llbnQgZ2VuZXJhbCBpbnRlcmVzdCB0byB3YXJyYW50IHN1Y2ggZXhwZW5kaXR1cmUgCm9mIHRpbWUgYW5kIGZvcmNlOyBidXQgb2NjYXNpb25hbGx5IG9uZSBpcyBlbmNvdW50ZXJlZCB3aGljaCBpcyBzcGVjaWFsbHkgCmNoYXJhY3RlcmlzdGljLS0gc28gZ29vZCBhbiBleGFtcGxlIG9mIGl0cyB0eXBlIHRoYXQgYW4gYW5hbHlzaXMgb2YgaXQgbWlnaHQgCmNvbmNlaXZhYmx5IGJlIG9mIHVzZSB0byBtYW55IG90aGVycyB0byB3aG9tIHNpbWlsYXIgZXhwZXJpZW5jZXMgaGF2ZSBjb21lLiAKCgo2OTQuwqDCoMKgwqDCoMKgwqAKQSBSRU1BUktBQkxFIENBU0UgCgoKNjk1LsKgwqDCoMKgwqDCoMKgClN1Y2ggYW4gb25lIGNhbWUgdG8gbWUgcmVjZW50bHkgZnJvbSBhIGxhZHktLSBhbiBhY2NvdW50IG9mIGEgbG9uZyBhbmQgCmNvbXBsaWNhdGVkIHZpc2lvbiBvciBzZXJpZXMgb2YgdmlzaW9ucywgY291cGxlZCB3aXRoIGltcHJlc3NpdmUgZXhwZXJpZW5jZXMsIAp3aGljaCBoYWQgbGVmdCBiZWhpbmQgdGhlbSBhIHBlcm1hbmVudCByZXN1bHQuIEluIG9yZGVyIHRvIHVuZGVyc3RhbmQgd2hhdCBoYWQgCnJlYWxseSBoYXBwZW5lZCBhIGNlcnRhaW4gYW1vdW50IG9mIGludmVzdGlnYXRpb24gd2FzIG5lY2Vzc2FyeSwgaW4gY291cnNlIG9mIAp3aGljaCBpdCBiZWNhbWUgZXZpZGVudCB0aGF0IHNldmVyYWwgZGlzdGluY3QgZmFjdG9ycyBoYWQgY29tZSBpbnRvIHBsYXkgdG8gCnByb2R1Y2UgdGhlIGN1cmlvdXMgZWZmZWN0cyBkZXNjcmliZWQuIEVhY2ggb2YgdGhlc2UgZmFjdG9ycyBoYWQgdG8gYmUgZm9sbG93ZWQgCnVwIHNlcGFyYXRlbHkgYW5kIHRyYWNlZCB0byBpdHMgc291cmNlLCBhbmQgSSB0aGluayB0aGF0IHN0dWRlbnRzIGNhbiBoYXJkbHkgCmZhaWwgdG8gYmUgaW50ZXJlc3RlZCBpbiBhbiBleGFtaW5hdGlvbiBvZiB0aGUgd2F5IGluIHdoaWNoIHRoZXNlIGluZGVwZW5kZW50IAphbmQgZGlzY29ubmVjdGVkIGNhdXNlcyB3b3JrZWQgdG8gYnJpbmcgZm9ydGggYSBzb21ld2hhdCBzdGFydGxpbmcgd2hvbGUuIAoKCjY5Ni7CoMKgwqDCoMKgwqDCoApJIGdpdmUgaGVyZSBhbiBlcGl0b21lIG9mIHRoZSBzdG9yeSBhcyBzZW50IHRvIG1lLCB1c2luZyBpbiBtYW55IGNhc2VzIAp0aGUgZXhhY3Qgd29yZHMgb2YgdGhlIG5hcnJhdG9yLCBidXQgY29uZGVuc2luZyBhcyBtdWNoIGFzIEkgY2FuIHdpdGhvdXQgbG9zaW5nIAp0aGUgc3Bpcml0IGFuZCBzdHlsZSBvZiB0aGUgb3JpZ2luYWwuIEl0IHNob3VsZCBiZSBwcmVtaXNlZCB0aGF0IHRoZSBsYWR5IGhhZCAKYmVjb21lIGRpc3NhdGlzZmllZCB3aXRoIHRoZSByZWxpZ2lvdXMgZG9jdHJpbmVzIG9mIGhlciBjaGlsZGhvb2QsIGFuZCBoYWQgCmNvbW1lbmNlZCB0aGUgc3R1ZHkgb2YgY29tcGFyYXRpdmUgcmVsaWdpb24sIHJlYWRpbmcgc2V2ZXJhbCBUaGVvc29waGljYWwgCmJvb2tzLS0gYW1vbmcgb3RoZXJzIFRoZSBTZWNyZXQgRG9jdHJpbmUuIFNoZSB3YXMgdmVyeSBlYXJuZXN0bHkgCmRlc2lyb3VzIHRvIGtub3cgdGhlIHRydXRoIGFuZCB0byBtYWtlIHdoYXRldmVyIHByb2dyZXNzIG1pZ2h0IGJlIHBvc3NpYmxlIGZvciAKaGVyLiBJbiB0aGUgY291cnNlIG9mIGhlciByZWFkaW5nIHNoZSBjYW1lIGFjcm9zcyBTd2FtaSBWaXZla2FuYW5kYScgcyBib29rIG9uClJhamEgWW9nYSwgYW5kIHByYWN0aXNlZCB0aGUgYnJlYXRoaW5nIGV4ZXJjaXNlcyB0aGVyZWluIHJlY29tbWVuZGVkLiAKVGhlIHJlc3VsdCB3YXMgdGhhdCBzaGUgcmFwaWRseSBkZXZlbG9wZWQgYSBjZXJ0YWluIGtpbmQgb2YgY2xhaXJ2b3lhbmNlIGFuZCAKYmVnYW4gdG8gd3JpdGUgYXV0b21hdGljYWxseS4gRm9yIHNvbWUgZml2ZSBkYXlzIHNoZSBpbmR1bGdlZCBoZXIgYXN0cmFsIApjb250cm9scywgd3JpdGluZyBhbGwgZGF5IGxvbmcgd2hhdGV2ZXIgdGhleSB3aXNoZWQuIAoKCjY5Ny7CoMKgwqDCoMKgwqDCoApJdCBzZWVtcyB0aGF0IHNoZSB3YXMgc3Ryb25nbHkgb3Bwb3NlZCB0byB0aGUgaWRlYSBvZiBjYXBpdGFsIHB1bmlzaG1lbnQsIAphbmQgaGFkIGZlbHQgZ3JlYXQgc3ltcGF0aHkgYW5kIHBpdHkgZm9yIGEgbXVyZGVyZXIgd2hvIGhhZCByZWNlbnRseSBiZWVuIApleGVjdXRlZCBpbiBoZXIgbmVpZ2hib3VyaG9vZC4gQW1vbmcgb3RoZXIgZW50aXRpZXMgdGhpcyBkZWFkIG11cmRlcmVyIGNhbWUgYW5kIApjb21tdW5pY2F0ZWQsIGFuZCBicm91Z2h0IHdpdGggaGltIG90aGVyIG1lbiBvZiB0aGUgc2FtZSBzdGFtcC4gU2hlIG1hZGUgdGhlIAptb3N0IGVhcm5lc3QgZWZmb3J0cyB0byBoZWxwIHRoZXNlIHBlb3BsZSwgdHJ5aW5nIGluIGV2ZXJ5IHdheSB0byBnaXZlIHRoZW0gaG9wZSAKYW5kIGNvbWZvcnQgYW5kIHRvIHRlYWNoIHRoZW0gYXMgbXVjaCBvZiBUaGVvc29waHkgYXMgc2hlIGtuZXcuIFNoZSBzb29uIGZvdW5kLCAKaG93ZXZlciwgdGhhdCB0aGUgbXVyZGVyZXIgZG9taW5hdGVkIGFuZCBvYnNlc3NlZCBoZXIsIGFuZCB0aGF0IHNoZSB3YXMgdW5hYmxlIAp0byBlamVjdCBoaW0uIEhlciBjYXNlIGJlY2FtZSByYXBpZGx5IHdvcnNlLCBhbmQgaGVyIGxpZmUgYW5kIHJlYXNvbiBodW5nIGluIHRoZSAKYmFsYW5jZS4gRm9yIGEgbG9uZyB0aW1lIG5vIHN1Z2dlc3Rpb24sIG5vIGVmZm9ydCwgbWl0aWdhdGVkIGhlciBzdWZmZXJpbmdzLCAKdGhvdWdoIHNoZSBwcmF5ZWQgY29udGludWFsbHkgd2l0aCBhbGwgdGhlIHBvd2VyIG9mIGhlciBzb3VsLiAKCgo2OTguwqDCoMKgwqDCoMKgwqAKQXQgbGFzdCBvbmUgZGF5IHNoZSBiZWNhbWUgY29uc2Npb3VzIG9mIHRoZSBwcmVzZW5jZSBvZiBhbm90aGVyIGJlaW5nIHdobyAKYnJvdWdodCBoZXIgcmVsaWVmLiBIZSB0b2xkIGhlciB0aGF0IHRoZSBwcmF5ZXIgb2YgaGVyIHNwaXJpdCBoYWQgYmVlbiAKcmVjb2duaXNlZCwgdGhhdCBoZSBoYWQgYmVlbiBhcHBvaW50ZWQgYXMgaGVyIGAgZ3VpZGUsJyBhbmQgdGhhdCBiZWNhdXNlIG9mIGhlciAKc3Bpcml0dWFsIGRldmVsb3BtZW50IGFuZCB0aGUgcG93ZXIgd2hpY2ggc2hlIGhhZCBzaG93biBpbiBwcmF5ZXIsIHNoZSB3YXMgCmNvbnNpZGVyZWQgZXNwZWNpYWxseSBob3BlZnVsIGFuZCB3YXMgYWJvdXQgdG8gYmUgdGhlIHJlY2lwaWVudCBvZiBtb3N0IHVudXN1YWwgCmZhdm91cnMuIEluIGZhY3QsIGhlIHNhaWQgc28gbXVjaCBhYm91dCBoZXIgcmVtYXJrYWJsZSBwb3NpdGlvbiBhbmQgdGhlIApyZWNvZ25pdGlvbiB3aGljaCBzaGUgaGFkIGdhaW5lZCwgdGhhdCBzaGUgYXNrZWQgd29uZGVyaW5nbHk6IAoKCjY5OS7CoMKgwqDCoMKgwqDCoArvv71XaG8gdGhlbiBhbSBJP++/vSAKCgo3MDAuwqDCoMKgwqDCoMKgwqAK77+9WW91IGFyZSBCdWRkaGEs77+9IHdhcyB0aGUgc3RhcnRsaW5nIHJlcGx5LiAKCgo3MDEuwqDCoMKgwqDCoMKgwqAK77+9QW5kIHdobyBhcmUgeW91PyDvv70gc2hlIGFza2VkLiAKCgo3MDIuwqDCoMKgwqDCoMKgwqAK77+9SSBhbSB0aGUgQ2hyaXN0LO+/vSBoZSBhbnN3ZXJlZCwg77+9YW5kIEkgd2lsbCBub3cgdGFrZSBjaGFyZ2Ugb2YgeW91Lu+/vSAKCgo3MDMuwqDCoMKgwqDCoMKgwqAKT3VyIGNvcnJlc3BvbmRlbnQgaGVyZSBzaG93ZWQgaGVyIGNvbW1vbnNlbnNlIGFuZCBoZXIgZ3JlYXQgc3VwZXJpb3JpdHkgCm92ZXIgdGhlIG1ham9yaXR5IG9mIHRob3NlIHdobyByZWNlaXZlIHN1Y2ggY29tbXVuaWNhdGlvbnMgYnkgYWJzb2x1dGVseSAKcmVmdXNpbmcgdG8gYmVsaWV2ZSB0aGVzZSBhc3RvbmlzaGluZyBzdGF0ZW1lbnRzLCBidXQgc2hlIG5ldmVydGhlbGVzcyBhY2NlcHRlZCAKdGhlIGd1aWRhbmNlIChhbmQgdGhlIHRlYWNoaW5nIHVwb24gb3RoZXIgcG9pbnRzKSBvZiB0aGUgZW50aXR5IHdobyBtYWRlIHRoZXNlIAphc3RvdW5kaW5nIGNsYWltcy4gCgoKNzA0LsKgwqDCoMKgwqDCoMKgCkhlIHRoZW4gdG9sZCBoZXIgdGhhdCBzaGUgd2FzIHRvIHBhc3MgdGhyb3VnaCBhbiBpbml0aWF0aW9uLCBhbmQgdGhhdCBpZiAKc2hlIHN1Y2NlZWRlZCBzaGUgd291bGQgYmUgYWRtaXR0ZWQgdG8gdGhlIO+/vWNvdW5jaWwgb2YgaGVhdmVuLO+/vSB3aGljaCBoYWQgYmVlbiAKY2FsbGVkIHRvZ2V0aGVyIHRvIGRlY2lkZSB3aGV0aGVyIHRoZSB3b3JsZCBzaG91bGQgbm93IGJlIGRlc3Ryb3llZCwgb3Igd2hldGhlciAKeWV0IGFub3RoZXIgZWZmb3J0IGZvciBpdHMgc2FsdmF0aW9uIHNob3VsZCBiZSBtYWRlLiBIZSB1cmdlZCBoZXIgdG8gaGFzdGVuIHRvIApxdWFsaWZ5IGhlcnNlbGYgdG8gYXR0ZW5kIHRoaXMgbWVldGluZyB3aGlsZSB0aGUgZmF0ZSBvZiB0aGUgd29ybGQgc3RpbGwgaHVuZyBpbiAKdGhlIGJhbGFuY2UsIHNvIHRoYXQgc2hlIG1pZ2h0IGdpdmUgaGVyIHZvaWNlIGluIGZhdm91ciBvZiBzYWx2YXRpb24uIEhlciAKYXR0aXR1ZGUgb2YgbWluZCB3YXMgcmF0aGVyIGN1cmlvdXM7IHNoZSBjZXJ0YWlubHkgZGlkIG5vdCBhY2NlcHQgdGhlc2UgCmV4dHJhdmFnYW50IGNsYWltcywgYnV0IHN0aWxsIHNoZSBoYWxmLWJlbGlldmVkIHRoYXQgdGhlcmUgd2FzIHNvbWUgZ3JlYXQgd29yayAKdG8gYmUgZG9uZSwgYW5kIHNoZSB3YXMgd2lsbGluZyB0byBjb250aW51ZSB0aGUgZXhwZXJpbWVudCBhbmQgc3VibWl0IGhlcnNlbGYgdG8gCnRoZSBndWlkYW5jZSBvZiB0aGUgZW50aXR5IHdobyBoYWQgc2F2ZWQgaGVyIGZyb20gb2JzZXNzaW9uLiAKCgo3MDUuwqDCoMKgwqDCoMKgwqAKQXMgYSBwcmVsaW1pbmFyeSB0byB0aGUgaW5pdGlhdGlvbiBzaGUgd2FzIGRpcmVjdGVkIHRvIGhhdmUgYSBiZWQgcHV0IAppbnRvIGEgcm9vbSB3aGVyZSBzaGUgY291bGQgbG9jayB0aGUgZG9vciwgdG8gbGllIGRvd24gdXBvbiBpdCBhbmQgbWFrZSBoZXJzZWxmIApjb21mb3J0YWJsZS4gVGhlIGd1aWRlIHRoZW4gaW5zdHJ1Y3RlZCBoZXIgdG8gYnJlYXRoZSB0aGUgeW9nYSBicmVhdGggYXMgdGF1Z2h0IApieSBWaXZla2FuYW5kYS4gSGUgdG9sZCBoZXIgdGhhdCBoZXIgcHJldmlvdXMgZWZmb3J0cyBoYWQgcmFpc2VkIHRoZSAKc2VycGVudC1maXJlIHRvIHRoZSBzb2xhciBwbGV4dXMsIGFuZCB0aGF0IG5vdyBzaGUgbXVzdCByYWlzZSBpdCB0byB0aGUgYnJhaW4tLSAKYSBwcm9jZXNzIGluIHdoaWNoIGhlIHdvdWxkIGhlbHAgYW5kIGRpcmVjdCBoZXIuIAoKCjcwNi7CoMKgwqDCoMKgwqDCoApTaGUgZGVzY3JpYmVzIHRoZSBzZW5zYXRpb25zIHdoaWNoIGZvbGxvd2VkIGFzIGV4YWN0bHkgcmVzZW1ibGluZyB0aGUgCnRyYXZhaWwgb2YgYSB3b21hbiBpbiBsYWJvdXIsIGV4Y2VwdCB0aGF0IHRoZSBwYWluIHdhcyBhbG9uZyB0aGUgc3BpbmUsIGFuZCBpdCAKc2VlbWVkIHRoYXQgdGhlIGJpcnRoIHdhcyB0byB0YWtlIHBsYWNlIGluIHRoZSBicmFpbi4gTWFueSB0aW1lcyBoZXIgc3VmZmVyaW5ncyAKd2VyZSBzbyBleGNydWNpYXRpbmcgdGhhdCBzaGUgZ3JldyBkZXNwZXJhdGUgYW5kIHdhcyBhYm91dCB0byBhYmFuZG9uIHRoZSAKc3RydWdnbGUsIGJ1dCB0aGUgZ3VpZGUgc2VlbWVkIG1vc3QgYW54aW91cyBhbmQgYWx3YXlzIGltcGxvcmVkIGhlciBub3QgdG8gCnlpZWxkLCBidXQgdG8gY2FycnkgdGhyb3VnaCB0aGUgb3JkZWFsIHRvIHRoZSBlbmQuIEhlIGhvdmVyZWQgb3ZlciBoZXIgbGlrZSBhbiAKYXR0ZW5kYW50IHBoeXNpY2lhbiBvciBudXJzZSwgZW5jb3VyYWdpbmcsIGRpcmVjdGluZywgaGVscGluZywgZG9pbmcgZXZlcnl0aGluZyAKdGhhdCBoZSBjb3VsZCB0byBhc3Npc3QgdGhlIGJpcnRoLiBBdCBsYXN0IHNoZSBwcmV2YWlsZWQsIGFuZCBzaGUgYXNzZXJ0cyB0aGF0IAp0aGUgYmlydGggYXBwZWFyZWQgdG8gaGVyIGp1c3QgYXMgZGVmaW5pdGUgYW5kIHJlYWwgYSB0aGluZyBhcyB0aGF0IG9mIG9uZSBvZiAKaGVyIG93biBjaGlsZHJlbi4gV2hlbiBpdCBoYWQgdGFrZW4gcGxhY2UgdGhlIGd1aWRlIHdhcyBncmVhdGx5IHJlbGlldmVkLCBhbmQgCmV4Y2xhaW1lZDog77+9VGhhbmsgR29kIGl0IGlzIG92ZXIu77+9IAoKCjcwNy7CoMKgwqDCoMKgwqDCoApUaGlzIGV4dHJhb3JkaW5hcnkgZXhwZXJpZW5jZSB3YXMsIGhvd2V2ZXIsIG9ubHkgdGhlIHByZWx1ZGUgdG8gYSBsb25nIApzZXJpZXMgb2YgbWFydmVsbG91cyB2aXNpb25zLCBsYXN0aW5nIGFsdG9nZXRoZXIgdGhyb3VnaCB0d2VsdmUgZGF5cyBvZiBvdXIgCnBoeXNpY2FsIHRpbWUuIFRoZXNlIHZpc2lvbnMgd2VyZSBwYXJ0bHkgb2YgYSBkaXJlY3RseSBwZXJzb25hbCBjaGFyYWN0ZXIsIGFuZCAKcGFydGx5IG9mIHRoZSBuYXR1cmUgb2YgZ2VuZXJhbCBpbnN0cnVjdGlvbi0tIG9mdGVuIGluY29oZXJlbnQgYW5kIAppbmRlc2NyaWJhYmxlLCB5ZXQgYWx3YXlzIGludGVyZXN0aW5nIGFuZCBpbXByZXNzaXZlLiBUaGUgcGVyc29uYWwgcGFydCAKY29uc2lzdGVkIG9mIGhlciByZWxhdGlvbiB3aXRoIHRoZSBzby1jYWxsZWQg77+9Y291bmNpbCBvZiBoZWF2ZW7vv70gYW5kIHRoZSByZXN1bHQgCm9mIGhlciBkZWFsaW5ncyB3aXRoIGl0LCBhbmQgYWxzbyBpbmNsdWRlZCBzb21lIGN1cmlvdXMgc3ltYm9saWNhbCB2aXNpb25zIGluIAp3aGljaCBwZXJzb25zIHdlbGwga25vd24gdG8gaGVyIGluIHBoeXNpY2FsIGxpZmUgc2VlbWVkIHRvIHBsYXkgdGhlIHBhcnQgb2YgdGhlIAp3b3JsZCB3aGljaCBzaGUgd2FzIHRyeWluZyB0byBzYXZlIGFuZCBvZiB0aGUgYXJjaC1lbmVteSBTYXRhbiwgYSBmYWxsZW4gYW5nZWwgCndobyByZXNpc3RlZCBoZXIuIFNoZSBwZXJ0aW5lbnRseSByZW1hcmtzIHRoYXQgdGhpcyB3YXMgYWxsIHRoZSBtb3JlIHN0cmFuZ2UgCnNpbmNlIGZvciBtYW55IHllYXJzIHNoZSBoYWQgcXVpdGUgb3V0Z3Jvd24gYW55IGJlbGllZiBpbiBhIHBlcnNvbmFsIGRldmlsIG9yIGluIAp0aGUgbmVjZXNzaXR5IG9mIHdoYXQgaXMgb3JkaW5hcmlseSBjYWxsZWQgYCBzYWx2YXRpb24nIC4gCgoKNzA4LsKgwqDCoMKgwqDCoMKgClRoZSBnZW5lcmFsIGluc3RydWN0aW9uIHdhcyBicm9hZGx5IFRoZW9zb3BoaWNhbCBpbiBpdHMgY2hhcmFjdGVyLCBhbmQgCnJlZmVycmVkIGNoaWVmbHkgdG8gdGhlIHN0YWdlcyBvZiBjcmVhdGlvbiBhbmQgdGhlIGV2b2x1dGlvbiBvZiB0aGUgdmFyaW91cyAKcm9vdC1yYWNlcy4gU2hlIGRlc2NyaWJlcyB0aGUgZmlyc3Qgc3RhZ2Ugb2YgdGhpcyBhcyBmb2xsb3dzOiAKCgo3MDkuwqDCoMKgwqDCoMKgwqAK77+9SSB0aGVuIGJlaGVsZCBhIHdvbmRlcmZ1bCB2aXNpb24uIEF0IGZpcnN0IGluIHRoZSBtaWRzdCBvZiBkYXJrbmVzcyBJIApzYXcgYSB2YXN0IERhcmtuZXNzIHdoaWNoIHNlZW1lZCB0byBicm9vZCBhbmQgYnJvb2QgZm9yIGFnZXMuIFRoZW4gYSBzbGlnaHQgCm1vdmVtZW50IGJlZ2FuLCBhcyBpZiBpdCBtaWdodCBiZSB0aGUgZmFpbnRlc3QgZHJlYW0gaW4gdGhpcyBncmVhdCAKZGFya25lc3MuIExpdHRsZSBieSBsaXR0bGUgdGhlIG1vdmVtZW50IGluY3JlYXNlZCwgdW50aWwgYXQgbGFzdCBhIGRlZmluaXRlIAp0aG91Z2h0IHNlZW1lZCB0byBldm9sdmUuIExpdHRsZSBieSBsaXR0bGUgY29uc3RhbnRseSBjaGFuZ2luZyBmb3JtcyAKYXBwZWFyZWQuIEFsbCB3YXMgY2hhb3MuIEV2ZW4gdGhlIGZvcm1zIHdlcmUgaW4gdGhlIG1pZHN0IG9mIGNoYW9zLCBhbmQgdGhlIAp0cmF2YWlsIG9mIHRoZSBVbml2ZXJzZSB3YXMgdGVycmlibGUuIEFsbCB3YXMgb25lLiBJdCBzZWVtZWQgYXMgaWYgdGhlIGVmZm9ydCB0byAKZXZvbHZlIG9yZGVyIGFuZCB0byBtYWtlIG9mIHNvIG1hbnkgZm9ybXMgYSB1bml0LCBkZW1vbnN0cmF0ZWQgYmV5b25kIGRvdWJ0IHRoYXQgCmFsbCB3YXMgbWFkZSBieSBPbmUgR3JlYXQgQmVpbmcsIGFuZCB0aGF0IHRoZSBwYWluIGFuZCByZXNwb25zaWJpbGl0eSB3ZXJlIGZlbHQgCmJ5IEhpbSBhbG9uZS4gVGhpcyBjb250aW51ZWQgZm9yIGEgbG9uZyB0aW1lLCB3aXRoIGFub3RoZXIgZXhwcmVzc2lvbiBvZiAKYmlydGgtZ2l2aW5nLCB3aXRoIGVubGFyZ2luZyByZXN1bHRzIGFuZCB1bmNoYW5naW5nIHNvbGVtbml0eS4gCgoKNzEwLsKgwqDCoMKgwqDCoMKgCu+/vUkgZG8gbm90IGtub3cgd2hlbiBJIGZpcnN0IGJlZ2FuIHRvIHNlZSBzb3Vscy4gSXQgbXVzdCBoYXZlIApiZWVuIGVhcmx5IGluIHRoZSB3b25kZXJmdWwgZXhoaWJpdGlvbjsgZm9yIEkgcmVtZW1iZXIgdmVyeSBkaXN0aW5jdGx5IGhvdyAKdGhpY2tseSB0aGV5IGxheSBldmVyeXdoZXJlIGluIHRoZSBtaWRzdCBvZiBjaGFvcywgYW5kIGluIHRoZSBtaWRzdCBvZiBmb3Jtcy4gSW4gCnRoZSBjb250aW51YWwgdmlicmF0aW9uIG9mIHRoaXMgbWFydmVsbG91cyBldm9sdXRpb24gdGhlc2Ugc291bHMgd2VyZSBzd2FsbG93ZWQgCnVwIGluIGZvcm1zLCB3aGljaCBmb3JtcyBhZ2FpbiBjaGFuZ2VkIHRvIHNvdWxzLiBUaGVzZSBzb3VscyB3ZXJlIGVnZy1zaGFwZWQgYW5kIApvZiBhbGwgc2l6ZXMsIGZyb20gdGlueSBvbmVzIHRvIGxhcmdlciBvbmVzLCBidXQgbm9uZSBzbyBsYXJnZSBhcyBJIHNhdyBsYXRlciBpbiAKYSB3b25kZXJmdWwgc2VxdWVsLiAKCgo3MTEuwqDCoMKgwqDCoMKgwqAK77+9QWZ0ZXIgYSB0aW1lIHRoZSBwYW5vcmFtYSBvZiBtYXJ2ZWxzIGNoYW5nZWQgYW5kIHRoZSB3b3JsZCBhc3N1bWVkIGEgCnNoYXBlIGZhbWlsaWFyIHRvIG15IG1vZGUgb2YgdGhvdWdodC4gU3ltYm9sIHVwb24gc3ltYm9sIHBhc3NlZCwgaW5jbHVkaW5nIGFsbCAKaGlzdG9yeSBhbmQgbXl0aG9sb2d5LiBUaG91c2FuZHMgb2YgcGljdHVyZXMgcGFzc2VkIGluIHJldmlldywgYXMgaWYgcmV2ZWFsaW5nIAp0aGUgd2hvbGUgb2YgQ29zbW9zIGFuZCBvZiBoaXN0b3J5LiBJIGNhbiByZWNhbGwgYnV0IGZldyBub3csIGJ1dCBvbmUgd2lsbCBzZXJ2ZSAKYXMgYW4gaWxsdXN0cmF0aW9uLiAKCgo3MTIuwqDCoMKgwqDCoMKgwqAK77+9SSBzYXcgYSBjb3cgb2YgaW1tZW5zZSBwcm9wb3J0aW9ucy0tIGFsbW9zdCBhcyBsYXJnZSBhcyBvbmUgb2Ygb3VyIAptb3VudGFpbnMuIEEgbGFkZGVyIHdhcyBwbGFjZWQgYWdhaW5zdCBoZXIsIGFuZCBhIG1hbiBjcmVwdCBzbG93bHkgYW5kIApsYWJvcmlvdXNseSB1cCB0aGUgbGFkZGVyLCByb3VuZCBieSByb3VuZC4gSGUgcmVwcmVzZW50ZWQgSHVtYW5pdHkuIFdoZW4gYXQgbGFzdCAKaGUgcmVhY2hlZCBoZXIgYmFjaywgaGUgc3RyZXRjaGVkIGZvcndhcmQgYW5kIGdyYXNwZWQgYm90aCBoZXIgaG9ybnMuIEh1bWFuaXR5IApjbGFpbWVkIHRoZSBwcm9kdWN0cyBhbmQgYm91bnR5IG9mIHRoZSBlYXJ0aCBmb3IgYWxsLCBub3QgZm9yIGEgZmV3IG9ubHkuIE15IApndWlkZSBjYWxsZWQgdGhlIGNvdyBgIFRoZSBjb3cgb2YgRGVtZXRlcicgLiBNeSByZWFkaW5nIG9mIHRoZSBjbGFzc2ljcyBoYWQgCnRhdWdodCBtZSB0aGF0IERlbWV0ZXIgcmVwcmVzZW50ZWQgdGhlIGVhcnRoLu+/vSAKCgo3MTMuwqDCoMKgwqDCoMKgwqAKSXQgd2FzIGFwcGFyZW50bHkgYXQgdGhpcyBzdGFnZSB0aGF0IHNoZSB3YXMgaW50cm9kdWNlZCB0byB0aGUg77+9Y291bmNpbCAKb2YgaGVhdmVu77+9LiBTaGUgZm91bmQgaXQgdG8gY29uc2lzdCBvZiBhIHNtYWxsIG51bWJlciBvZiBjb2xvc3NhbCBmaWd1cmVzIHNlYXRlZCAKaW4gYSBzZW1pY2lyY2xlLiBUaGUgbWVtYmVycyBzZWVtZWQgaW1wYXRpZW50IHdpdGggdGhlIHdvcmxkIGFuZCBkZXRlcm1pbmVkIHRoYXQgCml0IHNob3VsZCBiZSBkZXN0cm95ZWQsIGJ1dCBzaGUgYmVnZ2VkIG1vc3QgZWFybmVzdGx5IHRoYXQgYW5vdGhlciBjaGFuY2Ugc2hvdWxkIApiZSBnaXZlbiB0byBodW1hbml0eSwgc2F5aW5nIHRoYXQgc2hlIGhhZCBsaXZlZCBhbmQgZGllZCBtYW55IHRpbWVzIGZvciB0aGUgCndvcmxkLCBhbmQgd2FzIHF1aXRlIHJlYWR5IHRvIGRldm90ZSBoZXJzZWxmIG9uY2UgbW9yZSB0byBpdHMgc2VydmljZS4gSGVyIGd1aWRlIAp0b2xkIGhlciBhZnRlcndhcmRzIHRoYXQgc2hlIGhhZCBubyBpZGVhIGluIHRoZSBwaHlzaWNhbCB3b3JsZCBob3cgZWxvcXVlbnQgc2hlIApoYWQgYmVlbiBpbiBoZXIgcGxlYWRpbmdzIG9uIHRoYXQgb2NjYXNpb24uIFRoZXJlIHNlZW1zIHRvIGhhdmUgYmVlbiBzb21lIApkaWZmZXJlbmNlIG9mIG9waW5pb24gaW4gdGhlIGNvdW5jaWwsIGJ1dCBldmVudHVhbGx5IHRoZSBtYWpvcml0eSB5aWVsZGVkIHRvIGhlciAKcHJheWVyLCBhbmQgcHJvbWlzZWQgdG8gc2VuZCBoZWxwIHRvIGhlciBhbmQgdG8gaGVyIGd1aWRlIGluIG9yZGVyIHRoYXQgdGhleSAKbWlnaHQgd29yayBmb3IgdGhlIHdvcmxkLiAoQW4gZXhhbWluYXRpb24gaW50byB0aGUgdHJ1dGggbHlpbmcgYmVoaW5kIHRoaXMgCnJlbWFya2FibGUgdmlzaW9uIG9mIHRoZSDvv71jb3VuY2lsIG9mIGhlYXZlbu+/vSB3YXMgb25lIG9mIHRoZSBtb3N0IGludGVyZXN0aW5nIApmZWF0dXJlcyBvZiB0aGUgaW52ZXN0aWdhdGlvbiwgb2Ygd2hpY2ggSSBzaGFsbCB3cml0ZSBsYXRlci4pIEFmdGVyIHRoaXMgdGhlIApzZW1pLXRoZW9zb3BoaWNhbCB2aXNpb25zIHdlcmUgcmVzdW1lZC4gT25jZSBtb3JlIEkgcXVvdGUgdGhlIHdvcmRzIG9mIGhlciAKbGV0dGVyOiAKCgo3MTQuwqDCoMKgwqDCoMKgwqAK77+9VGhhdCBuaWdodCBvdGhlciB2aXNpb25zIHN1Y2NlZWRlZCwgYnV0IHRoZSBzdG9yeSBvZiBzeW1ib2xvZ3kgY2hhbmdlZC4gCkkgc2F3IGEgdmFsbGV5IGluIHdoaWNoIGxheSB0aGUgaHVtYW4gcmFjZSwgYW5kIG92ZXIgaXQgaG92ZXJlZCBhIHN3YXJtIG9mIApiZWluZ3MgY2xhZCBpbiB3aGl0ZSwgYnV0IHRoZSB3aGl0ZW5lc3MgcmFkaWF0ZWQgbm8gbGlnaHQuIEh1bWFuaXR5IHdhcyBkYXJrIGFuZCAKc2hhZG93ZWQuIEkgcnVzaGVkIHRvIGF3YWtlbiB0aGVtLCBidXQgYXQgbXkgYXBwcm9hY2ggdGhlIHdoaXRlLWNsYWQgZmlndXJlcyAKcnVzaGVkIGludG8gc3Ryb25nLCBkZXRlcm1pbmVkIGFuZCBwb3dlcmZ1bCBncm91cHMgdG8gcHJldmVudCBteSBhY2NvbXBsaXNoaW5nIApteSBwdXJwb3NlLiBJIHJlY29nbmlzZWQgdGhhdCB0aGV5IHdlcmUgZGVjZWl2aW5nIHNwaXJpdHMsIHNlbGYtYXBwb2ludGVkIAp0ZWFjaGVycyBhbmQgcHJlYWNoZXJzIG9mIHRoZSBlYXJ0aCwgYW5kIHRoYXQgdGhleSByZXNvbHV0ZWx5IGJlYXQgZG93biBhbmQgaGVsZCAKZG93biB0aGUgZGF6ZWQgYW5kIHNoYWRvd2VkIGh1bWFuaXR5LiBCdXQgZXZlbiBhcyBJIGxvb2tlZCBJIHNhdyBoZXJlIGFuZCB0aGVyZSAKYW4gYXdha2VuaW5nIHNvdWwgYW1vbmcgdGhlIGh1bWFuIG11bHRpdHVkZS4gQXMgdGhpcyBzb3VsIGF3b2tlIGl0IGdyZXcgbHVtaW5vdXMgCmFzIHdpdGggYSBsaWdodCBmcm9tIHdpdGhpbiwgYW5kIGF0IHRoZSBzYW1lIHRpbWUgaXQgYXJvc2UgZnJvbSBpdHMgcHJvbmUgCnBvc2l0aW9uIGFuZCBiZWdhbiB0byBtb3ZlIGFib3V0IG92ZXIgdGhlIHNsZWVwaW5nIHdvcmxkLCB0cnlpbmcgdG8gYXJvdXNlIApvdGhlcnMuIEkgc2VlbWVkIHRvIHN0YW5kIG9uIGEgZGlzdGFudCBtb3VudGFpbiwgYnV0IGNvdWxkIGRpc3RpbmN0bHkgc2VlIAp3aGVuZXZlciBhIHNvdWwgYmVnYW4gdG8gYXdha2VuIGFuZCB0byBzaGluZSwgYW5kIGJlZm9yZSB0aGUgdmlzaW9uIHBhc3NlZCwgbWFueSAKb2YgdGhlc2UgcmFkaWFudCBsaWdodHMgc2VlbWVkIHRvIGJ1cnN0IG91dCBoZXJlIGFuZCB0aGVyZSwgYW5kIGV2ZW4gYSBnb2xkZW4gCmxpZ2h0IG9mIHN1bi1yYXlzIGJlZ2FuIHRvIGdpbGQgdGhlIHRvcHMgb2YgdGhlIHN1cnJvdW5kaW5nIG1vdW50YWlucywgYW5kIHRoZSAKd2hpdGVyb2JlZCBmaWd1cmVzIGZsZWQgYXMgdGhpcyBnb2xkZW4gcmFkaWFuY2UgaW5jcmVhc2VkLiBUaGV5LCBob3dldmVyLCAKY29udGludWVkIHRvIGV4ZXJjaXNlIHRoZW1zZWx2ZXMgaW4gc3RyZW51b3VzIGVuZGVhdm91cnMgdG8gY291bnRlcmFjdCBhbmQgCm9wcG9zZSBteSBlZmZvcnRzIHRvIGhlbHAgdGhlIHdvcmxkIG9yIHRvIGxpdmUgbXkgbGlmZS4gCgoKNzE1LsKgwqDCoMKgwqDCoMKgCu+/vUFsbCBuaWdodCB0aGUgdmlzaW9ucyBjb250aW51ZWQsIGJ1dCB0aG9zZSB0b3dhcmRzIG1vcm5pbmcgd2VyZSB2YWd1ZS4gCk15IGd1aWRlIGF3b2tlIG1lIGFuZCB0b2xkIG1lIHRvIGdldCB1cCBhbmQgZ2V0IGEgY3VwIG9mIGNvZmZlZSBhbmQgdG8gZ2F0aGVyIApteXNlbGYgdG9nZXRoZXIsIGFzIEkgd2FzIHNvIG11Y2ggaW4gdGhlIHNwaXJpdCBhcyB0byBiZSBhYm91dCB0byBkZXBhcnQgZnJvbSAKdGhlIGJvZHkgYWx0b2dldGhlci4gV2hlbiBJIGhhZCBvYmV5ZWQgSSBmb3VuZCBteXNlbGYgZGF6ZWQuIEFsbCB0aGUgdGltZSBpbiAKd2hpY2ggSSB3YXMgZW5kZWF2b3VyaW5nIHRvIG1ha2UgYSBmaXJlIGFuZCB0byBwcmVwYXJlIHRoZSBjdXAgb2YgY29mZmVlLCBteSAKZ3VpZGUgd2FzIHByZXNlbnQgYW5kIEkgd2FzIGNvbnNjaW91cyBvZiBhIG1vc3Qgd29uZGVyZnVsIGNvbmRpdGlvbi4gQW5nZWxzIApzZWVtZWQgdG8gc3Vycm91bmQgbWUgYW5kIHRvIHNpbmcgaHltbnMgb2YgdGhhbmtzZ2l2aW5nLiBJdCB3YXMgVGhhbmtzZ2l2aW5nIAptb3JuaW5nLCBhbmQgdGhlIGZvcm1lciBpbmNsZW1lbmN5IG9mIHRoZSB3ZWF0aGVyIGhhZCBnaXZlbiBwbGFjZSB0byBiYWxtaW5lc3MuIApJIG9wZW5lZCB0aGUgZG9vciBhbmQgdHVybmVkIG15IGZhY2UgdG8gdGhlIHNvdXRoLXdlc3QuIEkgZmVsdCBteXNlbGYgc3Vycm91bmRlZCAKYnkgc3VwZXJuYWwgQmVpbmdzLCBhbmQgc2FuZyB3aXRoIHRoZW0gYSB3b25kZXJmdWwgaHltbiBvZiBwcmFpc2UgYW5kIAp0aGFua3NnaXZpbmcuIEl0IHJlc2VtYmxlZCB0aGUgQXNzdW1wdGlvbiBvZiB0aGUgVmlyZ2luLW1vdGhlciwgdGhlIGltbWFjdWxhdGUgCmNvbmNlcHRpb24sIHRoZSBiaXJ0aCBhbmQgcHJlc2VuY2Ugb2YgdGhlIHdvbmRlcmZ1bCBDaGlsZCBhdCBvbmNlLiBBIHBlY3VsaWFybHkgCnJlZnJlc2hpbmcgYnV0IHVuZmFtaWxpYXIgb2RvdXIgcGVybWVhdGVkIHRoZSBhdG1vc3BoZXJlLiBNeSBndWlkZSBzYWlkIHRoYXQgdGhlIAphbmdlbHMgd2VyZSBidXJuaW5nIGZyYW5raW5jZW5zZS4gTGF0ZXIgaW4gdGhlIGRheSBteSBndWlkZSBhZ2FpbiB0b2xkIG1lIHRvIGdvIAp0byBiZWQuIAoKCjcxNi7CoMKgwqDCoMKgwqDCoArvv71UaGUgdmlzaW9uIHdhcyBtb3N0IHdvbmRlcmZ1bC4gQWdhaW4gSSBiZWhlbGQgQ3JlYXRpb24sIGJ1dCB0aGlzIHRpbWUgaXQgCndhcyBkaWZmZXJlbnQuIEkgc2F3IHRoZSByYWNlcyBpbiB0aGUgYWdncmVnYXRlLiBBcyB0aGUgcmFjZXMgYXBwZWFyZWQgYW5kIAp2YW5pc2hlZCwgbXkgZ3VpZGUgc2FpZCBzb2xlbW5seTogYCBBbmQgdGhlIGV2ZW5pbmcgYW5kIHRoZSBtb3JuaW5nIHdlcmUgdGhlIApmaXJzdCBkYXksJyBgIEFuZCB0aGUgZXZlbmluZyBhbmQgdGhlIG1vcm5pbmcgd2VyZSB0aGUgc2Vjb25kIGRheSwnIGV0Yy4gClNvbWVob3csIHRob3VnaCBJIGNhbm5vdCBub3cgZXhwbGFpbiBpdCwgYWx0aG91Z2ggSSBmZWx0IHRoYXQgSSB1bmRlcnN0b29kIGl0IGF0IAp0aGUgdGltZSwgdGhlIGZpZnRoIHJhY2Ugd2FzIGJvcm4gaW4gdGhlIGZvdXJ0aCBkYXksIGFuZCBzZWVtZWQgdG8gYmUgb2Ygc3BlY2lhbCAKaW1wb3J0YW5jZS4gVG8gdGhhdCBiaXJ0aCBteSBzcGVjaWFsIGF0dGVudGlvbiB3YXMgY2FsbGVkLCBhcyB0aGUgZnVsbC1mbGVkZ2VkIApmaWZ0aC1yYWNlIG1hbiBsYXkgc3RyZXRjaGVkIG9uIHRoZSBoYW5kcyBvZiBhIGdyZWF0IEJlaW5nLCBhbmQgd2FzIGhlbGQgb3V0IHRvIAptZSB0byBvYnNlcnZlLiBJbiB0aGlzIHZpc2lvbiBJIHNhdyB0aGF0LCB1cCB0byB0aGUgZmlmdGggcmFjZSwgbWFua2luZCB3YXMgYWxsIApzb3J0cy4gU29tZSB3ZXJlIGxhcmdlIGFuZCBzb21lIHdlcmUgc21hbGwuIENoYW9zIHByZXZhaWxlZCwgYW5kIHRoZXJlIHdhcyAKbGl0dGxlIG9yZGVyIGFueXdoZXJlIGluIHRoZSBodW1hbiB1bml2ZXJzZS4gQnV0IGFmdGVyIHRoZSBiaXJ0aCBvZiB0aGUgZmlmdGggCnJhY2UgbWFuIEkgc2F3IHRoYXQgYWxsIGhhZCBiZWNvbWUgZXF1YWwgYW5kIGFsbCB3b3JrZWQgaW4gcGVyZmVjdCBoYXJtb255LiBJIApzYXcgYWxzbywgYXQgdGhpcyB0aW1lLCB0aGF0IHRoZSByYWNlIHRvb2sgc29saWQgZm9ybSwgbGlrZSBhIHBoYWxhbngtLSB0aGUgCmZvcm0sIGhvd2V2ZXIsIGJlaW5nIGNpcmN1bGFyLS0gYW5kIHRoYXQgYSBiYW5kIHdhcyBzbGlwcGVkIGFyb3VuZCB0aGUgd2hvbGUgCm1hc3MsIHBhc3NpbmcgZnJvbSBtYW4gdG8gbWFuLCBhbmQgdGhhdCBubyBtYW4gY291bGQgZ2V0IG91dHNpZGUgb2YgdGhhdCBiaW5kaW5nIApiYW5kLiBUaGUgcGFzc2luZyBvZiB0aGUgcmFjZSB3YXMgbWFya2VkIGJ5IHRoZSB3aG9sZSBodW1hbiByYWNlIGJlaW5nIHN1ZGRlbmx5IAp0cmFuc2Zvcm1lZCBpbnRvIHRoZSBzb3VsIGZvcm0tLSBlZ2ctc2hhcGVkLiAKCgo3MTcuwqDCoMKgwqDCoMKgwqAK77+9SW4gdGhlIHNpeHRoIHJhY2UgdGhlIGRldmVsb3BtZW50IHdhcyB2ZXJ5IG1hcmtlZCBpbmRlZWQuIFRoZSAKaW5kaXZpZHVhbHMgd2VyZSBlcXVhbCwgYnV0IG11Y2ggbGFyZ2VyIHRoYW4gaW4gdGhlIGZpZnRoIHJhY2UuIFRoZSB0ZW5kZW5jeSBvZiAKdGhlIHdob2xlIHJhY2Ugd2FzIG11Y2ggbW9yZSB1cHdhcmQsIGFuZCB0aGUgbW92ZW1lbnQgaGFkIGJlY29tZSBncmVhdGx5IAphY2NlbGVyYXRlZC4gQXQgc29tZSB0aW1lIHRvd2FyZHMgdGhlIGNsb3NlIG9mIHRoZSBmaWZ0aCBvciB0aGUgYmVnaW5uaW5nIG9mIHRoZSAKc2l4dGgtLSBJIGNhbm5vdCBhY2N1cmF0ZWx5IHJlY2FsbCBqdXN0IHdoZW4tLSBJIHNhdyBzdW5saWdodCBhZ2FpbiBnaWxkaW5nIHRoZSAKcGVha3MuIFRoZSByYWNlIGVtZXJnZWQgZnJvbSBzaGFkb3cgaW50byBzdW5saWdodCwgYW5kIHRoZSBvbndhcmQgYW5kIHVwd2FyZCAKdGVuZGVuY3kgYmVjYW1lIHN3aWZ0ZXIgYW5kIHN3aWZ0ZXIuIFRoZW4sIHRoZSBob3VyIGhhdmluZyBvbmNlIG1vcmUgc3RydWNrLCB0aGUgCmVnZ3MgbGF5IHRvZ2V0aGVyIGp1c3QgYXMgZG8gdGhlIGVnZ3MgaW4gYSBuZXN0LCBidXQgdGhlaXIgbnVtYmVyIHdhcyBjb3VudGxlc3MuCgoKNzE4LsKgwqDCoMKgwqDCoMKgCu+/vU15IGd1aWRlIGxlZnQgbWUgaGVyZS4gSGUgc2FpZCBoZSBjb3VsZCBub3QgZ28gb24gd2l0aCBtZSwgdGhhdCBJIG11c3QgCmdvIG9uIGFsb25lIGFuZCBpbnRlcnByZXQgZm9yIG15c2VsZiB0aGUgbWVhbmluZyBvZiBteSB2aXNpb25zLiBIZSB3YXJuZWQgbWUgdG8gCmJlIGNhcmVmdWwgbm90IHRvIGdpdmUgdXAgbXkgbGlmZTsgZm9yIHVwb24gbXkgZ29pbmcgdGhyb3VnaCBzdWNjZXNzZnVsbHkgYW5kIApub3QgZ2l2aW5nIHVwIG15IGxpZmUgd291bGQgZGVwZW5kIG15IHN1Y2Nlc3MgYW5kIHRoZSBzYWx2YXRpb24gb2YgdGhlIHdvcmxkLCAKZm9yIHdoaWNoIGFsbCB0aGlzIHRoYXQgd2UgaGFkIHNlZW4gaGFkIGJlZW4gZG9uZS4gSW4gb3RoZXIgd29yZHMsIEkgYmVsaWV2ZWQgCm15c2VsZiB0byBiZSBwYXNzaW5nIHRocm91Z2ggYSB0ZXJyaWJsZSBvcmRlYWwgZm9yIHRoZSBzYWx2YXRpb24gb2YgdGhlIHdvcmxkLgoKCjcxOS7CoMKgwqDCoMKgwqDCoArvv71BcyBJIGJlaGVsZCB0aGUgZGV2ZWxvcG1lbnQgb2YgdGhlIHNldmVudGggcmFjZSBJIHNlZW1lZCB0byBnbyB0byAKdW5pbWFnaW5hYmxlIGFsdGl0dWRlcyBpbmRlZWQuIFRoZSBiYW5kIHRoYXQgSSBmaXJzdCBzYXcgYmluZGluZyB0aGUgZmlmdGggcmFjZSAKd2FzIHN0cm9uZ2x5IGVuY29tcGFzc2luZyB0aGUgc2l4dGggYW5kIHNldmVudGggcmFjZXMuIEl0IGJlY2FtZSB1bmJyZWFrYWJsZS4gCkFuZCBhcyBJIGxvb2tlZCBpbnRvIHRoZSBmYWNlcyBvZiB0aGUgbWVuIG9mIHRoZSBzZXZlbnRoIHJhY2UsIEkgc2F3IHRoYXQgCmdyYWR1YWxseSB0aGV5IHNob25lIG1vcmUgYW5kIG1vcmUgYnJpZ2h0bHkgd2l0aCBhbiBpbm5lciBsaWdodC4gVGhlaXIgcmFkaWFuY2UgCm5vIGxvbmdlciBjYW1lIGZyb20gd2l0aG91dCwgYnV0IGVhY2ggd2FzIHNoaW5pbmcsIGxpdmluZywgZGF6emxpbmcgbGlnaHQuIAoKCjcyMC7CoMKgwqDCoMKgwqDCoArvv71NeSBib2R5IHdhcyBub3cgdmVyeSB3ZWFyeSwgYW5kIHdoZW4gZXZlbmluZyBjYW1lIEkgYmVnZ2VkIGZvciByZXN0LiBCdXQgCnRoaXMgd2FzIG5vdCBnaXZlbi4gSSB3YXMgcHV0IHRocm91Z2ggbWFueSB0cmlhbHMuIE1hbnkgd2VyZSB0ZXJyaWJsZSwgYW5kIGl0IApyZXF1aXJlZCB0aGUgdXRtb3N0IGV4ZXJ0aW9uIG9mIG15IHBvd2VycyB0byBlbmFibGUgbWUgdG8gZW5kdXJlLiBXaGF0IHdhcyB0aGUgCm5hdHVyZSBvZiB0aGlzIEkgZG8gbm90IGtub3cuIEkga25vdyBvbmx5IHRoYXQgSSBwcm9taXNlZCB0byBkZWxpdmVyIEdvZCcgcyAKbWVzc2FnZSB1bmRlciBhbnkgYW5kIGFsbCBjb25kaXRpb25zLCBubyBtYXR0ZXIgd2hhdCB0aGV5IG1pZ2h0IGJlLCBpZiBIZSBzaG91bGQgCnJlcXVpcmUgaXQuIEJ1dCB0aGUgdHJpYWxzIHdlcmUgYXdmdWwuIEF0IG9uZSB0aW1lIEkgcmVmdXNlZCB0aGUgdmlzaW9ucywgdGhvdWdoIAp0aGV5IHdlcmUgYmVjb21pbmcgbW9yZSBhbmQgbW9yZSBiZWF1dGlmdWwuIFRoZXkgdGhlbiBjZWFzZWQsIGFuZCBJIHNlZW1lZCB0byAKZmluZCBteXNlbGYgaW4gdGhlIHBvd2VyIG9mIFNhdGFuLiAoQWxsIHRoZXNlIG9ydGhvZG94IHRlcm1zIEkgcGVyc29uYWxseSBoYWQgCmxvbmcgZGlzY2xhaW1lZCBidXQgdGhleSBiZWNhbWUgcmVhbCBhZ2FpbiBpbiB0aGUgdmlzaW9ucy4pIAoKCjcyMS7CoMKgwqDCoMKgwqDCoArvv71Gb3IgYSB0aW1lIEkgYmVsaWV2ZWQgdGhhdCBhcyBhIHB1bmlzaG1lbnQgZm9yIG15IHBlcnZlcnNlbmVzcywgb3IgCnJhdGhlciBhcyBhIHJlc3VsdCBvZiB0aGlzIG1pc3Rha2UsIEkgaGFkIGxvc3QgYWxsLiBUaGUgYXdmdWwgY3Jpc2lzIGhhZCBwYXNzZWQuIApUaGUgd29ybGQgd2FzIGxvc3QgYXMgYSByZXN1bHQgb2YgbXkgZmFpbHVyZTsgYW5kIG5vdyBpdCBzZWVtZWQgdG8gYmUgbm90IG9ubHkKdGhpcyB3b3JsZCwgYnV0IHRoZSBVbml2ZXJzZS4gSG93IEkgcHJheWVkIGFuZCBzdHJ1Z2dsZWQgdGhlbiEgQmVmb3JlIAphbGwgY291bGQgYmUgcmVzdG9yZWQgSSBwcm9taXNlZCBub3Qgb25seSB0byBnaXZlIHVwIG15IGxpZmUgYnV0IHRoZSBsaXZlcyBvZiBteSAKY2hpbGRyZW4gYW5kIGV2ZW4gdGhlIHZlcnkgbGlmZSBvZiBteSBzb3VsLCBpZiBuZWVkIGJlIGZvciB0aGUgCnNhbHZhdGlvbiBvZiB0aGUgd29ybGQuIAoKCjcyMi7CoMKgwqDCoMKgwqDCoArvv71JIGNhbm5vdCBsaW5nZXIgaGVyZS4gVG93YXJkcyBtb3JuaW5nIGEgd29uZGVyZnVsIGJyZWF0aCBjYW1lIGludG8gbXkgCmJvZHksIGdvaW5nIHVwIGFuZCBkb3duIHRoZSBzcGluZSBhcyBpZiB0aGVyZSB3ZXJlIGFic29sdXRlbHkgbm8gcGh5c2ljYWwgCm9ic3RydWN0aW9uIGluIG15IGJvZHksIGFuZCBhcyBpdCBicmVhdGhlZCBvciBmbG93ZWQgdGhyb3VnaCBtZSwgaXQgc2FuZyBhIAp3b25kZXJmdWwsIGRpdmluZSBhbnRoZW0sIGFuZCBlbmRlZCBpbiBhIG1hcnZlbGxvdXMgdW5pb24sIGluIHdoaWNoIEkgZmVsdCAKbXlzZWxmIGZ1bGx5IHVuaXRlZCB3aXRoIEdvZC4gVGhhdCB3YXMgYSBjb25kaXRpb24gaXQgd2VyZSBmb2xseSB0byBhdHRlbXB0IHRvIApkZXNjcmliZS4gCgoKNzIzLsKgwqDCoMKgwqDCoMKgCu+/vUR1cmluZyB0aGlzIHRpbWUgSSBiZWhlbGQgYSBuZXcgc2VyaWVzIG9mIHZpc2lvbnMtLSBhbGwgb2YgZ2xvcnkuIFRoZXJlIAp3ZXJlIG5vIGZvcm1zIHRoYXQgSSBjYW4gcmVjYWxsLCBidXQgZ2xvcnkgYWZ0ZXIgZ2xvcnkgb2YgY29sb3VyLCBlYWNoIApicmlnaHRlciBhbmQgZ3JhbmRlciB0aGFuIHRoZSBsYXN0LiBBdCBsYXN0IGl0IHdhcyBhIHdvbmRlcmZ1bCB2aW9sZXQsIGFuZCBhcyBpdCAKc2hvbmUgdXBvbiBtZSBpbiB1bnNwZWFrYWJsZSBnbG9yeSwgSSB3YXMgdG9sZCB0aGF0IEkgbWlnaHQgZ28gb24gYW5kIHNlZSBHb2QgaWYgCkkgd291bGQuIEkgYXNrZWQgaWYgZnJvbSB0aGVyZSBJIG1pZ2h0IHJldHVybiwgYW5kIHdhcyB0b2xkIHRoYXQgaWYgSSB3ZW50IG9uIEkgCmNvdWxkIG5vdCByZXR1cm4uIEkgdGhlbiBzYWlkIG9uY2UgbW9yZSwgYXMgSSBoYWQgZG9uZSBpbiBhIGh1bmRyZWQgb3RoZXIgCnRyaWFsczogYCBJIG11c3QgbGl2ZSB0byBzYXZlIHRoZSB3b3JsZC4nIEFuZCBhcyBJIHNhaWQgdGhhdCBhbmQgcmVmdXNlZCB0byBnbyAKb24sIHRoZSBzdW4gcm9zZSBpbiB0aGUgd29ybGQsIHdoZXJlIEkgd2FzIHRoZW4gY29uc2Npb3VzLCBhbmQgSSBsb29rZWQgdXAgYXQgbXkgCmJlYXV0aWZ1bCB2aXNpb24sIHRoaW5raW5nIGhvdyBkdWxsIHRoZSBzdW4gd2FzLCBhbmQgdGhlbiBncmFkdWFsbHkgdGhlIHZpc2lvbiAKZmFkZWQuIAoKCjcyNC7CoMKgwqDCoMKgwqDCoArvv71KdXN0IHdoZW4sIEkgY2Fubm90IHNheSwgYnV0IGFib3V0IHRoaXMgdGltZSwgSSB3YXMgbGFpZCBvbiBhIGNyb3NzIApkdXJpbmcgdGhlIG5pZ2h0LCBwbGFjZWQgaW4gYSBzZXB1bGNocmUsIGFuZCBiZWxpZXZlZCBteSBib2R5IHdhcyBkZWFkLgpNeSBwaHlzaWNhbCBoZWFydCwgYXMgSSB0aG91Z2h0LCB3YXMgYXJyZXN0ZWQsIGFuZCB0aGUgcGFpbiB3aGljaCBJIAplbmR1cmVkIHdhcyBleGNydWNpYXRpbmcuIEJ1dCB0aGUgYmxpc3Mgb2YgbXkgc291bCBpbiB0aGUgaGlnaGVyIHZpc2lvbnMgd2FzIGFzIApncmVhdCBhcyB3YXMgdGhlIHBhaW4gaW4gdGhlIGJvZHkgaW4gdGhlIHNhY3JpZmljaWFsIHRyaWFscy4gCgoKNzI1LsKgwqDCoMKgwqDCoMKgCu+/vUFmdGVyIHRoaXMgSSBtdXN0IGRlc2lzdCBmcm9tIGFueSBlZmZvcnQgYXQgZGVzY3JpcHRpb24uIEkgcmVhbGx5IGNhbm5vdCAKdGVsbCB0aGUgc3RyYW5nZSB0aGluZ3MgdGhhdCBiZWZlbGwgbWUsIG5vciBhcmUgdGhleSBjbGVhciBpbiBteSBtZW1vcnkuIE9uZSBvZiAKdGhlIGlkZWFzIHdhcyB0aGF0IEkgd2FzIHB1dCB0aHJvdWdoIHByZXBhcmF0aW9uIGZvciB0aGUgd29yayBJIHdhcyB0byBkbzsgCmFub3RoZXIsIEkgc2VlbWVkIHRvIGhlYXIsIGFuZCBiZSBhIHBhcnQgb2YsIGludm9sdXRpb24gYXMgd2VsbCBhcyBldm9sdXRpb24uIApQZXJoYXBzIGl0IHJlcHJlc2VudGVkIHRoZSBleHBlcmllbmNlcyBvZiB0aGUgc291bCBwcmVwYXJpbmcgZm9yIGluY2FybmF0aW9uLgoKCjcyNi7CoMKgwqDCoMKgwqDCoArvv71XaGVuIGF0IGxhc3QgSSBjYW1lIG91dCBvZiBpdCBhbGwsIEkgZm91bmQgbXkgc29ycm93LXN0cmlja2VuIGZhbWlseSAKYXJvdW5kIG15IGJlZC4gVGhleSBoYWQgdGhvdWdodCB0aGF0IEkgd2FzIGR5aW5nLiBGcm9tIHRoZSBiZWdpbm5pbmcgb2YgbXkgCmFibm9ybWFsIGNvbmRpdGlvbiB0byB0aGUgZmluYWwgY2xvc2UgaGFkIGJlZW4gdHdlbHZlIGRheXMsIGFuZCBmb3IgZml2ZSBkYXlzIAphbmQgbmlnaHRzIEkgaGFkIG5vdCBzbGVwdC4gT24gdGhlIGxhc3QgZGF5LCBJIGhhZCBiZWxpZXZlZCBteXNlbGYgdGhhdCBhZnRlciAKYWxsIEkgd2FzIG5vdCB0byBsaXZlIGxvbmdlciBpbiB0aGlzIHdvcmxkLCBhbmQgd2hlbiBJIGF3b2tlIHRvIGZ1bGwgYW5kIG5vcm1hbCAKY29uc2Npb3VzbmVzcywgdGhlIHZvaWNlIHRoYXQgSSBoYWQgaGVhcmQgc28gbXlzdGVyaW91c2x5IGdyYWR1YWxseSBmYWRlZCBhd2F5LCAKYXMgZGlkIHRoZSB2aXNpb25zLCBhbmQgbmVpdGhlciBoYXZlIGFwcGVhcmVkIHRvIG1lIHNpbmNlLiAKCgo3MjcuwqDCoMKgwqDCoMKgwqAK77+9QnV0IHNpbmNlIHRoZW4sIEkgaGF2ZSBiZWVuIGNvbnNjaW91cyBvZiBhIG5ldyBzcGlyaXR1YWwgbGlmZSwgYW5kIGluIAptZWRpdGF0aW9uIEkgcmVhY2ggYSBibGlzc2Z1bCBjb25kaXRpb24sIGFuZCBJIGZlZWwgc3VyZSB0aGF0IHNvbWUgd29uZGVyZnVsIAp0aGluZyBoYXMgaGFwcGVuZWQgdG8gbWUu77+9IAoKCjcyOC7CoMKgwqDCoMKgwqDCoApUSEUgVklTSU9OIElOVkVTVElHQVRFRCAKCgo3MjkuwqDCoMKgwqDCoMKgwqAKSXQgbXVzdCBiZSB1bmRlcnN0b29kIHRoYXQgdGhlIGV4dHJhY3RzIGdpdmVuIGFib3ZlIGFyZSBvbmx5IGEgc21hbGwgcGFydCAKb2YgdGhlIHZpc2lvbnMgZGVzY3JpYmVkIGJ5IG91ciBjb3JyZXNwb25kZW50LCBidXQgSSB0aGluayB0aGF0IEkgaGF2ZSBnaXZlbiBhIApmYWlyIHNhbXBsZSBvZiB0aGVtLCBhbmQgaGF2ZSBub3Qgb21pdHRlZCBhbnkgcG9pbnQgb2Ygc3BlY2lhbCBpbnRlcmVzdC4gCgoKNzMwLsKgwqDCoMKgwqDCoMKgCkFueW9uZSB3aG8gaXMgYWNjdXN0b21lZCB0byBhbmFseXNlIHBzeWNoaWMgcGhlbm9tZW5hIHdpbGwgYXQgb25jZSBzZWUgCnRoYXQgdGhlcmUgYXJlIGluIHRoZSBhY2NvdW50IHNldmVyYWwgZmVhdHVyZXMgd2hpY2ggZGlmZmVyZW50aWF0ZSBpdCBmcm9tIHRoZSAKYXZlcmFnZS4gTWFueSB2aXNpb25zLCBldmVuIHRob3VnaCBxdWl0ZSBlbGFib3JhdGUgYW5kIGRldGFpbGVkLCBhbmQgaW50ZW5zZWx5IApyZWFsaXN0aWMgdG8gdGhlIHNlZXIsIHByb3ZlIG9uIGV4YW1pbmF0aW9uIHRvIGJlIGVudGlyZWx5IHNlbGYtY3JlYXRlZC4gSSBtZWFuIAp0aGF0IGEgbWFuIGZpcnN0IHRoaW5rcyBvdXQgYSBzdWJqZWN0IGhpbXNlbGYgYWxvbmcgY2VydGFpbiBsaW5lcywgdGhlcmVieSAKY3JlYXRpbmcgYSBzZXJpZXMgb2YgdGhvdWdodC1mb3JtczsgYW5kIHRoZW4gaGUgcHJvY2VlZHMgdG8gcGFzcyBvdXQgb2YgaGlzIGJvZHkgCmluIHNsZWVwIG9yIHRyYW5jZSwgc2VlcyBoaXMgb3duIHRob3VnaHQtZm9ybXMgd2l0aG91dCByZWNvZ25pc2luZyB0aGVtIGFzIGhpcywgCmFuZCBzdXBwb3NlcyB0aGVtIHRvIGJlIGFjdHVhbGl0aWVzIGluc3RlYWQgb2YgaW1wZXJmZWN0IHJlZmxlY3Rpb25zLiBUaHVzIGhlIGlzIApzdHJvbmdseSBjb25maXJtZWQgaW4gaGlzIHBhcnRpY3VsYXIgYmVsaWVmIG9yIHN1cGVyc3RpdGlvbiwgd2hhdGV2ZXIgaXQgaGFwcGVucyAKdG8gYmUsIGJlY2F1c2UgaGUgaGltc2VsZiBoYXMgc2VlbiBpdCBpbiBhIHZpc2lvbiB3aGljaCBoZSBpcyBzdXJlIHRvIHJlZ2FyZCBhcyAKY2VsZXN0aWFsLiBTdWNoIGEgbWFuIGlzIG9mIGNvdXJzZSBwZXJmZWN0bHkgaG9uZXN0IGluIGhpcyBjb252aWN0aW9uLCBhbmQgZXZlbiAKcGVyZmVjdGx5IHJpZ2h0IGluIHNheWluZyB0aGF0IGhlIGhhcyBzZWVuIGNlcnRhaW4gdGhpbmdzOyB0aGUgd2VhayBwb2ludCBpcyAKdGhhdCBoZSBoYXMgbm90IHRoZSB0cmFpbmluZyB3aGljaCB3b3VsZCBlbmFibGUgaGltIHRvIGRpc3Rpbmd1aXNoIHRoZSBuYXR1cmUgb2YgCndoYXQgaGUgaGFzIHNlZW4uIEluIHRoZSBjYXNlIG5vdyBiZWZvcmUgdXMsIGhvd2V2ZXIsIHRoZXJlIGFyZSB2YXJpb3VzIGxpdHRsZSAKdG91Y2hlcywgd2hpY2ggYXJlIGV4dHJlbWVseSB1bmxpa2VseSB0byBoYXZlIGJlZW4gdGhlIHRob3VnaHRzIG9mIHRoZSBzZWVyLCBhbmQgCnRoZXJlIGlzIGNvbnNpZGVyYWJsZSBldmlkZW5jZSB0aGF0IGEgbWluZCBkaWZmZXJpbmcgbXVjaCBmcm9tIGhlcnMgbXVzdCBoYXZlIApiZWVuIHJlc3BvbnNpYmxlIGZvciBhIGdyZWF0IGRlYWwgb2Ygd2hhdCB3YXMgc2Vlbi4gCgoKNzMxLsKgwqDCoMKgwqDCoMKgCkFzIG91ciBjb3JyZXNwb25kZW50IHdhcyBhbnhpb3VzIHRvIHVuZGVyc3RhbmQgdGhlIGdlbmVzaXMgb2YgaGVyIAp2aXNpb25zLCBhbmQgYXMgdGhlaXIgaGlzdG9yeSBnYXZlIHByb21pc2Ugb2Ygc29tZXdoYXQgdW51c3VhbCBmZWF0dXJlcywgaXQgCnNlZW1lZCB3b3J0aCB3aGlsZSB0byBtYWtlIGEgZGVmaW5pdGUgaW52ZXN0aWdhdGlvbiBpbnRvIHRoZSBtYXR0ZXIuIAoKCjczMi7CoMKgwqDCoMKgwqDCoApBIHJhcHBvcnQgd2FzIHRoZXJlZm9yZSBvYnRhaW5lZCB3aXRoIHRoZSBsYWR5LCBhbmQgaXQgd2FzIApmdXJ0aGVyIGZvdW5kIG5lY2Vzc2FyeSB0byBleGFtaW5lIHRoZSBhc3RyYWwgYW5kIG1lbnRhbCByZWNvcmRzIGNvbm5lY3RlZCB3aXRoIApoZXIsIGFuZCB0aHVzIGFzY2VydGFpbiB3aGF0IGhhZCByZWFsbHkgaGFwcGVuZWQgdG8gaGVyLiBJdCB3YXMgc29vbiBvYnZpb3VzIAp0aGF0IG1hbnkgZGlzdGluY3QgZmFjdG9ycyBlbnRlcmVkIGludG8gdGhlIG1hdHRlciwgYW5kIGl0IHdhcyBvbmx5IGJ5IHBhdGllbnRseSAKZGlzZW50YW5nbGluZyB0aGUgdGhyZWFkcyBhbmQgZm9sbG93aW5nIGVhY2ggb25lIHVwIHRvIGl0cyBvcmlnaW4gdGhhdCBhbGwgdGhlIApjYXVzZXMgY291bGQgYmUgY2xlYXJseSBzZWVuLiBUbyBwdXQgdGhlIGNhc2UgYnJpZWZseTogCgoKNzMzLsKgwqDCoMKgwqDCoMKgClRoZSBsYWR5LCBhcyBodW5kcmVkcyBvZiBvdGhlciBwZW9wbGUgaGF2ZSBkb25lLCBoYWQgZ290IGhlcnNlbGYgaW50byAKc2VyaW91cyB0cm91YmxlIGJ5IGFuIHVud2lzZSB1c2Ugb2YgYnJlYXRoaW5nIGV4ZXJjaXNlcy4gSGVyIGRlc3BlcmF0ZSBlZmZvcnRzIAp0byBlc2NhcGUgZnJvbSB0aGUgcmVzdWx0IG9mIHRoZXNlIGV4ZXJjaXNlcyBhdHRyYWN0ZWQgdGhlIGF0dGVudGlvbiBvZiBhIGRlYWQgCm1hbiB3aG8gd2FzIHN0cm9uZyBlbm91Z2ggdG8gYmUgb2Ygc29tZSB1c2UgdG8gaGVyLiBCdXQgdGhpcyBtYW4gaGFkIG9iamVjdHMgb2YgCmhpcyBvd24gdG8gZ2Fpbi0tIG9iamVjdHMgbm90IGNvbnNjaW91c2x5IHNlbGZpc2gsIGJ1dCBiZWxvbmdpbmcgdG8gYSBjdXJpb3VzIApwZXJzb25hbCBkZWx1c2lvbiBvZiBoaXMtLSBhbmQgYXMgaGUgaGVscGVkIGhlciBoZSByZWFsaXNlZCB0aGF0IGhlIGhhZCBoZXJlIAp3aGF0IG1pZ2h0IGJlIGEgcG93ZXJmdWwgaW5zdHJ1bWVudCBmb3IgdGhlIGZ1cnRoZXJhbmNlIG9mIGhpcyBwbGFucy4gSGUgCnByb21wdGx5IG1vZGlmaWVkIGhpcyBzY2hlbWUsIGdhdmUgaGVyIGEgcHJvbWluZW50IHBhcnQgaW4gaXQsIGFuZCBwdXNoZWQgaGVyIG9uIAppbnRvIGV4cGVyaWVuY2VzIHdoaWNoIHdpdGhvdXQgaGltIHNoZSB3b3VsZCBwcm9iYWJseSBub3QgaGF2ZSBoYWQgZm9yIHNldmVyYWwgCmluY2FybmF0aW9ucyB5ZXQuIAoKCjczNC7CoMKgwqDCoMKgwqDCoApNdWNoIG9mIHdoYXQgcmVzdWx0ZWQgd2FzIGV2aWRlbnRseSBub3QgYXQgYWxsIHdoYXQgaGUgaGFkIGV4cGVjdGVkLCAKdGhvdWdoIGhlIHRyaWVkIGJyYXZlbHkgdG8gdHVybiBpdCBhbGwgdG8gYWNjb3VudC4gRXZlbnR1YWxseSBoZSBkcm9wcGVkIGhlciwgCnBhcnRseSBiZWNhdXNlIGhlIHdhcyBhbGFybWVkIGF0IHRoZSB0dXJuIHdoaWNoIG1hdHRlcnMgd2VyZSB0YWtpbmcsIGFuZCBwYXJ0bHkgCmJlY2F1c2UgaGUgYmVnYW4gdG8gc2VlIHRoYXQgaGUgY291bGQgbm90IHVzZSBoZXIgcXVpdGUgYXMgaGUgaGFkIGhvcGVkLiBUaGUgCm91dGNvbWUgb2YgdGhlIHdob2xlIGFkdmVudHVyZSwgc28gZmFyIGFzIG91ciBjb3JyZXNwb25kZW50IGlzIGNvbmNlcm5lZCwgaGFzIApiZWVuIGdvb2QsIGJ1dCB0aGlzIGlzIGEgcGllY2Ugb2YgZ29vZCBmb3J0dW5lIGZvciB3aGljaCBzaGUgY2Fubm90IGJlIHRvbyAKdGhhbmtmdWwsIHNpbmNlIHRoZSByaXNrcyB3ZXJlIGVub3Jtb3VzLCBhbmQgYnkgYW55IG9yZGluYXJ5IGNhbGN1bGF0aW9ucyB0aGVyZSAKd2FzIHNjYXJjZWx5IHRoZSBiYXJlc3QgcG9zc2liaWxpdHkgdGhhdCBzaGUgd291bGQgZXNjYXBlIHdpdGggaGVyIGxpZmUgYW5kIHdpdGggCnJlYXNvbiB1bmltcGFpcmVkIGZyb20gc3VjaCBhbiBleHBlcmllbmNlLiAKCgo3MzUuwqDCoMKgwqDCoMKgwqAKSW4gb3JkZXIgdG8gY29tcHJlaGVuZCBhbGwgdGhhdCBvY2N1cnJlZCB3ZSBtdXN0IGZpcnN0IHRyeSB0byB1bmRlcnN0YW5kIAp3aGF0IG1hbm5lciBvZiBtYW4gd2FzIHRoaXMgYCBndWlkZSwnIGFuZCBob3cgaGUgY2FtZSB0byBiZSB3aGF0IGhlIHdhcy4gRHVyaW5nIApwaHlzaWNhbCBsaWZlIGhlIGhhZCBiZWVuIGEgc21hbGwgZmFybWVyLCBhIGtpbmRseSBidXQgaWdub3JhbnQgbWFuLCBmYW5hdGljYWxseSAKcmVsaWdpb3VzIGluIGEgbmFycm93IHByb3Rlc3RhbnQgd2F5LiBIaXMgb25seSBsaXRlcmF0dXJlIHdhcyB0aGUgQ2hyaXN0aWFuIApCaWJsZSwgb3ZlciB3aGljaCBoZSBwb3JlZCBkdXJpbmcgdGhlIGxvbmcgd2ludGVyIGV2ZW5pbmdzIHVudGlsIGhpcyB3aG9sZSBsaWZlIApiZWNhbWUgc2F0dXJhdGVkIHdpdGggaGlzIGNvbmNlcHRpb24gb2YgaXRzIHRlYWNoaW5ncy4gTmVlZGxlc3MgdG8gc2F5LCBoaXMgCmNvbmNlcHRpb25zIHdlcmUgdXN1YWxseSBtaXNjb25jZXB0aW9ucywgb2Z0ZW4gc28gZ3Jvc3NseSBtYXRlcmlhbCBhcyB0byBiZSAKbHVkaWNyb3VzLCB5ZXQgdGhlIG1hbiB3YXMgc28gdGhvcm91Z2hseSBpbiBlYXJuZXN0IHRoYXQgaXQgd2FzIGltcG9zc2libGUgdG8gCmxhdWdoIGF0IGhpbS4gCgoKNzM2LsKgwqDCoMKgwqDCoMKgCkhlIGxpdmVkIGluIGEgdGhpbmx5IHBvcHVsYXRlZCBwYXJ0IG9mIHRoZSBjb3VudHJ5LCBhbmQgYXMgaGUgZm91bmQgaGlzIApmZXcgbmVpZ2hib3VycyBvdXQgb2Ygc3ltcGF0aHkgd2l0aCBoaXMgcmVsaWdpb3VzIHZpZXdzIGhlIGJlY2FtZSBtb3JlIGFuZCBtb3JlIAphIHJlY2x1c2UgYXMgeWVhcnMgcm9sbGVkIGJ5LCBsaXZpbmcgZnJ1Z2FsbHkgb24gdGhlIHByb2R1Y2Ugb2YgYSBzbWFsbCBwYXJ0IG9mIApoaXMgZmFybSwgYW5kIGRldm90aW5nIGhpbXNlbGYgd2l0aCBpbmNyZWFzaW5nIGFyZG91ciB0byB0aGUgc3R1ZHkgb2YgaGlzIG9uZSAKYm9vay4gVGhpcyBjb25zdGFudCBicm9vZGluZyBvdmVyIG9uZSBpZGVhIGJyb3VnaHQgaGltIGV2ZW50dWFsbHkgaW50byBhIApjb25kaXRpb24gb2YgcmVsaWdpb3VzIG1vbm9tYW5pYSwgaW4gd2hpY2ggaGUgY2FtZSB0byBiZWxpZXZlIGhpbXNlbGYgdGhlIGNob3NlbiAKc2F2aW91ciBvZiB0aGUgd29ybGQsIHRoZSBDaHJpc3Qgd2hvIHdhcyBkZXN0aW5lZCB0byBvZmZlciB0byBpdCBvbmNlIG1vcmUgdGhlIApvcHBvcnR1bml0eSBvZiBzYWx2YXRpb24gd2hpY2ggdHdvIHRob3VzYW5kIHllYXJzIGFnbyBpdCBoYWQgcmVjZWl2ZWQgb25seSB2ZXJ5IApwYXJ0aWFsbHkuIEEgcHJvbWluZW50IGZlYXR1cmUgaW4gaGlzIHNjaGVtZSB3YXMgdGhlIHJlc2N1ZSBmcm9tIGl0cyBmYWxzZSAKYmVsaWVmIG9mIHRoZSB2YXN0IG1hc3Mgb2Ygbm9uLUNocmlzdGlhbiBodW1hbml0eSwgYW5kIGhpcyBpZGVhIHdhcyB0aGF0IHRoaXMgCnNob3VsZCBiZSBkb25lIG5vdCBhbG9uZyBvcmRpbmFyeSBtaXNzaW9uYXJ5IGxpbmVzIGJ1dCB0aHJvdWdoIHRoZSBpbmZsdWVuY2Ugb2YgCml0cyBvd24gZ3JlYXQgbGVhZGVycy4gSXQgd2FzIHRoaXMgcGFydCBvZiBoaXMgcHJvZ3JhbW1lIHdoaWNoIGluZHVjZWQgaGltIHRvIAp0YWtlIHNvIGtlZW4gYW4gaW50ZXJlc3QgaW4gb3VyIGNvcnJlc3BvbmRlbnQsIGFzIHdlIHNoYWxsIHNlZSBsYXRlci4gCgoKNzM3LsKgwqDCoMKgwqDCoMKgCldoaWxlIHN0aWxsIGZ1bGx5IHBvc3Nlc3NlZCBieSB0aGVzZSByZWxpZ2lvdXMgZGVsdXNpb25zIHRoZSB3b3J0aHkgCmZhcm1lciBkaWVkLiBOYXR1cmFsbHkgZW5vdWdoLCBoaXMgYXN0cmFsIGxpZmUgd2FzIHNpbXBseSBhIApjb250aW51YXRpb24gb2YgdGhlIHBoeXNpY2FsLCByYWlzZWQgYXMgaXQgd2VyZSB0byBhIGhpZ2hlciBwb3dlci4gSGUgc29vbiBmb3VuZCAKaGltc2VsZiBhbWlkc3QgdGhlIGNydWRlIHRob3VnaHQtZm9ybXMgb2YgdGhlIGdvbGRlbiBKZXJ1c2FsZW0sIGEgc3BlY2lhbCBjb3JuZXIgCm9mIHdoaWNoIGhlIHNlZW1zIHRvIGhhdmUgbW9kZWxsZWQgZm9yIGhpbXNlbGYgdG8gc3VpdCBoaXMgaWRpb3N5bmNyYXNpZXMuIFRoZSAKcmVzdWx0IG9mIGhpcyBlZmZvcnRzIHRvIHZpc3VhbGlzZSB0aGUgZGVzY3JpcHRpb25zIGdpdmVuIGluIHRoZSBBcG9jYWx5cHNlIHdlcmUgCnNvbWV0aW1lcyByZWFsbHkgaW5nZW5pb3VzIGFuZCBvcmlnaW5hbC4gSSBub3RpY2VkIHNwZWNpYWxseSBoaXMgaW1hZ2Ugb2YgdGhlIApmb3VyIGFuZCB0d2VudHkgZWxkZXJzIGJvd2luZyBwZXJwZXR1YWxseSBpbiBhZG9yYXRpb24gYmVmb3JlIHRoZSB0aHJvbmUsIGFuZCAKY2FzdGluZyBhdCB0aGUgZmVldCBvZiB0aGUgZGVpdHkgdGhlaXIgZ29sZGVuIGNyb3ducywgd2hpY2ggaW1tZWRpYXRlbHkgcm9zZSAKZnJvbSB0aGUgZ3JvdW5kIGFuZCBmbHV0dGVyZWQgYmFjayBhdXRvbWF0aWNhbGx5IG9uIHRvIHRoZWlyIGhlYWRzLCBvbmx5IHRvIGJlIApjYXN0IGRvd24gYWdhaW4uIEhpcyDvv71zZWEgb2YgZ2xhc3MgbWluZ2xlZCB3aXRoIGZpcmXvv70gd2FzIG5vdCBhbHRvZ2V0aGVyIApzdWNjZXNzZnVsLCBhbmQgbG9va2VkIHJhdGhlciBsaWtlIHNvbWUgdW51c3VhbGx5IHdlaXJkIHByb2R1Y3Qgb2YgYSB2b2xjYW5pYyAKZXJ1cHRpb24uIEhpcyBpbWFnZSBvZiB0aGUgQWxsLUZhdGhlciB3YXMgcXVpdGUgY29udmVudGlvbmFsLS0gYSBzdGVybi1sb29raW5nIApvbGQgbWFuIHdpdGggYSBsb25nIHdoaXRlIGJlYXJkLiBJbiB0aGUgZWFybGllciBwYXJ0IG9mIGhpcyBwaHlzaWNhbCBsaWZlIGhlIGhhZCAKZXZpZGVudGx5IGhhZCBhIHRob3VnaHQtaW1hZ2Ugb2YgdGhlIENocmlzdC0tIHRoZSB1c3VhbCBpbXBvc3NpYmxlIGNvbWJpbmF0aW9uIApvZiBhIGNydWNpZml4IGFuZCBhIGxhbWIgYmVhcmluZyBhIGZsYWc7IGJ1dCBkdXJpbmcgdGhlIGxhdGVyIHBlcmlvZCwgd2hlbiBoZSAKd2FzIHBlcnN1YWRlZCB0aGF0IGhlIGhpbXNlbGYgd2FzIHRoZSBDaHJpc3QsIHRoaXMgZmlndXJlIGhhZCBub3QgYmVlbiAKc3RyZW5ndGhlbmVkLCBhbmQgaXQgd2FzIGNvbnNlcXVlbnRseSBpbmNvbnNwaWN1b3VzIGFuZCBpbmFjdGl2ZS4gCgoKNzM4LsKgwqDCoMKgwqDCoMKgCkl0IGlzIGFtb25nIHRoZXNlIHRob3VnaHQtZm9ybXMgb2YgaGlzIHRoYXQgd2UgaGF2ZSB0byBzZWVrIGZvciB0aGUgCu+/vWNvdW5jaWwgb2YgaGVhdmVu77+9IHdoaWNoIHBsYXlzIGEgcGFydCBpbiBvdXIgY29ycmVzcG9uZGVudCcgcyB2aXNpb24sIGFuZCB0aGUgCmNvbnN0aXR1dGlvbiBvZiB0aGF0IGNvdW5jaWwgcHJvdmVkIHRvIGJlIGJvdGggaW50ZXJlc3RpbmcgYW5kIGluc3RydWN0aXZlLiBUaGUgCmlkZWEgc2VlbXMgb3JpZ2luYWxseSB0byBoYXZlIGJlZW4gdGhhdCB0aGUgY291bmNpbCB3YXMgYSBzb3J0IG9mIHNlbGVjdGlvbiBvZiAKYWJvdXQgdGVuIG9mIHRoZSBtb3JlIGltcG9ydGFudCBiaWJsaWNhbCBjaGFyYWN0ZXJzIChFbGlqYWgsIE1vc2VzLCBQZXRlciwgZXRjLikgCnJlcHJlc2VudGVkIGJ5IGNvbG9zc2FsIGZpZ3VyZXMgc2VhdGVkIGluIGEgc2VtaWNpcmNsZSBvbiB1bmNvbWZvcnRhYmxlLWxvb2tpbmcgCmhpZ2gtYmFja2VkIGdvbGRlbiBjaGFpcnMsIHdoaWNoLCB0aG91Z2ggc3VwcG9zZWQgdG8gYmUgY2VsZXN0aWFsIHRocm9uZXMsIHdlcmUgCm1hbmlmZXN0bHkgZGVyaXZlZCBmcm9tIGFuIGltcGVyZmVjdCByZWNvbGxlY3Rpb24gb2YgdGhlIHNlZGlsbGlhIGluIHNvbWUgR290aGljIApjYXRoZWRyYWwuIFRoZSBkZWl0eSBoaW1zZWxmIHByZXNpZGVkIG92ZXIgdGhlaXIgZGVsaWJlcmF0aW9ucy4gCgoKNzM5LsKgwqDCoMKgwqDCoMKgCk9yaWdpbmFsbHkgdGhlIG1lbWJlcnMgb2YgdGhpcyBjb3VuY2lsIGhhZCBvYnZpb3VzbHkgYmVlbiBub3RoaW5nIGJ1dCAKdGhvdWdodC1mb3JtczsgYnV0IGF0IHRoZSB0aW1lIHdoZW4gY3VyIGVucXVpcmllcyBicm91Z2h0IHVzIGludG8gY29udGFjdCB3aXRoIAp0aGVtLCBzZXZlcmFsIG9mIHRoZW0gaGFkIGJlZW4gc2VpemVkIGFuZCBlbnNvdWxlZCBieSBsaXZpbmcgZW50aXRpZXMsIGFuZCB0aGlzIAplbnNvdWxtZW50IGludHJvZHVjZWQgc29tZSBuZXcgYW5kIGludGVyZXN0aW5nIGZhY3RvcnMuIFR3byBvZiB0aGVzZSBlbnRpdGllcyAKd2VyZSBkZWFkIG1lbiwgYm90aCBvZiB0aGVtIHJlbGlnaW91cyBwZW9wbGUsIGVhY2ggd29ya2luZyBmcm9tIGhpcyBvd24gcG9pbnQgb2YgCnZpZXcuIE9uZSBvZiB0aGVtIHdhcyBhIG1hbiBvZiBHZXJtYW4gZXh0cmFjdGlvbiwgd2hvIGR1cmluZyBlYXJ0aC1saWZlIGhhZCBiZWVuIAphIHNob2UtbWFrZXItLSBhIHNpbXBsZSBhbmQgdW5pbnN0cnVjdGVkIG1hbiBub3QgYWx0b2dldGhlciB1bmxpa2UgdGhlIGZvcm1lci4gCkhlIHRvbyBoYWQgc3R1ZGllZCB0aGUgQmlibGUgZGlsaWdlbnRseTsgaGUgdG9vIHdhcyBhIGRyZWFtZXIgb2YgdmFndWUsIG15c3RpY2FsIApkcmVhbXM7IGhlIHRvbyBmZWx0IHRoYXQgaGUgaGFkIGEgc3BlY2lhbCByZXZlbGF0aW9uIG9yIGludGVycHJldGF0aW9uIHRvIG9mZmVyIAp0byB0aGUgd29ybGQtLSBzb21ldGhpbmcgZmFyIG1vcmUgcmF0aW9uYWwgdGhhbiB0aGUgZmFybWVyJyBzLiBIZSBoYWQgY29tZSB0byAKZmVlbCB0aGF0IHRoZSBlc3NlbnRpYWwgdHJ1dGggb2YgQ2hyaXN0aWFuaXR5IGxheSBpbiB0aGUgbXlzdGljYWwgdW5pb24gb2YgCkNocmlzdCBhbmQgaGlzIGhlYXZlbmx5IGJyaWRlLCB0aGUgQ2h1cmNoLiBUbyBoaW0gdGhlIENocmlzdCB3YXMgZmFyIGxlc3MgdGhlIApoaXN0b3JpY2FsIHBlcnNvbmFsaXR5IG9mIHRoZSBHb3NwZWxzIHRoYW4gdGhlIGxpdmluZyBzcGlyaXQgb2YgdGhlIENodXJjaCwgYW5kIAp0aGUgdGFzayBvZiB0aGUgdHJ1ZSBDaHJpc3RpYW4gd2FzIHRvIGF3YWtlbiB3aXRoaW4gaGltc2VsZiB0aGUgQ2hyaXN0LXNwaXJpdC4gClRoZSBtZXNzYWdlIHdoaWNoIGh1bWFuaXR5IG5lZWRlZCwgaGUgdGhvdWdodCwgd2FzIHRoYXQgZXZlcnkgbWFuIGNvdWxkIGFuZCAKc2hvdWxkIGJlY29tZSBhIENocmlzdC0tIGEgbWVzc2FnZSB3aGljaCBzZWVtZWQgdG8gaGltIHNvIGNsZWFyIGFuZCBzaW1wbGUgdGhhdCAKaXQgbmVlZGVkIG9ubHkgdG8gYmUgZGVsaXZlcmVkIHRvIGNvbW1hbmQgaW5zdGFudCBhdHRlbnRpb24sIGFuZCB0aHVzIHRvIHNhdmUgCnRoZSB3b3JsZCBmcm9tIHNpbiBhbmQgbGlmdCBpdCBhdCBvbmNlIGludG8gdGhlIGxpZ2h0IG9mIHRydXRoLiBIZSBoYWQgYmVndW4gCnByZWFjaGluZyB0byB0aGlzIGVmZmVjdCB3aGlsZSBzdGlsbCBvbiB0aGUgcGh5c2ljYWwgZWFydGgsIGJ1dCBoYWQgZGllZCBiZWZvcmUgCmhlIGhhZCBkb25lIG11Y2ggdG93YXJkcyB0aGUgY29udmVyc2lvbiBvZiBodW1hbml0eS4gCgoKNzQwLsKgwqDCoMKgwqDCoMKgCkFycml2aW5nIGluIHRoZSBhc3RyYWwgd29ybGQsIGhlIHdhcyBzdGlsbCBhcyBlYWdlciBhcyBldmVyIHRvIHNwcmVhZCBoaXMgCnZpZXdzLCBhbmQgaGF2aW5nIG1ldCB0aGUgZmFybWVyIGhlIHN0cnVjayB1cCBhIGZyaWVuZHNoaXAgd2l0aCBoaW0uIFRoZXkgaGFkIAptdWNoIGluIGNvbW1vbiwgYW5kIGVhY2ggZmVsdCB0aGF0IHRoZSBvdGhlciBtaWdodCBiZSBoZWxwZnVsIHRvIGhpbSBpbiB0aGUgCnByb3NlY3V0aW9uIG9mIGhpcyBzY2hlbWUuIFRoZSBzaG9lbWFrZXIgZGlkIG5vdCByZWNvZ25pc2UgdGhlIGZhcm1lciBhcyB0aGUgCnNvbGUgQ2hyaXN0LCBidXQgaGUgZGlkIGFwcGx5IGhpcyB0aGVvcnkgdG8gaGltLCBhbmQgY29uc2lkZXIgaGltIGFzIGEgcGVyc29uIGluIAp3aG9tIHRoZSBDaHJpc3Qtc3Bpcml0IHdhcyBleGNlcHRpb25hbGx5IGRldmVsb3BlZC4gVGhlIGZhcm1lciB1bmRlcnN0b29kIG9ubHkgCnZhZ3VlbHkgdGhlIHNob2UtbWFrZXInIHMgY2VudHJhbCBpZGVhLCBidXQgaGUgcmVhbGlzZWQgdGhhdCBoZSBoYWQgZm91bmQgc29tZSAKb25lIHdobyB3YXMgd2lsbGluZyB0byBjby1vcGVyYXRlIGluIHNhdmluZyB0aGUgd29ybGQuIEVhY2ggcmVnYXJkZWQgdGhlIG90aGVyIAphcyBzb21ld2hhdCBlY2NlbnRyaWMsIGJ1dCBzdGlsbCBlYWNoIHdpdGggYSBzaW1wbGUgY3VubmluZyB0aG91Z2h0IHRoYXQgaGUgCmNvdWxkIG1ha2UgdXNlIG9mIHRoZSBvdGhlciBmb3IgaGlzIG93biBwdXJwb3Nlcy4gCgoKNzQxLsKgwqDCoMKgwqDCoMKgCkJldHdlZW4gdGhlbSB0aGV5IGhhZCBjb25jZWl2ZWQgdGhpcyBjdXJpb3VzIGlkZWEgb2YgYSDvv71jb3VuY2lsIG9mIApoZWF2ZW7vv70gb2Ygd2hpY2ggdGhleSB3ZXJlIGJvdGggbWVtYmVyczsgb3IgcG9zc2libHkgdGhleSBtYXkgaGF2ZSBmb3VuZCBhIAp0aG91Z2h0LWZvcm0gb2YgdGhpcyBraW5kIG1hZGUgYnkgc29tZSBvbmUgZWxzZSwgYW5kIG1heSBzaW1wbHkgaGF2ZSBhZG9wdGVkIGl0IAphbmQgam9pbmVkIHRoZW1zZWx2ZXMgdG8gaXQuIFRoZSB0aG91Z2h0LWZvcm1zIGFzIHZpZXdlZCBieSB0cmFpbmVkIHZpc2lvbiB3ZXJlIApjbHVtc3kgYW5kIGltcGVyZmVjdCwgdGhvdWdoIG5vIGRvdWJ0IHF1aXRlIHNhdGlzZmFjdG9yeSB0byB0aGVpciBtYWtlcnMuIE1vc2VzLCAKZm9yIGV4YW1wbGUsIHdhcyBzZXJpb3VzbHkgaW5jb21wbGV0ZS4gSGUgc2F0LCBzdGlmZiBhbmQgcmlnaWQsIGFzIHRob3VnaCBnbHVlZCAKdG8gaGlzIHVuY29tZm9ydGFibGUgZ29sZGVuIHRocm9uZSwgYnV0IGluIHJlYWxpdHkgaGUgd2FzIG9ubHkgYSBmYWNlIGFuZCBmcm9udCAKcHJvamVjdGluZyBmcm9tIHRoZSBjaGFpciwgYW5kIGhhZCBuZXZlciBiZWVuIHByb3Blcmx5IGZpbmlzaGVkIG9mZiBiZWhpbmQuIEluIAp0aGlzIHJlc3BlY3QgYmUgcmVzZW1ibGVkIG1hbnkgb2YgdGhlIHRob3VnaHQtZm9ybXMgZm91bmQgaW4gdGhlIFN1bW1lcmxhbmQsIAp3aGVyZSBpdCBpcyBub3QgaW5mcmVxdWVudCB0byBzZWUgbW90aGVycyBmb25kbGluZyBjaGlsZHJlbiB3aGljaCBhcmUgZGVmZWN0aXZlIAppbiBleGFjdGx5IHRoZSBzYW1lIHdheS4gVGhlIGNyZWF0b3JzIG9mIHN1Y2ggZm9ybXMgYXJlIGFsd2F5cyBjb21wbGV0ZWx5IGhhcHB5IAp3aXRoIHRoZW0gYW5kIG5ldmVyIHBlcmNlaXZlIHRoZWlyIGltcGVyZmVjdGlvbnMsIGZvciB0aG91Z2ggdGhlcmUgaXMgbm8gbGlmZSBpbiAKc3VjaCBkb2xscyBleGNlcHQgdGhlIHRob3VnaHQgd2hpY2ggaXMgcHV0IGludG8gdGhlbSwgdGhhdCB0aG91Z2h0IHdpbGwgYWx3YXlzIApyZXNwb25kIHRvIGl0cyBnZW5lcmF0b3IgYW5kIGRvIGV4YWN0bHkgd2hhdCBpdCBpcyBleHBlY3RlZCB0byBkby4gUGV0ZXIgd2FzIAphbm90aGVyIHZlcnkgaW5lZmZpY2llbnQgcGVyc29uIG9uIHRoaXMgY291bmNpbC0tIHF1aXRlIGluc2lnbmlmaWNhbnQtbG9va2luZzsgCmJ1dCBhdCBsZWFzdCBoZSBjYXJyaWVkIGEgbGFyZ2UgYnVuY2ggb2Yga2V5cywgdGhlIGppbmdsaW5nIG9mIHdoaWNoIHdhcyBoaXMgCnByaW5jaXBsZSBjb250cmlidXRpb24gdG8gdGhlIGRlbGliZXJhdGlvbnMuIAoKCjc0Mi7CoMKgwqDCoMKgwqDCoApXaGlsZSB0aGUgbWFqb3JpdHkgb2YgdGhpcyBjb3VuY2lsIHdhcyBvZiB0aGUgdHlwZSBqdXN0IGRlc2NyaWJlZCwgdGhlIAp0aG91Z2h0LWZvcm1zIG9mIHRoZSBkZWl0eSwgb2YgUy4gUGF1bCAodGhlIGltYWdlIGNob3NlbiBmb3Igb2NjdXBhdGlvbiBieSB0aGUgCnNob2VtYWtlcikgYW5kIG9mIHRoZSBwcm9waGV0IEVsaWphaCB3ZXJlIG11Y2ggbW9yZSBkZWZpbml0ZSBhbmQgb3JpZ2luYWwuIFRoZSAKbGF0dGVyIGluZGVlZCBxdWl0ZSBzdXJwcmlzZWQgdXMgYnkgaGlzIGFjdGl2aXR5LCBhbmQgb24gZXhhbWluYXRpb24gaXQgd2FzIApmb3VuZCB0aGF0IGhlLCB0b28sIHdhcyBiZWluZyBvY2N1cGllZCAoZm9yIGF0IGxlYXN0IHVzZWQgYXMgYSBraW5kIG9mIAptb3V0aHBpZWNlKSBieSBhbm90aGVyIGRlYWQgbWFuLCBhIFdlbHNobWFuLCB3aG8gYXQgc29tZSBlYXJseSBwZXJpb2QgaW4gaGlzIAplYXJ0aC1saWZlIGhhZCBnb25lIHRocm91Z2ggdGhlIGV4cGVyaWVuY2UgY2FsbGVkIGAgY29udmVyc2lvbiwnIGFuZCBoYWQgbGF0ZXIgCm9uIGVtaWdyYXRlZCB0byBBbWVyaWNhLCB3aGVyZSBoZSBoYWQgbGl2ZWQgZm9yIHNvbWUgeWVhcnMgYW5kIGV2ZW50dWFsbHkgZGllZC4gCkR1cmluZyBoaXMgcGh5c2ljYWwgbGlmZSBoZSBoYWQgYWx3YXlzIGJlZW4gc2Vla2luZyByZWxpZ2lvdXMgZXhwZXJpZW5jZXMgb2YgdGhlIAplbW90aW9uYWwgdHlwZTsgZm9yIGluc3RhbmNlLCBoZSBoYWQgYXR0ZW5kZWQgc29tZSBvZiB0aGUgbmVncm8gcmV2aXZhbCAKbWVldGluZ3MsIGFuZCBoYWQgdGhlcmUgd2l0bmVzc2VkIGFuZCB0YWtlbiBwYXJ0IGluIHRoZSBjZWxlYnJhdGVkIO+/vUplcnVzYWxlbSAKanVtcC7vv70gSW50ZXJtaW5nbGVkIHdpdGggaGlzIHJlbGlnaW9uIHdlcmUgY3VyaW91cyBzb2NpYWxpc3RpYyBwcm9jbGl2aXRpZXMsIGFuZCAKaGlzIGRyZWFtIHdhcyBvZiBhIGdvbGRlbiBtaWxsZW5uaXVtIHdoaWNoIHdhcyBoYWxmIGlycmF0aW9uYWwsIGVtb3Rpb25hbCAKQ2hpcmlzdGlhbml0eSBhbmQgaGFsZiBtYXRlcmlhbGlzdGljIFNvY2lhbGlzbS4gCgoKNzQzLsKgwqDCoMKgwqDCoMKgCkhlIGhhZCBncmFzcGVkIHJhdGhlciBtb3JlIHRoYW4gdGhlIG90aGVycyB0aGUgcmVsYXRpb24gYmV0d2VlbiB0aGUgCnBoeXNpY2FsIGFuZCBhc3RyYWwgd29ybGRzLCBhbmQgdGhlIHBvc3NpYmlsaXRpZXMgb2YgdGhlIGxhdHRlciwgYW5kIGhlIAp1bmRlcnN0b29kIHRoYXQgYmVmb3JlIGhlIGNvdWxkIGhvcGUgdG8gaW5mbHVlbmNlIHRoZSBwaHlzaWNhbCB3b3JsZCBoZSBtdXN0IApzb21laG93IG9yIG90aGVyIGdldCBpbnRvIHRvdWNoIHdpdGggaXQuIEhlIHdhcyBub3QgdGhpbmtpbmcgb2YgcmVpbmNhcm5hdGlvbiwgCmZvciBoZSBoYWQgbmV2ZXIgaGVhcmQgb2Ygc3VjaCBhbiBpZGVhOyBidXQgaGUga25ldyB0aGF0IGhlIGhhZCBwYXNzZWQgZnJvbSB0aGUgCnBoeXNpY2FsIHdvcmxkIGludG8gdGhlIGFzdHJhbCwgYW5kIHRoZXJlZm9yZSBoZSB0aG91Z2h0IHRoZXJlIG11c3QgYmUgc29tZSB3YXkgCm9mIHBhc3NpbmcgYmFjayBhZ2Fpbi4gSGlzIGF0dGVudGlvbiB3YXMgbXVjaCBvY2N1cGllZCB3aXRoIHRoaXMgcHJvYmxlbSwgYW5kIAp3aGVuIGhlIGJlY2FtZSBhd2FyZSB0aGF0IHRoZSBmYXJtZXIgaGFkIGZvdW5kIGEgbWVkaXVtIHRocm91Z2ggd2hvbSBoZSBjb3VsZCAKY29tZSB0byBzb21lIGV4dGVudCBpbnRvIHRvdWNoIHdpdGggdGhlIHBoeXNpY2FsIHdvcmxkLCBoZSBkZWNpZGVkIHRvIG1ha2UgdXNlIApvZiBib3RoIGluIGFueSB3YXkgdGhhdCBoZSBjb3VsZC4gVGhpcyBzZWVtZWQgYSBwb3NzaWJsZSBmaXJzdCBzdGVwIGluIHRoZSAKZGlyZWN0aW9uIG9mIGdhaW5pbmcgaGlzIGVuZHMsIGFuZCBpdCBvY2N1cnJlZCB0byBoaW0gdG8gZW50ZXIgdGhlIHRob3VnaHQtZm9ybSAKb2YgRWxpamFoIGluIHRoZSDvv71jb3VuY2lsIG9mIGhlYXZlbu+/vSBhcyBhIG1lYW5zIG9mIHByZXNlbnRseSBpbnRyb2R1Y2luZyBoaW1zZWxmIApvbiBzdWNoIGEgZm9vdGluZyBhcyB3b3VsZCBhdCBvbmNlIGVuc3VyZSByZXNwZWN0IGZyb20gdGhlIG90aGVycy4gSSBkbyBub3QgCnRoaW5rIGhlIHdhcyBpbiBhbnkgd2F5IHNlbGYtc2Vla2luZyBvciBzZWxmLWNvbmNlaXRlZCBpbiBkb2luZyB0aGlzOyBpdCB3YXMgdG8gCmhpbSBzaW1wbHkgYSBtZWFucyB0byBhbiBlbmQsIHByb3ZpZGVudGlhbGx5IHB1dCBpbiBoaXMgd2F5LiAKCgo3NDQuwqDCoMKgwqDCoMKgwqAKQnV0IG5vdyBlbnN1ZWQgYW4gdW5leHBlY3RlZCByZXN1bHQuIE1hc3F1ZXJhZGluZyB0aHVzIGFzIEVsaWphaCwgaGUgCnRyaWVkIHRvIGJlYXIgaGltc2VsZiBhcyBoZSB0aG91Z2h0IHRoZSBwcm9waGV0IHdvdWxkIGhhdmUgZG9uZSwgYW5kIHRvIGltcGFydCAKYW4gT2xkLVRlc3RhbWVudCBmbGF2b3VyIHRvIGhpcyBpbXBlcnNvbmF0aW9uLiBUaGlzIHJlYWN0ZWQgdXBvbiBoaXMgb3JkaW5hcnkgCmFzdHJhbCBsaWZlOyBoZSBiZWdhbiB0byBsaXZlIGFsbCB0aGUgd2hpbGUgaW4gdGhlIGNoYXJhY3RlciwgYW5kIGJ5IGRlZ3JlZXMgdG8gCndvbmRlciB3aGV0aGVyIGhlIHdhcyBub3QgcmVhbGx5IEVsaWphaCEgSGUgaXMgbGl0ZXJhbGx5IGluIHByb2Nlc3Mgb2YgCnRyYW5zZm9ybWluZyBoaW1zZWxmLCBhbmQgd2lsbCBhc3N1cmVkbHkgc29vbiBiZSBhIGNvbmZpcm1lZCBtb25vbWFuaWFjLiBBdCB0aGUgCnRpbWUgb2Ygb3VyIGludmVzdGlnYXRpb24gaGUgc3RpbGwga25ldyB0aGF0IGhlIHdhcyBhIFdlbHNobWFuIHdobyBvY2Nhc2lvbmFsbHkgCmltcGVyc29uYXRlZCBFbGlqYWg7IGJ1dCBJIGZlZWwgY2VydGFpbiB0aGF0IGluIHRoZSBuZWFyIGZ1dHVyZSBoZSB3aWxsIHBhc3MgCmJleW9uZCB0aGF0IHN0YWdlLCBhbmQgd2lsbCBiZSBhcyBzdXJlIHRoYXQgaGUgaXMgcmVhbGx5IEVsaWphaCBhcyB0aGUgZmFybWVyIGlzIAp0aGF0IGhlIGlzIHRoZSBDaHJpc3QuIAoKCjc0NS7CoMKgwqDCoMKgwqDCoApNZWFudGltZSBoZSBoYWQgbm90IHlldCBpbnRyb2R1Y2VkIGhpbXNlbGYgYXMgdGhlIFdlbHNobWFuIHRvIHRoZSBvdGhlciAKaHVtYW4gbWVtYmVycyBvZiB0aGUgY291bmNpbCwgYnV0IGZsYXR0ZXJlZCBoaW1zZWxmIHRoYXQgYXMgRWxpamFoIGhlIHdhcyAKaW5zcGlyaW5nIGdyZWF0IHJlc3BlY3QgYW5kIGluIGZhY3QgZGlyZWN0aW5nIHRoZWlyIGRlY2lzaW9ucy4gV2UgaGF2ZSwgCnRoZXJlZm9yZSwgdGhlIGFzdG9uaXNoaW5nIHNwZWN0YWNsZSBvZiBhIGNvdW5jaWwgd2hvc2Ugb25seSBlZmZlY3RpdmUgbWVtYmVycyAKd2VyZSB0aHJlZSBkZWFkIG1lbiwgZWFjaCBvbmUgb2Ygd2hvbSB0aG91Z2h0IHRoYXQgaGUgd2FzIG1hbmlwdWxhdGluZyB0aGUgCm90aGVycyBmb3IgdGhlIGZ1cnRoZXJhbmNlIG9mIGhpcyBvd24gb2JqZWN0czsgYW5kIHlldCBub25lIG9mIHRob3NlIG9iamVjdHMgd2FzIApzZWxmaXNoLCBhbmQgYWxsIHRoZSBtZW4gY29uY2VybmVkIHdlcmUgcmVsaWdpb3VzLCB3ZWxsLW1lYW5pbmcgYW5kIGhvbmVzdCBpbiAKaW50ZW50aW9uLiBPbmx5IGluIHRoZSBhc3RyYWwgd29ybGQgd291bGQgc3VjaCBhbiBleHRyYW9yZGluYXJ5IGNvbWJpbmF0aW9uIGJlIApwb3NzaWJsZTsgeWV0IHRoZSBtb3N0IGFzdG91bmRpbmcgYW5kIHRoZSBtb3N0IGNoYXJhY3RlcmlzdGljIGZhY3Qgc3RpbGwgcmVtYWlucyAKdG8gYmUgdG9sZC4gCgoKNzQ2LsKgwqDCoMKgwqDCoMKgCkl0IGhhcyBiZWVuIGFscmVhZHkgbWVudGlvbmVkIHRoYXQgdGhlIEFsbC1GYXRoZXIgaGltc2VsZiB3YXMgc3VwcG9zZWQgdG8gCnByZXNpZGUgb3ZlciB0aGUgbWVldGluZ3Mgb2YgdGhlIGNvdW5jaWwuIEhlIHdhcyBvZiBjb3Vyc2UgYSB0aG91Z2h0LWZvcm0gbGlrZSAKYWxsIHRoZSByZXN0LCBidXQgaGUgb2NjYXNpb25hbGx5IG1hbmlmZXN0ZWQgYSBzcGFzbW9kaWMgYW5kIGluYXBwcm9wcmlhdGUgCmFjdGl2aXR5IHdoaWNoIHNob3dlZCB0aGUgcHJlc2VuY2Ugb2Ygc29tZSBleHRlcmlvciBmb3JjZSwgZGlmZmVyZW50IGluIHF1YWxpdHkgCmZyb20gdGhlIG90aGVycy4gQ2FyZWZ1bCBpbnZlc3RpZ2F0aW9uIHNob3dlZCB0aGF0IGp1c3QgYXMgdGhlIGZvcm0gb2YgRWxpamFoIAp3YXMgZW5zb3VsZWQgYnkgdGhlIFdlbHNobWFuLCBzbyB3YXMgdGhpcyBmb3JtIG9mIHRoZSBkZWl0eSBlbnNvdWxlZCBieS0tIGEgCmZyb2xpY3NvbWUgbmF0dXJlLXNwaXJpdCEgCgoKNzQ3LsKgwqDCoMKgwqDCoMKgCkkgaGF2ZSBhbHJlYWR5IGRlc2NyaWJlZCBzb21lIG9mIHRoZSBjaGFyYWN0ZXJpc3RpY3Mgb2YgdGhpcyBkZWxpZ2h0ZnVsIApraW5nZG9tIG9mIE5hdHVyZS4gSXQgbWF5IGJlIHJlbWVtYmVyZWQgd2hhdCBhIGtlZW4gcGxlYXN1cmUgc29tZSBvZiBzdWNoIApjcmVhdHVyZXMgdGFrZSBpbiB0aGVhdHJpY2FsIHBlcmZvcm1hbmNlcyBhbW9uZyB0aGVtc2VsdmVzLCBpbiBhbnkgc29ydCBvZiAKbWFzcXVlcmFkZSAobW9zdCBlc3BlY2lhbGx5IGlmIHRoZXJlYnkgdGhleSBjYW4gZ2FpbiB0aGUgdHJpdW1waCBvZiBkZWNlaXZpbmcgb3IgCmZyaWdodGVuaW5nIGEgbWVtYmVyIG9mIHRoZSBzdXBlcmlvciBodW1hbiBldm9sdXRpb24pLCBhbmQgYWxzbyBob3cgdGhleSBlbmpveSAKdGVsbGluZyBzb21lIGVudGhyYWxsaW5nIHRhbGUgdG8gdGhlaXIgZmVsbG93cy4gQmVhcmluZyB0aGlzIGluIG1pbmQsIHdlIHNoYWxsIAphdCBvbmNlIHNlZSB0aGF0LCBmcm9tIHRoZSBwb2ludCBvZiB2aWV3IG9mIGEgdHJpY2tzeSBuYXR1cmUtc3Bpcml0LCBoZXJlIHdhcyBhbiAKYWJzb2x1dGVseSB1bmlxdWUgb3Bwb3J0dW5pdHkuIEhlIGNvdWxkIChhbmQgZGlkKSBwbGF5IGEgam9rZSBvbiB0aGUgbW9zdCAKY29sb3NzYWwgc2NhbGUgY29uY2VpdmFibGUgdXBvbiB0aHJlZSBodW1hbiBiZWluZ3MsIGFuZCB3ZSBtYXkgcmVhZGlseSBpbWFnaW5lIAp3aGF0IGEgc291bC1zYXRpc2Z5aW5nIHN0b3J5IGhlIGhhZCB0byB0ZWxsIGFmdGVyd2FyZHMgdG8gaGlzIGFkbWlyaW5nIGZlbGxvd3MuIApOZWVkbGVzcyB0byBzYXksIGhlIGhhZCBub3QgdGhlIGZhaW50ZXN0IGlkZWEgb2YgaXJyZXZlcmVuY2UgOyBoZSB3b3VsZCBwcm9iYWJseSAKYmUgbm8gbW9yZSBjYXBhYmxlIG9mIHN1Y2ggYSBjb25jZXB0aW9uIHRoYW4gYSBmbHkgd291bGQ7IHRvIGhpbSB0aGUgd2hvbGUgdGhpbmcgCndhcyBub3RoaW5nIGJ1dCBhbiB1bmVxdWFsbGVkIG9wcG9ydHVuaXR5IGZvciBhIHJlYWxseSBnb3JnZW91cyBob2F4LCBhbmQgaGUgZGlkIApoaXMgdmVyeSBiZXN0IHdpdGggaXQuIAoKCjc0OC7CoMKgwqDCoMKgwqDCoApPZiBjb3Vyc2UgaGUgY291bGQgbmVpdGhlciB1bmRlcnN0YW5kIG5vciBqb2luIGluIHRoZSBkZWxpYmVyYXRpb25zLCBzbyAKZm9yIHRoZSBtb3N0IHBhcnQgaGUgcHJlc2VydmVkIGEgY3J5cHRpYyBzaWxlbmNlIHdoaWNoIHdhcyB2ZXJ5IGVmZmVjdGl2ZS4gSGUgCmhhZCBzb21laG93IGFjcXVpcmVkIGEgc21hbGwgbnVtYmVyIG9mIGJpYmxpY2FsIHBocmFzZXMgYXBwcm9wcmlhdGUgdG8gaGlzIHBhcnQsIAphbmQgaGUgZW1wdGllZCB0aGVzZSBvdXQgdXBvbiB0aGUgY291bmNpbCBhdCBpbnRlcnZhbHMgYXMgYSBwYXJyb3QgbWlnaHQsIAphcHBhcmVudGx5IGhhdmluZyBubyBjb25jZXB0aW9uIG9mIHRoZWlyIG1lYW5pbmcuIO+/vVRodXMgc2FpdGggdGhlIApMb3Jk77+9OyDvv71BbWVuLCBzbyBiZSBpdO+/vTsg77+9SSBhbSB0aGUgTG9yZCB0aHkgR29kOyB0aG91IHNoYWx0IGhhdmUgbm9uZSBvdGhlciBHb2RzIApidXQgbWXvv707IO+/vUkgd2lsbCBzbWl0ZSB0aGUgZWFydGggd2l0aCBhIGN1cnNl77+9LS0gdGhlc2Ugd2VyZSBzb21lIG9mIHRoZSBnZW1zIG9mIApoaXMgY29sbGVjdGlvbiwgdGhlIHNwZWNpbWVucyBvZiBoaXMgdW5jb25zY2lvdXMgZWxvcXVlbmNlLiBOb3cgYW5kIGFnYWluIHRoZSAKam9rZSBiZWNhbWUgdG9vIG11Y2ggZm9yIGhpbSwgb3IgcGVyaGFwcyB0aGUgcmVzdHJhaW50IHdhcyBpcmtzb21lLCBhbmQgaGUgCmFiYW5kb25lZCB0aGUgdGhvdWdodC1mb3JtIGZvciBhIGZldyBtb21lbnRzIGluIG9yZGVyIHRvIHJlbGlldmUgaGlzIApvdmVyc3RyYWluZWQgZmVlbGluZ3MgYnkgd2lsZCBkYW5jaW5nIGFuZCBvdXRidXJzdHMgb2YgbGF1Z2h0ZXIsIHNvbWV3aGVyZSBvdXQgCm9mIHNpZ2h0IG9mIGhpcyBjb3VuY2lsLiBXaGVuIHRoaXMgaGFwcGVuZWQgaXQgd2FzIG1vc3QgaW50ZXJlc3RpbmcgdG8gc2VlIGhvdyAKdGhlIHRob3VnaHQtZm9ybSBjb2xsYXBzZWQgZnJvbSBhbGVydG5lc3MgdG8gc3RvbGlkaXR5LCBhbmQgdGhlIHVuZm9ydHVuYXRlIApodW1hbiBtZW1iZXJzIG9mIHRoZSBjb3VuY2lsIGltbWVkaWF0ZWx5IHN1cHBvc2VkIHRoYXQgc29tZXRoaW5nIGhhZCBvY2N1cnJlZCB0byAKcHJvdm9rZSB0aGF0IGRpdmluZSB3cmF0aCB3aGljaCBpcyBhbHdheXMgc28gcHJvbWluZW50IGEgcGFydCBvZiB0aGlzIHR5cGUgb2YgCnJlbGlnaW9uLiAKCgo3NDkuwqDCoMKgwqDCoMKgwqAKVGhpcywgdGhlbiwgd2FzIHRoZSByZWFsaXR5IGJlaGluZCB0aGUgYXdlLWluc3BpcmluZyDvv71jb3VuY2lsIG9mIGhlYXZlbu+/vSAKYmVmb3JlIHdoaWNoIG91ciBjb3JyZXNwb25kZW50IHBsZWFkZWQgc28gZWFybmVzdGx5LiBJdCB3aWxsIGJlIHVuZGVyc3Rvb2QgdGhhdCAKb25seSB0aGUgZGVhZCBtZW4gY291bGQgcmVhbGx5IGNvbnRyaWJ1dGUgdG8gd2hhdGV2ZXIgZGlzY3Vzc2lvbiBtYXkgaGF2ZSB0YWtlbiAKcGxhY2U7IHRoZSBvdGhlciBtZW1iZXJzIG9mIHRoZSBjb3VuY2lsIGNvdWxkIG5vdCBvcmlnaW5hdGUgYW55dGhpbmcsIHRob3VnaCAKdGhleSBtYXkgaGF2ZSBoYWQgZW5vdWdoIHZpdGFsaXR5IHRvIGdpdmUgYSBmb3JtYWwgYXNzZW50IHRvIGEgcHJvcG9zaXRpb24uIAoKCjc1MC7CoMKgwqDCoMKgwqDCoApUbyB1bmRlcnN0YW5kIHRoZSBwYXJ0IHBsYXllZCBpbiB0aGUgdmlzaW9uIGJ5IHRoZSBUaGVvc29waGljYWwgCnRob3VnaHQtZm9ybXMgd2UgbXVzdCBnbGFuY2UgYXQgdGhlIGhpc3RvcnkgYW5kIG1lbnRhbCBjb25kaXRpb24gb2Ygb3VyIApjb3JyZXNwb25kZW50LiBGYWxsaW5nIGF3YXkgZnJvbSBhIHJhdGhlciBtYXRlcmlhbGlzdGljIGZvcm0gb2YgQ2hyaXN0aWFuaXR5LCAKc2hlIGJlY2FtZSBwcmFjdGljYWxseSBhbiBhdGhlaXN0LiBUaGVuIHNoZSBsb3N0IGEgYmVsb3ZlZCBjaGlsZDsgYW5kIGluIHN1Y2ggYSAKbmF0dXJlIHRoZXNlIHZhcmlvdXMgZXhwZXJpZW5jZXMgbmF0dXJhbGx5IHByb2R1Y2VkIGRlZXAgZW1vdGlvbnMsIGVhY2ggb2Ygd2hpY2ggCmhhZCBpdHMgcGFydCBpbiB0aGUgbW91bGRpbmcgb2YgaGVyIHRlbXBlcmFtZW50LiBBdCB0aGlzIHBlcmlvZCBzaGUgY2FtZSBpbnRvIApjb250YWN0IHdpdGggVGhlb3NvcGh5LCBhbmQgY29tbWVuY2VkIGl0cyBzdHVkeSB3aXRoIG5vIGxlc3MgZm9ybWlkYWJsZSBhIGJvb2sgCnRoYW4gVGhlIFNlY3JldCBEb2N0cmluZS4gVW5kYXVudGVkIGJ5IGl0cyBkaWZmaWN1bHRpZXMgc2hlIGFwcGxpZWQgCmhlcnNlbGYgdG8gaXQgZGlsaWdlbnRseSBhbmQgc3Ryb3ZlIHRvIGdyYXNwIGl0cyB0ZWFjaGluZywgdG8gbWFrZSBtZW50YWwgCnBpY3R1cmVzIG9mIHdoYXQgaXMgZGVzY3JpYmVkIGluIHRoZSBTdGFuemFzIG9mIER6eWFuLiBDZXJ0YWluIG9mIGl0cyBpZGVhcyBoYWQgCmEgc3BlY2lhbCBhdHRyYWN0aW9uIGZvciBoZXIuIFRoZSB0aG91Z2h0IG9mIGluaXRpYXRpb24gd2l0aCBpdHMgbXlzdGVyaW91cyBhbmQgCmRhbmdlcm91cyBvcmRlYWxzIHdhcyBvbmUgb2YgdGhlbTsgYW5vdGhlciB3YXMgdGhlIHN1Y2Nlc3Npb24gb2YgdGhlIHJhY2VzLCAKY291cGxlZCB3aXRoIHRoZSBncmVhdCBxdWVzdGlvbiBhcyB0byB3aG8gc2hhbGwgYW5kIHdobyBzaGFsbCBub3QgcGFzcyB0aGUgZmluYWwgCnRlc3QgYW5kIHJlYWNoIGluIHNhZmV0eSB0aGUgZnVydGhlciBzaG9yZS4gQWxsIHRoaXMgd2FzIGluZXZpdGFibHkgdG8gc29tZSAKZXh0ZW50IGNvbG91cmVkIGJ5IGVhcmxpZXIgQ2hyaXN0aWFuIGNvbmNlcHRpb25zIGFib3V0IO+/vWNvbnZlcnNpb27vv70gYW5kIGAgCnNhbHZhdGlvbiwnIGV2ZW4gdGhvdWdoIGF0IHRoZSBzYW1lIHRpbWUgdGhlIHNwbGVuZGlkIGhvcml6b25zIG9mIHRoZSBncmVhdCAKb3JpZW50YWwgcmVsaWdpb25zIG9wZW5lZCBiZWZvcmUgaGVyLiAKCgo3NTEuwqDCoMKgwqDCoMKgwqAKVGh1cyBpdCBjYW1lIGFib3V0IHRoYXQgc2hlIHN1cnJvdW5kZWQgaGVyc2VsZiB3aXRoIGEgZ3JlYXQgbWFzcyBvZiAKc3Ryb25nIHRob3VnaHQtZm9ybXMgb2YgYSBtb3JlIG9yIGxlc3MgVGhlb3NvcGhpY2FsIGNoYXJhY3RlciwgYW5kIGJ5IHRoZSB2ZXJ5IApmYWN0IG9mIGRvaW5nIHNvIHVuY29uc2Npb3VzbHkgc2V0IGluIG1vdGlvbiBjZXJ0YWluIG9jY3VsdCBsYXdzLiBJbiB0aGUgaGlnaGVyIAp3b3JsZHMsIGxpa2UgYXR0cmFjdHMgbGlrZSwgYW5kIGhlciB0aG91Z2h0LWZvcm1zIHNvb24gZHJldyB0byB0aGVtc2VsdmVzIG90aGVycyAKb2Ygc2ltaWxhciBuYXR1cmUuIFNvbWUgaHVuZHJlZHMgb2YgbWlsZXMgZnJvbSB3aGVyZSBzaGUgbGl2ZWQgdGhlcmUgd2FzIGFuIAplYXJuZXN0IFRoZW9zb3BoaWNhbCBMb2RnZSwgd2hpY2ggYW1vbmcgb3RoZXIgYWN0aXZpdGllcyBtYWludGFpbmVkIGEgU2VjcmV0IApEb2N0cmluZSBjbGFzcy4gQSB2YXN0IG1hc3Mgb2YgdGhvdWdodC1mb3JtcyBhbmQgc3BlY3VsYXRpb25zIGhhZCBiZWVuIAp0aHJvd24gb2ZmIGJ5IHRoaXMgY2xhc3MsIGFuZCBvdXIgY29ycmVzcG9uZGVudCB3YXMgc29vbiBpbiB0b3VjaCB3aXRoIHRoaXMgCmFzdHJhbCBzdG9yZWhvdXNlLiBIb3cgdGhlIGZpcnN0IGNvbnRhY3Qgd2FzIG1hZGUgSSBkaWQgbm90IG9ic2VydmUuIFBlcmhhcHMgCndoZW4gdHJhdmVsbGluZyBpbiB0aGUgYXN0cmFsIGJvZHkgb3VyIGNvcnJlc3BvbmRlbnQgbWF5IGhhdmUgYmVlbiBhdHRyYWN0ZWQgYnkgCnRoZSBwcmVzZW50YXRpb25zIG9mIHN1YmplY3QgaW4gd2hpY2ggc2hlIHdhcyBzbyBkZWVwbHkgaW50ZXJlc3RlZDsgb3Igb24gdGhlIApvdGhlciBoYW5kIHNvbWUgbWVtYmVyIG9mIHRoZSBjbGFzcyBtYXkgaGF2ZSBhc3RyYWxseSBub3RpY2VkIGhlciB0aG91Z2h0cyBhbmQgCnRyaWVkIHRvIGFkZCB0byB0aGVtOyBvciBpdCBtYXkgaGF2ZSBiZWVuIHNpbXBseSB0aGF0IHN5bXBhdGhldGljIHZpYnJhdGlvbnMgCmF0dHJhY3RlZCBvbmUgYW5vdGhlciwgYXMgdGhleSBpbnZhcmlhYmx5IGRvLCB3aXRob3V0IGh1bWFuIGludGVyZmVyZW5jZS4gCkhvd2V2ZXIgdGhhdCBtYXkgaGF2ZSBiZWVuLCB0aGUgZmFjdCByZW1haW5zIHRoYXQgc2hlIHdhcyBzdXJyb3VuZGVkIGJ5IGFuIAplbm9ybW91cyBib2R5IG9mIHRob3VnaHQtZm9ybXMgb2YgYSBwYXJ0aWN1bGFyIHR5cGUsIHNoZSBoZXJzZWxmIGJlaW5nIGF0IHRoZSAKdmVyeSBzYW1lIHRpbWUgcHJlY2lzZWx5IGluIHRoZSBjb25kaXRpb24gdG8gYmUgbW9zdCBkZWVwbHkgYWZmZWN0ZWQgYnkgdGhlbS4KCgo3NTIuwqDCoMKgwqDCoMKgwqAKQXQgdGhpcyBwZXJpb2Qgc2hlIGJlZ2FuIHRvIHByYWN0aXNlIGJyZWF0aGluZyBleGVyY2lzZXMsIGFuZCBieSB0aGF0IAptZWFucyBsYWlkIGhlcnNlbGYgb3BlbiB0byBhc3RyYWwgaW5mbHVlbmNlcy4gSGVyIGtlZW4gc3ltcGF0aHkgd2l0aCBzdWZmZXJpbmcgCmNhdXNlZCBoZXIgdG8gc2VlayB0aGUgZGVhZCBtdXJkZXJlciwgb3IgcGVyaGFwcyBicm91Z2h0IGhpbSB0byBoZXIsIGFuZCB0aGUgCmF1dG9tYXRpYyB3cml0aW5nIGFuZCB0aGUgb2JzZXNzaW9uIGZvbGxvd2VkIGluIHRoZSBuYXR1cmFsIGNvdXJzZSBvZiBldmVudHMuIApUaGUgbXVyZGVyZXIgcHV0IGZvcnRoIGFsbCBoaXMgcG93ZXIgdG8gbWFpbnRhaW4gdGhlIGFkdmFudGFnZSB3aGljaCBoZSBoYWQgCmdhaW5lZCwgYW5kIHNoZSBzdHJ1Z2dsZWQgZGVzcGVyYXRlbHkgdG8gcHJvdGVjdCBhbmQgZnJlZSBoZXJzZWxmLCBtYWtpbmcgCmhlcnNlbGYgZm9yIHRoZSB0aW1lIHF1aXRlIGEgY29uc3BpY3VvdXMgb2JqZWN0IGluIHRoZSBhc3RyYWwgd29ybGQgYnkgdGhlIAp2ZWhlbWVuY2Ugb2YgaGVyIGVmZm9ydHMgYW5kIHRoZSBhbW91bnQgb2YgZW5lcmd5IHdoaWNoIHNoZSBwdXQgZm9ydGguIAoKCjc1My7CoMKgwqDCoMKgwqDCoApBcyB0aGUgZmFybWVyIHdhbmRlcmVkIGFib3V0LCB0aGUgYWZmcmF5IGF0dHJhY3RlZCBoaXMgYXR0ZW50aW9uLCBhbmQgaW4gCmhpcyBjaGFyYWN0ZXIgYXMgdGhlIENocmlzdCBoZSBmZWx0IGl0IGhpcyBkdXR5IHRvIGludGVyZmVyZSBhbmQgZXhwZWwgdGhlIAptdXJkZXJlci4gSGUgaGFkIG5ldmVyIGJlZm9yZSBlbmNvdW50ZXJlZCBzbyBicmlsbGlhbnQgYW4gYXN0cmFsIGJvZHksIG5vciBoYWQgCmhlIHNlZW4gc3VjaCBpbXByZXNzaXZlIHN1cnJvdW5kaW5nIGFzIHRob3NlIG9mIHRoZSBwZXJzb24gd2hvbSBoZSBoYWQgcmVzY3VlZC0tIAphIG1hc3Mgb2YgZm9ybXMgYXQgb25jZSBzbyB1bnVzdWFsIGluIHR5cGUgKGNvbm5lY3RlZCBhcyBpdCB3YXMgd2l0aCBjb3NtaWMgCnByb2Nlc3NlcyBjb25zaWRlcmVkIGZyb20gdGhlIG9yaWVudGFsIHBvaW50IG9mIHZpZXcpIGFuZCBhdCB0aGUgc2FtZSB0aW1lIHNvIApmYXIgbGFyZ2VyIGluIHF1YW50aXR5IHRoYW4gYW55IG9uZSBwZXJzb24gbm9ybWFsbHkgY2FycmllcyB3aXRoIGhpbS4gSGVyZSB3ZXJlIAp0aGUgZm9ybXMgb2Ygb3JpZW50YWwgR29kcywgb2YgdGhlIGZvdW5kZXJzIG9mIHJlbGlnaW9ucywgb2YgTWFzdGVycywgQWRlcHRzLCAKQW5nZWxzLCBhbmQgYWxsIHNvcnRzIG9mIG1hZ25pZmljZW50IGJ1dCB1bmZhbWlsaWFyIGNvbmNlcHRpb25zLiBJZiB3ZSByZW1lbWJlciAKdGhhdCB0aGUgZmFybWVyIGNvdWxkIG5vdCBrbm93IHRoYXQgdGhlc2Ugd2VyZSBvbmx5IHRob3VnaHQtZm9ybXMsIGJ1dCBtdXN0IAppbmV2aXRhYmx5IGhhdmUgdGFrZW4gdGhlbSBhcyBhY3R1YWwgbGl2aW5nIGJlaW5ncywgd2Ugc2hhbGwgc2VlIHRoYXQgaXQgaXMgCnNtYWxsIHdvbmRlciB0aGF0IHdpdGggaGlzIGlnbm9yYW5jZSBvbiBhbGwgc3VjaCBtYXR0ZXJzIGFuZCBoaXMgY29uc3RhbnQgCmV4cGVjdGF0aW9uIG9mIGNlbGVzdGlhbCBhc3Npc3RhbmNlIGluIGhpcyBhcHBvaW50ZWQgd29yaywgaGUgc2hvdWxkIGZlZWwgdGhhdCAKaGUgaGFkIGJlZW4gc3BlY2lhbGx5IGd1aWRlZCBieSBwcm92aWRlbmNlIHRvIGhlbHAgb25lIHdobyBjb3VsZCBoZWxwIGhpbSBpbiAKcmV0dXJuLS0gYSBwZXJzb24gb2YgaW1wb3J0YW5jZSBpbiB0aGUgb3JpZW50YWwgd29ybGQgY29tbWVuc3VyYXRlIHdpdGggdGhhdCAKd2hpY2ggaGUgYXJyb2dhdGVkIHRvIGhpbXNlbGYgZm9yIHRoZSBvY2NpZGVudC4gQXQgb25jZSBoZSBzZWl6ZWQgaGlzIApvcHBvcnR1bml0eTsgaGUgcHJvY2xhaW1lZCBoaW1zZWxmIGFzIHRoZSBhcHBvaW50ZWQgZ3VpZGUgYW5kIHByb2NlZWRlZCB0byB0YWtlIApjaGFyZ2Ugb2YgdGhlIGxhZHknIHMgZnVydGhlciBkZXZlbG9wbWVudC4gCgoKNzU0LsKgwqDCoMKgwqDCoMKgCkEgY3VyaW91cyBmYWN0IG5vdGljZWQgaGVyZSB3YXMgdGhhdCwgdGhvdWdoIGhlIHBvc2VkIGFzIGd1aWRlLCBoZSB3YXMgCmxhcmdlbHkgaW5mbHVlbmNlZCBieSB0aGUgdGhvdWdodHMgb2Ygb3VyIGNvcnJlc3BvbmRlbnQsIGFuZCBpbiBtYW55IGNhc2VzIApzaW1wbHkgZ2F2ZSBoZXIgYmFjayB0aG9zZSB0aG91Z2h0cyBpbiBvdGhlciBsYW5ndWFnZS4gSGUga25ldyBub3RoaW5nIG9mIHRoZSAKc2VycGVudCBmaXJlLCBidXQgaGUgdGhvdWdodCBvZiBpdCBhcyBzb21lIGZvcm0gb2YgZGl2aW5lIGFmZmxhdHVzOyBoZSBzYXcgdGhhdCAKc29tZSBwcm9jZXNzIG9mIGF3YWtlbmluZyB3YXMgYmVpbmcgcGVyZm9ybWVkIGJ5IGl0cyBhaWQ6IGFuZCBoZSBkaWQgaGlzIGJlc3QgdG8gCmhlbHAgYW5kIGVuY291cmFnZSB0aGlzLiBUaGVpciBqb2ludCBlZmZvcnRzIHN1Y2NlZWRlZCBpbiBhcm91c2luZyAKd2hhdCBtYXkgYmUgY2FsbGVkIHRoZSB1cHBlciBsYXllcnMgb2YgdGhhdCBteXN0ZXJpb3VzIGZvcmNlLCB0aG91Z2ggZm9ydHVuYXRlbHkgCmZvciB0aGUgbGFkeSwgZnJvbSBpZ25vcmFuY2UgYXMgdG8gd2hhdCBpcyByZWFsbHkgbmVlZGVkIGZvciBmdWxsIGFjaGlldmVtZW50LCAKdGhleSB3ZXJlIG5vdCBhYmxlIHRvIHN0aXIgaXQgdG8gaXRzIGRlcHRocywgb3RoZXJ3aXNlIGhlciBib2R5IHdvdWxkIHN1cmVseSAKaGF2ZSBiZWVuIGRlc3Ryb3llZC4gRnVydGhlciwgdGhleSBldmlkZW50bHkgZGlkIG5vdCBrbm93IHRocm91Z2ggd2hhdCBjZW50cmVzIAppdCBtdXN0IGJlIHNlbnQgaW4gb3JkZXIgdG8gYnJpbmcgY29udGludW91cyBjb25zY2lvdXNuZXNzLCBhbmQgc28gdGhleSBtaXNzZWQgCnRoZWlyIGFpbS4gQnV0IHRoZSBkZXNjcmlwdGlvbiBnaXZlbiBvZiB0aGUgc3VmZmVyaW5ncyBlbmR1cmVkIGlzIGFjY3VyYXRlIGFzIApmYXIgYXMgaXQgZ29lcywgYW5kIHNvbWUgb2YgdGhlIGV4cHJlc3Npb25zIHVzZWQgYXJlIHN0cmlraW5nbHkgc3VnZ2VzdGl2ZS4gSG93IApkYW5nZXJvdXMgdGhlaXIgZXhwZXJpbWVudHMgd2VyZSBtYXkgYmUgc2VlbiBmcm9tIHRoZSBsYWR5JyBzIGFjY291bnQgb2YgdGhlc2UgCnN1ZmZlcmluZ3MsIGFuZCBmcm9tIGhlciBmYW1pbHknIHMgdGVzdGltb255IGFzIHRvIHRoZSBjb25kaXRpb24gaW4gd2hpY2ggc2hlIApoYWQgYmVlbi4gVGhlIHdob2xlIHN0b3J5IGdpdmVzIGEgbW9zdCBpbXByZXNzaXZlIHdhcm5pbmcgYWdhaW5zdCB0aGUgcmlzayBvZiAKYXR0ZW1wdGluZyBwcmVtYXR1cmUgZGV2ZWxvcG1lbnQgYWxvbmcgc3VjaCBsaW5lcy4gCgoKNzU1LsKgwqDCoMKgwqDCoMKgCkl0IGlzIHVzZWxlc3MgdG8gY3JpdGljaXNlIGluIGRldGFpbCB3aGF0IG1heSBiZSBjYWxsZWQgdGhlIFRoZW9zb3BoaWNhbCAKcGFydCBvZiB0aGUgdmlzaW9uOyB3b25kZXJmdWwsIHVwbGlmdGluZywgYXdlLWluc3BpcmluZyBhcyBpdCBubyBkb3VidCB3YXMgdG8gCnRoZSBzZWVyLCBpdCBhZnRlciBhbGwgcmVwcmVzZW50cyBub3QgdGhlIGFjdHVhbCBvY2N1cnJlbmNlcyBvZiBldm9sdXRpb24sIGJ1dCAKdGhlIGNvbWJpbmF0aW9uIGFuZCBzeW50aGVzaXMgb2YgYSBudW1iZXIgb2YgdGhvdWdodC1pbWFnZXMuIFBhcnRzIG9mIHRoZSAKc3ltYm9sb2d5IGFyZSBpbnRlcmVzdGluZyBhbmQgaWxsdW1pbmF0aXZlLCB3aGlsZSBvdGhlcnMgb2J2aW91c2x5IHJlcXVpcmUgCm1vZGlmaWNhdGlvbi4gQ2VydGFpbiBmZWF0dXJlcywgc3VjaCBhcyB0aGUgY2hhbnRpbmcgb2YgdGhlIGFuZ2VscywgYXJlIGNsZWFybHkgCmR1ZSB0byB0aGUgaW5mbHVlbmNlIG9mIHRoZSBDaHJpc3RpYW4gc3RyZWFtIG9mIHRob3VnaHQgaW4gdGhlIG1pbmQgb2YgdGhlIApndWlkZS4gSGUgd2F0Y2hlZCB0aGUgdW5mb2xkaW5nIG9mIHRoZSB2aXNpb24gYWxvbmcgd2l0aCBvdXIgY29ycmVzcG9uZGVudCwgYnV0IApiZWluZyBpZ25vcmFudCBvZiBvcmllbnRhbCB0ZWFjaGluZyBoZSB1bmRlcnN0b29kIGJ1dCBsaXR0bGUgb2YgaXQuIEZvciBleGFtcGxlLCAKaGUgc2VlbXMgdG8gaGF2ZSBjb25mdXNlZCB0aGUgc3VjY2Vzc2l2ZSByYWNlcyB3aXRoIHRoZSB2YXJpb3VzIHRyaWJlcyBvZiAKSXNyYWVsLCBhbmQgdHJpZWQgdG8gZml0IGluIHdoYXQgaGUgc2F3IHdpdGggdGhlIHN0b3J5IG9mIHRoZSBzZWFsaW5nIG9mIHRoZSAKMTQ0LDAwMC4gCgoKNzU2LsKgwqDCoMKgwqDCoMKgCkl0IGlzIGluIHRoZSBtb25vbWFuaWEgb2YgdGhlIGd1aWRlIHRoYXQgd2UgbXVzdCBzZWVrIGZvciB0aGUgY2F1c2Ugb2YgCnRoZSB3ZWlnaHR5IGZlZWxpbmcgb2YgcmVzcG9uc2liaWxpdHkgd2hpY2ggb3ZlcnNoYWRvd2VkIHRoZSB3aG9sZSB2aXNpb24sIHRoZSAKY29udmljdGlvbiB0aGF0IHVwb24gb3VyIGNvcnJlc3BvbmRlbnQnIHMgc3VjY2VzcyBkZXBlbmRlZCB0aGUgc2FsdmF0aW9uIG9mIHRoZSAKd29ybGQuIFRoaXMgc29ydCBvZiBuYe+/vXZlIHNlbGYtY29uY2VpdCBvciBtZWdhbG9tYW5pYSBpcyBvbmUgb2YgdGhlIGNvbW1vbmVzdCAKY2hhcmFjdGVyaXN0aWNzIG9mIGNvbW11bmljYXRpb25zIGZyb20gdGhlIGFzdHJhbCBwbGFuZS4gSXQgc2VlbXMgdG8gYmUgb25lIG9mIAp0aGUgbW9zdCBvcmRpbmFyeSBpbGx1c2lvbnMgb2YgYSBkZWFkIG1hbiB0aGF0LCBpZiBoZSBjYW4gb25seSBnZXQgc29tZSBsYWR5IHRvIAphY3QgYXMgYSBtZWRpdW0gZm9yIGhpbSwgaGUgY2FuIHJldm9sdXRpb25pc2UgdGhlIGVudGlyZSB0aG91Z2h0IG9mIHRoZSBwbGFuZXQgCmJ5IGEgc2ltcGxlIHN0YXRlbWVudCBvZiBhIGZldyBzZWxmLWV2aWRlbnQgZmFjdHMuIEJ1dCBpbiB0aGlzIGNhc2UgdGhlcmUgd2FzIApyYXRoZXIgbW9yZSB0aGFuIHRoZSB1c3VhbCBleGN1c2UgZm9yIHRoZSBhdHRpdHVkZSBhZG9wdGVkLiBUaGUgcG9vciBmYXJtZXIgd2FzIApkZWVwbHkgaW1wcmVzc2VkIHdpdGggdGhlIHRob3VnaHQgdGhhdCB1bmxlc3MgdGhlIHdvcmxkIGFjY2VwdGVkIGhpbSB0aGlzIHRpbWUgCml0IHdvdWxkIGxvc2UgaXRzIGZpbmFsIGNoYW5jZSBvZiBzYWx2YXRpb24sIGFuZCBoZSBwcm9wb3VuZGVkIHRoaXMgdGhlb3J5IG9uZSAKZGF5IHRvIHRoZSBkZWl0eSBpbiBjb3VuY2lsIGF0IGEgbW9tZW50IHdoZW4gdGhlIG5hdHVyZS1zcGlyaXQgaGFwcGVuZWQgdG8gYmUgaW4gCmNoYXJnZS4gSXQgaXMgbGl0dGxlIGxpa2VseSB0aGF0IHRoZSBuYXR1cmUtc3Bpcml0IGhhZCBhbnkgY2xlYXIgY29uY2VwdGlvbiBvZiAKdGhlIHB1cnBvcnQgb2YgdGhlIHF1ZXN0aW9uLCBidXQgYXQgbGVhc3QgaGUgdW5kZXJzdG9vZCB0aGF0IGhpcyBhc3NlbnQgd2FzIApiZWluZyBhc2tlZCB0byBzb21lIHByb3Bvc2l0aW9uIG9yIG90aGVyLCBzbyBoZSBnYXZlIGl0IGluIGhpcyBtb3N0IHBvbXBvdXMgCm1hbm5lcjsgYW5kIHRoaXMgbmF0dXJhbGx5IGVub3VnaCBjb25maXJtZWQgdGhlIGZhcm1lciBpbiBoaXMgZGVsdXNpb24sIGFuZCBtYWRlIAppdCB0aGUgb25lIGRvbWluYXRpbmcgdGhvdWdodCBvZiBoaXMgbGlmZS4gQXBhcnQgZnJvbSBoaXMgaW5mbHVlbmNlIG5vIHN1Y2ggCmltcHJlc3Npb24gd291bGQgZXZlciBoYXZlIGNvbWUgaW50byB0aGUgbWluZCBvZiB0aGUgbGFkeSwgd2hvc2UgdmlldyBvZiBoZXIgb3duIApwb3NpdGlvbiBhbmQgcG93ZXJzIHdhcyBtdWNoIHNhbmVyIGFuZCBtb3JlIG1vZGVzdC4gCgoKNzU3LsKgwqDCoMKgwqDCoMKgClRoZSBwZXJzb25pZmljYXRpb24gb2YgdGhlIHdvcmxkIGFuZCB0aGUgZGV2aWwgaW4gaHVtYW4gZm9ybXMgaXMgYWxzbyBkdWUgCnRvIHRoZSB0aG91Z2h0IG9mIHRoZSBndWlkZSwgZm9yIHRoZSBsYWR5IGhlcnNlbGYga25ldyBtdWNoIGJldHRlciB0aGFuIHRvIApiZWxpZXZlIGluIHRoZSBleHBsb2RlZCBzdXBlcnN0aXRpb24gb2YgYSBwZXJzb25hbCBTYXRhbi4gVGhpcyBzZWVtcyB0byBoYXZlIApjb21lIGF0IGEgcGVyaW9kIG9mIHRoZSBleHBlcmllbmNlIHdoZW4gc2hlIHdhcyBtdWNoIGV4aGF1c3RlZCwgYW5kIHRoZXJlZm9yZSAKbW9yZSBmdWxseSB1bmRlciB0aGUgZG9taW5hdGlvbiBvZiB0aGUgZ3VpZGUnIHMgbWluZCwgYW5kIGxlc3MgYWJsZSB0byBleGVyY2lzZSAKaGVyIG93biBuYXR1cmFsIHBvd2VyIG9mIGRpc2NyaW1pbmF0aW9uLiBUaGUgbmVydm91cyB0ZW5zaW9uIGF0dGVuZGFudCB1cG9uIHRoZSAKY29uZGl0aW9ucyB0aHJvdWdoIHdoaWNoIHNoZSBwYXNzZWQgbXVzdCBoYXZlIGJlZW4gaW5kZXNjcmliYWJsZTsgaW5kZWVkLCBpdCAKYnJvdWdodCBoZXIgcGVyaWxvdXNseSBuZWFyIHRvIHRoZSBwb3NzaWJpbGl0eSBvZiBwaHlzaWNhbCBoYWxsdWNpbmF0aW9uLiBTaGUgCndyaXRlcyBvZiBjZXJ0YWluIGFjdHMgb2YgcmV2ZXJlbmNlIG1hZGUgdG8gaGVyIG9uIHRoZSBwaHlzaWNhbCBlYXJ0aCBieSAKYW5pbWFscywgYnV0IGludmVzdGlnYXRpb24gZG9lcyBub3QgY29uZmlybSB0aGlzLCBzaG93aW5nIHRoZSBhY3Rpb25zIG9mIHRoZSAKYW5pbWFscyB0byBoYXZlIGJlZW4gcXVpdGUgbm9ybWFsIGFuZCBkaWN0YXRlZCBieSB0aGVpciBvcmRpbmFyeSBpbnN0aW5jdCwgCnRob3VnaCB0aGUgbGFkeSBpbiBoZXIgb3ZlcnN0cmFpbmVkIGNvbmRpdGlvbiBnYXZlIHRoZW0gYSBkaWZmZXJlbnQgCmludGVycHJldGF0aW9uLiAKCgo3NTguwqDCoMKgwqDCoMKgwqAKVGhlIHNwZWNpYWwgaW50ZXJlc3Qgb2YgdGhlIGNhc2UgdG8gdGhvc2Ugd2hvIGV4YW1pbmVkIGl0IHdhcyB0aGUgbWFubmVyIAppbiB3aGljaCBhIG51bWJlciBvZiBpbmRlcGVuZGVudCBhbmQgcXVpdGUgb3JkaW5hcnkgYXN0cmFsIGZhY3RvcnMgY29tYmluZWQgdG8gCnByb2R1Y2UgYSBkcmFtYXRpYyBhbmQgaW1wb3Npbmcgd2hvbGUuIFRoZSBydWxpbmcgZm9yY2Ugd2FzIHRoZSB3aWxsIG9mIHRoZSAKZ3VpZGUsIGFuZCB0aGUgc3RyZW5ndGggb2YgaGlzIGV4dHJhb3JkaW5hcnkgZGVsdXNpb247IHlldCB0aGlzIHdvdWxkIGhhdmUgYmVlbiAKaW5lZmZlY3RpdmUsIG9yIGF0IGxlYXN0IHdvdWxkIGhhdmUgd29ya2VkIHF1aXRlIGRpZmZlcmVudGx5LCBidXQgZm9yIHRoZSBhY3Rpb24gCm9mIG91ciBjb3JyZXNwb25kZW50IGluIHJhc2hseSBsYXlpbmcgaGVyc2VsZiBvcGVuIHRvIGFzdHJhbCBpbmZsdWVuY2UuIFRoZSAKU2VjcmV0IERvY3RyaW5lIGNsYXNzIGFuZCBpdHMgdGhvdWdodC1mb3JtcywgdGhlIG90aGVyIGRlYWQgbWVuIG9uIHRoZSAKY291bmNpbCwgdGhlIHNwb3J0aXZlIG5hdHVyZS1zcGlyaXQtLSBhbGwgdGhlc2UgcGxheWVkIHRoZWlyIHBhcnQsIGFuZCBpZiBhbnkgCm9uZSBvZiB0aGVtIGhhZCBiZWVuIGFic2VudCB0aGUgcGljdHVyZSB3b3VsZCBoYXZlIGJlZW4gbGVzcyBjb21wbGV0ZSwgb3IgdGhlIApwbG90IG11c3QgaGF2ZSB3b3JrZWQgaXRzZWxmIG91dCBvbiBvdGhlciBsaW5lcy4gCgoKNzU5LsKgwqDCoMKgwqDCoMKgCkl0IHNlZW1zIHRvIG1lIHRoYXQgdGhlIHN0b3J5IGhhcyBpdHMgdmFsdWUgYXMgc2hvd2luZyB0aGUgYXN0b25pc2hpbmcgCmZlcnRpbGl0eSBhbmQgYWJ1bmRhbmNlIG9mIHRoZSByZXNvdXJjZXMgb2YgdGhlIGFzdHJhbCB3b3JsZCwgYW5kIHRoZSBpbXBlcmF0aXZlIApuZWNlc3NpdHkgb2YgdGhhdCBmdWxsIGtub3dsZWRnZSB3aGljaCBpcyBvbmx5IHRvIGJlIGdhaW5lZCBieSB0aG9yb3VnaCBvY2N1bHQgCnRyYWluaW5nLiBBbGwgdGhyb3VnaCBpdCB3ZSBzZWUgcmVhbGx5IGdvb2QgYW5kIHdlbGwtaW50ZW50aW9uZWQgcGVvcGxlIApkZWNlaXZpbmcgdGhlbXNlbHZlcyBxdWl0ZSBwaXRpYWJseSBmb3Igd2FudCBvZiB0aGlzIGtub3dsZWRnZS0tIHB1dHRpbmcgCnRoZW1zZWx2ZXMgb2Z0ZW4gaW50byBzdWNoIHBvc2l0aW9ucyB0aGF0IG9uZSBjYW5ub3Qgd29uZGVyIHRoYXQgdGhleSB3ZXJlIApkZWx1ZGVkLiBPbmUgbXVzdCBwcmVzdW1lIHRoYXQgaXQgd2FzIG5lZWRmdWwgZm9yIHRoZW0gdG8gbGVhcm4gaW4gdGhlIGhhcmQgCnNjaG9vbCBvZiBleHBlcmllbmNlLCBhbmQgaXQgaXMgYWxzbyB3ZWxsIHRvIHJlbWVtYmVyIHRoYXQgbm8gdHJpYWwgb2YgdGhpcyAKbmF0dXJlIGV2ZXIgY29tZXMgdG8gYW55IG9uZSB3aXRob3V0IGFuIGFkZXF1YXRlIG9wcG9ydHVuaXR5IG9mIHByZXBhcmF0aW9uLiBObyAKb25lIHdobyBoYWQgc3R1ZGllZCB0aGUgQmlibGUgYXMgY2xvc2VseSBhcyB0aGUgZ3VpZGUgaGFkIGRvbmUgY291bGQgaGF2ZSBmYWlsZWQgCnRvIHJlbWFyayB0aGUgd2FybmluZ3MgdGhlcmVpbiBjb250YWluZWQgYXMgdG8gcG9zc2libGUgZGVjZXB0aW9uIGJ5IGZhbHNlIApDaHJpc3RzIGFuZCBseWluZyBwcm9waGV0cywgYW5kIGV2ZW4gaW4gdGhlIGJvb2sgb2YgU3ZhbWkgVml2ZWthbmFuZGEgdGhlcmUgaXMgCnRvIGJlIGZvdW5kIGFuIGVhcm5lc3QgYWRqdXJhdGlvbiBhZ2FpbnN0IHRoZSBwcmVtYXR1cmUgb3IgcHJvbWlzY3VvdXMgdXNlIG9mIApoaXMgaW5zdHJ1Y3Rpb25zLiBVbmZvcnR1bmF0ZWx5IHBlb3BsZSBuZXZlciB3aWxsIHRha2UgdGhlc2UgY2F1dGlvbnMgdG8gCnRoZW1zZWx2ZXMsIGJ1dCBpbnZhcmlhYmx5IGFwcGx5IHRoZW0gdG8gdGhlaXIgbmVpZ2hib3VycyBvciBvcHBvbmVudHMuIAoKCjc2MC7CoMKgwqDCoMKgwqDCoApZZXQgaXQgc2hvdWxkIGJlIG5vdGljZWQgdGhhdCBmb3Igb3VyIGNvcnJlc3BvbmRlbnQgdGhlIG91dGNvbWUgd2FzIGdvb2QuIApUaGUgZm9ybXMgc2VlbiB3ZXJlIGxhcmdlbHkgaWxsdXNvcnksIGJ1dCB0aGUgaGlnaCBlbW90aW9ucyBhd2FrZW5lZCwgdGhlIGF3ZSAKYW5kIHRoZSByYXB0dXJlLS0gYWxsIHRoZXNlIHByb2R1Y2VkIHBlcm1hbmVudCByZXN1bHRzIHdoaWNoIGNhbm5vdCBidXQgaGF2ZSBpbiAKdGhlbSBtdWNoIG9mIGdvb2QuIFRoZSBib3VuZGxlc3MgZW50aHVzaWFzbSBmb3Igc3Bpcml0dWFsIHRoaW5ncywgdGhlIHVuc2VsZmlzaCAKZGVzaXJlIHRvIGhlbHAgZXZlbiBhdCB0aGUgY29zdCBvZiBhbnkgc2FjcmlmaWNlLS0gdGhlc2UgYXJlIGluIHRoZW1zZWx2ZXMgCm1pZ2h0eSBmb3JjZXMsIGFuZCB3aGVuIGdlbmVyYXRlZCB0aGV5IGV2b2tlIGEgcmVzcG9uc2UgZnJvbSB3b3JsZHMgZmFyIGhpZ2hlciAKdGhhbiBhbnkgd2hpY2ggYXJlIGFjdHVhbGx5IHJlYWNoZWQgYnkgdGhlIGNvbnNjaW91c25lc3MgaW4gdGhlIHZpc2lvbiBpdHNlbGYuIApUaGUgZmVlbGluZyBpcyBnZW51aW5lLCBob3dldmVyIGltcGVyZmVjdGx5IGNvbmNlaXZlZCBtYXkgYmUgdGhhdCB3aGljaCAKb2NjYXNpb25zIGl0OyBhbmQgc28gd2hpbGUgd2UgY29uZ3JhdHVsYXRlIG91ciBjb3JyZXNwb25kZW50IG9uIGhhdmluZyBjb21lIApzYWZlbHkgdGhyb3VnaCBwZXJpbHMgbW9yZSB0cmVtZW5kb3VzIHRoYW4gc2hlIGNhbiByZWFkaWx5IHJlYWxpc2UsIHdlIG1heSBiZSAKcGVybWl0dGVkIHRvIGhvcGUgdGhhdCB0aGUgcGVhY2UgYW5kIHVwbGlmdGluZyB3aGljaCBzaGUgZ2FpbmVkIHRocm91Z2ggdGhlbSBtYXkgCnByb3ZlIGEgcGVybWFuZW50IGhlcml0YWdlLiBUaGUgZGVlcCBzZW5zZSBvZiB1bmlvbiB3aXRoIHRoZSBkaXZpbmUgd2hpY2ggCmJyb3VnaHQgd2l0aCBpdCBzdWNoIGJsaXNzIHdhcyB1bnF1ZXN0aW9uYWJseSBhIHRydWUgdG91Y2ggb2YgdGhlIGxvd2VyIGZyaW5nZSAKb2YgdGhlIGludHVpdGlvbmFsIHdvcmxkLCBhbmQgdG8gaGF2ZSBhdHRhaW5lZCB0aGlzIGlzIG5vIGRvdWJ0IHdvcnRoIGFsbCB0aGUgCnN1ZmZlcmluZyB0aHJvdWdoIHdoaWNoIHRoZSBwYXRpZW50IHBhc3NlZC4gQnV0IHRoZSBzdHVkZW50IGtub3dzIHRoYXQgYWxsIHRoYXQgCihhbmQgbXVjaCBtb3JlKSBjb3VsZCBoYXZlIGJlZW4gb2J0YWluZWQgd2l0aG91dCB0aGUgcGFpbiBhbmQgd2l0aG91dCB0aGUgYXdmdWwgCnJpc2ssIGJ5IHRoZSBpbnZlc3RtZW50IG9mIHRoZSBzYW1lIGFtb3VudCBvZiBlbmVyZ3kgaW4gdGhlIG1vcmUgb3JkaW5hcnkgCm1ldGhvZHMgd2hpY2ggaGF2ZSBhcHByb3ZlZCB0aGVtc2VsdmVzIHRvIHRoZSB3aXNkb20gb2YgdGhlIGFnZXMuIFRvIGZvcmNlIG9uZScgCnMgd2F5IGludG8gdW5rbm93biByZWFsbXMgd2l0aG91dCB0aGUgZ3VpZGFuY2Ugb2Ygb25lIHdobyByZWFsbHkga25vd3MsIGlzIHRvIApjb3VydCBkaXNhc3RlcjsgYW5kIGl0IGlzIGEgZGFuZ2VyIHRvIHdoaWNoIG5vbmUgbmVlZCBleHBvc2UgaGltc2VsZiwgZm9yIHRoZSAKb2xkIHBhdGhzIGFyZSBhbHdheXMgb3BlbiwgYW5kIHRoZSBvbGQgc2F5aW5nIHN0aWxsIHJlbWFpbnMgdHJ1ZTog77+9V2hlbiB0aGUgCnB1cGlsIGlzIHJlYWR5IHRoZSBNYXN0ZXIgYXBwZWFycy7vv70gCgoKNzYxLsKgwqDCoMKgwqDCoMKgCklOIFdSSVRJTkcgQSBCT09LIAoKCjc2Mi7CoMKgwqDCoMKgwqDCoApNYW55IG9mIHVzIGFyZSBjb25zdGFudGx5IGJlaW5nIGluZmx1ZW5jZWQgYnkgdW5zZWVuIGVudGl0aWVzIGluIGEgZ3JlYXQgCm1hbnkgd2F5cyBvZiB3aGljaCB3ZSBoYXZlIG5vdCB0aGUgc2xpZ2h0ZXN0IGlkZWEuIFdlIGhhdmUgc3Bva2VuIG9mIHByaWRlIG9mIApyYWNlIGFuZCBjYXN0ZS4gVGhpcyBvZnRlbiBleGlzdHMgaW4gYW4gZXZlbiBtb3JlIGludGVuc2UgZm9ybSBhcyBwcmlkZSBvZiAKZmFtaWx5LCBhbmQgaW4gdGhhdCBjYXNlIG5vdCBpbmZyZXF1ZW50bHkgaXQgaXMgbGFyZ2VseSBkdWUgdG8gdGhlIGluZmx1ZW5jZSBvZiAKb3VyIGFuY2VzdG9ycy4gSSBoYXZlIGtub3duIHNldmVyYWwgY2FzZXMgaW4gd2hpY2ggYSBtYW4gY29udHJpdmVkIHRvIGtlZXAgCmhpbXNlbGYgZm9yIGEgbG9uZyB0aW1lIGluIHRoZSBhc3RyYWwgd29ybGQgaW4gb3JkZXIgdGhhdCBoZSBtaWdodCBob3ZlciBvdmVyIApoaXMgZGVzY2VuZGFudHMgYW5kIHRyeSB0byBpbmR1Y2UgdGhlbSB0byBrZWVwIHVwIHRoZSBwcmlkZSBvZiB0aGVpciByYWNlLiBUaGUgCmxhdGUgUXVlZW4gRWxpemFiZXRoLCBmb3IgZXhhbXBsZSwgaGFkIHNvIGludGVuc2UgYSBsb3ZlIGZvciBoZXIgY291bnRyeSB0aGF0IGl0IAppcyBvbmx5IHF1aXRlIHJlY2VudGx5IHRoYXQgc2hlIGhhcyBsYXBzZWQgaW50byB0aGUgaGVhdmVuLXdvcmxkLCBoYXZpbmcgc3BlbnQgCnRoZSB3aG9sZSBpbnRlcnZlbmluZyB0aW1lIGluIGVuZGVhdm91cmluZywgYW5kIHVudGlsIHJlY2VudGx5IGFsbW9zdCBlbnRpcmVseSAKd2l0aG91dCBzdWNjZXNzLCB0byBpbXByZXNzIGhlciBzdWNjZXNzb3JzIHdpdGggaGVyIGlkZWFzIG9mIHdoYXQgb3VnaHQgdG8gYmUgCmRvbmUgZm9yIEVuZ2xhbmQuIEhlcnMgaXMgcGVyaGFwcyBhbiBleHRyZW1lIGNhc2UsIGJ1dCBpbiBzZXZlcmFsIG90aGVyIHJveWFsIApmYW1pbGllcyB0aGUgY29udGludWl0eSBvZiB0cmFkaXRpb24gd2hpY2ggaGFzIGJlZW4gbWFpbnRhaW5lZCBoYXMgYmVlbiBpbiB0aGUgCnNhbWUgd2F5IGxhcmdlbHkgZHVlIHRvIGNvbnN0YW50IHByZXNzdXJlLCBpbnRlbnRpb25hbGx5IGV4ZXJjaXNlZCwgYnkgb2xkZXIgCm1lbWJlcnMgb2YgdGhlIGZhbWlseSwgZnJvbSB0aGUgYXN0cmFsIHdvcmxkLiAKCgo3NjMuwqDCoMKgwqDCoMKgwqAKSXQgaXMgYnkgbm8gbWVhbnMgdW5jb21tb24gZm9yIGZhdGhlcnMgYW5kIG1vdGhlcnMgd2hvIGhhdmUgc2V0IHRoZWlyIApoZWFydHMgdXBvbiBzb21lIHBhcnRpY3VsYXIgYWxsaWFuY2UgZm9yIHRoZWlyIHNvbnMgb3IgZGF1Z2h0ZXJzIHRvIGVuZGVhdm91ciAKZXZlbiBhZnRlciBkZWF0aCB0byBicmluZyBhYm91dCB0aGUgZnVsZmlsbWVudCBvZiB0aGVpciB3aXNoZXMuIEluIHJhcmVyIGNhc2VzIAp0aGV5IGhhdmUgYmVlbiBhYmxlIHRvIHNob3cgdGhlbXNlbHZlcyBhcyBhcHBhcml0aW9ucyBpbiBvcmRlciB0byBlbXBoYXNpc2UgCnRoZWlyIGNvbW1hbmRzLiBNb3JlIG9mdGVuIHRoZXkgZXhlcmNpc2UgYW4gaW5zaWRpb3VzIGJlY2F1c2UgdW5zdXNwZWN0ZWQgCmluZmx1ZW5jZSwgYnkgY29uc3RhbnRseSBrZWVwaW5nIHRoZWlyIHRob3VnaHQgdXBvbiB0aGUgbWF0dGVyIGJlZm9yZSB0aGUgbWluZCAKb2YgdGhlIHBlcnNvbiB3aG9tIHRoZXkgd2lzaCB0byBpbmZsdWVuY2UtLSBhIHN0ZWFkeSBwcmVzc3VyZSB3aGljaCB0aGUgb3JkaW5hcnkgCm1hbiBpcyBsaWtlbHkgdG8gdGFrZSBmb3IgaGlzIG93biBzdWItY29uc2Npb3VzIGRlc2lyZS4gCgoKNzY0LsKgwqDCoMKgwqDCoMKgCkNhc2VzIGluIHdoaWNoIHRoZSBkZWFkIGhhdmUgY29uc3RpdHV0ZWQgdGhlbXNlbHZlcyBndWFyZGlhbiBhbmdlbHMgdG8gCnRoZSBsaXZpbmcgYXJlIGV4Y2VlZGluZ2x5IG51bWVyb3VzLCBhbmQgaW4gdGhpcyB3YXkgbW90aGVycyBvZnRlbiBwcm90ZWN0IHRoZWlyIApzb25zLCBhbmQgZGVjZWFzZWQgaHVzYmFuZHMgdGhlaXIgd2lkb3dzLCBmb3IgbWFueSB5ZWFycy4gU29tZXRpbWVzIHN1Y2ggCmluZmx1ZW5jZSBpcyBub3Qgb2YgYSBwcm90ZWN0aXZlIGNoYXJhY3RlciwgYnV0IGlzIGV4ZXJjaXNlZCBpbiBvcmRlciB0aGF0IHRoZSAKZGVhZCBtYW4gbWF5IGZpbmQgYSBtZWFucyBvZiBleHByZXNzaW5nIHNvbWUgaWRlYXMgd2hpY2ggaGUgaXMgYW54aW91cyB0byBwdXQgCmJlZm9yZSB0aGUgd29ybGQuIFRoZSBwZXJzb24gdXBvbiB3aG9tIHRoZSBpbXByZXNzaW9uIGlzIG1hZGUgaXMgc29tZXRpbWVzIApjb25zY2lvdXMgb2YgaXQsIGFuZCBzb21ldGltZXMgZW50aXJlbHkgdW5jb25zY2lvdXMuIEEgY2VydGFpbiBkaXN0aW5ndWlzaGVkIApub3ZlbGlzdCBoYXMgdG9sZCBtZSB0aGF0IHRoZSB3b25kZXJmdWwgcGxvdHMgb2YgaGlzIHN0b3JpZXMgaW52YXJpYWJseSBjb21lIHRvIApoaW0gYXMgdGhvdWdoIGJ5IGEga2luZCBvZiBpbnNwaXJhdGlvbiwgdGhhdCBoZSB3cml0ZXMgdGhlbSB3aXRob3V0IGtub3dpbmcgCmJlZm9yZWhhbmQgaG93IHRoZXkgd2lsbCB3b3JrIG91dC0tIHRoYXQgaW4gZmFjdCwgYXMgaGUgcHV0cyBpdCwgdGhleSBhcmUgCmFjdHVhbGx5IHdyaXR0ZW4gdGhyb3VnaCBoaW0uIEZhciBtb3JlIG9mdGVuIHRoYW4gd2UgdGhpbmssIGF1dGhvcnMgYW5kIG11c2ljYWwgCmNvbXBvc2VycyBhcmUgaW5mbHVlbmNlZCBpbiB0aGlzIHdheSwgc28gdGhhdCBtYW55IGJvb2tzIGNyZWRpdGVkIHRvIHRoZSBsaXZpbmcgCmFyZSByZWFsbHkgdGhlIHdvcmsgb2YgdGhlIGRlYWQuIAoKCjc2NS7CoMKgwqDCoMKgwqDCoApJbiBzb21lIGNhc2VzIHRoZSBkZWFkIG1hbiBkZXNpcmVzIHRvIGFubm91bmNlIGhpcyBhdXRob3JzaGlwLCBzbyB0aGF0IApib29rcyBjb25mZXNzZWRseSB3cml0dGVuIGJ5IHRoZSBkZWFkIGFyZSBiZWNvbWluZyBxdWl0ZSBhIGZlYXR1cmUgb2YgbW9kZXJuIApsaXRlcmF0dXJlOyBvciBwZXJoYXBzIGEgYmV0dGVyIHdheSB0byBleHByZXNzIGl0IHdvdWxkIGJlIHRoYXQgbWFueSBvZiB1cyBhcmUgCmdyYWR1YWxseSBjb21pbmcgdG8gcmVjb2duaXNlIHRoYXQgdGhlcmUgaXMgbm8gc3VjaCB0aGluZyBhcyBkZWF0aCBpbiB0aGUgb2xkLCAKYmFkIHNlbnNlIG9mIHRoZSB3b3JkLCBhbmQgdGhhdCB0aG91Z2ggYSBtYW4gd2hvIGhhcyBsYWlkIGFzaWRlIGhpcyBwaHlzaWNhbCAKYm9keSBtYXkgZmluZCBhIGNlcnRhaW4gZGlmZmljdWx0eSBpbiB3cml0aW5nIGEgYm9vayB3aXRoIGhpcyBvd24gaGFuZCwgaGUgaXMgCnF1aXRlIGFzIGNhcGFibGUgb2YgZGljdGF0aW5nIG9uZSBhcyBhbnkgbGl2aW5nIGF1dGhvci4gU29tZXRpbWVzIHN1Y2ggYm9va3MgYXJlIAptb3JhbCBvciBtZXRhcGh5c2ljYWwgdHJlYXRpc2VzLCBidXQgc29tZXRpbWVzIGFsc28gdGhleSBhcmUgbm92ZWxzLCBhbmQgaW4gdGhpcyAKbGF0dGVyIHNoYXBlIHRoZXkgdW5kb3VidGVkbHkgZG8gZ29vZCwgZm9yIHRoZXkgcmVhY2ggbWFueSB3aG8gYXJlIHF1aXRlIAp1bmxpa2VseSB0byBlbmNvdW50ZXIgYSBtb3JlIHNlcmlvdXMgZXNzYXkgb24gb2NjdWx0IG1hdHRlcnMsIGFuZCB3b3VsZCBiZSBzdGlsbCAKbGVzcyBsaWtlbHkgdG8gdGFrZSB0aGUgdHJvdWJsZSB0byByZWFkIGl0IGlmIHRoZXkgZGlkIGVuY291bnRlciBpdC4gCgoKNzY2LsKgwqDCoMKgwqDCoMKgCkEgZ29vZCBzcGVjaW1lbiBvZiB0aGlzIGNsYXNzIChhbmQgaXQgaXMgYSBjbGFzcyB3aGljaCBpcyBiZWNvbWluZyBtb3JlIApudW1lcm91cyB5ZWFyIGJ5IHllYXIpIGlzIFRoZSBTdHJhbmdlIFN0b3J5IG9mIEFocmluemltYW4tLSBhIGJvb2sgCndoaWNoIHdhcyBicm91Z2h0IHRvIG15IG5vdGljZSBzb21lIHllYXJzIGFnby4gTGV0IG1lIHRha2UgaXQgYXMgYW4gZXhhbXBsZSBhbmQgCmV4cGxhaW4gd2hhdCBpdCBpcyBhbmQgaG93IGl0IGNhbWUgdG8gYmUgd3JpdHRlbi4gSSBrbm93IHRoYXQgdGhlIGZpcnN0IGltcHVsc2UgCm9mIHRob3NlIHdobyBhcmUgZG96aW5nIGluIHRoZSBjb21mb3J0YWJsZSBoYXplIHdoaWNoIHN1cnJvdW5kcyB0aGUgYXZlcmFnZSAKaW50ZWxsaWdlbmNlIGFuZCBjdXNoaW9ucyBpdCBhZ2FpbnN0IHRoZSByZWFsIGZhY3RzIG9mIGxpZmUsIHdpbGwgbmF0dXJhbGx5LCBiZSAKdG8gcHJvY2xhaW0gdGhhdCB0aGUgd2hvbGUgdGhpbmcgbXVzdCBiZSBub25zZW5zZSwgb24gdGhlIGNydWRlIHRoZW9yeSB0aGF0IHdoZW4gCmEgbWFuIGlzIGRlYWQgaGUgaXMgZGVhZCwgYW5kIGl0IGlzIHRoZXJlZm9yZSBxdWl0ZSBpbXBvc3NpYmxlIHRoYXQgaGUgCnNob3VsZCBkaWN0YXRlIGFueXRoaW5nOyBhbmQgZXZlbiB0aG9zZSB3aG8ga25vdyBiZXR0ZXIgdGhhbiB0aGF0IG1heSBiZSB0ZW1wdGVkIAp0byBzdXNwZWN0IHRoYXQgdG8gYXNzaWduIHRoZSBhdXRob3JzaGlwIHRvIGEgbWFuIG91dCBvZiB0aGUgYm9keSBpcyBub3RoaW5nIGJ1dCAKYSBub3ZlbCBmb3JtIG9mIGFkdmVydGlzZW1lbnQtLSBhIHRyaWNrIG9mIHRoZSB0cmFkZSwgYXMgaXQgd2VyZS4gU28gcGVyaGFwcyBJIApoYWQgYmV0dGVyIGJlZ2luIGJ5IHNheWluZyB0aGF0IEkgaGF2ZSB0cnVzdHdvcnRoeSBhc3N1cmFuY2UgdGhhdCB0aGlzIGJvb2sgaXMgCmF0IGxlYXN0IGEgZ2VudWluZSBkaWN0YXRpb24gZnJvbSB0aGUgYXN0cmFsIHdvcmxkLCB0aG91Z2ggbmF0dXJhbGx5IHRoYXQgYnkgbm8gCm1lYW5zIGd1YXJhbnRlZXMgdGhhdCBpdCBpcyBpbiBhbGwgb3RoZXIgcmVzcGVjdHMgd2hhdCBpdCBjbGFpbXMgdG8gYmUuIAoKCjc2Ny7CoMKgwqDCoMKgwqDCoApQZW9wbGUgd2hvIGFyZSB1bmFjcXVhaW50ZWQgd2l0aCB0aGUgY29uZGl0aW9ucyBvZiBsaWZlIGFtb25nIHRob3NlIHdob20gCndlIGFyZSBpbiB0aGUgaGFiaXQgb2YgbWlzY2FsbGluZyDvv710aGUgZGVhZCzvv70gc2VlbSB0byBmaW5kIGl0IGltcG9zc2libGUgdG8gCnJlYWxpc2UgaG93IG5hdHVyYWwgaW4gYWxsIHJlc3BlY3RzIHRoYXQgbGlmZSBpcywgb3IgdG8gdW5kZXJzdGFuZCB0aGF0IGh1bWFuIApuYXR1cmUgbWF5IGFuZCBkb2VzIGV4aGliaXQgYWxsIGl0cyB2YXJpZWQgYXNwZWN0cyBqdXN0IGFzIHF1YWludGx5IG9uIHRoZSBvdGhlciAKc2lkZSBvZiB0aGUgZ3JhdmUgYXMgb24gdGhpcy4gVGhlIGRlYWQgbWFuIGhhcyBub3QgbmVjZXNzYXJpbHkgYmVlbiBjYW5vbmlzZWQsIApub3IgaGFzIGhlIHN1ZGRlbmx5IGJlY29tZSBncmF2ZSBhbmQgcmV2ZXJlbmQ7IGhlIGlzIGV4YWN0bHkgdGhlIHNhbWUgbWFuIGFzIApiZWZvcmUsIGp1c3QgYXMgc3VzY2VwdGlibGUgdG8gdGhlIGluZmx1ZW5jZSBvZiB2YW5pdHkgb3IgamVhbG91c3ksIGp1c3QgYXMgCmNhcGFibGUgb2YgbWFraW5nIG1pc3Rha2VzLiAKCgo3NjguwqDCoMKgwqDCoMKgwqAKQW4gYXN0cmFsIGF1dGhvciBtYXkgZW1wbG95IHRoZSBzYW1lIGxpdGVyYXJ5IG1hY2hpbmVyeSBhcyBhIHBoeXNpY2FsIAphdXRob3IsIGFuZCBtYXkgY2FzdCBoaXMgdGFsZSBpbnRvIGFueSBmb3JtIHRoYXQgcGxlYXNlcyBoaW0uIFdoZW4gd2UgZmluZCBNci4gClJpZGVyIEhhZ2dhcmQgd3JpdGluZyBpbiB0aGUgZmlyc3QgcGVyc29uIHVuZGVyIHRoZSBuYW1lIG9mIEFsbGFuIFF1YXJ0ZXJtYWluIG9mIApMdWR3aWcgSG9yYWNlIEhvbGx5LCB3ZSBkbyBub3QgbmVjZXNzYXJpbHkgYXNzdW1lIHRoYXQgaGUgaXMgcmVsYXRpbmcgcGVyc29uYWwgCmV4cGVyaWVuY2VzIG9mIGhpcyBvd24sIG5vciBldmVuIHRoYXQgUXVhcnRlcm1haW4gb3IgSG9sbHkgaGFkIGEgaGlzdG9yaWNhbCAKZXhpc3RlbmNlLiBJbiBleGFjdGx5IHRoZSBzYW1lIHdheSB3ZSBtdXN0IHJlYWxpc2UgdGhhdCB3aGVuIGEgZGVhZCBtYW4gZGljdGF0ZXMgCmluIHRoZSBmaXJzdCBwZXJzb24gVGhlIFN0b3J5IG9mIEFocmluemltYW4sIGhlIG1heSBiZSB0cnlpbmcgdG8gZ2l2ZSAKdXMgYSBtb3JlIG9yIGxlc3MgbW9kaWZpZWQgYXV0b2Jpb2dyYXBoeSwgb3IgaGUgbWF5IHNpbXBseSBiZSBjYXN0aW5nIGFuIAphbGxlZ29yeSBvciBhIHByb2JsZW0tbm92ZWwgaW50byBhbiBhdHRyYWN0aXZlIGFuZCBzdHJpa2luZyBmb3JtOyBhbmQgdGhpcyAKc3VnZ2VzdGlvbiBtdXN0IG5vIG1vcmUgYmUgY29uc2lkZXJlZCBhIHJlZmxlY3Rpb24gdXBvbiB0aGUgYm9uYSBmaWRlcyAKb2YgdGhlIGRlYWQgYXV0aG9yIHRoYW4gd2FzIHRoZSBwcmV2aW91cyBzZW50ZW5jZSBhIHJlZmxlY3Rpb24gdXBvbiB0aGF0IG9mIE1yLiAKSGFnZ2FyZC4gCgoKNzY5LsKgwqDCoMKgwqDCoMKgCkJlIHRoaXMgYXMgaXQgbWF5LCBBaHJpbnppbWFuIHRlbGxzIHVzIGEgZ29vZCBzdG9yeS0tIGEgc3Rvcnkgd2hpY2ggaXMgCnRob3JvdWdobHkgb3JpZW50YWwgaW4gaXRzIHNldHRpbmcuIEhlIGRlc2NyaWJlcyBoaW1zZWxmIGFzIHRoZSBpbGxlZ2l0aW1hdGUgc29uIApvZiBhIFBlcnNpYW4ga2luZy4gSGlzIG1vdGhlciwgYSBHcmVlayB2ZXN0YWwgdmlyZ2luIGNhcHR1cmVkIGluIHNvbWUgUGVyc2lhbiAKZm9yYXksIGlzIG11cmRlcmVkIGJ5IHRoZSByaWdodGZ1bCBxdWVlbiBpbiBhIGZpdCBvZiBqZWFsb3VzeSwgYW5kIHRvIGF2b2lkIApmdXJ0aGVyIHVucGxlYXNhbnQgZXhwcmVzc2lvbiBvZiB0aGlzIHNhbWUgY29uc3VtaW5nIGplYWxvdXN5LCB0aGUgY2hpbGQgaXMgCmJyb3VnaHQgdXAgYnkgYSBwZWFzYW50IGFtb25nIHRoZSBtb3VudGFpbnMgaW4gYSBkaXN0YW50IGNvcm5lciBvZiB0aGUgZW1waXJlLiAKVGhlIGJveSBpcyBieSBuYXR1cmUgY2xhaXJ2b3lhbnQgdG8gYSBjZXJ0YWluIGV4dGVudCwgYWJsZSB0byBzZWUgdGhlIApuYXR1cmUtc3Bpcml0cyB3aGljaCBzdXJyb3VuZCBoaW0sIGFuZCBhbHNvIGhpcyBkZWFkIG1vdGhlci4gUHJlc2VudGx5IGhlIGNvbWVzIAppbnRvIGNvbnRhY3Qgd2l0aCBzb21lIHByaWVzdHMsIGxlYXJucyBtdWNoIGZyb20gdGhlbSwgYW5kIGlzIGV2ZW50dWFsbHkgdGFrZW4gCmludG8gdGhlIHRlbXBsZSBhbmQgYmVjb21lcyBhIG1lZGl1bSBmb3IgdGhlbS4gRGlzY29udGVudCBzZWl6ZXMgaGltLCBhbmQgaGUgCmFic2NvbmRzIGFuZCBqb2lucyBhIGJhbmQgb2Ygcm9iYmVycyBpbiB0aGUgbW91bnRhaW5zLCBidXQgYWZ0ZXIgYSBmZXcgeWVhcnMgCmFiYW5kb25zIHRoZW0gaW4gdHVybi4gSGUgdGhlbiBtZWV0cyB3aXRoIGEgcHJhY3RpdGlvbmVyIG9mIHRoZSBkYXJrZXIgbWFnaWMsIAphbmQgYXR0YWNoZXMgaGltc2VsZiB0byBoaW0gYXMgYSBwdXBpbDsgYnV0IHRoZSBtYXN0ZXIgZGllcyBpbiB0aGUgcGVyZm9ybWFuY2UgCm9mIG9uZSBvZiBoaXMgZW5jaGFudG1lbnRzLCBhbmQgdGhlIHN0dWRlbnQgaXMgc2F2ZWQgZnJvbSBzaGFyaW5nIGhpcyBmYXRlIG9ubHkgCmJ5IHRoZSBpbnRlcmZlcmVuY2Ugb2YgaGlzIGRlYWQgbW90aGVyLiAKCgo3NzAuwqDCoMKgwqDCoMKgwqAKRHVyaW5nIGZ1cnRoZXIgd2FuZGVyaW5ncyBoZSBtZWV0cyB0aGUgcHJpbmNlLCB3aG8gaXMgaW4gcmVhbGl0eSBoaXMgCnN0ZXAtYnJvdGhlciAodGhlIHNvbiBvZiB0aGUgcXVlZW4gd2hvIG11cmRlcmVkIGhpcyBtb3RoZXIpLCBhbmQgaXMgZW5hYmxlZCBieSAKaGlzIGNsYWlydm95YW50IHBvd2VyIHRvIGN1cmUgaGltIG9mIGFuIG9ic2Vzc2lvbi4gVGhpcyBwcmluY2UgaW4gZHVlIGNvdXJzZSAKY29tZXMgdG8gdGhlIHRocm9uZSBhbmQgcmFpc2VzIG91ciBoZXJvIHRvIGEgcG9zaXRpb24gb2YgaG9ub3VyLCBrbm93aW5nIApub3RoaW5nLCBob3dldmVyLCBvZiB0aGUgcmVhbCByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGVtLiBCeSB0aGlzIHRpbWUgQWhyaW56aW1hbiAKaXMgbWFycmllZCwgdW5mb3J0dW5hdGVseSB0byBhbiBlbnRpcmVseSB1bndvcnRoeSB3b21hbiB3aG8gbmV2ZXIgcmVhbGx5IAphcHByZWNpYXRlcyBoaW0sIGFuZCBpcyBmYWxzZSB0byBoaW0gd2l0aG91dCBoZXNpdGF0aW9uIHdoZW4gc2hlIGZpbmRzIHRoYXQgc2hlIApoYXMgYXR0cmFjdGVkIHRoZSBmYXZvdXJhYmxlIHJlZ2FyZHMgb2YgdGhlIGtpbmcuIFRocm91Z2ggaGlzIHBhcnRpYWwgCmNsYWlydm95YW5jZSBBaHJpbnppbWFuIGJlY29tZXMgYXdhcmUgb2YgdGhpcywgYW5kIGluIGhpcyBqZWFsb3VzIHJhZ2UgY2F1c2VzIAp0aGUgZGVhdGggb2YgdGhlIGtpbmcgYnkgYXN0cmFsIG1lYW5zLiBIZSBoaW1zZWxmIHN1Y2NlZWRzIHRvIHRoZSB0aHJvbmUgKGhhdmluZyAKZGVjbGFyZWQgaGlzIHBhcmVudGFnZSksIGJ1dCBhZnRlciBhIHNob3J0IHJlaWduIGlzIHNsYWluIGJ5IGFub3RoZXIgY2xhaW1hbnQuCgoKNzcxLsKgwqDCoMKgwqDCoMKgClRoZSByZXN0IG9mIHRoZSBib29rIGlzIGRldm90ZWQgdG8gYSBkZXNjcmlwdGlvbiBvZiBoaXMgZXhwZXJpZW5jZXMgaW4gCnRoZSBhc3RyYWwgd29ybGQuIEhlIGlzIHJlcHJlc2VudGVkIGFzLCBhdCBmaXJzdCwgZmlsbGVkIHdpdGggamVhbG91c3kgYW5kIApoYXRyZWQsIGFuZCBjb25zZXF1ZW50bHkgbWF0aW5nIHdpdGggYWxsIHNvcnRzIG9mIGhvcnJpYmxlIGVudGl0aWVzIGluIG9yZGVyIAp0aHJvdWdoIHRoZW0gdG8gYWNoaWV2ZSByZXZlbmdlOyBidXQgZ3JhZHVhbGx5IHRoZSBnb29kIHdpdGhpbiBoaW0gYXNzZXJ0cyAKaXRzZWxmLCBhbmQgaGUgYmVnaW5zIHRvIHRyeSB0byBhaWQgaW5zdGVhZCBvZiB0byBpbmp1cmUsIGFuZCBzbyB0aHJvdWdoIGEgbG9uZyAKYW5kIHRvaWxzb21lIHVwd2FyZCBwcm9ncmVzcyBoZSBhdCBsYXN0IGF0dGFpbnMgdG8gcGVyZmVjdCBibGlzcy4gCgoKNzcyLsKgwqDCoMKgwqDCoMKgCkhvdyBmYXIgaXMgaXQgcG9zc2libGUgdGhhdCBhbGwgdGhpcyBjYW4gYmUgdHJ1ZT8gTWF5IHdlIHRha2UgaXQgd2hvbGx5IApvciBwYXJ0bHkgYXMgdGhlIGF1dG9iaW9ncmFwaHkgd2hpY2ggaXQgcHJvZmVzc2VzIHRvIGJlLCBvciBtdXN0IHdlIHJlZ2FyZCBpdCBhcyAKYSByb21hbmNlPyBDZXJ0YWlubHkgb2YgbXVjaCBvZiBpdCB3ZSBtYXkgc2F5OiDvv71TZSBub24g77+9IHZlcm8sIO+/vSBiZW4gCnRyb3ZhdG8u77+9IEFzIHRvIHRoZSBwaHlzaWNhbCBwYXJ0IG9mIHRoZSBzdG9yeSwgd2UgaGF2ZSBidXQgbWVhZ3JlIHJlY29yZHMgCm9mIHdoYXQgdG9vayBwbGFjZSBpbiBQZXJzaWEgaW4gdGhlIGZpZnRoIGNlbnR1cnkgYmVmb3JlIHRoZSBDaHJpc3RpYW4gZXJhLCBidXQgCmFzIGZhciBhcyBpdCBnb2VzLCBvdXIgZnJhZ21lbnRhcnkgaGlzdG9yeSBvZiB0aGF0IHBlcmlvZCBzZWVtcyB0byBmaXQgaW4gZmFpcmx5IAphY2N1cmF0ZWx5IHdpdGggd2hhdCBBaHJpbnppbWFuIHdyaXRlcy4gVGhlIGludGVyZXN0IG9mIHRoZSBzdHVkZW50IG9mIHRoZSAKaGlkZGVuIHNpZGUgb2YgbmF0dXJlIHdpbGwgbmF0dXJhbGx5IGJlIGNlbnRyZWQgY2hpZWZseSBvbiB0aGUgYXN0cmFsIApleHBlcmllbmNlcywgZm9yIHRoZSBzYWtlIG9mIHdoaWNoIG1haW5seSB0aGUgYm9vayBpcyBwdXQgZm9ydGgsIGFuZCBoZSB3aWxsIApkZXNpcmUgdG8ga25vdyBob3cgZmFyIHRoZXNlIGNhbiBiZSBjb25maXJtZWQgZnJvbSB0aGUgcG9pbnQgb2YgdmlldyBvZiBzdWNoIApvY2N1bHQga25vd2xlZGdlIGFzIGhhcyByZWFjaGVkIG91ciB3ZXN0ZXJuIHdvcmxkLiAKCgo3NzMuwqDCoMKgwqDCoMKgwqAKVGhvc2Ugd2hvIGhhdmUgc3R1ZGllZCBtb3N0IGRlZXBseSB3aWxsIGJlIHRoZSBmaXJzdCB0byBhZG1pdCB0aGF0IGluIAp0aGlzIHNwbGVuZGlkIHNjaWVuY2Ugb2YgdGhlIHNvdWwgd2UgYXJlIGFzIHlldCBidXQgcGlja2luZyB1cCBwZWJibGVzIG9uIHRoZSAKc2hvcmUgb2YgdGhlIGdyZWF0IG9jZWFuIG9mIGtub3dsZWRnZSwgdGhhdCBvdXIgZnVsbGVzdCBpbmZvcm1hdGlvbiBpcyBhcyB5ZXQgCmZhciBmcm9tIGV4aGF1c3RpdmUsIGFuZCB0aGF0IHRoZSBtYXJ2ZWxsb3VzIHZhcmlldHkgYW5kIGFkYXB0YWJpbGl0eSBvZiBhc3RyYWwgCmNvbmRpdGlvbnMgYXJlIHNvIGdyZWF0IHRoYXQgaXQgd291bGQgYmUgcmFzaCB0byBzYXkgdGhhdCBhbnl0aGluZyBpcyAKaW1wb3NzaWJsZS4gU3RpbGwsIGNlcnRhaW4gYnJvYWQgcnVsZXMgYXJlIHdlbGwgZXN0YWJsaXNoZWQsIGFuZCBzb21lIG9mIHRoZXNlIApzZWVtIHRvIGJlIHZpb2xhdGVkIGJ5IEFocmluemltYW4nIHMgc3RvcnksIGlmIHdlIGFyZSB0byB0YWtlIGl0IGxpdGVyYWxseSwgCnRob3VnaCBhbGwgZmFsbHMgcmVhZGlseSBpbnRvIHBsYWNlIGlmIHdlIGFsbG93IGZvciBjZXJ0YWluIGxpbWl0YXRpb25zIHVwb24gaGlzIApwYXJ0LiBJZiB0aGUgd2hvbGUgdGhpbmcgaXMgc2ltcGx5IGEgcGFyYWJsZSwgd2VsbCBhbmQgZ29vZDsgYnV0IGl0IGlzIAppbnRlcmVzdGluZyB0byBzZWUgaG93IEFocmluemltYW4gbWF5IGJlIHBlcmZlY3RseSBob25lc3QgaW4gaGlzIG5hcnJhdGlvbiwgZXZlbiAKdGhvdWdoIHNvbWUgcG9pbnRzIGluIGl0IGFyZSBjb250cmFyeSB0byBhY2NlcHRlZCBmYWN0cy4gCgoKNzc0LsKgwqDCoMKgwqDCoMKgClRoZSBmaXJzdCBncmVhdCBxdWVzdGlvbiBpcyB3aGV0aGVyIGEgc3RheSBvZiBhbnl0aGluZyBsaWtlIHN1Y2ggYSBwZXJpb2QgCmFzIHR3byB0aG91c2FuZCB0aHJlZSBodW5kcmVkIHllYXJzIGluIHRoZSBhc3RyYWwgd29ybGQgaXMgYXQgYWxsIHBvc3NpYmxlLCAKc2luY2Ugd2Uga25vdyB0aGF0IHR3ZW50eSBvciB0aGlydHkgeWVhcnMgaXMgYSBmYWlyIGF2ZXJhZ2UgZm9yIG9yZGluYXJ5IApwZXJzb25zLiBJdCBpcyB0cnVlIHRoYXQgYSBtYW4gb2YgdW51c3VhbCB3aWxsLXBvd2VyIG1heSBncmVhdGx5IHByb2xvbmcgaGlzIAphc3RyYWwgbGlmZSBieSBpbnRlbnNpZnlpbmcgaGlzIHBhc3Npb25zIGFuZCBkZXNpcmVzLCBhbmQgdGhyb3dpbmcgYWxsIGhpcyAKc3RyZW5ndGggaW50byB0aGUgbG93ZXIgcmF0aGVyIHRoYW4gdGhlIGhpZ2hlciBzaWRlIG9mIGhpbXNlbGY7IGFuZCB0aGlzIGlzIApleGFjdGx5IHdoYXQgQWhyaW56aW1hbiByZXByZXNlbnRzIGhpbXNlbGYgdG8gaGF2ZSBkb25lLiBJIGhhdmUgcmVhZCBvZiBhIGNhc2UgCmluIEdlcm1hbnkgd2hlcmUgYW4gZXJyaW5nIHByaWVzdCB3YXMgZWFydGgtYm91bmQgZm9yIGZvdXIgaHVuZHJlZCB5ZWFycywgYW5kIEkgCmhhdmUgbXlzZWxmIGtub3duIG9uZSB3aGVyZSBhbWJpdGlvbiBhbmQgYSBkZXRlcm1pbmVkIHdpbGwgZGV0YWluZWQgYSBwZXJzb24gaW4gCmFzdHJhbCBsaWZlIGZvciB0aHJlZSBodW5kcmVkOyBidXQgc3VjaCBpbnN0YW5jZXMgYXJlIGluZnJlcXVlbnQsIGFuZCBub25lIG9mIAp0aGVtIGV2ZW4gYXBwcm9hY2ggdGhlIHZpc3RhIG9mIGNlbnR1cmllcyBjbGFpbWVkIGJ5IEFocmluemltYW4uIEl0IGlzIGNsZWFyLCAKdG9vLCB0aGF0IGhlIGRvZXMgbm90IGNvbnNpZGVyIGhpbXNlbGYgYnkgYW55IG1lYW5zIGFzIGEgc3BlY2lhbCBjYXNlLCBmb3IgaGUgCnNwZWFrcyBvZiBtYW55IGZyaWVuZHMgYW5kIGNvbnRlbXBvcmFyaWVzIGFzIHN0aWxsIHdpdGggaGltLCBzb21lIGluIGFkdmFuY2Ugb2YgCmhpbSBpbiBwcm9ncmVzcywgYW5kIHNvbWUgYmVoaW5kIGhpbS4gSWYsIHRoZXJlZm9yZSwgd2UgYXJlIHRvIGFjY2VwdCBoaXMgc3RvcnkgCmFzIGdlbnVpbmUsIGl0IGJlY29tZXMgbW9yZSBwcm9iYWJsZSBpZiB3ZSByZWdhcmQgaXQgcmF0aGVyIGFzIGFuIGF0dGVtcHQgdG8gCmRlc2NyaWJlIGNvbmRpdGlvbnMgdGhyb3VnaCB3aGljaCBoZSBwYXNzZWQgZHVyaW5nIHRoZSBmaXJzdCBjZW50dXJ5IGFmdGVyIGhpcyAKZGVhdGggdGhhbiBhcyBpbmRpY2F0aW5nIGFueXRoaW5nIGF0IHByZXNlbnQgZXhpc3RpbmcuIAoKCjc3NS7CoMKgwqDCoMKgwqDCoApUaG91Z2ggZWFnZXIgZm9yIG9jY3VsdCBrbm93bGVkZ2UsIGhlIGRpZCBub3Qgc2hvdyBtdWNoIGF0dHJhY3Rpb24gCnRvd2FyZHMgc3Bpcml0dWFsaXR5LCBleGNlcHQgaW4gY2hpbGRob29kOyBoaXMgYWN0aW9ucyB3ZXJlIGNoaWVmbHkgdGhlIHJlc3VsdCAKb2YgYW1iaXRpb24sIHBhc3Npb24gYW5kIHJldmVuZ2UsIGFuZCBoZSBkaWVkIGJ5IHZpb2xlbmNlIGluIHRoZSBwcmltZSBvZiBsaWZlLiAKQ29uc2lkZXJpbmcgYWxsIHRoZXNlIGZhY3RvcnMgd2Ugc2hvdWxkIGV4cGVjdCBhIHByb3RyYWN0ZWQgYW5kIHN0b3JteSBhc3RyYWwgCmV4aXN0ZW5jZSwgdGhlIGVhcmxpZXIgcGFydCBvZiB3aGljaCB3b3VsZCBwcm9iYWJseSBiZSBleHRyZW1lbHkgdW5wbGVhc2FudDsgd2UgCnNob3VsZCBleHBlY3QgYWxzbyB0aGF0IGdyYWR1YWxseSB0aGUgcGFzc2lvbnMgd291bGQgd2VhciB0aGVtc2VsdmVzIG91dCwgdGhhdCAKdGhlIGJldHRlciBzaWRlIG9mIGhpcyBuYXR1cmUgd291bGQgYXNzZXJ0IGl0c2VsZiwgYW5kIHRoYXQgb3Bwb3J0dW5pdGllcyB3b3VsZCAKYmUgb2ZmZXJlZCBmb3IgcHJvZ3Jlc3MuIAoKCjc3Ni7CoMKgwqDCoMKgwqDCoApBbGwgdGhpcyBpcyB3aGF0IEFocmluemltYW4gZGVzY3JpYmVzLCBidXQgaGUgc3Vycm91bmRzIGl0IHdpdGggYSB3ZWFsdGggCm9mIGFsbGVnb3J5IHRoYXQgbWF5IGVhc2lseSBiZSBtaXN1bmRlcnN0b29kLCBhbmQgaGUgc3ByZWFkcyBvdmVyIHR3byB0aG91c2FuZCAKdGhyZWUgaHVuZHJlZCB5ZWFycyB3aGF0IG1heSB3ZWxsIGhhdmUgb2NjdXBpZWQgZm9ydHkgb3IgZmlmdHkuIFdlIG11c3Qgbm90IApmb3JnZXQgdGhhdCBpbiB0aGUgYXN0cmFsIHdvcmxkIG5vbmUgb2Ygb3VyIG9yZGluYXJ5IG1ldGhvZHMgb2YgdGltZS1tZWFzdXJlbWVudCAKYXJlIGF2YWlsYWJsZSwgYW5kIHRoYXQgaWYsIGV2ZW4gaW4gcGh5c2ljYWwgbGlmZSwgYSBmZXcgaG91cnMgb2Ygc3VmZmVyaW5nIG9yIAphbnhpZXR5IHNlZW0gdG8gdXMgYWxtb3N0IGludGVybWluYWJsZSwgdGhpcyBjaGFyYWN0ZXJpc3RpYyBpcyBleGFnZ2VyYXRlZCBhIApodW5kcmVkZm9sZCBpbiBhbiBleGlzdGVuY2Ugb2Ygd2hpY2ggZmVlbGluZ3MgYW5kIHBhc3Npb25zIGFyZSB0aGUgdmVyeSBlc3NlbmNlLiAKV2hpbGUgaXQgaXMgc2NhcmNlbHkgY29uY2VpdmFibGUgdGhhdCBBaHJpbnppbWFuIGNhbiByZWFsbHkgaGF2ZSBzcGVudCB0d28gCnRob3VzYW5kIHllYXJzIGluIHRoZSBhc3RyYWwgd29ybGQsIGl0IGlzIGVhc3kgdG8gYmVsaWV2ZSB0aGF0IGhpcyBzb2pvdXJuIHRoZXJlCnNlZW1lZCB0byBoaW0gYW4gZXRlcm5pdHkuIAoKCjc3Ny7CoMKgwqDCoMKgwqDCoApTdGlsbCB0aGUgZmFjdCByZW1haW5zIHRoYXQsIGlmIGhlIGlzIHRvIGJlIGNyZWRpdGVkIGFzIHRvIHRoZSBwaHlzaWNhbCAKcGFydCBvZiBoaXMgbGlmZSwgYWJvdXQgdGhhdCBsZW5ndGggb2YgdGltZSBoYXMgcGFzc2VkIHNpbmNlIGhpcyBhc3Nhc3NpbmF0aW9uOyAKd2hhdCB0aGVuIGhhcyBoZSBiZWVuIGRvaW5nIGR1cmluZyBhbGwgdGhlc2UgeWVhcnM/IEkgaGF2ZSBubyBwZXJzb25hbCAKYWNxdWFpbnRhbmNlIHdpdGggaGltLCBhbmQgbm8gcmlnaHQgdG8gbWFrZSBpbXBlcnRpbmVudCBlbnF1aXJpZXMsIGJ1dCBhIGNhc2UgCnNvbWV3aGF0IHBhcmFsbGVsIHRvIGhpcyB3aGljaCBJIHJlY2VudGx5IGludmVzdGlnYXRlZCBtYXkgc3VnZ2VzdCB0byB1cyBhIApwb3NzaWJsZSBleHBsYW5hdGlvbi4gCgoKNzc4LsKgwqDCoMKgwqDCoMKgCkkgd2FzIGNvbnN1bHRlZCBieSBhIGxhZHkgd2hvIHN0YXRlZCB0aGF0IGhlciDvv71zcGlyaXQgZ3VpZGXvv70gd2FzIGEgcHJpZXN0IApvZiBhbmNpZW50IEVneXB0OyBhbmQgYXMgdGhlIGFkdmljZSB3aGljaCBoZSBnYXZlIHdhcyBnb29kLCBhbmQgaGlzIHRlYWNoaW5nIAphY2N1cmF0ZSwgaXQgc2VlbWVkIHdvcnRoIHdoaWxlIHRvIGlucXVpcmUgaW50byBoaXMgcmVhc29ucyBmb3IgbWFraW5nIHNvIApleHRyYW9yZGluYXJ5IGEgY2xhaW0sIGFzIGl0IGFwcGVhcmVkIHNjYXJjZWx5IGxpa2VseSB0aGF0IHNvIGRpZ25pZmllZCBhbmQgCnVwcmlnaHQgYSBtYW4gd291bGQgc3Rvb3AgdG8gdGhlIGNvbW1vbiBhbmQgcGV0dHkgZGV2aWNlIG9mIGltcGVyc29uYXRpb24uIE9uIAptZWV0aW5nIGhpbSBJIHNhdyBhdCBvbmNlIHRoYXQgaGUgaGFkIHVucXVlc3Rpb25hYmx5IGJlZW4gaW5pdGlhdGVkIHVwIHRvIGEgCmNlcnRhaW4gbGV2ZWwgaW50byB0aGUgTXlzdGVyaWVzIGFjY29yZGluZyB0byB0aGUgRWd5cHRpYW4gUml0ZSwgYW5kIG5hdHVyYWxseSBJIAp3b25kZXJlZCBob3cgaXQgY291bGQgYmUgdGhhdCBoZSB3YXMgc3RpbGwgYWN0aXZlIGluIHRoZSBhc3RyYWwgd29ybGQuIFVwb24gCmV4YW1pbmF0aW9uIEkgZm91bmQgdGhhdCBzaW5jZSBoaXMgbGlmZSBhcyBhbiBFZ3lwdGlhbiBwcmllc3QgaGUgaGFkIGhhZCBhbm90aGVyIAppbmNhcm5hdGlvbiwgd2hpY2ggaGUgaGFkIHNwZW50IHdlYXJpbHkgYW5kIHVuc2F0aXNmYWN0b3JpbHkgd2l0aGluIHRoZSB3YWxscyBvZiAKYSBtb25hc3RlcnksIGRldm90aW5nIGl0IGFwcGFyZW50bHkgdG8gdGhlIHdvcmtpbmcgb3V0IG9mIHNvbWUgYWNjdW11bGF0aW9ucyBvZiAKa2FybWE7IGJ1dCBhZnRlciBoaXMgZGVhdGggY2VydGFpbiBjaXJjdW1zdGFuY2VzIChpdCBzZWVtZWQgYSBtZXJlIAphY2NpZGVudCkgYnJvdWdodCBoaW0gaW50byB0b3VjaCB3aXRoIHRoZSB0aG91Z2h0LWN1cnJlbnQgb2YgaGlzIG9sZCBFZ3lwdGlhbiAKc3Vycm91bmRpbmdzLiAKCgo3NzkuwqDCoMKgwqDCoMKgwqAKSW5zdGFudGx5IHRoZSBtZW1vcnkgb2YgdGhhdCBwcmV2aW91cyBsaWZlIGZsYXNoZWQgaW50byBoaXMgY29uc2Npb3VzbmVzcyAKKEkgdGhpbmsgaXQgaGFkIGFsd2F5cyBiZWVuIGhvdmVyaW5nIHVwb24gdGhlIHRocmVzaG9sZCwgYW5kIGhlIGhhZCBhbHdheXMgYmVlbiAKaHVuZ2VyaW5nLCB0aG91Z2ggaGUgZGlkIG5vdCBrbm93IGZvciB3aGF0KSwgYW5kIGl0IHdhcyBzbyBtdWNoIG1vcmUgdml2aWQgYW5kIApyZWFsIHRoYW4gdGhlIGR1bGwgbW9uYXN0aWMgcm91bmQsIHRoYXQgdGhlIGxhdHRlciBiZWNhbWUgdG8gaGltIGEgbWVyZSBldmlsIApkcmVhbS4gSGUgc29vbiBmb3Jnb3QgaXQgYWx0b2dldGhlciwgb3IgcmVnYXJkZWQgaXQgYXMgbm90aGluZyBtb3JlIHRoYW4gYSAKd2Vhcmlzb21lIHBhcnQgb2YgaGlzIGFzdHJhbCBwdW5pc2htZW50LCBhbmQgc28gaGUgd2FzIHJlYWxseSBxdWl0ZSBob25lc3QgaW4gCmhpcyBzdGF0ZW1lbnQgdGhhdCBoZSB3YXMgdGhhdCBFZ3lwdGlhbiBwcmllc3QtLSB0aGUgcG93ZXJmdWwgCnBlcnNvbmFsaXR5IHdpdGggd2hpY2ggaGUgaGFkIGlkZW50aWZpZWQgaGltc2VsZiB1cCB0byB0aGUgY2xvc2Ugb2YgaGlzIGxhc3QgCmxpZmUgaW4gdGhlIGhlYXZlbi13b3JsZCwganVzdCBiZWZvcmUgaGlzIGRlc2NlbnQgaW50byB0aGUgY29tcGFyYXRpdmVseSByZWNlbnQgCmluY2FybmF0aW9uIGluIHdoaWNoIGhlIGJlY2FtZSBhIG1vbmsuIEkgZG8gbm90IGFzc2VydCB0aGF0IEFocmluemltYW4nIHMgY2FzZSAKaXMgc2ltaWxhciwgYnV0IGl0IGlzIGF0IGxlYXN0IHBvc3NpYmxlIHRoYXQgaXQgbWF5IGJlLiAKCgo3ODAuwqDCoMKgwqDCoMKgwqAKTmF0dXJhbGx5IEFocmluemltYW4gd3JpdGVzIGFzIGEgbWFuIG9mIGhpcyBkYXksIGFuZCB1c2VzIHRoZSB0ZXJtaW5vbG9neSAKdG8gd2hpY2ggaGUgaXMgYWNjdXN0b21lZCwgbXVjaCBvZiB3aGljaCBzb3VuZHMgb2RkIGluIG91ciBlYXJzIHRvLWRheSwgCmVzcGVjaWFsbHkgYXMgaGUgY29uc3RhbnRseSBjb25mb3VuZHMgaGlzIHN5bWJvbHMgd2l0aCBtYXRlcmlhbCBmYWN0cy4gT2YgY291cnNlIAppdCBpcyBub3QgYWN0dWFsbHkgdHJ1ZSwgYXMgaGUgc3VwcG9zZXMsIHRoYXQgbWVuIGFyZSBkaXZpZGVkIGludG8gdGhyZWUgZ3JlYXQgCmdyb3VwcywgaGF2aW5nIGF0IHRoZWlyIGhlYWRzIGFuZ2VscyBiZWFyaW5nIHJlc3BlY3RpdmVseSB3aGl0ZSwgcmVkLCBhbmQgZ29sZGVuIApzdGFycywgYW55IG1vcmUgdGhhbiBpdCBpcyBhY3R1YWxseSB0cnVlIHRoYXQgUGhvZWJ1cyBkcml2ZXMgaGlzIGNoYXJpb3QgZGFpbHkgCmFjcm9zcyB0aGUgc2t5IGZyb20gZWFzdCB0byB3ZXN0LCBvciB0aGF0IHRoZSBTdW4gR29kIGlzIG5ld2x5IGJvcm4gYXQgQ2hyaXN0bWFzIAp3aGVuIHRoZSBkYXlzIGJlZ2luIHRvIGdyb3cgbG9uZ2VyLiBCdXQgaXQgaXMgdHJ1ZSB0aGF0IHNvbWUgYW5jaWVudCAKcmVsaWdpb25zIGFkb3B0ZWQgYSBzeXN0ZW0gb2Ygc3ltYm9sb2d5IGNsb3NlbHkgYWxsaWVkIHRvIHRoYXQgd2hpY2ggdGhpcyBib29rIApwdXRzIGZvcnRoLCBhbmQgdGhhdCBhIG1hbiBwYXNzaW5nIGludG8gYXN0cmFsIGxpZmUgd2l0aCBoaXMgbWluZCBmaWxsZWQgd2l0aCAKc3VjaCBwcmVjb25jZWl2ZWQgaWRlYXMgbWlnaHQgZ28gb24gZm9yIGEgbG9uZyB0aW1lIGludGVycHJldGluZyBldmVyeXRoaW5nIGluIAphY2NvcmRhbmNlIHdpdGggdGhlbSwgYW5kIGlnbm9yaW5nIGZhY3RzIHdoaWNoIHRoZXkgZGlkIG5vdCBjb3Zlci4gCgoKNzgxLsKgwqDCoMKgwqDCoMKgCkl0IGlzIHRydWUgYWxzbyB0aGF0IG1pZ2h0eSBzcGlyaXRzIGV4aXN0IHdob3NlIG1ldGhvZCBvZiBldm9sdXRpb24gaXMgc28gCmVudGlyZWx5IGRpZmZlcmVudCBmcm9tIG91ciBvd24sIHRoYXQgZm9yIHVzIGl0IHdvdWxkIGJlIGV2aWw7IGJ1dCB3aXRoIAp0aGVtIHdlIGRvIG5vdCBub3JtYWxseSBjb21lIGludG8gY29udGFjdCwgbm9yIGlzIGl0IG9mIHRoZW0gdGhhdCBBaHJpbnppbWFuIApzcGVha3MsIGZvciBoZSBoaW1zZWxmIGFkbWl0cyB0aGF0IGhpcyBhbmdlbHMgb2YgbGlnaHQgYW5kIGRhcmtuZXNzIGFyZSBhZnRlciAKYWxsIGh1bWFuIGJlaW5ncyB3aG8gaGF2ZSBsaXZlZCB0aGVpciBsaWZlIG9uIGVhcnRoLiBIZSBkZXNjcmliZXMgdml2aWRseSB0aGUgCnN0dXBlbmRvdXMgdGhvdWdodC1lZGlmaWNlcyByZWFyZWQgYnkgbWFuJyBzIHBhc3Npb25zLCB0aG91Z2ggaGUgb2Z0ZW4gZmFpbHMgdG8gCmRpc3Rpbmd1aXNoIHRoZSB0ZW1wb3JhcnkgdGhvdWdodC1pbWFnZXMgZnJvbSB0aGUgbW9yZSBwZXJtYW5lbnQgcmVhbGl0aWVzIG9mIAp0aGUgd29ybGQuIEhlIGdpdmVzIHVzIGEgaG9ycmlibGUgZGVzY3JpcHRpb24gb2YgYSBraW5kIG9mIGFzdHJhbCBiYXR0bGUgaW4gCndoaWNoIHRoZSBwbGFpbiBpcyBzdHJld24gd2l0aCB0aGUgZGlzamVjdGEgbWVtYnJhIG9mIHRoZSBjb21iYXRhbnRzLS0gCmEgZ3J1ZXNvbWUgZGV0YWlsIHdoaWNoIGNvdWxkIG5vdCByZWFsbHkgb2NjdXIsIGFzIHdpbGwgYXQgb25jZSBiZSBtYW5pZmVzdCB0byAKYW55b25lIHdobyBjb21wcmVoZW5kcyB0aGUgZmx1aWRpYyBuYXR1cmUgb2YgdGhlIGFzdHJhbCBib2R5LiAKCgo3ODIuwqDCoMKgwqDCoMKgwqAKSW5kZWVkLCBpZiBoaXMgcmVtYXJrcyBhcmUgcmVhbGx5IHRvIGJlIHRha2VuIGFzIHJlcHJlc2VudGluZyB0aGUgYW5jaWVudCAKUGVyc2lhbiBrbm93bGVkZ2Ugd2l0aCByZWdhcmQgdG8gdGhpbmdzIGFzdHJhbCwgd2UgYXJlIGNvbXBlbGxlZCB0byByZWNvZ25pc2UgCnRoYXQgdGhhdCBwcmVzZW50YXRpb24gd2FzIGxlc3MgZGVmaW5pdGVseSBzY2llbnRpZmljLCBhcyB3ZWxsIGFzIGxlc3MgCmNvbXByZWhlbnNpdmUsIHRoYW4gdGhhdCB3aGljaCBpcyBwdXQgYmVmb3JlIHN0dWRlbnRzIG9mIHRoZSBvY2N1bHQgYXQgdGhlIApwcmVzZW50IGRheS4gRm9yIGV4YW1wbGUsIEFocmluemltYW4gZG9lcyBub3Qgc2VlbSB0byBoYXZlIGFueSBjbGVhciBncmFzcCBvZiAKdGhlIGdyZWF0IGNlbnRyYWwgZmFjdCBvZiByZWluY2FybmF0aW9uLCBvciBwZXJoYXBzIHJlZ2FyZHMgaXQgYXMgYW4gb2NjYXNpb25hbCAKcG9zc2liaWxpdHksIGluc3RlYWQgb2YgcmVjb2duaXNpbmcgaXQgYXMgdGhlIGFwcG9pbnRlZCBtZWFucyBvZiBldm9sdXRpb24gZm9yIApodW1hbml0eS4gCgoKNzgzLsKgwqDCoMKgwqDCoMKgCkhpcyB1c2Ugb2YgdGVybXMgaXMgc29tZXdoYXQgcGVycGxleGluZyB1bnRpbCBvbmUgYmVjb21lcyBhY2N1c3RvbWVkIHRvIAppdCwgZm9yIGl0IGlzIGZhaXJseSBldmlkZW50IHRoYXQgaGUgZ2l2ZXMgdGhlIG5hbWUgb2Yg77+9c3Bpcml0dWFsIGJvZHnvv70gdG8gd2hhdCAKd2Ugbm93IGNhbGwgdGhlIGFzdHJhbCB2ZWhpY2xlLCBhbmQgdGhhdCBoaXMg77+9YXN0cmFsIGJvZHnvv70gaXMgbm90aGluZyBtb3JlIHRoYW4gCnRoZSBldGhlcmljIGRvdWJsZS0tIGFzIG1heSBiZSBzZWVuIHdoZW4gaGUgZGVzY3JpYmVzIHRoZSBsYXR0ZXIgYXMgc2xpZ2h0bHkgCmxhcmdlciB0aGFuIHRoZSBwaHlzaWNhbCwgYW5kIGFzIGNhcGFibGUgb2YgYmVpbmcgaW5mbHVlbmNlZCBieSBwb3dlcmZ1bCBhY2lkczsgCnJlbWFya3Mgd2hpY2ggYXJlIHRydWUgb2YgdGhlIGV0aGVyaWMgZG91YmxlLCBidXQgd291bGQgYmUgaW5hY2N1cmF0ZSBpZiB0aGV5IApyZWZlcnJlZCB0byB3aGF0IGlzIG5vdyB0ZXJtZWQgdGhlIGFzdHJhbCBib2R5LiBIZSBoYXMgYWxzbyBhIGNvbmZ1c2luZyBoYWJpdCBvZiAKc3BlYWtpbmcgb2YgdW5wbGVhc2FudCBhc3RyYWwgY29uZGl0aW9ucyBhcyBiZWxvdyB0aGUgZWFydGgtcGxhbmUsIGFuZCBwbGVhc2FudCAKb25lcyBhcyBhYm92ZSBpdCwgdGhvdWdoIGhlIGRlc2NyaWJlcyB0aGVtIGJvdGggYXMgbGVzcyBtYXRlcmlhbCB0aGFuIG91ciBlYXJ0aC4gCkhlIGhhcyBwcm9iYWJseSBiZWVuIG1pc2xlZCBieSB0aGUgZmFjdCB0aGF0IHRoZSBkZW5zZXIgYXN0cmFsIG1hdHRlciBkb2VzIAppbnRlcnBlbmV0cmF0ZSBvdXIgcGh5c2ljYWwgZ2xvYmUsIGFuZCB0aGF0IHRob3NlIHdobyBhcmUgY29uZmluZWQgdG8gdGhlIGxlYXN0IApkZXNpcmFibGUgc3ViZGl2aXNpb24gbWF5IG9mdGVuIGZpbmQgdGhlbXNlbHZlcyBhY3R1YWxseSB3aXRoaW4gdGhlIGNydXN0IG9mIHRoZSAKZWFydGguIEluIGFkZGl0aW9uIHRvIHRoaXMgdGhlcmUgaXMsIG5vIGRvdWJ0LCBhIHdvcmxkIGxvd2VyIHRoYW4gdGhlIHBoeXNpY2FsLS0gCm9uZSB3aXRoIHdoaWNoIG5vcm1hbCBodW1hbml0eSBoYXMgaGFwcGlseSBubyBjb25uZWN0aW9uOyBidXQgaXQgaXMgbW9yZSwgYW5kIApub3QgbGVzcywgbWF0ZXJpYWwgdGhhbiB0aGUgd29ybGQgd2hpY2ggd2UgdGhpbmsgd2Uga25vdy4gCgoKNzg0LsKgwqDCoMKgwqDCoMKgClF1aXRlIGZyZXF1ZW50bHkgaGUgZGVzY3JpYmVzIHNvbWV0aGluZyBpbiBsYW5ndWFnZSB3aGljaCBhdCBvbmNlIApjb252aW5jZXMgdGhlIHN0dWRlbnQgdGhhdCBoZSBoYXMgdW5xdWVzdGlvbmFibHkgc2VlbiB0aGF0IG9mIHdoaWNoIGhlIHdyaXRlczsgCmFuZCB0aGVuIGhlIHByb2NlZWRzIHRvIGRpc2FwcG9pbnQgdXMgYnkgYWNjb3VudGluZyBmb3IgaXQgaW4gYW4gaW52b2x2ZWQgYW5kIAp1bnNjaWVudGlmaWMgbWFubmVyLCBvciBieSB0cmVhdGluZyBwb2V0aWMgc3ltYm9scyBhcyB0aG91Z2ggdGhleSB3ZXJlIG1hdGVyaWFsIApmYWN0cy4gT25jZSBvciB0d2ljZSBoZSBzaG93cyBoaXMgY29uY2VwdGlvbnMgdG8gYmUgdGFpbnRlZCBieSB0aGUgdHdpbi1zb3VsIAp0aGVvcnktLSBhIGxpbmUgb2YgdGhvdWdodCB0byBiZSBzZWR1bG91c2x5IGF2b2lkZWQgYnkgYWxsIHdobyB3aXNoIHRvIG1ha2UgYW55IApyZWFsIGFkdmFuY2UgaW4gb2NjdWx0IHN0dWR5LiAKCgo3ODUuwqDCoMKgwqDCoMKgwqAKSGUgaXMgaW4gZXJyb3Igd2hlbiBoZSBzcGVha3Mgb2YgbWVkaXVtc2hpcCBhcyBhIG5lY2Vzc2l0eSBmb3Igc3Bpcml0dWFsIApldm9sdXRpb24tLSB0aG91Z2ggcGVyaGFwcyB0aGlzIGlzIG9uY2UgbW9yZSBtZXJlbHkgYSBxdWVzdGlvbiBvZiB0ZXJtaW5vbG9neSwgCmFzIGhlIG1heSBiZSB1c2luZyB0aGUgd29yZCBpbiB0aGUgc2Vuc2Ugb2YgcHN5Y2hpYyBzZW5zaXRpdmVuZXNzLiBIZSBpcywgCmhvd2V2ZXIsIGNsZWFybHkgd3Jvbmcgd2hlbiBoZSBzYXlzIHRoYXQgaXQgaXMgaW1wb3NzaWJsZSBmb3IgYSBtYW4sIHN0aWxsIApwb3NzZXNzaW5nIGEgcGh5c2ljYWwgYm9keSBmdWxseSB0byBjb21wcmVoZW5kIG9yIHRvIGNvbnRyb2wgYXN0cmFsIGZvcmNlcyBhbmQgCmJlaW5ncywgb3IgdG8gaGF2ZSBwZXJmZWN0IHNwaXJpdHVhbCBzaWdodC4gV2hhdCBoZSBubyBkb3VidCBtZWFucywgb3IgYXQgbGVhc3QgCm91Z2h0IHRvIG1lYW4sIGlzIHRoYXQgYSBtYW4gd2hvIGlzIHN0aWxsIGNvbmZpbmVkIHRvIGhpcyBwaHlzaWNhbCBib2R5IApjYW5ub3QgcG9zc2VzcyB0aGVzZSBoaWdoZXIgcG93ZXJzLCBmb3IgaGUgaGFzIG5vdCByZWFsaXNlZCB0aGF0IGEgbWFuIG1heSBsZWFybiAKZHVyaW5nIGxpZmUgaG93IHRvIGxlYXZlIGhpcyBwaHlzaWNhbCBib2R5IGFzIGNvbXBsZXRlbHkgYXMgYXQgZGVhdGgsIGFuZCBtYXkgCnlldCByZXR1cm4gdG8gaXQgd2hlbiBoZSB3aXNoZXMuIEFsc28gaGUgc2hvd3MgaWdub3JhbmNlIG9mIHRoZSBPcmllbnRhbCAKdGVhY2hpbmcgd2hlbiBoZSBzdGlnbWF0aXNlcyBpdCBhcyBzZWxmaXNoLCBhbmQgb3BpbmVzIHRoYXQgYnkgaXQg77+9dGhlIGVhZ2VyIApodW5nZXIgb2YgdGhlIHN0YXJ2aW5nIG1hbnkgZm9yIGxpZ2h0IGlzIGxlZnQgdW5zYXRpc2ZpZWTvv70uIE9uIHRoZSB3aG9sZSwgCmhvd2V2ZXIsIGhpcyB0ZWFjaGluZyBpcyBjb21tZW5kYWJseSBmcmVlIGZyb20gc2VjdGFyaWFuaXNtLiAKCgo3ODYuwqDCoMKgwqDCoMKgwqAKVGhvdWdoIHRoZSBzdHVkZW50IG9mIG9jY3VsdGlzbSB0aHVzIGZpbmRzIGhpbXNlbGYgY29tcGVsbGVkIHRvIGRpZmZlciAKZnJvbSBBaHJpbnppbWFuIG9uIGNlcnRhaW4gcG9pbnRzLCBJIGhhc3RlbiB0byBhZGQgdGhhdCB0aGVyZSBhcmUgbWFueSB1cG9uIAp3aGljaCB3ZSBtdXN0IGFsbCBtb3N0IHRob3JvdWdobHkgYWdyZWUgd2l0aCBoaW0uIFRvIHRha2UgYXQgcmFuZG9tIGEgZmV3IG9mIHRoZSAKbWFueSBnZW1zIHdoaWNoIG1heSBiZSBmb3VuZCwgaGlzIGNyaXRpY2lzbXMgb24gd2FyIGFuZCBjb25xdWVzdCwgYW5kIG9uIHRoZSAKaGlzdG9yeSBvZiByZWxpZ2lvbnMsIGFyZSBhZG1pcmFibGUuIFdlIGFyZSBhbGwgd2l0aCBoaW0gd2hlbiBoZSB3cml0ZXM6IAoKCjc4Ny7CoMKgwqDCoMKgwqDCoApJIGhvbGQgdGhhdCB0cnV0aCBhbmQgZXJyb3IsIGdvb2QgYW5kIGV2aWwsIGFyZSB0byBiZSBmb3VuZCBldmVyeXdoZXJlIAphbmQgaW4gYWxsIHJlbGlnaW9ucyBhbmQgYW1vbmdzdCBhbGwgcGVvcGxlczsgYW5kIG5vIG1hdHRlciBob3cgcHVyZSB0aGUgCm9yaWdpbmFsIGRvY3RyaW5lcyBvZiBhbnkgZm9ybSBvZiBmYWl0aCBtYXkgYmUsIGl0IGlzIGltcG9zc2libGUgdG8gcHJldmVudCB0aGUgCmFtYml0aW9ucyBhbmQgdGhlIGx1c3RzLCB0aGUgZ3JlZWQgYW5kIHRoZSBjcnVlbHR5IG9mIHRoZSB1bmRldmVsb3BlZCBodW1hbiBzb3VsIApmcm9tIHBlcnZlcnRpbmcgdGhlIHB1cml0eSBvZiB0aGUgdGVhY2hpbmdzIGFuZCB0dXJuaW5nIHRoZW0gdG8gdGhlIGJhc2VzdCAKcHVycG9zZXMgYW5kIG92ZXJsYXlpbmcgdGhlbSB3aXRoIHRoZSBncm9zc2VzdCBlcnJvcnMgLiAuIC4gVGhlIGFic3VyZCAKb3JkaW5hbmNlcywgdGhlIGhvcnJpYmxlIHNhY3JpZmljZXMsIHRoZSByZXZvbHRpbmcgcHJhY3RpY2VzLCB0aGUgZ3JvdGVzcXVlIApiZWxpZWZzLCB0aGUgZmFudGFzdGljIHRoZW9yaWVzLCB0aGF0IGhhZCBjcmVwdCBpbnRvIHRoZSB0ZWFjaGluZyBvZiB0aGlzIApyZWxpZ2lvbiwgd2VyZSBhbGwgZXhjcmVzY2VuY2VzIGZhc3RlbmVkIG9uZSBieSBvbmUgdXBvbiB0aGUgc2ltcGxlIHB1cml0eSBvZiAKdGhlIHRlYWNoaW5nIG9mIGl0cyBmb3VuZGVyLiAKCgo3ODguwqDCoMKgwqDCoMKgwqAKSGlzIHRlcm1pbm9sb2d5IGlzIHBlcmhhcHMgbm90IHRoZSBiZXN0IHBvc3NpYmxlLCB5ZXQgdGhlcmUgaXMgbXVjaCB0cnV0aCAKaW4gaGlzIHRob3VnaHQgdGhhdCBhbGwgZXZpbCBpcyBhIHBlcnZlcnNpb24gb2Ygc29tZSBnb29kIHF1YWxpdHksIGludG8gd2hpY2ggaXQgCndpbGwgb25lIGRheSBiZSB0cmFuc211dGVkLiBNYW55IG9mIGhpcyBpZGVhcyBhcyB0byBzcGlyaXR1YWwgZGV2ZWxvcG1lbnQgYXJlIAphbHNvIGdyZWF0bHkgdG8gYmUgY29tbWVuZGVkLiBUaGUgZGFuZ2VycyBvZiBtZWRpdW1zaGlwIGFuZCBoeXBub3Rpc20gY291bGQgCmhhcmRseSBiZSBiZXR0ZXIgZXhwcmVzc2VkIHRoYW4gaW4gdGhpcyBzb2xlbW4gd2FybmluZzogCgoKNzg5LsKgwqDCoMKgwqDCoMKgCkxldCBubyBvbmUgZXZlciByZXNpZ24gdGhlIHNvdmVyZWlnbnR5IG9mIGhpbXNlbGYsIGhpcyBtaW5kIG9yIGJvZHksIGludG8gCnRoZSBoYW5kcyBvZiBhbm90aGVyLCBiZSBoZSBwcmllc3Qgb3IgbGF5bWFuLiBGb3IgYSBtYW4nIHMgZnJlZWRvbSBpcyBoaXMgZGl2aW5lIApwcmVyb2dhdGl2ZSwgYW5kIGhlIHdobyB5aWVsZHMgaXQgdG8gYW5vdGhlciBpcyBtb3JlIGFiamVjdCB0aGFuIHRoZSBsb3dlc3QgCnNsYXZlLiAKCgo3OTAuwqDCoMKgwqDCoMKgwqAKQWdhaW4gaXQgaXMgZXhwbGFpbmVkIGluIG9uZSBvZiB0aGUgbm90ZXM6IAoKCjc5MS7CoMKgwqDCoMKgwqDCoApBIHBlcmZlY3QgdHJhbmNlIHNob3VsZCBiZSB0aGUgY29uc2Npb3VzIGZsaWdodCBvZiB0aGUgc291bCBpbnRvIGEgCnN1cGVyaW9yIGNvbmRpdGlvbiwgZnJvbSB3aGljaCBpdCBvdWdodCB0byByZXR1cm4gc3RyZW5ndGhlbmVkIGFuZCByZWZyZXNoZWQgYW5kIApjYXBhYmxlIG9mIHdpZGVyIHRob3VnaHRzIGFuZCBub2JsZXIgYW5kIGZyZWVyIGFjdGlvbnMsIGFuZCBhIHN0cm9uZ2VyIGFuZCBtb3JlIApwZXJmZWN0IHBvc3Nlc3Npb24gb2YgaXRzIG93biBpbmRpdmlkdWFsaXR5LiBUbyBhcHBseSB0aGUgd29yZCBgIHRyYW5jZScgdG8gCnRob3NlIGV4aGliaXRpb25zIG9mIHNlbWktY29uc2Npb3VzIG1lbnRhbCBhYmVycmF0aW9uIG9mIHBlcnNvbnMgd2hvc2UgCnNlbnNpdGl2ZW5lc3MgbGF5cyB0aGVtIG9wZW4gdG8gdGhlIG1lc21lcmljIGNvbnRyb2wgb2YgZWl0aGVyIGluY2FybmF0ZSBvciAKZXhjYXJuYXRlIG1pbmRzLCBpcyB0byBwcm9wYWdhdGUgYW4gZXJyb3Igd2hpY2ggb3VnaHQgbG9uZyBhZ28gdG8gaGF2ZSBiZWVuIApleHBsb2RlZC4gV2l0aCB0aGUgc3ByZWFkIG9mIG1lZGl1bWlzdGljIGRldmVsb3BtZW50LCBhbGwgYW5kIGV2ZXJ5IHZhcmlldHkgYW5kIApkZWdyZWUgb2Ygc3ViLWNvbnNjaW91cyBjb25kaXRpb25zIGhhdmUgY29tZSB0byBiZSBjbGFzc2VkIGFzIGAgdHJhbmNlcywnIHlldCAKdGhleSBiZWFyIG5vIG1vcmUgcmVzZW1ibGFuY2UgdG8gdGhlIHRydWUgdHJhbmNlIG9mIHRoZSBkZXZlbG9wZWQgbXlzdGljIG9mIHRoZSAKb2xkZXIgb2NjdWx0IGZhaXRocyB0aGFuIGRvZXMgdGhlIHNsZWVwIHdoaWNoIGlzIHByb2R1Y2VkIGJ5IHRoZSB1c2Ugb2YgcG93ZXJmdWwgCm5hcmNvdGljIGRydWdzIHJlc2VtYmxlIHRoYXQgb2YgaGVhbHRoeSwgdGlyZWQgbmF0dXJlLiBUaGUgaHlwbm90aWNhbGx5LWluZHVjZWQgCnRyYW5jZSBpcyBhcyBwZXJuaWNpb3VzIHRvIHRoZSBzb3VsIGFzIHdvdWxkIGJlIHRoZSBoYWJpdHVhbCB1c2Ugb2YgbmFyY290aWNzIHRvIAp0aGUgYm9keS4gV2hldGhlciB0aGUgbWFnbmV0aXNlciBiZSBpbiB0aGUgZmxlc2ggb3Igb3V0IG9mIGl0LCB0aGUgcmVzdWx0cyBhcmUgCnRoZSBzYW1lOyBhbiBoYWJpdHVhbCB1c2Ugb2YgbWFnbmV0aXNtIHRvIGluZHVjZSBzbGVlcCBvciBgIHRyYW5jZScgaXMgYW4gZXZpbC4KCgo3OTIuwqDCoMKgwqDCoMKgwqAKSGUgZGVzY3JpYmVzIGFjY3VyYXRlbHkgaG93IHRoZSBsb3dlciBkZWFkIGNyb3dkIHRvIHPvv71hbmNlcywgYW5kIGhvdyB0aGUgCnNvLWNhbGxlZCBndWlkZXMgYXJlIGJ5IG5vIG1lYW5zIGFsd2F5cyBzdHJvbmcgZW5vdWdoIHRvIGtlZXAgb2ZmIGV2aWwgCmluZmx1ZW5jZXMuIENsZWFybHkgYWxzbyBkb2VzIGhlIHdhcm4gdXMgaG93IHJlYWRpbHkgdGhlIGlkZWFzIG9mIHRoZSBlYXJ0aGx5IAplbnF1aXJlcnMgbWluZ2xlIHdpdGggdGhlIHJldmVsYXRpb25zIG9mIHRoZSBtYWduZXRpc2VkIG1lZGl1bSwgc28gdGhhdCBieSBzdWNoIAphIG1ldGhvZCBvZiBpbnZlc3RpZ2F0aW9uIGEgbWFuIHVzdWFsbHkgcmVjZWl2ZXMgc3VjaCBpbmZvcm1hdGlvbiBvciBjb3Vuc2VsIGFzIApoZSBkZXNpcmVzIG9yIGV4cGVjdHMuIEhlIHVuZGVyc3RhbmRzIHRoYXQgYXNjZXRpY2lzbSBhcyBzdWNoIGlzIAp1c2VsZXNzIGFuZCBvZnRlbiBoYXJtZnVsLCBhbmQgdGhhdCB0aGUgcGh5c2ljYWwgYm9keSBtdXN0IGJlIGluIHBlcmZlY3QgaGVhbHRoIAphbmQgcG93ZXIgaWYgdmlzaW9ucyBhcmUgdG8gYmUgcmVsaWFibGUuIEhlIHJlYWxpc2VzLCB0b28sIHNvbWV0aGluZyBvZiB0aGUgCmRpZmZpY3VsdGllcyBvZiB0aGUgd2F5OiAKCgo3OTMuwqDCoMKgwqDCoMKgwqAKRmV3LCB2ZXJ5IGZldywgd2hvIHBvc3Nlc3MgdGhlIG5lZWRmdWwgY2xlYXJuZXNzIG9mIHNpZ2h0IGV2ZXIgbGVhcm4gaG93IAp0byB1c2UgaXQgc3VjY2Vzc2Z1bGx5OyBzdGlsbCBmZXdlciBoYXZlIHRoZSBpbmRvbWl0YWJsZSB3aWxsIGFuZCB0aGUgCnVucXVlbmNoYWJsZSB0aGlyc3QgZm9yIGtub3dsZWRnZSB3aGljaCB3aWxsIGNhcnJ5IHRoZW0gdGhyb3VnaCBhbGwgdGhlIGRhbmdlcnMgCmFuZCB0cmlhbHMgYW5kIGRpc2FwcG9pbnRtZW50cywgYW5kIHRoZSBpbmZpbml0ZSB0b2lsIGFuZCBsYWJvdXIgaW52b2x2ZWQgaW4gCnRoZXNlIHN0dWRpZXMuIAoKCjc5NC7CoMKgwqDCoMKgwqDCoApIZSBoYXMgYWxsIGhpc3Rvcnkgb24gaGlzIHNpZGUgd2hlbiBoZSB0ZWxscyB1cyB0aGF0IHRob3NlIHdobyBkZXZlbG9wIAp0aGUgaGlnaGVzdCBkZWdyZWVzIG9mIHBvd2VyIHdpbGwgZG8gd2VsbCBlbnRpcmVseSB0byB3aXRoZHJhdyB0aGVtc2VsdmVzIGZyb20gCmFjdGl2ZSBsaWZlIGluIHRoZSBwaHlzaWNhbCB3b3JsZCwgYW5kIGhpcyBzdHJhbmdlIGNvbmdlcmllcyBvZiBjaGFyYWN0ZXJzIGlzIApncmFkdWFsbHkgYnJvdWdodCB0byB1bmRlcnN0YW5kIHRoYXQgb25seSB0aHJvdWdoIHVuc2VsZmlzaG5lc3MgaXMgcmVhbCBwcm9ncmVzcyAKcG9zc2libGUuIAoKCjc5NS7CoMKgwqDCoMKgwqDCoApBZ2FpbiBhbmQgYWdhaW4gbGl0dGxlIHRvdWNoZXMgb2Yga25vd2xlZGdlIGxlYXAgdG8gdGhlIGV5ZXMgb2YgdGhlIApzdHVkZW50LCBzaG93aW5nIHRoYXQgdGhpbmdzIGhhdmUgYmVlbiByaWdodGx5IHNlZW4sIGV2ZW4gdGhvdWdoIHRoZSBleHByZXNzaW9uIAptYXkgYmUgY29uZnVzZWQgZm9yIHdhbnQgb2YgbW9yZSBkZWZpbml0ZSBjbGFzc2lmaWNhdGlvbiBvZiB0aGUgZmFjdHMuIApBaHJpbnppbWFuIHVuZGVyc3RhbmRzIHRoZSBtYWtpbmcgb2YgdGFsaXNtYW5zIGFuZCBwb3Rpb25zOyBoZSBzZWVzIGhvdyBhIHNpbmdsZSAKYWN0aW9uIG9yIHRob3VnaHQgb2YgcmV2ZW5nZSBvcGVucyB0aGUgZG9vciB0byBldmlsIGluZmx1ZW5jZXMgd2hpY2ggbWF5IGNsaW5nIAp0byBpdHMgYXV0aG9yIGZvciB5ZWFycyB0byBjb21lOyBoZSBkZXNjcmliZXMgaG93IHRoZSBwcmVzZW5jZSBvZiB0aGUgZGVhZCAKY2F1c2VzIHRoZSBsaXZpbmcgdG8gdGhpbmsgb2YgdGhlbSwgZXZlbiB0aG91Z2ggbm90IHN1ZmZpY2llbnRseSBkZXZlbG9wZWQgdG8gCnBlcmNlaXZlIHRoZW0uIAoKCjc5Ni7CoMKgwqDCoMKgwqDCoApJbiB3cml0aW5nIG9mIGFzdHJhbCBsaWZlLCBoZSBnaXZlcyB1cyBhIGZpbmUgZGVzY3JpcHRpb24gb2YgdGhlIHdpY2tlZCAKcXVlZW4gc3Vycm91bmRlZCBhZnRlciBkZWF0aCBieSBldmlsIHRob3VnaHRzIGFuZCBtZW1vcmllcywgd2hpY2ggdG8gaGVyIHdlcmUgYXMgCmFjdHVhbCBldmVudHM7IGFuZCBhIGdyaW1seSByZWFsaXN0aWMgdG91Y2ggaXMgdGhlIGFjY291bnQgb2YgdGhlIHNsYXZlIHdobyAKc3BlbmRzIGhpcyB0aW1lIGluIGNyYXdsaW5nIGV2ZXIgYmFja3dhcmRzIGFuZCBmb3J3YXJkcyB0aHJvdWdoIHRoZSBzZWNyZXQgCnBhc3NhZ2UgaW4gdGhlIG1ha2luZyBvZiB3aGljaCBoZSB3YXMgbXVyZGVyZWQuIEhlIHRlbGxzIHVzIG9mIHRoZSBkZWFkIHdobyBoYXZlIAphIGNvbmZ1c2VkIGltcHJlc3Npb24gdGhhdCB0aGV5IGFyZSBzdGlsbCBpbiB0aGVpciBlYXJ0aGx5IGJvZGllcywgYW5kIG9mIHRob3NlIApvdGhlcnMgd2hvLCBoYXZpbmcgcmVhbGlzZWQgdGhlaXIgc2VwYXJhdGlvbiwgdHJ5IHRvIHVzZSB0aGUgZWFydGhseSBib2RpZXMgb2YgCmxpdmluZyBtZW4gYXMgbWVkaXVtcyBmb3IgdGhlIGdyYXRpZmljYXRpb24gb2YgdGhlaXIgcGFzc2lvbi4gSGUgY29tcHJlaGVuZHMsIAp0b28sIGhvdyBtZW4gd2hvIHN0YW5kIHNpZGUgYnkgc2lkZSwgYXMgZmFyIGFzIHNwYWNlIGlzIGNvbmNlcm5lZCwgbWF5IHlldCBiZSAKYWJzb2x1dGVseSB1bmNvbnNjaW91cyBvZiBvbmUgYW5vdGhlcjsgaGUga25vd3MgdGhlIGdsb3Jpb3VzIHRydXRoIHRoYXQgbm8gZXZpbCAKY2FuIGJlIGV0ZXJuYWwsIHRoYXQgaG93ZXZlciBmYXIgZnJvbSB0aGUgUGF0aCB0aGUgZXJyaW5nIHNvdWwgbWF5IHdhbmRlciwgYXQgCmxvbmcsIGxvbmcgbGFzdCBpdCBhbHNvIHdpbGwgZmluZCBpdHMgaG9tZXdhcmQgd2F5LiAKCgo3OTcuwqDCoMKgwqDCoMKgwqAKSGUgZW5kcyB3aXRoIGEgaG9wZSB3aGljaCB3ZSBhbGwgbWF5IGVjaG8tLSB0aGF0LCBhcyB0aGUgYmFycmllcnMgb2YgCmlnbm9yYW5jZSB3aGljaCBzbyBsb25nIGhhdmUgZGl2aWRlZCBuYXRpb24gZnJvbSBuYXRpb24gYXJlIGdyYWR1YWxseSB3ZWFyaW5nIAp0aGlubmVyIGJlZm9yZSB0aGUgcmFkaWF0aW5nIGZvcmNlIG9mIGtub3dsZWRnZSwgYW5kIHRoZSBsaWdodCBvZiBicm90aGVyaG9vZCBpcyAKYmVnaW5uaW5nIGZhaW50bHkgdG8gc2hpbmUgdGhyb3VnaCwgc28gdGhlIHNhbWUgd2lkZXIga25vd2xlZGdlIGFuZCBjbGVhcmVyIAppbnNpZ2h0IG1heSwgYnkgZGVncmVlcywgc2V0IGF0IG5hdWdodCB0aGUgaW1hZ2luYXJ5IGJhcnJpZXIgd2hpY2ggd2UgaGF2ZSAKbWlzbmFtZWQgZGVhdGgsIHNob3dpbmcgdXMgdGhhdCB0aGVyZSBpcyBpbiB0cnV0aCBubyBzZXBhcmF0aW9uIGFmdGVyIGFsbCwgc2luY2UgCndoZXRoZXIgYXQgdGhlIG1vbWVudCB3ZSBoYXBwZW4gdG8gaGF2ZSBwaHlzaWNhbCBib2RpZXMsIG9yIG5vdCwgd2UgYXJlIGFsbCAKbWVtYmVycyBvZiB0aGUgc2FtZSBncmVhdCBmcmF0ZXJuaXR5LCBhbGwgbW92aW5nIHRvd2FyZHMgdGhlIHNhbWUgZ29hbCwgYWxsIAplbnZlbG9wZWQgaW4gdGhlIHN1bmxpZ2h0IG9mIHRoZSBzYW1lIEV0ZXJuYWwgTG92ZS4gCgoKNzk4LsKgwqDCoMKgwqDCoMKgCkNIQVBURVIgWElJSSAKCgo3OTkuwqDCoMKgwqDCoMKgwqAKT1VSIEFUVElUVURFIFRPV0FSRFMgVEhFU0UgCgoKODAwLsKgwqDCoMKgwqDCoMKgCklORkxVRU5DRVMgCgoKODAxLsKgwqDCoMKgwqDCoMKgClBST1RFQ1RJVkUgU0hFTExTIAoKCjgwMi7CoMKgwqDCoMKgwqDCoApXRSBoYXZlIGNvbnNpZGVyZWQgc3BlY2ltZW5zIG9mIHRoZSB2YXJpb3VzIGtpbmRzIG9mIGluZmx1ZW5jZXMgd2hpY2ggYXJlIApjb21pbmcgaW4gdXBvbiB1cyBmcm9tIGFsbCBzaWRlcywgYW5kIHdlIGZpbmQgdGhhdCBhbW9uZyBzdWNoIGluZmx1ZW5jZXMgYXJlIAptYW55IHdoaWNoIGFyZSBkaXN0dXJiaW5nIGFuZCB1bmRlc2lyYWJsZTsgc28gYSBxdWVzdGlvbiBuYXR1cmFsbHkgYXJpc2VzIGFzIHRvIApob3cgd2UgY2FuIGJlc3QgYXZvaWQgb3IgbmV1dHJhbGlzZSB0aGVzZS4gSXQgaXMgYW4gZWFzeSBtYXR0ZXIgdG8gZm9ybSByb3VuZCAKb25lc2VsZiB3aGVuIG5lY2Vzc2FyeSBhIHNvcnQgb2YgdGVtcG9yYXJ5IHN1aXQgb2YgYXJtb3VyIG9mIGhpZ2hlciBtYXR0ZXItLSAKd2hhdCBpcyBjb21tb25seSBjYWxsZWQgYnkgc3R1ZGVudHMgYSBwcm90ZWN0aXZlIHNoZWxsLiBCdXQgaXMgdGhpcyB0aGUgYmVzdCB3YXkgCnRvIG1lZXQgdGhlIGRpZmZpY3VsdHk/IEFuIGF1dGhvcml0eSBvbiB0aGUgc3ViamVjdCBvbmNlIHJlbWFya2VkIHRoYXQsIGFzIGZhciAKYXMgc2VsZi1wcm90ZWN0aW9uIGlzIGNvbmNlcm5lZCwgdGhlIGJlc3QgdGhpbmcgdG8gZG8gd2l0aCBhIHNoZWxsIGlzIG5vdCB0byAKZm9ybSBpdCBpbiB0aGUgZmlyc3QgcGxhY2UsIGFuZCBpZiBvbmUgaGFzIGZvcm1lZCBpdCwgdG8gYnJlYWsgaXQgdXAgYXMgc3BlZWRpbHkgCmFzIHBvc3NpYmxlISBUaGVyZSBpcyBjZXJ0YWlubHkgYSBnb29kIGRlYWwgb2YgdHJ1dGggaW4gdGhlc2Ugd29yZHMsIGZvciBpbiB0aGUgCm1ham9yaXR5IG9mIGNhc2VzIChhdCBsZWFzdCBhbW9uZyBhbGwgYnV0IHRoZSBtb3N0IGVsZW1lbnRhcnkgc3R1ZGVudHMpIGFsbCB0aGF0IApjYW4gYmUgYWNoaWV2ZWQgYnkgdGhlIGZvcm1hdGlvbiBvZiBhIHNoZWxsIHJvdW5kIG9uZXNlbGYgY2FuIGFsc28gYmUgZG9uZSBtb3JlIAplZmZlY3RpdmVseSBhbmQgd2l0aCBsZXNzIGRhbmdlciBpbiBvdGhlciB3YXlzLCBhcyB3ZSBzaGFsbCBzZWUgbGF0ZXIuIEV4YWN0IAprbm93bGVkZ2UgYXMgdG8gdGhlIGZvcm1hdGlvbiBvZiBzaGVsbHMgb2YgdmFyaW91cyBraW5kcyBpcyBzb21ldGltZXMgdXNlZnVsOyAKYnV0LCBsaWtlIG1vc3Qgb3RoZXIga25vd2xlZGdlLCBpdCBtYXkgYmUgYWJ1c2VkLCBzbyBiZWZvcmUgZGlyZWN0aW5nIG9uZScgcyAKZW5lcmdpZXMgYWxvbmcgdGhlc2UgbGluZXMgaXQgaXMgZGVzaXJhYmxlIHRvIGtub3cgZXhhY3RseSB3aGF0IG9uZSB3aXNoZXMgdG8gZG8gCmFuZCBob3cgaXQgaXMgdG8gYmUgYWNoaWV2ZWQuIAoKCjgwMy7CoMKgwqDCoMKgwqDCoApUaGUgZmlyc3QgZ3JlYXQgcHJpbmNpcGxlIHRvIGJlYXIgaW4gbWluZCBpcyB0aGF0IGEgc2hlbGwgc2hvdWxkIGJlIHVzZWQgCmZhciBtb3JlIGZyZXF1ZW50bHkgZm9yIHRoZSBwcm90ZWN0aW9uIG9mIG90aGVycyB0aGFuIGZvciBvbmVzZWxmLiBUaGUgSW52aXNpYmxlIApIZWxwZXJzLCBmb3IgZXhhbXBsZSwgZnJlcXVlbnRseSBmaW5kIGl0IGRlc2lyYWJsZSB0byBtYWtlIHN1Y2ggYSBkZWZlbmNlIGZvciAKc29tZSBvZiB0aG9zZSB3aG9tIHRoZXkgYXJlIHRyeWluZyB0byBzYXZlIGZyb20gZXZpbCBpbmZsdWVuY2VzIG9mIHZhcmlvdXMgCnNvcnRzLiBCdXQgdGhlIGF2ZXJhZ2UgZW5xdWlyZXIgaGFzIG1vcmUgb2Z0ZW4gaW4gbWluZCB0aGUgaWRlYSBvZiBwcm90ZWN0aW5nIApoaW1zZWxmIGFnYWluc3QgdmFyaW91cyBvdXRlciBpbmZsdWVuY2VzLCBhbmQgaGUgdXN1YWxseSBhc2tzIGhvdyBoZSBtYXkgZm9ybSBhIApzaGVsbCBmb3IgdGhhdCBwdXJwb3NlLiBUaGVyZSBhcmUgb2NjYXNpb25zIGluIHdoaWNoIHN1Y2ggYWN0aW9uIGlzIGFsbG93YWJsZSwgCmFuZCB3ZSBtYXkgcGVyaGFwcyBncm91cCB0aGVzZSB1bmRlciB0aHJlZSBoZWFkcyBjb3JyZXNwb25kaW5nIHRvIHRoZSBldGhlcmljLCAKdGhlIGFzdHJhbCBhbmQgdGhlIG1lbnRhbCB2ZWhpY2xlcy4gCgoKODA0LsKgwqDCoMKgwqDCoMKgCkluIGFsbCBjYXNlcyBhbGlrZSB0aGVzZSBzaGVsbHMgYXJlIGNvbnN0cnVjdGVkIGJ5IHRoZSBwb3dlciBvZiB0aGUgd2lsbCwgCmJ1dCBiZWZvcmUgZXhlcmNpc2luZyB0aGF0IHBvd2VyIGl0IGlzIHdlbGwgdG8ga25vdyBvZiB3aGF0IGtpbmQgb2YgbWF0dGVyIHRoZSAKc2hlbGwgaXMgdG8gYmUgYnVpbHQgYW5kIHdoYXQgaXQgaXMgZGVzaXJlZCB0byBrZWVwIG91dC4gVGhlIGRpcmVjdGlvbnMgdXN1YWxseSAKZ2l2ZW4gYXJlIHRoYXQgdGhlIHN0dWRlbnQgc2hvdWxkIHRoaW5rIG9mIGhpcyBhdXJhIGFzIHN1cnJvdW5kaW5nIGhpbSBpbiBvdm9pZCAKZm9ybSwgc2hvdWxkIGNvbmNlbnRyYXRlIHN0cm9uZ2x5IHVwb24gdGhlIG91dGVyIHN1cmZhY2Ugb2YgdGhhdCBhdXJhLCBhbmQgCnNob3VsZCB0aGVuIGV4ZXJ0IGhpcyB3aWxsIHRvIGhhcmRlbiBpdCBzbyB0aGF0IGl0IG1heSBiZWNvbWUgaW1wZXJ2aW91cyB0byBhbnkgCmluZmx1ZW5jZXMgZnJvbSB3aXRob3V0LiBUaGVzZSBkaXJlY3Rpb25zIGFyZSBnb29kLCBhbmQgYSBmYWlybHkgc3Ryb25nIHNoZWxsIApjYW4gYmUgbWFkZSBpbiB0aGF0IHdheTsgYnV0IHRoZSBlZmZvcnQgd2lsbCBiZSBhdCB0aGUgc2FtZSB0aW1lIG11Y2ggbGVzcyAKbGFib3Jpb3VzIGFuZCBtdWNoIG1vcmUgZWZmZWN0aXZlIGlmIHRoZSBtYW4gdW5kZXJzdGFuZHMgZXhhY3RseSB3aGF0IGhlIGlzIApkb2luZyBhbmQgd2h5LCBhbmQgc28gY2FuIHNlbmQgZm9ydGggdGhlIGVuZXJneSBvZiBoaXMgd2lsbCBpbiB0aGUgcmlnaHQgCmRpcmVjdGlvbiBvbmx5LCBpbnN0ZWFkIG9mIGZsb29kaW5nIHRoZSB3aG9sZSBuZWlnaGJvdXJob29kIHdpdGggYSBzdHJlYW0gb2YgCmlsbC1kaXJlY3RlZCBmb3JjZS4gTGV0IHVzIHRoZW4gY29uc2lkZXIgdGhlIHRocmVlIHZhcmlldGllcyBzb21ld2hhdCBpbiBkZXRhaWwsIAphbmQgc2VlIGZvciB3aGF0IHB1cnBvc2UgZWFjaCBpcyBhcHByb3ByaWF0ZS4gCgoKODA1LsKgwqDCoMKgwqDCoMKgClRIRSBFVEhFUklDIFNIRUxMIAoKCjgwNi7CoMKgwqDCoMKgwqDCoApXZSB3aWxsIHRha2UgZmlyc3QgdGhhdCB3aGljaCBpcyBpbnRlbmRlZCB0byBwcm90ZWN0IHRoZSBwaHlzaWNhbCBib2R5IAooaW5jbHVkaW5nIHRoZSBldGhlcmljIGRvdWJsZSkgZnJvbSB2YXJpb3VzIGRhbmdlcnMgdG8gd2hpY2ggaXQgbWF5IGJlIGxpYWJsZS4gClRoZSBtb3JlIGNvbW1vbiB1c2VzIG9mIHN1Y2ggYSBzaGVsbCBhcmUgdGhyZWUtLSB0byBwcm90ZWN0IGEgc2Vuc2l0aXZlIG1hbiB3aGVuIAppbiBhIGNyb3dkOyB0byBzaGllbGQgdGhlIHBoeXNpY2FsIGJvZHkgYXQgbmlnaHQgd2hlbiB0aGUgbWFuIGxlYXZlcyBpdCBpbiAKc2xlZXA7IGFuZCB0byBwcmV2ZW50IHRoZSBkYW5nZXIgb2YgcGh5c2ljYWwgaW5mZWN0aW9uIG9uIHNvbWUgb2NjYXNpb24gd2hlbiB0aGUgCnN0dWRlbnQgaGFzIGluIHRoZSBjb3Vyc2Ugb2YgaGlzIGR1dHkgdG8gc3ViamVjdCBoaW1zZWxmIHRvIGl0LiBJbiBhbGwgdGhlc2UgCmNhc2VzIGl0IGlzIG9idmlvdXMgdGhhdCB0aGUgc2hlbGwgbXVzdCBiZSBvZiBldGhlcmljIG1hdHRlciBhbmQgb2YgZXRoZXJpYyAKbWF0dGVyIG9ubHksIGlmIGl0IGlzIHRvIGJlIGVmZmVjdGl2ZSBmb3IgaXRzIHB1cnBvc2UsIGFsdGhvdWdoIGl0IG1heSBzb21ldGltZXMgCmJlIGRlc2lyYWJsZSB0byBjcmVhdGUgb3RoZXIgc2hlbGxzIGluIG90aGVyIHdvcmxkcyBzaW11bHRhbmVvdXNseSB0byBhZmZvcmQgCnByb3RlY3Rpb24gZnJvbSBvdGhlciBjbGFzc2VzIG9mIGRhbmdlcnMuIAoKCjgwNy7CoMKgwqDCoMKgwqDCoApUaGUgb2JqZWN0IG9mIGEgc2hlbGwgaW4gYSBjcm93ZCBpcyB1c3VhbGx5IHR3b2ZvbGQuIEluIGEgbWl4ZWQgbXVsdGl0dWRlIApvZiBvcmRpbmFyeSBwZW9wbGUgdGhlcmUgd2lsbCBhbG1vc3QgY2VydGFpbmx5IGJlIGEgZ3JlYXQgZGVhbCBvZiBwaHlzaWNhbCAKbWFnbmV0aXNtIG9mIGEga2luZCBkaXN0YXN0ZWZ1bCB0byB0aGUgc3R1ZGVudCBhbmQgZXZlbiBwcmVqdWRpY2lhbCB0byBoaW0sIGFuZCAKcGFydCBvZiBoaXMgb2JqZWN0IGluIHNoZWxsaW5nIGhpbXNlbGYgaXMgdG8gZGVmZW5kIGhpbXNlbGYgYWdhaW5zdCB0aGF0LiBJdCBpcyAKYWxzbyBwcm9iYWJsZSB0aGF0IGluIGFueSBsYXJnZSBjcm93ZCB0aGVyZSBtYXkgYmUgYSBjZXJ0YWluIG51bWJlciBvZiB0aG9zZSAKdW5mb3J0dW5hdGUgcGVyc29ucyB3aG8sIGJlaW5nIHRoZW1zZWx2ZXMgaW4gc29tZSB3YXkgcGh5c2ljYWxseSB3ZWFrLCBhcmUgCmNvbnN0YW50bHkgZHJhd2luZyBsYXJnZSBhbW91bnRzIG9mIHZpdGFsaXR5IGZyb20gb3RoZXJzLiBTdWNoIGFic29ycHRpb24gb2Z0ZW4gCnRha2VzIHBsYWNlIGVudGlyZWx5IHdpdGhvdXQgdGhlIGtub3dsZWRnZSBvZiB0aGUgcGVyc29uIHRlbXBvcmFyaWx5IGJlbmVmaXRlZCAKYnkgaXQsIHNvIHRoYXQgaGUgbWF5IGJlIHJlZ2FyZGVkIGFzIGEga2luZCBvZiB1bmNvbnNjaW91cyBldGhlcmljIGtsZXB0b21hbmlhYy4KCgo4MDguwqDCoMKgwqDCoMKgwqAKT25lIHdobyBoYXMgdGh1cyB0aGUgbWlzZm9ydHVuZSB0byBiZSBhbiB1bmNvbnNjaW91cyB2YW1waXJlIG1heSBiZSAKY29tcGFyZWQgdG8gYSBnaWdhbnRpYyBzcG9uZ2UsIGFsd2F5cyByZWFkeSB0byBhYnNvcmIgYW55IGFtb3VudCBvZiBzcGVjaWFsaXNlZCAKdml0YWxpdHkgd2hpY2ggaXQgY2FuIG9idGFpbi4gSWYgaGUgY29uZmluZXMgaGltc2VsZiB0byBzZWl6aW5nIHVwb24gdGhlIApibHVpc2gtd2hpdGUgcmFkaWF0aW9ucywgd2hpY2ggZXZlcnkgbm9ybWFsIHBlcnNvbiB0aHJvd3Mgb3V0LCBoZSB3aWxsIGRvIG5vIApoYXJtLCBmb3IgdGhlIG1hdHRlciBvZiB3aGljaCB0aGVzZSBhcmUgY29tcG9zZWQgaGFzIGFscmVhZHkgYmVlbiByZWNlaXZlZCBhbmQgCmRlYWx0IHdpdGggYnkgdGhlIHBlcnNvbiBmcm9tIHdob3NlIGF1cmEgaXQgaXMgdGFrZW4uIEJ1dCB1c3VhbGx5IHRoaXMgaXMgbm90IAphbGwgdGhhdCBoZSB0YWtlcywgZm9yIG9uIHRoZSBhcHByb2FjaCBvZiB0aGUgdmFtcGlyZSB0aGlzIG91dHBvdXJpbmcgaXMgZ3JlYXRseSAKc3RpbXVsYXRlZCBieSBoaXMgZHJhd2luZyBmb3JjZSwgc28gdGhhdCBub3Qgb25seSB0aGUgYWxyZWFkeS11dGlsaXNlZCAKYmx1aXNoLXdoaXRlIGZsdWlkIGlzIGxvc3QsIGJ1dCBieSBpbnRlbnNlIHN1Y3Rpb24gdGhlIHdob2xlIGNpcmN1bGF0aW9uIG9mIHRoZSAKdml0YWxpdHkgdGhyb3VnaCB0aGUgYm9keSBvZiB0aGUgdmljdGltIGlzIHNvIGhhc3RlbmVkIHRoYXQgdGhlIHJvc2UtY29sb3VyZWQgCm1hdHRlciBpcyBkcmF3biBvdXQgd2l0aCB0aGUgcmVmdXNlIHRocm91Z2ggYWxsIHRoZSBwb3JlcyBvZiB0aGUgYm9keSwgYW5kIHRoZSAKdW5mb3J0dW5hdGUgb3JpZ2luYWwgb3duZXIgaGFzIG5vdCB0aW1lIHRvIGFzc2ltaWxhdGUgaXQ7IHNvIHRoYXQgYSBjYXBhYmxlIAp2YW1waXJlIGNhbiBkcmFpbiBhIHBlcnNvbiBvZiB0aGUgd2hvbGUgb2YgaGlzIHN0cmVuZ3RoIGluIGEgdmlzaXQgb2YgYSBmZXcgCm1pbnV0ZXMuIAoKCjgwOS7CoMKgwqDCoMKgwqDCoApTdWNoIGFuIHVuY29uc2Npb3VzIHZhbXBpcmUgaXMgYXNzdXJlZGx5IGFsd2F5cyBhbiBvYmplY3Qgb2YgcGl0eTsgeWV0IGl0IAp3b3VsZCBiZSBhIGdyZWF0IG1pc3Rha2UgaWYsIGJlY2F1c2Ugb2YgdGhhdCBwaXR5LCBhbnkgdmljdGltIHZvbHVudGFyaWx5IAphbGxvd2VkIGhpbXNlbGYgdG8gYmUgZGVwbGV0ZWQsIHdpdGggdGhlIGlkZWEgdGhhdCBoZSB3YXMgdGhlcmVieSBzZXJ2aW5nIGFuZCAKaGVscGluZyBvbmUgaW4gc29yZSBuZWVkLiBUaGUgdmFtcGlyZSBpbnZhcmlhYmx5IHdhc3RlcyB0aGUgc3Vic3RhbmNlIHdoaWNoIGhlIAp0aHVzIG5lZmFyaW91c2x5IGFjcXVpcmVzLiBJdCBydXNoZXMgdGhyb3VnaCBoaW0gYW5kIGlzIGRpc3NpcGF0ZWQgYWdhaW4gd2l0aG91dCAKcHJvcGVyIGFzc2ltaWxhdGlvbiwgc28gdGhhdCBoaXMgZXZlci1wcmVzZW50IHRoaXJzdCBpcyBuZXZlciBzYXRpYXRlZCwgYW5kIHRvIAplbmRlYXZvdXIgYnkgYWJ1bmRhbnQgc2VsZi1zYWNyaWZpY2UgdG8gZmlsbCBoaW0gdXAgaXMgZXhhY3RseSwgdG8gdXNlIGFuIApleHByZXNzaXZlIEluZGlhbiBwcm92ZXJiLCBsaWtlIHBvdXJpbmcgd2F0ZXIgaW50byBhIGJhZyB3aXRoIGEgaG9sZSBpbiBpdC4gCgoKODEwLsKgwqDCoMKgwqDCoMKgClRoZSBvbmx5IHRoaW5nIHRoYXQgY2FuIHJlYWxseSBiZSBkb25lIHRvIGhlbHAgYSBjb25maXJtZWQgdW5jb25zY2lvdXMgCnZhbXBpcmUgaXMgdG8gc3VwcGx5IHRoZSB2aXRhbGl0eSBmb3Igd2hpY2ggaGUgY3JhdmVzIGluIHN0cmljdGx5IGxpbWl0ZWQgCnF1YW50aXRpZXMsIHdoaWxlIGVuZGVhdm91cmluZywgYnkgbWVzbWVyaWMgYWN0aW9uLCB0byByZXN0b3JlIHRoZSBlbGFzdGljaXR5IG9mIAp0aGUgZXRoZXJpYyBkb3VibGUsIHNvIHRoYXQgdGhlIHBlcnBldHVhbCBzdWN0aW9uIGFuZCBjb3JyZXNwb25kaW5nIGxlYWthZ2UgCnNoYWxsIG5vIGxvbmdlciB0YWtlIHBsYWNlLiBTdWNoIGEgbGVha2FnZSBpbnZhcmlhYmx5IGZsb3dzIHRocm91Z2ggZXZlcnkgcG9yZSAKb2YgdGhlIGJvZHkgb24gYWNjb3VudCBvZiB0aGlzIGxhY2sgb2YgZXRoZXJpYyBlbGFzdGljaXR5LS0gbm90IHRocm91Z2ggYSBzb3J0IApvZiB0ZWFyIG9yIHdvdW5kIGluIHRoZSBldGhlcmljIGJvZHksIGFzIHNvbWUgc3R1ZGVudHMgaGF2ZSBzdXBwb3NlZDsgaW5kZWVkLCAKdGhlIGlkZWEgb2YgYW55dGhpbmcgaW4gdGhlIG5hdHVyZSBvZiBhIHBlcm1hbmVudCB0ZWFyIG9yIHdvdW5kIGlzIGluY29tcGF0aWJsZSAKd2l0aCB0aGUgY29uZGl0aW9ucyBvZiBldGhlcmljIG1hdHRlciBhbmQgdGhlIGNvbnN0aXR1dGlvbiBvZiB0aGUgZXRoZXJpYyAKZG91YmxlLiAKCgo4MTEuwqDCoMKgwqDCoMKgwqAKQSBzdHJvbmcgc2hlbGwgaXMgb25lIHdheSBvZiBndWFyZGluZyBvbmVzZWxmIGFnYWluc3Qgc3VjaCB2YW1waXJpc20sIGFuZCAKdGhlcmUgYXJlIG1hbnkgcGVvcGxlIGZvciB3aG9tIGF0IHByZXNlbnQgaXQgbWF5IGJlIHRoZSBvbmx5IHdheSBvcGVuLiAKCgo4MTIuwqDCoMKgwqDCoMKgwqAKSW4gdGhlIGNhc2Ugb2Ygbm9ybWFsIGFuZCBoZWFsdGh5IHBlb3BsZSB0aGVyZSBpcyB1c3VhbGx5IG5vIHRyb3VibGUgd2l0aCAKdGhlIHBoeXNpY2FsIGJvZHkgd2hpY2ggaXMgbGVmdCBiZWhpbmQgd2hlbiB0aGUgbWFuIGhpbXNlbGYgbW92ZXMgYXdheSBpbiBzbGVlcCAKb3IgaW4gdHJhbmNlLCBmb3IgaW4gdGhlIGltcHJvYmFibGUgZXZlbnQgb2YgYW55IHNvcnQgb2YgYXR0YWNrIGJlaW5nIG1hZGUgdXBvbiAKaXQgdGhlIGJvZHkgd291bGQgaW5zdGFudGx5IHJlY2FsbCB0aGUgd2FuZGVyaW5nIHNvdWwsIHNvIHRoYXQgdGhlIHdob2xlIG1hbiAKd291bGQgYmUgYXQgaGFuZCB0byBkZWZlbmQgaGltc2VsZiBpZiBuZWNlc3NhcnkuIFRoZSBwaHlzaWNhbCBib2R5IGhhcyBhIApjb25zY2lvdXNuZXNzIG9mIGl0cyBvd24sIHF1aXRlIGFwYXJ0IGZyb20gdGhhdCBvZiB0aGUgbWFuIHdobyBpbmhhYml0cyBpdC0tIGEgCnZhZ3VlIGNvbnNjaW91c25lc3MgdHJ1bHksIGJ1dCBzdGlsbCBjYXBhYmxlIG9mIGtub3dpbmcgd2hlbiBpdHMgdmVoaWNsZSBpcyBpbiAKZGFuZ2VyLCBhbmQgb2YgaW5zdGluY3RpdmVseSB0YWtpbmcgd2hhdGV2ZXIgc3RlcHMgYXJlIGluIGl0cyBwb3dlciB0byBwcm90ZWN0IAppdC4gSSBoYXZlIG15c2VsZiBzZWVuIHRoYXQgY29uc2Npb3VzbmVzcyBtYW5pZmVzdCBpdHNlbGYgd2hlbiB0aGUgb3duZXIgb2YgdGhlIApib2R5IGhhZCBiZWVuIGRyaXZlbiBvdXQgb2YgaXQgYnkgYSBkZW50aXN0JyBzIGFkbWluaXN0cmF0aW9uIG9mIGxhdWdoaW5nIGdhcy0tIAptYW5pZmVzdCBpdHNlbGYgaW4gYSB2YWd1ZSBvdXRjcnkgYW5kIGFuIGluZWZmaWNpZW50IGF0dGVtcHQgYXQgcHJvdGVzdGluZyAKYWN0aW9uIHdoZW4gdGhlIHRvb3RoIHdhcyBleHRyYWN0ZWQsIHRob3VnaCB0aGUgbWFuIGhpbXNlbGYgYWZ0ZXJ3YXJkcyByZXBvcnRlZCAKdGhhdCBoZSBoYWQgYmVlbiBhYnNvbHV0ZWx5IHVuY29uc2Npb3VzIG9mIHRoZSBvcGVyYXRpb24uIAoKCjgxMy7CoMKgwqDCoMKgwqDCoApBcyB0aGUgcGh5c2ljYWwgYm9keSBhbHdheXMgcmVtYWlucyBpbnRpbWF0ZWx5IGF0dGFjaGVkIGJ5IHN5bXBhdGhldGljIAp2aWJyYXRpb24gdG8gdGhlIGFzdHJhbCwgZXZlbiB3aGVuIHRoZSBsYXR0ZXIgaXMgZmFyIGF3YXkgZnJvbSBpdCwgYW55IApkaXN0dXJiYW5jZSB3aGljaCB0aHJlYXRlbnMgdGhlIHBoeXNpY2FsIGlzIGFsbW9zdCBzdXJlIHRvIGJlIGNvbW11bmljYXRlZCAKaW5zdGFudGx5IHRvIHRoZSBlZ28sIHdobyBwcm9tcHRseSByZXR1cm5zIHRvIGludmVzdGlnYXRlLiAKCgo4MTQuwqDCoMKgwqDCoMKgwqAKVGhlcmUgYXJlLCBob3dldmVyLCBhYm5vcm1hbCBhbmQgdW5mb3J0dW5hdGUgcGVvcGxlIHdobyBhcmUgc3ViamVjdCB0byAKdGhlIGF0dGFja3Mgb2YgY2VydGFpbiBlbnRpdGllcyB3aG8gZGVzaXJlIHRvIHNlaXplIHVwb24gYW5kIG9ic2VzcyB0aGVpciAKYm9kaWVzLCBhbmQgc3VjaCBwZW9wbGUgc29tZXRpbWVzIGZpbmQgaXQgbmVjZXNzYXJ5IHRvIHRha2Ugc3Ryb25nIG1lYXN1cmVzIHRvIApyZXRhaW4gcG9zc2Vzc2lvbiBvZiB0aGVpciBwZXJzb25hbCBwcm9wZXJ0eS4gT3IgYWdhaW4sIHBlcmhhcHMgY2lyY3Vtc3RhbmNlcyAKbWF5IGNvbXBlbCB0aGUgc3R1ZGVudCB0byBzbGVlcCBpbiBleGNlZWRpbmdseSB1bmRlc2lyYWJsZSBzdXJyb3VuZGluZ3MtLSBhcywgCmZvciBleGFtcGxlLCBpbiBhIHJhaWx3YXkgY2FycmlhZ2UgaW4gY2xvc2UgcGh5c2ljYWwgY29udGFjdCB3aXRoIHBlb3BsZSBvZiB0aGUgCnZhbXBpcmlzaW5nIHR5cGUgb3Igb2YgY29hcnNlIGFuZCBmb3JiaWRkaW5nIGVtYW5hdGlvbnMuIEluIGVpdGhlciBvZiB0aGVzZSAKY2FzZXMgYSBzdHJvbmcgZXRoZXJpYyBzaGVsbCBtaWdodCBiZSB0aGUgYmVzdCB3YXkgb2YgbWVldGluZyB0aGUgZGlmZmljdWx0eSwgCnRob3VnaCB0aGUgc3R1ZGVudCBoYXMgdGhlIGFsdGVybmF0aXZlIG9mIG1ha2luZyBhIHN0cm9uZyB0aG91Z2h0LWZvcm0gYW5pbWF0ZWQgCndpdGggdGhlIHB1cnBvc2Ugb2YgZ3VhcmRpbmcgdGhlIGJvZHkuIFN1Y2ggYSB0aG91Z2h0LWZvcm0gbWF5IGJlIG1hZGUgZXZlbiBtb3JlIAplZmZlY3RpdmUgYW5kIHZpdmlkIGlmIGEgbmF0dXJlLXNwaXJpdCBvZiBhcHByb3ByaWF0ZSB0eXBlIGNhbiBiZSBpbmR1Y2VkIHRvIAplbnRlciBpbnRvIGl0IGFuZCB0YWtlIGEgZGVsaWdodCBpbiBjYXJyeWluZyBvdXQgaXRzIG9iamVjdC4gCgoKODE1LsKgwqDCoMKgwqDCoMKgClRoZSBpZGVhIG9mIHByb3RlY3Rpb24gZnJvbSBpbmZlY3Rpb24gaXMgc3VmZmljaWVudGx5IG9idmlvdXMgdG8gbmVlZCBubyAKc3BlY2lhbCBjb21tZW50LiBTdWNoIGluZmVjdGlvbiBjYW4gZW50ZXIgb25seSBieSBtZWFucyBvZiBwaHlzaWNhbCBnZXJtcyBvZiAKc29tZSBzb3J0LCBhbmQgYWdhaW5zdCB0aGVzZSBhIGRlbnNlIHdhbGwgb2YgZXRoZXJpYyBtYXR0ZXIgaXMgYSBzdXJlIApwcm90ZWN0aW9uLiBJdCBtdXN0IG5ldmVyIGJlIGZvcmdvdHRlbiwgaG93ZXZlciwgdGhhdCBhIHNoZWxsIHdoaWNoIGtlZXBzIApvdXQgbWF0dGVyIG9mIGEgY2VydGFpbiB0eXBlIG11c3QgYWxzbyBrZWVwIGl0IGluIDsgc28gdGhhdCBpbiAKZ3VhcmRpbmcgb3Vyc2VsdmVzIGFnYWluc3QgZ2VybXMgd2hpY2ggbWF5IGJyaW5nIGNvbnRhZ2lvbiB3ZSBhcmUgYWxzbyBrZWVwaW5nIAppbiBjbG9zZSBjb250YWN0IHdpdGggdGhlIHBoeXNpY2FsIGJvZHkgYSBncmVhdCBtYXNzIG9mIGl0cyBvd24gZW1hbmF0aW9ucywgbWFueSAKb2Ygd2hpY2ggYXJlIGRpc3RpbmN0bHkgcG9pc29ub3VzIGluIGNoYXJhY3Rlci4gCgoKODE2LsKgwqDCoMKgwqDCoMKgCkluIHRoZSBjYXNlcyBhYm92ZSBtZW50aW9uZWQgdGhlIHNoZWxsIHRvIGJlIG1hZGUgaXMgb2YgZXRoZXJpYyBtYXR0ZXIgCm9ubHksIGFuZCB0aGUgbWFuIHdobyB3aXNoZXMgdG8gbWFrZSBpdCBtdXN0IHJlY29sbGVjdCB0aGF0IGhpcyBldGhlcmljIGJvZHkgaXMgCmJ5IG5vIG1lYW5zIGNvdGVybWlub3VzIHdpdGggdGhlIGFzdHJhbCBvciBtZW50YWwuIEJvdGggb2YgdGhlIGxhdHRlciBhZG9wdCB0aGUgCnNoYXBlIGFuZCBzaXplIG9mIHRoYXQgb3ZvaWQgc2VjdGlvbiBvZiB0aGUgY2F1c2FsIGJvZHksIHdoaWNoIGFsb25lIG9mIGl0cyAKY2hhcmFjdGVyaXN0aWNzIGNhbiBtYW5pZmVzdCBpbiB0aGUgbG93ZXIgd29ybGRzLiBUaGUgZXRoZXJpYyBib2R5LCBob3dldmVyLCBpcyAKb2YgdGhlIHNoYXBlIG9mIHRoZSBwaHlzaWNhbCwgYW5kIHByb2plY3RzIHNsaWdodGx5IGZyb20gaXRzIHN1cmZhY2UgaW4gYWxsIApkaXJlY3Rpb25zLS0gcGVyaGFwcyBhIHF1YXJ0ZXIgb2YgYW4gaW5jaCBvciBzby4gSWYsIHRoZXJlZm9yZSwgdGhlIHBsYW4gb2YgCmRlbnNpZnlpbmcgdGhlIHBlcmlwaGVyeSBvZiB0aGUgYXVyYSBpcyB0byBiZSBhZG9wdGVkLCB0aGUgbWFuLCB3aG8gdHJpZXMgdGhlIApleHBlcmltZW50IG11c3QgcmVjb2xsZWN0IHdoZXJlIHRoYXQgcGVyaXBoZXJ5IGxpZXMsIGFuZCBkaXJlY3QgaGlzIHdpbGwtcG93ZXIgCmFjY29yZGluZ2x5LiAKCgo4MTcuwqDCoMKgwqDCoMKgwqAKSGUgaGFzLCBob3dldmVyLCB0aGUgYWx0ZXJuYXRpdmUgb2YgbWFraW5nIGFuIG92b2lkIHNoZWxsIG9mIGV0aGVyaWMgCm1hdHRlciBkcmF3biBmcm9tIHRoZSBzdXJyb3VuZGluZyBhdG1vc3BoZXJlLiBUaGF0IGNvdXJzZSBpcyBpbiBtYW55IHdheXMgCnByZWZlcmFibGUsIGJ1dCBkZW1hbmRzIGEgZmFyIGdyZWF0ZXIgZXhlcnRpb24gb2YgdGhlIHdpbGwgYW5kIGEgbXVjaCBtb3JlIApkZWZpbml0ZSBrbm93bGVkZ2Ugb2YgdGhlIHdheSBpbiB3aGljaCBwaHlzaWNhbCBtYXR0ZXIgaXMgbW91bGRlZCBieSBpdC4gU3VjaCBhIApzaGVsbCBhcyBoYXMgYmVlbiBkZXNjcmliZWQsIHRob3VnaCBpbnZpc2libGUgdG8gb3JkaW5hcnkgc2lnaHQsIGlzIHB1cmVseSBpbiAKdGhlIHBoeXNpY2FsIHdvcmxkLCBhbmQgdGhlcmVmb3JlIGd1YXJkcyBpdHMgY3JlYXRvciBvbmx5IGFnYWluc3QgZGVmaW5pdGVseSAKcGh5c2ljYWwgZW1hbmF0aW9ucy4gSXQgZG9lcyBub3QgaW4gdGhlIGxlYXN0IGFmZmVjdCB0aGUgZW50cmFuY2Ugb2Ygd2FuZGVyaW5nIAp0aG91Z2h0cyBvciBvZiBhc3RyYWwgdmlicmF0aW9ucyB0ZW5kaW5nIHRvIHByb2R1Y2UgcGFzc2lvbnMgYW5kIGVtb3Rpb25zIG9mIAp2YXJpb3VzIGtpbmRzLiAKCgo4MTguwqDCoMKgwqDCoMKgwqAKU29tZSBzZW5zaXRpdmUgcGVvcGxlIGZpbmQgaXQgaW1wb3NzaWJsZSB0byBjb21lIG5lYXIgdGhvc2Ugc3VmZmVyaW5nIApmcm9tIGFueSB3ZWFrbmVzcyBvciBkaXNlYXNlIHdpdGhvdXQgaW1tZWRpYXRlbHkgcmVwcm9kdWNpbmcgaW4gdGhlaXIgb3duIApwaHlzaWNhbCBib2RpZXMgdGhlIHN5bXB0b21zIG9mIHRoZSBzdWZmZXJlcnMuIEluIHN1Y2ggY2FzZXMgYW4gZXRoZXJpYyBzaGVsbCAKbWF5IGJlIHVzZWZ1bCwgYXMgd2l0aG91dCBpdCB0aGUgc2Vuc2l0aXZlIG1hbiBpcyBsYXJnZWx5IHByZWNsdWRlZCBieSB0aGlzIAphYm5vcm1hbCBrZWVubmVzcyBvZiBzeW1wYXRoeSBmcm9tIGFzc2lzdGluZyBzdWNoIHBlb3BsZS4gCgoKODE5LsKgwqDCoMKgwqDCoMKgCkFnYWluLCBmb3IgdGhvc2Ugd2hvc2UgYnVzaW5lc3MgbWFrZXMgaXQgbmVjZXNzYXJ5IGZvciB0aGVtIHRvIGxpdmUgYW5kIAptb3ZlIGluIHRoZSBtaWRzdCBvZiB0aGUgaG9ycmlibGUgZGluIG9mIG91ciBtb2Rlcm4gY2l2aWxpc2F0aW9uIHN1Y2ggYSBzaGVsbCAKbWF5IHNvbWV0aW1lcyBwcm92ZSB1c2VmdWwsIGFzIGdpdmluZyB0aGUgdGlyZWQgYW5kIGhhcmFzc2VkIG5lcnZlcyBhdCBsZWFzdCAKc29tZXRoaW5nIG9mIGFuIG9wcG9ydHVuaXR5IGZvciByZWNvdmVyeSwgYnkgcHJvdGVjdGluZyB0aGVtIGZvciBhIHdoaWxlIGZyb20gCnRoZSBvdGhlcndpc2UgaW5jZXNzYW50IGhhbW1lcmluZyBvZiBhbGwgdGhlIG11bHRpcGxleCB2aWJyYXRpb25zIHdoaWNoIApjb25zdGl0dXRlIG1vZGVybiBsaWZlLiAKCgo4MjAuwqDCoMKgwqDCoMKgwqAKU0hJRUxEUyAKCgo4MjEuwqDCoMKgwqDCoMKgwqAKSW4gc29tZSBjYXNlcyB3aGF0IGlzIGNhbGxlZCBmb3IgaXMgbm90IGEgc2hlbGwgc3Vycm91bmRpbmcgdGhlIHdob2xlIApib2R5LCBidXQgc2ltcGx5IGEgc21hbGwgbG9jYWwgc2hpZWxkIHRvIGd1YXJkIG9uZXNlbGYgYWdhaW5zdCBzb21lIHNwZWNpYWwgCnRlbXBvcmFyeSBjb250YWN0LiBBbGwgc2Vuc2l0aXZlIHBlb3BsZSBhcmUgYXdhcmUgdGhhdCB0aGUgd2VzdGVybiBjdXN0b20gb2YgCnNoYWtpbmcgaGFuZHMgb2Z0ZW4gYnJpbmdzIHdpdGggaXQgcG9zaXRpdmUgdG9ybWVudCwgbGFzdGluZyBub3QgaW5mcmVxdWVudGx5IApmb3Igc29tZSBob3VycyBhZnRlciB0aGUgbW9tZW50IG9mIGNvbnRhY3QuIE9mdGVuIHRvIGdvIG91dCBvZiBvbmUnIHMgd2F5IHRvIAphdm9pZCBzaGFraW5nIGhhbmRzIG1heSBjYXVzZSBvZmZlbmNlLCBvciBtYXkgZ2l2ZSBhbiBpbXByZXNzaW9uIG9mIHByaWRlIG9yIG9mIAphbiBhc3N1bXB0aW9uIG9mIHN1cGVyaW9yaXR5LiBUaGUgZGlmZmljdWx0eSBtYXkgdXN1YWxseSBiZSBvYnZpYXRlZCBieSBtYWtpbmcgCmFuIGVmZm9ydCBvZiB0aGUgd2lsbCB3aGljaCBjb3ZlcnMgdGhlIHJpZ2h0IGhhbmQgd2l0aCBhIHN0cm9uZyB0ZW1wb3Jhcnkgc2hpZWxkIApvZiBldGhlcmljIG1hdHRlciwgc28gdGhhdCB0aGUgc2Vuc2l0aXZlIG1heSBlbmR1cmUgdGhlIHVucGxlYXNhbnQgY29udGFjdCAKd2l0aG91dCBhbGxvd2luZyBhIHNpbmdsZSBwYXJ0aWNsZSBjaGFyZ2VkIHdpdGggdW5kZXNpcmFibGUgbWFnbmV0aXNtIHRvIGVudGVyIApoaXMgYm9keS4gCgoKODIyLsKgwqDCoMKgwqDCoMKgCk9mIHRoZSBzYW1lIG5hdHVyZSBhcyB0aGlzLCB0aG91Z2ggcmVxdWlyaW5nIGZvciB0aGVpciBzdWNjZXNzZnVsIAptYW5pcHVsYXRpb24gYSBmYXIgZ3JlYXRlciBrbm93bGVkZ2Ugb2YgcHJhY3RpY2FsIG1hZ2ljLCBhcmUgdGhlIHNoZWxscyB3aGljaCAKYXJlIHNvbWV0aW1lcyB1c2VkIGFzIGEgcHJvdGVjdGlvbiBhZ2FpbnN0IGZpcmUuIEkgaGF2ZSBteXNlbGYgaGFkIHN1Y2ggYSBzaGVsbCAKb2YgZXRoZXJpYyBtYXR0ZXIgbWFkZSBvdmVyIHRoZSBwYWxtIG9mIG15IGhhbmQgYXQgYSBzcGlyaXR1YWxpc3RpYyBz77+9YW5jZS0tIAptYWRlIHNvIGVmZmVjdGl2ZWx5IHRoYXQsIGFsdGhvdWdoIGl0IHdhcyB0b28gdGhpbiB0byBiZSBvYnNlcnZhYmxlIGJ5IHRoZSAKc2Vuc2VzLCBpdCB5ZXQgZW5hYmxlZCBtZSB0byBob2xkIGluIG15IGhhbmQgZm9yIHNldmVyYWwgbWludXRlcyBhIGdsb3dpbmcgY29hbCwgCmZyb20gd2hpY2gsIHdoaWxlIEkgaGVsZCBpdCwgSSB3YXMgYWJsZSB0byBsaWdodCBhIHBpZWNlIG9mIHBhcGVyLiBBIHN0aWxsIG1vcmUgCmV4dGVuZGVkIGFwcGxpY2F0aW9uIG9mIHRoZSBzYW1lIGlkZWEgaXMgdGhlIG11Y2ggbGFyZ2VyIHNoaWVsZCBzcHJlYWQgb3ZlciB0aGUgCmdsb3dpbmcgYXNoZXMsIG9yIG92ZXIgdGhlIGZlZXQgb2YgdGhlIHBhcnRpY2lwYW50cywgaW4gdGhlIGZpcmUtd2Fsa2luZyAKZXhwZXJpbWVudCB3aGljaCBoYXMgYmVlbiBzbyBvZnRlbiBkZXNjcmliZWQuIAoKCjgyMy7CoMKgwqDCoMKgwqDCoApBIFdBUk5JTkcgCgoKODI0LsKgwqDCoMKgwqDCoMKgClN0dWRlbnRzIHdpc2hpbmcgZm9yIHNvbWUgcmVhc29uIHRvIGd1YXJkIHRoZWlyIHBoeXNpY2FsIGJvZGllcyBkdXJpbmcgCnNsZWVwIG1heSBiZSB3YXJuZWQgbm90IHRvIHJlcGVhdCB0aGUgbWlzdGFrZSBtYWRlIHNvbWUgdGltZSBhZ28gYnkgYSB3b3J0aHkgCmZyaWVuZCB3aG8gdG9vayBhIGdyZWF0IGRlYWwgb2YgdHJvdWJsZSB0byBzdXJyb3VuZCBoaW1zZWxmIHdpdGggYSBzcGVjaWFsbHkgCmltcGVuZXRyYWJsZSBzaGVsbCBvbiBhIGNlcnRhaW4gb2NjYXNpb24sIGJ1dCBtYWRlIGl0IG9mIGFzdHJhbCBpbnN0ZWFkIG9mIApldGhlcmljIG1hdHRlciwgYW5kIGNvbnNlcXVlbnRseSB0b29rIGl0IGF3YXkgd2l0aCBoaW0gd2hlbiBoZSBsZWZ0IGhpcyBwaHlzaWNhbCAKYm9keSEgTmF0dXJhbGx5IHRoZSByZXN1bHQgd2FzIHRoYXQgaGlzIHBoeXNpY2FsIGJvZHkgd2FzIGxlZnQgZW50aXJlbHkgCnVucHJvdGVjdGVkLCB3aGlsZSBoZSBoaW1zZWxmIGZsb2F0ZWQgYWJvdXQgYWxsIG5pZ2h0IGVuY2xvc2VkIGluIHRyaXBsZSBhcm1vdXIsIAphYnNvbHV0ZWx5IGluY2FwYWJsZSBvZiBzZW5kaW5nIG91dCBhIHNpbmdsZSB2aWJyYXRpb24gdG8gaGVscCBhbnlib2R5LCBvciBvZiAKYmVpbmcgaGVscGVkIG9yIGJlbmVmaWNpYWxseSBpbmZsdWVuY2VkIGJ5IGFueSBsb3ZpbmcgdGhvdWdodHMgd2hpY2ggbWF5IGhhdmUgCmJlZW4gZGlyZWN0ZWQgdG93YXJkcyBoaW0gYnkgdGVhY2hlcnMgb3IgZnJpZW5kcy4gCgoKODI1LsKgwqDCoMKgwqDCoMKgClRIRSBBU1RSQUwgU0hFTEwgCgoKODI2LsKgwqDCoMKgwqDCoMKgClRoZSBvYmplY3RzIGFpbWVkIGF0IGluIG1ha2luZyBhbiBhc3RyYWwgc2hlbGwgYXJlIG5hdHVyYWxseSBvZiBhbiAKZW50aXJlbHkgZGlmZmVyZW50IHR5cGUsIHNpbmNlIHRoZXkgbXVzdCBiZSBjb25uZWN0ZWQgb25seSB3aXRoIHBhc3Npb25zIGFuZCAKZW1vdGlvbnMuIE1vc3Qgb2YgdGhlbSBhbHNvIGZhbGwgdW5kZXIgdGhyZWUgaGVhZHMuIEEgc2hlbGwgbWF5IGJlIGZvcm1lZCByb3VuZCAKdGhlIGFzdHJhbCBib2R5LCBmaXJzdCwgdG8ga2VlcCBvdXQgZW1vdGlvbmFsIHZpYnJhdGlvbnMgaW50ZW50aW9uYWxseSBkaXJlY3RlZCAKYnkgb3RoZXJzIGF0IHRoZSBzdHVkZW50LCBzdWNoIGFzIHRob3NlIG9mIGFuZ2VyLCBlbnZ5IG9yIGhhdHJlZDsgc2Vjb25kbHksIHRvIAprZWVwIG91dCBjYXN1YWwgdmlicmF0aW9ucyBvZiBsb3cgdHlwZSAoc3VjaCBhcyB0aG9zZSBldm9raW5nIHNlbnN1YWxpdHkpIHdoaWNoIAphcmUgbm90IGludGVudGlvbmFsbHkgZGlyZWN0ZWQgYXQgdGhlIHN0dWRlbnQsIGJ1dCBhcmUgdG8gYmUgZm91bmQgZmxvYXRpbmcgaW4gCnRoZSBzdXJyb3VuZGluZyBhdG1vc3BoZXJlLCBhbmQgaW1waW5nZSB1cG9uIGhpbSBhcyBpdCB3ZXJlIGJ5IGFjY2lkZW50IGluIHRoZSAKY291cnNlIG9mIG9yZGluYXJ5IGxpZmU7IHRoaXJkbHksIGEgc3R1ZGVudCBtYXkgZmluZCBpdCB1c2VmdWwgdG8gc3Vycm91bmQgaGlzIAphc3RyYWwgYm9keSB3aXRoIGEgc3BlY2lhbCBzaGVsbCBkdXJpbmcgdGhlIHRpbWUgd2hpY2ggaGUgZGV2b3RlcyB0byBtZWRpdGF0aW9uLCAKaWYgaGUgaGFzIGJlZW4gdHJvdWJsZWQgd2l0aCB0aGUgaW50cnVzaW9uIG9mIHRob3VnaHRzIG9mIGEgbG93IHR5cGUsIHdoaWNoIApicmluZyB3aXRoIHRoZW0gYXN0cmFsIG1hdHRlciBhbmQgYXJlIGNhbGN1bGF0ZWQgdG8gcHJvdm9rZSB1bmRlc2lyYWJsZSBlbW90aW9uLgoKCjgyNy7CoMKgwqDCoMKgwqDCoApJbiBhbnkgb3IgYWxsIG9mIHRoZXNlIGNhc2VzIHRoZSBlZmZvcnQgb2YgdGhlIHdpbGwgc2hvdWxkIGJlIGRpcmVjdGVkIHRvIAp0aGUgc3VyZmFjZSBvZiB0aGUgYXN0cmFsIGJvZHktLSBub3QgdG8gdGhhdCBjb3VudGVycGFydCBvZiBkZW5zZXIgYXN0cmFsIG1hdHRlciAKd2hpY2ggaXMgZXhhY3RseSB0aGUgc2hhcGUgYW5kIHNpemUgb2YgdGhlIHBoeXNpY2FsIHZlaGljbGUsIGJ1dCB0aGUgZWdnIG9mIApzdXJyb3VuZGluZyBhdXJhLCBhcyBkZXBpY3RlZCBpbiB0aGUgaWxsdXN0cmF0aW9ucyBpbiBNYW4gVmlzaWJsZSBhbmQgCkludmlzaWJsZS4gSW4gdGhpcywgYW5kIGluIGFsbCBvdGhlciBjYXNlcyBvZiBmb3JtaW5nIHNoZWxsLCBhIGNsZWFyIG1lbnRhbCAKcGljdHVyZSBtdXN0IGJlIG1hZGUsIGFuZCB0aGUgd2hvbGUgb2YgdGhlIHBlcnNvbicgcyB3aWxsLXBvd2VyIG11c3QgYmUgCmNvbmNlbnRyYXRlZCBmb3IgYXQgbGVhc3Qgc29tZSBtaW51dGVzIHVwb24gdGhlIGRlZmluaXRlIGVmZm9ydCB0byBjcmVhdGUgdGhlIApuZWNlc3Nhcnkgc2hhcGUuIEl0IG11c3QgYWxzbyBiZSByZW1lbWJlcmVkIHRoYXQgc3VjaCBkZW5zaWZpY2F0aW9ucyBhcmUgdG8gYSAKY2VydGFpbiBleHRlbnQgdW5uYXR1cmFsOyB0aGF0IGlzIHRvIHNheSwgdGhleSBhcmUgYW4gYXJyYW5nZW1lbnQgb2YgbWF0dGVyIAp3aGljaCBpcyBub3QgdGhhdCwgbm9ybWFsbHkgY29udGVtcGxhdGVkIGluIHRoZSBzY2hlbWUgb2YgdGhpbmdzLCBhbmQgCmNvbnNlcXVlbnRseSB0aGVyZSBpcyBhIGNvbnN0YW50IHRlbmRlbmN5IGluIHRoZSB2ZWhpY2xlIGNvbmNlcm5lZCB0byByZXN1bWUgaXRzIApub3JtYWwgY29uZGl0aW9uLCB3aGljaCwgb2YgY291cnNlLCBtZWFucyBhIGNvbnN0YW50IHRlbmRlbmN5IHRvIGRpc2ludGVncmF0aW9uIAppbiB0aGUgc2hlbGwuIFRoZSBlZmZvcnQgb2Ygd2lsbCwgdGhlcmVmb3JlLCBtdXN0IG1ha2UgYSBkZWZpbml0ZSBpbXByZXNzaW9uLCAKc3VmZmljaWVudCB0byByZXNpc3QgZm9yIGF0IGxlYXN0IHNvbWUgaG91cnMgdGhpcyBnZW50bGUgYnV0IHBlcnNpc3RlbnQgZWZmb3J0IAphdCBkaXNpbnRlZ3JhdGlvbiwgb3RoZXJ3aXNlIHRoZSBzaGVsbCB3aWxsIGdyYWR1YWxseSBiZWNvbWUgcGVydmlvdXMgYW5kIApyYWdnZWQsIGFuZCBzbyBmYWlsIHRvIGZ1bGZpbCBpdHMgb2JqZWN0LiBBIHNoZWxsIHdoaWNoIGlzIHJlcXVpcmVkIGZvciBhbnkgCmxlbmd0aCBvZiB0aW1lIHNob3VsZCBiZSBmcmVxdWVudGx5IHJlbmV3ZWQsIGFzIHdpdGhvdXQgdGhhdCBwcm9jZXNzIGl0IHdpbGwgCnNvb24gY29sbGFwc2UuIAoKCjgyOC7CoMKgwqDCoMKgwqDCoApJbiBjb25uZWN0aW9uIHdpdGggdGhlIGFzdHJhbCBib2R5IHdlIG11c3QgYmVhciBpbiBtaW5kIHRoZSBzYW1lIApjb25zaWRlcmF0aW9uIHRvIHdoaWNoIEkgcmVmZXJyZWQgaW4gdGhlIGNhc2Ugb2YgdGhlIGV0aGVyaWMgYm9keS0tIHRoYXQgaWYgYSAKc2hlbGwgd2lsbCBrZWVwIG91dCB2aWJyYXRpb25zIGl0IHdpbGwgYWxzbyBrZWVwIHRoZW0gaW4uIFRoZSBzdHVkZW50IHdobyBtYWtlcyAKYW4gYXN0cmFsIHNoZWxsIHJvdW5kIGhpbXNlbGYgc2hvdWxkIHRoZXJlZm9yZSBiZSBjYXJlZnVsIHRvIGJ1aWxkIGl0IG9ubHkgb2YgCnRoZSBtYXRlcmlhbCBvZiB0aGUgbG93ZXIgc3ViLWRpdmlzaW9ucyBvZiB0aGUgYXN0cmFsLCBhcyBpdCBpcyBleGNsdXNpdmVseSB0aGlzIAptYXR0ZXIgd2hpY2ggcmVzcG9uZHMgdG8gdGhlIGxvdyBhbmQgdW5kZXNpcmFibGUgdmlicmF0aW9ucyBjb25uZWN0ZWQgd2l0aCAKc2Vuc3VhbGl0eSwgbWFsaWNlLCBoYXRyZWQsIGVudnkgYW5kIGFsbCBvdGhlciBzdWNoIGlnbm9ibGUgcGFzc2lvbnMuIFRoZSBmaW5lciAKZW1vdGlvbnMsIG9uIHRoZSBjb250cmFyeSwgYWx3YXlzIGV4cHJlc3MgdGhlbXNlbHZlcyB0aHJvdWdoIHRoZSBtYXR0ZXIgb2YgdGhlIApoaWdoZXIgc3ViZGl2aXNpb24uIEl0IGlzIHVubmVjZXNzYXJ5IHRoYXQgYW55IG1hdHRlciBvZiB0aGlzIGtpbmQgc2hvdWxkIGJlIAp1c2VkIGluIGEgc2hlbGwuIEluZGVlZCwgdGhlIGVmZmVjdHMgaWYgc3VjaCBtYXR0ZXIgd2VyZSB1c2VkIHdvdWxkIGJlIGVtaW5lbnRseSAKdW5zYXRpc2ZhY3RvcnksIGFzLCBmaXJzdCwgYSBtYW4gd291bGQga2VlcCBhd2F5IGZyb20gaGltc2VsZiBhbnkgY3VycmVudHMgb2YgCmZyaWVuZGx5IGZlZWxpbmcgd2hpY2ggbWlnaHQgYmUgc2VudCB0byBoaW0sIGFuZCBzZWNvbmRseSwgaGUgd291bGQgcmVuZGVyIApoaW1zZWxmIGZvciB0aGUgdGltZSBpbmNhcGFibGUgb2Ygc2VuZGluZyBvdXQgc2ltaWxhciBjdXJyZW50cyBvZiBhZmZlY3Rpb25hdGUgCmZlZWxpbmcgdG8gb3RoZXJzLiAKCgo4MjkuwqDCoMKgwqDCoMKgwqAKSXQgbWF5IGJlIGFza2VkIGhvdyBpdCBpcyBwb3NzaWJsZSBmb3IgdGhlIG9yZGluYXJ5IG1hbiBvciBldmVuIGZvciB0aGUgCnlvdW5nZXIgc3R1ZGVudCB0byBrbm93IHdoYXQga2luZCBvZiBhc3RyYWwgbWF0dGVyIGhlIGlzIGVtcGxveWluZyBpbiB0aGUgbWFraW5nIApvZiBoaXMgc2hlbGwuIFRoZSBhbnN3ZXIgaXMgdGhhdCB0aGF0IGlzIGFmdGVyIGFsbCBubyBtb3JlIGRpZmZpY3VsdCB0aGFuIHRoZSAKY29uY2VwdGlvbiBvZiBtYWtpbmcgYSBzaGVsbCBhdCBhbGwuIElmIGhlIGlzIHRvIG1ha2UgdGhlIHNoZWxsIG9mIGFzdHJhbCBtYXR0ZXIgCmhlIG11c3QgZmlyc3QgdGhpbmsgb2YgdGhlIGxpbWl0cyBvZiBoaXMgYXVyYSwgYW5kIHRoZW4gcHJvY2VlZCB0byBkZW5zaWZ5IHRoZSAKbWF0dGVyIGF0IGFsbCB0aG9zZSBwb2ludHMuIFRoZSBwcm9jZXNzIG1heSB0aGVyZWZvcmUgYmUgZGVzY3JpYmVkIGFzIGFuIAppbnRlbGxpZ2VudCB1c2Ugb2YgdGhlIGltYWdpbmF0aW9uOyBhbmQgdGhpcyBpbWFnaW5hdGlvbiBtYXkganVzdCBhcyB3ZWxsIGJlIApkaXJlY3RlZCB3aXRoIGEgbGl0dGxlIG1vcmUgdHJvdWJsZSB0byB0aGUgY29uY2VwdGlvbiB0aGF0IHRoZSBhc3RyYWwgYm9keSAKY29uc2lzdHMgb2Ygc2V2ZW4gZGVncmVlcyBvZiBtYXR0ZXIsIGRpZmZlcmluZyBpbiBkZW5zaXR5LiBUaGUgd2lsbCBzaG91bGQgYmUgCmRpcmVjdGVkIHRvIHNvcnRpbmcgb3V0IHRoZXNlLCBzZWxlY3Rpbmcgb25seSB0aGUgbWF0ZXJpYWwgb2YgKGxldCB1cyBzYXkpIHRoZSAKdGhyZWUgbG93ZXIgc3ViLXBsYW5lcywgYW5kIGZvcm1pbmcgdGhlIHNoZWxsIGV4Y2x1c2l2ZWx5IG9mIHRoYXQ7IGFuZCB0aG91Z2ggCnRoZSBzdHVkZW50IG1heSBiZSB1bmFibGUgdG8gc2VlIGNsYWlydm95YW50bHkgdGhlIHJlc3VsdCBvZiBoaXMgZWZmb3J0LCBoZSBuZWVkIApub3QgZG91YnQgdGhhdCBpdCB3aWxsIHByb2R1Y2UgaXRzIGVmZmVjdCwgYW5kIHRoYXQgbm8gdHlwZXMgb2YgbWF0dGVyIGJ1dCB0aG9zZSAKb2Ygd2hpY2ggaGUgdGhpbmtzIHdpbGwgYmUgZGlyZWN0bHkgaW5mbHVlbmNlZCBieSB0aGUgY3VycmVudHMgd2hpY2ggaGUgaXMgCmVuYWJsZWQgdG8gc2VuZCBmb3J0aC4gCgoKODMwLsKgwqDCoMKgwqDCoMKgClRIRSBNRU5UQUwgU0hFTEwgCgoKODMxLsKgwqDCoMKgwqDCoMKgClRoZSBzaGVsbCBtYWRlIHJvdW5kIHRoZSBtZW50YWwgYm9keSBkaWZmZXJzIGZyb20gdGhhdCBpbiB0aGUgYXN0cmFsIAp3b3JsZCBpbiB0aGF0IHRoZSBvYmplY3QgaXMgbm8gbG9uZ2VyIHRvIHByZXZlbnQgdW5kZXNpcmFibGUgZW1vdGlvbiwgYnV0IAp1bmRlc2lyYWJsZSB0aG91Z2h0LiBPbmNlIG1vcmUsIHRoZXJlIGFyZSB0aHJlZSBwcmluY2lwYWwgb2NjYXNpb25zIG9uIHdoaWNoIApzdWNoIGEgc2hlbGwgbWF5IGJlIHVzZWZ1bDogZmlyc3QsIGluIG1lZGl0YXRpb247IHNlY29uZGx5LCB3aGVuIHNsZWVwIGlzIAphcHByb2FjaGluZzsgdGhpcmRseSwgdW5kZXIgc3BlY2lhbCBjb25kaXRpb25zIHdoZXJlIHdpdGhvdXQgaXRzIGhlbHAgbG93ZXIgCnRob3VnaHRzIHdvdWxkIGJlIGxpa2VseSB0byBvYnRydWRlIHRoZW1zZWx2ZXMuIAoKCjgzMi7CoMKgwqDCoMKgwqDCoApUaGUgb2ZmaWNlIG9mIHRoZSBtZW50YWwgc2hlbGwgaW4gbWVkaXRhdGlvbiBpcyB0byBleGNsdWRlIHRoZSBtYXNzIG9mIApsb3dlciB0aG91Z2h0IHdoaWNoIGlzIHBlcnBldHVhbGx5IHBsYXlpbmcgYWJvdXQgaW4gdGhlIGF0bW9zcGhlcmUuIE5vIHNoZWxsIGNhbiAKcHJldmVudCB3YW5kZXJpbmcgdGhvdWdodHMgZnJvbSBhcmlzaW5nIHdpdGhpbiB0aGUgbWFuJyBzIG93biBtaW5kOyBidXQgbW9zdCBvZiAKb3VyIHRob3VnaHQtd2FuZGVyaW5nIGlzIGNhdXNlZCBieSB0aGUgaW1wYWN0IGZyb20gd2l0aG91dCBvZiBjYXN1YWwgZmxvYXRpbmcgCnRob3VnaHRzIHdoaWNoIGhhdmUgYmVlbiBsZWZ0IGFib3V0IGJ5IG90aGVyIHBlb3BsZSwgYW5kIHRoZSBpbnRydXNpb24gb2YgdGhlc2UgCmF0IGxlYXN0IGNhbiBiZSBwcmV2ZW50ZWQgYnkgYSBzaGVsbC4gQnV0IGhlcmUgYWdhaW4gaXQgaXMgYWR2aXNhYmxlIHRoYXQgb25seSAKdGhlIGxvd2VyIG1lbnRhbCBtYXR0ZXIgc2hvdWxkIGJlIGVtcGxveWVkIGluIHRoZSBtYWtpbmcgb2Ygc3VjaCBhIHNoZWxsLCBhcyAKb3RoZXJ3aXNlIGhlbHBmdWwgdGhvdWdodCBtaWdodCBiZSBrZXB0IG91dCwgb3IgdGhlIG1hbicgcyBvd24gdGhvdWdodCBtaWdodCBiZSAKaGFtcGVyZWQgYXMgaGUgcG91cmVkIGl0IGZvcnRoIHRvd2FyZHMgdGhlIE1hc3Rlci4gCgoKODMzLsKgwqDCoMKgwqDCoMKgCk1hbnkgcGVvcGxlIGZpbmQgdGhlbXNlbHZlcyB0cm91YmxlZCB3aXRoIHN0cmVhbXMgb2Ygd2FuZGVyaW5nIHRob3VnaHQgCndoZW4gdGhleSBhcmUgdHJ5aW5nIHRvIGZhbGwgYXNsZWVwOyBhIG1lbnRhbCBzaGVsbCB3aWxsIGRlbGl2ZXIgdGhlbSBmcm9tIHN1Y2ggCm9mIHRoZXNlIHRob3VnaHRzIGFzIGNvbWUgZnJvbSB3aXRob3V0LiBTdWNoIGEgc2hlbGwgbmVlZCBvbmx5IGJlIHRlbXBvcmFyeSwgCnNpbmNlIGFsbCB0aGF0IGlzIHJlcXVpcmVkIGlzIHBlYWNlIGZvciBhbiBpbnRlcnZhbCBzdWZmaWNpZW50IHRvIGFsbG93IHRoZSBtYW4gCnRvIGZhbGwgYXNsZWVwLiBUaGUgbWFuIHdpbGwgY2FycnkgYXdheSB3aXRoIGhpbSB0aGlzIHNoZWxsIG9mIG1lbnRhbCBtYXR0ZXIgCndoZW4gaGUgbGVhdmVzIGhpcyBwaHlzaWNhbCBib2R5LCBidXQgaXRzIHdvcmsgd2lsbCB0aGVuIGJlIGFjY29tcGxpc2hlZCwgc2luY2UgCnRoZSB3aG9sZSBvYmplY3Qgb2YgbWFraW5nIGl0IGlzIHRvIHBlcm1pdCBoaW0gdG8gbGVhdmUgdGhhdCBib2R5LiBUaGUgc3RyZWFtIG9mIAppZGxlIHRob3VnaHRzIG9yIG1lbnRhbCB3b3JyeSB3aWxsIHByb2JhYmx5IHJlYXNzZXJ0IGl0c2VsZiB3aGVuIHRoZSBzaGVsbCAKYnJlYWtzIHVwLCBidXQgYXMgdGhlIG1hbiB3aWxsIHRoZW4gYmUgYXdheSBmcm9tIGhpcyBwaHlzaWNhbCBicmFpbiB0aGlzIHdpbGwgCm5vdCBpbnRlcmZlcmUgd2l0aCB0aGUgcmVwb3NlIG9mIHRoZSBib2R5LiBTbyBsb25nIGFzIGhlIGlzIGluIGhpcyBwaHlzaWNhbCBib2R5IAp0aGUgbWVudGFsIGFjdGlvbiB3aWxsIGFmZmVjdCB0aGUgcGFydGljbGVzIG9mIHRoZSBicmFpbiBhbmQgcHJvZHVjZSB0aGVyZSBzdWNoIAphY3Rpdml0eSBhcyBtYXkgZWFzaWx5IG1ha2UgaXQgaW1wb3NzaWJsZSBmb3IgdGhlIG1hbiB0byBxdWl0IHRoZSBwaHlzaWNhbCAKdmVoaWNsZTsgYnV0IHdoZW4gb25jZSBoZSBpcyBhd2F5IGZyb20gdGhlIGxhdHRlciwgdGhlIHNhbWUgd29ycnkgb3Igd2FuZGVyaW5nIAp0aG91Z2h0IHdpbGwgbm90IGJyaW5nIGhpbSBiYWNrIHRvIGl0LiAKCgo4MzQuwqDCoMKgwqDCoMKgwqAKVGhlIHRoaXJkIGNhc2UgdG8gd2hpY2ggcmVmZXJlbmNlIGhhcyBiZWVuIG1hZGUgaXMgbGVzcyBzaW1wbGUuIEl0IG9jY3VycyAKbm90IGluZnJlcXVlbnRseSB0aGF0IGNlcnRhaW4gZ3JvdXBzIG9mIHRob3VnaHQsIHNvbWUgd2hvbGx5IGRlc2lyYWJsZSwgYW5kIHNvbWUgCmVxdWFsbHkgdW5kZXNpcmFibGUsIGFyZSBjbG9zZWx5IGxpbmtlZCB0b2dldGhlci4gVG8gdGFrZSB0aGUgZmlyc3QgZXhhbXBsZSAKd2hpY2ggY29tZXM6IGl0IGlzIHdlbGwga25vd24gdGhhdCBkZWVwIGRldm90aW9uIGFuZCBhIGNlcnRhaW4gZm9ybSBvZiAKc2Vuc3VhbGl0eSBhcmUgZnJlcXVlbnRseSBhbG1vc3QgaW5leHRyaWNhYmx5IG1pbmdsZWQuIEEgbWFuIHdobyBmaW5kcyBoaW1zZWxmIAp0cm91YmxlZCBieSB0aGlzIHVucGxlYXNhbnQgY29uanVuY3Rpb24gbWF5IHJlYXAgdGhlIGJlbmVmaXQgb2YgdGhlIGRldm90aW9uIAp3aXRob3V0IHN1ZmZlcmluZyBmcm9tIHRoZSBpbGwgZWZmZWN0cyBvZiB0aGUgc2Vuc3VhbGl0eSwgYnkgc3Vycm91bmRpbmcgaGlzIAptZW50YWwgYm9keSB3aXRoIGEgcmlnaWQgc2hlbGwgc28gZmFyIGFzIGl0cyBsb3dlciBzdWJkaXZpc2lvbnMgYXJlIGNvbmNlcm5lZCwgCmZvciBpbiB0aGlzIHdheSBoZSB3aWxsIGVmZmVjdHVhbGx5IHNodXQgb3V0IHRoZSBsb3dlciBpbmZsdWVuY2VzIHdoaWxlIHN0aWxsIAphbGxvd2luZyB0aGUgaGlnaGVyIHRvIHBsYXkgdXBvbiBoaW0gdW5oaW5kZXJlZC4gVGhpcyBpcyBidXQgb25lIGV4YW1wbGUgb2YgYSAKcGhlbm9tZW5vbiBvZiB3aGljaCB0aGVyZSBhcmUgbWFueSB2YXJpZXRpZXMgaW4gdGhlIG1lbnRhbCB3b3JsZC4gCgoKODM1LsKgwqDCoMKgwqDCoMKgClRIRSBCRVNUIFVTRSBPRiBBIFNIRUxMIAoKCjgzNi7CoMKgwqDCoMKgwqDCoApXaGVuIGEgc2hlbGwgaGFzIHRvIGJlIG1hZGUsIHRoZSBtZXRob2Qgd2hpY2ggSSBoYXZlIGluZGljYXRlZCBhYm92ZSBpcyAKcHJvYmFibHkgdGhlIGVhc2llc3QgYnkgd2hpY2ggdG8gbWFrZSBpdCwgYnV0IHRoZXJlIHN0aWxsIHJlbWFpbnMgYSBmdXJ0aGVyIApjb25zaWRlcmF0aW9uLS0gdGhlIHF1ZXN0aW9uIGFzIHRvIHdoZXRoZXIgb24gdGhlIHdob2xlIHRoZSBzaGVsbCBpcyBhbiAKdW5kZXNpcmFibGUgdGhpbmcuIEl0IGhhcyBpdHMgdXNlcy0tIGluZGVlZCBpdCBpcyBlbWluZW50bHkgbmVjZXNzYXJ5IGFzIGFwcGxpZWQgCnRvIG90aGVyIHBlb3BsZS4gVGhlIEludmlzaWJsZSBIZWxwZXIgZnJlcXVlbnRseSBmaW5kcyBpdCBpbnZhbHVhYmxlIHdoZW4gaGUgaXMgCnRyeWluZyB0byByZWxpZXZlIHNvbWUgcG9vciBoYXJhc3NlZCBzb3VsIHdobyBoYXMgbm90IGFzIHlldCB0aGUgc3RyZW5ndGggdG8gCnByb3RlY3QgaGltc2VsZiwgZWl0aGVyIGFnYWluc3QgZGVmaW5pdGUgYW5kIGludGVudGlvbmFsIGF0dGFja3MgZnJvbSB3aXRob3V0LCAKb3IgYWdhaW5zdCB0aGUgZXZlci1wcmVzZW50IHN3aXJsIG9mIHRoZSB3ZWFyaXNvbWUgd2FuZGVyaW5nIHRob3VnaHQuIEJ1dCB0byAKdGhpbmsgb2YgdXNpbmcgYSBzaGVsbCBmb3Igb25lc2VsZiBpcyB0byBhIGNlcnRhaW4gZXh0ZW50IGEgY29uZmVzc2lvbiBvZiAKd2Vha25lc3Mgb3Igb2YgZGVmZWN0LCBmb3IgdGhlcmUgc2VlbXMgbGl0dGxlIGRvdWJ0IHRoYXQsIGlmIHdlIHdlcmUgYWxsIHRoYXQgd2UgCm91Z2h0IHRvIGJlLCB3ZSBzaG91bGQgbmVlZCBubyBwcm90ZWN0aW9uIG9mIHRoaXMgbmF0dXJlLiAKCgo4MzcuwqDCoMKgwqDCoMKgwqAKQSBCRUFVVElGVUwgU1RPUlkgCgoKODM4LsKgwqDCoMKgwqDCoMKgCkEgYmVhdXRpZnVsIGxpdHRsZSBzdG9yeSBmcm9tIHRoZSB0cmFkaXRpb25zIG9mIHRoZSBDaHJpc3RpYW4gQ2h1cmNoIAppbGx1c3RyYXRlcyB0aGlzIHZlcnkgaGFwcGlseS4gSXQgaXMgcmVjb3JkZWQgdGhhdCBzb21ld2hlcmUgaW4gdGhlIGRlc2VydCBhdCAKdGhlIGJhY2sgb2YgQWxleGFuZHJpYSB0aGVyZSB3YXMgb25jZSBhIG1vbmFzdGVyeSB3aG9zZSBhYmJvdCBwb3NzZXNzZWQgdGhlIApwb3dlciBvZiBjbGFpcnZveWFuY2UuIEFtb25nIGhpcyBtb25rcyB0aGVyZSB3ZXJlIHR3byB5b3VuZyBtZW4gd2hvIGhhZCBhbiAKZXNwZWNpYWwgcmVwdXRhdGlvbiBmb3IgcHVyaXR5IGFuZCBob2xpbmVzcy0tIHF1YWxpdGllcyB3aGljaCBvdWdodCB0byBiZSBjb21tb24gCnRvIGFsbCBtb25rcywgYnV0IHNvbWV0aW1lcyBhcmUgbm90LiBPbmUgZGF5IHdoZW4gdGhleSB3ZXJlIHNpbmdpbmcgaW4gdGhlIGNob2lyIAppdCBvY2N1cnJlZCB0byB0aGUgYWJib3QgdG8gdHVybiBoaXMgY2xhaXJ2b3lhbnQgZmFjdWx0eSB1cG9uIHRoZXNlIHR3byB5b3VuZyAKbWVuLCBpbiB0aGUgZW5kZWF2b3VyIHRvIGRpc2NvdmVyIGhvdyB0aGV5IGNvbnRyaXZlZCB0byBwcmVzZXJ2ZSB0aGlzIGVzcGVjaWFsIApwdXJpdHkgYW1pZHN0IHRoZSB0ZW1wdGF0aW9ucyBvZiBkYWlseSBsaWZlLiBTbyBoZSBsb29rZWQgYXQgdGhlIGZpcnN0IHlvdW5nIG1hbiAKYW5kIHNhdyB0aGF0IGhlIGhhZCBzdXJyb3VuZGVkIGhpbXNlbGYgd2l0aCBhIHNoZWxsIGFzIG9mIGdsaXR0ZXJpbmcgY3J5c3RhbCwgCmFuZCB0aGF0IHdoZW4gdGhlIHRlbXB0aW5nIGRlbW9ucyAoaW1wdXJlIHRob3VnaHQtZm9ybXMgd2Ugc2hvdWxkIGNhbGwgdGhlbSkgCmNhbWUgcnVzaGluZyBhdCBoaW0sIHRoZXkgc3RydWNrIGFnYWluc3QgdGhpcyBzaGVsbCwgYW5kIGZlbGwgYmFjayB3aXRob3V0IAppbmp1cmluZyBoaW0sIHNvIHRoYXQgaGUgcmVtYWluZWQgaW5zaWRlIGhpcyBzaGVsbCwgY2FsbSBhbmQgY29sZCBhbmQgcHVyZS4KVGhlbiB0aGUgYWJib3QgbG9va2VkIGF0IHRoZSBzZWNvbmQgeW91bmcgbW9uaywgYW5kIGhlIHNhdyB0aGF0IGhlIGhhZCAKYnVpbHQgbm8gc2hlbGwgcm91bmQgaGltc2VsZiwgYnV0IHRoYXQgaGlzIGhlYXJ0IHdhcyBzbyBmdWxsIG9mIHRoZSBsb3ZlIG9mIEdvZCAKdGhhdCBpdCB3YXMgcGVycGV0dWFsbHkgcmFkaWF0aW5nIGZyb20gaGltIGluIGFsbCBkaXJlY3Rpb25zIGluIHRoZSBzaGFwZSBvZiAKdG9ycmVudHMgb2YgbG92ZSBmb3IgaGlzIGZlbGxvdyBtZW4sIHNvIHRoYXQgd2hlbiB0aGUgdGVtcHRpbmcgZGVtb25zIHNwcmFuZyBhdCAKaGltIHdpdGggZmVsbCBpbnRlbnQgdGhleSB3ZXJlIGFsbCB3YXNoZWQgYXdheSBpbiB0aGF0IG1pZ2h0eSBvdXRwb3VyaW5nIHN0cmVhbSwgCmFuZCBzbyBoZSBhbHNvIHJlbWFpbmVkIHB1cmUgYW5kIHVuZGVmaWxlZC4gQW5kIGl0IGlzIHJlY29yZGVkIHRoYXQgdGhlIGFiYm90IApzYWlkIHRoYXQgdGhlIHNlY29uZCBtb25rIHdhcyBuZWFyZXIgdG8gdGhlIGtpbmdkb20gb2YgaGVhdmVuIHRoYW4gdGhlIGZpcnN0LgoKCjgzOS7CoMKgwqDCoMKgwqDCoApUSEUgQkVUVEVSIFdBWSAKCgo4NDAuwqDCoMKgwqDCoMKgwqAKSXQgbWF5IGJlIHRoYXQgbWFueSBvZiB1cyBoYXZlIG5vdCB5ZXQgcmVhY2hlZCB0aGUgbGV2ZWwgb2YgdGhpcyBzZWNvbmQgCnlvdW5nIG1vbms7IGJ1dCBhdCBsZWFzdCB0aGUgc3Rvcnkgc2V0cyBiZWZvcmUgdXMgYSBoaWdoZXIgaWRlYWwgdGhhbiB0aGF0IG9mIAptZXJlIHNlbGYtcHJvdGVjdGlvbiwgYW5kIHdlIG1heSBsZWFybiBzb21ldGhpbmcgb2YgYSBsZXNzb24gZnJvbSBoaW0uIFdlIG11c3QsIApob3dldmVyLCBjYXJlZnVsbHkgZ3VhcmQgb3Vyc2VsdmVzIGFnYWluc3QgdGhlIGZlZWxpbmcgb2Ygc3VwZXJpb3JpdHkgb3IgCnNlcGFyYXRlbmVzcy4gV2UgbXVzdCBhdm9pZCB0aGUgZGFuZ2VyIG9mIHRoaW5raW5nIHRvbyBtdWNoIGFib3V0IHRoZSBzZWxmLiBXZSAKbXVzdCBrZWVwIG91cnNlbHZlcyBjb25zdGFudGx5IGluIGEgY29uZGl0aW9uIG9mIG91dHBvdXJpbmc7IHdlIG11c3QgYmUgYWN0aXZlLCAKbm90IHBhc3NpdmUuIFdoZW4gd2UgbWVldCBhIHBlcnNvbiBvdXIgYXR0aXR1ZGUgc3VyZWx5IHNob3VsZCBiZSBub3Q6IO+/vUhvdyBjYW4gSSAKZ3VhcmQgbXlzZWxmIGFnYWluc3QgeW91P++/vSBidXQgcmF0aGVyOiDvv71XaGF0IGNhbiBJIGRvIGZvciB5b3U/77+9IEl0IGlzIHRoaXMgCmxhdHRlciBhdHRpdHVkZSB3aGljaCBjYWxscyBpbnRvIHBsYXkgdGhlIGhpZ2hlciBmb3JjZXMsIGJlY2F1c2UgaXQgcmVmbGVjdHMgdGhlIAphdHRpdHVkZSBvZiB0aGUgU29sYXIgRGVpdHkuIEl0IGlzIHdoZW4gd2UgZ2l2ZSB0aGF0IHdlIGJlY29tZSBmaXQgdG8gcmVjZWl2ZSwgCnRoYXQgd2UgYXJlIGNoYW5uZWxzIG9mIHRoZSBtaWdodHkgZm9yY2Ugb2YgdGhlIERlaXR5IEhpbXNlbGYuIAoKCjg0MS7CoMKgwqDCoMKgwqDCoApXZSBuZWVkIG5vdCBldmVuIHRoaW5rIHRvbyBtdWNoIGFib3V0IHBlcnNvbmFsIHByb2dyZXNzLiBJdCBpcyBwb3NzaWJsZSAKdG8gYmUgc28gZXhjbHVzaXZlbHkgb2NjdXBpZWQgd2l0aCB0aGUgaWRlYTog77+9SG93IGNhbiBJIGdldCBvbj/vv70gYXMgdG8gZm9yZ2V0IAp0aGUgZXZlbiBtb3JlIGltcG9ydGFudCBxdWVzdGlvbjog77+9V2hhdCBjYW4gSSBkbyB0byBoZWxwP++/vSBBbmQgdGhlcmUgYXJlIHNvbWUgCmdvb2QgYnJvdGhlcnMsIGV2ZW4gYW1vbmcgdGhlIGJlc3QgdGhhdCB3ZSBoYXZlLCB3aG8gYXJlIHNvIHBlcnBldHVhbGx5IApleGFtaW5pbmcgdGhlbXNlbHZlcyBhcyB0byB0aGVpciBwcm9ncmVzcyBhcyB0byByZW1pbmQgb25lIGZvcmNpYmx5IG9mIHRob3NlIApjaGlsZHJlbiB3aG8sIHdoZW4gc3BlY2lhbCBwbG90cyBvZiBnYXJkZW4tZ3JvdW5kIGFyZSBnaXZlbiB0byB0aGVtLCBhcmUgCmNvbnN0YW50bHkgcHVsbGluZyB1cCB0aGVpciBwbGFudHMgdG8gc2VlIGhvdyB0aGUgcm9vdHMgYXJlIGdyb3dpbmcuIFRoaXMgCm92ZXItYW54aWV0eSBpcyBhIHJlYWwgZGFuZ2VyOyBJIGtub3cgbWFueSB3aG8sIHdoaWxlIGRvaW5nIHRoZSBtb3N0IGJlYXV0aWZ1bCAKYWx0cnVpc3RpYyBhY3Rpb25zLCBjYW4geWV0IG5ldmVyIGZlZWwgcXVpdGUgc3VyZSB0aGF0IHRoZWlyIGludGVudGlvbnMgYXJlIAp0cnVseSB1bnNlbGZpc2gsIHNpbmNlIHRoZXkgYWx3YXlzIGRvdWJ0IHdoZXRoZXIgaXQgaXMgbm90IHBlcmhhcHMgYSBzZWxmaXNoIApkZXNpcmUgdG8gYXZvaWQgdGhlIGRpc2NvbWZvcnQgY2F1c2VkIGJ5IHNlZWluZyBwYWluIGluIG90aGVycyB3aGljaCBtb3ZlcyB0aGVtIAp0byBhY3Rpb24h

Nessun commento:

Posta un commento

[AL CORPUS] Occult Chemistry [2/2]

VGhlc2UgdW5pdHMgYXJlIGFsbCBhbGlrZSwgc3BoZXJpY2FsIGFuZCBhYnNvbHV0ZWx5IHNpbXBsZSBpbiAKY29uc3RydWN0aW9uLiBUaG91Z2ggdGhleSBhcmUgdGhlIGJhc2lzIG9m...