From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (NAM10-DM6-obe.outbound.protection.outlook.com [40.107.93.83]) by mx.groups.io with SMTP id smtpd.web10.5168.1682054771446593007 for ; Thu, 20 Apr 2023 22:26:11 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@amd.com header.s=selector1 header.b=YoQ61tfO; spf=permerror, err=parse error for token &{10 18 %{i}._ip.%{h}._ehlo.%{d}._spf.vali.email}: invalid domain name (domain: amd.com, ip: 40.107.93.83, mailfrom: abner.chang@amd.com) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=S1lvun4FNchfDe/PT1ZszGN00TSLQKdu5Qc/If24vIrpJi/Gj9aTeOeko0hwakGzhaAGGf3Yczyky7Z7RjbSMjX7OQF0pJPSBKuiabAH3cprID38rGm5+o1VevBboxK1KmnFBtmJnFRNGQ/zRwslQhC5cdywsxqSi/3x1F2TyXSmHlEF5x9eNxgUevNwQCKCI9gEM7giwGpnYoEK3ttoU/WLSn7fs6m/4GN8VkCBlRCwTexgliLyo0dtKTScwKgPRhkCtC2F76AfYVUdSp5hIaaVowlK5w1E0+9uQSjzMXalNLlV22+LVvM9+LmOdF7DSwta9iGpNCVi+qLICr6ibQ== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=5nBKdedpjQGyvg+dDmdFThRaQC1n+bFbA2kqNiPKlY8=; b=S6ErkiI1kXwF9eubcvP0CjxB4iL/wBvaItB813bGdPUh9N/wab6kM3ZJuFpxBgOpqRHpwg55EMWb7afhSycM9vRe5Xr8H8yX8h0BO1sy5G7Uym+sHRImL+O3jiFumghZQ9X/faI0yd43vMdxQH/6LTiq6x7Qel/8BQ+fYfBUdVzpIGqDaGJZQRm+CS1krerKTHhKDpaVEhchHxF6IYttc/ny6F3bzOShH91EvjW00ssTWneCSHUYXrYWtSNFfUGQb/D8Va9hDFc7MsBN8e9yunIvPcmD+pJSXAeaR9bNEJRNXXGFyKm8BiiAL4hXnc9MlcZwGDw8mu6hQ0pVY1lkSw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=5nBKdedpjQGyvg+dDmdFThRaQC1n+bFbA2kqNiPKlY8=; b=YoQ61tfOVjO5z9f3VsXblqxyTv980QhQNQL57nDPK3iV05ISD9MgPuqyNucJ5GQsCYNG1TVTCjUXuGxRxaRA+S54K8bzA0zMHHO/MDo3KeQ2VxHZpoNLDIVzcESrmuPl2Yc4T024Ejtm4JKlqKqGLbw+mbCB35NWDpIIyPVhEDU= Received: from MN2PR12MB3966.namprd12.prod.outlook.com (2603:10b6:208:165::18) by SN7PR12MB6768.namprd12.prod.outlook.com (2603:10b6:806:268::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6319.22; Fri, 21 Apr 2023 05:26:07 +0000 Received: from MN2PR12MB3966.namprd12.prod.outlook.com ([fe80::46f1:bdce:a4bc:29e3]) by MN2PR12MB3966.namprd12.prod.outlook.com ([fe80::46f1:bdce:a4bc:29e3%3]) with mapi id 15.20.6319.022; Fri, 21 Apr 2023 05:26:04 +0000 From: "Chang, Abner" To: "devel@edk2.groups.io" , "Chang, Abner" , Tinh Nguyen CC: Isaac Oram , "Attar, AbdulLateef (Abdul Lateef)" , Nickle Wang , Igor Kulchytskyy Subject: Re: [edk2-devel] [edk2-platforms][PATCH V2 02/14] ManageabilityPkg: Support Maximum Transfer Unit Thread-Topic: [edk2-devel] [edk2-platforms][PATCH V2 02/14] ManageabilityPkg: Support Maximum Transfer Unit Thread-Index: AQHZc058z58Z/Ae3j0ydySQvWX5LFK806bRAgABSp/A= Date: Fri, 21 Apr 2023 05:26:03 +0000 Message-ID: References: <20230418071543.1951-1-abner.chang@amd.com> <20230418071543.1951-3-abner.chang@amd.com> <0e8628de-5da9-849d-db7d-ae0b6be126b1@amperemail.onmicrosoft.com> <1757CCE5059D419D.29498@groups.io> In-Reply-To: <1757CCE5059D419D.29498@groups.io> Accept-Language: zh-CN, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_Enabled=true; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_SetDate=2023-04-21T05:25:36Z; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_Method=Standard; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_Name=General; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_SiteId=3dd8961f-e488-4e60-8e11-a82d994e183d; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_ActionId=fbf1e328-ad2b-479b-984c-f07e9418060d; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_ContentBits=1 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=amd.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: MN2PR12MB3966:EE_|SN7PR12MB6768:EE_ x-ms-office365-filtering-correlation-id: 82521a8e-015b-4dd4-14a4-08db4228e687 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 0VGXOSzAb2rlBrFdTD3DSxnw3eb1KLaEwtM4GWHzdO8LTFuFsV6I2yi95pHNR/14vGAnuW92YeOzucAImOUafYQiCjV0J0FUYZJqYmXCG0VjxkrcsjKXdpDfqchLpzVJjG9Wy0R2wD778jz4rN27FkuxXljmnbIxkVJbLvpYnJSfFBi0im+4josWiD+6v4DvV1uDhD1Tie+mRcaomAIFKCDkfslJTqoyPbMHkt+W31dW7eO2s/V4vzZEA5V/byw7d8tgO3aJV0lm4mMOiw8DaHMbWBRnA/8j0iKMcOax+6M5CN5OTo/mA66aZDFn6g2a0E/8MVJI7anGrjWNZbqiKcj+FerdR3iKTvcLS+wAuiniQNDI6nL34vjSwmcbQdmgvN6cks2I2YNNC0DlxI7ZyvvDHQYKcV8xU8HJ1qmgCUfCmNFbswgk1Rk58k44PhuDICNqO4SSYn27bI3hd/4X9YypfrRdp42PPwJEfAwa6BSM8V0zB0GtFo2C6rd6tl59YpwV8MlfIYyGurnf2Ly2MbYknIVewiHiyNxtrInyhIWYgIH1sxp+29BACwBuco3bt0Funalp4CNlfKY65USAIWjJX1QznlqC3L0Bhq+RgIVjDEa3GaoOIvyDs0kTgtzW x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MN2PR12MB3966.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(4636009)(366004)(376002)(39860400002)(346002)(136003)(396003)(451199021)(52536014)(5660300002)(38070700005)(30864003)(2906002)(122000001)(66899021)(41300700001)(8936002)(8676002)(38100700002)(55016003)(86362001)(33656002)(966005)(7696005)(71200400001)(53546011)(9686003)(6506007)(26005)(54906003)(478600001)(83380400001)(186003)(19627235002)(66446008)(66476007)(66556008)(66946007)(76116006)(64756008)(4326008)(110136005)(316002)(579004)(559001)(44824005);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?VHhtbXpCUCtrK0N0L0h5S1JZeCtBV0Q4cGNNbm5NaDNJaHVZcC9qeW00Y1NJ?= =?utf-8?B?RWtpZ05WYXdBS2wzRDBiNlRseGtwNUpSRmIxa2tidDlvWHl3TXNDbUxlYUxz?= =?utf-8?B?cW1yb2ppdFBEZFcrb2orODZBb09QdE9rL0dDTEFPa1RGdWJyWkFaZkNrODdB?= =?utf-8?B?YmExT3VXQld3WUYwMm9TTDV3Q1FYUEplRytYZnMveHc3MHRwNk9EU3Q3M0Vh?= =?utf-8?B?dG1LSnZuc0tMRHpEa3hEcU1vRVFYWnQyWFhSRzFDNkZTdk1WVSszT0xjZnl0?= =?utf-8?B?K2c5c0NOSWtpY1BpV0xIelZMSEE3cllTR3UwalZsWVRRVlJPTDkvYXNvZUJV?= =?utf-8?B?a2RpS1ZLUG43TE94dXc4S2JMdU9TVnZodzJZWUlQQUhQbWxucnRRNzdBQjgv?= =?utf-8?B?OFIySzZjTWs5TzVJMDRSaGFyT0RSVmFGN0FrN3dmcmNYYjJobmMvbTBIOEJw?= =?utf-8?B?TU1JRGVEY202aGZwTys4YWxPaENSUWk3cGp3c3RGNHhQSFZjWSt1UHhhZ0hN?= =?utf-8?B?MzBndTErbmxBdHdZSkh1WU9ibmdqaml5M1paUmVYYytyWjI3dlllbTR2ZXlD?= =?utf-8?B?bzh5aCs3ZXVGeWJsNU04VEtoVmRGY1FoNDF1Q1ZNRWMzOStUTzFRc0MwUGV6?= =?utf-8?B?d2JpWGprZ3dKTlJBVGNTWFd5d0R4OWcvZDRlR1o1TmZydHB0THorK09hSmFU?= =?utf-8?B?SXMrSkdUSTI2UTNNaUNKY1puYUU3NGNyN3drV1FRcTYwQ0o0a1NtZXFDemlS?= =?utf-8?B?Nk9JRVpVUERQZ2VrSEplT0lENytha2EzUzBaUWk1dlJKODE3OFJuaFNIWTlY?= =?utf-8?B?Ny9oZkVxZXAwMUZEZzNmL3Roa2FvbVNJN3lKQk40TlB5cWlQaHNQQlBPazFD?= =?utf-8?B?dDcvaVlSRERmcFEyanhYNngzMWpYdmxsQ01XUnAwS09KZ3p5cHFyZkJSdWkr?= =?utf-8?B?enZsSXJtRkNEUVFoMUlMNlowRDlWcndlQWFna0w4eWRCQk0rYjhDNTZPd2Zq?= =?utf-8?B?ei9BdHErL3BpcFRMUktocnFyZkFodU9EczRrQTNUMTFPQ2k2VjloQ0E0V1lp?= =?utf-8?B?MHJYVHVhSnlkRXdPNUZZYitoWmtoSW1DaXpRRmlyYkJQNngxSVlqOUlCYXcv?= =?utf-8?B?YXpRN3FQUDZtdWliU2lpbW1DMGI5bEdoYmx3dFRxTzhxTVczMUJzaVVCNUxC?= =?utf-8?B?UEZRbnlKSFhQbU5xdUY4NHdDUzdacTNHUC9hRkhrU2liVkRDREw3eGJ4NHFs?= =?utf-8?B?NTZ6U3hNenpRaHM4OERiL09nOEV4SzFmMlVWUDBQWVJ5Mm4xcHV3bXpmZzZ6?= =?utf-8?B?cWRuMmNFSE5iY3djemkvWjFET3ptN2QxUVhkNDJQWThENHlhTTBkbEQ0ZU00?= =?utf-8?B?a2hqTVRjUGFFKzh6L2U4N0lKR2x1QndsaXFUdzJrMWdsQ3hxZlkvNkR6N2Q1?= =?utf-8?B?VkpnRUd2aU1GQU5BSVplcnYva1JqeWEzTFZud2lzQXNudjRuYkNBRmZMY1Jo?= =?utf-8?B?UGUyK1Y0QWNOTlE1OTI4bUpFcTdjZVdEeFZ0dkZYSysvMEo0TXQ3UkRxWkdD?= =?utf-8?B?ZU5zOUhmQ2RhL1QzRSsrOUVPM1NHQTlIcWN0UEppaDhRckE3U1NqRkJyQ2xY?= =?utf-8?B?ZUVRM0lYd3RDRTdxdVpDS1dyWWNqZUU2ajRRY3dNbVRGKzJ1QXhPeUR2azNq?= =?utf-8?B?ZFlEQTE4d2FBdjZDSXVMV3d0V01OOEdSS1Zjd09xN2FodVV1MDZ1MnU1TGNE?= =?utf-8?B?SUdKWFlQT1QrcHpvQStmNSs0VlZIOVBLTER0VC9XQXRMdTY4aW03THExaE1K?= =?utf-8?B?Y3YweVp5U1h4eWhpYm8vRjh1ZnA1dnYzaEVNYmJQbmo4TTJDc1I5VHJpMnZC?= =?utf-8?B?THgzdXQxTE9sOEF4eWNsTldmNEljNkI1K1dPdlF6N0JKYksyMzFDM0Z4N3U3?= =?utf-8?B?djcwSGlTamRabU91a01PNWpDZytTdHRDOS8vRC90U2lhZDNWUHdPT3IrUXRQ?= =?utf-8?B?MUcvM2pTWnhxQitjaEpqMDJQRTZLZ2VzMzV1OTdPN0wzQ0dsbkpWckQzTWIr?= =?utf-8?B?T3JZQVp0bUFSY0NiZTY1Smg1MFdWUDdLQVp6Z0ZZNHEzcXp1MmI5ZkZWK29r?= =?utf-8?Q?fr7mq16zO2n7sE+qZXAinyl7d?= MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MN2PR12MB3966.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 82521a8e-015b-4dd4-14a4-08db4228e687 X-MS-Exchange-CrossTenant-originalarrivaltime: 21 Apr 2023 05:26:03.6344 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: vTPfla3X/mN5C0S7IG/aPXKxSri+zQOkg4RghKGUMJqLIzn8+fOqctGj3OWKdo1FLoJZ3ZZKTNeXL5z9iZoVvQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR12MB6768 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 W0FNRCBPZmZpY2lhbCBVc2UgT25seSAtIEdlbmVyYWxdDQoNCkhpIFRpbmgsDQpWMyBwYXRjaCBq dXN0IHNlbnQsIEkgd2lsbCB3YWl0IGZvciB5b3VyIGZlZWRiYWNrIG9uIG15IHJlc3BvbnNlIGJl bG93Lg0KDQpUaGFua3MNCkFibmVyDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4g RnJvbTogZGV2ZWxAZWRrMi5ncm91cHMuaW8gPGRldmVsQGVkazIuZ3JvdXBzLmlvPiBPbiBCZWhh bGYgT2YgQ2hhbmcsDQo+IEFibmVyIHZpYSBncm91cHMuaW8NCj4gU2VudDogRnJpZGF5LCBBcHJp bCAyMSwgMjAyMyA4OjUxIEFNDQo+IFRvOiBUaW5oIE5ndXllbiA8dGluaG5ndXllbkBhbXBlcmVt YWlsLm9ubWljcm9zb2Z0LmNvbT47DQo+IGRldmVsQGVkazIuZ3JvdXBzLmlvDQo+IENjOiBJc2Fh YyBPcmFtIDxpc2FhYy53Lm9yYW1AaW50ZWwuY29tPjsgQXR0YXIsIEFiZHVsTGF0ZWVmIChBYmR1 bCBMYXRlZWYpDQo+IDxBYmR1bExhdGVlZi5BdHRhckBhbWQuY29tPjsgTmlja2xlIFdhbmcgPG5p Y2tsZXdAbnZpZGlhLmNvbT47IElnb3INCj4gS3VsY2h5dHNreXkgPGlnb3JrQGFtaS5jb20+DQo+ IFN1YmplY3Q6IFJlOiBbZWRrMi1kZXZlbF0gW2VkazItcGxhdGZvcm1zXVtQQVRDSCBWMiAwMi8x NF0NCj4gTWFuYWdlYWJpbGl0eVBrZzogU3VwcG9ydCBNYXhpbXVtIFRyYW5zZmVyIFVuaXQNCj4g DQo+IENhdXRpb246IFRoaXMgbWVzc2FnZSBvcmlnaW5hdGVkIGZyb20gYW4gRXh0ZXJuYWwgU291 cmNlLiBVc2UgcHJvcGVyDQo+IGNhdXRpb24gd2hlbiBvcGVuaW5nIGF0dGFjaG1lbnRzLCBjbGlj a2luZyBsaW5rcywgb3IgcmVzcG9uZGluZy4NCj4gDQo+IA0KPiBbQU1EIE9mZmljaWFsIFVzZSBP bmx5IC0gR2VuZXJhbF0NCj4gDQo+IA0KPiANCj4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0t LQ0KPiA+IEZyb206IFRpbmggTmd1eWVuIDx0aW5obmd1eWVuQGFtcGVyZW1haWwub25taWNyb3Nv ZnQuY29tPg0KPiA+IFNlbnQ6IFRodXJzZGF5LCBBcHJpbCAyMCwgMjAyMyAyOjA4IFBNDQo+ID4g VG86IGRldmVsQGVkazIuZ3JvdXBzLmlvOyBDaGFuZywgQWJuZXIgPEFibmVyLkNoYW5nQGFtZC5j b20+DQo+ID4gQ2M6IElzYWFjIE9yYW0gPGlzYWFjLncub3JhbUBpbnRlbC5jb20+OyBBdHRhciwg QWJkdWxMYXRlZWYgKEFiZHVsDQo+ID4gTGF0ZWVmKSA8QWJkdWxMYXRlZWYuQXR0YXJAYW1kLmNv bT47IE5pY2tsZSBXYW5nDQo+IDxuaWNrbGV3QG52aWRpYS5jb20+Ow0KPiA+IElnb3IgS3VsY2h5 dHNreXkgPGlnb3JrQGFtaS5jb20+DQo+ID4gU3ViamVjdDogUmU6IFtlZGsyLWRldmVsXSBbZWRr Mi1wbGF0Zm9ybXNdW1BBVENIIFYyIDAyLzE0XQ0KPiA+IE1hbmFnZWFiaWxpdHlQa2c6IFN1cHBv cnQgTWF4aW11bSBUcmFuc2ZlciBVbml0DQo+ID4NCj4gPiBDYXV0aW9uOiBUaGlzIG1lc3NhZ2Ug b3JpZ2luYXRlZCBmcm9tIGFuIEV4dGVybmFsIFNvdXJjZS4gVXNlIHByb3Blcg0KPiA+IGNhdXRp b24gd2hlbiBvcGVuaW5nIGF0dGFjaG1lbnRzLCBjbGlja2luZyBsaW5rcywgb3IgcmVzcG9uZGlu Zy4NCj4gPg0KPiA+DQo+ID4gSGkgQWJuZXIsDQo+ID4NCj4gPiBJIGhhdmUgc29tZSBpbmxpbmUg Y29tbWVudHMgYmVsb3cNCj4gPg0KPiA+IE9uIDE4LzA0LzIwMjMgMTQ6MTUsIENoYW5nLCBBYm5l ciB2aWEgZ3JvdXBzLmlvIHdyb3RlOg0KPiA+ID4gRnJvbTogQWJuZXIgQ2hhbmcgPGFibmVyLmNo YW5nQGFtZC5jb20+DQo+ID4gPg0KPiA+ID4gVXBkYXRlIEdldFRyYW5zcG9ydENhcGFiaWxpdHkg dG8gc3VwcG9ydCBNYXhpbXVtIFRyYW5zZmVyIFVuaXQgKE1UVSkNCj4gPiA+IG9mIHRyYW5zcG9y dCBpbnRlcmZhY2UuDQo+ID4gPg0KPiA+ID4gU2lnbmVkLW9mZi1ieTogQWJuZXIgQ2hhbmcgPGFi bmVyLmNoYW5nQGFtZC5jb20+DQo+ID4gPiBDYzogSXNhYWMgT3JhbSA8aXNhYWMudy5vcmFtQGlu dGVsLmNvbT4NCj4gPiA+IENjOiBBYmR1bCBMYXRlZWYgQXR0YXIgPGFiZGF0dGFyQGFtZC5jb20+ DQo+ID4gPiBDYzogTmlja2xlIFdhbmcgPG5pY2tsZXdAbnZpZGlhLmNvbT4NCj4gPiA+IENjOiBJ Z29yIEt1bGNoeXRza3l5IDxpZ29ya0BhbWkuY29tPg0KPiA+ID4gLS0tDQo+ID4gPiAgIC4uLi9M aWJyYXJ5L01hbmFnZWFiaWxpdHlUcmFuc3BvcnRMaWIuaCAgICAgICB8IDMzICsrKysrKysrLS0t DQo+ID4gPiAgIC4uLi9Db21tb24vTWFuYWdlYWJpbGl0eVRyYW5zcG9ydEtjcy5oICAgICAgICB8 ICAyICsNCj4gPiA+ICAgLi4uL0lwbWlQcm90b2NvbC9QZWkvSXBtaVBwaUludGVybmFsLmggICAg ICAgIHwgIDggKystDQo+ID4gPiAgIC4uLi9CYXNlTWFuYWdlYWJpbGl0eVRyYW5zcG9ydE51bGwu YyAgICAgICAgICB8IDE4ICsrKystLQ0KPiA+ID4gICAuLi4vRHhlL01hbmFnZWFiaWxpdHlUcmFu c3BvcnRLY3MuYyAgICAgICAgICAgfCA1NyArKysrKysrKysrKy0tLS0tLS0tDQo+ID4gPiAgIC4u Li9Vbml2ZXJzYWwvSXBtaVByb3RvY29sL0R4ZS9JcG1pUHJvdG9jb2wuYyB8IDI0ICsrKysrKy0t DQo+ID4gPiAgIC4uLi9Vbml2ZXJzYWwvSXBtaVByb3RvY29sL1BlaS9JcG1pUHBpLmMgICAgICB8 IDUxICsrKysrKysrKystLS0tLS0tDQo+ID4gPiAgIC4uLi9Vbml2ZXJzYWwvSXBtaVByb3RvY29s L1NtbS9JcG1pUHJvdG9jb2wuYyB8IDI0ICsrKysrKy0tDQo+ID4gPiAgIDggZmlsZXMgY2hhbmdl ZCwgMTQ1IGluc2VydGlvbnMoKyksIDcyIGRlbGV0aW9ucygtKQ0KPiA+ID4NCj4gPiA+IGRpZmYg LS1naXQNCj4gPiA+IGEvRmVhdHVyZXMvTWFuYWdlYWJpbGl0eVBrZy9JbmNsdWRlL0xpYnJhcnkv TWFuYWdlYWJpbGl0eVRyYW5zcG9ydExpYi4NCj4gPiA+IGgNCj4gPiA+IGIvRmVhdHVyZXMvTWFu YWdlYWJpbGl0eVBrZy9JbmNsdWRlL0xpYnJhcnkvTWFuYWdlYWJpbGl0eVRyYW5zcG9ydExpYi4N Cj4gPiA+IGgNCj4gPiA+IGluZGV4IGMwMjJiNGFjNWMuLmQ4NmQwZDg3ZDUgMTAwNjQ0DQo+ID4g PiAtLS0NCj4gPiA+IGEvRmVhdHVyZXMvTWFuYWdlYWJpbGl0eVBrZy9JbmNsdWRlL0xpYnJhcnkv TWFuYWdlYWJpbGl0eVRyYW5zcG9ydExpYi4NCj4gPiA+IGgNCj4gPiA+ICsrKyBiL0ZlYXR1cmVz L01hbmFnZWFiaWxpdHlQa2cvSW5jbHVkZS9MaWJyYXJ5L01hbmFnZWFiaWxpdHlUcmFuc3BvDQo+ ID4gPiArKysgcnQNCj4gPiA+ICsrKyBMaWIuaA0KPiA+ID4gQEAgLTE0LDYgKzE0LDkgQEANCj4g PiA+ICAgI2RlZmluZSBNQU5BR0VBQklMSVRZX1RSQU5TUE9SVF9UT0tFTl9WRVJTSU9ODQo+ID4g KChNQU5BR0VBQklMSVRZX1RSQU5TUE9SVF9UT0tFTl9WRVJTSU9OX01BSk9SIDw8IDgpIHxcDQo+ ID4gPg0KPiA+ID4gTUFOQUdFQUJJTElUWV9UUkFOU1BPUlRfVE9LRU5fVkVSU0lPTl9NSU5PUikN Cj4gPiA+DQo+ID4gPiArI2RlZmluZQ0KPiA+IE1BTkFHRUFCSUxJVFlfVFJBTlNQT1JUX1BBWUxP QURfU0laRV9GUk9NX0NBUEFCSUxJVFkoYSkgICgxDQo+IDw8ICgoYSAmDQo+ID4gTUFOQUdFQUJJ TElUWV9UUkFOU1BPUlRfQ0FQQUJJTElUWV9NQVhJTVVNX1BBWUxPQURfTUFTSykNCj4gPiA+PlwN Cj4gPiA+ICsNCj4gPiA+DQo+ID4NCj4gK01BTkFHRUFCSUxJVFlfVFJBTlNQT1JUX0NBUEFCSUxJ VFlfTUFYSU1VTV9QQVlMT0FEX0JJVF9QTw0KPiA+IFNJVElPTikpDQo+ID4gPiArDQo+ID4gPiAg IHR5cGVkZWYgc3RydWN0ICBfTUFOQUdFQUJJTElUWV9UUkFOU1BPUlRfRlVOQ1RJT05fVjFfMA0K PiA+IE1BTkFHRUFCSUxJVFlfVFJBTlNQT1JUX0ZVTkNUSU9OX1YxXzA7DQo+ID4gPiAgIHR5cGVk ZWYgc3RydWN0ICBfTUFOQUdFQUJJTElUWV9UUkFOU1BPUlQNCj4gPiBNQU5BR0VBQklMSVRZX1RS QU5TUE9SVDsNCj4gPiA+ICAgdHlwZWRlZiBzdHJ1Y3QgIF9NQU5BR0VBQklMSVRZX1RSQU5TUE9S VF9UT0tFTg0KPiA+IE1BTkFHRUFCSUxJVFlfVFJBTlNQT1JUX1RPS0VOOw0KPiA+ID4gQEAgLTY4 LDggKzcxLDE3IEBAIHR5cGVkZWYgVUlOVDMyDQo+ID4gTUFOQUdFQUJJTElUWV9UUkFOU1BPUlRf QURESVRJT05BTF9TVEFUVVM7DQo+ID4gPiAgIC8vLyBBZGRpdGlvbmFsIHRyYW5zcG9ydCBpbnRl cmZhY2UgZmVhdHVyZXMuDQo+ID4gPiAgIC8vLw0KPiA+ID4gICB0eXBlZGVmIFVJTlQzMiBNQU5B R0VBQklMSVRZX1RSQU5TUE9SVF9DQVBBQklMSVRZOw0KPiA+ID4gKy8vLyBCaXQgMA0KPiA+ID4g ICAjZGVmaW5lDQo+ID4NCj4gTUFOQUdFQUJJTElUWV9UUkFOU1BPUlRfQ0FQQUJJTElUWV9NVUxU SVBMRV9UUkFOU0ZFUl9UT0tFTlMNCj4gPiAweDAwMDAwMDAxDQo+ID4gPiAtI2RlZmluZQ0KPiA+ IE1BTkFHRUFCSUxJVFlfVFJBTlNQT1JUX0NBUEFCSUxJVFlfQVNZTkNIUk9OT1VTX1RSQU5TRkVS DQo+ID4gMHgwMDAwMDAwMg0KPiA+ID4gKy8vLyBCaXQgMQ0KPiA+ID4gKyNkZWZpbmUNCj4gPiBN QU5BR0VBQklMSVRZX1RSQU5TUE9SVF9DQVBBQklMSVRZX0FTWU5DSFJPTk9VU19UUkFOU0ZFUg0K PiA+IDB4MDAwMDAwMDINCj4gPiA+ICsvLy8gQml0IDIgICAtIFJlc2VydmVkDQo+ID4gPiArLy8v IEJpdCA3OjMgLSBUcmFuc3BvcnQgaW50ZXJmYWNlIG1heGltdW0gcGF5bG9hZCBzaXplLCB3aGlj aCBpcyAoMg0KPiA+ID4gK14gYml0Wzc6M10NCj4gPiAtIDEpDQo+ID4gPiArLy8vICAgICAgICAg ICBiaXRbNzozXSBtZWFucyBubyBtYXhpbXVtIHBheWxvYWQuDQo+ID4NCj4gPiBJIGFtIGNvbmZ1 c2VkIHdpdGggeW91ciBkZWZpbml0aW9uIGhlcmUuDQo+ID4NCj4gPiBXaHkgZG9lcyBpdCBoYXZl IHRvIGJlIGEgcG93ZXIgb2YgMj8NCj4gVXN1YWxseSB0aGUgbWF4aW11bS9taW5pbXVtIGlzIGlu ICBwb3dlciBvZiAyIGFuZCB1c2UgcG93ZXIgb2YgMiBoYXMgbGVzcw0KPiBiaXRzIG9jY3VwaWVk IGZyb20gTUFOQUdFQUJJTElUWV9UUkFOU1BPUlRfQ0FQQUJJTElUWS4NCj4gDQo+ID4NCj4gPiBB bmQgd2Ugc2hvdWxkIHNlcGFyYXRlIHJlcXVlc3QgcGF5bG9hZCBzaXplIGFuZCByZXNwb25zZSBw YXlsb2FkIHNpemUNCj4gPg0KPiA+IENhbiB5b3UgY2xhcmlmeSBtb3JlIGFib3V0IHRoYXQ/DQo+ IERvIHdlIHJlYWxseSBuZWVkIHRoZSBtYXhpbXVtIHNpemUgZm9yIHJlc3BvbnNlPyBSZXNwb25z ZSBpcyBpbml0aWF0ZWQgYnkNCj4gdGFyZ2V0IGVuZHBvaW50IGFuZCBzdXBwb3NlIHRoZSBwYXls b2FkIGhlYWRlciBzaG91bGQgaGF2ZSBzb21lIGZpZWxkcw0KPiB0aGF0IGluZGljYXRlIHRoZSBy ZXR1cm4gcGF5bG9hZCBpcyBvbmx5IHBhcnQgb2YgcmVzcG9uc2UuIFRoZSBzaXplIG9mIHBheWxv YWQNCj4gcmV0dXJuZWQgaXMgYWN0dWFsbHkgbWF4aW11bSB0cmFuc2ZlciBzaXplIHRoYXQgdGFy Z2V0IGVuZHBvaW50IGNhbiBoYW5kbGUuDQo+IERvIHlvdSBrbm93IGFueSBjYXNlIHRoYXQgcmVj ZWl2ZXIgaGFzIG5vIGlkZWEgYWJvdXQgaWYgdGhlIHBheWxvYWQgc2VudA0KPiBiYWNrIGZyb20g dGFyZ2V0IGVuZHBvaW50IGlzIGEgcGFydGlhbCBvZiByZXNwb25zZSBvciBub3Q/ICBXZSBzaG91 bGQgaGF2ZQ0KPiBNVFUgcmVzcG9uc2UgaWYgaXQgaXMgcmVxdWlyZWQgZm9yIHRoZSB0cmFuc3Bv cnQgaW50ZXJmYWNlLg0KPiANCj4gPg0KPiA+IEFub3RoZXIgcXVlc3Rpb24sIG9ubHkgUEVJX0lQ TUlfUFBJX0lOVEVSTkFMIGNvbnRhaW5zIE1heFBheWxvYWRTaXplLA0KPiBQUEkgaGFzIE1heFBh eWxvYWRTaXplIGluIHN0cnVjdHVyZSBpcyBiZWNhdXNlIHdlIGNhbid0IGRlZmluZSBhIGdsb2Jh bA0KPiB2YXJpYWJsZSBmb3IgUEVJIG1vZHVsZSBhcyBtb2R1bGUgaXMgZXhlY3V0ZWQgaW4gcGxh Y2UuDQo+IA0KPiA+IGhvdyBkbyBJUE1JL01DVFAvUExETSBwcm90b2NvbCBwcm92aWRlIE1heHBh eWxvYWRzaXplDQo+IEZvciBEWEUgZHJpdmVycywgdGhlIE1heHBheWxvYWRzaXplIGlzIGRlZmlu ZWQgYXMgZ2xvYmFsIHZhcmlhYmxlLg0KPiANCj4gPg0KPiA+IHRvIGNhbGxlcj8NCj4gPg0KPiA+ ID4gKyNkZWZpbmUNCj4gPiBNQU5BR0VBQklMSVRZX1RSQU5TUE9SVF9DQVBBQklMSVRZX01BWElN VU1fUEFZTE9BRF9NQVNLDQo+ID4gMHgwMDAwMDBmOA0KPiA+ID4gKyNkZWZpbmUNCj4gPg0KPiBN QU5BR0VBQklMSVRZX1RSQU5TUE9SVF9DQVBBQklMSVRZX01BWElNVU1fUEFZTE9BRF9CSVRfUE9T DQo+ID4gSVRJT04gICAzDQo+ID4gPiArI2RlZmluZQ0KPiA+ID4NCj4gPg0KPiArTUFOQUdFQUJJ TElUWV9UUkFOU1BPUlRfQ0FQQUJJTElUWV9NQVhJTVVNX1BBWUxPQURfTk9UX0ENCj4gPiBWQUlM QUJMRQ0KPiA+ID4gKzB4MDAgLy8vIEJpdCA4OjMxIC0gUmVzZXJ2ZWQNCj4gPiA+DQo+ID4gPiAg IC8vLw0KPiA+ID4gICAvLy8gRGVmaW5pdGlvbnMgb2YgTWFuYWdlYWJpbGl0eSB0cmFuc3BvcnQg aW50ZXJmYWNlIGZ1bmN0aW9ucy4NCj4gPiA+IEBAIC0xODcsMTUgKzE5OSwyMCBAQCBBY3F1aXJl VHJhbnNwb3J0U2Vzc2lvbiAoDQo+ID4gPiAgICAgKTsNCj4gPiA+DQo+ID4gPiAgIC8qKg0KPiA+ ID4gLSAgVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSB0cmFuc3BvcnQgY2FwYWJpbGl0aWVzLg0K PiA+ID4gLQ0KPiA+ID4gLSAgQHBhcmFtIFtvdXRdICBUcmFuc3BvcnRGZWF0dXJlICAgICAgICBQ b2ludGVyIHRvIHJlY2VpdmUgdHJhbnNwb3J0DQo+ID4gY2FwYWJpbGl0aWVzLg0KPiA+ID4gLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWUgdGhlIGRlZmluaXRpb25z IG9mDQo+ID4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1BTkFH RUFCSUxJVFlfVFJBTlNQT1JUX0NBUEFCSUxJVFkuDQo+ID4gPiAtDQo+ID4gPiArICBUaGlzIGZ1 bmN0aW9uIHJldHVybnMgdGhlIHRyYW5zcG9ydCBjYXBhYmlsaXRpZXMgYWNjb3JkaW5nIHRvDQo+ ID4gPiArIHRoZSBtYW5hZ2VhYmlsaXR5IHByb3RvY29sLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBh cmFtIFtpbl0gICBUcmFuc3BvcnRUb2tlbiAgICAgICAgICAgICBUcmFuc3BvcnQgdG9rZW4gYWNx dWlyZWQgZnJvbQ0KPiA+IG1hbmFnZWFiaWxpdHkNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNwb3J0IGxpYnJhcnkuDQo+ID4gPiArICBAcGFy YW0gW291dF0gIFRyYW5zcG9ydEZlYXR1cmUgICAgICAgICAgIFBvaW50ZXIgdG8gcmVjZWl2ZSB0 cmFuc3BvcnQNCj4gPiBjYXBhYmlsaXRpZXMuDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUgZGVmaW5pdGlvbnMgb2YNCj4gPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUFOQUdFQUJJTElUWV9UUkFO U1BPUlRfQ0FQQUJJTElUWS4NCj4gPiA+ICsgIEByZXR2YWwgICAgICAgRUZJX1NVQ0NFU1MgICAg ICAgICAgICAgICAgVHJhbnNwb3J0Q2FwYWJpbGl0eSBpcyByZXR1cm5lZA0KPiA+IHN1Y2Nlc3Nm dWxseS4NCj4gPiA+ICsgIEByZXR2YWwgICAgICAgRUZJX0lOVkFMSURfUEFSQU1FVEVSICAgICAg VHJhbnNwb3J0VG9rZW4gaXMgbm90IGEgdmFsaWQNCj4gPiB0b2tlbi4NCj4gPiA+ICAgKiovDQo+ ID4gPiAtVk9JRA0KPiA+ID4gK0VGSV9TVEFUVVMNCj4gPiA+ICAgR2V0VHJhbnNwb3J0Q2FwYWJp bGl0eSAoDQo+ID4gPiArICBJTiBNQU5BR0VBQklMSVRZX1RSQU5TUE9SVF9UT0tFTiAgICAgICAg KlRyYW5zcG9ydFRva2VuLA0KPiA+ID4gICAgIE9VVCBNQU5BR0VBQklMSVRZX1RSQU5TUE9SVF9D QVBBQklMSVRZICAqVHJhbnNwb3J0Q2FwYWJpbGl0eQ0KPiA+ID4gICAgICk7DQo+ID4gPg0KPiA+ ID4gZGlmZiAtLWdpdA0KPiA+ID4NCj4gPg0KPiBhL0ZlYXR1cmVzL01hbmFnZWFiaWxpdHlQa2cv TGlicmFyeS9NYW5hZ2VhYmlsaXR5VHJhbnNwb3J0S2NzTGliL0NvbW1vDQo+ID4gPiBuL01hbmFn ZWFiaWxpdHlUcmFuc3BvcnRLY3MuaA0KPiA+ID4NCj4gPg0KPiBiL0ZlYXR1cmVzL01hbmFnZWFi aWxpdHlQa2cvTGlicmFyeS9NYW5hZ2VhYmlsaXR5VHJhbnNwb3J0S2NzTGliL0NvbW0NCj4gPiBv DQo+ID4gPiBuL01hbmFnZWFiaWxpdHlUcmFuc3BvcnRLY3MuaA0KPiA+ID4gaW5kZXggZjE3NThm ZmQ4Zi4uMmNkZjYwYmE3ZSAxMDA2NDQNCj4gPiA+IC0tLQ0KPiA+ID4NCj4gPg0KPiBhL0ZlYXR1 cmVzL01hbmFnZWFiaWxpdHlQa2cvTGlicmFyeS9NYW5hZ2VhYmlsaXR5VHJhbnNwb3J0S2NzTGli L0NvbW1vDQo+ID4gPiBuL01hbmFnZWFiaWxpdHlUcmFuc3BvcnRLY3MuaA0KPiA+ID4gKysrIGIv RmVhdHVyZXMvTWFuYWdlYWJpbGl0eVBrZy9MaWJyYXJ5L01hbmFnZWFiaWxpdHlUcmFuc3BvcnRL Y3NMaWINCj4gPiA+ICsrKyAvQyBvbW1vbi9NYW5hZ2VhYmlsaXR5VHJhbnNwb3J0S2NzLmgNCj4g PiA+IEBAIC0zMiw2ICszMiw4IEBAIHR5cGVkZWYgc3RydWN0IHsNCj4gPiA+ICAgI2RlZmluZSBJ UE1JX0tDU19HRVRfU1RBVEUocykgIChzID4+IDYpDQo+ID4gPiAgICNkZWZpbmUgSVBNSV9LQ1Nf U0VUX1NUQVRFKHMpICAocyA8PCA2KQ0KPiA+ID4NCj4gPiA+ICsjZGVmaW5lIE1DVFBfS0NTX01U VV9JTl9QT1dFUl9PRl8yICA4DQo+ID4gPiArDQo+ID4gPiAgIC8vLyA1IHNlYywgYWNjb3JkaW5n IHRvIElQTUkgc3BlYw0KPiA+ID4gICAjZGVmaW5lIElQTUlfS0NTX1RJTUVPVVRfNV9TRUMgIDUw MDAqMTAwMA0KPiA+ID4gICAjZGVmaW5lIElQTUlfS0NTX1RJTUVPVVRfMU1TICAgIDEwMDANCj4g PiA+IGRpZmYgLS1naXQNCj4gPiA+IGEvRmVhdHVyZXMvTWFuYWdlYWJpbGl0eVBrZy9Vbml2ZXJz YWwvSXBtaVByb3RvY29sL1BlaS9JcG1pUHBpSW50ZXJuDQo+ID4gPiBhbA0KPiA+ID4gLmgNCj4g PiA+IGIvRmVhdHVyZXMvTWFuYWdlYWJpbGl0eVBrZy9Vbml2ZXJzYWwvSXBtaVByb3RvY29sL1Bl aS9JcG1pUHBpSW50ZXJuDQo+ID4gPiBhbA0KPiA+ID4gLmgNCj4gPiA+IGluZGV4IGJiZTBjOGM1 Y2IuLjRiNmJkYzk3YTkgMTAwNjQ0DQo+ID4gPiAtLS0NCj4gPiA+IGEvRmVhdHVyZXMvTWFuYWdl YWJpbGl0eVBrZy9Vbml2ZXJzYWwvSXBtaVByb3RvY29sL1BlaS9JcG1pUHBpSW50ZXJuDQo+ID4g PiBhbA0KPiA+ID4gLmgNCj4gPiA+ICsrKyBiL0ZlYXR1cmVzL01hbmFnZWFiaWxpdHlQa2cvVW5p dmVyc2FsL0lwbWlQcm90b2NvbC9QZWkvSXBtaVBwaUluDQo+ID4gPiArKysgdGUNCj4gPiA+ICsr KyBybmFsLmgNCj4gPiA+IEBAIC0xNyw5ICsxNywxMSBAQA0KPiA+ID4gICAjZGVmaW5lIE1BTkFH RUFCSUxJVFlfSVBNSV9QUElfSU5URVJOQUxfRlJPTV9MSU5LKGEpICBDUiAoYSwNCj4gPiA+IFBF SV9JUE1JX1BQSV9JTlRFUk5BTCwgUGVpSXBtaVBwaSwNCj4gPiA+IE1BTkFHRUFCSUxJVFlfSVBN SV9QUElfSU5URVJOQUxfU0lHTkFUVVJFKQ0KPiA+ID4NCj4gPiA+ICAgdHlwZWRlZiBzdHJ1Y3Qg ew0KPiA+ID4gLSAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAgIFNpZ25hdHVyZTsNCj4g PiA+IC0gIE1BTkFHRUFCSUxJVFlfVFJBTlNQT1JUX1RPS0VOICAqVHJhbnNwb3J0VG9rZW47DQo+ ID4gPiAtICBQRUlfSVBNSV9QUEkgICAgICAgICAgICAgICAgICAgUGVpSXBtaVBwaTsNCj4gPiA+ ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2lnbmF0dXJlOw0KPiA+ ID4gKyAgTUFOQUdFQUJJTElUWV9UUkFOU1BPUlRfVE9LRU4gICAgICAgICAqVHJhbnNwb3J0VG9r ZW47DQo+ID4gPiArICBNQU5BR0VBQklMSVRZX1RSQU5TUE9SVF9DQVBBQklMSVRZICAgIFRyYW5z cG9ydENhcGFiaWxpdHk7DQo+ID4gPiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFRyYW5zcG9ydE1heGltdW1QYXlsb2FkOw0KPiA+ID4gKyAgUEVJX0lQTUlfUFBJICAg ICAgICAgICAgICAgICAgICAgICAgICBQZWlJcG1pUHBpOw0KPiA+ID4gICB9IFBFSV9JUE1JX1BQ SV9JTlRFUk5BTDsNCj4gPiA+DQo+ID4gPiAgICNlbmRpZiAvLyBNQU5BR0VBQklMSVRZX0lQTUlf UFBJX0lOVEVSTkFMX0hfDQo+ID4gPiBkaWZmIC0tZ2l0DQo+ID4gPiBhL0ZlYXR1cmVzL01hbmFn ZWFiaWxpdHlQa2cvTGlicmFyeS9CYXNlTWFuYWdlYWJpbGl0eVRyYW5zcG9ydE51bGxMaQ0KPiA+ ID4gYi8NCj4gPiA+IEJhc2VNYW5hZ2VhYmlsaXR5VHJhbnNwb3J0TnVsbC5jDQo+ID4gPiBiL0Zl YXR1cmVzL01hbmFnZWFiaWxpdHlQa2cvTGlicmFyeS9CYXNlTWFuYWdlYWJpbGl0eVRyYW5zcG9y dE51bGxMaQ0KPiA+ID4gYi8NCj4gPiA+IEJhc2VNYW5hZ2VhYmlsaXR5VHJhbnNwb3J0TnVsbC5j DQo+ID4gPiBpbmRleCA0OWZjOGMwZjcxLi4zYWE2ODU3OGE2IDEwMDY0NA0KPiA+ID4gLS0tDQo+ ID4gPiBhL0ZlYXR1cmVzL01hbmFnZWFiaWxpdHlQa2cvTGlicmFyeS9CYXNlTWFuYWdlYWJpbGl0 eVRyYW5zcG9ydE51bGxMaQ0KPiA+ID4gYi8NCj4gPiA+IEJhc2VNYW5hZ2VhYmlsaXR5VHJhbnNw b3J0TnVsbC5jDQo+ID4gPiArKysNCj4gPiBiL0ZlYXR1cmVzL01hbmFnZWFiaWxpdHlQa2cvTGli cmFyeS9CYXNlTWFuYWdlYWJpbGl0eVRyYW5zcG9ydE51bGwNCj4gPiA+ICsrKyBMaWIvQmFzZU1h bmFnZWFiaWxpdHlUcmFuc3BvcnROdWxsLmMNCj4gPiA+IEBAIC0zMSwxOSArMzEsMjUgQEAgQWNx dWlyZVRyYW5zcG9ydFNlc3Npb24gKA0KPiA+ID4gICB9DQo+ID4gPg0KPiA+ID4gICAvKioNCj4g PiA+IC0gIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgdHJhbnNwb3J0IGNhcGFiaWxpdGllcy4N Cj4gPiA+IC0NCj4gPiA+IC0gIEBwYXJhbSBbb3V0XSAgVHJhbnNwb3J0RmVhdHVyZSAgICAgICAg UG9pbnRlciB0byByZWNlaXZlIHRyYW5zcG9ydA0KPiA+IGNhcGFiaWxpdGllcy4NCj4gPiA+IC0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZSBkZWZpbml0aW9u cyBvZg0KPiA+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNQU5B R0VBQklMSVRZX1RSQU5TUE9SVF9DQVBBQklMSVRZLg0KPiA+ID4gKyAgVGhpcyBmdW5jdGlvbiBy ZXR1cm5zIHRoZSB0cmFuc3BvcnQgY2FwYWJpbGl0aWVzIGFjY29yZGluZyB0bw0KPiA+ID4gKyB0 aGUgbWFuYWdlYWJpbGl0eSBwcm90b2NvbC4NCj4gPiA+DQo+ID4gPiArICBAcGFyYW0gW2luXSAg IFRyYW5zcG9ydFRva2VuICAgICAgICAgICAgIFRyYW5zcG9ydCB0b2tlbiBhY3F1aXJlZCBmcm9t DQo+ID4gbWFuYWdlYWJpbGl0eQ0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB0cmFuc3BvcnQgbGlicmFyeS4NCj4gPiA+ICsgIEBwYXJhbSBbb3V0XSAg VHJhbnNwb3J0RmVhdHVyZSAgICAgICAgICAgUG9pbnRlciB0byByZWNlaXZlIHRyYW5zcG9ydA0K PiA+IGNhcGFiaWxpdGllcy4NCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgU2VlIHRoZSBkZWZpbml0aW9ucyBvZg0KPiA+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNQU5BR0VBQklMSVRZX1RSQU5TUE9SVF9DQVBB QklMSVRZLg0KPiA+ID4gKyAgQHJldHZhbCAgICAgICBFRklfU1VDQ0VTUyAgICAgICAgICAgICAg ICBUcmFuc3BvcnRDYXBhYmlsaXR5IGlzIHJldHVybmVkDQo+ID4gc3VjY2Vzc2Z1bGx5Lg0KPiA+ ID4gKyAgQHJldHZhbCAgICAgICBFRklfSU5WQUxJRF9QQVJBTUVURVIgICAgICBUcmFuc3BvcnRU b2tlbiBpcyBub3QgYSB2YWxpZA0KPiA+IHRva2VuLg0KPiA+ID4gICAqKi8NCj4gPiA+IC1WT0lE DQo+ID4gPiArRUZJX1NUQVRVUw0KPiA+ID4gICBHZXRUcmFuc3BvcnRDYXBhYmlsaXR5ICgNCj4g PiA+ICsgIElOIE1BTkFHRUFCSUxJVFlfVFJBTlNQT1JUX1RPS0VOICAgICAgICAqVHJhbnNwb3J0 VG9rZW4sDQo+ID4gPiAgICAgT1VUIE1BTkFHRUFCSUxJVFlfVFJBTlNQT1JUX0NBUEFCSUxJVFkg ICpUcmFuc3BvcnRDYXBhYmlsaXR5DQo+ID4gPiAgICAgKQ0KPiA+ID4gICB7DQo+ID4gPiAgICAg KlRyYW5zcG9ydENhcGFiaWxpdHkgPSAwOw0KPiA+ID4gKyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0K PiA+ID4gICB9DQo+ID4gPg0KPiA+ID4gICAvKioNCj4gPiA+IGRpZmYgLS1naXQNCj4gPiA+DQo+ ID4NCj4gYS9GZWF0dXJlcy9NYW5hZ2VhYmlsaXR5UGtnL0xpYnJhcnkvTWFuYWdlYWJpbGl0eVRy YW5zcG9ydEtjc0xpYi9EeGUvTQ0KPiA+ID4gYW5hZ2VhYmlsaXR5VHJhbnNwb3J0S2NzLmMNCj4g PiA+DQo+ID4NCj4gYi9GZWF0dXJlcy9NYW5hZ2VhYmlsaXR5UGtnL0xpYnJhcnkvTWFuYWdlYWJp bGl0eVRyYW5zcG9ydEtjc0xpYi9EeGUvTQ0KPiA+ID4gYW5hZ2VhYmlsaXR5VHJhbnNwb3J0S2Nz LmMNCj4gPiA+IGluZGV4IGFiNDE2ZTU0NDkuLjdkODUzNzhmYzEgMTAwNjQ0DQo+ID4gPiAtLS0N Cj4gPiA+DQo+ID4NCj4gYS9GZWF0dXJlcy9NYW5hZ2VhYmlsaXR5UGtnL0xpYnJhcnkvTWFuYWdl YWJpbGl0eVRyYW5zcG9ydEtjc0xpYi9EeGUvTQ0KPiA+ID4gYW5hZ2VhYmlsaXR5VHJhbnNwb3J0 S2NzLmMNCj4gPiA+ICsrKyBiL0ZlYXR1cmVzL01hbmFnZWFiaWxpdHlQa2cvTGlicmFyeS9NYW5h Z2VhYmlsaXR5VHJhbnNwb3J0S2NzTGliDQo+ID4gPiArKysgL0QNCj4gPiA+ICsrKyB4ZS9NYW5h Z2VhYmlsaXR5VHJhbnNwb3J0S2NzLmMNCj4gPiA+IEBAIC02Miw3ICs2Miw3IEBAIEtjc1RyYW5z cG9ydEluaXQgKA0KPiA+ID4gICAgIH0NCj4gPiA+DQo+ID4gPiAgICAgaWYgKEhhcmR3YXJlSW5m by5LY3MgPT0gTlVMTCkgew0KPiA+ID4gLSAgICBERUJVRyAoKERFQlVHX0lORk8sICIlYTogSGFy ZHdhcmUgaW5mb3JtYXRpb24gaXMgbm90IHByb3ZpZGVkLA0KPiB1c2UNCj4gPiBkZmF1bHQgc2V0 dGluZ3MuXG4iLCBfX0ZVTkNUSU9OX18pKTsNCj4gPiA+ICsgICAgREVCVUcgKChERUJVR19NQU5B R0VBQklMSVRZX0lORk8sICIlYTogSGFyZHdhcmUgaW5mb3JtYXRpb24NCj4gaXMNCj4gPiA+ICsg bm90IHByb3ZpZGVkLCB1c2UgZGZhdWx0IHNldHRpbmdzLlxuIiwgX19GVU5DVElPTl9fKSk7DQo+ ID4gPiAgICAgICBtS2NzSGFyZHdhcmVJbmZvLk1lbW9yeU1hcCAgICAgICAgICAgICAgICAgICAg PQ0KPiA+IE1BTkFHRUFCSUxJVFlfVFJBTlNQT1JUX0tDU19JT19NQVBfSU87DQo+ID4gPiAgICAg ICBtS2NzSGFyZHdhcmVJbmZvLklvQmFzZUFkZHJlc3MuSW9BZGRyZXNzMTYgICAgPSBQY2RHZXQx Ng0KPiA+IChQY2RJcG1pS2NzSW9CYXNlQWRkcmVzcyk7DQo+ID4gPiAgICAgICBtS2NzSGFyZHdh cmVJbmZvLklvRGF0YUluQWRkcmVzcy5Jb0FkZHJlc3MxNiAgPQ0KPiA+ID4gbUtjc0hhcmR3YXJl SW5mby5Jb0Jhc2VBZGRyZXNzLklvQWRkcmVzczE2ICsNCj4gPiBJUE1JX0tDU19EQVRBX0lOX1JF R0lTVEVSX09GRlNFVDsgQEAgLTgxLDIxICs4MSwyMSBAQA0KPiBLY3NUcmFuc3BvcnRJbml0DQo+ ID4gKA0KPiA+ID4gICAgIC8vIEdldCBwcm90b2NvbCBzcGVjaWZpY2F0aW9uIG5hbWUuDQo+ID4g PiAgICAgTWFuYWdlYWJpbGl0eVByb3RvY29sTmFtZSA9IEhlbHBlck1hbmFnZWFiaWxpdHlTcGVj TmFtZQ0KPiA+ID4gKFRyYW5zcG9ydFRva2VuLT5NYW5hZ2VhYmlsaXR5UHJvdG9jb2xTcGVjaWZp Y2F0aW9uKTsNCj4gPiA+DQo+ID4gPiAtICBERUJVRyAoKERFQlVHX0lORk8sICIlYTogS0NTIHRy YW5zcG9ydCBoYXJkd2FyZSBmb3IgJXMgaXM6XG4iLA0KPiA+ID4gX19GVU5DVElPTl9fLCBNYW5h Z2VhYmlsaXR5UHJvdG9jb2xOYW1lKSk7DQo+ID4gPiArICBERUJVRyAoKERFQlVHX01BTkFHRUFC SUxJVFlfSU5GTywgIiVhOiBLQ1MgdHJhbnNwb3J0IGhhcmR3YXJlDQo+ID4gZm9yDQo+ID4gPiAr ICVzIGlzOlxuIiwgX19GVU5DVElPTl9fLCBNYW5hZ2VhYmlsaXR5UHJvdG9jb2xOYW1lKSk7DQo+ ID4gPiAgICAgaWYgKG1LY3NIYXJkd2FyZUluZm8uTWVtb3J5TWFwKSB7DQo+ID4gPiAtICAgIERF QlVHICgoREVCVUdfSU5GTywgIk1lbW9yeSBNYXAgSS9PXG4iLCBfX0ZVTkNUSU9OX18pKTsNCj4g PiA+IC0gICAgREVCVUcgKChERUJVR19JTkZPLCAiQmFzZSBNZW1vcnkgQWRkcmVzcyA6IDB4JTA4 eFxuIiwNCj4gPiBtS2NzSGFyZHdhcmVJbmZvLklvQmFzZUFkZHJlc3MuSW9BZGRyZXNzMzIpKTsN Cj4gPiA+IC0gICAgREVCVUcgKChERUJVR19JTkZPLCAiRGF0YSBpbiBBZGRyZXNzICAgICA6IDB4 JTA4eFxuIiwNCj4gPiBtS2NzSGFyZHdhcmVJbmZvLklvRGF0YUluQWRkcmVzcy5Jb0FkZHJlc3Mz MikpOw0KPiA+ID4gLSAgICBERUJVRyAoKERFQlVHX0lORk8sICJEYXRhIG91dCBBZGRyZXNzICAg IDogMHglMDh4XG4iLA0KPiA+IG1LY3NIYXJkd2FyZUluZm8uSW9EYXRhT3V0QWRkcmVzcy5Jb0Fk ZHJlc3MzMikpOw0KPiA+ID4gLSAgICBERUJVRyAoKERFQlVHX0lORk8sICJDb21tYW5kIEFkZHJl c3MgICAgIDogMHglMDh4XG4iLA0KPiA+IG1LY3NIYXJkd2FyZUluZm8uSW9Db21tYW5kQWRkcmVz cy5Jb0FkZHJlc3MzMikpOw0KPiA+ID4gLSAgICBERUJVRyAoKERFQlVHX0lORk8sICJTdGF0dXMg QWRkcmVzcyAgICAgIDogMHglMDh4XG4iLA0KPiA+IG1LY3NIYXJkd2FyZUluZm8uSW9TdGF0dXNB ZGRyZXNzLklvQWRkcmVzczMyKSk7DQo+ID4gPiArICAgIERFQlVHICgoREVCVUdfTUFOQUdFQUJJ TElUWV9JTkZPLCAiTWVtb3J5IE1hcCBJL09cbiIsDQo+ID4gX19GVU5DVElPTl9fKSk7DQo+ID4g PiArICAgIERFQlVHICgoREVCVUdfTUFOQUdFQUJJTElUWV9JTkZPLCAiQmFzZSBNZW1vcnkgQWRk cmVzcyA6DQo+ID4gMHglMDh4XG4iLCBtS2NzSGFyZHdhcmVJbmZvLklvQmFzZUFkZHJlc3MuSW9B ZGRyZXNzMzIpKTsNCj4gPiA+ICsgICAgREVCVUcgKChERUJVR19NQU5BR0VBQklMSVRZX0lORk8s ICJEYXRhIGluIEFkZHJlc3MgICAgIDoNCj4gPiAweCUwOHhcbiIsIG1LY3NIYXJkd2FyZUluZm8u SW9EYXRhSW5BZGRyZXNzLklvQWRkcmVzczMyKSk7DQo+ID4gPiArICAgIERFQlVHICgoREVCVUdf TUFOQUdFQUJJTElUWV9JTkZPLCAiRGF0YSBvdXQgQWRkcmVzcyAgICA6DQo+ID4gMHglMDh4XG4i LCBtS2NzSGFyZHdhcmVJbmZvLklvRGF0YU91dEFkZHJlc3MuSW9BZGRyZXNzMzIpKTsNCj4gPiA+ ICsgICAgREVCVUcgKChERUJVR19NQU5BR0VBQklMSVRZX0lORk8sICJDb21tYW5kIEFkZHJlc3Mg ICAgIDoNCj4gPiAweCUwOHhcbiIsIG1LY3NIYXJkd2FyZUluZm8uSW9Db21tYW5kQWRkcmVzcy5J b0FkZHJlc3MzMikpOw0KPiA+ID4gKyAgICBERUJVRyAoKERFQlVHX01BTkFHRUFCSUxJVFlfSU5G TywgIlN0YXR1cyBBZGRyZXNzICAgICAgOg0KPiA+IDB4JTA4eFxuIiwgbUtjc0hhcmR3YXJlSW5m by5Jb1N0YXR1c0FkZHJlc3MuSW9BZGRyZXNzMzIpKTsNCj4gPiA+ICAgICB9IGVsc2Ugew0KPiA+ ID4gLSAgICBERUJVRyAoKERFQlVHX0lORk8sICJJL08gTWFwIEkvT1xuIikpOw0KPiA+ID4gLSAg ICBERUJVRyAoKERFQlVHX0lORk8sICJCYXNlIEkvTyBwb3J0ICAgIDogMHglMDR4XG4iLA0KPiA+ IG1LY3NIYXJkd2FyZUluZm8uSW9CYXNlQWRkcmVzcy5Jb0FkZHJlc3MxNikpOw0KPiA+ID4gLSAg ICBERUJVRyAoKERFQlVHX0lORk8sICJEYXRhIGluIEkvTyBwb3J0IDogMHglMDR4XG4iLA0KPiA+ IG1LY3NIYXJkd2FyZUluZm8uSW9EYXRhSW5BZGRyZXNzLklvQWRkcmVzczE2KSk7DQo+ID4gPiAt ICAgIERFQlVHICgoREVCVUdfSU5GTywgIkRhdGEgb3V0IEkvTyBwb3J0OiAweCUwNHhcbiIsDQo+ ID4gbUtjc0hhcmR3YXJlSW5mby5Jb0RhdGFPdXRBZGRyZXNzLklvQWRkcmVzczE2KSk7DQo+ID4g PiAtICAgIERFQlVHICgoREVCVUdfSU5GTywgIkNvbW1hbmQgSS9PIHBvcnQgOiAweCUwNHhcbiIs DQo+ID4gbUtjc0hhcmR3YXJlSW5mby5Jb0NvbW1hbmRBZGRyZXNzLklvQWRkcmVzczE2KSk7DQo+ ID4gPiAtICAgIERFQlVHICgoREVCVUdfSU5GTywgIlN0YXR1cyBJL08gcG9ydCAgOiAweCUwNHhc biIsDQo+ID4gbUtjc0hhcmR3YXJlSW5mby5Jb1N0YXR1c0FkZHJlc3MuSW9BZGRyZXNzMTYpKTsN Cj4gPiA+ICsgICAgREVCVUcgKChERUJVR19NQU5BR0VBQklMSVRZX0lORk8sICJJL08gTWFwIEkv T1xuIikpOw0KPiA+ID4gKyAgICBERUJVRyAoKERFQlVHX01BTkFHRUFCSUxJVFlfSU5GTywgIkJh c2UgSS9PIHBvcnQgICAgOg0KPiAweCUwNHhcbiIsDQo+ID4gbUtjc0hhcmR3YXJlSW5mby5Jb0Jh c2VBZGRyZXNzLklvQWRkcmVzczE2KSk7DQo+ID4gPiArICAgIERFQlVHICgoREVCVUdfTUFOQUdF QUJJTElUWV9JTkZPLCAiRGF0YSBpbiBJL08gcG9ydCA6DQo+ID4gPiArIDB4JTA0eFxuIiwNCj4g PiBtS2NzSGFyZHdhcmVJbmZvLklvRGF0YUluQWRkcmVzcy5Jb0FkZHJlc3MxNikpOw0KPiA+ID4g KyAgICBERUJVRyAoKERFQlVHX01BTkFHRUFCSUxJVFlfSU5GTywgIkRhdGEgb3V0IEkvTyBwb3J0 Og0KPiA+IDB4JTA0eFxuIiwgbUtjc0hhcmR3YXJlSW5mby5Jb0RhdGFPdXRBZGRyZXNzLklvQWRk cmVzczE2KSk7DQo+ID4gPiArICAgIERFQlVHICgoREVCVUdfTUFOQUdFQUJJTElUWV9JTkZPLCAi Q29tbWFuZCBJL08gcG9ydCA6DQo+ID4gMHglMDR4XG4iLCBtS2NzSGFyZHdhcmVJbmZvLklvQ29t bWFuZEFkZHJlc3MuSW9BZGRyZXNzMTYpKTsNCj4gPiA+ICsgICAgREVCVUcgKChERUJVR19NQU5B R0VBQklMSVRZX0lORk8sICJTdGF0dXMgSS9PIHBvcnQgIDoNCj4gPiA+ICsgMHglMDR4XG4iLCBt S2NzSGFyZHdhcmVJbmZvLklvU3RhdHVzQWRkcmVzcy5Jb0FkZHJlc3MxNikpOw0KPiA+ID4gICAg IH0NCj4gPiBpZiB0aG9zZSBjb2RlIGlzIGp1c3QgZm9yIGRlYnVnZ2luZywgeW91IHNob3VsZCBw dXQgdGhlbSBpbnRvDQo+ID4gREVCVUdfQ09ERV9CRUdJTigpIGFuZCBERUJVR19DT0RFX0VORCgp DQo+IERFQlVHX01BTkFHRUFCSUxJVFkgaXMgZ290IGFwcHJvdmFsIGFuZCB3ZSBjYW4gdXNlIHRo YXQgdG8gZW5hYmxlIHRoZQ0KPiBwcmludCBlcnJvciBsZXZlbCBmb3IgTWFuYWdlYWJpbGl0eSBz dHVmZi4gVXNlIERFQlVHX0NPREVfQkVHSU4gcmVxdWlyZXMNCj4gdXNlciB0byBlbmFibGUgREVC VUdfUFJPUEVSVFlfREVCVUdfQ09ERV9FTkFCTEVEIGFkZGl0aW9uYWxseSwgaXQNCj4gc2F2ZXMg Uk9NIHNpemUgdGhvdWdoLg0KPiBIb3cgZG8geW91IHRoaW5rPyBXaGljaCB3YXkgaXMgY29udmVu aWVudCB0byB1c2VycyBhbmQgYWxzbyBoYXZlIGEgZ29vZA0KPiBjb2RlIHN0cnVjdHVyZT8NCj4g DQo+IFRoYW5rcw0KPiBBYm5lcg0KPiANCj4gPiA+DQo+ID4gPiAgICAgcmV0dXJuIEVGSV9TVUND RVNTOw0KPiA+ID4gQEAgLTIyMSw3ICsyMjEsNyBAQCBLY3NUcmFuc3BvcnRUcmFuc21pdFJlY2Vp dmUgKA0KPiA+ID4gICAgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0 dXM7DQo+ID4gPiAgICAgTUFOQUdFQUJJTElUWV9JUE1JX1RSQU5TUE9SVF9IRUFERVIgICpUcmFu c21pdEhlYWRlcjsNCj4gPiA+DQo+ID4gPiAtICBpZiAoVHJhbnNwb3J0VG9rZW4gPT0gTlVMTCB8 fCBUcmFuc2ZlclRva2VuID09IE5VTEwpIHsNCj4gPiA+ICsgIGlmICgoVHJhbnNwb3J0VG9rZW4g PT0gTlVMTCkgfHwgKFRyYW5zZmVyVG9rZW4gPT0gTlVMTCkpIHsNCj4gPiA+ICAgICAgIERFQlVH ICgoREVCVUdfRVJST1IsICIlYTogSW52YWxpZCB0cmFuc3BvcnQgdG9rZW4gb3IgdHJhbnNmZXIN Cj4gPiB0b2tlbi5cbiIsIF9fRlVOQ1RJT05fXykpOw0KPiA+ID4gICAgICAgcmV0dXJuOw0KPiA+ ID4gICAgIH0NCj4gPiA+IEBAIC0yOTgsNiArMjk4LDcgQEAgQWNxdWlyZVRyYW5zcG9ydFNlc3Np b24gKA0KPiA+ID4gICAgICAgREVCVUcgKChERUJVR19FUlJPUiwgIiVhOiBGYWlsIHRvIGFsbG9j YXRlIG1lbW9yeSBmb3INCj4gPiBNQU5BR0VBQklMSVRZX1RSQU5TUE9SVF9LQ1NcbiIsIF9fRlVO Q1RJT05fXykpOw0KPiA+ID4gICAgICAgcmV0dXJuIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTOw0KPiA+ ID4gICAgIH0NCj4gPiA+ICsNCj4gPiA+ICAgICBLY3NUcmFuc3BvcnRUb2tlbi0+VG9rZW4uVHJh bnNwb3J0ID0gQWxsb2NhdGVaZXJvUG9vbCAoc2l6ZW9mDQo+ID4gKE1BTkFHRUFCSUxJVFlfVFJB TlNQT1JUKSk7DQo+ID4gPiAgICAgaWYgKEtjc1RyYW5zcG9ydFRva2VuLT5Ub2tlbi5UcmFuc3Bv cnQgPT0gTlVMTCkgew0KPiA+ID4gICAgICAgRnJlZVBvb2wgKEtjc1RyYW5zcG9ydFRva2VuKTsN Cj4gPiA+IEBAIC0zMjksMjEgKzMzMCwyOSBAQCBBY3F1aXJlVHJhbnNwb3J0U2Vzc2lvbiAoDQo+ ID4gPiAgIH0NCj4gPiA+DQo+ID4gPiAgIC8qKg0KPiA+ID4gLSAgVGhpcyBmdW5jdGlvbiByZXR1 cm5zIHRoZSB0cmFuc3BvcnQgY2FwYWJpbGl0aWVzLg0KPiA+ID4gLQ0KPiA+ID4gLSAgQHBhcmFt IFtvdXRdICBUcmFuc3BvcnRGZWF0dXJlICAgICAgICBQb2ludGVyIHRvIHJlY2VpdmUgdHJhbnNw b3J0DQo+ID4gY2FwYWJpbGl0aWVzLg0KPiA+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBTZWUgdGhlIGRlZmluaXRpb25zIG9mDQo+ID4gPiAtICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1BTkFHRUFCSUxJVFlfVFJBTlNQT1JUX0NBUEFC SUxJVFkuDQo+ID4gPiAtDQo+ID4gPiArICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIHRyYW5z cG9ydCBjYXBhYmlsaXRpZXMgYWNjb3JkaW5nIHRvDQo+ID4gPiArIHRoZSBtYW5hZ2VhYmlsaXR5 IHByb3RvY29sLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtIFtpbl0gICBUcmFuc3BvcnRUb2tl biAgICAgICAgICAgICBUcmFuc3BvcnQgdG9rZW4gYWNxdWlyZWQgZnJvbQ0KPiA+IG1hbmFnZWFi aWxpdHkNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dHJhbnNwb3J0IGxpYnJhcnkuDQo+ID4gPiArICBAcGFyYW0gW291dF0gIFRyYW5zcG9ydEZlYXR1 cmUgICAgICAgICAgIFBvaW50ZXIgdG8gcmVjZWl2ZSB0cmFuc3BvcnQNCj4gPiBjYXBhYmlsaXRp ZXMuDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNl ZSB0aGUgZGVmaW5pdGlvbnMgb2YNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgTUFOQUdFQUJJTElUWV9UUkFOU1BPUlRfQ0FQQUJJTElUWS4NCj4gPiA+ ICsgIEByZXR2YWwgICAgICAgRUZJX1NVQ0NFU1MgICAgICAgICAgICAgICAgVHJhbnNwb3J0Q2Fw YWJpbGl0eSBpcyByZXR1cm5lZA0KPiA+IHN1Y2Nlc3NmdWxseS4NCj4gPiA+ICsgIEByZXR2YWwg ICAgICAgRUZJX0lOVkFMSURfUEFSQU1FVEVSICAgICAgVHJhbnNwb3J0VG9rZW4gaXMgbm90IGEg dmFsaWQNCj4gPiB0b2tlbi4NCj4gPiA+ICAgKiovDQo+ID4gPiAtVk9JRA0KPiA+ID4gK0VGSV9T VEFUVVMNCj4gPiA+ICAgR2V0VHJhbnNwb3J0Q2FwYWJpbGl0eSAoDQo+ID4gPiArICBJTiBNQU5B R0VBQklMSVRZX1RSQU5TUE9SVF9UT0tFTiAgICAgICAgKlRyYW5zcG9ydFRva2VuLA0KPiA+ID4g ICAgIE9VVCBNQU5BR0VBQklMSVRZX1RSQU5TUE9SVF9DQVBBQklMSVRZICAqVHJhbnNwb3J0Q2Fw YWJpbGl0eQ0KPiA+ID4gICAgICkNCj4gPiA+ICAgew0KPiA+ID4gLSAgaWYgKFRyYW5zcG9ydENh cGFiaWxpdHkgIT0gTlVMTCkgew0KPiA+ID4gLSAgICAqVHJhbnNwb3J0Q2FwYWJpbGl0eSA9IDA7 DQo+ID4gPiArICBpZiAoKFRyYW5zcG9ydFRva2VuID09IE5VTEwpIHx8IChUcmFuc3BvcnRDYXBh YmlsaXR5ID09IE5VTEwpKSB7DQo+ID4gPiArICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVU RVI7DQo+ID4gPiAgICAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAgKlRyYW5zcG9ydENhcGFiaWxpdHkg PSAwOw0KPiA+ID4gKyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiA+ID4gICB9DQo+ID4gPg0KPiA+ ID4gICAvKioNCj4gPiA+IGRpZmYgLS1naXQNCj4gPiA+IGEvRmVhdHVyZXMvTWFuYWdlYWJpbGl0 eVBrZy9Vbml2ZXJzYWwvSXBtaVByb3RvY29sL0R4ZS9JcG1pUHJvdG9jb2wuDQo+ID4gPiBjDQo+ ID4gPiBiL0ZlYXR1cmVzL01hbmFnZWFiaWxpdHlQa2cvVW5pdmVyc2FsL0lwbWlQcm90b2NvbC9E eGUvSXBtaVByb3RvY29sLg0KPiA+ID4gYw0KPiA+ID4gaW5kZXggMDUxNzVlZTQ0OC4uNTFkNWM3 ZjBiYSAxMDA2NDQNCj4gPiA+IC0tLQ0KPiA+ID4gYS9GZWF0dXJlcy9NYW5hZ2VhYmlsaXR5UGtn L1VuaXZlcnNhbC9JcG1pUHJvdG9jb2wvRHhlL0lwbWlQcm90b2NvbC4NCj4gPiA+IGMNCj4gPiA+ ICsrKw0KPiA+IGIvRmVhdHVyZXMvTWFuYWdlYWJpbGl0eVBrZy9Vbml2ZXJzYWwvSXBtaVByb3Rv Y29sL0R4ZS9JcG1pUHJvdG9jbw0KPiA+ID4gKysrIGwuYw0KPiA+ID4gQEAgLTE3LDkgKzE3LDkg QEANCj4gPiA+DQo+ID4gPiAgICNpbmNsdWRlICJJcG1pUHJvdG9jb2xDb21tb24uaCINCj4gPiA+ DQo+ID4gPiAtTUFOQUdFQUJJTElUWV9UUkFOU1BPUlRfVE9LRU4gICptVHJhbnNwb3J0VG9rZW4g PSBOVUxMOw0KPiA+ID4gLUNIQVIxNiAgICAgICAgICAgICAgICAgICAgICAgICAqbVRyYW5zcG9y dE5hbWU7DQo+ID4gPiAtDQo+ID4gPiArTUFOQUdFQUJJTElUWV9UUkFOU1BPUlRfVE9LRU4gICAg ICAgICAgICAgICAgICptVHJhbnNwb3J0VG9rZW4gPQ0KPiBOVUxMOw0KPiA+ID4gK0NIQVIxNiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbVRyYW5zcG9ydE5hbWU7DQo+ ID4gPiArVUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5z cG9ydE1heGltdW1QYXlsb2FkOw0KPiA+ID4gICBNQU5BR0VBQklMSVRZX1RSQU5TUE9SVF9IQVJE V0FSRV9JTkZPUk1BVElPTg0KPiA+IG1IYXJkd2FyZUluZm9ybWF0aW9uOw0KPiA+ID4NCj4gPiA+ ICAgLyoqDQo+ID4gPiBAQCAtOTIsOCArOTIsNiBAQCBEeGVJcG1pRW50cnkgKA0KPiA+ID4gICAg IE1BTkFHRUFCSUxJVFlfVFJBTlNQT1JUX0NBUEFCSUxJVFkgICAgICAgICBUcmFuc3BvcnRDYXBh YmlsaXR5Ow0KPiA+ID4gICAgIE1BTkFHRUFCSUxJVFlfVFJBTlNQT1JUX0FERElUSU9OQUxfU1RB VFVTDQo+ID4gPiBUcmFuc3BvcnRBZGRpdGlvbmFsU3RhdHVzOw0KPiA+ID4NCj4gPiA+IC0gIEdl dFRyYW5zcG9ydENhcGFiaWxpdHkgKCZUcmFuc3BvcnRDYXBhYmlsaXR5KTsNCj4gPiA+IC0NCj4g PiA+ICAgICBTdGF0dXMgPSBIZWxwZXJBY3F1aXJlTWFuYWdlYWJpbGl0eVRyYW5zcG9ydCAoDQo+ ID4gPiAgICAgICAgICAgICAgICAmZ01hbmFnZWFiaWxpdHlQcm90b2NvbElwbWlHdWlkLA0KPiA+ ID4gICAgICAgICAgICAgICAgJm1UcmFuc3BvcnRUb2tlbg0KPiA+ID4gQEAgLTEwMyw4ICsxMDEs MjIgQEAgRHhlSXBtaUVudHJ5ICgNCj4gPiA+ICAgICAgIHJldHVybiBTdGF0dXM7DQo+ID4gPiAg ICAgfQ0KPiA+ID4NCj4gPiA+ICsgIFN0YXR1cyA9IEdldFRyYW5zcG9ydENhcGFiaWxpdHkgKG1U cmFuc3BvcnRUb2tlbiwNCj4gPiA+ICsgJlRyYW5zcG9ydENhcGFiaWxpdHkpOyAgaWYgKEVGSV9F UlJPUiAoU3RhdHVzKSkgew0KPiA+ID4gKyAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiJWE6IEZh aWxlZCB0bw0KPiA+ID4gKyBHZXRUcmFuc3BvcnRDYXBhYmlsaXR5KCkuXG4iLA0KPiA+IF9fRlVO Q1RJT05fXykpOw0KPiA+ID4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiA+ID4gKyAgfQ0KPiA+ID4g Kw0KPiA+ID4gKyAgVHJhbnNwb3J0TWF4aW11bVBheWxvYWQgPQ0KPiA+ID4gKyBNQU5BR0VBQklM SVRZX1RSQU5TUE9SVF9QQVlMT0FEX1NJWkVfRlJPTV9DQVBBQklMSVRZDQo+ID4gKFRyYW5zcG9y dENhcGFiaWxpdHkpOyAgaWYgKFRyYW5zcG9ydE1heGltdW1QYXlsb2FkID09ICgxIDw8DQo+ID4N Cj4gTUFOQUdFQUJJTElUWV9UUkFOU1BPUlRfQ0FQQUJJTElUWV9NQVhJTVVNX1BBWUxPQURfTk9U X0FWDQo+ID4gQUlMQUJMRSkpIHsNCj4gPiA+ICsgICAgREVCVUcgKChERUJVR19NQU5BR0VBQklM SVRZX0lORk8sICIlYTogVHJhbnNwb3J0IGludGVyZmFjZQ0KPiA+ID4gKyBtYXhpbXVtIHBheWxv YWQgaXMgdW5kZWZpbmVkLlxuIiwgX19GVU5DVElPTl9fKSk7ICB9IGVsc2Ugew0KPiA+ID4gKyAg ICBUcmFuc3BvcnRNYXhpbXVtUGF5bG9hZCAtPSAxOw0KPiA+ID4gKyAgICBERUJVRyAoKERFQlVH X01BTkFHRUFCSUxJVFlfSU5GTywgIiVhOiBUcmFuc3BvcnQgaW50ZXJmYWNlIGZvcg0KPiA+ID4g KyBJUE1JIHByb3RvY29sIGhhcyBtYXhpbXVtIHBheWxvYWQgJXguXG4iLCBfX0ZVTkNUSU9OX18s DQo+ID4gPiArIFRyYW5zcG9ydE1heGltdW1QYXlsb2FkKSk7ICB9DQo+ID4gPiArDQo+ID4gPiAg ICAgbVRyYW5zcG9ydE5hbWUgPSBIZWxwZXJNYW5hZ2VhYmlsaXR5U3BlY05hbWUNCj4gPiA+ICht VHJhbnNwb3J0VG9rZW4tPlRyYW5zcG9ydC0+TWFuYWdlYWJpbGl0eVRyYW5zcG9ydFNwZWNpZmlj YXRpb24pOw0KPiA+ID4gLSAgREVCVUcgKChERUJVR19JTkZPLCAiJWE6IElQTUkgcHJvdG9jb2wg b3ZlciAlcy5cbiIsDQo+IF9fRlVOQ1RJT05fXywNCj4gPiA+IG1UcmFuc3BvcnROYW1lKSk7DQo+ ID4gPiArICBERUJVRyAoKERFQlVHX01BTkFHRUFCSUxJVFlfSU5GTywgIiVhOiBJUE1JIHByb3Rv Y29sIG92ZXINCj4gPiAlcy5cbiIsDQo+ID4gPiArIF9fRlVOQ1RJT05fXywgbVRyYW5zcG9ydE5h bWUpKTsNCj4gPiA+DQo+ID4gPiAgICAgLy8NCj4gPiA+ICAgICAvLyBTZXR1cCBoYXJkd2FyZSBp bmZvcm1hdGlvbiBhY2NvcmRpbmcgdG8gdGhlIHRyYW5zcG9ydCBpbnRlcmZhY2UuDQo+ID4gPiBk aWZmIC0tZ2l0DQo+ID4gPiBhL0ZlYXR1cmVzL01hbmFnZWFiaWxpdHlQa2cvVW5pdmVyc2FsL0lw bWlQcm90b2NvbC9QZWkvSXBtaVBwaS5jDQo+ID4gPiBiL0ZlYXR1cmVzL01hbmFnZWFiaWxpdHlQ a2cvVW5pdmVyc2FsL0lwbWlQcm90b2NvbC9QZWkvSXBtaVBwaS5jDQo+ID4gPiBpbmRleCBmODM5 Y2Q3Mzg3Li44YmYxZTc5NGYwIDEwMDY0NA0KPiA+ID4gLS0tIGEvRmVhdHVyZXMvTWFuYWdlYWJp bGl0eVBrZy9Vbml2ZXJzYWwvSXBtaVByb3RvY29sL1BlaS9JcG1pUHBpLmMNCj4gPiA+ICsrKyBi L0ZlYXR1cmVzL01hbmFnZWFiaWxpdHlQa2cvVW5pdmVyc2FsL0lwbWlQcm90b2NvbC9QZWkvSXBt aVBwaS5jDQo+ID4gPiBAQCAtNTEsMTkgKzUxLDE5IEBAIFBlaUlwbWlTdWJtaXRDb21tYW5kICgN Cj4gPiA+ICAgICBJTiBPVVQgVUlOVDMyICAgICAgICAqUmVzcG9uc2VEYXRhU2l6ZQ0KPiA+ID4g ICAgICkNCj4gPiA+ICAgew0KPiA+ID4gLSAgRUZJX1NUQVRVUyAgICAgICAgICAgIFN0YXR1czsN Cj4gPiA+IC0gIFBFSV9JUE1JX1BQSV9JTlRFUk5BTCAqUGVpSXBtaVBwaWludGVybmFsOw0KPiA+ ID4gLQ0KPiA+ID4gLSAgUGVpSXBtaVBwaWludGVybmFsID0NCj4gPiA+IE1BTkFHRUFCSUxJVFlf SVBNSV9QUElfSU5URVJOQUxfRlJPTV9MSU5LKFRoaXMpOw0KPiA+ID4gLSAgU3RhdHVzID0gQ29t bW9uSXBtaVN1Ym1pdENvbW1hbmQgKA0KPiA+ID4gLSAgICAgICAgICAgICBQZWlJcG1pUHBpaW50 ZXJuYWwtPlRyYW5zcG9ydFRva2VuLA0KPiA+ID4gLSAgICAgICAgICAgICBOZXRGdW5jdGlvbiwN Cj4gPiA+IC0gICAgICAgICAgICAgQ29tbWFuZCwNCj4gPiA+IC0gICAgICAgICAgICAgUmVxdWVz dERhdGEsDQo+ID4gPiAtICAgICAgICAgICAgIFJlcXVlc3REYXRhU2l6ZSwNCj4gPiA+IC0gICAg ICAgICAgICAgUmVzcG9uc2VEYXRhLA0KPiA+ID4gLSAgICAgICAgICAgICBSZXNwb25zZURhdGFT aXplDQo+ID4gPiAtICAgICAgICAgICAgICk7DQo+ID4gPiArICBFRklfU1RBVFVTICAgICAgICAg ICAgIFN0YXR1czsNCj4gPiA+ICsgIFBFSV9JUE1JX1BQSV9JTlRFUk5BTCAgKlBlaUlwbWlQcGlp bnRlcm5hbDsNCj4gPiA+ICsNCj4gPiA+ICsgIFBlaUlwbWlQcGlpbnRlcm5hbCA9DQo+IE1BTkFH RUFCSUxJVFlfSVBNSV9QUElfSU5URVJOQUxfRlJPTV9MSU5LDQo+ID4gKFRoaXMpOw0KPiA+ID4g KyAgU3RhdHVzICAgICAgICAgICAgID0gQ29tbW9uSXBtaVN1Ym1pdENvbW1hbmQgKA0KPiA+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICBQZWlJcG1pUHBpaW50ZXJuYWwtPlRyYW5zcG9ydFRv a2VuLA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICBOZXRGdW5jdGlvbiwNCj4gPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbWFuZCwNCj4gPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgUmVxdWVzdERhdGEsDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAg IFJlcXVlc3REYXRhU2l6ZSwNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgUmVzcG9u c2VEYXRhLA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICBSZXNwb25zZURhdGFTaXpl DQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICk7DQo+ID4gPiAgICAgcmV0dXJuIFN0 YXR1czsNCj4gPiA+ICAgfQ0KPiA+ID4NCj4gPiA+IEBAIC04NywyOSArODcsMjggQEAgUGVpSXBt aUVudHJ5ICgNCj4gPiA+ICAgICBDSEFSMTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKlRyYW5zcG9ydE5hbWU7DQo+ID4gPiAgICAgUEVJX0lQTUlfUFBJX0lOVEVSTkFM ICAgICAgICAgICAgICAgICAgICAgICAgICpQZWlJcG1pUHBpaW50ZXJuYWw7DQo+ID4gPiAgICAg RUZJX1BFSV9QUElfREVTQ1JJUFRPUiAgICAgICAgICAgICAgICAgICAgICAgICpQcGlEZXNjcmlw dG9yOw0KPiA+ID4gLSAgTUFOQUdFQUJJTElUWV9UUkFOU1BPUlRfQ0FQQUJJTElUWSAgICAgICAg ICAgIFRyYW5zcG9ydENhcGFiaWxpdHk7DQo+ID4gPiAgICAgTUFOQUdFQUJJTElUWV9UUkFOU1BP UlRfQURESVRJT05BTF9TVEFUVVMNCj4gPiBUcmFuc3BvcnRBZGRpdGlvbmFsU3RhdHVzOw0KPiA+ ID4gICAgIE1BTkFHRUFCSUxJVFlfVFJBTlNQT1JUX0hBUkRXQVJFX0lORk9STUFUSU9ODQo+ID4g SGFyZHdhcmVJbmZvcm1hdGlvbjsNCj4gPiA+DQo+ID4gPiAtICBQZWlJcG1pUHBpaW50ZXJuYWwg PSAoUEVJX0lQTUlfUFBJX0lOVEVSTkFMICopQWxsb2NhdGVaZXJvUG9vbA0KPiA+ID4gKHNpemVv ZihQRUlfSVBNSV9QUElfSU5URVJOQUwpKTsNCj4gPiA+ICsgIFBlaUlwbWlQcGlpbnRlcm5hbCA9 IChQRUlfSVBNSV9QUElfSU5URVJOQUwgKilBbGxvY2F0ZVplcm9Qb29sDQo+ID4gPiArIChzaXpl b2YgKFBFSV9JUE1JX1BQSV9JTlRFUk5BTCkpOw0KPiA+ID4gICAgIGlmIChQZWlJcG1pUHBpaW50 ZXJuYWwgPT0gTlVMTCkgew0KPiA+ID4gICAgICAgREVCVUcgKChERUJVR19FUlJPUiwgIiVhOiBO b3QgZW5vdWdoIG1lbW9yeSBmb3INCj4gPiBQRUlfSVBNSV9QUElfSU5URVJOQUwuXG4iLCBfX0ZV TkNUSU9OX18pKTsNCj4gPiA+ICAgICAgIHJldHVybiBFRklfT1VUX09GX1JFU09VUkNFUzsNCj4g PiA+ICAgICB9DQo+ID4gPiAtICBQcGlEZXNjcmlwdG9yID0gKEVGSV9QRUlfUFBJX0RFU0NSSVBU T1IgKilBbGxvY2F0ZVplcm9Qb29sDQo+ID4gPiAoc2l6ZW9mKEVGSV9QRUlfUFBJX0RFU0NSSVBU T1IpKTsNCj4gPiA+ICsNCj4gPiA+ICsgIFBwaURlc2NyaXB0b3IgPSAoRUZJX1BFSV9QUElfREVT Q1JJUFRPUiAqKUFsbG9jYXRlWmVyb1Bvb2wNCj4gPiA+ICsgKHNpemVvZiAoRUZJX1BFSV9QUElf REVTQ1JJUFRPUikpOw0KPiA+ID4gICAgIGlmIChQcGlEZXNjcmlwdG9yID09IE5VTEwpIHsNCj4g PiA+ICAgICAgIERFQlVHICgoREVCVUdfRVJST1IsICIlYTogTm90IGVub3VnaCBtZW1vcnkgZm9y DQo+ID4gRUZJX1BFSV9QUElfREVTQ1JJUFRPUi5cbiIsIF9fRlVOQ1RJT05fXykpOw0KPiA+ID4g ICAgICAgcmV0dXJuIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTOw0KPiA+ID4gICAgIH0NCj4gPiA+DQo+ ID4gPiAtICBQZWlJcG1pUHBpaW50ZXJuYWwtPlNpZ25hdHVyZSA9DQo+ID4gPiBNQU5BR0VBQklM SVRZX0lQTUlfUFBJX0lOVEVSTkFMX1NJR05BVFVSRTsNCj4gPiA+ICsgIFBlaUlwbWlQcGlpbnRl cm5hbC0+U2lnbmF0dXJlICAgICAgICAgICAgICAgICAgICA9DQo+ID4gTUFOQUdFQUJJTElUWV9J UE1JX1BQSV9JTlRFUk5BTF9TSUdOQVRVUkU7DQo+ID4gPiAgICAgUGVpSXBtaVBwaWludGVybmFs LT5QZWlJcG1pUHBpLklwbWlTdWJtaXRDb21tYW5kID0NCj4gPiA+IFBlaUlwbWlTdWJtaXRDb21t YW5kOw0KPiA+ID4NCj4gPiA+ICAgICBQcGlEZXNjcmlwdG9yLT5GbGFncyA9IEVGSV9QRUlfUFBJ X0RFU0NSSVBUT1JfUFBJIHwNCj4gPiBFRklfUEVJX1BQSV9ERVNDUklQVE9SX1RFUk1JTkFURV9M SVNUOw0KPiA+ID4gICAgIFBwaURlc2NyaXB0b3ItPkd1aWQgID0gJmdQZWlJcG1pUHBpR3VpZDsN Cj4gPiA+ICAgICBQcGlEZXNjcmlwdG9yLT5QcGkgICA9ICZQZWlJcG1pUHBpaW50ZXJuYWwtPlBl aUlwbWlQcGk7DQo+ID4gPg0KPiA+ID4gLSAgR2V0VHJhbnNwb3J0Q2FwYWJpbGl0eSAoJlRyYW5z cG9ydENhcGFiaWxpdHkpOw0KPiA+ID4gICAgIFN0YXR1cyA9IEhlbHBlckFjcXVpcmVNYW5hZ2Vh YmlsaXR5VHJhbnNwb3J0ICgNCj4gPiA+ICAgICAgICAgICAgICAgICZnTWFuYWdlYWJpbGl0eVBy b3RvY29sSXBtaUd1aWQsDQo+ID4gPiAgICAgICAgICAgICAgICAmUGVpSXBtaVBwaWludGVybmFs LT5UcmFuc3BvcnRUb2tlbg0KPiA+ID4gQEAgLTExOSw4ICsxMTgsMjIgQEAgUGVpSXBtaUVudHJ5 ICgNCj4gPiA+ICAgICAgIHJldHVybiBTdGF0dXM7DQo+ID4gPiAgICAgfQ0KPiA+ID4NCj4gPiA+ ICsgIFN0YXR1cyA9IEdldFRyYW5zcG9ydENhcGFiaWxpdHkNCj4gPiA+ICsgKFBlaUlwbWlQcGlp bnRlcm5hbC0+VHJhbnNwb3J0VG9rZW4sDQo+ID4gPiArICZQZWlJcG1pUHBpaW50ZXJuYWwtPlRy YW5zcG9ydENhcGFiaWxpdHkpOw0KPiA+ID4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0K PiA+ID4gKyAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiJWE6IEZhaWxlZCB0bw0KPiA+ID4gKyBH ZXRUcmFuc3BvcnRDYXBhYmlsaXR5KCkuXG4iLA0KPiA+IF9fRlVOQ1RJT05fXykpOw0KPiA+ID4g KyAgICByZXR1cm4gU3RhdHVzOw0KPiA+ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAgUGVpSXBt aVBwaWludGVybmFsLT5UcmFuc3BvcnRNYXhpbXVtUGF5bG9hZCA9DQo+ID4gPiArIE1BTkFHRUFC SUxJVFlfVFJBTlNQT1JUX1BBWUxPQURfU0laRV9GUk9NX0NBUEFCSUxJVFkNCj4gPiA+ICsgKFBl aUlwbWlQcGlpbnRlcm5hbC0+VHJhbnNwb3J0Q2FwYWJpbGl0eSk7DQo+ID4gPiArICBpZiAoUGVp SXBtaVBwaWludGVybmFsLT5UcmFuc3BvcnRNYXhpbXVtUGF5bG9hZCAgPT0gKDEgPDwNCj4gPg0K PiBNQU5BR0VBQklMSVRZX1RSQU5TUE9SVF9DQVBBQklMSVRZX01BWElNVU1fUEFZTE9BRF9OT1Rf QVYNCj4gPiBBSUxBQkxFKSkgew0KPiA+ID4gKyAgICBERUJVRyAoKERFQlVHX01BTkFHRUFCSUxJ VFlfSU5GTywgIiVhOiBUcmFuc3BvcnQgaW50ZXJmYWNlDQo+ID4gPiArIG1heGltdW0gcGF5bG9h ZCBpcyB1bmRlZmluZWQuXG4iLCBfX0ZVTkNUSU9OX18pKTsgIH0gZWxzZSB7DQo+ID4gPiArICAg IFBlaUlwbWlQcGlpbnRlcm5hbC0+VHJhbnNwb3J0TWF4aW11bVBheWxvYWQgLT0gMTsNCj4gPiA+ ICsgICAgREVCVUcgKChERUJVR19NQU5BR0VBQklMSVRZX0lORk8sICIlYTogVHJhbnNwb3J0IGlu dGVyZmFjZSBmb3INCj4gPiA+ICsgSVBNSSBwcm90b2NvbCBoYXMgbWF4aW11bSBwYXlsb2FkIDB4 JXguXG4iLCBfX0ZVTkNUSU9OX18sDQo+ID4gPiArIFBlaUlwbWlQcGlpbnRlcm5hbC0+VHJhbnNw b3J0TWF4aW11bVBheWxvYWQpKTsNCj4gPiA+ICsgIH0NCj4gPiA+ICsNCj4gPiA+ICAgICBUcmFu c3BvcnROYW1lID0gSGVscGVyTWFuYWdlYWJpbGl0eVNwZWNOYW1lDQo+ID4gPiAoUGVpSXBtaVBw aWludGVybmFsLT5UcmFuc3BvcnRUb2tlbi0+VHJhbnNwb3J0LT5NYW5hZ2VhYmlsaXR5VHJhbnNw bw0KPiA+ID4gcnQNCj4gPiA+IFNwZWNpZmljYXRpb24pOw0KPiA+ID4gLSAgREVCVUcgKChERUJV R19JTkZPLCAiJWE6IElQTUkgcHJvdG9jb2wgb3ZlciAlcy5cbiIsDQo+IF9fRlVOQ1RJT05fXywN Cj4gPiA+IFRyYW5zcG9ydE5hbWUpKTsNCj4gPiA+ICsgIERFQlVHICgoREVCVUdfTUFOQUdFQUJJ TElUWV9JTkZPLCAiJWE6IElQTUkgcHJvdG9jb2wgb3Zlcg0KPiA+ICVzLlxuIiwNCj4gPiA+ICsg X19GVU5DVElPTl9fLCBUcmFuc3BvcnROYW1lKSk7DQo+ID4gPg0KPiA+ID4gICAgIC8vDQo+ID4g PiAgICAgLy8gU2V0dXAgaGFyZHdhcmUgaW5mb3JtYXRpb24gYWNjb3JkaW5nIHRvIHRoZSB0cmFu c3BvcnQgaW50ZXJmYWNlLg0KPiA+ID4gZGlmZiAtLWdpdA0KPiA+ID4NCj4gYS9GZWF0dXJlcy9N YW5hZ2VhYmlsaXR5UGtnL1VuaXZlcnNhbC9JcG1pUHJvdG9jb2wvU21tL0lwbWlQcm90b2NvbC4N Cj4gPiA+IGMNCj4gPiA+DQo+ID4NCj4gYi9GZWF0dXJlcy9NYW5hZ2VhYmlsaXR5UGtnL1VuaXZl cnNhbC9JcG1pUHJvdG9jb2wvU21tL0lwbWlQcm90b2NvbC5jDQo+ID4gPiBpbmRleCA4N2E1NDM2 YmRmLi5lNGNkMTY2YjdhIDEwMDY0NA0KPiA+ID4gLS0tDQo+ID4gPg0KPiBhL0ZlYXR1cmVzL01h bmFnZWFiaWxpdHlQa2cvVW5pdmVyc2FsL0lwbWlQcm90b2NvbC9TbW0vSXBtaVByb3RvY29sLg0K PiA+ID4gYw0KPiA+ID4gKysrDQo+ID4gYi9GZWF0dXJlcy9NYW5hZ2VhYmlsaXR5UGtnL1VuaXZl cnNhbC9JcG1pUHJvdG9jb2wvU21tL0lwbWlQcm90b2NvDQo+ID4gPiArKysgbC5jDQo+ID4gPiBA QCAtMTgsOSArMTgsOSBAQA0KPiA+ID4NCj4gPiA+ICAgI2luY2x1ZGUgIklwbWlQcm90b2NvbENv bW1vbi5oIg0KPiA+ID4NCj4gPiA+IC1NQU5BR0VBQklMSVRZX1RSQU5TUE9SVF9UT0tFTiAgKm1U cmFuc3BvcnRUb2tlbiA9IE5VTEw7DQo+ID4gPiAtQ0hBUjE2ICAgICAgICAgICAgICAgICAgICAg ICAgICptVHJhbnNwb3J0TmFtZTsNCj4gPiA+IC0NCj4gPiA+ICtNQU5BR0VBQklMSVRZX1RSQU5T UE9SVF9UT0tFTiAgICAgICAgICAgICAgICAgKm1UcmFuc3BvcnRUb2tlbiA9DQo+IE5VTEw7DQo+ ID4gPiArQ0hBUjE2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICptVHJh bnNwb3J0TmFtZTsNCj4gPiA+ICtVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgVHJhbnNwb3J0TWF4aW11bVBheWxvYWQ7DQo+ID4gPiAgIE1BTkFHRUFCSUxJVFlf VFJBTlNQT1JUX0hBUkRXQVJFX0lORk9STUFUSU9ODQo+ID4gbUhhcmR3YXJlSW5mb3JtYXRpb247 DQo+ID4gPg0KPiA+ID4gICAvKioNCj4gPiA+IEBAIC05Myw4ICs5Myw2IEBAIFNtbUlwbWlFbnRy eSAoDQo+ID4gPiAgICAgTUFOQUdFQUJJTElUWV9UUkFOU1BPUlRfQ0FQQUJJTElUWSAgICAgICAg IFRyYW5zcG9ydENhcGFiaWxpdHk7DQo+ID4gPiAgICAgTUFOQUdFQUJJTElUWV9UUkFOU1BPUlRf QURESVRJT05BTF9TVEFUVVMNCj4gPiA+IFRyYW5zcG9ydEFkZGl0aW9uYWxTdGF0dXM7DQo+ID4g Pg0KPiA+ID4gLSAgR2V0VHJhbnNwb3J0Q2FwYWJpbGl0eSAoJlRyYW5zcG9ydENhcGFiaWxpdHkp Ow0KPiA+ID4gLQ0KPiA+ID4gICAgIFN0YXR1cyA9IEhlbHBlckFjcXVpcmVNYW5hZ2VhYmlsaXR5 VHJhbnNwb3J0ICgNCj4gPiA+ICAgICAgICAgICAgICAgICZnTWFuYWdlYWJpbGl0eVByb3RvY29s SXBtaUd1aWQsDQo+ID4gPiAgICAgICAgICAgICAgICAmbVRyYW5zcG9ydFRva2VuDQo+ID4gPiBA QCAtMTA0LDggKzEwMiwyMiBAQCBTbW1JcG1pRW50cnkgKA0KPiA+ID4gICAgICAgcmV0dXJuIFN0 YXR1czsNCj4gPiA+ICAgICB9DQo+ID4gPg0KPiA+ID4gKyAgU3RhdHVzID0gR2V0VHJhbnNwb3J0 Q2FwYWJpbGl0eSAobVRyYW5zcG9ydFRva2VuLA0KPiA+ID4gKyAmVHJhbnNwb3J0Q2FwYWJpbGl0 eSk7ICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gPiArICAgIERFQlVHICgoREVCVUdf RVJST1IsICIlYTogRmFpbGVkIHRvDQo+ID4gPiArIEdldFRyYW5zcG9ydENhcGFiaWxpdHkoKS5c biIsDQo+ID4gX19GVU5DVElPTl9fKSk7DQo+ID4gPiArICAgIHJldHVybiBTdGF0dXM7DQo+ID4g PiArICB9DQo+ID4gPiArDQo+ID4gPiArICBUcmFuc3BvcnRNYXhpbXVtUGF5bG9hZCA9DQo+ID4g PiArIE1BTkFHRUFCSUxJVFlfVFJBTlNQT1JUX1BBWUxPQURfU0laRV9GUk9NX0NBUEFCSUxJVFkN Cj4gPiAoVHJhbnNwb3J0Q2FwYWJpbGl0eSk7ICBpZiAoVHJhbnNwb3J0TWF4aW11bVBheWxvYWQg PT0gKDEgPDwNCj4gPg0KPiBNQU5BR0VBQklMSVRZX1RSQU5TUE9SVF9DQVBBQklMSVRZX01BWElN VU1fUEFZTE9BRF9OT1RfQVYNCj4gPiBBSUxBQkxFKSkgew0KPiA+ID4gKyAgICBERUJVRyAoKERF QlVHX01BTkFHRUFCSUxJVFlfSU5GTywgIiVhOiBUcmFuc3BvcnQgaW50ZXJmYWNlDQo+ID4gPiAr IG1heGltdW0gcGF5bG9hZCBpcyB1bmRlZmluZWQuXG4iLCBfX0ZVTkNUSU9OX18pKTsgIH0gZWxz ZSB7DQo+ID4gPiArICAgIFRyYW5zcG9ydE1heGltdW1QYXlsb2FkIC09IDE7DQo+ID4gPiArICAg IERFQlVHICgoREVCVUdfTUFOQUdFQUJJTElUWV9JTkZPLCAiJWE6IFRyYW5zcG9ydCBpbnRlcmZh Y2UgZm9yDQo+ID4gPiArIElQTUkgcHJvdG9jb2wgaGFzIG1heGltdW0gcGF5bG9hZCAweCV4Llxu IiwgX19GVU5DVElPTl9fLA0KPiA+ID4gKyBUcmFuc3BvcnRNYXhpbXVtUGF5bG9hZCkpOyAgfQ0K PiA+ID4gKw0KPiA+ID4gICAgIG1UcmFuc3BvcnROYW1lID0gSGVscGVyTWFuYWdlYWJpbGl0eVNw ZWNOYW1lDQo+ID4gPiAobVRyYW5zcG9ydFRva2VuLT5UcmFuc3BvcnQtPk1hbmFnZWFiaWxpdHlU cmFuc3BvcnRTcGVjaWZpY2F0aW9uKTsNCj4gPiA+IC0gIERFQlVHICgoREVCVUdfSU5GTywgIiVh OiBJUE1JIHByb3RvY29sIG92ZXIgJXMuXG4iLA0KPiBfX0ZVTkNUSU9OX18sDQo+ID4gPiBtVHJh bnNwb3J0TmFtZSkpOw0KPiA+ID4gKyAgREVCVUcgKChERUJVR19NQU5BR0VBQklMSVRZX0lORk8s ICIlYTogSVBNSSBwcm90b2NvbCBvdmVyDQo+ID4gJXMuXG4iLA0KPiA+ID4gKyBfX0ZVTkNUSU9O X18sIG1UcmFuc3BvcnROYW1lKSk7DQo+ID4gPg0KPiA+ID4gICAgIC8vDQo+ID4gPiAgICAgLy8g U2V0dXAgaGFyZHdhcmUgaW5mb3JtYXRpb24gYWNjb3JkaW5nIHRvIHRoZSB0cmFuc3BvcnQgaW50 ZXJmYWNlLg0KPiANCj4gDQo+IA0KPiANCg==