From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mx0a-002e3701.pphosted.com (mx0a-002e3701.pphosted.com [148.163.147.86]) by mx.groups.io with SMTP id smtpd.web11.9730.1608133029785956786 for ; Wed, 16 Dec 2020 07:37:09 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@hpe.com header.s=pps0720 header.b=H1BKvJx8; spf=pass (domain: hpe.com, ip: 148.163.147.86, mailfrom: prvs=0619d1d483=abner.chang@hpe.com) Received: from pps.filterd (m0150242.ppops.net [127.0.0.1]) by mx0a-002e3701.pphosted.com (8.16.0.43/8.16.0.43) with SMTP id 0BGFXmIZ017400; Wed, 16 Dec 2020 15:37:09 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hpe.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-transfer-encoding : mime-version; s=pps0720; bh=EHWdr9SVM3jucy1e/4GRM6aVkpYSfv3/6WTf86OCKPE=; b=H1BKvJx8uzyg24j3OEce5C16byV38r/NkHb2JWAOJGTvIj3do+VAFqBFo0GCO53harKi /7mGj1MtQ/wzG1HGqBNdTsO4XxYTXdcIODoKCpXvBikMB0kbICqg2t1f1zqk6xS7Bf7n kj05sk6kz0QB0bIScKFOxakuhY7O+2uH13+jokSggmRjj3aU/L37zkKpUG8gmNfKIAyG 7adtcSb9tBHc/qsOOcnTNY9P3HVvzhPtQNgpw2xfp6//sRirQxyNIrKDmRuYmP3QSl+W WfC4zjpMSACObSyvgoKuRxtUSI7+CWUgE4c+UmMH7UQQ08aUXWps/RWdaE4mWbdM1Lyr Dg== Received: from g4t3427.houston.hpe.com (g4t3427.houston.hpe.com [15.241.140.73]) by mx0a-002e3701.pphosted.com with ESMTP id 35ethpcfjd-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 16 Dec 2020 15:37:08 +0000 Received: from G2W6311.americas.hpqcorp.net (g2w6311.austin.hp.com [16.197.64.53]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by g4t3427.houston.hpe.com (Postfix) with ESMTPS id 1F1BD76; Wed, 16 Dec 2020 15:37:08 +0000 (UTC) Received: from G9W8676.americas.hpqcorp.net (16.220.49.23) by G2W6311.americas.hpqcorp.net (16.197.64.53) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Wed, 16 Dec 2020 15:36:57 +0000 Received: from G9W9210.americas.hpqcorp.net (2002:10dc:429b::10dc:429b) by G9W8676.americas.hpqcorp.net (2002:10dc:3117::10dc:3117) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Wed, 16 Dec 2020 15:36:56 +0000 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (15.241.52.13) by G9W9210.americas.hpqcorp.net (16.220.66.155) with Microsoft SMTP Server (TLS) id 15.0.1497.2 via Frontend Transport; Wed, 16 Dec 2020 15:36:56 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=CYD0JaUq1MbC0bGh2UeULa0PxhYa9ucxxdxrWono393H6Y+EaxjJRTKIABAb+tUUVn3G/RCHbf+bD2ie8RV6n6j2Q2u3NUSnsaKjIYJ2foTKVdqueixOweoLciitac2ArLD8JmPr9ep9Qqi6lI0bCY9llJoM//5mggN5hgYpNIh3+P6Uu8htQf6EP6GDi1jtjATKk5SNGD9u59LHROuwcqNpTU2Nfp/g/dvwfjMexxiEZoueGoDpVMpO89GL0NOIjd132ASCFKvMSOsAkoVL+wIoAmnKJXDND1yRhv+6X6glRqdhua0L8yc9dho3X24pHgTxLMB7iExHL6Cx/L+8/Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=pohFsfgA0GjzkrR3dqp2KmGUEUozjSJxBGJX2W2MeSQ=; b=FrjNg4doCGkF+0TUqbisr/pD0dGO458s9vvKyhZUk/iCKdNDoeLlSzMQSJVOCgRZcFRWyX60uD6ZrNNENdcWPSvOs0FV3kT11nTUUay1dV1ckxFRV0ql4OgUjMXT4bKvgEfJiTf5ABuSmfRQcPdBaLr7dMGBPVYSja43GUm6OawmUD1dojm90H/cJMAT2Tr5ShRlNGu5wAwuv/eBEgE2+I+p8j0N0rjz0hH4WJmA6erNUhrmO0GUjZjch5ucgwT15bZSrL/DI3f2QUwm1KQNEVgiAeolFjy0gXju/6yQ37iZLz1i3i+DIbxg2F1Niy0E8CH9br8j0QGUeGpmHw3eGQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=hpe.com; dmarc=pass action=none header.from=hpe.com; dkim=pass header.d=hpe.com; arc=none Received: from CS1PR8401MB1144.NAMPRD84.PROD.OUTLOOK.COM (2a01:111:e400:7508::16) by CS1PR8401MB0661.NAMPRD84.PROD.OUTLOOK.COM (2a01:111:e400:7508::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3654.12; Wed, 16 Dec 2020 15:36:54 +0000 Received: from CS1PR8401MB1144.NAMPRD84.PROD.OUTLOOK.COM ([fe80::a094:ed67:fb40:340e]) by CS1PR8401MB1144.NAMPRD84.PROD.OUTLOOK.COM ([fe80::a094:ed67:fb40:340e%10]) with mapi id 15.20.3654.025; Wed, 16 Dec 2020 15:36:54 +0000 From: "Abner Chang" To: "Kinney, Michael D" , "devel@edk2.groups.io" CC: Leif Lindholm , "Wang, Nickle (HPS SW)" , "O'Hanley, Peter (EXL)" Subject: Re: [edk2-devel] [PATCH v6 3/6] RedfishPkg/CrtLib: C runtime library Thread-Topic: [edk2-devel] [PATCH v6 3/6] RedfishPkg/CrtLib: C runtime library Thread-Index: AQHW0nf49ZknCiqcYkm8poCnEy7pLKn5IrcwgAC6w+A= Date: Wed, 16 Dec 2020 15:36:54 +0000 Message-ID: References: <20201214035321.17000-1-abner.chang@hpe.com> <20201214035321.17000-4-abner.chang@hpe.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=hpe.com; x-originating-ip: [165.225.116.142] x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: c1a736fe-7e28-4533-ef4b-08d8a1d86a7e x-ms-traffictypediagnostic: CS1PR8401MB0661: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:8273; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: TZvb6yd9iFD14AZvjgp0ufNKYr8HdUw4anA9vtKqk83SGpQRlmZ+sXfFsHR8TpCekRF9nb9YTtrwn5ZZPTGJE8oK59XhttFNmZn/QxEGN4T2IInX9qw26R57ztSf9WdqGCZ492iBJpAPdmlaurGCmH5PFcTg3EM3aJAuvIHAo1osY1iHEXpyIUot7j80juP/zKDLvHpH+p0Dr4wg8EWdNIKdnd3EyLZkix+dGs799QaCE69LJemmDMJbFDjWFFe+mhV9xwyWbmMobMQxm0UpCEDStBKQzMB+awA9Cnf1CvdEgHmfOjNbziD1d+ivLZRVMrpC+dHQjlzxbGrb1cIBqroj5qfYJKH8hem2WJgKN2Cvy5amiyx/IXu21kB4dqU1a3DlYEl7Y+KuM2HfzzC/8QSUuxZLLaOjVmr48ZrwIJMkiknEiEa3mMHfeR9BvDCDaAb+QilA1DuGLCvTfl9vP9sH8fAreMVT9WarmgPOEeg= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CS1PR8401MB1144.NAMPRD84.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(346002)(376002)(136003)(39860400002)(366004)(396003)(2940100002)(186003)(8936002)(55236004)(966005)(8676002)(478600001)(54906003)(66446008)(64756008)(4326008)(66556008)(66946007)(52536014)(9686003)(19627235002)(86362001)(53546011)(33656002)(83380400001)(71200400001)(55016002)(110136005)(7696005)(26005)(316002)(6506007)(66476007)(30864003)(76116006)(2906002)(5660300002)(461764006)(21314003)(579004)(559001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: =?utf-8?B?aEE5UFJsVGwwdFZ0NG91bkYyd1BFTS8rMGhha2YybGluV2VESU9hcTBDTyt2?= =?utf-8?B?WkFwdUVYdnlud29JeGxrZW9hZGJ1b2U2S0FkZ002VWxHV01GZGtCV2R1TGw1?= =?utf-8?B?MkJOT2NaQ0dvQWthSXlFTEVhNnkwVCtQeXFKc1lNMWl4K2grZyt3WHZqdEFj?= =?utf-8?B?OXUxbWJtdmtEVlF2c1VKQnI2UGVnM0oxcmJZVmdST2RnK0Q0NmpaNFo4dnBI?= =?utf-8?B?OWZUZWwwdVJEaUhSV3h4ZXRSQjFsb0lPTlpMV0Z0NUdPUkkwVml3c1RocEJp?= =?utf-8?B?dDkrVlVYOXdRVEh0S25mNC9xaFQyM3VFTkNKMEpCeGZheVhvTnpXL1ZnV3kw?= =?utf-8?B?UWlyMTk1dXRpRVBUbzIrVFY2cmZFRUlxcXNXVmRJbkNtL3VEdUFrRjFDN0hS?= =?utf-8?B?aVRUNTBnZWJNaDlkcDlaelFsSEtiQVNNUmVmVW9xU3NlazV5bjdZbmgrcDRX?= =?utf-8?B?N3Q5eTF4RlhsTE1CQld1RDczLzRRejB1U1QzOGlyd1hWYlRMbjVWMjBEWFZx?= =?utf-8?B?aHFaNzFxQ1lLUEFURnRZOW9tL29ZanRrWHUvWFYyMkMwMmJVYi9PQnF0ajJ0?= =?utf-8?B?bjZNcnAyV3V5Z0NZVXd0bkNraWhXTFVDYXlZQkFEVWRjbmkyclFyTFYxMVZW?= =?utf-8?B?SmtHTTJ4YVgzZi9VbnJjcGZJOWdvUFBXQkRxek0rVWJNL2FCbFBsVGxZRnNt?= =?utf-8?B?bWdjdDkzc3BJdlNSZ0RBeXMvVzhhczZPTng0TGlveVVGWWFLamo2S2Vmenhk?= =?utf-8?B?cVRTc2Y1VjBuQnYyUUJySHAyeFNqbmkrbC9HM3BkdlZ5MHBZZ0p4T3RiY2FP?= =?utf-8?B?bTZUalVTNXpaTzlsQkF6TW1kdXVaWVkvRUNya0tiL0hnU0lnWU1ZdDJuSE5t?= =?utf-8?B?RWVjazB5bUpNYmxiZTJ1cG9kWlF1d3VkSWx0Nkw3elhGeHB4Vmx1Zi9pRUgv?= =?utf-8?B?RW5YN2NtWGFHVTFneit5d0ZTaFJUYWhpNWlKZEtUeDdscWtrUzN6NjJzaElv?= =?utf-8?B?UHFhNXNvM0FjZ1RkbWRNWnBvcUlleGtwcXppREk3UW85UTl6dm5CQ1BQZTJU?= =?utf-8?B?WVFIWkN4SWpSSkhZeHU4bE5HeE5zUFZ4eUhyOGxnRHptTHZMN1puNGgreDZ2?= =?utf-8?B?K215dGZEY3JKYk0rWUxZT0RNRGxWMVRGdmNnQVR3ODJlSmx4VHF5R3BSakJN?= =?utf-8?B?WlpCVk53TldITHcyUTZ5ejl5QkgwcU9kUEVnZnc0blRDd1pPcG5mTEcvTHlG?= =?utf-8?B?ZGZTYmVUOXJjRUhrcGdNQmpKaDFoZ0svaUpFcXducFQ5VDBpNG9RNTAyOGNi?= =?utf-8?Q?JjIRwoCAjRTHr50yFeQOFSGrmvvZ7yw8sJ?= X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CS1PR8401MB1144.NAMPRD84.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-Network-Message-Id: c1a736fe-7e28-4533-ef4b-08d8a1d86a7e X-MS-Exchange-CrossTenant-originalarrivaltime: 16 Dec 2020 15:36:54.3647 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 105b2061-b669-4b31-92ac-24d304d195dc X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: QSBfqOuzv9+iQoqRu2oxfz+UJbs+RhYFeJps/COruvPZgWHjbsR/4iu/sJRK9ZmXrp3VB+clcx9YjsZx7Y0PFA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CS1PR8401MB0661 X-OriginatorOrg: hpe.com X-Proofpoint-UnRewURL: 0 URL was un-rewritten MIME-Version: 1.0 X-HPE-SCL: -1 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.343,18.0.737 definitions=2020-12-16_06:2020-12-15,2020-12-16 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 mlxscore=0 lowpriorityscore=0 suspectscore=0 phishscore=0 impostorscore=0 adultscore=0 mlxlogscore=999 malwarescore=0 bulkscore=0 priorityscore=1501 spamscore=0 clxscore=1015 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2009150000 definitions=main-2012160105 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 TWlrZSwgeW91IGNhbiB0YWtlIGEgbG9vayBvbiB2NyBmb3IgdGhlIGNoYW5nZXMuDQoNCj4gLS0t LS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogQ2hhbmcsIEFibmVyIChIUFMgU1cvRlcg VGVjaG5vbG9naXN0KQ0KPiBTZW50OiBXZWRuZXNkYXksIERlY2VtYmVyIDE2LCAyMDIwIDEyOjM4 IFBNDQo+IFRvOiBLaW5uZXksIE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+ OyBkZXZlbEBlZGsyLmdyb3Vwcy5pbw0KPiBDYzogTGVpZiBMaW5kaG9sbSA8bGVpZkBudXZpYWlu Yy5jb20+OyBXYW5nLCBOaWNrbGUgKEhQUyBTVykNCj4gPG5pY2tsZS53YW5nQGhwZS5jb20+OyBP J0hhbmxleSwgUGV0ZXIgKEVYTCkgPHBldGVyLm9oYW5sZXlAaHBlLmNvbT4NCj4gU3ViamVjdDog UkU6IFtlZGsyLWRldmVsXSBbUEFUQ0ggdjYgMy82XSBSZWRmaXNoUGtnL0NydExpYjogQyBydW50 aW1lIGxpYnJhcnkNCj4gDQo+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiBGcm9t OiBLaW5uZXksIE1pY2hhZWwgRCBbbWFpbHRvOm1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tXQ0K PiA+IFNlbnQ6IFR1ZXNkYXksIERlY2VtYmVyIDE1LCAyMDIwIDg6MjAgQU0NCj4gPiBUbzogZGV2 ZWxAZWRrMi5ncm91cHMuaW87IENoYW5nLCBBYm5lciAoSFBTIFNXL0ZXIFRlY2hub2xvZ2lzdCkN Cj4gPiA8YWJuZXIuY2hhbmdAaHBlLmNvbT47IEtpbm5leSwgTWljaGFlbCBEDQo+IDxtaWNoYWVs LmQua2lubmV5QGludGVsLmNvbT4NCj4gPiBDYzogTGVpZiBMaW5kaG9sbSA8bGVpZkBudXZpYWlu Yy5jb20+OyBXYW5nLCBOaWNrbGUgKEhQUyBTVykNCj4gPiA8bmlja2xlLndhbmdAaHBlLmNvbT47 IE8nSGFubGV5LCBQZXRlciAoRVhMKQ0KPiA8cGV0ZXIub2hhbmxleUBocGUuY29tPg0KPiA+IFN1 YmplY3Q6IFJFOiBbZWRrMi1kZXZlbF0gW1BBVENIIHY2IDMvNl0gUmVkZmlzaFBrZy9DcnRMaWI6 IEMgcnVudGltZQ0KPiA+IGxpYnJhcnkNCj4gPg0KPiA+IEhpIEFibmVyLA0KPiA+DQo+ID4gSSBz ZWUgd2hhdCBhcHBlYXJzIHRvIGJlIHNvbWUgZHVwbGljYXRpb24gb2YgdGhlIHFzb3J0IHNvdXJj ZSBjb2RlLg0KPiA+DQo+ID4gQ2FuIHlvdSB1c2UgdGhlIFBlcmZvcm1RdWlja1NvcnQoKSBBUEkg ZnJvbSB0aGUgUXNvcnRMaWIgaW4gdGhlDQo+ID4gTWRlTW9kdWxlUGtnPw0KPiBEb25lIHRoYW5r cyENCj4gPg0KPiA+IFRoYW5rcywNCj4gPg0KPiA+IE1pa2UNCj4gPg0KPiA+ID4gLS0tLS1Pcmln aW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+IEZyb206IGRldmVsQGVkazIuZ3JvdXBzLmlvIDxkZXZl bEBlZGsyLmdyb3Vwcy5pbz4gT24gQmVoYWxmIE9mDQo+IEFibmVyDQo+ID4gPiBDaGFuZw0KPiA+ ID4gU2VudDogU3VuZGF5LCBEZWNlbWJlciAxMywgMjAyMCA3OjUzIFBNDQo+ID4gPiBUbzogZGV2 ZWxAZWRrMi5ncm91cHMuaW8NCj4gPiA+IENjOiBMZWlmIExpbmRob2xtIDxsZWlmQG51dmlhaW5j LmNvbT47IE5pY2tsZSBXYW5nDQo+ID4gPiA8bmlja2xlLndhbmdAaHBlLmNvbT47IFBldGVyIE8n SGFubGV5IDxwZXRlci5vaGFubGV5QGhwZS5jb20+DQo+ID4gPiBTdWJqZWN0OiBbZWRrMi1kZXZl bF0gW1BBVENIIHY2IDMvNl0gUmVkZmlzaFBrZy9DcnRMaWI6IEMgcnVudGltZQ0KPiA+ID4gbGli cmFyeQ0KPiA+ID4NCj4gPiA+IENSVCBsaWJyYXJ5IGlzIGN1cnJlbnRseSB1c2VkIGJ5IGVkazIg SnNvbkxpYiAob3BlbiBzb3VyY2UgamFuc3Nvbg0KPiA+ID4gcHJvamVjdCkgYW5kIGVkazIgUmVk ZmlzaExpYiAobGlicmVkZmlzaCBvcGVuIHNvdXJjZSBwcm9qZWN0KS4NCj4gPiA+IENydExpYiBs aWJyYXJ5IHByb3ZpZGVzIHRoZSBuZWNlc3NhcnkgQyBydW50aW1lIGVxdWl2YWxlbnQgZWRrMg0K PiA+ID4gZnVuY3Rpb25zIGZvciBvcGVuIHNvdXJjZSBwcm9qZWN0cy4NCj4gPiA+DQo+ID4gPiBT aWduZWQtb2ZmLWJ5OiBBYm5lciBDaGFuZyA8YWJuZXIuY2hhbmdAaHBlLmNvbT4NCj4gPiA+DQo+ ID4gPiBDYzogTGVpZiBMaW5kaG9sbSA8bGVpZkBudXZpYWluYy5jb20+DQo+ID4gPiBDYzogTmlj a2xlIFdhbmcgPG5pY2tsZS53YW5nQGhwZS5jb20+DQo+ID4gPiBDYzogUGV0ZXIgTydIYW5sZXkg PHBldGVyLm9oYW5sZXlAaHBlLmNvbT4NCj4gPiA+IC0tLQ0KPiA+ID4gIFJlZGZpc2hQa2cvSW5j bHVkZS9DcnQvYXNzZXJ0LmggICAgICB8ICAxNiArDQo+ID4gPiAgUmVkZmlzaFBrZy9JbmNsdWRl L0NydC9lcnJuby5oICAgICAgIHwgIDE2ICsNCj4gPiA+ICBSZWRmaXNoUGtnL0luY2x1ZGUvQ3J0 L2xpbWl0cy5oICAgICAgfCAgMTYgKw0KPiA+ID4gIFJlZGZpc2hQa2cvSW5jbHVkZS9DcnQvbWF0 aC5oICAgICAgICB8ICAxNiArDQo+ID4gPiAgUmVkZmlzaFBrZy9JbmNsdWRlL0NydC9zdGRhcmcu aCAgICAgIHwgIDE1ICsNCj4gPiA+ICBSZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L3N0ZGRlZi5oICAg ICAgfCAgMTYgKw0KPiA+ID4gIFJlZGZpc2hQa2cvSW5jbHVkZS9DcnQvc3RkaW8uaCAgICAgICB8 ICAxNSArDQo+ID4gPiAgUmVkZmlzaFBrZy9JbmNsdWRlL0NydC9zdGRsaWIuaCAgICAgIHwgIDE2 ICsNCj4gPiA+ICBSZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L3N0cmluZy5oICAgICAgfCAgMTYgKw0K PiA+ID4gIFJlZGZpc2hQa2cvSW5jbHVkZS9DcnQvc3lzL3RpbWUuaCAgICB8ICAxNSArDQo+ID4g PiAgUmVkZmlzaFBrZy9JbmNsdWRlL0NydC9zeXMvdHlwZXMuaCAgIHwgIDE1ICsNCj4gPiA+ICBS ZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L3RpbWUuaCAgICAgICAgfCAgMTUgKw0KPiA+ID4gIFJlZGZp c2hQa2cvSW5jbHVkZS9MaWJyYXJ5L0NydExpYi5oICB8IDE5NSArKysrKysrKw0KPiA+ID4gIFJl ZGZpc2hQa2cvTGlicmFyeS9DcnRMaWIvQ3J0TGliLmMgICB8IDcwNQ0KPiA+ICsrKysrKysrKysr KysrKysrKysrKysrKysrKw0KPiA+ID4gIFJlZGZpc2hQa2cvTGlicmFyeS9DcnRMaWIvQ3J0TGli LmluZiB8ICAzNyArKw0KPiA+ID4gIFJlZGZpc2hQa2cvUmVkZmlzaExpYnMuZHNjLmluYyAgICAg ICB8ICAgMSArDQo+ID4gPiAgUmVkZmlzaFBrZy9SZWRmaXNoUGtnLmNpLnlhbWwgICAgICAgIHwg IDE5ICsNCj4gPiA+ICBSZWRmaXNoUGtnL1JlZGZpc2hQa2cuZGVjICAgICAgICAgICAgfCAgIDgg Kw0KPiA+ID4gIFJlZGZpc2hQa2cvUmVkZmlzaFBrZy5kc2MgICAgICAgICAgICB8ICAgMSArDQo+ ID4gPiAgMTkgZmlsZXMgY2hhbmdlZCwgMTE1MyBpbnNlcnRpb25zKCspICBjcmVhdGUgbW9kZSAx MDA2NDQNCj4gPiA+IFJlZGZpc2hQa2cvSW5jbHVkZS9DcnQvYXNzZXJ0LmggIGNyZWF0ZSBtb2Rl DQo+ID4gPiAxMDA2NDQgUmVkZmlzaFBrZy9JbmNsdWRlL0NydC9lcnJuby5oICBjcmVhdGUgbW9k ZSAxMDA2NDQNCj4gPiA+IFJlZGZpc2hQa2cvSW5jbHVkZS9DcnQvbGltaXRzLmggIGNyZWF0ZSBt b2RlIDEwMDY0NA0KPiA+ID4gUmVkZmlzaFBrZy9JbmNsdWRlL0NydC9tYXRoLmggIGNyZWF0ZSBt b2RlIDEwMDY0NA0KPiA+ID4gUmVkZmlzaFBrZy9JbmNsdWRlL0NydC9zdGRhcmcuaCAgY3JlYXRl IG1vZGUgMTAwNjQ0DQo+ID4gPiBSZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L3N0ZGRlZi5oICBjcmVh dGUgbW9kZSAxMDA2NDQNCj4gPiA+IFJlZGZpc2hQa2cvSW5jbHVkZS9DcnQvc3RkaW8uaCAgY3Jl YXRlIG1vZGUgMTAwNjQ0DQo+ID4gPiBSZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L3N0ZGxpYi5oICBj cmVhdGUgbW9kZSAxMDA2NDQNCj4gPiA+IFJlZGZpc2hQa2cvSW5jbHVkZS9DcnQvc3RyaW5nLmgg IGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiA+ID4gUmVkZmlzaFBrZy9JbmNsdWRlL0NydC9zeXMvdGlt ZS5oICBjcmVhdGUgbW9kZSAxMDA2NDQNCj4gPiA+IFJlZGZpc2hQa2cvSW5jbHVkZS9DcnQvc3lz L3R5cGVzLmgNCj4gPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgUmVkZmlzaFBrZy9JbmNsdWRlL0Ny dC90aW1lLmggIGNyZWF0ZSBtb2RlDQo+ID4gPiAxMDA2NDQgUmVkZmlzaFBrZy9JbmNsdWRlL0xp YnJhcnkvQ3J0TGliLmgNCj4gPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgUmVkZmlzaFBrZy9MaWJy YXJ5L0NydExpYi9DcnRMaWIuYw0KPiA+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBSZWRmaXNoUGtn L0xpYnJhcnkvQ3J0TGliL0NydExpYi5pbmYNCj4gPiA+DQo+ID4gPiBkaWZmIC0tZ2l0IGEvUmVk ZmlzaFBrZy9JbmNsdWRlL0NydC9hc3NlcnQuaA0KPiA+ID4gYi9SZWRmaXNoUGtnL0luY2x1ZGUv Q3J0L2Fzc2VydC5oIG5ldyBmaWxlIG1vZGUgMTAwNjQ0IGluZGV4DQo+ID4gPiAwMDAwMDAwMDAw Li5mOWFiN2VmOWNhDQo+ID4gPiAtLS0gL2Rldi9udWxsDQo+ID4gPiArKysgYi9SZWRmaXNoUGtn L0luY2x1ZGUvQ3J0L2Fzc2VydC5oDQo+ID4gPiBAQCAtMCwwICsxLDE2IEBADQo+ID4gPiArLyoq IEBmaWxlDQo+ID4gPiArICBJbmNsdWRlIGZpbGUgdG8gc3VwcG9ydCBidWlsZGluZyB0aGUgdGhp cmQtcGFydHkgamFuc3NvbiBsaWJyYXJ5Lg0KPiA+ID4gKw0KPiA+ID4gKyBDb3B5cmlnaHQgKGMp IDIwMTksIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiA+ ICsgKEMpIENvcHlyaWdodCAyMDIwIEhld2xldHQgUGFja2FyZCBFbnRlcnByaXNlIERldmVsb3Bt ZW50IExQPEJSPg0KPiA+ID4gKw0KPiA+ID4gKyAgICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjog QlNELTItQ2xhdXNlLVBhdGVudA0KPiA+ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4gKw0KPiA+ID4g KyNpZm5kZWYgQ1JUX0FTU0VSVF9IXw0KPiA+ID4gKyNkZWZpbmUgQ1JUX0FTU0VSVF9IXw0KPiA+ ID4gKw0KPiA+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L0NydExpYi5oPg0KPiA+ID4gKw0KPiA+ID4g KyNlbmRpZg0KPiA+ID4gZGlmZiAtLWdpdCBhL1JlZGZpc2hQa2cvSW5jbHVkZS9DcnQvZXJybm8u aA0KPiA+ID4gYi9SZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L2Vycm5vLmggbmV3IGZpbGUgbW9kZSAx MDA2NDQgaW5kZXgNCj4gPiA+IDAwMDAwMDAwMDAuLmQzMGFlZTE0ZGUNCj4gPiA+IC0tLSAvZGV2 L251bGwNCj4gPiA+ICsrKyBiL1JlZGZpc2hQa2cvSW5jbHVkZS9DcnQvZXJybm8uaA0KPiA+ID4g QEAgLTAsMCArMSwxNiBAQA0KPiA+ID4gKy8qKiBAZmlsZQ0KPiA+ID4gKyAgSW5jbHVkZSBmaWxl IHRvIHN1cHBvcnQgYnVpbGRpbmcgdGhlIHRoaXJkLXBhcnR5IGphbnNzb24gbGlicmFyeS4NCj4g PiA+ICsNCj4gPiA+ICsgQ29weXJpZ2h0IChjKSAyMDE5LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxs IHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4gPiArIChDKSBDb3B5cmlnaHQgMjAyMCBIZXdsZXR0 IFBhY2thcmQgRW50ZXJwcmlzZSBEZXZlbG9wbWVudCBMUDxCUj4NCj4gPiA+ICsNCj4gPiA+ICsg ICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gPiA+ICsN Cj4gPiA+ICsqKi8NCj4gPiA+ICsNCj4gPiA+ICsjaWZuZGVmIENSVF9FUlJOT19IXw0KPiA+ID4g KyNkZWZpbmUgQ1JUX0VSUk5PX0hfDQo+ID4gPiArDQo+ID4gPiArI2luY2x1ZGUgPExpYnJhcnkv Q3J0TGliLmg+DQo+ID4gPiArDQo+ID4gPiArI2VuZGlmDQo+ID4gPiBkaWZmIC0tZ2l0IGEvUmVk ZmlzaFBrZy9JbmNsdWRlL0NydC9saW1pdHMuaA0KPiA+ID4gYi9SZWRmaXNoUGtnL0luY2x1ZGUv Q3J0L2xpbWl0cy5oIG5ldyBmaWxlIG1vZGUgMTAwNjQ0IGluZGV4DQo+ID4gPiAwMDAwMDAwMDAw Li5mM2JkZDMzZjJhDQo+ID4gPiAtLS0gL2Rldi9udWxsDQo+ID4gPiArKysgYi9SZWRmaXNoUGtn L0luY2x1ZGUvQ3J0L2xpbWl0cy5oDQo+ID4gPiBAQCAtMCwwICsxLDE2IEBADQo+ID4gPiArLyoq IEBmaWxlDQo+ID4gPiArICBJbmNsdWRlIGZpbGUgdG8gc3VwcG9ydCBidWlsZGluZyB0aGUgdGhp cmQtcGFydHkgamFuc3NvbiBsaWJyYXJ5Lg0KPiA+ID4gKw0KPiA+ID4gKyBDb3B5cmlnaHQgKGMp IDIwMTksIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiA+ ICsgKEMpIENvcHlyaWdodCAyMDIwIEhld2xldHQgUGFja2FyZCBFbnRlcnByaXNlIERldmVsb3Bt ZW50IExQPEJSPg0KPiA+ID4gKw0KPiA+ID4gKyAgICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjog QlNELTItQ2xhdXNlLVBhdGVudA0KPiA+ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4gKw0KPiA+ID4g KyNpZm5kZWYgQ1JUX0xJTUlUU19IXw0KPiA+ID4gKyNkZWZpbmUgQ1JUX0xJTUlUU19IXw0KPiA+ ID4gKw0KPiA+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L0NydExpYi5oPg0KPiA+ID4gKw0KPiA+ID4g KyNlbmRpZg0KPiA+ID4gZGlmZiAtLWdpdCBhL1JlZGZpc2hQa2cvSW5jbHVkZS9DcnQvbWF0aC5o DQo+ID4gPiBiL1JlZGZpc2hQa2cvSW5jbHVkZS9DcnQvbWF0aC5oIG5ldyBmaWxlIG1vZGUgMTAw NjQ0IGluZGV4DQo+ID4gPiAwMDAwMDAwMDAwLi45ODRjMGNjYzIxDQo+ID4gPiAtLS0gL2Rldi9u dWxsDQo+ID4gPiArKysgYi9SZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L21hdGguaA0KPiA+ID4gQEAg LTAsMCArMSwxNiBAQA0KPiA+ID4gKy8qKiBAZmlsZQ0KPiA+ID4gKyAgSW5jbHVkZSBmaWxlIHRv IHN1cHBvcnQgYnVpbGRpbmcgdGhlIHRoaXJkLXBhcnR5IGphbnNzb24gbGlicmFyeS4NCj4gPiA+ ICsNCj4gPiA+ICsgQ29weXJpZ2h0IChjKSAyMDE5LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJp Z2h0cyByZXNlcnZlZC48QlI+DQo+ID4gPiArIChDKSBDb3B5cmlnaHQgMjAyMCBIZXdsZXR0IFBh Y2thcmQgRW50ZXJwcmlzZSBEZXZlbG9wbWVudCBMUDxCUj4NCj4gPiA+ICsNCj4gPiA+ICsgICAg U1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gPiA+ICsNCj4g PiA+ICsqKi8NCj4gPiA+ICsNCj4gPiA+ICsjaWZuZGVmIENSVF9NQVRIX0hfDQo+ID4gPiArI2Rl ZmluZSBDUlRfTUFUSF9IXw0KPiA+ID4gKw0KPiA+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L0NydExp Yi5oPg0KPiA+ID4gKw0KPiA+ID4gKyNlbmRpZg0KPiA+ID4gZGlmZiAtLWdpdCBhL1JlZGZpc2hQ a2cvSW5jbHVkZS9DcnQvc3RkYXJnLmgNCj4gPiA+IGIvUmVkZmlzaFBrZy9JbmNsdWRlL0NydC9z dGRhcmcuaCBuZXcgZmlsZSBtb2RlIDEwMDY0NCBpbmRleA0KPiA+ID4gMDAwMDAwMDAwMC4uZDVh MzE0YWQzYg0KPiA+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ID4gKysrIGIvUmVkZmlzaFBrZy9JbmNs dWRlL0NydC9zdGRhcmcuaA0KPiA+ID4gQEAgLTAsMCArMSwxNSBAQA0KPiA+ID4gKy8qKiBAZmls ZQ0KPiA+ID4gKyAgSW5jbHVkZSBmaWxlIHRvIHN1cHBvcnQgYnVpbGRpbmcgdGhlIHRoaXJkLXBh cnR5IGphbnNzb24gbGlicmFyeS4NCj4gPiA+ICsNCj4gPiA+ICsgQ29weXJpZ2h0IChjKSAyMDE5 LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4gPiArIChD KSBDb3B5cmlnaHQgMjAyMCBIZXdsZXR0IFBhY2thcmQgRW50ZXJwcmlzZSBEZXZlbG9wbWVudCBM UDxCUj4NCj4gPiA+ICsNCj4gPiA+ICsgICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0y LUNsYXVzZS1QYXRlbnQNCj4gPiA+ICsNCj4gPiA+ICsqKi8NCj4gPiA+ICsjaWZuZGVmIENSVF9T VERBUkdfSF8NCj4gPiA+ICsjZGVmaW5lIENSVF9TVERBUkdfSF8NCj4gPiA+ICsNCj4gPiA+ICsj aW5jbHVkZSA8TGlicmFyeS9DcnRMaWIuaD4NCj4gPiA+ICsNCj4gPiA+ICsjZW5kaWYNCj4gPiA+ IGRpZmYgLS1naXQgYS9SZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L3N0ZGRlZi5oDQo+ID4gPiBiL1Jl ZGZpc2hQa2cvSW5jbHVkZS9DcnQvc3RkZGVmLmggbmV3IGZpbGUgbW9kZSAxMDA2NDQgaW5kZXgN Cj4gPiA+IDAwMDAwMDAwMDAuLjE1YTM3YmY1MGUNCj4gPiA+IC0tLSAvZGV2L251bGwNCj4gPiA+ ICsrKyBiL1JlZGZpc2hQa2cvSW5jbHVkZS9DcnQvc3RkZGVmLmgNCj4gPiA+IEBAIC0wLDAgKzEs MTYgQEANCj4gPiA+ICsvKiogQGZpbGUNCj4gPiA+ICsgIEluY2x1ZGUgZmlsZSB0byBzdXBwb3J0 IGJ1aWxkaW5nIHRoZSB0aGlyZC1wYXJ0eSBqYW5zc29uIGxpYnJhcnkuDQo+ID4gPiArDQo+ID4g PiArIENvcHlyaWdodCAoYykgMjAxOSwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVz ZXJ2ZWQuPEJSPg0KPiA+ID4gKyAoQykgQ29weXJpZ2h0IDIwMjAgSGV3bGV0dCBQYWNrYXJkIEVu dGVycHJpc2UgRGV2ZWxvcG1lbnQgTFA8QlI+DQo+ID4gPiArDQo+ID4gPiArICAgIFNQRFgtTGlj ZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4gPiArDQo+ID4gPiArKiov DQo+ID4gPiArDQo+ID4gPiArI2lmbmRlZiBDUlRfU1REREVGX0hfDQo+ID4gPiArI2RlZmluZSBD UlRfU1REREVGX0hfDQo+ID4gPiArDQo+ID4gPiArI2luY2x1ZGUgPExpYnJhcnkvQ3J0TGliLmg+ DQo+ID4gPiArDQo+ID4gPiArI2VuZGlmDQo+ID4gPiBkaWZmIC0tZ2l0IGEvUmVkZmlzaFBrZy9J bmNsdWRlL0NydC9zdGRpby5oDQo+ID4gPiBiL1JlZGZpc2hQa2cvSW5jbHVkZS9DcnQvc3RkaW8u aCBuZXcgZmlsZSBtb2RlIDEwMDY0NCBpbmRleA0KPiA+ID4gMDAwMDAwMDAwMC4uMjVlNjEwYmUx MA0KPiA+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ID4gKysrIGIvUmVkZmlzaFBrZy9JbmNsdWRlL0Ny dC9zdGRpby5oDQo+ID4gPiBAQCAtMCwwICsxLDE1IEBADQo+ID4gPiArLyoqIEBmaWxlDQo+ID4g PiArICBJbmNsdWRlIGZpbGUgdG8gc3VwcG9ydCBidWlsZGluZyB0aGUgdGhpcmQtcGFydHkgamFu c3NvbiBsaWJyYXJ5Lg0KPiA+ID4gKw0KPiA+ID4gKyBDb3B5cmlnaHQgKGMpIDIwMTksIEludGVs IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiA+ICsgKEMpIENvcHly aWdodCAyMDIwIEhld2xldHQgUGFja2FyZCBFbnRlcnByaXNlIERldmVsb3BtZW50IExQPEJSPg0K PiA+ID4gKw0KPiA+ID4gKyAgICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNl LVBhdGVudA0KPiA+ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4gKyNpZm5kZWYgQ1JUX1NURElPX0hf DQo+ID4gPiArI2RlZmluZSBDUlRfU1RESU9fSF8NCj4gPiA+ICsNCj4gPiA+ICsjaW5jbHVkZSA8 TGlicmFyeS9DcnRMaWIuaD4NCj4gPiA+ICsNCj4gPiA+ICsjZW5kaWYNCj4gPiA+IGRpZmYgLS1n aXQgYS9SZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L3N0ZGxpYi5oDQo+ID4gPiBiL1JlZGZpc2hQa2cv SW5jbHVkZS9DcnQvc3RkbGliLmggbmV3IGZpbGUgbW9kZSAxMDA2NDQgaW5kZXgNCj4gPiA+IDAw MDAwMDAwMDAuLjViM2RkMjczYzgNCj4gPiA+IC0tLSAvZGV2L251bGwNCj4gPiA+ICsrKyBiL1Jl ZGZpc2hQa2cvSW5jbHVkZS9DcnQvc3RkbGliLmgNCj4gPiA+IEBAIC0wLDAgKzEsMTYgQEANCj4g PiA+ICsvKiogQGZpbGUNCj4gPiA+ICsgIEluY2x1ZGUgZmlsZSB0byBzdXBwb3J0IGJ1aWxkaW5n IHRoZSB0aGlyZC1wYXJ0eSBqYW5zc29uIGxpYnJhcnkuDQo+ID4gPiArDQo+ID4gPiArIENvcHly aWdodCAoYykgMjAxOSwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJS Pg0KPiA+ID4gKyAoQykgQ29weXJpZ2h0IDIwMjAgSGV3bGV0dCBQYWNrYXJkIEVudGVycHJpc2Ug RGV2ZWxvcG1lbnQgTFA8QlI+DQo+ID4gPiArDQo+ID4gPiArICAgIFNQRFgtTGljZW5zZS1JZGVu dGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4gPiArDQo+ID4gPiArKiovDQo+ID4gPiAr DQo+ID4gPiArI2lmbmRlZiBDUlRfU1RETElCX0hfDQo+ID4gPiArI2RlZmluZSBDUlRfU1RETElC X0hfDQo+ID4gPiArDQo+ID4gPiArI2luY2x1ZGUgPExpYnJhcnkvQ3J0TGliLmg+DQo+ID4gPiAr DQo+ID4gPiArI2VuZGlmDQo+ID4gPiBkaWZmIC0tZ2l0IGEvUmVkZmlzaFBrZy9JbmNsdWRlL0Ny dC9zdHJpbmcuaA0KPiA+ID4gYi9SZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L3N0cmluZy5oIG5ldyBm aWxlIG1vZGUgMTAwNjQ0IGluZGV4DQo+ID4gPiAwMDAwMDAwMDAwLi5mNjBiODdjY2QyDQo+ID4g PiAtLS0gL2Rldi9udWxsDQo+ID4gPiArKysgYi9SZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L3N0cmlu Zy5oDQo+ID4gPiBAQCAtMCwwICsxLDE2IEBADQo+ID4gPiArLyoqIEBmaWxlDQo+ID4gPiArICBJ bmNsdWRlIGZpbGUgdG8gc3VwcG9ydCBidWlsZGluZyB0aGUgdGhpcmQtcGFydHkgamFuc3NvbiBs aWJyYXJ5Lg0KPiA+ID4gKw0KPiA+ID4gKyBDb3B5cmlnaHQgKGMpIDIwMTksIEludGVsIENvcnBv cmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiA+ICsgKEMpIENvcHlyaWdodCAy MDIwIEhld2xldHQgUGFja2FyZCBFbnRlcnByaXNlIERldmVsb3BtZW50IExQPEJSPg0KPiA+ID4g Kw0KPiA+ID4gKyAgICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVu dA0KPiA+ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4gKw0KPiA+ID4gKyNpZm5kZWYgQ1JUX1NUUklO R19IXw0KPiA+ID4gKyNkZWZpbmUgQ1JUX1NUUklOR19IXw0KPiA+ID4gKw0KPiA+ID4gKyNpbmNs dWRlIDxMaWJyYXJ5L0NydExpYi5oPg0KPiA+ID4gKw0KPiA+ID4gKyNlbmRpZg0KPiA+ID4gZGlm ZiAtLWdpdCBhL1JlZGZpc2hQa2cvSW5jbHVkZS9DcnQvc3lzL3RpbWUuaA0KPiA+ID4gYi9SZWRm aXNoUGtnL0luY2x1ZGUvQ3J0L3N5cy90aW1lLmgNCj4gPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0 DQo+ID4gPiBpbmRleCAwMDAwMDAwMDAwLi40Y2VkMTc2Y2RhDQo+ID4gPiAtLS0gL2Rldi9udWxs DQo+ID4gPiArKysgYi9SZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L3N5cy90aW1lLmgNCj4gPiA+IEBA IC0wLDAgKzEsMTUgQEANCj4gPiA+ICsvKiogQGZpbGUNCj4gPiA+ICsgIEluY2x1ZGUgZmlsZSB0 byBzdXBwb3J0IGJ1aWxkaW5nIHRoZSB0aGlyZC1wYXJ0eSBqYW5zc29uIGxpYnJhcnkuDQo+ID4g PiArDQo+ID4gPiArIENvcHlyaWdodCAoYykgMjAxOSwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCBy aWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ID4gKyAoQykgQ29weXJpZ2h0IDIwMjAgSGV3bGV0dCBQ YWNrYXJkIEVudGVycHJpc2UgRGV2ZWxvcG1lbnQgTFA8QlI+DQo+ID4gPiArDQo+ID4gPiArICAg IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4gPiArDQo+ ID4gPiArKiovDQo+ID4gPiArI2lmbmRlZiBDUlRfU1lTX1RJTUVfSF8NCj4gPiA+ICsjZGVmaW5l IENSVF9TWVNfVElNRV9IXw0KPiA+ID4gKw0KPiA+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L0NydExp Yi5oPg0KPiA+ID4gKw0KPiA+ID4gKyNlbmRpZg0KPiA+ID4gZGlmZiAtLWdpdCBhL1JlZGZpc2hQ a2cvSW5jbHVkZS9DcnQvc3lzL3R5cGVzLmgNCj4gPiA+IGIvUmVkZmlzaFBrZy9JbmNsdWRlL0Ny dC9zeXMvdHlwZXMuaA0KPiA+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiA+IGluZGV4IDAw MDAwMDAwMDAuLmM0ZjgwNzIxNGMNCj4gPiA+IC0tLSAvZGV2L251bGwNCj4gPiA+ICsrKyBiL1Jl ZGZpc2hQa2cvSW5jbHVkZS9DcnQvc3lzL3R5cGVzLmgNCj4gPiA+IEBAIC0wLDAgKzEsMTUgQEAN Cj4gPiA+ICsvKiogQGZpbGUNCj4gPiA+ICsgIEluY2x1ZGUgZmlsZSB0byBzdXBwb3J0IGJ1aWxk aW5nIHRoZSB0aGlyZC1wYXJ0eSBqYW5zc29uIGxpYnJhcnkuDQo+ID4gPiArDQo+ID4gPiArIENv cHlyaWdodCAoYykgMjAxOSwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQu PEJSPg0KPiA+ID4gKyAoQykgQ29weXJpZ2h0IDIwMjAgSGV3bGV0dCBQYWNrYXJkIEVudGVycHJp c2UgRGV2ZWxvcG1lbnQgTFA8QlI+DQo+ID4gPiArDQo+ID4gPiArICAgIFNQRFgtTGljZW5zZS1J ZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4gPiArDQo+ID4gPiArKiovDQo+ID4g PiArI2lmbmRlZiBDUlRfU1lTX1RZUEVTX0hfDQo+ID4gPiArI2RlZmluZSBDUlRfU1lTX1RZUEVT X0hfDQo+ID4gPiArDQo+ID4gPiArI2luY2x1ZGUgPExpYnJhcnkvQ3J0TGliLmg+DQo+ID4gPiAr DQo+ID4gPiArI2VuZGlmDQo+ID4gPiBkaWZmIC0tZ2l0IGEvUmVkZmlzaFBrZy9JbmNsdWRlL0Ny dC90aW1lLmgNCj4gPiA+IGIvUmVkZmlzaFBrZy9JbmNsdWRlL0NydC90aW1lLmggbmV3IGZpbGUg bW9kZSAxMDA2NDQgaW5kZXgNCj4gPiA+IDAwMDAwMDAwMDAuLmNhMDRhYzg3MzANCj4gPiA+IC0t LSAvZGV2L251bGwNCj4gPiA+ICsrKyBiL1JlZGZpc2hQa2cvSW5jbHVkZS9DcnQvdGltZS5oDQo+ ID4gPiBAQCAtMCwwICsxLDE1IEBADQo+ID4gPiArLyoqIEBmaWxlDQo+ID4gPiArICBJbmNsdWRl IGZpbGUgdG8gc3VwcG9ydCBidWlsZGluZyB0aGUgdGhpcmQtcGFydHkgamFuc3NvbiBsaWJyYXJ5 Lg0KPiA+ID4gKw0KPiA+ID4gKyBDb3B5cmlnaHQgKGMpIDIwMTksIEludGVsIENvcnBvcmF0aW9u LiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiA+ICsgKEMpIENvcHlyaWdodCAyMDIwIEhl d2xldHQgUGFja2FyZCBFbnRlcnByaXNlIERldmVsb3BtZW50IExQPEJSPg0KPiA+ID4gKw0KPiA+ ID4gKyAgICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiA+ ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4gKyNpZm5kZWYgQ1JUX1RJTUVfSF8NCj4gPiA+ICsjZGVm aW5lIENSVF9USU1FX0hfDQo+ID4gPiArDQo+ID4gPiArI2luY2x1ZGUgPExpYnJhcnkvQ3J0TGli Lmg+DQo+ID4gPiArDQo+ID4gPiArI2VuZGlmDQo+ID4gPiBkaWZmIC0tZ2l0IGEvUmVkZmlzaFBr Zy9JbmNsdWRlL0xpYnJhcnkvQ3J0TGliLmgNCj4gPiA+IGIvUmVkZmlzaFBrZy9JbmNsdWRlL0xp YnJhcnkvQ3J0TGliLmgNCj4gPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gPiBpbmRleCAw MDAwMDAwMDAwLi44Yzc0ODRlNzViDQo+ID4gPiAtLS0gL2Rldi9udWxsDQo+ID4gPiArKysgYi9S ZWRmaXNoUGtnL0luY2x1ZGUvTGlicmFyeS9DcnRMaWIuaA0KPiA+ID4gQEAgLTAsMCArMSwxOTUg QEANCj4gPiA+ICsvKiogQGZpbGUNCj4gPiA+ICsgIENSVCB3cmFwcGVyIGhlYWQgZnVuY3Rpb25z IGZvciBqYW5zc29uIHN5c3RlbSBjYWxsLg0KPiA+ID4gKw0KPiA+ID4gKyAgQ29weXJpZ2h0IChj KSAyMDE5LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4g PiArICAoQykgQ29weXJpZ2h0IDIwMjAgSGV3bGV0dCBQYWNrYXJkIEVudGVycHJpc2UgRGV2ZWxv cG1lbnQgTFA8QlI+DQo+ID4gPiArDQo+ID4gPiArICAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVy OiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4gPiArDQo+ID4gPiArKiovDQo+ID4gPiArDQo+ID4g PiArI2lmbmRlZiBDUlRfTElCX0hfDQo+ID4gPiArI2RlZmluZSBDUlRfTElCX0hfDQo+ID4gPiAr DQo+ID4gPiArI2luY2x1ZGUgPExpYnJhcnkvQmFzZUxpYi5oPg0KPiA+ID4gKyNpbmNsdWRlIDxM aWJyYXJ5L0Jhc2VNZW1vcnlMaWIuaD4NCj4gPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9EZWJ1Z0xp Yi5oPg0KPiA+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L1ByaW50TGliLmg+DQo+ID4gPiArDQo+ID4g PiArI2RlZmluZSBNQVhfU1RSSU5HX1NJWkUgIDB4MTAwMDAwMDANCj4gPiA+ICsNCj4gPiA+ICsv LyBNaW5pbXVtIHZhbHVlIGZvciBhbiBvYmplY3Qgb2YgdHlwZSBsb25nIGxvbmcgaW50Lg0KPiA+ ID4gKyNkZWZpbmUgTExPTkdfTUlOICAgTUlOX0lOVDY0DQo+ID4gPiArDQo+ID4gPiArLy8gTWF4 aW11bSB2YWx1ZSBmb3IgYW4gb2JqZWN0IG9mIHR5cGUgbG9uZyBsb25nIGludC4NCj4gPiA+ICsj ZGVmaW5lIExMT05HX01BWCAgIE1BWF9JTlQ2NA0KPiA+ID4gKw0KPiA+ID4gKy8vIFdlIGRvbnQg c3VwcG9ydCBkb3VibGUgb24gZWRrMg0KPiA+ID4gKyNkZWZpbmUgSFVHRV9WQUwgICAgMA0KPiA+ ID4gKw0KPiA+ID4gKyNpZiBkZWZpbmVkKE1ERV9DUFVfWDY0KSB8fCBkZWZpbmVkKE1ERV9DUFVf QUFSQ0g2NCkgfHwNCj4gPiA+ICtkZWZpbmVkKE1ERV9DUFVfSUE2NCkgfHwgZGVmaW5lZChNREVf Q1BVX1JJU0NWNjQpIC8vIC8vIFdpdGgNCj4gR0NDDQo+ID4gd2UNCj4gPiA+ICt3b3VsZCBub3Jt YWxseSB1c2UgU0lYVFlfRk9VUl9CSVRfTE9ORywgYnV0IE1TVkMgbmVlZHMgLy8NCj4gPiA+ICtT SVhUWV9GT1VSX0JJVCwgYmVjYXVzZSAnbG9uZycgaXMgMzItYml0IGFuZCBvbmx5ICdsb25nIGxv bmcnIGlzIC8vDQo+ID4gPiArNjQtYml0LiBTaW5jZSB1c2luZyAnbG9uZyBsb25nJyB3b3JrcyBm aW5lIG9uIEdDQyB0b28sIGp1c3QgZG8gdGhhdC4NCj4gPiA+ICsvLw0KPiA+ID4gKyNkZWZpbmUg U0lYVFlfRk9VUl9CSVQNCj4gPiA+ICsjZWxpZiBkZWZpbmVkKE1ERV9DUFVfSUEzMikgfHwgZGVm aW5lZChNREVfQ1BVX0FSTSkgfHwNCj4gPiA+ICtkZWZpbmVkKE1ERV9DUFVfRUJDKSAjZGVmaW5l IFRISVJUWV9UV09fQklUICNlbmRpZg0KPiA+ID4gKw0KPiA+ID4gKy8vDQo+ID4gPiArLy8gTWFw IGFsbCB2YV94eHh4IGVsZW1lbnRzIHRvIFZBX3h4eCBkZWZpbmVkIGluDQo+ID4gPiArTWRlUGtn L0luY2x1ZGUvQmFzZS5oIC8vICNpZiAhZGVmaW5lZChfX0NDX0FSTSkgLy8gaWYgdmFfbGlzdCBp cw0KPiA+ID4gK25vdCBhbHJlYWR5IGRlZmluZWQNCj4gPiA+ICsjZGVmaW5lIHZhX2xpc3QgICBW QV9MSVNUDQo+ID4gPiArI2RlZmluZSB2YV9hcmcgICAgVkFfQVJHDQo+ID4gPiArI2RlZmluZSB2 YV9zdGFydCAgVkFfU1RBUlQNCj4gPiA+ICsjZGVmaW5lIHZhX2VuZCAgICBWQV9FTkQNCj4gPiA+ ICsjZWxzZSAvLyBfX0NDX0FSTQ0KPiA+ID4gKyNkZWZpbmUgdmFfc3RhcnQoTWFya2VyLCBQYXJh bWV0ZXIpICAgX192YV9zdGFydChNYXJrZXIsIFBhcmFtZXRlcikNCj4gPiA+ICsjZGVmaW5lIHZh X2FyZyhNYXJrZXIsIFRZUEUpICAgICAgICAgIF9fdmFfYXJnKE1hcmtlciwgVFlQRSkNCj4gPiA+ ICsjZGVmaW5lIHZhX2VuZChNYXJrZXIpICAgICAgICAgICAgICAgICgodm9pZCkwKQ0KPiA+ID4g KyNlbmRpZg0KPiA+ID4gKw0KPiA+ID4gKy8vDQo+ID4gPiArLy8gRGVmaW5pdGlvbnMgZm9yIGds b2JhbCBjb25zdGFudHMgdXNlZCBieSBDUlQgbGlicmFyeSByb3V0aW5lcyAvLw0KPiA+ID4gKyNk ZWZpbmUgSU5UX01BWCAgICAgIE1BWF9JTlQzMiAgICAgICAgLyogTWF4aW11bSAoc2lnbmVkKSBp bnQgdmFsdWUgKi8NCj4gPiA+ICsjZGVmaW5lIExPTkdfTUFYICAgICAwWDdGRkZGRkZGTCAgICAg IC8qIG1heCB2YWx1ZSBmb3IgYSBsb25nICovDQo+ID4gPiArI2RlZmluZSBMT05HX01JTiAgICAg KC1MT05HX01BWC0xKSAgICAvKiBtaW4gdmFsdWUgZm9yIGEgbG9uZyAqLw0KPiA+ID4gKyNkZWZp bmUgVUxPTkdfTUFYICAgIDB4RkZGRkZGRkYgICAgICAgLyogTWF4aW11bSB1bnNpZ25lZCBsb25n DQo+IHZhbHVlDQo+ID4gKi8NCj4gPiA+ICsjZGVmaW5lIENIQVJfQklUICAgICA4ICAgICAgICAg ICAgICAgIC8qIE51bWJlciBvZiBiaXRzIGluIGEgY2hhciAqLw0KPiA+ID4gKw0KPiA+ID4gKy8v IE1heGltdW0gdmFsdWUgZm9yIGFuIG9iamVjdCBvZiB0eXBlIHVuc2lnbmVkIGxvbmcgbG9uZyBp bnQuDQo+ID4gPiArI2RlZmluZSBVTExPTkdfTUFYICAweEZGRkZGRkZGRkZGRkZGRkZVTEwgLy8g Ml42NCAtIDEgLy8gTWF4aW11bQ0KPiA+ID4gK3ZhbHVlIGZvciBhbiBvYmplY3Qgb2YgdHlwZSB1 bnNpZ25lZCBjaGFyLg0KPiA+ID4gKyNkZWZpbmUgVUNIQVJfTUFYICAgMjU1ICAvLyAyXjggLSAx DQo+ID4gPiArDQo+ID4gPiArLy8NCj4gPiA+ICsvLyBCYXNpYyB0eXBlcyBtYXBwaW5nDQo+ID4g PiArLy8NCj4gPiA+ICt0eXBlZGVmIFVJTlROICAgICAgICAgIHNpemVfdDsNCj4gPiA+ICt0eXBl ZGVmIElOVE4gICAgICAgICAgIHNzaXplX3Q7DQo+ID4gPiArdHlwZWRlZiBJTlQzMiAgICAgICAg ICB0aW1lX3Q7DQo+ID4gPiArdHlwZWRlZiBVSU5UOCAgICAgICAgICBfX3VpbnQ4X3Q7DQo+ID4g PiArdHlwZWRlZiBVSU5UOCAgICAgICAgICBzYV9mYW1pbHlfdDsNCj4gPiA+ICt0eXBlZGVmIFVJ TlQzMiAgICAgICAgIHVpZF90Ow0KPiA+ID4gK3R5cGVkZWYgVUlOVDMyICAgICAgICAgZ2lkX3Q7 DQo+ID4gPiArdHlwZWRlZiBJTlQzMiAgICAgICAgICBpbnQzMl90Ow0KPiA+ID4gK3R5cGVkZWYg VUlOVDMyICAgICAgICAgdWludDMyX3Q7DQo+ID4gPiArdHlwZWRlZiBVSU5UMTYgICAgICAgICB1 aW50MTZfdDsNCj4gPiA+ICt0eXBlZGVmIFVJTlQ4ICAgICAgICAgIHVpbnQ4X3Q7DQo+ID4gPiAr dHlwZWRlZiBlbnVtIHtmYWxzZSwgdHJ1ZX0gYm9vbDsNCj4gPiA+ICsNCj4gPiA+ICsvLw0KPiA+ ID4gKy8vIEZpbGUgb3BlcmF0aW9ucyBhcmUgbm90IHJlcXVpcmVkIGZvciBFRkkgYnVpbGRpbmcs IC8vIHNvIEZJTEUgaXMNCj4gPiA+ICttYXBwZWQgdG8gVk9JRCAqIHRvIHBhc3MgYnVpbGQgLy8g dHlwZWRlZiBWT0lEICAqRklMRTsNCj4gPiA+ICsNCj4gPiA+ICsvLw0KPiA+ID4gKy8vIEdsb2Jh bCB2YXJpYWJsZXMNCj4gPiA+ICsvLw0KPiA+ID4gK2V4dGVybiBpbnQgIGVycm5vOw0KPiA+ID4g K2V4dGVybiBGSUxFICpzdGRlcnI7DQo+ID4gPiArDQo+ID4gPiArLy8NCj4gPiA+ICsvLyBGdW5j dGlvbiBwcm90b3R5cGVzIG9mIENSVCBMaWJyYXJ5IHJvdXRpbmVzIC8vDQo+ID4gPiArdm9pZCAg ICAgICAgICAgKm1hbGxvYyAgICAgKHNpemVfdCk7DQo+ID4gPiArdm9pZCAgICAgICAgICAgKnJl YWxsb2MgICAgKHZvaWQgKiwgc2l6ZV90KTsNCj4gPiA+ICt2b2lkICAgICAgICAgICAqY2FsbG9j ICAgICAoc2l6ZV90IE51bSwgc2l6ZV90IFNpemUpOw0KPiA+ID4gK3ZvaWQgICAgICAgICAgIGZy ZWUgICAgICAgICh2b2lkICopOw0KPiA+ID4gK3ZvaWQgICAgICAgICAgICptZW1zZXQgICAgICh2 b2lkICosIGludCwgc2l6ZV90KTsNCj4gPiA+ICtpbnQgICAgICAgICAgICBtZW1jbXAgICAgICAo Y29uc3Qgdm9pZCAqLCBjb25zdCB2b2lkICosIHNpemVfdCk7DQo+ID4gPiAraW50ICAgICAgICAg ICAgaXNkaWdpdCAgICAgKGludCk7DQo+ID4gPiAraW50ICAgICAgICAgICAgaXNzcGFjZSAgICAg KGludCk7DQo+ID4gPiAraW50ICAgICAgICAgICAgdG9sb3dlciAgICAgKGludCk7DQo+ID4gPiAr aW50ICAgICAgICAgICAgaXN1cHBlciAgICAgKGludCk7DQo+ID4gPiAraW50ICAgICAgICAgICAg aXN4ZGlnaXQgICAgKGludCk7DQo+ID4gPiAraW50ICAgICAgICAgICAgaXNhbG51bSAgICAgKGlu dCk7DQo+ID4gPiArdm9pZCAgICAgICAgICAgKm1lbWNweSAgICAgKHZvaWQgKiwgY29uc3Qgdm9p ZCAqLCBzaXplX3QpOw0KPiA+ID4gK3ZvaWQgICAgICAgICAgICptZW1zZXQgICAgICh2b2lkICos IGludCwgc2l6ZV90KTsNCj4gPiA+ICt2b2lkICAgICAgICAgICAqbWVtY2hyICAgICAoY29uc3Qg dm9pZCAqLCBpbnQsIHNpemVfdCk7DQo+ID4gPiAraW50ICAgICAgICAgICAgbWVtY21wICAgICAg KGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqLCBzaXplX3QpOw0KPiA+ID4gK3ZvaWQgICAgICAg ICAgICptZW1tb3ZlICAgICh2b2lkICosIGNvbnN0IHZvaWQgKiwgc2l6ZV90KTsNCj4gPiA+ICtp bnQgICAgICAgICAgICBzdHJjbXAgICAgICAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOw0K PiA+ID4gK2ludCAgICAgICAgICAgIHN0cm5jbXAgICAgIChjb25zdCBjaGFyICosIGNvbnN0IGNo YXIgKiwgc2l6ZV90KTsNCj4gPiA+ICtjaGFyICAgICAgICAgICAqc3RyY3B5ICAgICAoY2hhciAq LCBjb25zdCBjaGFyICopOw0KPiA+ID4gK3NpemVfdCAgICAgICAgIHN0cmxlbiAgICAgIChjb25z dCBjaGFyICopOw0KPiA+ID4gK2NoYXIgICAgICAgICAgICpzdHJjYXQgICAgIChjaGFyICosIGNv bnN0IGNoYXIgKik7DQo+ID4gPiArY2hhciAgICAgICAgICAgKnN0cmNociAgICAgKGNvbnN0IGNo YXIgKiwgaW50KTsNCj4gPiA+ICtpbnQgICAgICAgICAgICBzdHJjYXNlY21wICAoY29uc3QgY2hh ciAqLCBjb25zdCBjaGFyICopOw0KPiA+ID4gK2ludCAgICAgICAgICAgIHN0cm5jYXNlY21wIChj b25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsNCj4gPiA+ICtjaGFyICAgICAgICAg ICAqc3RybmNweSAgICAoY2hhciAqLCBzaXplX3QsIGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsNCj4g PiA+ICtpbnQgICAgICAgICAgICBzdHJuY21wICAgICAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFy ICosIHNpemVfdCk7DQo+ID4gPiArY2hhciAgICAgICAgICAgKnN0cnJjaHIgICAgKGNvbnN0IGNo YXIgKiwgaW50KTsNCj4gPiA+ICt1bnNpZ25lZCBsb25nICBzdHJ0b3VsICAgICAoY29uc3QgY2hh ciAqLCBjaGFyICoqLCBpbnQpOw0KPiA+ID4gK2NoYXIgKiAgICAgICAgIHN0cnN0ciAgICAgIChj b25zdCBjaGFyICpzMSAsIGNvbnN0IGNoYXIgKnMyKTsNCj4gPiA+ICtsb25nICAgICAgICAgICBz dHJ0b2wgICAgICAoY29uc3QgY2hhciAqLCBjaGFyICoqLCBpbnQpOw0KPiA+ID4gK2NoYXIgICAg ICAgICAgICpzdHJlcnJvciAgIChpbnQpOw0KPiA+ID4gK3NpemVfdCAgICAgICAgIHN0cnNwbiAg ICAgIChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7DQo+ID4gPiArY2hhciAqICAgICAgICAg c3RyZHVwICAgICAgKGNvbnN0IGNoYXIgKnN0cik7DQo+ID4gPiArY2hhciAqICAgICAgICAgc3Ry cGJyayAgICAgKGNvbnN0IGNoYXIgKnMxLCBjb25zdCBjaGFyICpzMik7DQo+ID4gPiArdW5zaWdu ZWQgbG9uZyBsb25nIHN0cnRvdWxsKGNvbnN0IGNoYXIgKiBucHRyLCBjaGFyICoqIGVuZHB0ciwg aW50IGJhc2UpOw0KPiA+ID4gK2xvbmcgbG9uZyAgICAgIHN0cnRvbGwgICAgIChjb25zdCBjaGFy ICogbnB0ciwgY2hhciAqKiBlbmRwdHIsIGludCBiYXNlKTsNCj4gPiA+ICtsb25nICAgICAgICAg ICBzdHJ0b2wgICAgICAoY29uc3QgY2hhciAqIG5wdHIsIGNoYXIgKiogZW5kcHRyLCBpbnQgYmFz ZSk7DQo+ID4gPiArZG91YmxlICAgICAgICAgc3RydG9kICAgICAgKGNvbnN0IGNoYXIgKiBfX3Jl c3RyaWN0IG5wdHIsIGNoYXIgKiogX19yZXN0cmljdA0KPiA+IGVuZHB0cik7DQo+ID4gPiArc2l6 ZV90ICAgICAgICAgc3RyY3NwbiAgICAgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsNCj4g PiA+ICtpbnQgICAgICAgICAgICBwcmludGYgICAgICAoY29uc3QgY2hhciAqLCAuLi4pOw0KPiA+ ID4gK2ludCAgICAgICAgICAgIHNzY2FuZiAgICAgIChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIg KiwgLi4uKTsNCj4gPiA+ICtGSUxFICAgICAgICAgICAqZm9wZW4gICAgICAoY29uc3QgY2hhciAq LCBjb25zdCBjaGFyICopOw0KPiA+ID4gK3NpemVfdCAgICAgICAgIGZyZWFkICAgICAgICh2b2lk ICosIHNpemVfdCwgc2l6ZV90LCBGSUxFICopOw0KPiA+ID4gK3NpemVfdCAgICAgICAgIGZ3cml0 ZSAgICAgIChjb25zdCB2b2lkICosIHNpemVfdCwgc2l6ZV90LCBGSUxFICopOw0KPiA+ID4gK2lu dCAgICAgICAgICAgIGZjbG9zZSAgICAgIChGSUxFICopOw0KPiA+ID4gK2ludCAgICAgICAgICAg IGZwcmludGYgICAgIChGSUxFICosIGNvbnN0IGNoYXIgKiwgLi4uKTsNCj4gPiA+ICtpbnQgICAg ICAgICAgICBmZ2V0YyAgICAgICAoRklMRSAqIF9GaWxlKTsNCj4gPiA+ICt1aWRfdCAgICAgICAg ICBnZXR1aWQgICAgICAodm9pZCk7DQo+ID4gPiArdWlkX3QgICAgICAgICAgZ2V0ZXVpZCAgICAg KHZvaWQpOw0KPiA+ID4gK2dpZF90ICAgICAgICAgIGdldGdpZCAgICAgICh2b2lkKTsNCj4gPiA+ ICtnaWRfdCAgICAgICAgICBnZXRlZ2lkICAgICAodm9pZCk7DQo+ID4gPiArdm9pZCAgICAgICAg ICAgcXNvcnQgICAgICAgKHZvaWQgKiwgc2l6ZV90LCBzaXplX3QsIGludCAoKikoY29uc3Qgdm9p ZCAqLCBjb25zdCB2b2lkDQo+ID4gKikpOw0KPiA+ID4gK2NoYXIgICAgICAgICAgICpnZXRlbnYg ICAgIChjb25zdCBjaGFyICopOw0KPiA+ID4gKyNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoX19H TlVDX18gPj0gMikNCj4gPiA+ICt2b2lkICAgICAgICAgICBhYm9ydCAgICAgICAodm9pZCkgX19h dHRyaWJ1dGVfXygoX19ub3JldHVybl9fKSk7DQo+ID4gPiArI2Vsc2UNCj4gPiA+ICt2b2lkICAg ICAgICAgICBhYm9ydCAgICAgICAodm9pZCk7DQo+ID4gPiArI2VuZGlmDQo+ID4gPiAraW50ICAg ICAgICAgICAgdG91cHBlciAgICAgKGludCk7DQo+ID4gPiAraW50ICAgICAgICAgICAgRGlnaXQy VmFsICAgKGludCk7DQo+ID4gPiArdGltZV90ICAgICAgICAgdGltZSAgICAgICAgKHRpbWVfdCAq KTsNCj4gPiA+ICsNCj4gPiA+ICsvLw0KPiA+ID4gKy8vIE1hY3JvcyB0aGF0IGRpcmVjdGx5IG1h cCBmdW5jdGlvbnMgdG8gQmFzZUxpYiwgQmFzZU1lbW9yeUxpYiwNCj4gPiA+ICthbmQgRGVidWdM aWIgZnVuY3Rpb25zIC8vDQo+ID4gPiArI2RlZmluZSBzdHJjbXAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgQXNjaWlTdHJDbXANCj4gPiA+ICsjZGVmaW5lIG1lbWNweShkZXN0LHNvdXJjZSxj b3VudCkNCj4gPiBDb3B5TWVtKGRlc3Qsc291cmNlLChVSU5UTikoY291bnQpKQ0KPiA+ID4gKyNk ZWZpbmUgbWVtc2V0KGRlc3QsY2gsY291bnQpDQo+ID4gU2V0TWVtKGRlc3QsKFVJTlROKShjb3Vu dCksKFVJTlQ4KShjaCkpDQo+ID4gPiArI2RlZmluZSBtZW1jaHIoYnVmLGNoLGNvdW50KQ0KPiA+ IFNjYW5NZW04KGJ1ZiwoVUlOVE4pKGNvdW50KSwoVUlOVDgpY2gpDQo+ID4gPiArI2RlZmluZSBt ZW1jbXAoYnVmMSxidWYyLGNvdW50KQ0KPiA+IChpbnQpKENvbXBhcmVNZW0oYnVmMSxidWYyLChV SU5UTikoY291bnQpKSkNCj4gPiA+ICsjZGVmaW5lIG1lbW1vdmUoZGVzdCxzb3VyY2UsY291bnQp DQo+ID4gQ29weU1lbShkZXN0LHNvdXJjZSwoVUlOVE4pKGNvdW50KSkNCj4gPiA+ICsjZGVmaW5l IHN0cmxlbihzdHIpDQo+ID4gKHNpemVfdCkoQXNjaWlTdHJuTGVuUyhzdHIsTUFYX1NUUklOR19T SVpFKSkNCj4gPiA+ICsjZGVmaW5lIHN0cmNweShzdHJEZXN0LHN0clNvdXJjZSkNCj4gPiBBc2Np aVN0ckNweVMoc3RyRGVzdCwoc3RybGVuKHN0clNvdXJjZSkrMSksc3RyU291cmNlKQ0KPiA+ID4g KyNkZWZpbmUgc3RybmNweShzdHJEZXN0LHN0clNvdXJjZSxjb3VudCkNCj4gPiA+ICtBc2NpaVN0 cm5DcHlTKHN0ckRlc3QsKFVJTlROKWNvdW50LHN0clNvdXJjZSwoVUlOVE4pY291bnQpDQo+ID4g PiArI2RlZmluZSBzdHJuY3B5cyhzdHJEZXN0LCBEZXN0TGVuLCBzdHJTb3VyY2UsY291bnQpDQo+ ID4gQXNjaWlTdHJuQ3B5UyhzdHJEZXN0LERlc3RMZW4sc3RyU291cmNlLChVSU5UTiljb3VudCkN Cj4gPiA+ICsjZGVmaW5lIHN0cmNhdChzdHJEZXN0LHN0clNvdXJjZSkNCj4gPiBBc2NpaVN0ckNh dFMoc3RyRGVzdCwoc3RybGVuKHN0clNvdXJjZSkrc3RybGVuKHN0ckRlc3QpKzEpLHN0clNvdXJj ZSkNCj4gPiA+ICsjZGVmaW5lIHN0cmNocihzdHIsY2gpICAgICAgICAgICAgICAgICAgICBTY2Fu TWVtOCgoVk9JRA0KPiA+ICopKHN0ciksQXNjaWlTdHJTaXplKHN0ciksKFVJTlQ4KWNoKQ0KPiA+ ID4gKyNkZWZpbmUgc3RybmNtcChzdHJpbmcxLHN0cmluZzIsY291bnQpDQo+ID4gKGludCkoQXNj aWlTdHJuQ21wKHN0cmluZzEsc3RyaW5nMiwoVUlOVE4pKGNvdW50KSkpDQo+ID4gPiArI2RlZmlu ZSBzdHJjYXNlY21wKHN0cjEsc3RyMikgICAgICAgICAgICAgKGludClBc2NpaVN0cmlDbXAoc3Ry MSxzdHIyKQ0KPiA+ID4gKyNkZWZpbmUgc3Ryc3RyKHMxLHMyKSAgICAgICAgICAgICAgICAgICAg IEFzY2lpU3RyU3RyKHMxLHMyKQ0KPiA+ID4gKyNkZWZpbmUgc3ByaW50ZihidWYsLi4uKQ0KPiA+ IEFzY2lpU1ByaW50KGJ1ZixNQVhfU1RSSU5HX1NJWkUsX19WQV9BUkdTX18pDQo+ID4gPiArI2Rl ZmluZSBzbnByaW50ZihidWYsbGVuLC4uLikgICAgICAgICAgICAgQXNjaWlTUHJpbnQoYnVmLGxl bixfX1ZBX0FSR1NfXykNCj4gPiA+ICsjZGVmaW5lIHZzbnByaW50ZihidWYsbGVuLGZvcm1hdCxt YXJrZXIpDQo+ID4gQXNjaWlWU1ByaW50KChidWYpLChsZW4pLChmb3JtYXQpLChtYXJrZXIpKQ0K PiA+ID4gKyNkZWZpbmUgYXNzZXJ0KGV4cHJlc3Npb24pICAgICAgICAgICAgICAgIEFTU0VSVChl eHByZXNzaW9uKQ0KPiA+ID4gKyNkZWZpbmUgYXRvaShucHRyKSAgICAgICAgICAgICAgICAgICAg ICAgIEFzY2lpU3RyRGVjaW1hbFRvVWludG4obnB0cikNCj4gPiA+ICsjZGVmaW5lIGZhYnMoeCkg ICAgICAgICAgICAgICAgICAgICAgICAgICAoKCh4KSA8IDAuMCk/ICgteCk6ICh4KSkNCj4gPiA+ ICsjZGVmaW5lIG9mZnNldG9mKHR5cGUsbWVtYmVyKSAgICAgICAgICAgICBPRkZTRVRfT0YodHlw ZSxtZW1iZXIpDQo+ID4gPiArDQo+ID4gPiArI2RlZmluZSBFT0YgKC0xKQ0KPiA+ID4gKw0KPiA+ ID4gK2V4dGVybiBpbnQgIGVycm5vOw0KPiA+ID4gKw0KPiA+ID4gKyNkZWZpbmUgRVJBTkdFICAg MzQgICAgICAgICAgICAgICAgLyogMzQgICBSZXN1bHQgdG9vIGxhcmdlICovDQo+ID4gPiArDQo+ ID4gPiArI2VuZGlmDQo+ID4gPiBkaWZmIC0tZ2l0IGEvUmVkZmlzaFBrZy9MaWJyYXJ5L0NydExp Yi9DcnRMaWIuYw0KPiA+ID4gYi9SZWRmaXNoUGtnL0xpYnJhcnkvQ3J0TGliL0NydExpYi5jDQo+ ID4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+ID4gaW5kZXggMDAwMDAwMDAwMC4uMWZmNDAy M2RiZQ0KPiA+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ID4gKysrIGIvUmVkZmlzaFBrZy9MaWJyYXJ5 L0NydExpYi9DcnRMaWIuYw0KPiA+ID4gQEAgLTAsMCArMSw3MDUgQEANCj4gPiA+ICsvKiogQGZp bGUNCj4gPiA+ICsgIENSVCB3cmFwcGVyIGZ1bmN0aW9ucyBmb3Igc3lzdGVtIGNhbGwuDQo+ID4g PiArDQo+ID4gPiArICBDb3B5cmlnaHQgKGMpIDIwMTksIEludGVsIENvcnBvcmF0aW9uLiBBbGwg cmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiA+ICsgIChDKSBDb3B5cmlnaHQgMjAyMCBIZXdsZXR0 IFBhY2thcmQgRW50ZXJwcmlzZSBEZXZlbG9wbWVudCBMUDxCUj4NCj4gPiA+ICsNCj4gPiA+ICsg ICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gPiA+ICsN Cj4gPiA+ICsqKi8NCj4gPiA+ICsjaW5jbHVkZSA8VWVmaS5oPg0KPiA+ID4gKyNpbmNsdWRlIDxM aWJyYXJ5L0NydExpYi5oPg0KPiA+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L01lbW9yeUFsbG9jYXRp b25MaWIuaD4gI2luY2x1ZGUNCj4gPiA+ICs8TGlicmFyeS9VZWZpUnVudGltZVNlcnZpY2VzVGFi bGVMaWIuaD4NCj4gPiA+ICsNCj4gPiA+ICtpbnQgIGVycm5vID0gMDsNCj4gPiA+ICsNCj4gPiA+ ICsvKioNCj4gPiA+ICsgIERldGVybWluZSBpZiBhIHBhcnRpY3VsYXIgY2hhcmFjdGVyIGlzIGFu IGFscGhhbnVtZXJpYyBjaGFyYWN0ZXINCj4gPiA+ICsgIEByZXR1cm4gIFJldHVybnMgMSBpZiBj IGlzIGFuIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXIsIG90aGVyd2lzZSByZXR1cm5zDQo+IDAuDQo+ ID4gPiArKiovDQo+ID4gPiAraW50IGlzYWxudW0gKGludCBjKQ0KPiA+ID4gK3sNCj4gPiA+ICsg IC8vDQo+ID4gPiArICAvLyA8YWxudW0+IDo6PSBbMC05XSB8IFthLXpdIHwgW0EtWl0NCj4gPiA+ ICsgIC8vDQo+ID4gPiArICByZXR1cm4gKCgoJzAnIDw9IChjKSkgJiYgKChjKSA8PSAnOScpKSB8 fA0KPiA+ID4gKyAgICAgICAgICAoKCdhJyA8PSAoYykpICYmICgoYykgPD0gJ3onKSkgfHwNCj4g PiA+ICsgICAgICAgICAgKCgnQScgPD0gKGMpKSAmJiAoKGMpIDw9ICdaJykpKTsgfQ0KPiA+ID4g Kw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgRGV0ZXJtaW5lIGlmIGEgcGFydGljdWxhciBjaGFyYWN0 ZXIgaXMgYSBkaWdpdGFsIGNoYXJhY3Rlcg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHVybiAgUmV0 dXJucyAxIGlmIGMgaXMgYW4gZGlnaXRhbCBjaGFyYWN0ZXIsIG90aGVyd2lzZSByZXR1cm5zIDAu DQo+ID4gPiArKiovDQo+ID4gPiAraW50IGlzZGNoYXIgKGludCBjKQ0KPiA+ID4gK3sNCj4gPiA+ ICsgIC8vDQo+ID4gPiArICAvLyBbMC05XSB8IFtlICstLl0NCj4gPiA+ICsgIC8vDQo+ID4gPiAr ICByZXR1cm4gKCgoJzAnIDw9IChjKSkgJiYgKChjKSA8PSAnOScpKSB8fA0KPiA+ID4gKyAgICAg ICAgICAoYyA9PSAnZScpIHx8IChjID09ICdFJykgfHwNCj4gPiA+ICsgICAgICAgICAgKGMgPT0g JysnKSB8fCAoYyA9PSAnLScpIHx8DQo+ID4gPiArICAgICAgICAgIChjID09ICcuJykpOw0KPiA+ ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIERldGVybWluZSBpZiBhIHBhcnRp Y3VsYXIgY2hhcmFjdGVyIGlzIGEgc3BhY2UgY2hhcmFjdGVyDQo+ID4gPiArDQo+ID4gPiArICBA cmV0dXJuICBSZXR1cm5zIDEgaWYgYyBpcyBhIHNwYWNlIGNoYXJhY3RlciAqKi8gaW50IGlzc3Bh Y2UgKGludA0KPiA+ID4gK2MpIHsNCj4gPiA+ICsgIC8vDQo+ID4gPiArICAvLyA8c3BhY2U+IDo6 PSBbIF0NCj4gPiA+ICsgIC8vDQo+ID4gPiArICByZXR1cm4gKChjKSA9PSAnICcpIHx8ICgoYykg PT0gJ1x0JykgfHwgKChjKSA9PSAnXHInKSB8fCAoKGMpID09DQo+ID4gPiArJ1xuJykgfHwgKChj KSA9PSAnXHYnKSAgfHwgKChjKSA9PSAnXGYnKTsgfQ0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ ID4gKyAgQWxsb2NhdGVzIG1lbW9yeSBibG9ja3MNCj4gPiA+ICsqLw0KPiA+ID4gK3ZvaWQgKm1h bGxvYyAoc2l6ZV90IHNpemUpDQo+ID4gPiArew0KPiA+ID4gKyAgcmV0dXJuIEFsbG9jYXRlUG9v bCAoKFVJTlROKSBzaXplKTsgfQ0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgRGUtYWxs b2NhdGVzIG9yIGZyZWVzIGEgbWVtb3J5IGJsb2NrICovIHZvaWQgZnJlZSAodm9pZCAqcHRyKSB7 DQo+ID4gPiArICAvLw0KPiA+ID4gKyAgLy8gSW4gU3RhbmRhcmQgQywgZnJlZSgpIGhhbmRsZXMg YSBudWxsIHBvaW50ZXIgYXJndW1lbnQNCj4gPiA+ICt0cmFuc3BhcmVudGx5LiBUaGlzDQo+ID4g PiArICAvLyBpcyBub3QgdHJ1ZSBvZiBGcmVlUG9vbCgpIGJlbG93LCBzbyBwcm90ZWN0IGl0Lg0K PiA+ID4gKyAgLy8NCj4gPiA+ICsgIGlmIChwdHIgIT0gTlVMTCkgew0KPiA+ID4gKyAgICBGcmVl UG9vbCAocHRyKTsNCj4gPiA+ICsgIH0NCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ ID4gPiArICBOZXRCU0QgQ29tcGF0aWJpbGl0eSBGdW5jdGlvbiBzdHJkdXAgY3JlYXRlcyBhIGR1 cGxpY2F0ZSBjb3B5IG9mIGENCj4gc3RyaW5nLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHVybiAg UmV0dXJucyB0aGUgcG9pbnRlciB0byBkdXBsaWNhdGVkIHN0cmluZy4NCj4gPiA+ICsqKi8NCj4g PiA+ICtjaGFyICogc3RyZHVwKGNvbnN0IGNoYXIgKnN0cikNCj4gPiA+ICt7DQo+ID4gPiArICBz aXplX3QgbGVuOw0KPiA+ID4gKyAgY2hhciAqY29weTsNCj4gPiA+ICsNCj4gPiA+ICsgIGxlbiA9 IHN0cmxlbihzdHIpICsgMTsNCj4gPiA+ICsgIGlmICgoY29weSA9IG1hbGxvYyhsZW4pKSA9PSBO VUxMKQ0KPiA+ID4gKyAgICByZXR1cm4gKE5VTEwpOw0KPiA+ID4gKyAgbWVtY3B5KGNvcHksIHN0 ciwgbGVuKTsNCj4gPiA+ICsgIHJldHVybiAoY29weSk7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ ID4gKy8qKiBUaGUgdG91cHBlciBmdW5jdGlvbiBjb252ZXJ0cyBhIGxvd2VyY2FzZSBsZXR0ZXIg dG8gYSBjb3JyZXNwb25kaW5nDQo+ID4gPiArICAgIHVwcGVyY2FzZSBsZXR0ZXIuDQo+ID4gPiAr DQo+ID4gPiArICAgIEBwYXJhbVtpbl0gICAgYyAgIFRoZSBjaGFyYWN0ZXIgdG8gYmUgY29udmVy dGVkLg0KPiA+ID4gKw0KPiA+ID4gKyAgICBAcmV0dXJuICAgSWYgdGhlIGFyZ3VtZW50IGlzIGEg Y2hhcmFjdGVyIGZvciB3aGljaCBpc2xvd2VyIGlzIHRydWUgYW5kDQo+ID4gPiArICAgICAgICAg ICAgICB0aGVyZSBhcmUgb25lIG9yIG1vcmUgY29ycmVzcG9uZGluZyBjaGFyYWN0ZXJzLCBhcyBz cGVjaWZpZWQgYnkNCj4gPiA+ICsgICAgICAgICAgICAgIHRoZSBjdXJyZW50IGxvY2FsZSwgZm9y IHdoaWNoIGlzdXBwZXIgaXMgdHJ1ZSwgdGhlIHRvdXBwZXINCj4gPiA+ICsgICAgICAgICAgICAg IGZ1bmN0aW9uIHJldHVybnMgb25lIG9mIHRoZSBjb3JyZXNwb25kaW5nIGNoYXJhY3RlcnMgKGFs d2F5cyB0aGUNCj4gPiA+ICsgICAgICAgICAgICAgIHNhbWUgb25lIGZvciBhbnkgZ2l2ZW4gbG9j YWxlKTsgb3RoZXJ3aXNlLCB0aGUgYXJndW1lbnQgaXMNCj4gPiA+ICsgICAgICAgICAgICAgIHJl dHVybmVkIHVuY2hhbmdlZC4NCj4gPiA+ICsqKi8NCj4gPiA+ICtpbnQNCj4gPiA+ICt0b3VwcGVy KA0KPiA+ID4gKyAgSU4gIGludCBjDQo+ID4gPiArICApDQo+ID4gPiArew0KPiA+ID4gKyAgaWYg KCAoYyA+PSAnYScpICYmIChjIDw9ICd6JykgKSB7DQo+ID4gPiArICAgIGMgPSBjIC0gKCdhJyAt ICdBJyk7DQo+ID4gPiArICB9DQo+ID4gPiArICByZXR1cm4gYzsNCj4gPiA+ICt9DQo+ID4gPiAr DQo+ID4gPiArLyoqDQo+ID4gPiArICBEaWdpdCB0byBhIHZhbHVlLg0KPiA+ID4gKw0KPiA+ID4g KyAgQHJldHVybiAgUmV0dXJucyB0aGUgdmFsdWUgb2YgZGlnaXQuDQo+ID4gPiArKiovDQo+ID4g PiAraW50DQo+ID4gPiArRGlnaXQyVmFsKCBpbnQgYykNCj4gPiA+ICt7DQo+ID4gPiArICBpZiAo KChjID49ICdhJykgJiYgKGMgPD0gJ3onKSkgfHwgKChjID49ICdBJykgJiYgKGMgPD0gJ1onKSkp IHsNCj4gPiA+ICsvKiBJZiBjIGlzIG9uZSBvZiBbQS0NCj4gPiBaYS16XS4uLiAqLw0KPiA+ID4g KyAgICBjID0gdG91cHBlcihjKSAtIDc7ICAgLy8gQWRqdXN0IHNvICdBJyBpcyAoJzknICsgMSkN Cj4gPiA+ICsgIH0NCj4gPiA+ICsgIHJldHVybiBjIC0gJzAnOyAgIC8vIFZhbHVlIHJldHVybmVk IGlzIGJldHdlZW4gMCBhbmQgMzUsIGluY2x1c2l2ZS4NCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4g PiArDQo+ID4gPiArLyoqIFRoZSBzdHJ0b2xsIGZ1bmN0aW9uIGNvbnZlcnRzIHRoZSBpbml0aWFs IHBvcnRpb24gb2YgdGhlIHN0cmluZyBwb2ludGVkDQo+IHRvDQo+ID4gPiArICAgIGJ5IG5wdHIg dG8gbG9uZyBsb25nIGludCByZXByZXNlbnRhdGlvbi4NCj4gPiA+ICsNCj4gPiA+ICsgICAgU2Vl IHRoZSBkZXNjcmlwdGlvbiBmb3Igc3RydG9sIGZvciBtb3JlIGluZm9ybWF0aW9uLg0KPiA+ID4g Kw0KPiA+ID4gKyAgQHJldHVybiAgIFRoZSBzdHJ0b2xsIGZ1bmN0aW9uIHJldHVybnMgdGhlIGNv bnZlcnRlZCB2YWx1ZSwgaWYgYW55LiBJZiBubw0KPiA+ID4gKyAgICAgICAgICAgIGNvbnZlcnNp b24gY291bGQgYmUgcGVyZm9ybWVkLCB6ZXJvIGlzIHJldHVybmVkLiBJZiB0aGUgY29ycmVjdA0K PiA+ID4gKyAgICAgICAgICAgIHZhbHVlIGlzIG91dHNpZGUgdGhlIHJhbmdlIG9mIHJlcHJlc2Vu dGFibGUgdmFsdWVzLCBMTE9OR19NSU4gb3INCj4gPiA+ICsgICAgICAgICAgICBMTE9OR19NQVgg aXMgcmV0dXJuZWQgKGFjY29yZGluZyB0byB0aGUgc2lnbiBvZiB0aGUgdmFsdWUsIGlmIGFueSks DQo+ID4gPiArICAgICAgICAgICAgYW5kIHRoZSB2YWx1ZSBvZiB0aGUgbWFjcm8gRVJBTkdFIGlz IHN0b3JlZCBpbiBlcnJuby4NCj4gPiA+ICsqKi8NCj4gPiA+ICtsb25nIGxvbmcNCj4gPiA+ICtz dHJ0b2xsKGNvbnN0IGNoYXIgKiBucHRyLCBjaGFyICoqIGVuZHB0ciwgaW50IGJhc2UpIHsNCj4g PiA+ICsgIGNvbnN0IGNoYXIgKnBFbmQ7DQo+ID4gPiArICBsb25nIGxvbmcgICBSZXN1bHQgPSAw Ow0KPiA+ID4gKyAgbG9uZyBsb25nICAgUHJldmlvdXM7DQo+ID4gPiArICBpbnQgICAgICAgICB0 ZW1wOw0KPiA+ID4gKyAgQk9PTEVBTiAgICAgTmVnYXRpdmUgPSBGQUxTRTsNCj4gPiA+ICsNCj4g PiA+ICsgIHBFbmQgPSBucHRyOw0KPiA+ID4gKw0KPiA+ID4gKyAgaWYoKGJhc2UgPCAwKSB8fCAo YmFzZSA9PSAxKSB8fCAoYmFzZSA+IDM2KSkgew0KPiA+ID4gKyAgICBpZihlbmRwdHIgIT0gTlVM TCkgew0KPiA+ID4gKyAgICAqZW5kcHRyID0gTlVMTDsNCj4gPiA+ICsgICAgfQ0KPiA+ID4gKyAg ICByZXR1cm4gMDsNCj4gPiA+ICsgIH0NCj4gPiA+ICsgIC8vIFNraXAgbGVhZGluZyBzcGFjZXMu DQo+ID4gPiArICB3aGlsZShpc3NwYWNlKCpucHRyKSkgICArK25wdHI7DQo+ID4gPiArDQo+ID4g PiArICAvLyBQcm9jZXNzIFN1YmplY3Qgc2VxdWVuY2U6IG9wdGlvbmFsIHNpZ24gZm9sbG93ZWQg YnkgZGlnaXRzLg0KPiA+ID4gKyAgaWYoKm5wdHIgPT0gJysnKSB7DQo+ID4gPiArICAgIE5lZ2F0 aXZlID0gRkFMU0U7DQo+ID4gPiArICAgICsrbnB0cjsNCj4gPiA+ICsgIH0NCj4gPiA+ICsgIGVs c2UgaWYoKm5wdHIgPT0gJy0nKSB7DQo+ID4gPiArICAgIE5lZ2F0aXZlID0gVFJVRTsNCj4gPiA+ ICsgICAgKytucHRyOw0KPiA+ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAgaWYoKm5wdHIgPT0g JzAnKSB7ICAvKiBNaWdodCBiZSBPY3RhbCBvciBIZXggKi8NCj4gPiA+ICsgICAgaWYodG91cHBl cihucHRyWzFdKSA9PSAnWCcpIHsgICAvKiBMb29rcyBsaWtlIEhleCAqLw0KPiA+ID4gKyAgICAg IGlmKChiYXNlID09IDApIHx8IChiYXNlID09IDE2KSkgew0KPiA+ID4gKyAgICAgICAgbnB0ciAr PSAyOyAgLyogU2tpcCB0aGUgIjBYIiAgICAgICovDQo+ID4gPiArICAgICAgICBiYXNlID0gMTY7 ICAvKiBJbiBjYXNlIGJhc2Ugd2FzIDAgKi8NCj4gPiA+ICsgICAgICB9DQo+ID4gPiArICAgIH0N Cj4gPiA+ICsgICAgZWxzZSB7ICAgIC8qIExvb2tzIGxpa2UgT2N0YWwgKi8NCj4gPiA+ICsgICAg ICBpZigoYmFzZSA9PSAwKSB8fCAoYmFzZSA9PSA4KSkgew0KPiA+ID4gKyAgICAgICAgKytucHRy OyAgICAgLyogU2tpcCB0aGUgbGVhZGluZyAiMCIgKi8NCj4gPiA+ICsgICAgICAgIGJhc2UgPSA4 OyAgIC8qIEluIGNhc2UgYmFzZSB3YXMgMCAgICovDQo+ID4gPiArICAgICAgfQ0KPiA+ID4gKyAg ICB9DQo+ID4gPiArICB9DQo+ID4gPiArICBpZihiYXNlID09IDApIHsgICAvKiBJZiBzdGlsbCB6 ZXJvIHRoZW4gbXVzdCBiZSBkZWNpbWFsICovDQo+ID4gPiArICAgIGJhc2UgPSAxMDsNCj4gPiA+ ICsgIH0NCj4gPiA+ICsgIGlmKCpucHRyICA9PSAnMCcpIHsNCj4gPiA+ICsgICAgZm9yKCA7ICpu cHRyID09ICcwJzsgKytucHRyKTsgIC8qIFNraXAgYW55IHJlbWFpbmluZyBsZWFkaW5nIHplcm9z ICovDQo+ID4gPiArICAgIHBFbmQgPSBucHRyOw0KPiA+ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ID4g KyAgd2hpbGUoIGlzYWxudW0oKm5wdHIpICYmICgodGVtcCA9IERpZ2l0MlZhbCgqbnB0cikpIDwg YmFzZSkpIHsNCj4gPiA+ICsgICAgUHJldmlvdXMgPSBSZXN1bHQ7DQo+ID4gPiArICAgIFJlc3Vs dCA9IE11bHRTNjR4NjQgKFJlc3VsdCwgYmFzZSkgKyAobG9uZyBsb25nIGludCl0ZW1wOw0KPiA+ ID4gKyAgICBpZiggUmVzdWx0IDw9IFByZXZpb3VzKSB7ICAgLy8gRGV0ZWN0IE92ZXJmbG93DQo+ ID4gPiArICAgICAgaWYoTmVnYXRpdmUpIHsNCj4gPiA+ICsgICAgICAgIFJlc3VsdCA9IExMT05H X01JTjsNCj4gPiA+ICsgICAgICB9DQo+ID4gPiArICAgICAgZWxzZSB7DQo+ID4gPiArICAgICAg ICBSZXN1bHQgPSBMTE9OR19NQVg7DQo+ID4gPiArICAgICAgfQ0KPiA+ID4gKyAgICAgIE5lZ2F0 aXZlID0gRkFMU0U7DQo+ID4gPiArICAgICAgZXJybm8gPSBFUkFOR0U7DQo+ID4gPiArICAgICAg YnJlYWs7DQo+ID4gPiArICAgIH0NCj4gPiA+ICsgICAgcEVuZCA9ICsrbnB0cjsNCj4gPiA+ICsg IH0NCj4gPiA+ICsgIGlmKE5lZ2F0aXZlKSB7DQo+ID4gPiArICAgIFJlc3VsdCA9IC1SZXN1bHQ7 DQo+ID4gPiArICB9DQo+ID4gPiArDQo+ID4gPiArICAvLyBTYXZlIHBvaW50ZXIgdG8gZmluYWwg c2VxdWVuY2UNCj4gPiA+ICsgIGlmKGVuZHB0ciAhPSBOVUxMKSB7DQo+ID4gPiArICAgICplbmRw dHIgPSAoY2hhciAqKXBFbmQ7DQo+ID4gPiArICB9DQo+ID4gPiArICByZXR1cm4gUmVzdWx0Ow0K PiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvKiogVGhlIHN0cnRvbCwgc3RydG9sbCwgc3RydG91 bCwgYW5kIHN0cnRvdWxsIGZ1bmN0aW9ucyBjb252ZXJ0IHRoZSBpbml0aWFsDQo+ID4gPiArICAg IHBvcnRpb24gb2YgdGhlIHN0cmluZyBwb2ludGVkIHRvIGJ5IG5wdHIgdG8gbG9uZyBpbnQsIGxv bmcgbG9uZyBpbnQsDQo+ID4gPiArICAgIHVuc2lnbmVkIGxvbmcgaW50LCBhbmQgdW5zaWduZWQg bG9uZyBsb25nIGludCByZXByZXNlbnRhdGlvbiwNCj4gPiByZXNwZWN0aXZlbHkuDQo+ID4gPiAr ICAgIEZpcnN0LCB0aGV5IGRlY29tcG9zZSB0aGUgaW5wdXQgc3RyaW5nIGludG8gdGhyZWUgcGFy dHM6IGFuIGluaXRpYWwsDQo+ID4gPiArICAgIHBvc3NpYmx5IGVtcHR5LCBzZXF1ZW5jZSBvZiB3 aGl0ZS1zcGFjZSBjaGFyYWN0ZXJzIChhcw0KPiA+ID4gKyBzcGVjaWZpZWQgYnkNCj4gPiB0aGUN Cj4gPiA+ICsgICAgaXNzcGFjZSBmdW5jdGlvbiksIGEgc3ViamVjdCBzZXF1ZW5jZSByZXNlbWJs aW5nIGFuIGludGVnZXINCj4gPiByZXByZXNlbnRlZCBpbg0KPiA+ID4gKyAgICBzb21lIHJhZGl4 IGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIGJhc2UsIGFuZCBhIGZpbmFsIHN0cmluZyBvZiBv bmUNCj4gb3INCj4gPiA+ICsgICAgbW9yZSB1bnJlY29nbml6ZWQgY2hhcmFjdGVycywgaW5jbHVk aW5nIHRoZSB0ZXJtaW5hdGluZyBudWxsDQo+ID4gPiArIGNoYXJhY3Rlcg0KPiA+IG9mDQo+ID4g PiArICAgIHRoZSBpbnB1dCBzdHJpbmcuIFRoZW4sIHRoZXkgYXR0ZW1wdCB0byBjb252ZXJ0IHRo ZSBzdWJqZWN0DQo+ID4gPiArIHNlcXVlbmNlIHRvDQo+ID4gYW4NCj4gPiA+ICsgICAgaW50ZWdl ciwgYW5kIHJldHVybiB0aGUgcmVzdWx0Lg0KPiA+ID4gKw0KPiA+ID4gKyAgICBJZiB0aGUgdmFs dWUgb2YgYmFzZSBpcyB6ZXJvLCB0aGUgZXhwZWN0ZWQgZm9ybSBvZiB0aGUgc3ViamVjdA0KPiA+ ID4gKyBzZXF1ZW5jZQ0KPiA+IGlzDQo+ID4gPiArICAgIHRoYXQgb2YgYW4gaW50ZWdlciBjb25z dGFudCwgb3B0aW9uYWxseSBwcmVjZWRlZA0KPiA+ID4gKyAgICBieSBhIHBsdXMgb3IgbWludXMg c2lnbiwgYnV0IG5vdCBpbmNsdWRpbmcgYW4gaW50ZWdlciBzdWZmaXguIElmIHRoZSB2YWx1ZQ0K PiA+ID4gKyAgICBvZiBiYXNlIGlzIGJldHdlZW4gMiBhbmQgMzYgKGluY2x1c2l2ZSksIHRoZSBl eHBlY3RlZCBmb3JtIG9mDQo+ID4gPiArIHRoZQ0KPiA+IHN1YmplY3QNCj4gPiA+ICsgICAgc2Vx dWVuY2UgaXMgYSBzZXF1ZW5jZSBvZiBsZXR0ZXJzIGFuZCBkaWdpdHMgcmVwcmVzZW50aW5nIGFu DQo+ID4gPiArIGludGVnZXINCj4gPiB3aXRoDQo+ID4gPiArICAgIHRoZSByYWRpeCBzcGVjaWZp ZWQgYnkgYmFzZSwgb3B0aW9uYWxseSBwcmVjZWRlZCBieSBhIHBsdXMgb3IgbWludXMNCj4gc2ln biwNCj4gPiA+ICsgICAgYnV0IG5vdCBpbmNsdWRpbmcgYW4gaW50ZWdlciBzdWZmaXguIFRoZSBs ZXR0ZXJzIGZyb20gYSAob3IgQSkgdGhyb3VnaCB6DQo+ID4gPiArICAgIChvciBaKSBhcmUgYXNj cmliZWQgdGhlIHZhbHVlcyAxMCB0aHJvdWdoIDM1OyBvbmx5IGxldHRlcnMgYW5kDQo+ID4gPiAr IGRpZ2l0cw0KPiA+IHdob3NlDQo+ID4gPiArICAgIGFzY3JpYmVkIHZhbHVlcyBhcmUgbGVzcyB0 aGFuIHRoYXQgb2YgYmFzZSBhcmUgcGVybWl0dGVkLiBJZiB0aGUgdmFsdWUNCj4gb2YNCj4gPiA+ ICsgICAgYmFzZSBpcyAxNiwgdGhlIGNoYXJhY3RlcnMgMHggb3IgMFggbWF5IG9wdGlvbmFsbHkg cHJlY2VkZSB0aGUNCj4gPiA+ICsgc2VxdWVuY2UNCj4gPiBvZg0KPiA+ID4gKyAgICBsZXR0ZXJz IGFuZCBkaWdpdHMsIGZvbGxvd2luZyB0aGUgc2lnbiBpZiBwcmVzZW50Lg0KPiA+ID4gKw0KPiA+ ID4gKyAgICBUaGUgc3ViamVjdCBzZXF1ZW5jZSBpcyBkZWZpbmVkIGFzIHRoZSBsb25nZXN0IGlu aXRpYWwNCj4gPiA+ICsgc3Vic2VxdWVuY2Ugb2YNCj4gPiB0aGUNCj4gPiA+ICsgICAgaW5wdXQg c3RyaW5nLCBzdGFydGluZyB3aXRoIHRoZSBmaXJzdCBub24td2hpdGUtc3BhY2UgY2hhcmFjdGVy LCB0aGF0IGlzDQo+IG9mDQo+ID4gPiArICAgIHRoZSBleHBlY3RlZCBmb3JtLiBUaGUgc3ViamVj dCBzZXF1ZW5jZSBjb250YWlucyBubyBjaGFyYWN0ZXJzDQo+ID4gPiArIGlmIHRoZQ0KPiA+IGlu cHV0DQo+ID4gPiArICAgIHN0cmluZyBpcyBlbXB0eSBvciBjb25zaXN0cyBlbnRpcmVseSBvZiB3 aGl0ZSBzcGFjZSwgb3IgaWYgdGhlIGZpcnN0DQo+ID4gPiArICAgIG5vbi13aGl0ZS1zcGFjZSBj aGFyYWN0ZXIgaXMgb3RoZXIgdGhhbiBhIHNpZ24gb3IgYSBwZXJtaXNzaWJsZQ0KPiA+ID4gKyBs ZXR0ZXIgb3INCj4gPiBkaWdpdC4NCj4gPiA+ICsNCj4gPiA+ICsgICAgSWYgdGhlIHN1YmplY3Qg c2VxdWVuY2UgaGFzIHRoZSBleHBlY3RlZCBmb3JtIGFuZCB0aGUgdmFsdWUgb2YgYmFzZQ0KPiBp cw0KPiA+ID4gKyAgICB6ZXJvLCB0aGUgc2VxdWVuY2Ugb2YgY2hhcmFjdGVycyBzdGFydGluZyB3 aXRoIHRoZSBmaXJzdCBkaWdpdCBpcw0KPiA+ID4gKyAgICBpbnRlcnByZXRlZCBhcyBhbiBpbnRl Z2VyIGNvbnN0YW50LiBJZiB0aGUgc3ViamVjdCBzZXF1ZW5jZSBoYXMgdGhlDQo+ID4gPiArICAg IGV4cGVjdGVkIGZvcm0gYW5kIHRoZSB2YWx1ZSBvZiBiYXNlIGlzIGJldHdlZW4gMiBhbmQgMzYs IGl0IGlzDQo+ID4gPiArIHVzZWQgYXMNCj4gPiB0aGUNCj4gPiA+ICsgICAgYmFzZSBmb3IgY29u dmVyc2lvbiwgYXNjcmliaW5nIHRvIGVhY2ggbGV0dGVyIGl0cyB2YWx1ZSBhcyBnaXZlbiBhYm92 ZS4gSWYNCj4gPiA+ICsgICAgdGhlIHN1YmplY3Qgc2VxdWVuY2UgYmVnaW5zIHdpdGggYSBtaW51 cyBzaWduLCB0aGUgdmFsdWUNCj4gPiA+ICsgcmVzdWx0aW5nIGZyb20NCj4gPiB0aGUNCj4gPiA+ ICsgICAgY29udmVyc2lvbiBpcyBuZWdhdGVkIChpbiB0aGUgcmV0dXJuIHR5cGUpLiBBIHBvaW50 ZXIgdG8gdGhlIGZpbmFsIHN0cmluZw0KPiA+ID4gKyAgICBpcyBzdG9yZWQgaW4gdGhlIG9iamVj dCBwb2ludGVkIHRvIGJ5IGVuZHB0ciwgcHJvdmlkZWQgdGhhdCBlbmRwdHIgaXMNCj4gPiA+ICsg ICAgbm90IGEgbnVsbCBwb2ludGVyLg0KPiA+ID4gKw0KPiA+ID4gKyAgICBJbiBvdGhlciB0aGFu IHRoZSAiQyIgbG9jYWxlLCBhZGRpdGlvbmFsIGxvY2FsZS1zcGVjaWZpYyBzdWJqZWN0DQo+IHNl cXVlbmNlDQo+ID4gPiArICAgIGZvcm1zIG1heSBiZSBhY2NlcHRlZC4NCj4gPiA+ICsNCj4gPiA+ ICsgICAgSWYgdGhlIHN1YmplY3Qgc2VxdWVuY2UgaXMgZW1wdHkgb3IgZG9lcyBub3QgaGF2ZSB0 aGUgZXhwZWN0ZWQNCj4gPiA+ICsgZm9ybSwNCj4gPiBubw0KPiA+ID4gKyAgICBjb252ZXJzaW9u IGlzIHBlcmZvcm1lZDsgdGhlIHZhbHVlIG9mIG5wdHIgaXMgc3RvcmVkIGluIHRoZQ0KPiA+ID4g KyBvYmplY3QNCj4gPiBwb2ludGVkDQo+ID4gPiArICAgIHRvIGJ5IGVuZHB0ciwgcHJvdmlkZWQg dGhhdCBlbmRwdHIgaXMgbm90IGEgbnVsbCBwb2ludGVyLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJl dHVybiAgIFRoZSBzdHJ0b2wsIHN0cnRvbGwsIHN0cnRvdWwsIGFuZCBzdHJ0b3VsbCBmdW5jdGlv bnMgcmV0dXJuIHRoZQ0KPiA+ID4gKyAgICAgICAgICAgIGNvbnZlcnRlZCB2YWx1ZSwgaWYgYW55 LiBJZiBubyBjb252ZXJzaW9uIGNvdWxkIGJlIHBlcmZvcm1lZCwgemVybw0KPiA+ID4gKyAgICAg ICAgICAgIGlzIHJldHVybmVkLiBJZiB0aGUgY29ycmVjdCB2YWx1ZSBpcyBvdXRzaWRlIHRoZSBy YW5nZSBvZg0KPiA+ID4gKyAgICAgICAgICAgIHJlcHJlc2VudGFibGUgdmFsdWVzLCBMT05HX01J TiwgTE9OR19NQVgsIExMT05HX01JTiwNCj4gPiBMTE9OR19NQVgsDQo+ID4gPiArICAgICAgICAg ICAgVUxPTkdfTUFYLCBvciBVTExPTkdfTUFYIGlzIHJldHVybmVkIChhY2NvcmRpbmcgdG8gdGhl DQo+ID4gPiArIHJldHVybg0KPiA+IHR5cGUNCj4gPiA+ICsgICAgICAgICAgICBhbmQgc2lnbiBv ZiB0aGUgdmFsdWUsIGlmIGFueSksIGFuZCB0aGUgdmFsdWUgb2YgdGhlIG1hY3JvIEVSQU5HRQ0K PiA+ID4gKyAgICAgICAgICAgIGlzIHN0b3JlZCBpbiBlcnJuby4NCj4gPiA+ICsqKi8NCj4gPiA+ ICtsb25nDQo+ID4gPiArc3RydG9sKGNvbnN0IGNoYXIgKiBucHRyLCBjaGFyICoqIGVuZHB0ciwg aW50IGJhc2UpIHsNCj4gPiA+ICsgIGNvbnN0IGNoYXIgKnBFbmQ7DQo+ID4gPiArICBsb25nICAg ICAgICBSZXN1bHQgPSAwOw0KPiA+ID4gKyAgbG9uZyAgICAgICAgUHJldmlvdXM7DQo+ID4gPiAr ICBpbnQgICAgICAgICB0ZW1wOw0KPiA+ID4gKyAgQk9PTEVBTiAgICAgTmVnYXRpdmUgPSBGQUxT RTsNCj4gPiA+ICsNCj4gPiA+ICsgIHBFbmQgPSBucHRyOw0KPiA+ID4gKw0KPiA+ID4gKyAgaWYo KGJhc2UgPCAwKSB8fCAoYmFzZSA9PSAxKSB8fCAoYmFzZSA+IDM2KSkgew0KPiA+ID4gKyAgICBp ZihlbmRwdHIgIT0gTlVMTCkgew0KPiA+ID4gKyAgICAqZW5kcHRyID0gTlVMTDsNCj4gPiA+ICsg ICAgfQ0KPiA+ID4gKyAgICByZXR1cm4gMDsNCj4gPiA+ICsgIH0NCj4gPiA+ICsgIC8vIFNraXAg bGVhZGluZyBzcGFjZXMuDQo+ID4gPiArICB3aGlsZShpc3NwYWNlKCpucHRyKSkgICArK25wdHI7 DQo+ID4gPiArDQo+ID4gPiArICAvLyBQcm9jZXNzIFN1YmplY3Qgc2VxdWVuY2U6IG9wdGlvbmFs IHNpZ24gZm9sbG93ZWQgYnkgZGlnaXRzLg0KPiA+ID4gKyAgaWYoKm5wdHIgPT0gJysnKSB7DQo+ ID4gPiArICAgIE5lZ2F0aXZlID0gRkFMU0U7DQo+ID4gPiArICAgICsrbnB0cjsNCj4gPiA+ICsg IH0NCj4gPiA+ICsgIGVsc2UgaWYoKm5wdHIgPT0gJy0nKSB7DQo+ID4gPiArICAgIE5lZ2F0aXZl ID0gVFJVRTsNCj4gPiA+ICsgICAgKytucHRyOw0KPiA+ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ID4g KyAgaWYoKm5wdHIgPT0gJzAnKSB7ICAvKiBNaWdodCBiZSBPY3RhbCBvciBIZXggKi8NCj4gPiA+ ICsgICAgaWYodG91cHBlcihucHRyWzFdKSA9PSAnWCcpIHsgICAvKiBMb29rcyBsaWtlIEhleCAq Lw0KPiA+ID4gKyAgICAgIGlmKChiYXNlID09IDApIHx8IChiYXNlID09IDE2KSkgew0KPiA+ID4g KyAgICAgICAgbnB0ciArPSAyOyAgLyogU2tpcCB0aGUgIjBYIiAgICAgICovDQo+ID4gPiArICAg ICAgICBiYXNlID0gMTY7ICAvKiBJbiBjYXNlIGJhc2Ugd2FzIDAgKi8NCj4gPiA+ICsgICAgICB9 DQo+ID4gPiArICAgIH0NCj4gPiA+ICsgICAgZWxzZSB7ICAgIC8qIExvb2tzIGxpa2UgT2N0YWwg Ki8NCj4gPiA+ICsgICAgICBpZigoYmFzZSA9PSAwKSB8fCAoYmFzZSA9PSA4KSkgew0KPiA+ID4g KyAgICAgICAgKytucHRyOyAgICAgLyogU2tpcCB0aGUgbGVhZGluZyAiMCIgKi8NCj4gPiA+ICsg ICAgICAgIGJhc2UgPSA4OyAgIC8qIEluIGNhc2UgYmFzZSB3YXMgMCAgICovDQo+ID4gPiArICAg ICAgfQ0KPiA+ID4gKyAgICB9DQo+ID4gPiArICB9DQo+ID4gPiArICBpZihiYXNlID09IDApIHsg ICAvKiBJZiBzdGlsbCB6ZXJvIHRoZW4gbXVzdCBiZSBkZWNpbWFsICovDQo+ID4gPiArICAgIGJh c2UgPSAxMDsNCj4gPiA+ICsgIH0NCj4gPiA+ICsgIGlmKCpucHRyICA9PSAnMCcpIHsNCj4gPiA+ ICsgICAgZm9yKCA7ICpucHRyID09ICcwJzsgKytucHRyKTsgIC8qIFNraXAgYW55IHJlbWFpbmlu ZyBsZWFkaW5nIHplcm9zICovDQo+ID4gPiArICAgIHBFbmQgPSBucHRyOw0KPiA+ID4gKyAgfQ0K PiA+ID4gKw0KPiA+ID4gKyAgd2hpbGUoIGlzYWxudW0oKm5wdHIpICYmICgodGVtcCA9IERpZ2l0 MlZhbCgqbnB0cikpIDwgYmFzZSkpIHsNCj4gPiA+ICsgICAgUHJldmlvdXMgPSBSZXN1bHQ7DQo+ ID4gPiArICAgIFJlc3VsdCA9IChSZXN1bHQgKiBiYXNlKSArIChsb25nIGludCl0ZW1wOw0KPiA+ ID4gKyAgICBpZiggUmVzdWx0IDw9IFByZXZpb3VzKSB7ICAgLy8gRGV0ZWN0IE92ZXJmbG93DQo+ ID4gPiArICAgICAgaWYoTmVnYXRpdmUpIHsNCj4gPiA+ICsgICAgICAgIFJlc3VsdCA9IExPTkdf TUlOOw0KPiA+ID4gKyAgICAgIH0NCj4gPiA+ICsgICAgICBlbHNlIHsNCj4gPiA+ICsgICAgICAg IFJlc3VsdCA9IExPTkdfTUFYOw0KPiA+ID4gKyAgICAgIH0NCj4gPiA+ICsgICAgICBOZWdhdGl2 ZSA9IEZBTFNFOw0KPiA+ID4gKyAgICAgIGVycm5vID0gRVJBTkdFOw0KPiA+ID4gKyAgICAgIGJy ZWFrOw0KPiA+ID4gKyAgICB9DQo+ID4gPiArICAgIHBFbmQgPSArK25wdHI7DQo+ID4gPiArICB9 DQo+ID4gPiArICBpZihOZWdhdGl2ZSkgew0KPiA+ID4gKyAgICBSZXN1bHQgPSAtUmVzdWx0Ow0K PiA+ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAgLy8gU2F2ZSBwb2ludGVyIHRvIGZpbmFsIHNl cXVlbmNlDQo+ID4gPiArICBpZihlbmRwdHIgIT0gTlVMTCkgew0KPiA+ID4gKyAgICAqZW5kcHRy ID0gKGNoYXIgKilwRW5kOw0KPiA+ID4gKyAgfQ0KPiA+ID4gKyAgcmV0dXJuIFJlc3VsdDsNCj4g PiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqIFRoZSBzdHJ0b3VsbCBmdW5jdGlvbiBjb252ZXJ0 cyB0aGUgaW5pdGlhbCBwb3J0aW9uIG9mIHRoZQ0KPiA+ID4gK3N0cmluZyBwb2ludGVkDQo+ID4g dG8NCj4gPiA+ICsgICAgYnkgbnB0ciB0byB1bnNpZ25lZCBsb25nIGxvbmcgaW50IHJlcHJlc2Vu dGF0aW9uLg0KPiA+ID4gKw0KPiA+ID4gKyAgICBTZWUgdGhlIGRlc2NyaXB0aW9uIGZvciBzdHJ0 b2wgZm9yIG1vcmUgaW5mb3JtYXRpb24uDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dXJuICAgVGhl IHN0cnRvdWxsIGZ1bmN0aW9uIHJldHVybnMgdGhlIGNvbnZlcnRlZCB2YWx1ZSwgaWYgYW55LiBJ ZiBubw0KPiA+ID4gKyAgICAgICAgICAgIGNvbnZlcnNpb24gY291bGQgYmUgcGVyZm9ybWVkLCB6 ZXJvIGlzIHJldHVybmVkLiBJZiB0aGUgY29ycmVjdA0KPiA+ID4gKyAgICAgICAgICAgIHZhbHVl IGlzIG91dHNpZGUgdGhlIHJhbmdlIG9mIHJlcHJlc2VudGFibGUgdmFsdWVzLCBVTExPTkdfTUFY DQo+IGlzDQo+ID4gPiArICAgICAgICAgICAgcmV0dXJuZWQgYW5kIHRoZSB2YWx1ZSBvZiB0aGUg bWFjcm8gRVJBTkdFIGlzIHN0b3JlZCBpbiBlcnJuby4NCj4gPiA+ICsqKi8NCj4gPiA+ICt1bnNp Z25lZCBsb25nIGxvbmcNCj4gPiA+ICtzdHJ0b3VsbChjb25zdCBjaGFyICogbnB0ciwgY2hhciAq KiBlbmRwdHIsIGludCBiYXNlKSB7DQo+ID4gPiArICBjb25zdCBjaGFyICAgICAgICAgICAqcEVu ZDsNCj4gPiA+ICsgIHVuc2lnbmVkIGxvbmcgbG9uZyAgICBSZXN1bHQgPSAwOw0KPiA+ID4gKyAg dW5zaWduZWQgbG9uZyBsb25nICAgIFByZXZpb3VzOw0KPiA+ID4gKyAgaW50ICAgICAgICAgICAg ICAgICAgIHRlbXA7DQo+ID4gPiArDQo+ID4gPiArICBwRW5kID0gbnB0cjsNCj4gPiA+ICsNCj4g PiA+ICsgIGlmKChiYXNlIDwgMCkgfHwgKGJhc2UgPT0gMSkgfHwgKGJhc2UgPiAzNikpIHsNCj4g PiA+ICsgICAgaWYoZW5kcHRyICE9IE5VTEwpIHsNCj4gPiA+ICsgICAgKmVuZHB0ciA9IE5VTEw7 DQo+ID4gPiArICAgIH0NCj4gPiA+ICsgICAgcmV0dXJuIDA7DQo+ID4gPiArICB9DQo+ID4gPiAr ICAvLyBTa2lwIGxlYWRpbmcgc3BhY2VzLg0KPiA+ID4gKyAgd2hpbGUoaXNzcGFjZSgqbnB0cikp ICAgKytucHRyOw0KPiA+ID4gKw0KPiA+ID4gKyAgLy8gUHJvY2VzcyBTdWJqZWN0IHNlcXVlbmNl OiBvcHRpb25hbCArIHNpZ24gZm9sbG93ZWQgYnkgZGlnaXRzLg0KPiA+ID4gKyAgaWYoKm5wdHIg PT0gJysnKSB7DQo+ID4gPiArICAgICsrbnB0cjsNCj4gPiA+ICsgIH0NCj4gPiA+ICsNCj4gPiA+ ICsgIGlmKCpucHRyID09ICcwJykgeyAgLyogTWlnaHQgYmUgT2N0YWwgb3IgSGV4ICovDQo+ID4g PiArICAgIGlmKHRvdXBwZXIobnB0clsxXSkgPT0gJ1gnKSB7ICAgLyogTG9va3MgbGlrZSBIZXgg Ki8NCj4gPiA+ICsgICAgICBpZigoYmFzZSA9PSAwKSB8fCAoYmFzZSA9PSAxNikpIHsNCj4gPiA+ ICsgICAgICAgIG5wdHIgKz0gMjsgIC8qIFNraXAgdGhlICIwWCIgICAgICAqLw0KPiA+ID4gKyAg ICAgICAgYmFzZSA9IDE2OyAgLyogSW4gY2FzZSBiYXNlIHdhcyAwICovDQo+ID4gPiArICAgICAg fQ0KPiA+ID4gKyAgICB9DQo+ID4gPiArICAgIGVsc2UgeyAgICAvKiBMb29rcyBsaWtlIE9jdGFs ICovDQo+ID4gPiArICAgICAgaWYoKGJhc2UgPT0gMCkgfHwgKGJhc2UgPT0gOCkpIHsNCj4gPiA+ ICsgICAgICAgICsrbnB0cjsgICAgIC8qIFNraXAgdGhlIGxlYWRpbmcgIjAiICovDQo+ID4gPiAr ICAgICAgICBiYXNlID0gODsgICAvKiBJbiBjYXNlIGJhc2Ugd2FzIDAgICAqLw0KPiA+ID4gKyAg ICAgIH0NCj4gPiA+ICsgICAgfQ0KPiA+ID4gKyAgfQ0KPiA+ID4gKyAgaWYoYmFzZSA9PSAwKSB7 ICAgLyogSWYgc3RpbGwgemVybyB0aGVuIG11c3QgYmUgZGVjaW1hbCAqLw0KPiA+ID4gKyAgICBi YXNlID0gMTA7DQo+ID4gPiArICB9DQo+ID4gPiArICBpZigqbnB0ciAgPT0gJzAnKSB7DQo+ID4g PiArICAgIGZvciggOyAqbnB0ciA9PSAnMCc7ICsrbnB0cik7ICAvKiBTa2lwIGFueSByZW1haW5p bmcgbGVhZGluZyB6ZXJvcyAqLw0KPiA+ID4gKyAgICBwRW5kID0gbnB0cjsNCj4gPiA+ICsgIH0N Cj4gPiA+ICsNCj4gPiA+ICsgIHdoaWxlKCBpc2FsbnVtKCpucHRyKSAmJiAoKHRlbXAgPSBEaWdp dDJWYWwoKm5wdHIpKSA8IGJhc2UpKSB7DQo+ID4gPiArICAgIFByZXZpb3VzID0gUmVzdWx0Ow0K PiA+ID4gKyAgICBSZXN1bHQgPSBEaXZVNjR4MzIgKFJlc3VsdCwgYmFzZSkgKyAodW5zaWduZWQg bG9uZyBsb25nKXRlbXA7DQo+ID4gPiArICAgIGlmKCBSZXN1bHQgPCBQcmV2aW91cykgIHsgICAv LyBJZiB3ZSBvdmVyZmxvd2VkDQo+ID4gPiArICAgICAgUmVzdWx0ID0gVUxMT05HX01BWDsNCj4g PiA+ICsgICAgICBlcnJubyA9IEVSQU5HRTsNCj4gPiA+ICsgICAgICBicmVhazsNCj4gPiA+ICsg ICAgfQ0KPiA+ID4gKyAgICBwRW5kID0gKytucHRyOw0KPiA+ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ ID4gKyAgLy8gU2F2ZSBwb2ludGVyIHRvIGZpbmFsIHNlcXVlbmNlDQo+ID4gPiArICBpZihlbmRw dHIgIT0gTlVMTCkgew0KPiA+ID4gKyAgICAqZW5kcHRyID0gKGNoYXIgKilwRW5kOw0KPiA+ID4g KyAgfQ0KPiA+ID4gKyAgcmV0dXJuIFJlc3VsdDsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiAr LyoqDQo+ID4gPiArICBlZGsyIEphbnNzb24gcG9ydCBkb2VzIG5vdCBzdXBwb3J0IGRvdWJsZXMs IHNpbXBseSByZXR1cm4gMC4NCj4gPiA+ICsNCj4gPiA+ICsgIFRoZXNlIGNvbnZlcnNpb24gZnVu Y3Rpb25zIGNvbnZlcnQgdGhlIGluaXRpYWwgcG9ydGlvbiBvZiB0aGUNCj4gPiA+ICsgc3RyaW5n ICBwb2ludGVkIHRvIGJ5IG5wdHIgdG8gZG91YmxlLCBmbG9hdCwgYW5kIGxvbmcgZG91YmxlDQo+ ID4gPiArIHJlcHJlc2VudGF0aW9uLCAgcmVzcGVjdGl2ZWx5Lg0KPiA+ID4gKw0KPiA+ID4gKyAg VGhlIHN0cnRvZCgpLCBzdHJ0b2YoKSwgYW5kIHN0cnRvbGQoKSBmdW5jdGlvbnMgcmV0dXJuIHRo ZQ0KPiA+ID4gKyBjb252ZXJ0ZWQgIHZhbHVlLCBpZiBhbnkuDQo+ID4gPiArDQo+ID4gPiArICBJ ZiBlbmRwdHIgaXMgbm90IE5VTEwsIGEgcG9pbnRlciB0byB0aGUgY2hhcmFjdGVyIGFmdGVyIHRo ZSBsYXN0DQo+ID4gPiArIGNoYXJhYy0gIHRlciB1c2VkIGluIHRoZSBjb252ZXJzaW9uIGlzIHN0 b3JlZCBpbiB0aGUgbG9jYXRpb24NCj4gPiA+ICsgcmVmZXJlbmNlZCBieSAgZW5kcHRyLg0KPiA+ ID4gKw0KPiA+ID4gKyAgSWYgbm8gY29udmVyc2lvbiBpcyBwZXJmb3JtZWQsIHplcm8gaXMgcmV0 dXJuZWQgYW5kIHRoZSB2YWx1ZSBvZg0KPiA+ID4gKyBucHRyIGlzICBzdG9yZWQgaW4gdGhlIGxv Y2F0aW9uIHJlZmVyZW5jZWQgYnkgZW5kcHRyLg0KPiA+ID4gKw0KPiA+ID4gKyAgSWYgdGhlIGNv cnJlY3QgdmFsdWUgd291bGQgY2F1c2Ugb3ZlcmZsb3csIHBsdXMgb3IgbWludXMNCj4gPiA+ICsg SFVHRV9WQUwsIEhVR0VfVkFMRiwgb3IgSFVHRV9WQUxMIGlzIHJldHVybmVkIChhY2NvcmRpbmcg dG8gdGhlDQo+ID4gPiArIHNpZ24gYW5kIHR5cGUgb2YgIHRoZSByZXR1cm4gdmFsdWUpLCBhbmQg RVJBTkdFIGlzIHN0b3JlZCBpbg0KPiA+ID4gKyBlcnJuby4gIElmIHRoZSBjb3JyZWN0IHZhbHVl ICB3b3VsZCBjYXVzZSB1bmRlcmZsb3csIHplcm8gaXMNCj4gPiA+ICsgcmV0dXJuZWQgYW5kIEVS QU5HRSBpcw0KPiA+IHN0b3JlZCBpbiBlcnJuby4NCj4gPiA+ICsNCj4gPiA+ICsgIEByZXR1cm4g IFJldHVybiAwLg0KPiA+ID4gKyoqLw0KPiA+ID4gK2RvdWJsZQ0KPiA+ID4gK3N0cnRvZCAoY29u c3QgY2hhciAqIF9fcmVzdHJpY3QgbnB0ciwgY2hhciAqKiBfX3Jlc3RyaWN0IGVuZHB0cikgew0K PiA+ID4gKyAgICBpZihlbmRwdHIpDQo+ID4gPiArICAgICAgKmVuZHB0ciA9IChjaGFyICopKG5w dHIgKyBzdHJsZW4obnB0cikpOw0KPiA+ID4gKw0KPiA+ID4gKyAgICByZXR1cm4gKGRvdWJsZSkw Ow0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIEFsbG9jYXRlIGFuZCB6 ZXJvLWluaXRpYWxpemUgYXJyYXkuDQo+ID4gPiArKiovDQo+ID4gPiArdm9pZCAqDQo+ID4gPiAr Y2FsbG9jKHNpemVfdCBOdW0sIHNpemVfdCBTaXplKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIHZvaWQg ICAgICAgKlJldFZhbDsNCj4gPiA+ICsgIHNpemVfdCAgICAgIE51bVNpemU7DQo+ID4gPiArDQo+ ID4gPiArICBOdW1TaXplID0gTnVtICogU2l6ZTsNCj4gPiA+ICsgIFJldFZhbCAgPSBOVUxMOw0K PiA+ID4gKyAgaWYgKE51bVNpemUgIT0gMCkgew0KPiA+ID4gKyAgUmV0VmFsID0gbWFsbG9jKE51 bVNpemUpOw0KPiA+ID4gKyAgaWYoIFJldFZhbCAhPSBOVUxMKSB7DQo+ID4gPiArICAgIChWT0lE KVplcm9NZW0oIFJldFZhbCwgTnVtU2l6ZSk7ICB9ICB9ICBERUJVRygoREVCVUdfUE9PTCwNCj4g PiA+ICsgIjB4JXAgPSBjYWxsb2MoJWQsICVkKVxuIiwgUmV0VmFsLCBOdW0sIFNpemUpKTsNCj4g PiA+ICsNCj4gPiA+ICsgIHJldHVybiBSZXRWYWw7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4g Ky8vDQo+ID4gPiArLy8gIFRoZSBhcnJheXMgZ2l2ZSB0aGUgY3VtdWxhdGl2ZSBudW1iZXIgb2Yg ZGF5cyB1cCB0byB0aGUgZmlyc3QNCj4gPiA+ICtvZiB0aGUgLy8gIG1vbnRoIG51bWJlciB1c2Vk IGFzIHRoZSBpbmRleCAoMSAtPiAxMikgZm9yIHJlZ3VsYXIgYW5kDQo+ID4gPiArbGVhcA0KPiA+ IHllYXJzLg0KPiA+ID4gKy8vICBUaGUgdmFsdWUgYXQgaW5kZXggMTMgaXMgZm9yIHRoZSB3aG9s ZSB5ZWFyLg0KPiA+ID4gKy8vDQo+ID4gPiArVUlOVE4gQ3VtdWxhdGl2ZURheXNbMl1bMTRdID0g ew0KPiA+ID4gKyAgew0KPiA+ID4gKyAgICAwLA0KPiA+ID4gKyAgICAwLA0KPiA+ID4gKyAgICAz MSwNCj4gPiA+ICsgICAgMzEgKyAyOCwNCj4gPiA+ICsgICAgMzEgKyAyOCArIDMxLA0KPiA+ID4g KyAgICAzMSArIDI4ICsgMzEgKyAzMCwNCj4gPiA+ICsgICAgMzEgKyAyOCArIDMxICsgMzAgKyAz MSwNCj4gPiA+ICsgICAgMzEgKyAyOCArIDMxICsgMzAgKyAzMSArIDMwLA0KPiA+ID4gKyAgICAz MSArIDI4ICsgMzEgKyAzMCArIDMxICsgMzAgKyAzMSwNCj4gPiA+ICsgICAgMzEgKyAyOCArIDMx ICsgMzAgKyAzMSArIDMwICsgMzEgKyAzMSwNCj4gPiA+ICsgICAgMzEgKyAyOCArIDMxICsgMzAg KyAzMSArIDMwICsgMzEgKyAzMSArIDMwLA0KPiA+ID4gKyAgICAzMSArIDI4ICsgMzEgKyAzMCAr IDMxICsgMzAgKyAzMSArIDMxICsgMzAgKyAzMSwNCj4gPiA+ICsgICAgMzEgKyAyOCArIDMxICsg MzAgKyAzMSArIDMwICsgMzEgKyAzMSArIDMwICsgMzEgKyAzMCwNCj4gPiA+ICsgICAgMzEgKyAy OCArIDMxICsgMzAgKyAzMSArIDMwICsgMzEgKyAzMSArIDMwICsgMzEgKyAzMCArIDMxDQo+ID4g PiArICB9LA0KPiA+ID4gKyAgew0KPiA+ID4gKyAgICAwLA0KPiA+ID4gKyAgICAwLA0KPiA+ID4g KyAgICAzMSwNCj4gPiA+ICsgICAgMzEgKyAyOSwNCj4gPiA+ICsgICAgMzEgKyAyOSArIDMxLA0K PiA+ID4gKyAgICAzMSArIDI5ICsgMzEgKyAzMCwNCj4gPiA+ICsgICAgMzEgKyAyOSArIDMxICsg MzAgKyAzMSwNCj4gPiA+ICsgICAgMzEgKyAyOSArIDMxICsgMzAgKyAzMSArIDMwLA0KPiA+ID4g KyAgICAzMSArIDI5ICsgMzEgKyAzMCArIDMxICsgMzAgKyAzMSwNCj4gPiA+ICsgICAgMzEgKyAy OSArIDMxICsgMzAgKyAzMSArIDMwICsgMzEgKyAzMSwNCj4gPiA+ICsgICAgMzEgKyAyOSArIDMx ICsgMzAgKyAzMSArIDMwICsgMzEgKyAzMSArIDMwLA0KPiA+ID4gKyAgICAzMSArIDI5ICsgMzEg KyAzMCArIDMxICsgMzAgKyAzMSArIDMxICsgMzAgKyAzMSwNCj4gPiA+ICsgICAgMzEgKyAyOSAr IDMxICsgMzAgKyAzMSArIDMwICsgMzEgKyAzMSArIDMwICsgMzEgKyAzMCwNCj4gPiA+ICsgICAg MzEgKyAyOSArIDMxICsgMzAgKyAzMSArIDMwICsgMzEgKyAzMSArIDMwICsgMzEgKyAzMCArIDMx DQo+ID4gPiArICB9DQo+ID4gPiArfTsNCj4gPiA+ICsNCj4gPiA+ICsjZGVmaW5lIElzTGVhcCh5 KSAgICgoKHkpICUgNCkgPT0gMCAmJiAoKCh5KSAlIDEwMCkgIT0gMCB8fCAoKHkpICUgNDAwKSA9 PQ0KPiAwKSkNCj4gPiA+ICsjZGVmaW5lIFNFQ1NQRVJNSU4gICg2MCkNCj4gPiA+ICsjZGVmaW5l IFNFQ1NQRVJIT1VSICg2MCAqIDYwKQ0KPiA+ID4gKyNkZWZpbmUgU0VDU1BFUkRBWSAgKDI0ICog U0VDU1BFUkhPVVIpDQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBHZXQgdGhlIHN5c3Rl bSB0aW1lIGFzIHNlY29uZHMgZWxhcHNlZCBzaW5jZSBtaWRuaWdodCwgSmFudWFyeSAxLA0KPiAx OTcwLg0KPiA+ID4gKyoqLw0KPiA+ID4gK3RpbWVfdCB0aW1lICh0aW1lX3QgKnRpbWVyKQ0KPiA+ ID4gK3sNCj4gPiA+ICsgIEVGSV9USU1FICBUaW1lOw0KPiA+ID4gKyAgdGltZV90ICAgIENhbFRp bWU7DQo+ID4gPiArICBVSU5UTiAgICAgWWVhcjsNCj4gPiA+ICsNCj4gPiA+ICsgIC8vDQo+ID4g PiArICAvLyBHZXQgdGhlIGN1cnJlbnQgdGltZSBhbmQgZGF0ZSBpbmZvcm1hdGlvbiAgLy8gIGdS VC0+R2V0VGltZQ0KPiA+ID4gKyAoJlRpbWUsIE5VTEwpOw0KPiA+ID4gKw0KPiA+ID4gKyAgLy8N Cj4gPiA+ICsgIC8vIFllYXJzIEhhbmRsaW5nDQo+ID4gPiArICAvLyBVVGltZSBzaG91bGQgbm93 IGJlIHNldCB0byAwMDowMDowMCBvbiBKYW4gMSBvZiB0aGUgY3VycmVudCB5ZWFyLg0KPiA+ID4g KyAgLy8NCj4gPiA+ICsgIGZvciAoWWVhciA9IDE5NzAsIENhbFRpbWUgPSAwOyBZZWFyICE9IFRp bWUuWWVhcjsgWWVhcisrKSB7DQo+ID4gPiArICAgIENhbFRpbWUgPSBDYWxUaW1lICsgKHRpbWVf dCkoQ3VtdWxhdGl2ZURheXNbSXNMZWFwKFllYXIpXVsxM10gKg0KPiA+ID4gKyBTRUNTUEVSREFZ KTsgIH0NCj4gPiA+ICsNCj4gPiA+ICsgIC8vDQo+ID4gPiArICAvLyBBZGQgaW4gbnVtYmVyIG9m IHNlY29uZHMgZm9yIGN1cnJlbnQgTW9udGgsIERheSwgSG91ciwgTWludXRlLA0KPiA+ID4gKyBT ZWNvbmRzLCBhbmQgVGltZVpvbmUgYWRqdXN0bWVudCAgLy8gIENhbFRpbWUgPSBDYWxUaW1lICsN Cj4gPiA+ICsgICAgICAgICAgICAodGltZV90KSgoVGltZS5UaW1lWm9uZSAhPSBFRklfVU5TUEVD SUZJRURfVElNRVpPTkUpID8NCj4gPiAoVGltZS5UaW1lWm9uZSAqIDYwKSA6IDApICsNCj4gPiA+ ICsgICAgICAgICAgICAodGltZV90KShDdW11bGF0aXZlRGF5c1tJc0xlYXAoVGltZS5ZZWFyKV1b VGltZS5Nb250aF0NCj4gPiA+ICsgKg0KPiA+IFNFQ1NQRVJEQVkpICsNCj4gPiA+ICsgICAgICAg ICAgICAodGltZV90KSgoKFRpbWUuRGF5ID4gMCkgPyBUaW1lLkRheSAtIDEgOiAwKSAqIFNFQ1NQ RVJEQVkpICsNCj4gPiA+ICsgICAgICAgICAgICAodGltZV90KShUaW1lLkhvdXIgKiBTRUNTUEVS SE9VUikgKw0KPiA+ID4gKyAgICAgICAgICAgICh0aW1lX3QpKFRpbWUuTWludXRlICogNjApICsN Cj4gPiA+ICsgICAgICAgICAgICAodGltZV90KVRpbWUuU2Vjb25kOw0KPiA+ID4gKw0KPiA+ID4g KyAgaWYgKHRpbWVyICE9IE5VTEwpIHsNCj4gPiA+ICsgICAgKnRpbWVyID0gQ2FsVGltZTsNCj4g PiA+ICsgIH0NCj4gPiA+ICsNCj4gPiA+ICsgIHJldHVybiBDYWxUaW1lOw0KPiA+ID4gK30NCj4g PiA+ICsNCj4gPiA+ICt0eXBlZGVmDQo+ID4gPiAraW50DQo+ID4gPiArKCpTT1JUX0NPTVBBUkUp KA0KPiA+ID4gKyAgSU4gIFZPSUQgICpCdWZmZXIxLA0KPiA+ID4gKyAgSU4gIFZPSUQgICpCdWZm ZXIyDQo+ID4gPiArICApOw0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgRHVwbGljYXRl ZCBmcm9tIEVES0lJIEJhc2VTb3J0TGliIGZvciBxc29ydCgpIHdyYXBwZXINCj4gPiA+ICsgIEBw YXJhbVtpbiwgb3V0XSBCdWZmZXJUb1NvcnQgICBvbiBjYWxsIGEgQnVmZmVyIG9mIChwb3NzaWJs eSBzb3J0ZWQpDQo+ID4gZWxlbWVudHMNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBvbiByZXR1cm4gYSBidWZmZXIgb2Ygc29ydGVkIGVsZW1lbnRzDQo+ID4gPiArICBA cGFyYW1baW5dIENvdW50ICAgICAgICAgICAgICAgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0 aGUgYnVmZmVyIHRvIHNvcnQNCj4gPiA+ICsgIEBwYXJhbVtpbl0gRWxlbWVudFNpemUgICAgICAg ICBTaXplIG9mIGFuIGVsZW1lbnQgaW4gYnl0ZXMNCj4gPiA+ICsgIEBwYXJhbVtpbl0gQ29tcGFy ZUZ1bmN0aW9uICAgICBUaGUgZnVuY3Rpb24gdG8gY2FsbCB0byBwZXJmb3JtIHRoZQ0KPiA+IGNv bXBhcmlzb24NCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiBhbnkg MiBlbGVtZW50cw0KPiA+ID4gKyAgQHBhcmFtW2luXSBCdWZmZXIgICAgICAgICAgICAgIEJ1ZmZl ciBvZiBzaXplIEVsZW1lbnRTaXplIGZvciB1c2UgaW4NCj4gc3dhcHBpbmcNCj4gPiA+ICsqKi8N Cj4gPiA+ICtTVEFUSUMNCj4gPiA+ICtWT0lEDQo+ID4gPiArUXVpY2tTb3J0V29ya2VyICgNCj4g PiA+ICsgIElOIE9VVCAgICBWT0lEICAgICAgICAgICpCdWZmZXJUb1NvcnQsDQo+ID4gPiArICBJ TiBDT05TVCAgVUlOVE4gICAgICAgICBDb3VudCwNCj4gPiA+ICsgIElOIENPTlNUICBVSU5UTiAg ICAgICAgIEVsZW1lbnRTaXplLA0KPiA+ID4gKyAgSU4gICAgICAgIFNPUlRfQ09NUEFSRSAgQ29t cGFyZUZ1bmN0aW9uLA0KPiA+ID4gKyAgSU4gICAgICAgIFZPSUQgICAgICAgICAgKkJ1ZmZlcg0K PiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIFZPSUQgICAgICAgICpQaXZvdDsNCj4gPiA+ ICsgIFVJTlROICAgICAgIExvb3BDb3VudDsNCj4gPiA+ICsgIFVJTlROICAgICAgIE5leHRTd2Fw TG9jYXRpb247DQo+ID4gPiArDQo+ID4gPiArICBBU1NFUlQoQnVmZmVyVG9Tb3J0ICAgICE9IE5V TEwpOw0KPiA+ID4gKyAgQVNTRVJUKENvbXBhcmVGdW5jdGlvbiAhPSBOVUxMKTsNCj4gPiA+ICsg IEFTU0VSVChCdWZmZXIgICAgICAgICAgIT0gTlVMTCk7DQo+ID4gPiArDQo+ID4gPiArICBpZiAo Q291bnQgPCAyIHx8IEVsZW1lbnRTaXplICA8IDEpIHsNCj4gPiA+ICsgICAgcmV0dXJuOw0KPiA+ ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAgTmV4dFN3YXBMb2NhdGlvbiA9IDA7DQo+ID4gPiAr DQo+ID4gPiArICAvLw0KPiA+ID4gKyAgLy8gUGljayBhIHBpdm90ICh3ZSBjaG9vc2UgbGFzdCBl bGVtZW50KSAgLy8gIFBpdm90ID0gKChVSU5UOA0KPiA+ID4gKyAqKUJ1ZmZlclRvU29ydCArICgo Q291bnQgLSAxKSAqIEVsZW1lbnRTaXplKSk7DQo+ID4gPiArDQo+ID4gPiArICAvLw0KPiA+ID4g KyAgLy8gTm93IGdldCB0aGUgcGl2b3Qgc3VjaCB0aGF0IGFsbCBvbiAibGVmdCIgYXJlIGJlbG93 IGl0ICAvLyBhbmQNCj4gPiA+ICsgZXZlcnl0aGluZyAicmlnaHQiIGFyZSBhYm92ZSBpdCAgLy8g IGZvciAoTG9vcENvdW50ID0gMDsgTG9vcENvdW50DQo+ID4gPiArIDwgQ291bnQgLSAxOyAgTG9v cENvdW50KyspICB7DQo+ID4gPiArICAgIC8vDQo+ID4gPiArICAgIC8vIElmIHRoZSBlbGVtZW50 IGlzIGxlc3MgdGhhbiB0aGUgcGl2b3QNCj4gPiA+ICsgICAgLy8NCj4gPiA+ICsgICAgaWYgKENv bXBhcmVGdW5jdGlvbiAoKFZPSUQgKikoKFVJTlQ4ICopQnVmZmVyVG9Tb3J0ICsNCj4gPiA+ICsg KChMb29wQ291bnQpICoNCj4gPiBFbGVtZW50U2l6ZSkpLCBQaXZvdCkgPD0gMCkgew0KPiA+ID4g KyAgICAgIC8vDQo+ID4gPiArICAgICAgLy8gU3dhcA0KPiA+ID4gKyAgICAgIC8vDQo+ID4gPiAr ICAgICAgQ29weU1lbSAoQnVmZmVyLCAoVUlOVDggKilCdWZmZXJUb1NvcnQgKyAoTmV4dFN3YXBM b2NhdGlvbiAqDQo+ID4gRWxlbWVudFNpemUpLCBFbGVtZW50U2l6ZSk7DQo+ID4gPiArICAgICAg Q29weU1lbSAoKFVJTlQ4ICopQnVmZmVyVG9Tb3J0ICsgKE5leHRTd2FwTG9jYXRpb24gKg0KPiA+ ID4gKyBFbGVtZW50U2l6ZSksIChVSU5UOCAqKUJ1ZmZlclRvU29ydCArICgoTG9vcENvdW50KSAq DQo+ID4gPiBFbGVtZW50U2l6ZSksIEVsZW1lbnRTaXplKTsNCj4gPiA+ICsgICAgICBDb3B5TWVt ICgoVUlOVDggKilCdWZmZXJUb1NvcnQgKyAoKExvb3BDb3VudCkgKiBFbGVtZW50U2l6ZSksDQo+ ID4gPiArIEJ1ZmZlciwgRWxlbWVudFNpemUpOw0KPiA+ID4gKw0KPiA+ID4gKyAgICAgIC8vDQo+ ID4gPiArICAgICAgLy8gSW5jcmVtZW50IE5leHRTd2FwTG9jYXRpb24NCj4gPiA+ICsgICAgICAv Lw0KPiA+ID4gKyAgICAgIE5leHRTd2FwTG9jYXRpb24rKzsNCj4gPiA+ICsgICAgfQ0KPiA+ID4g KyAgfQ0KPiA+ID4gKyAgLy8NCj4gPiA+ICsgIC8vIFN3YXAgcGl2b3QgdG8gaXQncyBmaW5hbCBw b3NpdGlvbiAoTmV4dFN3YXBMb2NhaXRvbikgIC8vDQo+ID4gPiArIENvcHlNZW0gKEJ1ZmZlciwg UGl2b3QsIEVsZW1lbnRTaXplKTsgIENvcHlNZW0gKFBpdm90LCAoVUlOVDgNCj4gPiA+ICsgKilC dWZmZXJUb1NvcnQgKyAoTmV4dFN3YXBMb2NhdGlvbiAqIEVsZW1lbnRTaXplKSwgRWxlbWVudFNp emUpOw0KPiA+ID4gKyBDb3B5TWVtICgoVUlOVDggKilCdWZmZXJUb1NvcnQgKyAoTmV4dFN3YXBM b2NhdGlvbiAqIEVsZW1lbnRTaXplKSwNCj4gPiA+ICsgQnVmZmVyLCBFbGVtZW50U2l6ZSk7DQo+ ID4gPiArDQo+ID4gPiArICAvLw0KPiA+ID4gKyAgLy8gTm93IHJlY3Vyc2Ugb24gMiBwYXJpdGlh bCBsaXN0cy4gIE5laXRoZXIgb2YgdGhlc2Ugd2lsbCBoYXZlIHRoZSAncGl2b3QnDQo+ID4gZWxl bWVudC4NCj4gPiA+ICsgIC8vIElFIGxpc3QgaXMgc29ydGVkIGxlZnQgaGFsZiwgcGl2b3QgZWxl bWVudCwgc29ydGVkIHJpZ2h0IGhhbGYuLi4NCj4gPiA+ICsgIC8vDQo+ID4gPiArICBRdWlja1Nv cnRXb3JrZXIgKA0KPiA+ID4gKyAgICBCdWZmZXJUb1NvcnQsDQo+ID4gPiArICAgIE5leHRTd2Fw TG9jYXRpb24sDQo+ID4gPiArICAgIEVsZW1lbnRTaXplLA0KPiA+ID4gKyAgICBDb21wYXJlRnVu Y3Rpb24sDQo+ID4gPiArICAgIEJ1ZmZlcg0KPiA+ID4gKyAgICApOw0KPiA+ID4gKw0KPiA+ID4g KyAgUXVpY2tTb3J0V29ya2VyICgNCj4gPiA+ICsgICAgKFVJTlQ4ICopQnVmZmVyVG9Tb3J0ICsg KE5leHRTd2FwTG9jYXRpb24gKyAxKSAqIEVsZW1lbnRTaXplLA0KPiA+ID4gKyAgICBDb3VudCAt IE5leHRTd2FwTG9jYXRpb24gLSAxLA0KPiA+ID4gKyAgICBFbGVtZW50U2l6ZSwNCj4gPiA+ICsg ICAgQ29tcGFyZUZ1bmN0aW9uLA0KPiA+ID4gKyAgICBCdWZmZXINCj4gPiA+ICsgICAgKTsNCj4g PiA+ICsNCj4gPiA+ICsgIHJldHVybjsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ ID4gPiArICBQZXJmb3JtcyBhIHF1aWNrIHNvcnQNCj4gPiA+ICsqKi8NCj4gPiA+ICt2b2lkIHFz b3J0ICh2b2lkICpiYXNlLCBzaXplX3QgbnVtLCBzaXplX3Qgd2lkdGgsIGludA0KPiA+ID4gKygq Y29tcGFyZSkoY29uc3Qgdm9pZCAqLCBjb25zdCB2b2lkICopKSB7DQo+ID4gPiArICBWT0lEICAq QnVmZmVyOw0KPiA+ID4gKw0KPiA+ID4gKyAgQVNTRVJUIChiYXNlICAgICE9IE5VTEwpOw0KPiA+ ID4gKyAgQVNTRVJUIChjb21wYXJlICE9IE5VTEwpOw0KPiA+ID4gKw0KPiA+ID4gKyAgLy8NCj4g PiA+ICsgIC8vIFVzZSBDUlQtc3R5bGUgbWFsbG9jIHRvIGNvdmVyIEJTIGFuZCBSVCBtZW1vcnkg YWxsb2NhdGlvbi4NCj4gPiA+ICsgIC8vDQo+ID4gPiArICBCdWZmZXIgPSBtYWxsb2MgKHdpZHRo KTsNCj4gPiA+ICsgIEFTU0VSVCAoQnVmZmVyICE9IE5VTEwpOw0KPiA+ID4gKw0KPiA+ID4gKyAg Ly8NCj4gPiA+ICsgIC8vIFJlLXVzZSBQZXJmb3JtUXVpY2tTb3J0KCkgZnVuY3Rpb24gSW1wbGVt ZW50YXRpb24gaW4gRURLSUkNCj4gPiBCYXNlU29ydExpYi4NCj4gPiA+ICsgIC8vDQo+ID4gPiAr ICBRdWlja1NvcnRXb3JrZXIgKGJhc2UsIChVSU5UTiludW0sIChVSU5UTil3aWR0aCwNCj4gPiA+ ICsgKFNPUlRfQ09NUEFSRSljb21wYXJlLCBCdWZmZXIpOw0KPiA+ID4gKw0KPiA+ID4gKyAgZnJl ZSAoQnVmZmVyKTsNCj4gPiA+ICsgIHJldHVybjsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiAr LyoqDQo+ID4gPiArICBHZXQgY2hhcmFjdGVyIGZyb20gc3RyZWFtLCB3ZSBkb24ndCBzdXBwb3J0 IGZpbGUgb3BlcmFzdGlvbiBvbg0KPiA+ID4gK2VkazINCj4gPiBKU09OIGxpYnJhcnkuDQo+ID4g PiArDQo+ID4gPiArICBAcmV0dXJuIFJldHVybnMgdGhlIGNoYXJhY3RlciBjdXJyZW50bHkgcG9p bnRlZCBieSB0aGUgaW50ZXJuYWwNCj4gPiA+ICsgZmlsZSBwb3NpdGlvbiBpbmRpY2F0b3Igb2Yg dGhlIHNwZWNpZmllZCBzdHJlYW0NCj4gPiA+ICsNCj4gPiA+ICsqKi8NCj4gPiA+ICtpbnQgZmdl dGMoRklMRSAqIF9GaWxlKXsNCj4gPiA+ICsgICByZXR1cm4gMDsNCj4gPiA+ICt9DQo+ID4gPiBk aWZmIC0tZ2l0IGEvUmVkZmlzaFBrZy9MaWJyYXJ5L0NydExpYi9DcnRMaWIuaW5mDQo+ID4gPiBi L1JlZGZpc2hQa2cvTGlicmFyeS9DcnRMaWIvQ3J0TGliLmluZg0KPiA+ID4gbmV3IGZpbGUgbW9k ZSAxMDA2NDQNCj4gPiA+IGluZGV4IDAwMDAwMDAwMDAuLmI1MTQ4MTdjZjQNCj4gPiA+IC0tLSAv ZGV2L251bGwNCj4gPiA+ICsrKyBiL1JlZGZpc2hQa2cvTGlicmFyeS9DcnRMaWIvQ3J0TGliLmlu Zg0KPiA+ID4gQEAgLTAsMCArMSwzNyBAQA0KPiA+ID4gKyMjIEBmaWxlDQo+ID4gPiArIyBFREsy IEMgUnVudGltZSBMaWJyYXJ5IGZvciBvcGVuc291cmNlIHByb2plY3QuDQo+ID4gPiArIw0KPiA+ ID4gKyMgQ29weXJpZ2h0IChjKSAyMDE5LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyBy ZXNlcnZlZC48QlI+ICMNCj4gPiA+ICsoQykgQ29weXJpZ2h0IDIwMjAgSGV3bGV0dCBQYWNrYXJk IEVudGVycHJpc2UgRGV2ZWxvcG1lbnQgTFA8QlI+ICMNCj4gPiA+ICsjICAgIFNQRFgtTGljZW5z ZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4gPiArIw0KPiA+ID4gKyMjDQo+ ID4gPiArDQo+ID4gPiArW0RlZmluZXNdDQo+ID4gPiArICBJTkZfVkVSU0lPTiAgICAgICAgICAg ICAgICAgICAgPSAweDAwMDEwMDFiDQo+ID4gPiArICBCQVNFX05BTUUgICAgICAgICAgICAgICAg ICAgICAgPSBDcnRMaWINCj4gPiA+ICsgIEZJTEVfR1VJRCAgICAgICAgICAgICAgICAgICAgICA9 IDgyNjNCOEFDLUQwMjEtNDI1RC1CMzM3LTNFQzk2RjVEQzE5Qg0KPiA+ID4gKyAgTU9EVUxFX1RZ UEUgICAgICAgICAgICAgICAgICAgID0gRFhFX0RSSVZFUg0KPiA+ID4gKyAgVkVSU0lPTl9TVFJJ TkcgICAgICAgICAgICAgICAgID0gMS4wDQo+ID4gPiArICBMSUJSQVJZX0NMQVNTICAgICAgICAg ICAgICAgICAgPSBDcnRMaWJ8RFhFX0NPUkUgRFhFX0RSSVZFUg0KPiA+IERYRV9SVU5USU1FX0RS SVZFUiBEWEVfU01NX0RSSVZFUiBVRUZJX0FQUExJQ0FUSU9ODQo+ID4gPiBVRUZJX0RSSVZFUg0K PiA+ID4gKw0KPiA+ID4gKyMNCj4gPiA+ICsjICBWQUxJRF9BUkNISVRFQ1RVUkVTICAgICAgICAg ICA9IElBMzIgWDY0IEFSTSBBQVJDSDY0IFJJU0NWNjQNCj4gPiA+ICsjDQo+ID4gPiArDQo+ID4g PiArW1NvdXJjZXNdDQo+ID4gPiArICBDcnRMaWIuYw0KPiA+ID4gKw0KPiA+ID4gK1tMaWJyYXJ5 Q2xhc3Nlc10NCj4gPiA+ICsgIEJhc2VMaWINCj4gPiA+ICsgIERlYnVnTGliDQo+ID4gPiArICBN ZW1vcnlBbGxvY2F0aW9uTGliDQo+ID4gPiArICBVZWZpUnVudGltZVNlcnZpY2VzVGFibGVMaWIN Cj4gPiA+ICsNCj4gPiA+ICtbUGFja2FnZXNdDQo+ID4gPiArICBNZGVQa2cvTWRlUGtnLmRlYw0K PiA+ID4gKyAgTWRlTW9kdWxlUGtnL01kZU1vZHVsZVBrZy5kZWMNCj4gPiA+ICsgIFJlZGZpc2hQ a2cvUmVkZmlzaFBrZy5kZWMNCj4gPiA+ICsNCj4gPiA+ICsNCj4gPiA+IGRpZmYgLS1naXQgYS9S ZWRmaXNoUGtnL1JlZGZpc2hMaWJzLmRzYy5pbmMNCj4gPiA+IGIvUmVkZmlzaFBrZy9SZWRmaXNo TGlicy5kc2MuaW5jIGluZGV4IGQ0YzA4ZTE4YWMuLjJhOTUxYmQ4ZmEgMTAwNjQ0DQo+ID4gPiAt LS0gYS9SZWRmaXNoUGtnL1JlZGZpc2hMaWJzLmRzYy5pbmMNCj4gPiA+ICsrKyBiL1JlZGZpc2hQ a2cvUmVkZmlzaExpYnMuZHNjLmluYw0KPiA+ID4gQEAgLTEyLDUgKzEyLDYgQEANCj4gPiA+ICAj Iw0KPiA+ID4gICFpZiAkKFJFREZJU0hfRU5BQkxFKSA9PSBUUlVFDQo+ID4gPg0KPiA+ID4gVWNz MlV0ZjhMaWJ8UmVkZmlzaFBrZy9MaWJyYXJ5L0Jhc2VVY3MyVXRmOExpYi9CYXNlVWNzMlV0ZjhM aWIuaW5mDQo+ID4gPiArICBDcnRMaWJ8UmVkZmlzaFBrZy9MaWJyYXJ5L0NydExpYi9DcnRMaWIu aW5mDQo+ID4gPiAgIWVuZGlmDQo+ID4gPg0KPiA+ID4gZGlmZiAtLWdpdCBhL1JlZGZpc2hQa2cv UmVkZmlzaFBrZy5jaS55YW1sDQo+ID4gPiBiL1JlZGZpc2hQa2cvUmVkZmlzaFBrZy5jaS55YW1s IGluZGV4IDIwYzI5N2FkMjIuLjk4OTVmZGFjOTkgMTAwNjQ0DQo+ID4gPiAtLS0gYS9SZWRmaXNo UGtnL1JlZGZpc2hQa2cuY2kueWFtbA0KPiA+ID4gKysrIGIvUmVkZmlzaFBrZy9SZWRmaXNoUGtn LmNpLnlhbWwNCj4gPiA+IEBAIC0xNyw2ICsxNywyNSBAQA0KPiA+ID4gICAgICAgICAgXSwNCj4g PiA+ICAgICAgICAgICMjIEJvdGggZmlsZSBwYXRoIGFuZCBkaXJlY3RvcnkgcGF0aCBhcmUgYWNj ZXB0ZWQuDQo+ID4gPiAgICAgICAgICAiSWdub3JlRmlsZXMiOiBbDQo+ID4gPiArICAgICAgICAg ICAgIyMgQmVsb3cgYXJlIGZpbGVzIGluY29ycG9yYXRlZCB3aXRoIG9wZW4gc291cmNlIHdoaWNo IGFyZQ0KPiA+ID4gKyAgICAgICAgICAgICMjIG5vdCBlZGsyIGNvZGluZyBzdGFuZGFyZCBjb21w bGlhbnQuDQo+ID4gPiArICAgICAgICAgICAgIyMNCj4gPiA+ICsgICAgICAgICAgICAjIyBFREsy IENSVCBsaWJyYXJ5IHdoaWNoIGlzIG5vdCBlZGsyIGNvZGluZw0KPiA+ID4gKyAgICAgICAgICAg ICMjIHN0YW5kYXJkIGNvbXBsaWFudC4NCj4gPiA+ICsgICAgICAgICAgICAjIyBDIHJ1bnRpbWUg bGlicmFyeSBmb3IgRURLSUkgSnNvbkxpYi4NCj4gPiA+ICsgICAgICAgICAgICAiSW5jbHVkZS9D cnQvc3lzIiwNCj4gPiA+ICsgICAgICAgICAgICAiSW5jbHVkZS9DcnQvYXNzZXJ0LmgiLA0KPiA+ ID4gKyAgICAgICAgICAgICJJbmNsdWRlL0NydC9lcnJuby5oIiwNCj4gPiA+ICsgICAgICAgICAg ICAiSW5jbHVkZS9DcnQvbGltaXRzLmgiLA0KPiA+ID4gKyAgICAgICAgICAgICJJbmNsdWRlL0Ny dC9tYXRoLmgiLA0KPiA+ID4gKyAgICAgICAgICAgICJJbmNsdWRlL0NydC9zdGRhcmcuaCIsDQo+ ID4gPiArICAgICAgICAgICAgIkluY2x1ZGUvQ3J0L3N0ZGRlZi5oIiwNCj4gPiA+ICsgICAgICAg ICAgICAiSW5jbHVkZS9DcnQvc3RkaW8uaCIsDQo+ID4gPiArICAgICAgICAgICAgIkluY2x1ZGUv Q3J0L3N0ZGxpYi5oIiwNCj4gPiA+ICsgICAgICAgICAgICAiSW5jbHVkZS9DcnQvc3RyaW5nLmgi LA0KPiA+ID4gKyAgICAgICAgICAgICJJbmNsdWRlL0NydC90aW1lLmgiLA0KPiA+ID4gKyAgICAg ICAgICAgICJJbmNsdWRlL0xpYnJhcnkvQ3J0TGliLmgiLA0KPiA+ID4gKyAgICAgICAgICAgICJM aWJyYXJ5L0NydExpYi9DcnRMaWIuYyINCj4gPiA+ICAgICAgICAgIF0NCj4gPiA+ICAgICAgfSwN Cj4gPiA+ICAgICAgIkNvbXBpbGVyUGx1Z2luIjogew0KPiA+ID4gZGlmZiAtLWdpdCBhL1JlZGZp c2hQa2cvUmVkZmlzaFBrZy5kZWMgYi9SZWRmaXNoUGtnL1JlZGZpc2hQa2cuZGVjDQo+ID4gPiBp bmRleCBhZWNjMWY0YTNhLi4yMTQyYjQzNjQwIDEwMDY0NA0KPiA+ID4gLS0tIGEvUmVkZmlzaFBr Zy9SZWRmaXNoUGtnLmRlYw0KPiA+ID4gKysrIGIvUmVkZmlzaFBrZy9SZWRmaXNoUGtnLmRlYw0K PiA+ID4gQEAgLTE1LDE2ICsxNSwyNCBAQA0KPiA+ID4NCj4gPiA+ICBbSW5jbHVkZXNdDQo+ID4g PiAgICBJbmNsdWRlDQo+ID4gPiArICBJbmNsdWRlL0NydCAgICAgICAgICAgICAgICAgICAjIEhl YWRlciBmaWxlcyBmb3IgQyBSVEwuDQo+ID4gPg0KPiA+ID4gIFtMaWJyYXJ5Q2xhc3Nlc10NCj4g PiA+ICAgICMjICBAbGlicmFyeWNsYXNzIFBsYXRmb3JtIFJlZGZpc2ggSG9zdCBJbnRlcmZhY2Ug TGlicmFyeQ0KPiA+ID4gICAgIyAgIFBsYXRmb3JtIGltcGxlbWVudGF0aW9uLXNwZWNpZmljIFJl ZGZpc2ggSG9zdCBJbnRlcmZhY2UuDQo+ID4gPg0KPiA+ID4gUmVkZmlzaFBsYXRmb3JtSG9zdElu dGVyZmFjZUxpYnxJbmNsdWRlL0xpYnJhcnkvUmVkZmlzaEhvc3RJbnRlcmZhY2UNCj4gPiA+IFJl ZGZpc2hQbGF0Zm9ybUhvc3RJbnRlcmZhY2VMaWJ8TGkNCj4gPiA+IGIuaA0KPiA+ID4gKw0KPiA+ ID4gICAgIyMgIEBsaWJyYXJ5Y2xhc3MgIFRoaXMgbGlicmFyeSBwcm92aWRlcyBVQ1MyIHRvIFVU RjggbWFuaXB1bGF0aW9uDQo+ID4gPiAgICAjICAgZnVuY3Rpb25zLg0KPiA+ID4gICAgIw0KPiA+ ID4gICAgVWNzMlV0ZjhMaWJ8SW5jbHVkZS9MaWJyYXJ5L0Jhc2VVY3MyVXRmOExpYi5oDQo+ID4g Pg0KPiA+ID4gKyAgIyMgIEBsaWJyYXJ5Y2xhc3MgIFByb3ZpZGVzIHRoZSBDIHJ1bnRpbWUgbGli cmFyeSBmdW5jdGlvbnMNCj4gPiA+ICsgICMgICBDUlQgbGlicmFyeSBpcyBjdXJyZW50bHkgdXNl ZCBieSBlZGsyIEpzb25MaWIgKG9wZW4gc291cmNlDQo+ID4gPiArICAjICAgamFuc3NvbiBwcm9q ZWN0KSBhbmQgZWRrMiBSZWRmaXNoTGliIChsaWJyZWRmaXNoIG9wZW4gc291cmNlDQo+ID4gPiAr ICAjICAgcHJvamVjdCkuDQo+ID4gPiArICBDcnRMaWJ8SW5jbHVkZS9MaWJyYXJ5L0NydExpYi5o DQo+ID4gPiArDQo+ID4gPiAgW1Byb3RvY29sc10NCj4gPiA+ICAgICMjIEluY2x1ZGUvUHJvdG9j b2wvUmVkZmlzaERpc2NvdmVyLmgNCj4gPiA+ICAgIGdFZmlSZWRmaXNoRGlzY292ZXJQcm90b2Nv bEd1aWQgICAgICA9IHsgMHg1ZGIxMjUwOSwgMHg0NTUwLCAweDQzNDcsDQo+IHsgMHg5NiwNCj4g PiAweGIzLCAweDczLCAweGMwLCAweGZmLCAweDZlLCAweDg2LCAweDlmDQo+ID4gPiB9fQ0KPiA+ ID4gZGlmZiAtLWdpdCBhL1JlZGZpc2hQa2cvUmVkZmlzaFBrZy5kc2MgYi9SZWRmaXNoUGtnL1Jl ZGZpc2hQa2cuZHNjDQo+ID4gPiBpbmRleCAzNjM5YjYyMGU2Li5hYTFjY2Q1YTk1IDEwMDY0NA0K PiA+ID4gLS0tIGEvUmVkZmlzaFBrZy9SZWRmaXNoUGtnLmRzYw0KPiA+ID4gKysrIGIvUmVkZmlz aFBrZy9SZWRmaXNoUGtnLmRzYw0KPiA+ID4gQEAgLTQ4LDUgKzQ4LDYgQEANCj4gPiA+ICBbQ29t cG9uZW50c10NCj4gPiA+DQo+ID4gUmVkZmlzaFBrZy9MaWJyYXJ5L1BsYXRmb3JtSG9zdEludGVy ZmFjZUxpYk51bGwvUGxhdGZvcm1Ib3N0SW50ZXJmYWNlTA0KPiA+IGliTg0KPiA+IHVsbC5pbmYN Cj4gPiA+ICAgIFJlZGZpc2hQa2cvTGlicmFyeS9CYXNlVWNzMlV0ZjhMaWIvQmFzZVVjczJVdGY4 TGliLmluZg0KPiA+ID4gKyAgUmVkZmlzaFBrZy9MaWJyYXJ5L0NydExpYi9DcnRMaWIuaW5mDQo+ ID4gPg0KPiA+ID4gICAgIWluY2x1ZGUgUmVkZmlzaFBrZy9SZWRmaXNoLmRzYy5pbmMNCj4gPiA+ IC0tDQo+ID4gPiAyLjE3LjENCj4gPiA+DQo+ID4gPg0KPiA+ID4NCj4gPiA+IA0KPiA+ID4NCg0K