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,URIBL_BLOCKED,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 76542C3B189 for ; Thu, 13 Feb 2020 10:54:06 +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 3FD8924649 for ; Thu, 13 Feb 2020 10:54:06 +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="jAb6YXdq" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 3FD8924649 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 1j2C7s-00032p-75; Thu, 13 Feb 2020 10:53:44 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1j2C7r-00032k-1H for xen-devel@lists.xenproject.org; Thu, 13 Feb 2020 10:53:43 +0000 X-Inumbo-ID: 188ad15c-4e4f-11ea-b882-12813bfff9fa Received: from smtp-fw-33001.amazon.com (unknown [207.171.190.10]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id 188ad15c-4e4f-11ea-b882-12813bfff9fa; Thu, 13 Feb 2020 10:53:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209; t=1581591222; x=1613127222; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=m9OOtZ2Rzfo1KGJdFA9kvOVVTpXs2zKEtWLrOEuik+k=; b=jAb6YXdqUoQ0HdSOhnYCO9lnRqzyx0R2WhYBTgKkI8CHTQDcUKVM9Ks1 LRZsUCq9T68AHv0jyp2QdDXnfc7lSs7dwRWJPo8zUYAdz3igGQTZlafql 9dzvv5CVVRTm/2J8NTJ8k4N40EydL1Idi2YZWLknLr2FdTEQaoWi5xm1s M=; IronPort-SDR: vCMMTYeUhGgqs3cgJOY+UGQKinNVIiqYONtpwQTRNHPicab+3691JH15qo8SallfanUz0+6Pk/ IyEb4SbCIygA== X-IronPort-AV: E=Sophos;i="5.70,436,1574121600"; d="scan'208";a="26188702" Received: from sea32-co-svc-lb4-vlan3.sea.corp.amazon.com (HELO email-inbound-relay-1e-62350142.us-east-1.amazon.com) ([10.47.23.38]) by smtp-border-fw-out-33001.sea14.amazon.com with ESMTP; 13 Feb 2020 10:53:39 +0000 Received: from EX13MTAUEA002.ant.amazon.com (iad55-ws-svc-p15-lb9-vlan3.iad.amazon.com [10.40.159.166]) by email-inbound-relay-1e-62350142.us-east-1.amazon.com (Postfix) with ESMTPS id 4D12DA29C2; Thu, 13 Feb 2020 10:53:35 +0000 (UTC) Received: from EX13D32EUC004.ant.amazon.com (10.43.164.121) by EX13MTAUEA002.ant.amazon.com (10.43.61.77) with Microsoft SMTP Server (TLS) id 15.0.1236.3; Thu, 13 Feb 2020 10:53:34 +0000 Received: from EX13MTAUEA002.ant.amazon.com (10.43.61.77) by EX13D32EUC004.ant.amazon.com (10.43.164.121) with Microsoft SMTP Server (TLS) id 15.0.1367.3; Thu, 13 Feb 2020 10:53:33 +0000 Received: from u2f063a87eabd5f.cbg10.amazon.com (10.125.106.135) by mail-relay.amazon.com (10.43.61.169) with Microsoft SMTP Server id 15.0.1236.3 via Frontend Transport; Thu, 13 Feb 2020 10:53:31 +0000 From: Paul Durrant To: Date: Thu, 13 Feb 2020 10:53:24 +0000 Message-ID: <20200213105325.3022-2-pdurrant@amazon.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200213105325.3022-1-pdurrant@amazon.com> References: <20200213105325.3022-1-pdurrant@amazon.com> MIME-Version: 1.0 Precedence: Bulk Subject: [Xen-devel] [PATCH v5 1/2] 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 , Jan Beulich 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 aW5pIDxzc3RhYmVsbGluaUBrZXJuZWwub3JnPgpDYzogV2VpIExpdSA8d2xAeGVuLm9yZz4KCnY1 OgogLSBOb3RlIHRoYXQgUFYgZG9tYWluIGFyZSBub3QganVzdCBleHBlY3RlZCB0byBjby1vcGVy YXRlLCB0aGV5IGFyZQogICByZXF1aXJlZCB0bwoKdjQ6CiAtIEZpeCBpc3N1ZXMgcmFpc2VkIGJ5 IFdlaQoKdjI6CiAtIFVzZSB0aGUgdGVybSAnbm9uLWNvb3BlcmF0aXZlJyBpbnN0ZWFkIG9mICd0 cmFuc3BhcmVudCcKIC0gUmVwbGFjZSAndHJ1c3QgaW4nIHdpdGggJ3JlbGlhbmNlIG9uJyB3aGVu IHJlZmVycmluZyB0byBndWVzdC1zaWRlCiAgIHNvZnR3YXJlCi0tLQogZG9jcy9kZXNpZ25zL25v bi1jb29wZXJhdGl2ZS1taWdyYXRpb24ubWQgfCAyNzIgKysrKysrKysrKysrKysrKysrKysrKwog MSBmaWxlIGNoYW5nZWQsIDI3MiBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgZG9j cy9kZXNpZ25zL25vbi1jb29wZXJhdGl2ZS1taWdyYXRpb24ubWQKCmRpZmYgLS1naXQgYS9kb2Nz L2Rlc2lnbnMvbm9uLWNvb3BlcmF0aXZlLW1pZ3JhdGlvbi5tZCBiL2RvY3MvZGVzaWducy9ub24t Y29vcGVyYXRpdmUtbWlncmF0aW9uLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAuLjA5Zjc0YzhjMGQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2Rlc2lnbnMvbm9uLWNv b3BlcmF0aXZlLW1pZ3JhdGlvbi5tZApAQCAtMCwwICsxLDI3MiBAQAorIyBOb24tQ29vcGVyYXRp dmUgTWlncmF0aW9uIG9mIEd1ZXN0cyBvbiBYZW4KKworIyMgQmFja2dyb3VuZAorCitUaGUgbm9y bWFsIG1vZGVsIG9mIG1pZ3JhdGlvbiBpbiBYZW4gaXMgZHJpdmVuIGJ5IHRoZSBndWVzdCBiZWNh dXNlIGl0IHdhcworb3JpZ2luYWxseSBpbXBsZW1lbnRlZCBmb3IgUFYgZ3Vlc3RzLCB3aGVyZSB0 aGUgZ3Vlc3QgbXVzdCBiZSBhd2FyZSBpdCBpcworcnVubmluZyB1bmRlciBYZW4gYW5kIGlzIGhl bmNlIGV4cGVjdGVkIHRvIGNvLW9wZXJhdGUuIFRoaXMgbW9kZWwgZGF0ZXMgZnJvbQorYW4gZXJh IHdoZW4gaXQgd2FzIGFzc3VtZWQgdGhhdCB0aGUgaG9zdCBhZG1pbmlzdHJhdG9yIGhhZCBjb250 cm9sIG9mIGF0IGxlYXN0Cit0aGUgcHJpdmlsZWdlZCBzb2Z0d2FyZSBydW5uaW5nIGluIHRoZSBn dWVzdCAoaS5lLiB0aGUgZ3Vlc3Qga2VybmVsKSB3aGljaCBtYXkKK3N0aWxsIGJlIHRydWUgaW4g YW4gZW50ZXJwcmlzZSBkZXBsb3ltZW50IGJ1dCBpcyBub3QgZ2VuZXJhbGx5IHRydWUgaW4gYSBj bG91ZAorZW52aXJvbm1lbnQuIFRoZSBhaW0gb2YgdGhpcyBkZXNpZ24gaXMgdG8gcHJvdmlkZSBh IG1vZGVsIHdoaWNoIGlzIHB1cmVseSBob3N0Citkcml2ZW4sIHJlcXVpcmluZyBubyBjby1vcGVy YXRpb24gZnJvbSB0aGUgc29mdHdhcmUgcnVubmluZyBpbiB0aGUKK2d1ZXN0LCBhbmQgaXMgdGh1 cyBzdWl0YWJsZSBmb3IgY2xvdWQgc2NlbmFyaW9zLgorCitQViBndWVzdHMgYXJlIG91dCBvZiBz Y29wZSBmb3IgdGhpcyBwcm9qZWN0IGJlY2F1c2UsIGFzIGlzIG91dGxpbmVkIGFib3ZlLCB0aGV5 CitoYXZlIGEgc3ltYmlvdGljIHJlbGF0aW9uc2hpcCB3aXRoIHRoZSBoeXBlcnZpc29yIGFuZCB0 aGVyZWZvcmUgYSBjZXJ0YWluIGxldmVsCitvZiBjby1vcGVyYXRpb24gaXMgcmVxdWlyZWQuCisK K0hWTSBndWVzdHMgY2FuIGFscmVhZHkgYmUgbWlncmF0ZWQgb24gWGVuIHdpdGhvdXQgZ3Vlc3Qg Y28tb3BlcmF0aW9uIGJ1dCBvbmx5CitpZiB0aGV5IGRvbuKAmXQgaGF2ZSBQViBkcml2ZXJzIGlu c3RhbGxlZFsxXSBvciBhcmUgaW4gcG93ZXIgc3RhdGUgUzMuIFRoZQorcmVhc29uIGZvciBub3Qg ZXhwZWN0aW5nIGNvLW9wZXJhdGlvbiBpZiB0aGUgZ3Vlc3QgaXMgaW4gUzMgaXMgb2J2aW91cywg YnV0IHRoZQorcmVhc29uIGNvLW9wZXJhdGlvbiBpcyBleHBlY3RlZCBpZiBQViBkcml2ZXJzIGFy ZSBpbnN0YWxsZWQgaXMgZHVlIHRvIHRoZQorbmF0dXJlIG9mIFBWIHByb3RvY29scy4KKworIyMg WGVuc3RvcmUgTm9kZXMgYW5kIERvbWFpbiBJRAorCitUaGUgUFYgZHJpdmVyIG1vZGVsIGNvbnNp c3RzIG9mIGEgKmZyb250ZW5kKiBhbmQgYSAqYmFja2VuZCouIFRoZSBmcm9udGVuZCBydW5zCitp bnNpZGUgdGhlIGd1ZXN0IGRvbWFpbiBhbmQgdGhlIGJhY2tlbmQgcnVucyBpbnNpZGUgYSAqc2Vy dmljZSBkb21haW4qIHdoaWNoCittYXkgb3IgbWF5IG5vdCBiZSBkb21haW4gMC4gVGhlIGZyb250 ZW5kIGFuZCBiYWNrZW5kIHR5cGljYWxseSBwYXNzIGRhdGEgdmlhCittZW1vcnkgcGFnZXMgd2hp Y2ggYXJlIHNoYXJlZCBiZXR3ZWVuIHRoZSB0d28gZG9tYWlucywgYnV0IHRoaXMgY2hhbm5lbCBv ZgorY29tbXVuaWNhdGlvbiBpcyBnZW5lcmFsbHkgZXN0YWJsaXNoZWQgdXNpbmcgeGVuc3RvcmUg KHRoZSBzdG9yZSBwcm90b2NvbAoraXRzZWxmIGJlaW5nIGFuIGV4Y2VwdGlvbiB0byB0aGlzIGZv ciBvYnZpb3VzIGNoaWNrZW4tYW5kLWVnZyByZWFzb25zKS4KKworVHlwaWNhbCBwcm90b2NvbCBl c3RhYmxpc2htZW50IGlzIGJhc2VkIG9uIHVzZSBvZiB0d28gc2VwYXJhdGUgeGVuc3RvcmUKKyph cmVhcyouIElmIHdlIGNvbnNpZGVyIFBWIGRyaXZlcnMgZm9yIHRoZSAqbmV0aWYqIHByb3RvY29s IChpLmUuIGNsYXNzIHZpZikKK2FuZCBhc3N1bWUgdGhlIGd1ZXN0IGhhcyBkb21pZCBYLCB0aGUg c2VydmljZSBkb21haW4gaGFzIGRvbWlkIFksIGFuZCB0aGUgdmlmCitoYXMgaW5kZXggWiB0aGVu IHRoZSBmcm9udGVuZCBhcmVhIHdpbGwgcmVzaWRlIHVuZGVyIHRoZSBwYXJlbnQgbm9kZToKKwor YC9sb2NhbC9kb21haW4vWS9kZXZpY2UvdmlmL1pgCisKK0FsbCBiYWNrZW5kcywgYnkgY29udmVu dGlvbiwgdHlwaWNhbGx5IHJlc2lkZSB1bmRlciBwYXJlbnQgbm9kZToKKworYC9sb2NhbC9kb21h aW4vWC9iYWNrZW5kYAorCithbmQgdGhlIG5vcm1hbCBiYWNrZW5kIGFyZWEgZm9yIHZpZiBaIHdv dWxkIGJlOgorCitgL2xvY2FsL2RvbWFpbi9YL2JhY2tlbmQvdmlmL1kvWmAKKworYnV0IHRoaXMg c2hvdWxkIG5vdCBiZSBhc3N1bWVkLgorCitUaGUgdG9vbHN0YWNrIHdpbGwgcGxhY2UgdHdvIG5v ZGVzIGluIHRoZSBmcm9udGVuZCBhcmVhIHRvIGV4cGxpY2l0bHkgbG9jYXRlCit0aGUgYmFja2Vu ZDoKKworICAgICogYGJhY2tlbmRgOiB0aGUgZnVsbHkgcXVhbGlmaWVkIHhlbnN0b3JlIHBhdGgg b2YgdGhlIGJhY2tlbmQgYXJlYQorICAgICogYGJhY2tlbmQtaWRgOiB0aGUgZG9taWQgb2YgdGhl IHNlcnZpY2UgZG9tYWluCisKK2FuZCBzaW1pbGFybHkgdHdvIG5vZGVzIGluIHRoZSBiYWNrZW5k IGFyZWEgdG8gbG9jYXRlIHRoZSBmcm9udGVuZCBhcmVhOgorCisgICAgKiBgZnJvbnRlbmRgOiB0 aGUgZnVsbHkgcXVhbGlmaWVkIHhlbnN0b3JlIHBhdGggb2YgdGhlIGZyb250ZW5kIGFyZWEKKyAg ICAqIGBmcm9udGVuZC1pZGA6IHRoZSBkb21pZCBvZiB0aGUgZ3Vlc3QgZG9tYWluCisKKworVGhl IGd1ZXN0IGRvbWFpbiBvbmx5IGhhcyB3cml0ZSBwZXJtaXNzaW9uIHRvIHRoZSBmcm9udGVuZCBh cmVhIGFuZCBzaW1pbGFybHkKK3RoZSBzZXJ2aWNlIGRvbWFpbiBvbmx5IGhhcyB3cml0ZSBwZXJt aXNzaW9uIHRvIHRoZSBiYWNrZW5kIGFyZWEsIGJ1dCBib3RoIGVuZHMKK2hhdmUgcmVhZCBwZXJt aXNzaW9uIHRvIGJvdGggYXJlYXMuCisKK1VuZGVyIGJvdGggZnJvbnRlbmQgYW5kIGJhY2tlbmQg YXJlYXMgaXMgYSBub2RlIGNhbGxlZCAqc3RhdGUqLiBUaGlzIGlzIGtleSB0bworcHJvdG9jb2wg ZXN0YWJsaXNobWVudC4gVXBvbiBQViBkZXZpY2UgY3JlYXRpb24gdGhlIHRvb2xzdGFjayB3aWxs IHNldCB0aGUKK3ZhbHVlIG9mIGJvdGggc3RhdGUgbm9kZXMgdG8gMSAoWGVuYnVzU3RhdGVJbml0 aWFsaXNpbmdbMl0pLiBUaGlzIHNob3VsZCBjYXVzZQorZW51bWVyYXRpb24gb2YgYXBwcm9wcmlh dGUgZGV2aWNlcyBpbiBib3RoIHRoZSBndWVzdCBhbmQgc2VydmljZSBkb21haW5zLiBUaGUKK2Jh Y2tlbmQgZGV2aWNlLCBvbmNlIGl0IGhhcyB3cml0dGVuIGFueSBuZWNlc3NhcnkgcHJvdG9jb2wg c3BlY2lmaWMgaW5mb3JtYXRpb24KK2ludG8gdGhlIHhlbnN0b3JlIGJhY2tlbmQgYXJlYSAodG8g YmUgcmVhZCBieSB0aGUgZnJvbnRlbmQgZHJpdmVyKSB3aWxsIHVwZGF0ZQordGhlIGJhY2tlbmQg c3RhdGUgbm9kZSB0byAyIChYZW5idXNTdGF0ZUluaXRXYWl0KS4gRnJvbSB0aGlzIHBvaW50IG9u IFBWCitwcm90b2NvbHMgZGlmZmVyIHNsaWdodGx5OyB0aGUgZm9sbG93aW5nIGlsbHVzdHJhdGlv biBpcyB0cnVlIG9mIHRoZSBuZXRpZgorcHJvdG9jb2wuCisKK1Vwb24gc2VlaW5nIGEgYmFja2Vu ZCBzdGF0ZSB2YWx1ZSBvZiAyLCB0aGUgZnJvbnRlbmQgZHJpdmVyIHdpbGwgdGhlbiByZWFkIHRo ZQorcHJvdG9jb2wgc3BlY2lmaWMgaW5mb3JtYXRpb24sIHdyaXRlIGRldGFpbHMgb2YgZ3JhbnQg cmVmZXJlbmNlcyAoZm9yIHNoYXJlZAorcGFnZXMpIGFuZCBldmVudCBjaGFubmVsIHBvcnRzIChm b3Igc2lnbmFsbGluZykgdGhhdCBpdCBoYXMgY3JlYXRlZCwgYW5kIHNldAordGhlIHN0YXRlIG5v ZGUgaW4gdGhlIGZyb250ZW5kIGFyZWEgdG8gNCAoWGVuYnVzU3RhdGVDb25uZWN0ZWQpLiBVcG9u IHNlZSB0aGlzCitmcm9udGVuZCBzdGF0ZSwgdGhlIGJhY2tlbmQgZHJpdmVyIHdpbGwgdGhlbiBy ZWFkIHRoZSBncmFudCByZWZlcmVuY2VzIChtYXBwaW5nCit0aGUgc2hhcmVkIHBhZ2VzKSBhbmQg ZXZlbnQgY2hhbm5lbCBwb3J0cyAob3BlbmluZyBpdHMgZW5kIG9mIHRoZW0pIGFuZCBzZXQgdGhl CitzdGF0ZSBub2RlIGluIHRoZSBiYWNrZW5kIGFyZWEgdG8gNC4gUHJvdG9jb2wgZXN0YWJsaXNo bWVudCBpcyBub3cgY29tcGxldGUgYW5kCit0aGUgZnJvbnRlbmQgYW5kIGJhY2tlbmQgc3RhcnQg dG8gcGFzcyBkYXRhLgorCitCZWNhdXNlIHRoZSBkb21pZCBvZiBib3RoIGVuZHMgb2YgYSBQViBw cm90b2NvbCBmb3JtcyBhIGtleSBwYXJ0IG9mIG5lZ290aWF0aW5nCit0aGUgZGF0YSBwbGFuZSBm b3IgdGhhdCBwcm90b2NvbCAoYmVjYXVzZSBpdCBpcyBlbmNvZGVkIGludG8gYm90aCB4ZW5zdG9y ZQorbm9kZXMgYW5kIG5vZGUgcGF0aHMpLCBhbmQgYmVjYXVzZSBndWVzdOKAmXMgb3duIGRvbWlk IGFuZCB0aGUgZG9taWQgb2YgdGhlCitzZXJ2aWNlIGRvbWFpbiBhcmUgdmlzaWJsZSB0byB0aGUg Z3Vlc3QgaW4geGVuc3RvcmUgKGFuZCBoZW5jZSBtYXkgY2FjaGVkCitpbnRlcm5hbGx5KSwgYW5k IG5laXRoZXIgYXJlIG5lY2Vzc2FyaWx5IHByZXNlcnZlZCBkdXJpbmcgbWlncmF0aW9uLCBpdCBp cworaGVuY2UgbmVjZXNzYXJ5IHRvIGhhdmUgdGhlIGNvLW9wZXJhdGlvbiBvZiB0aGUgZnJvbnRl bmQgaW4gcmUtbmVnb3RpYXRpbmcgdGhlCitwcm90b2NvbCB1c2luZyB0aGUgbmV3IGRvbWlkIGFm dGVyIG1pZ3JhdGlvbi4KKworTW9yZW92ZXIgdGhlIGJhY2tlbmQtaWQgdmFsdWUgd2lsbCBiZSB1 c2VkIGJ5IHRoZSBmcm9udGVuZCBkcml2ZXIgaW4gc2V0dGluZyB1cAorZ3JhbnQgdGFibGUgZW50 cmllcyBhbmQgZXZlbnQgY2hhbm5lbHMgdG8gY29tbXVuaWNhdGUgd2l0aCB0aGUgc2VydmljZSBk b21haW4sCitzbyB0aGUgY28tb3BlcmF0aW9uIG9mIHRoZSBndWVzdCBpcyByZXF1aXJlZCB0byBy ZS1lc3RhYmxpc2ggdGhlc2UgaW4gdGhlIG5ldworaG9zdCBlbnZpcm9ubWVudCBhZnRlciBtaWdy YXRpb24uCisKK1RodXMgaWYgd2UgYXJlIHRvIGNoYW5nZSB0aGUgbW9kZWwgYW5kIHN1cHBvcnQg bWlncmF0aW9uIG9mIGEgZ3Vlc3Qgd2l0aCBQVgorZHJpdmVycywgd2l0aG91dCB0aGUgY28tb3Bl cmF0aW9uIG9mIHRoZSBmcm9udGVuZCBkcml2ZXIgY29kZSwgdGhlIHBhdGhzIGFuZAordmFsdWVz IGluIGJvdGggdGhlIGZyb250ZW5kIGFuZCBiYWNrZW5kIHhlbnN0b3JlIGFyZWFzIG11c3QgcmVt YWluIHVuY2hhbmdlZAorYW5kIHZhbGlkIGluIHRoZSBuZXcgaG9zdCBlbnZpcm9ubWVudCwgYW5k IHRoZSBncmFudCB0YWJsZSBlbnRyaWVzIGFuZCBldmVudAorY2hhbm5lbHMgbXVzdCBiZSBwcmVz ZXJ2ZWQgKGFuZCByZW1haW4gb3BlcmF0aW9uYWwgb25jZSBndWVzdCBleGVjdXRpb24gaXMKK3Jl c3VtZWQpLgorCitCZWNhdXNlIHRoZSBzZXJ2aWNlIGRvbWFpbuKAmXMgZG9taWQgaXMgdXNlZCBk aXJlY3RseSBieSB0aGUgZ3Vlc3QgaW4gc2V0dGluZwordXAgZ3JhbnQgZW50cmllcyBhbmQgZXZl bnQgY2hhbm5lbHMsIHRoZSBiYWNrZW5kIGRyaXZlcnMgaW4gdGhlIG5ldyBob3N0CitlbnZpcm9u bWVudCBtdXN0IGJlIHByb3ZpZGVkIGJ5IHNlcnZpY2UgZG9tYWluIHdpdGggdGhlIHNhbWUgZG9t aWQuIEFsc28sCitiZWNhdXNlIHRoZSBndWVzdCBjYW4gc2FtcGxlIGl0cyBvd24gZG9taWQgZnJv bSB0aGUgZnJvbnRlbmQgYXJlYSBhbmQgdXNlIGl0IGluCitoeXBlcmNhbGxzIChlLmcuIEhWTU9Q X3NldF9wYXJhbSkgcmF0aGVyIHRoYW4gRE9NSURfU0VMRiwgdGhlIGd1ZXN0IGRvbWlkIG11c3QK K2Fsc28gYmUgcHJlc2VydmVkIHRvIG1haW50YWluIHRoZSBBQkkuCisKK0Z1cnRoZXJtb3JlLCBp dCB3aWxsIG5lY2Vzc2FyeSB0byBtb2RpZnkgYmFja2VuZCBkcml2ZXJzIHRvIHJlLWVzdGFibGlz aAorY29tbXVuaWNhdGlvbiB3aXRoIGZyb250ZW5kIGRyaXZlcnMgd2l0aG91dCBwZXJ0dXJiaW5n IHRoZSBjb250ZW50IG9mIHRoZQorYmFja2VuZCBhcmVhIG9yIHJlcXVpcmluZyBhbnkgY2hhbmdl cyB0byB0aGUgdmFsdWVzIG9mIHRoZSB4ZW5zdG9yZSBzdGF0ZSBub2Rlcy4KKworIyMgT3RoZXIg UGFyYS1WaXJ0dWFsIFN0YXRlCisKKyMjIyBTaGFyZWQgUmluZ3MKKworQmVjYXVzZSB0aGUgY29u c29sZSBhbmQgc3RvcmUgcHJvdG9jb2wgc2hhcmVkIHBhZ2VzIGFyZSBhY3R1YWxseSBwYXJ0IG9m IHRoZQorZ3Vlc3QgbWVtb3J5IGltYWdlIChpbiBhbiBFODIwIHJlc2VydmVkIHJlZ2lvbiBqdXN0 IGJlbG93IDRHKSB0aGVuIHRoZSBjb250ZW50Cit3aWxsIGdldCBtaWdyYXRlZCBhcyBwYXJ0IG9m IHRoZSBndWVzdCBtZW1vcnkgaW1hZ2UuIEhlbmNlIG5vIGFkZGl0aW9uYWwgY29kZQoraXMgcmVx dWlyZSB0byBwcmV2ZW50IGFueSBndWVzdCB2aXNpYmxlIGNoYW5nZSBpbiB0aGUgY29udGVudC4K KworIyMjIFNoYXJlZCBJbmZvCisKK1RoZXJlIGlzIGFscmVhZHkgYSByZWNvcmQgZGVmaW5lZCBp biAqbGlieGVuY3RybCBEb21haW4gSW1hZ2UgRm9ybWF0KiBbM10KK2NhbGxlZCBgU0hBUkVEX0lO Rk9gIHdoaWNoIHNpbXBseSBjb250YWlucyBhIGNvbXBsZXRlIGNvcHkgb2YgdGhlIGRvbWFpbuKA mXMKK3NoYXJlZCBpbmZvIHBhZ2UuIEl0IGlzIG5vdCBjdXJyZW50bHkgaW5jdWRlZCBpbiBhbiBI Vk0gKHR5cGUgYDB4MDAwMmApCittaWdyYXRpb24gc3RyZWFtLiBJdCBtYXkgYmUgZmVhc2libGUg dG8gaW5jbHVkZSBpdCBhcyBhbiBvcHRpb25hbCByZWNvcmQKK2J1dCBpdCBpcyBub3QgY2xlYXIg dGhhdCB0aGUgY29udGVudCBvZiB0aGUgc2hhcmVkIGluZm8gcGFnZSBldmVyIG5lZWRzCit0byBi ZSBwcmVzZXJ2ZWQgZm9yIGFuIEhWTSBndWVzdC4KKworRm9yIGEgUFYgZ3Vlc3QgdGhlIGBhcmNo X3NoYXJlZF9pbmZvYCBzdWItc3RydWN0dXJlIGNvbnRhaW5zIGltcG9ydGFudAoraW5mb3JtYXRp b24gYWJvdXQgdGhlIGd1ZXN04oCZcyBQMk0sIGJ1dCB0aGlzIGluZm9ybWF0aW9uIGlzIG5vdCBy ZWxldmFudCBmb3IKK2FuIEhWTSBndWVzdCB3aGVyZSB0aGUgUDJNIGlzIG5vdCBkaXJlY3RseSBt YW5pcHVsYXRlZCB2aWEgdGhlIGd1ZXN0LiBUaGUgb3RoZXIKK3N0YXRlIGNvbnRhaW5lZCBpbiB0 aGUgYHNoYXJlZF9pbmZvYCBzdHJ1Y3R1cmUgcmVsYXRlcyB0aGUgZG9tYWluIHdhbGwtY2xvY2sK Kyh0aGUgc3RhdGUgb2Ygd2hpY2ggc2hvdWxkIGFscmVhZHkgYmUgdHJhbnNmZXJyZWQgYnkgdGhl IGBSVENgIEhWTSBjb250ZXh0CitpbmZvcm1hdGlvbiB3aGljaCBjb250YWluZWQgaW4gdGhlIGBI Vk1fQ09OVEVYVGAgc2F2ZSByZWNvcmQpIGFuZCBzb21lIGV2ZW50CitjaGFubmVsIHN0YXRlIChw YXJ0aWN1bGFybHkgaWYgdXNpbmcgdGhlICoybCogcHJvdG9jb2wpLiBFdmVudCBjaGFubmVsIHN0 YXRlCit3aWxsIG5lZWQgdG8gYmUgZnVsbHkgdHJhbnNmZXJyZWQgaWYgd2UgYXJlIG5vdCBnb2lu ZyB0byByZXF1aXJlIHRoZSBndWVzdAorY28tb3BlcmF0aW9uIHRvIHJlLW9wZW4gdGhlIGNoYW5u ZWxzIGFuZCBzbyBpdCBzaG91bGQgYmUgcG9zc2libGUgdG8gcmUtYnVpbGQgYQorc2hhcmVkIGlu Zm8gcGFnZSBmb3IgYW4gSFZNIGd1ZXN0IGZyb20gc3VjaCBvdGhlciBzdGF0ZS4KKworTm90ZSB0 aGF0IHRoZSBzaGFyZWQgaW5mbyBwYWdlIGFsc28gY29udGFpbnMgYW4gYXJyYXkgb2YgYFhFTl9M RUdBQ1lfTUFYX1ZDUFVTYAorKDMyKSBgdmNwdV9pbmZvYCBzdHJ1Y3R1cmVzLiBBIGRvbWFpbiBt YXkgbm9taW5hdGUgYSBkaWZmZXJlbnQgZ3Vlc3QgcGh5c2ljYWwKK2FkZHJlc3MgdG8gdXNlIGZv ciB0aGUgdmNwdSBpbmZvLiBUaGlzIGlzIG1hbmRhdG9yeSBmb3IgaWYgYSBkb21haW4gd2FudHMg dG8KK3VzZSBtb3JlIHRoYW4gMzIgdkNQVXMgYW5kIG9wdGlvbmFsIGZvciBsZWdhY3kgdkNQVXMu IFRoaXMgbWFwcGluZyBpcyBub3QKK2N1cnJlbnRseSB0cmFuc2ZlcnJlZCBpbiB0aGUgbWlncmF0 aW9uIHN0YXRlIHNvIHRoaXMgd2lsbCBlaXRoZXIgbmVlZCB0byBiZQorYWRkZWQgaW50byBhbiBl eGlzdGluZyBzYXZlIHJlY29yZCwgb3IgYW4gYWRkaXRpb25hbCB0eXBlIG9mIHNhdmUgcmVjb3Jk IHdpbGwKK2JlIG5lZWRlZC4KKworIyMjIFhlbnN0b3JlIFdhdGNoZXMKKworQXMgbWVudGlvbmVk IGFib3ZlLCBubyBkb21haW4gWGVuc3RvcmUgc3RhdGUgaXMgY3VycmVudGx5IHRyYW5zZmVycmVk IGluIHRoZQorbWlncmF0aW9uIHN0cmVhbS4gVGhlcmUgaXMgYSByZWNvcmQgZGVmaW5lZCBpbiAq bGlieGVubGlnaHQgRG9tYWluIEltYWdlCitGb3JtYXQqIFs0XSBjYWxsZWQgYEVNVUxBVE9SX1hF TlNUT1JFX0RBVEFgIGZvciB0cmFuc2ZlcnJpbmcgWGVuc3RvcmUgbm9kZXMKK3JlbGF0aW5nIHRv IGVtdWxhdG9ycyBidXQgbm8gcmVjb3JkIHR5cGUgaXMgZGVmaW5lZCBmb3Igbm9kZXMgcmVsYXRp bmcgdG8gdGhlCitkb21haW4gaXRzZWxmLCBub3IgZm9yIHJlZ2lzdGVyZWQgKndhdGNoZXMqLiBB IFhlblN0b3JlIHdhdGNoIGlzIGEgbWVjaGFuaXNtCit1c2VkIGJ5IFBWIGZyb250ZW5kIGFuZCBi YWNrZW5kIGRyaXZlcnMgdG8gcmVxdWVzdCBhIG5vdGlmaWNhdGlvbiBpZiB0aGUgdmFsdWUKK29m IGEgcGFydGljdWxhciBub2RlIChlLmcuIHRoZSBvdGhlciBlbmTigJlzIHN0YXRlIG5vZGUpIGNo YW5nZXMsIHNvIGl0IGlzCitpbXBvcnRhbnQgdGhhdCB3YXRjaGVzIGNvbnRpbnVlIHRvIGZ1bmN0 aW9uIGFmdGVyIGEgbWlncmF0aW9uLiBPbmUgb3IgbW9yZSBuZXcKK3NhdmUgcmVjb3JkcyB3aWxs IHRoZXJlZm9yZSBiZSByZXF1aXJlZCB0byB0cmFuc2ZlciBYZW5zdG9yZSBzdGF0ZS4gSXQgd2ls bAorYWxzbyBiZSBuZWNlc3NhcnkgdG8gZXh0ZW5kIHRoZSAqc3RvcmUqIHByb3RvY29sWzVdIHdp dGggbWVjaGFuaXNtcyB0byBhbGxvdwordGhlIHRvb2xzdGFjayB0byBhY3F1aXJlIHRoZSBsaXN0 IG9mIHdhdGNoZXMgdGhhdCB0aGUgZ3Vlc3QgaGFzIHJlZ2lzdGVyZWQgYW5kCitmb3IgdGhlIHRv b2xzdGFjayB0byByZWdpc3RlciBhIHdhdGNoIG9uIGJlaGFsZiBvZiBhIGRvbWFpbi4KKworIyMj IEV2ZW50IGNoYW5uZWxzCisKK0V2ZW50IGNoYW5uZWxzIGFyZSBlc3NlbnRpYWxseSB0aGUgcGFy YS12aXJ0dWFsIGVxdWl2YWxlbnQgb2YgaW50ZXJydXB0cy4gVGhleQorYXJlIGFuIGltcG9ydGFu dCBwYXJ0IG9mIHBvc3QgUFYgcHJvdG9jb2xzLiBOb3JtYWxseSBhIGZyb250ZW5kIGRyaXZlciBj cmVhdGVzCithbiAqaW50ZXItZG9tYWluKiBldmVudCBjaGFubmVsIGJldHdlZW4gaXRzIG93biBk b21haW4gYW5kIHRoZSBkb21haW4gcnVubmluZwordGhlIGJhY2tlbmQsIHdoaWNoIGl0IGRpc2Nv dmVycyB1c2luZyB0aGUgYGJhY2tlbmQtaWRgIG5vZGUgaW4gWGVuc3RvcmUgKHNlZQorYWJvdmUp LCBieSBtYWtpbmcgYSBgRVZUQ0hOT1BfYWxsb2NfdW5ib3VuZGAgaHlwZXJjYWxsLiBUaGlzIGh5 cGVyY2FsbAorYWxsb2NhdGVzIGFuIGV2ZW50IGNoYW5uZWwgb2JqZWN0IGluIHRoZSBoeXBlcnZp c29yIGFuZCBhc3NpZ25zIGEgKmxvY2FsIHBvcnQqCitudW1iZXIgd2hpY2ggaXMgdGhlbiB3cml0 dGVuIGludG8gdGhlIGZyb250ZW5kIGFyZWEgaW4gWGVuc3RvcmUuIFRoZSBiYWNrZW5kCitkcml2 ZXIgdGhlbiByZWFkcyB0aGlzIHBvcnQgbnVtYmVyIGFuZCAqYmluZHMqIHRvIHRoZSBldmVudCBj aGFubmVsIGJ5CitzcGVjaWZ5aW5nIGl0LCBhbmQgdGhlIHZhbHVlIG9mIGBmcm9udGVuZC1pZGAs IGFzICpyZW1vdGUgZG9tYWluKiBhbmQgKnJlbW90ZQorcG9ydCogKHJlc3BlY3RpdmVseSkgdG8g YSBgRVZUQ0hOT1BfYmluZF9pbnRlcmRvbWFpbmAgaHlwZXJjYWxsLiBPbmNlCitjb25uZWN0aW9u IGlzIGVzdGFibGlzaGVkIGluIHRoaXMgZmFzaGlvbiBmcm9udGVuZCBhbmQgYmFja2VuZCBkcml2 ZXJzIGNhbiB1c2UKK3RoZSBldmVudCBjaGFubmVsIGFzIGEgKm1haWxib3gqIHRvIG5vdGlmeSBl YWNoIG90aGVyIHdoZW4gYSBzaGFyZWQgcmluZyBoYXMKK2JlZW4gdXBkYXRlZCB3aXRoIG5ldyBy ZXF1ZXN0cyBvciByZXNwb25zZSBzdHJ1Y3R1cmVzLgorCitDdXJyZW50bHkgbm8gZXZlbnQgY2hh bm5lbCBzdGF0ZSBpcyBwcmVzZXJ2ZWQgb24gbWlncmF0aW9uLCByZXF1aXJpbmcgZnJvbnRlbmQK K2FuZCBiYWNrZW5kIGRyaXZlcnMgdG8gY3JlYXRlIGFuZCBiaW5kIGEgY29tcGxldGUgbmV3IHNl dCBvZiBldmVudCBjaGFubmVscyBpbgorb3JkZXIgdG8gcmUtZXN0YWJsaXNoIGEgcHJvdG9jb2wg Y29ubmVjdGlvbi4gSGVuY2UsIG9uZSBvciBtb3JlIG5ldyBzYXZlCityZWNvcmRzIHdpbGwgYmUg cmVxdWlyZWQgdG8gdHJhbnNmZXIgZXZlbnQgY2hhbm5lbCBzdGF0ZSBpbiBvcmRlciB0byBhdm9p ZCB0aGUKK25lZWQgZm9yIGV4cGxpY2l0IGFjdGlvbiBieSBmcm9udGVuZCBkcml2ZXJzIHJ1bm5p bmcgaW4gdGhlIGd1ZXN0LiBOb3RlIHRoYXQKK3RoZSBsb2NhbCBwb3J0IG51bWJlcnMgbmVlZCB0 byBwcmVzZXJ2ZWQgaW4gdGhpcyBzdGF0ZSBhcyB0aGV5IGFyZSB0aGUgb25seQorY29udGV4dCB0 aGUgZ3Vlc3QgaGFzIHRvIHJlZmVyIHRvIHRoZSBoeXBlcnZpc29yIGV2ZW50IGNoYW5uZWwgb2Jq ZWN0cy4KKyBOb3RlIGFsc28gdGhhdCB0aGUgUFYgKnN0b3JlKiAoWGVuc3RvcmUgYWNjZXNzKSBh bmQgKmNvbnNvbGUqIHByb3RvY29scyBhbHNvCityZWx5IG9uIGV2ZW50IGNoYW5uZWxzIHdoaWNo IGFyZSBzZXQgdXAgYnkgdGhlIHRvb2xzdGFjay4gTm9ybWFsbHksIGVhcmx5IGluCittaWdyYXRp b24sIHRoZSB0b29sc3RhY2sgcnVubmluZyBvbiB0aGUgcmVtb3RlIGhvc3Qgd291bGQgc2V0IHVw IGEgbmV3IHBhaXIgb2YKK2V2ZW50IGNoYW5uZWxzIGZvciB0aGVzZSBwcm90b2NvbHMgaW4gdGhl IGRlc3RpbmF0aW9uIGRvbWFpbi4gVGhlc2UgbWF5IG5vdCBiZQorYXNzaWduZWQgdGhlIHNhbWUg bG9jYWwgcG9ydCBudW1iZXJzIGFzIHRoZSBwcm90b2NvbHMgcnVubmluZyBpbiB0aGUgc291cmNl Citkb21haW4uIEZvciBub24tY29vcGVyYXRpdmUgbWlncmF0aW9uIHRoZXNlIGNoYW5uZWxzIG11 c3QgZWl0aGVyIGJlIGNyZWF0ZWQgd2l0aAorZml4ZWQgcG9ydCBudW1iZXJzLCBvciB0aGVpciBj cmVhdGlvbiBtdXN0IGJlIGF2b2lkZWQgYW5kIGluc3RlYWQgYmUgaW5jbHVkZWQKK2luIHRoZSBn ZW5lcmFsIGV2ZW50IGNoYW5uZWwgc3RhdGUgcmVjb3JkKHMpLgorCisjIyMgR3JhbnQgdGFibGUK KworVGhlIGdyYW50IHRhYmxlIGlzIGVzc2VudGlhbGx5IHRoZSBwYXJhLXZpcnR1YWwgZXF1aXZh bGVudCBvZiBhbiBJT01NVS4gRm9yCitleGFtcGxlLCB0aGUgc2hhcmVkIHJpbmdzIG9mIGEgUFYg cHJvdG9jb2wgYXJlICpncmFudGVkKiBieSBhIGZyb250ZW5kIGRyaXZlcgordG8gdGhlIGJhY2tl bmQgZHJpdmVyIGJ5IGFsbG9jYXRpbmcgKmdyYW50IGVudHJpZXMqIGluIHRoZSBndWVzdOKAmXMg dGFibGUsCitmaWxsaW5nIGluIGRldGFpbHMgb2YgdGhlIG1lbW9yeSBwYWdlcyBhbmQgdGhlbiB3 cml0aW5nIHRoZSAqZ3JhbnQgcmVmZXJlbmNlcyoKKyh0aGUgaW5kZXggdmFsdWVzIG9mIHRoZSBn cmFudCBlbnRyaWVzKSBpbnRvIFhlbnN0b3JlLiBUaGUgZ3JhbnQgcmVmZXJlbmNlcyBvZgordGhl IHByb3RvY29sIGJ1ZmZlcnMgdGhlbXNlbHZlcyBhcmUgdHlwaWNhbGx5IHdyaXR0ZW4gZGlyZWN0 bHkgaW50byB0aGUgcmVxdWVzdAorc3RydWN0dXJlcyBwYXNzZWQgdmlhIGEgc2hhcmVkIHJpbmcu CisKK1RoZSBndWVzdCBpcyByZXNwb25zaWJsZSBmb3IgbWFuYWdpbmcgaXRzIG93biBncmFudCB0 YWJsZS4gTm8gaHlwZXJjYWxsIGlzCityZXF1aXJlZCB0byBncmFudCBhIG1lbW9yeSBwYWdlIHRv IGFub3RoZXIgZG9tYWluLiBJdCBpcyBzdWZmaWNpZW50IHRvIGZpbmQgYW4KK3VudXNlZCBncmFu dCBlbnRyeSBhbmQgc2V0IGJpdHMgaW4gdGhlIGVudHJ5IHRvIGdpdmUgcmVhZCBhbmQvb3Igd3Jp dGUgYWNjZXNzCit0byBhIHJlbW90ZSBkb21haW4gYWxzbyBzcGVjaWZpZWQgaW4gdGhlIGVudHJ5 IGFsb25nIHdpdGggdGhlIHBhZ2UgZnJhbWUKK251bWJlci4gVGh1cyB0aGUgbGF5b3V0IGFuZCBj b250ZW50IG9mIHRoZSBncmFudCB0YWJsZSBsb2dpY2FsbHkgZm9ybXMgcGFydCBvZgordGhlIGd1 ZXN0IHN0YXRlLgorCitDdXJyZW50bHkgbm8gZ3JhbnQgdGFibGUgc3RhdGUgaXMgbWlncmF0ZWQs IHJlcXVpcmluZyBhIGd1ZXN0IHRvIHNlcGFyYXRlbHkKK21haW50YWluIGFueSBzdGF0ZSB0aGF0 IGl0IHdpc2hlcyB0byBwZXJzaXN0IGVsc2V3aGVyZSBpbiBpdHMgbWVtb3J5IGltYWdlIGFuZAor dGhlbiByZXN0b3JlIGl0IGFmdGVyIG1pZ3JhdGlvbi4gVGh1cyB0byBhdm9pZCB0aGUgbmVlZCBm b3Igc3VjaCBleHBsaWNpdAorYWN0aW9uIGJ5IHRoZSBndWVzdCwgb25lIG9yIG1vcmUgbmV3IHNh dmUgcmVjb3JkcyB3aWxsIGJlIHJlcXVpcmVkIHRvIG1pZ3JhdGUKK3RoZSBjb250ZW50cyBvZiB0 aGUgZ3JhbnQgdGFibGUuCisKKyMgT3V0bGluZSBQcm9wb3NhbAorCisqIFBWIGJhY2tlbmQgZHJp dmVycyB3aWxsIGJlIG1vZGlmaWVkIHRvIHVuaWxhdGVyYWxseSByZS1lc3RhYmxpc2ggY29ubmVj dGlvbgordG8gYSBmcm9udGVuZCBpZiB0aGUgYmFja2VuZCBzdGF0ZSBub2RlIGlzIHJlc3RvcmVk IHdpdGggdmFsdWUgNAorKFhlbmJ1c1N0YXRlQ29ubmVjdGVkKVs2XS4KKworKiBUaGUgdG9vbHN0 YWNrIHNob3VsZCBiZSBtb2RpZmllZCB0byBhbGxvdyBkb21pZCB0byBiZSByYW5kb21pemVkIG9u IGluaXRpYWwKK2NyZWF0aW9uIG9yIGRlZmF1bHQgbWlncmF0aW9uLCBidXQgbWFrZSBpdCBpZGVu dGljYWwgdG8gdGhlIHNvdXJjZSBkb21haW4gb24KK25vbi1jb29wZXJhdGl2ZSBtaWdyYXRpb24u IE5vbi1Db29wZXJhdGl2ZSBtaWdyYXRpb24gd2lsbCBoYXZlIHRvIGJlIGRlbmllZCBpZiB0aGUK K2RvbWlkIGlzIHVuYXZhaWxhYmxlIG9uIHRoZSB0YXJnZXQgaG9zdCwgYnV0IHJhbmRvbWl6YXRp b24gb2YgZG9taWQgb24gY3JlYXRpb24KK3Nob3VsZCBob3BlZnVsbHkgbWluaW1pemUgdGhlIGxp a2VsaWhvb2Qgb2YgdGhpcy4gTm9uLUNvb3BlcmF0aXZlIG1pZ3JhdGlvbiB0bworbG9jYWxob3N0 IHdpbGwgY2xlYXJseSBub3QgYmUgcG9zc2libGUuIFBhdGNoZXMgaGF2ZSBhbHJlYWR5IGJlZW4g c2VudCB0bworYHhlbi1kZXZlbGAgdG8gbWFrZSB0aGlzIGNoYW5nZVs3XS4KKworKiBgeGVuc3Rv cmVkYCBzaG91bGQgYmUgbW9kaWZpZWQgdG8gaW1wbGVtZW50IHRoZSBuZXcgbWVjaGFuaXNtcyBu ZWVkZWQuIFNlZQorKk90aGVyIFBhcmEtVmlydHVhbCBTdGF0ZSogYWJvdmUuIEEgZnVydGhlciBk ZXNpZ24gZG9jdW1lbnQgd2lsbCBwcm9wb3NlCithZGRpdGlvbmFsIHByb3RvY29sIG1lc3NhZ2Vz LgorCisqIFdpdGhpbiB0aGUgbWlncmF0aW9uIHN0cmVhbSBleHRyYSBzYXZlIHJlY29yZHMgd2ls bCBiZSBkZWZpbmVkIGFzIHJlcXVpcmVkLgorU2VlICpPdGhlciBQYXJhLVZpcnR1YWwgU3RhdGUq IGFib3ZlLiBBIGZ1cnRoZXIgZGVzaWduIGRvY3VtZW50IHdpbGwgcHJvcG9zZQorbW9kaWZpY2F0 aW9ucyB0byB0aGUgbGlieGVubGlnaHQgYW5kIGxpYnhlbmN0cmwgRG9tYWluIEltYWdlIEZvcm1h dHMuCisKKyogQW4gb3B0aW9uIHNob3VsZCBiZSBhZGRlZCB0byB0aGUgdG9vbHN0YWNrIHRvIGlu aXRpYXRlIGEgbm9uLWNvb3BlcmF0aXZlCittaWdyYXRpb24sIGluc3RlYWQgb2YgdGhlIChkZWZh dWx0KSBwb3RlbnRpYWxseSBjby1vcGVyYXRpdmUgbWlncmF0aW9uLgorRXNzZW50aWFsbHkgdGhp cyBzaG91bGQgc2tpcCB0aGUgY2hlY2sgdG8gc2VlIGlmIFBWIGRyaXZlcnMgYW5kIG1pZ3JhdGUg YXMgaWYKK3RoZXJlIGFyZSBub25lIHByZXNlbnQsIGJ1dCBhbHNvIGVuYWJsaW5nIHRoZSBleHRy YSBzYXZlIHJlY29yZHMuIE5vdGUgdGhhdCBhdAorbGVhc3Qgc29tZSBvZiB0aGUgZXh0cmEgcmVj b3JkcyBzaG91bGQgb25seSBmb3JtIHBhcnQgb2YgYSBub24tY29vcGVyYXRpdmUKK21pZ3JhdGlv biBzdHJlYW0uIEZvciBleGFtcGxlLCBtaWdyYXRpbmcgZXZlbnQgY2hhbm5lbCBzdGF0ZSB3b3Vs ZCBiZSBjb3VudGVyCitwcm9kdWN0aXZlIGluIGEgbm9ybWFsIG1pZ3JhdGlvbiBhcyB0aGlzIHdp bGwgZXNzZW50aWFsbHkgbGVhayBldmVudCBjaGFubmVsCitvYmplY3RzIGF0IHRoZSByZWNlaXZp bmcgZW5kLiBPdGhlcnMsIHN1Y2ggYXMgZ3JhbnQgdGFibGUgc3RhdGUsIGNvdWxkCitwb3RlbnRp YWxseSBoYXJtbGVzc2x5IGZvcm0gcGFydCBvZiBhIG5vcm1hbCBtaWdyYXRpb24gc3RyZWFtLgor CisqICogKgorWzFdIFBWIGRyaXZlcnMgYXJlIGRlZW1lZCB0byBiZSBpbnN0YWxsZWQgaWYgdGhl IEhWTSBwYXJhbWV0ZXIKKypIVk1fUEFSQU1fQ0FMTEJBQ0tfSVJRKiBoYXMgYmVlbiBzZXQgdG8g YSBub24temVybyB2YWx1ZS4KKworWzJdIFNlZSBodHRwczovL3hlbmJpdHMueGVuLm9yZy9naXR3 ZWIvP3A9eGVuLmdpdDthPWJsb2I7Zj14ZW4vaW5jbHVkZS9wdWJsaWMvaW8veGVuYnVzLmgKKwor WzNdIFNlZSBodHRwczovL3hlbmJpdHMueGVuLm9yZy9naXR3ZWIvP3A9eGVuLmdpdDthPWJsb2I7 Zj1kb2NzL3NwZWNzL2xpYnhjLW1pZ3JhdGlvbi1zdHJlYW0ucGFuZG9jCisKK1s0XSBTZWUgaHR0 cHM6Ly94ZW5iaXRzLnhlbi5vcmcvZ2l0d2ViLz9wPXhlbi5naXQ7YT1ibG9iO2Y9ZG9jcy9zcGVj cy9saWJ4bC1taWdyYXRpb24tc3RyZWFtLnBhbmRvYworCitbNV0gU2VlIGh0dHBzOi8veGVuYml0 cy54ZW4ub3JnL2dpdHdlYi8/cD14ZW4uZ2l0O2E9YmxvYjtmPWRvY3MvbWlzYy94ZW5zdG9yZS50 eHQKKworWzZdIGB4ZW4tYmxrYmFja2AgYW5kIGB4ZW4tbmV0YmFja2AgaGF2ZSBhbHJlYWR5IGJl ZW4gbW9kaWZpZWQgaW4gTGludXggdG8gZG8KK3RoaXMuCisKK1s3XSBTZWUgaHR0cHM6Ly9saXN0 cy54ZW5wcm9qZWN0Lm9yZy9hcmNoaXZlcy9odG1sL3hlbi1kZXZlbC8yMDIwLTAxL21zZzAwNjMy Lmh0bWwKKwotLSAKMi4yMC4xCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJv amVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hl bi1kZXZlbA==