Received: by 2002:a25:868d:0:0:0:0:0 with SMTP id z13csp483936ybk; Wed, 20 May 2020 04:46:49 -0700 (PDT) X-Google-Smtp-Source: ABdhPJx2VX4l9PK4QHnoGPzfiWz/5nuJM/vTv8svjFeKmIQ6hy+C6dLwRLFDWugER9vJ3JUECjWN X-Received: by 2002:a17:906:f891:: with SMTP id lg17mr3203656ejb.443.1589975209612; Wed, 20 May 2020 04:46:49 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1589975209; cv=none; d=google.com; s=arc-20160816; b=l+UhkX8wEP3DdMNNPpaoSSsZ+4BbddjoyK2rMy3HDaAc+jWrjidRVrrSVduZQFddEA 7Q3z25TLUMHj5atCYvZwtbBeTpkQ+c+ldgAmeg2uXC5ir3MQ2Y2ySiPx3BHoOmfhnKgg 1UyfHjnG3z6tAiYPIztmSGra6XybANqy54aNgyOczI8RF87C/TNLYm6UHg2LxgJU3mTB +7vCqsouBWBr/UFvDFMug/aGTeCGOGiuygvYWlt3jGp6iNFdE9yXLTPBKEhtoQYGBhjM oalrs70BV7Gom9jiqClgN1R/RZKzPOXFCgbSN4+uSERFDTgaUCq0ZnTPkMPEoLj/z1fo lcHQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:date:cc:to:from:subject:message-id :dkim-signature; bh=53HrMerX7zHNzSy3EbQ1wqVhA18lPda6ByiE5grKwwA=; b=l9WIcE2KxcxIM88ksGHU1HtNufQ8ZnHJJZtJyckdVN9G/AjEPMY7UIKNmN0XkckyNC GalMerA2xoFaJ+30zeU9C1pYZf+QdkDcapw7e9AXoQv32CEpZIbvClCKcnd/86NBxPCc 8hnooTkI0vLqQbJSj4n7QCjYiwyS68S7q3MnTtEvSKaRtFouuW7mShTLczWqgOYdpXQh wX52cO2EPGA+uC1zW6RqMWlHYqgdaeXTDrqMXA6Zob8R5KkbqA4MO6xukegM6bMRpASG DNcVWfkw9gqBXb5I9ZcVwAyFDmkxceKthiXMobinlFjyGpbI069uyGvVJwAVpJlcpHk/ aq6g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@mediatek.com header.s=dk header.b="XCCFS4/h"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=mediatek.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id j5si1522171ejm.468.2020.05.20.04.46.26; Wed, 20 May 2020 04:46:49 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@mediatek.com header.s=dk header.b="XCCFS4/h"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=mediatek.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726737AbgETLms (ORCPT + 99 others); Wed, 20 May 2020 07:42:48 -0400 Received: from mailgw01.mediatek.com ([210.61.82.183]:16115 "EHLO mailgw01.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1726436AbgETLmr (ORCPT ); Wed, 20 May 2020 07:42:47 -0400 X-UUID: bbc6db6eda6540249650616866ff9002-20200520 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:MIME-Version:Content-Type:References:In-Reply-To:Date:CC:To:From:Subject:Message-ID; bh=53HrMerX7zHNzSy3EbQ1wqVhA18lPda6ByiE5grKwwA=; b=XCCFS4/hYoOnDg8n/ZIFAo30MBuy7Aosj0JllHXSd/RG6Vlqfuk30BWuDMuVEjYmMjtj44eCC440USN/hnlpFYpZADduR/aDyMpUQQ1ChHkeZl2CrEWHiWKwstV3b+A01W5Si7iUOYwTOLwQT67ExY1DcDMVnO36VVcr5KON7Y8=; X-UUID: bbc6db6eda6540249650616866ff9002-20200520 Received: from mtkcas06.mediatek.inc [(172.21.101.30)] by mailgw01.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.10 Build 0809 with TLS) with ESMTP id 1695649419; Wed, 20 May 2020 19:42:37 +0800 Received: from mtkcas08.mediatek.inc (172.21.101.126) by mtkmbs01n2.mediatek.inc (172.21.101.79) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Wed, 20 May 2020 19:42:34 +0800 Received: from [172.21.84.99] (172.21.84.99) by mtkcas08.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Wed, 20 May 2020 19:42:34 +0800 Message-ID: <1589974955.3182.8.camel@mtksdccf07> Subject: Re: [PATCH v4 2/4] kasan: record and print the free track From: Walter Wu To: Dmitry Vyukov CC: Andrey Ryabinin , Alexander Potapenko , kasan-dev , Linux-MM , LKML , Linux ARM , wsd_upstream , Date: Wed, 20 May 2020 19:42:35 +0800 In-Reply-To: References: <20200519022517.24182-1-walter-zh.wu@mediatek.com> <1589947387.29577.35.camel@mtksdccf07> <1589951659.4440.4.camel@mtksdccf07> <1589955526.4440.22.camel@mtksdccf07> <1589966220.14692.24.camel@mtksdccf07> <1589969715.2612.2.camel@mtksdccf07> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.2.3-0ubuntu6 MIME-Version: 1.0 X-TM-SNTS-SMTP: 2A333F752C7F951935C8E7CA0B4A93428A26D5B33DA1FD108430E821AC02EB162000:8 X-MTK: N Content-Transfer-Encoding: base64 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org T24gV2VkLCAyMDIwLTA1LTIwIGF0IDEzOjE1ICswMjAwLCAnRG1pdHJ5IFZ5dWtvdicgdmlhIGth c2FuLWRldiB3cm90ZToNCj4gT24gV2VkLCBNYXkgMjAsIDIwMjAgYXQgMTI6MTUgUE0gV2FsdGVy IFd1IDx3YWx0ZXItemgud3VAbWVkaWF0ZWsuY29tPiB3cm90ZToNCj4gPg0KPiA+IE9uIFdlZCwg MjAyMC0wNS0yMCBhdCAxMTo0NCArMDIwMCwgJ0RtaXRyeSBWeXVrb3YnIHZpYSBrYXNhbi1kZXYg d3JvdGU6DQo+ID4gPiBPbiBXZWQsIE1heSAyMCwgMjAyMCBhdCAxMToxNyBBTSBXYWx0ZXIgV3Ug PHdhbHRlci16aC53dUBtZWRpYXRlay5jb20+IHdyb3RlOg0KPiA+ID4gPiA+ID4gT24gV2VkLCAy MDIwLTA1LTIwIGF0IDEzOjE0ICswODAwLCBXYWx0ZXIgV3Ugd3JvdGU6DQo+ID4gPiA+ID4gPiA+ ID4gT24gV2VkLCBNYXkgMjAsIDIwMjAgYXQgNjowMyBBTSBXYWx0ZXIgV3UgPHdhbHRlci16aC53 dUBtZWRpYXRlay5jb20+IHdyb3RlOg0KPiA+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4g PiA+ID4gT24gVHVlLCBNYXkgMTksIDIwMjAgYXQgNDoyNSBBTSBXYWx0ZXIgV3UgPHdhbHRlci16 aC53dUBtZWRpYXRlay5jb20+IHdyb3RlOg0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ ID4gPiA+ID4gPiA+ID4gTW92ZSBmcmVlIHRyYWNrIGZyb20gc2x1YiBhbGxvYyBtZXRhLWRhdGEg dG8gc2x1YiBmcmVlIG1ldGEtZGF0YSBpbg0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+IG9yZGVyIHRv IG1ha2Ugc3RydWN0IGthc2FuX2ZyZWVfbWV0YSBzaXplIGlzIDE2IGJ5dGVzLiBJdCBpcyBhIGdv b2QNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiBzaXplIGJlY2F1c2UgaXQgaXMgdGhlIG1pbmltYWwg cmVkem9uZSBzaXplIGFuZCBhIGdvb2QgbnVtYmVyIG9mDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4g YWxpZ25tZW50Lg0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4g Rm9yIGZyZWUgdHJhY2sgaW4gZ2VuZXJpYyBLQVNBTiwgd2UgZG8gdGhlIG1vZGlmaWNhdGlvbiBp biBzdHJ1Y3QNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiBrYXNhbl9hbGxvY19tZXRhIGFuZCBrYXNh bl9mcmVlX21ldGE6DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gLSByZW1vdmUgZnJlZSB0cmFjayBm cm9tIGthc2FuX2FsbG9jX21ldGEuDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gLSBhZGQgZnJlZSB0 cmFjayBpbnRvIGthc2FuX2ZyZWVfbWV0YS4NCj4gPiA+ID4gPiA+ID4gPiA+ID4gPg0KPiA+ID4g PiA+ID4gPiA+ID4gPiA+IFsxXWh0dHBzOi8vYnVnemlsbGEua2VybmVsLm9yZy9zaG93X2J1Zy5j Z2k/aWQ9MTk4NDM3DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiA+ID4g PiBTaWduZWQtb2ZmLWJ5OiBXYWx0ZXIgV3UgPHdhbHRlci16aC53dUBtZWRpYXRlay5jb20+DQo+ ID4gPiA+ID4gPiA+ID4gPiA+ID4gU3VnZ2VzdGVkLWJ5OiBEbWl0cnkgVnl1a292IDxkdnl1a292 QGdvb2dsZS5jb20+DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gQ2M6IEFuZHJleSBSeWFiaW5pbiA8 YXJ5YWJpbmluQHZpcnR1b3p6by5jb20+DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gQ2M6IERtaXRy eSBWeXVrb3YgPGR2eXVrb3ZAZ29vZ2xlLmNvbT4NCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiBDYzog QWxleGFuZGVyIFBvdGFwZW5rbyA8Z2xpZGVyQGdvb2dsZS5jb20+DQo+ID4gPiA+ID4gPiA+ID4g PiA+ID4gLS0tDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gIG1tL2thc2FuL2NvbW1vbi5jICB8IDIy ICsrLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiAgbW0va2FzYW4v Z2VuZXJpYy5jIHwgMTggKysrKysrKysrKysrKysrKysrDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4g IG1tL2thc2FuL2thc2FuLmggICB8ICA3ICsrKysrKysNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiAg bW0va2FzYW4vcmVwb3J0LmMgIHwgMjAgLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gPiA+ID4gPiA+ ID4gPiA+ID4gPiAgbW0va2FzYW4vdGFncy5jICAgIHwgMzcgKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKw0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ICA1IGZpbGVzIGNoYW5nZWQs IDY0IGluc2VydGlvbnMoKyksIDQwIGRlbGV0aW9ucygtKQ0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL21tL2thc2FuL2NvbW1vbi5jIGIv bW0va2FzYW4vY29tbW9uLmMNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiBpbmRleCA4YmM2MTgyODli YjEuLjQ3YjUzOTEyZjMyMiAxMDA2NDQNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiAtLS0gYS9tbS9r YXNhbi9jb21tb24uYw0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ICsrKyBiL21tL2thc2FuL2NvbW1v bi5jDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gQEAgLTUxLDcgKzUxLDcgQEAgZGVwb3Rfc3RhY2tf aGFuZGxlX3Qga2FzYW5fc2F2ZV9zdGFjayhnZnBfdCBmbGFncykNCj4gPiA+ID4gPiA+ID4gPiA+ ID4gPiAgICAgICAgIHJldHVybiBzdGFja19kZXBvdF9zYXZlKGVudHJpZXMsIG5yX2VudHJpZXMs IGZsYWdzKTsNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiAgfQ0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gLXN0YXRpYyBpbmxpbmUgdm9pZCBzZXRfdHJhY2soc3Ry dWN0IGthc2FuX3RyYWNrICp0cmFjaywgZ2ZwX3QgZmxhZ3MpDQo+ID4gPiA+ID4gPiA+ID4gPiA+ ID4gK3ZvaWQga2FzYW5fc2V0X3RyYWNrKHN0cnVjdCBrYXNhbl90cmFjayAqdHJhY2ssIGdmcF90 IGZsYWdzKQ0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ICB7DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4g ICAgICAgICB0cmFjay0+cGlkID0gY3VycmVudC0+cGlkOw0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ ICAgICAgICAgdHJhY2stPnN0YWNrID0ga2FzYW5fc2F2ZV9zdGFjayhmbGFncyk7DQo+ID4gPiA+ ID4gPiA+ID4gPiA+ID4gQEAgLTI5OSwyNCArMjk5LDYgQEAgc3RydWN0IGthc2FuX2ZyZWVfbWV0 YSAqZ2V0X2ZyZWVfaW5mbyhzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGUsDQo+ID4gPiA+ID4gPiA+ ID4gPiA+ID4gICAgICAgICByZXR1cm4gKHZvaWQgKilvYmplY3QgKyBjYWNoZS0+a2FzYW5faW5m by5mcmVlX21ldGFfb2Zmc2V0Ow0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ICB9DQo+ID4gPiA+ID4g PiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiAtDQo+ID4gPiA+ID4gPiA+ID4gPiA+ ID4gLXN0YXRpYyB2b2lkIGthc2FuX3NldF9mcmVlX2luZm8oc3RydWN0IGttZW1fY2FjaGUgKmNh Y2hlLA0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+IC0gICAgICAgICAgICAgICB2b2lkICpvYmplY3Qs IHU4IHRhZykNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiAtew0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ IC0gICAgICAgc3RydWN0IGthc2FuX2FsbG9jX21ldGEgKmFsbG9jX21ldGE7DQo+ID4gPiA+ID4g PiA+ID4gPiA+ID4gLSAgICAgICB1OCBpZHggPSAwOw0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+IC0N Cj4gPiA+ID4gPiA+ID4gPiA+ID4gPiAtICAgICAgIGFsbG9jX21ldGEgPSBnZXRfYWxsb2NfaW5m byhjYWNoZSwgb2JqZWN0KTsNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiAtDQo+ID4gPiA+ID4gPiA+ ID4gPiA+ID4gLSNpZmRlZiBDT05GSUdfS0FTQU5fU1dfVEFHU19JREVOVElGWQ0KPiA+ID4gPiA+ ID4gPiA+ID4gPiA+IC0gICAgICAgaWR4ID0gYWxsb2NfbWV0YS0+ZnJlZV90cmFja19pZHg7DQo+ ID4gPiA+ID4gPiA+ID4gPiA+ID4gLSAgICAgICBhbGxvY19tZXRhLT5mcmVlX3BvaW50ZXJfdGFn W2lkeF0gPSB0YWc7DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gLSAgICAgICBhbGxvY19tZXRhLT5m cmVlX3RyYWNrX2lkeCA9IChpZHggKyAxKSAlIEtBU0FOX05SX0ZSRUVfU1RBQ0tTOw0KPiA+ID4g PiA+ID4gPiA+ID4gPiA+IC0jZW5kaWYNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiAtDQo+ID4gPiA+ ID4gPiA+ID4gPiA+ID4gLSAgICAgICBzZXRfdHJhY2soJmFsbG9jX21ldGEtPmZyZWVfdHJhY2tb aWR4XSwgR0ZQX05PV0FJVCk7DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gLX0NCj4gPiA+ID4gPiA+ ID4gPiA+ID4gPiAtDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gIHZvaWQga2FzYW5fcG9pc29uX3Ns YWIoc3RydWN0IHBhZ2UgKnBhZ2UpDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gIHsNCj4gPiA+ID4g PiA+ID4gPiA+ID4gPiAgICAgICAgIHVuc2lnbmVkIGxvbmcgaTsNCj4gPiA+ID4gPiA+ID4gPiA+ ID4gPiBAQCAtNDkyLDcgKzQ3NCw3IEBAIHN0YXRpYyB2b2lkICpfX2thc2FuX2ttYWxsb2Moc3Ry dWN0IGttZW1fY2FjaGUgKmNhY2hlLCBjb25zdCB2b2lkICpvYmplY3QsDQo+ID4gPiA+ID4gPiA+ ID4gPiA+ID4gICAgICAgICAgICAgICAgIEtBU0FOX0tNQUxMT0NfUkVEWk9ORSk7DQo+ID4gPiA+ ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiAgICAgICAgIGlmIChjYWNoZS0+ ZmxhZ3MgJiBTTEFCX0tBU0FOKQ0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+IC0gICAgICAgICAgICAg ICBzZXRfdHJhY2soJmdldF9hbGxvY19pbmZvKGNhY2hlLCBvYmplY3QpLT5hbGxvY190cmFjaywg ZmxhZ3MpOw0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICBrYXNhbl9zZXRf dHJhY2soJmdldF9hbGxvY19pbmZvKGNhY2hlLCBvYmplY3QpLT5hbGxvY190cmFjaywgZmxhZ3Mp Ow0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gICAgICAgICBy ZXR1cm4gc2V0X3RhZyhvYmplY3QsIHRhZyk7DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gIH0NCj4g PiA+ID4gPiA+ID4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvbW0va2FzYW4vZ2VuZXJpYy5jIGIvbW0v a2FzYW4vZ2VuZXJpYy5jDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gaW5kZXggMzM3MmJkY2FmOTJh Li43NjNkOGExM2UwYWMgMTAwNjQ0DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gLS0tIGEvbW0va2Fz YW4vZ2VuZXJpYy5jDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gKysrIGIvbW0va2FzYW4vZ2VuZXJp Yy5jDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gQEAgLTM0NCwzICszNDQsMjEgQEAgdm9pZCBrYXNh bl9yZWNvcmRfYXV4X3N0YWNrKHZvaWQgKmFkZHIpDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gICAg ICAgICBhbGxvY19pbmZvLT5hdXhfc3RhY2tbMV0gPSBhbGxvY19pbmZvLT5hdXhfc3RhY2tbMF07 DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gICAgICAgICBhbGxvY19pbmZvLT5hdXhfc3RhY2tbMF0g PSBrYXNhbl9zYXZlX3N0YWNrKEdGUF9OT1dBSVQpOw0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ICB9 DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ICt2b2lkIGth c2FuX3NldF9mcmVlX2luZm8oc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlLA0KPiA+ID4gPiA+ID4g PiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqb2JqZWN0LCB1 OCB0YWcpDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gK3sNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiAr ICAgICAgIHN0cnVjdCBrYXNhbl9mcmVlX21ldGEgKmZyZWVfbWV0YTsNCj4gPiA+ID4gPiA+ID4g PiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgICBmcmVlX21ldGEgPSBnZXRf ZnJlZV9pbmZvKGNhY2hlLCBvYmplY3QpOw0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ICsgICAgICAg a2FzYW5fc2V0X3RyYWNrKCZmcmVlX21ldGEtPmZyZWVfdHJhY2ssIEdGUF9OT1dBSVQpOw0KPiA+ ID4gPiA+ID4gPiA+ID4gPiA+ICt9DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ ID4gPiA+ID4gPiA+ICtzdHJ1Y3Qga2FzYW5fdHJhY2sgKmthc2FuX2dldF9mcmVlX3RyYWNrKHN0 cnVjdCBrbWVtX2NhY2hlICpjYWNoZSwNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKm9iamVjdCwgdTggdGFnKQ0KPiA+ID4gPiA+ID4g PiA+ID4gPiA+ICt7DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgICBzdHJ1Y3Qga2FzYW5f ZnJlZV9tZXRhICpmcmVlX21ldGE7DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ ID4gPiA+ID4gPiA+ICsgICAgICAgZnJlZV9tZXRhID0gZ2V0X2ZyZWVfaW5mbyhjYWNoZSwgb2Jq ZWN0KTsNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiArICAgICAgIHJldHVybiAmZnJlZV9tZXRhLT5m cmVlX3RyYWNrOw0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ICt9DQo+ID4gPiA+ID4gPiA+ID4gPiA+ ID4gZGlmZiAtLWdpdCBhL21tL2thc2FuL2thc2FuLmggYi9tbS9rYXNhbi9rYXNhbi5oDQo+ID4g PiA+ID4gPiA+ID4gPiA+ID4gaW5kZXggYTczOTFiYzgzMDcwLi5hZDg5N2VjMzY1NDUgMTAwNjQ0 DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gLS0tIGEvbW0va2FzYW4va2FzYW4uaA0KPiA+ID4gPiA+ ID4gPiA+ID4gPiA+ICsrKyBiL21tL2thc2FuL2thc2FuLmgNCj4gPiA+ID4gPiA+ID4gPiA+ID4g PiBAQCAtMTI3LDYgKzEyNyw5IEBAIHN0cnVjdCBrYXNhbl9mcmVlX21ldGEgew0KPiA+ID4gPiA+ ID4gPiA+ID4gPiA+ICAgICAgICAgICogT3RoZXJ3aXNlIGl0IG1pZ2h0IGJlIHVzZWQgZm9yIHRo ZSBhbGxvY2F0b3IgZnJlZWxpc3QuDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gICAgICAgICAgKi8N Cj4gPiA+ID4gPiA+ID4gPiA+ID4gPiAgICAgICAgIHN0cnVjdCBxbGlzdF9ub2RlIHF1YXJhbnRp bmVfbGluazsNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiArI2lmZGVmIENPTkZJR19LQVNBTl9HRU5F UklDDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgICBzdHJ1Y3Qga2FzYW5fdHJhY2sgZnJl ZV90cmFjazsNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiArI2VuZGlmDQo+ID4gPiA+ID4gPiA+ID4g PiA+ID4gIH07DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiAg c3RydWN0IGthc2FuX2FsbG9jX21ldGEgKmdldF9hbGxvY19pbmZvKHN0cnVjdCBrbWVtX2NhY2hl ICpjYWNoZSwNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiBAQCAtMTY4LDYgKzE3MSwxMCBAQCB2b2lk IGthc2FuX3JlcG9ydF9pbnZhbGlkX2ZyZWUodm9pZCAqb2JqZWN0LCB1bnNpZ25lZCBsb25nIGlw KTsNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiAgc3RydWN0IHBhZ2UgKmthc2FuX2FkZHJfdG9fcGFn ZShjb25zdCB2b2lkICphZGRyKTsNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4g PiA+ID4gPiA+ICBkZXBvdF9zdGFja19oYW5kbGVfdCBrYXNhbl9zYXZlX3N0YWNrKGdmcF90IGZs YWdzKTsNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiArdm9pZCBrYXNhbl9zZXRfdHJhY2soc3RydWN0 IGthc2FuX3RyYWNrICp0cmFjaywgZ2ZwX3QgZmxhZ3MpOw0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ ICt2b2lkIGthc2FuX3NldF9mcmVlX2luZm8oc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlLCB2b2lk ICpvYmplY3QsIHU4IHRhZyk7DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gK3N0cnVjdCBrYXNhbl90 cmFjayAqa2FzYW5fZ2V0X2ZyZWVfdHJhY2soc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlLA0KPiA+ ID4gPiA+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAq b2JqZWN0LCB1OCB0YWcpOw0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4g PiA+ID4gICNpZiBkZWZpbmVkKENPTkZJR19LQVNBTl9HRU5FUklDKSAmJiBcDQo+ID4gPiA+ID4g PiA+ID4gPiA+ID4gICAgICAgICAoZGVmaW5lZChDT05GSUdfU0xBQikgfHwgZGVmaW5lZChDT05G SUdfU0xVQikpDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL21tL2thc2FuL3Jl cG9ydC5jIGIvbW0va2FzYW4vcmVwb3J0LmMNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiBpbmRleCA2 ZjhmMmJmOGY1M2IuLjk2ZDI2NTdmZTcwZiAxMDA2NDQNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiAt LS0gYS9tbS9rYXNhbi9yZXBvcnQuYw0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ICsrKyBiL21tL2th c2FuL3JlcG9ydC5jDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gQEAgLTE1OSwyNiArMTU5LDYgQEAg c3RhdGljIHZvaWQgZGVzY3JpYmVfb2JqZWN0X2FkZHIoc3RydWN0IGttZW1fY2FjaGUgKmNhY2hl LCB2b2lkICpvYmplY3QsDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gICAgICAgICAgICAgICAgICh2 b2lkICopKG9iamVjdF9hZGRyICsgY2FjaGUtPm9iamVjdF9zaXplKSk7DQo+ID4gPiA+ID4gPiA+ ID4gPiA+ID4gIH0NCj4gPiA+ID4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ IC1zdGF0aWMgc3RydWN0IGthc2FuX3RyYWNrICprYXNhbl9nZXRfZnJlZV90cmFjayhzdHJ1Y3Qg a21lbV9jYWNoZSAqY2FjaGUsDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gLSAgICAgICAgICAgICAg IHZvaWQgKm9iamVjdCwgdTggdGFnKQ0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+IC17DQo+ID4gPiA+ ID4gPiA+ID4gPiA+ID4gLSAgICAgICBzdHJ1Y3Qga2FzYW5fYWxsb2NfbWV0YSAqYWxsb2NfbWV0 YTsNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiAtICAgICAgIGludCBpID0gMDsNCj4gPiA+ID4gPiA+ ID4gPiA+ID4gPiAtDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gLSAgICAgICBhbGxvY19tZXRhID0g Z2V0X2FsbG9jX2luZm8oY2FjaGUsIG9iamVjdCk7DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gLQ0K PiA+ID4gPiA+ID4gPiA+ID4gPiA+IC0jaWZkZWYgQ09ORklHX0tBU0FOX1NXX1RBR1NfSURFTlRJ RlkNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiAtICAgICAgIGZvciAoaSA9IDA7IGkgPCBLQVNBTl9O Ul9GUkVFX1NUQUNLUzsgaSsrKSB7DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gLSAgICAgICAgICAg ICAgIGlmIChhbGxvY19tZXRhLT5mcmVlX3BvaW50ZXJfdGFnW2ldID09IHRhZykNCj4gPiA+ID4g PiA+ID4gPiA+ID4gPiAtICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCj4gPiA+ID4gPiA+ ID4gPiA+ID4gPiAtICAgICAgIH0NCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiAtICAgICAgIGlmIChp ID09IEtBU0FOX05SX0ZSRUVfU1RBQ0tTKQ0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+IC0gICAgICAg ICAgICAgICBpID0gYWxsb2NfbWV0YS0+ZnJlZV90cmFja19pZHg7DQo+ID4gPiA+ID4gPiA+ID4g PiA+ID4gLSNlbmRpZg0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+IC0NCj4gPiA+ID4gPiA+ID4gPiA+ ID4gPiAtICAgICAgIHJldHVybiAmYWxsb2NfbWV0YS0+ZnJlZV90cmFja1tpXTsNCj4gPiA+ID4g PiA+ID4gPiA+ID4gPiAtfQ0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+IC0NCj4gPiA+ID4gPiA+ID4g PiA+ID4gPiAgI2lmZGVmIENPTkZJR19LQVNBTl9HRU5FUklDDQo+ID4gPiA+ID4gPiA+ID4gPiA+ ID4gIHN0YXRpYyB2b2lkIHByaW50X3N0YWNrKGRlcG90X3N0YWNrX2hhbmRsZV90IHN0YWNrKQ0K PiA+ID4gPiA+ID4gPiA+ID4gPiA+ICB7DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gZGlmZiAtLWdp dCBhL21tL2thc2FuL3RhZ3MuYyBiL21tL2thc2FuL3RhZ3MuYw0KPiA+ID4gPiA+ID4gPiA+ID4g PiA+IGluZGV4IDI1Yjc3MzRlNzAxMy4uMjAxZGVlNWQ2YWUwIDEwMDY0NA0KPiA+ID4gPiA+ID4g PiA+ID4gPiA+IC0tLSBhL21tL2thc2FuL3RhZ3MuYw0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ICsr KyBiL21tL2thc2FuL3RhZ3MuYw0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+IEBAIC0xNjIsMyArMTYy LDQwIEBAIHZvaWQgX19od2FzYW5fdGFnX21lbW9yeSh1bnNpZ25lZCBsb25nIGFkZHIsIHU4IHRh ZywgdW5zaWduZWQgbG9uZyBzaXplKQ0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ICAgICAgICAga2Fz YW5fcG9pc29uX3NoYWRvdygodm9pZCAqKWFkZHIsIHNpemUsIHRhZyk7DQo+ID4gPiA+ID4gPiA+ ID4gPiA+ID4gIH0NCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiAgRVhQT1JUX1NZTUJPTChfX2h3YXNh bl90YWdfbWVtb3J5KTsNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ID4g PiA+ID4gK3ZvaWQga2FzYW5fc2V0X2ZyZWVfaW5mbyhzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGUs DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2 b2lkICpvYmplY3QsIHU4IHRhZykNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiArew0KPiA+ID4gPiA+ ID4gPiA+ID4gPiA+ICsgICAgICAgc3RydWN0IGthc2FuX2FsbG9jX21ldGEgKmFsbG9jX21ldGE7 DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgICB1OCBpZHggPSAwOw0KPiA+ID4gPiA+ID4g PiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiArICAgICAgIGFsbG9jX21ldGEgPSBn ZXRfYWxsb2NfaW5mbyhjYWNoZSwgb2JqZWN0KTsNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiArDQo+ ID4gPiA+ID4gPiA+ID4gPiA+ID4gKyNpZmRlZiBDT05GSUdfS0FTQU5fU1dfVEFHU19JREVOVElG WQ0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ICsgICAgICAgaWR4ID0gYWxsb2NfbWV0YS0+ZnJlZV90 cmFja19pZHg7DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgICBhbGxvY19tZXRhLT5mcmVl X3BvaW50ZXJfdGFnW2lkeF0gPSB0YWc7DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgICBh bGxvY19tZXRhLT5mcmVlX3RyYWNrX2lkeCA9IChpZHggKyAxKSAlIEtBU0FOX05SX0ZSRUVfU1RB Q0tTOw0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ICsjZW5kaWYNCj4gPiA+ID4gPiA+ID4gPiA+ID4g PiArDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgICBrYXNhbl9zZXRfdHJhY2soJmFsbG9j X21ldGEtPmZyZWVfdHJhY2tbaWR4XSwgR0ZQX05PV0FJVCk7DQo+ID4gPiA+ID4gPiA+ID4gPiA+ ID4gK30NCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gK3N0 cnVjdCBrYXNhbl90cmFjayAqa2FzYW5fZ2V0X2ZyZWVfdHJhY2soc3RydWN0IGttZW1fY2FjaGUg KmNhY2hlLA0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdm9pZCAqb2JqZWN0LCB1OCB0YWcpDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gK3sNCj4g PiA+ID4gPiA+ID4gPiA+ID4gPiArICAgICAgIHN0cnVjdCBrYXNhbl9hbGxvY19tZXRhICphbGxv Y19tZXRhOw0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ICsgICAgICAgaW50IGkgPSAwOw0KPiA+ID4g PiA+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiArICAgICAgIGFsbG9jX21l dGEgPSBnZXRfYWxsb2NfaW5mbyhjYWNoZSwgb2JqZWN0KTsNCj4gPiA+ID4gPiA+ID4gPiA+ID4g PiArDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gKyNpZmRlZiBDT05GSUdfS0FTQU5fU1dfVEFHU19J REVOVElGWQ0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ICsgICAgICAgZm9yIChpID0gMDsgaSA8IEtB U0FOX05SX0ZSRUVfU1RBQ0tTOyBpKyspIHsNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiArICAgICAg ICAgICAgICAgaWYgKGFsbG9jX21ldGEtPmZyZWVfcG9pbnRlcl90YWdbaV0gPT0gdGFnKQ0KPiA+ ID4gPiA+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KPiA+ID4g PiA+ID4gPiA+ID4gPiA+ICsgICAgICAgfQ0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ICsgICAgICAg aWYgKGkgPT0gS0FTQU5fTlJfRlJFRV9TVEFDS1MpDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gKyAg ICAgICAgICAgICAgIGkgPSBhbGxvY19tZXRhLT5mcmVlX3RyYWNrX2lkeDsNCj4gPiA+ID4gPiA+ ID4gPiA+ID4gPiArI2VuZGlmDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4g PiA+ID4gPiA+ICsgICAgICAgcmV0dXJuICZhbGxvY19tZXRhLT5mcmVlX3RyYWNrW2ldOw0KPiA+ ID4gPiA+ID4gPiA+ID4gPiA+ICt9DQo+ID4gPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ ID4gPiA+IEhpIFdhbHRlciwNCj4gPiA+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiA+ ID4gRlRSIEkndmUgdXBsb2FkZWQgdGhpcyBmb3IgcmV2aWV3IHB1cnBvc2VzIGhlcmU6DQo+ID4g PiA+ID4gPiA+ID4gPiA+IGh0dHBzOi8vbGludXgtcmV2aWV3Lmdvb2dsZXNvdXJjZS5jb20vYy9s aW51eC9rZXJuZWwvZ2l0L3RvcnZhbGRzL2xpbnV4LysvMjQ1OA0KPiA+ID4gPiA+ID4gPiA+ID4g Pg0KPiA+ID4gPiA+ID4gPiA+ID4gPiBEaWZmIGZyb20gdGhlIHByZXZpb3VzIHZlcnNpb24gaXMg YXZhaWxhYmxlIGFzOg0KPiA+ID4gPiA+ID4gPiA+ID4gPiBodHRwczovL2xpbnV4LXJldmlldy5n b29nbGVzb3VyY2UuY29tL2MvbGludXgva2VybmVsL2dpdC90b3J2YWxkcy9saW51eC8rLzI0NTgv MS4uMg0KPiA+ID4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ID4gPiBJJ3ZlIHRlc3Rl ZCB0aGlzIGxvY2FsbHkgYW5kIHdpdGggc3l6a2FsbGVyLiBUaGlzIGlzIDoNCj4gPiA+ID4gPiA+ ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiA+ID4gWyAgIDgwLjU4MzAyMV1bICAgIEMzXSBGcmVl ZCBieSB0YXNrIDA6DQo+ID4gPiA+ID4gPiA+ID4gPiA+IFsgICA4MC41ODM0ODBdWyAgICBDM10g IGthc2FuX3NhdmVfc3RhY2srMHgxYi8weDQwIG1tL2thc2FuL2NvbW1vbi5jOjQ5DQo+ID4gPiA+ ID4gPiA+ID4gPiA+IFsgICA4MC41ODQwNTZdWyAgICBDM10gIGthc2FuX3NldF90cmFjaysweDFj LzB4MzAgbW0va2FzYW4vY29tbW9uLmM6NTcNCj4gPiA+ID4gPiA+ID4gPiA+ID4gWyAgIDgwLjU4 NDYxN11bICAgIEMzXSAga2FzYW5fc2V0X2ZyZWVfaW5mbysweDFiLzB4MzAgbW0va2FzYW4vZ2Vu ZXJpYy5jOjM1NA0KPiA+ID4gPiA+ID4gPiA+ID4gPiBbICAgODAuNTg1MjIxXVsgICAgQzNdICBf X2thc2FuX3NsYWJfZnJlZSsweGQ4LzB4MTIwIG1tL2thc2FuL2NvbW1vbi5jOjQzOA0KPiA+ID4g PiA+ID4gPiA+ID4gPiBbICAgODAuNTg1ODE0XVsgICAgQzNdICBfX2NhY2hlX2ZyZWUgbW0vc2xh Yi5jOjM0MjYgW2lubGluZV0NCj4gPiA+ID4gPiA+ID4gPiA+ID4gWyAgIDgwLjU4NTgxNF1bICAg IEMzXSAga2ZyZWUrMHgxMGIvMHgyYjAgbW0vc2xhYi5jOjM3NTcNCj4gPiA+ID4gPiA+ID4gPiA+ ID4gWyAgIDgwLjU4NjI5MV1bICAgIEMzXSAga2FzYW5fcmN1X3JlY2xhaW0rMHgxNi8weDQzIFt0 ZXN0X2thc2FuXQ0KPiA+ID4gPiA+ID4gPiA+ID4gPiBbICAgODAuNTg3MDA5XVsgICAgQzNdICBy Y3VfZG9fYmF0Y2gga2VybmVsL3JjdS90cmVlLmM6MjIwNyBbaW5saW5lXQ0KPiA+ID4gPiA+ID4g PiA+ID4gPiBbICAgODAuNTg3MDA5XVsgICAgQzNdICByY3VfY29yZSsweDU5Zi8weDEzNzAga2Vy bmVsL3JjdS90cmVlLmM6MjQzNA0KPiA+ID4gPiA+ID4gPiA+ID4gPiBbICAgODAuNTg3NTM3XVsg ICAgQzNdICBfX2RvX3NvZnRpcnErMHgyNmMvMHg5ZmEga2VybmVsL3NvZnRpcnEuYzoyOTINCj4g PiA+ID4gPiA+ID4gPiA+ID4gWyAgIDgwLjU4ODA4NV1bICAgIEMzXQ0KPiA+ID4gPiA+ID4gPiA+ ID4gPiBbICAgODAuNTg4MzY3XVsgICAgQzNdIExhc3Qgb25lIGNhbGxfcmN1KCkgY2FsbCBzdGFj azoNCj4gPiA+ID4gPiA+ID4gPiA+ID4gWyAgIDgwLjU4OTA1Ml1bICAgIEMzXSAga2FzYW5fc2F2 ZV9zdGFjaysweDFiLzB4NDAgbW0va2FzYW4vY29tbW9uLmM6NDkNCj4gPiA+ID4gPiA+ID4gPiA+ ID4gWyAgIDgwLjU4OTYyMl1bICAgIEMzXSAga2FzYW5fcmVjb3JkX2F1eF9zdGFjaysweDgyLzB4 YjAgbW0va2FzYW4vZ2VuZXJpYy5jOjM0NQ0KPiA+ID4gPiA+ID4gPiA+ID4gPiBbICAgODAuNTkw MjU0XVsgICAgQzNdICBfX2NhbGxfcmN1IGtlcm5lbC9yY3UvdHJlZS5jOjI2NzIgW2lubGluZV0N Cj4gPiA+ID4gPiA+ID4gPiA+ID4gWyAgIDgwLjU5MDI1NF1bICAgIEMzXSAgY2FsbF9yY3UrMHgx NGYvMHg3ZjAga2VybmVsL3JjdS90cmVlLmM6Mjc0Ng0KPiA+ID4gPiA+ID4gPiA+ID4gPiBbICAg ODAuNTkwNzgyXVsgICAgQzNdICBrYXNhbl9yY3VfdWFmKzB4ZTQvMHhlYiBbdGVzdF9rYXNhbl0N Cj4gPiA+ID4gPiA+ID4gPiA+ID4gWyAgIDgwLjU5MTY5N11bICAgIEMzXSAga21hbGxvY190ZXN0 c19pbml0KzB4YmMvMHgxMDk3IFt0ZXN0X2thc2FuXQ0KPiA+ID4gPiA+ID4gPiA+ID4gPiBbICAg ODAuNTkyOTAwXVsgICAgQzNdICBkb19vbmVfaW5pdGNhbGwrMHgxMGEvMHg3ZDAgaW5pdC9tYWlu LmM6MTE5Ng0KPiA+ID4gPiA+ID4gPiA+ID4gPiBbICAgODAuNTkzNDk0XVsgICAgQzNdICBkb19p bml0X21vZHVsZSsweDFlNi8weDZkMCBrZXJuZWwvbW9kdWxlLmM6MzUzOQ0KPiA+ID4gPiA+ID4g PiA+ID4gPiBbICAgODAuNTk0MDY2XVsgICAgQzNdICBsb2FkX21vZHVsZSsweDc0NjQvMHg5NDUw IGtlcm5lbC9tb2R1bGUuYzozODkwDQo+ID4gPiA+ID4gPiA+ID4gPiA+IFsgICA4MC41OTQ2MjZd WyAgICBDM10gIF9fZG9fc3lzX2luaXRfbW9kdWxlKzB4MWUzLzB4MjIwIGtlcm5lbC9tb2R1bGUu YzozOTUzDQo+ID4gPiA+ID4gPiA+ID4gPiA+IFsgICA4MC41OTUyNjVdWyAgICBDM10gIGRvX3N5 c2NhbGxfNjQrMHhmNi8weDdkMCBhcmNoL3g4Ni9lbnRyeS9jb21tb24uYzoyOTUNCj4gPiA+ID4g PiA+ID4gPiA+ID4gWyAgIDgwLjU5NTgyMl1bICAgIEMzXSAgZW50cnlfU1lTQ0FMTF82NF9hZnRl cl9od2ZyYW1lKzB4NDkvMHhiMw0KPiA+ID4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ ID4gPg0KPiA+ID4gPiA+ID4gPiA+ID4gPiBPdmVyYWxsIHRoaXMgbG9va3MgdmVyeSBnb29kIHRv IG1lLg0KPiA+ID4gPiA+ID4gPiA+ID4gPiBCdXQgdGhlcmUgaXMgb25lIGFzcGVjdCB0aGF0IGJv dGhlcnMgbWUuIEluIHRoZSBwcmV2aW91cyBwYXRjaCB5b3UgaGFkDQo+ID4gPiA+ID4gPiA+ID4g PiA+IGNvZGUgdGhhdCByZXR1cm5lZCBOVUxMIGZyb20ga2FzYW5fZ2V0X2ZyZWVfdHJhY2soKSBp ZiB0aGUgb2JqZWN0IGlzDQo+ID4gPiA+ID4gPiA+ID4gPiA+IGxpdmUgKHdoaWNoIG1lYW5zIGZy ZWUgbWV0YSBpcyBub3QgYXZhaWxhYmxlLCBpdCdzIG9jY3VwaWVkIGJ5IG9iamVjdA0KPiA+ID4g PiA+ID4gPiA+ID4gPiBkYXRhKS4gTm93IHlvdSBkcm9wcGVkIHRoYXQgY29kZSwgYnV0IEkgdGhp bmsgd2Ugc3RpbGwgbmVlZCBpdC4NCj4gPiA+ID4gPiA+ID4gPiA+ID4gT3RoZXJ3aXNlIHdlIGNh c3QgdXNlciBvYmplY3QgZGF0YSB0byBmcmVlIG1ldGEgYW5kIHByaW50IHRoZSBmcmVlDQo+ID4g PiA+ID4gPiA+ID4gPiA+IHN0YWNrL3BpZCBmcm9tIHdoYXRldmVyIGdhcmJhZ2UgaXMgdGhlcmUu IFRoaXMgbWF5IGxlYWQgdG8gdmVyeQ0KPiA+ID4gPiA+ID4gPiA+ID4gPiBjb25mdXNpbmcgb3V0 cHV0IGFuZCBwb3RlbnRpYWxseSB0byBjcmFzaGVzIGluIHN0YWNrZGVwb3QuDQo+ID4gPiA+ID4g PiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ID4gWWVzLCBJIHRv dGFsbHkgYWdyZWUgd2l0aCB5b3UuIEluIHRoZSBwcmV2aW91cyBlbWFpbCBJIHRob3VnaHQgdGhh dA0KPiA+ID4gPiA+ID4gPiA+ID4gdGhlcmUgaXMgYSBwcm9ibGVtIHdpdGggZnJlZSB0cmFjaywg YnV0IEkgZGlkIG5vdCBwb2ludCBpdCBvdXQuIFRoYW5rDQo+ID4gPiA+ID4gPiA+ID4gPiB5b3Ug Zm9yIHBvaW50aW5nIHRoaXMgcHJvYmxlbS4gQXMgeW91IG1lbnRpb25lZCwgd2Ugc2hvdWxkIGZp eCBpdC4NCj4gPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gPiA+IFdoYXQgZG8geW91 IHRoaW5rIGFib3V0IHRoaXMgcGF0Y2ggb24gdG9wIG9mIHlvdXIgcGF0Y2hlcz8NCj4gPiA+ID4g PiA+ID4gPiA+ID4gaHR0cHM6Ly9saW51eC1yZXZpZXcuZ29vZ2xlc291cmNlLmNvbS9jL2xpbnV4 L2tlcm5lbC9naXQvdG9ydmFsZHMvbGludXgvKy8yNDc4DQo+ID4gPiA+ID4gPiA+ID4gPiA+IFRo aXMgd2F5IHdlIHZlcnkgcHJlY2lzZWx5IG1hcmsgdGhlIHBlcmlvZCBvZiB0aW1lIHdoZW4gdGhl IG9iamVjdCBoYXMNCj4gPiA+ID4gPiA+ID4gPiA+ID4gZnJlZSB0cmFjayBsaXZlIGFuZCBzZXQu DQo+ID4gPiA+ID4gPiA+ID4gPiA+IElmIGl0IGxvb2tzIGdvb2QgdG8geW91LCBmZWVsIGZyZWUg dG8gaW5jb3Jwb3JhdGUgaXQgaW50byB5b3VyIHNlcmllcy4NCj4gPiA+ID4gPiA+ID4gPiA+ID4N Cj4gPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gPiBUaGFuayB5b3UgZm9yIHByb3Zp ZGluZyBnb29kIGlkZWEgc29sdXRpb24uDQo+ID4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4g PiA+ID4gSSBzYXcgdGhpcyBwYXRjaCwgdGhhdCBpcyBhIGdyZWF0IHBhdGNoLiBJIHRoaW5rIGl0 IGNhbiBmaXggdGhlIGlzc3VlDQo+ID4gPiA+ID4gPiA+ID4gPiB3aGljaCBoYXMgZ2FyYmFnZSBz dGFjay4gaXQgc2hvdWxkIHdvcmsgYXMgZGVzY3JpYmVkIGJlbG93Lg0KPiA+ID4gPiA+ID4gPiA+ ID4NCj4gPiA+ID4gPiA+ID4gPiA+IDEpLiBXaGVuIG9iamVjdCBpcyBsaXZlLCB0aGVuIGRvbid0 IHByaW50IGZyZWUgc3RhY2suDQo+ID4gPiA+ID4gPiA+ID4gPiAyKS4gV2hlbiBvYmplY3QgaXMg Tk9UIGFsaXZlLCBhZnRlciBmcmVlIG9iamVjdDoNCj4gPiA+ID4gPiA+ID4gPiA+IDJhKS4gd2hl biBvYmplY3QgaXMgaW4gcXVhcmFudGluZSwgdGhlbiBpdCBjYW4gcHJpbnQgZnJlZSBzdGFjaw0K PiA+ID4gPiA+ID4gPiA+ID4gMmIpLiB3aGVuIG9iamVjdCBpcyBOT1QgaW4gcXVhcmFudGluZSwg dGhlbiBpdCBjYW4gTk9UIHByaW50IGZyZWUgc3RhY2suDQo+ID4gPiA+ID4gPiA+ID4gPg0KPiA+ ID4gPiA+ID4gPiA+ID4gSSBoYXZlIGEgcXVlc3Rpb24gYWJvdXQgMiksIHdoeSB3ZSBkb24ndCBk aXJlY3RseSB1c2UNCj4gPiA+ID4gPiA+ID4gPiA+IEtBU0FOX0tNQUxMT0NfRlJFRT8gaWYgd2Ug ZGlyZWN0bHkgdXNlIGl0LCB0aGVuIDJiKSBjYW4gcHJpbnQgZnJlZQ0KPiA+ID4gPiA+ID4gPiA+ ID4gc3RhY2s/IDJiKSBtYXkgaGFzIHVzZS1hZnRlci1mcmVlPyBzbyB0aGF0IGl0IG1heSBuZWVk IGZyZWUgc3RhY2suDQo+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiBB Ym91dCAyYiksIEkgc2VlIGFub3RoZXIgcXVlc3Rpb24uIFdoZW4gZG8gcWxpbmtfZnJlZSgpLCBp dCB3aWxsIGJlDQo+ID4gPiA+ID4gPiB3cml0dGVuIEtBU0FOX0tNQUxMT0NfRlJFRSBmcm9tIEtB U0FOX0tNQUxMT0NfRlJFRVRSQUNLPyBpZiB3ZSBkb24ndA0KPiA+ID4gPiA+ID4gd3JpdGUgc2hh ZG93IG1lbW9yeSwgaXQgaXMgc3RpbGwgS0FTQU5fS01BTExPQ19GUkVFVFJBQ0ssIHRoZW4gMmIp IHdpbGwNCj4gPiA+ID4gPiA+IGhhdmUgZnJlZSBzdGFjaz8gQmVjYXVzZSBJIHNlZSB5b3UgYWRk IEtBU0FOX0tNQUxMT0NfRlJFRVRSQUNLIHRvIGdldA0KPiA+ID4gPiA+ID4gdXNlLWFmdGVyLWZy ZWUgaW4gZ2V0X3NoYWRvd19idWdfdHlwZSgpLiBzbyBzaG91bGQgaXQgbm90IHdyaXRlDQo+ID4g PiA+ID4gPiBLQVNBTl9LTUFMTE9DX0ZSRUU/DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBJdCBtYXkg b3IgbWF5IG5vdCB3b3JrLg0KPiA+ID4gPiA+IFRoZSBwb3RlbnRpYWwgcHJvYmxlbSBpcyB0aGF0 IHdoZW4gcWxpbmtfZnJlZSBjYWxscyBfX19jYWNoZV9mcmVlLA0KPiA+ID4gPiA+IHNsYWIvc2x1 YiBtYXkgc3RhcnQgdXNpbmcgb2JqZWN0IG1lbW9yeSBmb3IgaXRzIG93biBwdXJwb3NlcywgZS5n Lg0KPiA+ID4gPiA+IHN0b3JlIHRoZSBuZXh0IGxpbmsuIFRoaXMgbmV4dCBsaW5rIG1heSBvdmVy d3JpdGUgcGFydCBvZiBmcmVlIG1ldGEuDQo+ID4gPiA+ID4gSXQgYWN0dWFsbHkgbWF5IHdvcmsg YmVjYXVzZSB0aGUgc2xhYi9zbGliIG5leHQgbGluayBpcyBsaWtlbHkgdG8NCj4gPiA+ID4gPiBv dmVybGFwIHdpdGgga2FzYW5fZnJlZV9tZXRhLnF1YXJhbnRpbmVfbGluayBvbmx5LiBBbmQgd2Ug bWF5IGhhdmUNCj4gPiA+ID4gPiBrYXNhbl9mcmVlX21ldGEuZnJlZV90cmFjayBpbnRhY3Qgd2hp bGUgS0FTQU5fS01BTExPQ19GUkVFIGlzIHNldC4gQnV0DQo+ID4gPiA+ID4gdGhpcyBuZWVkcyBj YXJlZnVsIGNoZWNraW5nIGZvciBib3RoIHNsYWIgYW5kIHNsdWIgYW5kIGlmIHRoZXkgbWF5IHVz ZQ0KPiA+ID4gPiA+IG1vcmUgdGhhbiAxIHdvcmQgaW4gc29tZSBjb25maWd1cmF0aW9ucy4NCj4g PiA+ID4gPg0KPiA+ID4gPg0KPiA+ID4gPiBUaGlzIHByb2JsZW0gbG9va3MgbGlrZSBleGlzdGlu ZywgZXZlbiB3aXRob3V0IHRoaXMgY2hhbmdlPyBjdXJyZW50bHkNCj4gPiA+ID4gS0FTQU4gbWF5 IGdldCB3cm9uZyBmcmVlIHN0YWNrPw0KPiA+ID4NCj4gPiA+IE5vLCB3ZSBzaG91bGQgbm90IGhh dmUgdGhpcyBwcm9ibGVtIG5vdy4gQ3VycmVudGx5IGZyZWUgdHJhY2sgaXMNCj4gPiA+IHN0b3Jl ZCBpbiBhbGxvYyBtZXRhLiBBbGxvYyBtZXRhIGRvZXMgbm90IG92ZXJsYXAgd2l0aCB0aGUgb2Jq ZWN0Lg0KPiA+ID4gSXQncyBvbmx5IGZyZWUgbWV0YSB0aGF0IG92ZXJsYXBzIHdpdGggdGhlIG9i amVjdCBhbmQgc2xhYiBtZXRhZGF0YSBhdA0KPiA+ID4gZGlmZmVyZW50IHBlcmlvZHMgb2YgdGhl IGJsb2NrIGxpZmV0aW1lLiBTY2hlbWF0aWNhbGx5IHdoYXQgd2UgaGF2ZQ0KPiA+ID4gaXM6DQo+ ID4gPg0KPiA+ID4gc3RydWN0IGJsb2NrX3Qgew0KPiA+ID4gICBhbGxvY19tZXRhIGthc2FuX2Fs bG9jX21ldGE7DQo+ID4gPiAgIHVuaW9uIHsNCj4gPiA+ICAgICB1c2VyX2RhdGEgY2hhcltOXTsN Cj4gPiA+ICAgICBzbGFiX21ldGEgc2xhYl9tZXRhOw0KPiA+ID4gICAgIGZyZWVfbWV0YSBrYXNh bl9mcmVlX21ldGE7DQo+ID4gPiAgIH07DQo+ID4gPiB9DQo+ID4gPg0KPiA+ID4gZnJlZV9tZXRh IHNoYXJlZCBzdG9yYWdlIHNwYWNlIHdpdGggMiBvdGhlciB0aGluZ3MuDQo+ID4gPg0KPiA+DQo+ ID4gQWguLi5JIGZvcmdldCBpdCBpcyBzdG9yZWQgaW4gYWxsb2MgbWF0YSwgWWVzLCBpdCBzaG91 bGQgbm90IGhhdmUgdGhpcw0KPiA+IHByb2JsZW0uDQo+ID4NCj4gPiBUaGFua3MgZm9yIHlvdXIg ZGV0YWlsZWQgZXhwbGFuYXRpb24NCj4gPg0KPiA+ID4gPiBSZWdhcmRsZXNzIG9mIHdoZXRoZXIg dGhlIHNoYWRvdyBtZW1vcnkgY29udGVudCBpcw0KPiA+ID4gPiBLQVNBTl9LTUFMTE9DX0ZSRUVU UkFDSyBvciBLQVNBTl9LTUFMTE9DX0ZSRUUsIGl0IG1heSBoYXZlIHRoaXMgcHJvYmxlbT8NCj4g PiA+DQo+ID4gPiBLQVNBTl9LTUFMTE9DX0ZSRUVUUkFDSyBpcyBzZXQgb25seSB3aGVuIG5vYm9k eSBlbHNlIHVzZXMgdGhlIHN0b3JhZ2UuDQo+ID4gPg0KPiA+DQo+ID4gT2ssIEkgd2lsbCB1c2Ug S0FTQU5fS01BTExPQ19GUkVFLiBJZiB5b3UgaGF2ZSBhbnkgY29uY2VybnMsIHBsZWFzZSB0ZWxs IG1lLg0KPiA+IFRoYW5rcy4NCj4gDQo+IFlvdSBtZWFuIEtBU0FOX0tNQUxMT0NfRlJFRVRSQUNL Pw0KPiANCg0KWWVzLCBzb3JyeSwgSSBtYWRlIHlvdSBtaXN1bmRlcnN0YW5kIHdoYXQgSSBtZWFu dC4gSSBtZWFuIHRoYXQgcWxpbmtfZnJlZSgpDQp3cml0ZSBLQVNBTl9LTUFMTE9DX0ZSRUUuIA0K DQo+IE9yLCB5b3UgY2hlY2tlZCB0aGF0IHVzaW5nIEtBU0FOX0tNQUxMT0NfRlJFRSBpcyBzYWZl IGFuZCB3aWxsIG5vdA0KPiBjYXVzZSBhbnkgYmFkIG92ZXJsYXA/DQo+IA0KDQpUaGlzIGl0ZW0g eW91IHJlZmVyIHRvLCBtYXliZSBpdCBjYW4gYmUgZG9uZSBpbiB0aGUgZnV0dXJlLg0KDQo+IA0K PiA+ID4gPiBCdXQgYmVjYXVzZSBvZiBrYXNhbl9nZXRfZnJlZV90cmFjaygpIGhhdmUgY29uZGl0 aW9ucyB0byBnZXQgZnJlZSB0cmFjaywNCj4gPiA+ID4gc28gdGhhdCBpZiBzaGFkb3cgbWVtb3J5 IGNvbnRlbnQgaXMgS0FTQU5fS01BTExPQ19GUkVFLCB0aGVuIGl0IHdpbGwNCj4gPiA+ID4gYXZv aWQgdGhpcyBwcm9ibGVtIGFuZCBhbHdheXMgcHJpbnQgcmlnaHQgZnJlZSBzdGFjay4NCj4gPiA+ DQo+ID4gPg0KPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiBXZSBjYW4ndCB1c2UgS0FTQU5fS01BTExP Q19GUkVFIGJlY2F1c2Ugb2YgdGhpcyBwYXJ0Og0KPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4g PiA+ID4gc3RhdGljIGJvb2wgX19rYXNhbl9zbGFiX2ZyZWUoc3RydWN0IGttZW1fY2FjaGUgKmNh Y2hlLCB2b2lkICpvYmplY3QsDQo+ID4gPiA+ID4gPiA+ID4gICAgICAgICAgICAgICAgICAgdW5z aWduZWQgbG9uZyBpcCwgYm9vbCBxdWFyYW50aW5lKQ0KPiA+ID4gPiA+ID4gPiA+IHsNCj4gPiA+ ID4gPiA+ID4gPiAuLi4NCj4gPiA+ID4gPiA+ID4gPiAgICAga2FzYW5fcG9pc29uX3NoYWRvdyhv YmplY3QsIHJvdW5kZWRfdXBfc2l6ZSwgS0FTQU5fS01BTExPQ19GUkVFKTsNCj4gPiA+ID4gPiA+ ID4gPg0KPiA+ID4gPiA+ID4gPiA+ICAgICBpZiAoKElTX0VOQUJMRUQoQ09ORklHX0tBU0FOX0dF TkVSSUMpICYmICFxdWFyYW50aW5lKSB8fA0KPiA+ID4gPiA+ID4gPiA+ICAgICAgICAgICAgIHVu bGlrZWx5KCEoY2FjaGUtPmZsYWdzICYgU0xBQl9LQVNBTikpKQ0KPiA+ID4gPiA+ID4gPiA+ICAg ICAgICAgcmV0dXJuIGZhbHNlOw0KPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gICAg IGthc2FuX3NldF9mcmVlX2luZm8oY2FjaGUsIG9iamVjdCwgdGFnKTsNCj4gPiA+ID4gPiA+ID4g PiAuLi4NCj4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiBPaywg SSBzZWUuIFdoZW4gcmV0dXJuIGZhbHNlLCB0aGVuIHRoZSBzaGFkb3cgbWVtb3J5IGNvbnRlbnQg aGFzDQo+ID4gPiA+ID4gPiA+IEtBU0FOX0tNQUxMT0NfRlJFRSwgYnV0IGl0IGRvZXNuJ3Qgc2V0 IGZyZWUgc3RhY2ssIHNvIHRoYXQgd2UgbmVlZCB0bw0KPiA+ID4gPiA+ID4gPiBhdm9pZCB0aGlz IHNpdHVhdGlvbi4gVGhhbmsgZm9yIHlvdSByZW1pbmRlci4NCj4gPiA+ID4gPiA+ID4NCj4gPiA+ ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+IFdlIG1heSBzZXQgS0FTQU5fS01BTExPQ19GUkVF LCBidXQgbm90IHNldCB0aGUgdHJhY2sgKG9yIGV2ZW4gaGF2ZQ0KPiA+ID4gPiA+ID4gPiA+IG1l bW9yeSBmb3IgdGhlIHRyYWNrISkuDQo+ID4gPiA+ID4gPiA+ID4gVGhlIG9iamVjdCBtYXkgbm90 IGhhdmUgZnJlZSBtZXRhIGFsbG9jYXRlZCBhdCBhbGwsIGUuZy4gdmVyeSBsYXJnZQ0KPiA+ID4g PiA+ID4gPiA+IG9iamVjdCB3aXRoIGN0b3IgKG5vIHBsYWNlIHRvIHN0b3JlIG1ldGEpLCBvciBp dCBtYXkgYmUgaW4gYSBtZW1wb29sOg0KPiA+ID4gPiA+ID4gPiA+IGh0dHBzOi8vZWxpeGlyLmJv b3RsaW4uY29tL2xpbnV4L3Y1LjctcmM2L3NvdXJjZS9tbS9tZW1wb29sLmMjTDEwOQ0KPiA+ID4g PiA+ID4gPiA+IGFuZCBtZW1wb29sIG1heSBiZSB1c2luZyB0aGUgb2JqZWN0IG1lbW9yeSBpdHNl bGYgKGZvciBpdHMgb3duIG5leHQNCj4gPiA+ID4gPiA+ID4gPiBsaW5rIG9yIHNvbWV0aGluZyku DQo+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiBLQVNBTl9LTUFMTE9DX0ZSRUVUUkFD SyB2ZXJ5IGV4cGxpY2l0bHkgdHJhY2tzIHRoZSBleGFjdCBjb25kaXRpb24gd2UNCj4gPiA+ID4g PiA+ID4gPiB3YW50OiB3ZSBoYXZlIG1ldGEgaW5mbyBsaXZlIG5vdyBhbmQgd2UgaGF2ZSBmcmVl IHRyYWNrIHNldC4NCj4gDQoNCg==