From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by mx.groups.io with SMTP id smtpd.web10.17.1594399121416634163 for ; Fri, 10 Jul 2020 09:38:41 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=Pe4XhRvJ; spf=pass (domain: intel.com, ip: 192.55.52.43, mailfrom: michael.d.kinney@intel.com) IronPort-SDR: 8vsu5GLro7jG2VEF5L7NEy8ThyjeuESPDPIOZ7JOgahe81404aKX0yYth1YOpwDSkWf+6zDWiW 6THLtbveY4Aw== X-IronPort-AV: E=McAfee;i="6000,8403,9678"; a="233106689" X-IronPort-AV: E=Sophos;i="5.75,336,1589266800"; d="scan'208";a="233106689" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga004.jf.intel.com ([10.7.209.38]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 10 Jul 2020 09:38:38 -0700 IronPort-SDR: K2e+aSqGsCDOWn/13p5gfeextaNkKA1r7c+VuNA0jQF7x4YIcifsGcht9ZpqpbsGnA/k/5ZLt5 5lDA0tKlxzoA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.75,336,1589266800"; d="scan'208";a="428612767" Received: from orsmsx109.amr.corp.intel.com ([10.22.240.7]) by orsmga004.jf.intel.com with ESMTP; 10 Jul 2020 09:38:38 -0700 Received: from ORSEDG001.ED.cps.intel.com (10.7.248.4) by ORSMSX109.amr.corp.intel.com (10.22.240.7) with Microsoft SMTP Server (TLS) id 14.3.439.0; Fri, 10 Jul 2020 09:38:37 -0700 Received: from NAM02-CY1-obe.outbound.protection.outlook.com (104.47.37.58) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (TLS) id 14.3.439.0; Fri, 10 Jul 2020 09:38:37 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Xt1gyoVUA+X+NMVZWYlgZG7y6RI7OvkFqhG128tXtABLto3TiE9P8kh3PIYpEMeg5wpDEYa8peWTVoNolFVWtHo5AZVNkFf4eAX7pB0/IegTts5ScoGC0uLsnFlwntvUtvqFbtJw6zj+sfslK3xFR7uBRn9jdohkkEiYhGnaDK4mIWvyES3rkigFIymNcbDZGRhP/yBpsSXgeI87G9OhVyzagdrR74ibmu8KelGjACPRPo82akwLtLm5egf/X68sE4CtQqWhOhiKCVKsNrHbU/wqWpcBXH5otTUrYEfX+/yijAGlib/DzKG2d2G4KBwfZjtC5JOn9mTDR/sMvdkDHw== 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=WTAHxNbKj1bMCpvocRt72irhxKp/E+Zk6XHi64wFd3k=; b=cRBxamCVrRI7PMychvx1H+fH77Uo8cPa1vDdP06/rfvKTmXEnByT8yUB4uGKQkfadrzRGUfKgUauclFWzSKL0+hLzXY+05k+sgNYKSMWjJiQhCT5o41I70penzgbIrj1CD/5+RmRpHhOCtlTOpl/7QChkg7r4VIDfBGCzqHfk7NB3Z4xdeDa8i7aWlwhLc49LqkiwU/EGoohVSX/ggqBAO0/G4fpl1GO8iAnJ7kH/i3MyTkKSVwNcvp64s9Qh50blVHF13ZTDl8gykYKI3DVoGeN/v9M8Se4fhVbuxBOuQOkh0/yKNZjcw5O9Dp7s0j7nNyJF3iGqClpQ8gYbC3boQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=WTAHxNbKj1bMCpvocRt72irhxKp/E+Zk6XHi64wFd3k=; b=Pe4XhRvJK5a1UpigHqtuAVuHmizD9aO79GE4iWP5gPLkCvERr1gkwjtpGlWbd5ViWqh2OwOgHPOuGQkR9S+GXilEnOLuJgtvQ9XCa0mJgIPBQcGvFlcGkx80uFTt4mxMkZwpSBOFIDIHXUdd3ZFeVJG6yi3zppGKjWMrhUtK3IU= Received: from MN2PR11MB4461.namprd11.prod.outlook.com (2603:10b6:208:192::29) by BL0PR11MB3282.namprd11.prod.outlook.com (2603:10b6:208:6a::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3174.23; Fri, 10 Jul 2020 16:38:34 +0000 Received: from MN2PR11MB4461.namprd11.prod.outlook.com ([fe80::10bc:1a4e:4745:ffc1]) by MN2PR11MB4461.namprd11.prod.outlook.com ([fe80::10bc:1a4e:4745:ffc1%3]) with mapi id 15.20.3174.023; Fri, 10 Jul 2020 16:38:34 +0000 From: "Michael D Kinney" To: "Gao, Liming" , "devel@edk2.groups.io" , "Kinney, Michael D" CC: Sean Brogan , Bret Barkelew , "Yao, Jiewen" Subject: Re: [Patch v2 05/16] MdePkg/Library/BaseLib: Add BaseLib instance for host based unit tests Thread-Topic: [Patch v2 05/16] MdePkg/Library/BaseLib: Add BaseLib instance for host based unit tests Thread-Index: AQHWVfseXdPo4TIt1EW+QNnORU5wfaj/eR2QgAD5qQCAAI6koA== Date: Fri, 10 Jul 2020 16:38:33 +0000 Message-ID: References: <20200709040521.3748-1-michael.d.kinney@intel.com> <20200709040521.3748-6-michael.d.kinney@intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.2.0.6 authentication-results: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=intel.com; x-originating-ip: [134.134.136.214] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: db92da60-3d3b-4c9b-8d8d-08d824efaff6 x-ms-traffictypediagnostic: BL0PR11MB3282: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:8882; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 24crggck2MygNp2MAJZdvhKrBe3WfJJz+MNn5XhEW4IE92sQaMesMODvjCKmK14Rk+eoWxj6nVsQlOFmJuCg+ELnNuluNhjnrUtJbiS3rOQc20QshV4387o6e05zgYOWWSvDG/eKBb4XpsWDH5LqsKJKCynzRmqQnuSKsiNTLyEFxHMdA9mdi7idcmMgEMxyLY4Oj/CEbbMFxqLj0wxIKSo4EeTVlsgowVpPbGDv5bMeMtAf9x6jasKpybvjdT8YZSRgjAuhsAWq0M3S6pgIY/NC+0sPPU6sQAuWptBzRWJzafv2NPdUkZ+cx3FIHkuh1c7TaRRhbF9ujUK+4vpKpxYAlTasMZ+99gbKQ/5on0tA/WsxebXVvLrKHj/gFXnqb89lZHpfK5X6kBpo2a6jujv3VTyET5tv/LM/clwaCmZP1MADbCT02JimVopnymGN x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MN2PR11MB4461.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFTY:;SFS:(4636009)(376002)(39860400002)(346002)(136003)(366004)(396003)(71200400001)(316002)(66446008)(64756008)(66556008)(66476007)(110136005)(54906003)(107886003)(966005)(66946007)(76116006)(83380400001)(2906002)(7696005)(9686003)(33656002)(86362001)(478600001)(26005)(5660300002)(4326008)(53546011)(55016002)(6506007)(19627235002)(8936002)(8676002)(186003)(30864003)(52536014)(569008);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: RpOKuHiGJkHJUse/peVv1s4fdouDSaqi7W0xh3kqp+rJCp2Zrw3PNUmj9/MpTaNwDNArK0OPfzDkHIisTM3pjMPIpRCQjjJPsVjMNkMfdPi/nsgZB6tPneGBRSmeOMkt2vPBBcsfDigopqln+SmJK0K8GNYOVVsf7NDU7Pl/vqmQJ3w2PWhC4pEAvvz/Tq1iBR7FsV2hKrTYsH3Zqqx8i15dJLYmkOr6Gs+ybPrSPZicCOU7ekBio8VCrsixTK3pVYjsQbCZt+MhKPmh3Sl3p7PoQ0I8BBLX/HcXuR2SOi0m+pWedC5nc/zZeMYlSuprm3kJ0k7EZNPGNayY5pwH2gBZV1hcqEM75pSN7hRyKfpsthZD3vjLjrI1gZwTx5kNxNazelKu/35H57ehT3iEpSUF4J6YZf0b4Blnf00xATSgV5Wt/nfeQltLtBGbfr57os1nsPtqJEs9YnyBO5oRIoivkP7PnPyG7KBebLRilHDhMSy4iUHCdV6hBtsPhsxp MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MN2PR11MB4461.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: db92da60-3d3b-4c9b-8d8d-08d824efaff6 X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Jul 2020 16:38:33.8581 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: dPI+KMo+We/p5Gn9jHd+XRplW8BDdupmpR5MGhfPxx6s+NPo5NZ28+aot1Ump0yn/JIPWzj3373hxcPjpcy2GRrPh9LhDtVbzBy6FEvjxuY= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL0PR11MB3282 Return-Path: michael.d.kinney@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 TGltaW5nLA0KDQpJIHRoaW5rIEkgc2VlIHlvdXIgcG9pbnQuIFRoZSBVbml0VGVzdEhvc3RCYXNl TGliIGluc3RhbmNlDQpkb2VzIHByb2R1Y2UgYWxsIHRoZSBzZXJ2aWNlcyBvZiBCYXNlTGliLCBi dXQgaXQgYWxzbyANCnByb2R1Y2VzIG9uZSBleHRyYSBnbG9iYWwgdmFyaWFibGUgdGhhdCBhbGxv d3MgaG9zdCBiYXNlZA0KdW5pdCB0ZXN0cyBhcHBzIHRvIGhvb2sgc29tZSBvZiB0aGUgQmFzZUxp YiBzZXJ2aWNlcy4NCg0KICBleHRlcm4gVU5JVF9URVNUX0hPU1RfQkFTRV9MSUIgIGdVbml0VGVz dEhvc3RCYXNlTGliOw0KDQpUaGlzIGdsb2JhbCBhbmQgc3RydWN0IGFyZSBjdXJyZW50bHkgZGVj bGFyZWQgaW4gdGhlIGZpbGU6DQoNCiAgTWRlUGtnXFRlc3RcVW5pdFRlc3RcSW5jbHVkZVxIb3N0 VGVzdFxVbml0VGVzdEhvc3RCYXNlTGliLmgNCg0KVW5pdCB0ZXN0cyB0aGF0IHdhbnQgdG8gaG9v ayBvbmUgb2YgdGhlIEJhc2VMaWIgc2VydmljZXMNCnVzZSBhbiBpbmNsdWRlIHN0YXRlbWVudCBv ZiB0aGUgZm9ybToNCg0KICAjaW5jbHVkZSA8SG9zdFRlc3QvVW5pdFRlc3RIb3N0QmFzZUxpYi5o Pg0KDQpUaGlzIGFwcHJvYWNoIGRvZXMgbm90IGZvbGxvdyB0aGUgbGlicmFyeSBjbGFzcy9pbnN0 YW5jZQ0KZGVzaWduIHBhdHRlcm4gZm9yIEVESyBJSS4gIEkgdGhpbmsgSSBjYW4gYWxpZ24gaXQg d2l0aCANCnRoZSBFREsgSUkgZGVzaWduIHBhdHRlcm4gd2l0aCB0aGUgZm9sbG93aW5nIGNoYW5n ZXM6DQoNCjEpIE1vdmUgVW5pdFRlc3RIb3N0QmFzZUxpYi5oIGZyb20gDQogICAgICBNZGVQa2dc VGVzdFxVbml0VGVzdFxJbmNsdWRlXEhvc3RUZXN0XFVuaXRUZXN0SG9zdEJhc2VMaWIuaA0KICAg VG86DQogICAgICBNZGVQa2dcVGVzdFxVbml0VGVzdFxJbmNsdWRlXExpYnJhcnlcVW5pdFRlc3RI b3N0QmFzZUxpYi5oDQoNCjIpIERlY2xhcmUgdGhlIFVuaXRUZXN0SG9zdEJhc2VMaWIgY2xhc3Mg aW4gTWRlUGtnLmRlYw0KDQozKSBVcGRhdGUgTWRlUGtnXExpYnJhcnlcQmFzZUxpYlxVbml0VGVz dEhvc3RCYXNlTGliLmluZiB0bw0KICAgZGVjbGFyZSBpdCBwcm9kdWNlcyBib3RoIHRoZSBCYXNl TGliIGFuZCBVbml0VGVzdEhvc3RCYXNlTGliDQogICBjbGFzc2VzLg0KDQo0KSBVcGRhdGUgVW5p dFRlc3RGcmFtZXdvcmtQa2cvVW5pdFRlc3RGcmFtZXdvcmtQa2dIb3N0LmRzYy5pbmMNCiAgIHRv IHByb3ZpZGUgdGhlIGRlZmF1bHQgbGlicmFyeSBjbGFzcyB0byBpbnN0YW5jZSBtYXBwaW5nIGZv cg0KICAgVW5pdFRlc3RIb3N0QmFzZUxpYi4NCg0KNSkgVXBkYXRlIGhvc3QgYmFzZWQgdW5pdCB0 ZXN0cyBhcHBzIHRoYXQgaG9vayBCYXNlTGliIGZ1bmN0aW9ucw0KICAgdG8gYWRkIFVuaXRUZXN0 SG9zdEJhc2VMaWIgbGlicmFyeSBjbGFzcyB0byB0aGVpciBJTkYgZmlsZXMNCiAgIGFuZCB1c2Ug dGhlIGZvbGxvd2luZyAjaW5jbHVkZSB0byB1c2UgdGhlIGdsb2JhbCB2YXJpYWJsZSB0bw0KICAg aG9vayBCYXNlTGliIGZ1bmN0aW9ucy4NCg0KICAgICNpbmNsdWRlIDxIb3N0VGVzdC9Vbml0VGVz dEhvc3RCYXNlTGliLmg+DQoNCkkgd2lsbCB1cGRhdGUgdGhlIHBhdGNoIHNlcmllcyB3aXRoIHRo ZXNlIGNoYW5nZXMuDQoNClRoYW5rcywNCg0KTWlrZQ0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2Fn ZS0tLS0tDQo+IEZyb206IEdhbywgTGltaW5nIDxsaW1pbmcuZ2FvQGludGVsLmNvbT4NCj4gU2Vu dDogRnJpZGF5LCBKdWx5IDEwLCAyMDIwIDEyOjU1IEFNDQo+IFRvOiBLaW5uZXksIE1pY2hhZWwg RCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+Ow0KPiBkZXZlbEBlZGsyLmdyb3Vwcy5pbw0K PiBDYzogU2VhbiBCcm9nYW4gPHNlYW4uYnJvZ2FuQG1pY3Jvc29mdC5jb20+OyBCcmV0DQo+IEJh cmtlbGV3IDxCcmV0LkJhcmtlbGV3QG1pY3Jvc29mdC5jb20+OyBZYW8sIEppZXdlbg0KPiA8amll d2VuLnlhb0BpbnRlbC5jb20+DQo+IFN1YmplY3Q6IFJFOiBbUGF0Y2ggdjIgMDUvMTZdIE1kZVBr Zy9MaWJyYXJ5L0Jhc2VMaWI6DQo+IEFkZCBCYXNlTGliIGluc3RhbmNlIGZvciBob3N0IGJhc2Vk IHVuaXQgdGVzdHMNCj4gDQo+IE1pa2U6DQo+ICAgU28sIHRoaXMgbmV3IGxpYnJhcnkgaW5zdGFu Y2UgcHJvZHVjZXMgdHdvIGxpYnJhcnkNCj4gY2xhc3NlczogQmFzZUxpYiBhbmQgVW5pdFRlc3RI b3N0QmFzZUxpYi4gQ2FuIHlvdQ0KPiBzcGVjaWZ5IHR3byBsaWJyYXJ5IGNsYXNzZXMgaW4gaXRz IElORiBmaWxlPw0KPiANCj4gVGhhbmtzDQo+IExpbWluZw0KPiAtLS0tLU9yaWdpbmFsIE1lc3Nh Z2UtLS0tLQ0KPiBGcm9tOiBLaW5uZXksIE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBpbnRl bC5jb20+DQo+IFNlbnQ6IDIwMjDlubQ35pyIMTDml6UgMTowNQ0KPiBUbzogR2FvLCBMaW1pbmcg PGxpbWluZy5nYW9AaW50ZWwuY29tPjsNCj4gZGV2ZWxAZWRrMi5ncm91cHMuaW87IEtpbm5leSwg TWljaGFlbCBEDQo+IDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4NCj4gQ2M6IFNlYW4gQnJv Z2FuIDxzZWFuLmJyb2dhbkBtaWNyb3NvZnQuY29tPjsgQnJldA0KPiBCYXJrZWxldyA8QnJldC5C YXJrZWxld0BtaWNyb3NvZnQuY29tPjsgWWFvLCBKaWV3ZW4NCj4gPGppZXdlbi55YW9AaW50ZWwu Y29tPg0KPiBTdWJqZWN0OiBSRTogW1BhdGNoIHYyIDA1LzE2XSBNZGVQa2cvTGlicmFyeS9CYXNl TGliOg0KPiBBZGQgQmFzZUxpYiBpbnN0YW5jZSBmb3IgaG9zdCBiYXNlZCB1bml0IHRlc3RzDQo+ IA0KPiBIaSBMaW1pbmcsDQo+IA0KPiBJIG1hZGUgdGhlIExJQlJBUllfQ0xBU1MgQmFzZUxpYiBv biBwdXJwb3NlLg0KPiANCj4gICBMSUJSQVJZX0NMQVNTICAgICAgICAgICAgICAgICAgPQ0KPiBC YXNlTGlifEhPU1RfQVBQTElDQVRJT04NCj4gDQo+IFdoZW4gYnVpbGRpbmcgYSBob3N0IGJhc2Vk IHRlc3QgZm9yIGNvZGUgdW5kZXIgdGVzdCwNCj4gdGhhdCBjb2RlIHVuZGVyIHRlc3QgbWF5IGhh dmUgYSBkZXBlbmRlbmN5IG9uIHRoZQ0KPiBCYXNlTGliIGNsYXNzIGFuZCB0aGF0IG1lYW5zIHdl IG5lZWQgYSBCYXNlTGliIGluc3RhbmNlDQo+IHRvIGJlIHJlc29sdmVkLiAgTm90aWNlIHRoYXQg dGhpcyBuZXcgaW5zdGFuY2Ugb2YgdGhlDQo+IEJhc2VMaWIgY2xhc3MgaXMgZGVjbGFyZWQgdG8g b25seSBiZSBjb21wYXRpYmxlIHdpdGgNCj4gbW9kdWxlcyBvZiB0eXBlIEhPU1RfQVBQTElDQVRJ T04sIHNvIGl0IGNhbiBub3QgYmUNCj4gYWNjaWRlbnRseSB1c2VkIHdpdGggYSBGVyBtb2R1bGUu DQo+IA0KPiBCZXN0IHJlZ2FyZHMsDQo+IA0KPiBNaWtlDQo+IA0KPiA+IC0tLS0tT3JpZ2luYWwg TWVzc2FnZS0tLS0tDQo+ID4gRnJvbTogR2FvLCBMaW1pbmcgPGxpbWluZy5nYW9AaW50ZWwuY29t Pg0KPiA+IFNlbnQ6IFRodXJzZGF5LCBKdWx5IDksIDIwMjAgNzoxMyBBTQ0KPiA+IFRvOiBLaW5u ZXksIE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+Ow0KPiA+IGRldmVsQGVk azIuZ3JvdXBzLmlvDQo+ID4gQ2M6IFNlYW4gQnJvZ2FuIDxzZWFuLmJyb2dhbkBtaWNyb3NvZnQu Y29tPjsgQnJldA0KPiA+IEJhcmtlbGV3IDxCcmV0LkJhcmtlbGV3QG1pY3Jvc29mdC5jb20+OyBZ YW8sIEppZXdlbg0KPiA+IDxqaWV3ZW4ueWFvQGludGVsLmNvbT4NCj4gPiBTdWJqZWN0OiBSRTog W1BhdGNoIHYyIDA1LzE2XSBNZGVQa2cvTGlicmFyeS9CYXNlTGliOg0KPiA+IEFkZCBCYXNlTGli IGluc3RhbmNlIGZvciBob3N0IGJhc2VkIHVuaXQgdGVzdHMNCj4gPg0KPiA+IE1pa2U6DQo+ID4g ICBOZXcgbGlicmFyeSBpbnN0YW5jZSBsaWJyYXJ5IGNsYXNzIHNob3VsZCBiZQ0KPiA+IFVuaXRU ZXN0SG9zdEJhc2VMaWIgaW5zdGVhZCBvZiBCYXNlTGliLg0KPiA+DQo+ID4gVGhhbmtzDQo+ID4g TGltaW5nDQo+ID4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ID4gRnJvbTogS2lu bmV5LCBNaWNoYWVsIEQgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPg0KPiA+ID4gU2VudDog VGh1cnNkYXksIEp1bHkgOSwgMjAyMCAxMjowNSBQTQ0KPiA+ID4gVG86IGRldmVsQGVkazIuZ3Jv dXBzLmlvDQo+ID4gPiBDYzogR2FvLCBMaW1pbmcgPGxpbWluZy5nYW9AaW50ZWwuY29tPjsgU2Vh biBCcm9nYW4NCj4gPiA8c2Vhbi5icm9nYW5AbWljcm9zb2Z0LmNvbT47IEJyZXQgQmFya2VsZXcN Cj4gPiA8QnJldC5CYXJrZWxld0BtaWNyb3NvZnQuY29tPjsNCj4gPiA+IFlhbywgSmlld2VuIDxq aWV3ZW4ueWFvQGludGVsLmNvbT4NCj4gPiA+IFN1YmplY3Q6IFtQYXRjaCB2MiAwNS8xNl0gTWRl UGtnL0xpYnJhcnkvQmFzZUxpYjoNCj4gQWRkDQo+ID4gQmFzZUxpYiBpbnN0YW5jZSBmb3IgaG9z dCBiYXNlZCB1bml0IHRlc3RzDQo+ID4gPg0KPiA+ID4gUkVGOg0KPiA+IGh0dHBzOi8vYnVnemls bGEudGlhbm9jb3JlLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjgwMA0KPiA+ID4NCj4gPiA+IEFkZCBh IG5ldyB2ZXJzaW9uIG9mIEJhc2VMaWIgdGhhdCBpcyBzYWZlIGZvciB1c2UNCj4gZnJvbQ0KPiA+ IGhvc3QgYmFzZWQNCj4gPiA+IHVuaXQgdGVzdCBhcHBsaWNhdGlvbnMuICBIb3N0IGJhc2VkIHVu aXQgdGVzdA0KPiA+IGFwcGxpY2F0aW9ucyBtYXkgbmVlZA0KPiA+ID4gdG8gcHJvdmlkZSBpbXBs ZW1lbnRhdGlvbnMgb2Ygc29tZSBCYXNlTGliIGZ1bmN0aW9ucw0KPiA+IHRoYXQgcHJvdmlkZQ0K PiA+ID4gc2ltcGxlIGVtdWxhdGlvbiB0byBleGVyY2lzZSB0aGUgY29kZSB1bmRlciB0ZXN0Lg0K PiBUaGUNCj4gPiBzdHJ1Y3R1cmUNCj4gPiA+IFVOSVRfVEVTVF9IT1NUX0JBU0VfTElCIGlzIGZp bGxlZCBpbiB3aXRoIHNlcnZpY2VzDQo+ID4gdGhhdCBwcm92aWRlDQo+ID4gPiBkZWZhdWx0IGVt dWxhdGlvbiBmb3IgQmFzZUxpYiBBUElzIHRoYXQgd291bGQNCj4gbm9ybWFsbHkNCj4gPiBnZW5l cmF0ZQ0KPiA+ID4gZXhjZXB0aW9ucyBpbiBhIGhvc3QgYmFzZWQgdW5pdCB0ZXN0IGFwcGxpY2F0 aW9uLg0KPiA+IFRoaXMgc3RydWN0dXJlDQo+ID4gPiBhbGxvd3MgYW4gaW5kaXZpZHVhbCB1bml0 IHRlc3QgdG8gcmVwbGFjZSB0aGUNCj4gZGVmYXVsdA0KPiA+IGVtdWxhdGlvbiBvZg0KPiA+ID4g YSBCYXNlTGliIHNlcnZpY2Ugd2l0aCBhbiBhbHRlcm5hdGUgdmVyc2lvbiB0aGF0IGlzDQo+ID4g cmVxdWlyZWQgYnkgYQ0KPiA+ID4gc3BlY2lmaWMgdW5pdCB0ZXN0Lg0KPiA+ID4NCj4gPiA+IE5v cm1hbGx5IGNtb2NrYSB3b3VsZCBiZSB1c2VkIHRvIG1vY2sgc2VydmljZXMgdGhlDQo+ID4gY29k ZSB1bmRlcg0KPiA+ID4gdGVzdCBjYWxscy4gIEhvd2V2ZXIsIHRoZSBCYXNlTGliIGlzIHVzZWQg YnkgdGhlDQo+IFVuaXQNCj4gPiBUZXN0DQo+ID4gPiBGcmFtZXdvcmsgaXRzZWxmLCBzbyB1c2lu ZyBhIG1vY2tlZCBpbnRlcmZhY2UgaXMgbm90DQo+ID4gcG9zc2libGUuDQo+ID4gPiBUaGUgdXNl IG9mIGEgc3RydWN0dXJlIHRvIHByb3ZpZGUgaG9va3MgZm9yIHVuaXQNCj4gdGVzdA0KPiA+IGlz IG5vdA0KPiA+ID4gZXhwZWN0ZWQgdG8gYmUgYSBjb21tb24gZmVhdHVyZS4gIEl0IHNob3VsZCBv bmx5IGJlDQo+ID4gcmVxdWlyZWQNCj4gPiA+IGZvciBsaWJyYXJpZXMgdGhhdCBhcmUgdXNlZCBi eSBib3RoIHRoZSBVbml0IFRlc3QNCj4gPiBGcmFtZXdvcmsgYW5kDQo+ID4gPiB0aGUgY29kZSB1 bmRlciB0ZXN0IHdoZXJlIHRoZSBjb2RlIHVuZGVyIHRlc3QNCj4gcmVxdWlyZXMNCj4gPiBhDQo+ ID4gPiBkaWZmZXJlbnQgYmVoYXZpb3IgdGhhbiB0aGUgVW5pdCBUZXN0IEZyYW1ld29yay4NCj4g PiA+DQo+ID4gPiBDYzogTGltaW5nIEdhbyA8bGltaW5nLmdhb0BpbnRlbC5jb20+DQo+ID4gPiBD YzogU2VhbiBCcm9nYW4gPHNlYW4uYnJvZ2FuQG1pY3Jvc29mdC5jb20+DQo+ID4gPiBDYzogQnJl dCBCYXJrZWxldyA8QnJldC5CYXJrZWxld0BtaWNyb3NvZnQuY29tPg0KPiA+ID4gQ2M6IEppZXdl biBZYW8gPGppZXdlbi55YW9AaW50ZWwuY29tPg0KPiA+ID4gU2lnbmVkLW9mZi1ieTogTWljaGFl bCBEIEtpbm5leQ0KPiA+IDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4NCj4gPiA+IC0tLQ0K PiA+ID4gIE1kZVBrZy9MaWJyYXJ5L0Jhc2VMaWIvVW5pdFRlc3RIb3N0LmMgICAgICAgICB8DQo+ IDE0MA0KPiA+ICsNCj4gPiA+ICBNZGVQa2cvTGlicmFyeS9CYXNlTGliL1VuaXRUZXN0SG9zdC5o ICAgICAgICAgfA0KPiA2Ng0KPiA+ICsNCj4gPiA+ICAuLi4vTGlicmFyeS9CYXNlTGliL1VuaXRU ZXN0SG9zdEJhc2VMaWIuaW5mICAgfA0KPiAyMTYNCj4gPiArKw0KPiA+ID4gIC4uLi9MaWJyYXJ5 L0Jhc2VMaWIvVW5pdFRlc3RIb3N0QmFzZUxpYi51bmkgICB8DQo+IDExDQo+ID4gKw0KPiA+ID4g IE1kZVBrZy9MaWJyYXJ5L0Jhc2VMaWIvWDg2VW5pdFRlc3RIb3N0LmMgICAgICB8DQo+IDI5NzcN Cj4gPiArKysrKysrKysrKysrKysrKw0KPiA+ID4gIE1kZVBrZy9NZGVQa2cuZGVjICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8DQo+IDMNCj4gPiArLQ0KPiA+ID4gIE1kZVBrZy9UZXN0L01k ZVBrZ0hvc3RUZXN0LmRzYyAgICAgICAgICAgICAgICB8DQo+IDUNCj4gPiArDQo+ID4gPiAgLi4u L0luY2x1ZGUvSG9zdFRlc3QvVW5pdFRlc3RIb3N0QmFzZUxpYi5oICAgIHwNCj4gNTgyDQo+ID4g KysrKw0KPiA+ID4gIDggZmlsZXMgY2hhbmdlZCwgMzk5OSBpbnNlcnRpb25zKCspLCAxIGRlbGV0 aW9uKC0pDQo+ID4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+ID4gTWRlUGtnL0xpYnJhcnkvQmFz ZUxpYi9Vbml0VGVzdEhvc3QuYw0KPiA+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiA+IE1kZVBr Zy9MaWJyYXJ5L0Jhc2VMaWIvVW5pdFRlc3RIb3N0LmgNCj4gPiA+ICBjcmVhdGUgbW9kZSAxMDA2 NDQNCj4gPiBNZGVQa2cvTGlicmFyeS9CYXNlTGliL1VuaXRUZXN0SG9zdEJhc2VMaWIuaW5mDQo+ ID4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+ID4gTWRlUGtnL0xpYnJhcnkvQmFzZUxpYi9Vbml0 VGVzdEhvc3RCYXNlTGliLnVuaQ0KPiA+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiA+IE1kZVBr Zy9MaWJyYXJ5L0Jhc2VMaWIvWDg2VW5pdFRlc3RIb3N0LmMNCj4gPiA+ICBjcmVhdGUgbW9kZSAx MDA2NDQNCj4gPg0KPiBNZGVQa2cvVGVzdC9Vbml0VGVzdC9JbmNsdWRlL0hvc3RUZXN0L1VuaXRU ZXN0SG9zdEJhc2VMaQ0KPiA+IGIuaA0KPiA+ID4NCj4gPiA+IGRpZmYgLS1naXQgYS9NZGVQa2cv TGlicmFyeS9CYXNlTGliL1VuaXRUZXN0SG9zdC5jDQo+ID4gYi9NZGVQa2cvTGlicmFyeS9CYXNl TGliL1VuaXRUZXN0SG9zdC5jDQo+ID4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+ID4gaW5k ZXggMDAwMDAwMDAwMC4uNzllZWM3Y2FjYQ0KPiA+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ID4gKysr IGIvTWRlUGtnL0xpYnJhcnkvQmFzZUxpYi9Vbml0VGVzdEhvc3QuYw0KPiA+ID4gQEAgLTAsMCAr MSwxNDAgQEANCj4gPiA+ICsvKiogQGZpbGUNCj4gPiA+ICsgIENvbW1vbiBVbml0IFRlc3QgSG9z dCBmdW5jdGlvbnMuDQo+ID4gPiArDQo+ID4gPiArICBDb3B5cmlnaHQgKGMpIDIwMjAsIEludGVs IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzDQo+ID4gcmVzZXJ2ZWQuPEJSPg0KPiA+ID4gKyAgU1BE WC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gPiA+ICsNCj4gPiA+ ICsqKi8NCj4gPiA+ICsNCj4gPiA+ICsjaW5jbHVkZSAiVW5pdFRlc3RIb3N0LmgiDQo+ID4gPiAr DQo+ID4gPiArLy8vDQo+ID4gPiArLy8vIE1vZHVsZSBnbG9iYWwgdmFyaWFibGUgZm9yIHNpbXBs ZSBzeXN0ZW0NCj4gPiBlbXVsYXRpb24gb2YgaW50ZXJydXB0IHN0YXRlDQo+ID4gPiArLy8vDQo+ ID4gPiArU1RBVElDIEJPT0xFQU4NCj4gPiBtVW5pdFRlc3RIb3N0QmFzZUxpYkludGVycnVwdFN0 YXRlOw0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgRW5hYmxlcyBDUFUgaW50ZXJydXB0 cy4NCj4gPiA+ICsNCj4gPiA+ICsqKi8NCj4gPiA+ICtWT0lEDQo+ID4gPiArRUZJQVBJDQo+ID4g PiArVW5pdFRlc3RIb3N0QmFzZUxpYkVuYWJsZUludGVycnVwdHMgKA0KPiA+ID4gKyAgVk9JRA0K PiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIG1Vbml0VGVzdEhvc3RCYXNlTGliSW50ZXJy dXB0U3RhdGUgPSBUUlVFOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsg IERpc2FibGVzIENQVSBpbnRlcnJ1cHRzLg0KPiA+ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4gK1ZP SUQNCj4gPiA+ICtFRklBUEkNCj4gPiA+ICtVbml0VGVzdEhvc3RCYXNlTGliRGlzYWJsZUludGVy cnVwdHMgKA0KPiA+ID4gKyAgVk9JRA0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIG1V bml0VGVzdEhvc3RCYXNlTGliSW50ZXJydXB0U3RhdGUgPSBGQUxTRTsNCj4gPiA+ICt9DQo+ID4g PiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBFbmFibGVzIENQVSBpbnRlcnJ1cHRzIGZvciB0aGUg c21hbGxlc3Qgd2luZG93DQo+ID4gcmVxdWlyZWQgdG8gY2FwdHVyZSBhbnkNCj4gPiA+ICsgIHBl bmRpbmcgaW50ZXJydXB0cy4NCj4gPiA+ICsNCj4gPiA+ICsqKi8NCj4gPiA+ICtWT0lEDQo+ID4g PiArRUZJQVBJDQo+ID4gPiArVW5pdFRlc3RIb3N0QmFzZUxpYkVuYWJsZURpc2FibGVJbnRlcnJ1 cHRzICgNCj4gPiA+ICsgIFZPSUQNCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArICBtVW5p dFRlc3RIb3N0QmFzZUxpYkludGVycnVwdFN0YXRlID0gRkFMU0U7DQo+ID4gPiArfQ0KPiA+ID4g Kw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgU2V0IHRoZSBjdXJyZW50IENQVSBpbnRlcnJ1cHQgc3Rh dGUuDQo+ID4gPiArDQo+ID4gPiArICBTZXRzIHRoZSBjdXJyZW50IENQVSBpbnRlcnJ1cHQgc3Rh dGUgdG8gdGhlIHN0YXRlDQo+ID4gc3BlY2lmaWVkIGJ5DQo+ID4gPiArICBJbnRlcnJ1cHRTdGF0 ZS4gSWYgSW50ZXJydXB0U3RhdGUgaXMgVFJVRSwgdGhlbg0KPiA+IGludGVycnVwdHMgYXJlIGVu YWJsZWQuIElmDQo+ID4gPiArICBJbnRlcnJ1cHRTdGF0ZSBpcyBGQUxTRSwgdGhlbiBpbnRlcnJ1 cHRzIGFyZQ0KPiA+IGRpc2FibGVkLiBJbnRlcnJ1cHRTdGF0ZSBpcw0KPiA+ID4gKyAgcmV0dXJu ZWQuDQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW0gIEludGVycnVwdFN0YXRlICBUUlVFIGlmIGlu dGVycnVwdHMgc2hvdWxkDQo+ID4gZW5hYmxlZC4gRkFMU0UgaWYNCj4gPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgIGludGVycnVwdHMgc2hvdWxkIGJlDQo+ID4gZGlzYWJsZWQuDQo+ID4g PiArDQo+ID4gPiArICBAcmV0dXJuIEludGVycnVwdFN0YXRlDQo+ID4gPiArDQo+ID4gPiArKiov DQo+ID4gPiArQk9PTEVBTg0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4gK1VuaXRUZXN0SG9zdEJhc2VM aWJHZXRJbnRlcnJ1cHRTdGF0ZSAoDQo+ID4gPiArICBWT0lEDQo+ID4gPiArICApDQo+ID4gPiAr ew0KPiA+ID4gKyAgcmV0dXJuIG1Vbml0VGVzdEhvc3RCYXNlTGliSW50ZXJydXB0U3RhdGU7DQo+ ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgRW5hYmxlcyBDUFUgaW50ZXJy dXB0cy4NCj4gPiA+ICsNCj4gPiA+ICsqKi8NCj4gPiA+ICtWT0lEDQo+ID4gPiArRUZJQVBJDQo+ ID4gPiArRW5hYmxlSW50ZXJydXB0cyAoDQo+ID4gPiArICBWT0lEDQo+ID4gPiArICApDQo+ID4g PiArew0KPiA+ID4gKyAgZ1VuaXRUZXN0SG9zdEJhc2VMaWIuQ29tbW9uLT5FbmFibGVJbnRlcnJ1 cHRzICgpOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIERpc2FibGVz IENQVSBpbnRlcnJ1cHRzLg0KPiA+ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4gK1ZPSUQNCj4gPiA+ ICtFRklBUEkNCj4gPiA+ICtEaXNhYmxlSW50ZXJydXB0cyAoDQo+ID4gPiArICBWT0lEDQo+ID4g PiArICApDQo+ID4gPiArew0KPiA+ID4gKyAgZ1VuaXRUZXN0SG9zdEJhc2VMaWIuQ29tbW9uLT5E aXNhYmxlSW50ZXJydXB0cw0KPiAoKTsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ ID4gPiArICBFbmFibGVzIENQVSBpbnRlcnJ1cHRzIGZvciB0aGUgc21hbGxlc3Qgd2luZG93DQo+ ID4gcmVxdWlyZWQgdG8gY2FwdHVyZSBhbnkNCj4gPiA+ICsgIHBlbmRpbmcgaW50ZXJydXB0cy4N Cj4gPiA+ICsNCj4gPiA+ICsqKi8NCj4gPiA+ICtWT0lEDQo+ID4gPiArRUZJQVBJDQo+ID4gPiAr RW5hYmxlRGlzYWJsZUludGVycnVwdHMgKA0KPiA+ID4gKyAgVk9JRA0KPiA+ID4gKyAgKQ0KPiA+ ID4gK3sNCj4gPiA+ICsgIGdVbml0VGVzdEhvc3RCYXNlTGliLkNvbW1vbi0NCj4gPiA+RW5hYmxl RGlzYWJsZUludGVycnVwdHMgKCk7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ ID4gKyAgU2V0IHRoZSBjdXJyZW50IENQVSBpbnRlcnJ1cHQgc3RhdGUuDQo+ID4gPiArDQo+ID4g PiArICBTZXRzIHRoZSBjdXJyZW50IENQVSBpbnRlcnJ1cHQgc3RhdGUgdG8gdGhlIHN0YXRlDQo+ ID4gc3BlY2lmaWVkIGJ5DQo+ID4gPiArICBJbnRlcnJ1cHRTdGF0ZS4gSWYgSW50ZXJydXB0U3Rh dGUgaXMgVFJVRSwgdGhlbg0KPiA+IGludGVycnVwdHMgYXJlIGVuYWJsZWQuIElmDQo+ID4gPiAr ICBJbnRlcnJ1cHRTdGF0ZSBpcyBGQUxTRSwgdGhlbiBpbnRlcnJ1cHRzIGFyZQ0KPiA+IGRpc2Fi bGVkLiBJbnRlcnJ1cHRTdGF0ZSBpcw0KPiA+ID4gKyAgcmV0dXJuZWQuDQo+ID4gPiArDQo+ID4g PiArICBAcGFyYW0gIEludGVycnVwdFN0YXRlICBUUlVFIGlmIGludGVycnVwdHMgc2hvdWxkDQo+ ID4gZW5hYmxlZC4gRkFMU0UgaWYNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIGlu dGVycnVwdHMgc2hvdWxkIGJlDQo+ID4gZGlzYWJsZWQuDQo+ID4gPiArDQo+ID4gPiArICBAcmV0 dXJuIEludGVycnVwdFN0YXRlDQo+ID4gPiArDQo+ID4gPiArKiovDQo+ID4gPiArQk9PTEVBTg0K PiA+ID4gK0VGSUFQSQ0KPiA+ID4gK0dldEludGVycnVwdFN0YXRlICgNCj4gPiA+ICsgIFZPSUQN Cj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArICByZXR1cm4gZ1VuaXRUZXN0SG9zdEJhc2VM aWIuQ29tbW9uLQ0KPiA+ID5HZXRJbnRlcnJ1cHRTdGF0ZSAoKTsNCj4gPiA+ICt9DQo+ID4gPiBk aWZmIC0tZ2l0IGEvTWRlUGtnL0xpYnJhcnkvQmFzZUxpYi9Vbml0VGVzdEhvc3QuaA0KPiA+IGIv TWRlUGtnL0xpYnJhcnkvQmFzZUxpYi9Vbml0VGVzdEhvc3QuaA0KPiA+ID4gbmV3IGZpbGUgbW9k ZSAxMDA2NDQNCj4gPiA+IGluZGV4IDAwMDAwMDAwMDAuLjZhNTFmYjQ2OGMNCj4gPiA+IC0tLSAv ZGV2L251bGwNCj4gPiA+ICsrKyBiL01kZVBrZy9MaWJyYXJ5L0Jhc2VMaWIvVW5pdFRlc3RIb3N0 LmgNCj4gPiA+IEBAIC0wLDAgKzEsNjYgQEANCj4gPiA+ICsvKiogQGZpbGUNCj4gPiA+ICsgIFVu aXQgVGVzdCBIb3N0IGZ1bmN0aW9ucy4NCj4gPiA+ICsNCj4gPiA+ICsgIENvcHlyaWdodCAoYykg MjAyMCwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMNCj4gPiByZXNlcnZlZC48QlI+DQo+ ID4gPiArICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiA+ ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4gKw0KPiA+ID4gKyNpZm5kZWYgX19VTklUX1RFU1RfSE9T VF9IX18NCj4gPiA+ICsjZGVmaW5lIF9fVU5JVF9URVNUX0hPU1RfSF9fDQo+ID4gPiArDQo+ID4g PiArI2luY2x1ZGUgIkJhc2VMaWJJbnRlcm5hbHMuaCINCj4gPiA+ICsjaW5jbHVkZSA8SG9zdFRl c3QvVW5pdFRlc3RIb3N0QmFzZUxpYi5oPg0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAg RW5hYmxlcyBDUFUgaW50ZXJydXB0cy4NCj4gPiA+ICsNCj4gPiA+ICsqKi8NCj4gPiA+ICtWT0lE DQo+ID4gPiArRUZJQVBJDQo+ID4gPiArVW5pdFRlc3RIb3N0QmFzZUxpYkVuYWJsZUludGVycnVw dHMgKA0KPiA+ID4gKyAgVk9JRA0KPiA+ID4gKyAgKTsNCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4g PiA+ICsgIERpc2FibGVzIENQVSBpbnRlcnJ1cHRzLg0KPiA+ID4gKw0KPiA+ID4gKyoqLw0KPiA+ ID4gK1ZPSUQNCj4gPiA+ICtFRklBUEkNCj4gPiA+ICtVbml0VGVzdEhvc3RCYXNlTGliRGlzYWJs ZUludGVycnVwdHMgKA0KPiA+ID4gKyAgVk9JRA0KPiA+ID4gKyAgKTsNCj4gPiA+ICsNCj4gPiA+ ICsvKioNCj4gPiA+ICsgIEVuYWJsZXMgQ1BVIGludGVycnVwdHMgZm9yIHRoZSBzbWFsbGVzdCB3 aW5kb3cNCj4gPiByZXF1aXJlZCB0byBjYXB0dXJlIGFueQ0KPiA+ID4gKyAgcGVuZGluZyBpbnRl cnJ1cHRzLg0KPiA+ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4gK1ZPSUQNCj4gPiA+ICtFRklBUEkN Cj4gPiA+ICtVbml0VGVzdEhvc3RCYXNlTGliRW5hYmxlRGlzYWJsZUludGVycnVwdHMgKA0KPiA+ ID4gKyAgVk9JRA0KPiA+ID4gKyAgKTsNCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIFNl dCB0aGUgY3VycmVudCBDUFUgaW50ZXJydXB0IHN0YXRlLg0KPiA+ID4gKw0KPiA+ID4gKyAgU2V0 cyB0aGUgY3VycmVudCBDUFUgaW50ZXJydXB0IHN0YXRlIHRvIHRoZSBzdGF0ZQ0KPiA+IHNwZWNp ZmllZCBieQ0KPiA+ID4gKyAgSW50ZXJydXB0U3RhdGUuIElmIEludGVycnVwdFN0YXRlIGlzIFRS VUUsIHRoZW4NCj4gPiBpbnRlcnJ1cHRzIGFyZSBlbmFibGVkLiBJZg0KPiA+ID4gKyAgSW50ZXJy dXB0U3RhdGUgaXMgRkFMU0UsIHRoZW4gaW50ZXJydXB0cyBhcmUNCj4gPiBkaXNhYmxlZC4gSW50 ZXJydXB0U3RhdGUgaXMNCj4gPiA+ICsgIHJldHVybmVkLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBh cmFtICBJbnRlcnJ1cHRTdGF0ZSAgVFJVRSBpZiBpbnRlcnJ1cHRzIHNob3VsZA0KPiA+IGVuYWJs ZWQuIEZBTFNFIGlmDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcnJ1cHRz IHNob3VsZCBiZQ0KPiA+IGRpc2FibGVkLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHVybiBJbnRl cnJ1cHRTdGF0ZQ0KPiA+ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4gK0JPT0xFQU4NCj4gPiA+ICtF RklBUEkNCj4gPiA+ICtVbml0VGVzdEhvc3RCYXNlTGliR2V0SW50ZXJydXB0U3RhdGUgKA0KPiA+ ID4gKyAgVk9JRA0KPiA+ID4gKyAgKTsNCj4gPiA+ICsNCj4gPiA+ICsjZW5kaWYNCj4gPiA+IGRp ZmYgLS1naXQNCj4gPiBhL01kZVBrZy9MaWJyYXJ5L0Jhc2VMaWIvVW5pdFRlc3RIb3N0QmFzZUxp Yi5pbmYNCj4gPiBiL01kZVBrZy9MaWJyYXJ5L0Jhc2VMaWIvVW5pdFRlc3RIb3N0QmFzZUxpYi5p bmYNCj4gPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gPiBpbmRleCAwMDAwMDAwMDAwLi5m OTVkYWE1ZTMzDQo+ID4gPiAtLS0gL2Rldi9udWxsDQo+ID4gPiArKysgYi9NZGVQa2cvTGlicmFy eS9CYXNlTGliL1VuaXRUZXN0SG9zdEJhc2VMaWIuaW5mDQo+ID4gPiBAQCAtMCwwICsxLDIxNiBA QA0KPiA+ID4gKyMjIEBmaWxlDQo+ID4gPiArIyAgQmFzZSBMaWJyYXJ5IGltcGxlbWVudGF0aW9u IGZvciB1c2Ugd2l0aCBob3N0DQo+ID4gYmFzZWQgdW5pdCB0ZXN0cy4NCj4gPiA+ICsjDQo+ID4g PiArIyAgQ29weXJpZ2h0IChjKSAyMDA3IC0gMjAyMCwgSW50ZWwgQ29ycG9yYXRpb24uDQo+IEFs bA0KPiA+IHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4gPiArIyAgUG9ydGlvbnMgY29weXJpZ2h0 IChjKSAyMDA4IC0gMjAwOSwgQXBwbGUgSW5jLg0KPiBBbGwNCj4gPiByaWdodHMgcmVzZXJ2ZWQu PEJSPg0KPiA+ID4gKyMgIFBvcnRpb25zIGNvcHlyaWdodCAoYykgMjAxMSAtIDIwMTMsIEFSTSBM dGQuIEFsbA0KPiA+IHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4gPiArIyAgQ29weXJpZ2h0IChj KSAyMDIwLCBIZXdsZXR0IFBhY2thcmQgRW50ZXJwcmlzZQ0KPiA+IERldmVsb3BtZW50IExQLiBB bGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiA+ICsjDQo+ID4gPiArIyAgU1BEWC1MaWNlbnNl LUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gPiA+ICsjDQo+ID4gPiArIw0KPiA+ ID4gKyMjDQo+ID4gPiArDQo+ID4gPiArW0RlZmluZXNdDQo+ID4gPiArICBJTkZfVkVSU0lPTiAg ICAgICAgICAgICAgICAgICAgPSAweDAwMDEwMDA1DQo+ID4gPiArICBCQVNFX05BTUUgICAgICAg ICAgICAgICAgICAgICAgPQ0KPiA+IFVuaXRUZXN0SG9zdEJhc2VMaWINCj4gPiA+ICsgIE1PRFVM RV9VTklfRklMRSAgICAgICAgICAgICAgICA9DQo+ID4gVW5pdFRlc3RIb3N0QmFzZUxpYi51bmkN Cj4gPiA+ICsgIEZJTEVfR1VJRCAgICAgICAgICAgICAgICAgICAgICA9IDk1NTVBMEQzLTA5QkEt DQo+ID4gNDZDNC1BNTFBLTQ1MTk4RTNDNzY1RQ0KPiA+ID4gKyAgTU9EVUxFX1RZUEUgICAgICAg ICAgICAgICAgICAgID0gQkFTRQ0KPiA+ID4gKyAgVkVSU0lPTl9TVFJJTkcgICAgICAgICAgICAg ICAgID0gMS4xDQo+ID4gPiArICBMSUJSQVJZX0NMQVNTICAgICAgICAgICAgICAgICAgPQ0KPiA+ IEJhc2VMaWJ8SE9TVF9BUFBMSUNBVElPTg0KPiA+ID4gKw0KPiA+ID4gKyMNCj4gPiA+ICsjICBW QUxJRF9BUkNISVRFQ1RVUkVTICAgICAgICAgICA9IElBMzIgWDY0IEVCQyBBUk0NCj4gPiBBQVJD SDY0IFJJU0NWNjQNCj4gPiA+ICsjDQo+ID4gPiArDQo+ID4gPiArW1NvdXJjZXNdDQo+ID4gPiAr ICBDaGVja1N1bS5jDQo+ID4gPiArICBTd2l0Y2hTdGFjay5jDQo+ID4gPiArICBTd2FwQnl0ZXM2 NC5jDQo+ID4gPiArICBTd2FwQnl0ZXMzMi5jDQo+ID4gPiArICBTd2FwQnl0ZXMxNi5jDQo+ID4g PiArICBMb25nSnVtcC5jDQo+ID4gPiArICBTZXRKdW1wLmMNCj4gPiA+ICsgIFJTaGlmdFU2NC5j DQo+ID4gPiArICBSUm90VTY0LmMNCj4gPiA+ICsgIFJSb3RVMzIuYw0KPiA+ID4gKyAgTXVsdFU2 NHg2NC5jDQo+ID4gPiArICBNdWx0VTY0eDMyLmMNCj4gPiA+ICsgIE11bHRTNjR4NjQuYw0KPiA+ ID4gKyAgTW9kVTY0eDMyLmMNCj4gPiA+ICsgIExTaGlmdFU2NC5jDQo+ID4gPiArICBMUm90VTY0 LmMNCj4gPiA+ICsgIExSb3RVMzIuYw0KPiA+ID4gKyAgTG93Qml0U2V0NjQuYw0KPiA+ID4gKyAg TG93Qml0U2V0MzIuYw0KPiA+ID4gKyAgSGlnaEJpdFNldDY0LmMNCj4gPiA+ICsgIEhpZ2hCaXRT ZXQzMi5jDQo+ID4gPiArICBHZXRQb3dlck9mVHdvNjQuYw0KPiA+ID4gKyAgR2V0UG93ZXJPZlR3 bzMyLmMNCj4gPiA+ICsgIERpdlU2NHg2NFJlbWFpbmRlci5jDQo+ID4gPiArICBEaXZVNjR4MzJS ZW1haW5kZXIuYw0KPiA+ID4gKyAgRGl2VTY0eDMyLmMNCj4gPiA+ICsgIERpdlM2NHg2NFJlbWFp bmRlci5jDQo+ID4gPiArICBBUlNoaWZ0VTY0LmMNCj4gPiA+ICsgIEJpdEZpZWxkLmMNCj4gPiA+ ICsgIENwdURlYWRMb29wLmMNCj4gPiA+ICsgIENwdS5jDQo+ID4gPiArICBMaW5rZWRMaXN0LmMN Cj4gPiA+ICsgIFNhZmVTdHJpbmcuYw0KPiA+ID4gKyAgU3RyaW5nLmMNCj4gPiA+ICsgIEZpbGVQ YXRocy5jDQo+ID4gPiArICBCYXNlTGliSW50ZXJuYWxzLmgNCj4gPiA+ICsgIFVuaXRUZXN0SG9z dC5jDQo+ID4gPiArICBVbml0VGVzdEhvc3QuaA0KPiA+ID4gKw0KPiA+ID4gK1tTb3VyY2VzLklh MzJdDQo+ID4gPiArICBJYTMyL1N3YXBCeXRlczY0LmMgfCBNU0ZUDQo+ID4gPiArICBJYTMyL1JS b3RVNjQuYyB8IE1TRlQNCj4gPiA+ICsgIElhMzIvUlNoaWZ0VTY0LmMgfCBNU0ZUDQo+ID4gPiAr ICBJYTMyL1JlYWRUc2MuYyB8IE1TRlQNCj4gPiA+ICsgIElhMzIvUmVhZEVmbGFncy5jIHwgTVNG VA0KPiA+ID4gKyAgSWEzMi9Nb2RVNjR4MzIuYyB8IE1TRlQNCj4gPiA+ICsgIElhMzIvTXVsdFU2 NHg2NC5jIHwgTVNGVA0KPiA+ID4gKyAgSWEzMi9NdWx0VTY0eDMyLmMgfCBNU0ZUDQo+ID4gPiAr ICBJYTMyL0xTaGlmdFU2NC5jIHwgTVNGVA0KPiA+ID4gKyAgSWEzMi9MUm90VTY0LmMgfCBNU0ZU DQo+ID4gPiArICBJYTMyL0Z4UmVzdG9yZS5jIHwgTVNGVA0KPiA+ID4gKyAgSWEzMi9GeFNhdmUu YyB8IE1TRlQNCj4gPiA+ICsgIElhMzIvRGl2VTY0eDMyUmVtYWluZGVyLmMgfCBNU0ZUDQo+ID4g PiArICBJYTMyL0RpdlU2NHgzMi5jIHwgTVNGVA0KPiA+ID4gKyAgSWEzMi9DcHVQYXVzZS5jIHwg TVNGVA0KPiA+ID4gKyAgSWEzMi9DcHVCcmVha3BvaW50LmMgfCBNU0ZUDQo+ID4gPiArICBJYTMy L0FSU2hpZnRVNjQuYyB8IE1TRlQNCj4gPiA+ICsgIElhMzIvR2NjSW5saW5lLmMgfCBHQ0MNCj4g PiA+ICsgIElhMzIvTG9uZ0p1bXAubmFzbQ0KPiA+ID4gKyAgSWEzMi9TZXRKdW1wLm5hc20NCj4g PiA+ICsgIElhMzIvU3dhcEJ5dGVzNjQubmFzbXwgR0NDDQo+ID4gPiArICBJYTMyL0RpdlU2NHg2 NFJlbWFpbmRlci5uYXNtDQo+ID4gPiArICBJYTMyL0RpdlU2NHgzMlJlbWFpbmRlci5uYXNtfCBH Q0MNCj4gPiA+ICsgIElhMzIvTW9kVTY0eDMyLm5hc218IEdDQw0KPiA+ID4gKyAgSWEzMi9EaXZV NjR4MzIubmFzbXwgR0NDDQo+ID4gPiArICBJYTMyL011bHRVNjR4NjQubmFzbXwgR0NDDQo+ID4g PiArICBJYTMyL011bHRVNjR4MzIubmFzbXwgR0NDDQo+ID4gPiArICBJYTMyL1JSb3RVNjQubmFz bXwgR0NDDQo+ID4gPiArICBJYTMyL0xSb3RVNjQubmFzbXwgR0NDDQo+ID4gPiArICBJYTMyL0FS U2hpZnRVNjQubmFzbXwgR0NDDQo+ID4gPiArICBJYTMyL1JTaGlmdFU2NC5uYXNtfCBHQ0MNCj4g PiA+ICsgIElhMzIvTFNoaWZ0VTY0Lm5hc218IEdDQw0KPiA+ID4gKyAgSWEzMi9SZFJhbmQubmFz bQ0KPiA+ID4gKyAgSWEzMi9EaXZTNjR4NjRSZW1haW5kZXIuYw0KPiA+ID4gKyAgSWEzMi9JbnRl cm5hbFN3aXRjaFN0YWNrLmMgfCBNU0ZUDQo+ID4gPiArICBJYTMyL0ludGVybmFsU3dpdGNoU3Rh Y2submFzbSB8IEdDQw0KPiA+ID4gKyAgSWEzMi9Ob24tZXhpc3RpbmcuYw0KPiA+ID4gKyAgVW5h bGlnbmVkLmMNCj4gPiA+ICsgIFg4NkZ4U2F2ZS5jDQo+ID4gPiArICBYODZGeFJlc3RvcmUuYw0K PiA+ID4gKyAgWDg2TXNyLmMNCj4gPiA+ICsgIFg4NlJkUmFuZC5jDQo+ID4gPiArICBYODZTcGVj dWxhdGlvbkJhcnJpZXIuYw0KPiA+ID4gKyAgWDg2VW5pdFRlc3RIb3N0LmMNCj4gPiA+ICsNCj4g PiA+ICtbU291cmNlcy5YNjRdDQo+ID4gPiArICBYNjQvTG9uZ0p1bXAubmFzbQ0KPiA+ID4gKyAg WDY0L1NldEp1bXAubmFzbQ0KPiA+ID4gKyAgWDY0L1N3aXRjaFN0YWNrLm5hc20NCj4gPiA+ICsg IFg2NC9DcHVCcmVha3BvaW50LmMgfCBNU0ZUDQo+ID4gPiArICBYNjQvQ3B1UGF1c2UubmFzbXwg TVNGVA0KPiA+ID4gKyAgWDY0L1JlYWRUc2MubmFzbXwgTVNGVA0KPiA+ID4gKyAgWDY0L0Z4UmVz dG9yZS5uYXNtfCBNU0ZUDQo+ID4gPiArICBYNjQvRnhTYXZlLm5hc218IE1TRlQNCj4gPiA+ICsg IFg2NC9SZWFkRWZsYWdzLm5hc218IE1TRlQNCj4gPiA+ICsgIFg2NC9Ob24tZXhpc3RpbmcuYw0K PiA+ID4gKyAgTWF0aDY0LmMNCj4gPiA+ICsgIFVuYWxpZ25lZC5jDQo+ID4gPiArICBYODZGeFNh dmUuYw0KPiA+ID4gKyAgWDg2RnhSZXN0b3JlLmMNCj4gPiA+ICsgIFg4Nk1zci5jDQo+ID4gPiAr ICBYODZSZFJhbmQuYw0KPiA+ID4gKyAgWDg2U3BlY3VsYXRpb25CYXJyaWVyLmMNCj4gPiA+ICsg IFg2NC9HY2NJbmxpbmUuYyB8IEdDQw0KPiA+ID4gKyAgWDY0L1JkUmFuZC5uYXNtDQo+ID4gPiAr ICBDaGtTdGtHY2MuYyAgfCBHQ0MNCj4gPiA+ICsgIFg4NlVuaXRUZXN0SG9zdC5jDQo+ID4gPiAr DQo+ID4gPiArW1NvdXJjZXMuRUJDXQ0KPiA+ID4gKyAgRWJjL0NwdUJyZWFrcG9pbnQuYw0KPiA+ ID4gKyAgRWJjL1NldEp1bXBMb25nSnVtcC5jDQo+ID4gPiArICBFYmMvU3dpdGNoU3RhY2suYw0K PiA+ID4gKyAgRWJjL1NwZWN1bGF0aW9uQmFycmllci5jDQo+ID4gPiArICBVbmFsaWduZWQuYw0K PiA+ID4gKyAgTWF0aDY0LmMNCj4gPiA+ICsNCj4gPiA+ICtbU291cmNlcy5BUk1dDQo+ID4gPiAr ICBBcm0vSW50ZXJuYWxTd2l0Y2hTdGFjay5jDQo+ID4gPiArICBBcm0vVW5hbGlnbmVkLmMNCj4g PiA+ICsgIE1hdGg2NC5jICAgICAgICAgICAgICAgICAgIHwgUlZDVA0KPiA+ID4gKyAgTWF0aDY0 LmMgICAgICAgICAgICAgICAgICAgfCBNU0ZUDQo+ID4gPiArDQo+ID4gPiArICBBcm0vU3dpdGNo U3RhY2suYXNtICAgICAgICB8IFJWQ1QNCj4gPiA+ICsgIEFybS9TZXRKdW1wTG9uZ0p1bXAuYXNt ICAgIHwgUlZDVA0KPiA+ID4gKyAgQXJtL0NwdVBhdXNlLmFzbSAgICAgICAgICAgfCBSVkNUDQo+ ID4gPiArICBBcm0vQ3B1QnJlYWtwb2ludC5hc20gICAgICB8IFJWQ1QNCj4gPiA+ICsgIEFybS9N ZW1vcnlGZW5jZS5hc20gICAgICAgIHwgUlZDVA0KPiA+ID4gKyAgQXJtL1NwZWN1bGF0aW9uQmFy cmllci5TICAgfCBSVkNUDQo+ID4gPiArDQo+ID4gPiArICBBcm0vU3dpdGNoU3RhY2suYXNtICAg ICAgICB8IE1TRlQNCj4gPiA+ICsgIEFybS9TZXRKdW1wTG9uZ0p1bXAuYXNtICAgIHwgTVNGVA0K PiA+ID4gKyAgQXJtL0NwdVBhdXNlLmFzbSAgICAgICAgICAgfCBNU0ZUDQo+ID4gPiArICBBcm0v Q3B1QnJlYWtwb2ludC5hc20gICAgICB8IE1TRlQNCj4gPiA+ICsgIEFybS9NZW1vcnlGZW5jZS5h c20gICAgICAgIHwgTVNGVA0KPiA+ID4gKyAgQXJtL1NwZWN1bGF0aW9uQmFycmllci5hc20gfCBN U0ZUDQo+ID4gPiArDQo+ID4gPiArICBBcm0vTWF0aDY0LlMgICAgICAgICAgICAgICAgICB8IEdD Qw0KPiA+ID4gKyAgQXJtL1N3aXRjaFN0YWNrLlMgICAgICAgICAgICAgfCBHQ0MNCj4gPiA+ICsg IEFybS9TZXRKdW1wTG9uZ0p1bXAuUyAgICAgICAgIHwgR0NDDQo+ID4gPiArICBBcm0vQ3B1QnJl YWtwb2ludC5TICAgICAgICAgICB8IEdDQw0KPiA+ID4gKyAgQXJtL01lbW9yeUZlbmNlLlMgICAg ICAgICAgICAgfCBHQ0MNCj4gPiA+ICsgIEFybS9TcGVjdWxhdGlvbkJhcnJpZXIuUyAgICAgIHwg R0NDDQo+ID4gPiArDQo+ID4gPiArW1NvdXJjZXMuQUFSQ0g2NF0NCj4gPiA+ICsgIEFybS9JbnRl cm5hbFN3aXRjaFN0YWNrLmMNCj4gPiA+ICsgIEFybS9VbmFsaWduZWQuYw0KPiA+ID4gKyAgTWF0 aDY0LmMNCj4gPiA+ICsNCj4gPiA+ICsgIEFBcmNoNjQvTWVtb3J5RmVuY2UuUyAgICAgICAgICAg ICB8IEdDQw0KPiA+ID4gKyAgQUFyY2g2NC9Td2l0Y2hTdGFjay5TICAgICAgICAgICAgIHwgR0ND DQo+ID4gPiArICBBQXJjaDY0L1NldEp1bXBMb25nSnVtcC5TICAgICAgICAgfCBHQ0MNCj4gPiA+ ICsgIEFBcmNoNjQvQ3B1QnJlYWtwb2ludC5TICAgICAgICAgICB8IEdDQw0KPiA+ID4gKyAgQUFy Y2g2NC9TcGVjdWxhdGlvbkJhcnJpZXIuUyAgICAgIHwgR0NDDQo+ID4gPiArDQo+ID4gPiArICBB QXJjaDY0L01lbW9yeUZlbmNlLmFzbSAgICAgICAgICAgfCBNU0ZUDQo+ID4gPiArICBBQXJjaDY0 L1N3aXRjaFN0YWNrLmFzbSAgICAgICAgICAgfCBNU0ZUDQo+ID4gPiArICBBQXJjaDY0L1NldEp1 bXBMb25nSnVtcC5hc20gICAgICAgfCBNU0ZUDQo+ID4gPiArICBBQXJjaDY0L0NwdUJyZWFrcG9p bnQuYXNtICAgICAgICAgfCBNU0ZUDQo+ID4gPiArICBBQXJjaDY0L1NwZWN1bGF0aW9uQmFycmll ci5hc20gICAgfCBNU0ZUDQo+ID4gPiArDQo+ID4gPiArW1NvdXJjZXMuUklTQ1Y2NF0NCj4gPiA+ ICsgIE1hdGg2NC5jDQo+ID4gPiArICBVbmFsaWduZWQuYw0KPiA+ID4gKyAgUmlzY1Y2NC9JbnRl cm5hbFN3aXRjaFN0YWNrLmMNCj4gPiA+ICsgIFJpc2NWNjQvQ3B1QnJlYWtwb2ludC5jDQo+ID4g PiArICBSaXNjVjY0L0NwdVBhdXNlLmMNCj4gPiA+ICsgIFJpc2NWNjQvUmlzY1ZTZXRKdW1wTG9u Z0p1bXAuUyAgICB8IEdDQw0KPiA+ID4gKyAgUmlzY1Y2NC9SaXNjVkNwdUJyZWFrcG9pbnQuUyAg ICAgIHwgR0NDDQo+ID4gPiArICBSaXNjVjY0L1Jpc2NWQ3B1UGF1c2UuUyAgICAgICAgICAgfCBH Q0MNCj4gPiA+ICsgIFJpc2NWNjQvUmlzY1ZJbnRlcnJ1cHQuUyAgICAgICAgICB8IEdDQw0KPiA+ ID4gKyAgUmlzY1Y2NC9GbHVzaENhY2hlLlMgICAgICAgICAgICAgIHwgR0NDDQo+ID4gPiArDQo+ ID4gPiArW1BhY2thZ2VzXQ0KPiA+ID4gKyAgTWRlUGtnL01kZVBrZy5kZWMNCj4gPiA+ICsNCj4g PiA+ICtbTGlicmFyeUNsYXNzZXNdDQo+ID4gPiArICBQY2RMaWINCj4gPiA+ICsgIERlYnVnTGli DQo+ID4gPiArICBCYXNlTWVtb3J5TGliDQo+ID4gPiArDQo+ID4gPiArW1BjZF0NCj4gPiA+ICsN Cj4gZ0VmaU1kZVBrZ1Rva2VuU3BhY2VHdWlkLlBjZE1heGltdW1MaW5rZWRMaXN0TGVuZ3RoDQo+ ID4gIyMgU09NRVRJTUVTX0NPTlNVTUVTDQo+ID4gPiArDQo+ID4gZ0VmaU1kZVBrZ1Rva2VuU3Bh Y2VHdWlkLlBjZE1heGltdW1Bc2NpaVN0cmluZ0xlbmd0aA0KPiA+ICMjIFNPTUVUSU1FU19DT05T VU1FUw0KPiA+ID4gKw0KPiA+IGdFZmlNZGVQa2dUb2tlblNwYWNlR3VpZC5QY2RNYXhpbXVtVW5p Y29kZVN0cmluZ0xlbmd0aA0KPiA+ICMjIFNPTUVUSU1FU19DT05TVU1FUw0KPiA+ID4gKw0KPiA+ DQo+IGdFZmlNZGVQa2dUb2tlblNwYWNlR3VpZC5QY2RDb250cm9sRmxvd0VuZm9yY2VtZW50UHJv cGVyDQo+ID4gdHlNYXNrICAgIyMgU09NRVRJTUVTX0NPTlNVTUVTDQo+ID4gPiArDQo+IGdFZmlN ZGVQa2dUb2tlblNwYWNlR3VpZC5QY2RTcGVjdWxhdGlvbkJhcnJpZXJUeXBlDQo+ID4gIyMgU09N RVRJTUVTX0NPTlNVTUVTDQo+ID4gPiArDQo+ID4gPiArW0ZlYXR1cmVQY2RdDQo+ID4gPiArICBn RWZpTWRlUGtnVG9rZW5TcGFjZUd1aWQuUGNkVmVyaWZ5Tm9kZUluTGlzdCAgIyMNCj4gPiBDT05T VU1FUw0KPiA+ID4gZGlmZiAtLWdpdA0KPiA+IGEvTWRlUGtnL0xpYnJhcnkvQmFzZUxpYi9Vbml0 VGVzdEhvc3RCYXNlTGliLnVuaQ0KPiA+IGIvTWRlUGtnL0xpYnJhcnkvQmFzZUxpYi9Vbml0VGVz dEhvc3RCYXNlTGliLnVuaQ0KPiA+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiA+IGluZGV4 IDAwMDAwMDAwMDAuLmU2M2VjZWY4MmMNCj4gPiA+IC0tLSAvZGV2L251bGwNCj4gPiA+ICsrKyBi L01kZVBrZy9MaWJyYXJ5L0Jhc2VMaWIvVW5pdFRlc3RIb3N0QmFzZUxpYi51bmkNCj4gPiA+IEBA IC0wLDAgKzEsMTEgQEANCj4gPiA+ICsvLyAvKiogQGZpbGUNCj4gPiA+ICsvLyBCYXNlIExpYnJh cnkgaW1wbGVtZW50YXRpb24gZm9yIHVzZSB3aXRoIGhvc3QNCj4gPiBiYXNlZCB1bml0IHRlc3Rz Lg0KPiA+ID4gKy8vDQo+ID4gPiArLy8gQ29weXJpZ2h0IChjKSAyMDIwLCBJbnRlbCBDb3Jwb3Jh dGlvbi4gQWxsDQo+IHJpZ2h0cw0KPiA+IHJlc2VydmVkLjxCUj4NCj4gPiA+ICsvLyBTUERYLUxp Y2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiA+ID4gKy8vDQo+ID4gPiAr Ly8gKiovDQo+ID4gPiArDQo+ID4gPiArI3N0cmluZyBTVFJfTU9EVUxFX0FCU1RSQUNUICAgICAg ICAgICAgICNsYW5ndWFnZQ0KPiBlbi0NCj4gPiBVUyAiQmFzZSBMaWJyYXJ5IGltcGxlbWVudGF0 aW9uIGZvciB1c2Ugd2l0aCBob3N0DQo+IGJhc2VkDQo+ID4gdW5pdCB0ZXN0cy4iDQo+ID4gPiAr DQo+ID4gPiArI3N0cmluZyBTVFJfTU9EVUxFX0RFU0NSSVBUSU9OICAgICAgICAgICNsYW5ndWFn ZQ0KPiBlbi0NCj4gPiBVUyAiQmFzZSBMaWJyYXJ5IGltcGxlbWVudGF0aW9uIGZvciB1c2Ugd2l0 aCBob3N0DQo+IGJhc2VkDQo+ID4gdW5pdCB0ZXN0cy4iDQo+ID4gPiBkaWZmIC0tZ2l0DQo+IGEv TWRlUGtnL0xpYnJhcnkvQmFzZUxpYi9YODZVbml0VGVzdEhvc3QuYw0KPiA+IGIvTWRlUGtnL0xp YnJhcnkvQmFzZUxpYi9YODZVbml0VGVzdEhvc3QuYw0KPiA+ID4gbmV3IGZpbGUgbW9kZSAxMDA2 NDQNCj4gPiA+IGluZGV4IDAwMDAwMDAwMDAuLmQwZTQyODQ1N2UNCj4gPiA+IC0tLSAvZGV2L251 bGwNCj4gPiA+ICsrKyBiL01kZVBrZy9MaWJyYXJ5L0Jhc2VMaWIvWDg2VW5pdFRlc3RIb3N0LmMN Cj4gPiA+IEBAIC0wLDAgKzEsMjk3NyBAQA0KPiA+ID4gKy8qKiBAZmlsZQ0KPiA+ID4gKyAgSUEz Mi9YNjQgc3BlY2lmaWMgVW5pdCBUZXN0IEhvc3QgZnVuY3Rpb25zLg0KPiA+ID4gKw0KPiA+ID4g KyAgQ29weXJpZ2h0IChjKSAyMDIwLCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cw0KPiA+ IHJlc2VydmVkLjxCUj4NCj4gPiA+ICsgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1D bGF1c2UtUGF0ZW50DQo+ID4gPiArDQo+ID4gPiArKiovDQo+ID4gPiArDQo+ID4gPiArI2luY2x1 ZGUgIlVuaXRUZXN0SG9zdC5oIg0KPiA+ID4gKw0KPiA+ID4gKy8vLw0KPiA+ID4gKy8vLyBEZWZp bmVzIGZvciBtVW5pdFRlc3RIb3N0QmFzZUxpYlNlZ21lbnQgaW5kZXhlcw0KPiA+ID4gKy8vLw0K PiA+ID4gKyNkZWZpbmUgVU5JVF9URVNUX0hPU1RfQkFTRV9MSUJfU0VHTUVOVF9DUyAgICAwDQo+ ID4gPiArI2RlZmluZSBVTklUX1RFU1RfSE9TVF9CQVNFX0xJQl9TRUdNRU5UX0RTICAgIDENCj4g PiA+ICsjZGVmaW5lIFVOSVRfVEVTVF9IT1NUX0JBU0VfTElCX1NFR01FTlRfRVMgICAgMg0KPiA+ ID4gKyNkZWZpbmUgVU5JVF9URVNUX0hPU1RfQkFTRV9MSUJfU0VHTUVOVF9GUyAgICAzDQo+ID4g PiArI2RlZmluZSBVTklUX1RFU1RfSE9TVF9CQVNFX0xJQl9TRUdNRU5UX0dTICAgIDQNCj4gPiA+ ICsjZGVmaW5lIFVOSVRfVEVTVF9IT1NUX0JBU0VfTElCX1NFR01FTlRfU1MgICAgNQ0KPiA+ID4g KyNkZWZpbmUgVU5JVF9URVNUX0hPU1RfQkFTRV9MSUJfU0VHTUVOVF9UUiAgICA2DQo+ID4gPiAr I2RlZmluZSBVTklUX1RFU1RfSE9TVF9CQVNFX0xJQl9TRUdNRU5UX0xEVFIgIDcNCj4gPiA+ICsN Cj4gPiA+ICsvLy8NCj4gPiA+ICsvLy8gTW9kdWxlIGdsb2JhbCB2YXJpYWJsZXMgZm9yIHNpbXBs ZSBzeXN0ZW0NCj4gPiBlbXVsYXRpb24gb2YgTVNScywgQ1J4LCBEUngsDQo+ID4gPiArLy8vIEdE VFIsIElEVFIsIGFuZCBTZWdtZW50IFNlbGVjdG9ycy4NCj4gPiA+ICsvLy8NCj4gPiA+ICtTVEFU SUMgVUlOVDY0DQo+ID4gbVVuaXRUZXN0SG9zdEJhc2VMaWJNc3JbMl1bMHgxMDAwXTsNCj4gPiA+ ICtTVEFUSUMgVUlOVE4gICAgICAgICAgICBtVW5pdFRlc3RIb3N0QmFzZUxpYkNyWzVdOw0KPiA+ ID4gK1NUQVRJQyBVSU5UTiAgICAgICAgICAgIG1Vbml0VGVzdEhvc3RCYXNlTGliRHJbOF07DQo+ ID4gPiArU1RBVElDIFVJTlQxNg0KPiA+IG1Vbml0VGVzdEhvc3RCYXNlTGliU2VnbWVudFs4XTsN Cj4gPiA+ICtTVEFUSUMgSUEzMl9ERVNDUklQVE9SICBtVW5pdFRlc3RIb3N0QmFzZUxpYkdkdHI7 DQo+ID4gPiArU1RBVElDIElBMzJfREVTQ1JJUFRPUiAgbVVuaXRUZXN0SG9zdEJhc2VMaWJJZHRy Ow0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgUmV0cmlldmVzIENQVUlEIGluZm9ybWF0 aW9uLg0KPiA+ID4gKw0KPiA+ID4gKyAgRXhlY3V0ZXMgdGhlIENQVUlEIGluc3RydWN0aW9uIHdp dGggRUFYIHNldCB0bw0KPiB0aGUNCj4gPiB2YWx1ZSBzcGVjaWZpZWQgYnkgSW5kZXguDQo+ID4g PiArICBUaGlzIGZ1bmN0aW9uIGFsd2F5cyByZXR1cm5zIEluZGV4Lg0KPiA+ID4gKyAgSWYgRWF4 IGlzIG5vdCBOVUxMLCB0aGVuIHRoZSB2YWx1ZSBvZiBFQVggYWZ0ZXINCj4gPiBDUFVJRCBpcyBy ZXR1cm5lZCBpbiBFYXguDQo+ID4gPiArICBJZiBFYnggaXMgbm90IE5VTEwsIHRoZW4gdGhlIHZh bHVlIG9mIEVCWCBhZnRlcg0KPiA+IENQVUlEIGlzIHJldHVybmVkIGluIEVieC4NCj4gPiA+ICsg IElmIEVjeCBpcyBub3QgTlVMTCwgdGhlbiB0aGUgdmFsdWUgb2YgRUNYIGFmdGVyDQo+ID4gQ1BV SUQgaXMgcmV0dXJuZWQgaW4gRWN4Lg0KPiA+ID4gKyAgSWYgRWR4IGlzIG5vdCBOVUxMLCB0aGVu IHRoZSB2YWx1ZSBvZiBFRFggYWZ0ZXINCj4gPiBDUFVJRCBpcyByZXR1cm5lZCBpbiBFZHguDQo+ ID4gPiArICBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIG9uIElBLTMyIGFuZCB4NjQu DQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW0gIEluZGV4IFRoZSAzMi1iaXQgdmFsdWUgdG8gbG9h ZCBpbnRvIEVBWA0KPiA+IHByaW9yIHRvIGludm9raW5nIHRoZSBDUFVJRA0KPiA+ID4gKyAgICAg ICAgICAgICAgICBpbnN0cnVjdGlvbi4NCj4gPiA+ICsgIEBwYXJhbSAgRWF4ICAgVGhlIHBvaW50 ZXIgdG8gdGhlIDMyLWJpdCBFQVggdmFsdWUNCj4gPiByZXR1cm5lZCBieSB0aGUgQ1BVSUQNCj4g PiA+ICsgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb24uIFRoaXMgaXMgYW4gb3B0aW9uYWwNCj4g PiBwYXJhbWV0ZXIgdGhhdCBtYXkgYmUgTlVMTC4NCj4gPiA+ICsgIEBwYXJhbSAgRWJ4ICAgVGhl IHBvaW50ZXIgdG8gdGhlIDMyLWJpdCBFQlggdmFsdWUNCj4gPiByZXR1cm5lZCBieSB0aGUgQ1BV SUQNCj4gPiA+ICsgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb24uIFRoaXMgaXMgYW4gb3B0aW9u YWwNCj4gPiBwYXJhbWV0ZXIgdGhhdCBtYXkgYmUgTlVMTC4NCj4gPiA+ICsgIEBwYXJhbSAgRWN4 ICAgVGhlIHBvaW50ZXIgdG8gdGhlIDMyLWJpdCBFQ1ggdmFsdWUNCj4gPiByZXR1cm5lZCBieSB0 aGUgQ1BVSUQNCj4gPiA+ICsgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb24uIFRoaXMgaXMgYW4g b3B0aW9uYWwNCj4gPiBwYXJhbWV0ZXIgdGhhdCBtYXkgYmUgTlVMTC4NCj4gPiA+ICsgIEBwYXJh bSAgRWR4ICAgVGhlIHBvaW50ZXIgdG8gdGhlIDMyLWJpdCBFRFggdmFsdWUNCj4gPiByZXR1cm5l ZCBieSB0aGUgQ1BVSUQNCj4gPiA+ICsgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb24uIFRoaXMg aXMgYW4gb3B0aW9uYWwNCj4gPiBwYXJhbWV0ZXIgdGhhdCBtYXkgYmUgTlVMTC4NCj4gPiA+ICsN Cj4gPiA+ICsgIEByZXR1cm4gSW5kZXguDQo+ID4gPiArDQo+ID4gPiArKiovDQo+ID4gPiArVUlO VDMyDQo+ID4gPiArRUZJQVBJDQo+ID4gPiArVW5pdFRlc3RIb3N0QmFzZUxpYkFzbUNwdWlkICgN Cj4gPiA+ICsgIElOICAgICAgVUlOVDMyICAgICAgICAgICAgICAgICAgICBJbmRleCwNCj4gPiA+ ICsgIE9VVCAgICAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAqRWF4LCAgT1BUSU9OQUwNCj4g PiA+ICsgIE9VVCAgICAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAqRWJ4LCAgT1BUSU9OQUwN Cj4gPiA+ICsgIE9VVCAgICAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAqRWN4LCAgT1BUSU9O QUwNCj4gPiA+ICsgIE9VVCAgICAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAqRWR4ICAgT1BU SU9OQUwNCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArICBpZiAoRWF4ICE9IE5VTEwpIHsN Cj4gPiA+ICsgICAgKkVheCA9IDA7DQo+ID4gPiArICB9DQo+ID4gPiArICBpZiAoRWJ4ICE9IE5V TEwpIHsNCj4gPiA+ICsgICAgKkVieCA9IDA7DQo+ID4gPiArICB9DQo+ID4gPiArICBpZiAoRWN4 ICE9IE5VTEwpIHsNCj4gPiA+ICsgICAgKkVjeCA9IDA7DQo+ID4gPiArICB9DQo+ID4gPiArICBp ZiAoRWR4ICE9IE5VTEwpIHsNCj4gPiA+ICsgICAgKkVkeCA9IDA7DQo+ID4gPiArICB9DQo+ID4g PiArICByZXR1cm4gSW5kZXg7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4g KyAgUmV0cmlldmVzIENQVUlEIGluZm9ybWF0aW9uIHVzaW5nIGFuIGV4dGVuZGVkDQo+IGxlYWYN Cj4gPiBpZGVudGlmaWVyLg0KPiA+ID4gKw0KPiA+ID4gKyAgRXhlY3V0ZXMgdGhlIENQVUlEIGlu c3RydWN0aW9uIHdpdGggRUFYIHNldCB0bw0KPiB0aGUNCj4gPiB2YWx1ZSBzcGVjaWZpZWQgYnkg SW5kZXgNCj4gPiA+ICsgIGFuZCBFQ1ggc2V0IHRvIHRoZSB2YWx1ZSBzcGVjaWZpZWQgYnkgU3Vi SW5kZXguDQo+ID4gVGhpcyBmdW5jdGlvbiBhbHdheXMgcmV0dXJucw0KPiA+ID4gKyAgSW5kZXgu IFRoaXMgZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgb24gSUEtMzINCj4gYW5kDQo+ID4geDY0 Lg0KPiA+ID4gKw0KPiA+ID4gKyAgSWYgRWF4IGlzIG5vdCBOVUxMLCB0aGVuIHRoZSB2YWx1ZSBv ZiBFQVggYWZ0ZXINCj4gPiBDUFVJRCBpcyByZXR1cm5lZCBpbiBFYXguDQo+ID4gPiArICBJZiBF YnggaXMgbm90IE5VTEwsIHRoZW4gdGhlIHZhbHVlIG9mIEVCWCBhZnRlcg0KPiA+IENQVUlEIGlz IHJldHVybmVkIGluIEVieC4NCj4gPiA+ICsgIElmIEVjeCBpcyBub3QgTlVMTCwgdGhlbiB0aGUg dmFsdWUgb2YgRUNYIGFmdGVyDQo+ID4gQ1BVSUQgaXMgcmV0dXJuZWQgaW4gRWN4Lg0KPiA+ID4g KyAgSWYgRWR4IGlzIG5vdCBOVUxMLCB0aGVuIHRoZSB2YWx1ZSBvZiBFRFggYWZ0ZXINCj4gPiBD UFVJRCBpcyByZXR1cm5lZCBpbiBFZHguDQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW0gIEluZGV4 ICAgICBUaGUgMzItYml0IHZhbHVlIHRvIGxvYWQgaW50bw0KPiBFQVgNCj4gPiBwcmlvciB0byBp bnZva2luZyB0aGUNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgIENQVUlEIGluc3RydWN0aW9u Lg0KPiA+ID4gKyAgQHBhcmFtICBTdWJJbmRleCAgVGhlIDMyLWJpdCB2YWx1ZSB0byBsb2FkIGlu dG8NCj4gRUNYDQo+ID4gcHJpb3IgdG8gaW52b2tpbmcgdGhlDQo+ID4gPiArICAgICAgICAgICAg ICAgICAgICBDUFVJRCBpbnN0cnVjdGlvbi4NCj4gPiA+ICsgIEBwYXJhbSAgRWF4ICAgICAgIFRo ZSBwb2ludGVyIHRvIHRoZSAzMi1iaXQgRUFYDQo+ID4gdmFsdWUgcmV0dXJuZWQgYnkgdGhlIENQ VUlEDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbi4gVGhpcyBpcyBhbg0K PiBvcHRpb25hbA0KPiA+IHBhcmFtZXRlciB0aGF0IG1heSBiZQ0KPiA+ID4gKyAgICAgICAgICAg ICAgICAgICAgTlVMTC4NCj4gPiA+ICsgIEBwYXJhbSAgRWJ4ICAgICAgIFRoZSBwb2ludGVyIHRv IHRoZSAzMi1iaXQgRUJYDQo+ID4gdmFsdWUgcmV0dXJuZWQgYnkgdGhlIENQVUlEDQo+ID4gPiAr ICAgICAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbi4gVGhpcyBpcyBhbg0KPiBvcHRpb25hbA0K PiA+IHBhcmFtZXRlciB0aGF0IG1heSBiZQ0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgTlVM TC4NCj4gPiA+ICsgIEBwYXJhbSAgRWN4ICAgICAgIFRoZSBwb2ludGVyIHRvIHRoZSAzMi1iaXQg RUNYDQo+ID4gdmFsdWUgcmV0dXJuZWQgYnkgdGhlIENQVUlEDQo+ID4gPiArICAgICAgICAgICAg ICAgICAgICBpbnN0cnVjdGlvbi4gVGhpcyBpcyBhbg0KPiBvcHRpb25hbA0KPiA+IHBhcmFtZXRl ciB0aGF0IG1heSBiZQ0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgTlVMTC4NCj4gPiA+ICsg IEBwYXJhbSAgRWR4ICAgICAgIFRoZSBwb2ludGVyIHRvIHRoZSAzMi1iaXQgRURYDQo+ID4gdmFs dWUgcmV0dXJuZWQgYnkgdGhlIENQVUlEDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICBpbnN0 cnVjdGlvbi4gVGhpcyBpcyBhbg0KPiBvcHRpb25hbA0KPiA+IHBhcmFtZXRlciB0aGF0IG1heSBi ZQ0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgTlVMTC4NCj4gPiA+ICsNCj4gPiA+ICsgIEBy ZXR1cm4gSW5kZXguDQo+ID4gPiArDQo+ID4gPiArKiovDQo+ID4gPiArVUlOVDMyDQo+ID4gPiAr RUZJQVBJDQo+ID4gPiArVW5pdFRlc3RIb3N0QmFzZUxpYkFzbUNwdWlkRXggKA0KPiA+ID4gKyAg SU4gICAgICBVSU5UMzIgICAgICAgICAgICAgICAgICAgIEluZGV4LA0KPiA+ID4gKyAgSU4gICAg ICBVSU5UMzIgICAgICAgICAgICAgICAgICAgIFN1YkluZGV4LA0KPiA+ID4gKyAgT1VUICAgICBV SU5UMzIgICAgICAgICAgICAgICAgICAgICpFYXgsICBPUFRJT05BTA0KPiA+ID4gKyAgT1VUICAg ICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICpFYngsICBPUFRJT05BTA0KPiA+ID4gKyAgT1VU ICAgICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICpFY3gsICBPUFRJT05BTA0KPiA+ID4gKyAg T1VUICAgICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICpFZHggICBPUFRJT05BTA0KPiA+ID4g KyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIGlmIChFYXggIT0gTlVMTCkgew0KPiA+ID4gKyAgICAq RWF4ID0gMDsNCj4gPiA+ICsgIH0NCj4gPiA+ICsgIGlmIChFYnggIT0gTlVMTCkgew0KPiA+ID4g KyAgICAqRWJ4ID0gMDsNCj4gPiA+ICsgIH0NCj4gPiA+ICsgIGlmIChFY3ggIT0gTlVMTCkgew0K PiA+ID4gKyAgICAqRWN4ID0gMDsNCj4gPiA+ICsgIH0NCj4gPiA+ICsgIGlmIChFZHggIT0gTlVM TCkgew0KPiA+ID4gKyAgICAqRWR4ID0gMDsNCj4gPiA+ICsgIH0NCj4gPiA+ICsgIHJldHVybiBJ bmRleDsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBTZXQgQ0QgYml0 IGFuZCBjbGVhciBOVyBiaXQgb2YgQ1IwIGZvbGxvd2VkIGJ5IGENCj4gPiBXQklOVkQuDQo+ID4g PiArDQo+ID4gPiArICBEaXNhYmxlcyB0aGUgY2FjaGVzIGJ5IHNldHRpbmcgdGhlIENEIGJpdCBv ZiBDUjANCj4gdG8NCj4gPiAxLCBjbGVhcmluZyB0aGUgTlcgYml0IG9mIENSMCB0byAwLA0KPiA+ ID4gKyAgYW5kIGV4ZWN1dGluZyBhIFdCSU5WRCBpbnN0cnVjdGlvbi4gIFRoaXMNCj4gZnVuY3Rp b24NCj4gPiBpcyBvbmx5IGF2YWlsYWJsZSBvbiBJQS0zMiBhbmQgeDY0Lg0KPiA+ID4gKw0KPiA+ ID4gKyoqLw0KPiA+ID4gK1ZPSUQNCj4gPiA+ICtFRklBUEkNCj4gPiA+ICtVbml0VGVzdEhvc3RC YXNlTGliQXNtRGlzYWJsZUNhY2hlICgNCj4gPiA+ICsgIFZPSUQNCj4gPiA+ICsgICkNCj4gPiA+ ICt7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgUGVyZm9ybSBhIFdC SU5WRCBhbmQgY2xlYXIgYm90aCB0aGUgQ0QgYW5kIE5XDQo+IGJpdHMNCj4gPiBvZiBDUjAuDQo+ ID4gPiArDQo+ID4gPiArICBFbmFibGVzIHRoZSBjYWNoZXMgYnkgZXhlY3V0aW5nIGEgV0JJTlZE DQo+ID4gaW5zdHJ1Y3Rpb24gYW5kIHRoZW4gY2xlYXIgYm90aCB0aGUgQ0QgYW5kIE5XDQo+ID4g PiArICBiaXRzIG9mIENSMCB0byAwLiAgVGhpcyBmdW5jdGlvbiBpcyBvbmx5DQo+IGF2YWlsYWJs ZQ0KPiA+IG9uIElBLTMyIGFuZCB4NjQuDQo+ID4gPiArDQo+ID4gPiArKiovDQo+ID4gPiArVk9J RA0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4gK1VuaXRUZXN0SG9zdEJhc2VMaWJBc21FbmFibGVDYWNo ZSAoDQo+ID4gPiArICBWT0lEDQo+ID4gPiArICApDQo+ID4gPiArew0KPiA+ID4gK30NCj4gPiA+ ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIFJldHVybnMgYSA2NC1iaXQgTWFjaGluZSBTcGVjaWZp YyBSZWdpc3RlcihNU1IpLg0KPiA+ID4gKw0KPiA+ID4gKyAgUmVhZHMgYW5kIHJldHVybnMgdGhl IDY0LWJpdCBNU1Igc3BlY2lmaWVkIGJ5DQo+ID4gSW5kZXguIE5vIHBhcmFtZXRlciBjaGVja2lu ZyBpcw0KPiA+ID4gKyAgcGVyZm9ybWVkIG9uIEluZGV4LCBhbmQgc29tZSBJbmRleCB2YWx1ZXMg bWF5DQo+IGNhdXNlDQo+ID4gQ1BVIGV4Y2VwdGlvbnMuIFRoZQ0KPiA+ID4gKyAgY2FsbGVyIG11 c3QgZWl0aGVyIGd1YXJhbnRlZSB0aGF0IEluZGV4IGlzIHZhbGlkLA0KPiA+IG9yIHRoZSBjYWxs ZXIgbXVzdCBzZXQgdXANCj4gPiA+ICsgIGV4Y2VwdGlvbiBoYW5kbGVycyB0byBjYXRjaCB0aGUg ZXhjZXB0aW9ucy4gVGhpcw0KPiA+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlDQo+ID4gPiAr ICBvbiBJQS0zMiBhbmQgeDY0Lg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtICBJbmRleCBUaGUg MzItYml0IE1TUiBpbmRleCB0byByZWFkLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHVybiBUaGUg dmFsdWUgb2YgdGhlIE1TUiBpZGVudGlmaWVkIGJ5IEluZGV4Lg0KPiA+ID4gKw0KPiA+ID4gKyoq Lw0KPiA+ID4gK1VJTlQ2NA0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4gK1VuaXRUZXN0SG9zdEJhc2VM aWJBc21SZWFkTXNyNjQgKA0KPiA+ID4gKyAgSU4gICAgICBVSU5UMzIgICAgICAgICAgICAgICAg ICAgIEluZGV4DQo+ID4gPiArICApDQo+ID4gPiArew0KPiA+ID4gKyAgaWYgKEluZGV4IDwgMHgx MDAwKSB7DQo+ID4gPiArICAgIHJldHVybiBtVW5pdFRlc3RIb3N0QmFzZUxpYk1zclswXVtJbmRl eF07DQo+ID4gPiArICB9DQo+ID4gPiArICBpZiAoSW5kZXggPj0gMHhDMDAwMDAwMCAmJiBJbmRl eCA8IDB4QzAwMDEwMDApIHsNCj4gPiA+ICsgICAgcmV0dXJuIG1Vbml0VGVzdEhvc3RCYXNlTGli TXNyWzFdW0luZGV4XTsNCj4gPiA+ICsgIH0NCj4gPiA+ICsgIHJldHVybiAwOw0KPiA+ID4gK30N Cj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIFdyaXRlcyBhIDY0LWJpdCB2YWx1ZSB0byBh IE1hY2hpbmUgU3BlY2lmaWMNCj4gPiBSZWdpc3RlcihNU1IpLCBhbmQgcmV0dXJucyB0aGUNCj4g PiA+ICsgIHZhbHVlLg0KPiA+ID4gKw0KPiA+ID4gKyAgV3JpdGVzIHRoZSA2NC1iaXQgdmFsdWUg c3BlY2lmaWVkIGJ5IFZhbHVlIHRvIHRoZQ0KPiA+IE1TUiBzcGVjaWZpZWQgYnkgSW5kZXguIFRo ZQ0KPiA+ID4gKyAgNjQtYml0IHZhbHVlIHdyaXR0ZW4gdG8gdGhlIE1TUiBpcyByZXR1cm5lZC4g Tm8NCj4gPiBwYXJhbWV0ZXIgY2hlY2tpbmcgaXMNCj4gPiA+ICsgIHBlcmZvcm1lZCBvbiBJbmRl eCBvciBWYWx1ZSwgYW5kIHNvbWUgb2YgdGhlc2UNCj4gbWF5DQo+ID4gY2F1c2UgQ1BVIGV4Y2Vw dGlvbnMuIFRoZQ0KPiA+ID4gKyAgY2FsbGVyIG11c3QgZWl0aGVyIGd1YXJhbnRlZSB0aGF0IElu ZGV4IGFuZCBWYWx1ZQ0KPiA+IGFyZSB2YWxpZCwgb3IgdGhlIGNhbGxlcg0KPiA+ID4gKyAgbXVz dCBlc3RhYmxpc2ggcHJvcGVyIGV4Y2VwdGlvbiBoYW5kbGVycy4gVGhpcw0KPiA+IGZ1bmN0aW9u IGlzIG9ubHkgYXZhaWxhYmxlIG9uDQo+ID4gPiArICBJQS0zMiBhbmQgeDY0Lg0KPiA+ID4gKw0K PiA+ID4gKyAgQHBhcmFtICBJbmRleCBUaGUgMzItYml0IE1TUiBpbmRleCB0byB3cml0ZS4NCj4g PiA+ICsgIEBwYXJhbSAgVmFsdWUgVGhlIDY0LWJpdCB2YWx1ZSB0byB3cml0ZSB0byB0aGUNCj4g TVNSLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHVybiBWYWx1ZQ0KPiA+ID4gKw0KPiA+ID4gKyoq Lw0KPiA+ID4gK1VJTlQ2NA0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4gK1VuaXRUZXN0SG9zdEJhc2VM aWJBc21Xcml0ZU1zcjY0ICgNCj4gPiA+ICsgIElOICAgICAgVUlOVDMyICAgICAgICAgICAgICAg ICAgICBJbmRleCwNCj4gPiA+ICsgIElOICAgICAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICBW YWx1ZQ0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIGlmIChJbmRleCA8IDB4MTAwMCkg ew0KPiA+ID4gKyAgICBtVW5pdFRlc3RIb3N0QmFzZUxpYk1zclswXVtJbmRleF0gPSBWYWx1ZTsN Cj4gPiA+ICsgIH0NCj4gPiA+ICsgIGlmIChJbmRleCA+PSAweEMwMDAwMDAwICYmIEluZGV4IDwg MHhDMDAwMTAwMCkgew0KPiA+ID4gKyAgICBtVW5pdFRlc3RIb3N0QmFzZUxpYk1zclsxXVtJbmRl eCAtIDB4QzAwMDAwMDAwXQ0KPiA9DQo+ID4gVmFsdWU7DQo+ID4gPiArICB9DQo+ID4gPiArICBy ZXR1cm4gVmFsdWU7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgUmVh ZHMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIENvbnRyb2wgUmVnaXN0ZXIgMA0KPiA+IChDUjAp Lg0KPiA+ID4gKw0KPiA+ID4gKyAgUmVhZHMgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgdmFsdWUg b2YgQ1IwLiBUaGlzDQo+ID4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUNCj4gPiA+ICsgIG9u IElBLTMyIGFuZCB4NjQuIFRoaXMgcmV0dXJucyBhIDMyLWJpdCB2YWx1ZSBvbg0KPiA+IElBLTMy IGFuZCBhIDY0LWJpdCB2YWx1ZSBvbg0KPiA+ID4gKyAgeDY0Lg0KPiA+ID4gKw0KPiA+ID4gKyAg QHJldHVybiBUaGUgdmFsdWUgb2YgdGhlIENvbnRyb2wgUmVnaXN0ZXIgMA0KPiAoQ1IwKS4NCj4g PiA+ICsNCj4gPiA+ICsqKi8NCj4gPiA+ICtVSU5UTg0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4gK1Vu aXRUZXN0SG9zdEJhc2VMaWJBc21SZWFkQ3IwICgNCj4gPiA+ICsgIFZPSUQNCj4gPiA+ICsgICkN Cj4gPiA+ICt7DQo+ID4gPiArICByZXR1cm4gbVVuaXRUZXN0SG9zdEJhc2VMaWJDclswXTsNCj4g PiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBSZWFkcyB0aGUgY3VycmVudCB2 YWx1ZSBvZiB0aGUgQ29udHJvbCBSZWdpc3RlciAyDQo+ID4gKENSMikuDQo+ID4gPiArDQo+ID4g PiArICBSZWFkcyBhbmQgcmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiBDUjIuIFRoaXMNCj4g PiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZQ0KPiA+ID4gKyAgb24gSUEtMzIgYW5kIHg2NC4g VGhpcyByZXR1cm5zIGEgMzItYml0IHZhbHVlIG9uDQo+ID4gSUEtMzIgYW5kIGEgNjQtYml0IHZh bHVlIG9uDQo+ID4gPiArICB4NjQuDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dXJuIFRoZSB2YWx1 ZSBvZiB0aGUgQ29udHJvbCBSZWdpc3RlciAyDQo+IChDUjIpLg0KPiA+ID4gKw0KPiA+ID4gKyoq Lw0KPiA+ID4gK1VJTlRODQo+ID4gPiArRUZJQVBJDQo+ID4gPiArVW5pdFRlc3RIb3N0QmFzZUxp YkFzbVJlYWRDcjIgKA0KPiA+ID4gKyAgVk9JRA0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ ICsgIHJldHVybiBtVW5pdFRlc3RIb3N0QmFzZUxpYkNyWzJdOw0KPiA+ID4gK30NCj4gPiA+ICsN Cj4gPiA+ICsvKioNCj4gPiA+ICsgIFJlYWRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBDb250 cm9sIFJlZ2lzdGVyIDMNCj4gPiAoQ1IzKS4NCj4gPiA+ICsNCj4gPiA+ICsgIFJlYWRzIGFuZCBy ZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVlIG9mIENSMy4gVGhpcw0KPiA+IGZ1bmN0aW9uIGlzIG9u bHkgYXZhaWxhYmxlDQo+ID4gPiArICBvbiBJQS0zMiBhbmQgeDY0LiBUaGlzIHJldHVybnMgYSAz Mi1iaXQgdmFsdWUgb24NCj4gPiBJQS0zMiBhbmQgYSA2NC1iaXQgdmFsdWUgb24NCj4gPiA+ICsg IHg2NC4NCj4gPiA+ICsNCj4gPiA+ICsgIEByZXR1cm4gVGhlIHZhbHVlIG9mIHRoZSBDb250cm9s IFJlZ2lzdGVyIDMNCj4gKENSMykuDQo+ID4gPiArDQo+ID4gPiArKiovDQo+ID4gPiArVUlOVE4N Cj4gPiA+ICtFRklBUEkNCj4gPiA+ICtVbml0VGVzdEhvc3RCYXNlTGliQXNtUmVhZENyMyAoDQo+ ID4gPiArICBWT0lEDQo+ID4gPiArICApDQo+ID4gPiArew0KPiA+ID4gKyAgcmV0dXJuIG1Vbml0 VGVzdEhvc3RCYXNlTGliQ3JbM107DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ ID4gKyAgUmVhZHMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIENvbnRyb2wgUmVnaXN0ZXIgNA0K PiA+IChDUjQpLg0KPiA+ID4gKw0KPiA+ID4gKyAgUmVhZHMgYW5kIHJldHVybnMgdGhlIGN1cnJl bnQgdmFsdWUgb2YgQ1I0LiBUaGlzDQo+ID4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUNCj4g PiA+ICsgIG9uIElBLTMyIGFuZCB4NjQuIFRoaXMgcmV0dXJucyBhIDMyLWJpdCB2YWx1ZSBvbg0K PiA+IElBLTMyIGFuZCBhIDY0LWJpdCB2YWx1ZSBvbg0KPiA+ID4gKyAgeDY0Lg0KPiA+ID4gKw0K PiA+ID4gKyAgQHJldHVybiBUaGUgdmFsdWUgb2YgdGhlIENvbnRyb2wgUmVnaXN0ZXIgNA0KPiAo Q1I0KS4NCj4gPiA+ICsNCj4gPiA+ICsqKi8NCj4gPiA+ICtVSU5UTg0KPiA+ID4gK0VGSUFQSQ0K PiA+ID4gK1VuaXRUZXN0SG9zdEJhc2VMaWJBc21SZWFkQ3I0ICgNCj4gPiA+ICsgIFZPSUQNCj4g PiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArICByZXR1cm4gbVVuaXRUZXN0SG9zdEJhc2VMaWJD cls0XTsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBXcml0ZXMgYSB2 YWx1ZSB0byBDb250cm9sIFJlZ2lzdGVyIDAgKENSMCkuDQo+ID4gPiArDQo+ID4gPiArICBXcml0 ZXMgYW5kIHJldHVybnMgYSBuZXcgdmFsdWUgdG8gQ1IwLiBUaGlzDQo+ID4gZnVuY3Rpb24gaXMg b25seSBhdmFpbGFibGUgb24NCj4gPiA+ICsgIElBLTMyIGFuZCB4NjQuIFRoaXMgd3JpdGVzIGEg MzItYml0IHZhbHVlIG9uIElBLQ0KPiAzMg0KPiA+IGFuZCBhIDY0LWJpdCB2YWx1ZSBvbiB4NjQu DQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW0gIENyMCBUaGUgdmFsdWUgdG8gd3JpdGUgdG8gQ1Iw Lg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHVybiBUaGUgdmFsdWUgd3JpdHRlbiB0byBDUjAuDQo+ ID4gPiArDQo+ID4gPiArKiovDQo+ID4gPiArVUlOVE4NCj4gPiA+ICtFRklBUEkNCj4gPiA+ICtV bml0VGVzdEhvc3RCYXNlTGliQXNtV3JpdGVDcjAgKA0KPiA+ID4gKyAgVUlOVE4gIENyMA0KPiA+ ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIG1Vbml0VGVzdEhvc3RCYXNlTGliQ3JbMF0gPSBD cjA7DQo+ID4gPiArICByZXR1cm4gQ3IwOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvKioN Cj4gPiA+ICsgIFdyaXRlcyBhIHZhbHVlIHRvIENvbnRyb2wgUmVnaXN0ZXIgMiAoQ1IyKS4NCj4g PiA+ICsNCj4gPiA+ICsgIFdyaXRlcyBhbmQgcmV0dXJucyBhIG5ldyB2YWx1ZSB0byBDUjIuIFRo aXMNCj4gPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBvbg0KPiA+ID4gKyAgSUEtMzIgYW5k IHg2NC4gVGhpcyB3cml0ZXMgYSAzMi1iaXQgdmFsdWUgb24gSUEtDQo+IDMyDQo+ID4gYW5kIGEg NjQtYml0IHZhbHVlIG9uIHg2NC4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbSAgQ3IyIFRoZSB2 YWx1ZSB0byB3cml0ZSB0byBDUjIuDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dXJuIFRoZSB2YWx1 ZSB3cml0dGVuIHRvIENSMi4NCj4gPiA+ICsNCj4gPiA+ICsqKi8NCj4gPiA+ICtVSU5UTg0KPiA+ ID4gK0VGSUFQSQ0KPiA+ID4gK1VuaXRUZXN0SG9zdEJhc2VMaWJBc21Xcml0ZUNyMiAoDQo+ID4g PiArICBVSU5UTiAgQ3IyDQo+ID4gPiArICApDQo+ID4gPiArew0KPiA+ID4gKyAgbVVuaXRUZXN0 SG9zdEJhc2VMaWJDclsyXSA9IENyMjsNCj4gPiA+ICsgIHJldHVybiBDcjI7DQo+ID4gPiArfQ0K PiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgV3JpdGVzIGEgdmFsdWUgdG8gQ29udHJvbCBS ZWdpc3RlciAzIChDUjMpLg0KPiA+ID4gKw0KPiA+ID4gKyAgV3JpdGVzIGFuZCByZXR1cm5zIGEg bmV3IHZhbHVlIHRvIENSMy4gVGhpcw0KPiA+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIG9u DQo+ID4gPiArICBJQS0zMiBhbmQgeDY0LiBUaGlzIHdyaXRlcyBhIDMyLWJpdCB2YWx1ZSBvbiBJ QS0NCj4gMzINCj4gPiBhbmQgYSA2NC1iaXQgdmFsdWUgb24geDY0Lg0KPiA+ID4gKw0KPiA+ID4g KyAgQHBhcmFtICBDcjMgVGhlIHZhbHVlIHRvIHdyaXRlIHRvIENSMy4NCj4gPiA+ICsNCj4gPiA+ ICsgIEByZXR1cm4gVGhlIHZhbHVlIHdyaXR0ZW4gdG8gQ1IzLg0KPiA+ID4gKw0KPiA+ID4gKyoq Lw0KPiA+ID4gK1VJTlRODQo+ID4gPiArRUZJQVBJDQo+ID4gPiArVW5pdFRlc3RIb3N0QmFzZUxp YkFzbVdyaXRlQ3IzICgNCj4gPiA+ICsgIFVJTlROICBDcjMNCj4gPiA+ICsgICkNCj4gPiA+ICt7 DQo+ID4gPiArICBtVW5pdFRlc3RIb3N0QmFzZUxpYkNyWzNdID0gQ3IzOw0KPiA+ID4gKyAgcmV0 dXJuIENyMzsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBXcml0ZXMg YSB2YWx1ZSB0byBDb250cm9sIFJlZ2lzdGVyIDQgKENSNCkuDQo+ID4gPiArDQo+ID4gPiArICBX cml0ZXMgYW5kIHJldHVybnMgYSBuZXcgdmFsdWUgdG8gQ1I0LiBUaGlzDQo+ID4gZnVuY3Rpb24g aXMgb25seSBhdmFpbGFibGUgb24NCj4gPiA+ICsgIElBLTMyIGFuZCB4NjQuIFRoaXMgd3JpdGVz IGEgMzItYml0IHZhbHVlIG9uIElBLQ0KPiAzMg0KPiA+IGFuZCBhIDY0LWJpdCB2YWx1ZSBvbiB4 NjQuDQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW0gIENyNCBUaGUgdmFsdWUgdG8gd3JpdGUgdG8g Q1I0Lg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHVybiBUaGUgdmFsdWUgd3JpdHRlbiB0byBDUjQu DQo+ID4gPiArDQo+ID4gPiArKiovDQo+ID4gPiArVUlOVE4NCj4gPiA+ICtFRklBUEkNCj4gPiA+ ICtVbml0VGVzdEhvc3RCYXNlTGliQXNtV3JpdGVDcjQgKA0KPiA+ID4gKyAgVUlOVE4gIENyNA0K PiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIG1Vbml0VGVzdEhvc3RCYXNlTGliQ3JbNF0g PSBDcjQ7DQo+ID4gPiArICByZXR1cm4gQ3I0Ow0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsv KioNCj4gPiA+ICsgIFJlYWRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIERlYnVnIFJlZ2lzdGVyIDAN Cj4gKERSMCkuDQo+ID4gPiArDQo+ID4gPiArICBSZWFkcyBhbmQgcmV0dXJucyB0aGUgY3VycmVu dCB2YWx1ZSBvZiBEUjAuIFRoaXMNCj4gPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZQ0KPiA+ ID4gKyAgb24gSUEtMzIgYW5kIHg2NC4gVGhpcyByZXR1cm5zIGEgMzItYml0IHZhbHVlIG9uDQo+ ID4gSUEtMzIgYW5kIGEgNjQtYml0IHZhbHVlIG9uDQo+ID4gPiArICB4NjQuDQo+ID4gPiArDQo+ ID4gPiArICBAcmV0dXJuIFRoZSB2YWx1ZSBvZiBEZWJ1ZyBSZWdpc3RlciAwIChEUjApLg0KPiA+ ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4gK1VJTlRODQo+ID4gPiArRUZJQVBJDQo+ID4gPiArVW5p dFRlc3RIb3N0QmFzZUxpYkFzbVJlYWREcjAgKA0KPiA+ID4gKyAgVk9JRA0KPiA+ID4gKyAgKQ0K PiA+ID4gK3sNCj4gPiA+ICsgIHJldHVybiBtVW5pdFRlc3RIb3N0QmFzZUxpYkRyWzBdOw0KPiA+ ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIFJlYWRzIHRoZSBjdXJyZW50IHZh bHVlIG9mIERlYnVnIFJlZ2lzdGVyIDENCj4gKERSMSkuDQo+ID4gPiArDQo+ID4gPiArICBSZWFk cyBhbmQgcmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiBEUjEuIFRoaXMNCj4gPiBmdW5jdGlv biBpcyBvbmx5IGF2YWlsYWJsZQ0KPiA+ID4gKyAgb24gSUEtMzIgYW5kIHg2NC4gVGhpcyByZXR1 cm5zIGEgMzItYml0IHZhbHVlIG9uDQo+ID4gSUEtMzIgYW5kIGEgNjQtYml0IHZhbHVlIG9uDQo+ ID4gPiArICB4NjQuDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dXJuIFRoZSB2YWx1ZSBvZiBEZWJ1 ZyBSZWdpc3RlciAxIChEUjEpLg0KPiA+ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4gK1VJTlRODQo+ ID4gPiArRUZJQVBJDQo+ID4gPiArVW5pdFRlc3RIb3N0QmFzZUxpYkFzbVJlYWREcjEgKA0KPiA+ ID4gKyAgVk9JRA0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIHJldHVybiBtVW5pdFRl c3RIb3N0QmFzZUxpYkRyWzFdOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ ICsgIFJlYWRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIERlYnVnIFJlZ2lzdGVyIDINCj4gKERSMiku DQo+ID4gPiArDQo+ID4gPiArICBSZWFkcyBhbmQgcmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBv ZiBEUjIuIFRoaXMNCj4gPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZQ0KPiA+ID4gKyAgb24g SUEtMzIgYW5kIHg2NC4gVGhpcyByZXR1cm5zIGEgMzItYml0IHZhbHVlIG9uDQo+ID4gSUEtMzIg YW5kIGEgNjQtYml0IHZhbHVlIG9uDQo+ID4gPiArICB4NjQuDQo+ID4gPiArDQo+ID4gPiArICBA cmV0dXJuIFRoZSB2YWx1ZSBvZiBEZWJ1ZyBSZWdpc3RlciAyIChEUjIpLg0KPiA+ID4gKw0KPiA+ ID4gKyoqLw0KPiA+ID4gK1VJTlRODQo+ID4gPiArRUZJQVBJDQo+ID4gPiArVW5pdFRlc3RIb3N0 QmFzZUxpYkFzbVJlYWREcjIgKA0KPiA+ID4gKyAgVk9JRA0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sN Cj4gPiA+ICsgIHJldHVybiBtVW5pdFRlc3RIb3N0QmFzZUxpYkRyWzJdOw0KPiA+ID4gK30NCj4g PiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIFJlYWRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIERl YnVnIFJlZ2lzdGVyIDMNCj4gKERSMykuDQo+ID4gPiArDQo+ID4gPiArICBSZWFkcyBhbmQgcmV0 dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiBEUjMuIFRoaXMNCj4gPiBmdW5jdGlvbiBpcyBvbmx5 IGF2YWlsYWJsZQ0KPiA+ID4gKyAgb24gSUEtMzIgYW5kIHg2NC4gVGhpcyByZXR1cm5zIGEgMzIt Yml0IHZhbHVlIG9uDQo+ID4gSUEtMzIgYW5kIGEgNjQtYml0IHZhbHVlIG9uDQo+ID4gPiArICB4 NjQuDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dXJuIFRoZSB2YWx1ZSBvZiBEZWJ1ZyBSZWdpc3Rl ciAzIChEUjMpLg0KPiA+ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4gK1VJTlRODQo+ID4gPiArRUZJ QVBJDQo+ID4gPiArVW5pdFRlc3RIb3N0QmFzZUxpYkFzbVJlYWREcjMgKA0KPiA+ID4gKyAgVk9J RA0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIHJldHVybiBtVW5pdFRlc3RIb3N0QmFz ZUxpYkRyWzNdOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIFJlYWRz IHRoZSBjdXJyZW50IHZhbHVlIG9mIERlYnVnIFJlZ2lzdGVyIDQNCj4gKERSNCkuDQo+ID4gPiAr DQo+ID4gPiArICBSZWFkcyBhbmQgcmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiBEUjQuIFRo aXMNCj4gPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZQ0KPiA+ID4gKyAgb24gSUEtMzIgYW5k IHg2NC4gVGhpcyByZXR1cm5zIGEgMzItYml0IHZhbHVlIG9uDQo+ID4gSUEtMzIgYW5kIGEgNjQt Yml0IHZhbHVlIG9uDQo+ID4gPiArICB4NjQuDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dXJuIFRo ZSB2YWx1ZSBvZiBEZWJ1ZyBSZWdpc3RlciA0IChEUjQpLg0KPiA+ID4gKw0KPiA+ID4gKyoqLw0K PiA+ID4gK1VJTlRODQo+ID4gPiArRUZJQVBJDQo+ID4gPiArVW5pdFRlc3RIb3N0QmFzZUxpYkFz bVJlYWREcjQgKA0KPiA+ID4gKyAgVk9JRA0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsg IHJldHVybiBtVW5pdFRlc3RIb3N0QmFzZUxpYkRyWzRdOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4g PiA+ICsvKioNCj4gPiA+ICsgIFJlYWRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIERlYnVnIFJlZ2lz dGVyIDUNCj4gKERSNSkuDQo+ID4gPiArDQo+ID4gPiArICBSZWFkcyBhbmQgcmV0dXJucyB0aGUg Y3VycmVudCB2YWx1ZSBvZiBEUjUuIFRoaXMNCj4gPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJs ZQ0KPiA+ID4gKyAgb24gSUEtMzIgYW5kIHg2NC4gVGhpcyByZXR1cm5zIGEgMzItYml0IHZhbHVl IG9uDQo+ID4gSUEtMzIgYW5kIGEgNjQtYml0IHZhbHVlIG9uDQo+ID4gPiArICB4NjQuDQo+ID4g PiArDQo+ID4gPiArICBAcmV0dXJuIFRoZSB2YWx1ZSBvZiBEZWJ1ZyBSZWdpc3RlciA1IChEUjUp Lg0KPiA+ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4gK1VJTlRODQo+ID4gPiArRUZJQVBJDQo+ID4g PiArVW5pdFRlc3RIb3N0QmFzZUxpYkFzbVJlYWREcjUgKA0KPiA+ID4gKyAgVk9JRA0KPiA+ID4g KyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIHJldHVybiBtVW5pdFRlc3RIb3N0QmFzZUxpYkRyWzVd Ow0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIFJlYWRzIHRoZSBjdXJy ZW50IHZhbHVlIG9mIERlYnVnIFJlZ2lzdGVyIDYNCj4gKERSNikuDQo+ID4gPiArDQo+ID4gPiAr ICBSZWFkcyBhbmQgcmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiBEUjYuIFRoaXMNCj4gPiBm dW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZQ0KPiA+ID4gKyAgb24gSUEtMzIgYW5kIHg2NC4gVGhp cyByZXR1cm5zIGEgMzItYml0IHZhbHVlIG9uDQo+ID4gSUEtMzIgYW5kIGEgNjQtYml0IHZhbHVl IG9uDQo+ID4gPiArICB4NjQuDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dXJuIFRoZSB2YWx1ZSBv ZiBEZWJ1ZyBSZWdpc3RlciA2IChEUjYpLg0KPiA+ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4gK1VJ TlRODQo+ID4gPiArRUZJQVBJDQo+ID4gPiArVW5pdFRlc3RIb3N0QmFzZUxpYkFzbVJlYWREcjYg KA0KPiA+ID4gKyAgVk9JRA0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIHJldHVybiBt VW5pdFRlc3RIb3N0QmFzZUxpYkRyWzZdOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvKioN Cj4gPiA+ICsgIFJlYWRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIERlYnVnIFJlZ2lzdGVyIDcNCj4g KERSNykuDQo+ID4gPiArDQo+ID4gPiArICBSZWFkcyBhbmQgcmV0dXJucyB0aGUgY3VycmVudCB2 YWx1ZSBvZiBEUjcuIFRoaXMNCj4gPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZQ0KPiA+ID4g KyAgb24gSUEtMzIgYW5kIHg2NC4gVGhpcyByZXR1cm5zIGEgMzItYml0IHZhbHVlIG9uDQo+ID4g SUEtMzIgYW5kIGEgNjQtYml0IHZhbHVlIG9uDQo+ID4gPiArICB4NjQuDQo+ID4gPiArDQo+ID4g PiArICBAcmV0dXJuIFRoZSB2YWx1ZSBvZiBEZWJ1ZyBSZWdpc3RlciA3IChEUjcpLg0KPiA+ID4g Kw0KPiA+ID4gKyoqLw0KPiA+ID4gK1VJTlRODQo+ID4gPiArRUZJQVBJDQo+ID4gPiArVW5pdFRl c3RIb3N0QmFzZUxpYkFzbVJlYWREcjcgKA0KPiA+ID4gKyAgVk9JRA0KPiA+ID4gKyAgKQ0KPiA+ ID4gK3sNCj4gPiA+ICsgIHJldHVybiBtVW5pdFRlc3RIb3N0QmFzZUxpYkRyWzddOw0KPiA+ID4g K30NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIFdyaXRlcyBhIHZhbHVlIHRvIERlYnVn IFJlZ2lzdGVyIDAgKERSMCkuDQo+ID4gPiArDQo+ID4gPiArICBXcml0ZXMgYW5kIHJldHVybnMg YSBuZXcgdmFsdWUgdG8gRFIwLiBUaGlzDQo+ID4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUg b24NCj4gPiA+ICsgIElBLTMyIGFuZCB4NjQuIFRoaXMgd3JpdGVzIGEgMzItYml0IHZhbHVlIG9u IElBLQ0KPiAzMg0KPiA+IGFuZCBhIDY0LWJpdCB2YWx1ZSBvbiB4NjQuDQo+ID4gPiArDQo+ID4g PiArICBAcGFyYW0gIERyMCBUaGUgdmFsdWUgdG8gd3JpdGUgdG8gRHIwLg0KPiA+ID4gKw0KPiA+ ID4gKyAgQHJldHVybiBUaGUgdmFsdWUgd3JpdHRlbiB0byBEZWJ1ZyBSZWdpc3RlciAwDQo+ID4g KERSMCkuDQo+ID4gPiArDQo+ID4gPiArKiovDQo+ID4gPiArVUlOVE4NCj4gPiA+ICtFRklBUEkN Cj4gPiA+ICtVbml0VGVzdEhvc3RCYXNlTGliQXNtV3JpdGVEcjAgKA0KPiA+ID4gKyAgVUlOVE4g IERyMA0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIG1Vbml0VGVzdEhvc3RCYXNlTGli RHJbMF0gPSBEcjA7DQo+ID4gPiArICByZXR1cm4gRHIwOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4g PiA+ICsvKioNCj4gPiA+ICsgIFdyaXRlcyBhIHZhbHVlIHRvIERlYnVnIFJlZ2lzdGVyIDEgKERS MSkuDQo+ID4gPiArDQo+ID4gPiArICBXcml0ZXMgYW5kIHJldHVybnMgYSBuZXcgdmFsdWUgdG8g RFIxLiBUaGlzDQo+ID4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgb24NCj4gPiA+ICsgIElB LTMyIGFuZCB4NjQuIFRoaXMgd3JpdGVzIGEgMzItYml0IHZhbHVlIG9uIElBLQ0KPiAzMg0KPiA+ IGFuZCBhIDY0LWJpdCB2YWx1ZSBvbiB4NjQuDQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW0gIERy MSBUaGUgdmFsdWUgdG8gd3JpdGUgdG8gRHIxLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHVybiBU aGUgdmFsdWUgd3JpdHRlbiB0byBEZWJ1ZyBSZWdpc3RlciAxDQo+ID4gKERSMSkuDQo+ID4gPiAr DQo+ID4gPiArKiovDQo+ID4gPiArVUlOVE4NCj4gPiA+ICtFRklBUEkNCj4gPiA+ICtVbml0VGVz dEhvc3RCYXNlTGliQXNtV3JpdGVEcjEgKA0KPiA+ID4gKyAgVUlOVE4gIERyMQ0KPiA+ID4gKyAg KQ0KPiA+ID4gK3sNCj4gPiA+ICsgIG1Vbml0VGVzdEhvc3RCYXNlTGliRHJbMV0gPSBEcjE7DQo+ ID4gPiArICByZXR1cm4gRHIxOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ ICsgIFdyaXRlcyBhIHZhbHVlIHRvIERlYnVnIFJlZ2lzdGVyIDIgKERSMikuDQo+ID4gPiArDQo+ ID4gPiArICBXcml0ZXMgYW5kIHJldHVybnMgYSBuZXcgdmFsdWUgdG8gRFIyLiBUaGlzDQo+ID4g ZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgb24NCj4gPiA+ICsgIElBLTMyIGFuZCB4NjQuIFRo aXMgd3JpdGVzIGEgMzItYml0IHZhbHVlIG9uIElBLQ0KPiAzMg0KPiA+IGFuZCBhIDY0LWJpdCB2 YWx1ZSBvbiB4NjQuDQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW0gIERyMiBUaGUgdmFsdWUgdG8g d3JpdGUgdG8gRHIyLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHVybiBUaGUgdmFsdWUgd3JpdHRl biB0byBEZWJ1ZyBSZWdpc3RlciAyDQo+ID4gKERSMikuDQo+ID4gPiArDQo+ID4gPiArKiovDQo+ ID4gPiArVUlOVE4NCj4gPiA+ICtFRklBUEkNCj4gPiA+ICtVbml0VGVzdEhvc3RCYXNlTGliQXNt V3JpdGVEcjIgKA0KPiA+ID4gKyAgVUlOVE4gIERyMg0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4g PiA+ICsgIG1Vbml0VGVzdEhvc3RCYXNlTGliRHJbMl0gPSBEcjI7DQo+ID4gPiArICByZXR1cm4g RHIyOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIFdyaXRlcyBhIHZh bHVlIHRvIERlYnVnIFJlZ2lzdGVyIDMgKERSMykuDQo+ID4gPiArDQo+ID4gPiArICBXcml0ZXMg YW5kIHJldHVybnMgYSBuZXcgdmFsdWUgdG8gRFIzLiBUaGlzDQo+ID4gZnVuY3Rpb24gaXMgb25s eSBhdmFpbGFibGUgb24NCj4gPiA+ICsgIElBLTMyIGFuZCB4NjQuIFRoaXMgd3JpdGVzIGEgMzIt Yml0IHZhbHVlIG9uIElBLQ0KPiAzMg0KPiA+IGFuZCBhIDY0LWJpdCB2YWx1ZSBvbiB4NjQuDQo+ ID4gPiArDQo+ID4gPiArICBAcGFyYW0gIERyMyBUaGUgdmFsdWUgdG8gd3JpdGUgdG8gRHIzLg0K PiA+ID4gKw0KPiA+ID4gKyAgQHJldHVybiBUaGUgdmFsdWUgd3JpdHRlbiB0byBEZWJ1ZyBSZWdp c3RlciAzDQo+ID4gKERSMykuDQo+ID4gPiArDQo+ID4gPiArKiovDQo+ID4gPiArVUlOVE4NCj4g PiA+ICtFRklBUEkNCj4gPiA+ICtVbml0VGVzdEhvc3RCYXNlTGliQXNtV3JpdGVEcjMgKA0KPiA+ ID4gKyAgVUlOVE4gIERyMw0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIG1Vbml0VGVz dEhvc3RCYXNlTGliRHJbM10gPSBEcjM7DQo+ID4gPiArICByZXR1cm4gRHIzOw0KPiA+ID4gK30N Cj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIFdyaXRlcyBhIHZhbHVlIHRvIERlYnVnIFJl Z2lzdGVyIDQgKERSNCkuDQo+ID4gPiArDQo+ID4gPiArICBXcml0ZXMgYW5kIHJldHVybnMgYSBu ZXcgdmFsdWUgdG8gRFI0LiBUaGlzDQo+ID4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgb24N Cj4gPiA+ICsgIElBLTMyIGFuZCB4NjQuIFRoaXMgd3JpdGVzIGEgMzItYml0IHZhbHVlIG9uIElB LQ0KPiAzMg0KPiA+IGFuZCBhIDY0LWJpdCB2YWx1ZSBvbiB4NjQuDQo+ID4gPiArDQo+ID4gPiAr ICBAcGFyYW0gIERyNCBUaGUgdmFsdWUgdG8gd3JpdGUgdG8gRHI0Lg0KPiA+ID4gKw0KPiA+ID4g KyAgQHJldHVybiBUaGUgdmFsdWUgd3JpdHRlbiB0byBEZWJ1ZyBSZWdpc3RlciA0DQo+ID4gKERS NCkuDQo+ID4gPiArDQo+ID4gPiArKiovDQo+ID4gPiArVUlOVE4NCj4gPiA+ICtFRklBUEkNCj4g PiA+ICtVbml0VGVzdEhvc3RCYXNlTGliQXNtV3JpdGVEcjQgKA0KPiA+ID4gKyAgVUlOVE4gIERy NA0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIG1Vbml0VGVzdEhvc3RCYXNlTGliRHJb NF0gPSBEcjQ7DQo+ID4gPiArICByZXR1cm4gRHI0Ow0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ ICsvKioNCj4gPiA+ICsgIFdyaXRlcyBhIHZhbHVlIHRvIERlYnVnIFJlZ2lzdGVyIDUgKERSNSku DQo+ID4gPiArDQo+ID4gPiArICBXcml0ZXMgYW5kIHJldHVybnMgYSBuZXcgdmFsdWUgdG8gRFI1 LiBUaGlzDQo+ID4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgb24NCj4gPiA+ICsgIElBLTMy IGFuZCB4NjQuIFRoaXMgd3JpdGVzIGEgMzItYml0IHZhbHVlIG9uIElBLQ0KPiAzMg0KPiA+IGFu ZCBhIDY0LWJpdCB2YWx1ZSBvbiB4NjQuDQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW0gIERyNSBU aGUgdmFsdWUgdG8gd3JpdGUgdG8gRHI1Lg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHVybiBUaGUg dmFsdWUgd3JpdHRlbiB0byBEZWJ1ZyBSZWdpc3RlciA1DQo+ID4gKERSNSkuDQo+ID4gPiArDQo+ ID4gPiArKiovDQo+ID4gPiArVUlOVE4NCj4gPiA+ICtFRklBUEkNCj4gPiA+ICtVbml0VGVzdEhv c3RCYXNlTGliQXNtV3JpdGVEcjUgKA0KPiA+ID4gKyAgVUlOVE4gIERyNQ0KPiA+ID4gKyAgKQ0K PiA+ID4gK3sNCj4gPiA+ICsgIG1Vbml0VGVzdEhvc3RCYXNlTGliRHJbNV0gPSBEcjU7DQo+ID4g PiArICByZXR1cm4gRHI1Ow0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsg IFdyaXRlcyBhIHZhbHVlIHRvIERlYnVnIFJlZ2lzdGVyIDYgKERSNikuDQo+ID4gPiArDQo+ID4g PiArICBXcml0ZXMgYW5kIHJldHVybnMgYSBuZXcgdmFsdWUgdG8gRFI2LiBUaGlzDQo+ID4gZnVu Y3Rpb24gaXMgb25seSBhdmFpbGFibGUgb24NCj4gPiA+ICsgIElBLTMyIGFuZCB4NjQuIFRoaXMg d3JpdGVzIGEgMzItYml0IHZhbHVlIG9uIElBLQ0KPiAzMg0KPiA+IGFuZCBhIDY0LWJpdCB2YWx1 ZSBvbiB4NjQuDQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW0gIERyNiBUaGUgdmFsdWUgdG8gd3Jp dGUgdG8gRHI2Lg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHVybiBUaGUgdmFsdWUgd3JpdHRlbiB0 byBEZWJ1ZyBSZWdpc3RlciA2DQo+ID4gKERSNikuDQo+ID4gPiArDQo+ID4gPiArKiovDQo+ID4g PiArVUlOVE4NCj4gPiA+ICtFRklBUEkNCj4gPiA+ICtVbml0VGVzdEhvc3RCYXNlTGliQXNtV3Jp dGVEcjYgKA0KPiA+ID4gKyAgVUlOVE4gIERyNg0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ ICsgIG1Vbml0VGVzdEhvc3RCYXNlTGliRHJbNl0gPSBEcjY7DQo+ID4gPiArICByZXR1cm4gRHI2 Ow0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIFdyaXRlcyBhIHZhbHVl IHRvIERlYnVnIFJlZ2lzdGVyIDcgKERSNykuDQo+ID4gPiArDQo+ID4gPiArICBXcml0ZXMgYW5k IHJldHVybnMgYSBuZXcgdmFsdWUgdG8gRFI3LiBUaGlzDQo+ID4gZnVuY3Rpb24gaXMgb25seSBh dmFpbGFibGUgb24NCj4gPiA+ICsgIElBLTMyIGFuZCB4NjQuIFRoaXMgd3JpdGVzIGEgMzItYml0 IHZhbHVlIG9uIElBLQ0KPiAzMg0KPiA+IGFuZCBhIDY0LWJpdCB2YWx1ZSBvbiB4NjQuDQo+ID4g PiArDQo+ID4gPiArICBAcGFyYW0gIERyNyBUaGUgdmFsdWUgdG8gd3JpdGUgdG8gRHI3Lg0KPiA+ ID4gKw0KPiA+ID4gKyAgQHJldHVybiBUaGUgdmFsdWUgd3JpdHRlbiB0byBEZWJ1ZyBSZWdpc3Rl ciA3DQo+ID4gKERSNykuDQo+ID4gPiArDQo+ID4gPiArKiovDQo+ID4gPiArVUlOVE4NCj4gPiA+ ICtFRklBUEkNCj4gPiA+ICtVbml0VGVzdEhvc3RCYXNlTGliQXNtV3JpdGVEcjcgKA0KPiA+ID4g KyAgVUlOVE4gIERyNw0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIG1Vbml0VGVzdEhv c3RCYXNlTGliRHJbN10gPSBEcjc7DQo+ID4gPiArICByZXR1cm4gRHI3Ow0KPiA+ID4gK30NCj4g PiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIFJlYWRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIENv ZGUgU2VnbWVudCBSZWdpc3Rlcg0KPiA+IChDUykuDQo+ID4gPiArDQo+ID4gPiArICBSZWFkcyBh bmQgcmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiBDUy4gVGhpcw0KPiA+IGZ1bmN0aW9uIGlz IG9ubHkgYXZhaWxhYmxlIG9uDQo+ID4gPiArICBJQS0zMiBhbmQgeDY0Lg0KPiA+ID4gKw0KPiA+ ID4gKyAgQHJldHVybiBUaGUgY3VycmVudCB2YWx1ZSBvZiBDUy4NCj4gPiA+ICsNCj4gPiA+ICsq Ki8NCj4gPiA+ICtVSU5UMTYNCj4gPiA+ICtFRklBUEkNCj4gPiA+ICtVbml0VGVzdEhvc3RCYXNl TGliQXNtUmVhZENzICgNCj4gPiA+ICsgIFZPSUQNCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4g PiArICByZXR1cm4NCj4gPg0KPiBtVW5pdFRlc3RIb3N0QmFzZUxpYlNlZ21lbnRbVU5JVF9URVNU X0hPU1RfQkFTRV9MSUJfU0VHTQ0KPiA+IEVOVF9DU107DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ ID4gKy8qKg0KPiA+ID4gKyAgUmVhZHMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgRGF0YSBTZWdtZW50 IFJlZ2lzdGVyDQo+ID4gKERTKS4NCj4gPiA+ICsNCj4gPiA+ICsgIFJlYWRzIGFuZCByZXR1cm5z IHRoZSBjdXJyZW50IHZhbHVlIG9mIERTLiBUaGlzDQo+ID4gZnVuY3Rpb24gaXMgb25seSBhdmFp bGFibGUgb24NCj4gPiA+ICsgIElBLTMyIGFuZCB4NjQuDQo+ID4gPiArDQo+ID4gPiArICBAcmV0 dXJuIFRoZSBjdXJyZW50IHZhbHVlIG9mIERTLg0KPiA+ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4g K1VJTlQxNg0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4gK1VuaXRUZXN0SG9zdEJhc2VMaWJBc21SZWFk RHMgKA0KPiA+ID4gKyAgVk9JRA0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIHJldHVy bg0KPiA+DQo+IG1Vbml0VGVzdEhvc3RCYXNlTGliU2VnbWVudFtVTklUX1RFU1RfSE9TVF9CQVNF X0xJQl9TRUdNDQo+ID4gRU5UX0RTXTsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ ID4gPiArICBSZWFkcyB0aGUgY3VycmVudCB2YWx1ZSBvZiBFeHRyYSBTZWdtZW50IFJlZ2lzdGVy DQo+ID4gKEVTKS4NCj4gPiA+ICsNCj4gPiA+ICsgIFJlYWRzIGFuZCByZXR1cm5zIHRoZSBjdXJy ZW50IHZhbHVlIG9mIEVTLiBUaGlzDQo+ID4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgb24N Cj4gPiA+ICsgIElBLTMyIGFuZCB4NjQuDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dXJuIFRoZSBj dXJyZW50IHZhbHVlIG9mIEVTLg0KPiA+ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4gK1VJTlQxNg0K PiA+ID4gK0VGSUFQSQ0KPiA+ID4gK1VuaXRUZXN0SG9zdEJhc2VMaWJBc21SZWFkRXMgKA0KPiA+ ID4gKyAgVk9JRA0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIHJldHVybg0KPiA+DQo+ IG1Vbml0VGVzdEhvc3RCYXNlTGliU2VnbWVudFtVTklUX1RFU1RfSE9TVF9CQVNFX0xJQl9TRUdN DQo+ID4gRU5UX0VTXTsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBS ZWFkcyB0aGUgY3VycmVudCB2YWx1ZSBvZiBGUyBEYXRhIFNlZ21lbnQNCj4gUmVnaXN0ZXINCj4g PiAoRlMpLg0KPiA+ID4gKw0KPiA+ID4gKyAgUmVhZHMgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQg dmFsdWUgb2YgRlMuIFRoaXMNCj4gPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBvbg0KPiA+ ID4gKyAgSUEtMzIgYW5kIHg2NC4NCj4gPiA+ICsNCj4gPiA+ICsgIEByZXR1cm4gVGhlIGN1cnJl bnQgdmFsdWUgb2YgRlMuDQo+ID4gPiArDQo+ID4gPiArKiovDQo+ID4gPiArVUlOVDE2DQo+ID4g PiArRUZJQVBJDQo+ID4gPiArVW5pdFRlc3RIb3N0QmFzZUxpYkFzbVJlYWRGcyAoDQo+ID4gPiAr ICBWT0lEDQo+ID4gPiArICApDQo+ID4gPiArew0KPiA+ID4gKyAgcmV0dXJuDQo+ID4NCj4gbVVu aXRUZXN0SG9zdEJhc2VMaWJTZWdtZW50W1VOSVRfVEVTVF9IT1NUX0JBU0VfTElCX1NFR00NCj4g PiBFTlRfRlNdOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIFJlYWRz IHRoZSBjdXJyZW50IHZhbHVlIG9mIEdTIERhdGEgU2VnbWVudA0KPiBSZWdpc3Rlcg0KPiA+IChH UykuDQo+ID4gPiArDQo+ID4gPiArICBSZWFkcyBhbmQgcmV0dXJucyB0aGUgY3VycmVudCB2YWx1 ZSBvZiBHUy4gVGhpcw0KPiA+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIG9uDQo+ID4gPiAr ICBJQS0zMiBhbmQgeDY0Lg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHVybiBUaGUgY3VycmVudCB2 YWx1ZSBvZiBHUy4NCj4gPiA+ICsNCj4gPiA+ICsqKi8NCj4gPiA+ICtVSU5UMTYNCj4gPiA+ICtF RklBUEkNCj4gPiA+ICtVbml0VGVzdEhvc3RCYXNlTGliQXNtUmVhZEdzICgNCj4gPiA+ICsgIFZP SUQNCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArICByZXR1cm4NCj4gPg0KPiBtVW5pdFRl c3RIb3N0QmFzZUxpYlNlZ21lbnRbVU5JVF9URVNUX0hPU1RfQkFTRV9MSUJfU0VHTQ0KPiA+IEVO VF9HU107DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgUmVhZHMgdGhl IGN1cnJlbnQgdmFsdWUgb2YgU3RhY2sgU2VnbWVudCBSZWdpc3Rlcg0KPiA+IChTUykuDQo+ID4g PiArDQo+ID4gPiArICBSZWFkcyBhbmQgcmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiBTUy4g VGhpcw0KPiA+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIG9uDQo+ID4gPiArICBJQS0zMiBh bmQgeDY0Lg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHVybiBUaGUgY3VycmVudCB2YWx1ZSBvZiBT Uy4NCj4gPiA+ICsNCj4gPiA+ICsqKi8NCj4gPiA+ICtVSU5UMTYNCj4gPiA+ICtFRklBUEkNCj4g PiA+ICtVbml0VGVzdEhvc3RCYXNlTGliQXNtUmVhZFNzICgNCj4gPiA+ICsgIFZPSUQNCj4gPiA+ ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArICByZXR1cm4NCj4gPg0KPiBtVW5pdFRlc3RIb3N0QmFz ZUxpYlNlZ21lbnRbVU5JVF9URVNUX0hPU1RfQkFTRV9MSUJfU0VHTQ0KPiA+IEVOVF9TU107DQo+ ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgUmVhZHMgdGhlIGN1cnJlbnQg dmFsdWUgb2YgVGFzayBSZWdpc3RlciAoVFIpLg0KPiA+ID4gKw0KPiA+ID4gKyAgUmVhZHMgYW5k IHJldHVybnMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgVFIuIFRoaXMNCj4gPiBmdW5jdGlvbiBpcyBv bmx5IGF2YWlsYWJsZSBvbg0KPiA+ID4gKyAgSUEtMzIgYW5kIHg2NC4NCj4gPiA+ICsNCj4gPiA+ ICsgIEByZXR1cm4gVGhlIGN1cnJlbnQgdmFsdWUgb2YgVFIuDQo+ID4gPiArDQo+ID4gPiArKiov DQo+ID4gPiArVUlOVDE2DQo+ID4gPiArRUZJQVBJDQo+ID4gPiArVW5pdFRlc3RIb3N0QmFzZUxp YkFzbVJlYWRUciAoDQo+ID4gPiArICBWT0lEDQo+ID4gPiArICApDQo+ID4gPiArew0KPiA+ID4g KyAgcmV0dXJuDQo+ID4NCj4gbVVuaXRUZXN0SG9zdEJhc2VMaWJTZWdtZW50W1VOSVRfVEVTVF9I T1NUX0JBU0VfTElCX1NFR00NCj4gPiBFTlRfVFJdOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ ICsvKioNCj4gPiA+ICsgIFJlYWRzIHRoZSBjdXJyZW50IEdsb2JhbCBEZXNjcmlwdG9yIFRhYmxl DQo+ID4gUmVnaXN0ZXIoR0RUUikgZGVzY3JpcHRvci4NCj4gPiA+ICsNCj4gPiA+ICsgIFJlYWRz IGFuZCByZXR1cm5zIHRoZSBjdXJyZW50IEdEVFIgZGVzY3JpcHRvciBhbmQNCj4gPiByZXR1cm5z IGl0IGluIEdkdHIuIFRoaXMNCj4gPiA+ICsgIGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIG9u IElBLTMyIGFuZCB4NjQuDQo+ID4gPiArDQo+ID4gPiArICBJZiBHZHRyIGlzIE5VTEwsIHRoZW4g QVNTRVJUKCkuDQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW0gIEdkdHIgIFRoZSBwb2ludGVyIHRv IGEgR0RUUiBkZXNjcmlwdG9yLg0KPiA+ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4gK1ZPSUQNCj4g PiA+ICtFRklBUEkNCj4gPiA+ICtVbml0VGVzdEhvc3RCYXNlTGliQXNtUmVhZEdkdHIgKA0KPiA+ ID4gKyAgT1VUICAgICBJQTMyX0RFU0NSSVBUT1IgICAgICAgICAgICpHZHRyDQo+ID4gPiArICAp DQo+ID4gPiArew0KPiA+ID4gKyAgR2R0ciA9ICZtVW5pdFRlc3RIb3N0QmFzZUxpYkdkdHI7DQo+ ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgV3JpdGVzIHRoZSBjdXJyZW50 IEdsb2JhbCBEZXNjcmlwdG9yIFRhYmxlDQo+IFJlZ2lzdGVyDQo+ID4gKEdEVFIpIGRlc2NyaXB0 b3IuDQo+ID4gPiArDQo+ID4gPiArICBXcml0ZXMgYW5kIHRoZSBjdXJyZW50IEdEVFIgZGVzY3Jp cHRvciBzcGVjaWZpZWQNCj4gYnkNCj4gPiBHZHRyLiBUaGlzIGZ1bmN0aW9uIGlzDQo+ID4gPiAr ICBvbmx5IGF2YWlsYWJsZSBvbiBJQS0zMiBhbmQgeDY0Lg0KPiA+ID4gKw0KPiA+ID4gKyAgSWYg R2R0ciBpcyBOVUxMLCB0aGVuIEFTU0VSVCgpLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtICBH ZHRyICBUaGUgcG9pbnRlciB0byBhIEdEVFIgZGVzY3JpcHRvci4NCj4gPiA+ICsNCj4gPiA+ICsq Ki8NCj4gPiA+ICtWT0lEDQo+ID4gPiArRUZJQVBJDQo+ID4gPiArVW5pdFRlc3RIb3N0QmFzZUxp YkFzbVdyaXRlR2R0ciAoDQo+ID4gPiArICBJTiAgICAgIENPTlNUIElBMzJfREVTQ1JJUFRPUiAg ICAgKkdkdHINCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArICBDb3B5TWVtICgmbVVuaXRU ZXN0SG9zdEJhc2VMaWJHZHRyLCBHZHRyLCBzaXplb2YNCj4gPiAoSUEzMl9ERVNDUklQVE9SKSk7 DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgUmVhZHMgdGhlIGN1cnJl bnQgSW50ZXJydXB0IERlc2NyaXB0b3IgVGFibGUNCj4gPiBSZWdpc3RlcihJRFRSKSBkZXNjcmlw dG9yLg0KPiA+ID4gKw0KPiA+ID4gKyAgUmVhZHMgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgSURU UiBkZXNjcmlwdG9yIGFuZA0KPiA+IHJldHVybnMgaXQgaW4gSWR0ci4gVGhpcw0KPiA+ID4gKyAg ZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgb24gSUEtMzIgYW5kIHg2NC4NCj4gPiA+ICsNCj4g PiA+ICsgIElmIElkdHIgaXMgTlVMTCwgdGhlbiBBU1NFUlQoKS4NCj4gPiA+ICsNCj4gPiA+ICsg IEBwYXJhbSAgSWR0ciAgVGhlIHBvaW50ZXIgdG8gYSBJRFRSIGRlc2NyaXB0b3IuDQo+ID4gPiAr DQo+ID4gPiArKiovDQo+ID4gPiArVk9JRA0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4gK1VuaXRUZXN0 SG9zdEJhc2VMaWJBc21SZWFkSWR0ciAoDQo+ID4gPiArICBPVVQgICAgIElBMzJfREVTQ1JJUFRP UiAgICAgICAgICAgKklkdHINCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArICBJZHRyID0g Jm1Vbml0VGVzdEhvc3RCYXNlTGliSWR0cjsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoq DQo+ID4gPiArICBXcml0ZXMgdGhlIGN1cnJlbnQgSW50ZXJydXB0IERlc2NyaXB0b3IgVGFibGUN Cj4gPiBSZWdpc3RlcihJRFRSKSBkZXNjcmlwdG9yLg0KPiA+ID4gKw0KPiA+ID4gKyAgV3JpdGVz IHRoZSBjdXJyZW50IElEVFIgZGVzY3JpcHRvciBhbmQgcmV0dXJucyBpdA0KPiA+IGluIElkdHIu IFRoaXMgZnVuY3Rpb24gaXMNCj4gPiA+ICsgIG9ubHkgYXZhaWxhYmxlIG9uIElBLTMyIGFuZCB4 NjQuDQo+ID4gPiArDQo+ID4gPiArICBJZiBJZHRyIGlzIE5VTEwsIHRoZW4gQVNTRVJUKCkuDQo+ ID4gPiArDQo+ID4gPiArICBAcGFyYW0gIElkdHIgIFRoZSBwb2ludGVyIHRvIGEgSURUUiBkZXNj cmlwdG9yLg0KPiA+ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4gK1ZPSUQNCj4gPiA+ICtFRklBUEkN Cj4gPiA+ICtVbml0VGVzdEhvc3RCYXNlTGliQXNtV3JpdGVJZHRyICgNCj4gPiA+ICsgIElOICAg ICAgQ09OU1QgSUEzMl9ERVNDUklQVE9SICAgICAqSWR0cg0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sN Cj4gPiA+ICsgIENvcHlNZW0gKCZtVW5pdFRlc3RIb3N0QmFzZUxpYklkdHIsIElkdHIsIHNpemVv Zg0KPiA+IChJQTMyX0RFU0NSSVBUT1IpKTsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoq DQo+ID4gPiArICBSZWFkcyB0aGUgY3VycmVudCBMb2NhbCBEZXNjcmlwdG9yIFRhYmxlDQo+ID4g UmVnaXN0ZXIoTERUUikgc2VsZWN0b3IuDQo+ID4gPiArDQo+ID4gPiArICBSZWFkcyBhbmQgcmV0 dXJucyB0aGUgY3VycmVudCAxNi1iaXQgTERUUg0KPiA+IGRlc2NyaXB0b3IgdmFsdWUuIFRoaXMg ZnVuY3Rpb24gaXMNCj4gPiA+ICsgIG9ubHkgYXZhaWxhYmxlIG9uIElBLTMyIGFuZCB4NjQuDQo+ ID4gPiArDQo+ID4gPiArICBAcmV0dXJuIFRoZSBjdXJyZW50IHNlbGVjdG9yIG9mIExEVC4NCj4g PiA+ICsNCj4gPiA+ICsqKi8NCj4gPiA+ICtVSU5UMTYNCj4gPiA+ICtFRklBUEkNCj4gPiA+ICtV bml0VGVzdEhvc3RCYXNlTGliQXNtUmVhZExkdHIgKA0KPiA+ID4gKyAgVk9JRA0KPiA+ID4gKyAg KQ0KPiA+ID4gK3sNCj4gPiA+ICsgIHJldHVybg0KPiA+DQo+IG1Vbml0VGVzdEhvc3RCYXNlTGli U2VnbWVudFtVTklUX1RFU1RfSE9TVF9CQVNFX0xJQl9TRUdNDQo+ID4gRU5UX0xEVFJdOw0KPiA+ ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIFdyaXRlcyB0aGUgY3VycmVudCBM b2NhbCBEZXNjcmlwdG9yIFRhYmxlDQo+IFJlZ2lzdGVyDQo+ID4gKExEVFIpIHNlbGVjdG9yLg0K PiA+ID4gKw0KPiA+ID4gKyAgV3JpdGVzIGFuZCB0aGUgY3VycmVudCBMRFRSIGRlc2NyaXB0b3Ig c3BlY2lmaWVkDQo+IGJ5DQo+ID4gTGR0ci4gVGhpcyBmdW5jdGlvbiBpcw0KPiA+ID4gKyAgb25s eSBhdmFpbGFibGUgb24gSUEtMzIgYW5kIHg2NC4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbSAg TGR0ciAgMTYtYml0IExEVFIgc2VsZWN0b3IgdmFsdWUuDQo+ID4gPiArDQo+ID4gPiArKiovDQo+ ID4gPiArVk9JRA0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4gK1VuaXRUZXN0SG9zdEJhc2VMaWJBc21X cml0ZUxkdHIgKA0KPiA+ID4gKyAgSU4gICAgICBVSU5UMTYgICAgICAgICAgICAgICAgICAgIExk dHINCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArDQo+ID4NCj4gbVVuaXRUZXN0SG9zdEJh c2VMaWJTZWdtZW50W1VOSVRfVEVTVF9IT1NUX0JBU0VfTElCX1NFR00NCj4gPiBFTlRfTERUUl0g PSBMZHRyOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIFJlYWRzIHRo ZSBjdXJyZW50IHZhbHVlIG9mIGEgUGVyZm9ybWFuY2UgQ291bnRlcg0KPiA+IChQTUMpLg0KPiA+ ID4gKw0KPiA+ID4gKyAgUmVhZHMgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgdmFsdWUgb2YNCj4g cGVyZm9ybWFuY2UNCj4gPiBjb3VudGVyIHNwZWNpZmllZCBieQ0KPiA+ID4gKyAgSW5kZXguIFRo aXMgZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgb24gSUEtMzINCj4gYW5kDQo+ID4geDY0Lg0K PiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtICBJbmRleCBUaGUgMzItYml0IFBlcmZvcm1hbmNlIENv dW50ZXINCj4gaW5kZXgNCj4gPiB0byByZWFkLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHVybiBU aGUgdmFsdWUgb2YgdGhlIFBNQyBzcGVjaWZpZWQgYnkgSW5kZXguDQo+ID4gPiArDQo+ID4gPiAr KiovDQo+ID4gPiArVUlOVDY0DQo+ID4gPiArRUZJQVBJDQo+ID4gPiArVW5pdFRlc3RIb3N0QmFz ZUxpYkFzbVJlYWRQbWMgKA0KPiA+ID4gKyAgSU4gICAgICBVSU5UMzIgICAgICAgICAgICAgICAg ICAgIEluZGV4DQo+ID4gPiArICApDQo+ID4gPiArew0KPiA+ID4gKyAgcmV0dXJuIDA7DQo+ID4g PiArfQ0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgU2V0cyB1cCBhIG1vbml0b3IgYnVm ZmVyIHRoYXQgaXMgdXNlZCBieQ0KPiA+IEFzbU13YWl0KCkuDQo+ID4gPiArDQo+ID4gPiArICBF eGVjdXRlcyBhIE1PTklUT1IgaW5zdHJ1Y3Rpb24gd2l0aCB0aGUgcmVnaXN0ZXINCj4gPiBzdGF0 ZSBzcGVjaWZpZWQgYnkgRWF4LCBFY3gNCj4gPiA+ICsgIGFuZCBFZHguIFJldHVybnMgRWF4LiBU aGlzIGZ1bmN0aW9uIGlzIG9ubHkNCj4gPiBhdmFpbGFibGUgb24gSUEtMzIgYW5kIHg2NC4NCj4g PiA+ICsNCj4gPiA+ICsgIEBwYXJhbSAgRWF4IFRoZSB2YWx1ZSB0byBsb2FkIGludG8gRUFYIG9y IFJBWA0KPiA+IGJlZm9yZSBleGVjdXRpbmcgdGhlIE1PTklUT1INCj4gPiA+ICsgICAgICAgICAg ICAgIGluc3RydWN0aW9uLg0KPiA+ID4gKyAgQHBhcmFtICBFY3ggVGhlIHZhbHVlIHRvIGxvYWQg aW50byBFQ1ggb3IgUkNYDQo+ID4gYmVmb3JlIGV4ZWN1dGluZyB0aGUgTU9OSVRPUg0KPiA+ID4g KyAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb24uDQo+ID4gPiArICBAcGFyYW0gIEVkeCBUaGUgdmFs dWUgdG8gbG9hZCBpbnRvIEVEWCBvciBSRFgNCj4gPiBiZWZvcmUgZXhlY3V0aW5nIHRoZSBNT05J VE9SDQo+ID4gPiArICAgICAgICAgICAgICBpbnN0cnVjdGlvbi4NCj4gPiA+ICsNCj4gPiA+ICsg IEByZXR1cm4gRWF4DQo+ID4gPiArDQo+ID4gPiArKiovDQo+ID4gPiArVUlOVE4NCj4gPiA+ICtF RklBUEkNCj4gPiA+ICtVbml0VGVzdEhvc3RCYXNlTGliQXNtTW9uaXRvciAoDQo+ID4gPiArICBJ TiAgICAgIFVJTlROICAgICAgICAgICAgICAgICAgICAgRWF4LA0KPiA+ID4gKyAgSU4gICAgICBV SU5UTiAgICAgICAgICAgICAgICAgICAgIEVjeCwNCj4gPiA+ICsgIElOICAgICAgVUlOVE4gICAg ICAgICAgICAgICAgICAgICBFZHgNCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArICByZXR1 cm4gRWF4Ow0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIEV4ZWN1dGVz IGFuIE1XQUlUIGluc3RydWN0aW9uLg0KPiA+ID4gKw0KPiA+ID4gKyAgRXhlY3V0ZXMgYW4gTVdB SVQgaW5zdHJ1Y3Rpb24gd2l0aCB0aGUgcmVnaXN0ZXINCj4gPiBzdGF0ZSBzcGVjaWZpZWQgYnkg RWF4IGFuZA0KPiA+ID4gKyAgRWN4LiBSZXR1cm5zIEVheC4gVGhpcyBmdW5jdGlvbiBpcyBvbmx5 IGF2YWlsYWJsZQ0KPiA+IG9uIElBLTMyIGFuZCB4NjQuDQo+ID4gPiArDQo+ID4gPiArICBAcGFy YW0gIEVheCBUaGUgdmFsdWUgdG8gbG9hZCBpbnRvIEVBWCBvciBSQVgNCj4gPiBiZWZvcmUgZXhl Y3V0aW5nIHRoZSBNT05JVE9SDQo+ID4gPiArICAgICAgICAgICAgICBpbnN0cnVjdGlvbi4NCj4g PiA+ICsgIEBwYXJhbSAgRWN4IFRoZSB2YWx1ZSB0byBsb2FkIGludG8gRUNYIG9yIFJDWA0KPiA+ IGJlZm9yZSBleGVjdXRpbmcgdGhlIE1PTklUT1INCj4gPiA+ICsgICAgICAgICAgICAgIGluc3Ry dWN0aW9uLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHVybiBFYXgNCj4gPiA+ICsNCj4gPiA+ICsq Ki8NCj4gPiA+ICtVSU5UTg0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4gK1VuaXRUZXN0SG9zdEJhc2VM aWJBc21Nd2FpdCAoDQo+ID4gPiArICBJTiAgICAgIFVJTlROICAgICAgICAgICAgICAgICAgICAg RWF4LA0KPiA+ID4gKyAgSU4gICAgICBVSU5UTiAgICAgICAgICAgICAgICAgICAgIEVjeA0KPiA+ ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIHJldHVybiBFYXg7DQo+ID4gPiArfQ0KPiA+ID4g Kw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgRXhlY3V0ZXMgYSBXQklOVkQgaW5zdHJ1Y3Rpb24uDQo+ ID4gPiArDQo+ID4gPiArICBFeGVjdXRlcyBhIFdCSU5WRCBpbnN0cnVjdGlvbi4gVGhpcyBmdW5j dGlvbiBpcw0KPiA+IG9ubHkgYXZhaWxhYmxlIG9uIElBLTMyIGFuZA0KPiA+ID4gKyAgeDY0Lg0K PiA+ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4gK1ZPSUQNCj4gPiA+ICtFRklBUEkNCj4gPiA+ICtV bml0VGVzdEhvc3RCYXNlTGliQXNtV2JpbnZkICgNCj4gPiA+ICsgIFZPSUQNCj4gPiA+ICsgICkN Cj4gPiA+ICt7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgRXhlY3V0 ZXMgYSBJTlZEIGluc3RydWN0aW9uLg0KPiA+ID4gKw0KPiA+ID4gKyAgRXhlY3V0ZXMgYSBJTlZE IGluc3RydWN0aW9uLiBUaGlzIGZ1bmN0aW9uIGlzDQo+IG9ubHkNCj4gPiBhdmFpbGFibGUgb24g SUEtMzIgYW5kDQo+ID4gPiArICB4NjQuDQo+ID4gPiArDQo+ID4gPiArKiovDQo+ID4gPiArVk9J RA0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4gK1VuaXRUZXN0SG9zdEJhc2VMaWJBc21JbnZkICgNCj4g PiA+ICsgIFZPSUQNCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ ID4gKy8qKg0KPiA+ID4gKyAgRmx1c2hlcyBhIGNhY2hlIGxpbmUgZnJvbSBhbGwgdGhlIGluc3Ry dWN0aW9uIGFuZA0KPiA+IGRhdGEgY2FjaGVzIHdpdGhpbiB0aGUNCj4gPiA+ICsgIGNvaGVyZW5j eSBkb21haW4gb2YgdGhlIENQVS4NCj4gPiA+ICsNCj4gPiA+ICsgIEZsdXNoZWQgdGhlIGNhY2hl IGxpbmUgc3BlY2lmaWVkIGJ5DQo+IExpbmVhckFkZHJlc3MsDQo+ID4gYW5kIHJldHVybnMgTGlu ZWFyQWRkcmVzcy4NCj4gPiA+ICsgIFRoaXMgZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgb24g SUEtMzIgYW5kIHg2NC4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbSAgTGluZWFyQWRkcmVzcyBU aGUgYWRkcmVzcyBvZiB0aGUgY2FjaGUNCj4gbGluZQ0KPiA+IHRvIGZsdXNoLiBJZiB0aGUgQ1BV IGlzDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgaW4gYSBwaHlzaWNhbCBhZGRyZXNz aW5nDQo+ID4gbW9kZSwgdGhlbiBMaW5lYXJBZGRyZXNzIGlzIGENCj4gPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICBwaHlzaWNhbCBhZGRyZXNzLiBJZiB0aGUNCj4gQ1BVDQo+ID4gaXMgaW4g YSB2aXJ0dWFsDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzc2luZyBtb2Rl LCB0aGVuDQo+ID4gTGluZWFyQWRkcmVzcyBpcyBhIHZpcnR1YWwNCj4gPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICBhZGRyZXNzLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHVybiBMaW5lYXJB ZGRyZXNzLg0KPiA+ID4gKyoqLw0KPiA+ID4gK1ZPSUQgKg0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4g K1VuaXRUZXN0SG9zdEJhc2VMaWJBc21GbHVzaENhY2hlTGluZSAoDQo+ID4gPiArICBJTiAgICAg IFZPSUQgICAgICAgICAgICAgICAgICAgICAgKkxpbmVhckFkZHJlc3MNCj4gPiA+ICsgICkNCj4g PiA+ICt7DQo+ID4gPiArICByZXR1cm4gTGluZWFyQWRkcmVzczsNCj4gPiA+ICt9DQo+ID4gPiAr DQo+ID4gPiArLyoqDQo+ID4gPiArICBFbmFibGVzIHRoZSAzMi1iaXQgcGFnaW5nIG1vZGUgb24g dGhlIENQVS4NCj4gPiA+ICsNCj4gPiA+ICsgIEVuYWJsZXMgdGhlIDMyLWJpdCBwYWdpbmcgbW9k ZSBvbiB0aGUgQ1BVLiBDUjAsDQo+ID4gQ1IzLCBDUjQsIGFuZCB0aGUgcGFnZSB0YWJsZXMNCj4g PiA+ICsgIG11c3QgYmUgcHJvcGVybHkgaW5pdGlhbGl6ZWQgcHJpb3IgdG8gY2FsbGluZw0KPiB0 aGlzDQo+ID4gc2VydmljZS4gVGhpcyBmdW5jdGlvbg0KPiA+ID4gKyAgYXNzdW1lcyB0aGUgY3Vy cmVudCBleGVjdXRpb24gbW9kZSBpcyAzMi1iaXQNCj4gPiBwcm90ZWN0ZWQgbW9kZS4gVGhpcyBm dW5jdGlvbiBpcw0KPiA+ID4gKyAgb25seSBhdmFpbGFibGUgb24gSUEtMzIuIEFmdGVyIHRoZSAz Mi1iaXQgcGFnaW5nDQo+ID4gbW9kZSBpcyBlbmFibGVkLCBjb250cm9sIGlzDQo+ID4gPiArICB0 cmFuc2ZlcnJlZCB0byB0aGUgZnVuY3Rpb24gc3BlY2lmaWVkIGJ5DQo+IEVudHJ5UG9pbnQNCj4g PiB1c2luZyB0aGUgbmV3IHN0YWNrDQo+ID4gPiArICBzcGVjaWZpZWQgYnkgTmV3U3RhY2sgYW5k IHBhc3NpbmcgaW4gdGhlDQo+IHBhcmFtZXRlcnMNCj4gPiBzcGVjaWZpZWQgYnkgQ29udGV4dDEg YW5kDQo+ID4gPiArICBDb250ZXh0Mi4gQ29udGV4dDEgYW5kIENvbnRleHQyIGFyZSBvcHRpb25h bCBhbmQNCj4gPiBtYXkgYmUgTlVMTC4gVGhlIGZ1bmN0aW9uDQo+ID4gPiArICBFbnRyeVBvaW50 IG11c3QgbmV2ZXIgcmV0dXJuLg0KPiA+ID4gKw0KPiA+ID4gKyAgSWYgdGhlIGN1cnJlbnQgZXhl Y3V0aW9uIG1vZGUgaXMgbm90IDMyLWJpdA0KPiA+IHByb3RlY3RlZCBtb2RlLCB0aGVuIEFTU0VS VCgpLg0KPiA+ID4gKyAgSWYgRW50cnlQb2ludCBpcyBOVUxMLCB0aGVuIEFTU0VSVCgpLg0KPiA+ ID4gKyAgSWYgTmV3U3RhY2sgaXMgTlVMTCwgdGhlbiBBU1NFUlQoKS4NCj4gPiA+ICsNCj4gPiA+ ICsgIFRoZXJlIGFyZSBhIG51bWJlciBvZiBjb25zdHJhaW50cyB0aGF0IG11c3QgYmUNCj4gPiBm b2xsb3dlZCBiZWZvcmUgY2FsbGluZyB0aGlzDQo+ID4gPiArICBmdW5jdGlvbjoNCj4gPiA+ICsg IDEpICBJbnRlcnJ1cHRzIG11c3QgYmUgZGlzYWJsZWQuDQo+ID4gPiArICAyKSAgVGhlIGNhbGxl ciBtdXN0IGJlIGluIDMyLWJpdCBwcm90ZWN0ZWQgbW9kZQ0KPiA+IHdpdGggZmxhdCBkZXNjcmlw dG9ycy4gVGhpcw0KPiA+ID4gKyAgICAgIG1lYW5zIGFsbCBkZXNjcmlwdG9ycyBtdXN0IGhhdmUg YSBiYXNlIG9mIDANCj4gYW5kDQo+ID4gYSBsaW1pdCBvZiA0R0IuDQo+ID4gPiArICAzKSAgQ1Iw IGFuZCBDUjQgbXVzdCBiZSBjb21wYXRpYmxlIHdpdGggMzItYml0DQo+ID4gcHJvdGVjdGVkIG1v ZGUgd2l0aCBmbGF0DQo+ID4gPiArICAgICAgZGVzY3JpcHRvcnMuDQo+ID4gPiArICA0KSAgQ1Iz IG11c3QgcG9pbnQgdG8gdmFsaWQgcGFnZSB0YWJsZXMgdGhhdCB3aWxsDQo+ID4gYmUgdXNlZCBv bmNlIHRoZSB0cmFuc2l0aW9uDQo+ID4gPiArICAgICAgaXMgY29tcGxldGUsIGFuZCB0aG9zZSBw YWdlIHRhYmxlcyBtdXN0DQo+ID4gZ3VhcmFudGVlIHRoYXQgdGhlIHBhZ2VzIGZvciB0aGlzDQo+ ID4gPiArICAgICAgZnVuY3Rpb24gYW5kIHRoZSBzdGFjayBhcmUgaWRlbnRpdHkgbWFwcGVkLg0K PiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtICBFbnRyeVBvaW50ICBBIHBvaW50ZXIgdG8gZnVuY3Rp b24gdG8gY2FsbA0KPiA+IHdpdGggdGhlIG5ldyBzdGFjayBhZnRlcg0KPiA+ID4gKyAgICAgICAg ICAgICAgICAgICAgICBwYWdpbmcgaXMgZW5hYmxlZC4NCj4gPiA+ICsgIEBwYXJhbSAgQ29udGV4 dDEgICAgQSBwb2ludGVyIHRvIHRoZSBjb250ZXh0IHRvDQo+ID4gcGFzcyBpbnRvIHRoZSBFbnRy eVBvaW50DQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGFzIHRoZSBmaXJz dA0KPiBwYXJhbWV0ZXINCj4gPiBhZnRlciBwYWdpbmcgaXMgZW5hYmxlZC4NCj4gPiA+ICsgIEBw YXJhbSAgQ29udGV4dDIgICAgQSBwb2ludGVyIHRvIHRoZSBjb250ZXh0IHRvDQo+ID4gcGFzcyBp bnRvIHRoZSBFbnRyeVBvaW50DQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9u IGFzIHRoZSBzZWNvbmQNCj4gPiBwYXJhbWV0ZXIgYWZ0ZXIgcGFnaW5nIGlzIGVuYWJsZWQuDQo+ ID4gPiArICBAcGFyYW0gIE5ld1N0YWNrICAgIEEgcG9pbnRlciB0byB0aGUgbmV3IHN0YWNrIHRv DQo+ID4gdXNlIGZvciB0aGUgRW50cnlQb2ludA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAg ICBmdW5jdGlvbiBhZnRlciBwYWdpbmcgaXMNCj4gPiBlbmFibGVkLg0KPiA+ID4gKw0KPiA+ID4g KyoqLw0KPiA+ID4gK1ZPSUQNCj4gPiA+ICtFRklBUEkNCj4gPiA+ICtVbml0VGVzdEhvc3RCYXNl TGliQXNtRW5hYmxlUGFnaW5nMzIgKA0KPiA+ID4gKyAgSU4gICAgICBTV0lUQ0hfU1RBQ0tfRU5U UllfUE9JTlQgIEVudHJ5UG9pbnQsDQo+ID4gPiArICBJTiAgICAgIFZPSUQgICAgICAgICAgICAg ICAgICAgICAgKkNvbnRleHQxLA0KPiA+IE9QVElPTkFMDQo+ID4gPiArICBJTiAgICAgIFZPSUQg ICAgICAgICAgICAgICAgICAgICAgKkNvbnRleHQyLA0KPiA+IE9QVElPTkFMDQo+ID4gPiArICBJ TiAgICAgIFZPSUQgICAgICAgICAgICAgICAgICAgICAgKk5ld1N0YWNrDQo+ID4gPiArICApDQo+ ID4gPiArew0KPiA+ID4gKyAgRW50cnlQb2ludCAoQ29udGV4dDEsIENvbnRleHQyKTsNCj4gPiA+ ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBEaXNhYmxlcyB0aGUgMzItYml0IHBh Z2luZyBtb2RlIG9uIHRoZSBDUFUuDQo+ID4gPiArDQo+ID4gPiArICBEaXNhYmxlcyB0aGUgMzIt Yml0IHBhZ2luZyBtb2RlIG9uIHRoZSBDUFUgYW5kDQo+ID4gcmV0dXJucyB0byAzMi1iaXQgcHJv dGVjdGVkDQo+ID4gPiArICBtb2RlLiBUaGlzIGZ1bmN0aW9uIGFzc3VtZXMgdGhlIGN1cnJlbnQg ZXhlY3V0aW9uDQo+ID4gbW9kZSBpcyAzMi1wYWdlZCBwcm90ZWN0ZWQNCj4gPiA+ICsgIG1vZGUu IFRoaXMgZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgb24gSUEtMzIuDQo+ID4gQWZ0ZXIgdGhl IDMyLWJpdCBwYWdpbmcgbW9kZQ0KPiA+ID4gKyAgaXMgZGlzYWJsZWQsIGNvbnRyb2wgaXMgdHJh bnNmZXJyZWQgdG8gdGhlDQo+IGZ1bmN0aW9uDQo+ID4gc3BlY2lmaWVkIGJ5IEVudHJ5UG9pbnQN Cj4gPiA+ICsgIHVzaW5nIHRoZSBuZXcgc3RhY2sgc3BlY2lmaWVkIGJ5IE5ld1N0YWNrIGFuZA0K PiA+IHBhc3NpbmcgaW4gdGhlIHBhcmFtZXRlcnMNCj4gPiA+ICsgIHNwZWNpZmllZCBieSBDb250 ZXh0MSBhbmQgQ29udGV4dDIuIENvbnRleHQxIGFuZA0KPiA+IENvbnRleHQyIGFyZSBvcHRpb25h bCBhbmQNCj4gPiA+ICsgIG1heSBiZSBOVUxMLiBUaGUgZnVuY3Rpb24gRW50cnlQb2ludCBtdXN0 IG5ldmVyDQo+ID4gcmV0dXJuLg0KPiA+ID4gKw0KPiA+ID4gKyAgSWYgdGhlIGN1cnJlbnQgZXhl Y3V0aW9uIG1vZGUgaXMgbm90IDMyLWJpdCBwYWdlZA0KPiA+IG1vZGUsIHRoZW4gQVNTRVJUKCku DQo+ID4gPiArICBJZiBFbnRyeVBvaW50IGlzIE5VTEwsIHRoZW4gQVNTRVJUKCkuDQo+ID4gPiAr ICBJZiBOZXdTdGFjayBpcyBOVUxMLCB0aGVuIEFTU0VSVCgpLg0KPiA+ID4gKw0KPiA+ID4gKyAg VGhlcmUgYXJlIGEgbnVtYmVyIG9mIGNvbnN0cmFpbnRzIHRoYXQgbXVzdCBiZQ0KPiA+IGZvbGxv d2VkIGJlZm9yZSBjYWxsaW5nIHRoaXMNCj4gPiA+ICsgIGZ1bmN0aW9uOg0KPiA+ID4gKyAgMSkg IEludGVycnVwdHMgbXVzdCBiZSBkaXNhYmxlZC4NCj4gPiA+ICsgIDIpICBUaGUgY2FsbGVyIG11 c3QgYmUgaW4gMzItYml0IHBhZ2VkIG1vZGUuDQo+ID4gPiArICAzKSAgQ1IwLCBDUjMsIGFuZCBD UjQgbXVzdCBiZSBjb21wYXRpYmxlIHdpdGggMzItDQo+ID4gYml0IHBhZ2VkIG1vZGUuDQo+ID4g PiArICA0KSAgQ1IzIG11c3QgcG9pbnQgdG8gdmFsaWQgcGFnZSB0YWJsZXMgdGhhdA0KPiA+IGd1 YXJhbnRlZSB0aGF0IHRoZSBwYWdlcyBmb3INCj4gPiA+ICsgICAgICB0aGlzIGZ1bmN0aW9uIGFu ZCB0aGUgc3RhY2sgYXJlIGlkZW50aXR5DQo+ID4gbWFwcGVkLg0KPiA+ID4gKw0KPiA+ID4gKyAg QHBhcmFtICBFbnRyeVBvaW50ICBBIHBvaW50ZXIgdG8gZnVuY3Rpb24gdG8gY2FsbA0KPiA+IHdp dGggdGhlIG5ldyBzdGFjayBhZnRlcg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICBwYWdp bmcgaXMgZGlzYWJsZWQuDQo+ID4gPiArICBAcGFyYW0gIENvbnRleHQxICAgIEEgcG9pbnRlciB0 byB0aGUgY29udGV4dCB0bw0KPiA+IHBhc3MgaW50byB0aGUgRW50cnlQb2ludA0KPiA+ID4gKyAg ICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBhcyB0aGUgZmlyc3QNCj4gcGFyYW1ldGVyDQo+ ID4gYWZ0ZXIgcGFnaW5nIGlzIGRpc2FibGVkLg0KPiA+ID4gKyAgQHBhcmFtICBDb250ZXh0MiAg ICBBIHBvaW50ZXIgdG8gdGhlIGNvbnRleHQgdG8NCj4gPiBwYXNzIGludG8gdGhlIEVudHJ5UG9p bnQNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gYXMgdGhlIHNlY29uZA0K PiA+IHBhcmFtZXRlciBhZnRlciBwYWdpbmcgaXMNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgZGlzYWJsZWQuDQo+ID4gPiArICBAcGFyYW0gIE5ld1N0YWNrICAgIEEgcG9pbnRlciB0byB0 aGUgbmV3IHN0YWNrIHRvDQo+ID4gdXNlIGZvciB0aGUgRW50cnlQb2ludA0KPiA+ID4gKyAgICAg ICAgICAgICAgICAgICAgICBmdW5jdGlvbiBhZnRlciBwYWdpbmcgaXMNCj4gPiBkaXNhYmxlZC4N Cj4gPiA+ICsNCj4gPiA+ICsqKi8NCj4gPiA+ICtWT0lEDQo+ID4gPiArRUZJQVBJDQo+ID4gPiAr VW5pdFRlc3RIb3N0QmFzZUxpYkFzbURpc2FibGVQYWdpbmczMiAoDQo+ID4gPiArICBJTiAgICAg IFNXSVRDSF9TVEFDS19FTlRSWV9QT0lOVCAgRW50cnlQb2ludCwNCj4gPiA+ICsgIElOICAgICAg Vk9JRCAgICAgICAgICAgICAgICAgICAgICAqQ29udGV4dDEsDQo+ID4gT1BUSU9OQUwNCj4gPiA+ ICsgIElOICAgICAgVk9JRCAgICAgICAgICAgICAgICAgICAgICAqQ29udGV4dDIsDQo+ID4gT1BU SU9OQUwNCj4gPiA+ICsgIElOICAgICAgVk9JRCAgICAgICAgICAgICAgICAgICAgICAqTmV3U3Rh Y2sNCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArICBFbnRyeVBvaW50IChDb250ZXh0MSwg Q29udGV4dDIpOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIEVuYWJs ZXMgdGhlIDY0LWJpdCBwYWdpbmcgbW9kZSBvbiB0aGUgQ1BVLg0KPiA+ID4gKw0KPiA+ID4gKyAg RW5hYmxlcyB0aGUgNjQtYml0IHBhZ2luZyBtb2RlIG9uIHRoZSBDUFUuIENSMCwNCj4gPiBDUjMs IENSNCwgYW5kIHRoZSBwYWdlIHRhYmxlcw0KPiA+ID4gKyAgbXVzdCBiZSBwcm9wZXJseSBpbml0 aWFsaXplZCBwcmlvciB0byBjYWxsaW5nDQo+IHRoaXMNCj4gPiBzZXJ2aWNlLiBUaGlzIGZ1bmN0 aW9uDQo+ID4gPiArICBhc3N1bWVzIHRoZSBjdXJyZW50IGV4ZWN1dGlvbiBtb2RlIGlzIDMyLWJp dA0KPiA+IHByb3RlY3RlZCBtb2RlIHdpdGggZmxhdA0KPiA+ID4gKyAgZGVzY3JpcHRvcnMuIFRo aXMgZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgb24NCj4gSUEtDQo+ID4gMzIuIEFmdGVyIHRo ZSA2NC1iaXQNCj4gPiA+ICsgIHBhZ2luZyBtb2RlIGlzIGVuYWJsZWQsIGNvbnRyb2wgaXMgdHJh bnNmZXJyZWQgdG8NCj4gPiB0aGUgZnVuY3Rpb24gc3BlY2lmaWVkIGJ5DQo+ID4gPiArICBFbnRy eVBvaW50IHVzaW5nIHRoZSBuZXcgc3RhY2sgc3BlY2lmaWVkIGJ5DQo+ID4gTmV3U3RhY2sgYW5k IHBhc3NpbmcgaW4gdGhlDQo+ID4gPiArICBwYXJhbWV0ZXJzIHNwZWNpZmllZCBieSBDb250ZXh0 MSBhbmQgQ29udGV4dDIuDQo+ID4gQ29udGV4dDEgYW5kIENvbnRleHQyIGFyZQ0KPiA+ID4gKyAg b3B0aW9uYWwgYW5kIG1heSBiZSAwLiBUaGUgZnVuY3Rpb24gRW50cnlQb2ludA0KPiBtdXN0DQo+ ID4gbmV2ZXIgcmV0dXJuLg0KPiA+ID4gKw0KPiA+ID4gKyAgSWYgdGhlIGN1cnJlbnQgZXhlY3V0 aW9uIG1vZGUgaXMgbm90IDMyLWJpdA0KPiA+IHByb3RlY3RlZCBtb2RlIHdpdGggZmxhdA0KPiA+ ID4gKyAgZGVzY3JpcHRvcnMsIHRoZW4gQVNTRVJUKCkuDQo+ID4gPiArICBJZiBFbnRyeVBvaW50 IGlzIDAsIHRoZW4gQVNTRVJUKCkuDQo+ID4gPiArICBJZiBOZXdTdGFjayBpcyAwLCB0aGVuIEFT U0VSVCgpLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtICBDcyAgICAgICAgICBUaGUgMTYtYml0 IHNlbGVjdG9yIHRvIGxvYWQNCj4gaW4NCj4gPiB0aGUgQ1MgYmVmb3JlIEVudHJ5UG9pbnQNCj4g PiA+ICsgICAgICAgICAgICAgICAgICAgICAgaXMgY2FsbGVkLiBUaGUgZGVzY3JpcHRvciBpbg0K PiA+IHRoZSBHRFQgdGhhdCB0aGlzIHNlbGVjdG9yDQo+ID4gPiArICAgICAgICAgICAgICAgICAg ICAgIHJlZmVyZW5jZXMgbXVzdCBiZSBzZXR1cCBmb3INCj4gPiBsb25nIG1vZGUuDQo+ID4gPiAr ICBAcGFyYW0gIEVudHJ5UG9pbnQgIFRoZSA2NC1iaXQgdmlydHVhbCBhZGRyZXNzIG9mDQo+ID4g dGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2l0aA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICB0 aGUgbmV3IHN0YWNrIGFmdGVyIHBhZ2luZyBpcw0KPiA+IGVuYWJsZWQuDQo+ID4gPiArICBAcGFy YW0gIENvbnRleHQxICAgIFRoZSA2NC1iaXQgdmlydHVhbCBhZGRyZXNzIG9mDQo+ID4gdGhlIGNv bnRleHQgdG8gcGFzcyBpbnRvDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgIHRoZSBFbnRy eVBvaW50IGZ1bmN0aW9uIGFzDQo+IHRoZQ0KPiA+IGZpcnN0IHBhcmFtZXRlciBhZnRlcg0KPiA+ ID4gKyAgICAgICAgICAgICAgICAgICAgICBwYWdpbmcgaXMgZW5hYmxlZC4NCj4gPiA+ICsgIEBw YXJhbSAgQ29udGV4dDIgICAgVGhlIDY0LWJpdCB2aXJ0dWFsIGFkZHJlc3Mgb2YNCj4gPiB0aGUg Y29udGV4dCB0byBwYXNzIGludG8NCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgdGhlIEVu dHJ5UG9pbnQgZnVuY3Rpb24gYXMNCj4gdGhlDQo+ID4gc2Vjb25kIHBhcmFtZXRlciBhZnRlcg0K PiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICBwYWdpbmcgaXMgZW5hYmxlZC4NCj4gPiA+ICsg IEBwYXJhbSAgTmV3U3RhY2sgICAgVGhlIDY0LWJpdCB2aXJ0dWFsIGFkZHJlc3Mgb2YNCj4gPiB0 aGUgbmV3IHN0YWNrIHRvIHVzZSBmb3INCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgdGhl IEVudHJ5UG9pbnQgZnVuY3Rpb24gYWZ0ZXINCj4gPiBwYWdpbmcgaXMgZW5hYmxlZC4NCj4gPiA+ ICsNCj4gPiA+ICsqKi8NCj4gPiA+ICtWT0lEDQo+ID4gPiArRUZJQVBJDQo+ID4gPiArVW5pdFRl c3RIb3N0QmFzZUxpYkFzbUVuYWJsZVBhZ2luZzY0ICgNCj4gPiA+ICsgIElOICAgICAgVUlOVDE2 ICAgICAgICAgICAgICAgICAgICBDcywNCj4gPiA+ICsgIElOICAgICAgVUlOVDY0ICAgICAgICAg ICAgICAgICAgICBFbnRyeVBvaW50LA0KPiA+ID4gKyAgSU4gICAgICBVSU5UNjQgICAgICAgICAg ICAgICAgICAgIENvbnRleHQxLA0KPiA+IE9QVElPTkFMDQo+ID4gPiArICBJTiAgICAgIFVJTlQ2 NCAgICAgICAgICAgICAgICAgICAgQ29udGV4dDIsDQo+ID4gT1BUSU9OQUwNCj4gPiA+ICsgIElO ICAgICAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICBOZXdTdGFjaw0KPiA+ID4gKyAgKQ0KPiA+ ID4gK3sNCj4gPiA+ICsgIFNXSVRDSF9TVEFDS19FTlRSWV9QT0lOVCAgTmV3RW50cnlQb2ludDsN Cj4gPiA+ICsNCj4gPiA+ICsgIE5ld0VudHJ5UG9pbnQgPQ0KPiA+IChTV0lUQ0hfU1RBQ0tfRU5U UllfUE9JTlQpKFVJTlROKShFbnRyeVBvaW50KTsNCj4gPiA+ICsgIE5ld0VudHJ5UG9pbnQgKChW T0lEICopKFVJTlROKUNvbnRleHQxLCAoVk9JRA0KPiA+ICopKFVJTlROKUNvbnRleHQyKTsNCj4g PiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBEaXNhYmxlcyB0aGUgNjQtYml0 IHBhZ2luZyBtb2RlIG9uIHRoZSBDUFUuDQo+ID4gPiArDQo+ID4gPiArICBEaXNhYmxlcyB0aGUg NjQtYml0IHBhZ2luZyBtb2RlIG9uIHRoZSBDUFUgYW5kDQo+ID4gcmV0dXJucyB0byAzMi1iaXQg cHJvdGVjdGVkDQo+ID4gPiArICBtb2RlLiBUaGlzIGZ1bmN0aW9uIGFzc3VtZXMgdGhlIGN1cnJl bnQgZXhlY3V0aW9uDQo+ID4gbW9kZSBpcyA2NC1wYWdpbmcgbW9kZS4NCj4gPiA+ICsgIFRoaXMg ZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgb24geDY0LiBBZnRlciB0aGUNCj4gPiA2NC1iaXQg cGFnaW5nIG1vZGUgaXMNCj4gPiA+ICsgIGRpc2FibGVkLCBjb250cm9sIGlzIHRyYW5zZmVycmVk IHRvIHRoZSBmdW5jdGlvbg0KPiA+IHNwZWNpZmllZCBieSBFbnRyeVBvaW50DQo+ID4gPiArICB1 c2luZyB0aGUgbmV3IHN0YWNrIHNwZWNpZmllZCBieSBOZXdTdGFjayBhbmQNCj4gPiBwYXNzaW5n IGluIHRoZSBwYXJhbWV0ZXJzDQo+ID4gPiArICBzcGVjaWZpZWQgYnkgQ29udGV4dDEgYW5kIENv bnRleHQyLiBDb250ZXh0MSBhbmQNCj4gPiBDb250ZXh0MiBhcmUgb3B0aW9uYWwgYW5kDQo+ID4g PiArICBtYXkgYmUgMC4gVGhlIGZ1bmN0aW9uIEVudHJ5UG9pbnQgbXVzdCBuZXZlcg0KPiA+IHJl dHVybi4NCj4gPiA+ICsNCj4gPiA+ICsgIElmIHRoZSBjdXJyZW50IGV4ZWN1dGlvbiBtb2RlIGlz IG5vdCA2NC1iaXQgcGFnZWQNCj4gPiBtb2RlLCB0aGVuIEFTU0VSVCgpLg0KPiA+ID4gKyAgSWYg RW50cnlQb2ludCBpcyAwLCB0aGVuIEFTU0VSVCgpLg0KPiA+ID4gKyAgSWYgTmV3U3RhY2sgaXMg MCwgdGhlbiBBU1NFUlQoKS4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbSAgQ3MgICAgICAgICAg VGhlIDE2LWJpdCBzZWxlY3RvciB0byBsb2FkDQo+IGluDQo+ID4gdGhlIENTIGJlZm9yZSBFbnRy eVBvaW50DQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgIGlzIGNhbGxlZC4gVGhlIGRlc2Ny aXB0b3IgaW4NCj4gPiB0aGUgR0RUIHRoYXQgdGhpcyBzZWxlY3Rvcg0KPiA+ID4gKyAgICAgICAg ICAgICAgICAgICAgICByZWZlcmVuY2VzIG11c3QgYmUgc2V0dXAgZm9yDQo+ID4gMzItYml0IHBy b3RlY3RlZCBtb2RlLg0KPiA+ID4gKyAgQHBhcmFtICBFbnRyeVBvaW50ICBUaGUgNjQtYml0IHZp cnR1YWwgYWRkcmVzcyBvZg0KPiA+IHRoZSBmdW5jdGlvbiB0byBjYWxsIHdpdGgNCj4gPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgdGhlIG5ldyBzdGFjayBhZnRlciBwYWdpbmcgaXMNCj4gPiBk aXNhYmxlZC4NCj4gPiA+ICsgIEBwYXJhbSAgQ29udGV4dDEgICAgVGhlIDY0LWJpdCB2aXJ0dWFs IGFkZHJlc3Mgb2YNCj4gPiB0aGUgY29udGV4dCB0byBwYXNzIGludG8NCj4gPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgdGhlIEVudHJ5UG9pbnQgZnVuY3Rpb24gYXMNCj4gdGhlDQo+ID4gZmly c3QgcGFyYW1ldGVyIGFmdGVyDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgIHBhZ2luZyBp cyBkaXNhYmxlZC4NCj4gPiA+ICsgIEBwYXJhbSAgQ29udGV4dDIgICAgVGhlIDY0LWJpdCB2aXJ0 dWFsIGFkZHJlc3Mgb2YNCj4gPiB0aGUgY29udGV4dCB0byBwYXNzIGludG8NCj4gPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgdGhlIEVudHJ5UG9pbnQgZnVuY3Rpb24gYXMNCj4gdGhlDQo+ID4g c2Vjb25kIHBhcmFtZXRlciBhZnRlcg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICBwYWdp bmcgaXMgZGlzYWJsZWQuDQo+ID4gPiArICBAcGFyYW0gIE5ld1N0YWNrICAgIFRoZSA2NC1iaXQg dmlydHVhbCBhZGRyZXNzIG9mDQo+ID4gdGhlIG5ldyBzdGFjayB0byB1c2UgZm9yDQo+ID4gPiAr ICAgICAgICAgICAgICAgICAgICAgIHRoZSBFbnRyeVBvaW50IGZ1bmN0aW9uIGFmdGVyDQo+ID4g cGFnaW5nIGlzIGRpc2FibGVkLg0KPiA+ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4gK1ZPSUQNCj4g PiA+ICtFRklBUEkNCj4gPiA+ICtVbml0VGVzdEhvc3RCYXNlTGliQXNtRGlzYWJsZVBhZ2luZzY0 ICgNCj4gPiA+ICsgIElOICAgICAgVUlOVDE2ICAgICAgICAgICAgICAgICAgICBDcywNCj4gPiA+ ICsgIElOICAgICAgVUlOVDMyICAgICAgICAgICAgICAgICAgICBFbnRyeVBvaW50LA0KPiA+ID4g KyAgSU4gICAgICBVSU5UMzIgICAgICAgICAgICAgICAgICAgIENvbnRleHQxLA0KPiA+IE9QVElP TkFMDQo+ID4gPiArICBJTiAgICAgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgQ29udGV4dDIs DQo+ID4gT1BUSU9OQUwNCj4gPiA+ICsgIElOICAgICAgVUlOVDMyICAgICAgICAgICAgICAgICAg ICBOZXdTdGFjaw0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIFNXSVRDSF9TVEFDS19F TlRSWV9QT0lOVCAgTmV3RW50cnlQb2ludDsNCj4gPiA+ICsNCj4gPiA+ICsgIE5ld0VudHJ5UG9p bnQgPQ0KPiA+IChTV0lUQ0hfU1RBQ0tfRU5UUllfUE9JTlQpKFVJTlROKShFbnRyeVBvaW50KTsN Cj4gPiA+ICsgIE5ld0VudHJ5UG9pbnQgKChWT0lEICopKFVJTlROKUNvbnRleHQxLCAoVk9JRA0K PiA+ICopKFVJTlROKUNvbnRleHQyKTsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ ID4gPiArICBSZXRyaWV2ZXMgdGhlIHByb3BlcnRpZXMgZm9yIDE2LWJpdCB0aHVuaw0KPiA+IGZ1 bmN0aW9ucy4NCj4gPiA+ICsNCj4gPiA+ICsgIENvbXB1dGVzIHRoZSBzaXplIG9mIHRoZSBidWZm ZXIgYW5kIHN0YWNrIGJlbG93DQo+IDFNQg0KPiA+IHJlcXVpcmVkIHRvIHVzZSB0aGUNCj4gPiA+ ICsgIEFzbVByZXBhcmVUaHVuazE2KCksIEFzbVRodW5rMTYoKSBhbmQNCj4gPiBBc21QcmVwYXJl QW5kVGh1bmsxNigpIGZ1bmN0aW9ucy4gVGhpcw0KPiA+ID4gKyAgYnVmZmVyIHNpemUgaXMgcmV0 dXJuZWQgaW4gUmVhbE1vZGVCdWZmZXJTaXplLA0KPiBhbmQNCj4gPiB0aGUgc3RhY2sgc2l6ZSBp cyByZXR1cm5lZA0KPiA+ID4gKyAgaW4gRXh0cmFTdGFja1NpemUuIElmIHBhcmFtZXRlcnMgYXJl IHBhc3NlZCB0bw0KPiB0aGUNCj4gPiAxNi1iaXQgcmVhbCBtb2RlIGNvZGUsDQo+ID4gPiArICB0 aGVuIHRoZSBhY3R1YWwgbWluaW11bSBzdGFjayBzaXplIGlzDQo+ID4gRXh0cmFTdGFja1NpemUg cGx1cyB0aGUgbWF4aW11bSBudW1iZXINCj4gPiA+ICsgIG9mIGJ5dGVzIHRoYXQgbmVlZCB0byBi ZSBwYXNzZWQgdG8gdGhlIDE2LWJpdA0KPiByZWFsDQo+ID4gbW9kZSBjb2RlLg0KPiA+ID4gKw0K PiA+ID4gKyAgSWYgUmVhbE1vZGVCdWZmZXJTaXplIGlzIE5VTEwsIHRoZW4gQVNTRVJUKCkuDQo+ ID4gPiArICBJZiBFeHRyYVN0YWNrU2l6ZSBpcyBOVUxMLCB0aGVuIEFTU0VSVCgpLg0KPiA+ID4g Kw0KPiA+ID4gKyAgQHBhcmFtICBSZWFsTW9kZUJ1ZmZlclNpemUgIEEgcG9pbnRlciB0byB0aGUg c2l6ZQ0KPiA+IG9mIHRoZSBidWZmZXIgYmVsb3cgMU1CDQo+ID4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcmVxdWlyZWQgdG8gdXNlIHRoZQ0KPiAxNi0NCj4gPiBiaXQgdGh1bmsg ZnVuY3Rpb25zLg0KPiA+ID4gKyAgQHBhcmFtICBFeHRyYVN0YWNrU2l6ZSAgICAgIEEgcG9pbnRl ciB0byB0aGUNCj4gZXh0cmENCj4gPiBzaXplIG9mIHN0YWNrIGJlbG93IDFNQg0KPiA+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgdGhlIDE2LWJpdCB0aHVuaw0KPiA+IGZ1 bmN0aW9ucyByZXF1aXJlIGZvcg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHRlbXBvcmFyeSBzdG9yYWdlIGluDQo+ID4gdGhlIHRyYW5zaXRpb24gdG8gYW5kIGZyb20NCj4g PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNi1iaXQgcmVhbCBtb2RlLg0KPiA+ ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4gK1ZPSUQNCj4gPiA+ICtFRklBUEkNCj4gPiA+ICtVbml0 VGVzdEhvc3RCYXNlTGliQXNtR2V0VGh1bmsxNlByb3BlcnRpZXMgKA0KPiA+ID4gKyAgT1VUICAg ICBVSU5UMzINCj4gPiAqUmVhbE1vZGVCdWZmZXJTaXplLA0KPiA+ID4gKyAgT1VUICAgICBVSU5U MzIgICAgICAgICAgICAgICAgICAgICpFeHRyYVN0YWNrU2l6ZQ0KPiA+ID4gKyAgKQ0KPiA+ID4g K3sNCj4gPiA+ICsgICpSZWFsTW9kZUJ1ZmZlclNpemUgPSAwOw0KPiA+ID4gKyAgKkV4dHJhU3Rh Y2tTaXplICAgICA9IDA7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAg UHJlcGFyZXMgYWxsIHN0cnVjdHVyZXMgYSBjb2RlIHJlcXVpcmVkIHRvIHVzZQ0KPiA+IEFzbVRo dW5rMTYoKS4NCj4gPiA+ICsNCj4gPiA+ICsgIFByZXBhcmVzIGFsbCBzdHJ1Y3R1cmVzIGFuZCBj b2RlIHJlcXVpcmVkIHRvIHVzZQ0KPiA+IEFzbVRodW5rMTYoKS4NCj4gPiA+ICsNCj4gPiA+ICsg IFRoaXMgaW50ZXJmYWNlIGlzIGxpbWl0ZWQgdG8gYmUgdXNlZCBpbiBlaXRoZXINCj4gPiBwaHlz aWNhbCBtb2RlIG9yIHZpcnR1YWwgbW9kZXMgd2l0aCBwYWdpbmcgZW5hYmxlZA0KPiB3aGVyZQ0K PiA+IHRoZQ0KPiA+ID4gKyAgdmlydHVhbCB0byBwaHlzaWNhbCBtYXBwaW5ncyBmb3INCj4gPiBU aHVua0NvbnRleHQuUmVhbE1vZGVCdWZmZXIgaXMgbWFwcGVkIDE6MS4NCj4gPiA+ICsNCj4gPiA+ ICsgIElmIFRodW5rQ29udGV4dCBpcyBOVUxMLCB0aGVuIEFTU0VSVCgpLg0KPiA+ID4gKw0KPiA+ ID4gKyAgQHBhcmFtICBUaHVua0NvbnRleHQgIEEgcG9pbnRlciB0byB0aGUgY29udGV4dA0KPiA+ IHN0cnVjdHVyZSB0aGF0IGRlc2NyaWJlcyB0aGUNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAxNi1iaXQgcmVhbCBtb2RlIGNvZGUgdG8NCj4gPiBjYWxsLg0KPiA+ID4gKw0KPiA+ID4g KyoqLw0KPiA+ID4gK1ZPSUQNCj4gPiA+ICtFRklBUEkNCj4gPiA+ICtVbml0VGVzdEhvc3RCYXNl TGliQXNtUHJlcGFyZVRodW5rMTYgKA0KPiA+ID4gKyAgSU4gT1VUICBUSFVOS19DT05URVhUICAg ICAgICAgICAgICpUaHVua0NvbnRleHQNCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArfQ0K PiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgVHJhbnNmZXJzIGNvbnRyb2wgdG8gYSAxNi1i aXQgcmVhbCBtb2RlIGVudHJ5DQo+IHBvaW50DQo+ID4gYW5kIHJldHVybnMgdGhlIHJlc3VsdHMu DQo+ID4gPiArDQo+ID4gPiArICBUcmFuc2ZlcnMgY29udHJvbCB0byBhIDE2LWJpdCByZWFsIG1v ZGUgZW50cnkNCj4gcG9pbnQNCj4gPiBhbmQgcmV0dXJucyB0aGUgcmVzdWx0cy4NCj4gPiA+ICsg IEFzbVByZXBhcmVUaHVuazE2KCkgbXVzdCBiZSBjYWxsZWQgd2l0aA0KPiA+IFRodW5rQ29udGV4 dCBiZWZvcmUgdGhpcyBmdW5jdGlvbiBpcyB1c2VkLg0KPiA+ID4gKyAgVGhpcyBmdW5jdGlvbiBt dXN0IGJlIGNhbGxlZCB3aXRoIGludGVycnVwdHMNCj4gPiBkaXNhYmxlZC4NCj4gPiA+ICsNCj4g PiA+ICsgIFRoZSByZWdpc3RlciBzdGF0ZSBmcm9tIHRoZSBSZWFsTW9kZVN0YXRlIGZpZWxkDQo+ IG9mDQo+ID4gVGh1bmtDb250ZXh0IGlzIHJlc3RvcmVkIGp1c3QgcHJpb3INCj4gPiA+ICsgIHRv IGNhbGxpbmcgdGhlIDE2LWJpdCByZWFsIG1vZGUgZW50cnkgcG9pbnQuDQo+IFRoaXMNCj4gPiBp bmNsdWRlcyB0aGUgRUZMQUdTIGZpZWxkIG9mIFJlYWxNb2RlU3RhdGUsDQo+ID4gPiArICB3aGlj aCBpcyB1c2VkIHRvIHNldCB0aGUgaW50ZXJydXB0IHN0YXRlIHdoZW4gYQ0KPiAxNi0NCj4gPiBi aXQgcmVhbCBtb2RlIGVudHJ5IHBvaW50IGlzIGNhbGxlZC4NCj4gPiA+ICsgIENvbnRyb2wgaXMg dHJhbnNmZXJyZWQgdG8gdGhlIDE2LWJpdCByZWFsIG1vZGUNCj4gPiBlbnRyeSBwb2ludCBzcGVj aWZpZWQgYnkgdGhlIENTIGFuZCBFaXAgZmllbGRzIG9mDQo+ID4gUmVhbE1vZGVTdGF0ZS4NCj4g PiA+ICsgIFRoZSBzdGFjayBpcyBpbml0aWFsaXplZCB0byB0aGUgU1MgYW5kIEVTUCBmaWVsZHMN Cj4gPiBvZiBSZWFsTW9kZVN0YXRlLiAgQW55IHBhcmFtZXRlcnMgcGFzc2VkIHRvDQo+ID4gPiAr ICB0aGUgMTYtYml0IHJlYWwgbW9kZSBjb2RlIG11c3QgYmUgcG9wdWxhdGVkIGJ5DQo+IHRoZQ0K PiA+IGNhbGxlciBhdCBTUzpFU1AgcHJpb3IgdG8gY2FsbGluZyB0aGlzIGZ1bmN0aW9uLg0KPiA+ ID4gKyAgVGhlIDE2LWJpdCByZWFsIG1vZGUgZW50cnkgcG9pbnQgaXMgaW52b2tlZCB3aXRoDQo+ IGENCj4gPiAxNi1iaXQgQ0FMTCBGQVIgaW5zdHJ1Y3Rpb24sDQo+ID4gPiArICBzbyB3aGVuIGFj Y2Vzc2luZyBzdGFjayBjb250ZW50cywgdGhlIDE2LWJpdCByZWFsDQo+ID4gbW9kZSBjb2RlIG11 c3QgYWNjb3VudCBmb3IgdGhlIDE2LWJpdCBzZWdtZW50DQo+ID4gPiArICBhbmQgMTYtYml0IG9m ZnNldCBvZiB0aGUgcmV0dXJuIGFkZHJlc3MgdGhhdCB3ZXJlDQo+ID4gcHVzaGVkIG9udG8gdGhl IHN0YWNrLiBUaGUgMTYtYml0IHJlYWwgbW9kZSBlbnRyeQ0KPiA+ID4gKyAgcG9pbnQgbXVzdCBl eGl0IHdpdGggYSBSRVRGIGluc3RydWN0aW9uLiBUaGUNCj4gPiByZWdpc3RlciBzdGF0ZSBpcyBj YXB0dXJlZCBpbnRvIFJlYWxNb2RlU3RhdGUNCj4gPiBpbW1lZGlhdGVseQ0KPiA+ID4gKyAgYWZ0 ZXIgdGhlIFJFVEYgaW5zdHJ1Y3Rpb24gaXMgZXhlY3V0ZWQuDQo+ID4gPiArDQo+ID4gPiArICBJ ZiBFRkxBR1Mgc3BlY2lmaWVzIGludGVycnVwdHMgZW5hYmxlZCwgb3IgYW55IG9mDQo+ID4gdGhl IDE2LWJpdCByZWFsIG1vZGUgY29kZSBlbmFibGVzIGludGVycnVwdHMsDQo+ID4gPiArICBvciBh bnkgb2YgdGhlIDE2LWJpdCByZWFsIG1vZGUgY29kZSBtYWtlcyBhIFNXDQo+ID4gaW50ZXJydXB0 LCB0aGVuIHRoZSBjYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIG1ha2luZw0KPiA+IHN1cmUNCj4g PiA+ICsgIHRoZSBJRFQgYXQgYWRkcmVzcyAwIGlzIGluaXRpYWxpemVkIHRvIGhhbmRsZSBhbnkN Cj4gPiBIVyBvciBTVyBpbnRlcnJ1cHRzIHRoYXQgbWF5IG9jY3VyIHdoaWxlIGluIDE2LWJpdA0K PiByZWFsDQo+ID4gbW9kZS4NCj4gPiA+ICsNCj4gPiA+ICsgIElmIEVGTEFHUyBzcGVjaWZpZXMg aW50ZXJydXB0cyBlbmFibGVkLCBvciBhbnkgb2YNCj4gPiB0aGUgMTYtYml0IHJlYWwgbW9kZSBj b2RlIGVuYWJsZXMgaW50ZXJydXB0cywNCj4gPiA+ICsgIHRoZW4gdGhlIGNhbGxlciBpcyByZXNw b25zaWJsZSBmb3IgbWFraW5nIHN1cmUNCj4gdGhlDQo+ID4gODI1OSBQSUMgaXMgaW4gYSBzdGF0 ZSBjb21wYXRpYmxlIHdpdGggMTYtYml0IHJlYWwNCj4gbW9kZS4NCj4gPiA+ICsgIFRoaXMgaW5j bHVkZXMgdGhlIGJhc2UgdmVjdG9ycywgdGhlIGludGVycnVwdA0KPiA+IG1hc2tzLCBhbmQgdGhl IGVkZ2UvbGV2ZWwgdHJpZ2dlciBtb2RlLg0KPiA+ID4gKw0KPiA+ID4gKyAgSWYgVEhVTktfQVRU UklCVVRFX0JJR19SRUFMX01PREUgaXMgc2V0IGluIHRoZQ0KPiA+IFRodW5rQXR0cmlidXRlcyBm aWVsZCBvZiBUaHVua0NvbnRleHQsIHRoZW4gdGhlIHVzZXINCj4gPiBjb2RlDQo+ID4gPiArICBp cyBpbnZva2VkIGluIGJpZyByZWFsIG1vZGUuICBPdGhlcndpc2UsIHRoZSB1c2VyDQo+ID4gY29k ZSBpcyBpbnZva2VkIGluIDE2LWJpdCByZWFsIG1vZGUgd2l0aCA2NEtCIHNlZ21lbnQNCj4gPiBs aW1pdHMuDQo+ID4gPiArDQo+ID4gPiArICBJZiBuZWl0aGVyDQo+IFRIVU5LX0FUVFJJQlVURV9E SVNBQkxFX0EyMF9NQVNLX0lOVF8xNQ0KPiA+IG5vciBUSFVOS19BVFRSSUJVVEVfRElTQUJMRV9B MjBfTUFTS19LQkRfQ1RSTCBhcmUgc2V0DQo+IGluDQo+ID4gPiArICBUaHVua0F0dHJpYnV0ZXMs IHRoZW4gaXQgaXMgYXNzdW1lZCB0aGF0IHRoZSB1c2VyDQo+ID4gY29kZSBkaWQgbm90IGVuYWJs ZSB0aGUgQTIwIG1hc2ssIGFuZCBubyBhdHRlbXB0IGlzDQo+IG1hZGUNCj4gPiB0bw0KPiA+ID4g KyAgZGlzYWJsZSB0aGUgQTIwIG1hc2suDQo+ID4gPiArDQo+ID4gPiArICBJZiBUSFVOS19BVFRS SUJVVEVfRElTQUJMRV9BMjBfTUFTS19JTlRfMTUgaXMgc2V0DQo+ID4gYW5kIFRIVU5LX0FUVFJJ QlVURV9ESVNBQkxFX0EyMF9NQVNLX0tCRF9DVFJMIGlzIGNsZWFyDQo+ID4gaW4NCj4gPiA+ICsg IFRodW5rQXR0cmlidXRlcywgdGhlbiBhdHRlbXB0IHRvIHVzZSB0aGUgSU5UIDE1DQo+ID4gc2Vy dmljZSB0byBkaXNhYmxlIHRoZSBBMjAgbWFzay4gIElmIHRoaXMgSU5UIDE1IGNhbGwNCj4gPiBm YWlscywNCj4gPiA+ICsgIHRoZW4gYXR0ZW1wdCB0byBkaXNhYmxlIHRoZSBBMjAgbWFzayBieSBk aXJlY3RseQ0KPiA+IGFjY2Vzc2luZyB0aGUgODA0MiBrZXlib2FyZCBjb250cm9sbGVyIEkvTyBw b3J0cy4NCj4gPiA+ICsNCj4gPiA+ICsgIElmIFRIVU5LX0FUVFJJQlVURV9ESVNBQkxFX0EyMF9N QVNLX0lOVF8xNSBpcw0KPiBjbGVhcg0KPiA+IGFuZCBUSFVOS19BVFRSSUJVVEVfRElTQUJMRV9B MjBfTUFTS19LQkRfQ1RSTCBpcyBzZXQNCj4gaW4NCj4gPiA+ICsgIFRodW5rQXR0cmlidXRlcywg dGhlbiBhdHRlbXB0IHRvIGRpc2FibGUgdGhlIEEyMA0KPiA+IG1hc2sgYnkgZGlyZWN0bHkgYWNj ZXNzaW5nIHRoZSA4MDQyIGtleWJvYXJkDQo+IGNvbnRyb2xsZXINCj4gPiBJL08gcG9ydHMuDQo+ ID4gPiArDQo+ID4gPiArICBJZiBUaHVua0NvbnRleHQgaXMgTlVMTCwgdGhlbiBBU1NFUlQoKS4N Cj4gPiA+ICsgIElmIEFzbVByZXBhcmVUaHVuazE2KCkgd2FzIG5vdCBwcmV2aW91c2x5IGNhbGxl ZA0KPiA+IHdpdGggVGh1bmtDb250ZXh0LCB0aGVuIEFTU0VSVCgpLg0KPiA+ID4gKyAgSWYgYm90 aCBUSFVOS19BVFRSSUJVVEVfRElTQUJMRV9BMjBfTUFTS19JTlRfMTUNCj4gYW5kDQo+ID4gVEhV TktfQVRUUklCVVRFX0RJU0FCTEVfQTIwX01BU0tfS0JEX0NUUkwgYXJlIHNldCBpbg0KPiA+ID4g KyAgVGh1bmtBdHRyaWJ1dGVzLCB0aGVuIEFTU0VSVCgpLg0KPiA+ID4gKw0KPiA+ID4gKyAgVGhp cyBpbnRlcmZhY2UgaXMgbGltaXRlZCB0byBiZSB1c2VkIGluIGVpdGhlcg0KPiA+IHBoeXNpY2Fs IG1vZGUgb3IgdmlydHVhbCBtb2RlcyB3aXRoIHBhZ2luZyBlbmFibGVkDQo+IHdoZXJlDQo+ID4g dGhlDQo+ID4gPiArICB2aXJ0dWFsIHRvIHBoeXNpY2FsIG1hcHBpbmdzIGZvcg0KPiA+IFRodW5r Q29udGV4dC5SZWFsTW9kZUJ1ZmZlciBhcmUgbWFwcGVkIDE6MS4NCj4gPiA+ICsNCj4gPiA+ICsg IEBwYXJhbSAgVGh1bmtDb250ZXh0ICBBIHBvaW50ZXIgdG8gdGhlIGNvbnRleHQNCj4gPiBzdHJ1 Y3R1cmUgdGhhdCBkZXNjcmliZXMgdGhlDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAg MTYtYml0IHJlYWwgbW9kZSBjb2RlIHRvDQo+ID4gY2FsbC4NCj4gPiA+ICsNCj4gPiA+ICsqKi8N Cj4gPiA+ICtWT0lEDQo+ID4gPiArRUZJQVBJDQo+ID4gPiArVW5pdFRlc3RIb3N0QmFzZUxpYkFz bVRodW5rMTYgKA0KPiA+ID4gKyAgSU4gT1VUICBUSFVOS19DT05URVhUICAgICAgICAgICAgICpU aHVua0NvbnRleHQNCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ ID4gKy8qKg0KPiA+ID4gKyAgUHJlcGFyZXMgYWxsIHN0cnVjdHVyZXMgYW5kIGNvZGUgZm9yIGEg MTYtYml0DQo+IHJlYWwNCj4gPiBtb2RlIHRodW5rLCB0cmFuc2ZlcnMNCj4gPiA+ICsgIGNvbnRy b2wgdG8gYSAxNi1iaXQgcmVhbCBtb2RlIGVudHJ5IHBvaW50LCBhbmQNCj4gPiByZXR1cm5zIHRo ZSByZXN1bHRzLg0KPiA+ID4gKw0KPiA+ID4gKyAgUHJlcGFyZXMgYWxsIHN0cnVjdHVyZXMgYW5k IGNvZGUgZm9yIGEgMTYtYml0DQo+IHJlYWwNCj4gPiBtb2RlIHRodW5rLCB0cmFuc2ZlcnMNCj4g PiA+ICsgIGNvbnRyb2wgdG8gYSAxNi1iaXQgcmVhbCBtb2RlIGVudHJ5IHBvaW50LCBhbmQNCj4g PiByZXR1cm5zIHRoZSByZXN1bHRzLiBJZiB0aGUNCj4gPiA+ICsgIGNhbGxlciBvbmx5IG5lZWQg dG8gcGVyZm9ybSBhIHNpbmdsZSAxNi1iaXQgcmVhbA0KPiA+IG1vZGUgdGh1bmssIHRoZW4gdGhp cw0KPiA+ID4gKyAgc2VydmljZSBzaG91bGQgYmUgdXNlZC4gSWYgdGhlIGNhbGxlciBpbnRlbmRz IHRvDQo+ID4gbWFrZSBtb3JlIHRoYW4gb25lIDE2LWJpdA0KPiA+ID4gKyAgcmVhbCBtb2RlIHRo dW5rLCB0aGVuIGl0IGlzIG1vcmUgZWZmaWNpZW50IGlmDQo+ID4gQXNtUHJlcGFyZVRodW5rMTYo KSBpcyBjYWxsZWQNCj4gPiA+ICsgIG9uY2UgYW5kIEFzbVRodW5rMTYoKSBjYW4gYmUgY2FsbGVk IGZvciBlYWNoIDE2LQ0KPiBiaXQNCj4gPiByZWFsIG1vZGUgdGh1bmsuDQo+ID4gPiArDQo+ID4g PiArICBUaGlzIGludGVyZmFjZSBpcyBsaW1pdGVkIHRvIGJlIHVzZWQgaW4gZWl0aGVyDQo+ID4g cGh5c2ljYWwgbW9kZSBvciB2aXJ0dWFsIG1vZGVzIHdpdGggcGFnaW5nIGVuYWJsZWQNCj4gd2hl cmUNCj4gPiB0aGUNCj4gPiA+ICsgIHZpcnR1YWwgdG8gcGh5c2ljYWwgbWFwcGluZ3MgZm9yDQo+ ID4gVGh1bmtDb250ZXh0LlJlYWxNb2RlQnVmZmVyIGlzIG1hcHBlZCAxOjEuDQo+ID4gPiArDQo+ ID4gPiArICBTZWUgQXNtUHJlcGFyZVRodW5rMTYoKSBhbmQgQXNtVGh1bmsxNigpIGZvciB0aGUN Cj4gPiBkZXRhaWxlZCBkZXNjcmlwdGlvbiBhbmQgQVNTRVJUKCkgY29uZGl0aW9ucy4NCj4gPiA+ ICsNCj4gPiA+ICsgIEBwYXJhbSAgVGh1bmtDb250ZXh0ICBBIHBvaW50ZXIgdG8gdGhlIGNvbnRl eHQNCj4gPiBzdHJ1Y3R1cmUgdGhhdCBkZXNjcmliZXMgdGhlDQo+ID4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgMTYtYml0IHJlYWwgbW9kZSBjb2RlIHRvDQo+ID4gY2FsbC4NCj4gPiA+ICsN Cj4gPiA+ICsqKi8NCj4gPiA+ICtWT0lEDQo+ID4gPiArRUZJQVBJDQo+ID4gPiArVW5pdFRlc3RI b3N0QmFzZUxpYkFzbVByZXBhcmVBbmRUaHVuazE2ICgNCj4gPiA+ICsgIElOIE9VVCAgVEhVTktf Q09OVEVYVCAgICAgICAgICAgICAqVGh1bmtDb250ZXh0DQo+ID4gPiArICApDQo+ID4gPiArew0K PiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIExvYWQgZ2l2ZW4gc2VsZWN0 b3IgaW50byBUUiByZWdpc3Rlci4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbVtpbl0gU2VsZWN0 b3IgICAgIFRhc2sgc2VnbWVudCBzZWxlY3Rvcg0KPiA+ID4gKyoqLw0KPiA+ID4gK1ZPSUQNCj4g PiA+ICtFRklBUEkNCj4gPiA+ICtVbml0VGVzdEhvc3RCYXNlTGliQXNtV3JpdGVUciAoDQo+ID4g PiArICBJTiBVSU5UMTYgU2VsZWN0b3INCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArDQo+ ID4NCj4gbVVuaXRUZXN0SG9zdEJhc2VMaWJTZWdtZW50W1VOSVRfVEVTVF9IT1NUX0JBU0VfTElC X1NFR00NCj4gPiBFTlRfVFJdID0gU2VsZWN0b3I7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4g Ky8qKg0KPiA+ID4gKyAgUGVyZm9ybXMgYSBzZXJpYWxpemluZyBvcGVyYXRpb24gb24gYWxsIGxv YWQtDQo+IGZyb20tDQo+ID4gbWVtb3J5IGluc3RydWN0aW9ucyB0aGF0DQo+ID4gPiArICB3ZXJl IGlzc3VlZCBwcmlvciB0aGUgQXNtTGZlbmNlIGZ1bmN0aW9uLg0KPiA+ID4gKw0KPiA+ID4gKyAg RXhlY3V0ZXMgYSBMRkVOQ0UgaW5zdHJ1Y3Rpb24uIFRoaXMgZnVuY3Rpb24gaXMNCj4gPiBvbmx5 IGF2YWlsYWJsZSBvbiBJQS0zMiBhbmQgeDY0Lg0KPiA+ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4g K1ZPSUQNCj4gPiA+ICtFRklBUEkNCj4gPiA+ICtVbml0VGVzdEhvc3RCYXNlTGliQXNtTGZlbmNl ICgNCj4gPiA+ICsgIFZPSUQNCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArfQ0KPiA+ID4g Kw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgUGF0Y2ggdGhlIGltbWVkaWF0ZSBvcGVyYW5kIG9mIGFu IElBMzIgb3IgWDY0DQo+ID4gaW5zdHJ1Y3Rpb24gc3VjaCB0aGF0IHRoZSBieXRlLA0KPiA+ID4g KyAgd29yZCwgZHdvcmQgb3IgcXdvcmQgb3BlcmFuZCBpcyBlbmNvZGVkIGF0IHRoZQ0KPiBlbmQN Cj4gPiBvZiB0aGUgaW5zdHJ1Y3Rpb24ncw0KPiA+ID4gKyAgYmluYXJ5IHJlcHJlc2VudGF0aW9u Lg0KPiA+ID4gKw0KPiA+ID4gKyAgVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgdXNlZCB0byB1cGRh dGUgb2JqZWN0DQo+IGNvZGUNCj4gPiB0aGF0IHdhcyBjb21waWxlZCB3aXRoDQo+ID4gPiArICBO QVNNIGZyb20gYXNzZW1ibHkgc291cmNlIGNvZGUuIEV4YW1wbGU6DQo+ID4gPiArDQo+ID4gPiAr ICBOQVNNIHNvdXJjZSBjb2RlOg0KPiA+ID4gKw0KPiA+ID4gKyAgICAgICAgbW92ICAgICBlYXgs IHN0cmljdCBkd29yZCAwIDsgdGhlIGltbTMyDQo+IHplcm8NCj4gPiBvcGVyYW5kIHdpbGwgYmUg cGF0Y2hlZA0KPiA+ID4gKyAgICBBU01fUEZYKGdQYXRjaENyMyk6DQo+ID4gPiArICAgICAgICBt b3YgICAgIGNyMywgZWF4DQo+ID4gPiArDQo+ID4gPiArICBDIHNvdXJjZSBjb2RlOg0KPiA+ID4g Kw0KPiA+ID4gKyAgICBYODZfQVNTRU1CTFlfUEFUQ0hfTEFCRUwgZ1BhdGNoQ3IzOw0KPiA+ID4g KyAgICBQYXRjaEluc3RydWN0aW9uWDg2IChnUGF0Y2hDcjMsIEFzbVJlYWRDcjMgKCksDQo+ID4g NCk7DQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW1bb3V0XSBJbnN0cnVjdGlvbkVuZCAgUG9pbnRl ciByaWdodCBwYXN0DQo+IHRoZQ0KPiA+IGluc3RydWN0aW9uIHRvIHBhdGNoLiBUaGUNCj4gPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbW1lZGlhdGUgb3BlcmFuZCB0bw0KPiA+ IHBhdGNoIGlzIGV4cGVjdGVkIHRvDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29tcHJpc2UgdGhlIHRyYWlsaW5nDQo+ID4gYnl0ZXMgb2YgdGhlIGluc3RydWN0aW9uLg0K PiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIEluc3RydWN0aW9uRW5kIGlz DQo+ID4gY2xvc2VyIHRvIGFkZHJlc3MgMCB0aGFuDQo+ID4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgVmFsdWVTaXplIHBlcm1pdHMsDQo+IHRoZW4NCj4gPiBBU1NFUlQoKS4NCj4g PiA+ICsNCj4gPiA+ICsgIEBwYXJhbVtpbl0gUGF0Y2hWYWx1ZSAgICAgICBUaGUgY29uc3RhbnQg dG8gd3JpdGUNCj4gPiB0byB0aGUgaW1tZWRpYXRlIG9wZXJhbmQuDQo+ID4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgVGhlIGNhbGxlciBpcw0KPiA+IHJlc3BvbnNpYmxlIGZvciBl bnN1cmluZyB0aGF0DQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGF0Y2hW YWx1ZSBjYW4gYmUNCj4gPiByZXByZXNlbnRlZCBpbiB0aGUgYnl0ZSwgd29yZCwNCj4gPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkd29yZCBvciBxd29yZA0KPiBvcGVyYW5kDQo+ ID4gKGFzIGluZGljYXRlZCB0aHJvdWdoDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgVmFsdWVTaXplKTsgb3RoZXJ3aXNlDQo+ID4gQVNTRVJUKCkuDQo+ID4gPiArDQo+ID4g PiArICBAcGFyYW1baW5dIFZhbHVlU2l6ZSAgICAgICAgVGhlIHNpemUgb2YgdGhlDQo+IG9wZXJh bmQNCj4gPiBpbiBieXRlczsgbXVzdCBiZSAxLCAyLA0KPiA+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDQsIG9yIDguIEFTU0VSVCgpDQo+ID4gb3RoZXJ3aXNlLg0KPiA+ID4gKyoq Lw0KPiA+ID4gK1ZPSUQNCj4gPiA+ICtFRklBUEkNCj4gPiA+ICtVbml0VGVzdEhvc3RCYXNlTGli UGF0Y2hJbnN0cnVjdGlvblg4NiAoDQo+ID4gPiArICBPVVQgWDg2X0FTU0VNQkxZX1BBVENIX0xB QkVMICpJbnN0cnVjdGlvbkVuZCwNCj4gPiA+ICsgIElOICBVSU5UNjQgICAgICAgICAgICAgICAg ICAgUGF0Y2hWYWx1ZSwNCj4gPiA+ICsgIElOICBVSU5UTiAgICAgICAgICAgICAgICAgICAgVmFs dWVTaXplDQo+ID4gPiArICApDQo+ID4gPiArew0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsv KioNCj4gPiA+ICsgIFJldHJpZXZlcyBDUFVJRCBpbmZvcm1hdGlvbi4NCj4gPiA+ICsNCj4gPiA+ ICsgIEV4ZWN1dGVzIHRoZSBDUFVJRCBpbnN0cnVjdGlvbiB3aXRoIEVBWCBzZXQgdG8NCj4gdGhl DQo+ID4gdmFsdWUgc3BlY2lmaWVkIGJ5IEluZGV4Lg0KPiA+ID4gKyAgVGhpcyBmdW5jdGlvbiBh bHdheXMgcmV0dXJucyBJbmRleC4NCj4gPiA+ICsgIElmIEVheCBpcyBub3QgTlVMTCwgdGhlbiB0 aGUgdmFsdWUgb2YgRUFYIGFmdGVyDQo+ID4gQ1BVSUQgaXMgcmV0dXJuZWQgaW4gRWF4Lg0KPiA+ ID4gKyAgSWYgRWJ4IGlzIG5vdCBOVUxMLCB0aGVuIHRoZSB2YWx1ZSBvZiBFQlggYWZ0ZXINCj4g PiBDUFVJRCBpcyByZXR1cm5lZCBpbiBFYnguDQo+ID4gPiArICBJZiBFY3ggaXMgbm90IE5VTEws IHRoZW4gdGhlIHZhbHVlIG9mIEVDWCBhZnRlcg0KPiA+IENQVUlEIGlzIHJldHVybmVkIGluIEVj eC4NCj4gPiA+ICsgIElmIEVkeCBpcyBub3QgTlVMTCwgdGhlbiB0aGUgdmFsdWUgb2YgRURYIGFm dGVyDQo+ID4gQ1BVSUQgaXMgcmV0dXJuZWQgaW4gRWR4Lg0KPiA+ID4gKyAgVGhpcyBmdW5jdGlv biBpcyBvbmx5IGF2YWlsYWJsZSBvbiBJQS0zMiBhbmQgeDY0Lg0KPiA+ID4gKw0KPiA+ID4gKyAg QHBhcmFtICBJbmRleCBUaGUgMzItYml0IHZhbHVlIHRvIGxvYWQgaW50byBFQVgNCj4gPiBwcmlv ciB0byBpbnZva2luZyB0aGUgQ1BVSUQNCj4gPiA+ICsgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rp b24uDQo+ID4gPiArICBAcGFyYW0gIEVheCAgIFRoZSBwb2ludGVyIHRvIHRoZSAzMi1iaXQgRUFY IHZhbHVlDQo+ID4gcmV0dXJuZWQgYnkgdGhlIENQVUlEDQo+ID4gPiArICAgICAgICAgICAgICAg IGluc3RydWN0aW9uLiBUaGlzIGlzIGFuIG9wdGlvbmFsDQo+ID4gcGFyYW1ldGVyIHRoYXQgbWF5 IGJlIE5VTEwuDQo+ID4gPiArICBAcGFyYW0gIEVieCAgIFRoZSBwb2ludGVyIHRvIHRoZSAzMi1i aXQgRUJYIHZhbHVlDQo+ID4gcmV0dXJuZWQgYnkgdGhlIENQVUlEDQo+ID4gPiArICAgICAgICAg ICAgICAgIGluc3RydWN0aW9uLiBUaGlzIGlzIGFuIG9wdGlvbmFsDQo+ID4gcGFyYW1ldGVyIHRo YXQgbWF5IGJlIE5VTEwuDQo+ID4gPiArICBAcGFyYW0gIEVjeCAgIFRoZSBwb2ludGVyIHRvIHRo ZSAzMi1iaXQgRUNYIHZhbHVlDQo+ID4gcmV0dXJuZWQgYnkgdGhlIENQVUlEDQo+ID4gPiArICAg ICAgICAgICAgICAgIGluc3RydWN0aW9uLiBUaGlzIGlzIGFuIG9wdGlvbmFsDQo+ID4gcGFyYW1l dGVyIHRoYXQgbWF5IGJlIE5VTEwuDQo+ID4gPiArICBAcGFyYW0gIEVkeCAgIFRoZSBwb2ludGVy IHRvIHRoZSAzMi1iaXQgRURYIHZhbHVlDQo+ID4gcmV0dXJuZWQgYnkgdGhlIENQVUlEDQo+ID4g PiArICAgICAgICAgICAgICAgIGluc3RydWN0aW9uLiBUaGlzIGlzIGFuIG9wdGlvbmFsDQo+ID4g cGFyYW1ldGVyIHRoYXQgbWF5IGJlIE5VTEwuDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dXJuIElu ZGV4Lg0KPiA+ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4gK1VJTlQzMg0KPiA+ID4gK0VGSUFQSQ0K PiA+ID4gK0FzbUNwdWlkICgNCj4gPiA+ICsgIElOICAgICAgVUlOVDMyICAgICAgICAgICAgICAg ICAgICBJbmRleCwNCj4gPiA+ICsgIE9VVCAgICAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAq RWF4LCAgT1BUSU9OQUwNCj4gPiA+ICsgIE9VVCAgICAgVUlOVDMyICAgICAgICAgICAgICAgICAg ICAqRWJ4LCAgT1BUSU9OQUwNCj4gPiA+ICsgIE9VVCAgICAgVUlOVDMyICAgICAgICAgICAgICAg ICAgICAqRWN4LCAgT1BUSU9OQUwNCj4gPiA+ICsgIE9VVCAgICAgVUlOVDMyICAgICAgICAgICAg ICAgICAgICAqRWR4ICAgT1BUSU9OQUwNCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArICBy ZXR1cm4gZ1VuaXRUZXN0SG9zdEJhc2VMaWIuWDg2LT5Bc21DcHVpZCAoSW5kZXgsDQo+ID4gRWF4 LCBFYngsIEVjeCwgRWR4KTsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiAr ICBSZXRyaWV2ZXMgQ1BVSUQgaW5mb3JtYXRpb24gdXNpbmcgYW4gZXh0ZW5kZWQNCj4gbGVhZg0K PiA+IGlkZW50aWZpZXIuDQo+ID4gPiArDQo+ID4gPiArICBFeGVjdXRlcyB0aGUgQ1BVSUQgaW5z dHJ1Y3Rpb24gd2l0aCBFQVggc2V0IHRvDQo+IHRoZQ0KPiA+IHZhbHVlIHNwZWNpZmllZCBieSBJ bmRleA0KPiA+ID4gKyAgYW5kIEVDWCBzZXQgdG8gdGhlIHZhbHVlIHNwZWNpZmllZCBieSBTdWJJ bmRleC4NCj4gPiBUaGlzIGZ1bmN0aW9uIGFsd2F5cyByZXR1cm5zDQo+ID4gPiArICBJbmRleC4g VGhpcyBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBvbiBJQS0zMg0KPiBhbmQNCj4gPiB4NjQu DQo+ID4gPiArDQo+ID4gPiArICBJZiBFYXggaXMgbm90IE5VTEwsIHRoZW4gdGhlIHZhbHVlIG9m IEVBWCBhZnRlcg0KPiA+IENQVUlEIGlzIHJldHVybmVkIGluIEVheC4NCj4gPiA+ICsgIElmIEVi eCBpcyBub3QgTlVMTCwgdGhlbiB0aGUgdmFsdWUgb2YgRUJYIGFmdGVyDQo+ID4gQ1BVSUQgaXMg cmV0dXJuZWQgaW4gRWJ4Lg0KPiA+ID4gKyAgSWYgRWN4IGlzIG5vdCBOVUxMLCB0aGVuIHRoZSB2 YWx1ZSBvZiBFQ1ggYWZ0ZXINCj4gPiBDUFVJRCBpcyByZXR1cm5lZCBpbiBFY3guDQo+ID4gPiAr ICBJZiBFZHggaXMgbm90IE5VTEwsIHRoZW4gdGhlIHZhbHVlIG9mIEVEWCBhZnRlcg0KPiA+IENQ VUlEIGlzIHJldHVybmVkIGluIEVkeC4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbSAgSW5kZXgg ICAgIFRoZSAzMi1iaXQgdmFsdWUgdG8gbG9hZCBpbnRvDQo+IEVBWA0KPiA+IHByaW9yIHRvIGlu dm9raW5nIHRoZQ0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgQ1BVSUQgaW5zdHJ1Y3Rpb24u DQo+ID4gPiArICBAcGFyYW0gIFN1YkluZGV4ICBUaGUgMzItYml0IHZhbHVlIHRvIGxvYWQgaW50 bw0KPiBFQ1gNCj4gPiBwcmlvciB0byBpbnZva2luZyB0aGUNCj4gPiA+ICsgICAgICAgICAgICAg ICAgICAgIENQVUlEIGluc3RydWN0aW9uLg0KPiA+ID4gKyAgQHBhcmFtICBFYXggICAgICAgVGhl IHBvaW50ZXIgdG8gdGhlIDMyLWJpdCBFQVgNCj4gPiB2YWx1ZSByZXR1cm5lZCBieSB0aGUgQ1BV SUQNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgIGluc3RydWN0aW9uLiBUaGlzIGlzIGFuDQo+ IG9wdGlvbmFsDQo+ID4gcGFyYW1ldGVyIHRoYXQgbWF5IGJlDQo+ID4gPiArICAgICAgICAgICAg ICAgICAgICBOVUxMLg0KPiA+ID4gKyAgQHBhcmFtICBFYnggICAgICAgVGhlIHBvaW50ZXIgdG8g dGhlIDMyLWJpdCBFQlgNCj4gPiB2YWx1ZSByZXR1cm5lZCBieSB0aGUgQ1BVSUQNCj4gPiA+ICsg ICAgICAgICAgICAgICAgICAgIGluc3RydWN0aW9uLiBUaGlzIGlzIGFuDQo+IG9wdGlvbmFsDQo+ ID4gcGFyYW1ldGVyIHRoYXQgbWF5IGJlDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICBOVUxM Lg0KPiA+ID4gKyAgQHBhcmFtICBFY3ggICAgICAgVGhlIHBvaW50ZXIgdG8gdGhlIDMyLWJpdCBF Q1gNCj4gPiB2YWx1ZSByZXR1cm5lZCBieSB0aGUgQ1BVSUQNCj4gPiA+ICsgICAgICAgICAgICAg ICAgICAgIGluc3RydWN0aW9uLiBUaGlzIGlzIGFuDQo+IG9wdGlvbmFsDQo+ID4gcGFyYW1ldGVy IHRoYXQgbWF5IGJlDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICBOVUxMLg0KPiA+ID4gKyAg QHBhcmFtICBFZHggICAgICAgVGhlIHBvaW50ZXIgdG8gdGhlIDMyLWJpdCBFRFgNCj4gPiB2YWx1 ZSByZXR1cm5lZCBieSB0aGUgQ1BVSUQNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgIGluc3Ry dWN0aW9uLiBUaGlzIGlzIGFuDQo+IG9wdGlvbmFsDQo+ID4gcGFyYW1ldGVyIHRoYXQgbWF5IGJl DQo+ID4gPiArICAgICAgICAgICAgICAgICAgICBOVUxMLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJl dHVybiBJbmRleC4NCj4gPiA+ICsNCj4gPiA+ICsqKi8NCj4gPiA+ICtVSU5UMzINCj4gPiA+ICtF RklBUEkNCj4gPiA+ICtBc21DcHVpZEV4ICgNCj4gPiA+ICsgIElOICAgICAgVUlOVDMyICAgICAg ICAgICAgICAgICAgICBJbmRleCwNCj4gPiA+ICsgIElOICAgICAgVUlOVDMyICAgICAgICAgICAg ICAgICAgICBTdWJJbmRleCwNCj4gPiA+ICsgIE9VVCAgICAgVUlOVDMyICAgICAgICAgICAgICAg ICAgICAqRWF4LCAgT1BUSU9OQUwNCj4gPiA+ICsgIE9VVCAgICAgVUlOVDMyICAgICAgICAgICAg ICAgICAgICAqRWJ4LCAgT1BUSU9OQUwNCj4gPiA+ICsgIE9VVCAgICAgVUlOVDMyICAgICAgICAg ICAgICAgICAgICAqRWN4LCAgT1BUSU9OQUwNCj4gPiA+ICsgIE9VVCAgICAgVUlOVDMyICAgICAg ICAgICAgICAgICAgICAqRWR4ICAgT1BUSU9OQUwNCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4g PiArICByZXR1cm4gZ1VuaXRUZXN0SG9zdEJhc2VMaWIuWDg2LT5Bc21DcHVpZEV4DQo+IChJbmRl eCwNCj4gPiBTdWJJbmRleCwgRWF4LCBFYngsIEVjeCwgRWR4KTsNCj4gPiA+ICt9DQo+ID4gPiAr DQo+ID4gPiArLyoqDQo+ID4gPiArICBTZXQgQ0QgYml0IGFuZCBjbGVhciBOVyBiaXQgb2YgQ1Iw IGZvbGxvd2VkIGJ5IGENCj4gPiBXQklOVkQuDQo+ID4gPiArDQo+ID4gPiArICBEaXNhYmxlcyB0 aGUgY2FjaGVzIGJ5IHNldHRpbmcgdGhlIENEIGJpdCBvZiBDUjANCj4gdG8NCj4gPiAxLCBjbGVh cmluZyB0aGUgTlcgYml0IG9mIENSMCB0byAwLA0KPiA+ID4gKyAgYW5kIGV4ZWN1dGluZyBhIFdC SU5WRCBpbnN0cnVjdGlvbi4gIFRoaXMNCj4gZnVuY3Rpb24NCj4gPiBpcyBvbmx5IGF2YWlsYWJs ZSBvbiBJQS0zMiBhbmQgeDY0Lg0KPiA+ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4gK1ZPSUQNCj4g PiA+ICtFRklBUEkNCj4gPiA+ICtBc21EaXNhYmxlQ2FjaGUgKA0KPiA+ID4gKyAgVk9JRA0KPiA+ ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIGdVbml0VGVzdEhvc3RCYXNlTGliLlg4Ni0+QXNt RGlzYWJsZUNhY2hlICgpOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsg IFBlcmZvcm0gYSBXQklOVkQgYW5kIGNsZWFyIGJvdGggdGhlIENEIGFuZCBOVw0KPiBiaXRzDQo+ ID4gb2YgQ1IwLg0KPiA+ID4gKw0KPiA+ID4gKyAgRW5hYmxlcyB0aGUgY2FjaGVzIGJ5IGV4ZWN1 dGluZyBhIFdCSU5WRA0KPiA+IGluc3RydWN0aW9uIGFuZCB0aGVuIGNsZWFyIGJvdGggdGhlIENE IGFuZCBOVw0KPiA+ID4gKyAgYml0cyBvZiBDUjAgdG8gMC4gIFRoaXMgZnVuY3Rpb24gaXMgb25s eQ0KPiBhdmFpbGFibGUNCj4gPiBvbiBJQS0zMiBhbmQgeDY0Lg0KPiA+ID4gKw0KPiA+ID4gKyoq Lw0KPiA+ID4gK1ZPSUQNCj4gPiA+ICtFRklBUEkNCj4gPiA+ICtBc21FbmFibGVDYWNoZSAoDQo+ ID4gPiArICBWT0lEDQo+ID4gPiArICApDQo+ID4gPiArew0KPiA+ID4gKyAgZ1VuaXRUZXN0SG9z dEJhc2VMaWIuWDg2LT5Bc21FbmFibGVDYWNoZSAoKTsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4g PiArLyoqDQo+ID4gPiArICBSZXR1cm5zIGEgNjQtYml0IE1hY2hpbmUgU3BlY2lmaWMgUmVnaXN0 ZXIoTVNSKS4NCj4gPiA+ICsNCj4gPiA+ICsgIFJlYWRzIGFuZCByZXR1cm5zIHRoZSA2NC1iaXQg TVNSIHNwZWNpZmllZCBieQ0KPiA+IEluZGV4LiBObyBwYXJhbWV0ZXIgY2hlY2tpbmcgaXMNCj4g PiA+ICsgIHBlcmZvcm1lZCBvbiBJbmRleCwgYW5kIHNvbWUgSW5kZXggdmFsdWVzIG1heQ0KPiBj YXVzZQ0KPiA+IENQVSBleGNlcHRpb25zLiBUaGUNCj4gPiA+ICsgIGNhbGxlciBtdXN0IGVpdGhl ciBndWFyYW50ZWUgdGhhdCBJbmRleCBpcyB2YWxpZCwNCj4gPiBvciB0aGUgY2FsbGVyIG11c3Qg c2V0IHVwDQo+ID4gPiArICBleGNlcHRpb24gaGFuZGxlcnMgdG8gY2F0Y2ggdGhlIGV4Y2VwdGlv bnMuIFRoaXMNCj4gPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZQ0KPiA+ID4gKyAgb24gSUEt MzIgYW5kIHg2NC4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbSAgSW5kZXggVGhlIDMyLWJpdCBN U1IgaW5kZXggdG8gcmVhZC4NCj4gPiA+ICsNCj4gPiA+ICsgIEByZXR1cm4gVGhlIHZhbHVlIG9m IHRoZSBNU1IgaWRlbnRpZmllZCBieSBJbmRleC4NCj4gPiA+ICsNCj4gPiA+ICsqKi8NCj4gPiA+ ICtVSU5UNjQNCj4gPiA+ICtFRklBUEkNCj4gPiA+ICtBc21SZWFkTXNyNjQgKA0KPiA+ID4gKyAg SU4gICAgICBVSU5UMzIgICAgICAgICAgICAgICAgICAgIEluZGV4DQo+ID4gPiArICApDQo+ID4g PiArew0KPiA+ID4gKyAgcmV0dXJuIGdVbml0VGVzdEhvc3RCYXNlTGliLlg4Ni0+QXNtUmVhZE1z cjY0DQo+ID4gKEluZGV4KTsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiAr ICBXcml0ZXMgYSA2NC1iaXQgdmFsdWUgdG8gYSBNYWNoaW5lIFNwZWNpZmljDQo+ID4gUmVnaXN0 ZXIoTVNSKSwgYW5kIHJldHVybnMgdGhlDQo+ID4gPiArICB2YWx1ZS4NCj4gPiA+ICsNCj4gPiA+ ICsgIFdyaXRlcyB0aGUgNjQtYml0IHZhbHVlIHNwZWNpZmllZCBieSBWYWx1ZSB0byB0aGUNCj4g PiBNU1Igc3BlY2lmaWVkIGJ5IEluZGV4LiBUaGUNCj4gPiA+ICsgIDY0LWJpdCB2YWx1ZSB3cml0 dGVuIHRvIHRoZSBNU1IgaXMgcmV0dXJuZWQuIE5vDQo+ID4gcGFyYW1ldGVyIGNoZWNraW5nIGlz DQo+ID4gPiArICBwZXJmb3JtZWQgb24gSW5kZXggb3IgVmFsdWUsIGFuZCBzb21lIG9mIHRoZXNl DQo+IG1heQ0KPiA+IGNhdXNlIENQVSBleGNlcHRpb25zLiBUaGUNCj4gPiA+ICsgIGNhbGxlciBt dXN0IGVpdGhlciBndWFyYW50ZWUgdGhhdCBJbmRleCBhbmQgVmFsdWUNCj4gPiBhcmUgdmFsaWQs IG9yIHRoZSBjYWxsZXINCj4gPiA+ICsgIG11c3QgZXN0YWJsaXNoIHByb3BlciBleGNlcHRpb24g aGFuZGxlcnMuIFRoaXMNCj4gPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBvbg0KPiA+ID4g KyAgSUEtMzIgYW5kIHg2NC4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbSAgSW5kZXggVGhlIDMy LWJpdCBNU1IgaW5kZXggdG8gd3JpdGUuDQo+ID4gPiArICBAcGFyYW0gIFZhbHVlIFRoZSA2NC1i aXQgdmFsdWUgdG8gd3JpdGUgdG8gdGhlDQo+IE1TUi4NCj4gPiA+ICsNCj4gPiA+ICsgIEByZXR1 cm4gVmFsdWUNCj4gPiA+ICsNCj4gPiA+ICsqKi8NCj4gPiA+ICtVSU5UNjQNCj4gPiA+ICtFRklB UEkNCj4gPiA+ICtBc21Xcml0ZU1zcjY0ICgNCj4gPiA+ICsgIElOICAgICAgVUlOVDMyICAgICAg ICAgICAgICAgICAgICBJbmRleCwNCj4gPiA+ICsgIElOICAgICAgVUlOVDY0ICAgICAgICAgICAg ICAgICAgICBWYWx1ZQ0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIHJldHVybiBnVW5p dFRlc3RIb3N0QmFzZUxpYi5YODYtPkFzbVdyaXRlTXNyNjQNCj4gPiAoSW5kZXgsIFZhbHVlKTsN Cj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBSZWFkcyB0aGUgY3VycmVu dCB2YWx1ZSBvZiB0aGUgQ29udHJvbCBSZWdpc3RlciAwDQo+ID4gKENSMCkuDQo+ID4gPiArDQo+ ID4gPiArICBSZWFkcyBhbmQgcmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiBDUjAuIFRoaXMN Cj4gPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZQ0KPiA+ID4gKyAgb24gSUEtMzIgYW5kIHg2 NC4gVGhpcyByZXR1cm5zIGEgMzItYml0IHZhbHVlIG9uDQo+ID4gSUEtMzIgYW5kIGEgNjQtYml0 IHZhbHVlIG9uDQo+ID4gPiArICB4NjQuDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dXJuIFRoZSB2 YWx1ZSBvZiB0aGUgQ29udHJvbCBSZWdpc3RlciAwDQo+IChDUjApLg0KPiA+ID4gKw0KPiA+ID4g KyoqLw0KPiA+ID4gK1VJTlRODQo+ID4gPiArRUZJQVBJDQo+ID4gPiArQXNtUmVhZENyMCAoDQo+ ID4gPiArICBWT0lEDQo+ID4gPiArICApDQo+ID4gPiArew0KPiA+ID4gKyAgcmV0dXJuIGdVbml0 VGVzdEhvc3RCYXNlTGliLlg4Ni0+QXNtUmVhZENyMCAoKTsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ ID4gPiArLyoqDQo+ID4gPiArICBSZWFkcyB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgQ29udHJv bCBSZWdpc3RlciAyDQo+ID4gKENSMikuDQo+ID4gPiArDQo+ID4gPiArICBSZWFkcyBhbmQgcmV0 dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiBDUjIuIFRoaXMNCj4gPiBmdW5jdGlvbiBpcyBvbmx5 IGF2YWlsYWJsZQ0KPiA+ID4gKyAgb24gSUEtMzIgYW5kIHg2NC4gVGhpcyByZXR1cm5zIGEgMzIt Yml0IHZhbHVlIG9uDQo+ID4gSUEtMzIgYW5kIGEgNjQtYml0IHZhbHVlIG9uDQo+ID4gPiArICB4 NjQuDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dXJuIFRoZSB2YWx1ZSBvZiB0aGUgQ29udHJvbCBS ZWdpc3RlciAyDQo+IChDUjIpLg0KPiA+ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4gK1VJTlRODQo+ ID4gPiArRUZJQVBJDQo+ID4gPiArQXNtUmVhZENyMiAoDQo+ID4gPiArICBWT0lEDQo+ID4gPiAr ICApDQo+ID4gPiArew0KPiA+ID4gKyAgcmV0dXJuIGdVbml0VGVzdEhvc3RCYXNlTGliLlg4Ni0+ QXNtUmVhZENyMiAoKTsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBS ZWFkcyB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgQ29udHJvbCBSZWdpc3RlciAzDQo+ID4gKENS MykuDQo+ID4gPiArDQo+ID4gPiArICBSZWFkcyBhbmQgcmV0dXJucyB0aGUgY3VycmVudCB2YWx1 ZSBvZiBDUjMuIFRoaXMNCj4gPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZQ0KPiA+ID4gKyAg b24gSUEtMzIgYW5kIHg2NC4gVGhpcyByZXR1cm5zIGEgMzItYml0IHZhbHVlIG9uDQo+ID4gSUEt MzIgYW5kIGEgNjQtYml0IHZhbHVlIG9uDQo+ID4gPiArICB4NjQuDQo+ID4gPiArDQo+ID4gPiAr ICBAcmV0dXJuIFRoZSB2YWx1ZSBvZiB0aGUgQ29udHJvbCBSZWdpc3RlciAzDQo+IChDUjMpLg0K PiA+ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4gK1VJTlRODQo+ID4gPiArRUZJQVBJDQo+ID4gPiAr QXNtUmVhZENyMyAoDQo+ID4gPiArICBWT0lEDQo+ID4gPiArICApDQo+ID4gPiArew0KPiA+ID4g KyAgcmV0dXJuIGdVbml0VGVzdEhvc3RCYXNlTGliLlg4Ni0+QXNtUmVhZENyMyAoKTsNCj4gPiA+ ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBSZWFkcyB0aGUgY3VycmVudCB2YWx1 ZSBvZiB0aGUgQ29udHJvbCBSZWdpc3RlciA0DQo+ID4gKENSNCkuDQo+ID4gPiArDQo+ID4gPiAr ICBSZWFkcyBhbmQgcmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiBDUjQuIFRoaXMNCj4gPiBm dW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZQ0KPiA+ID4gKyAgb24gSUEtMzIgYW5kIHg2NC4gVGhp cyByZXR1cm5zIGEgMzItYml0IHZhbHVlIG9uDQo+ID4gSUEtMzIgYW5kIGEgNjQtYml0IHZhbHVl IG9uDQo+ID4gPiArICB4NjQuDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dXJuIFRoZSB2YWx1ZSBv ZiB0aGUgQ29udHJvbCBSZWdpc3RlciA0DQo+IChDUjQpLg0KPiA+ID4gKw0KPiA+ID4gKyoqLw0K PiA+ID4gK1VJTlRODQo+ID4gPiArRUZJQVBJDQo+ID4gPiArQXNtUmVhZENyNCAoDQo+ID4gPiAr ICBWT0lEDQo+ID4gPiArICApDQo+ID4gPiArew0KPiA+ID4gKyAgcmV0dXJuIGdVbml0VGVzdEhv c3RCYXNlTGliLlg4Ni0+QXNtUmVhZENyNCAoKTsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiAr LyoqDQo+ID4gPiArICBXcml0ZXMgYSB2YWx1ZSB0byBDb250cm9sIFJlZ2lzdGVyIDAgKENSMCku DQo+ID4gPiArDQo+ID4gPiArICBXcml0ZXMgYW5kIHJldHVybnMgYSBuZXcgdmFsdWUgdG8gQ1Iw LiBUaGlzDQo+ID4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgb24NCj4gPiA+ICsgIElBLTMy IGFuZCB4NjQuIFRoaXMgd3JpdGVzIGEgMzItYml0IHZhbHVlIG9uIElBLQ0KPiAzMg0KPiA+IGFu ZCBhIDY0LWJpdCB2YWx1ZSBvbiB4NjQuDQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW0gIENyMCBU aGUgdmFsdWUgdG8gd3JpdGUgdG8gQ1IwLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHVybiBUaGUg dmFsdWUgd3JpdHRlbiB0byBDUjAuDQo+ID4gPiArDQo+ID4gPiArKiovDQo+ID4gPiArVUlOVE4N Cj4gPiA+ICtFRklBUEkNCj4gPiA+ICtBc21Xcml0ZUNyMCAoDQo+ID4gPiArICBVSU5UTiAgQ3Iw DQo+ID4gPiArICApDQo+ID4gPiArew0KPiA+ID4gKyAgcmV0dXJuIGdVbml0VGVzdEhvc3RCYXNl TGliLlg4Ni0+QXNtV3JpdGVDcjANCj4gKENyMCk7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4g Ky8qKg0KPiA+ID4gKyAgV3JpdGVzIGEgdmFsdWUgdG8gQ29udHJvbCBSZWdpc3RlciAyIChDUjIp Lg0KPiA+ID4gKw0KPiA+ID4gKyAgV3JpdGVzIGFuZCByZXR1cm5zIGEgbmV3IHZhbHVlIHRvIENS Mi4gVGhpcw0KPiA+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIG9uDQo+ID4gPiArICBJQS0z MiBhbmQgeDY0LiBUaGlzIHdyaXRlcyBhIDMyLWJpdCB2YWx1ZSBvbiBJQS0NCj4gMzINCj4gPiBh bmQgYSA2NC1iaXQgdmFsdWUgb24geDY0Lg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtICBDcjIg VGhlIHZhbHVlIHRvIHdyaXRlIHRvIENSMi4NCj4gPiA+ICsNCj4gPiA+ICsgIEByZXR1cm4gVGhl IHZhbHVlIHdyaXR0ZW4gdG8gQ1IyLg0KPiA+ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4gK1VJTlRO DQo+ID4gPiArRUZJQVBJDQo+ID4gPiArQXNtV3JpdGVDcjIgKA0KPiA+ID4gKyAgVUlOVE4gIENy Mg0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIHJldHVybiBnVW5pdFRlc3RIb3N0QmFz ZUxpYi5YODYtPkFzbVdyaXRlQ3IyDQo+IChDcjIpOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ ICsvKioNCj4gPiA+ICsgIFdyaXRlcyBhIHZhbHVlIHRvIENvbnRyb2wgUmVnaXN0ZXIgMyAoQ1Iz KS4NCj4gPiA+ICsNCj4gPiA+ICsgIFdyaXRlcyBhbmQgcmV0dXJucyBhIG5ldyB2YWx1ZSB0byBD UjMuIFRoaXMNCj4gPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBvbg0KPiA+ID4gKyAgSUEt MzIgYW5kIHg2NC4gVGhpcyB3cml0ZXMgYSAzMi1iaXQgdmFsdWUgb24gSUEtDQo+IDMyDQo+ID4g YW5kIGEgNjQtYml0IHZhbHVlIG9uIHg2NC4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbSAgQ3Iz IFRoZSB2YWx1ZSB0byB3cml0ZSB0byBDUjMuDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dXJuIFRo ZSB2YWx1ZSB3cml0dGVuIHRvIENSMy4NCj4gPiA+ICsNCj4gPiA+ICsqKi8NCj4gPiA+ICtVSU5U Tg0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4gK0FzbVdyaXRlQ3IzICgNCj4gPiA+ICsgIFVJTlROICBD cjMNCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArICByZXR1cm4gZ1VuaXRUZXN0SG9zdEJh c2VMaWIuWDg2LT5Bc21Xcml0ZUNyMw0KPiAoQ3IzKTsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4g PiArLyoqDQo+ID4gPiArICBXcml0ZXMgYSB2YWx1ZSB0byBDb250cm9sIFJlZ2lzdGVyIDQgKENS NCkuDQo+ID4gPiArDQo+ID4gPiArICBXcml0ZXMgYW5kIHJldHVybnMgYSBuZXcgdmFsdWUgdG8g Q1I0LiBUaGlzDQo+ID4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgb24NCj4gPiA+ICsgIElB LTMyIGFuZCB4NjQuIFRoaXMgd3JpdGVzIGEgMzItYml0IHZhbHVlIG9uIElBLQ0KPiAzMg0KPiA+ IGFuZCBhIDY0LWJpdCB2YWx1ZSBvbiB4NjQuDQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW0gIENy NCBUaGUgdmFsdWUgdG8gd3JpdGUgdG8gQ1I0Lg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHVybiBU aGUgdmFsdWUgd3JpdHRlbiB0byBDUjQuDQo+ID4gPiArDQo+ID4gPiArKiovDQo+ID4gPiArVUlO VE4NCj4gPiA+ICtFRklBUEkNCj4gPiA+ICtBc21Xcml0ZUNyNCAoDQo+ID4gPiArICBVSU5UTiAg Q3I0DQo+ID4gPiArICApDQo+ID4gPiArew0KPiA+ID4gKyAgcmV0dXJuIGdVbml0VGVzdEhvc3RC YXNlTGliLlg4Ni0+QXNtV3JpdGVDcjQNCj4gKENyNCk7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ ID4gKy8qKg0KPiA+ID4gKyAgUmVhZHMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgRGVidWcgUmVnaXN0 ZXIgMA0KPiAoRFIwKS4NCj4gPiA+ICsNCj4gPiA+ICsgIFJlYWRzIGFuZCByZXR1cm5zIHRoZSBj dXJyZW50IHZhbHVlIG9mIERSMC4gVGhpcw0KPiA+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxl DQo+ID4gPiArICBvbiBJQS0zMiBhbmQgeDY0LiBUaGlzIHJldHVybnMgYSAzMi1iaXQgdmFsdWUg b24NCj4gPiBJQS0zMiBhbmQgYSA2NC1iaXQgdmFsdWUgb24NCj4gPiA+ICsgIHg2NC4NCj4gPiA+ ICsNCj4gPiA+ICsgIEByZXR1cm4gVGhlIHZhbHVlIG9mIERlYnVnIFJlZ2lzdGVyIDAgKERSMCku DQo+ID4gPiArDQo+ID4gPiArKiovDQo+ID4gPiArVUlOVE4NCj4gPiA+ICtFRklBUEkNCj4gPiA+ ICtBc21SZWFkRHIwICgNCj4gPiA+ICsgIFZPSUQNCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4g PiArICByZXR1cm4gZ1VuaXRUZXN0SG9zdEJhc2VMaWIuWDg2LT5Bc21SZWFkRHIwICgpOw0KPiA+ ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIFJlYWRzIHRoZSBjdXJyZW50IHZh bHVlIG9mIERlYnVnIFJlZ2lzdGVyIDENCj4gKERSMSkuDQo+ID4gPiArDQo+ID4gPiArICBSZWFk cyBhbmQgcmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiBEUjEuIFRoaXMNCj4gPiBmdW5jdGlv biBpcyBvbmx5IGF2YWlsYWJsZQ0KPiA+ID4gKyAgb24gSUEtMzIgYW5kIHg2NC4gVGhpcyByZXR1 cm5zIGEgMzItYml0IHZhbHVlIG9uDQo+ID4gSUEtMzIgYW5kIGEgNjQtYml0IHZhbHVlIG9uDQo+ ID4gPiArICB4NjQuDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dXJuIFRoZSB2YWx1ZSBvZiBEZWJ1 ZyBSZWdpc3RlciAxIChEUjEpLg0KPiA+ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4gK1VJTlRODQo+ ID4gPiArRUZJQVBJDQo+ID4gPiArQXNtUmVhZERyMSAoDQo+ID4gPiArICBWT0lEDQo+ID4gPiAr ICApDQo+ID4gPiArew0KPiA+ID4gKyAgcmV0dXJuIGdVbml0VGVzdEhvc3RCYXNlTGliLlg4Ni0+ QXNtUmVhZERyMSAoKTsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBS ZWFkcyB0aGUgY3VycmVudCB2YWx1ZSBvZiBEZWJ1ZyBSZWdpc3RlciAyDQo+IChEUjIpLg0KPiA+ ID4gKw0KPiA+ID4gKyAgUmVhZHMgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgRFIy LiBUaGlzDQo+ID4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUNCj4gPiA+ICsgIG9uIElBLTMy IGFuZCB4NjQuIFRoaXMgcmV0dXJucyBhIDMyLWJpdCB2YWx1ZSBvbg0KPiA+IElBLTMyIGFuZCBh IDY0LWJpdCB2YWx1ZSBvbg0KPiA+ID4gKyAgeDY0Lg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHVy biBUaGUgdmFsdWUgb2YgRGVidWcgUmVnaXN0ZXIgMiAoRFIyKS4NCj4gPiA+ICsNCj4gPiA+ICsq Ki8NCj4gPiA+ICtVSU5UTg0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4gK0FzbVJlYWREcjIgKA0KPiA+ ID4gKyAgVk9JRA0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIHJldHVybiBnVW5pdFRl c3RIb3N0QmFzZUxpYi5YODYtPkFzbVJlYWREcjIgKCk7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ ID4gKy8qKg0KPiA+ID4gKyAgUmVhZHMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgRGVidWcgUmVnaXN0 ZXIgMw0KPiAoRFIzKS4NCj4gPiA+ICsNCj4gPiA+ICsgIFJlYWRzIGFuZCByZXR1cm5zIHRoZSBj dXJyZW50IHZhbHVlIG9mIERSMy4gVGhpcw0KPiA+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxl DQo+ID4gPiArICBvbiBJQS0zMiBhbmQgeDY0LiBUaGlzIHJldHVybnMgYSAzMi1iaXQgdmFsdWUg b24NCj4gPiBJQS0zMiBhbmQgYSA2NC1iaXQgdmFsdWUgb24NCj4gPiA+ICsgIHg2NC4NCj4gPiA+ ICsNCj4gPiA+ICsgIEByZXR1cm4gVGhlIHZhbHVlIG9mIERlYnVnIFJlZ2lzdGVyIDMgKERSMyku DQo+ID4gPiArDQo+ID4gPiArKiovDQo+ID4gPiArVUlOVE4NCj4gPiA+ICtFRklBUEkNCj4gPiA+ ICtBc21SZWFkRHIzICgNCj4gPiA+ICsgIFZPSUQNCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4g PiArICByZXR1cm4gZ1VuaXRUZXN0SG9zdEJhc2VMaWIuWDg2LT5Bc21SZWFkRHIzICgpOw0KPiA+ ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIFJlYWRzIHRoZSBjdXJyZW50IHZh bHVlIG9mIERlYnVnIFJlZ2lzdGVyIDQNCj4gKERSNCkuDQo+ID4gPiArDQo+ID4gPiArICBSZWFk cyBhbmQgcmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiBEUjQuIFRoaXMNCj4gPiBmdW5jdGlv biBpcyBvbmx5IGF2YWlsYWJsZQ0KPiA+ID4gKyAgb24gSUEtMzIgYW5kIHg2NC4gVGhpcyByZXR1 cm5zIGEgMzItYml0IHZhbHVlIG9uDQo+ID4gSUEtMzIgYW5kIGEgNjQtYml0IHZhbHVlIG9uDQo+ ID4gPiArICB4NjQuDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dXJuIFRoZSB2YWx1ZSBvZiBEZWJ1 ZyBSZWdpc3RlciA0IChEUjQpLg0KPiA+ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4gK1VJTlRODQo+ ID4gPiArRUZJQVBJDQo+ID4gPiArQXNtUmVhZERyNCAoDQo+ID4gPiArICBWT0lEDQo+ID4gPiAr ICApDQo+ID4gPiArew0KPiA+ID4gKyAgcmV0dXJuIGdVbml0VGVzdEhvc3RCYXNlTGliLlg4Ni0+ QXNtUmVhZERyNCAoKTsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBS ZWFkcyB0aGUgY3VycmVudCB2YWx1ZSBvZiBEZWJ1ZyBSZWdpc3RlciA1DQo+IChEUjUpLg0KPiA+ ID4gKw0KPiA+ID4gKyAgUmVhZHMgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgRFI1 LiBUaGlzDQo+ID4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUNCj4gPiA+ICsgIG9uIElBLTMy IGFuZCB4NjQuIFRoaXMgcmV0dXJucyBhIDMyLWJpdCB2YWx1ZSBvbg0KPiA+IElBLTMyIGFuZCBh IDY0LWJpdCB2YWx1ZSBvbg0KPiA+ID4gKyAgeDY0Lg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHVy biBUaGUgdmFsdWUgb2YgRGVidWcgUmVnaXN0ZXIgNSAoRFI1KS4NCj4gPiA+ICsNCj4gPiA+ICsq Ki8NCj4gPiA+ICtVSU5UTg0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4gK0FzbVJlYWREcjUgKA0KPiA+ ID4gKyAgVk9JRA0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIHJldHVybiBnVW5pdFRl c3RIb3N0QmFzZUxpYi5YODYtPkFzbVJlYWREcjUgKCk7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ ID4gKy8qKg0KPiA+ID4gKyAgUmVhZHMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgRGVidWcgUmVnaXN0 ZXIgNg0KPiAoRFI2KS4NCj4gPiA+ICsNCj4gPiA+ICsgIFJlYWRzIGFuZCByZXR1cm5zIHRoZSBj dXJyZW50IHZhbHVlIG9mIERSNi4gVGhpcw0KPiA+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxl DQo+ID4gPiArICBvbiBJQS0zMiBhbmQgeDY0LiBUaGlzIHJldHVybnMgYSAzMi1iaXQgdmFsdWUg b24NCj4gPiBJQS0zMiBhbmQgYSA2NC1iaXQgdmFsdWUgb24NCj4gPiA+ICsgIHg2NC4NCj4gPiA+ ICsNCj4gPiA+ICsgIEByZXR1cm4gVGhlIHZhbHVlIG9mIERlYnVnIFJlZ2lzdGVyIDYgKERSNiku DQo+ID4gPiArDQo+ID4gPiArKiovDQo+ID4gPiArVUlOVE4NCj4gPiA+ICtFRklBUEkNCj4gPiA+ ICtBc21SZWFkRHI2ICgNCj4gPiA+ICsgIFZPSUQNCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4g PiArICByZXR1cm4gZ1VuaXRUZXN0SG9zdEJhc2VMaWIuWDg2LT5Bc21SZWFkRHI2ICgpOw0KPiA+ ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIFJlYWRzIHRoZSBjdXJyZW50IHZh bHVlIG9mIERlYnVnIFJlZ2lzdGVyIDcNCj4gKERSNykuDQo+ID4gPiArDQo+ID4gPiArICBSZWFk cyBhbmQgcmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiBEUjcuIFRoaXMNCj4gPiBmdW5jdGlv biBpcyBvbmx5IGF2YWlsYWJsZQ0KPiA+ID4gKyAgb24gSUEtMzIgYW5kIHg2NC4gVGhpcyByZXR1 cm5zIGEgMzItYml0IHZhbHVlIG9uDQo+ID4gSUEtMzIgYW5kIGEgNjQtYml0IHZhbHVlIG9uDQo+ ID4gPiArICB4NjQuDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dXJuIFRoZSB2YWx1ZSBvZiBEZWJ1 ZyBSZWdpc3RlciA3IChEUjcpLg0KPiA+ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4gK1VJTlRODQo+ ID4gPiArRUZJQVBJDQo+ID4gPiArQXNtUmVhZERyNyAoDQo+ID4gPiArICBWT0lEDQo+ID4gPiAr ICApDQo+ID4gPiArew0KPiA+ID4gKyAgcmV0dXJuIGdVbml0VGVzdEhvc3RCYXNlTGliLlg4Ni0+ QXNtUmVhZERyNyAoKTsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBX cml0ZXMgYSB2YWx1ZSB0byBEZWJ1ZyBSZWdpc3RlciAwIChEUjApLg0KPiA+ID4gKw0KPiA+ID4g KyAgV3JpdGVzIGFuZCByZXR1cm5zIGEgbmV3IHZhbHVlIHRvIERSMC4gVGhpcw0KPiA+IGZ1bmN0 aW9uIGlzIG9ubHkgYXZhaWxhYmxlIG9uDQo+ID4gPiArICBJQS0zMiBhbmQgeDY0LiBUaGlzIHdy aXRlcyBhIDMyLWJpdCB2YWx1ZSBvbiBJQS0NCj4gMzINCj4gPiBhbmQgYSA2NC1iaXQgdmFsdWUg b24geDY0Lg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtICBEcjAgVGhlIHZhbHVlIHRvIHdyaXRl IHRvIERyMC4NCj4gPiA+ICsNCj4gPiA+ICsgIEByZXR1cm4gVGhlIHZhbHVlIHdyaXR0ZW4gdG8g RGVidWcgUmVnaXN0ZXIgMA0KPiA+IChEUjApLg0KPiA+ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4g K1VJTlRODQo+ID4gPiArRUZJQVBJDQo+ID4gPiArQXNtV3JpdGVEcjAgKA0KPiA+ID4gKyAgVUlO VE4gIERyMA0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIHJldHVybiBnVW5pdFRlc3RI b3N0QmFzZUxpYi5YODYtPkFzbVdyaXRlRHIwDQo+IChEcjApOw0KPiA+ID4gK30NCj4gPiA+ICsN Cj4gPiA+ICsvKioNCj4gPiA+ICsgIFdyaXRlcyBhIHZhbHVlIHRvIERlYnVnIFJlZ2lzdGVyIDEg KERSMSkuDQo+ID4gPiArDQo+ID4gPiArICBXcml0ZXMgYW5kIHJldHVybnMgYSBuZXcgdmFsdWUg dG8gRFIxLiBUaGlzDQo+ID4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgb24NCj4gPiA+ICsg IElBLTMyIGFuZCB4NjQuIFRoaXMgd3JpdGVzIGEgMzItYml0IHZhbHVlIG9uIElBLQ0KPiAzMg0K PiA+IGFuZCBhIDY0LWJpdCB2YWx1ZSBvbiB4NjQuDQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW0g IERyMSBUaGUgdmFsdWUgdG8gd3JpdGUgdG8gRHIxLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHVy biBUaGUgdmFsdWUgd3JpdHRlbiB0byBEZWJ1ZyBSZWdpc3RlciAxDQo+ID4gKERSMSkuDQo+ID4g PiArDQo+ID4gPiArKiovDQo+ID4gPiArVUlOVE4NCj4gPiA+ICtFRklBUEkNCj4gPiA+ICtBc21X cml0ZURyMSAoDQo+ID4gPiArICBVSU5UTiAgRHIxDQo+ID4gPiArICApDQo+ID4gPiArew0KPiA+ ID4gKyAgcmV0dXJuIGdVbml0VGVzdEhvc3RCYXNlTGliLlg4Ni0+QXNtV3JpdGVEcjENCj4gKERy MSk7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgV3JpdGVzIGEgdmFs dWUgdG8gRGVidWcgUmVnaXN0ZXIgMiAoRFIyKS4NCj4gPiA+ICsNCj4gPiA+ICsgIFdyaXRlcyBh bmQgcmV0dXJucyBhIG5ldyB2YWx1ZSB0byBEUjIuIFRoaXMNCj4gPiBmdW5jdGlvbiBpcyBvbmx5 IGF2YWlsYWJsZSBvbg0KPiA+ID4gKyAgSUEtMzIgYW5kIHg2NC4gVGhpcyB3cml0ZXMgYSAzMi1i aXQgdmFsdWUgb24gSUEtDQo+IDMyDQo+ID4gYW5kIGEgNjQtYml0IHZhbHVlIG9uIHg2NC4NCj4g PiA+ICsNCj4gPiA+ICsgIEBwYXJhbSAgRHIyIFRoZSB2YWx1ZSB0byB3cml0ZSB0byBEcjIuDQo+ ID4gPiArDQo+ID4gPiArICBAcmV0dXJuIFRoZSB2YWx1ZSB3cml0dGVuIHRvIERlYnVnIFJlZ2lz dGVyIDINCj4gPiAoRFIyKS4NCj4gPiA+ICsNCj4gPiA+ICsqKi8NCj4gPiA+ICtVSU5UTg0KPiA+ ID4gK0VGSUFQSQ0KPiA+ID4gK0FzbVdyaXRlRHIyICgNCj4gPiA+ICsgIFVJTlROICBEcjINCj4g PiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArICByZXR1cm4gZ1VuaXRUZXN0SG9zdEJhc2VMaWIu WDg2LT5Bc21Xcml0ZURyMg0KPiAoRHIyKTsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoq DQo+ID4gPiArICBXcml0ZXMgYSB2YWx1ZSB0byBEZWJ1ZyBSZWdpc3RlciAzIChEUjMpLg0KPiA+ ID4gKw0KPiA+ID4gKyAgV3JpdGVzIGFuZCByZXR1cm5zIGEgbmV3IHZhbHVlIHRvIERSMy4gVGhp cw0KPiA+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIG9uDQo+ID4gPiArICBJQS0zMiBhbmQg eDY0LiBUaGlzIHdyaXRlcyBhIDMyLWJpdCB2YWx1ZSBvbiBJQS0NCj4gMzINCj4gPiBhbmQgYSA2 NC1iaXQgdmFsdWUgb24geDY0Lg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtICBEcjMgVGhlIHZh bHVlIHRvIHdyaXRlIHRvIERyMy4NCj4gPiA+ICsNCj4gPiA+ICsgIEByZXR1cm4gVGhlIHZhbHVl IHdyaXR0ZW4gdG8gRGVidWcgUmVnaXN0ZXIgMw0KPiA+IChEUjMpLg0KPiA+ID4gKw0KPiA+ID4g KyoqLw0KPiA+ID4gK1VJTlRODQo+ID4gPiArRUZJQVBJDQo+ID4gPiArQXNtV3JpdGVEcjMgKA0K PiA+ID4gKyAgVUlOVE4gIERyMw0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIHJldHVy biBnVW5pdFRlc3RIb3N0QmFzZUxpYi5YODYtPkFzbVdyaXRlRHIzDQo+IChEcjMpOw0KPiA+ID4g K30NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIFdyaXRlcyBhIHZhbHVlIHRvIERlYnVn IFJlZ2lzdGVyIDQgKERSNCkuDQo+ID4gPiArDQo+ID4gPiArICBXcml0ZXMgYW5kIHJldHVybnMg YSBuZXcgdmFsdWUgdG8gRFI0LiBUaGlzDQo+ID4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUg b24NCj4gPiA+ICsgIElBLTMyIGFuZCB4NjQuIFRoaXMgd3JpdGVzIGEgMzItYml0IHZhbHVlIG9u IElBLQ0KPiAzMg0KPiA+IGFuZCBhIDY0LWJpdCB2YWx1ZSBvbiB4NjQuDQo+ID4gPiArDQo+ID4g PiArICBAcGFyYW0gIERyNCBUaGUgdmFsdWUgdG8gd3JpdGUgdG8gRHI0Lg0KPiA+ID4gKw0KPiA+ ID4gKyAgQHJldHVybiBUaGUgdmFsdWUgd3JpdHRlbiB0byBEZWJ1ZyBSZWdpc3RlciA0DQo+ID4g KERSNCkuDQo+ID4gPiArDQo+ID4gPiArKiovDQo+ID4gPiArVUlOVE4NCj4gPiA+ICtFRklBUEkN Cj4gPiA+ICtBc21Xcml0ZURyNCAoDQo+ID4gPiArICBVSU5UTiAgRHI0DQo+ID4gPiArICApDQo+ ID4gPiArew0KPiA+ID4gKyAgcmV0dXJuIGdVbml0VGVzdEhvc3RCYXNlTGliLlg4Ni0+QXNtV3Jp dGVEcjQNCj4gKERyNCk7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAg V3JpdGVzIGEgdmFsdWUgdG8gRGVidWcgUmVnaXN0ZXIgNSAoRFI1KS4NCj4gPiA+ICsNCj4gPiA+ ICsgIFdyaXRlcyBhbmQgcmV0dXJucyBhIG5ldyB2YWx1ZSB0byBEUjUuIFRoaXMNCj4gPiBmdW5j dGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBvbg0KPiA+ID4gKyAgSUEtMzIgYW5kIHg2NC4gVGhpcyB3 cml0ZXMgYSAzMi1iaXQgdmFsdWUgb24gSUEtDQo+IDMyDQo+ID4gYW5kIGEgNjQtYml0IHZhbHVl IG9uIHg2NC4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbSAgRHI1IFRoZSB2YWx1ZSB0byB3cml0 ZSB0byBEcjUuDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dXJuIFRoZSB2YWx1ZSB3cml0dGVuIHRv IERlYnVnIFJlZ2lzdGVyIDUNCj4gPiAoRFI1KS4NCj4gPiA+ICsNCj4gPiA+ICsqKi8NCj4gPiA+ ICtVSU5UTg0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4gK0FzbVdyaXRlRHI1ICgNCj4gPiA+ICsgIFVJ TlROICBEcjUNCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArICByZXR1cm4gZ1VuaXRUZXN0 SG9zdEJhc2VMaWIuWDg2LT5Bc21Xcml0ZURyNQ0KPiAoRHI1KTsNCj4gPiA+ICt9DQo+ID4gPiAr DQo+ID4gPiArLyoqDQo+ID4gPiArICBXcml0ZXMgYSB2YWx1ZSB0byBEZWJ1ZyBSZWdpc3RlciA2 IChEUjYpLg0KPiA+ID4gKw0KPiA+ID4gKyAgV3JpdGVzIGFuZCByZXR1cm5zIGEgbmV3IHZhbHVl IHRvIERSNi4gVGhpcw0KPiA+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIG9uDQo+ID4gPiAr ICBJQS0zMiBhbmQgeDY0LiBUaGlzIHdyaXRlcyBhIDMyLWJpdCB2YWx1ZSBvbiBJQS0NCj4gMzIN Cj4gPiBhbmQgYSA2NC1iaXQgdmFsdWUgb24geDY0Lg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFt ICBEcjYgVGhlIHZhbHVlIHRvIHdyaXRlIHRvIERyNi4NCj4gPiA+ICsNCj4gPiA+ICsgIEByZXR1 cm4gVGhlIHZhbHVlIHdyaXR0ZW4gdG8gRGVidWcgUmVnaXN0ZXIgNg0KPiA+IChEUjYpLg0KPiA+ ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4gK1VJTlRODQo+ID4gPiArRUZJQVBJDQo+ID4gPiArQXNt V3JpdGVEcjYgKA0KPiA+ID4gKyAgVUlOVE4gIERyNg0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4g PiA+ICsgIHJldHVybiBnVW5pdFRlc3RIb3N0QmFzZUxpYi5YODYtPkFzbVdyaXRlRHI2DQo+IChE cjYpOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIFdyaXRlcyBhIHZh bHVlIHRvIERlYnVnIFJlZ2lzdGVyIDcgKERSNykuDQo+ID4gPiArDQo+ID4gPiArICBXcml0ZXMg YW5kIHJldHVybnMgYSBuZXcgdmFsdWUgdG8gRFI3LiBUaGlzDQo+ID4gZnVuY3Rpb24gaXMgb25s eSBhdmFpbGFibGUgb24NCj4gPiA+ICsgIElBLTMyIGFuZCB4NjQuIFRoaXMgd3JpdGVzIGEgMzIt Yml0IHZhbHVlIG9uIElBLQ0KPiAzMg0KPiA+IGFuZCBhIDY0LWJpdCB2YWx1ZSBvbiB4NjQuDQo+ ID4gPiArDQo+ID4gPiArICBAcGFyYW0gIERyNyBUaGUgdmFsdWUgdG8gd3JpdGUgdG8gRHI3Lg0K PiA+ID4gKw0KPiA+ID4gKyAgQHJldHVybiBUaGUgdmFsdWUgd3JpdHRlbiB0byBEZWJ1ZyBSZWdp c3RlciA3DQo+ID4gKERSNykuDQo+ID4gPiArDQo+ID4gPiArKiovDQo+ID4gPiArVUlOVE4NCj4g PiA+ICtFRklBUEkNCj4gPiA+ICtBc21Xcml0ZURyNyAoDQo+ID4gPiArICBVSU5UTiAgRHI3DQo+ ID4gPiArICApDQo+ID4gPiArew0KPiA+ID4gKyAgcmV0dXJuIGdVbml0VGVzdEhvc3RCYXNlTGli Llg4Ni0+QXNtV3JpdGVEcjcNCj4gKERyNyk7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gKy8q Kg0KPiA+ID4gKyAgUmVhZHMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgQ29kZSBTZWdtZW50IFJlZ2lz dGVyDQo+ID4gKENTKS4NCj4gPiA+ICsNCj4gPiA+ICsgIFJlYWRzIGFuZCByZXR1cm5zIHRoZSBj dXJyZW50IHZhbHVlIG9mIENTLiBUaGlzDQo+ID4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUg b24NCj4gPiA+ICsgIElBLTMyIGFuZCB4NjQuDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dXJuIFRo ZSBjdXJyZW50IHZhbHVlIG9mIENTLg0KPiA+ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4gK1VJTlQx Ng0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4gK0FzbVJlYWRDcyAoDQo+ID4gPiArICBWT0lEDQo+ID4g PiArICApDQo+ID4gPiArew0KPiA+ID4gKyAgcmV0dXJuIGdVbml0VGVzdEhvc3RCYXNlTGliLlg4 Ni0+QXNtUmVhZENzICgpOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsg IFJlYWRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIERhdGEgU2VnbWVudCBSZWdpc3Rlcg0KPiA+IChE UykuDQo+ID4gPiArDQo+ID4gPiArICBSZWFkcyBhbmQgcmV0dXJucyB0aGUgY3VycmVudCB2YWx1 ZSBvZiBEUy4gVGhpcw0KPiA+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIG9uDQo+ID4gPiAr ICBJQS0zMiBhbmQgeDY0Lg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHVybiBUaGUgY3VycmVudCB2 YWx1ZSBvZiBEUy4NCj4gPiA+ICsNCj4gPiA+ICsqKi8NCj4gPiA+ICtVSU5UMTYNCj4gPiA+ICtF RklBUEkNCj4gPiA+ICtBc21SZWFkRHMgKA0KPiA+ID4gKyAgVk9JRA0KPiA+ID4gKyAgKQ0KPiA+ ID4gK3sNCj4gPiA+ICsgIHJldHVybiBnVW5pdFRlc3RIb3N0QmFzZUxpYi5YODYtPkFzbVJlYWRE cyAoKTsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBSZWFkcyB0aGUg Y3VycmVudCB2YWx1ZSBvZiBFeHRyYSBTZWdtZW50IFJlZ2lzdGVyDQo+ID4gKEVTKS4NCj4gPiA+ ICsNCj4gPiA+ICsgIFJlYWRzIGFuZCByZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVlIG9mIEVTLiBU aGlzDQo+ID4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgb24NCj4gPiA+ICsgIElBLTMyIGFu ZCB4NjQuDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dXJuIFRoZSBjdXJyZW50IHZhbHVlIG9mIEVT Lg0KPiA+ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4gK1VJTlQxNg0KPiA+ID4gK0VGSUFQSQ0KPiA+ ID4gK0FzbVJlYWRFcyAoDQo+ID4gPiArICBWT0lEDQo+ID4gPiArICApDQo+ID4gPiArew0KPiA+ ID4gKyAgcmV0dXJuIGdVbml0VGVzdEhvc3RCYXNlTGliLlg4Ni0+QXNtUmVhZEVzICgpOw0KPiA+ ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIFJlYWRzIHRoZSBjdXJyZW50IHZh bHVlIG9mIEZTIERhdGEgU2VnbWVudA0KPiBSZWdpc3Rlcg0KPiA+IChGUykuDQo+ID4gPiArDQo+ ID4gPiArICBSZWFkcyBhbmQgcmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiBGUy4gVGhpcw0K PiA+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIG9uDQo+ID4gPiArICBJQS0zMiBhbmQgeDY0 Lg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHVybiBUaGUgY3VycmVudCB2YWx1ZSBvZiBGUy4NCj4g PiA+ICsNCj4gPiA+ICsqKi8NCj4gPiA+ICtVSU5UMTYNCj4gPiA+ICtFRklBUEkNCj4gPiA+ICtB c21SZWFkRnMgKA0KPiA+ID4gKyAgVk9JRA0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsg IHJldHVybiBnVW5pdFRlc3RIb3N0QmFzZUxpYi5YODYtPkFzbVJlYWRGcyAoKTsNCj4gPiA+ICt9 DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBSZWFkcyB0aGUgY3VycmVudCB2YWx1ZSBv ZiBHUyBEYXRhIFNlZ21lbnQNCj4gUmVnaXN0ZXINCj4gPiAoR1MpLg0KPiA+ID4gKw0KPiA+ID4g KyAgUmVhZHMgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgR1MuIFRoaXMNCj4gPiBm dW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBvbg0KPiA+ID4gKyAgSUEtMzIgYW5kIHg2NC4NCj4g PiA+ICsNCj4gPiA+ICsgIEByZXR1cm4gVGhlIGN1cnJlbnQgdmFsdWUgb2YgR1MuDQo+ID4gPiAr DQo+ID4gPiArKiovDQo+ID4gPiArVUlOVDE2DQo+ID4gPiArRUZJQVBJDQo+ID4gPiArQXNtUmVh ZEdzICgNCj4gPiA+ICsgIFZPSUQNCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArICByZXR1 cm4gZ1VuaXRUZXN0SG9zdEJhc2VMaWIuWDg2LT5Bc21SZWFkR3MgKCk7DQo+ID4gPiArfQ0KPiA+ ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgUmVhZHMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgU3Rh Y2sgU2VnbWVudCBSZWdpc3Rlcg0KPiA+IChTUykuDQo+ID4gPiArDQo+ID4gPiArICBSZWFkcyBh bmQgcmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiBTUy4gVGhpcw0KPiA+IGZ1bmN0aW9uIGlz IG9ubHkgYXZhaWxhYmxlIG9uDQo+ID4gPiArICBJQS0zMiBhbmQgeDY0Lg0KPiA+ID4gKw0KPiA+ ID4gKyAgQHJldHVybiBUaGUgY3VycmVudCB2YWx1ZSBvZiBTUy4NCj4gPiA+ICsNCj4gPiA+ICsq Ki8NCj4gPiA+ICtVSU5UMTYNCj4gPiA+ICtFRklBUEkNCj4gPiA+ICtBc21SZWFkU3MgKA0KPiA+ ID4gKyAgVk9JRA0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIHJldHVybiBnVW5pdFRl c3RIb3N0QmFzZUxpYi5YODYtPkFzbVJlYWRTcyAoKTsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4g PiArLyoqDQo+ID4gPiArICBSZWFkcyB0aGUgY3VycmVudCB2YWx1ZSBvZiBUYXNrIFJlZ2lzdGVy IChUUikuDQo+ID4gPiArDQo+ID4gPiArICBSZWFkcyBhbmQgcmV0dXJucyB0aGUgY3VycmVudCB2 YWx1ZSBvZiBUUi4gVGhpcw0KPiA+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIG9uDQo+ID4g PiArICBJQS0zMiBhbmQgeDY0Lg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHVybiBUaGUgY3VycmVu dCB2YWx1ZSBvZiBUUi4NCj4gPiA+ICsNCj4gPiA+ICsqKi8NCj4gPiA+ICtVSU5UMTYNCj4gPiA+ ICtFRklBUEkNCj4gPiA+ICtBc21SZWFkVHIgKA0KPiA+ID4gKyAgVk9JRA0KPiA+ID4gKyAgKQ0K PiA+ID4gK3sNCj4gPiA+ICsgIHJldHVybiBnVW5pdFRlc3RIb3N0QmFzZUxpYi5YODYtPkFzbVJl YWRUciAoKTsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBSZWFkcyB0 aGUgY3VycmVudCBHbG9iYWwgRGVzY3JpcHRvciBUYWJsZQ0KPiA+IFJlZ2lzdGVyKEdEVFIpIGRl c2NyaXB0b3IuDQo+ID4gPiArDQo+ID4gPiArICBSZWFkcyBhbmQgcmV0dXJucyB0aGUgY3VycmVu dCBHRFRSIGRlc2NyaXB0b3IgYW5kDQo+ID4gcmV0dXJucyBpdCBpbiBHZHRyLiBUaGlzDQo+ID4g PiArICBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBvbiBJQS0zMiBhbmQgeDY0Lg0KPiA+ID4g Kw0KPiA+ID4gKyAgSWYgR2R0ciBpcyBOVUxMLCB0aGVuIEFTU0VSVCgpLg0KPiA+ID4gKw0KPiA+ ID4gKyAgQHBhcmFtICBHZHRyICBUaGUgcG9pbnRlciB0byBhIEdEVFIgZGVzY3JpcHRvci4NCj4g PiA+ICsNCj4gPiA+ICsqKi8NCj4gPiA+ICtWT0lEDQo+ID4gPiArRUZJQVBJDQo+ID4gPiArQXNt UmVhZEdkdHIgKA0KPiA+ID4gKyAgT1VUICAgICBJQTMyX0RFU0NSSVBUT1IgICAgICAgICAgICpH ZHRyDQo+ID4gPiArICApDQo+ID4gPiArew0KPiA+ID4gKyAgZ1VuaXRUZXN0SG9zdEJhc2VMaWIu WDg2LT5Bc21SZWFkR2R0ciAoR2R0cik7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gKy8qKg0K PiA+ID4gKyAgV3JpdGVzIHRoZSBjdXJyZW50IEdsb2JhbCBEZXNjcmlwdG9yIFRhYmxlDQo+IFJl Z2lzdGVyDQo+ID4gKEdEVFIpIGRlc2NyaXB0b3IuDQo+ID4gPiArDQo+ID4gPiArICBXcml0ZXMg YW5kIHRoZSBjdXJyZW50IEdEVFIgZGVzY3JpcHRvciBzcGVjaWZpZWQNCj4gYnkNCj4gPiBHZHRy LiBUaGlzIGZ1bmN0aW9uIGlzDQo+ID4gPiArICBvbmx5IGF2YWlsYWJsZSBvbiBJQS0zMiBhbmQg eDY0Lg0KPiA+ID4gKw0KPiA+ID4gKyAgSWYgR2R0ciBpcyBOVUxMLCB0aGVuIEFTU0VSVCgpLg0K PiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtICBHZHRyICBUaGUgcG9pbnRlciB0byBhIEdEVFIgZGVz Y3JpcHRvci4NCj4gPiA+ICsNCj4gPiA+ICsqKi8NCj4gPiA+ICtWT0lEDQo+ID4gPiArRUZJQVBJ DQo+ID4gPiArQXNtV3JpdGVHZHRyICgNCj4gPiA+ICsgIElOICAgICAgQ09OU1QgSUEzMl9ERVND UklQVE9SICAgICAqR2R0cg0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIGdVbml0VGVz dEhvc3RCYXNlTGliLlg4Ni0+QXNtV3JpdGVHZHRyIChHZHRyKTsNCj4gPiA+ICt9DQo+ID4gPiAr DQo+ID4gPiArLyoqDQo+ID4gPiArICBSZWFkcyB0aGUgY3VycmVudCBJbnRlcnJ1cHQgRGVzY3Jp cHRvciBUYWJsZQ0KPiA+IFJlZ2lzdGVyKElEVFIpIGRlc2NyaXB0b3IuDQo+ID4gPiArDQo+ID4g PiArICBSZWFkcyBhbmQgcmV0dXJucyB0aGUgY3VycmVudCBJRFRSIGRlc2NyaXB0b3IgYW5kDQo+ ID4gcmV0dXJucyBpdCBpbiBJZHRyLiBUaGlzDQo+ID4gPiArICBmdW5jdGlvbiBpcyBvbmx5IGF2 YWlsYWJsZSBvbiBJQS0zMiBhbmQgeDY0Lg0KPiA+ID4gKw0KPiA+ID4gKyAgSWYgSWR0ciBpcyBO VUxMLCB0aGVuIEFTU0VSVCgpLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtICBJZHRyICBUaGUg cG9pbnRlciB0byBhIElEVFIgZGVzY3JpcHRvci4NCj4gPiA+ICsNCj4gPiA+ICsqKi8NCj4gPiA+ ICtWT0lEDQo+ID4gPiArRUZJQVBJDQo+ID4gPiArQXNtUmVhZElkdHIgKA0KPiA+ID4gKyAgT1VU ICAgICBJQTMyX0RFU0NSSVBUT1IgICAgICAgICAgICpJZHRyDQo+ID4gPiArICApDQo+ID4gPiAr ew0KPiA+ID4gKyAgZ1VuaXRUZXN0SG9zdEJhc2VMaWIuWDg2LT5Bc21SZWFkSWR0ciAoSWR0cik7 DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgV3JpdGVzIHRoZSBjdXJy ZW50IEludGVycnVwdCBEZXNjcmlwdG9yIFRhYmxlDQo+ID4gUmVnaXN0ZXIoSURUUikgZGVzY3Jp cHRvci4NCj4gPiA+ICsNCj4gPiA+ICsgIFdyaXRlcyB0aGUgY3VycmVudCBJRFRSIGRlc2NyaXB0 b3IgYW5kIHJldHVybnMgaXQNCj4gPiBpbiBJZHRyLiBUaGlzIGZ1bmN0aW9uIGlzDQo+ID4gPiAr ICBvbmx5IGF2YWlsYWJsZSBvbiBJQS0zMiBhbmQgeDY0Lg0KPiA+ID4gKw0KPiA+ID4gKyAgSWYg SWR0ciBpcyBOVUxMLCB0aGVuIEFTU0VSVCgpLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtICBJ ZHRyICBUaGUgcG9pbnRlciB0byBhIElEVFIgZGVzY3JpcHRvci4NCj4gPiA+ICsNCj4gPiA+ICsq Ki8NCj4gPiA+ICtWT0lEDQo+ID4gPiArRUZJQVBJDQo+ID4gPiArQXNtV3JpdGVJZHRyICgNCj4g PiA+ICsgIElOICAgICAgQ09OU1QgSUEzMl9ERVNDUklQVE9SICAgICAqSWR0cg0KPiA+ID4gKyAg KQ0KPiA+ID4gK3sNCj4gPiA+ICsgIGdVbml0VGVzdEhvc3RCYXNlTGliLlg4Ni0+QXNtV3JpdGVJ ZHRyIChJZHRyKTsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBSZWFk cyB0aGUgY3VycmVudCBMb2NhbCBEZXNjcmlwdG9yIFRhYmxlDQo+ID4gUmVnaXN0ZXIoTERUUikg c2VsZWN0b3IuDQo+ID4gPiArDQo+ID4gPiArICBSZWFkcyBhbmQgcmV0dXJucyB0aGUgY3VycmVu dCAxNi1iaXQgTERUUg0KPiA+IGRlc2NyaXB0b3IgdmFsdWUuIFRoaXMgZnVuY3Rpb24gaXMNCj4g PiA+ICsgIG9ubHkgYXZhaWxhYmxlIG9uIElBLTMyIGFuZCB4NjQuDQo+ID4gPiArDQo+ID4gPiAr ICBAcmV0dXJuIFRoZSBjdXJyZW50IHNlbGVjdG9yIG9mIExEVC4NCj4gPiA+ICsNCj4gPiA+ICsq Ki8NCj4gPiA+ICtVSU5UMTYNCj4gPiA+ICtFRklBUEkNCj4gPiA+ICtBc21SZWFkTGR0ciAoDQo+ ID4gPiArICBWT0lEDQo+ID4gPiArICApDQo+ID4gPiArew0KPiA+ID4gKyAgcmV0dXJuIGdVbml0 VGVzdEhvc3RCYXNlTGliLlg4Ni0+QXNtUmVhZExkdHIgKCk7DQo+ID4gPiArfQ0KPiA+ID4gKw0K PiA+ID4gKy8qKg0KPiA+ID4gKyAgV3JpdGVzIHRoZSBjdXJyZW50IExvY2FsIERlc2NyaXB0b3Ig VGFibGUNCj4gUmVnaXN0ZXINCj4gPiAoTERUUikgc2VsZWN0b3IuDQo+ID4gPiArDQo+ID4gPiAr ICBXcml0ZXMgYW5kIHRoZSBjdXJyZW50IExEVFIgZGVzY3JpcHRvciBzcGVjaWZpZWQNCj4gYnkN Cj4gPiBMZHRyLiBUaGlzIGZ1bmN0aW9uIGlzDQo+ID4gPiArICBvbmx5IGF2YWlsYWJsZSBvbiBJ QS0zMiBhbmQgeDY0Lg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtICBMZHRyICAxNi1iaXQgTERU UiBzZWxlY3RvciB2YWx1ZS4NCj4gPiA+ICsNCj4gPiA+ICsqKi8NCj4gPiA+ICtWT0lEDQo+ID4g PiArRUZJQVBJDQo+ID4gPiArQXNtV3JpdGVMZHRyICgNCj4gPiA+ICsgIElOICAgICAgVUlOVDE2 ICAgICAgICAgICAgICAgICAgICBMZHRyDQo+ID4gPiArICApDQo+ID4gPiArew0KPiA+ID4gKyAg Z1VuaXRUZXN0SG9zdEJhc2VMaWIuWDg2LT5Bc21Xcml0ZUxkdHIgKExkdHIpOw0KPiA+ID4gK30N Cj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIFJlYWRzIHRoZSBjdXJyZW50IHZhbHVlIG9m IGEgUGVyZm9ybWFuY2UgQ291bnRlcg0KPiA+IChQTUMpLg0KPiA+ID4gKw0KPiA+ID4gKyAgUmVh ZHMgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgdmFsdWUgb2YNCj4gcGVyZm9ybWFuY2UNCj4gPiBj b3VudGVyIHNwZWNpZmllZCBieQ0KPiA+ID4gKyAgSW5kZXguIFRoaXMgZnVuY3Rpb24gaXMgb25s eSBhdmFpbGFibGUgb24gSUEtMzINCj4gYW5kDQo+ID4geDY0Lg0KPiA+ID4gKw0KPiA+ID4gKyAg QHBhcmFtICBJbmRleCBUaGUgMzItYml0IFBlcmZvcm1hbmNlIENvdW50ZXINCj4gaW5kZXgNCj4g PiB0byByZWFkLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHVybiBUaGUgdmFsdWUgb2YgdGhlIFBN QyBzcGVjaWZpZWQgYnkgSW5kZXguDQo+ID4gPiArDQo+ID4gPiArKiovDQo+ID4gPiArVUlOVDY0 DQo+ID4gPiArRUZJQVBJDQo+ID4gPiArQXNtUmVhZFBtYyAoDQo+ID4gPiArICBJTiAgICAgIFVJ TlQzMiAgICAgICAgICAgICAgICAgICAgSW5kZXgNCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4g PiArICByZXR1cm4gZ1VuaXRUZXN0SG9zdEJhc2VMaWIuWDg2LT5Bc21SZWFkUG1jDQo+ID4gKElu ZGV4KTsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBTZXRzIHVwIGEg bW9uaXRvciBidWZmZXIgdGhhdCBpcyB1c2VkIGJ5DQo+ID4gQXNtTXdhaXQoKS4NCj4gPiA+ICsN Cj4gPiA+ICsgIEV4ZWN1dGVzIGEgTU9OSVRPUiBpbnN0cnVjdGlvbiB3aXRoIHRoZSByZWdpc3Rl cg0KPiA+IHN0YXRlIHNwZWNpZmllZCBieSBFYXgsIEVjeA0KPiA+ID4gKyAgYW5kIEVkeC4gUmV0 dXJucyBFYXguIFRoaXMgZnVuY3Rpb24gaXMgb25seQ0KPiA+IGF2YWlsYWJsZSBvbiBJQS0zMiBh bmQgeDY0Lg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtICBFYXggVGhlIHZhbHVlIHRvIGxvYWQg aW50byBFQVggb3IgUkFYDQo+ID4gYmVmb3JlIGV4ZWN1dGluZyB0aGUgTU9OSVRPUg0KPiA+ID4g KyAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb24uDQo+ID4gPiArICBAcGFyYW0gIEVjeCBUaGUgdmFs dWUgdG8gbG9hZCBpbnRvIEVDWCBvciBSQ1gNCj4gPiBiZWZvcmUgZXhlY3V0aW5nIHRoZSBNT05J VE9SDQo+ID4gPiArICAgICAgICAgICAgICBpbnN0cnVjdGlvbi4NCj4gPiA+ICsgIEBwYXJhbSAg RWR4IFRoZSB2YWx1ZSB0byBsb2FkIGludG8gRURYIG9yIFJEWA0KPiA+IGJlZm9yZSBleGVjdXRp bmcgdGhlIE1PTklUT1INCj4gPiA+ICsgICAgICAgICAgICAgIGluc3RydWN0aW9uLg0KPiA+ID4g Kw0KPiA+ID4gKyAgQHJldHVybiBFYXgNCj4gPiA+ICsNCj4gPiA+ICsqKi8NCj4gPiA+ICtVSU5U Tg0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4gK0FzbU1vbml0b3IgKA0KPiA+ID4gKyAgSU4gICAgICBV SU5UTiAgICAgICAgICAgICAgICAgICAgIEVheCwNCj4gPiA+ICsgIElOICAgICAgVUlOVE4gICAg ICAgICAgICAgICAgICAgICBFY3gsDQo+ID4gPiArICBJTiAgICAgIFVJTlROICAgICAgICAgICAg ICAgICAgICAgRWR4DQo+ID4gPiArICApDQo+ID4gPiArew0KPiA+ID4gKyAgcmV0dXJuIGdVbml0 VGVzdEhvc3RCYXNlTGliLlg4Ni0+QXNtTW9uaXRvciAoRWF4LA0KPiA+IEVjeCwgRWR4KTsNCj4g PiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBFeGVjdXRlcyBhbiBNV0FJVCBp bnN0cnVjdGlvbi4NCj4gPiA+ICsNCj4gPiA+ICsgIEV4ZWN1dGVzIGFuIE1XQUlUIGluc3RydWN0 aW9uIHdpdGggdGhlIHJlZ2lzdGVyDQo+ID4gc3RhdGUgc3BlY2lmaWVkIGJ5IEVheCBhbmQNCj4g PiA+ICsgIEVjeC4gUmV0dXJucyBFYXguIFRoaXMgZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUN Cj4gPiBvbiBJQS0zMiBhbmQgeDY0Lg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtICBFYXggVGhl IHZhbHVlIHRvIGxvYWQgaW50byBFQVggb3IgUkFYDQo+ID4gYmVmb3JlIGV4ZWN1dGluZyB0aGUg TU9OSVRPUg0KPiA+ID4gKyAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb24uDQo+ID4gPiArICBAcGFy YW0gIEVjeCBUaGUgdmFsdWUgdG8gbG9hZCBpbnRvIEVDWCBvciBSQ1gNCj4gPiBiZWZvcmUgZXhl Y3V0aW5nIHRoZSBNT05JVE9SDQo+ID4gPiArICAgICAgICAgICAgICBpbnN0cnVjdGlvbi4NCj4g PiA+ICsNCj4gPiA+ICsgIEByZXR1cm4gRWF4DQo+ID4gPiArDQo+ID4gPiArKiovDQo+ID4gPiAr VUlOVE4NCj4gPiA+ICtFRklBUEkNCj4gPiA+ICtBc21Nd2FpdCAoDQo+ID4gPiArICBJTiAgICAg IFVJTlROICAgICAgICAgICAgICAgICAgICAgRWF4LA0KPiA+ID4gKyAgSU4gICAgICBVSU5UTiAg ICAgICAgICAgICAgICAgICAgIEVjeA0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIHJl dHVybiBnVW5pdFRlc3RIb3N0QmFzZUxpYi5YODYtPkFzbU13YWl0IChFYXgsDQo+ID4gRWN4KTsN Cj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBFeGVjdXRlcyBhIFdCSU5W RCBpbnN0cnVjdGlvbi4NCj4gPiA+ICsNCj4gPiA+ICsgIEV4ZWN1dGVzIGEgV0JJTlZEIGluc3Ry dWN0aW9uLiBUaGlzIGZ1bmN0aW9uIGlzDQo+ID4gb25seSBhdmFpbGFibGUgb24gSUEtMzIgYW5k DQo+ID4gPiArICB4NjQuDQo+ID4gPiArDQo+ID4gPiArKiovDQo+ID4gPiArVk9JRA0KPiA+ID4g K0VGSUFQSQ0KPiA+ID4gK0FzbVdiaW52ZCAoDQo+ID4gPiArICBWT0lEDQo+ID4gPiArICApDQo+ ID4gPiArew0KPiA+ID4gKyAgZ1VuaXRUZXN0SG9zdEJhc2VMaWIuWDg2LT5Bc21XYmludmQgKCk7 DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgRXhlY3V0ZXMgYSBJTlZE IGluc3RydWN0aW9uLg0KPiA+ID4gKw0KPiA+ID4gKyAgRXhlY3V0ZXMgYSBJTlZEIGluc3RydWN0 aW9uLiBUaGlzIGZ1bmN0aW9uIGlzDQo+IG9ubHkNCj4gPiBhdmFpbGFibGUgb24gSUEtMzIgYW5k DQo+ID4gPiArICB4NjQuDQo+ID4gPiArDQo+ID4gPiArKiovDQo+ID4gPiArVk9JRA0KPiA+ID4g K0VGSUFQSQ0KPiA+ID4gK0FzbUludmQgKA0KPiA+ID4gKyAgVk9JRA0KPiA+ID4gKyAgKQ0KPiA+ ID4gK3sNCj4gPiA+ICsgIGdVbml0VGVzdEhvc3RCYXNlTGliLlg4Ni0+QXNtSW52ZCAoKTsNCj4g PiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBGbHVzaGVzIGEgY2FjaGUgbGlu ZSBmcm9tIGFsbCB0aGUgaW5zdHJ1Y3Rpb24gYW5kDQo+ID4gZGF0YSBjYWNoZXMgd2l0aGluIHRo ZQ0KPiA+ID4gKyAgY29oZXJlbmN5IGRvbWFpbiBvZiB0aGUgQ1BVLg0KPiA+ID4gKw0KPiA+ID4g KyAgRmx1c2hlZCB0aGUgY2FjaGUgbGluZSBzcGVjaWZpZWQgYnkNCj4gTGluZWFyQWRkcmVzcywN Cj4gPiBhbmQgcmV0dXJucyBMaW5lYXJBZGRyZXNzLg0KPiA+ID4gKyAgVGhpcyBmdW5jdGlvbiBp cyBvbmx5IGF2YWlsYWJsZSBvbiBJQS0zMiBhbmQgeDY0Lg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBh cmFtICBMaW5lYXJBZGRyZXNzIFRoZSBhZGRyZXNzIG9mIHRoZSBjYWNoZQ0KPiBsaW5lDQo+ID4g dG8gZmx1c2guIElmIHRoZSBDUFUgaXMNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBp biBhIHBoeXNpY2FsIGFkZHJlc3NpbmcNCj4gPiBtb2RlLCB0aGVuIExpbmVhckFkZHJlc3MgaXMg YQ0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIHBoeXNpY2FsIGFkZHJlc3MuIElmIHRo ZQ0KPiBDUFUNCj4gPiBpcyBpbiBhIHZpcnR1YWwNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICBhZGRyZXNzaW5nIG1vZGUsIHRoZW4NCj4gPiBMaW5lYXJBZGRyZXNzIGlzIGEgdmlydHVh bA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3MuDQo+ID4gPiArDQo+ID4g PiArICBAcmV0dXJuIExpbmVhckFkZHJlc3MuDQo+ID4gPiArKiovDQo+ID4gPiArVk9JRCAqDQo+ ID4gPiArRUZJQVBJDQo+ID4gPiArQXNtRmx1c2hDYWNoZUxpbmUgKA0KPiA+ID4gKyAgSU4gICAg ICBWT0lEICAgICAgICAgICAgICAgICAgICAgICpMaW5lYXJBZGRyZXNzDQo+ID4gPiArICApDQo+ ID4gPiArew0KPiA+ID4gKyAgcmV0dXJuIGdVbml0VGVzdEhvc3RCYXNlTGliLlg4Ni0NCj4gPkFz bUZsdXNoQ2FjaGVMaW5lDQo+ID4gKExpbmVhckFkZHJlc3MpOw0KPiA+ID4gK30NCj4gPiA+ICsN Cj4gPiA+ICsvKioNCj4gPiA+ICsgIEVuYWJsZXMgdGhlIDMyLWJpdCBwYWdpbmcgbW9kZSBvbiB0 aGUgQ1BVLg0KPiA+ID4gKw0KPiA+ID4gKyAgRW5hYmxlcyB0aGUgMzItYml0IHBhZ2luZyBtb2Rl IG9uIHRoZSBDUFUuIENSMCwNCj4gPiBDUjMsIENSNCwgYW5kIHRoZSBwYWdlIHRhYmxlcw0KPiA+ ID4gKyAgbXVzdCBiZSBwcm9wZXJseSBpbml0aWFsaXplZCBwcmlvciB0byBjYWxsaW5nDQo+IHRo aXMNCj4gPiBzZXJ2aWNlLiBUaGlzIGZ1bmN0aW9uDQo+ID4gPiArICBhc3N1bWVzIHRoZSBjdXJy ZW50IGV4ZWN1dGlvbiBtb2RlIGlzIDMyLWJpdA0KPiA+IHByb3RlY3RlZCBtb2RlLiBUaGlzIGZ1 bmN0aW9uIGlzDQo+ID4gPiArICBvbmx5IGF2YWlsYWJsZSBvbiBJQS0zMi4gQWZ0ZXIgdGhlIDMy LWJpdCBwYWdpbmcNCj4gPiBtb2RlIGlzIGVuYWJsZWQsIGNvbnRyb2wgaXMNCj4gPiA+ICsgIHRy YW5zZmVycmVkIHRvIHRoZSBmdW5jdGlvbiBzcGVjaWZpZWQgYnkNCj4gRW50cnlQb2ludA0KPiA+ IHVzaW5nIHRoZSBuZXcgc3RhY2sNCj4gPiA+ICsgIHNwZWNpZmllZCBieSBOZXdTdGFjayBhbmQg cGFzc2luZyBpbiB0aGUNCj4gcGFyYW1ldGVycw0KPiA+IHNwZWNpZmllZCBieSBDb250ZXh0MSBh bmQNCj4gPiA+ICsgIENvbnRleHQyLiBDb250ZXh0MSBhbmQgQ29udGV4dDIgYXJlIG9wdGlvbmFs IGFuZA0KPiA+IG1heSBiZSBOVUxMLiBUaGUgZnVuY3Rpb24NCj4gPiA+ICsgIEVudHJ5UG9pbnQg bXVzdCBuZXZlciByZXR1cm4uDQo+ID4gPiArDQo+ID4gPiArICBJZiB0aGUgY3VycmVudCBleGVj dXRpb24gbW9kZSBpcyBub3QgMzItYml0DQo+ID4gcHJvdGVjdGVkIG1vZGUsIHRoZW4gQVNTRVJU KCkuDQo+ID4gPiArICBJZiBFbnRyeVBvaW50IGlzIE5VTEwsIHRoZW4gQVNTRVJUKCkuDQo+ID4g PiArICBJZiBOZXdTdGFjayBpcyBOVUxMLCB0aGVuIEFTU0VSVCgpLg0KPiA+ID4gKw0KPiA+ID4g KyAgVGhlcmUgYXJlIGEgbnVtYmVyIG9mIGNvbnN0cmFpbnRzIHRoYXQgbXVzdCBiZQ0KPiA+IGZv bGxvd2VkIGJlZm9yZSBjYWxsaW5nIHRoaXMNCj4gPiA+ICsgIGZ1bmN0aW9uOg0KPiA+ID4gKyAg MSkgIEludGVycnVwdHMgbXVzdCBiZSBkaXNhYmxlZC4NCj4gPiA+ICsgIDIpICBUaGUgY2FsbGVy IG11c3QgYmUgaW4gMzItYml0IHByb3RlY3RlZCBtb2RlDQo+ID4gd2l0aCBmbGF0IGRlc2NyaXB0 b3JzLiBUaGlzDQo+ID4gPiArICAgICAgbWVhbnMgYWxsIGRlc2NyaXB0b3JzIG11c3QgaGF2ZSBh IGJhc2Ugb2YgMA0KPiBhbmQNCj4gPiBhIGxpbWl0IG9mIDRHQi4NCj4gPiA+ICsgIDMpICBDUjAg YW5kIENSNCBtdXN0IGJlIGNvbXBhdGlibGUgd2l0aCAzMi1iaXQNCj4gPiBwcm90ZWN0ZWQgbW9k ZSB3aXRoIGZsYXQNCj4gPiA+ICsgICAgICBkZXNjcmlwdG9ycy4NCj4gPiA+ICsgIDQpICBDUjMg bXVzdCBwb2ludCB0byB2YWxpZCBwYWdlIHRhYmxlcyB0aGF0IHdpbGwNCj4gPiBiZSB1c2VkIG9u Y2UgdGhlIHRyYW5zaXRpb24NCj4gPiA+ICsgICAgICBpcyBjb21wbGV0ZSwgYW5kIHRob3NlIHBh Z2UgdGFibGVzIG11c3QNCj4gPiBndWFyYW50ZWUgdGhhdCB0aGUgcGFnZXMgZm9yIHRoaXMNCj4g PiA+ICsgICAgICBmdW5jdGlvbiBhbmQgdGhlIHN0YWNrIGFyZSBpZGVudGl0eSBtYXBwZWQuDQo+ ID4gPiArDQo+ID4gPiArICBAcGFyYW0gIEVudHJ5UG9pbnQgIEEgcG9pbnRlciB0byBmdW5jdGlv biB0byBjYWxsDQo+ID4gd2l0aCB0aGUgbmV3IHN0YWNrIGFmdGVyDQo+ID4gPiArICAgICAgICAg ICAgICAgICAgICAgIHBhZ2luZyBpcyBlbmFibGVkLg0KPiA+ID4gKyAgQHBhcmFtICBDb250ZXh0 MSAgICBBIHBvaW50ZXIgdG8gdGhlIGNvbnRleHQgdG8NCj4gPiBwYXNzIGludG8gdGhlIEVudHJ5 UG9pbnQNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gYXMgdGhlIGZpcnN0 DQo+IHBhcmFtZXRlcg0KPiA+IGFmdGVyIHBhZ2luZyBpcyBlbmFibGVkLg0KPiA+ID4gKyAgQHBh cmFtICBDb250ZXh0MiAgICBBIHBvaW50ZXIgdG8gdGhlIGNvbnRleHQgdG8NCj4gPiBwYXNzIGlu dG8gdGhlIEVudHJ5UG9pbnQNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24g YXMgdGhlIHNlY29uZA0KPiA+IHBhcmFtZXRlciBhZnRlciBwYWdpbmcgaXMgZW5hYmxlZC4NCj4g PiA+ICsgIEBwYXJhbSAgTmV3U3RhY2sgICAgQSBwb2ludGVyIHRvIHRoZSBuZXcgc3RhY2sgdG8N Cj4gPiB1c2UgZm9yIHRoZSBFbnRyeVBvaW50DQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAg IGZ1bmN0aW9uIGFmdGVyIHBhZ2luZyBpcw0KPiA+IGVuYWJsZWQuDQo+ID4gPiArDQo+ID4gPiAr KiovDQo+ID4gPiArVk9JRA0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4gK0FzbUVuYWJsZVBhZ2luZzMy ICgNCj4gPiA+ICsgIElOICAgICAgU1dJVENIX1NUQUNLX0VOVFJZX1BPSU5UICBFbnRyeVBvaW50 LA0KPiA+ID4gKyAgSU4gICAgICBWT0lEICAgICAgICAgICAgICAgICAgICAgICpDb250ZXh0MSwN Cj4gPiBPUFRJT05BTA0KPiA+ID4gKyAgSU4gICAgICBWT0lEICAgICAgICAgICAgICAgICAgICAg ICpDb250ZXh0MiwNCj4gPiBPUFRJT05BTA0KPiA+ID4gKyAgSU4gICAgICBWT0lEICAgICAgICAg ICAgICAgICAgICAgICpOZXdTdGFjaw0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIGdV bml0VGVzdEhvc3RCYXNlTGliLlg4Ni0+QXNtRW5hYmxlUGFnaW5nMzINCj4gPiAoRW50cnlQb2lu dCwgQ29udGV4dDEsIENvbnRleHQyLCBOZXdTdGFjayk7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ ID4gKy8qKg0KPiA+ID4gKyAgRGlzYWJsZXMgdGhlIDMyLWJpdCBwYWdpbmcgbW9kZSBvbiB0aGUg Q1BVLg0KPiA+ID4gKw0KPiA+ID4gKyAgRGlzYWJsZXMgdGhlIDMyLWJpdCBwYWdpbmcgbW9kZSBv biB0aGUgQ1BVIGFuZA0KPiA+IHJldHVybnMgdG8gMzItYml0IHByb3RlY3RlZA0KPiA+ID4gKyAg bW9kZS4gVGhpcyBmdW5jdGlvbiBhc3N1bWVzIHRoZSBjdXJyZW50IGV4ZWN1dGlvbg0KPiA+IG1v ZGUgaXMgMzItcGFnZWQgcHJvdGVjdGVkDQo+ID4gPiArICBtb2RlLiBUaGlzIGZ1bmN0aW9uIGlz IG9ubHkgYXZhaWxhYmxlIG9uIElBLTMyLg0KPiA+IEFmdGVyIHRoZSAzMi1iaXQgcGFnaW5nIG1v ZGUNCj4gPiA+ICsgIGlzIGRpc2FibGVkLCBjb250cm9sIGlzIHRyYW5zZmVycmVkIHRvIHRoZQ0K PiBmdW5jdGlvbg0KPiA+IHNwZWNpZmllZCBieSBFbnRyeVBvaW50DQo+ID4gPiArICB1c2luZyB0 aGUgbmV3IHN0YWNrIHNwZWNpZmllZCBieSBOZXdTdGFjayBhbmQNCj4gPiBwYXNzaW5nIGluIHRo ZSBwYXJhbWV0ZXJzDQo+ID4gPiArICBzcGVjaWZpZWQgYnkgQ29udGV4dDEgYW5kIENvbnRleHQy LiBDb250ZXh0MSBhbmQNCj4gPiBDb250ZXh0MiBhcmUgb3B0aW9uYWwgYW5kDQo+ID4gPiArICBt YXkgYmUgTlVMTC4gVGhlIGZ1bmN0aW9uIEVudHJ5UG9pbnQgbXVzdCBuZXZlcg0KPiA+IHJldHVy bi4NCj4gPiA+ICsNCj4gPiA+ICsgIElmIHRoZSBjdXJyZW50IGV4ZWN1dGlvbiBtb2RlIGlzIG5v dCAzMi1iaXQgcGFnZWQNCj4gPiBtb2RlLCB0aGVuIEFTU0VSVCgpLg0KPiA+ID4gKyAgSWYgRW50 cnlQb2ludCBpcyBOVUxMLCB0aGVuIEFTU0VSVCgpLg0KPiA+ID4gKyAgSWYgTmV3U3RhY2sgaXMg TlVMTCwgdGhlbiBBU1NFUlQoKS4NCj4gPiA+ICsNCj4gPiA+ICsgIFRoZXJlIGFyZSBhIG51bWJl ciBvZiBjb25zdHJhaW50cyB0aGF0IG11c3QgYmUNCj4gPiBmb2xsb3dlZCBiZWZvcmUgY2FsbGlu ZyB0aGlzDQo+ID4gPiArICBmdW5jdGlvbjoNCj4gPiA+ICsgIDEpICBJbnRlcnJ1cHRzIG11c3Qg YmUgZGlzYWJsZWQuDQo+ID4gPiArICAyKSAgVGhlIGNhbGxlciBtdXN0IGJlIGluIDMyLWJpdCBw YWdlZCBtb2RlLg0KPiA+ID4gKyAgMykgIENSMCwgQ1IzLCBhbmQgQ1I0IG11c3QgYmUgY29tcGF0 aWJsZSB3aXRoIDMyLQ0KPiA+IGJpdCBwYWdlZCBtb2RlLg0KPiA+ID4gKyAgNCkgIENSMyBtdXN0 IHBvaW50IHRvIHZhbGlkIHBhZ2UgdGFibGVzIHRoYXQNCj4gPiBndWFyYW50ZWUgdGhhdCB0aGUg cGFnZXMgZm9yDQo+ID4gPiArICAgICAgdGhpcyBmdW5jdGlvbiBhbmQgdGhlIHN0YWNrIGFyZSBp ZGVudGl0eQ0KPiA+IG1hcHBlZC4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbSAgRW50cnlQb2lu dCAgQSBwb2ludGVyIHRvIGZ1bmN0aW9uIHRvIGNhbGwNCj4gPiB3aXRoIHRoZSBuZXcgc3RhY2sg YWZ0ZXINCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgcGFnaW5nIGlzIGRpc2FibGVkLg0K PiA+ID4gKyAgQHBhcmFtICBDb250ZXh0MSAgICBBIHBvaW50ZXIgdG8gdGhlIGNvbnRleHQgdG8N Cj4gPiBwYXNzIGludG8gdGhlIEVudHJ5UG9pbnQNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgZnVuY3Rpb24gYXMgdGhlIGZpcnN0DQo+IHBhcmFtZXRlcg0KPiA+IGFmdGVyIHBhZ2luZyBp cyBkaXNhYmxlZC4NCj4gPiA+ICsgIEBwYXJhbSAgQ29udGV4dDIgICAgQSBwb2ludGVyIHRvIHRo ZSBjb250ZXh0IHRvDQo+ID4gcGFzcyBpbnRvIHRoZSBFbnRyeVBvaW50DQo+ID4gPiArICAgICAg ICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGFzIHRoZSBzZWNvbmQNCj4gPiBwYXJhbWV0ZXIgYWZ0 ZXIgcGFnaW5nIGlzDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkLg0KPiA+ ID4gKyAgQHBhcmFtICBOZXdTdGFjayAgICBBIHBvaW50ZXIgdG8gdGhlIG5ldyBzdGFjayB0bw0K PiA+IHVzZSBmb3IgdGhlIEVudHJ5UG9pbnQNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ZnVuY3Rpb24gYWZ0ZXIgcGFnaW5nIGlzDQo+ID4gZGlzYWJsZWQuDQo+ID4gPiArDQo+ID4gPiAr KiovDQo+ID4gPiArVk9JRA0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4gK0FzbURpc2FibGVQYWdpbmcz MiAoDQo+ID4gPiArICBJTiAgICAgIFNXSVRDSF9TVEFDS19FTlRSWV9QT0lOVCAgRW50cnlQb2lu dCwNCj4gPiA+ICsgIElOICAgICAgVk9JRCAgICAgICAgICAgICAgICAgICAgICAqQ29udGV4dDEs DQo+ID4gT1BUSU9OQUwNCj4gPiA+ICsgIElOICAgICAgVk9JRCAgICAgICAgICAgICAgICAgICAg ICAqQ29udGV4dDIsDQo+ID4gT1BUSU9OQUwNCj4gPiA+ICsgIElOICAgICAgVk9JRCAgICAgICAg ICAgICAgICAgICAgICAqTmV3U3RhY2sNCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArICBn VW5pdFRlc3RIb3N0QmFzZUxpYi5YODYtPkFzbURpc2FibGVQYWdpbmczMg0KPiA+IChFbnRyeVBv aW50LCBDb250ZXh0MSwgQ29udGV4dDIsIE5ld1N0YWNrKTsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ ID4gPiArLyoqDQo+ID4gPiArICBFbmFibGVzIHRoZSA2NC1iaXQgcGFnaW5nIG1vZGUgb24gdGhl IENQVS4NCj4gPiA+ICsNCj4gPiA+ICsgIEVuYWJsZXMgdGhlIDY0LWJpdCBwYWdpbmcgbW9kZSBv biB0aGUgQ1BVLiBDUjAsDQo+ID4gQ1IzLCBDUjQsIGFuZCB0aGUgcGFnZSB0YWJsZXMNCj4gPiA+ ICsgIG11c3QgYmUgcHJvcGVybHkgaW5pdGlhbGl6ZWQgcHJpb3IgdG8gY2FsbGluZw0KPiB0aGlz DQo+ID4gc2VydmljZS4gVGhpcyBmdW5jdGlvbg0KPiA+ID4gKyAgYXNzdW1lcyB0aGUgY3VycmVu dCBleGVjdXRpb24gbW9kZSBpcyAzMi1iaXQNCj4gPiBwcm90ZWN0ZWQgbW9kZSB3aXRoIGZsYXQN Cj4gPiA+ICsgIGRlc2NyaXB0b3JzLiBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIG9u DQo+IElBLQ0KPiA+IDMyLiBBZnRlciB0aGUgNjQtYml0DQo+ID4gPiArICBwYWdpbmcgbW9kZSBp cyBlbmFibGVkLCBjb250cm9sIGlzIHRyYW5zZmVycmVkIHRvDQo+ID4gdGhlIGZ1bmN0aW9uIHNw ZWNpZmllZCBieQ0KPiA+ID4gKyAgRW50cnlQb2ludCB1c2luZyB0aGUgbmV3IHN0YWNrIHNwZWNp ZmllZCBieQ0KPiA+IE5ld1N0YWNrIGFuZCBwYXNzaW5nIGluIHRoZQ0KPiA+ID4gKyAgcGFyYW1l dGVycyBzcGVjaWZpZWQgYnkgQ29udGV4dDEgYW5kIENvbnRleHQyLg0KPiA+IENvbnRleHQxIGFu ZCBDb250ZXh0MiBhcmUNCj4gPiA+ICsgIG9wdGlvbmFsIGFuZCBtYXkgYmUgMC4gVGhlIGZ1bmN0 aW9uIEVudHJ5UG9pbnQNCj4gbXVzdA0KPiA+IG5ldmVyIHJldHVybi4NCj4gPiA+ICsNCj4gPiA+ ICsgIElmIHRoZSBjdXJyZW50IGV4ZWN1dGlvbiBtb2RlIGlzIG5vdCAzMi1iaXQNCj4gPiBwcm90 ZWN0ZWQgbW9kZSB3aXRoIGZsYXQNCj4gPiA+ICsgIGRlc2NyaXB0b3JzLCB0aGVuIEFTU0VSVCgp Lg0KPiA+ID4gKyAgSWYgRW50cnlQb2ludCBpcyAwLCB0aGVuIEFTU0VSVCgpLg0KPiA+ID4gKyAg SWYgTmV3U3RhY2sgaXMgMCwgdGhlbiBBU1NFUlQoKS4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJh bSAgQ3MgICAgICAgICAgVGhlIDE2LWJpdCBzZWxlY3RvciB0byBsb2FkDQo+IGluDQo+ID4gdGhl IENTIGJlZm9yZSBFbnRyeVBvaW50DQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgIGlzIGNh bGxlZC4gVGhlIGRlc2NyaXB0b3IgaW4NCj4gPiB0aGUgR0RUIHRoYXQgdGhpcyBzZWxlY3Rvcg0K PiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2VzIG11c3QgYmUgc2V0dXAgZm9y DQo+ID4gbG9uZyBtb2RlLg0KPiA+ID4gKyAgQHBhcmFtICBFbnRyeVBvaW50ICBUaGUgNjQtYml0 IHZpcnR1YWwgYWRkcmVzcyBvZg0KPiA+IHRoZSBmdW5jdGlvbiB0byBjYWxsIHdpdGgNCj4gPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgdGhlIG5ldyBzdGFjayBhZnRlciBwYWdpbmcgaXMNCj4g PiBlbmFibGVkLg0KPiA+ID4gKyAgQHBhcmFtICBDb250ZXh0MSAgICBUaGUgNjQtYml0IHZpcnR1 YWwgYWRkcmVzcyBvZg0KPiA+IHRoZSBjb250ZXh0IHRvIHBhc3MgaW50bw0KPiA+ID4gKyAgICAg ICAgICAgICAgICAgICAgICB0aGUgRW50cnlQb2ludCBmdW5jdGlvbiBhcw0KPiB0aGUNCj4gPiBm aXJzdCBwYXJhbWV0ZXIgYWZ0ZXINCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgcGFnaW5n IGlzIGVuYWJsZWQuDQo+ID4gPiArICBAcGFyYW0gIENvbnRleHQyICAgIFRoZSA2NC1iaXQgdmly dHVhbCBhZGRyZXNzIG9mDQo+ID4gdGhlIGNvbnRleHQgdG8gcGFzcyBpbnRvDQo+ID4gPiArICAg ICAgICAgICAgICAgICAgICAgIHRoZSBFbnRyeVBvaW50IGZ1bmN0aW9uIGFzDQo+IHRoZQ0KPiA+ IHNlY29uZCBwYXJhbWV0ZXIgYWZ0ZXINCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgcGFn aW5nIGlzIGVuYWJsZWQuDQo+ID4gPiArICBAcGFyYW0gIE5ld1N0YWNrICAgIFRoZSA2NC1iaXQg dmlydHVhbCBhZGRyZXNzIG9mDQo+ID4gdGhlIG5ldyBzdGFjayB0byB1c2UgZm9yDQo+ID4gPiAr ICAgICAgICAgICAgICAgICAgICAgIHRoZSBFbnRyeVBvaW50IGZ1bmN0aW9uIGFmdGVyDQo+ID4g cGFnaW5nIGlzIGVuYWJsZWQuDQo+ID4gPiArDQo+ID4gPiArKiovDQo+ID4gPiArVk9JRA0KPiA+ ID4gK0VGSUFQSQ0KPiA+ID4gK0FzbUVuYWJsZVBhZ2luZzY0ICgNCj4gPiA+ICsgIElOICAgICAg VUlOVDE2ICAgICAgICAgICAgICAgICAgICBDcywNCj4gPiA+ICsgIElOICAgICAgVUlOVDY0ICAg ICAgICAgICAgICAgICAgICBFbnRyeVBvaW50LA0KPiA+ID4gKyAgSU4gICAgICBVSU5UNjQgICAg ICAgICAgICAgICAgICAgIENvbnRleHQxLA0KPiA+IE9QVElPTkFMDQo+ID4gPiArICBJTiAgICAg IFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgQ29udGV4dDIsDQo+ID4gT1BUSU9OQUwNCj4gPiA+ ICsgIElOICAgICAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICBOZXdTdGFjaw0KPiA+ID4gKyAg KQ0KPiA+ID4gK3sNCj4gPiA+ICsgIGdVbml0VGVzdEhvc3RCYXNlTGliLlg4Ni0+QXNtRW5hYmxl UGFnaW5nNjQgKENzLA0KPiA+IEVudHJ5UG9pbnQsIENvbnRleHQxLCBDb250ZXh0MiwgTmV3U3Rh Y2spOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIERpc2FibGVzIHRo ZSA2NC1iaXQgcGFnaW5nIG1vZGUgb24gdGhlIENQVS4NCj4gPiA+ICsNCj4gPiA+ICsgIERpc2Fi bGVzIHRoZSA2NC1iaXQgcGFnaW5nIG1vZGUgb24gdGhlIENQVSBhbmQNCj4gPiByZXR1cm5zIHRv IDMyLWJpdCBwcm90ZWN0ZWQNCj4gPiA+ICsgIG1vZGUuIFRoaXMgZnVuY3Rpb24gYXNzdW1lcyB0 aGUgY3VycmVudCBleGVjdXRpb24NCj4gPiBtb2RlIGlzIDY0LXBhZ2luZyBtb2RlLg0KPiA+ID4g KyAgVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBvbiB4NjQuIEFmdGVyIHRoZQ0KPiA+ IDY0LWJpdCBwYWdpbmcgbW9kZSBpcw0KPiA+ID4gKyAgZGlzYWJsZWQsIGNvbnRyb2wgaXMgdHJh bnNmZXJyZWQgdG8gdGhlIGZ1bmN0aW9uDQo+ID4gc3BlY2lmaWVkIGJ5IEVudHJ5UG9pbnQNCj4g PiA+ICsgIHVzaW5nIHRoZSBuZXcgc3RhY2sgc3BlY2lmaWVkIGJ5IE5ld1N0YWNrIGFuZA0KPiA+ IHBhc3NpbmcgaW4gdGhlIHBhcmFtZXRlcnMNCj4gPiA+ICsgIHNwZWNpZmllZCBieSBDb250ZXh0 MSBhbmQgQ29udGV4dDIuIENvbnRleHQxIGFuZA0KPiA+IENvbnRleHQyIGFyZSBvcHRpb25hbCBh bmQNCj4gPiA+ICsgIG1heSBiZSAwLiBUaGUgZnVuY3Rpb24gRW50cnlQb2ludCBtdXN0IG5ldmVy DQo+ID4gcmV0dXJuLg0KPiA+ID4gKw0KPiA+ID4gKyAgSWYgdGhlIGN1cnJlbnQgZXhlY3V0aW9u IG1vZGUgaXMgbm90IDY0LWJpdCBwYWdlZA0KPiA+IG1vZGUsIHRoZW4gQVNTRVJUKCkuDQo+ID4g PiArICBJZiBFbnRyeVBvaW50IGlzIDAsIHRoZW4gQVNTRVJUKCkuDQo+ID4gPiArICBJZiBOZXdT dGFjayBpcyAwLCB0aGVuIEFTU0VSVCgpLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtICBDcyAg ICAgICAgICBUaGUgMTYtYml0IHNlbGVjdG9yIHRvIGxvYWQNCj4gaW4NCj4gPiB0aGUgQ1MgYmVm b3JlIEVudHJ5UG9pbnQNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgaXMgY2FsbGVkLiBU aGUgZGVzY3JpcHRvciBpbg0KPiA+IHRoZSBHRFQgdGhhdCB0aGlzIHNlbGVjdG9yDQo+ID4gPiAr ICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZXMgbXVzdCBiZSBzZXR1cCBmb3INCj4gPiAz Mi1iaXQgcHJvdGVjdGVkIG1vZGUuDQo+ID4gPiArICBAcGFyYW0gIEVudHJ5UG9pbnQgIFRoZSA2 NC1iaXQgdmlydHVhbCBhZGRyZXNzIG9mDQo+ID4gdGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2l0aA0K PiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICB0aGUgbmV3IHN0YWNrIGFmdGVyIHBhZ2luZyBp cw0KPiA+IGRpc2FibGVkLg0KPiA+ID4gKyAgQHBhcmFtICBDb250ZXh0MSAgICBUaGUgNjQtYml0 IHZpcnR1YWwgYWRkcmVzcyBvZg0KPiA+IHRoZSBjb250ZXh0IHRvIHBhc3MgaW50bw0KPiA+ID4g KyAgICAgICAgICAgICAgICAgICAgICB0aGUgRW50cnlQb2ludCBmdW5jdGlvbiBhcw0KPiB0aGUN Cj4gPiBmaXJzdCBwYXJhbWV0ZXIgYWZ0ZXINCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAg cGFnaW5nIGlzIGRpc2FibGVkLg0KPiA+ID4gKyAgQHBhcmFtICBDb250ZXh0MiAgICBUaGUgNjQt Yml0IHZpcnR1YWwgYWRkcmVzcyBvZg0KPiA+IHRoZSBjb250ZXh0IHRvIHBhc3MgaW50bw0KPiA+ ID4gKyAgICAgICAgICAgICAgICAgICAgICB0aGUgRW50cnlQb2ludCBmdW5jdGlvbiBhcw0KPiB0 aGUNCj4gPiBzZWNvbmQgcGFyYW1ldGVyIGFmdGVyDQo+ID4gPiArICAgICAgICAgICAgICAgICAg ICAgIHBhZ2luZyBpcyBkaXNhYmxlZC4NCj4gPiA+ICsgIEBwYXJhbSAgTmV3U3RhY2sgICAgVGhl IDY0LWJpdCB2aXJ0dWFsIGFkZHJlc3Mgb2YNCj4gPiB0aGUgbmV3IHN0YWNrIHRvIHVzZSBmb3IN Cj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgdGhlIEVudHJ5UG9pbnQgZnVuY3Rpb24gYWZ0 ZXINCj4gPiBwYWdpbmcgaXMgZGlzYWJsZWQuDQo+ID4gPiArDQo+ID4gPiArKiovDQo+ID4gPiAr Vk9JRA0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4gK0FzbURpc2FibGVQYWdpbmc2NCAoDQo+ID4gPiAr ICBJTiAgICAgIFVJTlQxNiAgICAgICAgICAgICAgICAgICAgQ3MsDQo+ID4gPiArICBJTiAgICAg IFVJTlQzMiAgICAgICAgICAgICAgICAgICAgRW50cnlQb2ludCwNCj4gPiA+ICsgIElOICAgICAg VUlOVDMyICAgICAgICAgICAgICAgICAgICBDb250ZXh0MSwNCj4gPiBPUFRJT05BTA0KPiA+ID4g KyAgSU4gICAgICBVSU5UMzIgICAgICAgICAgICAgICAgICAgIENvbnRleHQyLA0KPiA+IE9QVElP TkFMDQo+ID4gPiArICBJTiAgICAgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgTmV3U3RhY2sN Cj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArICBnVW5pdFRlc3RIb3N0QmFzZUxpYi5YODYt PkFzbURpc2FibGVQYWdpbmc2NCAoQ3MsDQo+ID4gRW50cnlQb2ludCwgQ29udGV4dDEsIENvbnRl eHQyLCBOZXdTdGFjayk7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAg UmV0cmlldmVzIHRoZSBwcm9wZXJ0aWVzIGZvciAxNi1iaXQgdGh1bmsNCj4gPiBmdW5jdGlvbnMu DQo+ID4gPiArDQo+ID4gPiArICBDb21wdXRlcyB0aGUgc2l6ZSBvZiB0aGUgYnVmZmVyIGFuZCBz dGFjayBiZWxvdw0KPiAxTUINCj4gPiByZXF1aXJlZCB0byB1c2UgdGhlDQo+ID4gPiArICBBc21Q cmVwYXJlVGh1bmsxNigpLCBBc21UaHVuazE2KCkgYW5kDQo+ID4gQXNtUHJlcGFyZUFuZFRodW5r MTYoKSBmdW5jdGlvbnMuIFRoaXMNCj4gPiA+ICsgIGJ1ZmZlciBzaXplIGlzIHJldHVybmVkIGlu IFJlYWxNb2RlQnVmZmVyU2l6ZSwNCj4gYW5kDQo+ID4gdGhlIHN0YWNrIHNpemUgaXMgcmV0dXJu ZWQNCj4gPiA+ICsgIGluIEV4dHJhU3RhY2tTaXplLiBJZiBwYXJhbWV0ZXJzIGFyZSBwYXNzZWQg dG8NCj4gdGhlDQo+ID4gMTYtYml0IHJlYWwgbW9kZSBjb2RlLA0KPiA+ID4gKyAgdGhlbiB0aGUg YWN0dWFsIG1pbmltdW0gc3RhY2sgc2l6ZSBpcw0KPiA+IEV4dHJhU3RhY2tTaXplIHBsdXMgdGhl IG1heGltdW0gbnVtYmVyDQo+ID4gPiArICBvZiBieXRlcyB0aGF0IG5lZWQgdG8gYmUgcGFzc2Vk IHRvIHRoZSAxNi1iaXQNCj4gcmVhbA0KPiA+IG1vZGUgY29kZS4NCj4gPiA+ICsNCj4gPiA+ICsg IElmIFJlYWxNb2RlQnVmZmVyU2l6ZSBpcyBOVUxMLCB0aGVuIEFTU0VSVCgpLg0KPiA+ID4gKyAg SWYgRXh0cmFTdGFja1NpemUgaXMgTlVMTCwgdGhlbiBBU1NFUlQoKS4NCj4gPiA+ICsNCj4gPiA+ ICsgIEBwYXJhbSAgUmVhbE1vZGVCdWZmZXJTaXplICBBIHBvaW50ZXIgdG8gdGhlIHNpemUNCj4g PiBvZiB0aGUgYnVmZmVyIGJlbG93IDFNQg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHJlcXVpcmVkIHRvIHVzZSB0aGUNCj4gMTYtDQo+ID4gYml0IHRodW5rIGZ1bmN0aW9u cy4NCj4gPiA+ICsgIEBwYXJhbSAgRXh0cmFTdGFja1NpemUgICAgICBBIHBvaW50ZXIgdG8gdGhl DQo+IGV4dHJhDQo+ID4gc2l6ZSBvZiBzdGFjayBiZWxvdyAxTUINCj4gPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB0aGF0IHRoZSAxNi1iaXQgdGh1bmsNCj4gPiBmdW5jdGlvbnMg cmVxdWlyZSBmb3INCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wb3Jh cnkgc3RvcmFnZSBpbg0KPiA+IHRoZSB0cmFuc2l0aW9uIHRvIGFuZCBmcm9tDQo+ID4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYtYml0IHJlYWwgbW9kZS4NCj4gPiA+ICsNCj4g PiA+ICsqKi8NCj4gPiA+ICtWT0lEDQo+ID4gPiArRUZJQVBJDQo+ID4gPiArQXNtR2V0VGh1bmsx NlByb3BlcnRpZXMgKA0KPiA+ID4gKyAgT1VUICAgICBVSU5UMzINCj4gPiAqUmVhbE1vZGVCdWZm ZXJTaXplLA0KPiA+ID4gKyAgT1VUICAgICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICpFeHRy YVN0YWNrU2l6ZQ0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIGdVbml0VGVzdEhvc3RC YXNlTGliLlg4Ni0+QXNtR2V0VGh1bmsxNlByb3BlcnRpZXMNCj4gPiAoUmVhbE1vZGVCdWZmZXJT aXplLCBFeHRyYVN0YWNrU2l6ZSk7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ ID4gKyAgUHJlcGFyZXMgYWxsIHN0cnVjdHVyZXMgYSBjb2RlIHJlcXVpcmVkIHRvIHVzZQ0KPiA+ IEFzbVRodW5rMTYoKS4NCj4gPiA+ICsNCj4gPiA+ICsgIFByZXBhcmVzIGFsbCBzdHJ1Y3R1cmVz IGFuZCBjb2RlIHJlcXVpcmVkIHRvIHVzZQ0KPiA+IEFzbVRodW5rMTYoKS4NCj4gPiA+ICsNCj4g PiA+ICsgIFRoaXMgaW50ZXJmYWNlIGlzIGxpbWl0ZWQgdG8gYmUgdXNlZCBpbiBlaXRoZXINCj4g PiBwaHlzaWNhbCBtb2RlIG9yIHZpcnR1YWwgbW9kZXMgd2l0aCBwYWdpbmcgZW5hYmxlZA0KPiB3 aGVyZQ0KPiA+IHRoZQ0KPiA+ID4gKyAgdmlydHVhbCB0byBwaHlzaWNhbCBtYXBwaW5ncyBmb3IN Cj4gPiBUaHVua0NvbnRleHQuUmVhbE1vZGVCdWZmZXIgaXMgbWFwcGVkIDE6MS4NCj4gPiA+ICsN Cj4gPiA+ICsgIElmIFRodW5rQ29udGV4dCBpcyBOVUxMLCB0aGVuIEFTU0VSVCgpLg0KPiA+ID4g Kw0KPiA+ID4gKyAgQHBhcmFtICBUaHVua0NvbnRleHQgIEEgcG9pbnRlciB0byB0aGUgY29udGV4 dA0KPiA+IHN0cnVjdHVyZSB0aGF0IGRlc2NyaWJlcyB0aGUNCj4gPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAxNi1iaXQgcmVhbCBtb2RlIGNvZGUgdG8NCj4gPiBjYWxsLg0KPiA+ID4gKw0K PiA+ID4gKyoqLw0KPiA+ID4gK1ZPSUQNCj4gPiA+ICtFRklBUEkNCj4gPiA+ICtBc21QcmVwYXJl VGh1bmsxNiAoDQo+ID4gPiArICBJTiBPVVQgIFRIVU5LX0NPTlRFWFQgICAgICAgICAgICAgKlRo dW5rQ29udGV4dA0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIGdVbml0VGVzdEhvc3RC YXNlTGliLlg4Ni0+QXNtUHJlcGFyZVRodW5rMTYNCj4gPiAoVGh1bmtDb250ZXh0KTsNCj4gPiA+ ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBUcmFuc2ZlcnMgY29udHJvbCB0byBh IDE2LWJpdCByZWFsIG1vZGUgZW50cnkNCj4gcG9pbnQNCj4gPiBhbmQgcmV0dXJucyB0aGUgcmVz dWx0cy4NCj4gPiA+ICsNCj4gPiA+ICsgIFRyYW5zZmVycyBjb250cm9sIHRvIGEgMTYtYml0IHJl YWwgbW9kZSBlbnRyeQ0KPiBwb2ludA0KPiA+IGFuZCByZXR1cm5zIHRoZSByZXN1bHRzLg0KPiA+ ID4gKyAgQXNtUHJlcGFyZVRodW5rMTYoKSBtdXN0IGJlIGNhbGxlZCB3aXRoDQo+ID4gVGh1bmtD b250ZXh0IGJlZm9yZSB0aGlzIGZ1bmN0aW9uIGlzIHVzZWQuDQo+ID4gPiArICBUaGlzIGZ1bmN0 aW9uIG11c3QgYmUgY2FsbGVkIHdpdGggaW50ZXJydXB0cw0KPiA+IGRpc2FibGVkLg0KPiA+ID4g Kw0KPiA+ID4gKyAgVGhlIHJlZ2lzdGVyIHN0YXRlIGZyb20gdGhlIFJlYWxNb2RlU3RhdGUgZmll bGQNCj4gb2YNCj4gPiBUaHVua0NvbnRleHQgaXMgcmVzdG9yZWQganVzdCBwcmlvcg0KPiA+ID4g KyAgdG8gY2FsbGluZyB0aGUgMTYtYml0IHJlYWwgbW9kZSBlbnRyeSBwb2ludC4NCj4gVGhpcw0K PiA+IGluY2x1ZGVzIHRoZSBFRkxBR1MgZmllbGQgb2YgUmVhbE1vZGVTdGF0ZSwNCj4gPiA+ICsg IHdoaWNoIGlzIHVzZWQgdG8gc2V0IHRoZSBpbnRlcnJ1cHQgc3RhdGUgd2hlbiBhDQo+IDE2LQ0K PiA+IGJpdCByZWFsIG1vZGUgZW50cnkgcG9pbnQgaXMgY2FsbGVkLg0KPiA+ID4gKyAgQ29udHJv bCBpcyB0cmFuc2ZlcnJlZCB0byB0aGUgMTYtYml0IHJlYWwgbW9kZQ0KPiA+IGVudHJ5IHBvaW50 IHNwZWNpZmllZCBieSB0aGUgQ1MgYW5kIEVpcCBmaWVsZHMgb2YNCj4gPiBSZWFsTW9kZVN0YXRl Lg0KPiA+ID4gKyAgVGhlIHN0YWNrIGlzIGluaXRpYWxpemVkIHRvIHRoZSBTUyBhbmQgRVNQIGZp ZWxkcw0KPiA+IG9mIFJlYWxNb2RlU3RhdGUuICBBbnkgcGFyYW1ldGVycyBwYXNzZWQgdG8NCj4g PiA+ICsgIHRoZSAxNi1iaXQgcmVhbCBtb2RlIGNvZGUgbXVzdCBiZSBwb3B1bGF0ZWQgYnkNCj4g dGhlDQo+ID4gY2FsbGVyIGF0IFNTOkVTUCBwcmlvciB0byBjYWxsaW5nIHRoaXMgZnVuY3Rpb24u DQo+ID4gPiArICBUaGUgMTYtYml0IHJlYWwgbW9kZSBlbnRyeSBwb2ludCBpcyBpbnZva2VkIHdp dGgNCj4gYQ0KPiA+IDE2LWJpdCBDQUxMIEZBUiBpbnN0cnVjdGlvbiwNCj4gPiA+ICsgIHNvIHdo ZW4gYWNjZXNzaW5nIHN0YWNrIGNvbnRlbnRzLCB0aGUgMTYtYml0IHJlYWwNCj4gPiBtb2RlIGNv ZGUgbXVzdCBhY2NvdW50IGZvciB0aGUgMTYtYml0IHNlZ21lbnQNCj4gPiA+ICsgIGFuZCAxNi1i aXQgb2Zmc2V0IG9mIHRoZSByZXR1cm4gYWRkcmVzcyB0aGF0IHdlcmUNCj4gPiBwdXNoZWQgb250 byB0aGUgc3RhY2suIFRoZSAxNi1iaXQgcmVhbCBtb2RlIGVudHJ5DQo+ID4gPiArICBwb2ludCBt dXN0IGV4aXQgd2l0aCBhIFJFVEYgaW5zdHJ1Y3Rpb24uIFRoZQ0KPiA+IHJlZ2lzdGVyIHN0YXRl IGlzIGNhcHR1cmVkIGludG8gUmVhbE1vZGVTdGF0ZQ0KPiA+IGltbWVkaWF0ZWx5DQo+ID4gPiAr ICBhZnRlciB0aGUgUkVURiBpbnN0cnVjdGlvbiBpcyBleGVjdXRlZC4NCj4gPiA+ICsNCj4gPiA+ ICsgIElmIEVGTEFHUyBzcGVjaWZpZXMgaW50ZXJydXB0cyBlbmFibGVkLCBvciBhbnkgb2YNCj4g PiB0aGUgMTYtYml0IHJlYWwgbW9kZSBjb2RlIGVuYWJsZXMgaW50ZXJydXB0cywNCj4gPiA+ICsg IG9yIGFueSBvZiB0aGUgMTYtYml0IHJlYWwgbW9kZSBjb2RlIG1ha2VzIGEgU1cNCj4gPiBpbnRl cnJ1cHQsIHRoZW4gdGhlIGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgbWFraW5nDQo+ID4gc3Vy ZQ0KPiA+ID4gKyAgdGhlIElEVCBhdCBhZGRyZXNzIDAgaXMgaW5pdGlhbGl6ZWQgdG8gaGFuZGxl IGFueQ0KPiA+IEhXIG9yIFNXIGludGVycnVwdHMgdGhhdCBtYXkgb2NjdXIgd2hpbGUgaW4gMTYt Yml0DQo+IHJlYWwNCj4gPiBtb2RlLg0KPiA+ID4gKw0KPiA+ID4gKyAgSWYgRUZMQUdTIHNwZWNp ZmllcyBpbnRlcnJ1cHRzIGVuYWJsZWQsIG9yIGFueSBvZg0KPiA+IHRoZSAxNi1iaXQgcmVhbCBt b2RlIGNvZGUgZW5hYmxlcyBpbnRlcnJ1cHRzLA0KPiA+ID4gKyAgdGhlbiB0aGUgY2FsbGVyIGlz IHJlc3BvbnNpYmxlIGZvciBtYWtpbmcgc3VyZQ0KPiB0aGUNCj4gPiA4MjU5IFBJQyBpcyBpbiBh IHN0YXRlIGNvbXBhdGlibGUgd2l0aCAxNi1iaXQgcmVhbA0KPiBtb2RlLg0KPiA+ID4gKyAgVGhp cyBpbmNsdWRlcyB0aGUgYmFzZSB2ZWN0b3JzLCB0aGUgaW50ZXJydXB0DQo+ID4gbWFza3MsIGFu ZCB0aGUgZWRnZS9sZXZlbCB0cmlnZ2VyIG1vZGUuDQo+ID4gPiArDQo+ID4gPiArICBJZiBUSFVO S19BVFRSSUJVVEVfQklHX1JFQUxfTU9ERSBpcyBzZXQgaW4gdGhlDQo+ID4gVGh1bmtBdHRyaWJ1 dGVzIGZpZWxkIG9mIFRodW5rQ29udGV4dCwgdGhlbiB0aGUgdXNlcg0KPiA+IGNvZGUNCj4gPiA+ ICsgIGlzIGludm9rZWQgaW4gYmlnIHJlYWwgbW9kZS4gIE90aGVyd2lzZSwgdGhlIHVzZXINCj4g PiBjb2RlIGlzIGludm9rZWQgaW4gMTYtYml0IHJlYWwgbW9kZSB3aXRoIDY0S0Igc2VnbWVudA0K PiA+IGxpbWl0cy4NCj4gPiA+ICsNCj4gPiA+ICsgIElmIG5laXRoZXINCj4gVEhVTktfQVRUUklC VVRFX0RJU0FCTEVfQTIwX01BU0tfSU5UXzE1DQo+ID4gbm9yIFRIVU5LX0FUVFJJQlVURV9ESVNB QkxFX0EyMF9NQVNLX0tCRF9DVFJMIGFyZSBzZXQNCj4gaW4NCj4gPiA+ICsgIFRodW5rQXR0cmli dXRlcywgdGhlbiBpdCBpcyBhc3N1bWVkIHRoYXQgdGhlIHVzZXINCj4gPiBjb2RlIGRpZCBub3Qg ZW5hYmxlIHRoZSBBMjAgbWFzaywgYW5kIG5vIGF0dGVtcHQgaXMNCj4gbWFkZQ0KPiA+IHRvDQo+ ID4gPiArICBkaXNhYmxlIHRoZSBBMjAgbWFzay4NCj4gPiA+ICsNCj4gPiA+ICsgIElmIFRIVU5L X0FUVFJJQlVURV9ESVNBQkxFX0EyMF9NQVNLX0lOVF8xNSBpcyBzZXQNCj4gPiBhbmQgVEhVTktf QVRUUklCVVRFX0RJU0FCTEVfQTIwX01BU0tfS0JEX0NUUkwgaXMgY2xlYXINCj4gPiBpbg0KPiA+ ID4gKyAgVGh1bmtBdHRyaWJ1dGVzLCB0aGVuIGF0dGVtcHQgdG8gdXNlIHRoZSBJTlQgMTUNCj4g PiBzZXJ2aWNlIHRvIGRpc2FibGUgdGhlIEEyMCBtYXNrLiAgSWYgdGhpcyBJTlQgMTUgY2FsbA0K PiA+IGZhaWxzLA0KPiA+ID4gKyAgdGhlbiBhdHRlbXB0IHRvIGRpc2FibGUgdGhlIEEyMCBtYXNr IGJ5IGRpcmVjdGx5DQo+ID4gYWNjZXNzaW5nIHRoZSA4MDQyIGtleWJvYXJkIGNvbnRyb2xsZXIg SS9PIHBvcnRzLg0KPiA+ID4gKw0KPiA+ID4gKyAgSWYgVEhVTktfQVRUUklCVVRFX0RJU0FCTEVf QTIwX01BU0tfSU5UXzE1IGlzDQo+IGNsZWFyDQo+ID4gYW5kIFRIVU5LX0FUVFJJQlVURV9ESVNB QkxFX0EyMF9NQVNLX0tCRF9DVFJMIGlzIHNldA0KPiBpbg0KPiA+ID4gKyAgVGh1bmtBdHRyaWJ1 dGVzLCB0aGVuIGF0dGVtcHQgdG8gZGlzYWJsZSB0aGUgQTIwDQo+ID4gbWFzayBieSBkaXJlY3Rs eSBhY2Nlc3NpbmcgdGhlIDgwNDIga2V5Ym9hcmQNCj4gY29udHJvbGxlcg0KPiA+IEkvTyBwb3J0 cy4NCj4gPiA+ICsNCj4gPiA+ICsgIElmIFRodW5rQ29udGV4dCBpcyBOVUxMLCB0aGVuIEFTU0VS VCgpLg0KPiA+ID4gKyAgSWYgQXNtUHJlcGFyZVRodW5rMTYoKSB3YXMgbm90IHByZXZpb3VzbHkg Y2FsbGVkDQo+ID4gd2l0aCBUaHVua0NvbnRleHQsIHRoZW4gQVNTRVJUKCkuDQo+ID4gPiArICBJ ZiBib3RoIFRIVU5LX0FUVFJJQlVURV9ESVNBQkxFX0EyMF9NQVNLX0lOVF8xNQ0KPiBhbmQNCj4g PiBUSFVOS19BVFRSSUJVVEVfRElTQUJMRV9BMjBfTUFTS19LQkRfQ1RSTCBhcmUgc2V0IGluDQo+ ID4gPiArICBUaHVua0F0dHJpYnV0ZXMsIHRoZW4gQVNTRVJUKCkuDQo+ID4gPiArDQo+ID4gPiAr ICBUaGlzIGludGVyZmFjZSBpcyBsaW1pdGVkIHRvIGJlIHVzZWQgaW4gZWl0aGVyDQo+ID4gcGh5 c2ljYWwgbW9kZSBvciB2aXJ0dWFsIG1vZGVzIHdpdGggcGFnaW5nIGVuYWJsZWQNCj4gd2hlcmUN Cj4gPiB0aGUNCj4gPiA+ICsgIHZpcnR1YWwgdG8gcGh5c2ljYWwgbWFwcGluZ3MgZm9yDQo+ID4g VGh1bmtDb250ZXh0LlJlYWxNb2RlQnVmZmVyIGFyZSBtYXBwZWQgMToxLg0KPiA+ID4gKw0KPiA+ ID4gKyAgQHBhcmFtICBUaHVua0NvbnRleHQgIEEgcG9pbnRlciB0byB0aGUgY29udGV4dA0KPiA+ IHN0cnVjdHVyZSB0aGF0IGRlc2NyaWJlcyB0aGUNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAxNi1iaXQgcmVhbCBtb2RlIGNvZGUgdG8NCj4gPiBjYWxsLg0KPiA+ID4gKw0KPiA+ID4g KyoqLw0KPiA+ID4gK1ZPSUQNCj4gPiA+ICtFRklBUEkNCj4gPiA+ICtBc21UaHVuazE2ICgNCj4g PiA+ICsgIElOIE9VVCAgVEhVTktfQ09OVEVYVCAgICAgICAgICAgICAqVGh1bmtDb250ZXh0DQo+ ID4gPiArICApDQo+ID4gPiArew0KPiA+ID4gKyAgZ1VuaXRUZXN0SG9zdEJhc2VMaWIuWDg2LT5B c21UaHVuazE2DQo+ID4gKFRodW5rQ29udGV4dCk7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4g Ky8qKg0KPiA+ID4gKyAgUHJlcGFyZXMgYWxsIHN0cnVjdHVyZXMgYW5kIGNvZGUgZm9yIGEgMTYt Yml0DQo+IHJlYWwNCj4gPiBtb2RlIHRodW5rLCB0cmFuc2ZlcnMNCj4gPiA+ICsgIGNvbnRyb2wg dG8gYSAxNi1iaXQgcmVhbCBtb2RlIGVudHJ5IHBvaW50LCBhbmQNCj4gPiByZXR1cm5zIHRoZSBy ZXN1bHRzLg0KPiA+ID4gKw0KPiA+ID4gKyAgUHJlcGFyZXMgYWxsIHN0cnVjdHVyZXMgYW5kIGNv ZGUgZm9yIGEgMTYtYml0DQo+IHJlYWwNCj4gPiBtb2RlIHRodW5rLCB0cmFuc2ZlcnMNCj4gPiA+ ICsgIGNvbnRyb2wgdG8gYSAxNi1iaXQgcmVhbCBtb2RlIGVudHJ5IHBvaW50LCBhbmQNCj4gPiBy ZXR1cm5zIHRoZSByZXN1bHRzLiBJZiB0aGUNCj4gPiA+ICsgIGNhbGxlciBvbmx5IG5lZWQgdG8g cGVyZm9ybSBhIHNpbmdsZSAxNi1iaXQgcmVhbA0KPiA+IG1vZGUgdGh1bmssIHRoZW4gdGhpcw0K PiA+ID4gKyAgc2VydmljZSBzaG91bGQgYmUgdXNlZC4gSWYgdGhlIGNhbGxlciBpbnRlbmRzIHRv DQo+ID4gbWFrZSBtb3JlIHRoYW4gb25lIDE2LWJpdA0KPiA+ID4gKyAgcmVhbCBtb2RlIHRodW5r LCB0aGVuIGl0IGlzIG1vcmUgZWZmaWNpZW50IGlmDQo+ID4gQXNtUHJlcGFyZVRodW5rMTYoKSBp cyBjYWxsZWQNCj4gPiA+ICsgIG9uY2UgYW5kIEFzbVRodW5rMTYoKSBjYW4gYmUgY2FsbGVkIGZv ciBlYWNoIDE2LQ0KPiBiaXQNCj4gPiByZWFsIG1vZGUgdGh1bmsuDQo+ID4gPiArDQo+ID4gPiAr ICBUaGlzIGludGVyZmFjZSBpcyBsaW1pdGVkIHRvIGJlIHVzZWQgaW4gZWl0aGVyDQo+ID4gcGh5 c2ljYWwgbW9kZSBvciB2aXJ0dWFsIG1vZGVzIHdpdGggcGFnaW5nIGVuYWJsZWQNCj4gd2hlcmUN Cj4gPiB0aGUNCj4gPiA+ICsgIHZpcnR1YWwgdG8gcGh5c2ljYWwgbWFwcGluZ3MgZm9yDQo+ID4g VGh1bmtDb250ZXh0LlJlYWxNb2RlQnVmZmVyIGlzIG1hcHBlZCAxOjEuDQo+ID4gPiArDQo+ID4g PiArICBTZWUgQXNtUHJlcGFyZVRodW5rMTYoKSBhbmQgQXNtVGh1bmsxNigpIGZvciB0aGUNCj4g PiBkZXRhaWxlZCBkZXNjcmlwdGlvbiBhbmQgQVNTRVJUKCkgY29uZGl0aW9ucy4NCj4gPiA+ICsN Cj4gPiA+ICsgIEBwYXJhbSAgVGh1bmtDb250ZXh0ICBBIHBvaW50ZXIgdG8gdGhlIGNvbnRleHQN Cj4gPiBzdHJ1Y3R1cmUgdGhhdCBkZXNjcmliZXMgdGhlDQo+ID4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgMTYtYml0IHJlYWwgbW9kZSBjb2RlIHRvDQo+ID4gY2FsbC4NCj4gPiA+ICsNCj4g PiA+ICsqKi8NCj4gPiA+ICtWT0lEDQo+ID4gPiArRUZJQVBJDQo+ID4gPiArQXNtUHJlcGFyZUFu ZFRodW5rMTYgKA0KPiA+ID4gKyAgSU4gT1VUICBUSFVOS19DT05URVhUICAgICAgICAgICAgICpU aHVua0NvbnRleHQNCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArICBnVW5pdFRlc3RIb3N0 QmFzZUxpYi5YODYtPkFzbVByZXBhcmVBbmRUaHVuazE2DQo+ID4gKFRodW5rQ29udGV4dCk7DQo+ ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgTG9hZCBnaXZlbiBzZWxlY3Rv ciBpbnRvIFRSIHJlZ2lzdGVyLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtW2luXSBTZWxlY3Rv ciAgICAgVGFzayBzZWdtZW50IHNlbGVjdG9yDQo+ID4gPiArKiovDQo+ID4gPiArVk9JRA0KPiA+ ID4gK0VGSUFQSQ0KPiA+ID4gK0FzbVdyaXRlVHIgKA0KPiA+ID4gKyAgSU4gVUlOVDE2IFNlbGVj dG9yDQo+ID4gPiArICApDQo+ID4gPiArew0KPiA+ID4gKyAgZ1VuaXRUZXN0SG9zdEJhc2VMaWIu WDg2LT5Bc21Xcml0ZVRyIChTZWxlY3Rvcik7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gKy8q Kg0KPiA+ID4gKyAgUGVyZm9ybXMgYSBzZXJpYWxpemluZyBvcGVyYXRpb24gb24gYWxsIGxvYWQt DQo+IGZyb20tDQo+ID4gbWVtb3J5IGluc3RydWN0aW9ucyB0aGF0DQo+ID4gPiArICB3ZXJlIGlz c3VlZCBwcmlvciB0aGUgQXNtTGZlbmNlIGZ1bmN0aW9uLg0KPiA+ID4gKw0KPiA+ID4gKyAgRXhl Y3V0ZXMgYSBMRkVOQ0UgaW5zdHJ1Y3Rpb24uIFRoaXMgZnVuY3Rpb24gaXMNCj4gPiBvbmx5IGF2 YWlsYWJsZSBvbiBJQS0zMiBhbmQgeDY0Lg0KPiA+ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4gK1ZP SUQNCj4gPiA+ICtFRklBUEkNCj4gPiA+ICtBc21MZmVuY2UgKA0KPiA+ID4gKyAgVk9JRA0KPiA+ ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIGdVbml0VGVzdEhvc3RCYXNlTGliLlg4Ni0+QXNt TGZlbmNlICgpOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIFBhdGNo IHRoZSBpbW1lZGlhdGUgb3BlcmFuZCBvZiBhbiBJQTMyIG9yIFg2NA0KPiA+IGluc3RydWN0aW9u IHN1Y2ggdGhhdCB0aGUgYnl0ZSwNCj4gPiA+ICsgIHdvcmQsIGR3b3JkIG9yIHF3b3JkIG9wZXJh bmQgaXMgZW5jb2RlZCBhdCB0aGUNCj4gZW5kDQo+ID4gb2YgdGhlIGluc3RydWN0aW9uJ3MNCj4g PiA+ICsgIGJpbmFyeSByZXByZXNlbnRhdGlvbi4NCj4gPiA+ICsNCj4gPiA+ICsgIFRoaXMgZnVu Y3Rpb24gc2hvdWxkIGJlIHVzZWQgdG8gdXBkYXRlIG9iamVjdA0KPiBjb2RlDQo+ID4gdGhhdCB3 YXMgY29tcGlsZWQgd2l0aA0KPiA+ID4gKyAgTkFTTSBmcm9tIGFzc2VtYmx5IHNvdXJjZSBjb2Rl LiBFeGFtcGxlOg0KPiA+ID4gKw0KPiA+ID4gKyAgTkFTTSBzb3VyY2UgY29kZToNCj4gPiA+ICsN Cj4gPiA+ICsgICAgICAgIG1vdiAgICAgZWF4LCBzdHJpY3QgZHdvcmQgMCA7IHRoZSBpbW0zMg0K PiB6ZXJvDQo+ID4gb3BlcmFuZCB3aWxsIGJlIHBhdGNoZWQNCj4gPiA+ICsgICAgQVNNX1BGWChn UGF0Y2hDcjMpOg0KPiA+ID4gKyAgICAgICAgbW92ICAgICBjcjMsIGVheA0KPiA+ID4gKw0KPiA+ ID4gKyAgQyBzb3VyY2UgY29kZToNCj4gPiA+ICsNCj4gPiA+ICsgICAgWDg2X0FTU0VNQkxZX1BB VENIX0xBQkVMIGdQYXRjaENyMzsNCj4gPiA+ICsgICAgUGF0Y2hJbnN0cnVjdGlvblg4NiAoZ1Bh dGNoQ3IzLCBBc21SZWFkQ3IzICgpLA0KPiA+IDQpOw0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFt W291dF0gSW5zdHJ1Y3Rpb25FbmQgIFBvaW50ZXIgcmlnaHQgcGFzdA0KPiB0aGUNCj4gPiBpbnN0 cnVjdGlvbiB0byBwYXRjaC4gVGhlDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgaW1tZWRpYXRlIG9wZXJhbmQgdG8NCj4gPiBwYXRjaCBpcyBleHBlY3RlZCB0bw0KPiA+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXByaXNlIHRoZSB0cmFpbGluZw0KPiA+ IGJ5dGVzIG9mIHRoZSBpbnN0cnVjdGlvbi4NCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBJZiBJbnN0cnVjdGlvbkVuZCBpcw0KPiA+IGNsb3NlciB0byBhZGRyZXNzIDAgdGhh bg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlU2l6ZSBwZXJtaXRz LA0KPiB0aGVuDQo+ID4gQVNTRVJUKCkuDQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW1baW5dIFBh dGNoVmFsdWUgICAgICAgVGhlIGNvbnN0YW50IHRvIHdyaXRlDQo+ID4gdG8gdGhlIGltbWVkaWF0 ZSBvcGVyYW5kLg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBjYWxs ZXIgaXMNCj4gPiByZXNwb25zaWJsZSBmb3IgZW5zdXJpbmcgdGhhdA0KPiA+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFBhdGNoVmFsdWUgY2FuIGJlDQo+ID4gcmVwcmVzZW50ZWQg aW4gdGhlIGJ5dGUsIHdvcmQsDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZHdvcmQgb3IgcXdvcmQNCj4gb3BlcmFuZA0KPiA+IChhcyBpbmRpY2F0ZWQgdGhyb3VnaA0KPiA+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlU2l6ZSk7IG90aGVyd2lzZQ0K PiA+IEFTU0VSVCgpLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtW2luXSBWYWx1ZVNpemUgICAg ICAgIFRoZSBzaXplIG9mIHRoZQ0KPiBvcGVyYW5kDQo+ID4gaW4gYnl0ZXM7IG11c3QgYmUgMSwg MiwNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LCBvciA4LiBBU1NFUlQo KQ0KPiA+IG90aGVyd2lzZS4NCj4gPiA+ICsqKi8NCj4gPiA+ICtWT0lEDQo+ID4gPiArRUZJQVBJ DQo+ID4gPiArUGF0Y2hJbnN0cnVjdGlvblg4NiAoDQo+ID4gPiArICBPVVQgWDg2X0FTU0VNQkxZ X1BBVENIX0xBQkVMICpJbnN0cnVjdGlvbkVuZCwNCj4gPiA+ICsgIElOICBVSU5UNjQgICAgICAg ICAgICAgICAgICAgUGF0Y2hWYWx1ZSwNCj4gPiA+ICsgIElOICBVSU5UTiAgICAgICAgICAgICAg ICAgICAgVmFsdWVTaXplDQo+ID4gPiArICApDQo+ID4gPiArew0KPiA+ID4gKyAgZ1VuaXRUZXN0 SG9zdEJhc2VMaWIuWDg2LT5QYXRjaEluc3RydWN0aW9uWDg2DQo+ID4gKEluc3RydWN0aW9uRW5k LCBQYXRjaFZhbHVlLCBWYWx1ZVNpemUpOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvLy8N Cj4gPiA+ICsvLy8gQ29tbW9uIHNlcnZpY2VzDQo+ID4gPiArLy8vDQo+ID4gPiArU1RBVElDIFVO SVRfVEVTVF9IT1NUX0JBU0VfTElCX0NPTU1PTg0KPiA+IG1Vbml0VGVzdEhvc3RCYXNlTGliQ29t bW9uID0gew0KPiA+ID4gKyAgVW5pdFRlc3RIb3N0QmFzZUxpYkVuYWJsZUludGVycnVwdHMsDQo+ ID4gPiArICBVbml0VGVzdEhvc3RCYXNlTGliRGlzYWJsZUludGVycnVwdHMsDQo+ID4gPiArICBV bml0VGVzdEhvc3RCYXNlTGliRW5hYmxlRGlzYWJsZUludGVycnVwdHMsDQo+ID4gPiArICBVbml0 VGVzdEhvc3RCYXNlTGliR2V0SW50ZXJydXB0U3RhdGUsDQo+ID4gPiArfTsNCj4gPiA+ICsNCj4g PiA+ICsvLy8NCj4gPiA+ICsvLy8gSUEzMi9YNjQgc2VydmljZXMNCj4gPiA+ICsvLy8NCj4gPiA+ ICtTVEFUSUMgVU5JVF9URVNUX0hPU1RfQkFTRV9MSUJfWDg2DQo+ID4gbVVuaXRUZXN0SG9zdEJh c2VMaWJYODYgPSB7DQo+ID4gPiArICBVbml0VGVzdEhvc3RCYXNlTGliQXNtQ3B1aWQsDQo+ID4g PiArICBVbml0VGVzdEhvc3RCYXNlTGliQXNtQ3B1aWRFeCwNCj4gPiA+ICsgIFVuaXRUZXN0SG9z dEJhc2VMaWJBc21EaXNhYmxlQ2FjaGUsDQo+ID4gPiArICBVbml0VGVzdEhvc3RCYXNlTGliQXNt RW5hYmxlQ2FjaGUsDQo+ID4gPiArICBVbml0VGVzdEhvc3RCYXNlTGliQXNtUmVhZE1zcjY0LA0K PiA+ID4gKyAgVW5pdFRlc3RIb3N0QmFzZUxpYkFzbVdyaXRlTXNyNjQsDQo+ID4gPiArICBVbml0 VGVzdEhvc3RCYXNlTGliQXNtUmVhZENyMCwNCj4gPiA+ICsgIFVuaXRUZXN0SG9zdEJhc2VMaWJB c21SZWFkQ3IyLA0KPiA+ID4gKyAgVW5pdFRlc3RIb3N0QmFzZUxpYkFzbVJlYWRDcjMsDQo+ID4g PiArICBVbml0VGVzdEhvc3RCYXNlTGliQXNtUmVhZENyNCwNCj4gPiA+ICsgIFVuaXRUZXN0SG9z dEJhc2VMaWJBc21Xcml0ZUNyMCwNCj4gPiA+ICsgIFVuaXRUZXN0SG9zdEJhc2VMaWJBc21Xcml0 ZUNyMiwNCj4gPiA+ICsgIFVuaXRUZXN0SG9zdEJhc2VMaWJBc21Xcml0ZUNyMywNCj4gPiA+ICsg IFVuaXRUZXN0SG9zdEJhc2VMaWJBc21Xcml0ZUNyNCwNCj4gPiA+ICsgIFVuaXRUZXN0SG9zdEJh c2VMaWJBc21SZWFkRHIwLA0KPiA+ID4gKyAgVW5pdFRlc3RIb3N0QmFzZUxpYkFzbVJlYWREcjEs DQo+ID4gPiArICBVbml0VGVzdEhvc3RCYXNlTGliQXNtUmVhZERyMiwNCj4gPiA+ICsgIFVuaXRU ZXN0SG9zdEJhc2VMaWJBc21SZWFkRHIzLA0KPiA+ID4gKyAgVW5pdFRlc3RIb3N0QmFzZUxpYkFz bVJlYWREcjQsDQo+ID4gPiArICBVbml0VGVzdEhvc3RCYXNlTGliQXNtUmVhZERyNSwNCj4gPiA+ ICsgIFVuaXRUZXN0SG9zdEJhc2VMaWJBc21SZWFkRHI2LA0KPiA+ID4gKyAgVW5pdFRlc3RIb3N0 QmFzZUxpYkFzbVJlYWREcjcsDQo+ID4gPiArICBVbml0VGVzdEhvc3RCYXNlTGliQXNtV3JpdGVE cjAsDQo+ID4gPiArICBVbml0VGVzdEhvc3RCYXNlTGliQXNtV3JpdGVEcjEsDQo+ID4gPiArICBV bml0VGVzdEhvc3RCYXNlTGliQXNtV3JpdGVEcjIsDQo+ID4gPiArICBVbml0VGVzdEhvc3RCYXNl TGliQXNtV3JpdGVEcjMsDQo+ID4gPiArICBVbml0VGVzdEhvc3RCYXNlTGliQXNtV3JpdGVEcjQs DQo+ID4gPiArICBVbml0VGVzdEhvc3RCYXNlTGliQXNtV3JpdGVEcjUsDQo+ID4gPiArICBVbml0 VGVzdEhvc3RCYXNlTGliQXNtV3JpdGVEcjYsDQo+ID4gPiArICBVbml0VGVzdEhvc3RCYXNlTGli QXNtV3JpdGVEcjcsDQo+ID4gPiArICBVbml0VGVzdEhvc3RCYXNlTGliQXNtUmVhZENzLA0KPiA+ ID4gKyAgVW5pdFRlc3RIb3N0QmFzZUxpYkFzbVJlYWREcywNCj4gPiA+ICsgIFVuaXRUZXN0SG9z dEJhc2VMaWJBc21SZWFkRXMsDQo+ID4gPiArICBVbml0VGVzdEhvc3RCYXNlTGliQXNtUmVhZEZz LA0KPiA+ID4gKyAgVW5pdFRlc3RIb3N0QmFzZUxpYkFzbVJlYWRHcywNCj4gPiA+ICsgIFVuaXRU ZXN0SG9zdEJhc2VMaWJBc21SZWFkU3MsDQo+ID4gPiArICBVbml0VGVzdEhvc3RCYXNlTGliQXNt UmVhZFRyLA0KPiA+ID4gKyAgVW5pdFRlc3RIb3N0QmFzZUxpYkFzbVJlYWRHZHRyLA0KPiA+ID4g KyAgVW5pdFRlc3RIb3N0QmFzZUxpYkFzbVdyaXRlR2R0ciwNCj4gPiA+ICsgIFVuaXRUZXN0SG9z dEJhc2VMaWJBc21SZWFkSWR0ciwNCj4gPiA+ICsgIFVuaXRUZXN0SG9zdEJhc2VMaWJBc21Xcml0 ZUlkdHIsDQo+ID4gPiArICBVbml0VGVzdEhvc3RCYXNlTGliQXNtUmVhZExkdHIsDQo+ID4gPiAr ICBVbml0VGVzdEhvc3RCYXNlTGliQXNtV3JpdGVMZHRyLA0KPiA+ID4gKyAgVW5pdFRlc3RIb3N0 QmFzZUxpYkFzbVJlYWRQbWMsDQo+ID4gPiArICBVbml0VGVzdEhvc3RCYXNlTGliQXNtTW9uaXRv ciwNCj4gPiA+ICsgIFVuaXRUZXN0SG9zdEJhc2VMaWJBc21Nd2FpdCwNCj4gPiA+ICsgIFVuaXRU ZXN0SG9zdEJhc2VMaWJBc21XYmludmQsDQo+ID4gPiArICBVbml0VGVzdEhvc3RCYXNlTGliQXNt SW52ZCwNCj4gPiA+ICsgIFVuaXRUZXN0SG9zdEJhc2VMaWJBc21GbHVzaENhY2hlTGluZSwNCj4g PiA+ICsgIFVuaXRUZXN0SG9zdEJhc2VMaWJBc21FbmFibGVQYWdpbmczMiwNCj4gPiA+ICsgIFVu aXRUZXN0SG9zdEJhc2VMaWJBc21EaXNhYmxlUGFnaW5nMzIsDQo+ID4gPiArICBVbml0VGVzdEhv c3RCYXNlTGliQXNtRW5hYmxlUGFnaW5nNjQsDQo+ID4gPiArICBVbml0VGVzdEhvc3RCYXNlTGli QXNtRGlzYWJsZVBhZ2luZzY0LA0KPiA+ID4gKyAgVW5pdFRlc3RIb3N0QmFzZUxpYkFzbUdldFRo dW5rMTZQcm9wZXJ0aWVzLA0KPiA+ID4gKyAgVW5pdFRlc3RIb3N0QmFzZUxpYkFzbVByZXBhcmVU aHVuazE2LA0KPiA+ID4gKyAgVW5pdFRlc3RIb3N0QmFzZUxpYkFzbVRodW5rMTYsDQo+ID4gPiAr ICBVbml0VGVzdEhvc3RCYXNlTGliQXNtUHJlcGFyZUFuZFRodW5rMTYsDQo+ID4gPiArICBVbml0 VGVzdEhvc3RCYXNlTGliQXNtV3JpdGVUciwNCj4gPiA+ICsgIFVuaXRUZXN0SG9zdEJhc2VMaWJB c21MZmVuY2UsDQo+ID4gPiArICBVbml0VGVzdEhvc3RCYXNlTGliUGF0Y2hJbnN0cnVjdGlvblg4 Ng0KPiA+ID4gK307DQo+ID4gPiArDQo+ID4gPiArLy8vDQo+ID4gPiArLy8vIFN0cnVjdHVyZSBv ZiBob29rIGZ1bmN0aW9ucyBmb3IgQmFzZUxpYg0KPiBmdW5jdGlvbnMNCj4gPiB0aGF0IGNhbiBu b3QgYmUgdXNlZCBmcm9tDQo+ID4gPiArLy8vIGEgaG9zdCBhcHBsaWNhdGlvbi4gIEEgc2ltcGxl IGVtdWxhdGlvbiBvZg0KPiB0aGVzZQ0KPiA+IGZ1bmN0aW9uIGlzIHByb3ZpZGVkIGJ5DQo+ID4g PiArLy8vIGRlZmF1bHQuICBBIHNwZWNpZmljIHVuaXQgdGVzdCBjYW4gcHJvdmlkZSBpdHMNCj4g PiBvd24gaW1wbGVtZW50YXRpb24gZm9yIGFueQ0KPiA+ID4gKy8vLyBvZiB0aGVzZSBmdW5jdGlv bnMuDQo+ID4gPiArLy8vDQo+ID4gPiArVU5JVF9URVNUX0hPU1RfQkFTRV9MSUIgIGdVbml0VGVz dEhvc3RCYXNlTGliID0gew0KPiA+ID4gKyAgJm1Vbml0VGVzdEhvc3RCYXNlTGliQ29tbW9uLA0K PiA+ID4gKyAgJm1Vbml0VGVzdEhvc3RCYXNlTGliWDg2DQo+ID4gPiArfTsNCj4gPiA+IGRpZmYg LS1naXQgYS9NZGVQa2cvTWRlUGtnLmRlYyBiL01kZVBrZy9NZGVQa2cuZGVjDQo+ID4gPiBpbmRl eCA2ODJlNjFjYjg4Li44NTUwMTIxNzJkIDEwMDY0NA0KPiA+ID4gLS0tIGEvTWRlUGtnL01kZVBr Zy5kZWMNCj4gPiA+ICsrKyBiL01kZVBrZy9NZGVQa2cuZGVjDQo+ID4gPiBAQCAtNCw3ICs0LDcg QEANCj4gPiA+ICAjIEl0IGFsc28gcHJvdmlkZXMgdGhlIGRlZmluaXRpb25zKGluY2x1ZGluZw0K PiA+IFBQSXMvUFJPVE9DT0xzL0dVSURzKSBvZg0KPiA+ID4gICMgRUZJMS4xMC9VRUZJMi43L1BJ MS43IGFuZCBzb21lIEluZHVzdHJ5DQo+IFN0YW5kYXJkcy4NCj4gPiA+ICAjDQo+ID4gPiAtIyBD b3B5cmlnaHQgKGMpIDIwMDcgLSAyMDE5LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsDQo+ID4gcmln aHRzIHJlc2VydmVkLjxCUj4NCj4gPiA+ICsjIENvcHlyaWdodCAoYykgMjAwNyAtIDIwMjAsIElu dGVsIENvcnBvcmF0aW9uLiBBbGwNCj4gPiByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ID4gICMg UG9ydGlvbnMgY29weXJpZ2h0IChjKSAyMDA4IC0gMjAwOSwgQXBwbGUgSW5jLg0KPiBBbGwNCj4g PiByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ID4gICMgKEMpIENvcHlyaWdodCAyMDE2IC0gMjAy MCBIZXdsZXR0IFBhY2thcmQNCj4gPiBFbnRlcnByaXNlIERldmVsb3BtZW50IExQPEJSPg0KPiA+ ID4gICMNCj4gPiA+IEBAIC0yMyw2ICsyMyw3IEBAIFtEZWZpbmVzXQ0KPiA+ID4NCj4gPiA+ICBb SW5jbHVkZXNdDQo+ID4gPiAgICBJbmNsdWRlDQo+ID4gPiArICBUZXN0L1VuaXRUZXN0L0luY2x1 ZGUNCj4gPiA+DQo+ID4gPiAgW0luY2x1ZGVzLklBMzJdDQo+ID4gPiAgICBJbmNsdWRlL0lhMzIN Cj4gPiA+IGRpZmYgLS1naXQgYS9NZGVQa2cvVGVzdC9NZGVQa2dIb3N0VGVzdC5kc2MNCj4gPiBi L01kZVBrZy9UZXN0L01kZVBrZ0hvc3RUZXN0LmRzYw0KPiA+ID4gaW5kZXggM2Q2NzdlZTc1Yy4u MGNhYzE0ZjBlNSAxMDA2NDQNCj4gPiA+IC0tLSBhL01kZVBrZy9UZXN0L01kZVBrZ0hvc3RUZXN0 LmRzYw0KPiA+ID4gKysrIGIvTWRlUGtnL1Rlc3QvTWRlUGtnSG9zdFRlc3QuZHNjDQo+ID4gPiBA QCAtMjgsMyArMjgsOCBAQCBbQ29tcG9uZW50c10NCj4gPiA+ICAgICMNCj4gPiA+DQo+ID4NCj4g TWRlUGtnL1Rlc3QvVW5pdFRlc3QvTGlicmFyeS9CYXNlU2FmZUludExpYi9UZXN0QmFzZVNhZmUN Cj4gPiBJbnRMaWJIb3N0LmluZg0KPiA+ID4NCj4gPg0KPiBNZGVQa2cvVGVzdC9Vbml0VGVzdC9M aWJyYXJ5L0Jhc2VMaWIvQmFzZUxpYlVuaXRUZXN0c0hvcw0KPiA+IHQuaW5mDQo+ID4gPiArDQo+ ID4gPiArICAjDQo+ID4gPiArICAjIEJ1aWxkIEhPU1RfQVBQTElDQVRJT04gTGlicmFyaWVzDQo+ ID4gPiArICAjDQo+ID4gPiArICBNZGVQa2cvTGlicmFyeS9CYXNlTGliL1VuaXRUZXN0SG9zdEJh c2VMaWIuaW5mDQo+ID4gPiBkaWZmIC0tZ2l0DQo+ID4NCj4gYS9NZGVQa2cvVGVzdC9Vbml0VGVz dC9JbmNsdWRlL0hvc3RUZXN0L1VuaXRUZXN0SG9zdEJhc2UNCj4gPiBMaWIuaA0KPiA+ID4NCj4g Pg0KPiBiL01kZVBrZy9UZXN0L1VuaXRUZXN0L0luY2x1ZGUvSG9zdFRlc3QvVW5pdFRlc3RIb3N0 QmFzZQ0KPiA+IExpYi5oDQo+ID4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+ID4gaW5kZXgg MDAwMDAwMDAwMC4uNGFkMDVhNWFmMQ0KPiA+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ID4gKysrDQo+ ID4NCj4gYi9NZGVQa2cvVGVzdC9Vbml0VGVzdC9JbmNsdWRlL0hvc3RUZXN0L1VuaXRUZXN0SG9z dEJhc2UNCj4gPiBMaWIuaA0KPiA+ID4gQEAgLTAsMCArMSw1ODIgQEANCj4gPiA+ICsvKiogQGZp bGUNCj4gPiA+ICsgIFVuaXQgVGVzdCBIb3N0IEJhc2VMaWIgaG9va3MuDQo+ID4gPiArDQo+ID4g PiArICBDb3B5cmlnaHQgKGMpIDIwMjAsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzDQo+ ID4gcmVzZXJ2ZWQuPEJSPg0KPiA+ID4gKyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0y LUNsYXVzZS1QYXRlbnQNCj4gPiA+ICsNCj4gPiA+ICsqKi8NCj4gPiA+ICsNCj4gPiA+ICsjaWZu ZGVmIF9fVU5JVF9URVNUX0hPU1RfQkFTRV9MSUJfSF9fDQo+ID4gPiArI2RlZmluZSBfX1VOSVRf VEVTVF9IT1NUX0JBU0VfTElCX0hfXw0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgUHJv dG90eXBlIG9mIHNlcnZpY2Ugd2l0aCBubyBwYXJhbWV0ZXJzIGFuZCBubw0KPiA+IHJldHVybiB2 YWx1ZS4NCj4gPiA+ICsqKi8NCj4gPiA+ICt0eXBlZGVmDQo+ID4gPiArVk9JRA0KPiA+ID4gKyhF RklBUEkgKlVOSVRfVEVTVF9IT1NUX0JBU0VfTElCX1ZPSUQpKA0KPiA+ID4gKyAgVk9JRA0KPiA+ ID4gKyAgKTsNCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIFByb3RvdHlwZSBvZiBzZXJ2 aWNlIHRoYXQgcmVhZHMgYW5kIHJldHVybnMgYQ0KPiA+IEJPT0xFQU4gdmFsdWUuDQo+ID4gPiAr DQo+ID4gPiArICBAcmV0dXJuIFRoZSB2YWx1ZSByZWFkLg0KPiA+ID4gKyoqLw0KPiA+ID4gK3R5 cGVkZWYNCj4gPiA+ICtCT09MRUFODQo+ID4gPiArKEVGSUFQSSAqVU5JVF9URVNUX0hPU1RfQkFT RV9MSUJfUkVBRF9CT09MRUFOKSgNCj4gPiA+ICsgIFZPSUQNCj4gPiA+ICsgICk7DQo+ID4gPiAr DQo+ID4gPiArLyoqDQo+ID4gPiArICBQcm90b3R5cGUgb2Ygc2VydmljZSB0aGF0IHJlYWRzIGFu ZCByZXR1cm5zIGENCj4gPiBVSU5UMTYgdmFsdWUuDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dXJu IFRoZSB2YWx1ZSByZWFkLg0KPiA+ID4gKyoqLw0KPiA+ID4gK3R5cGVkZWYNCj4gPiA+ICtVSU5U MTYNCj4gPiA+ICsoRUZJQVBJICpVTklUX1RFU1RfSE9TVF9CQVNFX0xJQl9SRUFEX1VJTlQxNiko DQo+ID4gPiArICBWT0lEDQo+ID4gPiArICApOw0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4g KyAgUHJvdG90eXBlIG9mIHNlcnZpY2UgdGhhdCByZWFkcyBhbmQgcmV0dXJucyBhDQo+IFVJTlRO DQo+ID4gdmFsdWUuDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dXJuIFRoZSB2YWx1ZSByZWFkLg0K PiA+ID4gKyoqLw0KPiA+ID4gK3R5cGVkZWYNCj4gPiA+ICtVSU5UTg0KPiA+ID4gKyhFRklBUEkg KlVOSVRfVEVTVF9IT1NUX0JBU0VfTElCX1JFQURfVUlOVE4pKA0KPiA+ID4gKyAgVk9JRA0KPiA+ ID4gKyAgKTsNCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIFByb3RvdHlwZSBvZiBzZXJ2 aWNlIHRoYXQgd3JpdGVzIGFuZCByZXR1cm5zIGENCj4gPiBVSU5UMTYgdmFsdWUuDQo+ID4gPiAr DQo+ID4gPiArICBAcGFyYW1baW5dICBWYWx1ZSAgVGhlIHZhbHVlIHRvIHdyaXRlLg0KPiA+ID4g Kw0KPiA+ID4gKyAgQHJldHVybiBUaGUgdmFsdWUgd3JpdHRlbi4NCj4gPiA+ICsqKi8NCj4gPiA+ ICt0eXBlZGVmDQo+ID4gPiArVk9JRA0KPiA+ID4gKyhFRklBUEkgKlVOSVRfVEVTVF9IT1NUX0JB U0VfTElCX1dSSVRFX1VJTlQxNikoDQo+ID4gPiArICBJTiBVSU5UMTYgIFZhbHVlDQo+ID4gPiAr ICApOw0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgUHJvdG90eXBlIG9mIHNlcnZpY2Ug dGhhdCB3cml0ZXMgYW5kIHJldHVybnMgYQ0KPiA+IFVJTlROIHZhbHVlLg0KPiA+ID4gKw0KPiA+ ID4gKyAgQHBhcmFtW2luXSAgVmFsdWUgIFRoZSB2YWx1ZSB0byB3cml0ZS4NCj4gPiA+ICsNCj4g PiA+ICsgIEByZXR1cm4gVGhlIHZhbHVlIHdyaXR0ZW4uDQo+ID4gPiArKiovDQo+ID4gPiArdHlw ZWRlZg0KPiA+ID4gK1VJTlRODQo+ID4gPiArKEVGSUFQSSAqVU5JVF9URVNUX0hPU1RfQkFTRV9M SUJfV1JJVEVfVUlOVE4pKA0KPiA+ID4gKyAgSU4gVUlOVE4gIFZhbHVlDQo+ID4gPiArICApOw0K PiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgUHJvdG90eXBlIG9mIHNlcnZpY2UgdGhhdCBy ZWFkcyBhbmQgcmV0dXJucyBhbg0KPiA+IElBMzJfREVTQ1JJUFRPUi4NCj4gPiA+ICsNCj4gPiA+ ICsgIEBwYXJhbVtvdXRdICBJYTMyRGVzY3JpcHRvciAgUG9pbnRlciB0byB0aGUNCj4gPiBkZXNj cmlwdG9yIHJlYWQuDQo+ID4gPiArKiovDQo+ID4gPiArdHlwZWRlZg0KPiA+ID4gK1ZPSUQNCj4g PiA+ICsoRUZJQVBJDQo+ID4gKlVOSVRfVEVTVF9IT1NUX0JBU0VfTElCX0FTTV9SRUFEX0lBMzJf REVTQ1JJUFRPUikoDQo+ID4gPiArICBPVVQgSUEzMl9ERVNDUklQVE9SICAgICAgICAgICAqSWEz MkRlc2NyaXB0b3INCj4gPiA+ICsgICk7DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBQ cm90b3R5cGUgb2Ygc2VydmljZSB0aGF0IHdyaXRlcyBhbg0KPiA+IElBMzJfREVTQ1JJUFRPUi4N Cj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbVtpbl0gIElhMzJEZXNjcmlwdG9yICBQb2ludGVyIHRv IHRoZQ0KPiA+IGRlc2NyaXB0b3IgdG8gd3JpdGUuDQo+ID4gPiArKiovDQo+ID4gPiArdHlwZWRl Zg0KPiA+ID4gK1ZPSUQNCj4gPiA+ICsoRUZJQVBJDQo+ID4gKlVOSVRfVEVTVF9IT1NUX0JBU0Vf TElCX0FTTV9XUklURV9JQTMyX0RFU0NSSVBUT1IpKA0KPiA+ID4gKyAgSU4gQ09OU1QgSUEzMl9E RVNDUklQVE9SICAgICAqSWEzMkRlc2NyaXB0b3INCj4gPiA+ICsgICk7DQo+ID4gPiArDQo+ID4g PiArLyoqDQo+ID4gPiArICBSZXRyaWV2ZXMgQ1BVSUQgaW5mb3JtYXRpb24uDQo+ID4gPiArDQo+ ID4gPiArICBFeGVjdXRlcyB0aGUgQ1BVSUQgaW5zdHJ1Y3Rpb24gd2l0aCBFQVggc2V0IHRvDQo+ IHRoZQ0KPiA+IHZhbHVlIHNwZWNpZmllZCBieSBJbmRleC4NCj4gPiA+ICsgIFRoaXMgZnVuY3Rp b24gYWx3YXlzIHJldHVybnMgSW5kZXguDQo+ID4gPiArICBJZiBFYXggaXMgbm90IE5VTEwsIHRo ZW4gdGhlIHZhbHVlIG9mIEVBWCBhZnRlcg0KPiA+IENQVUlEIGlzIHJldHVybmVkIGluIEVheC4N Cj4gPiA+ICsgIElmIEVieCBpcyBub3QgTlVMTCwgdGhlbiB0aGUgdmFsdWUgb2YgRUJYIGFmdGVy DQo+ID4gQ1BVSUQgaXMgcmV0dXJuZWQgaW4gRWJ4Lg0KPiA+ID4gKyAgSWYgRWN4IGlzIG5vdCBO VUxMLCB0aGVuIHRoZSB2YWx1ZSBvZiBFQ1ggYWZ0ZXINCj4gPiBDUFVJRCBpcyByZXR1cm5lZCBp biBFY3guDQo+ID4gPiArICBJZiBFZHggaXMgbm90IE5VTEwsIHRoZW4gdGhlIHZhbHVlIG9mIEVE WCBhZnRlcg0KPiA+IENQVUlEIGlzIHJldHVybmVkIGluIEVkeC4NCj4gPiA+ICsgIFRoaXMgZnVu Y3Rpb24gaXMgb25seSBhdmFpbGFibGUgb24gSUEtMzIgYW5kIHg2NC4NCj4gPiA+ICsNCj4gPiA+ ICsgIEBwYXJhbSAgSW5kZXggVGhlIDMyLWJpdCB2YWx1ZSB0byBsb2FkIGludG8gRUFYDQo+ID4g cHJpb3IgdG8gaW52b2tpbmcgdGhlIENQVUlEDQo+ID4gPiArICAgICAgICAgICAgICAgIGluc3Ry dWN0aW9uLg0KPiA+ID4gKyAgQHBhcmFtICBFYXggICBUaGUgcG9pbnRlciB0byB0aGUgMzItYml0 IEVBWCB2YWx1ZQ0KPiA+IHJldHVybmVkIGJ5IHRoZSBDUFVJRA0KPiA+ID4gKyAgICAgICAgICAg ICAgICBpbnN0cnVjdGlvbi4gVGhpcyBpcyBhbiBvcHRpb25hbA0KPiA+IHBhcmFtZXRlciB0aGF0 IG1heSBiZSBOVUxMLg0KPiA+ID4gKyAgQHBhcmFtICBFYnggICBUaGUgcG9pbnRlciB0byB0aGUg MzItYml0IEVCWCB2YWx1ZQ0KPiA+IHJldHVybmVkIGJ5IHRoZSBDUFVJRA0KPiA+ID4gKyAgICAg ICAgICAgICAgICBpbnN0cnVjdGlvbi4gVGhpcyBpcyBhbiBvcHRpb25hbA0KPiA+IHBhcmFtZXRl ciB0aGF0IG1heSBiZSBOVUxMLg0KPiA+ID4gKyAgQHBhcmFtICBFY3ggICBUaGUgcG9pbnRlciB0 byB0aGUgMzItYml0IEVDWCB2YWx1ZQ0KPiA+IHJldHVybmVkIGJ5IHRoZSBDUFVJRA0KPiA+ID4g KyAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbi4gVGhpcyBpcyBhbiBvcHRpb25hbA0KPiA+IHBh cmFtZXRlciB0aGF0IG1heSBiZSBOVUxMLg0KPiA+ID4gKyAgQHBhcmFtICBFZHggICBUaGUgcG9p bnRlciB0byB0aGUgMzItYml0IEVEWCB2YWx1ZQ0KPiA+IHJldHVybmVkIGJ5IHRoZSBDUFVJRA0K PiA+ID4gKyAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbi4gVGhpcyBpcyBhbiBvcHRpb25hbA0K PiA+IHBhcmFtZXRlciB0aGF0IG1heSBiZSBOVUxMLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHVy biBJbmRleC4NCj4gPiA+ICsNCj4gPiA+ICsqKi8NCj4gPiA+ICt0eXBlZGVmDQo+ID4gPiArVUlO VDMyDQo+ID4gPiArKEVGSUFQSSAqVU5JVF9URVNUX0hPU1RfQkFTRV9MSUJfQVNNX0NQVUlEKSgN Cj4gPiA+ICsgIElOICAgICAgVUlOVDMyICAgICAgICAgICAgICAgICAgICBJbmRleCwNCj4gPiA+ ICsgIE9VVCAgICAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAqRWF4LCAgT1BUSU9OQUwNCj4g PiA+ICsgIE9VVCAgICAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAqRWJ4LCAgT1BUSU9OQUwN Cj4gPiA+ICsgIE9VVCAgICAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAqRWN4LCAgT1BUSU9O QUwNCj4gPiA+ICsgIE9VVCAgICAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAqRWR4ICAgT1BU SU9OQUwNCj4gPiA+ICsgICk7DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBSZXRyaWV2 ZXMgQ1BVSUQgaW5mb3JtYXRpb24gdXNpbmcgYW4gZXh0ZW5kZWQNCj4gbGVhZg0KPiA+IGlkZW50 aWZpZXIuDQo+ID4gPiArDQo+ID4gPiArICBFeGVjdXRlcyB0aGUgQ1BVSUQgaW5zdHJ1Y3Rpb24g d2l0aCBFQVggc2V0IHRvDQo+IHRoZQ0KPiA+IHZhbHVlIHNwZWNpZmllZCBieSBJbmRleA0KPiA+ ID4gKyAgYW5kIEVDWCBzZXQgdG8gdGhlIHZhbHVlIHNwZWNpZmllZCBieSBTdWJJbmRleC4NCj4g PiBUaGlzIGZ1bmN0aW9uIGFsd2F5cyByZXR1cm5zDQo+ID4gPiArICBJbmRleC4gVGhpcyBmdW5j dGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBvbiBJQS0zMg0KPiBhbmQNCj4gPiB4NjQuDQo+ID4gPiAr DQo+ID4gPiArICBJZiBFYXggaXMgbm90IE5VTEwsIHRoZW4gdGhlIHZhbHVlIG9mIEVBWCBhZnRl cg0KPiA+IENQVUlEIGlzIHJldHVybmVkIGluIEVheC4NCj4gPiA+ICsgIElmIEVieCBpcyBub3Qg TlVMTCwgdGhlbiB0aGUgdmFsdWUgb2YgRUJYIGFmdGVyDQo+ID4gQ1BVSUQgaXMgcmV0dXJuZWQg aW4gRWJ4Lg0KPiA+ID4gKyAgSWYgRWN4IGlzIG5vdCBOVUxMLCB0aGVuIHRoZSB2YWx1ZSBvZiBF Q1ggYWZ0ZXINCj4gPiBDUFVJRCBpcyByZXR1cm5lZCBpbiBFY3guDQo+ID4gPiArICBJZiBFZHgg aXMgbm90IE5VTEwsIHRoZW4gdGhlIHZhbHVlIG9mIEVEWCBhZnRlcg0KPiA+IENQVUlEIGlzIHJl dHVybmVkIGluIEVkeC4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbSAgSW5kZXggICAgIFRoZSAz Mi1iaXQgdmFsdWUgdG8gbG9hZCBpbnRvDQo+IEVBWA0KPiA+IHByaW9yIHRvIGludm9raW5nIHRo ZQ0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgQ1BVSUQgaW5zdHJ1Y3Rpb24uDQo+ID4gPiAr ICBAcGFyYW0gIFN1YkluZGV4ICBUaGUgMzItYml0IHZhbHVlIHRvIGxvYWQgaW50bw0KPiBFQ1gN Cj4gPiBwcmlvciB0byBpbnZva2luZyB0aGUNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgIENQ VUlEIGluc3RydWN0aW9uLg0KPiA+ID4gKyAgQHBhcmFtICBFYXggICAgICAgVGhlIHBvaW50ZXIg dG8gdGhlIDMyLWJpdCBFQVgNCj4gPiB2YWx1ZSByZXR1cm5lZCBieSB0aGUgQ1BVSUQNCj4gPiA+ ICsgICAgICAgICAgICAgICAgICAgIGluc3RydWN0aW9uLiBUaGlzIGlzIGFuDQo+IG9wdGlvbmFs DQo+ID4gcGFyYW1ldGVyIHRoYXQgbWF5IGJlDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICBO VUxMLg0KPiA+ID4gKyAgQHBhcmFtICBFYnggICAgICAgVGhlIHBvaW50ZXIgdG8gdGhlIDMyLWJp dCBFQlgNCj4gPiB2YWx1ZSByZXR1cm5lZCBieSB0aGUgQ1BVSUQNCj4gPiA+ICsgICAgICAgICAg ICAgICAgICAgIGluc3RydWN0aW9uLiBUaGlzIGlzIGFuDQo+IG9wdGlvbmFsDQo+ID4gcGFyYW1l dGVyIHRoYXQgbWF5IGJlDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICBOVUxMLg0KPiA+ID4g KyAgQHBhcmFtICBFY3ggICAgICAgVGhlIHBvaW50ZXIgdG8gdGhlIDMyLWJpdCBFQ1gNCj4gPiB2 YWx1ZSByZXR1cm5lZCBieSB0aGUgQ1BVSUQNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgIGlu c3RydWN0aW9uLiBUaGlzIGlzIGFuDQo+IG9wdGlvbmFsDQo+ID4gcGFyYW1ldGVyIHRoYXQgbWF5 IGJlDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICBOVUxMLg0KPiA+ID4gKyAgQHBhcmFtICBF ZHggICAgICAgVGhlIHBvaW50ZXIgdG8gdGhlIDMyLWJpdCBFRFgNCj4gPiB2YWx1ZSByZXR1cm5l ZCBieSB0aGUgQ1BVSUQNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgIGluc3RydWN0aW9uLiBU aGlzIGlzIGFuDQo+IG9wdGlvbmFsDQo+ID4gcGFyYW1ldGVyIHRoYXQgbWF5IGJlDQo+ID4gPiAr ICAgICAgICAgICAgICAgICAgICBOVUxMLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHVybiBJbmRl eC4NCj4gPiA+ICsNCj4gPiA+ICsqKi8NCj4gPiA+ICt0eXBlZGVmDQo+ID4gPiArVUlOVDMyDQo+ ID4gPiArKEVGSUFQSSAqVU5JVF9URVNUX0hPU1RfQkFTRV9MSUJfQVNNX0NQVUlEX0VYKSgNCj4g PiA+ICsgIElOICAgICAgVUlOVDMyICAgICAgICAgICAgICAgICAgICBJbmRleCwNCj4gPiA+ICsg IElOICAgICAgVUlOVDMyICAgICAgICAgICAgICAgICAgICBTdWJJbmRleCwNCj4gPiA+ICsgIE9V VCAgICAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAqRWF4LCAgT1BUSU9OQUwNCj4gPiA+ICsg IE9VVCAgICAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAqRWJ4LCAgT1BUSU9OQUwNCj4gPiA+ ICsgIE9VVCAgICAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAqRWN4LCAgT1BUSU9OQUwNCj4g PiA+ICsgIE9VVCAgICAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAqRWR4ICAgT1BUSU9OQUwN Cj4gPiA+ICsgICk7DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBSZXR1cm5zIGEgNjQt Yml0IE1hY2hpbmUgU3BlY2lmaWMgUmVnaXN0ZXIoTVNSKS4NCj4gPiA+ICsNCj4gPiA+ICsgIFJl YWRzIGFuZCByZXR1cm5zIHRoZSA2NC1iaXQgTVNSIHNwZWNpZmllZCBieQ0KPiA+IEluZGV4LiBO byBwYXJhbWV0ZXIgY2hlY2tpbmcgaXMNCj4gPiA+ICsgIHBlcmZvcm1lZCBvbiBJbmRleCwgYW5k IHNvbWUgSW5kZXggdmFsdWVzIG1heQ0KPiBjYXVzZQ0KPiA+IENQVSBleGNlcHRpb25zLiBUaGUN Cj4gPiA+ICsgIGNhbGxlciBtdXN0IGVpdGhlciBndWFyYW50ZWUgdGhhdCBJbmRleCBpcyB2YWxp ZCwNCj4gPiBvciB0aGUgY2FsbGVyIG11c3Qgc2V0IHVwDQo+ID4gPiArICBleGNlcHRpb24gaGFu ZGxlcnMgdG8gY2F0Y2ggdGhlIGV4Y2VwdGlvbnMuIFRoaXMNCj4gPiBmdW5jdGlvbiBpcyBvbmx5 IGF2YWlsYWJsZQ0KPiA+ID4gKyAgb24gSUEtMzIgYW5kIHg2NC4NCj4gPiA+ICsNCj4gPiA+ICsg IEBwYXJhbSAgSW5kZXggVGhlIDMyLWJpdCBNU1IgaW5kZXggdG8gcmVhZC4NCj4gPiA+ICsNCj4g PiA+ICsgIEByZXR1cm4gVGhlIHZhbHVlIG9mIHRoZSBNU1IgaWRlbnRpZmllZCBieSBJbmRleC4N Cj4gPiA+ICsNCj4gPiA+ICsqKi8NCj4gPiA+ICt0eXBlZGVmDQo+ID4gPiArVUlOVDY0DQo+ID4g PiArKEVGSUFQSSAqVU5JVF9URVNUX0hPU1RfQkFTRV9MSUJfQVNNX1JFQURfTVNSXzY0KSgNCj4g PiA+ICsgIElOICAgICAgVUlOVDMyICAgICAgICAgICAgICAgICAgICBJbmRleA0KPiA+ID4gKyAg KTsNCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIFdyaXRlcyBhIDY0LWJpdCB2YWx1ZSB0 byBhIE1hY2hpbmUgU3BlY2lmaWMNCj4gPiBSZWdpc3RlcihNU1IpLCBhbmQgcmV0dXJucyB0aGUN Cj4gPiA+ICsgIHZhbHVlLg0KPiA+ID4gKw0KPiA+ID4gKyAgV3JpdGVzIHRoZSA2NC1iaXQgdmFs dWUgc3BlY2lmaWVkIGJ5IFZhbHVlIHRvIHRoZQ0KPiA+IE1TUiBzcGVjaWZpZWQgYnkgSW5kZXgu IFRoZQ0KPiA+ID4gKyAgNjQtYml0IHZhbHVlIHdyaXR0ZW4gdG8gdGhlIE1TUiBpcyByZXR1cm5l ZC4gTm8NCj4gPiBwYXJhbWV0ZXIgY2hlY2tpbmcgaXMNCj4gPiA+ICsgIHBlcmZvcm1lZCBvbiBJ bmRleCBvciBWYWx1ZSwgYW5kIHNvbWUgb2YgdGhlc2UNCj4gbWF5DQo+ID4gY2F1c2UgQ1BVIGV4 Y2VwdGlvbnMuIFRoZQ0KPiA+ID4gKyAgY2FsbGVyIG11c3QgZWl0aGVyIGd1YXJhbnRlZSB0aGF0 IEluZGV4IGFuZCBWYWx1ZQ0KPiA+IGFyZSB2YWxpZCwgb3IgdGhlIGNhbGxlcg0KPiA+ID4gKyAg bXVzdCBlc3RhYmxpc2ggcHJvcGVyIGV4Y2VwdGlvbiBoYW5kbGVycy4gVGhpcw0KPiA+IGZ1bmN0 aW9uIGlzIG9ubHkgYXZhaWxhYmxlIG9uDQo+ID4gPiArICBJQS0zMiBhbmQgeDY0Lg0KPiA+ID4g Kw0KPiA+ID4gKyAgQHBhcmFtICBJbmRleCBUaGUgMzItYml0IE1TUiBpbmRleCB0byB3cml0ZS4N Cj4gPiA+ICsgIEBwYXJhbSAgVmFsdWUgVGhlIDY0LWJpdCB2YWx1ZSB0byB3cml0ZSB0byB0aGUN Cj4gTVNSLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHVybiBWYWx1ZQ0KPiA+ID4gKw0KPiA+ID4g KyoqLw0KPiA+ID4gK3R5cGVkZWYNCj4gPiA+ICtVSU5UNjQNCj4gPiA+ICsoRUZJQVBJICpVTklU X1RFU1RfSE9TVF9CQVNFX0xJQl9BU01fV1JJVEVfTVNSXzY0KSgNCj4gPiA+ICsgIElOICAgICAg VUlOVDMyICAgICAgICAgICAgICAgICAgICBJbmRleCwNCj4gPiA+ICsgIElOICAgICAgVUlOVDY0 ICAgICAgICAgICAgICAgICAgICBWYWx1ZQ0KPiA+ID4gKyAgKTsNCj4gPiA+ICsNCj4gPiA+ICsv KioNCj4gPiA+ICsgIFJlYWRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIGEgUGVyZm9ybWFuY2UgQ291 bnRlcg0KPiA+IChQTUMpLg0KPiA+ID4gKw0KPiA+ID4gKyAgUmVhZHMgYW5kIHJldHVybnMgdGhl IGN1cnJlbnQgdmFsdWUgb2YNCj4gcGVyZm9ybWFuY2UNCj4gPiBjb3VudGVyIHNwZWNpZmllZCBi eQ0KPiA+ID4gKyAgSW5kZXguIFRoaXMgZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgb24gSUEt MzINCj4gYW5kDQo+ID4geDY0Lg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtICBJbmRleCBUaGUg MzItYml0IFBlcmZvcm1hbmNlIENvdW50ZXINCj4gaW5kZXgNCj4gPiB0byByZWFkLg0KPiA+ID4g Kw0KPiA+ID4gKyAgQHJldHVybiBUaGUgdmFsdWUgb2YgdGhlIFBNQyBzcGVjaWZpZWQgYnkgSW5k ZXguDQo+ID4gPiArDQo+ID4gPiArKiovDQo+ID4gPiArdHlwZWRlZg0KPiA+ID4gK1VJTlQ2NA0K PiA+ID4gKyhFRklBUEkgKlVOSVRfVEVTVF9IT1NUX0JBU0VfTElCX0FTTV9SRUFEX1BNQykoDQo+ ID4gPiArICBJTiAgICAgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgSW5kZXgNCj4gPiA+ICsg ICk7DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBTZXRzIHVwIGEgbW9uaXRvciBidWZm ZXIgdGhhdCBpcyB1c2VkIGJ5DQo+ID4gQXNtTXdhaXQoKS4NCj4gPiA+ICsNCj4gPiA+ICsgIEV4 ZWN1dGVzIGEgTU9OSVRPUiBpbnN0cnVjdGlvbiB3aXRoIHRoZSByZWdpc3Rlcg0KPiA+IHN0YXRl IHNwZWNpZmllZCBieSBFYXgsIEVjeA0KPiA+ID4gKyAgYW5kIEVkeC4gUmV0dXJucyBFYXguIFRo aXMgZnVuY3Rpb24gaXMgb25seQ0KPiA+IGF2YWlsYWJsZSBvbiBJQS0zMiBhbmQgeDY0Lg0KPiA+ ID4gKw0KPiA+ID4gKyAgQHBhcmFtICBFYXggVGhlIHZhbHVlIHRvIGxvYWQgaW50byBFQVggb3Ig UkFYDQo+ID4gYmVmb3JlIGV4ZWN1dGluZyB0aGUgTU9OSVRPUg0KPiA+ID4gKyAgICAgICAgICAg ICAgaW5zdHJ1Y3Rpb24uDQo+ID4gPiArICBAcGFyYW0gIEVjeCBUaGUgdmFsdWUgdG8gbG9hZCBp bnRvIEVDWCBvciBSQ1gNCj4gPiBiZWZvcmUgZXhlY3V0aW5nIHRoZSBNT05JVE9SDQo+ID4gPiAr ICAgICAgICAgICAgICBpbnN0cnVjdGlvbi4NCj4gPiA+ICsgIEBwYXJhbSAgRWR4IFRoZSB2YWx1 ZSB0byBsb2FkIGludG8gRURYIG9yIFJEWA0KPiA+IGJlZm9yZSBleGVjdXRpbmcgdGhlIE1PTklU T1INCj4gPiA+ICsgICAgICAgICAgICAgIGluc3RydWN0aW9uLg0KPiA+ID4gKw0KPiA+ID4gKyAg QHJldHVybiBFYXgNCj4gPiA+ICsNCj4gPiA+ICsqKi8NCj4gPiA+ICt0eXBlZGVmDQo+ID4gPiAr VUlOVE4NCj4gPiA+ICsoRUZJQVBJICpVTklUX1RFU1RfSE9TVF9CQVNFX0xJQl9BU01fTU9OSVRP UikoDQo+ID4gPiArICBJTiAgICAgIFVJTlROICAgICAgICAgICAgICAgICAgICAgRWF4LA0KPiA+ ID4gKyAgSU4gICAgICBVSU5UTiAgICAgICAgICAgICAgICAgICAgIEVjeCwNCj4gPiA+ICsgIElO ICAgICAgVUlOVE4gICAgICAgICAgICAgICAgICAgICBFZHgNCj4gPiA+ICsgICk7DQo+ID4gPiAr DQo+ID4gPiArLyoqDQo+ID4gPiArICBFeGVjdXRlcyBhbiBNV0FJVCBpbnN0cnVjdGlvbi4NCj4g PiA+ICsNCj4gPiA+ICsgIEV4ZWN1dGVzIGFuIE1XQUlUIGluc3RydWN0aW9uIHdpdGggdGhlIHJl Z2lzdGVyDQo+ID4gc3RhdGUgc3BlY2lmaWVkIGJ5IEVheCBhbmQNCj4gPiA+ICsgIEVjeC4gUmV0 dXJucyBFYXguIFRoaXMgZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUNCj4gPiBvbiBJQS0zMiBh bmQgeDY0Lg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtICBFYXggVGhlIHZhbHVlIHRvIGxvYWQg aW50byBFQVggb3IgUkFYDQo+ID4gYmVmb3JlIGV4ZWN1dGluZyB0aGUgTU9OSVRPUg0KPiA+ID4g KyAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb24uDQo+ID4gPiArICBAcGFyYW0gIEVjeCBUaGUgdmFs dWUgdG8gbG9hZCBpbnRvIEVDWCBvciBSQ1gNCj4gPiBiZWZvcmUgZXhlY3V0aW5nIHRoZSBNT05J VE9SDQo+ID4gPiArICAgICAgICAgICAgICBpbnN0cnVjdGlvbi4NCj4gPiA+ICsNCj4gPiA+ICsg IEByZXR1cm4gRWF4DQo+ID4gPiArDQo+ID4gPiArKiovDQo+ID4gPiArdHlwZWRlZg0KPiA+ID4g K1VJTlRODQo+ID4gPiArKEVGSUFQSSAqVU5JVF9URVNUX0hPU1RfQkFTRV9MSUJfQVNNX01XQUlU KSgNCj4gPiA+ICsgIElOICAgICAgVUlOVE4gICAgICAgICAgICAgICAgICAgICBFYXgsDQo+ID4g PiArICBJTiAgICAgIFVJTlROICAgICAgICAgICAgICAgICAgICAgRWN4DQo+ID4gPiArICApOw0K PiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgRmx1c2hlcyBhIGNhY2hlIGxpbmUgZnJvbSBh bGwgdGhlIGluc3RydWN0aW9uIGFuZA0KPiA+IGRhdGEgY2FjaGVzIHdpdGhpbiB0aGUNCj4gPiA+ ICsgIGNvaGVyZW5jeSBkb21haW4gb2YgdGhlIENQVS4NCj4gPiA+ICsNCj4gPiA+ICsgIEZsdXNo ZWQgdGhlIGNhY2hlIGxpbmUgc3BlY2lmaWVkIGJ5DQo+IExpbmVhckFkZHJlc3MsDQo+ID4gYW5k IHJldHVybnMgTGluZWFyQWRkcmVzcy4NCj4gPiA+ICsgIFRoaXMgZnVuY3Rpb24gaXMgb25seSBh dmFpbGFibGUgb24gSUEtMzIgYW5kIHg2NC4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbSAgTGlu ZWFyQWRkcmVzcyBUaGUgYWRkcmVzcyBvZiB0aGUgY2FjaGUNCj4gbGluZQ0KPiA+IHRvIGZsdXNo LiBJZiB0aGUgQ1BVIGlzDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgaW4gYSBwaHlz aWNhbCBhZGRyZXNzaW5nDQo+ID4gbW9kZSwgdGhlbiBMaW5lYXJBZGRyZXNzIGlzIGENCj4gPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICBwaHlzaWNhbCBhZGRyZXNzLiBJZiB0aGUNCj4gQ1BV DQo+ID4gaXMgaW4gYSB2aXJ0dWFsDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgYWRk cmVzc2luZyBtb2RlLCB0aGVuDQo+ID4gTGluZWFyQWRkcmVzcyBpcyBhIHZpcnR1YWwNCj4gPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJl dHVybiBMaW5lYXJBZGRyZXNzLg0KPiA+ID4gKyoqLw0KPiA+ID4gK3R5cGVkZWYNCj4gPiA+ICtW T0lEICoNCj4gPiA+ICsoRUZJQVBJDQo+ID4gKlVOSVRfVEVTVF9IT1NUX0JBU0VfTElCX0FTTV9G TFVTSF9DQUNIRV9MSU5FKSgNCj4gPiA+ICsgIElOICAgICAgVk9JRCAgICAgICAgICAgICAgICAg ICAgICAqTGluZWFyQWRkcmVzcw0KPiA+ID4gKyAgKTsNCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4g PiA+ICsgIFByb3RvdHlwZSBvZiBzZXJ2aWNlIHRoYXQgZW5hYmxlcyBvdCBkaXNhYmxlcyAzMi0N Cj4gPiBiaXQgcGFnaW5nIG1vZGVzLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtICBFbnRyeVBv aW50ICBBIHBvaW50ZXIgdG8gZnVuY3Rpb24gdG8gY2FsbA0KPiA+IHdpdGggdGhlIG5ldyBzdGFj ayBhZnRlcg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICBwYWdpbmcgaXMgZW5hYmxlZC4N Cj4gPiA+ICsgIEBwYXJhbSAgQ29udGV4dDEgICAgQSBwb2ludGVyIHRvIHRoZSBjb250ZXh0IHRv DQo+ID4gcGFzcyBpbnRvIHRoZSBFbnRyeVBvaW50DQo+ID4gPiArICAgICAgICAgICAgICAgICAg ICAgIGZ1bmN0aW9uIGFzIHRoZSBmaXJzdA0KPiBwYXJhbWV0ZXINCj4gPiBhZnRlciBwYWdpbmcg aXMgZW5hYmxlZC4NCj4gPiA+ICsgIEBwYXJhbSAgQ29udGV4dDIgICAgQSBwb2ludGVyIHRvIHRo ZSBjb250ZXh0IHRvDQo+ID4gcGFzcyBpbnRvIHRoZSBFbnRyeVBvaW50DQo+ID4gPiArICAgICAg ICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGFzIHRoZSBzZWNvbmQNCj4gPiBwYXJhbWV0ZXIgYWZ0 ZXIgcGFnaW5nIGlzIGVuYWJsZWQuDQo+ID4gPiArICBAcGFyYW0gIE5ld1N0YWNrICAgIEEgcG9p bnRlciB0byB0aGUgbmV3IHN0YWNrIHRvDQo+ID4gdXNlIGZvciB0aGUgRW50cnlQb2ludA0KPiA+ ID4gKyAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBhZnRlciBwYWdpbmcgaXMNCj4gPiBl bmFibGVkLg0KPiA+ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4gK3R5cGVkZWYNCj4gPiA+ICtWT0lE DQo+ID4gPiArKEVGSUFQSSAqVU5JVF9URVNUX0hPU1RfQkFTRV9MSUJfQVNNX1BBR0lOR18zMiko DQo+ID4gPiArICBJTiAgICAgIFNXSVRDSF9TVEFDS19FTlRSWV9QT0lOVCAgRW50cnlQb2ludCwN Cj4gPiA+ICsgIElOICAgICAgVk9JRCAgICAgICAgICAgICAgICAgICAgICAqQ29udGV4dDEsDQo+ ID4gT1BUSU9OQUwNCj4gPiA+ICsgIElOICAgICAgVk9JRCAgICAgICAgICAgICAgICAgICAgICAq Q29udGV4dDIsDQo+ID4gT1BUSU9OQUwNCj4gPiA+ICsgIElOICAgICAgVk9JRCAgICAgICAgICAg ICAgICAgICAgICAqTmV3U3RhY2sNCj4gPiA+ICsgICk7DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ ID4gPiArICBFbmFibGVzIHRoZSA2NC1iaXQgcGFnaW5nIG1vZGUgb24gdGhlIENQVS4NCj4gPiA+ ICsNCj4gPiA+ICsgIEVuYWJsZXMgdGhlIDY0LWJpdCBwYWdpbmcgbW9kZSBvbiB0aGUgQ1BVLiBD UjAsDQo+ID4gQ1IzLCBDUjQsIGFuZCB0aGUgcGFnZSB0YWJsZXMNCj4gPiA+ICsgIG11c3QgYmUg cHJvcGVybHkgaW5pdGlhbGl6ZWQgcHJpb3IgdG8gY2FsbGluZw0KPiB0aGlzDQo+ID4gc2Vydmlj ZS4gVGhpcyBmdW5jdGlvbg0KPiA+ID4gKyAgYXNzdW1lcyB0aGUgY3VycmVudCBleGVjdXRpb24g bW9kZSBpcyAzMi1iaXQNCj4gPiBwcm90ZWN0ZWQgbW9kZSB3aXRoIGZsYXQNCj4gPiA+ICsgIGRl c2NyaXB0b3JzLiBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIG9uDQo+IElBLQ0KPiA+ IDMyLiBBZnRlciB0aGUgNjQtYml0DQo+ID4gPiArICBwYWdpbmcgbW9kZSBpcyBlbmFibGVkLCBj b250cm9sIGlzIHRyYW5zZmVycmVkIHRvDQo+ID4gdGhlIGZ1bmN0aW9uIHNwZWNpZmllZCBieQ0K PiA+ID4gKyAgRW50cnlQb2ludCB1c2luZyB0aGUgbmV3IHN0YWNrIHNwZWNpZmllZCBieQ0KPiA+ IE5ld1N0YWNrIGFuZCBwYXNzaW5nIGluIHRoZQ0KPiA+ID4gKyAgcGFyYW1ldGVycyBzcGVjaWZp ZWQgYnkgQ29udGV4dDEgYW5kIENvbnRleHQyLg0KPiA+IENvbnRleHQxIGFuZCBDb250ZXh0MiBh cmUNCj4gPiA+ICsgIG9wdGlvbmFsIGFuZCBtYXkgYmUgMC4gVGhlIGZ1bmN0aW9uIEVudHJ5UG9p bnQNCj4gbXVzdA0KPiA+IG5ldmVyIHJldHVybi4NCj4gPiA+ICsNCj4gPiA+ICsgIElmIHRoZSBj dXJyZW50IGV4ZWN1dGlvbiBtb2RlIGlzIG5vdCAzMi1iaXQNCj4gPiBwcm90ZWN0ZWQgbW9kZSB3 aXRoIGZsYXQNCj4gPiA+ICsgIGRlc2NyaXB0b3JzLCB0aGVuIEFTU0VSVCgpLg0KPiA+ID4gKyAg SWYgRW50cnlQb2ludCBpcyAwLCB0aGVuIEFTU0VSVCgpLg0KPiA+ID4gKyAgSWYgTmV3U3RhY2sg aXMgMCwgdGhlbiBBU1NFUlQoKS4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbSAgQ3MgICAgICAg ICAgVGhlIDE2LWJpdCBzZWxlY3RvciB0byBsb2FkDQo+IGluDQo+ID4gdGhlIENTIGJlZm9yZSBF bnRyeVBvaW50DQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgIGlzIGNhbGxlZC4gVGhlIGRl c2NyaXB0b3IgaW4NCj4gPiB0aGUgR0RUIHRoYXQgdGhpcyBzZWxlY3Rvcg0KPiA+ID4gKyAgICAg ICAgICAgICAgICAgICAgICByZWZlcmVuY2VzIG11c3QgYmUgc2V0dXAgZm9yDQo+ID4gbG9uZyBt b2RlLg0KPiA+ID4gKyAgQHBhcmFtICBFbnRyeVBvaW50ICBUaGUgNjQtYml0IHZpcnR1YWwgYWRk cmVzcyBvZg0KPiA+IHRoZSBmdW5jdGlvbiB0byBjYWxsIHdpdGgNCj4gPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgdGhlIG5ldyBzdGFjayBhZnRlciBwYWdpbmcgaXMNCj4gPiBlbmFibGVkLg0K PiA+ID4gKyAgQHBhcmFtICBDb250ZXh0MSAgICBUaGUgNjQtYml0IHZpcnR1YWwgYWRkcmVzcyBv Zg0KPiA+IHRoZSBjb250ZXh0IHRvIHBhc3MgaW50bw0KPiA+ID4gKyAgICAgICAgICAgICAgICAg ICAgICB0aGUgRW50cnlQb2ludCBmdW5jdGlvbiBhcw0KPiB0aGUNCj4gPiBmaXJzdCBwYXJhbWV0 ZXIgYWZ0ZXINCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgcGFnaW5nIGlzIGVuYWJsZWQu DQo+ID4gPiArICBAcGFyYW0gIENvbnRleHQyICAgIFRoZSA2NC1iaXQgdmlydHVhbCBhZGRyZXNz IG9mDQo+ID4gdGhlIGNvbnRleHQgdG8gcGFzcyBpbnRvDQo+ID4gPiArICAgICAgICAgICAgICAg ICAgICAgIHRoZSBFbnRyeVBvaW50IGZ1bmN0aW9uIGFzDQo+IHRoZQ0KPiA+IHNlY29uZCBwYXJh bWV0ZXIgYWZ0ZXINCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgcGFnaW5nIGlzIGVuYWJs ZWQuDQo+ID4gPiArICBAcGFyYW0gIE5ld1N0YWNrICAgIFRoZSA2NC1iaXQgdmlydHVhbCBhZGRy ZXNzIG9mDQo+ID4gdGhlIG5ldyBzdGFjayB0byB1c2UgZm9yDQo+ID4gPiArICAgICAgICAgICAg ICAgICAgICAgIHRoZSBFbnRyeVBvaW50IGZ1bmN0aW9uIGFmdGVyDQo+ID4gcGFnaW5nIGlzIGVu YWJsZWQuDQo+ID4gPiArDQo+ID4gPiArKiovDQo+ID4gPiArdHlwZWRlZg0KPiA+ID4gK1ZPSUQN Cj4gPiA+ICsoRUZJQVBJDQo+ID4gKlVOSVRfVEVTVF9IT1NUX0JBU0VfTElCX0FTTV9FTkFCTEVf UEFHSU5HXzY0KSgNCj4gPiA+ICsgIElOICAgICAgVUlOVDE2ICAgICAgICAgICAgICAgICAgICBD cywNCj4gPiA+ICsgIElOICAgICAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICBFbnRyeVBvaW50 LA0KPiA+ID4gKyAgSU4gICAgICBVSU5UNjQgICAgICAgICAgICAgICAgICAgIENvbnRleHQxLA0K PiA+IE9QVElPTkFMDQo+ID4gPiArICBJTiAgICAgIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAg Q29udGV4dDIsDQo+ID4gT1BUSU9OQUwNCj4gPiA+ICsgIElOICAgICAgVUlOVDY0ICAgICAgICAg ICAgICAgICAgICBOZXdTdGFjaw0KPiA+ID4gKyAgKTsNCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4g PiA+ICsgIERpc2FibGVzIHRoZSA2NC1iaXQgcGFnaW5nIG1vZGUgb24gdGhlIENQVS4NCj4gPiA+ ICsNCj4gPiA+ICsgIERpc2FibGVzIHRoZSA2NC1iaXQgcGFnaW5nIG1vZGUgb24gdGhlIENQVSBh bmQNCj4gPiByZXR1cm5zIHRvIDMyLWJpdCBwcm90ZWN0ZWQNCj4gPiA+ICsgIG1vZGUuIFRoaXMg ZnVuY3Rpb24gYXNzdW1lcyB0aGUgY3VycmVudCBleGVjdXRpb24NCj4gPiBtb2RlIGlzIDY0LXBh Z2luZyBtb2RlLg0KPiA+ID4gKyAgVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBvbiB4 NjQuIEFmdGVyIHRoZQ0KPiA+IDY0LWJpdCBwYWdpbmcgbW9kZSBpcw0KPiA+ID4gKyAgZGlzYWJs ZWQsIGNvbnRyb2wgaXMgdHJhbnNmZXJyZWQgdG8gdGhlIGZ1bmN0aW9uDQo+ID4gc3BlY2lmaWVk IGJ5IEVudHJ5UG9pbnQNCj4gPiA+ICsgIHVzaW5nIHRoZSBuZXcgc3RhY2sgc3BlY2lmaWVkIGJ5 IE5ld1N0YWNrIGFuZA0KPiA+IHBhc3NpbmcgaW4gdGhlIHBhcmFtZXRlcnMNCj4gPiA+ICsgIHNw ZWNpZmllZCBieSBDb250ZXh0MSBhbmQgQ29udGV4dDIuIENvbnRleHQxIGFuZA0KPiA+IENvbnRl eHQyIGFyZSBvcHRpb25hbCBhbmQNCj4gPiA+ICsgIG1heSBiZSAwLiBUaGUgZnVuY3Rpb24gRW50 cnlQb2ludCBtdXN0IG5ldmVyDQo+ID4gcmV0dXJuLg0KPiA+ID4gKw0KPiA+ID4gKyAgSWYgdGhl IGN1cnJlbnQgZXhlY3V0aW9uIG1vZGUgaXMgbm90IDY0LWJpdCBwYWdlZA0KPiA+IG1vZGUsIHRo ZW4gQVNTRVJUKCkuDQo+ID4gPiArICBJZiBFbnRyeVBvaW50IGlzIDAsIHRoZW4gQVNTRVJUKCku DQo+ID4gPiArICBJZiBOZXdTdGFjayBpcyAwLCB0aGVuIEFTU0VSVCgpLg0KPiA+ID4gKw0KPiA+ ID4gKyAgQHBhcmFtICBDcyAgICAgICAgICBUaGUgMTYtYml0IHNlbGVjdG9yIHRvIGxvYWQNCj4g aW4NCj4gPiB0aGUgQ1MgYmVmb3JlIEVudHJ5UG9pbnQNCj4gPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgaXMgY2FsbGVkLiBUaGUgZGVzY3JpcHRvciBpbg0KPiA+IHRoZSBHRFQgdGhhdCB0aGlz IHNlbGVjdG9yDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZXMgbXVzdCBi ZSBzZXR1cCBmb3INCj4gPiAzMi1iaXQgcHJvdGVjdGVkIG1vZGUuDQo+ID4gPiArICBAcGFyYW0g IEVudHJ5UG9pbnQgIFRoZSA2NC1iaXQgdmlydHVhbCBhZGRyZXNzIG9mDQo+ID4gdGhlIGZ1bmN0 aW9uIHRvIGNhbGwgd2l0aA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICB0aGUgbmV3IHN0 YWNrIGFmdGVyIHBhZ2luZyBpcw0KPiA+IGRpc2FibGVkLg0KPiA+ID4gKyAgQHBhcmFtICBDb250 ZXh0MSAgICBUaGUgNjQtYml0IHZpcnR1YWwgYWRkcmVzcyBvZg0KPiA+IHRoZSBjb250ZXh0IHRv IHBhc3MgaW50bw0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICB0aGUgRW50cnlQb2ludCBm dW5jdGlvbiBhcw0KPiB0aGUNCj4gPiBmaXJzdCBwYXJhbWV0ZXIgYWZ0ZXINCj4gPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgcGFnaW5nIGlzIGRpc2FibGVkLg0KPiA+ID4gKyAgQHBhcmFtICBD b250ZXh0MiAgICBUaGUgNjQtYml0IHZpcnR1YWwgYWRkcmVzcyBvZg0KPiA+IHRoZSBjb250ZXh0 IHRvIHBhc3MgaW50bw0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICB0aGUgRW50cnlQb2lu dCBmdW5jdGlvbiBhcw0KPiB0aGUNCj4gPiBzZWNvbmQgcGFyYW1ldGVyIGFmdGVyDQo+ID4gPiAr ICAgICAgICAgICAgICAgICAgICAgIHBhZ2luZyBpcyBkaXNhYmxlZC4NCj4gPiA+ICsgIEBwYXJh bSAgTmV3U3RhY2sgICAgVGhlIDY0LWJpdCB2aXJ0dWFsIGFkZHJlc3Mgb2YNCj4gPiB0aGUgbmV3 IHN0YWNrIHRvIHVzZSBmb3INCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgdGhlIEVudHJ5 UG9pbnQgZnVuY3Rpb24gYWZ0ZXINCj4gPiBwYWdpbmcgaXMgZGlzYWJsZWQuDQo+ID4gPiArDQo+ ID4gPiArKiovDQo+ID4gPiArdHlwZWRlZg0KPiA+ID4gK1ZPSUQNCj4gPiA+ICsoRUZJQVBJDQo+ ID4gKlVOSVRfVEVTVF9IT1NUX0JBU0VfTElCX0FTTV9ESVNBQkxFX1BBR0lOR182NCkoDQo+ID4g PiArICBJTiAgICAgIFVJTlQxNiAgICAgICAgICAgICAgICAgICAgQ3MsDQo+ID4gPiArICBJTiAg ICAgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgRW50cnlQb2ludCwNCj4gPiA+ICsgIElOICAg ICAgVUlOVDMyICAgICAgICAgICAgICAgICAgICBDb250ZXh0MSwNCj4gPiBPUFRJT05BTA0KPiA+ ID4gKyAgSU4gICAgICBVSU5UMzIgICAgICAgICAgICAgICAgICAgIENvbnRleHQyLA0KPiA+IE9Q VElPTkFMDQo+ID4gPiArICBJTiAgICAgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgTmV3U3Rh Y2sNCj4gPiA+ICsgICk7DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBSZXRyaWV2ZXMg dGhlIHByb3BlcnRpZXMgZm9yIDE2LWJpdCB0aHVuaw0KPiA+IGZ1bmN0aW9ucy4NCj4gPiA+ICsN Cj4gPiA+ICsgIENvbXB1dGVzIHRoZSBzaXplIG9mIHRoZSBidWZmZXIgYW5kIHN0YWNrIGJlbG93 DQo+IDFNQg0KPiA+IHJlcXVpcmVkIHRvIHVzZSB0aGUNCj4gPiA+ICsgIEFzbVByZXBhcmVUaHVu azE2KCksIEFzbVRodW5rMTYoKSBhbmQNCj4gPiBBc21QcmVwYXJlQW5kVGh1bmsxNigpIGZ1bmN0 aW9ucy4gVGhpcw0KPiA+ID4gKyAgYnVmZmVyIHNpemUgaXMgcmV0dXJuZWQgaW4gUmVhbE1vZGVC dWZmZXJTaXplLA0KPiBhbmQNCj4gPiB0aGUgc3RhY2sgc2l6ZSBpcyByZXR1cm5lZA0KPiA+ID4g KyAgaW4gRXh0cmFTdGFja1NpemUuIElmIHBhcmFtZXRlcnMgYXJlIHBhc3NlZCB0bw0KPiB0aGUN Cj4gPiAxNi1iaXQgcmVhbCBtb2RlIGNvZGUsDQo+ID4gPiArICB0aGVuIHRoZSBhY3R1YWwgbWlu aW11bSBzdGFjayBzaXplIGlzDQo+ID4gRXh0cmFTdGFja1NpemUgcGx1cyB0aGUgbWF4aW11bSBu dW1iZXINCj4gPiA+ICsgIG9mIGJ5dGVzIHRoYXQgbmVlZCB0byBiZSBwYXNzZWQgdG8gdGhlIDE2 LWJpdA0KPiByZWFsDQo+ID4gbW9kZSBjb2RlLg0KPiA+ID4gKw0KPiA+ID4gKyAgSWYgUmVhbE1v ZGVCdWZmZXJTaXplIGlzIE5VTEwsIHRoZW4gQVNTRVJUKCkuDQo+ID4gPiArICBJZiBFeHRyYVN0 YWNrU2l6ZSBpcyBOVUxMLCB0aGVuIEFTU0VSVCgpLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFt ICBSZWFsTW9kZUJ1ZmZlclNpemUgIEEgcG9pbnRlciB0byB0aGUgc2l6ZQ0KPiA+IG9mIHRoZSBi dWZmZXIgYmVsb3cgMU1CDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVx dWlyZWQgdG8gdXNlIHRoZQ0KPiAxNi0NCj4gPiBiaXQgdGh1bmsgZnVuY3Rpb25zLg0KPiA+ID4g KyAgQHBhcmFtICBFeHRyYVN0YWNrU2l6ZSAgICAgIEEgcG9pbnRlciB0byB0aGUNCj4gZXh0cmEN Cj4gPiBzaXplIG9mIHN0YWNrIGJlbG93IDFNQg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHRoYXQgdGhlIDE2LWJpdCB0aHVuaw0KPiA+IGZ1bmN0aW9ucyByZXF1aXJlIGZv cg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBvcmFyeSBzdG9yYWdl IGluDQo+ID4gdGhlIHRyYW5zaXRpb24gdG8gYW5kIGZyb20NCj4gPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAxNi1iaXQgcmVhbCBtb2RlLg0KPiA+ID4gKw0KPiA+ID4gKyoqLw0K PiA+ID4gK3R5cGVkZWYNCj4gPiA+ICtWT0lEDQo+ID4gPiArKEVGSUFQSQ0KPiA+ICpVTklUX1RF U1RfSE9TVF9CQVNFX0xJQl9BU01fR0VUX1RIVU5LXzE2X1BST1BFUlRJRVMpKA0KPiA+ID4gKyAg T1VUICAgICBVSU5UMzINCj4gPiAqUmVhbE1vZGVCdWZmZXJTaXplLA0KPiA+ID4gKyAgT1VUICAg ICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICpFeHRyYVN0YWNrU2l6ZQ0KPiA+ID4gKyAgKTsN Cj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIFByb3RvdHlwZSBvZiBzZXJ2aWNlcyB0aGF0 IG9wZXJhdGVzIG9uIGENCj4gPiBUSFVOS19DT05URVhUIHN0cnVjdHVyZS4NCj4gPiA+ICsNCj4g PiA+ICsgIEBwYXJhbSAgVGh1bmtDb250ZXh0ICBBIHBvaW50ZXIgdG8gdGhlIGNvbnRleHQNCj4g PiBzdHJ1Y3R1cmUgdGhhdCBkZXNjcmliZXMgdGhlDQo+ID4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgMTYtYml0IHJlYWwgbW9kZSBjb2RlIHRvDQo+ID4gY2FsbC4NCj4gPiA+ICsNCj4gPiA+ ICsqKi8NCj4gPiA+ICt0eXBlZGVmDQo+ID4gPiArVk9JRA0KPiA+ID4gKyhFRklBUEkgKlVOSVRf VEVTVF9IT1NUX0JBU0VfTElCX0FTTV9USFVOS18xNikoDQo+ID4gPiArICBJTiBPVVQgIFRIVU5L X0NPTlRFWFQgICAgICAgICAgICAgKlRodW5rQ29udGV4dA0KPiA+ID4gKyAgKTsNCj4gPiA+ICsN Cj4gPiA+ICsvKioNCj4gPiA+ICsgIFBhdGNoIHRoZSBpbW1lZGlhdGUgb3BlcmFuZCBvZiBhbiBJ QTMyIG9yIFg2NA0KPiA+IGluc3RydWN0aW9uIHN1Y2ggdGhhdCB0aGUgYnl0ZSwNCj4gPiA+ICsg IHdvcmQsIGR3b3JkIG9yIHF3b3JkIG9wZXJhbmQgaXMgZW5jb2RlZCBhdCB0aGUNCj4gZW5kDQo+ ID4gb2YgdGhlIGluc3RydWN0aW9uJ3MNCj4gPiA+ICsgIGJpbmFyeSByZXByZXNlbnRhdGlvbi4N Cj4gPiA+ICsNCj4gPiA+ICsgIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIHVzZWQgdG8gdXBkYXRl IG9iamVjdA0KPiBjb2RlDQo+ID4gdGhhdCB3YXMgY29tcGlsZWQgd2l0aA0KPiA+ID4gKyAgTkFT TSBmcm9tIGFzc2VtYmx5IHNvdXJjZSBjb2RlLiBFeGFtcGxlOg0KPiA+ID4gKw0KPiA+ID4gKyAg TkFTTSBzb3VyY2UgY29kZToNCj4gPiA+ICsNCj4gPiA+ICsgICAgICAgIG1vdiAgICAgZWF4LCBz dHJpY3QgZHdvcmQgMCA7IHRoZSBpbW0zMg0KPiB6ZXJvDQo+ID4gb3BlcmFuZCB3aWxsIGJlIHBh dGNoZWQNCj4gPiA+ICsgICAgQVNNX1BGWChnUGF0Y2hDcjMpOg0KPiA+ID4gKyAgICAgICAgbW92 ICAgICBjcjMsIGVheA0KPiA+ID4gKw0KPiA+ID4gKyAgQyBzb3VyY2UgY29kZToNCj4gPiA+ICsN Cj4gPiA+ICsgICAgWDg2X0FTU0VNQkxZX1BBVENIX0xBQkVMIGdQYXRjaENyMzsNCj4gPiA+ICsg ICAgUGF0Y2hJbnN0cnVjdGlvblg4NiAoZ1BhdGNoQ3IzLCBBc21SZWFkQ3IzICgpLA0KPiA+IDQp Ow0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtW291dF0gSW5zdHJ1Y3Rpb25FbmQgIFBvaW50ZXIg cmlnaHQgcGFzdA0KPiB0aGUNCj4gPiBpbnN0cnVjdGlvbiB0byBwYXRjaC4gVGhlDQo+ID4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1tZWRpYXRlIG9wZXJhbmQgdG8NCj4gPiBw YXRjaCBpcyBleHBlY3RlZCB0bw0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbXByaXNlIHRoZSB0cmFpbGluZw0KPiA+IGJ5dGVzIG9mIHRoZSBpbnN0cnVjdGlvbi4NCj4g PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiBJbnN0cnVjdGlvbkVuZCBpcw0K PiA+IGNsb3NlciB0byBhZGRyZXNzIDAgdGhhbg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFZhbHVlU2l6ZSBwZXJtaXRzLA0KPiB0aGVuDQo+ID4gQVNTRVJUKCkuDQo+ID4g PiArDQo+ID4gPiArICBAcGFyYW1baW5dIFBhdGNoVmFsdWUgICAgICAgVGhlIGNvbnN0YW50IHRv IHdyaXRlDQo+ID4gdG8gdGhlIGltbWVkaWF0ZSBvcGVyYW5kLg0KPiA+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFRoZSBjYWxsZXIgaXMNCj4gPiByZXNwb25zaWJsZSBmb3IgZW5z dXJpbmcgdGhhdA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhdGNoVmFs dWUgY2FuIGJlDQo+ID4gcmVwcmVzZW50ZWQgaW4gdGhlIGJ5dGUsIHdvcmQsDQo+ID4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZHdvcmQgb3IgcXdvcmQNCj4gb3BlcmFuZA0KPiA+ IChhcyBpbmRpY2F0ZWQgdGhyb3VnaA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFZhbHVlU2l6ZSk7IG90aGVyd2lzZQ0KPiA+IEFTU0VSVCgpLg0KPiA+ID4gKw0KPiA+ID4g KyAgQHBhcmFtW2luXSBWYWx1ZVNpemUgICAgICAgIFRoZSBzaXplIG9mIHRoZQ0KPiBvcGVyYW5k DQo+ID4gaW4gYnl0ZXM7IG11c3QgYmUgMSwgMiwNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA0LCBvciA4LiBBU1NFUlQoKQ0KPiA+IG90aGVyd2lzZS4NCj4gPiA+ICsqKi8N Cj4gPiA+ICt0eXBlZGVmDQo+ID4gPiArVk9JRA0KPiA+ID4gKyhFRklBUEkNCj4gPiAqVU5JVF9U RVNUX0hPU1RfQkFTRV9MSUJfQVNNX1BBVENIX0lOU1RSVUNUSU9OX1g4NikoDQo+ID4gPiArICBP VVQgWDg2X0FTU0VNQkxZX1BBVENIX0xBQkVMICpJbnN0cnVjdGlvbkVuZCwNCj4gPiA+ICsgIElO ICBVSU5UNjQgICAgICAgICAgICAgICAgICAgUGF0Y2hWYWx1ZSwNCj4gPiA+ICsgIElOICBVSU5U TiAgICAgICAgICAgICAgICAgICAgVmFsdWVTaXplDQo+ID4gPiArICApOw0KPiA+ID4gKw0KPiA+ ID4gKy8vLw0KPiA+ID4gKy8vLyBDb21tb24gc2VydmljZXMNCj4gPiA+ICsvLy8NCj4gPiA+ICt0 eXBlZGVmIHN0cnVjdCB7DQo+ID4gPiArICBVTklUX1RFU1RfSE9TVF9CQVNFX0xJQl9WT0lEDQo+ ID4gRW5hYmxlSW50ZXJydXB0czsNCj4gPiA+ICsgIFVOSVRfVEVTVF9IT1NUX0JBU0VfTElCX1ZP SUQNCj4gPiBEaXNhYmxlSW50ZXJydXB0czsNCj4gPiA+ICsgIFVOSVRfVEVTVF9IT1NUX0JBU0Vf TElCX1ZPSUQNCj4gPiBFbmFibGVEaXNhYmxlSW50ZXJydXB0czsNCj4gPiA+ICsgIFVOSVRfVEVT VF9IT1NUX0JBU0VfTElCX1JFQURfQk9PTEVBTg0KPiA+IEdldEludGVycnVwdFN0YXRlOw0KPiA+ ID4gK30gVU5JVF9URVNUX0hPU1RfQkFTRV9MSUJfQ09NTU9OOw0KPiA+ID4gKw0KPiA+ID4gKy8v Lw0KPiA+ID4gKy8vLyBJQTMyL1g2NCBzZXJ2aWNlcw0KPiA+ID4gKy8vLw0KPiA+ID4gK3R5cGVk ZWYgc3RydWN0IHsNCj4gPiA+ICsgIFVOSVRfVEVTVF9IT1NUX0JBU0VfTElCX0FTTV9DUFVJRA0K PiA+IEFzbUNwdWlkOw0KPiA+ID4gKyAgVU5JVF9URVNUX0hPU1RfQkFTRV9MSUJfQVNNX0NQVUlE X0VYDQo+ID4gQXNtQ3B1aWRFeDsNCj4gPiA+ICsgIFVOSVRfVEVTVF9IT1NUX0JBU0VfTElCX1ZP SUQNCj4gPiBBc21EaXNhYmxlQ2FjaGU7DQo+ID4gPiArICBVTklUX1RFU1RfSE9TVF9CQVNFX0xJ Ql9WT0lEDQo+ID4gQXNtRW5hYmxlQ2FjaGU7DQo+ID4gPiArICBVTklUX1RFU1RfSE9TVF9CQVNF X0xJQl9BU01fUkVBRF9NU1JfNjQNCj4gPiBBc21SZWFkTXNyNjQ7DQo+ID4gPiArICBVTklUX1RF U1RfSE9TVF9CQVNFX0xJQl9BU01fV1JJVEVfTVNSXzY0DQo+ID4gQXNtV3JpdGVNc3I2NDsNCj4g PiA+ICsgIFVOSVRfVEVTVF9IT1NUX0JBU0VfTElCX1JFQURfVUlOVE4NCj4gPiBBc21SZWFkQ3Iw Ow0KPiA+ID4gKyAgVU5JVF9URVNUX0hPU1RfQkFTRV9MSUJfUkVBRF9VSU5UTg0KPiA+IEFzbVJl YWRDcjI7DQo+ID4gPiArICBVTklUX1RFU1RfSE9TVF9CQVNFX0xJQl9SRUFEX1VJTlRODQo+ID4g QXNtUmVhZENyMzsNCj4gPiA+ICsgIFVOSVRfVEVTVF9IT1NUX0JBU0VfTElCX1JFQURfVUlOVE4N Cj4gPiBBc21SZWFkQ3I0Ow0KPiA+ID4gKyAgVU5JVF9URVNUX0hPU1RfQkFTRV9MSUJfV1JJVEVf VUlOVE4NCj4gPiBBc21Xcml0ZUNyMDsNCj4gPiA+ICsgIFVOSVRfVEVTVF9IT1NUX0JBU0VfTElC X1dSSVRFX1VJTlRODQo+ID4gQXNtV3JpdGVDcjI7DQo+ID4gPiArICBVTklUX1RFU1RfSE9TVF9C QVNFX0xJQl9XUklURV9VSU5UTg0KPiA+IEFzbVdyaXRlQ3IzOw0KPiA+ID4gKyAgVU5JVF9URVNU X0hPU1RfQkFTRV9MSUJfV1JJVEVfVUlOVE4NCj4gPiBBc21Xcml0ZUNyNDsNCj4gPiA+ICsgIFVO SVRfVEVTVF9IT1NUX0JBU0VfTElCX1JFQURfVUlOVE4NCj4gPiBBc21SZWFkRHIwOw0KPiA+ID4g KyAgVU5JVF9URVNUX0hPU1RfQkFTRV9MSUJfUkVBRF9VSU5UTg0KPiA+IEFzbVJlYWREcjE7DQo+ ID4gPiArICBVTklUX1RFU1RfSE9TVF9CQVNFX0xJQl9SRUFEX1VJTlRODQo+ID4gQXNtUmVhZERy MjsNCj4gPiA+ICsgIFVOSVRfVEVTVF9IT1NUX0JBU0VfTElCX1JFQURfVUlOVE4NCj4gPiBBc21S ZWFkRHIzOw0KPiA+ID4gKyAgVU5JVF9URVNUX0hPU1RfQkFTRV9MSUJfUkVBRF9VSU5UTg0KPiA+ IEFzbVJlYWREcjQ7DQo+ID4gPiArICBVTklUX1RFU1RfSE9TVF9CQVNFX0xJQl9SRUFEX1VJTlRO DQo+ID4gQXNtUmVhZERyNTsNCj4gPiA+ICsgIFVOSVRfVEVTVF9IT1NUX0JBU0VfTElCX1JFQURf VUlOVE4NCj4gPiBBc21SZWFkRHI2Ow0KPiA+ID4gKyAgVU5JVF9URVNUX0hPU1RfQkFTRV9MSUJf UkVBRF9VSU5UTg0KPiA+IEFzbVJlYWREcjc7DQo+ID4gPiArICBVTklUX1RFU1RfSE9TVF9CQVNF X0xJQl9XUklURV9VSU5UTg0KPiA+IEFzbVdyaXRlRHIwOw0KPiA+ID4gKyAgVU5JVF9URVNUX0hP U1RfQkFTRV9MSUJfV1JJVEVfVUlOVE4NCj4gPiBBc21Xcml0ZURyMTsNCj4gPiA+ICsgIFVOSVRf VEVTVF9IT1NUX0JBU0VfTElCX1dSSVRFX1VJTlRODQo+ID4gQXNtV3JpdGVEcjI7DQo+ID4gPiAr ICBVTklUX1RFU1RfSE9TVF9CQVNFX0xJQl9XUklURV9VSU5UTg0KPiA+IEFzbVdyaXRlRHIzOw0K PiA+ID4gKyAgVU5JVF9URVNUX0hPU1RfQkFTRV9MSUJfV1JJVEVfVUlOVE4NCj4gPiBBc21Xcml0 ZURyNDsNCj4gPiA+ICsgIFVOSVRfVEVTVF9IT1NUX0JBU0VfTElCX1dSSVRFX1VJTlRODQo+ID4g QXNtV3JpdGVEcjU7DQo+ID4gPiArICBVTklUX1RFU1RfSE9TVF9CQVNFX0xJQl9XUklURV9VSU5U Tg0KPiA+IEFzbVdyaXRlRHI2Ow0KPiA+ID4gKyAgVU5JVF9URVNUX0hPU1RfQkFTRV9MSUJfV1JJ VEVfVUlOVE4NCj4gPiBBc21Xcml0ZURyNzsNCj4gPiA+ICsgIFVOSVRfVEVTVF9IT1NUX0JBU0Vf TElCX1JFQURfVUlOVDE2DQo+ID4gQXNtUmVhZENzOw0KPiA+ID4gKyAgVU5JVF9URVNUX0hPU1Rf QkFTRV9MSUJfUkVBRF9VSU5UMTYNCj4gPiBBc21SZWFkRHM7DQo+ID4gPiArICBVTklUX1RFU1Rf SE9TVF9CQVNFX0xJQl9SRUFEX1VJTlQxNg0KPiA+IEFzbVJlYWRFczsNCj4gPiA+ICsgIFVOSVRf VEVTVF9IT1NUX0JBU0VfTElCX1JFQURfVUlOVDE2DQo+ID4gQXNtUmVhZEZzOw0KPiA+ID4gKyAg VU5JVF9URVNUX0hPU1RfQkFTRV9MSUJfUkVBRF9VSU5UMTYNCj4gPiBBc21SZWFkR3M7DQo+ID4g PiArICBVTklUX1RFU1RfSE9TVF9CQVNFX0xJQl9SRUFEX1VJTlQxNg0KPiA+IEFzbVJlYWRTczsN Cj4gPiA+ICsgIFVOSVRfVEVTVF9IT1NUX0JBU0VfTElCX1JFQURfVUlOVDE2DQo+ID4gQXNtUmVh ZFRyOw0KPiA+ID4gKyAgVU5JVF9URVNUX0hPU1RfQkFTRV9MSUJfQVNNX1JFQURfSUEzMl9ERVND UklQVE9SDQo+ID4gQXNtUmVhZEdkdHI7DQo+ID4gPiArICBVTklUX1RFU1RfSE9TVF9CQVNFX0xJ Ql9BU01fV1JJVEVfSUEzMl9ERVNDUklQVE9SDQo+ID4gQXNtV3JpdGVHZHRyOw0KPiA+ID4gKyAg VU5JVF9URVNUX0hPU1RfQkFTRV9MSUJfQVNNX1JFQURfSUEzMl9ERVNDUklQVE9SDQo+ID4gQXNt UmVhZElkdHI7DQo+ID4gPiArICBVTklUX1RFU1RfSE9TVF9CQVNFX0xJQl9BU01fV1JJVEVfSUEz Ml9ERVNDUklQVE9SDQo+ID4gQXNtV3JpdGVJZHRyOw0KPiA+ID4gKyAgVU5JVF9URVNUX0hPU1Rf QkFTRV9MSUJfUkVBRF9VSU5UMTYNCj4gPiBBc21SZWFkTGR0cjsNCj4gPiA+ICsgIFVOSVRfVEVT VF9IT1NUX0JBU0VfTElCX1dSSVRFX1VJTlQxNg0KPiA+IEFzbVdyaXRlTGR0cjsNCj4gPiA+ICsg IFVOSVRfVEVTVF9IT1NUX0JBU0VfTElCX0FTTV9SRUFEX1BNQw0KPiA+IEFzbVJlYWRQbWM7DQo+ ID4gPiArICBVTklUX1RFU1RfSE9TVF9CQVNFX0xJQl9BU01fTU9OSVRPUg0KPiA+IEFzbU1vbml0 b3I7DQo+ID4gPiArICBVTklUX1RFU1RfSE9TVF9CQVNFX0xJQl9BU01fTVdBSVQNCj4gPiBBc21N d2FpdDsNCj4gPiA+ICsgIFVOSVRfVEVTVF9IT1NUX0JBU0VfTElCX1ZPSUQNCj4gPiBBc21XYmlu dmQ7DQo+ID4gPiArICBVTklUX1RFU1RfSE9TVF9CQVNFX0xJQl9WT0lEDQo+ID4gQXNtSW52ZDsN Cj4gPiA+ICsgIFVOSVRfVEVTVF9IT1NUX0JBU0VfTElCX0FTTV9GTFVTSF9DQUNIRV9MSU5FDQo+ ID4gQXNtRmx1c2hDYWNoZUxpbmU7DQo+ID4gPiArICBVTklUX1RFU1RfSE9TVF9CQVNFX0xJQl9B U01fUEFHSU5HXzMyDQo+ID4gQXNtRW5hYmxlUGFnaW5nMzI7DQo+ID4gPiArICBVTklUX1RFU1Rf SE9TVF9CQVNFX0xJQl9BU01fUEFHSU5HXzMyDQo+ID4gQXNtRGlzYWJsZVBhZ2luZzMyOw0KPiA+ ID4gKyAgVU5JVF9URVNUX0hPU1RfQkFTRV9MSUJfQVNNX0VOQUJMRV9QQUdJTkdfNjQNCj4gPiBB c21FbmFibGVQYWdpbmc2NDsNCj4gPiA+ICsgIFVOSVRfVEVTVF9IT1NUX0JBU0VfTElCX0FTTV9E SVNBQkxFX1BBR0lOR182NA0KPiA+IEFzbURpc2FibGVQYWdpbmc2NDsNCj4gPiA+ICsNCj4gVU5J VF9URVNUX0hPU1RfQkFTRV9MSUJfQVNNX0dFVF9USFVOS18xNl9QUk9QRVJUSUVTDQo+ID4gQXNt R2V0VGh1bmsxNlByb3BlcnRpZXM7DQo+ID4gPiArICBVTklUX1RFU1RfSE9TVF9CQVNFX0xJQl9B U01fVEhVTktfMTYNCj4gPiBBc21QcmVwYXJlVGh1bmsxNjsNCj4gPiA+ICsgIFVOSVRfVEVTVF9I T1NUX0JBU0VfTElCX0FTTV9USFVOS18xNg0KPiA+IEFzbVRodW5rMTY7DQo+ID4gPiArICBVTklU X1RFU1RfSE9TVF9CQVNFX0xJQl9BU01fVEhVTktfMTYNCj4gPiBBc21QcmVwYXJlQW5kVGh1bmsx NjsNCj4gPiA+ICsgIFVOSVRfVEVTVF9IT1NUX0JBU0VfTElCX1dSSVRFX1VJTlQxNg0KPiA+IEFz bVdyaXRlVHI7DQo+ID4gPiArICBVTklUX1RFU1RfSE9TVF9CQVNFX0xJQl9WT0lEDQo+ID4gQXNt TGZlbmNlOw0KPiA+ID4gKyAgVU5JVF9URVNUX0hPU1RfQkFTRV9MSUJfQVNNX1BBVENIX0lOU1RS VUNUSU9OX1g4Ng0KPiA+IFBhdGNoSW5zdHJ1Y3Rpb25YODY7DQo+ID4gPiArfSBVTklUX1RFU1Rf SE9TVF9CQVNFX0xJQl9YODY7DQo+ID4gPiArDQo+ID4gPiArLy8vDQo+ID4gPiArLy8vIERhdGEg c3RydWN0dXJlIHRoYXQgY29udGFpbnMgcG9pbnRlcnMNCj4gc3RydWN0dXJlcw0KPiA+IG9mIGNv bW1vbiBzZXJ2aWNlcyBhbmQgQ1BVDQo+ID4gPiArLy8vIGFyY2hpdGN0dWlyZSBzcGVjaWZpYyBz ZXJ2aWNlcy4gIFN1cHBvcnQgZm9yDQo+ID4gYWRkaXRpb25hbCBDUFUgYXJjaGl0ZWN0dXJlcw0K PiA+ID4gKy8vLyBjYW4gYmUgYWRkZWQgdG8gdGhlIGVuZCBvZiB0aGlzIHN0cnVjdHVyZS4NCj4g PiA+ICsvLy8NCj4gPiA+ICt0eXBlZGVmIHN0cnVjdCB7DQo+ID4gPiArICBVTklUX1RFU1RfSE9T VF9CQVNFX0xJQl9DT01NT04gICpDb21tb247DQo+ID4gPiArICBVTklUX1RFU1RfSE9TVF9CQVNF X0xJQl9YODYgICAgICpYODY7DQo+ID4gPiArfSBVTklUX1RFU1RfSE9TVF9CQVNFX0xJQjsNCj4g PiA+ICsNCj4gPiA+ICtleHRlcm4gVU5JVF9URVNUX0hPU1RfQkFTRV9MSUINCj4gZ1VuaXRUZXN0 SG9zdEJhc2VMaWI7DQo+ID4gPiArDQo+ID4gPiArI2VuZGlmDQo+ID4gPiAtLQ0KPiA+ID4gMi4y MS4wLndpbmRvd3MuMQ0KDQo=