From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by mx.groups.io with SMTP id smtpd.web11.27958.1612144021330160060 for ; Sun, 31 Jan 2021 17:47:01 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=ZnZXgO6f; spf=pass (domain: intel.com, ip: 134.134.136.100, mailfrom: zhichao.gao@intel.com) IronPort-SDR: epip1VWpdamNiNBQoFVZpEr65E89YUbQBBiCe4uVY6kCYLeJ0vHpljsHs9W0pfwYhKWDXCt9wK oxYHFTms55iA== X-IronPort-AV: E=McAfee;i="6000,8403,9881"; a="244705029" X-IronPort-AV: E=Sophos;i="5.79,391,1602572400"; d="scan'208";a="244705029" Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 Jan 2021 17:47:00 -0800 IronPort-SDR: JVhQRggUt09gU8Z/8zFv/kTtdX3cHLdZlXZKamIzg1xh7pNpX51jUn9uhnE6x7kY2B816IT1de vC639zbERM9Q== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.79,391,1602572400"; d="scan'208";a="371369487" Received: from orsmsx606.amr.corp.intel.com ([10.22.229.19]) by orsmga002.jf.intel.com with ESMTP; 31 Jan 2021 17:46:59 -0800 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX606.amr.corp.intel.com (10.22.229.19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2106.2; Sun, 31 Jan 2021 17:46:59 -0800 Received: from orsmsx609.amr.corp.intel.com (10.22.229.22) by ORSMSX610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2106.2; Sun, 31 Jan 2021 17:46:58 -0800 Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by orsmsx609.amr.corp.intel.com (10.22.229.22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2106.2 via Frontend Transport; Sun, 31 Jan 2021 17:46:58 -0800 Received: from NAM12-BN8-obe.outbound.protection.outlook.com (104.47.55.175) by edgegateway.intel.com (134.134.137.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.1713.5; Sun, 31 Jan 2021 17:46:58 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=eC5W0Lx/ZY/fE4XpKgbKfMoa65iX5F5QGfyRHn5Z0/sDkGCCn+EmuM7/AId4IhS6KjhU6hj76bzu9GU3M+2pyIvcZPVqB7KT5Y1+GKTKvgasqLs3RYxfM0EQceJihHJZNTx0KUD/tYMqj5xPzH3Fx4Hi1vyZ7tDPopvviKlX72Hdkzn7keb/osR/2KJ9wno8jMyUEA9mJ1u6abluKMY3AZ5fI+W7i773drkA4MonZYuf3xXHbPR4JvAypVmWjHo8GgNvPG6JF8h9Q++J8ud6gmcLZfoBkB36Z/qExddUQV3rJ0iA21TSAfB4KMS9LebnB0jJ5l9Zm57aH6z/8VQwuA== 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=an48r8g6xnJgA4DFyEAR7t/BO99yrfpg+/nNDhnjkOI=; b=J9eYiVFIou2X0GaR4NMqIZgrxMyrohp8dmcuyB/BwojdIuAs/Y3+INdZw67RNUGkSNarQi14z7/z+ylC7a4aLaxBHrBY3uZgDJ3ItBFTqTp+F3UvW/PhnwUpxiS3xI78Kx/4QDBF7YSrJLdgW/WGIh15C1+QkeOBbPauErPeKjFviK1ZboZdAULapGzzS1TYQQyTxH2YcN87a/Q57wDNOqySYdhAtZijOEGsMzD/vqfwVW7qysWJWs/x37S0tZBk0cCxq8V83o5Yis1KLeB5tK7Vw9sTWud4ncrssIBgPK/ASCdlUDzKZB7KkG9sUttdbbkI+PqoDMHOkSE5OecoXQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=an48r8g6xnJgA4DFyEAR7t/BO99yrfpg+/nNDhnjkOI=; b=ZnZXgO6f2+GMFd4y04L0ETmuoeTDlj30A0ooXC8gPb6D9gkR02mde4U1jq/e4FhKmkNYsh5IFxaLUn8Q95v6fKEaPEUShz0A5rJhNB50EqmvsE71ysrbyMZtzKoogZMOpcxRlGir3fIuPFm4EWbELA+T4oZ3i8dS07wtVum0UXw= Received: from MWHPR11MB1647.namprd11.prod.outlook.com (2603:10b6:301:d::12) by MW3PR11MB4681.namprd11.prod.outlook.com (2603:10b6:303:57::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3805.17; Mon, 1 Feb 2021 01:46:56 +0000 Received: from MWHPR11MB1647.namprd11.prod.outlook.com ([fe80::d573:14a0:f9c5:68b0]) by MWHPR11MB1647.namprd11.prod.outlook.com ([fe80::d573:14a0:f9c5:68b0%4]) with mapi id 15.20.3805.025; Mon, 1 Feb 2021 01:46:56 +0000 From: "Gao, Zhichao" To: "devel@edk2.groups.io" , "vijayenthiran.subramaniam@arm.com" , "Sami Mujawar" CC: "Ni, Ray" , "Matteo.Carlini@arm.com" , "Ben.Adderson@arm.com" , "nd@arm.com" , Thomas Abraham Subject: Re: [edk2-devel] [PATCH v4 1/1] ShellPkg/AcpiView: HMAT Parser Thread-Topic: [edk2-devel] [PATCH v4 1/1] ShellPkg/AcpiView: HMAT Parser Thread-Index: AQHWspwt18oUYpWcJUuU91Og3cDHYKo9l5MAgAV7UXA= Date: Mon, 1 Feb 2021 01:46:56 +0000 Message-ID: References: <20201104111702.30256-1-sami.mujawar@arm.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.5.1.3 authentication-results: edk2.groups.io; dkim=none (message not signed) header.d=none;edk2.groups.io; dmarc=none action=none header.from=intel.com; x-originating-ip: [192.198.147.213] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 529a86a2-8df2-4f43-eb29-08d8c653422a x-ms-traffictypediagnostic: MW3PR11MB4681: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:4941; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 9Tj54bR7xwDaiydtiDcVtSpbUMWgDVlmf0Hv5wLmHQzAbme+1QbiLsXcA3JdX9FEmlxzNZKwHnM3gUtPUL8bvPIaHiKBVo461ulFxjPPTczkHGqAKG8af3IJcR8lpSdRUKqDIwlzqhNW5opxPeP2CoTfrPvDl5m2qCmlkmA4vLxXYv6Xyr0XKu4eJhls9eOgcCmNTiElUFZYW2sxQrvDJ0YZJAKyfO7PWzww8CkmcB2rCrlO/0p+yfVimnDjYo7/8zg6R4yT/AylyNJnF+HKMXws1EiZU8CuYqdCOawaSh1/B4fVSHnFpA+3tgJB86SsTUIE35kVjEDEhZYTWRL3gZ8Ov47bv55sWiJKcE5uH1Yk8t3lEoLTCxdzmMZrBFh5gEuK4DrC100N7LRz1T7x5hEk+t2nUXGy1hyjCQLCvzOz4mICYT70orz3T3oPvhnMMqCAeAKph/7iaKk9iBKdjuspfBD179POD/VT31vt8QVmyT6r8Q3Ev8O0hCfk7gL+bG5q5eGIITPvHvaBiw09sHyflX9VbO5lHNA0gKzdWcCLjOerF//2uUN3V2x6C3ukTbk2U8ACjoN5sBU9FxCXDEPlDxPAMwRPkgaU62f6USk= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MWHPR11MB1647.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(396003)(39860400002)(136003)(376002)(366004)(346002)(53546011)(9686003)(478600001)(54906003)(6506007)(55016002)(71200400001)(83380400001)(26005)(186003)(4326008)(7696005)(110136005)(966005)(316002)(33656002)(86362001)(64756008)(66446008)(66476007)(8936002)(66556008)(8676002)(52536014)(5660300002)(45954011)(76116006)(66946007)(2906002)(30864003)(559001)(579004);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: =?utf-8?B?dnhPNFYrZ3ZQOFM3aGtyM0hBUTErZEhXbHpnOUFrdnluRlc1QTNUWERLTzBv?= =?utf-8?B?enpvT1U5aUJqMktMNDBSRmoyR1VVSFFDalVYWlZ3M1MzVk5KVWt1VmFSUWRC?= =?utf-8?B?YVJWVlkzQ28wajQvcUp3OGRYVnpQTTZyZmdGTU1YSHhLZXpNa0t3a3BYbjVY?= =?utf-8?B?eDc3ajFhZTVGOUFvOE5iU2ZHcFNtMU1jUnM1R3pldWR5bGQ0Y0FlNk5SS1hH?= =?utf-8?B?QXFPWFE5NkFjRFhVSkFWQjYwOUg3THY4cTVhT2FGdkRkN0gwVzlSQVNlTS95?= =?utf-8?B?ZXZUbHd3Mzh2N2MwVXFtWGh4aVl6QmRwSlg3K0xpMXh0TDFsSWkxN2lOY2li?= =?utf-8?B?SmF1aGxXOVROWGZaSU9zRlRGWDhYQ2lNcXhrd1hQRllQajJkNVlnOG5RWnVH?= =?utf-8?B?Y0VoSGx4d0NwQUlqVEhIK1drK1IyQ0RwWE0vWTdodXc3MlUvQmlWM01Tckxn?= =?utf-8?B?a3ozV3lDQmdjS01PVmVQNXk3ZDJrUVVXRitQdHZrYXlmMXo3RXM0eGNjNXJj?= =?utf-8?B?V2x4UnFQc3hHV0dJWVcvWi83anZPb3hZKzJkckJvNEZreTR0RXg0cE5JU09I?= =?utf-8?B?RHMybmw2VEpHWnZxeklXNWZ5Y2dwQTlBSi9nRXFGSGxORDlnb2d4QXBBdk56?= =?utf-8?B?NkNpRUN1Y3JEWnJQdVlaVVBRdmxaMUphRFBMUUp1TlBickJJREE4TVlwajlV?= =?utf-8?B?amVtUUw3MzR4eTFrOERudmdoQjVpM25icU8rYVd6azJHNC9KdHI5ZFpZZWlB?= =?utf-8?B?RHc1b3RDMEhjR0NHUXg4bGZybkhLTytEeisrejlKT0UrOVJRTXZFcHFoWkc3?= =?utf-8?B?Y1VCNFdZcC93MjFiOUhWRG5XaVBKM29FRkxTc0gzNTdDU3JjVVBTN0picFNt?= =?utf-8?B?WURTZFBtQ3VyV1ZleXlFZjR4cFM4UnVNZFNCT28za0Vyb0FPYmZSQ3FERjRn?= =?utf-8?B?Mjc1cHlWSGZIL0txbitUV3RVd2hpOURrbmpGOWRQb05ZVU1JVWl6U2ZDcXM0?= =?utf-8?B?QTZVVWhnWWNEM1JUSDNpTDFJR2Fidnl5a2dwTkhDVnJONjN4eXlsRXZPN08w?= =?utf-8?B?VTMvTnprb0RrYVNoMnBlSElmczdxZ05tdEZFQWE1WFFsYXFSS0YwZlhLMVNJ?= =?utf-8?B?ZDlKSkc2aFRoNWp5Y3Y2UGNBVGZ5eXdDVDNsMVZtNUdwTkVGTW44NXZsL2pX?= =?utf-8?B?QldJNzVTT1U3eEkyWG1vR3JnTURTZ2dKKzIvbWRIRWtlL2FtWUhFRkdUaTBv?= =?utf-8?B?Rk0vRlIzT0RGY2YzMkVBeGQ5MUtCTmNSdnZTd2lXZ2xDYmptZjJ1MUtOYjYr?= =?utf-8?B?eVB4NWdRaEgway95eUlnb3ZDZXlkUFRwV0Rzd05STGJqWExHRHBwZ1gyVC9R?= =?utf-8?B?cE9raGpmaVFvTmJHK2lhRjVGbTJRYU9TY3VPZmdCS1MxYlQ3bDVsR3FpbWJ1?= =?utf-8?Q?S/uq1UuD?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MWHPR11MB1647.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 529a86a2-8df2-4f43-eb29-08d8c653422a X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Feb 2021 01:46:56.6579 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: rOY0uJJla/WWEXlg68b8HkpWTjw8yHsEDlXVB+znxdLEpkq87OqGDaRrb+mhmwV+JLnUgJ/hutcNq8PmOjzo4g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW3PR11MB4681 Return-Path: zhichao.gao@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 UmV2aWV3ZWQtYnk6IFpoaWNoYW8gR2FvIDx6aGljaGFvLmdhb0BpbnRlbC5jb20+DQoNClRoYW5r cywNClpoaWNoYW8NCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBkZXZl bEBlZGsyLmdyb3Vwcy5pbyA8ZGV2ZWxAZWRrMi5ncm91cHMuaW8+IE9uIEJlaGFsZiBPZiBWaWph eWVudGhpcmFuDQo+IFN1YnJhbWFuaWFtDQo+IFNlbnQ6IFRodXJzZGF5LCBKYW51YXJ5IDI4LCAy MDIxIDEwOjA0IFBNDQo+IFRvOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbzsgU2FtaSBNdWphd2FyIDxz YW1pLm11amF3YXJAYXJtLmNvbT4NCj4gQ2M6IE5pLCBSYXkgPHJheS5uaUBpbnRlbC5jb20+OyBH YW8sIFpoaWNoYW8gPHpoaWNoYW8uZ2FvQGludGVsLmNvbT47DQo+IE1hdHRlby5DYXJsaW5pQGFy bS5jb207IEJlbi5BZGRlcnNvbkBhcm0uY29tOyBuZEBhcm0uY29tOyBUaG9tYXMNCj4gQWJyYWhh bSA8dGhvbWFzLmFicmFoYW1AYXJtLmNvbT4NCj4gU3ViamVjdDogUmU6IFtlZGsyLWRldmVsXSBb UEFUQ0ggdjQgMS8xXSBTaGVsbFBrZy9BY3BpVmlldzogSE1BVCBQYXJzZXINCj4gDQo+IEhpLA0K PiANCj4gT24gV2VkLCBOb3YgNCwgMjAyMCBhdCAxMToxNyBBTSBTYW1pIE11amF3YXIgPHNhbWku bXVqYXdhckBhcm0uY29tPg0KPiB3cm90ZToNCj4gPg0KPiA+IEZyb206IE1hcmMgTW9pc3Nvbi1G cmFuY2toYXVzZXIgPG1hcmMubW9pc3Nvbi1mcmFuY2toYXVzZXJAYXJtLmNvbT4NCj4gPg0KPiA+ IEJ1Z3ppbGxhOiAzMDQ1IChodHRwczovL2J1Z3ppbGxhLnRpYW5vY29yZS5vcmcvc2hvd19idWcu Y2dpP2lkPTMwNDUpDQo+ID4NCj4gPiBBZGQgYSBuZXcgcGFyc2VyIGZvciB0aGUgSGV0ZXJvZ2Vu ZW91cyBNZW1vcnkgQXR0cmlidXRlIFRhYmxlLiBUaGUNCj4gPiBwYXJzZXIgYWxzbyB2YWxpZGF0 ZXMgc29tZSBmaWVsZHMgZm9yIHRoaXMgdGFibGUuDQo+ID4NCj4gPiBUaGUgSE1BVCB0YWJsZSBp cyB1c2VkIHRvIGRlc2NyaWJlIHRoZSBtZW1vcnkgYXR0cmlidXRlcyBzdWNoIGFzDQo+ID4gbWVt b3J5IHNpZGUgY2FjaGUgYXR0cmlidXRlcyBhbmQgYmFuZHdpZHRoIGFuZCBsYXRlbmN5IGRldGFp bHMgcmVsYXRlZA0KPiA+IHRvIG1lbW9yeSBwcm94aW1pdHkgZG9tYWlucy4gVGhlIGluZm8gaW4g dGhlIEhNQVQgdGFibGUgY2FuIGJlIHVzZWQgYnkNCj4gPiBhbiBvcGVyYXRpbmcgc3lzdGVtIGZv ciBvcHRpbWlzYXRpb24uDQo+ID4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBNYXJjIE1vaXNzb24tRnJh bmNraGF1c2VyDQo+ID4gPG1hcmMubW9pc3Nvbi1mcmFuY2toYXVzZXJAYXJtLmNvbT4NCj4gPiBT aWduZWQtb2ZmLWJ5OiBTYW1pIE11amF3YXIgPHNhbWkubXVqYXdhckBhcm0uY29tPg0KPiANCj4g VGVzdGVkIHRoaXMgcGF0Y2ggb24gQXJtJ3MgcmVmZXJlbmNlIGRlc2lnbiBwbGF0Zm9ybSB3aXRo IHRoZSBwYXRjaCBzZXJpZXMNCj4gaHR0cHM6Ly9lZGsyLmdyb3Vwcy5pby9nL2RldmVsL21lc3Nh Z2UvNzA4NDcgYXBwbGllZC4NCj4gDQo+IFRlc3RlZC1ieTogVmlqYXllbnRoaXJhbiBTdWJyYW1h bmlhbSA8dmlqYXllbnRoaXJhbi5zdWJyYW1hbmlhbUBhcm0uY29tPg0KPiANCj4gPiAtLS0NCj4g Pg0KPiA+IFRoZSBjaGFuZ2VzIGNhbiBiZSBzZWVuIGF0Og0KPiA+IGh0dHBzOi8vZ2l0aHViLmNv bS9zYW1pbXVqYXdhci9lZGsyL3RyZWUvODMzX2htYXRfcGFyc2VyX3Y0DQo+ID4NCj4gPiBOb3Rl czoNCj4gPiAgICAgdjQ6DQo+ID4gICAgIC0gRml4IGRhdGEgdHlwZSB1c2VkIGZvciB0aGUgU01C SU9TIGhhbmRsZSBjb3VudCB2YXJpYWJsZSAgICAgICBbU0FNSV0NCj4gPiAgICAgICB0byBtYXRj aCB0aGUgZmllbGQgd2lkdGguDQo+ID4gICAgICAgUmVmOiBodHRwczovL2VkazIuZ3JvdXBzLmlv L2cvZGV2ZWwvbWVzc2FnZS82NjE5Ng0KPiA+DQo+ID4gICAgIHYzOg0KPiA+ICAgICAgLSBVcGRh dGVzIGJhc2VkIG9uIHJldmlldyBjb21tZW50cywgbWlub3IgdXBkYXRlcyB0byBvdXRwdXQgICAg W1NBTUldDQo+ID4gICAgICAgIGZvcm1hdHRpbmcgYW5kIGFkZGVkIGFkZGl0aW9uYWwgY2hlY2tz Lg0KPiA+DQo+ID4gICAgIHYyOg0KPiA+ICAgICAgLSBGaXhlZCBtaW5vciBvdXRwdXQgZm9ybWF0 dGluZyBpbiBEdW1wQ2FjaGVBdHRyaWJ1dGVzKCkgICAgICAgW1NBTUldDQo+ID4NCj4gPiAgU2hl bGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvQWNwaVBhcnNlci5oICAg ICAgICAgICAgICAgICAgICB8ICAyOCArLQ0KPiA+ICBTaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVs bEFjcGlWaWV3Q29tbWFuZExpYi9BY3BpVGFibGVQYXJzZXIuaCAgICAgICAgICAgICAgIHwgICA0 DQo+ICstDQo+ID4gIFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGli L1BhcnNlcnMvSG1hdC9IbWF0UGFyc2VyLmMNCj4gfCA2NTAgKysrKysrKysrKysrKysrKysrKysN Cj4gPg0KPiBTaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9VZWZp U2hlbGxBY3BpVmlld0NvbW1hbmRMaWIuYw0KPiB8ICAgMyArLQ0KPiA+DQo+IFNoZWxsUGtnL0xp YnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFu ZExpYi5pDQo+IG5mIHwgICAzICstDQo+ID4NCj4gU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxB Y3BpVmlld0NvbW1hbmRMaWIvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliLg0KPiB1bmkgfCAg IDMgKy0NCj4gPiAgNiBmaWxlcyBjaGFuZ2VkLCA2ODUgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlv bnMoLSkNCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFj cGlWaWV3Q29tbWFuZExpYi9BY3BpUGFyc2VyLmgNCj4gPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVm aVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL0FjcGlQYXJzZXIuaA0KPiA+IGluZGV4DQo+ID4NCj4g ZjgxY2NhYzdlMTE4Mzc4YWExODVkYjRiNjI1ZTViY2Q3NWY3ODM0Ny4uOTY5Y2MwYjM3MTg1MmYw MWYzMGM4OGRjNTA2DQo+IDMNCj4gPiA3NGE0NTljOWMxOWUgMTAwNjQ0DQo+ID4gLS0tIGEvU2hl bGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvQWNwaVBhcnNlci5oDQo+ ID4gKysrIGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvQWNw aVBhcnNlci5oDQo+ID4gQEAgLTEsNyArMSw3IEBADQo+ID4gIC8qKiBAZmlsZQ0KPiA+ICAgIEhl YWRlciBmaWxlIGZvciBBQ1BJIHBhcnNlcg0KPiA+DQo+ID4gLSAgQ29weXJpZ2h0IChjKSAyMDE2 IC0gMjAyMCwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ID4gKyAgQ29weXJp Z2h0IChjKSAyMDE2IC0gMjAyMCwgQXJtIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ ID4gICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQgICoqLw0K PiA+DQo+ID4gQEAgLTU5Miw2ICs1OTIsMzIgQEAgUGFyc2VBY3BpR3RkdCAoDQo+ID4gICAgKTsN Cj4gPg0KPiA+ICAvKioNCj4gPiArICBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgQUNQSSBITUFU IHRhYmxlLg0KPiA+ICsgIFdoZW4gdHJhY2UgaXMgZW5hYmxlZCB0aGlzIGZ1bmN0aW9uIHBhcnNl cyB0aGUgSE1BVCB0YWJsZSBhbmQNCj4gPiArIHRyYWNlcyB0aGUgQUNQSSB0YWJsZSBmaWVsZHMu DQo+ID4gKw0KPiA+ICsgIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBmb2xsb3dpbmcgSE1BVCBz dHJ1Y3R1cmVzOg0KPiA+ICsgICAgLSBNZW1vcnkgUHJveGltaXR5IERvbWFpbiBBdHRyaWJ1dGVz IFN0cnVjdHVyZSAoVHlwZSAwKQ0KPiA+ICsgICAgLSBTeXN0ZW0gTG9jYWxpdHkgTGF0ZW5jeSBh bmQgQmFuZHdpZHRoIEluZm8gU3RydWN0dXJlIChUeXBlIDEpDQo+ID4gKyAgICAtIE1lbW9yeSBT aWRlIENhY2hlIEluZm8gc3RydWN0dXJlIChUeXBlIDIpDQo+ID4gKw0KPiA+ICsgIFRoaXMgZnVu Y3Rpb24gYWxzbyBwZXJmb3JtcyB2YWxpZGF0aW9uIG9mIHRoZSBBQ1BJIHRhYmxlIGZpZWxkcy4N Cj4gPiArDQo+ID4gKyAgQHBhcmFtIFtpbl0gVHJhY2UgICAgICAgICAgICAgIElmIFRSVUUsIHRy YWNlIHRoZSBBQ1BJIGZpZWxkcy4NCj4gPiArICBAcGFyYW0gW2luXSBQdHIgICAgICAgICAgICAg ICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gPiArICBAcGFyYW0gW2lu XSBBY3BpVGFibGVMZW5ndGggICAgTGVuZ3RoIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiA+ICsgIEBw YXJhbSBbaW5dIEFjcGlUYWJsZVJldmlzaW9uICBSZXZpc2lvbiBvZiB0aGUgQUNQSSB0YWJsZS4N Cj4gPiArKiovDQo+ID4gK1ZPSUQNCj4gPiArRUZJQVBJDQo+ID4gK1BhcnNlQWNwaUhtYXQgKA0K PiA+ICsgIElOIEJPT0xFQU4gVHJhY2UsDQo+ID4gKyAgSU4gVUlOVDgqICBQdHIsDQo+ID4gKyAg SU4gVUlOVDMyICBBY3BpVGFibGVMZW5ndGgsDQo+ID4gKyAgSU4gVUlOVDggICBBY3BpVGFibGVS ZXZpc2lvbg0KPiA+ICsgICk7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiAgICBUaGlzIGZ1bmN0aW9u IHBhcnNlcyB0aGUgQUNQSSBJT1JUIHRhYmxlLg0KPiA+ICAgIFdoZW4gdHJhY2UgaXMgZW5hYmxl ZCB0aGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgSU9SVCB0YWJsZSBhbmQNCj4gPiAgICB0cmFjZXMg dGhlIEFDUEkgZmllbGRzLg0KPiA+IGRpZmYgLS1naXQNCj4gPiBhL1NoZWxsUGtnL0xpYnJhcnkv VWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL0FjcGlUYWJsZVBhcnNlci5oDQo+ID4gYi9TaGVs bFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9BY3BpVGFibGVQYXJzZXIu aA0KPiA+IGluZGV4DQo+ID4NCj4gNGY5MjU5NmI5MGE2ZWU0MjJkOGQwOTU5ODgxMDE1ZmZkM2Rl NGRhMC4uZjhlOGI1OTc5ZjNiZTA0MWJiYzhkMTcwNDINCj4gYjINCj4gPiBkYjhlMGI3M2YyMDUg MTAwNjQ0DQo+ID4gLS0tIGEvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1h bmRMaWIvQWNwaVRhYmxlUGFyc2VyLmgNCj4gPiArKysgYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlT aGVsbEFjcGlWaWV3Q29tbWFuZExpYi9BY3BpVGFibGVQYXJzZXIuaA0KPiA+IEBAIC0xLDcgKzEs NyBAQA0KPiA+ICAvKiogQGZpbGUNCj4gPiAgICBIZWFkZXIgZmlsZSBmb3IgQUNQSSB0YWJsZSBw YXJzZXINCj4gPg0KPiA+IC0gIENvcHlyaWdodCAoYykgMjAxNiAtIDIwMTgsIEFSTSBMaW1pdGVk LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiA+ICsgIENvcHlyaWdodCAoYykgMjAxNiAtIDIwMTgs IEFybSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiA+ICAgIFNQRFgtTGljZW5zZS1J ZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50ICAqKi8NCj4gPg0KPiA+IEBAIC0xMSw3ICsx MSw3IEBADQo+ID4gIC8qKg0KPiA+ICAgIFRoZSBtYXhpbXVtIG51bWJlciBvZiBBQ1BJIHRhYmxl IHBhcnNlcnMuDQo+ID4gICovDQo+ID4gLSNkZWZpbmUgTUFYX0FDUElfVEFCTEVfUEFSU0VSUyAg ICAgICAgICAxNg0KPiA+ICsjZGVmaW5lIE1BWF9BQ1BJX1RBQkxFX1BBUlNFUlMgICAgICAgICAg MzINCj4gPg0KPiA+ICAvKiogQW4gaW52YWxpZC9OVUxMIHNpZ25hdHVyZSB2YWx1ZS4NCj4gPiAg Ki8NCj4gPiBkaWZmIC0tZ2l0DQo+ID4gYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlW aWV3Q29tbWFuZExpYi9QYXJzZXJzL0htYXQvSG1hdFBhcnNlcg0KPiA+IC5jDQo+ID4gYi9TaGVs bFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL0htYXQvSG1h dFBhcnNlcg0KPiA+IC5jDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleA0KPiA+ DQo+IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFkMWJjNGJkYzM0 M2U2NWE4YzJmZDVmOTgNCj4gM2IyDQo+ID4gMDc4MzExNDUyMzI5DQo+ID4gLS0tIC9kZXYvbnVs bA0KPiA+ICsrKyBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGli L1BhcnNlcnMvSG1hdC9IbWF0UGENCj4gPiArKysgcnNlci5jDQo+ID4gQEAgLTAsMCArMSw2NTAg QEANCj4gPiArLyoqIEBmaWxlDQo+ID4gKyAgSE1BVCB0YWJsZSBwYXJzZXINCj4gPiArDQo+ID4g KyAgQ29weXJpZ2h0IChjKSAyMDIwLCBBcm0gTGltaXRlZC4NCj4gPiArICBTUERYLUxpY2Vuc2Ut SWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiA+ICsNCj4gPiArICBAcGFyIFJlZmVy ZW5jZShzKToNCj4gPiArICAgIC0gQUNQSSA2LjMgU3BlY2lmaWNhdGlvbiAtIEphbnVhcnkgMjAx OQ0KPiA+ICsNCj4gPiArICBAcGFyIEdsb3NzYXJ5Og0KPiA+ICsgICAgLSBNUERBICAtIE1lbW9y eSBQcm94aW1pdHkgRG9tYWluIEF0dHJpYnV0ZXMNCj4gPiArICAgIC0gU0xMQkkgLSBTeXN0ZW0g TG9jYWxpdHkgTGF0ZW5jeSBhbmQgQmFuZHdpZHRoIEluZm9ybWF0aW9uDQo+ID4gKyAgICAtIE1T Q0kgIC0gTWVtb3J5IFNpZGUgQ2FjaGUgSW5mb3JtYXRpb24NCj4gPiArICAgIC0gRG9tICAgLSBE b21haW4NCj4gPiArKiovDQo+ID4gKw0KPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9QcmludExpYi5o Pg0KPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9CYXNlTGliLmg+DQo+ID4gKyNpbmNsdWRlIDxMaWJy YXJ5L1VlZmlMaWIuaD4NCj4gPiArI2luY2x1ZGUgIkFjcGlQYXJzZXIuaCINCj4gPiArI2luY2x1 ZGUgIkFjcGlWaWV3LmgiDQo+ID4gKw0KPiA+ICsvLyBNYXhpbXVtIE1lbW9yeSBEb21haW4gbWF0 cml4IHByaW50IHNpemUuDQo+ID4gKyNkZWZpbmUgTUFYX01FTU9SWV9ET01BSU5fVEFSR0VUX1BS SU5UX01BVFJJWCAgICAxMA0KPiA+ICsNCj4gPiArLy8gTG9jYWwgdmFyaWFibGVzDQo+ID4gK1NU QVRJQyBDT05TVCBVSU5UMTYqICBIbWF0U3RydWN0dXJlVHlwZTsgU1RBVElDIENPTlNUIFVJTlQz MioNCj4gPiArSG1hdFN0cnVjdHVyZUxlbmd0aDsNCj4gPiArDQo+ID4gK1NUQVRJQyBDT05TVCBV SU5UMzIqICBOdW1iZXJJbml0aWF0b3JQcm94aW1pdHlEb21haW47IFNUQVRJQyBDT05TVA0KPiA+ ICtVSU5UMzIqICBOdW1iZXJUYXJnZXRQcm94aW1pdHlEb21haW47IFNUQVRJQyBDT05TVA0KPiA+ DQo+ICtFRklfQUNQSV82XzNfSE1BVF9TVFJVQ1RVUkVfU1lTVEVNX0xPQ0FMSVRZX0xBVEVOQ1lf QU5EX0JBTkQNCj4gV0lEVEhfSU5GDQo+ID4gK09fRkxBR1MqDQo+ID4gK1NsbGJpRmxhZ3M7DQo+ ID4gKw0KPiA+ICtTVEFUSUMgQ09OU1QgVUlOVDgqICAgU2xsYmlEYXRhVHlwZTsNCj4gPiArU1RB VElDIENPTlNUIFVJTlQxNiogIE51bWJlclNNQklPU0hhbmRsZXM7DQo+ID4gKw0KPiA+ICtTVEFU SUMgQUNQSV9ERVNDUklQVElPTl9IRUFERVJfSU5GTyBBY3BpSGRySW5mbzsNCj4gPiArDQo+ID4g Ky8qKg0KPiA+ICsgIE5hbWVzIG9mIFN5c3RlbSBMb2NhbGl0eSBMYXRlbmN5IEJhbmR3aWR0aCBJ bmZvcm1hdGlvbiAoU0xMQkkpIGRhdGENCj4gPiArdHlwZXMgKiovIFNUQVRJQyBDT05TVCBDSEFS MTYqIFNsbGJpTmFtZXNbXSA9IHsNCj4gPiArICBMIkFjY2VzcyAlc0xhdGVuY3klcyIsDQo+ID4g KyAgTCJSZWFkICVzTGF0ZW5jeSVzIiwNCj4gPiArICBMIldyaXRlICVzTGF0ZW5jeSVzIiwNCj4g PiArICBMIkFjY2VzcyAlc0JhbmR3aWR0aCVzIiwNCj4gPiArICBMIlJlYWQgJXNCYW5kd2lkdGgl cyIsDQo+ID4gKyAgTCJXcml0ZSAlc0JhbmR3aWR0aCVzIg0KPiA+ICt9Ow0KPiA+ICsNCj4gPiAr LyoqDQo+ID4gKyAgVGhpcyBmdW5jdGlvbiB2YWxpZGF0ZXMgdGhlIENhY2hlIEF0dHJpYnV0ZXMg ZmllbGQuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUg c3RhcnQgb2YgdGhlIGZpZWxkIGRhdGEuDQo+ID4gKyAgQHBhcmFtIFtpbl0gQ29udGV4dCBQb2lu dGVyIHRvIGNvbnRleHQgc3BlY2lmaWMgaW5mb3JtYXRpb24gZS5nLiB0aGlzDQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICBjb3VsZCBiZSBhIHBvaW50ZXIgdG8gdGhlIEFDUEkgdGFibGUgaGVh ZGVyLg0KPiA+ICsqKi8NCj4gPiArU1RBVElDDQo+ID4gK1ZPSUQNCj4gPiArRUZJQVBJDQo+ID4g K1ZhbGlkYXRlQ2FjaGVBdHRyaWJ1dGVzICgNCj4gPiArICBJTiBVSU5UOCogUHRyLA0KPiA+ICsg IElOIFZPSUQqICBDb250ZXh0DQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKw0KPiA+DQo+ICtFRklf QUNQSV82XzNfSE1BVF9TVFJVQ1RVUkVfTUVNT1JZX1NJREVfQ0FDSEVfSU5GT19DQUNIRV9BVFQN Cj4gUklCVVRFUyoNCj4gPiArICBBdHRyaWJ1dGVzOw0KPiA+ICsNCj4gPiArICBBdHRyaWJ1dGVz ID0NCj4gPiArDQo+ID4gKw0KPiAoRUZJX0FDUElfNl8zX0hNQVRfU1RSVUNUVVJFX01FTU9SWV9T SURFX0NBQ0hFX0lORk9fQ0FDSEVfQVRUDQo+IFJJQlVURVMNCj4gPiArICopUHRyOw0KPiA+ICsN Cj4gPiArICBpZiAoQXR0cmlidXRlcy0+VG90YWxDYWNoZUxldmVscyA+IDB4Mykgew0KPiA+ICsg ICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4gPiArICAgIFByaW50ICgNCj4gPiArICAgICAg TCJcbkVSUk9SOiBBdHRyaWJ1dGVzIGJpdHMgWzM6MF0gaGF2ZSBpbnZhbGlkIHZhbHVlOiAweCV4 IiwNCj4gPiArICAgICAgQXR0cmlidXRlcy0+VG90YWxDYWNoZUxldmVscw0KPiA+ICsgICAgICAp Ow0KPiA+ICsgIH0NCj4gPiArICBpZiAoQXR0cmlidXRlcy0+Q2FjaGVMZXZlbCA+IDB4Mykgew0K PiA+ICsgICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4gPiArICAgIFByaW50ICgNCj4gPiAr ICAgICAgTCJcbkVSUk9SOiBBdHRyaWJ1dGVzIGJpdHMgWzc6NF0gaGF2ZSBpbnZhbGlkIHZhbHVl OiAweCV4IiwNCj4gPiArICAgICAgQXR0cmlidXRlcy0+Q2FjaGVMZXZlbA0KPiA+ICsgICAgICAp Ow0KPiA+ICsgIH0NCj4gPiArICBpZiAoQXR0cmlidXRlcy0+Q2FjaGVBc3NvY2lhdGl2aXR5ID4g MHgyKSB7DQo+ID4gKyAgICBJbmNyZW1lbnRFcnJvckNvdW50ICgpOw0KPiA+ICsgICAgUHJpbnQg KA0KPiA+ICsgICAgICBMIlxuRVJST1I6IEF0dHJpYnV0ZXMgYml0cyBbMTE6OF0gaGF2ZSBpbnZh bGlkIHZhbHVlOiAweCV4IiwNCj4gPiArICAgICAgQXR0cmlidXRlcy0+Q2FjaGVBc3NvY2lhdGl2 aXR5DQo+ID4gKyAgICAgICk7DQo+ID4gKyAgfQ0KPiA+ICsgIGlmIChBdHRyaWJ1dGVzLT5Xcml0 ZVBvbGljeSA+IDB4Mikgew0KPiA+ICsgICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4gPiAr ICAgIFByaW50ICgNCj4gPiArICAgICAgTCJcbkVSUk9SOiBBdHRyaWJ1dGVzIGJpdHMgWzE1OjEy XSBoYXZlIGludmFsaWQgdmFsdWU6IDB4JXgiLA0KPiA+ICsgICAgICBBdHRyaWJ1dGVzLT5Xcml0 ZVBvbGljeQ0KPiA+ICsgICAgICApOw0KPiA+ICsgIH0NCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoq DQo+ID4gKyAgRHVtcHMgdGhlIGNhY2hlIGF0dHJpYnV0ZXMgZmllbGQNCj4gPiArDQo+ID4gKyAg QHBhcmFtIFtpbl0gRm9ybWF0ICBPcHRpb25hbCBmb3JtYXQgc3RyaW5nIGZvciB0cmFjaW5nIHRo ZSBkYXRhLg0KPiA+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQg b2YgdGhlIGJ1ZmZlci4NCj4gPiArKiovDQo+ID4gK1NUQVRJQw0KPiA+ICtWT0lEDQo+ID4gK0VG SUFQSQ0KPiA+ICtEdW1wQ2FjaGVBdHRyaWJ1dGVzICgNCj4gPiArICBJTiBDT05TVCBDSEFSMTYq IEZvcm1hdCBPUFRJT05BTCwNCj4gPiArICBJTiBVSU5UOCogICAgICAgIFB0cg0KPiA+ICsgICkN Cj4gPiArew0KPiA+ICsNCj4gPg0KPiArRUZJX0FDUElfNl8zX0hNQVRfU1RSVUNUVVJFX01FTU9S WV9TSURFX0NBQ0hFX0lORk9fQ0FDSEVfQVRUDQo+IFJJQlVURVMqDQo+ID4gKyAgQXR0cmlidXRl czsNCj4gPiArDQo+ID4gKyAgQXR0cmlidXRlcyA9DQo+ID4gKw0KPiA+ICsNCj4gKEVGSV9BQ1BJ XzZfM19ITUFUX1NUUlVDVFVSRV9NRU1PUllfU0lERV9DQUNIRV9JTkZPX0NBQ0hFX0FUVA0KPiBS SUJVVEVTDQo+ID4gKyAqKVB0cjsNCj4gPiArDQo+ID4gKyAgUHJpbnQgKEwiXG4iKTsNCj4gPiAr ICBQcmludEZpZWxkTmFtZSAoNCwgTCJUb3RhbCBDYWNoZSBMZXZlbHMiKTsNCj4gPiArICBQcmlu dCAoTCIlZFxuIiwgQXR0cmlidXRlcy0+VG90YWxDYWNoZUxldmVscyk7DQo+ID4gKyAgUHJpbnRG aWVsZE5hbWUgKDQsIEwiQ2FjaGUgTGV2ZWwiKTsNCj4gPiArICBQcmludCAoTCIlZFxuIiwgQXR0 cmlidXRlcy0+Q2FjaGVMZXZlbCk7DQo+ID4gKyAgUHJpbnRGaWVsZE5hbWUgKDQsIEwiQ2FjaGUg QXNzb2NpYXRpdml0eSIpOw0KPiA+ICsgIFByaW50IChMIiVkXG4iLCBBdHRyaWJ1dGVzLT5DYWNo ZUFzc29jaWF0aXZpdHkpOw0KPiA+ICsgIFByaW50RmllbGROYW1lICg0LCBMIldyaXRlIFBvbGlj eSIpOw0KPiA+ICsgIFByaW50IChMIiVkXG4iLCBBdHRyaWJ1dGVzLT5Xcml0ZVBvbGljeSk7DQo+ ID4gKyAgUHJpbnRGaWVsZE5hbWUgKDQsIEwiQ2FjaGUgTGluZSBTaXplIik7DQo+ID4gKyAgUHJp bnQgKEwiJWRcbiIsIEF0dHJpYnV0ZXMtPkNhY2hlTGluZVNpemUpOyB9DQo+ID4gKw0KPiA+ICsv KioNCj4gPiArICBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBBQ1BJIEhNQVQg VGFibGUuDQo+ID4gKyovDQo+ID4gK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBIbWF0UGFyc2Vy W10gPSB7DQo+ID4gKyAgUEFSU0VfQUNQSV9IRUFERVIgKCZBY3BpSGRySW5mbyksDQo+ID4gKyAg e0wiUmVzZXJ2ZWQiLCA0LCAzNiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0gfTsNCj4g PiArDQo+ID4gKy8qKg0KPiA+ICsgIEFuIEFDUElfUEFSU0VSIGFycmF5IGRlc2NyaWJpbmcgdGhl IEhNQVQgc3RydWN0dXJlIGhlYWRlci4NCj4gPiArKi8NCj4gPiArU1RBVElDIENPTlNUIEFDUElf UEFSU0VSIEhtYXRTdHJ1Y3R1cmVIZWFkZXJQYXJzZXJbXSA9IHsNCj4gPiArICB7TCJUeXBlIiwg MiwgMCwgTlVMTCwgTlVMTCwgKFZPSUQqKikmSG1hdFN0cnVjdHVyZVR5cGUsIE5VTEwsDQo+ID4g K05VTEx9LA0KPiA+ICsgIHtMIlJlc2VydmVkIiwgMiwgMiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVM TCwgTlVMTH0sDQo+ID4gKyAge0wiTGVuZ3RoIiwgNCwgNCwgTlVMTCwgTlVMTCwgKFZPSUQqKikm SG1hdFN0cnVjdHVyZUxlbmd0aCwgTlVMTCwNCj4gPiArTlVMTH0gfTsNCj4gPiArDQo+ID4gKy8q Kg0KPiA+ICsgIEFuIEFDUEkgUEFSU0VSIGFycmF5IGRlc2NyaWJpbmcgdGhlIE1lbW9yeSBQcm94 aW1pdHkgRG9tYWluDQo+ID4gK0F0dHJpYnV0ZXMNCj4gPiArICBTdHJ1Y3R1cmUgLSBUeXBlIDAu DQo+ID4gKyovDQo+ID4gK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBNZW1Qcm94aW1pdHlEb21h aW5BdHRyaWJ1dGVQYXJzZXJbXSA9IHsNCj4gPiArICB7TCJUeXBlIiwgMiwgMCwgTCIweCV4Iiwg TlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gKyAge0wiUmVzZXJ2ZWQiLCAyLCAyLCBMIjB4 JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPiArICB7TCJMZW5ndGgiLCA0LCA0LCBM IiVkIiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gKyAge0wiRmxhZ3MiLCAyLCA4LCBM IjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPiArICB7TCJSZXNlcnZlZCIsIDIs IDEwLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPiArICB7TCJQcm94aW1p dHkgRG9tIGZvciBpbml0aWF0b3IiLCA0LCAxMiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwN Cj4gPiArTlVMTH0sDQo+ID4gKyAge0wiUHJveGltaXR5IERvbSBmb3IgbWVtb3J5IiwgNCwgMTYs IEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsDQo+ID4gK05VTEx9LA0KPiA+ICsgIHtMIlJlc2Vy dmVkIiwgNCwgMjAsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ICsgIHtM IlJlc2VydmVkIiwgOCwgMjQsIEwiMHglbHgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4g PiArICB7TCJSZXNlcnZlZCIsIDgsIDMyLCBMIjB4JWx4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVM TH0gfTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIEFuIEFDUEkgUEFSU0VSIGFycmF5IGRlc2Ny aWJpbmcgdGhlIFN5c3RlbSBMb2NhbGl0eSBMYXRlbmN5IGFuZA0KPiA+ICtCYW5kd2lkdGgNCj4g PiArICBJbmZvcm1hdGlvbiBTdHJ1Y3R1cmUgLSBUeXBlIDEuDQo+ID4gKyovDQo+ID4gK1NUQVRJ QyBDT05TVCBBQ1BJX1BBUlNFUiBTbGxiaVBhcnNlcltdID0gew0KPiA+ICsgIHtMIlR5cGUiLCAy LCAwLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPiArICB7TCJSZXNlcnZl ZCIsIDIsIDIsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ICsgIHtMIkxl bmd0aCIsIDQsIDQsIEwiJWQiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPiArICB7TCJG bGFncyIsIDEsIDgsIEwiMHgleCIsIE5VTEwsIChWT0lEKiopJlNsbGJpRmxhZ3MsIE5VTEwsIE5V TEx9LA0KPiA+ICsgIHtMIkRhdGEgdHlwZSIsIDEsIDksIEwiMHgleCIsIE5VTEwsIChWT0lEKiop JlNsbGJpRGF0YVR5cGUsIE5VTEwsDQo+ID4gK05VTEx9LA0KPiA+ICsgIHtMIlJlc2VydmVkIiwg MiwgMTAsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ICsgIHtMIkluaXRp YXRvciBQcm94aW1pdHkgRG9tIENvdW50IiwgNCwgMTIsIEwiJWQiLCBOVUxMLA0KPiA+ICsgICAg KFZPSUQqKikmTnVtYmVySW5pdGlhdG9yUHJveGltaXR5RG9tYWluLCBOVUxMLCBOVUxMfSwNCj4g PiArICB7TCJUYXJnZXQgUHJveGltaXR5IERvbSBDb3VudCIsIDQsIDE2LCBMIiVkIiwgTlVMTCwN Cj4gPiArICAgIChWT0lEKiopJk51bWJlclRhcmdldFByb3hpbWl0eURvbWFpbiwgTlVMTCwgTlVM TH0sDQo+ID4gKyAge0wiUmVzZXJ2ZWQiLCA0LCAyMCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVM TCwgTlVMTH0sDQo+ID4gKyAge0wiRW50cnkgQmFzZSBVbml0IiwgOCwgMjQsIEwiMHglbHgiLCBO VUxMLCBOVUxMLCBOVUxMLCBOVUxMfQ0KPiA+ICsgIC8vIGluaXRpYXRvciBQcm94aW1pdHkgRG9t YWluIGxpc3QgLi4uDQo+ID4gKyAgLy8gdGFyZ2V0IFByb3hpbWl0eSBEb21haW4gbGlzdCAuLi4N Cj4gPiArICAvLyBMYXRlbmN5L0JhbmR3aWR0aCBtYXRyaXggLi4uDQo+ID4gK307DQo+ID4gKw0K PiA+ICsvKioNCj4gPiArICBBbiBBQ1BJIFBBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBNZW1v cnkgU2lkZSBDYWNoZSBJbmZvcm1hdGlvbg0KPiA+ICsgIFN0cnVjdHVyZSAtIFR5cGUgMi4NCj4g PiArKi8NCj4gPiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIE1lbVNpZGVDYWNoZUluZm9QYXJz ZXJbXSA9IHsNCj4gPiArICB7TCJUeXBlIiwgMiwgMCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVM TCwgTlVMTH0sDQo+ID4gKyAge0wiUmVzZXJ2ZWQiLCAyLCAyLCBMIjB4JXgiLCBOVUxMLCBOVUxM LCBOVUxMLCBOVUxMfSwNCj4gPiArICB7TCJMZW5ndGgiLCA0LCA0LCBMIiVkIiwgTlVMTCwgTlVM TCwgTlVMTCwgTlVMTH0sDQo+ID4gKyAge0wiUHJveGltaXR5IERvbSBmb3IgbWVtb3J5IiwgNCwg OCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwNCj4gPiArTlVMTH0sDQo+ID4gKyAge0wiUmVz ZXJ2ZWQiLCA0LCAxMiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gKyAg e0wiTWVtb3J5IFNpZGUgQ2FjaGUgU2l6ZSIsIDgsIDE2LCBMIjB4JWx4IiwgTlVMTCwgTlVMTCwg TlVMTCwNCj4gPiArTlVMTH0sDQo+ID4gKyAge0wiQ2FjaGUgQXR0cmlidXRlcyIsIDQsIDI0LCBO VUxMLCBEdW1wQ2FjaGVBdHRyaWJ1dGVzLCBOVUxMLA0KPiA+ICsgICAgVmFsaWRhdGVDYWNoZUF0 dHJpYnV0ZXMsIE5VTEx9LA0KPiA+ICsgIHtMIlJlc2VydmVkIiwgMiwgMjgsIEwiMHgleCIsIE5V TEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ICsgIHtMIlNNQklPUyBIYW5kbGUgQ291bnQiLCAy LCAzMCwgTCIlZCIsIE5VTEwsDQo+ID4gKyAgICAoVk9JRCoqKSZOdW1iZXJTTUJJT1NIYW5kbGVz LCBOVUxMLCBOVUxMfQ0KPiA+ICsgIC8vIFNNQklPUyBoYW5kbGVzIExpc3QgLi4uDQo+ID4gK307 DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgTWVtb3J5 IFByb3hpbWl0eSBEb21haW4gQXR0cmlidXRlcw0KPiA+ICsgIFN0cnVjdHVyZSAoVHlwZSAwKS4N Cj4gPiArDQo+ID4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBv ZiB0aGUgTWVtb3J5IFByb3hpbWl0eSBEb21haW4NCj4gPiArICAgICAgICAgICAgICAgICAgICAg IEF0dHJpYnV0ZXMgU3RydWN0dXJlIGRhdGEuDQo+ID4gKyAgQHBhcmFtIFtpbl0gTGVuZ3RoICBM ZW5ndGggb2YgdGhlIE1lbW9yeSBQcm94aW1pdHkgRG9tYWluIEF0dHJpYnV0ZXMNCj4gPiArICAg ICAgICAgICAgICAgICAgICAgIFN0cnVjdHVyZS4NCj4gPiArKiovDQo+ID4gK1NUQVRJQw0KPiA+ ICtWT0lEDQo+ID4gK0R1bXBNcGRhICgNCj4gPiArICBJTiBVSU5UOCogUHRyLA0KPiA+ICsgIElO IFVJTlQzMiBMZW5ndGgNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBQYXJzZUFjcGkgKA0KPiA+ ICsgICAgVFJVRSwNCj4gPiArICAgIDIsDQo+ID4gKyAgICAiTWVtb3J5IFByb3hpbWl0eSBEb21h aW4gQXR0cmlidXRlcyBTdHJ1Y3R1cmUiLA0KPiA+ICsgICAgUHRyLA0KPiA+ICsgICAgTGVuZ3Ro LA0KPiA+ICsgICAgUEFSU0VSX1BBUkFNUyAoTWVtUHJveGltaXR5RG9tYWluQXR0cmlidXRlUGFy c2VyKQ0KPiA+ICsgICAgKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgVGhpcyBm dW5jdGlvbiBwYXJzZXMgdGhlIFN5c3RlbSBMb2NhbGl0eSBMYXRlbmN5IGFuZCBCYW5kd2lkdGgN Cj4gPiArSW5mb3JtYXRpb24NCj4gPiArICBTdHJ1Y3R1cmUgKFR5cGUgMSkuDQo+ID4gKw0KPiA+ ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIFN5c3Rl bSBMb2NhbGl0eSBMYXRlbmN5IGFuZA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgQmFuZHdp ZHRoIEluZm9ybWF0aW9uIFN0cnVjdHVyZSBkYXRhLg0KPiA+ICsgIEBwYXJhbSBbaW5dIExlbmd0 aCAgTGVuZ3RoIG9mIHRoZSBTeXN0ZW0gTG9jYWxpdHkgTGF0ZW5jeSBhbmQgQmFuZHdpZHRoDQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICBJbmZvcm1hdGlvbiBTdHJ1Y3R1cmUuDQo+ID4gKyoq Lw0KPiA+ICtTVEFUSUMNCj4gPiArVk9JRA0KPiA+ICtEdW1wU2xsYmkgKA0KPiA+ICsgIElOIFVJ TlQ4KiBQdHIsDQo+ID4gKyAgSU4gVUlOVDMyIExlbmd0aA0KPiA+ICsgICkNCj4gPiArew0KPiA+ ICsgIENPTlNUIFVJTlQzMiogSW5pdGlhdG9yUHJveGltaXR5RG9tYWluTGlzdDsNCj4gPiArICBD T05TVCBVSU5UMzIqIFRhcmdldFByb3hpbWl0eURvbWFpbkxpc3Q7DQo+ID4gKyAgQ09OU1QgVUlO VDE2KiBMYXRlbmN5QmFuZHdpZHRoTWF0cml4Ow0KPiA+ICsgIFVJTlQzMiAgICAgICAgT2Zmc2V0 Ow0KPiA+ICsgIENIQVIxNiAgICAgICAgQnVmZmVyW09VVFBVVF9GSUVMRF9DT0xVTU5fV0lEVEhd Ow0KPiA+ICsgIENIQVIxNiAgICAgICAgU2Vjb25kQnVmZmVyW09VVFBVVF9GSUVMRF9DT0xVTU5f V0lEVEhdOw0KPiA+ICsgIFVJTlQzMiAgICAgICAgUmVxdWlyZWRUYWJsZVNpemU7DQo+ID4gKyAg VUlOVDMyICAgICAgICBJbmRleDsNCj4gPiArICBVSU5UMzIgICAgICAgIEluZGV4SW5pdGlhdG9y Ow0KPiA+ICsgIFVJTlQzMiAgICAgICAgSW5kZXhUYXJnZXQ7DQo+ID4gKyAgVUlOVDMyICAgICAg ICBUYXJnZXRTdGFydE9mZnNldDsNCj4gPiArDQo+ID4gKyAgT2Zmc2V0ID0gUGFyc2VBY3BpICgN Cj4gPiArICAgICAgICAgICAgIFRSVUUsDQo+ID4gKyAgICAgICAgICAgICAyLA0KPiA+ICsgICAg ICAgICAgICAgIlN5c3RlbSBMb2NhbGl0eSBMYXRlbmN5IGFuZCBCYW5kd2lkdGggSW5mb3JtYXRp b24gU3RydWN0dXJlIiwNCj4gPiArICAgICAgICAgICAgIFB0ciwNCj4gPiArICAgICAgICAgICAg IExlbmd0aCwNCj4gPiArICAgICAgICAgICAgIFBBUlNFUl9QQVJBTVMgKFNsbGJpUGFyc2VyKQ0K PiA+ICsgICAgICAgICAgICAgKTsNCj4gPiArDQo+ID4gKyAgLy8gQ2hlY2sgaWYgdGhlIHZhbHVl cyB1c2VkIHRvIGNvbnRyb2wgdGhlIHBhcnNpbmcgbG9naWMgaGF2ZSBiZWVuDQo+ID4gKyAvLyBz dWNjZXNzZnVsbHkgcmVhZC4NCj4gPiArICBpZiAoKFNsbGJpRmxhZ3MgPT0gTlVMTCkgICAgICAg ICAgICAgICAgICAgICB8fA0KPiA+ICsgICAgICAoU2xsYmlEYXRhVHlwZSA9PSBOVUxMKSAgICAg ICAgICAgICAgICAgIHx8DQo+ID4gKyAgICAgIChOdW1iZXJJbml0aWF0b3JQcm94aW1pdHlEb21h aW4gPT0gTlVMTCkgfHwNCj4gPiArICAgICAgKE51bWJlclRhcmdldFByb3hpbWl0eURvbWFpbiA9 PSBOVUxMKSkgew0KPiA+ICsgICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4gPiArICAgIFBy aW50ICgNCj4gPiArICAgICAgTCJFUlJPUjogSW5zdWZmaWNpZW50IHJlbWFpbmluZyB0YWJsZSBi dWZmZXIgbGVuZ3RoIHRvIHJlYWQgdGhlICIgXA0KPiA+ICsgICAgICAgIEwiU0xMQkkgc3RydWN0 dXJlIGhlYWRlci4gTGVuZ3RoID0gJWQuXG4iLA0KPiA+ICsgICAgICBMZW5ndGgNCj4gPiArICAg ICAgKTsNCj4gPiArICAgIHJldHVybjsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIFJlcXVpcmVk VGFibGVTaXplID0gKCpOdW1iZXJJbml0aWF0b3JQcm94aW1pdHlEb21haW4gKiBzaXplb2YgKFVJ TlQzMikpICsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICgqTnVtYmVyVGFyZ2V0UHJveGlt aXR5RG9tYWluICogc2l6ZW9mIChVSU5UMzIpKSArDQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAoKk51bWJlckluaXRpYXRvclByb3hpbWl0eURvbWFpbiAqDQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgKk51bWJlclRhcmdldFByb3hpbWl0eURvbWFpbiAqIHNpemVvZiAoVUlOVDE2KSkg Kw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgT2Zmc2V0Ow0KPiA+ICsNCj4gPiArICBpZiAo UmVxdWlyZWRUYWJsZVNpemUgPiBMZW5ndGgpIHsNCj4gPiArICAgIEluY3JlbWVudEVycm9yQ291 bnQgKCk7DQo+ID4gKyAgICBQcmludCAoDQo+ID4gKyAgICAgIEwiRVJST1I6IEluc3VmZmljaWVu dCBTeXN0ZW0gTG9jYWxpdHkgTGF0ZW5jeSBhbmQgQmFuZHdpZHRoIiBcDQo+ID4gKyAgICAgIEwi SW5mb3JtYXRpb24gU3RydWN0dXJlIGxlbmd0aC4gVGFibGVMZW5ndGggPSAlZC4gIiBcDQo+ID4g KyAgICAgIEwiUmVxdWlyZWRUYWJsZUxlbmd0aCA9ICVkLlxuIiwNCj4gPiArICAgICAgTGVuZ3Ro LA0KPiA+ICsgICAgICBSZXF1aXJlZFRhYmxlU2l6ZQ0KPiA+ICsgICAgICApOw0KPiA+ICsgICAg cmV0dXJuOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgSW5pdGlhdG9yUHJveGltaXR5RG9tYWlu TGlzdCA9IChVSU5UMzIqKSAoUHRyICsgT2Zmc2V0KTsNCj4gPiArIFRhcmdldFByb3hpbWl0eURv bWFpbkxpc3QgPSBJbml0aWF0b3JQcm94aW1pdHlEb21haW5MaXN0ICsNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKk51bWJlckluaXRpYXRvclByb3hpbWl0eURvbWFpbjsNCj4g PiArIExhdGVuY3lCYW5kd2lkdGhNYXRyaXggPSAoVUlOVDE2KikgKFRhcmdldFByb3hpbWl0eURv bWFpbkxpc3QgKw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpO dW1iZXJUYXJnZXRQcm94aW1pdHlEb21haW4pOw0KPiA+ICsNCj4gPiArICAvLyBEaXNwbGF5IGVh Y2ggZWxlbWVudCBvZiB0aGUgSW5pdGlhdG9yIFByb3hpbWl0eSBEb21haW4gbGlzdCAgZm9yDQo+ ID4gKyAoSW5kZXggPSAwOyBJbmRleCA8ICpOdW1iZXJJbml0aWF0b3JQcm94aW1pdHlEb21haW47 IEluZGV4KyspIHsNCj4gPiArICAgIFVuaWNvZGVTUHJpbnQgKA0KPiA+ICsgICAgICBCdWZmZXIs DQo+ID4gKyAgICAgIHNpemVvZiAoQnVmZmVyKSwNCj4gPiArICAgICAgTCJJbml0aWF0b3IgUHJv eGltaXR5IERvbSBbJWRdIiwNCj4gPiArICAgICAgSW5kZXgNCj4gPiArICAgICAgKTsNCj4gPiAr DQo+ID4gKyAgICBQcmludEZpZWxkTmFtZSAoNCwgQnVmZmVyKTsNCj4gPiArICAgIFByaW50ICgN Cj4gPiArICAgICAgTCIweCV4XG4iLA0KPiA+ICsgICAgICBJbml0aWF0b3JQcm94aW1pdHlEb21h aW5MaXN0W0luZGV4XQ0KPiA+ICsgICAgICApOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgLy8g RGlzcGxheSBlYWNoIGVsZW1lbnQgb2YgdGhlIFRhcmdldCBQcm94aW1pdHkgRG9tYWluIGxpc3Qg IGZvcg0KPiA+ICsgKEluZGV4ID0gMDsgSW5kZXggPCAqTnVtYmVyVGFyZ2V0UHJveGltaXR5RG9t YWluOyBJbmRleCsrKSB7DQo+ID4gKyAgICBVbmljb2RlU1ByaW50ICgNCj4gPiArICAgICAgQnVm ZmVyLA0KPiA+ICsgICAgICBzaXplb2YgKEJ1ZmZlciksDQo+ID4gKyAgICAgIEwiVGFyZ2V0IFBy b3hpbWl0eSBEb20gWyVkXSIsDQo+ID4gKyAgICAgIEluZGV4DQo+ID4gKyAgICAgICk7DQo+ID4g Kw0KPiA+ICsgICAgUHJpbnRGaWVsZE5hbWUgKDQsIEJ1ZmZlcik7DQo+ID4gKyAgICBQcmludCAo DQo+ID4gKyAgICAgIEwiMHgleFxuIiwNCj4gPiArICAgICAgVGFyZ2V0UHJveGltaXR5RG9tYWlu TGlzdFtJbmRleF0NCj4gPiArICAgICAgKTsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIC8vIENy ZWF0ZSBiYXNlIG5hbWUgZGVwZW5kaW5nIG9uIERhdGEgVHlwZSBpbiB0aGlzIFN0cnVjdHVyZSAg aWYNCj4gPiArICgqU2xsYmlEYXRhVHlwZSA+PSBBUlJBWV9TSVpFIChTbGxiaU5hbWVzKSkgew0K PiA+ICsgICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4gPiArICAgIFByaW50IChMIkVycm9y OiBVbmtvd24gRGF0YSBUeXBlLiBEYXRhVHlwZSA9IDB4JXguXG4iLCAqU2xsYmlEYXRhVHlwZSk7 DQo+ID4gKyAgICByZXR1cm47DQo+ID4gKyAgfQ0KPiA+ICsgIFN0ckNweVMgKEJ1ZmZlciwgc2l6 ZW9mIChCdWZmZXIpLCBTbGxiaU5hbWVzWypTbGxiaURhdGFUeXBlXSk7DQo+ID4gKw0KPiA+ICsg IC8vIEFkanVzdCBiYXNlIG5hbWUgZGVwZW5kaW5nIG9uIE1lbW9yeSBIaWVyYXJjaHkgaW4gdGhp cyBTdHJ1Y3R1cmUNCj4gPiArIHN3aXRjaCAoU2xsYmlGbGFncy0+TWVtb3J5SGllcmFyY2h5KSB7 DQo+ID4gKyAgICBjYXNlIDA6DQo+ID4gKyAgICAgIFVuaWNvZGVTUHJpbnQgKA0KPiA+ICsgICAg ICAgIFNlY29uZEJ1ZmZlciwNCj4gPiArICAgICAgICBzaXplb2YgKFNlY29uZEJ1ZmZlciksDQo+ ID4gKyAgICAgICAgQnVmZmVyLA0KPiA+ICsgICAgICAgIEwiIiwNCj4gPiArICAgICAgICBMIiVz Ig0KPiA+ICsgICAgICAgICk7DQo+ID4gKyAgICAgIGJyZWFrOw0KPiA+ICsgICAgY2FzZSAxOg0K PiA+ICsgICAgY2FzZSAyOg0KPiA+ICsgICAgY2FzZSAzOg0KPiA+ICsgICAgICBVbmljb2RlU1By aW50ICgNCj4gPiArICAgICAgICBTZWNvbmRCdWZmZXIsDQo+ID4gKyAgICAgICAgc2l6ZW9mIChT ZWNvbmRCdWZmZXIpLA0KPiA+ICsgICAgICAgIEJ1ZmZlciwNCj4gPiArICAgICAgICBMIkhpdCAi LA0KPiA+ICsgICAgICAgIEwiJXMiDQo+ID4gKyAgICAgICAgKTsNCj4gPiArICAgICAgYnJlYWs7 DQo+ID4gKyAgICBkZWZhdWx0Og0KPiA+ICsgICAgICBJbmNyZW1lbnRFcnJvckNvdW50ICgpOw0K PiA+ICsgICAgICBQcmludCAoDQo+ID4gKyAgICAgICAgTCJFcnJvcjogSW52YWxpZCBNZW1vcnkg SGllcmFyY2h5LiBNZW1vcnlIaWVyYXJjaHkgPSAlZC5cbiIsDQo+ID4gKyAgICAgICAgU2xsYmlG bGFncy0+TWVtb3J5SGllcmFyY2h5DQo+ID4gKyAgICAgICAgKTsNCj4gPiArICAgICAgcmV0dXJu Ow0KPiA+ICsNCj4gPiArICB9IC8vIHN3aXRjaA0KPiA+ICsNCj4gPiArICBpZiAoKk51bWJlclRh cmdldFByb3hpbWl0eURvbWFpbiA8PQ0KPiBNQVhfTUVNT1JZX0RPTUFJTl9UQVJHRVRfUFJJTlRf TUFUUklYKSB7DQo+ID4gKyAgICAvLyBEaXNwbGF5IHRoZSBsYXRlbmN5L2JhbmR3aWR0aCBtYXRy aXggYXMgYSBtYXRyaXgNCj4gPiArICAgIFVuaWNvZGVTUHJpbnQgKA0KPiA+ICsgICAgICBCdWZm ZXIsDQo+ID4gKyAgICAgIHNpemVvZiAoQnVmZmVyKSwNCj4gPiArICAgICAgU2Vjb25kQnVmZmVy LA0KPiA+ICsgICAgICBMIiINCj4gPiArICAgICAgKTsNCj4gPiArICAgIFByaW50RmllbGROYW1l ICg0LCBCdWZmZXIpOw0KPiA+ICsNCj4gPiArICAgIFByaW50IChMIlxuICAgICAgVGFyZ2V0ICAg IDogWC1heGlzIChIb3Jpem9udGFsKSIpOw0KPiA+ICsgICAgUHJpbnQgKEwiXG4gICAgICBJbml0 aWF0b3IgOiBZLWF4aXMgKFZlcnRpY2FsKSIpOw0KPiA+ICsgICAgUHJpbnQgKEwiXG4gICAgICAg ICB8Iik7DQo+ID4gKw0KPiA+ICsgICAgZm9yIChJbmRleFRhcmdldCA9IDA7DQo+ID4gKyAgICAg ICAgIEluZGV4VGFyZ2V0IDwgKk51bWJlclRhcmdldFByb3hpbWl0eURvbWFpbjsNCj4gPiArICAg ICAgICAgSW5kZXhUYXJnZXQrKykgew0KPiA+ICsgICAgICBQcmludCAoTCIgICAgJTJkIiwgSW5k ZXhUYXJnZXQpOw0KPiA+ICsgICAgfQ0KPiA+ICsNCj4gPiArICAgIFByaW50IChMIlxuICAgICAg LS0tKyIpOw0KPiA+ICsgICAgZm9yIChJbmRleFRhcmdldCA9IDA7DQo+ID4gKyAgICAgICAgIElu ZGV4VGFyZ2V0IDwgKk51bWJlclRhcmdldFByb3hpbWl0eURvbWFpbjsNCj4gPiArICAgICAgICAg SW5kZXhUYXJnZXQrKykgew0KPiA+ICsgICAgICBQcmludCAoTCItLS0tLS0iKTsNCj4gPiArICAg IH0NCj4gPiArICAgIFByaW50IChMIlxuIik7DQo+ID4gKw0KPiA+ICsgICAgVGFyZ2V0U3RhcnRP ZmZzZXQgPSAwOw0KPiA+ICsgICAgZm9yIChJbmRleEluaXRpYXRvciA9IDA7DQo+ID4gKyAgICAg ICAgIEluZGV4SW5pdGlhdG9yIDwgKk51bWJlckluaXRpYXRvclByb3hpbWl0eURvbWFpbjsNCj4g PiArICAgICAgICAgSW5kZXhJbml0aWF0b3IrKykgew0KPiA+ICsgICAgICBQcmludCAoTCIgICAg ICAlMmQgfCIsIEluZGV4SW5pdGlhdG9yKTsNCj4gPiArICAgICAgZm9yIChJbmRleFRhcmdldCA9 IDA7DQo+ID4gKyAgICAgICAgICAgSW5kZXhUYXJnZXQgPCAqTnVtYmVyVGFyZ2V0UHJveGltaXR5 RG9tYWluOw0KPiA+ICsgICAgICAgICAgIEluZGV4VGFyZ2V0KyspIHsNCj4gPiArICAgICAgICBQ cmludCAoDQo+ID4gKyAgICAgICAgICBMIiAlNWQiLA0KPiA+ICsgICAgICAgICAgTGF0ZW5jeUJh bmR3aWR0aE1hdHJpeFtUYXJnZXRTdGFydE9mZnNldCArIEluZGV4VGFyZ2V0XQ0KPiA+ICsgICAg ICAgICAgKTsNCj4gPiArICAgICAgfSAvLyBmb3IgVGFyZ2V0DQo+ID4gKyAgICAgIFByaW50IChM IlxuIik7DQo+ID4gKyAgICAgIFRhcmdldFN0YXJ0T2Zmc2V0ICs9ICgqTnVtYmVyVGFyZ2V0UHJv eGltaXR5RG9tYWluKTsNCj4gPiArICAgIH0gLy8gZm9yIEluaXRpYXRvcg0KPiA+ICsgICAgUHJp bnQgKEwiXG4iKTsNCj4gPiArICB9IGVsc2Ugew0KPiA+ICsgICAgLy8gRGlzcGxheSB0aGUgbGF0 ZW5jeS9iYW5kd2lkdGggbWF0cml4IGFzIGEgbGlzdA0KPiA+ICsgICAgVW5pY29kZVNQcmludCAo DQo+ID4gKyAgICAgIEJ1ZmZlciwNCj4gPiArICAgICAgc2l6ZW9mIChCdWZmZXIpLA0KPiA+ICsg ICAgICBTZWNvbmRCdWZmZXIsDQo+ID4gKyAgICAgIEwiIFslZF1bJWRdIg0KPiA+ICsgICAgICAp Ow0KPiA+ICsNCj4gPiArICAgIFRhcmdldFN0YXJ0T2Zmc2V0ID0gMDsNCj4gPiArICAgIGZvciAo SW5kZXhJbml0aWF0b3IgPSAwOw0KPiA+ICsgICAgICAgICBJbmRleEluaXRpYXRvciA8ICpOdW1i ZXJJbml0aWF0b3JQcm94aW1pdHlEb21haW47DQo+ID4gKyAgICAgICAgIEluZGV4SW5pdGlhdG9y KyspIHsNCj4gPiArICAgICAgZm9yIChJbmRleFRhcmdldCA9IDA7DQo+ID4gKyAgICAgICAgICAg SW5kZXhUYXJnZXQgPCAqTnVtYmVyVGFyZ2V0UHJveGltaXR5RG9tYWluOw0KPiA+ICsgICAgICAg ICAgIEluZGV4VGFyZ2V0KyspIHsNCj4gPiArICAgICAgICBVbmljb2RlU1ByaW50ICgNCj4gPiAr ICAgICAgICAgIFNlY29uZEJ1ZmZlciwNCj4gPiArICAgICAgICAgIHNpemVvZiAoU2Vjb25kQnVm ZmVyKSwNCj4gPiArICAgICAgICAgIEJ1ZmZlciwNCj4gPiArICAgICAgICAgIEluZGV4SW5pdGlh dG9yLA0KPiA+ICsgICAgICAgICAgSW5kZXhUYXJnZXQNCj4gPiArICAgICAgICAgICk7DQo+ID4g Kw0KPiA+ICsgICAgICAgIFByaW50RmllbGROYW1lICg0LCBTZWNvbmRCdWZmZXIpOw0KPiA+ICsg ICAgICAgIFByaW50ICgNCj4gPiArICAgICAgICAgIEwiJWRcbiIsDQo+ID4gKyAgICAgICAgICBM YXRlbmN5QmFuZHdpZHRoTWF0cml4W1RhcmdldFN0YXJ0T2Zmc2V0ICsgSW5kZXhUYXJnZXRdDQo+ ID4gKyAgICAgICAgICApOw0KPiA+ICsgICAgICB9IC8vIGZvciBUYXJnZXQNCj4gPiArICAgICAg VGFyZ2V0U3RhcnRPZmZzZXQgKz0gKCpOdW1iZXJUYXJnZXRQcm94aW1pdHlEb21haW4pOw0KPiA+ ICsgICAgfSAvLyBmb3IgSW5pdGlhdG9yDQo+ID4gKyAgfQ0KPiA+ICt9DQo+ID4gKw0KPiA+ICsv KioNCj4gPiArICBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgTWVtb3J5IFNpZGUgQ2FjaGUgSW5m b3JtYXRpb24gU3RydWN0dXJlIChUeXBlIDIpLg0KPiA+ICsNCj4gPiArICBAcGFyYW0gW2luXSBQ dHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBNZW1vcnkgU2lkZSBDYWNoZSBJbmZv cm1hdGlvbg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgU3RydWN0dXJlIGRhdGEuDQo+ID4g KyAgQHBhcmFtIFtpbl0gTGVuZ3RoICBMZW5ndGggb2YgdGhlIE1lbW9yeSBTaWRlIENhY2hlIElu Zm9ybWF0aW9uIFN0cnVjdHVyZS4NCj4gPiArKiovDQo+ID4gK1NUQVRJQw0KPiA+ICtWT0lEDQo+ ID4gK0R1bXBNc2NpICgNCj4gPiArICBJTiBVSU5UOCogUHRyLA0KPiA+ICsgIElOIFVJTlQzMiBM ZW5ndGgNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBDT05TVCBVSU5UMTYqIFNNQklPU0hhbmRs ZXNMaXN0Ow0KPiA+ICsgIENIQVIxNiAgICAgICAgQnVmZmVyW09VVFBVVF9GSUVMRF9DT0xVTU5f V0lEVEhdOw0KPiA+ICsgIFVJTlQzMiAgICAgICAgT2Zmc2V0Ow0KPiA+ICsgIFVJTlQxNiAgICAg ICAgSW5kZXg7DQo+ID4gKw0KPiA+ICsgIE9mZnNldCA9IFBhcnNlQWNwaSAoDQo+ID4gKyAgICAg ICAgICAgICBUUlVFLA0KPiA+ICsgICAgICAgICAgICAgMiwNCj4gPiArICAgICAgICAgICAgICJN ZW1vcnkgU2lkZSBDYWNoZSBJbmZvcm1hdGlvbiBTdHJ1Y3R1cmUiLA0KPiA+ICsgICAgICAgICAg ICAgUHRyLA0KPiA+ICsgICAgICAgICAgICAgTGVuZ3RoLA0KPiA+ICsgICAgICAgICAgICAgUEFS U0VSX1BBUkFNUyAoTWVtU2lkZUNhY2hlSW5mb1BhcnNlcikNCj4gPiArICAgICAgICAgICAgICk7 DQo+ID4gKw0KPiA+ICsgIC8vIENoZWNrIGlmIHRoZSB2YWx1ZXMgdXNlZCB0byBjb250cm9sIHRo ZSBwYXJzaW5nIGxvZ2ljIGhhdmUgYmVlbg0KPiA+ICsgLy8gc3VjY2Vzc2Z1bGx5IHJlYWQuDQo+ ID4gKyAgaWYgKE51bWJlclNNQklPU0hhbmRsZXMgPT0gTlVMTCkgew0KPiA+ICsgICAgSW5jcmVt ZW50RXJyb3JDb3VudCAoKTsNCj4gPiArICAgIFByaW50ICgNCj4gPiArICAgICAgTCJFUlJPUjog SW5zdWZmaWNpZW50IHJlbWFpbmluZyB0YWJsZSBidWZmZXIgbGVuZ3RoIHRvIHJlYWQgdGhlICIg XA0KPiA+ICsgICAgICAgIEwiTVNDSSBzdHJ1Y3R1cmUgaGVhZGVyLiBMZW5ndGggPSAlZC5cbiIs DQo+ID4gKyAgICAgIExlbmd0aA0KPiA+ICsgICAgICApOw0KPiA+ICsgICAgcmV0dXJuOw0KPiA+ ICsgIH0NCj4gPiArDQo+ID4gKyAgaWYgKCgqTnVtYmVyU01CSU9TSGFuZGxlcyAqIHNpemVvZiAo VUlOVDE2KSkgPiAoTGVuZ3RoIC0gT2Zmc2V0KSkgew0KPiA+ICsgICAgSW5jcmVtZW50RXJyb3JD b3VudCAoKTsNCj4gPiArICAgIFByaW50ICgNCj4gPiArICAgICAgTCJFUlJPUjogSW52YWxpZCBO dW1iZXIgb2YgU01CSU9TIEhhbmRsZXMuIFNNQklPU0hhbmRsZXNDb3VudA0KPiA9ICVkLiIgXA0K PiA+ICsgICAgICBMIlJlbWFpbmluZ0J1ZmZlckxlbmd0aCA9ICVkLlxuIiwNCj4gPiArICAgICAg Kk51bWJlclNNQklPU0hhbmRsZXMsDQo+ID4gKyAgICAgIExlbmd0aCAtIE9mZnNldA0KPiA+ICsg ICAgICApOw0KPiA+ICsgICAgcmV0dXJuOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgU01CSU9T SGFuZGxlc0xpc3QgPSAoVUlOVDE2KikgKFB0ciArIE9mZnNldCk7DQo+ID4gKw0KPiA+ICsgIGZv ciAoSW5kZXggPSAwOyBJbmRleCA8ICpOdW1iZXJTTUJJT1NIYW5kbGVzOyBJbmRleCsrKSB7DQo+ ID4gKyAgICBVbmljb2RlU1ByaW50ICgNCj4gPiArICAgICAgQnVmZmVyLA0KPiA+ICsgICAgICBz aXplb2YgKEJ1ZmZlciksDQo+ID4gKyAgICAgIEwiU01CSU9TIEhhbmRsZXMgWyVkXSIsDQo+ID4g KyAgICAgIEluZGV4DQo+ID4gKyAgICAgICk7DQo+ID4gKw0KPiA+ICsgICAgUHJpbnRGaWVsZE5h bWUgKDQsIEJ1ZmZlcik7DQo+ID4gKyAgICBQcmludCAoDQo+ID4gKyAgICAgIEwiMHgleFxuIiwN Cj4gPiArICAgICAgU01CSU9TSGFuZGxlc0xpc3RbSW5kZXhdDQo+ID4gKyAgICAgICk7DQo+ID4g KyAgfQ0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBUaGlzIGZ1bmN0aW9uIHBhcnNl cyB0aGUgQUNQSSBITUFUIHRhYmxlLg0KPiA+ICsgIFdoZW4gdHJhY2UgaXMgZW5hYmxlZCB0aGlz IGZ1bmN0aW9uIHBhcnNlcyB0aGUgSE1BVCB0YWJsZSBhbmQNCj4gPiArICB0cmFjZXMgdGhlIEFD UEkgdGFibGUgZmllbGRzLg0KPiA+ICsNCj4gPiArICBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUg Zm9sbG93aW5nIEhNQVQgc3RydWN0dXJlczoNCj4gPiArICAgIC0gTWVtb3J5IFByb3hpbWl0eSBE b21haW4gQXR0cmlidXRlcyBTdHJ1Y3R1cmUgKFR5cGUgMCkNCj4gPiArICAgIC0gU3lzdGVtIExv Y2FsaXR5IExhdGVuY3kgYW5kIEJhbmR3aWR0aCBJbmZvIFN0cnVjdHVyZSAoVHlwZSAxKQ0KPiA+ ICsgICAgLSBNZW1vcnkgU2lkZSBDYWNoZSBJbmZvIHN0cnVjdHVyZSAoVHlwZSAyKQ0KPiA+ICsN Cj4gPiArICBUaGlzIGZ1bmN0aW9uIGFsc28gcGVyZm9ybXMgdmFsaWRhdGlvbiBvZiB0aGUgQUNQ SSB0YWJsZSBmaWVsZHMuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSBbaW5dIFRyYWNlICAgICAgICAg ICAgICBJZiBUUlVFLCB0cmFjZSB0aGUgQUNQSSBmaWVsZHMuDQo+ID4gKyAgQHBhcmFtIFtpbl0g UHRyICAgICAgICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ ID4gKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlTGVuZ3RoICAgIExlbmd0aCBvZiB0aGUgQUNQSSB0 YWJsZS4NCj4gPiArICBAcGFyYW0gW2luXSBBY3BpVGFibGVSZXZpc2lvbiAgUmV2aXNpb24gb2Yg dGhlIEFDUEkgdGFibGUuDQo+ID4gKyoqLw0KPiA+ICtWT0lEDQo+ID4gK0VGSUFQSQ0KPiA+ICtQ YXJzZUFjcGlIbWF0ICgNCj4gPiArICBJTiBCT09MRUFOIFRyYWNlLA0KPiA+ICsgIElOIFVJTlQ4 KiAgUHRyLA0KPiA+ICsgIElOIFVJTlQzMiAgQWNwaVRhYmxlTGVuZ3RoLA0KPiA+ICsgIElOIFVJ TlQ4ICAgQWNwaVRhYmxlUmV2aXNpb24NCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBVSU5UMzIg T2Zmc2V0Ow0KPiA+ICsgIFVJTlQ4KiBIbWF0U3RydWN0dXJlUHRyOw0KPiA+ICsNCj4gPiArICBp ZiAoIVRyYWNlKSB7DQo+ID4gKyAgICByZXR1cm47DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICBP ZmZzZXQgPSBQYXJzZUFjcGkgKA0KPiA+ICsgICAgICAgICAgICAgVHJhY2UsDQo+ID4gKyAgICAg ICAgICAgICAwLA0KPiA+ICsgICAgICAgICAgICAgIkhNQVQiLA0KPiA+ICsgICAgICAgICAgICAg UHRyLA0KPiA+ICsgICAgICAgICAgICAgQWNwaVRhYmxlTGVuZ3RoLA0KPiA+ICsgICAgICAgICAg ICAgUEFSU0VSX1BBUkFNUyAoSG1hdFBhcnNlcikNCj4gPiArICAgICAgICAgICAgICk7DQo+ID4g Kw0KPiA+ICsgIEhtYXRTdHJ1Y3R1cmVQdHIgPSBQdHIgKyBPZmZzZXQ7DQo+ID4gKw0KPiA+ICsg IHdoaWxlIChPZmZzZXQgPCBBY3BpVGFibGVMZW5ndGgpIHsNCj4gPiArICAgIC8vIFBhcnNlIEhN QVQgU3RydWN0dXJlIEhlYWRlciB0byBvYnRhaW4gVHlwZSBhbmQgTGVuZ3RoLg0KPiA+ICsgICAg UGFyc2VBY3BpICgNCj4gPiArICAgICAgRkFMU0UsDQo+ID4gKyAgICAgIDAsDQo+ID4gKyAgICAg IE5VTEwsDQo+ID4gKyAgICAgIEhtYXRTdHJ1Y3R1cmVQdHIsDQo+ID4gKyAgICAgIEFjcGlUYWJs ZUxlbmd0aCAtIE9mZnNldCwNCj4gPiArICAgICAgUEFSU0VSX1BBUkFNUyAoSG1hdFN0cnVjdHVy ZUhlYWRlclBhcnNlcikNCj4gPiArICAgICAgKTsNCj4gPiArDQo+ID4gKyAgICAvLyBDaGVjayBp ZiB0aGUgdmFsdWVzIHVzZWQgdG8gY29udHJvbCB0aGUgcGFyc2luZyBsb2dpYyBoYXZlIGJlZW4N Cj4gPiArICAgIC8vIHN1Y2Nlc3NmdWxseSByZWFkLg0KPiA+ICsgICAgaWYgKChIbWF0U3RydWN0 dXJlVHlwZSA9PSBOVUxMKSB8fA0KPiA+ICsgICAgICAgIChIbWF0U3RydWN0dXJlTGVuZ3RoID09 IE5VTEwpKSB7DQo+ID4gKyAgICAgIEluY3JlbWVudEVycm9yQ291bnQgKCk7DQo+ID4gKyAgICAg IFByaW50ICgNCj4gPiArICAgICAgICBMIkVSUk9SOiBJbnN1ZmZpY2llbnQgcmVtYWluaW5nIHRh YmxlIGJ1ZmZlciBsZW5ndGggdG8gcmVhZCB0aGUgIiBcDQo+ID4gKyAgICAgICAgICBMIkhNQVQg c3RydWN0dXJlIGhlYWRlci4gTGVuZ3RoID0gJWQuXG4iLA0KPiA+ICsgICAgICAgIEFjcGlUYWJs ZUxlbmd0aCAtIE9mZnNldA0KPiA+ICsgICAgICAgICk7DQo+ID4gKyAgICAgIHJldHVybjsNCj4g PiArICAgIH0NCj4gPiArDQo+ID4gKyAgICAvLyBWYWxpZGF0ZSBITUFUIFN0cnVjdHVyZSBsZW5n dGguDQo+ID4gKyAgICBpZiAoKCpIbWF0U3RydWN0dXJlTGVuZ3RoID09IDApIHx8DQo+ID4gKyAg ICAgICAgKChPZmZzZXQgKyAoKkhtYXRTdHJ1Y3R1cmVMZW5ndGgpKSA+IEFjcGlUYWJsZUxlbmd0 aCkpIHsNCj4gPiArICAgICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4gPiArICAgICAgUHJp bnQgKA0KPiA+ICsgICAgICAgIEwiRVJST1I6IEludmFsaWQgSE1BVCBTdHJ1Y3R1cmUgbGVuZ3Ro LiAiIFwNCj4gPiArICAgICAgICAgIEwiTGVuZ3RoID0gJWQuIE9mZnNldCA9ICVkLiBBY3BpVGFi bGVMZW5ndGggPSAlZC5cbiIsDQo+ID4gKyAgICAgICAgKkhtYXRTdHJ1Y3R1cmVMZW5ndGgsDQo+ ID4gKyAgICAgICAgT2Zmc2V0LA0KPiA+ICsgICAgICAgIEFjcGlUYWJsZUxlbmd0aA0KPiA+ICsg ICAgICAgICk7DQo+ID4gKyAgICAgIHJldHVybjsNCj4gPiArICAgIH0NCj4gPiArDQo+ID4gKyAg ICBzd2l0Y2ggKCpIbWF0U3RydWN0dXJlVHlwZSkgew0KPiA+ICsgICAgICBjYXNlDQo+IEVGSV9B Q1BJXzZfM19ITUFUX1RZUEVfTUVNT1JZX1BST1hJTUlUWV9ET01BSU5fQVRUUklCVVRFUzoNCj4g PiArICAgICAgICBEdW1wTXBkYSAoDQo+ID4gKyAgICAgICAgICBIbWF0U3RydWN0dXJlUHRyLA0K PiA+ICsgICAgICAgICAgKkhtYXRTdHJ1Y3R1cmVMZW5ndGgNCj4gPiArICAgICAgICAgICk7DQo+ ID4gKyAgICAgICAgYnJlYWs7DQo+ID4gKyAgICAgIGNhc2UNCj4gRUZJX0FDUElfNl8zX0hNQVRf VFlQRV9TWVNURU1fTE9DQUxJVFlfTEFURU5DWV9BTkRfQkFORFdJRFRIX0kNCj4gTkZPOg0KPiA+ ICsgICAgICAgIER1bXBTbGxiaSAoDQo+ID4gKyAgICAgICAgICBIbWF0U3RydWN0dXJlUHRyLA0K PiA+ICsgICAgICAgICAgKkhtYXRTdHJ1Y3R1cmVMZW5ndGgNCj4gPiArICAgICAgICAgICk7DQo+ ID4gKyAgICAgICAgYnJlYWs7DQo+ID4gKyAgICAgIGNhc2UgRUZJX0FDUElfNl8zX0hNQVRfVFlQ RV9NRU1PUllfU0lERV9DQUNIRV9JTkZPOg0KPiA+ICsgICAgICAgICBEdW1wTXNjaSAoDQo+ID4g KyAgICAgICAgICBIbWF0U3RydWN0dXJlUHRyLA0KPiA+ICsgICAgICAgICAgKkhtYXRTdHJ1Y3R1 cmVMZW5ndGgNCj4gPiArICAgICAgICAgICk7DQo+ID4gKyAgICAgICAgYnJlYWs7DQo+ID4gKyAg ICAgIGRlZmF1bHQ6DQo+ID4gKyAgICAgICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4gPiAr ICAgICAgICBQcmludCAoDQo+ID4gKyAgICAgICAgICBMIkVSUk9SOiBVbmtub3duIEhNQVQgc3Ry dWN0dXJlOiINCj4gPiArICAgICAgICAgICAgTCIgVHlwZSA9ICVkLCBMZW5ndGggPSAlZFxuIiwN Cj4gPiArICAgICAgICAgICpIbWF0U3RydWN0dXJlVHlwZSwNCj4gPiArICAgICAgICAgICpIbWF0 U3RydWN0dXJlTGVuZ3RoDQo+ID4gKyAgICAgICAgICApOw0KPiA+ICsgICAgICAgIGJyZWFrOw0K PiA+ICsgICAgfSAvLyBzd2l0Y2gNCj4gPiArDQo+ID4gKyAgICBIbWF0U3RydWN0dXJlUHRyICs9 ICpIbWF0U3RydWN0dXJlTGVuZ3RoOw0KPiA+ICsgICAgT2Zmc2V0ICs9ICpIbWF0U3RydWN0dXJl TGVuZ3RoOw0KPiA+ICsgIH0gLy8gd2hpbGUNCj4gPiArfQ0KPiA+IGRpZmYgLS1naXQNCj4gPiBh L1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1VlZmlTaGVsbEFj cGlWaWV3Q29tbWFuDQo+ID4gZExpYi5jDQo+ID4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVs bEFjcGlWaWV3Q29tbWFuZExpYi9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbg0KPiA+IGRMaWIuYyBp bmRleA0KPiA+DQo+IGQyZjI2ZmY4OWYxMmU1OTY3MDIyODFjMzhhYjBkZTM3MjlhYTY4ZTQuLmM5 ZTMwNTRhNWM0MTNiYTk1ZTY0MjBjZTNkDQo+IDAyDQo+ID4gZjBkOTU0ZTk5ZDkwIDEwMDY0NA0K PiA+IC0tLQ0KPiA+IGEvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRM aWIvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW4NCj4gPiBkTGliLmMNCj4gPiArKysgYi9TaGVsbFBr Zy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9VZWZpU2hlbGxBY3BpVmlld0Nv DQo+ID4gKysrIG1tYW5kTGliLmMNCj4gPiBAQCAtMSw3ICsxLDcgQEANCj4gPiAgLyoqIEBmaWxl DQo+ID4gICAgTWFpbiBmaWxlIGZvciAnYWNwaXZpZXcnIFNoZWxsIGNvbW1hbmQgZnVuY3Rpb24u DQo+ID4NCj4gPiAtICBDb3B5cmlnaHQgKGMpIDIwMTYgLSAyMDIwLCBBUk0gTGltaXRlZC4gQWxs IHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4gKyAgQ29weXJpZ2h0IChjKSAyMDE2IC0gMjAyMCwg QXJtIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ICAgIFNQRFgtTGljZW5z ZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50ICAqKi8NCj4gPg0KPiA+IEBAIC01Myw2 ICs1Myw3IEBAIEFDUElfVEFCTEVfUEFSU0VSIFBhcnNlckxpc3RbXSA9IHsNCj4gPiAgICB7RUZJ X0FDUElfNl8zX0ZJUk1XQVJFX0FDUElfQ09OVFJPTF9TVFJVQ1RVUkVfU0lHTkFUVVJFLA0KPiBQ YXJzZUFjcGlGYWNzfSwNCj4gPiAgICB7RUZJX0FDUElfNl8yX0ZJWEVEX0FDUElfREVTQ1JJUFRJ T05fVEFCTEVfU0lHTkFUVVJFLA0KPiBQYXJzZUFjcGlGYWR0fSwNCj4gPiAgICB7RUZJX0FDUElf Nl8yX0dFTkVSSUNfVElNRVJfREVTQ1JJUFRJT05fVEFCTEVfU0lHTkFUVVJFLA0KPiA+IFBhcnNl QWNwaUd0ZHR9LA0KPiA+ICsNCj4ge0VGSV9BQ1BJXzZfM19IRVRFUk9HRU5FT1VTX01FTU9SWV9B VFRSSUJVVEVfVEFCTEVfU0lHTkFUVVJFLA0KPiA+ICsgUGFyc2VBY3BpSG1hdH0sDQo+ID4gICAg e0VGSV9BQ1BJXzZfMl9JT19SRU1BUFBJTkdfVEFCTEVfU0lHTkFUVVJFLCBQYXJzZUFjcGlJb3J0 fSwNCj4gPiAgICB7RUZJX0FDUElfNl8yX01VTFRJUExFX0FQSUNfREVTQ1JJUFRJT05fVEFCTEVf U0lHTkFUVVJFLA0KPiBQYXJzZUFjcGlNYWR0fSwNCj4gPg0KPiA+DQo+IHtFRklfQUNQSV82XzJf UENJX0VYUFJFU1NfTUVNT1JZX01BUFBFRF9DT05GSUdVUkFUSU9OX1NQQUNFX0JBDQo+IFNFX0FE RFJFDQo+ID4gU1NfREVTQ1JJUFRJT05fVEFCTEVfU0lHTkFUVVJFLCBkaWZmIC0tZ2l0DQo+ID4g YS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9VZWZpU2hlbGxB Y3BpVmlld0NvbW1hbg0KPiA+IGRMaWIuaW5mDQo+ID4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlT aGVsbEFjcGlWaWV3Q29tbWFuZExpYi9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbg0KPiA+IGRMaWIu aW5mIGluZGV4DQo+ID4NCj4gOTE0NTlmOWVjNjMyNjM1ZWU0NTNjNWVmNDZmNjc0NDVjZDllZWUw Yy4uZTk3MGM0MjU5YzE0M2I1YjA2ZmIxYTc1OWQ1DQo+IDgNCj4gPiAxOWU3Y2I5M2U3NDkgMTAw NjQ0DQo+ID4gLS0tDQo+ID4gYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29t bWFuZExpYi9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbg0KPiA+IGRMaWIuaW5mDQo+ID4gKysrIGIv U2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvVWVmaVNoZWxsQWNw aVZpZXdDbw0KPiA+ICsrKyBtbWFuZExpYi5pbmYNCj4gPiBAQCAtMSw3ICsxLDcgQEANCj4gPiAg IyMgIEBmaWxlDQo+ID4gICMgUHJvdmlkZXMgU2hlbGwgJ2FjcGl2aWV3JyBjb21tYW5kIGZ1bmN0 aW9ucyAgIyAtIyBDb3B5cmlnaHQgKGMpDQo+ID4gMjAxNiAtIDIwMjAsIEFSTSBMaW1pdGVkLiBB bGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiArIyBDb3B5cmlnaHQgKGMpIDIwMTYgLSAyMDIw LCBBcm0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4gICMNCj4gPiAgIyAg U1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQgICMgQEAgLTMzLDYg KzMzLDcgQEANCj4gPiBbU291cmNlcy5jb21tb25dDQo+ID4gICAgUGFyc2Vycy9GYWNzL0ZhY3NQ YXJzZXIuYw0KPiA+ICAgIFBhcnNlcnMvRmFkdC9GYWR0UGFyc2VyLmMNCj4gPiAgICBQYXJzZXJz L0d0ZHQvR3RkdFBhcnNlci5jDQo+ID4gKyAgUGFyc2Vycy9IbWF0L0htYXRQYXJzZXIuYw0KPiA+ ICAgIFBhcnNlcnMvSW9ydC9Jb3J0UGFyc2VyLmMNCj4gPiAgICBQYXJzZXJzL01hZHQvTWFkdFBh cnNlci5jDQo+ID4gICAgUGFyc2Vycy9NYWR0L01hZHRQYXJzZXIuaA0KPiA+IGRpZmYgLS1naXQN Cj4gPiBhL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1VlZmlT aGVsbEFjcGlWaWV3Q29tbWFuDQo+ID4gZExpYi51bmkNCj4gPiBiL1NoZWxsUGtnL0xpYnJhcnkv VWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuDQo+ID4g ZExpYi51bmkgaW5kZXgNCj4gPg0KPiA3Y2Q0M2QwNTE4ZmQwYTIzZGM1NDdhNWNhYjBkMDhiNjI2 MDJhMTEzLi42YjA1MzdiNDdhNzUxMTg0ZThhNjhhNjUzDQo+IDBhYQ0KPiA+IDg1ZWIyOGVhMzNi YSAxMDA2NDQNCj4gPiAtLS0NCj4gPiBhL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZp ZXdDb21tYW5kTGliL1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuDQo+ID4gZExpYi51bmkNCj4gPiAr KysgYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9VZWZpU2hl bGxBY3BpVmlld0NvDQo+ID4gKysrIG1tYW5kTGliLnVuaQ0KPiA+IEBAIC0xLDYgKzEsNiBAQA0K PiA+ICAvLyAvKioNCj4gPiAgLy8NCj4gPiAtLy8gQ29weXJpZ2h0IChjKSAyMDE2IC0gMjAyMCwg QVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ICsvLyBDb3B5cmlnaHQg KGMpIDIwMTYgLSAyMDIwLCBBcm0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ ID4gIC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50ICAvLyAg Ly8gTW9kdWxlIE5hbWU6DQo+ID4gQEAgLTg0LDYgKzg0LDcgQEANCj4gPiAgIiAgICAgICBEU0RU ICAtIERpZmZlcmVudGlhdGVkIFN5c3RlbSBEZXNjcmlwdGlvbiBUYWJsZVxyXG4iDQo+ID4gICIg ICAgICAgRkFDUCAgLSBGaXhlZCBBQ1BJIERlc2NyaXB0aW9uIFRhYmxlIChGQURUKVxyXG4iDQo+ ID4gICIgICAgICAgR1REVCAgLSBHZW5lcmljIFRpbWVyIERlc2NyaXB0aW9uIFRhYmxlXHJcbiIN Cj4gPiArIiAgICAgICBITUFUICAtIEhldGVyb2dlbmVvdXMgTWVtb3J5IEF0dHJpYnV0ZXMgVGFi bGVcclxuIg0KPiA+ICAiICAgICAgIElPUlQgIC0gSU8gUmVtYXBwaW5nIFRhYmxlXHJcbiINCj4g PiAgIiAgICAgICBNQ0ZHICAtIE1lbW9yeSBNYXBwZWQgQ29uZmlnIFNwYWNlIEJhc2UgQWRkcmVz cyBEZXNjcmlwdGlvbg0KPiBUYWJsZVxyXG4iDQo+ID4gICIgICAgICAgUFBUVCAgLSBQcm9jZXNz b3IgUHJvcGVydGllcyBUb3BvbG9neSBUYWJsZVxyXG4iDQo+ID4gLS0NCj4gPiAnR3VpZChDRTE2 NTY2OS0zRUYzLTQ5M0YtQjg1RC02MTkwRUU1Qjk3NTkpJw0KPiANCj4gDQo+IA0KPiANCg0K