From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by mx.groups.io with SMTP id smtpd.web12.9439.1644999805427116683 for ; Wed, 16 Feb 2022 00:23:26 -0800 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=LpZG4Eym; spf=pass (domain: intel.com, ip: 134.134.136.126, mailfrom: zhihao.li@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1644999805; x=1676535805; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=IuucJZRtxEEOR9gGN3yS6xa42lS5oF2Y8t+w3+R9YOc=; b=LpZG4EymX880dT3bzXoUlKwu2/AiJ5ogMKRBsTSwnzMZjBrnmY+Q4rVC GwLwXoq3X4HyyArOnKlnjS9zvF1qDnEBDQbfHk3pFkK+vwF4Wuq70YNZx MHdc4WB+XBi1zubYHWn/YPRjIIvjqTia9RKvOJyExXxruwmAJSSvLAYBe pO5MaxBEP2oTHsqgKxsRlLu3R8eyfFFry1+CUR3v/wXDZsemmYHth/esd /9tfDzLy80kqwNadeH4Z+II2x9OEBL6u0z9xIKC4LyFmswRu56COh2v4n y4MOUTtmvJ0YBuJC774PwKmLyMsMpBQIQ1tcY9GohBD991px0u1IVghPi g==; X-IronPort-AV: E=McAfee;i="6200,9189,10259"; a="234089787" X-IronPort-AV: E=Sophos;i="5.88,373,1635231600"; d="scan'208";a="234089787" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Feb 2022 00:23:24 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.88,373,1635231600"; d="scan'208";a="681407436" Received: from orsmsx606.amr.corp.intel.com ([10.22.229.19]) by fmsmga001.fm.intel.com with ESMTP; 16 Feb 2022 00:23:24 -0800 Received: from orsmsx608.amr.corp.intel.com (10.22.229.21) by ORSMSX606.amr.corp.intel.com (10.22.229.19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.20; Wed, 16 Feb 2022 00:23:23 -0800 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by orsmsx608.amr.corp.intel.com (10.22.229.21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.20 via Frontend Transport; Wed, 16 Feb 2022 00:23:23 -0800 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (104.47.59.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.20; Wed, 16 Feb 2022 00:23:23 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Wgr/u9SBnLpVWb5hzeMEuwEfS5hOPkQULttBt2JcmOBnv8dV7nNbo9z7GxS46nz6C3Exf1xgZSuHCuxnN8QfvDbkCFZtW1aIDpl9ENvwTgMVl9vTqHwuSYN4IYa1DfobLpbr/UrQpTNX7YprFMmi9mOveqaRl/AYKabZb/gdQJUaElws3AtX5qGnKWrQE8aWWhGN3DlkEnaSh+pAtwOHeYZNfYD4bEOyvZ0itxuStL66zN4JpsTBls5rxqidioLM2ykkx8YScTk/8wpTA4biQb3wR23Kkoaud0nv71bl9chsOSkH/eBjXcgc8RThBUZMXiiQ/PMfjTW8+3hxZtRMzA== 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=IuucJZRtxEEOR9gGN3yS6xa42lS5oF2Y8t+w3+R9YOc=; b=hPfX/EYRGJD7m0FXNXccjqs3lH3zKTkSEjm5iFgZOX4yzFKk+tsmyQaGuF3TxdZDAtaRMuOWYTNtcw2eYaWhHpEyLsN/Ik8YkQMoV32/cVIjm1HNHAzwUXtHsMje+UT9cRORepOWbtO36aIelQzeVnMYItXXHlZmHYcbg6sKaLwmEcSojGwjd/hWzjS7TAaaSbUB0rRAGA5fBOGN2O5LpUKBBQf3QCtXib12tZEnCto4kcIw2JyXkjDw7B0qYQLiO9coqdEDSApiVY8+M2o1mDuUH0uECKoGgdcKRA5iSkoZdbo6E/P85aUDz8y+O6wUt0uiFgfJW/V0SiZxmldKLw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none Received: from SA0PR11MB4752.namprd11.prod.outlook.com (2603:10b6:806:99::24) by BYAPR11MB3557.namprd11.prod.outlook.com (2603:10b6:a03:b4::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4975.15; Wed, 16 Feb 2022 08:23:20 +0000 Received: from SA0PR11MB4752.namprd11.prod.outlook.com ([fe80::7130:eff9:3b2b:f66]) by SA0PR11MB4752.namprd11.prod.outlook.com ([fe80::7130:eff9:3b2b:f66%5]) with mapi id 15.20.4975.019; Wed, 16 Feb 2022 08:23:20 +0000 From: "Li, Zhihao" To: "Yao, Jiewen" , "devel@edk2.groups.io" CC: "Wang, Jian J" , "Lu, Xiaoyu1" , "Jiang, Guomin" , "Fu, Siyuan" Subject: Re: [PATCH v1] CryptoPkg: Add new hash algorithm ParallelHash256HashAll in BaseCryptLib. Thread-Topic: [PATCH v1] CryptoPkg: Add new hash algorithm ParallelHash256HashAll in BaseCryptLib. Thread-Index: AQHYHyaJH9RiOU+Wx0asA64g7nzfmqyUIfdQgAGpmlCAAAoE4IAAAnAg Date: Wed, 16 Feb 2022 08:23:20 +0000 Message-ID: References: <20220211090522.1497-1-zhihao.li@intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: 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: fbc044a6-3154-41e9-a467-08d9f1259770 x-ms-traffictypediagnostic: BYAPR11MB3557:EE_ x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:6790; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: kVs1OVmO48vCjsfO5+mX2ZauX1X6Yv0yGCzzcEbuRZMs4/mW2Nw5PI13OGvAiZMDXnXBmRa1BUp+NcIaAaadt4rz1wXOSWFCVnS5cukaie+X4Xtf0uBkrnbSmghRgHb42L5RPlSBrMEVMLD9p12OmFkOmh9EWv6Y1SS5OEq4Yy96csJsi4QnKDo2imtPLVOZGfD5vh7TkmfZZCfJJ0JRRzORAI8LIaF2cdCniCclowVSLeWaca4EIO2/dNyjEPFls8lAg3BFFROS9VMVogenP/HYru0KOXNo5fHH3yu5EdBifGUtbabaLUnfTlBs3CvZKVEpbl1waFqdemUobvn24EgsS5N2UrQ6X9KRrHUEPYpuhqq1FHyMkbbZXuR1yK68DNXPzXcXJ0fPIj8vQThjlsml6uyA763r3gjdXVSHvHwcmCfMTcYyPI0BUXjX10Oy+eOY0nu65HgwCoK5XtkSITGP3EG6KJpGNw5EJsGRHYleVvqNdUpoaweYipn1PWp+jRDqE9mUJ2eUxCyQhOglAckHH4MiRN86V6jRuW8CFMzkhzQZS7REuof0h3A87zM/v+Yn6huQzyAQ6aygSmW2q0HBmGbNGshDHBPEC621DuKYR6tK5XD/OfDEXEGQosFmOTj/zNfr6kwow0OWjKsQyNQTYYtuIwDfM3XrdQsFzx93HZHU+jEvv5kOT1tnyO+i3+ZDQf8gwiaCfksrJvXDM8m4lAKxRXHp/E0Ezr+P2GKN2jGqsvjCtmSeLSJD2F6T1zKPYMe1r10dUuiVTF1hCHOypf8aVUxR1gGGdRx2FhJngqFTTShmbFoMfDSLN6RZWQUaO4N7ghxgx6CGGvnuig== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SA0PR11MB4752.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(66946007)(45080400002)(19627235002)(316002)(55016003)(38100700002)(82960400001)(122000001)(66476007)(64756008)(966005)(66446008)(76116006)(66556008)(107886003)(4326008)(26005)(186003)(33656002)(38070700005)(71200400001)(66574015)(2906002)(9686003)(86362001)(53546011)(8676002)(54906003)(110136005)(508600001)(7696005)(30864003)(8936002)(52536014)(83380400001)(6506007)(5660300002)(559001)(579004);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?dFNLNWRhSTlVWVVRRUNubUhiMXJoMnBjeG5iYmNId29idkhyN0ppbkJyWXg0?= =?utf-8?B?NjJhU3A0d29TS2o1VWIvVVFlTGYwZmtDQjF3Z1g3QWhCVzlCdVVFQTBSclFl?= =?utf-8?B?MGdVYUY5aXRJZjFXaEZXRXpVWVNLSmYrR0lqbjNNdmRRemxhbTRUZDlyd1ho?= =?utf-8?B?MFp6Zm5DeTkvWWhCejhmRWgxTWN5OU1iam9pVzBRNGNlZmdxVjFtN1V6QkVP?= =?utf-8?B?dHo0UDJCVjNlWVRucXpsblRzQy82RGt0Z0wvMzZ5UnQxaCtlNzVueEFkdUQz?= =?utf-8?B?dW5UZ2JVRlNOVS9TblpqWkZGZVpPV3orZEFSK0JQMGQwbjhCa3k5R0VKb1ZH?= =?utf-8?B?NEJjVUY0NGp0a3NVMmVlcVRGTjRxYTZwcWgrV2VHcjd5ZW4yY0gvNXo5UlR6?= =?utf-8?B?d052VVEvRmEybU9kREtiMGhaVTVrSDJHSGJKdUxrQUFGVG1rYkl1RGUwTkdL?= =?utf-8?B?TzBLWWc1K1krRlUzM0NSU2UxQmxVZmtaKzZ3eTc5L1NsN3Jud0VKTEpXYTMz?= =?utf-8?B?NktBb3Y0NkNyazdlQ0UwSHVESUEzalBTNXFCbEFTZ1BGaWZ1YjBsQXlOL0t1?= =?utf-8?B?Zi9OVDc4c2JjMkdicnhlejNUUkRRZ1BwcXVvaGlUQXRmQ3lsNGFoWGcyb1Ft?= =?utf-8?B?TTVyZFQyZ1FoV2tvblFURHd6M2wwY0dXVTZaU1lmRmF6Tnhydmh6THFaT0Fl?= =?utf-8?B?d3htNU4ydXIrNXVwWWxMbXVscG5kcmN0Y3M5bXZqZ3VXeklGMm5GWFp1QlVY?= =?utf-8?B?c2l2T0VRSXRzNStFNXNibnR2QzF0SEVpL2JoSk9TREI2bTJzVjdGSFQ0L3Zj?= =?utf-8?B?ZWhabXBqOXlyZ0F1VXVWY1lEVTlaYnRmaFhOeFcvRGdGdlRwOFhQRGJKUU5V?= =?utf-8?B?eTRiNS92Z3Z4c3lKVWhvU2pvSFVybWs4aG9tS3FvdnU5OGhqcUpPUFZhTWp5?= =?utf-8?B?K3pJVzNSaWJCOG5HUWJWMXYxQVFoZmRFT1pMc053MGplcEJSNnM4L1N2cUlC?= =?utf-8?B?WW5OQzJ5a2FGMXRPb0NTSHo0aWE1RVQ2M3l4N2xnQ1dlQXRjR08zVlBBcWl6?= =?utf-8?B?bTZQc0ZRSGlKK2h3L1A4RFlrZnBrZjN3VmxHMFJlL0Q5TzBnblZ3N0ozV3Q0?= =?utf-8?B?dlBVcWkrTjRMZGtrUXo3ekJla1ZFenBxaksrNjEwS1lKZS9SK0lXcjcrWFYv?= =?utf-8?B?a3FwdmdYUStVbnhrMnRySmJzc2QvWGNIaGxMcUF5YzQyeDNLbmxqSzVhYUF5?= =?utf-8?B?SjhEOTB0NDZJKzdkWEFOaUxpK014YzlpYzJjU1NBYkUyaHhWVTFwZzZaRnF4?= =?utf-8?B?M0lmRVVLMmxLaThLSmdpTTNXWnVnUE1SSDByT2lBM0I0VUFia24yYVRZMzJV?= =?utf-8?B?anB1bFA1clNLT0p5clFNQlJtbE1mUmJPT3doU1V6WlRKSitoTlVWMkNwWWZW?= =?utf-8?B?VGh5c3FkZTRQRnlzOGhoVzBHSEtROTZhYXloZHh0MlZ0WHFsNGdHY2NpYXd3?= =?utf-8?B?amdmcjZ1RVRsTnVzMUpUM2w0a3ppV1RFWU93QVAwREFpM0ZmZHJQc0RlY1p0?= =?utf-8?B?bHB0akZudXpxS2VGZG1VVitudmlKVCtjbDc4cHNaODdaUGlYRVdadkpjejBt?= =?utf-8?B?MHQvc2wxS1A0ZjZNa3Zicm9rRWN3YTJUUUticlFOWVUxNnJWMEdDemhEbFFz?= =?utf-8?B?cHFBelhuMXd6UVRFUHhYazRHQXNRT2JrdUoyL1M1UkExQ0p5eStVcUR4dWsx?= =?utf-8?B?REtUMXBCb2psN3ZlcFNHckxoWW1LN3NxSkFteHgrM0k3MkZFb25tN0Vvbm85?= =?utf-8?B?TnFhUUFhQjdqL3AyaENqUXhEZVgrWmorUmorY0ZCSFVROTM3T24yeUNON05U?= =?utf-8?B?bWUxUVlGZFgxcitSaGZ4ZEZ0cGFIZWhKVHBYTjdWU01YcFVxKzVETDVjdVM3?= =?utf-8?B?ckoxSGFaSDk1eDJaa3JpSEw5emF4UGZMT3FTQU84QnpORWlqcnZnQ3ZhR0N6?= =?utf-8?B?UDdGSjZ3U0NDdTVUSTNRMUdoZVQwUzRxSk9sK3BPa2JJMFRtem1IOWtrVzM2?= =?utf-8?B?QllpR3J0eDcxTE1tTlBHaExHeE9Yci9GWkRHY2V3d08yY05CbHJqMlhSUlBk?= =?utf-8?B?SUExcDQzVmNhZnVGWGc3SDdNZUhWaTViczM5VGo2ZjI2cWsxNFZIRzZBaVM1?= =?utf-8?Q?zNCo86gGv0h7UlaGIWLMYp4=3D?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SA0PR11MB4752.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: fbc044a6-3154-41e9-a467-08d9f1259770 X-MS-Exchange-CrossTenant-originalarrivaltime: 16 Feb 2022 08:23:20.4586 (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: s06TMB7SlxD4BC2eF+B9/brD9U6Jqw3hKkmDz5dvrVPPhNTh+jUdeP9ab1uJ00T5zoq0XaxqhtSF5Si2Rg1mGQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR11MB3557 Return-Path: zhihao.li@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SW4gQ1QgNDYgcmV2aWV3IHJlc3VsdCwgaXQgcmVxdWlyZSB0aGF0IHRoZSBjb2RlIGluIG9wZW5z c2xfc2hhMyBhbmQgaW4geGtjcCBuZWVkIHRvIGJlIG1hZGUgcHJvcGVyIGF0dHJpYnV0aW9uLg0K V2Ugc2VwYXJhdGVkIHRoZWlyIGltcGxlbWVudGF0aW9uIGludG8gQ3J5cHRTaGEzLmMgYW5kIENy eXB0WGtjcC5jLCBzZXBhcmF0ZWQgdGhlaXIgaGVhZGVyIGZpbGVzIGludG8gc2hhMy5oIGFuZCB4 a2NwLmguDQoNCk5vdyB3ZSBwbGFuIHRvIGRlbGV0ZSB0aGVzZSBoZWFkZXIgZmlsZXMgYW5kIHB1 dCB0aGUgZGVjbGFyYXRpb24gYW5kIHN0cnVjdHVyZSBkZWZpbmUgaW50byBDcnlwdENzaGFrZTI1 Ni5jIGlmIGhlYWQgZmlsZSBub3Qgd2l0aGluIHRoZSBzY29wZSBvZiBDVDQ2IHN1Z2dlc3Rpb24u DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogWWFvLCBKaWV3ZW4gPGpp ZXdlbi55YW9AaW50ZWwuY29tPg0KPiBTZW50OiBXZWRuZXNkYXksIEZlYnJ1YXJ5IDE2LCAyMDIy IDM6NTIgUE0NCj4gVG86IExpLCBaaGloYW8gPHpoaWhhby5saUBpbnRlbC5jb20+OyBkZXZlbEBl ZGsyLmdyb3Vwcy5pbw0KPiBDYzogV2FuZywgSmlhbiBKIDxqaWFuLmoud2FuZ0BpbnRlbC5jb20+ OyBMdSwgWGlhb3l1MQ0KPiA8eGlhb3l1MS5sdUBpbnRlbC5jb20+OyBKaWFuZywgR3VvbWluIDxn dW9taW4uamlhbmdAaW50ZWwuY29tPjsgRnUsDQo+IFNpeXVhbiA8c2l5dWFuLmZ1QGludGVsLmNv bT4NCj4gU3ViamVjdDogUkU6IFtQQVRDSCB2MV0gQ3J5cHRvUGtnOiBBZGQgbmV3IGhhc2ggYWxn b3JpdGhtDQo+IFBhcmFsbGVsSGFzaDI1Nkhhc2hBbGwgaW4gQmFzZUNyeXB0TGliLg0KPiANCj4g QnV0IEkgZG9u4oCZdCB1bmRlcnN0YW5kIHdoeSB3ZSBuZWVkIHNoYTMuaCBhbmQgeGtjcC5oIGF0 IGFsbC4NCj4gDQo+IA0KPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gRnJvbTog TGksIFpoaWhhbyA8emhpaGFvLmxpQGludGVsLmNvbT4NCj4gPiBTZW50OiBXZWRuZXNkYXksIEZl YnJ1YXJ5IDE2LCAyMDIyIDM6NDMgUE0NCj4gPiBUbzogWWFvLCBKaWV3ZW4gPGppZXdlbi55YW9A aW50ZWwuY29tPjsgZGV2ZWxAZWRrMi5ncm91cHMuaW8NCj4gPiBDYzogV2FuZywgSmlhbiBKIDxq aWFuLmoud2FuZ0BpbnRlbC5jb20+OyBMdSwgWGlhb3l1MQ0KPiA8eGlhb3l1MS5sdUBpbnRlbC5j b20+Ow0KPiA+IEppYW5nLCBHdW9taW4gPGd1b21pbi5qaWFuZ0BpbnRlbC5jb20+OyBGdSwgU2l5 dWFuDQo+IDxzaXl1YW4uZnVAaW50ZWwuY29tPg0KPiA+IFN1YmplY3Q6IFJFOiBbUEFUQ0ggdjFd IENyeXB0b1BrZzogQWRkIG5ldyBoYXNoIGFsZ29yaXRobQ0KPiA+IFBhcmFsbGVsSGFzaDI1Nkhh c2hBbGwgaW4gQmFzZUNyeXB0TGliLg0KPiA+DQo+ID4gV2l0aCB5b3VyIGNvbW1lbnQsIHdlIHBs YW4gZG8gc29tZSBtb2RpZmljYXRpb24gZm9yIHBhcmFsbGVsaGFzaC4NCj4gPiAxLiBQbGFuIHRv IGFkZCAgYSBwYXJhbWV0ZXIgKEJsb2NrU2l6ZSkgb24gIFBhcmFsbGVsSGFzaDI1Nkhhc2hBbGwg IGZ1bmN0aW9uDQo+IHRvDQo+ID4gcmVwbGFjZSBQY2RQYXJhbGxlbEhhc2hCbG9ja051bWJlci4N Cj4gPiAyLiBQbGFuIHRvIG1vdmUgc2hhMy5oIGFuZCB4a2NwLmggdG8gQ3J5cHRvUGtnXExpYnJh cnlcQmFzZUNyeXB0TGliXEhhc2gNCj4gPiBmb2xkZXIuDQo+ID4NCj4gPg0KPiA+ID4gLS0tLS1P cmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+IEZyb206IFlhbywgSmlld2VuIDxqaWV3ZW4ueWFv QGludGVsLmNvbT4NCj4gPiA+IFNlbnQ6IFR1ZXNkYXksIEZlYnJ1YXJ5IDE1LCAyMDIyIDI6MDkg UE0NCj4gPiA+IFRvOiBMaSwgWmhpaGFvIDx6aGloYW8ubGlAaW50ZWwuY29tPjsgZGV2ZWxAZWRr Mi5ncm91cHMuaW8NCj4gPiA+IENjOiBXYW5nLCBKaWFuIEogPGppYW4uai53YW5nQGludGVsLmNv bT47IEx1LCBYaWFveXUxDQo+ID4gPiA8eGlhb3l1MS5sdUBpbnRlbC5jb20+OyBKaWFuZywgR3Vv bWluIDxndW9taW4uamlhbmdAaW50ZWwuY29tPjsgRnUsDQo+ID4gPiBTaXl1YW4gPHNpeXVhbi5m dUBpbnRlbC5jb20+DQo+ID4gPiBTdWJqZWN0OiBSRTogW1BBVENIIHYxXSBDcnlwdG9Qa2c6IEFk ZCBuZXcgaGFzaCBhbGdvcml0aG0NCj4gPiA+IFBhcmFsbGVsSGFzaDI1Nkhhc2hBbGwgaW4gQmFz ZUNyeXB0TGliLg0KPiA+ID4NCj4gPiA+IFRoYW5rcyBmb3IgdGhlIHVwZGF0ZS4NCj4gPiA+DQo+ ID4gPiBGZWVkYmFjayBiZWxvdzoNCj4gPiA+DQo+ID4gPiAxKSBIb3cgYmxvY2sgc2l6ZSBpcyBk ZXRlcm1pbmVkIGZvciBiZWxvdyBBUEk/DQo+ID4gPg0KPiA+ID4gQk9PTEVBTg0KPiA+ID4gRUZJ QVBJDQo+ID4gPiBQYXJhbGxlbEhhc2gyNTZIYXNoQWxsICgNCj4gPiA+ICAgSU4gQ09OU1QgVk9J RCAgICAgICAgICAgICpJbnB1dCwNCj4gPiA+ICAgSU4gICAgICAgVUlOVE4gICAgICAgICAgIElu cHV0Qnl0ZUxlbiwNCj4gPiA+ICAgT1VUICAgICAgVk9JRCAgICAgICAgICAgICpPdXRwdXQsDQo+ ID4gPiAgIElOICAgICAgIFVJTlROICAgICAgICAgICBPdXRwdXRCeXRlTGVuLA0KPiA+ID4gICBJ TiBDT05TVCBWT0lEICAgICAgICAgICAgKkN1c3RvbWl6YXRpb24sDQo+ID4gPiAgIElOICAgICAg IFVJTlROICAgICAgICAgICBDdXN0b21CeXRlTGVuDQo+ID4gPiAgICk7DQo+ID4gPg0KPiA+ID4g SXMgdGhhdCBkZXRlcm1pbmVkIGJ5IFBjZFBhcmFsbGVsSGFzaEJsb2NrTnVtYmVyID8NCj4gPiA+ DQo+ID4gPiBJIGRvbuKAmXQgdGhpbmsgaXQgaXMgZ29vZCBpZGVhIHRvIGxldCBhIGNyeXB0byBs aWJyYXJ5IGRldGVybWluZSBhIHBsYXRmb3JtDQo+IFBDRC4NCj4gPiA+IEZvciBleGFtcGxlLCBo b3cgZG8geW91IHN1cHBvcnQgYmluYXJ5IGNyeXB0byBtb2R1bGUgPw0KPiA+IFBsYW4gdG8gYWRk ICBhIHBhcmFtZXRlciAoQmxvY2tTaXplKSB0byByZXBsYWNlDQo+IFBjZFBhcmFsbGVsSGFzaEJs b2NrTnVtYmVyLg0KPiA+ID4NCj4gPiA+IDIpIFdoeSB3ZSBuZWVkICJzaGEzLmgiIGFuZCAieGtj cC5oIiA/DQo+ID4gPiBUaGVzZSBhcmUgb3BlbnNzbCBzcGVjaWZpYyBzdHJ1Y3R1cmUuIEl0IHNo YWxsIG5vdCBiZSBwdXQgdG8gRURLSUkgZmlsZQ0KPiBoZWFkZXIuDQo+ID4gPg0KPiA+ID4gQ3J5 cHRvUGtnXExpYnJhcnlcSW5jbHVkZSBzaGFsbCBvbmx5IGNvbnRhaW4gZ2VuZXJpYyBkZXBlbmRl bmN5IGhlYWRlci4NCj4gPiBQbGFuIHRvIG1vdmUgc2hhMy5oIGFuZCB4a2NwLmggdG8gQ3J5cHRv UGtnXExpYnJhcnlcQmFzZUNyeXB0TGliXEhhc2gNCj4gZm9sZGVyLg0KPiA+ID4NCj4gPiA+DQo+ ID4gPg0KPiA+ID4NCj4gPiA+IFRoYW5rIHlvdQ0KPiA+ID4gWWFvLCBKaWV3ZW4NCj4gPiA+DQo+ ID4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiA+IEZyb206IExpLCBaaGlo YW8gPHpoaWhhby5saUBpbnRlbC5jb20+DQo+ID4gPiA+IFNlbnQ6IEZyaWRheSwgRmVicnVhcnkg MTEsIDIwMjIgNTowNSBQTQ0KPiA+ID4gPiBUbzogZGV2ZWxAZWRrMi5ncm91cHMuaW8NCj4gPiA+ ID4gQ2M6IFlhbywgSmlld2VuIDxqaWV3ZW4ueWFvQGludGVsLmNvbT47IFdhbmcsIEppYW4gSg0K PiA+ID4gPiA8amlhbi5qLndhbmdAaW50ZWwuY29tPjsgTHUsIFhpYW95dTEgPHhpYW95dTEubHVA aW50ZWwuY29tPjsgSmlhbmcsDQo+ID4gPiA+IEd1b21pbiA8Z3VvbWluLmppYW5nQGludGVsLmNv bT47IEZ1LCBTaXl1YW4gPHNpeXVhbi5mdUBpbnRlbC5jb20+DQo+ID4gPiA+IFN1YmplY3Q6IFtQ QVRDSCB2MV0gQ3J5cHRvUGtnOiBBZGQgbmV3IGhhc2ggYWxnb3JpdGhtDQo+ID4gPiA+IFBhcmFs bGVsSGFzaDI1Nkhhc2hBbGwgaW4gQmFzZUNyeXB0TGliLg0KPiA+ID4gPg0KPiA+ID4gPiBSRUY6 IGh0dHBzOi8vYnVnemlsbGEudGlhbm9jb3JlLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzU5Ng0KPiA+ ID4gPg0KPiA+ID4gPiBQYXJhbGxlbCBoYXNoIGZ1bmN0aW9uIFBhcmFsbGVsSGFzaDI1Nkhhc2hB bGwsIGFzIGRlZmluZWQgaW4gTklTVCdzDQo+ID4gPiA+IFNwZWNpYWwgUHVibGljYXRpb24gODAw LTE4NSwgcHVibGlzaGVkIERlY2VtYmVyIDIwMTYuIEl0IHV0aWxpemVzDQo+ID4gPiA+IG11bHRp LXByb2Nlc3MgdG8gY2FsY3VsYXRlIHRoZSBkaWdlc3QuDQo+ID4gPiA+DQo+ID4gPiA+IENjOiBK aWV3ZW4gWWFvIDxqaWV3ZW4ueWFvQGludGVsLmNvbT4NCj4gPiA+ID4gQ2M6IEppYW4gSiBXYW5n IDxqaWFuLmoud2FuZ0BpbnRlbC5jb20+DQo+ID4gPiA+IENjOiBYaWFveXUgTHUgPHhpYW95dTEu bHVAaW50ZWwuY29tPg0KPiA+ID4gPiBDYzogR3VvbWluIEppYW5nIDxndW9taW4uamlhbmdAaW50 ZWwuY29tPg0KPiA+ID4gPiBDYzogU2l5dWFuIEZ1IDxzaXl1YW4uZnVAaW50ZWwuY29tPg0KPiA+ ID4gPg0KPiA+ID4gPiBTaWduZWQtb2ZmLWJ5OiBaaGloYW8gTGkgPHpoaWhhby5saUBpbnRlbC5j b20+DQo+ID4gPiA+IC0tLQ0KPiA+ID4gPiAgQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGli L0hhc2gvQ3J5cHRDU2hha2UyNTYuYyAgICAgICAgICAgICAgICAgICB8IDMxMw0KPiA+ID4gPiAr KysrKysrKysrKysrKysrKysrKw0KPiA+ID4gPiAgQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0 TGliL0hhc2gvQ3J5cHRQYXJhbGxlbEhhc2guYyAgICAgICAgICAgICAgICB8IDI3NQ0KPiA+ID4g PiArKysrKysrKysrKysrKysrKw0KPiA+ID4gPiAgQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0 TGliL0hhc2gvQ3J5cHRTaGEzLmMgICAgICAgICAgICAgICAgICAgICAgICB8IDEwMg0KPiA+ID4g KysrKysrKw0KPiA+ID4gPiAgQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL0hhc2gvQ3J5 cHRYa2NwLmMgICAgICAgICAgICAgICAgICAgICAgICB8ICA1Mw0KPiArKysrDQo+ID4gPiA+ICBD cnlwdG9Qa2cvVGVzdC9Vbml0VGVzdC9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9QYXJhbGxlbGhhc2hU ZXN0cy5jICAgICAgIHwNCj4gPiA+IDE1Mg0KPiA+ID4gPiArKysrKysrKysrDQo+ID4gPiA+ICBD cnlwdG9Qa2cvQ3J5cHRvUGtnLmRlYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgICA5ICstDQo+ID4gPiA+ICBDcnlwdG9Qa2cvSW5jbHVkZS9MaWJyYXJ5 L0Jhc2VDcnlwdExpYi5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDI5ICstDQo+ ID4gPiA+ICBDcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWIvU21tQ3J5cHRMaWIuaW5mICAg ICAgICAgICAgICAgICAgICAgICAgIHwgIDEyICstDQo+ID4gPiA+ICBDcnlwdG9Qa2cvTGlicmFy eS9JbmNsdWRlL0NydExpYlN1cHBvcnQuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg ICA1ICstDQo+ID4gPiA+ICBDcnlwdG9Qa2cvTGlicmFyeS9JbmNsdWRlL3NoYTMuaCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDMyICsrDQo+ID4gPiA+ICBDcnlwdG9Q a2cvTGlicmFyeS9JbmNsdWRlL3hrY3AuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgIDIzICsrDQo+ID4gPiA+ICBDcnlwdG9Qa2cvVGVzdC9Vbml0VGVzdC9MaWJyYXJ5 L0Jhc2VDcnlwdExpYi9UZXN0QmFzZUNyeXB0TGliLmgNCj4gfCAgIDMNCj4gPiA+ICstDQo+ID4g PiA+DQo+IENyeXB0b1BrZy9UZXN0L1VuaXRUZXN0L0xpYnJhcnkvQmFzZUNyeXB0TGliL1Rlc3RC YXNlQ3J5cHRMaWJIb3N0LmluZg0KPiA+ID4gfCAgIDcgKw0KPiA+ID4gPg0KPiBDcnlwdG9Qa2cv VGVzdC9Vbml0VGVzdC9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9UZXN0QmFzZUNyeXB0TGliU2hlbGwu aW5mIHwNCj4gPiA+IDYgKw0KPiA+ID4gPiAgMTQgZmlsZXMgY2hhbmdlZCwgMTAxNiBpbnNlcnRp b25zKCspLCA1IGRlbGV0aW9ucygtKQ0KPiA+ID4gPg0KPiA+ID4gPiBkaWZmIC0tZ2l0IGEvQ3J5 cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL0hhc2gvQ3J5cHRDU2hha2UyNTYuYw0KPiA+ID4g PiBiL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9IYXNoL0NyeXB0Q1NoYWtlMjU2LmMN Cj4gPiA+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiA+ID4gaW5kZXggMDAwMDAwMDAwMC4u NWVmY2VkM2Y0Ng0KPiA+ID4gPiAtLS0gL2Rldi9udWxsDQo+ID4gPiA+ICsrKyBiL0NyeXB0b1Br Zy9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9IYXNoL0NyeXB0Q1NoYWtlMjU2LmMNCj4gPiA+ID4gQEAg LTAsMCArMSwzMTMgQEANCj4gPiA+ID4gKy8qKiBAZmlsZQ0KPiA+ID4gPg0KPiA+ID4gPiArICBj U0hBS0UtMjU2IERpZ2VzdCBXcmFwcGVyIEltcGxlbWVudGF0aW9ucy4NCj4gPiA+ID4NCj4gPiA+ ID4gKw0KPiA+ID4gPg0KPiA+ID4gPiArQ29weXJpZ2h0IChjKSAyMDIyLCBJbnRlbCBDb3Jwb3Jh dGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4gPiA+DQo+ID4gPiA+ICtTUERYLUxp Y2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiA+ID4gPg0KPiA+ID4gPiAr DQo+ID4gPiA+DQo+ID4gPiA+ICsqKi8NCj4gPiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ ID4gPiArI2luY2x1ZGUgIkludGVybmFsQ3J5cHRMaWIuaCINCj4gPiA+ID4NCj4gPiA+ID4gKyNp bmNsdWRlICJzaGEzLmgiDQo+ID4gPiA+DQo+ID4gPiA+ICsjaW5jbHVkZSAieGtjcC5oIg0KPiA+ ID4gPg0KPiA+ID4gPiArDQo+ID4gPiA+DQo+ID4gPiA+ICsjZGVmaW5lICBDU0hBS0UyNTZfU0VD VVJJVFlfU1RSRU5HVEggICAgMjU2DQo+ID4gPiA+DQo+ID4gPiA+ICsjZGVmaW5lICBDU0hBS0Uy NTZfUkFURV9JTl9CWVRFUyAgICAgICAgMTM2DQo+ID4gPiA+DQo+ID4gPiA+ICsNCj4gPiA+ID4N Cj4gPiA+ID4gK2NvbnN0IENIQVI4IG1aZXJvUGFkZGluZ1tDU0hBS0UyNTZfUkFURV9JTl9CWVRF U10gPSB7MH07DQo+ID4gPiA+DQo+ID4gPiA+ICsNCj4gPiA+ID4NCj4gPiA+ID4gK1VJTlRODQo+ ID4gPiA+DQo+ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4NCj4gPiA+ID4gK0xlZnRFbmNvZGUgKA0K PiA+ID4gPg0KPiA+ID4gPiArICBPVVQgVUlOVDggICAgICpFbmNidWYsDQo+ID4gPiA+DQo+ID4g PiA+ICsgIElOICBVSU5UTiAgICAgVmFsdWUNCj4gPiA+ID4NCj4gPiA+ID4gKyAgKQ0KPiA+ID4g Pg0KPiA+ID4gPiArew0KPiA+ID4gPg0KPiA+ID4gPiArICByZXR1cm4gbGVmdF9lbmNvZGUgKEVu Y2J1ZiwgVmFsdWUpOw0KPiA+ID4gPg0KPiA+ID4gPiArfQ0KPiA+ID4gPg0KPiA+ID4gPiArDQo+ ID4gPiA+DQo+ID4gPiA+ICtVSU5UTg0KPiA+ID4gPg0KPiA+ID4gPiArRUZJQVBJDQo+ID4gPiA+ DQo+ID4gPiA+ICtSaWdodEVuY29kZSAoDQo+ID4gPiA+DQo+ID4gPiA+ICsgIE9VVCBVSU5UOCAg ICAgKkVuY2J1ZiwNCj4gPiA+ID4NCj4gPiA+ID4gKyAgSU4gIFVJTlROICAgICBWYWx1ZQ0KPiA+ ID4gPg0KPiA+ID4gPiArICApDQo+ID4gPiA+DQo+ID4gPiA+ICt7DQo+ID4gPiA+DQo+ID4gPiA+ ICsgIHJldHVybiByaWdodF9lbmNvZGUgKEVuY2J1ZiwgVmFsdWUpOw0KPiA+ID4gPg0KPiA+ID4g PiArfQ0KPiA+ID4gPg0KPiA+ID4gPiArDQo+ID4gPiA+DQo+ID4gPiA+ICsvKioNCj4gPiA+ID4N Cj4gPiA+ID4gKyAgUmV0cmlldmVzIHRoZSBzaXplLCBpbiBieXRlcywgb2YgdGhlIGNvbnRleHQg YnVmZmVyIHJlcXVpcmVkIGZvcg0KPiA+ID4gPiArIGNTSEFLRS0yNTYNCj4gPiA+ID4gaGFzaCBv cGVyYXRpb25zLg0KPiA+ID4gPg0KPiA+ID4gPiArDQo+ID4gPiA+DQo+ID4gPiA+ICsgIEByZXR1 cm4gIFRoZSBzaXplLCBpbiBieXRlcywgb2YgdGhlIGNvbnRleHQgYnVmZmVyIHJlcXVpcmVkIGZv cg0KPiA+ID4gPiArIGNTSEFLRS0yNTYNCj4gPiA+ID4gaGFzaCBvcGVyYXRpb25zLg0KPiA+ID4g Pg0KPiA+ID4gPiArDQo+ID4gPiA+DQo+ID4gPiA+ICsqKi8NCj4gPiA+ID4NCj4gPiA+ID4gK1VJ TlRODQo+ID4gPiA+DQo+ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4NCj4gPiA+ID4gK0NTaGFrZTI1 NkdldENvbnRleHRTaXplICgNCj4gPiA+ID4NCj4gPiA+ID4gKyAgVk9JRA0KPiA+ID4gPg0KPiA+ ID4gPiArICApDQo+ID4gPiA+DQo+ID4gPiA+ICt7DQo+ID4gPiA+DQo+ID4gPiA+ICsgIHJldHVy biAoVUlOVE4pIChzaXplb2YgKEtFQ0NBSzE2MDBfQ1RYKSk7DQo+ID4gPiA+DQo+ID4gPiA+ICt9 DQo+ID4gPiA+DQo+ID4gPiA+ICsNCj4gPiA+ID4NCj4gPiA+ID4gKy8qKg0KPiA+ID4gPg0KPiA+ ID4gPiArICBJbml0aWFsaXplcyB1c2VyLXN1cHBsaWVkIG1lbW9yeSBwb2ludGVkIGJ5IENTaGFr ZTI1NkNvbnRleHQgYXMNCj4gPiA+ID4gKyBjU0hBS0UtMjU2DQo+ID4gPiA+IGhhc2ggY29udGV4 dCBmb3INCj4gPiA+ID4NCj4gPiA+ID4gKyAgc3Vic2VxdWVudCB1c2UuDQo+ID4gPiA+DQo+ID4g PiA+ICsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgQHBhcmFtW291dF0gQ1NoYWtlMjU2Q29udGV4dCAg IFBvaW50ZXIgdG8gY1NIQUtFLTI1NiBjb250ZXh0DQo+IGJlaW5nDQo+ID4gPiA+IGluaXRpYWxp emVkLg0KPiA+ID4gPg0KPiA+ID4gPiArICBAcGFyYW1baW5dICBPdXRwdXRMZW4gICAgICAgICAg VGhlIGRlc2lyZWQgbnVtYmVyIG9mIG91dHB1dCBsZW5ndGggaW4NCj4gPiA+IGJ5dGVzLg0KPiA+ ID4gPg0KPiA+ID4gPiArICBAcGFyYW1baW5dICBOYW1lICAgICAgICAgICAgICAgUG9pbnRlciB0 byB0aGUgZnVuY3Rpb24gbmFtZSBzdHJpbmcuDQo+ID4gPiA+DQo+ID4gPiA+ICsgIEBwYXJhbVtp bl0gIE5hbWVMZW4gICAgICAgICAgICBUaGUgbGVuZ3RoIG9mIHRoZSBmdW5jdGlvbiBuYW1lIGlu IGJ5dGVzLg0KPiA+ID4gPg0KPiA+ID4gPiArICBAcGFyYW1baW5dICBDdXN0b21pemF0aW9uICAg ICAgUG9pbnRlciB0byB0aGUgY3VzdG9taXphdGlvbiBzdHJpbmcuDQo+ID4gPiA+DQo+ID4gPiA+ ICsgIEBwYXJhbVtpbl0gIEN1c3RvbWl6YXRpb25MZW4gICBUaGUgbGVuZ3RoIG9mIHRoZSBjdXN0 b21pemF0aW9uDQo+IHN0cmluZyBpbg0KPiA+ID4gPiBieXRlcy4NCj4gPiA+ID4NCj4gPiA+ID4g Kw0KPiA+ID4gPg0KPiA+ID4gPiArICBAcmV0dmFsIFRSVUUgICBjU0hBS0UtMjU2IGNvbnRleHQg aW5pdGlhbGl6YXRpb24gc3VjY2VlZGVkLg0KPiA+ID4gPg0KPiA+ID4gPiArICBAcmV0dmFsIEZB TFNFICBjU0hBS0UtMjU2IGNvbnRleHQgaW5pdGlhbGl6YXRpb24gZmFpbGVkLg0KPiA+ID4gPg0K PiA+ID4gPiArICBAcmV0dmFsIEZBTFNFICBUaGlzIGludGVyZmFjZSBpcyBub3Qgc3VwcG9ydGVk Lg0KPiA+ID4gPg0KPiA+ID4gPiArDQo+ID4gPiA+DQo+ID4gPiA+ICsqKi8NCj4gPiA+ID4NCj4g PiA+ID4gK0JPT0xFQU4NCj4gPiA+ID4NCj4gPiA+ID4gK0VGSUFQSQ0KPiA+ID4gPg0KPiA+ID4g PiArQ1NoYWtlMjU2SW5pdCAoDQo+ID4gPiA+DQo+ID4gPiA+ICsgIE9VVCAgIFZPSUQgICAgICAg ICAgKkNTaGFrZTI1NkNvbnRleHQsDQo+ID4gPiA+DQo+ID4gPiA+ICsgIElOICAgIFVJTlROICAg ICAgICAgT3V0cHV0TGVuLA0KPiA+ID4gPg0KPiA+ID4gPiArICBJTiAgICBDT05TVCBWT0lEICAg ICpOYW1lLA0KPiA+ID4gPg0KPiA+ID4gPiArICBJTiAgICBVSU5UTiAgICAgICAgIE5hbWVMZW4s DQo+ID4gPiA+DQo+ID4gPiA+ICsgIElOICAgIENPTlNUIFZPSUQgICAgKkN1c3RvbWl6YXRpb24s DQo+ID4gPiA+DQo+ID4gPiA+ICsgIElOICAgIFVJTlROICAgICAgICAgQ3VzdG9taXphdGlvbkxl bg0KPiA+ID4gPg0KPiA+ID4gPiArICApDQo+ID4gPiA+DQo+ID4gPiA+ICt7DQo+ID4gPiA+DQo+ ID4gPiA+ICsgIEJPT0xFQU4gICBTdGF0dXM7DQo+ID4gPiA+DQo+ID4gPiA+ICsgIHVuc2lnbmVk IGNoYXIgRW5jQnVmW3NpemVvZihzaXplX3QpKzFdOw0KPiA+ID4gPg0KPiA+ID4gPiArICBVSU5U TiAgICAgRW5jTGVuOw0KPiA+ID4gPg0KPiA+ID4gPiArICBVSU5UTiAgICAgQWJzb3JiTGVuOw0K PiA+ID4gPg0KPiA+ID4gPiArICBVSU5UTiAgICAgUGFkTGVuOw0KPiA+ID4gPg0KPiA+ID4gPiAr DQo+ID4gPiA+DQo+ID4gPiA+ICsgIC8vDQo+ID4gPiA+DQo+ID4gPiA+ICsgIC8vIENoZWNrIGlu cHV0IHBhcmFtZXRlcnMuDQo+ID4gPiA+DQo+ID4gPiA+ICsgIC8vDQo+ID4gPiA+DQo+ID4gPiA+ ICsgIGlmIChDU2hha2UyNTZDb250ZXh0ID09IE5VTEwgfHwNCj4gPiA+ID4NCj4gPiA+ID4gKyAg ICAgIE91dHB1dExlbiA9PSAwIHx8DQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgICAoTmFtZUxlbiAh PSAwICYmIE5hbWUgPT0gTlVMTCkgfHwNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICAgIChDdXN0b21p emF0aW9uTGVuICE9IDAgJiYgQ3VzdG9taXphdGlvbiA9PSBOVUxMKSkgew0KPiA+ID4gPg0KPiA+ ID4gPiArICAgIHJldHVybiBGQUxTRTsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgfQ0KPiA+ID4gPg0K PiA+ID4gPiArDQo+ID4gPiA+DQo+ID4gPiA+ICsgIC8vDQo+ID4gPiA+DQo+ID4gPiA+ICsgIC8v IEluaXRpYWxpemUgS0VDQ0FLIGNvbnRleHQgd2l0aCBwYWQgdmFsdWUgYW5kIGJsb2NrIHNpemUu DQo+ID4gPiA+DQo+ID4gPiA+ICsgIC8vDQo+ID4gPiA+DQo+ID4gPiA+ICsgIGlmIChOYW1lTGVu ID09IDAgJiYgQ3VzdG9taXphdGlvbkxlbiA9PSAwKSB7DQo+ID4gPiA+DQo+ID4gPiA+ICsgICAg Ly8NCj4gPiA+ID4NCj4gPiA+ID4gKyAgICAvLyBXaGVuIE4gYW5kIFMgYXJlIGJvdGggZW1wdHkg c3RyaW5ncywgY1NIQUtFKFgsIEwsIE4sIFMpIGlzDQo+ID4gPiA+ICsgZXF1aXZhbGVudCB0bw0K PiA+ID4gPg0KPiA+ID4gPiArICAgIC8vIFNIQUtFIGFzIGRlZmluZWQgaW4gRklQUyAyMDIuDQo+ ID4gPiA+DQo+ID4gPiA+ICsgICAgLy8NCj4gPiA+ID4NCj4gPiA+ID4gKyAgICByZXR1cm4gKEJP T0xFQU4pIGluaXQgKA0KPiA+ID4gPg0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgIChL RUNDQUsxNjAwX0NUWCAqKSBDU2hha2UyNTZDb250ZXh0LA0KPiA+ID4gPg0KPiA+ID4gPiArICAg ICAgICAgICAgICAgICAgICAgICdceDFmJywNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAoS0VDQ0FLMTYwMF9XSURUSCAtIENTSEFLRTI1Nl9TRUNVUklUWV9TVFJFTkdU SA0KPiA+ID4gPiArICogMikgLyA4LA0KPiA+ID4gPg0KPiA+ID4gPiArICAgICAgICAgICAgICAg ICAgICAgIE91dHB1dExlbg0KPiA+ID4gPg0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAg ICk7DQo+ID4gPiA+DQo+ID4gPiA+ICsgIH0NCj4gPiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0K PiA+ID4gPiArICBTdGF0dXMgPSAoQk9PTEVBTikgaW5pdCAoDQo+ID4gPiA+DQo+ID4gPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgKEtFQ0NBSzE2MDBfQ1RYICopIENTaGFrZTI1NkNvbnRleHQs DQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgJ1x4MDQnLA0KPiA+ID4g Pg0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgIChLRUNDQUsxNjAwX1dJRFRIIC0gQ1NI QUtFMjU2X1NFQ1VSSVRZX1NUUkVOR1RIDQo+ID4gPiA+ICsgKiAyKSAvIDgsDQo+ID4gPiA+DQo+ ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0TGVuDQo+ID4gPiA+DQo+ID4gPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgKTsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgaWYgKCFTdGF0 dXMpIHsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICByZXR1cm4gRkFMU0U7DQo+ID4gPiA+DQo+ID4g PiA+ICsgIH0NCj4gPiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ID4gPiArICBBYnNvcmJM ZW4gPSAwOw0KPiA+ID4gPg0KPiA+ID4gPiArICAvLw0KPiA+ID4gPg0KPiA+ID4gPiArICAvLyBB YnNvcmIgQWJzb3JiIGJ5dGVwYWQoLi4sIHJhdGUpLg0KPiA+ID4gPg0KPiA+ID4gPiArICAvLw0K PiA+ID4gPg0KPiA+ID4gPiArICBFbmNMZW4gPSBsZWZ0X2VuY29kZSAoRW5jQnVmLCBDU0hBS0Uy NTZfUkFURV9JTl9CWVRFUyk7DQo+ID4gPiA+DQo+ID4gPiA+ICsgIFN0YXR1cyA9IChCT09MRUFO KSBzaGEzX3VwZGF0ZSAoKEtFQ0NBSzE2MDBfQ1RYICopDQo+ID4gPiA+ICsgQ1NoYWtlMjU2Q29u dGV4dCwNCj4gPiA+ID4gRW5jQnVmLCBFbmNMZW4pOw0KPiA+ID4gPg0KPiA+ID4gPiArICBpZiAo IVN0YXR1cykgew0KPiA+ID4gPg0KPiA+ID4gPiArICAgIHJldHVybiBGQUxTRTsNCj4gPiA+ID4N Cj4gPiA+ID4gKyAgfQ0KPiA+ID4gPg0KPiA+ID4gPiArICBBYnNvcmJMZW4gKz0gRW5jTGVuOw0K PiA+ID4gPg0KPiA+ID4gPiArDQo+ID4gPiA+DQo+ID4gPiA+ICsgIC8vDQo+ID4gPiA+DQo+ID4g PiA+ICsgIC8vIEFic29yYiBlbmNvZGVfc3RyaW5nKE4pLg0KPiA+ID4gPg0KPiA+ID4gPiArICAv Lw0KPiA+ID4gPg0KPiA+ID4gPiArICBFbmNMZW4gPSBsZWZ0X2VuY29kZSAoRW5jQnVmLCBOYW1l TGVuICogOCk7DQo+ID4gPiA+DQo+ID4gPiA+ICsgIFN0YXR1cyA9IChCT09MRUFOKSBzaGEzX3Vw ZGF0ZSAoKEtFQ0NBSzE2MDBfQ1RYICopDQo+ID4gPiA+ICsgQ1NoYWtlMjU2Q29udGV4dCwNCj4g PiA+ID4gRW5jQnVmLCBFbmNMZW4pOw0KPiA+ID4gPg0KPiA+ID4gPiArICBpZiAoIVN0YXR1cykg ew0KPiA+ID4gPg0KPiA+ID4gPiArICAgIHJldHVybiBGQUxTRTsNCj4gPiA+ID4NCj4gPiA+ID4g KyAgfQ0KPiA+ID4gPg0KPiA+ID4gPiArICBBYnNvcmJMZW4gKz0gRW5jTGVuOw0KPiA+ID4gPg0K PiA+ID4gPiArICBTdGF0dXMgPSAoQk9PTEVBTikgc2hhM191cGRhdGUgKChLRUNDQUsxNjAwX0NU WCAqKQ0KPiA+ID4gPiArIENTaGFrZTI1NkNvbnRleHQsDQo+ID4gPiA+IE5hbWUsIE5hbWVMZW4p Ow0KPiA+ID4gPg0KPiA+ID4gPiArICBpZiAoIVN0YXR1cykgew0KPiA+ID4gPg0KPiA+ID4gPiAr ICAgIHJldHVybiBGQUxTRTsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgfQ0KPiA+ID4gPg0KPiA+ID4g PiArICBBYnNvcmJMZW4gKz0gTmFtZUxlbjsNCj4gPiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0K PiA+ID4gPiArICAvLw0KPiA+ID4gPg0KPiA+ID4gPiArICAvLyBBYnNvcmIgZW5jb2RlX3N0cmlu ZyhTKS4NCj4gPiA+ID4NCj4gPiA+ID4gKyAgLy8NCj4gPiA+ID4NCj4gPiA+ID4gKyAgRW5jTGVu ID0gbGVmdF9lbmNvZGUgKEVuY0J1ZiwgQ3VzdG9taXphdGlvbkxlbiAqIDgpOw0KPiA+ID4gPg0K PiA+ID4gPiArICBTdGF0dXMgPSAoQk9PTEVBTikgc2hhM191cGRhdGUgKChLRUNDQUsxNjAwX0NU WCAqKQ0KPiA+ID4gPiArIENTaGFrZTI1NkNvbnRleHQsDQo+ID4gPiA+IEVuY0J1ZiwgRW5jTGVu KTsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgaWYgKCFTdGF0dXMpIHsNCj4gPiA+ID4NCj4gPiA+ID4g KyAgICByZXR1cm4gRkFMU0U7DQo+ID4gPiA+DQo+ID4gPiA+ICsgIH0NCj4gPiA+ID4NCj4gPiA+ ID4gKyAgQWJzb3JiTGVuICs9IEVuY0xlbjsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgU3RhdHVzID0g KEJPT0xFQU4pIHNoYTNfdXBkYXRlICgoS0VDQ0FLMTYwMF9DVFggKikNCj4gPiA+ID4gKyBDU2hh a2UyNTZDb250ZXh0LA0KPiA+ID4gPiBDdXN0b21pemF0aW9uLCBDdXN0b21pemF0aW9uTGVuKTsN Cj4gPiA+ID4NCj4gPiA+ID4gKyAgaWYgKCFTdGF0dXMpIHsNCj4gPiA+ID4NCj4gPiA+ID4gKyAg ICByZXR1cm4gRkFMU0U7DQo+ID4gPiA+DQo+ID4gPiA+ICsgIH0NCj4gPiA+ID4NCj4gPiA+ID4g KyAgQWJzb3JiTGVuICs9IEN1c3RvbWl6YXRpb25MZW47DQo+ID4gPiA+DQo+ID4gPiA+ICsNCj4g PiA+ID4NCj4gPiA+ID4gKyAgLy8NCj4gPiA+ID4NCj4gPiA+ID4gKyAgLy8gQWJzb3JiIHplcm8g cGFkZGluZyB1cCB0byByYXRlLg0KPiA+ID4gPg0KPiA+ID4gPiArICAvLw0KPiA+ID4gPg0KPiA+ ID4gPiArICBQYWRMZW4gPSBDU0hBS0UyNTZfUkFURV9JTl9CWVRFUyAtIEFic29yYkxlbiAlDQo+ ID4gPiA+IENTSEFLRTI1Nl9SQVRFX0lOX0JZVEVTOw0KPiA+ID4gPg0KPiA+ID4gPiArICBTdGF0 dXMgPSAoQk9PTEVBTikgc2hhM191cGRhdGUgKChLRUNDQUsxNjAwX0NUWCAqKQ0KPiA+ID4gPiAr IENTaGFrZTI1NkNvbnRleHQsDQo+ID4gPiA+IG1aZXJvUGFkZGluZywgUGFkTGVuKTsNCj4gPiA+ ID4NCj4gPiA+ID4gKyAgaWYgKCFTdGF0dXMpIHsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICByZXR1 cm4gRkFMU0U7DQo+ID4gPiA+DQo+ID4gPiA+ICsgIH0NCj4gPiA+ID4NCj4gPiA+ID4gKw0KPiA+ ID4gPg0KPiA+ID4gPiArICByZXR1cm4gVFJVRTsNCj4gPiA+ID4NCj4gPiA+ID4gK30NCj4gPiA+ ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ID4gPiArLyoqDQo+ID4gPiA+DQo+ID4gPiA+ICsg IERpZ2VzdHMgdGhlIGlucHV0IGRhdGEgYW5kIHVwZGF0ZXMgY1NIQUtFLTI1NiBjb250ZXh0Lg0K PiA+ID4gPg0KPiA+ID4gPiArDQo+ID4gPiA+DQo+ID4gPiA+ICsgIFRoaXMgZnVuY3Rpb24gcGVy Zm9ybXMgY1NIQUtFLTI1NiBkaWdlc3Qgb24gYSBkYXRhIGJ1ZmZlciBvZiB0aGUNCj4gPiA+ID4g KyBzcGVjaWZpZWQNCj4gPiA+ID4gc2l6ZS4NCj4gPiA+ID4NCj4gPiA+ID4gKyAgSXQgY2FuIGJl IGNhbGxlZCBtdWx0aXBsZSB0aW1lcyB0byBjb21wdXRlIHRoZSBkaWdlc3Qgb2YgbG9uZyBvcg0K PiA+ID4gPiArIGRpc2NvbnRpbnVvdXMNCj4gPiA+ID4gZGF0YSBzdHJlYW1zLg0KPiA+ID4gPg0K PiA+ID4gPiArICBjU0hBS0UtMjU2IGNvbnRleHQgc2hvdWxkIGJlIGFscmVhZHkgY29ycmVjdGx5 IGluaXRpYWxpemVkIGJ5DQo+ID4gPiA+ICsgQ1NoYWtlMjU2SW5pdCgpLA0KPiA+ID4gPiBhbmQg c2hvdWxkIG5vdCBiZSBmaW5hbGl6ZWQNCj4gPiA+ID4NCj4gPiA+ID4gKyAgYnkgQ1NoYWtlMjU2 RmluYWwoKS4gQmVoYXZpb3Igd2l0aCBpbnZhbGlkIGNvbnRleHQgaXMgdW5kZWZpbmVkLg0KPiA+ ID4gPg0KPiA+ID4gPiArDQo+ID4gPiA+DQo+ID4gPiA+ICsgIEBwYXJhbVtpbiwgb3V0XSAgQ1No YWtlMjU2Q29udGV4dCAgIFBvaW50ZXIgdG8gdGhlIGNTSEFLRS0yNTYNCj4gY29udGV4dC4NCj4g PiA+ID4NCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgICAgICBEYXRhICAgICAgICAgICAgICAgUG9p bnRlciB0byB0aGUgYnVmZmVyIGNvbnRhaW5pbmcgdGhlIGRhdGENCj4gdG8NCj4gPiA+IGJlDQo+ ID4gPiA+IGhhc2hlZC4NCj4gPiA+ID4NCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgICAgICBEYXRh U2l6ZSAgICAgICAgICAgU2l6ZSBvZiBEYXRhIGJ1ZmZlciBpbiBieXRlcy4NCj4gPiA+ID4NCj4g PiA+ID4gKw0KPiA+ID4gPg0KPiA+ID4gPiArICBAcmV0dmFsIFRSVUUgICBjU0hBS0UtMjU2IGRh dGEgZGlnZXN0IHN1Y2NlZWRlZC4NCj4gPiA+ID4NCj4gPiA+ID4gKyAgQHJldHZhbCBGQUxTRSAg Y1NIQUtFLTI1NiBkYXRhIGRpZ2VzdCBmYWlsZWQuDQo+ID4gPiA+DQo+ID4gPiA+ICsgIEByZXR2 YWwgRkFMU0UgIFRoaXMgaW50ZXJmYWNlIGlzIG5vdCBzdXBwb3J0ZWQuDQo+ID4gPiA+DQo+ID4g PiA+ICsNCj4gPiA+ID4NCj4gPiA+ID4gKyoqLw0KPiA+ID4gPg0KPiA+ID4gPiArQk9PTEVBTg0K PiA+ID4gPg0KPiA+ID4gPiArRUZJQVBJDQo+ID4gPiA+DQo+ID4gPiA+ICtDU2hha2UyNTZVcGRh dGUgKA0KPiA+ID4gPg0KPiA+ID4gPiArICBJTiBPVVQgIFZPSUQgICAgICAgICpDU2hha2UyNTZD b250ZXh0LA0KPiA+ID4gPg0KPiA+ID4gPiArICBJTiAgICAgIENPTlNUIFZPSUQgICpEYXRhLA0K PiA+ID4gPg0KPiA+ID4gPiArICBJTiAgICAgIFVJTlROICAgICAgIERhdGFTaXplDQo+ID4gPiA+ DQo+ID4gPiA+ICsgICkNCj4gPiA+ID4NCj4gPiA+ID4gK3sNCj4gPiA+ID4NCj4gPiA+ID4gKyAg Ly8NCj4gPiA+ID4NCj4gPiA+ID4gKyAgLy8gQ2hlY2sgaW5wdXQgcGFyYW1ldGVycy4NCj4gPiA+ ID4NCj4gPiA+ID4gKyAgLy8NCj4gPiA+ID4NCj4gPiA+ID4gKyAgaWYgKENTaGFrZTI1NkNvbnRl eHQgPT0gTlVMTCkgew0KPiA+ID4gPg0KPiA+ID4gPiArICAgIHJldHVybiBGQUxTRTsNCj4gPiA+ ID4NCj4gPiA+ID4gKyAgfQ0KPiA+ID4gPg0KPiA+ID4gPiArDQo+ID4gPiA+DQo+ID4gPiA+ICsg IC8vDQo+ID4gPiA+DQo+ID4gPiA+ICsgIC8vIENoZWNrIGludmFsaWQgcGFyYW1ldGVycywgaW4g Y2FzZSB0aGF0IG9ubHkgRGF0YUxlbmd0aCB3YXMNCj4gPiA+ID4gKyBjaGVja2VkIGluDQo+ID4g PiA+IE9wZW5TU0wuDQo+ID4gPiA+DQo+ID4gPiA+ICsgIC8vDQo+ID4gPiA+DQo+ID4gPiA+ICsg IGlmIChEYXRhID09IE5VTEwgJiYgRGF0YVNpemUgIT0gMCkgew0KPiA+ID4gPg0KPiA+ID4gPiAr ICAgIHJldHVybiBGQUxTRTsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgfQ0KPiA+ID4gPg0KPiA+ID4g PiArDQo+ID4gPiA+DQo+ID4gPiA+ICsgIHJldHVybiAoQk9PTEVBTikoc2hhM191cGRhdGUgKChL RUNDQUsxNjAwX0NUWCAqKQ0KPiA+ID4gQ1NoYWtlMjU2Q29udGV4dCwNCj4gPiA+ID4gRGF0YSwg RGF0YVNpemUpKTsNCj4gPiA+ID4NCj4gPiA+ID4gK30NCj4gPiA+ID4NCj4gPiA+ID4gKw0KPiA+ ID4gPg0KPiA+ID4gPiArLyoqDQo+ID4gPiA+DQo+ID4gPiA+ICsgIENvbXBsZXRlcyBjb21wdXRh dGlvbiBvZiB0aGUgY1NIQUtFLTI1NiBkaWdlc3QgdmFsdWUuDQo+ID4gPiA+DQo+ID4gPiA+ICsN Cj4gPiA+ID4NCj4gPiA+ID4gKyAgVGhpcyBmdW5jdGlvbiBjb21wbGV0ZXMgY1NIQUtFLTI1NiBo YXNoIGNvbXB1dGF0aW9uIGFuZCByZXRyaWV2ZXMNCj4gPiA+ID4gKyB0aGUNCj4gPiA+ID4gZGln ZXN0IHZhbHVlIGludG8NCj4gPiA+ID4NCj4gPiA+ID4gKyAgdGhlIHNwZWNpZmllZCBtZW1vcnku IEFmdGVyIHRoaXMgZnVuY3Rpb24gaGFzIGJlZW4gY2FsbGVkLCB0aGUNCj4gPiA+ID4gKyBjU0hB S0UtMjU2DQo+ID4gPiA+IGNvbnRleHQgY2Fubm90DQo+ID4gPiA+DQo+ID4gPiA+ICsgIGJlIHVz ZWQgYWdhaW4uDQo+ID4gPiA+DQo+ID4gPiA+ICsgIGNTSEFLRS0yNTYgY29udGV4dCBzaG91bGQg YmUgYWxyZWFkeSBjb3JyZWN0bHkgaW5pdGlhbGl6ZWQgYnkNCj4gPiA+ID4gKyBDU2hha2UyNTZJ bml0KCksDQo+ID4gPiA+IGFuZCBzaG91bGQgbm90IGJlDQo+ID4gPiA+DQo+ID4gPiA+ICsgIGZp bmFsaXplZCBieSBDU2hha2UyNTZGaW5hbCgpLiBCZWhhdmlvciB3aXRoIGludmFsaWQgY1NIQUtF LTI1Ng0KPiA+ID4gPiArIGNvbnRleHQgaXMNCj4gPiA+ID4gdW5kZWZpbmVkLg0KPiA+ID4gPg0K PiA+ID4gPiArDQo+ID4gPiA+DQo+ID4gPiA+ICsgIEBwYXJhbVtpbiwgb3V0XSAgQ1NoYWtlMjU2 Q29udGV4dCAgUG9pbnRlciB0byB0aGUgY1NIQUtFLTI1Ng0KPiBjb250ZXh0Lg0KPiA+ID4gPg0K PiA+ID4gPiArICBAcGFyYW1bb3V0XSAgICAgIEhhc2hWYWx1ZSAgICAgICAgIFBvaW50ZXIgdG8g YSBidWZmZXIgdGhhdCByZWNlaXZlcyB0aGUNCj4gPiA+IGNTSEFLRS0NCj4gPiA+ID4gMjU2IGRp Z2VzdA0KPiA+ID4gPg0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHZhbHVlLg0KPiA+ID4gPg0KPiA+ID4gPiArDQo+ID4gPiA+DQo+ID4gPiA+ICsgIEByZXR2 YWwgVFJVRSAgIGNTSEFLRS0yNTYgZGlnZXN0IGNvbXB1dGF0aW9uIHN1Y2NlZWRlZC4NCj4gPiA+ ID4NCj4gPiA+ID4gKyAgQHJldHZhbCBGQUxTRSAgY1NIQUtFLTI1NiBkaWdlc3QgY29tcHV0YXRp b24gZmFpbGVkLg0KPiA+ID4gPg0KPiA+ID4gPiArICBAcmV0dmFsIEZBTFNFICBUaGlzIGludGVy ZmFjZSBpcyBub3Qgc3VwcG9ydGVkLg0KPiA+ID4gPg0KPiA+ID4gPiArDQo+ID4gPiA+DQo+ID4g PiA+ICsqKi8NCj4gPiA+ID4NCj4gPiA+ID4gK0JPT0xFQU4NCj4gPiA+ID4NCj4gPiA+ID4gK0VG SUFQSQ0KPiA+ID4gPg0KPiA+ID4gPiArQ1NoYWtlMjU2RmluYWwgKA0KPiA+ID4gPg0KPiA+ID4g PiArICBJTiBPVVQgIFZPSUQgICAqQ1NoYWtlMjU2Q29udGV4dCwNCj4gPiA+ID4NCj4gPiA+ID4g KyAgT1VUICAgICBVSU5UOCAgKkhhc2hWYWx1ZQ0KPiA+ID4gPg0KPiA+ID4gPiArICApDQo+ID4g PiA+DQo+ID4gPiA+ICt7DQo+ID4gPiA+DQo+ID4gPiA+ICsgIC8vDQo+ID4gPiA+DQo+ID4gPiA+ ICsgIC8vIENoZWNrIGlucHV0IHBhcmFtZXRlcnMuDQo+ID4gPiA+DQo+ID4gPiA+ICsgIC8vDQo+ ID4gPiA+DQo+ID4gPiA+ICsgIGlmIChDU2hha2UyNTZDb250ZXh0ID09IE5VTEwgfHwgSGFzaFZh bHVlID09IE5VTEwpIHsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICByZXR1cm4gRkFMU0U7DQo+ID4g PiA+DQo+ID4gPiA+ICsgIH0NCj4gPiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ID4gPiAr ICAvLw0KPiA+ID4gPg0KPiA+ID4gPiArICAvLyBjU0hBS0UtMjU2IEhhc2ggRmluYWxpemF0aW9u Lg0KPiA+ID4gPg0KPiA+ID4gPiArICAvLw0KPiA+ID4gPg0KPiA+ID4gPiArICByZXR1cm4gKEJP T0xFQU4pIChzaGEzX2ZpbmFsICgoS0VDQ0FLMTYwMF9DVFggKikNCj4gQ1NoYWtlMjU2Q29udGV4 dCwNCj4gPiA+ID4gSGFzaFZhbHVlKSk7DQo+ID4gPiA+DQo+ID4gPiA+ICt9DQo+ID4gPiA+DQo+ ID4gPiA+ICsNCj4gPiA+ID4NCj4gPiA+ID4gKy8qKg0KPiA+ID4gPg0KPiA+ID4gPiArICBDb21w dXRlcyB0aGUgQ1NIQUtFLTI1NiBtZXNzYWdlIGRpZ2VzdCBvZiBhIGlucHV0IGRhdGEgYnVmZmVy Lg0KPiA+ID4gPg0KPiA+ID4gPiArDQo+ID4gPiA+DQo+ID4gPiA+ICsgIFRoaXMgZnVuY3Rpb24g cGVyZm9ybXMgdGhlIENTSEFLRS0yNTYgbWVzc2FnZSBkaWdlc3Qgb2YgYSBnaXZlbg0KPiA+ID4g PiArIGRhdGEgYnVmZmVyLA0KPiA+ID4gPiBhbmQgcGxhY2VzDQo+ID4gPiA+DQo+ID4gPiA+ICsg IHRoZSBkaWdlc3QgdmFsdWUgaW50byB0aGUgc3BlY2lmaWVkIG1lbW9yeS4NCj4gPiA+ID4NCj4g PiA+ID4gKw0KPiA+ID4gPg0KPiA+ID4gPiArICBAcGFyYW1baW5dICAgRGF0YSAgICAgICAgICAg ICAgIFBvaW50ZXIgdG8gdGhlIGJ1ZmZlciBjb250YWluaW5nIHRoZSBkYXRhIHRvDQo+IGJlDQo+ ID4gPiA+IGhhc2hlZC4NCj4gPiA+ID4NCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgIERhdGFTaXpl ICAgICAgICAgICBTaXplIG9mIERhdGEgYnVmZmVyIGluIGJ5dGVzLg0KPiA+ID4gPg0KPiA+ID4g PiArICBAcGFyYW1baW5dICAgT3V0cHV0TGVuICAgICAgICAgIFNpemUgb2Ygb3V0cHV0IGluIGJ5 dGVzLg0KPiA+ID4gPg0KPiA+ID4gPiArICBAcGFyYW1baW5dICAgTmFtZSAgICAgICAgICAgICAg IFBvaW50ZXIgdG8gdGhlIGZ1bmN0aW9uIG5hbWUgc3RyaW5nLg0KPiA+ID4gPg0KPiA+ID4gPiAr ICBAcGFyYW1baW5dICAgTmFtZUxlbiAgICAgICAgICAgIFNpemUgb2YgdGhlIGZ1bmN0aW9uIG5h bWUgaW4gYnl0ZXMuDQo+ID4gPiA+DQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gICBDdXN0b21pemF0 aW9uICAgICAgUG9pbnRlciB0byB0aGUgY3VzdG9taXphdGlvbiBzdHJpbmcuDQo+ID4gPiA+DQo+ ID4gPiA+ICsgIEBwYXJhbVtpbl0gICBDdXN0b21pemF0aW9uTGVuICAgU2l6ZSBvZiB0aGUgY3Vz dG9taXphdGlvbiBzdHJpbmcgaW4NCj4gYnl0ZXMuDQo+ID4gPiA+DQo+ID4gPiA+ICsgIEBwYXJh bVtvdXRdICBIYXNoVmFsdWUgICAgICAgICAgUG9pbnRlciB0byBhIGJ1ZmZlciB0aGF0IHJlY2Vp dmVzIHRoZQ0KPiA+ID4gQ1NIQUtFLQ0KPiA+ID4gPiAyNTYgZGlnZXN0DQo+ID4gPiA+DQo+ID4g PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUuDQo+ID4gPiA+DQo+ ID4gPiA+ICsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgQHJldHZhbCBUUlVFICAgQ1NIQUtFLTI1NiBk aWdlc3QgY29tcHV0YXRpb24gc3VjY2VlZGVkLg0KPiA+ID4gPg0KPiA+ID4gPiArICBAcmV0dmFs IEZBTFNFICBDU0hBS0UtMjU2IGRpZ2VzdCBjb21wdXRhdGlvbiBmYWlsZWQuDQo+ID4gPiA+DQo+ ID4gPiA+ICsgIEByZXR2YWwgRkFMU0UgIFRoaXMgaW50ZXJmYWNlIGlzIG5vdCBzdXBwb3J0ZWQu DQo+ID4gPiA+DQo+ID4gPiA+ICsNCj4gPiA+ID4NCj4gPiA+ID4gKyoqLw0KPiA+ID4gPg0KPiA+ ID4gPiArQk9PTEVBTg0KPiA+ID4gPg0KPiA+ID4gPiArRUZJQVBJDQo+ID4gPiA+DQo+ID4gPiA+ ICtDU2hha2UyNTZIYXNoQWxsICgNCj4gPiA+ID4NCj4gPiA+ID4gKyAgSU4gICBDT05TVCBWT0lE ICAgICAqRGF0YSwNCj4gPiA+ID4NCj4gPiA+ID4gKyAgSU4gICBVSU5UTiAgICAgICAgICBEYXRh U2l6ZSwNCj4gPiA+ID4NCj4gPiA+ID4gKyAgSU4gICBVSU5UTiAgICAgICAgICBPdXRwdXRMZW4s DQo+ID4gPiA+DQo+ID4gPiA+ICsgIElOICAgQ09OU1QgVk9JRCAgICAgKk5hbWUsDQo+ID4gPiA+ DQo+ID4gPiA+ICsgIElOICAgVUlOVE4gICAgICAgICAgTmFtZUxlbiwNCj4gPiA+ID4NCj4gPiA+ ID4gKyAgSU4gICBDT05TVCBWT0lEICAgICAqQ3VzdG9taXphdGlvbiwNCj4gPiA+ID4NCj4gPiA+ ID4gKyAgSU4gICBVSU5UTiAgICAgICAgICBDdXN0b21pemF0aW9uTGVuLA0KPiA+ID4gPg0KPiA+ ID4gPiArICBPVVQgIFVJTlQ4ICAgICAgICAgICpIYXNoVmFsdWUNCj4gPiA+ID4NCj4gPiA+ID4g KyAgKQ0KPiA+ID4gPg0KPiA+ID4gPiArew0KPiA+ID4gPg0KPiA+ID4gPiArICBCT09MRUFOICAg ICAgICAgIFN0YXR1czsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgS0VDQ0FLMTYwMF9DVFggICBDdHg7 DQo+ID4gPiA+DQo+ID4gPiA+ICsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgLy8NCj4gPiA+ID4NCj4g PiA+ID4gKyAgLy8gQ2hlY2sgaW5wdXQgcGFyYW1ldGVycy4NCj4gPiA+ID4NCj4gPiA+ID4gKyAg Ly8NCj4gPiA+ID4NCj4gPiA+ID4gKyAgaWYgKEhhc2hWYWx1ZSA9PSBOVUxMKSB7DQo+ID4gPiA+ DQo+ID4gPiA+ICsgICAgcmV0dXJuIEZBTFNFOw0KPiA+ID4gPg0KPiA+ID4gPiArICB9DQo+ID4g PiA+DQo+ID4gPiA+ICsgIGlmIChEYXRhID09IE5VTEwgJiYgRGF0YVNpemUgIT0gMCkgew0KPiA+ ID4gPg0KPiA+ID4gPiArICAgIHJldHVybiBGQUxTRTsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgfQ0K PiA+ID4gPg0KPiA+ID4gPiArDQo+ID4gPiA+DQo+ID4gPiA+ICsgIFN0YXR1cyA9IENTaGFrZTI1 NkluaXQgKCZDdHgsIE91dHB1dExlbiwgTmFtZSwgTmFtZUxlbiwNCj4gPiA+ID4gKyBDdXN0b21p emF0aW9uLA0KPiA+ID4gPiBDdXN0b21pemF0aW9uTGVuKTsNCj4gPiA+ID4NCj4gPiA+ID4gKyAg aWYgKCFTdGF0dXMpIHsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICByZXR1cm4gRkFMU0U7DQo+ID4g PiA+DQo+ID4gPiA+ICsgIH0NCj4gPiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ID4gPiAr ICBTdGF0dXMgPSBDU2hha2UyNTZVcGRhdGUgKCZDdHgsIERhdGEsIERhdGFTaXplKTsNCj4gPiA+ ID4NCj4gPiA+ID4gKyAgaWYgKCFTdGF0dXMpIHsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICByZXR1 cm4gRkFMU0U7DQo+ID4gPiA+DQo+ID4gPiA+ICsgIH0NCj4gPiA+ID4NCj4gPiA+ID4gKw0KPiA+ ID4gPg0KPiA+ID4gPiArICByZXR1cm4gQ1NoYWtlMjU2RmluYWwgKCZDdHgsIEhhc2hWYWx1ZSk7 DQo+ID4gPiA+DQo+ID4gPiA+ICt9DQo+ID4gPiA+DQo+ID4gPiA+IGRpZmYgLS1naXQgYS9Dcnlw dG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWIvSGFzaC9DcnlwdFBhcmFsbGVsSGFzaC5jDQo+ID4g PiA+IGIvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL0hhc2gvQ3J5cHRQYXJhbGxlbEhh c2guYw0KPiA+ID4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+ID4gPiBpbmRleCAwMDAwMDAw MDAwLi4zZWFhN2MyY2ViDQo+ID4gPiA+IC0tLSAvZGV2L251bGwNCj4gPiA+ID4gKysrIGIvQ3J5 cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL0hhc2gvQ3J5cHRQYXJhbGxlbEhhc2guYw0KPiA+ ID4gPiBAQCAtMCwwICsxLDI3NSBAQA0KPiA+ID4gPiArLyoqIEBmaWxlDQo+ID4gPiA+DQo+ID4g PiA+ICsgIFBhcmFsbGVsSGFzaCBJbXBsZW1lbnRhdGlvbi4NCj4gPiA+ID4NCj4gPiA+ID4gKw0K PiA+ID4gPg0KPiA+ID4gPiArQ29weXJpZ2h0IChjKSAyMDIyLCBJbnRlbCBDb3Jwb3JhdGlvbi4g QWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4gPiA+DQo+ID4gPiA+ICtTUERYLUxpY2Vuc2Ut SWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiA+ID4gPg0KPiA+ID4gPiArDQo+ID4g PiA+DQo+ID4gPiA+ICsqKi8NCj4gPiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ID4gPiAr I2luY2x1ZGUgIkludGVybmFsQ3J5cHRMaWIuaCINCj4gPiA+ID4NCj4gPiA+ID4gKyNpbmNsdWRl IDxMaWJyYXJ5XFBjZExpYi5oPg0KPiA+ID4gPg0KPiA+ID4gPiArI2luY2x1ZGUgPExpYnJhcnlc U3luY2hyb25pemF0aW9uTGliLmg+DQo+ID4gPiA+DQo+ID4gPiA+ICsjaW5jbHVkZSA8TGlicmFy eVxNbVNlcnZpY2VzVGFibGVMaWIuaD4NCj4gPiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ ID4gPiArDQo+ID4gPiA+DQo+ID4gPiA+ICtVSU5UMTYgICAgICAgIG1CbG9ja051bTsNCj4gPiA+ ID4NCj4gPiA+ID4gK1VJTlROICAgICAgICBtQmxvY2tTaXplOw0KPiA+ID4gPg0KPiA+ID4gPiAr VUlOVE4gICAgICAgIG1MYXN0QmxvY2tTaXplOw0KPiA+ID4gPg0KPiA+ID4gPiArVUlOVDggICAg ICAgICptSW5wdXQ7DQo+ID4gPiA+DQo+ID4gPiA+ICtVSU5UTiAgICAgICAgbUJsb2NrUmVzdWx0 U2l6ZTsNCj4gPiA+ID4NCj4gPiA+ID4gK1VJTlQ4ICAgICAgICAqbUJsb2NrSGFzaFJlc3VsdDsN Cj4gPiA+ID4NCj4gPiA+ID4gK0JPT0xFQU4gICAgICAqbUJsb2NrSXNDb21wbGV0ZWQ7DQo+ID4g PiA+DQo+ID4gPiA+ICtTUElOX0xPQ0sgICAgKm1TcGluTG9ja0xpc3Q7DQo+ID4gPiA+DQo+ID4g PiA+ICsNCj4gPiA+ID4NCj4gPiA+ID4gK1VJTlROIExlZnRFbmNvZGUgKE9VVCBVSU5UOCAqRW5j YnVmLCBJTiBVSU5UTiBWYWx1ZSk7DQo+ID4gPiA+DQo+ID4gPiA+ICtVSU5UTiBSaWdodEVuY29k ZSAoT1VUIFVJTlQ4ICpFbmNidWYsIElOIFVJTlROIFZhbHVlKTsNCj4gPiA+ID4NCj4gPiA+ID4g Kw0KPiA+ID4gPg0KPiA+ID4gPiArQk9PTEVBTg0KPiA+ID4gPg0KPiA+ID4gPiArRUZJQVBJDQo+ ID4gPiA+DQo+ID4gPiA+ICtDU2hha2UyNTZIYXNoQWxsICgNCj4gPiA+ID4NCj4gPiA+ID4gKyAg SU4gICBDT05TVCBWT0lEICAgICAqRGF0YSwNCj4gPiA+ID4NCj4gPiA+ID4gKyAgSU4gICBVSU5U TiAgICAgICAgICBEYXRhU2l6ZSwNCj4gPiA+ID4NCj4gPiA+ID4gKyAgSU4gICBVSU5UTiAgICAg ICAgICBPdXRwdXRMZW4sDQo+ID4gPiA+DQo+ID4gPiA+ICsgIElOICAgQ09OU1QgVk9JRCAgICAg Kk5hbWUsDQo+ID4gPiA+DQo+ID4gPiA+ICsgIElOICAgVUlOVE4gICAgICAgICAgTmFtZUxlbiwN Cj4gPiA+ID4NCj4gPiA+ID4gKyAgSU4gICBDT05TVCBWT0lEICAgICAqQ3VzdG9taXphdGlvbiwN Cj4gPiA+ID4NCj4gPiA+ID4gKyAgSU4gICBVSU5UTiAgICAgICAgICBDdXN0b21pemF0aW9uTGVu LA0KPiA+ID4gPg0KPiA+ID4gPiArICBPVVQgIFVJTlQ4ICAgICAgICAgICpIYXNoVmFsdWUNCj4g PiA+ID4NCj4gPiA+ID4gKyAgKTsNCj4gPiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ID4g PiArVk9JRA0KPiA+ID4gPg0KPiA+ID4gPiArRUZJQVBJDQo+ID4gPiA+DQo+ID4gPiA+ICtQYXJh bGxlbEhhc2hBcEV4ZWN1dGUgKA0KPiA+ID4gPg0KPiA+ID4gPiArICBJTiBWT0lEICAgICAgICAg ICpQcm9jZWR1cmVBcmd1bWVudA0KPiA+ID4gPg0KPiA+ID4gPiArICApDQo+ID4gPiA+DQo+ID4g PiA+ICt7DQo+ID4gPiA+DQo+ID4gPiA+ICsgIFVJTlROICAgICAgICAgSW5kZXg7DQo+ID4gPiA+ DQo+ID4gPiA+ICsgIEJPT0xFQU4gICAgICAgU3RhdHVzOw0KPiA+ID4gPg0KPiA+ID4gPiArDQo+ ID4gPiA+DQo+ID4gPiA+ICsgIGZvciAoSW5kZXggPSAwOyBJbmRleCA8IG1CbG9ja051bTsgSW5k ZXgrKykgew0KPiA+ID4gPg0KPiA+ID4gPiArICAgIGlmIChBY3F1aXJlU3BpbkxvY2tPckZhaWwg KCZtU3BpbkxvY2tMaXN0W0luZGV4XSkpIHsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICAgIC8vDQo+ ID4gPiA+DQo+ID4gPiA+ICsgICAgICAvLyBDb21wbGV0ZWQsIHRyeSBuZXh0IG9uZS4NCj4gPiA+ ID4NCj4gPiA+ID4gKyAgICAgIC8vDQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgICBpZiAobUJsb2Nr SXNDb21wbGV0ZWRbSW5kZXhdKQ0KPiA+ID4gPg0KPiA+ID4gPiArICAgICAgew0KPiA+ID4gPg0K PiA+ID4gPiArICAgICAgICBSZWxlYXNlU3BpbkxvY2sgKCZtU3BpbkxvY2tMaXN0W0luZGV4XSk7 DQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgICAgIGNvbnRpbnVlOw0KPiA+ID4gPg0KPiA+ID4gPiAr ICAgICAgfQ0KPiA+ID4gPg0KPiA+ID4gPiArICAgICAgLy8NCj4gPiA+ID4NCj4gPiA+ID4gKyAg ICAgIC8vIENhbGN1bGF0ZSBDU2hha2UyNTYgZm9yIHRoaXMgYmxvY2suDQo+ID4gPiA+DQo+ID4g PiA+ICsgICAgICAvLw0KPiA+ID4gPg0KPiA+ID4gPiArICAgICAgU3RhdHVzID0gQ1NoYWtlMjU2 SGFzaEFsbCAoDQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgIG1JbnB1dCArIElu ZGV4ICogbUJsb2NrU2l6ZSwNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgKElu ZGV4ID09IChtQmxvY2tOdW0gLSAxKSkgPyBtTGFzdEJsb2NrU2l6ZSA6DQo+ID4gPiA+ICsgbUJs b2NrU2l6ZSwNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgbUJsb2NrUmVzdWx0 U2l6ZSwNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgTlVMTCwNCj4gPiA+ID4N Cj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgMCwNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICAgICAg ICAgICAgICAgTlVMTCwNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgMCwNCj4g PiA+ID4NCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgbUJsb2NrSGFzaFJlc3VsdCArIEluZGV4 ICogbUJsb2NrUmVzdWx0U2l6ZQ0KPiA+ID4gPg0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAp Ow0KPiA+ID4gPg0KPiA+ID4gPiArICAgICAgaWYgKCFFRklfRVJST1IgKFN0YXR1cykpew0KPiA+ ID4gPg0KPiA+ID4gPiArICAgICAgICBtQmxvY2tJc0NvbXBsZXRlZFtJbmRleF0gPSBUUlVFOw0K PiA+ID4gPg0KPiA+ID4gPiArICAgICAgfQ0KPiA+ID4gPg0KPiA+ID4gPiArICAgICAgUmVsZWFz ZVNwaW5Mb2NrICgmbVNwaW5Mb2NrTGlzdFtJbmRleF0pOw0KPiA+ID4gPg0KPiA+ID4gPiArICAg IH0NCj4gPiA+ID4NCj4gPiA+ID4gKyAgfQ0KPiA+ID4gPg0KPiA+ID4gPiArfQ0KPiA+ID4gPg0K PiA+ID4gPiArDQo+ID4gPiA+DQo+ID4gPiA+ICsvKioNCj4gPiA+ID4NCj4gPiA+ID4gKyAgUGFy YWxsZWwgaGFzaCBmdW5jdGlvbiBQYXJhbGxlbEhhc2gyNTYsIGFzIGRlZmluZWQgaW4gTklTVCdz DQo+ID4gPiA+ICsgU3BlY2lhbCBQdWJsaWNhdGlvbg0KPiA+ID4gPiA4MDAtMTg1LA0KPiA+ID4g Pg0KPiA+ID4gPiArICBwdWJsaXNoZWQgRGVjZW1iZXIgMjAxNi4NCj4gPiA+ID4NCj4gPiA+ID4g Kw0KPiA+ID4gPg0KPiA+ID4gPiArICBAcGFyYW0gIElucHV0W2luXSAgICAgICAgICAgIFBvaW50 ZXIgdG8gdGhlIGlucHV0IG1lc3NhZ2UgKFgpLg0KPiA+ID4gPg0KPiA+ID4gPiArICBAcGFyYW0g IElucHV0Qnl0ZUxlbltpbl0gICAgIFRoZSBudW1iZXIoPjApIG9mIGlucHV0IGJ5dGVzIHByb3Zp ZGVkDQo+IGZvcg0KPiA+ID4gdGhlDQo+ID4gPiA+IGlucHV0IGRhdGEuDQo+ID4gPiA+DQo+ID4g PiA+ICsgIEBwYXJhbSAgT3V0cHV0W291dF0gICAgICAgICAgUG9pbnRlciB0byB0aGUgb3V0cHV0 IGJ1ZmZlci4NCj4gPiA+ID4NCj4gPiA+ID4gKyAgQHBhcmFtICBPdXRwdXRCeXRlTGVuW2luXSAg ICBUaGUgZGVzaXJlZCBudW1iZXIgb2Ygb3V0cHV0IGJ5dGVzDQo+IChMKS4NCj4gPiA+ID4NCj4g PiA+ID4gKyAgQHBhcmFtICBDdXN0b21pemF0aW9uW2luXSAgICBQb2ludGVyIHRvIHRoZSBjdXN0 b21pemF0aW9uIHN0cmluZyAoUykuDQo+ID4gPiA+DQo+ID4gPiA+ICsgIEBwYXJhbSAgQ3VzdG9t Qnl0ZUxlbltpbl0gICAgVGhlIGxlbmd0aCBvZiB0aGUgY3VzdG9taXphdGlvbiBzdHJpbmcNCj4g aW4NCj4gPiA+IGJ5dGVzLg0KPiA+ID4gPg0KPiA+ID4gPiArDQo+ID4gPiA+DQo+ID4gPiA+ICsg IEByZXR2YWwgVFJVRSAgIFBhcmFsbGVsSGFzaDI1NiBkaWdlc3QgY29tcHV0YXRpb24gc3VjY2Vl ZGVkLg0KPiA+ID4gPg0KPiA+ID4gPiArICBAcmV0dmFsIEZBTFNFICBQYXJhbGxlbEhhc2gyNTYg ZGlnZXN0IGNvbXB1dGF0aW9uIGZhaWxlZC4NCj4gPiA+ID4NCj4gPiA+ID4gKyAgQHJldHZhbCBG QUxTRSAgVGhpcyBpbnRlcmZhY2UgaXMgbm90IHN1cHBvcnRlZC4NCj4gPiA+ID4NCj4gPiA+ID4g Kw0KPiA+ID4gPg0KPiA+ID4gPiArKi8NCj4gPiA+ID4NCj4gPiA+ID4gK0JPT0xFQU4NCj4gPiA+ ID4NCj4gPiA+ID4gK0VGSUFQSQ0KPiA+ID4gPg0KPiA+ID4gPiArUGFyYWxsZWxIYXNoMjU2SGFz aEFsbCAoDQo+ID4gPiA+DQo+ID4gPiA+ICsgIElOIENPTlNUIFZPSUQgICAgICAgICAgICAqSW5w dXQsDQo+ID4gPiA+DQo+ID4gPiA+ICsgIElOICAgICAgIFVJTlROICAgICAgICAgICBJbnB1dEJ5 dGVMZW4sDQo+ID4gPiA+DQo+ID4gPiA+ICsgIE9VVCAgICAgIFZPSUQgICAgICAgICAgICAqT3V0 cHV0LA0KPiA+ID4gPg0KPiA+ID4gPiArICBJTiAgICAgICBVSU5UTiAgICAgICAgICAgT3V0cHV0 Qnl0ZUxlbiwNCj4gPiA+ID4NCj4gPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgICAgICAgICAgICpD dXN0b21pemF0aW9uLA0KPiA+ID4gPg0KPiA+ID4gPiArICBJTiAgICAgICBVSU5UTiAgICAgICAg ICAgQ3VzdG9tQnl0ZUxlbg0KPiA+ID4gPg0KPiA+ID4gPiArICApDQo+ID4gPiA+DQo+ID4gPiA+ ICsNCj4gPiA+ID4NCj4gPiA+ID4gK3sNCj4gPiA+ID4NCj4gPiA+ID4gKyAgVUlOVDggICAgICAg IEVuY0J1ZkJbc2l6ZW9mKFVJTlROKSsxXTsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgVUlOVE4gICAg ICAgIEVuY1NpemVCOw0KPiA+ID4gPg0KPiA+ID4gPiArICBVSU5UOCAgICAgICAgRW5jQnVmTltz aXplb2YoVUlOVE4pKzFdOw0KPiA+ID4gPg0KPiA+ID4gPiArICBVSU5UTiAgICAgICAgRW5jU2l6 ZU47DQo+ID4gPiA+DQo+ID4gPiA+ICsgIFVJTlQ4ICAgICAgICBFbmNCdWZMW3NpemVvZihVSU5U TikrMV07DQo+ID4gPiA+DQo+ID4gPiA+ICsgIFVJTlROICAgICAgICBFbmNTaXplTDsNCj4gPiA+ ID4NCj4gPiA+ID4gKyAgVUlOVE4gICAgICAgIEluZGV4Ow0KPiA+ID4gPg0KPiA+ID4gPiArICBV SU5UOCAgICAgICAgKkNvbWJpbmVkSW5wdXQ7DQo+ID4gPiA+DQo+ID4gPiA+ICsgIFVJTlROICAg ICAgICBDb21iaW5lZElucHV0U2l6ZTsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgRUZJX1NUQVRVUyAg IFN0YXR1czsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgVUlOVE4gICAgICAgIFN0YXJ0ZWRBcE51bTsN Cj4gPiA+ID4NCj4gPiA+ID4gKyAgQk9PTEVBTiAgICAgIEFsbENvbXBsZXRlZDsNCj4gPiA+ID4N Cj4gPiA+ID4gKyAgVUlOVE4gICAgICAgIE9mZnNldDsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgQk9P TEVBTiAgICAgIFJldHVyblZhbHVlOw0KPiA+ID4gPg0KPiA+ID4gPiArDQo+ID4gPiA+DQo+ID4g PiA+ICsgIGlmIChJbnB1dEJ5dGVMZW4gPT0gMCB8fCBPdXRwdXRCeXRlTGVuID09IDApIHsNCj4g PiA+ID4NCj4gPiA+ID4gKyAgICByZXR1cm4gRkFMU0U7DQo+ID4gPiA+DQo+ID4gPiA+ICsgIH0N Cj4gPiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ID4gPiArICBpZiAoSW5wdXQgPT0gTlVM TCB8fCBPdXRwdXQgPT0gTlVMTCl7DQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgcmV0dXJuIEZBTFNF Ow0KPiA+ID4gPg0KPiA+ID4gPiArICB9DQo+ID4gPiA+DQo+ID4gPiA+ICsNCj4gPiA+ID4NCj4g PiA+ID4gKyAgaWYgKEN1c3RvbUJ5dGVMZW4gIT0gMCAmJiBDdXN0b21pemF0aW9uID09IE5VTEwp ew0KPiA+ID4gPg0KPiA+ID4gPiArICAgIHJldHVybiBGQUxTRTsNCj4gPiA+ID4NCj4gPiA+ID4g KyAgfQ0KPiA+ID4gPg0KPiA+ID4gPiArDQo+ID4gPiA+DQo+ID4gPiA+ICsgIC8vDQo+ID4gPiA+ DQo+ID4gPiA+ICsgIC8vIEdldCBCbG9jayBudW1iZXIgbi4NCj4gPiA+ID4NCj4gPiA+ID4gKyAg Ly8NCj4gPiA+ID4NCj4gPiA+ID4gKyAgbUJsb2NrTnVtID0gUGNkR2V0MTYgKFBjZFBhcmFsbGVs SGFzaEJsb2NrTnVtYmVyKTsNCj4gPiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ID4gPiAr ICBpZiAobUJsb2NrTnVtIDwgMSB8fCBJbnB1dEJ5dGVMZW4gPCBtQmxvY2tOdW0gLSAxKXsNCj4g PiA+ID4NCj4gPiA+ID4gKyAgICByZXR1cm4gRkFMU0U7DQo+ID4gPiA+DQo+ID4gPiA+ICsgIH0N Cj4gPiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ID4gPiArICAvLw0KPiA+ID4gPg0KPiA+ ID4gPiArICAvLyBTZXQgaGFzaCByZXN1bHQgc2l6ZSBvZiBlYWNoIGJsb2NrIGluIGJ5dGVzLg0K PiA+ID4gPg0KPiA+ID4gPiArICAvLw0KPiA+ID4gPg0KPiA+ID4gPiArICBtQmxvY2tSZXN1bHRT aXplID0gT3V0cHV0Qnl0ZUxlbjsNCj4gPiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ID4g PiArICAvLw0KPiA+ID4gPg0KPiA+ID4gPiArICAvLyBjYWxjdWxhdGUgdGhlIGJsb2NrIGJ5dGUg bGVuZ3RoIEIuDQo+ID4gPiA+DQo+ID4gPiA+ICsgIC8vDQo+ID4gPiA+DQo+ID4gPiA+ICsgIG1C bG9ja1NpemUgPSBJbnB1dEJ5dGVMZW4gJSBtQmxvY2tOdW0gPT0gMCA/IElucHV0Qnl0ZUxlbiAv DQo+ID4gPiBtQmxvY2tOdW0gOg0KPiA+ID4gPiBJbnB1dEJ5dGVMZW4gLyAobUJsb2NrTnVtIC0g MSk7DQo+ID4gPiA+DQo+ID4gPiA+ICsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgLy8NCj4gPiA+ID4N Cj4gPiA+ID4gKyAgLy8gRW5jb2RlIEIsIG4sIEwgdG8gc3RyaW5nIGFuZCByZWNvcmQgc2l6ZS4N Cj4gPiA+ID4NCj4gPiA+ID4gKyAgLy8NCj4gPiA+ID4NCj4gPiA+ID4gKyAgRW5jU2l6ZUIgPSBM ZWZ0RW5jb2RlICAoRW5jQnVmQiwgbUJsb2NrU2l6ZSk7DQo+ID4gPiA+DQo+ID4gPiA+ICsgIEVu Y1NpemVOID0gUmlnaHRFbmNvZGUgKEVuY0J1Zk4sIG1CbG9ja051bSk7DQo+ID4gPiA+DQo+ID4g PiA+ICsgIEVuY1NpemVMID0gUmlnaHRFbmNvZGUgKEVuY0J1ZkwsIE91dHB1dEJ5dGVMZW4gKiBD SEFSX0JJVCk7DQo+ID4gPiA+DQo+ID4gPiA+ICsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgLy8NCj4g PiA+ID4NCj4gPiA+ID4gKyAgLy8gQWxsb2NhdGUgYnVmZmVyIGZvciBjb21iaW5lZCBpbnB1dCAo bmV3WCksIEJsb2NrIGNvbXBsZXRlZCBmbGFnDQo+ID4gPiA+ICsgYW5kDQo+ID4gPiA+IFNwaW5M b2NrLg0KPiA+ID4gPg0KPiA+ID4gPiArICAvLw0KPiA+ID4gPg0KPiA+ID4gPiArICBDb21iaW5l ZElucHV0U2l6ZSA9IEVuY1NpemVCICsgRW5jU2l6ZU4gKyBFbmNTaXplTCArIG1CbG9ja051bSAq DQo+ID4gPiA+IG1CbG9ja1Jlc3VsdFNpemU7DQo+ID4gPiA+DQo+ID4gPiA+ICsgIENvbWJpbmVk SW5wdXQgPSBBbGxvY2F0ZVplcm9Qb29sIChDb21iaW5lZElucHV0U2l6ZSk7DQo+ID4gPiA+DQo+ ID4gPiA+ICsgIG1CbG9ja0lzQ29tcGxldGVkID0gQWxsb2NhdGVaZXJvUG9vbCAobUJsb2NrTnVt ICogc2l6ZW9mDQo+ID4gPiA+ICsgKEJPT0xFQU4pKTsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgbVNw aW5Mb2NrTGlzdCA9IEFsbG9jYXRlUG9vbCAobUJsb2NrTnVtICogc2l6ZW9mIChTUElOX0xPQ0sp KTsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgaWYgKENvbWJpbmVkSW5wdXQgPT0gTlVMTCB8fCBtQmxv Y2tJc0NvbXBsZXRlZCA9PSBOVUxMIHx8DQo+ID4gPiA+ICsgbVNwaW5Mb2NrTGlzdA0KPiA+ID4g PiA9PSBOVUxMKSB7DQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgUmV0dXJuVmFsdWUgPSBGQUxTRTsN Cj4gPiA+ID4NCj4gPiA+ID4gKyAgICBnb3RvIEV4aXQ7DQo+ID4gPiA+DQo+ID4gPiA+ICsgIH0N Cj4gPiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ID4gPiArICAvLw0KPiA+ID4gPg0KPiA+ ID4gPiArICAvLyBGaWxsIExlZnRFbmNvZGUoQikuDQo+ID4gPiA+DQo+ID4gPiA+ICsgIC8vDQo+ ID4gPiA+DQo+ID4gPiA+ICsgIENvcHlNZW0gKENvbWJpbmVkSW5wdXQsIEVuY0J1ZkIsIEVuY1Np emVCKTsNCj4gPiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ID4gPiArICAvLw0KPiA+ID4g Pg0KPiA+ID4gPiArICAvLyBQcmVwYXJlIGZvciBwYXJhbGxlbCBoYXNoLg0KPiA+ID4gPg0KPiA+ ID4gPiArICAvLw0KPiA+ID4gPg0KPiA+ID4gPiArICBtQmxvY2tIYXNoUmVzdWx0ID0gQ29tYmlu ZWRJbnB1dCArIEVuY1NpemVCOw0KPiA+ID4gPg0KPiA+ID4gPiArICBtSW5wdXQgPSBJbnB1dDsN Cj4gPiA+ID4NCj4gPiA+ID4gKyAgbUxhc3RCbG9ja1NpemUgPSBJbnB1dEJ5dGVMZW4gJSBtQmxv Y2tTaXplID09IDAgPyBtQmxvY2tTaXplIDoNCj4gPiA+ID4gSW5wdXRCeXRlTGVuICUgbUJsb2Nr U2l6ZTsNCj4gPiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ID4gPiArICAvLw0KPiA+ID4g Pg0KPiA+ID4gPiArICAvLyBJbml0aWFsaXplIFNwaW5Mb2NrIGZvciBlYWNoIHJlc3VsdCBibG9j ay4NCj4gPiA+ID4NCj4gPiA+ID4gKyAgLy8NCj4gPiA+ID4NCj4gPiA+ID4gKyAgZm9yIChJbmRl eCA9IDA7IEluZGV4IDwgbUJsb2NrTnVtOyBJbmRleCsrKSB7DQo+ID4gPiA+DQo+ID4gPiA+ICsg ICAgSW5pdGlhbGl6ZVNwaW5Mb2NrICgmbVNwaW5Mb2NrTGlzdFtJbmRleF0pOw0KPiA+ID4gPg0K PiA+ID4gPiArICB9DQo+ID4gPiA+DQo+ID4gPiA+ICsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgLy8N Cj4gPiA+ID4NCj4gPiA+ID4gKyAgLy8gRGlzcGF0Y2ggYmxvY2tsaXN0IHRvIGVhY2ggQVAuDQo+ ID4gPiA+DQo+ID4gPiA+ICsgIC8vDQo+ID4gPiA+DQo+ID4gPiA+ICsgIFN0YXJ0ZWRBcE51bSA9 IDA7DQo+ID4gPiA+DQo+ID4gPiA+ICsgIGZvciAoSW5kZXggPSAwOyBJbmRleCA8IGdNbXN0LT5O dW1iZXJPZkNwdXM7IEluZGV4KyspIHsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICBpZiAoSW5kZXgg IT0gZ01tc3QtPkN1cnJlbnRseUV4ZWN1dGluZ0NwdSkgew0KPiA+ID4gPg0KPiA+ID4gPiArICAg ICAgU3RhdHVzID0gZ01tc3QtPk1tU3RhcnR1cFRoaXNBcCAoUGFyYWxsZWxIYXNoQXBFeGVjdXRl LCBJbmRleCwNCj4gPiA+ID4gKyBOVUxMKTsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICAgIGlmICgh RUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgICAgIFN0YXJ0ZWRB cE51bSsrOw0KPiA+ID4gPg0KPiA+ID4gPiArICAgICAgfQ0KPiA+ID4gPg0KPiA+ID4gPiArICAg IH0NCj4gPiA+ID4NCj4gPiA+ID4gKyAgfQ0KPiA+ID4gPg0KPiA+ID4gPiArDQo+ID4gPiA+DQo+ ID4gPiA+ICsgIC8vDQo+ID4gPiA+DQo+ID4gPiA+ICsgIC8vIFdhaXQgdW50aWwgYWxsIGJsb2Nr IGhhc2ggY29tcGxldGVkLg0KPiA+ID4gPg0KPiA+ID4gPiArICAvLw0KPiA+ID4gPg0KPiA+ID4g PiArICBkbyB7DQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgQWxsQ29tcGxldGVkID0gVFJVRTsNCj4g PiA+ID4NCj4gPiA+ID4gKyAgICBmb3IgKEluZGV4ID0gMDsgSW5kZXggPCBtQmxvY2tOdW07IElu ZGV4KyspIHsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICAgIGlmIChBY3F1aXJlU3BpbkxvY2tPckZh aWwgKCZtU3BpbkxvY2tMaXN0W0luZGV4XSkpIHsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICAgICAg aWYgKCFtQmxvY2tJc0NvbXBsZXRlZFtJbmRleF0pIHsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICAg ICAgICBBbGxDb21wbGV0ZWQgPSBGQUxTRTsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICAgICAgICBS ZXR1cm5WYWx1ZSA9IENTaGFrZTI1Nkhhc2hBbGwgKA0KPiA+ID4gPg0KPiA+ID4gPiArICAgICAg ICAgICAgICAgICAgICAgbUlucHV0ICsgSW5kZXggKiBtQmxvY2tTaXplLA0KPiA+ID4gPg0KPiA+ ID4gPiArICAgICAgICAgICAgICAgICAgICAgKEluZGV4ID09IChtQmxvY2tOdW0gLSAxKSkgPyBt TGFzdEJsb2NrU2l6ZSA6DQo+ID4gPiA+ICsgbUJsb2NrU2l6ZSwNCj4gPiA+ID4NCj4gPiA+ID4g KyAgICAgICAgICAgICAgICAgICAgIG1CbG9ja1Jlc3VsdFNpemUsDQo+ID4gPiA+DQo+ID4gPiA+ ICsgICAgICAgICAgICAgICAgICAgICBOVUxMLA0KPiA+ID4gPg0KPiA+ID4gPiArICAgICAgICAg ICAgICAgICAgICAgMCwNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIE5V TEwsDQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAwLA0KPiA+ID4gPg0K PiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgbUJsb2NrSGFzaFJlc3VsdCArIEluZGV4ICog bUJsb2NrUmVzdWx0U2l6ZQ0KPiA+ID4gPg0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAg KTsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICAgICAgICBpZiAoUmV0dXJuVmFsdWUpew0KPiA+ID4g Pg0KPiA+ID4gPiArICAgICAgICAgICAgbUJsb2NrSXNDb21wbGV0ZWRbSW5kZXhdID0gVFJVRTsN Cj4gPiA+ID4NCj4gPiA+ID4gKyAgICAgICAgICB9DQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgICAg ICAgUmVsZWFzZVNwaW5Mb2NrICgmbVNwaW5Mb2NrTGlzdFtJbmRleF0pOw0KPiA+ID4gPg0KPiA+ ID4gPiArICAgICAgICAgIGJyZWFrOw0KPiA+ID4gPg0KPiA+ID4gPiArICAgICAgICB9DQo+ID4g PiA+DQo+ID4gPiA+ICsgICAgICAgIFJlbGVhc2VTcGluTG9jayAoJm1TcGluTG9ja0xpc3RbSW5k ZXhdKTsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICAgIH0gZWxzZSB7DQo+ID4gPiA+DQo+ID4gPiA+ ICsgICAgICAgIEFsbENvbXBsZXRlZCA9IEZBTFNFOw0KPiA+ID4gPg0KPiA+ID4gPiArICAgICAg ICBicmVhazsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICAgIH0NCj4gPiA+ID4NCj4gPiA+ID4gKyAg ICB9DQo+ID4gPiA+DQo+ID4gPiA+ICsgIH0gd2hpbGUgKCFBbGxDb21wbGV0ZWQpOw0KPiA+ID4g Pg0KPiA+ID4gPiArDQo+ID4gPiA+DQo+ID4gPiA+ICsgIC8vDQo+ID4gPiA+DQo+ID4gPiA+ICsg IC8vIEZpbGwgTGVmdEVuY29kZShuKS4NCj4gPiA+ID4NCj4gPiA+ID4gKyAgLy8NCj4gPiA+ID4N Cj4gPiA+ID4gKyAgT2Zmc2V0ID0gRW5jU2l6ZUIgKyBtQmxvY2tOdW0gKiBtQmxvY2tSZXN1bHRT aXplOw0KPiA+ID4gPg0KPiA+ID4gPiArICBDb3B5TWVtIChDb21iaW5lZElucHV0ICsgT2Zmc2V0 LCBFbmNCdWZOLCBFbmNTaXplTik7DQo+ID4gPiA+DQo+ID4gPiA+ICsNCj4gPiA+ID4NCj4gPiA+ ID4gKyAgLy8NCj4gPiA+ID4NCj4gPiA+ID4gKyAgLy8gRmlsbCBMZWZ0RW5jb2RlKEwpLg0KPiA+ ID4gPg0KPiA+ID4gPiArICAvLw0KPiA+ID4gPg0KPiA+ID4gPiArICBPZmZzZXQgKz0gRW5jU2l6 ZU47DQo+ID4gPiA+DQo+ID4gPiA+ICsgIENvcHlNZW0gKENvbWJpbmVkSW5wdXQgKyBPZmZzZXQs IEVuY0J1ZkwsIEVuY1NpemVMKTsNCj4gPiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ID4g PiArICBSZXR1cm5WYWx1ZSA9IENTaGFrZTI1Nkhhc2hBbGwgKA0KPiA+ID4gPg0KPiA+ID4gPiAr ICAgICAgICAgICAgICAgICAgQ29tYmluZWRJbnB1dCwNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICAg ICAgICAgICAgICAgIENvbWJpbmVkSW5wdXRTaXplLA0KPiA+ID4gPg0KPiA+ID4gPiArICAgICAg ICAgICAgICAgICAgT3V0cHV0Qnl0ZUxlbiwNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICAgICAgICAg ICAgICAgIFBBUkFMTEVMSEFTSF9DVVNUT01JWkFUSU9OLA0KPiA+ID4gPg0KPiA+ID4gPiArICAg ICAgICAgICAgICAgICAgQXNjaWlTdHJMZW4oUEFSQUxMRUxIQVNIX0NVU1RPTUlaQVRJT04pLA0K PiA+ID4gPg0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAgQ3VzdG9taXphdGlvbiwNCj4gPiA+ ID4NCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgIEN1c3RvbUJ5dGVMZW4sDQo+ID4gPiA+DQo+ ID4gPiA+ICsgICAgICAgICAgICAgICAgICBPdXRwdXQNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICAg ICAgICAgICAgICAgICk7DQo+ID4gPiA+DQo+ID4gPiA+ICsNCj4gPiA+ID4NCj4gPiA+ID4gK0V4 aXQ6DQo+ID4gPiA+DQo+ID4gPiA+ICsgIFplcm9NZW0gKENvbWJpbmVkSW5wdXQsIENvbWJpbmVk SW5wdXRTaXplKTsNCj4gPiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ID4gPiArICBpZiAo Q29tYmluZWRJbnB1dCAhPSBOVUxMKXsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICBGcmVlUG9vbCAo Q29tYmluZWRJbnB1dCk7DQo+ID4gPiA+DQo+ID4gPiA+ICsgIH0NCj4gPiA+ID4NCj4gPiA+ID4g KyAgaWYgKG1TcGluTG9ja0xpc3QgIT0gTlVMTCl7DQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgRnJl ZVBvb2wgKG1TcGluTG9ja0xpc3QpOw0KPiA+ID4gPg0KPiA+ID4gPiArICB9DQo+ID4gPiA+DQo+ ID4gPiA+ICsgIGlmIChtQmxvY2tJc0NvbXBsZXRlZCAhPSBOVUxMKXsNCj4gPiA+ID4NCj4gPiA+ ID4gKyAgICBGcmVlUG9vbCAobUJsb2NrSXNDb21wbGV0ZWQpOw0KPiA+ID4gPg0KPiA+ID4gPiAr ICB9DQo+ID4gPiA+DQo+ID4gPiA+ICsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgcmV0dXJuIFJldHVy blZhbHVlOw0KPiA+ID4gPg0KPiA+ID4gPiArfQ0KPiA+ID4gPg0KPiA+ID4gPiBkaWZmIC0tZ2l0 IGEvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL0hhc2gvQ3J5cHRTaGEzLmMNCj4gPiA+ ID4gYi9DcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWIvSGFzaC9DcnlwdFNoYTMuYw0KPiA+ ID4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+ID4gPiBpbmRleCAwMDAwMDAwMDAwLi5iMTcw YzQ2M2RlDQo+ID4gPiA+IC0tLSAvZGV2L251bGwNCj4gPiA+ID4gKysrIGIvQ3J5cHRvUGtnL0xp YnJhcnkvQmFzZUNyeXB0TGliL0hhc2gvQ3J5cHRTaGEzLmMNCj4gPiA+ID4gQEAgLTAsMCArMSwx MDIgQEANCj4gPiA+ID4gKy8qKiBAZmlsZQ0KPiA+ID4gPg0KPiA+ID4gPiArICBTSEEzIHJlYWx0 ZWQgZnVuY3Rpb25zIGZyb20gT3BlblNTTC4NCj4gPiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0K PiA+ID4gPiArQ29weXJpZ2h0IChjKSAyMDIyLCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0 cyByZXNlcnZlZC48QlI+DQo+ID4gPiA+DQo+ID4gPiA+ICtTUERYLUxpY2Vuc2UtSWRlbnRpZmll cjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiA+ID4gPg0KPiA+ID4gPiArDQo+ID4gPiA+DQo+ID4g PiA+ICtDb3B5cmlnaHQgMjAxNy0yMDIyIFRoZSBPcGVuU1NMIFByb2plY3QgQXV0aG9ycy4gQWxs IFJpZ2h0cyBSZXNlcnZlZC4NCj4gPiA+ID4NCj4gPiA+ID4gK0xpY2Vuc2VkIHVuZGVyIHRoZSBP cGVuU1NMIGxpY2Vuc2UgKHRoZSAiTGljZW5zZSIpLiAgWW91IG1heSBub3QgdXNlDQo+ID4gPiA+ DQo+ID4gPiA+ICt0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5z ZS4gIFlvdSBjYW4gb2J0YWluIGENCj4gPiA+ID4gK2NvcHkNCj4gPiA+ID4NCj4gPiA+ID4gK2lu IHRoZSBmaWxlIExJQ0VOU0UgaW4gdGhlIHNvdXJjZSBkaXN0cmlidXRpb24gb3IgYXQNCj4gPiA+ ID4NCj4gPiA+ID4gK2h0dHBzOi8vd3d3Lm9wZW5zc2wub3JnL3NvdXJjZS9saWNlbnNlLmh0bWwN Cj4gPiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ID4gPiArKiovDQo+ID4gPiA+DQo+ID4g PiA+ICsNCj4gPiA+ID4NCj4gPiA+ID4gKyNpbmNsdWRlICJzaGEzLmgiDQo+ID4gPiA+DQo+ID4g PiA+ICsNCj4gPiA+ID4NCj4gPiA+ID4gK3NpemVfdCBTSEEzX2Fic29yYih1aW50NjRfdCBBWzVd WzVdLCBjb25zdCB1bnNpZ25lZCBjaGFyICppbnAsIHNpemVfdA0KPiA+ID4gPiArbGVuLA0KPiA+ ID4gPg0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAgIHNpemVfdCByKTsNCj4gPiA+ID4NCj4g PiA+ID4gK3ZvaWQgU0hBM19zcXVlZXplKHVpbnQ2NF90IEFbNV1bNV0sIHVuc2lnbmVkIGNoYXIg Km91dCwgc2l6ZV90IGxlbiwNCj4gPiA+ID4gK3NpemVfdCByKTsNCj4gPiA+ID4NCj4gPiA+ID4g Kw0KPiA+ID4gPg0KPiA+ID4gPiAraW50IGluaXQoS0VDQ0FLMTYwMF9DVFggKmN0eCwgdW5zaWdu ZWQgY2hhciBwYWQsIHNpemVfdCBic3osIHNpemVfdA0KPiA+ID4gPiArbWRfc2l6ZSkNCj4gPiA+ ID4NCj4gPiA+ID4gK3sNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICBpZiAoYnN6IDw9IHNpemVvZihj dHgtPmJ1ZikpIHsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICAgICAgbWVtc2V0KGN0eC0+QSwgMCwg c2l6ZW9mKGN0eC0+QSkpOw0KPiA+ID4gPg0KPiA+ID4gPiArDQo+ID4gPiA+DQo+ID4gPiA+ICsg ICAgICAgIGN0eC0+bnVtID0gMDsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICAgICAgY3R4LT5ibG9j a19zaXplID0gYnN6Ow0KPiA+ID4gPg0KPiA+ID4gPiArICAgICAgICBjdHgtPm1kX3NpemUgPSBt ZF9zaXplOw0KPiA+ID4gPg0KPiA+ID4gPiArICAgICAgICBjdHgtPnBhZCA9IHBhZDsNCj4gPiA+ ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ID4gPiArICAgICAgICByZXR1cm4gMTsNCj4gPiA+ ID4NCj4gPiA+ID4gKyAgICB9DQo+ID4gPiA+DQo+ID4gPiA+ICsNCj4gPiA+ID4NCj4gPiA+ID4g KyAgICByZXR1cm4gMDsNCj4gPiA+ID4NCj4gPiA+ID4gK30NCj4gPiA+ID4NCj4gPiA+ID4gKw0K PiA+ID4gPg0KPiA+ID4gPiArDQo+ID4gPiA+DQo+ID4gPiA+ICtpbnQgc2hhM191cGRhdGUoS0VD Q0FLMTYwMF9DVFggKmN0eCwgY29uc3Qgdm9pZCAqX2lucCwgc2l6ZV90IGxlbikNCj4gPiA+ID4N Cj4gPiA+ID4gK3sNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpp bnAgPSBfaW5wOw0KPiA+ID4gPg0KPiA+ID4gPiArICAgIHNpemVfdCBic3ogPSBjdHgtPmJsb2Nr X3NpemU7DQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgc2l6ZV90IG51bSwgcmVtOw0KPiA+ID4gPg0K PiA+ID4gPiArDQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgaWYgKGxlbiA9PSAwKQ0KPiA+ID4gPg0K PiA+ID4gPiArICAgICAgICByZXR1cm4gMTsNCj4gPiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0K PiA+ID4gPiArICAgIGlmICgobnVtID0gY3R4LT5udW0pICE9IDApIHsgICAgICAvKiBwcm9jZXNz IGludGVybWVkaWF0ZSBidWZmZXI/ICovDQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgICAgIHJlbSA9 IGJzeiAtIG51bTsNCj4gPiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ID4gPiArICAgICAg ICBpZiAobGVuIDwgcmVtKSB7DQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgICAgICAgICBtZW1jcHko Y3R4LT5idWYgKyBudW0sIGlucCwgbGVuKTsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICAgICAgICAg IGN0eC0+bnVtICs9IGxlbjsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICAgICAgICAgIHJldHVybiAx Ow0KPiA+ID4gPg0KPiA+ID4gPiArICAgICAgICB9DQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgICAg IC8qDQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgICAgICAqIFdlIGhhdmUgZW5vdWdoIGRhdGEgdG8g ZmlsbCBvciBvdmVyZmxvdyB0aGUgaW50ZXJtZWRpYXRlDQo+ID4gPiA+DQo+ID4gPiA+ICsgICAg ICAgICAqIGJ1ZmZlci4gU28gd2UgYXBwZW5kIHxyZW18IGJ5dGVzIGFuZCBwcm9jZXNzIHRoZSBi bG9jaywNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICAgICAgICogbGVhdmluZyB0aGUgcmVzdCBmb3Ig bGF0ZXIgcHJvY2Vzc2luZy4uLg0KPiA+ID4gPg0KPiA+ID4gPiArICAgICAgICAgKi8NCj4gPiA+ ID4NCj4gPiA+ID4gKyAgICAgICAgbWVtY3B5KGN0eC0+YnVmICsgbnVtLCBpbnAsIHJlbSk7DQo+ ID4gPiA+DQo+ID4gPiA+ICsgICAgICAgIGlucCArPSByZW0sIGxlbiAtPSByZW07DQo+ID4gPiA+ DQo+ID4gPiA+ICsgICAgICAgICh2b2lkKVNIQTNfYWJzb3JiKGN0eC0+QSwgY3R4LT5idWYsIGJz eiwgYnN6KTsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICAgICAgY3R4LT5udW0gPSAwOw0KPiA+ID4g Pg0KPiA+ID4gPiArICAgICAgICAvKiBjdHgtPmJ1ZiBpcyBwcm9jZXNzZWQsIGN0eC0+bnVtIGlz IGd1YXJhbnRlZWQgdG8gYmUgemVybw0KPiA+ID4gPiArICovDQo+ID4gPiA+DQo+ID4gPiA+ICsg ICAgfQ0KPiA+ID4gPg0KPiA+ID4gPiArDQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgaWYgKGxlbiA+ PSBic3opDQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgICAgIHJlbSA9IFNIQTNfYWJzb3JiKGN0eC0+ QSwgaW5wLCBsZW4sIGJzeik7DQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgZWxzZQ0KPiA+ID4gPg0K PiA+ID4gPiArICAgICAgICByZW0gPSBsZW47DQo+ID4gPiA+DQo+ID4gPiA+ICsNCj4gPiA+ID4N Cj4gPiA+ID4gKyAgICBpZiAocmVtKSB7DQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgICAgIG1lbWNw eShjdHgtPmJ1ZiwgaW5wICsgbGVuIC0gcmVtLCByZW0pOw0KPiA+ID4gPg0KPiA+ID4gPiArICAg ICAgICBjdHgtPm51bSA9IHJlbTsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICB9DQo+ID4gPiA+DQo+ ID4gPiA+ICsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICByZXR1cm4gMTsNCj4gPiA+ID4NCj4gPiA+ ID4gK30NCj4gPiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ID4gPiAraW50IHNoYTNfZmlu YWwoS0VDQ0FLMTYwMF9DVFggKmN0eCwgdW5zaWduZWQgY2hhciAqbWQpDQo+ID4gPiA+DQo+ID4g PiA+ICt7DQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgc2l6ZV90IGJzeiA9IGN0eC0+YmxvY2tfc2l6 ZTsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICBzaXplX3QgbnVtID0gY3R4LT5udW07DQo+ID4gPiA+ DQo+ID4gPiA+ICsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICBpZiAoY3R4LT5tZF9zaXplID09IDAp DQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgICAgIHJldHVybiAxOw0KPiA+ID4gPg0KPiA+ID4gPiAr DQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgLyoNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICAgKiBQYWQg dGhlIGRhdGEgd2l0aCAxMCoxLiBOb3RlIHRoYXQgfG51bXwgY2FuIGJlIHxic3ogLSAxfA0KPiA+ ID4gPg0KPiA+ID4gPiArICAgICAqIGluIHdoaWNoIGNhc2UgYm90aCBieXRlIG9wZXJhdGlvbnMg YmVsb3cgYXJlIHBlcmZvcm1lZCBvbg0KPiA+ID4gPg0KPiA+ID4gPiArICAgICAqIHNhbWUgYnl0 ZS4uLg0KPiA+ID4gPg0KPiA+ID4gPiArICAgICAqLw0KPiA+ID4gPg0KPiA+ID4gPiArICAgIG1l bXNldChjdHgtPmJ1ZiArIG51bSwgMCwgYnN6IC0gbnVtKTsNCj4gPiA+ID4NCj4gPiA+ID4gKyAg ICBjdHgtPmJ1ZltudW1dID0gY3R4LT5wYWQ7DQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgY3R4LT5i dWZbYnN6IC0gMV0gfD0gMHg4MDsNCj4gPiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ID4g PiArICAgICh2b2lkKVNIQTNfYWJzb3JiKGN0eC0+QSwgY3R4LT5idWYsIGJzeiwgYnN6KTsNCj4g PiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ID4gPiArICAgIFNIQTNfc3F1ZWV6ZShjdHgt PkEsIG1kLCBjdHgtPm1kX3NpemUsIGJzeik7DQo+ID4gPiA+DQo+ID4gPiA+ICsNCj4gPiA+ID4N Cj4gPiA+ID4gKyAgICByZXR1cm4gMTsNCj4gPiA+ID4NCj4gPiA+ID4gK30NCj4gPiA+ID4NCj4g PiA+ID4gZGlmZiAtLWdpdCBhL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9IYXNoL0Ny eXB0WGtjcC5jDQo+ID4gPiA+IGIvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL0hhc2gv Q3J5cHRYa2NwLmMNCj4gPiA+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiA+ID4gaW5kZXgg MDAwMDAwMDAwMC4uYjJhNDBlZTA0NA0KPiA+ID4gPiAtLS0gL2Rldi9udWxsDQo+ID4gPiA+ICsr KyBiL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9IYXNoL0NyeXB0WGtjcC5jDQo+ID4g PiA+IEBAIC0wLDAgKzEsNTMgQEANCj4gPiA+ID4gKy8qKiBAZmlsZQ0KPiA+ID4gPg0KPiA+ID4g PiArICBFbmNvZGUgcmVhbHRlZCBmdW5jdGlvbnMgZnJvbSBYa2NwLg0KPiA+ID4gPg0KPiA+ID4g PiArDQo+ID4gPiA+DQo+ID4gPiA+ICtDb3B5cmlnaHQgKGMpIDIwMjIsIEludGVsIENvcnBvcmF0 aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiA+ID4NCj4gPiA+ID4gK1NQRFgtTGlj ZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4gPiA+DQo+ID4gPiA+ICsN Cj4gPiA+ID4NCj4gPiA+ID4gK1RoZSBlWHRlbmRlZCBLZWNjYWsgQ29kZSBQYWNrYWdlIChYS0NQ KQ0KPiA+ID4gPg0KPiA+ID4gPiAraHR0cHM6Ly9naXRodWIuY29tL1hLQ1AvWEtDUA0KPiA+ID4g Pg0KPiA+ID4gPiArS2VjY2FrLCBkZXNpZ25lZCBieSBHdWlkbyBCZXJ0b25pLCBKb2FuIERhZW1l biwgTWljaGHDq2wgUGVldGVycw0KPiBhbmQNCj4gPiA+ID4gK0dpbGxlcw0KPiA+ID4gPiBWYW4g QXNzY2hlLg0KPiA+ID4gPg0KPiA+ID4gPiArSW1wbGVtZW50YXRpb24gYnkgdGhlIGRlc2lnbmVy cywgaGVyZWJ5IGRlbm90ZWQgYXMgInRoZQ0KPiBpbXBsZW1lbnRlciIuDQo+ID4gPiA+DQo+ID4g PiA+ICtGb3IgbW9yZSBpbmZvcm1hdGlvbiwgZmVlZGJhY2sgb3IgcXVlc3Rpb25zLCBwbGVhc2Ug cmVmZXIgdG8gdGhlDQo+ID4gPiA+ICtLZWNjYWsgVGVhbQ0KPiA+ID4gPiB3ZWJzaXRlOg0KPiA+ ID4gPg0KPiA+ID4gPiAraHR0cHM6Ly9rZWNjYWsudGVhbS8NCj4gPiA+ID4NCj4gPiA+ID4gK1Rv IHRoZSBleHRlbnQgcG9zc2libGUgdW5kZXIgbGF3LCB0aGUgaW1wbGVtZW50ZXIgaGFzIHdhaXZl ZCBhbGwNCj4gPiA+ID4gK2NvcHlyaWdodA0KPiA+ID4gPg0KPiA+ID4gPiArYW5kIHJlbGF0ZWQg b3IgbmVpZ2hib3JpbmcgcmlnaHRzIHRvIHRoZSBzb3VyY2UgY29kZSBpbiB0aGlzIGZpbGUuDQo+ ID4gPiA+DQo+ID4gPiA+ICtodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4v emVyby8xLjAvDQo+ID4gPiA+DQo+ID4gPiA+ICsNCj4gPiA+ID4NCj4gPiA+ID4gKyoqLw0KPiA+ ID4gPg0KPiA+ID4gPiArDQo+ID4gPiA+DQo+ID4gPiA+ICsjaW5jbHVkZSAieGtjcC5oIg0KPiA+ ID4gPg0KPiA+ID4gPiArDQo+ID4gPiA+DQo+ID4gPiA+ICt1bnNpZ25lZCBpbnQgbGVmdF9lbmNv ZGUodW5zaWduZWQgY2hhciAqIGVuY2J1Ziwgc2l6ZV90IHZhbHVlKQ0KPiA+ID4gPg0KPiA+ID4g PiArew0KPiA+ID4gPg0KPiA+ID4gPiArICAgIHVuc2lnbmVkIGludCBuLCBpOw0KPiA+ID4gPg0K PiA+ID4gPiArICAgIHNpemVfdCB2Ow0KPiA+ID4gPg0KPiA+ID4gPiArDQo+ID4gPiA+DQo+ID4g PiA+ICsgICAgZm9yICggdiA9IHZhbHVlLCBuID0gMDsgdiAmJiAobiA8IHNpemVvZihzaXplX3Qp KTsgKytuLCB2ID4+PSA4ICkNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICAgICAgOyAvKiBlbXB0eSAq Lw0KPiA+ID4gPg0KPiA+ID4gPiArICAgIGlmIChuID09IDApDQo+ID4gPiA+DQo+ID4gPiA+ICsg ICAgICAgIG4gPSAxOw0KPiA+ID4gPg0KPiA+ID4gPiArICAgIGZvciAoIGkgPSAxOyBpIDw9IG47 ICsraSApDQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgew0KPiA+ID4gPg0KPiA+ID4gPiArICAgICAg ICBlbmNidWZbaV0gPSAodW5zaWduZWQgY2hhcikodmFsdWUgPj4gKDggKiAobi1pKSkpOw0KPiA+ ID4gPg0KPiA+ID4gPiArICAgIH0NCj4gPiA+ID4NCj4gPiA+ID4gKyAgICBlbmNidWZbMF0gPSAo dW5zaWduZWQgY2hhciluOw0KPiA+ID4gPg0KPiA+ID4gPiArICAgIHJldHVybiBuICsgMTsNCj4g PiA+ID4NCj4gPiA+ID4gK30NCj4gPiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ID4gPiAr dW5zaWduZWQgaW50IHJpZ2h0X2VuY29kZSh1bnNpZ25lZCBjaGFyICogZW5jYnVmLCBzaXplX3Qg dmFsdWUpDQo+ID4gPiA+DQo+ID4gPiA+ICt7DQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgdW5zaWdu ZWQgaW50IG4sIGk7DQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgc2l6ZV90IHY7DQo+ID4gPiA+DQo+ ID4gPiA+ICsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICBmb3IgKCB2ID0gdmFsdWUsIG4gPSAwOyB2 ICYmIChuIDwgc2l6ZW9mKHNpemVfdCkpOyArK24sIHYgPj49IDggKQ0KPiA+ID4gPg0KPiA+ID4g PiArICAgICAgICA7IC8qIGVtcHR5ICovDQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgaWYgKG4gPT0g MCkNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICAgICAgbiA9IDE7DQo+ID4gPiA+DQo+ID4gPiA+ICsg ICAgZm9yICggaSA9IDE7IGkgPD0gbjsgKytpICkNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICB7DQo+ ID4gPiA+DQo+ID4gPiA+ICsgICAgICAgIGVuY2J1ZltpLTFdID0gKHVuc2lnbmVkIGNoYXIpKHZh bHVlID4+ICg4ICogKG4taSkpKTsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICB9DQo+ID4gPiA+DQo+ ID4gPiA+ICsgICAgZW5jYnVmW25dID0gKHVuc2lnbmVkIGNoYXIpbjsNCj4gPiA+ID4NCj4gPiA+ ID4gKyAgICByZXR1cm4gbiArIDE7DQo+ID4gPiA+DQo+ID4gPiA+ICt9DQo+ID4gPiA+DQo+ID4g PiA+IGRpZmYgLS1naXQNCj4gPiA+ID4gYS9DcnlwdG9Qa2cvVGVzdC9Vbml0VGVzdC9MaWJyYXJ5 L0Jhc2VDcnlwdExpYi9QYXJhbGxlbGhhc2hUZXN0cy5jDQo+ID4gPiA+IGIvQ3J5cHRvUGtnL1Rl c3QvVW5pdFRlc3QvTGlicmFyeS9CYXNlQ3J5cHRMaWIvUGFyYWxsZWxoYXNoVGVzdHMuYw0KPiA+ ID4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+ID4gPiBpbmRleCAwMDAwMDAwMDAwLi4wNTJh YjNhMGQ2DQo+ID4gPiA+IC0tLSAvZGV2L251bGwNCj4gPiA+ID4gKysrDQo+IGIvQ3J5cHRvUGtn L1Rlc3QvVW5pdFRlc3QvTGlicmFyeS9CYXNlQ3J5cHRMaWIvUGFyYWxsZWxoYXNoVGVzdHMuYw0K PiA+ID4gPiBAQCAtMCwwICsxLDE1MiBAQA0KPiA+ID4gPiArLyoqIEBmaWxlDQo+ID4gPiA+DQo+ ID4gPiA+ICsgIEFwcGxpY2F0aW9uIGZvciBQYXJhbGxlbGhhc2ggRnVuY3Rpb24gVmFsaWRhdGlv bi4NCj4gPiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ID4gPiArQ29weXJpZ2h0IChjKSAy MDIyLCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4gPiA+ DQo+ID4gPiA+ICtTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0K PiA+ID4gPg0KPiA+ID4gPiArDQo+ID4gPiA+DQo+ID4gPiA+ICsqKi8NCj4gPiA+ID4NCj4gPiA+ ID4gKw0KPiA+ID4gPg0KPiA+ID4gPiArI2luY2x1ZGUgIlRlc3RCYXNlQ3J5cHRMaWIuaCINCj4g PiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ID4gPiArLy8NCj4gPiA+ID4NCj4gPiA+ID4g Ky8vIFBhcmFsbGVsaGFzaCBUZXN0IFNhbXBsZSBjb21tb24gcGFyYW1ldGVycy4NCj4gPiA+ID4N Cj4gPiA+ID4gKy8vDQo+ID4gPiA+DQo+ID4gPiA+ICtHTE9CQUxfUkVNT1ZFX0lGX1VOUkVGRVJF TkNFRCBDT05TVCBVSU5UTiAgT3V0cHV0Qnl0ZUxlbg0KPiA9DQo+ID4gPiA2NDsNCj4gPiA+ID4N Cj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ID4gPiArLy8NCj4gPiA+ID4NCj4gPiA+ID4gKy8vIFBh cmFsbGVsaGFzaCBUZXN0IFNhbXBsZSAjMSBmcm9tIE5JU1QgU3BlY2lhbCBQdWJsaWNhdGlvbiA4 MDAtMTg1Lg0KPiA+ID4gPg0KPiA+ID4gPiArLy8NCj4gPiA+ID4NCj4gPiA+ID4gK0dMT0JBTF9S RU1PVkVfSUZfVU5SRUZFUkVOQ0VEIENPTlNUIFVJTlQ4ICAgSW5wdXRTYW1wbGUxW10NCj4gPiA+ ID0gew0KPiA+ID4gPg0KPiA+ID4gPiArICAvLyBpbnB1dCBkYXRhIG9mIHNhbXBsZTEuDQo+ID4g PiA+DQo+ID4gPiA+ICsgIDB4MDAsIDB4MDEsIDB4MDIsIDB4MDMsIDB4MDQsIDB4MDUsIDB4MDYs IDB4MDcsIDB4MTAsIDB4MTEsIDB4MTIsDQo+ID4gPiA+ICsgMHgxMywgMHgxNCwNCj4gPiA+ID4g MHgxNSwgMHgxNiwgMHgxNywNCj4gPiA+ID4NCj4gPiA+ID4gKyAgMHgyMCwgMHgyMSwgMHgyMiwg MHgyMywgMHgyNCwgMHgyNSwgMHgyNiwgMHgyNw0KPiA+ID4gPg0KPiA+ID4gPiArfTsNCj4gPiA+ ID4NCj4gPiA+ID4gK0dMT0JBTF9SRU1PVkVfSUZfVU5SRUZFUkVOQ0VEIFVJTlRODQo+IElucHV0 U2FtcGxlMUJ5dGVMZW4NCj4gPiA+ID0NCj4gPiA+ID4gMjQ7ICAgICAvLyBMZW5ndGggb2Ygc2Ft cGxlMSBpbnB1dCBkYXRhIGluIGJ5dGVzLg0KPiA+ID4gPg0KPiA+ID4gPiArR0xPQkFMX1JFTU9W RV9JRl9VTlJFRkVSRU5DRUQgQ09OU1QgVk9JRA0KPiA+ID4gKkN1c3RvbWl6YXRpb25TYW1wbGUx DQo+ID4gPiA+ID0gIiI7ICAgICAvLyBDdXN0b21pemF0aW9uIHN0cmluZyAoUykgb2Ygc2FtcGxl MS4NCj4gPiA+ID4NCj4gPiA+ID4gK0dMT0JBTF9SRU1PVkVfSUZfVU5SRUZFUkVOQ0VEIFVJTlRO DQo+ID4gPiBDdXN0b21TYW1wbGUxQnl0ZUxlbiAgICAgPQ0KPiA+ID4gPiAwOyAgICAgIC8vIEN1 c3RvbWl6YXRpb24gc3RyaW5nIGxlbmd0aCBvZiBzYW1wbGUxIGluIGJ5dGVzLg0KPiA+ID4gPg0K PiA+ID4gPiArR0xPQkFMX1JFTU9WRV9JRl9VTlJFRkVSRU5DRUQgVUlOVE4gICAgICAgIEJsb2Nr U2l6ZVNhbXBsZTENCj4gPQ0KPiA+ID4gODsNCj4gPiA+ID4gLy8gQmxvY2sgc2l6ZSBvZiBzYW1w bGUxLg0KPiA+ID4gPg0KPiA+ID4gPiArR0xPQkFMX1JFTU9WRV9JRl9VTlJFRkVSRU5DRUQgQ09O U1QgVUlOVDgNCj4gPiA+IEV4cGVjdE91dHB1dFNhbXBsZTFbXQ0KPiA+ID4gPiA9IHsNCj4gPiA+ ID4NCj4gPiA+ID4gKyAgLy8gRXhwZWN0ZWQgb3V0cHV0IGRhdGEgb2Ygc2FtcGxlMS4NCj4gPiA+ ID4NCj4gPiA+ID4gKyAgMHhiYywgMHgxZSwgMHhmMSwgMHgyNCwgMHhkYSwgMHgzNCwgMHg0OSwg MHg1ZSwgMHg5NCwgMHg4ZSwgMHhhZCwNCj4gPiA+ID4gKyAweDIwLCAweDdkLA0KPiA+ID4gPiAw eGQ5LCAweDg0LCAweDIyLA0KPiA+ID4gPg0KPiA+ID4gPiArICAweDM1LCAweGRhLCAweDQzLCAw eDJkLCAweDJiLCAweGJjLCAweDU0LCAweGI0LCAweGMxLCAweDEwLCAweGU2LA0KPiA+ID4gPiAr IDB4NGMsIDB4NDUsDQo+ID4gPiA+IDB4MTEsIDB4MDUsIDB4NTMsDQo+ID4gPiA+DQo+ID4gPiA+ ICsgIDB4MWIsIDB4N2YsIDB4MmEsIDB4M2UsIDB4MGMsIDB4ZTAsIDB4NTUsIDB4YzAsIDB4Mjgs IDB4MDUsIDB4ZTcsDQo+ID4gPiA+ICsgMHhjMiwgMHhkZSwNCj4gPiA+ID4gMHgxZiwgMHhiNywg MHg0NiwNCj4gPiA+ID4NCj4gPiA+ID4gKyAgMHhhZiwgMHg5NywgMHhhMSwgMHhkMCwgMHgwMSwg MHhmNCwgMHgzYiwgMHg4MiwgMHg0ZSwgMHgzMSwgMHhiOCwNCj4gPiA+ID4gKyAweDc2LCAweDEy LA0KPiA+ID4gPiAweDQxLCAweDA0LCAweDI5DQo+ID4gPiA+DQo+ID4gPiA+ICt9Ow0KPiA+ID4g Pg0KPiA+ID4gPiArDQo+ID4gPiA+DQo+ID4gPiA+ICsvLw0KPiA+ID4gPg0KPiA+ID4gPiArLy8g UGFyYWxsZWxoYXNoIFRlc3QgU2FtcGxlICMyIGZyb20gTklTVCBTcGVjaWFsIFB1YmxpY2F0aW9u IDgwMC0xODUuDQo+ID4gPiA+DQo+ID4gPiA+ICsvLw0KPiA+ID4gPg0KPiA+ID4gPiArR0xPQkFM X1JFTU9WRV9JRl9VTlJFRkVSRU5DRUQgQ09OU1QgVUlOVDggICpJbnB1dFNhbXBsZTINCj4gPiA+ ID0NCj4gPiA+ID4gSW5wdXRTYW1wbGUxOyAgICAgICAgICAgIC8vIElucHV0IG9mIHNhbXBsZTIg aXMgc2FtZSBhcyBzYW1wbGUxLg0KPiA+ID4gPg0KPiA+ID4gPiArR0xPQkFMX1JFTU9WRV9JRl9V TlJFRkVSRU5DRUQgVUlOVE4NCj4gSW5wdXRTYW1wbGUyQnl0ZUxlbg0KPiA+ID4gPQ0KPiA+ID4g PiAyNDsgICAgICAgICAgICAgICAgICAgICAgLy8gTGVuZ3RoIG9mIHNhbXBsZTIgaW5wdXQgZGF0 YSBpbiBieXRlcy4NCj4gPiA+ID4NCj4gPiA+ID4gK0dMT0JBTF9SRU1PVkVfSUZfVU5SRUZFUkVO Q0VEIENPTlNUIFZPSUQNCj4gPiA+ICpDdXN0b21pemF0aW9uU2FtcGxlMg0KPiA+ID4gPiA9ICJQ YXJhbGxlbCBEYXRhIjsgICAgICAgICAvLyBDdXN0b21pemF0aW9uIHN0cmluZyAoUykgb2Ygc2Ft cGxlMi4NCj4gPiA+ID4NCj4gPiA+ID4gK0dMT0JBTF9SRU1PVkVfSUZfVU5SRUZFUkVOQ0VEIFVJ TlRODQo+ID4gPiBDdXN0b21TYW1wbGUyQnl0ZUxlbiAgICAgPQ0KPiA+ID4gPiAxMzsgICAgICAg ICAgICAgICAgICAgICAgLy8gQ3VzdG9taXphdGlvbiBzdHJpbmcgbGVuZ3RoIG9mIHNhbXBsZTIg aW4gYnl0ZXMuDQo+ID4gPiA+DQo+ID4gPiA+ICtHTE9CQUxfUkVNT1ZFX0lGX1VOUkVGRVJFTkNF RCBVSU5UTiAgICAgICAgQmxvY2tTaXplU2FtcGxlMg0KPiA9DQo+ID4gPiA4Ow0KPiA+ID4gPiAv LyBCbG9jayBzaXplIG9mIHNhbXBsZTIuDQo+ID4gPiA+DQo+ID4gPiA+ICtHTE9CQUxfUkVNT1ZF X0lGX1VOUkVGRVJFTkNFRCBDT05TVCBVSU5UOA0KPiA+ID4gRXhwZWN0T3V0cHV0U2FtcGxlMltd DQo+ID4gPiA+ID0gew0KPiA+ID4gPg0KPiA+ID4gPiArICAvLyBFeHBlY3RlZCBvdXRwdXQgZGF0 YSBvZiBzYW1wbGUyLg0KPiA+ID4gPg0KPiA+ID4gPiArICAweGNkLCAweGYxLCAweDUyLCAweDg5 LCAweGI1LCAweDRmLCAweDYyLCAweDEyLCAweGI0LCAweGJjLCAweDI3LA0KPiA+ID4gPiArIDB4 MDUsIDB4MjgsDQo+ID4gPiA+IDB4YjQsIDB4OTUsIDB4MjYsDQo+ID4gPiA+DQo+ID4gPiA+ICsg IDB4MDAsIDB4NmQsIDB4ZDksIDB4YjUsIDB4NGUsIDB4MmIsIDB4NmEsIDB4ZGQsIDB4MWUsIDB4 ZjYsIDB4OTAsDQo+ID4gPiA+ICsgMHgwZCwgMHhkYSwNCj4gPiA+ID4gMHgzOSwgMHg2MywgMHhi YiwNCj4gPiA+ID4NCj4gPiA+ID4gKyAgMHgzMywgMHhhNywgMHgyNCwgMHg5MSwgMHhmMiwgMHgz NiwgMHg5NiwgMHg5YywgMHhhOCwgMHhhZiwgMHhhZSwNCj4gPiA+ID4gKyAweGEyLCAweDljLA0K PiA+ID4gPiAweDY4LCAweDJkLCAweDQ3LA0KPiA+ID4gPg0KPiA+ID4gPiArICAweGEzLCAweDkz LCAweGMwLCAweDY1LCAweGIzLCAweDhlLCAweDI5LCAweGZhLCAweGU2LCAweDUxLCAweGEyLA0K PiA+ID4gPiArIDB4MDksIDB4MWMsDQo+ID4gPiA+IDB4ODMsIDB4MzEsIDB4MTANCj4gPiA+ID4N Cj4gPiA+ID4gK307DQo+ID4gPiA+DQo+ID4gPiA+ICsNCj4gPiA+ID4NCj4gPiA+ID4gKy8vDQo+ ID4gPiA+DQo+ID4gPiA+ICsvLyBQYXJhbGxlbGhhc2ggVGVzdCBTYW1wbGUgIzMgZnJvbSBOSVNU IFNwZWNpYWwgUHVibGljYXRpb24gODAwLTE4NS4NCj4gPiA+ID4NCj4gPiA+ID4gKy8vDQo+ID4g PiA+DQo+ID4gPiA+ICtHTE9CQUxfUkVNT1ZFX0lGX1VOUkVGRVJFTkNFRCBDT05TVCBVSU5UOCAg SW5wdXRTYW1wbGUzW10NCj4gPiA+ID0gew0KPiA+ID4gPg0KPiA+ID4gPiArICAvLyBpbnB1dCBk YXRhIG9mIHNhbXBsZTMuDQo+ID4gPiA+DQo+ID4gPiA+ICsgIDB4MDAsIDB4MDEsIDB4MDIsIDB4 MDMsIDB4MDQsIDB4MDUsIDB4MDYsIDB4MDcsIDB4MDgsIDB4MDksIDB4MGEsDQo+ID4gPiA+ICsg MHgwYiwgMHgxMCwNCj4gPiA+ID4gMHgxMSwgMHgxMiwgMHgxMywNCj4gPiA+ID4NCj4gPiA+ID4g KyAgMHgxNCwgMHgxNSwgMHgxNiwgMHgxNywgMHgxOCwgMHgxOSwgMHgxYSwgMHgxYiwgMHgyMCwg MHgyMSwgMHgyMiwNCj4gPiA+ID4gKyAweDIzLCAweDI0LA0KPiA+ID4gPiAweDI1LCAweDI2LCAw eDI3LA0KPiA+ID4gPg0KPiA+ID4gPiArICAweDI4LCAweDI5LCAweDJhLCAweDJiLCAweDMwLCAw eDMxLCAweDMyLCAweDMzLCAweDM0LCAweDM1LCAweDM2LA0KPiA+ID4gPiArIDB4MzcsIDB4Mzgs DQo+ID4gPiA+IDB4MzksIDB4M2EsIDB4M2IsDQo+ID4gPiA+DQo+ID4gPiA+ICsgIDB4NDAsIDB4 NDEsIDB4NDIsIDB4NDMsIDB4NDQsIDB4NDUsIDB4NDYsIDB4NDcsIDB4NDgsIDB4NDksIDB4NGEs DQo+ID4gPiA+ICsgMHg0YiwgMHg1MCwNCj4gPiA+ID4gMHg1MSwgMHg1MiwgMHg1MywNCj4gPiA+ ID4NCj4gPiA+ID4gKyAgMHg1NCwgMHg1NSwgMHg1NiwgMHg1NywgMHg1OCwgMHg1OSwgMHg1YSwg MHg1Yg0KPiA+ID4gPg0KPiA+ID4gPiArfTsNCj4gPiA+ID4NCj4gPiA+ID4gK0dMT0JBTF9SRU1P VkVfSUZfVU5SRUZFUkVOQ0VEIFVJTlRODQo+IElucHV0U2FtcGxlM0J5dGVMZW4NCj4gPiA+ID0N Cj4gPiA+ID4gNzI7ICAgICAgICAgICAgICAgICAgICAgIC8vIExlbmd0aCBvZiBzYW1wbGUzIGlu cHV0IGRhdGEgaW4gYnl0ZXMuDQo+ID4gPiA+DQo+ID4gPiA+ICtHTE9CQUxfUkVNT1ZFX0lGX1VO UkVGRVJFTkNFRCBDT05TVCBWT0lEDQo+ID4gPiAqQ3VzdG9taXphdGlvblNhbXBsZTMNCj4gPiA+ ID4gPSAiUGFyYWxsZWwgRGF0YSI7ICAgICAgICAgLy8gQ3VzdG9taXphdGlvbiBzdHJpbmcgKFMp IG9mIHNhbXBsZTMuDQo+ID4gPiA+DQo+ID4gPiA+ICtHTE9CQUxfUkVNT1ZFX0lGX1VOUkVGRVJF TkNFRCBVSU5UTg0KPiA+ID4gQ3VzdG9tU2FtcGxlM0J5dGVMZW4gICAgID0NCj4gPiA+ID4gMTM7 ICAgICAgICAgICAgICAgICAgICAgIC8vIEN1c3RvbWl6YXRpb24gc3RyaW5nIGxlbmd0aCBvZiBz YW1wbGUzIGluIGJ5dGVzLg0KPiA+ID4gPg0KPiA+ID4gPiArR0xPQkFMX1JFTU9WRV9JRl9VTlJF RkVSRU5DRUQgVUlOVE4gICAgICAgIEJsb2NrU2l6ZVNhbXBsZTMNCj4gPQ0KPiA+ID4gMTI7DQo+ ID4gPiA+IC8vIEJsb2NrIHNpemUgb2Ygc2FtcGxlMy4NCj4gPiA+ID4NCj4gPiA+ID4gK0dMT0JB TF9SRU1PVkVfSUZfVU5SRUZFUkVOQ0VEIENPTlNUIFVJTlQ4DQo+ID4gPiBFeHBlY3RPdXRwdXRT YW1wbGUzW10NCj4gPiA+ID4gPSB7DQo+ID4gPiA+DQo+ID4gPiA+ICsgIC8vIEV4cGVjdGVkIG91 dHB1dCBkYXRhIG9mIHNhbXBsZTMuDQo+ID4gPiA+DQo+ID4gPiA+ICsgIDB4NjksIDB4ZDAsIDB4 ZmMsIDB4YjcsIDB4NjQsIDB4ZWEsIDB4MDUsIDB4NWQsIDB4ZDAsIDB4OTMsIDB4MzQsDQo+ID4g PiA+ICsgMHhiYywgMHg2MCwNCj4gPiA+ID4gMHgyMSwgMHhjYiwgMHg3ZSwNCj4gPiA+ID4NCj4g PiA+ID4gKyAgMHg0YiwgMHg2MSwgMHgzNCwgMHg4ZCwgMHhmZiwgMHgzNywgMHg1ZCwgMHhhMiwg MHg2MiwgMHg2NywgMHgxYywNCj4gPiA+ID4gKyAweGRlLCAweGMzLA0KPiA+ID4gPiAweGVmLCAw eGZhLCAweDhkLA0KPiA+ID4gPg0KPiA+ID4gPiArICAweDFiLCAweDQ1LCAweDY4LCAweGE2LCAw eGNjLCAweGUxLCAweDZiLCAweDFjLCAweGFkLCAweDk0LCAweDZkLA0KPiA+ID4gPiArIDB4ZGQs IDB4ZTIsDQo+ID4gPiA+IDB4N2YsIDB4NmMsIDB4ZTIsDQo+ID4gPiA+DQo+ID4gPiA+ICsgIDB4 YjgsIDB4ZGUsIDB4ZTQsIDB4Y2QsIDB4MWIsIDB4MjQsIDB4ODUsIDB4MWUsIDB4YmYsIDB4MDAs IDB4ZWIsDQo+ID4gPiA+ICsgMHg5MCwgMHhkNCwNCj4gPiA+ID4gMHgzOCwgMHgxMywgMHhlOQ0K PiA+ID4gPg0KPiA+ID4gPiArfTsNCj4gPiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ID4g PiArVU5JVF9URVNUX1NUQVRVUw0KPiA+ID4gPg0KPiA+ID4gPiArRUZJQVBJDQo+ID4gPiA+DQo+ ID4gPiA+ICtUZXN0VmVyaWZ5UGFyYWxsZWxIYXNoMjU2SGFzaEFsbCAoDQo+ID4gPiA+DQo+ID4g PiA+ICsgIElOIFVOSVRfVEVTVF9DT05URVhUICBDb250ZXh0DQo+ID4gPiA+DQo+ID4gPiA+ICsg ICkNCj4gPiA+ID4NCj4gPiA+ID4gK3sNCj4gPiA+ID4NCj4gPiA+ID4gKyAgQk9PTEVBTiAgU3Rh dHVzOw0KPiA+ID4gPg0KPiA+ID4gPiArICBVSU5UMTYgICBPcmlnaW5hbFBhcmFsbGVsSGFzaEJs b2NrTnVtYmVyOw0KPiA+ID4gPg0KPiA+ID4gPiArICBVSU5UOCAgICBPdXRwdXRbNjRdOw0KPiA+ ID4gPg0KPiA+ID4gPiArDQo+ID4gPiA+DQo+ID4gPiA+ICsgIC8vIFJlc3RvcmUgb3JpZ2luYWwg UGNkUGFyYWxsZWxIYXNoQmxvY2tOdW1iZXIuDQo+ID4gPiA+DQo+ID4gPiA+ICsgIE9yaWdpbmFs UGFyYWxsZWxIYXNoQmxvY2tOdW1iZXIgPSBQY2RHZXQxNg0KPiA+ID4gPiArIChQY2RQYXJhbGxl bEhhc2hCbG9ja051bWJlcik7DQo+ID4gPiA+DQo+ID4gPiA+ICsNCj4gPiA+ID4NCj4gPiA+ID4g KyAgLy8NCj4gPiA+ID4NCj4gPiA+ID4gKyAgLy8gVGVzdCAjMSB1c2luZyBzYW1wbGUxLg0KPiA+ ID4gPg0KPiA+ID4gPiArICAvLw0KPiA+ID4gPg0KPiA+ID4gPiArICBQY2RTZXQxNlMgKFBjZFBh cmFsbGVsSGFzaEJsb2NrTnVtYmVyLCBJbnB1dFNhbXBsZTFCeXRlTGVuIC8NCj4gPiA+ID4gQmxv Y2tTaXplU2FtcGxlMSk7DQo+ID4gPiA+DQo+ID4gPiA+ICsgIFN0YXR1cyA9IFBhcmFsbGVsSGFz aDI1Nkhhc2hBbGwgKA0KPiA+ID4gPg0KPiA+ID4gPiArICAgICAgICAgICAgIElucHV0U2FtcGxl MSwNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICAgICAgICAgICBJbnB1dFNhbXBsZTFCeXRlTGVuLA0K PiA+ID4gPg0KPiA+ID4gPiArICAgICAgICAgICAgIE91dHB1dCwNCj4gPiA+ID4NCj4gPiA+ID4g KyAgICAgICAgICAgICBPdXRwdXRCeXRlTGVuLA0KPiA+ID4gPg0KPiA+ID4gPiArICAgICAgICAg ICAgIEN1c3RvbWl6YXRpb25TYW1wbGUxLA0KPiA+ID4gPg0KPiA+ID4gPiArICAgICAgICAgICAg IEN1c3RvbVNhbXBsZTFCeXRlTGVuDQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgICAgICAgICAgKTsN Cj4gPiA+ID4NCj4gPiA+ID4gKyAgVVRfQVNTRVJUX1RSVUUgKFN0YXR1cyk7DQo+ID4gPiA+DQo+ ID4gPiA+ICsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgLy8gQ2hlY2sgdGhlIG91dHB1dCB3aXRoIHRo ZSBleHBlY3RlZCBvdXRwdXQuDQo+ID4gPiA+DQo+ID4gPiA+ICsgIFVUX0FTU0VSVF9NRU1fRVFV QUwgKE91dHB1dCwgRXhwZWN0T3V0cHV0U2FtcGxlMSwNCj4gPiA+IE91dHB1dEJ5dGVMZW4pOw0K PiA+ID4gPg0KPiA+ID4gPiArDQo+ID4gPiA+DQo+ID4gPiA+ICsgIC8vDQo+ID4gPiA+DQo+ID4g PiA+ICsgIC8vIFRlc3QgIzIgdXNpbmcgc2FtcGxlMi4NCj4gPiA+ID4NCj4gPiA+ID4gKyAgLy8N Cj4gPiA+ID4NCj4gPiA+ID4gKyAgUGNkU2V0MTZTIChQY2RQYXJhbGxlbEhhc2hCbG9ja051bWJl ciwgSW5wdXRTYW1wbGUyQnl0ZUxlbiAvDQo+ID4gPiA+IEJsb2NrU2l6ZVNhbXBsZTIpOw0KPiA+ ID4gPg0KPiA+ID4gPiArICBTdGF0dXMgPSBQYXJhbGxlbEhhc2gyNTZIYXNoQWxsICgNCj4gPiA+ ID4NCj4gPiA+ID4gKyAgICAgICAgICAgICBJbnB1dFNhbXBsZTIsDQo+ID4gPiA+DQo+ID4gPiA+ ICsgICAgICAgICAgICAgSW5wdXRTYW1wbGUyQnl0ZUxlbiwNCj4gPiA+ID4NCj4gPiA+ID4gKyAg ICAgICAgICAgICBPdXRwdXQsDQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgICAgICAgICAgT3V0cHV0 Qnl0ZUxlbiwNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICAgICAgICAgICBDdXN0b21pemF0aW9uU2Ft cGxlMiwNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICAgICAgICAgICBDdXN0b21TYW1wbGUyQnl0ZUxl bg0KPiA+ID4gPg0KPiA+ID4gPiArICAgICAgICAgICAgICk7DQo+ID4gPiA+DQo+ID4gPiA+ICsg IFVUX0FTU0VSVF9UUlVFIChTdGF0dXMpOw0KPiA+ID4gPg0KPiA+ID4gPiArDQo+ID4gPiA+DQo+ ID4gPiA+ICsgIC8vIENoZWNrIHRoZSBvdXRwdXQgd2l0aCB0aGUgZXhwZWN0ZWQgb3V0cHV0Lg0K PiA+ID4gPg0KPiA+ID4gPiArICBVVF9BU1NFUlRfTUVNX0VRVUFMIChPdXRwdXQsIEV4cGVjdE91 dHB1dFNhbXBsZTIsDQo+ID4gPiBPdXRwdXRCeXRlTGVuKTsNCj4gPiA+ID4NCj4gPiA+ID4gKw0K PiA+ID4gPg0KPiA+ID4gPiArICAvLw0KPiA+ID4gPg0KPiA+ID4gPiArICAvLyBUZXN0ICMzIHVz aW5nIHNhbXBsZTMuDQo+ID4gPiA+DQo+ID4gPiA+ICsgIC8vDQo+ID4gPiA+DQo+ID4gPiA+ICsg IFBjZFNldDE2UyAoUGNkUGFyYWxsZWxIYXNoQmxvY2tOdW1iZXIsIElucHV0U2FtcGxlM0J5dGVM ZW4gLw0KPiA+ID4gPiBCbG9ja1NpemVTYW1wbGUzKTsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgU3Rh dHVzID0gUGFyYWxsZWxIYXNoMjU2SGFzaEFsbCAoDQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgICAg ICAgICAgSW5wdXRTYW1wbGUzLA0KPiA+ID4gPg0KPiA+ID4gPiArICAgICAgICAgICAgIElucHV0 U2FtcGxlM0J5dGVMZW4sDQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgICAgICAgICAgT3V0cHV0LA0K PiA+ID4gPg0KPiA+ID4gPiArICAgICAgICAgICAgIE91dHB1dEJ5dGVMZW4sDQo+ID4gPiA+DQo+ ID4gPiA+ICsgICAgICAgICAgICAgQ3VzdG9taXphdGlvblNhbXBsZTMsDQo+ID4gPiA+DQo+ID4g PiA+ICsgICAgICAgICAgICAgQ3VzdG9tU2FtcGxlM0J5dGVMZW4NCj4gPiA+ID4NCj4gPiA+ID4g KyAgICAgICAgICAgICApOw0KPiA+ID4gPg0KPiA+ID4gPiArICBVVF9BU1NFUlRfVFJVRSAoU3Rh dHVzKTsNCj4gPiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ID4gPiArICAvLyBDaGVjayB0 aGUgb3V0cHV0IHdpdGggdGhlIGV4cGVjdGVkIG91dHB1dC4NCj4gPiA+ID4NCj4gPiA+ID4gKyAg VVRfQVNTRVJUX01FTV9FUVVBTCAoT3V0cHV0LCBFeHBlY3RPdXRwdXRTYW1wbGUzLA0KPiA+ID4g T3V0cHV0Qnl0ZUxlbik7DQo+ID4gPiA+DQo+ID4gPiA+ICsNCj4gPiA+ID4NCj4gPiA+ID4gKyAg Ly8gUmVjb3ZlciBvcmlnaW5hbCBQY2RQYXJhbGxlbEhhc2hCbG9ja051bWJlci4NCj4gPiA+ID4N Cj4gPiA+ID4gKyAgUGNkU2V0MTZTIChQY2RQYXJhbGxlbEhhc2hCbG9ja051bWJlciwNCj4gPiA+ ID4gKyBPcmlnaW5hbFBhcmFsbGVsSGFzaEJsb2NrTnVtYmVyKTsNCj4gPiA+ID4NCj4gPiA+ID4g Kw0KPiA+ID4gPg0KPiA+ID4gPiArICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ID4gPiA+DQo+ID4g PiA+ICt9DQo+ID4gPiA+DQo+ID4gPiA+ICsNCj4gPiA+ID4NCj4gPiA+ID4gK1RFU1RfREVTQyAg bVBhcmFsbGVsaGFzaFRlc3RbXSA9IHsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgLy8NCj4gPiA+ID4N Cj4gPiA+ID4gKyAgLy8NCj4gPiA+ID4gKyAtLS0tLURlc2NyaXB0aW9uLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tQ2xhc3MtLS0tLS0tLS0tLS0tLS0tLQ0KPiA+ID4gPiArIC0tLS0tRnVu Y3Rpb24tLS0tDQo+ID4gPiA+IC0tLS0tLS0tLS0tLS1QcmUtLS1Qb3N0LS1Db250ZXh0DQo+ID4g PiA+DQo+ID4gPiA+ICsgIC8vDQo+ID4gPiA+DQo+ID4gPiA+ICsgIHsgIlRlc3RWZXJpZnlQYXJh bGxlbEhhc2gyNTZIYXNoQWxsKCkiLA0KPiA+ID4gPiAiQ3J5cHRvUGtnLkJhc2VDcnlwdExpYi5Q YXJhbGxlbEhhc2gyNTZIYXNoQWxsIiwNCj4gPiA+ID4gVGVzdFZlcmlmeVBhcmFsbGVsSGFzaDI1 Nkhhc2hBbGwsIE5VTEwsIE5VTEwsIE5VTEwgfSwNCj4gPiA+ID4NCj4gPiA+ID4gK307DQo+ID4g PiA+DQo+ID4gPiA+ICsNCj4gPiA+ID4NCj4gPiA+ID4gK1VJTlROICBtUGFyYWxsZWxoYXNoVGVz dE51bSA9IEFSUkFZX1NJWkUgKG1QYXJhbGxlbGhhc2hUZXN0KTsNCj4gPiA+ID4NCj4gPiA+ID4g ZGlmZiAtLWdpdCBhL0NyeXB0b1BrZy9DcnlwdG9Qa2cuZGVjIGIvQ3J5cHRvUGtnL0NyeXB0b1Br Zy5kZWMgaW5kZXgNCj4gPiA+ID4gNTg4ODk0MWJhYi4uM2FmNTVkOWMxMCAxMDA2NDQNCj4gPiA+ ID4gLS0tIGEvQ3J5cHRvUGtnL0NyeXB0b1BrZy5kZWMNCj4gPiA+ID4gKysrIGIvQ3J5cHRvUGtn L0NyeXB0b1BrZy5kZWMNCj4gPiA+ID4gQEAgLTQsNyArNCw3IEBADQo+ID4gPiA+ICAjICBUaGlz IFBhY2thZ2UgcHJvdmlkZXMgY3J5cHRvZ3JhcGhpYy1yZWxhdGVkIGxpYnJhcmllcyBmb3IgVUVG SQ0KPiA+ID4gPiBzZWN1cml0eSBtb2R1bGVzLg0KPiA+ID4gPg0KPiA+ID4gPiAgIyAgSXQgYWxz byBwcm92aWRlcyBhIHRlc3QgYXBwbGljYXRpb24gdG8gdGVzdCBsaWJyYXJpZXMuDQo+ID4gPiA+ DQo+ID4gPiA+ICAjDQo+ID4gPiA+DQo+ID4gPiA+IC0jICBDb3B5cmlnaHQgKGMpIDIwMDkgLSAy MDIwLCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cw0KPiA+ID4gPiByZXNlcnZlZC48QlI+ DQo+ID4gPiA+DQo+ID4gPiA+ICsjICBDb3B5cmlnaHQgKGMpIDIwMDkgLSAyMDIyLCBJbnRlbCBD b3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cw0KPiA+ID4gPiArcmVzZXJ2ZWQuPEJSPg0KPiA+ID4gPg0K PiA+ID4gPiAgIyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQN Cj4gPiA+ID4NCj4gPiA+ID4gICMNCj4gPiA+ID4NCj4gPiA+ID4gICMjDQo+ID4gPiA+DQo+ID4g PiA+IEBAIC04MSw1ICs4MSwxMiBAQA0KPiA+ID4gPiAgICAjIEBWYWxpZExpc3QgMHg4MDAwMDAw MSB8IDB4MDAwMDAwMDEsIDB4MDAwMDAwMDIsIDB4MDAwMDAwMDQsDQo+ID4gPiA+IDB4MDAwMDAw MDgsIDB4MDAwMDAwMTANCj4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+DQo+IGdFZmlD cnlwdG9Qa2dUb2tlblNwYWNlR3VpZC5QY2RIYXNoQXBpTGliUG9saWN5fDB4MDAwMDAwMDJ8VUlO VDMyfDB4DQo+ID4gPiAwMA0KPiA+ID4gPiAwMDAwMDENCj4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+ ID4NCj4gPiA+ID4gK1tQY2RzRml4ZWRBdEJ1aWxkLCBQY2RzUGF0Y2hhYmxlSW5Nb2R1bGUsIFBj ZHNEeW5hbWljLA0KPiA+ID4gUGNkc0R5bmFtaWNFeF0NCj4gPiA+ID4NCj4gPiA+ID4gKyAgIyMg VGhpcyBQQ0QgaW5kaWNhdGVzIHRoZSBibG9jayBudW1iZXIgb2YgcGFyYWxsZWwgaGFzaA0KPiA+ ID4gPg0KPiA+ID4gPiArICAjICBCYXNlZCBvbiB0aGUgdmFsdWUgc2V0LCBwYXJhbGxlbCBoYXNo IGNhbiBjaG9zZSB0aGUgYmxvY2sNCj4gPiA+ID4NCj4gPiA+ID4gKyAgIyAgbnVtYmVyIHRvIGNh bGN1bGF0ZSBzcGVjaWZpYyBoYXNoLjxCUj4NCj4gPiA+ID4NCj4gPiA+ID4gKyAgIyAgVGhlIG51 bWJlciBjYW4gYmUgc2V0IGJ5IHBsYXRmb3JtIHRlYW0gYWNjb3JkaW5nIHRvIHRoZSBjb3JlDQo+ ID4gPiBudW1iZXIuDQo+ID4gPiA+DQo+ID4gPiA+ICsNCj4gPiA+ID4NCj4gPiA+DQo+IGdFZmlD cnlwdG9Qa2dUb2tlblNwYWNlR3VpZC5QY2RQYXJhbGxlbEhhc2hCbG9ja051bWJlcnwweDAxMDB8 VUlOVDENCj4gPiA+IDZ8MA0KPiA+ID4gPiB4MDAwMDAwMDMNCj4gPiA+ID4NCj4gPiA+ID4gKw0K PiA+ID4gPg0KPiA+ID4gPiAgW1VzZXJFeHRlbnNpb25zLlRpYW5vQ29yZS4iRXh0cmFGaWxlcyJd DQo+ID4gPiA+DQo+ID4gPiA+ICAgIENyeXB0b1BrZ0V4dHJhLnVuaQ0KPiA+ID4gPg0KPiA+ID4g PiBkaWZmIC0tZ2l0IGEvQ3J5cHRvUGtnL0luY2x1ZGUvTGlicmFyeS9CYXNlQ3J5cHRMaWIuaA0K PiA+ID4gPiBiL0NyeXB0b1BrZy9JbmNsdWRlL0xpYnJhcnkvQmFzZUNyeXB0TGliLmgNCj4gPiA+ ID4gaW5kZXggZjRiYzdjMGQ3My4uMGIyNzRiMTI1NyAxMDA2NDQNCj4gPiA+ID4gLS0tIGEvQ3J5 cHRvUGtnL0luY2x1ZGUvTGlicmFyeS9CYXNlQ3J5cHRMaWIuaA0KPiA+ID4gPiArKysgYi9Dcnlw dG9Qa2cvSW5jbHVkZS9MaWJyYXJ5L0Jhc2VDcnlwdExpYi5oDQo+ID4gPiA+IEBAIC00LDcgKzQs NyBAQA0KPiA+ID4gPiAgICBwcmltaXRpdmVzIChIYXNoIFNlcmlhbHMsIEhNQUMsIFJTQSwgRGlm ZmllLUhlbGxtYW4sIGV0YykgZm9yIFVFRkkNCj4gPiA+ID4gc2VjdXJpdHkNCj4gPiA+ID4NCj4g PiA+ID4gICAgZnVuY3Rpb25hbGl0eSBlbmFibGluZy4NCj4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+ ID4NCj4gPiA+ID4gLUNvcHlyaWdodCAoYykgMjAwOSAtIDIwMjAsIEludGVsIENvcnBvcmF0aW9u LiBBbGwgcmlnaHRzDQo+ID4gPiA+IHJlc2VydmVkLjxCUj4NCj4gPiA+ID4NCj4gPiA+ID4gK0Nv cHlyaWdodCAoYykgMjAwOSAtIDIwMjIsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzDQo+ ID4gPiA+ICtyZXNlcnZlZC48QlI+DQo+ID4gPiA+DQo+ID4gPiA+ICBTUERYLUxpY2Vuc2UtSWRl bnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiA+ID4gPg0KPiA+ID4gPg0KPiA+ID4gPg0K PiA+ID4gPiAgKiovDQo+ID4gPiA+DQo+ID4gPiA+IEBAIC03NTMsNiArNzUzLDMzIEBAIFNoYTUx Mkhhc2hBbGwgKA0KPiA+ID4gPiAgICBPVVQgIFVJTlQ4ICAgICAgICpIYXNoVmFsdWUNCj4gPiA+ ID4NCj4gPiA+ID4gICAgKTsNCj4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+ID4gKy8q Kg0KPiA+ID4gPg0KPiA+ID4gPiArICBQYXJhbGxlbCBoYXNoIGZ1bmN0aW9uIFBhcmFsbGVsSGFz aDI1NiwgYXMgZGVmaW5lZCBpbiBOSVNUJ3MNCj4gPiA+ID4gKyBTcGVjaWFsIFB1YmxpY2F0aW9u DQo+ID4gPiA+IDgwMC0xODUsDQo+ID4gPiA+DQo+ID4gPiA+ICsgIHB1Ymxpc2hlZCBEZWNlbWJl ciAyMDE2Lg0KPiA+ID4gPg0KPiA+ID4gPiArDQo+ID4gPiA+DQo+ID4gPiA+ICsgIEBwYXJhbVtp bl0gICBJbnB1dCAgICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIGlucHV0IG1lc3NhZ2UgKFgpLg0K PiA+ID4gPg0KPiA+ID4gPiArICBAcGFyYW1baW5dICAgSW5wdXRCeXRlTGVuICAgICBUaGUgbnVt YmVyKD4wKSBvZiBpbnB1dCBieXRlcw0KPiBwcm92aWRlZA0KPiA+ID4gZm9yIHRoZQ0KPiA+ID4g PiBpbnB1dCBkYXRhLg0KPiA+ID4gPg0KPiA+ID4gPiArICBAcGFyYW1bb3V0XSAgT3V0cHV0ICAg ICAgICAgICBQb2ludGVyIHRvIHRoZSBvdXRwdXQgYnVmZmVyLg0KPiA+ID4gPg0KPiA+ID4gPiAr ICBAcGFyYW1baW5dICAgT3V0cHV0Qnl0ZUxlbiAgICBUaGUgZGVzaXJlZCBudW1iZXIgb2Ygb3V0 cHV0IGJ5dGVzDQo+IChMKS4NCj4gPiA+ID4NCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgIEN1c3Rv bWl6YXRpb24gICAgUG9pbnRlciB0byB0aGUgY3VzdG9taXphdGlvbiBzdHJpbmcgKFMpLg0KPiA+ ID4gPg0KPiA+ID4gPiArICBAcGFyYW1baW5dICAgQ3VzdG9tQnl0ZUxlbiAgICBUaGUgbGVuZ3Ro IG9mIHRoZSBjdXN0b21pemF0aW9uIHN0cmluZw0KPiBpbg0KPiA+ID4gYnl0ZXMuDQo+ID4gPiA+ DQo+ID4gPiA+ICsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgQHJldHZhbCBUUlVFICAgUGFyYWxsZWxI YXNoMjU2IGRpZ2VzdCBjb21wdXRhdGlvbiBzdWNjZWVkZWQuDQo+ID4gPiA+DQo+ID4gPiA+ICsg IEByZXR2YWwgRkFMU0UgIFBhcmFsbGVsSGFzaDI1NiBkaWdlc3QgY29tcHV0YXRpb24gZmFpbGVk Lg0KPiA+ID4gPg0KPiA+ID4gPiArICBAcmV0dmFsIEZBTFNFICBUaGlzIGludGVyZmFjZSBpcyBu b3Qgc3VwcG9ydGVkLg0KPiA+ID4gPg0KPiA+ID4gPiArDQo+ID4gPiA+DQo+ID4gPiA+ICsqKi8N Cj4gPiA+ID4NCj4gPiA+ID4gK0JPT0xFQU4NCj4gPiA+ID4NCj4gPiA+ID4gK0VGSUFQSQ0KPiA+ ID4gPg0KPiA+ID4gPiArUGFyYWxsZWxIYXNoMjU2SGFzaEFsbCAoDQo+ID4gPiA+DQo+ID4gPiA+ ICsgIElOIENPTlNUIFZPSUQgICAgICAgICAgICAqSW5wdXQsDQo+ID4gPiA+DQo+ID4gPiA+ICsg IElOICAgICAgIFVJTlROICAgICAgICAgICBJbnB1dEJ5dGVMZW4sDQo+ID4gPiA+DQo+ID4gPiA+ ICsgIE9VVCAgICAgIFZPSUQgICAgICAgICAgICAqT3V0cHV0LA0KPiA+ID4gPg0KPiA+ID4gPiAr ICBJTiAgICAgICBVSU5UTiAgICAgICAgICAgT3V0cHV0Qnl0ZUxlbiwNCj4gPiA+ID4NCj4gPiA+ ID4gKyAgSU4gQ09OU1QgVk9JRCAgICAgICAgICAgICpDdXN0b21pemF0aW9uLA0KPiA+ID4gPg0K PiA+ID4gPiArICBJTiAgICAgICBVSU5UTiAgICAgICAgICAgQ3VzdG9tQnl0ZUxlbg0KPiA+ID4g Pg0KPiA+ID4gPiArICApOw0KPiA+ID4gPg0KPiA+ID4gPiArDQo+ID4gPiA+DQo+ID4gPiA+ICAv KioNCj4gPiA+ID4NCj4gPiA+ID4gICAgUmV0cmlldmVzIHRoZSBzaXplLCBpbiBieXRlcywgb2Yg dGhlIGNvbnRleHQgYnVmZmVyIHJlcXVpcmVkIGZvcg0KPiA+ID4gPiBTTTMgaGFzaCBvcGVyYXRp b25zLg0KPiA+ID4gPg0KPiA+ID4gPg0KPiA+ID4gPg0KPiA+ID4gPiBkaWZmIC0tZ2l0IGEvQ3J5 cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL1NtbUNyeXB0TGliLmluZg0KPiA+ID4gPiBiL0Ny eXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9TbW1DcnlwdExpYi5pbmYNCj4gPiA+ID4gaW5k ZXggZTY0NzBkN2EyMS4uNzAxNTkxNjNkNCAxMDA2NDQNCj4gPiA+ID4gLS0tIGEvQ3J5cHRvUGtn L0xpYnJhcnkvQmFzZUNyeXB0TGliL1NtbUNyeXB0TGliLmluZg0KPiA+ID4gPiArKysgYi9Dcnlw dG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWIvU21tQ3J5cHRMaWIuaW5mDQo+ID4gPiA+IEBAIC0x MCw3ICsxMCw3IEBADQo+ID4gPiA+ICAjICBSU0EgZXh0ZXJuYWwgZnVuY3Rpb25zLCBQS0NTIzcg U2lnbmVkRGF0YSBzaWduIGZ1bmN0aW9ucywNCj4gPiA+ID4gRGlmZmllLUhlbGxtYW4gZnVuY3Rp b25zLCBhbmQNCj4gPiA+ID4NCj4gPiA+ID4gICMgIGF1dGhlbnRpY29kZSBzaWduYXR1cmUgdmVy aWZpY2F0aW9uIGZ1bmN0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCBpbg0KPiA+ID4gPiB0aGlzIGlu c3RhbmNlLg0KPiA+ID4gPg0KPiA+ID4gPiAgIw0KPiA+ID4gPg0KPiA+ID4gPiAtIyAgQ29weXJp Z2h0IChjKSAyMDEwIC0gMjAyMSwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMNCj4gPiA+ ID4gcmVzZXJ2ZWQuPEJSPg0KPiA+ID4gPg0KPiA+ID4gPiArIyAgQ29weXJpZ2h0IChjKSAyMDEw IC0gMjAyMiwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMNCj4gPiA+ID4gK3Jlc2VydmVk LjxCUj4NCj4gPiA+ID4NCj4gPiA+ID4gICMgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0Qt Mi1DbGF1c2UtUGF0ZW50DQo+ID4gPiA+DQo+ID4gPiA+ICAjDQo+ID4gPiA+DQo+ID4gPiA+ICAj Iw0KPiA+ID4gPg0KPiA+ID4gPiBAQCAtMzgsNiArMzgsMTAgQEANCj4gPiA+ID4gICAgSGFzaC9D cnlwdFNoYTI1Ni5jDQo+ID4gPiA+DQo+ID4gPiA+ICAgIEhhc2gvQ3J5cHRTbTMuYw0KPiA+ID4g Pg0KPiA+ID4gPiAgICBIYXNoL0NyeXB0U2hhNTEyLmMNCj4gPiA+ID4NCj4gPiA+ID4gKyAgSGFz aC9DcnlwdFNoYTMuYw0KPiA+ID4gPg0KPiA+ID4gPiArICBIYXNoL0NyeXB0WGtjcC5jDQo+ID4g PiA+DQo+ID4gPiA+ICsgIEhhc2gvQ3J5cHRDU2hha2UyNTYuYw0KPiA+ID4gPg0KPiA+ID4gPiAr ICBIYXNoL0NyeXB0UGFyYWxsZWxIYXNoLmMNCj4gPiA+ID4NCj4gPiA+ID4gICAgSG1hYy9Dcnlw dEhtYWNTaGEyNTYuYw0KPiA+ID4gPg0KPiA+ID4gPiAgICBLZGYvQ3J5cHRIa2RmTnVsbC5jDQo+ ID4gPiA+DQo+ID4gPiA+ICAgIENpcGhlci9DcnlwdEFlcy5jDQo+ID4gPiA+DQo+ID4gPiA+IEBA IC04NSw2ICs4OSw5IEBADQo+ID4gPiA+ICAgIE9wZW5zc2xMaWINCj4gPiA+ID4NCj4gPiA+ID4g ICAgSW50cmluc2ljTGliDQo+ID4gPiA+DQo+ID4gPiA+ICAgIFByaW50TGliDQo+ID4gPiA+DQo+ ID4gPiA+ICsgIE1tU2VydmljZXNUYWJsZUxpYg0KPiA+ID4gPg0KPiA+ID4gPiArICBTeW5jaHJv bml6YXRpb25MaWINCj4gPiA+ID4NCj4gPiA+ID4gKyAgUGNkTGliDQo+ID4gPiA+DQo+ID4gPiA+ DQo+ID4gPiA+DQo+ID4gPiA+ICAjDQo+ID4gPiA+DQo+ID4gPiA+ICAjIFJlbW92ZSB0aGVzZSBb QnVpbGRPcHRpb25zXSBhZnRlciB0aGlzIGxpYnJhcnkgaXMgY2xlYW5lZCB1cA0KPiA+ID4gPg0K PiA+ID4gPiBAQCAtMTAxLDMgKzEwOCw2IEBADQo+ID4gPiA+ICAgIEdDQzoqX0NMQU5HMzVfKl9D Q19GTEFHUyA9IC1zdGQ9Yzk5DQo+ID4gPiA+DQo+ID4gPiA+ICAgIEdDQzoqX0NMQU5HMzhfKl9D Q19GTEFHUyA9IC1zdGQ9Yzk5DQo+ID4gPiA+DQo+ID4gPiA+ICAgIEdDQzoqX0NMQU5HUERCXypf Q0NfRkxBR1MgPSAtc3RkPWM5OQ0KPiA+ID4gPiAtV25vLWVycm9yPWluY29tcGF0aWJsZS1wb2lu dGVyLSB0eXBlcw0KPiA+ID4gPg0KPiA+ID4gPiArDQo+ID4gPiA+DQo+ID4gPiA+ICtbUGNkXQ0K PiA+ID4gPg0KPiA+ID4gPiArICBnRWZpQ3J5cHRvUGtnVG9rZW5TcGFjZUd1aWQuUGNkUGFyYWxs ZWxIYXNoQmxvY2tOdW1iZXINCj4gPiA+ID4NCj4gPiA+ID4gZGlmZiAtLWdpdCBhL0NyeXB0b1Br Zy9MaWJyYXJ5L0luY2x1ZGUvQ3J0TGliU3VwcG9ydC5oDQo+ID4gPiA+IGIvQ3J5cHRvUGtnL0xp YnJhcnkvSW5jbHVkZS9DcnRMaWJTdXBwb3J0LmgNCj4gPiA+ID4gaW5kZXggZDI1N2RjYThmYS4u MzVkOWM2MmEwYiAxMDA2NDQNCj4gPiA+ID4gLS0tIGEvQ3J5cHRvUGtnL0xpYnJhcnkvSW5jbHVk ZS9DcnRMaWJTdXBwb3J0LmgNCj4gPiA+ID4gKysrIGIvQ3J5cHRvUGtnL0xpYnJhcnkvSW5jbHVk ZS9DcnRMaWJTdXBwb3J0LmgNCj4gPiA+ID4gQEAgLTIsNyArMiw3IEBADQo+ID4gPiA+ICAgIFJv b3QgaW5jbHVkZSBmaWxlIG9mIEMgcnVudGltZSBsaWJyYXJ5IHRvIHN1cHBvcnQgYnVpbGRpbmcg dGhlDQo+ID4gPiA+IHRoaXJkLXBhcnR5DQo+ID4gPiA+DQo+ID4gPiA+ICAgIGNyeXB0b2dyYXBo aWMgbGlicmFyeS4NCj4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+ID4gLUNvcHlyaWdo dCAoYykgMjAxMCAtIDIwMjEsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzDQo+ID4gPiA+ IHJlc2VydmVkLjxCUj4NCj4gPiA+ID4NCj4gPiA+ID4gK0NvcHlyaWdodCAoYykgMjAxMCAtIDIw MjIsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzDQo+ID4gPiA+ICtyZXNlcnZlZC48QlI+ DQo+ID4gPiA+DQo+ID4gPiA+ICBDb3B5cmlnaHQgKGMpIDIwMjAsIEhld2xldHQgUGFja2FyZCBF bnRlcnByaXNlIERldmVsb3BtZW50IExQLiBBbGwNCj4gPiA+ID4gcmlnaHRzIHJlc2VydmVkLjxC Uj4NCj4gPiA+ID4NCj4gPiA+ID4gIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1 c2UtUGF0ZW50DQo+ID4gPiA+DQo+ID4gPiA+DQo+ID4gPiA+DQo+ID4gPiA+IEBAIC0yMSw2ICsy MSw4IEBAIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4g PiA+DQo+ID4gPiA+DQo+ID4gPiA+ICAjZGVmaW5lIE1BWF9TVFJJTkdfU0laRSAgMHgxMDAwDQo+ ID4gPiA+DQo+ID4gPiA+DQo+ID4gPiA+DQo+ID4gPiA+ICsjZGVmaW5lIFBBUkFMTEVMSEFTSF9D VVNUT01JWkFUSU9OICJQYXJhbGxlbEhhc2giDQo+ID4gPiA+DQo+ID4gPiA+ICsNCj4gPiA+ID4N Cj4gPiA+ID4gIC8vDQo+ID4gPiA+DQo+ID4gPiA+ICAvLyBXZSBhbHJlYWR5IGhhdmUgIm5vLXVp IiBpbiBvdXQgQ29uZmlndXJlIGludm9jYXRpb24uDQo+ID4gPiA+DQo+ID4gPiA+ICAvLyBidXQg dGhlIGNvZGUgc3RpbGwgZmFpbHMgdG8gY29tcGlsZS4NCj4gPiA+ID4NCj4gPiA+ID4gQEAgLTEx MSw2ICsxMTMsNyBAQCB0eXBlZGVmIFVJTlQ4ICAgdV9jaGFyOw0KPiA+ID4gPiAgdHlwZWRlZiBV SU5UMzIgIHVpZF90Ow0KPiA+ID4gPg0KPiA+ID4gPiAgdHlwZWRlZiBVSU5UMzIgIGdpZF90Ow0K PiA+ID4gPg0KPiA+ID4gPiAgdHlwZWRlZiBDSEFSMTYgIHdjaGFyX3Q7DQo+ID4gPiA+DQo+ID4g PiA+ICt0eXBlZGVmIFVJTlQ2NCAgdWludDY0X3Q7DQo+ID4gPiA+DQo+ID4gPiA+DQo+ID4gPiA+ DQo+ID4gPiA+ICAvLw0KPiA+ID4gPg0KPiA+ID4gPiAgLy8gRmlsZSBvcGVyYXRpb25zIGFyZSBu b3QgcmVxdWlyZWQgZm9yIEVGSSBidWlsZGluZywNCj4gPiA+ID4NCj4gPiA+ID4gZGlmZiAtLWdp dCBhL0NyeXB0b1BrZy9MaWJyYXJ5L0luY2x1ZGUvc2hhMy5oDQo+ID4gPiA+IGIvQ3J5cHRvUGtn L0xpYnJhcnkvSW5jbHVkZS9zaGEzLmgNCj4gPiA+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4g PiA+ID4gaW5kZXggMDAwMDAwMDAwMC4uNzFiNGM3NTU0OA0KPiA+ID4gPiAtLS0gL2Rldi9udWxs DQo+ID4gPiA+ICsrKyBiL0NyeXB0b1BrZy9MaWJyYXJ5L0luY2x1ZGUvc2hhMy5oDQo+ID4gPiA+ IEBAIC0wLDAgKzEsMzIgQEANCj4gPiA+ID4gKy8qKiBAZmlsZQ0KPiA+ID4gPg0KPiA+ID4gPiAr ICBTSEEzIHJlYWx0ZWQgZnVuY3Rpb25zIGZyb20gT3BlblNTTC4NCj4gPiA+ID4NCj4gPiA+ID4g Kw0KPiA+ID4gPg0KPiA+ID4gPiArQ29weXJpZ2h0IChjKSAyMDIyLCBJbnRlbCBDb3Jwb3JhdGlv bi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4gPiA+DQo+ID4gPiA+ICtTUERYLUxpY2Vu c2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiA+ID4gPg0KPiA+ID4gPiArDQo+ ID4gPiA+DQo+ID4gPiA+ICtDb3B5cmlnaHQgMjAxNy0yMDIyIFRoZSBPcGVuU1NMIFByb2plY3Qg QXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCj4gPiA+ID4NCj4gPiA+ID4gK0xpY2Vuc2Vk IHVuZGVyIHRoZSBPcGVuU1NMIGxpY2Vuc2UgKHRoZSAiTGljZW5zZSIpLiAgWW91IG1heSBub3Qg dXNlDQo+ID4gPiA+DQo+ID4gPiA+ICt0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0 aCB0aGUgTGljZW5zZS4gIFlvdSBjYW4gb2J0YWluIGENCj4gPiA+ID4gK2NvcHkNCj4gPiA+ID4N Cj4gPiA+ID4gK2luIHRoZSBmaWxlIExJQ0VOU0UgaW4gdGhlIHNvdXJjZSBkaXN0cmlidXRpb24g b3IgYXQNCj4gPiA+ID4NCj4gPiA+ID4gK2h0dHBzOi8vd3d3Lm9wZW5zc2wub3JnL3NvdXJjZS9s aWNlbnNlLmh0bWwNCj4gPiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ID4gPiArKiovDQo+ ID4gPiA+DQo+ID4gPiA+ICsNCj4gPiA+ID4NCj4gPiA+ID4gKyNpbmNsdWRlIDxDcnRMaWJTdXBw b3J0Lmg+DQo+ID4gPiA+DQo+ID4gPiA+ICsNCj4gPiA+ID4NCj4gPiA+ID4gKyNkZWZpbmUgS0VD Q0FLMTYwMF9XSURUSCAxNjAwDQo+ID4gPiA+DQo+ID4gPiA+ICsNCj4gPiA+ID4NCj4gPiA+ID4g K3R5cGVkZWYgc3RydWN0IHsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICB1aW50NjRfdCBBWzVdWzVd Ow0KPiA+ID4gPg0KPiA+ID4gPiArICAgIHNpemVfdCBibG9ja19zaXplOyAgICAgICAgICAvKiBj YWNoZWQgY3R4LT5kaWdlc3QtPmJsb2NrX3NpemUgKi8NCj4gPiA+ID4NCj4gPiA+ID4gKyAgICBz aXplX3QgbWRfc2l6ZTsgICAgICAgICAgICAgLyogb3V0cHV0IGxlbmd0aCwgdmFyaWFibGUgaW4g WE9GICovDQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgc2l6ZV90IG51bTsgICAgICAgICAgICAgICAg IC8qIHVzZWQgYnl0ZXMgaW4gYmVsb3cgYnVmZmVyICovDQo+ID4gPiA+DQo+ID4gPiA+ICsgICAg dW5zaWduZWQgY2hhciBidWZbS0VDQ0FLMTYwMF9XSURUSCAvIDggLSAzMl07DQo+ID4gPiA+DQo+ ID4gPiA+ICsgICAgdW5zaWduZWQgY2hhciBwYWQ7DQo+ID4gPiA+DQo+ID4gPiA+ICt9IEtFQ0NB SzE2MDBfQ1RYOw0KPiA+ID4gPg0KPiA+ID4gPiArDQo+ID4gPiA+DQo+ID4gPiA+ICtpbnQgaW5p dChLRUNDQUsxNjAwX0NUWCAqY3R4LCB1bnNpZ25lZCBjaGFyIHBhZCwgc2l6ZV90IGJzeiwgc2l6 ZV90DQo+ID4gPiA+ICttZF9zaXplKTsNCj4gPiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ ID4gPiAraW50IHNoYTNfdXBkYXRlKEtFQ0NBSzE2MDBfQ1RYICpjdHgsIGNvbnN0IHZvaWQgKl9p bnAsIHNpemVfdCBsZW4pOw0KPiA+ID4gPg0KPiA+ID4gPiArDQo+ID4gPiA+DQo+ID4gPiA+ICtp bnQgc2hhM19maW5hbChLRUNDQUsxNjAwX0NUWCAqY3R4LCB1bnNpZ25lZCBjaGFyICptZCk7DQo+ ID4gPiA+DQo+ID4gPiA+IGRpZmYgLS1naXQgYS9DcnlwdG9Qa2cvTGlicmFyeS9JbmNsdWRlL3hr Y3AuaA0KPiA+ID4gPiBiL0NyeXB0b1BrZy9MaWJyYXJ5L0luY2x1ZGUveGtjcC5oDQo+ID4gPiA+ IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gPiA+IGluZGV4IDAwMDAwMDAwMDAuLmIzMjhkNjcy ZTQNCj4gPiA+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ID4gPiArKysgYi9DcnlwdG9Qa2cvTGlicmFy eS9JbmNsdWRlL3hrY3AuaA0KPiA+ID4gPiBAQCAtMCwwICsxLDIzIEBADQo+ID4gPiA+ICsvKiog QGZpbGUNCj4gPiA+ID4NCj4gPiA+ID4gKyAgRW5jb2RlIHJlYWx0ZWQgZnVuY3Rpb25zIGZyb20g WGtjcC4NCj4gPiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ID4gPiArQ29weXJpZ2h0IChj KSAyMDIyLCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4g PiA+DQo+ID4gPiA+ICtTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVu dA0KPiA+ID4gPg0KPiA+ID4gPiArDQo+ID4gPiA+DQo+ID4gPiA+ICtUaGUgZVh0ZW5kZWQgS2Vj Y2FrIENvZGUgUGFja2FnZSAoWEtDUCkNCj4gPiA+ID4NCj4gPiA+ID4gK2h0dHBzOi8vZ2l0aHVi LmNvbS9YS0NQL1hLQ1ANCj4gPiA+ID4NCj4gPiA+ID4gK0tlY2NhaywgZGVzaWduZWQgYnkgR3Vp ZG8gQmVydG9uaSwgSm9hbiBEYWVtZW4sIE1pY2hhw6tsIFBlZXRlcnMNCj4gYW5kDQo+ID4gPiA+ ICtHaWxsZXMNCj4gPiA+ID4gVmFuIEFzc2NoZS4NCj4gPiA+ID4NCj4gPiA+ID4gK0ltcGxlbWVu dGF0aW9uIGJ5IHRoZSBkZXNpZ25lcnMsIGhlcmVieSBkZW5vdGVkIGFzICJ0aGUNCj4gaW1wbGVt ZW50ZXIiLg0KPiA+ID4gPg0KPiA+ID4gPiArRm9yIG1vcmUgaW5mb3JtYXRpb24sIGZlZWRiYWNr IG9yIHF1ZXN0aW9ucywgcGxlYXNlIHJlZmVyIHRvIHRoZQ0KPiA+ID4gPiArS2VjY2FrIFRlYW0N Cj4gPiA+ID4gd2Vic2l0ZToNCj4gPiA+ID4NCj4gPiA+ID4gK2h0dHBzOi8va2VjY2FrLnRlYW0v DQo+ID4gPiA+DQo+ID4gPiA+ICtUbyB0aGUgZXh0ZW50IHBvc3NpYmxlIHVuZGVyIGxhdywgdGhl IGltcGxlbWVudGVyIGhhcyB3YWl2ZWQgYWxsDQo+ID4gPiA+ICtjb3B5cmlnaHQNCj4gPiA+ID4N Cj4gPiA+ID4gK2FuZCByZWxhdGVkIG9yIG5laWdoYm9yaW5nIHJpZ2h0cyB0byB0aGUgc291cmNl IGNvZGUgaW4gdGhpcyBmaWxlLg0KPiA+ID4gPg0KPiA+ID4gPiAraHR0cDovL2NyZWF0aXZlY29t bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLw0KPiA+ID4gPg0KPiA+ID4gPiArDQo+ID4g PiA+DQo+ID4gPiA+ICsqKi8NCj4gPiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ID4gPiAr I2luY2x1ZGUgPENydExpYlN1cHBvcnQuaD4NCj4gPiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0K PiA+ID4gPiArdW5zaWduZWQgaW50IGxlZnRfZW5jb2RlKHVuc2lnbmVkIGNoYXIgKiBlbmNidWYs IHNpemVfdCB2YWx1ZSk7DQo+ID4gPiA+DQo+ID4gPiA+ICsNCj4gPiA+ID4NCj4gPiA+ID4gK3Vu c2lnbmVkIGludCByaWdodF9lbmNvZGUodW5zaWduZWQgY2hhciAqIGVuY2J1Ziwgc2l6ZV90IHZh bHVlKTsNCj4gPiA+ID4NCj4gPiA+ID4gZGlmZiAtLWdpdA0KPiA+ID4gPiBhL0NyeXB0b1BrZy9U ZXN0L1VuaXRUZXN0L0xpYnJhcnkvQmFzZUNyeXB0TGliL1Rlc3RCYXNlQ3J5cHRMaWIuaA0KPiA+ ID4gPiBiL0NyeXB0b1BrZy9UZXN0L1VuaXRUZXN0L0xpYnJhcnkvQmFzZUNyeXB0TGliL1Rlc3RC YXNlQ3J5cHRMaWIuaA0KPiA+ID4gPiBpbmRleCBhNmIzNDgyNzQyLi4wYmZmZDY4N2MyIDEwMDY0 NA0KPiA+ID4gPiAtLS0NCj4gYS9DcnlwdG9Qa2cvVGVzdC9Vbml0VGVzdC9MaWJyYXJ5L0Jhc2VD cnlwdExpYi9UZXN0QmFzZUNyeXB0TGliLmgNCj4gPiA+ID4gKysrDQo+IGIvQ3J5cHRvUGtnL1Rl c3QvVW5pdFRlc3QvTGlicmFyeS9CYXNlQ3J5cHRMaWIvVGVzdEJhc2VDcnlwdExpYi5oDQo+ID4g PiA+IEBAIC0xLDcgKzEsNyBAQA0KPiA+ID4gPiAgLyoqIEBmaWxlDQo+ID4gPiA+DQo+ID4gPiA+ ICAgIEFwcGxpY2F0aW9uIGZvciBDcnlwdG9ncmFwaGljIFByaW1pdGl2ZXMgVmFsaWRhdGlvbi4N Cj4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+ID4gLUNvcHlyaWdodCAoYykgMjAwOSAt IDIwMTYsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzDQo+ID4gPiA+IHJlc2VydmVkLjxC Uj4NCj4gPiA+ID4NCj4gPiA+ID4gK0NvcHlyaWdodCAoYykgMjAwOSAtIDIwMjIsIEludGVsIENv cnBvcmF0aW9uLiBBbGwgcmlnaHRzDQo+ID4gPiA+ICtyZXNlcnZlZC48QlI+DQo+ID4gPiA+DQo+ ID4gPiA+ICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiA+ ID4gPg0KPiA+ID4gPg0KPiA+ID4gPg0KPiA+ID4gPiAgKiovDQo+ID4gPiA+DQo+ID4gPiA+IEBA IC0xOSw2ICsxOSw3IEBAIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0 ZW50DQo+ID4gPiA+ICNpbmNsdWRlIDxMaWJyYXJ5L0Jhc2VMaWIuaD4NCj4gPiA+ID4NCj4gPiA+ ID4gICNpbmNsdWRlIDxMaWJyYXJ5L0Jhc2VNZW1vcnlMaWIuaD4NCj4gPiA+ID4NCj4gPiA+ID4g ICNpbmNsdWRlIDxMaWJyYXJ5L01lbW9yeUFsbG9jYXRpb25MaWIuaD4NCj4gPiA+ID4NCj4gPiA+ ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L1BjZExpYi5oPg0KPiA+ID4gPg0KPiA+ID4gPiAgLy8gI2lu Y2x1ZGUgPFVuaXRUZXN0VHlwZXMuaD4NCj4gPiA+ID4NCj4gPiA+ID4gICNpbmNsdWRlIDxMaWJy YXJ5L1VuaXRUZXN0TGliLmg+DQo+ID4gPiA+DQo+ID4gPiA+ICAvLyAjaW5jbHVkZSA8TGlicmFy eS9Vbml0VGVzdEFzc2VydExpYi5oPg0KPiA+ID4gPg0KPiA+ID4gPiBkaWZmIC0tZ2l0DQo+ID4g PiA+DQo+IGEvQ3J5cHRvUGtnL1Rlc3QvVW5pdFRlc3QvTGlicmFyeS9CYXNlQ3J5cHRMaWIvVGVz dEJhc2VDcnlwdExpYkhvc3QuaW4NCj4gPiA+ID4gZg0KPiA+ID4gPg0KPiBiL0NyeXB0b1BrZy9U ZXN0L1VuaXRUZXN0L0xpYnJhcnkvQmFzZUNyeXB0TGliL1Rlc3RCYXNlQ3J5cHRMaWJIb3N0Lmlu DQo+ID4gPiA+IGYNCj4gPiA+ID4gaW5kZXggMDBjODY5MjY1MC4uNjFhNTlkNmE0NyAxMDA2NDQN Cj4gPiA+ID4gLS0tDQo+ID4gPiA+DQo+IGEvQ3J5cHRvUGtnL1Rlc3QvVW5pdFRlc3QvTGlicmFy eS9CYXNlQ3J5cHRMaWIvVGVzdEJhc2VDcnlwdExpYkhvc3QuaW4NCj4gPiA+ID4gZg0KPiA+ID4g PiArKysNCj4gPiA+IGIvQ3J5cHRvUGtnL1Rlc3QvVW5pdFRlc3QvTGlicmFyeS9CYXNlQ3J5cHRM aWIvVGVzdEJhc2VDcnlwdExpYkhvcw0KPiA+ID4gPiArKysgdC5pbmYNCj4gPiA+ID4gQEAgLTIs NiArMiw3IEBADQo+ID4gPiA+ICAjIEhvc3QtYmFzZWQgVW5pdFRlc3QgZm9yIEJhc2VDcnlwdExp Yg0KPiA+ID4gPg0KPiA+ID4gPiAgIw0KPiA+ID4gPg0KPiA+ID4gPiAgIyBDb3B5cmlnaHQgKGMp IE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi48QlI+DQo+ID4gPiA+DQo+ID4gPiA+ICsjIENvcHlyaWdo dCAoYykgMjAyMiwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0K PiA+ID4gPg0KPiA+ID4gPiAgIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNl LVBhdGVudA0KPiA+ID4gPg0KPiA+ID4gPiAgIyMNCj4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+ID4N Cj4gPiA+ID4gQEAgLTM1LDYgKzM2LDcgQEANCj4gPiA+ID4gICAgUGtjczdFa3VUZXN0cy5jDQo+ ID4gPiA+DQo+ID4gPiA+ICAgIE9hZXBFbmNyeXB0VGVzdHMuYw0KPiA+ID4gPg0KPiA+ID4gPiAg ICBSc2FQc3NUZXN0cy5jDQo+ID4gPiA+DQo+ID4gPiA+ICsgIFBhcmFsbGVsaGFzaFRlc3RzLmMN Cj4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+ID4gIFtQYWNrYWdlc10NCj4gPiA+ID4N Cj4gPiA+ID4gICAgTWRlUGtnL01kZVBrZy5kZWMNCj4gPiA+ID4NCj4gPiA+ID4gQEAgLTQ1LDMg KzQ3LDggQEANCj4gPiA+ID4gICAgRGVidWdMaWINCj4gPiA+ID4NCj4gPiA+ID4gICAgQmFzZUNy eXB0TGliDQo+ID4gPiA+DQo+ID4gPiA+ICAgIFVuaXRUZXN0TGliDQo+ID4gPiA+DQo+ID4gPiA+ ICsgIFBjZExpYg0KPiA+ID4gPg0KPiA+ID4gPiArDQo+ID4gPiA+DQo+ID4gPiA+ICtbUGNkXQ0K PiA+ID4gPg0KPiA+ID4gPiArICBnRWZpQ3J5cHRvUGtnVG9rZW5TcGFjZUd1aWQuUGNkUGFyYWxs ZWxIYXNoQmxvY2tOdW1iZXINCj4gPiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ID4gPiBk aWZmIC0tZ2l0DQo+ID4gPiA+DQo+IGEvQ3J5cHRvUGtnL1Rlc3QvVW5pdFRlc3QvTGlicmFyeS9C YXNlQ3J5cHRMaWIvVGVzdEJhc2VDcnlwdExpYlNoZWxsLmkNCj4gPiA+ID4gbmYNCj4gPiA+ID4N Cj4gYi9DcnlwdG9Qa2cvVGVzdC9Vbml0VGVzdC9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9UZXN0QmFz ZUNyeXB0TGliU2hlbGwuaQ0KPiA+ID4gPiBuZg0KPiA+ID4gPiBpbmRleCBjYTc4OWFhNmFkLi42 ODJmMjVhNzU0IDEwMDY0NA0KPiA+ID4gPiAtLS0NCj4gPiA+ID4NCj4gYS9DcnlwdG9Qa2cvVGVz dC9Vbml0VGVzdC9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9UZXN0QmFzZUNyeXB0TGliU2hlbGwuaQ0K PiA+ID4gPiBuZg0KPiA+ID4gPiArKysNCj4gPiA+IGIvQ3J5cHRvUGtnL1Rlc3QvVW5pdFRlc3Qv TGlicmFyeS9CYXNlQ3J5cHRMaWIvVGVzdEJhc2VDcnlwdExpYlNoZQ0KPiA+ID4gPiArKysgbGwu aW5mDQo+ID4gPiA+IEBAIC0yLDYgKzIsNyBAQA0KPiA+ID4gPiAgIyBCYXNlQ3J5cHRMaWIgVW5p dFRlc3QgYnVpbHQgZm9yIGV4ZWN1dGlvbiBpbiBVRUZJIFNoZWxsLg0KPiA+ID4gPg0KPiA+ID4g PiAgIw0KPiA+ID4gPg0KPiA+ID4gPiAgIyBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3Jh dGlvbi48QlI+DQo+ID4gPiA+DQo+ID4gPiA+ICsjIENvcHlyaWdodCAoYykgMjAyMiwgSW50ZWwg Q29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ID4gPg0KPiA+ID4gPiAg IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiA+ID4gPg0K PiA+ID4gPiAgIyMNCj4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+ID4gQEAgLTM2LDYg KzM3LDcgQEANCj4gPiA+ID4gICAgUGtjczdFa3VUZXN0cy5jDQo+ID4gPiA+DQo+ID4gPiA+ICAg IE9hZXBFbmNyeXB0VGVzdHMuYw0KPiA+ID4gPg0KPiA+ID4gPiAgICBSc2FQc3NUZXN0cy5jDQo+ ID4gPiA+DQo+ID4gPiA+ICsgIFBhcmFsbGVsaGFzaFRlc3RzLmMNCj4gPiA+ID4NCj4gPiA+ID4N Cj4gPiA+ID4NCj4gPiA+ID4gIFtQYWNrYWdlc10NCj4gPiA+ID4NCj4gPiA+ID4gICAgTWRlUGtn L01kZVBrZy5kZWMNCj4gPiA+ID4NCj4gPiA+ID4gQEAgLTQ4LDMgKzUwLDcgQEANCj4gPiA+ID4g ICAgVW5pdFRlc3RMaWINCj4gPiA+ID4NCj4gPiA+ID4gICAgUHJpbnRMaWINCj4gPiA+ID4NCj4g PiA+ID4gICAgQmFzZUNyeXB0TGliDQo+ID4gPiA+DQo+ID4gPiA+ICsgIFBjZExpYg0KPiA+ID4g Pg0KPiA+ID4gPiArDQo+ID4gPiA+DQo+ID4gPiA+ICtbUGNkXQ0KPiA+ID4gPg0KPiA+ID4gPiAr ICBnRWZpQ3J5cHRvUGtnVG9rZW5TcGFjZUd1aWQuUGNkUGFyYWxsZWxIYXNoQmxvY2tOdW1iZXIN Cj4gPiA+ID4NCj4gPiA+ID4gLS0NCj4gPiA+ID4gMi4yNi4yLndpbmRvd3MuMQ0KDQo=