From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mx0b-002e3701.pphosted.com (mx0b-002e3701.pphosted.com [148.163.143.35]) by mx.groups.io with SMTP id smtpd.web12.4475.1591147480650965066 for ; Tue, 02 Jun 2020 18:24:41 -0700 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: hpe.com, ip: 148.163.143.35, mailfrom: prvs=0423a65dac=abner.chang@hpe.com) Received: from pps.filterd (m0150245.ppops.net [127.0.0.1]) by mx0b-002e3701.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id 0531I5SD026435; Wed, 3 Jun 2020 01:24:40 GMT Received: from g4t3426.houston.hpe.com (g4t3426.houston.hpe.com [15.241.140.75]) by mx0b-002e3701.pphosted.com with ESMTP id 31e1svr4pt-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 03 Jun 2020 01:24:39 +0000 Received: from G1W8107.americas.hpqcorp.net (g1w8107.austin.hp.com [16.193.72.59]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by g4t3426.houston.hpe.com (Postfix) with ESMTPS id A79E565; Wed, 3 Jun 2020 01:24:38 +0000 (UTC) Received: from G9W8453.americas.hpqcorp.net (2002:10d8:a0d3::10d8:a0d3) by G1W8107.americas.hpqcorp.net (2002:10c1:483b::10c1:483b) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Wed, 3 Jun 2020 01:24:38 +0000 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (15.241.52.11) by G9W8453.americas.hpqcorp.net (16.216.160.211) with Microsoft SMTP Server (TLS) id 15.0.1497.2 via Frontend Transport; Wed, 3 Jun 2020 01:24:38 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=V/PP3Le+CZFsEQLuHjmFvLUu9U/T9gPH7e1DFpMBG+kUfSrVt/e9XxQxqPs5EPyOpgADWTSj+F30Z9VR5Jaj+o2UAINipKSaPpSs6yhy8u29WgiVDPRP4sLXI/Z5q7sq3m8KQnykfqaqRjAyxy1gD5xX9FCWfrTK9foVW0vBfEqXp7aFBWBePNzDyfTtiGgUd9sTKJZVbGmlhgU9JbPub5fBv8EwdfsIX5nVImooZ+zmYyVEzGOH3OqeUjLLqSfhFDIbhj9A5/VAazFaeLOyogvdnC95OsOCLu4QQT6t1BeyjGeCFWGxP3HhXx10ge1jP8a183SMKPpnc7STJ+TOkQ== 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=JRNYPTg2IBhVae3kasUjnqIx06Y4kPVLH9hz4GEQmgM=; b=MurX13IRQ43B+Tug7kPFJ41JftnPfjF/RWFoOwPnSUZurnnufyGflBYgup4jq/O4KsKPWvQkX30/1nQh/MD0ITDhRhRzoz/8vi1LAwLICQp8sl+rzqRFvnP3mjgbgQRff6Rg9BM7nSWR6w1GKl7olf6r1hUVWEj3EWuPv3XErVAVfLZPqg9OBL/cZ7WmG4a/eariXX/TXlqT90yUHV/8MDE/xWHPMrSgblmju/QRrWjsZxa6iyKEXyVwCSSlmdeY9WJEiyQWlX8RXlwZFcltMfFQPehQfxh2ZBAb5DtMHgzQC7aO+5Oe/u5wBTDKDEt/VOHyZ/4tjfbZkxKPV/0FLA== 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 TU4PR8401MB1182.NAMPRD84.PROD.OUTLOOK.COM (2a01:111:e400:7714::14) by TU4PR8401MB0574.NAMPRD84.PROD.OUTLOOK.COM (2a01:111:e400:770a::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3066.18; Wed, 3 Jun 2020 01:24:35 +0000 Received: from TU4PR8401MB1182.NAMPRD84.PROD.OUTLOOK.COM ([fe80::29a3:bff2:a760:1f07]) by TU4PR8401MB1182.NAMPRD84.PROD.OUTLOOK.COM ([fe80::29a3:bff2:a760:1f07%9]) with mapi id 15.20.3045.022; Wed, 3 Jun 2020 01:24:35 +0000 From: "Abner Chang" To: "Kinney, Michael D" , "devel@edk2.groups.io" , "Schaefer, Daniel (DualStudy)" CC: Leif Lindholm , "Chen, Gilbert" Subject: Re: [edk2-devel] [PATCH v4 1/1] ProcessorPkg/Library: Add RiscVEdk2SbiLib Thread-Topic: [edk2-devel] [PATCH v4 1/1] ProcessorPkg/Library: Add RiscVEdk2SbiLib Thread-Index: AQHWOP4mt0m2Nu2ZQ0iFRwyMrbxinKjF4F0AgAA2T5A= Date: Wed, 3 Jun 2020 01:24:35 +0000 Message-ID: References: <20200602165152.9823-1-daniel.schaefer@hpe.com> <20200602165152.9823-2-daniel.schaefer@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: [16.242.247.131] x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 5e201424-594c-4973-0ab0-08d8075ce03f x-ms-traffictypediagnostic: TU4PR8401MB0574: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:3513; x-forefront-prvs: 04238CD941 x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: Ejoin+UoxlxOGDdMi8pkvOv8IT+H7irf9X8JXNPJOPhFlJ+Q1pEqYto+wV7s2vDlBbXQK/N05H6gzzq52LdZlw6csMfErue64GeADhom+XI4AJ8OC0cvmLzrd/4zjK31JurQOobzxDw4/AnQHd+fDkAQ3qcxEvDDVR35NH3iWynK1JChwyeNx5DupLShKxXZkFm4W7+4mz/VxNGwLf/6h0zM+lw7PuHkR6wW0cQSXcInshDlEmtgPqZkGuAj9eOgA9s6Dn+TLDZ3U8UkfSa4Rl5zU31ybAad34/1RBsi5oeHxog2stnmwzbrNjOhlbTTXO3bffigTI+15/So0wmUodqTuiXVnxOKgFbC+fF4ryHkGMWtyW3Gc21/xfNIUReNltBYNPr0l/UCHsy5R400Ng== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TU4PR8401MB1182.NAMPRD84.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFTY:;SFS:(366004)(2906002)(5660300002)(966005)(9686003)(83380400001)(8676002)(55016002)(30864003)(6636002)(33656002)(26005)(6506007)(53546011)(8936002)(86362001)(7696005)(498600001)(186003)(4326008)(71200400001)(52536014)(66946007)(66446008)(64756008)(66476007)(66556008)(54906003)(76116006)(110136005)(19627235002)(579004)(559001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: 8Frtp0CsstTo86X/2rYddfTAGq2csWosOekzvWeAl0wdG58H+ga2kud0d11pf6WyinEAe6bspOIsWB438boIlc0nkRo4/4l207WlEmrmxa7Qggh32Eq7NRxvHPfR1OXm4p4v1FXPbpC9K1c1959pjfxgICgG7VdVb+8GRJPJg2N1LMKCyYc+SLMhsyvrKtSoFaRzt1Gq5KHq1wHsQLi0cAwOsKzkZjEYupv8w3yFHgUos40J2zr2PR8Wi6WYUdiPsIfga7ApmsXZuQH2txZ/uBlTw1RjXCcaQlw/k5fBLK7cv5qSIPbSmywoSxetWBg34nOe6bY0xAK9QmUR9n7dt5EVni7lp3jvMaLIkoVJ+/7qLBoukXh5DKe8QWHQtApk9eYIC7WcB7UTiw686u3YJfQSIgJdgBGdizHtnThEall6hN+p8aJdjB6mOndg1eFjkCTeO2hmUKFBIPGfWeewTU/nMsh7uIWz3y3fay5+N55zT0HspzkkZLXLafZXQtiK X-MS-Exchange-CrossTenant-Network-Message-Id: 5e201424-594c-4973-0ab0-08d8075ce03f X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Jun 2020 01:24:35.1519 (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: SYzZKmtM6KWlI9XT1Gu91g7Dk3ON0HBLB4XSLngwbnUZWCrzoCyPbaIGnRP7u0krt6Ckw8gclR5Hst1D37Ql8A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TU4PR8401MB0574 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.216,18.0.687 definitions=2020-06-02_15:2020-06-02,2020-06-02 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 mlxlogscore=999 priorityscore=1501 adultscore=0 mlxscore=0 lowpriorityscore=0 bulkscore=0 phishscore=0 cotscore=-2147483648 suspectscore=0 clxscore=1015 impostorscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2004280000 definitions=main-2006030007 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogS2lubmV5LCBNaWNoYWVs IEQgW21haWx0bzptaWNoYWVsLmQua2lubmV5QGludGVsLmNvbV0NCj4gU2VudDogV2VkbmVzZGF5 LCBKdW5lIDMsIDIwMjAgNjowMCBBTQ0KPiBUbzogZGV2ZWxAZWRrMi5ncm91cHMuaW87IFNjaGFl ZmVyLCBEYW5pZWwgKER1YWxTdHVkeSkNCj4gPGRhbmllbC5zY2hhZWZlckBocGUuY29tPjsgS2lu bmV5LCBNaWNoYWVsIEQNCj4gPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPg0KPiBDYzogTGVp ZiBMaW5kaG9sbSA8bGVpZkBudXZpYWluYy5jb20+OyBDaGVuLCBHaWxiZXJ0DQo+IDxnaWxiZXJ0 LmNoZW5AaHBlLmNvbT47IENoYW5nLCBBYm5lciAoSFBTIFNXL0ZXIFRlY2hub2xvZ2lzdCkNCj4g PGFibmVyLmNoYW5nQGhwZS5jb20+DQo+IFN1YmplY3Q6IFJFOiBbZWRrMi1kZXZlbF0gW1BBVENI IHY0IDEvMV0gUHJvY2Vzc29yUGtnL0xpYnJhcnk6IEFkZA0KPiBSaXNjVkVkazJTYmlMaWINCj4g DQo+IEhpIERhbmllbCwNCj4gDQo+IEkgc2VlIHNvbWUgaW5jb25zaXN0ZW5jZSBpbiB0aGUgbmFt ZXMgdXNlZCBpbiB0aGVzZSBwYXRjaGVzLg0KPiANCj4gRm9yIGV4YW1wbGUsIHRoZXJlIHNob3Vs ZCBub3QgYmUgYSBuZWVkIHRvIHVzZSAiRWRrMiIgaW4gdGhlDQo+IG5hbWUgb2YgYSBsaWJyYXJ5 LiAgVGhpcyBsaWJyYXJ5IGlzIGluIGFuIGVkazIgcmVwby4NCldlIGN1cnJlbnRseSBoYXZlIHR3 byBsaWJyYXJpZXMgcmVnYXJkcyB0byBSSVNDLVYgU0JJIHNwZWMuIE9uZSBpcyB0aGUgd3JhcHBl ciB0byBidWlsZCBPcGVuU0JJIGxpYiwgd2hpY2ggaXMgUmlzY1ZPcGVuU2JpTGliLg0KQW5vdGhl ciBvbmUgaXMgU0JJIGZpcm13YXJlIGNvZGUgYmFzZSBleHRlbnNpb24gaW4gd2hpY2ggdGhlIEFC SXMgYXJlIHByb3ZpZGVkIGJ5IHN5c3RlbSBmaXJtd2FyZSBvdGhlciB0aGFuIHRoZSBzdGFuZGFy ZCBBQklzIGRlZmluZWQgaW4gU0JJIHNwZWMuIFRvIG5hbWUgaXQgd2l0aCBFREsyIG1ha2VzIHNl bnNlIGJlY2F1c2UgdGhhdCBpcyBSSVNDLVYgRURLMiBmaXJtd2FyZSBjb2RlIGJhc2UgU0JJIGV4 dGVuc2lvbi4NCj4gDQo+IEkgc2VlICJSaXNjViIgYW5kICJSaXNrLVYiIHVzZWQgaW4gZmlsZSBw YXRocy4gIEkgcmVjb21tZW5kDQo+IHlvdSBwaWNrIG9uZSBhbmQgdXNlIGl0IGNvbnNpc3RlbnRs eS4gIEluIHRoZSBNZGVQa2csIEkgc2VlDQo+IFJpc2NWNjQsIGFuZCBtYWNyb3MgdXNpbmcgUklT Q1YsIFJJU0NWMzIsIFJJU0NWNjQsIGFuZCBSSVNDVjEyOC4NCj4gd2hpY2ggc2VlbXMgY29uc2lz dGVudCBhbmQgZG9lcyBub3QgdXNlIGEgJy0nLiAgUGVyaGFwcyB1c2UNCj4gIlJpc2NWIiBmb3Ig Y29udGVudCB0aGF0IHdvcmtzIGZvciAzMiwgNjQsIGFuZCAxMjggYml0IGFuZA0KPiBSaXNjVjMy LCBSaXNjVjY0LCBhbmQgUmlza1YxMjggZm9yIGNvbnRlbnQgaXMgc3BlY2lmaWMgdG8gdGhlDQo+ IGJpdCB3aWR0aD8NCkZvciB0aGUgZm9sZGVycyB1bmRlciBTaWxpY29uIGFuZCBwbGF0Zm9ybSwg SSBwcmVmZXIgdG8gdXNlICJSSVNDLVYiIHdoaWNoIGlzIHRoZSBvZmZpY2lhbCBuYW1lIG9mIHRo aXMgcHJvY2Vzc29yLiBBbGwgb3RoZXIgZmlsZXMgY2FuIHVzZSBSaXNjViB3aGljaCBjb25mb3Jt IHRoZSBuYW1pbmcgcnVsZS4gUklTQ1YzMiwgUklTQ1Y2NCwgYW5kIFJJU0NWMTI4IGFyZSB1c2Vk IGZvciB0aGUgYXJjaGl0ZWN0dXJlcy4NCg0KPiAgDQo+IFRoYW5rcywNCj4gDQo+IE1pa2UNCj4g DQo+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiBGcm9tOiBkZXZlbEBlZGsyLmdy b3Vwcy5pbyA8ZGV2ZWxAZWRrMi5ncm91cHMuaW8+IE9uDQo+ID4gQmVoYWxmIE9mIERhbmllbCBT Y2hhZWZlcg0KPiA+IFNlbnQ6IFR1ZXNkYXksIEp1bmUgMiwgMjAyMCA5OjUyIEFNDQo+ID4gVG86 IGRldmVsQGVkazIuZ3JvdXBzLmlvDQo+ID4gQ2M6IExlaWYgTGluZGhvbG0gPGxlaWZAbnV2aWFp bmMuY29tPjsgR2lsYmVydCBDaGVuDQo+ID4gPGdpbGJlcnQuY2hlbkBocGUuY29tPjsgQWJuZXIg Q2hhbmcNCj4gPiA8YWJuZXIuY2hhbmdAaHBlLmNvbT47IEtpbm5leSwgTWljaGFlbCBEDQo+ID4g PG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPg0KPiA+IFN1YmplY3Q6IFtlZGsyLWRldmVsXSBb UEFUQ0ggdjQgMS8xXQ0KPiA+IFByb2Nlc3NvclBrZy9MaWJyYXJ5OiBBZGQgUmlzY1ZFZGsyU2Jp TGliDQo+ID4NCj4gPiBMaWJyYXJ5IHByb3ZpZGVzIGludGVyZmFjZXMgdG8gaW52b2tlIFNCSSBl Y2FsbHMuDQo+ID4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgU2NoYWVmZXIgPGRhbmllbC5z Y2hhZWZlckBocGUuY29tPg0KPiA+DQo+ID4gQ2M6IExlaWYgTGluZGhvbG0gPGxlaWZAbnV2aWFp bmMuY29tPg0KPiA+IENjOiBHaWxiZXJ0IENoZW4gPGdpbGJlcnQuY2hlbkBocGUuY29tPg0KPiA+ IENjOiBBYm5lciBDaGFuZyA8YWJuZXIuY2hhbmdAaHBlLmNvbT4NCj4gPiBDYzogTWljaGFlbCBE LiBLaW5uZXkgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPg0KPiA+IC0tLQ0KPiA+ICBTaWxp Y29uL1JJU0MtDQo+ID4gVi9Qcm9jZXNzb3JQa2cvTGlicmFyeS9SaXNjVkVkazJTYmlMaWIvUmlz Y1ZFZGsyU2JpTGliLmkNCj4gPiBuZiB8ICAyOCArDQo+ID4gIFNpbGljb24vUklTQy0NCj4gPiBW L1Byb2Nlc3NvclBrZy9JbmNsdWRlL0xpYnJhcnkvUmlzY1ZFZGsyU2JpTGliLmgNCj4gPiB8IDU2 MyArKysrKysrKysrKysNCj4gPiAgU2lsaWNvbi9SSVNDLQ0KPiA+IFYvUHJvY2Vzc29yUGtnL0xp YnJhcnkvUmlzY1ZFZGsyU2JpTGliL1Jpc2NWRWRrMlNiaUxpYi5jDQo+ID4gfCA4OTcgKysrKysr KysrKysrKysrKysrKysNCj4gPiAgMyBmaWxlcyBjaGFuZ2VkLCAxNDg4IGluc2VydGlvbnMoKykN Cj4gPg0KPiA+IGRpZmYgLS1naXQgYS9TaWxpY29uL1JJU0MtDQo+ID4gVi9Qcm9jZXNzb3JQa2cv TGlicmFyeS9SaXNjVkVkazJTYmlMaWIvUmlzY1ZFZGsyU2JpTGliLmkNCj4gPiBuZiBiL1NpbGlj b24vUklTQy0NCj4gPiBWL1Byb2Nlc3NvclBrZy9MaWJyYXJ5L1Jpc2NWRWRrMlNiaUxpYi9SaXNj VkVkazJTYmlMaWIuaQ0KPiA+IG5mDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRl eCAwMDAwMDAwMDAwMDAuLjY2NWRjYmY0MGUwMQ0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysg Yi9TaWxpY29uL1JJU0MtDQo+ID4gVi9Qcm9jZXNzb3JQa2cvTGlicmFyeS9SaXNjVkVkazJTYmlM aWIvUmlzY1ZFZGsyU2JpTGliLmkNCj4gPiBuZg0KPiA+IEBAIC0wLDAgKzEsMjggQEANCj4gPiAr IyMgQGZpbGUNCj4gPg0KPiA+DQo+ID4gKyMgUklTQy1WIExpYnJhcnkgdG8gY2FsbCBTQkkgZWNh bGxzDQo+ID4NCj4gPg0KPiA+ICsjDQo+ID4NCj4gPg0KPiA+ICsjICBDb3B5cmlnaHQgKGMpIDIw MjAsIEhld2xldHQgUGFja2FyZCBFbnRlcnByaXNlDQo+ID4gRGV2ZWxvcG1lbnQgTFAuIEFsbCBy aWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+DQo+ID4NCj4gPiArIw0KPiA+DQo+ID4NCj4gPiArIyAg U1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gPg0KPiA+DQo+ ID4gKyMNCj4gPg0KPiA+DQo+ID4gKyMjDQo+ID4NCj4gPg0KPiA+ICsNCj4gPg0KPiA+DQo+ID4g K1tEZWZpbmVzXQ0KPiA+DQo+ID4NCj4gPiArICBJTkZfVkVSU0lPTiAgICA9IDB4MDAwMTAwMWIN Cj4gPg0KPiA+DQo+ID4gKyAgQkFTRV9OQU1FICAgICAgPSBSaXNjVkVkazJTYmlMaWINCj4gPg0K PiA+DQo+ID4gKyAgRklMRV9HVUlEICAgICAgPSAwREYxQkJCRC1GN0U1LTRFOEEtQkNGMS05RDYz RDJERDlGREQNCj4gPg0KPiA+DQo+ID4gKyAgTU9EVUxFX1RZUEUgICAgPSBCQVNFDQo+ID4NCj4g Pg0KPiA+ICsgIFZFUlNJT05fU1RSSU5HID0gMS4wDQo+ID4NCj4gPg0KPiA+ICsgIExJQlJBUllf Q0xBU1MgID0gUmlzY1ZFZGsyU2JpTGliDQo+ID4NCj4gPg0KPiA+ICsNCj4gPg0KPiA+DQo+ID4g K1tTb3VyY2VzXQ0KPiA+DQo+ID4NCj4gPiArICBSaXNjVkVkazJTYmlMaWIuYw0KPiA+DQo+ID4N Cj4gPiArDQo+ID4NCj4gPg0KPiA+ICtbUGFja2FnZXNdDQo+ID4NCj4gPg0KPiA+ICsgIE1kZVBr Zy9NZGVQa2cuZGVjDQo+ID4NCj4gPg0KPiA+ICsgIFNpbGljb24vUklTQy1WL1Byb2Nlc3NvclBr Zy9SaXNjVlByb2Nlc3NvclBrZy5kZWMNCj4gPg0KPiA+DQo+ID4gKyAgUGxhdGZvcm0vUklTQy1W L1BsYXRmb3JtUGtnL1Jpc2NWUGxhdGZvcm1Qa2cuZGVjDQo+ID4NCj4gPg0KPiA+ICsNCj4gPg0K PiA+DQo+ID4gK1tMaWJyYXJ5Q2xhc3Nlc10NCj4gPg0KPiA+DQo+ID4gKyAgQmFzZUxpYg0KPiA+ DQo+ID4NCj4gPiArICBSaXNjVk9wZW5zYmlMaWINCj4gPg0KPiA+DQo+ID4gZGlmZiAtLWdpdCBh L1NpbGljb24vUklTQy0NCj4gPiBWL1Byb2Nlc3NvclBrZy9JbmNsdWRlL0xpYnJhcnkvUmlzY1ZF ZGsyU2JpTGliLmgNCj4gPiBiL1NpbGljb24vUklTQy0NCj4gPiBWL1Byb2Nlc3NvclBrZy9JbmNs dWRlL0xpYnJhcnkvUmlzY1ZFZGsyU2JpTGliLmgNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0K PiA+IGluZGV4IDAwMDAwMDAwMDAwMC4uYzFhZTMxNzYxNDdmDQo+ID4gLS0tIC9kZXYvbnVsbA0K PiA+ICsrKyBiL1NpbGljb24vUklTQy0NCj4gPiBWL1Byb2Nlc3NvclBrZy9JbmNsdWRlL0xpYnJh cnkvUmlzY1ZFZGsyU2JpTGliLmgNCj4gPiBAQCAtMCwwICsxLDU2MyBAQA0KPiA+ICsvKiogQGZp bGUNCj4gPg0KPiA+DQo+ID4gKyAgTGlicmFyeSB0byBjYWxsIHRoZSBSSVNDLVYgU0JJIGVjYWxs cw0KPiA+DQo+ID4NCj4gPiArDQo+ID4NCj4gPg0KPiA+ICsgIENvcHlyaWdodCAoYykgMjAyMCwg SGV3bGV0dCBQYWNrYXJkIERldmVsb3BtZW50IExQLg0KPiA+IEFsbCByaWdodHMgcmVzZXJ2ZWQu PEJSPg0KPiA+DQo+ID4NCj4gPiArDQo+ID4NCj4gPg0KPiA+ICsgIFNQRFgtTGljZW5zZS1JZGVu dGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4NCj4gPg0KPiA+ICsNCj4gPg0KPiA+DQo+ ID4gKyAgQHBhciBHbG9zc2FyeToNCj4gPg0KPiA+DQo+ID4gKyAgICAtIEhhcnQgLSBIYXJkd2Fy ZSBUaHJlYWQsIHNpbWlsYXIgdG8gYSBDUFUgY29yZQ0KPiA+DQo+ID4NCj4gPiArKiovDQo+ID4N Cj4gPg0KPiA+ICsNCj4gPg0KPiA+DQo+ID4gKyNpZm5kZWYgUklTQ1ZfU0JJX0xJQl9IXw0KPiA+ DQo+ID4NCj4gPiArI2RlZmluZSBSSVNDVl9TQklfTElCX0hfDQo+ID4NCj4gPg0KPiA+ICsNCj4g Pg0KPiA+DQo+ID4gKyNpbmNsdWRlIDxVZWZpLmg+DQo+ID4NCj4gPg0KPiA+ICsjaW5jbHVkZSA8 SW5kdXN0cnlTdGFuZGFyZC9SaXNjVk9wZW5zYmkuaD4NCj4gPg0KPiA+DQo+ID4gKyNpbmNsdWRl IDxzYmkvc2JpX3NjcmF0Y2guaD4NCj4gPg0KPiA+DQo+ID4gKyNpbmNsdWRlIDxzYmkvc2JpX3Bs YXRmb3JtLmg+DQo+ID4NCj4gPg0KPiA+ICsNCj4gPg0KPiA+DQo+ID4gKy8vDQo+ID4NCj4gPg0K PiA+ICsvLyBFREsyIE9wZW5TQkkgRmlybXdhcmUgZXh0ZW5zaW9uLg0KPiA+DQo+ID4NCj4gPiAr Ly8NCj4gPg0KPiA+DQo+ID4gKyNkZWZpbmUgU0JJX0VESzJfRldfRVhUDQo+ID4gKFNCSV9FWFRf RklSTVdBUkVfQ09ERV9CQVNFX1NUQVJUIHwgU0JJX09QRU5TQklfSU1QSUQpDQo+ID4NCj4gPg0K PiA+ICsvLw0KPiA+DQo+ID4NCj4gPiArLy8gRURLMiBPcGVuU0JJIEZpcm13YXJlIGV4dGVuc2lv biBmdW5jdGlvbnMuDQo+ID4NCj4gPg0KPiA+ICsvLw0KPiA+DQo+ID4NCj4gPiArI2RlZmluZSBT QklfRVhUX0ZXX01TQ1JBVENIX0ZVTkMgICAgICAgIDANCj4gPg0KPiA+DQo+ID4gKyNkZWZpbmUg U0JJX0VYVF9GV19NU0NSQVRDSF9IQVJUSURfRlVOQyAxDQo+ID4NCj4gPg0KPiA+ICsNCj4gPg0K PiA+DQo+ID4gKy8vDQo+ID4NCj4gPg0KPiA+ICsvLyBFREsyIE9wZW5TQkkgZmlybXdhcmUgZXh0 ZW5zaW9uIHJldHVybiBzdGF0dXMuDQo+ID4NCj4gPg0KPiA+ICsvLw0KPiA+DQo+ID4NCj4gPiAr dHlwZWRlZiBzdHJ1Y3Qgew0KPiA+DQo+ID4NCj4gPiArICBVSU5UTiBFcnJvcjsgICAvLy88IFNC SSBzdGF0dXMgY29kZQ0KPiA+DQo+ID4NCj4gPiArICBVSU5UTiBWYWx1ZTsgICAvLy88IFZhbHVl IHJldHVybmVkDQo+ID4NCj4gPg0KPiA+ICt9IFNiaVJldDsNCj4gPg0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4NCj4gPiArLyoqDQo+ID4NCj4gPg0KPiA+ICsgIEdldCB0aGUgaW1wbGVtZW50ZWQgU0JJ IHNwZWNpZmljYXRpb24gdmVyc2lvbg0KPiA+DQo+ID4NCj4gPiArDQo+ID4NCj4gPg0KPiA+ICsg IFRoZSBtaW5vciBudW1iZXIgb2YgdGhlIFNCSSBzcGVjaWZpY2F0aW9uIGlzIGVuY29kZWQNCj4g PiBpbiB0aGUgbG93IDI0IGJpdHMsDQo+ID4NCj4gPg0KPiA+ICsgIHdpdGggdGhlIG1ham9yIG51 bWJlciBlbmNvZGVkIGluIHRoZSBuZXh0IDcgYml0cy4NCj4gPiBCaXQgMzIgbXVzdCBiZSAwIGFu ZCBpcw0KPiA+DQo+ID4NCj4gPiArICByZXNlcnZlZCBmb3IgZnV0dXJlIGV4cGFuc2lvbi4NCj4g Pg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4NCj4gPiArICBAcGFyYW1bb3V0XSBTcGVjVmVyc2lvbiAg ICAgICAgICBUaGUgVmVyc2lvbiBvZiB0aGUNCj4gPiBTQkkgc3BlY2lmaWNhdGlvbi4NCj4gPg0K PiA+DQo+ID4gKyoqLw0KPiA+DQo+ID4NCj4gPiArVk9JRA0KPiA+DQo+ID4NCj4gPiArRUZJQVBJ DQo+ID4NCj4gPg0KPiA+ICtTYmlHZXRTcGVjVmVyc2lvbiAoDQo+ID4NCj4gPg0KPiA+ICsgIE9V VCBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgKlNwZWNWZXJzaW9uDQo+ID4NCj4gPg0KPiA+ ICsgICk7DQo+ID4NCj4gPg0KPiA+ICsNCj4gPg0KPiA+DQo+ID4gKy8qKg0KPiA+DQo+ID4NCj4g PiArICBHZXQgdGhlIFNCSSBpbXBsZW1lbnRhdGlvbiBJRA0KPiA+DQo+ID4NCj4gPiArDQo+ID4N Cj4gPg0KPiA+ICsgIFRoaXMgSUQgaXMgdXNlZCB0byBpZGVuZXRpZnkgYSBzcGVjaWZpYyBTQkkN Cj4gPiBpbXBsZW1lbnRhdGlvbiBpbiBvcmRlciB0byB3b3JrDQo+ID4NCj4gPg0KPiA+ICsgIGFy b3VuZCBhbnkgcXVpcmtzIGl0IG1pZ2h0IGhhdmUuDQo+ID4NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ DQo+ID4gKyAgQHBhcmFtW291dF0gSW1wbElkICAgICAgICAgICAgICAgVGhlIElEIG9mIHRoZSBT QkkNCj4gPiBpbXBsZW1lbnRhdGlvbi4NCj4gPg0KPiA+DQo+ID4gKyoqLw0KPiA+DQo+ID4NCj4g PiArVk9JRA0KPiA+DQo+ID4NCj4gPiArRUZJQVBJDQo+ID4NCj4gPg0KPiA+ICtTYmlHZXRJbXBs SWQgKA0KPiA+DQo+ID4NCj4gPiArICBPVVQgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgKklt cGxJZA0KPiA+DQo+ID4NCj4gPiArICApOw0KPiA+DQo+ID4NCj4gPiArDQo+ID4NCj4gPg0KPiA+ ICsvKioNCj4gPg0KPiA+DQo+ID4gKyAgR2V0IHRoZSBTQkkgaW1wbGVtZW50YXRpb24gdmVyc2lv bg0KPiA+DQo+ID4NCj4gPiArDQo+ID4NCj4gPg0KPiA+ICsgIFRoZSB2ZXJzaW9uIG9mIHRoaXMg U0JJIGltcGxlbWVudGF0aW9uLg0KPiA+DQo+ID4NCj4gPiArICBUaGUgZW5jb2Rpbmcgb2YgdGhp cyBudW1iZXIgaXMgZGV0ZXJtaW5lZCBieSB0aGUNCj4gPiBzcGVjaWZpYyBTQkkgaW1wbGVtZW50 YXRpb24uDQo+ID4NCj4gPg0KPiA+ICsNCj4gPg0KPiA+DQo+ID4gKyAgQHBhcmFtW291dF0gSW1w bFZlcnNpb24gICAgICAgICAgVGhlIHZlcnNpb24gb2YgdGhlDQo+ID4gU0JJIGltcGxlbWVudGF0 aW9uLg0KPiA+DQo+ID4NCj4gPiArKiovDQo+ID4NCj4gPg0KPiA+ICtWT0lEDQo+ID4NCj4gPg0K PiA+ICtFRklBUEkNCj4gPg0KPiA+DQo+ID4gK1NiaUdldEltcGxWZXJzaW9uICgNCj4gPg0KPiA+ DQo+ID4gKyAgT1VUIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAqSW1wbFZlcnNpb24NCj4g Pg0KPiA+DQo+ID4gKyAgKTsNCj4gPg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4NCj4gPiArLyoqDQo+ ID4NCj4gPg0KPiA+ICsgIFByb2JlIHdoZXRoZXIgYW4gU0JJIGV4dGVuc2lvbiBpcyBhdmFpbGFi bGUNCj4gPg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4NCj4gPiArICBQcm9iZVJlc3VsdCBpcyBzZXQg dG8gMCBpZiB0aGUgZXh0ZW5zaW9uIGlzIG5vdA0KPiA+IGF2YWlsYWJsZSBvciB0byBhbiBleHRl bnNpb24NCj4gPg0KPiA+DQo+ID4gKyAgc3BlY2lmaWVkIHZhbHVlIGlmIGl0IGlzIGF2YWlsYWJs ZS4NCj4gPg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4NCj4gPiArICBAcGFyYW1baW5dICBFeHRlbnNp b25JZCAgICAgICAgICBUaGUgZXh0ZW5zaW9uIElELg0KPiA+DQo+ID4NCj4gPiArICBAcGFyYW1b b3V0XSBQcm9iZVJlc3VsdCAgICAgICAgICBUaGUgcmV0dXJuIHZhbHVlIG9mDQo+ID4gdGhlIHBy b2JlLg0KPiA+DQo+ID4NCj4gPiArKiovDQo+ID4NCj4gPg0KPiA+ICtWT0lEDQo+ID4NCj4gPg0K PiA+ICtFRklBUEkNCj4gPg0KPiA+DQo+ID4gK1NiaVByb2JlRXh0ZW5zaW9uICgNCj4gPg0KPiA+ DQo+ID4gKyAgSU4gIElOVE4gICAgICAgICAgICAgICAgICAgICAgICAgRXh0ZW5zaW9uSWQsDQo+ ID4NCj4gPg0KPiA+ICsgIE9VVCBJTlROICAgICAgICAgICAgICAgICAgICAgICAgKlByb2JlUmVz dWx0DQo+ID4NCj4gPg0KPiA+ICsgICk7DQo+ID4NCj4gPg0KPiA+ICsNCj4gPg0KPiA+DQo+ID4g Ky8qKg0KPiA+DQo+ID4NCj4gPiArICBHZXQgdGhlIENQVSdzIHZlbmRvciBJRA0KPiA+DQo+ID4N Cj4gPiArDQo+ID4NCj4gPg0KPiA+ICsgIFJlYWRzIHRoZSBtdmVuZG9yaWQgQ1NSLg0KPiA+DQo+ ID4NCj4gPiArDQo+ID4NCj4gPg0KPiA+ICsgIEBwYXJhbVtvdXRdIE1hY2hpbmVWZW5kb3JJZCAg ICAgIFRoZSBDUFUncyB2ZW5kb3IgSUQuDQo+ID4NCj4gPg0KPiA+ICsqKi8NCj4gPg0KPiA+DQo+ ID4gK1ZPSUQNCj4gPg0KPiA+DQo+ID4gK0VGSUFQSQ0KPiA+DQo+ID4NCj4gPiArU2JpR2V0TWFj aGluZVZlbmRvcklkICgNCj4gPg0KPiA+DQo+ID4gKyAgT1VUIFVJTlROICAgICAgICAgICAgICAg ICAgICAgICAqTWFjaGluZVZlbmRvcklkDQo+ID4NCj4gPg0KPiA+ICsgICk7DQo+ID4NCj4gPg0K PiA+ICsNCj4gPg0KPiA+DQo+ID4gKy8qKg0KPiA+DQo+ID4NCj4gPiArICBHZXQgdGhlIENQVSdz IGFyY2hpdGVjdHVyZSBJRA0KPiA+DQo+ID4NCj4gPiArDQo+ID4NCj4gPg0KPiA+ICsgIFJlYWRz IHRoZSBtYXJjaGlkIENTUi4NCj4gPg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4NCj4gPiArICBAcGFy YW1bb3V0XSBNYWNoaW5lQXJjaElkICAgICAgICBUaGUgQ1BVJ3MNCj4gPiBhcmNoaXRlY3R1cmUg SUQuDQo+ID4NCj4gPg0KPiA+ICsqKi8NCj4gPg0KPiA+DQo+ID4gK1ZPSUQNCj4gPg0KPiA+DQo+ ID4gK0VGSUFQSQ0KPiA+DQo+ID4NCj4gPiArU2JpR2V0TWFjaGluZUFyY2hJZCAoDQo+ID4NCj4g Pg0KPiA+ICsgIE9VVCBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgKk1hY2hpbmVBcmNoSWQN Cj4gPg0KPiA+DQo+ID4gKyAgKTsNCj4gPg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4NCj4gPiArLyoq DQo+ID4NCj4gPg0KPiA+ICsgIEdldCB0aGUgQ1BVJ3MgaW1wbGVtZW50YXRpb24gSUQNCj4gPg0K PiA+DQo+ID4gKw0KPiA+DQo+ID4NCj4gPiArICBSZWFkcyB0aGUgbWltcGlkIENTUi4NCj4gPg0K PiA+DQo+ID4gKw0KPiA+DQo+ID4NCj4gPiArICBAcGFyYW1bb3V0XSBNYWNoaW5lSW1wbElkICAg ICAgICBUaGUgQ1BVJ3MNCj4gPiBpbXBsZW1lbnRhdGlvbiBJRC4NCj4gPg0KPiA+DQo+ID4gKyoq Lw0KPiA+DQo+ID4NCj4gPiArVk9JRA0KPiA+DQo+ID4NCj4gPiArRUZJQVBJDQo+ID4NCj4gPg0K PiA+ICtTYmlHZXRNYWNoaW5lSW1wbElkICgNCj4gPg0KPiA+DQo+ID4gKyAgT1VUIFVJTlROICAg ICAgICAgICAgICAgICAgICAgICAqTWFjaGluZUltcGxJZA0KPiA+DQo+ID4NCj4gPiArICApOw0K PiA+DQo+ID4NCj4gPiArDQo+ID4NCj4gPg0KPiA+ICsvKioNCj4gPg0KPiA+DQo+ID4gKyAgUG9s aXRlbHkgYXNrIHRoZSBTQkkgdG8gc3RhcnQgYSBnaXZlbiBoYXJ0Lg0KPiA+DQo+ID4NCj4gPiAr DQo+ID4NCj4gPg0KPiA+ICsgIFRoaXMgY2FsbCBtYXkgcmV0dXJuIGJlZm9yZSB0aGUgaGFydCBo YXMgYWN0dWFsbHkNCj4gPiBzdGFydGVkIGV4ZWN1dGluZywgaWYgdGhlDQo+ID4NCj4gPg0KPiA+ ICsgIFNCSSBpbXBsZW1lbnRhdGlvbiBjYW4gZ3VhcmFudGVlIHRoYXQgdGhlIGhhcnQgaXMNCj4g PiBhY3R1YWxseSBnb2luZyB0byBzdGFydC4NCj4gPg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4NCj4g PiArICBCZWZvcmUgdGhlIGhhcnQganVtcHMgdG8gU3RhcnRBZGRyLCB0aGUgaGFydCBNVVNUDQo+ ID4gY29uZmlndXJlIFBNUCBpZiBwcmVzZW50DQo+ID4NCj4gPg0KPiA+ICsgIGFuZCBzd2l0Y2gg dG8gUy1tb2RlLg0KPiA+DQo+ID4NCj4gPiArDQo+ID4NCj4gPg0KPiA+ICsgIEBwYXJhbVtpbl0g IEhhcnRJZCAgICAgICAgICAgICAgIFRoZSBpZCBvZiB0aGUgaGFydA0KPiA+IHRvIHN0YXJ0Lg0K PiA+DQo+ID4NCj4gPiArICBAcGFyYW1baW5dICBTdGFydEFkZHIgICAgICAgICAgICBUaGUgcGh5 c2ljYWwNCj4gPiBhZGRyZXNzLCB3aGVyZSB0aGUgaGFydCBzdGFydHMNCj4gPg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhlY3V0aW5nIGZyb20uDQo+ID4N Cj4gPg0KPiA+ICsgIEBwYXJhbVtpbl0gIFByaXYgICAgICAgICAgICAgICAgIEFuIFhMRU4tYml0 IHZhbHVlLA0KPiA+IHdoaWNoIHdpbGwgYmUgaW4gcmVnaXN0ZXINCj4gPg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYTEgd2hlbiB0aGUgaGFydA0KPiA+IHN0 YXJ0cy4NCj4gPg0KPiA+DQo+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgICAg SGFydCB3YXMgc3RvcHBlZCBhbmQNCj4gPiB3aWxsIHN0YXJ0IGV4ZWN1dGluZyBmcm9tIFN0YXJ0 QWRkci4NCj4gPg0KPiA+DQo+ID4gKyAgQHJldHZhbCBFRklfTE9BRF9FUlJPUiAgICAgICAgICAg U3RhcnRBZGRyIGlzIG5vdA0KPiA+IHZhbGlkLCBwb3NzaWJseSBkdWUgdG8gZm9sbG93aW5nIHJl YXNvbnM6DQo+ID4NCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAtIEl0IGlzIG5vdCBhIHZhbGlkDQo+ID4gcGh5c2ljYWwgYWRkcmVzcy4NCj4gPg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gVGhlIGFkZHJlc3MgaXMN Cj4gPiBwcm9oaWJpdGVkIGJ5IFBNUCB0byBydW4gaW4NCj4gPg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwZXJ2aXNvciBtb2RlLg0KPiA+DQo+ID4N Cj4gPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgICBIYXJ0SWQgaXMgbm90IGEN Cj4gPiB2YWxpZCBoYXJ0IGlkDQo+ID4NCj4gPg0KPiA+ICsgIEByZXR2YWwgRUZJX0FMUkVBRFlf U1RBUlRFRCAgICAgIFRoZSBoYXJ0IGlzIGFscmVhZHkNCj4gPiBydW5uaW5nLg0KPiA+DQo+ID4N Cj4gPiArICBAcmV0dmFsIG90aGVyICAgICAgICAgICAgICAgICAgICBUaGUgc3RhcnQgcmVxdWVz dA0KPiA+IGZhaWxlZCBmb3IgdW5rbm93biByZWFzb25zLg0KPiA+DQo+ID4NCj4gPiArKiovDQo+ ID4NCj4gPg0KPiA+ICtFRklfU1RBVFVTDQo+ID4NCj4gPg0KPiA+ICtFRklBUEkNCj4gPg0KPiA+ DQo+ID4gK1NiaUhhcnRTdGFydCAoDQo+ID4NCj4gPg0KPiA+ICsgIElOICBVSU5UTiAgICAgICAg ICAgICAgICAgICAgICAgICAgSGFydElkLA0KPiA+DQo+ID4NCj4gPiArICBJTiAgVUlOVE4gICAg ICAgICAgICAgICAgICAgICAgICAgIFN0YXJ0QWRkciwNCj4gPg0KPiA+DQo+ID4gKyAgSU4gIFVJ TlROICAgICAgICAgICAgICAgICAgICAgICAgICBQcml2DQo+ID4NCj4gPg0KPiA+ICsgICk7DQo+ ID4NCj4gPg0KPiA+ICsNCj4gPg0KPiA+DQo+ID4gKy8qKg0KPiA+DQo+ID4NCj4gPiArICBSZXR1 cm4gZXhlY3V0aW9uIG9mIHRoZSBjYWxsaW5nIGhhcnQgdG8gU0JJLg0KPiA+DQo+ID4NCj4gPiAr DQo+ID4NCj4gPg0KPiA+ICsgIE1VU1QgYmUgY2FsbGVkIGluIFMtTW9kZSB3aXRoIHVzZXIgaW50 ZXJydXB0cw0KPiA+IGRpc2FibGVkLg0KPiA+DQo+ID4NCj4gPiArICBUaGlzIGNhbGwgaXMgbm90 IGV4cGVjdGVkIHRvIHJldHVybiwgdW5sZXNzIGEgZmFpbHVyZQ0KPiA+IG9jY3Vycy4NCj4gPg0K PiA+DQo+ID4gKw0KPiA+DQo+ID4NCj4gPiArICBAcmV0dmFsICAgICBFRklfU1VDQ0VTUyAgICAg ICAgICBOZXZlciBvY2N1cnMuIFdoZW4NCj4gPiBzdWNjZXNzZnVsLCB0aGUgY2FsbCBkb2VzIG5v dCByZXR1cm4uDQo+ID4NCj4gPg0KPiA+ICsgIEByZXR2YWwgICAgIG90aGVyICAgICAgICAgICAg ICAgIEZhaWxlZCB0byBzdG9wIGhhcmQNCj4gPiBmb3IgYW4gdW5rbm93biByZWFzb24uDQo+ID4N Cj4gPg0KPiA+ICsqKi8NCj4gPg0KPiA+DQo+ID4gK0VGSV9TVEFUVVMNCj4gPg0KPiA+DQo+ID4g K0VGSUFQSQ0KPiA+DQo+ID4NCj4gPiArU2JpSGFydFN0b3AgKA0KPiA+DQo+ID4NCj4gPiArICAp Ow0KPiA+DQo+ID4NCj4gPiArDQo+ID4NCj4gPg0KPiA+ICsvKioNCj4gPg0KPiA+DQo+ID4gKyAg R2V0IHRoZSBjdXJyZW50IHN0YXR1cyBvZiBhIGhhcnQuDQo+ID4NCj4gPg0KPiA+ICsNCj4gPg0K PiA+DQo+ID4gKyAgU2luY2UgaGFydHMgY2FuIHRyYW5zaXRpb24gYmV0d2VlbiBzdGF0ZXMgYXQg YW55DQo+ID4gdGltZSwgdGhlIHN0YXR1cyByZXRyaWV2ZWQNCj4gPg0KPiA+DQo+ID4gKyAgYnkg dGhpcyBmdW5jdGlvbiBtYXkgYWxyZWFkeSBiZSBvdXQgb2YgZGF0ZSwgb25jZSBpdA0KPiA+IHJl dHVybnMuDQo+ID4NCj4gPg0KPiA+ICsNCj4gPg0KPiA+DQo+ID4gKyAgUG9zc2libGUgdmFsdWVz IGZvciBIYXJ0U3RhdHVzIGFyZToNCj4gPg0KPiA+DQo+ID4gKyAgMDogU1RBUlRFRA0KPiA+DQo+ ID4NCj4gPiArICAxOiBTVE9QUEVEDQo+ID4NCj4gPg0KPiA+ICsgIDI6IFNUQVJUX1JFUVVFU1Rf UEVORElORw0KPiA+DQo+ID4NCj4gPiArICAzOiBTVE9QX1JFUVVFU1RfUEVORElORw0KPiA+DQo+ ID4NCj4gPiArDQo+ID4NCj4gPg0KPiA+ICsgIEBwYXJhbVtvdXRdIEhhcnRTdGF0dXMgICAgICAg ICAgIFRoZSBwb2ludGVyIGluIHdoaWNoDQo+ID4gdGhlIGhhcnQncyBzdGF0dXMgaXMNCj4gPg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmVkLg0KPiA+ DQo+ID4NCj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICAgICBUaGUgb3BlcmF0 aW9uDQo+ID4gc3VjY2VlZHMuDQo+ID4NCj4gPg0KPiA+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURf UEFSQU1FVEVSICAgIEEgcGFyYW1ldGVyIGlzDQo+ID4gaW52YWxpZC4NCj4gPg0KPiA+DQo+ID4g KyoqLw0KPiA+DQo+ID4NCj4gPiArRUZJX1NUQVRVUw0KPiA+DQo+ID4NCj4gPiArRUZJQVBJDQo+ ID4NCj4gPg0KPiA+ICtTYmlIYXJ0R2V0U3RhdHVzICgNCj4gPg0KPiA+DQo+ID4gKyAgSU4gIFVJ TlROICAgICAgICAgICAgICAgICAgICAgICAgICBIYXJ0SWQsDQo+ID4NCj4gPg0KPiA+ICsgIE9V VCBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAqSGFydFN0YXR1cw0KPiA+DQo+ID4NCj4g PiArICApOw0KPiA+DQo+ID4NCj4gPiArDQo+ID4NCj4gPg0KPiA+ICsvLy8NCj4gPg0KPiA+DQo+ ID4gKy8vLyBUaW1lciBleHRlbnNpb24NCj4gPg0KPiA+DQo+ID4gKy8vLw0KPiA+DQo+ID4NCj4g PiArDQo+ID4NCj4gPg0KPiA+ICsvKioNCj4gPg0KPiA+DQo+ID4gKyAgQ2xlYXIgcGVuZGluZyB0 aW1lciBpbnRlcnJ1cHQgYml0IGFuZCBzZXQgdGltZXIgZm9yDQo+ID4gbmV4dCBldmVudCBhZnRl ciBUaW1lLg0KPiA+DQo+ID4NCj4gPiArDQo+ID4NCj4gPg0KPiA+ICsgIFRvIGNsZWFyIHRoZSB0 aW1lciB3aXRob3V0IHNjaGVkdWxpbmcgYSB0aW1lciBldmVudCwNCj4gPiBzZXQgVGltZSB0byBh DQo+ID4NCj4gPg0KPiA+ICsgIHByYWN0aWNhbGx5IGluZmluaXRlIHZhbHVlIG9yIG1hc2sgdGhl IHRpbWVyDQo+ID4gaW50ZXJydXB0IGJ5IGNsZWFyaW5nIHNpZS5TVElFLg0KPiA+DQo+ID4NCj4g PiArDQo+ID4NCj4gPg0KPiA+ICsgIEBwYXJhbVtpbl0gIFRpbWUgICAgICAgICAgICAgICAgIFRo ZSB0aW1lIG9mZnNldCB0bw0KPiA+IHRoZSBuZXh0IHNjaGVkdWxlZCB0aW1lciBpbnRlcnJ1cHQu DQo+ID4NCj4gPg0KPiA+ICsqKi8NCj4gPg0KPiA+DQo+ID4gK1ZPSUQNCj4gPg0KPiA+DQo+ID4g K0VGSUFQSQ0KPiA+DQo+ID4NCj4gPiArU2JpU2V0VGltZXIgKA0KPiA+DQo+ID4NCj4gPiArICBJ TiAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICAgICAgIFRpbWUNCj4gPg0KPiA+DQo+ID4gKyAg KTsNCj4gPg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4NCj4gPiArLy8vDQo+ID4NCj4gPg0KPiA+ICsv Ly8gSVBJIGV4dGVuc2lvbg0KPiA+DQo+ID4NCj4gPiArLy8vDQo+ID4NCj4gPg0KPiA+ICsNCj4g Pg0KPiA+DQo+ID4gKy8qKg0KPiA+DQo+ID4NCj4gPiArICBTZW5kIElQSSB0byBhbGwgaGFydHMg c3BlY2lmaWVkIGluIHRoZSBtYXNrLg0KPiA+DQo+ID4NCj4gPiArDQo+ID4NCj4gPg0KPiA+ICsg IFRoZSBpbnRlcnJ1cHRzIGFyZSByZWdpc3RlcmVkIGFzIHN1cGVydmlzb3Igc29mdHdhcmUNCj4g PiBpbnRlcnJ1cHRzIGF0IHRoZQ0KPiA+DQo+ID4NCj4gPiArICByZWNlaXZpbmcgaGFydC4NCj4g Pg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4NCj4gPiArICBAcGFyYW1baW5dICBIYXJ0TWFzayAgICAg ICAgICAgICBTY2FsYXIgYml0LXZlY3Rvcg0KPiA+IGNvbnRhaW5pbmcgaGFydCBpZHMNCj4gPg0K PiA+DQo+ID4gKyAgQHBhcmFtW2luXSAgSGFydE1hc2tCYXNlICAgICAgICAgVGhlIHN0YXJ0aW5n IGhhcnRpZA0KPiA+IGZyb20gd2hpY2ggdGhlIGJpdC12ZWN0b3INCj4gPg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVzdCBiZSBjb21wdXRlZC4gSWYNCj4g PiBzZXQgdG8gLTEsIEhhcnRNYXNrIGlzDQo+ID4NCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGlnbm9yZWQgYW5kIGFsbA0KPiA+IGhhcnRzIGFyZSBjb25zaWRl cmVkLg0KPiA+DQo+ID4NCj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICAgICBJ UEkgd2FzIHNlbnQgdG8gYWxsDQo+ID4gdGhlIHRhcmdldGVkIGhhcnRzLg0KPiA+DQo+ID4NCj4g PiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgICBFaXRoZXINCj4gPiBoYXJ0X21h c2tfYmFzZSBvciBhbnkgb2YgdGhlIGhhcnRpZA0KPiA+DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBmcm9tIGhhcnRfbWFzayBpcw0KPiA+IG5vdCB2YWxpZCBp LmUuIGVpdGhlciB0aGUNCj4gPg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaGFydGlkIGlzIG5vdA0KPiA+IGVuYWJsZWQgYnkgdGhlIHBsYXRmb3JtIG9yIGlz DQo+ID4NCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdCBh dmFpbGFibGUgdG8gdGhlDQo+ID4gc3VwZXJ2aXNvci4NCj4gPg0KPiA+DQo+ID4gKyoqLw0KPiA+ DQo+ID4NCj4gPiArRUZJX1NUQVRVUw0KPiA+DQo+ID4NCj4gPiArRUZJQVBJDQo+ID4NCj4gPg0K PiA+ICtTYmlTZW5kSXBpICgNCj4gPg0KPiA+DQo+ID4gKyAgSU4gIFVJTlROICAgICAgICAgICAg ICAgICAgICAgICAgICpIYXJ0TWFzaywNCj4gPg0KPiA+DQo+ID4gKyAgSU4gIFVJTlROICAgICAg ICAgICAgICAgICAgICAgICAgICBIYXJ0TWFza0Jhc2UNCj4gPg0KPiA+DQo+ID4gKyAgKTsNCj4g Pg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4NCj4gPiArLy8vDQo+ID4NCj4gPg0KPiA+ICsvLy8gUmVt b3RlIGZlbmNlIGV4dGVuc2lvbg0KPiA+DQo+ID4NCj4gPiArLy8vDQo+ID4NCj4gPg0KPiA+ICsN Cj4gPg0KPiA+DQo+ID4gKy8qKg0KPiA+DQo+ID4NCj4gPiArICBJbnN0cnVjdHMgcmVtb3RlIGhh cnRzIHRvIGV4ZWN1dGUgYSBGRU5DRS5JDQo+ID4gaW5zdHJ1Y3Rpb24uDQo+ID4NCj4gPg0KPiA+ ICsNCj4gPg0KPiA+DQo+ID4gKyAgQHBhcmFtW2luXSAgSGFydE1hc2sgICAgICAgICAgICAgU2Nh bGFyIGJpdC12ZWN0b3INCj4gPiBjb250YWluaW5nIGhhcnQgaWRzDQo+ID4NCj4gPg0KPiA+ICsg IEBwYXJhbVtpbl0gIEhhcnRNYXNrQmFzZSAgICAgICAgIFRoZSBzdGFydGluZyBoYXJ0aWQNCj4g PiBmcm9tIHdoaWNoIHRoZSBiaXQtdmVjdG9yDQo+ID4NCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG11c3QgYmUgY29tcHV0ZWQuIElmDQo+ID4gc2V0IHRvIC0x LCBIYXJ0TWFzayBpcw0KPiA+DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBpZ25vcmVkIGFuZCBhbGwNCj4gPiBoYXJ0cyBhcmUgY29uc2lkZXJlZC4NCj4gPg0K PiA+DQo+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgICAgSVBJIHdhcyBzZW50 IHRvIGFsbA0KPiA+IHRoZSB0YXJnZXRlZCBoYXJ0cy4NCj4gPg0KPiA+DQo+ID4gKyAgQHJldHZh bCBFRklfSU5WQUxJRF9QQVJBTUVURVIgICAgRWl0aGVyDQo+ID4gaGFydF9tYXNrX2Jhc2Ugb3Ig YW55IG9mIHRoZSBoYXJ0aWQNCj4gPg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZnJvbSBoYXJ0X21hc2sgaXMNCj4gPiBub3QgdmFsaWQgaS5lLiBlaXRoZXIg dGhlDQo+ID4NCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhh cnRpZCBpcyBub3QNCj4gPiBlbmFibGVkIGJ5IHRoZSBwbGF0Zm9ybSBvciBpcw0KPiA+DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3QgYXZhaWxhYmxlIHRv IHRoZQ0KPiA+IHN1cGVydmlzb3IuDQo+ID4NCj4gPg0KPiA+ICsqKi8NCj4gPg0KPiA+DQo+ID4g K0VGSV9TVEFUVVMNCj4gPg0KPiA+DQo+ID4gK0VGSUFQSQ0KPiA+DQo+ID4NCj4gPiArU2JpUmVt b3RlRmVuY2VJICgNCj4gPg0KPiA+DQo+ID4gKyAgSU4gIFVJTlROICAgICAgICAgICAgICAgICAg ICAgICAgICpIYXJ0TWFzaywNCj4gPg0KPiA+DQo+ID4gKyAgSU4gIFVJTlROICAgICAgICAgICAg ICAgICAgICAgICAgICBIYXJ0TWFza0Jhc2UNCj4gPg0KPiA+DQo+ID4gKyAgKTsNCj4gPg0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4NCj4gPiArLyoqDQo+ID4NCj4gPg0KPiA+ICsgIEluc3RydWN0cyB0 aGUgcmVtb3RlIGhhcnRzIHRvIGV4ZWN1dGUgb25lIG9yIG1vcmUNCj4gPiBTRkVOQ0UuVk1BIGlu c3RydWN0aW9ucy4NCj4gPg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4NCj4gPiArICBUaGUgU0ZFTkNF LlZNQSBjb3ZlcnMgdGhlIHJhbmdlIG9mIHZpcnR1YWwgYWRkcmVzc2VzDQo+ID4gYmV0d2VlbiBT dGFydEFhZGRyIGFuZCBTaXplLg0KPiA+DQo+ID4NCj4gPiArDQo+ID4NCj4gPg0KPiA+ICsgIFRo ZSByZW1vdGUgZmVuY2UgZnVuY3Rpb24gYWN0cyBhcyBhIGZ1bGwgdGxiIGZsdXNoIGlmDQo+ID4g KiBTdGFydEFkZHIgYW5kIHNpemUNCj4gPg0KPiA+DQo+ID4gKyAgYXJlIGJvdGggMCAqIHNpemUg aXMgZXF1YWwgdG8gMl5YTEVOLTENCj4gPg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4NCj4gPiArICBA cGFyYW1baW5dICBIYXJ0TWFzayAgICAgICAgICAgICBTY2FsYXIgYml0LXZlY3Rvcg0KPiA+IGNv bnRhaW5pbmcgaGFydCBpZHMNCj4gPg0KPiA+DQo+ID4gKyAgQHBhcmFtW2luXSAgSGFydE1hc2tC YXNlICAgICAgICAgVGhlIHN0YXJ0aW5nIGhhcnRpZA0KPiA+IGZyb20gd2hpY2ggdGhlIGJpdC12 ZWN0b3INCj4gPg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg bXVzdCBiZSBjb21wdXRlZC4gSWYNCj4gPiBzZXQgdG8gLTEsIEhhcnRNYXNrIGlzDQo+ID4NCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZWQgYW5kIGFs bA0KPiA+IGhhcnRzIGFyZSBjb25zaWRlcmVkLg0KPiA+DQo+ID4NCj4gPiArICBAcGFyYW1baW5d ICBTdGFydEFkZHIgICAgICAgICAgICBUaGUgZmlyc3QgYWRkcmVzcyBvZg0KPiA+IHRoZSBhZmZl Y3RlZCByYW5nZS4NCj4gPg0KPiA+DQo+ID4gKyAgQHBhcmFtW2luXSAgU2l6ZSAgICAgICAgICAg ICAgICAgSG93IG1hbnkgYWRkcmVzc2VzDQo+ID4gYXJlIGFmZmVjdGVkLg0KPiA+DQo+ID4NCj4g PiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICAgICBJUEkgd2FzIHNlbnQgdG8gYWxs DQo+ID4gdGhlIHRhcmdldGVkIGhhcnRzLg0KPiA+DQo+ID4NCj4gPiArICBAcmV0dmFsIEVGSV9M T0FEX0VSUk9SICAgICAgICAgICBTdGFydEFkZHIgb3IgU2l6ZSBpcw0KPiA+IG5vdCB2YWxpZC4N Cj4gPg0KPiA+DQo+ID4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgICAgRWl0aGVy DQo+ID4gaGFydF9tYXNrX2Jhc2Ugb3IgYW55IG9mIHRoZSBoYXJ0aWQNCj4gPg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSBoYXJ0X21hc2sgaXMNCj4g PiBub3QgdmFsaWQgaS5lLiBlaXRoZXIgdGhlDQo+ID4NCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGhhcnRpZCBpcyBub3QNCj4gPiBlbmFibGVkIGJ5IHRoZSBw bGF0Zm9ybSBvciBpcw0KPiA+DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBub3QgYXZhaWxhYmxlIHRvIHRoZQ0KPiA+IHN1cGVydmlzb3IuDQo+ID4NCj4gPg0K PiA+ICsqKi8NCj4gPg0KPiA+DQo+ID4gK0VGSV9TVEFUVVMNCj4gPg0KPiA+DQo+ID4gK0VGSUFQ SQ0KPiA+DQo+ID4NCj4gPiArU2JpUmVtb3RlU2ZlbmNlVm1hICgNCj4gPg0KPiA+DQo+ID4gKyAg SU4gIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICpIYXJ0TWFzaywNCj4gPg0KPiA+DQo+ ID4gKyAgSU4gIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICBIYXJ0TWFza0Jhc2UsDQo+ ID4NCj4gPg0KPiA+ICsgIElOICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhcnRB ZGRyLA0KPiA+DQo+ID4NCj4gPiArICBJTiAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAg IFNpemUNCj4gPg0KPiA+DQo+ID4gKyAgKTsNCj4gPg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4NCj4g PiArLyoqDQo+ID4NCj4gPg0KPiA+ICsgIEluc3RydWN0cyB0aGUgcmVtb3RlIGhhcnRzIHRvIGV4 ZWN1dGUgb25lIG9yIG1vcmUNCj4gPiBTRkVOQ0UuVk1BIGluc3RydWN0aW9ucy4NCj4gPg0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4NCj4gPiArICBUaGUgU0ZFTkNFLlZNQSBjb3ZlcnMgdGhlIHJhbmdl IG9mIHZpcnR1YWwgYWRkcmVzc2VzDQo+ID4gYmV0d2VlbiBTdGFydEFhZGRyIGFuZCBTaXplLg0K PiA+DQo+ID4NCj4gPiArICBDb3ZlcnMgb25seSB0aGUgZ2l2ZW4gQVNJRC4NCj4gPg0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4NCj4gPiArICBUaGUgcmVtb3RlIGZlbmNlIGZ1bmN0aW9uIGFjdHMgYXMg YSBmdWxsIHRsYiBmbHVzaCBpZg0KPiA+ICogU3RhcnRBZGRyIGFuZCBzaXplDQo+ID4NCj4gPg0K PiA+ICsgIGFyZSBib3RoIDAgKiBzaXplIGlzIGVxdWFsIHRvIDJeWExFTi0xDQo+ID4NCj4gPg0K PiA+ICsNCj4gPg0KPiA+DQo+ID4gKyAgQHBhcmFtW2luXSAgSGFydE1hc2sgICAgICAgICAgICAg U2NhbGFyIGJpdC12ZWN0b3INCj4gPiBjb250YWluaW5nIGhhcnQgaWRzDQo+ID4NCj4gPg0KPiA+ ICsgIEBwYXJhbVtpbl0gIEhhcnRNYXNrQmFzZSAgICAgICAgIFRoZSBzdGFydGluZyBoYXJ0aWQN Cj4gPiBmcm9tIHdoaWNoIHRoZSBiaXQtdmVjdG9yDQo+ID4NCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG11c3QgYmUgY29tcHV0ZWQuIElmDQo+ID4gc2V0IHRv IC0xLCBIYXJ0TWFzayBpcw0KPiA+DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpZ25vcmVkIGFuZCBhbGwNCj4gPiBoYXJ0cyBhcmUgY29uc2lkZXJlZC4NCj4g Pg0KPiA+DQo+ID4gKyAgQHBhcmFtW2luXSAgU3RhcnRBZGRyICAgICAgICAgICAgVGhlIGZpcnN0 IGFkZHJlc3Mgb2YNCj4gPiB0aGUgYWZmZWN0ZWQgcmFuZ2UuDQo+ID4NCj4gPg0KPiA+ICsgIEBw YXJhbVtpbl0gIFNpemUgICAgICAgICAgICAgICAgIEhvdyBtYW55IGFkZHJlc3Nlcw0KPiA+IGFy ZSBhZmZlY3RlZC4NCj4gPg0KPiA+DQo+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAg ICAgICAgSVBJIHdhcyBzZW50IHRvIGFsbA0KPiA+IHRoZSB0YXJnZXRlZCBoYXJ0cy4NCj4gPg0K PiA+DQo+ID4gKyAgQHJldHZhbCBFRklfTE9BRF9FUlJPUiAgICAgICAgICAgU3RhcnRBZGRyIG9y IFNpemUgaXMNCj4gPiBub3QgdmFsaWQuDQo+ID4NCj4gPg0KPiA+ICsgIEByZXR2YWwgRUZJX0lO VkFMSURfUEFSQU1FVEVSICAgIEVpdGhlcg0KPiA+IGhhcnRfbWFza19iYXNlIG9yIGFueSBvZiB0 aGUgaGFydGlkDQo+ID4NCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGZyb20gaGFydF9tYXNrIGlzDQo+ID4gbm90IHZhbGlkIGkuZS4gZWl0aGVyIHRoZQ0KPiA+ DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXJ0aWQgaXMg bm90DQo+ID4gZW5hYmxlZCBieSB0aGUgcGxhdGZvcm0gb3IgaXMNCj4gPg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90IGF2YWlsYWJsZSB0byB0aGUNCj4g PiBzdXBlcnZpc29yLg0KPiA+DQo+ID4NCj4gPiArKiovDQo+ID4NCj4gPg0KPiA+ICtFRklfU1RB VFVTDQo+ID4NCj4gPg0KPiA+ICtFRklBUEkNCj4gPg0KPiA+DQo+ID4gK1NiaVJlbW90ZVNmZW5j ZVZtYUFzaWQgKA0KPiA+DQo+ID4NCj4gPiArICBJTiAgVUlOVE4gICAgICAgICAgICAgICAgICAg ICAgICAgKkhhcnRNYXNrLA0KPiA+DQo+ID4NCj4gPiArICBJTiAgVUlOVE4gICAgICAgICAgICAg ICAgICAgICAgICAgIEhhcnRNYXNrQmFzZSwNCj4gPg0KPiA+DQo+ID4gKyAgSU4gIFVJTlROICAg ICAgICAgICAgICAgICAgICAgICAgICBTdGFydEFkZHIsDQo+ID4NCj4gPg0KPiA+ICsgIElOICBV SU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgU2l6ZSwNCj4gPg0KPiA+DQo+ID4gKyAgSU4g IFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICBBc2lkDQo+ID4NCj4gPg0KPiA+ICsgICk7 DQo+ID4NCj4gPg0KPiA+ICsNCj4gPg0KPiA+DQo+ID4gKy8qKg0KPiA+DQo+ID4NCj4gPiArICBJ bnN0cnVjdHMgdGhlIHJlbW90ZSBoYXJ0cyB0byBleGVjdXRlIG9uZSBvciBtb3JlDQo+ID4gU0ZF TkNFLkdWTUEgaW5zdHJ1Y3Rpb25zLg0KPiA+DQo+ID4NCj4gPiArDQo+ID4NCj4gPg0KPiA+ICsg IFRoZSBTRkVOQ0UuR1ZNQSBjb3ZlcnMgdGhlIHJhbmdlIG9mIHZpcnR1YWwgYWRkcmVzc2VzDQo+ ID4gYmV0d2VlbiBTdGFydEFhZGRyIGFuZCBTaXplLg0KPiA+DQo+ID4NCj4gPiArICBDb3ZlcnMg b25seSB0aGUgZ2l2ZW4gVk1JRC4NCj4gPg0KPiA+DQo+ID4gKyAgVGhpcyBmdW5jdGlvbiBjYWxs IGlzIG9ubHkgdmFsaWQgZm9yIGhhcnRzDQo+ID4gaW1wbGVtZW50aW5nIHRoZSBoeXBlcnZpc29y IGV4dGVuc2lvbi4NCj4gPg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4NCj4gPiArICBUaGUgcmVtb3Rl IGZlbmNlIGZ1bmN0aW9uIGFjdHMgYXMgYSBmdWxsIHRsYiBmbHVzaCBpZg0KPiA+ICogU3RhcnRB ZGRyIGFuZCBzaXplDQo+ID4NCj4gPg0KPiA+ICsgIGFyZSBib3RoIDAgKiBzaXplIGlzIGVxdWFs IHRvIDJeWExFTi0xDQo+ID4NCj4gPg0KPiA+ICsNCj4gPg0KPiA+DQo+ID4gKyAgQHBhcmFtW2lu XSAgSGFydE1hc2sgICAgICAgICAgICAgU2NhbGFyIGJpdC12ZWN0b3INCj4gPiBjb250YWluaW5n IGhhcnQgaWRzDQo+ID4NCj4gPg0KPiA+ICsgIEBwYXJhbVtpbl0gIEhhcnRNYXNrQmFzZSAgICAg ICAgIFRoZSBzdGFydGluZyBoYXJ0aWQNCj4gPiBmcm9tIHdoaWNoIHRoZSBiaXQtdmVjdG9yDQo+ ID4NCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11c3QgYmUg Y29tcHV0ZWQuIElmDQo+ID4gc2V0IHRvIC0xLCBIYXJ0TWFzayBpcw0KPiA+DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmVkIGFuZCBhbGwNCj4gPiBo YXJ0cyBhcmUgY29uc2lkZXJlZC4NCj4gPg0KPiA+DQo+ID4gKyAgQHBhcmFtW2luXSAgU3RhcnRB ZGRyICAgICAgICAgICAgVGhlIGZpcnN0IGFkZHJlc3Mgb2YNCj4gPiB0aGUgYWZmZWN0ZWQgcmFu Z2UuDQo+ID4NCj4gPg0KPiA+ICsgIEBwYXJhbVtpbl0gIFNpemUgICAgICAgICAgICAgICAgIEhv dyBtYW55IGFkZHJlc3Nlcw0KPiA+IGFyZSBhZmZlY3RlZC4NCj4gPg0KPiA+DQo+ID4gKyAgQHJl dHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgICAgSVBJIHdhcyBzZW50IHRvIGFsbA0KPiA+IHRo ZSB0YXJnZXRlZCBoYXJ0cy4NCj4gPg0KPiA+DQo+ID4gKyAgQHJldHZhbCBFRklfTE9BRF9FUlJP UiAgICAgICAgICAgU3RhcnRBZGRyIG9yIFNpemUgaXMNCj4gPiBub3QgdmFsaWQuDQo+ID4NCj4g Pg0KPiA+ICsgIEByZXR2YWwgRUZJX1VOU1VQUE9SVEVEICAgICAgICAgIFNCSSBkb2VzIG5vdA0K PiA+IGltcGxlbWVudCB0aGlzIGZ1bmN0aW9uIG9yIG9uZQ0KPiA+DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiB0aGUgdGFyZ2V0IGhhcnRzDQo+ID4gZG9l cyBub3Qgc3VwcG9ydCB0aGUNCj4gPg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaHlwZXJ2aXNvcg0KPiA+IGV4dGVuc2lvbi4NCj4gPg0KPiA+DQo+ID4gKyAg QHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgICAgRWl0aGVyDQo+ID4gaGFydF9tYXNrX2Jh c2Ugb3IgYW55IG9mIHRoZSBoYXJ0aWQNCj4gPg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZnJvbSBoYXJ0X21hc2sgaXMNCj4gPiBub3QgdmFsaWQgaS5lLiBl aXRoZXIgdGhlDQo+ID4NCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGhhcnRpZCBpcyBub3QNCj4gPiBlbmFibGVkIGJ5IHRoZSBwbGF0Zm9ybSBvciBpcw0KPiA+ DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3QgYXZhaWxh YmxlIHRvIHRoZQ0KPiA+IHN1cGVydmlzb3IuDQo+ID4NCj4gPg0KPiA+ICsqKi8NCj4gPg0KPiA+ DQo+ID4gK0VGSV9TVEFUVVMNCj4gPg0KPiA+DQo+ID4gK0VGSUFQSQ0KPiA+DQo+ID4NCj4gPiAr U2JpUmVtb3RlSGZlbmNlR3ZtYVZtaWQgKA0KPiA+DQo+ID4NCj4gPiArICBJTiAgVUlOVE4gICAg ICAgICAgICAgICAgICAgICAgICAgKkhhcnRNYXNrLA0KPiA+DQo+ID4NCj4gPiArICBJTiAgVUlO VE4gICAgICAgICAgICAgICAgICAgICAgICAgIEhhcnRNYXNrQmFzZSwNCj4gPg0KPiA+DQo+ID4g KyAgSU4gIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICBTdGFydEFkZHIsDQo+ID4NCj4g Pg0KPiA+ICsgIElOICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgU2l6ZSwNCj4gPg0K PiA+DQo+ID4gKyAgSU4gIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICBWbWlkDQo+ID4N Cj4gPg0KPiA+ICsgICk7DQo+ID4NCj4gPg0KPiA+ICsNCj4gPg0KPiA+DQo+ID4gKy8qKg0KPiA+ DQo+ID4NCj4gPiArICBJbnN0cnVjdHMgdGhlIHJlbW90ZSBoYXJ0cyB0byBleGVjdXRlIG9uZSBv ciBtb3JlDQo+ID4gU0ZFTkNFLkdWTUEgaW5zdHJ1Y3Rpb25zLg0KPiA+DQo+ID4NCj4gPiArDQo+ ID4NCj4gPg0KPiA+ICsgIFRoZSBTRkVOQ0UuR1ZNQSBjb3ZlcnMgdGhlIHJhbmdlIG9mIHZpcnR1 YWwgYWRkcmVzc2VzDQo+ID4gYmV0d2VlbiBTdGFydEFhZGRyIGFuZCBTaXplLg0KPiA+DQo+ID4N Cj4gPiArICBUaGlzIGZ1bmN0aW9uIGNhbGwgaXMgb25seSB2YWxpZCBmb3IgaGFydHMNCj4gPiBp bXBsZW1lbnRpbmcgdGhlIGh5cGVydmlzb3IgZXh0ZW5zaW9uLg0KPiA+DQo+ID4NCj4gPiArDQo+ ID4NCj4gPg0KPiA+ICsgIFRoZSByZW1vdGUgZmVuY2UgZnVuY3Rpb24gYWN0cyBhcyBhIGZ1bGwg dGxiIGZsdXNoIGlmDQo+ID4gKiBTdGFydEFkZHIgYW5kIHNpemUNCj4gPg0KPiA+DQo+ID4gKyAg YXJlIGJvdGggMCAqIHNpemUgaXMgZXF1YWwgdG8gMl5YTEVOLTENCj4gPg0KPiA+DQo+ID4gKw0K PiA+DQo+ID4NCj4gPiArICBAcGFyYW1baW5dICBIYXJ0TWFzayAgICAgICAgICAgICBTY2FsYXIg Yml0LXZlY3Rvcg0KPiA+IGNvbnRhaW5pbmcgaGFydCBpZHMNCj4gPg0KPiA+DQo+ID4gKyAgQHBh cmFtW2luXSAgSGFydE1hc2tCYXNlICAgICAgICAgVGhlIHN0YXJ0aW5nIGhhcnRpZA0KPiA+IGZy b20gd2hpY2ggdGhlIGJpdC12ZWN0b3INCj4gPg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbXVzdCBiZSBjb21wdXRlZC4gSWYNCj4gPiBzZXQgdG8gLTEsIEhh cnRNYXNrIGlzDQo+ID4NCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGlnbm9yZWQgYW5kIGFsbA0KPiA+IGhhcnRzIGFyZSBjb25zaWRlcmVkLg0KPiA+DQo+ID4N Cj4gPiArICBAcGFyYW1baW5dICBTdGFydEFkZHIgICAgICAgICAgICBUaGUgZmlyc3QgYWRkcmVz cyBvZg0KPiA+IHRoZSBhZmZlY3RlZCByYW5nZS4NCj4gPg0KPiA+DQo+ID4gKyAgQHBhcmFtW2lu XSAgU2l6ZSAgICAgICAgICAgICAgICAgSG93IG1hbnkgYWRkcmVzc2VzDQo+ID4gYXJlIGFmZmVj dGVkLg0KPiA+DQo+ID4NCj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICAgICBJ UEkgd2FzIHNlbnQgdG8gYWxsDQo+ID4gdGhlIHRhcmdldGVkIGhhcnRzLg0KPiA+DQo+ID4NCj4g PiArICBAcmV0dmFsIEVGSV9MT0FEX0VSUk9SICAgICAgICAgICBTdGFydEFkZHIgb3IgU2l6ZSBp cw0KPiA+IG5vdCB2YWxpZC4NCj4gPg0KPiA+DQo+ID4gKyAgQHJldHZhbCBFRklfVU5TVVBQT1JU RUQgICAgICAgICAgU0JJIGRvZXMgbm90DQo+ID4gaW1wbGVtZW50IHRoaXMgZnVuY3Rpb24gb3Ig b25lDQo+ID4NCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9m IHRoZSB0YXJnZXQgaGFydHMNCj4gPiBkb2VzIG5vdCBzdXBwb3J0IHRoZQ0KPiA+DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoeXBlcnZpc29yDQo+ID4gZXh0 ZW5zaW9uLg0KPiA+DQo+ID4NCj4gPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAg ICBFaXRoZXINCj4gPiBoYXJ0X21hc2tfYmFzZSBvciBhbnkgb2YgdGhlIGhhcnRpZA0KPiA+DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIGhhcnRfbWFz ayBpcw0KPiA+IG5vdCB2YWxpZCBpLmUuIGVpdGhlciB0aGUNCj4gPg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFydGlkIGlzIG5vdA0KPiA+IGVuYWJsZWQg YnkgdGhlIHBsYXRmb3JtIG9yIGlzDQo+ID4NCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG5vdCBhdmFpbGFibGUgdG8gdGhlDQo+ID4gc3VwZXJ2aXNvci4NCj4g Pg0KPiA+DQo+ID4gKyoqLw0KPiA+DQo+ID4NCj4gPiArRUZJX1NUQVRVUw0KPiA+DQo+ID4NCj4g PiArRUZJQVBJDQo+ID4NCj4gPg0KPiA+ICtTYmlSZW1vdGVIZmVuY2VHdm1hICgNCj4gPg0KPiA+ DQo+ID4gKyAgSU4gIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICpIYXJ0TWFzaywNCj4g Pg0KPiA+DQo+ID4gKyAgSU4gIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICBIYXJ0TWFz a0Jhc2UsDQo+ID4NCj4gPg0KPiA+ICsgIElOICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAg ICAgU3RhcnRBZGRyLA0KPiA+DQo+ID4NCj4gPiArICBJTiAgVUlOVE4gICAgICAgICAgICAgICAg ICAgICAgICAgIFNpemUNCj4gPg0KPiA+DQo+ID4gKyAgKTsNCj4gPg0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4NCj4gPiArLyoqDQo+ID4NCj4gPg0KPiA+ICsgIEluc3RydWN0cyB0aGUgcmVtb3RlIGhh cnRzIHRvIGV4ZWN1dGUgb25lIG9yIG1vcmUNCj4gPiBTRkVOQ0UuVlZNQSBpbnN0cnVjdGlvbnMu DQo+ID4NCj4gPg0KPiA+ICsNCj4gPg0KPiA+DQo+ID4gKyAgVGhlIFNGRU5DRS5HVk1BIGNvdmVy cyB0aGUgcmFuZ2Ugb2YgdmlydHVhbCBhZGRyZXNzZXMNCj4gPiBiZXR3ZWVuIFN0YXJ0QWFkZHIg YW5kIFNpemUuDQo+ID4NCj4gPg0KPiA+ICsgIENvdmVycyBvbmx5IHRoZSBnaXZlbiBBU0lELg0K PiA+DQo+ID4NCj4gPiArICBUaGlzIGZ1bmN0aW9uIGNhbGwgaXMgb25seSB2YWxpZCBmb3IgaGFy dHMNCj4gPiBpbXBsZW1lbnRpbmcgdGhlIGh5cGVydmlzb3IgZXh0ZW5zaW9uLg0KPiA+DQo+ID4N Cj4gPiArDQo+ID4NCj4gPg0KPiA+ICsgIFRoZSByZW1vdGUgZmVuY2UgZnVuY3Rpb24gYWN0cyBh cyBhIGZ1bGwgdGxiIGZsdXNoIGlmDQo+ID4gKiBTdGFydEFkZHIgYW5kIHNpemUNCj4gPg0KPiA+ DQo+ID4gKyAgYXJlIGJvdGggMCAqIHNpemUgaXMgZXF1YWwgdG8gMl5YTEVOLTENCj4gPg0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4NCj4gPiArICBAcGFyYW1baW5dICBIYXJ0TWFzayAgICAgICAgICAg ICBTY2FsYXIgYml0LXZlY3Rvcg0KPiA+IGNvbnRhaW5pbmcgaGFydCBpZHMNCj4gPg0KPiA+DQo+ ID4gKyAgQHBhcmFtW2luXSAgSGFydE1hc2tCYXNlICAgICAgICAgVGhlIHN0YXJ0aW5nIGhhcnRp ZA0KPiA+IGZyb20gd2hpY2ggdGhlIGJpdC12ZWN0b3INCj4gPg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVzdCBiZSBjb21wdXRlZC4gSWYNCj4gPiBzZXQg dG8gLTEsIEhhcnRNYXNrIGlzDQo+ID4NCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGlnbm9yZWQgYW5kIGFsbA0KPiA+IGhhcnRzIGFyZSBjb25zaWRlcmVkLg0K PiA+DQo+ID4NCj4gPiArICBAcGFyYW1baW5dICBTdGFydEFkZHIgICAgICAgICAgICBUaGUgZmly c3QgYWRkcmVzcyBvZg0KPiA+IHRoZSBhZmZlY3RlZCByYW5nZS4NCj4gPg0KPiA+DQo+ID4gKyAg QHBhcmFtW2luXSAgU2l6ZSAgICAgICAgICAgICAgICAgSG93IG1hbnkgYWRkcmVzc2VzDQo+ID4g YXJlIGFmZmVjdGVkLg0KPiA+DQo+ID4NCj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAg ICAgICAgICBJUEkgd2FzIHNlbnQgdG8gYWxsDQo+ID4gdGhlIHRhcmdldGVkIGhhcnRzLg0KPiA+ DQo+ID4NCj4gPiArICBAcmV0dmFsIEVGSV9MT0FEX0VSUk9SICAgICAgICAgICBTdGFydEFkZHIg b3IgU2l6ZSBpcw0KPiA+IG5vdCB2YWxpZC4NCj4gPg0KPiA+DQo+ID4gKyAgQHJldHZhbCBFRklf VU5TVVBQT1JURUQgICAgICAgICAgU0JJIGRvZXMgbm90DQo+ID4gaW1wbGVtZW50IHRoaXMgZnVu Y3Rpb24gb3Igb25lDQo+ID4NCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG9mIHRoZSB0YXJnZXQgaGFydHMNCj4gPiBkb2VzIG5vdCBzdXBwb3J0IHRoZQ0KPiA+ DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoeXBlcnZpc29y DQo+ID4gZXh0ZW5zaW9uLg0KPiA+DQo+ID4NCj4gPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BB UkFNRVRFUiAgICBFaXRoZXINCj4gPiBoYXJ0X21hc2tfYmFzZSBvciBhbnkgb2YgdGhlIGhhcnRp ZA0KPiA+DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9t IGhhcnRfbWFzayBpcw0KPiA+IG5vdCB2YWxpZCBpLmUuIGVpdGhlciB0aGUNCj4gPg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFydGlkIGlzIG5vdA0KPiA+ IGVuYWJsZWQgYnkgdGhlIHBsYXRmb3JtIG9yIGlzDQo+ID4NCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG5vdCBhdmFpbGFibGUgdG8gdGhlDQo+ID4gc3VwZXJ2 aXNvci4NCj4gPg0KPiA+DQo+ID4gKyoqLw0KPiA+DQo+ID4NCj4gPiArRUZJX1NUQVRVUw0KPiA+ DQo+ID4NCj4gPiArRUZJQVBJDQo+ID4NCj4gPg0KPiA+ICtTYmlSZW1vdGVIZmVuY2VWdm1hQXNp ZCAoDQo+ID4NCj4gPg0KPiA+ICsgIElOICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAq SGFydE1hc2ssDQo+ID4NCj4gPg0KPiA+ICsgIElOICBVSU5UTiAgICAgICAgICAgICAgICAgICAg ICAgICAgSGFydE1hc2tCYXNlLA0KPiA+DQo+ID4NCj4gPiArICBJTiAgVUlOVE4gICAgICAgICAg ICAgICAgICAgICAgICAgIFN0YXJ0QWRkciwNCj4gPg0KPiA+DQo+ID4gKyAgSU4gIFVJTlROICAg ICAgICAgICAgICAgICAgICAgICAgICBTaXplLA0KPiA+DQo+ID4NCj4gPiArICBJTiAgVUlOVE4g ICAgICAgICAgICAgICAgICAgICAgICAgIEFzaWQNCj4gPg0KPiA+DQo+ID4gKyAgKTsNCj4gPg0K PiA+DQo+ID4gKw0KPiA+DQo+ID4NCj4gPiArLyoqDQo+ID4NCj4gPg0KPiA+ICsgIEluc3RydWN0 cyB0aGUgcmVtb3RlIGhhcnRzIHRvIGV4ZWN1dGUgb25lIG9yIG1vcmUNCj4gPiBTRkVOQ0UuVlZN QSBpbnN0cnVjdGlvbnMuDQo+ID4NCj4gPg0KPiA+ICsNCj4gPg0KPiA+DQo+ID4gKyAgVGhlIFNG RU5DRS5HVk1BIGNvdmVycyB0aGUgcmFuZ2Ugb2YgdmlydHVhbCBhZGRyZXNzZXMNCj4gPiBiZXR3 ZWVuIFN0YXJ0QWFkZHIgYW5kIFNpemUuDQo+ID4NCj4gPg0KPiA+ICsgIFRoaXMgZnVuY3Rpb24g Y2FsbCBpcyBvbmx5IHZhbGlkIGZvciBoYXJ0cw0KPiA+IGltcGxlbWVudGluZyB0aGUgaHlwZXJ2 aXNvciBleHRlbnNpb24uDQo+ID4NCj4gPg0KPiA+ICsNCj4gPg0KPiA+DQo+ID4gKyAgVGhlIHJl bW90ZSBmZW5jZSBmdW5jdGlvbiBhY3RzIGFzIGEgZnVsbCB0bGIgZmx1c2ggaWYNCj4gPiAqIFN0 YXJ0QWRkciBhbmQgc2l6ZQ0KPiA+DQo+ID4NCj4gPiArICBhcmUgYm90aCAwICogc2l6ZSBpcyBl cXVhbCB0byAyXlhMRU4tMQ0KPiA+DQo+ID4NCj4gPiArDQo+ID4NCj4gPg0KPiA+ICsgIEBwYXJh bVtpbl0gIEhhcnRNYXNrICAgICAgICAgICAgIFNjYWxhciBiaXQtdmVjdG9yDQo+ID4gY29udGFp bmluZyBoYXJ0IGlkcw0KPiA+DQo+ID4NCj4gPiArICBAcGFyYW1baW5dICBIYXJ0TWFza0Jhc2Ug ICAgICAgICBUaGUgc3RhcnRpbmcgaGFydGlkDQo+ID4gZnJvbSB3aGljaCB0aGUgYml0LXZlY3Rv cg0KPiA+DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdXN0 IGJlIGNvbXB1dGVkLiBJZg0KPiA+IHNldCB0byAtMSwgSGFydE1hc2sgaXMNCj4gPg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlZCBhbmQgYWxsDQo+ ID4gaGFydHMgYXJlIGNvbnNpZGVyZWQuDQo+ID4NCj4gPg0KPiA+ICsgIEBwYXJhbVtpbl0gIFN0 YXJ0QWRkciAgICAgICAgICAgIFRoZSBmaXJzdCBhZGRyZXNzIG9mDQo+ID4gdGhlIGFmZmVjdGVk IHJhbmdlLg0KPiA+DQo+ID4NCj4gPiArICBAcGFyYW1baW5dICBTaXplICAgICAgICAgICAgICAg ICBIb3cgbWFueSBhZGRyZXNzZXMNCj4gPiBhcmUgYWZmZWN0ZWQuDQo+ID4NCj4gPg0KPiA+ICsg IEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgICAgIElQSSB3YXMgc2VudCB0byBhbGwNCj4g PiB0aGUgdGFyZ2V0ZWQgaGFydHMuDQo+ID4NCj4gPg0KPiA+ICsgIEByZXR2YWwgRUZJX0xPQURf RVJST1IgICAgICAgICAgIFN0YXJ0QWRkciBvciBTaXplIGlzDQo+ID4gbm90IHZhbGlkLg0KPiA+ DQo+ID4NCj4gPiArICBAcmV0dmFsIEVGSV9VTlNVUFBPUlRFRCAgICAgICAgICBTQkkgZG9lcyBu b3QNCj4gPiBpbXBsZW1lbnQgdGhpcyBmdW5jdGlvbiBvciBvbmUNCj4gPg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgdGhlIHRhcmdldCBoYXJ0cw0KPiA+ IGRvZXMgbm90IHN1cHBvcnQgdGhlDQo+ID4NCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGh5cGVydmlzb3INCj4gPiBleHRlbnNpb24uDQo+ID4NCj4gPg0KPiA+ ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSICAgIEVpdGhlcg0KPiA+IGhhcnRfbWFz a19iYXNlIG9yIGFueSBvZiB0aGUgaGFydGlkDQo+ID4NCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGZyb20gaGFydF9tYXNrIGlzDQo+ID4gbm90IHZhbGlkIGku ZS4gZWl0aGVyIHRoZQ0KPiA+DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBoYXJ0aWQgaXMgbm90DQo+ID4gZW5hYmxlZCBieSB0aGUgcGxhdGZvcm0gb3IgaXMN Cj4gPg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90IGF2 YWlsYWJsZSB0byB0aGUNCj4gPiBzdXBlcnZpc29yLg0KPiA+DQo+ID4NCj4gPiArKiovDQo+ID4N Cj4gPg0KPiA+ICtFRklfU1RBVFVTDQo+ID4NCj4gPg0KPiA+ICtFRklBUEkNCj4gPg0KPiA+DQo+ ID4gK1NiaVJlbW90ZUhmZW5jZVZ2bWEgKA0KPiA+DQo+ID4NCj4gPiArICBJTiAgVUlOVE4gICAg ICAgICAgICAgICAgICAgICAgICAgKkhhcnRNYXNrLA0KPiA+DQo+ID4NCj4gPiArICBJTiAgVUlO VE4gICAgICAgICAgICAgICAgICAgICAgICAgIEhhcnRNYXNrQmFzZSwNCj4gPg0KPiA+DQo+ID4g KyAgSU4gIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICBTdGFydEFkZHIsDQo+ID4NCj4g Pg0KPiA+ICsgIElOICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgU2l6ZQ0KPiA+DQo+ ID4NCj4gPiArICApOw0KPiA+DQo+ID4NCj4gPiArDQo+ID4NCj4gPg0KPiA+ICsvLy8NCj4gPg0K PiA+DQo+ID4gKy8vLyBWZW5kb3IgU3BlY2lmaWMgZXh0ZW5zaW9uIHNwYWNlOiBFeHRlbnNpb24g SWRzDQo+ID4gMHgwOTAwMDAwMCB0aHJvdWdoIDB4MDlGRkZGRkYNCj4gPg0KPiA+DQo+ID4gKy8v Lw0KPiA+DQo+ID4NCj4gPiArDQo+ID4NCj4gPg0KPiA+ICsvKioNCj4gPg0KPiA+DQo+ID4gKyAg Q2FsbCBhIGZ1bmN0aW9uIGluIGEgdmVuZG9yIGRlZmluZWQgU0JJIGV4dGVuc2lvbg0KPiA+DQo+ ID4NCj4gPiArDQo+ID4NCj4gPg0KPiA+ICsgIEFTU0VSVCgpIGlmIHRoZSBFeHRlbnNpb25JZCBp cyBub3QgaW4gdGhlIGRlc2lnbmF0ZWQNCj4gPiBTQkkgVmVuZG9yIEV4dGVuc2lvbg0KPiA+DQo+ ID4NCj4gPiArICBTcGFjZS4NCj4gPg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4NCj4gPiArICBAcGFy YW1baW5dICBFeHRlbnNpb25JZCAgICAgICAgICBUaGUgU0JJIHZlbmRvcg0KPiA+IGV4dGVuc2lv biBJRC4NCj4gPg0KPiA+DQo+ID4gKyAgQHBhcmFtW2luXSAgRnVuY3Rpb25JZCAgICAgICAgICAg VGhlIGZ1bmN0aW9uIElEIHRvDQo+ID4gY2FsbCBpbiB0aGlzIGV4dGVuc2lvbi4NCj4gPg0KPiA+ DQo+ID4gKyAgQHBhcmFtW2luXSAgTnVtQXJncyAgICAgICAgICAgICAgSG93IG1hbnkgYXJndW1l bnRzDQo+ID4gYXJlIHBhc3NlZC4NCj4gPg0KPiA+DQo+ID4gKyAgQHBhcmFtW2luXSAgLi4uICAg ICAgICAgICAgICAgICAgQWN0dWFsIEFyZ3VtZW50cyB0bw0KPiA+IHRoZSBmdW5jdGlvbi4NCj4g Pg0KPiA+DQo+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyBpZiB0aGUgU0JJIGZ1bmN0aW9uIHdh cyBjYWxsZWQNCj4gPiBhbmQgaXQgd2FzIHN1Y2Nlc3NmdWwNCj4gPg0KPiA+DQo+ID4gKyAgQHJl dHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgaWYgTnVtQXJncyBleGNlZWRzIDYNCj4gPg0KPiA+ DQo+ID4gKyAgQHJldHZhbCBvdGhlcnMgaWYgdGhlIGNhbGxlZCBTQkkgZnVuY3Rpb24gcmV0dXJu cyBhbg0KPiA+IGVycm9yDQo+ID4NCj4gPg0KPiA+ICsqKi8NCj4gPg0KPiA+DQo+ID4gK0VGSV9T VEFUVVMNCj4gPg0KPiA+DQo+ID4gK0VGSUFQSQ0KPiA+DQo+ID4NCj4gPiArU2JpVmVuZG9yQ2Fs bCAoDQo+ID4NCj4gPg0KPiA+ICsgIElOICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAg RXh0ZW5zaW9uSWQsDQo+ID4NCj4gPg0KPiA+ICsgIElOICBVSU5UTiAgICAgICAgICAgICAgICAg ICAgICAgICAgRnVuY3Rpb25JZCwNCj4gPg0KPiA+DQo+ID4gKyAgSU4gIFVJTlROICAgICAgICAg ICAgICAgICAgICAgICAgICBOdW1BcmdzLA0KPiA+DQo+ID4NCj4gPiArICAuLi4NCj4gPg0KPiA+ DQo+ID4gKyAgKTsNCj4gPg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4NCj4gPiArLy8vDQo+ID4NCj4g Pg0KPiA+ICsvLy8gRmlybXdhcmUgU0JJIEV4dGVuc2lvbg0KPiA+DQo+ID4NCj4gPiArLy8vDQo+ ID4NCj4gPg0KPiA+ICsvLy8gVGhpcyBTQkkgRXh0ZW5zaW9uIGlzIGRlZmluZWQgYW5kIHVzZWQg YnkgRURLMiBvbmx5DQo+ID4gaW4gb3JkZXIgdG8gYmUgYWJsZSB0bw0KPiA+DQo+ID4NCj4gPiAr Ly8vIHJ1biBQSSBhbmQgRFhFIHBoYXNlIGluIFMtTW9kZS4NCj4gPg0KPiA+DQo+ID4gKy8vLw0K PiA+DQo+ID4NCj4gPiArDQo+ID4NCj4gPg0KPiA+ICsvKioNCj4gPg0KPiA+DQo+ID4gKyAgR2V0 IHNjcmF0Y2ggc3BhY2Ugb2YgdGhlIGN1cnJlbnQgaGFydC4NCj4gPg0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4NCj4gPiArICBQbGVhc2UgY29uc2lkZXIgdXNpbmcgdGhlIHdyYXBwZXINCj4gPiBTYmlH ZXRGaXJtd2FyZUNvbnRleHQgaWYgeW91IG9ubHkgbmVlZCB0bw0KPiA+DQo+ID4NCj4gPiArICBh Y2Nlc3MgdGhlIGZpcm13YXJlIGNvbnRleHQuDQo+ID4NCj4gPg0KPiA+ICsNCj4gPg0KPiA+DQo+ ID4gKyAgQHBhcmFtW291dF0gU2NyYXRjaFNwYWNlICAgICAgICAgVGhlIHNjcmF0Y2ggc3BhY2UN Cj4gPiBwb2ludGVyLg0KPiA+DQo+ID4NCj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAg ICAgICAgICBUaGUgb3BlcmF0aW9uDQo+ID4gc3VjY2VlZHMuDQo+ID4NCj4gPg0KPiA+ICsqKi8N Cj4gPg0KPiA+DQo+ID4gK0VGSV9TVEFUVVMNCj4gPg0KPiA+DQo+ID4gK0VGSUFQSQ0KPiA+DQo+ ID4NCj4gPiArU2JpR2V0TXNjcmF0Y2ggKA0KPiA+DQo+ID4NCj4gPiArICBPVVQgU0JJX1NDUkFU Q0ggICAgICAgICAgICAgICAgICAgICoqU2NyYXRjaFNwYWNlDQo+ID4NCj4gPg0KPiA+ICsgICk7 DQo+ID4NCj4gPg0KPiA+ICsNCj4gPg0KPiA+DQo+ID4gKy8qKg0KPiA+DQo+ID4NCj4gPiArICBH ZXQgc2NyYXRjaCBzcGFjZSBvZiB0aGUgZ2l2ZW4gaGFydCBpZC4NCj4gPg0KPiA+DQo+ID4gKw0K PiA+DQo+ID4NCj4gPiArICBAcGFyYW1baW5dICBIYXJ0SWQgICAgICAgICAgICAgICBUaGUgaGFy dCBpZC4NCj4gPg0KPiA+DQo+ID4gKyAgQHBhcmFtW291dF0gU2NyYXRjaFNwYWNlICAgICAgICAg VGhlIHNjcmF0Y2ggc3BhY2UNCj4gPiBwb2ludGVyLg0KPiA+DQo+ID4NCj4gPiArICBAcmV0dmFs IEVGSV9TVUNDRVNTICAgICAgICAgICAgICBUaGUgb3BlcmF0aW9uDQo+ID4gc3VjY2VlZHMuDQo+ ID4NCj4gPg0KPiA+ICsqKi8NCj4gPg0KPiA+DQo+ID4gK0VGSV9TVEFUVVMNCj4gPg0KPiA+DQo+ ID4gK0VGSUFQSQ0KPiA+DQo+ID4NCj4gPiArU2JpR2V0TXNjcmF0Y2hIYXJ0aWQgKA0KPiA+DQo+ ID4NCj4gPiArICBJTiAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICAgSGFydElkLA0K PiA+DQo+ID4NCj4gPiArICBPVVQgU0JJX1NDUkFUQ0ggICAgICAgICAgICAgICAgICAgICoqU2Ny YXRjaFNwYWNlDQo+ID4NCj4gPg0KPiA+ICsgICk7DQo+ID4NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ DQo+ID4gKy8qKg0KPiA+DQo+ID4NCj4gPiArICBHZXQgZmlybXdhcmUgY29udGV4dCBvZiB0aGUg Y2FsbGluZyBoYXJ0Lg0KPiA+DQo+ID4NCj4gPiArDQo+ID4NCj4gPg0KPiA+ICsgIEBwYXJhbVtv dXRdIEZpcm13YXJlQ29udGV4dCAgICAgIFRoZSBmaXJtd2FyZSBjb250ZXh0DQo+ID4gcG9pbnRl ci4NCj4gPg0KPiA+DQo+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgICAgVGhl IG9wZXJhdGlvbg0KPiA+IHN1Y2NlZWRzLg0KPiA+DQo+ID4NCj4gPiArKiovDQo+ID4NCj4gPg0K PiA+ICtFRklfU1RBVFVTDQo+ID4NCj4gPg0KPiA+ICtFRklBUEkNCj4gPg0KPiA+DQo+ID4gK1Ni aUdldEZpcm13YXJlQ29udGV4dCAoDQo+ID4NCj4gPg0KPiA+ICsgIE9VVCBFRklfUklTQ1ZfT1BF TlNCSV9GSVJNV0FSRV9DT05URVhUDQo+ID4gKipGaXJtd2FyZUNvbnRleHQNCj4gPg0KPiA+DQo+ ID4gKyAgKTsNCj4gPg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4NCj4gPiArLyoqDQo+ID4NCj4gPg0K PiA+ICsgIFNldCBmaXJtd2FyZSBjb250ZXh0IG9mIHRoZSBjYWxsaW5nIGhhcnQuDQo+ID4NCj4g Pg0KPiA+ICsNCj4gPg0KPiA+DQo+ID4gKyAgQHBhcmFtW2luXSBGaXJtd2FyZUNvbnRleHQgICAg ICAgVGhlIGZpcm13YXJlIGNvbnRleHQNCj4gPiBwb2ludGVyLg0KPiA+DQo+ID4NCj4gPiArICBA cmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICAgICBUaGUgb3BlcmF0aW9uDQo+ID4gc3VjY2Vl ZHMuDQo+ID4NCj4gPg0KPiA+ICsqKi8NCj4gPg0KPiA+DQo+ID4gK0VGSV9TVEFUVVMNCj4gPg0K PiA+DQo+ID4gK0VGSUFQSQ0KPiA+DQo+ID4NCj4gPiArU2JpU2V0RmlybXdhcmVDb250ZXh0ICgN Cj4gPg0KPiA+DQo+ID4gKyAgSU4gRUZJX1JJU0NWX09QRU5TQklfRklSTVdBUkVfQ09OVEVYVA0K PiA+ICpGaXJtd2FyZUNvbnRleHQNCj4gPg0KPiA+DQo+ID4gKyAgKTsNCj4gPg0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4NCj4gPiArI2VuZGlmDQo+ID4NCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9TaWxp Y29uL1JJU0MtDQo+ID4gVi9Qcm9jZXNzb3JQa2cvTGlicmFyeS9SaXNjVkVkazJTYmlMaWIvUmlz Y1ZFZGsyU2JpTGliLmMNCj4gPiBiL1NpbGljb24vUklTQy0NCj4gPiBWL1Byb2Nlc3NvclBrZy9M aWJyYXJ5L1Jpc2NWRWRrMlNiaUxpYi9SaXNjVkVkazJTYmlMaWIuYw0KPiA+IG5ldyBmaWxlIG1v ZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi4wZGY1MDVkMjY3NWINCj4gPiAtLS0g L2Rldi9udWxsDQo+ID4gKysrIGIvU2lsaWNvbi9SSVNDLQ0KPiA+IFYvUHJvY2Vzc29yUGtnL0xp YnJhcnkvUmlzY1ZFZGsyU2JpTGliL1Jpc2NWRWRrMlNiaUxpYi5jDQo+ID4gQEAgLTAsMCArMSw4 OTcgQEANCj4gPiArLyoqIEBmaWxlDQo+ID4NCj4gPg0KPiA+ICsgIEluc3RhbmNlIG9mIHRoZSBT QkkgZWNhbGwgbGlicmFyeS4NCj4gPg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4NCj4gPiArICBJdCBh bGxvd3MgY2FsbGluZyBhbiBTQkkgZnVuY3Rpb24gdmlhIGFuIGVjYWxsIGZyb20NCj4gPiBTLU1v ZGUuDQo+ID4NCj4gPg0KPiA+ICsNCj4gPg0KPiA+DQo+ID4gKyAgVGhlIGxlZ2FjeSBleHRlbnNp b25zIGFyZSBub3QgaW5jbHVkZWQgYmVjYXVzZSB0aGV5DQo+ID4gYXJlIG5vdCBuZWNlc3Nhcnku DQo+ID4NCj4gPg0KPiA+ICsgIFRoZXkgd291bGQgYmU6DQo+ID4NCj4gPg0KPiA+ICsgIC0gU2Jp TGVnYWN5U2V0VGltZXIgICAgICAgICAgICAtPiBVc2UgU2JpU2V0VGltZXINCj4gPg0KPiA+DQo+ ID4gKyAgLSBTYmlMZWdhY3lDb25zb2xlUHV0Q2hhciAgICAgIC0+IE5vIHJlcGxhY2VtZW50IC0N Cj4gPiBVc2UgcmVndWxhciBVRUZJIGZ1bmN0aW9ucw0KPiA+DQo+ID4NCj4gPiArICAtIFNiaUxl Z2FjeUNvbnNvbGVHZXRDaGFyICAgICAgLT4gTm8gcmVwbGFjZW1lbnQgLQ0KPiA+IFVzZSByZWd1 bGFyIFVFRkkgZnVuY3Rpb25zDQo+ID4NCj4gPg0KPiA+ICsgIC0gU2JpTGVnYWN5Q2xlYXJJcGkg ICAgICAgICAgICAtPiBXcml0ZSAwIHRvIFNTSVANCj4gPg0KPiA+DQo+ID4gKyAgLSBTYmlMZWdh Y3lTZW5kSXBpICAgICAgICAgICAgIC0+IFVzZSBTYmlTZW5kSXBpDQo+ID4NCj4gPg0KPiA+ICsg IC0gU2JpTGVnYWN5UmVtb3RlRmVuY2VJICAgICAgICAtPiBVc2UgU2JpUmVtb3RlRmVuY2VJDQo+ ID4NCj4gPg0KPiA+ICsgIC0gU2JpTGVnYWN5UmVtb3RlU2ZlbmNlVm1hICAgICAtPiBVc2UNCj4g PiBTYmlSZW1vdGVTZmVuY2VWbWENCj4gPg0KPiA+DQo+ID4gKyAgLSBTYmlMZWdhY3lSZW1vdGVT ZmVuY2VWbWFBc2lkIC0+IFVzZQ0KPiA+IFNiaVJlbW90ZVNmZW5jZVZtYUFzaWQNCj4gPg0KPiA+ DQo+ID4gKyAgLSBTYmlMZWdhY3lTaHV0ZG93biAgICAgICAgICAgIC0+IFdhaXQgZm9yIG5ldyBT eXN0ZW0NCj4gPiBSZXNldCBleHRlbnNpb24NCj4gPg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4NCj4g PiArICBDb3B5cmlnaHQgKGMpIDIwMjAsIEhld2xldHQgUGFja2FyZCBEZXZlbG9wbWVudCBMUC4N Cj4gPiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPg0KPiA+DQo+ID4gKyAgU1BEWC1MaWNl bnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gPg0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4NCj4gPiArICBAcGFyIFJldmlzaW9uIFJlZmVyZW5jZToNCj4gPg0KPiA+DQo+ID4gKyAg ICAtIE9wZW5TQkkgVmVyc2lvbiAwLjYNCj4gPg0KPiA+DQo+ID4gKyoqLw0KPiA+DQo+ID4NCj4g PiArDQo+ID4NCj4gPg0KPiA+ICsjaW5jbHVkZSA8SW5kdXN0cnlTdGFuZGFyZC9SaXNjVk9wZW5z YmkuaD4NCj4gPg0KPiA+DQo+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L0Jhc2VNZW1vcnlMaWIuaD4N Cj4gPg0KPiA+DQo+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L0RlYnVnTGliLmg+DQo+ID4NCj4gPg0K PiA+ICsjaW5jbHVkZSA8TGlicmFyeS9SaXNjVkVkazJTYmlMaWIuaD4NCj4gPg0KPiA+DQo+ID4g KyNpbmNsdWRlIDxzYmkvcmlzY3ZfYXNtLmg+DQo+ID4NCj4gPg0KPiA+ICsjaW5jbHVkZSA8c2Jp L3NiaV9oYXJ0Lmg+DQo+ID4NCj4gPg0KPiA+ICsjaW5jbHVkZSA8c2JpL3NiaV90eXBlcy5oPg0K PiA+DQo+ID4NCj4gPiArI2luY2x1ZGUgPHNiaS9zYmlfaW5pdC5oPg0KPiA+DQo+ID4NCj4gPiAr DQo+ID4NCj4gPg0KPiA+ICsNCj4gPg0KPiA+DQo+ID4gKy8vDQo+ID4NCj4gPg0KPiA+ICsvLyBN YXhpbXVtIGFyZ3VtZW50cyBmb3IgU0JJIGVjYWxsDQo+ID4NCj4gPg0KPiA+ICsvLyBJdCdzIHBv c3NpYmxlIHRvIHBhc3MgbW9yZSBidXQgbm8gU0JJIGNhbGwgdXNlcyBtb3JlDQo+ID4gYXMgb2Yg U0JJIDAuMi4NCj4gPg0KPiA+DQo+ID4gKy8vIFRoZSBhZGRpdGlvbmFsIGFyZ3VtZW50cyB3b3Vs ZCBoYXZlIHRvIGJlIHBhc3NlZCBvbg0KPiA+IHRoZSBzdGFjayBpbnN0ZWFkIG9mIGFzDQo+ID4N Cj4gPg0KPiA+ICsvLyByZWdpc3RlcnMsIGxpa2UgaXQncyBkb25lIG5vdy4NCj4gPg0KPiA+DQo+ ID4gKy8vDQo+ID4NCj4gPg0KPiA+ICsjZGVmaW5lIFNCSV9DQUxMX01BWF9BUkdTIDYNCj4gPg0K PiA+DQo+ID4gKw0KPiA+DQo+ID4NCj4gPiArLyoqDQo+ID4NCj4gPg0KPiA+ICsgIENhbGwgU0JJ IGNhbGwgdXNpbmcgZWNhbGwgaW5zdHJ1Y3Rpb24uDQo+ID4NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ DQo+ID4gKyAgQXNzZXJ0cyB3aGVuIE51bUFyZ3MgZXhjZWVkcyBTQklfQ0FMTF9NQVhfQVJHUy4N Cj4gPg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4NCj4gPiArICBAcGFyYW1baW5dIEV4dElkICAgIFNC SSBleHRlbnNpb24gSUQuDQo+ID4NCj4gPg0KPiA+ICsgIEBwYXJhbVtpbl0gRnVuY0lkICAgU0JJ IGZ1bmN0aW9uIElELg0KPiA+DQo+ID4NCj4gPiArICBAcGFyYW1baW5dIE51bUFyZ3MgIE51bWJl ciBvZiBhcmd1bWVudHMgdG8gcGFzcyB0bw0KPiA+IHRoZSBlY2FsbC4NCj4gPg0KPiA+DQo+ID4g KyAgQHBhcmFtW2luXSAuLi4gICAgICBBcmd1bWVudCBsaXN0IGZvciB0aGUgZWNhbGwuDQo+ID4N Cj4gPg0KPiA+ICsNCj4gPg0KPiA+DQo+ID4gKyAgQHJldHZhbCAgUmV0dXJucyBTYmlSZXQgc3Ry dWN0dXJlIHdpdGggdmFsdWUgYW5kDQo+ID4gZXJyb3IgY29kZS4NCj4gPg0KPiA+DQo+ID4gKw0K PiA+DQo+ID4NCj4gPiArKiovDQo+ID4NCj4gPg0KPiA+ICtTVEFUSUMNCj4gPg0KPiA+DQo+ID4g K1NiaVJldA0KPiA+DQo+ID4NCj4gPiArRUZJQVBJDQo+ID4NCj4gPg0KPiA+ICtTYmlDYWxsKA0K PiA+DQo+ID4NCj4gPiArICBJTiAgVUlOVE4gRXh0SWQsDQo+ID4NCj4gPg0KPiA+ICsgIElOICBV SU5UTiBGdW5jSWQsDQo+ID4NCj4gPg0KPiA+ICsgIElOICBVSU5UTiBOdW1BcmdzLA0KPiA+DQo+ ID4NCj4gPiArICAuLi4NCj4gPg0KPiA+DQo+ID4gKyAgKQ0KPiA+DQo+ID4NCj4gPiArew0KPiA+ DQo+ID4NCj4gPiArICAgIFVJTlROIEk7DQo+ID4NCj4gPg0KPiA+ICsgICAgU2JpUmV0IFJldDsN Cj4gPg0KPiA+DQo+ID4gKyAgICBVSU5UTiBBcmdzW1NCSV9DQUxMX01BWF9BUkdTXTsNCj4gPg0K PiA+DQo+ID4gKyAgICBWQV9MSVNUIEFyZ0xpc3Q7DQo+ID4NCj4gPg0KPiA+ICsgICAgVkFfU1RB UlQgKEFyZ0xpc3QsIE51bUFyZ3MpOw0KPiA+DQo+ID4NCj4gPiArDQo+ID4NCj4gPg0KPiA+ICsg ICAgQVNTRVJUIChOdW1BcmdzIDw9IFNCSV9DQUxMX01BWF9BUkdTKTsNCj4gPg0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4NCj4gPiArICAgIGZvciAoSSA9IDA7IEkgPCBTQklfQ0FMTF9NQVhfQVJHUzsg SSsrKSB7DQo+ID4NCj4gPg0KPiA+ICsgICAgICBpZiAoSSA8IE51bUFyZ3MpIHsNCj4gPg0KPiA+ DQo+ID4gKyAgICAgICAgQXJnc1tJXSA9IFZBX0FSRyAoQXJnTGlzdCwgVUlOVE4pOw0KPiA+DQo+ ID4NCj4gPiArICAgICAgfSBlbHNlIHsNCj4gPg0KPiA+DQo+ID4gKyAgICAgICAgLy8gRGVmYXVs dCB0byAwIGZvciBhbGwgYXJndW1lbnRzIHRoYXQgYXJlIG5vdA0KPiA+IGdpdmVuDQo+ID4NCj4g Pg0KPiA+ICsgICAgICAgIEFyZ3NbSV0gPSAwOw0KPiA+DQo+ID4NCj4gPiArICAgICAgfQ0KPiA+ DQo+ID4NCj4gPiArICAgIH0NCj4gPg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4NCj4gPiArICAgIFZB X0VORChBcmdMaXN0KTsNCj4gPg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4NCj4gPiArICAgIHJlZ2lz dGVyIFVJTlROIGEwIGFzbSAoImEwIikgPSBBcmdzWzBdOw0KPiA+DQo+ID4NCj4gPiArICAgIHJl Z2lzdGVyIFVJTlROIGExIGFzbSAoImExIikgPSBBcmdzWzFdOw0KPiA+DQo+ID4NCj4gPiArICAg IHJlZ2lzdGVyIFVJTlROIGEyIGFzbSAoImEyIikgPSBBcmdzWzJdOw0KPiA+DQo+ID4NCj4gPiAr ICAgIHJlZ2lzdGVyIFVJTlROIGEzIGFzbSAoImEzIikgPSBBcmdzWzNdOw0KPiA+DQo+ID4NCj4g PiArICAgIHJlZ2lzdGVyIFVJTlROIGE0IGFzbSAoImE0IikgPSBBcmdzWzRdOw0KPiA+DQo+ID4N Cj4gPiArICAgIHJlZ2lzdGVyIFVJTlROIGE1IGFzbSAoImE1IikgPSBBcmdzWzVdOw0KPiA+DQo+ ID4NCj4gPiArICAgIHJlZ2lzdGVyIFVJTlROIGE2IGFzbSAoImE2IikgPSAoVUlOVE4pKEZ1bmNJ ZCk7DQo+ID4NCj4gPg0KPiA+ICsgICAgcmVnaXN0ZXIgVUlOVE4gYTcgYXNtICgiYTciKSA9IChV SU5UTikoRXh0SWQpOw0KPiA+DQo+ID4NCj4gPiArICAgIGFzbSB2b2xhdGlsZSAoImVjYWxsIiBc DQo+ID4NCj4gPg0KPiA+ICsgICAgICAgICA6ICIrciIgKGEwKSwgIityIiAoYTEpIFwNCj4gPg0K PiA+DQo+ID4gKyAgICAgICAgIDogInIiIChhMiksICJyIiAoYTMpLCAiciIgKGE0KSwgInIiIChh NSksICJyIg0KPiA+IChhNiksICJyIiAoYTcpIFwNCj4gPg0KPiA+DQo+ID4gKyAgICAgICAgIDog Im1lbW9yeSIpOyBcDQo+ID4NCj4gPg0KPiA+ICsgICAgUmV0LkVycm9yID0gYTA7DQo+ID4NCj4g Pg0KPiA+ICsgICAgUmV0LlZhbHVlID0gYTE7DQo+ID4NCj4gPg0KPiA+ICsgICAgcmV0dXJuIFJl dDsNCj4gPg0KPiA+DQo+ID4gK30NCj4gPg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4NCj4gPiArLyoq DQo+ID4NCj4gPg0KPiA+ICsgIFRyYW5zbGF0ZSBTQkkgZXJyb3IgY29kZSB0byBFRkkgc3RhdHVz Lg0KPiA+DQo+ID4NCj4gPiArDQo+ID4NCj4gPg0KPiA+ICsgIEBwYXJhbVtpbl0gU2JpRXJyb3Ig ICBTQkkgZXJyb3IgY29kZQ0KPiA+DQo+ID4NCj4gPiArICBAcmV0dmFsIEVGSV9TVEFUVVMNCj4g Pg0KPiA+DQo+ID4gKyoqLw0KPiA+DQo+ID4NCj4gPiArDQo+ID4NCj4gPg0KPiA+ICtTVEFUSUMN Cj4gPg0KPiA+DQo+ID4gK0VGSV9TVEFUVVMNCj4gPg0KPiA+DQo+ID4gK0VGSUFQSQ0KPiA+DQo+ ID4NCj4gPiArVHJhbnNsYXRlRXJyb3IoDQo+ID4NCj4gPg0KPiA+ICsgIElOICBVSU5UTiBTYmlF cnJvcg0KPiA+DQo+ID4NCj4gPiArICApDQo+ID4NCj4gPg0KPiA+ICt7DQo+ID4NCj4gPg0KPiA+ ICsgIHN3aXRjaCAoU2JpRXJyb3IpIHsNCj4gPg0KPiA+DQo+ID4gKyAgICBjYXNlIFNCSV9TVUND RVNTOg0KPiA+DQo+ID4NCj4gPiArICAgICAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiA+DQo+ID4N Cj4gPiArICAgIGNhc2UgU0JJX0VSUl9GQUlMRUQ6DQo+ID4NCj4gPg0KPiA+ICsgICAgICByZXR1 cm4gRUZJX0RFVklDRV9FUlJPUjsNCj4gPg0KPiA+DQo+ID4gKyAgICAgIGJyZWFrOw0KPiA+DQo+ ID4NCj4gPiArICAgIGNhc2UgU0JJX0VSUl9OT1RfU1VQUE9SVEVEOg0KPiA+DQo+ID4NCj4gPiAr ICAgICAgcmV0dXJuIEVGSV9VTlNVUFBPUlRFRDsNCj4gPg0KPiA+DQo+ID4gKyAgICAgIGJyZWFr Ow0KPiA+DQo+ID4NCj4gPiArICAgIGNhc2UgU0JJX0VSUl9JTlZBTElEX1BBUkFNOg0KPiA+DQo+ ID4NCj4gPiArICAgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gPg0KPiA+DQo+ ID4gKyAgICAgIGJyZWFrOw0KPiA+DQo+ID4NCj4gPiArICAgIGNhc2UgU0JJX0VSUl9ERU5JRUQ6 DQo+ID4NCj4gPg0KPiA+ICsgICAgICByZXR1cm4gRUZJX0FDQ0VTU19ERU5JRUQ7DQo+ID4NCj4g Pg0KPiA+ICsgICAgICBicmVhazsNCj4gPg0KPiA+DQo+ID4gKyAgICBjYXNlIFNCSV9FUlJfSU5W QUxJRF9BRERSRVNTOg0KPiA+DQo+ID4NCj4gPiArICAgICAgcmV0dXJuIEVGSV9MT0FEX0VSUk9S Ow0KPiA+DQo+ID4NCj4gPiArICAgICAgYnJlYWs7DQo+ID4NCj4gPg0KPiA+ICsgICAgY2FzZSBT QklfRVJSX0FMUkVBRFlfQVZBSUxBQkxFOg0KPiA+DQo+ID4NCj4gPiArICAgICAgcmV0dXJuIEVG SV9BTFJFQURZX1NUQVJURUQ7DQo+ID4NCj4gPg0KPiA+ICsgICAgICBicmVhazsNCj4gPg0KPiA+ DQo+ID4gKyAgICBkZWZhdWx0Og0KPiA+DQo+ID4NCj4gPiArICAgICAgLy8NCj4gPg0KPiA+DQo+ ID4gKyAgICAgIC8vIFJlYWNoZXMgaGVyZSBvbmx5IGlmIFNCSSBoYXMgZGVmaW5lZCBhIG5ldw0K PiA+IGVycm9yIHR5cGUNCj4gPg0KPiA+DQo+ID4gKyAgICAgIC8vDQo+ID4NCj4gPg0KPiA+ICsg ICAgICBBU1NFUlQgKEZBTFNFKTsNCj4gPg0KPiA+DQo+ID4gKyAgICAgIHJldHVybiBFRklfVU5T VVBQT1JURUQ7DQo+ID4NCj4gPg0KPiA+ICsgICAgICBicmVhazsNCj4gPg0KPiA+DQo+ID4gKyAg fQ0KPiA+DQo+ID4NCj4gPiArfQ0KPiA+DQo+ID4NCj4gPiArDQo+ID4NCj4gPg0KPiA+ICsvLw0K PiA+DQo+ID4NCj4gPiArLy8gT3BlblNCSSBsaWJyYXJ5IGludGVyZmFjZSBmdW5jdGlvbiBmb3Ig dGhlIGJhc2UNCj4gPiBleHRlbnNpb24NCj4gPg0KPiA+DQo+ID4gKy8vDQo+ID4NCj4gPg0KPiA+ ICsNCj4gPg0KPiA+DQo+ID4gKy8qKg0KPiA+DQo+ID4NCj4gPiArICBHZXQgdGhlIGltcGxlbWVu dGVkIFNCSSBzcGVjaWZpY2F0aW9uIHZlcnNpb24NCj4gPg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4N Cj4gPiArICBUaGUgbWlub3IgbnVtYmVyIG9mIHRoZSBTQkkgc3BlY2lmaWNhdGlvbiBpcyBlbmNv ZGVkDQo+ID4gaW4gdGhlIGxvdyAyNCBiaXRzLA0KPiA+DQo+ID4NCj4gPiArICB3aXRoIHRoZSBt YWpvciBudW1iZXIgZW5jb2RlZCBpbiB0aGUgbmV4dCA3IGJpdHMuDQo+ID4gQml0IDMyIG11c3Qg YmUgMCBhbmQgaXMNCj4gPg0KPiA+DQo+ID4gKyAgcmVzZXJ2ZWQgZm9yIGZ1dHVyZSBleHBhbnNp b24uDQo+ID4NCj4gPg0KPiA+ICsNCj4gPg0KPiA+DQo+ID4gKyAgQHBhcmFtW291dF0gU3BlY1Zl cnNpb24gICAgICAgICAgVGhlIFZlcnNpb24gb2YgdGhlDQo+ID4gU0JJIHNwZWNpZmljYXRpb24u DQo+ID4NCj4gPg0KPiA+ICsqKi8NCj4gPg0KPiA+DQo+ID4gK1ZPSUQNCj4gPg0KPiA+DQo+ID4g K0VGSUFQSQ0KPiA+DQo+ID4NCj4gPiArU2JpR2V0U3BlY1ZlcnNpb24gKA0KPiA+DQo+ID4NCj4g PiArICBPVVQgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICpTcGVjVmVyc2lvbg0KPiA+DQo+ ID4NCj4gPiArICApDQo+ID4NCj4gPg0KPiA+ICt7DQo+ID4NCj4gPg0KPiA+ICsgIFNiaVJldCBS ZXQgPSBTYmlDYWxsIChTQklfRVhUX0JBU0UsDQo+ID4gU0JJX0VYVF9CQVNFX0dFVF9TUEVDX1ZF UlNJT04sIDApOw0KPiA+DQo+ID4NCj4gPiArDQo+ID4NCj4gPg0KPiA+ICsgIGlmICghUmV0LkVy cm9yKSB7DQo+ID4NCj4gPg0KPiA+ICsgICAgKlNwZWNWZXJzaW9uID0gKFVJTlROKVJldC5WYWx1 ZTsNCj4gPg0KPiA+DQo+ID4gKyAgfQ0KPiA+DQo+ID4NCj4gPiArfQ0KPiA+DQo+ID4NCj4gPiAr DQo+ID4NCj4gPg0KPiA+ICsvKioNCj4gPg0KPiA+DQo+ID4gKyAgR2V0IHRoZSBTQkkgaW1wbGVt ZW50YXRpb24gSUQNCj4gPg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4NCj4gPiArICBUaGlzIElEIGlz IHVzZWQgdG8gaWRlbmV0aWZ5IGEgc3BlY2lmaWMgU0JJDQo+ID4gaW1wbGVtZW50YXRpb24gaW4g b3JkZXIgdG8gd29yaw0KPiA+DQo+ID4NCj4gPiArICBhcm91bmQgYW55IHF1aXJrcyBpdCBtaWdo dCBoYXZlLg0KPiA+DQo+ID4NCj4gPiArDQo+ID4NCj4gPg0KPiA+ICsgIEBwYXJhbVtvdXRdIElt cGxJZCAgICAgICAgICAgICAgIFRoZSBJRCBvZiB0aGUgU0JJDQo+ID4gaW1wbGVtZW50YXRpb24u DQo+ID4NCj4gPg0KPiA+ICsqKi8NCj4gPg0KPiA+DQo+ID4gK1ZPSUQNCj4gPg0KPiA+DQo+ID4g K0VGSUFQSQ0KPiA+DQo+ID4NCj4gPiArU2JpR2V0SW1wbElkICgNCj4gPg0KPiA+DQo+ID4gKyAg T1VUIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAqSW1wbElkDQo+ID4NCj4gPg0KPiA+ICsg ICkNCj4gPg0KPiA+DQo+ID4gK3sNCj4gPg0KPiA+DQo+ID4gKyAgU2JpUmV0IFJldCA9IFNiaUNh bGwgKFNCSV9FWFRfQkFTRSwNCj4gPiBTQklfRVhUX0JBU0VfR0VUX0lNUF9JRCwgMCk7DQo+ID4N Cj4gPg0KPiA+ICsgICpJbXBsSWQgPSAoVUlOVE4pUmV0LlZhbHVlOw0KPiA+DQo+ID4NCj4gPiAr fQ0KPiA+DQo+ID4NCj4gPiArDQo+ID4NCj4gPg0KPiA+ICsvKioNCj4gPg0KPiA+DQo+ID4gKyAg R2V0IHRoZSBTQkkgaW1wbGVtZW50YXRpb24gdmVyc2lvbg0KPiA+DQo+ID4NCj4gPiArDQo+ID4N Cj4gPg0KPiA+ICsgIFRoZSB2ZXJzaW9uIG9mIHRoaXMgU0JJIGltcGxlbWVudGF0aW9uLg0KPiA+ DQo+ID4NCj4gPiArICBUaGUgZW5jb2Rpbmcgb2YgdGhpcyBudW1iZXIgaXMgZGV0ZXJtaW5lZCBi eSB0aGUNCj4gPiBzcGVjaWZpYyBTQkkgaW1wbGVtZW50YXRpb24uDQo+ID4NCj4gPg0KPiA+ICsN Cj4gPg0KPiA+DQo+ID4gKyAgQHBhcmFtW291dF0gSW1wbFZlcnNpb24gICAgICAgICAgVGhlIHZl cnNpb24gb2YgdGhlDQo+ID4gU0JJIGltcGxlbWVudGF0aW9uLg0KPiA+DQo+ID4NCj4gPiArKiov DQo+ID4NCj4gPg0KPiA+ICtWT0lEDQo+ID4NCj4gPg0KPiA+ICtFRklBUEkNCj4gPg0KPiA+DQo+ ID4gK1NiaUdldEltcGxWZXJzaW9uICgNCj4gPg0KPiA+DQo+ID4gKyAgT1VUIFVJTlROICAgICAg ICAgICAgICAgICAgICAgICAqSW1wbFZlcnNpb24NCj4gPg0KPiA+DQo+ID4gKyAgKQ0KPiA+DQo+ ID4NCj4gPiArew0KPiA+DQo+ID4NCj4gPiArICBTYmlSZXQgUmV0ID0gU2JpQ2FsbCAoU0JJX0VY VF9CQVNFLA0KPiA+IFNCSV9FWFRfQkFTRV9HRVRfSU1QX1ZFUlNJT04sIDApOw0KPiA+DQo+ID4N Cj4gPiArICAqSW1wbFZlcnNpb24gPSAoVUlOVE4pUmV0LlZhbHVlOw0KPiA+DQo+ID4NCj4gPiAr fQ0KPiA+DQo+ID4NCj4gPiArDQo+ID4NCj4gPg0KPiA+ICsvKioNCj4gPg0KPiA+DQo+ID4gKyAg UHJvYmUgd2hldGhlciBhbiBTQkkgZXh0ZW5zaW9uIGlzIGF2YWlsYWJsZQ0KPiA+DQo+ID4NCj4g PiArDQo+ID4NCj4gPg0KPiA+ICsgIFByb2JlUmVzdWx0IGlzIHNldCB0byAwIGlmIHRoZSBleHRl bnNpb24gaXMgbm90DQo+ID4gYXZhaWxhYmxlIG9yIHRvIGFuIGV4dGVuc2lvbg0KPiA+DQo+ID4N Cj4gPiArICBzcGVjaWZpZWQgdmFsdWUgaWYgaXQgaXMgYXZhaWxhYmxlLg0KPiA+DQo+ID4NCj4g PiArDQo+ID4NCj4gPg0KPiA+ICsgIEBwYXJhbVtpbl0gIEV4dGVuc2lvbklkICAgICAgICAgIFRo ZSBleHRlbnNpb24gSUQuDQo+ID4NCj4gPg0KPiA+ICsgIEBwYXJhbVtvdXRdIFByb2JlUmVzdWx0 ICAgICAgICAgIFRoZSByZXR1cm4gdmFsdWUgb2YNCj4gPiB0aGUgcHJvYmUuDQo+ID4NCj4gPg0K PiA+ICsqKi8NCj4gPg0KPiA+DQo+ID4gK1ZPSUQNCj4gPg0KPiA+DQo+ID4gK0VGSUFQSQ0KPiA+ DQo+ID4NCj4gPiArU2JpUHJvYmVFeHRlbnNpb24gKA0KPiA+DQo+ID4NCj4gPiArICBJTiAgSU5U TiAgICAgICAgICAgICAgICAgICAgICAgICBFeHRlbnNpb25JZCwNCj4gPg0KPiA+DQo+ID4gKyAg T1VUIElOVE4gICAgICAgICAgICAgICAgICAgICAgICAqUHJvYmVSZXN1bHQNCj4gPg0KPiA+DQo+ ID4gKyAgKQ0KPiA+DQo+ID4NCj4gPiArew0KPiA+DQo+ID4NCj4gPiArICBTYmlSZXQgUmV0ID0g U2JpQ2FsbCAoU0JJX0VYVF9CQVNFLA0KPiA+IFNCSV9FWFRfQkFTRV9QUk9CRV9FWFQsIDApOw0K PiA+DQo+ID4NCj4gPiArICAqUHJvYmVSZXN1bHQgPSAoVUlOVE4pUmV0LlZhbHVlOw0KPiA+DQo+ ID4NCj4gPiArfQ0KPiA+DQo+ID4NCj4gPiArDQo+ID4NCj4gPg0KPiA+ICsvKioNCj4gPg0KPiA+ DQo+ID4gKyAgR2V0IHRoZSBDUFUncyB2ZW5kb3IgSUQNCj4gPg0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4NCj4gPiArICBSZWFkcyB0aGUgbXZlbmRvcmlkIENTUi4NCj4gPg0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4NCj4gPiArICBAcGFyYW1bb3V0XSBNYWNoaW5lVmVuZG9ySWQgICAgICBUaGUgQ1BVJ3Mg dmVuZG9yIElELg0KPiA+DQo+ID4NCj4gPiArKiovDQo+ID4NCj4gPg0KPiA+ICtWT0lEDQo+ID4N Cj4gPg0KPiA+ICtFRklBUEkNCj4gPg0KPiA+DQo+ID4gK1NiaUdldE1hY2hpbmVWZW5kb3JJZCAo DQo+ID4NCj4gPg0KPiA+ICsgIE9VVCBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgKk1hY2hp bmVWZW5kb3JJZA0KPiA+DQo+ID4NCj4gPiArICApDQo+ID4NCj4gPg0KPiA+ICt7DQo+ID4NCj4g Pg0KPiA+ICsgIFNiaVJldCBSZXQgPSBTYmlDYWxsIChTQklfRVhUX0JBU0UsDQo+ID4gU0JJX0VY VF9CQVNFX0dFVF9NVkVORE9SSUQsIDApOw0KPiA+DQo+ID4NCj4gPiArICAqTWFjaGluZVZlbmRv cklkID0gKFVJTlROKVJldC5WYWx1ZTsNCj4gPg0KPiA+DQo+ID4gK30NCj4gPg0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4NCj4gPiArLyoqDQo+ID4NCj4gPg0KPiA+ICsgIEdldCB0aGUgQ1BVJ3MgYXJj aGl0ZWN0dXJlIElEDQo+ID4NCj4gPg0KPiA+ICsNCj4gPg0KPiA+DQo+ID4gKyAgUmVhZHMgdGhl IG1hcmNoaWQgQ1NSLg0KPiA+DQo+ID4NCj4gPiArDQo+ID4NCj4gPg0KPiA+ICsgIEBwYXJhbVtv dXRdIE1hY2hpbmVBcmNoSWQgICAgICAgIFRoZSBDUFUncw0KPiA+IGFyY2hpdGVjdHVyZSBJRC4N Cj4gPg0KPiA+DQo+ID4gKyoqLw0KPiA+DQo+ID4NCj4gPiArVk9JRA0KPiA+DQo+ID4NCj4gPiAr RUZJQVBJDQo+ID4NCj4gPg0KPiA+ICtTYmlHZXRNYWNoaW5lQXJjaElkICgNCj4gPg0KPiA+DQo+ ID4gKyAgT1VUIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAqTWFjaGluZUFyY2hJZA0KPiA+ DQo+ID4NCj4gPiArICApDQo+ID4NCj4gPg0KPiA+ICt7DQo+ID4NCj4gPg0KPiA+ICsgIFNiaVJl dCBSZXQgPSBTYmlDYWxsIChTQklfRVhUX0JBU0UsDQo+ID4gU0JJX0VYVF9CQVNFX0dFVF9NQVJD SElELCAwKTsNCj4gPg0KPiA+DQo+ID4gKyAgKk1hY2hpbmVBcmNoSWQgPSAoVUlOVE4pUmV0LlZh bHVlOw0KPiA+DQo+ID4NCj4gPiArfQ0KPiA+DQo+ID4NCj4gPiArDQo+ID4NCj4gPg0KPiA+ICsv KioNCj4gPg0KPiA+DQo+ID4gKyAgR2V0IHRoZSBDUFUncyBhcmNoaXRlY3R1cmUgSUQNCj4gPg0K PiA+DQo+ID4gKw0KPiA+DQo+ID4NCj4gPiArICBSZWFkcyB0aGUgbWFyY2hpZCBDU1IuDQo+ID4N Cj4gPg0KPiA+ICsNCj4gPg0KPiA+DQo+ID4gKyAgQHBhcmFtW291dF0gTWFjaGluZUltcGxJZCAg ICAgICAgVGhlIENQVSdzDQo+ID4gaW1wbGVtZW50YXRpb24gSUQuDQo+ID4NCj4gPg0KPiA+ICsq Ki8NCj4gPg0KPiA+DQo+ID4gK1ZPSUQNCj4gPg0KPiA+DQo+ID4gK0VGSUFQSQ0KPiA+DQo+ID4N Cj4gPiArU2JpR2V0TWFjaGluZUltcGxJZCAoDQo+ID4NCj4gPg0KPiA+ICsgIE9VVCBVSU5UTiAg ICAgICAgICAgICAgICAgICAgICAgKk1hY2hpbmVJbXBsSWQNCj4gPg0KPiA+DQo+ID4gKyAgKQ0K PiA+DQo+ID4NCj4gPiArew0KPiA+DQo+ID4NCj4gPiArICBTYmlSZXQgUmV0ID0gU2JpQ2FsbCAo U0JJX0VYVF9CQVNFLA0KPiA+IFNCSV9FWFRfQkFTRV9HRVRfTUlNUElELCAwKTsNCj4gPg0KPiA+ DQo+ID4gKyAgKk1hY2hpbmVJbXBsSWQgPSAoVUlOVE4pUmV0LlZhbHVlOw0KPiA+DQo+ID4NCj4g PiArfQ0KPiA+DQo+ID4NCj4gPiArDQo+ID4NCj4gPg0KPiA+ICsvLw0KPiA+DQo+ID4NCj4gPiAr Ly8gU0JJIGludGVyZmFjZSBmdW5jdGlvbiBmb3IgdGhlIGhhcnQgc3RhdGUgbWFuYWdlbWVudA0K PiA+IGV4dGVuc2lvbg0KPiA+DQo+ID4NCj4gPiArLy8NCj4gPg0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4NCj4gPiArLyoqDQo+ID4NCj4gPg0KPiA+ICsgIFBvbGl0ZWx5IGFzayB0aGUgU0JJIHRvIHN0 YXJ0IGEgZ2l2ZW4gaGFydC4NCj4gPg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4NCj4gPiArICBUaGlz IGNhbGwgbWF5IHJldHVybiBiZWZvcmUgdGhlIGhhcnQgaGFzIGFjdHVhbGx5DQo+ID4gc3RhcnRl ZCBleGVjdXRpbmcsIGlmIHRoZQ0KPiA+DQo+ID4NCj4gPiArICBTQkkgaW1wbGVtZW50YXRpb24g Y2FuIGd1YXJhbnRlZSB0aGF0IHRoZSBoYXJ0IGlzDQo+ID4gYWN0dWFsbHkgZ29pbmcgdG8gc3Rh cnQuDQo+ID4NCj4gPg0KPiA+ICsNCj4gPg0KPiA+DQo+ID4gKyAgQmVmb3JlIHRoZSBoYXJ0IGp1 bXBzIHRvIFN0YXJ0QWRkciwgdGhlIGhhcnQgTVVTVA0KPiA+IGNvbmZpZ3VyZSBQTVAgaWYgcHJl c2VudA0KPiA+DQo+ID4NCj4gPiArICBhbmQgc3dpdGNoIHRvIFMtbW9kZS4NCj4gPg0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4NCj4gPiArICBAcGFyYW1baW5dICBIYXJ0SWQgICAgICAgICAgICAgICBU aGUgaWQgb2YgdGhlIGhhcnQNCj4gPiB0byBzdGFydC4NCj4gPg0KPiA+DQo+ID4gKyAgQHBhcmFt W2luXSAgU3RhcnRBZGRyICAgICAgICAgICAgVGhlIHBoeXNpY2FsDQo+ID4gYWRkcmVzcywgd2hl cmUgdGhlIGhhcnQgc3RhcnRzDQo+ID4NCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGV4ZWN1dGluZyBmcm9tLg0KPiA+DQo+ID4NCj4gPiArICBAcGFyYW1baW5d ICBQcml2ICAgICAgICAgICAgICAgICBBbiBYTEVOLWJpdCB2YWx1ZSwNCj4gPiB3aGljaCB3aWxs IGJlIGluIHJlZ2lzdGVyDQo+ID4NCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGExIHdoZW4gdGhlIGhhcnQNCj4gPiBzdGFydHMuDQo+ID4NCj4gPg0KPiA+ICsg IEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgICAgIEhhcnQgd2FzIHN0b3BwZWQgYW5kDQo+ ID4gd2lsbCBzdGFydCBleGVjdXRpbmcgZnJvbSBTdGFydEFkZHIuDQo+ID4NCj4gPg0KPiA+ICsg IEByZXR2YWwgRUZJX0xPQURfRVJST1IgICAgICAgICAgIFN0YXJ0QWRkciBpcyBub3QNCj4gPiB2 YWxpZCwgcG9zc2libHkgZHVlIHRvIGZvbGxvd2luZyByZWFzb25zOg0KPiA+DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gSXQgaXMgbm90IGENCj4gPiB2 YWxpZCBwaHlzaWNhbCBhZGRyZXNzLg0KPiA+DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC0gVGhlIGFkZHJlc3MgaXMNCj4gPiBwcm9oaWJpdGVkIGJ5IFBN UCB0byBydW4gaW4NCj4gPg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHN1cGVydmlzb3IgbW9kZS4NCj4gPg0KPiA+DQo+ID4gKyAgQHJldHZhbCBFRklf SU5WQUxJRF9QQVJBTUVURVIgICAgSGFydElkIGlzIG5vdCBhDQo+ID4gdmFsaWQgaGFydCBpZA0K PiA+DQo+ID4NCj4gPiArICBAcmV0dmFsIEVGSV9BTFJFQURZX1NUQVJURUQgICAgICBUaGUgaGFy dCBpcyBhbHJlYWR5DQo+ID4gcnVubmluZy4NCj4gPg0KPiA+DQo+ID4gKyAgQHJldHZhbCBvdGhl ciAgICAgICAgICAgICAgICAgICAgVGhlIHN0YXJ0IHJlcXVlc3QNCj4gPiBmYWlsZWQgZm9yIHVu a25vd24gcmVhc29ucy4NCj4gPg0KPiA+DQo+ID4gKyoqLw0KPiA+DQo+ID4NCj4gPiArRUZJX1NU QVRVUw0KPiA+DQo+ID4NCj4gPiArRUZJQVBJDQo+ID4NCj4gPg0KPiA+ICtTYmlIYXJ0U3RhcnQg KA0KPiA+DQo+ID4NCj4gPiArICBJTiAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgIEhh cnRJZCwNCj4gPg0KPiA+DQo+ID4gKyAgSU4gIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAg ICBTdGFydEFkZHIsDQo+ID4NCj4gPg0KPiA+ICsgIElOICBVSU5UTiAgICAgICAgICAgICAgICAg ICAgICAgICAgUHJpdg0KPiA+DQo+ID4NCj4gPiArICApDQo+ID4NCj4gPg0KPiA+ICt7DQo+ID4N Cj4gPg0KPiA+ICsgIFNiaVJldCBSZXQgPSBTYmlDYWxsICgNCj4gPg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICAgU0JJX0VYVF9IU00sDQo+ID4NCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg IFNCSV9FWFRfSFNNX0hBUlRfU1RBUlQsDQo+ID4NCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg IDMsDQo+ID4NCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgIEhhcnRJZCwNCj4gPg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICAgU3RhcnRBZGRyLA0KPiA+DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgICBQcml2DQo+ID4NCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICk7DQo+ID4NCj4g Pg0KPiA+ICsgIHJldHVybiBUcmFuc2xhdGVFcnJvciAoUmV0LkVycm9yKTsNCj4gPg0KPiA+DQo+ ID4gK30NCj4gPg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4NCj4gPiArLyoqDQo+ID4NCj4gPg0KPiA+ ICsgIFJldHVybiBleGVjdXRpb24gb2YgdGhlIGNhbGxpbmcgaGFydCB0byBTQkkuDQo+ID4NCj4g Pg0KPiA+ICsNCj4gPg0KPiA+DQo+ID4gKyAgTVVTVCBiZSBjYWxsZWQgaW4gUy1Nb2RlIHdpdGgg dXNlciBpbnRlcnJ1cHRzDQo+ID4gZGlzYWJsZWQuDQo+ID4NCj4gPg0KPiA+ICsgIFRoaXMgY2Fs bCBpcyBub3QgZXhwZWN0ZWQgdG8gcmV0dXJuLCB1bmxlc3MgYSBmYWlsdXJlDQo+ID4gb2NjdXJz Lg0KPiA+DQo+ID4NCj4gPiArDQo+ID4NCj4gPg0KPiA+ICsgIEByZXR2YWwgICAgIEVGSV9TVUND RVNTICAgICAgICAgIE5ldmVyIG9jY3Vycy4gV2hlbg0KPiA+IHN1Y2Nlc3NmdWwsIHRoZSBjYWxs IGRvZXMgbm90IHJldHVybi4NCj4gPg0KPiA+DQo+ID4gKyAgQHJldHZhbCAgICAgb3RoZXIgICAg ICAgICAgICAgICAgRmFpbGVkIHRvIHN0b3AgaGFyZA0KPiA+IGZvciBhbiB1bmtub3duIHJlYXNv bi4NCj4gPg0KPiA+DQo+ID4gKyoqLw0KPiA+DQo+ID4NCj4gPiArRUZJX1NUQVRVUw0KPiA+DQo+ ID4NCj4gPiArRUZJQVBJDQo+ID4NCj4gPg0KPiA+ICtTYmlIYXJ0U3RvcCAoDQo+ID4NCj4gPg0K PiA+ICsgICkNCj4gPg0KPiA+DQo+ID4gK3sNCj4gPg0KPiA+DQo+ID4gKyAgU2JpUmV0IFJldCA9 IFNiaUNhbGwgKFNCSV9FWFRfSFNNLA0KPiA+IFNCSV9FWFRfSFNNX0hBUlRfU1RPUCwgMCk7DQo+ ID4NCj4gPg0KPiA+ICsgIHJldHVybiBUcmFuc2xhdGVFcnJvciAoUmV0LkVycm9yKTsNCj4gPg0K PiA+DQo+ID4gK30NCj4gPg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4NCj4gPiArLyoqDQo+ID4NCj4g Pg0KPiA+ICsgIEdldCB0aGUgY3VycmVudCBzdGF0dXMgb2YgYSBoYXJ0Lg0KPiA+DQo+ID4NCj4g PiArDQo+ID4NCj4gPg0KPiA+ICsgIFNpbmNlIGhhcnRzIGNhbiB0cmFuc2l0aW9uIGJldHdlZW4g c3RhdGVzIGF0IGFueQ0KPiA+IHRpbWUsIHRoZSBzdGF0dXMgcmV0cmlldmVkDQo+ID4NCj4gPg0K PiA+ICsgIGJ5IHRoaXMgZnVuY3Rpb24gbWF5IGFscmVhZHkgYmUgb3V0IG9mIGRhdGUsIG9uY2Ug aXQNCj4gPiByZXR1cm5zLg0KPiA+DQo+ID4NCj4gPiArDQo+ID4NCj4gPg0KPiA+ICsgIFBvc3Np YmxlIHZhbHVlcyBmb3IgSGFydFN0YXR1cyBhcmU6DQo+ID4NCj4gPg0KPiA+ICsgIDA6IFNUQVJU RUQNCj4gPg0KPiA+DQo+ID4gKyAgMTogU1RPUFBFRA0KPiA+DQo+ID4NCj4gPiArICAyOiBTVEFS VF9SRVFVRVNUX1BFTkRJTkcNCj4gPg0KPiA+DQo+ID4gKyAgMzogU1RPUF9SRVFVRVNUX1BFTkRJ TkcNCj4gPg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4NCj4gPiArICBAcGFyYW1bb3V0XSBIYXJ0U3Rh dHVzICAgICAgICAgICBUaGUgcG9pbnRlciBpbiB3aGljaA0KPiA+IHRoZSBoYXJ0J3Mgc3RhdHVz IGlzDQo+ID4NCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0 b3JlZC4NCj4gPg0KPiA+DQo+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgICAg VGhlIG9wZXJhdGlvbg0KPiA+IHN1Y2NlZWRzLg0KPiA+DQo+ID4NCj4gPiArICBAcmV0dmFsIEVG SV9JTlZBTElEX1BBUkFNRVRFUiAgICBBIHBhcmFtZXRlciBpcw0KPiA+IGludmFsaWQuDQo+ID4N Cj4gPg0KPiA+ICsqKi8NCj4gPg0KPiA+DQo+ID4gK0VGSV9TVEFUVVMNCj4gPg0KPiA+DQo+ID4g K0VGSUFQSQ0KPiA+DQo+ID4NCj4gPiArU2JpSGFydEdldFN0YXR1cyAoDQo+ID4NCj4gPg0KPiA+ ICsgIElOICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgSGFydElkLA0KPiA+DQo+ID4N Cj4gPiArICBPVVQgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgKkhhcnRTdGF0dXMNCj4g Pg0KPiA+DQo+ID4gKyAgKQ0KPiA+DQo+ID4NCj4gPiArew0KPiA+DQo+ID4NCj4gPiArICBTYmlS ZXQgUmV0ID0gU2JpQ2FsbCAoU0JJX0VYVF9IU00sDQo+ID4gU0JJX0VYVF9IU01fSEFSVF9HRVRf U1RBVFVTLCAxLCBIYXJ0SWQpOw0KPiA+DQo+ID4NCj4gPiArDQo+ID4NCj4gPg0KPiA+ICsgIGlm ICghUmV0LkVycm9yKSB7DQo+ID4NCj4gPg0KPiA+ICsgICAgKkhhcnRTdGF0dXMgPSAoVUlOVE4p UmV0LlZhbHVlOw0KPiA+DQo+ID4NCj4gPiArICB9DQo+ID4NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ DQo+ID4gKyAgcmV0dXJuIFRyYW5zbGF0ZUVycm9yIChSZXQuRXJyb3IpOw0KPiA+DQo+ID4NCj4g PiArfQ0KPiA+DQo+ID4NCj4gPiArDQo+ID4NCj4gPg0KPiA+ICsvKioNCj4gPg0KPiA+DQo+ID4g KyAgQ2xlYXIgcGVuZGluZyB0aW1lciBpbnRlcnJ1cHQgYml0IGFuZCBzZXQgdGltZXIgZm9yDQo+ ID4gbmV4dCBldmVudCBhZnRlciBUaW1lLg0KPiA+DQo+ID4NCj4gPiArDQo+ID4NCj4gPg0KPiA+ ICsgIFRvIGNsZWFyIHRoZSB0aW1lciB3aXRob3V0IHNjaGVkdWxpbmcgYSB0aW1lciBldmVudCwN Cj4gPiBzZXQgVGltZSB0byBhDQo+ID4NCj4gPg0KPiA+ICsgIHByYWN0aWNhbGx5IGluZmluaXRl IHZhbHVlIG9yIG1hc2sgdGhlIHRpbWVyDQo+ID4gaW50ZXJydXB0IGJ5IGNsZWFyaW5nIHNpZS5T VElFLg0KPiA+DQo+ID4NCj4gPiArDQo+ID4NCj4gPg0KPiA+ICsgIEBwYXJhbVtpbl0gIFRpbWUg ICAgICAgICAgICAgICAgIFRoZSB0aW1lIG9mZnNldCB0bw0KPiA+IHRoZSBuZXh0IHNjaGVkdWxl ZCB0aW1lciBpbnRlcnJ1cHQuDQo+ID4NCj4gPg0KPiA+ICsqKi8NCj4gPg0KPiA+DQo+ID4gK1ZP SUQNCj4gPg0KPiA+DQo+ID4gK0VGSUFQSQ0KPiA+DQo+ID4NCj4gPiArU2JpU2V0VGltZXIgKA0K PiA+DQo+ID4NCj4gPiArICBJTiAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICAgICAgIFRpbWUN Cj4gPg0KPiA+DQo+ID4gKyAgKQ0KPiA+DQo+ID4NCj4gPiArew0KPiA+DQo+ID4NCj4gPiArICBT YmlDYWxsIChTQklfRVhUX1RJTUUsIFNCSV9FWFRfVElNRV9TRVRfVElNRVIsIDEsDQo+ID4gVGlt ZSk7DQo+ID4NCj4gPg0KPiA+ICt9DQo+ID4NCj4gPg0KPiA+ICsNCj4gPg0KPiA+DQo+ID4gK0VG SV9TVEFUVVMNCj4gPg0KPiA+DQo+ID4gK0VGSUFQSQ0KPiA+DQo+ID4NCj4gPiArU2JpU2VuZElw aSAoDQo+ID4NCj4gPg0KPiA+ICsgIElOICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAq SGFydE1hc2ssDQo+ID4NCj4gPg0KPiA+ICsgIElOICBVSU5UTiAgICAgICAgICAgICAgICAgICAg ICAgICAgSGFydE1hc2tCYXNlDQo+ID4NCj4gPg0KPiA+ICsgICkNCj4gPg0KPiA+DQo+ID4gK3sN Cj4gPg0KPiA+DQo+ID4gKyAgU2JpUmV0IFJldCA9IFNiaUNhbGwgKA0KPiA+DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgICBTQklfRVhUX0lQSSwNCj4gPg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICAgU0JJX0VYVF9JUElfU0VORF9JUEksDQo+ID4NCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgIDIsDQo+ID4NCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgIChVSU5UTilIYXJ0TWFzaywN Cj4gPg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgSGFydE1hc2tCYXNlDQo+ID4NCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgICk7DQo+ID4NCj4gPg0KPiA+ICsgIHJldHVybiBUcmFuc2xh dGVFcnJvciAoUmV0LkVycm9yKTsNCj4gPg0KPiA+DQo+ID4gK30NCj4gPg0KPiA+DQo+ID4gKw0K PiA+DQo+ID4NCj4gPiArLyoqDQo+ID4NCj4gPg0KPiA+ICsgIEluc3RydWN0cyByZW1vdGUgaGFy dHMgdG8gZXhlY3V0ZSBhIEZFTkNFLkkNCj4gPiBpbnN0cnVjdGlvbi4NCj4gPg0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4NCj4gPiArICBAcGFyYW1baW5dICBIYXJ0TWFzayAgICAgICAgICAgICBTY2Fs YXIgYml0LXZlY3Rvcg0KPiA+IGNvbnRhaW5pbmcgaGFydCBpZHMNCj4gPg0KPiA+DQo+ID4gKyAg QHBhcmFtW2luXSAgSGFydE1hc2tCYXNlICAgICAgICAgVGhlIHN0YXJ0aW5nIGhhcnRpZA0KPiA+ IGZyb20gd2hpY2ggdGhlIGJpdC12ZWN0b3INCj4gPg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgbXVzdCBiZSBjb21wdXRlZC4gSWYNCj4gPiBzZXQgdG8gLTEs IEhhcnRNYXNrIGlzDQo+ID4NCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGlnbm9yZWQgYW5kIGFsbA0KPiA+IGhhcnRzIGFyZSBjb25zaWRlcmVkLg0KPiA+DQo+ ID4NCj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICAgICBJUEkgd2FzIHNlbnQg dG8gYWxsDQo+ID4gdGhlIHRhcmdldGVkIGhhcnRzLg0KPiA+DQo+ID4NCj4gPiArICBAcmV0dmFs IEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgICBFaXRoZXINCj4gPiBoYXJ0X21hc2tfYmFzZSBvciBh bnkgb2YgdGhlIGhhcnRpZA0KPiA+DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBmcm9tIGhhcnRfbWFzayBpcw0KPiA+IG5vdCB2YWxpZCBpLmUuIGVpdGhlciB0 aGUNCj4gPg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFy dGlkIGlzIG5vdA0KPiA+IGVuYWJsZWQgYnkgdGhlIHBsYXRmb3JtIG9yIGlzDQo+ID4NCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdCBhdmFpbGFibGUgdG8g dGhlDQo+ID4gc3VwZXJ2aXNvci4NCj4gPg0KPiA+DQo+ID4gKyoqLw0KPiA+DQo+ID4NCj4gPiAr RUZJX1NUQVRVUw0KPiA+DQo+ID4NCj4gPiArRUZJQVBJDQo+ID4NCj4gPg0KPiA+ICtTYmlSZW1v dGVGZW5jZUkgKA0KPiA+DQo+ID4NCj4gPiArICBJTiAgVUlOVE4gICAgICAgICAgICAgICAgICAg ICAgICAgKkhhcnRNYXNrLA0KPiA+DQo+ID4NCj4gPiArICBJTiAgVUlOVE4gICAgICAgICAgICAg ICAgICAgICAgICAgIEhhcnRNYXNrQmFzZQ0KPiA+DQo+ID4NCj4gPiArICApDQo+ID4NCj4gPg0K PiA+ICt7DQo+ID4NCj4gPg0KPiA+ICsgIFNiaVJldCBSZXQgPSBTYmlDYWxsICgNCj4gPg0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICAgU0JJX0VYVF9SRkVOQ0UsDQo+ID4NCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgIFNCSV9FWFRfUkZFTkNFX1JFTU9URV9GRU5DRV9JLA0KPiA+DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgICAyLA0KPiA+DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg ICAoVUlOVE4pSGFydE1hc2ssDQo+ID4NCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgIEhhcnRN YXNrQmFzZQ0KPiA+DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICApOw0KPiA+DQo+ID4NCj4g PiArICByZXR1cm4gVHJhbnNsYXRlRXJyb3IgKFJldC5FcnJvcik7DQo+ID4NCj4gPg0KPiA+ICt9 DQo+ID4NCj4gPg0KPiA+ICsNCj4gPg0KPiA+DQo+ID4gKy8qKg0KPiA+DQo+ID4NCj4gPiArICBJ bnN0cnVjdHMgdGhlIHJlbW90ZSBoYXJ0cyB0byBleGVjdXRlIG9uZSBvciBtb3JlDQo+ID4gU0ZF TkNFLlZNQSBpbnN0cnVjdGlvbnMuDQo+ID4NCj4gPg0KPiA+ICsNCj4gPg0KPiA+DQo+ID4gKyAg VGhlIFNGRU5DRS5WTUEgY292ZXJzIHRoZSByYW5nZSBvZiB2aXJ0dWFsIGFkZHJlc3Nlcw0KPiA+ IGJldHdlZW4gU3RhcnRBYWRkciBhbmQgU2l6ZS4NCj4gPg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4N Cj4gPiArICBUaGUgcmVtb3RlIGZlbmNlIGZ1bmN0aW9uIGFjdHMgYXMgYSBmdWxsIHRsYiBmbHVz aCBpZg0KPiA+ICogU3RhcnRBZGRyIGFuZCBzaXplDQo+ID4NCj4gPg0KPiA+ICsgIGFyZSBib3Ro IDAgKiBzaXplIGlzIGVxdWFsIHRvIDJeWExFTi0xDQo+ID4NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ DQo+ID4gKyAgQHBhcmFtW2luXSAgSGFydE1hc2sgICAgICAgICAgICAgU2NhbGFyIGJpdC12ZWN0 b3INCj4gPiBjb250YWluaW5nIGhhcnQgaWRzDQo+ID4NCj4gPg0KPiA+ICsgIEBwYXJhbVtpbl0g IEhhcnRNYXNrQmFzZSAgICAgICAgIFRoZSBzdGFydGluZyBoYXJ0aWQNCj4gPiBmcm9tIHdoaWNo IHRoZSBiaXQtdmVjdG9yDQo+ID4NCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG11c3QgYmUgY29tcHV0ZWQuIElmDQo+ID4gc2V0IHRvIC0xLCBIYXJ0TWFzayBp cw0KPiA+DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ25v cmVkIGFuZCBhbGwNCj4gPiBoYXJ0cyBhcmUgY29uc2lkZXJlZC4NCj4gPg0KPiA+DQo+ID4gKyAg QHBhcmFtW2luXSAgU3RhcnRBZGRyICAgICAgICAgICAgVGhlIGZpcnN0IGFkZHJlc3Mgb2YNCj4g PiB0aGUgYWZmZWN0ZWQgcmFuZ2UuDQo+ID4NCj4gPg0KPiA+ICsgIEBwYXJhbVtpbl0gIFNpemUg ICAgICAgICAgICAgICAgIEhvdyBtYW55IGFkZHJlc3Nlcw0KPiA+IGFyZSBhZmZlY3RlZC4NCj4g Pg0KPiA+DQo+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgICAgSVBJIHdhcyBz ZW50IHRvIGFsbA0KPiA+IHRoZSB0YXJnZXRlZCBoYXJ0cy4NCj4gPg0KPiA+DQo+ID4gKyAgQHJl dHZhbCBFRklfTE9BRF9FUlJPUiAgICAgICAgICAgU3RhcnRBZGRyIG9yIFNpemUgaXMNCj4gPiBu b3QgdmFsaWQuDQo+ID4NCj4gPg0KPiA+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVS ICAgIEVpdGhlcg0KPiA+IGhhcnRfbWFza19iYXNlIG9yIGFueSBvZiB0aGUgaGFydGlkDQo+ID4N Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gaGFydF9t YXNrIGlzDQo+ID4gbm90IHZhbGlkIGkuZS4gZWl0aGVyIHRoZQ0KPiA+DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXJ0aWQgaXMgbm90DQo+ID4gZW5hYmxl ZCBieSB0aGUgcGxhdGZvcm0gb3IgaXMNCj4gPg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbm90IGF2YWlsYWJsZSB0byB0aGUNCj4gPiBzdXBlcnZpc29yLg0K PiA+DQo+ID4NCj4gPiArKiovDQo+ID4NCj4gPg0KPiA+ICtFRklfU1RBVFVTDQo+ID4NCj4gPg0K PiA+ICtFRklBUEkNCj4gPg0KPiA+DQo+ID4gK1NiaVJlbW90ZVNmZW5jZVZtYSAoDQo+ID4NCj4g Pg0KPiA+ICsgIElOICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAqSGFydE1hc2ssDQo+ ID4NCj4gPg0KPiA+ICsgIElOICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgSGFydE1h c2tCYXNlLA0KPiA+DQo+ID4NCj4gPiArICBJTiAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAg ICAgIFN0YXJ0QWRkciwNCj4gPg0KPiA+DQo+ID4gKyAgSU4gIFVJTlROICAgICAgICAgICAgICAg ICAgICAgICAgICBTaXplDQo+ID4NCj4gPg0KPiA+ICsgICkNCj4gPg0KPiA+DQo+ID4gK3sNCj4g Pg0KPiA+DQo+ID4gKyAgU2JpUmV0IFJldCA9IFNiaUNhbGwgKA0KPiA+DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICBTQklfRVhUX1JGRU5DRSwNCj4gPg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICAgU0JJX0VYVF9SRkVOQ0VfUkVNT1RFX1NGRU5DRV9WTUEsDQo+ID4NCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgIDQsDQo+ID4NCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgIChVSU5U TilIYXJ0TWFzaywNCj4gPg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgSGFydE1hc2tCYXNl LA0KPiA+DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICBTdGFydEFkZHIsDQo+ID4NCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgIFNpemUNCj4gPg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICAgKTsNCj4gPg0KPiA+DQo+ID4gKyAgcmV0dXJuIFRyYW5zbGF0ZUVycm9yIChSZXQuRXJyb3Ip Ow0KPiA+DQo+ID4NCj4gPiArfQ0KPiA+DQo+ID4NCj4gPiArDQo+ID4NCj4gPg0KPiA+ICsvKioN Cj4gPg0KPiA+DQo+ID4gKyAgSW5zdHJ1Y3RzIHRoZSByZW1vdGUgaGFydHMgdG8gZXhlY3V0ZSBv bmUgb3IgbW9yZQ0KPiA+IFNGRU5DRS5WTUEgaW5zdHJ1Y3Rpb25zLg0KPiA+DQo+ID4NCj4gPiAr DQo+ID4NCj4gPg0KPiA+ICsgIFRoZSBTRkVOQ0UuVk1BIGNvdmVycyB0aGUgcmFuZ2Ugb2Ygdmly dHVhbCBhZGRyZXNzZXMNCj4gPiBiZXR3ZWVuIFN0YXJ0QWFkZHIgYW5kIFNpemUuDQo+ID4NCj4g Pg0KPiA+ICsgIENvdmVycyBvbmx5IHRoZSBnaXZlbiBBU0lELg0KPiA+DQo+ID4NCj4gPiArDQo+ ID4NCj4gPg0KPiA+ICsgIFRoZSByZW1vdGUgZmVuY2UgZnVuY3Rpb24gYWN0cyBhcyBhIGZ1bGwg dGxiIGZsdXNoIGlmDQo+ID4gKiBTdGFydEFkZHIgYW5kIHNpemUNCj4gPg0KPiA+DQo+ID4gKyAg YXJlIGJvdGggMCAqIHNpemUgaXMgZXF1YWwgdG8gMl5YTEVOLTENCj4gPg0KPiA+DQo+ID4gKw0K PiA+DQo+ID4NCj4gPiArICBAcGFyYW1baW5dICBIYXJ0TWFzayAgICAgICAgICAgICBTY2FsYXIg Yml0LXZlY3Rvcg0KPiA+IGNvbnRhaW5pbmcgaGFydCBpZHMNCj4gPg0KPiA+DQo+ID4gKyAgQHBh cmFtW2luXSAgSGFydE1hc2tCYXNlICAgICAgICAgVGhlIHN0YXJ0aW5nIGhhcnRpZA0KPiA+IGZy b20gd2hpY2ggdGhlIGJpdC12ZWN0b3INCj4gPg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbXVzdCBiZSBjb21wdXRlZC4gSWYNCj4gPiBzZXQgdG8gLTEsIEhh cnRNYXNrIGlzDQo+ID4NCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGlnbm9yZWQgYW5kIGFsbA0KPiA+IGhhcnRzIGFyZSBjb25zaWRlcmVkLg0KPiA+DQo+ID4N Cj4gPiArICBAcGFyYW1baW5dICBTdGFydEFkZHIgICAgICAgICAgICBUaGUgZmlyc3QgYWRkcmVz cyBvZg0KPiA+IHRoZSBhZmZlY3RlZCByYW5nZS4NCj4gPg0KPiA+DQo+ID4gKyAgQHBhcmFtW2lu XSAgU2l6ZSAgICAgICAgICAgICAgICAgSG93IG1hbnkgYWRkcmVzc2VzDQo+ID4gYXJlIGFmZmVj dGVkLg0KPiA+DQo+ID4NCj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICAgICBJ UEkgd2FzIHNlbnQgdG8gYWxsDQo+ID4gdGhlIHRhcmdldGVkIGhhcnRzLg0KPiA+DQo+ID4NCj4g PiArICBAcmV0dmFsIEVGSV9MT0FEX0VSUk9SICAgICAgICAgICBTdGFydEFkZHIgb3IgU2l6ZSBp cw0KPiA+IG5vdCB2YWxpZC4NCj4gPg0KPiA+DQo+ID4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9Q QVJBTUVURVIgICAgRWl0aGVyDQo+ID4gaGFydF9tYXNrX2Jhc2Ugb3IgYW55IG9mIHRoZSBoYXJ0 aWQNCj4gPg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJv bSBoYXJ0X21hc2sgaXMNCj4gPiBub3QgdmFsaWQgaS5lLiBlaXRoZXIgdGhlDQo+ID4NCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhcnRpZCBpcyBub3QNCj4g PiBlbmFibGVkIGJ5IHRoZSBwbGF0Zm9ybSBvciBpcw0KPiA+DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBub3QgYXZhaWxhYmxlIHRvIHRoZQ0KPiA+IHN1cGVy dmlzb3IuDQo+ID4NCj4gPg0KPiA+ICsqKi8NCj4gPg0KPiA+DQo+ID4gK0VGSV9TVEFUVVMNCj4g Pg0KPiA+DQo+ID4gK0VGSUFQSQ0KPiA+DQo+ID4NCj4gPiArU2JpUmVtb3RlU2ZlbmNlVm1hQXNp ZCAoDQo+ID4NCj4gPg0KPiA+ICsgIElOICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAq SGFydE1hc2ssDQo+ID4NCj4gPg0KPiA+ICsgIElOICBVSU5UTiAgICAgICAgICAgICAgICAgICAg ICAgICAgSGFydE1hc2tCYXNlLA0KPiA+DQo+ID4NCj4gPiArICBJTiAgVUlOVE4gICAgICAgICAg ICAgICAgICAgICAgICAgIFN0YXJ0QWRkciwNCj4gPg0KPiA+DQo+ID4gKyAgSU4gIFVJTlROICAg ICAgICAgICAgICAgICAgICAgICAgICBTaXplLA0KPiA+DQo+ID4NCj4gPiArICBJTiAgVUlOVE4g ICAgICAgICAgICAgICAgICAgICAgICAgIEFzaWQNCj4gPg0KPiA+DQo+ID4gKyAgKQ0KPiA+DQo+ ID4NCj4gPiArew0KPiA+DQo+ID4NCj4gPiArICBTYmlSZXQgUmV0ID0gU2JpQ2FsbCAoDQo+ID4N Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgIFNCSV9FWFRfUkZFTkNFLA0KPiA+DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgICBTQklfRVhUX1JGRU5DRV9SRU1PVEVfU0ZFTkNFX1ZNQV9BU0lE LA0KPiA+DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICA1LA0KPiA+DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICAoVUlOVE4pSGFydE1hc2ssDQo+ID4NCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgIEhhcnRNYXNrQmFzZSwNCj4gPg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgU3Rh cnRBZGRyLA0KPiA+DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICBTaXplLA0KPiA+DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgICBBc2lkDQo+ID4NCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgICk7DQo+ID4NCj4gPg0KPiA+ICsgIHJldHVybiBUcmFuc2xhdGVFcnJvciAoUmV0LkVycm9y KTsNCj4gPg0KPiA+DQo+ID4gK30NCj4gPg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4NCj4gPiArLyoq DQo+ID4NCj4gPg0KPiA+ICsgIEluc3RydWN0cyB0aGUgcmVtb3RlIGhhcnRzIHRvIGV4ZWN1dGUg b25lIG9yIG1vcmUNCj4gPiBTRkVOQ0UuR1ZNQSBpbnN0cnVjdGlvbnMuDQo+ID4NCj4gPg0KPiA+ ICsNCj4gPg0KPiA+DQo+ID4gKyAgVGhlIFNGRU5DRS5HVk1BIGNvdmVycyB0aGUgcmFuZ2Ugb2Yg dmlydHVhbCBhZGRyZXNzZXMNCj4gPiBiZXR3ZWVuIFN0YXJ0QWFkZHIgYW5kIFNpemUuDQo+ID4N Cj4gPg0KPiA+ICsgIENvdmVycyBvbmx5IHRoZSBnaXZlbiBWTUlELg0KPiA+DQo+ID4NCj4gPiAr ICBUaGlzIGZ1bmN0aW9uIGNhbGwgaXMgb25seSB2YWxpZCBmb3IgaGFydHMNCj4gPiBpbXBsZW1l bnRpbmcgdGhlIGh5cGVydmlzb3IgZXh0ZW5zaW9uLg0KPiA+DQo+ID4NCj4gPiArDQo+ID4NCj4g Pg0KPiA+ICsgIFRoZSByZW1vdGUgZmVuY2UgZnVuY3Rpb24gYWN0cyBhcyBhIGZ1bGwgdGxiIGZs dXNoIGlmDQo+ID4gKiBTdGFydEFkZHIgYW5kIHNpemUNCj4gPg0KPiA+DQo+ID4gKyAgYXJlIGJv dGggMCAqIHNpemUgaXMgZXF1YWwgdG8gMl5YTEVOLTENCj4gPg0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4NCj4gPiArICBAcGFyYW1baW5dICBIYXJ0TWFzayAgICAgICAgICAgICBTY2FsYXIgYml0LXZl Y3Rvcg0KPiA+IGNvbnRhaW5pbmcgaGFydCBpZHMNCj4gPg0KPiA+DQo+ID4gKyAgQHBhcmFtW2lu XSAgSGFydE1hc2tCYXNlICAgICAgICAgVGhlIHN0YXJ0aW5nIGhhcnRpZA0KPiA+IGZyb20gd2hp Y2ggdGhlIGJpdC12ZWN0b3INCj4gPg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbXVzdCBiZSBjb21wdXRlZC4gSWYNCj4gPiBzZXQgdG8gLTEsIEhhcnRNYXNr IGlzDQo+ID4NCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGln bm9yZWQgYW5kIGFsbA0KPiA+IGhhcnRzIGFyZSBjb25zaWRlcmVkLg0KPiA+DQo+ID4NCj4gPiAr ICBAcGFyYW1baW5dICBTdGFydEFkZHIgICAgICAgICAgICBUaGUgZmlyc3QgYWRkcmVzcyBvZg0K PiA+IHRoZSBhZmZlY3RlZCByYW5nZS4NCj4gPg0KPiA+DQo+ID4gKyAgQHBhcmFtW2luXSAgU2l6 ZSAgICAgICAgICAgICAgICAgSG93IG1hbnkgYWRkcmVzc2VzDQo+ID4gYXJlIGFmZmVjdGVkLg0K PiA+DQo+ID4NCj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICAgICBJUEkgd2Fz IHNlbnQgdG8gYWxsDQo+ID4gdGhlIHRhcmdldGVkIGhhcnRzLg0KPiA+DQo+ID4NCj4gPiArICBA cmV0dmFsIEVGSV9MT0FEX0VSUk9SICAgICAgICAgICBTdGFydEFkZHIgb3IgU2l6ZSBpcw0KPiA+ IG5vdCB2YWxpZC4NCj4gPg0KPiA+DQo+ID4gKyAgQHJldHZhbCBFRklfVU5TVVBQT1JURUQgICAg ICAgICAgU0JJIGRvZXMgbm90DQo+ID4gaW1wbGVtZW50IHRoaXMgZnVuY3Rpb24gb3Igb25lDQo+ ID4NCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHRoZSB0 YXJnZXQgaGFydHMNCj4gPiBkb2VzIG5vdCBzdXBwb3J0IHRoZQ0KPiA+DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoeXBlcnZpc29yDQo+ID4gZXh0ZW5zaW9u Lg0KPiA+DQo+ID4NCj4gPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgICBFaXRo ZXINCj4gPiBoYXJ0X21hc2tfYmFzZSBvciBhbnkgb2YgdGhlIGhhcnRpZA0KPiA+DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIGhhcnRfbWFzayBpcw0K PiA+IG5vdCB2YWxpZCBpLmUuIGVpdGhlciB0aGUNCj4gPg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaGFydGlkIGlzIG5vdA0KPiA+IGVuYWJsZWQgYnkgdGhl IHBsYXRmb3JtIG9yIGlzDQo+ID4NCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG5vdCBhdmFpbGFibGUgdG8gdGhlDQo+ID4gc3VwZXJ2aXNvci4NCj4gPg0KPiA+ DQo+ID4gKyoqLw0KPiA+DQo+ID4NCj4gPiArRUZJX1NUQVRVUw0KPiA+DQo+ID4NCj4gPiArRUZJ QVBJDQo+ID4NCj4gPg0KPiA+ICtTYmlSZW1vdGVIRmVuY2VHdm1hVm1pZCAoDQo+ID4NCj4gPg0K PiA+ICsgIElOICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAqSGFydE1hc2ssDQo+ID4N Cj4gPg0KPiA+ICsgIElOICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgSGFydE1hc2tC YXNlLA0KPiA+DQo+ID4NCj4gPiArICBJTiAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAg IFN0YXJ0QWRkciwNCj4gPg0KPiA+DQo+ID4gKyAgSU4gIFVJTlROICAgICAgICAgICAgICAgICAg ICAgICAgICBTaXplLA0KPiA+DQo+ID4NCj4gPiArICBJTiAgVUlOVE4gICAgICAgICAgICAgICAg ICAgICAgICAgIFZtaWQNCj4gPg0KPiA+DQo+ID4gKyAgKQ0KPiA+DQo+ID4NCj4gPiArew0KPiA+ DQo+ID4NCj4gPiArICBTYmlSZXQgUmV0ID0gU2JpQ2FsbCAoDQo+ID4NCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgIFNCSV9FWFRfUkZFTkNFLA0KPiA+DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgICBTQklfRVhUX1JGRU5DRV9SRU1PVEVfSEZFTkNFX0dWTUEsDQo+ID4NCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgIDUsDQo+ID4NCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgIChVSU5U TilIYXJ0TWFzaywNCj4gPg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgSGFydE1hc2tCYXNl LA0KPiA+DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICBTdGFydEFkZHIsDQo+ID4NCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgIFNpemUsDQo+ID4NCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgIFZtaWQNCj4gPg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgKTsNCj4gPg0KPiA+DQo+ ID4gKyAgcmV0dXJuIFRyYW5zbGF0ZUVycm9yIChSZXQuRXJyb3IpOw0KPiA+DQo+ID4NCj4gPiAr fQ0KPiA+DQo+ID4NCj4gPiArDQo+ID4NCj4gPg0KPiA+ICsvKioNCj4gPg0KPiA+DQo+ID4gKyAg SW5zdHJ1Y3RzIHRoZSByZW1vdGUgaGFydHMgdG8gZXhlY3V0ZSBvbmUgb3IgbW9yZQ0KPiA+IFNG RU5DRS5HVk1BIGluc3RydWN0aW9ucy4NCj4gPg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4NCj4gPiAr ICBUaGUgU0ZFTkNFLkdWTUEgY292ZXJzIHRoZSByYW5nZSBvZiB2aXJ0dWFsIGFkZHJlc3Nlcw0K PiA+IGJldHdlZW4gU3RhcnRBYWRkciBhbmQgU2l6ZS4NCj4gPg0KPiA+DQo+ID4gKyAgVGhpcyBm dW5jdGlvbiBjYWxsIGlzIG9ubHkgdmFsaWQgZm9yIGhhcnRzDQo+ID4gaW1wbGVtZW50aW5nIHRo ZSBoeXBlcnZpc29yIGV4dGVuc2lvbi4NCj4gPg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4NCj4gPiAr ICBUaGUgcmVtb3RlIGZlbmNlIGZ1bmN0aW9uIGFjdHMgYXMgYSBmdWxsIHRsYiBmbHVzaCBpZg0K PiA+ICogU3RhcnRBZGRyIGFuZCBzaXplDQo+ID4NCj4gPg0KPiA+ICsgIGFyZSBib3RoIDAgKiBz aXplIGlzIGVxdWFsIHRvIDJeWExFTi0xDQo+ID4NCj4gPg0KPiA+ICsNCj4gPg0KPiA+DQo+ID4g KyAgQHBhcmFtW2luXSAgSGFydE1hc2sgICAgICAgICAgICAgU2NhbGFyIGJpdC12ZWN0b3INCj4g PiBjb250YWluaW5nIGhhcnQgaWRzDQo+ID4NCj4gPg0KPiA+ICsgIEBwYXJhbVtpbl0gIEhhcnRN YXNrQmFzZSAgICAgICAgIFRoZSBzdGFydGluZyBoYXJ0aWQNCj4gPiBmcm9tIHdoaWNoIHRoZSBi aXQtdmVjdG9yDQo+ID4NCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG11c3QgYmUgY29tcHV0ZWQuIElmDQo+ID4gc2V0IHRvIC0xLCBIYXJ0TWFzayBpcw0KPiA+ DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmVkIGFu ZCBhbGwNCj4gPiBoYXJ0cyBhcmUgY29uc2lkZXJlZC4NCj4gPg0KPiA+DQo+ID4gKyAgQHBhcmFt W2luXSAgU3RhcnRBZGRyICAgICAgICAgICAgVGhlIGZpcnN0IGFkZHJlc3Mgb2YNCj4gPiB0aGUg YWZmZWN0ZWQgcmFuZ2UuDQo+ID4NCj4gPg0KPiA+ICsgIEBwYXJhbVtpbl0gIFNpemUgICAgICAg ICAgICAgICAgIEhvdyBtYW55IGFkZHJlc3Nlcw0KPiA+IGFyZSBhZmZlY3RlZC4NCj4gPg0KPiA+ DQo+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgICAgSVBJIHdhcyBzZW50IHRv IGFsbA0KPiA+IHRoZSB0YXJnZXRlZCBoYXJ0cy4NCj4gPg0KPiA+DQo+ID4gKyAgQHJldHZhbCBF RklfTE9BRF9FUlJPUiAgICAgICAgICAgU3RhcnRBZGRyIG9yIFNpemUgaXMNCj4gPiBub3QgdmFs aWQuDQo+ID4NCj4gPg0KPiA+ICsgIEByZXR2YWwgRUZJX1VOU1VQUE9SVEVEICAgICAgICAgIFNC SSBkb2VzIG5vdA0KPiA+IGltcGxlbWVudCB0aGlzIGZ1bmN0aW9uIG9yIG9uZQ0KPiA+DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiB0aGUgdGFyZ2V0IGhh cnRzDQo+ID4gZG9lcyBub3Qgc3VwcG9ydCB0aGUNCj4gPg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaHlwZXJ2aXNvcg0KPiA+IGV4dGVuc2lvbi4NCj4gPg0K PiA+DQo+ID4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgICAgRWl0aGVyDQo+ID4g aGFydF9tYXNrX2Jhc2Ugb3IgYW55IG9mIHRoZSBoYXJ0aWQNCj4gPg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSBoYXJ0X21hc2sgaXMNCj4gPiBub3Qg dmFsaWQgaS5lLiBlaXRoZXIgdGhlDQo+ID4NCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGhhcnRpZCBpcyBub3QNCj4gPiBlbmFibGVkIGJ5IHRoZSBwbGF0Zm9y bSBvciBpcw0KPiA+DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBub3QgYXZhaWxhYmxlIHRvIHRoZQ0KPiA+IHN1cGVydmlzb3IuDQo+ID4NCj4gPg0KPiA+ICsq Ki8NCj4gPg0KPiA+DQo+ID4gK0VGSV9TVEFUVVMNCj4gPg0KPiA+DQo+ID4gK0VGSUFQSQ0KPiA+ DQo+ID4NCj4gPiArU2JpUmVtb3RlSEZlbmNlR3ZtYSAoDQo+ID4NCj4gPg0KPiA+ICsgIElOICBV SU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAqSGFydE1hc2ssDQo+ID4NCj4gPg0KPiA+ICsg IElOICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgSGFydE1hc2tCYXNlLA0KPiA+DQo+ ID4NCj4gPiArICBJTiAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXJ0QWRkciwN Cj4gPg0KPiA+DQo+ID4gKyAgSU4gIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICBTaXpl DQo+ID4NCj4gPg0KPiA+ICsgICkNCj4gPg0KPiA+DQo+ID4gK3sNCj4gPg0KPiA+DQo+ID4gKyAg U2JpUmV0IFJldCA9IFNiaUNhbGwgKA0KPiA+DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICBT QklfRVhUX1JGRU5DRSwNCj4gPg0KPiA+DQo+ID4gKw0KPiA+IFNCSV9FWFRfUkZFTkNFX1JFTU9U RV9IRkVOQ0VfR1ZNQV9WTUlELA0KPiA+DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICA0LA0K PiA+DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAoVUlOVE4pSGFydE1hc2ssDQo+ID4NCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgIEhhcnRNYXNrQmFzZSwNCj4gPg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAgU3RhcnRBZGRyLA0KPiA+DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg ICBTaXplDQo+ID4NCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICk7DQo+ID4NCj4gPg0KPiA+ ICsgIHJldHVybiBUcmFuc2xhdGVFcnJvciAoUmV0LkVycm9yKTsNCj4gPg0KPiA+DQo+ID4gK30N Cj4gPg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4NCj4gPiArLyoqDQo+ID4NCj4gPg0KPiA+ICsgIElu c3RydWN0cyB0aGUgcmVtb3RlIGhhcnRzIHRvIGV4ZWN1dGUgb25lIG9yIG1vcmUNCj4gPiBTRkVO Q0UuVlZNQSBpbnN0cnVjdGlvbnMuDQo+ID4NCj4gPg0KPiA+ICsNCj4gPg0KPiA+DQo+ID4gKyAg VGhlIFNGRU5DRS5HVk1BIGNvdmVycyB0aGUgcmFuZ2Ugb2YgdmlydHVhbCBhZGRyZXNzZXMNCj4g PiBiZXR3ZWVuIFN0YXJ0QWFkZHIgYW5kIFNpemUuDQo+ID4NCj4gPg0KPiA+ICsgIENvdmVycyBv bmx5IHRoZSBnaXZlbiBBU0lELg0KPiA+DQo+ID4NCj4gPiArICBUaGlzIGZ1bmN0aW9uIGNhbGwg aXMgb25seSB2YWxpZCBmb3IgaGFydHMNCj4gPiBpbXBsZW1lbnRpbmcgdGhlIGh5cGVydmlzb3Ig ZXh0ZW5zaW9uLg0KPiA+DQo+ID4NCj4gPiArDQo+ID4NCj4gPg0KPiA+ICsgIFRoZSByZW1vdGUg ZmVuY2UgZnVuY3Rpb24gYWN0cyBhcyBhIGZ1bGwgdGxiIGZsdXNoIGlmDQo+ID4gKiBTdGFydEFk ZHIgYW5kIHNpemUNCj4gPg0KPiA+DQo+ID4gKyAgYXJlIGJvdGggMCAqIHNpemUgaXMgZXF1YWwg dG8gMl5YTEVOLTENCj4gPg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4NCj4gPiArICBAcGFyYW1baW5d ICBIYXJ0TWFzayAgICAgICAgICAgICBTY2FsYXIgYml0LXZlY3Rvcg0KPiA+IGNvbnRhaW5pbmcg aGFydCBpZHMNCj4gPg0KPiA+DQo+ID4gKyAgQHBhcmFtW2luXSAgSGFydE1hc2tCYXNlICAgICAg ICAgVGhlIHN0YXJ0aW5nIGhhcnRpZA0KPiA+IGZyb20gd2hpY2ggdGhlIGJpdC12ZWN0b3INCj4g Pg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVzdCBiZSBj b21wdXRlZC4gSWYNCj4gPiBzZXQgdG8gLTEsIEhhcnRNYXNrIGlzDQo+ID4NCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZWQgYW5kIGFsbA0KPiA+IGhh cnRzIGFyZSBjb25zaWRlcmVkLg0KPiA+DQo+ID4NCj4gPiArICBAcGFyYW1baW5dICBTdGFydEFk ZHIgICAgICAgICAgICBUaGUgZmlyc3QgYWRkcmVzcyBvZg0KPiA+IHRoZSBhZmZlY3RlZCByYW5n ZS4NCj4gPg0KPiA+DQo+ID4gKyAgQHBhcmFtW2luXSAgU2l6ZSAgICAgICAgICAgICAgICAgSG93 IG1hbnkgYWRkcmVzc2VzDQo+ID4gYXJlIGFmZmVjdGVkLg0KPiA+DQo+ID4NCj4gPiArICBAcmV0 dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICAgICBJUEkgd2FzIHNlbnQgdG8gYWxsDQo+ID4gdGhl IHRhcmdldGVkIGhhcnRzLg0KPiA+DQo+ID4NCj4gPiArICBAcmV0dmFsIEVGSV9MT0FEX0VSUk9S ICAgICAgICAgICBTdGFydEFkZHIgb3IgU2l6ZSBpcw0KPiA+IG5vdCB2YWxpZC4NCj4gPg0KPiA+ DQo+ID4gKyAgQHJldHZhbCBFRklfVU5TVVBQT1JURUQgICAgICAgICAgU0JJIGRvZXMgbm90DQo+ ID4gaW1wbGVtZW50IHRoaXMgZnVuY3Rpb24gb3Igb25lDQo+ID4NCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHRoZSB0YXJnZXQgaGFydHMNCj4gPiBkb2Vz IG5vdCBzdXBwb3J0IHRoZQ0KPiA+DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBoeXBlcnZpc29yDQo+ID4gZXh0ZW5zaW9uLg0KPiA+DQo+ID4NCj4gPiArICBA cmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgICBFaXRoZXINCj4gPiBoYXJ0X21hc2tfYmFz ZSBvciBhbnkgb2YgdGhlIGhhcnRpZA0KPiA+DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBmcm9tIGhhcnRfbWFzayBpcw0KPiA+IG5vdCB2YWxpZCBpLmUuIGVp dGhlciB0aGUNCj4gPg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgaGFydGlkIGlzIG5vdA0KPiA+IGVuYWJsZWQgYnkgdGhlIHBsYXRmb3JtIG9yIGlzDQo+ID4N Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdCBhdmFpbGFi bGUgdG8gdGhlDQo+ID4gc3VwZXJ2aXNvci4NCj4gPg0KPiA+DQo+ID4gKyoqLw0KPiA+DQo+ID4N Cj4gPiArRUZJX1NUQVRVUw0KPiA+DQo+ID4NCj4gPiArRUZJQVBJDQo+ID4NCj4gPg0KPiA+ICtT YmlSZW1vdGVIRmVuY2VWdm1hQXNpZCAoDQo+ID4NCj4gPg0KPiA+ICsgIElOICBVSU5UTiAgICAg ICAgICAgICAgICAgICAgICAgICAqSGFydE1hc2ssDQo+ID4NCj4gPg0KPiA+ICsgIElOICBVSU5U TiAgICAgICAgICAgICAgICAgICAgICAgICAgSGFydE1hc2tCYXNlLA0KPiA+DQo+ID4NCj4gPiAr ICBJTiAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXJ0QWRkciwNCj4gPg0KPiA+ DQo+ID4gKyAgSU4gIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICBTaXplLA0KPiA+DQo+ ID4NCj4gPiArICBJTiAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgIEFzaWQNCj4gPg0K PiA+DQo+ID4gKyAgKQ0KPiA+DQo+ID4NCj4gPiArew0KPiA+DQo+ID4NCj4gPiArICBTYmlSZXQg UmV0ID0gU2JpQ2FsbCAoDQo+ID4NCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgIFNCSV9FWFRf UkZFTkNFLA0KPiA+DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICBTQklfRVhUX1JGRU5DRV9S RU1PVEVfSEZFTkNFX1ZWTUEsDQo+ID4NCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgIDUsDQo+ ID4NCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgIChVSU5UTilIYXJ0TWFzaywNCj4gPg0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICAgSGFydE1hc2tCYXNlLA0KPiA+DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICBTdGFydEFkZHIsDQo+ID4NCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg IFNpemUsDQo+ID4NCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgIEFzaWQNCj4gPg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICAgKTsNCj4gPg0KPiA+DQo+ID4gKyAgcmV0dXJuIFRyYW5zbGF0 ZUVycm9yIChSZXQuRXJyb3IpOw0KPiA+DQo+ID4NCj4gPiArfQ0KPiA+DQo+ID4NCj4gPiArDQo+ ID4NCj4gPg0KPiA+ICsvKioNCj4gPg0KPiA+DQo+ID4gKyAgSW5zdHJ1Y3RzIHRoZSByZW1vdGUg aGFydHMgdG8gZXhlY3V0ZSBvbmUgb3IgbW9yZQ0KPiA+IFNGRU5DRS5WVk1BIGluc3RydWN0aW9u cy4NCj4gPg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4NCj4gPiArICBUaGUgU0ZFTkNFLkdWTUEgY292 ZXJzIHRoZSByYW5nZSBvZiB2aXJ0dWFsIGFkZHJlc3Nlcw0KPiA+IGJldHdlZW4gU3RhcnRBYWRk ciBhbmQgU2l6ZS4NCj4gPg0KPiA+DQo+ID4gKyAgVGhpcyBmdW5jdGlvbiBjYWxsIGlzIG9ubHkg dmFsaWQgZm9yIGhhcnRzDQo+ID4gaW1wbGVtZW50aW5nIHRoZSBoeXBlcnZpc29yIGV4dGVuc2lv bi4NCj4gPg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4NCj4gPiArICBUaGUgcmVtb3RlIGZlbmNlIGZ1 bmN0aW9uIGFjdHMgYXMgYSBmdWxsIHRsYiBmbHVzaCBpZg0KPiA+ICogU3RhcnRBZGRyIGFuZCBz aXplDQo+ID4NCj4gPg0KPiA+ICsgIGFyZSBib3RoIDAgKiBzaXplIGlzIGVxdWFsIHRvIDJeWExF Ti0xDQo+ID4NCj4gPg0KPiA+ICsNCj4gPg0KPiA+DQo+ID4gKyAgQHBhcmFtW2luXSAgSGFydE1h c2sgICAgICAgICAgICAgU2NhbGFyIGJpdC12ZWN0b3INCj4gPiBjb250YWluaW5nIGhhcnQgaWRz DQo+ID4NCj4gPg0KPiA+ICsgIEBwYXJhbVtpbl0gIEhhcnRNYXNrQmFzZSAgICAgICAgIFRoZSBz dGFydGluZyBoYXJ0aWQNCj4gPiBmcm9tIHdoaWNoIHRoZSBiaXQtdmVjdG9yDQo+ID4NCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11c3QgYmUgY29tcHV0ZWQu IElmDQo+ID4gc2V0IHRvIC0xLCBIYXJ0TWFzayBpcw0KPiA+DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmVkIGFuZCBhbGwNCj4gPiBoYXJ0cyBhcmUg Y29uc2lkZXJlZC4NCj4gPg0KPiA+DQo+ID4gKyAgQHBhcmFtW2luXSAgU3RhcnRBZGRyICAgICAg ICAgICAgVGhlIGZpcnN0IGFkZHJlc3Mgb2YNCj4gPiB0aGUgYWZmZWN0ZWQgcmFuZ2UuDQo+ID4N Cj4gPg0KPiA+ICsgIEBwYXJhbVtpbl0gIFNpemUgICAgICAgICAgICAgICAgIEhvdyBtYW55IGFk ZHJlc3Nlcw0KPiA+IGFyZSBhZmZlY3RlZC4NCj4gPg0KPiA+DQo+ID4gKyAgQHJldHZhbCBFRklf U1VDQ0VTUyAgICAgICAgICAgICAgSVBJIHdhcyBzZW50IHRvIGFsbA0KPiA+IHRoZSB0YXJnZXRl ZCBoYXJ0cy4NCj4gPg0KPiA+DQo+ID4gKyAgQHJldHZhbCBFRklfTE9BRF9FUlJPUiAgICAgICAg ICAgU3RhcnRBZGRyIG9yIFNpemUgaXMNCj4gPiBub3QgdmFsaWQuDQo+ID4NCj4gPg0KPiA+ICsg IEByZXR2YWwgRUZJX1VOU1VQUE9SVEVEICAgICAgICAgIFNCSSBkb2VzIG5vdA0KPiA+IGltcGxl bWVudCB0aGlzIGZ1bmN0aW9uIG9yIG9uZQ0KPiA+DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBvZiB0aGUgdGFyZ2V0IGhhcnRzDQo+ID4gZG9lcyBub3Qgc3Vw cG9ydCB0aGUNCj4gPg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgaHlwZXJ2aXNvcg0KPiA+IGV4dGVuc2lvbi4NCj4gPg0KPiA+DQo+ID4gKyAgQHJldHZhbCBF RklfSU5WQUxJRF9QQVJBTUVURVIgICAgRWl0aGVyDQo+ID4gaGFydF9tYXNrX2Jhc2Ugb3IgYW55 IG9mIHRoZSBoYXJ0aWQNCj4gPg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZnJvbSBoYXJ0X21hc2sgaXMNCj4gPiBub3QgdmFsaWQgaS5lLiBlaXRoZXIgdGhl DQo+ID4NCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhcnRp ZCBpcyBub3QNCj4gPiBlbmFibGVkIGJ5IHRoZSBwbGF0Zm9ybSBvciBpcw0KPiA+DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3QgYXZhaWxhYmxlIHRvIHRo ZQ0KPiA+IHN1cGVydmlzb3IuDQo+ID4NCj4gPg0KPiA+ICsqKi8NCj4gPg0KPiA+DQo+ID4gK0VG SV9TVEFUVVMNCj4gPg0KPiA+DQo+ID4gK0VGSUFQSQ0KPiA+DQo+ID4NCj4gPiArU2JpUmVtb3Rl SEZlbmNlVnZtYSAoDQo+ID4NCj4gPg0KPiA+ICsgIElOICBVSU5UTiAgICAgICAgICAgICAgICAg ICAgICAgICAqSGFydE1hc2ssDQo+ID4NCj4gPg0KPiA+ICsgIElOICBVSU5UTiAgICAgICAgICAg ICAgICAgICAgICAgICAgSGFydE1hc2tCYXNlLA0KPiA+DQo+ID4NCj4gPiArICBJTiAgVUlOVE4g ICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXJ0QWRkciwNCj4gPg0KPiA+DQo+ID4gKyAgSU4g IFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICBTaXplDQo+ID4NCj4gPg0KPiA+ICsgICkN Cj4gPg0KPiA+DQo+ID4gK3sNCj4gPg0KPiA+DQo+ID4gKyAgU2JpUmV0IFJldCA9IFNiaUNhbGwg KA0KPiA+DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICBTQklfRVhUX1JGRU5DRSwNCj4gPg0K PiA+DQo+ID4gKw0KPiA+IFNCSV9FWFRfUkZFTkNFX1JFTU9URV9IRkVOQ0VfVlZNQV9BU0lELA0K PiA+DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICA0LA0KPiA+DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAoVUlOVE4pSGFydE1hc2ssDQo+ID4NCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgIEhhcnRNYXNrQmFzZSwNCj4gPg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgU3RhcnRB ZGRyLA0KPiA+DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICBTaXplDQo+ID4NCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgICk7DQo+ID4NCj4gPg0KPiA+ICsgIHJldHVybiBUcmFuc2xhdGVF cnJvciAoUmV0LkVycm9yKTsNCj4gPg0KPiA+DQo+ID4gK30NCj4gPg0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4NCj4gPiArLy8NCj4gPg0KPiA+DQo+ID4gKy8vIFNCSSBpbnRlcmZhY2UgZnVuY3Rpb24g Zm9yIHRoZSB2ZW5kb3IgZXh0ZW5zaW9uDQo+ID4NCj4gPg0KPiA+ICsvLw0KPiA+DQo+ID4NCj4g PiArDQo+ID4NCj4gPg0KPiA+ICsvKioNCj4gPg0KPiA+DQo+ID4gKyAgQ2FsbCBhIGZ1bmN0aW9u IGluIGEgdmVuZG9yIGRlZmluZWQgU0JJIGV4dGVuc2lvbg0KPiA+DQo+ID4NCj4gPiArDQo+ID4N Cj4gPg0KPiA+ICsgIEFTU0VSVCgpIGlmIHRoZSBFeHRlbnNpb25JZCBpcyBub3QgaW4gdGhlIGRl c2lnbmF0ZWQNCj4gPiBTQkkgVmVuZG9yIEV4dGVuc2lvbg0KPiA+DQo+ID4NCj4gPiArICBTcGFj ZSBvciBOdW1BcmdzIGV4Y2VlZHMgU0JJX0NBTExfTUFYX0FSR1MuDQo+ID4NCj4gPg0KPiA+ICsN Cj4gPg0KPiA+DQo+ID4gKyAgQHBhcmFtW2luXSAgRXh0ZW5zaW9uSWQgICAgICAgICAgVGhlIFNC SSB2ZW5kb3INCj4gPiBleHRlbnNpb24gSUQuDQo+ID4NCj4gPg0KPiA+ICsgIEBwYXJhbVtpbl0g IEZ1bmN0aW9uSWQgICAgICAgICAgIFRoZSBmdW5jdGlvbiBJRCB0bw0KPiA+IGNhbGwgaW4gdGhp cyBleHRlbnNpb24uDQo+ID4NCj4gPg0KPiA+ICsgIEBwYXJhbVtpbl0gIE51bUFyZ3MgICAgICAg ICAgICAgIEhvdyBtYW55IGFyZ3VtZW50cw0KPiA+IGFyZSBwYXNzZWQuDQo+ID4NCj4gPg0KPiA+ ICsgIEBwYXJhbVtpbl0gIC4uLiAgICAgICAgICAgICAgICAgIEFjdHVhbCBBcmd1bWVudHMgdG8N Cj4gPiB0aGUgZnVuY3Rpb24uDQo+ID4NCj4gPg0KPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1Mg aWYgdGhlIFNCSSBmdW5jdGlvbiB3YXMgY2FsbGVkDQo+ID4gYW5kIGl0IHdhcyBzdWNjZXNzZnVs DQo+ID4NCj4gPg0KPiA+ICsgIEByZXR2YWwgb3RoZXJzIGlmIHRoZSBjYWxsZWQgU0JJIGZ1bmN0 aW9uIHJldHVybnMgYW4NCj4gPiBlcnJvcg0KPiA+DQo+ID4NCj4gPiArKiovDQo+ID4NCj4gPg0K PiA+ICtFRklfU1RBVFVTDQo+ID4NCj4gPg0KPiA+ICtFRklBUEkNCj4gPg0KPiA+DQo+ID4gK1Ni aVZlbmRvckNhbGwgKA0KPiA+DQo+ID4NCj4gPiArICBJTiAgVUlOVE4gICAgICAgICAgICAgICAg ICAgICAgICAgIEV4dGVuc2lvbklkLA0KPiA+DQo+ID4NCj4gPiArICBJTiAgVUlOVE4gICAgICAg ICAgICAgICAgICAgICAgICAgIEZ1bmN0aW9uSWQsDQo+ID4NCj4gPg0KPiA+ICsgIElOICBVSU5U TiAgICAgICAgICAgICAgICAgICAgICAgICAgTnVtQXJncywNCj4gPg0KPiA+DQo+ID4gKyAgLi4u DQo+ID4NCj4gPg0KPiA+ICsgICkNCj4gPg0KPiA+DQo+ID4gK3sNCj4gPg0KPiA+DQo+ID4gKyAg ICBTYmlSZXQgUmV0Ow0KPiA+DQo+ID4NCj4gPiArICAgIFZBX0xJU1QgQXJnczsNCj4gPg0KPiA+ DQo+ID4gKyAgICBWQV9TVEFSVCAoQXJncywgTnVtQXJncyk7DQo+ID4NCj4gPg0KPiA+ICsNCj4g Pg0KPiA+DQo+ID4gKyAgICBBU1NFUlQgKEV4dGVuc2lvbklkID49IFNCSV9FWFRfVkVORE9SX1NU QVJUICYmDQo+ID4gRXh0ZW5zaW9uSWQgPD0gU0JJX0VYVF9WRU5ET1JfRU5EKTsNCj4gPg0KPiA+ DQo+ID4gKyAgICBBU1NFUlQgKE51bUFyZ3MgPD0gU0JJX0NBTExfTUFYX0FSR1MpOw0KPiA+DQo+ ID4NCj4gPiArDQo+ID4NCj4gPg0KPiA+ICsgICAgc3dpdGNoIChOdW1BcmdzKSB7DQo+ID4NCj4g Pg0KPiA+ICsgICAgICBjYXNlIDA6DQo+ID4NCj4gPg0KPiA+ICsgICAgICAgIFJldCA9IFNiaUNh bGwgKEV4dGVuc2lvbklkLCBGdW5jdGlvbklkLA0KPiA+IE51bUFyZ3MpOw0KPiA+DQo+ID4NCj4g PiArICAgICAgICBicmVhazsNCj4gPg0KPiA+DQo+ID4gKyAgICAgIGNhc2UgMToNCj4gPg0KPiA+ DQo+ID4gKyAgICAgICAgUmV0ID0gU2JpQ2FsbCAoRXh0ZW5zaW9uSWQsIEZ1bmN0aW9uSWQsDQo+ ID4gTnVtQXJncywgVkFfQVJHIChBcmdzLCBVSU5UTikpOw0KPiA+DQo+ID4NCj4gPiArICAgICAg ICBicmVhazsNCj4gPg0KPiA+DQo+ID4gKyAgICAgIGNhc2UgMjoNCj4gPg0KPiA+DQo+ID4gKyAg ICAgICAgUmV0ID0gU2JpQ2FsbCAoRXh0ZW5zaW9uSWQsIEZ1bmN0aW9uSWQsDQo+ID4gTnVtQXJn cywgVkFfQVJHIChBcmdzLCBVSU5UTiksDQo+ID4NCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgIFZBX0FSRyAoQXJncywgVUlOVE4pKTsNCj4gPg0KPiA+DQo+ID4gKyAgICAgICAgYnJl YWs7DQo+ID4NCj4gPg0KPiA+ICsgICAgICBjYXNlIDM6DQo+ID4NCj4gPg0KPiA+ICsgICAgICAg IFJldCA9IFNiaUNhbGwgKEV4dGVuc2lvbklkLCBGdW5jdGlvbklkLA0KPiA+IE51bUFyZ3MsIFZB X0FSRyAoQXJncywgVUlOVE4pLA0KPiA+DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICBWQV9BUkcgKEFyZ3MsIFVJTlROKSwgVkFfQVJHDQo+ID4gKEFyZ3MsIFVJTlROKSk7DQo+ID4N Cj4gPg0KPiA+ICsgICAgICAgIGJyZWFrOw0KPiA+DQo+ID4NCj4gPiArICAgICAgY2FzZSA0Og0K PiA+DQo+ID4NCj4gPiArICAgICAgICBSZXQgPSBTYmlDYWxsIChFeHRlbnNpb25JZCwgRnVuY3Rp b25JZCwNCj4gPiBOdW1BcmdzLCBWQV9BUkcgKEFyZ3MsIFVJTlROKSwNCj4gPg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgVkFfQVJHIChBcmdzLCBVSU5UTiksIFZBX0FSRw0KPiA+ IChBcmdzLCBVSU5UTiksDQo+ID4NCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIFZB X0FSRyAoQXJncywgVUlOVE4pKTsNCj4gPg0KPiA+DQo+ID4gKyAgICAgICAgYnJlYWs7DQo+ID4N Cj4gPg0KPiA+ICsgICAgICBjYXNlIDU6DQo+ID4NCj4gPg0KPiA+ICsgICAgICAgIFJldCA9IFNi aUNhbGwgKEV4dGVuc2lvbklkLCBGdW5jdGlvbklkLA0KPiA+IE51bUFyZ3MsIFZBX0FSRyAoQXJn cywgVUlOVE4pLA0KPiA+DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBWQV9BUkcg KEFyZ3MsIFVJTlROKSwgVkFfQVJHDQo+ID4gKEFyZ3MsIFVJTlROKSwNCj4gPg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgVkFfQVJHIChBcmdzLCBVSU5UTiksIFZBX0FSRw0KPiA+ IChBcmdzLCBVSU5UTikpOw0KPiA+DQo+ID4NCj4gPiArICAgICAgICBicmVhazsNCj4gPg0KPiA+ DQo+ID4gKyAgICAgIGNhc2UgNjoNCj4gPg0KPiA+DQo+ID4gKyAgICAgICAgUmV0ID0gU2JpQ2Fs bCAoRXh0ZW5zaW9uSWQsIEZ1bmN0aW9uSWQsDQo+ID4gTnVtQXJncywgVkFfQVJHIChBcmdzLCBV SU5UTiksDQo+ID4NCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIFZBX0FSRyAoQXJn cywgVUlOVE4pLCBWQV9BUkcNCj4gPiAoQXJncywgVUlOVE4pLA0KPiA+DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICBWQV9BUkcgKEFyZ3MsIFVJTlROKSwgVkFfQVJHDQo+ID4gKEFy Z3MsIFVJTlROKSwNCj4gPg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgVkFfQVJH IChBcmdzLCBVSU5UTikpOw0KPiA+DQo+ID4NCj4gPiArICAgICAgICBicmVhazsNCj4gPg0KPiA+ DQo+ID4gKyAgICAgIGRlZmF1bHQ6DQo+ID4NCj4gPg0KPiA+ICsgICAgICAgIC8vIFRvbyBtYW55 IGFyZ3MuIEluIHRoZW9yeSBTQkkgY2FuIGhhbmRsZSBtb3JlDQo+ID4gYXJndW1lbnRzIHdoZW4g dGhleSBhcmUNCj4gPg0KPiA+DQo+ID4gKyAgICAgICAgLy8gcGFzc2VkIG9uIHRoZSBzdGFjayBi dXQgbm8gU0JJIGV4dGVuc2lvbg0KPiA+IHVzZXMgdGhpcywgdGhlcmVmb3JlIGl0J3MNCj4gPg0K PiA+DQo+ID4gKyAgICAgICAgLy8gbm90IHlldCBpbXBsZW1lbnRlZCBoZXJlLg0KPiA+DQo+ID4N Cj4gPiArICAgICAgICByZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KPiA+DQo+ID4NCj4g PiArICAgICB9DQo+ID4NCj4gPg0KPiA+ICsNCj4gPg0KPiA+DQo+ID4gKyAgICBWQV9FTkQoQXJn cyk7DQo+ID4NCj4gPg0KPiA+ICsgICAgcmV0dXJuIFRyYW5zbGF0ZUVycm9yIChSZXQuRXJyb3Ip Ow0KPiA+DQo+ID4NCj4gPiArfQ0KPiA+DQo+ID4NCj4gPiArDQo+ID4NCj4gPg0KPiA+ICsvLw0K PiA+DQo+ID4NCj4gPiArLy8gU0JJIEZpcm13YXJlIGV4dGVuc2lvbg0KPiA+DQo+ID4NCj4gPiAr Ly8NCj4gPg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4NCj4gPiArLyoqDQo+ID4NCj4gPg0KPiA+ICsg IEdldCBzY3JhdGNoIHNwYWNlIG9mIHRoZSBjdXJyZW50IGhhcnQuDQo+ID4NCj4gPg0KPiA+ICsN Cj4gPg0KPiA+DQo+ID4gKyAgUGxlYXNlIGNvbnNpZGVyIHVzaW5nIHRoZSB3cmFwcGVyDQo+ID4g U2JpR2V0RmlybXdhcmVDb250ZXh0IGlmIHlvdSBvbmx5IG5lZWQgdG8NCj4gPg0KPiA+DQo+ID4g KyAgYWNjZXNzIHRoZSBmaXJtd2FyZSBjb250ZXh0Lg0KPiA+DQo+ID4NCj4gPiArDQo+ID4NCj4g Pg0KPiA+ICsgIEBwYXJhbVtvdXRdIFNjcmF0Y2hTcGFjZSAgICAgICAgIFRoZSBzY3JhdGNoIHNw YWNlDQo+ID4gcG9pbnRlci4NCj4gPg0KPiA+DQo+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAg ICAgICAgICAgICAgVGhlIG9wZXJhdGlvbg0KPiA+IHN1Y2NlZWRzLg0KPiA+DQo+ID4NCj4gPiAr KiovDQo+ID4NCj4gPg0KPiA+ICtFRklfU1RBVFVTDQo+ID4NCj4gPg0KPiA+ICtFRklBUEkNCj4g Pg0KPiA+DQo+ID4gK1NiaUdldE1zY3JhdGNoICgNCj4gPg0KPiA+DQo+ID4gKyAgT1VUIFNCSV9T Q1JBVENIICAgICAgICAgICAgICAgICAgICAqKlNjcmF0Y2hTcGFjZQ0KPiA+DQo+ID4NCj4gPiAr ICApDQo+ID4NCj4gPg0KPiA+ICt7DQo+ID4NCj4gPg0KPiA+ICsgIFNiaVJldCBSZXQgPSBTYmlD YWxsIChTQklfRURLMl9GV19FWFQsDQo+ID4gU0JJX0VYVF9GV19NU0NSQVRDSF9GVU5DLCAwKTsN Cj4gPg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4NCj4gPiArICBpZiAoIVJldC5FcnJvcikgew0KPiA+ DQo+ID4NCj4gPiArICAgICpTY3JhdGNoU3BhY2UgPSAoU0JJX1NDUkFUQ0ggKilSZXQuVmFsdWU7 DQo+ID4NCj4gPg0KPiA+ICsgIH0NCj4gPg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4NCj4gPiArICBy ZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ID4NCj4gPg0KPiA+ICt9DQo+ID4NCj4gPg0KPiA+ICsNCj4g Pg0KPiA+DQo+ID4gKy8qKg0KPiA+DQo+ID4NCj4gPiArICBHZXQgc2NyYXRjaCBzcGFjZSBvZiB0 aGUgZ2l2ZW4gaGFydCBpZC4NCj4gPg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4NCj4gPiArICBAcGFy YW1baW5dICBIYXJ0SWQgICAgICAgICAgICAgICBUaGUgaGFydCBpZC4NCj4gPg0KPiA+DQo+ID4g KyAgQHBhcmFtW291dF0gU2NyYXRjaFNwYWNlICAgICAgICAgVGhlIHNjcmF0Y2ggc3BhY2UNCj4g PiBwb2ludGVyLg0KPiA+DQo+ID4NCj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAg ICAgICBUaGUgb3BlcmF0aW9uDQo+ID4gc3VjY2VlZHMuDQo+ID4NCj4gPg0KPiA+ICsqKi8NCj4g Pg0KPiA+DQo+ID4gK0VGSV9TVEFUVVMNCj4gPg0KPiA+DQo+ID4gK0VGSUFQSQ0KPiA+DQo+ID4N Cj4gPiArU2JpR2V0TXNjcmF0Y2hIYXJ0aWQgKA0KPiA+DQo+ID4NCj4gPiArICBJTiAgVUlOVE4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgSGFydElkLA0KPiA+DQo+ID4NCj4gPiArICBPVVQg U0JJX1NDUkFUQ0ggICAgICAgICAgICAgICAgICAgICoqU2NyYXRjaFNwYWNlDQo+ID4NCj4gPg0K PiA+ICsgICkNCj4gPg0KPiA+DQo+ID4gK3sNCj4gPg0KPiA+DQo+ID4gKyAgU2JpUmV0IFJldCA9 IFNiaUNhbGwgKA0KPiA+DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICBTQklfRURLMl9GV19F WFQsDQo+ID4NCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgIFNCSV9FWFRfRldfTVNDUkFUQ0hf SEFSVElEX0ZVTkMsDQo+ID4NCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgIDEsDQo+ID4NCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgIEhhcnRJZA0KPiA+DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgICApOw0KPiA+DQo+ID4NCj4gPiArDQo+ID4NCj4gPg0KPiA+ICsgIGlmICghUmV0LkVy cm9yKSB7DQo+ID4NCj4gPg0KPiA+ICsgICAgKlNjcmF0Y2hTcGFjZSA9IChTQklfU0NSQVRDSCAq KVJldC5WYWx1ZTsNCj4gPg0KPiA+DQo+ID4gKyAgfQ0KPiA+DQo+ID4NCj4gPiArDQo+ID4NCj4g Pg0KPiA+ICsgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gPg0KPiA+DQo+ID4gK30NCj4gPg0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4NCj4gPiArLyoqDQo+ID4NCj4gPg0KPiA+ICsgIEdldCBmaXJtd2Fy ZSBjb250ZXh0IG9mIHRoZSBjYWxsaW5nIGhhcnQuDQo+ID4NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ DQo+ID4gKyAgQHBhcmFtW291dF0gRmlybXdhcmVDb250ZXh0ICAgICAgVGhlIGZpcm13YXJlIGNv bnRleHQNCj4gPiBwb2ludGVyLg0KPiA+DQo+ID4NCj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNT ICAgICAgICAgICAgICBUaGUgb3BlcmF0aW9uDQo+ID4gc3VjY2VlZHMuDQo+ID4NCj4gPg0KPiA+ ICsqKi8NCj4gPg0KPiA+DQo+ID4gK0VGSV9TVEFUVVMNCj4gPg0KPiA+DQo+ID4gK0VGSUFQSQ0K PiA+DQo+ID4NCj4gPiArU2JpR2V0RmlybXdhcmVDb250ZXh0ICgNCj4gPg0KPiA+DQo+ID4gKyAg T1VUIEVGSV9SSVNDVl9PUEVOU0JJX0ZJUk1XQVJFX0NPTlRFWFQNCj4gPiAqKkZpcm13YXJlQ29u dGV4dA0KPiA+DQo+ID4NCj4gPiArICApDQo+ID4NCj4gPg0KPiA+ICt7DQo+ID4NCj4gPg0KPiA+ ICsgIFNCSV9TQ1JBVENIICAqU2NyYXRjaFNwYWNlOw0KPiA+DQo+ID4NCj4gPiArICBTQklfUExB VEZPUk0gKlNiaVBsYXRmb3JtOw0KPiA+DQo+ID4NCj4gPiArICBTYmlSZXQgUmV0ID0gU2JpQ2Fs bCAoU0JJX0VESzJfRldfRVhULA0KPiA+IFNCSV9FWFRfRldfTVNDUkFUQ0hfRlVOQywgMCk7DQo+ ID4NCj4gPg0KPiA+ICsNCj4gPg0KPiA+DQo+ID4gKyAgaWYgKCFSZXQuRXJyb3IpIHsNCj4gPg0K PiA+DQo+ID4gKyAgICBTY3JhdGNoU3BhY2UgPSAoU0JJX1NDUkFUQ0ggKilSZXQuVmFsdWU7DQo+ ID4NCj4gPg0KPiA+ICsgICAgU2JpUGxhdGZvcm0gPSAoU0JJX1BMQVRGT1JNDQo+ID4gKilzYmlf cGxhdGZvcm1fcHRyKFNjcmF0Y2hTcGFjZSk7DQo+ID4NCj4gPg0KPiA+ICsgICAgKkZpcm13YXJl Q29udGV4dCA9DQo+ID4gKEVGSV9SSVNDVl9PUEVOU0JJX0ZJUk1XQVJFX0NPTlRFWFQgKilTYmlQ bGF0Zm9ybS0NCj4gPiA+ZmlybXdhcmVfY29udGV4dDsNCj4gPg0KPiA+DQo+ID4gKyAgfQ0KPiA+ DQo+ID4NCj4gPiArDQo+ID4NCj4gPg0KPiA+ICsgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gPg0K PiA+DQo+ID4gK30NCj4gPg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4NCj4gPiArLyoqDQo+ID4NCj4g Pg0KPiA+ICsgIFNldCBmaXJtd2FyZSBjb250ZXh0IG9mIHRoZSBjYWxsaW5nIGhhcnQuDQo+ID4N Cj4gPg0KPiA+ICsNCj4gPg0KPiA+DQo+ID4gKyAgQHBhcmFtW2luXSBGaXJtd2FyZUNvbnRleHQg ICAgICAgVGhlIGZpcm13YXJlIGNvbnRleHQNCj4gPiBwb2ludGVyLg0KPiA+DQo+ID4NCj4gPiAr ICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICAgICBUaGUgb3BlcmF0aW9uDQo+ID4gc3Vj Y2VlZHMuDQo+ID4NCj4gPg0KPiA+ICsqKi8NCj4gPg0KPiA+DQo+ID4gK0VGSV9TVEFUVVMNCj4g Pg0KPiA+DQo+ID4gK0VGSUFQSQ0KPiA+DQo+ID4NCj4gPiArU2JpU2V0RmlybXdhcmVDb250ZXh0 ICgNCj4gPg0KPiA+DQo+ID4gKyAgSU4gRUZJX1JJU0NWX09QRU5TQklfRklSTVdBUkVfQ09OVEVY VA0KPiA+ICpGaXJtd2FyZUNvbnRleHQNCj4gPg0KPiA+DQo+ID4gKyAgKQ0KPiA+DQo+ID4NCj4g PiArew0KPiA+DQo+ID4NCj4gPiArICBTQklfU0NSQVRDSCAgKlNjcmF0Y2hTcGFjZTsNCj4gPg0K PiA+DQo+ID4gKyAgU0JJX1BMQVRGT1JNICpTYmlQbGF0Zm9ybTsNCj4gPg0KPiA+DQo+ID4gKyAg U2JpUmV0IFJldCA9IFNiaUNhbGwgKFNCSV9FREsyX0ZXX0VYVCwNCj4gPiBTQklfRVhUX0ZXX01T Q1JBVENIX0ZVTkMsIDApOw0KPiA+DQo+ID4NCj4gPiArDQo+ID4NCj4gPg0KPiA+ICsgIGlmICgh UmV0LkVycm9yKSB7DQo+ID4NCj4gPg0KPiA+ICsgICAgU2NyYXRjaFNwYWNlID0gKFNCSV9TQ1JB VENIICopUmV0LlZhbHVlOw0KPiA+DQo+ID4NCj4gPiArICAgIFNiaVBsYXRmb3JtID0gKFNCSV9Q TEFURk9STSAqKXNiaV9wbGF0Zm9ybV9wdHINCj4gPiAoU2NyYXRjaFNwYWNlKTsNCj4gPg0KPiA+ DQo+ID4gKyAgICBTYmlQbGF0Zm9ybS0+ZmlybXdhcmVfY29udGV4dCA9DQo+ID4gKFVJTlROKUZp cm13YXJlQ29udGV4dDsNCj4gPg0KPiA+DQo+ID4gKyAgfQ0KPiA+DQo+ID4NCj4gPiArDQo+ID4N Cj4gPg0KPiA+ICsgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gPg0KPiA+DQo+ID4gK30NCj4gPg0K PiA+DQo+ID4gLS0NCj4gPiAyLjI2LjENCj4gPg0KPiA+DQo+ID4gDQoNCg==