From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by mx.groups.io with SMTP id smtpd.web10.575.1662744296340305867 for ; Fri, 09 Sep 2022 10:24:56 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=b9exvbBa; spf=pass (domain: intel.com, ip: 192.55.52.120, 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=1662744296; x=1694280296; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=Fwv7pBg11KuYjx+Se1Js0cNNNThIrbZbOHe8bKl2O1s=; b=b9exvbBaw3AqsaptakGlPUJd2VsDPByb0CbcZGX2QblMHlhvxO24rGm9 1aQxaKF/ngS/y5BJ+QZ496HhoO+qAGjVc3YgCHUY7RGRqcqvH/Eh6wxIs PQqRx+Er6x78YnIvbY8lmgp2fkg80j0k/+5EGFu3gZjexyQWT9s4wIQ1I fYejng3gLdsGpCzEBPaXC+/mLnZHBZBnfsScR0inv0PIu9Bt40mGdknRX WZsuQt66H1XnYHulL1WE+9F5AUuGeDsF/9OI13UU903dn5vhWxE5RaeEf EdIuEb9v1exQcYbvkjOCdhxWNERnRFAmxi1FZHkH0yB82B6O37he1sYyL w==; X-IronPort-AV: E=McAfee;i="6500,9779,10465"; a="296266318" X-IronPort-AV: E=Sophos;i="5.93,303,1654585200"; d="scan'208";a="296266318" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 Sep 2022 10:24:55 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.93,303,1654585200"; d="scan'208";a="645613927" Received: from orsmsx601.amr.corp.intel.com ([10.22.229.14]) by orsmga008.jf.intel.com with ESMTP; 09 Sep 2022 10:24:55 -0700 Received: from orsmsx611.amr.corp.intel.com (10.22.229.24) by ORSMSX601.amr.corp.intel.com (10.22.229.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Fri, 9 Sep 2022 10:24:55 -0700 Received: from orsmsx607.amr.corp.intel.com (10.22.229.20) by ORSMSX611.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Fri, 9 Sep 2022 10:24:54 -0700 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by orsmsx607.amr.corp.intel.com (10.22.229.20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31 via Frontend Transport; Fri, 9 Sep 2022 10:24:54 -0700 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (104.47.56.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.2375.31; Fri, 9 Sep 2022 10:24:52 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=TWRPQd0XZoa/N+DqX40d67bVFe2H85SElSIqUzg0Ec08RprIEX4hp20+NRuBgDNgcAhv+ZaUG9/KjtmzZ5j+zbxCVoO+HA2IIuCSw0kZv4RUA5MwfyA71akfWwqrnGnbFBDV3GFLUcGXiaAbxM238XsLroPzxu8vYSNROVlX2GgCbPi1rTunBDkPyRnf4eM86LSYNsQkx7DhHRbRswudJgUQaVWk/R+LYRWfB4U/pgdHx5/SA4kGwGDc3NRRmV2zfpEFIWhgozKZsf0/iCQoStQbCY6sraMUKNAVN8b3LtCzImEcxBg0SRXEGfPT7WYuwA8kvARjQ7rjiANoAZnVRw== 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=Fwv7pBg11KuYjx+Se1Js0cNNNThIrbZbOHe8bKl2O1s=; b=Ysz+GMe7HKUWJjR124lQIGzd8oxK783ddwHPAgdpnQKKUzHKIIr3aSz82pWtORSmCfPr+gfaebxJtBbUZ+0/zqqo9MKe4/ddgbdeovub/27UpU7KC08xy+OOWJBicIYciPHpP96ZyaLqWKFKqSQFlZ1NDz91OxN63RWEjq+RXKO/mAV8ka8zEN8xCU4c+gJLCw+glucUqZ889WUwZdfSOiV15LDHewpfOZLJQNo6gyPmJ1+cWkDl4XcA8ZoBhMXTUpem7Z+cLmONY75txXvFMEr5QCVj81auMri4ojmEQYaQ9laOZ0y/HiVPac6pv8qMuyEcQ+ttqcFqVWLHr2wQDA== 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 SA2PR11MB4794.namprd11.prod.outlook.com (2603:10b6:806:f9::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5612.19; Fri, 9 Sep 2022 17:24:35 +0000 Received: from CO1PR11MB4929.namprd11.prod.outlook.com ([fe80::7890:343e:99cb:21c8]) by CO1PR11MB4929.namprd11.prod.outlook.com ([fe80::7890:343e:99cb:21c8%7]) with mapi id 15.20.5612.020; Fri, 9 Sep 2022 17:24:35 +0000 From: "Michael D Kinney" To: Chao Li , "devel@edk2.groups.io" , "Kinney, Michael D" CC: "Gao, Liming" , "Liu, Zhiguang" , Baoqi Zhang Subject: Re: [PATCH v1 28/34] MdePkg/BaseSynchronizationLib: LoongArch cache related code. Thread-Topic: [PATCH v1 28/34] MdePkg/BaseSynchronizationLib: LoongArch cache related code. Thread-Index: AQHYwz7P2P1AUfscBU+wdPLqDYSioa3XW3Ig Date: Fri, 9 Sep 2022 17:24:35 +0000 Message-ID: References: <20220908045210.1192114-1-lichao@loongson.cn> In-Reply-To: <20220908045210.1192114-1-lichao@loongson.cn> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.6.500.17 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: CO1PR11MB4929:EE_|SA2PR11MB4794:EE_ x-ms-office365-filtering-correlation-id: 830c3f30-c07c-4309-0a48-08da92882ace x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: zrCigO6fF5PBOulmxlBuHTDiN7dxUquRNNA4wxyCH3XWr0RHcJYl/Fhje9VJqWE1a4eTlhhx+kt53AzURJbLCmhSuVs821U3dnsk1nsbukB7TfhNNcOiaXINlIezwwOJwtaNCYe50fY7EfP76l38VIkK0RwDtduUBR6lLS/sPWDkFsdq8rewDhmc7pUbnffqbPUqSMb7HHPeWihPxgPdyF7zOnS/ZM+tfE1mYaJzkJyGyrQcT+yTFVE0tWQF9pzxTPMC5fkrevTJHkFVHY3+uS6gofEi462xQZM1CB/aKfIZWKX8DRp+Fymp4z5oqq1+NZP8UQ76uXGAa/9hWjdZYIxYNOgy+5t3yTS2iReVItF7+sVUOD6PEXS6CgDvovbS9kTVjVB/FATtKYouM7KHYr+jAejjGyxbrtsDhqIZ6zIDY9WmpLssRyV1acvK1nv0OzpC5R1nuXiQZR8KUnyaJzyrQcaBPANUhN9dxnlZ/Ji6UJWw51ltA5T2uI2INCFGhhvRZX7E2rMNY76PkaMSwaVbCQEBApg/tVdZnW+PpjRcASUCQiVCUjfIlrMcaAL7nCa6IbxZvwOMeuZiwk+3ktV2Syslz3cBi9cKOcS66JsyrjX5/DXQM2Iyao9TmsnwxBjfH7Jspt7gUcqU6fZ+fJ29oBcUuTfYJC72wImO7eB69iHQ82ovRL/dADx6c/uNlsuQQPj9q/y0Hq8EaqsOOmJN6XrCauXNXZB8tmEXtJwpJD0majS57kUbWipId3v6II818QYSw9r4Bi0oI0tNqw== 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:(13230016)(376002)(346002)(39860400002)(396003)(366004)(136003)(38100700002)(186003)(66946007)(66446008)(64756008)(66556008)(66476007)(76116006)(8676002)(83380400001)(122000001)(52536014)(5660300002)(2906002)(86362001)(8936002)(19627235002)(316002)(4326008)(110136005)(54906003)(41300700001)(71200400001)(7696005)(6506007)(53546011)(9686003)(26005)(82960400001)(55016003)(38070700005)(478600001)(33656002);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?WVpTZU9pNmMzN3BJekJvTDZyR2t4WnVhQ3ROM2JMS3RNejFpazVCWXNvSXlm?= =?utf-8?B?SFM4UUdDNVFQY2hVeTBVL21nRWxJZ0lwSXp2anM5QTM2VDdaL1ZCaUtIa2lx?= =?utf-8?B?b1ZVY2taVE1ud3pkeS9mODNucEpwUXo1V1IyRW92aS9tSnFiLzk5WHkrT1Rn?= =?utf-8?B?U0IybkI3VFIvS0x6cWo4N3FJR1JETjF6SjVkdUpUalJjT3VNb1lGYlBRUUNH?= =?utf-8?B?dmt3T2trN2Q4VU1wUUc0Z29ZRzFnSFFoUHFjR3pMRFVaWWgyQTk5NUtKQ211?= =?utf-8?B?RDZpb3puckN1K0NjaDNpNk84Rnlpd2hHV1VEU2tVTE1VdDdpUHZXTXV3NGJj?= =?utf-8?B?SnhMK2VXUnpHMFozZ09pcFFSdVJMai9LS3NWTXZoSFQzRmxnWGJ1b3F0Z3Fp?= =?utf-8?B?S0VKL3JJMmZhL1NVeXF6RldrZlQ0M1ZIajNsRXBCQkdYejI0Vk5vSmVNeEJF?= =?utf-8?B?Z2hiN0owSGFCQUh2VytNNFZTc1FtSEM5Unp5TFpZeFIwUVNQa2t4OVYvTjRu?= =?utf-8?B?bk1JbnN4YlBCQXd3eDBMWGxxMTNRSmpyV2loZzZzeWs4aXJiVVE1ZEg4UkRm?= =?utf-8?B?bDVobFdyZG9vQ3k5RHgzdEVQNWVTRXRHcEVXazZyTG5lQUxOelVTbFcwQ29V?= =?utf-8?B?VVc0YlIySWxJUUU2bDRDYkJ1TXcvZWdvWEo3cHlDV0Mzb2ZqRU5teStpakNk?= =?utf-8?B?T3hoeWxZR2o1RWhFeTRSK05qTjkrSjRKU1JjL3hISWloZEl6b3d6eDI5ekxH?= =?utf-8?B?bFMzL25rVURaN25XNWVzNWZkUWx6SHR5Z2lCKzFNeWI2aHRYODlJcnY4bGM5?= =?utf-8?B?bElrWnQ5SzM1b2dMUXg4NDFDY0FxQzRKMXNGZTB4VXBHaVZtakJpMml5WmJt?= =?utf-8?B?Y3hLSXNSQUVqY3VRTEFNZ1RXSnYwa1lpREFsRmV4VExQYkxqR01OdFVhVkk3?= =?utf-8?B?M2Q2aUNsemY1TXdIZTdpTzhuWUZJanc5R00zOFVDY1YvS1Y1amFnTE56T2VY?= =?utf-8?B?bkxKQXlKNlcwWmw3QWFvL0M1TnFBSGQyVnFuNU1sS05ZUVdxOHN3N1IzSWhn?= =?utf-8?B?TUhqV0xjOWZWdkIrRitMckFSSTAvQzF5U1hidVoyZWNHRVZCVHNicTFTZGNy?= =?utf-8?B?UlpxMGdpdUhjdnRNOGFNa08rbXRjM0dadjlTZkFTemYwVGJWSW4rMnh6QUd6?= =?utf-8?B?Qzh5UTlkWHRZVGUvTmwxWXRXRGc2ZjFqRnBwNnJqK3hRNlY3anRlMVhKTTli?= =?utf-8?B?S29JWHMyNXpSSVRuV0VoQ2RmQlplTGtYQS90d2Z6bTRvc2h0d3JlQVAzSmN1?= =?utf-8?B?VFJjYXN1SkJ5dGlsVkxDQkdJYjFaVGJjc2pZNWp2M0VpS0d6cWdqYnNRdEQ5?= =?utf-8?B?T3UwVTFhWVE0d3N3aFBpbjJOVlE1QUhibVFLNWx4YTI1cW5pOTl3WDcvcEpY?= =?utf-8?B?VHljeUJ4c0RtbzFCRFcyRFBwV0pMQUFDT0lZUzBiSzRKV0t3SGhObWdSait5?= =?utf-8?B?bzJGRC9VZzU3dS9IV3psVkNGc0JxZm04eGtRMXpsb3pmKzNXazJCY21PbG1w?= =?utf-8?B?bGFHMGdUUzZ4OFVxRGRDVnRFYlFpR0NZSzFLaXlNU3ZRNkNhZjVLaG82NHlt?= =?utf-8?B?Nlk1OXFSWXd5SVI2N2xMSDdHZVNmd1dEOGZHc0FONXVQVk5iZFFaZG1kTmJU?= =?utf-8?B?dER1b1paYTgyRlFlbjlIRDdDd0paTk9EQjQ3SVBxVFpsZlBncTl4Rm5TQkRW?= =?utf-8?B?bWVQOGdEbmtnQzliTFdKYlQwS0NvR29GNEVSK2ZFTHBNZ0NRSHo0djc5cm5q?= =?utf-8?B?VkRMcm8vditTTkdkRGNVMUlmSm04SGQzOWVZaHZMajRDU0l1U2NoQ014clhv?= =?utf-8?B?Z1AxSU8zbG1CZ2JIYU55dWNqam1pTSttaVN3MHBhdVlPZlk1T09mWTkvVXhY?= =?utf-8?B?SENLMisrTGIxZy9PbkE1STIyT0k2b2hoNzk4UGM4cmJmSkRURVFpcmFJTlpB?= =?utf-8?B?dVFNMXpIb2hzcHhjTll1Ym9Mdy9IUkNpUEE4Ym95TjZScVh0OG5qZTJEMzZr?= =?utf-8?B?U1NyM1BmR1k0QzNPVXY5NlB1NnpBOGZaa2hKejdOTzRsamR6bDJkODE1ZlVG?= =?utf-8?B?VmViWEp2Y2hjMi9wbGhnNjJnWEhsOTZQNThtVlFTS21WUWJydEZuRVFkV3g5?= =?utf-8?B?QVE9PQ==?= 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: 830c3f30-c07c-4309-0a48-08da92882ace X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Sep 2022 17:24:35.7075 (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: 0MKr8qmxHYSqzB+1gjr065YR+Zbj0FeC5UKW797/6yL3rPL2DD7YtffYep8Z+hMze8R3TFCqn5G+aF2WYkJmYf0FGNzIdBhwsFEEJgmqTEA= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA2PR11MB4794 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 UmVjb21tZW5kIGNvbnZlcnRpbmcgaW5saW5lIGFzc2VtYmx5IHRvIC5TLg0KDQpNaWtlDQoNCj4g LS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogQ2hhbyBMaSA8bGljaGFvQGxvb25n c29uLmNuPg0KPiBTZW50OiBXZWRuZXNkYXksIFNlcHRlbWJlciA3LCAyMDIyIDk6NTIgUE0NCj4g VG86IGRldmVsQGVkazIuZ3JvdXBzLmlvDQo+IENjOiBLaW5uZXksIE1pY2hhZWwgRCA8bWljaGFl bC5kLmtpbm5leUBpbnRlbC5jb20+OyBHYW8sIExpbWluZyA8Z2FvbGltaW5nQGJ5b3NvZnQuY29t LmNuPjsgTGl1LCBaaGlndWFuZw0KPiA8emhpZ3VhbmcubGl1QGludGVsLmNvbT47IEJhb3FpIFpo YW5nIDx6aGFuZ2Jhb3FpQGxvb25nc29uLmNuPg0KPiBTdWJqZWN0OiBbUEFUQ0ggdjEgMjgvMzRd IE1kZVBrZy9CYXNlU3luY2hyb25pemF0aW9uTGliOiBMb29uZ0FyY2ggY2FjaGUgcmVsYXRlZCBj b2RlLg0KPiANCj4gU3VwcG9ydCBMb29uZ0FyY2ggY2FjaGUgcmVsYXRlZCBmdW5jdGlvbnMuDQo+ IA0KPiBDYzogTWljaGFlbCBEIEtpbm5leSA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+DQo+ IENjOiBMaW1pbmcgR2FvIDxnYW9saW1pbmdAYnlvc29mdC5jb20uY24+DQo+IENjOiBaaGlndWFu ZyBMaXUgPHpoaWd1YW5nLmxpdUBpbnRlbC5jb20+DQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBDaGFv IExpIDxsaWNoYW9AbG9vbmdzb24uY24+DQo+IENvLWF1dGhvcmVkLWJ5OiBCYW9xaSBaaGFuZyA8 emhhbmdiYW9xaUBsb29uZ3Nvbi5jbj4NCj4gLS0tDQo+ICAuLi4vQmFzZVN5bmNocm9uaXphdGlv bkxpYi5pbmYgICAgICAgICAgICAgICAgfCAgIDUgKw0KPiAgLi4uL0xvb25nQXJjaDY0L1N5bmNo cm9uaXphdGlvbi5jICAgICAgICAgICAgIHwgMjQ2ICsrKysrKysrKysrKysrKysrKw0KPiAgMiBm aWxlcyBjaGFuZ2VkLCAyNTEgaW5zZXJ0aW9ucygrKQ0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IE1k ZVBrZy9MaWJyYXJ5L0Jhc2VTeW5jaHJvbml6YXRpb25MaWIvTG9vbmdBcmNoNjQvU3luY2hyb25p emF0aW9uLmMNCj4gDQo+IGRpZmYgLS1naXQgYS9NZGVQa2cvTGlicmFyeS9CYXNlU3luY2hyb25p emF0aW9uTGliL0Jhc2VTeW5jaHJvbml6YXRpb25MaWIuaW5mDQo+IGIvTWRlUGtnL0xpYnJhcnkv QmFzZVN5bmNocm9uaXphdGlvbkxpYi9CYXNlU3luY2hyb25pemF0aW9uTGliLmluZg0KPiBpbmRl eCAwMmJhMTI5NjFhLi4xMDAyMWYzMzUyIDEwMDc1NQ0KPiAtLS0gYS9NZGVQa2cvTGlicmFyeS9C YXNlU3luY2hyb25pemF0aW9uTGliL0Jhc2VTeW5jaHJvbml6YXRpb25MaWIuaW5mDQo+ICsrKyBi L01kZVBrZy9MaWJyYXJ5L0Jhc2VTeW5jaHJvbml6YXRpb25MaWIvQmFzZVN5bmNocm9uaXphdGlv bkxpYi5pbmYNCj4gQEAgLTQsNiArNCw3IEBADQo+ICAjICBDb3B5cmlnaHQgKGMpIDIwMDcgLSAy MDE4LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+IA0KPiAg IyAgUG9ydGlvbnMgY29weXJpZ2h0IChjKSAyMDA4IC0gMjAwOSwgQXBwbGUgSW5jLiBBbGwgcmln aHRzIHJlc2VydmVkLjxCUj4NCj4gDQo+ICAjICBDb3B5cmlnaHQgKGMpIDIwMjAsIEhld2xldHQg UGFja2FyZCBFbnRlcnByaXNlIERldmVsb3BtZW50IExQLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxC Uj4NCj4gDQo+ICsjICBDb3B5cmlnaHQgKGMpIDIwMjIsIExvb25nc29uIFRlY2hub2xvZ3kgQ29y cG9yYXRpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+IA0KPiAgIw0KPiAN Cj4gICMgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+IA0K PiAgIw0KPiANCj4gQEAgLTgyLDYgKzgzLDEwIEBADQo+ICAgIFN5bmNocm9uaXphdGlvbi5jDQo+ IA0KPiAgICBSaXNjVjY0L1N5bmNocm9uaXphdGlvbi5TDQo+IA0KPiANCj4gDQo+ICtbU291cmNl cy5MT09OR0FSQ0g2NF0NCj4gDQo+ICsgIFN5bmNocm9uaXphdGlvbi5jDQo+IA0KPiArICBMb29u Z0FyY2g2NC9TeW5jaHJvbml6YXRpb24uYw0KPiANCj4gKw0KPiANCj4gIFtQYWNrYWdlc10NCj4g DQo+ICAgIE1kZVBrZy9NZGVQa2cuZGVjDQo+IA0KPiANCj4gDQo+IGRpZmYgLS1naXQgYS9NZGVQ a2cvTGlicmFyeS9CYXNlU3luY2hyb25pemF0aW9uTGliL0xvb25nQXJjaDY0L1N5bmNocm9uaXph dGlvbi5jDQo+IGIvTWRlUGtnL0xpYnJhcnkvQmFzZVN5bmNocm9uaXphdGlvbkxpYi9Mb29uZ0Fy Y2g2NC9TeW5jaHJvbml6YXRpb24uYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAw MDAwMDAwMDAwLi5iNzc4OWYzMjEyDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvTWRlUGtnL0xp YnJhcnkvQmFzZVN5bmNocm9uaXphdGlvbkxpYi9Mb29uZ0FyY2g2NC9TeW5jaHJvbml6YXRpb24u Yw0KPiBAQCAtMCwwICsxLDI0NiBAQA0KPiArLyoqIEBmaWxlDQo+IA0KPiArICBMb29uZ0FyY2gg c3luY2hyb25pemF0aW9uIGZ1bmN0aW9ucy4NCj4gDQo+ICsNCj4gDQo+ICsgIENvcHlyaWdodCAo YykgMjAyMiwgTG9vbmdzb24gVGVjaG5vbG9neSBDb3Jwb3JhdGlvbiBMaW1pdGVkLiBBbGwgcmln aHRzIHJlc2VydmVkLjxCUj4NCj4gDQo+ICsNCj4gDQo+ICsgIFNQRFgtTGljZW5zZS1JZGVudGlm aWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+IA0KPiArDQo+IA0KPiArKiovDQo+IA0KPiArDQo+ IA0KPiArI2luY2x1ZGUgPExpYnJhcnkvRGVidWdMaWIuaD4NCj4gDQo+ICsNCj4gDQo+ICsvKioN Cj4gDQo+ICsgIFBlcmZvcm1zIGFuIGF0b21pYyBjb21wYXJlIGV4Y2hhbmdlIG9wZXJhdGlvbiBv biBhIDE2LWJpdA0KPiANCj4gKyAgdW5zaWduZWQgaW50ZWdlci4NCj4gDQo+ICsNCj4gDQo+ICsg IFBlcmZvcm1zIGFuIGF0b21pYyBjb21wYXJlIGV4Y2hhbmdlIG9wZXJhdGlvbiBvbiB0aGUgMTYt Yml0DQo+IA0KPiArICB1bnNpZ25lZCBpbnRlZ2VyIHNwZWNpZmllZCBieSBWYWx1ZS4gIElmIFZh bHVlIGlzIGVxdWFsIHRvDQo+IA0KPiArICBDb21wYXJlVmFsdWUsIHRoZW4gVmFsdWUgaXMgc2V0 IHRvIEV4Y2hhbmdlVmFsdWUgYW5kDQo+IA0KPiArICBDb21wYXJlVmFsdWUgaXMgcmV0dXJuZWQu ICBJZiBWYWx1ZSBpcyBub3QgZXF1YWwgdG8NCj4gDQo+ICsgIENvbXBhcmVWYWx1ZSwgdGhlbiBW YWx1ZSBpcyByZXR1cm5lZC4gVGhlIGNvbXBhcmUgZXhjaGFuZ2UNCj4gDQo+ICsgIG9wZXJhdGlv biBtdXN0IGJlIHBlcmZvcm1lZCB1c2luZyBNUCBzYWZlIG1lY2hhbmlzbXMuDQo+IA0KPiArDQo+ IA0KPiArICBAcGFyYW1baW5dICBWYWx1ZSAgICAgICAgIEEgcG9pbnRlciB0byB0aGUgMTYtYml0 IHZhbHVlIGZvciB0aGUNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBjb21wYXJlIGV4 Y2hhbmdlIG9wZXJhdGlvbi4NCj4gDQo+ICsgIEBwYXJhbVtpbl0gIENvbXBhcmVWYWx1ZSAgMTYt Yml0IHZhbHVlIHVzZWQgaW4gY29tcGFyZSBvcGVyYXRpb24uDQo+IA0KPiArICBAcGFyYW1baW5d ICBFeGNoYW5nZVZhbHVlIDE2LWJpdCB2YWx1ZSB1c2VkIGluIGV4Y2hhbmdlIG9wZXJhdGlvbi4N Cj4gDQo+ICsNCj4gDQo+ICsgIEByZXR1cm4gVGhlIG9yaWdpbmFsICpWYWx1ZSBiZWZvcmUgZXhj aGFuZ2UuDQo+IA0KPiArDQo+IA0KPiArKiovDQo+IA0KPiArVUlOVDE2DQo+IA0KPiArRUZJQVBJ DQo+IA0KPiArSW50ZXJuYWxTeW5jQ29tcGFyZUV4Y2hhbmdlMTYgKA0KPiANCj4gKyAgSU4gICAg ICB2b2xhdGlsZSBVSU5UMTYgICpWYWx1ZSwNCj4gDQo+ICsgIElOICAgICAgVUlOVDE2ICAgICAg ICAgICBDb21wYXJlVmFsdWUsDQo+IA0KPiArICBJTiAgICAgIFVJTlQxNiAgICAgICAgICAgRXhj aGFuZ2VWYWx1ZQ0KPiANCj4gKyAgKQ0KPiANCj4gK3sNCj4gDQo+ICsgIFVJTlQzMiAgICAgICAg ICAgUmV0VmFsdWU7DQo+IA0KPiArICBVSU5UMzIgICAgICAgICAgIFRlbXA7DQo+IA0KPiArICBV SU5UMzIgICAgICAgICAgIFNoaWZ0Ow0KPiANCj4gKyAgVUlOVDY0ICAgICAgICAgICBNYXNrOw0K PiANCj4gKyAgVUlOVDY0ICAgICAgICAgICBMb2NhbENvbXBhcmVWYWx1ZTsNCj4gDQo+ICsgIFVJ TlQ2NCAgICAgICAgICAgTG9jYWxFeGNoYW5nZVZhbHVlOw0KPiANCj4gKyAgdm9sYXRpbGUgVUlO VDMyICAqUHRyMzI7DQo+IA0KPiArDQo+IA0KPiArICAvKiBDaGVjayB0aGF0IHB0ciBpcyBuYXR1 cmFsbHkgYWxpZ25lZCAqLw0KPiANCj4gKyAgQVNTRVJUICghKChVSU5UNjQpVmFsdWUgJiAoc2l6 ZW9mIChWYWx1ZSkgLSAxKSkpOw0KPiANCj4gKw0KPiANCj4gKyAgLyogTWFzayBpbnB1dHMgdG8g dGhlIGNvcnJlY3Qgc2l6ZS4gKi8NCj4gDQo+ICsgIE1hc2sgICAgICAgICAgICAgICA9ICgoKH4w VUwpIC0gKDFVTCA8PCAoMCkpICsgMSkgJiAofjBVTCA+PiAoNjQgLSAxIC0gKChzaXplb2YgKFVJ TlQxNikgKiA4KSAtIDEpKSkpOw0KPiANCj4gKyAgTG9jYWxDb21wYXJlVmFsdWUgID0gKChVSU5U NjQpQ29tcGFyZVZhbHVlKSAmIE1hc2s7DQo+IA0KPiArICBMb2NhbEV4Y2hhbmdlVmFsdWUgPSAo KFVJTlQ2NClFeGNoYW5nZVZhbHVlKSAmIE1hc2s7DQo+IA0KPiArDQo+IA0KPiArICAvKg0KPiAN Cj4gKyAgICogQ2FsY3VsYXRlIGEgc2hpZnQgJiBtYXNrIHRoYXQgY29ycmVzcG9uZCB0byB0aGUg dmFsdWUgd2Ugd2lzaCB0bw0KPiANCj4gKyAgICogY29tcGFyZSAmIGV4Y2hhbmdlIHdpdGhpbiB0 aGUgbmF0dXJhbGx5IGFsaWduZWQgNCBieXRlIGludGVnZXINCj4gDQo+ICsgICAqIHRoYXQgaW5j bHVkZXMgaXQuDQo+IA0KPiArICAgKi8NCj4gDQo+ICsgIFNoaWZ0ICAgICAgICAgICAgICAgID0g KFVJTlQ2NClWYWx1ZSAmIDB4MzsNCj4gDQo+ICsgIFNoaWZ0ICAgICAgICAgICAgICAgKj0gODsg LyogQklUU19QRVJfQllURSAqLw0KPiANCj4gKyAgTG9jYWxDb21wYXJlVmFsdWUgIDw8PSBTaGlm dDsNCj4gDQo+ICsgIExvY2FsRXhjaGFuZ2VWYWx1ZSA8PD0gU2hpZnQ7DQo+IA0KPiArICBNYXNr ICAgICAgICAgICAgICAgPDw9IFNoaWZ0Ow0KPiANCj4gKw0KPiANCj4gKyAgLyoNCj4gDQo+ICsg ICAqIENhbGN1bGF0ZSBhIHBvaW50ZXIgdG8gdGhlIG5hdHVyYWxseSBhbGlnbmVkIDQgYnl0ZSBp bnRlZ2VyIHRoYXQNCj4gDQo+ICsgICAqIGluY2x1ZGVzIG91ciBieXRlIG9mIGludGVyZXN0LCBh bmQgbG9hZCBpdHMgdmFsdWUuDQo+IA0KPiArICAgKi8NCj4gDQo+ICsgIFB0cjMyID0gKFVJTlQz MiAqKSgoVUlOVDY0KVZhbHVlICYgfjB4Myk7DQo+IA0KPiArDQo+IA0KPiArICBfX2FzbV9fIF9f dm9sYXRpbGVfXyAoDQo+IA0KPiArICAgICIxOiAgICAgICAgICAgICAgIFxuIg0KPiANCj4gKyAg ICAibGwudyAgJTAsICUzICAgICBcbiINCj4gDQo+ICsgICAgImFuZCAgICUxLCAlMCwgJTQgXG4i DQo+IA0KPiArICAgICJibmUgICAlMSwgJTUsIDJmIFxuIg0KPiANCj4gKyAgICAiYW5kbiAgJTEs ICUwLCAlNCBcbiINCj4gDQo+ICsgICAgIm9yICAgICUxLCAlMSwgJTYgXG4iDQo+IA0KPiArICAg ICJzYy53ICAlMSwgJTIgICAgIFxuIg0KPiANCj4gKyAgICAiYmVxeiAgJTEsIDFiICAgICBcbiIN Cj4gDQo+ICsgICAgImIgICAgIDNmICAgICAgICAgXG4iDQo+IA0KPiArICAgICIyOiAgICAgICAg ICAgICAgIFxuIg0KPiANCj4gKyAgICAiZGJhciAgMCAgICAgICAgICBcbiINCj4gDQo+ICsgICAg IjM6ICAgICAgICAgICAgICAgXG4iDQo+IA0KPiArICAgIDogIj0mciIgKFJldFZhbHVlKSwgIj0m ciIgKFRlbXApLCAiPSIgIlpDIiAoKlB0cjMyKQ0KPiANCj4gKyAgICA6ICJaQyIgKCpQdHIzMiks ICJKciIgKE1hc2spLCAiSnIiIChMb2NhbENvbXBhcmVWYWx1ZSksICJKciIgKExvY2FsRXhjaGFu Z2VWYWx1ZSkNCj4gDQo+ICsgICAgOiAibWVtb3J5Ig0KPiANCj4gKyAgKTsNCj4gDQo+ICsNCj4g DQo+ICsgIHJldHVybiAoUmV0VmFsdWUgJiBNYXNrKSA+PiBTaGlmdDsNCj4gDQo+ICt9DQo+IA0K PiArDQo+IA0KPiArLyoqDQo+IA0KPiArICBQZXJmb3JtcyBhbiBhdG9taWMgY29tcGFyZSBleGNo YW5nZSBvcGVyYXRpb24gb24gYSAzMi1iaXQNCj4gDQo+ICsgIHVuc2lnbmVkIGludGVnZXIuDQo+ IA0KPiArDQo+IA0KPiArICBQZXJmb3JtcyBhbiBhdG9taWMgY29tcGFyZSBleGNoYW5nZSBvcGVy YXRpb24gb24gdGhlIDMyLWJpdA0KPiANCj4gKyAgdW5zaWduZWQgaW50ZWdlciBzcGVjaWZpZWQg YnkgVmFsdWUuICBJZiBWYWx1ZSBpcyBlcXVhbCB0bw0KPiANCj4gKyAgQ29tcGFyZVZhbHVlLCB0 aGVuIFZhbHVlIGlzIHNldCB0byBFeGNoYW5nZVZhbHVlIGFuZA0KPiANCj4gKyAgQ29tcGFyZVZh bHVlIGlzIHJldHVybmVkLiAgSWYgVmFsdWUgaXMgbm90IGVxdWFsIHRvDQo+IA0KPiArICBDb21w YXJlVmFsdWUsIHRoZW4gVmFsdWUgaXMgcmV0dXJuZWQuIFRoZSBjb21wYXJlIGV4Y2hhbmdlDQo+ IA0KPiArICBvcGVyYXRpb24gbXVzdCBiZSBwZXJmb3JtZWQgdXNpbmcgTVAgc2FmZSBtZWNoYW5p c21zLg0KPiANCj4gKw0KPiANCj4gKyAgQHBhcmFtW2luXSAgVmFsdWUgICAgICAgICBBIHBvaW50 ZXIgdG8gdGhlIDMyLWJpdCB2YWx1ZSBmb3IgdGhlDQo+IA0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgY29tcGFyZSBleGNoYW5nZSBvcGVyYXRpb24uDQo+IA0KPiArICBAcGFyYW1baW5dICBD b21wYXJlVmFsdWUgIDMyLWJpdCB2YWx1ZSB1c2VkIGluIGNvbXBhcmUgb3BlcmF0aW9uLg0KPiAN Cj4gKyAgQHBhcmFtW2luXSAgRXhjaGFuZ2VWYWx1ZSAzMi1iaXQgdmFsdWUgdXNlZCBpbiBleGNo YW5nZSBvcGVyYXRpb24uDQo+IA0KPiArDQo+IA0KPiArICBAcmV0dXJuIFRoZSBvcmlnaW5hbCAq VmFsdWUgYmVmb3JlIGV4Y2hhbmdlLg0KPiANCj4gKw0KPiANCj4gKyoqLw0KPiANCj4gK1VJTlQz Mg0KPiANCj4gK0VGSUFQSQ0KPiANCj4gK0ludGVybmFsU3luY0NvbXBhcmVFeGNoYW5nZTMyICgN Cj4gDQo+ICsgIElOICAgICAgdm9sYXRpbGUgVUlOVDMyICAqVmFsdWUsDQo+IA0KPiArICBJTiAg ICAgIFVJTlQzMiAgICAgICAgICAgQ29tcGFyZVZhbHVlLA0KPiANCj4gKyAgSU4gICAgICBVSU5U MzIgICAgICAgICAgIEV4Y2hhbmdlVmFsdWUNCj4gDQo+ICsgICkNCj4gDQo+ICt7DQo+IA0KPiAr ICBVSU5UMzIgIFJldFZhbHVlOw0KPiANCj4gKw0KPiANCj4gKyAgX19hc21fXyBfX3ZvbGF0aWxl X18gKA0KPiANCj4gKyAgICAiMTogICAgICAgICAgICAgIFxuIg0KPiANCj4gKyAgICAibGwudyAl MCwgJTIgICAgIFxuIg0KPiANCj4gKyAgICAiYm5lICAlMCwgJTMsIDJmIFxuIg0KPiANCj4gKyAg ICAibW92ZSAlMCwgJTQgICAgIFxuIg0KPiANCj4gKyAgICAic2MudyAlMCwgJTEgICAgIFxuIg0K PiANCj4gKyAgICAiYmVxeiAlMCwgMWIgICAgIFxuIg0KPiANCj4gKyAgICAiYiAgICAzZiAgICAg ICAgIFxuIg0KPiANCj4gKyAgICAiMjogICAgICAgICAgICAgIFxuIg0KPiANCj4gKyAgICAiZGJh ciAwICAgICAgICAgIFxuIg0KPiANCj4gKyAgICAiMzogICAgICAgICAgICAgIFxuIg0KPiANCj4g KyAgICA6ICI9JnIiIChSZXRWYWx1ZSksICI9IiAiWkMiICgqVmFsdWUpDQo+IA0KPiArICAgIDog IlpDIiAoKlZhbHVlKSwgIkpyIiAoQ29tcGFyZVZhbHVlKSwgIkpyIiAoRXhjaGFuZ2VWYWx1ZSkN Cj4gDQo+ICsgICAgOiAibWVtb3J5Ig0KPiANCj4gKyAgKTsNCj4gDQo+ICsgIHJldHVybiBSZXRW YWx1ZTsNCj4gDQo+ICt9DQo+IA0KPiArDQo+IA0KPiArLyoqDQo+IA0KPiArICBQZXJmb3JtcyBh biBhdG9taWMgY29tcGFyZSBleGNoYW5nZSBvcGVyYXRpb24gb24gYSA2NC1iaXQgdW5zaWduZWQg aW50ZWdlci4NCj4gDQo+ICsNCj4gDQo+ICsgIFBlcmZvcm1zIGFuIGF0b21pYyBjb21wYXJlIGV4 Y2hhbmdlIG9wZXJhdGlvbiBvbiB0aGUgNjQtYml0IHVuc2lnbmVkIGludGVnZXIgc3BlY2lmaWVk DQo+IA0KPiArICBieSBWYWx1ZS4gIElmIFZhbHVlIGlzIGVxdWFsIHRvIENvbXBhcmVWYWx1ZSwg dGhlbiBWYWx1ZSBpcyBzZXQgdG8gRXhjaGFuZ2VWYWx1ZSBhbmQNCj4gDQo+ICsgIENvbXBhcmVW YWx1ZSBpcyByZXR1cm5lZC4gIElmIFZhbHVlIGlzIG5vdCBlcXVhbCB0byBDb21wYXJlVmFsdWUs IHRoZW4gVmFsdWUgaXMgcmV0dXJuZWQuDQo+IA0KPiArICBUaGUgY29tcGFyZSBleGNoYW5nZSBv cGVyYXRpb24gbXVzdCBiZSBwZXJmb3JtZWQgdXNpbmcgTVAgc2FmZSBtZWNoYW5pc21zLg0KPiAN Cj4gKw0KPiANCj4gKyAgQHBhcmFtW2luXSAgVmFsdWUgICAgICAgICBBIHBvaW50ZXIgdG8gdGhl IDY0LWJpdCB2YWx1ZSBmb3IgdGhlIGNvbXBhcmUgZXhjaGFuZ2UNCj4gDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICBvcGVyYXRpb24uDQo+IA0KPiArICBAcGFyYW1baW5dICBDb21wYXJlVmFs dWUgIDY0LWJpdCB2YWx1ZSB1c2VkIGluIGNvbXBhcmUgb3BlcmF0aW9uLg0KPiANCj4gKyAgQHBh cmFtW2luXSAgRXhjaGFuZ2VWYWx1ZSA2NC1iaXQgdmFsdWUgdXNlZCBpbiBleGNoYW5nZSBvcGVy YXRpb24uDQo+IA0KPiArDQo+IA0KPiArICBAcmV0dXJuIFRoZSBvcmlnaW5hbCAqVmFsdWUgYmVm b3JlIGV4Y2hhbmdlLg0KPiANCj4gKw0KPiANCj4gKyoqLw0KPiANCj4gK1VJTlQ2NA0KPiANCj4g K0VGSUFQSQ0KPiANCj4gK0ludGVybmFsU3luY0NvbXBhcmVFeGNoYW5nZTY0ICgNCj4gDQo+ICsg IElOICAgICAgdm9sYXRpbGUgVUlOVDY0ICAqVmFsdWUsDQo+IA0KPiArICBJTiAgICAgIFVJTlQ2 NCAgICAgICAgICAgQ29tcGFyZVZhbHVlLA0KPiANCj4gKyAgSU4gICAgICBVSU5UNjQgICAgICAg ICAgIEV4Y2hhbmdlVmFsdWUNCj4gDQo+ICsgICkNCj4gDQo+ICt7DQo+IA0KPiArICBVSU5UNjQg IFJldFZhbHVlOw0KPiANCj4gKw0KPiANCj4gKyAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiAN Cj4gKyAgICAiMTogICAgICAgICAgICAgIFxuIg0KPiANCj4gKyAgICAibGwuZCAlMCwgJTIgICAg IFxuIg0KPiANCj4gKyAgICAiYm5lICAlMCwgJTMsIDJmIFxuIg0KPiANCj4gKyAgICAibW92ZSAl MCwgJTQgICAgIFxuIg0KPiANCj4gKyAgICAic2MuZCAlMCwgJTEgICAgIFxuIg0KPiANCj4gKyAg ICAiYmVxeiAlMCwgMWIgICAgIFxuIg0KPiANCj4gKyAgICAiYiAgICAzZiAgICAgICAgIFxuIg0K PiANCj4gKyAgICAiMjogICAgICAgICAgICAgIFxuIg0KPiANCj4gKyAgICAiZGJhciAwICAgICAg ICAgIFxuIg0KPiANCj4gKyAgICAiMzogICAgICAgICAgICAgIFxuIg0KPiANCj4gKyAgICA6ICI9 JnIiIChSZXRWYWx1ZSksICI9IiAiWkMiICgqVmFsdWUpDQo+IA0KPiArICAgIDogIlpDIiAoKlZh bHVlKSwgIkpyIiAoQ29tcGFyZVZhbHVlKSwgIkpyIiAoRXhjaGFuZ2VWYWx1ZSkNCj4gDQo+ICsg ICAgOiAibWVtb3J5Ig0KPiANCj4gKyAgKTsNCj4gDQo+ICsgIHJldHVybiBSZXRWYWx1ZTsNCj4g DQo+ICt9DQo+IA0KPiArDQo+IA0KPiArLyoqDQo+IA0KPiArICBQZXJmb3JtcyBhbiBhdG9taWMg aW5jcmVtZW50IG9mIGFuIDMyLWJpdCB1bnNpZ25lZCBpbnRlZ2VyLg0KPiANCj4gKw0KPiANCj4g KyAgUGVyZm9ybXMgYW4gYXRvbWljIGluY3JlbWVudCBvZiB0aGUgMzItYml0IHVuc2lnbmVkIGlu dGVnZXIgc3BlY2lmaWVkIGJ5DQo+IA0KPiArICBWYWx1ZSBhbmQgcmV0dXJucyB0aGUgaW5jcmVt ZW50ZWQgdmFsdWUuIFRoZSBpbmNyZW1lbnQgb3BlcmF0aW9uIG11c3QgYmUNCj4gDQo+ICsgIHBl cmZvcm1lZCB1c2luZyBNUCBzYWZlIG1lY2hhbmlzbXMuIFRoZSBzdGF0ZSBvZiB0aGUgcmV0dXJu IHZhbHVlIGlzIG5vdA0KPiANCj4gKyAgZ3VhcmFudGVlZCB0byBiZSBNUCBzYWZlLg0KPiANCj4g Kw0KPiANCj4gKyAgQHBhcmFtW2luXSAgVmFsdWUgQSBwb2ludGVyIHRvIHRoZSAzMi1iaXQgdmFs dWUgdG8gaW5jcmVtZW50Lg0KPiANCj4gKw0KPiANCj4gKyAgQHJldHVybiBUaGUgaW5jcmVtZW50 ZWQgdmFsdWUuDQo+IA0KPiArDQo+IA0KPiArKiovDQo+IA0KPiArVUlOVDMyDQo+IA0KPiArRUZJ QVBJDQo+IA0KPiArSW50ZXJuYWxTeW5jSW5jcmVtZW50ICgNCj4gDQo+ICsgIElOICAgICAgdm9s YXRpbGUgVUlOVDMyICAqVmFsdWUNCj4gDQo+ICsgICkNCj4gDQo+ICt7DQo+IA0KPiArICBVSU5U MzIgIFRlbXA7DQo+IA0KPiArDQo+IA0KPiArICBUZW1wID0gKlZhbHVlOw0KPiANCj4gKyAgX19h c21fXyBfX3ZvbGF0aWxlX18gKA0KPiANCj4gKyAgICAgImRiYXIgICAgMCAgICAgICAgICBcbiIN Cj4gDQo+ICsgICAgICJhbWFkZC53ICUxLCAlMiwgJTAgXG4iDQo+IA0KPiArICAgICA6ICIrWkIi ICgqVmFsdWUpLCAiPSZyIiAoVGVtcCkNCj4gDQo+ICsgICAgIDogInIiICgxKQ0KPiANCj4gKyAg ICAgOiAibWVtb3J5Ig0KPiANCj4gKyAgKTsNCj4gDQo+ICsgIHJldHVybiAqVmFsdWU7DQo+IA0K PiArfQ0KPiANCj4gKw0KPiANCj4gKy8qKg0KPiANCj4gKyAgUGVyZm9ybXMgYW4gYXRvbWljIGRl Y3JlbWVudCBvZiBhbiAzMi1iaXQgdW5zaWduZWQgaW50ZWdlci4NCj4gDQo+ICsNCj4gDQo+ICsg IFBlcmZvcm1zIGFuIGF0b21pYyBkZWNyZW1lbnQgb2YgdGhlIDMyLWJpdCB1bnNpZ25lZCBpbnRl Z2VyIHNwZWNpZmllZCBieQ0KPiANCj4gKyAgVmFsdWUgYW5kIHJldHVybnMgdGhlIGRlY3JlbWVu dCB2YWx1ZS4gVGhlIGRlY3JlbWVudCBvcGVyYXRpb24gbXVzdCBiZQ0KPiANCj4gKyAgcGVyZm9y bWVkIHVzaW5nIE1QIHNhZmUgbWVjaGFuaXNtcy4gVGhlIHN0YXRlIG9mIHRoZSByZXR1cm4gdmFs dWUgaXMgbm90DQo+IA0KPiArICBndWFyYW50ZWVkIHRvIGJlIE1QIHNhZmUuDQo+IA0KPiArDQo+ IA0KPiArICBAcGFyYW1baW5dICBWYWx1ZSBBIHBvaW50ZXIgdG8gdGhlIDMyLWJpdCB2YWx1ZSB0 byBkZWNyZW1lbnQuDQo+IA0KPiArDQo+IA0KPiArICBAcmV0dXJuIFRoZSBkZWNyZW1lbnQgdmFs dWUuDQo+IA0KPiArDQo+IA0KPiArKiovDQo+IA0KPiArVUlOVDMyDQo+IA0KPiArRUZJQVBJDQo+ IA0KPiArSW50ZXJuYWxTeW5jRGVjcmVtZW50ICgNCj4gDQo+ICsgIElOICAgICAgdm9sYXRpbGUg VUlOVDMyICAqVmFsdWUNCj4gDQo+ICsgICkNCj4gDQo+ICt7DQo+IA0KPiArICBVSU5UMzIgIFRl bXA7DQo+IA0KPiArDQo+IA0KPiArICBUZW1wID0gKlZhbHVlOw0KPiANCj4gKyAgX19hc21fXyBf X3ZvbGF0aWxlX18gKA0KPiANCj4gKyAgICAgImRiYXIgICAgMCAgICAgICAgICBcbiINCj4gDQo+ ICsgICAgICJhbWFkZC53ICUxLCAlMiwgJTAgXG4iDQo+IA0KPiArICAgICA6ICIrWkIiICgqVmFs dWUpLCAiPSZyIiAoVGVtcCkNCj4gDQo+ICsgICAgIDogInIiICgtMSkNCj4gDQo+ICsgICAgIDog Im1lbW9yeSINCj4gDQo+ICsgICk7DQo+IA0KPiArICByZXR1cm4gKlZhbHVlOw0KPiANCj4gK30N Cj4gDQo+IC0tDQo+IDIuMjcuMA0KDQo=