From owner-freebsd-transport@freebsd.org Tue Jan 12 20:00:04 2021 Return-Path: Delivered-To: freebsd-transport@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 8EC1A4E4883 for ; Tue, 12 Jan 2021 20:00:04 +0000 (UTC) (envelope-from Cheng.Cui@netapp.com) Received: from NAM11-BN8-obe.outbound.protection.outlook.com (mail-bn8nam11on2051.outbound.protection.outlook.com [40.107.236.51]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mail.protection.outlook.com", Issuer "GlobalSign Organization Validation CA - SHA256 - G3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4DFhJ30z5Fz4Zyb; Tue, 12 Jan 2021 20:00:02 +0000 (UTC) (envelope-from Cheng.Cui@netapp.com) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=nayzEVYutPV2dVt2rQ3IPp0oPriWmY+3FfnNkWTeXh72FIGOq2Q30mP2QBChFSMFHYDUDtQ29eAm2Ucgx6u7U/78Ut/MY+YCMgjZAfKetpsUFy3fnfUhdT4wRaxMgFLRez82gHWMsNRfLKH2Kwp+2QKSL78AHTZr8at06aIUGCN5fBwNGrI9pIFBE7b9rMDSN3QEbwMO+pmTofgx+qVo8EQIi+FXnuAJc7lwQ8dLqv/Js4VhqK50M5cq4K/E3L+249wGDAIuX42yM2XK1wt9I8FCzSAZ/B0nE0cqKlQyiMjWSC3p8fmXKn7O2GInvTwJIDTrAyXx7Kr1Eh6nATEO9Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=+afMsdKCjf57biW/l3Oelvohii1kxEFPehGJI6WUPGA=; b=eU34G+1qfAuQN2cEKHKRXJyXJ1noEoNYhXVbJADk7893zsQ35PAIhOMWl/mmai44G8qgy1ZSNWJubCEDJkO3+WW/NBeXeNrmL0nUmYynyXN6vyZg5AGSQho0cINtKcoHW3GjHc3X/T4CLRCqF3XTrGJPg9+xVyiWnXqVH5JifxrN8+MVq2B2IOPTiAMYkkYf8Lwb54IK5Iq1Z9aYaIF86XWlFG2JfltVyiyiHDpWewjszMY5sF2RCVg0WSVLmbH/TfQ5V1MVN1n5YPyyGXmfaHJr5OZWOIS0OKb53JREtiNXgOfVkueJcz+MoiDUUOZHGvDmuNNWtOdxRBuPa4XOPg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=netapp.com; dmarc=pass action=none header.from=netapp.com; dkim=pass header.d=netapp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=netapp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=+afMsdKCjf57biW/l3Oelvohii1kxEFPehGJI6WUPGA=; b=mL4vuCKNgDhYK6T68Jpiu2TojJylHJbf22L59ptKVQUD+toSrIfjAXu3TEDHwTpKSYkhHyFS9z+NxjRSU9GO278k9OkHuycTLqVfOEjxlhlDF5d6H5NTVI6Yf+mK5T0NpEziVM78cqItrkEJgn1A9MmqfbhKEGYgX0u4eB83lZqhCqMyazXJ9eCQchVixaL5EB8UaEuk5XVjY4V3wtGdPDOEDugkaOEn/ZnoX0fL/WkF5MbBOoR4FwXHi9sQ49mdj1mnrEOah5bCoH76zymGB9RyDyOcAfCu4mxFV8MXyr1kJVHflYe3O8qbz6hHsEaBJ5GgdFaCbJuo3TXfJFk2Pg== Received: from MN2PR06MB6511.namprd06.prod.outlook.com (2603:10b6:208:20a::14) by MN2PR06MB6544.namprd06.prod.outlook.com (2603:10b6:208:1f6::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3742.6; Tue, 12 Jan 2021 19:59:52 +0000 Received: from MN2PR06MB6511.namprd06.prod.outlook.com ([fe80::973:fbf3:5c9f:dad2]) by MN2PR06MB6511.namprd06.prod.outlook.com ([fe80::973:fbf3:5c9f:dad2%3]) with mapi id 15.20.3742.012; Tue, 12 Jan 2021 19:59:52 +0000 From: "Cui, Cheng" To: Lawrence Stewart , "Scheffenegger, Richard" CC: "freebsd-transport@freebsd.org" Subject: Re: [Differential] D26807: move cwnd and ssthresh updates into individual congestion control module Thread-Topic: [Differential] D26807: move cwnd and ssthresh updates into individual congestion control module Thread-Index: AQHW6R197GLPipICCke56IHF68XuYw== Date: Tue, 12 Jan 2021 19:59:52 +0000 Message-ID: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Microsoft-MacOutlook/16.44.20121301 x-originating-ip: [216.240.30.25] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: feac6b2b-5ac5-47b1-1ad4-08d8b734a045 x-ms-traffictypediagnostic: MN2PR06MB6544: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: Owsuzu48CtdnLxWzdLNICSbC7mOSsQGcTk+wdKERLqqkb+Iy15ZWJrEdcqChgeEbohtB8/bNtUPM+gzatStCX8Ve/ti6sBnOFbnB5jZzXpRD7ISGVDmno4R+2bSh7WxCWH9FgD6fq+AEde9AT5dJHVxtV+NplSnX4VDRNf9pYsypQh19lkQkfmIYW9a+NY6NTpkRq0L5hRR1li0oFk9/i7awb4voc82SkqbGbtZ+VyD4eg9UzYVYBF+FYLtxuNNW9LOccY/dfLPJCF6BaidTjz1SQr6PTCPKMyTXy8/iUIyFQShAVQKdTCqqwP0ydcz0EExG/iFBEz147mCrjYvHQPKnGjwrtsemGgPFaDcINUD8ro6RNcNSHSSXN1nNXafKDyW62RVhQ99K6+6Z1xuUpB2zVRyG1PxMX8KDtfOEVK59V1/p+erLZtFG+IXu1T6C+5H3MflMlJDcRvPhewMYELMAUY7OoJLiNyDdGStxSa7te6/Rpe8NU8wPZ5jx0mmHVUCxySc794BEMTE4TUUcrA== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MN2PR06MB6511.namprd06.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(39860400002)(136003)(346002)(396003)(366004)(376002)(4326008)(64756008)(15650500001)(2616005)(316002)(33656002)(186003)(76116006)(110136005)(66446008)(66476007)(66574015)(6486002)(71200400001)(6506007)(450100002)(53546011)(8676002)(6636002)(66556008)(5660300002)(30864003)(86362001)(26005)(6512007)(83380400001)(478600001)(36756003)(8936002)(66946007)(966005)(2906002)(45980500001); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: =?utf-8?B?Z3NVZnVhSjRsU1Q3bHY4NVJ3aGJVVkRXcWQvREt4Y3dnL3hyb2NFeHJFaGky?= =?utf-8?B?c3h5akc0WS80bTRxVGx2N254VUNVSy94OFA4SVp4clY1ZkswOG1qc0E5cG0r?= =?utf-8?B?YitNTjdYdDVVV1NqbU1SYXVwV0V0S3J5bWlGVlFLck9LOVNHOS9XeDArR2NS?= =?utf-8?B?SmlKTzh2dThTTHkvVkZVaCtQcndJWHp4TVBILy9Md2xuc2VUTHMxVHNYanV6?= =?utf-8?B?ZGZ2azhwbEdsZ0dDYnd6NDZFTmJHdVF6NCtjclBWSkJQUithUWR3b1haZVJk?= =?utf-8?B?SUFEeU9PWUpJSVN0QTBqRTMrNk9OZU1IMXQ0c3FTTVVhdGMzREVxRFBKT2xs?= =?utf-8?B?ODZRQ0J0c2dmTktIM1BaMDRLdXNNT2xuVVcrekZjSUlLaHhMd29OUHhYRk1R?= =?utf-8?B?a0VrbkNua0NxV1A3SjY3c1V5c0RBS0x5MGVBNzBUcHFZZU1TOGlNcmRnQVEw?= =?utf-8?B?VzRDYmlJclFzQmt2VDVvNThGRFd3cXo4QlJ4UXNQNmVqU3lHVmxmdlgxeVZt?= =?utf-8?B?N3c1ck1CVjVINkpRNlhnVGxVcGdNUng2NVVlZTludFJkY2hvQ2RoUFd2R0JH?= =?utf-8?B?elhRZWY4OXhZN0FoTDhka3llYkVjbDdna3ZISU42WE9CUU5ESnlaalc2b1Ra?= =?utf-8?B?RWo2SXp3OTBxMDdNbmFTVnhlYVNKb2QvWXB5SWpTd00zMDgwZ2tBcncrcHZk?= =?utf-8?B?QWhLSUsxYWwwWGYwRm10R2d3ZE5UckttRlRLcUprK3FaZHBGOHhoWHd1VGJV?= =?utf-8?B?ZHNEc25OanpMZDNYQXJnZzluZ3lQWFlWcFJReERxaXgzb21ka1BRMXhpTG85?= =?utf-8?B?aUtXemlpQ1dreitwRlhVVFA2NE9aS01KcDloSGR3c1NsYm5NS0dLTFh2amRN?= =?utf-8?B?TlMwNkcxdnpRSjlCOEVHT2xxSTlKTHVoekFtVkNkRi9iTWJaVGxKcTBjRDAw?= =?utf-8?B?SHBjQndzV09ETlA0YXVqN2FhSGJ2ZkE5eHZUV2hrbXc1UzczMzYyY0dZakhz?= =?utf-8?B?ZVRNVnllSnU5a3hMTFROUEpyd0FrUHM3aVFBVkVodEduK0ZNbGJXVUErbHNv?= =?utf-8?B?RThEYjNFblJCa3hJVkhKNDJVN20raWs4N3g0VkN4YWp6TE45Nk95eWZ2b0M4?= =?utf-8?B?MnQwU2Z1bUUzakV1QSswS3Nac3VrL3NwREozVWI2VExwdEtSVVJMYm51YUZW?= =?utf-8?B?UEVQYjhuN3BTd1hTMk5ZaEVvNUZqb3JPRm9oTGtYMVY2TGRWdytqcm1MY0Mx?= =?utf-8?B?SE9hZG9IRmZWWVV5Z2ZMQnNaRTJmYzVHcWpVMll1VFZMcFhqVzMyemRTK1Zm?= =?utf-8?Q?oBjplhEsbZkSwSviCAHMs3A2J3J818ZCuk?= Content-Type: text/plain; charset="utf-8" Content-ID: <755EE72E2647754CA00962B012182F54@namprd06.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: netapp.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MN2PR06MB6511.namprd06.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: feac6b2b-5ac5-47b1-1ad4-08d8b734a045 X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Jan 2021 19:59:52.7244 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 4b0911a0-929b-4715-944b-c03745165b3a X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: O0pWLY5tb1s7NW6oycrtZnXZPBR5FZEsPyxi8/EQOMrFPMj0QoXI2/oIwrk50D54yvwhJM85uRPFxt06ntnJZA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR06MB6544 X-Rspamd-Queue-Id: 4DFhJ30z5Fz4Zyb X-Spamd-Bar: ---- Authentication-Results: mx1.freebsd.org; dkim=pass header.d=netapp.com header.s=selector1 header.b=mL4vuCKN; arc=pass (microsoft.com:s=arcselector9901:i=1); dmarc=none; spf=pass (mx1.freebsd.org: domain of Cheng.Cui@netapp.com designates 40.107.236.51 as permitted sender) smtp.mailfrom=Cheng.Cui@netapp.com X-Spamd-Result: default: False [-4.40 / 15.00]; TO_DN_EQ_ADDR_SOME(0.00)[]; HAS_XOIP(0.00)[]; TO_DN_SOME(0.00)[]; R_SPF_ALLOW(-0.20)[+ip4:40.107.0.0/16]; RCVD_COUNT_THREE(0.00)[3]; DKIM_TRACE(0.00)[netapp.com:+]; MIME_BASE64_TEXT(0.10)[]; NEURAL_HAM_SHORT(-1.00)[-1.000]; FROM_EQ_ENVFROM(0.00)[]; RCVD_TLS_LAST(0.00)[]; RBL_DBL_DONT_QUERY_IPS(0.00)[40.107.236.51:from]; ARC_ALLOW(-1.00)[microsoft.com:s=arcselector9901:i=1]; MIME_TRACE(0.00)[0:+]; MID_RHS_MATCH_FROM(0.00)[]; ASN(0.00)[asn:8075, ipnet:40.104.0.0/14, country:US]; FAKE_REPLY(1.00)[]; NEURAL_HAM_MEDIUM(-1.00)[-1.000]; R_DKIM_ALLOW(-0.20)[netapp.com:s=selector1]; FROM_HAS_DN(0.00)[]; RCPT_COUNT_THREE(0.00)[3]; NEURAL_HAM_LONG(-1.00)[-1.000]; MIME_GOOD(-0.10)[text/plain]; DMARC_NA(0.00)[netapp.com]; SPAMHAUS_ZRD(0.00)[40.107.236.51:from:127.0.2.255]; DWL_DNSWL_LOW(-1.00)[netapp.com:dkim]; TO_MATCH_ENVRCPT_SOME(0.00)[]; RCVD_IN_DNSWL_NONE(0.00)[40.107.236.51:from]; RWL_MAILSPIKE_POSSIBLE(0.00)[40.107.236.51:from]; MAILMAN_DEST(0.00)[freebsd-transport] X-BeenThere: freebsd-transport@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Discussions of transport level network protocols in FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 12 Jan 2021 20:00:04 -0000 U29ycnkgZm9yIHN1Y2ggbGF0ZSByZXNwb25zZSBvbiB0aGUgc3ViamVjdCByZWxhdGVkIHdpdGgg bXkgcGF0Y2guDQoNCkZyb20gd2hhdCBJIGFtIHVuZGVyc3RhbmRpbmcgYmVsb3csIHRoZSB0Y3Bf bWF4c2VnKCkgaXMgbm90IHByb2JsZW1hdGljIHNvIGZhciwgYW5kIHRoZSByY3ZfbnVtc2Fja3Mg c2VlbXMgdG8gYmUgbm90IGFuIGludGVyZmVyZW5jZSB0byB0aGUgc3ViamVjdGVkIHBhdGNoLg0K DQpTaGFsbCB3ZSBjYWxsIGl0IGEgY2xvc2U/IEl0IHNlZW1zIEkgbmVlZCB0byB1cGRhdGUgdGhl IHJldmlldyBib2FyZCAoaHR0cHM6Ly9yZXZpZXdzLmZyZWVic2Qub3JnL0QyNjgwNykgYWJvdXQg dGhlIGNsb3N1cmUgb2YgdGhpcyBlbWFpbCB0aHJlYWQuDQoNClRoYW5rcywNCi0tQ2hlbmcgQ3Vp DQoNCu+7v09uIDExLzMwLzIwLCAxMjo1NyBBTSwgIm93bmVyLWZyZWVic2QtdHJhbnNwb3J0QGZy ZWVic2Qub3JnIG9uIGJlaGFsZiBvZiBMYXdyZW5jZSBTdGV3YXJ0IiA8b3duZXItZnJlZWJzZC10 cmFuc3BvcnRAZnJlZWJzZC5vcmcgb24gYmVoYWxmIG9mIGxzdGV3YXJ0QGZyZWVic2Qub3JnPiB3 cm90ZToNCg0KICAgIE5ldEFwcCBTZWN1cml0eSBXQVJOSU5HOiBUaGlzIGlzIGFuIGV4dGVybmFs IGVtYWlsLiBEbyBub3QgY2xpY2sgbGlua3Mgb3Igb3BlbiBhdHRhY2htZW50cyB1bmxlc3MgeW91 IHJlY29nbml6ZSB0aGUgc2VuZGVyIGFuZCBrbm93IHRoZSBjb250ZW50IGlzIHNhZmUuDQoNCg0K DQoNCiAgICBHcmVldGluZ3MsDQoNCiAgICBPbiAyNC8xMS8yMCAxMDoyMyBwbSwgU2NoZWZmZW5l Z2dlciwgUmljaGFyZCB3cm90ZToNCiAgICA+IEhpIExhd3JlbmNlLA0KICAgID4NCiAgICA+Pj4+ IEZpcnN0IHVwLCBpdCBzZWVtcyBidWdneSB0byBtZSB0aGF0IHRoZSBzZW5kZXIgc2lkZSBhY2Nv dW50cyBmb3IgKiovL3JlY2VpdmVkLy8qKiBTQUNLIGJsb2NrcyBpbiB0aGUgImVmZmVjdGl2ZSIg TVNTIGNvbXB1dGVkIGJ5IGB0Y3BfbWF4c2VnKClgIGZvciBvdXRib3VuZCBzZWdtZW50cy4gKE5v dCB5b3VyIGJ1ZywgYnV0IHlvdXIgY2hhbmdlIGFtcGxpZmllcyB0aGUgZWZmZWN0IG9mIHRoZSBi dWcpLg0KICAgID4+PiBOb3QgcXVpdGUgc3VyZSBJIGdldCB5b3VyIHBvaW50IGhlcmU7IGFyZSB5 b3Ugc2F5aW5nIHRoZSB0Y3BfbWF4c2VnKCkgaXMgZXJyYW5lb3VzbHkgaW5jbHVkaW5nIHJlY2Vp dmVkIFNBQ0sgYmxvY2tzIGZvbSB0aGUgcHJldmlvdXMgQUNLPyBNYXliZSB5b3UgY2FuIHNlbmQg YW4gYW5ub3RhdGVkIGNvZGUgc25pcHBldCBwZXIgZGlyZWN0IG1haWw/DQogICAgPj4gIEl0IGtl eXMgb2ZmIGB0cC0+cmN2X251bXNhY2tzYCBwZXIgdGhlIGltcGxlbWVudGF0aW9uIGluIHRjcF9z dWJyLmMgPGh0dHBzOi8vc3Zud2ViLmZyZWVic2Qub3JnL2Jhc2UvaGVhZC9zeXMvbmV0aW5ldC90 Y3Bfc3Vici5jP3JldmlzaW9uPTM2NzEyMiZ2aWV3PW1hcmt1cCNsMzAyNj4uIEknbSBwcmV0dHkg c3VyZSB0aGlzIGlzIGFuIHVuaW50ZW50aW9uYWwgYnVnIGluIHRoZSBpbXBsZW1lbnRhdGlvbiBv ZiBgdGNwX21heHNlZygpYC4NCiAgICA+DQogICAgPiBJIHRyaWVkIHRvIGVsaWNpdCBhbiBlcnJh bmVvdXMgcmVzcG9uc2UgdXNpbmcgcGFja2V0ZHJpbGwgZm9yIHRoaXMsIGJ1dCB3YXMgbm90IHJl YWxseSBhYmxlIHRvLi4uDQogICAgPg0KICAgID4gSWYgSSB1bmRlcnN0YW5kIGl0IGNvcnJlY3Qs IGlmIHRoZSBzZW5kZXIgaGFzIHJlY2VpdmVkIGEgbnVtYmVyIG9mIHNhY2sgYmxvY2tzLCB0aGUg bmV4dCBzZWdtZW50IHNob3VsZCBiZSBzaG9ydGVyIGJ5IHRoYXQgbnVtYmVyIG9mIGJ5dGVzLCB3 aGVuIHVzaW5nIHRjcF9tYXhzZWcoKS4NCiAgICA+DQogICAgPiBUaGlzIGlzIHRoZSBzY3JpcHQg SSB0cmllZCB0byBzZWUgdGhpczoNCg0KICAgIFtzbmlwIHBhY2tldGRyaWxsIHNjcmlwdF0NCg0K ICAgIFNvcnJ5LCBzZWVtcyBJIGFjY2lkZW50YWxseSBtaXNkaXJlY3RlZCB5b3UuLi4gSSBkaWRu J3QgbWVhbiB0byBzdWdnZXN0DQogICAgdGhhdCB0aGUgYnVnIHdvdWxkIGNhdXNlIGFueXRoaW5n IGVycm9uZW91cyB0byBiZSBzZW50LCBidXQgcmF0aGVyDQogICAgaW5jb3JyZWN0IGFjY291bnRp bmcgaW4gdGhlIGNvbmdlc3Rpb24gYXZvaWRhbmNlL2NvbnRyb2wgYWxnbydzIGN3bmQNCiAgICBh ZGp1c3RtZW50cy4NCg0KICAgID4gQnV0IHJjdl9udW1zYWNrcyBpcyBub3QgdGhlIG51bWJlciBv ZiBUQ1Agb3B0aW9uIHNhY2sgYmxvY2tzIHJlY2VpdmVkLCBidXQgcmF0aGVyIHRoZSBudW1iZXIg b2YgZGlzdGluY3QgcmFuZ2VzIGN1cnJlbnRseSBoZWxkIGluIHNhY2tibGtzW10sIHdoaWNoIGlz IGEgY2FwcGVkIG51bWJlciBmcm9tIHRoZSBzY29yZWJvYXJkLCBzbyB0aGUgbnVtYmVyIG9mIFNB Q0sgb3B0aW9uIGJsb2NrcyB0aGF0IG1heSBiZSBzZW50IHdpdGggdGhlIG5leHQgQUNLIChtYXhp bXVtIGluIFRDUCBvcHRpb25zIGlzIDQsIHdpdGggVFMgMzsgIHRjcGNiIHN0b3JlcyBhIG1heGlt dW0gb2YgNi4NCg0KICAgIEdhaCArIGRlcnAhIEkgZGlkbid0IGxvb2sgY2xvc2VseSBlbm91Z2gg YXQgd2hhdCByY3ZfbnVtc2Fja3MgaXMNCiAgICBhY3R1YWxseSB0cmFja2luZyBhbmQgaGFkIGl0 IHN0dWNrIGluIG15IGhlYWQgdGhhdCBpdCB3YXMgdGhlIG51bWJlciBvZg0KICAgIHJlY2VpdmVk IHNhY2sgb3B0aW9uIGJsb2Nrcy4uLiAqZmFjZSBwYWxtKg0KDQogICAgPiBJTUhPLCB0aGF0IGNv ZGUgaW4gdGNwX21heHNlZygpIGlzIGNvcnJlY3QuLi4NCg0KICAgIEFncmVlZCwgc29ycnkgZm9y IHNlbmRpbmcgeW91IG9uIGEgZ29vc2UgY2hhc2UgcmVnYXJkaW5nIG15IGFzc2VydGlvbg0KICAg IHRoYXQgdGhlIHdheSByY3ZfbnVtc2Fja3Mgd2FzIGJlaW5nIHVzZWQgd2FzIGEgYnVnLg0KDQog ICAgQ2hlZXJzLA0KICAgIExhd3JlbmNlDQoNCiAgICA+IFJpY2hhcmQgU2NoZWZmZW5lZ2dlcg0K ICAgID4gQ29uc3VsdGluZyBTb2x1dGlvbiBBcmNoaXRlY3QNCiAgICA+IE5BUyAmIE5ldHdvcmtp bmcNCiAgICA+DQogICAgPiBOZXRBcHANCiAgICA+ICs0MyAxIDM2NzYgODExIDMxNTcgRGlyZWN0 IFBob25lDQogICAgPiArNDMgNjY0IDg4NjYgMTg1NyBNb2JpbGUgUGhvbmUNCiAgICA+IFJpY2hh cmQuU2NoZWZmZW5lZ2dlckBuZXRhcHAuY29tDQogICAgPg0KICAgID4gaHR0cHM6Ly90cy5sYS9y aWNoYXJkNDk4OTINCiAgICA+DQogICAgPg0KICAgID4gLS0tLS1VcnNwcsO8bmdsaWNoZSBOYWNo cmljaHQtLS0tLQ0KICAgID4gVm9uOiBsc3Rld2FydCAoTGF3cmVuY2UgU3Rld2FydCkgPHBoYWJy aWMtbm9yZXBseUBGcmVlQlNELm9yZz4NCiAgICA+IEdlc2VuZGV0OiBEaWVuc3RhZywgMjQuIE5v dmVtYmVyIDIwMjAgMDY6MjUNCiAgICA+IEFuOiByc2NoZWZmQGZyZWVic2Qub3JnDQogICAgPiBC ZXRyZWZmOiBbRGlmZmVyZW50aWFsXSBEMjY4MDc6IG1vdmUgY3duZCBhbmQgc3N0aHJlc2ggdXBk YXRlcyBpbnRvIGluZGl2aWR1YWwgY29uZ2VzdGlvbiBjb250cm9sIG1vZHVsZQ0KICAgID4NCiAg ICA+IE5ldEFwcCBTZWN1cml0eSBXQVJOSU5HOiBUaGlzIGlzIGFuIGV4dGVybmFsIGVtYWlsLiBE byBub3QgY2xpY2sgbGlua3Mgb3Igb3BlbiBhdHRhY2htZW50cyB1bmxlc3MgeW91IHJlY29nbml6 ZSB0aGUgc2VuZGVyIGFuZCBrbm93IHRoZSBjb250ZW50IGlzIHNhZmUuDQogICAgPg0KICAgID4N CiAgICA+DQogICAgPg0KICAgID4gbHN0ZXdhcnQgYWRkZWQgYSBjb21tZW50Lg0KICAgID4NCiAg ICA+DQogICAgPiAgIEluIEQyNjgwNyM2MTA0NjQgPGh0dHBzOi8vcmV2aWV3cy5mcmVlYnNkLm9y Zy9EMjY4MDcjNjEwNDY0PiwgQHJzY2hlZmYgd3JvdGU6DQogICAgPg0KICAgID4gICA+IEluIEQy NjgwNyM2MTA0NDkgPGh0dHBzOi8vcmV2aWV3cy5mcmVlYnNkLm9yZy9EMjY4MDcjNjEwNDQ5Piwg QGxzdGV3YXJ0IHdyb3RlOg0KICAgID4gICA+DQogICAgPiAgID4+IEluIEQyNjgwNyM2MDQ0OTQg PGh0dHBzOi8vcmV2aWV3cy5mcmVlYnNkLm9yZy9EMjY4MDcjNjA0NDk0PiwgQHJzY2hlZmYgd3Jv dGU6DQogICAgPiAgID4+DQogICAgPiAgID4+PiBpbmNyZW1lbnRpbmcgYnkgdF9tYXhzZWcgKHcv byBUU29wdCkgdnMuIHRjcF9tYXhzZWcoKSAody8gVFNvcHQvTVBUQ1ApIGRvZXMgbm90IGxlYWQg dG8gYSB1bmV4cGVjdGVkIHRyYW5zbWlzc2lvbiBvZiAyIHNlZ21lbnRzLCB3aGVuIG9ubHkgYSBz aW5nbGUgc2VnbWVudCB3b3VsZCBiZSBleHBlY3RlZCAodGNwX291dHB1dCBwcmVmZXJzIHRvIHNl bmQgZnVsbCBzZWdtZW50cyBidXQgY29uc2lkZXJzIG9wdGlvbiBvdmVyaGVhZCkuDQogICAgPiAg ID4+Pg0KICAgID4gICA+Pj4gSW5jcmVtZW50aW5nIGJ5IHRjcF9tYXhzZWcoKSBpcyBzaWdodGx5 IGxlc3MgYWdncmVzc2l2ZSBkdXJpbmcgQ0EsIG5vdD8NCiAgICA+ICAgPj4NCiAgICA+ICAgPj4g Rmlyc3QgdXAsIGl0IHNlZW1zIGJ1Z2d5IHRvIG1lIHRoYXQgdGhlIHNlbmRlciBzaWRlIGFjY291 bnRzIGZvciAqKi8vcmVjZWl2ZWQvLyoqIFNBQ0sgYmxvY2tzIGluIHRoZSAiZWZmZWN0aXZlIiBN U1MgY29tcHV0ZWQgYnkgYHRjcF9tYXhzZWcoKWAgZm9yIG91dGJvdW5kIHNlZ21lbnRzLiAoTm90 IHlvdXIgYnVnLCBidXQgeW91ciBjaGFuZ2UgYW1wbGlmaWVzIHRoZSBlZmZlY3Qgb2YgdGhlIGJ1 ZykuDQogICAgPiAgID4NCiAgICA+ICAgPiBOb3QgcXVpdGUgc3VyZSBJIGdldCB5b3VyIHBvaW50 IGhlcmU7IGFyZSB5b3Ugc2F5aW5nIHRoZSB0Y3BfbWF4c2VnKCkgaXMgZXJyYW5lb3VzbHkgaW5j bHVkaW5nIHJlY2VpdmVkIFNBQ0sgYmxvY2tzIGZvbSB0aGUgcHJldmlvdXMgQUNLPyBNYXliZSB5 b3UgY2FuIHNlbmQgYW4gYW5ub3RhdGVkIGNvZGUgc25pcHBldCBwZXIgZGlyZWN0IG1haWw/DQog ICAgPg0KICAgID4gICBJdCBrZXlzIG9mZiBgdHAtPnJjdl9udW1zYWNrc2AgcGVyIHRoZSBpbXBs ZW1lbnRhdGlvbiBpbiB0Y3Bfc3Vici5jIDxodHRwczovL3N2bndlYi5mcmVlYnNkLm9yZy9iYXNl L2hlYWQvc3lzL25ldGluZXQvdGNwX3N1YnIuYz9yZXZpc2lvbj0zNjcxMjImdmlldz1tYXJrdXAj bDMwMjY+LiBJJ20gcHJldHR5IHN1cmUgdGhpcyBpcyBhbiB1bmludGVudGlvbmFsIGJ1ZyBpbiB0 aGUgaW1wbGVtZW50YXRpb24gb2YgYHRjcF9tYXhzZWcoKWAuDQogICAgPg0KICAgID4gICA+PiBJ J2xsIHRyeSBncm91bmQgdGhlIHJlbWFpbmRlciBvZiBteSB0aG91Z2h0cyB3aXRoIG15IGludGVy cHJldGF0aW9uIG9mIHRoZSByZWxldmFudCAiZmlyc3QgcHJpbmNpcGxlcyIgYW5kIHByYWN0aWNh bCBjb25zaWRlcmF0aW9ucy4uLg0KICAgID4gICA+Pg0KICAgID4gICA+PiBUaGUgY29uZ2VzdGlv biB3aW5kb3cgbWFpbnRhaW5lZCBhdCB0aGUgc2VuZGVyIGF0dGVtcHRzIHRvIHRyYWNrIGFuIGVz dGltYXRlIG9mIHBpcGUgY2FwYWNpdHksIGJ1dCBkb2VzIHNvIHdpdGhvdXQga25vd2xlZGdlIG9m IHdoZXRoZXIgdGhlIGNhcGFjaXR5IGNvbnN0cmFpbnQgYXBwbGllcyBhdCBhIHBhcnRpY3VsYXIg VENQL0lQIGxheWVyIG9yIGluY2x1ZGVzL2V4Y2x1ZGVzIGNlcnRhaW4gc291cmNlcyBvZiBub24t YXBwbGljYXRpb24tcGF5bG9hZCBvdmVyaGVhZC4gVENQcyB0eXBpY2FsbHkgdGFrZSB0aGUgc2hv cnRjdXQgb2YgYXBwcm94aW1hdGluZyBwaXBlIGNhcGFjaXR5IHB1cmVseSBpbiB0ZXJtcyBvZiBU Q1Agc2VnbWVudCBwYXlsb2FkLCBidXQgbW9zdCBJUCBwYXRocyBJJ20gYXdhcmUgb2YgdHlwaWNh bGx5IHRyYWNrIGJpdHMgaW4gdGVybXMgb2YgSVAtcGF5bG9hZCBpLmUuIGl0IGlzIGxpa2VseSBt b3JlIGNvcnJlY3QgZm9yIG1vc3QgaWYgbm90IGFsbCBwYXRocyB0byBjb25zaWRlciB0aGUgY29u Z2VzdGlvbiB3aW5kb3cgYXMgcmVwcmVzZW50aW5nIHBpcGUgY2FwYWNpdHkgaW5jbHVzaXZlIG9m IGFsbCBUQ1Agc2VnbWVudCBvdmVyaGVhZCAoZml4ZWQgaGVhZGVyIGFuZCBvcHRpb25zKS4gRG9p bmcgc28gZW5zdXJlcyB0aGF0IGZvciBhIGdpdmVuIGNvbmdlc3Rpb24gd2luZG93LCBjb25uZWN0 aW9ucyB3aXRoIGRpZmZlcmVudCBUQ1Agc2VnbWVudCBzaXplcyBhY2NvdW50IGZvciB0aGVpciBz ZW50IFRDUC1sYXllciBiaXRzIHRoZSBzYW1lLiBBbHNvIHdvcnRoIG5vdGluZyB0aGF0IHBhdGhz IG9mdGVuIGFjY291bnQgYmFzZWQgb24gbnVtYmVyIG9mIHBhY2tldHMgaW4gYWRkaXRpb24gdG8g b3IgaW5zdGVhZCBvZiBiaXRzIGkuZS4gdHJhY2tpbmcgY29uZ2VzdGlvbiB3aW5kb3cgaW4gdGVy bXMgb2YgYm90aCBiaXRzIGFuZCBudW1iZXIgb2Ygc2VnbWVudHMgaXMgcG90ZW50aWFsbHkgb2Yg dmFsdWUuDQogICAgPiAgID4+DQogICAgPiAgID4+IFNvLCBpbiBhIGhpZ2ggbGV2ZWwgc2Vuc2Us IGFjY291bnRpbmcgZm9yIFRDUCBvcHRpb24gYml0cyBpbiBhIGdpdmVuIHNlbmQgd2luZG93IHdv cnRoIG9mIGRhdGEgaXMgYm90aCBqdXN0aWZpZWQgYW5kIGFyZ3VhYmx5IG1vcmUgY29ycmVjdC4g SG93ZXZlciwgdXNpbmcgYHRjcF9tYXhzZWcoKWAgaW4gY29uZ2VzdGlvbiBjb250cm9sIGFjY291 bnRpbmcgZWZmZWN0aXZlbHkgbW92ZXMgdXMgZnVydGhlciBhd2F5IGZyb20gdGhpcyBhbmQgdG93 YXJkcyBhY2NvdW50aW5nIHB1cmVseSBiYXNlZCBvbiBwYXlsb2FkIGJpdHMuDQogICAgPiAgID4N CiAgICA+ICAgPiBJIGFncmVlIHdpdGggeW91IG9uIHRoZSBmaXJzdCBwcmluY2lwbGVzIGFwcHJv YWNoLiBXZSBoYXZlIGhhZCB0aGlzIGtpbmQgb2YgZGlzY3Vzc2lvbiBASUVURiBkdXJpbmcgcmVF Q04gKENvbkV4KSwgYW5kIHRoYXQgbWFueSBkb24ndCBhcHByZWNpdGF0ZSB0aGlzIHN1YnRsZSBk aWZmZXJlbmNlIHdhcyBhIG1ham9yIGh1cmRsZSBpbiB0aGUgcHJvY2VzcyB0byBnZXQgdHJhY2t0 aW9uIHRvIEFjY0VDTiAod2h5IHRoZXJlIGlzIGEgaGlnaGVyIGZpZGVsaXR5IGJ5dGVzLWJhc2Vk IHNpZ25hbCB0byBiZWdpbiB3aXRoLCBhbmQgYWRkaXRpb25hbGx5LCBzaGFsbCBpdCBpbmNsdWRl IHZhaW91cyBoZWFkZXIgYnl0ZXMgb3Igbm90KS4NCiAgICA+ICAgPiBIb3dldmVyLCBzdWNoIGEg ZGlzY3Vzc2lvbiBpcyBjZXJ0YWlubHkgd2VsbCBiZXlvbmQgdGhlIHNjb3BlIG9mIHRoaXMgRGlm ZiAod2hpY2ggSSd2ZSBjb21taXR0ZWQgYWxyZWFkeSkuDQogICAgPg0KICAgID4gICBBZ3JlZWQs IHRoZSBicm9hZGVyIGRpc2N1c3Npb24gaXMgbm90IHNwZWNpZmljIHRvIHRoaXMgY2hhbmdlc2V0 IChwcm9iYWJseSBzaG91bGQgbW92ZSBpdCB0byBmcmVlYnNkLXRyYW5zcG9ydEApIGJ1dCBJIHdh bnRlZCB0byB0b3VjaCBvbiBzb21lIG9mIG15IHRoaW5raW5nIHRvIHByb3ZpZGUgc29tZSBiYWNr Z3JvdW5kIGZvciBteSBjb25jZXJucy4NCiAgICA+DQogICAgPiAgIFdoYXQgaXMgZGlyZWN0bHkg cmVsZXZhbnQgdG8gdGhpcyBjaGFuZ2VzZXQgaXMgdGhlIHN1YnRsZSBidXQgcG90ZW50aWFsbHkg aW1wYWN0ZnVsIGNoYW5nZSB0byBuZXdyZW5vJ3MgY3duZCBhY2NvdW50aW5nIGJ5IHN3aXRjaGlu ZyB0byB1c2luZyBgdGNwX21heHNlZygpYCBpbiBgbmV3cmVub19jb25nX3NpZ25hbCgpYCwgd2hp Y2ggSSBmbGFnZ2VkIHByZXZpb3VzbHkgYmVjYXVzZSBpdCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdl IHdoaWNoIGFsc28gaW50cm9kdWNlcyBpbmNvbnNpc3RlbmN5IHdpdGhpbiB0aGUgbW9kdWxlIGdp dmVuIHRoYXQgdF9tYXhzZWcgaXMgc3RpbGwgdXNlZCBlbHNld2hlcmUuIEZZSSwgSSBvcHRlZCB0 byBleGNsdWRlIHRoaXMgY2hhbmdlc2V0IGZyb20gb3VyIGludGVybmFsIE5ldGZsaXggdHJlZSB1 bnRpbCB3ZSBjYW4gZWl0aGVyIHF1YW50aWZ5IHRoZSBlZmZlY3RzIG9yIGZpZ3VyZSBvdXQgYSBk aWZmZXJlbnQgd2F5IG9mIGFkZHJlc3NpbmcgdGhlIHVuZGVybHlpbmcgcHJvYmxlbSBiZWluZyBh ZGRyZXNzZWQsIGdpdmVuIG15IGNvbmNlcm4gdGhhdCB0aGlzIG1heSBwZXNzaW1pc2UgY29ubmVj dGlvbnMgd2l0aCBzbWFsbCBzZW5kIHdpbmRvd3MuIFRoYXQncyB3aGF0IHByb21wdGVkIG1lIHRv IGNpcmNsZSBiYWNrIHRvIHRoaXMgcmV2aWV3IHRvIGJldHRlciB1bmRlcnN0YW5kIHRoZSB1bmRl cmx5aW5nIGlzc3VlIGJlaW5nIGFkZHJlc3NlZCBieSB0aGUgY2hhbmdlIGFuZCB0byBwdWJsaWNs eSBmbGFnIG15IGNvbmNlcm4gdGhhdCB0aGVyZSBpcyBpbiBmYWN0IGEgc3VidGxlIGZ1bmN0aW9u YWwgY2hhbmdlIGJlaW5nIGludHJvZHVjZWQgaGVyZS4NCiAgICA+DQogICAgPiAgID4gVGhlIGNv bmNyZXRlIGlzc3VlIGFkZHJlc3NlZCBoZXJlIGlzLCB0aGF0IGR1cmluZyBsb3NzIHJlY292ZXJ5 LCBpbmNyZW1lbnRpbmcgY3duZCBieSB0X21heHNlZywgd2hlbiBUU29wdCBpcyBpbiB1c2UsIGxl YXZlcyAxMiBwYXlsb2FkIGJ5dGVzICJ1bnVzZWQiIGluIGEgdHJhbnNtaXNzaW9uIG9wcG9ydHVu aXR5LCB3aGljaCBtYXkgYmUgc2VudCBvdXQgcmlnaHQgYXdheS4gVGhlIGVycm9yIG9mIHRyYW5z bWl0dGluZyB0d28gc2VnbWVudHMgKHdpdGggbXVjaCBtb3JlIGhlYWRlci0gYW5kIHBvdGVudGlh bGx5IGV0aGVybmV0IHBhZGRpbmcgYnl0ZXMsIHRoYW4gMTIgYnl0ZXMgb2YgcGF5bG9hZCBjZXJ0 YWlubHkgbWFrZXMgaXQgbW9yZSBhdHRyYWN0aXZlIHRvIE5PVCBpbmNvcnJlY3RseSBpbmNsdWRl ZCB0aGVzZSBoZWFkZXIgb3B0aW9uIGJ5dGVzLg0KICAgID4NCiAgICA+ICAgQWgsIEkgc2VlLiBN eSBpbml0aWFsIHJlYWN0aW9uIHRvIHN1Y2ggYW4gaXNzdWUgaXMgdGhhdCB3ZSBzaG91bGQgY29u c2lkZXIgYWRkcmVzc2luZyBieSB0dW5pbmcgdGhlIHJ1bnQgdHJhbnNtaXNzaW9uIGF2b2lkYW5j ZSBjaGVja3MgaW4gdGNwX291dHB1dCgpIDxodHRwczovL3N2bndlYi5mcmVlYnNkLm9yZy9iYXNl L2hlYWQvc3lzL25ldGluZXQvdGNwX291dHB1dC5jP3JldmlzaW9uPTM2NzEyMiZ2aWV3PW1hcmt1 cCNsNTc4PiByYXRoZXIgdGhhbiBtYXJnaW5hbGx5IGdhbWluZyBjd25kLCB3aGljaCBtYXkgc3Rp bGwgbm90IHByZXZlbnQgYSBydW50IHRyYW5zbWlzc2lvbiBpZiwgZm9yIGV4YW1wbGUsIHRoZSBl ZmZlY3RpdmUgTVNTIHZhcmllZCBvdmVyIHRoZSBwcmVjZWRpbmcgd2luZG93IG9mIGRhdGEgZm9y IHNvbWUgcmVhc29uLg0KICAgID4NCiAgICA+ICAgPiBSZXZhbXBpbmcgY3duZCB0byBpbmNsdWRl IHZhcmlvdXMgaGVhZGVycywgc29tZSBvZiB3aGljaCBhcmUgbm90IGtub3duIHRvIHRoZSBzZW5k ZXIgYXQgdHJhbnNtaXNzaW9uIHRpbWUsIGlzIGNlcnRhaW5seSBiZXlvbmQgdGhlIHNjb3BlIG9m IGEgc2ltcGx5IGJ1Z2ZpeC4gKEUuZy4gVENQIG92ZXIgSVAgb3ZlciBHUkUgb3ZlciBJUHNlYyBv dmVyIFZ4TEFOIG92ZXIgTVBMUyBtYXkgYmUgYSB2YWxpZCBjaGFpbiBvZiBoZWFkZXJzIGluIHRo ZSBtaWRkbGUgb2YgYSBwYXRoLCB3aGVyZSBjb25nZXN0aW9uIG9jY3Vycy4gTW9zdCBvZiB0aGVz ZSB0ZWNobm9sb2dpZXMgdHJ5IHRvIGJlIGFzIHRyYW5zcGFyZW50IHRvIGFuIGVuZGhvc3QgYXMg cG9zc2libGUsIHRob3VnaC4uLikNCiAgICA+DQogICAgPiAgIFN1cmUsIElNTyB0aGUgb25seSBy ZWFzb25hYmxlIHRoaW5nIFRDUCBjYW4gZG8gaXMgZnVsbHkgYWNjb3VudCBmb3IgaXRzIGJpdHMg dG8gbW9zdCBhY2N1cmF0ZWx5IGRlcml2ZSBpdHMgcGlwZSBjYXBhY2l0eSBlc3RpbWF0ZS4NCiAg ICA+DQogICAgPiAgID4+IEkgYWxzbyBoYXZlIGEgY29uY2VybiB0aGF0IHRjcF9tYXhzZWcoKSBw ZXNzaW1pc2VzIGNhbGN1bGF0aW9ucyBmb3IgY29ubmVjdGlvbnMgd2hpY2ggdXNlIFRDUCBvcHRp b25zIHRoYXQgZG8gbm90IGFwcGVhciBvbiBldmVyeSBzZWdtZW50IChTQUNLIGJlaW5nIHRoZSBt b3N0IGNvbW1vbiBjYXNlKS4gSXQncyBhIHJvdW5kaW5nIGVycm9yIGFuZCB1bmxpa2VseSB0byBi ZSBvZiBjb25jZXJuIGZvciBzdWZmaWNpZW50bHkgbGFyZ2Ugc2VuZCB3aW5kb3dzLCBidXQgaXRz IGEgZGlmZmVyZW50IHN0b3J5IGF0IHRoZSBzbWFsbCB3aW5kb3cgZW5kIG9mIHRoaW5ncywgYW5k IGV2ZW4gbW9yZSBzbyBmb3IgY29ubmVjdGlvbnMgdXNpbmcgYSBzbWFsbGVyIHRoYW4gdHlwaWNh bCBNU1MuDQogICAgPiAgID4NCiAgICA+ICAgPiBJSVJDLCB0Y3BfbWF4c2VnKCkgc2hvdWxkIHRh a2UgaW50byBhY2NvdW50IHRob3NlIG9wdGlvbnMsIHdoaWNoIHdvdWxkIGJlIHByZXNlbnQgImN1 cnJlbnRseSIuIEFzIHlvdSBub3RlLCBTQUNLIG9wdGlvbnMgd291bGQgYmUgdGhlIG9ubHkgb25l IHN1Y2ggVENQIG9wdGlvbiwgdGhhdCBGcmVlQlNEIHdvdWxkIGJlIHVzaW5nLiBIb3dldmVyLCBv bmNlIHdlIHRhY2tsZSB0aGlzIGlzc3VlIG9yIG90aGVyIG9wdGlvbnMgd2hpY2ggYXJlIG9ubHkg aW5mcmVxdWVudGx5IHByZXNlbnQgKGUuZy4gTVAtVENQIG9wdGlvbnMsIEFjY0VDTiBvcHRpb24s ICBBY2tDQyAoPykgKSB3ZSBjYW4gYWRkcmVzcyB0aGlzIGFzcGVjdCB0aGVuLg0KICAgID4NCiAg ICA+ICAgSXQgYXR0ZW1wdHMgdG8gZG8gc28sIGJ1dCBjcnVkZWx5LiBJdCBkb2Vzbid0IHRyYWNr IHRoZSBhY3R1YWwgb3B0aW9uLXJlbGF0ZWQgYml0cyBwZXIgc2VuZCwgZG9lc24ndCBrZWVwIGEg cm9sbGluZyB0YWxseSBwZXIgc2VuZCB3aW5kb3cgb3Igb3ZlciBhbnkgb3RoZXIgdGltZXNjYWxl LCBub3IgYXJlIGFueSByZXRyb3NwZWN0aXZlIGFkanVzdG1lbnRzIG1hZGUgaWYgdGhlIGN1bXVs YXRpdmUgZWZmZWN0IG9mIHNsaWdodGx5IGluY29ycmVjdCBgdGNwX21heHNlZygpYC1iYXNlZCBh ZGp1c3RtZW50cyBiZWdpbnMgdG8gYWRkIHVwLg0KICAgID4NCiAgICA+IFJFUE9TSVRPUlkNCiAg ICA+ICAgclMgRnJlZUJTRCBzcmMgcmVwb3NpdG9yeQ0KICAgID4NCiAgICA+IENIQU5HRVMgU0lO Q0UgTEFTVCBBQ1RJT04NCiAgICA+ICAgaHR0cHM6Ly9yZXZpZXdzLmZyZWVic2Qub3JnL0QyNjgw Ny9uZXcvDQogICAgPg0KICAgID4gUkVWSVNJT04gREVUQUlMDQogICAgPiAgIGh0dHBzOi8vcmV2 aWV3cy5mcmVlYnNkLm9yZy9EMjY4MDcNCiAgICA+DQogICAgPiBFTUFJTCBQUkVGRVJFTkNFUw0K ICAgID4gICBodHRwczovL3Jldmlld3MuZnJlZWJzZC5vcmcvc2V0dGluZ3MvcGFuZWwvZW1haWxw cmVmZXJlbmNlcy8NCiAgICA+DQogICAgPiBUbzogY2hlbmdjX25ldGFwcC5jb20sIHJzY2hlZmYs IHR1ZXhlbiwgcmdyaW1lcywgI25ldGFwcCwgI3RyYW5zcG9ydCwgcnJzDQogICAgPiBDYzogbHN0 ZXdhcnQsIGltcCwgbWVsaWZhcm8sIHJzY2hlZmYNCiAgICA+IF9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fDQogICAgPiBmcmVlYnNkLXRyYW5zcG9ydEBmcmVl YnNkLm9yZyBtYWlsaW5nIGxpc3QNCiAgICA+IGh0dHBzOi8vbGlzdHMuZnJlZWJzZC5vcmcvbWFp bG1hbi9saXN0aW5mby9mcmVlYnNkLXRyYW5zcG9ydA0KICAgID4gVG8gdW5zdWJzY3JpYmUsIHNl bmQgYW55IG1haWwgdG8gImZyZWVic2QtdHJhbnNwb3J0LXVuc3Vic2NyaWJlQGZyZWVic2Qub3Jn Ig0KDQoNCg0KICAgIF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fDQogICAgZnJlZWJzZC10cmFuc3BvcnRAZnJlZWJzZC5vcmcgbWFpbGluZyBsaXN0DQogICAg aHR0cHM6Ly9saXN0cy5mcmVlYnNkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZyZWVic2QtdHJhbnNw b3J0DQogICAgVG8gdW5zdWJzY3JpYmUsIHNlbmQgYW55IG1haWwgdG8gImZyZWVic2QtdHJhbnNw b3J0LXVuc3Vic2NyaWJlQGZyZWVic2Qub3JnIg0KDQo=