From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8E052C636CC for ; Thu, 16 Feb 2023 15:47:40 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230400AbjBPPrj (ORCPT ); Thu, 16 Feb 2023 10:47:39 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49336 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229724AbjBPPri (ORCPT ); Thu, 16 Feb 2023 10:47:38 -0500 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0FAB86EB2; Thu, 16 Feb 2023 07:47:34 -0800 (PST) Received: from pps.filterd (m0333521.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 31GFOSBH032332; Thu, 16 Feb 2023 15:47:25 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-id : content-transfer-encoding : mime-version; s=corp-2022-7-12; bh=1H+lHA4Wb21yxx1acmWOZUinfPuRrxwWBPtV8gZ8PC4=; b=iP0xBx0/yvfEadDDF4TkGc6SzGaqOGRhG0IWd15CC5GkCmPsp43f0wt/LOaRo0LnVlHH SIxSRiYH1GN2ZF88zE5HUTnpIt4g0ldii6XZ7yZhOoBdkehNAg8cANYlIhl6aaKN52nH Zlwq2PcZCyocONtOmdDwMlhaKLrwnBO/rcHKrJVuDsochlgdvw7guGFG/LNrVpV/jBpc KV/z5RF2YjAUi2L2xuUNix3H7DoEDzwuwzmfs0TRKP0iRNoDU5a7OMlqCmZRCtgrklGc lSL+IRitgV6ciR5FVFiSsCn1Hku3vVHjNZJbvDZcn6UDEbMzW/OYk5jUW1ErNvrYMpZT /g== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3np1xbbgwv-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 16 Feb 2023 15:47:24 +0000 Received: from pps.filterd (phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 31GF8bEr013541; Thu, 16 Feb 2023 15:47:24 GMT Received: from nam11-bn8-obe.outbound.protection.outlook.com (mail-bn8nam11lp2168.outbound.protection.outlook.com [104.47.58.168]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 3np1f8gh5x-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 16 Feb 2023 15:47:24 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Pv7U6dbdfwVHH2kDkw37NA1ws4YjPzGpYxLJ5VD2U2zUDXiSryird9g2NUQjgr/lpIh1m3t8Mud+zrsI2g66ZBf6hAYIF2uCqR6wXBoc7GIK8UXOb1qgolUuzWAYkNvThsTAlopk4RSyEYdnyoQYcegAz2NI1wCX8no+GO5KgfojElQf/W658vYioSs9VDTcaBTak4HmIhmKUFiR58ZMAUqxOtAegDFY4QBfCqrgn7GrrBoHK+63E4TFNmfa6peYPrwygTXvJnFk0ryoLzYWiKlNQ12YWj0nCAt6jB9xtPVoBlsr6hSsIDATynZj7z6YTAuFH+lPjJWwTY1O0E81nQ== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=1H+lHA4Wb21yxx1acmWOZUinfPuRrxwWBPtV8gZ8PC4=; b=J0Kw5WqeKP/KZ3Nou/3C55ofHd001UPTQ6URudG0kPeOJ3mcAMpfTp4fAy3pcfSq4WPM+Ne64dKKsNMZ/sTSzqgHTHMNoMrjdMnEWIPJ6b9O6AKz4hkkiIdN5JTvh4PZxnvTqOQclpXnCaKgAx1w8n4mlD2NDwekIWlHibBr+DNjVTdxSYEsm8k2aI29UQ1AmMgmPIf79f7JH4c0+F+oeZNiE2TlVfKc1+HYDsuy6FhAvj0bIxGwNrIrYO+/eMZUhsH623mfQl2X2tdon7M/QPdUKddSWitbsEI8TIX13dlSOx1HoTXLLAXlpu4O1ljpqh4La9i7t880+dBotRdAtg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=1H+lHA4Wb21yxx1acmWOZUinfPuRrxwWBPtV8gZ8PC4=; b=TZhSby7PT1qoZ4cJOVaefDNWFnlHnRolXkZW8fVE56e3w7NRSc6PNx2cO+CFNmPrrtH6nFUdPfb8YPADa6ZypKh3VwJYDd0e/R4f4Al1tUdOjlo9T0KSdgkBuzhaA7xMwljvjgrwLdjqncdD90gePumi144qYVT14qsQBEbQwvQ= Received: from BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) by DM6PR10MB4266.namprd10.prod.outlook.com (2603:10b6:5:210::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6134.6; Thu, 16 Feb 2023 15:47:21 +0000 Received: from BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::2a7c:497e:b785:dc06]) by BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::2a7c:497e:b785:dc06%8]) with mapi id 15.20.6134.006; Thu, 16 Feb 2023 15:47:20 +0000 From: Allison Henderson To: "djwong@kernel.org" CC: Catherine Hoang , "david@fromorbit.com" , "willy@infradead.org" , "linux-xfs@vger.kernel.org" , Chandan Babu , "linux-fsdevel@vger.kernel.org" , "hch@infradead.org" Subject: Re: [PATCH 10/14] xfs: document full filesystem scans for online fsck Thread-Topic: [PATCH 10/14] xfs: document full filesystem scans for online fsck Thread-Index: AQHZHJ6IyVO1c7ig50y/a1fcHIauxq7SAqsA Date: Thu, 16 Feb 2023 15:47:20 +0000 Message-ID: <81d41ce2c183f8bbb7c28d5aa688e23348c87bdc.camel@oracle.com> References: <167243825144.682859.12802259329489258661.stgit@magnolia> <167243825302.682859.6563684998299886921.stgit@magnolia> In-Reply-To: <167243825302.682859.6563684998299886921.stgit@magnolia> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Evolution 3.44.4-0ubuntu1 x-ms-publictraffictype: Email x-ms-traffictypediagnostic: BY5PR10MB4306:EE_|DM6PR10MB4266:EE_ x-ms-office365-filtering-correlation-id: 5bcefb4b-51d9-475b-fd6e-08db10351703 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: E8SDi669KpSnIBWTTM9WLR7zooi9BTvpHpy1Whmn3U3nCkoBpkXf1dYcTRYSI+78NC0j/w0xGEG1+054qXGXM0rp8diCcPdCZ8oJD1gSwfMiTgdjp8bHiJGhz9eZLbd9O7L+ZYiBkSriHjU9SeOzBlb0krNASJRfFrCDjAJdtOHWRiOcSIPvd0WUXHkwHu9CBUQiZeFzJJpf4QiLshDjqgtd6st6rD3BAMsMZh1Y0EA2g+MWdMXQ3aR7Q8F8wU0EIQNaTAWJr7i91B/RLVEeoXUcC138jA3tBn5Z+BnhY85AfGSYNMJWu3WDO7CY2LloNZbZKYNL+HlalaJBoyEgjN72iCzTsJ4NW+gia5KsNTxywm9WaXZ16KR41Z9mqpT58btU4DYE6DqtlWhKzuQ4DcmIqpMi1J7eXKkV953Iq/PrfFB/XXRDFUs7COZrwMnCt+HcvcOJFBlRiwYf3i4PQUt3/5TQza68WyJ4jn3S4yfZ/V33sh52Ct+uXFJS6mxrkeSsb7v7ykR1qIYx3DCU7p9dsrpzCiz4pSA1XspEq/VVw105KJI74w0Kc6s5x2QN9W+XkxAk2aIAQWxAStLDVhvUJVQoZOuyUlTt0Ei6fd0bqq06OAsiiIrTCMtSbIftnJ9mLF1WiF20XSIapKcqnmuo5opYmQFNVp9r/Gm8qrpZBU7FiJQ/gz9Pdd/9awju x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BY5PR10MB4306.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230025)(39860400002)(376002)(366004)(346002)(396003)(136003)(451199018)(86362001)(54906003)(316002)(966005)(38100700002)(8936002)(30864003)(5660300002)(44832011)(38070700005)(4001150100001)(2906002)(76116006)(66946007)(41300700001)(66446008)(66476007)(66556008)(4326008)(8676002)(64756008)(6916009)(2616005)(6486002)(6512007)(71200400001)(186003)(6506007)(36756003)(26005)(478600001)(122000001)(83380400001)(579004)(559001);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?T2NsVnpEL0lpL1ZtbzJUcXExNXpVV1ZRcG9oaTgvS2ZKeWJ4aWdnYXl2Nmc0?= =?utf-8?B?QXE2emp3NkVpUG53VGNKT0xQdHlLTWZIdjJib0dzMVZ1UTdyVW5aT3lzUDJ3?= =?utf-8?B?OVFMczI4WDI3ODRRa3U2WStoQ25CdW1wRy9Wenc2MDBidW91bkRTS01hVUJm?= =?utf-8?B?cCsySVo4Q1Vra1B2YzM0a3J2bGduYlBManZtWC9MOHNPSHVLV2g2dVVWUG9X?= =?utf-8?B?Vzcxb0dXUVBiL21LNERlUitRaUdGVnpHY3dLdGhvbVg0NitVVktpcm03bzhX?= =?utf-8?B?dGluaGhQRUl0cjMvejExbUhqQVB0cDB4VUc4akgvaGFpNUZqOGJIK3dWcmY5?= =?utf-8?B?ZFo1bjB3b3Y3M1R1dW92QWc3d08xTlpXR3BQOE1RL0JKaklseWtaM1J6Z2tp?= =?utf-8?B?N0RIanVmRlJFWXlQbm9ZSkxJc3ZKTjVJZlZzSnVHOGUzN3Uxbm1Yb25YR0NO?= =?utf-8?B?cmNnN2NNeldKTllGOU9OM05VNHVSL1I1SzlQMkRZOUtqclFpU3pWT0hieUp2?= =?utf-8?B?eEJ5NGhzUWdxSUR3TWFwZWxYMXYxc3BCVWZ4aWFHbjdOTitYSU1QOGJHZE5Z?= =?utf-8?B?Zk5ERkQ3eUp5ZVg2cnBrVlM5MVNyNGNGVitYSDhBN01SRFRhWXlNeUw2UjR5?= =?utf-8?B?OUgrb3FHTjVJVDJvOXZtNGVxL04xcFdYdkhtbUYyMkJ4Tm5PeWN5c3Q2dDRV?= =?utf-8?B?ZDU1M2VJdWozdGZMWitTNHNDN21rUHNxZVYwelZER2dWVjZWaWZsQTBwdnlP?= =?utf-8?B?MVpLbUoramVWUUZQTmo5M2tVbldlWGx6VFRlZ0o3UjRLSDlwTzNvRmIrdlBa?= =?utf-8?B?RHVWemxDeGZhRDdwcXArekYwZjEzM0dtdUJRRWs2aGYrNythbFRQbjhFRWF1?= =?utf-8?B?a042REpPZ2J6dG1hNDB3MlY3UXBEYXg5RlhDcXJPTGpmMlUremRsK3BVcEJO?= =?utf-8?B?SitDN0IydE56eWQzT0xERFN3N2ZJbkVROWR2RXc5RUFWQk9oNzNRK2lNOThT?= =?utf-8?B?UzRidDdMRGpLT3JVc0hwTTQ4WnRsREVENHlwZ212bHJNZTlUOGJVTlV3WENP?= =?utf-8?B?cUJoMm0yVm41UURRZy9YNUphUUpubEdyNzJzRlJPTlVuQkRjandDU0UydmRp?= =?utf-8?B?YUFwNmhzazNLR09NZE1yNkU4SXVhWjQxTjNQQ0dWc1FxM0MwK3JrNVRzQUo3?= =?utf-8?B?SjVKSmdnY2ozaHR1dDIwV1VUa01SN0hydVZCYmxhOEVUZk95eXdrWHNtN2Nx?= =?utf-8?B?TmhqdjkwNlVDS2psVS9XSSttaGR6cWhYU2k2eXMxQnMrSm1YMFBMTnlINm1j?= =?utf-8?B?OVFrOXR1N1JxZmlUeFVVVGs1T0Q0alZnMzhFY3VocVQ4Y0gzdzR6RmtncUNx?= =?utf-8?B?dnNJaFVQRTltd2RKT2xCeXA0Y0ZCMEpVeEpNZVh4VWkyNFQxUFY2dEdaNDNv?= =?utf-8?B?Y3Vmb21pblZBakE1eDRWYjBPeXppSHY3Wk8rcmo4d2JhUHpQNGlDKzhyeFR5?= =?utf-8?B?VnFYa3pBcEIvVUFSYk1sNGJvVFlQMDRIc2Q5YVV3clg0WU5nUXU0MnZBaVNL?= =?utf-8?B?a0Q3R2hRRVBYTWhwck4yY2xGZ1V4ME9MOTZrK1RPa1NtdnAvL0Z3b3FqcWs2?= =?utf-8?B?VmtkMUZJTzAwb1Q5YVgyTy9QYW1PUXIyendEQlYyLzlqbSt6eDZjNTY4TVFx?= =?utf-8?B?ZStKUkcxSkNpWVo5ZGcxQ1YyMi9hT2pSNFJKcmdFTGt4SFFnY1QzS0FLaHU5?= =?utf-8?B?WWozeGEzMUZibnNUWTd5emMyZXdWMjgxazR4Q0JCQ1dUK1ZkUlZkc0NuZktO?= =?utf-8?B?OEI2VHZGdkl4ZzJ1c1BHUjRpdXVYbm1QZTNST0NGQjdJQzZWcWpVQk5RbHBE?= =?utf-8?B?QlFBTG1OUXVuVVYwanROMTVvT0N6Y1d2RmdhTC9BWDFWcVk0T1dwdXcvMytL?= =?utf-8?B?cnoxZmJYRFZZQTNOOS9vdWhOOW9QUDZVYWpwVW5zcFZjUlBBR1JvSFJEbXlz?= =?utf-8?B?YXoyL1pGMHlwdExTRnhzbTJWT3RsSitMOUNSeHdmY1NFN0hyN0pVbmc3VEtv?= =?utf-8?B?S1JDSW9qcVBFMEdTM1gxdmcrRlk2SzUzTU53bFhmTE9JS1gxUFZYZEhEeHJP?= =?utf-8?B?RXlUU1dNb3pQNHAwL2JpSllDVXA3Y01hWnZ2ejlQeGJGQS94ZTdDZnpRTkta?= =?utf-8?Q?flRZ5lXO95u/geizajxdPWg=3D?= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: uAOZH/ozqM6Kd27VDexGt5uI4SHv0nBmCaPHziwZKGrxNej41rqwbzb+ZG/nQ2sT3fGZJuu3THil9I8cXJovC925zkzv+p3VgusugcJ+SCeHXPNd7oPBoo+c+2JsxfGLGiyTleZNwXXw8vIlsoJ9/vNp59Hv5EwhSBd1paMQHCIlqe3Xm87yS4PjBD8+A/lS7ZJwLn6Z4IR6kbJaMumTXVEtNRI1ktrur9Sf3bbKSZ69uTlryNKqtDe/kyZ32nfWLo8AHEokPIGkPhdZGG33DdV25myz/YPyJNjcaxk0vrUb+jJTtlYKlzcy7r4jFX4sZXaQcPjy5yIr1t1ST6sSE3/qHccT4/M+Dv820HudjmDtIrmvjYVPGUqqwyFKcTYSkA3m6z61dvKFGU0nIb9FrVDWAkrn/oCSK5GgROcwlLaQJS20dyzlqMCe3Ih7wQ7jVByL40PmPrE29ot4QROmlNsRVAIAJXH2nNeeb7dIJCZlVimdcyVuPrr8h+5kVHNhxtpvPEPWFhZIe+jnW6rMx9ZxDyCYF9rzBi+L/hF8ckXhibIsT9BExcyxMGUmleyjZ8gle175tSGTH9wQHw5Sl5/Pt4d8OTTjbOzLwcFbKPA57N0vH41V8NLap6uFMQfp6np8ts/+nxgMx5vRsXeTVi/KEhOZPDshkngujvfJtL3+OoZfjVyCamMjpeacJnYpMzYZr6pExUPVpESKIvAKCRMXGaUyw5AY6f9KzaR30DPfS4I9saAyScz37zcT8L+r/Dw+iazO3Y2/wuXCH9kFpmDsqxa/htWdduVhlUEoDFUpbSKtnPX4H85yG4DKScboHAgjG6kF1D77cttu7dD1vpitOH5t2GYpbAhqL0IltSQ= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BY5PR10MB4306.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5bcefb4b-51d9-475b-fd6e-08db10351703 X-MS-Exchange-CrossTenant-originalarrivaltime: 16 Feb 2023 15:47:20.8349 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: eTjNlC0rm8tVRSG/Wuwafztf7buMtnz0d2D3a9i9riq6rZRlLTmDsnsPTQpFeARuiAZXrG13Z+XCDz56OeOQo0LjIAKTFDPU/t4DYmZj1So= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR10MB4266 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.930,Hydra:6.0.562,FMLib:17.11.170.22 definitions=2023-02-16_12,2023-02-16_01,2023-02-09_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 suspectscore=0 phishscore=0 spamscore=0 bulkscore=0 mlxlogscore=999 malwarescore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2302160136 X-Proofpoint-ORIG-GUID: IFV4dWZWmeCS9T7c_lfgIXHu6lTN0c1Q X-Proofpoint-GUID: IFV4dWZWmeCS9T7c_lfgIXHu6lTN0c1Q Precedence: bulk List-ID: X-Mailing-List: linux-fsdevel@vger.kernel.org T24gRnJpLCAyMDIyLTEyLTMwIGF0IDE0OjEwIC0wODAwLCBEYXJyaWNrIEouIFdvbmcgd3JvdGU6 DQo+IEZyb206IERhcnJpY2sgSi4gV29uZyA8ZGp3b25nQGtlcm5lbC5vcmc+DQo+IA0KPiBDZXJ0 YWluIHBhcnRzIG9mIHRoZSBvbmxpbmUgZnNjayBjb2RlIG5lZWQgdG8gc2NhbiBldmVyeSBmaWxl IGluIHRoZQ0KPiBlbnRpcmUgZmlsZXN5c3RlbS7CoCBJdCBpcyBub3QgYWNjZXB0YWJsZSB0byBi bG9jayB0aGUgZW50aXJlDQo+IGZpbGVzeXN0ZW0NCj4gd2hpbGUgdGhpcyBoYXBwZW5zLCB3aGlj aCBtZWFucyB0aGF0IHdlIG5lZWQgdG8gYmUgY2xldmVyIGluIGFsbG93aW5nDQo+IHNjYW5zIHRv IGNvb3JkaW5hdGUgd2l0aCBvbmdvaW5nIGZpbGVzeXN0ZW0gdXBkYXRlcy7CoCBXZSBhbHNvIG5l ZWQgdG8NCj4gaG9vayB0aGUgZmlsZXN5c3RlbSBzbyB0aGF0IHJlZ3VsYXIgdXBkYXRlcyBwcm9w YWdhdGUgdG8gdGhlIHN0YWdpbmcNCj4gcmVjb3Jkcy4NCj4gDQo+IFNpZ25lZC1vZmYtYnk6IERh cnJpY2sgSi4gV29uZyA8ZGp3b25nQGtlcm5lbC5vcmc+DQo+IC0tLQ0KPiDCoC4uLi9maWxlc3lz dGVtcy94ZnMtb25saW5lLWZzY2stZGVzaWduLnJzdMKgwqDCoMKgwqDCoMKgwqAgfMKgIDY3Nw0K PiArKysrKysrKysrKysrKysrKysrKw0KPiDCoDEgZmlsZSBjaGFuZ2VkLCA2NzcgaW5zZXJ0aW9u cygrKQ0KPiANCj4gDQo+IGRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3hm cy1vbmxpbmUtZnNjay1kZXNpZ24ucnN0DQo+IGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy94 ZnMtb25saW5lLWZzY2stZGVzaWduLnJzdA0KPiBpbmRleCBhNjU4ZGE4ZmU0YWUuLmMwZjA4YTc3 M2YwOCAxMDA2NDQNCj4gLS0tIGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy94ZnMtb25saW5l LWZzY2stZGVzaWduLnJzdA0KPiArKysgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3hmcy1v bmxpbmUtZnNjay1kZXNpZ24ucnN0DQo+IEBAIC0zMDE4LDMgKzMwMTgsNjgwIEBAIFRoZSBwcm9w b3NlZCBwYXRjaHNldCBpcyB0aGUNCj4gwqBgc3VtbWFyeSBjb3VudGVyIGNsZWFudXANCj4gwqA8 DQo+IGh0dHBzOi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2Rqd29u Zy94ZnMtbGludXguZ2l0Lw0KPiBsb2cvP2g9cmVwYWlyLWZzY291bnRlcnM+YF8NCj4gwqBzZXJp ZXMuDQo+ICsNCj4gK0Z1bGwgRmlsZXN5c3RlbSBTY2Fucw0KPiArLS0tLS0tLS0tLS0tLS0tLS0t LS0tDQo+ICsNCj4gK0NlcnRhaW4gdHlwZXMgb2YgbWV0YWRhdGEgY2FuIG9ubHkgYmUgY2hlY2tl ZCBieSB3YWxraW5nIGV2ZXJ5IGZpbGUNCj4gaW4gdGhlDQo+ICtlbnRpcmUgZmlsZXN5c3RlbSB0 byByZWNvcmQgb2JzZXJ2YXRpb25zIGFuZCBjb21wYXJpbmcgdGhlDQo+IG9ic2VydmF0aW9ucyBh Z2FpbnN0DQo+ICt3aGF0J3MgcmVjb3JkZWQgb24gZGlzay4NCj4gK0xpa2UgZXZlcnkgb3RoZXIg dHlwZSBvZiBvbmxpbmUgcmVwYWlyLCByZXBhaXJzIGFyZSBtYWRlIGJ5IHdyaXRpbmcNCj4gdGhv c2UNCj4gK29ic2VydmF0aW9ucyB0byBkaXNrIGluIGEgcmVwbGFjZW1lbnQgc3RydWN0dXJlIGFu ZCBjb21taXR0aW5nIGl0DQo+IGF0b21pY2FsbHkuDQo+ICtIb3dldmVyLCBpdCBpcyBub3QgcHJh Y3RpY2FsIHRvIHNodXQgZG93biB0aGUgZW50aXJlIGZpbGVzeXN0ZW0gdG8NCj4gZXhhbWluZQ0K PiAraHVuZHJlZHMgb2YgYmlsbGlvbnMgb2YgZmlsZXMgYmVjYXVzZSB0aGUgZG93bnRpbWUgd291 bGQgYmUNCj4gZXhjZXNzaXZlLg0KPiArVGhlcmVmb3JlLCBvbmxpbmUgZnNjayBtdXN0IGJ1aWxk IHRoZSBpbmZyYXN0cnVjdHVyZSB0byBtYW5hZ2UgYQ0KPiBsaXZlIHNjYW4gb2YNCj4gK2FsbCB0 aGUgZmlsZXMgaW4gdGhlIGZpbGVzeXN0ZW0uDQo+ICtUaGVyZSBhcmUgdHdvIHF1ZXN0aW9ucyB0 aGF0IG5lZWQgdG8gYmUgc29sdmVkIHRvIHBlcmZvcm0gYSBsaXZlDQo+IHdhbGs6DQo+ICsNCj4g Ky0gSG93IGRvZXMgc2NydWIgbWFuYWdlIHRoZSBzY2FuIHdoaWxlIGl0IGlzIGNvbGxlY3Rpbmcg ZGF0YT8NCj4gKw0KPiArLSBIb3cgZG9lcyB0aGUgc2NhbiBrZWVwIGFicmVhc3Qgb2YgY2hhbmdl cyBiZWluZyBtYWRlIHRvIHRoZSBzeXN0ZW0NCj4gYnkgb3RoZXINCj4gK8KgIHRocmVhZHM/DQo+ ICsNCj4gKy4uIF9pc2NhbjoNCj4gKw0KPiArQ29vcmRpbmF0ZWQgSW5vZGUgU2NhbnMNCj4gK2Bg YGBgYGBgYGBgYGBgYGBgYGBgYGBgDQo+ICsNCj4gK0luIHRoZSBvcmlnaW5hbCBVbml4IGZpbGVz eXN0ZW1zIG9mIHRoZSAxOTcwcywgZWFjaCBkaXJlY3RvcnkgZW50cnkNCj4gY29udGFpbmVkDQo+ ICthbiBpbmRleCBudW1iZXIgKCppbnVtYmVyKikgd2hpY2ggd2FzIHVzZWQgYXMgYW4gaW5kZXgg aW50byBvbg0KPiBvbmRpc2sgYXJyYXkNCj4gKygqaXRhYmxlKikgb2YgZml4ZWQtc2l6ZSByZWNv cmRzICgqaW5vZGVzKikgZGVzY3JpYmluZyBhIGZpbGUncw0KPiBhdHRyaWJ1dGVzIGFuZA0KPiAr aXRzIGRhdGEgYmxvY2sgbWFwcGluZy4NCj4gK1RoaXMgc3lzdGVtIGlzIGRlc2NyaWJlZCBieSBK LiBMaW9ucywgYCJpbm9kZSAoNTY1OSkiDQo+ICs8aHR0cDovL3d3dy5sZW1pcy5jb20vZ3JvZy9E b2N1bWVudGF0aW9uL0xpb25zLz5gXyBpbiAqTGlvbnMnDQo+IENvbW1lbnRhcnkgb24NCj4gK1VO SVgsIDZ0aCBFZGl0aW9uKiwgKERlcHQuIG9mIENvbXB1dGVyIFNjaWVuY2UsIHRoZSBVbml2ZXJz aXR5IG9mDQo+IE5ldyBTb3V0aA0KPiArV2FsZXMsIE5vdmVtYmVyIDE5NzcpLCBwcC4gMTgtMjsg YW5kIGxhdGVyIGJ5IEQuIFJpdGNoaWUgYW5kIEsuDQo+IFRob21wc29uLA0KPiArYCJJbXBsZW1l bnRhdGlvbiBvZiB0aGUgRmlsZSBTeXN0ZW0iDQo+ICs8aHR0cHM6Ly9hcmNoaXZlLm9yZy9kZXRh aWxzL2JzdGo1Ny02LTE5MDUvcGFnZS9uOC9tb2RlLzF1cD5gXywgZnJvbQ0KPiAqVGhlIFVOSVgN Cj4gK1RpbWUtU2hhcmluZyBTeXN0ZW0qLCAoVGhlIEJlbGwgU3lzdGVtIFRlY2huaWNhbCBKb3Vy bmFsLCBKdWx5DQo+IDE5NzgpLCBwcC4NCj4gKzE5MTMtNC4NCj4gKw0KPiArWEZTIHJldGFpbnMg bW9zdCBvZiB0aGlzIGRlc2lnbiwgZXhjZXB0IG5vdyBpbnVtYmVycyBhcmUgc2VhcmNoIGtleXMN Cj4gb3ZlciBhbGwNCj4gK3RoZSBzcGFjZSBpbiB0aGUgZGF0YSBzZWN0aW9uIGZpbGVzeXN0ZW0u DQo+ICtUaGV5IGZvcm0gYSBjb250aW51b3VzIGtleXNwYWNlIHRoYXQgY2FuIGJlIGV4cHJlc3Nl ZCBhcyBhIDY0LWJpdA0KPiBpbnRlZ2VyLA0KPiArdGhvdWdoIHRoZSBpbm9kZXMgdGhlbXNlbHZl cyBhcmUgc3BhcnNlbHkgZGlzdHJpYnV0ZWQgd2l0aGluIHRoZQ0KPiBrZXlzcGFjZS4NCj4gK1Nj YW5zIHByb2NlZWQgaW4gYSBsaW5lYXIgZmFzaGlvbiBhY3Jvc3MgdGhlIGludW1iZXIga2V5c3Bh Y2UsDQo+IHN0YXJ0aW5nIGZyb20NCj4gK2BgMHgwYGAgYW5kIGVuZGluZyBhdCBgYDB4RkZGRkZG RkZGRkZGRkZGRmBgLg0KPiArTmF0dXJhbGx5LCBhIHNjYW4gdGhyb3VnaCBhIGtleXNwYWNlIHJl cXVpcmVzIGEgc2NhbiBjdXJzb3Igb2JqZWN0DQo+IHRvIHRyYWNrIHRoZQ0KPiArc2NhbiBwcm9n cmVzcy4NCj4gK0JlY2F1c2UgdGhpcyBrZXlzcGFjZSBpcyBzcGFyc2UsIHRoaXMgY3Vyc29yIGNv bnRhaW5zIHR3byBwYXJ0cy4NCj4gK1RoZSBmaXJzdCBwYXJ0IG9mIHRoaXMgc2NhbiBjdXJzb3Ig b2JqZWN0IHRyYWNrcyB0aGUgaW5vZGUgdGhhdCB3aWxsDQo+IGJlDQo+ICtleGFtaW5lZCBuZXh0 OyBjYWxsIHRoaXMgdGhlIGV4YW1pbmF0aW9uIGN1cnNvci4NCj4gK1NvbWV3aGF0IGxlc3Mgb2J2 aW91c2x5LCB0aGUgc2NhbiBjdXJzb3Igb2JqZWN0IG11c3QgYWxzbyB0cmFjaw0KPiB3aGljaCBw YXJ0cyBvZg0KPiArdGhlIGtleXNwYWNlIGhhdmUgYWxyZWFkeSBiZWVuIHZpc2l0ZWQsIHdoaWNo IGlzIGNyaXRpY2FsIGZvcg0KPiBkZWNpZGluZyBpZiBhDQo+ICtjb25jdXJyZW50IGZpbGVzeXN0 ZW0gdXBkYXRlIG5lZWRzIHRvIGJlIGluY29ycG9yYXRlZCBpbnRvIHRoZSBzY2FuDQo+IGRhdGEu DQo+ICtDYWxsIHRoaXMgdGhlIHZpc2l0ZWQgaW5vZGUgY3Vyc29yLg0KPiArDQo+ICtBZHZhbmNp bmcgdGhlIHNjYW4gY3Vyc29yIGlzIGEgbXVsdGktc3RlcCBwcm9jZXNzIGVuY2Fwc3VsYXRlZCBp bg0KPiArYGB4Y2hrX2lzY2FuX2l0ZXJgYDoNCj4gKw0KPiArMS4gTG9jayB0aGUgQUdJIGJ1ZmZl ciBvZiB0aGUgQUcgY29udGFpbmluZyB0aGUgaW5vZGUgcG9pbnRlZCB0byBieQ0KPiB0aGUgdmlz aXRlZA0KPiArwqDCoCBpbm9kZSBjdXJzb3IuDQo+ICvCoMKgIFRoaXMgZ3VhcmFudGVlIHRoYXQg aW5vZGVzIGluIHRoaXMgQUcgY2Fubm90IGJlIGFsbG9jYXRlZCBvcg0KPiBmcmVlZCB3aGlsZQ0K PiArwqDCoCBhZHZhbmNpbmcgdGhlIGN1cnNvci4NCj4gKw0KPiArMi4gVXNlIHRoZSBwZXItQUcg aW5vZGUgYnRyZWUgdG8gbG9vayB1cCB0aGUgbmV4dCBpbnVtYmVyIGFmdGVyIHRoZQ0KPiBvbmUg dGhhdA0KPiArwqDCoCB3YXMganVzdCB2aXNpdGVkLCBzaW5jZSBpdCBtYXkgbm90IGJlIGtleXNw YWNlIGFkamFjZW50Lg0KPiArDQo+ICszLiBJZiB0aGVyZSBhcmUgbm8gbW9yZSBpbm9kZXMgbGVm dCBpbiB0aGlzIEFHOg0KPiArDQo+ICvCoMKgIGEuIE1vdmUgdGhlIGV4YW1pbmF0aW9uIGN1cnNv ciB0byB0aGUgcG9pbnQgb2YgdGhlIGludW1iZXINCj4ga2V5c3BhY2UgdGhhdA0KPiArwqDCoMKg wqDCoCBjb3JyZXNwb25kcyB0byB0aGUgc3RhcnQgb2YgdGhlIG5leHQgQUcuDQo+ICsNCj4gK8Kg wqAgYi4gQWRqdXN0IHRoZSB2aXNpdGVkIGlub2RlIGN1cnNvciB0byBpbmRpY2F0ZSB0aGF0IGl0 IGhhcw0KPiAidmlzaXRlZCIgdGhlDQo+ICvCoMKgwqDCoMKgIGxhc3QgcG9zc2libGUgaW5vZGUg aW4gdGhlIGN1cnJlbnQgQUcncyBpbm9kZSBrZXlzcGFjZS4NCj4gK8KgwqDCoMKgwqAgWEZTIGlu dW1iZXJzIGFyZSBzZWdtZW50ZWQsIHNvIHRoZSBjdXJzb3IgbmVlZHMgdG8gYmUgbWFya2VkDQo+ IGFzIGhhdmluZw0KPiArwqDCoMKgwqDCoCB2aXNpdGVkIHRoZSBlbnRpcmUga2V5c3BhY2UgdXAg dG8ganVzdCBiZWZvcmUgdGhlIHN0YXJ0IG9mIHRoZQ0KPiBuZXh0IEFHJ3MNCj4gK8KgwqDCoMKg wqAgaW5vZGUga2V5c3BhY2UuDQo+ICsNCj4gK8KgwqAgYy4gVW5sb2NrIHRoZSBBR0kgYW5kIHJl dHVybiB0byBzdGVwIDEgaWYgdGhlcmUgYXJlIHVuZXhhbWluZWQNCj4gQUdzIGluIHRoZQ0KPiAr wqDCoMKgwqDCoCBmaWxlc3lzdGVtLg0KPiArDQo+ICvCoMKgIGQuIElmIHRoZXJlIGFyZSBubyBt b3JlIEFHcyB0byBleGFtaW5lLCBzZXQgYm90aCBjdXJzb3JzIHRvIHRoZQ0KPiBlbmQgb2YgdGhl DQo+ICvCoMKgwqDCoMKgIGludW1iZXIga2V5c3BhY2UuDQo+ICvCoMKgwqDCoMKgIFRoZSBzY2Fu IGlzIG5vdyBjb21wbGV0ZS4NCj4gKw0KPiArNC4gT3RoZXJ3aXNlLCB0aGVyZSBpcyBhdCBsZWFz dCBvbmUgbW9yZSBpbm9kZSB0byBzY2FuIGluIHRoaXMgQUc6DQo+ICsNCj4gK8KgwqAgYS4gTW92 ZSB0aGUgZXhhbWluYXRpb24gY3Vyc29yIGFoZWFkIHRvIHRoZSBuZXh0IGlub2RlIG1hcmtlZCBh cw0KPiBhbGxvY2F0ZWQNCj4gK8KgwqDCoMKgwqAgYnkgdGhlIGlub2RlIGJ0cmVlLg0KPiArDQo+ ICvCoMKgIGIuIEFkanVzdCB0aGUgdmlzaXRlZCBpbm9kZSBjdXJzb3IgdG8gcG9pbnQgdG8gdGhl IGlub2RlIGp1c3QNCj4gcHJpb3IgdG8gd2hlcmUNCj4gK8KgwqDCoMKgwqAgdGhlIGV4YW1pbmF0 aW9uIGN1cnNvciBpcyBub3cuDQo+ICvCoMKgwqDCoMKgIEJlY2F1c2UgdGhlIHNjYW5uZXIgaG9s ZHMgdGhlIEFHSSBidWZmZXIgbG9jaywgbm8gaW5vZGVzIGNvdWxkDQo+IGhhdmUgYmVlbg0KPiAr wqDCoMKgwqDCoCBjcmVhdGVkIGluIHRoZSBwYXJ0IG9mIHRoZSBpbm9kZSBrZXlzcGFjZSB0aGF0 IHRoZSB2aXNpdGVkDQo+IGlub2RlIGN1cnNvcg0KPiArwqDCoMKgwqDCoCBqdXN0IGFkdmFuY2Vk Lg0KPiArDQo+ICs1LiBHZXQgdGhlIGluY29yZSBpbm9kZSBmb3IgdGhlIGludW1iZXIgb2YgdGhl IGV4YW1pbmF0aW9uIGN1cnNvci4NCj4gK8KgwqAgQnkgbWFpbnRhaW5pbmcgdGhlIEFHSSBidWZm ZXIgbG9jayB1bnRpbCB0aGlzIHBvaW50LCB0aGUgc2Nhbm5lcg0KPiBrbm93cyB0aGF0DQo+ICvC oMKgIGl0IHdhcyBzYWZlIHRvIGFkdmFuY2UgdGhlIGV4YW1pbmF0aW9uIGN1cnNvciBhY3Jvc3Mg dGhlIGVudGlyZQ0KPiBrZXlzcGFjZSwNCj4gK8KgwqAgYW5kIHRoYXQgaXQgaGFzIHN0YWJpbGl6 ZWQgdGhpcyBuZXh0IGlub2RlIHNvIHRoYXQgaXQgY2Fubm90DQo+IGRpc2FwcGVhciBmcm9tDQo+ ICvCoMKgIHRoZSBmaWxlc3lzdGVtIHVudGlsIHRoZSBzY2FuIHJlbGVhc2VzIHRoZSBpbmNvcmUg aW5vZGUuDQo+ICsNCj4gKzYuIERyb3AgdGhlIEFHSSBsb2NrIGFuZCByZXR1cm4gdGhlIGluY29y ZSBpbm9kZSB0byB0aGUgY2FsbGVyLg0KPiArDQo+ICtPbmxpbmUgZnNjayBmdW5jdGlvbnMgc2Nh biBhbGwgZmlsZXMgaW4gdGhlIGZpbGVzeXN0ZW0gYXMgZm9sbG93czoNCj4gKw0KPiArMS4gU3Rh cnQgYSBzY2FuIGJ5IGNhbGxpbmcgYGB4Y2hrX2lzY2FuX3N0YXJ0YGAuDQpIbW0sIEkgYWN0dWFs bHkgZGlkIG5vdCBmaW5kIHhjaGtfaXNjYW5fc3RhcnQgaW4gdGhlIGJlbG93IGJyYW5jaCwgSQ0K Zm91bmQgeGNoa19pc2Nhbl9pdGVyIGluICJ4ZnM6IGltcGxlbWVudCBsaXZlIGlub2RlIHNjYW4g Zm9yIHNjcnViIiwNCmJ1dCBpdCBkb2VzbnQgbG9vayBsaWtlIGFueXRoaW5nIHVzZXMgaXQgeWV0 LCBhdCBsZWFzdCBub3QgaW4gdGhhdA0KYnJhbmNoLg0KDQpBbHNvLCBpdCB0b29rIG1lIGEgYml0 IHRvIGZpZ3VyZSBvdXQgdGhhdCAiaW5pdGlhbCB1c2VyIiBtZWFudCAiY2FsbGluZw0KZnVuY3Rp b24iIA0KDQoNCj4gKw0KPiArMi4gQWR2YW5jZSB0aGUgc2NhbiBjdXJzb3IgKGBgeGNoa19pc2Nh bl9pdGVyYGApIHRvIGdldCB0aGUgbmV4dA0KPiBpbm9kZS4NCj4gK8KgwqAgSWYgb25lIGlzIHBy b3ZpZGVkOg0KPiArDQo+ICvCoMKgIGEuIExvY2sgdGhlIGlub2RlIHRvIHByZXZlbnQgdXBkYXRl cyBkdXJpbmcgdGhlIHNjYW4uDQo+ICsNCj4gK8KgwqAgYi4gU2NhbiB0aGUgaW5vZGUuDQo+ICsN Cj4gK8KgwqAgYy4gV2hpbGUgc3RpbGwgaG9sZGluZyB0aGUgaW5vZGUgbG9jaywgYWRqdXN0IHRo ZSB2aXNpdGVkIGlub2RlDQo+IGN1cnNvcg0KPiArwqDCoMKgwqDCoCAoYGB4Y2hrX2lzY2FuX21h cmtfdmlzaXRlZGBgKSB0byBwb2ludCB0byB0aGlzIGlub2RlLg0KPiArDQo+ICvCoMKgIGQuIFVu bG9jayBhbmQgcmVsZWFzZSB0aGUgaW5vZGUuDQo+ICsNCj4gKzguIENhbGwgYGB4Y2hrX2lzY2Fu X2ZpbmlzaGBgIHRvIGNvbXBsZXRlIHRoZSBzY2FuLg0KPiArDQo+ICtUaGVyZSBhcmUgc3VidGxl dGllcyB3aXRoIHRoZSBpbm9kZSBjYWNoZSB0aGF0IGNvbXBsaWNhdGUgZ3JhYmJpbmcNCj4gdGhl IGluY29yZQ0KPiAraW5vZGUgZm9yIHRoZSBjYWxsZXIuDQo+ICtPYnZpb3VzbHksIGl0IGlzIGFu IGFic29sdXRlIHJlcXVpcmVtZW50IHRoYXQgdGhlIGlub2RlIG1ldGFkYXRhIGJlDQo+IGNvbnNp c3RlbnQNCj4gK2Vub3VnaCB0byBsb2FkIGl0IGludG8gdGhlIGlub2RlIGNhY2hlLg0KPiArU2Vj b25kLCBpZiB0aGUgaW5jb3JlIGlub2RlIGlzIHN0dWNrIGluIHNvbWUgaW50ZXJtZWRpYXRlIHN0 YXRlLCB0aGUNCj4gc2Nhbg0KPiArY29vcmRpbmF0b3IgbXVzdCByZWxlYXNlIHRoZSBBR0kgYW5k IHB1c2ggdGhlIG1haW4gZmlsZXN5c3RlbSB0byBnZXQNCj4gdGhlIGlub2RlDQo+ICtiYWNrIGlu dG8gYSBsb2FkYWJsZSBzdGF0ZS4NCj4gKw0KPiArVGhlIHByb3Bvc2VkIHBhdGNoZXMgYXJlIHRo ZQ0KPiArYGlub2RlIHNjYW5uZXINCj4gKzwNCj4gaHR0cHM6Ly9naXQua2VybmVsLm9yZy9wdWIv c2NtL2xpbnV4L2tlcm5lbC9naXQvZGp3b25nL3hmcy1saW51eC5naXQvDQo+IGxvZy8/aD1zY3J1 Yi1pc2Nhbj5gXw0KPiArc2VyaWVzLg0KPiArDQo+ICtJbm9kZSBNYW5hZ2VtZW50DQo+ICtgYGBg YGBgYGBgYGBgYGBgDQo+ICsNCj4gK0luIHJlZ3VsYXIgZmlsZXN5c3RlbSBjb2RlLCByZWZlcmVu Y2VzIHRvIGFsbG9jYXRlZCBYRlMgaW5jb3JlDQo+IGlub2RlcyBhcmUNCj4gK2Fsd2F5cyBvYnRh aW5lZCAoYGB4ZnNfaWdldGBgKSBvdXRzaWRlIG9mIHRyYW5zYWN0aW9uIGNvbnRleHQNCj4gYmVj YXVzZSB0aGUNCj4gK2NyZWF0aW9uIG9mIHRoZSBpbmNvcmUgY29udGV4dCBmb3IgYW5lIHhpc3Rp bmcgZmlsZSBkb2VzIG5vdCByZXF1aXJlDQphbiBleGlzdGluZw0KPiBtZXRhZGF0YQ0KPiArdXBk YXRlcy4NCj4gK0hvd2V2ZXIsIGl0IGlzIGltcG9ydGFudCB0byBub3RlIHRoYXQgcmVmZXJlbmNl cyB0byBpbmNvcmUgaW5vZGVzDQo+IG9idGFpbmVkIGFzDQo+ICtwYXJ0IG9mIGZpbGUgY3JlYXRp b24gbXVzdCBiZSBwZXJmb3JtZWQgaW4gdHJhbnNhY3Rpb24gY29udGV4dA0KPiBiZWNhdXNlIHRo ZQ0KPiArZmlsZXN5c3RlbSBtdXN0IGVuc3VyZSB0aGUgYXRvbWljaXR5IG9mIHRoZSBvbmRpc2sg aW5vZGUgYnRyZWUgaW5kZXgNCj4gdXBkYXRlcw0KPiArYW5kIHRoZSBpbml0aWFsaXphdGlvbiBv ZiB0aGUgYWN0dWFsIG9uZGlzayBpbm9kZS4NCj4gKw0KPiArUmVmZXJlbmNlcyB0byBpbmNvcmUg aW5vZGVzIGFyZSBhbHdheXMgcmVsZWFzZWQgKGBgeGZzX2lyZWxlYGApDQo+IG91dHNpZGUgb2YN Cj4gK3RyYW5zYWN0aW9uIGNvbnRleHQgYmVjYXVzZSB0aGVyZSBhcmUgYSBoYW5kZnVsIG9mIGFj dGl2aXRpZXMgdGhhdA0KPiBtaWdodA0KPiArcmVxdWlyZSBvbmRpc2sgdXBkYXRlczoNCj4gKw0K PiArLSBUaGUgVkZTIG1heSBkZWNpZGUgdG8ga2ljayBvZmYgd3JpdGViYWNrIGFzIHBhcnQgb2Yg YQ0KPiBgYERPTlRDQUNIRWBgIGlub2RlDQo+ICvCoCByZWxlYXNlLg0KPiArDQo+ICstIFNwZWN1 bGF0aXZlIHByZWFsbG9jYXRpb25zIG5lZWQgdG8gYmUgdW5yZXNlcnZlZC4NCj4gKw0KPiArLSBB biB1bmxpbmtlZCBmaWxlIG1heSBoYXZlIGxvc3QgaXRzIGxhc3QgcmVmZXJlbmNlLCBpbiB3aGlj aCBjYXNlDQo+IHRoZSBlbnRpcmUNCj4gK8KgIGZpbGUgbXVzdCBiZSBpbmFjdGl2YXRlZCwgd2hp Y2ggaW52b2x2ZXMgcmVsZWFzaW5nIGFsbCBvZiBpdHMNCj4gcmVzb3VyY2VzIGluDQo+ICvCoCB0 aGUgb25kaXNrIG1ldGFkYXRhIGFuZCBmcmVlaW5nIHRoZSBpbm9kZS4NCj4gKw0KPiArVGhlc2Ug YWN0aXZpdGllcyBhcmUgY29sbGVjdGl2ZWx5IGNhbGxlZCBpbm9kZSBpbmFjdGl2YXRpb24uDQo+ ICtJbmFjdGl2YXRpb24gaGFzIHR3byBwYXJ0cyAtLSB0aGUgVkZTIHBhcnQsIHdoaWNoIGluaXRp YXRlcw0KPiB3cml0ZWJhY2sgb24gYWxsDQo+ICtkaXJ0eSBmaWxlIHBhZ2VzLCBhbmQgdGhlIFhG UyBwYXJ0LCB3aGljaCBjbGVhbnMgdXAgWEZTLXNwZWNpZmljDQo+IGluZm9ybWF0aW9uDQo+ICth bmQgZnJlZXMgdGhlIGlub2RlIGlmIGl0IHdhcyB1bmxpbmtlZC4NCj4gK0lmIHRoZSBpbm9kZSBp cyB1bmxpbmtlZCAob3IgdW5jb25uZWN0ZWQgYWZ0ZXIgYSBmaWxlIGhhbmRsZQ0KPiBvcGVyYXRp b24pLCB0aGUNCj4gK2tlcm5lbCBkcm9wcyB0aGUgaW5vZGUgaW50byB0aGUgaW5hY3RpdmF0aW9u IG1hY2hpbmVyeSBpbW1lZGlhdGVseS4NCj4gKw0KPiArRHVyaW5nIG5vcm1hbCBvcGVyYXRpb24s IHJlc291cmNlIGFjcXVpc2l0aW9uIGZvciBhbiB1cGRhdGUgZm9sbG93cw0KPiB0aGlzIG9yZGVy DQo+ICt0byBhdm9pZCBkZWFkbG9ja3M6DQo+ICsNCj4gKzEuIElub2RlIHJlZmVyZW5jZSAoYGBp Z2V0YGApLg0KPiArDQo+ICsyLiBGaWxlc3lzdGVtIGZyZWV6ZSBwcm90ZWN0aW9uLCBpZiByZXBh aXJpbmcNCj4gKGBgbW50X3dhbnRfd3JpdGVfZmlsZWBgKS4NCj4gKw0KPiArMy4gSW5vZGUgYGBJ T0xPQ0tgYCAoVkZTIGBgaV9yd3NlbWBgKSBsb2NrIHRvIGNvbnRyb2wgZmlsZSBJTy4NCj4gKw0K PiArNC4gSW5vZGUgYGBNTUFQTE9DS2BgIChwYWdlIGNhY2hlIGBgaW52YWxpZGF0ZV9sb2NrYGAp IGxvY2sgZm9yDQo+IG9wZXJhdGlvbnMgdGhhdA0KPiArwqDCoCBjYW4gdXBkYXRlIHBhZ2UgY2Fj aGUgbWFwcGluZ3MuDQo+ICsNCj4gKzUuIExvZyBmZWF0dXJlIGVuYWJsZW1lbnQuDQo+ICsNCj4g KzYuIFRyYW5zYWN0aW9uIGxvZyBzcGFjZSBncmFudC4NCj4gKw0KPiArNy4gU3BhY2Ugb24gdGhl IGRhdGEgYW5kIHJlYWx0aW1lIGRldmljZXMgZm9yIHRoZSB0cmFuc2FjdGlvbi4NCj4gKw0KPiAr OC4gSW5jb3JlIGRxdW90IHJlZmVyZW5jZXMsIGlmIGEgZmlsZSBpcyBiZWluZyByZXBhaXJlZC4N Cj4gK8KgwqAgTm90ZSB0aGF0IHRoZXkgYXJlIG5vdCBsb2NrZWQsIG1lcmVseSBhY3F1aXJlZC4N Cj4gKw0KPiArOS4gSW5vZGUgYGBJTE9DS2BgIGZvciBmaWxlIG1ldGFkYXRhIHVwZGF0ZXMuDQo+ ICsNCj4gKzEwLiBBRyBoZWFkZXIgYnVmZmVyIGxvY2tzIC8gUmVhbHRpbWUgbWV0YWRhdGEgaW5v ZGUgSUxPQ0suDQo+ICsNCj4gKzExLiBSZWFsdGltZSBtZXRhZGF0YSBidWZmZXIgbG9ja3MsIGlm IGFwcGxpY2FibGUuDQo+ICsNCj4gKzEyLiBFeHRlbnQgbWFwcGluZyBidHJlZSBibG9ja3MsIGlm IGFwcGxpY2FibGUuDQo+ICsNCj4gK1Jlc291cmNlcyBhcmUgb2Z0ZW4gcmVsZWFzZWQgaW4gdGhl IHJldmVyc2Ugb3JkZXIsIHRob3VnaCB0aGlzIGlzDQo+IG5vdCByZXF1aXJlZC4NCj4gK0hvd2V2 ZXIsIG9ubGluZSBmc2NrIGRpZmZlcnMgZnJvbSByZWd1bGFyIFhGUyBvcGVyYXRpb25zIGJlY2F1 c2UgaXQNCj4gbWF5IGV4YW1pbmUNCj4gK2FuIG9iamVjdCB0aGF0IG5vcm1hbGx5IGlzIGFjcXVp cmVkIGluIGEgbGF0ZXIgc3RhZ2Ugb2YgdGhlIGxvY2tpbmcNCj4gb3JkZXIsIGFuZA0KPiArdGhl biBkZWNpZGUgdG8gY3Jvc3MtcmVmZXJlbmNlIHRoZSBvYmplY3Qgd2l0aCBhbiBvYmplY3QgdGhh dCBpcw0KPiBhY3F1aXJlZA0KPiArZWFybGllciBpbiB0aGUgb3JkZXIuDQo+ICtUaGUgbmV4dCBm ZXcgc2VjdGlvbnMgZGV0YWlsIHRoZSBzcGVjaWZpYyB3YXlzIGluIHdoaWNoIG9ubGluZSBmc2Nr DQo+IHRha2VzIGNhcmUNCj4gK3RvIGF2b2lkIGRlYWRsb2Nrcy4NCj4gKw0KPiAraWdldCBhbmQg aXJlbGUgRHVyaW5nIGEgU2NydWINCj4gK15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eDQo+ ICsNCj4gK0FuIGlub2RlIHNjYW4gcGVyZm9ybWVkIG9uIGJlaGFsZiBvZiBhIHNjcnViIG9wZXJh dGlvbiBydW5zIGluDQo+IHRyYW5zYWN0aW9uDQo+ICtjb250ZXh0LCBhbmQgcG9zc2libHkgd2l0 aCByZXNvdXJjZXMgYWxyZWFkeSBsb2NrZWQgYW5kIGJvdW5kIHRvIGl0Lg0KPiArVGhpcyBpc24n dCBtdWNoIG9mIGEgcHJvYmxlbSBmb3IgYGBpZ2V0YGAgc2luY2UgaXQgY2FuIG9wZXJhdGUgaW4N Cj4gdGhlIGNvbnRleHQNCj4gK29mIGFuIGV4aXN0aW5nIHRyYW5zYWN0aW9uLCBhcyBsb25nIGFz IGFsbCBvZiB0aGUgYm91bmQgcmVzb3VyY2VzDQo+IGFyZSBhY3F1aXJlZA0KPiArYmVmb3JlIHRo ZSBpbm9kZSByZWZlcmVuY2UgaW4gdGhlIHJlZ3VsYXIgZmlsZXN5c3RlbS4NCj4gKw0KPiArV2hl biB0aGUgVkZTIGBgaXB1dGBgIGZ1bmN0aW9uIGlzIGdpdmVuIGEgbGlua2VkIGlub2RlIHdpdGgg bm8gb3RoZXINCj4gK3JlZmVyZW5jZXMsIGl0IG5vcm1hbGx5IHB1dHMgdGhlIGlub2RlIG9uIGFu IExSVSBsaXN0IGluIHRoZSBob3BlDQo+IHRoYXQgaXQgY2FuDQo+ICtzYXZlIHRpbWUgaWYgYW5v dGhlciBwcm9jZXNzIHJlLW9wZW5zIHRoZSBmaWxlIGJlZm9yZSB0aGUgc3lzdGVtDQo+IHJ1bnMg b3V0DQo+ICtvZiBtZW1vcnkgYW5kIGZyZWVzIGl0Lg0KPiArRmlsZXN5c3RlbSBjYWxsZXJzIGNh biBzaG9ydC1jaXJjdWl0IHRoZSBMUlUgcHJvY2VzcyBieSBzZXR0aW5nIGENCj4gYGBET05UQ0FD SEVgYA0KPiArZmxhZyBvbiB0aGUgaW5vZGUgdG8gY2F1c2UgdGhlIGtlcm5lbCB0byB0cnkgdG8g ZHJvcCB0aGUgaW5vZGUgaW50bw0KPiB0aGUNCj4gK2luYWN0aXZhdGlvbiBtYWNoaW5lcnkgaW1t ZWRpYXRlbHkuDQo+ICsNCj4gK0luIHRoZSBwYXN0LCBpbmFjdGl2YXRpb24gd2FzIGFsd2F5cyBk b25lIGZyb20gdGhlIHByb2Nlc3MgdGhhdA0KPiBkcm9wcGVkIHRoZQ0KPiAraW5vZGUsIHdoaWNo IHdhcyBhIHByb2JsZW0gZm9yIHNjcnViIGJlY2F1c2Ugc2NydWIgbWF5IGFscmVhZHkgaG9sZA0K PiBhDQo+ICt0cmFuc2FjdGlvbiwgYW5kIFhGUyBkb2VzIG5vdCBzdXBwb3J0IG5lc3RpbmcgdHJh bnNhY3Rpb25zLg0KPiArT24gdGhlIG90aGVyIGhhbmQsIGlmIHRoZXJlIGlzIG5vIHNjcnViIHRy YW5zYWN0aW9uLCBpdCBpcyBkZXNpcmFibGUNCj4gdG8gZHJvcA0KPiArb3RoZXJ3aXNlIHVudXNl ZCBpbm9kZXMgaW1tZWRpYXRlbHkgdG8gYXZvaWQgcG9sbHV0aW5nIGNhY2hlcy4NCj4gK1RvIGNh cHR1cmUgdGhlc2UgbnVhbmNlcywgdGhlIG9ubGluZSBmc2NrIGNvZGUgaGFzIGEgc2VwYXJhdGUN Cj4gYGB4Y2hrX2lyZWxlYGANCj4gK2Z1bmN0aW9uIHRvIHNldCBvciBjbGVhciB0aGUgYGBET05U Q0FDSEVgYCBmbGFnIHRvIGdldCB0aGUgcmVxdWlyZWQNCj4gcmVsZWFzZQ0KPiArYmVoYXZpb3Iu DQo+ICsNCj4gK1Byb3Bvc2VkIHBhdGNoc2V0cyBpbmNsdWRlIGZpeGluZw0KPiArYHNjcnViIGln ZXQgdXNhZ2UNCj4gKzwNCj4gaHR0cHM6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tl cm5lbC9naXQvZGp3b25nL3hmcy1saW51eC5naXQvDQo+IGxvZy8/aD1zY3J1Yi1pZ2V0LWZpeGVz PmBfIGFuZA0KPiArYGRpciBpZ2V0IHVzYWdlDQo+ICs8DQo+IGh0dHBzOi8vZ2l0Lmtlcm5lbC5v cmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2Rqd29uZy94ZnMtbGludXguZ2l0Lw0KPiBsb2cv P2g9c2NydWItZGlyLWlnZXQtZml4ZXM+YF8uDQo+ICsNCj4gK0xvY2tpbmcgSW5vZGVzDQo+ICte Xl5eXl5eXl5eXl5eXg0KPiArDQo+ICtJbiByZWd1bGFyIGZpbGVzeXN0ZW0gY29kZSwgdGhlIFZG UyBhbmQgWEZTIHdpbGwgYWNxdWlyZSBtdWx0aXBsZQ0KPiBJT0xPQ0sgbG9ja3MNCj4gK2luIGEg d2VsbC1rbm93biBvcmRlcjogcGFyZW50IOKGkiBjaGlsZCB3aGVuIHVwZGF0aW5nIHRoZSBkaXJl Y3RvcnkNCj4gdHJlZSwgYW5kDQo+ICtgYHN0cnVjdCBpbm9kZWBgIGFkZHJlc3Mgb3JkZXIgb3Ro ZXJ3aXNlLg0KPiArRm9yIHJlZ3VsYXIgZmlsZXMsIHRoZSBNTUFQTE9DSyBjYW4gYmUgYWNxdWly ZWQgYWZ0ZXIgdGhlIElPTE9DSyB0bw0KPiBzdG9wIHBhZ2UNCj4gK2ZhdWx0cy4NCj4gK0lmIHR3 byBNTUFQTE9DS3MgbXVzdCBiZSBhY3F1aXJlZCwgdGhleSBhcmUgYWNxdWlyZWQgaW7CoA0KDQoN Cj4gYGBzdHJ1Y3QNCj4gK2FkZHJlc3Nfc3BhY2VgYCBvcmRlci4NCnRoZSBvcmRlciBvZiB0aGVp ciBtZW1vcnkgYWRkcmVzcw0KDQo/DQoNCj4gK0R1ZSB0byB0aGUgc3RydWN0dXJlIG9mIGV4aXN0 aW5nIGZpbGVzeXN0ZW0gY29kZSwgSU9MT0NLcyBhbmQNCj4gTU1BUExPQ0tzIG11c3QgYmUNCj4g K2FjcXVpcmVkIGJlZm9yZSB0cmFuc2FjdGlvbnMgYXJlIGFsbG9jYXRlZC4NCj4gK0lmIHR3byBJ TE9DS3MgbXVzdCBiZSBhY3F1aXJlZCwgdGhleSBhcmUgYWNxdWlyZWQgaW4gaW51bWJlciBvcmRl ci4NCj4gKw0KPiArSW5vZGUgbG9jayBhY3F1aXNpdGlvbiBtdXN0IGJlIGRvbmUgY2FyZWZ1bGx5 IGR1cmluZyBhIGNvb3JkaW5hdGVkDQo+IGlub2RlIHNjYW4uDQo+ICtPbmxpbmUgZnNjayBjYW5u b3QgYWJpZGUgdGhlc2UgY29udmVudGlvbnMsIGJlY2F1c2UgZm9yIGEgZGlyZWN0b3J5DQo+IHRy ZWUNCj4gK3NjYW5uZXIsIHRoZSBzY3J1YiBwcm9jZXNzIGhvbGRzIHRoZSBJT0xPQ0sgb2YgdGhl IGZpbGUgYmVpbmcNCj4gc2Nhbm5lZCBhbmQgaXQNCj4gK25lZWRzIHRvIHRha2UgdGhlIElPTE9D SyBvZiB0aGUgZmlsZSBhdCB0aGUgb3RoZXIgZW5kIG9mIHRoZQ0KPiBkaXJlY3RvcnkgbGluay4N Cj4gK0lmIHRoZSBkaXJlY3RvcnkgdHJlZSBpcyBjb3JydXB0IGJlY2F1c2UgaXQgY29udGFpbnMg YSBjeWNsZSwNCj4gYGB4ZnNfc2NydWJgYA0KPiArY2Fubm90IHVzZSB0aGUgcmVndWxhciBpbm9k ZSBsb2NraW5nIGZ1bmN0aW9ucyBhbmQgYXZvaWQgYmVjb21pbmcNCj4gdHJhcHBlZCBpbiBhbg0K PiArQUJCQSBkZWFkbG9jay4NCj4gKw0KPiArU29sdmluZyBib3RoIG9mIHRoZXNlIHByb2JsZW1z IGlzIHN0cmFpZ2h0Zm9yd2FyZCAtLSBhbnkgdGltZSBvbmxpbmUNCj4gZnNjaw0KPiArbmVlZHMg dG8gdGFrZSBhIHNlY29uZCBsb2NrIG9mIHRoZSBzYW1lIGNsYXNzLCBpdCB1c2VzIHRyeWxvY2sg dG8NCj4gYXZvaWQgYW4gQUJCQQ0KPiArZGVhZGxvY2suDQo+ICtJZiB0aGUgdHJ5bG9jayBmYWls cywgc2NydWIgZHJvcHMgYWxsIGlub2RlIGxvY2tzIGFuZCB1c2UgdHJ5bG9jaw0KPiBsb29wcyB0 bw0KPiArKHJlKWFjcXVpcmUgYWxsIG5lY2Vzc2FyeSByZXNvdXJjZXMuDQo+ICtUcnlsb2NrIGxv b3BzIGVuYWJsZSBzY3J1YiB0byBjaGVjayBmb3IgcGVuZGluZyBmYXRhbCBzaWduYWxzLCB3aGlj aA0KPiBpcyBob3cNCj4gK3NjcnViIGF2b2lkcyBkZWFkbG9ja2luZyB0aGUgZmlsZXN5c3RlbSBv ciBiZWNvbWluZyBhbiB1bnJlc3BvbnNpdmUNCj4gcHJvY2Vzcy4NCj4gK0hvd2V2ZXIsIHRyeWxv Y2sgbG9vcHMgbWVhbnMgdGhhdCBvbmxpbmUgZnNjayBtdXN0IGJlIHByZXBhcmVkIHRvDQo+IG1l YXN1cmUgdGhlDQo+ICtyZXNvdXJjZSBiZWluZyBzY3J1YmJlZCBiZWZvcmUgYW5kIGFmdGVyIHRo ZSBsb2NrIGN5Y2xlIHRvIGRldGVjdA0KPiBjaGFuZ2VzIGFuZA0KPiArcmVhY3QgYWNjb3JkaW5n bHkuDQo+ICsNCj4gKy4uIF9kaXJwYXJlbnQ6DQo+ICsNCj4gK0Nhc2UgU3R1ZHk6IEZpbmRpbmcg YSBEaXJlY3RvcnkgUGFyZW50DQo+ICteXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5e Xl5eXg0KPiArDQo+ICtDb25zaWRlciB0aGUgZGlyZWN0b3J5IHBhcmVudCBwb2ludGVyIHJlcGFp ciBjb2RlIGFzIGFuIGV4YW1wbGUuDQo+ICtPbmxpbmUgZnNjayBtdXN0IHZlcmlmeSB0aGF0IHRo ZSBkb3Rkb3QgZGlyZW50IG9mIGEgZGlyZWN0b3J5IHBvaW50cw0KPiB1cCB0byBhDQo+ICtwYXJl bnQgZGlyZWN0b3J5LCBhbmQgdGhhdCB0aGUgcGFyZW50IGRpcmVjdG9yeSBjb250YWlucyBleGFj dGx5IG9uZQ0KPiBkaXJlbnQNCj4gK3BvaW50aW5nIGRvd24gdG8gdGhlIGNoaWxkIGRpcmVjdG9y eS4NCj4gK0Z1bGx5IHZhbGlkYXRpbmcgdGhpcyByZWxhdGlvbnNoaXAgKGFuZCByZXBhaXJpbmcg aXQgaWYgcG9zc2libGUpDQo+IHJlcXVpcmVzIGENCj4gK3dhbGsgb2YgZXZlcnkgZGlyZWN0b3J5 IG9uIHRoZSBmaWxlc3lzdGVtIHdoaWxlIGhvbGRpbmcgdGhlIGNoaWxkDQo+IGxvY2tlZCwgYW5k DQo+ICt3aGlsZSB1cGRhdGVzIHRvIHRoZSBkaXJlY3RvcnkgdHJlZSBhcmUgYmVpbmcgbWFkZS4N Cj4gK1RoZSBjb29yZGluYXRlZCBpbm9kZSBzY2FuIHByb3ZpZGVzIGEgd2F5IHRvIHdhbGsgdGhl IGZpbGVzeXN0ZW0NCj4gd2l0aG91dCB0aGUNCj4gK3Bvc3NpYmlsaXR5IG9mIG1pc3NpbmcgYW4g aW5vZGUuDQo+ICtUaGUgY2hpbGQgZGlyZWN0b3J5IGlzIGtlcHQgbG9ja2VkIHRvIHByZXZlbnQg dXBkYXRlcyB0byB0aGUgZG90ZG90DQo+IGRpcmVudCwgYnV0DQo+ICtpZiB0aGUgc2Nhbm5lciBm YWlscyB0byBsb2NrIGEgcGFyZW50LCBpdCBjYW4gZHJvcCBhbmQgcmVsb2NrIGJvdGgNCj4gdGhl IGNoaWxkDQo+ICthbmQgdGhlIHByb3NwZWN0aXZlIHBhcmVudC4NCj4gK0lmIHRoZSBkb3Rkb3Qg ZW50cnkgY2hhbmdlcyB3aGlsZSB0aGUgZGlyZWN0b3J5IGlzIHVubG9ja2VkLCB0aGVuIGENCj4g bW92ZSBvcg0KPiArcmVuYW1lIG9wZXJhdGlvbiBtdXN0IGhhdmUgY2hhbmdlZCB0aGUgY2hpbGQn cyBwYXJlbnRhZ2UsIGFuZCB0aGUNCj4gc2NhbiBjYW4NCj4gK2V4aXQgZWFybHkuDQo+ICsNCj4g K1RoZSBwcm9wb3NlZCBwYXRjaHNldCBpcyB0aGUNCj4gK2BkaXJlY3RvcnkgcmVwYWlyDQo+ICs8 DQo+IGh0dHBzOi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2Rqd29u Zy94ZnMtbGludXguZ2l0Lw0KPiBsb2cvP2g9cmVwYWlyLWRpcnM+YF8NCj4gK3Nlcmllcy4NCj4g Kw0KPiArLi4gX2ZzaG9va3M6DQo+ICsNCj4gK0ZpbGVzeXN0ZW0gSG9va3MNCj4gK2BgYGBgYGBg YGBgYGBgYGBgDQo+ICsNCj4gK1RoZSBzZWNvbmQgcGllY2Ugb2Ygc3VwcG9ydCB0aGF0IG9ubGlu ZSBmc2NrIGZ1bmN0aW9ucyBuZWVkIGR1cmluZyBhDQo+IGZ1bGwNCj4gK2ZpbGVzeXN0ZW0gc2Nh biBpcyB0aGUgYWJpbGl0eSB0byBzdGF5IGluZm9ybWVkIGFib3V0IHVwZGF0ZXMgYmVpbmcNCj4g bWFkZSBieQ0KPiArb3RoZXIgdGhyZWFkcyBpbiB0aGUgZmlsZXN5c3RlbSwgc2luY2UgY29tcGFy aXNvbnMgYWdhaW5zdCB0aGUgcGFzdA0KPiBhcmUgdXNlbGVzcw0KPiAraW4gYSBkeW5hbWljIGVu dmlyb25tZW50Lg0KPiArVHdvIHBpZWNlcyBvZiBMaW51eCBrZXJuZWwgaW5mcmFzdHJ1Y3R1cmUg ZW5hYmxlIG9ubGluZSBmc2NrIHRvDQo+IG1vbml0b3IgcmVndWxhcg0KPiArZmlsZXN5c3RlbSBv cGVyYXRpb25zOiBmaWxlc3lzdGVtIGhvb2tzIGFuZCA6cmVmOmBzdGF0aWMNCj4ga2V5czxqdW1w X2xhYmVscz5gLg0KPiArDQo+ICtGaWxlc3lzdGVtIGhvb2tzIGNvbnZleSBpbmZvcm1hdGlvbiBh Ym91dCBhbiBvbmdvaW5nIGZpbGVzeXN0ZW0NCj4gb3BlcmF0aW9uIHRvDQo+ICthIGRvd25zdHJl YW0gY29uc3VtZXIuDQo+ICtJbiB0aGlzIGNhc2UsIHRoZSBkb3duc3RyZWFtIGNvbnN1bWVyIGlz IGFsd2F5cyBhbiBvbmxpbmUgZnNjaw0KPiBmdW5jdGlvbi4NCj4gK0JlY2F1c2UgbXVsdGlwbGUg ZnNjayBmdW5jdGlvbnMgY2FuIHJ1biBpbiBwYXJhbGxlbCwgb25saW5lIGZzY2sNCj4gdXNlcyB0 aGUgTGludXgNCj4gK25vdGlmaWVyIGNhbGwgY2hhaW4gZmFjaWxpdHkgdG8gZGlzcGF0Y2ggdXBk YXRlcyB0byBhbnkgbnVtYmVyIG9mDQo+IGludGVyZXN0ZWQNCj4gK2ZzY2sgcHJvY2Vzc2VzLg0K PiArQ2FsbCBjaGFpbnMgYXJlIGEgZHluYW1pYyBsaXN0LCB3aGljaCBtZWFucyB0aGF0IHRoZXkg Y2FuIGJlDQo+IGNvbmZpZ3VyZWQgYXQNCj4gK3J1biB0aW1lLg0KPiArQmVjYXVzZSB0aGVzZSBo b29rcyBhcmUgcHJpdmF0ZSB0byB0aGUgWEZTIG1vZHVsZSwgdGhlIGluZm9ybWF0aW9uDQo+IHBh c3NlZCBhbG9uZw0KPiArY29udGFpbnMgZXhhY3RseSB3aGF0IHRoZSBjaGVja2luZyBmdW5jdGlv biBuZWVkcyB0byB1cGRhdGUgaXRzDQo+IG9ic2VydmF0aW9ucy4NCj4gKw0KPiArVGhlIGN1cnJl bnQgaW1wbGVtZW50YXRpb24gb2YgWEZTIGhvb2tzIHVzZXMgU1JDVSBub3RpZmllciBjaGFpbnMg dG8NCj4gcmVkdWNlIHRoZQ0KPiAraW1wYWN0IHRvIGhpZ2hseSB0aHJlYWRlZCB3b3JrbG9hZHMu DQo+ICtSZWd1bGFyIGJsb2NraW5nIG5vdGlmaWVyIGNoYWlucyB1c2UgYSByd3NlbSBhbmQgc2Vl bSB0byBoYXZlIGEgbXVjaA0KPiBsb3dlcg0KPiArb3ZlcmhlYWQgZm9yIHNpbmdsZS10aHJlYWRl ZCBhcHBsaWNhdGlvbnMuDQo+ICtIb3dldmVyLCBpdCBtYXkgdHVybiBvdXQgdGhhdCB0aGUgY29t YmluYXRpb24gb2YgYmxvY2tpbmcgY2hhaW5zIGFuZA0KPiBzdGF0aWMNCj4gK2tleXMgYXJlIGEg bW9yZSBwZXJmb3JtYW50IGNvbWJpbmF0aW9uOyBtb3JlIHN0dWR5IGlzIG5lZWRlZCBoZXJlLg0K PiArDQo+ICtUaGUgZm9sbG93aW5nIHBpZWNlcyBhcmUgbmVjZXNzYXJ5IHRvIGhvb2sgYSBjZXJ0 YWluIHBvaW50IGluIHRoZQ0KPiBmaWxlc3lzdGVtOg0KPiArDQo+ICstIEEgYGBzdHJ1Y3QgeGZz X2hvb2tzYGAgb2JqZWN0IG11c3QgYmUgZW1iZWRkZWQgaW4gYSBjb252ZW5pZW50DQo+IHBsYWNl IHN1Y2ggYXMNCj4gK8KgIGEgd2VsbC1rbm93biBpbmNvcmUgZmlsZXN5c3RlbSBvYmplY3QuDQo+ ICsNCj4gKy0gRWFjaCBob29rIG11c3QgZGVmaW5lIGFuIGFjdGlvbiBjb2RlIGFuZCBhIHN0cnVj dHVyZSBjb250YWluaW5nDQo+IG1vcmUgY29udGV4dA0KPiArwqAgYWJvdXQgdGhlIGFjdGlvbi4N Cj4gKw0KPiArLSBIb29rIHByb3ZpZGVycyBzaG91bGQgcHJvdmlkZSBhcHByb3ByaWF0ZSB3cmFw cGVyIGZ1bmN0aW9ucyBhbmQNCj4gc3RydWN0cw0KPiArwqAgYXJvdW5kIHRoZSBgYHhmc19ob29r c2BgIGFuZCBgYHhmc19ob29rYGAgb2JqZWN0cyB0byB0YWtlDQo+IGFkdmFudGFnZSBvZiB0eXBl DQo+ICvCoCBjaGVja2luZyB0byBlbnN1cmUgY29ycmVjdCB1c2FnZS4NCj4gKw0KPiArLSBBIGNh bGxzaXRlIGluIHRoZSByZWd1bGFyIGZpbGVzeXN0ZW0gY29kZSBtdXN0IGJlIGNob3NlbiB0byBj YWxsDQo+ICvCoCBgYHhmc19ob29rc19jYWxsYGAgd2l0aCB0aGUgYWN0aW9uIGNvZGUgYW5kIGRh dGEgc3RydWN0dXJlLg0KPiArwqAgVGhpcyBwbGFjZSBzaG91bGQgYmUgYWRqYWNlbnQgdG8gKGFu ZCBub3QgZWFybGllciB0aGFuKSB0aGUgcGxhY2UNCj4gd2hlcmUNCj4gK8KgIHRoZSBmaWxlc3lz dGVtIHVwZGF0ZSBpcyBjb21taXR0ZWQgdG8gdGhlIHRyYW5zYWN0aW9uLg0KPiArwqAgSW4gZ2Vu ZXJhbCwgd2hlbiB0aGUgZmlsZXN5c3RlbSBjYWxscyBhIGhvb2sgY2hhaW4sIGl0IHNob3VsZCBi ZQ0KPiBhYmxlIHRvDQo+ICvCoCBoYW5kbGUgc2xlZXBpbmcgYW5kIHNob3VsZCBub3QgYmUgdnVs bmVyYWJsZSB0byBtZW1vcnkgcmVjbGFpbSBvcg0KPiBsb2NraW5nDQo+ICvCoCByZWN1cnNpb24u DQo+ICvCoCBIb3dldmVyLCB0aGUgZXhhY3QgcmVxdWlyZW1lbnRzIGFyZSB2ZXJ5IGRlcGVuZGVu dCBvbiB0aGUgY29udGV4dA0KPiBvZiB0aGUgaG9vaw0KPiArwqAgY2FsbGVyIGFuZCB0aGUgY2Fs bGVlLg0KPiArDQo+ICstIFRoZSBvbmxpbmUgZnNjayBmdW5jdGlvbiBzaG91bGQgZGVmaW5lIGEg c3RydWN0dXJlIHRvIGhvbGQgc2Nhbg0KPiBkYXRhLCBhIGxvY2sNCj4gK8KgIHRvIGNvb3JkaW5h dGUgYWNjZXNzIHRvIHRoZSBzY2FuIGRhdGEsIGFuZCBhIGBgc3RydWN0IHhmc19ob29rYGANCj4g b2JqZWN0Lg0KPiArwqAgVGhlIHNjYW5uZXIgZnVuY3Rpb24gYW5kIHRoZSByZWd1bGFyIGZpbGVz eXN0ZW0gY29kZSBtdXN0IGFjcXVpcmUNCj4gcmVzb3VyY2VzDQo+ICvCoCBpbiB0aGUgc2FtZSBv cmRlcjsgc2VlIHRoZSBuZXh0IHNlY3Rpb24gZm9yIGRldGFpbHMuDQo+ICsNCj4gKy0gVGhlIG9u bGluZSBmc2NrIGNvZGUgbXVzdCBjb250YWluIGEgQyBmdW5jdGlvbiB0byBjYXRjaCB0aGUgaG9v aw0KPiBhY3Rpb24gY29kZQ0KPiArwqAgYW5kIGRhdGEgc3RydWN0dXJlLg0KPiArwqAgSWYgdGhl IG9iamVjdCBiZWluZyB1cGRhdGVkIGhhcyBhbHJlYWR5IGJlZW4gdmlzaXRlZCBieSB0aGUgc2Nh biwNCj4gdGhlbiB0aGUNCj4gK8KgIGhvb2sgaW5mb3JtYXRpb24gbXVzdCBiZSBhcHBsaWVkIHRv IHRoZSBzY2FuIGRhdGEuDQo+ICsNCj4gKy0gUHJpb3IgdG8gdW5sb2NraW5nIGlub2RlcyB0byBz dGFydCB0aGUgc2Nhbiwgb25saW5lIGZzY2sgbXVzdCBjYWxsDQo+ICvCoCBgYHhmc19ob29rc19z ZXR1cGBgIHRvIGluaXRpYWxpemUgdGhlIGBgc3RydWN0IHhmc19ob29rYGAsIGFuZA0KPiArwqAg YGB4ZnNfaG9va3NfYWRkYGAgdG8gZW5hYmxlIHRoZSBob29rLg0KPiArDQo+ICstIE9ubGluZSBm c2NrIG11c3QgY2FsbCBgYHhmc19ob29rc19kZWxgYCB0byBkaXNhYmxlIHRoZSBob29rIG9uY2UN Cj4gdGhlIHNjYW4gaXMNCj4gK8KgIGNvbXBsZXRlLg0KPiArDQo+ICtUaGUgbnVtYmVyIG9mIGhv b2tzIHNob3VsZCBiZSBrZXB0IHRvIGEgbWluaW11bSB0byByZWR1Y2UNCj4gY29tcGxleGl0eS4N Cj4gK1N0YXRpYyBrZXlzIGFyZSB1c2VkIHRvIHJlZHVjZSB0aGUgb3ZlcmhlYWQgb2YgZmlsZXN5 c3RlbSBob29rcyB0bw0KPiBuZWFybHkNCj4gK3plcm8gd2hlbiBvbmxpbmUgZnNjayBpcyBub3Qg cnVubmluZy4NCj4gKw0KPiArLi4gX2xpdmV1cGRhdGU6DQo+ICsNCj4gK0xpdmUgVXBkYXRlcyBE dXJpbmcgYSBTY2FuDQo+ICtgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYA0KPiArDQo+ICtUaGUg Y29kZSBwYXRocyBvZiB0aGUgb25saW5lIGZzY2sgc2Nhbm5pbmcgY29kZSBhbmQgdGhlDQo+IDpy ZWY6YGhvb2tlZDxmc2hvb2tzPmANCj4gK2ZpbGVzeXN0ZW0gY29kZSBsb29rIGxpa2UgdGhpczo6 DQo+ICsNCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgb3RoZXIgcHJvZ3JhbQ0KPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCDihpMNCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqAgaW5vZGUgbG9jayDihpDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilJANCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAg4oaTwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IOKUgg0KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBBRyBoZWFkZXIgbG9ja8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg4pSCDQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIOKGk8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCDilIINCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZmlsZXN5c3RlbSBmdW5jdGlvbsKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCDilIINCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAg4oaTwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIOKUgg0KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBub3RpZmllciBjYWxsIGNoYWluwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIOKUgsKgwqDCoCBzYW1lDQo+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIOKGk8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCDilJzilIDilIDilIAgaW5vZGUNCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqAgc2NydWIgaG9vayBmdW5jdGlvbsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCDilILCoMKgwqAg bG9jaw0KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCDihpPCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg4pSCDQo+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHNjYW4gZGF0YSBtdXRleCDihpDilIDilIDilJDCoMKgwqAgc2FtZcKgwqDC oCDilIINCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg4oaTwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCDilJzilIDilIDilIAgc2NhbsKgwqDCoCDilIINCj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqAgdXBkYXRlIHNjYW4gZGF0YcKgwqAg4pSCwqDCoMKgIGxvY2vCoMKgwqAg4pSC DQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIOKGkcKgwqDCoMKgwqDCoMKg wqDCoMKgwqAg4pSCwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCDilIINCj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqAgc2NhbiBkYXRhIG11dGV4IOKGkOKUgOKUgOKUmMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAg4pSCDQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIOKGkcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCDilIINCj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqAgaW5vZGUgbG9jayDihpDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJgNCj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAg4oaRDQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNjcnViIGZ1 bmN0aW9uDQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIOKGkQ0KPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBpbm9kZSBzY2FubmVyDQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIOKGkQ0KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB4ZnNfc2NydWIN Cj4gKw0KPiArVGhlc2UgcnVsZXMgbXVzdCBiZSBmb2xsb3dlZCB0byBlbnN1cmUgY29ycmVjdCBp bnRlcmFjdGlvbnMgYmV0d2Vlbg0KPiB0aGUNCj4gK2NoZWNraW5nIGNvZGUgYW5kIHRoZSBjb2Rl IG1ha2luZyBhbiB1cGRhdGUgdG8gdGhlIGZpbGVzeXN0ZW06DQo+ICsNCj4gKy0gUHJpb3IgdG8g aW52b2tpbmcgdGhlIG5vdGlmaWVyIGNhbGwgY2hhaW4sIHRoZSBmaWxlc3lzdGVtIGZ1bmN0aW9u DQo+IGJlaW5nDQo+ICvCoCBob29rZWQgbXVzdCBhY3F1aXJlIHRoZSBzYW1lIGxvY2sgdGhhdCB0 aGUgc2NydWIgc2Nhbm5pbmcgZnVuY3Rpb24NCj4gYWNxdWlyZXMNCj4gK8KgIHRvIHNjYW4gdGhl IGlub2RlLg0KPiArDQo+ICstIFRoZSBzY2FubmluZyBmdW5jdGlvbiBhbmQgdGhlIHNjcnViIGhv b2sgZnVuY3Rpb24gbXVzdCBjb29yZGluYXRlDQo+IGFjY2VzcyB0bw0KPiArwqAgdGhlIHNjYW4g ZGF0YSBieSBhY3F1aXJpbmcgYSBsb2NrIG9uIHRoZSBzY2FuIGRhdGEuDQo+ICsNCj4gKy0gU2Ny dWIgaG9vayBmdW5jdGlvbiBtdXN0IG5vdCBhZGQgdGhlIGxpdmUgdXBkYXRlIGluZm9ybWF0aW9u IHRvDQo+IHRoZSBzY2FuDQo+ICvCoCBvYnNlcnZhdGlvbnMgdW5sZXNzIHRoZSBpbm9kZSBiZWlu ZyB1cGRhdGVkIGhhcyBhbHJlYWR5IGJlZW4NCj4gc2Nhbm5lZC4NCj4gK8KgIFRoZSBzY2FuIGNv b3JkaW5hdG9yIGhhcyBhIGhlbHBlciBwcmVkaWNhdGUNCj4gKGBgeGNoa19pc2Nhbl93YW50X2xp dmVfdXBkYXRlYGApDQo+ICvCoCBmb3IgdGhpcy4NCj4gKw0KPiArLSBTY3J1YiBob29rIGZ1bmN0 aW9ucyBtdXN0IG5vdCBjaGFuZ2UgdGhlIGNhbGxlcidzIHN0YXRlLCBpbmNsdWRpbmcNCj4gdGhl DQo+ICvCoCB0cmFuc2FjdGlvbiB0aGF0IGl0IGlzIHJ1bm5pbmcuDQo+ICvCoCBUaGV5IG11c3Qg bm90IGFjcXVpcmUgYW55IHJlc291cmNlcyB0aGF0IG1pZ2h0IGNvbmZsaWN0IHdpdGggdGhlDQo+ IGZpbGVzeXN0ZW0NCj4gK8KgIGZ1bmN0aW9uIGJlaW5nIGhvb2tlZC4NCj4gKw0KPiArLSBUaGUg aG9vayBmdW5jdGlvbiBjYW4gYWJvcnQgdGhlIGlub2RlIHNjYW4gdG8gYXZvaWQgYnJlYWtpbmcg dGhlDQo+IG90aGVyIHJ1bGVzLg0KPiArDQo+ICtUaGUgaW5vZGUgc2NhbiBBUElzIGFyZSBwcmV0 dHkgc2ltcGxlOg0KPiArDQo+ICstIGBgeGNoa19pc2Nhbl9zdGFydGBgIHN0YXJ0cyBhIHNjYW4N Cj4gKw0KPiArLSBgYHhjaGtfaXNjYW5faXRlcmBgIGdyYWJzIGEgcmVmZXJlbmNlIHRvIHRoZSBu ZXh0IGlub2RlIGluIHRoZQ0KPiBzY2FuIG9yDQo+ICvCoCByZXR1cm5zIHplcm8gaWYgdGhlcmUg aXMgbm90aGluZyBsZWZ0IHRvIHNjYW4NCj4gKw0KPiArLSBgYHhjaGtfaXNjYW5fd2FudF9saXZl X3VwZGF0ZWBgIHRvIGRlY2lkZSBpZiBhbiBpbm9kZSBoYXMgYWxyZWFkeQ0KPiBiZWVuDQo+ICvC oCB2aXNpdGVkIGluIHRoZSBzY2FuLg0KPiArwqAgVGhpcyBpcyBjcml0aWNhbCBmb3IgaG9vayBm dW5jdGlvbnMgdG8gZGVjaWRlIGlmIHRoZXkgbmVlZCB0bw0KPiB1cGRhdGUgdGhlDQo+ICvCoCBp bi1tZW1vcnkgc2NhbiBpbmZvcm1hdGlvbi4NCj4gKw0KPiArLSBgYHhjaGtfaXNjYW5fbWFya192 aXNpdGVkYGAgdG8gbWFyayBhbiBpbm9kZSBhcyBoYXZpbmcgYmVlbg0KPiB2aXNpdGVkIGluIHRo ZQ0KPiArwqAgc2Nhbg0KPiArDQo+ICstIGBgeGNoa19pc2Nhbl9maW5pc2hgYCB0byBmaW5pc2gg dGhlIHNjYW4NCj4gKw0KPiArVGhlIHByb3Bvc2VkIHBhdGNoZXMgYXJlIGF0IHRoZSBzdGFydCBv ZiB0aGUNCj4gK2BvbmxpbmUgcXVvdGFjaGVjaw0KPiArPA0KPiBodHRwczovL2dpdC5rZXJuZWwu b3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9kandvbmcveGZzLWxpbnV4LmdpdC8NCj4gbG9n Lz9oPXJlcGFpci1xdW90YT5gXw0KPiArc2VyaWVzLg0KV3JvbmcgbGluaz8gIFRoaXMgbG9va3Mg bGlrZSBpdCBnb2VzIHRvIHRoZSBzZWN0aW9uIGJlbG93Lg0KDQo+ICsNCj4gKy4uIF9xdW90YWNo ZWNrOg0KPiArDQo+ICtDYXNlIFN0dWR5OiBRdW90YSBDb3VudGVyIENoZWNraW5nDQo+ICteXl5e Xl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eDQo+ICsNCj4gK0l0IGlzIHVzZWZ1bCB0byBj b21wYXJlIHRoZSBtb3VudCB0aW1lIHF1b3RhY2hlY2sgY29kZSB0byB0aGUgb25saW5lDQo+IHJl cGFpcg0KPiArcXVvdGFjaGVjayBjb2RlLg0KPiArTW91bnQgdGltZSBxdW90YWNoZWNrIGRvZXMg bm90IGhhdmUgdG8gY29udGVuZCB3aXRoIGNvbmN1cnJlbnQNCj4gb3BlcmF0aW9ucywgc28NCj4g K2l0IGRvZXMgdGhlIGZvbGxvd2luZzoNCj4gKw0KPiArMS4gTWFrZSBzdXJlIHRoZSBvbmRpc2sg ZHF1b3RzIGFyZSBpbiBnb29kIGVub3VnaCBzaGFwZSB0aGF0IGFsbCB0aGUNCj4gaW5jb3JlDQo+ ICvCoMKgIGRxdW90cyB3aWxsIGFjdHVhbGx5IGxvYWQsIGFuZCB6ZXJvIHRoZSByZXNvdXJjZSB1 c2FnZSBjb3VudGVycw0KPiBpbiB0aGUNCj4gK8KgwqAgb25kaXNrIGJ1ZmZlci4NCj4gKw0KPiAr Mi4gV2FsayBldmVyeSBpbm9kZSBpbiB0aGUgZmlsZXN5c3RlbS4NCj4gK8KgwqAgQWRkIGVhY2gg ZmlsZSdzIHJlc291cmNlIHVzYWdlIHRvIHRoZSBpbmNvcmUgZHF1b3QuDQo+ICsNCj4gKzMuIFdh bGsgZWFjaCBpbmNvcmUgZHF1b3QuDQo+ICvCoMKgIElmIHRoZSBpbmNvcmUgZHF1b3QgaXMgbm90 IGJlaW5nIGZsdXNoZWQsIGFkZCB0aGUgb25kaXNrIGJ1ZmZlcg0KPiBiYWNraW5nIHRoZQ0KPiAr wqDCoCBpbmNvcmUgZHF1b3QgdG8gYSBkZWxheWVkIHdyaXRlIChkZWx3cmkpIGxpc3QuDQo+ICsN Cj4gKzQuIFdyaXRlIHRoZSBidWZmZXIgbGlzdCB0byBkaXNrLg0KPiArDQo+ICtMaWtlIG1vc3Qg b25saW5lIGZzY2sgZnVuY3Rpb25zLCBvbmxpbmUgcXVvdGFjaGVjayBjYW4ndCB3cml0ZSB0bw0K PiByZWd1bGFyDQo+ICtmaWxlc3lzdGVtIG9iamVjdHMgdW50aWwgdGhlIG5ld2x5IGNvbGxlY3Rl ZCBtZXRhZGF0YSByZWZsZWN0IGFsbA0KPiBmaWxlc3lzdGVtDQo+ICtzdGF0ZS4NCj4gK1RoZXJl Zm9yZSwgb25saW5lIHF1b3RhY2hlY2sgcmVjb3JkcyBmaWxlIHJlc291cmNlIHVzYWdlIHRvIGEg c2hhZG93DQo+IGRxdW90DQo+ICtpbmRleCBpbXBsZW1lbnRlZCB3aXRoIGEgc3BhcnNlIGBgeGZh cnJheWBgLCBhbmQgb25seSB3cml0ZXMgdG8gdGhlDQo+IHJlYWwgZHF1b3RzDQo+ICtvbmNlIHRo ZSBzY2FuIGlzIGNvbXBsZXRlLg0KPiArSGFuZGxpbmcgdHJhbnNhY3Rpb25hbCB1cGRhdGVzIGlz IHRyaWNreSBiZWNhdXNlIHF1b3RhIHJlc291cmNlDQo+IHVzYWdlIHVwZGF0ZXMNCj4gK2FyZSBo YW5kbGVkIGluIHBoYXNlcyB0byBtaW5pbWl6ZSBjb250ZW50aW9uIG9uIGRxdW90czoNCj4gKw0K PiArMS4gVGhlIGlub2RlcyBpbnZvbHZlZCBhcmUgam9pbmVkIGFuZCBsb2NrZWQgdG8gYSB0cmFu c2FjdGlvbi4NCj4gKw0KPiArMi4gRm9yIGVhY2ggZHF1b3QgYXR0YWNoZWQgdG8gdGhlIGZpbGU6 DQo+ICsNCj4gK8KgwqAgYS4gVGhlIGRxdW90IGlzIGxvY2tlZC4NCj4gKw0KPiArwqDCoCBiLiBB IHF1b3RhIHJlc2VydmF0aW9uIGlzIGFkZGVkIHRvIHRoZSBkcXVvdCdzIHJlc291cmNlIHVzYWdl Lg0KPiArwqDCoMKgwqDCoCBUaGUgcmVzZXJ2YXRpb24gaXMgcmVjb3JkZWQgaW4gdGhlIHRyYW5z YWN0aW9uLg0KPiArDQo+ICvCoMKgIGMuIFRoZSBkcXVvdCBpcyB1bmxvY2tlZC4NCj4gKw0KPiAr My4gQ2hhbmdlcyBpbiBhY3R1YWwgcXVvdGEgdXNhZ2UgYXJlIHRyYWNrZWQgaW4gdGhlIHRyYW5z YWN0aW9uLg0KPiArDQo+ICs0LiBBdCB0cmFuc2FjdGlvbiBjb21taXQgdGltZSwgZWFjaCBkcXVv dCBpcyBleGFtaW5lZCBhZ2FpbjoNCj4gKw0KPiArwqDCoCBhLiBUaGUgZHF1b3QgaXMgbG9ja2Vk IGFnYWluLg0KPiArDQo+ICvCoMKgIGIuIFF1b3RhIHVzYWdlIGNoYW5nZXMgYXJlIGxvZ2dlZCBh bmQgdW51c2VkIHJlc2VydmF0aW9uIGlzIGdpdmVuDQo+IGJhY2sgdG8NCj4gK8KgwqDCoMKgwqAg dGhlIGRxdW90Lg0KPiArDQo+ICvCoMKgIGMuIFRoZSBkcXVvdCBpcyB1bmxvY2tlZC4NCj4gKw0K PiArRm9yIG9ubGluZSBxdW90YWNoZWNrLCBob29rcyBhcmUgcGxhY2VkIGluIHN0ZXBzIDIgYW5k IDQuDQo+ICtUaGUgc3RlcCAyIGhvb2sgY3JlYXRlcyBhIHNoYWRvdyB2ZXJzaW9uIG9mIHRoZSB0 cmFuc2FjdGlvbiBkcXVvdA0KPiBjb250ZXh0DQo+ICsoYGBkcXRyeGBgKSB0aGF0IG9wZXJhdGVz IGluIGEgc2ltaWxhciBtYW5uZXIgdG8gdGhlIHJlZ3VsYXIgY29kZS4NCj4gK1RoZSBzdGVwIDQg aG9vayBjb21taXRzIHRoZSBzaGFkb3cgYGBkcXRyeGBgIGNoYW5nZXMgdG8gdGhlIHNoYWRvdw0K PiBkcXVvdHMuDQo+ICtOb3RpY2UgdGhhdCBib3RoIGhvb2tzIGFyZSBjYWxsZWQgd2l0aCB0aGUg aW5vZGUgbG9ja2VkLCB3aGljaCBpcw0KPiBob3cgdGhlDQo+ICtsaXZlIHVwZGF0ZSBjb29yZGlu YXRlcyB3aXRoIHRoZSBpbm9kZSBzY2FubmVyLg0KPiArDQo+ICtUaGUgcXVvdGFjaGVjayBzY2Fu IGxvb2tzIGxpa2UgdGhpczoNCj4gKw0KPiArMS4gU2V0IHVwIGEgY29vcmRpbmF0ZWQgaW5vZGUg c2Nhbi4NCj4gKw0KPiArMi4gRm9yIGVhY2ggaW5vZGUgcmV0dXJuZWQgYnkgdGhlIGlub2RlIHNj YW4gaXRlcmF0b3I6DQo+ICsNCj4gK8KgwqAgYS4gR3JhYiBhbmQgbG9jayB0aGUgaW5vZGUuDQo+ ICsNCj4gK8KgwqAgYi4gRGV0ZXJtaW5lIHRoYXQgaW5vZGUncyByZXNvdXJjZSB1c2FnZSAoZGF0 YSBibG9ja3MsIGlub2RlDQo+IGNvdW50cywNCj4gK8KgwqDCoMKgwqAgcmVhbHRpbWUgYmxvY2tz KcKgDQpuaXQ6IG1vdmUgdGhpcyBsaXN0IHRvIHRoZSBmaXJzdCBhcHBlYXJhbmNlIG9mICJyZXNv dXJjZSB1c2FnZSIuICBTdGVwDQoyIG9mIHRoZSBmaXJzdCBsaXN0IEkgdGhpbmsNCg0KPiBhbmQg YWRkIHRoYXQgdG8gdGhlIHNoYWRvdyBkcXVvdHMgZm9yIHRoZSB1c2VyLCBncm91cCwNCj4gK8Kg wqDCoMKgwqAgYW5kIHByb2plY3QgaWRzIGFzc29jaWF0ZWQgd2l0aCB0aGUgaW5vZGUuDQo+ICsN Cj4gK8KgwqAgYy4gVW5sb2NrIGFuZCByZWxlYXNlIHRoZSBpbm9kZS4NCj4gKw0KPiArMy4gRm9y IGVhY2ggZHF1b3QgaW4gdGhlIHN5c3RlbToNCj4gKw0KPiArwqDCoCBhLiBHcmFiIGFuZCBsb2Nr IHRoZSBkcXVvdC4NCj4gKw0KPiArwqDCoCBiLiBDaGVjayB0aGUgZHF1b3QgYWdhaW5zdCB0aGUg c2hhZG93IGRxdW90cyBjcmVhdGVkIGJ5IHRoZSBzY2FuDQo+IGFuZCB1cGRhdGVkDQo+ICvCoMKg wqDCoMKgIGJ5IHRoZSBsaXZlIGhvb2tzLg0KPiArDQo+ICtMaXZlIHVwZGF0ZXMgYXJlIGtleSB0 byBiZWluZyBhYmxlIHRvIHdhbGsgZXZlcnkgcXVvdGEgcmVjb3JkDQo+IHdpdGhvdXQNCj4gK25l ZWRpbmcgdG8gaG9sZCBhbnkgbG9ja3MgZm9yIGEgbG9uZyBkdXJhdGlvbi4NCj4gK0lmIHJlcGFp cnMgYXJlIGRlc2lyZWQsIHRoZSByZWFsIGFuZCBzaGFkb3cgZHF1b3RzIGFyZSBsb2NrZWQgYW5k DQo+IHRoZWlyDQo+ICtyZXNvdXJjZSBjb3VudHMgYXJlIHNldCB0byB0aGUgdmFsdWVzIGluIHRo ZSBzaGFkb3cgZHF1b3QuDQo+ICsNCj4gK1RoZSBwcm9wb3NlZCBwYXRjaHNldCBpcyB0aGUNCj4g K2BvbmxpbmUgcXVvdGFjaGVjaw0KPiArPA0KPiBodHRwczovL2dpdC5rZXJuZWwub3JnL3B1Yi9z Y20vbGludXgva2VybmVsL2dpdC9kandvbmcveGZzLWxpbnV4LmdpdC8NCj4gbG9nLz9oPXJlcGFp ci1xdW90YT5gXw0KPiArc2VyaWVzLg0KPiArDQo+ICsuLiBfbmxpbmtzOg0KPiArDQo+ICtDYXNl IFN0dWR5OiBGaWxlIExpbmsgQ291bnQgQ2hlY2tpbmcNCj4gK15eXl5eXl5eXl5eXl5eXl5eXl5e Xl5eXl5eXl5eXl5eXl5eXg0KPiArDQo+ICtGaWxlIGxpbmsgY291bnQgY2hlY2tpbmcgYWxzbyB1 c2VzIGxpdmUgdXBkYXRlIGhvb2tzLg0KPiArVGhlIGNvb3JkaW5hdGVkIGlub2RlIHNjYW5uZXIg aXMgdXNlZCB0byB2aXNpdCBhbGwgZGlyZWN0b3JpZXMgb24NCj4gdGhlDQo+ICtmaWxlc3lzdGVt LCBhbmQgcGVyLWZpbGUgbGluayBjb3VudCByZWNvcmRzIGFyZSBzdG9yZWQgaW4gYSBzcGFyc2UN Cj4gYGB4ZmFycmF5YGANCj4gK2luZGV4ZWQgYnkgaW51bWJlci4NCj4gK0R1cmluZyB0aGUgc2Nh bm5pbmcgcGhhc2UsIGVhY2ggZW50cnkgaW4gYSBkaXJlY3RvcnkgZ2VuZXJhdGVzDQo+IG9ic2Vy dmF0aW9uDQo+ICtkYXRhIGFzIGZvbGxvd3M6DQo+ICsNCj4gKzEuIElmIHRoZSBlbnRyeSBpcyBh IGRvdGRvdCAoYGAnLi4nYGApIGVudHJ5IG9mIHRoZSByb290IGRpcmVjdG9yeSwNCj4gdGhlDQo+ ICvCoMKgIGRpcmVjdG9yeSdzIHBhcmVudCBsaW5rIGNvdW50IGlzIGJ1bXBlZCBiZWNhdXNlIHRo ZSByb290DQo+IGRpcmVjdG9yeSdzIGRvdGRvdA0KPiArwqDCoCBlbnRyeSBpcyBzZWxmIHJlZmVy ZW50aWFsLg0KPiArDQo+ICsyLiBJZiB0aGUgZW50cnkgaXMgYSBkb3Rkb3QgZW50cnkgb2YgYSBz dWJkaXJlY3RvcnksIHRoZSBwYXJlbnQncw0KPiBiYWNrcmVmDQo+ICvCoMKgIGNvdW50IGlzIGJ1 bXBlZC4NCj4gKw0KPiArMy4gSWYgdGhlIGVudHJ5IGlzIG5laXRoZXIgYSBkb3Qgbm9yIGEgZG90 ZG90IGVudHJ5LCB0aGUgdGFyZ2V0DQo+IGZpbGUncyBwYXJlbnQNCj4gK8KgwqAgY291bnQgaXMg YnVtcGVkLg0KPiArDQo+ICs0LiBJZiB0aGUgdGFyZ2V0IGlzIGEgc3ViZGlyZWN0b3J5LCB0aGUg cGFyZW50J3MgY2hpbGQgbGluayBjb3VudCBpcw0KPiBidW1wZWQuDQo+ICsNCj4gK0EgY3J1Y2lh bCBwb2ludCB0byB1bmRlcnN0YW5kIGFib3V0IGhvdyB0aGUgbGluayBjb3VudCBpbm9kZSBzY2Fu bmVyDQo+IGludGVyYWN0cw0KPiArd2l0aCB0aGUgbGl2ZSB1cGRhdGUgaG9va3MgaXMgdGhhdCB0 aGUgc2NhbiBjdXJzb3IgdHJhY2tzIHdoaWNoDQo+ICpwYXJlbnQqDQo+ICtkaXJlY3RvcmllcyBo YXZlIGJlZW4gc2Nhbm5lZC4NCj4gK0luIG90aGVyIHdvcmRzLCB0aGUgbGl2ZSB1cGRhdGVzIGln bm9yZSBhbnkgdXBkYXRlIGFib3V0IGBgQSDihpIgQmBgDQo+IHdoZW4gQSBoYXMNCj4gK25vdCBi ZWVuIHNjYW5uZWQsIGV2ZW4gaWYgQiBoYXMgYmVlbiBzY2FubmVkLg0KPiArRnVydGhlcm1vcmUs IGEgc3ViZGlyZWN0b3J5IEEgd2l0aCBhIGRvdGRvdCBlbnRyeSBwb2ludGluZyBiYWNrIHRvIEIN Cj4gaXMNCj4gK2FjY291bnRlZCBhcyBhIGJhY2tyZWYgY291bnRlciBpbiB0aGUgc2hhZG93IGRh dGEgZm9yIEEsIHNpbmNlIGNoaWxkDQo+IGRvdGRvdA0KPiArZW50cmllcyBhZmZlY3QgdGhlIHBh cmVudCdzIGxpbmsgY291bnQuDQo+ICtMaXZlIHVwZGF0ZSBob29rcyBhcmUgY2FyZWZ1bGx5IHBs YWNlZCBpbiBhbGwgcGFydHMgb2YgdGhlDQo+IGZpbGVzeXN0ZW0gdGhhdA0KPiArY3JlYXRlLCBj aGFuZ2UsIG9yIHJlbW92ZSBkaXJlY3RvcnkgZW50cmllcywgc2luY2UgdGhvc2Ugb3BlcmF0aW9u cw0KPiBpbnZvbHZlDQo+ICtidW1wbGluayBhbmQgZHJvcGxpbmsuDQo+ICsNCj4gK0ZvciBhbnkg ZmlsZSwgdGhlIGNvcnJlY3QgbGluayBjb3VudCBpcyB0aGUgbnVtYmVyIG9mIHBhcmVudHMgcGx1 cw0KPiB0aGUgbnVtYmVyDQo+ICtvZiBjaGlsZCBzdWJkaXJlY3Rvcmllcy4NCj4gK05vbi1kaXJl Y3RvcmllcyBuZXZlciBoYXZlIGNoaWxkcmVuIG9mIGFueSBraW5kLg0KPiArVGhlIGJhY2tyZWYg aW5mb3JtYXRpb24gaXMgdXNlZCB0byBkZXRlY3QgaW5jb25zaXN0ZW5jaWVzIGluIHRoZQ0KPiBu dW1iZXIgb2YNCj4gK2xpbmtzIHBvaW50aW5nIHRvIGNoaWxkIHN1YmRpcmVjdG9yaWVzIGFuZCB0 aGUgbnVtYmVyIG9mIGRvdGRvdA0KPiBlbnRyaWVzDQo+ICtwb2ludGluZyBiYWNrLg0KPiArDQo+ ICtBZnRlciB0aGUgc2NhbiBjb21wbGV0ZXMsIHRoZSBsaW5rIGNvdW50IG9mIGVhY2ggZmlsZSBj YW4gYmUgY2hlY2tlZA0KPiBieSBsb2NraW5nDQo+ICtib3RoIHRoZSBpbm9kZSBhbmQgdGhlIHNo YWRvdyBkYXRhLCBhbmQgY29tcGFyaW5nIHRoZSBsaW5rIGNvdW50cy4NCj4gK0Egc2Vjb25kIGNv b3JkaW5hdGVkIGlub2RlIHNjYW4gY3Vyc29yIGlzIHVzZWQgZm9yIGNvbXBhcmlzb25zLg0KPiAr TGl2ZSB1cGRhdGVzIGFyZSBrZXkgdG8gYmVpbmcgYWJsZSB0byB3YWxrIGV2ZXJ5IGlub2RlIHdp dGhvdXQNCj4gbmVlZGluZyB0byBob2xkDQo+ICthbnkgbG9ja3MgYmV0d2VlbiBpbm9kZXMuDQo+ ICtJZiByZXBhaXJzIGFyZSBkZXNpcmVkLCB0aGUgaW5vZGUncyBsaW5rIGNvdW50IGlzIHNldCB0 byB0aGUgdmFsdWUNCj4gaW4gdGhlDQo+ICtzaGFkb3cgaW5mb3JtYXRpb24uDQo+ICtJZiBubyBw YXJlbnRzIGFyZSBmb3VuZCwgdGhlIGZpbGUgbXVzdCBiZSA6cmVmOmByZXBhcmVudGVkDQo+IDxv cnBoYW5hZ2U+YCB0byB0aGUNCj4gK29ycGhhbmFnZSB0byBwcmV2ZW50IHRoZSBmaWxlIGZyb20g YmVpbmcgbG9zdCBmb3JldmVyLg0KPiArDQo+ICtUaGUgcHJvcG9zZWQgcGF0Y2hzZXQgaXMgdGhl DQo+ICtgZmlsZSBsaW5rIGNvdW50IHJlcGFpcg0KPiArPA0KPiBodHRwczovL2dpdC5rZXJuZWwu b3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9kandvbmcveGZzLWxpbnV4LmdpdC8NCj4gbG9n Lz9oPXNjcnViLW5saW5rcz5gXw0KPiArc2VyaWVzLg0KPiArDQo+ICsuLiBfcm1hcF9yZXBhaXI6 DQo+ICsNCj4gK0Nhc2UgU3R1ZHk6IFJlYnVpbGRpbmcgUmV2ZXJzZSBNYXBwaW5nIFJlY29yZHMN Cj4gK15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4NCj4gKw0K PiArTW9zdCByZXBhaXIgZnVuY3Rpb25zIGZvbGxvdyB0aGUgc2FtZSBwYXR0ZXJuOiBsb2NrIGZp bGVzeXN0ZW0NCj4gcmVzb3VyY2VzLA0KPiArd2FsayB0aGUgc3Vydml2aW5nIG9uZGlzayBtZXRh ZGF0YSBsb29raW5nIGZvciByZXBsYWNlbWVudCBtZXRhZGF0YQ0KPiByZWNvcmRzLA0KPiArYW5k IHVzZSBhbiA6cmVmOmBpbi1tZW1vcnkgYXJyYXkgPHhmYXJyYXk+YCB0byBzdG9yZSB0aGUgZ2F0 aGVyZWQNCj4gb2JzZXJ2YXRpb25zLg0KPiArVGhlIHByaW1hcnkgYWR2YW50YWdlIG9mIHRoaXMg YXBwcm9hY2ggaXMgdGhlIHNpbXBsaWNpdHkgYW5kDQo+IG1vZHVsYXJpdHkgb2YgdGhlDQo+ICty ZXBhaXIgY29kZSAtLSBjb2RlIGFuZCBkYXRhIGFyZSBlbnRpcmVseSBjb250YWluZWQgd2l0aGlu IHRoZSBzY3J1Yg0KPiBtb2R1bGUsDQo+ICtkbyBub3QgcmVxdWlyZSBob29rcyBpbiB0aGUgbWFp biBmaWxlc3lzdGVtLCBhbmQgYXJlIHVzdWFsbHkgdGhlDQo+IG1vc3QgZWZmaWNpZW50DQo+ICtp biBtZW1vcnkgdXNlLg0KPiArQSBzZWNvbmRhcnkgYWR2YW50YWdlIG9mIHRoaXMgcmVwYWlyIGFw cHJvYWNoIGlzIGF0b21pY2l0eSAtLSBvbmNlDQo+IHRoZSBrZXJuZWwNCj4gK2RlY2lkZXMgYSBz dHJ1Y3R1cmUgaXMgY29ycnVwdCwgbm8gb3RoZXIgdGhyZWFkcyBjYW4gYWNjZXNzIHRoZQ0KPiBt ZXRhZGF0YSB1bnRpbA0KPiArdGhlIGtlcm5lbCBmaW5pc2hlcyByZXBhaXJpbmcgYW5kIHJldmFs aWRhdGluZyB0aGUgbWV0YWRhdGEuDQo+ICsNCj4gK0ZvciByZXBhaXJzIGdvaW5nIG9uIHdpdGhp biBhIHNoYXJkIG9mIHRoZSBmaWxlc3lzdGVtLCB0aGVzZQ0KPiBhZHZhbnRhZ2VzDQo+ICtvdXR3 ZWlnaCB0aGUgZGVsYXlzIGluaGVyZW50IGluIGxvY2tpbmcgdGhlIHNoYXJkIHdoaWxlIHJlcGFp cmluZw0KPiBwYXJ0cyBvZiB0aGUNCj4gK3NoYXJkLg0KPiArVW5mb3J0dW5hdGVseSwgcmVwYWly cyB0byB0aGUgcmV2ZXJzZSBtYXBwaW5nIGJ0cmVlIGNhbm5vdCB1c2UgdGhlDQo+ICJzdGFuZGFy ZCINCj4gK2J0cmVlIHJlcGFpciBzdHJhdGVneSBiZWNhdXNlIGl0IG11c3Qgc2NhbiBldmVyeSBz cGFjZSBtYXBwaW5nIG9mDQo+IGV2ZXJ5IGZvcmsgb2YNCj4gK2V2ZXJ5IGZpbGUgaW4gdGhlIGZp bGVzeXN0ZW0sIGFuZCB0aGUgZmlsZXN5c3RlbSBjYW5ub3Qgc3RvcC4NCj4gK1RoZXJlZm9yZSwg cm1hcCByZXBhaXIgZm9yZWdvZXMgYXRvbWljaXR5IGJldHdlZW4gc2NydWIgYW5kIHJlcGFpci4N Cj4gK0l0IGNvbWJpbmVzIGEgOnJlZjpgY29vcmRpbmF0ZWQgaW5vZGUgc2Nhbm5lciA8aXNjYW4+ YCwgOnJlZjpgbGl2ZQ0KPiB1cGRhdGUgaG9va3MNCj4gKzxsaXZldXBkYXRlPmAsIGFuZCBhbiA6 cmVmOmBpbi1tZW1vcnkgcm1hcCBidHJlZSA8eGZidHJlZT5gIHRvDQo+IGNvbXBsZXRlIHRoZQ0K PiArc2NhbiBmb3IgcmV2ZXJzZSBtYXBwaW5nIHJlY29yZHMuDQo+ICsNCj4gKzEuIFNldCB1cCBh biB4ZmJ0cmVlIHRvIHN0YWdlIHJtYXAgcmVjb3Jkcy4NCj4gKw0KPiArMi4gV2hpbGUgaG9sZGlu ZyB0aGUgbG9ja3Mgb24gdGhlIEFHSSBhbmQgQUdGIGJ1ZmZlcnMgYWNxdWlyZWQNCj4gZHVyaW5n IHRoZQ0KPiArwqDCoCBzY3J1YiwgZ2VuZXJhdGUgcmV2ZXJzZSBtYXBwaW5ncyBmb3IgYWxsIEFH IG1ldGFkYXRhOiBpbm9kZXMsDQo+IGJ0cmVlcywgQ29XDQo+ICvCoMKgIHN0YWdpbmcgZXh0ZW50 cywgYW5kIHRoZSBpbnRlcm5hbCBsb2cuDQo+ICsNCj4gKzMuIFNldCB1cCBhbiBpbm9kZSBzY2Fu bmVyLg0KPiArDQo+ICs0LiBIb29rIGludG8gcm1hcCB1cGRhdGVzIGZvciB0aGUgQUcgYmVpbmcg cmVwYWlyZWQgc28gdGhhdCB0aGUgbGl2ZQ0KPiBzY2FuIGRhdGENCj4gK8KgwqAgY2FuIHJlY2Vp dmUgdXBkYXRlcyB0byB0aGUgcm1hcCBidHJlZSBmcm9tIHRoZSByZXN0IG9mIHRoZQ0KPiBmaWxl c3lzdGVtIGR1cmluZw0KPiArwqDCoCB0aGUgZmlsZSBzY2FuLg0KPiArDQo+ICs1LiBGb3IgZWFj aCBzcGFjZSBtYXBwaW5nIGZvdW5kIGluIGVpdGhlciBmb3JrIG9mIGVhY2ggZmlsZSBzY2FubmVk LA0KPiArwqDCoCBkZWNpZGUgaWYgdGhlIG1hcHBpbmcgbWF0Y2hlcyB0aGUgQUcgb2YgaW50ZXJl c3QuDQo+ICvCoMKgIElmIHNvOg0KPiArDQo+ICvCoMKgIGEuIENyZWF0ZSBhIGJ0cmVlIGN1cnNv ciBmb3IgdGhlIGluLW1lbW9yeSBidHJlZS4NCj4gKw0KPiArwqDCoCBiLiBVc2UgdGhlIHJtYXAg Y29kZSB0byBhZGQgdGhlIHJlY29yZCB0byB0aGUgaW4tbWVtb3J5IGJ0cmVlLg0KPiArDQo+ICvC oMKgIGMuIFVzZSB0aGUgOnJlZjpgc3BlY2lhbCBjb21taXQgZnVuY3Rpb24gPHhmYnRyZWVfY29t bWl0PmAgdG8NCj4gd3JpdGUgdGhlDQo+ICvCoMKgwqDCoMKgIHhmYnRyZWUgY2hhbmdlcyB0byB0 aGUgeGZpbGUuDQo+ICsNCj4gKzYuIEZvciBlYWNoIGxpdmUgdXBkYXRlIHJlY2VpdmVkIHZpYSB0 aGUgaG9vaywgZGVjaWRlIGlmIHRoZSBvd25lcg0KPiBoYXMgYWxyZWFkeQ0KPiArwqDCoCBiZWVu IHNjYW5uZWQuDQo+ICvCoMKgIElmIHNvLCBhcHBseSB0aGUgbGl2ZSB1cGRhdGUgaW50byB0aGUg c2NhbiBkYXRhOg0KPiArDQo+ICvCoMKgIGEuIENyZWF0ZSBhIGJ0cmVlIGN1cnNvciBmb3IgdGhl IGluLW1lbW9yeSBidHJlZS4NCj4gKw0KPiArwqDCoCBiLiBSZXBsYXkgdGhlIG9wZXJhdGlvbiBp bnRvIHRoZSBpbi1tZW1vcnkgYnRyZWUuDQo+ICsNCj4gK8KgwqAgYy4gVXNlIHRoZSA6cmVmOmBz cGVjaWFsIGNvbW1pdCBmdW5jdGlvbiA8eGZidHJlZV9jb21taXQ+YCB0bw0KPiB3cml0ZSB0aGUN Cj4gK8KgwqDCoMKgwqAgeGZidHJlZSBjaGFuZ2VzIHRvIHRoZSB4ZmlsZS4NCj4gK8KgwqDCoMKg wqAgVGhpcyBpcyBwZXJmb3JtZWQgd2l0aCBhbiBlbXB0eSB0cmFuc2FjdGlvbiB0byBhdm9pZCBj aGFuZ2luZw0KPiB0aGUNCj4gK8KgwqDCoMKgwqAgY2FsbGVyJ3Mgc3RhdGUuDQo+ICsNCj4gKzcu IFdoZW4gdGhlIGlub2RlIHNjYW4gZmluaXNoZXMsIGNyZWF0ZSBhIG5ldyBzY3J1YiB0cmFuc2Fj dGlvbiBhbmQNCj4gcmVsb2NrIHRoZQ0KPiArwqDCoCB0d28gQUcgaGVhZGVycy4NCj4gKw0KPiAr OC4gQ29tcHV0ZSB0aGUgbmV3IGJ0cmVlIGdlb21ldHJ5IHVzaW5nIHRoZSBudW1iZXIgb2Ygcm1h cCByZWNvcmRzDQo+IGluIHRoZQ0KPiArwqDCoCBzaGFkb3cgYnRyZWUsIGxpa2UgYWxsIG90aGVy IGJ0cmVlIHJlYnVpbGRpbmcgZnVuY3Rpb25zLg0KPiArDQo+ICs5LiBBbGxvY2F0ZSB0aGUgbnVt YmVyIG9mIGJsb2NrcyBjb21wdXRlZCBpbiB0aGUgcHJldmlvdXMgc3RlcC4NCj4gKw0KPiArMTAu IFBlcmZvcm0gdGhlIHVzdWFsIGJ0cmVlIGJ1bGsgbG9hZGluZyBhbmQgY29tbWl0IHRvIGluc3Rh bGwgdGhlDQo+IG5ldyBybWFwDQo+ICvCoMKgwqAgYnRyZWUuDQo+ICsNCj4gKzExLiBSZWFwIHRo ZSBvbGQgcm1hcCBidHJlZSBibG9ja3MgYXMgZGlzY3Vzc2VkIGluIHRoZSBjYXNlIHN0dWR5DQo+ IGFib3V0IGhvdw0KPiArwqDCoMKgIHRvIDpyZWY6YHJlYXAgYWZ0ZXIgcm1hcCBidHJlZSByZXBh aXIgPHJtYXBfcmVhcD5gLg0KPiArDQo+ICsxMi4gRnJlZSB0aGUgeGZidHJlZSBub3cgdGhhdCBp dCBub3QgbmVlZGVkLg0KPiArDQo+ICtUaGUgcHJvcG9zZWQgcGF0Y2hzZXQgaXMgdGhlDQo+ICtg cm1hcCByZXBhaXINCj4gKzwNCj4gaHR0cHM6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4 L2tlcm5lbC9naXQvZGp3b25nL3hmcy1saW51eC5naXQvDQo+IGxvZy8/aD1yZXBhaXItcm1hcC1i dHJlZT5gXw0KPiArc2VyaWVzLg0KPiANCg0KTW9zdGx5IGxvb2tzIGdvb2Qgbml0cyBhc2lkZSwg SSBkbyBzb3J0IG9mIHdvbmRlciBpZiB0aGlzIHBhdGNoIHdvdWxkDQpkbyBiZXR0ZXIgdG8gYXBw ZWFyIGJlZm9yZSBwYXRjaCA2IChvciBtb3ZlIDYgZG93biksIHNpbmNlIGl0IGdldHMgaW50bw0K bW9yZSBjaGFsbGVuZ2VzIGNvbmNlcm5pbmcgbG9ja3MgYW5kIGhvb2tzLCB3aGVyZSBhcyBoZXJl IHdlIGFyZSBtb3N0bHkNCmRpc2N1c3Npbmcgd2hhdCB0aGV5IGFyZSBhbmQgaG93IHRoZXkgd29y ay4gIFNvIGl0IG1pZ2h0IGJ1aWxkIGJldHRlcg0KdG8gbW92ZSB0aGlzIHBhdGNoIHVwIGEgbGl0 dGxlLg0KDQpBbGxpc29uDQoNCg==