Received: by 2002:a05:6358:3188:b0:123:57c1:9b43 with SMTP id q8csp3393691rwd; Sat, 10 Jun 2023 07:01:32 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ45Q4W2hCYHJaTTBB2IU+Msmd/TveInP1wZ+iOf4n4gGBRlwIOAIr0gs4amGtWl29ViqT3r X-Received: by 2002:a17:902:6b8b:b0:1b1:b50c:e330 with SMTP id p11-20020a1709026b8b00b001b1b50ce330mr1864801plk.2.1686405691311; Sat, 10 Jun 2023 07:01:31 -0700 (PDT) Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id v2-20020a170902d08200b001adb9d5e1d2si192931plv.130.2023.06.10.07.00.54; Sat, 10 Jun 2023 07:01:31 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-wireless-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@mediatek.com header.s=dk header.b=uEdGDksC; dkim=fail header.i=@mediateko365.onmicrosoft.com header.s=selector2-mediateko365-onmicrosoft-com header.b=q6Luvaq4; arc=fail (signature failed); spf=pass (google.com: domain of linux-wireless-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-wireless-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=mediatek.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230311AbjFJNty (ORCPT + 61 others); Sat, 10 Jun 2023 09:49:54 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53882 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232001AbjFJNtx (ORCPT ); Sat, 10 Jun 2023 09:49:53 -0400 Received: from mailgw02.mediatek.com (unknown [210.61.82.184]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CD9ABBC for ; Sat, 10 Jun 2023 06:49:45 -0700 (PDT) X-UUID: a3f91c28079511eeb20a276fd37b9834-20230610 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=MIME-Version:Content-Transfer-Encoding:Content-ID:Content-Type:In-Reply-To:References:Message-ID:Date:Subject:CC:To:From; bh=Nq5a7MgRr1ABSmUJj+mLZiXm5nbQ5hdgx7hpBv2qq5s=; b=uEdGDksCzuk3zRUyohGf83dq3xeoQtGiSd7GRQFeCfrOk6A7GrHqGK4wSdejMUjkKCXvo/yB+YU8Kg5aAK8zRZwJx7B5l+VjRKdWMq5SBDEh8l36dSIt0wpD3WYrspxUZ1HiB0zoRPXokIDF+Es2wBZl2UBzn8YI3K3VlnHIRIw=; X-CID-P-RULE: Release_Ham X-CID-O-INFO: VERSION:1.1.26,REQID:ad532942-e38b-4493-859e-2dbeb5889d88,IP:0,U RL:0,TC:0,Content:0,EDM:0,RT:0,SF:45,FILE:0,BULK:0,RULE:Release_Ham,ACTION :release,TS:45 X-CID-INFO: VERSION:1.1.26,REQID:ad532942-e38b-4493-859e-2dbeb5889d88,IP:0,URL :0,TC:0,Content:0,EDM:0,RT:0,SF:45,FILE:0,BULK:0,RULE:Release_Ham,ACTION:r elease,TS:45 X-CID-META: VersionHash:cb9a4e1,CLOUDID:8951013e-de1e-4348-bc35-c96f92f1dcbb,B ulkID:230610001557551Q2D5O,BulkQuantity:29,Recheck:0,SF:29|28|17|19|48|102 ,TC:nil,Content:0,EDM:-3,IP:nil,URL:11|1,File:nil,Bulk:40,QS:nil,BEC:nil,C OL:0,OSI:0,OSA:0,AV:0,LES:1,SPR:NO X-CID-BVR: 0,NGT X-CID-BAS: 0,NGT,0,_ X-CID-FACTOR: TF_CID_SPAM_OBB,TF_CID_SPAM_ULN,TF_CID_SPAM_SNR,TF_CID_SPAM_SDM, TF_CID_SPAM_FAS,TF_CID_SPAM_FSD X-UUID: a3f91c28079511eeb20a276fd37b9834-20230610 Received: from mtkmbs10n1.mediatek.inc [(172.21.101.34)] by mailgw02.mediatek.com (envelope-from ) (Generic MTA with TLSv1.2 ECDHE-RSA-AES256-GCM-SHA384 256/256) with ESMTP id 1271673335; Sat, 10 Jun 2023 21:49:37 +0800 Received: from mtkmbs10n2.mediatek.inc (172.21.101.183) by mtkmbs13n2.mediatek.inc (172.21.101.108) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.26; Sat, 10 Jun 2023 21:49:36 +0800 Received: from APC01-PSA-obe.outbound.protection.outlook.com (172.21.101.237) by mtkmbs10n2.mediatek.inc (172.21.101.183) with Microsoft SMTP Server id 15.2.1118.26 via Frontend Transport; Sat, 10 Jun 2023 21:49:36 +0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=V+4ud9IEwKuQFt0E5ep+r7C4p+btROcRjy5GuLKJv2pDX/EE3jrDS2ZbxN6jt8UBmAOj6TfYT19yYEVEKJeJWOV76DhRsJ11gHdnRXvKkNTd9j1HGCF1YuLZSipFdTuT9MRlek4yVPpPvUmHybYP9KFTRzv2C5Jd2S93uuHOQwrKzAaz3CI1zOQKRDceyibdTz5Iq8d7F0zJGklukOBK7qJUgDK552QCQ7jgtJwmEX1PFEh4rK12CDlEltqCo/FpJKW4lcnBxeox6SuP0N1iEGEWC/g8gbQZZJ16KS6QB+r8erOHSmYSGsLElpy40KjJpZKNcOWU0qC0QUyfo65SUw== 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=Nq5a7MgRr1ABSmUJj+mLZiXm5nbQ5hdgx7hpBv2qq5s=; b=j96WPaBHQyEIk+0rRVKdChXeLcqBXfCRqZeAqpf+3Zt5fG1JvH/chbWK577DcMqtwHHwMrDx2cQruMSWesiCl16mFsvyort8hM9uWohV+Fw7HbX6lXFWAkkSskY+3Hc9E4rSeU2Rd6rqZ80rBKEM/vYLdmYGtUqmPD5oL1vPheRyQHX/9scdyXLeW20kBpsYSP83MWTyJhbW94GFcPCi2BAK601icivC3ShI9DID76L+Avt6xkm/Wtm8t5M3uQk4e1rOaTR8Ynz2mlnOBGxGzDLJvzk2LrVrs5Uucld04qtWnhZjzS7d4Yxi5eU5+2p6+qqRB/F/0SaSadzAOu+gkQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mediatek.com; dmarc=pass action=none header.from=mediatek.com; dkim=pass header.d=mediatek.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mediateko365.onmicrosoft.com; s=selector2-mediateko365-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Nq5a7MgRr1ABSmUJj+mLZiXm5nbQ5hdgx7hpBv2qq5s=; b=q6Luvaq41wt2CxkUJzevPXMz9fDONfwy2C0BkNiDRFMPWoJbFzscwnUN/MHaSbYtWwLwBIgoDTjRH/9klyv0G37VibnHYF6CPxCtQdYXK1nlefFZ03mnEd0qdGaUX6bK1FU314gG4uot6VPEp2xOlJgIGauwKBTJSrxnDhFH71M= Received: from SEZPR03MB6468.apcprd03.prod.outlook.com (2603:1096:101:47::9) by SEZPR03MB7702.apcprd03.prod.outlook.com (2603:1096:101:10d::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6455.32; Sat, 10 Jun 2023 13:49:33 +0000 Received: from SEZPR03MB6468.apcprd03.prod.outlook.com ([fe80::662b:189f:a0dd:6734]) by SEZPR03MB6468.apcprd03.prod.outlook.com ([fe80::662b:189f:a0dd:6734%5]) with mapi id 15.20.6455.037; Sat, 10 Jun 2023 13:49:32 +0000 From: shayne.chen@mediatek.com To: "lorenzo@kernel.org" CC: "linux-wireless@vger.kernel.org" , "lorenzo.bianconi@redhat.com" , "nbd@nbd.name" , =?utf-8?B?RXZlbHluIFRzYWkgKOiUoeePiumIuik=?= , Ryder Lee , =?utf-8?B?RGVyZW4gV3UgKOatpuW+t+S7gSk=?= Subject: Re: [PATCH v2 15/15] wifi: mt76: connac: add connac3 mac library Thread-Topic: [PATCH v2 15/15] wifi: mt76: connac: add connac3 mac library Thread-Index: AQHZmqrcRFMjzjTTTkKq81fe2frDeq+CpeQAgAAFVgCAAAEZgIAAAdsAgAAXFdCAAAr1AIAABP4AgAD76YCAAD5NAA== Date: Sat, 10 Jun 2023 13:49:32 +0000 Message-ID: <02adfd744e7aa9ca33015704b48d1e1c29c9a2c7.camel@mediatek.com> References: <5010e5e508e89041451288659390fde5ded94db5.camel@mediatek.com> <82971c76999ae90be44a524fb95141c5051a9ba0.camel@mediatek.com> <3cae89c45b0f17eaab20876eb50572ef202f92bc.camel@mediatek.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: Evolution 3.28.5-0ubuntu0.18.04.2 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=mediatek.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: SEZPR03MB6468:EE_|SEZPR03MB7702:EE_ x-ms-office365-filtering-correlation-id: 60cb8156-c9fc-4fc2-3092-08db69b984f2 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 4TqXd83HJ1tsOoBB5JRMBPJKieaZIwr7DNRfh9ljNbMMq8UCqMtnwRwxlkTyhygK3HpHInqclrOxzet3GVu/ycAMLdHRYaT7cUdB3kcAWVMKAGyJtJMWPn++nECnA3+Kexb5i/mGmwM3Xs+YQG6MVKlj5ADK39vDPO71NE0QQhr2Tj4ixRgBy92PV4WW2fPCuROv2z6k8CyW35tqDw6b74qjgbmmiqrDuRmsYwS99jIzFJjVvyYocxnX/9/3Tvd0sPPSUbDenZ4olEnNZb+sv1DLOf3zZhlaOcFKWN6mG/IwFbSvh3S5eVdHg5zLfxRShxhM8tUgFzN7QJeCiHLg6bQqT1evEWI4hITfvAX9qkNqSZr4OifMJ4Nb0mCtgNt1L4Ap9InPjjxjFCIFdFI/zTNua4gcJZj9df2Qgk74HiCuBVtOfIIbC4754j0iBhN11i1Bkj3/zlyS9N7PmesULXxYVPVgddjKTLkr4HTwL+ddZPyZjn65Yw96lAcrvN0tO4WTryQ90LpUZl6I/Co9/j7tOJc0tZDsxe4PjHGI1c/nOfJLjyEOiwjnWZIUK5t6dgnUrlNOeObcn1UlVRCTK7jltXm//GdfNNsgjGjbnemNZwnjSPrLbrpEZt6S23TgQFDGqEiH0Uj2ah5QAbwdEdgOTyRrMoYTOKWLZ/1xx9eVrRT9MS9WyCTU1WriE38foDadxV0krMKYTpNNbQ0NO9tXiqqrt7Vmh6JgLs26hpU= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SEZPR03MB6468.apcprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(4636009)(346002)(136003)(376002)(366004)(39860400002)(396003)(451199021)(2906002)(85182001)(30864003)(36756003)(122000001)(38100700002)(38070700005)(66556008)(54906003)(66946007)(6486002)(478600001)(91956017)(6512007)(8936002)(76116006)(64756008)(41300700001)(8676002)(4326008)(66476007)(316002)(71200400001)(66446008)(2616005)(6916009)(83380400001)(107886003)(26005)(6506007)(186003)(86362001)(5660300002)(99106002)(579004)(559001)(309714004);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?YnVLS3ZDQmVPcHhRQ3MxWXdsdENXejhPZnIvNVNDSDFJbm1vc0M4cUw3dFF6?= =?utf-8?B?TWZZankwSUc4TC9GbWdMbjBXSjI0STNZN25rUE0vYVlZbWpWRytxWFJJajI5?= =?utf-8?B?VDNVM1l0MFZxSHA1Q0s1Q3FEcFZnb0dpWVROSUVYQ1dRY0h5WVNRSVlWL3ZK?= =?utf-8?B?OUtWM3FLTkE5MHBPdXNzaDZ3Zk90NFQrbDY0VTI4VVhjck9lQ0VSbVZ4VUVu?= =?utf-8?B?bW1iMmNNbmc5eDZSSnRseGVTeTJXUkhSSDlrY09uQ0VRYUJNZ01iUmhJYjkv?= =?utf-8?B?b1FTUVNhZHlPTXdIbXVKR0kyckduWVRqb2dMZEZNL1RNOWQzN2REQTl2R3gr?= =?utf-8?B?V2hMemtmaGZOdVJJL0FrdmtSb0dNb3RxTHRiU0VYYUlidm1ydWxQU0ZjOUl5?= =?utf-8?B?MXlrdHdsWWhZVUJGY2x6NmtBdng5eGc1MEprUkpRWkVqbGF0Nnp5ZVphSG05?= =?utf-8?B?Y0ZHdDhVekljRDFacTFaWE4wSlZPN0JKVWNRYWJiUDh0VzFvZ3V3OHFTZEND?= =?utf-8?B?c1JydGx0eHFROGVmZXpIWG00c3BqM2Q1OVRFTFJTWmc1TkJVeWtKNDNLWWF0?= =?utf-8?B?aTNDYlk0bVNZRGdvNUJGQjVTUjA0eTVEVlRpQ3VnMzN4STJ4VXBjU2ZPYTli?= =?utf-8?B?QSt1a0NrYXhzR0ExbVN1OS9pRWRITWxiSFBYMThBV0ZvcXRKU2pZSFNBa21X?= =?utf-8?B?NDU3ZHFkbnlWTUE3VWNaeHhIQnVlVFBvQml2NVduUmN4a0piYVR5VmprbE51?= =?utf-8?B?Y3l5TU00YW5XcWY4U1gwSnpPQW53N2JUQi81ejNOV0hCaU9xN2RSc28zVmxO?= =?utf-8?B?dm5IcWlMcUJMckhGazAzSEJMdmg4UTNsYlM0dUw2RUdYUk9GWEhwUVZrMENk?= =?utf-8?B?NTEwU2FYbXBuS2FCRVVuZXhBRkZuNVh6TVJBQTJEQXJQY2lTc1oxa0Yxb29P?= =?utf-8?B?VmZpakdiaExrNkc4WlkzTU5ST2tkZkVUSld3T3lHUlZnb1lKT0hiUzIrQjV4?= =?utf-8?B?VmQwTjJPNUw0OGYrV1BMcnZmamhHT0ZMejJJZ1RrVFhDNU92UzBHMnJoTlhm?= =?utf-8?B?SFNOSXpBQXdQcXR3VWQ5WmNkUjc3cklsbmNQa3ZIZlVYdnZHZTJoUjNFTVhy?= =?utf-8?B?UHNLUUd0eXg0ckxsbzNuTThHV0FyUm4zQ2c1SEFQdzNWYlZkY1AvRGx0Zk9o?= =?utf-8?B?aFV4Q1cxTnEzMnhpVG9RKzVLN0s3aXFYWU9UQVdjZEdLTDdZbFRtTyt4WTdX?= =?utf-8?B?bEdURVJ4dHlBUURqM0tzRXBteFZtaWEyNkx0OCtpc1YzWTBTblhXZ2V6VTNB?= =?utf-8?B?QUk5TUh2dVBNNUNuUDRUbkNuWFFOa09nSFphRncrdXpPL3RoTndwdFdXekdt?= =?utf-8?B?eW4vSC85aGpUU2ludk1Hcnk5R0NqUG81ZFNieHFaYllqaWU3VkQxRDJIZ3RN?= =?utf-8?B?ckwwUUJkRkJpRnhlREFHY1E1eWhzbUZRTXA2dW9wb2k1WkNVeUtEd2ZpMVg5?= =?utf-8?B?TjFaczdUWlQ2M2tHcmV2eUpWYUZxQWFJblF3aSsvMVNUQm9NUWtNSU5QdVd0?= =?utf-8?B?NWJqaFJCK1lwYU1HYkNSTS81RTVQeU1PQlhpRTBCbmFPT3F1UnJIWjdQSkpi?= =?utf-8?B?MVo5c3dFanJDczU1N0IrSGl1bFhmY1lDWklQUy9CWTNaTDdUM2VqdXcyYWIr?= =?utf-8?B?dGFyL3lSWjgraThzQm1LMkdaMVgrZ2hFYjY0TE5YRnJ3M2dFMHNlZU1TQ2Nt?= =?utf-8?B?cnFPM3lFek43K0tOL1l3bk95K3ZnVy9kMmhGcG5lQU1iWk9oRWl3YjZIN1My?= =?utf-8?B?Z1FaeGFvU0xxNXlKNHJRMmtyR2drQkw0aW1acHpyZFpoeXN2MnBYYmNFc0xr?= =?utf-8?B?czRZVW9wYktJVTNnVXBJTnNZVm5jamo2ay9MRENoVkdIalZMVVFGN2gvbXph?= =?utf-8?B?Q0ZhVjBJL0RHbXhwb0ZPZkRSa1dwN0dPNDJkb0ZlaUxuNEdEdEVyZWcrdjZq?= =?utf-8?B?OGx6UlVIUzhZem1xZ0V0NUZtQ1N4QjVPaDBrM1I1TFhJWEx0T0IyTzY3TmZI?= =?utf-8?B?Q0dYbGFuMkt1c0Y0N1Q3SVE4V2p5RW1UenNJd3QyNjFLb0hyUFYxSytsZUpP?= =?utf-8?B?US9oV0tURWN4bXo0dWVvZElUdDNudVlXbUxEbUo5UFhlRHIzZGtWQWRqdCs3?= =?utf-8?B?MFE9PQ==?= Content-Type: text/plain; charset="utf-8" Content-ID: <33B8383E0469E14FBFA396FF34116F79@apcprd03.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SEZPR03MB6468.apcprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 60cb8156-c9fc-4fc2-3092-08db69b984f2 X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Jun 2023 13:49:32.3297 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a7687ede-7a6b-4ef6-bace-642f677fbe31 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: lYNNjEzBw2HjvCU0p12LSJxIJIoNQH3NqWHN6eOKXpKomCYce6xzDftm5pNfMEH9wWjxgWP/pen+Dgs6/9W6McqEQNvkZuDDIo9gVKgZ4m8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SEZPR03MB7702 X-MTK: N X-Spam-Status: No, score=-1.3 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RDNS_NONE,SPF_HELO_PASS, SPF_PASS,T_SCC_BODY_TEXT_LINE,UNPARSEABLE_RELAY,URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org T24gU2F0LCAyMDIzLTA2LTEwIGF0IDEyOjA2ICswMjAwLCBsb3JlbnpvQGtlcm5lbC5vcmcgd3Jv dGU6DQo+ID4gT24gU2F0LCAyMDIzLTA2LTEwIGF0IDAyOjQ3ICswODAwLCBTaGF5bmUgQ2hlbiB3 cm90ZToNCj4gPiA+ID4gPiBPbiBGcmksIDIwMjMtMDYtMDkgYXQgMTg6MzQgKzAyMDAsIA0KPiA+ ID4gPiA+IGxvcmVuem8uYmlhbmNvbmlAcmVkaGF0LmNvbQ0KPiA+ID4gPiANCj4gPiA+ID4gd3Jv dGU6DQo+ID4gPiA+ID4gPiBPbiBKdW4gMDksIFJ5ZGVyIExlZSB3cm90ZToNCj4gPiA+ID4gPiA+ ID4gT24gRnJpLCAyMDIzLTA2LTA5IGF0IDEwOjE1ICswMjAwLCBMb3JlbnpvIEJpYW5jb25pDQo+ ID4gPiA+ID4gPiA+IHdyb3RlOg0KPiA+ID4gPiA+ID4gPiA+ICAgDQo+ID4gPiA+ID4gPiA+ID4g RXh0ZXJuYWwgZW1haWwgOiBQbGVhc2UgZG8gbm90IGNsaWNrIGxpbmtzIG9yIG9wZW4NCj4gPiA+ ID4gDQo+ID4gPiA+IGF0dGFjaG1lbnRzIA0KPiA+ID4gPiA+ID4gPiA+IHVudGlsIHlvdSBoYXZl IHZlcmlmaWVkIHRoZSBzZW5kZXIgb3IgdGhlIGNvbnRlbnQuDQo+ID4gPiA+ID4gPiA+ID4gIElu dHJvZHVjZSBjb25uYWMzX21hYyBpbiBtdDc2X2Nvbm5hYyBsaWJyYXJ5IHRvIHJldXNlDQo+ID4g PiA+ID4gPiA+ID4gbWFjDQo+ID4gPiA+IA0KPiA+ID4gPiBjb2RlIA0KPiA+ID4gPiA+ID4gPiA+ IHNoYXJlZCBiZXR3ZWVuIFdpRmk3IGNoaXBzZXRzLg0KPiA+ID4gPiA+ID4gPiA+IA0KPiA+ID4g PiA+ID4gPiA+IFNpZ25lZC1vZmYtYnk6IExvcmVuem8gQmlhbmNvbmkgPGxvcmVuem9Aa2VybmVs Lm9yZz4NCj4gPiA+IA0KPiA+ID4gSGkgTG9yZW56bywNCj4gDQo+IEhpIFNoYXluZSwNCj4gDQpI aSBMb3JlbnpvLA0KDQo+ID4gPiANCj4gPiA+IEkgZG9uJ3QgdGhpbmsgaXQncyBhIGdvb2QgaWRl YSB0byBzdGFydCBzaGFyaW5nIG1hYyBvciBtY3UNCj4gPiA+IGZ1bmN0aW9ucw0KPiA+ID4gZm9y IGFsbCBXaUZpNyBjaGlwc2V0cyBhdCBzdWNoIGVhcmx5IHN0YWdlLg0KPiA+ID4gDQo+ID4gPiBU aGUgZHJpdmVyIGlzIHN0aWxsIHVuZGVyIG1hbnkgcHJvY2Vzc2VzIG9mIGJ1ZyBmaXhpbmcsDQo+ ID4gPiBwZXJmb3JtYW5jZQ0KPiA+ID4gdHVuaW5nLCBhbmQgbmV3IGZlYXR1cmVzIGRldmVsb3Bt ZW50Lg0KPiA+ID4gQ2hpcHNldHMgdGhhdCBtYWlubHkgdXNlZCBmb3IgQVAgb3IgU1RBIHNlZ21l bnQgaGF2ZSBkaWZmZXJlbnQNCj4gPiA+IGRlc2lnbnMNCj4gPiA+IGFuZCBzaG91bGQgZmFjZSBk aWZmZXJlbnQgcHJvYmxlbXMuDQo+ID4gPiANCj4gPiA+IFN0YXJ0IHNoYXJpbmcgdGhlIGNvZGUg YXQgZWFybHkgc3RhZ2Ugd2lsbCBicmVhayB0aGUNCj4gPiA+IGluZGVwZW5kZW5jZSwNCj4gPiA+ IG1ha2UNCj4gPiA+IGl0IG1vcmUgaGFyZCB0byBkZXZlbG9wIGFuZCBkbyB2ZXJpZmljYXRpb25z LCBzaW5jZSBtYW55IGNoYW5nZXMNCj4gPiA+IHdpbGwNCj4gPiA+IGFmZmVjdCBjaGlwc2V0cyBv ZiBib3RoIHNlZ21lbnRzLg0KPiANCj4gbXkgZ29hbCBpcyB0byBzaGFyZSB0aGUgY29kZSB0aGF0 IGhhcmRseSB3aWxsIGJlIGNoYW5nZWQgKG9yIHRoYXQNCj4gd2lsbCBoYXZlDQo+IHZlcnkgZmV3 IGNoYW5nZXMgaW4gdGhlIGZ1dHVyZSwgaS5lLiBJIGhhdmUgbm90IGNoYW5nZWQgbWN1DQo+IGNv ZGViYXNlKS4NCj4gSWYgeW91IGNvbnNpZGVyIGZvciBleGFtcGxlIHRoZSByb3V0aW5lcyBiZWxv dzoNCj4gDQo+IC0gbXQ3Nl9jb25uYWMqX21hY193cml0ZV90eHdpXzgwMjMoKQ0KPiAtIG10NzZf Y29ubmFjKl9tYWNfd3JpdGVfdHh3aV84MDIxMSgpDQo+IC0gbXQ3Nl9jb25uYWMqX21hY19hZGRf dHhzX3NrYigpDQo+IC0gbXQ3Nl9jb25uYWMqX3R4d2lfZnJlZSgpDQo+IC0gLi4uDQo+IA0KPiB0 aGV5IGFyZSB0aGUgc2FtZSBmb3IgbXQ3NjE1L210NzY2MywgbXQ3OTIxL210NzkxNSwgbXQ3OTk2 Ly4uICwgd2hhdA0KPiBpcw0KPiBjaGFuZ2luZyBpcyBqdXN0IHJlZ2lzdGVyIG1hcCBiZXR3ZWVu IHZlcnNpb25zIChlLmcuIG10NzYxNS9tdDc2NjMNCj4gYW5kDQo+IG10NzkxNS9tdDc5MjEpLiBJ IHRoaW5rIGl0IGlzIG5vdCBhIGdvb2QgaWRlYSB0byBjb3B5LXBhc3RlIHRoZSBjb2RlDQo+IGJl Y2F1c2UgaXQgd2lsbCBqdXN0IG1ha2UgdGhlIGNvZGUgbXVjaCBoYXJkZXIgdG8gbWFpbnRhaW4s IGFuZCB0aGlzDQo+IHdpbGwgYmUNCj4gbW9yZSBkaWZmaWN1bHQgdG8gYWRkcmVzcyBpbiB0aGUg ZnV0dXJlLg0KPiBJZiB5b3UgY29uc2lkZXIgdGhlIGNvbW1pdCBiZWxvdzoNCj4gDQo+IGNvbW1p dCBlYWQ0NDkwMjNkM2FjYjE0MjQ4ODZkN2I4Y2M2NzJlZDY5YmRkMjdlDQo+IEF1dGhvcjogTG9y ZW56byBCaWFuY29uaSA8bG9yZW56b0BrZXJuZWwub3JnPg0KPiBEYXRlOiAgIFN1biBNYXkgMjgg MTI6Mjg6NDkgMjAyMyArMDIwMA0KPiANCj4gICAgIHdpZmk6IG10NzY6IG10Nzk5NjogZml4IHBv c3NpYmxlIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBpbg0KPiBtdDc5OTZfbWFjX3dyaXRlX3R4 d2koKQ0KPiANCj4gICAgIEZpeCBwb3NzaWJsZSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2Ugb24g bXZpZiBwb2ludGVyIGluDQo+ICAgICBtdDc5OTZfbWFjX3dyaXRlX3R4d2kgcm91dGluZS4NCj4g DQo+IERlcmVuIHdpbGwgbmVlZHMgdG8gbW9uaXRvciB0aGUgTUwgYW5kIGFwcGx5IHRoZSBzYW1l IGZpeCBmb3IgdGhlDQo+IG90aGVyIFdpRmk3DQo+IGNoaXBzZXQgdG9vLg0KPiANCj4gTW9yZW92 ZXIgSSBrZXB0IG10Nzk5Ni9tYWMue2MsaH0gdG8gcHV0IHRoZSBwZXItY2hpcHNldCBjb2RlYmFz ZS4NCj4gSWYgeW91IHRoaW5rIE1UNzZfQ09OTkFDM19CQVNJQ19SQVRFU19UQkwxMSBhbmQNCj4g TVQ3Nl9DT05OQUMzX0JFQUNPTl9SQVRFU19UQkwyNQ0KPiBhcmUgc2Vuc2libGUsIHdlIGNhbiBw dXQgdGhlbSBpbiBtdDc5OTYvbWFjLmgNCg0KSSB1bmRlcnN0YW5kIHlvdXIgY29uY2VybiwgYnV0 IGlmIHRoZSBjb2RlIHN0YXJ0cyB0byBiZSBzaGFyZWQgYXQgZWFybHkNCnN0YWdlLCB3ZSBtYXkg bmVlZCB0byBhZGQgc2V2ZXJhbCBpc19tdDc5OTYoKSB0byBzcGxpdCBkaWZmZXJlbnQgcGFydHMN CnRlbXBvcmFyaWx5IG9yIHBlcm1hbmVudGx5LCBzaW5jZSB3ZSBoYXZlIGRpZmZlcmVudCBkZXZl bG9wbWVudA0KcHJvY2VkdXJlIGFuZCBmb2N1c2luZywgb24gZGV2aWNlcyBvZiBkaWZmZXJlbnQg c2VnZW1lbnRzLg0KDQpCZWxvdyBhcmUgc29tZSBleGFtcGxlcyBJIGNvbmNlcm46DQotIFdlJ3Jl IGRvaW5nIHNvbWUgdGVzdHMgYWJvdXQgc3dpdGNoaW5nIGFsbCBUWFMgdG8gUFBEVSBUWFMsIGFu ZCB0aGUNCmNvZGUgaW4gbWFjX2FkZF90eHNfc2tiKCkgbmVlZHMgdG8gYmUgY2hhbmdlZC4gSWYg ZGV2aWNlcyBvZiBTVEENCnNlZ2VtZW50IGRvbid0IHdhbnQgdG8gY2hhbmdlIG9yIHdvbid0IHN3 aXRjaCBpbiBzaG9ydCB0aW1lLCB3ZSBtYXkNCm5lZWQgdG8gYWRkIGlzX210Nzk5NigpIHRvIHNw bGl0Lg0KDQotIFdoZW4gYWRkaW5nIE1MTyBzdXBwb3J0LCB0aGVyZSB3aWxsIGJlIG1hbnkgY2hh bmdlcyBpbg0KbWFjX3dyaXRlX3R4d2koKSBhbmQgdHh3aV9mcmVlKCksIGNvbXBhcmVkIHRvIHBy ZXZpb3VzIGNoaXBzZXRzLiBUbw0KcHJldmVudCBmcm9tIGFkZGluZyBzaWRlIGVmZmVjdHMgdG8g b3RoZXIgZGV2aWNlcywgd2UgbWF5IGFsc28gbmVlZCB0bw0KYWRkIGlzX210Nzk5NigpIHRvIHNw bGl0IGNvZGUgYXQgbGVhc3QgZm9yIHRlbXBvcmFyeS4NCg0KSSB3b3VsZCBsaWtlIHRvIGtub3cg aXMgaXQgZmluZSB3aXRoIHlvdSB0byBhZGQgc29tZSBpc19tdDc5OTYoKSB0byB0aGUNCnNoYXJl ZCBjb2RlIGZvciB0aGUgYWJvdmUgZXhhbXBsZXM/DQpJIHRoaW5rIHRoaXMgY291bGQgaGVscCB0 byBiYWxhbmNlIHRoZSB0cmFkZSBvZmYgYmV0d2VlbiBzaGFyaW5nIGNvZGUNCmFuZCBhc3N1cmlu ZyB0aGUgZHJpdmVyIHN0YWJpbGl0eSBvbiBkaWZmZXJlbnQgc2VnZW1lbnRzLg0KDQpUaGFua3Ms DQpTaGF5bmUNCg0KPiANCj4gUmVnYXJkcywNCj4gTG9yZW56bw0KPiANCj4gPiA+IA0KPiA+ID4g VGhhbmtzLA0KPiA+ID4gU2hheW5lDQo+ID4gPiANCj4gPiANCj4gPiAoUmVzZW5kIGZvciBtaXNz aW5nIENDKQ0KPiA+IA0KPiA+ID4gPiA+ID4gPiA+IC0tLQ0KPiA+ID4gPiA+ID4gPiA+ICBkcml2 ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlICAgfCAgIDIgKy0NCj4gPiA+ ID4gPiA+ID4gPiAgLi4uL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmgg IHwgIDE5DQo+ID4gPiA+ID4gPiA+ID4gKyAgDQo+ID4gPiA+ID4gPiA+ID4gLi4uL3dpcmVsZXNz L21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMzX21hYy5jIHwgNzQyDQo+ID4gPiA+ID4gPiA+ID4g KysrKysrKysrKysrKysrKysNCj4gPiA+ID4gPiA+ID4gPiAgLi4uL3dpcmVsZXNzL21lZGlhdGVr L210NzYvbXQ3Nl9jb25uYWMzX21hYy5oIHwgIDE4ICsNCj4gPiA+ID4gPiA+ID4gPiAgLi4uL25l dC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9pbml0LmMgIHwgICA0ICstDQo+ID4gPiA+ ID4gPiA+ID4gIC4uLi9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmMgICB8 IDc2MSArLQ0KPiA+ID4gPiA+ID4gPiA+IC0tLS0NCj4gPiA+ID4gPiA+ID4gPiAtLQ0KPiA+ID4g PiANCj4gPiA+ID4gLS0tLQ0KPiA+ID4gPiA+ID4gPiA+IC0tLS0NCj4gPiA+ID4gPiA+ID4gPiAt LQ0KPiA+ID4gPiA+ID4gPiA+ICAuLi4vbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2 L21haW4uYyAgfCAgIDggKy0NCj4gPiA+ID4gPiA+ID4gPiAgLi4uL25ldC93aXJlbGVzcy9tZWRp YXRlay9tdDc2L210Nzk5Ni9tY3UuYyAgIHwgICA5ICstDQo+ID4gPiA+ID4gPiA+ID4gIC4uLi93 aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tdDc5OTYuaCAgICB8ICAyOCArLQ0KPiA+ID4g PiA+ID4gPiA+ICA5IGZpbGVzIGNoYW5nZWQsIDgwNyBpbnNlcnRpb25zKCspLCA3ODQgZGVsZXRp b25zKC0NCj4gPiA+ID4gDQo+ID4gPiA+ICkgIGNyZWF0ZSANCj4gPiA+ID4gPiA+ID4gPiBtb2Rl IDEwMDY0NCANCj4gPiA+ID4gPiA+ID4gPiBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9t dDc2L210NzZfY29ubmFjM19tYWMuYw0KPiA+ID4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gPiA+ IGRpZmYgLS1naXQNCj4gPiA+ID4gPiA+ID4gPiBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlh dGVrL210NzYvTWFrZWZpbGUNCj4gPiA+ID4gPiA+ID4gPiBiL2RyaXZlcnMvbmV0L3dpcmVsZXNz L21lZGlhdGVrL210NzYvTWFrZWZpbGUNCj4gPiA+ID4gPiA+ID4gPiBpbmRleCA4NGM5OWI3ZTU3 ZjkuLmQ4ZTgwNzljOGI1NCAxMDA2NDQNCj4gPiA+ID4gPiA+ID4gPiAtLS0gYS9kcml2ZXJzL25l dC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlDQo+ID4gPiA+ID4gPiA+ID4gKysrIGIv ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZQ0KPiA+ID4gPiA+ID4g PiA+IEBAIC0yNyw3ICsyNyw3IEBAIG10NzZ4MDItbGliLXkgOj0gbXQ3NngwMl91dGlsLm8NCj4g PiA+ID4gDQo+ID4gPiA+IG10NzZ4MDJfbWFjLm8gDQo+ID4gPiA+ID4gPiA+ID4gbXQ3NngwMl9t Y3UubyBcDQo+ID4gPiA+ID4gPiA+ID4gIA0KPiA+ID4gPiA+ID4gPiA+ICBtdDc2eDAyLXVzYi15 IDo9IG10NzZ4MDJfdXNiX21jdS5vIG10NzZ4MDJfdXNiX2NvcmUubw0KPiA+ID4gPiA+ID4gPiA+ ICANCj4gPiA+ID4gPiA+ID4gPiAtbXQ3Ni1jb25uYWMtbGliLXkgOj0gbXQ3Nl9jb25uYWNfbWN1 Lm8NCj4gPiA+ID4gPiA+ID4gPiBtdDc2X2Nvbm5hY19tYWMubw0KPiA+ID4gPiA+ID4gPiA+ICtt dDc2LWNvbm5hYy1saWIteSA6PSBtdDc2X2Nvbm5hY19tY3Uubw0KPiA+ID4gPiA+ID4gPiA+IG10 NzZfY29ubmFjX21hYy5vDQo+ID4gPiA+ID4gPiA+ID4gbXQ3Nl9jb25uYWMzX21hYy5vDQo+ID4g PiA+ID4gPiA+ID4gIA0KPiA+ID4gPiA+ID4gPiA+ICBvYmotJChDT05GSUdfTVQ3NngwX0NPTU1P TikgKz0gbXQ3NngwLw0KPiA+ID4gPiA+ID4gPiA+ICBvYmotJChDT05GSUdfTVQ3NngyX0NPTU1P TikgKz0gbXQ3NngyLyBkaWZmIC0tZ2l0IA0KPiA+ID4gPiA+ID4gPiA+IGEvZHJpdmVycy9uZXQv d2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oDQo+ID4gPiA+ID4gPiA+ID4gYi9k cml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmgNCj4gPiA+ID4g PiA+ID4gPiBpbmRleCA2OGJkZWFkYTE0MjEuLjIwMTExNjc4NTM3YiAxMDA2NDQNCj4gPiA+ID4g PiA+ID4gPiAtLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29u bmFjLmgNCj4gPiA+ID4gPiA+ID4gPiArKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRl ay9tdDc2L210NzZfY29ubmFjLmgNCj4gPiA+ID4gPiA+ID4gPiBAQCAtNDE1LDQgKzQxNSwyMyBA QCB2b2lkIG10NzZfY29ubmFjMl90eHdpX2ZyZWUoc3RydWN0DQo+ID4gPiA+IA0KPiA+ID4gPiBt dDc2X2RldiANCj4gPiA+ID4gPiA+ID4gPiAqZGV2LCBzdHJ1Y3QgbXQ3Nl90eHdpX2NhY2hlICp0 LA0KPiA+ID4gPiA+ID4gPiA+ICAgICAgc3RydWN0IGxpc3RfaGVhZCAqZnJlZV9saXN0KTsgIHZv aWQgDQo+ID4gPiA+ID4gPiA+ID4gbXQ3Nl9jb25uYWMyX3R4X3Rva2VuX3B1dChzdHJ1Y3QgbXQ3 Nl9kZXYgKmRldik7DQo+ID4gPiA+ID4gPiA+ID4gIA0KPiA+ID4gPiA+ID4gPiA+ICsvKiBjb25u YWMzICovDQo+ID4gPiA+ID4gPiA+ID4gK3ZvaWQgbXQ3Nl9jb25uYWMzX3R4X2NoZWNrX2FnZ3Io c3RydWN0IGllZWU4MDIxMV9zdGENCj4gPiA+ID4gPiA+ID4gPiAqc3RhLA0KPiA+ID4gPiA+ID4g PiA+IF9fbGUzMg0KPiA+ID4gPiA+ID4gPiA+ICp0eHdpKTsNCj4gPiA+ID4gPiA+ID4gPiArdm9p ZCBtdDc2X2Nvbm5hYzNfbWFjX2RlY29kZV9oZV9yYWRpb3RhcChzdHJ1Y3QNCj4gPiA+ID4gPiA+ ID4gPiBza19idWZmDQo+ID4gPiA+IA0KPiA+ID4gPiAqc2tiLA0KPiA+ID4gPiA+ID4gPiA+IF9f bGUzMg0KPiA+ID4gPiA+ID4gPiA+ICpyeHYsDQo+ID4gPiA+ID4gPiA+ID4gKyB1OCBtb2RlKTsN Cj4gPiA+ID4gPiA+ID4gPiAraW50IG10NzZfY29ubmFjM19tYWNfZmlsbF9yeF9yYXRlKHN0cnVj dCBtdDc2X2Rldg0KPiA+ID4gPiA+ID4gPiA+ICpkZXYsDQo+ID4gPiA+ID4gPiA+ID4gKyAgc3Ry dWN0IG10NzZfcnhfc3RhdHVzICpzdGF0dXMsDQo+ID4gPiA+ID4gPiA+ID4gKyAgc3RydWN0IGll ZWU4MDIxMV9zdXBwb3J0ZWRfYmFuZA0KPiA+ID4gPiA+ID4gPiA+ICpzYmFuZCwNCj4gPiA+ID4g PiA+ID4gPiArICBfX2xlMzIgKnJ4diwgdTggKm1vZGUpOw0KPiA+ID4gPiA+ID4gPiA+ICt2b2lk IG10NzZfY29ubmFjM19tYWNfd3JpdGVfdHh3aShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwNCj4gPiA+ ID4gDQo+ID4gPiA+IF9fbGUzMg0KPiA+ID4gPiA+ID4gPiA+ICp0eHdpLA0KPiA+ID4gPiA+ID4g PiA+ICsgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG10NzZfd2NpZA0KPiA+ID4gPiA+ID4g PiA+ICp3Y2lkLA0KPiA+ID4gPiA+ID4gPiA+ICsgc3RydWN0IGllZWU4MDIxMV9rZXlfY29uZiAq a2V5LCBpbnQNCj4gPiA+ID4gPiA+ID4gPiBwaWQsDQo+ID4gPiA+ID4gPiA+ID4gKyBlbnVtIG10 NzZfdHhxX2lkIHFpZCwgdTMyIGNoYW5nZWQpOyB2b2lkIA0KPiA+ID4gPiA+ID4gPiA+ICttdDc2 X2Nvbm5hYzNfdHh3aV9mcmVlKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3QNCj4gPiA+ID4g PiA+ID4gPiBtdDc2X3R4d2lfY2FjaGUgKnQsDQo+ID4gPiA+ID4gPiA+ID4gKyAgICBzdHJ1Y3Qg aWVlZTgwMjExX3N0YSAqc3RhLA0KPiA+ID4gPiA+ID4gPiA+ICsgICAgc3RydWN0IGxpc3RfaGVh ZCAqZnJlZV9saXN0KTsgdm9pZCANCj4gPiA+ID4gPiA+ID4gPiArbXQ3Nl9jb25uYWMzX21hY19h ZGRfdHhzKHN0cnVjdCBtdDc2X2RldiAqZGV2LCB2b2lkDQo+ID4gPiA+ID4gPiA+ID4gKmRhdGEs DQo+ID4gPiA+ID4gPiA+ID4gKyAgICAgIHUzMiBtYXhfd3RibF9zaXplKTsNCj4gPiA+ID4gPiA+ ID4gPiArdm9pZCBtdDc2X2Nvbm5hYzNfdHhfdG9rZW5fcHV0KHN0cnVjdCBtdDc2X2RldiAqZGV2 KTsNCj4gPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ID4gICNlbmRpZiAvKiBfX01UNzZf Q09OTkFDX0ggKi8NCj4gPiA+ID4gPiA+ID4gPiBkaWZmIC0tZ2l0DQo+ID4gPiA+ID4gPiA+ID4g YS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjM19tYWMuYw0K PiA+ID4gPiA+ID4gPiA+IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2 X2Nvbm5hYzNfbWFjLmMNCj4gPiA+ID4gPiA+ID4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+ ID4gPiA+ID4gPiA+IGluZGV4IDAwMDAwMDAwMDAwMC4uNGI3NDViYjc0Y2EwDQo+ID4gPiA+ID4g PiA+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ID4gPiA+ID4gPiA+ICsrKw0KPiA+ID4gPiA+ID4gPiA+ IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYzNfbWFjLmMN Cj4gPiA+ID4gPiA+ID4gPiBAQCAtMCwwICsxLDc0MiBAQA0KPiA+ID4gPiA+ID4gPiA+ICsvLyBT UERYLUxpY2Vuc2UtSWRlbnRpZmllcjogSVNDDQo+ID4gPiA+ID4gPiA+ID4gKy8qIENvcHlyaWdo dCAoQykgMjAyMyBNZWRpYVRlayBJbmMuICovDQo+ID4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ ID4gPiA+ICsjaW5jbHVkZSAibXQ3Nl9jb25uYWMuaCINCj4gPiA+ID4gPiA+ID4gPiArI2luY2x1 ZGUgIm10NzZfY29ubmFjM19tYWMuaCINCj4gPiA+ID4gPiA+ID4gPiArI2luY2x1ZGUgImRtYS5o Ig0KPiA+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gPiArI2RlZmluZSBIRV9CSVRTKGYp Y3B1X3RvX2xlMTYoSUVFRTgwMjExX1JBRElPVEFQXw0KPiA+ID4gPiA+ID4gPiA+IEhFXyMjZikN Cj4gPiA+ID4gPiA+ID4gPiArI2RlZmluZSBIRV9QUkVQKGYsIG0sDQo+ID4gPiA+ID4gPiA+ID4g dilsZTE2X2VuY29kZV9iaXRzKGxlMzJfZ2V0X2JpdHModiwNCj4gPiA+ID4gPiA+ID4gPiBNVF9D UlhWX0hFXyMjbSksXA0KPiA+ID4gPiA+ID4gPiA+ICsgSUVFRTgwMjExX1JBRElPVEFQX0hFXw0K PiA+ID4gPiA+ID4gPiA+ICMjZikNCj4gPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ID4g K3ZvaWQgbXQ3Nl9jb25uYWMzX3R4X2NoZWNrX2FnZ3Ioc3RydWN0IGllZWU4MDIxMV9zdGENCj4g PiA+ID4gPiA+ID4gPiAqc3RhLA0KPiA+ID4gPiA+ID4gPiA+IF9fbGUzMg0KPiA+ID4gPiA+ID4g PiA+ICp0eHdpKQ0KPiA+ID4gPiA+ID4gPiA+ICt7DQo+ID4gPiA+ID4gPiA+ID4gK3N0cnVjdCBt dDc2X3djaWQgKndjaWQ7DQo+ID4gPiA+ID4gPiA+ID4gK3UxNiBmYywgdGlkOw0KPiA+ID4gPiA+ ID4gPiA+ICt1MzIgdmFsOw0KPiA+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gPiAraWYg KCFzdGEgfHwNCj4gPiA+ID4gPiA+ID4gPiArICAgICEoc3RhLT5kZWZsaW5rLmh0X2NhcC5odF9z dXBwb3J0ZWQgfHwgc3RhLQ0KPiA+ID4gPiA+ID4gPiA+ID4gZGVmbGluay5oZV9jYXAuaGFzX2hl KSkNCj4gPiA+ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+ID4gPiArcmV0dXJuOw0KPiA+ID4gPiA+ ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gPiArdGlkID0gbGUzMl9nZXRfYml0cyh0eHdpWzFdLCBN VF9UWEQxX1RJRCk7DQo+ID4gPiA+ID4gPiA+ID4gK2lmICh0aWQgPj0gNikgLyogc2tpcCBWTyBx dWV1ZSAqLw0KPiA+ID4gPiA+ID4gPiA+ICtyZXR1cm47DQo+ID4gPiA+ID4gPiA+ID4gKw0KPiA+ ID4gPiA+ID4gPiA+ICt2YWwgPSBsZTMyX3RvX2NwdSh0eHdpWzJdKTsNCj4gPiA+ID4gPiA+ID4g PiArZmMgPSBGSUVMRF9HRVQoTVRfVFhEMl9GUkFNRV9UWVBFLCB2YWwpIDw8IDIgfA0KPiA+ID4g PiA+ID4gPiA+ICsgICAgIEZJRUxEX0dFVChNVF9UWEQyX1NVQl9UWVBFLCB2YWwpIDw8IDQ7DQo+ ID4gPiA+ID4gPiA+ID4gK2lmICh1bmxpa2VseShmYyAhPSAoSUVFRTgwMjExX0ZUWVBFX0RBVEEg fA0KPiA+ID4gPiA+ID4gPiA+IElFRUU4MDIxMV9TVFlQRV9RT1NfREFUQSkpKQ0KPiA+ID4gPiA+ ID4gPiA+ICtyZXR1cm47DQo+ID4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiA+ICt3Y2lk ID0gKHN0cnVjdCBtdDc2X3djaWQgKilzdGEtPmRydl9wcml2Ow0KPiA+ID4gPiA+ID4gPiA+ICtp ZiAoIXRlc3RfYW5kX3NldF9iaXQodGlkLCAmd2NpZC0+YW1wZHVfc3RhdGUpKQ0KPiA+ID4gPiA+ ID4gPiA+ICtpZWVlODAyMTFfc3RhcnRfdHhfYmFfc2Vzc2lvbihzdGEsIHRpZCwgMCk7IH0gDQo+ ID4gPiA+ID4gPiA+ID4gK0VYUE9SVF9TWU1CT0xfR1BMKG10NzZfY29ubmFjM190eF9jaGVja19h Z2dyKTsNCj4gPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ID4gK3N0YXRpYyB2b2lkDQo+ ID4gPiA+ID4gPiA+ID4gK210NzZfY29ubmFjM19tYWNfZGVjb2RlX2hlX3JhZGlvdGFwX3J1KHN0 cnVjdA0KPiA+ID4gPiA+ID4gPiA+IG10NzZfcnhfc3RhdHVzDQo+ID4gPiA+ID4gPiA+ID4gKnN0 YXR1cywNCj4gPiA+ID4gPiA+ID4gPiArICAgICAgIHN0cnVjdCBpZWVlODAyMTFfcmFkaW90YXBf aGUNCj4gPiA+ID4gPiA+ID4gPiAqaGUsDQo+ID4gPiA+ID4gPiA+ID4gKyAgICAgICBfX2xlMzIg KnJ4dikNCj4gPiA+ID4gPiA+ID4gPiArew0KPiA+ID4gPiA+ID4gPiA+ICt1MzIgcnUgPSBsZTMy X2dldF9iaXRzKHJ4dlswXSwgTVRfUFJYVl9IRV9SVV9BTExPQyksDQo+ID4gPiA+ID4gPiA+ID4g b2Zmcw0KPiA+ID4gPiA+ID4gPiA+ID0NCj4gPiA+ID4gDQo+ID4gPiA+IDA7DQo+ID4gPiA+ID4g PiA+ID4gKw0KPiA+ID4gPiA+ID4gPiA+ICtzdGF0dXMtPmJ3ID0gUkFURV9JTkZPX0JXX0hFX1JV Ow0KPiA+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gPiArc3dpdGNoIChydSkgew0KPiA+ ID4gPiA+ID4gPiA+ICtjYXNlIDAgLi4uIDM2Og0KPiA+ID4gPiA+ID4gPiA+ICtzdGF0dXMtPmhl X3J1ID0gTkw4MDIxMV9SQVRFX0lORk9fSEVfUlVfQUxMT0NfMjY7DQo+ID4gPiA+ID4gPiA+ID4g K29mZnMgPSBydTsNCj4gPiA+ID4gPiA+ID4gPiArYnJlYWs7DQo+ID4gPiA+ID4gPiA+ID4gK2Nh c2UgMzcgLi4uIDUyOg0KPiA+ID4gPiA+ID4gPiA+ICtzdGF0dXMtPmhlX3J1ID0gTkw4MDIxMV9S QVRFX0lORk9fSEVfUlVfQUxMT0NfNTI7DQo+ID4gPiA+ID4gPiA+ID4gK29mZnMgPSBydSAtIDM3 Ow0KPiA+ID4gPiA+ID4gPiA+ICticmVhazsNCj4gPiA+ID4gPiA+ID4gPiArY2FzZSA1MyAuLi4g NjA6DQo+ID4gPiA+ID4gPiA+ID4gK3N0YXR1cy0+aGVfcnUgPSBOTDgwMjExX1JBVEVfSU5GT19I RV9SVV9BTExPQ18xMDY7DQo+ID4gPiA+ID4gPiA+ID4gK29mZnMgPSBydSAtIDUzOw0KPiA+ID4g PiA+ID4gPiA+ICticmVhazsNCj4gPiA+ID4gPiA+ID4gPiArY2FzZSA2MSAuLi4gNjQ6DQo+ID4g PiA+ID4gPiA+ID4gK3N0YXR1cy0+aGVfcnUgPSBOTDgwMjExX1JBVEVfSU5GT19IRV9SVV9BTExP Q18yNDI7DQo+ID4gPiA+ID4gPiA+ID4gK29mZnMgPSBydSAtIDYxOw0KPiA+ID4gPiA+ID4gPiA+ ICticmVhazsNCj4gPiA+ID4gPiA+ID4gPiArY2FzZSA2NSAuLi4gNjY6DQo+ID4gPiA+ID4gPiA+ ID4gK3N0YXR1cy0+aGVfcnUgPSBOTDgwMjExX1JBVEVfSU5GT19IRV9SVV9BTExPQ180ODQ7DQo+ ID4gPiA+ID4gPiA+ID4gK29mZnMgPSBydSAtIDY1Ow0KPiA+ID4gPiA+ID4gPiA+ICticmVhazsN Cj4gPiA+ID4gPiA+ID4gPiArY2FzZSA2NzoNCj4gPiA+ID4gPiA+ID4gPiArc3RhdHVzLT5oZV9y dSA9IE5MODAyMTFfUkFURV9JTkZPX0hFX1JVX0FMTE9DXzk5NjsNCj4gPiA+ID4gPiA+ID4gPiAr YnJlYWs7DQo+ID4gPiA+ID4gPiA+ID4gK2Nhc2UgNjg6DQo+ID4gPiA+ID4gPiA+ID4gK3N0YXR1 cy0+aGVfcnUgPSBOTDgwMjExX1JBVEVfSU5GT19IRV9SVV9BTExPQ18yeDk5NjsNCj4gPiA+ID4g PiA+ID4gPiArYnJlYWs7DQo+ID4gPiA+ID4gPiA+ID4gK30NCj4gPiA+ID4gPiA+ID4gPiArDQo+ ID4gPiA+ID4gPiA+ID4gK2hlLT5kYXRhMSB8PSBIRV9CSVRTKERBVEExX0JXX1JVX0FMTE9DX0tO T1dOKTsNCj4gPiA+ID4gPiA+ID4gPiAraGUtPmRhdGEyIHw9IEhFX0JJVFMoREFUQTJfUlVfT0ZG U0VUX0tOT1dOKSB8DQo+ID4gPiA+ID4gPiA+ID4gKyAgICAgbGUxNl9lbmNvZGVfYml0cyhvZmZz LA0KPiA+ID4gPiA+ID4gPiA+ICsgICAgICBJRUVFODAyMTFfUkFESU9UQVBfSEVfREFUQTJfUlVf T0YNCj4gPiA+ID4gPiA+ID4gPiBGU0VUKTsNCj4gPiA+ID4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gPiArI2RlZmluZSBNVV9QUkVQKGYsIHYpbGUxNl9lbmNv ZGVfYml0cyh2LA0KPiA+ID4gPiA+ID4gPiA+IElFRUU4MDIxMV9SQURJT1RBUF9IRV9NVV8jI2Yp DQo+ID4gPiA+ID4gPiA+ID4gK3N0YXRpYyB2b2lkDQo+ID4gPiA+ID4gPiA+ID4gK210NzZfY29u bmFjM19tYWNfZGVjb2RlX2hlX211X3JhZGlvdGFwKHN0cnVjdCBza19idWZmDQo+ID4gPiA+ID4g PiA+ID4gKnNrYiwNCj4gPiA+ID4gPiA+ID4gPiBfX2xlMzINCj4gPiA+ID4gPiA+ID4gPiAqcnh2 KQ0KPiA+ID4gPiA+ID4gPiA+ICt7DQo+ID4gPiA+ID4gPiA+ID4gK3N0cnVjdCBtdDc2X3J4X3N0 YXR1cyAqc3RhdHVzID0gKHN0cnVjdCBtdDc2X3J4X3N0YXR1cw0KPiA+ID4gPiANCj4gPiA+ID4g Kilza2ItDQo+ID4gPiA+ID4gPiA+ID4gPiBjYjsNCj4gPiA+ID4gPiA+ID4gPiANCj4gPiA+ID4g PiA+ID4gPiArc3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmFkaW90YXBfaGVfbXUgbXVf a25vd24NCj4gPiA+ID4gPiA+ID4gPiA9IHsNCj4gPiA+ID4gPiA+ID4gPiArLmZsYWdzMSA9IEhF X0JJVFMoTVVfRkxBR1MxX1NJR19CX01DU19LTk9XTikgfA0KPiA+ID4gPiA+ID4gPiA+ICsgIEhF X0JJVFMoTVVfRkxBR1MxX1NJR19CX0RDTV9LTk9XTikgfA0KPiA+ID4gPiA+ID4gPiA+ICsgIEhF X0JJVFMoTVVfRkxBR1MxX0NIMV9SVV9LTk9XTikgfA0KPiA+ID4gPiA+ID4gPiA+ICsgIEhFX0JJ VFMoTVVfRkxBR1MxX1NJR19CX1NZTVNfVVNFUlNfS05PV04pLA0KPiA+ID4gPiA+ID4gPiA+ICsu ZmxhZ3MyID0gSEVfQklUUyhNVV9GTEFHUzJfQldfRlJPTV9TSUdfQV9CV19LTk9XTiksDQo+ID4g PiA+ID4gPiA+ID4gK307DQo+ID4gPiA+ID4gPiA+ID4gK3N0cnVjdCBpZWVlODAyMTFfcmFkaW90 YXBfaGVfbXUgKmhlX211Ow0KPiA+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gPiArc3Rh dHVzLT5mbGFnIHw9IFJYX0ZMQUdfUkFESU9UQVBfSEVfTVU7DQo+ID4gPiA+ID4gPiA+ID4gKw0K PiA+ID4gPiA+ID4gPiA+ICtoZV9tdSA9IHNrYl9wdXNoKHNrYiwgc2l6ZW9mKG11X2tub3duKSk7 DQo+ID4gPiA+ID4gPiA+ID4gK21lbWNweShoZV9tdSwgJm11X2tub3duLCBzaXplb2YobXVfa25v d24pKTsNCj4gPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ID4gK2hlX211LT5mbGFnczEg fD0gTVVfUFJFUChGTEFHUzFfU0lHX0JfTUNTLCBzdGF0dXMtDQo+ID4gPiA+ID4gDQo+ID4gPiA+ ID4gcmF0ZV9pZHgpOw0KPiA+ID4gPiA+ID4gPiA+ICtpZiAoc3RhdHVzLT5oZV9kY20pDQo+ID4g PiA+ID4gPiA+ID4gK2hlX211LT5mbGFnczEgfD0gTVVfUFJFUChGTEFHUzFfU0lHX0JfRENNLCBz dGF0dXMtDQo+ID4gPiA+ID4gPiA+ID4gPiBoZV9kY20pOw0KPiA+ID4gPiA+ID4gPiA+IA0KPiA+ ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gPiAraGVfbXUtPmZsYWdzMiB8PSBNVV9QUkVQ KEZMQUdTMl9CV19GUk9NX1NJR19BX0JXLA0KPiA+ID4gPiA+ID4gPiA+IHN0YXR1cy0NCj4gPiA+ ID4gPiANCj4gPiA+ID4gPiBidykgfA0KPiA+ID4gPiA+ID4gPiA+ICsgTVVfUFJFUChGTEFHUzJf U0lHX0JfU1lNU19VU0VSUywNCj4gPiA+ID4gPiA+ID4gPiArIGxlMzJfZ2V0X2JpdHMocnh2WzRd LA0KPiA+ID4gPiA+ID4gPiA+IE1UX0NSWFZfSEVfTlVNX1VTRVIpKTsNCj4gPiA+ID4gPiA+ID4g PiArDQo+ID4gPiA+ID4gPiA+ID4gK2hlX211LT5ydV9jaDFbMF0gPSBsZTMyX2dldF9iaXRzKHJ4 dlsxNl0sDQo+ID4gPiA+ID4gPiA+ID4gTVRfQ1JYVl9IRV9SVTApDQo+ID4gPiA+ID4gPiA+ID4g Jg0KPiA+ID4gPiA+ID4gPiA+IDB4ZmY7DQo+ID4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4g PiA+ICtpZiAoc3RhdHVzLT5idyA+PSBSQVRFX0lORk9fQldfNDApIHsNCj4gPiA+ID4gPiA+ID4g PiAraGVfbXUtPmZsYWdzMSB8PSBIRV9CSVRTKE1VX0ZMQUdTMV9DSDJfUlVfS05PV04pOw0KPiA+ ID4gPiA+ID4gPiA+ICtoZV9tdS0+cnVfY2gyWzBdID0gbGUzMl9nZXRfYml0cyhyeHZbMTZdLA0K PiA+ID4gPiA+ID4gPiA+IE1UX0NSWFZfSEVfUlUxKSAmIDB4ZmY7DQo+ID4gPiA+ID4gPiA+ID4g K30NCj4gPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ID4gK2lmIChzdGF0dXMtPmJ3ID49 IFJBVEVfSU5GT19CV184MCkgew0KPiA+ID4gPiA+ID4gPiA+ICt1MzIgcnVfaCwgcnVfbDsNCj4g PiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ID4gK2hlX211LT5ydV9jaDFbMV0gPSBsZTMy X2dldF9iaXRzKHJ4dlsxNl0sDQo+ID4gPiA+ID4gPiA+ID4gTVRfQ1JYVl9IRV9SVTIpICYgMHhm ZjsNCj4gPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ID4gK3J1X2wgPSBsZTMyX2dldF9i aXRzKHJ4dlsxNl0sIE1UX0NSWFZfSEVfUlUzX0wpOw0KPiA+ID4gPiA+ID4gPiA+ICtydV9oID0g bGUzMl9nZXRfYml0cyhyeHZbMTddLCBNVF9DUlhWX0hFX1JVM19IKSAmIDB4NzsNCj4gPiA+ID4g PiA+ID4gPiAraGVfbXUtPnJ1X2NoMlsxXSA9ICh1OCkocnVfbCB8IHJ1X2ggPDwgNCk7DQo+ID4g PiA+ID4gPiA+ID4gK30NCj4gPiA+ID4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ID4gPiA+ICsNCj4g PiA+ID4gPiA+ID4gPiArdm9pZCBtdDc2X2Nvbm5hYzNfbWFjX2RlY29kZV9oZV9yYWRpb3RhcChz dHJ1Y3QNCj4gPiA+ID4gPiA+ID4gPiBza19idWZmDQo+ID4gPiA+IA0KPiA+ID4gPiAqc2tiLA0K PiA+ID4gPiA+ID4gPiA+IF9fbGUzMg0KPiA+ID4gPiA+ID4gPiA+ICpyeHYsDQo+ID4gPiA+ID4g PiA+ID4gKyB1OCBtb2RlKQ0KPiA+ID4gPiA+ID4gPiA+ICt7DQo+ID4gPiA+ID4gPiA+ID4gK3N0 cnVjdCBtdDc2X3J4X3N0YXR1cyAqc3RhdHVzID0gKHN0cnVjdCBtdDc2X3J4X3N0YXR1cw0KPiA+ ID4gPiANCj4gPiA+ID4gKilza2ItDQo+ID4gPiA+ID4gPiA+ID4gPiBjYjsNCj4gPiA+ID4gPiA+ ID4gPiANCj4gPiA+ID4gPiA+ID4gPiArc3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmFk aW90YXBfaGUga25vd24gPSB7DQo+ID4gPiA+ID4gPiA+ID4gKy5kYXRhMSA9IEhFX0JJVFMoREFU QTFfREFUQV9NQ1NfS05PV04pIHwNCj4gPiA+ID4gPiA+ID4gPiArIEhFX0JJVFMoREFUQTFfREFU QV9EQ01fS05PV04pIHwNCj4gPiA+ID4gPiA+ID4gPiArIEhFX0JJVFMoREFUQTFfU1RCQ19LTk9X TikgfA0KPiA+ID4gPiA+ID4gPiA+ICsgSEVfQklUUyhEQVRBMV9DT0RJTkdfS05PV04pIHwNCj4g PiA+ID4gPiA+ID4gPiArIEhFX0JJVFMoREFUQTFfTERQQ19YU1lNU0VHX0tOT1dOKSB8DQo+ID4g PiA+ID4gPiA+ID4gKyBIRV9CSVRTKERBVEExX0RPUFBMRVJfS05PV04pIHwNCj4gPiA+ID4gPiA+ ID4gPiArIEhFX0JJVFMoREFUQTFfU1BUTF9SRVVTRV9LTk9XTikgfA0KPiA+ID4gPiA+ID4gPiA+ ICsgSEVfQklUUyhEQVRBMV9CU1NfQ09MT1JfS05PV04pLA0KPiA+ID4gPiA+ID4gPiA+ICsuZGF0 YTIgPSBIRV9CSVRTKERBVEEyX0dJX0tOT1dOKSB8DQo+ID4gPiA+ID4gPiA+ID4gKyBIRV9CSVRT KERBVEEyX1RYQkZfS05PV04pIHwNCj4gPiA+ID4gPiA+ID4gPiArIEhFX0JJVFMoREFUQTJfUEVf RElTQU1CSUdfS05PV04pIHwNCj4gPiA+ID4gPiA+ID4gPiArIEhFX0JJVFMoREFUQTJfVFhPUF9L Tk9XTiksDQo+ID4gPiA+ID4gPiA+ID4gK307DQo+ID4gPiA+ID4gPiA+ID4gK3UzMiBsdGZfc2l6 ZSA9IGxlMzJfZ2V0X2JpdHMocnh2WzRdLA0KPiA+ID4gPiA+ID4gPiA+IE1UX0NSWFZfSEVfTFRG X1NJWkUpDQo+ID4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiANCj4gPiA+ID4gMTsNCj4gPiA+ID4g PiA+ID4gPiArc3RydWN0IGllZWU4MDIxMV9yYWRpb3RhcF9oZSAqaGU7DQo+ID4gPiA+ID4gPiA+ ID4gKw0KPiA+ID4gPiA+ID4gPiA+ICtzdGF0dXMtPmZsYWcgfD0gUlhfRkxBR19SQURJT1RBUF9I RTsNCj4gPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ID4gK2hlID0gc2tiX3B1c2goc2ti LCBzaXplb2Yoa25vd24pKTsNCj4gPiA+ID4gPiA+ID4gPiArbWVtY3B5KGhlLCAma25vd24sIHNp emVvZihrbm93bikpOw0KPiA+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gPiAraGUtPmRh dGEzID0gSEVfUFJFUChEQVRBM19CU1NfQ09MT1IsIEJTU19DT0xPUiwNCj4gPiA+ID4gPiA+ID4g PiByeHZbOV0pIHwNCj4gPiA+ID4gPiA+ID4gPiArICAgIEhFX1BSRVAoREFUQTNfTERQQ19YU1lN U0VHLCBMRFBDX0VYVF9TWU0sIHJ4dls0XSk7DQo+ID4gPiA+ID4gPiA+ID4gK2hlLT5kYXRhNCA9 IEhFX1BSRVAoREFUQTRfU1VfTVVfU1BUTF9SRVVTRSwgU1JfTUFTSywNCj4gPiA+ID4gDQo+ID4g PiA+IHJ4dlsxM10pOw0KPiA+ID4gPiA+ID4gPiA+ICtoZS0+ZGF0YTUgPSBIRV9QUkVQKERBVEE1 X1BFX0RJU0FNQklHLCBQRV9ESVNBTUJJRywNCj4gPiA+ID4gPiA+ID4gPiByeHZbNV0pDQo+ID4g PiA+ID4gPiA+ID4gKyAgICBsZTE2X2VuY29kZV9iaXRzKGx0Zl9zaXplLA0KPiA+ID4gPiA+ID4g PiA+ICsgICAgIElFRUU4MDIxMV9SQURJT1RBUF9IRV9EQVRBNV9MVEZfU0kNCj4gPiA+ID4gPiA+ ID4gPiBaRSk7DQo+ID4gPiA+ID4gPiA+ID4gK2lmIChsZTMyX3RvX2NwdShyeHZbMF0pICYgTVRf UFJYVl9UWEJGKQ0KPiA+ID4gPiA+ID4gPiA+ICtoZS0+ZGF0YTUgfD0gSEVfQklUUyhEQVRBNV9U WEJGKTsNCj4gPiA+ID4gPiA+ID4gPiAraGUtPmRhdGE2ID0gSEVfUFJFUChEQVRBNl9UWE9QLCBU WE9QX0RVUiwgcnh2WzldKSB8DQo+ID4gPiA+ID4gPiA+ID4gKyAgICBIRV9QUkVQKERBVEE2X0RP UFBMRVIsIERPUFBMRVIsIHJ4dls5XSk7DQo+ID4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4g PiA+ICtzd2l0Y2ggKG1vZGUpIHsNCj4gPiA+ID4gPiA+ID4gPiArY2FzZSBNVF9QSFlfVFlQRV9I RV9TVToNCj4gPiA+ID4gPiA+ID4gPiAraGUtPmRhdGExIHw9IEhFX0JJVFMoREFUQTFfRk9STUFU X1NVKSB8DQo+ID4gPiA+ID4gPiA+ID4gKyAgICAgSEVfQklUUyhEQVRBMV9VTF9ETF9LTk9XTikg fA0KPiA+ID4gPiA+ID4gPiA+ICsgICAgIEhFX0JJVFMoREFUQTFfQkVBTV9DSEFOR0VfS05PV04p IHwNCj4gPiA+ID4gPiA+ID4gPiArICAgICBIRV9CSVRTKERBVEExX0JXX1JVX0FMTE9DX0tOT1dO KTsNCj4gPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ID4gK2hlLT5kYXRhMyB8PSBIRV9Q UkVQKERBVEEzX0JFQU1fQ0hBTkdFLCBCRUFNX0NITkcsDQo+ID4gPiA+ID4gPiA+ID4gcnh2Wzhd KSB8DQo+ID4gPiA+ID4gPiA+ID4gKyAgICAgSEVfUFJFUChEQVRBM19VTF9ETCwgVVBMSU5LLCBy eHZbNV0pOw0KPiA+ID4gPiA+ID4gPiA+ICticmVhazsNCj4gPiA+ID4gPiA+ID4gPiArY2FzZSBN VF9QSFlfVFlQRV9IRV9FWFRfU1U6DQo+ID4gPiA+ID4gPiA+ID4gK2hlLT5kYXRhMSB8PSBIRV9C SVRTKERBVEExX0ZPUk1BVF9FWFRfU1UpIHwNCj4gPiA+ID4gPiA+ID4gPiArICAgICBIRV9CSVRT KERBVEExX1VMX0RMX0tOT1dOKSB8DQo+ID4gPiA+ID4gPiA+ID4gKyAgICAgSEVfQklUUyhEQVRB MV9CV19SVV9BTExPQ19LTk9XTik7DQo+ID4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiA+ ICtoZS0+ZGF0YTMgfD0gSEVfUFJFUChEQVRBM19VTF9ETCwgVVBMSU5LLCByeHZbNV0pOw0KPiA+ ID4gPiA+ID4gPiA+ICticmVhazsNCj4gPiA+ID4gPiA+ID4gPiArY2FzZSBNVF9QSFlfVFlQRV9I RV9NVToNCj4gPiA+ID4gPiA+ID4gPiAraGUtPmRhdGExIHw9IEhFX0JJVFMoREFUQTFfRk9STUFU X01VKSB8DQo+ID4gPiA+ID4gPiA+ID4gKyAgICAgSEVfQklUUyhEQVRBMV9VTF9ETF9LTk9XTik7 DQo+ID4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiA+ICtoZS0+ZGF0YTMgfD0gSEVfUFJF UChEQVRBM19VTF9ETCwgVVBMSU5LLCByeHZbNV0pOw0KPiA+ID4gPiA+ID4gPiA+ICtoZS0+ZGF0 YTQgfD0gSEVfUFJFUChEQVRBNF9NVV9TVEFfSUQsIE1VX0FJRCwgcnh2WzhdKTsNCj4gPiA+ID4g PiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ID4gK210NzZfY29ubmFjM19tYWNfZGVjb2RlX2hlX3Jh ZGlvdGFwX3J1KHN0YXR1cywgaGUsDQo+ID4gPiA+ID4gPiA+ID4gcnh2KTsNCj4gPiA+ID4gPiA+ ID4gPiArbXQ3Nl9jb25uYWMzX21hY19kZWNvZGVfaGVfbXVfcmFkaW90YXAoc2tiLCByeHYpOw0K PiA+ID4gPiA+ID4gPiA+ICticmVhazsNCj4gPiA+ID4gPiA+ID4gPiArY2FzZSBNVF9QSFlfVFlQ RV9IRV9UQjoNCj4gPiA+ID4gPiA+ID4gPiAraGUtPmRhdGExIHw9IEhFX0JJVFMoREFUQTFfRk9S TUFUX1RSSUcpIHwNCj4gPiA+ID4gPiA+ID4gPiArICAgICBIRV9CSVRTKERBVEExX1NQVExfUkVV U0UyX0tOT1dOKSB8DQo+ID4gPiA+ID4gPiA+ID4gKyAgICAgSEVfQklUUyhEQVRBMV9TUFRMX1JF VVNFM19LTk9XTikgfA0KPiA+ID4gPiA+ID4gPiA+ICsgICAgIEhFX0JJVFMoREFUQTFfU1BUTF9S RVVTRTRfS05PV04pOw0KPiA+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gPiAraGUtPmRh dGE0IHw9IEhFX1BSRVAoREFUQTRfVEJfU1BUTF9SRVVTRTEsIFNSX01BU0ssDQo+ID4gPiA+ID4g PiA+ID4gcnh2WzEzXSkgfA0KPiA+ID4gPiA+ID4gPiA+ICsgICAgIEhFX1BSRVAoREFUQTRfVEJf U1BUTF9SRVVTRTIsIFNSMV9NQVNLLA0KPiA+ID4gPiA+ID4gPiA+IHJ4dlsxM10pIHwNCj4gPiA+ ID4gPiA+ID4gPiArICAgICBIRV9QUkVQKERBVEE0X1RCX1NQVExfUkVVU0UzLCBTUjJfTUFTSywN Cj4gPiA+ID4gPiA+ID4gPiByeHZbMTNdKSB8DQo+ID4gPiA+ID4gPiA+ID4gKyAgICAgSEVfUFJF UChEQVRBNF9UQl9TUFRMX1JFVVNFNCwgU1IzX01BU0ssDQo+ID4gPiA+ID4gPiA+ID4gcnh2WzEz XSk7DQo+ID4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiA+ICttdDc2X2Nvbm5hYzNfbWFj X2RlY29kZV9oZV9yYWRpb3RhcF9ydShzdGF0dXMsIGhlLA0KPiA+ID4gPiA+ID4gPiA+IHJ4dik7 DQo+ID4gPiA+ID4gPiA+ID4gK2JyZWFrOw0KPiA+ID4gPiA+ID4gPiA+ICtkZWZhdWx0Og0KPiA+ ID4gPiA+ID4gPiA+ICticmVhazsNCj4gPiA+ID4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ID4gPiA+ ICt9DQo+ID4gPiA+ID4gPiA+ID4gK0VYUE9SVF9TWU1CT0xfR1BMKG10NzZfY29ubmFjM19tYWNf ZGVjb2RlX2hlX3JhZGlvdGFwKQ0KPiA+ID4gPiA+ID4gPiA+IDsNCj4gPiA+ID4gPiA+ID4gPiAr DQo+ID4gPiA+ID4gPiA+ID4gK2ludCBtdDc2X2Nvbm5hYzNfbWFjX2ZpbGxfcnhfcmF0ZShzdHJ1 Y3QgbXQ3Nl9kZXYNCj4gPiA+ID4gPiA+ID4gPiAqZGV2LA0KPiA+ID4gPiA+ID4gPiA+ICsgIHN0 cnVjdCBtdDc2X3J4X3N0YXR1cyAqc3RhdHVzLA0KPiA+ID4gPiA+ID4gPiA+ICsgIHN0cnVjdCBp ZWVlODAyMTFfc3VwcG9ydGVkX2JhbmQNCj4gPiA+ID4gPiA+ID4gPiAqc2JhbmQsDQo+ID4gPiA+ ID4gPiA+ID4gKyAgX19sZTMyICpyeHYsIHU4ICptb2RlKQ0KPiA+ID4gPiA+ID4gPiA+ICt7DQo+ ID4gPiA+ID4gPiA+ID4gK3U4IHN0YmMsIGdpLCBidywgZGNtLCBuc3M7DQo+ID4gPiA+ID4gPiA+ ID4gK2Jvb2wgY2NrID0gZmFsc2U7DQo+ID4gPiA+ID4gPiA+ID4gK3UzMiB2MCwgdjI7DQo+ID4g PiA+ID4gPiA+ID4gK2ludCBpLCBpZHg7DQo+ID4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4g PiA+ICt2MCA9IGxlMzJfdG9fY3B1KHJ4dlswXSk7DQo+ID4gPiA+ID4gPiA+ID4gK3YyID0gbGUz Ml90b19jcHUocnh2WzJdKTsNCj4gPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ID4gK2lk eCA9IEZJRUxEX0dFVChNVF9QUlhWX1RYX1JBVEUsIHYwKTsNCj4gPiA+ID4gPiA+ID4gPiAraSA9 IGlkeDsNCj4gPiA+ID4gPiA+ID4gPiArbnNzID0gRklFTERfR0VUKE1UX1BSWFZfTlNUUywgdjAp ICsgMTsNCj4gPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ID4gK3N0YmMgPSBGSUVMRF9H RVQoTVRfUFJYVl9IVF9TVEJDLCB2Mik7DQo+ID4gPiA+ID4gPiA+ID4gK2dpID0gRklFTERfR0VU KE1UX1BSWFZfSFRfU0hPUlRfR0ksIHYyKTsNCj4gPiA+ID4gPiA+ID4gPiArKm1vZGUgPSBGSUVM RF9HRVQoTVRfUFJYVl9UWF9NT0RFLCB2Mik7DQo+ID4gPiA+ID4gPiA+ID4gK2RjbSA9IEZJRUxE X0dFVChNVF9QUlhWX0RDTSwgdjIpOw0KPiA+ID4gPiA+ID4gPiA+ICtidyA9IEZJRUxEX0dFVChN VF9QUlhWX0ZSQU1FX01PREUsIHYyKTsNCj4gPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ ID4gK3N3aXRjaCAoKm1vZGUpIHsNCj4gPiA+ID4gPiA+ID4gPiArY2FzZSBNVF9QSFlfVFlQRV9D Q0s6DQo+ID4gPiA+ID4gPiA+ID4gK2NjayA9IHRydWU7DQo+ID4gPiA+ID4gPiA+ID4gK2ZhbGx0 aHJvdWdoOw0KPiA+ID4gPiA+ID4gPiA+ICtjYXNlIE1UX1BIWV9UWVBFX09GRE06DQo+ID4gPiA+ ID4gPiA+ID4gK2kgPSBtdDc2X2dldF9yYXRlKGRldiwgc2JhbmQsIGksIGNjayk7DQo+ID4gPiA+ ID4gPiA+ID4gK2JyZWFrOw0KPiA+ID4gPiA+ID4gPiA+ICtjYXNlIE1UX1BIWV9UWVBFX0hUX0dG Og0KPiA+ID4gPiA+ID4gPiA+ICtjYXNlIE1UX1BIWV9UWVBFX0hUOg0KPiA+ID4gPiA+ID4gPiA+ ICtzdGF0dXMtPmVuY29kaW5nID0gUlhfRU5DX0hUOw0KPiA+ID4gPiA+ID4gPiA+ICtpZiAoZ2kp DQo+ID4gPiA+ID4gPiA+ID4gK3N0YXR1cy0+ZW5jX2ZsYWdzIHw9IFJYX0VOQ19GTEFHX1NIT1JU X0dJOw0KPiA+ID4gPiA+ID4gPiA+ICtpZiAoaSA+IDMxKQ0KPiA+ID4gPiA+ID4gPiA+ICtyZXR1 cm4gLUVJTlZBTDsNCj4gPiA+ID4gPiA+ID4gPiArYnJlYWs7DQo+ID4gPiA+ID4gPiA+ID4gK2Nh c2UgTVRfUEhZX1RZUEVfVkhUOg0KPiA+ID4gPiA+ID4gPiA+ICtzdGF0dXMtPm5zcyA9IG5zczsN Cj4gPiA+ID4gPiA+ID4gPiArc3RhdHVzLT5lbmNvZGluZyA9IFJYX0VOQ19WSFQ7DQo+ID4gPiA+ ID4gPiA+ID4gK2lmIChnaSkNCj4gPiA+ID4gPiA+ID4gPiArc3RhdHVzLT5lbmNfZmxhZ3MgfD0g UlhfRU5DX0ZMQUdfU0hPUlRfR0k7DQo+ID4gPiA+ID4gPiA+ID4gK2lmIChpID4gMTEpDQo+ID4g PiA+ID4gPiA+ID4gK3JldHVybiAtRUlOVkFMOw0KPiA+ID4gPiA+ID4gPiA+ICticmVhazsNCj4g PiA+ID4gPiA+ID4gPiArY2FzZSBNVF9QSFlfVFlQRV9IRV9NVToNCj4gPiA+ID4gPiA+ID4gPiAr Y2FzZSBNVF9QSFlfVFlQRV9IRV9TVToNCj4gPiA+ID4gPiA+ID4gPiArY2FzZSBNVF9QSFlfVFlQ RV9IRV9FWFRfU1U6DQo+ID4gPiA+ID4gPiA+ID4gK2Nhc2UgTVRfUEhZX1RZUEVfSEVfVEI6DQo+ ID4gPiA+ID4gPiA+ID4gK3N0YXR1cy0+bnNzID0gbnNzOw0KPiA+ID4gPiA+ID4gPiA+ICtzdGF0 dXMtPmVuY29kaW5nID0gUlhfRU5DX0hFOw0KPiA+ID4gPiA+ID4gPiA+ICtpICY9IEdFTk1BU0so MywgMCk7DQo+ID4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiA+ICtpZiAoZ2kgPD0gTkw4 MDIxMV9SQVRFX0lORk9fSEVfR0lfM18yKQ0KPiA+ID4gPiA+ID4gPiA+ICtzdGF0dXMtPmhlX2dp ID0gZ2k7DQo+ID4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiA+ICtzdGF0dXMtPmhlX2Rj bSA9IGRjbTsNCj4gPiA+ID4gPiA+ID4gPiArYnJlYWs7DQo+ID4gPiA+ID4gPiA+ID4gK2Nhc2Ug TVRfUEhZX1RZUEVfRUhUX1NVOg0KPiA+ID4gPiA+ID4gPiA+ICtjYXNlIE1UX1BIWV9UWVBFX0VI VF9UUklHOg0KPiA+ID4gPiA+ID4gPiA+ICtjYXNlIE1UX1BIWV9UWVBFX0VIVF9NVToNCj4gPiA+ ID4gPiA+ID4gPiArc3RhdHVzLT5uc3MgPSBuc3M7DQo+ID4gPiA+ID4gPiA+ID4gK3N0YXR1cy0+ ZW5jb2RpbmcgPSBSWF9FTkNfRUhUOw0KPiA+ID4gPiA+ID4gPiA+ICtpICY9IEdFTk1BU0soMywg MCk7DQo+ID4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiA+ICtpZiAoZ2kgPD0gTkw4MDIx MV9SQVRFX0lORk9fRUhUX0dJXzNfMikNCj4gPiA+ID4gPiA+ID4gPiArc3RhdHVzLT5laHQuZ2kg PSBnaTsNCj4gPiA+ID4gPiA+ID4gPiArYnJlYWs7DQo+ID4gPiA+ID4gPiA+ID4gK2RlZmF1bHQ6 DQo+ID4gPiA+ID4gPiA+ID4gK3JldHVybiAtRUlOVkFMOw0KPiA+ID4gPiA+ID4gPiA+ICt9DQo+ ID4gPiA+ID4gPiA+ID4gK3N0YXR1cy0+cmF0ZV9pZHggPSBpOw0KPiA+ID4gPiA+ID4gPiA+ICsN Cj4gPiA+ID4gPiA+ID4gPiArc3dpdGNoIChidykgew0KPiA+ID4gPiA+ID4gPiA+ICtjYXNlIElF RUU4MDIxMV9TVEFfUlhfQldfMjA6DQo+ID4gPiA+ID4gPiA+ID4gK2JyZWFrOw0KPiA+ID4gPiA+ ID4gPiA+ICtjYXNlIElFRUU4MDIxMV9TVEFfUlhfQldfNDA6DQo+ID4gPiA+ID4gPiA+ID4gK2lm ICgqbW9kZSAmIE1UX1BIWV9UWVBFX0hFX0VYVF9TVSAmJg0KPiA+ID4gPiA+ID4gPiA+ICsgICAg KGlkeCAmIE1UX1BSWFZfVFhfRVJfU1VfMTA2VCkpIHsNCj4gPiA+ID4gPiA+ID4gPiArc3RhdHVz LT5idyA9IFJBVEVfSU5GT19CV19IRV9SVTsNCj4gPiA+ID4gPiA+ID4gPiArc3RhdHVzLT5oZV9y dSA9DQo+ID4gPiA+ID4gPiA+ID4gK05MODAyMTFfUkFURV9JTkZPX0hFX1JVX0FMTE9DXzEwNjsN Cj4gPiA+ID4gPiA+ID4gPiArfSBlbHNlIHsNCj4gPiA+ID4gPiA+ID4gPiArc3RhdHVzLT5idyA9 IFJBVEVfSU5GT19CV180MDsNCj4gPiA+ID4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ID4gPiA+ICti cmVhazsNCj4gPiA+ID4gPiA+ID4gPiArY2FzZSBJRUVFODAyMTFfU1RBX1JYX0JXXzgwOg0KPiA+ ID4gPiA+ID4gPiA+ICtzdGF0dXMtPmJ3ID0gUkFURV9JTkZPX0JXXzgwOw0KPiA+ID4gPiA+ID4g PiA+ICticmVhazsNCj4gPiA+ID4gPiA+ID4gPiArY2FzZSBJRUVFODAyMTFfU1RBX1JYX0JXXzE2 MDoNCj4gPiA+ID4gPiA+ID4gPiArc3RhdHVzLT5idyA9IFJBVEVfSU5GT19CV18xNjA7DQo+ID4g PiA+ID4gPiA+ID4gK2JyZWFrOw0KPiA+ID4gPiA+ID4gPiA+ICtjYXNlIElFRUU4MDIxMV9TVEFf UlhfQldfMzIwOg0KPiA+ID4gPiA+ID4gPiA+ICtzdGF0dXMtPmJ3ID0gUkFURV9JTkZPX0JXXzMy MDsNCj4gPiA+ID4gPiA+ID4gPiArYnJlYWs7DQo+ID4gPiA+ID4gPiA+ID4gK2RlZmF1bHQ6DQo+ ID4gPiA+ID4gPiA+ID4gK3JldHVybiAtRUlOVkFMOw0KPiA+ID4gPiA+ID4gPiA+ICt9DQo+ID4g PiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiA+ICtzdGF0dXMtPmVuY19mbGFncyB8PSBSWF9F TkNfRkxBR19TVEJDX01BU0sgKiBzdGJjOw0KPiA+ID4gPiA+ID4gPiA+ICtpZiAoKm1vZGUgPCBN VF9QSFlfVFlQRV9IRV9TVSAmJiBnaSkNCj4gPiA+ID4gPiA+ID4gPiArc3RhdHVzLT5lbmNfZmxh Z3MgfD0gUlhfRU5DX0ZMQUdfU0hPUlRfR0k7DQo+ID4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ ID4gPiA+ICtyZXR1cm4gMDsNCj4gPiA+ID4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ID4gPiA+ICtF WFBPUlRfU1lNQk9MX0dQTChtdDc2X2Nvbm5hYzNfbWFjX2ZpbGxfcnhfcmF0ZSk7DQo+ID4gPiA+ ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiA+ICtzdGF0aWMgdm9pZA0KPiA+ID4gPiA+ID4gPiA+ ICttdDc2X2Nvbm5hYzNfbWFjX3dyaXRlX3R4d2lfODAyMyhfX2xlMzIgKnR4d2ksIHN0cnVjdA0K PiA+ID4gPiANCj4gPiA+ID4gc2tfYnVmZg0KPiA+ID4gPiA+ID4gPiA+ICpza2IsDQo+ID4gPiA+ ID4gPiA+ID4gKyBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkKQ0KPiA+ID4gPiA+ID4gPiA+ICt7DQo+ ID4gPiA+ID4gPiA+ID4gK3U4IHRpZCA9IHNrYi0+cHJpb3JpdHkgJiBJRUVFODAyMTFfUU9TX0NU TF9USURfTUFTSzsNCj4gPiA+ID4gPiA+ID4gPiArdTggZmNfdHlwZSwgZmNfc3R5cGU7DQo+ID4g PiA+ID4gPiA+ID4gK3UxNiBldGhlcnR5cGU7DQo+ID4gPiA+ID4gPiA+ID4gK2Jvb2wgd21tID0g ZmFsc2U7DQo+ID4gPiA+ID4gPiA+ID4gK3UzMiB2YWw7DQo+ID4gPiA+ID4gPiA+ID4gKw0KPiA+ ID4gPiA+ID4gPiA+ICtpZiAod2NpZC0+c3RhKSB7DQo+ID4gPiA+ID4gPiA+ID4gK3N0cnVjdCBp ZWVlODAyMTFfc3RhICpzdGE7DQo+ID4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiA+ICtz dGEgPSBjb250YWluZXJfb2YoKHZvaWQgKil3Y2lkLCBzdHJ1Y3QgaWVlZTgwMjExX3N0YSwNCj4g PiA+ID4gPiA+ID4gPiBkcnZfcHJpdik7DQo+ID4gPiA+ID4gPiA+ID4gK3dtbSA9IHN0YS0+d21l Ow0KPiA+ID4gPiA+ID4gPiA+ICt9DQo+ID4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiA+ ICt2YWwgPSBGSUVMRF9QUkVQKE1UX1RYRDFfSERSX0ZPUk1BVCwNCj4gPiA+ID4gPiA+ID4gPiBN VF9IRFJfRk9STUFUXzgwMl8zKQ0KPiA+ID4gPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiA+ID4g DQo+ID4gPiA+ID4gPiA+ID4gKyAgICAgIEZJRUxEX1BSRVAoTVRfVFhEMV9USUQsIHRpZCk7DQo+ ID4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiA+ICtldGhlcnR5cGUgPSBnZXRfdW5hbGln bmVkX2JlMTYoJnNrYi0+ZGF0YVsxMl0pOw0KPiA+ID4gPiA+ID4gPiA+ICtpZiAoZXRoZXJ0eXBl ID49IEVUSF9QXzgwMl8zX01JTikNCj4gPiA+ID4gPiA+ID4gPiArdmFsIHw9IE1UX1RYRDFfRVRI XzgwMl8zOw0KPiA+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gPiArdHh3aVsxXSB8PSBj cHVfdG9fbGUzMih2YWwpOw0KPiA+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gPiArZmNf dHlwZSA9IElFRUU4MDIxMV9GVFlQRV9EQVRBID4+IDI7DQo+ID4gPiA+ID4gPiA+ID4gK2ZjX3N0 eXBlID0gd21tID8gSUVFRTgwMjExX1NUWVBFX1FPU19EQVRBID4+IDQgOiAwOw0KPiA+ID4gPiA+ ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gPiArdmFsID0gRklFTERfUFJFUChNVF9UWEQyX0ZSQU1F X1RZUEUsIGZjX3R5cGUpIHwNCj4gPiA+ID4gPiA+ID4gPiArICAgICAgRklFTERfUFJFUChNVF9U WEQyX1NVQl9UWVBFLCBmY19zdHlwZSk7DQo+ID4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4g PiA+ICt0eHdpWzJdIHw9IGNwdV90b19sZTMyKHZhbCk7DQo+ID4gPiA+ID4gPiA+ID4gK30NCj4g PiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ID4gK3N0YXRpYyB2b2lkDQo+ID4gPiA+ID4g PiA+ID4gK210NzZfY29ubmFjM19tYWNfd3JpdGVfdHh3aV84MDIxMShzdHJ1Y3QgbXQ3Nl9kZXYN Cj4gPiA+ID4gPiA+ID4gPiAqZGV2LA0KPiA+ID4gPiANCj4gPiA+ID4gX19sZTMyDQo+ID4gPiA+ ID4gPiA+ID4gKnR4d2ksDQo+ID4gPiA+ID4gPiA+ID4gKyAgc3RydWN0IHNrX2J1ZmYgKnNrYiwN Cj4gPiA+ID4gPiA+ID4gPiArICBzdHJ1Y3QgaWVlZTgwMjExX2tleV9jb25mICprZXkpIHsNCj4g PiA+ID4gPiA+ID4gPiArc3RydWN0IGllZWU4MDIxMV9oZHIgKmhkciA9IChzdHJ1Y3QgaWVlZTgw MjExX2hkcg0KPiA+ID4gPiA+ID4gPiA+ICopc2tiLQ0KPiA+ID4gPiA+IA0KPiA+ID4gPiA+IGRh dGE7DQo+ID4gPiA+ID4gPiA+ID4gK3N0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdCA9IChzdHJ1 Y3QgaWVlZTgwMjExX21nbXQNCj4gPiA+ID4gPiA+ID4gPiAqKXNrYi0NCj4gPiA+ID4gPiA+ID4g PiA+IGRhdGE7DQo+ID4gPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiA+ID4gK3N0cnVjdCBpZWVl ODAyMTFfdHhfaW5mbyAqaW5mbyA9DQo+ID4gPiA+ID4gPiA+ID4gSUVFRTgwMjExX1NLQl9DQihz a2IpOw0KPiA+ID4gPiA+ID4gPiA+ICtib29sIG11bHRpY2FzdCA9IGlzX211bHRpY2FzdF9ldGhl cl9hZGRyKGhkci0+YWRkcjEpOw0KPiA+ID4gPiA+ID4gPiA+ICt1OCB0aWQgPSBza2ItPnByaW9y aXR5ICYgSUVFRTgwMjExX1FPU19DVExfVElEX01BU0s7DQo+ID4gPiA+ID4gPiA+ID4gK19fbGUx NiBmYyA9IGhkci0+ZnJhbWVfY29udHJvbDsNCj4gPiA+ID4gPiA+ID4gPiArdTggZmNfdHlwZSwg ZmNfc3R5cGU7DQo+ID4gPiA+ID4gPiA+ID4gK3UzMiB2YWw7DQo+ID4gPiA+ID4gPiA+ID4gKw0K PiA+ID4gPiA+ID4gPiA+ICtpZiAoaWVlZTgwMjExX2lzX2FjdGlvbihmYykgJiYNCj4gPiA+ID4g PiA+ID4gPiArICAgIG1nbXQtPnUuYWN0aW9uLmNhdGVnb3J5ID09IFdMQU5fQ0FURUdPUllfQkFD SyAmJg0KPiA+ID4gPiA+ID4gPiA+ICsgICAgbWdtdC0+dS5hY3Rpb24udS5hZGRiYV9yZXEuYWN0 aW9uX2NvZGUgPT0NCj4gPiA+ID4gPiA+ID4gPiBXTEFOX0FDVElPTl9BRERCQV9SRVEpDQo+ID4g PiA+ID4gPiA+ID4gK3RpZCA9IE1UX1RYX0FEREJBOw0KPiA+ID4gPiA+ID4gPiA+ICtlbHNlIGlm IChpZWVlODAyMTFfaXNfbWdtdChoZHItPmZyYW1lX2NvbnRyb2wpKQ0KPiA+ID4gPiA+ID4gPiA+ ICt0aWQgPSBNVF9UWF9OT1JNQUw7DQo+ID4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiA+ ICt2YWwgPSBGSUVMRF9QUkVQKE1UX1RYRDFfSERSX0ZPUk1BVCwNCj4gPiA+ID4gPiA+ID4gPiBN VF9IRFJfRk9STUFUXzgwMl8xMSkNCj4gPiA+ID4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gPiA+ IA0KPiA+ID4gPiA+ID4gPiA+ICsgICAgICBGSUVMRF9QUkVQKE1UX1RYRDFfSERSX0lORk8sDQo+ ID4gPiA+ID4gPiA+ID4gKyBpZWVlODAyMTFfZ2V0X2hkcmxlbl9mcm9tX3NrYihza2IpIC8gMikg fA0KPiA+ID4gPiA+ID4gPiA+ICsgICAgICBGSUVMRF9QUkVQKE1UX1RYRDFfVElELCB0aWQpOw0K PiA+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gPiAraWYgKCFpZWVlODAyMTFfaXNfZGF0 YShmYykgfHwgbXVsdGljYXN0IHx8DQo+ID4gPiA+ID4gPiA+ID4gKyAgICBpbmZvLT5mbGFncyAm IElFRUU4MDIxMV9UWF9DVExfVVNFX01JTlJBVEUpDQo+ID4gPiA+ID4gPiA+ID4gK3ZhbCB8PSBN VF9UWEQxX0ZJWEVEX1JBVEU7DQo+ID4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiA+ICtp ZiAoa2V5ICYmIG11bHRpY2FzdCAmJg0KPiA+ID4gPiA+ID4gPiA+IGllZWU4MDIxMV9pc19yb2J1 c3RfbWdtdF9mcmFtZShza2IpDQo+ID4gPiA+IA0KPiA+ID4gPiAmJg0KPiA+ID4gPiA+ID4gPiA+ ICsgICAga2V5LT5jaXBoZXIgPT0gV0xBTl9DSVBIRVJfU1VJVEVfQUVTX0NNQUMpIHsNCj4gPiA+ ID4gPiA+ID4gPiArdmFsIHw9IE1UX1RYRDFfQklQOw0KPiA+ID4gPiA+ID4gPiA+ICt0eHdpWzNd ICY9IH5jcHVfdG9fbGUzMihNVF9UWEQzX1BST1RFQ1RfRlJBTUUpOw0KPiA+ID4gPiA+ID4gPiA+ ICt9DQo+ID4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiA+ICt0eHdpWzFdIHw9IGNwdV90 b19sZTMyKHZhbCk7DQo+ID4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiA+ICtmY190eXBl ID0gKGxlMTZfdG9fY3B1KGZjKSAmIElFRUU4MDIxMV9GQ1RMX0ZUWVBFKSA+Pg0KPiA+ID4gPiA+ ID4gPiA+IDI7DQo+ID4gPiA+ID4gPiA+ID4gK2ZjX3N0eXBlID0gKGxlMTZfdG9fY3B1KGZjKSAm IElFRUU4MDIxMV9GQ1RMX1NUWVBFKSA+Pg0KPiA+ID4gPiA+ID4gPiA+IDQ7DQo+ID4gPiA+ID4g PiA+ID4gKw0KPiA+ID4gPiA+ID4gPiA+ICt2YWwgPSBGSUVMRF9QUkVQKE1UX1RYRDJfRlJBTUVf VFlQRSwgZmNfdHlwZSkgfA0KPiA+ID4gPiA+ID4gPiA+ICsgICAgICBGSUVMRF9QUkVQKE1UX1RY RDJfU1VCX1RZUEUsIGZjX3N0eXBlKTsNCj4gPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ ID4gK3R4d2lbMl0gfD0gY3B1X3RvX2xlMzIodmFsKTsNCj4gPiA+ID4gPiA+ID4gPiArDQo+ID4g PiA+ID4gPiA+ID4gK3R4d2lbM10gfD0gY3B1X3RvX2xlMzIoRklFTERfUFJFUChNVF9UWEQzX0JD TSwNCj4gPiA+ID4gPiA+ID4gPiBtdWx0aWNhc3QpKTsNCj4gPiA+ID4gPiA+ID4gPiAraWYgKGll ZWU4MDIxMV9pc19iZWFjb24oZmMpKSB7DQo+ID4gPiA+ID4gPiA+ID4gK3R4d2lbM10gJj0gfmNw dV90b19sZTMyKE1UX1RYRDNfU1dfUE9XRVJfTUdNVCk7DQo+ID4gPiA+ID4gPiA+ID4gK3R4d2lb M10gfD0gY3B1X3RvX2xlMzIoTVRfVFhEM19SRU1fVFhfQ09VTlQpOw0KPiA+ID4gPiA+ID4gPiA+ ICt9DQo+ID4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiA+ICtpZiAoaW5mby0+ZmxhZ3Mg JiBJRUVFODAyMTFfVFhfQ1RMX0lOSkVDVEVEKSB7DQo+ID4gPiA+ID4gPiA+ID4gK3UxNiBzZXFu byA9IGxlMTZfdG9fY3B1KGhkci0+c2VxX2N0cmwpOw0KPiA+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ ID4gPiA+ID4gPiAraWYgKGllZWU4MDIxMV9pc19iYWNrX3JlcShoZHItPmZyYW1lX2NvbnRyb2wp KSB7DQo+ID4gPiA+ID4gPiA+ID4gK3N0cnVjdCBpZWVlODAyMTFfYmFyICpiYXI7DQo+ID4gPiA+ ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiA+ICtiYXIgPSAoc3RydWN0IGllZWU4MDIxMV9iYXIg Kilza2ItPmRhdGE7DQo+ID4gPiA+ID4gPiA+ID4gK3NlcW5vID0gbGUxNl90b19jcHUoYmFyLT5z dGFydF9zZXFfbnVtKTsNCj4gPiA+ID4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ID4gPiA+ICsNCj4g PiA+ID4gPiA+ID4gPiArdmFsID0gTVRfVFhEM19TTl9WQUxJRCB8DQo+ID4gPiA+ID4gPiA+ID4g KyAgICAgIEZJRUxEX1BSRVAoTVRfVFhEM19TRVEsDQo+ID4gPiA+ID4gPiA+ID4gSUVFRTgwMjEx X1NFUV9UT19TTihzZXFubykpOw0KPiA+ID4gPiA+ID4gPiA+ICt0eHdpWzNdIHw9IGNwdV90b19s ZTMyKHZhbCk7DQo+ID4gPiA+ID4gPiA+ID4gK3R4d2lbM10gJj0gfmNwdV90b19sZTMyKE1UX1RY RDNfSFdfQU1TRFUpOw0KPiA+ID4gPiA+ID4gPiA+ICt9DQo+ID4gPiA+ID4gPiA+ID4gK30NCj4g PiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ID4gK3ZvaWQgbXQ3Nl9jb25uYWMzX21hY193 cml0ZV90eHdpKHN0cnVjdCBtdDc2X2RldiAqZGV2LA0KPiA+ID4gPiANCj4gPiA+ID4gX19sZTMy DQo+ID4gPiA+ID4gPiA+ID4gKnR4d2ksDQo+ID4gPiA+ID4gPiA+ID4gKyBzdHJ1Y3Qgc2tfYnVm ZiAqc2tiLCBzdHJ1Y3QgbXQ3Nl93Y2lkDQo+ID4gPiA+ID4gPiA+ID4gKndjaWQsDQo+ID4gPiA+ ID4gPiA+ID4gKyBzdHJ1Y3QgaWVlZTgwMjExX2tleV9jb25mICprZXksIGludA0KPiA+ID4gPiA+ ID4gPiA+IHBpZCwNCj4gPiA+ID4gPiA+ID4gPiArIGVudW0gbXQ3Nl90eHFfaWQgcWlkLCB1MzIg Y2hhbmdlZCkNCj4gPiA+ID4gPiA+ID4gPiArew0KPiA+ID4gPiA+ID4gPiA+ICt1MzIgdmFsLCBz el90eGQgPSBtdDc2X2lzX21taW8oZGV2KSA/IE1UX1RYRF9TSVpFIDoNCj4gPiA+ID4gPiA+ID4g PiBNVF9TRElPX1RYRF9TSVpFOw0KPiA+ID4gPiA+ID4gPiA+ICtzdHJ1Y3QgaWVlZTgwMjExX3R4 X2luZm8gKmluZm8gPQ0KPiA+ID4gPiA+ID4gPiA+IElFRUU4MDIxMV9TS0JfQ0Ioc2tiKTsNCj4g PiA+ID4gPiA+ID4gPiArc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZiA9IGluZm8tPmNvbnRyb2wu dmlmOw0KPiA+ID4gPiA+ID4gPiA+ICt1OCBiYW5kX2lkeCA9IChpbmZvLT5od19xdWV1ZSAmIE1U X1RYX0hXX1FVRVVFX1BIWSkgPj4NCj4gPiA+ID4gPiA+ID4gPiAyOw0KPiA+ID4gPiA+ID4gPiA+ ICt1OCBwX2ZtdCwgcV9pZHgsIG9tYWNfaWR4ID0gMCwgd21tX2lkeCA9IDA7DQo+ID4gPiA+ID4g PiA+ID4gK2Jvb2wgaXNfODAyMyA9IGluZm8tPmZsYWdzICYNCj4gPiA+ID4gDQo+ID4gPiA+IElF RUU4MDIxMV9UWF9DVExfSFdfODAyMTFfRU5DQVA7DQo+ID4gPiA+ID4gPiA+ID4gK3N0cnVjdCBt dDc2X3ZpZiAqbXZpZjsNCj4gPiA+ID4gPiA+ID4gPiArdTE2IHR4X2NvdW50ID0gMTU7DQo+ID4g PiA+ID4gPiA+ID4gK2Jvb2wgYmVhY29uID0gISEoY2hhbmdlZCAmIChCU1NfQ0hBTkdFRF9CRUFD T04gfA0KPiA+ID4gPiA+ID4gPiA+ICsgICAgQlNTX0NIQU5HRURfQkVBQ09OX0VOQUJMRUQpKTsN Cj4gPiA+ID4gPiA+ID4gPiArYm9vbCBpbmJhbmRfZGlzYyA9ICEhKGNoYW5nZWQgJg0KPiA+ID4g PiA+ID4gPiA+IChCU1NfQ0hBTkdFRF9VTlNPTF9CQ0FTVF9QUk9CRV9SRVNQIHwNCj4gPiA+ID4g PiA+ID4gPiArIEJTU19DSEFOR0VEX0ZJTFNfRElTQ09WRVJZKSk7DQo+ID4gPiA+ID4gPiA+ID4g Kw0KPiA+ID4gPiA+ID4gPiA+ICttdmlmID0gdmlmID8gKHN0cnVjdCBtdDc2X3ZpZiAqKXZpZi0+ ZHJ2X3ByaXYgOiBOVUxMOw0KPiA+ID4gPiA+ID4gPiA+ICtpZiAobXZpZikgew0KPiA+ID4gPiA+ ID4gPiA+ICtvbWFjX2lkeCA9IG12aWYtPm9tYWNfaWR4Ow0KPiA+ID4gPiA+ID4gPiA+ICt3bW1f aWR4ID0gbXZpZi0+d21tX2lkeDsNCj4gPiA+ID4gPiA+ID4gPiArYmFuZF9pZHggPSBtdmlmLT5i YW5kX2lkeDsNCj4gPiA+ID4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4g PiA+ID4gPiAraWYgKGluYmFuZF9kaXNjKSB7DQo+ID4gPiA+ID4gPiA+ID4gK3BfZm10ID0gTVRf VFhfVFlQRV9GVzsNCj4gPiA+ID4gPiA+ID4gPiArcV9pZHggPSBNVF9MTUFDX0FMVFgwOw0KPiA+ ID4gPiA+ID4gPiA+ICt9IGVsc2UgaWYgKGJlYWNvbikgew0KPiA+ID4gPiA+ID4gPiA+ICtwX2Zt dCA9IE1UX1RYX1RZUEVfRlc7DQo+ID4gPiA+ID4gPiA+ID4gK3FfaWR4ID0gTVRfTE1BQ19CQ04w Ow0KPiA+ID4gPiA+ID4gPiA+ICt9IGVsc2UgaWYgKHFpZCA+PSBNVF9UWFFfUFNEKSB7DQo+ID4g PiA+ID4gPiA+ID4gK3BfZm10ID0gbXQ3Nl9pc19tbWlvKGRldikgPyBNVF9UWF9UWVBFX0NUIDoN Cj4gPiA+ID4gPiA+ID4gPiBNVF9UWF9UWVBFX1NGOw0KPiA+ID4gPiA+ID4gPiA+ICtxX2lkeCA9 IE1UX0xNQUNfQUxUWDA7DQo+ID4gPiA+ID4gPiA+ID4gK30gZWxzZSB7DQo+ID4gPiA+ID4gPiA+ ID4gK3BfZm10ID0gbXQ3Nl9pc19tbWlvKGRldikgPyBNVF9UWF9UWVBFX0NUIDoNCj4gPiA+ID4g PiA+ID4gPiBNVF9UWF9UWVBFX1NGOw0KPiA+ID4gPiA+ID4gPiA+ICtxX2lkeCA9IHdtbV9pZHgg KiBNVDc2X0NPTk5BQ19NQVhfV01NX1NFVFMgKw0KPiA+ID4gPiA+ID4gPiA+ICttdDc2X2Nvbm5h Y19sbWFjX21hcHBpbmcoc2tiX2dldF9xdWV1ZV9tYXBwaW5nKA0KPiA+ID4gPiA+ID4gPiA+IHNr YikpOw0KPiA+ID4gPiA+ID4gPiA+ICt9DQo+ID4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4g PiA+ICt2YWwgPSBGSUVMRF9QUkVQKE1UX1RYRDBfVFhfQllURVMsIHNrYi0+bGVuICsgc3pfdHhk KQ0KPiA+ID4gPiA+ID4gPiA+IHwNCj4gPiA+ID4gPiA+ID4gPiArICAgICAgRklFTERfUFJFUChN VF9UWEQwX1BLVF9GTVQsIHBfZm10KSB8DQo+ID4gPiA+ID4gPiA+ID4gKyAgICAgIEZJRUxEX1BS RVAoTVRfVFhEMF9RX0lEWCwgcV9pZHgpOw0KPiA+ID4gPiA+ID4gPiA+ICt0eHdpWzBdID0gY3B1 X3RvX2xlMzIodmFsKTsNCj4gPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ID4gK3ZhbCA9 IEZJRUxEX1BSRVAoTVRfVFhEMV9XTEFOX0lEWCwgd2NpZC0+aWR4KSB8DQo+ID4gPiA+ID4gPiA+ ID4gKyAgICAgIEZJRUxEX1BSRVAoTVRfVFhEMV9PV05fTUFDLCBvbWFjX2lkeCk7DQo+ID4gPiA+ ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiA+ICtpZiAoYmFuZF9pZHgpDQo+ID4gPiA+ID4gPiA+ ID4gK3ZhbCB8PSBGSUVMRF9QUkVQKE1UX1RYRDFfVEdJRCwgYmFuZF9pZHgpOw0KPiA+ID4gPiA+ ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gPiArdHh3aVsxXSA9IGNwdV90b19sZTMyKHZhbCk7DQo+ ID4gPiA+ID4gPiA+ID4gK3R4d2lbMl0gPSAwOw0KPiA+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4g PiA+ID4gPiArdmFsID0gTVRfVFhEM19TV19QT1dFUl9NR01UIHwNCj4gPiA+ID4gPiA+ID4gPiAr ICAgICAgRklFTERfUFJFUChNVF9UWEQzX1JFTV9UWF9DT1VOVCwgdHhfY291bnQpOw0KPiA+ID4g PiA+ID4gPiA+ICtpZiAoa2V5KQ0KPiA+ID4gPiA+ID4gPiA+ICt2YWwgfD0gTVRfVFhEM19QUk9U RUNUX0ZSQU1FOw0KPiA+ID4gPiA+ID4gPiA+ICtpZiAoaW5mby0+ZmxhZ3MgJiBJRUVFODAyMTFf VFhfQ1RMX05PX0FDSykNCj4gPiA+ID4gPiA+ID4gPiArdmFsIHw9IE1UX1RYRDNfTk9fQUNLOw0K PiA+ID4gPiA+ID4gPiA+ICtpZiAod2NpZC0+YW1zZHUpDQo+ID4gPiA+ID4gPiA+ID4gK3ZhbCB8 PSBNVF9UWEQzX0hXX0FNU0RVOw0KPiA+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gPiAr dHh3aVszXSA9IGNwdV90b19sZTMyKHZhbCk7DQo+ID4gPiA+ID4gPiA+ID4gK3R4d2lbNF0gPSAw Ow0KPiA+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gPiArdmFsID0gRklFTERfUFJFUChN VF9UWEQ1X1BJRCwgcGlkKTsNCj4gPiA+ID4gPiA+ID4gPiAraWYgKHBpZCA+PSBNVF9QQUNLRVRf SURfRklSU1QpDQo+ID4gPiA+ID4gPiA+ID4gK3ZhbCB8PSBNVF9UWEQ1X1RYX1NUQVRVU19IT1NU Ow0KPiA+ID4gPiA+ID4gPiA+ICt0eHdpWzVdID0gY3B1X3RvX2xlMzIodmFsKTsNCj4gPiA+ID4g PiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ID4gK3ZhbCA9IE1UX1RYRDZfRElTX01BVCB8IE1UX1RY RDZfREFTIHwNCj4gPiA+ID4gPiA+ID4gPiArICAgICAgRklFTERfUFJFUChNVF9UWEQ2X01TRFVf Q05ULCAxKTsNCj4gPiA+ID4gPiA+ID4gPiArdHh3aVs2XSA9IGNwdV90b19sZTMyKHZhbCk7DQo+ ID4gPiA+ID4gPiA+ID4gK3R4d2lbN10gPSAwOw0KPiA+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4g PiA+ID4gPiAraWYgKGlzXzgwMjMpDQo+ID4gPiA+ID4gPiA+ID4gK210NzZfY29ubmFjM19tYWNf d3JpdGVfdHh3aV84MDIzKHR4d2ksIHNrYiwgd2NpZCk7DQo+ID4gPiA+ID4gPiA+ID4gK2Vsc2UN Cj4gPiA+ID4gPiA+ID4gPiArbXQ3Nl9jb25uYWMzX21hY193cml0ZV90eHdpXzgwMjExKGRldiwg dHh3aSwgc2tiLA0KPiA+ID4gPiA+ID4gPiA+IGtleSk7DQo+ID4gPiA+ID4gPiA+ID4gKw0KPiA+ ID4gPiA+ID4gPiA+ICtpZiAodHh3aVsxXSAmIGNwdV90b19sZTMyKE1UX1RYRDFfRklYRURfUkFU RSkpIHsNCj4gPiA+ID4gPiA+ID4gPiArc3RydWN0IGllZWU4MDIxMV9oZHIgKmhkciA9IChzdHJ1 Y3QgaWVlZTgwMjExX2hkcg0KPiA+ID4gPiA+ID4gPiA+ICopc2tiLT5kYXRhOw0KPiA+ID4gPiA+ ID4gPiA+ICtib29sIG1jYXN0ID0gaWVlZTgwMjExX2lzX2RhdGEoaGRyLT5mcmFtZV9jb250cm9s KSAmJg0KPiA+ID4gPiA+ID4gPiA+ICsgICAgIGlzX211bHRpY2FzdF9ldGhlcl9hZGRyKGhkci0+ YWRkcjEpOw0KPiA+ID4gPiA+ID4gPiA+ICt1OCBpZHggPSBNVDc2X0NPTk5BQzNfQkFTSUNfUkFU RVNfVEJMOw0KPiA+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gPiAraWYgKG12aWYpIHsN Cj4gPiA+ID4gPiA+ID4gPiAraWYgKG1jYXN0ICYmIG12aWYtPm1jYXN0X3JhdGVzX2lkeCkNCj4g PiA+ID4gPiA+ID4gPiAraWR4ID0gbXZpZi0+bWNhc3RfcmF0ZXNfaWR4Ow0KPiA+ID4gPiA+ID4g PiA+ICtlbHNlIGlmIChiZWFjb24gJiYgbXZpZi0+YmVhY29uX3JhdGVzX2lkeCkNCj4gPiA+ID4g PiA+ID4gPiAraWR4ID0gbXZpZi0+YmVhY29uX3JhdGVzX2lkeDsNCj4gPiA+ID4gPiA+ID4gPiAr ZWxzZQ0KPiA+ID4gPiA+ID4gPiA+ICtpZHggPSBtdmlmLT5iYXNpY19yYXRlc19pZHg7DQo+ID4g PiA+ID4gPiA+ID4gK30NCj4gPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ID4gK3R4d2lb Nl0gfD0gY3B1X3RvX2xlMzIoRklFTERfUFJFUChNVF9UWEQ2X1RYX1JBVEUsDQo+ID4gPiA+ID4g PiA+ID4gaWR4KSk7DQo+ID4gPiA+ID4gPiA+ID4gK3R4d2lbM10gfD0gY3B1X3RvX2xlMzIoTVRf VFhEM19CQV9ESVNBQkxFKTsNCj4gPiA+ID4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ID4gPiA+ICt9 DQo+ID4gPiA+ID4gPiA+ID4gK0VYUE9SVF9TWU1CT0xfR1BMKG10NzZfY29ubmFjM19tYWNfd3Jp dGVfdHh3aSk7DQo+ID4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiA+ICt2b2lkIG10NzZf Y29ubmFjM190eHdpX2ZyZWUoc3RydWN0IG10NzZfZGV2ICpkZXYsDQo+ID4gPiA+ID4gPiA+ID4g c3RydWN0DQo+ID4gPiA+ID4gPiA+ID4gbXQ3Nl90eHdpX2NhY2hlICp0LA0KPiA+ID4gPiA+ID4g PiA+ICsgICAgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSwNCj4gPiA+ID4gPiA+ID4gPiArICAg IHN0cnVjdCBsaXN0X2hlYWQgKmZyZWVfbGlzdCkNCj4gPiA+ID4gPiA+ID4gPiArew0KPiA+ID4g PiA+ID4gPiA+ICtfX2xlMzIgKnR4d2k7DQo+ID4gPiA+ID4gPiA+ID4gK3UxNiB3Y2lkX2lkeDsN Cj4gPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ID4gK210NzZfY29ubmFjX3R4cF9za2Jf dW5tYXAoZGV2LCB0KTsNCj4gPiA+ID4gPiA+ID4gPiAraWYgKCF0LT5za2IpDQo+ID4gPiA+ID4g PiA+ID4gK2dvdG8gb3V0Ow0KPiA+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gPiArdHh3 aSA9IChfX2xlMzIgKiltdDc2X2dldF90eHdpX3B0cihkZXYsIHQpOw0KPiA+ID4gPiA+ID4gPiA+ ICtpZiAoc3RhKSB7DQo+ID4gPiA+ID4gPiA+ID4gK3N0cnVjdCBtdDc2X3djaWQgKndjaWQgPSAo c3RydWN0IG10NzZfd2NpZCAqKXN0YS0NCj4gPiA+ID4gPiA+ID4gPiA+IGRydl9wcml2Ow0KPiA+ ID4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gPiArd2NpZF9p ZHggPSB3Y2lkLT5pZHg7DQo+ID4gPiA+ID4gPiA+ID4gK2lmIChsaWtlbHkodC0+c2tiLT5wcm90 b2NvbCAhPQ0KPiA+ID4gPiA+ID4gPiA+IGNwdV90b19iZTE2KEVUSF9QX1BBRSkpKQ0KPiA+ID4g PiA+ID4gPiA+ICttdDc2X2Nvbm5hYzNfdHhfY2hlY2tfYWdncihzdGEsIHR4d2kpOw0KPiA+ID4g PiA+ID4gPiA+ICt9IGVsc2Ugew0KPiA+ID4gPiA+ID4gPiA+ICt3Y2lkX2lkeCA9IGxlMzJfZ2V0 X2JpdHModHh3aVsxXSwgTVRfVFhEMV9XTEFOX0lEWCk7DQo+ID4gPiA+ID4gPiA+ID4gK30NCj4g PiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ID4gK19fbXQ3Nl90eF9jb21wbGV0ZV9za2Io ZGV2LCB3Y2lkX2lkeCwgdC0+c2tiLA0KPiA+ID4gPiA+ID4gPiA+IGZyZWVfbGlzdCk7DQo+ID4g PiA+ID4gPiA+ID4gK291dDoNCj4gPiA+ID4gPiA+ID4gPiArdC0+c2tiID0gTlVMTDsNCj4gPiA+ ID4gPiA+ID4gPiArbXQ3Nl9wdXRfdHh3aShkZXYsIHQpOw0KPiA+ID4gPiA+ID4gPiA+ICt9DQo+ ID4gPiA+ID4gPiA+ID4gK0VYUE9SVF9TWU1CT0xfR1BMKG10NzZfY29ubmFjM190eHdpX2ZyZWUp Ow0KPiA+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gPiArc3RhdGljIGJvb2wNCj4gPiA+ ID4gPiA+ID4gPiArbXQ3Nl9jb25uYWMzX21hY19hZGRfdHhzX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYg KmRldiwNCj4gPiA+ID4gPiA+ID4gPiBzdHJ1Y3QNCj4gPiA+ID4gPiA+ID4gPiBtdDc2X3djaWQN Cj4gPiA+ID4gPiA+ID4gPiAqd2NpZCwNCj4gPiA+ID4gPiA+ID4gPiArICAgICBpbnQgcGlkLCBf X2xlMzIgKnR4c19kYXRhKQ0KPiA+ID4gPiA+ID4gPiA+ICt7DQo+ID4gPiA+ID4gPiA+ID4gK3N0 cnVjdCBtdDc2X3N0YV9zdGF0cyAqc3RhdHMgPSAmd2NpZC0+c3RhdHM7DQo+ID4gPiA+ID4gPiA+ ID4gK3N0cnVjdCBpZWVlODAyMTFfc3VwcG9ydGVkX2JhbmQgKnNiYW5kOw0KPiA+ID4gPiA+ID4g PiA+ICtzdHJ1Y3QgaWVlZTgwMjExX3R4X2luZm8gKmluZm87DQo+ID4gPiA+ID4gPiA+ID4gK3Uz MiB0eHJhdGUsIHR4cywgbW9kZSwgc3RiYzsNCj4gPiA+ID4gPiA+ID4gPiArc3RydWN0IHJhdGVf aW5mbyByYXRlID0ge307DQo+ID4gPiA+ID4gPiA+ID4gK3N0cnVjdCBza19idWZmX2hlYWQgbGlz dDsNCj4gPiA+ID4gPiA+ID4gPiArc3RydWN0IG10NzZfcGh5ICptcGh5Ow0KPiA+ID4gPiA+ID4g PiA+ICtzdHJ1Y3Qgc2tfYnVmZiAqc2tiOw0KPiA+ID4gPiA+ID4gPiA+ICtib29sIGNjayA9IGZh bHNlOw0KPiA+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gPiArbXQ3Nl90eF9zdGF0dXNf bG9jayhkZXYsICZsaXN0KTsNCj4gPiA+ID4gPiA+ID4gPiArc2tiID0gbXQ3Nl90eF9zdGF0dXNf c2tiX2dldChkZXYsIHdjaWQsIHBpZCwgJmxpc3QpOw0KPiA+ID4gPiA+ID4gPiA+ICtpZiAoIXNr YikNCj4gPiA+ID4gPiA+ID4gPiArZ290byBvdXRfbm9fc2tiOw0KPiA+ID4gPiA+ID4gPiA+ICsN Cj4gPiA+ID4gPiA+ID4gPiArdHhzID0gbGUzMl90b19jcHUodHhzX2RhdGFbMF0pOw0KPiA+ID4g PiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gPiAraW5mbyA9IElFRUU4MDIxMV9TS0JfQ0Ioc2ti KTsNCj4gPiA+ID4gPiA+ID4gPiAraWYgKCEodHhzICYgTVRfVFhTMF9BQ0tfRVJST1JfTUFTSykp DQo+ID4gPiA+ID4gPiA+ID4gK2luZm8tPmZsYWdzIHw9IElFRUU4MDIxMV9UWF9TVEFUX0FDSzsN Cj4gPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ID4gK2luZm8tPnN0YXR1cy5hbXBkdV9s ZW4gPSAxOw0KPiA+ID4gPiA+ID4gPiA+ICtpbmZvLT5zdGF0dXMuYW1wZHVfYWNrX2xlbiA9ICEh KGluZm8tPmZsYWdzICYNCj4gPiA+ID4gPiA+ID4gPiArSUVFRTgwMjExX1RYX1NUQVRfQUNLKTsN Cj4gPiA+ID4gPiA+ID4gPiAraW5mby0+c3RhdHVzLnJhdGVzWzBdLmlkeCA9IC0xOw0KPiA+ID4g PiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gPiArdHhyYXRlID0gRklFTERfR0VUKE1UX1RYUzBf VFhfUkFURSwgdHhzKTsNCj4gPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ID4gK3JhdGUu bWNzID0gRklFTERfR0VUKE1UX1RYX1JBVEVfSURYLCB0eHJhdGUpOw0KPiA+ID4gPiA+ID4gPiA+ ICtyYXRlLm5zcyA9IEZJRUxEX0dFVChNVF9UWF9SQVRFX05TUywgdHhyYXRlKSArIDE7DQo+ID4g PiA+ID4gPiA+ID4gK3N0YmMgPSBsZTMyX2dldF9iaXRzKHR4c19kYXRhWzNdLCBNVF9UWFMzX1JB VEVfU1RCQyk7DQo+ID4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiA+ICtpZiAoc3RiYyAm JiByYXRlLm5zcyA+IDEpDQo+ID4gPiA+ID4gPiA+ID4gK3JhdGUubnNzID4+PSAxOw0KPiA+ID4g PiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gPiAraWYgKHJhdGUubnNzIC0gMSA8IEFSUkFZX1NJ WkUoc3RhdHMtPnR4X25zcykpDQo+ID4gPiA+ID4gPiA+ID4gK3N0YXRzLT50eF9uc3NbcmF0ZS5u c3MgLSAxXSsrOw0KPiA+ID4gPiA+ID4gPiA+ICtpZiAocmF0ZS5tY3MgPCBBUlJBWV9TSVpFKHN0 YXRzLT50eF9tY3MpKQ0KPiA+ID4gPiA+ID4gPiA+ICtzdGF0cy0+dHhfbWNzW3JhdGUubWNzXSsr Ow0KPiA+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gPiArbW9kZSA9IEZJRUxEX0dFVChN VF9UWF9SQVRFX01PREUsIHR4cmF0ZSk7DQo+ID4gPiA+ID4gPiA+ID4gK3N3aXRjaCAobW9kZSkg ew0KPiA+ID4gPiA+ID4gPiA+ICtjYXNlIE1UX1BIWV9UWVBFX0NDSzoNCj4gPiA+ID4gPiA+ID4g PiArY2NrID0gdHJ1ZTsNCj4gPiA+ID4gPiA+ID4gPiArZmFsbHRocm91Z2g7DQo+ID4gPiA+ID4g PiA+ID4gK2Nhc2UgTVRfUEhZX1RZUEVfT0ZETToNCj4gPiA+ID4gPiA+ID4gPiArbXBoeSA9IG10 NzZfZGV2X3BoeShkZXYsIHdjaWQtPnBoeV9pZHgpOw0KPiA+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ ID4gPiA+ID4gPiAraWYgKG1waHktPmNoYW5kZWYuY2hhbi0+YmFuZCA9PSBOTDgwMjExX0JBTkRf NUdIWikNCj4gPiA+ID4gPiA+ID4gPiArc2JhbmQgPSAmbXBoeS0+c2JhbmRfNWcuc2JhbmQ7DQo+ ID4gPiA+ID4gPiA+ID4gK2Vsc2UgaWYgKG1waHktPmNoYW5kZWYuY2hhbi0+YmFuZCA9PQ0KPiA+ ID4gPiA+ID4gPiA+IE5MODAyMTFfQkFORF82R0haKQ0KPiA+ID4gPiA+ID4gPiA+ICtzYmFuZCA9 ICZtcGh5LT5zYmFuZF82Zy5zYmFuZDsNCj4gPiA+ID4gPiA+ID4gPiArZWxzZQ0KPiA+ID4gPiA+ ID4gPiA+ICtzYmFuZCA9ICZtcGh5LT5zYmFuZF8yZy5zYmFuZDsNCj4gPiA+ID4gPiA+ID4gPiAr DQo+ID4gPiA+ID4gPiA+ID4gK3JhdGUubWNzID0gbXQ3Nl9nZXRfcmF0ZShtcGh5LT5kZXYsIHNi YW5kLCByYXRlLm1jcywNCj4gPiA+ID4gPiA+ID4gPiBjY2spOw0KPiA+ID4gPiA+ID4gPiA+ICty YXRlLmxlZ2FjeSA9IHNiYW5kLT5iaXRyYXRlc1tyYXRlLm1jc10uYml0cmF0ZTsNCj4gPiA+ID4g PiA+ID4gPiArYnJlYWs7DQo+ID4gPiA+ID4gPiA+ID4gK2Nhc2UgTVRfUEhZX1RZUEVfSFQ6DQo+ ID4gPiA+ID4gPiA+ID4gK2Nhc2UgTVRfUEhZX1RZUEVfSFRfR0Y6DQo+ID4gPiA+ID4gPiA+ID4g K2lmIChyYXRlLm1jcyA+IDMxKQ0KPiA+ID4gPiA+ID4gPiA+ICtnb3RvIG91dDsNCj4gPiA+ID4g PiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ID4gK3JhdGUuZmxhZ3MgPSBSQVRFX0lORk9fRkxBR1Nf TUNTOw0KPiA+ID4gPiA+ID4gPiA+ICtpZiAod2NpZC0+cmF0ZS5mbGFncyAmIFJBVEVfSU5GT19G TEFHU19TSE9SVF9HSSkNCj4gPiA+ID4gPiA+ID4gPiArcmF0ZS5mbGFncyB8PSBSQVRFX0lORk9f RkxBR1NfU0hPUlRfR0k7DQo+ID4gPiA+ID4gPiA+ID4gK2JyZWFrOw0KPiA+ID4gPiA+ID4gPiA+ ICtjYXNlIE1UX1BIWV9UWVBFX1ZIVDoNCj4gPiA+ID4gPiA+ID4gPiAraWYgKHJhdGUubWNzID4g OSkNCj4gPiA+ID4gPiA+ID4gPiArZ290byBvdXQ7DQo+ID4gPiA+ID4gPiA+ID4gKw0KPiA+ID4g PiA+ID4gPiA+ICtyYXRlLmZsYWdzID0gUkFURV9JTkZPX0ZMQUdTX1ZIVF9NQ1M7DQo+ID4gPiA+ ID4gPiA+ID4gK2JyZWFrOw0KPiA+ID4gPiA+ID4gPiA+ICtjYXNlIE1UX1BIWV9UWVBFX0hFX1NV Og0KPiA+ID4gPiA+ID4gPiA+ICtjYXNlIE1UX1BIWV9UWVBFX0hFX0VYVF9TVToNCj4gPiA+ID4g PiA+ID4gPiArY2FzZSBNVF9QSFlfVFlQRV9IRV9UQjoNCj4gPiA+ID4gPiA+ID4gPiArY2FzZSBN VF9QSFlfVFlQRV9IRV9NVToNCj4gPiA+ID4gPiA+ID4gPiAraWYgKHJhdGUubWNzID4gMTEpDQo+ ID4gPiA+ID4gPiA+ID4gK2dvdG8gb3V0Ow0KPiA+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ ID4gPiArcmF0ZS5oZV9naSA9IHdjaWQtPnJhdGUuaGVfZ2k7DQo+ID4gPiA+ID4gPiA+ID4gK3Jh dGUuaGVfZGNtID0gRklFTERfR0VUKE1UX1RYX1JBVEVfRENNLCB0eHJhdGUpOw0KPiA+ID4gPiA+ ID4gPiA+ICtyYXRlLmZsYWdzID0gUkFURV9JTkZPX0ZMQUdTX0hFX01DUzsNCj4gPiA+ID4gPiA+ ID4gPiArYnJlYWs7DQo+ID4gPiA+ID4gPiA+ID4gK2Nhc2UgTVRfUEhZX1RZUEVfRUhUX1NVOg0K PiA+ID4gPiA+ID4gPiA+ICtjYXNlIE1UX1BIWV9UWVBFX0VIVF9UUklHOg0KPiA+ID4gPiA+ID4g PiA+ICtjYXNlIE1UX1BIWV9UWVBFX0VIVF9NVToNCj4gPiA+ID4gPiA+ID4gPiAraWYgKHJhdGUu bWNzID4gMTMpDQo+ID4gPiA+ID4gPiA+ID4gK2dvdG8gb3V0Ow0KPiA+ID4gPiA+ID4gPiA+ICsN Cj4gPiA+ID4gPiA+ID4gPiArcmF0ZS5laHRfZ2kgPSB3Y2lkLT5yYXRlLmVodF9naTsNCj4gPiA+ ID4gPiA+ID4gPiArcmF0ZS5mbGFncyA9IFJBVEVfSU5GT19GTEFHU19FSFRfTUNTOw0KPiA+ID4g PiA+ID4gPiA+ICticmVhazsNCj4gPiA+ID4gPiA+ID4gPiArZGVmYXVsdDoNCj4gPiA+ID4gPiA+ ID4gPiArZ290byBvdXQ7DQo+ID4gPiA+ID4gPiA+ID4gK30NCj4gPiA+ID4gPiA+ID4gPiArDQo+ ID4gPiA+ID4gPiA+ID4gK3N0YXRzLT50eF9tb2RlW21vZGVdKys7DQo+ID4gPiA+ID4gPiA+ID4g Kw0KPiA+ID4gPiA+ID4gPiA+ICtzd2l0Y2ggKEZJRUxEX0dFVChNVF9UWFMwX0JXLCB0eHMpKSB7 DQo+ID4gPiA+ID4gPiA+ID4gK2Nhc2UgSUVFRTgwMjExX1NUQV9SWF9CV18zMjA6DQo+ID4gPiA+ ID4gPiA+ID4gK3JhdGUuYncgPSBSQVRFX0lORk9fQldfMzIwOw0KPiA+ID4gPiA+ID4gPiA+ICtz dGF0cy0+dHhfYndbNF0rKzsNCj4gPiA+ID4gPiA+ID4gPiArYnJlYWs7DQo+ID4gPiA+ID4gPiA+ ID4gK2Nhc2UgSUVFRTgwMjExX1NUQV9SWF9CV18xNjA6DQo+ID4gPiA+ID4gPiA+ID4gK3JhdGUu YncgPSBSQVRFX0lORk9fQldfMTYwOw0KPiA+ID4gPiA+ID4gPiA+ICtzdGF0cy0+dHhfYndbM10r KzsNCj4gPiA+ID4gPiA+ID4gPiArYnJlYWs7DQo+ID4gPiA+ID4gPiA+ID4gK2Nhc2UgSUVFRTgw MjExX1NUQV9SWF9CV184MDoNCj4gPiA+ID4gPiA+ID4gPiArcmF0ZS5idyA9IFJBVEVfSU5GT19C V184MDsNCj4gPiA+ID4gPiA+ID4gPiArc3RhdHMtPnR4X2J3WzJdKys7DQo+ID4gPiA+ID4gPiA+ ID4gK2JyZWFrOw0KPiA+ID4gPiA+ID4gPiA+ICtjYXNlIElFRUU4MDIxMV9TVEFfUlhfQldfNDA6 DQo+ID4gPiA+ID4gPiA+ID4gK3JhdGUuYncgPSBSQVRFX0lORk9fQldfNDA7DQo+ID4gPiA+ID4g PiA+ID4gK3N0YXRzLT50eF9id1sxXSsrOw0KPiA+ID4gPiA+ID4gPiA+ICticmVhazsNCj4gPiA+ ID4gPiA+ID4gPiArZGVmYXVsdDoNCj4gPiA+ID4gPiA+ID4gPiArcmF0ZS5idyA9IFJBVEVfSU5G T19CV18yMDsNCj4gPiA+ID4gPiA+ID4gPiArc3RhdHMtPnR4X2J3WzBdKys7DQo+ID4gPiA+ID4g PiA+ID4gK2JyZWFrOw0KPiA+ID4gPiA+ID4gPiA+ICt9DQo+ID4gPiA+ID4gPiA+ID4gK3djaWQt PnJhdGUgPSByYXRlOw0KPiA+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gPiArb3V0Og0K PiA+ID4gPiA+ID4gPiA+ICttdDc2X3R4X3N0YXR1c19za2JfZG9uZShkZXYsIHNrYiwgJmxpc3Qp Ow0KPiA+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gPiArb3V0X25vX3NrYjoNCj4gPiA+ ID4gPiA+ID4gPiArbXQ3Nl90eF9zdGF0dXNfdW5sb2NrKGRldiwgJmxpc3QpOw0KPiA+ID4gPiA+ ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gPiArcmV0dXJuICEhc2tiOw0KPiA+ID4gPiA+ID4gPiA+ ICt9DQo+ID4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiA+ICt2b2lkIG10NzZfY29ubmFj M19tYWNfYWRkX3R4cyhzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwNCj4gPiA+ID4gPiA+ID4gPiB2b2lk DQo+ID4gPiA+IA0KPiA+ID4gPiAqZGF0YSwNCj4gPiA+ID4gPiA+ID4gPiArICAgICAgdTMyIG1h eF93dGJsX3NpemUpDQo+ID4gPiA+ID4gPiA+ID4gK3sNCj4gPiA+ID4gPiA+ID4gPiArc3RydWN0 IG10NzZfd2NpZCAqd2NpZDsNCj4gPiA+ID4gPiA+ID4gPiArX19sZTMyICp0eHNfZGF0YSA9IGRh dGE7DQo+ID4gPiA+ID4gPiA+ID4gK3UxNiB3Y2lkeDsNCj4gPiA+ID4gPiA+ID4gPiArdTggcGlk Ow0KPiA+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gPiAraWYgKGxlMzJfZ2V0X2JpdHMo dHhzX2RhdGFbMF0sIE1UX1RYUzBfVFhTX0ZPUk1BVCkgPg0KPiA+ID4gPiA+ID4gPiA+IDEpDQo+ ID4gPiA+ID4gPiA+ID4gK3JldHVybjsNCj4gPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ ID4gK3djaWR4ID0gbGUzMl9nZXRfYml0cyh0eHNfZGF0YVsyXSwgTVRfVFhTMl9XQ0lEKTsNCj4g PiA+ID4gPiA+ID4gPiArcGlkID0gbGUzMl9nZXRfYml0cyh0eHNfZGF0YVszXSwgTVRfVFhTM19Q SUQpOw0KPiA+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gPiAraWYgKHBpZCA8IE1UX1BB Q0tFVF9JRF9GSVJTVCkNCj4gPiA+ID4gPiA+ID4gPiArcmV0dXJuOw0KPiA+ID4gPiA+ID4gPiA+ ICsNCj4gPiA+ID4gPiA+ID4gPiAraWYgKHdjaWR4ID49IG1heF93dGJsX3NpemUpDQo+ID4gPiA+ ID4gPiA+ID4gK3JldHVybjsNCj4gPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ID4gK3Jj dV9yZWFkX2xvY2soKTsNCj4gPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ID4gK3djaWQg PSByY3VfZGVyZWZlcmVuY2UoZGV2LT53Y2lkW3djaWR4XSk7DQo+ID4gPiA+ID4gPiA+ID4gK2lm ICghd2NpZCkNCj4gPiA+ID4gPiA+ID4gPiArZ290byBvdXQ7DQo+ID4gPiA+ID4gPiA+ID4gKw0K PiA+ID4gPiA+ID4gPiA+ICttdDc2X2Nvbm5hYzNfbWFjX2FkZF90eHNfc2tiKGRldiwgd2NpZCwg cGlkLA0KPiA+ID4gPiA+ID4gPiA+IHR4c19kYXRhKTsNCj4gPiA+ID4gPiA+ID4gPiAraWYgKCF3 Y2lkLT5zdGEpDQo+ID4gPiA+ID4gPiA+ID4gK2dvdG8gb3V0Ow0KPiA+ID4gPiA+ID4gPiA+ICsN Cj4gPiA+ID4gPiA+ID4gPiArc3Bpbl9sb2NrX2JoKCZkZXYtPnN0YV9wb2xsX2xvY2spOw0KPiA+ ID4gPiA+ID4gPiA+ICtpZiAobGlzdF9lbXB0eSgmd2NpZC0+cG9sbF9saXN0KSkNCj4gPiA+ID4g PiA+ID4gPiArbGlzdF9hZGRfdGFpbCgmd2NpZC0+cG9sbF9saXN0LCAmZGV2LT5zdGFfcG9sbF9s aXN0KTsNCj4gPiA+ID4gPiA+ID4gPiArc3Bpbl91bmxvY2tfYmgoJmRldi0+c3RhX3BvbGxfbG9j ayk7DQo+ID4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiA+ICtvdXQ6DQo+ID4gPiA+ID4g PiA+ID4gK3JjdV9yZWFkX3VubG9jaygpOw0KPiA+ID4gPiA+ID4gPiA+ICt9DQo+ID4gPiA+ID4g PiA+ID4gK0VYUE9SVF9TWU1CT0xfR1BMKG10NzZfY29ubmFjM19tYWNfYWRkX3R4cyk7DQo+ID4g PiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiA+ICt2b2lkIG10NzZfY29ubmFjM190eF90b2tl bl9wdXQoc3RydWN0IG10NzZfZGV2ICpkZXYpDQo+ID4gPiA+ID4gPiA+ID4gK3sNCj4gPiA+ID4g PiA+ID4gPiArc3RydWN0IG10NzZfdHh3aV9jYWNoZSAqdHh3aTsNCj4gPiA+ID4gPiA+ID4gPiAr aW50IGlkOw0KPiA+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gPiArc3Bpbl9sb2NrX2Jo KCZkZXYtPnRva2VuX2xvY2spOw0KPiA+ID4gPiA+ID4gPiA+ICtpZHJfZm9yX2VhY2hfZW50cnko JmRldi0+dG9rZW4sIHR4d2ksIGlkKSB7DQo+ID4gPiA+ID4gPiA+ID4gK210NzZfY29ubmFjM190 eHdpX2ZyZWUoZGV2LCB0eHdpLCBOVUxMLCBOVUxMKTsNCj4gPiA+ID4gPiA+ID4gPiArZGV2LT50 b2tlbl9jb3VudC0tOw0KPiA+ID4gPiA+ID4gPiA+ICt9DQo+ID4gPiA+ID4gPiA+ID4gK3NwaW5f dW5sb2NrX2JoKCZkZXYtPnRva2VuX2xvY2spOw0KPiA+ID4gPiA+ID4gPiA+ICtpZHJfZGVzdHJv eSgmZGV2LT50b2tlbik7DQo+ID4gPiA+ID4gPiA+ID4gK30NCj4gPiA+ID4gPiA+ID4gPiArRVhQ T1JUX1NZTUJPTF9HUEwobXQ3Nl9jb25uYWMzX3R4X3Rva2VuX3B1dCk7DQo+ID4gPiA+ID4gPiA+ ID4gZGlmZiAtLWdpdA0KPiA+ID4gPiA+ID4gPiA+IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVk aWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYzNfbWFjLmgNCj4gPiA+ID4gPiA+ID4gPiBiL2RyaXZlcnMv bmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMzX21hYy5oDQo+ID4gPiA+ID4g PiA+ID4gaW5kZXggNjY2M2EwYjQ2NTQxLi5iY2MxZDk3NmIyYjAgMTAwNjQ0DQo+ID4gPiA+ID4g PiA+ID4gLS0tDQo+ID4gPiA+ID4gPiA+ID4gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRl ay9tdDc2L210NzZfY29ubmFjM19tYWMuaA0KPiA+ID4gPiA+ID4gPiA+ICsrKw0KPiA+ID4gPiA+ ID4gPiA+IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYzNf bWFjLmgNCj4gPiA+ID4gPiA+ID4gPiBAQCAtNCw2ICs0LDI0IEBADQo+ID4gPiA+ID4gPiA+ID4g ICNpZm5kZWYgX19NVDc2X0NPTk5BQzNfTUFDX0gNCj4gPiA+ID4gPiA+ID4gPiAgI2RlZmluZSBf X01UNzZfQ09OTkFDM19NQUNfSA0KPiA+ID4gPiA+ID4gPiA+ICANCj4gPiA+ID4gPiA+ID4gPiAr LyogTk9URTogdXNlZCB0byBtYXAgbXQ3Nl9yYXRlcy4gaWR4IG1heSBjaGFuZ2UgaWYNCj4gPiA+ ID4gPiA+ID4gPiBmaXJtd2FyZQ0KPiA+ID4gPiA+ID4gPiA+IGV4cGFuZHMNCj4gPiA+ID4gPiA+ ID4gPiB0YWJsZSAqLw0KPiA+ID4gPiA+ID4gPiA+ICsjZGVmaW5lIE1UNzZfQ09OTkFDM19CQVNJ Q19SQVRFU19UQkwxMQ0KPiA+ID4gPiA+ID4gPiA+ICsjZGVmaW5lIE1UNzZfQ09OTkFDM19CRUFD T05fUkFURVNfVEJMMjUNCj4gPiA+ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+ID4gDQo+ID4gPiA+ ID4gPiA+IERpZmZlcmVudCBkZXZpY2VzIG1heSBoYXZlIGRpZmZlcmVudCBkZWZpbmVkIHZhbHVl LiANCj4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gVGhlIG90aGVyIFdpRmk3IGRldmljZSBJIGFt IHdvcmtpbmcgb24gcmVsaWVzIG9uIHRoZSB2YWx1ZXMNCj4gPiA+ID4gPiA+IEkNCj4gPiA+ID4g DQo+ID4gPiA+IG1vdmVkDQo+ID4gPiA+ID4gPiBpbg0KPiA+ID4gPiA+ID4gbXQ3Nl9jb25uYWMz X21hYy5oIChpbiBjb21tb24gd2l0aCBtdDc5OTYpLiBNb3Jlb3ZlciB5b3UNCj4gPiA+ID4gPiA+ IGNhbg0KPiA+ID4gPiANCj4gPiA+ID4gc3RpbGwNCj4gPiA+ID4gPiA+IGhhdmUgcGVyLWRldmlj ZSB2YWx1ZXMgaW4gbXQ3OTk2L21hYy5oIChJIGhhdmUgbm90IHJlbW92ZWQNCj4gPiA+ID4gPiA+ IGl0KS4NCj4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+IA0KPiA+ID4gPiA+IFBsZWFzZSBkb3VibGUg Y2hlY2sgd2l0aCB0aGUgbXRrIGZvbGsgeW91IHdvcmsgd2l0aC4gVGhlIDExDQo+ID4gPiA+ID4g YW5kDQo+ID4gPiA+ID4gMjUNCj4gPiA+ID4gDQo+ID4gPiA+IGlzDQo+ID4gPiA+ID4gdGhlIHZh bHVlIEkgZGlzY3Vzc2VkIHdpdGggZmlybXdhcmUgZm9sa3MgdG8gYXZvaWQNCj4gPiA+ID4gPiBv dmVybGFwcGluZw0KPiA+ID4gPiA+IHRoZQ0KPiA+ID4gPiANCj4gPiA+ID4gdGJsDQo+ID4gPiA+ ID4gbXQ3OTk2IHVzZSAoTVUvb3RoZXIgYWxnbyBpbiBmdyksIG9yIGl0IGNhdXNlcyBzb21ldGhp bmcNCj4gPiA+ID4gPiBoYXJkbHkNCj4gPiA+ID4gDQo+ID4gPiA+IHNvbHZpbmcNCj4gPiA+ID4g PiBpc3N1ZQ0KPiA+ID4gPiANCj4gPiA+ID4gc3VyZSwgdGh4IGZvciBwb2ludGluZyB0aGlzIG91 dC4NCj4gPiA+ID4gQERlcmVuOiBjYW4geW91IHBsZWFzZSBkb3VibGUgY2hlY2s/DQo+ID4gPiA+ IA0KPiA+ID4gPiBSZWdhcmRzLA0KPiA+ID4gPiBMb3JlbnpvDQo+ID4gPiA+IA0KPiA+ID4gPiA+ ICANCj4gPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiA+IEknbSB0aGlua2luZyBpZiBpdCdzIHRv byBlYXJseSB0byBjcmVhdGUgdGhpcyBwYXRjaCBmb3INCj4gPiA+ID4gPiA+ID4ganVzdA0KPiA+ ID4gPiANCj4gPiA+ID4gbW92aW5nDQo+ID4gPiA+ID4gPiA+IG10Nzk5NiB0byBjb25uYWMzX2xp Yj8NCj4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gVGhlIGNvZGUgSSBtb3ZlZCBpcyB1c2VkIGJ5 IHRoZSBvdGhlciBkZXZpY2UgYXMgd2VsbC4gVGhpcw0KPiA+ID4gPiA+ID4gc2VyaWVzDQo+ID4g PiA+IA0KPiA+ID4gPiBpcw0KPiA+ID4gPiA+ID4gYQ0KPiA+ID4gPiA+ID4gcHJlbGltaW5hcnkg c2VyaWVzIHRvIHN1cHBvcnQgaXQuDQo+ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+IFJlZ2FyZHMs DQo+ID4gPiA+ID4gPiBMb3JlbnpvDQo+ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+ID4gDQo+ID4g PiA+ID4gPiA+IFJ5ZGVyDQo+ID4gPiA+ID4gPiA+IA0K