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.web12.4586.1632464158082069871 for ; Thu, 23 Sep 2021 23:15:58 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=wExRWyJO; spf=pass (domain: intel.com, ip: 192.55.52.115, mailfrom: zhichao.gao@intel.com) X-IronPort-AV: E=McAfee;i="6200,9189,10116"; a="223653159" X-IronPort-AV: E=Sophos;i="5.85,319,1624345200"; d="scan'208";a="223653159" Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 23 Sep 2021 23:15:57 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.85,319,1624345200"; d="scan'208";a="514490522" Received: from fmsmsx605.amr.corp.intel.com ([10.18.126.85]) by fmsmga008.fm.intel.com with ESMTP; 23 Sep 2021 23:15:56 -0700 Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) by fmsmsx605.amr.corp.intel.com (10.18.126.85) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12; Thu, 23 Sep 2021 23:15:56 -0700 Received: from fmsmsx604.amr.corp.intel.com (10.18.126.84) by fmsmsx610.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12; Thu, 23 Sep 2021 23:15:56 -0700 Received: from fmsedg602.ED.cps.intel.com (10.1.192.136) by fmsmsx604.amr.corp.intel.com (10.18.126.84) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12 via Frontend Transport; Thu, 23 Sep 2021 23:15:56 -0700 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (104.47.66.45) by edgegateway.intel.com (192.55.55.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2242.12; Thu, 23 Sep 2021 23:15:41 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Z3GenWF6g3qe/OQu2V3JzTozlyxuNj1x3ANKbjRBUa15ZDFUS/pdzrazdNTleAmADGu+1u06Ybt7UdkxZC7YNdps0h6dep87Hjh+VRpTvARxrPTV40RbZcxulnkLtuju1PPIVXhd9aLb7h0lO+iF17aNPa0WOuhfediguXGzvSSgE6GLGzPCDJC3cR+4VXAY657RmywgwpCHqgBnoEwWFjHlFZi+qKx6T1jWn0aDRTMPrBPx26muRfDKNxMmQSL7KrCq//cPoWtA/XrnOeMjPG7fCBDNJQkWtFhkBm1jyVnKmlrA8stBY/bHQp+4Vmxlw1eBXhWJ4/5kNuhUUoEi8w== 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; bh=V/yq3I2ta4pYTO8rq2i+m5irlycAfL+nKjVSNYGzoE0=; b=XOdGM+mxCDr4/ozSY1XM0/4p2XrrW5twjuEAkYpVUOpJ80rH1BhLHMoQXRP6Pgh6R1KuzkGtlSjcNHgyw4+Wt6ZQMo5/3cJFUOF+WNpW+b/tw2ax57Wrm1d6U7cS9ENgjCJ+zYp7khNUwDBbsAlgHhBmH/atIsD/VJZLzWhRIJHxmYr5EdprC86R9ew7BRtOk9VhFSwT8cwYbQZO/kQH2WoViRG3l5ldyD6xcsf6ndYrwoZ5LpxZHhv8xR9ikMuncj0iwI6+n/f0T3isEm3K7lc5FcWlo27UbzQlBNWOww58ysZqSppRATN4EzVIi+IoPRtyd3LKhDHvMp+XXtC2lg== 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=V/yq3I2ta4pYTO8rq2i+m5irlycAfL+nKjVSNYGzoE0=; b=wExRWyJOWJ/QSMUxLk8eD1DliuMgN/9hkKb0/ki0d3RzPU+mdk9xP3/q2V0alQ6tVnP4RETFzoi3B+pcN7OltfKpikzjy+DzX3ffCDvVrERSg4HgSMGa8uvyr+PDdxaPaD68mXdugvvOtZKpciPGeKn3O9lgau9g1fkKKl5s/bA= Received: from DM4PR11MB5277.namprd11.prod.outlook.com (2603:10b6:5:388::23) by DM6PR11MB3355.namprd11.prod.outlook.com (2603:10b6:5:5d::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4523.16; Fri, 24 Sep 2021 06:15:40 +0000 Received: from DM4PR11MB5277.namprd11.prod.outlook.com ([fe80::fcab:50dd:7598:3b40]) by DM4PR11MB5277.namprd11.prod.outlook.com ([fe80::fcab:50dd:7598:3b40%4]) with mapi id 15.20.4544.018; Fri, 24 Sep 2021 06:15:41 +0000 From: "Gao, Zhichao" To: "devel@edk2.groups.io" , "Gao, Zhichao" , "gaoliming@byosoft.com.cn" , "Ni, Ray" CC: "Wang, Jian J" Subject: Re: [edk2-devel] [PATCH V2] MdeModulePkg/BootManagerMenuApp: Limit string drawing within one line Thread-Topic: [edk2-devel] [PATCH V2] MdeModulePkg/BootManagerMenuApp: Limit string drawing within one line Thread-Index: AQHXpUvsuh5reQxFl0O+Aioo+AtRhauveLWAgAAW4kCAAXPaAIAACY8AgAG+n7A= Date: Fri, 24 Sep 2021 06:15:40 +0000 Message-ID: References: <20210909072541.3069-1-zhichao.gao@intel.com> <00df01d7b027$05683ed0$1038bc70$@byosoft.com.cn> <16A756C7FFB49908.14001@groups.io> In-Reply-To: <16A756C7FFB49908.14001@groups.io> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.6.200.16 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-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 378fdacc-34a4-4e3f-958f-08d97f22bc0e x-ms-traffictypediagnostic: DM6PR11MB3355: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:2582; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 6Uvv7kfOpfAzUKYEwS8zX37MtPlF22EdLvVYtVAhjzoPpXBzP56pBzRkMPvJPo/k6n26PONmXy4hMNxD7mYHgtpdncO7oAuk4tQADvVqrvxQW7v8pkqDj7kiGLCWxdB9uHzX25sU3C5jpOXiTmuMV0c1/p5GOgPaWH10U3eOb7RtNXP3n7CX76M6ehVPIVVKeCfaKSndKQDVGgKzqdijd8Gl9wX7h6Yr94+ZQcbQeSxPdzcO0HhLNaMPT7yUb2sbjOf/fDKDvUQfofDT/oxh+7UTsr01g675Nm0vRM+YLdHuv6HTzXR/qmals5nNfPhINqBnPRs046Iz+lHKwniuPMsklL+26+Td+a32jjSfXhzRO5b8eJ20/vjxqFIXTCWLoLqA2B58haO5IaRXaGhrPlTL67HIVamSpt0cxCkV0WfobGnTaeEbo8/DlBovjPfWR50+BELJw2yHdsl8YFEANIJ/x9Qmci+ZqzEQuf3Yo/CwcjoByp58OUh75wtaieFhHdDRIEiuyl67stLSlSlo5HgVrDRGmTsCHxcvcD2nQre5whK3YS4T+10uWC5Bt8SSbQKCfaVGpv5C2T2lsdf8va0TuHgjEnaeLfi6Aeo6RQGYjq9CdAP2E7CtKeumI0xvPUjqEVc1trhMJkwGw9s5zxAPhsnagYpIauETR34NlwCLgiEpMzyetiWQIvTnfmVt6S/3lIx34F7XS5yfKqDc8cljGmGg6jYsZZT78wxjdtFYuD4qC+RLJmxZHAUcSC1t9ST+pS0fIFKXGcMHEuB6tiA3XqP1fNaLYtpFY8Yr3cvxcaNdUG7cyAAQntg+9M7ZLmyjwn57pe0j0WDeLdH7Fg== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR11MB5277.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(366004)(83380400001)(33656002)(66446008)(508600001)(2906002)(107886003)(66574015)(8936002)(186003)(4326008)(76116006)(66556008)(66946007)(8676002)(66476007)(64756008)(86362001)(110136005)(7696005)(316002)(122000001)(53546011)(38100700002)(52536014)(9686003)(55016002)(6506007)(71200400001)(26005)(38070700005)(6636002)(5660300002)(966005);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?bXdzc0NzdGVOQ3VabEZOd283Ym95d2V3OE95ZEV3ZjdYakJHNklocHhabkNI?= =?utf-8?B?bkRhMURxcE5MWHIySGVSTUdQN0xHRGh0RTFiMVZWQWZrVkNRekR4dmN0T3Bq?= =?utf-8?B?OW84Vnl3Q2U2UXMzRHl6bkVXZDBPNFZJTW10c1lacEFqTTE2cm1qOC9oc2NI?= =?utf-8?B?MzhrdVR0ZDhDcjVucFExNVh3REpxcHNid1RLRi9qR0VEL0J0UG1iWEgxeUp5?= =?utf-8?B?R21Lcm5hM2VwZHIwRi9qd2VxNUJGMmhXMzJiVXBMTHI1NStIYVJJTDVIbDlM?= =?utf-8?B?bUFkWEdJdWc0UG9ZMDVIRlh4aGhXbXRYNlJCMUxvNGlWanYxZzZVNFJSalF6?= =?utf-8?B?dW1tS09jVzJmR2lseDdyUkxmYW81YllRdVUvZEhFWEtTSCtEOFpobHpwTFJZ?= =?utf-8?B?TjRPWFZ4S2RQVUNyY1JWZUREUnpPSTV3VWV3czUzTnFKRm5HNUN5SkVvVm9P?= =?utf-8?B?WVlUaHRjWGlEWTdsd0hIS2lrVWk0MVFrMXd3aGU5c3paUXg3cStScVdpd3RC?= =?utf-8?B?VG9tMmdpTCtybnpqc0RLT0NGR0VRM0g5Y3BpTFhLRkFxSndwMWFhMGlLT3Y2?= =?utf-8?B?RzZJV1Y5RVAzbFRVdGY4Mi9sOTZkMTkraU9zOGhmcHhrZjBXM1lBbzNCUFEw?= =?utf-8?B?b0RQTVVKV0JnUG1MN3RlNG04c2RVVGtGU3VRalZtOGFSSWlGTUFYYkw1QktF?= =?utf-8?B?S2cvSW03WGhnWlJFSmtSZmEzWGl4M2dXQkE0L3NzUGZmbjMzZHhUYlh3dlVJ?= =?utf-8?B?MUdobSs0Y3RDYTdTQ1hqMnMzWUg0ekU5SEpza3ppM0RwWVkzUXJNaEh2Y2ZN?= =?utf-8?B?ZlVIdjVzRFNPM1JFc3B4UlpOcDhGRGhVY3VZL2EyMVhjLzUzdE1mcEprV3Iy?= =?utf-8?B?YVBJK1Zka3dwaWM4WG1ZTUhnYndkcVZDdzZnMEErbjFqTEFvOUxUVUtVMVND?= =?utf-8?B?bUVlQXZSRlBmcSt0U2szaDJxbVE5UFd3UmQvMG1KQ0RiWDFyVk9EbzRvb0xy?= =?utf-8?B?Yi9vWTlqeU9Kd29WOWwrT2dNZ00rSS91L0dOK3VHUnBMdHNlcUxGTEQ2bEZQ?= =?utf-8?B?clZXMzY5QVZmcUVTaTZPVk54SXY0R2xLenB1RzI4Ym1FTzRVWER4OENOMXQx?= =?utf-8?B?VDJVUDVtVmRxRzJ6ZkQzMjFUeXRNWDZKTnd2Z3NXcmw5ZTZOMnBUd3BXY2JE?= =?utf-8?B?MmduV2VudGxLQml3bFJ3bXJhWXVRNWVpNU5GbHp0NEN0TmpOZkNPR1NHUTV0?= =?utf-8?B?TjVOWGdzdmtnRkFCd3lBbkwvWHBCNERnUmRVaUNrOXBOOW1EbGRnREZIRkJW?= =?utf-8?B?N3VDbkdZM09rdVBtcGtiV1BGY3VwNzlvMENzSVNMTVY1cWVYTGFwWFpIc0RP?= =?utf-8?B?MWk4K3dZdDBFcXpmYWkwSHpSTVUySW1ma0pPRUJISmxkODlBbFA4Nk13Y3px?= =?utf-8?B?d1FMdzFRNVA2TVFIUFhaaW8yalBoQ2hiZkRIMEREZHVSRkJ0ZFhBL1JwNVhz?= =?utf-8?B?TVJqUkJ0ak04Ylc2bzVGbnJHcmYyb2NSaTkvVm5ZdTJTUGJFRzNNKys4d2ky?= =?utf-8?B?WnpMRGdZcFpwNytTNVJDTUl3NFFXQ2EwNUpublZHWmJJMTZIeGVPY1VpK3Uw?= =?utf-8?B?MHcvRm9QYUxMR3EyZG9nOXhPNWd5NDY2OTdrdXVOTEdtOTc4VFZDd0crYm1p?= =?utf-8?B?eU9JQjNSMTEweE85OS9GdHF5WkdoYmRkVllkdGNHS2lHUzRldVZmdlZnUkNm?= =?utf-8?Q?GbltkPmeqeBZsYd2B6JGJxc6TkcPuGGpynfm80z?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM4PR11MB5277.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 378fdacc-34a4-4e3f-958f-08d97f22bc0e X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Sep 2021 06:15:40.9427 (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: 4f2uAtIGz8JTnV1br3BbPmOcoBgQL3kDyGS4woqAf0OapMVQ7DapLxjt5y9td1Ky22ZIbOwDpR6iA7Nd9VcAlg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR11MB3355 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 SGkgTGltaW5nLA0KDQpPbmUgbW9yZSBpbmZvIEkgZm9yZ290IHRvIG1lbnRpb24sIHRoZSBwYXRj aCB3b3VsZCBtYWtlIHRoZSBsb25nIGJvb3Qgb3B0aW9uIHN0cmluZyBzaG93IHdpdGhpbiBvbmUg bGluZSB3aXRoICIuLi4iIGF0IHRoZSBlbmQgb2YgdGhlIHN0cmluZy4gV2hpY2ggaW5kaWNhdGUg dGhlIGJvb3QgZGVzY3JpcHRpb24gaXMgbm90IGNvbXBsZXRlZC4NCg0KVGhhbmtzLA0KWmhpY2hh bw0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IGRldmVsQGVkazIuZ3Jv dXBzLmlvIDxkZXZlbEBlZGsyLmdyb3Vwcy5pbz4gT24gQmVoYWxmIE9mIEdhbywNCj4gWmhpY2hh bw0KPiBTZW50OiBUaHVyc2RheSwgU2VwdGVtYmVyIDIzLCAyMDIxIDExOjQ3IEFNDQo+IFRvOiBk ZXZlbEBlZGsyLmdyb3Vwcy5pbzsgZ2FvbGltaW5nQGJ5b3NvZnQuY29tLmNuOyBOaSwgUmF5DQo+ IDxyYXkubmlAaW50ZWwuY29tPg0KPiBDYzogV2FuZywgSmlhbiBKIDxqaWFuLmoud2FuZ0BpbnRl bC5jb20+DQo+IFN1YmplY3Q6IFJlOiBbZWRrMi1kZXZlbF0gW1BBVENIIFYyXQ0KPiBNZGVNb2R1 bGVQa2cvQm9vdE1hbmFnZXJNZW51QXBwOiBMaW1pdCBzdHJpbmcgZHJhd2luZyB3aXRoaW4gb25l IGxpbmUNCj4gDQo+IEhpIExpbWluZywNCj4gDQo+IFllcy4gQmVjYXVzZSB0aGUgZGVzaWduIG9m IHRoZSBCTSBhcHAgaXMgbm90IGFpbWVkIHRvIGRpc3BsYXkgdGhlIGJvb3QNCj4gb3B0aW9uIG92 ZXIgb25lIGxpbmUuIEFuZCBpdCBpcyBub3QgdXNpbmcgdGhlIHNldHVwIGJyb3dzZXIgZW5naW5l Lg0KPiBUaGF0IHdvdWxkIGNhdXNlIHRoZSBkaWZmZXJlbmNlLg0KPiBJZiB3ZSB3YW50IHRvIG1h a2UgdGhlbSBhbGlnbiwgdGhlcmUgYXJlIHR3byBvcHRpb25zOg0KPiAxLiBCTSBhcHAgdG8gdXNl IHRoZSBzZXR1cCBicm93c2VyIGVuZ2luZSAyLiBhZGQgc2Nyb2xsIGJhciBsb2dpYyBmb3IgdGhl IGJvb3QNCj4gaXRlbQ0KPiANCj4gQm90aCBhYm92ZSBjaGFuZ2UgaXMgbm90IHNpbXBsZSBhbmQg bWF5IGNhdXNlIG5ldyBpc3N1ZXMuIEl0IHdvdWxkIGJlIGENCj4gbmV3IGRlc2lnbiBvdGhlciB0 aGFuIGEgYnVnIGZpeC4NCj4gDQo+IEFub3RoZXIgc29sdXRpb24gaXMgdGhlIHBhdGNoIFYxIHRv IGxpbWl0IHRoZSBib290IG9wdGlvbiBkZXNjcmlwdGlvbiB3aXRoaW4gNzINCj4gY2hhcmFjdGVy cy4gUmF5IHBvaW50ZWQgb3V0IGl0IGlzIG5vdCBhIGdvb2Qgc29sdXRpb24uDQo+IA0KPiBCVFcs IEkgd291bGQgcmVtb3ZlIHRoZSBjaGFuZ2UtaWQgaW4gbmV4dCBwYXRjaC4NCj4gDQo+IFRoYW5r cywNCj4gWmhpY2hhbw0KPiANCj4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+IEZy b206IGRldmVsQGVkazIuZ3JvdXBzLmlvIDxkZXZlbEBlZGsyLmdyb3Vwcy5pbz4gT24gQmVoYWxm IE9mDQo+ID4gZ2FvbGltaW5nDQo+ID4gU2VudDogVGh1cnNkYXksIFNlcHRlbWJlciAyMywgMjAy MSAxMDo1OSBBTQ0KPiA+IFRvOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbzsgR2FvLCBaaGljaGFvIDx6 aGljaGFvLmdhb0BpbnRlbC5jb20+OyBOaSwNCj4gPiBSYXkgPHJheS5uaUBpbnRlbC5jb20+DQo+ ID4gQ2M6IFdhbmcsIEppYW4gSiA8amlhbi5qLndhbmdAaW50ZWwuY29tPg0KPiA+IFN1YmplY3Q6 IOWbnuWkjTogW2VkazItZGV2ZWxdIFtQQVRDSCBWMl0NCj4gPiBNZGVNb2R1bGVQa2cvQm9vdE1h bmFnZXJNZW51QXBwOiBMaW1pdCBzdHJpbmcgZHJhd2luZyB3aXRoaW4gb25lDQo+IGxpbmUNCj4g Pg0KPiA+IFpoaWNoYW86DQo+ID4gICBXaXRoIHRoaXMgY2hhbmdlLCB0aGUgc2FtZSBib290IG9w dGlvbiB3aWxsIGJlIGRpc3BsYXllZCBkaWZmZXJlbnRseQ0KPiA+IGluIEJvb3RNYW5hZ2VyQXBw IGFuZCBCb290TWFuYWdlciBQYWdlLiBJcyBpdCB0aGUgZGVzaWduZWQgYmVoYXZpb3I/DQo+ID4N Cj4gPiAgIEJlc2lkZXMsIHBsZWFzZSByZW1vdmUgY2hhbmdlLWlkIGZyb20gdGhlIGNvbW1pdCBt ZXNzYWdlLg0KPiA+DQo+ID4gVGhhbmtzDQo+ID4gTGltaW5nDQo+ID4gPiAtLS0tLemCruS7tuWO n+S7ti0tLS0tDQo+ID4gPiDlj5Hku7bkuro6IGRldmVsQGVkazIuZ3JvdXBzLmlvIDxkZXZlbEBl ZGsyLmdyb3Vwcy5pbz4g5Luj6KGoIEdhbywNCj4gPiBaaGljaGFvDQo+ID4gPiDlj5HpgIHml7bp l7Q6IDIwMjHlubQ55pyIMjLml6UgMTI6NTANCj4gPiA+IOaUtuS7tuS6ujogTmksIFJheSA8cmF5 Lm5pQGludGVsLmNvbT47IGRldmVsQGVkazIuZ3JvdXBzLmlvOyBMaW1pbmcgR2FvDQo+ID4gPiA8 Z2FvbGltaW5nQGJ5b3NvZnQuY29tLmNuPg0KPiA+ID4g5oqE6YCBOiBXYW5nLCBKaWFuIEogPGpp YW4uai53YW5nQGludGVsLmNvbT4NCj4gPiA+IOS4u+mimDogUmU6IFtlZGsyLWRldmVsXSBbUEFU Q0ggVjJdDQo+ID4gTWRlTW9kdWxlUGtnL0Jvb3RNYW5hZ2VyTWVudUFwcDoNCj4gPiA+IExpbWl0 IHN0cmluZyBkcmF3aW5nIHdpdGhpbiBvbmUgbGluZQ0KPiA+ID4NCj4gPiA+IEhpIExpbWluZywN Cj4gPiA+DQo+ID4gPiBUaGUgc29sdXRpb24gaXMgZGlmZmVyZW50IHdpdGggdGhlIGZpcnN0IHRp bWUgd2UgZGlzY3Vzc2VkIG9uIHRoZQ0KPiA+IEJ1Z3ppbGxhLiBDYW4NCj4gPiA+IHlvdSByZXZp ZXcgaWYgaXQgaXMgT0sgdG8geW91Pw0KPiA+ID4NCj4gPiA+IFRoYW5rcywNCj4gPiA+IFpoaWNo YW8NCj4gPiA+DQo+ID4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiA+IEZy b206IE5pLCBSYXkgPHJheS5uaUBpbnRlbC5jb20+DQo+ID4gPiA+IFNlbnQ6IFdlZG5lc2RheSwg U2VwdGVtYmVyIDIyLCAyMDIxIDExOjI4IEFNDQo+ID4gPiA+IFRvOiBHYW8sIFpoaWNoYW8gPHpo aWNoYW8uZ2FvQGludGVsLmNvbT47IGRldmVsQGVkazIuZ3JvdXBzLmlvDQo+ID4gPiA+IENjOiBX YW5nLCBKaWFuIEogPGppYW4uai53YW5nQGludGVsLmNvbT47IExpbWluZyBHYW8NCj4gPiA+ID4g PGdhb2xpbWluZ0BieW9zb2Z0LmNvbS5jbj4NCj4gPiA+ID4gU3ViamVjdDogUkU6IFtQQVRDSCBW Ml0gTWRlTW9kdWxlUGtnL0Jvb3RNYW5hZ2VyTWVudUFwcDogTGltaXQNCj4gPiA+ID4gc3RyaW5n IGRyYXdpbmcgd2l0aGluIG9uZSBsaW5lDQo+ID4gPiA+DQo+ID4gPiA+IFJldmlld2VkLWJ5OiBS YXkgTmkgPHJheS5uaUBpbnRlbC5jb20+DQo+ID4gPiA+DQo+ID4gPiA+IC0tLS0tT3JpZ2luYWwg TWVzc2FnZS0tLS0tDQo+ID4gPiA+IEZyb206IEdhbywgWmhpY2hhbyA8emhpY2hhby5nYW9AaW50 ZWwuY29tPg0KPiA+ID4gPiBTZW50OiBUaHVyc2RheSwgU2VwdGVtYmVyIDksIDIwMjEgMzoyNiBQ TQ0KPiA+ID4gPiBUbzogZGV2ZWxAZWRrMi5ncm91cHMuaW8NCj4gPiA+ID4gQ2M6IFdhbmcsIEpp YW4gSiA8amlhbi5qLndhbmdAaW50ZWwuY29tPjsgTGltaW5nIEdhbw0KPiA+ID4gPiA8Z2FvbGlt aW5nQGJ5b3NvZnQuY29tLmNuPjsgTmksIFJheSA8cmF5Lm5pQGludGVsLmNvbT4NCj4gPiA+ID4g U3ViamVjdDogW1BBVENIIFYyXSBNZGVNb2R1bGVQa2cvQm9vdE1hbmFnZXJNZW51QXBwOiBMaW1p dA0KPiA+IHN0cmluZw0KPiA+ID4gPiBkcmF3aW5nIHdpdGhpbiBvbmUgbGluZQ0KPiA+ID4gPg0K PiA+ID4gPiBSRUY6IGh0dHBzOi8vYnVnemlsbGEudGlhbm9jb3JlLm9yZy9zaG93X2J1Zy5jZ2k/ aWQ9MzU5MA0KPiA+ID4gPg0KPiA+ID4gPiBMaW1pdCB0aGUgZHJhdyBib3ggYWx3YXlzIHdpdGhp biB0aGUgc2NyZWVuJ3MgY29sdW1uIGFuZCByb3cuDQo+ID4gPiA+IExpbWl0IHRoZSBzdHJpbmcg ZHJhd2luZyB3aXRoaW4gb25lIGxpbmUuDQo+ID4gPiA+DQo+ID4gPiA+IENoYW5nZS1JZDogSWI3 YmQ2M2NiMDdiMjM4NzVhMWU0ZjM3YWU4MGE0MjJlMWQ1ZWQ1NGYNCj4gPiA+ID4gQ2M6IEppYW4g SiBXYW5nIDxqaWFuLmoud2FuZ0BpbnRlbC5jb20+DQo+ID4gPiA+IENjOiBMaW1pbmcgR2FvIDxn YW9saW1pbmdAYnlvc29mdC5jb20uY24+DQo+ID4gPiA+IENjOiBSYXkgTmkgPHJheS5uaUBpbnRl bC5jb20+DQo+ID4gPiA+IFNpZ25lZC1vZmYtYnk6IFpoaWNoYW8gR2FvIDx6aGljaGFvLmdhb0Bp bnRlbC5jb20+DQo+ID4gPiA+IC0tLQ0KPiA+ID4gPg0KPiA+ID4gPiBWMjoNCj4gPiA+ID4NCj4g PiA+ID4gRHJvcCB0aGUgY2hhbmdlIGluIFVlZmlCb290TWFuYWdlckxpYiBpbiBWMS4NCj4gPiA+ ID4NCj4gPiA+ID4gQWRkIHRoZSBsaW1pdGF0aW9uIGluIEJvb3RNYW5hZ2VyTWVudUFwcCBpbnN0 ZWFkLg0KPiA+ID4gPg0KPiA+ID4gPg0KPiA+ID4gPiAgLi4uL0Jvb3RNYW5hZ2VyTWVudUFwcC9C b290TWFuYWdlck1lbnUuYyAgICAgIHwgNzINCj4gPiA+ID4gKysrKysrKysrKysrKysrKysrLQ0K PiA+ID4gPiAgMSBmaWxlIGNoYW5nZWQsIDY5IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0p DQo+ID4gPiA+DQo+ID4gPiA+IGRpZmYgLS1naXQNCj4gPiA+ID4NCj4gPg0KPiBhL01kZU1vZHVs ZVBrZy9BcHBsaWNhdGlvbi9Cb290TWFuYWdlck1lbnVBcHAvQm9vdE1hbmFnZXJNZW51Lg0KPiA+ ID4gPiBjDQo+ID4gPiA+DQo+ID4NCj4gYi9NZGVNb2R1bGVQa2cvQXBwbGljYXRpb24vQm9vdE1h bmFnZXJNZW51QXBwL0Jvb3RNYW5hZ2VyTWVudS4NCj4gPiA+ID4gYw0KPiA+ID4gPiBpbmRleCA5 ZTcyOTA3NGVjLi5kNGJkZWJhMDczIDEwMDY0NA0KPiA+ID4gPiAtLS0NCj4gPiA+ID4NCj4gPg0K PiBhL01kZU1vZHVsZVBrZy9BcHBsaWNhdGlvbi9Cb290TWFuYWdlck1lbnVBcHAvQm9vdE1hbmFn ZXJNZW51Lg0KPiA+ID4gPiBjDQo+ID4gPiA+ICsrKw0KPiA+ID4gPg0KPiA+DQo+IGIvTWRlTW9k dWxlUGtnL0FwcGxpY2F0aW9uL0Jvb3RNYW5hZ2VyTWVudUFwcC9Cb290TWFuYWdlck1lbnUuDQo+ ID4gPiA+IGMNCj4gPiA+ID4gQEAgLTEsNyArMSw3IEBADQo+ID4gPiA+ICAvKiogQGZpbGUNCj4g PiA+ID4NCj4gPiA+ID4gICAgVGhlIGFwcGxpY2F0aW9uIHRvIHNob3cgdGhlIEJvb3QgTWFuYWdl ciBNZW51Lg0KPiA+ID4gPg0KPiA+ID4gPg0KPiA+ID4gPg0KPiA+ID4gPiAtQ29weXJpZ2h0IChj KSAyMDExIC0gMjAxOCwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMNCj4gPiA+ID4gcmVz ZXJ2ZWQuPEJSPg0KPiA+ID4gPg0KPiA+ID4gPiArQ29weXJpZ2h0IChjKSAyMDExIC0gMjAyMSwg SW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMNCj4gPiA+ID4gK3Jlc2VydmVkLjxCUj4NCj4g PiA+ID4NCj4gPiA+ID4gIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0 ZW50DQo+ID4gPiA+DQo+ID4gPiA+DQo+ID4gPiA+DQo+ID4gPiA+ICAqKi8NCj4gPiA+ID4NCj4g PiA+ID4gQEAgLTQ1LDkgKzQ1LDU2IEBAIFByaW50U3RyaW5nQXQgKA0KPiA+ID4gPiAgICBJTiBD SEFSMTYgICAgKlN0cmluZw0KPiA+ID4gPg0KPiA+ID4gPiAgICApDQo+ID4gPiA+DQo+ID4gPiA+ ICB7DQo+ID4gPiA+DQo+ID4gPiA+ICsgIFVJTlROICAgICAgICAgU2NyZWVuV2lkdGg7DQo+ID4g PiA+DQo+ID4gPiA+ICsgIFVJTlROICAgICAgICAgU2NyZWVuUm93czsNCj4gPiA+ID4NCj4gPiA+ ID4gKyAgQ0hBUjE2ICAgICAgICAqVHVybmNhdGVTdHJpbmc7DQo+ID4gPiA+DQo+ID4gPiA+ICsg IEVGSV9TVEFUVVMgICAgU3RhdHVzOw0KPiA+ID4gPg0KPiA+ID4gPiArICBVSU5UTiAgICAgICAg IFNob3dpbmdMZW5ndGg7DQo+ID4gPiA+DQo+ID4gPiA+DQo+ID4gPiA+DQo+ID4gPiA+ICAgIGdT VC0+Q29uT3V0LT5TZXRDdXJzb3JQb3NpdGlvbiAoZ1NULT5Db25PdXQsIENvbHVtbiwgUm93KTsN Cj4gPiA+ID4NCj4gPiA+ID4gLSAgcmV0dXJuIFByaW50IChMIiVzIiwgU3RyaW5nKTsNCj4gPiA+ ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ID4gPiArICBnU1QtPkNvbk91dC0+UXVlcnlNb2Rl ICgNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgZ1NULT5Db25PdXQsDQo+ID4g PiA+DQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgIGdTVC0+Q29uT3V0LT5Nb2RlLT5Nb2RlLA0K PiA+ID4gPg0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAmU2NyZWVuV2lkdGgsDQo+ID4gPiA+ DQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICZTY3JlZW5Sb3dzDQo+ID4gPiA+DQo+ID4gPiA+ ICsgICAgICAgICAgICAgICAgICk7DQo+ID4gPiA+DQo+ID4gPiA+ICsNCj4gPiA+ID4NCj4gPiA+ ID4gKyAgaWYgKENvbHVtbiA+IChTY3JlZW5XaWR0aCAtIDEpIHx8IFJvdyA+IChTY3JlZW5Sb3dz IC0gMSkpIHsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICByZXR1cm4gMDsNCj4gPiA+ID4NCj4gPiA+ ID4gKyAgfQ0KPiA+ID4gPg0KPiA+ID4gPiArDQo+ID4gPiA+DQo+ID4gPiA+ICsgIGlmICgoU3Ry TGVuIChTdHJpbmcpICsgQ29sdW1uKSA+IChTY3JlZW5XaWR0aCAtIDEpKSB7DQo+ID4gPiA+DQo+ ID4gPiA+ICsgICAgLy8NCj4gPiA+ID4NCj4gPiA+ID4gKyAgICAvLyB8ICAgICAgLSBTY3JlZW5X aWR0aCAtICAgICAgIHwNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICAvLyAuLi5Db2x1bW4uLi4uLi4u Li4uLi4uLi4uLi4uLi4NCj4gPiA+ID4NCj4gPiA+ID4gKyAgICAvLyBUdXJuY2F0ZVN0cmluZyBs ZW5ndGggc2hvdWxkIGxlYXZlIG9uZSBjaGFyYWN0ZXIgZm9yIGRyYXcNCj4gPiA+ID4gKyBib3gN Cj4gPiBhbmQNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICAvLyByZXF1aXJlIG9uZSBjaGFyYWN0ZXIg Zm9yIHN0cmluZyBlbmQuDQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgLy8NCj4gPiA+ID4NCj4gPiA+ ID4gKyAgICBTaG93aW5nTGVuZ3RoID0gU2NyZWVuV2lkdGggLSBDb2x1bW4gLSAxOw0KPiA+ID4g Pg0KPiA+ID4gPiArICAgIFR1cm5jYXRlU3RyaW5nID0gQWxsb2NhdGVQb29sICgoU2hvd2luZ0xl bmd0aCArIDEpICogc2l6ZW9mDQo+ID4gKENIQVIxNikpOw0KPiA+ID4gPg0KPiA+ID4gPiArDQo+ ID4gPiA+DQo+ID4gPiA+ICsgICAgaWYgKFR1cm5jYXRlU3RyaW5nID09IE5VTEwpIHsNCj4gPiA+ ID4NCj4gPiA+ID4gKyAgICAgIHJldHVybiAwOw0KPiA+ID4gPg0KPiA+ID4gPiArICAgIH0NCj4g PiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ID4gPiArICAgIFN0YXR1cyA9IFN0cm5DcHlT IChUdXJuY2F0ZVN0cmluZywgU2hvd2luZ0xlbmd0aCArIDEsIFN0cmluZywNCj4gPiA+ID4gU2hv d2luZ0xlbmd0aCAtIDMpOw0KPiA+ID4gPg0KPiA+ID4gPiArDQo+ID4gPiA+DQo+ID4gPiA+ICsg ICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ID4gPg0KPiA+ID4gPiArICAgICAgRnJl ZVBvb2wgKFR1cm5jYXRlU3RyaW5nKTsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICAgIHJldHVybiAw Ow0KPiA+ID4gPg0KPiA+ID4gPiArICAgIH0NCj4gPiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0K PiA+ID4gPiArICAgICooVHVybmNhdGVTdHJpbmcgKyBTaG93aW5nTGVuZ3RoIC0gMykgPSBMJy4n Ow0KPiA+ID4gPg0KPiA+ID4gPiArICAgICooVHVybmNhdGVTdHJpbmcgKyBTaG93aW5nTGVuZ3Ro IC0gMikgPSBMJy4nOw0KPiA+ID4gPg0KPiA+ID4gPiArICAgICooVHVybmNhdGVTdHJpbmcgKyBT aG93aW5nTGVuZ3RoIC0gMSkgPSBMJy4nOw0KPiA+ID4gPg0KPiA+ID4gPiArICAgICooVHVybmNh dGVTdHJpbmcgKyBTaG93aW5nTGVuZ3RoKSAgICAgPSBMJ1wwJzsNCj4gPiA+ID4NCj4gPiA+ID4g KyAgICBTaG93aW5nTGVuZ3RoID0gUHJpbnQgKEwiJXMiLCBUdXJuY2F0ZVN0cmluZyk7DQo+ID4g PiA+DQo+ID4gPiA+ICsgICAgRnJlZVBvb2wgKFR1cm5jYXRlU3RyaW5nKTsNCj4gPiA+ID4NCj4g PiA+ID4gKyAgICByZXR1cm4gU2hvd2luZ0xlbmd0aDsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgfSBl bHNlIHsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICByZXR1cm4gUHJpbnQgKEwiJXMiLCBTdHJpbmcp Ow0KPiA+ID4gPg0KPiA+ID4gPiArICB9DQo+ID4gPiA+DQo+ID4gPiA+ICB9DQo+ID4gPiA+DQo+ ID4gPiA+DQo+ID4gPiA+DQo+ID4gPiA+ICAvKioNCj4gPiA+ID4NCj4gPiA+ID4gQEAgLTY4LDcg KzExNSwyMiBAQCBQcmludENoYXJBdCAoDQo+ID4gPiA+ICAgIENIQVIxNiAgICAgICBDaGFyYWN0 ZXINCj4gPiA+ID4NCj4gPiA+ID4gICAgKQ0KPiA+ID4gPg0KPiA+ID4gPiAgew0KPiA+ID4gPg0K PiA+ID4gPiArICBVSU5UTiAgICAgICAgIFNjcmVlbldpZHRoOw0KPiA+ID4gPg0KPiA+ID4gPiAr ICBVSU5UTiAgICAgICAgIFNjcmVlblJvd3M7DQo+ID4gPiA+DQo+ID4gPiA+ICsNCj4gPiA+ID4N Cj4gPiA+ID4gICAgZ1NULT5Db25PdXQtPlNldEN1cnNvclBvc2l0aW9uIChnU1QtPkNvbk91dCwg Q29sdW1uLCBSb3cpOw0KPiA+ID4gPg0KPiA+ID4gPiArDQo+ID4gPiA+DQo+ID4gPiA+ICsgIGdT VC0+Q29uT3V0LT5RdWVyeU1vZGUgKA0KPiA+ID4gPg0KPiA+ID4gPiArICAgICAgICAgICAgICAg ICBnU1QtPkNvbk91dCwNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgZ1NULT5D b25PdXQtPk1vZGUtPk1vZGUsDQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICZT Y3JlZW5XaWR0aCwNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgJlNjcmVlblJv d3MNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgKTsNCj4gPiA+ID4NCj4gPiA+ ID4gKw0KPiA+ID4gPg0KPiA+ID4gPiArICBpZiAoQ29sdW1uID4gKFNjcmVlbldpZHRoIC0gMSkg fHwgUm93ID4gKFNjcmVlblJvd3MgLSAxKSkgew0KPiA+ID4gPg0KPiA+ID4gPiArICAgIHJldHVy biAwOw0KPiA+ID4gPg0KPiA+ID4gPiArICB9DQo+ID4gPiA+DQo+ID4gPiA+ICsNCj4gPiA+ID4N Cj4gPiA+ID4gICAgcmV0dXJuIFByaW50IChMIiVjIiwgQ2hhcmFjdGVyKTsNCj4gPiA+ID4NCj4g PiA+ID4gIH0NCj4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+ID4gQEAgLTE5Myw3ICsy NTUsMTEgQEAgSW5pdGlhbGl6ZUJvb3RNZW51U2NyZWVuICgNCj4gPiA+ID4NCj4gPiA+ID4NCj4g PiA+ID4gICAgTWF4UHJpbnRSb3dzID0gUm93IC0gNjsNCj4gPiA+ID4NCj4gPiA+ID4gICAgVW5T ZWxlY3RhYmxlSXRtZXMgPSBUSVRMRV9UT0tFTl9DT1VOVCArIDIgKw0KPiA+ID4gSEVMUF9UT0tF Tl9DT1VOVCArIDI7DQo+ID4gPiA+DQo+ID4gPiA+IC0gIEJvb3RNZW51RGF0YS0+TWVudVNjcmVl bi5XaWR0aCA9IE1heFN0cldpZHRoICsgODsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgaWYgKE1heFN0 cldpZHRoICsgOCA+IENvbHVtbikgew0KPiA+ID4gPg0KPiA+ID4gPiArICAgIEJvb3RNZW51RGF0 YS0+TWVudVNjcmVlbi5XaWR0aCA9IENvbHVtbjsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgfSBlbHNl IHsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICBCb290TWVudURhdGEtPk1lbnVTY3JlZW4uV2lkdGgg PSBNYXhTdHJXaWR0aCArIDg7DQo+ID4gPiA+DQo+ID4gPiA+ICsgIH0NCj4gPiA+ID4NCj4gPiA+ ID4gICAgaWYgKEJvb3RNZW51RGF0YS0+SXRlbUNvdW50ICsgVW5TZWxlY3RhYmxlSXRtZXMgPiBN YXhQcmludFJvd3MpDQo+ID4gPiA+IHsNCj4gPiA+ID4NCj4gPiA+ID4gICAgICBCb290TWVudURh dGEtPk1lbnVTY3JlZW4uSGVpZ2h0ID0gTWF4UHJpbnRSb3dzOw0KPiA+ID4gPg0KPiA+ID4gPiAg ICAgIEJvb3RNZW51RGF0YS0+U2Nyb2xsQmFyQ29udHJvbC5IYXNTY3JvbGxCYXIgPSBUUlVFOw0K PiA+ID4gPg0KPiA+ID4gPiAtLQ0KPiA+ID4gPiAyLjMxLjEud2luZG93cy4xDQo+ID4gPg0KPiA+ ID4NCj4gPiA+DQo+ID4gPg0KPiA+ID4NCj4gPg0KPiA+DQo+ID4NCj4gPg0KPiA+DQo+ID4NCj4g Pg0KPiANCj4gDQo+IA0KPiANCj4gDQoNCg==