From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.4 required=3.0 tests=DKIM_ADSP_ALL,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 058B6C33C9E for ; Tue, 28 Jan 2020 08:46:29 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id C06482465B for ; Tue, 28 Jan 2020 08:46:28 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=amazon.com header.i=@amazon.com header.b="TJnG0zQj" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org C06482465B Authentication-Results: mail.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=amazon.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1iwMVh-00054M-73; Tue, 28 Jan 2020 08:46:13 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1iwMVg-00054C-Iq for xen-devel@lists.xenproject.org; Tue, 28 Jan 2020 08:46:12 +0000 X-Inumbo-ID: a1f9753a-41aa-11ea-a933-bc764e2007e4 Received: from smtp-fw-33001.amazon.com (unknown [207.171.190.10]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id a1f9753a-41aa-11ea-a933-bc764e2007e4; Tue, 28 Jan 2020 08:46:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209; t=1580201171; x=1611737171; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=it0pDeFH0wFt8C9B+YKiqlwrg/HRnT1ZV/qcE7o0qNI=; b=TJnG0zQjQQQSqvGBwG2wmSxNJsLwJcH7nVJVuGRZR6jINWLpbbkQmstH bQ6JqZGx9dzMgEFm9A5L/h4QJnJvuHT6PKem7znEzbuJBovNsJoo9CgYW YUQHxGU0lvgl+XV5nBe+0SdrZhL+Sjef+LkeyYqqnovWxEpoIZC68MHXl Q=; IronPort-SDR: 1xY5KaTxgp/xY4l23dn4GJRX9hSL13fFC5VS96SpoFIeVgYf+2+54KYBgdnbcinmURL3w9Amhu RC3+2Dm+M/Hw== X-IronPort-AV: E=Sophos;i="5.70,373,1574121600"; d="scan'208";a="22861304" Received: from sea32-co-svc-lb4-vlan3.sea.corp.amazon.com (HELO email-inbound-relay-2a-6e2fc477.us-west-2.amazon.com) ([10.47.23.38]) by smtp-border-fw-out-33001.sea14.amazon.com with ESMTP; 28 Jan 2020 08:46:00 +0000 Received: from EX13MTAUEA002.ant.amazon.com (pdx4-ws-svc-p6-lb7-vlan2.pdx.amazon.com [10.170.41.162]) by email-inbound-relay-2a-6e2fc477.us-west-2.amazon.com (Postfix) with ESMTPS id CEFA2A1DE2; Tue, 28 Jan 2020 08:45:58 +0000 (UTC) Received: from EX13D32EUB004.ant.amazon.com (10.43.166.212) by EX13MTAUEA002.ant.amazon.com (10.43.61.77) with Microsoft SMTP Server (TLS) id 15.0.1236.3; Tue, 28 Jan 2020 08:45:58 +0000 Received: from EX13MTAUWA001.ant.amazon.com (10.43.160.58) by EX13D32EUB004.ant.amazon.com (10.43.166.212) with Microsoft SMTP Server (TLS) id 15.0.1367.3; Tue, 28 Jan 2020 08:45:57 +0000 Received: from u2f063a87eabd5f.cbg10.amazon.com (10.125.106.135) by mail-relay.amazon.com (10.43.160.118) with Microsoft SMTP Server id 15.0.1367.3 via Frontend Transport; Tue, 28 Jan 2020 08:45:54 +0000 From: Paul Durrant To: Date: Tue, 28 Jan 2020 08:45:50 +0000 Message-ID: <20200128084550.5693-1-pdurrant@amazon.com> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 Precedence: Bulk Subject: [Xen-devel] [PATCH v2] docs/designs: Add a design document for non-cooperative live migration X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Stefano Stabellini , Julien Grall , Wei Liu , Konrad Rzeszutek Wilk , George Dunlap , Andrew Cooper , Paul Durrant , Ian Jackson Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" SXQgaGFzIGJlY29tZSBhcHBhcmVudCB0byBzb21lIGxhcmdlIGNsb3VkIHByb3ZpZGVycyB0aGF0 IHRoZSBjdXJyZW50Cm1vZGVsIG9mIGNvb3BlcmF0aXZlIG1pZ3JhdGlvbiBvZiBndWVzdHMgdW5k ZXIgWGVuIGlzIG5vdCB1c2FibGUgYXMgaXQKcmVsaWVzIG9uIHNvZnR3YXJlIHJ1bm5pbmcgaW5z aWRlIHRoZSBndWVzdCwgd2hpY2ggaXMgbGlrZWx5IGJleW9uZCB0aGUKcHJvdmlkZXIncyBjb250 cm9sLgpUaGlzIHBhdGNoIGludHJvZHVjZXMgYSBwcm9wb3NhbCBmb3Igbm9uLWNvb3BlcmF0aXZl IGxpdmUgbWlncmF0aW9uLApkZXNpZ25lZCBub3QgdG8gcmVseSBvbiBhbnkgZ3Vlc3Qtc2lkZSBz b2Z0d2FyZS4KClNpZ25lZC1vZmYtYnk6IFBhdWwgRHVycmFudCA8cGR1cnJhbnRAYW1hem9uLmNv bT4KLS0tCkNjOiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgpDYzog R2VvcmdlIER1bmxhcCA8R2VvcmdlLkR1bmxhcEBldS5jaXRyaXguY29tPgpDYzogSWFuIEphY2tz b24gPGlhbi5qYWNrc29uQGV1LmNpdHJpeC5jb20+CkNjOiBKYW4gQmV1bGljaCA8amJldWxpY2hA c3VzZS5jb20+CkNjOiBKdWxpZW4gR3JhbGwgPGp1bGllbkB4ZW4ub3JnPgpDYzogS29ucmFkIFJ6 ZXN6dXRlayBXaWxrIDxrb25yYWQud2lsa0BvcmFjbGUuY29tPgpDYzogU3RlZmFubyBTdGFiZWxs aW5pIDxzc3RhYmVsbGluaUBrZXJuZWwub3JnPgpDYzogV2VpIExpdSA8d2xAeGVuLm9yZz4KCnYy OgogLSBVc2UgdGhlIHRlcm0gJ25vbi1jb29wZXJhdGl2ZScgaW5zdGVhZCBvZiAndHJhbnNwYXJl bnQnCiAtIFJlcGxhY2UgJ3RydXN0IGluJyB3aXRoICdyZWxpYW5jZSBvbicgd2hlbiByZWZlcnJp bmcgdG8gZ3Vlc3Qtc2lkZQogICBzb2Z0d2FyZQotLS0KIGRvY3MvZGVzaWducy9ub24tY29vcGVy YXRpdmUtbWlncmF0aW9uLm1kIHwgMjU5ICsrKysrKysrKysrKysrKysrKysrKysKIDEgZmlsZSBj aGFuZ2VkLCAyNTkgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRvY3MvZGVzaWdu cy9ub24tY29vcGVyYXRpdmUtbWlncmF0aW9uLm1kCgpkaWZmIC0tZ2l0IGEvZG9jcy9kZXNpZ25z L25vbi1jb29wZXJhdGl2ZS1taWdyYXRpb24ubWQgYi9kb2NzL2Rlc2lnbnMvbm9uLWNvb3BlcmF0 aXZlLW1pZ3JhdGlvbi5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5m MzhkNjY0YzM0Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9kZXNpZ25zL25vbi1jb29wZXJhdGl2 ZS1taWdyYXRpb24ubWQKQEAgLTAsMCArMSwyNTkgQEAKKyMgTm9uLUNvb3BlcmF0aXZlIE1pZ3Jh dGlvbiBvZiBHdWVzdHMgb24gWGVuCisKKyMjIEJhY2tncm91bmQKKworVGhlIG5vcm1hbCBtb2Rl bCBvZiBtaWdyYXRpb24gaW4gWGVuIGlzIGRyaXZlbiBieSB0aGUgZ3Vlc3QgYmVjYXVzZSBpdCB3 YXMKK29yaWdpbmFsbHkgaW1wbGVtZW50ZWQgZm9yIFBWIGd1ZXN0cywgd2hlcmUgdGhlIGd1ZXN0 IG11c3QgYmUgYXdhcmUgaXQgaXMKK3J1bm5pbmcgdW5kZXIgWGVuIGFuZCBpcyBoZW5jZSBleHBl Y3RlZCB0byBjby1vcGVyYXRlLiBUaGlzIG1vZGVsIGRhdGVzIGZyb20KK2FuIGVyYSB3aGVuIGl0 IHdhcyBhc3N1bWVkIHRoYXQgdGhlIGhvc3QgYWRtaW5pc3RyYXRvciBoYWQgY29udHJvbCBvZiBh dCBsZWFzdAordGhlIHByaXZpbGVnZWQgc29mdHdhcmUgcnVubmluZyBpbiB0aGUgZ3Vlc3QgKGku ZS4gdGhlIGd1ZXN0IGtlcm5lbCkgd2hpY2ggbWF5CitzdGlsbCBiZSB0cnVlIGluIGFuIGVudGVy cHJpc2UgZGVwbG95bWVudCBidXQgaXMgbm90IGdlbmVyYWxseSB0cnVlIGluIGEgY2xvdWQKK2Vu dmlyb25tZW50LiBUaGUgYWltIG9mIHRoaXMgZGVzaWduIGlzIHRvIHByb3ZpZGUgYSBtb2RlbCB3 aGljaCBpcyBwdXJlbHkgaG9zdAorZHJpdmVuLCByZXF1aXJpbmcgbm8gY28tb3BlcmF0aW9uIGZy b20gdGhlIHNvZnR3YXJlIHJ1bm5pbmcgaW4gdGhlCitndWVzdCwgYW5kIGlzIHRodXMgc3VpdGFi bGUgZm9yIGNsb3VkIHNjZW5hcmlvcy4KKworUFYgZ3Vlc3RzIGFyZSBvdXQgb2Ygc2NvcGUgZm9y IHRoaXMgcHJvamVjdCBiZWNhdXNlLCBhcyBpcyBvdXRsaW5lZCBhYm92ZSwgdGhleQoraGF2ZSBh IHN5bWJpb3RpYyByZWxhdGlvbnNoaXAgd2l0aCB0aGUgaHlwZXJ2aXNvciBhbmQgdGhlcmVmb3Jl IGEgY2VydGFpbiBsZXZlbAorb2YgY28tb3BlcmF0aW9uIGNhbiBiZSBhc3N1bWVkLgorSFZNIGd1 ZXN0cyBjYW4gYWxyZWFkeSBiZSBtaWdyYXRlZCBvbiBYZW4gd2l0aG91dCBndWVzdCBjby1vcGVy YXRpb24gYnV0IG9ubHkKK2lmIHRoZXkgZG9u4oCZdCBoYXZlIFBWIGRyaXZlcnMgaW5zdGFsbGVk WzFdIG9yIGFyZSBpbiBwb3dlciBzdGF0ZSBTMy4gVGhlCityZWFzb24gZm9yIG5vdCBleHBlY3Rp bmcgY28tb3BlcmF0aW9uIGlmIHRoZSBndWVzdCBpcyBpbiBTMyBpcyBvYnZpb3VzLCBidXQgdGhl CityZWFzb24gY28tb3BlcmF0aW9uIGlzIGV4cGVjdGVkIGlmIFBWIGRyaXZlcnMgYXJlIGluc3Rh bGxlZCBpcyBkdWUgdG8gdGhlCituYXR1cmUgb2YgUFYgcHJvdG9jb2xzLgorCisjIyBYZW5zdG9y ZSBOb2RlcyBhbmQgRG9tYWluIElECisKK1RoZSBQViBkcml2ZXIgbW9kZWwgY29uc2lzdHMgb2Yg YSAqZnJvbnRlbmQqIGFuZCBhICpiYWNrZW5kKi4gVGhlIGZyb250ZW5kIHJ1bnMKK2luc2lkZSB0 aGUgZ3Vlc3QgZG9tYWluIGFuZCB0aGUgYmFja2VuZCBydW5zIGluc2lkZSBhICpzZXJ2aWNlIGRv bWFpbiogd2hpY2gKK21heSBvciBtYXkgbm90IGRvbWFpbiAwLiBUaGUgZnJvbnRlbmQgYW5kIGJh Y2tlbmQgdHlwaWNhbGx5IHBhc3MgZGF0YSB2aWEKK21lbW9yeSBwYWdlcyB3aGljaCBhcmUgc2hh cmVkIGJldHdlZW4gdGhlIHR3byBkb21haW5zLCBidXQgdGhpcyBjaGFubmVsIG9mCitjb21tdW5p Y2F0aW9uIGlzIGdlbmVyYWxseSBlc3RhYmxpc2hlZCB1c2luZyB4ZW5zdG9yZSAodGhlIHN0b3Jl IHByb3RvY29sCitpdHNlbGYgYmVpbmcgYW4gZXhjZXB0aW9uIHRvIHRoaXMgZm9yIG9idmlvdXMg Y2hpY2tlbi1hbmQtZWdnIHJlYXNvbnMpLgorCitUeXBpY2FsIHByb3RvY29sIGVzdGFibGlzaG1l bnQgaXMgYmFzZWQgb24gdXNlIG9mIHR3byBzZXBhcmF0ZSB4ZW5zdG9yZQorKmFyZWFzKi4gSWYg d2UgY29uc2lkZXIgUFYgZHJpdmVycyBmb3IgdGhlICpuZXRpZiogcHJvdG9jb2wgKGkuZS4gY2xh c3MgdmlmKQorYW5kIGFzc3VtZSB0aGUgZ3Vlc3QgaGFzIGRvbWlkIFgsIHRoZSBzZXJ2aWNlIGRv bWFpbiBoYXMgZG9taWQgWSwgYW5kIHRoZSB2aWYKK2hhcyBpbmRleCBaIHRoZW4gdGhlIGZyb250 ZW5kIGFyZWEgd2lsbCByZXNpZGUgdW5kZXIgdGhlIHBhcmVudCBub2RlOgorCitgL2xvY2FsL2Rv bWFpbi9ZL2RldmljZS92aWYvWmAKKworQWxsIGJhY2tlbmRzLCBieSBjb252ZW50aW9uLCB0eXBp Y2FsbHkgcmVzaWRlIHVuZGVyIHBhcmVudCBub2RlOgorCitgL2xvY2FsL2RvbWFpbi9YL2JhY2tl bmRgCisKK2FuZCB0aGUgbm9ybWFsIGJhY2tlbmQgYXJlYSBmb3IgdmlmIFogd291bGQgYmU6CisK K2AvbG9jYWwvZG9tYWluL1gvYmFja2VuZC92aWYvWS9aYAorCitidXQgdGhpcyBzaG91bGQgbm90 IGJlIGFzc3VtZWQuCisKK1RoZSB0b29sc3RhY2sgd2lsbCBwbGFjZSB0d28gbm9kZXMgaW4gdGhl IGZyb250ZW5kIGFyZWEgdG8gZXhwbGljaXRseSBsb2NhdGUKK3RoZSBiYWNrZW5kOgorCisgICAg KiBgYmFja2VuZGA6IHRoZSBmdWxseSBxdWFsaWZpZWQgeGVuc3RvcmUgcGF0aCBvZiB0aGUgYmFj a2VuZCBhcmVhCisgICAgKiBgYmFja2VuZC1pZGA6IHRoZSBkb21pZCBvZiB0aGUgc2VydmljZSBk b21haW4KKworYW5kIHNpbWlsYXJseSB0d28gbm9kZXMgaW4gdGhlIGJhY2tlbmQgYXJlYSB0byBs b2NhdGUgdGhlIGZyb250ZW5kIGFyZWE6CisKKyAgICAqIGBmcm9udGVuZGA6IHRoZSBmdWxseSBx dWFsaWZpZWQgeGVuc3RvcmUgcGF0aCBvZiB0aGUgZnJvbnRlbmQgYXJlYQorICAgICogYGZyb250 ZW5kLWlkYDogdGhlIGRvbWlkIG9mIHRoZSBndWVzdCBkb21haW4KKworCitUaGUgZ3Vlc3QgZG9t YWluIG9ubHkgaGFzIHdyaXRlIHBlcm1pc3Npb24gdG8gdGhlIGZyb250ZW5kIGFyZWEgYW5kIHNp bWlsYXJseQordGhlIHNlcnZpY2UgZG9tYWluIG9ubHkgaGFzIHdyaXRlIHBlcm1pc3Npb24gdG8g dGhlIGJhY2tlbmQgYXJlYSwgYnV0IGJvdGggZW5kcworaGF2ZSByZWFkIHBlcm1pc3Npb24gdG8g Ym90aCBhcmVhcy4KKworVW5kZXIgYm90aCBmcm9udGVuZCBhbmQgYmFja2VuZCBhcmVhcyBpcyBh IG5vZGUgY2FsbGVkICpzdGF0ZSouIFRoaXMgaXMga2V5IHRvCitwcm90b2NvbCBlc3RhYmxpc2ht ZW50LiBVcG9uIFBWIGRldmljZSBjcmVhdGlvbiB0aGUgdG9vbHN0YWNrIHdpbGwgc2V0IHRoZQor dmFsdWUgb2YgYm90aCBzdGF0ZSBub2RlcyB0byAxIChYZW5idXNTdGF0ZUluaXRpYWxpc2luZ1sy XSkuIFRoaXMgc2hvdWxkIGNhdXNlCitlbnVtZXJhdGlvbiBvZiBhcHByb3ByaWF0ZSBkZXZpY2Vz IGluIGJvdGggdGhlIGd1ZXN0IGFuZCBzZXJ2aWNlIGRvbWFpbnMuIFRoZQorYmFja2VuZCBkZXZp Y2UsIG9uY2UgaXQgaGFzIHdyaXR0ZW4gYW55IG5lY2Vzc2FyeSBwcm90b2NvbCBzcGVjaWZpYyBp bmZvcm1hdGlvbgoraW50byB0aGUgeGVuc3RvcmUgYmFja2VuZCBhcmVhICh0byBiZSByZWFkIGJ5 IHRoZSBmcm9udGVuZCBkcml2ZXIpIHdpbGwgdXBkYXRlCit0aGUgYmFja2VuZCBzdGF0ZSBub2Rl IHRvIDIgKFhlbmJ1c1N0YXRlSW5pdFdhaXQpLiBGcm9tIHRoaXMgcG9pbnQgb24gUFYKK3Byb3Rv Y29scyBkaWZmZXIgc2xpZ2h0bHk7IHRoZSBmb2xsb3dpbmcgaWxsdXN0cmF0aW9uIGlzIHRydWUg b2YgdGhlIG5ldGlmCitwcm90b2NvbC4KK1Vwb24gc2VlaW5nIGEgYmFja2VuZCBzdGF0ZSB2YWx1 ZSBvZiAyLCB0aGUgZnJvbnRlbmQgZHJpdmVyIHdpbGwgdGhlbiByZWFkIHRoZQorcHJvdG9jb2wg c3BlY2lmaWMgaW5mb3JtYXRpb24sIHdyaXRlIGRldGFpbHMgb2YgZ3JhbnQgcmVmZXJlbmNlcyAo Zm9yIHNoYXJlZAorcGFnZXMpIGFuZCBldmVudCBjaGFubmVsIHBvcnRzIChmb3Igc2lnbmFsbGlu ZykgdGhhdCBpdCBoYXMgY3JlYXRlZCwgYW5kIHNldAordGhlIHN0YXRlIG5vZGUgaW4gdGhlIGZy b250ZW5kIGFyZWEgdG8gNCAoWGVuYnVzU3RhdGVDb25uZWN0ZWQpLiBVcG9uIHNlZSB0aGlzCitm cm9udGVuZCBzdGF0ZSwgdGhlIGJhY2tlbmQgZHJpdmVyIHdpbGwgdGhlbiByZWFkIHRoZSBncmFu dCByZWZlcmVuY2VzIChtYXBwaW5nCit0aGUgc2hhcmVkIHBhZ2VzKSBhbmQgZXZlbnQgY2hhbm5l bCBwb3J0cyAob3BlbmluZyBpdHMgZW5kIG9mIHRoZW0pIGFuZCBzZXQgdGhlCitzdGF0ZSBub2Rl IGluIHRoZSBiYWNrZW5kIGFyZWEgdG8gNC4gUHJvdG9jb2wgZXN0YWJsaXNobWVudCBpcyBub3cg Y29tcGxldGUgYW5kCit0aGUgZnJvbnRlbmQgYW5kIGJhY2tlbmQgc3RhcnQgdG8gcGFzcyBkYXRh LgorCitCZWNhdXNlIHRoZSBkb21pZCBvZiBib3RoIGVuZHMgb2YgYSBQViBwcm90b2NvbCBmb3Jt cyBhIGtleSBwYXJ0IG9mIG5lZ290aWF0aW5nCit0aGUgZGF0YSBwbGFuZSBmb3IgdGhhdCBwcm90 b2NvbCAoYmVjYXVzZSBpdCBpcyBlbmNvZGVkIGludG8gYm90aCB4ZW5zdG9yZQorbm9kZXMgYW5k IG5vZGUgcGF0aHMpLCBhbmQgYmVjYXVzZSBndWVzdOKAmXMgb3duIGRvbWlkIGFuZCB0aGUgZG9t aWQgb2YgdGhlCitzZXJ2aWNlIGRvbWFpbiBhcmUgdmlzaWJsZSB0byB0aGUgZ3Vlc3QgaW4geGVu c3RvcmUgKGFuZCBoZW5jZSBtYXkgY2FjaGVkCitpbnRlcm5hbGx5KSwgYW5kIG5laXRoZXIgYXJl IG5lY2Vzc2FyaWx5IHByZXNlcnZlZCBkdXJpbmcgbWlncmF0aW9uLCBpdCBpcworaGVuY2UgbmVj ZXNzYXJ5IHRvIGhhdmUgdGhlIGNvLW9wZXJhdGlvbiBvZiB0aGUgZnJvbnRlbmQgaW4gcmUtbmVn b3RpYXRpbmcgdGhlCitwcm90b2NvbCB1c2luZyB0aGUgbmV3IGRvbWlkIGFmdGVyIG1pZ3JhdGlv bi4KK01vcmVvdmVyIHRoZSBiYWNrZW5kLWlkIHZhbHVlIHdpbGwgYmUgdXNlZCBieSB0aGUgZnJv bnRlbmQgZHJpdmVyIGluIHNldHRpbmcgdXAKK2dyYW50IHRhYmxlIGVudHJpZXMgYW5kIGV2ZW50 IGNoYW5uZWxzIHRvIGNvbW11bmljYXRlIHdpdGggdGhlIHNlcnZpY2UgZG9tYWluLAorc28gdGhl IGNvLW9wZXJhdGlvbiBvZiB0aGUgZ3Vlc3QgaXMgcmVxdWlyZWQgdG8gcmUtZXN0YWJsaXNoIHRo ZXNlIGluIHRoZSBuZXcKK2hvc3QgZW52aXJvbm1lbnQgYWZ0ZXIgbWlncmF0aW9uLgorCitUaHVz IGlmIHdlIGFyZSB0byBjaGFuZ2UgdGhlIG1vZGVsIGFuZCBzdXBwb3J0IG1pZ3JhdGlvbiBvZiBh IGd1ZXN0IHdpdGggUFYKK2RyaXZlcnMsIHdpdGhvdXQgdGhlIGNvLW9wZXJhdGlvbiBvZiB0aGUg ZnJvbnRlbmQgZHJpdmVyIGNvZGUsIHRoZSBwYXRocyBhbmQKK3ZhbHVlcyBpbiBib3RoIHRoZSBm cm9udGVuZCBhbmQgYmFja2VuZCB4ZW5zdG9yZSBhcmVhcyBtdXN0IHJlbWFpbiB1bmNoYW5nZWQK K2FuZCB2YWxpZCBpbiB0aGUgbmV3IGhvc3QgZW52aXJvbm1lbnQsIGFuZCB0aGUgZ3JhbnQgdGFi bGUgZW50cmllcyBhbmQgZXZlbnQKK2NoYW5uZWxzIG11c3QgYmUgcHJlc2VydmVkIChhbmQgcmVt YWluIG9wZXJhdGlvbmFsIG9uY2UgZ3Vlc3QgZXhlY3V0aW9uIGlzCityZXN1bWVkKS4KK0JlY2F1 c2UgdGhlIHNlcnZpY2UgZG9tYWlu4oCZcyBkb21pZCBpcyB1c2VkIGRpcmVjdGx5IGJ5IHRoZSBn dWVzdCBpbiBzZXR0aW5nCit1cCBncmFudCBlbnRyaWVzIGFuZCBldmVudCBjaGFubmVscywgdGhl IGJhY2tlbmQgZHJpdmVycyBpbiB0aGUgbmV3IGhvc3QKK2Vudmlyb25tZW50IG11c3QgYmUgcHJv dmlkZWQgYnkgc2VydmljZSBkb21haW4gd2l0aCB0aGUgc2FtZSBkb21pZC4gQWxzbywKK2JlY2F1 c2UgdGhlIGd1ZXN0IGNhbiBzYW1wbGUgaXRzIG93biBkb21pZCBmcm9tIHRoZSBmcm9udGVuZCBh cmVhIGFuZCB1c2UgaXQgaW4KK2h5cGVyY2FsbHMgKGUuZy4gSFZNT1Bfc2V0X3BhcmFtKSByYXRo ZXIgdGhhbiBET01JRF9TRUxGLCB0aGUgZ3Vlc3QgZG9taWQgbXVzdAorYWxzbyBiZSBwcmVzZXJ2 ZWQgdG8gbWFpbnRhaW4gdGhlIEFCSS4KKworRnVydGhlcm1vcmUsIGl0IHdpbGwgbmVjZXNzYXJ5 IHRvIG1vZGlmeSBiYWNrZW5kIGRyaXZlcnMgdG8gcmUtZXN0YWJsaXNoCitjb21tdW5pY2F0aW9u IHdpdGggZnJvbnRlbmQgZHJpdmVycyB3aXRob3V0IHBlcnR1cmJpbmcgdGhlIGNvbnRlbnQgb2Yg dGhlCitiYWNrZW5kIGFyZWEgb3IgcmVxdWlyaW5nIGFueSBjaGFuZ2VzIHRvIHRoZSB2YWx1ZXMg b2YgdGhlIHhlbnN0b3JlIHN0YXRlIG5vZGVzLgorCisjIyBPdGhlciBQYXJhLVZpcnR1YWwgU3Rh dGUKKworIyMjIFNoYXJlZCBSaW5ncworCitCZWNhdXNlIHRoZSBjb25zb2xlIGFuZCBzdG9yZSBw cm90b2NvbCBzaGFyZWQgcGFnZXMgYXJlIGFjdHVhbGx5IHBhcnQgb2YgdGhlCitndWVzdCBtZW1v cnkgaW1hZ2UgKGluIGFuIEU4MjAgcmVzZXJ2ZWQgcmVnaW9uIGp1c3QgYmVsb3cgNEcpIHRoZW4g dGhlIGNvbnRlbnQKK3dpbGwgZ2V0IG1pZ3JhdGVkIGFzIHBhcnQgb2YgdGhlIGd1ZXN0IG1lbW9y eSBpbWFnZS4gSGVuY2Ugbm8gYWRkaXRpb25hbCBjb2RlCitpcyByZXF1aXJlIHRvIHByZXZlbnQg YW55IGd1ZXN0IHZpc2libGUgY2hhbmdlIGluIHRoZSBjb250ZW50LgorCisjIyMgU2hhcmVkIElu Zm8KKworVGhlcmUgaXMgYWxyZWFkeSBhIHJlY29yZCBkZWZpbmVkIGluICpMaWJYZW5DdHJsIERv bWFpbiBJbWFnZSBGb3JtYXQqIFszXQorY2FsbGVkIGBTSEFSRURfSU5GT2Agd2hpY2ggc2ltcGx5 IGNvbnRhaW5zIGEgY29tcGxldGUgY29weSBvZiB0aGUgZG9tYWlu4oCZcworc2hhcmVkIGluZm8g cGFnZS4gSXQgaXMgbm90IGN1cnJlbnRseSBpbmN1ZGVkIGluIGFuIEhWTSAodHlwZSBgMHgwMDAy YCkKK21pZ3JhdGlvbiBzdHJlYW0uIEl0IG1heSBiZSBmZWFzaWJsZSB0byBpbmNsdWRlIGl0IGFz IGFuIG9wdGlvbmFsIHJlY29yZAorYnV0IGl0IGlzIG5vdCBjbGVhciB0aGF0IHRoZSBjb250ZW50 IG9mIHRoZSBzaGFyZWQgaW5mbyBwYWdlIGV2ZXIgbmVlZHMKK3RvIGJlIHByZXNlcnZlZCBmb3Ig YW4gSFZNIGd1ZXN0LgorRm9yIGEgUFYgZ3Vlc3QgdGhlIGBhcmNoX3NoYXJlZF9pbmZvYCBzdWIt c3RydWN0dXJlIGNvbnRhaW5zIGltcG9ydGFudAoraW5mb3JtYXRpb24gYWJvdXQgdGhlIGd1ZXN0 4oCZcyBQMk0sIGJ1dCB0aGlzIGluZm9ybWF0aW9uIGlzIG5vdCByZWxldmFudCBmb3IKK2FuIEhW TSBndWVzdCB3aGVyZSB0aGUgUDJNIGlzIG5vdCBkaXJlY3RseSBtYW5pcHVsYXRlZCB2aWEgdGhl IGd1ZXN0LiBUaGUgb3RoZXIKK3N0YXRlIGNvbnRhaW5lZCBpbiB0aGUgYHNoYXJlZF9pbmZvYCBz dHJ1Y3R1cmUgcmVsYXRlcyB0aGUgZG9tYWluIHdhbGwtY2xvY2sKKyh0aGUgc3RhdGUgb2Ygd2hp Y2ggc2hvdWxkIGFscmVhZHkgYmUgdHJhbnNmZXJyZWQgYnkgdGhlIGBSVENgIEhWTSBjb250ZXh0 CitpbmZvcm1hdGlvbiB3aGljaCBjb250YWluZWQgaW4gdGhlIGBIVk1fQ09OVEVYVGAgc2F2ZSBy ZWNvcmQpIGFuZCBzb21lIGV2ZW50CitjaGFubmVsIHN0YXRlIChwYXJ0aWN1bGFybHkgaWYgdXNp bmcgdGhlICoybCogcHJvdG9jb2wpLiBFdmVudCBjaGFubmVsIHN0YXRlCit3aWxsIG5lZWQgdG8g YmUgZnVsbHkgdHJhbnNmZXJyZWQgaWYgd2UgYXJlIG5vdCBnb2luZyB0byByZXF1aXJlIHRoZSBn dWVzdAorY28tb3BlcmF0aW9uIHRvIHJlLW9wZW4gdGhlIGNoYW5uZWxzIGFuZCBzbyBpdCBzaG91 bGQgYmUgcG9zc2libGUgdG8gcmUtYnVpbGQgYQorc2hhcmVkIGluZm8gcGFnZSBmb3IgYW4gSFZN IGd1ZXN0IGZyb20gc3VjaCBvdGhlciBzdGF0ZS4KK05vdGUgdGhhdCB0aGUgc2hhcmVkIGluZm8g cGFnZSBhbHNvIGNvbnRhaW5zIGFuIGFycmF5IG9mIGBYRU5fTEVHQUNZX01BWF9WQ1BVU2AKKygz MikgYHZjcHVfaW5mb2Agc3RydWN0dXJlcy4gQSBkb21haW4gbWF5IG5vbWluYXRlIGEgZGlmZmVy ZW50IGd1ZXN0IHBoeXNpY2FsCithZGRyZXNzIHRvIHVzZSBmb3IgdGhlIHZjcHUgaW5mby4gVGhp cyBpcyBtYW5kYXRvcnkgZm9yIGlmIGEgZG9tYWluIHdhbnRzIHRvCit1c2UgbW9yZSB0aGFuIDMy IHZDUFVzIGFuZCBvcHRpb25hbCBmb3IgbGVnYWN5IHZDUFVzLiBUaGlzIG1hcHBpbmcgaXMgbm90 CitjdXJyZW50bHkgdHJhbnNmZXJyZWQgaW4gdGhlIG1pZ3JhdGlvbiBzdGF0ZSBzbyB0aGlzIHdp bGwgZWl0aGVyIG5lZWQgdG8gYmUKK2FkZGVkIGludG8gYW4gZXhpc3Rpbmcgc2F2ZSByZWNvcmQs IG9yIGFuIGFkZGl0aW9uYWwgdHlwZSBvZiBzYXZlIHJlY29yZCB3aWxsCitiZSBuZWVkZWQuCisK KyMjIyBYZW5zdG9yZSBXYXRjaGVzCisKK0FzIG1lbnRpb25lZCBhYm92ZSwgbm8gZG9tYWluIFhl bnN0b3JlIHN0YXRlIGlzIGN1cnJlbnRseSB0cmFuc2ZlcnJlZCBpbiB0aGUKK21pZ3JhdGlvbiBz dHJlYW0uIFRoZXJlIGlzIGEgcmVjb3JkIGRlZmluZWQgaW4gKkxpYlhlbkxpZ2h0IERvbWFpbiBJ bWFnZQorRm9ybWF0KiBbNF0gY2FsbGVkIGBFTVVMQVRPUl9YRU5TVE9SRV9EQVRBYCBmb3IgdHJh bnNmZXJyaW5nIFhlbnN0b3JlIG5vZGVzCityZWxhdGluZyB0byBlbXVsYXRvcnMgYnV0IG5vIHJl Y29yZCB0eXBlIGlzIGRlZmluZWQgZm9yIG5vZGVzIHJlbGF0aW5nIHRvIHRoZQorZG9tYWluIGl0 c2VsZiwgbm9yIGZvciByZWdpc3RlcmVkICp3YXRjaGVzKi4gQSBYZW5TdG9yZSB3YXRjaCBpcyBh IG1lY2hhbmlzbQordXNlZCBieSBQViBmcm9udGVuZCBhbmQgYmFja2VuZCBkcml2ZXJzIHRvIHJl cXVlc3QgYSBub3RpZmljYXRpb24gaWYgdGhlIHZhbHVlCitvZiBhIHBhcnRpY3VsYXIgbm9kZSAo ZS5nLiB0aGUgb3RoZXIgZW5k4oCZcyBzdGF0ZSBub2RlKSBjaGFuZ2VzLCBzbyBpdCBpcworaW1w b3J0YW50IHRoYXQgd2F0Y2hlcyBjb250aW51ZSB0byBmdW5jdGlvbiBhZnRlciBhIG1pZ3JhdGlv bi4gT25lIG9yIG1vcmUgbmV3CitzYXZlIHJlY29yZHMgd2lsbCB0aGVyZWZvcmUgYmUgcmVxdWly ZWQgdG8gdHJhbnNmZXIgWGVuc3RvcmUgc3RhdGUuIEl0IHdpbGwKK2Fsc28gYmUgbmVjZXNzYXJ5 IHRvIGV4dGVuZCB0aGUgKnN0b3JlKiBwcm90b2NvbFs1XSB3aXRoIG1lY2hhbmlzbXMgdG8gYWxs b3cKK3RoZSB0b29sc3RhY2sgdG8gYWNxdWlyZSB0aGUgbGlzdCBvZiB3YXRjaGVzIHRoYXQgdGhl IGd1ZXN0IGhhcyByZWdpc3RlcmVkIGFuZAorZm9yIHRoZSB0b29sc3RhY2sgdG8gcmVnaXN0ZXIg YSB3YXRjaCBvbiBiZWhhbGYgb2YgYSBkb21haW4uCisKKyMjIyBFdmVudCBjaGFubmVscworCitF dmVudCBjaGFubmVscyBhcmUgZXNzZW50aWFsbHkgdGhlIHBhcmEtdmlydHVhbCBlcXVpdmFsZW50 IG9mIGludGVycnVwdHMuIFRoZXkKK2FyZSBhbiBpbXBvcnRhbnQgcGFydCBvZiBwb3N0IFBWIHBy b3RvY29scy4gTm9ybWFsbHkgYSBmcm9udGVuZCBkcml2ZXIgY3JlYXRlcworYW4gKmludGVyLWRv bWFpbiogZXZlbnQgY2hhbm5lbCBiZXR3ZWVuIGl0cyBvd24gZG9tYWluIGFuZCB0aGUgZG9tYWlu IHJ1bm5pbmcKK3RoZSBiYWNrZW5kLCB3aGljaCBpdCBkaXNjb3ZlcnMgdXNpbmcgdGhlIGBiYWNr ZW5kLWlkYCBub2RlIGluIFhlbnN0b3JlIChzZWUKK2Fib3ZlKSwgYnkgbWFraW5nIGEgYEVWVENI Tk9QX2FsbG9jX3VuYm91bmRgIGh5cGVyY2FsbC4gVGhpcyBoeXBlcmNhbGwKK2FsbG9jYXRlcyBh biBldmVudCBjaGFubmVsIG9iamVjdCBpbiB0aGUgaHlwZXJ2aXNvciBhbmQgYXNzaWducyBhICps b2NhbCBwb3J0KgorbnVtYmVyIHdoaWNoIGlzIHRoZW4gd3JpdHRlbiBpbnRvIHRoZSBmcm9udGVu ZCBhcmVhIGluIFhlbnN0b3JlLiBUaGUgYmFja2VuZAorZHJpdmVyIHRoZW4gcmVhZHMgdGhpcyBw b3J0IG51bWJlciBhbmQgKmJpbmRzKiB0byB0aGUgZXZlbnQgY2hhbm5lbCBieQorc3BlY2lmeWlu ZyBpdCwgYW5kIHRoZSB2YWx1ZSBvZiBgZnJvbnRlbmQtaWRgLCBhcyAqcmVtb3RlIGRvbWFpbiog YW5kICpyZW1vdGUKK3BvcnQqIChyZXNwZWN0aXZlbHkpIHRvIGEgYEVWVENITk9QX2JpbmRfaW50 ZXJkb21haW5gIGh5cGVyY2FsbC4gT25jZQorY29ubmVjdGlvbiBpcyBlc3RhYmxpc2hlZCBpbiB0 aGlzIGZhc2hpb24gZnJvbnRlbmQgYW5kIGJhY2tlbmQgZHJpdmVycyBjYW4gdXNlCit0aGUgZXZl bnQgY2hhbm5lbCBhcyBhICptYWlsYm94KiB0byBub3RpZnkgZWFjaCBvdGhlciB3aGVuIGEgc2hh cmVkIHJpbmcgaGFzCitiZWVuIHVwZGF0ZWQgd2l0aCBuZXcgcmVxdWVzdHMgb3IgcmVzcG9uc2Ug c3RydWN0dXJlcy4KK0N1cnJlbnRseSBubyBldmVudCBjaGFubmVsIHN0YXRlIGlzIHByZXNlcnZl ZCBvbiBtaWdyYXRpb24sIHJlcXVpcmluZyBmcm9udGVuZAorYW5kIGJhY2tlbmQgZHJpdmVycyB0 byBjcmVhdGUgYW5kIGJpbmQgYSBjb21wbGV0ZSBuZXcgc2V0IG9mIGV2ZW50IGNoYW5uZWxzIGlu CitvcmRlciB0byByZS1lc3RhYmxpc2ggYSBwcm90b2NvbCBjb25uZWN0aW9uLiBIZW5jZSwgb25l IG9yIG1vcmUgbmV3IHNhdmUKK3JlY29yZHMgd2lsbCBiZSByZXF1aXJlZCB0byB0cmFuc2ZlciBl dmVudCBjaGFubmVsIHN0YXRlIGluIG9yZGVyIHRvIGF2b2lkIHRoZQorbmVlZCBmb3IgZXhwbGlj aXQgYWN0aW9uIGJ5IGZyb250ZW5kIGRyaXZlcnMgcnVubmluZyBpbiB0aGUgZ3Vlc3QuIE5vdGUg dGhhdAordGhlIGxvY2FsIHBvcnQgbnVtYmVycyBuZWVkIHRvIHByZXNlcnZlZCBpbiB0aGlzIHN0 YXRlIGFzIHRoZXkgYXJlIHRoZSBvbmx5Citjb250ZXh0IHRoZSBndWVzdCBoYXMgdG8gcmVmZXIg dG8gdGhlIGh5cGVydmlzb3IgZXZlbnQgY2hhbm5lbCBvYmplY3RzLgorIE5vdGUgYWxzbyB0aGF0 IHRoZSBQViAqc3RvcmUqIChYZW5zdG9yZSBhY2Nlc3MpIGFuZCAqY29uc29sZSogcHJvdG9jb2xz IGFsc28KK3JlbHkgb24gZXZlbnQgY2hhbm5lbHMgd2hpY2ggYXJlIHNldCB1cCBieSB0aGUgdG9v bHN0YWNrLiBOb3JtYWxseSwgZWFybHkgaW4KK21pZ3JhdGlvbiwgdGhlIHRvb2xzdGFjayBydW5u aW5nIG9uIHRoZSByZW1vdGUgaG9zdCB3b3VsZCBzZXQgdXAgYSBuZXcgcGFpciBvZgorZXZlbnQg Y2hhbm5lbHMgZm9yIHRoZXNlIHByb3RvY29scyBpbiB0aGUgZGVzdGluYXRpb24gZG9tYWluLiBU aGVzZSBtYXkgbm90IGJlCithc3NpZ25lZCB0aGUgc2FtZSBsb2NhbCBwb3J0IG51bWJlcnMgYXMg dGhlIHByb3RvY29scyBydW5uaW5nIGluIHRoZSBzb3VyY2UKK2RvbWFpbi4gRm9yIG5vbi1jb29w ZXJhdGl2ZSBtaWdyYXRpb24gdGhlc2UgY2hhbm5lbHMgbXVzdCBlaXRoZXIgYmUgY3JlYXRlZCB3 aXRoCitmaXhlZCBwb3J0IG51bWJlcnMsIG9yIHRoZWlyIGNyZWF0aW9uIG11c3QgYmUgYXZvaWRl ZCBhbmQgaW5zdGVhZCBiZSBpbmNsdWRlZAoraW4gdGhlIGdlbmVyYWwgZXZlbnQgY2hhbm5lbCBz dGF0ZSByZWNvcmQocykuCisKKyMjIyBHcmFudCB0YWJsZQorCitUaGUgZ3JhbnQgdGFibGUgaXMg ZXNzZW50aWFsbHkgdGhlIHBhcmEtdmlydHVhbCBlcXVpdmFsZW50IG9mIGFuIElPTU1VLiBGb3IK K2V4YW1wbGUsIHRoZSBzaGFyZWQgcmluZ3Mgb2YgYSBQViBwcm90b2NvbCBhcmUgKmdyYW50ZWQq IGJ5IGEgZnJvbnRlbmQgZHJpdmVyCit0byB0aGUgYmFja2VuZCBkcml2ZXIgYnkgYWxsb2NhdGlu ZyAqZ3JhbnQgZW50cmllcyogaW4gdGhlIGd1ZXN04oCZcyB0YWJsZSwKK2ZpbGxpbmcgaW4gZGV0 YWlscyBvZiB0aGUgbWVtb3J5IHBhZ2VzIGFuZCB0aGVuIHdyaXRpbmcgdGhlICpncmFudCByZWZl cmVuY2VzKgorKHRoZSBpbmRleCB2YWx1ZXMgb2YgdGhlIGdyYW50IGVudHJpZXMpIGludG8gWGVu c3RvcmUuIFRoZSBncmFudCByZWZlcmVuY2VzIG9mCit0aGUgcHJvdG9jb2wgYnVmZmVycyB0aGVt c2VsdmVzIGFyZSB0eXBpY2FsbHkgd3JpdHRlbiBkaXJlY3RseSBpbnRvIHRoZSByZXF1ZXN0Citz dHJ1Y3R1cmVzIHBhc3NlZCB2aWEgYSBzaGFyZWQgcmluZy4KK1RoZSBndWVzdCBpcyByZXNwb25z aWJsZSBmb3IgbWFuYWdpbmcgaXRzIG93biBncmFudCB0YWJsZS4gTm8gaHlwZXJjYWxsIGlzCity ZXF1aXJlZCB0byBncmFudCBhIG1lbW9yeSBwYWdlIHRvIGFub3RoZXIgZG9tYWluLiBJdCBpcyBz dWZmaWNpZW50IHRvIGZpbmQgYW4KK3VudXNlZCBncmFudCBlbnRyeSBhbmQgc2V0IGJpdHMgaW4g dGhlIGVudHJ5IHRvIGdpdmUgcmVhZCBhbmQvb3Igd3JpdGUgYWNjZXNzCit0byBhIHJlbW90ZSBk b21haW4gYWxzbyBzcGVjaWZpZWQgaW4gdGhlIGVudHJ5IGFsb25nIHdpdGggdGhlIHBhZ2UgZnJh bWUKK251bWJlci4gVGh1cyB0aGUgbGF5b3V0IGFuZCBjb250ZW50IG9mIHRoZSBncmFudCB0YWJs ZSBsb2dpY2FsbHkgZm9ybXMgcGFydCBvZgordGhlIGd1ZXN0IHN0YXRlLgorQ3VycmVudGx5IG5v IGdyYW50IHRhYmxlIHN0YXRlIGlzIG1pZ3JhdGVkLCByZXF1aXJpbmcgYSBndWVzdCB0byBzZXBh cmF0ZWx5CittYWludGFpbiBhbnkgc3RhdGUgdGhhdCBpdCB3aXNoZXMgdG8gcGVyc2lzdCBlbHNl d2hlcmUgaW4gaXRzIG1lbW9yeSBpbWFnZSBhbmQKK3RoZW4gcmVzdG9yZSBpdCBhZnRlciBtaWdy YXRpb24uIFRodXMgdG8gYXZvaWQgdGhlIG5lZWQgZm9yIHN1Y2ggZXhwbGljaXQKK2FjdGlvbiBi eSB0aGUgZ3Vlc3QsIG9uZSBvciBtb3JlIG5ldyBzYXZlIHJlY29yZHMgd2lsbCBiZSByZXF1aXJl ZCB0byBtaWdyYXRlCit0aGUgY29udGVudHMgb2YgdGhlIGdyYW50IHRhYmxlLgorCisjIE91dGxp bmUgUHJvcG9zYWwKKworKiBQViBiYWNrZW5kIGRyaXZlcnMgd2lsbCBiZSBtb2RpZmllZCB0byB1 bmlsYXRlcmFsbHkgcmUtZXN0YWJsaXNoIGNvbm5lY3Rpb24KK3RvIGEgZnJvbnRlbmQgaWYgdGhl IGJhY2tlbmQgc3RhdGUgbm9kZSBpcyByZXN0b3JlZCB3aXRoIHZhbHVlIDQKKyhYZW5idXNTdGF0 ZUNvbm5lY3RlZClbNl0uCisqIFRoZSB0b29sc3RhY2sgc2hvdWxkIGJlIG1vZGlmaWVkIHRvIGFs bG93IGRvbWlkIHRvIGJlIHJhbmRvbWl6ZWQgb24gaW5pdGlhbAorY3JlYXRpb24gb3IgZGVmYXVs dCBtaWdyYXRpb24sIGJ1dCBtYWtlIGl0IGlkZW50aWNhbCB0byB0aGUgc291cmNlIGRvbWFpbiBv bgorbm9uLWNvb3BlcmF0aXZlIG1pZ3JhdGlvbi4gTm9uLUNvb3BlcmF0aXZlIG1pZ3JhdGlvbiB3 aWxsIGhhdmUgdG8gYmUgZGVuaWVkIGlmIHRoZQorZG9taWQgaXMgdW5hdmFpbGFibGUgb24gdGhl IHRhcmdldCBob3N0LCBidXQgcmFuZG9taXphdGlvbiBvZiBkb21pZCBvbiBjcmVhdGlvbgorc2hv dWxkIGhvcGVmdWxseSBtaW5pbWl6ZSB0aGUgbGlrZWxpaG9vZCBvZiB0aGlzLiBOb24tQ29vcGVy YXRpdmUgbWlncmF0aW9uIHRvCitsb2NhbGhvc3Qgd2lsbCBjbGVhcmx5IG5vdCBiZSBwb3NzaWJs ZS4gUGF0Y2hlcyBoYXZlIGFscmVhZHkgYmVlbiBzZW50IHRvCitgeGVuLWRldmVsYCB0byBtYWtl IHRoaXMgY2hhbmdlWzddLgorKiBgeGVuc3RvcmVkYCBzaG91bGQgYmUgbW9kaWZpZWQgdG8gaW1w bGVtZW50IHRoZSBuZXcgbWVjaGFuaXNtcyBuZWVkZWQuIFNlZQorKk90aGVyIFBhcmEtVmlydHVh bCBTdGF0ZSogYWJvdmUuIEEgZnVydGhlciBkZXNpZ24gZG9jdW1lbnQgd2lsbCBwcm9wb3NlCith ZGRpdGlvbmFsIHByb3RvY29sIG1lc3NhZ2VzLgorKiBXaXRoaW4gdGhlIG1pZ3JhdGlvbiBzdHJl YW0gZXh0cmEgc2F2ZSByZWNvcmRzIHdpbGwgYmUgZGVmaW5lZCBhcyByZXF1aXJlZC4KK1NlZSAq T3RoZXIgUGFyYS1WaXJ0dWFsIFN0YXRlKiBhYm92ZS4gQSBmdXJ0aGVyIGRlc2lnbiBkb2N1bWVu dCB3aWxsIHByb3Bvc2UKK21vZGlmaWNhdGlvbnMgdG8gdGhlIExpYlhlbkxpZ2h0IGFuZCBMaWJY ZW5DdHJsIERvbWFpbiBJbWFnZSBGb3JtYXRzLgorKiBBbiBvcHRpb24gc2hvdWxkIGJlIGFkZGVk IHRvIHRoZSB0b29sc3RhY2sgdG8gaW5pdGlhdGUgYSBub24tY29vcGVyYXRpdmUKK21pZ3JhdGlv biwgaW5zdGVhZCBvZiB0aGUgKGRlZmF1bHQpIHBvdGVudGlhbGx5IGNvLW9wZXJhdGl2ZSBtaWdy YXRpb24uCitFc3NlbnRpYWxseSB0aGlzIHNob3VsZCBza2lwIHRoZSBjaGVjayB0byBzZWUgaWYg UFYgZHJpdmVycyBhbmQgbWlncmF0ZSBhcyBpZgordGhlcmUgYXJlIG5vbmUgcHJlc2VudCwgYnV0 IGFsc28gZW5hYmxpbmcgdGhlIGV4dHJhIHNhdmUgcmVjb3Jkcy4gTm90ZSB0aGF0IGF0CitsZWFz dCBzb21lIG9mIHRoZSBleHRyYSByZWNvcmRzIHNob3VsZCBvbmx5IGZvcm0gcGFydCBvZiBhIG5v bi1jb29wZXJhdGl2ZQorbWlncmF0aW9uIHN0cmVhbS4gRm9yIGV4YW1wbGUsIG1pZ3JhdGluZyBl dmVudCBjaGFubmVsIHN0YXRlIHdvdWxkIGJlIGNvdW50ZXIKK3Byb2R1Y3RpdmUgaW4gYSBub3Jt YWwgbWlncmF0aW9uIGFzIHRoaXMgd2lsbCBlc3NlbnRpYWxseSBsZWFrIGV2ZW50IGNoYW5uZWwK K29iamVjdHMgYXQgdGhlIHJlY2VpdmluZyBlbmQuIE90aGVycywgc3VjaCBhcyBncmFudCB0YWJs ZSBzdGF0ZSwgY291bGQKK3BvdGVudGlhbGx5IGhhcm1sZXNzbHkgZm9ybSBwYXJ0IG9mIGEgbm9y bWFsIG1pZ3JhdGlvbiBzdHJlYW0uCisKKyogKiAqCitbMV0gUFYgZHJpdmVycyBhcmUgZGVlbWVk IHRvIGJlIGluc3RhbGxlZCBpZiB0aGUgSFZNIHBhcmFtZXRlcgorKkhWTV9QQVJBTV9DQUxMQkFD S19JUlEqIGhhcyBiZWVuIHNldCB0byBhIG5vbi16ZXJvIHZhbHVlLgorCitbMl0gU2VlIGh0dHBz Oi8veGVuYml0cy54ZW4ub3JnL2dpdHdlYi8/cD14ZW4uZ2l0O2E9YmxvYjtmPXhlbi9pbmNsdWRl L3B1YmxpYy9pby94ZW5idXMuaAorCitbM10gU2VlIGh0dHBzOi8veGVuYml0cy54ZW4ub3JnL2dp dHdlYi8/cD14ZW4uZ2l0O2E9YmxvYjtmPWRvY3Mvc3BlY3MvbGlieGMtbWlncmF0aW9uLXN0cmVh bS5wYW5kb2MKKworWzRdIFNlZSBodHRwczovL3hlbmJpdHMueGVuLm9yZy9naXR3ZWIvP3A9eGVu LmdpdDthPWJsb2I7Zj1kb2NzL3NwZWNzL2xpYnhsLW1pZ3JhdGlvbi1zdHJlYW0ucGFuZG9jCisK K1s1XSBTZWUgaHR0cHM6Ly94ZW5iaXRzLnhlbi5vcmcvZ2l0d2ViLz9wPXhlbi5naXQ7YT1ibG9i O2Y9ZG9jcy9taXNjL3hlbnN0b3JlLnR4dAorCitbNl0gYHhlbi1ibGtiYWNrYCBhbmQgYHhlbi1u ZXRiYWNrYCBoYXZlIGFscmVhZHkgYmVlbiBtb2RpZmllZCBpbiBMaW51eCB0byBkbwordGhpcy4K KworWzddIFNlZSBodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL2FyY2hpdmVzL2h0bWwveGVu LWRldmVsLzIwMjAtMDEvbXNnMDA2MzIuaHRtbAorCi0tIAoyLjIwLjEKCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0 Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qu b3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs