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.0 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham 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 DF97AC433DB for ; Fri, 19 Mar 2021 10:32:36 +0000 (UTC) Received: from desiato.infradead.org (desiato.infradead.org [90.155.92.199]) (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 45C4A64F6B for ; Fri, 19 Mar 2021 10:32:36 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 45C4A64F6B Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=arm.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding :Content-Type:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:To:References:Message-Id:Cc:Date:In-Reply-To:From: Subject:Mime-Version:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=ewZ62aRiu6MppEcRHpI+yK+83iXIrFU6b3OMKJ2MRzE=; b=hF4Nt68qdpGCOVpK0n0lqWaCb guOArpi523Iknjv7gs0V2BQNgA0G7ShnBaO9m/ooEQATrDROUmSt9xzmGK1lcy8Ioj919l99nBKJz l/T6mmgqSc/EHz3KGm9PABoAIRyWL0mH7Fdr3a+2IvfJ29ql9V51Xf5VCqSbnBeHPLgbDHIsyLExD 3AFZXTIZLB9NCWd7uHMw9Q/bOCxDlXgZwh2gXXKqdtQbV4RGbUKhnF6ofWxXUFZCwnIicA5d61qMB ySufgmFDD/gtMFPoJFDrZPRMiDFcuY8tMQnUlRmcwXQBh/3LJk57rCWGnXUJm9BTYfqrchmuImtzh yoOSngIAQ==; Received: from localhost ([::1] helo=desiato.infradead.org) by desiato.infradead.org with esmtp (Exim 4.94 #2 (Red Hat Linux)) id 1lNCPC-007APd-62; Fri, 19 Mar 2021 10:30:58 +0000 Received: from foss.arm.com ([217.140.110.172]) by desiato.infradead.org with esmtp (Exim 4.94 #2 (Red Hat Linux)) id 1lNCOz-007AL1-2G for linux-arm-kernel@lists.infradead.org; Fri, 19 Mar 2021 10:30:50 +0000 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 81974ED1; Fri, 19 Mar 2021 03:30:40 -0700 (PDT) Received: from [10.57.52.33] (unknown [10.57.52.33]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 5AAFA3F70D; Fri, 19 Mar 2021 03:30:39 -0700 (PDT) Mime-Version: 1.0 (Mac OS X Mail 14.0 \(3654.60.0.2.21\)) Subject: Re: [PATCH v4 18/19] coresight: sink: Add TRBE driver From: Suzuki K Poulose In-Reply-To: Date: Fri, 19 Mar 2021 10:30:37 +0000 Cc: linux-arm-kernel , Linux Kernel Mailing List , Mathieu Poirier , Anshuman Khandual , Leo Yan Message-Id: <5685C840-7F03-4A53-9183-D5771308F5B8@arm.com> References: <20210225193543.2920532-1-suzuki.poulose@arm.com> <20210225193543.2920532-19-suzuki.poulose@arm.com> To: Mike Leach X-Mailer: Apple Mail (2.3654.60.0.2.21) X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210319_103046_370642_CFA50CEF X-CRM114-Status: GOOD ( 40.27 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org SGkgTWlrZQoKPiBPbiA4IE1hciAyMDIxLCBhdCAxNzoyNiwgTWlrZSBMZWFjaCA8bWlrZS5sZWFj aEBsaW5hcm8ub3JnPiB3cm90ZToKPiAKPiBIaSBTdXp1a2ksCj4gCj4gT24gVGh1LCAyNSBGZWIg MjAyMSBhdCAxOTozNiwgU3V6dWtpIEsgUG91bG9zZSA8c3V6dWtpLnBvdWxvc2VAYXJtLmNvbT4g d3JvdGU6Cj4+IAo+PiBGcm9tOiBBbnNodW1hbiBLaGFuZHVhbCA8YW5zaHVtYW4ua2hhbmR1YWxA YXJtLmNvbT4KPj4gCj4+IFRyYWNlIEJ1ZmZlciBFeHRlbnNpb24gKFRSQkUpIGltcGxlbWVudHMg YSB0cmFjZSBidWZmZXIgcGVyIENQVSB3aGljaCBpcwo+PiBhY2Nlc3NpYmxlIHZpYSB0aGUgc3lz dGVtIHJlZ2lzdGVycy4gVGhlIFRSQkUgc3VwcG9ydHMgZGlmZmVyZW50IGFkZHJlc3NpbmcKPj4g bW9kZXMgaW5jbHVkaW5nIENQVSB2aXJ0dWFsIGFkZHJlc3MgYW5kIGJ1ZmZlciBtb2RlcyBpbmNs dWRpbmcgdGhlIGNpcmN1bGFyCj4+IGJ1ZmZlciBtb2RlLiBUaGUgVFJCRSBidWZmZXIgaXMgYWRk cmVzc2VkIGJ5IGEgYmFzZSBwb2ludGVyIChUUkJCQVNFUl9FTDEpLAo+PiBhbiB3cml0ZSBwb2lu dGVyIChUUkJQVFJfRUwxKSBhbmQgYSBsaW1pdCBwb2ludGVyIChUUkJMSU1JVFJfRUwxKS4gQnV0 IHRoZQo+PiBhY2Nlc3MgdG8gdGhlIHRyYWNlIGJ1ZmZlciBjb3VsZCBiZSBwcm9oaWJpdGVkIGJ5 IGEgaGlnaGVyIGV4Y2VwdGlvbiBsZXZlbAo+PiAoRUwzIG9yIEVMMiksIGluZGljYXRlZCBieSBU UkJJRFJfRUwxLlAuIFRoZSBUUkJFIGNhbiBhbHNvIGdlbmVyYXRlIGEgQ1BVCj4+IHByaXZhdGUg aW50ZXJydXB0IChQUEkpIG9uIGFkZHJlc3MgdHJhbnNsYXRpb24gZXJyb3JzIGFuZCB3aGVuIHRo ZSBidWZmZXIKPj4gaXMgZnVsbC4gT3ZlcmFsbCBpbXBsZW1lbnRhdGlvbiBoZXJlIGlzIGluc3Bp cmVkIGZyb20gdGhlIEFybSBTUEUgZHJpdmVyLgo+PiAKPj4gQ2M6IE1hdGhpZXUgUG9pcmllciA8 bWF0aGlldS5wb2lyaWVyQGxpbmFyby5vcmc+Cj4+IENjOiBNaWtlIExlYWNoIDxtaWtlLmxlYWNo QGxpbmFyby5vcmc+Cj4+IENjOiBTdXp1a2kgSyBQb3Vsb3NlIDxzdXp1a2kucG91bG9zZUBhcm0u Y29tPgo+PiBTaWduZWQtb2ZmLWJ5OiBBbnNodW1hbiBLaGFuZHVhbCA8YW5zaHVtYW4ua2hhbmR1 YWxAYXJtLmNvbT4KPj4gU2lnbmVkLW9mZi1ieTogU3V6dWtpIEsgUG91bG9zZSA8c3V6dWtpLnBv dWxvc2VAYXJtLmNvbT4KPj4gCj4+ICsKPj4gK3N0YXRpYyB1bnNpZ25lZCBsb25nIGFybV90cmJl X3VwZGF0ZV9idWZmZXIoc3RydWN0IGNvcmVzaWdodF9kZXZpY2UgKmNzZGV2LAo+PiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBwZXJmX291dHB1dF9o YW5kbGUgKmhhbmRsZSwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB2b2lkICpjb25maWcpCj4+ICt7Cj4+ICsgICAgICAgc3RydWN0IHRyYmVfZHJ2ZGF0YSAq ZHJ2ZGF0YSA9IGRldl9nZXRfZHJ2ZGF0YShjc2Rldi0+ZGV2LnBhcmVudCk7Cj4+ICsgICAgICAg c3RydWN0IHRyYmVfY3B1ZGF0YSAqY3B1ZGF0YSA9IGRldl9nZXRfZHJ2ZGF0YSgmY3NkZXYtPmRl dik7Cj4+ICsgICAgICAgc3RydWN0IHRyYmVfYnVmICpidWYgPSBjb25maWc7Cj4+ICsgICAgICAg ZW51bSB0cmJlX2ZhdWx0X2FjdGlvbiBhY3Q7Cj4+ICsgICAgICAgdW5zaWduZWQgbG9uZyBzaXpl LCBvZmZzZXQ7Cj4+ICsgICAgICAgdW5zaWduZWQgbG9uZyB3cml0ZSwgYmFzZSwgc3RhdHVzOwo+ PiArICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4+ICsKPj4gKyAgICAgICBXQVJOX09OKGJ1 Zi0+Y3B1ZGF0YSAhPSBjcHVkYXRhKTsKPj4gKyAgICAgICBXQVJOX09OKGNwdWRhdGEtPmNwdSAh PSBzbXBfcHJvY2Vzc29yX2lkKCkpOwo+PiArICAgICAgIFdBUk5fT04oY3B1ZGF0YS0+ZHJ2ZGF0 YSAhPSBkcnZkYXRhKTsKPj4gKyAgICAgICBpZiAoY3B1ZGF0YS0+bW9kZSAhPSBDU19NT0RFX1BF UkYpCj4+ICsgICAgICAgICAgICAgICByZXR1cm4gMDsKPj4gKwo+PiArICAgICAgIHBlcmZfYXV4 X291dHB1dF9mbGFnKGhhbmRsZSwgUEVSRl9BVVhfRkxBR19DT1JFU0lHSFRfRk9STUFUX1JBVyk7 Cj4+ICsKPj4gKyAgICAgICAvKgo+PiArICAgICAgICAqIFdlIGFyZSBhYm91dCB0byBkaXNhYmxl IHRoZSBUUkJFLiBBbmQgdGhpcyBjb3VsZCBpbiB0dXJuCj4+ICsgICAgICAgICogZmlsbCB1cCB0 aGUgYnVmZmVyIHRyaWdnZXJpbmcsIGFuIElSUS4gVGhpcyBjb3VsZCBiZSBjb25zdW1lZAo+PiAr ICAgICAgICAqIGJ5IHRoZSBQRSBhc3luY2hyb25vdXNseSwgY2F1c2luZyBhIHJhY2UgaGVyZSBh Z2FpbnN0Cj4+ICsgICAgICAgICogdGhlIElSUSBoYW5kbGVyIGluIGNsb3Npbmcgb3V0IHRoZSBo YW5kbGUuIFNvLCBsZXQgdXMKPj4gKyAgICAgICAgKiBtYWtlIHN1cmUgdGhlIElSUSBjYW4ndCB0 cmlnZ2VyIHdoaWxlIHdlIGFyZSBjb2xsZWN0aW5nCj4+ICsgICAgICAgICogdGhlIGJ1ZmZlci4g V2UgYWxzbyBtYWtlIHN1cmUgdGhhdCBhIFdSQVAgZXZlbnQgaXMgaGFuZGxlZAo+PiArICAgICAg ICAqIGFjY29yZGluZ2x5Lgo+PiArICAgICAgICAqLwo+PiArICAgICAgIGxvY2FsX2lycV9zYXZl KGZsYWdzKTsKPj4gKwo+PiArICAgICAgIC8qCj4+ICsgICAgICAgICogSWYgdGhlIFRSQkUgd2Fz IGRpc2FibGVkIGR1ZSB0byBsYWNrIG9mIHNwYWNlIGluIHRoZSBBVVggYnVmZmVyIG9yIGEKPj4g KyAgICAgICAgKiBzcHVyaW91cyBmYXVsdCwgdGhlIGRyaXZlciBsZWF2ZXMgaXQgZGlzYWJsZWQs IHRydW5jYXRpbmcgdGhlIGJ1ZmZlci4KPj4gKyAgICAgICAgKiBTaW5jZSB0aGUgZXRtX3BlcmYg ZHJpdmVyIGV4cGVjdHMgdG8gY2xvc2Ugb3V0IHRoZSBBVVggYnVmZmVyLCB0aGUKPj4gKyAgICAg ICAgKiBkcml2ZXIgc2tpcHMgaXQuIFRodXMsIGp1c3QgcGFzcyBpbiAwIHNpemUgaGVyZSB0byBp bmRpY2F0ZSB0aGF0IHRoZQo+PiArICAgICAgICAqIGJ1ZmZlciB3YXMgdHJ1bmNhdGVkLgo+PiAr ICAgICAgICAqLwo+PiArICAgICAgIGlmICghaXNfdHJiZV9lbmFibGVkKCkpIHsKPj4gKyAgICAg ICAgICAgICAgIHNpemUgPSAwOwo+PiArICAgICAgICAgICAgICAgZ290byBkb25lOwo+PiArICAg ICAgIH0KPj4gKyAgICAgICAvKgo+PiArICAgICAgICAqIHBlcmYgaGFuZGxlIHN0cnVjdHVyZSBu ZWVkcyB0byBiZSBzaGFyZWQgd2l0aCB0aGUgVFJCRSBJUlEgaGFuZGxlciBmb3IKPj4gKyAgICAg ICAgKiBjYXB0dXJpbmcgdHJhY2UgZGF0YSBhbmQgcmVzdGFydGluZyB0aGUgaGFuZGxlLiBUaGVy ZSBpcyBhIHByb2JhYmlsaXR5Cj4+ICsgICAgICAgICogb2YgYW4gdW5kZWZpbmVkIHJlZmVyZW5j ZSBiYXNlZCBjcmFzaCB3aGVuIGV0bSBldmVudCBpcyBiZWluZyBzdG9wcGVkCj4+ICsgICAgICAg ICogd2hpbGUgYSBUUkJFIElSUSBhbHNvIGdldHRpbmcgcHJvY2Vzc2VkLiBUaGlzIGhhcHBlbnMg ZHVlIHRoZSByZWxlYXNlCj4+ICsgICAgICAgICogb2YgcGVyZiBoYW5kbGUgdmlhIHBlcmZfYXV4 X291dHB1dF9lbmQoKSBpbiBldG1fZXZlbnRfc3RvcCgpLiBTdG9wcGluZwo+PiArICAgICAgICAq IHRoZSBUUkJFIGhlcmUgd2lsbCBlbnN1cmUgdGhhdCBubyBJUlEgY291bGQgYmUgZ2VuZXJhdGVk IHdoZW4gdGhlIHBlcmYKPj4gKyAgICAgICAgKiBoYW5kbGUgZ2V0cyBmcmVlZCBpbiBldG1fZXZl bnRfc3RvcCgpLgo+PiArICAgICAgICAqLwo+PiArICAgICAgIHRyYmVfZHJhaW5fYW5kX2Rpc2Fi bGVfbG9jYWwoKTsKPj4gKyAgICAgICB3cml0ZSA9IGdldF90cmJlX3dyaXRlX3BvaW50ZXIoKTsK Pj4gKyAgICAgICBiYXNlID0gZ2V0X3RyYmVfYmFzZV9wb2ludGVyKCk7Cj4+ICsKPj4gKyAgICAg ICAvKiBDaGVjayBpZiB0aGVyZSBpcyBhIHBlbmRpbmcgaW50ZXJydXB0IGFuZCBoYW5kbGUgaXQg aGVyZSAqLwo+PiArICAgICAgIHN0YXR1cyA9IHJlYWRfc3lzcmVnX3MoU1lTX1RSQlNSX0VMMSk7 Cj4+ICsgICAgICAgaWYgKGlzX3RyYmVfaXJxKHN0YXR1cykpIHsKPj4gKwo+PiArICAgICAgICAg ICAgICAgLyoKPj4gKyAgICAgICAgICAgICAgICAqIE5vdyB0aGF0IHdlIGFyZSBoYW5kbGluZyB0 aGUgSVJRIGhlcmUsIGNsZWFyIHRoZSBJUlEKPj4gKyAgICAgICAgICAgICAgICAqIGZyb20gdGhl IHN0YXR1cywgdG8gbGV0IHRoZSBpcnEgaGFuZGxlciBrbm93IHRoYXQgaXQKPj4gKyAgICAgICAg ICAgICAgICAqIGlzIHRha2VuIGNhcmUgb2YuCj4+ICsgICAgICAgICAgICAgICAgKi8KPj4gKyAg ICAgICAgICAgICAgIGNscl90cmJlX2lycSgpOwo+PiArICAgICAgICAgICAgICAgaXNiKCk7Cj4+ ICsKPj4gKyAgICAgICAgICAgICAgIGFjdCA9IHRyYmVfZ2V0X2ZhdWx0X2FjdChzdGF0dXMpOwo+ PiArICAgICAgICAgICAgICAgLyoKPj4gKyAgICAgICAgICAgICAgICAqIElmIHRoaXMgd2FzIG5v dCBkdWUgdG8gYSBXUkFQIGV2ZW50LCB3ZSBoYXZlIHNvbWUKPj4gKyAgICAgICAgICAgICAgICAq IGVycm9ycyBhbmQgYXMgc3VjaCBidWZmZXIgaXMgZW1wdHkuCj4+ICsgICAgICAgICAgICAgICAg Ki8KPj4gKyAgICAgICAgICAgICAgIGlmIChhY3QgIT0gVFJCRV9GQVVMVF9BQ1RfV1JBUCkgewo+ PiArICAgICAgICAgICAgICAgICAgICAgICBzaXplID0gMDsKPj4gKyAgICAgICAgICAgICAgICAg ICAgICAgZ290byBkb25lOwo+PiArICAgICAgICAgICAgICAgfQo+IAo+IFdlIGFyZSB1c2luZyBU UkJFIEZJTEwgbW9kZSAtIHdoaWNoIGhhbHRzIGNhcHR1cmUgb24gYSBmdWxsIGJ1ZmZlciBhbmQK PiB0cmlnZ2VycyB0aGUgSVJRLCB3aXRob3V0IGRpc2FibGluZyB0aGUgc291cmNlIGZpcnN0Lgo+ IFRoaXMgbWVhbnMgdGhhdCB0aGUgbW9kZSBpcyBpbmhlcmVudGx5IGxvc3N5ICh1bmxlc3MgYnkg c29tZSB1bmxpa2VseQo+IGNvLWluY2lkZW5jZSB0aGUgbGFzdCBieXRlIHRoYXQgY2F1c2VkIHRo ZSB3cmFwIHdhcyBhbHNvIHRoZSBsYXN0IGJ5dGUKPiB0byBiZSBzZW50IGZyb20gYW4gRVRFIHRo YXQgd2FzIGluIHRoZSBwcm9jZXNzIG9mIGJlaW5nIGRpc2FibGVkLikKPiBUaGVyZWZvcmUgd2Ug bXVzdCBoYXZlIGEgcGVyZl9hdXhfb3V0cHV0X2ZsYWcoaGFuZGxlLAo+IFBFUkZfQVVYX0ZMQUdf VFJVTkNBVEVEKSBjYWxsIGluIGhlcmUgdG8gc2lnbmFsIHRoYXQgc29tZSB0cmFjZSB3YXMKPiBs b3N0LCBmb3IgY29uc2lzdGVuY2Ugb2Ygb3BlcmF0aW9uIHdpdGggRVRSIGV0YywgYW5kIGludGVs cHQuCj4gCgpJIGFncmVlIHRoYXQgdGhlIHRoZXJlIGlzIGEgYml0IG9mIGxvc3MgaGVyZSBkdWUg dG8gdGhlIEZJTEwgbW9kZS4gQnV0IGl0IGlzIG5vdCAgY29tcGFyYWJsZSB0byB0aGF0IG9mIHRo ZSBFVFIuIEluIHRoaXMgY2FzZSwgdGhlIFdSQVAgZXZlbnQgaXMgdHJpZ2dlcmVkIHdoZW4gd2Ug Zmx1c2ggdGhlIEVURS4gaS5lLCB0aGlzIGNvdWxkIGJlIG1vc3RseSBkdWUgdG8gdGhlIGZhY3Qg dGhhdCB0aGUgdHJhY2luZyB3YXMgZW5hYmxlZCBmb3IgdGhlIGtlcm5lbCBtb2RlIGFuZCB0aGUg bGFzdCBmZXcgYnl0ZXMgb2YgdHJhY2Ugd2hpY2ggY2F1c2VkIHRoZSBGSUxMIGJlbG9uZyB0byB0 aGUgY29kZSByZXNwb25zaWJsZSBmb3Igc3RvcHBpbmcgdGhlIGNvbXBvbmVudHMgaW4gdGhlIENv cmVTaWdodCB0cmFjZS4gSSBwZXJzb25hbGx5IGRvIG5vdCB0aGluayB0aGlzIGRhdGEgaXMgb2Yg YW55IGludGVyZXN0IHRvIHRoZSB1c2VyLgpPdGhlcndpc2UsIGlmIHRoZSBkYXRhIGRpZG7igJl0 IGJlbG9uZyB0byB0aGUgcGVyZiBldmVudCBzaWRlLCBpdCBzaG91bGQgaGF2ZSB0cmlnZ2VyZWQg dGhlIElSUS4KClRoaXMgaXMgdHJ1ZSBpbiBjYXNlIG9mIHRoZSBidWZmZXIgb3ZlcmZsb3cgaW50 ZXJydXB0IHRvbywgd2l0aCBhIGJpdCBtb3JlIGRhdGEgbG9zdC4gaS5lLCBzaW5jZSB0aGUgaW50 ZXJydXB0IGlzIFBQSSwgdGhlIG92ZXJmbG93IGlzIHRyaWdnZXJlZCB3aGVuIHRoZSBidWZmZXIg aXMgZnVsbCAod2hpY2ggaW5jbHVkZXMgdGhlIGRhdGEgdGhhdCBpcyBjYWNoZWQgaW4gdGhlIFRS QkUpLiBCdXQgdGhlcmUgY291bGQgYmUgYSBiaXQgb2YgZGF0YSB0aGF0IGlzIHN0aWxsIGNhY2hl ZCBpbiB0aGUgRVRFLCBiZWZvcmUgaXQgaXMgY2FwdHVyZWQgaW4gdGhlIHRyYWNlLiBBbmQgdGhl IG1vbWVudCB3ZSBnZXQgYSBGSUxMIGV2ZW50LCB3ZSBzdG9wIGV4ZWN1dGluZyBhbnl0aGluZyB0 aGF0IGlzIHJlbGV2YW50IGZvciB0aGUgVHJhY2Ugc2Vzc2lvbiAoYXMgd2UgYXJlIGluIHRoZSBk cml2ZXIgaGFuZGxpbmcgdGhlIGludGVycnVwdCkuCkFuZCB0aGVuIHdlIHJlY29uZmlndXJlIHRo ZSBidWZmZXIgdG8gY29udGludWUgdGhlIGV4ZWN1dGlvbi4gTm93LCB0aGUgaW50ZXJydXB0IGRl bGl2ZXJ5IGlzIG5vdCBuZWNlc3NhcmlseSBzeW5jaHJvbm91cyBhbmQgdGhlcmUgY291bGQgYmUg ZGF0YSBsb3N0IGluIHRoZSBpbnRlcnZhbCBiZXR3ZWVuIFdSQVAgZXZlbnQgYW5kIHRoZSBJUlEg aXMgdHJpZ2dlcmVkLgoKSSBhbSBPSyB3aXRoIHN1Z2dlc3RpbmcgdGhhdCB0aGVyZSB3YXMgc29t ZSBsb3NzIG9mIHRyYWNlIGRhdGEgZHVyaW5nIHRoZSBzZXNzaW9uLCBpZiB3ZSBoaXQgV1JBUCBl dmVudC4gQnV0IHRoaXMgY291bGQgY2F1c2Ugd29ycnkgdG8gdGhlIGNvbnN1bWVycyB0aGF0IHRo ZXkgbG9zdCB0b28gbXVjaCBvZiB0cmFjZSBkYXRhIG9mIHRoZWlyIGludGVyZXN0LCB3aGlsZSB0 aGF0IGlzIG5vdCB0aGUgY2FzZS4KCj4+ICtzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgZ2V0 X3RyYmVfbGltaXRfcG9pbnRlcih2b2lkKQo+PiArewo+PiArICAgICAgIHU2NCB0cmJsaW1pdHIg PSByZWFkX3N5c3JlZ19zKFNZU19UUkJMSU1JVFJfRUwxKTsKPj4gKyAgICAgICB1bnNpZ25lZCBs b25nIGxpbWl0ID0gKHRyYmxpbWl0ciA+PiBUUkJMSU1JVFJfTElNSVRfU0hJRlQpICYgVFJCTElN SVRSX0xJTUlUX01BU0s7Cj4+ICsgICAgICAgdW5zaWduZWQgbG9uZyBhZGRyID0gbGltaXQgPDwg VFJCTElNSVRSX0xJTUlUX1NISUZUOwo+IAo+IENvdWxkIHRoaXMgbm90IGJlOgo+IHVuc2lnbmVk IGxvbmcgYWRkciA9IHRyYmxpbWl0ciAmIChUUkJMSU1JVFJfTElNSVRfTUFTSyA8PAo+IFRSQkxJ TUlUUl9MSU1JVF9TSElGVCk7Cj4gbGlrZSB0aGUgYmFzZSBwb250ZXIgYmVsb3c/Cj4gCgpTdXJl LCBpdCBjYW4gYmUgY29uc2lzdGVudC4KCgo+PiArCj4+ICsgICAgICAgV0FSTl9PTighSVNfQUxJ R05FRChhZGRyLCBQQUdFX1NJWkUpKTsKPj4gKyAgICAgICByZXR1cm4gYWRkcjsKPj4gK30KPj4g Kwo+PiArc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIGdldF90cmJlX2Jhc2VfcG9pbnRlcih2 b2lkKQo+PiArewo+PiArICAgICAgIHU2NCB0cmJiYXNlciA9IHJlYWRfc3lzcmVnX3MoU1lTX1RS QkJBU0VSX0VMMSk7Cj4+ICsgICAgICAgdW5zaWduZWQgbG9uZyBhZGRyID0gdHJiYmFzZXIgJiAo VFJCQkFTRVJfQkFTRV9NQVNLIDw8IFRSQkJBU0VSX0JBU0VfU0hJRlQpOwo+PiArCj4+ICsgICAg ICAgV0FSTl9PTighSVNfQUxJR05FRChhZGRyLCBQQUdFX1NJWkUpKTsKPj4gKyAgICAgICByZXR1 cm4gYWRkcjsKPj4gK30KPj4gKwoKVGhhbmsgeW91IGZvciB0aGUgcmV2aWV3CgpLaW5kIHJlZ2Fy ZHMKU3V6dWtpCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5p bmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8v bGludXgtYXJtLWtlcm5lbAo=