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 79B6B3858C2F for ; Fri, 19 Jan 2024 16:25:58 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 79B6B3858C2F Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=oracle.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=oracle.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 79B6B3858C2F Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=205.220.165.32 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1705681561; cv=pass; b=SnAX+HSuZCPSupQ4msZdq8UVYhF1sP8zEfmrgvZ0IQZ0Gk9qZJpXX2TOeiG4/4PrHW+z8j/WZ3gSw1tSS4n2grvGy1hlEgogbB0Q3zaMeaNXYRtMBpQOqQHmEB2Jn9yqwuG4cNl6VqS08IUoiSvpumkOb8wOpYVe7tJQI8K+shI= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1705681561; c=relaxed/simple; bh=2CPRRnUjUcju2P2IeoxbJtuJqTgr3fkaXTqpaPZitPY=; h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-ID: MIME-Version; b=LhF1CYSiw4fH/9YgFtGrT538/IPFCY9RrvyIHll5ZV4oibnLkqFI1rvH+8Bwxd/U5dFtHSt0Jgre49GwiPIIF5ynCoKL4MluxQR7hT56epDIP3eB7NzW/A0LkzVY+qni/qRRBCO6iHyZSM3vvSwilIbo3gfc9Ppq++01AgrRYJk= ARC-Authentication-Results: i=2; server2.sourceware.org Received: from pps.filterd (m0246627.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 40JBsIBh018964; Fri, 19 Jan 2024 16:25:57 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-2023-11-20; bh=2CPRRnUjUcju2P2IeoxbJtuJqTgr3fkaXTqpaPZitPY=; b=X9NGjsiaQs7yIk4vWqxvNbMLrNILUBvauep07Tr4H3flvpOENqKXPvJ1Kz1f1oA/zyup q8LYeiW2++PS2pYkUIQ+nvxPPYjXy8k92xXhAWYiwkM+dLnMVeT/ScTcmv4L5gRO3O6b 1XheY15h25umhpAsp+hOXR8SNE3uELEufhg5kEm1cAeTBXsVWLaBop0EALYfK8+clbWd SMoY8oCODioZEpEnKvjJzJr8rIPgKXRDWyddUHPoIIU7nymQuhOn1RcB/b/pPye6+JF/ W1yggTM99OAovECxozpb1fTkB3POvq+M7aDFGK38fq1HxfDmRD9jdosWRbJu/HcqPnnU Ug== Received: from phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta02.appoci.oracle.com [147.154.114.232]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3vkjba74qy-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 19 Jan 2024 16:25:56 +0000 Received: from pps.filterd (phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (8.17.1.19/8.17.1.19) with ESMTP id 40JEvRUv019975; Fri, 19 Jan 2024 16:25:56 GMT Received: from nam10-mw2-obe.outbound.protection.outlook.com (mail-mw2nam10lp2101.outbound.protection.outlook.com [104.47.55.101]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 3vkgyfhwr7-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 19 Jan 2024 16:25:56 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=iylqIP7OLG1CIByD2q2rDI04Bmj6IWE/J1ccFtll4DPkBfAoDi0j55NXjKNtwnURiUswsPirmcSt89J572wYHyLHlAUQX6n0pv+a7jO7lzL0dwwfj2nOBw+Yv4r3i2nXJcrYT55KoelFz4m0eVCb4hkAoUUxiXxPqRnrfUj5T7mrYfBTSHWuMQRMLc5XpD/86W/9LmSS+XR4oBOl1Ko3Kbbrf56HsAD1n154ejvkhO4RfgpoRkdmAbTqRK3SV5V+GDk1/35HE/nvpebWW6YHlxAJO2qn8xYgeL7UoFvqiZJMIru3Za2q0eSmg5NBGn7mAVCwBAgo1fOL7nMo9/xMlg== 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=2CPRRnUjUcju2P2IeoxbJtuJqTgr3fkaXTqpaPZitPY=; b=WUy7jRr7sDXydVFmrvvSCIR6i8AV3rUCcZWXFMKww8cEZW1ZSbhYqoFsOAWd6UwCx1tXMzeB7yVeGMjbe51jDKQPhsG9ywrqjxpyyq/kaIrqPjFTRzElETBL7c5IqDPOxYdoCERsAsADL3t7G4H/5/VxHJt0nA5brAOO135o+jlruFp3BMIxBXIbeTq3nHpc4A0H8/aVe+QE818s0jARtuV9NpvsxPwVE8k/ElwRI9lqG34fobuFYcwHhJM4HglHJmTRqGKU7gIUMs+mhO9/81QxSWFYfwjc17cTZQM/yMod2HjP69YmPvURLtFyM5m0RAVSB5xW/DZIvjwl/iEFdg== 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=2CPRRnUjUcju2P2IeoxbJtuJqTgr3fkaXTqpaPZitPY=; b=djHkKF0hPJOqI4IszF8q7ZgFlOc/6bwmS7LAYtSiPoDF4JLGoF16mlpqDW07ZAcYsgz38yaiXlNGdURYUs0GBge9S2RaSUbXCD+vlZwttvCdfBaQqHksUOmKdq0nYtGNGCR7eOznVb5gqwW87eGy0xzlEqp4iLkn8KigUD27Z3E= Received: from CH3PR10MB7957.namprd10.prod.outlook.com (2603:10b6:610:1bf::19) by CH2PR10MB4309.namprd10.prod.outlook.com (2603:10b6:610:ae::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7202.24; Fri, 19 Jan 2024 16:25:53 +0000 Received: from CH3PR10MB7957.namprd10.prod.outlook.com ([fe80::437b:d21c:4013:e014]) by CH3PR10MB7957.namprd10.prod.outlook.com ([fe80::437b:d21c:4013:e014%6]) with mapi id 15.20.7202.024; Fri, 19 Jan 2024 16:25:53 +0000 From: Qing Zhao To: Richard Biener CC: "jakub@redhat.com" , gcc Patches Subject: Re: HELP: Questions on unshare_expr Thread-Topic: HELP: Questions on unshare_expr Thread-Index: AQHaRW+uruqoybhuuUCPXa2beNzsb7DWXdUAgAARQACABDFGAIACSSOAgACsa4CAAAA8AIACGPkAgAE6Q4CAAHQJgA== Date: Fri, 19 Jan 2024 16:25:53 +0000 Message-ID: <97EDB4A5-1A68-4D46-A060-F550AEB2812A@oracle.com> References: <50C8811D-9C2A-4FFB-9FC5-D24C5A76F868@oracle.com> <70C34042-B741-4697-9524-396CB9D40DF8@gmail.com> <4D91B027-0B34-4DB4-9338-1B9DE6E2EB00@oracle.com> <63DEF4CB-18DA-48C5-842B-B743EF365B24@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.3731.700.6) x-ms-publictraffictype: Email x-ms-traffictypediagnostic: CH3PR10MB7957:EE_|CH2PR10MB4309:EE_ x-ms-office365-filtering-correlation-id: 0b4db742-f7d8-4c34-4aa3-08dc190b4ed8 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 1WHGBLHgdYyFWIDscmHUmpGuoO3t6QC0NrwmnJ9L+x0IF4P62X7A+gxgy8gyBozzOGIrUOeJ0+d2HulAhrJfDatlk/LcNR5Sm0jVGgBWN1zC45y+BJmFktoYexjQKrN2ALivAv6HVquUw4zqKoje4DgbzPvJxfc12psMyIX5kFFfOJSvfPD+IVKhz2YRWNi/FDxOh5IxT24vzvIEFGtFselREKMh2zug1QeiJpsaMduxIbn/xYEkv1BY6kCNrN1XLFBk9fmld/lGKIObHxPEfV2CWyKWWdsTbeDGGsobYxrCj3dMyoa91HpCuWZPQzVNDSGT8b1SgQdKZRCymhjVPRQ8RYrMDYSLGy342qGl/0MKC9r3Y9NmZrUUZOigwgFxWy+EFtjSUe8xDCXfIXCLJMWi8BJUEVOiBtamXfWmy4jIWGX231NyTzCctLXllUwJulMR9vNMyrBMk6D/mUk2BA8Ey3BnEAD2ucrItRqipkya58QZe1xvmMOF72xy0eHsWxYM5I4u1kuBlhgRUWN69AcpSfpGMRt3s/u1a66pOX3ZomsmBw4CPnE41w1MLfVwGhlDdhGs+G0fnXW6A9U9g+09fQaXW3r/a8HbP6qH3BhSJQT4MdtmoQhsfRVxMpdHATgtDBdr/bkAQdgq0hxtJQ== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH3PR10MB7957.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(366004)(396003)(136003)(376002)(346002)(39860400002)(230922051799003)(1800799012)(451199024)(64100799003)(186009)(83380400001)(53546011)(122000001)(2616005)(966005)(54906003)(5660300002)(44832011)(71200400001)(38100700002)(2906002)(6486002)(91956017)(41300700001)(478600001)(4326008)(66556008)(6916009)(8676002)(76116006)(66446008)(8936002)(6506007)(64756008)(66476007)(316002)(66946007)(6512007)(36756003)(33656002)(86362001)(38070700009)(45980500001);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?SU9yM0ZZRFQzeTBpV3Z6d0dsanFDbUR1MzRlbHNOb1ZNUXhBS0M4b0p3NVd2?= =?utf-8?B?NkNyNWJpQVg0SHdOeXJmcmVRMlc5NW9PdnB0VFpTOFV6dG52bVlXTTUyVnps?= =?utf-8?B?QmY4TlhSS2ZFdi82U2U0UTBleVpVeWhVUHU0NjNJYlhkUTdBeHhEalVhQmc1?= =?utf-8?B?TjBwdnJyUVlEaUtZSmFTS2FkYkhMNGFPZVBwUUl4S1EwL3pKOXloQjlOcnZm?= =?utf-8?B?M1F6cXBmVDc3MWx4dHpjbFFnd0Z3dUxaQTV4R1Y2d0MzeTg2YmNTTzJPc1Fq?= =?utf-8?B?dGpVSGFjU2lneUxIdzBmOTRKeXZOSkFHNHVLZFY0T01NVGs4RUVaQkQ0ZHRY?= =?utf-8?B?Qkl1Yk15cElCeWFmUVkwK2xvUVBieWhMUDlUT2dBcGZsNE16MllSUk44ajBu?= =?utf-8?B?WSs1S3BVYWxadmg1WmtYRlB6T3A0RXAzaWVzMk5oMGhsYm52SE5SUDVxaTBH?= =?utf-8?B?Nmx5MmZ6K2RYZHVWWCtvYkQvTSszQjJEcFpkakdSUWVMZmRWVE5rZnFObFVJ?= =?utf-8?B?Z0h1QmYrQTV5QytuQ0prYVVXbVo3alNSS1BYeXZ0S210a2c3WkNKN054VGdw?= =?utf-8?B?Zk5tbkFhekY0enl5RzBxQVRXS0xXbkdFZmhMQWxWemQ5WjJNTDhQUm5uSHBZ?= =?utf-8?B?ZGx4cmFNZytYSXd1QW95U2ZWODJTLzZTdEZoVC9IWmJXZmxIUXhkNDBkR0VF?= =?utf-8?B?V3hYNDJZclFGWUtmbUZFd1g2QXA4SFJmTllaQ2RPRndNUHNLSDFzR1JVSGsr?= =?utf-8?B?TjU0UkRYc2czS1R5a3FpWGFZS2dWR25CQ0dUbTNTLzFBUWIyRThxSTRoRXVJ?= =?utf-8?B?YWo3a1lUb2NpeHpnVDJiWmhXMUJ0b0xsaUhhTUdzRzE0bDFaQXRxOEpJNzhx?= =?utf-8?B?Nko2dXIrTnBsMC9oZ0FGR215enMxYk9Pc2Frc3U4eGVKZDc0VFhlYXlkUjdW?= =?utf-8?B?UDlaMzBZQW5jM1o5djRBK3k0Nk05WW5mRWlnbHp1aEcvZU0yd1EwaVVQUjFB?= =?utf-8?B?OXV2VGUrN0xqVTVLdUZjeE84Y25oOGliN0o1SGxIMFFhdUkvSjd3ZEhYdW1H?= =?utf-8?B?b3h6WGdQcU42TjIzRG9YTTJCY0ZFclpVNjNkdVVuQ1FrTCtZZFFicUpuVHhJ?= =?utf-8?B?dHhxOXJ5bGtHTTdsK2xSL21NV2dmSk05TGp1Z3UyVkFOTmdzb1dITk5xOG9P?= =?utf-8?B?Q1RYZ3J3Tm9oMTRkOEpmdENyOG5ISG40ck1aUFMzQldyK1lEKzN1dERnWEJi?= =?utf-8?B?c0EyeFpabVE1Mlh6dS96ZG1aR2hTeHZjSEVWWklhS2lsS05YY2YxMm5tb2w1?= =?utf-8?B?bGZ4aHZ5Vm93VlFGY3M0MDRQWnVFMkhJM2x2T2JnZTVUYnJHcy9aNlIzcE5o?= =?utf-8?B?WFY0L0MwNEpWdVNValBtZE1hblNodWUvVlV1N2RpVHRIaHZuM3pFRENwRnRl?= =?utf-8?B?aERLUGsrdHFuY1pyU0RJbTJ5WVAvelZNZW5CeDVRa2FnN0phaWk0YjJCSDdU?= =?utf-8?B?YTVSTyt1U1VTN085ZWhqemdpRFlDNktuSHZISis2bWlkWmFDVTlZek9zbGFH?= =?utf-8?B?aTFqeEM3NllWbnp3NFY3VUt6YjByNGVrMHpnU2hCd0hnS0psWXRzUkNQV3ZB?= =?utf-8?B?WGR4YVBFRFpTRGF3a2dwV2pEVW55ZkQ1cURZRVhEWWhYM2ZqYXVoUU51OElF?= =?utf-8?B?ZGllc1J5VVZkUTh3RVB1by9WdnNBOFN4NmJmdW53SkROdkRzTUZNTzZkcmVl?= =?utf-8?B?SWtKaDN2UEROZEJKT1ZWZjlmaDQyM2Z5dWx4eTdlNCtMZ3BHZEdPOGlNSmFj?= =?utf-8?B?RWtzMVc3VjMwRGNkMGtaNGF4cGpVd3dyamJJSFA1eFRGVWx4c0tIVFc5NzhX?= =?utf-8?B?TmdUQ0xJMFBVbTgwVzRraU9XaHJJY3NoUTh2TE5odlZCOHN0NFIrSGlDZk1E?= =?utf-8?B?eVl4bEdXbkhSeDZmY2lBSGFZb3VWamFFRHYvVDNuYW96L0JReUVnSEs0d3d4?= =?utf-8?B?ajN2bzByYXZTZUcrUW1hdU5hOEpuZmZuK011YkIvODNWbmFLeDRuZU54ZGxK?= =?utf-8?B?MXAxZm5ielU1YlVWSG1RNzRqUDA0aHFJMWlWbDJJbWdEYVlaNHRpL0h0ejVh?= =?utf-8?B?Q2ZLMEFxdk4wTVQrTk5xNDh0SlJ5MWpSeFZ3Ly81MFBMczJ5bVRSc2xRNXhK?= =?utf-8?Q?NqBgHiSmvZFX4NVCu2MmG4w=3D?= Content-Type: text/plain; charset="utf-8" Content-ID: <630706C7A4BE9E4B9CE640A68C83BBC2@namprd10.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: 55GRjVMuYjOcx5RchT/ZnXjnY9HhoP6Yv3sYkY4VMBJiRHFZ8qtdx33rq20088SAPF6W04l1L94RFB9N1wEyWQ2Y89r+6AzQUOe0OtbU/JFEZSt1iubozjmMBoevX3zwT91TQRH19gIisRE0myOXWc+acCWItY9Zjnk0UBHEkvtUdq3F4k6fSe5VZ3u6QD44xeUvT5GtZ4AAWFDv20fOGjeSfl7Nhddmo/KCoBZbHKIk3xDSEv1F3B7spZmxzFK1E06d4fdy1clQ1DASWrvZdTumP0OwugDxQ2S6DKEIpuaoruPhL56P2jR7KO3ahPEu88FdJyVYKYNUrqGZxKyEmlYqi8jr6AVv/3haQ04KSIH4rBBJ686vQjGeJtB2YEq/JFsWe6A2a9uFyAffZyid76D7I4kQa2rCzuMM9q5kFXBF1OoqiyBvc2tN2C6pbZj8DyYcR3iOS/Ru7UAZgXhO8J97o4lu/Thcdrc6g7Uj/vhZwV+wciihbh3cAfsFEK/l9ItbhC4liHnMlGMx9NkI1Y1KWR5Uo7yrnW/1DvxPUwQqBYY3jCtxXRFTYfGvebuCsp1TyXilZAaVDRIwrrjzZA/OdffNowlTy9i6vsvQeUY= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CH3PR10MB7957.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0b4db742-f7d8-4c34-4aa3-08dc190b4ed8 X-MS-Exchange-CrossTenant-originalarrivaltime: 19 Jan 2024 16:25:53.7743 (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: t+N4QJGGhh8Z5XtGWFtRPWLlqGyqytDAQL8BgKV8AZenpJvBKhAUJ2KyCmDhAXBRODisPKVPCaHhfDALnWgZKA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH2PR10MB4309 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.997,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2024-01-19_10,2024-01-19_02,2023-05-22_02 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxscore=0 suspectscore=0 bulkscore=0 spamscore=0 mlxlogscore=999 phishscore=0 malwarescore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2311290000 definitions=main-2401190093 X-Proofpoint-GUID: cs0jZBKr2edIEyVwQtdxqZ7vHB5XSb_P X-Proofpoint-ORIG-GUID: cs0jZBKr2edIEyVwQtdxqZ7vHB5XSb_P X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,KAM_SHORT,RCVD_IN_MSPIKE_H5,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE,TXREP,T_SCC_BODY_TEXT_LINE,WEIRD_PORT autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: DQoNCj4gT24gSmFuIDE5LCAyMDI0LCBhdCA0OjMwIEFNLCBSaWNoYXJkIEJpZW5lciA8cmljaGFy ZC5ndWVudGhlckBnbWFpbC5jb20+IHdyb3RlOg0KPiANCj4gT24gVGh1LCBKYW4gMTgsIDIwMjQg YXQgMzo0NuKAr1BNIFFpbmcgWmhhbyA8cWluZy56aGFvQG9yYWNsZS5jb20+IHdyb3RlOg0KPj4g DQo+PiANCj4+IA0KPj4+IE9uIEphbiAxNywgMjAyNCwgYXQgMTo0MyBBTSwgUmljaGFyZCBCaWVu ZXIgPHJpY2hhcmQuZ3VlbnRoZXJAZ21haWwuY29tPiB3cm90ZToNCj4+PiANCj4+PiBPbiBXZWQs IEphbiAxNywgMjAyNCBhdCA3OjQy4oCvQU0gUmljaGFyZCBCaWVuZXINCj4+PiA8cmljaGFyZC5n dWVudGhlckBnbWFpbC5jb20+IHdyb3RlOg0KPj4+PiANCj4+Pj4gT24gVHVlLCBKYW4gMTYsIDIw MjQgYXQgOToyNuKAr1BNIFFpbmcgWmhhbyA8cWluZy56aGFvQG9yYWNsZS5jb20+IHdyb3RlOg0K Pj4+Pj4gDQo+Pj4+PiANCj4+Pj4+IA0KPj4+Pj4+IE9uIEphbiAxNSwgMjAyNCwgYXQgNDozMSBB TSwgUmljaGFyZCBCaWVuZXIgPHJpY2hhcmQuZ3VlbnRoZXJAZ21haWwuY29tPiB3cm90ZToNCj4+ Pj4+PiANCj4+Pj4+Pj4gQWxsIG15IHF1ZXN0aW9ucyBmb3IgdW5zaGFyZV9leHByIHJlbGF0ZSB0 byBhICBMVE8gYnVnIHRoYXQgSSBjdXJyZW50bHkgc3R1Y2sgd2l0aA0KPj4+Pj4+PiB3aGVuIHVz aW5nIC5BQ0NFU1NfV0lUSF9TSVpFIGluIGJvdW5kIHNhbml0aXplciAob25seSB3aXRoIC1mbHRv LCB3aXRob3V0IC1mbHRvLCBubyBpc3N1ZSk6DQo+Pj4+Pj4+IA0KPj4+Pj4+PiBbb3BjQHFpbnpo YW8tYWFyY2g2NC1vbDggZ2NjXSQgc2ggdA0KPj4+Pj4+PiBkdXJpbmcgSVBBIHBhc3M6IG1vZHJl Zg0KPj4+Pj4+PiB0LmM6MjA6MTogaW50ZXJuYWwgY29tcGlsZXIgZXJyb3I6IHRyZWUgY29kZSDi gJhzc2FfbmFtZeKAmSBpcyBub3Qgc3VwcG9ydGVkIGluIExUTyBzdHJlYW1zDQo+Pj4+Pj4+IDB4 MTRjMzk5MyBsdG9fd3JpdGVfdHJlZQ0KPj4+Pj4+PiAgICAgIC4uLy4uL2xhdGVzdC1nY2Mtd3Jp dGUvZ2NjL2x0by1zdHJlYW1lci1vdXQuY2M6NTYxDQo+Pj4+Pj4+IDB4MTRjM2FlYiBsdG9fb3V0 cHV0X3RyZWVfMQ0KPj4+Pj4+PiANCj4+Pj4+Pj4gQW5kIHRoZSB2YWx1ZSBvZiB0aGUgdHJlZSBu b2RlIHRoYXQgdHJpZ2dlcmVkIHRoZSBJQ0UgaXM6DQo+Pj4+Pj4+IChnZGIpIGNhbGwgZGVidWdf dHJlZShleHByKQ0KPj4+Pj4+PiA8c3NhX25hbWUgMHhmZmZmZjU3NjFlNjAgdHlwZSA8ZXJyb3Jf bWFyayAweGZmZmZmNTZjMGU1OD4NCj4+Pj4+Pj4gIG5vdGhyb3cNCj4+Pj4+Pj4gIGRlZl9zdG10 DQo+Pj4+Pj4+ICB2ZXJzaW9uOjEzIGluLWZyZWUtbGlzdD4NCj4+Pj4+Pj4gDQo+Pj4+Pj4+IElz IHRoZXJlIGFueSBnb29kIHdheSB0byBkZWJ1ZyBMVE8gYnVnPw0KPj4+Pj4+IA0KPj4+Pj4+IFRo aXMgaGFwcGVucyB1c3VhbGx5IHdoZW4geW91IGhhdmUgYSBWTEEgdHlwZSBhbmQgaXRzIHR5cGUg ZmllbGRzIGFyZSBub3QNCj4+Pj4+PiBwcm9wZXJseSBnaW1wbGlmaWVkIHdoaWNoIHVzdWFsbHkg aGFwcGVucyBiZWNhdXNlIHRoZSBmcm9udGVuZCBmYWlscyB0bw0KPj4+Pj4+IGluc2VydCBhIGdp bXBsaWZpY2F0aW9uIHBvaW50IGZvciBpdCAoYSBERUNMX0VYUFIpLg0KPj4+Pj4gDQo+Pj4+PiBJ IGZvdW5kIGFuIG9sZCBnY2MgYnVnDQo+Pj4+PiBodHRwczovL2djYy5nbnUub3JnL2J1Z3ppbGxh L3Nob3dfYnVnLmNnaT9pZD05NzE3Mg0KPj4+Pj4gSUNFOiB0cmVlIGNvZGUg4oCYc3NhX25hbWXi gJkgaXMgbm90IHN1cHBvcnRlZCBpbiBMVE8gc3RyZWFtcyBzaW5jZSByMTEtMzMwMy1nNjQ1MGYw NzM4OGY5ZmU1Nw0KPj4+Pj4gDQo+Pj4+PiBXaGljaCBpcyB2ZXJ5IHNpbWlsYXIgdG8gdGhlIGJ1 ZyBJIGFtIGhhdmluZyByaWdodCBub3cuDQo+Pj4+PiANCj4+Pj4+IEFmdGVyIGZ1cnRoZXIgc3R1 ZHksIEkgc3VzcGVjdCB0aGF0IHRoZSBpc3N1ZSBJIGFtIGhhdmluZyByaWdodCBub3cgd2l0aCB0 aGUgTFRPIHN0cmVhbWluZyBhbHNvDQo+Pj4+PiByZWxhdGUgdG8g4oCcdW5zaGFyZV9leHBy4oCd LCDigJxzYXZlX2V4cHLigJ0sIGFuZCB0aGUgY29tYmluYXRpb24gb2YgdGhlc2UgdHdvLCBJIHN1 c3BlY3QgdGhhdA0KPj4+Pj4gdGhlIGN1cnJlbnQgZ2NjIGNhbm5vdCBoYW5kbGUgdGhlIGNvbWJp bmF0aW9uIG9mIHRoZXNlIHR3byBjb3JyZWN0bHkgZm9yIG15IGNhc2UuDQo+Pj4+PiANCj4+Pj4+ IE15IHRlc3RpbmcgY2FzZSBpczoNCj4+Pj4+IA0KPj4+Pj4gI2luY2x1ZGUgPHN0ZGxpYi5oPg0K Pj4+Pj4gdm9pZCBfX2F0dHJpYnV0ZV9fKChfX25vaW5saW5lX18pKSBzZXR1cF9hbmRfdGVzdF92 bGEgKGludCBuMSwgaW50IG4yLCBpbnQgbSkNCj4+Pj4+IHsNCj4+Pj4+ICBzdHJ1Y3QgZm9vIHsN Cj4+Pj4+ICAgICAgaW50IG47DQo+Pj4+PiAgICAgIGludCBwW11bbjJdW24xXSBfX2F0dHJpYnV0 ZV9fKChjb3VudGVkX2J5KG4pKSk7DQo+Pj4+PiAgfSAqZjsNCj4+Pj4+IA0KPj4+Pj4gIGYgPSAo c3RydWN0IGZvbyAqKSBtYWxsb2MgKHNpemVvZihzdHJ1Y3QgZm9vKSArIG0qc2l6ZW9mKGludFtu Ml1bbjFdKSk7DQo+Pj4+PiAgZi0+biA9IG07DQo+Pj4+PiAgZi0+cFttXVtuMl1bbjFdPTE7DQo+ Pj4+PiAgcmV0dXJuOw0KPj4+Pj4gfQ0KPj4+Pj4gDQo+Pj4+PiBpbnQgbWFpbihpbnQgYXJnYywg Y2hhciAqYXJndltdKQ0KPj4+Pj4gew0KPj4+Pj4gc2V0dXBfYW5kX3Rlc3RfdmxhICgxMCwgMTEs IDIwKTsNCj4+Pj4+IHJldHVybiAwOw0KPj4+Pj4gfQ0KPj4+Pj4gDQo+Pj4+PiBGYWlsZWQgd2l0 aA0KPj4+Pj4gbXlfZ2NjIC1PcyAtZnNhbml0aXplPWJvdW5kcyAtZmx0bw0KPj4+Pj4gDQo+Pj4+ PiBJZiBjaGFuZ2luZyBlaXRoZXIgbjEgb3IgbjIgdG8gYSBjb25zdGFudCwgdGhlIHRlc3Rpbmcg cGFzc2VkLg0KPj4+Pj4gSWYgZGVsZXRpbmcgLWZsdG8sIHRoZSB0ZXN0aW5nIHBhc3NlZCB0b28u DQo+Pj4+PiANCj4+Pj4+IEkgZG91YmxlIGNoZWNrZWQgbXkgY29kZSBwZXIgdGhlIHN1Z2dlc3Rp b25zIHByb3ZpZGVkIGJ5IHlvdSBhbmQgSmFrdWIgaW4gdGhpcw0KPj4+Pj4gZW1haWwgdGhyZWFk LCBhbmQgSSB0aGluayB0aGUgY29kZSBzaG91bGQgYmUgZmluZS4NCj4+Pj4+IA0KPj4+Pj4gVGhl IGNvZGUgaXMgZm9sbG93aW5nOg0KPj4+Pj4gDQo+Pj4+PiA9PT09PQ0KPj4+Pj4gNTA0IC8qIElu c3RydW1lbnQgYXJyYXkgYm91bmRzIGZvciBJTkRJUkVDVF9SRUZzIHdob3NlIHBvaW50ZXJzIGFy ZQ0KPj4+Pj4gNTA1ICAgIFBPSU5URVJfUExVU19FWFBScyBvZiBjYWxscyB0byAuQUNDRVNTX1dJ VEhfU0laRS4gV2UgY3JlYXRlIHNwZWNpYWwNCj4+Pj4+IDUwNiAgICBidWlsdGlucyB0aGF0IGdl dHMgZXhwYW5kZWQgaW4gdGhlIHNhbm9wdCBwYXNzLCBhbmQgbWFrZSBhbiBhcnJheQ0KPj4+Pj4g NTA3ICAgIGRpbWVuc2lvbiBvZiBpdC4gIEFSUkFZIGlzIHRoZSBwb2ludGVyIHRvIHRoZSBiYXNl IG9mIHRoZSBhcnJheSwNCj4+Pj4+IDUwOCAgICB3aGljaCBpcyBhIGNhbGwgdG8gLkFDQ0VTU19X SVRIX1NJWkUsICpPRkZTRVQgaXMgdGhlIG9mZnNldCB0byB0aGUNCj4+Pj4+IDUwOSAgICBiZWdp bm5pbmcgb2YgYXJyYXkuDQo+Pj4+PiA1MTAgICAgUmV0dXJuIE5VTExfVFJFRSBpZiBubyBpbnN0 cnVtZW50YXRpb24gaXMgZW1pdHRlZC4gICovDQo+Pj4+PiA1MTENCj4+Pj4+IDUxMiB0cmVlDQo+ Pj4+PiA1MTMgdWJzYW5faW5zdHJ1bWVudF9ib3VuZHNfaW5kaXJlY3RfcmVmIChsb2NhdGlvbl90 IGxvYywgdHJlZSBhcnJheSwgdHJlZSAqb2Zmc2V0KQ0KPj4+Pj4gNTE0IHsNCj4+Pj4+IDUxNSAg IGlmICghaXNfYWNjZXNzX3dpdGhfc2l6ZV9wIChhcnJheSkpDQo+Pj4+PiA1MTYgICAgIHJldHVy biBOVUxMX1RSRUU7DQo+Pj4+PiA1MTcgICB0cmVlIGJvdW5kID0gZ2V0X2JvdW5kX2Zyb21fYWNj ZXNzX3dpdGhfc2l6ZSAoYXJyYXkpOw0KPj4+Pj4gNTE4ICAgLyogVGhlIHR5cGUgb2YgdGhlIGNh bGwgdG8gLkFDQ0VTU19XSVRIX1NJWkUgaXMgYSBwb2ludGVyIHR5cGUgdG8NCj4+Pj4+IDUxOSAg ICAgIHRoZSBlbGVtZW50IG9mIHRoZSBhcnJheS4gICovDQo+Pj4+PiA1MjAgICB0cmVlIGVsZW1l bnRfc2l6ZSA9IFRZUEVfU0laRV9VTklUIChUUkVFX1RZUEUgKFRSRUVfVFlQRSAoYXJyYXkpKSk7 DQo+Pj4+PiA1MjEgICBnY2NfYXNzZXJ0IChib3VuZCk7DQo+Pj4+PiA1MjINCj4+Pj4+IDUyMyAg IC8qIEdpdmVuIHRoZSBvZmZzZXQsIGFuZCB0aGUgc2l6ZSBvZiBlYWNoIGVsZW1lbnQsIHRoZSBp bmRleCBjYW4gYmUNCj4+Pj4+IDUyNCAgICAgIGNvbXB1dGVkIGFzOiBvZmZzZXQvZWxlbWVudF9z aXplLiAgKi8NCj4+Pj4+IDUyNSAgICpvZmZzZXQgPSBzYXZlX2V4cHIgKCpvZmZzZXQpOw0KPj4+ Pj4gNTI2ICAgdHJlZSBpbmRleCA9IGZvbGRfYnVpbGQyIChFWEFDVF9ESVZfRVhQUiwNCj4+Pj4+ IDUyNyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpldHlwZSwgKm9mZnNldCwNCj4+Pj4+ IDUyOCAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNoYXJlX2V4cHIgKGVsZW1lbnRfc2l6 ZSkpOw0KPj4+Pj4gNTI5ICAgLyogQ3JlYXRlIGEgIihUICopIDAiIHRyZWUgbm9kZSB0byBkZXNj cmliZSB0aGUgb3JpZ2luYWwgYXJyYXkgdHlwZS4NCj4+Pj4+IDUzMCAgICAgIFdlIGdldCB0aGUg b3JpZ2luYWwgYXJyYXkgdHlwZSBmcm9tIHRoZSBmaXJzdCBhcmd1bWVudCBvZiB0aGUgY2FsbCB0 bw0KPj4+Pj4gNTMxICAgICAgLkFDQ0VTU19XSVRIX1NJWkUgKFJFRiwgQ09VTlRFRF9CWV9SRUYs IDEsIG51bV9ieXRlcywgLTEpLg0KPj4+Pj4gNTMyDQo+Pj4+PiA1MzMgICAgICBPcmlnaW5hbGx5 LCBSRUYgaXMgYSBDT01QT05FTlRfUkVGIHdpdGggdGhlIG9yaWdpbmFsIGFycmF5IHR5cGUsDQo+ Pj4+PiA1MzQgICAgICBpdCB3YXMgY29udmVydGVkIHRvIGEgcG9pbnRlciB0byBhbiBBRERSX0VY UFIsIGFuZCB0aGUgQUREUl9FWFBSJ3MNCj4+Pj4+IDUzNSAgICAgIGZpcnN0IG9wZXJhbmQgaXMg dGhlIG9yaWdpbmFsIENPTVBPTkVOVF9SRUYuICAqLw0KPj4+Pj4gNTM2ICAgdHJlZSByZWYgPSBD QUxMX0VYUFJfQVJHIChhcnJheSwgMCk7DQo+Pj4+PiA1MzcgICB0cmVlIGFycmF5X3R5cGUNCj4+ Pj4+IDUzOCAgICAgPSB1bnNoYXJlX2V4cHIgKFRSRUVfVFlQRSAoVFJFRV9PUEVSQU5EIChUUkVF X09QRVJBTkQocmVmLCAwKSwgMCkpKTsNCj4+Pj4+IDUzOSAgIHRyZWUgemVyb193aXRoX3R5cGUg PSBidWlsZF9pbnRfY3N0IChidWlsZF9wb2ludGVyX3R5cGUgKGFycmF5X3R5cGUpLCAwKTsNCj4+ Pj4+IDU0MCAgIHJldHVybiBidWlsZF9jYWxsX2V4cHJfaW50ZXJuYWxfbG9jIChsb2MsIElGTl9V QlNBTl9CT1VORFMsDQo+Pj4+PiA1NDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdm9pZF90eXBlX25vZGUsIDMsIHplcm9fd2l0aF90eXBlLA0KPj4+Pj4gNTQyICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4LCBib3VuZCk7DQo+Pj4+PiA1 NDMgfQ0KPj4+Pj4gDQo+Pj4+PiA9PT09PQ0KPj4+Pj4gDQo+Pj4+PiBJbnNpZGUgZ2RiLCB0aGUg Z3VpbHR5IElSIGZhaWxlZCBpbiBMVE8gc3RyZWFtaW5nIGlzIGZyb20gdGhlIGFib3ZlIGxpbmUg NTIwOg0KPj4+Pj4gVFlQRV9TSVpFX1VOSVQgKFRSRUVfVFlQRSAoVFJFRV9UWVBFIChhcnJheSkp KSwNCj4+Pj4+IA0KPj4+Pj4gV2hlbiBJIHVzZSB0aGlzIHRyZWUgbm9kZSBhcyBhbiBvcGVyYW5k IG9mIHRoZSBleHByZXNzaW9uIGF0IGxpbmUgNTI2LCBJIGFkZGVkDQo+Pj4+PiB1bnNoYXJlX2V4 cHIuDQo+Pj4+PiANCj4+Pj4+IEhvd2V2ZXIsIEkgc3RpbGwgc2VlIHRoZSBndWlsdHkgSVIgYXMg aW4gZ2RiOg0KPj4+Pj4gDQo+Pj4+PiAgICAgICAgICAgdW5pdC1zaXplIDxtdWx0X2V4cHIgMHhm ZmZmZjVhYWJmOTAgdHlwZSA8aW50ZWdlcl90eXBlIDB4ZmZmZmY1N2MwMDAwIHNpemV0eXBlPg0K Pj4+Pj4gICAgICAgICAgICAgICBzaWRlLWVmZmVjdHMNCj4+Pj4+ICAgICAgICAgICAgICAgYXJn OjAgPG11bHRfZXhwciAweGZmZmZmNWFhYmY2OCB0eXBlIDxpbnRlZ2VyX3R5cGUgMHhmZmZmZjU3 YzAwMDAgc2l6ZXR5cGU+DQo+Pj4+PiANCj4+Pj4+ICAgICAgICAgICAgICAgICAgIGFyZzowIDxz c2FfbmFtZSAweGZmZmZmNTc2MWUxOCB0eXBlIDxlcnJvcl9tYXJrIDB4ZmZmZmY1NmMwZTU4Pg0K Pj4+Pj4gICAgICAgICAgICAgICAgICAgICAgIG5vdGhyb3cNCj4+Pj4+ICAgICAgICAgICAgICAg ICAgICAgICBkZWZfc3RtdA0KPj4+Pj4gICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb246MTIg aW4tZnJlZS1saXN0Pg0KPj4+Pj4gICAgICAgICAgICAgICAgICAgYXJnOjEgPHNzYV9uYW1lIDB4 ZmZmZmY1NzYxZTYwIHR5cGUgPGVycm9yX21hcmsgMHhmZmZmZjU2YzBlNTg+DQo+Pj4+PiAgICAg ICAgICAgICAgICAgICAgICAgbm90aHJvdw0KPj4+Pj4gICAgICAgICAgICAgICAgICAgICAgIGRl Zl9zdG10DQo+Pj4+PiAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbjoxMyBpbi1mcmVlLWxp c3Q+Pg0KPj4+Pj4gICAgICAgICAgICAgICBhcmc6MSA8aW50ZWdlcl9jc3QgMHhmZmZmZjU2YzEw YzggY29uc3RhbnQgND4+DQo+Pj4+PiANCj4+Pj4+IA0KPj4+Pj4gSSBoYXZlIGJlZW4gc3R1Y2sg d2l0aCB0aGlzIGJ1ZyBmb3IgcXVpdGUgc29tZSB0aW1lLg0KPj4+Pj4gQW55IGhlbHAgaXMgaGVs cGZ1bC4NCj4+Pj4gDQo+Pj4+IFRoZSBhYm92ZSBoYXNuJ3QgYmVlbiBnaW1wbGlmaWVkIGNvcnJl Y3RseSwgeW91J2QgaW5zdGVhZCBzZWUNCj4+Pj4gYSBELjEyMzQgaW4gdGhlcmUsIG5vdCBhbiBl eHByZXNzaW9uIHdpdGggU1NBIG5hbWVzLiAgVGhhdCBoYXBwZW5zDQo+Pj4+IHdoZW4gdGhlIGZy b250ZW5kIGZhaWxzIHRvIGVtaXQgYSBERUNMX0VYUFIgZm9yIGEgZGVjbCB3aXRoIHRoaXMNCj4+ Pj4gdHlwZS4NCj4+PiANCj4+PiAuLiB3aGljaCB0aGVuIGFsc28gcmVzdWx0cyBpbiBtaXNzaW5n IHVuc2hhcmluZyBvZiB0aGlzIGV4cHJlc3Npb24NCj4+PiAoc28gdGhlIFNTQSBuYW1lcyBsZWFr IGluKQ0KPj4gDQo+PiBUaGFua3MgYSBsb3QgZm9yIHRoZSBoaW50cy4NCj4+IA0KPj4gT25lIGNv cnJlY3Rpb24gZmlyc3QsIHRoZSBMVE8gYnVnIGlzIG5vdCByZWxhdGVkIHRvIC1mc2FuaXRpemU9 Ym91bmRzLiAgRGVsZXRpbmcgLWZzYW5pdGl6ZT1ib3VuZHMgc3RpbGwgY2FuDQo+PiByZXBlYXQg dGhlIGZhaWx1cmUuDQo+PiANCj4+IEFmdGVyIGZ1cnRoZXIgZGVidWdnaW5nIGludG8gdGhlIGdp bXBsaWZpY2F0aW9uIHBoYXNlIHJlbGF0ZWQgd2l0aCB0aGUgU0FWRV9FWFBSLCBJIGZpbmFsbHkg bG9jYXRlIHRoZSBwbGFjZQ0KPj4gd2hlcmUgdGhlIHVuc2hhcmVpbmcgb2YgdGhlIGV4cHJlc3Np b24gaXMgbWlzc2luZy4gICBUaGlzIGlzIGluIHRoZSByb3V0aW5lIOKAnHBvaW50ZXJfaW50X3N1 beKAnSBvZiBjLWZhbWlseS9jLWNvbW1vbi5jYzoNCj4+IA0KPj4gMzMzMCAgICAgew0KPj4gMzMz MSAgICAgICBpZiAoIWNvbXBsYWluICYmICFDT01QTEVURV9UWVBFX1AgKFRSRUVfVFlQRSAocmVz dWx0X3R5cGUpKSkNCj4+IDMzMzIgICAgICAgICByZXR1cm4gZXJyb3JfbWFya19ub2RlOw0KPj4g MzMzMyAgICAgICBzaXplX2V4cCA9IHNpemVfaW5fYnl0ZXNfbG9jIChsb2MsIFRSRUVfVFlQRSAo cmVzdWx0X3R5cGUpKTsNCj4+IDMzMzQgICAgICAgLyogV3JhcCB0aGUgcG9pbnRlciBleHByZXNz aW9uIGluIGEgU0FWRV9FWFBSIHRvIG1ha2Ugc3VyZSBpdA0KPj4gMzMzNSAgICAgICAgICBpcyBl dmFsdWF0ZWQgZmlyc3Qgd2hlbiB0aGUgc2l6ZSBleHByZXNzaW9uIG1heSBkZXBlbmQNCj4+IDMz MzYgICAgICAgICAgb24gaXQgZm9yIFZNIHR5cGVzLiAgKi8NCj4+IDMzMzcgICAgICAgaWYgKFRS RUVfU0lERV9FRkZFQ1RTIChzaXplX2V4cCkNCj4+IDMzMzggICAgICAgICAgICYmIFRSRUVfU0lE RV9FRkZFQ1RTIChwdHJvcCkNCj4+IDMzMzkgICAgICAgICAgICYmIHZhcmlhYmx5X21vZGlmaWVk X3R5cGVfcCAoVFJFRV9UWVBFIChwdHJvcCksIE5VTEwpKQ0KPj4gMzM0MCAgICAgICAgIHsNCj4+ IDMzNDEgICAgICAgICAgIHB0cm9wID0gc2F2ZV9leHByIChwdHJvcCk7DQo+PiAzMzQyICAgICAg ICAgICBzaXplX2V4cCA9IGJ1aWxkMiAoQ09NUE9VTkRfRVhQUiwgVFJFRV9UWVBFIChpbnRvcCks IHB0cm9wLCBzaXplX2V4cCk7DQo+PiAzMzQzICAgICAgICAgfQ0KPj4gMzM0NCAgICAgfQ0KPj4g DQo+PiBJbiB0aGUgYWJvdmUsIGF0IGxpbmUgMzMzMywgdGhlIHRyZWUgbm9kZSwgVFlQRV9TSVpF X1VOSVQgKFRSRUVfVFlQRShyZXN1bHRfdHlwZSkpLCBpcyByZXR1cm5lZCBkaXJlY3RseSBhcw0K Pj4gdGhlIHNpemVfZXhwLA0KPj4gDQo+PiAoZ2RiKSBjYWxsIGRlYnVnX3RyZWUoc2l6ZV9leHAp DQo+PiA8bXVsdF9leHByIDB4ZmZmZmY1YTZmOTEwDQo+PiAgICB0eXBlIDxpbnRlZ2VyX3R5cGUg MHhmZmZmZjU3YzAwMDAgc2l6ZXR5cGUgcHVibGljIHVuc2lnbmVkIERJDQo+PiAgICAgICAgc2l6 ZSA8aW50ZWdlcl9jc3QgMHhmZmZmZjU2YzBlNzAgY29uc3RhbnQgNjQ+DQo+PiAgICAgICAgdW5p dC1zaXplIDxpbnRlZ2VyX2NzdCAweGZmZmZmNTZjMGU4OCBjb25zdGFudCA4Pg0KPj4gICAgICAg IGFsaWduOjY0IHdhcm5faWZfbm90X2FsaWduOjAgc3ltdGFiOjAgYWxpYXMtc2V0IC0xIGNhbm9u aWNhbC10eXBlIDB4ZmZmZmY1N2MwMDAwIHByZWNpc2lvbjo2NCBtaW4gPGludGVnZXJfY3N0IDB4 ZmZmZmY1NmMwZWEwIDA+IG1heCA8aW50ZWdlcl9jc3QgMHhmZmZmZjU2ZDA1ZTAgMTg0NDY3NDQw NzM3MDk1NTE2MTU+Pg0KPj4gICAgc2lkZS1lZmZlY3RzDQo+PiAgICBhcmc6MCA8bXVsdF9leHBy IDB4ZmZmZmY1YTZmOGU4IHR5cGUgPGludGVnZXJfdHlwZSAweGZmZmZmNTdjMDAwMCBzaXpldHlw ZT4NCj4+ICAgICAgICBzaWRlLWVmZmVjdHMNCj4+ICAgICAgICBhcmc6MCA8bm9wX2V4cHIgMHhm ZmZmZjU2ZGM1NDAgdHlwZSA8aW50ZWdlcl90eXBlIDB4ZmZmZmY1N2MwMDAwIHNpemV0eXBlPg0K Pj4gICAgICAgICAgICBzaWRlLWVmZmVjdHMNCj4+ICAgICAgICAgICAgYXJnOjAgPHNhdmVfZXhw ciAweGZmZmZmNTZkYzRjMCB0eXBlIDxpbnRlZ2VyX3R5cGUgMHhmZmZmZjU3YzA1ZTggaW50Pg0K Pj4gICAgICAgICAgICAgICAgc2lkZS1lZmZlY3RzIGFyZzowIDxwYXJtX2RlY2wgMHhmZmZmZjc2 YjZmODAgbjE+Pj4NCj4+ICAgICAgICBhcmc6MSA8bm9wX2V4cHIgMHhmZmZmZjU2ZGM2MDAgdHlw ZSA8aW50ZWdlcl90eXBlIDB4ZmZmZmY1N2MwMDAwIHNpemV0eXBlPg0KPj4gICAgICAgICAgICBz aWRlLWVmZmVjdHMNCj4+ICAgICAgICAgICAgYXJnOjAgPHNhdmVfZXhwciAweGZmZmZmNTZkYzU4 MCB0eXBlIDxpbnRlZ2VyX3R5cGUgMHhmZmZmZjU3YzA1ZTggaW50Pg0KPj4gICAgICAgICAgICAg ICAgc2lkZS1lZmZlY3RzIGFyZzowIDxwYXJtX2RlY2wgMHhmZmZmZjc2YjcwMDAgbjI+Pj4+DQo+ PiAgICBhcmc6MSA8aW50ZWdlcl9jc3QgMHhmZmZmZjU2YzEwYzggdHlwZSA8aW50ZWdlcl90eXBl IDB4ZmZmZmY1N2MwMDAwIHNpemV0eXBlPiBjb25zdGFudCA0Pj4NCj4+IA0KPj4gDQo+PiBXaXRo b3V0IHVuc2hhcmVfZXhwciB0byB0aGlzIHNpemVfZXhwLCB0aGUgYWJvdmUgVFlQRV9TSVpFX1VO SVQgbm9kZSBjb250YWluaW5nIFNBVkVfRVhQUnMNCj4+IGlzIGdpbXBmbGlmaWVkIHRvIGV4cHJl c3Npb25zIHdpdGggU1NBX05BTUUgZHVyaW5nIGdpbXBsaWZpY2F0aW9uLiAgKFRoaXMgaXMgdW5h Y2NlcHRlZCBieSBMVE8pLg0KPj4gDQo+PiBBZGRpbmcgYW4gdW5zaGFyZV9leHByIChzaXplX2V4 cCkgcmVzb2x2ZWQgdGhpcyBwcm9ibGVtLg0KPj4gDQo+PiBBbHRob3VnaCBJIHN0aWxsIHRoaW5r IHRoYXQgdGhlcmUgbWlnaHQgYmUgcG90ZW50aWFsIGlzc3VlIHdpdGggdGhlIGdpbXBmbGljYXRp b24gb2YgU0FWRV9FWFBScywgSSBkYXJlIG5vdA0KPj4gdG8gbW9kaWZ5IHRoYXQgcGFydCBvZiB0 aGUgY29kZS4NCj4+IA0KPj4gQXQgdGhpcyBtb21lbnQsIEkgd2lsbCBhZGQgdW5zaGFyZV9leHBy IHRvIHRoZSByb3V0aW5lIOKAnHBvaW50ZXJfaW50X3N1beKAnSB0byB3b3JrYXJvdW5kIHRoaXMg aXNzdWUuDQo+IA0KPiBJdCdzIG9ubHkgYSB3b3JrYXJvdW5kIG1pbmQgeW91LiAgVGhlIGJ1ZyBp cyB0aGF0IHRoZSBmcm9udGVuZCBmYWlscw0KPiB0byBlbWl0IGEgREVDTF9FWFBSIHdoaWNoIHdv dWxkDQo+IHRyaWdnZXIgYm90aCB1bnNoYXJpbmcgYW5kIHByb3BlciBnaW1wbGlmaWNhdGlvbiBv ZiB0aGUgdHlwZSBzaXplLg0KDQpGb3IgYSBzaW1wbGUgdGVzdGluZyBjYXNlOg0KDQokIGNhdCB0 ZXN0LmMNCnN0cnVjdCBhbm5vdGF0ZWQgew0KICB1bnNpZ25lZCBpbnQgZm9vOw0KICBjaGFyIGI7 DQogIGludCBhcnJheVtdIF9fYXR0cmlidXRlX18oKGNvdW50ZWRfYnkgKGZvbykpKTsNCn07DQpl eHRlcm4gc3RydWN0IGFubm90YXRlZCAqIGFsbG9jX2J1ZiAoaW50IGluZGV4KTsNCg0Kc3RhdGlj IHZvaWQgYmFyICgpDQp7DQogIHN0cnVjdCBhbm5vdGF0ZWQgKnAyID0gYWxsb2NfYnVmICgxMCk7 DQogIHAyLT5hcnJheVsxMV0gPSAwOw0KICByZXR1cm47DQp9DQoNClRoZSBDIEZFIGdlbmVyYXRl cyB0aGUgZm9sbG93aW5nIElSOg0KDQpbb3BjQHFpbnpoYW8tb2w4dTMteDg2IDEwODg5Nl0kIGNh dCB0ZXN0LmMuMDA1dC5vcmlnaW5hbCAgIA0KOzsgRnVuY3Rpb24gYmFyIChudWxsKQ0KOzsgZW5h YmxlZCBieSAtdHJlZS1vcmlnaW5hbA0KDQoNCnsNCiAgc3RydWN0IGFubm90YXRlZCAqIHAyID0g YWxsb2NfYnVmICgxMCk7DQoNCiAgICBzdHJ1Y3QgYW5ub3RhdGVkICogcDIgPSBhbGxvY19idWYg KDEwKTsNCiAgKiguQUNDRVNTX1dJVEhfU0laRSAoKGludCAqKSAmcDItPmFycmF5LCAmcDItPmZv bywgMSwgMzIsIC0xKSArIDQ0KSA9IDA7DQogIHJldHVybjsNCn0NCg0KRG8geW91IHNlZSBhbnkg b2J2aW91cyBJUiBpc3N1ZSBpbiB0aGUgYWJvdmU/IERvIEkgbWlzcyB0byBnZW5lcmF0ZSBhbnkg REVDTF9FWFBSIGluIHRoZSBhYm92ZSBJUj8NCg0KVGhhbmtzLg0KDQpRaW5nDQoNCg0KSSBjb21w YXJlZCBpdCB3aXRoIHRoZSBmb2xsb3dpbmcgdGVzdGluZyBjYXNlIHdpdGhvdXQgdGhlIOKAnGNv dW50ZWQtYnnigJ0gYW5ub3RhdGlvbiANCmFuZCB1c2UgYW4gdXNlci1kZWZpbmVkIOKAnGFjY2Vz c193aXRoX3NpemXigJ0gZnVuY3Rpb24sIFRoZSBJUiBsb29rcyBsaWtlIGV4YWN0bHkgdGhlIHNh bWU6DQoNCiQgY2F0IHRlc3RfMS5jDQpzdHJ1Y3QgYW5ub3RhdGVkIHsNCiAgdW5zaWduZWQgaW50 IGZvbzsNCiAgY2hhciBiOw0KICBpbnQgYXJyYXlbXTsNCn07DQpleHRlcm4gc3RydWN0IGFubm90 YXRlZCAqYWxsb2NfYnVmIChpbnQpOw0KZXh0ZXJuIGludCAqYWNjZXNzX3dpdGhfc2l6ZSAoaW50 ICogcmVmLCB1bnNpZ25lZCBpbnQgKiBzaXplLCBpbnQgYSwgaW50IGIsIGludCBjKTsNCg0Kc3Rh dGljIHZvaWQgYmFyICgpDQp7DQogIHN0cnVjdCBhbm5vdGF0ZWQgKnAyID0gYWxsb2NfYnVmICgx MCk7DQogIGFjY2Vzc193aXRoX3NpemUgKChpbnQgKikgJnAyLT5hcnJheSwgJnAyLT5mb28sIDEs IDMyLCAtMSlbMTFdID0gMDsNCiAgcmV0dXJuOw0KfQ0KW29wY0BxaW56aGFvLW9sOHUzLXg4NiAx MDg4OTZdJCBjYXQgdGVzdF8xLmMuMDA1dC5vcmlnaW5hbA0KDQo7OyBGdW5jdGlvbiBiYXIgKG51 bGwpDQo7OyBlbmFibGVkIGJ5IC10cmVlLW9yaWdpbmFsDQoNCg0Kew0KICBzdHJ1Y3QgYW5ub3Rh dGVkICogcDIgPSBhbGxvY19idWYgKDEwKTsNCg0KICAgIHN0cnVjdCBhbm5vdGF0ZWQgKiBwMiA9 IGFsbG9jX2J1ZiAoMTApOw0KICAqKGFjY2Vzc193aXRoX3NpemUgKChpbnQgKikgJnAyLT5hcnJh eSwgJnAyLT5mb28sIDEsIDMyLCAtMSkgKyA0NCkgPSAwOw0KICByZXR1cm47DQp9DQoNCg0KDQo+ IA0KPj4gTGV0IG1lIGtub3cgaWYgeW91IGhhdmUgYW55IGNvbW1lbnQgYW5kIHN1Z2dlc3Rpb24u DQo+PiANCj4+IFRoYW5rcyBhIGxvdC4NCj4+IA0KPj4gUWluZw0KPj4gDQo+Pj4+IA0KPj4+Pj4g DQo+Pj4+PiBRaW5nDQo+Pj4+PiANCj4+Pj4+PiANCj4+Pj4+Pj4gVGhhbmtzIGEgbG90IGZvciB0 aGUgaGVscC4NCj4+Pj4+Pj4gDQo+Pj4+Pj4+IFFpbmcNCg0KDQo=