From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by sourceware.org (Postfix) with ESMTPS id 17F9E385DC35 for ; Wed, 11 Aug 2021 16:57:38 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 17F9E385DC35 Received: from pps.filterd (m0246629.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.16.0.43/8.16.0.43) with SMTP id 17BGueFv012456; Wed, 11 Aug 2021 16:57:33 GMT Received: from userp3020.oracle.com (userp3020.oracle.com [156.151.31.79]) by mx0b-00069f02.pphosted.com with ESMTP id 3abt44b82u-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 11 Aug 2021 16:57:32 +0000 Received: from pps.filterd (userp3020.oracle.com [127.0.0.1]) by userp3020.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 17BGuGQ6058102; Wed, 11 Aug 2021 16:57:31 GMT Received: from nam10-dm6-obe.outbound.protection.outlook.com (mail-dm6nam10lp2107.outbound.protection.outlook.com [104.47.58.107]) by userp3020.oracle.com with ESMTP id 3aa3xvf5gd-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 11 Aug 2021 16:57:30 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Q1u7WXOQxf8yiM7m+gmm6resAu67wesjmQQPD1OKG62fbTgOt3zAatL7zE7TZirsC2x2rPRDjECRiIedR0wGnyCQp3eL+cw1nnkNEmvkGopdLjJ4Wxz1PK2y0CWFskGY+pEYRncVqxkc+TtKeFA2aHhinbzUmhHncw1oxbpERaoLivFJuacKsa9Z7u49+xPRkv9dN1WXW18ZbPrv+FvBCPAhDaVZcQFhPYHVJEBHkmgV8eQePUYybEsH6652akmu7a+Mi6kZRej3ply+CyioVhtBdS0nu+9peCwr1X4E33ocKaXKE3JcIe3S6FsRrzQpZREikHKI94kHQi8iTb/+JA== 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=sFmipyv50pMZyRXW1Dgh5rzcVF8gZ64n1oR+bCKOlu8=; b=KBcJIvaXllNbR025oFTYqMbMX+3IwR3uXqBES8Fk/2y3Er8Dkb1ghDka3sb3rmiHOs03nEWr3tABXE6bjYeAC8TUG3e26SQprTtYolk3F/fVjoIWsscFTT5+DWaWIKbelT4h9OQyKbhpz2ES+WdTISGLRgARfZVRDMs3I3JqUHg5LABNyej7hUH5FG49FBIA1TK8uNLHsqgV9pSCKEuEtTrC2Z+iKmUyPg0oVJv66mMbZQRkBrBCRcvOteB3UuE8XW5E1+jquTA/hYzqR5TJkBuRmmB3bdM7Mdgnedo6/pG579AoKLz7vlqhum8Z3Ynxj3fSmjm0FDRJn9IgX5P+aQ== 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 Received: from CH2PR10MB4344.namprd10.prod.outlook.com (2603:10b6:610:af::19) by CH0PR10MB5068.namprd10.prod.outlook.com (2603:10b6:610:c7::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4394.19; Wed, 11 Aug 2021 16:57:29 +0000 Received: from CH2PR10MB4344.namprd10.prod.outlook.com ([fe80::f463:6b71:2491:d547]) by CH2PR10MB4344.namprd10.prod.outlook.com ([fe80::f463:6b71:2491:d547%9]) with mapi id 15.20.4415.014; Wed, 11 Aug 2021 16:57:29 +0000 From: Qing Zhao To: Richard Biener CC: Richard Sandiford , Jakub Jelinek , Nick Alcock via Gcc-patches , Kees Cook Subject: Re: [patch][version 6] add -ftrivial-auto-var-init and variable attribute "uninitialized" to gcc Thread-Topic: [patch][version 6] add -ftrivial-auto-var-init and variable attribute "uninitialized" to gcc Thread-Index: AQHXgpcfj6SO0Rka1UmU0GU91mFncqtrSzIAgAApjACAAPr8gIAAZYMAgAAKVgCAAAy9gIAABZoAgABR/YCAACR6AIAAkCQAgABtVACAAAEPAIAABLkAgAABQACAABmfAIAABkYAgAAIEICAAAlUAIAAAJWA Date: Wed, 11 Aug 2021 16:57:28 +0000 Message-ID: <15BFEFFB-0435-4D82-8E55-AE73D6EBB61F@oracle.com> References: <52E29277-1403-4755-901A-528116C43FB8@oracle.com> <58ADBC0C-9D44-485B-BB5A-B072664B9C4F@oracle.com> <6FD42B95-F73D-4B75-B83A-BAC4925B1714@oracle.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: Apple Mail (2.3608.120.23.2.7) x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 4b186e4f-f749-4332-f50e-08d95ce91a73 x-ms-traffictypediagnostic: CH0PR10MB5068: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: qP/ofau23BxW2ZZiGgBm90+b9zEjIr65sAGzX2t3VlwZHjUuxpTr0Zew4BToaLWwzS+n/kDWTVauNF+QJfNTkiasyIoPJFCKp52Tn5k0Z7JWrrPq1J/cS/C6SJVDsGB2EDfqmmMrePMgD0olAjFTUSo4kh/LDZNpz7opWBD3aEvKIS+SimkAQeaKuE+PaK3h8ejAE3+EPjmzrs4VRh+yVSV1UdqPkSs3cXXzFMYQUICO3wby9R/5xTcGsla2vD1pev8l5QzdFjwZJeb7Gzu2CTDV5pAXXouiph/gEeEzFhnMsKI/WGcN7dDZdNFzJ8s3PT3lzm24E/7G1UG1AB1g0O5S6r+f8speoaVYN0BLBi4YNtbFd+Xve8UeesEPQdpruF5uKJmPAlilidMjG4XKusraD9hRl57XLxxocLyAzTotg9HI77nUsRHUGITG5pvqCeH5HnsF3k3QxqGJU6e3bbA7RJefE4Ezl7JbydVBf0GPEj1zYz1D3UpIXCdrH17iVTGQz/sYrg8uNuZYb+PWwMvg/EhqtbSnDSChaQ56xR4Q0c28R7CP7xwMZRcfVrpiHjErhaWCVn/69h5I9iYo45lY85q0Z3z68TO7W8fA9IEUWjuXLPfcLoNstCkL2kiOoeiB9mfRcn7xyCFSPZChJ/3rEqY6q/VFIfeZohnlWbLoD+07A7o8GksuxdAUL909t+PVxvaElKvKLwT5939Sth+UZy0OOtiWufdRsEbN7d9QAwGvC8wn5vGQD/0WTPdFMSqdKPVpag7VKAGCfb5VMg== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:CH2PR10MB4344.namprd10.prod.outlook.com; PTR:; CAT:NONE; SFS:(346002)(396003)(39860400002)(366004)(376002)(136003)(5660300002)(44832011)(66556008)(66446008)(76116006)(91956017)(64756008)(66476007)(26005)(122000001)(86362001)(66946007)(83380400001)(6506007)(66574015)(6916009)(53546011)(6486002)(478600001)(2616005)(38100700002)(8936002)(54906003)(8676002)(6512007)(316002)(30864003)(4326008)(71200400001)(33656002)(186003)(38070700005)(2906002)(36756003)(45980500001)(266184004); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?dytjZWtScUFBT3Vocm9LYWxRVHJJbXh2RFpCdzVBMGN2ajlHOFMxcmEvRmFP?= =?utf-8?B?aXd3RGZjUVQzaU1BakYrTDc0dk9RTUxXanlVc0RuWHlhRjJaS0JuOU5mY3hs?= =?utf-8?B?bGtjTytjMThFWHRtQkdGRi9TMjRFdVY3aUFZWi9HQ2RTY2hmcHpwUHA2ZVpn?= =?utf-8?B?djBndElhdjZEbU1nWnJqaE1YZnhMNjNxcUxIL2VxbHowZlRsR1dZZ1hVVXRY?= =?utf-8?B?UUM4dnJjYW5HZ2FzL0ZBeXVYd0wxeURxRG8zbGtoWEtsT3hhMURnNmhjMDhF?= =?utf-8?B?ZW03aUQ2LzZlM0NJU2FoVkk5c0U5Wm9wUFoyZVg5emdmN3hJTEp1L3Vaa2da?= =?utf-8?B?T2cycllkYXFvblViUG5wUHgyWWRTenpZNm1RYWRndEcwck1KWm80UW0yU3hv?= =?utf-8?B?cHI1TEw4T0R4S0hYWitUSllxamY2V2p1dlJ4RVVpQ3QyNmtiTk5qSWovaURM?= =?utf-8?B?V3NRWTYzTGVwdHdqTkZCemJkL0FtSXBJNWVPeU96M2NJVGhTQU8wZ0NVN2FU?= =?utf-8?B?a0h3WVJtMW9lTXpSSjVTakFjbWo3UTE0V2x2VUZQQXI0Z3dNNlBCMGY4TFVJ?= =?utf-8?B?ank1UnJ4ekZtdkl3SlhpZ3RCVEw2TmNsR3RKQWRhZkkzK3ZmVkR4OGt1WDlV?= =?utf-8?B?eEw2NVo2ZUQ4NnNkaWdGM1lTYnVGK1pRdGF1a2ZobmVSbW5PTzhWeTg0empK?= =?utf-8?B?bEZZeGxwdCtLcDg3dm9PSlUxWTY5QlJmM01YeE9yalROVU11SzE1bk1hUGt6?= =?utf-8?B?T1liNCtXcFRLNzlrYmtlZjFYeVpqcFF3Nm4rTzh5bS84YTcySFVUa2QvbVZH?= =?utf-8?B?eXF4ZzNZOTJkMXl0WUF0MGZJSlRDd2VHOUVhOWZodGF4alBmOUU3ZlIwcVdz?= =?utf-8?B?V2FqR1RyWTJBWDJua20ycWs3dXQwekNtSThTTW5JaUdLMDZOOWtRRDNFUVlG?= =?utf-8?B?cGZBUEc5QjVRejlZL2lFSEcyT1ZpdzcraThvUVh1Lzg5TmZjWTVYSGpoVlpV?= =?utf-8?B?R1RmdTcwNy90cTgrUnFKVUpSeHdsM1JMaEVrYW4xbEp0S0tDOVpKa0lVOHNt?= =?utf-8?B?Z0dGQWgxcUNYUnhraEE2V3BkaG5Sa2JIYzJhMTNMM0NjREc3Q2NnYTFwUG9s?= =?utf-8?B?OEd1b2x6TldqTzJ6Y0c0aXlKdzN0dDNTQi9yWmNvckRpZFhtZ2FyU2FCMEFJ?= =?utf-8?B?dFJndjNwSDlkZk15WjhKaGZEY2hiQWlFNmpERnlJc2ZlMjdBWE1pUVF3cDFG?= =?utf-8?B?eEgzZ3FuUWdiQno1bklkTzgyY0xBaGc1eHZLUGZvYXpjVXc4eXZ3cWxFbGhT?= =?utf-8?B?aU9tUHhNOXhuZTJ3T0dkaG1FRlpLbTJTelBoamt2WDA2MjhxQ1BSL3N4Nzl5?= =?utf-8?B?czhYbW9SbG5nOGQ3TXNPVnRJWjlVUi9HM1o1d093Zk1qRHppK2RTNzI0ckZ5?= =?utf-8?B?bGFQNHJNZjFQS0pScXVqSHRGYVlvQnZKM0NnVjQ5N3BSd1YyWTdnVUpibldy?= =?utf-8?B?QmdNK05CQjZacG81TU5zWklwbStIVXNFYmZwRkRoUUlXTDYxeEFBNkwxVDRK?= =?utf-8?B?TUY3MEp3c2lveFZ1MFQ1WGY2eGk4cWxLSnRTSnNuZndkV2krYytRRTNLc3kv?= =?utf-8?B?Z2VMNnBTREhEa1NFSDZMakZ0NzlSZS8wOUVReFdpUURXSXNUY0YwemNrZzdX?= =?utf-8?B?MVdGWXJhZU1vakRrRzNIajdEQWVLQmpUSnZuMVVDWkRNNjQramNGTU5MSzF5?= =?utf-8?Q?SImCtpGHMKIMaBcdZsDvDG4dr9ssH9QwhtcBHFi?= x-ms-exchange-transport-forked: True Content-Type: text/plain; charset="utf-8" Content-ID: <95337D8543E6E04594CC25E17E4819A1@namprd10.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CH2PR10MB4344.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4b186e4f-f749-4332-f50e-08d95ce91a73 X-MS-Exchange-CrossTenant-originalarrivaltime: 11 Aug 2021 16:57:28.7979 (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: 3BimDUTHh/zofxxJfkYcfjEiGR3S+HIaKmVyZqA5uXp1Asbc6zdLuJYEAtItE+M23uu6zTx8TPznSKm3GBbBow== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH0PR10MB5068 X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=10073 signatures=668682 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=999 mlxscore=0 suspectscore=0 malwarescore=0 phishscore=0 adultscore=0 spamscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2107140000 definitions=main-2108110114 X-Proofpoint-ORIG-GUID: P9ScnIlR6OgXgxCQeneixvz6M0dOTtAC X-Proofpoint-GUID: P9ScnIlR6OgXgxCQeneixvz6M0dOTtAC X-Spam-Status: No, score=-10.8 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_BL, RCVD_IN_MSPIKE_L3, SPF_HELO_NONE, SPF_NONE, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 11 Aug 2021 16:57:49 -0000 DQoNCj4gT24gQXVnIDExLCAyMDIxLCBhdCAxMTo1NSBBTSwgUmljaGFyZCBCaWVuZXIgPHJndWVu dGhlckBzdXNlLmRlPiB3cm90ZToNCj4gDQo+IE9uIEF1Z3VzdCAxMSwgMjAyMSA2OjIyOjAwIFBN IEdNVCswMjowMCwgUWluZyBaaGFvIDxxaW5nLnpoYW9Ab3JhY2xlLmNvbT4gd3JvdGU6DQo+PiAN Cj4+IA0KPj4+IE9uIEF1ZyAxMSwgMjAyMSwgYXQgMTA6NTMgQU0sIFJpY2hhcmQgQmllbmVyIDxy Z3VlbnRoZXJAc3VzZS5kZT4gd3JvdGU6DQo+Pj4gDQo+Pj4gT24gQXVndXN0IDExLCAyMDIxIDU6 MzA6NDAgUE0gR01UKzAyOjAwLCBRaW5nIFpoYW8gPHFpbmcuemhhb0BvcmFjbGUuY29tPiB3cm90 ZToNCj4+Pj4gSSBtb2RpZmllZCB0aGUgcm91dGluZSDigJxnaW1wbGVfYWRkX2luaXRfZm9yX2F1 dG9fdmFy4oCdIGFzIHRoZSBmb2xsb3dpbmc6DQo+Pj4+ID09PT0NCj4+Pj4gLyogR2VuZXJhdGUg aW5pdGlhbGl6YXRpb24gdG8gYXV0b21hdGljIHZhcmlhYmxlIERFQ0wgYmFzZWQgb24gSU5JVF9U WVBFLg0KPj4+PiBCdWlsZCBhIGNhbGwgdG8gaW50ZXJuYWwgY29uc3QgZnVuY3Rpb24gREVGRVJS RURfSU5JVDoNCj4+Pj4gMXN0IGFyZ3VtZW50OiBTSVpFIG9mIHRoZSBERUNMOw0KPj4+PiAybmQg YXJndW1lbnQ6IElOSVRfVFlQRTsNCj4+Pj4gM3JkIGFyZ3VtZW50OiBJU19WTEEsIDAgTk8sIDEg WUVTOw0KPj4+PiANCj4+Pj4gYXMgREVGRVJSRURfSU5JVCAoU0laRSBvZiB0aGUgREVDTCwgSU5J VF9UWVBFLCBJU19WTEEpLiAgKi8NCj4+Pj4gc3RhdGljIHZvaWQNCj4+Pj4gZ2ltcGxlX2FkZF9p bml0X2Zvcl9hdXRvX3ZhciAodHJlZSBkZWNsLA0KPj4+PiAgICAgICAgICAgICAgICAgICAgICAg ICAgICBlbnVtIGF1dG9faW5pdF90eXBlIGluaXRfdHlwZSwNCj4+Pj4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgYm9vbCBpc192bGEsDQo+Pj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAg IGdpbXBsZV9zZXEgKnNlcV9wKQ0KPj4+PiB7DQo+Pj4+IGdjY19hc3NlcnQgKFZBUl9QIChkZWNs KSAmJiAhREVDTF9FWFRFUk5BTCAoZGVjbCkgJiYgIVRSRUVfU1RBVElDIChkZWNsKSk7DQo+Pj4+ IGdjY19hc3NlcnQgKGluaXRfdHlwZSA+IEFVVE9fSU5JVF9VTklOSVRJQUxJWkVEKTsNCj4+Pj4g dHJlZSBkZWNsX3NpemUgPSBUWVBFX1NJWkVfVU5JVCAoVFJFRV9UWVBFIChkZWNsKSk7DQo+Pj4+ IA0KPj4+PiB0cmVlIGluaXRfdHlwZV9ub2RlDQo+Pj4+ICA9IGJ1aWxkX2ludF9jc3QgKGludGVn ZXJfdHlwZV9ub2RlLCAoaW50KSBpbml0X3R5cGUpOw0KPj4+PiB0cmVlIGlzX3ZsYV9ub2RlDQo+ Pj4+ICA9IGJ1aWxkX2ludF9jc3QgKGludGVnZXJfdHlwZV9ub2RlLCAoaW50KSBpc192bGEpOw0K Pj4+PiANCj4+Pj4gdHJlZSBjYWxsID0gYnVpbGRfY2FsbF9leHByX2ludGVybmFsX2xvYyAoVU5L Tk9XTl9MT0NBVElPTiwgSUZOX0RFRkVSUkVEX0lOSVQsDQo+Pj4+ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgVFJFRV9UWVBFIChkZWNsKSwgMywNCj4+Pj4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNsX3NpemUsIGluaXRfdHlwZV9u b2RlLA0KPj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzX3Zs YV9ub2RlKTsNCj4+Pj4gDQo+Pj4+IC8qIElmIHRoaXMgREVDTCBpcyBhIFZMQSwgYSB0ZW1wb3Jh cnkgYWRkcmVzcyB2YXJpYWJsZSBmb3IgaXQgaGFzIGJlZW4NCj4+Pj4gICBjcmVhdGVkLCB0aGUg cmVwbGFjZW1lbnQgZm9yIERFQ0wgaXMgcmVjb3JkZWQgaW4gREVDTF9WQUxVRV9FWFBSIChkZWNs KSwNCj4+Pj4gICB3ZSBzaG91bGQgdXNlIGl0IGFzIHRoZSBMSFMgb2YgdGhlIGNhbGwuICAqLw0K Pj4+PiANCj4+Pj4gdHJlZSBsaHNfY2FsbA0KPj4+PiAgPSBpc192bGEgPyBERUNMX1ZBTFVFX0VY UFIgKGRlY2wpIDogZGVjbDsNCj4+Pj4gZ2ltcGxpZnlfYXNzaWduIChsaHNfY2FsbCwgY2FsbCwg c2VxX3ApOw0KPj4+PiB9DQo+Pj4+IA0KPj4+PiBXaXRoIHRoaXMgY2hhbmdlLCB0aGUgY3VycmVu dCBpc3N1ZSBpcyByZXNvbHZlZCwgdGhlIGdpbXBsZSBkdW1wIG5vdyBpczoNCj4+Pj4gDQo+Pj4+ ICgqYXJyLjEpID0gLkRFRkVSUkVEX0lOSVQgKEQuMTk1MiwgMiwgMSk7DQo+Pj4+IA0KPj4+PiBI b3dldmVyLCB0aGVyZSBpcyBhbm90aGVyIG5ldyBpc3N1ZToNCj4+Pj4gDQo+Pj4+IEZvciB0aGUg Zm9sbG93aW5nIHRlc3RpbmcgY2FzZToNCj4+Pj4gDQo+Pj4+ID09PT09PQ0KPj4+PiBbb3BjQHFp bnpoYW8tb2w4dTMteDg2IGdjY10kIGNhdCB0LmMNCj4+Pj4gaW50IGJhcjsNCj4+Pj4gDQo+Pj4+ IGV4dGVybiB2b2lkIGRlY29kZV9yZWxvYyhpbnQgKik7DQo+Pj4+IA0KPj4+PiB2b2lkIHRlc3Rm dW5jKCkNCj4+Pj4gew0KPj4+PiBpbnQgYWx0X3JlbG9jOw0KPj4+PiANCj4+Pj4gZGVjb2RlX3Jl bG9jKCZhbHRfcmVsb2MpOw0KPj4+PiANCj4+Pj4gaWYgKGFsdF9yZWxvYykgLyogeyBkZy13YXJu aW5nICJtYXkgYmUgdXNlZCB1bmluaXRpYWxpemVkIiB9ICovDQo+Pj4+ICBiYXIgPSA0MjsgDQo+ Pj4+IH0NCj4+Pj4gPT09PT0NCj4+Pj4gDQo+Pj4+IEluIHRoZSBhYm92ZSwgdGhlIGF1dG8gdmFy IOKAnGFsdF9yZWxvY+KAnSBpcyBhZGRyZXNzIHRha2VuLCB0aGVuIHRoZSBnaW1wbGUgZHVtcCBm b3IgaXQgd2hlbiBjb21waWxlZCB3aXRoIC1mdHJpdmlhbC1hdXRvLXZhci1pbml0PXplcm8gaXM6 DQo+Pj4+IA0KPj4+PiB2b2lkIHRlc3RmdW5jICgpDQo+Pj4+IHsNCj4+Pj4gaW50IGFsdF9yZWxv YzsNCj4+Pj4gDQo+Pj4+IHRyeQ0KPj4+PiAgew0KPj4+PiAgICBfMSA9IC5ERUZFUlJFRF9JTklU ICg0LCAyLCAwKTsNCj4+Pj4gICAgYWx0X3JlbG9jID0gXzE7DQo+Pj4+ICAgIGRlY29kZV9yZWxv YyAoJmFsdF9yZWxvYyk7DQo+Pj4+ICAgIGFsdF9yZWxvYy4wXzIgPSBhbHRfcmVsb2M7DQo+Pj4+ ICAgIGlmIChhbHRfcmVsb2MuMF8yICE9IDApIGdvdG8gPEQuMTk0OT47IGVsc2UgZ290byA8RC4x OTUwPjsNCj4+Pj4gICAgPEQuMTk0OT46DQo+Pj4+ICAgIGJhciA9IDQyOw0KPj4+PiAgICA8RC4x OTUwPjoNCj4+Pj4gIH0NCj4+Pj4gZmluYWxseQ0KPj4+PiAgew0KPj4+PiAgICBhbHRfcmVsb2Mg PSB7Q0xPQkJFUn07DQo+Pj4+ICB9DQo+Pj4+IH0NCj4+Pj4gDQo+Pj4+IEkuZSwgaW5zdGVhZCBv ZiB0aGUgZXhwZWN0ZWQgSVI6DQo+Pj4+IA0KPj4+PiBhbHRfcmVsb2MgPSAuREVGRVJSRURfSU5J VCAoNCwgMiwgMCk7DQo+Pj4+IA0KPj4+PiBXZSBnb3QgdGhlIGZvbGxvd2luZzoNCj4+Pj4gDQo+ Pj4+IF8xID0gLkRFRkVSUkVEX0lOSVQgKDQsIDIsIDApOw0KPj4+PiAgICBhbHRfcmVsb2MgPSBf MTsNCj4+Pj4gDQo+Pj4+IEkgZ3Vlc3MgdGhlIHRlbXAg4oCcXzHigJ0gaXMgY3JlYXRlZCBiZWNh dXNlIOKAnGFsdF9yZWxvY+KAnSBpcyBhZGRyZXNzIHRha2VuLiANCj4+PiANCj4+PiBZZXMgYW5k IG5vLiBUaGUgcmVhc29uIGlzIHRoYXQgYWx0X3JlbG9jIGlzIG1lbW9yeSAoYmVjYXVzZSBpdCBp cyBhZGRyZXNzIHRha2VuKSBhbmQgdGhhdCBHSU1QTEUgc2F5cyB0aGF0IHJlZ2lzdGVyIHR5cGVk IHN0b3JlcyBuZWVkIHRvIHVzZSBhIGlzX2dpbXBsZV92YWwgUkhTIHdoaWNoIHRoZSBjYWxsIGlz IG5vdC4NCj4+IA0KPj4gT2theS4NCj4+PiANCj4+Pj4gTXkgcXVlc3Rpb25zOg0KPj4+PiANCj4+ Pj4gU2hhbGwgd2UgYWNjZXB0IHN1Y2ggSVIgZm9yIC5ERUZFUlJFRF9JTklUIHB1cnBvc2Ugd2hl biB0aGUgYXV0byB2YXIgaXMgYWRkcmVzcyB0YWtlbj8gDQo+Pj4gDQo+Pj4gSSB0aGluayBzby4g Tm90ZSBpdCBkb2Vzbid0IG5lY2Vzc2FyaWx5IG5lZWQgYWRkcmVzcyB0YWtpbmcgYnV0IGFueSBv dGhlciByZWFzb24gdGhhdCBwcmV2ZW50cyBTU0EgcmV3cml0aW5nIHRoZSB2YXJpYWJsZSBzdWZm aWNlcy4gDQo+PiANCj4+IFlvdSBtZWFuLCBpbiBhZGRpdGlvbiB0byDigJxhZGRyZXNzIHRha2Vu 4oCdLCB0aGVyZSBhcmUgb3RoZXIgc2l0dWF0aW9ucyB0aGF0IHdpbGwgaW50cm9kdWNlIHN1Y2gg SVI6DQo+PiANCj4+IHRlbXAgPSAuREVGRVJSRURfSU5JVCgpOw0KPj4gYXV0b192YXIgPSB0ZW1w Ow0KPj4gDQo+PiBTbywgc3VjaCBJUiBpcyB1bmF2b2lkYWJsZSBhbmQgd2UgaGF2ZSB0byBoYW5k bGUgaXQ/DQo+IA0KPiBZZXMuIA0KPiANCj4+IElmIHdlIGhhdmUgdG8gaGFuZGxlIGl0LCAgd2hh dOKAmSB0aGUgYmVzdCB3YXkgdG8gZG8gaXQ/DQo+PiANCj4+IFRoZSBzb2x1dGlvbiBpbiBteSBt aW5kIGlzOg0KPj4gMS4gRHVyaW5nIHVuaW5pdGlhbGl6ZWQgYW5hbHlzaXMgcGhhc2UsIGZvbGxv d2luZyB0aGUgZGF0YSBmbG93IHRvIGNvbm5lY3QgLkRFRkVSUkVEX0lOSVQgdG8g4oCcYXV0b192 YXLigJ0sIGFuZCB0aGVuIGRlY2lkZSB0aGF0IOKAnGF1dG9fdmFy4oCdIGlzIHVuaW5pdGlhbGl6 ZWQuDQo+IA0KPiBZZXMuIEJhc2ljYWxseSBpZiB0aGVyZSdzIGFuIGFydGlmaWNpYWwgdmFyaWFi bGUgYXV0byBpbml0aWFsaXplZCB5b3UgaGF2ZSB0byBsb29rIGF0IGl0cyB1c2VzLiANCk9rYXku IA0KDQo+IA0KPj4gMi4gRHVyaW5nIFJUTCBleHBhbnNpb24sIGZvbGxvd2luZyB0aGUgZGF0YSBm bG93IHRvIGNvbm5lY3QgLkRFRkVSUkVEX0lOSVQgdG8g4oCcYXV0b192YXLigJ0sIGFuZCB0aGVu IGRlbGV0ZSDigJx0ZW1w4oCdLCBhbmQgdGhlbiBleHBhbmQgLkRFRkVSUkVEX0lOSVQgdG8gYXV0 b192YXIuDQo+IA0KPiBUaGF0IHNob3VsZG4ndCBiZSBuZWNlc3NhcnkuIFlvdSdkIGluaXRpYWxp emUgYSB0ZW1wb3JhcnkgcmVnaXN0ZXIgd2hpY2ggaXMgdGhlbiBjb3BpZWQgdG8gdGhlIHJlYWwg dmFyaWFibGUuIFRoYXQncyBnb29kIGVub3VnaCBhbmQgc2hvdWxkIGJlIG9wdGltaXplZCBieSB0 aGUgUlRMIHBpcGVsaW5lLiANCg0KT2theSwgSSBzZWUuIA0KDQpJIHdpbGwgdHJ5IHRvIHVwZGF0 ZSB0aGUgY29kZSB0byBzZWUgd2hldGhlciBhbGwgdGhlIGlzc3VlcyBjYW4gYmUgcmVzb2x2ZWQu DQoNClRoYW5rcyBhIGxvdCBmb3IgeW91ciBoZWxwLg0KDQpRaW5nDQo+IA0KPj4gTGV0IG1lIGtu b3cgeW91ciBjb21tZW50cyBhbmQgc3VnZ2VzdGlvbnMgb24gdGhpcy4NCj4+IA0KPj4gDQo+Pj4g DQo+Pj4gVGhlIG9ubHkgb3RoZXIgb3B0aW9uIGlzIHRvIGZvcmNlLiBERUZFUkVEX0lOSVQgbWFr aW5nIHRoZSBMSFMgYWRkcmVzcyB0YWtlbiB3aGljaCBJIHRoaW5rIGNvdWxkIGJlIGFjaGlldmVk IGJ5IHBhc3NpbmcgaXQgdGhlIGFkZHJlc3MgYXMgYXJndW1lbnQgaW5zdGVhZCBvZiBoYXZpbmcg YSBMSFMuIEJ1dCBsZXQncyBub3QgZ28gZG93biB0aGlzIHJvdXRlIC0gaXQgd2lsbCBoYXZlIHF1 aXRlIGJhZCBiZWhhdmlvciBvbiBhbGlhcyBhbmFseXNpcyBhbmQgb3B0aW1pemF0aW9uLiANCj4+ IA0KPj4gT2theS4NCj4+IA0KPj4gUWluZw0KPj4+IA0KPj4+PiBJZiBzbywg4oCcdW5pbml0aWFs aXplZCBhbmFseXNpc+KAnSBwaGFzZSBuZWVkIHRvIGJlIGZ1cnRoZXIgYWRqdXN0ZWQgdG8gc3Bl Y2lhbGx5IGhhbmRsZSBzdWNoIElSLiANCj4+Pj4gDQo+Pj4+IElmIG5vdCwgd2hhdCBzaG91bGQg d2UgZG8gd2hlbiB0aGUgYXV0byB2YXIgaXMgYWRkcmVzcyB0YWtlbj8NCj4+Pj4gDQo+Pj4+IFRo YW5rcyBhIGxvdC4NCj4+Pj4gDQo+Pj4+IFFpbmcNCj4+Pj4gDQo+Pj4+IA0KPj4+Pj4gT24gQXVn IDExLCAyMDIxLCBhdCA4OjU4IEFNLCBSaWNoYXJkIEJpZW5lciA8cmd1ZW50aGVyQHN1c2UuZGU+ IHdyb3RlOg0KPj4+Pj4gDQo+Pj4+PiBPbiBXZWQsIDExIEF1ZyAyMDIxLCBRaW5nIFpoYW8gd3Jv dGU6DQo+Pj4+PiANCj4+Pj4+PiANCj4+Pj4+PiANCj4+Pj4+Pj4gT24gQXVnIDExLCAyMDIxLCBh dCA4OjM3IEFNLCBSaWNoYXJkIEJpZW5lciA8cmd1ZW50aGVyQHN1c2UuZGU+IHdyb3RlOg0KPj4+ Pj4+PiANCj4+Pj4+Pj4gT24gV2VkLCAxMSBBdWcgMjAyMSwgUWluZyBaaGFvIHdyb3RlOg0KPj4+ Pj4+PiANCj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4gDQo+Pj4+Pj4+Pj4gT24gQXVnIDExLCAyMDIxLCBh dCAyOjAyIEFNLCBSaWNoYXJkIEJpZW5lciA8cmd1ZW50aGVyQHN1c2UuZGU+IHdyb3RlOg0KPj4+ Pj4+Pj4+IA0KPj4+Pj4+Pj4+IE9uIFR1ZSwgMTAgQXVnIDIwMjEsIFFpbmcgWmhhbyB3cm90ZToN Cj4+Pj4+Pj4+PiANCj4+Pj4+Pj4+Pj4gDQo+Pj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4+Pj4gT24gQXVn IDEwLCAyMDIxLCBhdCAzOjE2IFBNLCBRaW5nIFpoYW8gdmlhIEdjYy1wYXRjaGVzIDxnY2MtcGF0 Y2hlc0BnY2MuZ251Lm9yZz4gd3JvdGU6DQo+Pj4+Pj4+Pj4+PiANCj4+Pj4+Pj4+Pj4+IEhpLCBS aWNoYXJkLA0KPj4+Pj4+Pj4+Pj4gDQo+Pj4+Pj4+Pj4+Pj4gT24gQXVnIDEwLCAyMDIxLCBhdCAx MDoyMiBBTSwgUmljaGFyZCBCaWVuZXIgPHJndWVudGhlckBzdXNlLmRlPiB3cm90ZToNCj4+Pj4+ Pj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4+Pj4+Pj4gRXNwZWNpYWxseSBpbiB0aGUgVkxBIGNhc2UgYnV0 IGxpa2VseSBhbHNvIGluIGdlbmVyYWwgKHRob3VnaCB1bmxpa2VseQ0KPj4+Pj4+Pj4+Pj4+Pj4g c2luY2UgdXN1YWxseSB0aGUgcmVjZWl2ZXIgb2YgaW5pdGlhbGl6YXRpb25zIGFyZSBzaW1wbGUg ZW5vdWdoKS4gIEknZA0KPj4+Pj4+Pj4+Pj4+Pj4gZXhwZWN0IHRoZSBWTEEgY2FzZSBlbmQgdXAg YXMNCj4+Pj4+Pj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4+Pj4+Pj4gKnB0cl90b19kZWNsID0gLkRFRkVS UkVEX0lOSVQgKC4uLik7DQo+Pj4+Pj4+Pj4+Pj4+PiANCj4+Pj4+Pj4+Pj4+Pj4+IHdoZXJlICpw dHJfdG9fZGVjbCBpcyB0aGUgREVDTF9WQUxVRV9FWFBSIG9mIHRoZSBkZWNsLg0KPj4+Pj4+Pj4+ Pj4+PiANCj4+Pj4+Pj4+Pj4+Pj4gU28sIGZvciB0aGUgZm9sbG93aW5nIHNtYWxsIHRlc3Rpbmcg Y2FzZToNCj4+Pj4+Pj4+Pj4+Pj4gDQo+Pj4+Pj4+Pj4+Pj4+ID09PT0NCj4+Pj4+Pj4+Pj4+Pj4g ZXh0ZXJuIHZvaWQgYmFyIChpbnQpOw0KPj4+Pj4+Pj4+Pj4+PiANCj4+Pj4+Pj4+Pj4+Pj4gdm9p ZCBmb28oaW50IG4pDQo+Pj4+Pj4+Pj4+Pj4+IHsNCj4+Pj4+Pj4+Pj4+Pj4gaW50IGFycltuXTsN Cj4+Pj4+Pj4+Pj4+Pj4gYmFyIChhcnJbMl0pOw0KPj4+Pj4+Pj4+Pj4+PiByZXR1cm47DQo+Pj4+ Pj4+Pj4+Pj4+IH0NCj4+Pj4+Pj4+Pj4+Pj4gPT09PT0NCj4+Pj4+Pj4+Pj4+Pj4gDQo+Pj4+Pj4+ Pj4+Pj4+IElmIEkgY29tcGlsZSBpdCB3aXRoIC1mdHJpdmlhbC1hdXRvLXZhci1pbml0PXplcm8g LWZkdW1wLXRyZWUtZ2ltcGxlIC1TIC1vIGF1dG8taW5pdC0xMS5zIC1mZHVtcC1ydGwtZXhwYW5k LCB0aGUgKi5naW1wbGUgZHVtcCBpczoNCj4+Pj4+Pj4+Pj4+Pj4gDQo+Pj4+Pj4+Pj4+Pj4+ID09 PT09DQo+Pj4+Pj4+Pj4+Pj4+IHZvaWQgZm9vIChpbnQgbikNCj4+Pj4+Pj4+Pj4+Pj4gew0KPj4+ Pj4+Pj4+Pj4+PiBpbnQgbi4wOw0KPj4+Pj4+Pj4+Pj4+PiBzaXpldHlwZSBELjE5NTA7DQo+Pj4+ Pj4+Pj4+Pj4+IGJpdHNpemV0eXBlIEQuMTk1MTsNCj4+Pj4+Pj4+Pj4+Pj4gc2l6ZXR5cGUgRC4x OTUyOw0KPj4+Pj4+Pj4+Pj4+PiBiaXRzaXpldHlwZSBELjE5NTM7DQo+Pj4+Pj4+Pj4+Pj4+IHNp emV0eXBlIEQuMTk1NDsNCj4+Pj4+Pj4+Pj4+Pj4gaW50WzA6RC4xOTUwXSAqIGFyci4xOw0KPj4+ Pj4+Pj4+Pj4+PiB2b2lkICogc2F2ZWRfc3RhY2suMjsNCj4+Pj4+Pj4+Pj4+Pj4gaW50IGFyclsw OkQuMTk1MF0gW3ZhbHVlLWV4cHI6ICphcnIuMV07DQo+Pj4+Pj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4+ Pj4+PiBzYXZlZF9zdGFjay4yID0gX19idWlsdGluX3N0YWNrX3NhdmUgKCk7DQo+Pj4+Pj4+Pj4+ Pj4+IHRyeQ0KPj4+Pj4+Pj4+Pj4+PiB7DQo+Pj4+Pj4+Pj4+Pj4+IG4uMCA9IG47DQo+Pj4+Pj4+ Pj4+Pj4+IF8xID0gKGxvbmcgaW50KSBuLjA7DQo+Pj4+Pj4+Pj4+Pj4+IF8yID0gXzEgKyAtMTsN Cj4+Pj4+Pj4+Pj4+Pj4gXzMgPSAoc2l6ZXR5cGUpIF8yOw0KPj4+Pj4+Pj4+Pj4+PiBELjE5NTAg PSBfMzsNCj4+Pj4+Pj4+Pj4+Pj4gXzQgPSAoc2l6ZXR5cGUpIG4uMDsNCj4+Pj4+Pj4+Pj4+Pj4g XzUgPSAoYml0c2l6ZXR5cGUpIF80Ow0KPj4+Pj4+Pj4+Pj4+PiBfNiA9IF81ICogMzI7DQo+Pj4+ Pj4+Pj4+Pj4+IEQuMTk1MSA9IF82Ow0KPj4+Pj4+Pj4+Pj4+PiBfNyA9IChzaXpldHlwZSkgbi4w Ow0KPj4+Pj4+Pj4+Pj4+PiBfOCA9IF83ICogNDsNCj4+Pj4+Pj4+Pj4+Pj4gRC4xOTUyID0gXzg7 DQo+Pj4+Pj4+Pj4+Pj4+IF85ID0gKHNpemV0eXBlKSBuLjA7DQo+Pj4+Pj4+Pj4+Pj4+IF8xMCA9 IChiaXRzaXpldHlwZSkgXzk7DQo+Pj4+Pj4+Pj4+Pj4+IF8xMSA9IF8xMCAqIDMyOw0KPj4+Pj4+ Pj4+Pj4+PiBELjE5NTMgPSBfMTE7DQo+Pj4+Pj4+Pj4+Pj4+IF8xMiA9IChzaXpldHlwZSkgbi4w Ow0KPj4+Pj4+Pj4+Pj4+PiBfMTMgPSBfMTIgKiA0Ow0KPj4+Pj4+Pj4+Pj4+PiBELjE5NTQgPSBf MTM7DQo+Pj4+Pj4+Pj4+Pj4+IGFyci4xID0gX19idWlsdGluX2FsbG9jYV93aXRoX2FsaWduIChE LjE5NTQsIDMyKTsNCj4+Pj4+Pj4+Pj4+Pj4gYXJyID0gLkRFRkVSUkVEX0lOSVQgKEQuMTk1Miwg MiwgMSk7DQo+Pj4+Pj4+Pj4+Pj4+IF8xNCA9ICgqYXJyLjEpWzJdOw0KPj4+Pj4+Pj4+Pj4+PiBi YXIgKF8xNCk7DQo+Pj4+Pj4+Pj4+Pj4+IHJldHVybjsNCj4+Pj4+Pj4+Pj4+Pj4gfQ0KPj4+Pj4+ Pj4+Pj4+PiBmaW5hbGx5DQo+Pj4+Pj4+Pj4+Pj4+IHsNCj4+Pj4+Pj4+Pj4+Pj4gX19idWlsdGlu X3N0YWNrX3Jlc3RvcmUgKHNhdmVkX3N0YWNrLjIpOw0KPj4+Pj4+Pj4+Pj4+PiB9DQo+Pj4+Pj4+ Pj4+Pj4+IH0NCj4+Pj4+Pj4+Pj4+Pj4gDQo+Pj4+Pj4+Pj4+Pj4+ID09PT0NCj4+Pj4+Pj4+Pj4+ Pj4gDQo+Pj4+Pj4+Pj4+Pj4+IFlvdSB0aGluayB0aGF0IHRoZSBhYm92ZSAuREVGRUVSRURfSU5J VCBpcyBub3QgY29ycmVjdD8NCj4+Pj4+Pj4+Pj4+Pj4gSXQgc2hvdWxkIGJlOg0KPj4+Pj4+Pj4+ Pj4+PiANCj4+Pj4+Pj4+Pj4+Pj4gKmFyci4xID0gLkRFRkVSUkVEX0lOSVQgKEQuMTk1Mi4gMiwg MSk7DQo+Pj4+Pj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4+Pj4+PiA/DQo+Pj4+Pj4+Pj4+Pj4gDQo+Pj4+ Pj4+Pj4+Pj4gWWVzLg0KPj4+Pj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4+Pj4gDQo+Pj4+Pj4+Pj4+PiBJ IHVwZGF0ZWQgZ2ltcGxpZnkuYyBmb3IgVkxBIGFuZCBub3cgaXQgZW1pdHMgdGhlIGNhbGwgdG8g LkRFRkVSUkVEX0lOSVQgYXM6DQo+Pj4+Pj4+Pj4+PiANCj4+Pj4+Pj4+Pj4+IGFyci4xID0gX19i dWlsdGluX2FsbG9jYV93aXRoX2FsaWduIChELjE5NTQsIDMyKTsNCj4+Pj4+Pj4+Pj4+ICphcnIu MSA9IC5ERUZFUlJFRF9JTklUIChELjE5NTIsIDIsIDEpOw0KPj4+Pj4+Pj4+Pj4gDQo+Pj4+Pj4+ Pj4+PiBIb3dldmVyLCB0aGlzIGNhbGwgdHJpZ2dlcmVkIHRoZSBhc3NlcnRpb24gZmFpbHVyZSBp biB2ZXJpZnlfZ2ltcGxlX2NhbGwgb2YgdHJlZS1jZmcuYyBiZWNhdXNlIHRoZSBMSFMgaXMgbm90 IGEgdmFsaWQgTEhTLiANCj4+Pj4+Pj4+Pj4+IFRoZW4gSSBtb2RpZnkgdHJlZS1jZmcuYyBhczoN Cj4+Pj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4+Pj4gZGlmZiAtLWdpdCBhL2djYy90cmVlLWNmZy5jIGIv Z2NjL3RyZWUtY2ZnLmMNCj4+Pj4+Pj4+Pj4+IGluZGV4IDMzMGViN2RkODliZi4uMTgwZDRmMWY5 ZTMyIDEwMDY0NA0KPj4+Pj4+Pj4+Pj4gLS0tIGEvZ2NjL3RyZWUtY2ZnLmMNCj4+Pj4+Pj4+Pj4+ ICsrKyBiL2djYy90cmVlLWNmZy5jDQo+Pj4+Pj4+Pj4+PiBAQCAtMzM3NSw3ICszMzc1LDExIEBA IHZlcmlmeV9naW1wbGVfY2FsbCAoZ2NhbGwgKnN0bXQpDQo+Pj4+Pj4+Pj4+PiB9DQo+Pj4+Pj4+ Pj4+PiANCj4+Pj4+Pj4+Pj4+IHRyZWUgbGhzID0gZ2ltcGxlX2NhbGxfbGhzIChzdG10KTsNCj4+ Pj4+Pj4+Pj4+ICsgIC8qIEZvciAuREVGRVJSRURfSU5JVCBjYWxsLCB0aGUgTEhTIG1pZ2h0IGJl IGFuIGluZGlyZWN0aW9uIG9mDQo+Pj4+Pj4+Pj4+PiArICAgICBhIHBvaW50ZXIgZm9yIHRoZSBW TEEgdmFyaWFibGUsIHdoaWNoIGlzIG5vdCBhIHZhbGlkIExIUyBvZg0KPj4+Pj4+Pj4+Pj4gKyAg ICAgYSBnaW1wbGUgY2FsbCwgd2UgaWdub3JlIHRoZSBhc3NzZXJ0aW9uIG9uIHRoaXMuICAqLyAN Cj4+Pj4+Pj4+Pj4+IGlmIChsaHMNCj4+Pj4+Pj4+Pj4+ICsgICAgICAmJiAoIWdpbXBsZV9jYWxs X2ludGVybmFsX3AgKHN0bXQsIElGTl9ERUZFUlJFRF9JTklUKSkNCj4+Pj4+Pj4+Pj4+ICAmJiAo IWlzX2dpbXBsZV9yZWcgKGxocykNCj4+Pj4+Pj4+Pj4+ICAgICAmJiAoIWlzX2dpbXBsZV9sdmFs dWUgKGxocykNCj4+Pj4+Pj4+Pj4+ICAgICAgICAgfHwgdmVyaWZ5X3R5cGVzX2luX2dpbXBsZV9y ZWZlcmVuY2UNCj4+Pj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4+Pj4gVGhlIGFzc2VydGlvbiBmYWlsdXJl IGluIHRyZWUtY2ZnLmMgZ290IHJlc29sdmVkLCBidXQgSSBnb3QgYW5vdGhlciBhc3NlcnRpb24g ZmFpbHVyZSBpbiBvcGVyYW5kc19zY2FubmVyOjpnZXRfZXhwcl9vcGVyYW5kcyAodHJlZSAqZXhw cl9wLCBpbnQgZmxhZ3MpLCBsaW5lIDk0NToNCj4+Pj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4+Pj4gOTM5 ICAgLyogSWYgd2UgZ2V0IGhlcmUsIHNvbWV0aGluZyBoYXMgZ29uZSB3cm9uZy4gICovDQo+Pj4+ Pj4+Pj4+PiA5NDAgICBpZiAoZmxhZ19jaGVja2luZykNCj4+Pj4+Pj4+Pj4+IDk0MSAgICAgew0K Pj4+Pj4+Pj4+Pj4gOTQyICAgICAgIGZwcmludGYgKHN0ZGVyciwgInVuaGFuZGxlZCBleHByZXNz aW9uIGluIGdldF9leHByX29wZXJhbmRzKCk6XG4iKTsNCj4+Pj4+Pj4+Pj4+IDk0MyAgICAgICBk ZWJ1Z190cmVlIChleHByKTsNCj4+Pj4+Pj4+Pj4+IDk0NCAgICAgICBmcHV0cyAoIlxuIiwgc3Rk ZXJyKTsNCj4+Pj4+Pj4+Pj4+IDk0NSAgICAgICBnY2NfdW5yZWFjaGFibGUgKCk7DQo+Pj4+Pj4+ Pj4+PiA5NDYgICAgIH0NCj4+Pj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4+Pj4gTG9va3MgbGlrZSB0aGF0 ICB0aGUgZ2ltcGxlIHN0YXRlbWVudDoNCj4+Pj4+Pj4+Pj4+ICphcnIuMSA9IC5ERUZFUlJFRF9J TklUIChELjE5NTIsIDIsIDEpOw0KPj4+Pj4+Pj4+Pj4gDQo+Pj4+Pj4+Pj4+PiBJcyBub3QgdmFs aWQuICBpLmUsIHRoZSBMSFMgc2hvdWxkIG5vdCBiZSBhbiBpbmRpcmVjdGlvbiB0byBhIHBvaW50 ZXIuIA0KPj4+Pj4+Pj4+Pj4gDQo+Pj4+Pj4+Pj4+PiBIb3cgdG8gcmVzb2x2ZSB0aGlzIGlzc3Vl Pw0KPj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4+IEl0IHNvdW5kcyBsaWtlIHRoZSBMSFMgaXMgYW4gSU5E SVJFQ1RfUkVGIG1heWJlPyAgVGhhdCBtZWFucyBpdCdzDQo+Pj4+Pj4+Pj4gc3RpbGwgbm90IHBy b3Blcmx5IGdpbXBsaWZpZWQgYmVjYXVzZSBpdCBzaG91bGQgZW5kIHVwIGFzIGEgTUVNX1JFRg0K Pj4+Pj4+Pj4+IGluc3RlYWQuDQo+Pj4+Pj4+Pj4gDQo+Pj4+Pj4+Pj4gQnV0IEknbSBqdXN0IGd1 ZXNzaW5nIGhlcmUgLi4uIGlmIHlvdSBhcmUgaW4gYSBkZWJ1Z2dlciB0aGVuIHlvdSBjYW4NCj4+ Pj4+Pj4+PiBpbnZva2UgZGVidWdfdHJlZSAobGhzKSBpbiB0aGUgaW5mZXJpb3IgdG8gc2VlIHdo YXQgaXQgZXhhY3RseSBpcw0KPj4+Pj4+Pj4+IGF0IHRoZSBwb2ludCBvZiB0aGUgZmFpbHVyZS4N Cj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4gWWVzLCBpdOKAmXMgYW4gSU5ESVJFQ1RfUkVGIGF0IHRoZSBw b2ludCBvZiB0aGUgZmFpbHVyZSBldmVuIHRob3VnaCBJIGFkZGVkIGEgDQo+Pj4+Pj4+PiANCj4+ Pj4+Pj4+IGdpbXBsaWZ5X3Zhcl9vcl9wYXJtX2RlY2wgIChsaHMpIA0KPj4+Pj4+PiANCj4+Pj4+ Pj4gSSB0aGluayB0aGUgZWFzaWVzdCBpcyB0byBidWlsZCB0aGUgLkRFRkVSUkVEX0lOSVQgYXMg R0VORVJJQw0KPj4+Pj4+PiBhbmQgdXNlIGdpbXBsaWZ5X2Fzc2lnbiAoKSB0byBnaW1wbGlmeSBh bmQgYWRkIHRoZSByZXN1bHQNCj4+Pj4+Pj4gdG8gdGhlIHNlcXVlbmNlLiAgVGh1cywgYnVpbGQg YSBHRU5FUklDIENBTExfRVhQUiBhbmQgdGhlbg0KPj4+Pj4+PiBnaW1wbGlmeV9hc3NpZ24gKGxo cywgY2FsbF9leHByLCBzZXEpOw0KPj4+Pj4+IA0KPj4+Pj4+IFdoaWNoIHV0aWxpdHkgcm91dGlu ZSBpcyB1c2VkIHRvIGJ1aWxkIGFuIEludGVybmFsIGdlbmVyaWMgY2FsbD8NCj4+Pj4+PiBDdXJy ZW50bHksIEkgdXNlZCDigJxnaW1wbGVfYnVpbGRfY2FsbF9pbnRlcm5hbOKAnSB0byBidWlsZCB0 aGlzIGludGVybmFsIGdpbXBsZSBjYWxsLg0KPj4+Pj4+IA0KPj4+Pj4+IEZvciB0aGUgZ2VuZXJp YyBjYWxsLCBzaGFsbCBJIHVzZSDigJxidWlsZF9jYWxsX2V4cHJfbG9j4oCdID8gDQo+Pj4+PiAN Cj4+Pj4+IEZvciBleGFtcGxlIGxvb2sgYXQgYnVpbGRfYXNhbl9wb2lzb25fY2FsbF9leHByIHdo aWNoIGRvZXMgc3VjaCB0aGluZw0KPj4+Pj4gZm9yIEFTQU4gcG9pc29uIGludGVybmFsIGZ1bmN0 aW9uIGNhbGwgaW5zZXJ0aW9uIGF0IGdpbXBsaWZpY2F0aW9uIHRpbWUuDQo+Pj4+PiANCj4+Pj4+ IFJpY2hhcmQuDQo+Pj4+PiANCj4+Pj4+PiBRaW5nDQo+Pj4+Pj4gDQo+Pj4+Pj4+IA0KPj4+Pj4+ PiBSaWNoYXJkLg0KPj4+Pj4+PiANCj4+Pj4+Pj4+IFFpbmcNCj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4+ IA0KPj4+Pj4+Pj4+PiBJIGNhbWUgdXAgd2l0aCB0aGUgZm9sbG93aW5nIHNvbHV0aW9uOg0KPj4+ Pj4+Pj4+PiANCj4+Pj4+Pj4+Pj4gRGVmaW5lIHRoZSBJRk5fREVGRVJSRURfSU5JVCBmdW5jdGlv biBhczoNCj4+Pj4+Pj4+Pj4gDQo+Pj4+Pj4+Pj4+IExIUyA9IERFRkVSUkVEX0lOSVQgKFNJWkUg b2YgdGhlIERFQ0wsIElOSVRfVFlQRSwgSVNfVkxBKTsNCj4+Pj4+Pj4+Pj4gDQo+Pj4+Pj4+Pj4+ IGlmIElTX1ZMQSBpcyBmYWxzZSwgdGhlIExIUyBpcyB0aGUgREVDTCBpdHNlbGYsDQo+Pj4+Pj4+ Pj4+IGlmIElTX1ZMQSBpcyB0cnVlLCB0aGUgTEhTIGlzIHRoZSBwb2ludGVyIHRvIHRoaXMgREVD TCB0aGF0IGNyZWF0ZWQgYnkNCj4+Pj4+Pj4+Pj4gZ2ltcGxpZnlfdmxhX2RlY2wuDQo+Pj4+Pj4+ Pj4+IA0KPj4+Pj4+Pj4+PiANCj4+Pj4+Pj4+Pj4gVGhlIGJlbmVmaXQgb2YgdGhpcyBzb2x1dGlv biBhcmU6DQo+Pj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4+PiAxLiBSZXNvbHZlZCB0aGUgaW52YWxpZCBJ UiBpc3N1ZTsNCj4+Pj4+Pj4+Pj4gMi4gVGhlIGNhbGwgc3RtdCBjYXJyaWVzIHRoZSBhZGRyZXNz IG9mIHRoZSBWTEEgbmF0dWFsbHk7DQo+Pj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4+PiBUaGUgaXNzdWUg d2l0aCB0aGlzIHNvbHV0aW9uIGlzOg0KPj4+Pj4+Pj4+PiANCj4+Pj4+Pj4+Pj4gRm9yIFZMQSBh bmQgbm9uLVZMQSwgdGhlIExIUyB3aWxsIGJlIGRpZmZlcmVudCwgDQo+Pj4+Pj4+Pj4+IA0KPj4+ Pj4+Pj4+PiBEbyB5b3Ugc2VlIGFueSBvdGhlciBwb3RlbnRpYWwgaXNzdWVzIHdpdGggdGhpcyBz b2x1dGlvbj8NCj4+Pj4+Pj4+Pj4gDQo+Pj4+Pj4+Pj4+IHRoYW5rcy4NCj4+Pj4+Pj4+Pj4gDQo+ Pj4+Pj4+Pj4+IFFpbmcNCj4+Pj4+Pj4+Pj4gDQo+Pj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4+PiANCj4+ Pj4+Pj4+Pj4gDQo+Pj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4+IC0tIA0KPj4+Pj4+ Pj4+IFJpY2hhcmQgQmllbmVyIDxyZ3VlbnRoZXJAc3VzZS5kZT4NCj4+Pj4+Pj4+PiBTVVNFIFNv ZnR3YXJlIFNvbHV0aW9ucyBHZXJtYW55IEdtYkgsIE1heGZlbGRzdHJhc3NlIDUsIDkwNDA5IE51 ZXJuYmVyZywNCj4+Pj4+Pj4+PiBHZXJtYW55OyBHRjogRmVsaXggSW1lbmTDtnJmZmVyOyBIUkIg MzY4MDkgKEFHIE51ZXJuYmVyZykNCj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4gDQo+Pj4+Pj4+IA0KPj4+ Pj4+PiAtLSANCj4+Pj4+Pj4gUmljaGFyZCBCaWVuZXIgPHJndWVudGhlckBzdXNlLmRlPg0KPj4+ Pj4+PiBTVVNFIFNvZnR3YXJlIFNvbHV0aW9ucyBHZXJtYW55IEdtYkgsIE1heGZlbGRzdHJhc3Nl IDUsIDkwNDA5IE51ZXJuYmVyZywNCj4+Pj4+Pj4gR2VybWFueTsgR0Y6IEZlbGl4IEltZW5kw7Zy ZmZlcjsgSFJCIDM2ODA5IChBRyBOdWVybmJlcmcpDQo+Pj4+Pj4gDQo+Pj4+Pj4gDQo+Pj4+PiAN Cj4+Pj4+IC0tIA0KPj4+Pj4gUmljaGFyZCBCaWVuZXIgPHJndWVudGhlckBzdXNlLmRlPg0KPj4+ Pj4gU1VTRSBTb2Z0d2FyZSBTb2x1dGlvbnMgR2VybWFueSBHbWJILCBNYXhmZWxkc3RyYXNzZSA1 LCA5MDQwOSBOdWVybmJlcmcsDQo+Pj4+PiBHZXJtYW55OyBHRjogRmVsaXggSW1lbmTDtnJmZmVy OyBIUkIgMzY4MDkgKEFHIE51ZXJuYmVyZykNCj4+Pj4gDQo+Pj4gDQo+PiANCj4gDQoNCg==