From mboxrd@z Thu Jan 1 00:00:00 1970 From: Kevin Grittner Subject: Re: [HACKERS] [OSSTEST PATCH 0/1] PostgreSQL db: Retry on constraint violation [and 2 more messages] Date: Wed, 14 Dec 2016 08:26:03 -0600 Message-ID: References: <1481307991-16971-1-git-send-email-ian.jackson@eu.citrix.com> <22606.47105.549023.301281@mariner.uk.xensource.com> <22607.56276.807567.924144@mariner.uk.xensource.com> <22608.6345.97849.783099@mariner.uk.xensource.com> <22608.14118.291149.821376@mariner.uk.xensource.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cHAVV-0001j5-Ro for xen-devel@lists.xenproject.org; Wed, 14 Dec 2016 14:26:10 +0000 Received: by mail-oi0-f68.google.com with SMTP id v84so2704825oie.2 for ; Wed, 14 Dec 2016 06:26:05 -0800 (PST) In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Robert Haas Cc: xen-devel@lists.xenproject.org, Ian Jackson , Thomas Munro , "pgsql-hackers@postgresql.org" List-Id: xen-devel@lists.xenproject.org T24gV2VkLCBEZWMgMTQsIDIwMTYgYXQgMTI6NDQgQU0sIFJvYmVydCBIYWFzIDxyb2JlcnRtaGFh c0BnbWFpbC5jb20+IHdyb3RlOgo+IE9uIFR1ZSwgRGVjIDEzLCAyMDE2IGF0IDE6MDAgUE0sIElh biBKYWNrc29uIDxpYW4uamFja3NvbkBldS5jaXRyaXguY29tPiB3cm90ZToKCj4gU2F5aW5nIHRo YXQgYSBzZXQgb2YgdHJhbnNhY3Rpb25zIGFyZSBzZXJpYWxpemFibGUgaXMgZXF1aXZhbGVudCB0 bwo+IHRoZSBzdGF0ZW1lbnQgdGhhdCB0aGVyZSBpcyBzb21lIHNlcmlhbCBvcmRlciBvZiBleGVj dXRpb24gd2hpY2ggd291bGQKPiBoYXZlIHByb2R1Y2VkIHJlc3VsdHMgZXF1aXZhbGVudCB0byB0 aGUgYWN0dWFsIHJlc3VsdHMuICBUaGF0IGlzLAo+IHRoZXJlIG11c3QgYmUgYXQgbGVhc3Qgb25l IHNjaGVkdWxlIChUMSwgLi4uLCBUbikgc3VjaCB0aGF0IHJ1bm5pbmcKPiB0aGUgdHJhbnNhY3Rp b25zIG9uZSBhZnRlciBhbm90aGVyIGluIHRoYXQgb3JkZXIgd291bGQgaGF2ZSBwcm9kdWNlZAo+ IHRoZSBzYW1lIHJlc3VsdHMgdGhhdCB3ZXJlIG9idGFpbmVkIGJ5IHJ1bm5pbmcgdGhlbSBjb25j dXJyZW50bHkuCj4gQW55IHRyYW5zYWN0aW9ucyB0aGF0IHJvbGwgYmFjayB3aGV0aGVyIGR1ZSB0 byBzZXJpYWxpemF0aW9uIGFub21hbGllcwo+IG9yIG1hbnVhbCB1c2VyIGludGVydmVudGlvbiBv ciBhbnkgb3RoZXIgcmVhc29uIGFyZSBub3QgcGFydCBvZiB0aGUKPiBzY2hlZHVsZSwgd2hpY2gg Y29uc2lkZXJzIG9ubHkgc3VjY2Vzc2Z1bGx5IGNvbW1pdHRlZCB0cmFuc2FjdGlvbnMuCj4gVGhl IHJvbGxlZC1iYWNrIHRyYW5zYWN0aW9ucyBlZmZlY3RpdmVseSBkaWRuJ3QgaGFwcGVuLCBhbmQK PiBzZXJpYWxpemFiaWxpdHkgYXMgYSBjb25jZXB0IG1ha2VzIG5vIGNsYWltIGFib3V0IHRoZSBi ZWhhdmlvciBvZiBzdWNoCj4gdHJhbnNhY3Rpb25zLiAgVGhhdCdzIG5vdCBhIFBvc3RncmVTUUwg dGhpbmc6IHRoYXQncyBkYXRhYmFzZSB0aGVvcnkuCgpSaWdodC4gIFRoYXQgc2FpZCwgd2l0aCBT MlBMJ3MgcmVsaWFuY2Ugb24gYmxvY2tpbmcsIGl0IGNhbiBwcm92aWRlCmNlcnRhaW4gZ3VhcmFu dGVlcyB0aGF0IGFyZSBub3QgcmVxdWlyZWQgYnkgdGhlIFNRTCBzdGFuZGFyZCBub3IgYnkKbm9y bWFsIGRlZmluaXRpb25zIG9mIHNlcmlhbGl6YWJsZSB0cmFuc2FjdGlvbnMuCigxKSAgVGhlIGVm ZmVjdGl2ZSBvcmRlciBvZiBleGVjdXRpb24gd2lsbCBtYXRjaCBjb21taXQgb3JkZXIgb2YKc3Vj Y2Vzc2Z1bGx5IGNvbW1pdHRlZCB0cmFuc2FjdGlvbnMuICBCb3RoIHRoZSBTUUwgc3RhbmRhcmQg YW5kIHRoZQptb3N0IGRlZmluaXRpb25zIG9mIHNlcmlhbGl6YWJsZSB0cmFuc2FjdGlvbnMgbWVy ZWx5IHJlcXVpcmUgdGhhdAp0aGVyZSBpcyAqc29tZSogb3JkZXIgb2YgdHJhbnNhY3Rpb25zIHdo aWNoIHByb3ZpZGVzIHRoZSBzYW1lCmVmZmVjdHMgYXMgaGF2aW5nIHJ1biB0aGUgdHJhbnNhY3Rp b25zIG9uZSBhdCBhIHRpbWUgaW4gdGhhdCBvcmRlci4KKDIpICBFdmVuIHRyYW5zYWN0aW9ucyB0 ZXJtaW5hdGVkIHRvIHJlc29sdmUgZGVhZGxvY2tzIG5ldmVyIHNob3cKc2VyaWFsaXphdGlvbiBh bm9tYWxpZXMgYmVmb3JlIGJlaW5nIGNhbmNlbGVkLgoKUzJQTCB3YXMgdGhlIG1vc3QgY29tbW9u IHRlY2huaXF1ZSBmb3IgaW1wbGVtZW50aW5nIHNlcmlhbGl6YWJsZQp0cmFuc2FjdGlvbnMgZm9y IGEgbG9uZyB0aW1lLCBhbmQgc29tZSBoYXZlIGNvbWUgdG8gdGhpbmsgdGhhdCBpdHMKZ3VhcmFu dGVlcyBzaG91bGQgYWx3YXlzIGJlIHByb3ZpZGVkLiAgVGhlIHByb2JsZW0gaXMgdGhhdCBpbiBt b3N0CmNvbW1vbiB3b3JrbG9hZHMgUzJQTCBwZXJmb3JtcyBmYXIgd29yc2UgdGhhbiBzb21lIG90 aGVyCnRlY2huaXF1ZXMsIGluY2x1ZGluZyB0aGUgU1NJIHRlY2huaXF1ZSB1c2VkIGJ5IFBvc3Rn cmVTUUwsIGV2ZW4Kd2hlbiB0aGUgbmVlZCB0byBkaXNjYXJkIHJlc3VsdHMgZnJvbSBmYWlsZWQg dHJhbnNhY3Rpb25zIGlzCmNvbnNpZGVyZWQuICBFc3NlbnRpYWxseSwgdGhlIHBvc2l0aW9uIElh biBoYXMgYmVlbiB0YWtpbmcgaXMgdGhhdApQb3N0Z3JlU1FMIHNob3VsZCBwcm92aWRlICB0aGUg Z3VhcmFudGVlIG9mICgyKSBhYm92ZS4gIEFzIGZhciBhcyBJCmNhbiBzZWUsIHRoYXQgd291bGQg cmVxdWlyZSB1c2luZyBTMlBMIC0tIHNvbWV0aGluZyB0aGUgY29tbXVuaXR5CnJpcHBlZCBvdXQg b2YgUG9zdGdyZVNRTCBiZWNhdXNlIG9mIGl0cyBob3JyaWJsZSBwZXJmb3JtYW5jZSBhbmQKaGFz IHJlZnVzZWQgdG8gY29uc2lkZXIgcmVzdG9yaW5nIChmb3IgZ29vZCByZWFzb24sIElNTykuCgo+ IEhvd2V2ZXIsIGluIHByYWN0aWNlLCB0aGUgc2NlbmFyaW8gdGhhdCB5b3UgbWVudGlvbiBzaG91 bGQgZ2VuZXJhbGx5Cj4gd29yayBmaW5lIGluIFBvc3RncmVTUUwsIEkgdGhpbmsuICBJZiBUIHBl cmZvcm1lZCBhbnkgd3JpdGVzLCB0aGUKPiByb2xsYmFjayB0aHJvd3MgdGhlbSBhd2F5LCBzbyBp bWFnaW5lIHJlbW92aW5nIHRoZSBhY3R1YWwgVCBmcm9tIHRoZQo+IG1peCBhbmQgcmVwbGFjaW5n IGl0IHdpdGggYSBzdWJzdGl0dXRlIHZlcnNpb24gVCcgd2hpY2ggcGVyZm9ybXMgdGhlCj4gc2Ft ZSByZWFkcyBidXQgbm8gd3JpdGVzIGFuZCB0aGVuIHRyaWVzIHRvIENPTU1JVCB3aGVyZSBUIHRy aWVkIHRvCj4gUk9MTEJBQ0suICBUJyB3aWxsIHN1Y2NlZWQsIGJlY2F1c2Ugd2UgbmV2ZXIgcm9s bCBiYWNrIGEgcmVhZC1vbmx5Cj4gdHJhbnNhY3Rpb24gYXQgY29tbWl0IHRpbWUuCgpIdWgsIEkg aGFkIHRvIHRoaW5rIGFib3V0IHRoYXQgZm9yIGEgbWludXRlLCBidXQgeW91IGFyZSByaWdodAph Ym91dCBuZXZlciByb2xsaW5nIGJhY2sgYSByZWFkLW9ubHkgdHJhbnNhY3Rpb24gYXQgY29tbWl0 IHRpbWUKKGV4Y2VwdCBwb3NzaWJseSBmb3IgYSBwcmVwYXJlZCB0cmFuc2FjdGlvbiAtLSBJIHdv dWxkIGhhdmUgdG8gbG9vawphdCB0aGF0IG1vcmUgY2xvc2VseSkuICBUaGUgcmVhc29uIGlzIHRo YXQgdG8gaGF2ZSBhIHNlcmlhbGl6YXRpb24KZmFpbHVyZSB1bmRlciBTU0kgd2UgbXVzdCBoYXZl IGEgImRhbmdlcm91cyBzdHJ1Y3R1cmUiIChvZiBhIHBpdm90CihUcGl2b3QpIHdpdGggYm90aCBh IHJ3LWRlcGVuZGVuY3kgaW4gKFRpbikgYW5kIGEgcnctZGVwZW5kZW5jeSBvdXQKKFRvdXQpKSBh bmQgVG91dCBtdXN0IGhhdmUgY29tbWl0dGVkIChhbmQgY29tbWl0dGVkIGZpcnN0KS4gSWYKVHBp dm90IGlzIHN0aWxsIGFjdGl2ZSwgd2Ugd2lsbCBjYW5jZWwgaXQsIGJlY2F1c2UgVGluLCBpZiBp dCB3ZXJlCnRvIGJlIGNhbmNlbGVkIGFuZCBwZXJmb3JtIGFuIGltbWVkaWF0ZSByZXRyeSwgY291 bGQgaGl0IHRoZSBleGFjdApzYW1lIHByb2JsZW0sIGFuZCBiZSBjYW5jZWxlZCBhZ2FpbiBiYXNl ZCBvbiBjb25mbGljdHMgd2l0aCB0aGUKZXhhY3Qgc2FtZSBvdGhlciB0cmFuc2FjdGlvbnMuICBX ZSBkb24ndCB3YW50IHRvIGJ1cm4gcmVzb3VyY2VzCnJlcGVhdGluZyB0cmFuc2FjdGlvbnMgd2l0 aCBubyBwcm9ncmVzcyBtYWRlLiAgU28gdGhlIG9ubHkgdGltZSB0aGUKcmVhZC1vbmx5IHRyYW5z YWN0aW9uIGNhbiBiZSBjYW5jZWxlZCBpcyB3aGVuIFRvdXQgYW5kIFRwaXZvdCBhcmUKcnVubmlu ZyBjb25jdXJyZW50bHksIFRvdXQgY29tbWl0cywgVHBpdm90IGRldmVsb3BzIGEgcnctZGVwZW5k ZW5jeQp0byBUb3V0IChlaXRoZXIgYmVmb3JlIG9yIGFmdGVyIHRoZSBjb21taXQgb2YgVG91dCks IFRpbiBzdGFydHMKKGFmdGVyIHRoZSBjb21taXQgb2YgVG91dCksIFRwaXZvdCBjb21taXRzIGJl Zm9yZSBUaW4gZGV2ZWxvcHMgYQpydy1kZXBlbmRlbmN5IHdpdGggaXQgKG90aGVyd2lzZSBUcGl2 b3Qgd291bGQgYmUgdGhlIG9uZSBjYW5jZWxlZCksCmFuZCB0aGVuIFRpbiBkZXZlbG9wcyBhIHJ3 LWRlcGVuZGVuY3kgdG8gVHBpdm90LiAgVGhhdCBkZXBlbmRlbmN5CnNob3VsZCBiZSByZWNvZ25p emVkIHdoZW4gaXQgaXMgZGV2ZWxvcGVkLCBjYXVzaW5nIFRpbiB0byBiZQpjYW5jZWxlZCAtLSBz byB0aGUgY29tbWl0IG9mIFRpbiBzaG91bGQgbmV2ZXIgZ2V0IHRoZSBzZXJpYWxpemF0aW9uCmZh aWx1cmUuCgo+IElmIGl0IHdlcmUgdG8gZmFpbCwgaXQgd291bGQgaGF2ZSB0byBmYWlsICp3aGls ZSBwZXJmb3JtaW5nIG9uZQo+IG9mIHRoZSByZWFkcyosIG5vdCBsYXRlci4KClllYWgsIHRoYXQn cyB0aGUgY29uY2lzZSBzdGF0ZW1lbnQgb2Ygd2hhdCBteSBsZW5ndGh5IGV4cGxhbmF0aW9uCmFi b3ZlIHByb3Zlcy4gIDstKQoKPiBCdXQgaW1hZ2luZSBhIGh5cG90aGV0aWNhbCBkYXRhYmFzZSBz eXN0ZW0gaW4gd2hpY2ggYW5vbWFsaWVzIGFyZQo+IG5ldmVyIGRldGVjdGVkIHVudGlsIGNvbW1p dCB0aW1lLiAgV2Ugc29tZWhvdyB0cmFjayB0aGUgZ2xvYmFsCj4gbXVzdC1oYXBwZW4tYmVmb3Jl IGdyYXBoIGFuZCByZWZ1c2UgdGhlIGNvbW1pdCBvZiBhbnkgdHJhbnNhY3Rpb24KPiB3aGljaCB3 aWxsIGNyZWF0ZSBhIGN5Y2xlLgoKWW91IGhhdmUganVzdCBkZXNjcmliZWQgb3B0aW1pc3RpYyBj b25jdXJyZW5jeSBjb250cm9sIChPQ0MpLCB3aGljaApoYXMgYmVlbiB1c2VkLCBhbHRob3VnaCBu b3QgaW4gYW55IHJlYWxseSBwb3B1bGFyIERCTVMgc3lzdGVtcyBJCmNhbiB0aGluayBvZi4gIEl0 IGNlcnRhaW5seSBoYXMgZW5qb3llZCBhIHJlc3VyZ2VuY2UgaW4gc29tZSBPUk1zLAp0aG91Z2gg LS0gaW1wbGVtZW50ZWQgb3V0c2lkZSB0aGUgREJNUy4KCj4gTGV0J3MgYWxzbyBzdXBwb3NlIHRo YXQgdGhpcyBzeXN0ZW0gdXNlcwo+IHNuYXBzaG90cyB0byBpbXBsZW1lbnQgTVZDQy4gIEluIHN1 Y2ggYSBzeXN0ZW0sIHJlYWQtb25seSB0cmFuc2FjdGlvbnMKPiB3aWxsIHNvbWV0aW1lcyBmYWls IGF0IGNvbW1pdCB0aW1lIGlmIHRoZXkndmUgc2VlbiBhIHZpZXcgb2YgdGhlIHdvcmxkCj4gdGhh dCBpcyBpbmNvbnNpc3RlbnQgd2l0aCB0aGUgb25seSByZW1haW5pbmcgcG9zc2libGUgc2VyaWFs Cj4gc2NoZWR1bGVzLiAgRm9yIGV4YW1wbGUsIHN1cHBvc2UgVDEgdXBkYXRlcyBBIC0+IEEnIGFu ZCByZWFkcyBCLgo+IENvbmN1cnJlbnRseSwgVDIgdXBkYXRlcyBCIC0+IEInOyB0aHVzLCBUMSBt dXN0IHByZWNlZGUgVDIuICBOZXh0LCBUMgo+IGNvbW1pdHMuCgpJbiB0aGlzLCBUMSBpcyBUcGl2 b3QgYW5kIFQyIGlzIFRvdXQgZnJvbSBteSBhYm92ZSBkaXNjdXNzaW9uLgoKPiBOb3csIFQzIGJl Z2lucyBhbmQgcmVhZHMgQicsIHNvIHRoYXQgVDIgbXVzdCBwcmVjZWRlIFQzLgo+IE5leHQgVDEg Y29tbWl0cy4gIFQzLCB3aGljaCB0b29rIGl0cyBzbmFwc2hvdCBiZWZvcmUgdGhlIGNvbW1pdCBv ZiBUMSwKPiBub3cgcmVhZHMgQS4gIFRodXMgVDMgaGFzIHRvIHByb2NlZWQgVDEuICBUaGF0J3Mg YSBjeWNsZSwgc28gVDMgd29uJ3QKPiBiZSBhbGxvd2VkIHRvIGNvbW1pdCwKClllcywgYWxsIHRo ZSBjb25kaXRpb25zIGRlc2NyaWJlZCBhYm92ZSBhcmUgbWF0Y2hlZCBoZXJlLgoKPiBidXQgeWV0 IGl0J3MgZG9uZSBhIGNvdXBsZSBvZiByZWFkcyBhbmQgaGFzbid0Cj4gZmFpbGVkIHlldC4uLiAg YmVjYXVzZSBvZiBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwgb2YgdGhlIHN5c3RlbS4KPiBUaGF0 J3MgcHJvYmFibHkgYW5ub3lpbmcgZnJvbSBhIHVzZXIgcGVyc3BlY3RpdmUgLS0gaWYgYSB0cmFu c2FjdGlvbgo+IGlzIGNlcnRhaW5seSBnb2luZyB0byBmYWlsIHdlJ2QgbGlrZSB0byByZXBvcnQg dGhlIGZhaWx1cmUgYXMgZWFybHkgYXMKPiBwb3NzaWJsZSAtLSBhbmQgaXQncyBwcm9iYWJseSBj cnVzaGluZ2x5IHNsb3csIGJ1dCBhY2NvcmRpbmcgdG8gbXkKPiB1bmRlcnN0YW5kaW5nIGl0J3Mg dW5hcmd1YWJseSBhIGNvcnJlY3QgaW1wbGVtZW50YXRpb24gb2YKPiBzZXJpYWxpemFiaWxpdHkg KGFzc3VtaW5nIHRoZXJlIGFyZSBubyBidWdzKSwgeWV0IGl0IGRvZXNuJ3QgZGVsaXZlcgo+IHRo ZSBndWFyYW50ZWUgeW91J3JlIGFza2luZyBmb3IgaGVyZS4KCjEwMCUgYWNjdXJhdGUuCgo+IEkg aGF2ZSBub3QgcmVhZCBhbnkgZGF0YWJhc2UgbGl0ZXJhdHVyZSBvbiB0aGUgaW50ZXJhY3Rpb24g b2YKPiBzZXJpYWxpemFiaWxpdHkgd2l0aCBzdWJ0cmFuc2FjdGlvbnMuICBUaGlzIHNlZW1zIHZl cnkgdGhvcm55Lgo+IFN1cHBvc2UgVDEgcmVhZHMgQSBhbmQgQiBhbmQgdXBkYXRlcyBBIC0+IEEn IHdoaWxlIGNvbmN1cnJlbnRseSBUMgo+IHJlYWRzIEEgYW5kIEIgYW5kIHVwZGF0ZXMgQiAtPiBC Jy4gIFRoaXMgaXMgb2J2aW91c2x5IG5vdAo+IHNlcmlhbGl6YWJsZTsKClJpZ2h0LCB0aGlzIHBh dHRlcm4gaXMgZ2VuZXJhbGx5IGRlc2NyaWJlZCBpbiB0aGUgbGl0ZXJhdHVyZSBhcwpzaW1wbGUg d3JpdGUgc2tldy4KCj4gaWYgZWl0aGVyIHRyYW5zYWN0aW9uIGhhZCBleGVjdXRlZCBiZWZvcmUg dGhlIG90aGVyIGluIGEKPiBzZXJpYWwgc2NoZWR1bGUsIHRoZSBzZWNvbmQgdHJhbnNhY3Rpb24g aW4gdGhlIHNjaGVkdWxlIHdvdWxkIGhhdmUgaGFkCj4gdG8gaGF2ZSBzZWVuIChBLCBCJykgb3Ig KEEnLCBCKSByYXRoZXIgdGhhbiAoQSwgQiksIGJ1dCB0aGF0J3Mgbm90Cj4gd2hhdCBoYXBwZW5l ZC4gIEJ1dCB3aGF0IGlmIGVhY2ggb2YgVDEgYW5kIFQyIGRpZCB0aGUgcmVhZHMgaW4gYQo+IHN1 YnRyYW5zYWN0aW9uLCByb2xsZWQgaXQgYmFjaywgYW5kIHRoZW4gZGlkIHRoZSB3cml0ZSBpbiB0 aGUgbWFpbgo+IHRyYW5zYWN0aW9uIGFuZCBjb21taXR0ZWQ/ICBUaGUgZGF0YWJhc2Ugc3lzdGVt IGhhcyB0d28gb3B0aW9ucy4KPiBGaXJzdCwgaXQgY291bGQgYXNzdW1lIHRoYXQgdGhlIHRvcGxl dmVsIHRyYW5zYWN0aW9uIG1heSBoYXZlIHJlbGllZAo+IG9uIHRoZSByZXN1bHRzIG9mIHRoZSBh Ym9ydGVkIHN1YnRyYW5zYWN0aW9uLgoKVGhpcyBpcyB3aGF0IHdlIGRvIGluIG91ciBpbXBsZW1l bnRhdGlvbiBvZiBTU0kuICBQcmVkaWNhdGUgbG9ja3MKZnJvbSByZWFkcyB3aXRoaW4gc3VidHJh bnNhY3Rpb25zIGFyZSBub3QgZGlzY2FyZGVkLCBldmVuIGlmIHRoZQp3b3JrIG9mIHRoZSBzdWJ0 cmFuc2FjdGlvbiBpcyBvdGhlcndpc2UgZGlzY2FyZGVkLgoKPiBCdXQgaWYgaXQgZG9lcyB0aGF0 LAo+IHRoZW4gYW55IHNlcmlhbGl6YXRpb24gZmFpbHVyZSB3aGljaCBhZmZsaWN0cyBhIHN1YnRy YW5zYWN0aW9uIG11c3QKPiBuZWNlc3NhcmlseSBhbHNvIGtpbGwgdGhlIG1haW4gdHJhbnNhY3Rp b24sIHdoaWNoIHNlZW1zIHBlZGFudGljIGFuZAo+IHVuaGVscGZ1bC4gIElmIHlvdSdkIHdhbnRl ZCB0aGUgdG9wbGV2ZWwgdHJhbnNhY3Rpb24gdG8gYmUga2lsbGxlZCwKPiB5b3Ugd291bGRuJ3Qg aGF2ZSB1c2VkIGEgc3VidHJhbnNhY3Rpb24sIHJpZ2h0PwoKV2UgcmVhc29uZWQgdGhhdCB0aGUg cmVzdWx0cyBvZiByZWFkcyB3aXRoaW4gdGhlIHN1YnRyYW5zYWN0aW9uCmNvdWxkIGhhdmUgaW5m bHVlbmNlZCB0aGUgZGVjaXNpb24gb24gd2hldGhlciB0byByb2xsIGJhY2sgdGhlCnN1YnRyYW5z YWN0aW9uLCBzbyByZWxlYXNlIG9mIHRoZSBwcmVkaWNhdGUgbG9ja3MgY291bGQgZWFzaWx5IGxl YWQKdG8gbm9uLXJlcGVhdGFibGUgcmVzdWx0cy4KCj4gU2Vjb25kLCBpdCBjb3VsZAo+IGFzc3Vt ZSB0aGF0IHRoZSB0b3BsZXZlbCB0cmFuc2FjdGlvbiBpbiBubyB3YXkgcmVsaWVkIG9uIG9yIHVz ZWQgdGhlCj4gdmFsdWVzIG9idGFpbmVkIGZyb20gdGhlIGFib3J0ZWQgc3VidHJhbnNhY3Rpb24u ICBIb3dldmVyLCB0aGF0Cj4gZGVmZWF0cyB0aGUgd2hvbGUgcHVycG9zZSBvZiBoYXZpbmcgc3Vi dHJhbnNhY3Rpb25zIGluIHRoZSBmaXJzdAo+IHBsYWNlLiAgV2hhdCdzIHRoZSBwb2ludCBvZiBi ZWluZyBhYmxlIHRvIHN0YXJ0IHN1YnRyYW5zYWN0aW9ucyBpZiB5b3UKPiBjYW4ndCByb2xsIHRo ZW0gYmFjayBhbmQgdGhlbiBkZWNpZGUgdG8gZG8gc29tZXRoaW5nIGVsc2UgaW5zdGVhZD8gIEl0 Cj4gc2VlbXMgdG8gbWUgdGhhdCB3aGF0IHRoZSBkYXRhYmFzZSBzeXN0ZW0gc2hvdWxkIGRvIGlz IG1ha2UgdGhhdAo+IHNlY29uZCBhc3N1bXB0aW9uLCBhbmQgd2hhdCB0aGUgdXNlciBzaG91bGQg ZG8gaXMgdW5kZXJzdGFuZCB0aGF0IHRvCj4gdGhlIGRlZ3JlZSB0aGF0IHRyYW5zYWN0aW9ucyBk ZXBlbmQgb24gdGhlIHJlc3VsdHMgb2YgYWJvcnRlZAo+IHN1YnRyYW5zYWN0aW9ucywgdGhlcmUg bWF5IGJlIHNlcmlhbGl6YXRpb24gYW5vbWFsaWVzIHRoYXQgZ28KPiB1bmRldGVjdGVkLgoKV2Vs bCwgd2Ugb3B0ZWQgZm9yIHRyeWluZyB0byBwcmV2ZW50IHRoZSBhbm9tYWxpZXMgZXZlbiBpbiB0 aGUgZmFjZQpvZiBzdWJ0cmFuc2FjdGlvbnMgd2hpY2ggcm9sbGVkIGJhY2suICBUaGUgcmVxdWly ZW1lbnRzIHdpdGhpbiBTU0kKdG8gY2F1c2UgYSBzZXJpYWxpemF0aW9uIGZhaWx1cmUgKGRhbmdl cm91cyBzdHJ1Y3R1cmUsIGNvbW1pdAp0aW1pbmdzLCBldGMuKSBhcmUgZW5vdWdoIHRvIGFsbG93 IHVzZWZ1bCBzdWJ0cmFuc2FjdGlvbnMsIEkgdGhpbmsuCgo+IEFuZCB0aGUgdXNlciBzaG91bGQg cHV0IHVwIHdpdGggdGhhdCBiZWNhdXNlIHRoZSBjdXJlIGlzCj4gd29yc2UgdGhhbiB0aGUgZGlz ZWFzZS4KCk5vdCBhcyB3ZSBzYXcgaXQgZHVyaW5nIGRldmVsb3BtZW50IG9mIHRoZSBzZXJpYWxp emFibGUgdHJhbnNhY3Rpb24KZmVhdHVyZSwgYW5kIEkgaGF2ZSBub3QgeWV0IGhlYXJkIGFueSBj b21wbGFpbnRzIGFib3V0IHRoYXQgY2hvaWNlLgoKPiBNYXliZSB0aGVyZSdzIGEgbW9yZSBmb3Jt YWxseSBzYXRpc2Z5aW5nCj4gYW5zd2VyIHRoYW4gdGhhdCBidXQgSSdtIG5vdCByZWFsbHkgc2Vl aW5nIGl0Li4uCgpJdCB3b3VsZCB0YWtlIHNvbWUgYWN0dWFsIGZpZWxkIGNvbXBsYWludHMgYWJv dXQgY3VycmVudCBiZWhhdmlvciwKd2l0aCByZWFzb25hYmxlIHVzZSBjYXNlcywgdG8gcGVyc3Vh ZGUgbWUgdGhhdCB5b3VyIGFuc3dlciBpcwpiZXR0ZXIgdGhhbiB3aGF0IGhhcyBiZWVuIGltcGxl bWVudGVkIGFuZCBvdXQgaW4gdGhlIGZpZWxkIGZvciBmaXZlCnllYXJzLiAgVGhlIHN1YnRyYW5z YWN0aW9ucyBhcmUgb25seSBjYXVzaW5nIGEgcHJvYmxlbSBpbiAqdGhpcyoKY2FzZSBiZWNhdXNl IHRoZSBleGNlcHRpb24gdGhhdCBpcyBiZWluZyBpZ25vcmVkIGlzIGNvbWluZyBmcm9tIGEKZGVj bGFyYXRpdmUgY29uc3RyYWludC4gIFdlIHJlbGllZCBvbiBwcmV2aW91cyByZXNlYXJjaCBzaG93 aW5nCnRoYXQgYXBwYXJlbnQgb3Bwb3J0dW5pdGllcyBmb3Igc2VyaWFsaXphdGlvbiBhbm9tYWxp ZXMgd2VyZSBvZnRlbgpwcmV2ZW50ZWQgYnkgZGVjbGFyYXRpdmUgY29uc3RyYWludHMuICBXaXRo IHRoZSBkaWZmaWN1bHR5IGluCmFjcXVpcmluZyB0aGUgbmVjZXNzYXJ5IHByZWRpY2F0ZSBsb2Nr cyB3aXRoaW4gdGhlIGNvZGUKaW1wbGVtZW50aW5nIHRoZSBjb25zdHJhaW50cywgd2UgZmVsdCB3 ZSBjb3VsZCBub3QgZG8gdGhhdCByZWxpYWJseQphbmQgc3RpbGwgbWFrZSB0aGUgOS4xIHJlbGVh c2Ugd2l0aCB0aGUgb3ZlcmFsbCBmZWF0dXJlLiAgV2UKdGhvdWdodCB0aGF0IHRoZSBvbmx5IGRv d24gc2lkZSB3YXMgdGhhdCB0aGF0IFNRTFNUQVRFIGNvZGVzIGZyb20KdGhlIGNvbnN0cmFpbnRz IGNvdWxkIGJlIHRocm93biB3aGVuIHRoZSB2aW9sYXRpb24gd2FzIGNhdXNlZCBieQp0aGUgYWN0 aW9ucyBvZiBhIGNvbmN1cnJlbnQgdHJhbnNhY3Rpb24gLS0gbWVhbmluZyB0aGF0IGEKc2VyaWFs aXphdGlvbiBmYWlsdXJlIHdvdWxkIGJlIGJldHRlciBpbiB0ZXJtcyBvZiBrbm93aW5nIHdoZW4g dG8KcmV0cnkgYSB0cmFuc2FjdGlvbiByYXRoZXIgdGhhbiB0aHJvd2luZyBhbiBlcnJvciBpbiB0 aGUgZmFjZSBvZiBhbgplbmQgdXNlci4gIFRoaXMgd2FzIGFsd2F5cyBzb21ldGhpbmcgd2Ugd2Fu dGVkIHRvIGNvbWUgYmFjayBhbmQKaW1wcm92ZSBpbiBhIGxhdGVyIHJlbGVhc2U7IGJ1dCBub2Jv ZHkgaGFzIGJlZW4gd2lsbGluZyB0byBmdW5kIGFueQpvZiB0aGUgbWFueSBpbXByb3ZlbWVudHMg d2Uga25vdyBjb3VsZCBiZSBtYWRlIHRvIHRoZSBzZXJpYWxpemFibGUKdHJhbnNhY3Rpb24gaW1w bGVtZW50YXRpb24sIHNvIGl0IGhhcyBzbyBmYXIgcmVtYWluZWQgaW4gdGhpcwpzdGF0ZS4KCldo YXQgd2UgbWlzc2VkIGlzIHRoYXQsIHdoaWxlIHdlIHRvb2sgYWN0aW9uIHRvIHRyeSB0byBlbnN1 cmUgdGhhdAphIHNlcmlhbGl6YXRpb24gZmFpbHVyZSBjb3VsZCBub3QgYmUgZGlzY2FyZGVkLCB3 ZSBkaWRuJ3QgY29uc2lkZXIKdGhhdCBhIGNvbnN0cmFpbnQgdmlvbGF0aW9uIGV4Y2VwdGlvbiB3 aGljaCB3YXMgcHJldmVudGluZyBhbgphbm9tYWx5ICpjb3VsZCogYmUgZGlzY2FyZGVkLiAgRWZm ZWN0aXZlbHksIHRoaXMgaGFzIGVzY2FsYXRlZApkZXRlY3Rpb24gb2Ygc2VyaWFsaXphdGlvbiBm YWlsdXJlcyBpbnZvbHZpbmcgcmVhZHMgd2hpY2ggYXJlIHBhcnQKb2YgZW5mb3JjaW5nIGRlY2xh cmF0aXZlIGNvbnN0cmFpbnRzIGZyb20gdGhlIGxldmVsIG9mIGEgZmVhdHVyZQpyZXF1ZXN0IHRv IGN1cmUgYSBzaWduaWZpY2FudCBhbm5veWFuY2UgZm9yIHRob3NlIHVzaW5nIHRoZW0sIHRvIGEK YnVnIGZpeCBuZWNlc3NhcnkgdG8gcHJldmVudCBzZXJpYWxpemF0aW9uIGFub21hbGllcy4KCkZv cnR1bmF0ZWx5LCBUaG9tYXMgTXVucm8gdG9vayBhbiBpbnRlcmVzdCBpbiB0aGUgcHJvYmxlbSBh cyBpdApyZWxhdGVkIHRvIGR1cGxpY2F0ZXMgb24gcHJpbWFyeSBrZXlzLCB1bmlxdWUgY29uc3Ry YWludHMsIGFuZAp1bmlxdWUgaW5kZXhlcywgYW5kIHB1dCBmb3J3YXJkIGEgcGF0Y2ggdGhhdCBj dXJlZCB0aGUgZGVmZWN0IGluCnRoZSBjb21tb24gY2FzZXMsIGFuZCBwcm92aWRlZCBhbiBlYXN5 IHdvcmthcm91bmQgZm9yIHRoZSBvbmUgY2FzZQpoZSB3YXMgdW5hYmxlIHRvIGZpeCBpbiB0aGF0 IGluaXRpYWwgcGF0Y2guICBUbyBmaW5pc2ggdGhlIHdvcmsgZm9yCnRoZXNlIGNvbnN0cmFpbnRz IGFuZCBpbmRleGVzLCBJIHRoaW5rIHdlIG5lZWQgdG8gYWRkIHByZWRpY2F0ZQpsb2NraW5nIHdo aWxlIGRlc2NlbmRpbmcgdG8gdGhlIGluc2VydGlvbiBwb2ludCAgZHVyaW5nIHRoZSBjaGVjawpm b3IgYW4gZXhpc3RpbmcgZHVwbGljYXRlLgoKSSdtIG5vdCBzdXJlIGFib3V0IGZvcmVpZ24ga2V5 IGNvbnN0cmFpbnRzIGFuZCBleGNsdXNpb24KY29uc3RyYWludHMuICBJIGhhdmUgbmVpdGhlciBz ZWVuIGEgZmFpbHVyZSByZWxhdGVkIHRvIGVpdGhlciBvZgp0aGVzZSwgbm9yIHByb3ZlbiB0aGF0 IHRoZXJlIGNhbm5vdCBiZSBvbmUuICBXaXRob3V0IGhhdmluZwphc3Nlc3NlZCB0aGUgc2NvcGUg b2YgdGhlIHByb2JsZW1zIChpZiBhbnkpIGluIHRob3NlIGNvbnN0cmFpbnRzLAppdCdzIGhhcmQg dG8gc2F5IHdoYXQgbmVlZHMgdG8gYmUgZG9uZSBvciBob3cgbXVjaCB3b3JrIGl0IGlzLgoKSXQg YWxzbyB3b3VsZG4ndCBodXJ0IHRvIGRvdWJsZS1jaGVjayB0aGF0IHRoZSBzZXJpYWxpemFibGUK dHJhbnNhY3Rpb24ncyAiZG9vbWVkIiBmbGFnIGlzIHNldCBhbmQgY2hlY2tlZCBldmVyeXdoZXJl IGl0IHNob3VsZApiZTsgYnV0IEkgaGF2ZSBubyByZWFzb24gdG8gdGhpbmsgaXQgaXNuJ3QuCgot LQpLZXZpbiBHcml0dG5lcgpFREI6IGh0dHA6Ly93d3cuZW50ZXJwcmlzZWRiLmNvbQpUaGUgRW50 ZXJwcmlzZSBQb3N0Z3JlU1FMIENvbXBhbnkKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3Rz Lnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=