From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by mx.groups.io with SMTP id smtpd.web08.15001.1608660873423645084 for ; Tue, 22 Dec 2020 10:14:33 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=Q3959uyW; spf=pass (domain: intel.com, ip: 192.55.52.43, mailfrom: michael.d.kinney@intel.com) IronPort-SDR: W90b60O1C3u4ZoCINK9Hp/D0FVy6kqzV6Ru4m+QIHMSLZrS7K5NAlxralC/WSIQdms+pl+Ac4I KlJYwdeHdbqA== X-IronPort-AV: E=McAfee;i="6000,8403,9843"; a="260638192" X-IronPort-AV: E=Sophos;i="5.78,439,1599548400"; d="scan'208";a="260638192" Received: from orsmga006.jf.intel.com ([10.7.209.51]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Dec 2020 10:14:32 -0800 IronPort-SDR: EvzMHU14l1VCRYXhhs3wibVFPbTwpUaIMcIFNrMsMwgtykuc5VfOHcP6UZqsKQNZpoUMQ55O9u sGAHpc5CuN2g== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.78,439,1599548400"; d="scan'208";a="345739206" Received: from orsmsx602.amr.corp.intel.com ([10.22.229.15]) by orsmga006.jf.intel.com with ESMTP; 22 Dec 2020 10:14:32 -0800 Received: from orsmsx607.amr.corp.intel.com (10.22.229.20) by ORSMSX602.amr.corp.intel.com (10.22.229.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Tue, 22 Dec 2020 10:14:31 -0800 Received: from orsmsx602.amr.corp.intel.com (10.22.229.15) by ORSMSX607.amr.corp.intel.com (10.22.229.20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Tue, 22 Dec 2020 10:14:31 -0800 Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by orsmsx602.amr.corp.intel.com (10.22.229.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5 via Frontend Transport; Tue, 22 Dec 2020 10:14:31 -0800 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (104.47.66.48) by edgegateway.intel.com (134.134.137.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.1713.5; Tue, 22 Dec 2020 10:14:31 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=JSx/jGqzKLpo42rC9kd+dYwjCsgLNpCYFSrA01O7q4nPkjpC8vvCpKPE58KBZz+mKOfNIByaZgW/myt+B0TuG9OFLuDQtr9rBW/OAOpzv2mJntNLW+hK/85v9iUCrGWju5KaFQ76oPTn/RnrTeoTWqXae9YlhU3fh4xvAWyy9v7jqCv4UWZQ8Yl5R27+FAo+hPgLmKAvMnVYbGpBZamP+2OpXPvkdeVuhNsWgXxxP4aD6s6XNo7qmnk0bnujpuvDTzCmQ4yUzwmaSUlojB3yTX2H4BS7nUNt0gXbL3WmBWt1A695ypkDkqIans0g1oCsPj27zWd59ethvHvE7R2jVg== 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=jVBcxywmjZMiMdJEo0E1VPBWpyYaxirZIhc1muquqv8=; b=NLSaBhW5WeH13uerSks4J3umWJgxkOKAZ+mP5dBtM8TLJrHFfSduL97vi/Nb/OnrAFda1JTm8Ca6nHuZLGle2bHZ/WWCNrvktxRiHRXl7uMcV2BysD3B/OuwQDacBiyF8UPyf/Gsf4PUkr1LGcYwnaJjFfk9rWDKCOzk8ywOGyKLAwrCL0lscjVdT+37PYX5rRNuf4OMyN6hOCBdcX3aBgZRekt4g3a4OF4DpWrNeM6XS+T89PeV/9Wu5JuWvLcm9yYQ/1kPBcsd8e9/n6iOsE912U68UwBMvYmPyrw6NBVLGr7WVgK3Uk09lpRxZEBstFjpRhJrhg8v9YWgR9D+6g== 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=jVBcxywmjZMiMdJEo0E1VPBWpyYaxirZIhc1muquqv8=; b=Q3959uyWnEj0LgP86Wl4jqwClJUYolVRuOxrtNNBZUd1kr7Swffd+Y4o5kw6E5K7rSLo7At36QpjGwovWl4biz7rS3Poonfpj+hh4amn2lXQX5MVdz6T3jIomJR/oq8vMMstfC1f7dE1qAggmTk721O+pezut2DXRIJxTlyf97s= Received: from BL0PR11MB3236.namprd11.prod.outlook.com (2603:10b6:208:60::18) by BL0PR11MB3187.namprd11.prod.outlook.com (2603:10b6:208:67::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3654.21; Tue, 22 Dec 2020 18:14:30 +0000 Received: from BL0PR11MB3236.namprd11.prod.outlook.com ([fe80::9112:3701:9e1a:3f78]) by BL0PR11MB3236.namprd11.prod.outlook.com ([fe80::9112:3701:9e1a:3f78%6]) with mapi id 15.20.3676.033; Tue, 22 Dec 2020 18:14:30 +0000 From: "Michael D Kinney" To: "Chang, Abner (HPS SW/FW Technologist)" , "devel@edk2.groups.io" , "Kinney, Michael D" CC: Sean Brogan , Bret Barkelew , Andrew Fish , Laszlo Ersek , Leif Lindholm , Liming Gao , "Wang, Nickle (HPS SW)" , "O'Hanley, Peter (EXL)" Subject: Re: [PATCH v8 0/6] jansson edk2 port Thread-Topic: [PATCH v8 0/6] jansson edk2 port Thread-Index: AQHW1N4KALZdXXzZjU+e5YmRTCg3N6oAUjyQgACDDDCAAS12sA== Date: Tue, 22 Dec 2020 18:14:29 +0000 Message-ID: References: <20201217131839.3762-1-abner.chang@hpe.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.5.1.3 authentication-results: hpe.com; dkim=none (message not signed) header.d=none;hpe.com; dmarc=none action=none header.from=intel.com; x-originating-ip: [24.19.191.44] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 9f82b7ff-0736-4f1d-c26b-08d8a6a56cec x-ms-traffictypediagnostic: BL0PR11MB3187: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: huDdDmZUBHAEgrE1h8i+35/LzS/orT2fv3ErR2iOP2NCes4MMPdKzx6kwNdAGU7mUlMVSB+6SSO4go1+prJsw3WXeoj1qYn4d2J3MFir/7K9QKGhtUjdiDtaqTuFUM/gYJvxQVsE3mqmctdzG8EY7tsC/8tTA/axVvN59FWAKOUNDSJ4D+3fhkjbxXV1ABPb+q6ro+wHEK8LWyJD2iub+LRb0pQJnjs7hABtsWCn6zSb6xqHOYzJOWPT0P0RU8U7gtX3395Y1Vamr2iEQl/FkaIvlUVue0pQ+NRGLWMUnK5/eENM2Lnky7XF23oGWjFGoe9e3SjJGB3n5lZ/nDDN+4XyuyfGlpw6608XaUbDLBFMFNJtuuolTA/+6eyCHpPHCidGFPWOb/iDjRxqP1fsAA== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL0PR11MB3236.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(136003)(366004)(39860400002)(376002)(396003)(346002)(53546011)(4326008)(76116006)(54906003)(6506007)(71200400001)(110136005)(7416002)(7696005)(9686003)(8676002)(83380400001)(33656002)(296002)(8936002)(478600001)(26005)(5660300002)(19627235002)(52536014)(64756008)(66946007)(316002)(66476007)(186003)(66446008)(66556008)(966005)(30864003)(2906002)(86362001)(55016002);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: =?utf-8?B?SDJUemtLMzRXVXJYVW5BbWVCVUdIVzc3a3p6dmRuakxoMU83di9wQjhBdHFo?= =?utf-8?B?Q2ExNUV4MGxZOXlTUnNKT1ZMMis3ZVVNbzlxNzhoVjh5OUhCWStQdWdvYURB?= =?utf-8?B?Q01BR1BObW9IT3VYajM1TUNIdVpXQ0V5YXVtdGlXNlQ2aUZ4Nk1KOFprMlht?= =?utf-8?B?a29CV0ZFYmcydGpDK2ZOaXMzclNkWnh1RWcyeWdybE1ueDMxL1NSN29tay8y?= =?utf-8?B?aTNNYTJjeExlU096V1NsanB0SlU3MFYzcWlPbjkwMzRMYTJIWkpXZ2V5Zzd0?= =?utf-8?B?QjZIY0IvRDViOTF5MVpHUTFlTjNpN3o3cFgwRTFHWW96UEdIcVRDb1dtM2ho?= =?utf-8?B?Q2NBaTZHUW5CeTQ5Q0pjMURIMmZHS08zZXVZaU11aDhqZ1FLVmdlSkdKUzBI?= =?utf-8?B?ZHRRMUpmR3g4akZoRW9CWXl1eGR6OTE0ZENBTzY4U3lwa1BFcTgwM2NYZ1Bm?= =?utf-8?B?ZGRBcTcyK2tpUGkrcFFKSEtQSE1kSCswOXFLOXNIUFBtQ2Q0VUlBTzVzaEhz?= =?utf-8?B?UURIWUlxZHljeWxjd3FsZHhTSUxWZ05OL1BwYkxOV2dZaUNIWExRL2ZIMzlh?= =?utf-8?B?U1A0N2NlRlA4ZTE4WTEzYTVSVWZ3QjltUG5ISHVQd3l4dExuQjdnd0M3dUZS?= =?utf-8?B?M0RIdHdwRFkvcFcxRDhGcCswK2JyTzAzaGhtZm9IdWc0emZxSEJ1STJxR0lC?= =?utf-8?B?a1duR2JxL01IeDlVTER4UXB6czMvNXl2SGhTV2ZiVnJ3VVpMbEFGMk1Nb0hn?= =?utf-8?B?UnNLWXJaN3hNRjVFV3FjNktOWnZKMTJMVisveitQNVBld0Z4em16MHpYQi8y?= =?utf-8?B?cVlPNXZ4LzhlV3VpQW9mZzNVMHpXbFY2SmJGZ2lXZDF0QW5mak13TUQ2TkNo?= =?utf-8?B?WWdLWWJyT2pmQ3Y3TGlBNDR1NnFZS2hrOEZiWlROc3p3REs2OTVsbzY2Z3hp?= =?utf-8?B?V3dTRTBBSkVSdkpiSmVNa1RXdEdReVdiWVpKZXBHRnNrWkR1UVNCcUpCQ1dL?= =?utf-8?B?NGI5aEtjb2YrNkp6NzlVQWg4OGp6WDlGcDNQTG5iR2VEajBPUWVWMUNyeHVy?= =?utf-8?B?Z05sYzM5MnhFS2VvU09CS3FISnVqblZuTjNzRmw0VzZsNEdGOUVFRFc2N3VF?= =?utf-8?B?bGtEN3lEOFozS1NYOUx6NjNyTTRqcitqMTVGbGlTVWNJZUN5UmVBUU9STUx5?= =?utf-8?B?bk1sK09hM0pPWWdpcEF6bkx3N2JBVGd0YTNHQU1lcS9iT09xK2VOejdLMEdI?= =?utf-8?B?TG5reTlrWVVzaHpIcElnUW1qbFU0Y3FCOEhYMzdsNUJnQUtITmc1ekxQM3F1?= =?utf-8?Q?Gsw+0BV/ckuvE=3D?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BL0PR11MB3236.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9f82b7ff-0736-4f1d-c26b-08d8a6a56cec X-MS-Exchange-CrossTenant-originalarrivaltime: 22 Dec 2020 18:14:29.8426 (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: n5Mr58ULsPHQSz//6zp5IOai1UUfSdm0exdJw+Z2V0EGm17ozI63lP1nxHIg+hzKAY2WsQJDNLTudMrGYRIRjZI0b2H71VS2psKjaKueAXQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL0PR11MB3187 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 SGkgQWJuZXIsDQoNCkEgZmV3IGNvbW1lbnRzIGJlbG93Lg0KDQpCZXN0IHJlZ2FyZHMsDQoNCk1p a2UNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBDaGFuZywgQWJuZXIg KEhQUyBTVy9GVyBUZWNobm9sb2dpc3QpIDxhYm5lci5jaGFuZ0BocGUuY29tPg0KPiBTZW50OiBN b25kYXksIERlY2VtYmVyIDIxLCAyMDIwIDEyOjE3IEFNDQo+IFRvOiBLaW5uZXksIE1pY2hhZWwg RCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+OyBkZXZlbEBlZGsyLmdyb3Vwcy5pbw0KPiBD YzogU2VhbiBCcm9nYW4gPHNlYW4uYnJvZ2FuQG1pY3Jvc29mdC5jb20+OyBCcmV0IEJhcmtlbGV3 IDxCcmV0LkJhcmtlbGV3QG1pY3Jvc29mdC5jb20+OyBBbmRyZXcgRmlzaCA8YWZpc2hAYXBwbGUu Y29tPjsNCj4gTGFzemxvIEVyc2VrIDxsZXJzZWtAcmVkaGF0LmNvbT47IExlaWYgTGluZGhvbG0g PGxlaWZAbnV2aWFpbmMuY29tPjsgTGltaW5nIEdhbyA8Z2FvbGltaW5nQGJ5b3NvZnQuY29tLmNu PjsgV2FuZywgTmlja2xlDQo+IChIUFMgU1cpIDxuaWNrbGUud2FuZ0BocGUuY29tPjsgTydIYW5s ZXksIFBldGVyIChFWEwpIDxwZXRlci5vaGFubGV5QGhwZS5jb20+DQo+IFN1YmplY3Q6IFJFOiBb UEFUQ0ggdjggMC82XSBqYW5zc29uIGVkazIgcG9ydA0KPiANCj4gTWlrZSwgcmVzcG9uc2UgaW4g YmVsb3cuIEFsc28gdjkgaXMgc2VudC4NCj4gDQo+IFRoYW5rcyBmb3IgcmV2aWV3IHRoaXMgaW4g ZGV0YWlsLg0KPiBBYm5lcg0KPiANCj4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ IEZyb206IEtpbm5leSwgTWljaGFlbCBEIFttYWlsdG86bWljaGFlbC5kLmtpbm5leUBpbnRlbC5j b21dDQo+ID4gU2VudDogTW9uZGF5LCBEZWNlbWJlciAyMSwgMjAyMCAzOjQzIEFNDQo+ID4gVG86 IENoYW5nLCBBYm5lciAoSFBTIFNXL0ZXIFRlY2hub2xvZ2lzdCkgPGFibmVyLmNoYW5nQGhwZS5j b20+Ow0KPiA+IGRldmVsQGVkazIuZ3JvdXBzLmlvOyBLaW5uZXksIE1pY2hhZWwgRCA8bWljaGFl bC5kLmtpbm5leUBpbnRlbC5jb20+DQo+ID4gQ2M6IFNlYW4gQnJvZ2FuIDxzZWFuLmJyb2dhbkBt aWNyb3NvZnQuY29tPjsgQnJldCBCYXJrZWxldw0KPiA+IDxCcmV0LkJhcmtlbGV3QG1pY3Jvc29m dC5jb20+OyBBbmRyZXcgRmlzaCA8YWZpc2hAYXBwbGUuY29tPjsgTGFzemxvDQo+ID4gRXJzZWsg PGxlcnNla0ByZWRoYXQuY29tPjsgTGVpZiBMaW5kaG9sbSA8bGVpZkBudXZpYWluYy5jb20+OyBM aW1pbmcgR2FvDQo+ID4gPGdhb2xpbWluZ0BieW9zb2Z0LmNvbS5jbj47IFdhbmcsIE5pY2tsZSAo SFBTIFNXKQ0KPiA+IDxuaWNrbGUud2FuZ0BocGUuY29tPjsgTydIYW5sZXksIFBldGVyIChFWEwp IDxwZXRlci5vaGFubGV5QGhwZS5jb20+DQo+ID4gU3ViamVjdDogUkU6IFtQQVRDSCB2OCAwLzZd IGphbnNzb24gZWRrMiBwb3J0DQo+ID4NCj4gPiBIaSBBYm5lciwNCj4gPg0KPiA+IFRoZSBpbmNs dWRlIHBhdGggaW4gdGhlIFtJbmNsdWRlLkNvbW1vbi5Qcml2YXRlXSBzZWN0aW9uIHNob3VsZCBu b3QgYmUgaW4NCj4gPiB0aGUgc2FtZSBmaWxlIHBhdGggYXMgdGhlIFtJbmNsdWRlXSBzZWN0aW9u LiAgVGhpcyBhbGxvd3MgcHJpdmF0ZSBpbmNsdWRlIGZpbGVzIHRvDQo+ID4gYmUgYWNjZXNzZWQu DQo+ID4NCj4gPiBJbnN0ZWFkLCB5b3Ugc2hvdWxkIGNyZWF0ZSBhIG5ldyB0b3AgbGV2ZWwgcGFj a2FnZSBkaXJlY3RvcnkgY2FsbGVkDQo+ID4gUHJpdmF0ZUluY2x1ZGUgYW5kIHB1dCBhbGwgbm9u LXB1YmxpYyBpbmNsdWRlIGNvbnRlbnQgaW4gdGhhdCBkaXJlY3RvcnkuICBUaGUNCj4gPiBVbml0 VGVzdEZyYW1ld29ya1BrZyBpcyBhIGdvb2QgcmVmZXJlbmNlIHRoYXQgZGVtb25zdHJhdGVzIHRo aXMgZGVzaWduDQo+ID4gcGF0dGVybi4NCj4gWWVzLCB0aGlzIGxvb2tzIGJldHRlci4gQWxsIENy dCBoZWFkZXIgZmlsZXMgYW5kIENydExpYi5oIHdpbGwgYmUgbW92ZWQgdG8gdW5kZXIgUHJpdmF0 ZUluY2x1ZGUuDQo+ID4NCj4gPiBUaGUgbGlicmFyeSBjbGFzcyBuYW1lIENydExpYiBpcyB2ZXJ5 IGdlbmVyaWMgYW5kIHRoZSBsaWJyYXJ5IGNsYXNzIGlzIGluIHRoZQ0KPiA+IHB1YmxpYyBpbmNs dWRlcyBzbyBpdCBpcyBleHBvcnRlZCBhcyBhIHB1YmxpYyBpbnRlcmZhY2UgZnJvbSB0aGUgUmVk ZmlzaFBrZy4NCj4gPiBUaGlzIENydExpYiBpbXBsZW1lbnRhdGlvbiBhcHBlYXJzIHRvIGJlIHR1 bmVkIHRvIHN1cHBvcnQgdGhlDQo+ID4gZGVwZW5kZW5jaWVzIGZvciB0aGUgamFuc3NvbiBzdWJt b2R1bGUuICBJIHJlY29tbWVuZCBjaGFuZ2luZyB0aGUgbGlicmFyeQ0KPiA+IGNsYXNzIG5hbWUg YW5kIHRoZSBsaWJyYXJ5IGluc3RhbmNlIG5hbWUgc28gaXQgaXMgY2xlYXIgdGhhdCB0aGlzIENy dExpYiBpcyBvbmx5DQo+ID4gZm9yIGphbnNzb24uDQo+ID4gUGVyaGFwcyAnSmFuc3NvbkNydExp YicuDQo+IFRoZSBDcnRMaWIgaXMgbm90IHVzZWQgYnkgamFubnNvbiBsaWIsIGxpYnJlZGZpc2gg YXMgd2VsbCAoaHR0cHM6Ly9naXRodWIuY29tL0RNVEYvbGlicmVkZmlzaCkuIFNvIEphbnNzb25D cnRMaWIgaXMgbm90IGENCj4gZ29vZCBuYW1pbmcsIHdpbGwga2VlcCB0aGF0IGFzIGl0Lg0KPiAN Cj4gPkFsc28sIGRvZXMgdGhpcyBsaWJyYXJ5IGNsYXNzIChDcnRMaWIuaCkgbmVlZCB0byBiZQ0K PiA+IGV4cG9ydGVkIGZyb20gUmVkZmlzaFBrZyBhcyBhIHB1YmxpYyBpbnRlcmZhY2U/DQo+IE5v LCBpdCB3aWxsIGJlIG1vdmVkIHRvIHVuZGVyIFByaXZhdGVJbmNsdWRlLg0KPiANCj4gSWYgQ3J0 TGliLmggaXMgZGVmaW5lZCBhcyBhIHByaXZhdGUgbGlicmFyeSBhbmQgQ3J0TGliLmggaXMgaW4g UHJpdmF0ZUluY2x1ZGUgd2hpY2ggaXMgbm90IGV4cG9zZWQgdG8gb3RoZXIgcGFja2FnZXMsIHRo ZW4NCj4gd2h5IGRvIHdlIGNhcmUgYWJvdXQgdGhlIG5hbWluZyBvZiBDcnRMaWIgaXMgdG9vIGdl bmVyaWM/IFdoaWNoIGlzIHRoZSBwcml2YXRlIGxpYnJhcnkgdW5kZXIgUmVkZmlzaFBrZy4NCj4g TW92ZSB0aG9zZSBoZWFkZXIgZmlsZXMgdG8gdW5kZXIgUHJpdmF0ZUluY2x1ZGUgc2VlbXMgY2xl YXIgdG8gcGVvcGxlIHRoYXQgQ3J0TGliIGlzIG9ubHkgZm9yIFJlZGZpc2hQa2cuIEkgdGhpbmsg d2UgZG9u4oCZdA0KPiBoYXZlIHRvIGNoYW5nZSB0aGUgbmFtaW5nIGluIHRoaXMgY2FzZS4NCg0K SW4gZ2VuZXJhbCBJIGFncmVlLCBidXQgdGhlcmUgaXMgb25lIHBsYWNlIHdoZXJlIHRoZSBsaWIg bWFwcGluZyBoYXMgd2lkZXIgc2NvcGUsIGFuZCB0aGF0IGlzIGluIGEgcGxhdGZvcm0gRFNDDQpm aWxlLiAgVGhlIGxpYiBjbGFzcyBuYW1lIENydExpYiBoYXMgdG8gYmUgbGlzdGVkIGluIHRoZSBE U0MgZmlsZS4gIElmIG1vcmUgdGhhbiBvbmUgcGFja2FnZSBkZWZpbmVzIGEgbGlicmFyeQ0KY2xh c3MgY2FsbGVkIENydExpYiwgdGhlbiB0aGUgbGFzdCBtYXBwaW5nIHVzZWQgd2lsbCBiZSB1c2Vk IGZvciBhbGwgbW9kdWxlcyBpZiBpdCBpcyBsaXN0ZWQgaW4gdGhlIFtMaWJyYXJ5Q2xhc3Nlc10N CnNlY3Rpb24gb2YgdGhlIERTQyBmaWxlLiAgVGhlIG9ubHkgd2FzIHRvIGhhbmRsZSB0aGlzIHR5 cGUgb2YgbmFtZSBjb2xsaXNpb24gaXMgdG8gdXNlIGEgbW9kdWxlIHNjb3BlZCANCmxpYnJhcnkg bWFwcGluZyBpbiB0aGUgPExpYnJhcnlDbGFzc2VzPiBzZWN0aW9uIG9mIGVhY2ggaW5kaXZpZHVh bCBtb2R1bGUgdGhhdCB1c2VzIGEgQ3J0TGliLiAgSSBhbSBvbmx5DQp0cnlpbmcgdG8gYXZvaWQg dGhlIHBvdGVudGlhbCBmb3IgZnV0dXJlIG5hbWUgY29sbGlzaW9ucyBmb3IgYSBsaWJyYXJ5IGNs YXNzL2luc3RhbmNlIHRoYXQgaXMgc3BlY2lmaWMgdG8NCnRoZSBKU09OIHVzZSBjYXNlLiAgDQoN CldlIHJlY29nbml6ZSB0aGF0IHNldmVyYWwgbW9kdWxlcyBpbiBlZGsyIGhhdmUgdGhpcyB0eXBl IG9mIGdhc2tldCBiZXR3ZWVuIGFuIEVESyBJSSBlbnYgYW5kIGEgc3RhbmRhcmQgQw0KbGliLiAg V2UgbWF5IGZpbmQgYSB3ZSB0byBpbXBsZW1lbnQgYSBtb3JlIGdlbmVyaWMgZ2Fza2V0IGFuZCBy ZXRpcmUgdGhlIHVzZSBvZiB0aGUgaW1wbGVtZW50YXRpb24gc3BlY2lmaWMNCm9uZXMuICBUaGlz IGlzIGFub3RoZXIgcmVhc29uIHRvIHVzZSBhbiBpbXBsZW1lbnRhdGlvbiBzcGVjaWZpYyBuYW1l IGluIHRoaXMgdXNlIGNhc2UgYW5kIGJlIGFibGUgdG8NCmludHJvZHVjZSBhIG1vcmUgZ2VuZXJp YyBuYW1lIGluIHRoZSBmdXR1cmUuDQoNCkFub3RoZXIgY29tbWVudCBiZWxvdyB0byBzZWUgaWYg dGhlcmUgaXMgYSB3YXkgdG8gYXZvaWQgaW50cm9kdWNpbmcgYSBDcnRMaWIgY2xhc3MuDQoNCj4g DQo+ID4NCj4gPiAqIFJlZGZpc2hQa2cvSW5jbHVkZS9MaWJyYXJ5L0NydExpYi5oDQo+ID4gICAr IFJlbW92ZSByZWZlcmVuY2UgdG8gTURFX0NQVV9JQTY0LiAgVGhpcyBoYXMgYmVlbiByZXRpcmVk IGZyb20gdGhlDQo+ID4gZWRrMiByZXBvLg0KPiBPay4NCj4gPiAgICsgSSBkbyBzZWUgb25lIHJl bWFpbmluZyByZWZlcmVuY2UgdG8gdGhpcyBpbiB0aGUgQ3J5cHRvUGtnIHRoYXQgbmVlZCB0byBi ZQ0KPiA+ICAgICByZW1vdmVkLg0KPiA+DQo+ID4gKiBSZWRmaXNoUGtnL0luY2x1ZGUvTGlicmFy eS9Kc29uTGliLmgNCj4gPiAgICsgU29tZSBvZiB0aGUgZnVuY3Rpb24gZGVzY3JpcHRpb25zIGFy ZSB2ZXJ5IGJyaWVmIGFuZCBJIGNhbiBub3QgdGVsbA0KPiA+ICAgICBob3cgdG8gdXNlIHRoZSBz ZXJ2aWNlIGZyb20gdGhlIGRlc2NyaXB0aW9uIGFuZCBtb3JlIGltcG9ydGFudGx5LCBJDQo+ID4g ICAgIHdvdWxkIG5vdCBrbm93IGhvdyB0byB3cml0ZSBhIHVuaXQgdGVzdCB0byB2ZXJpZnkgdGhl IGV4cGVjdGVkIGJlaGF2aW9yLg0KPiA+ICAgICBTaW5jZSB0aGVzZSBhcmUgYSBzZXQgb2YgcHVi bGljIEFQSXMgZnJvbSB0aGlzIHBhY2thZ2UgdGhhdCB5b3UNCj4gPiAgICAgZXhwZWN0IG1vZHVs ZXMvbGlicyBmcm9tIG91dHNpZGUgb2YgUmVkZmlzaFBrZyB0byB1c2UsIHRoZW4gYWxsIG9mDQo+ ID4gICAgIHRoZXNlIHB1YmxpYyBBUElzIG11c3QgYmUgZnVsbHkgZG9jdW1lbnRlZC4NCj4gTW9z dCBvZiB0aGUgQVBJIGluIEpzb25MaWIgYXJlIHdyYXBwZXJzIG9mIG5hdGl2ZSBqYW5zc29uIEFQ SXMuIFdlIGNhbiBtZW50aW9uIHRoZSBVUkwgdG8gamFuc3NvbiBBUEkgcmVmZXJlbmNlIGRvY3Vt ZW50DQo+IGluIGZpbGUgaGVhZGVyLiBodHRwczovL2phbnNzb24ucmVhZHRoZWRvY3MuaW8vZW4v Mi4xMy9pbmRleC5odG1sDQo+IEkgd2lsbCByZXZpZXcgYWxsIGZ1bmN0aW9uIGhlYWRlciBhZ2Fp biwgIHBsZWFzZSBjaGVjayB2OSBwYXRjaCBsYXRlci4NCj4gDQo+ID4gICArIEFyZSB0aGVyZSBh bnkgb2YgdGhlc2UgQVBJcyB0aGF0IGFyZSBub3QgcmVhbGx5IG5lZWRlZCBieSBtb2R1bGVzL2xp YnMNCj4gPiAgICAgb3V0c2lkZSB0aGUgUmVkZmlzaFBrZz8gIEl0IHdvdWxkIGJlIGJldHRlciB0 byByZW1vdmUgQVBJcyB0aGF0IGFyZQ0KPiA+ICAgICBub3QgbmVlZGVkIG91dHNpZGUgUmVkZmlz aFBrZyBmcm9tIHRoaXMgcHVibGljIGluY2x1ZGUgZmlsZS4NCj4gPiAgICsgQSBjb3VwbGUgZXhh bXBsZXMgdGhhdCBzdG9vZCBvdXQgYXJlOg0KPiA+ICAgICBKc29uRGVjcmVhc2VSZWZlcmVuY2Uo KQ0KPiA+ICAgICBKc29uSW5jcmVhc2VSZWZlcmVuY2UoKQ0KPiA+ICAgICBKc29uT2JqZWN0SXRl cmF0b3IoKQ0KPiA+ICAgICBKc29uT2JqZWN0SXRlcmF0b3JWYWx1ZSgpDQo+ID4gICAgIEpzb25P YmplY3RJdGVyYXRvck5leHQoKQ0KPiBUaGUgbmF0aXZlIGphbnNzb24gQVBJcyBvZiBhbGwgYWJv dmUgd3JhcHBlcnMgYXJlIHVzZWQgaW4gbGlicmVkZmlzaC4gU28gdGhhdCBpcyB0aGUgcG90ZW50 aWFsIHVzZSBjYXNlIGZvciBvdGhlciBKU09ODQo+IGFwcGxpY2F0aW9ucy4NCg0KQ2FuIHlvdSBw cm92aWRlIGEgcG9pbnRlciB0byBhbiBleGFtcGxlIG9mIHRoaXMgdXNlIGNhc2U/DQoNCkkgYW0g dHJ5aW5nIHRvIG1ha2Ugc3VyZSB3ZSBhcmUgZG9pbmcgdGhlIHJpZ2h0IGRlc2lnbiBvZiBSZWRm aXNoUGtnIHdpdGggcmVzcGVjdCB0byBDcnRMaWINCmZvciB0aGlzIHVzZSBjYXNlLiAgQXJlIHRo ZXNlIGFyZSBKU09OIGFwcHMgdGhhdCBkbyBub3QgdXNlIEpzb25MaWIsIGJ1dCBhcmUgZXhwZWN0 ZWQgdG8gYnVpbGQNCmluIGFuIEVESyBJSSBidWlsZCBlbnZpcm9ubWVudD8gIFdvdWxkIHRoZXNl IEpTT04gYXBwcyByZXF1aXJlIG1vcmUgc3RhbmRhcmQgQyBsaWIgc2VydmljZXMgDQp0aGFuIHRo ZSBDcnRMaWIgdXNlZCB0byBidWlsZCBKc29uTGliPyAgV2hlcmUgd291bGQgdGhvc2UgYWRkaXRp b25hbCBDIGxpYiBzZXJ2aWNlcyBjb21lIGZyb20/DQoNClRoZXJlIGlzIGEgc3RhbmRhcmQgQyBs aWIgaW4gZWRrMi1saWJjLiAgV291bGQgdGhhdCBiZSByZXF1aXJlZCB0byBidWlsZCB0aGUgSlNP TiBhcHBzLg0KDQpJbiBvdGhlciB1c2VzIG9mIHN1Ym1vZHVsZXMgd2l0aCBDIGxpYiBkZXBlbmRl bmNpZXMsIGEgbmV3IENydExpYiBsaWtlIGxpYiBjbGFzcyB3YXMgbm90DQphZGRlZCBhbmQgaW5z dGVhZCB0aGUgc3VwcG9ydCB3YXMgYWRkZWQgZGlyZWN0bHkgdG8gdGhlIEVESyBJSSB3cmFwcGVy IEFQSXMuIFNvbWUgZXhhbXBsZXMgYXJlOg0KICAqIE1kZU1vZHVsZVBrZ1xMaWJyYXJ5XEJyb3Rs aUN1c3RvbURlY29tcHJlc3NMaWINCiAgKiBNZGVNb2R1bGVQa2dcVW5pdmVyc2FsXFJlZ3VsYXJF eHByZXNzaW9uRHhlDQoNCklmIHRoZXJlIGFyZSB1c2UgY2FzZXMgd2hlcmUgdGhlIENydExpYiB3 aWxsIGJlIGFkZGVkIHRvIGFuIElORiBvdXRzaWRlIHRoZSBSZWRmaXNoUGtnLCB0aGVuIA0KSSBz dGlsbCB0aGluayB0aGUgbmFtZSBuZWVkcyB0byBiZSBjaGFuZ2VkIHRvIGJlIHNwZWNpZmljIHRv IHRoZSBKU09OIHVzZSBjYXNlLg0KDQpJZiB0aGUgdXNlIG9mIENydExpYiBpcyBvbmx5IHdpdGhp biB0aGUgUmVkZmlzaFBrZywgdGhlbiB0aGUgTGlicmFyeSBDbGFzcyBjYW4gYmUgDQpkZWNsYXJl ZCBpbiBhIFtMaWJyYXJ5Q2xhc3Nlcy5Db21tb24uUHJpdmF0ZV0gc2VjdGlvbiBvZiB0aGUgREVD IGZpbGUuICBTZWUNClVuaXRUZXN0RnJhbWV3b3JrUGtnIGZvciBleGFtcGxlcy4NCg0KPiANCj4g PiAgICsgSnNvbkR1bXBTdHJpbmcoKQ0KPiA+ICAgICBmdW5jIGhlYWRlciBwYXJhbXMgZG8gbm90 IG1hdGNoIGZ1bmMgcHJvdG90eXBlDQo+ID4gICAgIERvZXMgbm90IGRlc2NyaWJlIHdobyBhbGxv Y2F0ZXMgdGhlIHJldHVybiBidWZmZXIgYW5kIHdobw0KPiA+ICAgICBpcyByZXNwb25zaWJsZSBm b3IgZnJlZWluZyB0aGUgYnVmZmVyIHJldHVybmVkLg0KPiA+ICAgICBXaGF0IGRvIEZsYWdzIGRv PyAgV2hhdCBpcyB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoaXMNCj4gPiAgICAgZnVuY3Rpb24g YW5kIEpzb25Ub1RleHQoKT8NCj4gSW4gSnNvblRvVGV4dCwgaXQgb25seSBjb252ZXJ0cyBKU09O IGFycmF5IGFuZCBvYmplY3QgdG8gdGV4dC4gV2UgY291bGQganVzdCByZW1vdmUgdGhpcyBmb3Ig bm93IGJlY2F1c2UgSSBkb27igJl0IHJlYWxseQ0KPiByZW1lbWJlciB0aGUgcmVhc29uIHRvIGNy ZWF0ZSB0aGlzIGZ1bmN0aW9uLCBpdCBoYXMgYmVlbiBhIHdoaWxlLiBTZWVtcyB0byBtZSBpdCBp cyBmaW5lIHRvIHJlbW92ZSB0aGlzIGZ1bmN0aW9uLg0KPiANCj4gPiAgICsgSnNvbkxvYWRCdWZm ZXIoKSAtIEVycm9yIHBhcmFtIGRlc2NyaXB0aW9uIG1pc3NpbmcNCj4gPiAgICsgSnNvbkFycmF5 R2V0VmFsdWUoKSBkb2VzIG5vdCBkZXNjcmliZSB0aGUgY29uZGl0aW9ucyBOVUxMDQo+ID4gICAg IGlzIHJldHVybmVkLg0KPiA+ICAgKyBKc29uT2JqZWN0R2V0S2V5cygpLiAgUmV0dXJuIHR5cGUg aXMgQ0hBUjgqKi4gIFdoYXQNCj4gPiAgICAgZnVuY3Rpb24gbmVlZCB0byBiZSBjYWxsZWQgdG8g ZnJlZSB0aGUgYXJyYXk/DQo+IEFsbCBhYm92ZSBhZGRyZXNzZWQuDQo+IA0KPiA+ICAgKyBKc29u VmFsdWVHZXRBc2NpaVN0cmluZygpIGFuZCBKc29uVmFsdWVHZXRVbmljb2RlU3RyaW5nKCkNCj4g PiAgICAgYXJlIGFzeW1tZXRyaWMuICBUaGUgQXNjaWkgb25lIHN0YXRlcyB0aGF0IGNoYW5nZSB3 aWxsDQo+ID4gICAgIG1vZGlmeSB0aGUgb3JpZ2luYWwgc3RyaW5nLiAgVGhlIFVuaWNvZGUgb25l IHNheXMgdGhhdCB0aGUNCj4gPiAgICAgY2FsbGVyIG5lZWRzIHRvIGZyZWUgdGhlIHJldHVybmVk IHN0cmluZy4gIEFueSByZWFzb24gd2UNCj4gPiAgICAgY2FuIG5vdCBtYWtlIHRoZW0gc3ltbWV0 cmljPw0KPiBKYW5zc29uIGRvZXNuJ3Qgc3VwcG9ydCBVbmljb2RlIHN0cmluZy4gVGhlIG1lbW9y eSBvZiB0aGUgdW5pY29kZSBzdHJpbmcgcmV0dXJuZWQgYnkgSnNvblZhbHVlR2V0VW5pY29kZVN0 cmluZw0KPiBJcyBhbGxvY2F0ZWQgYnkgVVRGOFN0clRvVUNTMigpLg0KPiAgPiBBbHNvLCBpZiBB c2NpaSBvbmUgc2hvdWxkDQo+ID4gICAgIG5vdCBiZSBtb2RpZmllZCwgd2h5IGlzbuKAmXQgdGhl IHJldHVybiB0eXBlIENPTlNUPw0KPiBZZXMuIHdpbGwgZG8gdGhhdC4NCj4gDQo+ID4NCj4gPiAq IFJlZGZpc2hQa2cvTGlicmFyeS9CYXNlVWNzMlV0ZjhMaWIvQmFzZVVjczJVdGY4TGliLmluZg0K PiA+ICAgKyBDaGFuZ2UgW1NvdXJjZXMuY29tbW9uXSB0byBbU291cmNlc10NCj4gZG9uZQ0KPiA+ ICogUmVkZmlzaFBrZy9MaWJyYXJ5L0NydExpYi9DcnRMaWIuaW5mDQo+ID4gICArIERvZXMgdGhp cyBsaWIgaW5zdGFuY2UgcmVhbGx5IGRlcGVuZCBvbiBNZGVNb2R1bGVQa2c/DQo+IFllcywgU29y dExpYg0KPiA+ICAgKyBIYXZlIHlvdSByZXZpZXdlZCB0aGUgbW9kdWxlIHR5cGVzIHRoaXMgbGli IGluc3RhbmNlIGlzDQo+ID4gICAgIGNvbXBhdGlibGUgd2l0aD8gIFdoeSBkb2VzIGl0IG5lZWQg dG8gc3VwcG9ydCBEWEVfQ09SRT8NCj4gPiAgICAgQXJlIHRoZWlyIEpzb25MaWIgdXNlIGNhc2Vz IGZvciBEWEVfUlVOVElNRSBhbmQgU01NIGRyaXZlcnM/DQo+ID4gICAgIElmIHRoZXJlIGFyZSBT TU0gdXNlIGNhc2VzLCB0aGVuIHdoeSBpcyBNTSBleGNsdWRlZD8NCj4gV2lsbCBqdXN0IGtlZXAg RFhFX0RSVkVSLCBVRUZJX0FQUExJQ0FUSU9OIGFuZCBVRUZJX0RSSVZFUi4gVGhlc2UgYXJlIG1v ZHVsZSB0eXBlcyBoYXZlIHBvdGVudGlhbCB1c2UgY2FzZXMgSSBjYW4gdGhpbmsgb2YNCj4gbm93 Lg0KPiA+DQo+ID4gKiBSZWRmaXNoUGtnL0xpYnJhcnkvSnNvbkxpYg0KPiA+ICAgKyBSZWFkbWUu cnN0IHN0aWxsIGhhcyByZWZlcmVuY2VzIHRvIEphbnNzb25Kc29uTGliTWFwcGluZy5oDQo+IGRv bmUNCj4gPiAgICsgSGF2ZSB5b3UgcmV2aWV3ZWQgdGhlIG1vZHVsZSB0eXBlcyB0aGlzIGxpYiBp bnN0YW5jZSBpcw0KPiA+ICAgICBjb21wYXRpYmxlIHdpdGg/ICBXaHkgZG9lcyBpdCBuZWVkIHRv IHN1cHBvcnQgRFhFX0NPUkU/DQo+ID4gICAgIEFyZSB0aGVpciBKc29uTGliIHVzZSBjYXNlcyBm b3IgRFhFX1JVTlRJTUUgYW5kIFNNTSBkcml2ZXJzPw0KPiA+ICAgICBJZiB0aGVyZSBhcmUgU01N IHVzZSBjYXNlcywgdGhlbiB3aHkgaXMgTU0gZXhjbHVkZWQ/DQo+IEFuc3dlcmVkIGFib3ZlDQo+ ID4gICArIEpzb25MaWIuaW5mIGhhcyBhIFtCdWlsZE9wdGlvbnNdIHNlY3Rpb24gdGhhdCBkaXNh YmxlcyBzb21lIHdhcm5pbmdzIHRoYXQNCj4gPiAgICAgbWFrZSBtZSBjb25jZXJuZWQgdGhhdCB0 aGlzIGxpYnJhcnkgbWF5IGhhdmUgc29tZSBpc3N1ZXMgd2l0aCAzMi1iaXQNCj4gPiBidWlsZHMu DQo+ID4gICAgIEhhdmUgeW91IGZ1bGx5IHZhbGlkYXRlZCBhbGwgMzItYml0IENQVSBidWlsZHMg YW5kIHZhbGlkYXRlZCB0aGUgZnVuY3Rpb25hbGl0eQ0KPiA+ICAgICBvZiBhbGwgc2VydmljZXMg ZnJvbSB0aGUgSnNvbkxpYiBmb3IgYWxsIHJhbmdlcyBvZiBpbnB1dCB2YWx1ZXM/DQo+IFllcywg SUEzMiBidWlsZCBpcyB2YWxpZGF0ZWQuIEJ1dCBub3QgdmFsaWRhdGluZyBvbiB0aGUgZnVuY3Rp b25hbGl0aWVzIElBMzIuIEkgZG9uJ3QgaGF2ZSB0aGF0IHVzZSBjYXNlLCB3ZSBjYW4gZ2V0IGJh Y2sNCj4gdG8gZml4IHRoZSBpc3N1ZSBpZiBhbnkgd2hlbiAgc29tZW9uZSBydW5zIHRoaXMgb24g SUEzMi4NCg0KSSBkaWQgc29tZSBsb2NhbCB0ZXN0aW5nIHdpdGggVlMyMDE5LiAgSSBmb3VuZCB0 aGF0IGEgbXVjaCBzbWFsbGVyIHNldCBvZiB3YXJuaW5nIGRpc2FibGVzDQphcmUgcmVxdWlyZWQg Zm9yIElBMzIgYW5kIFg2NCBhbmQgdGhlIHNldCBpcyBkaWZmZXJlbnQgZm9yIElBMzIgYW5kIFg2 NC4gIENhbiB5b3UgcmV2aWV3DQp3aGF0IGlzIG5lZWRlZCBhbmQgbWluaW1pemUgdGhlIHJlcXVp cmVkIHNldCBvZiBlYWNoIHN1cHBvcnRlZCBhcmNoPw0KDQogIE1TRlQ6Kl8qX1g2NF9DQ19GTEFH UyA9IC93ZDQyNDQgL3dkNDA5MCAvd2Q0MzM0IC9ESEFWRV9DT05GSUdfSD0xIC9VX1dJTjMyIC9V V0lONjQgL1VfTVNDX1ZFUg0KICBNU0ZUOipfKl9JQTMyX0NDX0ZMQUdTID0gL3dkNDI0NCAvd2Q0 MDkwIC9ESEFWRV9DT05GSUdfSD0xIC9VX1dJTjMyIC9VV0lONjQgL1VfTVNDX1ZFUg0KDQo+ID4N Cj4gPiAqIFJlZGZpc2hMaWJzLmRzYy5pbmMNCj4gPiAgIEl0IGlzIGJldHRlciB0byBhZGQgW0xp YnJhcnlDbGFzc2VzXSBzdGF0ZW1lbnQgdG8gdGhpcyBmaWxlLCBzbyBpdA0KPiA+ICAgY2FuIGJl IGluY2x1ZGUgYW55d2hlcmUgaW4gYSBEU0MgZmlsZS4gIFdpdGggY3VycmVudCBpbXBsZW1lbnRh dGlvbg0KPiA+ICAgaWYgaXQgaXMgbm90IGluY2x1ZGVkIHdpdGhpbiBhIFtMaWJyYXJ5Q2xhc3Nl c10gc2VjdGlvbiwgaXQgd2lsbA0KPiA+ICAgZ2VuZXJhdGUgYSBidWlsZCBlcnJvci4NCj4gSSB3 aWxsIHNlcGFyYXRlIHRoaXMgdG8gYW5vdGhlciBzZXQgb2YgcGF0Y2guIERvbuKAmXQgbWl4IHVw IHdpdGggamFuc3NvbiBlZGsyIHBvcnQuDQo+IA0KPiA+WW91IG1pZ2h0IGFsc28gY29uc2lkZXIg Y2hhbmdpbmcgdGhlIG5hbWUNCj4gPiAgIG9mIHRoaXMgZmlsZSBpbiBjYXNlIHlvdSB3YW50IHRv IGFkZCBtb3JlIHRoYW4ganVzdCBsaWIgbWFwcGluZ3MNCj4gPiAgIHRvIHRoaXMgZmlsZSBpbiB0 aGUgZnV0dXJlLiAgU2VlIFVuaXRUZXN0RnJhbXdvcmtQa2cgZm9yIGV4YW1wbGVzLg0KPiA+DQo+ ID4gQmVzdCByZWdhcmRzLA0KPiA+DQo+ID4gTWlrZQ0KPiA+DQo+ID4gPiAtLS0tLU9yaWdpbmFs IE1lc3NhZ2UtLS0tLQ0KPiA+ID4gRnJvbTogQWJuZXIgQ2hhbmcgPGFibmVyLmNoYW5nQGhwZS5j b20+DQo+ID4gPiBTZW50OiBUaHVyc2RheSwgRGVjZW1iZXIgMTcsIDIwMjAgNToxOSBBTQ0KPiA+ ID4gVG86IGRldmVsQGVkazIuZ3JvdXBzLmlvDQo+ID4gPiBDYzogU2VhbiBCcm9nYW4gPHNlYW4u YnJvZ2FuQG1pY3Jvc29mdC5jb20+OyBCcmV0IEJhcmtlbGV3DQo+ID4gPiA8QnJldC5CYXJrZWxl d0BtaWNyb3NvZnQuY29tPjsgQW5kcmV3IEZpc2ggPGFmaXNoQGFwcGxlLmNvbT47IExhc3psbw0K PiA+ID4gRXJzZWsgPGxlcnNla0ByZWRoYXQuY29tPjsgTGVpZiBMaW5kaG9sbSA8bGVpZkBudXZp YWluYy5jb20+OyBLaW5uZXksDQo+ID4gPiBNaWNoYWVsIEQgPG1pY2hhZWwuZC5raW5uZXlAaW50 ZWwuY29tPjsgTGltaW5nIEdhbw0KPiA+ID4gPGdhb2xpbWluZ0BieW9zb2Z0LmNvbS5jbj47IE5p Y2tsZSBXYW5nIDxuaWNrbGUud2FuZ0BocGUuY29tPjsNCj4gPiBQZXRlcg0KPiA+ID4gTydIYW5s ZXkgPHBldGVyLm9oYW5sZXlAaHBlLmNvbT4NCj4gPiA+IFN1YmplY3Q6IFtQQVRDSCB2OCAwLzZd IGphbnNzb24gZWRrMiBwb3J0DQo+ID4gPg0KPiA+ID4gSW4gdjgsIC0gQXNzaWduZSBwYXRjaCBm aWxlIG9yZGVyDQo+ID4gPiAgICAgICAgLSBBZGQgQWNrZWQtYnkgdGFncw0KPiA+ID4gSW4gdjcs IC0gUmVtb3ZlIEMgUlRDIGhlYWRlciBmaWxlcyB0byB1bmRlciBbSW5jbHVkZS5Db21tb24uUHJp dmF0ZV0NCj4gPiA+ICAgICAgICAgIGluIFJlZGZpc2hQa2cuZGVjLg0KPiA+ID4gICAgICAgIC0g YWRkcmVzcyBjb21tZW50cyBnaXZlbiBieSBNaWtlIEtpbm5leS4NCj4gPiA+IEluIHY2LCBSZW1v dmUgSmFuc3Nvbkpzb25NYXBwaW5nLmgNCj4gPiA+IEluIHY1LCBtb3ZlIEJhc2VVY3MyVXRmOExp YiB0byB1bmRlciBSZWRmaXNoUGtnLg0KPiA+ID4gSW4gdjQsDQo+ID4gPiAgICAgICAgLSBBZGRy ZXNzIHJldmlldyBjb21tZW50cw0KPiA+ID4gICAgICAgIC0gU2VwZXJhdGUgQ1JUIGZ1bmN0aW9u cyB0byBhIGluZGl2aWR1bGUgbGlicmFyeSBDcnRMaWIgdW5kZXINCj4gPiA+ICAgICAgICAgIFJl ZGZpc2hQa2cuDQo+ID4gPiAgICAgICAgLSBTZXBlcmF0ZSBVQ1MyLVVURjggZnVuY3Rpb25zIHRv IGEgaW5kaXZpZHVsZSBsaWJyYXJ5DQo+ID4gPiAgICAgICAgICBCYXNlVWNzMlV0ZjhMaWIgdW5k ZXIgTWRlTW9kdWxlUGtnLg0KPiA+ID4NCj4gPiA+IEluIHYzLCBBZGQgamFuc3NvbiBsaWJyYXJ5 IGFzIHRoZSByZXF1aXJlZCBzdWJtb3VkbGUgaW4NCj4gPiA+ICAgICAgICBDaVNldHRpbmdzLnB5 IGZvciBDSSB0ZXN0Lg0KPiA+ID4gSW4gdjIsIEpzb25MaWIgaXMgbW92ZWQgdG8gdW5kZXIgUmVk ZmlzaFBrZy4NCj4gPiA+DQo+ID4gPiBlZGsyIEpTT04gbGlicmFyeSBpcyBiYXNlZCBvbiBqYW5z c29uIG9wZW4gc291cmNlDQo+ID4gPiAoaHR0cHM6Ly9naXRodWIuY29tL2FraGVyb24vamFuc3Nv bikgYW5kIHdyYXBwZWQgYXMgYW4gZWRrMiBsaWJyYXJ5Lg0KPiA+ID4gZWRrMiBKc29uTGliIHdp bGwgYmUgdXNlZCBieSBlZGsyIFJlZGZpc2ggZmVhdHVyZSBkcml2ZXJzIChub3QNCj4gPiA+IGNv bnRyaWJ1dGVkIHlldCkgYW5kIHRoZSBlZGsyIHBvcnQgb2YgbGlicmVkZmlzaCBsaWJyYXJ5IChu b3QNCj4gPiA+IGNvbnRyaWJ1dGVkIHlldCkgYmFzZWQgb24gRE1URiBHaXRIdWINCj4gPiA+ICho dHRwczovL2dpdGh1Yi5jb20vRE1URi9saWJyZWRmaXNoKS4NCj4gPiA+DQo+ID4gPiBKYW5zc29u IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZShyZWZlciB0byBSZWFkTWUucnN0IHVu ZGVyIGVkazIpLg0KPiA+ID4gSXQgaXMgdXNlZCBpbiBwcm9kdWN0aW9uIGFuZCBpdHMgQVBJIGlz IHN0YWJsZS4gSW4gVUVGSS9FREtJSQ0KPiA+ID4gZW52aXJvbm1lbnQsIFJlZGZpc2ggcHJvamVj dCBjb25zdW1lcyBqYW5zc29uIHRvIGFjaGlldmUgSlNPTg0KPiA+IG9wZXJhdGlvbnMuDQo+ID4g Pg0KPiA+ID4gKiBKYW5zc29uIHZlcnNpb24gb24gZWRrMjogMi4xMy4xDQo+ID4gPg0KPiA+ID4g KiBFREtJSSBqYW5zc29uIGxpYnJhcnkgd3JhcHBlcjoNCj4gPiA+ICAgIC0gSnNvbkxpYi5oOg0K PiA+ID4gICAgICBUaGlzIGlzIHRoZSBkZW5pZml0aW9ucyBvZiBFREtJSSBKU09OIEFQSXMgd2hp Y2ggYXJlIG1hcHBlZCB0bw0KPiA+ID4gICAgICBqYW5uc29uIGZ1bmNpdG9ucyBhY2NvcmRpbmds eS4NCj4gPiA+DQo+ID4gPiAgICAtIEphbnNzb25Kc29uTGliTWFwcGluZy5oOg0KPiA+ID4gICAg ICBUaGlzIGlzIHRoZSB3cmFwcGVyIGZpbGUgdG8gbWFwIGZ1bmNpdG9ucyBhbmQgZGVmaW5pdGlv bnMgdXNlZCBpbg0KPiA+ID4gICAgICBuYXRpdmUgamFubnNvbiBhcHBsaWNhdGlvbnMgdG8gZWRr MiBKc29uTGliLiBUaGlzIGF2b2lkcyB0aGUNCj4gPiA+ICAgICAgbW9kaWZpY2F0aW9ucyBvbiBu YXRpdmUgamFubnNvbiBhcHBsaWNhdGlvbnMgdG8gYmUgYnVpbHQgdW5kZXINCj4gPiA+ICAgICAg ZWRrMiBlbnZpcm9ubWVudC4NCj4gPiA+DQo+ID4gPiAqS25vd24gaXNzdWU6DQo+ID4gPiAgIEJ1 aWxkIGZhaWwgd2l0aCBqYW5zc29uL3NyYy9sb2FkLmMsIG92ZXJycmlkZSBhbmQgYWRkIGNvZGUg aW4gbG9hZC5jDQo+ID4gPiAgIHRvIGNvbmRpdGlvbmFsbHkgdXNlIHN0ZGluIGFjY29yZGluZyB0 byBIQVZFX1VOSVNURF9IIG1hY3JvLg0KPiA+ID4gICBUaGUgUFIgaXMgc3VibWl0dGVkIHRvIGph bnNzb24gb3BlbiBzb3VyY2UgY29tbXVuaXR5Lg0KPiA+ID4gICBodHRwczovL2dpdGh1Yi5jb20v YWtoZXJvbi9qYW5zc29uL3B1bGwvNTU4DQo+ID4gPg0KPiA+ID4gU2lnbmVkLW9mZi1ieTogQWJu ZXIgQ2hhbmcgPGFibmVyLmNoYW5nQGhwZS5jb20+DQo+ID4gPg0KPiA+ID4gQ2M6IFNlYW4gQnJv Z2FuIDxzZWFuLmJyb2dhbkBtaWNyb3NvZnQuY29tPg0KPiA+ID4gQ2M6IEJyZXQgQmFya2VsZXcg PEJyZXQuQmFya2VsZXdAbWljcm9zb2Z0LmNvbT4NCj4gPiA+IENjOiBBbmRyZXcgRmlzaCA8YWZp c2hAYXBwbGUuY29tPg0KPiA+ID4gQ2M6IExhc3psbyBFcnNlayA8bGVyc2VrQHJlZGhhdC5jb20+ DQo+ID4gPiBDYzogTGVpZiBMaW5kaG9sbSA8bGVpZkBudXZpYWluYy5jb20+DQo+ID4gPiBDYzog TWljaGFlbCBEIEtpbm5leSA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+DQo+ID4gPiBDYzog TGltaW5nIEdhbyA8Z2FvbGltaW5nQGJ5b3NvZnQuY29tLmNuPg0KPiA+ID4gQ2M6IE5pY2tsZSBX YW5nIDxuaWNrbGUud2FuZ0BocGUuY29tPg0KPiA+ID4gQ2M6IFBldGVyIE8nSGFubGV5IDxwZXRl ci5vaGFubGV5QGhwZS5jb20+DQo+ID4gPg0KPiA+ID4gQWJuZXIgQ2hhbmcgKDYpOg0KPiA+ID4g ICBSZWRmaXNoUGtnL1VjczJVdGY4bGliOiBVQ1MyIHRvIFVGVDggbWFuaXB1bGF0aW9uIGxpYnJh cnkNCj4gPiA+ICAgZWRrMjogamFuc3NvbiBzdWJtb2R1bGUgZm9yIGVkazIgSlNPTiBsaWJyYXJ5 DQo+ID4gPiAgIFJlZGZpc2hQa2cvQ3J0TGliOiBDIHJ1bnRpbWUgbGlicmFyeQ0KPiA+ID4gICBS ZWRmaXNoUGtnL2xpYnJhcnk6IEVESzIgcG9ydCBvZiBqYW5zc29uIGxpYnJhcnkNCj4gPiA+ICAg UmVkZmlzaFBrZzogQWRkIEVESzIgcG9ydCBvZiBqYW5zc29uIGxpYnJhcnkgdG8gYnVpbGQNCj4g PiA+ICAgLnB5dG9vbDogQWRkIHJlcXVpcmVkIHN1Ym1vZHVsZSBmb3IgSnNvbkxpYg0KPiA+ID4N Cj4gPiA+ICAuZ2l0bW9kdWxlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg ICAzICsNCj4gPiA+ICAucHl0b29sL0NJU2V0dGluZ3MucHkgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgICAyICsNCj4gPiA+ICBSZWFkTWUucnN0ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgICAxICsNCj4gPiA+ICBSZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L2Fzc2VydC5o ICAgICAgICAgICAgICAgfCAgIDE2ICsNCj4gPiA+ICBSZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L2Vy cm5vLmggICAgICAgICAgICAgICAgfCAgIDE2ICsNCj4gPiA+ICBSZWRmaXNoUGtnL0luY2x1ZGUv Q3J0L2xpbWl0cy5oICAgICAgICAgICAgICAgfCAgIDE2ICsNCj4gPiA+ICBSZWRmaXNoUGtnL0lu Y2x1ZGUvQ3J0L21hdGguaCAgICAgICAgICAgICAgICAgfCAgIDE2ICsNCj4gPiA+ICBSZWRmaXNo UGtnL0luY2x1ZGUvQ3J0L3N0ZGFyZy5oICAgICAgICAgICAgICAgfCAgIDE1ICsNCj4gPiA+ICBS ZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L3N0ZGRlZi5oICAgICAgICAgICAgICAgfCAgIDE2ICsNCj4g PiA+ICBSZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L3N0ZGlvLmggICAgICAgICAgICAgICAgfCAgIDE1 ICsNCj4gPiA+ICBSZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L3N0ZGxpYi5oICAgICAgICAgICAgICAg fCAgIDE2ICsNCj4gPiA+ICBSZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L3N0cmluZy5oICAgICAgICAg ICAgICAgfCAgIDE2ICsNCj4gPiA+ICBSZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L3N5cy90aW1lLmgg ICAgICAgICAgICAgfCAgIDE1ICsNCj4gPiA+ICBSZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L3N5cy90 eXBlcy5oICAgICAgICAgICAgfCAgIDE1ICsNCj4gPiA+ICBSZWRmaXNoUGtnL0luY2x1ZGUvQ3J0 L3RpbWUuaCAgICAgICAgICAgICAgICAgfCAgIDE1ICsNCj4gPiA+ICBSZWRmaXNoUGtnL0luY2x1 ZGUvTGlicmFyeS9CYXNlVWNzMlV0ZjhMaWIuaCAgfCAgIDYxICsNCj4gPiA+ICBSZWRmaXNoUGtn L0luY2x1ZGUvTGlicmFyeS9DcnRMaWIuaCAgICAgICAgICAgfCAgMTkxICsrKw0KPiA+ID4gIFJl ZGZpc2hQa2cvSW5jbHVkZS9MaWJyYXJ5L0pzb25MaWIuaCAgICAgICAgICB8ICA3NjMgKysrKysr KysrKysNCj4gPiA+ICAuLi4vTGlicmFyeS9CYXNlVWNzMlV0ZjhMaWIvQmFzZVVjczJVdGY4TGli LmMgfCAgNDIxICsrKysrKysNCj4gPiA+ICAuLi4vQmFzZVVjczJVdGY4TGliL0Jhc2VVY3MyVXRm OExpYi5pbmYgICAgICAgfCAgIDMxICsNCj4gPiA+ICBSZWRmaXNoUGtnL0xpYnJhcnkvQ3J0TGli L0NydExpYi5jICAgICAgICAgICAgfCAgNTk1ICsrKysrKysrKw0KPiA+ID4gIFJlZGZpc2hQa2cv TGlicmFyeS9DcnRMaWIvQ3J0TGliLmluZiAgICAgICAgICB8ICAgMzggKw0KPiA+ID4gIFJlZGZp c2hQa2cvTGlicmFyeS9Kc29uTGliL0pzb25MaWIuYyAgICAgICAgICB8ICA5NjQgKysrKysrKysr KysrKysNCj4gPiA+ICBSZWRmaXNoUGtnL0xpYnJhcnkvSnNvbkxpYi9Kc29uTGliLmluZiAgICAg ICAgfCAgIDg5ICsrDQo+ID4gPiAgUmVkZmlzaFBrZy9MaWJyYXJ5L0pzb25MaWIvUmVhZG1lLnJz dCAgICAgICAgIHwgICA0MCArDQo+ID4gPiAgUmVkZmlzaFBrZy9MaWJyYXJ5L0pzb25MaWIvamFu c3NvbiAgICAgICAgICAgIHwgICAgMSArDQo+ID4gPiAgUmVkZmlzaFBrZy9MaWJyYXJ5L0pzb25M aWIvamFuc3Nvbl9jb25maWcuaCAgIHwgICA0MSArDQo+ID4gPiAgLi4uL0xpYnJhcnkvSnNvbkxp Yi9qYW5zc29uX3ByaXZhdGVfY29uZmlnLmggIHwgICAxOSArDQo+ID4gPiAgUmVkZmlzaFBrZy9M aWJyYXJ5L0pzb25MaWIvbG9hZC5jICAgICAgICAgICAgIHwgMTExMSArKysrKysrKysrKysrKysr Kw0KPiA+ID4gIFJlZGZpc2hQa2cvUmVkZmlzaExpYnMuZHNjLmluYyAgICAgICAgICAgICAgICB8 ICAgIDMgKw0KPiA+ID4gIFJlZGZpc2hQa2cvUmVkZmlzaFBrZy5jaS55YW1sICAgICAgICAgICAg ICAgICB8ICAgMjUgKw0KPiA+ID4gIFJlZGZpc2hQa2cvUmVkZmlzaFBrZy5kZWMgICAgICAgICAg ICAgICAgICAgICB8ICAgMjUgKw0KPiA+ID4gIFJlZGZpc2hQa2cvUmVkZmlzaFBrZy5kc2MgICAg ICAgICAgICAgICAgICAgICB8ICAgIDMgKw0KPiA+ID4gIDMzIGZpbGVzIGNoYW5nZWQsIDQ2MTQg aW5zZXJ0aW9ucygrKQ0KPiA+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBSZWRmaXNoUGtnL0luY2x1 ZGUvQ3J0L2Fzc2VydC5oICBjcmVhdGUgbW9kZQ0KPiA+ID4gMTAwNjQ0IFJlZGZpc2hQa2cvSW5j bHVkZS9DcnQvZXJybm8uaCAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+ID4gPiBSZWRmaXNoUGtnL0lu Y2x1ZGUvQ3J0L2xpbWl0cy5oICBjcmVhdGUgbW9kZSAxMDA2NDQNCj4gPiA+IFJlZGZpc2hQa2cv SW5jbHVkZS9DcnQvbWF0aC5oICBjcmVhdGUgbW9kZSAxMDA2NDQNCj4gPiA+IFJlZGZpc2hQa2cv SW5jbHVkZS9DcnQvc3RkYXJnLmggIGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiA+ID4gUmVkZmlzaFBr Zy9JbmNsdWRlL0NydC9zdGRkZWYuaCAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+ID4gPiBSZWRmaXNo UGtnL0luY2x1ZGUvQ3J0L3N0ZGlvLmggIGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiA+ID4gUmVkZmlz aFBrZy9JbmNsdWRlL0NydC9zdGRsaWIuaCAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+ID4gPiBSZWRm aXNoUGtnL0luY2x1ZGUvQ3J0L3N0cmluZy5oICBjcmVhdGUgbW9kZSAxMDA2NDQNCj4gPiA+IFJl ZGZpc2hQa2cvSW5jbHVkZS9DcnQvc3lzL3RpbWUuaCAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+ID4g PiBSZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L3N5cy90eXBlcy5oDQo+ID4gPiAgY3JlYXRlIG1vZGUg MTAwNjQ0IFJlZGZpc2hQa2cvSW5jbHVkZS9DcnQvdGltZS5oICBjcmVhdGUgbW9kZSAxMDA2NDQN Cj4gPiA+IFJlZGZpc2hQa2cvSW5jbHVkZS9MaWJyYXJ5L0Jhc2VVY3MyVXRmOExpYi5oDQo+ID4g PiAgY3JlYXRlIG1vZGUgMTAwNjQ0IFJlZGZpc2hQa2cvSW5jbHVkZS9MaWJyYXJ5L0NydExpYi5o DQo+ID4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IFJlZGZpc2hQa2cvSW5jbHVkZS9MaWJyYXJ5L0pz b25MaWIuaA0KPiA+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiA+ID4gUmVkZmlzaFBrZy9MaWJy YXJ5L0Jhc2VVY3MyVXRmOExpYi9CYXNlVWNzMlV0ZjhMaWIuYw0KPiA+ID4gIGNyZWF0ZSBtb2Rl IDEwMDY0NA0KPiA+ID4gUmVkZmlzaFBrZy9MaWJyYXJ5L0Jhc2VVY3MyVXRmOExpYi9CYXNlVWNz MlV0ZjhMaWIuaW5mDQo+ID4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IFJlZGZpc2hQa2cvTGlicmFy eS9DcnRMaWIvQ3J0TGliLmMNCj4gPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgUmVkZmlzaFBrZy9M aWJyYXJ5L0NydExpYi9DcnRMaWIuaW5mDQo+ID4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IFJlZGZp c2hQa2cvTGlicmFyeS9Kc29uTGliL0pzb25MaWIuYw0KPiA+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0 NCBSZWRmaXNoUGtnL0xpYnJhcnkvSnNvbkxpYi9Kc29uTGliLmluZg0KPiA+ID4gIGNyZWF0ZSBt b2RlIDEwMDY0NCBSZWRmaXNoUGtnL0xpYnJhcnkvSnNvbkxpYi9SZWFkbWUucnN0DQo+ID4gPiAg Y3JlYXRlIG1vZGUgMTYwMDAwIFJlZGZpc2hQa2cvTGlicmFyeS9Kc29uTGliL2phbnNzb24NCj4g PiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgUmVkZmlzaFBrZy9MaWJyYXJ5L0pzb25MaWIvamFuc3Nv bl9jb25maWcuaA0KPiA+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiA+ID4gUmVkZmlzaFBrZy9M aWJyYXJ5L0pzb25MaWIvamFuc3Nvbl9wcml2YXRlX2NvbmZpZy5oDQo+ID4gPiAgY3JlYXRlIG1v ZGUgMTAwNjQ0IFJlZGZpc2hQa2cvTGlicmFyeS9Kc29uTGliL2xvYWQuYw0KPiA+ID4NCj4gPiA+ IC0tDQo+ID4gPiAyLjE3LjENCj4gDQoNCg==