From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by mx.groups.io with SMTP id smtpd.web10.14592.1594398287076631980 for ; Fri, 10 Jul 2020 09:24:47 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=BDG3/9oK; spf=pass (domain: intel.com, ip: 134.134.136.126, mailfrom: michael.d.kinney@intel.com) IronPort-SDR: vCAq8qlYEu314TIBDVmmfNZbK8MJ+QgxHI/cZ+tfghWet34A7fmxRmnIwwQ6BiveiaGFmU0UXa +WNAi4/QXzkQ== X-IronPort-AV: E=McAfee;i="6000,8403,9678"; a="135705085" X-IronPort-AV: E=Sophos;i="5.75,336,1589266800"; d="scan'208";a="135705085" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga005.jf.intel.com ([10.7.209.41]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 10 Jul 2020 09:24:46 -0700 IronPort-SDR: h71jXJgMQ+Ljf9hb0nCX0Nn6wCHJtZES+xMq71yOk5Cou9WZMdsehuPR+7M+S/QxAlnhHwpb5V Q3mFlid7MChw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.75,336,1589266800"; d="scan'208";a="458327891" Received: from orsmsx108.amr.corp.intel.com ([10.22.240.6]) by orsmga005.jf.intel.com with ESMTP; 10 Jul 2020 09:24:46 -0700 Received: from orsmsx609.amr.corp.intel.com (10.22.229.22) by ORSMSX108.amr.corp.intel.com (10.22.240.6) with Microsoft SMTP Server (TLS) id 14.3.439.0; Fri, 10 Jul 2020 09:24:45 -0700 Received: from orsmsx609.amr.corp.intel.com (10.22.229.22) by ORSMSX609.amr.corp.intel.com (10.22.229.22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Fri, 10 Jul 2020 09:24:45 -0700 Received: from ORSEDG002.ED.cps.intel.com (10.7.248.5) by orsmsx609.amr.corp.intel.com (10.22.229.22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id 15.1.1713.5 via Frontend Transport; Fri, 10 Jul 2020 09:24:45 -0700 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (104.47.66.40) by edgegateway.intel.com (134.134.137.101) with Microsoft SMTP Server (TLS) id 14.3.439.0; Fri, 10 Jul 2020 09:24:44 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=RKgd9Xpebh0pioM455/ASzsSFBetVKNoEDsFCTw/8e9gLpznwgF5xTc3VcKODLRoGdblE33mxLZjnQ9lGv44g1ghhDF0hkCF0NLdpK5wLtmtRlK+La55Sq+e2cmxLsXOQJIizUShasGn/7mbhgGstWkwrfTkY5C8F3Dxrc7D9l5R2hQ/CbKuF9ksuRBES9FbrvlrDeOc7MuUTgwlGusd/7yMt7VjRTnFJtXHMMaFUyy+PAh01sdlIZBWTQGrAkxN6N53m0IF/rJUhcz+defRXDlR1YLILy8XVRu9nMyzEOrCc+k1dO8W8LCj9NuRmWZsHl5bJVD8COThFbqW+L5bZA== 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=ByIQyqBc30nqV1IdZ4WBUhuwnoarObHJ+kzo1lIG89E=; b=TE1EUvEiS+QY5z64uiZLPkOFXhRnNO2CUMtNSsWEhJlxlpcFE8SYGLiKRxx+0/y9hOmup2qk0JG1blzMAx3hycZCXitTIqOtGRNo4Ex0/E4PETGiQ/+KZWDaSzeEnp5fXNQTq7vGM+a1LcAw+8IgD/MIUzmk1g3d+JXipUMNNbFVBco5w3gNvjISl6HjZHjoJZd9Q3pX/PcmAN6SeOJbV8LvulyTbNEYqkqR1AM1jO0XwKONHxZscCBjfgXjNBzJ9B8JTNIa0shWFmQAE1Fa4JzKsFuVnlzKEbvSzQnHgmhoP0OMdbUUqioqR0Ckv/hxC3IAmOzXr8i3b/kAcjSJAQ== 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=ByIQyqBc30nqV1IdZ4WBUhuwnoarObHJ+kzo1lIG89E=; b=BDG3/9oK4i9J1hpyRoX0V+/xPOcKFaXH+MJcbOcEt4gMHZRABlVMGtFewNB+c4R3kJD7i9WX8sPY6PLQEYqW1wlB8+9HHcmO+0IvNGatZAxY2q4oaUDudreVW/6EqMISxV+/3hv8bjPZtH05NlpYXdeVk/fTSFK6Th4IC77cfCY= Received: from MN2PR11MB4461.namprd11.prod.outlook.com (2603:10b6:208:192::29) by BL0PR11MB3236.namprd11.prod.outlook.com (2603:10b6:208:60::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3153.21; Fri, 10 Jul 2020 16:24:41 +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:24:41 +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 04/15] MdePkg/BaseLib: Break out IA32/X64 GCC inline privileged functions Thread-Topic: [Patch 04/15] MdePkg/BaseLib: Break out IA32/X64 GCC inline privileged functions Thread-Index: AQHWVfpBNl15Vdg6BUGxXYk4b5hLu6j/djWQgAD/vICAAIqpgA== Date: Fri, 10 Jul 2020 16:24:40 +0000 Message-ID: References: <20200615001918.22164-1-michael.d.kinney@intel.com> <20200615001918.22164-5-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: 0d7cc5d3-e804-4e6d-feb7-08d824edbfbb x-ms-traffictypediagnostic: BL0PR11MB3236: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:8882; x-forefront-prvs: 046060344D x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: X9yCe+/K6viN/ufQxzqBb0S7f2vCXRUFiyXIs11SD9U2eYxy/YEwyRBcn9gDq3uB3WwAcWk7zsvnp5Vjj8w13hMvMKguujDBHwJXrzuCoebGcQOEKlblp5CW7k/vpz35SVozA3fsUikXPPea82jz7EI/E4eGllmuDdPWSASIzk2txQ0zZtDd2tVT0xE/0sKVfyv6xyu7X7dhXPxmLLLqQQifGUervldDGOGPF812go1DXcvs9ZJRAy1Asgj+tUpsUhCgSfkVemAhFPeAA6EYJT9IQ4ZLkQlBcqOMID9wZ/hhHWnBaIB77kUYyBxCK7xtt9ElZU+0xe3AelxbH1nJv8xXMRQzRbLPcIJKK8Of7SAPaieVWyBs3aQkU/eICMbyo3rDe9/mxfzjHtPF4syvJetOBfh9ZAfkiTAin5uMiZ1TLIio/nUZW4fpNaeSV1vf 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)(136003)(346002)(396003)(366004)(39860400002)(186003)(2906002)(5660300002)(52536014)(55016002)(54906003)(71200400001)(9686003)(8676002)(64756008)(966005)(66556008)(66446008)(53546011)(33656002)(66476007)(83380400001)(30864003)(26005)(8936002)(4326008)(6506007)(316002)(76116006)(86362001)(45080400002)(110136005)(478600001)(7696005)(107886003)(19627235002)(66946007)(569008);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: C2DwYJ8He3tlTaocYbQXRL6CeY/VgTHyS7uyWMGIpPWFNJ4lN96v07xrlCLkOTFU97NKVPxo2PcYzJLjOb+FcPtmeDHPTVuOcqRc6EEonO/RNYp70NpwdJ+OL4Sc3UDqjRensg6jRSoHenDctzr1d0cQmg3Ul3Xyg7xDM4DJGuoQ9mhyzbV0vsKfF07KvCtm4uwQJjl0ua1VSswBhQ/e0pl87dS/xrITnXbdFzhtOZoOzqBkd6aLLC7AqYoimD44DEX1l1itQ1ZcBr1nOM3ZLJccNL3OMPT6XrWGe2x3EKuVTX6rbg4F4+fJYnNiMYsa28DHH76MK/t9PJNE1rZoCcjGXRkuPjMjzcDnH3Ov3u/RLoaJtiKpRBxh6cIfItxXmn+QuxZTu6vi0gHRTTU5TrH1H+Sv0Lb+2w97qBt+LxjGRuQVlbwq+/J2dRrgVza5cPKbTekrit4QYs1MKDH6FguU1CxzwrL3GGOf0uCvr1BOGlwN52SCXt5madkopzqY 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: 0d7cc5d3-e804-4e6d-feb7-08d824edbfbb X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Jul 2020 16:24:40.5798 (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: xud89LOzOCtYjE776RqRtGOkEJ7G86E0H5f0tOZ6ACmPxWTzB3ohU0zpGyFiIP67mOtaEBzWl/KZP4gSvvh0IMdESNm8V0DKQ0UezECrnto= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL0PR11MB3236 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 TGltaW5nLA0KDQpHY2NJbmxpbmUuYyBjYW4gYmUgdXNlZCBpbiBVbml0VGVzdEhvc3RCYXNlTGli IGluc3RhbmNlLg0KR2NjSW5saW5lUHJpdi5jIGlzIHRoZSBmaWxlIHRoYXQgY2Fubm90IGJlIHVz ZWQgaW4gdGhlLg0KVW5pdFRlc3RIb3N0QmFzZUxpYiBpbnN0YW5jZS4gIA0KDQpIZXJlIGFyZSB0 aGUgZ3JlcCByZXN1bHRzIGluIHRoZSBicmFuY2g6DQoNCiAgYmFzZWxpYi5pbmY6ICBJYTMyL0dj Y0lubGluZS5jIHwgR0NDDQogIGJhc2VsaWIuaW5mOiAgSWEzMi9HY2NJbmxpbmVQcml2LmMgfCBH Q0MNCiAgYmFzZWxpYi5pbmY6ICBYNjQvR2NjSW5saW5lLmMgfCBHQ0MNCiAgYmFzZWxpYi5pbmY6 ICBYNjQvR2NjSW5saW5lUHJpdi5jIHwgR0NDDQogIHVuaXR0ZXN0aG9zdGJhc2VsaWIuaW5mOiAg SWEzMi9HY2NJbmxpbmUuYyB8IEdDQw0KICB1bml0dGVzdGhvc3RiYXNlbGliLmluZjogIFg2NC9H Y2NJbmxpbmUuYyB8IEdDQw0KDQpCZXN0IHJlZ2FyZHMsDQoNCk1pa2UNCg0KPiAtLS0tLU9yaWdp bmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBHYW8sIExpbWluZyA8bGltaW5nLmdhb0BpbnRlbC5j b20+DQo+IFNlbnQ6IEZyaWRheSwgSnVseSAxMCwgMjAyMCAxOjA2IEFNDQo+IFRvOiBLaW5uZXks IE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+Ow0KPiBkZXZlbEBlZGsyLmdy b3Vwcy5pbw0KPiBDYzogU2VhbiBCcm9nYW4gPHNlYW4uYnJvZ2FuQG1pY3Jvc29mdC5jb20+OyBC cmV0DQo+IEJhcmtlbGV3IDxCcmV0LkJhcmtlbGV3QG1pY3Jvc29mdC5jb20+OyBZYW8sIEppZXdl bg0KPiA8amlld2VuLnlhb0BpbnRlbC5jb20+DQo+IFN1YmplY3Q6IFJFOiBbUGF0Y2ggMDQvMTVd IE1kZVBrZy9CYXNlTGliOiBCcmVhayBvdXQNCj4gSUEzMi9YNjQgR0NDIGlubGluZSBwcml2aWxl Z2VkIGZ1bmN0aW9ucw0KPiANCj4gTWlrZToNCj4gICBTbywgR2NjSW5saW5lLmMgZmlsZSBjYW4n dCBiZSB1c2VkIGluIHRoZSB1bml0IHRlc3QNCj4gQmFzZUxpYi4NCj4gDQo+IFRoYW5rcw0KPiBM aW1pbmcNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogS2lubmV5LCBNaWNo YWVsIEQgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPg0KPiBTZW50OiAyMDIw5bm0N+aciDEw 5pelIDE6MDENCj4gVG86IEdhbywgTGltaW5nIDxsaW1pbmcuZ2FvQGludGVsLmNvbT47DQo+IGRl dmVsQGVkazIuZ3JvdXBzLmlvOyBLaW5uZXksIE1pY2hhZWwgRA0KPiA8bWljaGFlbC5kLmtpbm5l eUBpbnRlbC5jb20+DQo+IENjOiBTZWFuIEJyb2dhbiA8c2Vhbi5icm9nYW5AbWljcm9zb2Z0LmNv bT47IEJyZXQNCj4gQmFya2VsZXcgPEJyZXQuQmFya2VsZXdAbWljcm9zb2Z0LmNvbT47IFlhbywg Smlld2VuDQo+IDxqaWV3ZW4ueWFvQGludGVsLmNvbT4NCj4gU3ViamVjdDogUkU6IFtQYXRjaCAw NC8xNV0gTWRlUGtnL0Jhc2VMaWI6IEJyZWFrIG91dA0KPiBJQTMyL1g2NCBHQ0MgaW5saW5lIHBy aXZpbGVnZWQgZnVuY3Rpb25zDQo+IA0KPiBMaW1pbmcsDQo+IA0KPiBJbiBvcmRlciB0byBzdXBw b3J0IGhvc3QgYmFzZWQgdW5pdCB0ZXN0cywgYWxsIHRoZSBjb2RlDQo+IGhhcyB0byBiZSBjb21w YXRpYmxlIHdpdGggYSB1c2VyIG1vZGUgcHJvY2Vzcy4gIFRoaXMNCj4gbWVhbnMNCj4gYW55IGZ1 bmN0aW9ucyB0aGF0IGV4ZWN1dGUgaW5zdHJ1Y3Rpb25zIHRoYXQgYXJlIG5vdA0KPiBhbGxvd2Vk DQo+IGluIGEgdXNlciBtb2RlIHByb2Nlc3MgbmVlZCB0byBiZSBzZXBhcmF0ZWQgb3V0Lg0KPiAN Cj4gRm9yIHRoZSBJQTMyL1g2NCBzcGVjaWZpYyBHY2NJbmxpbmUuYyBmaWxlcywgdGhlDQo+IGFu YWx5c2lzDQo+IHdhcyBkb25lIGZvciBBUElzIHRoYXQgdXNlIGluc3RydWN0aW9ucyB0aGF0IHdv dWxkDQo+IGdlbmVyYXRlIGFuIGV4Y2VwdGlvbiBpbiBhIHVzZXIgbW9kZSBwcm9jZXNzLg0KPiAN Cj4gSW4gYWRkaXRpb24sIHRoZSBCYXNlTGliIGZ1bmN0aW9ucyB0aGF0IHJldHVybiBzeXN0ZW0N Cj4gc3RhdGUgKGUuZy4gQ1MvRFMvRVMvU1MvRlMvR1MpIGFyZSBhbHNvIHNwbGl0IG91dC4gIEl0 DQo+IGRvZXMgbm90IG1ha2Ugc2Vuc2UgdG8gcmV0dXJuIHN5c3RlbSBzdGF0ZSBpbmZvcm1hdGlv bg0KPiBmcm9tIHRoZSBjdXJyZW50bHkgZXhlY3V0aW5nIHVzZXIgbW9kZSBwcm9jZXNzLg0KPiBJ bnN0ZWFkLA0KPiB0aGUgRlcgY29kZSB1bmRlciB0ZXN0IHdvdWxkIGV4cGVjdCBzeXN0ZW0gc3Rh dGUgdGhhdA0KPiBtYXRjaGVzIGEgRlcgZXhlY3V0aW9uIGVudmlyb25tZW50LiAgRWFjaCB1bml0 IHRlc3QNCj4gaW1wbGVtZW50YXRpb24gaGFzIHRoZSBvcHRpb24gb2YgcHJvdmlkaW5nIGVtdWxh dGlvbg0KPiBvZiB0aGlzIHN5c3RlbSBzdGF0ZSBpZiB0aGF0IGlzIHJlcXVpcmVkIHRvIGV4ZXJj aXNlIHRoZQ0KPiBjb2RlIHVuZGVyIHRlc3QuDQo+IA0KPiBObyBjaGFuZ2VzIHRvIHRoZSBNU0ZU IHNwZWNpZmljIEJhc2VMaWIgaW1wbGVtZW50YXRpb24NCj4gd2VyZSByZXF1aXJlZCBiZWNhdXNl IHRoZXJlIHRob3NlIGFyZSBhbHJlYWR5IHNwbGl0IG91dA0KPiB0byBvbmUgZnVuY3Rpb24gcGVy IGZpbGUuDQo+IA0KPiBCZXN0IHJlZ2FyZHMsDQo+IA0KPiBNaWtlDQo+IA0KPiA+IC0tLS0tT3Jp Z2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gRnJvbTogR2FvLCBMaW1pbmcgPGxpbWluZy5nYW9AaW50 ZWwuY29tPg0KPiA+IFNlbnQ6IFRodXJzZGF5LCBKdWx5IDksIDIwMjAgNzowNyBBTQ0KPiA+IFRv OiBLaW5uZXksIE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+Ow0KPiA+IGRl dmVsQGVkazIuZ3JvdXBzLmlvDQo+ID4gQ2M6IFNlYW4gQnJvZ2FuIDxzZWFuLmJyb2dhbkBtaWNy b3NvZnQuY29tPjsgQnJldA0KPiA+IEJhcmtlbGV3IDxCcmV0LkJhcmtlbGV3QG1pY3Jvc29mdC5j b20+OyBZYW8sIEppZXdlbg0KPiA+IDxqaWV3ZW4ueWFvQGludGVsLmNvbT4NCj4gPiBTdWJqZWN0 OiBSRTogW1BhdGNoIDA0LzE1XSBNZGVQa2cvQmFzZUxpYjogQnJlYWsgb3V0DQo+ID4gSUEzMi9Y NjQgR0NDIGlubGluZSBwcml2aWxlZ2VkIGZ1bmN0aW9ucw0KPiA+DQo+ID4gTWlrZToNCj4gPiAg IElzIHRoZXJlIHRoZSBydWxlIHRvIGtub3cgd2hpY2ggZnVuY3Rpb24gY2FuJ3QgYmUgaW4NCj4g PiB1bml0IHRlc3Q/IEFuZCwgdGhvc2UgZnVuY3Rpb25zIHdpbGwgYmUgaW4gR2NjSW5saW5lLmMN Cj4gPiBvciBHY2NJbmxpbmVQcml2LmM/IFRoZXJlIGlzIG5vIGNoYW5nZSBpbiBNU0ZUIEMNCj4g c291cmNlDQo+ID4gZmlsZSwgYmVjYXVzZSBNU0ZUIEMgc291cmNlIGZpbGUgaGFzIGJlZW4gc2Vw YXJhdGVkIGFzDQo+ID4gdGhlIGZ1bmN0aW9uIGxldmVsLiBSaWdodD8NCj4gPg0KPiA+IFRoYW5r cw0KPiA+IExpbWluZw0KPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+IEZy b206IEtpbm5leSwgTWljaGFlbCBEIDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4NCj4gPiA+ IFNlbnQ6IE1vbmRheSwgSnVuZSAxNSwgMjAyMCA4OjE5IEFNDQo+ID4gPiBUbzogZGV2ZWxAZWRr Mi5ncm91cHMuaW8NCj4gPiA+IENjOiBHYW8sIExpbWluZyA8bGltaW5nLmdhb0BpbnRlbC5jb20+ OyBTZWFuIEJyb2dhbg0KPiA+IDxzZWFuLmJyb2dhbkBtaWNyb3NvZnQuY29tPjsgQnJldCBCYXJr ZWxldw0KPiA+IDxCcmV0LkJhcmtlbGV3QG1pY3Jvc29mdC5jb20+Ow0KPiA+ID4gWWFvLCBKaWV3 ZW4gPGppZXdlbi55YW9AaW50ZWwuY29tPg0KPiA+ID4gU3ViamVjdDogW1BhdGNoIDA0LzE1XSBN ZGVQa2cvQmFzZUxpYjogQnJlYWsgb3V0DQo+ID4gSUEzMi9YNjQgR0NDIGlubGluZSBwcml2aWxl Z2VkIGZ1bmN0aW9ucw0KPiA+ID4NCj4gPiA+IGh0dHBzOi8vYnVnemlsbGEudGlhbm9jb3JlLm9y Zy9zaG93X2J1Zy5jZ2k/aWQ9MjgwMA0KPiA+ID4NCj4gPiA+IEJyZWFrIG91dCB0aGUgSUEzMi9Y NjQgR0NDIGlubGluZSBmdW5jdGlvbnMgdGhhdCBjYW4NCj4gPiBub3QgYmUgdXNlZA0KPiA+ID4g aW4gYSB1bml0IHRlc3QgaG9zdCBhcHBsaWNhdGlvbiBpbnRvIHRoZWlyIG93bg0KPiBzb3VyY2UN Cj4gPiBmaWxlLiAgVGhpcw0KPiA+ID4gZG9lcyBub3QgbWFrZSBhbnkgY2hhbmdlcyB0byB0aGUg QmFzZUxpYiBsaWJyYXJ5DQo+ID4gaW5zdGFuY2UuICBUaGlzDQo+ID4gPiBpcyBpbiBwcmVwYXJh dGlvbiBmb3IgYSBuZXcgQmFzZUxpYiBpbnN0YW5jZXMgdGhhdA0KPiBpcw0KPiA+IHNhZmUgdG8g dXNlDQo+ID4gPiB3aXRoIGhvc3QtYmFzZWQgdW5pdCB0ZXN0IGFwcGxpY2F0aW9ucy4NCj4gPiA+ DQo+ID4gPiBDYzogTGltaW5nIEdhbyA8bGltaW5nLmdhb0BpbnRlbC5jb20+DQo+ID4gPiBDYzog U2VhbiBCcm9nYW4gPHNlYW4uYnJvZ2FuQG1pY3Jvc29mdC5jb20+DQo+ID4gPiBDYzogQnJldCBC YXJrZWxldyA8QnJldC5CYXJrZWxld0BtaWNyb3NvZnQuY29tPg0KPiA+ID4gQ2M6IEppZXdlbiBZ YW8gPGppZXdlbi55YW9AaW50ZWwuY29tPg0KPiA+ID4gU2lnbmVkLW9mZi1ieTogTWljaGFlbCBE IEtpbm5leQ0KPiA+IDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4NCj4gPiA+IC0tLQ0KPiA+ ID4gIE1kZVBrZy9MaWJyYXJ5L0Jhc2VMaWIvQmFzZUxpYi5pbmYgICAgICAgICAgICB8DQo+IDQN Cj4gPiArLQ0KPiA+ID4gIE1kZVBrZy9MaWJyYXJ5L0Jhc2VMaWIvSWEzMi9HY2NJbmxpbmUuYyAg ICAgICB8DQo+IDExODENCj4gPiArLS0tLS0tLS0tLS0tLS0tDQo+ID4gPiAgLi4uL0lhMzIve0dj Y0lubGluZS5jID0+IEdjY0lubGluZVByaXYuY30gICAgIHwNCj4gNjAxDQo+ID4gKy0tLS0tLS0N Cj4gPiA+ICBNZGVQa2cvTGlicmFyeS9CYXNlTGliL1g2NC9HY2NJbmxpbmUuYyAgICAgICAgfA0K PiAxMjQwDQo+ID4gKy0tLS0tLS0tLS0tLS0tLS0NCj4gPiA+ICAuLi4vWDY0L3tHY2NJbmxpbmUu YyA9PiBHY2NJbmxpbmVQcml2LmN9ICAgICAgfA0KPiA1NzINCj4gPiArLS0tLS0tLQ0KPiA+ID4g IDUgZmlsZXMgY2hhbmdlZCwgMTEgaW5zZXJ0aW9ucygrKSwgMzU4NyBkZWxldGlvbnMoLQ0KPiAp DQo+ID4gPiAgY29weSBNZGVQa2cvTGlicmFyeS9CYXNlTGliL0lhMzIve0djY0lubGluZS5jID0+ DQo+ID4gR2NjSW5saW5lUHJpdi5jfSAoNjIlKQ0KPiA+ID4gIGNvcHkgTWRlUGtnL0xpYnJhcnkv QmFzZUxpYi9YNjQve0djY0lubGluZS5jID0+DQo+ID4gR2NjSW5saW5lUHJpdi5jfSAoNjUlKQ0K PiA+ID4NCj4gPiA+IGRpZmYgLS1naXQgYS9NZGVQa2cvTGlicmFyeS9CYXNlTGliL0Jhc2VMaWIu aW5mDQo+ID4gYi9NZGVQa2cvTGlicmFyeS9CYXNlTGliL0Jhc2VMaWIuaW5mDQo+ID4gPiBpbmRl eCBhNTdhZTJkYTMxLi5jNzQwYTgxOWNhIDEwMDY0NA0KPiA+ID4gLS0tIGEvTWRlUGtnL0xpYnJh cnkvQmFzZUxpYi9CYXNlTGliLmluZg0KPiA+ID4gKysrIGIvTWRlUGtnL0xpYnJhcnkvQmFzZUxp Yi9CYXNlTGliLmluZg0KPiA+ID4gQEAgLTEsNyArMSw3IEBADQo+ID4gPiAgIyMgQGZpbGUNCj4g PiA+ICAjICBCYXNlIExpYnJhcnkgaW1wbGVtZW50YXRpb24uDQo+ID4gPiAgIw0KPiA+ID4gLSMg IENvcHlyaWdodCAoYykgMjAwNyAtIDIwMTksIEludGVsIENvcnBvcmF0aW9uLg0KPiBBbGwNCj4g PiByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ID4gKyMgIENvcHlyaWdodCAoYykgMjAwNyAtIDIw MjAsIEludGVsIENvcnBvcmF0aW9uLg0KPiBBbGwNCj4gPiByaWdodHMgcmVzZXJ2ZWQuPEJSPg0K PiA+ID4gICMgIFBvcnRpb25zIGNvcHlyaWdodCAoYykgMjAwOCAtIDIwMDksIEFwcGxlIEluYy4N Cj4gQWxsDQo+ID4gcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiA+ICAjICBQb3J0aW9ucyBjb3B5 cmlnaHQgKGMpIDIwMTEgLSAyMDEzLCBBUk0gTHRkLiBBbGwNCj4gPiByaWdodHMgcmVzZXJ2ZWQu PEJSPg0KPiA+ID4gICMgIENvcHlyaWdodCAoYykgMjAyMCwgSGV3bGV0dCBQYWNrYXJkIEVudGVy cHJpc2UNCj4gPiBEZXZlbG9wbWVudCBMUC4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4g PiBAQCAtMTU2LDYgKzE1Niw3IEBAIFtTb3VyY2VzLklhMzJdDQo+ID4gPg0KPiA+ID4NCj4gPiA+ ICAgIElhMzIvR2NjSW5saW5lLmMgfCBHQ0MNCj4gPiA+ICsgIElhMzIvR2NjSW5saW5lUHJpdi5j IHwgR0NDDQo+ID4gPiAgICBJYTMyL1RodW5rMTYubmFzbQ0KPiA+ID4gICAgSWEzMi9FbmFibGVE aXNhYmxlSW50ZXJydXB0cy5uYXNtfCBHQ0MNCj4gPiA+ICAgIElhMzIvRW5hYmxlUGFnaW5nNjQu bmFzbQ0KPiA+ID4gQEAgLTMxMCw2ICszMTEsNyBAQCBbU291cmNlcy5YNjRdDQo+ID4gPiAgICBY ODZQYXRjaEluc3RydWN0aW9uLmMNCj4gPiA+ICAgIFg4NlNwZWN1bGF0aW9uQmFycmllci5jDQo+ ID4gPiAgICBYNjQvR2NjSW5saW5lLmMgfCBHQ0MNCj4gPiA+ICsgIFg2NC9HY2NJbmxpbmVQcml2 LmMgfCBHQ0MNCj4gPiA+ICAgIFg2NC9FbmFibGVEaXNhYmxlSW50ZXJydXB0cy5uYXNtDQo+ID4g PiAgICBYNjQvRGlzYWJsZVBhZ2luZzY0Lm5hc20NCj4gPiA+ICAgIFg2NC9SZFJhbmQubmFzbQ0K PiA+ID4gZGlmZiAtLWdpdCBhL01kZVBrZy9MaWJyYXJ5L0Jhc2VMaWIvSWEzMi9HY2NJbmxpbmUu Yw0KPiA+IGIvTWRlUGtnL0xpYnJhcnkvQmFzZUxpYi9JYTMyL0djY0lubGluZS5jDQo+ID4gPiBp bmRleCA1Mjg3MjAwZjg3Li42ZWQ5MzgxODdhIDEwMDY0NA0KPiA+ID4gLS0tIGEvTWRlUGtnL0xp YnJhcnkvQmFzZUxpYi9JYTMyL0djY0lubGluZS5jDQo+ID4gPiArKysgYi9NZGVQa2cvTGlicmFy eS9CYXNlTGliL0lhMzIvR2NjSW5saW5lLmMNCj4gPiA+IEBAIC0xLDcgKzEsNyBAQA0KPiA+ID4g IC8qKiBAZmlsZQ0KPiA+ID4gICAgR0NDIGlubGluZSBpbXBsZW1lbnRhdGlvbiBvZiBCYXNlTGli IHByb2Nlc3Nvcg0KPiA+IHNwZWNpZmljIGZ1bmN0aW9ucy4NCj4gPiA+DQo+ID4gPiAtICBDb3B5 cmlnaHQgKGMpIDIwMDYgLSAyMDE4LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsDQo+ID4gcmlnaHRz IHJlc2VydmVkLjxCUj4NCj4gPiA+ICsgIENvcHlyaWdodCAoYykgMjAwNiAtIDIwMjAsIEludGVs IENvcnBvcmF0aW9uLiBBbGwNCj4gPiByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ID4gICAgUG9y dGlvbnMgY29weXJpZ2h0IChjKSAyMDA4IC0gMjAwOSwgQXBwbGUgSW5jLg0KPiBBbGwNCj4gPiBy aWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ID4gICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJT RC0yLUNsYXVzZS1QYXRlbnQNCj4gPiA+DQo+ID4gPiBAQCAtMTAsOCArMTAsNiBAQA0KPiA+ID4N Cj4gPiA+ICAjaW5jbHVkZSAiQmFzZUxpYkludGVybmFscy5oIg0KPiA+ID4NCj4gPiA+IC0NCj4g PiA+IC0NCj4gPiA+ICAvKioNCj4gPiA+ICAgIFVzZWQgdG8gc2VyaWFsaXplIGxvYWQgYW5kIHN0 b3JlIG9wZXJhdGlvbnMuDQo+ID4gPg0KPiA+ID4gQEAgLTMxLDQxICsyOSw2IEBAIE1lbW9yeUZl bmNlICgNCj4gPiA+ICAgIF9fYXNtX18gX192b2xhdGlsZV9fICgiIjo6OiJtZW1vcnkiKTsNCj4g PiA+ICB9DQo+ID4gPg0KPiA+ID4gLQ0KPiA+ID4gLS8qKg0KPiA+ID4gLSAgRW5hYmxlcyBDUFUg aW50ZXJydXB0cy4NCj4gPiA+IC0NCj4gPiA+IC0gIEVuYWJsZXMgQ1BVIGludGVycnVwdHMuDQo+ ID4gPiAtDQo+ID4gPiAtKiovDQo+ID4gPiAtVk9JRA0KPiA+ID4gLUVGSUFQSQ0KPiA+ID4gLUVu YWJsZUludGVycnVwdHMgKA0KPiA+ID4gLSAgVk9JRA0KPiA+ID4gLSAgKQ0KPiA+ID4gLXsNCj4g PiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgic3RpIjo6OiAibWVtb3J5Iik7DQo+ID4gPiAt fQ0KPiA+ID4gLQ0KPiA+ID4gLQ0KPiA+ID4gLS8qKg0KPiA+ID4gLSAgRGlzYWJsZXMgQ1BVIGlu dGVycnVwdHMuDQo+ID4gPiAtDQo+ID4gPiAtICBEaXNhYmxlcyBDUFUgaW50ZXJydXB0cy4NCj4g PiA+IC0NCj4gPiA+IC0qKi8NCj4gPiA+IC1WT0lEDQo+ID4gPiAtRUZJQVBJDQo+ID4gPiAtRGlz YWJsZUludGVycnVwdHMgKA0KPiA+ID4gLSAgVk9JRA0KPiA+ID4gLSAgKQ0KPiA+ID4gLXsNCj4g PiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgiY2xpIjo6OiAibWVtb3J5Iik7DQo+ID4gPiAt fQ0KPiA+ID4gLQ0KPiA+ID4gLQ0KPiA+ID4gLQ0KPiA+ID4gLQ0KPiA+ID4gIC8qKg0KPiA+ID4g ICAgUmVxdWVzdHMgQ1BVIHRvIHBhdXNlIGZvciBhIHNob3J0IHBlcmlvZCBvZiB0aW1lLg0KPiA+ ID4NCj4gPiA+IEBAIC04Miw3ICs0NSw2IEBAIENwdVBhdXNlICgNCj4gPiA+ICAgIF9fYXNtX18g X192b2xhdGlsZV9fICgicGF1c2UiKTsNCj4gPiA+ICB9DQo+ID4gPg0KPiA+ID4gLQ0KPiA+ID4g IC8qKg0KPiA+ID4gICAgR2VuZXJhdGVzIGEgYnJlYWtwb2ludCBvbiB0aGUgQ1BVLg0KPiA+ID4N Cj4gPiA+IEBAIC05OSw3NSArNjEsNiBAQCBDcHVCcmVha3BvaW50ICgNCj4gPiA+ICAgIF9fYXNt X18gX192b2xhdGlsZV9fICgiaW50ICQzIik7DQo+ID4gPiAgfQ0KPiA+ID4NCj4gPiA+IC0NCj4g PiA+IC0NCj4gPiA+IC0vKioNCj4gPiA+IC0gIFJldHVybnMgYSA2NC1iaXQgTWFjaGluZSBTcGVj aWZpYyBSZWdpc3RlcihNU1IpLg0KPiA+ID4gLQ0KPiA+ID4gLSAgUmVhZHMgYW5kIHJldHVybnMg dGhlIDY0LWJpdCBNU1Igc3BlY2lmaWVkIGJ5DQo+ID4gSW5kZXguIE5vIHBhcmFtZXRlciBjaGVj a2luZyBpcw0KPiA+ID4gLSAgcGVyZm9ybWVkIG9uIEluZGV4LCBhbmQgc29tZSBJbmRleCB2YWx1 ZXMgbWF5DQo+IGNhdXNlDQo+ID4gQ1BVIGV4Y2VwdGlvbnMuIFRoZQ0KPiA+ID4gLSAgY2FsbGVy IG11c3QgZWl0aGVyIGd1YXJhbnRlZSB0aGF0IEluZGV4IGlzIHZhbGlkLA0KPiA+IG9yIHRoZSBj YWxsZXIgbXVzdCBzZXQgdXANCj4gPiA+IC0gIGV4Y2VwdGlvbiBoYW5kbGVycyB0byBjYXRjaCB0 aGUgZXhjZXB0aW9ucy4gVGhpcw0KPiA+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlDQo+ID4g PiAtICBvbiBJQS0zMiBhbmQgWDY0Lg0KPiA+ID4gLQ0KPiA+ID4gLSAgQHBhcmFtICBJbmRleCBU aGUgMzItYml0IE1TUiBpbmRleCB0byByZWFkLg0KPiA+ID4gLQ0KPiA+ID4gLSAgQHJldHVybiBU aGUgdmFsdWUgb2YgdGhlIE1TUiBpZGVudGlmaWVkIGJ5IEluZGV4Lg0KPiA+ID4gLQ0KPiA+ID4g LSoqLw0KPiA+ID4gLVVJTlQ2NA0KPiA+ID4gLUVGSUFQSQ0KPiA+ID4gLUFzbVJlYWRNc3I2NCAo DQo+ID4gPiAtICBJTiAgICAgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgSW5kZXgNCj4gPiA+ IC0gICkNCj4gPiA+IC17DQo+ID4gPiAtICBVSU5UNjQgRGF0YTsNCj4gPiA+IC0NCj4gPiA+IC0g IF9fYXNtX18gX192b2xhdGlsZV9fICgNCj4gPiA+IC0gICAgInJkbXNyIg0KPiA+ID4gLSAgICA6 ICI9QSIgKERhdGEpICAgLy8gJTANCj4gPiA+IC0gICAgOiAiYyIgIChJbmRleCkgIC8vICUxDQo+ ID4gPiAtICAgICk7DQo+ID4gPiAtDQo+ID4gPiAtICByZXR1cm4gRGF0YTsNCj4gPiA+IC19DQo+ ID4gPiAtDQo+ID4gPiAtLyoqDQo+ID4gPiAtICBXcml0ZXMgYSA2NC1iaXQgdmFsdWUgdG8gYSBN YWNoaW5lIFNwZWNpZmljDQo+ID4gUmVnaXN0ZXIoTVNSKSwgYW5kIHJldHVybnMgdGhlDQo+ID4g PiAtICB2YWx1ZS4NCj4gPiA+IC0NCj4gPiA+IC0gIFdyaXRlcyB0aGUgNjQtYml0IHZhbHVlIHNw ZWNpZmllZCBieSBWYWx1ZSB0byB0aGUNCj4gPiBNU1Igc3BlY2lmaWVkIGJ5IEluZGV4LiBUaGUN Cj4gPiA+IC0gIDY0LWJpdCB2YWx1ZSB3cml0dGVuIHRvIHRoZSBNU1IgaXMgcmV0dXJuZWQuIE5v DQo+ID4gcGFyYW1ldGVyIGNoZWNraW5nIGlzDQo+ID4gPiAtICBwZXJmb3JtZWQgb24gSW5kZXgg b3IgVmFsdWUsIGFuZCBzb21lIG9mIHRoZXNlDQo+IG1heQ0KPiA+IGNhdXNlIENQVSBleGNlcHRp b25zLiBUaGUNCj4gPiA+IC0gIGNhbGxlciBtdXN0IGVpdGhlciBndWFyYW50ZWUgdGhhdCBJbmRl eCBhbmQgVmFsdWUNCj4gPiBhcmUgdmFsaWQsIG9yIHRoZSBjYWxsZXINCj4gPiA+IC0gIG11c3Qg ZXN0YWJsaXNoIHByb3BlciBleGNlcHRpb24gaGFuZGxlcnMuIFRoaXMNCj4gPiBmdW5jdGlvbiBp cyBvbmx5IGF2YWlsYWJsZSBvbg0KPiA+ID4gLSAgSUEtMzIgYW5kIFg2NC4NCj4gPiA+IC0NCj4g PiA+IC0gIEBwYXJhbSAgSW5kZXggVGhlIDMyLWJpdCBNU1IgaW5kZXggdG8gd3JpdGUuDQo+ID4g PiAtICBAcGFyYW0gIFZhbHVlIFRoZSA2NC1iaXQgdmFsdWUgdG8gd3JpdGUgdG8gdGhlDQo+IE1T Ui4NCj4gPiA+IC0NCj4gPiA+IC0gIEByZXR1cm4gVmFsdWUNCj4gPiA+IC0NCj4gPiA+IC0qKi8N Cj4gPiA+IC1VSU5UNjQNCj4gPiA+IC1FRklBUEkNCj4gPiA+IC1Bc21Xcml0ZU1zcjY0ICgNCj4g PiA+IC0gIElOICAgICAgVUlOVDMyICAgICAgICAgICAgICAgICAgICBJbmRleCwNCj4gPiA+IC0g IElOICAgICAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICBWYWx1ZQ0KPiA+ID4gLSAgKQ0KPiA+ ID4gLXsNCj4gPiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgNCj4gPiA+IC0gICAgIndybXNy Ig0KPiA+ID4gLSAgICA6DQo+ID4gPiAtICAgIDogImMiIChJbmRleCksDQo+ID4gPiAtICAgICAg IkEiIChWYWx1ZSkNCj4gPiA+IC0gICAgKTsNCj4gPiA+IC0NCj4gPiA+IC0gIHJldHVybiBWYWx1 ZTsNCj4gPiA+IC19DQo+ID4gPiAtDQo+ID4gPiAtDQo+ID4gPiAtDQo+ID4gPiAgLyoqDQo+ID4g PiAgICBSZWFkcyB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgRUZMQUdTIHJlZ2lzdGVyLg0KPiA+ ID4NCj4gPiA+IEBAIC0xOTUsOTY1ICs4OCw2IEBAIEFzbVJlYWRFZmxhZ3MgKA0KPiA+ID4gICAg cmV0dXJuIEVmbGFnczsNCj4gPiA+ICB9DQo+ID4gPg0KPiA+ID4gLQ0KPiA+ID4gLQ0KPiA+ID4g LS8qKg0KPiA+ID4gLSAgUmVhZHMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIENvbnRyb2wgUmVn aXN0ZXIgMA0KPiA+IChDUjApLg0KPiA+ID4gLQ0KPiA+ID4gLSAgUmVhZHMgYW5kIHJldHVybnMg dGhlIGN1cnJlbnQgdmFsdWUgb2YgQ1IwLiBUaGlzDQo+ID4gZnVuY3Rpb24gaXMgb25seSBhdmFp bGFibGUNCj4gPiA+IC0gIG9uIElBLTMyIGFuZCBYNjQuIFRoaXMgcmV0dXJucyBhIDMyLWJpdCB2 YWx1ZSBvbg0KPiA+IElBLTMyIGFuZCBhIDY0LWJpdCB2YWx1ZSBvbg0KPiA+ID4gLSAgWDY0Lg0K PiA+ID4gLQ0KPiA+ID4gLSAgQHJldHVybiBUaGUgdmFsdWUgb2YgdGhlIENvbnRyb2wgUmVnaXN0 ZXIgMA0KPiAoQ1IwKS4NCj4gPiA+IC0NCj4gPiA+IC0qKi8NCj4gPiA+IC1VSU5UTg0KPiA+ID4g LUVGSUFQSQ0KPiA+ID4gLUFzbVJlYWRDcjAgKA0KPiA+ID4gLSAgVk9JRA0KPiA+ID4gLSAgKQ0K PiA+ID4gLXsNCj4gPiA+IC0gIFVJTlROICAgRGF0YTsNCj4gPiA+IC0NCj4gPiA+IC0gIF9fYXNt X18gX192b2xhdGlsZV9fICgNCj4gPiA+IC0gICAgIm1vdmwgJSVjcjAsJTAiDQo+ID4gPiAtICAg IDogIj1hIiAoRGF0YSkNCj4gPiA+IC0gICAgKTsNCj4gPiA+IC0NCj4gPiA+IC0gIHJldHVybiBE YXRhOw0KPiA+ID4gLX0NCj4gPiA+IC0NCj4gPiA+IC0NCj4gPiA+IC0vKioNCj4gPiA+IC0gIFJl YWRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBDb250cm9sIFJlZ2lzdGVyIDINCj4gPiAoQ1Iy KS4NCj4gPiA+IC0NCj4gPiA+IC0gIFJlYWRzIGFuZCByZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVl IG9mIENSMi4gVGhpcw0KPiA+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlDQo+ID4gPiAtICBv biBJQS0zMiBhbmQgWDY0LiBUaGlzIHJldHVybnMgYSAzMi1iaXQgdmFsdWUgb24NCj4gPiBJQS0z MiBhbmQgYSA2NC1iaXQgdmFsdWUgb24NCj4gPiA+IC0gIFg2NC4NCj4gPiA+IC0NCj4gPiA+IC0g IEByZXR1cm4gVGhlIHZhbHVlIG9mIHRoZSBDb250cm9sIFJlZ2lzdGVyIDINCj4gKENSMikuDQo+ ID4gPiAtDQo+ID4gPiAtKiovDQo+ID4gPiAtVUlOVE4NCj4gPiA+IC1FRklBUEkNCj4gPiA+IC1B c21SZWFkQ3IyICgNCj4gPiA+IC0gIFZPSUQNCj4gPiA+IC0gICkNCj4gPiA+IC17DQo+ID4gPiAt ICBVSU5UTiBEYXRhOw0KPiA+ID4gLQ0KPiA+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0K PiA+ID4gLSAgICAibW92bCAlJWNyMiwgJTAiDQo+ID4gPiAtICAgIDogIj1yIiAoRGF0YSkNCj4g PiA+IC0gICAgKTsNCj4gPiA+IC0NCj4gPiA+IC0gIHJldHVybiBEYXRhOw0KPiA+ID4gLX0NCj4g PiA+IC0NCj4gPiA+IC0vKioNCj4gPiA+IC0gIFJlYWRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRo ZSBDb250cm9sIFJlZ2lzdGVyIDMNCj4gPiAoQ1IzKS4NCj4gPiA+IC0NCj4gPiA+IC0gIFJlYWRz IGFuZCByZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVlIG9mIENSMy4gVGhpcw0KPiA+IGZ1bmN0aW9u IGlzIG9ubHkgYXZhaWxhYmxlDQo+ID4gPiAtICBvbiBJQS0zMiBhbmQgWDY0LiBUaGlzIHJldHVy bnMgYSAzMi1iaXQgdmFsdWUgb24NCj4gPiBJQS0zMiBhbmQgYSA2NC1iaXQgdmFsdWUgb24NCj4g PiA+IC0gIFg2NC4NCj4gPiA+IC0NCj4gPiA+IC0gIEByZXR1cm4gVGhlIHZhbHVlIG9mIHRoZSBD b250cm9sIFJlZ2lzdGVyIDMNCj4gKENSMykuDQo+ID4gPiAtDQo+ID4gPiAtKiovDQo+ID4gPiAt VUlOVE4NCj4gPiA+IC1FRklBUEkNCj4gPiA+IC1Bc21SZWFkQ3IzICgNCj4gPiA+IC0gIFZPSUQN Cj4gPiA+IC0gICkNCj4gPiA+IC17DQo+ID4gPiAtICBVSU5UTiBEYXRhOw0KPiA+ID4gLQ0KPiA+ ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+ID4gLSAgICAibW92bCAlJWNyMywgJTAi DQo+ID4gPiAtICAgIDogIj1yIiAoRGF0YSkNCj4gPiA+IC0gICAgKTsNCj4gPiA+IC0NCj4gPiA+ IC0gIHJldHVybiBEYXRhOw0KPiA+ID4gLX0NCj4gPiA+IC0NCj4gPiA+IC0NCj4gPiA+IC0vKioN Cj4gPiA+IC0gIFJlYWRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBDb250cm9sIFJlZ2lzdGVy IDQNCj4gPiAoQ1I0KS4NCj4gPiA+IC0NCj4gPiA+IC0gIFJlYWRzIGFuZCByZXR1cm5zIHRoZSBj dXJyZW50IHZhbHVlIG9mIENSNC4gVGhpcw0KPiA+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxl DQo+ID4gPiAtICBvbiBJQS0zMiBhbmQgWDY0LiBUaGlzIHJldHVybnMgYSAzMi1iaXQgdmFsdWUg b24NCj4gPiBJQS0zMiBhbmQgYSA2NC1iaXQgdmFsdWUgb24NCj4gPiA+IC0gIFg2NC4NCj4gPiA+ IC0NCj4gPiA+IC0gIEByZXR1cm4gVGhlIHZhbHVlIG9mIHRoZSBDb250cm9sIFJlZ2lzdGVyIDQN Cj4gKENSNCkuDQo+ID4gPiAtDQo+ID4gPiAtKiovDQo+ID4gPiAtVUlOVE4NCj4gPiA+IC1FRklB UEkNCj4gPiA+IC1Bc21SZWFkQ3I0ICgNCj4gPiA+IC0gIFZPSUQNCj4gPiA+IC0gICkNCj4gPiA+ IC17DQo+ID4gPiAtICBVSU5UTiBEYXRhOw0KPiA+ID4gLQ0KPiA+ID4gLSAgX19hc21fXyBfX3Zv bGF0aWxlX18gKA0KPiA+ID4gLSAgICAibW92bCAlJWNyNCwgJTAiDQo+ID4gPiAtICAgIDogIj1h IiAoRGF0YSkNCj4gPiA+IC0gICAgKTsNCj4gPiA+IC0NCj4gPiA+IC0gIHJldHVybiBEYXRhOw0K PiA+ID4gLX0NCj4gPiA+IC0NCj4gPiA+IC0NCj4gPiA+IC0vKioNCj4gPiA+IC0gIFdyaXRlcyBh IHZhbHVlIHRvIENvbnRyb2wgUmVnaXN0ZXIgMCAoQ1IwKS4NCj4gPiA+IC0NCj4gPiA+IC0gIFdy aXRlcyBhbmQgcmV0dXJucyBhIG5ldyB2YWx1ZSB0byBDUjAuIFRoaXMNCj4gPiBmdW5jdGlvbiBp cyBvbmx5IGF2YWlsYWJsZSBvbg0KPiA+ID4gLSAgSUEtMzIgYW5kIFg2NC4gVGhpcyB3cml0ZXMg YSAzMi1iaXQgdmFsdWUgb24gSUEtDQo+IDMyDQo+ID4gYW5kIGEgNjQtYml0IHZhbHVlIG9uIFg2 NC4NCj4gPiA+IC0NCj4gPiA+IC0gIEBwYXJhbSAgQ3IwIFRoZSB2YWx1ZSB0byB3cml0ZSB0byBD UjAuDQo+ID4gPiAtDQo+ID4gPiAtICBAcmV0dXJuIFRoZSB2YWx1ZSB3cml0dGVuIHRvIENSMC4N Cj4gPiA+IC0NCj4gPiA+IC0qKi8NCj4gPiA+IC1VSU5UTg0KPiA+ID4gLUVGSUFQSQ0KPiA+ID4g LUFzbVdyaXRlQ3IwICgNCj4gPiA+IC0gIFVJTlROICBDcjANCj4gPiA+IC0gICkNCj4gPiA+IC17 DQo+ID4gPiAtICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoDQo+ID4gPiAtICAgICJtb3ZsICUwLCAl JWNyMCINCj4gPiA+IC0gICAgOg0KPiA+ID4gLSAgICA6ICJyIiAoQ3IwKQ0KPiA+ID4gLSAgICAp Ow0KPiA+ID4gLSAgcmV0dXJuIENyMDsNCj4gPiA+IC19DQo+ID4gPiAtDQo+ID4gPiAtDQo+ID4g PiAtLyoqDQo+ID4gPiAtICBXcml0ZXMgYSB2YWx1ZSB0byBDb250cm9sIFJlZ2lzdGVyIDIgKENS MikuDQo+ID4gPiAtDQo+ID4gPiAtICBXcml0ZXMgYW5kIHJldHVybnMgYSBuZXcgdmFsdWUgdG8g Q1IyLiBUaGlzDQo+ID4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgb24NCj4gPiA+IC0gIElB LTMyIGFuZCBYNjQuIFRoaXMgd3JpdGVzIGEgMzItYml0IHZhbHVlIG9uIElBLQ0KPiAzMg0KPiA+ IGFuZCBhIDY0LWJpdCB2YWx1ZSBvbiBYNjQuDQo+ID4gPiAtDQo+ID4gPiAtICBAcGFyYW0gIENy MiBUaGUgdmFsdWUgdG8gd3JpdGUgdG8gQ1IyLg0KPiA+ID4gLQ0KPiA+ID4gLSAgQHJldHVybiBU aGUgdmFsdWUgd3JpdHRlbiB0byBDUjIuDQo+ID4gPiAtDQo+ID4gPiAtKiovDQo+ID4gPiAtVUlO VE4NCj4gPiA+IC1FRklBUEkNCj4gPiA+IC1Bc21Xcml0ZUNyMiAoDQo+ID4gPiAtICBVSU5UTiAg Q3IyDQo+ID4gPiAtICApDQo+ID4gPiAtew0KPiA+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18g KA0KPiA+ID4gLSAgICAibW92bCAlMCwgJSVjcjIiDQo+ID4gPiAtICAgIDoNCj4gPiA+IC0gICAg OiAiciIgKENyMikNCj4gPiA+IC0gICAgKTsNCj4gPiA+IC0gIHJldHVybiBDcjI7DQo+ID4gPiAt fQ0KPiA+ID4gLQ0KPiA+ID4gLQ0KPiA+ID4gLS8qKg0KPiA+ID4gLSAgV3JpdGVzIGEgdmFsdWUg dG8gQ29udHJvbCBSZWdpc3RlciAzIChDUjMpLg0KPiA+ID4gLQ0KPiA+ID4gLSAgV3JpdGVzIGFu ZCByZXR1cm5zIGEgbmV3IHZhbHVlIHRvIENSMy4gVGhpcw0KPiA+IGZ1bmN0aW9uIGlzIG9ubHkg YXZhaWxhYmxlIG9uDQo+ID4gPiAtICBJQS0zMiBhbmQgWDY0LiBUaGlzIHdyaXRlcyBhIDMyLWJp dCB2YWx1ZSBvbiBJQS0NCj4gMzINCj4gPiBhbmQgYSA2NC1iaXQgdmFsdWUgb24gWDY0Lg0KPiA+ ID4gLQ0KPiA+ID4gLSAgQHBhcmFtICBDcjMgVGhlIHZhbHVlIHRvIHdyaXRlIHRvIENSMy4NCj4g PiA+IC0NCj4gPiA+IC0gIEByZXR1cm4gVGhlIHZhbHVlIHdyaXR0ZW4gdG8gQ1IzLg0KPiA+ID4g LQ0KPiA+ID4gLSoqLw0KPiA+ID4gLVVJTlRODQo+ID4gPiAtRUZJQVBJDQo+ID4gPiAtQXNtV3Jp dGVDcjMgKA0KPiA+ID4gLSAgVUlOVE4gIENyMw0KPiA+ID4gLSAgKQ0KPiA+ID4gLXsNCj4gPiA+ IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgNCj4gPiA+IC0gICAgIm1vdmwgJTAsICUlY3IzIg0K PiA+ID4gLSAgICA6DQo+ID4gPiAtICAgIDogInIiIChDcjMpDQo+ID4gPiAtICAgICk7DQo+ID4g PiAtICByZXR1cm4gQ3IzOw0KPiA+ID4gLX0NCj4gPiA+IC0NCj4gPiA+IC0NCj4gPiA+IC0vKioN Cj4gPiA+IC0gIFdyaXRlcyBhIHZhbHVlIHRvIENvbnRyb2wgUmVnaXN0ZXIgNCAoQ1I0KS4NCj4g PiA+IC0NCj4gPiA+IC0gIFdyaXRlcyBhbmQgcmV0dXJucyBhIG5ldyB2YWx1ZSB0byBDUjQuIFRo aXMNCj4gPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBvbg0KPiA+ID4gLSAgSUEtMzIgYW5k IFg2NC4gVGhpcyB3cml0ZXMgYSAzMi1iaXQgdmFsdWUgb24gSUEtDQo+IDMyDQo+ID4gYW5kIGEg NjQtYml0IHZhbHVlIG9uIFg2NC4NCj4gPiA+IC0NCj4gPiA+IC0gIEBwYXJhbSAgQ3I0IFRoZSB2 YWx1ZSB0byB3cml0ZSB0byBDUjQuDQo+ID4gPiAtDQo+ID4gPiAtICBAcmV0dXJuIFRoZSB2YWx1 ZSB3cml0dGVuIHRvIENSNC4NCj4gPiA+IC0NCj4gPiA+IC0qKi8NCj4gPiA+IC1VSU5UTg0KPiA+ ID4gLUVGSUFQSQ0KPiA+ID4gLUFzbVdyaXRlQ3I0ICgNCj4gPiA+IC0gIFVJTlROICBDcjQNCj4g PiA+IC0gICkNCj4gPiA+IC17DQo+ID4gPiAtICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoDQo+ID4g PiAtICAgICJtb3ZsICUwLCAlJWNyNCINCj4gPiA+IC0gICAgOg0KPiA+ID4gLSAgICA6ICJyIiAo Q3I0KQ0KPiA+ID4gLSAgICApOw0KPiA+ID4gLSAgcmV0dXJuIENyNDsNCj4gPiA+IC19DQo+ID4g PiAtDQo+ID4gPiAtDQo+ID4gPiAtLyoqDQo+ID4gPiAtICBSZWFkcyB0aGUgY3VycmVudCB2YWx1 ZSBvZiBEZWJ1ZyBSZWdpc3RlciAwDQo+IChEUjApLg0KPiA+ID4gLQ0KPiA+ID4gLSAgUmVhZHMg YW5kIHJldHVybnMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgRFIwLiBUaGlzDQo+ID4gZnVuY3Rpb24g aXMgb25seSBhdmFpbGFibGUNCj4gPiA+IC0gIG9uIElBLTMyIGFuZCBYNjQuIFRoaXMgcmV0dXJu cyBhIDMyLWJpdCB2YWx1ZSBvbg0KPiA+IElBLTMyIGFuZCBhIDY0LWJpdCB2YWx1ZSBvbg0KPiA+ ID4gLSAgWDY0Lg0KPiA+ID4gLQ0KPiA+ID4gLSAgQHJldHVybiBUaGUgdmFsdWUgb2YgRGVidWcg UmVnaXN0ZXIgMCAoRFIwKS4NCj4gPiA+IC0NCj4gPiA+IC0qKi8NCj4gPiA+IC1VSU5UTg0KPiA+ ID4gLUVGSUFQSQ0KPiA+ID4gLUFzbVJlYWREcjAgKA0KPiA+ID4gLSAgVk9JRA0KPiA+ID4gLSAg KQ0KPiA+ID4gLXsNCj4gPiA+IC0gIFVJTlROIERhdGE7DQo+ID4gPiAtDQo+ID4gPiAtICBfX2Fz bV9fIF9fdm9sYXRpbGVfXyAoDQo+ID4gPiAtICAgICJtb3ZsICUlZHIwLCAlMCINCj4gPiA+IC0g ICAgOiAiPXIiIChEYXRhKQ0KPiA+ID4gLSAgICApOw0KPiA+ID4gLQ0KPiA+ID4gLSAgcmV0dXJu IERhdGE7DQo+ID4gPiAtfQ0KPiA+ID4gLQ0KPiA+ID4gLQ0KPiA+ID4gLS8qKg0KPiA+ID4gLSAg UmVhZHMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgRGVidWcgUmVnaXN0ZXIgMQ0KPiAoRFIxKS4NCj4g PiA+IC0NCj4gPiA+IC0gIFJlYWRzIGFuZCByZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVlIG9mIERS MS4gVGhpcw0KPiA+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlDQo+ID4gPiAtICBvbiBJQS0z MiBhbmQgWDY0LiBUaGlzIHJldHVybnMgYSAzMi1iaXQgdmFsdWUgb24NCj4gPiBJQS0zMiBhbmQg YSA2NC1iaXQgdmFsdWUgb24NCj4gPiA+IC0gIFg2NC4NCj4gPiA+IC0NCj4gPiA+IC0gIEByZXR1 cm4gVGhlIHZhbHVlIG9mIERlYnVnIFJlZ2lzdGVyIDEgKERSMSkuDQo+ID4gPiAtDQo+ID4gPiAt KiovDQo+ID4gPiAtVUlOVE4NCj4gPiA+IC1FRklBUEkNCj4gPiA+IC1Bc21SZWFkRHIxICgNCj4g PiA+IC0gIFZPSUQNCj4gPiA+IC0gICkNCj4gPiA+IC17DQo+ID4gPiAtICBVSU5UTiBEYXRhOw0K PiA+ID4gLQ0KPiA+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+ID4gLSAgICAibW92 bCAlJWRyMSwgJTAiDQo+ID4gPiAtICAgIDogIj1yIiAoRGF0YSkNCj4gPiA+IC0gICAgKTsNCj4g PiA+IC0NCj4gPiA+IC0gIHJldHVybiBEYXRhOw0KPiA+ID4gLX0NCj4gPiA+IC0NCj4gPiA+IC0N Cj4gPiA+IC0vKioNCj4gPiA+IC0gIFJlYWRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIERlYnVnIFJl Z2lzdGVyIDINCj4gKERSMikuDQo+ID4gPiAtDQo+ID4gPiAtICBSZWFkcyBhbmQgcmV0dXJucyB0 aGUgY3VycmVudCB2YWx1ZSBvZiBEUjIuIFRoaXMNCj4gPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWls YWJsZQ0KPiA+ID4gLSAgb24gSUEtMzIgYW5kIFg2NC4gVGhpcyByZXR1cm5zIGEgMzItYml0IHZh bHVlIG9uDQo+ID4gSUEtMzIgYW5kIGEgNjQtYml0IHZhbHVlIG9uDQo+ID4gPiAtICBYNjQuDQo+ ID4gPiAtDQo+ID4gPiAtICBAcmV0dXJuIFRoZSB2YWx1ZSBvZiBEZWJ1ZyBSZWdpc3RlciAyIChE UjIpLg0KPiA+ID4gLQ0KPiA+ID4gLSoqLw0KPiA+ID4gLVVJTlRODQo+ID4gPiAtRUZJQVBJDQo+ ID4gPiAtQXNtUmVhZERyMiAoDQo+ID4gPiAtICBWT0lEDQo+ID4gPiAtICApDQo+ID4gPiAtew0K PiA+ID4gLSAgVUlOVE4gRGF0YTsNCj4gPiA+IC0NCj4gPiA+IC0gIF9fYXNtX18gX192b2xhdGls ZV9fICgNCj4gPiA+IC0gICAgIm1vdmwgJSVkcjIsICUwIg0KPiA+ID4gLSAgICA6ICI9ciIgKERh dGEpDQo+ID4gPiAtICAgICk7DQo+ID4gPiAtDQo+ID4gPiAtICByZXR1cm4gRGF0YTsNCj4gPiA+ IC19DQo+ID4gPiAtDQo+ID4gPiAtDQo+ID4gPiAtLyoqDQo+ID4gPiAtICBSZWFkcyB0aGUgY3Vy cmVudCB2YWx1ZSBvZiBEZWJ1ZyBSZWdpc3RlciAzDQo+IChEUjMpLg0KPiA+ID4gLQ0KPiA+ID4g LSAgUmVhZHMgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgRFIzLiBUaGlzDQo+ID4g ZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUNCj4gPiA+IC0gIG9uIElBLTMyIGFuZCBYNjQuIFRo aXMgcmV0dXJucyBhIDMyLWJpdCB2YWx1ZSBvbg0KPiA+IElBLTMyIGFuZCBhIDY0LWJpdCB2YWx1 ZSBvbg0KPiA+ID4gLSAgWDY0Lg0KPiA+ID4gLQ0KPiA+ID4gLSAgQHJldHVybiBUaGUgdmFsdWUg b2YgRGVidWcgUmVnaXN0ZXIgMyAoRFIzKS4NCj4gPiA+IC0NCj4gPiA+IC0qKi8NCj4gPiA+IC1V SU5UTg0KPiA+ID4gLUVGSUFQSQ0KPiA+ID4gLUFzbVJlYWREcjMgKA0KPiA+ID4gLSAgVk9JRA0K PiA+ID4gLSAgKQ0KPiA+ID4gLXsNCj4gPiA+IC0gIFVJTlROIERhdGE7DQo+ID4gPiAtDQo+ID4g PiAtICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoDQo+ID4gPiAtICAgICJtb3ZsICUlZHIzLCAlMCIN Cj4gPiA+IC0gICAgOiAiPXIiIChEYXRhKQ0KPiA+ID4gLSAgICApOw0KPiA+ID4gLQ0KPiA+ID4g LSAgcmV0dXJuIERhdGE7DQo+ID4gPiAtfQ0KPiA+ID4gLQ0KPiA+ID4gLQ0KPiA+ID4gLS8qKg0K PiA+ID4gLSAgUmVhZHMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgRGVidWcgUmVnaXN0ZXIgNA0KPiAo RFI0KS4NCj4gPiA+IC0NCj4gPiA+IC0gIFJlYWRzIGFuZCByZXR1cm5zIHRoZSBjdXJyZW50IHZh bHVlIG9mIERSNC4gVGhpcw0KPiA+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlDQo+ID4gPiAt ICBvbiBJQS0zMiBhbmQgWDY0LiBUaGlzIHJldHVybnMgYSAzMi1iaXQgdmFsdWUgb24NCj4gPiBJ QS0zMiBhbmQgYSA2NC1iaXQgdmFsdWUgb24NCj4gPiA+IC0gIFg2NC4NCj4gPiA+IC0NCj4gPiA+ IC0gIEByZXR1cm4gVGhlIHZhbHVlIG9mIERlYnVnIFJlZ2lzdGVyIDQgKERSNCkuDQo+ID4gPiAt DQo+ID4gPiAtKiovDQo+ID4gPiAtVUlOVE4NCj4gPiA+IC1FRklBUEkNCj4gPiA+IC1Bc21SZWFk RHI0ICgNCj4gPiA+IC0gIFZPSUQNCj4gPiA+IC0gICkNCj4gPiA+IC17DQo+ID4gPiAtICBVSU5U TiBEYXRhOw0KPiA+ID4gLQ0KPiA+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+ID4g LSAgICAibW92bCAlJWRyNCwgJTAiDQo+ID4gPiAtICAgIDogIj1yIiAoRGF0YSkNCj4gPiA+IC0g ICAgKTsNCj4gPiA+IC0NCj4gPiA+IC0gIHJldHVybiBEYXRhOw0KPiA+ID4gLX0NCj4gPiA+IC0N Cj4gPiA+IC0NCj4gPiA+IC0vKioNCj4gPiA+IC0gIFJlYWRzIHRoZSBjdXJyZW50IHZhbHVlIG9m IERlYnVnIFJlZ2lzdGVyIDUNCj4gKERSNSkuDQo+ID4gPiAtDQo+ID4gPiAtICBSZWFkcyBhbmQg cmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiBEUjUuIFRoaXMNCj4gPiBmdW5jdGlvbiBpcyBv bmx5IGF2YWlsYWJsZQ0KPiA+ID4gLSAgb24gSUEtMzIgYW5kIFg2NC4gVGhpcyByZXR1cm5zIGEg MzItYml0IHZhbHVlIG9uDQo+ID4gSUEtMzIgYW5kIGEgNjQtYml0IHZhbHVlIG9uDQo+ID4gPiAt ICBYNjQuDQo+ID4gPiAtDQo+ID4gPiAtICBAcmV0dXJuIFRoZSB2YWx1ZSBvZiBEZWJ1ZyBSZWdp c3RlciA1IChEUjUpLg0KPiA+ID4gLQ0KPiA+ID4gLSoqLw0KPiA+ID4gLVVJTlRODQo+ID4gPiAt RUZJQVBJDQo+ID4gPiAtQXNtUmVhZERyNSAoDQo+ID4gPiAtICBWT0lEDQo+ID4gPiAtICApDQo+ ID4gPiAtew0KPiA+ID4gLSAgVUlOVE4gRGF0YTsNCj4gPiA+IC0NCj4gPiA+IC0gIF9fYXNtX18g X192b2xhdGlsZV9fICgNCj4gPiA+IC0gICAgIm1vdmwgJSVkcjUsICUwIg0KPiA+ID4gLSAgICA6 ICI9ciIgKERhdGEpDQo+ID4gPiAtICAgICk7DQo+ID4gPiAtDQo+ID4gPiAtICByZXR1cm4gRGF0 YTsNCj4gPiA+IC19DQo+ID4gPiAtDQo+ID4gPiAtDQo+ID4gPiAtLyoqDQo+ID4gPiAtICBSZWFk cyB0aGUgY3VycmVudCB2YWx1ZSBvZiBEZWJ1ZyBSZWdpc3RlciA2DQo+IChEUjYpLg0KPiA+ID4g LQ0KPiA+ID4gLSAgUmVhZHMgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgRFI2LiBU aGlzDQo+ID4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUNCj4gPiA+IC0gIG9uIElBLTMyIGFu ZCBYNjQuIFRoaXMgcmV0dXJucyBhIDMyLWJpdCB2YWx1ZSBvbg0KPiA+IElBLTMyIGFuZCBhIDY0 LWJpdCB2YWx1ZSBvbg0KPiA+ID4gLSAgWDY0Lg0KPiA+ID4gLQ0KPiA+ID4gLSAgQHJldHVybiBU aGUgdmFsdWUgb2YgRGVidWcgUmVnaXN0ZXIgNiAoRFI2KS4NCj4gPiA+IC0NCj4gPiA+IC0qKi8N Cj4gPiA+IC1VSU5UTg0KPiA+ID4gLUVGSUFQSQ0KPiA+ID4gLUFzbVJlYWREcjYgKA0KPiA+ID4g LSAgVk9JRA0KPiA+ID4gLSAgKQ0KPiA+ID4gLXsNCj4gPiA+IC0gIFVJTlROIERhdGE7DQo+ID4g PiAtDQo+ID4gPiAtICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoDQo+ID4gPiAtICAgICJtb3ZsICUl ZHI2LCAlMCINCj4gPiA+IC0gICAgOiAiPXIiIChEYXRhKQ0KPiA+ID4gLSAgICApOw0KPiA+ID4g LQ0KPiA+ID4gLSAgcmV0dXJuIERhdGE7DQo+ID4gPiAtfQ0KPiA+ID4gLQ0KPiA+ID4gLQ0KPiA+ ID4gLS8qKg0KPiA+ID4gLSAgUmVhZHMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgRGVidWcgUmVnaXN0 ZXIgNw0KPiAoRFI3KS4NCj4gPiA+IC0NCj4gPiA+IC0gIFJlYWRzIGFuZCByZXR1cm5zIHRoZSBj dXJyZW50IHZhbHVlIG9mIERSNy4gVGhpcw0KPiA+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxl DQo+ID4gPiAtICBvbiBJQS0zMiBhbmQgWDY0LiBUaGlzIHJldHVybnMgYSAzMi1iaXQgdmFsdWUg b24NCj4gPiBJQS0zMiBhbmQgYSA2NC1iaXQgdmFsdWUgb24NCj4gPiA+IC0gIFg2NC4NCj4gPiA+ IC0NCj4gPiA+IC0gIEByZXR1cm4gVGhlIHZhbHVlIG9mIERlYnVnIFJlZ2lzdGVyIDcgKERSNyku DQo+ID4gPiAtDQo+ID4gPiAtKiovDQo+ID4gPiAtVUlOVE4NCj4gPiA+IC1FRklBUEkNCj4gPiA+ IC1Bc21SZWFkRHI3ICgNCj4gPiA+IC0gIFZPSUQNCj4gPiA+IC0gICkNCj4gPiA+IC17DQo+ID4g PiAtICBVSU5UTiBEYXRhOw0KPiA+ID4gLQ0KPiA+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18g KA0KPiA+ID4gLSAgICAibW92bCAlJWRyNywgJTAiDQo+ID4gPiAtICAgIDogIj1yIiAoRGF0YSkN Cj4gPiA+IC0gICAgKTsNCj4gPiA+IC0NCj4gPiA+IC0gIHJldHVybiBEYXRhOw0KPiA+ID4gLX0N Cj4gPiA+IC0NCj4gPiA+IC0NCj4gPiA+IC0vKioNCj4gPiA+IC0gIFdyaXRlcyBhIHZhbHVlIHRv IERlYnVnIFJlZ2lzdGVyIDAgKERSMCkuDQo+ID4gPiAtDQo+ID4gPiAtICBXcml0ZXMgYW5kIHJl dHVybnMgYSBuZXcgdmFsdWUgdG8gRFIwLiBUaGlzDQo+ID4gZnVuY3Rpb24gaXMgb25seSBhdmFp bGFibGUgb24NCj4gPiA+IC0gIElBLTMyIGFuZCBYNjQuIFRoaXMgd3JpdGVzIGEgMzItYml0IHZh bHVlIG9uIElBLQ0KPiAzMg0KPiA+IGFuZCBhIDY0LWJpdCB2YWx1ZSBvbiBYNjQuDQo+ID4gPiAt DQo+ID4gPiAtICBAcGFyYW0gIERyMCBUaGUgdmFsdWUgdG8gd3JpdGUgdG8gRHIwLg0KPiA+ID4g LQ0KPiA+ID4gLSAgQHJldHVybiBUaGUgdmFsdWUgd3JpdHRlbiB0byBEZWJ1ZyBSZWdpc3RlciAw DQo+ID4gKERSMCkuDQo+ID4gPiAtDQo+ID4gPiAtKiovDQo+ID4gPiAtVUlOVE4NCj4gPiA+IC1F RklBUEkNCj4gPiA+IC1Bc21Xcml0ZURyMCAoDQo+ID4gPiAtICBVSU5UTiAgRHIwDQo+ID4gPiAt ICApDQo+ID4gPiAtew0KPiA+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+ID4gLSAg ICAibW92bCAlMCwgJSVkcjAiDQo+ID4gPiAtICAgIDoNCj4gPiA+IC0gICAgOiAiciIgKERyMCkN Cj4gPiA+IC0gICAgKTsNCj4gPiA+IC0gIHJldHVybiBEcjA7DQo+ID4gPiAtfQ0KPiA+ID4gLQ0K PiA+ID4gLQ0KPiA+ID4gLS8qKg0KPiA+ID4gLSAgV3JpdGVzIGEgdmFsdWUgdG8gRGVidWcgUmVn aXN0ZXIgMSAoRFIxKS4NCj4gPiA+IC0NCj4gPiA+IC0gIFdyaXRlcyBhbmQgcmV0dXJucyBhIG5l dyB2YWx1ZSB0byBEUjEuIFRoaXMNCj4gPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBvbg0K PiA+ID4gLSAgSUEtMzIgYW5kIFg2NC4gVGhpcyB3cml0ZXMgYSAzMi1iaXQgdmFsdWUgb24gSUEt DQo+IDMyDQo+ID4gYW5kIGEgNjQtYml0IHZhbHVlIG9uIFg2NC4NCj4gPiA+IC0NCj4gPiA+IC0g IEBwYXJhbSAgRHIxIFRoZSB2YWx1ZSB0byB3cml0ZSB0byBEcjEuDQo+ID4gPiAtDQo+ID4gPiAt ICBAcmV0dXJuIFRoZSB2YWx1ZSB3cml0dGVuIHRvIERlYnVnIFJlZ2lzdGVyIDENCj4gPiAoRFIx KS4NCj4gPiA+IC0NCj4gPiA+IC0qKi8NCj4gPiA+IC1VSU5UTg0KPiA+ID4gLUVGSUFQSQ0KPiA+ ID4gLUFzbVdyaXRlRHIxICgNCj4gPiA+IC0gIFVJTlROICBEcjENCj4gPiA+IC0gICkNCj4gPiA+ IC17DQo+ID4gPiAtICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoDQo+ID4gPiAtICAgICJtb3ZsICUw LCAlJWRyMSINCj4gPiA+IC0gICAgOg0KPiA+ID4gLSAgICA6ICJyIiAoRHIxKQ0KPiA+ID4gLSAg ICApOw0KPiA+ID4gLSAgcmV0dXJuIERyMTsNCj4gPiA+IC19DQo+ID4gPiAtDQo+ID4gPiAtDQo+ ID4gPiAtLyoqDQo+ID4gPiAtICBXcml0ZXMgYSB2YWx1ZSB0byBEZWJ1ZyBSZWdpc3RlciAyIChE UjIpLg0KPiA+ID4gLQ0KPiA+ID4gLSAgV3JpdGVzIGFuZCByZXR1cm5zIGEgbmV3IHZhbHVlIHRv IERSMi4gVGhpcw0KPiA+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIG9uDQo+ID4gPiAtICBJ QS0zMiBhbmQgWDY0LiBUaGlzIHdyaXRlcyBhIDMyLWJpdCB2YWx1ZSBvbiBJQS0NCj4gMzINCj4g PiBhbmQgYSA2NC1iaXQgdmFsdWUgb24gWDY0Lg0KPiA+ID4gLQ0KPiA+ID4gLSAgQHBhcmFtICBE cjIgVGhlIHZhbHVlIHRvIHdyaXRlIHRvIERyMi4NCj4gPiA+IC0NCj4gPiA+IC0gIEByZXR1cm4g VGhlIHZhbHVlIHdyaXR0ZW4gdG8gRGVidWcgUmVnaXN0ZXIgMg0KPiA+IChEUjIpLg0KPiA+ID4g LQ0KPiA+ID4gLSoqLw0KPiA+ID4gLVVJTlRODQo+ID4gPiAtRUZJQVBJDQo+ID4gPiAtQXNtV3Jp dGVEcjIgKA0KPiA+ID4gLSAgVUlOVE4gIERyMg0KPiA+ID4gLSAgKQ0KPiA+ID4gLXsNCj4gPiA+ IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgNCj4gPiA+IC0gICAgIm1vdmwgJTAsICUlZHIyIg0K PiA+ID4gLSAgICA6DQo+ID4gPiAtICAgIDogInIiIChEcjIpDQo+ID4gPiAtICAgICk7DQo+ID4g PiAtICByZXR1cm4gRHIyOw0KPiA+ID4gLX0NCj4gPiA+IC0NCj4gPiA+IC0NCj4gPiA+IC0vKioN Cj4gPiA+IC0gIFdyaXRlcyBhIHZhbHVlIHRvIERlYnVnIFJlZ2lzdGVyIDMgKERSMykuDQo+ID4g PiAtDQo+ID4gPiAtICBXcml0ZXMgYW5kIHJldHVybnMgYSBuZXcgdmFsdWUgdG8gRFIzLiBUaGlz DQo+ID4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgb24NCj4gPiA+IC0gIElBLTMyIGFuZCBY NjQuIFRoaXMgd3JpdGVzIGEgMzItYml0IHZhbHVlIG9uIElBLQ0KPiAzMg0KPiA+IGFuZCBhIDY0 LWJpdCB2YWx1ZSBvbiBYNjQuDQo+ID4gPiAtDQo+ID4gPiAtICBAcGFyYW0gIERyMyBUaGUgdmFs dWUgdG8gd3JpdGUgdG8gRHIzLg0KPiA+ID4gLQ0KPiA+ID4gLSAgQHJldHVybiBUaGUgdmFsdWUg d3JpdHRlbiB0byBEZWJ1ZyBSZWdpc3RlciAzDQo+ID4gKERSMykuDQo+ID4gPiAtDQo+ID4gPiAt KiovDQo+ID4gPiAtVUlOVE4NCj4gPiA+IC1FRklBUEkNCj4gPiA+IC1Bc21Xcml0ZURyMyAoDQo+ ID4gPiAtICBVSU5UTiAgRHIzDQo+ID4gPiAtICApDQo+ID4gPiAtew0KPiA+ID4gLSAgX19hc21f XyBfX3ZvbGF0aWxlX18gKA0KPiA+ID4gLSAgICAibW92bCAlMCwgJSVkcjMiDQo+ID4gPiAtICAg IDoNCj4gPiA+IC0gICAgOiAiciIgKERyMykNCj4gPiA+IC0gICAgKTsNCj4gPiA+IC0gIHJldHVy biBEcjM7DQo+ID4gPiAtfQ0KPiA+ID4gLQ0KPiA+ID4gLQ0KPiA+ID4gLS8qKg0KPiA+ID4gLSAg V3JpdGVzIGEgdmFsdWUgdG8gRGVidWcgUmVnaXN0ZXIgNCAoRFI0KS4NCj4gPiA+IC0NCj4gPiA+ IC0gIFdyaXRlcyBhbmQgcmV0dXJucyBhIG5ldyB2YWx1ZSB0byBEUjQuIFRoaXMNCj4gPiBmdW5j dGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBvbg0KPiA+ID4gLSAgSUEtMzIgYW5kIFg2NC4gVGhpcyB3 cml0ZXMgYSAzMi1iaXQgdmFsdWUgb24gSUEtDQo+IDMyDQo+ID4gYW5kIGEgNjQtYml0IHZhbHVl IG9uIFg2NC4NCj4gPiA+IC0NCj4gPiA+IC0gIEBwYXJhbSAgRHI0IFRoZSB2YWx1ZSB0byB3cml0 ZSB0byBEcjQuDQo+ID4gPiAtDQo+ID4gPiAtICBAcmV0dXJuIFRoZSB2YWx1ZSB3cml0dGVuIHRv IERlYnVnIFJlZ2lzdGVyIDQNCj4gPiAoRFI0KS4NCj4gPiA+IC0NCj4gPiA+IC0qKi8NCj4gPiA+ IC1VSU5UTg0KPiA+ID4gLUVGSUFQSQ0KPiA+ID4gLUFzbVdyaXRlRHI0ICgNCj4gPiA+IC0gIFVJ TlROICBEcjQNCj4gPiA+IC0gICkNCj4gPiA+IC17DQo+ID4gPiAtICBfX2FzbV9fIF9fdm9sYXRp bGVfXyAoDQo+ID4gPiAtICAgICJtb3ZsICUwLCAlJWRyNCINCj4gPiA+IC0gICAgOg0KPiA+ID4g LSAgICA6ICJyIiAoRHI0KQ0KPiA+ID4gLSAgICApOw0KPiA+ID4gLSAgcmV0dXJuIERyNDsNCj4g PiA+IC19DQo+ID4gPiAtDQo+ID4gPiAtDQo+ID4gPiAtLyoqDQo+ID4gPiAtICBXcml0ZXMgYSB2 YWx1ZSB0byBEZWJ1ZyBSZWdpc3RlciA1IChEUjUpLg0KPiA+ID4gLQ0KPiA+ID4gLSAgV3JpdGVz IGFuZCByZXR1cm5zIGEgbmV3IHZhbHVlIHRvIERSNS4gVGhpcw0KPiA+IGZ1bmN0aW9uIGlzIG9u bHkgYXZhaWxhYmxlIG9uDQo+ID4gPiAtICBJQS0zMiBhbmQgWDY0LiBUaGlzIHdyaXRlcyBhIDMy LWJpdCB2YWx1ZSBvbiBJQS0NCj4gMzINCj4gPiBhbmQgYSA2NC1iaXQgdmFsdWUgb24gWDY0Lg0K PiA+ID4gLQ0KPiA+ID4gLSAgQHBhcmFtICBEcjUgVGhlIHZhbHVlIHRvIHdyaXRlIHRvIERyNS4N Cj4gPiA+IC0NCj4gPiA+IC0gIEByZXR1cm4gVGhlIHZhbHVlIHdyaXR0ZW4gdG8gRGVidWcgUmVn aXN0ZXIgNQ0KPiA+IChEUjUpLg0KPiA+ID4gLQ0KPiA+ID4gLSoqLw0KPiA+ID4gLVVJTlRODQo+ ID4gPiAtRUZJQVBJDQo+ID4gPiAtQXNtV3JpdGVEcjUgKA0KPiA+ID4gLSAgVUlOVE4gIERyNQ0K PiA+ID4gLSAgKQ0KPiA+ID4gLXsNCj4gPiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgNCj4g PiA+IC0gICAgIm1vdmwgJTAsICUlZHI1Ig0KPiA+ID4gLSAgICA6DQo+ID4gPiAtICAgIDogInIi IChEcjUpDQo+ID4gPiAtICAgICk7DQo+ID4gPiAtICByZXR1cm4gRHI1Ow0KPiA+ID4gLX0NCj4g PiA+IC0NCj4gPiA+IC0NCj4gPiA+IC0vKioNCj4gPiA+IC0gIFdyaXRlcyBhIHZhbHVlIHRvIERl YnVnIFJlZ2lzdGVyIDYgKERSNikuDQo+ID4gPiAtDQo+ID4gPiAtICBXcml0ZXMgYW5kIHJldHVy bnMgYSBuZXcgdmFsdWUgdG8gRFI2LiBUaGlzDQo+ID4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFi bGUgb24NCj4gPiA+IC0gIElBLTMyIGFuZCBYNjQuIFRoaXMgd3JpdGVzIGEgMzItYml0IHZhbHVl IG9uIElBLQ0KPiAzMg0KPiA+IGFuZCBhIDY0LWJpdCB2YWx1ZSBvbiBYNjQuDQo+ID4gPiAtDQo+ ID4gPiAtICBAcGFyYW0gIERyNiBUaGUgdmFsdWUgdG8gd3JpdGUgdG8gRHI2Lg0KPiA+ID4gLQ0K PiA+ID4gLSAgQHJldHVybiBUaGUgdmFsdWUgd3JpdHRlbiB0byBEZWJ1ZyBSZWdpc3RlciA2DQo+ ID4gKERSNikuDQo+ID4gPiAtDQo+ID4gPiAtKiovDQo+ID4gPiAtVUlOVE4NCj4gPiA+IC1FRklB UEkNCj4gPiA+IC1Bc21Xcml0ZURyNiAoDQo+ID4gPiAtICBVSU5UTiAgRHI2DQo+ID4gPiAtICAp DQo+ID4gPiAtew0KPiA+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+ID4gLSAgICAi bW92bCAlMCwgJSVkcjYiDQo+ID4gPiAtICAgIDoNCj4gPiA+IC0gICAgOiAiciIgKERyNikNCj4g PiA+IC0gICAgKTsNCj4gPiA+IC0gIHJldHVybiBEcjY7DQo+ID4gPiAtfQ0KPiA+ID4gLQ0KPiA+ ID4gLQ0KPiA+ID4gLS8qKg0KPiA+ID4gLSAgV3JpdGVzIGEgdmFsdWUgdG8gRGVidWcgUmVnaXN0 ZXIgNyAoRFI3KS4NCj4gPiA+IC0NCj4gPiA+IC0gIFdyaXRlcyBhbmQgcmV0dXJucyBhIG5ldyB2 YWx1ZSB0byBEUjcuIFRoaXMNCj4gPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBvbg0KPiA+ ID4gLSAgSUEtMzIgYW5kIFg2NC4gVGhpcyB3cml0ZXMgYSAzMi1iaXQgdmFsdWUgb24gSUEtDQo+ IDMyDQo+ID4gYW5kIGEgNjQtYml0IHZhbHVlIG9uIFg2NC4NCj4gPiA+IC0NCj4gPiA+IC0gIEBw YXJhbSAgRHI3IFRoZSB2YWx1ZSB0byB3cml0ZSB0byBEcjcuDQo+ID4gPiAtDQo+ID4gPiAtICBA cmV0dXJuIFRoZSB2YWx1ZSB3cml0dGVuIHRvIERlYnVnIFJlZ2lzdGVyIDcNCj4gPiAoRFI3KS4N Cj4gPiA+IC0NCj4gPiA+IC0qKi8NCj4gPiA+IC1VSU5UTg0KPiA+ID4gLUVGSUFQSQ0KPiA+ID4g LUFzbVdyaXRlRHI3ICgNCj4gPiA+IC0gIFVJTlROICBEcjcNCj4gPiA+IC0gICkNCj4gPiA+IC17 DQo+ID4gPiAtICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoDQo+ID4gPiAtICAgICJtb3ZsICUwLCAl JWRyNyINCj4gPiA+IC0gICAgOg0KPiA+ID4gLSAgICA6ICJyIiAoRHI3KQ0KPiA+ID4gLSAgICAp Ow0KPiA+ID4gLSAgcmV0dXJuIERyNzsNCj4gPiA+IC19DQo+ID4gPiAtDQo+ID4gPiAtDQo+ID4g PiAtLyoqDQo+ID4gPiAtICBSZWFkcyB0aGUgY3VycmVudCB2YWx1ZSBvZiBDb2RlIFNlZ21lbnQg UmVnaXN0ZXINCj4gPiAoQ1MpLg0KPiA+ID4gLQ0KPiA+ID4gLSAgUmVhZHMgYW5kIHJldHVybnMg dGhlIGN1cnJlbnQgdmFsdWUgb2YgQ1MuIFRoaXMNCj4gPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWls YWJsZSBvbg0KPiA+ID4gLSAgSUEtMzIgYW5kIFg2NC4NCj4gPiA+IC0NCj4gPiA+IC0gIEByZXR1 cm4gVGhlIGN1cnJlbnQgdmFsdWUgb2YgQ1MuDQo+ID4gPiAtDQo+ID4gPiAtKiovDQo+ID4gPiAt VUlOVDE2DQo+ID4gPiAtRUZJQVBJDQo+ID4gPiAtQXNtUmVhZENzICgNCj4gPiA+IC0gIFZPSUQN Cj4gPiA+IC0gICkNCj4gPiA+IC17DQo+ID4gPiAtICBVSU5UMTYgIERhdGE7DQo+ID4gPiAtDQo+ ID4gPiAtICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoDQo+ID4gPiAtICAgICJtb3YgICAlJWNzLCAl MCINCj4gPiA+IC0gICAgOiI9YSIgKERhdGEpDQo+ID4gPiAtICAgICk7DQo+ID4gPiAtDQo+ID4g PiAtICByZXR1cm4gRGF0YTsNCj4gPiA+IC19DQo+ID4gPiAtDQo+ID4gPiAtDQo+ID4gPiAtLyoq DQo+ID4gPiAtICBSZWFkcyB0aGUgY3VycmVudCB2YWx1ZSBvZiBEYXRhIFNlZ21lbnQgUmVnaXN0 ZXINCj4gPiAoRFMpLg0KPiA+ID4gLQ0KPiA+ID4gLSAgUmVhZHMgYW5kIHJldHVybnMgdGhlIGN1 cnJlbnQgdmFsdWUgb2YgRFMuIFRoaXMNCj4gPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBv bg0KPiA+ID4gLSAgSUEtMzIgYW5kIFg2NC4NCj4gPiA+IC0NCj4gPiA+IC0gIEByZXR1cm4gVGhl IGN1cnJlbnQgdmFsdWUgb2YgRFMuDQo+ID4gPiAtDQo+ID4gPiAtKiovDQo+ID4gPiAtVUlOVDE2 DQo+ID4gPiAtRUZJQVBJDQo+ID4gPiAtQXNtUmVhZERzICgNCj4gPiA+IC0gIFZPSUQNCj4gPiA+ IC0gICkNCj4gPiA+IC17DQo+ID4gPiAtICBVSU5UMTYgIERhdGE7DQo+ID4gPiAtDQo+ID4gPiAt ICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoDQo+ID4gPiAtICAgICJtb3YgICUlZHMsICUwIg0KPiA+ ID4gLSAgICA6Ij1hIiAoRGF0YSkNCj4gPiA+IC0gICAgKTsNCj4gPiA+IC0NCj4gPiA+IC0gIHJl dHVybiBEYXRhOw0KPiA+ID4gLX0NCj4gPiA+IC0NCj4gPiA+IC0NCj4gPiA+IC0vKioNCj4gPiA+ IC0gIFJlYWRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIEV4dHJhIFNlZ21lbnQgUmVnaXN0ZXINCj4g PiAoRVMpLg0KPiA+ID4gLQ0KPiA+ID4gLSAgUmVhZHMgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQg dmFsdWUgb2YgRVMuIFRoaXMNCj4gPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBvbg0KPiA+ ID4gLSAgSUEtMzIgYW5kIFg2NC4NCj4gPiA+IC0NCj4gPiA+IC0gIEByZXR1cm4gVGhlIGN1cnJl bnQgdmFsdWUgb2YgRVMuDQo+ID4gPiAtDQo+ID4gPiAtKiovDQo+ID4gPiAtVUlOVDE2DQo+ID4g PiAtRUZJQVBJDQo+ID4gPiAtQXNtUmVhZEVzICgNCj4gPiA+IC0gIFZPSUQNCj4gPiA+IC0gICkN Cj4gPiA+IC17DQo+ID4gPiAtICBVSU5UMTYgIERhdGE7DQo+ID4gPiAtDQo+ID4gPiAtICBfX2Fz bV9fIF9fdm9sYXRpbGVfXyAoDQo+ID4gPiAtICAgICJtb3YgICUlZXMsICUwIg0KPiA+ID4gLSAg ICA6Ij1hIiAoRGF0YSkNCj4gPiA+IC0gICAgKTsNCj4gPiA+IC0NCj4gPiA+IC0gIHJldHVybiBE YXRhOw0KPiA+ID4gLX0NCj4gPiA+IC0NCj4gPiA+IC0NCj4gPiA+IC0vKioNCj4gPiA+IC0gIFJl YWRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIEZTIERhdGEgU2VnbWVudA0KPiBSZWdpc3Rlcg0KPiA+ IChGUykuDQo+ID4gPiAtDQo+ID4gPiAtICBSZWFkcyBhbmQgcmV0dXJucyB0aGUgY3VycmVudCB2 YWx1ZSBvZiBGUy4gVGhpcw0KPiA+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIG9uDQo+ID4g PiAtICBJQS0zMiBhbmQgWDY0Lg0KPiA+ID4gLQ0KPiA+ID4gLSAgQHJldHVybiBUaGUgY3VycmVu dCB2YWx1ZSBvZiBGUy4NCj4gPiA+IC0NCj4gPiA+IC0qKi8NCj4gPiA+IC1VSU5UMTYNCj4gPiA+ IC1FRklBUEkNCj4gPiA+IC1Bc21SZWFkRnMgKA0KPiA+ID4gLSAgVk9JRA0KPiA+ID4gLSAgKQ0K PiA+ID4gLXsNCj4gPiA+IC0gIFVJTlQxNiAgRGF0YTsNCj4gPiA+IC0NCj4gPiA+IC0gIF9fYXNt X18gX192b2xhdGlsZV9fICgNCj4gPiA+IC0gICAgIm1vdiAgJSVmcywgJTAiDQo+ID4gPiAtICAg IDoiPWEiIChEYXRhKQ0KPiA+ID4gLSAgICApOw0KPiA+ID4gLQ0KPiA+ID4gLSAgcmV0dXJuIERh dGE7DQo+ID4gPiAtfQ0KPiA+ID4gLQ0KPiA+ID4gLQ0KPiA+ID4gLS8qKg0KPiA+ID4gLSAgUmVh ZHMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgR1MgRGF0YSBTZWdtZW50DQo+IFJlZ2lzdGVyDQo+ID4g KEdTKS4NCj4gPiA+IC0NCj4gPiA+IC0gIFJlYWRzIGFuZCByZXR1cm5zIHRoZSBjdXJyZW50IHZh bHVlIG9mIEdTLiBUaGlzDQo+ID4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgb24NCj4gPiA+ IC0gIElBLTMyIGFuZCBYNjQuDQo+ID4gPiAtDQo+ID4gPiAtICBAcmV0dXJuIFRoZSBjdXJyZW50 IHZhbHVlIG9mIEdTLg0KPiA+ID4gLQ0KPiA+ID4gLSoqLw0KPiA+ID4gLVVJTlQxNg0KPiA+ID4g LUVGSUFQSQ0KPiA+ID4gLUFzbVJlYWRHcyAoDQo+ID4gPiAtICBWT0lEDQo+ID4gPiAtICApDQo+ ID4gPiAtew0KPiA+ID4gLSAgVUlOVDE2ICBEYXRhOw0KPiA+ID4gLQ0KPiA+ID4gLSAgX19hc21f XyBfX3ZvbGF0aWxlX18gKA0KPiA+ID4gLSAgICAibW92ICAlJWdzLCAlMCINCj4gPiA+IC0gICAg OiI9YSIgKERhdGEpDQo+ID4gPiAtICAgICk7DQo+ID4gPiAtDQo+ID4gPiAtICByZXR1cm4gRGF0 YTsNCj4gPiA+IC19DQo+ID4gPiAtDQo+ID4gPiAtDQo+ID4gPiAtLyoqDQo+ID4gPiAtICBSZWFk cyB0aGUgY3VycmVudCB2YWx1ZSBvZiBTdGFjayBTZWdtZW50IFJlZ2lzdGVyDQo+ID4gKFNTKS4N Cj4gPiA+IC0NCj4gPiA+IC0gIFJlYWRzIGFuZCByZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVlIG9m IFNTLiBUaGlzDQo+ID4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgb24NCj4gPiA+IC0gIElB LTMyIGFuZCBYNjQuDQo+ID4gPiAtDQo+ID4gPiAtICBAcmV0dXJuIFRoZSBjdXJyZW50IHZhbHVl IG9mIFNTLg0KPiA+ID4gLQ0KPiA+ID4gLSoqLw0KPiA+ID4gLVVJTlQxNg0KPiA+ID4gLUVGSUFQ SQ0KPiA+ID4gLUFzbVJlYWRTcyAoDQo+ID4gPiAtICBWT0lEDQo+ID4gPiAtICApDQo+ID4gPiAt ew0KPiA+ID4gLSAgVUlOVDE2ICBEYXRhOw0KPiA+ID4gLQ0KPiA+ID4gLSAgX19hc21fXyBfX3Zv bGF0aWxlX18gKA0KPiA+ID4gLSAgICAibW92ICAlJWRzLCAlMCINCj4gPiA+IC0gICAgOiI9YSIg KERhdGEpDQo+ID4gPiAtICAgICk7DQo+ID4gPiAtDQo+ID4gPiAtICByZXR1cm4gRGF0YTsNCj4g PiA+IC19DQo+ID4gPiAtDQo+ID4gPiAtDQo+ID4gPiAtLyoqDQo+ID4gPiAtICBSZWFkcyB0aGUg Y3VycmVudCB2YWx1ZSBvZiBUYXNrIFJlZ2lzdGVyIChUUikuDQo+ID4gPiAtDQo+ID4gPiAtICBS ZWFkcyBhbmQgcmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiBUUi4gVGhpcw0KPiA+IGZ1bmN0 aW9uIGlzIG9ubHkgYXZhaWxhYmxlIG9uDQo+ID4gPiAtICBJQS0zMiBhbmQgWDY0Lg0KPiA+ID4g LQ0KPiA+ID4gLSAgQHJldHVybiBUaGUgY3VycmVudCB2YWx1ZSBvZiBUUi4NCj4gPiA+IC0NCj4g PiA+IC0qKi8NCj4gPiA+IC1VSU5UMTYNCj4gPiA+IC1FRklBUEkNCj4gPiA+IC1Bc21SZWFkVHIg KA0KPiA+ID4gLSAgVk9JRA0KPiA+ID4gLSAgKQ0KPiA+ID4gLXsNCj4gPiA+IC0gIFVJTlQxNiAg RGF0YTsNCj4gPiA+IC0NCj4gPiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgNCj4gPiA+IC0g ICAgInN0ciAgJTAiDQo+ID4gPiAtICAgIDogIj1hIiAoRGF0YSkNCj4gPiA+IC0gICAgKTsNCj4g PiA+IC0NCj4gPiA+IC0gIHJldHVybiBEYXRhOw0KPiA+ID4gLX0NCj4gPiA+IC0NCj4gPiA+IC0N Cj4gPiA+IC0vKioNCj4gPiA+IC0gIFJlYWRzIHRoZSBjdXJyZW50IEdsb2JhbCBEZXNjcmlwdG9y IFRhYmxlDQo+ID4gUmVnaXN0ZXIoR0RUUikgZGVzY3JpcHRvci4NCj4gPiA+IC0NCj4gPiA+IC0g IFJlYWRzIGFuZCByZXR1cm5zIHRoZSBjdXJyZW50IEdEVFIgZGVzY3JpcHRvciBhbmQNCj4gPiBy ZXR1cm5zIGl0IGluIEdkdHIuIFRoaXMNCj4gPiA+IC0gIGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxh YmxlIG9uIElBLTMyIGFuZCBYNjQuDQo+ID4gPiAtDQo+ID4gPiAtICBAcGFyYW0gIEdkdHIgIFRo ZSBwb2ludGVyIHRvIGEgR0RUUiBkZXNjcmlwdG9yLg0KPiA+ID4gLQ0KPiA+ID4gLSoqLw0KPiA+ ID4gLVZPSUQNCj4gPiA+IC1FRklBUEkNCj4gPiA+IC1JbnRlcm5hbFg4NlJlYWRHZHRyICgNCj4g PiA+IC0gIE9VVCAgICAgSUEzMl9ERVNDUklQVE9SICAgICAgICAgICAqR2R0cg0KPiA+ID4gLSAg KQ0KPiA+ID4gLXsNCj4gPiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgNCj4gPiA+IC0gICAg InNnZHQgJTAiDQo+ID4gPiAtICAgIDogIj1tIiAoKkdkdHIpDQo+ID4gPiAtICAgICk7DQo+ID4g PiAtfQ0KPiA+ID4gLQ0KPiA+ID4gLQ0KPiA+ID4gLS8qKg0KPiA+ID4gLSAgV3JpdGVzIHRoZSBj dXJyZW50IEdsb2JhbCBEZXNjcmlwdG9yIFRhYmxlDQo+IFJlZ2lzdGVyDQo+ID4gKEdEVFIpIGRl c2NyaXB0b3IuDQo+ID4gPiAtDQo+ID4gPiAtICBXcml0ZXMgYW5kIHRoZSBjdXJyZW50IEdEVFIg ZGVzY3JpcHRvciBzcGVjaWZpZWQNCj4gYnkNCj4gPiBHZHRyLiBUaGlzIGZ1bmN0aW9uIGlzDQo+ ID4gPiAtICBvbmx5IGF2YWlsYWJsZSBvbiBJQS0zMiBhbmQgWDY0Lg0KPiA+ID4gLQ0KPiA+ID4g LSAgQHBhcmFtICBHZHRyICBUaGUgcG9pbnRlciB0byBhIEdEVFIgZGVzY3JpcHRvci4NCj4gPiA+ IC0NCj4gPiA+IC0qKi8NCj4gPiA+IC1WT0lEDQo+ID4gPiAtRUZJQVBJDQo+ID4gPiAtSW50ZXJu YWxYODZXcml0ZUdkdHIgKA0KPiA+ID4gLSAgSU4gICAgICBDT05TVCBJQTMyX0RFU0NSSVBUT1Ig ICAgICpHZHRyDQo+ID4gPiAtICApDQo+ID4gPiAtew0KPiA+ID4gLSAgX19hc21fXyBfX3ZvbGF0 aWxlX18gKA0KPiA+ID4gLSAgICAibGdkdCAlMCINCj4gPiA+IC0gICAgOg0KPiA+ID4gLSAgICA6 ICJtIiAoKkdkdHIpDQo+ID4gPiAtICAgICk7DQo+ID4gPiAtDQo+ID4gPiAtfQ0KPiA+ID4gLQ0K PiA+ID4gLQ0KPiA+ID4gLS8qKg0KPiA+ID4gLSAgUmVhZHMgdGhlIGN1cnJlbnQgSW50ZXJydXB0 IERlc2NyaXB0b3IgVGFibGUNCj4gPiBSZWdpc3RlcihHRFRSKSBkZXNjcmlwdG9yLg0KPiA+ID4g LQ0KPiA+ID4gLSAgUmVhZHMgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgSURUUiBkZXNjcmlwdG9y IGFuZA0KPiA+IHJldHVybnMgaXQgaW4gSWR0ci4gVGhpcw0KPiA+ID4gLSAgZnVuY3Rpb24gaXMg b25seSBhdmFpbGFibGUgb24gSUEtMzIgYW5kIFg2NC4NCj4gPiA+IC0NCj4gPiA+IC0gIEBwYXJh bSAgSWR0ciAgVGhlIHBvaW50ZXIgdG8gYSBJRFRSIGRlc2NyaXB0b3IuDQo+ID4gPiAtDQo+ID4g PiAtKiovDQo+ID4gPiAtVk9JRA0KPiA+ID4gLUVGSUFQSQ0KPiA+ID4gLUludGVybmFsWDg2UmVh ZElkdHIgKA0KPiA+ID4gLSAgT1VUICAgICBJQTMyX0RFU0NSSVBUT1IgICAgICAgICAgICpJZHRy DQo+ID4gPiAtICApDQo+ID4gPiAtew0KPiA+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0K PiA+ID4gLSAgICAic2lkdCAgJTAiDQo+ID4gPiAtICAgIDogIj1tIiAoKklkdHIpDQo+ID4gPiAt ICAgICk7DQo+ID4gPiAtfQ0KPiA+ID4gLQ0KPiA+ID4gLQ0KPiA+ID4gLS8qKg0KPiA+ID4gLSAg V3JpdGVzIHRoZSBjdXJyZW50IEludGVycnVwdCBEZXNjcmlwdG9yIFRhYmxlDQo+ID4gUmVnaXN0 ZXIoR0RUUikgZGVzY3JpcHRvci4NCj4gPiA+IC0NCj4gPiA+IC0gIFdyaXRlcyB0aGUgY3VycmVu dCBJRFRSIGRlc2NyaXB0b3IgYW5kIHJldHVybnMgaXQNCj4gPiBpbiBJZHRyLiBUaGlzIGZ1bmN0 aW9uIGlzDQo+ID4gPiAtICBvbmx5IGF2YWlsYWJsZSBvbiBJQS0zMiBhbmQgWDY0Lg0KPiA+ID4g LQ0KPiA+ID4gLSAgQHBhcmFtICBJZHRyICBUaGUgcG9pbnRlciB0byBhIElEVFIgZGVzY3JpcHRv ci4NCj4gPiA+IC0NCj4gPiA+IC0qKi8NCj4gPiA+IC1WT0lEDQo+ID4gPiAtRUZJQVBJDQo+ID4g PiAtSW50ZXJuYWxYODZXcml0ZUlkdHIgKA0KPiA+ID4gLSAgSU4gICAgICBDT05TVCBJQTMyX0RF U0NSSVBUT1IgICAgICpJZHRyDQo+ID4gPiAtICApDQo+ID4gPiAtew0KPiA+ID4gLSAgX19hc21f XyBfX3ZvbGF0aWxlX18gKA0KPiA+ID4gLSAgICAibGlkdCAlMCINCj4gPiA+IC0gICAgOg0KPiA+ ID4gLSAgICA6ICJtIiAoKklkdHIpDQo+ID4gPiAtICAgICk7DQo+ID4gPiAtfQ0KPiA+ID4gLQ0K PiA+ID4gLQ0KPiA+ID4gLS8qKg0KPiA+ID4gLSAgUmVhZHMgdGhlIGN1cnJlbnQgTG9jYWwgRGVz Y3JpcHRvciBUYWJsZQ0KPiA+IFJlZ2lzdGVyKExEVFIpIHNlbGVjdG9yLg0KPiA+ID4gLQ0KPiA+ ID4gLSAgUmVhZHMgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgMTYtYml0IExEVFINCj4gPiBkZXNj cmlwdG9yIHZhbHVlLiBUaGlzIGZ1bmN0aW9uIGlzDQo+ID4gPiAtICBvbmx5IGF2YWlsYWJsZSBv biBJQS0zMiBhbmQgWDY0Lg0KPiA+ID4gLQ0KPiA+ID4gLSAgQHJldHVybiBUaGUgY3VycmVudCBz ZWxlY3RvciBvZiBMRFQuDQo+ID4gPiAtDQo+ID4gPiAtKiovDQo+ID4gPiAtVUlOVDE2DQo+ID4g PiAtRUZJQVBJDQo+ID4gPiAtQXNtUmVhZExkdHIgKA0KPiA+ID4gLSAgVk9JRA0KPiA+ID4gLSAg KQ0KPiA+ID4gLXsNCj4gPiA+IC0gIFVJTlQxNiAgRGF0YTsNCj4gPiA+IC0NCj4gPiA+IC0gIF9f YXNtX18gX192b2xhdGlsZV9fICgNCj4gPiA+IC0gICAgInNsZHQgICUwIg0KPiA+ID4gLSAgICA6 ICI9ZyIgKERhdGEpICAgLy8gJTANCj4gPiA+IC0gICAgKTsNCj4gPiA+IC0NCj4gPiA+IC0gIHJl dHVybiBEYXRhOw0KPiA+ID4gLX0NCj4gPiA+IC0NCj4gPiA+IC0NCj4gPiA+IC0vKioNCj4gPiA+ IC0gIFdyaXRlcyB0aGUgY3VycmVudCBMb2NhbCBEZXNjcmlwdG9yIFRhYmxlDQo+IFJlZ2lzdGVy DQo+ID4gKEdEVFIpIHNlbGVjdG9yLg0KPiA+ID4gLQ0KPiA+ID4gLSAgV3JpdGVzIGFuZCB0aGUg Y3VycmVudCBMRFRSIGRlc2NyaXB0b3Igc3BlY2lmaWVkDQo+IGJ5DQo+ID4gTGR0ci4gVGhpcyBm dW5jdGlvbiBpcw0KPiA+ID4gLSAgb25seSBhdmFpbGFibGUgb24gSUEtMzIgYW5kIFg2NC4NCj4g PiA+IC0NCj4gPiA+IC0gIEBwYXJhbSAgTGR0ciAgMTYtYml0IExEVFIgc2VsZWN0b3IgdmFsdWUu DQo+ID4gPiAtDQo+ID4gPiAtKiovDQo+ID4gPiAtVk9JRA0KPiA+ID4gLUVGSUFQSQ0KPiA+ID4g LUFzbVdyaXRlTGR0ciAoDQo+ID4gPiAtICBJTiAgICAgIFVJTlQxNiAgICAgICAgICAgICAgICAg ICAgTGR0cg0KPiA+ID4gLSAgKQ0KPiA+ID4gLXsNCj4gPiA+IC0gIF9fYXNtX18gX192b2xhdGls ZV9fICgNCj4gPiA+IC0gICAgImxsZHR3ICAlMCINCj4gPiA+IC0gICAgOg0KPiA+ID4gLSAgICA6 ICJnIiAoTGR0cikgICAvLyAlMA0KPiA+ID4gLSAgICApOw0KPiA+ID4gLX0NCj4gPiA+IC0NCj4g PiA+IC0NCj4gPiA+ICAvKioNCj4gPiA+ICAgIFNhdmUgdGhlIGN1cnJlbnQgZmxvYXRpbmcgcG9p bnQvU1NFL1NTRTIgY29udGV4dA0KPiB0bw0KPiA+IGEgYnVmZmVyLg0KPiA+ID4NCj4gPiA+IEBA IC0xNjUwLDExNiArNTg0LDMgQEAgQXNtUmVhZFRzYyAoDQo+ID4gPg0KPiA+ID4gICAgcmV0dXJu IERhdGE7DQo+ID4gPiAgfQ0KPiA+ID4gLQ0KPiA+ID4gLQ0KPiA+ID4gLS8qKg0KPiA+ID4gLSAg UmVhZHMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgYSBQZXJmb3JtYW5jZSBDb3VudGVyDQo+ID4gKFBN QykuDQo+ID4gPiAtDQo+ID4gPiAtICBSZWFkcyBhbmQgcmV0dXJucyB0aGUgY3VycmVudCB2YWx1 ZSBvZg0KPiBwZXJmb3JtYW5jZQ0KPiA+IGNvdW50ZXIgc3BlY2lmaWVkIGJ5DQo+ID4gPiAtICBJ bmRleC4gVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBvbiBJQS0zMg0KPiBhbmQNCj4g PiBYNjQuDQo+ID4gPiAtDQo+ID4gPiAtICBAcGFyYW0gIEluZGV4IFRoZSAzMi1iaXQgUGVyZm9y bWFuY2UgQ291bnRlcg0KPiBpbmRleA0KPiA+IHRvIHJlYWQuDQo+ID4gPiAtDQo+ID4gPiAtICBA cmV0dXJuIFRoZSB2YWx1ZSBvZiB0aGUgUE1DIHNwZWNpZmllZCBieSBJbmRleC4NCj4gPiA+IC0N Cj4gPiA+IC0qKi8NCj4gPiA+IC1VSU5UNjQNCj4gPiA+IC1FRklBUEkNCj4gPiA+IC1Bc21SZWFk UG1jICgNCj4gPiA+IC0gIElOICAgICAgVUlOVDMyICAgICAgICAgICAgICAgICAgICBJbmRleA0K PiA+ID4gLSAgKQ0KPiA+ID4gLXsNCj4gPiA+IC0gIFVJTlQ2NCAgRGF0YTsNCj4gPiA+IC0NCj4g PiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgNCj4gPiA+IC0gICAgInJkcG1jIg0KPiA+ID4g LSAgICA6ICI9QSIgKERhdGEpDQo+ID4gPiAtICAgIDogImMiICAoSW5kZXgpDQo+ID4gPiAtICAg ICk7DQo+ID4gPiAtDQo+ID4gPiAtICByZXR1cm4gRGF0YTsNCj4gPiA+IC19DQo+ID4gPiAtDQo+ ID4gPiAtDQo+ID4gPiAtDQo+ID4gPiAtDQo+ID4gPiAtLyoqDQo+ID4gPiAtICBFeGVjdXRlcyBh IFdCSU5WRCBpbnN0cnVjdGlvbi4NCj4gPiA+IC0NCj4gPiA+IC0gIEV4ZWN1dGVzIGEgV0JJTlZE IGluc3RydWN0aW9uLiBUaGlzIGZ1bmN0aW9uIGlzDQo+ID4gb25seSBhdmFpbGFibGUgb24gSUEt MzIgYW5kDQo+ID4gPiAtICBYNjQuDQo+ID4gPiAtDQo+ID4gPiAtKiovDQo+ID4gPiAtVk9JRA0K PiA+ID4gLUVGSUFQSQ0KPiA+ID4gLUFzbVdiaW52ZCAoDQo+ID4gPiAtICBWT0lEDQo+ID4gPiAt ICApDQo+ID4gPiAtew0KPiA+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJ3YmludmQiOjo6 Im1lbW9yeSIpOw0KPiA+ID4gLX0NCj4gPiA+IC0NCj4gPiA+IC0NCj4gPiA+IC0vKioNCj4gPiA+ IC0gIEV4ZWN1dGVzIGEgSU5WRCBpbnN0cnVjdGlvbi4NCj4gPiA+IC0NCj4gPiA+IC0gIEV4ZWN1 dGVzIGEgSU5WRCBpbnN0cnVjdGlvbi4gVGhpcyBmdW5jdGlvbiBpcw0KPiBvbmx5DQo+ID4gYXZh aWxhYmxlIG9uIElBLTMyIGFuZA0KPiA+ID4gLSAgWDY0Lg0KPiA+ID4gLQ0KPiA+ID4gLSoqLw0K PiA+ID4gLVZPSUQNCj4gPiA+IC1FRklBUEkNCj4gPiA+IC1Bc21JbnZkICgNCj4gPiA+IC0gIFZP SUQNCj4gPiA+IC0gICkNCj4gPiA+IC17DQo+ID4gPiAtICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAo ImludmQiOjo6Im1lbW9yeSIpOw0KPiA+ID4gLQ0KPiA+ID4gLX0NCj4gPiA+IC0NCj4gPiA+IC0N Cj4gPiA+IC0vKioNCj4gPiA+IC0gIEZsdXNoZXMgYSBjYWNoZSBsaW5lIGZyb20gYWxsIHRoZSBp bnN0cnVjdGlvbiBhbmQNCj4gPiBkYXRhIGNhY2hlcyB3aXRoaW4gdGhlDQo+ID4gPiAtICBjb2hl cmVuY3kgZG9tYWluIG9mIHRoZSBDUFUuDQo+ID4gPiAtDQo+ID4gPiAtICBGbHVzaGVkIHRoZSBj YWNoZSBsaW5lIHNwZWNpZmllZCBieQ0KPiBMaW5lYXJBZGRyZXNzLA0KPiA+IGFuZCByZXR1cm5z IExpbmVhckFkZHJlc3MuDQo+ID4gPiAtICBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxl IG9uIElBLTMyIGFuZCBYNjQuDQo+ID4gPiAtDQo+ID4gPiAtICBAcGFyYW0gIExpbmVhckFkZHJl c3MgVGhlIGFkZHJlc3Mgb2YgdGhlIGNhY2hlDQo+IGxpbmUNCj4gPiB0byBmbHVzaC4gSWYgdGhl IENQVSBpcw0KPiA+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgIGluIGEgcGh5c2ljYWwgYWRk cmVzc2luZw0KPiA+IG1vZGUsIHRoZW4gTGluZWFyQWRkcmVzcyBpcyBhDQo+ID4gPiAtICAgICAg ICAgICAgICAgICAgICAgICAgcGh5c2ljYWwgYWRkcmVzcy4gSWYgdGhlDQo+IENQVQ0KPiA+IGlz IGluIGEgdmlydHVhbA0KPiA+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3Npbmcg bW9kZSwgdGhlbg0KPiA+IExpbmVhckFkZHJlc3MgaXMgYSB2aXJ0dWFsDQo+ID4gPiAtICAgICAg ICAgICAgICAgICAgICAgICAgYWRkcmVzcy4NCj4gPiA+IC0NCj4gPiA+IC0gIEByZXR1cm4gTGlu ZWFyQWRkcmVzcw0KPiA+ID4gLSoqLw0KPiA+ID4gLVZPSUQgKg0KPiA+ID4gLUVGSUFQSQ0KPiA+ ID4gLUFzbUZsdXNoQ2FjaGVMaW5lICgNCj4gPiA+IC0gIElOICAgICAgVk9JRCAgICAgICAgICAg ICAgICAgICAgICAqTGluZWFyQWRkcmVzcw0KPiA+ID4gLSAgKQ0KPiA+ID4gLXsNCj4gPiA+IC0g IFVJTlQzMiAgUmVnRWR4Ow0KPiA+ID4gLQ0KPiA+ID4gLSAgLy8NCj4gPiA+IC0gIC8vIElmIHRo ZSBDUFUgZG9lcyBub3Qgc3VwcG9ydCBDTEZMVVNIDQo+IGluc3RydWN0aW9uLA0KPiA+ID4gLSAg Ly8gdGhlbiBwcm9tb3RlIGZsdXNoIHJhbmdlIHRvIGZsdXNoIGVudGlyZQ0KPiBjYWNoZS4NCj4g PiA+IC0gIC8vDQo+ID4gPiAtICBBc21DcHVpZCAoMHgwMSwgTlVMTCwgTlVMTCwgTlVMTCwgJlJl Z0VkeCk7DQo+ID4gPiAtICBpZiAoKFJlZ0VkeCAmIEJJVDE5KSA9PSAwKSB7DQo+ID4gPiAtICAg IF9fYXNtX18gX192b2xhdGlsZV9fICgid2JpbnZkIjo6OiJtZW1vcnkiKTsNCj4gPiA+IC0gICAg cmV0dXJuIExpbmVhckFkZHJlc3M7DQo+ID4gPiAtICB9DQo+ID4gPiAtDQo+ID4gPiAtDQo+ID4g PiAtICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoDQo+ID4gPiAtICAgICJjbGZsdXNoICglMCkiDQo+ ID4gPiAtICAgIDogIithIiAoTGluZWFyQWRkcmVzcykNCj4gPiA+IC0gICAgOg0KPiA+ID4gLSAg ICA6ICJtZW1vcnkiDQo+ID4gPiAtICAgICk7DQo+ID4gPiAtDQo+ID4gPiAtICByZXR1cm4gTGlu ZWFyQWRkcmVzczsNCj4gPiA+IC19DQo+ID4gPiAtDQo+ID4gPiAtDQo+ID4gPiBkaWZmIC0tZ2l0 IGEvTWRlUGtnL0xpYnJhcnkvQmFzZUxpYi9JYTMyL0djY0lubGluZS5jDQo+ID4gYi9NZGVQa2cv TGlicmFyeS9CYXNlTGliL0lhMzIvR2NjSW5saW5lUHJpdi5jDQo+ID4gPiBzaW1pbGFyaXR5IGlu ZGV4IDYyJQ0KPiA+ID4gY29weSBmcm9tIE1kZVBrZy9MaWJyYXJ5L0Jhc2VMaWIvSWEzMi9HY2NJ bmxpbmUuYw0KPiA+ID4gY29weSB0byBNZGVQa2cvTGlicmFyeS9CYXNlTGliL0lhMzIvR2NjSW5s aW5lUHJpdi5jDQo+ID4gPiBpbmRleCA1Mjg3MjAwZjg3Li4zMGFhNjMyNDNiIDEwMDY0NA0KPiA+ ID4gLS0tIGEvTWRlUGtnL0xpYnJhcnkvQmFzZUxpYi9JYTMyL0djY0lubGluZS5jDQo+ID4gPiAr KysgYi9NZGVQa2cvTGlicmFyeS9CYXNlTGliL0lhMzIvR2NjSW5saW5lUHJpdi5jDQo+ID4gPiBA QCAtMSw3ICsxLDggQEANCj4gPiA+ICAvKiogQGZpbGUNCj4gPiA+IC0gIEdDQyBpbmxpbmUgaW1w bGVtZW50YXRpb24gb2YgQmFzZUxpYiBwcm9jZXNzb3INCj4gPiBzcGVjaWZpYyBmdW5jdGlvbnMu DQo+ID4gPiArICBHQ0MgaW5saW5lIGltcGxlbWVudGF0aW9uIG9mIEJhc2VMaWIgcHJvY2Vzc29y DQo+ID4gc3BlY2lmaWMgZnVuY3Rpb25zIHRoYXQgdXNlDQo+ID4gPiArICBwcml2bGlkZ2VkIGlu c3RydWN0aW9ucy4NCj4gPiA+DQo+ID4gPiAtICBDb3B5cmlnaHQgKGMpIDIwMDYgLSAyMDE4LCBJ bnRlbCBDb3Jwb3JhdGlvbi4gQWxsDQo+ID4gcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiA+ICsg IENvcHlyaWdodCAoYykgMjAwNiAtIDIwMjAsIEludGVsIENvcnBvcmF0aW9uLiBBbGwNCj4gPiBy aWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ID4gICAgUG9ydGlvbnMgY29weXJpZ2h0IChjKSAyMDA4 IC0gMjAwOSwgQXBwbGUgSW5jLg0KPiBBbGwNCj4gPiByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ ID4gICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gPiA+ DQo+ID4gPiBAQCAtMTAsMjggKzExLDYgQEANCj4gPiA+DQo+ID4gPiAgI2luY2x1ZGUgIkJhc2VM aWJJbnRlcm5hbHMuaCINCj4gPiA+DQo+ID4gPiAtDQo+ID4gPiAtDQo+ID4gPiAtLyoqDQo+ID4g PiAtICBVc2VkIHRvIHNlcmlhbGl6ZSBsb2FkIGFuZCBzdG9yZSBvcGVyYXRpb25zLg0KPiA+ID4g LQ0KPiA+ID4gLSAgQWxsIGxvYWRzIGFuZCBzdG9yZXMgdGhhdCBwcm9jZWVkIGNhbGxzIHRvIHRo aXMNCj4gPiBmdW5jdGlvbiBhcmUgZ3VhcmFudGVlZCB0byBiZQ0KPiA+ID4gLSAgZ2xvYmFsbHkg dmlzaWJsZSB3aGVuIHRoaXMgZnVuY3Rpb24gcmV0dXJucy4NCj4gPiA+IC0NCj4gPiA+IC0qKi8N Cj4gPiA+IC1WT0lEDQo+ID4gPiAtRUZJQVBJDQo+ID4gPiAtTWVtb3J5RmVuY2UgKA0KPiA+ID4g LSAgVk9JRA0KPiA+ID4gLSAgKQ0KPiA+ID4gLXsNCj4gPiA+IC0gIC8vIFRoaXMgaXMgYSBsaXR0 bGUgYml0IG9mIG92ZXJraWxsIGFuZCBpdCBpcw0KPiBtb3JlDQo+ID4gYWJvdXQgdGhlIGNvbXBp bGVyIHRoYXQgaXQgaXMNCj4gPiA+IC0gIC8vIGFjdHVhbGx5IHByb2Nlc3NvciBzeW5jaHJvbml6 YXRpb24uIFRoaXMgaXMNCj4gbGlrZQ0KPiA+IHRoZSBfUmVhZFdyaXRlQmFycmllcg0KPiA+ID4g LSAgLy8gTWljcm9zb2Z0IHNwZWNpZmljIGludHJpbnNpYw0KPiA+ID4gLSAgX19hc21fXyBfX3Zv bGF0aWxlX18gKCIiOjo6Im1lbW9yeSIpOw0KPiA+ID4gLX0NCj4gPiA+IC0NCj4gPiA+IC0NCj4g PiA+ICAvKioNCj4gPiA+ICAgIEVuYWJsZXMgQ1BVIGludGVycnVwdHMuDQo+ID4gPg0KPiA+ID4g QEAgLTYzLDQ0ICs0Miw2IEBAIERpc2FibGVJbnRlcnJ1cHRzICgNCj4gPiA+ICAgIF9fYXNtX18g X192b2xhdGlsZV9fICgiY2xpIjo6OiAibWVtb3J5Iik7DQo+ID4gPiAgfQ0KPiA+ID4NCj4gPiA+ IC0NCj4gPiA+IC0NCj4gPiA+IC0NCj4gPiA+IC0vKioNCj4gPiA+IC0gIFJlcXVlc3RzIENQVSB0 byBwYXVzZSBmb3IgYSBzaG9ydCBwZXJpb2Qgb2YgdGltZS4NCj4gPiA+IC0NCj4gPiA+IC0gIFJl cXVlc3RzIENQVSB0byBwYXVzZSBmb3IgYSBzaG9ydCBwZXJpb2Qgb2YgdGltZS4NCj4gPiBUeXBp Y2FsbHkgdXNlZCBpbiBNUA0KPiA+ID4gLSAgc3lzdGVtcyB0byBwcmV2ZW50IG1lbW9yeSBzdGFy dmF0aW9uIHdoaWxlDQo+IHdhaXRpbmcNCj4gPiBmb3IgYSBzcGluIGxvY2suDQo+ID4gPiAtDQo+ ID4gPiAtKiovDQo+ID4gPiAtVk9JRA0KPiA+ID4gLUVGSUFQSQ0KPiA+ID4gLUNwdVBhdXNlICgN Cj4gPiA+IC0gIFZPSUQNCj4gPiA+IC0gICkNCj4gPiA+IC17DQo+ID4gPiAtICBfX2FzbV9fIF9f dm9sYXRpbGVfXyAoInBhdXNlIik7DQo+ID4gPiAtfQ0KPiA+ID4gLQ0KPiA+ID4gLQ0KPiA+ID4g LS8qKg0KPiA+ID4gLSAgR2VuZXJhdGVzIGEgYnJlYWtwb2ludCBvbiB0aGUgQ1BVLg0KPiA+ID4g LQ0KPiA+ID4gLSAgR2VuZXJhdGVzIGEgYnJlYWtwb2ludCBvbiB0aGUgQ1BVLiBUaGUgYnJlYWtw b2ludA0KPiA+IG11c3QgYmUgaW1wbGVtZW50ZWQgc3VjaA0KPiA+ID4gLSAgdGhhdCBjb2RlIGNh biByZXN1bWUgbm9ybWFsIGV4ZWN1dGlvbiBhZnRlciB0aGUNCj4gPiBicmVha3BvaW50Lg0KPiA+ ID4gLQ0KPiA+ID4gLSoqLw0KPiA+ID4gLVZPSUQNCj4gPiA+IC1FRklBUEkNCj4gPiA+IC1DcHVC cmVha3BvaW50ICgNCj4gPiA+IC0gIFZPSUQNCj4gPiA+IC0gICkNCj4gPiA+IC17DQo+ID4gPiAt ICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImludCAkMyIpOw0KPiA+ID4gLX0NCj4gPiA+IC0NCj4g PiA+IC0NCj4gPiA+IC0NCj4gPiA+ICAvKioNCj4gPiA+ICAgIFJldHVybnMgYSA2NC1iaXQgTWFj aGluZSBTcGVjaWZpYyBSZWdpc3RlcihNU1IpLg0KPiA+ID4NCj4gPiA+IEBAIC0xNjYsMzcgKzEw Nyw2IEBAIEFzbVdyaXRlTXNyNjQgKA0KPiA+ID4gICAgcmV0dXJuIFZhbHVlOw0KPiA+ID4gIH0N Cj4gPiA+DQo+ID4gPiAtDQo+ID4gPiAtDQo+ID4gPiAtLyoqDQo+ID4gPiAtICBSZWFkcyB0aGUg Y3VycmVudCB2YWx1ZSBvZiB0aGUgRUZMQUdTIHJlZ2lzdGVyLg0KPiA+ID4gLQ0KPiA+ID4gLSAg UmVhZHMgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIEVGTEFHUw0KPiA+IHJl Z2lzdGVyLiBUaGlzIGZ1bmN0aW9uIGlzDQo+ID4gPiAtICBvbmx5IGF2YWlsYWJsZSBvbiBJQS0z MiBhbmQgWDY0LiBUaGlzIHJldHVybnMgYQ0KPiAzMi0NCj4gPiBiaXQgdmFsdWUgb24gSUEtMzIg YW5kIGENCj4gPiA+IC0gIDY0LWJpdCB2YWx1ZSBvbiBYNjQuDQo+ID4gPiAtDQo+ID4gPiAtICBA cmV0dXJuIEVGTEFHUyBvbiBJQS0zMiBvciBSRkxBR1Mgb24gWDY0Lg0KPiA+ID4gLQ0KPiA+ID4g LSoqLw0KPiA+ID4gLVVJTlRODQo+ID4gPiAtRUZJQVBJDQo+ID4gPiAtQXNtUmVhZEVmbGFncyAo DQo+ID4gPiAtICBWT0lEDQo+ID4gPiAtICApDQo+ID4gPiAtew0KPiA+ID4gLSAgVUlOVE4gRWZs YWdzOw0KPiA+ID4gLQ0KPiA+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+ID4gLSAg ICAicHVzaGZsICAgICBcblx0Ig0KPiA+ID4gLSAgICAicG9wbCAlMCAgICAgICAgIg0KPiA+ID4g LSAgICA6ICI9ciIgKEVmbGFncykNCj4gPiA+IC0gICAgKTsNCj4gPiA+IC0NCj4gPiA+IC0gIHJl dHVybiBFZmxhZ3M7DQo+ID4gPiAtfQ0KPiA+ID4gLQ0KPiA+ID4gLQ0KPiA+ID4gLQ0KPiA+ID4g IC8qKg0KPiA+ID4gICAgUmVhZHMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIENvbnRyb2wgUmVn aXN0ZXIgMA0KPiA+IChDUjApLg0KPiA+ID4NCj4gPiA+IEBAIC0xMTUzLDUwNSArMTA2Myw2IEBA IEFzbVdyaXRlTGR0ciAoDQo+ID4gPiAgICAgICk7DQo+ID4gPiAgfQ0KPiA+ID4NCj4gPiA+IC0N Cj4gPiA+IC0vKioNCj4gPiA+IC0gIFNhdmUgdGhlIGN1cnJlbnQgZmxvYXRpbmcgcG9pbnQvU1NF L1NTRTIgY29udGV4dA0KPiB0bw0KPiA+IGEgYnVmZmVyLg0KPiA+ID4gLQ0KPiA+ID4gLSAgU2F2 ZXMgdGhlIGN1cnJlbnQgZmxvYXRpbmcgcG9pbnQvU1NFL1NTRTIgc3RhdGUNCj4gdG8NCj4gPiB0 aGUgYnVmZmVyIHNwZWNpZmllZCBieQ0KPiA+ID4gLSAgQnVmZmVyLiBCdWZmZXIgbXVzdCBiZSBh bGlnbmVkIG9uIGEgMTYtYnl0ZQ0KPiA+IGJvdW5kYXJ5LiBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkN Cj4gPiA+IC0gIGF2YWlsYWJsZSBvbiBJQS0zMiBhbmQgWDY0Lg0KPiA+ID4gLQ0KPiA+ID4gLSAg QHBhcmFtICBCdWZmZXIgIFRoZSBwb2ludGVyIHRvIGEgYnVmZmVyIHRvIHNhdmUNCj4gdGhlDQo+ ID4gZmxvYXRpbmcgcG9pbnQvU1NFL1NTRTIgY29udGV4dC4NCj4gPiA+IC0NCj4gPiA+IC0qKi8N Cj4gPiA+IC1WT0lEDQo+ID4gPiAtRUZJQVBJDQo+ID4gPiAtSW50ZXJuYWxYODZGeFNhdmUgKA0K PiA+ID4gLSAgT1VUICAgICBJQTMyX0ZYX0JVRkZFUiAgICAgICAgICAgICpCdWZmZXINCj4gPiA+ IC0gICkNCj4gPiA+IC17DQo+ID4gPiAtICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoDQo+ID4gPiAt ICAgICJmeHNhdmUgJTAiDQo+ID4gPiAtICAgIDoNCj4gPiA+IC0gICAgOiAibSIgKCpCdWZmZXIp ICAvLyAlMA0KPiA+ID4gLSAgICApOw0KPiA+ID4gLX0NCj4gPiA+IC0NCj4gPiA+IC0NCj4gPiA+ IC0vKioNCj4gPiA+IC0gIFJlc3RvcmVzIHRoZSBjdXJyZW50IGZsb2F0aW5nIHBvaW50L1NTRS9T U0UyDQo+ID4gY29udGV4dCBmcm9tIGEgYnVmZmVyLg0KPiA+ID4gLQ0KPiA+ID4gLSAgUmVzdG9y ZXMgdGhlIGN1cnJlbnQgZmxvYXRpbmcgcG9pbnQvU1NFL1NTRTINCj4gc3RhdGUNCj4gPiBmcm9t IHRoZSBidWZmZXIgc3BlY2lmaWVkDQo+ID4gPiAtICBieSBCdWZmZXIuIEJ1ZmZlciBtdXN0IGJl IGFsaWduZWQgb24gYSAxNi1ieXRlDQo+ID4gYm91bmRhcnkuIFRoaXMgZnVuY3Rpb24gaXMNCj4g PiA+IC0gIG9ubHkgYXZhaWxhYmxlIG9uIElBLTMyIGFuZCBYNjQuDQo+ID4gPiAtDQo+ID4gPiAt ICBAcGFyYW0gIEJ1ZmZlciAgVGhlIHBvaW50ZXIgdG8gYSBidWZmZXIgdG8gc2F2ZQ0KPiB0aGUN Cj4gPiBmbG9hdGluZyBwb2ludC9TU0UvU1NFMiBjb250ZXh0Lg0KPiA+ID4gLQ0KPiA+ID4gLSoq Lw0KPiA+ID4gLVZPSUQNCj4gPiA+IC1FRklBUEkNCj4gPiA+IC1JbnRlcm5hbFg4NkZ4UmVzdG9y ZSAoDQo+ID4gPiAtICBJTiAgICAgIENPTlNUIElBMzJfRlhfQlVGRkVSICAgICAgKkJ1ZmZlcg0K PiA+ID4gLSAgKQ0KPiA+ID4gLXsNCj4gPiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgNCj4g PiA+IC0gICAgImZ4cnN0b3IgJTAiDQo+ID4gPiAtICAgIDoNCj4gPiA+IC0gICAgOiAibSIgKCpC dWZmZXIpICAvLyAlMA0KPiA+ID4gLSAgICApOw0KPiA+ID4gLX0NCj4gPiA+IC0NCj4gPiA+IC0N Cj4gPiA+IC0vKioNCj4gPiA+IC0gIFJlYWRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIDY0LWJpdCBN TVggUmVnaXN0ZXIgIzANCj4gPiAoTU0wKS4NCj4gPiA+IC0NCj4gPiA+IC0gIFJlYWRzIGFuZCBy ZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVlIG9mIE1NMC4gVGhpcw0KPiA+IGZ1bmN0aW9uIGlzIG9u bHkgYXZhaWxhYmxlDQo+ID4gPiAtICBvbiBJQS0zMiBhbmQgWDY0Lg0KPiA+ID4gLQ0KPiA+ID4g LSAgQHJldHVybiBUaGUgY3VycmVudCB2YWx1ZSBvZiBNTTAuDQo+ID4gPiAtDQo+ID4gPiAtKiov DQo+ID4gPiAtVUlOVDY0DQo+ID4gPiAtRUZJQVBJDQo+ID4gPiAtQXNtUmVhZE1tMCAoDQo+ID4g PiAtICBWT0lEDQo+ID4gPiAtICApDQo+ID4gPiAtew0KPiA+ID4gLSAgVUlOVDY0ICBEYXRhOw0K PiA+ID4gLQ0KPiA+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+ID4gLSAgICAicHVz aCAlJWVheCAgICAgICAgICBcblx0Ig0KPiA+ID4gLSAgICAicHVzaCAlJWVheCAgICAgICAgICBc blx0Ig0KPiA+ID4gLSAgICAibW92cSAlJW1tMCwgICglJWVzcClcblx0Ig0KPiA+ID4gLSAgICAi cG9wICAlJWVheCAgICAgICAgICBcblx0Ig0KPiA+ID4gLSAgICAicG9wICAlJWVkeCAgICAgICAg ICBcblx0Ig0KPiA+ID4gLSAgICA6ICI9QSIgIChEYXRhKSAgICAgICAvLyAlMA0KPiA+ID4gLSAg ICApOw0KPiA+ID4gLQ0KPiA+ID4gLSAgcmV0dXJuIERhdGE7DQo+ID4gPiAtfQ0KPiA+ID4gLQ0K PiA+ID4gLQ0KPiA+ID4gLS8qKg0KPiA+ID4gLSAgUmVhZHMgdGhlIGN1cnJlbnQgdmFsdWUgb2Yg NjQtYml0IE1NWCBSZWdpc3RlciAjMQ0KPiA+IChNTTEpLg0KPiA+ID4gLQ0KPiA+ID4gLSAgUmVh ZHMgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgTU0xLiBUaGlzDQo+ID4gZnVuY3Rp b24gaXMgb25seSBhdmFpbGFibGUNCj4gPiA+IC0gIG9uIElBLTMyIGFuZCBYNjQuDQo+ID4gPiAt DQo+ID4gPiAtICBAcmV0dXJuIFRoZSBjdXJyZW50IHZhbHVlIG9mIE1NMS4NCj4gPiA+IC0NCj4g PiA+IC0qKi8NCj4gPiA+IC1VSU5UNjQNCj4gPiA+IC1FRklBUEkNCj4gPiA+IC1Bc21SZWFkTW0x ICgNCj4gPiA+IC0gIFZPSUQNCj4gPiA+IC0gICkNCj4gPiA+IC17DQo+ID4gPiAtICBVSU5UNjQg IERhdGE7DQo+ID4gPiAtDQo+ID4gPiAtICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoDQo+ID4gPiAt ICAgICJwdXNoICUlZWF4ICAgICAgICAgIFxuXHQiDQo+ID4gPiAtICAgICJwdXNoICUlZWF4ICAg ICAgICAgIFxuXHQiDQo+ID4gPiAtICAgICJtb3ZxICUlbW0xLCAgKCUlZXNwKVxuXHQiDQo+ID4g PiAtICAgICJwb3AgICUlZWF4ICAgICAgICAgIFxuXHQiDQo+ID4gPiAtICAgICJwb3AgICUlZWR4 ICAgICAgICAgIFxuXHQiDQo+ID4gPiAtICAgIDogIj1BIiAgKERhdGEpICAgICAgIC8vICUwDQo+ ID4gPiAtICAgICk7DQo+ID4gPiAtDQo+ID4gPiAtICByZXR1cm4gRGF0YTsNCj4gPiA+IC19DQo+ ID4gPiAtDQo+ID4gPiAtDQo+ID4gPiAtLyoqDQo+ID4gPiAtICBSZWFkcyB0aGUgY3VycmVudCB2 YWx1ZSBvZiA2NC1iaXQgTU1YIFJlZ2lzdGVyICMyDQo+ID4gKE1NMikuDQo+ID4gPiAtDQo+ID4g PiAtICBSZWFkcyBhbmQgcmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiBNTTIuIFRoaXMNCj4g PiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZQ0KPiA+ID4gLSAgb24gSUEtMzIgYW5kIFg2NC4N Cj4gPiA+IC0NCj4gPiA+IC0gIEByZXR1cm4gVGhlIGN1cnJlbnQgdmFsdWUgb2YgTU0yLg0KPiA+ ID4gLQ0KPiA+ID4gLSoqLw0KPiA+ID4gLVVJTlQ2NA0KPiA+ID4gLUVGSUFQSQ0KPiA+ID4gLUFz bVJlYWRNbTIgKA0KPiA+ID4gLSAgVk9JRA0KPiA+ID4gLSAgKQ0KPiA+ID4gLXsNCj4gPiA+IC0g IFVJTlQ2NCAgRGF0YTsNCj4gPiA+IC0NCj4gPiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgN Cj4gPiA+IC0gICAgInB1c2ggJSVlYXggICAgICAgICAgXG5cdCINCj4gPiA+IC0gICAgInB1c2gg JSVlYXggICAgICAgICAgXG5cdCINCj4gPiA+IC0gICAgIm1vdnEgJSVtbTIsICAoJSVlc3ApXG5c dCINCj4gPiA+IC0gICAgInBvcCAgJSVlYXggICAgICAgICAgXG5cdCINCj4gPiA+IC0gICAgInBv cCAgJSVlZHggICAgICAgICAgXG5cdCINCj4gPiA+IC0gICAgOiAiPUEiICAoRGF0YSkgICAgICAg Ly8gJTANCj4gPiA+IC0gICAgKTsNCj4gPiA+IC0NCj4gPiA+IC0gIHJldHVybiBEYXRhOw0KPiA+ ID4gLX0NCj4gPiA+IC0NCj4gPiA+IC0NCj4gPiA+IC0vKioNCj4gPiA+IC0gIFJlYWRzIHRoZSBj dXJyZW50IHZhbHVlIG9mIDY0LWJpdCBNTVggUmVnaXN0ZXIgIzMNCj4gPiAoTU0zKS4NCj4gPiA+ IC0NCj4gPiA+IC0gIFJlYWRzIGFuZCByZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVlIG9mIE1NMy4g VGhpcw0KPiA+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlDQo+ID4gPiAtICBvbiBJQS0zMiBh bmQgWDY0Lg0KPiA+ID4gLQ0KPiA+ID4gLSAgQHJldHVybiBUaGUgY3VycmVudCB2YWx1ZSBvZiBN TTMuDQo+ID4gPiAtDQo+ID4gPiAtKiovDQo+ID4gPiAtVUlOVDY0DQo+ID4gPiAtRUZJQVBJDQo+ ID4gPiAtQXNtUmVhZE1tMyAoDQo+ID4gPiAtICBWT0lEDQo+ID4gPiAtICApDQo+ID4gPiAtew0K PiA+ID4gLSAgVUlOVDY0ICBEYXRhOw0KPiA+ID4gLQ0KPiA+ID4gLSAgX19hc21fXyBfX3ZvbGF0 aWxlX18gKA0KPiA+ID4gLSAgICAicHVzaCAlJWVheCAgICAgICAgICBcblx0Ig0KPiA+ID4gLSAg ICAicHVzaCAlJWVheCAgICAgICAgICBcblx0Ig0KPiA+ID4gLSAgICAibW92cSAlJW1tMywgICgl JWVzcClcblx0Ig0KPiA+ID4gLSAgICAicG9wICAlJWVheCAgICAgICAgICBcblx0Ig0KPiA+ID4g LSAgICAicG9wICAlJWVkeCAgICAgICAgICBcblx0Ig0KPiA+ID4gLSAgICA6ICI9QSIgIChEYXRh KSAgICAgICAvLyAlMA0KPiA+ID4gLSAgICApOw0KPiA+ID4gLQ0KPiA+ID4gLSAgcmV0dXJuIERh dGE7DQo+ID4gPiAtfQ0KPiA+ID4gLQ0KPiA+ID4gLQ0KPiA+ID4gLS8qKg0KPiA+ID4gLSAgUmVh ZHMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgNjQtYml0IE1NWCBSZWdpc3RlciAjNA0KPiA+IChNTTQp Lg0KPiA+ID4gLQ0KPiA+ID4gLSAgUmVhZHMgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgdmFsdWUg b2YgTU00LiBUaGlzDQo+ID4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUNCj4gPiA+IC0gIG9u IElBLTMyIGFuZCBYNjQuDQo+ID4gPiAtDQo+ID4gPiAtICBAcmV0dXJuIFRoZSBjdXJyZW50IHZh bHVlIG9mIE1NNC4NCj4gPiA+IC0NCj4gPiA+IC0qKi8NCj4gPiA+IC1VSU5UNjQNCj4gPiA+IC1F RklBUEkNCj4gPiA+IC1Bc21SZWFkTW00ICgNCj4gPiA+IC0gIFZPSUQNCj4gPiA+IC0gICkNCj4g PiA+IC17DQo+ID4gPiAtICBVSU5UNjQgIERhdGE7DQo+ID4gPiAtDQo+ID4gPiAtICBfX2FzbV9f IF9fdm9sYXRpbGVfXyAoDQo+ID4gPiAtICAgICJwdXNoICUlZWF4ICAgICAgICAgIFxuXHQiDQo+ ID4gPiAtICAgICJwdXNoICUlZWF4ICAgICAgICAgIFxuXHQiDQo+ID4gPiAtICAgICJtb3ZxICUl bW00LCAgKCUlZXNwKVxuXHQiDQo+ID4gPiAtICAgICJwb3AgICUlZWF4ICAgICAgICAgIFxuXHQi DQo+ID4gPiAtICAgICJwb3AgICUlZWR4ICAgICAgICAgIFxuXHQiDQo+ID4gPiAtICAgIDogIj1B IiAgKERhdGEpICAgICAgIC8vICUwDQo+ID4gPiAtICAgICk7DQo+ID4gPiAtDQo+ID4gPiAtICBy ZXR1cm4gRGF0YTsNCj4gPiA+IC19DQo+ID4gPiAtDQo+ID4gPiAtDQo+ID4gPiAtLyoqDQo+ID4g PiAtICBSZWFkcyB0aGUgY3VycmVudCB2YWx1ZSBvZiA2NC1iaXQgTU1YIFJlZ2lzdGVyICM1DQo+ ID4gKE1NNSkuDQo+ID4gPiAtDQo+ID4gPiAtICBSZWFkcyBhbmQgcmV0dXJucyB0aGUgY3VycmVu dCB2YWx1ZSBvZiBNTTUuIFRoaXMNCj4gPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZQ0KPiA+ ID4gLSAgb24gSUEtMzIgYW5kIFg2NC4NCj4gPiA+IC0NCj4gPiA+IC0gIEByZXR1cm4gVGhlIGN1 cnJlbnQgdmFsdWUgb2YgTU01Lg0KPiA+ID4gLQ0KPiA+ID4gLSoqLw0KPiA+ID4gLVVJTlQ2NA0K PiA+ID4gLUVGSUFQSQ0KPiA+ID4gLUFzbVJlYWRNbTUgKA0KPiA+ID4gLSAgVk9JRA0KPiA+ID4g LSAgKQ0KPiA+ID4gLXsNCj4gPiA+IC0gIFVJTlQ2NCAgRGF0YTsNCj4gPiA+IC0NCj4gPiA+IC0g IF9fYXNtX18gX192b2xhdGlsZV9fICgNCj4gPiA+IC0gICAgInB1c2ggJSVlYXggICAgICAgICAg XG5cdCINCj4gPiA+IC0gICAgInB1c2ggJSVlYXggICAgICAgICAgXG5cdCINCj4gPiA+IC0gICAg Im1vdnEgJSVtbTUsICAoJSVlc3ApXG5cdCINCj4gPiA+IC0gICAgInBvcCAgJSVlYXggICAgICAg ICAgXG5cdCINCj4gPiA+IC0gICAgInBvcCAgJSVlZHggICAgICAgICAgXG5cdCINCj4gPiA+IC0g ICAgOiAiPUEiICAoRGF0YSkgICAgICAgLy8gJTANCj4gPiA+IC0gICAgKTsNCj4gPiA+IC0NCj4g PiA+IC0gIHJldHVybiBEYXRhOw0KPiA+ID4gLX0NCj4gPiA+IC0NCj4gPiA+IC0NCj4gPiA+IC0v KioNCj4gPiA+IC0gIFJlYWRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIDY0LWJpdCBNTVggUmVnaXN0 ZXIgIzYNCj4gPiAoTU02KS4NCj4gPiA+IC0NCj4gPiA+IC0gIFJlYWRzIGFuZCByZXR1cm5zIHRo ZSBjdXJyZW50IHZhbHVlIG9mIE1NNi4gVGhpcw0KPiA+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxh YmxlDQo+ID4gPiAtICBvbiBJQS0zMiBhbmQgWDY0Lg0KPiA+ID4gLQ0KPiA+ID4gLSAgQHJldHVy biBUaGUgY3VycmVudCB2YWx1ZSBvZiBNTTYuDQo+ID4gPiAtDQo+ID4gPiAtKiovDQo+ID4gPiAt VUlOVDY0DQo+ID4gPiAtRUZJQVBJDQo+ID4gPiAtQXNtUmVhZE1tNiAoDQo+ID4gPiAtICBWT0lE DQo+ID4gPiAtICApDQo+ID4gPiAtew0KPiA+ID4gLSAgVUlOVDY0ICBEYXRhOw0KPiA+ID4gLQ0K PiA+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+ID4gLSAgICAicHVzaCAlJWVheCAg ICAgICAgICBcblx0Ig0KPiA+ID4gLSAgICAicHVzaCAlJWVheCAgICAgICAgICBcblx0Ig0KPiA+ ID4gLSAgICAibW92cSAlJW1tNiwgICglJWVzcClcblx0Ig0KPiA+ID4gLSAgICAicG9wICAlJWVh eCAgICAgICAgICBcblx0Ig0KPiA+ID4gLSAgICAicG9wICAlJWVkeCAgICAgICAgICBcblx0Ig0K PiA+ID4gLSAgICA6ICI9QSIgIChEYXRhKSAgICAgICAvLyAlMA0KPiA+ID4gLSAgICApOw0KPiA+ ID4gLQ0KPiA+ID4gLSAgcmV0dXJuIERhdGE7DQo+ID4gPiAtfQ0KPiA+ID4gLQ0KPiA+ID4gLQ0K PiA+ID4gLS8qKg0KPiA+ID4gLSAgUmVhZHMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgNjQtYml0IE1N WCBSZWdpc3RlciAjNw0KPiA+IChNTTcpLg0KPiA+ID4gLQ0KPiA+ID4gLSAgUmVhZHMgYW5kIHJl dHVybnMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgTU03LiBUaGlzDQo+ID4gZnVuY3Rpb24gaXMgb25s eSBhdmFpbGFibGUNCj4gPiA+IC0gIG9uIElBLTMyIGFuZCBYNjQuDQo+ID4gPiAtDQo+ID4gPiAt ICBAcmV0dXJuIFRoZSBjdXJyZW50IHZhbHVlIG9mIE1NNy4NCj4gPiA+IC0NCj4gPiA+IC0qKi8N Cj4gPiA+IC1VSU5UNjQNCj4gPiA+IC1FRklBUEkNCj4gPiA+IC1Bc21SZWFkTW03ICgNCj4gPiA+ IC0gIFZPSUQNCj4gPiA+IC0gICkNCj4gPiA+IC17DQo+ID4gPiAtICBVSU5UNjQgIERhdGE7DQo+ ID4gPiAtDQo+ID4gPiAtICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoDQo+ID4gPiAtICAgICJwdXNo ICUlZWF4ICAgICAgICAgIFxuXHQiDQo+ID4gPiAtICAgICJwdXNoICUlZWF4ICAgICAgICAgIFxu XHQiDQo+ID4gPiAtICAgICJtb3ZxICUlbW03LCAgKCUlZXNwKVxuXHQiDQo+ID4gPiAtICAgICJw b3AgICUlZWF4ICAgICAgICAgIFxuXHQiDQo+ID4gPiAtICAgICJwb3AgICUlZWR4ICAgICAgICAg IFxuXHQiDQo+ID4gPiAtICAgIDogIj1BIiAgKERhdGEpICAgICAgIC8vICUwDQo+ID4gPiAtICAg ICk7DQo+ID4gPiAtDQo+ID4gPiAtICByZXR1cm4gRGF0YTsNCj4gPiA+IC19DQo+ID4gPiAtDQo+ ID4gPiAtDQo+ID4gPiAtLyoqDQo+ID4gPiAtICBXcml0ZXMgdGhlIGN1cnJlbnQgdmFsdWUgb2Yg NjQtYml0IE1NWCBSZWdpc3Rlcg0KPiAjMA0KPiA+IChNTTApLg0KPiA+ID4gLQ0KPiA+ID4gLSAg V3JpdGVzIHRoZSBjdXJyZW50IHZhbHVlIG9mIE1NMC4gVGhpcyBmdW5jdGlvbiBpcw0KPiA+IG9u bHkgYXZhaWxhYmxlIG9uIElBMzIgYW5kDQo+ID4gPiAtICBYNjQuDQo+ID4gPiAtDQo+ID4gPiAt ICBAcGFyYW0gIFZhbHVlIFRoZSA2NC1iaXQgdmFsdWUgdG8gd3JpdGUgdG8gTU0wLg0KPiA+ID4g LQ0KPiA+ID4gLSoqLw0KPiA+ID4gLVZPSUQNCj4gPiA+IC1FRklBUEkNCj4gPiA+IC1Bc21Xcml0 ZU1tMCAoDQo+ID4gPiAtICBJTiAgICAgIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgVmFsdWUN Cj4gPiA+IC0gICkNCj4gPiA+IC17DQo+ID4gPiAtICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoDQo+ ID4gPiAtICAgICJtb3ZxICUwLCAlJW1tMCIgIC8vICUwDQo+ID4gPiAtICAgIDoNCj4gPiA+IC0g ICAgOiAibSIgKFZhbHVlKQ0KPiA+ID4gLSAgICApOw0KPiA+ID4gLX0NCj4gPiA+IC0NCj4gPiA+ IC0NCj4gPiA+IC0vKioNCj4gPiA+IC0gIFdyaXRlcyB0aGUgY3VycmVudCB2YWx1ZSBvZiA2NC1i aXQgTU1YIFJlZ2lzdGVyDQo+ICMxDQo+ID4gKE1NMSkuDQo+ID4gPiAtDQo+ID4gPiAtICBXcml0 ZXMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgTU0xLiBUaGlzIGZ1bmN0aW9uIGlzDQo+ID4gb25seSBh dmFpbGFibGUgb24gSUEzMiBhbmQNCj4gPiA+IC0gIFg2NC4NCj4gPiA+IC0NCj4gPiA+IC0gIEBw YXJhbSAgVmFsdWUgVGhlIDY0LWJpdCB2YWx1ZSB0byB3cml0ZSB0byBNTTEuDQo+ID4gPiAtDQo+ ID4gPiAtKiovDQo+ID4gPiAtVk9JRA0KPiA+ID4gLUVGSUFQSQ0KPiA+ID4gLUFzbVdyaXRlTW0x ICgNCj4gPiA+IC0gIElOICAgICAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICBWYWx1ZQ0KPiA+ ID4gLSAgKQ0KPiA+ID4gLXsNCj4gPiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgNCj4gPiA+ IC0gICAgIm1vdnEgJTAsICUlbW0xIiAgLy8gJTANCj4gPiA+IC0gICAgOg0KPiA+ID4gLSAgICA6 ICJtIiAoVmFsdWUpDQo+ID4gPiAtICAgICk7DQo+ID4gPiAtfQ0KPiA+ID4gLQ0KPiA+ID4gLQ0K PiA+ID4gLS8qKg0KPiA+ID4gLSAgV3JpdGVzIHRoZSBjdXJyZW50IHZhbHVlIG9mIDY0LWJpdCBN TVggUmVnaXN0ZXINCj4gIzINCj4gPiAoTU0yKS4NCj4gPiA+IC0NCj4gPiA+IC0gIFdyaXRlcyB0 aGUgY3VycmVudCB2YWx1ZSBvZiBNTTIuIFRoaXMgZnVuY3Rpb24gaXMNCj4gPiBvbmx5IGF2YWls YWJsZSBvbiBJQTMyIGFuZA0KPiA+ID4gLSAgWDY0Lg0KPiA+ID4gLQ0KPiA+ID4gLSAgQHBhcmFt ICBWYWx1ZSBUaGUgNjQtYml0IHZhbHVlIHRvIHdyaXRlIHRvIE1NMi4NCj4gPiA+IC0NCj4gPiA+ IC0qKi8NCj4gPiA+IC1WT0lEDQo+ID4gPiAtRUZJQVBJDQo+ID4gPiAtQXNtV3JpdGVNbTIgKA0K PiA+ID4gLSAgSU4gICAgICBVSU5UNjQgICAgICAgICAgICAgICAgICAgIFZhbHVlDQo+ID4gPiAt ICApDQo+ID4gPiAtew0KPiA+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+ID4gLSAg ICAibW92cSAlMCwgJSVtbTIiICAvLyAlMA0KPiA+ID4gLSAgICA6DQo+ID4gPiAtICAgIDogIm0i IChWYWx1ZSkNCj4gPiA+IC0gICAgKTsNCj4gPiA+IC19DQo+ID4gPiAtDQo+ID4gPiAtDQo+ID4g PiAtLyoqDQo+ID4gPiAtICBXcml0ZXMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgNjQtYml0IE1NWCBS ZWdpc3Rlcg0KPiAjMw0KPiA+IChNTTMpLg0KPiA+ID4gLQ0KPiA+ID4gLSAgV3JpdGVzIHRoZSBj dXJyZW50IHZhbHVlIG9mIE1NMy4gVGhpcyBmdW5jdGlvbiBpcw0KPiA+IG9ubHkgYXZhaWxhYmxl IG9uIElBMzIgYW5kDQo+ID4gPiAtICBYNjQuDQo+ID4gPiAtDQo+ID4gPiAtICBAcGFyYW0gIFZh bHVlIFRoZSA2NC1iaXQgdmFsdWUgdG8gd3JpdGUgdG8gTU0zLg0KPiA+ID4gLQ0KPiA+ID4gLSoq Lw0KPiA+ID4gLVZPSUQNCj4gPiA+IC1FRklBUEkNCj4gPiA+IC1Bc21Xcml0ZU1tMyAoDQo+ID4g PiAtICBJTiAgICAgIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgVmFsdWUNCj4gPiA+IC0gICkN Cj4gPiA+IC17DQo+ID4gPiAtICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoDQo+ID4gPiAtICAgICJt b3ZxICUwLCAlJW1tMyIgIC8vICUwDQo+ID4gPiAtICAgIDoNCj4gPiA+IC0gICAgOiAibSIgKFZh bHVlKQ0KPiA+ID4gLSAgICApOw0KPiA+ID4gLX0NCj4gPiA+IC0NCj4gPiA+IC0NCj4gPiA+IC0v KioNCj4gPiA+IC0gIFdyaXRlcyB0aGUgY3VycmVudCB2YWx1ZSBvZiA2NC1iaXQgTU1YIFJlZ2lz dGVyDQo+ICM0DQo+ID4gKE1NNCkuDQo+ID4gPiAtDQo+ID4gPiAtICBXcml0ZXMgdGhlIGN1cnJl bnQgdmFsdWUgb2YgTU00LiBUaGlzIGZ1bmN0aW9uIGlzDQo+ID4gb25seSBhdmFpbGFibGUgb24g SUEzMiBhbmQNCj4gPiA+IC0gIFg2NC4NCj4gPiA+IC0NCj4gPiA+IC0gIEBwYXJhbSAgVmFsdWUg VGhlIDY0LWJpdCB2YWx1ZSB0byB3cml0ZSB0byBNTTQuDQo+ID4gPiAtDQo+ID4gPiAtKiovDQo+ ID4gPiAtVk9JRA0KPiA+ID4gLUVGSUFQSQ0KPiA+ID4gLUFzbVdyaXRlTW00ICgNCj4gPiA+IC0g IElOICAgICAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICBWYWx1ZQ0KPiA+ID4gLSAgKQ0KPiA+ ID4gLXsNCj4gPiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgNCj4gPiA+IC0gICAgIm1vdnEg JTAsICUlbW00IiAgLy8gJTANCj4gPiA+IC0gICAgOg0KPiA+ID4gLSAgICA6ICJtIiAoVmFsdWUp DQo+ID4gPiAtICAgICk7DQo+ID4gPiAtfQ0KPiA+ID4gLQ0KPiA+ID4gLQ0KPiA+ID4gLS8qKg0K PiA+ID4gLSAgV3JpdGVzIHRoZSBjdXJyZW50IHZhbHVlIG9mIDY0LWJpdCBNTVggUmVnaXN0ZXIN Cj4gIzUNCj4gPiAoTU01KS4NCj4gPiA+IC0NCj4gPiA+IC0gIFdyaXRlcyB0aGUgY3VycmVudCB2 YWx1ZSBvZiBNTTUuIFRoaXMgZnVuY3Rpb24gaXMNCj4gPiBvbmx5IGF2YWlsYWJsZSBvbiBJQTMy IGFuZA0KPiA+ID4gLSAgWDY0Lg0KPiA+ID4gLQ0KPiA+ID4gLSAgQHBhcmFtICBWYWx1ZSBUaGUg NjQtYml0IHZhbHVlIHRvIHdyaXRlIHRvIE1NNS4NCj4gPiA+IC0NCj4gPiA+IC0qKi8NCj4gPiA+ IC1WT0lEDQo+ID4gPiAtRUZJQVBJDQo+ID4gPiAtQXNtV3JpdGVNbTUgKA0KPiA+ID4gLSAgSU4g ICAgICBVSU5UNjQgICAgICAgICAgICAgICAgICAgIFZhbHVlDQo+ID4gPiAtICApDQo+ID4gPiAt ew0KPiA+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+ID4gLSAgICAibW92cSAlMCwg JSVtbTUiICAvLyAlMA0KPiA+ID4gLSAgICA6DQo+ID4gPiAtICAgIDogIm0iIChWYWx1ZSkNCj4g PiA+IC0gICAgKTsNCj4gPiA+IC19DQo+ID4gPiAtDQo+ID4gPiAtDQo+ID4gPiAtLyoqDQo+ID4g PiAtICBXcml0ZXMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgNjQtYml0IE1NWCBSZWdpc3Rlcg0KPiAj Ng0KPiA+IChNTTYpLg0KPiA+ID4gLQ0KPiA+ID4gLSAgV3JpdGVzIHRoZSBjdXJyZW50IHZhbHVl IG9mIE1NNi4gVGhpcyBmdW5jdGlvbiBpcw0KPiA+IG9ubHkgYXZhaWxhYmxlIG9uIElBMzIgYW5k DQo+ID4gPiAtICBYNjQuDQo+ID4gPiAtDQo+ID4gPiAtICBAcGFyYW0gIFZhbHVlIFRoZSA2NC1i aXQgdmFsdWUgdG8gd3JpdGUgdG8gTU02Lg0KPiA+ID4gLQ0KPiA+ID4gLSoqLw0KPiA+ID4gLVZP SUQNCj4gPiA+IC1FRklBUEkNCj4gPiA+IC1Bc21Xcml0ZU1tNiAoDQo+ID4gPiAtICBJTiAgICAg IFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgVmFsdWUNCj4gPiA+IC0gICkNCj4gPiA+IC17DQo+ ID4gPiAtICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoDQo+ID4gPiAtICAgICJtb3ZxICUwLCAlJW1t NiIgIC8vICUwDQo+ID4gPiAtICAgIDoNCj4gPiA+IC0gICAgOiAibSIgKFZhbHVlKQ0KPiA+ID4g LSAgICApOw0KPiA+ID4gLX0NCj4gPiA+IC0NCj4gPiA+IC0NCj4gPiA+IC0vKioNCj4gPiA+IC0g IFdyaXRlcyB0aGUgY3VycmVudCB2YWx1ZSBvZiA2NC1iaXQgTU1YIFJlZ2lzdGVyDQo+ICM3DQo+ ID4gKE1NNykuDQo+ID4gPiAtDQo+ID4gPiAtICBXcml0ZXMgdGhlIGN1cnJlbnQgdmFsdWUgb2Yg TU03LiBUaGlzIGZ1bmN0aW9uIGlzDQo+ID4gb25seSBhdmFpbGFibGUgb24gSUEzMiBhbmQNCj4g PiA+IC0gIFg2NC4NCj4gPiA+IC0NCj4gPiA+IC0gIEBwYXJhbSAgVmFsdWUgVGhlIDY0LWJpdCB2 YWx1ZSB0byB3cml0ZSB0byBNTTcuDQo+ID4gPiAtDQo+ID4gPiAtKiovDQo+ID4gPiAtVk9JRA0K PiA+ID4gLUVGSUFQSQ0KPiA+ID4gLUFzbVdyaXRlTW03ICgNCj4gPiA+IC0gIElOICAgICAgVUlO VDY0ICAgICAgICAgICAgICAgICAgICBWYWx1ZQ0KPiA+ID4gLSAgKQ0KPiA+ID4gLXsNCj4gPiA+ IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgNCj4gPiA+IC0gICAgIm1vdnEgJTAsICUlbW03IiAg Ly8gJTANCj4gPiA+IC0gICAgOg0KPiA+ID4gLSAgICA6ICJtIiAoVmFsdWUpDQo+ID4gPiAtICAg ICk7DQo+ID4gPiAtfQ0KPiA+ID4gLQ0KPiA+ID4gLQ0KPiA+ID4gLS8qKg0KPiA+ID4gLSAgUmVh ZHMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgVGltZSBTdGFtcCBDb3VudGVyDQo+ID4gKFRTQykuDQo+ ID4gPiAtDQo+ID4gPiAtICBSZWFkcyBhbmQgcmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiBU U0MuIFRoaXMNCj4gPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZQ0KPiA+ID4gLSAgb24gSUEt MzIgYW5kIFg2NC4NCj4gPiA+IC0NCj4gPiA+IC0gIEByZXR1cm4gVGhlIGN1cnJlbnQgdmFsdWUg b2YgVFNDDQo+ID4gPiAtDQo+ID4gPiAtKiovDQo+ID4gPiAtVUlOVDY0DQo+ID4gPiAtRUZJQVBJ DQo+ID4gPiAtQXNtUmVhZFRzYyAoDQo+ID4gPiAtICBWT0lEDQo+ID4gPiAtICApDQo+ID4gPiAt ew0KPiA+ID4gLSAgVUlOVDY0ICBEYXRhOw0KPiA+ID4gLQ0KPiA+ID4gLSAgX19hc21fXyBfX3Zv bGF0aWxlX18gKA0KPiA+ID4gLSAgICAicmR0c2MiDQo+ID4gPiAtICAgIDogIj1BIiAoRGF0YSkN Cj4gPiA+IC0gICAgKTsNCj4gPiA+IC0NCj4gPiA+IC0gIHJldHVybiBEYXRhOw0KPiA+ID4gLX0N Cj4gPiA+IC0NCj4gPiA+IC0NCj4gPiA+ICAvKioNCj4gPiA+ICAgIFJlYWRzIHRoZSBjdXJyZW50 IHZhbHVlIG9mIGEgUGVyZm9ybWFuY2UgQ291bnRlcg0KPiA+IChQTUMpLg0KPiA+ID4NCj4gPiA+ IEBAIC0xNjgwLDkgKzEwOTEsNiBAQCBBc21SZWFkUG1jICgNCj4gPiA+ICAgIHJldHVybiBEYXRh Ow0KPiA+ID4gIH0NCj4gPiA+DQo+ID4gPiAtDQo+ID4gPiAtDQo+ID4gPiAtDQo+ID4gPiAgLyoq DQo+ID4gPiAgICBFeGVjdXRlcyBhIFdCSU5WRCBpbnN0cnVjdGlvbi4NCj4gPiA+DQo+ID4gPiBA QCAtMTY5OSw3ICsxMTA3LDYgQEAgQXNtV2JpbnZkICgNCj4gPiA+ICAgIF9fYXNtX18gX192b2xh dGlsZV9fICgid2JpbnZkIjo6OiJtZW1vcnkiKTsNCj4gPiA+ICB9DQo+ID4gPg0KPiA+ID4gLQ0K PiA+ID4gIC8qKg0KPiA+ID4gICAgRXhlY3V0ZXMgYSBJTlZEIGluc3RydWN0aW9uLg0KPiA+ID4N Cj4gPiA+IEBAIC0xNzYxLDUgKzExNjgsMyBAQCBBc21GbHVzaENhY2hlTGluZSAoDQo+ID4gPg0K PiA+ID4gICAgcmV0dXJuIExpbmVhckFkZHJlc3M7DQo+ID4gPiAgfQ0KPiA+ID4gLQ0KPiA+ID4g LQ0KPiA+ID4gZGlmZiAtLWdpdCBhL01kZVBrZy9MaWJyYXJ5L0Jhc2VMaWIvWDY0L0djY0lubGlu ZS5jDQo+ID4gYi9NZGVQa2cvTGlicmFyeS9CYXNlTGliL1g2NC9HY2NJbmxpbmUuYw0KPiA+ID4g aW5kZXggMTU0Y2UxZjU3ZS4uNDBhMjA4ZjE5OCAxMDA2NDQNCj4gPiA+IC0tLSBhL01kZVBrZy9M aWJyYXJ5L0Jhc2VMaWIvWDY0L0djY0lubGluZS5jDQo+ID4gPiArKysgYi9NZGVQa2cvTGlicmFy eS9CYXNlTGliL1g2NC9HY2NJbmxpbmUuYw0KPiA+ID4gQEAgLTEsNyArMSw3IEBADQo+ID4gPiAg LyoqIEBmaWxlDQo+ID4gPiAgICBHQ0MgaW5saW5lIGltcGxlbWVudGF0aW9uIG9mIEJhc2VMaWIg cHJvY2Vzc29yDQo+ID4gc3BlY2lmaWMgZnVuY3Rpb25zLg0KPiA+ID4NCj4gPiA+IC0gIENvcHly aWdodCAoYykgMjAwNiAtIDIwMTgsIEludGVsIENvcnBvcmF0aW9uLiBBbGwNCj4gPiByaWdodHMg cmVzZXJ2ZWQuPEJSPg0KPiA+ID4gKyAgQ29weXJpZ2h0IChjKSAyMDA2IC0gMjAyMCwgSW50ZWwg Q29ycG9yYXRpb24uIEFsbA0KPiA+IHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4gPiAgICBQb3J0 aW9ucyBjb3B5cmlnaHQgKGMpIDIwMDggLSAyMDA5LCBBcHBsZSBJbmMuDQo+IEFsbA0KPiA+IHJp Z2h0cyByZXNlcnZlZC48QlI+DQo+ID4gPiAgICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNE LTItQ2xhdXNlLVBhdGVudA0KPiA+ID4NCj4gPiA+IEBAIC0zMyw0MCArMzMsNiBAQCBNZW1vcnlG ZW5jZSAoDQo+ID4gPiAgfQ0KPiA+ID4NCj4gPiA+DQo+ID4gPiAtLyoqDQo+ID4gPiAtICBFbmFi bGVzIENQVSBpbnRlcnJ1cHRzLg0KPiA+ID4gLQ0KPiA+ID4gLSAgRW5hYmxlcyBDUFUgaW50ZXJy dXB0cy4NCj4gPiA+IC0NCj4gPiA+IC0qKi8NCj4gPiA+IC1WT0lEDQo+ID4gPiAtRUZJQVBJDQo+ ID4gPiAtRW5hYmxlSW50ZXJydXB0cyAoDQo+ID4gPiAtICBWT0lEDQo+ID4gPiAtICApDQo+ID4g PiAtew0KPiA+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJzdGkiOjo6ICJtZW1vcnkiKTsN Cj4gPiA+IC19DQo+ID4gPiAtDQo+ID4gPiAtDQo+ID4gPiAtLyoqDQo+ID4gPiAtICBEaXNhYmxl cyBDUFUgaW50ZXJydXB0cy4NCj4gPiA+IC0NCj4gPiA+IC0gIERpc2FibGVzIENQVSBpbnRlcnJ1 cHRzLg0KPiA+ID4gLQ0KPiA+ID4gLSoqLw0KPiA+ID4gLVZPSUQNCj4gPiA+IC1FRklBUEkNCj4g PiA+IC1EaXNhYmxlSW50ZXJydXB0cyAoDQo+ID4gPiAtICBWT0lEDQo+ID4gPiAtICApDQo+ID4g PiAtew0KPiA+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJjbGkiOjo6ICJtZW1vcnkiKTsN Cj4gPiA+IC19DQo+ID4gPiAtDQo+ID4gPiAtDQo+ID4gPiAtDQo+ID4gPiAtDQo+ID4gPiAgLyoq DQo+ID4gPiAgICBSZXF1ZXN0cyBDUFUgdG8gcGF1c2UgZm9yIGEgc2hvcnQgcGVyaW9kIG9mIHRp bWUuDQo+ID4gPg0KPiA+ID4gQEAgLTEwMSw4MyArNjcsNiBAQCBDcHVCcmVha3BvaW50ICgNCj4g PiA+ICB9DQo+ID4gPg0KPiA+ID4NCj4gPiA+IC0NCj4gPiA+IC0vKioNCj4gPiA+IC0gIFJldHVy bnMgYSA2NC1iaXQgTWFjaGluZSBTcGVjaWZpYyBSZWdpc3RlcihNU1IpLg0KPiA+ID4gLQ0KPiA+ ID4gLSAgUmVhZHMgYW5kIHJldHVybnMgdGhlIDY0LWJpdCBNU1Igc3BlY2lmaWVkIGJ5DQo+ID4g SW5kZXguIE5vIHBhcmFtZXRlciBjaGVja2luZyBpcw0KPiA+ID4gLSAgcGVyZm9ybWVkIG9uIElu ZGV4LCBhbmQgc29tZSBJbmRleCB2YWx1ZXMgbWF5DQo+IGNhdXNlDQo+ID4gQ1BVIGV4Y2VwdGlv bnMuIFRoZQ0KPiA+ID4gLSAgY2FsbGVyIG11c3QgZWl0aGVyIGd1YXJhbnRlZSB0aGF0IEluZGV4 IGlzIHZhbGlkLA0KPiA+IG9yIHRoZSBjYWxsZXIgbXVzdCBzZXQgdXANCj4gPiA+IC0gIGV4Y2Vw dGlvbiBoYW5kbGVycyB0byBjYXRjaCB0aGUgZXhjZXB0aW9ucy4gVGhpcw0KPiA+IGZ1bmN0aW9u IGlzIG9ubHkgYXZhaWxhYmxlDQo+ID4gPiAtICBvbiBJQS0zMiBhbmQgWDY0Lg0KPiA+ID4gLQ0K PiA+ID4gLSAgQHBhcmFtICBJbmRleCBUaGUgMzItYml0IE1TUiBpbmRleCB0byByZWFkLg0KPiA+ ID4gLQ0KPiA+ID4gLSAgQHJldHVybiBUaGUgdmFsdWUgb2YgdGhlIE1TUiBpZGVudGlmaWVkIGJ5 IEluZGV4Lg0KPiA+ID4gLQ0KPiA+ID4gLSoqLw0KPiA+ID4gLVVJTlQ2NA0KPiA+ID4gLUVGSUFQ SQ0KPiA+ID4gLUFzbVJlYWRNc3I2NCAoDQo+ID4gPiAtICBJTiAgICAgIFVJTlQzMiAgICAgICAg ICAgICAgICAgICAgSW5kZXgNCj4gPiA+IC0gICkNCj4gPiA+IC17DQo+ID4gPiAtICBVSU5UMzIg TG93RGF0YTsNCj4gPiA+IC0gIFVJTlQzMiBIaWdoRGF0YTsNCj4gPiA+IC0NCj4gPiA+IC0gIF9f YXNtX18gX192b2xhdGlsZV9fICgNCj4gPiA+IC0gICAgInJkbXNyIg0KPiA+ID4gLSAgICA6ICI9 YSIgKExvd0RhdGEpLCAgIC8vICUwDQo+ID4gPiAtICAgICAgIj1kIiAoSGlnaERhdGEpICAgLy8g JTENCj4gPiA+IC0gICAgOiAiYyIgIChJbmRleCkgICAgICAvLyAlMg0KPiA+ID4gLSAgICApOw0K PiA+ID4gLQ0KPiA+ID4gLSAgcmV0dXJuICgoKFVJTlQ2NClIaWdoRGF0YSkgPDwgMzIpIHwgTG93 RGF0YTsNCj4gPiA+IC19DQo+ID4gPiAtDQo+ID4gPiAtLyoqDQo+ID4gPiAtICBXcml0ZXMgYSA2 NC1iaXQgdmFsdWUgdG8gYSBNYWNoaW5lIFNwZWNpZmljDQo+ID4gUmVnaXN0ZXIoTVNSKSwgYW5k IHJldHVybnMgdGhlDQo+ID4gPiAtICB2YWx1ZS4NCj4gPiA+IC0NCj4gPiA+IC0gIFdyaXRlcyB0 aGUgNjQtYml0IHZhbHVlIHNwZWNpZmllZCBieSBWYWx1ZSB0byB0aGUNCj4gPiBNU1Igc3BlY2lm aWVkIGJ5IEluZGV4LiBUaGUNCj4gPiA+IC0gIDY0LWJpdCB2YWx1ZSB3cml0dGVuIHRvIHRoZSBN U1IgaXMgcmV0dXJuZWQuIE5vDQo+ID4gcGFyYW1ldGVyIGNoZWNraW5nIGlzDQo+ID4gPiAtICBw ZXJmb3JtZWQgb24gSW5kZXggb3IgVmFsdWUsIGFuZCBzb21lIG9mIHRoZXNlDQo+IG1heQ0KPiA+ IGNhdXNlIENQVSBleGNlcHRpb25zLiBUaGUNCj4gPiA+IC0gIGNhbGxlciBtdXN0IGVpdGhlciBn dWFyYW50ZWUgdGhhdCBJbmRleCBhbmQgVmFsdWUNCj4gPiBhcmUgdmFsaWQsIG9yIHRoZSBjYWxs ZXINCj4gPiA+IC0gIG11c3QgZXN0YWJsaXNoIHByb3BlciBleGNlcHRpb24gaGFuZGxlcnMuIFRo aXMNCj4gPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBvbg0KPiA+ID4gLSAgSUEtMzIgYW5k IFg2NC4NCj4gPiA+IC0NCj4gPiA+IC0gIEBwYXJhbSAgSW5kZXggVGhlIDMyLWJpdCBNU1IgaW5k ZXggdG8gd3JpdGUuDQo+ID4gPiAtICBAcGFyYW0gIFZhbHVlIFRoZSA2NC1iaXQgdmFsdWUgdG8g d3JpdGUgdG8gdGhlDQo+IE1TUi4NCj4gPiA+IC0NCj4gPiA+IC0gIEByZXR1cm4gVmFsdWUNCj4g PiA+IC0NCj4gPiA+IC0qKi8NCj4gPiA+IC1VSU5UNjQNCj4gPiA+IC1FRklBUEkNCj4gPiA+IC1B c21Xcml0ZU1zcjY0ICgNCj4gPiA+IC0gIElOICAgICAgVUlOVDMyICAgICAgICAgICAgICAgICAg ICBJbmRleCwNCj4gPiA+IC0gIElOICAgICAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICBWYWx1 ZQ0KPiA+ID4gLSAgKQ0KPiA+ID4gLXsNCj4gPiA+IC0gIFVJTlQzMiBMb3dEYXRhOw0KPiA+ID4g LSAgVUlOVDMyIEhpZ2hEYXRhOw0KPiA+ID4gLQ0KPiA+ID4gLSAgTG93RGF0YSAgPSAoVUlOVDMy KShWYWx1ZSk7DQo+ID4gPiAtICBIaWdoRGF0YSA9IChVSU5UMzIpKFZhbHVlID4+IDMyKTsNCj4g PiA+IC0NCj4gPiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgNCj4gPiA+IC0gICAgIndybXNy Ig0KPiA+ID4gLSAgICA6DQo+ID4gPiAtICAgIDogImMiIChJbmRleCksDQo+ID4gPiAtICAgICAg ImEiIChMb3dEYXRhKSwNCj4gPiA+IC0gICAgICAiZCIgKEhpZ2hEYXRhKQ0KPiA+ID4gLSAgICAp Ow0KPiA+ID4gLQ0KPiA+ID4gLSAgcmV0dXJuIFZhbHVlOw0KPiA+ID4gLX0NCj4gPiA+IC0NCj4g PiA+IC0NCj4gPiA+IC0NCj4gPiA+ICAvKioNCj4gPiA+ICAgIFJlYWRzIHRoZSBjdXJyZW50IHZh bHVlIG9mIHRoZSBFRkxBR1MgcmVnaXN0ZXIuDQo+ID4gPg0KPiA+ID4gQEAgLTIwNSw5NjUgKzk0 LDYgQEAgQXNtUmVhZEVmbGFncyAoDQo+ID4gPiAgICByZXR1cm4gRWZsYWdzOw0KPiA+ID4gIH0N Cj4gPiA+DQo+ID4gPiAtDQo+ID4gPiAtDQo+ID4gPiAtLyoqDQo+ID4gPiAtICBSZWFkcyB0aGUg Y3VycmVudCB2YWx1ZSBvZiB0aGUgQ29udHJvbCBSZWdpc3RlciAwDQo+ID4gKENSMCkuDQo+ID4g PiAtDQo+ID4gPiAtICBSZWFkcyBhbmQgcmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiBDUjAu IFRoaXMNCj4gPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZQ0KPiA+ID4gLSAgb24gSUEtMzIg YW5kIFg2NC4gVGhpcyByZXR1cm5zIGEgMzItYml0IHZhbHVlIG9uDQo+ID4gSUEtMzIgYW5kIGEg NjQtYml0IHZhbHVlIG9uDQo+ID4gPiAtICBYNjQuDQo+ID4gPiAtDQo+ID4gPiAtICBAcmV0dXJu IFRoZSB2YWx1ZSBvZiB0aGUgQ29udHJvbCBSZWdpc3RlciAwDQo+IChDUjApLg0KPiA+ID4gLQ0K PiA+ID4gLSoqLw0KPiA+ID4gLVVJTlRODQo+ID4gPiAtRUZJQVBJDQo+ID4gPiAtQXNtUmVhZENy MCAoDQo+ID4gPiAtICBWT0lEDQo+ID4gPiAtICApDQo+ID4gPiAtew0KPiA+ID4gLSAgVUlOVE4g ICBEYXRhOw0KPiA+ID4gLQ0KPiA+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+ID4g LSAgICAibW92ICAlJWNyMCwlMCINCj4gPiA+IC0gICAgOiAiPXIiIChEYXRhKSAgICAgICAgICAg Ly8gJTANCj4gPiA+IC0gICAgKTsNCj4gPiA+IC0NCj4gPiA+IC0gIHJldHVybiBEYXRhOw0KPiA+ ID4gLX0NCj4gPiA+IC0NCj4gPiA+IC0NCj4gPiA+IC0vKioNCj4gPiA+IC0gIFJlYWRzIHRoZSBj dXJyZW50IHZhbHVlIG9mIHRoZSBDb250cm9sIFJlZ2lzdGVyIDINCj4gPiAoQ1IyKS4NCj4gPiA+ IC0NCj4gPiA+IC0gIFJlYWRzIGFuZCByZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVlIG9mIENSMi4g VGhpcw0KPiA+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlDQo+ID4gPiAtICBvbiBJQS0zMiBh bmQgWDY0LiBUaGlzIHJldHVybnMgYSAzMi1iaXQgdmFsdWUgb24NCj4gPiBJQS0zMiBhbmQgYSA2 NC1iaXQgdmFsdWUgb24NCj4gPiA+IC0gIFg2NC4NCj4gPiA+IC0NCj4gPiA+IC0gIEByZXR1cm4g VGhlIHZhbHVlIG9mIHRoZSBDb250cm9sIFJlZ2lzdGVyIDINCj4gKENSMikuDQo+ID4gPiAtDQo+ ID4gPiAtKiovDQo+ID4gPiAtVUlOVE4NCj4gPiA+IC1FRklBUEkNCj4gPiA+IC1Bc21SZWFkQ3Iy ICgNCj4gPiA+IC0gIFZPSUQNCj4gPiA+IC0gICkNCj4gPiA+IC17DQo+ID4gPiAtICBVSU5UTiBE YXRhOw0KPiA+ID4gLQ0KPiA+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+ID4gLSAg ICAibW92ICAlJWNyMiwgICUwIg0KPiA+ID4gLSAgICA6ICI9ciIgKERhdGEpICAgICAgICAgICAv LyAlMA0KPiA+ID4gLSAgICApOw0KPiA+ID4gLQ0KPiA+ID4gLSAgcmV0dXJuIERhdGE7DQo+ID4g PiAtfQ0KPiA+ID4gLQ0KPiA+ID4gLS8qKg0KPiA+ID4gLSAgUmVhZHMgdGhlIGN1cnJlbnQgdmFs dWUgb2YgdGhlIENvbnRyb2wgUmVnaXN0ZXIgMw0KPiA+IChDUjMpLg0KPiA+ID4gLQ0KPiA+ID4g LSAgUmVhZHMgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgQ1IzLiBUaGlzDQo+ID4g ZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUNCj4gPiA+IC0gIG9uIElBLTMyIGFuZCBYNjQuIFRo aXMgcmV0dXJucyBhIDMyLWJpdCB2YWx1ZSBvbg0KPiA+IElBLTMyIGFuZCBhIDY0LWJpdCB2YWx1 ZSBvbg0KPiA+ID4gLSAgWDY0Lg0KPiA+ID4gLQ0KPiA+ID4gLSAgQHJldHVybiBUaGUgdmFsdWUg b2YgdGhlIENvbnRyb2wgUmVnaXN0ZXIgMw0KPiAoQ1IzKS4NCj4gPiA+IC0NCj4gPiA+IC0qKi8N Cj4gPiA+IC1VSU5UTg0KPiA+ID4gLUVGSUFQSQ0KPiA+ID4gLUFzbVJlYWRDcjMgKA0KPiA+ID4g LSAgVk9JRA0KPiA+ID4gLSAgKQ0KPiA+ID4gLXsNCj4gPiA+IC0gIFVJTlROIERhdGE7DQo+ID4g PiAtDQo+ID4gPiAtICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoDQo+ID4gPiAtICAgICJtb3YgICUl Y3IzLCAgJTAiDQo+ID4gPiAtICAgIDogIj1yIiAoRGF0YSkgICAgICAgICAgIC8vICUwDQo+ID4g PiAtICAgICk7DQo+ID4gPiAtDQo+ID4gPiAtICByZXR1cm4gRGF0YTsNCj4gPiA+IC19DQo+ID4g PiAtDQo+ID4gPiAtDQo+ID4gPiAtLyoqDQo+ID4gPiAtICBSZWFkcyB0aGUgY3VycmVudCB2YWx1 ZSBvZiB0aGUgQ29udHJvbCBSZWdpc3RlciA0DQo+ID4gKENSNCkuDQo+ID4gPiAtDQo+ID4gPiAt ICBSZWFkcyBhbmQgcmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiBDUjQuIFRoaXMNCj4gPiBm dW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZQ0KPiA+ID4gLSAgb24gSUEtMzIgYW5kIFg2NC4gVGhp cyByZXR1cm5zIGEgMzItYml0IHZhbHVlIG9uDQo+ID4gSUEtMzIgYW5kIGEgNjQtYml0IHZhbHVl IG9uDQo+ID4gPiAtICBYNjQuDQo+ID4gPiAtDQo+ID4gPiAtICBAcmV0dXJuIFRoZSB2YWx1ZSBv ZiB0aGUgQ29udHJvbCBSZWdpc3RlciA0DQo+IChDUjQpLg0KPiA+ID4gLQ0KPiA+ID4gLSoqLw0K PiA+ID4gLVVJTlRODQo+ID4gPiAtRUZJQVBJDQo+ID4gPiAtQXNtUmVhZENyNCAoDQo+ID4gPiAt ICBWT0lEDQo+ID4gPiAtICApDQo+ID4gPiAtew0KPiA+ID4gLSAgVUlOVE4gRGF0YTsNCj4gPiA+ IC0NCj4gPiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgNCj4gPiA+IC0gICAgIm1vdiAgJSVj cjQsICAlMCINCj4gPiA+IC0gICAgOiAiPXIiIChEYXRhKSAgICAgICAgICAgLy8gJTANCj4gPiA+ IC0gICAgKTsNCj4gPiA+IC0NCj4gPiA+IC0gIHJldHVybiBEYXRhOw0KPiA+ID4gLX0NCj4gPiA+ IC0NCj4gPiA+IC0NCj4gPiA+IC0vKioNCj4gPiA+IC0gIFdyaXRlcyBhIHZhbHVlIHRvIENvbnRy b2wgUmVnaXN0ZXIgMCAoQ1IwKS4NCj4gPiA+IC0NCj4gPiA+IC0gIFdyaXRlcyBhbmQgcmV0dXJu cyBhIG5ldyB2YWx1ZSB0byBDUjAuIFRoaXMNCj4gPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJs ZSBvbg0KPiA+ID4gLSAgSUEtMzIgYW5kIFg2NC4gVGhpcyB3cml0ZXMgYSAzMi1iaXQgdmFsdWUg b24gSUEtDQo+IDMyDQo+ID4gYW5kIGEgNjQtYml0IHZhbHVlIG9uIFg2NC4NCj4gPiA+IC0NCj4g PiA+IC0gIEBwYXJhbSAgQ3IwIFRoZSB2YWx1ZSB0byB3cml0ZSB0byBDUjAuDQo+ID4gPiAtDQo+ ID4gPiAtICBAcmV0dXJuIFRoZSB2YWx1ZSB3cml0dGVuIHRvIENSMC4NCj4gPiA+IC0NCj4gPiA+ IC0qKi8NCj4gPiA+IC1VSU5UTg0KPiA+ID4gLUVGSUFQSQ0KPiA+ID4gLUFzbVdyaXRlQ3IwICgN Cj4gPiA+IC0gIFVJTlROICBDcjANCj4gPiA+IC0gICkNCj4gPiA+IC17DQo+ID4gPiAtICBfX2Fz bV9fIF9fdm9sYXRpbGVfXyAoDQo+ID4gPiAtICAgICJtb3YgICUwLCAlJWNyMCINCj4gPiA+IC0g ICAgOg0KPiA+ID4gLSAgICA6ICJyIiAoQ3IwKQ0KPiA+ID4gLSAgICApOw0KPiA+ID4gLSAgcmV0 dXJuIENyMDsNCj4gPiA+IC19DQo+ID4gPiAtDQo+ID4gPiAtDQo+ID4gPiAtLyoqDQo+ID4gPiAt ICBXcml0ZXMgYSB2YWx1ZSB0byBDb250cm9sIFJlZ2lzdGVyIDIgKENSMikuDQo+ID4gPiAtDQo+ ID4gPiAtICBXcml0ZXMgYW5kIHJldHVybnMgYSBuZXcgdmFsdWUgdG8gQ1IyLiBUaGlzDQo+ID4g ZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgb24NCj4gPiA+IC0gIElBLTMyIGFuZCBYNjQuIFRo aXMgd3JpdGVzIGEgMzItYml0IHZhbHVlIG9uIElBLQ0KPiAzMg0KPiA+IGFuZCBhIDY0LWJpdCB2 YWx1ZSBvbiBYNjQuDQo+ID4gPiAtDQo+ID4gPiAtICBAcGFyYW0gIENyMiBUaGUgdmFsdWUgdG8g d3JpdGUgdG8gQ1IyLg0KPiA+ID4gLQ0KPiA+ID4gLSAgQHJldHVybiBUaGUgdmFsdWUgd3JpdHRl biB0byBDUjIuDQo+ID4gPiAtDQo+ID4gPiAtKiovDQo+ID4gPiAtVUlOVE4NCj4gPiA+IC1FRklB UEkNCj4gPiA+IC1Bc21Xcml0ZUNyMiAoDQo+ID4gPiAtICBVSU5UTiAgQ3IyDQo+ID4gPiAtICAp DQo+ID4gPiAtew0KPiA+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+ID4gLSAgICAi bW92ICAlMCwgJSVjcjIiDQo+ID4gPiAtICAgIDoNCj4gPiA+IC0gICAgOiAiciIgKENyMikNCj4g PiA+IC0gICAgKTsNCj4gPiA+IC0gIHJldHVybiBDcjI7DQo+ID4gPiAtfQ0KPiA+ID4gLQ0KPiA+ ID4gLQ0KPiA+ID4gLS8qKg0KPiA+ID4gLSAgV3JpdGVzIGEgdmFsdWUgdG8gQ29udHJvbCBSZWdp c3RlciAzIChDUjMpLg0KPiA+ID4gLQ0KPiA+ID4gLSAgV3JpdGVzIGFuZCByZXR1cm5zIGEgbmV3 IHZhbHVlIHRvIENSMy4gVGhpcw0KPiA+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIG9uDQo+ ID4gPiAtICBJQS0zMiBhbmQgWDY0LiBUaGlzIHdyaXRlcyBhIDMyLWJpdCB2YWx1ZSBvbiBJQS0N Cj4gMzINCj4gPiBhbmQgYSA2NC1iaXQgdmFsdWUgb24gWDY0Lg0KPiA+ID4gLQ0KPiA+ID4gLSAg QHBhcmFtICBDcjMgVGhlIHZhbHVlIHRvIHdyaXRlIHRvIENSMy4NCj4gPiA+IC0NCj4gPiA+IC0g IEByZXR1cm4gVGhlIHZhbHVlIHdyaXR0ZW4gdG8gQ1IzLg0KPiA+ID4gLQ0KPiA+ID4gLSoqLw0K PiA+ID4gLVVJTlRODQo+ID4gPiAtRUZJQVBJDQo+ID4gPiAtQXNtV3JpdGVDcjMgKA0KPiA+ID4g LSAgVUlOVE4gIENyMw0KPiA+ID4gLSAgKQ0KPiA+ID4gLXsNCj4gPiA+IC0gIF9fYXNtX18gX192 b2xhdGlsZV9fICgNCj4gPiA+IC0gICAgIm1vdiAgJTAsICUlY3IzIg0KPiA+ID4gLSAgICA6DQo+ ID4gPiAtICAgIDogInIiIChDcjMpDQo+ID4gPiAtICAgICk7DQo+ID4gPiAtICByZXR1cm4gQ3Iz Ow0KPiA+ID4gLX0NCj4gPiA+IC0NCj4gPiA+IC0NCj4gPiA+IC0vKioNCj4gPiA+IC0gIFdyaXRl cyBhIHZhbHVlIHRvIENvbnRyb2wgUmVnaXN0ZXIgNCAoQ1I0KS4NCj4gPiA+IC0NCj4gPiA+IC0g IFdyaXRlcyBhbmQgcmV0dXJucyBhIG5ldyB2YWx1ZSB0byBDUjQuIFRoaXMNCj4gPiBmdW5jdGlv biBpcyBvbmx5IGF2YWlsYWJsZSBvbg0KPiA+ID4gLSAgSUEtMzIgYW5kIFg2NC4gVGhpcyB3cml0 ZXMgYSAzMi1iaXQgdmFsdWUgb24gSUEtDQo+IDMyDQo+ID4gYW5kIGEgNjQtYml0IHZhbHVlIG9u IFg2NC4NCj4gPiA+IC0NCj4gPiA+IC0gIEBwYXJhbSAgQ3I0IFRoZSB2YWx1ZSB0byB3cml0ZSB0 byBDUjQuDQo+ID4gPiAtDQo+ID4gPiAtICBAcmV0dXJuIFRoZSB2YWx1ZSB3cml0dGVuIHRvIENS NC4NCj4gPiA+IC0NCj4gPiA+IC0qKi8NCj4gPiA+IC1VSU5UTg0KPiA+ID4gLUVGSUFQSQ0KPiA+ ID4gLUFzbVdyaXRlQ3I0ICgNCj4gPiA+IC0gIFVJTlROICBDcjQNCj4gPiA+IC0gICkNCj4gPiA+ IC17DQo+ID4gPiAtICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoDQo+ID4gPiAtICAgICJtb3YgICUw LCAlJWNyNCINCj4gPiA+IC0gICAgOg0KPiA+ID4gLSAgICA6ICJyIiAoQ3I0KQ0KPiA+ID4gLSAg ICApOw0KPiA+ID4gLSAgcmV0dXJuIENyNDsNCj4gPiA+IC19DQo+ID4gPiAtDQo+ID4gPiAtDQo+ ID4gPiAtLyoqDQo+ID4gPiAtICBSZWFkcyB0aGUgY3VycmVudCB2YWx1ZSBvZiBEZWJ1ZyBSZWdp c3RlciAwDQo+IChEUjApLg0KPiA+ID4gLQ0KPiA+ID4gLSAgUmVhZHMgYW5kIHJldHVybnMgdGhl IGN1cnJlbnQgdmFsdWUgb2YgRFIwLiBUaGlzDQo+ID4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFi bGUNCj4gPiA+IC0gIG9uIElBLTMyIGFuZCBYNjQuIFRoaXMgcmV0dXJucyBhIDMyLWJpdCB2YWx1 ZSBvbg0KPiA+IElBLTMyIGFuZCBhIDY0LWJpdCB2YWx1ZSBvbg0KPiA+ID4gLSAgWDY0Lg0KPiA+ ID4gLQ0KPiA+ID4gLSAgQHJldHVybiBUaGUgdmFsdWUgb2YgRGVidWcgUmVnaXN0ZXIgMCAoRFIw KS4NCj4gPiA+IC0NCj4gPiA+IC0qKi8NCj4gPiA+IC1VSU5UTg0KPiA+ID4gLUVGSUFQSQ0KPiA+ ID4gLUFzbVJlYWREcjAgKA0KPiA+ID4gLSAgVk9JRA0KPiA+ID4gLSAgKQ0KPiA+ID4gLXsNCj4g PiA+IC0gIFVJTlROIERhdGE7DQo+ID4gPiAtDQo+ID4gPiAtICBfX2FzbV9fIF9fdm9sYXRpbGVf XyAoDQo+ID4gPiAtICAgICJtb3YgICUlZHIwLCAlMCINCj4gPiA+IC0gICAgOiAiPXIiIChEYXRh KQ0KPiA+ID4gLSAgICApOw0KPiA+ID4gLQ0KPiA+ID4gLSAgcmV0dXJuIERhdGE7DQo+ID4gPiAt fQ0KPiA+ID4gLQ0KPiA+ID4gLQ0KPiA+ID4gLS8qKg0KPiA+ID4gLSAgUmVhZHMgdGhlIGN1cnJl bnQgdmFsdWUgb2YgRGVidWcgUmVnaXN0ZXIgMQ0KPiAoRFIxKS4NCj4gPiA+IC0NCj4gPiA+IC0g IFJlYWRzIGFuZCByZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVlIG9mIERSMS4gVGhpcw0KPiA+IGZ1 bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlDQo+ID4gPiAtICBvbiBJQS0zMiBhbmQgWDY0LiBUaGlz IHJldHVybnMgYSAzMi1iaXQgdmFsdWUgb24NCj4gPiBJQS0zMiBhbmQgYSA2NC1iaXQgdmFsdWUg b24NCj4gPiA+IC0gIFg2NC4NCj4gPiA+IC0NCj4gPiA+IC0gIEByZXR1cm4gVGhlIHZhbHVlIG9m IERlYnVnIFJlZ2lzdGVyIDEgKERSMSkuDQo+ID4gPiAtDQo+ID4gPiAtKiovDQo+ID4gPiAtVUlO VE4NCj4gPiA+IC1FRklBUEkNCj4gPiA+IC1Bc21SZWFkRHIxICgNCj4gPiA+IC0gIFZPSUQNCj4g PiA+IC0gICkNCj4gPiA+IC17DQo+ID4gPiAtICBVSU5UTiBEYXRhOw0KPiA+ID4gLQ0KPiA+ID4g LSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+ID4gLSAgICAibW92ICAlJWRyMSwgJTAiDQo+ ID4gPiAtICAgIDogIj1yIiAoRGF0YSkNCj4gPiA+IC0gICAgKTsNCj4gPiA+IC0NCj4gPiA+IC0g IHJldHVybiBEYXRhOw0KPiA+ID4gLX0NCj4gPiA+IC0NCj4gPiA+IC0NCj4gPiA+IC0vKioNCj4g PiA+IC0gIFJlYWRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIERlYnVnIFJlZ2lzdGVyIDINCj4gKERS MikuDQo+ID4gPiAtDQo+ID4gPiAtICBSZWFkcyBhbmQgcmV0dXJucyB0aGUgY3VycmVudCB2YWx1 ZSBvZiBEUjIuIFRoaXMNCj4gPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZQ0KPiA+ID4gLSAg b24gSUEtMzIgYW5kIFg2NC4gVGhpcyByZXR1cm5zIGEgMzItYml0IHZhbHVlIG9uDQo+ID4gSUEt MzIgYW5kIGEgNjQtYml0IHZhbHVlIG9uDQo+ID4gPiAtICBYNjQuDQo+ID4gPiAtDQo+ID4gPiAt ICBAcmV0dXJuIFRoZSB2YWx1ZSBvZiBEZWJ1ZyBSZWdpc3RlciAyIChEUjIpLg0KPiA+ID4gLQ0K PiA+ID4gLSoqLw0KPiA+ID4gLVVJTlRODQo+ID4gPiAtRUZJQVBJDQo+ID4gPiAtQXNtUmVhZERy MiAoDQo+ID4gPiAtICBWT0lEDQo+ID4gPiAtICApDQo+ID4gPiAtew0KPiA+ID4gLSAgVUlOVE4g RGF0YTsNCj4gPiA+IC0NCj4gPiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgNCj4gPiA+IC0g ICAgIm1vdiAgJSVkcjIsICUwIg0KPiA+ID4gLSAgICA6ICI9ciIgKERhdGEpDQo+ID4gPiAtICAg ICk7DQo+ID4gPiAtDQo+ID4gPiAtICByZXR1cm4gRGF0YTsNCj4gPiA+IC19DQo+ID4gPiAtDQo+ ID4gPiAtDQo+ID4gPiAtLyoqDQo+ID4gPiAtICBSZWFkcyB0aGUgY3VycmVudCB2YWx1ZSBvZiBE ZWJ1ZyBSZWdpc3RlciAzDQo+IChEUjMpLg0KPiA+ID4gLQ0KPiA+ID4gLSAgUmVhZHMgYW5kIHJl dHVybnMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgRFIzLiBUaGlzDQo+ID4gZnVuY3Rpb24gaXMgb25s eSBhdmFpbGFibGUNCj4gPiA+IC0gIG9uIElBLTMyIGFuZCBYNjQuIFRoaXMgcmV0dXJucyBhIDMy LWJpdCB2YWx1ZSBvbg0KPiA+IElBLTMyIGFuZCBhIDY0LWJpdCB2YWx1ZSBvbg0KPiA+ID4gLSAg WDY0Lg0KPiA+ID4gLQ0KPiA+ID4gLSAgQHJldHVybiBUaGUgdmFsdWUgb2YgRGVidWcgUmVnaXN0 ZXIgMyAoRFIzKS4NCj4gPiA+IC0NCj4gPiA+IC0qKi8NCj4gPiA+IC1VSU5UTg0KPiA+ID4gLUVG SUFQSQ0KPiA+ID4gLUFzbVJlYWREcjMgKA0KPiA+ID4gLSAgVk9JRA0KPiA+ID4gLSAgKQ0KPiA+ ID4gLXsNCj4gPiA+IC0gIFVJTlROIERhdGE7DQo+ID4gPiAtDQo+ID4gPiAtICBfX2FzbV9fIF9f dm9sYXRpbGVfXyAoDQo+ID4gPiAtICAgICJtb3YgICUlZHIzLCAlMCINCj4gPiA+IC0gICAgOiAi PXIiIChEYXRhKQ0KPiA+ID4gLSAgICApOw0KPiA+ID4gLQ0KPiA+ID4gLSAgcmV0dXJuIERhdGE7 DQo+ID4gPiAtfQ0KPiA+ID4gLQ0KPiA+ID4gLQ0KPiA+ID4gLS8qKg0KPiA+ID4gLSAgUmVhZHMg dGhlIGN1cnJlbnQgdmFsdWUgb2YgRGVidWcgUmVnaXN0ZXIgNA0KPiAoRFI0KS4NCj4gPiA+IC0N Cj4gPiA+IC0gIFJlYWRzIGFuZCByZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVlIG9mIERSNC4gVGhp cw0KPiA+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlDQo+ID4gPiAtICBvbiBJQS0zMiBhbmQg WDY0LiBUaGlzIHJldHVybnMgYSAzMi1iaXQgdmFsdWUgb24NCj4gPiBJQS0zMiBhbmQgYSA2NC1i aXQgdmFsdWUgb24NCj4gPiA+IC0gIFg2NC4NCj4gPiA+IC0NCj4gPiA+IC0gIEByZXR1cm4gVGhl IHZhbHVlIG9mIERlYnVnIFJlZ2lzdGVyIDQgKERSNCkuDQo+ID4gPiAtDQo+ID4gPiAtKiovDQo+ ID4gPiAtVUlOVE4NCj4gPiA+IC1FRklBUEkNCj4gPiA+IC1Bc21SZWFkRHI0ICgNCj4gPiA+IC0g IFZPSUQNCj4gPiA+IC0gICkNCj4gPiA+IC17DQo+ID4gPiAtICBVSU5UTiBEYXRhOw0KPiA+ID4g LQ0KPiA+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+ID4gLSAgICAibW92ICAlJWRy NCwgJTAiDQo+ID4gPiAtICAgIDogIj1yIiAoRGF0YSkNCj4gPiA+IC0gICAgKTsNCj4gPiA+IC0N Cj4gPiA+IC0gIHJldHVybiBEYXRhOw0KPiA+ID4gLX0NCj4gPiA+IC0NCj4gPiA+IC0NCj4gPiA+ IC0vKioNCj4gPiA+IC0gIFJlYWRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIERlYnVnIFJlZ2lzdGVy IDUNCj4gKERSNSkuDQo+ID4gPiAtDQo+ID4gPiAtICBSZWFkcyBhbmQgcmV0dXJucyB0aGUgY3Vy cmVudCB2YWx1ZSBvZiBEUjUuIFRoaXMNCj4gPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZQ0K PiA+ID4gLSAgb24gSUEtMzIgYW5kIFg2NC4gVGhpcyByZXR1cm5zIGEgMzItYml0IHZhbHVlIG9u DQo+ID4gSUEtMzIgYW5kIGEgNjQtYml0IHZhbHVlIG9uDQo+ID4gPiAtICBYNjQuDQo+ID4gPiAt DQo+ID4gPiAtICBAcmV0dXJuIFRoZSB2YWx1ZSBvZiBEZWJ1ZyBSZWdpc3RlciA1IChEUjUpLg0K PiA+ID4gLQ0KPiA+ID4gLSoqLw0KPiA+ID4gLVVJTlRODQo+ID4gPiAtRUZJQVBJDQo+ID4gPiAt QXNtUmVhZERyNSAoDQo+ID4gPiAtICBWT0lEDQo+ID4gPiAtICApDQo+ID4gPiAtew0KPiA+ID4g LSAgVUlOVE4gRGF0YTsNCj4gPiA+IC0NCj4gPiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgN Cj4gPiA+IC0gICAgIm1vdiAgJSVkcjUsICUwIg0KPiA+ID4gLSAgICA6ICI9ciIgKERhdGEpDQo+ ID4gPiAtICAgICk7DQo+ID4gPiAtDQo+ID4gPiAtICByZXR1cm4gRGF0YTsNCj4gPiA+IC19DQo+ ID4gPiAtDQo+ID4gPiAtDQo+ID4gPiAtLyoqDQo+ID4gPiAtICBSZWFkcyB0aGUgY3VycmVudCB2 YWx1ZSBvZiBEZWJ1ZyBSZWdpc3RlciA2DQo+IChEUjYpLg0KPiA+ID4gLQ0KPiA+ID4gLSAgUmVh ZHMgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgRFI2LiBUaGlzDQo+ID4gZnVuY3Rp b24gaXMgb25seSBhdmFpbGFibGUNCj4gPiA+IC0gIG9uIElBLTMyIGFuZCBYNjQuIFRoaXMgcmV0 dXJucyBhIDMyLWJpdCB2YWx1ZSBvbg0KPiA+IElBLTMyIGFuZCBhIDY0LWJpdCB2YWx1ZSBvbg0K PiA+ID4gLSAgWDY0Lg0KPiA+ID4gLQ0KPiA+ID4gLSAgQHJldHVybiBUaGUgdmFsdWUgb2YgRGVi dWcgUmVnaXN0ZXIgNiAoRFI2KS4NCj4gPiA+IC0NCj4gPiA+IC0qKi8NCj4gPiA+IC1VSU5UTg0K PiA+ID4gLUVGSUFQSQ0KPiA+ID4gLUFzbVJlYWREcjYgKA0KPiA+ID4gLSAgVk9JRA0KPiA+ID4g LSAgKQ0KPiA+ID4gLXsNCj4gPiA+IC0gIFVJTlROIERhdGE7DQo+ID4gPiAtDQo+ID4gPiAtICBf X2FzbV9fIF9fdm9sYXRpbGVfXyAoDQo+ID4gPiAtICAgICJtb3YgICUlZHI2LCAlMCINCj4gPiA+ IC0gICAgOiAiPXIiIChEYXRhKQ0KPiA+ID4gLSAgICApOw0KPiA+ID4gLQ0KPiA+ID4gLSAgcmV0 dXJuIERhdGE7DQo+ID4gPiAtfQ0KPiA+ID4gLQ0KPiA+ID4gLQ0KPiA+ID4gLS8qKg0KPiA+ID4g LSAgUmVhZHMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgRGVidWcgUmVnaXN0ZXIgNw0KPiAoRFI3KS4N Cj4gPiA+IC0NCj4gPiA+IC0gIFJlYWRzIGFuZCByZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVlIG9m IERSNy4gVGhpcw0KPiA+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlDQo+ID4gPiAtICBvbiBJ QS0zMiBhbmQgWDY0LiBUaGlzIHJldHVybnMgYSAzMi1iaXQgdmFsdWUgb24NCj4gPiBJQS0zMiBh bmQgYSA2NC1iaXQgdmFsdWUgb24NCj4gPiA+IC0gIFg2NC4NCj4gPiA+IC0NCj4gPiA+IC0gIEBy ZXR1cm4gVGhlIHZhbHVlIG9mIERlYnVnIFJlZ2lzdGVyIDcgKERSNykuDQo+ID4gPiAtDQo+ID4g PiAtKiovDQo+ID4gPiAtVUlOVE4NCj4gPiA+IC1FRklBUEkNCj4gPiA+IC1Bc21SZWFkRHI3ICgN Cj4gPiA+IC0gIFZPSUQNCj4gPiA+IC0gICkNCj4gPiA+IC17DQo+ID4gPiAtICBVSU5UTiBEYXRh Ow0KPiA+ID4gLQ0KPiA+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+ID4gLSAgICAi bW92ICAlJWRyNywgJTAiDQo+ID4gPiAtICAgIDogIj1yIiAoRGF0YSkNCj4gPiA+IC0gICAgKTsN Cj4gPiA+IC0NCj4gPiA+IC0gIHJldHVybiBEYXRhOw0KPiA+ID4gLX0NCj4gPiA+IC0NCj4gPiA+ IC0NCj4gPiA+IC0vKioNCj4gPiA+IC0gIFdyaXRlcyBhIHZhbHVlIHRvIERlYnVnIFJlZ2lzdGVy IDAgKERSMCkuDQo+ID4gPiAtDQo+ID4gPiAtICBXcml0ZXMgYW5kIHJldHVybnMgYSBuZXcgdmFs dWUgdG8gRFIwLiBUaGlzDQo+ID4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgb24NCj4gPiA+ IC0gIElBLTMyIGFuZCBYNjQuIFRoaXMgd3JpdGVzIGEgMzItYml0IHZhbHVlIG9uIElBLQ0KPiAz Mg0KPiA+IGFuZCBhIDY0LWJpdCB2YWx1ZSBvbiBYNjQuDQo+ID4gPiAtDQo+ID4gPiAtICBAcGFy YW0gIERyMCBUaGUgdmFsdWUgdG8gd3JpdGUgdG8gRHIwLg0KPiA+ID4gLQ0KPiA+ID4gLSAgQHJl dHVybiBUaGUgdmFsdWUgd3JpdHRlbiB0byBEZWJ1ZyBSZWdpc3RlciAwDQo+ID4gKERSMCkuDQo+ ID4gPiAtDQo+ID4gPiAtKiovDQo+ID4gPiAtVUlOVE4NCj4gPiA+IC1FRklBUEkNCj4gPiA+IC1B c21Xcml0ZURyMCAoDQo+ID4gPiAtICBVSU5UTiAgRHIwDQo+ID4gPiAtICApDQo+ID4gPiAtew0K PiA+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+ID4gLSAgICAibW92ICAlMCwgJSVk cjAiDQo+ID4gPiAtICAgIDoNCj4gPiA+IC0gICAgOiAiciIgKERyMCkNCj4gPiA+IC0gICAgKTsN Cj4gPiA+IC0gIHJldHVybiBEcjA7DQo+ID4gPiAtfQ0KPiA+ID4gLQ0KPiA+ID4gLQ0KPiA+ID4g LS8qKg0KPiA+ID4gLSAgV3JpdGVzIGEgdmFsdWUgdG8gRGVidWcgUmVnaXN0ZXIgMSAoRFIxKS4N Cj4gPiA+IC0NCj4gPiA+IC0gIFdyaXRlcyBhbmQgcmV0dXJucyBhIG5ldyB2YWx1ZSB0byBEUjEu IFRoaXMNCj4gPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBvbg0KPiA+ID4gLSAgSUEtMzIg YW5kIFg2NC4gVGhpcyB3cml0ZXMgYSAzMi1iaXQgdmFsdWUgb24gSUEtDQo+IDMyDQo+ID4gYW5k IGEgNjQtYml0IHZhbHVlIG9uIFg2NC4NCj4gPiA+IC0NCj4gPiA+IC0gIEBwYXJhbSAgRHIxIFRo ZSB2YWx1ZSB0byB3cml0ZSB0byBEcjEuDQo+ID4gPiAtDQo+ID4gPiAtICBAcmV0dXJuIFRoZSB2 YWx1ZSB3cml0dGVuIHRvIERlYnVnIFJlZ2lzdGVyIDENCj4gPiAoRFIxKS4NCj4gPiA+IC0NCj4g PiA+IC0qKi8NCj4gPiA+IC1VSU5UTg0KPiA+ID4gLUVGSUFQSQ0KPiA+ID4gLUFzbVdyaXRlRHIx ICgNCj4gPiA+IC0gIFVJTlROICBEcjENCj4gPiA+IC0gICkNCj4gPiA+IC17DQo+ID4gPiAtICBf X2FzbV9fIF9fdm9sYXRpbGVfXyAoDQo+ID4gPiAtICAgICJtb3YgICUwLCAlJWRyMSINCj4gPiA+ IC0gICAgOg0KPiA+ID4gLSAgICA6ICJyIiAoRHIxKQ0KPiA+ID4gLSAgICApOw0KPiA+ID4gLSAg cmV0dXJuIERyMTsNCj4gPiA+IC19DQo+ID4gPiAtDQo+ID4gPiAtDQo+ID4gPiAtLyoqDQo+ID4g PiAtICBXcml0ZXMgYSB2YWx1ZSB0byBEZWJ1ZyBSZWdpc3RlciAyIChEUjIpLg0KPiA+ID4gLQ0K PiA+ID4gLSAgV3JpdGVzIGFuZCByZXR1cm5zIGEgbmV3IHZhbHVlIHRvIERSMi4gVGhpcw0KPiA+ IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIG9uDQo+ID4gPiAtICBJQS0zMiBhbmQgWDY0LiBU aGlzIHdyaXRlcyBhIDMyLWJpdCB2YWx1ZSBvbiBJQS0NCj4gMzINCj4gPiBhbmQgYSA2NC1iaXQg dmFsdWUgb24gWDY0Lg0KPiA+ID4gLQ0KPiA+ID4gLSAgQHBhcmFtICBEcjIgVGhlIHZhbHVlIHRv IHdyaXRlIHRvIERyMi4NCj4gPiA+IC0NCj4gPiA+IC0gIEByZXR1cm4gVGhlIHZhbHVlIHdyaXR0 ZW4gdG8gRGVidWcgUmVnaXN0ZXIgMg0KPiA+IChEUjIpLg0KPiA+ID4gLQ0KPiA+ID4gLSoqLw0K PiA+ID4gLVVJTlRODQo+ID4gPiAtRUZJQVBJDQo+ID4gPiAtQXNtV3JpdGVEcjIgKA0KPiA+ID4g LSAgVUlOVE4gIERyMg0KPiA+ID4gLSAgKQ0KPiA+ID4gLXsNCj4gPiA+IC0gIF9fYXNtX18gX192 b2xhdGlsZV9fICgNCj4gPiA+IC0gICAgIm1vdiAgJTAsICUlZHIyIg0KPiA+ID4gLSAgICA6DQo+ ID4gPiAtICAgIDogInIiIChEcjIpDQo+ID4gPiAtICAgICk7DQo+ID4gPiAtICByZXR1cm4gRHIy Ow0KPiA+ID4gLX0NCj4gPiA+IC0NCj4gPiA+IC0NCj4gPiA+IC0vKioNCj4gPiA+IC0gIFdyaXRl cyBhIHZhbHVlIHRvIERlYnVnIFJlZ2lzdGVyIDMgKERSMykuDQo+ID4gPiAtDQo+ID4gPiAtICBX cml0ZXMgYW5kIHJldHVybnMgYSBuZXcgdmFsdWUgdG8gRFIzLiBUaGlzDQo+ID4gZnVuY3Rpb24g aXMgb25seSBhdmFpbGFibGUgb24NCj4gPiA+IC0gIElBLTMyIGFuZCBYNjQuIFRoaXMgd3JpdGVz IGEgMzItYml0IHZhbHVlIG9uIElBLQ0KPiAzMg0KPiA+IGFuZCBhIDY0LWJpdCB2YWx1ZSBvbiBY NjQuDQo+ID4gPiAtDQo+ID4gPiAtICBAcGFyYW0gIERyMyBUaGUgdmFsdWUgdG8gd3JpdGUgdG8g RHIzLg0KPiA+ID4gLQ0KPiA+ID4gLSAgQHJldHVybiBUaGUgdmFsdWUgd3JpdHRlbiB0byBEZWJ1 ZyBSZWdpc3RlciAzDQo+ID4gKERSMykuDQo+ID4gPiAtDQo+ID4gPiAtKiovDQo+ID4gPiAtVUlO VE4NCj4gPiA+IC1FRklBUEkNCj4gPiA+IC1Bc21Xcml0ZURyMyAoDQo+ID4gPiAtICBVSU5UTiAg RHIzDQo+ID4gPiAtICApDQo+ID4gPiAtew0KPiA+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18g KA0KPiA+ID4gLSAgICAibW92ICAlMCwgJSVkcjMiDQo+ID4gPiAtICAgIDoNCj4gPiA+IC0gICAg OiAiciIgKERyMykNCj4gPiA+IC0gICAgKTsNCj4gPiA+IC0gIHJldHVybiBEcjM7DQo+ID4gPiAt fQ0KPiA+ID4gLQ0KPiA+ID4gLQ0KPiA+ID4gLS8qKg0KPiA+ID4gLSAgV3JpdGVzIGEgdmFsdWUg dG8gRGVidWcgUmVnaXN0ZXIgNCAoRFI0KS4NCj4gPiA+IC0NCj4gPiA+IC0gIFdyaXRlcyBhbmQg cmV0dXJucyBhIG5ldyB2YWx1ZSB0byBEUjQuIFRoaXMNCj4gPiBmdW5jdGlvbiBpcyBvbmx5IGF2 YWlsYWJsZSBvbg0KPiA+ID4gLSAgSUEtMzIgYW5kIFg2NC4gVGhpcyB3cml0ZXMgYSAzMi1iaXQg dmFsdWUgb24gSUEtDQo+IDMyDQo+ID4gYW5kIGEgNjQtYml0IHZhbHVlIG9uIFg2NC4NCj4gPiA+ IC0NCj4gPiA+IC0gIEBwYXJhbSAgRHI0IFRoZSB2YWx1ZSB0byB3cml0ZSB0byBEcjQuDQo+ID4g PiAtDQo+ID4gPiAtICBAcmV0dXJuIFRoZSB2YWx1ZSB3cml0dGVuIHRvIERlYnVnIFJlZ2lzdGVy IDQNCj4gPiAoRFI0KS4NCj4gPiA+IC0NCj4gPiA+IC0qKi8NCj4gPiA+IC1VSU5UTg0KPiA+ID4g LUVGSUFQSQ0KPiA+ID4gLUFzbVdyaXRlRHI0ICgNCj4gPiA+IC0gIFVJTlROICBEcjQNCj4gPiA+ IC0gICkNCj4gPiA+IC17DQo+ID4gPiAtICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoDQo+ID4gPiAt ICAgICJtb3YgICUwLCAlJWRyNCINCj4gPiA+IC0gICAgOg0KPiA+ID4gLSAgICA6ICJyIiAoRHI0 KQ0KPiA+ID4gLSAgICApOw0KPiA+ID4gLSAgcmV0dXJuIERyNDsNCj4gPiA+IC19DQo+ID4gPiAt DQo+ID4gPiAtDQo+ID4gPiAtLyoqDQo+ID4gPiAtICBXcml0ZXMgYSB2YWx1ZSB0byBEZWJ1ZyBS ZWdpc3RlciA1IChEUjUpLg0KPiA+ID4gLQ0KPiA+ID4gLSAgV3JpdGVzIGFuZCByZXR1cm5zIGEg bmV3IHZhbHVlIHRvIERSNS4gVGhpcw0KPiA+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIG9u DQo+ID4gPiAtICBJQS0zMiBhbmQgWDY0LiBUaGlzIHdyaXRlcyBhIDMyLWJpdCB2YWx1ZSBvbiBJ QS0NCj4gMzINCj4gPiBhbmQgYSA2NC1iaXQgdmFsdWUgb24gWDY0Lg0KPiA+ID4gLQ0KPiA+ID4g LSAgQHBhcmFtICBEcjUgVGhlIHZhbHVlIHRvIHdyaXRlIHRvIERyNS4NCj4gPiA+IC0NCj4gPiA+ IC0gIEByZXR1cm4gVGhlIHZhbHVlIHdyaXR0ZW4gdG8gRGVidWcgUmVnaXN0ZXIgNQ0KPiA+IChE UjUpLg0KPiA+ID4gLQ0KPiA+ID4gLSoqLw0KPiA+ID4gLVVJTlRODQo+ID4gPiAtRUZJQVBJDQo+ ID4gPiAtQXNtV3JpdGVEcjUgKA0KPiA+ID4gLSAgVUlOVE4gIERyNQ0KPiA+ID4gLSAgKQ0KPiA+ ID4gLXsNCj4gPiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgNCj4gPiA+IC0gICAgIm1vdiAg JTAsICUlZHI1Ig0KPiA+ID4gLSAgICA6DQo+ID4gPiAtICAgIDogInIiIChEcjUpDQo+ID4gPiAt ICAgICk7DQo+ID4gPiAtICByZXR1cm4gRHI1Ow0KPiA+ID4gLX0NCj4gPiA+IC0NCj4gPiA+IC0N Cj4gPiA+IC0vKioNCj4gPiA+IC0gIFdyaXRlcyBhIHZhbHVlIHRvIERlYnVnIFJlZ2lzdGVyIDYg KERSNikuDQo+ID4gPiAtDQo+ID4gPiAtICBXcml0ZXMgYW5kIHJldHVybnMgYSBuZXcgdmFsdWUg dG8gRFI2LiBUaGlzDQo+ID4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgb24NCj4gPiA+IC0g IElBLTMyIGFuZCBYNjQuIFRoaXMgd3JpdGVzIGEgMzItYml0IHZhbHVlIG9uIElBLQ0KPiAzMg0K PiA+IGFuZCBhIDY0LWJpdCB2YWx1ZSBvbiBYNjQuDQo+ID4gPiAtDQo+ID4gPiAtICBAcGFyYW0g IERyNiBUaGUgdmFsdWUgdG8gd3JpdGUgdG8gRHI2Lg0KPiA+ID4gLQ0KPiA+ID4gLSAgQHJldHVy biBUaGUgdmFsdWUgd3JpdHRlbiB0byBEZWJ1ZyBSZWdpc3RlciA2DQo+ID4gKERSNikuDQo+ID4g PiAtDQo+ID4gPiAtKiovDQo+ID4gPiAtVUlOVE4NCj4gPiA+IC1FRklBUEkNCj4gPiA+IC1Bc21X cml0ZURyNiAoDQo+ID4gPiAtICBVSU5UTiAgRHI2DQo+ID4gPiAtICApDQo+ID4gPiAtew0KPiA+ ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+ID4gLSAgICAibW92ICAlMCwgJSVkcjYi DQo+ID4gPiAtICAgIDoNCj4gPiA+IC0gICAgOiAiciIgKERyNikNCj4gPiA+IC0gICAgKTsNCj4g PiA+IC0gIHJldHVybiBEcjY7DQo+ID4gPiAtfQ0KPiA+ID4gLQ0KPiA+ID4gLQ0KPiA+ID4gLS8q Kg0KPiA+ID4gLSAgV3JpdGVzIGEgdmFsdWUgdG8gRGVidWcgUmVnaXN0ZXIgNyAoRFI3KS4NCj4g PiA+IC0NCj4gPiA+IC0gIFdyaXRlcyBhbmQgcmV0dXJucyBhIG5ldyB2YWx1ZSB0byBEUjcuIFRo aXMNCj4gPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBvbg0KPiA+ID4gLSAgSUEtMzIgYW5k IFg2NC4gVGhpcyB3cml0ZXMgYSAzMi1iaXQgdmFsdWUgb24gSUEtDQo+IDMyDQo+ID4gYW5kIGEg NjQtYml0IHZhbHVlIG9uIFg2NC4NCj4gPiA+IC0NCj4gPiA+IC0gIEBwYXJhbSAgRHI3IFRoZSB2 YWx1ZSB0byB3cml0ZSB0byBEcjcuDQo+ID4gPiAtDQo+ID4gPiAtICBAcmV0dXJuIFRoZSB2YWx1 ZSB3cml0dGVuIHRvIERlYnVnIFJlZ2lzdGVyIDcNCj4gPiAoRFI3KS4NCj4gPiA+IC0NCj4gPiA+ IC0qKi8NCj4gPiA+IC1VSU5UTg0KPiA+ID4gLUVGSUFQSQ0KPiA+ID4gLUFzbVdyaXRlRHI3ICgN Cj4gPiA+IC0gIFVJTlROICBEcjcNCj4gPiA+IC0gICkNCj4gPiA+IC17DQo+ID4gPiAtICBfX2Fz bV9fIF9fdm9sYXRpbGVfXyAoDQo+ID4gPiAtICAgICJtb3YgICUwLCAlJWRyNyINCj4gPiA+IC0g ICAgOg0KPiA+ID4gLSAgICA6ICJyIiAoRHI3KQ0KPiA+ID4gLSAgICApOw0KPiA+ID4gLSAgcmV0 dXJuIERyNzsNCj4gPiA+IC19DQo+ID4gPiAtDQo+ID4gPiAtDQo+ID4gPiAtLyoqDQo+ID4gPiAt ICBSZWFkcyB0aGUgY3VycmVudCB2YWx1ZSBvZiBDb2RlIFNlZ21lbnQgUmVnaXN0ZXINCj4gPiAo Q1MpLg0KPiA+ID4gLQ0KPiA+ID4gLSAgUmVhZHMgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgdmFs dWUgb2YgQ1MuIFRoaXMNCj4gPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBvbg0KPiA+ID4g LSAgSUEtMzIgYW5kIFg2NC4NCj4gPiA+IC0NCj4gPiA+IC0gIEByZXR1cm4gVGhlIGN1cnJlbnQg dmFsdWUgb2YgQ1MuDQo+ID4gPiAtDQo+ID4gPiAtKiovDQo+ID4gPiAtVUlOVDE2DQo+ID4gPiAt RUZJQVBJDQo+ID4gPiAtQXNtUmVhZENzICgNCj4gPiA+IC0gIFZPSUQNCj4gPiA+IC0gICkNCj4g PiA+IC17DQo+ID4gPiAtICBVSU5UMTYgIERhdGE7DQo+ID4gPiAtDQo+ID4gPiAtICBfX2FzbV9f IF9fdm9sYXRpbGVfXyAoDQo+ID4gPiAtICAgICJtb3YgICAlJWNzLCAlMCINCj4gPiA+IC0gICAg OiI9YSIgKERhdGEpDQo+ID4gPiAtICAgICk7DQo+ID4gPiAtDQo+ID4gPiAtICByZXR1cm4gRGF0 YTsNCj4gPiA+IC19DQo+ID4gPiAtDQo+ID4gPiAtDQo+ID4gPiAtLyoqDQo+ID4gPiAtICBSZWFk cyB0aGUgY3VycmVudCB2YWx1ZSBvZiBEYXRhIFNlZ21lbnQgUmVnaXN0ZXINCj4gPiAoRFMpLg0K PiA+ID4gLQ0KPiA+ID4gLSAgUmVhZHMgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgdmFsdWUgb2Yg RFMuIFRoaXMNCj4gPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBvbg0KPiA+ID4gLSAgSUEt MzIgYW5kIFg2NC4NCj4gPiA+IC0NCj4gPiA+IC0gIEByZXR1cm4gVGhlIGN1cnJlbnQgdmFsdWUg b2YgRFMuDQo+ID4gPiAtDQo+ID4gPiAtKiovDQo+ID4gPiAtVUlOVDE2DQo+ID4gPiAtRUZJQVBJ DQo+ID4gPiAtQXNtUmVhZERzICgNCj4gPiA+IC0gIFZPSUQNCj4gPiA+IC0gICkNCj4gPiA+IC17 DQo+ID4gPiAtICBVSU5UMTYgIERhdGE7DQo+ID4gPiAtDQo+ID4gPiAtICBfX2FzbV9fIF9fdm9s YXRpbGVfXyAoDQo+ID4gPiAtICAgICJtb3YgICUlZHMsICUwIg0KPiA+ID4gLSAgICA6Ij1hIiAo RGF0YSkNCj4gPiA+IC0gICAgKTsNCj4gPiA+IC0NCj4gPiA+IC0gIHJldHVybiBEYXRhOw0KPiA+ ID4gLX0NCj4gPiA+IC0NCj4gPiA+IC0NCj4gPiA+IC0vKioNCj4gPiA+IC0gIFJlYWRzIHRoZSBj dXJyZW50IHZhbHVlIG9mIEV4dHJhIFNlZ21lbnQgUmVnaXN0ZXINCj4gPiAoRVMpLg0KPiA+ID4g LQ0KPiA+ID4gLSAgUmVhZHMgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgRVMuIFRo aXMNCj4gPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBvbg0KPiA+ID4gLSAgSUEtMzIgYW5k IFg2NC4NCj4gPiA+IC0NCj4gPiA+IC0gIEByZXR1cm4gVGhlIGN1cnJlbnQgdmFsdWUgb2YgRVMu DQo+ID4gPiAtDQo+ID4gPiAtKiovDQo+ID4gPiAtVUlOVDE2DQo+ID4gPiAtRUZJQVBJDQo+ID4g PiAtQXNtUmVhZEVzICgNCj4gPiA+IC0gIFZPSUQNCj4gPiA+IC0gICkNCj4gPiA+IC17DQo+ID4g PiAtICBVSU5UMTYgIERhdGE7DQo+ID4gPiAtDQo+ID4gPiAtICBfX2FzbV9fIF9fdm9sYXRpbGVf XyAoDQo+ID4gPiAtICAgICJtb3YgICUlZXMsICUwIg0KPiA+ID4gLSAgICA6Ij1hIiAoRGF0YSkN Cj4gPiA+IC0gICAgKTsNCj4gPiA+IC0NCj4gPiA+IC0gIHJldHVybiBEYXRhOw0KPiA+ID4gLX0N Cj4gPiA+IC0NCj4gPiA+IC0NCj4gPiA+IC0vKioNCj4gPiA+IC0gIFJlYWRzIHRoZSBjdXJyZW50 IHZhbHVlIG9mIEZTIERhdGEgU2VnbWVudA0KPiBSZWdpc3Rlcg0KPiA+IChGUykuDQo+ID4gPiAt DQo+ID4gPiAtICBSZWFkcyBhbmQgcmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiBGUy4gVGhp cw0KPiA+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIG9uDQo+ID4gPiAtICBJQS0zMiBhbmQg WDY0Lg0KPiA+ID4gLQ0KPiA+ID4gLSAgQHJldHVybiBUaGUgY3VycmVudCB2YWx1ZSBvZiBGUy4N Cj4gPiA+IC0NCj4gPiA+IC0qKi8NCj4gPiA+IC1VSU5UMTYNCj4gPiA+IC1FRklBUEkNCj4gPiA+ IC1Bc21SZWFkRnMgKA0KPiA+ID4gLSAgVk9JRA0KPiA+ID4gLSAgKQ0KPiA+ID4gLXsNCj4gPiA+ IC0gIFVJTlQxNiAgRGF0YTsNCj4gPiA+IC0NCj4gPiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9f ICgNCj4gPiA+IC0gICAgIm1vdiAgJSVmcywgJTAiDQo+ID4gPiAtICAgIDoiPWEiIChEYXRhKQ0K PiA+ID4gLSAgICApOw0KPiA+ID4gLQ0KPiA+ID4gLSAgcmV0dXJuIERhdGE7DQo+ID4gPiAtfQ0K PiA+ID4gLQ0KPiA+ID4gLQ0KPiA+ID4gLS8qKg0KPiA+ID4gLSAgUmVhZHMgdGhlIGN1cnJlbnQg dmFsdWUgb2YgR1MgRGF0YSBTZWdtZW50DQo+IFJlZ2lzdGVyDQo+ID4gKEdTKS4NCj4gPiA+IC0N Cj4gPiA+IC0gIFJlYWRzIGFuZCByZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVlIG9mIEdTLiBUaGlz DQo+ID4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgb24NCj4gPiA+IC0gIElBLTMyIGFuZCBY NjQuDQo+ID4gPiAtDQo+ID4gPiAtICBAcmV0dXJuIFRoZSBjdXJyZW50IHZhbHVlIG9mIEdTLg0K PiA+ID4gLQ0KPiA+ID4gLSoqLw0KPiA+ID4gLVVJTlQxNg0KPiA+ID4gLUVGSUFQSQ0KPiA+ID4g LUFzbVJlYWRHcyAoDQo+ID4gPiAtICBWT0lEDQo+ID4gPiAtICApDQo+ID4gPiAtew0KPiA+ID4g LSAgVUlOVDE2ICBEYXRhOw0KPiA+ID4gLQ0KPiA+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18g KA0KPiA+ID4gLSAgICAibW92ICAlJWdzLCAlMCINCj4gPiA+IC0gICAgOiI9YSIgKERhdGEpDQo+ ID4gPiAtICAgICk7DQo+ID4gPiAtDQo+ID4gPiAtICByZXR1cm4gRGF0YTsNCj4gPiA+IC19DQo+ ID4gPiAtDQo+ID4gPiAtDQo+ID4gPiAtLyoqDQo+ID4gPiAtICBSZWFkcyB0aGUgY3VycmVudCB2 YWx1ZSBvZiBTdGFjayBTZWdtZW50IFJlZ2lzdGVyDQo+ID4gKFNTKS4NCj4gPiA+IC0NCj4gPiA+ IC0gIFJlYWRzIGFuZCByZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVlIG9mIFNTLiBUaGlzDQo+ID4g ZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgb24NCj4gPiA+IC0gIElBLTMyIGFuZCBYNjQuDQo+ ID4gPiAtDQo+ID4gPiAtICBAcmV0dXJuIFRoZSBjdXJyZW50IHZhbHVlIG9mIFNTLg0KPiA+ID4g LQ0KPiA+ID4gLSoqLw0KPiA+ID4gLVVJTlQxNg0KPiA+ID4gLUVGSUFQSQ0KPiA+ID4gLUFzbVJl YWRTcyAoDQo+ID4gPiAtICBWT0lEDQo+ID4gPiAtICApDQo+ID4gPiAtew0KPiA+ID4gLSAgVUlO VDE2ICBEYXRhOw0KPiA+ID4gLQ0KPiA+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+ ID4gLSAgICAibW92ICAlJWRzLCAlMCINCj4gPiA+IC0gICAgOiI9YSIgKERhdGEpDQo+ID4gPiAt ICAgICk7DQo+ID4gPiAtDQo+ID4gPiAtICByZXR1cm4gRGF0YTsNCj4gPiA+IC19DQo+ID4gPiAt DQo+ID4gPiAtDQo+ID4gPiAtLyoqDQo+ID4gPiAtICBSZWFkcyB0aGUgY3VycmVudCB2YWx1ZSBv ZiBUYXNrIFJlZ2lzdGVyIChUUikuDQo+ID4gPiAtDQo+ID4gPiAtICBSZWFkcyBhbmQgcmV0dXJu cyB0aGUgY3VycmVudCB2YWx1ZSBvZiBUUi4gVGhpcw0KPiA+IGZ1bmN0aW9uIGlzIG9ubHkgYXZh aWxhYmxlIG9uDQo+ID4gPiAtICBJQS0zMiBhbmQgWDY0Lg0KPiA+ID4gLQ0KPiA+ID4gLSAgQHJl dHVybiBUaGUgY3VycmVudCB2YWx1ZSBvZiBUUi4NCj4gPiA+IC0NCj4gPiA+IC0qKi8NCj4gPiA+ IC1VSU5UMTYNCj4gPiA+IC1FRklBUEkNCj4gPiA+IC1Bc21SZWFkVHIgKA0KPiA+ID4gLSAgVk9J RA0KPiA+ID4gLSAgKQ0KPiA+ID4gLXsNCj4gPiA+IC0gIFVJTlQxNiAgRGF0YTsNCj4gPiA+IC0N Cj4gPiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgNCj4gPiA+IC0gICAgInN0ciAgJTAiDQo+ ID4gPiAtICAgIDogIj1yIiAoRGF0YSkNCj4gPiA+IC0gICAgKTsNCj4gPiA+IC0NCj4gPiA+IC0g IHJldHVybiBEYXRhOw0KPiA+ID4gLX0NCj4gPiA+IC0NCj4gPiA+IC0NCj4gPiA+IC0vKioNCj4g PiA+IC0gIFJlYWRzIHRoZSBjdXJyZW50IEdsb2JhbCBEZXNjcmlwdG9yIFRhYmxlDQo+ID4gUmVn aXN0ZXIoR0RUUikgZGVzY3JpcHRvci4NCj4gPiA+IC0NCj4gPiA+IC0gIFJlYWRzIGFuZCByZXR1 cm5zIHRoZSBjdXJyZW50IEdEVFIgZGVzY3JpcHRvciBhbmQNCj4gPiByZXR1cm5zIGl0IGluIEdk dHIuIFRoaXMNCj4gPiA+IC0gIGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIG9uIElBLTMyIGFu ZCBYNjQuDQo+ID4gPiAtDQo+ID4gPiAtICBAcGFyYW0gIEdkdHIgIFRoZSBwb2ludGVyIHRvIGEg R0RUUiBkZXNjcmlwdG9yLg0KPiA+ID4gLQ0KPiA+ID4gLSoqLw0KPiA+ID4gLVZPSUQNCj4gPiA+ IC1FRklBUEkNCj4gPiA+IC1JbnRlcm5hbFg4NlJlYWRHZHRyICgNCj4gPiA+IC0gIE9VVCAgICAg SUEzMl9ERVNDUklQVE9SICAgICAgICAgICAqR2R0cg0KPiA+ID4gLSAgKQ0KPiA+ID4gLXsNCj4g PiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgNCj4gPiA+IC0gICAgInNnZHQgJTAiDQo+ID4g PiAtICAgIDogIj1tIiAoKkdkdHIpDQo+ID4gPiAtICAgICk7DQo+ID4gPiAtfQ0KPiA+ID4gLQ0K PiA+ID4gLQ0KPiA+ID4gLS8qKg0KPiA+ID4gLSAgV3JpdGVzIHRoZSBjdXJyZW50IEdsb2JhbCBE ZXNjcmlwdG9yIFRhYmxlDQo+IFJlZ2lzdGVyDQo+ID4gKEdEVFIpIGRlc2NyaXB0b3IuDQo+ID4g PiAtDQo+ID4gPiAtICBXcml0ZXMgYW5kIHRoZSBjdXJyZW50IEdEVFIgZGVzY3JpcHRvciBzcGVj aWZpZWQNCj4gYnkNCj4gPiBHZHRyLiBUaGlzIGZ1bmN0aW9uIGlzDQo+ID4gPiAtICBvbmx5IGF2 YWlsYWJsZSBvbiBJQS0zMiBhbmQgWDY0Lg0KPiA+ID4gLQ0KPiA+ID4gLSAgQHBhcmFtICBHZHRy ICBUaGUgcG9pbnRlciB0byBhIEdEVFIgZGVzY3JpcHRvci4NCj4gPiA+IC0NCj4gPiA+IC0qKi8N Cj4gPiA+IC1WT0lEDQo+ID4gPiAtRUZJQVBJDQo+ID4gPiAtSW50ZXJuYWxYODZXcml0ZUdkdHIg KA0KPiA+ID4gLSAgSU4gICAgICBDT05TVCBJQTMyX0RFU0NSSVBUT1IgICAgICpHZHRyDQo+ID4g PiAtICApDQo+ID4gPiAtew0KPiA+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+ID4g LSAgICAibGdkdCAlMCINCj4gPiA+IC0gICAgOg0KPiA+ID4gLSAgICA6ICJtIiAoKkdkdHIpDQo+ ID4gPiAtICAgICk7DQo+ID4gPiAtDQo+ID4gPiAtfQ0KPiA+ID4gLQ0KPiA+ID4gLQ0KPiA+ID4g LS8qKg0KPiA+ID4gLSAgUmVhZHMgdGhlIGN1cnJlbnQgSW50ZXJydXB0IERlc2NyaXB0b3IgVGFi bGUNCj4gPiBSZWdpc3RlcihHRFRSKSBkZXNjcmlwdG9yLg0KPiA+ID4gLQ0KPiA+ID4gLSAgUmVh ZHMgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgSURUUiBkZXNjcmlwdG9yIGFuZA0KPiA+IHJldHVy bnMgaXQgaW4gSWR0ci4gVGhpcw0KPiA+ID4gLSAgZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUg b24gSUEtMzIgYW5kIFg2NC4NCj4gPiA+IC0NCj4gPiA+IC0gIEBwYXJhbSAgSWR0ciAgVGhlIHBv aW50ZXIgdG8gYSBJRFRSIGRlc2NyaXB0b3IuDQo+ID4gPiAtDQo+ID4gPiAtKiovDQo+ID4gPiAt Vk9JRA0KPiA+ID4gLUVGSUFQSQ0KPiA+ID4gLUludGVybmFsWDg2UmVhZElkdHIgKA0KPiA+ID4g LSAgT1VUICAgICBJQTMyX0RFU0NSSVBUT1IgICAgICAgICAgICpJZHRyDQo+ID4gPiAtICApDQo+ ID4gPiAtew0KPiA+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+ID4gLSAgICAic2lk dCAgJTAiDQo+ID4gPiAtICAgIDogIj1tIiAoKklkdHIpDQo+ID4gPiAtICAgICk7DQo+ID4gPiAt fQ0KPiA+ID4gLQ0KPiA+ID4gLQ0KPiA+ID4gLS8qKg0KPiA+ID4gLSAgV3JpdGVzIHRoZSBjdXJy ZW50IEludGVycnVwdCBEZXNjcmlwdG9yIFRhYmxlDQo+ID4gUmVnaXN0ZXIoR0RUUikgZGVzY3Jp cHRvci4NCj4gPiA+IC0NCj4gPiA+IC0gIFdyaXRlcyB0aGUgY3VycmVudCBJRFRSIGRlc2NyaXB0 b3IgYW5kIHJldHVybnMgaXQNCj4gPiBpbiBJZHRyLiBUaGlzIGZ1bmN0aW9uIGlzDQo+ID4gPiAt ICBvbmx5IGF2YWlsYWJsZSBvbiBJQS0zMiBhbmQgWDY0Lg0KPiA+ID4gLQ0KPiA+ID4gLSAgQHBh cmFtICBJZHRyICBUaGUgcG9pbnRlciB0byBhIElEVFIgZGVzY3JpcHRvci4NCj4gPiA+IC0NCj4g PiA+IC0qKi8NCj4gPiA+IC1WT0lEDQo+ID4gPiAtRUZJQVBJDQo+ID4gPiAtSW50ZXJuYWxYODZX cml0ZUlkdHIgKA0KPiA+ID4gLSAgSU4gICAgICBDT05TVCBJQTMyX0RFU0NSSVBUT1IgICAgICpJ ZHRyDQo+ID4gPiAtICApDQo+ID4gPiAtew0KPiA+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18g KA0KPiA+ID4gLSAgICAibGlkdCAlMCINCj4gPiA+IC0gICAgOg0KPiA+ID4gLSAgICA6ICJtIiAo KklkdHIpDQo+ID4gPiAtICAgICk7DQo+ID4gPiAtfQ0KPiA+ID4gLQ0KPiA+ID4gLQ0KPiA+ID4g LS8qKg0KPiA+ID4gLSAgUmVhZHMgdGhlIGN1cnJlbnQgTG9jYWwgRGVzY3JpcHRvciBUYWJsZQ0K PiA+IFJlZ2lzdGVyKExEVFIpIHNlbGVjdG9yLg0KPiA+ID4gLQ0KPiA+ID4gLSAgUmVhZHMgYW5k IHJldHVybnMgdGhlIGN1cnJlbnQgMTYtYml0IExEVFINCj4gPiBkZXNjcmlwdG9yIHZhbHVlLiBU aGlzIGZ1bmN0aW9uIGlzDQo+ID4gPiAtICBvbmx5IGF2YWlsYWJsZSBvbiBJQS0zMiBhbmQgWDY0 Lg0KPiA+ID4gLQ0KPiA+ID4gLSAgQHJldHVybiBUaGUgY3VycmVudCBzZWxlY3RvciBvZiBMRFQu DQo+ID4gPiAtDQo+ID4gPiAtKiovDQo+ID4gPiAtVUlOVDE2DQo+ID4gPiAtRUZJQVBJDQo+ID4g PiAtQXNtUmVhZExkdHIgKA0KPiA+ID4gLSAgVk9JRA0KPiA+ID4gLSAgKQ0KPiA+ID4gLXsNCj4g PiA+IC0gIFVJTlQxNiAgRGF0YTsNCj4gPiA+IC0NCj4gPiA+IC0gIF9fYXNtX18gX192b2xhdGls ZV9fICgNCj4gPiA+IC0gICAgInNsZHQgICUwIg0KPiA+ID4gLSAgICA6ICI9ZyIgKERhdGEpICAg Ly8gJTANCj4gPiA+IC0gICAgKTsNCj4gPiA+IC0NCj4gPiA+IC0gIHJldHVybiBEYXRhOw0KPiA+ ID4gLX0NCj4gPiA+IC0NCj4gPiA+IC0NCj4gPiA+IC0vKioNCj4gPiA+IC0gIFdyaXRlcyB0aGUg Y3VycmVudCBMb2NhbCBEZXNjcmlwdG9yIFRhYmxlDQo+IFJlZ2lzdGVyDQo+ID4gKEdEVFIpIHNl bGVjdG9yLg0KPiA+ID4gLQ0KPiA+ID4gLSAgV3JpdGVzIGFuZCB0aGUgY3VycmVudCBMRFRSIGRl c2NyaXB0b3Igc3BlY2lmaWVkDQo+IGJ5DQo+ID4gTGR0ci4gVGhpcyBmdW5jdGlvbiBpcw0KPiA+ ID4gLSAgb25seSBhdmFpbGFibGUgb24gSUEtMzIgYW5kIFg2NC4NCj4gPiA+IC0NCj4gPiA+IC0g IEBwYXJhbSAgTGR0ciAgMTYtYml0IExEVFIgc2VsZWN0b3IgdmFsdWUuDQo+ID4gPiAtDQo+ID4g PiAtKiovDQo+ID4gPiAtVk9JRA0KPiA+ID4gLUVGSUFQSQ0KPiA+ID4gLUFzbVdyaXRlTGR0ciAo DQo+ID4gPiAtICBJTiAgICAgIFVJTlQxNiAgICAgICAgICAgICAgICAgICAgTGR0cg0KPiA+ID4g LSAgKQ0KPiA+ID4gLXsNCj4gPiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgNCj4gPiA+IC0g ICAgImxsZHR3ICAlMCINCj4gPiA+IC0gICAgOg0KPiA+ID4gLSAgICA6ICJnIiAoTGR0cikgICAv LyAlMA0KPiA+ID4gLSAgICApOw0KPiA+ID4gLX0NCj4gPiA+IC0NCj4gPiA+IC0NCj4gPiA+ICAv KioNCj4gPiA+ICAgIFNhdmUgdGhlIGN1cnJlbnQgZmxvYXRpbmcgcG9pbnQvU1NFL1NTRTIgY29u dGV4dA0KPiB0bw0KPiA+IGEgYnVmZmVyLg0KPiA+ID4NCj4gPiA+IEBAIC0xNjMwLDE3MSArNTYw LDMgQEAgQXNtUmVhZFRzYyAoDQo+ID4gPg0KPiA+ID4gICAgcmV0dXJuICgoKFVJTlQ2NClIaURh dGEpIDw8IDMyKSB8IExvd0RhdGE7DQo+ID4gPiAgfQ0KPiA+ID4gLQ0KPiA+ID4gLQ0KPiA+ID4g LS8qKg0KPiA+ID4gLSAgUmVhZHMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgYSBQZXJmb3JtYW5jZSBD b3VudGVyDQo+ID4gKFBNQykuDQo+ID4gPiAtDQo+ID4gPiAtICBSZWFkcyBhbmQgcmV0dXJucyB0 aGUgY3VycmVudCB2YWx1ZSBvZg0KPiBwZXJmb3JtYW5jZQ0KPiA+IGNvdW50ZXIgc3BlY2lmaWVk IGJ5DQo+ID4gPiAtICBJbmRleC4gVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBvbiBJ QS0zMg0KPiBhbmQNCj4gPiBYNjQuDQo+ID4gPiAtDQo+ID4gPiAtICBAcGFyYW0gIEluZGV4IFRo ZSAzMi1iaXQgUGVyZm9ybWFuY2UgQ291bnRlcg0KPiBpbmRleA0KPiA+IHRvIHJlYWQuDQo+ID4g PiAtDQo+ID4gPiAtICBAcmV0dXJuIFRoZSB2YWx1ZSBvZiB0aGUgUE1DIHNwZWNpZmllZCBieSBJ bmRleC4NCj4gPiA+IC0NCj4gPiA+IC0qKi8NCj4gPiA+IC1VSU5UNjQNCj4gPiA+IC1FRklBUEkN Cj4gPiA+IC1Bc21SZWFkUG1jICgNCj4gPiA+IC0gIElOICAgICAgVUlOVDMyICAgICAgICAgICAg ICAgICAgICBJbmRleA0KPiA+ID4gLSAgKQ0KPiA+ID4gLXsNCj4gPiA+IC0gIFVJTlQzMiAgTG93 RGF0YTsNCj4gPiA+IC0gIFVJTlQzMiAgSGlEYXRhOw0KPiA+ID4gLQ0KPiA+ID4gLSAgX19hc21f XyBfX3ZvbGF0aWxlX18gKA0KPiA+ID4gLSAgICAicmRwbWMiDQo+ID4gPiAtICAgIDogIj1hIiAo TG93RGF0YSksDQo+ID4gPiAtICAgICAgIj1kIiAoSGlEYXRhKQ0KPiA+ID4gLSAgICA6ICJjIiAg KEluZGV4KQ0KPiA+ID4gLSAgICApOw0KPiA+ID4gLQ0KPiA+ID4gLSAgcmV0dXJuICgoKFVJTlQ2 NClIaURhdGEpIDw8IDMyKSB8IExvd0RhdGE7DQo+ID4gPiAtfQ0KPiA+ID4gLQ0KPiA+ID4gLQ0K PiA+ID4gLS8qKg0KPiA+ID4gLSAgU2V0cyB1cCBhIG1vbml0b3IgYnVmZmVyIHRoYXQgaXMgdXNl ZCBieQ0KPiA+IEFzbU13YWl0KCkuDQo+ID4gPiAtDQo+ID4gPiAtICBFeGVjdXRlcyBhIE1PTklU T1IgaW5zdHJ1Y3Rpb24gd2l0aCB0aGUgcmVnaXN0ZXINCj4gPiBzdGF0ZSBzcGVjaWZpZWQgYnkg RWF4LCBFY3gNCj4gPiA+IC0gIGFuZCBFZHguIFJldHVybnMgRWF4LiBUaGlzIGZ1bmN0aW9uIGlz IG9ubHkNCj4gPiBhdmFpbGFibGUgb24gSUEtMzIgYW5kIFg2NC4NCj4gPiA+IC0NCj4gPiA+IC0g IEBwYXJhbSAgRWF4IFRoZSB2YWx1ZSB0byBsb2FkIGludG8gRUFYIG9yIFJBWA0KPiA+IGJlZm9y ZSBleGVjdXRpbmcgdGhlIE1PTklUT1INCj4gPiA+IC0gICAgICAgICAgICAgIGluc3RydWN0aW9u Lg0KPiA+ID4gLSAgQHBhcmFtICBFY3ggVGhlIHZhbHVlIHRvIGxvYWQgaW50byBFQ1ggb3IgUkNY DQo+ID4gYmVmb3JlIGV4ZWN1dGluZyB0aGUgTU9OSVRPUg0KPiA+ID4gLSAgICAgICAgICAgICAg aW5zdHJ1Y3Rpb24uDQo+ID4gPiAtICBAcGFyYW0gIEVkeCBUaGUgdmFsdWUgdG8gbG9hZCBpbnRv IEVEWCBvciBSRFgNCj4gPiBiZWZvcmUgZXhlY3V0aW5nIHRoZSBNT05JVE9SDQo+ID4gPiAtICAg ICAgICAgICAgICBpbnN0cnVjdGlvbi4NCj4gPiA+IC0NCj4gPiA+IC0gIEByZXR1cm4gRWF4DQo+ ID4gPiAtDQo+ID4gPiAtKiovDQo+ID4gPiAtVUlOVE4NCj4gPiA+IC1FRklBUEkNCj4gPiA+IC1B c21Nb25pdG9yICgNCj4gPiA+IC0gIElOICAgICAgVUlOVE4gICAgICAgICAgICAgICAgICAgICBF YXgsDQo+ID4gPiAtICBJTiAgICAgIFVJTlROICAgICAgICAgICAgICAgICAgICAgRWN4LA0KPiA+ ID4gLSAgSU4gICAgICBVSU5UTiAgICAgICAgICAgICAgICAgICAgIEVkeA0KPiA+ID4gLSAgKQ0K PiA+ID4gLXsNCj4gPiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgNCj4gPiA+IC0gICAgIm1v bml0b3IiDQo+ID4gPiAtICAgIDoNCj4gPiA+IC0gICAgOiAiYSIgKEVheCksDQo+ID4gPiAtICAg ICAgImMiIChFY3gpLA0KPiA+ID4gLSAgICAgICJkIiAoRWR4KQ0KPiA+ID4gLSAgICApOw0KPiA+ ID4gLQ0KPiA+ID4gLSAgcmV0dXJuIEVheDsNCj4gPiA+IC19DQo+ID4gPiAtDQo+ID4gPiAtDQo+ ID4gPiAtLyoqDQo+ID4gPiAtICBFeGVjdXRlcyBhbiBNV0FJVCBpbnN0cnVjdGlvbi4NCj4gPiA+ IC0NCj4gPiA+IC0gIEV4ZWN1dGVzIGFuIE1XQUlUIGluc3RydWN0aW9uIHdpdGggdGhlIHJlZ2lz dGVyDQo+ID4gc3RhdGUgc3BlY2lmaWVkIGJ5IEVheCBhbmQNCj4gPiA+IC0gIEVjeC4gUmV0dXJu cyBFYXguIFRoaXMgZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUNCj4gPiBvbiBJQS0zMiBhbmQg WDY0Lg0KPiA+ID4gLQ0KPiA+ID4gLSAgQHBhcmFtICBFYXggVGhlIHZhbHVlIHRvIGxvYWQgaW50 byBFQVggb3IgUkFYDQo+ID4gYmVmb3JlIGV4ZWN1dGluZyB0aGUgTU9OSVRPUg0KPiA+ID4gLSAg ICAgICAgICAgICAgaW5zdHJ1Y3Rpb24uDQo+ID4gPiAtICBAcGFyYW0gIEVjeCBUaGUgdmFsdWUg dG8gbG9hZCBpbnRvIEVDWCBvciBSQ1gNCj4gPiBiZWZvcmUgZXhlY3V0aW5nIHRoZSBNT05JVE9S DQo+ID4gPiAtICAgICAgICAgICAgICBpbnN0cnVjdGlvbi4NCj4gPiA+IC0NCj4gPiA+IC0gIEBy ZXR1cm4gRWF4DQo+ID4gPiAtDQo+ID4gPiAtKiovDQo+ID4gPiAtVUlOVE4NCj4gPiA+IC1FRklB UEkNCj4gPiA+IC1Bc21Nd2FpdCAoDQo+ID4gPiAtICBJTiAgICAgIFVJTlROICAgICAgICAgICAg ICAgICAgICAgRWF4LA0KPiA+ID4gLSAgSU4gICAgICBVSU5UTiAgICAgICAgICAgICAgICAgICAg IEVjeA0KPiA+ID4gLSAgKQ0KPiA+ID4gLXsNCj4gPiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9f ICgNCj4gPiA+IC0gICAgIm13YWl0Ig0KPiA+ID4gLSAgICA6DQo+ID4gPiAtICAgIDogImEiICAo RWF4KSwNCj4gPiA+IC0gICAgICAiYyIgIChFY3gpDQo+ID4gPiAtICAgICk7DQo+ID4gPiAtDQo+ ID4gPiAtICByZXR1cm4gRWF4Ow0KPiA+ID4gLX0NCj4gPiA+IC0NCj4gPiA+IC0NCj4gPiA+IC0v KioNCj4gPiA+IC0gIEV4ZWN1dGVzIGEgV0JJTlZEIGluc3RydWN0aW9uLg0KPiA+ID4gLQ0KPiA+ ID4gLSAgRXhlY3V0ZXMgYSBXQklOVkQgaW5zdHJ1Y3Rpb24uIFRoaXMgZnVuY3Rpb24gaXMNCj4g PiBvbmx5IGF2YWlsYWJsZSBvbiBJQS0zMiBhbmQNCj4gPiA+IC0gIFg2NC4NCj4gPiA+IC0NCj4g PiA+IC0qKi8NCj4gPiA+IC1WT0lEDQo+ID4gPiAtRUZJQVBJDQo+ID4gPiAtQXNtV2JpbnZkICgN Cj4gPiA+IC0gIFZPSUQNCj4gPiA+IC0gICkNCj4gPiA+IC17DQo+ID4gPiAtICBfX2FzbV9fIF9f dm9sYXRpbGVfXyAoIndiaW52ZCI6OjoibWVtb3J5Iik7DQo+ID4gPiAtfQ0KPiA+ID4gLQ0KPiA+ ID4gLQ0KPiA+ID4gLS8qKg0KPiA+ID4gLSAgRXhlY3V0ZXMgYSBJTlZEIGluc3RydWN0aW9uLg0K PiA+ID4gLQ0KPiA+ID4gLSAgRXhlY3V0ZXMgYSBJTlZEIGluc3RydWN0aW9uLiBUaGlzIGZ1bmN0 aW9uIGlzDQo+IG9ubHkNCj4gPiBhdmFpbGFibGUgb24gSUEtMzIgYW5kDQo+ID4gPiAtICBYNjQu DQo+ID4gPiAtDQo+ID4gPiAtKiovDQo+ID4gPiAtVk9JRA0KPiA+ID4gLUVGSUFQSQ0KPiA+ID4g LUFzbUludmQgKA0KPiA+ID4gLSAgVk9JRA0KPiA+ID4gLSAgKQ0KPiA+ID4gLXsNCj4gPiA+IC0g IF9fYXNtX18gX192b2xhdGlsZV9fICgiaW52ZCI6OjoibWVtb3J5Iik7DQo+ID4gPiAtDQo+ID4g PiAtfQ0KPiA+ID4gLQ0KPiA+ID4gLQ0KPiA+ID4gLS8qKg0KPiA+ID4gLSAgRmx1c2hlcyBhIGNh Y2hlIGxpbmUgZnJvbSBhbGwgdGhlIGluc3RydWN0aW9uIGFuZA0KPiA+IGRhdGEgY2FjaGVzIHdp dGhpbiB0aGUNCj4gPiA+IC0gIGNvaGVyZW5jeSBkb21haW4gb2YgdGhlIENQVS4NCj4gPiA+IC0N Cj4gPiA+IC0gIEZsdXNoZWQgdGhlIGNhY2hlIGxpbmUgc3BlY2lmaWVkIGJ5DQo+IExpbmVhckFk ZHJlc3MsDQo+ID4gYW5kIHJldHVybnMgTGluZWFyQWRkcmVzcy4NCj4gPiA+IC0gIFRoaXMgZnVu Y3Rpb24gaXMgb25seSBhdmFpbGFibGUgb24gSUEtMzIgYW5kIFg2NC4NCj4gPiA+IC0NCj4gPiA+ IC0gIEBwYXJhbSAgTGluZWFyQWRkcmVzcyBUaGUgYWRkcmVzcyBvZiB0aGUgY2FjaGUNCj4gbGlu ZQ0KPiA+IHRvIGZsdXNoLiBJZiB0aGUgQ1BVIGlzDQo+ID4gPiAtICAgICAgICAgICAgICAgICAg ICAgICAgaW4gYSBwaHlzaWNhbCBhZGRyZXNzaW5nDQo+ID4gbW9kZSwgdGhlbiBMaW5lYXJBZGRy ZXNzIGlzIGENCj4gPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICBwaHlzaWNhbCBhZGRyZXNz LiBJZiB0aGUNCj4gQ1BVDQo+ID4gaXMgaW4gYSB2aXJ0dWFsDQo+ID4gPiAtICAgICAgICAgICAg ICAgICAgICAgICAgYWRkcmVzc2luZyBtb2RlLCB0aGVuDQo+ID4gTGluZWFyQWRkcmVzcyBpcyBh IHZpcnR1YWwNCj4gPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzLg0KPiA+ID4g LQ0KPiA+ID4gLSAgQHJldHVybiBMaW5lYXJBZGRyZXNzDQo+ID4gPiAtKiovDQo+ID4gPiAtVk9J RCAqDQo+ID4gPiAtRUZJQVBJDQo+ID4gPiAtQXNtRmx1c2hDYWNoZUxpbmUgKA0KPiA+ID4gLSAg SU4gICAgICBWT0lEICAgICAgICAgICAgICAgICAgICAgICpMaW5lYXJBZGRyZXNzDQo+ID4gPiAt ICApDQo+ID4gPiAtew0KPiA+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+ID4gLSAg ICAiY2xmbHVzaCAoJTApIg0KPiA+ID4gLSAgICA6DQo+ID4gPiAtICAgIDogInIiIChMaW5lYXJB ZGRyZXNzKQ0KPiA+ID4gLSAgICA6ICJtZW1vcnkiDQo+ID4gPiAtICAgICk7DQo+ID4gPiAtDQo+ ID4gPiAtICAgIHJldHVybiBMaW5lYXJBZGRyZXNzOw0KPiA+ID4gLX0NCj4gPiA+IC0NCj4gPiA+ IC0NCj4gPiA+IGRpZmYgLS1naXQgYS9NZGVQa2cvTGlicmFyeS9CYXNlTGliL1g2NC9HY2NJbmxp bmUuYw0KPiA+IGIvTWRlUGtnL0xpYnJhcnkvQmFzZUxpYi9YNjQvR2NjSW5saW5lUHJpdi5jDQo+ ID4gPiBzaW1pbGFyaXR5IGluZGV4IDY1JQ0KPiA+ID4gY29weSBmcm9tIE1kZVBrZy9MaWJyYXJ5 L0Jhc2VMaWIvWDY0L0djY0lubGluZS5jDQo+ID4gPiBjb3B5IHRvIE1kZVBrZy9MaWJyYXJ5L0Jh c2VMaWIvWDY0L0djY0lubGluZVByaXYuYw0KPiA+ID4gaW5kZXggMTU0Y2UxZjU3ZS4uOThiZTE5 YjNjNyAxMDA2NDQNCj4gPiA+IC0tLSBhL01kZVBrZy9MaWJyYXJ5L0Jhc2VMaWIvWDY0L0djY0lu bGluZS5jDQo+ID4gPiArKysgYi9NZGVQa2cvTGlicmFyeS9CYXNlTGliL1g2NC9HY2NJbmxpbmVQ cml2LmMNCj4gPiA+IEBAIC0xLDcgKzEsOCBAQA0KPiA+ID4gIC8qKiBAZmlsZQ0KPiA+ID4gLSAg R0NDIGlubGluZSBpbXBsZW1lbnRhdGlvbiBvZiBCYXNlTGliIHByb2Nlc3Nvcg0KPiA+IHNwZWNp ZmljIGZ1bmN0aW9ucy4NCj4gPiA+ICsgIEdDQyBpbmxpbmUgaW1wbGVtZW50YXRpb24gb2YgQmFz ZUxpYiBwcm9jZXNzb3INCj4gPiBzcGVjaWZpYyBmdW5jdGlvbnMgdGhhdCB1c2UNCj4gPiA+ICsg IHByaXZsaWRnZWQgaW5zdHJ1Y3Rpb25zLg0KPiA+ID4NCj4gPiA+IC0gIENvcHlyaWdodCAoYykg MjAwNiAtIDIwMTgsIEludGVsIENvcnBvcmF0aW9uLiBBbGwNCj4gPiByaWdodHMgcmVzZXJ2ZWQu PEJSPg0KPiA+ID4gKyAgQ29weXJpZ2h0IChjKSAyMDA2IC0gMjAyMCwgSW50ZWwgQ29ycG9yYXRp b24uIEFsbA0KPiA+IHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4gPiAgICBQb3J0aW9ucyBjb3B5 cmlnaHQgKGMpIDIwMDggLSAyMDA5LCBBcHBsZSBJbmMuDQo+IEFsbA0KPiA+IHJpZ2h0cyByZXNl cnZlZC48QlI+DQo+ID4gPiAgICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNl LVBhdGVudA0KPiA+ID4NCj4gPiA+IEBAIC0xMCwyOSArMTEsNiBAQA0KPiA+ID4NCj4gPiA+ICAj aW5jbHVkZSAiQmFzZUxpYkludGVybmFscy5oIg0KPiA+ID4NCj4gPiA+IC0NCj4gPiA+IC0NCj4g PiA+IC0NCj4gPiA+IC0vKioNCj4gPiA+IC0gIFVzZWQgdG8gc2VyaWFsaXplIGxvYWQgYW5kIHN0 b3JlIG9wZXJhdGlvbnMuDQo+ID4gPiAtDQo+ID4gPiAtICBBbGwgbG9hZHMgYW5kIHN0b3JlcyB0 aGF0IHByb2NlZWQgY2FsbHMgdG8gdGhpcw0KPiA+IGZ1bmN0aW9uIGFyZSBndWFyYW50ZWVkIHRv IGJlDQo+ID4gPiAtICBnbG9iYWxseSB2aXNpYmxlIHdoZW4gdGhpcyBmdW5jdGlvbiByZXR1cm5z Lg0KPiA+ID4gLQ0KPiA+ID4gLSoqLw0KPiA+ID4gLVZPSUQNCj4gPiA+IC1FRklBUEkNCj4gPiA+ IC1NZW1vcnlGZW5jZSAoDQo+ID4gPiAtICBWT0lEDQo+ID4gPiAtICApDQo+ID4gPiAtew0KPiA+ ID4gLSAgLy8gVGhpcyBpcyBhIGxpdHRsZSBiaXQgb2Ygb3ZlcmtpbGwgYW5kIGl0IGlzDQo+IG1v cmUNCj4gPiBhYm91dCB0aGUgY29tcGlsZXIgdGhhdCBpdCBpcw0KPiA+ID4gLSAgLy8gYWN0dWFs bHkgcHJvY2Vzc29yIHN5bmNocm9uaXphdGlvbi4gVGhpcyBpcw0KPiBsaWtlDQo+ID4gdGhlIF9S ZWFkV3JpdGVCYXJyaWVyDQo+ID4gPiAtICAvLyBNaWNyb3NvZnQgc3BlY2lmaWMgaW50cmluc2lj DQo+ID4gPiAtICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoIiI6OjoibWVtb3J5Iik7DQo+ID4gPiAt fQ0KPiA+ID4gLQ0KPiA+ID4gLQ0KPiA+ID4gIC8qKg0KPiA+ID4gICAgRW5hYmxlcyBDUFUgaW50 ZXJydXB0cy4NCj4gPiA+DQo+ID4gPiBAQCAtNjQsNDQgKzQyLDYgQEAgRGlzYWJsZUludGVycnVw dHMgKA0KPiA+ID4gICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJjbGkiOjo6ICJtZW1vcnkiKTsN Cj4gPiA+ICB9DQo+ID4gPg0KPiA+ID4gLQ0KPiA+ID4gLQ0KPiA+ID4gLQ0KPiA+ID4gLS8qKg0K PiA+ID4gLSAgUmVxdWVzdHMgQ1BVIHRvIHBhdXNlIGZvciBhIHNob3J0IHBlcmlvZCBvZiB0aW1l Lg0KPiA+ID4gLQ0KPiA+ID4gLSAgUmVxdWVzdHMgQ1BVIHRvIHBhdXNlIGZvciBhIHNob3J0IHBl cmlvZCBvZiB0aW1lLg0KPiA+IFR5cGljYWxseSB1c2VkIGluIE1QDQo+ID4gPiAtICBzeXN0ZW1z IHRvIHByZXZlbnQgbWVtb3J5IHN0YXJ2YXRpb24gd2hpbGUNCj4gd2FpdGluZw0KPiA+IGZvciBh IHNwaW4gbG9jay4NCj4gPiA+IC0NCj4gPiA+IC0qKi8NCj4gPiA+IC1WT0lEDQo+ID4gPiAtRUZJ QVBJDQo+ID4gPiAtQ3B1UGF1c2UgKA0KPiA+ID4gLSAgVk9JRA0KPiA+ID4gLSAgKQ0KPiA+ID4g LXsNCj4gPiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgicGF1c2UiKTsNCj4gPiA+IC19DQo+ ID4gPiAtDQo+ID4gPiAtDQo+ID4gPiAtLyoqDQo+ID4gPiAtICBHZW5lcmF0ZXMgYSBicmVha3Bv aW50IG9uIHRoZSBDUFUuDQo+ID4gPiAtDQo+ID4gPiAtICBHZW5lcmF0ZXMgYSBicmVha3BvaW50 IG9uIHRoZSBDUFUuIFRoZSBicmVha3BvaW50DQo+ID4gbXVzdCBiZSBpbXBsZW1lbnRlZCBzdWNo DQo+ID4gPiAtICB0aGF0IGNvZGUgY2FuIHJlc3VtZSBub3JtYWwgZXhlY3V0aW9uIGFmdGVyIHRo ZQ0KPiA+IGJyZWFrcG9pbnQuDQo+ID4gPiAtDQo+ID4gPiAtKiovDQo+ID4gPiAtVk9JRA0KPiA+ ID4gLUVGSUFQSQ0KPiA+ID4gLUNwdUJyZWFrcG9pbnQgKA0KPiA+ID4gLSAgVk9JRA0KPiA+ID4g LSAgKQ0KPiA+ID4gLXsNCj4gPiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgiaW50ICQzIik7 DQo+ID4gPiAtfQ0KPiA+ID4gLQ0KPiA+ID4gLQ0KPiA+ID4gLQ0KPiA+ID4gIC8qKg0KPiA+ID4g ICAgUmV0dXJucyBhIDY0LWJpdCBNYWNoaW5lIFNwZWNpZmljIFJlZ2lzdGVyKE1TUikuDQo+ID4g Pg0KPiA+ID4gQEAgLTE3NiwzNyArMTE2LDYgQEAgQXNtV3JpdGVNc3I2NCAoDQo+ID4gPiAgICBy ZXR1cm4gVmFsdWU7DQo+ID4gPiAgfQ0KPiA+ID4NCj4gPiA+IC0NCj4gPiA+IC0NCj4gPiA+IC0v KioNCj4gPiA+IC0gIFJlYWRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBFRkxBR1MgcmVnaXN0 ZXIuDQo+ID4gPiAtDQo+ID4gPiAtICBSZWFkcyBhbmQgcmV0dXJucyB0aGUgY3VycmVudCB2YWx1 ZSBvZiB0aGUgRUZMQUdTDQo+ID4gcmVnaXN0ZXIuIFRoaXMgZnVuY3Rpb24gaXMNCj4gPiA+IC0g IG9ubHkgYXZhaWxhYmxlIG9uIElBLTMyIGFuZCBYNjQuIFRoaXMgcmV0dXJucyBhDQo+IDMyLQ0K PiA+IGJpdCB2YWx1ZSBvbiBJQS0zMiBhbmQgYQ0KPiA+ID4gLSAgNjQtYml0IHZhbHVlIG9uIFg2 NC4NCj4gPiA+IC0NCj4gPiA+IC0gIEByZXR1cm4gRUZMQUdTIG9uIElBLTMyIG9yIFJGTEFHUyBv biBYNjQuDQo+ID4gPiAtDQo+ID4gPiAtKiovDQo+ID4gPiAtVUlOVE4NCj4gPiA+IC1FRklBUEkN Cj4gPiA+IC1Bc21SZWFkRWZsYWdzICgNCj4gPiA+IC0gIFZPSUQNCj4gPiA+IC0gICkNCj4gPiA+ IC17DQo+ID4gPiAtICBVSU5UTiBFZmxhZ3M7DQo+ID4gPiAtDQo+ID4gPiAtICBfX2FzbV9fIF9f dm9sYXRpbGVfXyAoDQo+ID4gPiAtICAgICJwdXNoZnEgICAgICAgICBcblx0Ig0KPiA+ID4gLSAg ICAicG9wICAgICAlMCAgICAgICAgICINCj4gPiA+IC0gICAgOiAiPXIiIChFZmxhZ3MpICAgICAg IC8vICUwDQo+ID4gPiAtICAgICk7DQo+ID4gPiAtDQo+ID4gPiAtICByZXR1cm4gRWZsYWdzOw0K PiA+ID4gLX0NCj4gPiA+IC0NCj4gPiA+IC0NCj4gPiA+IC0NCj4gPiA+ICAvKioNCj4gPiA+ICAg IFJlYWRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBDb250cm9sIFJlZ2lzdGVyIDANCj4gPiAo Q1IwKS4NCj4gPiA+DQo+ID4gPiBAQCAtMTE2Myw0NzUgKzEwNzIsNiBAQCBBc21Xcml0ZUxkdHIg KA0KPiA+ID4gICAgICApOw0KPiA+ID4gIH0NCj4gPiA+DQo+ID4gPiAtDQo+ID4gPiAtLyoqDQo+ ID4gPiAtICBTYXZlIHRoZSBjdXJyZW50IGZsb2F0aW5nIHBvaW50L1NTRS9TU0UyIGNvbnRleHQN Cj4gdG8NCj4gPiBhIGJ1ZmZlci4NCj4gPiA+IC0NCj4gPiA+IC0gIFNhdmVzIHRoZSBjdXJyZW50 IGZsb2F0aW5nIHBvaW50L1NTRS9TU0UyIHN0YXRlDQo+IHRvDQo+ID4gdGhlIGJ1ZmZlciBzcGVj aWZpZWQgYnkNCj4gPiA+IC0gIEJ1ZmZlci4gQnVmZmVyIG11c3QgYmUgYWxpZ25lZCBvbiBhIDE2 LWJ5dGUNCj4gPiBib3VuZGFyeS4gVGhpcyBmdW5jdGlvbiBpcyBvbmx5DQo+ID4gPiAtICBhdmFp bGFibGUgb24gSUEtMzIgYW5kIFg2NC4NCj4gPiA+IC0NCj4gPiA+IC0gIEBwYXJhbSAgQnVmZmVy ICBUaGUgcG9pbnRlciB0byBhIGJ1ZmZlciB0byBzYXZlDQo+IHRoZQ0KPiA+IGZsb2F0aW5nIHBv aW50L1NTRS9TU0UyIGNvbnRleHQuDQo+ID4gPiAtDQo+ID4gPiAtKiovDQo+ID4gPiAtVk9JRA0K PiA+ID4gLUVGSUFQSQ0KPiA+ID4gLUludGVybmFsWDg2RnhTYXZlICgNCj4gPiA+IC0gIE9VVCAg ICAgSUEzMl9GWF9CVUZGRVIgICAgICAgICAgICAqQnVmZmVyDQo+ID4gPiAtICApDQo+ID4gPiAt ew0KPiA+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+ID4gLSAgICAiZnhzYXZlICUw Ig0KPiA+ID4gLSAgICA6DQo+ID4gPiAtICAgIDogIm0iICgqQnVmZmVyKSAgLy8gJTANCj4gPiA+ IC0gICAgKTsNCj4gPiA+IC19DQo+ID4gPiAtDQo+ID4gPiAtDQo+ID4gPiAtLyoqDQo+ID4gPiAt ICBSZXN0b3JlcyB0aGUgY3VycmVudCBmbG9hdGluZyBwb2ludC9TU0UvU1NFMg0KPiA+IGNvbnRl eHQgZnJvbSBhIGJ1ZmZlci4NCj4gPiA+IC0NCj4gPiA+IC0gIFJlc3RvcmVzIHRoZSBjdXJyZW50 IGZsb2F0aW5nIHBvaW50L1NTRS9TU0UyDQo+IHN0YXRlDQo+ID4gZnJvbSB0aGUgYnVmZmVyIHNw ZWNpZmllZA0KPiA+ID4gLSAgYnkgQnVmZmVyLiBCdWZmZXIgbXVzdCBiZSBhbGlnbmVkIG9uIGEg MTYtYnl0ZQ0KPiA+IGJvdW5kYXJ5LiBUaGlzIGZ1bmN0aW9uIGlzDQo+ID4gPiAtICBvbmx5IGF2 YWlsYWJsZSBvbiBJQS0zMiBhbmQgWDY0Lg0KPiA+ID4gLQ0KPiA+ID4gLSAgQHBhcmFtICBCdWZm ZXIgIFRoZSBwb2ludGVyIHRvIGEgYnVmZmVyIHRvIHNhdmUNCj4gdGhlDQo+ID4gZmxvYXRpbmcg cG9pbnQvU1NFL1NTRTIgY29udGV4dC4NCj4gPiA+IC0NCj4gPiA+IC0qKi8NCj4gPiA+IC1WT0lE DQo+ID4gPiAtRUZJQVBJDQo+ID4gPiAtSW50ZXJuYWxYODZGeFJlc3RvcmUgKA0KPiA+ID4gLSAg SU4gICAgICBDT05TVCBJQTMyX0ZYX0JVRkZFUiAgICAgICpCdWZmZXINCj4gPiA+IC0gICkNCj4g PiA+IC17DQo+ID4gPiAtICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoDQo+ID4gPiAtICAgICJmeHJz dG9yICUwIg0KPiA+ID4gLSAgICA6DQo+ID4gPiAtICAgIDogIm0iICgqQnVmZmVyKSAgLy8gJTAN Cj4gPiA+IC0gICAgKTsNCj4gPiA+IC19DQo+ID4gPiAtDQo+ID4gPiAtDQo+ID4gPiAtLyoqDQo+ ID4gPiAtICBSZWFkcyB0aGUgY3VycmVudCB2YWx1ZSBvZiA2NC1iaXQgTU1YIFJlZ2lzdGVyICMw DQo+ID4gKE1NMCkuDQo+ID4gPiAtDQo+ID4gPiAtICBSZWFkcyBhbmQgcmV0dXJucyB0aGUgY3Vy cmVudCB2YWx1ZSBvZiBNTTAuIFRoaXMNCj4gPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZQ0K PiA+ID4gLSAgb24gSUEtMzIgYW5kIFg2NC4NCj4gPiA+IC0NCj4gPiA+IC0gIEByZXR1cm4gVGhl IGN1cnJlbnQgdmFsdWUgb2YgTU0wLg0KPiA+ID4gLQ0KPiA+ID4gLSoqLw0KPiA+ID4gLVVJTlQ2 NA0KPiA+ID4gLUVGSUFQSQ0KPiA+ID4gLUFzbVJlYWRNbTAgKA0KPiA+ID4gLSAgVk9JRA0KPiA+ ID4gLSAgKQ0KPiA+ID4gLXsNCj4gPiA+IC0gIFVJTlQ2NCAgRGF0YTsNCj4gPiA+IC0NCj4gPiA+ IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgNCj4gPiA+IC0gICAgIm1vdmQgICAlJW1tMCwgICUw ICAgIFxuXHQiDQo+ID4gPiAtICAgIDogIj1yIiAgKERhdGEpICAgICAgIC8vICUwDQo+ID4gPiAt ICAgICk7DQo+ID4gPiAtDQo+ID4gPiAtICByZXR1cm4gRGF0YTsNCj4gPiA+IC19DQo+ID4gPiAt DQo+ID4gPiAtDQo+ID4gPiAtLyoqDQo+ID4gPiAtICBSZWFkcyB0aGUgY3VycmVudCB2YWx1ZSBv ZiA2NC1iaXQgTU1YIFJlZ2lzdGVyICMxDQo+ID4gKE1NMSkuDQo+ID4gPiAtDQo+ID4gPiAtICBS ZWFkcyBhbmQgcmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiBNTTEuIFRoaXMNCj4gPiBmdW5j dGlvbiBpcyBvbmx5IGF2YWlsYWJsZQ0KPiA+ID4gLSAgb24gSUEtMzIgYW5kIFg2NC4NCj4gPiA+ IC0NCj4gPiA+IC0gIEByZXR1cm4gVGhlIGN1cnJlbnQgdmFsdWUgb2YgTU0xLg0KPiA+ID4gLQ0K PiA+ID4gLSoqLw0KPiA+ID4gLVVJTlQ2NA0KPiA+ID4gLUVGSUFQSQ0KPiA+ID4gLUFzbVJlYWRN bTEgKA0KPiA+ID4gLSAgVk9JRA0KPiA+ID4gLSAgKQ0KPiA+ID4gLXsNCj4gPiA+IC0gIFVJTlQ2 NCAgRGF0YTsNCj4gPiA+IC0NCj4gPiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgNCj4gPiA+ IC0gICAgIm1vdmQgICAlJW1tMSwgICUwICAgIFxuXHQiDQo+ID4gPiAtICAgIDogIj1yIiAgKERh dGEpICAgICAgIC8vICUwDQo+ID4gPiAtICAgICk7DQo+ID4gPiAtDQo+ID4gPiAtICByZXR1cm4g RGF0YTsNCj4gPiA+IC19DQo+ID4gPiAtDQo+ID4gPiAtDQo+ID4gPiAtLyoqDQo+ID4gPiAtICBS ZWFkcyB0aGUgY3VycmVudCB2YWx1ZSBvZiA2NC1iaXQgTU1YIFJlZ2lzdGVyICMyDQo+ID4gKE1N MikuDQo+ID4gPiAtDQo+ID4gPiAtICBSZWFkcyBhbmQgcmV0dXJucyB0aGUgY3VycmVudCB2YWx1 ZSBvZiBNTTIuIFRoaXMNCj4gPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZQ0KPiA+ID4gLSAg b24gSUEtMzIgYW5kIFg2NC4NCj4gPiA+IC0NCj4gPiA+IC0gIEByZXR1cm4gVGhlIGN1cnJlbnQg dmFsdWUgb2YgTU0yLg0KPiA+ID4gLQ0KPiA+ID4gLSoqLw0KPiA+ID4gLVVJTlQ2NA0KPiA+ID4g LUVGSUFQSQ0KPiA+ID4gLUFzbVJlYWRNbTIgKA0KPiA+ID4gLSAgVk9JRA0KPiA+ID4gLSAgKQ0K PiA+ID4gLXsNCj4gPiA+IC0gIFVJTlQ2NCAgRGF0YTsNCj4gPiA+IC0NCj4gPiA+IC0gIF9fYXNt X18gX192b2xhdGlsZV9fICgNCj4gPiA+IC0gICAgIm1vdmQgICUlbW0yLCAgJTAgICAgXG5cdCIN Cj4gPiA+IC0gICAgOiAiPXIiICAoRGF0YSkgICAgICAgLy8gJTANCj4gPiA+IC0gICAgKTsNCj4g PiA+IC0NCj4gPiA+IC0gIHJldHVybiBEYXRhOw0KPiA+ID4gLX0NCj4gPiA+IC0NCj4gPiA+IC0N Cj4gPiA+IC0vKioNCj4gPiA+IC0gIFJlYWRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIDY0LWJpdCBN TVggUmVnaXN0ZXIgIzMNCj4gPiAoTU0zKS4NCj4gPiA+IC0NCj4gPiA+IC0gIFJlYWRzIGFuZCBy ZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVlIG9mIE1NMy4gVGhpcw0KPiA+IGZ1bmN0aW9uIGlzIG9u bHkgYXZhaWxhYmxlDQo+ID4gPiAtICBvbiBJQS0zMiBhbmQgWDY0Lg0KPiA+ID4gLQ0KPiA+ID4g LSAgQHJldHVybiBUaGUgY3VycmVudCB2YWx1ZSBvZiBNTTMuDQo+ID4gPiAtDQo+ID4gPiAtKiov DQo+ID4gPiAtVUlOVDY0DQo+ID4gPiAtRUZJQVBJDQo+ID4gPiAtQXNtUmVhZE1tMyAoDQo+ID4g PiAtICBWT0lEDQo+ID4gPiAtICApDQo+ID4gPiAtew0KPiA+ID4gLSAgVUlOVDY0ICBEYXRhOw0K PiA+ID4gLQ0KPiA+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+ID4gLSAgICAibW92 ZCAgJSVtbTMsICAlMCAgICBcblx0Ig0KPiA+ID4gLSAgICA6ICI9ciIgIChEYXRhKSAgICAgICAv LyAlMA0KPiA+ID4gLSAgICApOw0KPiA+ID4gLQ0KPiA+ID4gLSAgcmV0dXJuIERhdGE7DQo+ID4g PiAtfQ0KPiA+ID4gLQ0KPiA+ID4gLQ0KPiA+ID4gLS8qKg0KPiA+ID4gLSAgUmVhZHMgdGhlIGN1 cnJlbnQgdmFsdWUgb2YgNjQtYml0IE1NWCBSZWdpc3RlciAjNA0KPiA+IChNTTQpLg0KPiA+ID4g LQ0KPiA+ID4gLSAgUmVhZHMgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgTU00LiBU aGlzDQo+ID4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUNCj4gPiA+IC0gIG9uIElBLTMyIGFu ZCBYNjQuDQo+ID4gPiAtDQo+ID4gPiAtICBAcmV0dXJuIFRoZSBjdXJyZW50IHZhbHVlIG9mIE1N NC4NCj4gPiA+IC0NCj4gPiA+IC0qKi8NCj4gPiA+IC1VSU5UNjQNCj4gPiA+IC1FRklBUEkNCj4g PiA+IC1Bc21SZWFkTW00ICgNCj4gPiA+IC0gIFZPSUQNCj4gPiA+IC0gICkNCj4gPiA+IC17DQo+ ID4gPiAtICBVSU5UNjQgIERhdGE7DQo+ID4gPiAtDQo+ID4gPiAtICBfX2FzbV9fIF9fdm9sYXRp bGVfXyAoDQo+ID4gPiAtICAgICJtb3ZkICAlJW1tNCwgICUwICAgIFxuXHQiDQo+ID4gPiAtICAg IDogIj1yIiAgKERhdGEpICAgICAgIC8vICUwDQo+ID4gPiAtICAgICk7DQo+ID4gPiAtDQo+ID4g PiAtICByZXR1cm4gRGF0YTsNCj4gPiA+IC19DQo+ID4gPiAtDQo+ID4gPiAtDQo+ID4gPiAtLyoq DQo+ID4gPiAtICBSZWFkcyB0aGUgY3VycmVudCB2YWx1ZSBvZiA2NC1iaXQgTU1YIFJlZ2lzdGVy ICM1DQo+ID4gKE1NNSkuDQo+ID4gPiAtDQo+ID4gPiAtICBSZWFkcyBhbmQgcmV0dXJucyB0aGUg Y3VycmVudCB2YWx1ZSBvZiBNTTUuIFRoaXMNCj4gPiBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJs ZQ0KPiA+ID4gLSAgb24gSUEtMzIgYW5kIFg2NC4NCj4gPiA+IC0NCj4gPiA+IC0gIEByZXR1cm4g VGhlIGN1cnJlbnQgdmFsdWUgb2YgTU01Lg0KPiA+ID4gLQ0KPiA+ID4gLSoqLw0KPiA+ID4gLVVJ TlQ2NA0KPiA+ID4gLUVGSUFQSQ0KPiA+ID4gLUFzbVJlYWRNbTUgKA0KPiA+ID4gLSAgVk9JRA0K PiA+ID4gLSAgKQ0KPiA+ID4gLXsNCj4gPiA+IC0gIFVJTlQ2NCAgRGF0YTsNCj4gPiA+IC0NCj4g PiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgNCj4gPiA+IC0gICAgIm1vdmQgICUlbW01LCAg JTAgICAgXG5cdCINCj4gPiA+IC0gICAgOiAiPXIiICAoRGF0YSkgICAgICAgLy8gJTANCj4gPiA+ IC0gICAgKTsNCj4gPiA+IC0NCj4gPiA+IC0gIHJldHVybiBEYXRhOw0KPiA+ID4gLX0NCj4gPiA+ IC0NCj4gPiA+IC0NCj4gPiA+IC0vKioNCj4gPiA+IC0gIFJlYWRzIHRoZSBjdXJyZW50IHZhbHVl IG9mIDY0LWJpdCBNTVggUmVnaXN0ZXIgIzYNCj4gPiAoTU02KS4NCj4gPiA+IC0NCj4gPiA+IC0g IFJlYWRzIGFuZCByZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVlIG9mIE1NNi4gVGhpcw0KPiA+IGZ1 bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlDQo+ID4gPiAtICBvbiBJQS0zMiBhbmQgWDY0Lg0KPiA+ ID4gLQ0KPiA+ID4gLSAgQHJldHVybiBUaGUgY3VycmVudCB2YWx1ZSBvZiBNTTYuDQo+ID4gPiAt DQo+ID4gPiAtKiovDQo+ID4gPiAtVUlOVDY0DQo+ID4gPiAtRUZJQVBJDQo+ID4gPiAtQXNtUmVh ZE1tNiAoDQo+ID4gPiAtICBWT0lEDQo+ID4gPiAtICApDQo+ID4gPiAtew0KPiA+ID4gLSAgVUlO VDY0ICBEYXRhOw0KPiA+ID4gLQ0KPiA+ID4gLSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKA0KPiA+ ID4gLSAgICAibW92ZCAgJSVtbTYsICAlMCAgICBcblx0Ig0KPiA+ID4gLSAgICA6ICI9ciIgIChE YXRhKSAgICAgICAvLyAlMA0KPiA+ID4gLSAgICApOw0KPiA+ID4gLQ0KPiA+ID4gLSAgcmV0dXJu IERhdGE7DQo+ID4gPiAtfQ0KPiA+ID4gLQ0KPiA+ID4gLQ0KPiA+ID4gLS8qKg0KPiA+ID4gLSAg UmVhZHMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgNjQtYml0IE1NWCBSZWdpc3RlciAjNw0KPiA+IChN TTcpLg0KPiA+ID4gLQ0KPiA+ID4gLSAgUmVhZHMgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgdmFs dWUgb2YgTU03LiBUaGlzDQo+ID4gZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUNCj4gPiA+IC0g IG9uIElBLTMyIGFuZCBYNjQuDQo+ID4gPiAtDQo+ID4gPiAtICBAcmV0dXJuIFRoZSBjdXJyZW50 IHZhbHVlIG9mIE1NNy4NCj4gPiA+IC0NCj4gPiA+IC0qKi8NCj4gPiA+IC1VSU5UNjQNCj4gPiA+ IC1FRklBUEkNCj4gPiA+IC1Bc21SZWFkTW03ICgNCj4gPiA+IC0gIFZPSUQNCj4gPiA+IC0gICkN Cj4gPiA+IC17DQo+ID4gPiAtICBVSU5UNjQgIERhdGE7DQo+ID4gPiAtDQo+ID4gPiAtICBfX2Fz bV9fIF9fdm9sYXRpbGVfXyAoDQo+ID4gPiAtICAgICJtb3ZkICAlJW1tNywgICUwICAgIFxuXHQi DQo+ID4gPiAtICAgIDogIj1yIiAgKERhdGEpICAgICAgIC8vICUwDQo+ID4gPiAtICAgICk7DQo+ ID4gPiAtDQo+ID4gPiAtICByZXR1cm4gRGF0YTsNCj4gPiA+IC19DQo+ID4gPiAtDQo+ID4gPiAt DQo+ID4gPiAtLyoqDQo+ID4gPiAtICBXcml0ZXMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgNjQtYml0 IE1NWCBSZWdpc3Rlcg0KPiAjMA0KPiA+IChNTTApLg0KPiA+ID4gLQ0KPiA+ID4gLSAgV3JpdGVz IHRoZSBjdXJyZW50IHZhbHVlIG9mIE1NMC4gVGhpcyBmdW5jdGlvbiBpcw0KPiA+IG9ubHkgYXZh aWxhYmxlIG9uIElBMzIgYW5kDQo+ID4gPiAtICBYNjQuDQo+ID4gPiAtDQo+ID4gPiAtICBAcGFy YW0gIFZhbHVlIFRoZSA2NC1iaXQgdmFsdWUgdG8gd3JpdGUgdG8gTU0wLg0KPiA+ID4gLQ0KPiA+ ID4gLSoqLw0KPiA+ID4gLVZPSUQNCj4gPiA+IC1FRklBUEkNCj4gPiA+IC1Bc21Xcml0ZU1tMCAo DQo+ID4gPiAtICBJTiAgICAgIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgVmFsdWUNCj4gPiA+ IC0gICkNCj4gPiA+IC17DQo+ID4gPiAtICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoDQo+ID4gPiAt ICAgICJtb3ZkICAlMCwgJSVtbTAiICAvLyAlMA0KPiA+ID4gLSAgICA6DQo+ID4gPiAtICAgIDog Im0iIChWYWx1ZSkNCj4gPiA+IC0gICAgKTsNCj4gPiA+IC19DQo+ID4gPiAtDQo+ID4gPiAtDQo+ ID4gPiAtLyoqDQo+ID4gPiAtICBXcml0ZXMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgNjQtYml0IE1N WCBSZWdpc3Rlcg0KPiAjMQ0KPiA+IChNTTEpLg0KPiA+ID4gLQ0KPiA+ID4gLSAgV3JpdGVzIHRo ZSBjdXJyZW50IHZhbHVlIG9mIE1NMS4gVGhpcyBmdW5jdGlvbiBpcw0KPiA+IG9ubHkgYXZhaWxh YmxlIG9uIElBMzIgYW5kDQo+ID4gPiAtICBYNjQuDQo+ID4gPiAtDQo+ID4gPiAtICBAcGFyYW0g IFZhbHVlIFRoZSA2NC1iaXQgdmFsdWUgdG8gd3JpdGUgdG8gTU0xLg0KPiA+ID4gLQ0KPiA+ID4g LSoqLw0KPiA+ID4gLVZPSUQNCj4gPiA+IC1FRklBUEkNCj4gPiA+IC1Bc21Xcml0ZU1tMSAoDQo+ ID4gPiAtICBJTiAgICAgIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgVmFsdWUNCj4gPiA+IC0g ICkNCj4gPiA+IC17DQo+ID4gPiAtICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoDQo+ID4gPiAtICAg ICJtb3ZkICAlMCwgJSVtbTEiICAvLyAlMA0KPiA+ID4gLSAgICA6DQo+ID4gPiAtICAgIDogIm0i IChWYWx1ZSkNCj4gPiA+IC0gICAgKTsNCj4gPiA+IC19DQo+ID4gPiAtDQo+ID4gPiAtDQo+ID4g PiAtLyoqDQo+ID4gPiAtICBXcml0ZXMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgNjQtYml0IE1NWCBS ZWdpc3Rlcg0KPiAjMg0KPiA+IChNTTIpLg0KPiA+ID4gLQ0KPiA+ID4gLSAgV3JpdGVzIHRoZSBj dXJyZW50IHZhbHVlIG9mIE1NMi4gVGhpcyBmdW5jdGlvbiBpcw0KPiA+IG9ubHkgYXZhaWxhYmxl IG9uIElBMzIgYW5kDQo+ID4gPiAtICBYNjQuDQo+ID4gPiAtDQo+ID4gPiAtICBAcGFyYW0gIFZh bHVlIFRoZSA2NC1iaXQgdmFsdWUgdG8gd3JpdGUgdG8gTU0yLg0KPiA+ID4gLQ0KPiA+ID4gLSoq Lw0KPiA+ID4gLVZPSUQNCj4gPiA+IC1FRklBUEkNCj4gPiA+IC1Bc21Xcml0ZU1tMiAoDQo+ID4g PiAtICBJTiAgICAgIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgVmFsdWUNCj4gPiA+IC0gICkN Cj4gPiA+IC17DQo+ID4gPiAtICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoDQo+ID4gPiAtICAgICJt b3ZkICAlMCwgJSVtbTIiICAvLyAlMA0KPiA+ID4gLSAgICA6DQo+ID4gPiAtICAgIDogIm0iIChW YWx1ZSkNCj4gPiA+IC0gICAgKTsNCj4gPiA+IC19DQo+ID4gPiAtDQo+ID4gPiAtDQo+ID4gPiAt LyoqDQo+ID4gPiAtICBXcml0ZXMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgNjQtYml0IE1NWCBSZWdp c3Rlcg0KPiAjMw0KPiA+IChNTTMpLg0KPiA+ID4gLQ0KPiA+ID4gLSAgV3JpdGVzIHRoZSBjdXJy ZW50IHZhbHVlIG9mIE1NMy4gVGhpcyBmdW5jdGlvbiBpcw0KPiA+IG9ubHkgYXZhaWxhYmxlIG9u IElBMzIgYW5kDQo+ID4gPiAtICBYNjQuDQo+ID4gPiAtDQo+ID4gPiAtICBAcGFyYW0gIFZhbHVl IFRoZSA2NC1iaXQgdmFsdWUgdG8gd3JpdGUgdG8gTU0zLg0KPiA+ID4gLQ0KPiA+ID4gLSoqLw0K PiA+ID4gLVZPSUQNCj4gPiA+IC1FRklBUEkNCj4gPiA+IC1Bc21Xcml0ZU1tMyAoDQo+ID4gPiAt ICBJTiAgICAgIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgVmFsdWUNCj4gPiA+IC0gICkNCj4g PiA+IC17DQo+ID4gPiAtICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoDQo+ID4gPiAtICAgICJtb3Zk ICAlMCwgJSVtbTMiICAvLyAlMA0KPiA+ID4gLSAgICA6DQo+ID4gPiAtICAgIDogIm0iIChWYWx1 ZSkNCj4gPiA+IC0gICAgKTsNCj4gPiA+IC19DQo+ID4gPiAtDQo+ID4gPiAtDQo+ID4gPiAtLyoq DQo+ID4gPiAtICBXcml0ZXMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgNjQtYml0IE1NWCBSZWdpc3Rl cg0KPiAjNA0KPiA+IChNTTQpLg0KPiA+ID4gLQ0KPiA+ID4gLSAgV3JpdGVzIHRoZSBjdXJyZW50 IHZhbHVlIG9mIE1NNC4gVGhpcyBmdW5jdGlvbiBpcw0KPiA+IG9ubHkgYXZhaWxhYmxlIG9uIElB MzIgYW5kDQo+ID4gPiAtICBYNjQuDQo+ID4gPiAtDQo+ID4gPiAtICBAcGFyYW0gIFZhbHVlIFRo ZSA2NC1iaXQgdmFsdWUgdG8gd3JpdGUgdG8gTU00Lg0KPiA+ID4gLQ0KPiA+ID4gLSoqLw0KPiA+ ID4gLVZPSUQNCj4gPiA+IC1FRklBUEkNCj4gPiA+IC1Bc21Xcml0ZU1tNCAoDQo+ID4gPiAtICBJ TiAgICAgIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgVmFsdWUNCj4gPiA+IC0gICkNCj4gPiA+ IC17DQo+ID4gPiAtICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoDQo+ID4gPiAtICAgICJtb3ZkICAl MCwgJSVtbTQiICAvLyAlMA0KPiA+ID4gLSAgICA6DQo+ID4gPiAtICAgIDogIm0iIChWYWx1ZSkN Cj4gPiA+IC0gICAgKTsNCj4gPiA+IC19DQo+ID4gPiAtDQo+ID4gPiAtDQo+ID4gPiAtLyoqDQo+ ID4gPiAtICBXcml0ZXMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgNjQtYml0IE1NWCBSZWdpc3Rlcg0K PiAjNQ0KPiA+IChNTTUpLg0KPiA+ID4gLQ0KPiA+ID4gLSAgV3JpdGVzIHRoZSBjdXJyZW50IHZh bHVlIG9mIE1NNS4gVGhpcyBmdW5jdGlvbiBpcw0KPiA+IG9ubHkgYXZhaWxhYmxlIG9uIElBMzIg YW5kDQo+ID4gPiAtICBYNjQuDQo+ID4gPiAtDQo+ID4gPiAtICBAcGFyYW0gIFZhbHVlIFRoZSA2 NC1iaXQgdmFsdWUgdG8gd3JpdGUgdG8gTU01Lg0KPiA+ID4gLQ0KPiA+ID4gLSoqLw0KPiA+ID4g LVZPSUQNCj4gPiA+IC1FRklBUEkNCj4gPiA+IC1Bc21Xcml0ZU1tNSAoDQo+ID4gPiAtICBJTiAg ICAgIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgVmFsdWUNCj4gPiA+IC0gICkNCj4gPiA+IC17 DQo+ID4gPiAtICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoDQo+ID4gPiAtICAgICJtb3ZkICAlMCwg JSVtbTUiICAvLyAlMA0KPiA+ID4gLSAgICA6DQo+ID4gPiAtICAgIDogIm0iIChWYWx1ZSkNCj4g PiA+IC0gICAgKTsNCj4gPiA+IC19DQo+ID4gPiAtDQo+ID4gPiAtDQo+ID4gPiAtLyoqDQo+ID4g PiAtICBXcml0ZXMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgNjQtYml0IE1NWCBSZWdpc3Rlcg0KPiAj Ng0KPiA+IChNTTYpLg0KPiA+ID4gLQ0KPiA+ID4gLSAgV3JpdGVzIHRoZSBjdXJyZW50IHZhbHVl IG9mIE1NNi4gVGhpcyBmdW5jdGlvbiBpcw0KPiA+IG9ubHkgYXZhaWxhYmxlIG9uIElBMzIgYW5k DQo+ID4gPiAtICBYNjQuDQo+ID4gPiAtDQo+ID4gPiAtICBAcGFyYW0gIFZhbHVlIFRoZSA2NC1i aXQgdmFsdWUgdG8gd3JpdGUgdG8gTU02Lg0KPiA+ID4gLQ0KPiA+ID4gLSoqLw0KPiA+ID4gLVZP SUQNCj4gPiA+IC1FRklBUEkNCj4gPiA+IC1Bc21Xcml0ZU1tNiAoDQo+ID4gPiAtICBJTiAgICAg IFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgVmFsdWUNCj4gPiA+IC0gICkNCj4gPiA+IC17DQo+ ID4gPiAtICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoDQo+ID4gPiAtICAgICJtb3ZkICAlMCwgJSVt bTYiICAvLyAlMA0KPiA+ID4gLSAgICA6DQo+ID4gPiAtICAgIDogIm0iIChWYWx1ZSkNCj4gPiA+ IC0gICAgKTsNCj4gPiA+IC19DQo+ID4gPiAtDQo+ID4gPiAtDQo+ID4gPiAtLyoqDQo+ID4gPiAt ICBXcml0ZXMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgNjQtYml0IE1NWCBSZWdpc3Rlcg0KPiAjNw0K PiA+IChNTTcpLg0KPiA+ID4gLQ0KPiA+ID4gLSAgV3JpdGVzIHRoZSBjdXJyZW50IHZhbHVlIG9m IE1NNy4gVGhpcyBmdW5jdGlvbiBpcw0KPiA+IG9ubHkgYXZhaWxhYmxlIG9uIElBMzIgYW5kDQo+ ID4gPiAtICBYNjQuDQo+ID4gPiAtDQo+ID4gPiAtICBAcGFyYW0gIFZhbHVlIFRoZSA2NC1iaXQg dmFsdWUgdG8gd3JpdGUgdG8gTU03Lg0KPiA+ID4gLQ0KPiA+ID4gLSoqLw0KPiA+ID4gLVZPSUQN Cj4gPiA+IC1FRklBUEkNCj4gPiA+IC1Bc21Xcml0ZU1tNyAoDQo+ID4gPiAtICBJTiAgICAgIFVJ TlQ2NCAgICAgICAgICAgICAgICAgICAgVmFsdWUNCj4gPiA+IC0gICkNCj4gPiA+IC17DQo+ID4g PiAtICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoDQo+ID4gPiAtICAgICJtb3ZkICAlMCwgJSVtbTci ICAvLyAlMA0KPiA+ID4gLSAgICA6DQo+ID4gPiAtICAgIDogIm0iIChWYWx1ZSkNCj4gPiA+IC0g ICAgKTsNCj4gPiA+IC19DQo+ID4gPiAtDQo+ID4gPiAtDQo+ID4gPiAtLyoqDQo+ID4gPiAtICBS ZWFkcyB0aGUgY3VycmVudCB2YWx1ZSBvZiBUaW1lIFN0YW1wIENvdW50ZXINCj4gPiAoVFNDKS4N Cj4gPiA+IC0NCj4gPiA+IC0gIFJlYWRzIGFuZCByZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVlIG9m IFRTQy4gVGhpcw0KPiA+IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlDQo+ID4gPiAtICBvbiBJ QS0zMiBhbmQgWDY0Lg0KPiA+ID4gLQ0KPiA+ID4gLSAgQHJldHVybiBUaGUgY3VycmVudCB2YWx1 ZSBvZiBUU0MNCj4gPiA+IC0NCj4gPiA+IC0qKi8NCj4gPiA+IC1VSU5UNjQNCj4gPiA+IC1FRklB UEkNCj4gPiA+IC1Bc21SZWFkVHNjICgNCj4gPiA+IC0gIFZPSUQNCj4gPiA+IC0gICkNCj4gPiA+ IC17DQo+ID4gPiAtICBVSU5UMzIgIExvd0RhdGE7DQo+ID4gPiAtICBVSU5UMzIgIEhpRGF0YTsN Cj4gPiA+IC0NCj4gPiA+IC0gIF9fYXNtX18gX192b2xhdGlsZV9fICgNCj4gPiA+IC0gICAgInJk dHNjIg0KPiA+ID4gLSAgICA6ICI9YSIgKExvd0RhdGEpLA0KPiA+ID4gLSAgICAgICI9ZCIgKEhp RGF0YSkNCj4gPiA+IC0gICAgKTsNCj4gPiA+IC0NCj4gPiA+IC0gIHJldHVybiAoKChVSU5UNjQp SGlEYXRhKSA8PCAzMikgfCBMb3dEYXRhOw0KPiA+ID4gLX0NCj4gPiA+IC0NCj4gPiA+IC0NCj4g PiA+ICAvKioNCj4gPiA+ICAgIFJlYWRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIGEgUGVyZm9ybWFu Y2UgQ291bnRlcg0KPiA+IChQTUMpLg0KPiA+ID4NCj4gPiA+IEBAIC0xNjYyLDcgKzExMDIsNiBA QCBBc21SZWFkUG1jICgNCj4gPiA+ICAgIHJldHVybiAoKChVSU5UNjQpSGlEYXRhKSA8PCAzMikg fCBMb3dEYXRhOw0KPiA+ID4gIH0NCj4gPiA+DQo+ID4gPiAtDQo+ID4gPiAgLyoqDQo+ID4gPiAg ICBTZXRzIHVwIGEgbW9uaXRvciBidWZmZXIgdGhhdCBpcyB1c2VkIGJ5DQo+ID4gQXNtTXdhaXQo KS4NCj4gPiA+DQo+ID4gPiBAQCAtMTY5OCw3ICsxMTM3LDYgQEAgQXNtTW9uaXRvciAoDQo+ID4g PiAgICByZXR1cm4gRWF4Ow0KPiA+ID4gIH0NCj4gPiA+DQo+ID4gPiAtDQo+ID4gPiAgLyoqDQo+ ID4gPiAgICBFeGVjdXRlcyBhbiBNV0FJVCBpbnN0cnVjdGlvbi4NCj4gPiA+DQo+ID4gPiBAQCAt MTczMCw3ICsxMTY4LDYgQEAgQXNtTXdhaXQgKA0KPiA+ID4gICAgcmV0dXJuIEVheDsNCj4gPiA+ ICB9DQo+ID4gPg0KPiA+ID4gLQ0KPiA+ID4gIC8qKg0KPiA+ID4gICAgRXhlY3V0ZXMgYSBXQklO VkQgaW5zdHJ1Y3Rpb24uDQo+ID4gPg0KPiA+ID4gQEAgLTE3NDcsNyArMTE4NCw2IEBAIEFzbVdi aW52ZCAoDQo+ID4gPiAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoIndiaW52ZCI6OjoibWVtb3J5 Iik7DQo+ID4gPiAgfQ0KPiA+ID4NCj4gPiA+IC0NCj4gPiA+ICAvKioNCj4gPiA+ICAgIEV4ZWN1 dGVzIGEgSU5WRCBpbnN0cnVjdGlvbi4NCj4gPiA+DQo+ID4gPiBAQCAtMTc5Niw1ICsxMjMyLDMg QEAgQXNtRmx1c2hDYWNoZUxpbmUgKA0KPiA+ID4NCj4gPiA+ICAgICAgcmV0dXJuIExpbmVhckFk ZHJlc3M7DQo+ID4gPiAgfQ0KPiA+ID4gLQ0KPiA+ID4gLQ0KPiA+ID4gLS0NCj4gPiA+IDIuMjEu MC53aW5kb3dzLjENCg0K