From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.8 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 38634C4727E for ; Wed, 30 Sep 2020 20:26:05 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id D7C872074B for ; Wed, 30 Sep 2020 20:26:04 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="eZlBgUCn" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D7C872074B Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 499186E0D2; Wed, 30 Sep 2020 20:26:03 +0000 (UTC) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [63.128.21.124]) by gabe.freedesktop.org (Postfix) with ESMTPS id D1A626E0D2 for ; Wed, 30 Sep 2020 20:26:01 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1601497560; h=from:from:reply-to:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=JQtFMxDwhDPI+M0AXW19mT5UeQcEZt4D7LVENv3QyS0=; b=eZlBgUCn8EOZQ00h6lWwHvihd1mQLCtsYj+jpy2tJNYx3yEXV8DP0dnqzeaeqEzGANSYOn A1Zx0fpYa4lCyNfue2ji3mm4q8nQZWidn0hk8AT7orjkwlD//HM44Al6bWS8LaiuHCEEZm vwJ9xINix+iYDz7THKNAPx5AlBe/dEU= Received: from mail-qk1-f197.google.com (mail-qk1-f197.google.com [209.85.222.197]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-544-jHXWhMStO0y6KscTrutkYQ-1; Wed, 30 Sep 2020 16:25:54 -0400 X-MC-Unique: jHXWhMStO0y6KscTrutkYQ-1 Received: by mail-qk1-f197.google.com with SMTP id w126so1694731qka.5 for ; Wed, 30 Sep 2020 13:25:54 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:message-id:subject:from:reply-to:to:cc:date :in-reply-to:references:organization:user-agent:mime-version :content-transfer-encoding; bh=JQtFMxDwhDPI+M0AXW19mT5UeQcEZt4D7LVENv3QyS0=; b=m79NnbnLqaDKTJ37X7aPVejWK4+fiTZjtvglod0kwJAEkKJo4EXDcUQWVEgItffRtJ vT9NbSENOg2FKA5NM+T1TfasdypppVR7IS/Pru/BbIX8v1cStw8y1kG3SWH4CM1fm6vI oKQztIll8TZUEYZOeoaNu8FVw2EN6d55Y16JaOQV8DcjUr3WQi0yVB0veG4EyeGpUu17 6Ox7VVVvJ8H4c5LuYXBNJ11eje42Xuj+nObMQMhthsCndZhEhe7k58tie+zpzW3Ci8sA w1e6ASCnyWmbBn1MglGuYSqDqRvACiumYKP03JxgKw6kdt/ezieNyy4Uj/CbBy5AUXgo zm/A== X-Gm-Message-State: AOAM5337OmLT01hTmc+vTzsleJJnTkzkq4dC6b6TPenGOeyivy84ZK3d yr49jW3cSrMfm5s9wDZivJM+rrbMbjczTLNBvqKcoQ4N0huI07whUZl2cVadKm6s2mnoTz+bwex zQGKq0VdkeuC/gSQwdQF3HuKARium X-Received: by 2002:a05:620a:45:: with SMTP id t5mr4441143qkt.41.1601497552919; Wed, 30 Sep 2020 13:25:52 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxWVAfwlBCxw/LFvwS0q79QEtyTdNWAmssNXC2n/27LMDsCVmYSYTV6d+epavVFGIKVlaggiw== X-Received: by 2002:a05:620a:45:: with SMTP id t5mr4441080qkt.41.1601497552014; Wed, 30 Sep 2020 13:25:52 -0700 (PDT) Received: from Whitewolf.lyude.net (pool-108-49-102-102.bstnma.fios.verizon.net. [108.49.102.102]) by smtp.gmail.com with ESMTPSA id b199sm3470257qkg.116.2020.09.30.13.25.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 30 Sep 2020 13:25:51 -0700 (PDT) Message-ID: <3bbde7a4f5455905681711027edcb02598bafb0b.camel@redhat.com> From: Lyude Paul To: Kevin Chowski Date: Wed, 30 Sep 2020 16:25:49 -0400 In-Reply-To: References: <20200917110838.1.I63d52f5b96d7e81e1e2dc2a72c4bf5fd84d3d3d0@changeid> <87o8m4uxcn.fsf@intel.com> <20200917182535.GC6112@intel.com> <20200917201102.GD6112@intel.com> Organization: Red Hat User-Agent: Evolution 3.36.5 (3.36.5-1.fc32) MIME-Version: 1.0 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=lyude@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Subject: Re: [Intel-gfx] [PATCH] i915: Introduce quirk for shifting eDP brightness. X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: lyude@redhat.com Cc: David Airlie , intel-gfx , LKML , dri-devel@lists.freedesktop.org, Puthikorn Voravootivat , Wambui Karuga Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" T24gVHVlLCAyMDIwLTA5LTI5IGF0IDEzOjMyIC0wNjAwLCBLZXZpbiBDaG93c2tpIHdyb3RlOgo+ IFRoYW5rIHlvdSBmb3IgdGhlIHJlcGx5LiBBbmQgaW4gcmVnYXJkcyB0byBkaWdnaW5nIGludG8g aXQgZnVydGhlciwKPiB0aGFua3MgZm9yIHJlcXVlc3RpbmcgdGhhdCBJIGRvIHNvbWUgbW9yZSBk dWUgZGlsaWdlbmNlIGhlcmUgOikKPiAKPiBBbHNvIGlmIHlvdSBkaWQgZ2V0IGFyb3VuZCB0byBp dCwgdGhhbmtzIGZvciBkb3VibGUtY2hlY2tpbmcgd2l0aAo+IEJpbGwhIExldCBtZSBrbm93IGlm IHlvdSdkIGxpa2UgbWUgdG8gcmVhY2ggb3V0IGluc3RlYWQsIG9yIGlmCj4gYW55dGhpbmcgZWxz ZSBuZWVkcyB0byBiZSBkb25lIGluIHRoaXMgcmVnYXJkLgo+IAo+IFNvIHRvIGNsYXJpZnkgdGhl IHBsYW46IGlmIHdlIGRvIGFjdHVhbGx5IG1vdmUgZm9yd2FyZHMgd2l0aCBsZWF2aW5nCj4gdGhl IGN1cnJlbnQgZnVuY3Rpb25hbGl0eSBhcyB0aGUgZGVmYXVsdCwgZG8gd2UgbmVlZCB0byBoYXZl IHRoZQo+IGNvbXBsZXRlIGxpc3Qgb2YgZGV2aWNlcyB3aGljaCBuZWVkIHRoZSBxdWlyayBhcHBs aWVkIHdoZW4gdGhlIHBhdGNoCj4gZmlyc3QgZ29lcyBpbj8gRnJvbSBteSBwZXJzcGVjdGl2ZSwg d2UgZGVmaW5pdGVseSBoYXZlIG9uZSBkZXZpY2UKPiB3aGljaCBuZWVkcyB0aGUgcXVpcmsgKGFu ZCBwcmVmZXJhYmx5LCBpdCdkIGJlIGdvb2QgdG8gZG8gaXQgc29vbmVyCj4gdGhhbiBsYXRlciBz byB0aGF0IHdlIGNhbiBnZXQgdGhpcyBidWdmaXggb3V0IHRvIG91ciB1c2VycykgYW5kIGFuCj4g dW5rbm93YWJsZSBudW1iZXIgb2Ygb3RoZXJzLiBXb3VsZCBpdCBiZSBPSyB0byBpbnRyb2R1Y2Ug dGhlIHF1aXJrIGZvcgo+IGp1c3QgUGl4ZWxib29rIGFuZCB0byBmb2xsb3cgdXAgdG8gYWRkIG90 aGVycyBvbmNlIHdlIGhhdmUgdGhhdCBsaXN0PwoKVG90YWxseS1JJ3ZlIGdvdCBubyBwcm9ibGVt IHdpdGggdGhpcy4KCj4gSXQgbWF5IHRha2UgYSBnb29kIGFtb3VudCBvZiB0aW1lIGZvciBtZSB0 byBoZXJkIHRoZSBjYXRzIGluc2lkZQo+IEdvb2dsZSwgZXNwZWNpYWxseSBnaXZlbiB0aGVyZSdz IGEgY2hhbmNlIHRoYXQgdGhlcmUgYXJlIGFmZmVjdGVkCj4gbGFwdG9wcyBhbmQgdGhhdCBubyBv bmUgaGFzIG5vdGljZWQgKGUuZy4sIEkgYWxtb3N0IGRpZG4ndCBub3RpY2Ugd2l0aAo+IHRoZSBQ aXhlbGJvb2spLiBHaXZlbiBMeXVkZSdzIGFuYWx5c2lzIGl0IHNlZW1zIGxpa2UgQ2hyb21lIE9T IGRldmljZXMKPiBtYXkgYmUgdGhlIGxhcmdlc3QgYWZmZWN0ZWQgZ3JvdXAgaGVyZSwgc28gSSBh bSBpbmNlbnRpdml6ZWQgdG8gbm90Cj4gZHJvcCB0aGUgYmFsbCBhZnRlciBmaXhpbmcgbXkgaW1t ZWRpYXRlIFBpeGVsYm9vayBwcm9ibGVtIDopCj4gCj4gT24gRnJpLCBTZXAgMjUsIDIwMjAgYXQg MTA6NTMgQU0gTHl1ZGUgUGF1bCA8bHl1ZGVAcmVkaGF0LmNvbT4gd3JvdGU6Cj4gPiBPbiBUaHUs IDIwMjAtMDktMjQgYXQgMTc6NDYgLTA2MDAsIEtldmluIENob3dza2kgd3JvdGU6Cj4gPiA+IGNj IGJhY2sgYSBmZXcgb3RoZXJzIHdobyB3ZXJlIHVuaW50ZW50aW9uYWxseSBkcm9wcGVkIGZyb20g dGhlIHRocmVhZAo+ID4gPiBlYXJsaWVyLgo+ID4gPiAKPiA+ID4gU29tZW9uZSAoYXQgR29vZ2xl KSBoZWxwZWQgbWUgZGlnIGludG8gdGhpcyBhIGxpdHRsZSBtb3JlIGFuZCB0aGV5Cj4gPiA+IGZv dW5kIGEgZG9jdW1lbnQgdGl0bGVkICJlRFAgQmFja2xpZ2h0IEJyaWdodG5lc3MgYml0IGFsaWdu bWVudCIgc2VudAo+ID4gPiBvdXQgZm9yIHJldmlldyBpbiBKYW51YXJ5IDIwMTcuIEkgcmVnaXN0 ZXJlZCBmb3IgYSBuZXcgYWNjb3VudCAoZ29vZ2xlCj4gPiA+IGlzIGEgbWVtYmVyKSBhbmQgaGF2 ZSBhY2Nlc3MgdG8gdGhlIGRvY3VtZW50OyBoZXJlIGlzIHRoZSBVUkwgZm9yCj4gPiA+IHRob3Nl IHdobyBhbHNvIGhhdmUgYWNjZXNzOgo+ID4gPiBodHRwczovL2dyb3Vwcy52ZXNhLm9yZy93Zy9B bGxNZW0vZG9jdW1lbnQvNzc4Ni4gRm9yIHdoYXQgaXQncyB3b3J0aCwKPiA+ID4gaXQgc2VlbXMg bGlrZSBMeXVkZSdzIGNvbnRhY3QgQmlsbCBMZW1wZXNpcyB1cGxvYWRlZCB0aGlzCj4gPiA+IGNo YW5nZS1yZXF1ZXN0IGRvY3VtZW50LCBzbyBJIHRoaW5rIHdlIGNhbiByZWFjaCBvdXQgdG8gaGlt IGlmIHdlIGhhdmUKPiA+ID4gZnVydGhlciBxdWVzdGlvbnMuIEl0J3MgYWN0dWFsbHkgdW5jbGVh ciB0byBtZSB3aGF0IHRoZSBzdGF0dXMgb2YgdGhpcwo+ID4gPiBjaGFuZ2UgcmVxdWVzdCBpcywg YW5kIHdoZXRoZXIgaXQncyBiZWVuIG9mZmljaWFsbHkgYWNjZXB0ZWQuIEJ1dCBJCj4gPiA+IHRo aW5rIGl0IGNhbiBiZSBzZWVuIGFzIHNvbWUgb2ZmaWNpYWwgYWR2aWNlIG9uIGhvdyB3ZSBjYW4g bW92ZQo+ID4gPiBmb3J3YXJkIGhlcmUuCj4gPiA+IAo+ID4gPiBCYXNpY2FsbHksIHRoaXMgaXMg YSBjaGFuZ2UgcmVxdWVzdCB0byB0aGUgc3BlYyB3aGljaCBhY2tub3dsZWRnZXMKPiA+ID4gdGhh dCwgZGVzcGl0ZSB0aGUgb3JpZ2luYWwgc3BlYyBpbXBseWluZyB0aGF0IHRoZQo+ID4gPiBtb3N0 LXNpZ25pZmljYW50LWJpdHMgd2VyZSByZWxldmFudCBoZXJlLCBtYW55IGltcGxlbWVudGF0aW9u cyB1c2VkCj4gPiA+IHRoZSBsZWFzdC1zaWduaWZpY2FudC1iaXRzLiBJbiBkZWZlbnNlIG9mIG1v c3Qtc2lnbmlmaWNhbnQgaXQgbGFpZCBvdXQKPiA+ID4gc29tZSBzaW1pbGFyIGFyZ3VtZW50cyB0 byB3aGF0IFZpbGxlIHdhcyBzYXlpbmcuIEJ1dCBpdCBlbmRzIHVwCj4gPiA+IHNheWluZzoKPiA+ ID4gCj4gPiA+ID4gVW5mb3J0dW5hdGVseSwgdGhlIG1vc3QgY29tbW9uIGludGVycHJldGF0aW9u IHRoYXQgd2UgaGF2ZQo+ID4gPiA+IGVuY291bnRlcmVkIGlzIGNhc2UgMSBpbiB0aGUgZXhhbXBs ZSBhYm92ZS4gVENPTiB2ZW5kb3JzCj4gPiA+ID4gdGVuZCB0byBhbGlnbiB0aGUgdmFsaWQgYml0 cyB0byB0aGUgTFNCcywgbm90IHRoZSBNU0JzLgo+ID4gPiAKPiA+ID4gSW5zdGVhZCBvZiBjaGFu Z2luZyB0aGUgZGVmYXVsdCBkZWZpbmVkIGZ1bmN0aW9uYWxpdHkgKGFzIHNvbWUgZWFybGllcgo+ ID4gPiB2ZXJzaW9uIG9mIHRoaXMgZG9jIGFwcGFyZW50bHkgc3VnZ2VzdGVkKSwgdGhpcyBkb2Mg cHJlZmVycyB0bwo+ID4gPiBhbGxvY2F0ZSB0d28gZXh0cmEgYml0cyBpbiBFRFBfR0VORVJBTF9D QVBBQklMSVRZXzIgc28gdGhhdCBmdXR1cmUKPiA+ID4gYmFja2xpZ2h0IGRldmljZXMgY2FuIHNw ZWNpZnkgdG8gdGhlIFNvdXJjZSBob3cgdG8gcHJvZ3JhbSB0aGVtOgo+ID4gPiAKPiA+ID4gMDA6 IHRoZSBjdXJyZW50IGZ1bmN0aW9uYWxpdHksIGksZS4gbm8gZGVmaW5lZCBpbnRlcnByZXRhdGlv bgo+ID4gPiAwMTogYWxpZ25lZCB0byBtb3N0LXNpZ25pZmljYW50IGJpdHMKPiA+ID4gMTA6IGFs aWduZWQgdG8gbGVhc3Qtc2lnbmlmaWNhbnQgYml0cwo+ID4gPiAxMTogcmVzZXJ2ZWQKPiA+ID4g Cj4gPiA+IEl0IGFsc28gc2F5cyAiW1NvdXJjZXNdIHNob3VsZCBvbmx5IG5lZWQgcGFuZWwtc3Bl Y2lmaWMgd29ya2Fyb3VuZHMKPiA+ID4gZm9yIHRoZSBjdXJyZW50bHkgYXZhaWxhYmxlIHBhbmVs cy4iCj4gPiA+IAo+ID4gPiBTbyBJIGJlbGlldmUgdGhpcyBkb2N1bWVudCBpcyBhbiBhY2tub3ds ZWRnZW1lbnQgb2YgbWFueQo+ID4gPiBpbXBsZW1lbnRhdGlvbnMgaGF2aW5nIHRoZWlyIGFsaWdu bWVudCB0byB0aGUgbGVhc3Qtc2lnbmlmaWNhbnQgYml0cywKPiA+ID4gYW5kICh0byBteSBleWVz KSBjbGVhcmx5IHZhbGlkYXRlcyB0aGF0IHRoZSBzcGVjICJzaG91bGQiIGJlIHRoZQo+ID4gPiBv cHBvc2l0ZS4gSWYgd2UgYmVsaWV2ZSB0aGUgZG9jJ3MgY2xhaW0gdGhhdCAidGhlIG1vc3QgY29t bW9uCj4gPiA+IGludGVycHJldGF0aW9uIiBpcyBsZWFzdC1zaWduaWZpY2FudCwgaXQgc2VlbXMg dG8gbWUgdGhhdCBpdCB3b3VsZAo+ID4gPiByZXF1aXJlIG1vcmUgcXVpcmtzIGlmIHdlIG1hZGUg bW9zdC1zaWduaWZpY2FudCB0aGUgZGVmYXVsdAo+ID4gPiBpbXBsZW1lbnRhdGlvbi4KPiA+ID4g Cj4gPiA+IFZpbGxlIG1lbnRpb25lZCBhdCBzb21lIHBvaW50IGVhcmxpZXIgdGhhdCB3ZSBzaG91 bGQgdHJ5IHRvIG1hdGNoIHRoZQo+ID4gPiBzcGVjLCB3aGVyZWFzIEx5dWRlIG1lbnRpb25lZCB3 ZSBzaG91bGQgcHJlZmVyIHRvIGRvIHdoYXQgdGhlIG1ham9yaXR5Cj4gPiA+IG9mIG1hY2hpbmVz IGRvLiBXaGF0IGRvIHlvdSBib3RoIHRoaW5rIG9mIHRoaXMgbmV3IGRldmVsb3BtZW50Pwo+ID4g Cj4gPiBUaGF0J3MgaG93IGRpc3BsYXlwb3J0IGhhcHBlbnMgdG8gYmUgc29tZXRpbWVzIDopLiBE ZWZpbml0ZWx5IGlzbid0IHRoZQo+ID4gZmlyc3QKPiA+IHRpbWUgc29tZXRoaW5nIGluIHRoZSBz cGVjIGxpa2UgdGhpcyBnb3QgaW1wbGVtZW50ZWQgaW5jb3JyZWN0bHkgc28gbWFueQo+ID4gdGlt ZXMKPiA+IGJ5IGRpZmZlcmVudCB2ZW5kb3JzIHRoYXQgdGhleSBoYWQgdG8gdXBkYXRlIHRoZSBz cGVjIGluIHJlc3BvbnNlIChzYW1lCj4gPiB0aGluZwo+ID4gaGFwcGVuZWQgd2l0aCBNU1QgYW5k IGludGVybGVhdmVkIHNpZGViYW5kIG1lc3NhZ2VzIGFzIG9mIERQIDIuMCksIHNvIEknbQo+ID4g cmVhbGx5IGdsYWQgd2Ugd2VudCBhbmQgYWN0dWFsbHkgaW52ZXN0aWdhdGVkIHRoaXMuCj4gPiAK PiA+IFNvIHllcyAtIEkgdGhpbmsgYSBxdWlyayBmb3IgdGhpcyB3b3VsZCBkZWZpbml0ZWx5IGJl IGEgZ29vZCBpZGVhLCBhbmQgSU1PCj4gPiB3ZQo+ID4gc2hvdWxkIGFsd2F5cyBsZWFuIG9uIHRo ZSBzaWRlIHRoYXQgbW9yZSBwYW5lbHMgaW1wbGVtZW50IGV2ZW4gaWYgaXQncyBub3QKPiA+IGFj Y29yZGluZyB0byBzcGVjIC0gc28gZGVmYXVsdGluZyB0byB0aGUgYmVoYXZpb3Igd2UgY3VycmVu dGx5IGhhdmUgaW4gdGhlCj4gPiBrZXJuZWwsIGFuZCBhZGRpbmcgcXVpcmtzIGZvciBwYW5lbHMg dGhhdCB3ZXJlIHNtYXJ0IGVub3VnaCBub3QgdG8gZmFsbCBmb3IKPiA+IHRoaXMgd291bGQgcHJv YmFibHkgYmUgdGhlIGJlc3Qgd2F5IHRvIGdvLiBUaGF0IGp1c3QgbGVhdmVzIHRoZSBjaGFsbGVu Z2Ugb2YKPiA+ICJob3cgZG8gd2UgZmlndXJlIG91dCB3aGljaCBwYW5lbHMgYWN0dWFsbHkgbmVl ZCB0aGlzIGFuZCB3aGljaCBvbmVzIGRvbid0PyIKPiA+IAo+ID4gVGhpcyBtaWdodCBlbmQgdXAg YmVpbmcgYSBiaXQgb2YgYSBjaGFsbGVuZ2UsIGJ1dCBJJ3ZlIGdvdCBzb21lIGlkZWFzIG9uIGhv dwo+ID4gd2UgbWlnaHQgYmUgYWJsZSB0byB0YWNrbGUgaXQgdG8gdGhlIGJlc3Qgb2Ygb3VyIGFi aWxpdHkgYmFzZWQgb2ZmIG15Cj4gPiBkaXNjdXNzaW9ucyB3aXRoIGxhcHRvcCB2ZW5kb3JzLiBJ dCBzZWVtcyBsaWtlIHNvbWUgb2YgdGhlIGhvbWVncm93bgo+ID4gYmFja2xpZ2h0Cj4gPiBpbnRl cmZhY2VzIG1pZ2h0IGhlbHAgdXMgb3V0IGhlcmUuIE5vdGUgSSdtIG1lbnRpb25pbmcgb3RoZXIg bGFwdG9wIHZlbmRvcnMKPiA+IGhlcmUgYmVjYXVzZSBhdCBsZWFzdCBmb3Igbm91dmVhdSwgb3Vy IHBsYW4gZm9yIERQQ0QgYmFja2xpZ2h0IHN1cHBvcnQgaXMgdG8KPiA+IG1vdmUgYSBsb3Qgb2Yg dGhlIGNvZGUgZm9yIGhhbmRsaW5nIGl0IHRoYXQgY3VycmVudGx5IGxpdmVzIGluIGk5MTUgaW50 bwo+ID4gc2hhcmVkIERSTSBoZWxwZXJzICh3aGljaCBub3cgd2UnbGwgZGVmaW5pdGVseSBuZWVk IHRvIGRvIGFzIGEgcmVzdWx0IG9mCj4gPiB0aGVzZQo+ID4gcXVpcmtzKS4KPiA+IAo+ID4gU28s IG9uIHRoZSB4ODYgZnJvbnQsIHRoZXJlJ3MgYWxyZWFkeSBhIGZldyBkaWZmZXJlbnQgaW50ZXJm YWNlcyBpbiB1c2UgZm9yCj4gPiBsYXB0b3AgcGFuZWxzOgo+ID4gICogQU1EIHVzdWFsbHkgdXNl cyB0aGVpciBvd24gYmFja2xpZ2h0IGludGVyZmFjZSwgc28gZm9yIEFNRC1vbmx5IGxhcHRvcHMK PiA+IHdlCj4gPiAgICBjYW4gcHJvYmFibHkgc2FmZWx5IGlnbm9yZSB0aGlzCj4gPiAgKiBJbnRl bCB1c2VzIHRoZWlyIG93biBEUENEIGJhY2tsaWdodCBpbnRlcmZhY2Ugb24gbW9zdCBvZiB0aGUg X25vbi0KPiA+IENocm9tZU9TXwo+ID4gICAgbWFjaGluZXMgb24gdGhlIG1hcmtldCByaWdodCBu b3cgYWZhaWsgYmFzZWQgb2ZmIG15IGRpc2N1c3Npb24gd2l0aCBzb21lCj4gPiAgICBsYXB0b3Ag dmVuZG9ycy4gRm9yIHBhbmVscyB0aGF0IG9ubHkgY29tZSB1cCBpbiBJbnRlbC1vbmx5IG1hY2hp bmVzLCB0aGF0Cj4gPiAgICBtZWFucyB3ZSBvbmx5IHJlYWxseSBuZWVkIHRvIGNhcmUgYWJvdXQg dGhlIENocm9tZU9TIGNhc2UgaGVyZS4gU28taWYKPiA+ICAgIEdvb2dsZSdzIGFibGUgdG8gYWN0 dWFsbHkgc3VydmV5IHRoZSBkZXZpY2VzIHRoZXkncmUgc2hpcHBpbmcgd2l0aAo+ID4gQ2hyb21l T1MKPiA+ICAgIHJpZ2h0IG5vdyB0byBmaWd1cmUgb3V0IHdoaWNoIG9uZXMgYXJlIHVzaW5nIERQ Q0QgYmFja2xpZ2h0IGNvbnRyb2xzLCBhbmQKPiA+ICAgIHdoaWNoIG9uZXMgbmVlZCB0byBiZSBN U0IgYWxpZ25lZCAtIHRoZW4gSSdkIHRoaW5rIHdlIGNvdWxkIHByb2JhYmx5Cj4gPiBidWlsZAo+ ID4gICAgYW4gYWNjdXJhdGUgcXVpcmsgbGlzdCBvZiB0aG9zZSBwYW5lbHMgZWFzaWx5Lgo+ID4g ICogVGhpcyBqdXN0IGxlYXZlcyB0aGUgbnZpZGlhIGNhc2UuIE52aWRpYSBzZWVtcyB0byBiZSBv bmUgb2YgdGhlIG9ubHkgR1BVCj4gPiAgICB2ZW5kb3JzIHRoYXQgZGlkbid0IGNvbWUgdXAgd2l0 aCB0aGVpciBvd24gYmFja2xpZ2h0IGludGVyZmFjZSBvdmVyIERQQ0QsCj4gPiAgICBhbmQgdGhl eSBhY3R1YWxseSByZXF1aXJlIHRoYXQgdGhlIHBhbmVsIHN1cHBvcnQgdGhlIFZFU0EgYmFja2xp Z2h0Cj4gPiBjb250cm9sCj4gPiAgICBpbnRlcmZhY2UuIEluY2lkZW50YWxseSwgYSBsb3Qgb2Yg dGhlIGxhcHRvcHMgdGhhdCBJJ3ZlIGZvcmNlLWVuYWJsZWQKPiA+IFZFU0EKPiA+ICAgIGJhY2ts aWdodCBjb250cm9scyBvbiBoYXZlIG52aWRpYSBHUFVzIGluIHRoZW0sIGFuZCBzbyBmYXIgZXZl cnkgc2luZ2xlCj4gPiBvbmUKPiA+ICAgIGhhcyB3b3JrZWQgd2l0aCB0aGUgY29kZSB3ZSBjdXJy ZW50bHkgdXNlIGluIHRoZSBrZXJuZWwuIE15IGhvcGUgd2l0aAo+ID4gdGhpcwo+ID4gICAgd291 bGQgYmUgdGhhdCBzaW5jZSBudmlkaWEncyBkcml2ZXIgc3VwcG9ydCBpcyBzb21ld2hhdCBjb25z aXN0ZW50LCB0aGV5Cj4gPiAgICBlaXRoZXIgbWlnaHQgaGF2ZSBhIGxpc3Qgb2YgcHJvYmxlbWF0 aWMgcGFuZWxzIG9yIGNhbiBqdXN0IHZlcmlmeSB3aXRoIHVzCj4gPiAgICB0aGF0IGFsbCBvZiB0 aGUgcGFuZWxzIHRoYXQgdGhlaXIgZHJpdmVyIGludGVyYWN0cyB3aXRoIGZvbGxvdyB0aGUgTFNC Cj4gPiAgICBwcmVmZXJlbmNlLgo+ID4gCj4gPiBGb3IgdGhlIENocm9tZU9TIGd1eXMgaW4gdGhl IHRocmVhZCwgZG9lcyB0aGlzIHNvdW5kIGxpa2UgaXQgY291bGQgYmUKPiA+IHdvcmthYmxlPyBG b3IgdGhlIHRpbWUgYmVpbmcsIEknbGwgYWxzbyBzZW5kIG15IG52aWRpYSBjb250YWN0cyBhIHBv a2UgdG8KPiA+IHNlZQo+ID4gd2hhdCBpbmZvIHRoZXkgY2FuIGdpdmUgdXMuIEFzIHdlbGwsIHdl IHNob3VsZCBwcm9iYWJseSBwb2tlIEJpbGwganVzdCBpbgo+ID4gY2FzZQo+ID4gaGUgbWlnaHQg a25vdyBvZiBzb21lIHJlc291cmNlIHRoYXQgZG9jdW1lbnRzIHNvbWUgb2YgdGhlIHByb2JsZW1h dGljIHBhbmVscwo+ID4gb3V0IHRoZXJlIChwcm9iYWJseSBub3QsIGJ1dCBpdCdzIGF0IGxlYXN0 IHdvcnRoIGEgc2hvdCkuIEknbGwgdHJ5IHRvIGdldAo+ID4gYXJvdW5kIHRoaXMgdG9kYXksIGJ1 dCB3ZSBtaWdodCBoYXZlIHRvIHBva2UgaGltIG9uY2Ugb3IgdHdpY2Ugc2luY2UgdGhlcmUKPiA+ IG9yaWdpbmFsbHkgd2FzIGEgcHJvYmxlbSB3aXRoIGFueSBvZiB0aGUgZW1haWxzIGZyb20gUmVk IEhhdCBnZXR0aW5nIHRocm91Z2gKPiA+IHRvIGhpbeKApgo+ID4gCj4gPiA+IEkgd2lsbCBhbHNv IGxvb2sgaW50byB3aGV0aGVyIG15IHNwZWNpZmljIGRldmljZSBzdXBwb3J0cyB0aGlzCj4gPiA+ IGV4dGVuc2lvbiwgYW5kIGluIHRoYXQgY2FzZSBJJ2xsIHZvbHVudGVlciB0byBpbXBsZW1lbnQg dGhpcyBuZXcKPiA+ID4gZnVuY3Rpb25hbGl0eSBpbiB0aGUgZHJpdmVyLgo+ID4gPiAKPiA+ID4g VGhhbmtzIGZvciB5b3VyIHRpbWUsCj4gPiA+IEtldmluCj4gPiA+IAo+ID4gPiBPbiBUdWUsIFNl cCAyMiwgMjAyMCBhdCAzOjMwIFBNIEx5dWRlIFBhdWwgPGx5dWRlQHJlZGhhdC5jb20+IHdyb3Rl Ogo+ID4gPiA+IEhpISBTaW5jZSBJIGdvdCBkcm9wcGVkIGZyb20gdGhlIHRocmVhZCwgbWFueSBy ZXNwb25zZXMgaW5saW5lCj4gPiA+ID4gCj4gPiA+ID4gT24gVHVlLCAyMDIwLTA5LTIyIGF0IDEy OjU4IC0wNzAwLCBQdXRoaWtvcm4gVm9yYXZvb3RpdmF0IHdyb3RlOgo+ID4gPiA+ID4gK0x5dWRl Cj4gPiA+ID4gPiBJIG5vdGljZSB0aGF0IEx5dWRlIGVtYWlsIHdhcyBzb21laG93IGRyb3BwZWQg ZnJvbSB0aGUgdGhyZWFkLgo+ID4gPiA+ID4gTHl1ZGUgd2FzIHRoZSBwZXJzb24gd2hvIHN1Ym1p dHRlZCB0aGUgcGF0Y2ggZm9yIFRoaW5rcGFkIGFuZCBzaG91bGQKPiA+ID4gPiA+IGtub3cgdGhl IE9VSSBvZiB0aGUgcGFuZWwuCj4gPiA+ID4gCj4gPiA+ID4gbm8gbmVlZCAtIGN1cnJlbnRseSBi ZWNhdXNlIG9mIHNvbWUgY29uZnVzaW9uIHRoYXQgZ290IGNhdXNlZCBieSB0aGUKPiA+ID4gPiBJ bnRlbAo+ID4gPiA+IEhEUgo+ID4gPiA+IGJhY2tsaWdodCBpbnRlcmZhY2UgYmVpbmcgdGhlIG9u bHkgYmFja2xpZ2h0IGludGVyZmFjZSB0aGF0IHdvcmtzCj4gPiA+ID4gcHJvcGVybHkKPiA+ID4g PiBvbgo+ID4gPiA+IGEgbG90IG9mIHBhbmVscyAobWFueSBwYW5lbHMgd2lsbCBhZHZlcnRpc2Ug Ym90aCBpbnRlcmZhY2VzLCBidXQgbWlnaHQKPiA+ID4gPiBvbmx5Cj4gPiA+ID4gd29yayB3aXRo IHRoZSBJbnRlbCBvbmUpLCB3ZSBhY3R1YWxseSByZWx5IG9uIGEgc21hbGwgYWxsb3dsaXN0IG9m Cj4gPiA+ID4gImFwcHJvdmVkIgo+ID4gPiA+IHBhbmVscyBmb3IgZW5hYmxpbmcgRFBDRCBiYWNr bGlnaHQgY29udHJvbC4KPiA+ID4gPiAKPiA+ID4gPiDigKZob3dldmVyLCBtYW55IG9mIHRoZXNl IHBhbmVscyBhcmUgYW5ub3lpbmcgYW5kIGRvbid0IGFjdHVhbGx5IHByb3ZpZGUgYQo+ID4gPiA+ IHJlbGlhYmxlIGVub3VnaCBPVUlEIHRvIHVzZSBmb3IgcXVpcmsgZGV0ZWN0aW9uLCB3aGljaCBp cyB3aHkgd2UgaGFkIHRvCj4gPiA+ID4gYWRkCj4gPiA+ID4gRURJRCBxdWlyayBkZXRlY3Rpb24g YXMgYSB0ZW1wb3Jhcnkgd29ya2Fyb3VuZCBmb3IgdGhpcy4gVGhlIGN1cnJlbnQKPiA+ID4gPiBs aXN0Cj4gPiA+ID4gb2YKPiA+ID4gPiBwYW5lbHMgbGl2ZXMgaW4gZHJtX2RwX2hlbHBlci5jOgo+ ID4gPiA+IAo+ID4gPiA+IC8qCj4gPiA+ID4gICogU29tZSBkZXZpY2VzIGhhdmUgdW5yZWxpYWJs ZSBPVUlEcyB3aGVyZSB0aGV5IGRvbid0IHNldCB0aGUgZGV2aWNlIElECj4gPiA+ID4gICogY29y cmVjdGx5LCBhbmQgYXMgYSByZXN1bHQgd2UgbmVlZCB0byB1c2UgdGhlIEVESUQgZm9yIGZpbmRp bmcKPiA+ID4gPiBhZGRpdGlvbmFsCj4gPiA+ID4gICogRFAgcXVpcmtzIGluIHN1Y2ggY2FzZXMu Cj4gPiA+ID4gICovCj4gPiA+ID4gc3RhdGljIGNvbnN0IHN0cnVjdCBlZGlkX3F1aXJrIGVkaWRf cXVpcmtfbGlzdFtdID0gewo+ID4gPiA+ICAgICAgICAgLyogT3B0aW9uYWwgNEsgQU1PTEVEIHBh bmVsIGluIHRoZSBUaGlua1BhZCBYMSBFeHRyZW1lIDJuZAo+ID4gPiA+IEdlbmVyYXRpb24KPiA+ ID4gPiAgICAgICAgICAqIG9ubHkgc3VwcG9ydHMgRFBDRCBiYWNrbGlnaHQgY29udHJvbHMKPiA+ ID4gPiAgICAgICAgICAqLwo+ID4gPiA+ICAgICAgICAgeyBNRkcoMHg0YywgMHg4MyksIFBST0Rf SUQoMHg0MSwgMHg0MSksCj4gPiA+ID4gQklUKERQX1FVSVJLX0ZPUkNFX0RQQ0RfQkFDS0xJR0hU KSB9LAo+ID4gPiA+ICAgICAgICAgLyoKPiA+ID4gPiAgICAgICAgICAqIFNvbWUgRGVsbCBDTUwg MjAyMCBzeXN0ZW1zIGhhdmUgcGFuZWxzIHN1cHBvcnQgYm90aCBBVVggYW5kCj4gPiA+ID4gUFdN Cj4gPiA+ID4gICAgICAgICAgKiBiYWNrbGlnaHQgY29udHJvbCwgYW5kIHNvbWUgb25seSBzdXBw b3J0IEFVWCBiYWNrbGlnaHQKPiA+ID4gPiBjb250cm9sLgo+ID4gPiA+IEFsbAo+ID4gPiA+ICAg ICAgICAgICogc2FpZCBwYW5lbHMgc3RhcnQgdXAgaW4gQVVYIG1vZGUgYnkgZGVmYXVsdCwgYW5k IHdlIGRvbid0Cj4gPiA+ID4gaGF2ZQo+ID4gPiA+IGFueQo+ID4gPiA+ICAgICAgICAgICogc3Vw cG9ydCBmb3IgZGlzYWJsaW5nIEhEUiBtb2RlIG9uIHRoZXNlIHBhbmVscyB3aGljaCB3b3VsZCBi ZQo+ID4gPiA+ICAgICAgICAgICogcmVxdWlyZWQgdG8gc3dpdGNoIHRvIFBXTSBiYWNrbGlnaHQg Y29udHJvbCBtb2RlIChwbHVzLCBJJ20KPiA+ID4gPiBub3QKPiA+ID4gPiAgICAgICAgICAqIGV2 ZW4gc3VyZSB3ZSB3YW50IFBXTSBiYWNrbGlnaHQgY29udHJvbHMgb3ZlciBEUENEIGJhY2tsaWdo dAo+ID4gPiA+ICAgICAgICAgICogY29udHJvbHMgYW55d2F5Li4uKS4gVW50aWwgd2UgaGF2ZSBh IGJldHRlciB3YXkgb2YgZGV0ZWN0aW5nCj4gPiA+ID4gdGhlc2UsCj4gPiA+ID4gICAgICAgICAg KiBmb3JjZSBEUENEIGJhY2tsaWdodCBtb2RlIG9uIGFsbCBvZiB0aGVtLgo+ID4gPiA+ICAgICAg ICAgICovCj4gPiA+ID4gICAgICAgICB7IE1GRygweDA2LCAweGFmKSwgUFJPRF9JRCgweDliLCAw eDMyKSwKPiA+ID4gPiBCSVQoRFBfUVVJUktfRk9SQ0VfRFBDRF9CQUNLTElHSFQpIH0sCj4gPiA+ ID4gICAgICAgICB7IE1GRygweDA2LCAweGFmKSwgUFJPRF9JRCgweGViLCAweDQxKSwKPiA+ID4g PiBCSVQoRFBfUVVJUktfRk9SQ0VfRFBDRF9CQUNLTElHSFQpIH0sCj4gPiA+ID4gICAgICAgICB7 IE1GRygweDRkLCAweDEwKSwgUFJPRF9JRCgweGM3LCAweDE0KSwKPiA+ID4gPiBCSVQoRFBfUVVJ UktfRk9SQ0VfRFBDRF9CQUNLTElHSFQpIH0sCj4gPiA+ID4gICAgICAgICB7IE1GRygweDRkLCAw eDEwKSwgUFJPRF9JRCgweGU2LCAweDE0KSwKPiA+ID4gPiBCSVQoRFBfUVVJUktfRk9SQ0VfRFBD RF9CQUNLTElHSFQpIH0sCj4gPiA+ID4gICAgICAgICB7IE1GRygweDRjLCAweDgzKSwgUFJPRF9J RCgweDQ3LCAweDQxKSwKPiA+ID4gPiBCSVQoRFBfUVVJUktfRk9SQ0VfRFBDRF9CQUNLTElHSFQp IH0sCj4gPiA+ID4gfTsKPiA+ID4gPiAKPiA+ID4gPiBBbHNvIG5vdGUgdGhhdCBJIHRoaW5rIGp1 c3QgYWJvdXQgZXZlcnkgcGFuZWwgb24gdGhhdCBsaXN0IHN1cHBvcnRzIHRoZQo+ID4gPiA+IElu dGVsCj4gPiA+ID4gSERSIGJhY2tsaWdodCBpbnRlcmZhY2UsIHNvIGl0J3MgLXBvc3NpYmxlLSB0 aGF0IHRoZSBWRVNBIGludGVyZmFjZQo+ID4gPiA+IGNvdWxkCj4gPiA+ID4gYmUKPiA+ID4gPiBi cm9rZW4gb24gdGhlc2UgcGFuZWxzLiBCdXQsIHRoYXQgd291bGQgYmUgYSBsb3Qgb2YgZGlmZmVy ZW50IHBhbmVscwo+ID4gPiA+IGZyb20KPiA+ID4gPiBkaWZmZXJlbnQgdmVuZG9ycyB0byBhbGwg YmUgYnJva2VuIGluIHRoZSBzYW1lIHdheS4KPiA+ID4gPiAKPiA+ID4gPiA+IE9uIFR1ZSwgU2Vw IDIyLCAyMDIwIGF0IDExOjQ3IEFNIEtldmluIENob3dza2kgPGNob3dza2lAY2hyb21pdW0ub3Jn Pgo+ID4gPiA+ID4gd3JvdGU6Cj4gPiA+ID4gPiA+IEFscmlnaHR5LCBJJ2xsIHRha2UgZXZlcnlv bmUgZWxzZSdzIHNpbGVuY2UgYXMgdGFjaXQgYXBwcm92YWwgb2YKPiA+ID4gPiA+ID4gVmlsbGUn cyBvcGluaW9ucy4gKEkgZGlkbid0IHJlY2VpdmUgYW55IGVtYWlsIGJvdW5jZXMgdGhpcyB0aW1l LCBzbwo+ID4gPiA+ID4gPiBJCj4gPiA+ID4gPiA+IHRoaW5rIG15IGlzc3VlIHdhcyB0cmFuc2ll bnQuKSBJIHdpbGwgc3RhcnQgb24gaW52ZXJ0aW5nIHRoZSBxdWlyawo+ID4gPiA+ID4gPiBhbmQK PiA+ID4gPiA+ID4gbWFraW5nIHRoZSBtb3N0LXNpZ25pZmljYW50LWFsaWdubWVudCBtYXR0ZXIg Zm9yIHRoZXNlIHJlZ2lzdGVycyBieQo+ID4gPiA+ID4gPiBkZWZhdWx0Lgo+ID4gPiA+ID4gPiAK PiA+ID4gPiA+ID4gV2hvIGNhbiBoZWxwIG1lIGdhdGhlciBhIGxpc3Qgb2YgT1VJcyB0aGF0IHdl IG5lZWQgdG8gYWRkIHRvIHRoZQo+ID4gPiA+ID4gPiBxdWlyaz8gSSBjYW4gZm9sbG93IHVwIHdp dGggUHV0aGlrb3JuIGFib3V0IHRoZSByZWxldmFudAo+ID4gPiA+ID4gPiBDaHJvbWVib29rcywK PiA+ID4gPiA+ID4gYnV0IEkgZG9uJ3Qga25vdyB3aGF0IG90aGVyIHR5cGVzIG9mIGxhcHRvcHMg YXJlIHVzaW5nIHRoaXMgZHJpdmVyLgo+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gVGhhbmtzIGZv ciB5b3VyIHRpbWUsCj4gPiA+ID4gPiA+IEtldmluIENob3dza2kKPiA+ID4gPiA+ID4gCj4gPiA+ ID4gPiA+IAo+ID4gPiA+ID4gPiBPbiBGcmksIFNlcCAxOCwgMjAyMCBhdCAxMjoxNiBQTSBQdXRo aWtvcm4gVm9yYXZvb3RpdmF0Cj4gPiA+ID4gPiA+IDxwdXRoaWtAY2hyb21pdW0ub3JnPiB3cm90 ZToKPiA+ID4gPiA+ID4gPiBJJ2xsIGRlZmVyIHRvIFZpbGxlICYgTHl1ZGUuCj4gPiA+ID4gPiA+ ID4gCj4gPiA+ID4gPiA+ID4gSSBkdWcgdXAgbW9yZSBvbiB0aGUgYnVnIHJlcG9ydCBhbmQgZm91 bmQgdGhhdCBib3RoIFRoaW5rcGFkIGFuZAo+ID4gPiA+ID4gPiA+IEdhbGF4eSBDaHJvbWVib29r IHVzZSB0aGUgc2FtZSBTYW1zdW5nIE9MRUQuCj4gPiA+ID4gPiA+ID4gU28gbXkgMiB2cyAxIGFy Z3VtZW50IGlzIGFjdHVhbGx5IG5vdCB2YWxpZC4KPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4g PiBPbiBGcmksIFNlcCAxOCwgMjAyMCBhdCAxMDo1OSBBTSBLZXZpbiBDaG93c2tpIDwKPiA+ID4g PiA+ID4gPiBjaG93c2tpQGNocm9taXVtLm9yZwo+ID4gPiA+ID4gPiA+IHdyb3RlOgo+ID4gPiA+ ID4gPiA+ID4gQXBvbG9naWVzIG9uY2UgYWdhaW4sIHNvbWUgb2YgbXkgZW1haWxzIHdlcmUgYm91 bmNpbmcgZm9yIHNvbWUKPiA+ID4gPiA+ID4gPiA+IGFkZHJlc3NlcyB5ZXN0ZXJkYXkuIEhvcGVm dWxseSBpdCB3YXMgYSB0ZW1wb3JhcnkgY29uZGl0aW9uOwo+ID4gPiA+ID4gPiA+ID4gSSdsbAo+ ID4gPiA+ID4gPiA+ID4gY29udGludWUgdHJ5aW5nIHRvIGRpZyBpbnRvIGl0IG9uIG15IGVuZCBp ZiBpdCBoYXBwZW5zIGFnYWluIGZvcgo+ID4gPiA+ID4gPiA+ID4gdGhpcwo+ID4gPiA+ID4gPiA+ ID4gZW1haWwuCj4gPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+IFNpbmNlIHRoZXJlJ3Mg ZXZpZGVuY2UgdGhhdCBzb21lIG1vZGVscyB3YW50IGxzYiBhbmQgc29tZSAod2VsbCwKPiA+ID4g PiA+ID4gPiA+IGF0Cj4gPiA+ID4gPiA+ID4gPiBsZWFzdCBvbmUpIHdhbnQgbXNiLCBteSB1bmRl cnN0YW5kaW5nIGlzIHRoYXQgd2UnbGwgbmVlZCBhIHF1aXJrCj4gPiA+ID4gPiA+ID4gPiBvbmUK PiA+ID4gPiA+ID4gPiA+IHdheSBvciB0aGUgb3RoZXIgKHBsZWFzZSBjb3JyZWN0IGlmIEknbSBt aXN0YWtlbikuIEkKPiA+ID4gPiA+ID4gPiA+IHVuZm9ydHVuYXRlbHkKPiA+ID4gPiA+ID4gPiA+ IGRvbid0IGhhdmUgdGhlIGFiaWxpdHkgdG8gdGVzdCBhbnl0aGluZyBvdGhlciB0aGFuIHRoZQo+ ID4gPiA+ID4gPiA+ID4gUGl4ZWxib29rLAo+ID4gPiA+ID4gPiA+ID4gc28KPiA+ID4gPiA+ID4g PiA+IGlmIHdlIGRlY2lkZSB0aGUgbXNiIGlzIHRoZSAicmlnaHQiIHdheSwgdGhlbiBJIHdpbGwg aGF2ZSB0bwo+ID4gPiA+ID4gPiA+ID4gcmVseQo+ID4gPiA+ID4gPiA+ID4gb24KPiA+ID4gPiA+ ID4gPiA+IG90aGVycyB0byB0ZXN0IChhbmQgZmluZCB0aGUgT1VJIG9mKSBvdGhlciBtb2RlbHMg d2hpY2ggcmVxdWlyZQo+ID4gPiA+ID4gPiA+ID4gbHNiLgo+ID4gPiA+ID4gPiA+ID4gCj4gPiA+ ID4gPiA+ID4gPiBJIGFtIGhhcHB5IHRvIG1ha2UgYW55IGNoYW5nZXMgcmVxdWVzdGVkLCBidXQg SSBkbyBub3QgYXQgYWxsCj4gPiA+ID4gPiA+ID4gPiBoYXZlCj4gPiA+ID4gPiA+ID4gPiBlbm91 Z2ggYmFja2dyb3VuZCBoZXJlIHRvIG1ha2UgdGhlIGRlY2lzaW9uIG9uIHdoZXRoZXIgdGhlIG1z Ygo+ID4gPiA+ID4gPiA+ID4gZnVuY3Rpb25hbGl0eSBkZXNlcnZlcyB0aGUgcXVpcmsgb3IgaWYg dGhlIGxzYiBvbmUgZG9lcy4gSG93IGNhbgo+ID4gPiA+ID4gPiA+ID4gSQo+ID4gPiA+ID4gPiA+ ID4gaGVscCB5b3UgYWxsIGNvbWUgdG8gYW4gYWdyZWVtZW50IGhlcmU/Cj4gPiA+ID4gPiA+ID4g PiAKPiA+ID4gPiA+ID4gPiA+ICogSXQgc2VlbXMgbGlrZSBWaWxsZSBmZWVscyBzdHJvbmdseSBh Ym91dCB0aGUgbXNiIGJlaW5nIHRoZQo+ID4gPiA+ID4gPiA+ID4gY29ycmVjdAo+ID4gPiA+ID4g PiA+ID4gaW50ZXJwcmV0YXRpb24gb2YgdGhlIHNwZWMuCj4gPiA+ID4gPiA+ID4gPiAqIEl0J3Mg dW5jbGVhciB0byBtZSBvbiB3aGljaCBzaWRlIG9mIHRoZSBmZW5jZSBMeXVkZSBmYWxscywgSQo+ ID4gPiA+ID4gPiA+ID4gY291bGRuJ3QgcGljayB1cCBhIHN0cm9uZyBvcGluaW9uIGluIGhlciBj bGFyaWZ5aW5nIHF1ZXN0aW9uLgo+ID4gPiA+ID4gPiA+ID4gKiBQdXRoaWtvcm4gc2VlbXMgdG8g YmUgb24gdGhlIHNpZGUgb2YgbHNiIGJlaW5nIGNvcnJlY3QsIGJ1dAo+ID4gPiA+ID4gPiA+ID4g bWF5YmUKPiA+ID4gPiA+ID4gPiA+IHdhcyBzd2F5ZWQgYnkgVmlsbGUncyBhcmd1bWVudC4KPiA+ ID4gPiAKPiA+ID4gPiBIb25lc3RseSBJJ20gbm90IGhhcmQgdG8gY29udmluY2UgOlAsIGlmIGl0 IGxvb2tzIGxpa2Ugd2UgZ290IHRoZSBiaXQKPiA+ID4gPiBzaGlmdAo+ID4gPiA+IHdyb25nIGZv ciB0aGUgbWFqb3JpdHkgb2YgZGV2aWNlcyBhbmQgZXZlcnlvbmUgZWxzZSBhZ3JlZXMgdGhlbiBJ J20gZmluZQo+ID4gPiA+IHdpdGgKPiA+ID4gPiBhc3N1bWluZyB0aGF0J3MgdGhlIGNhc2UuIEkn bSBqdXN0IHF1aXRlIHN1cnByaXNlZCwgc2VlaW5nIGFzIHdlJ3ZlCj4gPiA+ID4gdGVzdGVkCj4g PiA+ID4gbWFueSBkaWZmZXJlbnQgcGFuZWxzIGZyb20gYSBmZXcgdmVuZG9ycyBhbmQgaGF2ZW4n dCBydW4gaW50byBhbnkgaXNzdWVzCj4gPiA+ID4gd2l0aAo+ID4gPiA+IHRoaXMgYmVmb3JlLgo+ ID4gPiA+IAo+ID4gPiA+IEhvbmVzdGx5IC0gaWYgdGhlcmUncyB0aGlzIG11Y2ggdW5jZXJ0YWlu dHkgYWJvdXQgaXQsIG1heWJlIHdlIHNob3VsZAo+ID4gPiA+IGp1c3QKPiA+ID4gPiBhc2sKPiA+ ID4gPiBWRVNBIGRpcmVjdGx5IHdoYXQgdGhlIGNvcnJlY3QgaW50ZXJwcmV0YXRpb24gb2YgdGhp cyBpcz8gTm90ZSBJJ20gbm90Cj4gPiA+ID4gb24KPiA+ID4gPiB0aGUKPiA+ID4gPiBWRVNBIGJv YXJkIChJIGdldCBhY2Nlc3MgdG8gRFAvZURQIHNwZWNzIHRocm91Z2ggWC5vcmcpIHNvIHVubGVz cyB0aGUKPiA+ID4gPiBjb250YWN0cwo+ID4gPiA+IEkndmUgZ290IGZyb20gVkVTQSB3b3VsZCB3 b3JrIChCaWxsIExlbXBlc2lzIGJpbGwgYXQgdmVzYSBkb3Qgb3JnKSBmb3IKPiA+ID4gPiB0aGF0 IGl0Cj4gPiA+ID4gbWlnaHQgYmUgYSBiZXR0ZXIgaWRlYSBmb3Igc29tZW9uZSBmcm9tIEdvb2ds ZSBvciBJbnRlbCB0byBhc2suCj4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiBJZiBubyBvbmUgZmVl bHMgdGhhdCBWaWxsZSdzIGFyZ3VtZW50IGlzIG5vdCBzdHJvbmcgaW4gc29tZSB3YXksCj4gPiA+ ID4gPiA+ID4gPiBhbmQKPiA+ID4gPiA+ID4gPiA+IHdlIGdvIHdpdGggdGhhdCwgSSB3aWxsIGdl dCB0byB3b3JrIG9uIHRoZSByZXF1ZXN0ZWQgY2hhbmdlcy4gSQo+ID4gPiA+ID4gPiA+ID4gYW0K PiA+ID4gPiA+ID4gPiA+IGNvbmNlcm5lZCwgdGhvdWdoLCBhYm91dCBjaGFuZ2luZyB0aGUgZGVm YXVsdCBmdW5jdGlvbmFsaXR5Cj4gPiA+ID4gPiA+ID4gPiB3aXRob3V0Cj4gPiA+ID4gPiA+ID4g PiB0ZXN0aW5nIGl0IHdpZGVseSB0byBmaW5kIHRoZSBzZXQgb2YgbGFwdG9wcyB3aGljaCByZXF1 aXJlIHRoZQo+ID4gPiA+ID4gPiA+ID4gbHNiCj4gPiA+ID4gPiA+ID4gPiBxdWlyay4gSSdkIGFw cHJlY2lhdGUgYW55IGFkdmljZSBwZW9wbGUgbWlnaHQgaGF2ZSBhYm91dCBtYWtpbmcKPiA+ID4g PiA+ID4gPiA+IHRoaXMKPiA+ID4gPiA+ID4gPiA+IGNoYW5nZSBzYWZlbHkuCj4gPiA+ID4gCj4g PiA+ID4gVXN1YWxseSwgSSBqdXN0IHRyeSB0byBzdGljayB3aXRoIHdoYXQgdGhlIG1ham9yaXR5 IG9mIG1hY2hpbmVzIG5lZWQgdG8KPiA+ID4gPiBkby4gSQo+ID4gPiA+IHN0aWxsIHRoaW5rIGl0 J2QgYmUgYSBnb29kIGlkZWEgZm9yIHVzIHRvIHZlcmlmeSB0aGlzIHdpdGggVkVTQSBpZgo+ID4g PiA+IHRoZXJlJ3MKPiA+ID4gPiB0aGF0IG11Y2ggY29uZnVzaW9uIHRob3VnaAo+ID4gPiA+IAo+ ID4gPiA+ID4gPiA+ID4gVGhhbmsgeW91IGZvciB5b3VyIHRpbWUsCj4gPiA+ID4gPiA+ID4gPiBL ZXZpbgo+ID4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiBPbiBUaHUsIFNlcCAxNywgMjAy MCBhdCAyOjExIFBNIFZpbGxlIFN5cmrDpGzDpAo+ID4gPiA+ID4gPiA+ID4gPHZpbGxlLnN5cmph bGFAbGludXguaW50ZWwuY29tPiB3cm90ZToKPiA+ID4gPiA+ID4gPiA+ID4gT24gVGh1LCBTZXAg MTcsIDIwMjAgYXQgMDk6MjU6MzVQTSArMDMwMCwgVmlsbGUgU3lyasOkbMOkIHdyb3RlOgo+ID4g PiA+ID4gPiA+ID4gPiA+IE9uIFRodSwgU2VwIDE3LCAyMDIwIGF0IDExOjE0OjQzQU0gLTA3MDAs IFB1dGhpa29ybgo+ID4gPiA+ID4gPiA+ID4gPiA+IFZvcmF2b290aXZhdAo+ID4gPiA+ID4gPiA+ ID4gPiA+IHdyb3RlOgo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gVGhlIEx5dWRlIGZkZTcyNjZmYjJm NiBjaGFuZ2UgaXMgYWN0dWFsbHkgYmFzZWQgb24KPiA+ID4gPiA+ID4gPiA+ID4gPiA+IENocm9t aXVtCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiBjaGFuZ2UKPiA+ID4gPiA+ID4gPiA+ID4gPiA+ICho dHRwczovL2NycmV2LmNvbS9jLzE2NTAzMjUpIHRoYXQgZml4ZXMgdGhlIGJyaWdodG5lc3MKPiA+ ID4gPiA+ID4gPiA+ID4gPiA+IGZvcgo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gU2Ftc3VuZwo+ID4g PiA+ID4gPiA+ID4gPiA+ID4gR2FsYXh5IENocm9tZWJvb2suIFNvIGN1cnJlbnRseSB3ZSBoYXZl IDIgZXhhbXBsZXMgdGhhdAo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gdXNlCj4gPiA+ID4gPiA+ID4g PiA+ID4gPiBMU0IKPiA+ID4gPiA+ID4gPiA+ID4gPiA+IGludGVycHJldGF0aW9uIGFuZCAxIHRo YXQgdXNlIE1TQi4KPiA+ID4gPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+ID4gPiAiSWYg ZmllbGQgNDowIG9mIHRoZSBFRFBfUFdNR0VOX0JJVF9DT1VOVCByZWdpc3Rlcgo+ID4gPiA+ID4g PiA+ID4gPiA+IHJlcHJlc2VudHMKPiA+ID4gPiA+ID4gPiA+ID4gPiBhCj4gPiA+ID4gPiA+ID4g PiA+ID4gdmFsdWUKPiA+ID4gPiA+ID4gPiA+ID4gPiBvZiBncmVhdGVyIHRoYW4gOCBhbmQgdGhl IEJBQ0tMSUdIVF9CUklHSFRORVNTX0JZVEVfQ09VTlQKPiA+ID4gPiA+ID4gPiA+ID4gPiBiaXQK PiA+ID4gPiA+ID4gPiA+ID4gPiBpcyBjbGVhcmVkIHRvIDAsIG9ubHkgdGhlIDggTVNCIG9mIHRo ZSBicmlnaHRuZXNzIGNvbnRyb2wKPiA+ID4gPiA+ID4gPiA+ID4gPiB2YWx1ZQo+ID4gPiA+ID4g PiA+ID4gPiA+IGNhbiBiZQo+ID4gPiA+ID4gPiA+ID4gPiA+IGNvbnRyb2xsZWQuCj4gPiA+ID4g PiA+ID4gPiA+ID4gKFNlZSBOb3RlIGJlbG93LikKPiA+ID4gPiA+ID4gPiA+ID4gPiBBc3NpZ25l ZCBiaXRzIGFyZSBhbGxvY2F0ZWQgdG8gdGhlIE1TQiBvZiB0aGUgZW5hYmxlZAo+ID4gPiA+ID4g PiA+ID4gPiA+IHJlZ2lzdGVyCj4gPiA+ID4gPiA+ID4gPiA+ID4gY29tYmluYXRpb24uIgo+ID4g PiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gPiA+IEkgdGhpbmsgdGhhdCdzIHByZXR0 eSBjbGVhciB0aGUgYXNzaWduZWQgYml0cyBhcmUgc3VwcG9zZWQKPiA+ID4gPiA+ID4gPiA+ID4g PiB0bwo+ID4gPiA+ID4gPiA+ID4gPiA+IGJlCj4gPiA+ID4gPiA+ID4gPiA+ID4gbXNiIGFsaWdu ZWQuCj4gPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gPiBJIGd1ZXNzIHRoZXJlJ3Mg c29tZSBlbWFpbCBpc3N1ZXMgaGFwcGVuaW5nLCBidXQganVzdCB0bwo+ID4gPiA+ID4gPiA+ID4g PiBjbGFyaWZ5Ogo+ID4gPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+ID4gV2hlbiB0aGUg c3BlYyBzYXlzIE1TQiBpbiBjYXBzIGhlcmUgaXQgY2xlYXJseSBtZWFucwo+ID4gPiA+ID4gPiA+ ID4gPiAibW9zdCBzaWduaWZpY2FudC1iaXQocykiIHNpbmNlIG90aGVyd2lzZSAiOCBNU0IiIHdv dWxkIG5vdAo+ID4gPiA+ID4gPiA+ID4gPiBtYWtlCj4gPiA+ID4gPiA+ID4gPiA+IGFueSBzZW5z ZSBpbiB0aGUgY29udGV4dCBvZiBhIDIgYnl0ZSB2YWx1ZS4KPiA+ID4gPiA+ID4gPiA+ID4gCj4g PiA+ID4gPiA+ID4gPiA+IEdyYW50ZWQgdGhlIHNwZWMgaXMgY3JhcCBoZXJlIHNpbmNlICJUYWJs ZSAxLTE6IEFjcm9ueW1zIGFuZAo+ID4gPiA+ID4gPiA+ID4gPiBJbml0aWFsaXNtIiBkb2VzIGNs YWltICJNU0IiIHNob3VsZCBiZSBieXRlKHMpIGFuZCAibXNiIgo+ID4gPiA+ID4gPiA+ID4gPiBi aXQocykuCj4gPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gPiBBbHNvIEkgY2FuJ3Qg aW1hZ2luZSBhbnlvbmUgd291bGQgYWxsb2NhdGUgdGhlIGJpdHMgc3RhcnRpbmcKPiA+ID4gPiA+ ID4gPiA+ID4gZnJvbSB0aGUgbHNiIHdoZW4gdGhlIHdob2xlIHRoaW5nIGlzIGNsZWFybHkgc3Vw cG9zZWQgdG8gYmUgYQo+ID4gPiA+ID4gPiA+ID4gPiAxNmJpdCBiaWcgZW5kaWFuIGludGVnZXIu IFNvIHdpdGggPjggYXNzaWduZWQgYml0cyB5b3UnZCBlbmQKPiA+ID4gPiA+ID4gPiA+ID4gdXAg d2l0aCBjcmF6eSBzdHVmZiBsaWtlIHRoaXM6Cj4gPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4g PiA+ID4gPiBbIDcgLi4uIDAgXVs3ICAgLi4uICAgMF0KPiA+ID4gPiA+ID4gPiA+ID4gWyA4IE1T QiAgIF1bWFhYWF1bTiBMU0JdCj4gPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gPiBz byB5b3UgY291bGRuJ3QgZXZlbiB0cmVhdCB0aGUgdmFsdWUgYXMgYSByZWd1bGFyIGJpZyBlbmRp YW4KPiA+ID4gPiA+ID4gPiA+ID4gdGhpbmcuIEluc3RlYWQsIGlmIHlvdSBzcXVpbnQgYSBiaXQs IGl0IG5vdyBsb29rcyBsaWtlIGEgZnVua3kKPiA+ID4gPiA+ID4gPiA+ID4gbGl0dGxlIGVuZGlh biB2YWx1ZS4gU28gd2UncmUgZGVlcCBpbnRvIHNvbWUgbWl4ZWQgZW5kaWFuIGxhbmQKPiA+ID4g PiA+ID4gPiA+ID4gd2hlcmUgbm90aGluZyBtYWtlcyBzZW5zZSBhbnltb3JlLgo+ID4gPiA+ID4g PiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+ID4gQW55d2F5cyBJIHRoaW5rIHRoZSBjb2RlIHNob3Vs ZCBzaW1wbHkgZG8gdGhpcyB0byBtYXRjaCB0aGUKPiA+ID4gPiA+ID4gPiA+ID4gc3BlYzoKPiA+ ID4gPiA+ID4gPiA+ID4gdTE2IHZhbHVlID0gYnJpZ2h0bmVzcyA8PCAoMTYgLSBudW1fYXNzaWdu ZWRfYml0cyk7Cj4gPiA+ID4gPiA+ID4gPiA+IHZhbFswXSA9IHZhbHVlID4+IDg7Cj4gPiA+ID4g PiA+ID4gPiA+IHZhbFsxXSA9IHZhbHVlICYgMHhmZjsKPiA+ID4gPiA+ID4gPiA+ID4gCj4gPiA+ ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gT24gVGh1LCBTZXAgMTcsIDIwMjAg YXQgMTA6NTUgQU0gS2V2aW4gQ2hvd3NraSA8Cj4gPiA+ID4gPiA+ID4gPiA+ID4gPiBjaG93c2tp QGNocm9taXVtLm9yZz4gd3JvdGU6Cj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IEFwb2xvZ2llcyBm b3IgYmVpbmcgdG9vIHZhZ3VlLiBUbyBiZSBhcyBwcmVjaXNlIEkgY2FuCj4gPiA+ID4gPiA+ID4g PiA+ID4gPiA+IGJlLAo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBoZXJlCj4gPiA+ID4gPiA+ID4g PiA+ID4gPiA+IGlzIHRoZQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBzcGVjaWZpYyBjb2RlIGRl bHRhIEkgdGVzdGVkOiAKPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gaHR0cHM6Ly9jcnJldi5jb20v Yy8yNDA2NjE2Cj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IC4gVG8KPiA+ID4gPiA+ID4gPiA+ID4g PiA+ID4gYW5zd2VyCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IHlvdXIgb3RoZXIgcXVlc3Rpb24s IHRoZSBjb2RlIEkgdGVzdGVkIGFnYWluc3QgaXMgaW5kZWVkCj4gPiA+ID4gPiA+ID4gPiA+ID4g PiA+IGluY2x1ZGluZyB0aGUKPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gZmRlNzI2NmZiMmY2IChk ZXNwaXRlIG9zdGVuc2libHkgYmVpbmcgY2FsbGVkIDUuNCBpbiBteQo+ID4gPiA+ID4gPiA+ID4g PiA+ID4gPiBjb21taXQKPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gbWVzc2FnZSk6IG91ciBjdXJy ZW50IHRvcC1vZi10cmVlIGZvciBvdXIgNS40IGJyYW5jaAo+ID4gPiA+ID4gPiA+ID4gPiA+ID4g PiBpbmNsdWRlcwo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiB0aGUKPiA+ID4gPiA+ID4gPiA+ID4g PiA+ID4gaW50ZWxfZHBfYXV4X2NhbGNfbWF4X2JhY2tsaWdodCBsb2dpYy4gRnVydGhlciwgSSds bAo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBub3RlCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IHRo YXQKPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gY2hhbmdlCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ IGlzIGV4YWN0bHkgdGhlIGNoYW5nZSB3aGljaCBicmVha3MgbXkgUGl4ZWxib29rIG1vZGVsOgo+ ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBwcmlvcgo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiB0byB0 aGUKPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gY2hhbmdlLCB0aGUgbWF4X2JyaWdodG5lc3Mgd2Fz IGhhcmQtY29kZWQgdG8gMHhGRkZGIGFuZAo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiB0aGUKPiA+ ID4gPiA+ID4gPiA+ID4gPiA+ID4gbWF0aAo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiB3b3JrZWQg b3V0IHRoYXQgaXQgZGlkbid0IG1hdHRlciB0aGF0IHRoZSBoYXJkd2FyZSBjYXJlZAo+ID4gPiA+ ID4gPiA+ID4gPiA+ID4gPiBhYm91dAo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiB0aGUgTVNCCj4g PiA+ID4gPiA+ID4gPiA+ID4gPiA+IGRlc3BpdGUgdGhlIGRyaXZlciBjb2RlIGNhcmluZyBhYm91 dCB0aGUgTFNCLgo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+ID4gPiA+ ID4gVG8gYW5zd2VyIFZpbGxlJ3MgcXVlc3Rpb246IHRoZSBmZGU3MjY2ZmIyZjYgY2hhbmdlCj4g PiA+ID4gPiA+ID4gPiA+ID4gPiA+IHdoaWNoCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IGZpeGVz IG9uZQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBsYXB0b3AgKEkgYmVsaWV2ZSBUaGlua3BhZCBY MSBleHRyZW1lIEdlbiAyLCBmcm9tIHNvbWUKPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gYnVnCj4g PiA+ID4gPiA+ID4gPiA+ID4gPiA+IHJlcG9ydHMgSQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBk dWcgdXApIGFuZCBicmVha3MgYW5vdGhlciAoUGl4ZWxib29rKTsgc28gdW5mb3J0dW5hdGVseQo+ ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBJCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IGJlbGlldmUg d2UKPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gbmVlZCBhIHF1aXJrIGF0IGxlYXN0IGZvciBzb21l IGxhcHRvcC4gUmVhZGluZyB0aHJvdWdoCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IHRoZQo+ID4g PiA+ID4gPiA+ID4gPiA+ID4gPiBjb3B5IG9mIHRoZQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBk YXRhc2hlZXQgSSBoYXZlLCBpdCB3YXNuJ3QgY2xlYXIgdG8gbWUgd2hpY2ggd2FzIHRoZQo+ID4g PiA+ID4gPiA+ID4gPiA+ID4gPiBjb3JyZWN0Cj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IGludGVy cHJldGF0aW9uLiBJJ20gY2MnaW5nIHB1dGhpa0AsIHdobyB3YXMgbGVhbmluZwo+ID4gPiA+ID4g PiA+ID4gPiA+ID4gPiB0b3dhcmQKPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gdGhlCj4gPiA+ID4g PiA+ID4gPiA+ID4gPiA+IGN1cnJlbnQKPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4ga2VybmVsIGNv ZGUgKGNhcmluZyBhYm91dCBMU0IpIGJlaW5nIHRoZSBjb3JyZWN0Cj4gPiA+ID4gPiA+ID4gPiA+ ID4gPiA+IGludGVycHJldGF0aW9uLiBJCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IGJlbGlldmUg d2UgaGF2ZSBvdGhlciBjaHJvbWVib29rcyB3aGljaCBkbyByZWx5IG9uIExTQgo+ID4gPiA+ID4g PiA+ID4gPiA+ID4gPiBmdW5jdGlvbmFsaXR5LAo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBzbyB1 bmxlc3Mgd2UgY2FuIGZpbmQgbW9yZSBleGFtcGxlcyBvZiBsYXB0b3BzIHdhbnRpbmcKPiA+ID4g PiA+ID4gPiA+ID4gPiA+ID4gTVNCCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IGl0Cj4gPiA+ID4g PiA+ID4gPiA+ID4gPiA+IGN1cnJlbnRseSBsb29rcyBsaWtlIFBpeGVsYm9vayBpcyB0aGUgb3V0 bGllci4KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IE9u IFRodSwgU2VwIDE3LCAyMDIwIGF0IDExOjI4IEFNIEphbmkgTmlrdWxhCj4gPiA+ID4gPiA+ID4g PiA+ID4gPiA+IDxqYW5pLm5pa3VsYUBsaW51eC5pbnRlbC5jb20+IHdyb3RlOgo+ID4gPiA+ID4g PiA+ID4gPiA+ID4gPiA+IE9uIFRodSwgMTcgU2VwIDIwMjAsIEtldmluIENob3dza2kgPAo+ID4g PiA+ID4gPiA+ID4gPiA+ID4gPiA+IGNob3dza2lAY2hyb21pdW0ub3JnCj4gPiA+ID4gPiA+ID4g PiA+ID4gPiA+ID4gd3JvdGU6Cj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBXZSBoYXZlIG9i c2VydmVkIHRoYXQgR29vZ2xlIFBpeGVsYm9vaydzIGJhY2tsaWdodAo+ID4gPiA+ID4gPiA+ID4g PiA+ID4gPiA+ID4gaGFyZHdhcmUgaXMKPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IGludGVy cHJldHRpbmcgdGhlc2UgYmFja2xpZ2h0IGJpdHMgZnJvbSB0aGUgbW9zdC0KPiA+ID4gPiA+ID4g PiA+ID4gPiA+ID4gPiA+IHNpZ25pZmljYW50IHNpZGUgb2YgdGhlCj4gPiA+ID4gPiA+ID4gPiA+ ID4gPiA+ID4gPiAxNiBiaXQgd29yZCAoaWYgRFBfRURQX1BXTUdFTl9CSVRfQ09VTlQgPCAxNiks Cj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiB3aGVyZWFzCj4gPiA+ID4gPiA+ID4gPiA+ID4g PiA+ID4gPiB0aGUKPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IGRyaXZlciBjb2RlCj4gPiA+ ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBhc3N1bWVzIHRoZSBwZXJpcGhlcmFsIGNhcmVzIGFib3V0 IHRoZSBsZWFzdC0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IHNpZ25pZmljYW50Cj4gPiA+ ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBiaXRzLgo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4g Cj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBUZXN0aW5nIHdhcyBkb25lIGZyb20gd2l0aGlu IENocm9tZSBPUydzIGJ1aWxkCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBlbnZpcm9ubWVu dAo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gd2hlbiB0aGUKPiA+ID4gPiA+ID4gPiA+ID4g PiA+ID4gPiA+IHBhdGNoIGlzIGJhY2twb3J0ZWQgdG8gNS40ICh0aGUgdmVyc2lvbiB3ZSBhcmUg bmV3bHkKPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IHRhcmdldGluZyBmb3IgdGhlCj4gPiA+ ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBQaXhlbGJvb2spOyBmb3IgdGhlIHJlY29yZDoKPiA+ID4g PiA+ID4gPiA+ID4gPiA+ID4gPiA+ICAgICQgZW1lcmdlLWV2ZS1rZXJuZWxuZXh0IHN5cy1rZXJu ZWwvY2hyb21lb3MtCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBrZXJuZWwtCj4gPiA+ID4g PiA+ID4gPiA+ID4gPiA+ID4gPiA1XzQKPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ICYmIFwK PiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ICAgICAgIC4vdXBkYXRlX2tlcm5lbC5zaCAtLXJl bW90ZT0kSVAKPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gPiA+ ID4gPiA+ID4gSSB1c2VkIGAvc3lzL2tlcm5lbC9kZWJ1Zy9kcmkvMC9lRFAtMS9pOTE1X2RwY2Rg IG9uCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBteQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4g PiA+ID4gbGFwdG9wIHRvIHZlcmlmeQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gdGhhdCB0 aGUgcmVnaXN0ZXJzIHdlcmUgYmVpbmcgc2V0IGFjY29yZGluZyB0byB3aGF0Cj4gPiA+ID4gPiA+ ID4gPiA+ID4gPiA+ID4gPiB0aGUKPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IGFjdHVhbCBo YXJkd2FyZQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gZXhwZWN0czsgSSBhbHNvIG9ic2Vy dmUgdGhhdCB0aGUgYmFja2xpZ2h0IGlzCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBub3Rp Y2VhYmx5Cj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBicmlnaHRlciB3aXRoCj4gPiA+ID4g PiA+ID4gPiA+ID4gPiA+ID4gPiB0aGlzIHBhdGNoLgo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ IAo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IEl0J3MgdW5jbGVhciB0byBtZSB3aGF0IGtlcm5l bCB2ZXJzaW9uIHRoaXMgaXMKPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBhZ2FpbnN0LAo+ID4g PiA+ID4gPiA+ID4gPiA+ID4gPiA+IGFuZAo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IHdoYXQg eW91J3ZlCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gYWN0dWFsbHkgdGVzdGVkLgo+ID4gPiA+ ID4gPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IEhhdmUgeW91IHRy aWVkIHY1Ljcga2VybmVsIHdpdGggTHl1ZGUncyBmZGU3MjY2ZmIyZjYKPiA+ID4gPiA+ID4gPiA+ ID4gPiA+ID4gPiAoImRybS9pOTE1OiBGaXggZURQCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4g RFBDRCBhdXggbWF4IGJhY2tsaWdodCBjYWxjdWxhdGlvbnMiKT8KPiA+ID4gPiA+ID4gPiA+ID4g PiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBJIGp1c3Qgd2FudCB0byBtYWtlIHN1 cmUgeW91J3ZlIHRlc3RlZCB3aXRoIGFsbCB0aGUKPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBy ZWxldmFudAo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IGZpeGVzCj4gPiA+ID4gPiA+ID4gPiA+ ID4gPiA+ID4gYmVmb3JlIGFkZGluZyBxdWlya3MuCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4g Cj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gQlIsCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4g SmFuaS4KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4g PiA+IFNpZ25lZC1vZmYtYnk6IEtldmluIENob3dza2kgPGNob3dza2lAY2hyb21pdW0ub3JnPgo+ ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gLS0tCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4g PiAKPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ICAuLi4vZHJtL2k5MTUvZGlzcGxheS9pbnRl bF9kcF9hdXhfYmFja2xpZ2h0LmMgfCAzNAo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gKysr KysrKysrKysrKysrKysrKwo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfcXVpcmtzLmMgICB8IDEzCj4gPiA+ID4gPiA+ID4gPiA+ ID4gPiA+ID4gPiArKysrKysrCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgICAgICAgIHwgIDEKPiA+ID4gPiA+ID4gPiA+ ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ICAzIGZpbGVzIGNoYW5n ZWQsIDQ4IGluc2VydGlvbnMoKykKPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ ID4gPiA+ID4gPiA+ID4gPiA+ID4gZGlmZiAtLWdpdAo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ ID4gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RwX2F1eF9iYWNrbGlnaAo+ ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gdC4KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ IGMKPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlz cGxheS9pbnRlbF9kcF9hdXhfYmFja2xpZ2gKPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IHQu Cj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBjCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4g PiBpbmRleCBhY2JkN2ViNjZjYmUzLi45OWM5OGYyMTczNTZkIDEwMDY0NAo+ID4gPiA+ID4gPiA+ ID4gPiA+ID4gPiA+ID4gLS0tCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHBfYXV4X2JhY2tsaWdoCj4gPiA+ID4gPiA+ID4g PiA+ID4gPiA+ID4gPiB0Lgo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gYwo+ID4gPiA+ID4g PiA+ID4gPiA+ID4gPiA+ID4gKysrCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHBfYXV4X2JhY2tsaWdoCj4gPiA+ID4gPiA+ ID4gPiA+ID4gPiA+ID4gPiB0Lgo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gYwo+ID4gPiA+ ID4gPiA+ID4gPiA+ID4gPiA+ID4gQEAgLTkxLDYgKzkxLDIzIEBAIHN0YXRpYyB1MzIKPiA+ID4g PiA+ID4gPiA+ID4gPiA+ID4gPiA+IGludGVsX2RwX2F1eF9nZXRfYmFja2xpZ2h0KHN0cnVjdCBp bnRlbF9jb25uZWN0b3IKPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ICpjb25uZWN0b3IpCj4g PiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiAgICAgICBpZiAoaW50ZWxfZHAtPmVkcF9kcGNkWzJd ICYKPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IERQX0VEUF9CQUNLTElHSFRfQlJJR0hUTkVT U19CWVRFX0NPVU5UKQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gICAgICAgICAgICAgICBs ZXZlbCA9IChyZWFkX3ZhbFswXSA8PCA4IHwKPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IHJl YWRfdmFsWzFdKTsKPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4g PiA+ID4gPiA+ID4gKyAgICAgaWYgKGk5MTUtPnF1aXJrcyAmCj4gPiA+ID4gPiA+ID4gPiA+ID4g PiA+ID4gPiBRVUlSS19TSElGVF9FRFBfQkFDS0xJR0hUX0JSSUdIVE5FU1MpIHsKPiA+ID4gPiA+ ID4gPiA+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgaWYgKCFkcm1fZHBfZHBjZF9yZWFkYigm aW50ZWxfZHAtPmF1eCwKPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IERQX0VEUF9QV01HRU5f QklUX0NPVU5ULAo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyZWFkXwo+ID4gPiA+ID4gPiA+ID4gPiA+ID4g PiA+ID4gdmEKPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IGxbMF0KPiA+ID4gPiA+ID4gPiA+ ID4gPiA+ID4gPiA+ICkpIHsKPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ICsgICAgICAgICAg ICAgICAgICAgICBEUk1fREVCVUdfS01TKCJGYWlsZWQgdG8gcmVhZAo+ID4gPiA+ID4gPiA+ID4g PiA+ID4gPiA+ID4gRFBDRAo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gcmVnaXN0ZXIgMHgl eFxuIiwKPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgRFBfRURQX1BXTUdFTl8KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ IEJJCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBUX0NPCj4gPiA+ID4gPiA+ID4gPiA+ID4g PiA+ID4gPiBVTlQpOwo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAg ICAgICAgIHJldHVybiAwOwo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAg ICB9Cj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgIC8vIE9ubHkgYml0 cyA0OjAgYXJlIHVzZWQsIDc6NSBhcmUKPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IHJlc2Vy dmVkLgo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICByZWFkX3ZhbFsw XSA9IHJlYWRfdmFsWzBdICYgMHgxRjsKPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ICsgICAg ICAgICAgICAgaWYgKHJlYWRfdmFsWzBdID4gMTYpIHsKPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4g PiA+ICsgICAgICAgICAgICAgICAgICAgICBEUk1fREVCVUdfS01TKCJJbnZhbGlkCj4gPiA+ID4g PiA+ID4gPiA+ID4gPiA+ID4gPiBEUF9FRFBfUFdOR0VOX0JJVF9DT1VOVCAweCVYLCBleHBlY3Rl ZCBhdCBtb3N0Cj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiAxNlxuIiwKPiA+ID4gPiA+ID4g PiA+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICByZWFkX3YKPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IGFsCj4gPiA+ID4gPiA+ID4g PiA+ID4gPiA+ID4gPiBbMF0pCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA7Cj4gPiA+ID4g PiA+ID4gPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Cj4gPiA+ ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgIH0KPiA+ID4gPiA+ID4gPiA+ID4g PiA+ID4gPiA+ICsgICAgICAgICAgICAgbGV2ZWwgPj49IDE2IC0gcmVhZF92YWxbMF07Cj4gPiA+ ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiArICAgICB9Cj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4g PiArCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiAgICAgICByZXR1cm4gbGV2ZWw7Cj4gPiA+ ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiAgfQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gCj4g PiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBAQCAtMTA2LDYgKzEyMywyMyBAQAo+ID4gPiA+ID4g PiA+ID4gPiA+ID4gPiA+ID4gaW50ZWxfZHBfYXV4X3NldF9iYWNrbGlnaHQoY29uc3QKPiA+ID4g PiA+ID4gPiA+ID4gPiA+ID4gPiA+IHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0 YXRlLCB1MzIgbGV2Cj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiAgICAgICBzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqaTkxNSA9Cj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBkcF90b19p OTE1KGludGVsX2RwKTsKPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ICAgICAgIHU4IHZhbHNb Ml0gPSB7IDB4MCB9Owo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4g PiA+ID4gPiA+ID4gPiArICAgICBpZiAoaTkxNS0+cXVpcmtzICYKPiA+ID4gPiA+ID4gPiA+ID4g PiA+ID4gPiA+IFFVSVJLX1NISUZUX0VEUF9CQUNLTElHSFRfQlJJR0hUTkVTUykgewo+ID4gPiA+ ID4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICBpZiAoIWRybV9kcF9kcGNkX3JlYWRi KCZpbnRlbF9kcC0+YXV4LAo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gRFBfRURQX1BXTUdF Tl9CSVRfQ09VTlQsCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnZhbHNbCj4gPiA+ID4gPiA+ID4gPiA+ID4g PiA+ID4gPiAwXQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gKSkgewo+ID4gPiA+ID4gPiA+ ID4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIERSTV9ERUJVR19LTVMoIkZhaWxl ZCB0byB3cml0ZQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gYXV4Cj4gPiA+ID4gPiA+ID4g PiA+ID4gPiA+ID4gPiBiYWNrbGlnaHQgbGV2ZWw6IEZhaWxlZCB0byByZWFkIERQQ0QgcmVnaXN0 ZXIKPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IDB4JXhcbiIsCj4gPiA+ID4gPiA+ID4gPiA+ ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFBfRURQ X1BXTUdFCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBOXwo+ID4gPiA+ID4gPiA+ID4gPiA+ ID4gPiA+ID4gQklUXwo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gQ09VTlQpOwo+ID4gPiA+ ID4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKPiA+ID4g PiA+ID4gPiA+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgfQo+ID4gPiA+ID4gPiA+ID4gPiA+ ID4gPiA+ID4gKyAgICAgICAgICAgICAvLyBPbmx5IGJpdHMgNDowIGFyZSB1c2VkLCA3OjUgYXJl Cj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiByZXNlcnZlZC4KPiA+ID4gPiA+ID4gPiA+ID4g PiA+ID4gPiA+ICsgICAgICAgICAgICAgdmFsc1swXSA9IHZhbHNbMF0gJiAweDFGOwo+ID4gPiA+ ID4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICBpZiAodmFsc1swXSA+IDE2KSB7Cj4g PiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgRFJNX0RFQlVH X0tNUygiRmFpbGVkIHRvIHdyaXRlCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBhdXgKPiA+ ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IGJhY2tsaWdodCBsZXZlbDogSW52YWxpZCBEUF9FRFBf UFdOR0VOX0JJVF9DT1VOVAo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gMHglWCwKPiA+ID4g PiA+ID4gPiA+ID4gPiA+ID4gPiA+IGV4cGVjdGVkIGF0IG1vc3QgMTZcbiIsCj4gPiA+ID4gPiA+ ID4gPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdmFsc1swCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBdKQo+ID4gPiA+ID4gPiA+ ID4gPiA+ID4gPiA+ID4gOwo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAg ICAgICAgICAgIHJldHVybjsKPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ICsgICAgICAgICAg ICAgfQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICBsZXZlbCA8PD0g KDE2IC0gdmFsc1swXSkgJiAweEZGRkY7Cj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiArICAg ICB9Cj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ ID4gPiAgICAgICB2YWxzWzBdID0gbGV2ZWw7Cj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiAK PiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ICAgICAgIC8qIFdyaXRlIHRoZSBNU0IgYW5kL29y IExTQiAqLwo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gZGlmZiAtLWdpdAo+ID4gPiA+ID4g PiA+ID4gPiA+ID4gPiA+ID4gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3F1 aXJrcy5jCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2Rpc3BsYXkvaW50ZWxfcXVpcmtzLmMKPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IGluZGV4 IDQ2YmViMTU1ZDgzNWYuLjYzYjI3ZDQ5YjI4NjQgMTAwNjQ0Cj4gPiA+ID4gPiA+ID4gPiA+ID4g PiA+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3F1aXJrcy5j Cj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9k aXNwbGF5L2ludGVsX3F1aXJrcy5jCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBAQCAtNTMs NiArNTMsMTYgQEAgc3RhdGljIHZvaWQKPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IHF1aXJr X2luY3JlYXNlX2RkaV9kaXNhYmxlZF90aW1lKHN0cnVjdAo+ID4gPiA+ID4gPiA+ID4gPiA+ID4g PiA+ID4gZHJtX2k5MTVfcHJpdmF0ZQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gKmk5MTUp Cj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiAgICAgICBkcm1faW5mbygmaTkxNS0+ZHJtLCAi QXBwbHlpbmcgSW5jcmVhc2UgRERJCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBEaXNhYmxl ZAo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gcXVpcmtcbiIpOwo+ID4gPiA+ID4gPiA+ID4g PiA+ID4gPiA+ID4gIH0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ ID4gPiA+ID4gPiA+ID4gKy8qCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiArICogU29tZSBl RFAgYmFja2xpZ2h0IGhhcmR3YXJlIHVzZXMgdGhlIG1vc3QtCj4gPiA+ID4gPiA+ID4gPiA+ID4g PiA+ID4gPiBzaWduaWZpY2FudAo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gYml0cyBvZiB0 aGUgYnJpZ2h0bmVzcwo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gKyAqIHJlZ2lzdGVyLCBz byBicmlnaHRuZXNzIHZhbHVlcyBtdXN0IGJlIHNoaWZ0ZWQKPiA+ID4gPiA+ID4gPiA+ID4gPiA+ ID4gPiA+IGZpcnN0Lgo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gKyAqLwo+ID4gPiA+ID4g PiA+ID4gPiA+ID4gPiA+ID4gK3N0YXRpYyB2b2lkCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4g PiBxdWlya19zaGlmdF9lZHBfYmFja2xpZ2h0X2JyaWdodG5lc3Moc3RydWN0Cj4gPiA+ID4gPiA+ ID4gPiA+ID4gPiA+ID4gPiBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ID4gPiA+ID4gPiA+ID4g PiA+ID4gPiA+ID4gK3sKPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ICsgICAgIGk5MTUtPnF1 aXJrcyB8PQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gUVVJUktfU0hJRlRfRURQX0JBQ0tM SUdIVF9CUklHSFRORVNTOwo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgRFJNX0lO Rk8oIkFwcGx5aW5nIHNoaWZ0IGVEUCBiYWNrbGlnaHQKPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4g PiA+IGJyaWdodG5lc3MKPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IHF1aXJrXG4iKTsKPiA+ ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ICt9Cj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiAr Cj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiAgc3RydWN0IGludGVsX3F1aXJrIHsKPiA+ID4g PiA+ID4gPiA+ID4gPiA+ID4gPiA+ICAgICAgIGludCBkZXZpY2U7Cj4gPiA+ID4gPiA+ID4gPiA+ ID4gPiA+ID4gPiAgICAgICBpbnQgc3Vic3lzdGVtX3ZlbmRvcjsKPiA+ID4gPiA+ID4gPiA+ID4g PiA+ID4gPiA+IEBAIC0xNTYsNiArMTY2LDkgQEAgc3RhdGljIHN0cnVjdCBpbnRlbF9xdWlyawo+ ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gaW50ZWxfcXVpcmtzW10gPSB7Cj4gPiA+ID4gPiA+ ID4gPiA+ID4gPiA+ID4gPiAgICAgICAvKiBBU1JvY2sgSVRYKi8KPiA+ID4gPiA+ID4gPiA+ID4g PiA+ID4gPiA+ICAgICAgIHsgMHgzMTg1LCAweDE4NDksIDB4MjIxMiwKPiA+ID4gPiA+ID4gPiA+ ID4gPiA+ID4gPiA+IHF1aXJrX2luY3JlYXNlX2RkaV9kaXNhYmxlZF90aW1lIH0sCj4gPiA+ID4g PiA+ID4gPiA+ID4gPiA+ID4gPiAgICAgICB7IDB4MzE4NCwgMHgxODQ5LCAweDIyMTIsCj4gPiA+ ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBxdWlya19pbmNyZWFzZV9kZGlfZGlzYWJsZWRfdGltZSB9 LAo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ ID4gKyAgICAgLyogR29vZ2xlIFBpeGVsYm9vayAqLwo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ ID4gKyAgICAgeyAweDU5MUUsIDB4ODA4NiwgMHgyMjEyLAo+ID4gPiA+ID4gPiA+ID4gPiA+ID4g PiA+ID4gcXVpcmtfc2hpZnRfZWRwX2JhY2tsaWdodF9icmlnaHRuZXNzIH0sCj4gPiA+ID4gPiA+ ID4gPiA+ID4gPiA+ID4gPiAgfTsKPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ ID4gPiA+ID4gPiA+ID4gPiA+ID4gIHZvaWQgaW50ZWxfaW5pdF9xdWlya3Moc3RydWN0IGRybV9p OTE1X3ByaXZhdGUKPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ICppOTE1KQo+ID4gPiA+ID4g PiA+ID4gPiA+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmgKPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuaAo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gaW5kZXggZTRmN2Y2NTE4OTQ1 Yi4uY2M5M2JlZGU0ZmFiOCAxMDA2NDQKPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4g PiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiA+ID4gPiA+ID4gPiA+ ID4gPiA+ID4gPiA+IEBAIC01MjUsNiArNTI1LDcgQEAgc3RydWN0IGk5MTVfcHNyIHsKPiA+ID4g PiA+ID4gPiA+ID4gPiA+ID4gPiA+ICAjZGVmaW5lIFFVSVJLX1BJTl9TV0laWkxFRF9QQUdFUyAo MTw8NSkKPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ICAjZGVmaW5lIFFVSVJLX0lOQ1JFQVNF X1QxMl9ERUxBWSAoMTw8NikKPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ICAjZGVmaW5lIFFV SVJLX0lOQ1JFQVNFX0RESV9ESVNBQkxFRF9USU1FICgxPDw3KQo+ID4gPiA+ID4gPiA+ID4gPiA+ ID4gPiA+ID4gKyNkZWZpbmUgUVVJUktfU0hJRlRfRURQX0JBQ0tMSUdIVF9CUklHSFRORVNTICgx PDw4KQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ ID4gPiAgc3RydWN0IGludGVsX2ZiZGV2Owo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gIHN0 cnVjdCBpbnRlbF9mYmNfd29yazsKPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ ID4gPiA+ID4gPiA+ID4gPiAtLQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IEphbmkgTmlrdWxh LCBJbnRlbCBPcGVuIFNvdXJjZSBHcmFwaGljcyBDZW50ZXIKPiA+ID4gPiA+ID4gPiA+ID4gPiAK PiA+ID4gPiA+ID4gPiA+ID4gPiAtLQo+ID4gPiA+ID4gPiA+ID4gPiA+IFZpbGxlIFN5cmrDpGzD pAo+ID4gPiA+ID4gPiA+ID4gPiA+IEludGVsCj4gPiA+ID4gPiA+ID4gPiA+ID4gX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiA+ID4gPiA+ID4gPiA+ID4g PiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gPiA+ID4gPiA+ID4gPiA+ID4gSW50ZWwtZ2Z4QGxp c3RzLmZyZWVkZXNrdG9wLm9yZwo+ID4gPiA+ID4gPiA+ID4gPiA+IGh0dHBzOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cj4gPiA+ID4gPiA+ID4gPiA+ IAo+ID4gPiA+ID4gPiA+ID4gPiAtLQo+ID4gPiA+ID4gPiA+ID4gPiBWaWxsZSBTeXJqw6Rsw6QK PiA+ID4gPiA+ID4gPiA+ID4gSW50ZWwKPiA+ID4gPiAtLQo+ID4gPiA+IENoZWVycywKPiA+ID4g PiAgICAgICAgIEx5dWRlIFBhdWwgKHNoZS9oZXIpCj4gPiA+ID4gICAgICAgICBTb2Z0d2FyZSBF bmdpbmVlciBhdCBSZWQgSGF0Cj4gPiA+ID4gCj4gPiAtLQo+ID4gQ2hlZXJzLAo+ID4gICAgICAg ICBMeXVkZSBQYXVsIChzaGUvaGVyKQo+ID4gICAgICAgICBTb2Z0d2FyZSBFbmdpbmVlciBhdCBS ZWQgSGF0Cj4gPiAKLS0gClNpbmNlcmVseSwKICAgICAgTHl1ZGUgUGF1bCAoc2hlL2hlcikKICAg ICAgU29mdHdhcmUgRW5naW5lZXIgYXQgUmVkIEhhdAoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==