From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by mx.groups.io with SMTP id smtpd.web08.820.1650295932787914700 for ; Mon, 18 Apr 2022 08:32:12 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=SZWANnhX; spf=pass (domain: intel.com, ip: 192.55.52.115, mailfrom: michael.d.kinney@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1650295932; x=1681831932; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=XVlDgtdXQJ05AszaPJnyIMhMVGa+Gj+jwuvdwFgs2C4=; b=SZWANnhXyFIzndm1+dsxvaBzcB+w2/Oj9cmpJmkdFmLnBnTe6lB7W1tf MX5m9ZDGKjeeXu+SnORnkpldd4itaQaLqnFhQW3jyXdnlmeBW9wLEyPj+ Nt0HhRtozXUwI1cKSNABUqBHwYc+S2OWyHt/r1xQ4Oivgd7Y3u/f3lEfV vTzRxXiD+QRom1Ho7n6ahoz26oFx8wHrUZ/tqjKUDsCbWZ+A549kax8Lt SaAcR2v6mpWI0CTP1xrll6xo2umxHtqNslIJkbWMy5iXbIjEQjWicd0wj EHyb8oKFegDH4JbjuXjU22ftjEfy2dbFVwjISSMwmlSzPAV/008KOspKI A==; X-IronPort-AV: E=McAfee;i="6400,9594,10321"; a="263718127" X-IronPort-AV: E=Sophos;i="5.90,270,1643702400"; d="scan'208";a="263718127" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Apr 2022 08:31:51 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.90,270,1643702400"; d="scan'208";a="554275523" Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by orsmga007.jf.intel.com with ESMTP; 18 Apr 2022 08:31:50 -0700 Received: from orsmsx612.amr.corp.intel.com (10.22.229.25) by ORSMSX603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27; Mon, 18 Apr 2022 08:31:50 -0700 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX612.amr.corp.intel.com (10.22.229.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27; Mon, 18 Apr 2022 08:31:50 -0700 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) 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.2308.27 via Frontend Transport; Mon, 18 Apr 2022 08:31:50 -0700 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (104.47.58.168) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2308.27; Mon, 18 Apr 2022 08:31:49 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=E6dqeq5J8RmiZTpcDry90RGnbrYEXrBIp7FPJ0+ul0hVJYhrextfVfqWg+9/V3UFJut3zsAWcDSvSYmOooYRXdNBCM4gTzlRRjtK8wFz+NJMJyqsNyskn2xkUTs1D1eQ1WxNMztsQ1oGppA30K1OVS67ixTcu18DLMtRQOPgAn6ROyyJDgI89lMXVptudabhfZYNncrrzjMbdZSbwL7CYXSO7T/HAIkFx/bHiNbAkLuaRisTZJir6FV36uVY0dDtqkGeVL5oiIOoA8/r662/65VQ1Dn0XgGMu0+7d6Xi8YgHsMZL6SJAfpT0KACHfZo0DxKl95UMgorYIhGSPojFdQ== 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=XVlDgtdXQJ05AszaPJnyIMhMVGa+Gj+jwuvdwFgs2C4=; b=Qlc8/fS3cIhSOvBWT7NNIwrMvG5doRZLFqD3emXpg2XoQVsBPRn6vvZl5IbxheY/XDntu4c0BzqSSck+PJCnrrn4YcPf2+1I7VI9MJNomd1DXaSA1WvaJSrODmKYitmpuKPQOQg2wEZudbQSaFHiREG2mPOwxlInkZV6Cw0GqTvAl2SHzqN2Gmt/mX9f2RU8oxhPGmA/T4k9bS6tgAjkhm1cUdGtVKH2ITbWTxS7iU0vYlDjMxllzfkre9ewfEpTi7B4lIuySq809ApBqDFl9tsofwL9KFq2J3L73bdq8fatFeEBCJCkVEN3SfJxpNLBjQxFiiIky5wVsH+j8IQrhg== 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 Received: from CO1PR11MB4929.namprd11.prod.outlook.com (2603:10b6:303:6d::19) by BN6PR11MB1668.namprd11.prod.outlook.com (2603:10b6:405:10::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5164.20; Mon, 18 Apr 2022 15:31:46 +0000 Received: from CO1PR11MB4929.namprd11.prod.outlook.com ([fe80::ace8:eeb9:74b1:cf53]) by CO1PR11MB4929.namprd11.prod.outlook.com ([fe80::ace8:eeb9:74b1:cf53%6]) with mapi id 15.20.5164.025; Mon, 18 Apr 2022 15:31:46 +0000 From: "Michael D Kinney" To: "devel@edk2.groups.io" , "Xu, Min M" , "Kinney, Michael D" CC: "Yao, Jiewen" , "Wang, Jian J" , "Lu, Xiaoyu1" , "Jiang, Guomin" , Gerd Hoffmann Subject: Re: [edk2-devel] [PATCH V3 2/9] CryptoPkg: Add SecCryptLib Thread-Topic: [edk2-devel] [PATCH V3 2/9] CryptoPkg: Add SecCryptLib Thread-Index: AQHYUrdmr0bPPxYySkG0+217oxG/YKz1y7vw Date: Mon, 18 Apr 2022 15:31:46 +0000 Message-ID: References: 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.6.401.20 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 71791c25-dc7e-4e27-f16b-08da21508ca3 x-ms-traffictypediagnostic: BN6PR11MB1668:EE_ x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: /A+L5dCHL2YEhk+uwqWVg1AaxAjLINtw3x3MUptD6nPyLqbgaIhvNBl13ac5DmOJw/KAFGxrPs93Ml4T/Hr0i3uygEorfMA8pJdxrj9PGyiU5339PEqe9y0FGPfEYbHJTorL6qVGGsrPvi9rXgYVXfceVDNHA+sxwibX5EkbrUK6ycKbarPnuQIW8Ljav+j27w9t8tnHBGmZFJVD9IGtiZirlqAyQmoNjND0kEL+maw13oyWz88ra6rtb9TQu4SaxY65uy+0kyMZGKpbu+eFONEI7EHCUfJSWWof0qLklMHa6JEO68MOBEwTVCHP4zp50oWANokRMhhAtFuphaMCzhKMydWGn+quDlLg8Q9ONTi4sA1hkDad8BCk+l/zepBLETnVlh/tZN+PIhXD9sWQPO+cmZPHt3XxHIQdd/d5UQaO4Le0ZiBgRPayjUIjQLF2XywbNLCVcGHq9iK5u5AIpmj/YgkPcPgojha56CQxnmtWsGWsb1ekDmMb/YqQnz42w51ylSTrcFkIR1S/t++UEakMj6eVgTNitZdxHVjzkRgz0YjlFlUdcz8eOG1CtCLwkBzkS5wcvzOxiKyP5M3XW+UJiUQZa7i3XwP/DgrCQJDSqGS92gst8fiUQ6vSSfWSPiyRsd58diUJzqKBLENp5KRY45XNB7x9PwDZuAc22XPDey/zs1UVox5PP4lTBSz6eexcjwOOOKbua/ybUeDxSqnayq67QEAB+Yjz3bqiiCXnQo3Z2OoY8U1iztbwrzbhF+Ur+K1Yvz2JoqJDfwq6Bv7SKZtPjmOW5L2II6qpA9LV7ZDwGLH8PNmJF3ZYNV0/tg0aJLrUFwqoPOl9MNMSTBuFKoYfm4t00n+EB90nJ9E= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CO1PR11MB4929.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(33656002)(66476007)(966005)(82960400001)(8676002)(53546011)(110136005)(64756008)(4326008)(66446008)(122000001)(66946007)(71200400001)(55016003)(316002)(2906002)(26005)(9686003)(7696005)(6506007)(19627235002)(8936002)(66556008)(76116006)(83380400001)(5660300002)(86362001)(38100700002)(38070700005)(45080400002)(508600001)(186003)(52536014)(54906003)(30864003)(3714002)(579004)(559001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?VTJHb1ZDRXNramZrVWx1UkNRMjlwTkNKTXltRkkxR3NvU1JwdExWV2ZBbExs?= =?utf-8?B?ZjI5WDNZbnYySHBJMVRIMWJEL0sxR1BEYXExM0JlVFNSbVNaSzF6Vmlhei9q?= =?utf-8?B?SVp0OGFJNVVndm1ReXRXTHNOZ0lCdllncHdPZUo1VTUzOCtmeWpsUzlEVW9J?= =?utf-8?B?aDNmYmxITlNFOEpMeUhGM2NyMlFzeE1haTllaTllN0t0MEpQaXNsWlY5TXFI?= =?utf-8?B?Tm9id0pOV29zYTV4VTBud3Aya3dqN0R6NVJNQzdrek1ON09ZZzh4TmJsZWIv?= =?utf-8?B?UGc1L29JRHV3UGVvSGxaanFaemgzREQ3SVhNeGNRY2VwNmRpcnoxdWQ3MjdT?= =?utf-8?B?SWxtaldCOUlsaDRjVm0vS3pTenhNZVdibVBOdVRtQVVoekpQeWhmc1crRmxI?= =?utf-8?B?VmxianYxUXVuVHc4dUk1QzFKSTZxMmE3cnJEU0JFMFRvZWVZR3dQNlBvRFhZ?= =?utf-8?B?NWM5QVZuOVlVa3U1dEtkTG1SU2ZEYkJpZ05KWXJhQ1dEY3VPRjQ3d2pyb2NE?= =?utf-8?B?Sm5tUmFSMStya2FOcG14NTRIU0xTMUh0aGhjaGZ6c1BDQTdtbjdvU0RhbE41?= =?utf-8?B?SVJ4K3FmMERqTGRmb2xWVTRyTi9TYWQyanFQYnZqZUxGRGFXVEIxa2RLeUNJ?= =?utf-8?B?dkZ3cGI3K2o2bDBWc0djbm05RDhZUmx1czY0QnN6YThHTDVjUis1YzdDQjJB?= =?utf-8?B?MExSV2p0ODlaT2FaMTVscENhY1JUb2ZEWHp1Z1NWNndlQTlHd0pRV2RrNS9J?= =?utf-8?B?UmszWTBlSVBKVnBDa2N2L3JqV2o0aHcwbk1XVzVzK0lJZEllQ01VWmNENXFT?= =?utf-8?B?MzBTYmovVkVzVXZGRUdkeG0vWkpuRGFONi9hT3JYVnVwcEl6aUNzSktWSzBl?= =?utf-8?B?VzVqenMxUXFwYXJBNGxhenIzWktVTGZReDluWExFSWFPR2JLVlRiQVI3L3FC?= =?utf-8?B?bnRNUEhyekxsNUJGamszN1BHL210M1RSbUhWVndvR0ZTN3hhMkhYRWEzcGF2?= =?utf-8?B?bUk2eUxQUFo1UFJJLzMxd1hiRzU4K3Q2RTlwcWhwbDNmWG9CWWpmM01JdGV6?= =?utf-8?B?WldPYXY1Y1Vya0RkZm5vZGNiK1U5eXhaYVRoWnpBOUluMGo3V1J5K3NZZHNB?= =?utf-8?B?VHRHU1hpbDA5Z21PcDB3aW4yeVBvb1psMTNZOUxsTWE1UlVIdCtnUFNVR0RJ?= =?utf-8?B?YlZKejEzOHlZQUYzbG1ybUo4WXAyRCtBd2szWlZjV3AvQ0tOVjc1WHRYQ0p6?= =?utf-8?B?M3VxbTR2Q2FYRkt0UXJBMlUxN3FUeTFWYjVLMG9qcXdBL2FXM3lmZmFtc2NF?= =?utf-8?B?bU5PNlFsM3UxT3NiVXByb2craDc3bWlUZEh4NFo3MGErYlJWODJoZU1hcjV5?= =?utf-8?B?L1ZuOTdOM3ZRNnFONmVzbE1MdzVhOVJ4MGZFUm9Rd0UrekVXMzhjdjdNTThX?= =?utf-8?B?a3BUSkNIZUZncnpXZjgwcXZEa3RjM0dmNUlVNXdPYnY5RkNZN3hQS1MwcmI2?= =?utf-8?B?Y0NONUpLQ3BqSTlPNDJTWEp1SHJUSEZzQzV1dXNhVlVBL0tpcHdTY0NnMWxj?= =?utf-8?B?NmxGUHFocUFVRFhzS3p3cTlPd2NFeVhBbmZUcklaTEkwN3V5VDZIWHFEK3M4?= =?utf-8?B?SlRiY0FCSWt5R0lWV3VydC9ZYVpZVEplVXdRYlFLQ1h2WjQ0VVQ3NFJLaXFy?= =?utf-8?B?V25kOGs3R2xhZkdZS3poU0ltZjl6cG11WWQ5bittdWFJaVViazllZllmVEt6?= =?utf-8?B?RDVmaWxXc2RUUHp3YkE5L0NUY2RGTjRkK0pXZ1ZRNXM3dmhPMnZoQlB2RTBB?= =?utf-8?B?b2Q0d2hyVVBBWVYrcStjZ0FObG11enlKMWtpcHR0WDQzRUdVTXc5Y3E5cGRR?= =?utf-8?B?TUhtYkEyMnNITlpHMVBLRzZkYkV6NVVQMTlkQ3ZjbTJRcnhCYUZNVlVuMGlW?= =?utf-8?B?U1BOVUcxQWZONHFENXovN1hCSGZ3QWJVOHVmc0ZGSmtWdlJUdG9KS042dTJ3?= =?utf-8?B?bVVrUFBNSHRuU1lFVXo5Q1VwRUVtc1MwbG5lM1pKZldRcUI5MUhVNDJMbUNz?= =?utf-8?B?Sk14ajd5R1FRWXlySXlIYVZBbmFlZXhJdGhyNFIrd2JYWDROM1Bpb2ZJL3BB?= =?utf-8?B?K3locUNqb3psaE1CTEQ1aGt6L2Z0VkxEVWRCeUJLVjJkS1d0dEdqck9vMWtq?= =?utf-8?B?bVVrZWVkZTh2MGc0R2s3b2hFT2xRVHpuRisrclVjdTA2SzE1KzA3T2ZiNEUy?= =?utf-8?B?emJrR0phcG5yVlJGQWNTNkl2YlY2a0pucjNlaURjSEd0RHUxNGo1cUxiQkxt?= =?utf-8?B?Ti9QeWJOVzhYUmJLdDNKY0RJVk5LS281cHUyTkl4azRFdUFtVnF2MXE1WVY0?= =?utf-8?Q?poBFOjZRE37CASa8=3D?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CO1PR11MB4929.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 71791c25-dc7e-4e27-f16b-08da21508ca3 X-MS-Exchange-CrossTenant-originalarrivaltime: 18 Apr 2022 15:31:46.5895 (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: wLEZpTfdksE3epfqRnPNUl5WGXiBF2FJeOupm46etF4HgtYjV465bvpRqVqAI0hOkFAVWiLJ2f5OQSdxdN8CwVPrZa7MnW3jTI2lB3NU5xQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR11MB1668 Return-Path: michael.d.kinney@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGksDQoNCkRpZCB5b3UgZXZhbHVhdGUgdGhlIHVzZSBvZiB0aGUgZm9sbG93aW5nIFBDRCB0byBt YWtlIGFuIFNFQyB2ZXJzaW9uPw0KDQogICMjIEVuYWJsZS9EaXNhYmxlIHRoZSBmYW1pbGllcyBh bmQgaW5kaXZpZHVhbCBzZXJ2aWNlcyBwcm9kdWNlZCBieSB0aGUNCiAgIyAgRURLIElJIENyeXB0 byBQcm90b2NvbHMvUFBJcy4gIFRoZSBkZWZhdWx0IGlzIGFsbCBzZXJ2aWNlcyBkaXNhYmxlZC4N CiAgIyAgVGhpcyBTdHJ1Y3R1cmVkIFBDRCBpcyBhc3NvY2lhdGVkIHdpdGggUENEX0NSWVBUT19T RVJWSUNFX0ZBTUlMWV9FTkFCTEUNCiAgIyAgc3RydWN0dXJlIHRoYXQgaXMgZGVmaW5lZCBpbiBJ bmNsdWRlL1BjZC9QY2RDcnlwdG9TZXJ2aWNlRmFtaWx5RW5hYmxlLmguDQogICMgQFByb21wdCBF bmFibGUvRGlzYWJsZSBFREsgSUkgQ3J5cHRvIFByb3RvY29sL1BQSSBzZXJ2aWNlcw0KICBnRWZp Q3J5cHRvUGtnVG9rZW5TcGFjZUd1aWQuUGNkQ3J5cHRvU2VydmljZUZhbWlseUVuYWJsZXx7MHgw MH18UENEX0NSWVBUT19TRVJWSUNFX0ZBTUlMWV9FTkFCTEV8MHgwMDAwMDAwMiB7DQogICAgPFBh Y2thZ2VzPg0KICAgICAgQ3J5cHRvUGtnL0NyeXB0b1BrZy5kZWMNCiAgICA8SGVhZGVyRmlsZXM+ DQogICAgICBQY2QvUGNkQ3J5cHRvU2VydmljZUZhbWlseUVuYWJsZS5oDQogIH0NCg0KDQpDcnlw dG9Qa2cuZHNjIGhhcyBkaWZmZXJlbnQgUENEIHNldHRpbmdzIGZvciBkaWZmZXJlbnQgRlcgcGhh c2VzIHRvIGNvbmZpZ3VyZQ0Kb25seSB0aGUgY3J5cHRvIHNlcnZpY2VzIHJlcXVpcmVkIGluIGVh Y2ggcGhhc2UuICBZb3UgY2FuIGV4dGVuZCBmb3IgU0VDLiBIZXJlDQppcyB0aGUgc2V0dGluZyBm b3IgdGhlIG1pbmltdW0gZm9yIFBFSSBwaGFzZS4NCg0KIWlmICQoQ1JZUFRPX1NFUlZJQ0VTKSA9 PSBNSU5fUEVJDQogIGdFZmlDcnlwdG9Qa2dUb2tlblNwYWNlR3VpZC5QY2RDcnlwdG9TZXJ2aWNl RmFtaWx5RW5hYmxlLkhtYWNTaGEyNTYuRmFtaWx5ICAgICAgICAgICAgICAgfCBQQ0RfQ1JZUFRP X1NFUlZJQ0VfRU5BQkxFX0ZBTUlMWQ0KICBnRWZpQ3J5cHRvUGtnVG9rZW5TcGFjZUd1aWQuUGNk Q3J5cHRvU2VydmljZUZhbWlseUVuYWJsZS5TaGExLkZhbWlseSAgICAgICAgICAgICAgICAgICAg IHwgUENEX0NSWVBUT19TRVJWSUNFX0VOQUJMRV9GQU1JTFkNCiAgZ0VmaUNyeXB0b1BrZ1Rva2Vu U3BhY2VHdWlkLlBjZENyeXB0b1NlcnZpY2VGYW1pbHlFbmFibGUuU2hhMjU2LkZhbWlseSAgICAg ICAgICAgICAgICAgICB8IFBDRF9DUllQVE9fU0VSVklDRV9FTkFCTEVfRkFNSUxZDQogIGdFZmlD cnlwdG9Qa2dUb2tlblNwYWNlR3VpZC5QY2RDcnlwdG9TZXJ2aWNlRmFtaWx5RW5hYmxlLlNoYTM4 NC5GYW1pbHkgICAgICAgICAgICAgICAgICAgfCBQQ0RfQ1JZUFRPX1NFUlZJQ0VfRU5BQkxFX0ZB TUlMWQ0KICBnRWZpQ3J5cHRvUGtnVG9rZW5TcGFjZUd1aWQuUGNkQ3J5cHRvU2VydmljZUZhbWls eUVuYWJsZS5TaGE1MTIuRmFtaWx5ICAgICAgICAgICAgICAgICAgIHwgUENEX0NSWVBUT19TRVJW SUNFX0VOQUJMRV9GQU1JTFkNCiAgZ0VmaUNyeXB0b1BrZ1Rva2VuU3BhY2VHdWlkLlBjZENyeXB0 b1NlcnZpY2VGYW1pbHlFbmFibGUuU20zLkZhbWlseSAgICAgICAgICAgICAgICAgICAgICB8IFBD RF9DUllQVE9fU0VSVklDRV9FTkFCTEVfRkFNSUxZDQogIGdFZmlDcnlwdG9Qa2dUb2tlblNwYWNl R3VpZC5QY2RDcnlwdG9TZXJ2aWNlRmFtaWx5RW5hYmxlLlJzYS5TZXJ2aWNlcy5Qa2NzMVZlcmlm eSAgICAgICAgfCBUUlVFDQogIGdFZmlDcnlwdG9Qa2dUb2tlblNwYWNlR3VpZC5QY2RDcnlwdG9T ZXJ2aWNlRmFtaWx5RW5hYmxlLlJzYS5TZXJ2aWNlcy5OZXcgICAgICAgICAgICAgICAgfCBUUlVF DQogIGdFZmlDcnlwdG9Qa2dUb2tlblNwYWNlR3VpZC5QY2RDcnlwdG9TZXJ2aWNlRmFtaWx5RW5h YmxlLlJzYS5TZXJ2aWNlcy5GcmVlICAgICAgICAgICAgICAgfCBUUlVFDQogIGdFZmlDcnlwdG9Q a2dUb2tlblNwYWNlR3VpZC5QY2RDcnlwdG9TZXJ2aWNlRmFtaWx5RW5hYmxlLlJzYS5TZXJ2aWNl cy5TZXRLZXkgICAgICAgICAgICAgfCBUUlVFDQogIGdFZmlDcnlwdG9Qa2dUb2tlblNwYWNlR3Vp ZC5QY2RDcnlwdG9TZXJ2aWNlRmFtaWx5RW5hYmxlLlBrY3MuU2VydmljZXMuUGtjczVIYXNoUGFz c3dvcmQgfCBUUlVFDQohZW5kaWYNCg0KVGhlIGNvbXBsZXRlIHNldCBvZiBzZXR0aW5ncyBpcyBp c24gdGhlIFBDRF9DUllQVE9fU0VSVklDRV9GQU1JTFlfRU5BQkxFIHN0cnVjdHVyZToNCg0KCWh0 dHBzOi8vZ2l0aHViLmNvbS90aWFub2NvcmUvZWRrMi9ibG9iL21hc3Rlci9DcnlwdG9Qa2cvSW5j bHVkZS9QY2QvUGNkQ3J5cHRvU2VydmljZUZhbWlseUVuYWJsZS5oDQoNCk1pa2UNCg0KPiAtLS0t LU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbyA8ZGV2 ZWxAZWRrMi5ncm91cHMuaW8+IE9uIEJlaGFsZiBPZiBNaW4gWHUNCj4gU2VudDogU3VuZGF5LCBB cHJpbCAxNywgMjAyMiA1OjAwIFBNDQo+IFRvOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbw0KPiBDYzog WHUsIE1pbiBNIDxtaW4ubS54dUBpbnRlbC5jb20+OyBZYW8sIEppZXdlbiA8amlld2VuLnlhb0Bp bnRlbC5jb20+OyBXYW5nLCBKaWFuIEogPGppYW4uai53YW5nQGludGVsLmNvbT47IEx1LCBYaWFv eXUxDQo+IDx4aWFveXUxLmx1QGludGVsLmNvbT47IEppYW5nLCBHdW9taW4gPGd1b21pbi5qaWFu Z0BpbnRlbC5jb20+OyBHZXJkIEhvZmZtYW5uIDxrcmF4ZWxAcmVkaGF0LmNvbT4NCj4gU3ViamVj dDogW2VkazItZGV2ZWxdIFtQQVRDSCBWMyAyLzldIENyeXB0b1BrZzogQWRkIFNlY0NyeXB0TGli DQo+IA0KPiBSRkM6IGh0dHBzOi8vYnVnemlsbGEudGlhbm9jb3JlLm9yZy9zaG93X2J1Zy5jZ2k/ aWQ9Mzg1Mw0KPiANCj4gVGhpcyBpcyB0aGUgQ3J5cHRvZ3JhcGhpYyBsaWJyYXJ5IGluc3RhbmNl IGZvciBTRUMuIFRoZSBtb3RpdmF0aW9uIG9mDQo+IHRoaXMgbGlicmFyeSBpcyB0byBzdXBwb3J0 IFNIQTM4NCBpbiBTRUMgcGhhc2UgZm9yIFRkIGd1ZXN0LiBTbyBvbmx5DQo+IEhhc2gvQ3J5cHRT aGE1MTIuYyBpcyBpbmNsdWRlZCB3aGljaCBzdXBwb3J0cyBTSEEzODQgYW5kIFNIQTUxMi4gT3Ro ZXINCj4gY3J5cHRvZ3JhcGhpY3MgYXJlIGFkZGVkIHdpdGggdGhlIG51bGwgdmVyc2lvbiwgc3Vj aCBhcyBDcnlwdE1kNU51bGwuYy4NCj4gDQo+IENjOiBKaWV3ZW4gWWFvIDxqaWV3ZW4ueWFvQGlu dGVsLmNvbT4NCj4gQ2M6IEppYW4gSiBXYW5nIDxqaWFuLmoud2FuZ0BpbnRlbC5jb20+DQo+IENj OiBYaWFveXUgTHUgPHhpYW95dTEubHVAaW50ZWwuY29tPg0KPiBDYzogR3VvbWluIEppYW5nIDxn dW9taW4uamlhbmdAaW50ZWwuY29tPg0KPiBDYzogR2VyZCBIb2ZmbWFubiA8a3JheGVsQHJlZGhh dC5jb20+DQo+IFNpZ25lZC1vZmYtYnk6IE1pbiBYdSA8bWluLm0ueHVAaW50ZWwuY29tPg0KPiAt LS0NCj4gIENyeXB0b1BrZy9DcnlwdG9Qa2cuZHNjICAgICAgICAgICAgICAgICAgICAgICB8ICAg NCArDQo+ICAuLi4vTGlicmFyeS9CYXNlQ3J5cHRMaWIvSGFzaC9DcnlwdE1kNU51bGwuYyAgfCAx NjMgKysrKysrKysrKysrKysrKysNCj4gIC4uLi9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9IYXNoL0Ny eXB0U2hhMU51bGwuYyB8IDE2NiArKysrKysrKysrKysrKysrKysNCj4gIC4uLi9CYXNlQ3J5cHRM aWIvSGFzaC9DcnlwdFNoYTI1Nk51bGwuYyAgICAgICB8IDE2MiArKysrKysrKysrKysrKysrKw0K PiAgLi4uL0xpYnJhcnkvQmFzZUNyeXB0TGliL0hhc2gvQ3J5cHRTbTNOdWxsLmMgIHwgMTY0ICsr KysrKysrKysrKysrKysrDQo+ICAuLi4vQmFzZUNyeXB0TGliL1BrL0NyeXB0UGtjczdWZXJpZnlF a3VOdWxsLmMgfCAxNTIgKysrKysrKysrKysrKysrKw0KPiAgLi4uL0Jhc2VDcnlwdExpYi9Qay9D cnlwdFJzYUJhc2ljTnVsbC5jICAgICAgIHwgMTIxICsrKysrKysrKysrKysNCj4gIC4uLi9MaWJy YXJ5L0Jhc2VDcnlwdExpYi9TZWNDcnlwdExpYi5pbmYgICAgICB8ICA5MSArKysrKysrKysrDQo+ ICA4IGZpbGVzIGNoYW5nZWQsIDEwMjMgaW5zZXJ0aW9ucygrKQ0KPiAgY3JlYXRlIG1vZGUgMTAw NjQ0IENyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9IYXNoL0NyeXB0TWQ1TnVsbC5jDQo+ ICBjcmVhdGUgbW9kZSAxMDA2NDQgQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL0hhc2gv Q3J5cHRTaGExTnVsbC5jDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgQ3J5cHRvUGtnL0xpYnJhcnkv QmFzZUNyeXB0TGliL0hhc2gvQ3J5cHRTaGEyNTZOdWxsLmMNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0 NCBDcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWIvSGFzaC9DcnlwdFNtM051bGwuYw0KPiAg Y3JlYXRlIG1vZGUgMTAwNjQ0IENyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9Qay9Dcnlw dFBrY3M3VmVyaWZ5RWt1TnVsbC5jDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgQ3J5cHRvUGtnL0xp YnJhcnkvQmFzZUNyeXB0TGliL1BrL0NyeXB0UnNhQmFzaWNOdWxsLmMNCj4gIGNyZWF0ZSBtb2Rl IDEwMDY0NCBDcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWIvU2VjQ3J5cHRMaWIuaW5mDQo+ IA0KPiBkaWZmIC0tZ2l0IGEvQ3J5cHRvUGtnL0NyeXB0b1BrZy5kc2MgYi9DcnlwdG9Qa2cvQ3J5 cHRvUGtnLmRzYw0KPiBpbmRleCAwYWE3MmVkODc4NDYuLmI4MTRlOTYxNjQ1NCAxMDA2NDQNCj4g LS0tIGEvQ3J5cHRvUGtnL0NyeXB0b1BrZy5kc2MNCj4gKysrIGIvQ3J5cHRvUGtnL0NyeXB0b1Br Zy5kc2MNCj4gQEAgLTEwOSw2ICsxMDksOSBAQA0KPiAgW0xpYnJhcnlDbGFzc2VzLkFSTV0NCj4g ICAgQXJtU29mdEZsb2F0TGlifEFybVBrZy9MaWJyYXJ5L0FybVNvZnRGbG9hdExpYi9Bcm1Tb2Z0 RmxvYXRMaWIuaW5mDQo+IA0KPiArW0xpYnJhcnlDbGFzc2VzLmNvbW1vbi5TRUNdDQo+ICsgIEJh c2VDcnlwdExpYnxDcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWIvU2VjQ3J5cHRMaWIuaW5m DQo+ICsNCj4gIFtMaWJyYXJ5Q2xhc3Nlcy5jb21tb24uUEVJTV0NCj4gICAgUGNkTGlifE1kZVBr Zy9MaWJyYXJ5L1BlaVBjZExpYi9QZWlQY2RMaWIuaW5mDQo+ICAgIFJlcG9ydFN0YXR1c0NvZGVM aWJ8TWRlTW9kdWxlUGtnL0xpYnJhcnkvUGVpUmVwb3J0U3RhdHVzQ29kZUxpYi9QZWlSZXBvcnRT dGF0dXNDb2RlTGliLmluZg0KPiBAQCAtMjM2LDYgKzIzOSw3IEBADQo+ICAhaWYgJChDUllQVE9f U0VSVklDRVMpID09IFBBQ0tBR0UNCj4gIFtDb21wb25lbnRzXQ0KPiAgICBDcnlwdG9Qa2cvTGli cmFyeS9CYXNlQ3J5cHRMaWIvQmFzZUNyeXB0TGliLmluZg0KPiArICBDcnlwdG9Qa2cvTGlicmFy eS9CYXNlQ3J5cHRMaWIvU2VjQ3J5cHRMaWIuaW5mDQo+ICAgIENyeXB0b1BrZy9MaWJyYXJ5L0Jh c2VDcnlwdExpYi9QZWlDcnlwdExpYi5pbmYNCj4gICAgQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNy eXB0TGliL1NtbUNyeXB0TGliLmluZg0KPiAgICBDcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRM aWIvUnVudGltZUNyeXB0TGliLmluZg0KPiBkaWZmIC0tZ2l0IGEvQ3J5cHRvUGtnL0xpYnJhcnkv QmFzZUNyeXB0TGliL0hhc2gvQ3J5cHRNZDVOdWxsLmMgYi9DcnlwdG9Qa2cvTGlicmFyeS9CYXNl Q3J5cHRMaWIvSGFzaC9DcnlwdE1kNU51bGwuYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBp bmRleCAwMDAwMDAwMDAwMDAuLjg5M2EyMzAyYTZkZQ0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBi L0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9IYXNoL0NyeXB0TWQ1TnVsbC5jDQo+IEBA IC0wLDAgKzEsMTYzIEBADQo+ICsvKiogQGZpbGUNCj4gKw0KPiArTUQ1IERpZ2VzdCBXcmFwcGVy IE51bGwgSW1wbGVtZW50YXRpb24uDQo+ICsNCj4gK0NvcHlyaWdodCAoYykgTWljcm9zb2Z0IENv cnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiArU1BEWC1MaWNlbnNlLUlkZW50aWZp ZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gKw0KPiArKiovDQo+ICsNCj4gKyNpbmNsdWRlICJJ bnRlcm5hbENyeXB0TGliLmgiDQo+ICsNCj4gKy8qKg0KPiArICBSZXRyaWV2ZXMgdGhlIHNpemUs IGluIGJ5dGVzLCBvZiB0aGUgY29udGV4dCBidWZmZXIgcmVxdWlyZWQgZm9yIE1ENSBoYXNoIG9w ZXJhdGlvbnMuDQo+ICsNCj4gKyAgQHJldHVybiAgVGhlIHNpemUsIGluIGJ5dGVzLCBvZiB0aGUg Y29udGV4dCBidWZmZXIgcmVxdWlyZWQgZm9yIE1ENSBoYXNoIG9wZXJhdGlvbnMuDQo+ICsNCj4g KyoqLw0KPiArVUlOVE4NCj4gK0VGSUFQSQ0KPiArTWQ1R2V0Q29udGV4dFNpemUgKA0KPiArICBW T0lEDQo+ICsgICkNCj4gK3sNCj4gKyAgQVNTRVJUIChGQUxTRSk7DQo+ICsgIHJldHVybiAwOw0K PiArfQ0KPiArDQo+ICsvKioNCj4gKyAgSW5pdGlhbGl6ZXMgdXNlci1zdXBwbGllZCBtZW1vcnkg cG9pbnRlZCBieSBNZDVDb250ZXh0IGFzIE1ENSBoYXNoIGNvbnRleHQgZm9yDQo+ICsgIHN1YnNl cXVlbnQgdXNlLg0KPiArDQo+ICsgIElmIE1kNUNvbnRleHQgaXMgTlVMTCwgdGhlbiByZXR1cm4g RkFMU0UuDQo+ICsNCj4gKyAgQHBhcmFtW291dF0gIE1kNUNvbnRleHQgIFBvaW50ZXIgdG8gTUQ1 IGNvbnRleHQgYmVpbmcgaW5pdGlhbGl6ZWQuDQo+ICsNCj4gKyAgQHJldHZhbCBUUlVFICAgTUQ1 IGNvbnRleHQgaW5pdGlhbGl6YXRpb24gc3VjY2VlZGVkLg0KPiArICBAcmV0dmFsIEZBTFNFICBN RDUgY29udGV4dCBpbml0aWFsaXphdGlvbiBmYWlsZWQuDQo+ICsNCj4gKyoqLw0KPiArQk9PTEVB Tg0KPiArRUZJQVBJDQo+ICtNZDVJbml0ICgNCj4gKyAgT1VUICBWT0lEICAqTWQ1Q29udGV4dA0K PiArICApDQo+ICt7DQo+ICsgIEFTU0VSVCAoRkFMU0UpOw0KPiArICByZXR1cm4gRkFMU0U7DQo+ ICt9DQo+ICsNCj4gKy8qKg0KPiArICBNYWtlcyBhIGNvcHkgb2YgYW4gZXhpc3RpbmcgTUQ1IGNv bnRleHQuDQo+ICsNCj4gKyAgSWYgTWQ1Q29udGV4dCBpcyBOVUxMLCB0aGVuIHJldHVybiBGQUxT RS4NCj4gKyAgSWYgTmV3TWQ1Q29udGV4dCBpcyBOVUxMLCB0aGVuIHJldHVybiBGQUxTRS4NCj4g Kw0KPiArICBAcGFyYW1baW5dICBNZDVDb250ZXh0ICAgICBQb2ludGVyIHRvIE1ENSBjb250ZXh0 IGJlaW5nIGNvcGllZC4NCj4gKyAgQHBhcmFtW291dF0gTmV3TWQ1Q29udGV4dCAgUG9pbnRlciB0 byBuZXcgTUQ1IGNvbnRleHQuDQo+ICsNCj4gKyAgQHJldHZhbCBUUlVFICAgTUQ1IGNvbnRleHQg Y29weSBzdWNjZWVkZWQuDQo+ICsgIEByZXR2YWwgRkFMU0UgIE1ENSBjb250ZXh0IGNvcHkgZmFp bGVkLg0KPiArDQo+ICsqKi8NCj4gK0JPT0xFQU4NCj4gK0VGSUFQSQ0KPiArTWQ1RHVwbGljYXRl ICgNCj4gKyAgSU4gICBDT05TVCBWT0lEICAqTWQ1Q29udGV4dCwNCj4gKyAgT1VUICBWT0lEICAg ICAgICAqTmV3TWQ1Q29udGV4dA0KPiArICApDQo+ICt7DQo+ICsgIEFTU0VSVCAoRkFMU0UpOw0K PiArICByZXR1cm4gRkFMU0U7DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBEaWdlc3RzIHRoZSBp bnB1dCBkYXRhIGFuZCB1cGRhdGVzIE1ENSBjb250ZXh0Lg0KPiArDQo+ICsgIFRoaXMgZnVuY3Rp b24gcGVyZm9ybXMgTUQ1IGRpZ2VzdCBvbiBhIGRhdGEgYnVmZmVyIG9mIHRoZSBzcGVjaWZpZWQg c2l6ZS4NCj4gKyAgSXQgY2FuIGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyB0byBjb21wdXRlIHRo ZSBkaWdlc3Qgb2YgbG9uZyBvciBkaXNjb250aW51b3VzIGRhdGEgc3RyZWFtcy4NCj4gKyAgTUQ1 IGNvbnRleHQgc2hvdWxkIGJlIGFscmVhZHkgY29ycmVjdGx5IGludGlhbGl6ZWQgYnkgTWQ1SW5p dCgpLCBhbmQgc2hvdWxkIG5vdCBiZSBmaW5hbGl6ZWQNCj4gKyAgYnkgTWQ1RmluYWwoKS4gQmVo YXZpb3Igd2l0aCBpbnZhbGlkIGNvbnRleHQgaXMgdW5kZWZpbmVkLg0KPiArDQo+ICsgIElmIE1k NUNvbnRleHQgaXMgTlVMTCwgdGhlbiByZXR1cm4gRkFMU0UuDQo+ICsNCj4gKyAgQHBhcmFtW2lu LCBvdXRdICBNZDVDb250ZXh0ICBQb2ludGVyIHRvIHRoZSBNRDUgY29udGV4dC4NCj4gKyAgQHBh cmFtW2luXSAgICAgICBEYXRhICAgICAgICBQb2ludGVyIHRvIHRoZSBidWZmZXIgY29udGFpbmlu ZyB0aGUgZGF0YSB0byBiZSBoYXNoZWQuDQo+ICsgIEBwYXJhbVtpbl0gICAgICAgRGF0YVNpemUg ICAgU2l6ZSBvZiBEYXRhIGJ1ZmZlciBpbiBieXRlcy4NCj4gKw0KPiArICBAcmV0dmFsIFRSVUUg ICBNRDUgZGF0YSBkaWdlc3Qgc3VjY2VlZGVkLg0KPiArICBAcmV0dmFsIEZBTFNFICBNRDUgZGF0 YSBkaWdlc3QgZmFpbGVkLg0KPiArDQo+ICsqKi8NCj4gK0JPT0xFQU4NCj4gK0VGSUFQSQ0KPiAr TWQ1VXBkYXRlICgNCj4gKyAgSU4gT1VUICBWT0lEICAgICAgICAqTWQ1Q29udGV4dCwNCj4gKyAg SU4gICAgICBDT05TVCBWT0lEICAqRGF0YSwNCj4gKyAgSU4gICAgICBVSU5UTiAgICAgICBEYXRh U2l6ZQ0KPiArICApDQo+ICt7DQo+ICsgIEFTU0VSVCAoRkFMU0UpOw0KPiArICByZXR1cm4gRkFM U0U7DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBDb21wbGV0ZXMgY29tcHV0YXRpb24gb2YgdGhl IE1ENSBkaWdlc3QgdmFsdWUuDQo+ICsNCj4gKyAgVGhpcyBmdW5jdGlvbiBjb21wbGV0ZXMgTUQ1 IGhhc2ggY29tcHV0YXRpb24gYW5kIHJldHJpZXZlcyB0aGUgZGlnZXN0IHZhbHVlIGludG8NCj4g KyAgdGhlIHNwZWNpZmllZCBtZW1vcnkuIEFmdGVyIHRoaXMgZnVuY3Rpb24gaGFzIGJlZW4gY2Fs bGVkLCB0aGUgTUQ1IGNvbnRleHQgY2Fubm90DQo+ICsgIGJlIHVzZWQgYWdhaW4uDQo+ICsgIE1E NSBjb250ZXh0IHNob3VsZCBiZSBhbHJlYWR5IGNvcnJlY3RseSBpbnRpYWxpemVkIGJ5IE1kNUlu aXQoKSwgYW5kIHNob3VsZCBub3QgYmUNCj4gKyAgZmluYWxpemVkIGJ5IE1kNUZpbmFsKCkuIEJl aGF2aW9yIHdpdGggaW52YWxpZCBNRDUgY29udGV4dCBpcyB1bmRlZmluZWQuDQo+ICsNCj4gKyAg SWYgTWQ1Q29udGV4dCBpcyBOVUxMLCB0aGVuIHJldHVybiBGQUxTRS4NCj4gKyAgSWYgSGFzaFZh bHVlIGlzIE5VTEwsIHRoZW4gcmV0dXJuIEZBTFNFLg0KPiArDQo+ICsgIEBwYXJhbVtpbiwgb3V0 XSAgTWQ1Q29udGV4dCAgUG9pbnRlciB0byB0aGUgTUQ1IGNvbnRleHQuDQo+ICsgIEBwYXJhbVtv dXRdICAgICAgSGFzaFZhbHVlICAgUG9pbnRlciB0byBhIGJ1ZmZlciB0aGF0IHJlY2VpdmVzIHRo ZSBNRDUgZGlnZXN0DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgKDE2 IGJ5dGVzKS4NCj4gKw0KPiArICBAcmV0dmFsIFRSVUUgICBNRDUgZGlnZXN0IGNvbXB1dGF0aW9u IHN1Y2NlZWRlZC4NCj4gKyAgQHJldHZhbCBGQUxTRSAgTUQ1IGRpZ2VzdCBjb21wdXRhdGlvbiBm YWlsZWQuDQo+ICsNCj4gKyoqLw0KPiArQk9PTEVBTg0KPiArRUZJQVBJDQo+ICtNZDVGaW5hbCAo DQo+ICsgIElOIE9VVCAgVk9JRCAgICpNZDVDb250ZXh0LA0KPiArICBPVVQgICAgIFVJTlQ4ICAq SGFzaFZhbHVlDQo+ICsgICkNCj4gK3sNCj4gKyAgQVNTRVJUIChGQUxTRSk7DQo+ICsgIHJldHVy biBGQUxTRTsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICtDb21wdXRlcyB0aGUgTUQ1IG1lc3NhZ2Ug ZGlnZXN0IG9mIGEgaW5wdXQgZGF0YSBidWZmZXIuDQo+ICsNCj4gK1RoaXMgZnVuY3Rpb24gcGVy Zm9ybXMgdGhlIE1ENSBtZXNzYWdlIGRpZ2VzdCBvZiBhIGdpdmVuIGRhdGEgYnVmZmVyLCBhbmQg cGxhY2VzDQo+ICt0aGUgZGlnZXN0IHZhbHVlIGludG8gdGhlIHNwZWNpZmllZCBtZW1vcnkuDQo+ ICsNCj4gK0lmIHRoaXMgaW50ZXJmYWNlIGlzIG5vdCBzdXBwb3J0ZWQsIHRoZW4gcmV0dXJuIEZB TFNFLg0KPiArDQo+ICtAcGFyYW1baW5dICAgRGF0YSAgICAgICAgUG9pbnRlciB0byB0aGUgYnVm ZmVyIGNvbnRhaW5pbmcgdGhlIGRhdGEgdG8gYmUgaGFzaGVkLg0KPiArQHBhcmFtW2luXSAgIERh dGFTaXplICAgIFNpemUgb2YgRGF0YSBidWZmZXIgaW4gYnl0ZXMuDQo+ICtAcGFyYW1bb3V0XSAg SGFzaFZhbHVlICAgUG9pbnRlciB0byBhIGJ1ZmZlciB0aGF0IHJlY2VpdmVzIHRoZSBNRDUgZGln ZXN0DQo+ICt2YWx1ZSAoMTYgYnl0ZXMpLg0KPiArDQo+ICtAcmV0dmFsIFRSVUUgICBNRDUgZGln ZXN0IGNvbXB1dGF0aW9uIHN1Y2NlZWRlZC4NCj4gK0ByZXR2YWwgRkFMU0UgIE1ENSBkaWdlc3Qg Y29tcHV0YXRpb24gZmFpbGVkLg0KPiArQHJldHZhbCBGQUxTRSAgVGhpcyBpbnRlcmZhY2UgaXMg bm90IHN1cHBvcnRlZC4NCj4gKw0KPiArKiovDQo+ICtCT09MRUFODQo+ICtFRklBUEkNCj4gK01k NUhhc2hBbGwgKA0KPiArICBJTiAgIENPTlNUIFZPSUQgICpEYXRhLA0KPiArICBJTiAgIFVJTlRO ICAgICAgIERhdGFTaXplLA0KPiArICBPVVQgIFVJTlQ4ICAgICAgICpIYXNoVmFsdWUNCj4gKyAg KQ0KPiArew0KPiArICBBU1NFUlQgKEZBTFNFKTsNCj4gKyAgcmV0dXJuIEZBTFNFOw0KPiArfQ0K PiBkaWZmIC0tZ2l0IGEvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL0hhc2gvQ3J5cHRT aGExTnVsbC5jIGIvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL0hhc2gvQ3J5cHRTaGEx TnVsbC5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwMC4uZDli NDYxMGFmMGUwDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvQ3J5cHRvUGtnL0xpYnJhcnkvQmFz ZUNyeXB0TGliL0hhc2gvQ3J5cHRTaGExTnVsbC5jDQo+IEBAIC0wLDAgKzEsMTY2IEBADQo+ICsv KiogQGZpbGUNCj4gKyAgU0hBLTEgRGlnZXN0IFdyYXBwZXIgTnVsbCBJbXBsZW1lbnRhdGlvbi4N Cj4gKw0KPiArQ29weXJpZ2h0IChjKSAyMDA5IC0gMjAxNiwgSW50ZWwgQ29ycG9yYXRpb24uIEFs bCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiArU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0y LUNsYXVzZS1QYXRlbnQNCj4gKw0KPiArKiovDQo+ICsNCj4gKyNpbmNsdWRlICJJbnRlcm5hbENy eXB0TGliLmgiDQo+ICsNCj4gKy8qKg0KPiArICBSZXRyaWV2ZXMgdGhlIHNpemUsIGluIGJ5dGVz LCBvZiB0aGUgY29udGV4dCBidWZmZXIgcmVxdWlyZWQgZm9yIFNIQS0xIGhhc2ggb3BlcmF0aW9u cy4NCj4gKw0KPiArICBAcmV0dXJuICBUaGUgc2l6ZSwgaW4gYnl0ZXMsIG9mIHRoZSBjb250ZXh0 IGJ1ZmZlciByZXF1aXJlZCBmb3IgU0hBLTEgaGFzaCBvcGVyYXRpb25zLg0KPiArDQo+ICsqKi8N Cj4gK1VJTlRODQo+ICtFRklBUEkNCj4gK1NoYTFHZXRDb250ZXh0U2l6ZSAoDQo+ICsgIFZPSUQN Cj4gKyAgKQ0KPiArew0KPiArICAvLw0KPiArICAvLyBSZXRyaWV2ZXMgU0hBIENvbnRleHQgU2l6 ZQ0KPiArICAvLw0KPiArICBBU1NFUlQgKEZBTFNFKTsNCj4gKyAgcmV0dXJuIDA7DQo+ICt9DQo+ ICsNCj4gKy8qKg0KPiArICBJbml0aWFsaXplcyB1c2VyLXN1cHBsaWVkIG1lbW9yeSBwb2ludGVk IGJ5IFNoYTFDb250ZXh0IGFzIFNIQS0xIGhhc2ggY29udGV4dCBmb3INCj4gKyAgc3Vic2VxdWVu dCB1c2UuDQo+ICsNCj4gKyAgSWYgU2hhMUNvbnRleHQgaXMgTlVMTCwgdGhlbiByZXR1cm4gRkFM U0UuDQo+ICsNCj4gKyAgQHBhcmFtW291dF0gIFNoYTFDb250ZXh0ICBQb2ludGVyIHRvIFNIQS0x IGNvbnRleHQgYmVpbmcgaW5pdGlhbGl6ZWQuDQo+ICsNCj4gKyAgQHJldHZhbCBUUlVFICAgU0hB LTEgY29udGV4dCBpbml0aWFsaXphdGlvbiBzdWNjZWVkZWQuDQo+ICsgIEByZXR2YWwgRkFMU0Ug IFNIQS0xIGNvbnRleHQgaW5pdGlhbGl6YXRpb24gZmFpbGVkLg0KPiArDQo+ICsqKi8NCj4gK0JP T0xFQU4NCj4gK0VGSUFQSQ0KPiArU2hhMUluaXQgKA0KPiArICBPVVQgIFZPSUQgICpTaGExQ29u dGV4dA0KPiArICApDQo+ICt7DQo+ICsgIEFTU0VSVCAoRkFMU0UpOw0KPiArICByZXR1cm4gRkFM U0U7DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBNYWtlcyBhIGNvcHkgb2YgYW4gZXhpc3Rpbmcg U0hBLTEgY29udGV4dC4NCj4gKw0KPiArICBJZiBTaGExQ29udGV4dCBpcyBOVUxMLCB0aGVuIHJl dHVybiBGQUxTRS4NCj4gKyAgSWYgTmV3U2hhMUNvbnRleHQgaXMgTlVMTCwgdGhlbiByZXR1cm4g RkFMU0UuDQo+ICsNCj4gKyAgQHBhcmFtW2luXSAgU2hhMUNvbnRleHQgICAgIFBvaW50ZXIgdG8g U0hBLTEgY29udGV4dCBiZWluZyBjb3BpZWQuDQo+ICsgIEBwYXJhbVtvdXRdIE5ld1NoYTFDb250 ZXh0ICBQb2ludGVyIHRvIG5ldyBTSEEtMSBjb250ZXh0Lg0KPiArDQo+ICsgIEByZXR2YWwgVFJV RSAgIFNIQS0xIGNvbnRleHQgY29weSBzdWNjZWVkZWQuDQo+ICsgIEByZXR2YWwgRkFMU0UgIFNI QS0xIGNvbnRleHQgY29weSBmYWlsZWQuDQo+ICsNCj4gKyoqLw0KPiArQk9PTEVBTg0KPiArRUZJ QVBJDQo+ICtTaGExRHVwbGljYXRlICgNCj4gKyAgSU4gICBDT05TVCBWT0lEICAqU2hhMUNvbnRl eHQsDQo+ICsgIE9VVCAgVk9JRCAgICAgICAgKk5ld1NoYTFDb250ZXh0DQo+ICsgICkNCj4gK3sN Cj4gKyAgQVNTRVJUIChGQUxTRSk7DQo+ICsNCj4gKyAgcmV0dXJuIEZBTFNFOw0KPiArfQ0KPiAr DQo+ICsvKioNCj4gKyAgRGlnZXN0cyB0aGUgaW5wdXQgZGF0YSBhbmQgdXBkYXRlcyBTSEEtMSBj b250ZXh0Lg0KPiArDQo+ICsgIFRoaXMgZnVuY3Rpb24gcGVyZm9ybXMgU0hBLTEgZGlnZXN0IG9u IGEgZGF0YSBidWZmZXIgb2YgdGhlIHNwZWNpZmllZCBzaXplLg0KPiArICBJdCBjYW4gYmUgY2Fs bGVkIG11bHRpcGxlIHRpbWVzIHRvIGNvbXB1dGUgdGhlIGRpZ2VzdCBvZiBsb25nIG9yIGRpc2Nv bnRpbnVvdXMgZGF0YSBzdHJlYW1zLg0KPiArICBTSEEtMSBjb250ZXh0IHNob3VsZCBiZSBhbHJl YWR5IGNvcnJlY3RseSBpbml0aWFsaXplZCBieSBTaGExSW5pdCgpLCBhbmQgc2hvdWxkIG5vdCBi ZSBmaW5hbGl6ZWQNCj4gKyAgYnkgU2hhMUZpbmFsKCkuIEJlaGF2aW9yIHdpdGggaW52YWxpZCBj b250ZXh0IGlzIHVuZGVmaW5lZC4NCj4gKw0KPiArICBJZiBTaGExQ29udGV4dCBpcyBOVUxMLCB0 aGVuIHJldHVybiBGQUxTRS4NCj4gKw0KPiArICBAcGFyYW1baW4sIG91dF0gIFNoYTFDb250ZXh0 ICBQb2ludGVyIHRvIHRoZSBTSEEtMSBjb250ZXh0Lg0KPiArICBAcGFyYW1baW5dICAgICAgIERh dGEgICAgICAgICBQb2ludGVyIHRvIHRoZSBidWZmZXIgY29udGFpbmluZyB0aGUgZGF0YSB0byBi ZSBoYXNoZWQuDQo+ICsgIEBwYXJhbVtpbl0gICAgICAgRGF0YVNpemUgICAgIFNpemUgb2YgRGF0 YSBidWZmZXIgaW4gYnl0ZXMuDQo+ICsNCj4gKyAgQHJldHZhbCBUUlVFICAgU0hBLTEgZGF0YSBk aWdlc3Qgc3VjY2VlZGVkLg0KPiArICBAcmV0dmFsIEZBTFNFICBTSEEtMSBkYXRhIGRpZ2VzdCBm YWlsZWQuDQo+ICsNCj4gKyoqLw0KPiArQk9PTEVBTg0KPiArRUZJQVBJDQo+ICtTaGExVXBkYXRl ICgNCj4gKyAgSU4gT1VUICBWT0lEICAgICAgICAqU2hhMUNvbnRleHQsDQo+ICsgIElOICAgICAg Q09OU1QgVk9JRCAgKkRhdGEsDQo+ICsgIElOICAgICAgVUlOVE4gICAgICAgRGF0YVNpemUNCj4g KyAgKQ0KPiArew0KPiArICBBU1NFUlQgKEZBTFNFKTsNCj4gKyAgcmV0dXJuIEZBTFNFOw0KPiAr fQ0KPiArDQo+ICsvKioNCj4gKyAgQ29tcGxldGVzIGNvbXB1dGF0aW9uIG9mIHRoZSBTSEEtMSBk aWdlc3QgdmFsdWUuDQo+ICsNCj4gKyAgVGhpcyBmdW5jdGlvbiBjb21wbGV0ZXMgU0hBLTEgaGFz aCBjb21wdXRhdGlvbiBhbmQgcmV0cmlldmVzIHRoZSBkaWdlc3QgdmFsdWUgaW50bw0KPiArICB0 aGUgc3BlY2lmaWVkIG1lbW9yeS4gQWZ0ZXIgdGhpcyBmdW5jdGlvbiBoYXMgYmVlbiBjYWxsZWQs IHRoZSBTSEEtMSBjb250ZXh0IGNhbm5vdA0KPiArICBiZSB1c2VkIGFnYWluLg0KPiArICBTSEEt MSBjb250ZXh0IHNob3VsZCBiZSBhbHJlYWR5IGNvcnJlY3RseSBpbml0aWFsaXplZCBieSBTaGEx SW5pdCgpLCBhbmQgc2hvdWxkIG5vdCBiZQ0KPiArICBmaW5hbGl6ZWQgYnkgU2hhMUZpbmFsKCku IEJlaGF2aW9yIHdpdGggaW52YWxpZCBTSEEtMSBjb250ZXh0IGlzIHVuZGVmaW5lZC4NCj4gKw0K PiArICBJZiBTaGExQ29udGV4dCBpcyBOVUxMLCB0aGVuIHJldHVybiBGQUxTRS4NCj4gKyAgSWYg SGFzaFZhbHVlIGlzIE5VTEwsIHRoZW4gcmV0dXJuIEZBTFNFLg0KPiArDQo+ICsgIEBwYXJhbVtp biwgb3V0XSAgU2hhMUNvbnRleHQgIFBvaW50ZXIgdG8gdGhlIFNIQS0xIGNvbnRleHQuDQo+ICsg IEBwYXJhbVtvdXRdICAgICAgSGFzaFZhbHVlICAgIFBvaW50ZXIgdG8gYSBidWZmZXIgdGhhdCBy ZWNlaXZlcyB0aGUgU0hBLTEgZGlnZXN0DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHZhbHVlICgyMCBieXRlcykuDQo+ICsNCj4gKyAgQHJldHZhbCBUUlVFICAgU0hBLTEgZGln ZXN0IGNvbXB1dGF0aW9uIHN1Y2NlZWRlZC4NCj4gKyAgQHJldHZhbCBGQUxTRSAgU0hBLTEgZGln ZXN0IGNvbXB1dGF0aW9uIGZhaWxlZC4NCj4gKw0KPiArKiovDQo+ICtCT09MRUFODQo+ICtFRklB UEkNCj4gK1NoYTFGaW5hbCAoDQo+ICsgIElOIE9VVCAgVk9JRCAgICpTaGExQ29udGV4dCwNCj4g KyAgT1VUICAgICBVSU5UOCAgKkhhc2hWYWx1ZQ0KPiArICApDQo+ICt7DQo+ICsgIEFTU0VSVCAo RkFMU0UpOw0KPiArICByZXR1cm4gRkFMU0U7DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBDb21w dXRlcyB0aGUgU0hBLTEgbWVzc2FnZSBkaWdlc3Qgb2YgYSBpbnB1dCBkYXRhIGJ1ZmZlci4NCj4g Kw0KPiArICBUaGlzIGZ1bmN0aW9uIHBlcmZvcm1zIHRoZSBTSEEtMSBtZXNzYWdlIGRpZ2VzdCBv ZiBhIGdpdmVuIGRhdGEgYnVmZmVyLCBhbmQgcGxhY2VzDQo+ICsgIHRoZSBkaWdlc3QgdmFsdWUg aW50byB0aGUgc3BlY2lmaWVkIG1lbW9yeS4NCj4gKw0KPiArICBJZiB0aGlzIGludGVyZmFjZSBp cyBub3Qgc3VwcG9ydGVkLCB0aGVuIHJldHVybiBGQUxTRS4NCj4gKw0KPiArICBAcGFyYW1baW5d ICAgRGF0YSAgICAgICAgUG9pbnRlciB0byB0aGUgYnVmZmVyIGNvbnRhaW5pbmcgdGhlIGRhdGEg dG8gYmUgaGFzaGVkLg0KPiArICBAcGFyYW1baW5dICAgRGF0YVNpemUgICAgU2l6ZSBvZiBEYXRh IGJ1ZmZlciBpbiBieXRlcy4NCj4gKyAgQHBhcmFtW291dF0gIEhhc2hWYWx1ZSAgIFBvaW50ZXIg dG8gYSBidWZmZXIgdGhhdCByZWNlaXZlcyB0aGUgU0hBLTEgZGlnZXN0DQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICB2YWx1ZSAoMjAgYnl0ZXMpLg0KPiArDQo+ICsgIEByZXR2YWwgVFJV RSAgIFNIQS0xIGRpZ2VzdCBjb21wdXRhdGlvbiBzdWNjZWVkZWQuDQo+ICsgIEByZXR2YWwgRkFM U0UgIFNIQS0xIGRpZ2VzdCBjb21wdXRhdGlvbiBmYWlsZWQuDQo+ICsgIEByZXR2YWwgRkFMU0Ug IFRoaXMgaW50ZXJmYWNlIGlzIG5vdCBzdXBwb3J0ZWQuDQo+ICsNCj4gKyoqLw0KPiArQk9PTEVB Tg0KPiArRUZJQVBJDQo+ICtTaGExSGFzaEFsbCAoDQo+ICsgIElOICAgQ09OU1QgVk9JRCAgKkRh dGEsDQo+ICsgIElOICAgVUlOVE4gICAgICAgRGF0YVNpemUsDQo+ICsgIE9VVCAgVUlOVDggICAg ICAgKkhhc2hWYWx1ZQ0KPiArICApDQo+ICt7DQo+ICsgIEFTU0VSVCAoRkFMU0UpOw0KPiArICBy ZXR1cm4gRkFMU0U7DQo+ICt9DQo+IGRpZmYgLS1naXQgYS9DcnlwdG9Qa2cvTGlicmFyeS9CYXNl Q3J5cHRMaWIvSGFzaC9DcnlwdFNoYTI1Nk51bGwuYyBiL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VD cnlwdExpYi9IYXNoL0NyeXB0U2hhMjU2TnVsbC5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ IGluZGV4IDAwMDAwMDAwMDAwMC4uY2Y5OTRlOGUwNjY0DQo+IC0tLSAvZGV2L251bGwNCj4gKysr IGIvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL0hhc2gvQ3J5cHRTaGEyNTZOdWxsLmMN Cj4gQEAgLTAsMCArMSwxNjIgQEANCj4gKy8qKiBAZmlsZQ0KPiArICBTSEEtMjU2IERpZ2VzdCBX cmFwcGVyIE51bGwgSW1wbGVtZW50YXRpb24uDQo+ICsNCj4gK0NvcHlyaWdodCAoYykgMjAwOSAt IDIwMTYsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gK1NQ RFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ICsNCj4gKyoqLw0K PiArDQo+ICsjaW5jbHVkZSAiSW50ZXJuYWxDcnlwdExpYi5oIg0KPiArDQo+ICsvKioNCj4gKyAg UmV0cmlldmVzIHRoZSBzaXplLCBpbiBieXRlcywgb2YgdGhlIGNvbnRleHQgYnVmZmVyIHJlcXVp cmVkIGZvciBTSEEtMjU2IGhhc2ggb3BlcmF0aW9ucy4NCj4gKw0KPiArICBAcmV0dXJuICBUaGUg c2l6ZSwgaW4gYnl0ZXMsIG9mIHRoZSBjb250ZXh0IGJ1ZmZlciByZXF1aXJlZCBmb3IgU0hBLTI1 NiBoYXNoIG9wZXJhdGlvbnMuDQo+ICsNCj4gKyoqLw0KPiArVUlOVE4NCj4gK0VGSUFQSQ0KPiAr U2hhMjU2R2V0Q29udGV4dFNpemUgKA0KPiArICBWT0lEDQo+ICsgICkNCj4gK3sNCj4gKyAgQVNT RVJUIChGQUxTRSk7DQo+ICsgIHJldHVybiAwOw0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgSW5p dGlhbGl6ZXMgdXNlci1zdXBwbGllZCBtZW1vcnkgcG9pbnRlZCBieSBTaGEyNTZDb250ZXh0IGFz IFNIQS0yNTYgaGFzaCBjb250ZXh0IGZvcg0KPiArICBzdWJzZXF1ZW50IHVzZS4NCj4gKw0KPiAr ICBJZiBTaGEyNTZDb250ZXh0IGlzIE5VTEwsIHRoZW4gcmV0dXJuIEZBTFNFLg0KPiArDQo+ICsg IEBwYXJhbVtvdXRdICBTaGEyNTZDb250ZXh0ICBQb2ludGVyIHRvIFNIQS0yNTYgY29udGV4dCBi ZWluZyBpbml0aWFsaXplZC4NCj4gKw0KPiArICBAcmV0dmFsIFRSVUUgICBTSEEtMjU2IGNvbnRl eHQgaW5pdGlhbGl6YXRpb24gc3VjY2VlZGVkLg0KPiArICBAcmV0dmFsIEZBTFNFICBTSEEtMjU2 IGNvbnRleHQgaW5pdGlhbGl6YXRpb24gZmFpbGVkLg0KPiArDQo+ICsqKi8NCj4gK0JPT0xFQU4N Cj4gK0VGSUFQSQ0KPiArU2hhMjU2SW5pdCAoDQo+ICsgIE9VVCAgVk9JRCAgKlNoYTI1NkNvbnRl eHQNCj4gKyAgKQ0KPiArew0KPiArICBBU1NFUlQgKEZBTFNFKTsNCj4gKyAgcmV0dXJuIEZBTFNF Ow0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgTWFrZXMgYSBjb3B5IG9mIGFuIGV4aXN0aW5nIFNI QS0yNTYgY29udGV4dC4NCj4gKw0KPiArICBJZiBTaGEyNTZDb250ZXh0IGlzIE5VTEwsIHRoZW4g cmV0dXJuIEZBTFNFLg0KPiArICBJZiBOZXdTaGEyNTZDb250ZXh0IGlzIE5VTEwsIHRoZW4gcmV0 dXJuIEZBTFNFLg0KPiArDQo+ICsgIEBwYXJhbVtpbl0gIFNoYTI1NkNvbnRleHQgICAgIFBvaW50 ZXIgdG8gU0hBLTI1NiBjb250ZXh0IGJlaW5nIGNvcGllZC4NCj4gKyAgQHBhcmFtW291dF0gTmV3 U2hhMjU2Q29udGV4dCAgUG9pbnRlciB0byBuZXcgU0hBLTI1NiBjb250ZXh0Lg0KPiArDQo+ICsg IEByZXR2YWwgVFJVRSAgIFNIQS0yNTYgY29udGV4dCBjb3B5IHN1Y2NlZWRlZC4NCj4gKyAgQHJl dHZhbCBGQUxTRSAgU0hBLTI1NiBjb250ZXh0IGNvcHkgZmFpbGVkLg0KPiArDQo+ICsqKi8NCj4g K0JPT0xFQU4NCj4gK0VGSUFQSQ0KPiArU2hhMjU2RHVwbGljYXRlICgNCj4gKyAgSU4gICBDT05T VCBWT0lEICAqU2hhMjU2Q29udGV4dCwNCj4gKyAgT1VUICBWT0lEICAgICAgICAqTmV3U2hhMjU2 Q29udGV4dA0KPiArICApDQo+ICt7DQo+ICsgIEFTU0VSVCAoRkFMU0UpOw0KPiArICByZXR1cm4g RkFMU0U7DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBEaWdlc3RzIHRoZSBpbnB1dCBkYXRhIGFu ZCB1cGRhdGVzIFNIQS0yNTYgY29udGV4dC4NCj4gKw0KPiArICBUaGlzIGZ1bmN0aW9uIHBlcmZv cm1zIFNIQS0yNTYgZGlnZXN0IG9uIGEgZGF0YSBidWZmZXIgb2YgdGhlIHNwZWNpZmllZCBzaXpl Lg0KPiArICBJdCBjYW4gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIHRvIGNvbXB1dGUgdGhlIGRp Z2VzdCBvZiBsb25nIG9yIGRpc2NvbnRpbnVvdXMgZGF0YSBzdHJlYW1zLg0KPiArICBTSEEtMjU2 IGNvbnRleHQgc2hvdWxkIGJlIGFscmVhZHkgY29ycmVjdGx5IGluaXRpYWxpemVkIGJ5IFNoYTI1 NkluaXQoKSwgYW5kIHNob3VsZCBub3QgYmUgZmluYWxpemVkDQo+ICsgIGJ5IFNoYTI1NkZpbmFs KCkuIEJlaGF2aW9yIHdpdGggaW52YWxpZCBjb250ZXh0IGlzIHVuZGVmaW5lZC4NCj4gKw0KPiAr ICBJZiBTaGEyNTZDb250ZXh0IGlzIE5VTEwsIHRoZW4gcmV0dXJuIEZBTFNFLg0KPiArDQo+ICsg IEBwYXJhbVtpbiwgb3V0XSAgU2hhMjU2Q29udGV4dCAgUG9pbnRlciB0byB0aGUgU0hBLTI1NiBj b250ZXh0Lg0KPiArICBAcGFyYW1baW5dICAgICAgIERhdGEgICAgICAgICAgIFBvaW50ZXIgdG8g dGhlIGJ1ZmZlciBjb250YWluaW5nIHRoZSBkYXRhIHRvIGJlIGhhc2hlZC4NCj4gKyAgQHBhcmFt W2luXSAgICAgICBEYXRhU2l6ZSAgICAgICBTaXplIG9mIERhdGEgYnVmZmVyIGluIGJ5dGVzLg0K PiArDQo+ICsgIEByZXR2YWwgVFJVRSAgIFNIQS0yNTYgZGF0YSBkaWdlc3Qgc3VjY2VlZGVkLg0K PiArICBAcmV0dmFsIEZBTFNFICBTSEEtMjU2IGRhdGEgZGlnZXN0IGZhaWxlZC4NCj4gKw0KPiAr KiovDQo+ICtCT09MRUFODQo+ICtFRklBUEkNCj4gK1NoYTI1NlVwZGF0ZSAoDQo+ICsgIElOIE9V VCAgVk9JRCAgICAgICAgKlNoYTI1NkNvbnRleHQsDQo+ICsgIElOICAgICAgQ09OU1QgVk9JRCAg KkRhdGEsDQo+ICsgIElOICAgICAgVUlOVE4gICAgICAgRGF0YVNpemUNCj4gKyAgKQ0KPiArew0K PiArICBBU1NFUlQgKEZBTFNFKTsNCj4gKyAgcmV0dXJuIEZBTFNFOw0KPiArfQ0KPiArDQo+ICsv KioNCj4gKyAgQ29tcGxldGVzIGNvbXB1dGF0aW9uIG9mIHRoZSBTSEEtMjU2IGRpZ2VzdCB2YWx1 ZS4NCj4gKw0KPiArICBUaGlzIGZ1bmN0aW9uIGNvbXBsZXRlcyBTSEEtMjU2IGhhc2ggY29tcHV0 YXRpb24gYW5kIHJldHJpZXZlcyB0aGUgZGlnZXN0IHZhbHVlIGludG8NCj4gKyAgdGhlIHNwZWNp ZmllZCBtZW1vcnkuIEFmdGVyIHRoaXMgZnVuY3Rpb24gaGFzIGJlZW4gY2FsbGVkLCB0aGUgU0hB LTI1NiBjb250ZXh0IGNhbm5vdA0KPiArICBiZSB1c2VkIGFnYWluLg0KPiArICBTSEEtMjU2IGNv bnRleHQgc2hvdWxkIGJlIGFscmVhZHkgY29ycmVjdGx5IGluaXRpYWxpemVkIGJ5IFNoYTI1Nklu aXQoKSwgYW5kIHNob3VsZCBub3QgYmUNCj4gKyAgZmluYWxpemVkIGJ5IFNoYTI1NkZpbmFsKCku IEJlaGF2aW9yIHdpdGggaW52YWxpZCBTSEEtMjU2IGNvbnRleHQgaXMgdW5kZWZpbmVkLg0KPiAr DQo+ICsgIElmIFNoYTI1NkNvbnRleHQgaXMgTlVMTCwgdGhlbiByZXR1cm4gRkFMU0UuDQo+ICsg IElmIEhhc2hWYWx1ZSBpcyBOVUxMLCB0aGVuIHJldHVybiBGQUxTRS4NCj4gKw0KPiArICBAcGFy YW1baW4sIG91dF0gIFNoYTI1NkNvbnRleHQgIFBvaW50ZXIgdG8gdGhlIFNIQS0yNTYgY29udGV4 dC4NCj4gKyAgQHBhcmFtW291dF0gICAgICBIYXNoVmFsdWUgICAgICBQb2ludGVyIHRvIGEgYnVm ZmVyIHRoYXQgcmVjZWl2ZXMgdGhlIFNIQS0yNTYgZGlnZXN0DQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdmFsdWUgKDMyIGJ5dGVzKS4NCj4gKw0KPiArICBAcmV0dmFsIFRS VUUgICBTSEEtMjU2IGRpZ2VzdCBjb21wdXRhdGlvbiBzdWNjZWVkZWQuDQo+ICsgIEByZXR2YWwg RkFMU0UgIFNIQS0yNTYgZGlnZXN0IGNvbXB1dGF0aW9uIGZhaWxlZC4NCj4gKw0KPiArKiovDQo+ ICtCT09MRUFODQo+ICtFRklBUEkNCj4gK1NoYTI1NkZpbmFsICgNCj4gKyAgSU4gT1VUICBWT0lE ICAgKlNoYTI1NkNvbnRleHQsDQo+ICsgIE9VVCAgICAgVUlOVDggICpIYXNoVmFsdWUNCj4gKyAg KQ0KPiArew0KPiArICBBU1NFUlQgKEZBTFNFKTsNCj4gKyAgcmV0dXJuIEZBTFNFOw0KPiArfQ0K PiArDQo+ICsvKioNCj4gKyAgQ29tcHV0ZXMgdGhlIFNIQS0yNTYgbWVzc2FnZSBkaWdlc3Qgb2Yg YSBpbnB1dCBkYXRhIGJ1ZmZlci4NCj4gKw0KPiArICBUaGlzIGZ1bmN0aW9uIHBlcmZvcm1zIHRo ZSBTSEEtMjU2IG1lc3NhZ2UgZGlnZXN0IG9mIGEgZ2l2ZW4gZGF0YSBidWZmZXIsIGFuZCBwbGFj ZXMNCj4gKyAgdGhlIGRpZ2VzdCB2YWx1ZSBpbnRvIHRoZSBzcGVjaWZpZWQgbWVtb3J5Lg0KPiAr DQo+ICsgIElmIHRoaXMgaW50ZXJmYWNlIGlzIG5vdCBzdXBwb3J0ZWQsIHRoZW4gcmV0dXJuIEZB TFNFLg0KPiArDQo+ICsgIEBwYXJhbVtpbl0gICBEYXRhICAgICAgICBQb2ludGVyIHRvIHRoZSBi dWZmZXIgY29udGFpbmluZyB0aGUgZGF0YSB0byBiZSBoYXNoZWQuDQo+ICsgIEBwYXJhbVtpbl0g ICBEYXRhU2l6ZSAgICBTaXplIG9mIERhdGEgYnVmZmVyIGluIGJ5dGVzLg0KPiArICBAcGFyYW1b b3V0XSAgSGFzaFZhbHVlICAgUG9pbnRlciB0byBhIGJ1ZmZlciB0aGF0IHJlY2VpdmVzIHRoZSBT SEEtMjU2IGRpZ2VzdA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgKDMyIGJ5 dGVzKS4NCj4gKw0KPiArICBAcmV0dmFsIFRSVUUgICBTSEEtMjU2IGRpZ2VzdCBjb21wdXRhdGlv biBzdWNjZWVkZWQuDQo+ICsgIEByZXR2YWwgRkFMU0UgIFNIQS0yNTYgZGlnZXN0IGNvbXB1dGF0 aW9uIGZhaWxlZC4NCj4gKyAgQHJldHZhbCBGQUxTRSAgVGhpcyBpbnRlcmZhY2UgaXMgbm90IHN1 cHBvcnRlZC4NCj4gKw0KPiArKiovDQo+ICtCT09MRUFODQo+ICtFRklBUEkNCj4gK1NoYTI1Nkhh c2hBbGwgKA0KPiArICBJTiAgIENPTlNUIFZPSUQgICpEYXRhLA0KPiArICBJTiAgIFVJTlROICAg ICAgIERhdGFTaXplLA0KPiArICBPVVQgIFVJTlQ4ICAgICAgICpIYXNoVmFsdWUNCj4gKyAgKQ0K PiArew0KPiArICBBU1NFUlQgKEZBTFNFKTsNCj4gKyAgcmV0dXJuIEZBTFNFOw0KPiArfQ0KPiBk aWZmIC0tZ2l0IGEvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL0hhc2gvQ3J5cHRTbTNO dWxsLmMgYi9DcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWIvSGFzaC9DcnlwdFNtM051bGwu Yw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwMDAuLjBmM2M4OWI0 NjUxNw0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlw dExpYi9IYXNoL0NyeXB0U20zTnVsbC5jDQo+IEBAIC0wLDAgKzEsMTY0IEBADQo+ICsvKiogQGZp bGUNCj4gKyAgU00zIERpZ2VzdCBXcmFwcGVyIE51bGwgSW1wbGVtZW50YXRpb24uDQo+ICsNCj4g K0NvcHlyaWdodCAoYykgMjAxOSwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2 ZWQuPEJSPg0KPiArU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQN Cj4gKw0KPiArKiovDQo+ICsNCj4gKyNpbmNsdWRlICJJbnRlcm5hbENyeXB0TGliLmgiDQo+ICsN Cj4gKy8qKg0KPiArICBSZXRyaWV2ZXMgdGhlIHNpemUsIGluIGJ5dGVzLCBvZiB0aGUgY29udGV4 dCBidWZmZXIgcmVxdWlyZWQgZm9yIFNNMyBoYXNoIG9wZXJhdGlvbnMuDQo+ICsNCj4gKyAgQHJl dHVybiAgVGhlIHNpemUsIGluIGJ5dGVzLCBvZiB0aGUgY29udGV4dCBidWZmZXIgcmVxdWlyZWQg Zm9yIFNNMyBoYXNoIG9wZXJhdGlvbnMuDQo+ICsNCj4gKyoqLw0KPiArVUlOVE4NCj4gK0VGSUFQ SQ0KPiArU20zR2V0Q29udGV4dFNpemUgKA0KPiArICBWT0lEDQo+ICsgICkNCj4gK3sNCj4gKyAg QVNTRVJUIChGQUxTRSk7DQo+ICsgIHJldHVybiAwOw0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAg SW5pdGlhbGl6ZXMgdXNlci1zdXBwbGllZCBtZW1vcnkgcG9pbnRlZCBieSBTbTNDb250ZXh0IGFz IFNNMyBoYXNoIGNvbnRleHQgZm9yDQo+ICsgIHN1YnNlcXVlbnQgdXNlLg0KPiArDQo+ICsgIElm IFNtM0NvbnRleHQgaXMgTlVMTCwgdGhlbiByZXR1cm4gRkFMU0UuDQo+ICsNCj4gKyAgQHBhcmFt W291dF0gIFNtM0NvbnRleHQgIFBvaW50ZXIgdG8gU00zIGNvbnRleHQgYmVpbmcgaW5pdGlhbGl6 ZWQuDQo+ICsNCj4gKyAgQHJldHZhbCBUUlVFICAgU00zIGNvbnRleHQgaW5pdGlhbGl6YXRpb24g c3VjY2VlZGVkLg0KPiArICBAcmV0dmFsIEZBTFNFICBTTTMgY29udGV4dCBpbml0aWFsaXphdGlv biBmYWlsZWQuDQo+ICsNCj4gKyoqLw0KPiArQk9PTEVBTg0KPiArRUZJQVBJDQo+ICtTbTNJbml0 ICgNCj4gKyAgT1VUICBWT0lEICAqU20zQ29udGV4dA0KPiArICApDQo+ICt7DQo+ICsgIEFTU0VS VCAoRkFMU0UpOw0KPiArICByZXR1cm4gRkFMU0U7DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBN YWtlcyBhIGNvcHkgb2YgYW4gZXhpc3RpbmcgU00zIGNvbnRleHQuDQo+ICsNCj4gKyAgSWYgU20z Q29udGV4dCBpcyBOVUxMLCB0aGVuIHJldHVybiBGQUxTRS4NCj4gKyAgSWYgTmV3U20zQ29udGV4 dCBpcyBOVUxMLCB0aGVuIHJldHVybiBGQUxTRS4NCj4gKyAgSWYgdGhpcyBpbnRlcmZhY2UgaXMg bm90IHN1cHBvcnRlZCwgdGhlbiByZXR1cm4gRkFMU0UuDQo+ICsNCj4gKyAgQHBhcmFtW2luXSAg U20zQ29udGV4dCAgICAgUG9pbnRlciB0byBTTTMgY29udGV4dCBiZWluZyBjb3BpZWQuDQo+ICsg IEBwYXJhbVtvdXRdIE5ld1NtM0NvbnRleHQgIFBvaW50ZXIgdG8gbmV3IFNNMyBjb250ZXh0Lg0K PiArDQo+ICsgIEByZXR2YWwgVFJVRSAgIFNNMyBjb250ZXh0IGNvcHkgc3VjY2VlZGVkLg0KPiAr ICBAcmV0dmFsIEZBTFNFICBTTTMgY29udGV4dCBjb3B5IGZhaWxlZC4NCj4gKyAgQHJldHZhbCBG QUxTRSAgVGhpcyBpbnRlcmZhY2UgaXMgbm90IHN1cHBvcnRlZC4NCj4gKw0KPiArKiovDQo+ICtC T09MRUFODQo+ICtFRklBUEkNCj4gK1NtM0R1cGxpY2F0ZSAoDQo+ICsgIElOICAgQ09OU1QgVk9J RCAgKlNtM0NvbnRleHQsDQo+ICsgIE9VVCAgVk9JRCAgICAgICAgKk5ld1NtM0NvbnRleHQNCj4g KyAgKQ0KPiArew0KPiArICBBU1NFUlQgKEZBTFNFKTsNCj4gKyAgcmV0dXJuIEZBTFNFOw0KPiAr fQ0KPiArDQo+ICsvKioNCj4gKyAgRGlnZXN0cyB0aGUgaW5wdXQgZGF0YSBhbmQgdXBkYXRlcyBT TTMgY29udGV4dC4NCj4gKw0KPiArICBUaGlzIGZ1bmN0aW9uIHBlcmZvcm1zIFNNMyBkaWdlc3Qg b24gYSBkYXRhIGJ1ZmZlciBvZiB0aGUgc3BlY2lmaWVkIHNpemUuDQo+ICsgIEl0IGNhbiBiZSBj YWxsZWQgbXVsdGlwbGUgdGltZXMgdG8gY29tcHV0ZSB0aGUgZGlnZXN0IG9mIGxvbmcgb3IgZGlz Y29udGludW91cyBkYXRhIHN0cmVhbXMuDQo+ICsgIFNNMyBjb250ZXh0IHNob3VsZCBiZSBhbHJl YWR5IGNvcnJlY3RseSBpbml0aWFsaXplZCBieSBTbTNJbml0KCksIGFuZCBzaG91bGQgbm90IGJl IGZpbmFsaXplZA0KPiArICBieSBTbTNGaW5hbCgpLiBCZWhhdmlvciB3aXRoIGludmFsaWQgY29u dGV4dCBpcyB1bmRlZmluZWQuDQo+ICsNCj4gKyAgSWYgU20zQ29udGV4dCBpcyBOVUxMLCB0aGVu IHJldHVybiBGQUxTRS4NCj4gKw0KPiArICBAcGFyYW1baW4sIG91dF0gIFNtM0NvbnRleHQgICAg IFBvaW50ZXIgdG8gdGhlIFNNMyBjb250ZXh0Lg0KPiArICBAcGFyYW1baW5dICAgICAgIERhdGEg ICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIGJ1ZmZlciBjb250YWluaW5nIHRoZSBkYXRhIHRvIGJl IGhhc2hlZC4NCj4gKyAgQHBhcmFtW2luXSAgICAgICBEYXRhU2l6ZSAgICAgICBTaXplIG9mIERh dGEgYnVmZmVyIGluIGJ5dGVzLg0KPiArDQo+ICsgIEByZXR2YWwgVFJVRSAgIFNNMyBkYXRhIGRp Z2VzdCBzdWNjZWVkZWQuDQo+ICsgIEByZXR2YWwgRkFMU0UgIFNNMyBkYXRhIGRpZ2VzdCBmYWls ZWQuDQo+ICsNCj4gKyoqLw0KPiArQk9PTEVBTg0KPiArRUZJQVBJDQo+ICtTbTNVcGRhdGUgKA0K PiArICBJTiBPVVQgIFZPSUQgICAgICAgICpTbTNDb250ZXh0LA0KPiArICBJTiAgICAgIENPTlNU IFZPSUQgICpEYXRhLA0KPiArICBJTiAgICAgIFVJTlROICAgICAgIERhdGFTaXplDQo+ICsgICkN Cj4gK3sNCj4gKyAgQVNTRVJUIChGQUxTRSk7DQo+ICsgIHJldHVybiBGQUxTRTsNCj4gK30NCj4g Kw0KPiArLyoqDQo+ICsgIENvbXBsZXRlcyBjb21wdXRhdGlvbiBvZiB0aGUgU00zIGRpZ2VzdCB2 YWx1ZS4NCj4gKw0KPiArICBUaGlzIGZ1bmN0aW9uIGNvbXBsZXRlcyBTTTMgaGFzaCBjb21wdXRh dGlvbiBhbmQgcmV0cmlldmVzIHRoZSBkaWdlc3QgdmFsdWUgaW50bw0KPiArICB0aGUgc3BlY2lm aWVkIG1lbW9yeS4gQWZ0ZXIgdGhpcyBmdW5jdGlvbiBoYXMgYmVlbiBjYWxsZWQsIHRoZSBTTTMg Y29udGV4dCBjYW5ub3QNCj4gKyAgYmUgdXNlZCBhZ2Fpbi4NCj4gKyAgU00zIGNvbnRleHQgc2hv dWxkIGJlIGFscmVhZHkgY29ycmVjdGx5IGluaXRpYWxpemVkIGJ5IFNtM0luaXQoKSwgYW5kIHNo b3VsZCBub3QgYmUNCj4gKyAgZmluYWxpemVkIGJ5IFNtM0ZpbmFsKCkuIEJlaGF2aW9yIHdpdGgg aW52YWxpZCBTTTMgY29udGV4dCBpcyB1bmRlZmluZWQuDQo+ICsNCj4gKyAgSWYgU20zQ29udGV4 dCBpcyBOVUxMLCB0aGVuIHJldHVybiBGQUxTRS4NCj4gKyAgSWYgSGFzaFZhbHVlIGlzIE5VTEws IHRoZW4gcmV0dXJuIEZBTFNFLg0KPiArDQo+ICsgIEBwYXJhbVtpbiwgb3V0XSAgU20zQ29udGV4 dCAgICAgUG9pbnRlciB0byB0aGUgU00zIGNvbnRleHQuDQo+ICsgIEBwYXJhbVtvdXRdICAgICAg SGFzaFZhbHVlICAgICAgUG9pbnRlciB0byBhIGJ1ZmZlciB0aGF0IHJlY2VpdmVzIHRoZSBTTTMg ZGlnZXN0DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgKDMyIGJ5 dGVzKS4NCj4gKw0KPiArICBAcmV0dmFsIFRSVUUgICBTTTMgZGlnZXN0IGNvbXB1dGF0aW9uIHN1 Y2NlZWRlZC4NCj4gKyAgQHJldHZhbCBGQUxTRSAgU00zIGRpZ2VzdCBjb21wdXRhdGlvbiBmYWls ZWQuDQo+ICsNCj4gKyoqLw0KPiArQk9PTEVBTg0KPiArRUZJQVBJDQo+ICtTbTNGaW5hbCAoDQo+ ICsgIElOIE9VVCAgVk9JRCAgICpTbTNDb250ZXh0LA0KPiArICBPVVQgICAgIFVJTlQ4ICAqSGFz aFZhbHVlDQo+ICsgICkNCj4gK3sNCj4gKyAgQVNTRVJUIChGQUxTRSk7DQo+ICsgIHJldHVybiBG QUxTRTsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIENvbXB1dGVzIHRoZSBTTTMgbWVzc2FnZSBk aWdlc3Qgb2YgYSBpbnB1dCBkYXRhIGJ1ZmZlci4NCj4gKw0KPiArICBUaGlzIGZ1bmN0aW9uIHBl cmZvcm1zIHRoZSBTTTMgbWVzc2FnZSBkaWdlc3Qgb2YgYSBnaXZlbiBkYXRhIGJ1ZmZlciwgYW5k IHBsYWNlcw0KPiArICB0aGUgZGlnZXN0IHZhbHVlIGludG8gdGhlIHNwZWNpZmllZCBtZW1vcnku DQo+ICsNCj4gKyAgSWYgdGhpcyBpbnRlcmZhY2UgaXMgbm90IHN1cHBvcnRlZCwgdGhlbiByZXR1 cm4gRkFMU0UuDQo+ICsNCj4gKyAgQHBhcmFtW2luXSAgIERhdGEgICAgICAgIFBvaW50ZXIgdG8g dGhlIGJ1ZmZlciBjb250YWluaW5nIHRoZSBkYXRhIHRvIGJlIGhhc2hlZC4NCj4gKyAgQHBhcmFt W2luXSAgIERhdGFTaXplICAgIFNpemUgb2YgRGF0YSBidWZmZXIgaW4gYnl0ZXMuDQo+ICsgIEBw YXJhbVtvdXRdICBIYXNoVmFsdWUgICBQb2ludGVyIHRvIGEgYnVmZmVyIHRoYXQgcmVjZWl2ZXMg dGhlIFNNMyBkaWdlc3QNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlICgzMiBi eXRlcykuDQo+ICsNCj4gKyAgQHJldHZhbCBUUlVFICAgU00zIGRpZ2VzdCBjb21wdXRhdGlvbiBz dWNjZWVkZWQuDQo+ICsgIEByZXR2YWwgRkFMU0UgIFNNMyBkaWdlc3QgY29tcHV0YXRpb24gZmFp bGVkLg0KPiArICBAcmV0dmFsIEZBTFNFICBUaGlzIGludGVyZmFjZSBpcyBub3Qgc3VwcG9ydGVk Lg0KPiArDQo+ICsqKi8NCj4gK0JPT0xFQU4NCj4gK0VGSUFQSQ0KPiArU20zSGFzaEFsbCAoDQo+ ICsgIElOICAgQ09OU1QgVk9JRCAgKkRhdGEsDQo+ICsgIElOICAgVUlOVE4gICAgICAgRGF0YVNp emUsDQo+ICsgIE9VVCAgVUlOVDggICAgICAgKkhhc2hWYWx1ZQ0KPiArICApDQo+ICt7DQo+ICsg IEFTU0VSVCAoRkFMU0UpOw0KPiArICByZXR1cm4gRkFMU0U7DQo+ICt9DQo+IGRpZmYgLS1naXQg YS9DcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWIvUGsvQ3J5cHRQa2NzN1ZlcmlmeUVrdU51 bGwuYw0KPiBiL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9Qay9DcnlwdFBrY3M3VmVy aWZ5RWt1TnVsbC5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAw MC4uYzFkOTgzN2M1MTI5DQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvQ3J5cHRvUGtnL0xpYnJh cnkvQmFzZUNyeXB0TGliL1BrL0NyeXB0UGtjczdWZXJpZnlFa3VOdWxsLmMNCj4gQEAgLTAsMCAr MSwxNTIgQEANCj4gKy8qKiBAZmlsZQ0KPiArICBQS0NTNyBWZXJpZnkgTnVsbCBpbXBsZW1lbnRh dGlvbi4NCj4gKw0KPiArICBDb3B5cmlnaHQgKEMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4gQWxs IFJpZ2h0cyBSZXNlcnZlZC4NCj4gKyAgQ29weXJpZ2h0IChjKSAyMDE5LCBJbnRlbCBDb3Jwb3Jh dGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ICsNCj4gKyAgU1BEWC1MaWNlbnNlLUlk ZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gKw0KPiArKiovDQo+ICsNCj4gKyNpbmNs dWRlICJJbnRlcm5hbENyeXB0TGliLmgiDQo+ICsNCj4gKy8qKg0KPiArICBUaGlzIGZ1bmN0aW9u IHdpbGwgcmV0dXJuIHRoZSBsZWFmIHNpZ25lciBjZXJ0aWZpY2F0ZSBpbiBhIGNoYWluLiAgVGhp cyBpcw0KPiArICByZXF1aXJlZCBiZWNhdXNlIGNlcnRpZmljYXRlIGNoYWlucyBhcmUgbm90IGd1 YXJhbnRlZWQgdG8gaGF2ZSB0aGUNCj4gKyAgY2VydGlmaWNhdGVzIGluIHRoZSBvcmRlciB0aGF0 IHRoZXkgd2VyZSBpc3N1ZWQuDQo+ICsNCj4gKyAgQSB0eXBpY2FsIGNlcnRpZmljYXRlIGNoYWlu IGxvb2tzIGxpa2UgdGhpczoNCj4gKw0KPiArDQo+ICsgICAgICAgICAgICAgICAgIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gKyAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgUm9v dCAgICAgICAgICAgIHwNCj4gKyAgICAgICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4NCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8DQo+ICsgICAgICAgICAgICAgICAgIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0NCj4gKyAgICAgICAgICAgICAgICB8ICAgICAgICAgIFBvbGljeSBD QSAgICAgICAgIHwgPC0tIFR5cGljYWwgVHJ1c3QgQW5jaG9yLg0KPiArICAgICAgICAgICAgICAg ICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCj4gKyAgICAg ICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiArICAgICAgICAgICAg ICAgIHwgICAgICAgICBJc3N1aW5nIENBICAgICAgICAgfA0KPiArICAgICAgICAgICAgICAgICAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCj4gKyAgICAgICAg ICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gKyAgICAgICAgICAgICAg ICAvICBFbmQtRW50aXR5IChsZWFmKSBzaWduZXIgIC8gPC0tIEJvdHRvbSBjZXJ0aWZpY2F0ZS4N Cj4gKyAgICAgICAgICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAgRUtVOiAi MS4zLjYuMS40LjEuMzExLjc2LjkuMjEuMSINCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoRmlybXdhcmUgU2lnbmluZykNCj4gKw0KPiArDQo+ ICsgIEBwYXJhbVtpbl0gICBDZXJ0Q2hhaW4gICAgICAgICAgICBDZXJ0aWZpY2F0ZSBjaGFpbi4N Cj4gKw0KPiArICBAcGFyYW1bb3V0XSAgU2lnbmVyQ2VydCAgICAgICAgICAgTGFzdCBjZXJ0aWZp Y2F0ZSBpbiB0aGUgY2hhaW4uICBGb3IgUEtDUzcgc2lnbmF0dXJlcywNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMgd2lsbCBiZSB0aGUgZW5kLWVudGl0eSAobGVh Zikgc2lnbmVyIGNlcnQuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAg ICAgIFRoZSByZXF1aXJlZCBFS1VzIHdlcmUgZm91bmQgaW4gdGhlIHNpZ25hdHVyZS4NCj4gKyAg QHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgICAgIEEgcGFyYW1ldGVyIHdhcyBpbnZhbGlk Lg0KPiArICBAcmV0dmFsIEVGSV9OT1RfRk9VTkQgICAgICAgICAgICAgVGhlIG51bWJlciBvZiBz aWduZXJzIGZvdW5kIHdhcyBub3QgMS4NCj4gKw0KPiArKiovDQo+ICtFRklfU1RBVFVTDQo+ICtH ZXRTaWduZXJDZXJ0aWZpY2F0ZSAoDQo+ICsgIElOIENPTlNUIFZPSUQgICpDZXJ0Q2hhaW4sDQo+ ICsgIE9VVCBWT0lEICAgICAgICoqU2lnbmVyQ2VydA0KPiArICApDQo+ICt7DQo+ICsgIEFTU0VS VCAoRkFMU0UpOw0KPiArICByZXR1cm4gRUZJX05PVF9SRUFEWTsNCj4gK30NCj4gKw0KPiArLyoq DQo+ICsgIERldGVybWluZXMgaWYgdGhlIHNwZWNpZmllZCBFS1UgcmVwcmVzZW50ZWQgaW4gQVNO MSBmb3JtIGlzIHByZXNlbnQNCj4gKyAgaW4gYSBnaXZlbiBjZXJ0aWZpY2F0ZS4NCj4gKw0KPiAr ICBAcGFyYW1baW5dICBDZXJ0ICAgICAgICAgICAgICAgICAgVGhlIGNlcnRpZmljYXRlIHRvIGNo ZWNrLg0KPiArDQo+ICsgIEBwYXJhbVtpbl0gIEFzbjFUb0ZpbmQgICAgICAgICAgICBUaGUgRUtV IHRvIGxvb2sgZm9yLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgICAg ICBXZSBzdWNjZXNzZnVsbHkgaWRlbnRpZmllZCB0aGUgc2lnbmluZyB0eXBlLg0KPiArICBAcmV0 dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgICAgQSBwYXJhbWV0ZXIgd2FzIGludmFsaWQuDQo+ ICsgIEByZXR2YWwgRUZJX05PVF9GT1VORCAgICAgICAgICAgICBPbmUgb3IgbW9yZSBFS1UncyB3 ZXJlIG5vdCBmb3VuZCBpbiB0aGUgc2lnbmF0dXJlLg0KPiArDQo+ICsqKi8NCj4gK0VGSV9TVEFU VVMNCj4gK0lzRWt1SW5DZXJ0aWZpY2F0ZSAoDQo+ICsgIElOIENPTlNUIFZPSUQgICpDZXJ0LA0K PiArICBJTiBWT0lEICAgICAgICAqQXNuMVRvRmluZA0KPiArICApDQo+ICt7DQo+ICsgIEFTU0VS VCAoRkFMU0UpOw0KPiArICByZXR1cm4gRUZJX05PVF9SRUFEWTsNCj4gK30NCj4gKw0KPiArLyoq DQo+ICsgIERldGVybWluZXMgaWYgdGhlIHNwZWNpZmllZCBFS1VzIGFyZSBwcmVzZW50IGluIGEg c2lnbmluZyBjZXJ0aWZpY2F0ZS4NCj4gKw0KPiArICBAcGFyYW1baW5dICBTaWduZXJDZXJ0ICAg ICAgICAgICAgVGhlIGNlcnRpZmljYXRlIHRvIGNoZWNrLg0KPiArICBAcGFyYW1baW5dICBSZXF1 aXJlZEVLVXMgICAgICAgICAgVGhlIEVLVXMgdG8gbG9vayBmb3IuDQo+ICsgIEBwYXJhbVtpbl0g IFJlcXVpcmVkRUtVc1NpemUgICAgICBUaGUgbnVtYmVyIG9mIEVLVXMNCj4gKyAgQHBhcmFtW2lu XSAgUmVxdWlyZUFsbFByZXNlbnQgICAgIElmIFRSVUUsIHRoZW4gYWxsIHRoZSBzcGVjaWZpZWQg RUtVcw0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVzdCBiZSBwcmVz ZW50IGluIHRoZSBjZXJ0aWZpY2F0ZS4NCj4gKw0KPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAg ICAgICAgICAgICAgV2Ugc3VjY2Vzc2Z1bGx5IGlkZW50aWZpZWQgdGhlIHNpZ25pbmcgdHlwZS4N Cj4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgICAgIEEgcGFyYW1ldGVyIHdhcyBp bnZhbGlkLg0KPiArICBAcmV0dmFsIEVGSV9OT1RfRk9VTkQgICAgICAgICAgICAgT25lIG9yIG1v cmUgRUtVJ3Mgd2VyZSBub3QgZm91bmQgaW4gdGhlIHNpZ25hdHVyZS4NCj4gKyoqLw0KPiArRUZJ X1NUQVRVUw0KPiArQ2hlY2tFS1VzICgNCj4gKyAgSU4gQ09OU1QgVk9JRCAgICAqU2lnbmVyQ2Vy dCwNCj4gKyAgSU4gQ09OU1QgQ0hBUjggICAqUmVxdWlyZWRFS1VzW10sDQo+ICsgIElOIENPTlNU IFVJTlQzMiAgUmVxdWlyZWRFS1VzU2l6ZSwNCj4gKyAgSU4gQk9PTEVBTiAgICAgICBSZXF1aXJl QWxsUHJlc2VudA0KPiArICApDQo+ICt7DQo+ICsgIEFTU0VSVCAoRkFMU0UpOw0KPiArICByZXR1 cm4gRUZJX05PVF9SRUFEWTsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIFRoaXMgZnVuY3Rpb24g cmVjZWl2ZXMgYSBQS0NTIzcgZm9ybWF0dGVkIHNpZ25hdHVyZSBibG9iLA0KPiArICBsb29rcyBm b3IgdGhlIEVLVSBTRVFVRU5DRSBibG9iLCBhbmQgaWYgZm91bmQgdGhlbiBsb29rcw0KPiArICBm b3IgYWxsIHRoZSByZXF1aXJlZCBFS1VzLiBUaGlzIGZ1bmN0aW9uIHdhcyBjcmVhdGVkIHNvIHRo YXQNCj4gKyAgdGhlIFN1cmZhY2UgdGVhbSBjYW4gY3V0IGRvd24gb24gdGhlIG51bWJlciBvZiBD ZXJ0aWZpY2F0ZQ0KPiArICBBdXRob3JpdGllcyAoQ0EncykgYnkgY2hlY2tpbmcgRUtVJ3Mgb24g bGVhZiBzaWduZXJzIGZvcg0KPiArICBhIHNwZWNpZmljIHByb2R1Y3QuIFRoaXMgcHJldmVudHMg b25lIHByb2R1Y3QncyBjZXJ0aWZpY2F0ZQ0KPiArICBmcm9tIHNpZ25pbmcgYW5vdGhlciBwcm9k dWN0J3MgZmlybXdhcmUgb3IgdW5sb2NrIGJsb2JzLg0KPiArDQo+ICsgIE5vdGUgdGhhdCB0aGlz IGZ1bmN0aW9uIGRvZXMgbm90IHZhbGlkYXRlIHRoZSBjZXJ0aWZpY2F0ZSBjaGFpbi4NCj4gKyAg VGhhdCBuZWVkcyB0byBiZSBkb25lIGJlZm9yZSB1c2luZyB0aGlzIGZ1bmN0aW9uLg0KPiArDQo+ ICsgIEBwYXJhbVtpbl0gIFBrY3M3U2lnbmF0dXJlICAgICAgIFRoZSBQS0NTIzcgc2lnbmVkIGlu Zm9ybWF0aW9uIGNvbnRlbnQgYmxvY2suIEFuIGFycmF5DQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnRhaW5pbmcgdGhlIGNvbnRlbnQgYmxvY2sgd2l0aCBib3RoIHRo ZSBzaWduYXR1cmUsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBz aWduZXIncyBjZXJ0aWZpY2F0ZSwgYW5kIGFueSBuZWNlc3NhcnkgaW50ZXJtZWRpYXRlDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRpZmljYXRlcy4NCj4gKyAgQHBh cmFtW2luXSAgUGtjczdTaWduYXR1cmVTaXplICAgTnVtYmVyIG9mIGJ5dGVzIGluIFBrY3M3U2ln bmF0dXJlLg0KPiArICBAcGFyYW1baW5dICBSZXF1aXJlZEVLVXMgICAgICAgICBBcnJheSBvZiBu dWxsLXRlcm1pbmF0ZWQgc3RyaW5ncyBsaXN0aW5nIE9JRHMgb2YNCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQgRUtVcyB0aGF0IG11c3QgYmUgcHJlc2VudCBp biB0aGUgc2lnbmF0dXJlLg0KPiArICBAcGFyYW1baW5dICBSZXF1aXJlZEVLVXNTaXplICAgICBO dW1iZXIgb2YgZWxlbWVudHMgaW4gdGhlIFJlcXVpcmVkRUtVcyBzdHJpbmcgYXJyYXkuDQo+ICsg IEBwYXJhbVtpbl0gIFJlcXVpcmVBbGxQcmVzZW50ICAgIElmIHRoaXMgaXMgVFJVRSwgdGhlbiBh bGwgb2YgdGhlIHNwZWNpZmllZCBFS1Uncw0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBtdXN0IGJlIHByZXNlbnQgaW4gdGhlIGxlYWYgc2lnbmVyLiAgSWYgaXQgaXMNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UsIHRoZW4gd2Ugd2lsbCBz dWNjZWVkIGlmIHdlIGZpbmQgYW55DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG9mIHRoZSBzcGVjaWZpZWQgRUtVJ3MuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VT UyAgICAgICAgICAgICAgVGhlIHJlcXVpcmVkIEVLVXMgd2VyZSBmb3VuZCBpbiB0aGUgc2lnbmF0 dXJlLg0KPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgICBBIHBhcmFtZXRlciB3 YXMgaW52YWxpZC4NCj4gKyAgQHJldHZhbCBFRklfTk9UX0ZPVU5EICAgICAgICAgICAgT25lIG9y IG1vcmUgRUtVJ3Mgd2VyZSBub3QgZm91bmQgaW4gdGhlIHNpZ25hdHVyZS4NCj4gKw0KPiArKiov DQo+ICtFRklfU1RBVFVTDQo+ICtFRklBUEkNCj4gK1ZlcmlmeUVLVXNJblBrY3M3U2lnbmF0dXJl ICgNCj4gKyAgSU4gQ09OU1QgVUlOVDggICAqUGtjczdTaWduYXR1cmUsDQo+ICsgIElOIENPTlNU IFVJTlQzMiAgU2lnbmF0dXJlU2l6ZSwNCj4gKyAgSU4gQ09OU1QgQ0hBUjggICAqUmVxdWlyZWRF S1VzW10sDQo+ICsgIElOIENPTlNUIFVJTlQzMiAgUmVxdWlyZWRFS1VzU2l6ZSwNCj4gKyAgSU4g Qk9PTEVBTiAgICAgICBSZXF1aXJlQWxsUHJlc2VudA0KPiArICApDQo+ICt7DQo+ICsgIEFTU0VS VCAoRkFMU0UpOw0KPiArICByZXR1cm4gRUZJX05PVF9SRUFEWTsNCj4gK30NCj4gZGlmZiAtLWdp dCBhL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9Qay9DcnlwdFJzYUJhc2ljTnVsbC5j IGIvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL1BrL0NyeXB0UnNhQmFzaWNOdWxsLmMN Cj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMDAwLi5mZDM1MmUzMmRk OTMNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9DcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRM aWIvUGsvQ3J5cHRSc2FCYXNpY051bGwuYw0KPiBAQCAtMCwwICsxLDEyMSBAQA0KPiArLyoqIEBm aWxlDQo+ICsgIFJTQSBBc3ltbWV0cmljIENpcGhlciBXcmFwcGVyIE51bGwgSW1wbGVtZW50YXRp b24uDQo+ICsNCj4gKyAgVGhpcyBmaWxlIGltcGxlbWVudHMgZm9sbG93aW5nIEFQSXMgd2hpY2gg cHJvdmlkZSBiYXNpYyBjYXBhYmlsaXRpZXMgZm9yIFJTQToNCj4gKyAgMSkgUnNhTmV3DQo+ICsg IDIpIFJzYUZyZWUNCj4gKyAgMykgUnNhU2V0S2V5DQo+ICsgIDQpIFJzYVBrY3MxVmVyaWZ5DQo+ ICsNCj4gK0NvcHlyaWdodCAoYykgMjAwOSAtIDIwMTgsIEludGVsIENvcnBvcmF0aW9uLiBBbGwg cmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gK1NQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1D bGF1c2UtUGF0ZW50DQo+ICsNCj4gKyoqLw0KPiArDQo+ICsjaW5jbHVkZSAiSW50ZXJuYWxDcnlw dExpYi5oIg0KPiArDQo+ICsvKioNCj4gKyAgQWxsb2NhdGVzIGFuZCBpbml0aWFsaXplcyBvbmUg UlNBIGNvbnRleHQgZm9yIHN1YnNlcXVlbnQgdXNlLg0KPiArDQo+ICsgIEByZXR1cm4gIFBvaW50 ZXIgdG8gdGhlIFJTQSBjb250ZXh0IHRoYXQgaGFzIGJlZW4gaW5pdGlhbGl6ZWQuDQo+ICsgICAg ICAgICAgIElmIHRoZSBhbGxvY2F0aW9ucyBmYWlscywgUnNhTmV3KCkgcmV0dXJucyBOVUxMLg0K PiArDQo+ICsqKi8NCj4gK1ZPSUQgKg0KPiArRUZJQVBJDQo+ICtSc2FOZXcgKA0KPiArICBWT0lE DQo+ICsgICkNCj4gK3sNCj4gKyAgLy8NCj4gKyAgLy8gQWxsb2NhdGVzICYgSW5pdGlhbGl6ZXMg UlNBIENvbnRleHQNCj4gKyAgLy8NCj4gKyAgQVNTRVJUIChGQUxTRSk7DQo+ICsgIHJldHVybiBO VUxMOw0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgUmVsZWFzZSB0aGUgc3BlY2lmaWVkIFJTQSBj b250ZXh0Lg0KPiArDQo+ICsgIEBwYXJhbVtpbl0gIFJzYUNvbnRleHQgIFBvaW50ZXIgdG8gdGhl IFJTQSBjb250ZXh0IHRvIGJlIHJlbGVhc2VkLg0KPiArDQo+ICsqKi8NCj4gK1ZPSUQNCj4gK0VG SUFQSQ0KPiArUnNhRnJlZSAoDQo+ICsgIElOICBWT0lEICAqUnNhQ29udGV4dA0KPiArICApDQo+ ICt7DQo+ICsgIC8vDQo+ICsgIC8vIEZyZWUgUlNBIENvbnRleHQNCj4gKyAgLy8NCj4gKyAgQVNT RVJUIChGQUxTRSk7DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBTZXRzIHRoZSB0YWctZGVzaWdu YXRlZCBrZXkgY29tcG9uZW50IGludG8gdGhlIGVzdGFibGlzaGVkIFJTQSBjb250ZXh0Lg0KPiAr DQo+ICsgIFRoaXMgZnVuY3Rpb24gc2V0cyB0aGUgdGFnLWRlc2lnbmF0ZWQgUlNBIGtleSBjb21w b25lbnQgaW50byB0aGUgZXN0YWJsaXNoZWQNCj4gKyAgUlNBIGNvbnRleHQgZnJvbSB0aGUgdXNl ci1zcGVjaWZpZWQgbm9uLW5lZ2F0aXZlIGludGVnZXIgKG9jdGV0IHN0cmluZyBmb3JtYXQNCj4g KyAgcmVwcmVzZW50ZWQgaW4gUlNBIFBLQ1MjMSkuDQo+ICsgIElmIEJpZ051bWJlciBpcyBOVUxM LCB0aGVuIHRoZSBzcGVjaWZpZWQga2V5IGNvbXBvbmVudCBpbiBSU0EgY29udGV4dCBpcyBjbGVh cmVkLg0KPiArDQo+ICsgIElmIFJzYUNvbnRleHQgaXMgTlVMTCwgdGhlbiByZXR1cm4gRkFMU0Uu DQo+ICsNCj4gKyAgQHBhcmFtW2luLCBvdXRdICBSc2FDb250ZXh0ICBQb2ludGVyIHRvIFJTQSBj b250ZXh0IGJlaW5nIHNldC4NCj4gKyAgQHBhcmFtW2luXSAgICAgICBLZXlUYWcgICAgICBUYWcg b2YgUlNBIGtleSBjb21wb25lbnQgYmVpbmcgc2V0Lg0KPiArICBAcGFyYW1baW5dICAgICAgIEJp Z051bWJlciAgIFBvaW50ZXIgdG8gb2N0ZXQgaW50ZWdlciBidWZmZXIuDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgSWYgTlVMTCwgdGhlbiB0aGUgc3BlY2lmaWVkIGtleSBjb21w b25lbnQgaW4gUlNBDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCBp cyBjbGVhcmVkLg0KPiArICBAcGFyYW1baW5dICAgICAgIEJuU2l6ZSAgICAgIFNpemUgb2YgYmln IG51bWJlciBidWZmZXIgaW4gYnl0ZXMuDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgSWYgQmlnTnVtYmVyIGlzIE5VTEwsIHRoZW4gaXQgaXMgaWdub3JlZC4NCj4gKw0KPiArICBA cmV0dmFsICBUUlVFICAgUlNBIGtleSBjb21wb25lbnQgd2FzIHNldCBzdWNjZXNzZnVsbHkuDQo+ ICsgIEByZXR2YWwgIEZBTFNFICBJbnZhbGlkIFJTQSBrZXkgY29tcG9uZW50IHRhZy4NCj4gKw0K PiArKiovDQo+ICtCT09MRUFODQo+ICtFRklBUEkNCj4gK1JzYVNldEtleSAoDQo+ICsgIElOIE9V VCAgVk9JRCAgICAgICAgICpSc2FDb250ZXh0LA0KPiArICBJTiAgICAgIFJTQV9LRVlfVEFHICBL ZXlUYWcsDQo+ICsgIElOICAgICAgQ09OU1QgVUlOVDggICpCaWdOdW1iZXIsDQo+ICsgIElOICAg ICAgVUlOVE4gICAgICAgIEJuU2l6ZQ0KPiArICApDQo+ICt7DQo+ICsgIEFTU0VSVCAoRkFMU0Up Ow0KPiArICByZXR1cm4gRkFMU0U7DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBWZXJpZmllcyB0 aGUgUlNBLVNTQSBzaWduYXR1cmUgd2l0aCBFTVNBLVBLQ1MxLXYxXzUgZW5jb2Rpbmcgc2NoZW1l IGRlZmluZWQgaW4NCj4gKyAgUlNBIFBLQ1MjMS4NCj4gKw0KPiArICBJZiBSc2FDb250ZXh0IGlz IE5VTEwsIHRoZW4gcmV0dXJuIEZBTFNFLg0KPiArICBJZiBNZXNzYWdlSGFzaCBpcyBOVUxMLCB0 aGVuIHJldHVybiBGQUxTRS4NCj4gKyAgSWYgU2lnbmF0dXJlIGlzIE5VTEwsIHRoZW4gcmV0dXJu IEZBTFNFLg0KPiArICBJZiBIYXNoU2l6ZSBpcyBub3QgZXF1YWwgdG8gdGhlIHNpemUgb2YgTUQ1 LCBTSEEtMSBvciBTSEEtMjU2IGRpZ2VzdCwgdGhlbiByZXR1cm4gRkFMU0UuDQo+ICsNCj4gKyAg QHBhcmFtW2luXSAgUnNhQ29udGV4dCAgIFBvaW50ZXIgdG8gUlNBIGNvbnRleHQgZm9yIHNpZ25h dHVyZSB2ZXJpZmljYXRpb24uDQo+ICsgIEBwYXJhbVtpbl0gIE1lc3NhZ2VIYXNoICBQb2ludGVy IHRvIG9jdGV0IG1lc3NhZ2UgaGFzaCB0byBiZSBjaGVja2VkLg0KPiArICBAcGFyYW1baW5dICBI YXNoU2l6ZSAgICAgU2l6ZSBvZiB0aGUgbWVzc2FnZSBoYXNoIGluIGJ5dGVzLg0KPiArICBAcGFy YW1baW5dICBTaWduYXR1cmUgICAgUG9pbnRlciB0byBSU0EgUEtDUzEtdjFfNSBzaWduYXR1cmUg dG8gYmUgdmVyaWZpZWQuDQo+ICsgIEBwYXJhbVtpbl0gIFNpZ1NpemUgICAgICBTaXplIG9mIHNp Z25hdHVyZSBpbiBieXRlcy4NCj4gKw0KPiArICBAcmV0dmFsICBUUlVFICAgVmFsaWQgc2lnbmF0 dXJlIGVuY29kZWQgaW4gUEtDUzEtdjFfNS4NCj4gKyAgQHJldHZhbCAgRkFMU0UgIEludmFsaWQg c2lnbmF0dXJlIG9yIGludmFsaWQgUlNBIGNvbnRleHQuDQo+ICsNCj4gKyoqLw0KPiArQk9PTEVB Tg0KPiArRUZJQVBJDQo+ICtSc2FQa2NzMVZlcmlmeSAoDQo+ICsgIElOICBWT0lEICAgICAgICAg KlJzYUNvbnRleHQsDQo+ICsgIElOICBDT05TVCBVSU5UOCAgKk1lc3NhZ2VIYXNoLA0KPiArICBJ TiAgVUlOVE4gICAgICAgIEhhc2hTaXplLA0KPiArICBJTiAgQ09OU1QgVUlOVDggICpTaWduYXR1 cmUsDQo+ICsgIElOICBVSU5UTiAgICAgICAgU2lnU2l6ZQ0KPiArICApDQo+ICt7DQo+ICsgIEFT U0VSVCAoRkFMU0UpOw0KPiArICByZXR1cm4gRkFMU0U7DQo+ICt9DQo+IGRpZmYgLS1naXQgYS9D cnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWIvU2VjQ3J5cHRMaWIuaW5mIGIvQ3J5cHRvUGtn L0xpYnJhcnkvQmFzZUNyeXB0TGliL1NlY0NyeXB0TGliLmluZg0KPiBuZXcgZmlsZSBtb2RlIDEw MDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwMDAuLjA3MGI0NDQ0N2U3NA0KPiAtLS0gL2Rldi9udWxs DQo+ICsrKyBiL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9TZWNDcnlwdExpYi5pbmYN Cj4gQEAgLTAsMCArMSw5MSBAQA0KPiArIyMgQGZpbGUNCj4gKyMgIENyeXB0b2dyYXBoaWMgTGli cmFyeSBJbnN0YW5jZSBmb3IgU0VDLg0KPiArIw0KPiArIyAgQ2F1dGlvbjogVGhpcyBtb2R1bGUg cmVxdWlyZXMgYWRkaXRpb25hbCByZXZpZXcgd2hlbiBtb2RpZmllZC4NCj4gKyMgIFRoaXMgbGli cmFyeSB3aWxsIGhhdmUgZXh0ZXJuYWwgaW5wdXQgLSBzaWduYXR1cmUuDQo+ICsjICBUaGlzIGV4 dGVybmFsIGlucHV0IG11c3QgYmUgdmFsaWRhdGVkIGNhcmVmdWxseSB0byBhdm9pZCBzZWN1cml0 eSBpc3N1ZXMgc3VjaCBhcw0KPiArIyAgYnVmZmVyIG92ZXJmbG93IG9yIGludGVnZXIgb3ZlcmZs b3cuDQo+ICsjDQo+ICsjICBDb3B5cmlnaHQgKGMpIDIwMjEsIEludGVsIENvcnBvcmF0aW9uLiBB bGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gKyMgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBC U0QtMi1DbGF1c2UtUGF0ZW50DQo+ICsjDQo+ICsjIw0KPiArDQo+ICtbRGVmaW5lc10NCj4gKyAg SU5GX1ZFUlNJT04gICAgICAgICAgICAgICAgICAgID0gMHgwMDAxMDAwNQ0KPiArICBCQVNFX05B TUUgICAgICAgICAgICAgICAgICAgICAgPSBTZWNDcnlwdExpYg0KPiArICBGSUxFX0dVSUQgICAg ICAgICAgICAgICAgICAgICAgPSAzNjg5RDM0My0wRDMyLTQyODQtODA1My1CRjEwNTM3OTkwRTgN Cj4gKyAgTU9EVUxFX1RZUEUgICAgICAgICAgICAgICAgICAgID0gQkFTRQ0KPiArICBWRVJTSU9O X1NUUklORyAgICAgICAgICAgICAgICAgPSAxLjANCj4gKyAgTElCUkFSWV9DTEFTUyAgICAgICAg ICAgICAgICAgID0gQmFzZUNyeXB0TGlifFNFQw0KPiArDQo+ICsjDQo+ICsjIFRoZSBmb2xsb3dp bmcgaW5mb3JtYXRpb24gaXMgZm9yIHJlZmVyZW5jZSBvbmx5IGFuZCBub3QgcmVxdWlyZWQgYnkg dGhlIGJ1aWxkIHRvb2xzLg0KPiArIw0KPiArIyAgVkFMSURfQVJDSElURUNUVVJFUyAgICAgICAg ICAgPSBJQTMyIFg2NA0KPiArIw0KPiArDQo+ICtbU291cmNlc10NCj4gKyAgSW50ZXJuYWxDcnlw dExpYi5oDQo+ICsgIEhhc2gvQ3J5cHRTaGE1MTIuYw0KPiArDQo+ICsgIEhhc2gvQ3J5cHRNZDVO dWxsLmMNCj4gKyAgSGFzaC9DcnlwdFNoYTFOdWxsLmMNCj4gKyAgSGFzaC9DcnlwdFNoYTI1Nk51 bGwuYw0KPiArICBIYXNoL0NyeXB0U20zTnVsbC5jDQo+ICsgIEhhc2gvQ3J5cHRQYXJhbGxlbEhh c2hOdWxsLmMNCj4gKyAgSG1hYy9DcnlwdEhtYWNTaGEyNTZOdWxsLmMNCj4gKyAgS2RmL0NyeXB0 SGtkZk51bGwuYw0KPiArICBDaXBoZXIvQ3J5cHRBZXNOdWxsLmMNCj4gKyAgUGsvQ3J5cHRSc2FC YXNpY051bGwuYw0KPiArICBQay9DcnlwdFJzYUV4dE51bGwuYw0KPiArICBQay9DcnlwdFBrY3Mx T2FlcE51bGwuYw0KPiArICBQay9DcnlwdFBrY3M1UGJrZGYyTnVsbC5jDQo+ICsgIFBrL0NyeXB0 UGtjczdTaWduTnVsbC5jDQo+ICsgIFBrL0NyeXB0UGtjczdWZXJpZnlOdWxsLmMNCj4gKyAgUGsv Q3J5cHRQa2NzN1ZlcmlmeUVrdU51bGwuYw0KPiArICBQay9DcnlwdERoTnVsbC5jDQo+ICsgIFBr L0NyeXB0WDUwOU51bGwuYw0KPiArICBQay9DcnlwdEF1dGhlbnRpY29kZU51bGwuYw0KPiArICBQ ay9DcnlwdFRzTnVsbC5jDQo+ICsgIFBlbS9DcnlwdFBlbU51bGwuYw0KPiArICBSYW5kL0NyeXB0 UmFuZE51bGwuYw0KPiArICBQay9DcnlwdFJzYVBzc051bGwuYw0KPiArICBQay9DcnlwdFJzYVBz c1NpZ25OdWxsLmMNCj4gKw0KPiArICBTeXNDYWxsL0NydFdyYXBwZXIuYw0KPiArICBTeXNDYWxs L0NvbnN0YW50VGltZUNsb2NrLmMNCj4gKyAgU3lzQ2FsbC9CYXNlTWVtQWxsb2NhdGlvbi5jDQo+ ICsNCj4gK1tQYWNrYWdlc10NCj4gKyAgTWRlUGtnL01kZVBrZy5kZWMNCj4gKyAgQ3J5cHRvUGtn L0NyeXB0b1BrZy5kZWMNCj4gKw0KPiArW0xpYnJhcnlDbGFzc2VzXQ0KPiArICBCYXNlTGliDQo+ ICsgIEJhc2VNZW1vcnlMaWINCj4gKyAgTWVtb3J5QWxsb2NhdGlvbkxpYg0KPiArICBEZWJ1Z0xp Yg0KPiArICBPcGVuc3NsTGliDQo+ICsgIEludHJpbnNpY0xpYg0KPiArDQo+ICsjDQo+ICsjIFJl bW92ZSB0aGVzZSBbQnVpbGRPcHRpb25zXSBhZnRlciB0aGlzIGxpYnJhcnkgaXMgY2xlYW5lZCB1 cA0KPiArIw0KPiArW0J1aWxkT3B0aW9uc10NCj4gKyAgIw0KPiArICAjIHN1cHByZXNzIHRoZSBm b2xsb3dpbmcgd2FybmluZ3Mgc28gd2UgZG8gbm90IGJyZWFrIHRoZSBidWlsZCB3aXRoIHdhcm5p bmdzLWFzLWVycm9yczoNCj4gKyAgIyBDNDA5MDogJ2Z1bmN0aW9uJyA6IGRpZmZlcmVudCAnY29u c3QnIHF1YWxpZmllcnMNCj4gKyAgIyBDNDcxODogJ2Z1bmN0aW9uIGNhbGwnIDogcmVjdXJzaXZl IGNhbGwgaGFzIG5vIHNpZGUgZWZmZWN0cywgZGVsZXRpbmcNCj4gKyAgIw0KPiArICBNU0ZUOipf Kl8qX0NDX0ZMQUdTID0gL3dkNDA5MCAvd2Q0NzE4DQo+ICsNCj4gKyAgIyAtSkNyeXB0b1BrZy9J bmNsdWRlIDogVG8gZGlzYWJsZSB0aGUgdXNlIG9mIHRoZSBzeXN0ZW0gaW5jbHVkZXMgcHJvdmlk ZWQgYnkgUlZDVA0KPiArICAjIC0tZGlhZ19yZW1hcms9MSAgICAgOiBSZWR1Y2Ugc2V2ZXJpdHkg b2YgIiMxLUQ6IGxhc3QgbGluZSBvZiBmaWxlIGVuZHMgd2l0aG91dCBhIG5ld2xpbmUiDQo+ICsg IFJWQ1Q6Kl8qX0FSTV9DQ19GTEFHUyA9IC1KQ3J5cHRvUGtnL0luY2x1ZGUgLS1kaWFnX3JlbWFy az0xDQo+ICsNCj4gKyAgR0NDOipfQ0xBTkczNV8qX0NDX0ZMQUdTID0gLXN0ZD1jOTkNCj4gKyAg R0NDOipfQ0xBTkczOF8qX0NDX0ZMQUdTID0gLXN0ZD1jOTkNCj4gKyAgR0NDOipfQ0xBTkdQREJf Kl9DQ19GTEFHUyA9IC1zdGQ9Yzk5IC1Xbm8tZXJyb3I9aW5jb21wYXRpYmxlLXBvaW50ZXItdHlw ZXMNCj4gKw0KPiArICBYQ09ERToqXypfKl9DQ19GTEFHUyA9IC1zdGQ9Yzk5DQo+IC0tDQo+IDIu MjkuMi53aW5kb3dzLjINCj4gDQo+IA0KPiANCj4gDQo+IA0KDQo=