From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id Hw4bHGozD2ScNQ4AWB0awg (envelope-from ) for ; Mon, 13 Mar 2023 10:30:02 -0400 Received: by simark.ca (Postfix, from userid 112) id 5FD8A1E223; Mon, 13 Mar 2023 10:30:02 -0400 (EDT) Authentication-Results: simark.ca; dkim=pass (2048-bit key; unprotected) header.d=lists.lttng.org header.i=@lists.lttng.org header.a=rsa-sha256 header.s=default header.b=aDr5ayri; dkim-atps=neutral X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-9.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,NICE_REPLY_A, RCVD_IN_DNSWL_HI,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 Received: from lists.lttng.org (lists.lttng.org [167.114.26.123]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id 6704D1E110 for ; Mon, 13 Mar 2023 10:29:58 -0400 (EDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=lists.lttng.org; s=default; t=1678717797; bh=03dywZFYiZSEYaktbLRlXdj34H4XI3/AP3PS6og/4EI=; h=Date:To:References:In-Reply-To:Subject:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=aDr5ayriVT/Ww+rqn0iCspCepa9w5JL+kxIQzxSvOWeor1cHdnk74vhEkyzhpg0iH 03AAvf00tyoZ+ft3eq5lLd0gEmXbvlXfWd9KEN4DUkr803JVtQr50nWwzfVXf9Utry cuL4OsbR2z9JJ5aeVlXKOt5CKfwZtY9pbLlh90iIfNODobzx7AJbnoG+aI7qbCoahm B2mRELmlKlHubqzYClcXJ0Mp0SFhmj/RDALejfUTlWoi2AA7xufu/8Th4eFnzo7Xwl XWqd/n4xpxlSs82u90qu1lTOKzpdZa5zqq66PMjvhMBnpLDApTuneRJgOwSzDSq46N 8DKel/KUv6HTg== Received: from lists-lttng01.efficios.com (localhost [IPv6:::1]) by lists.lttng.org (Postfix) with ESMTP id 4PZzZY5KqXz2BNm; Mon, 13 Mar 2023 10:29:57 -0400 (EDT) Received: from smtpout.efficios.com (smtpout.efficios.com [167.114.26.122]) by lists.lttng.org (Postfix) with ESMTPS id 4PZzZV18xCz2BNl for ; Mon, 13 Mar 2023 10:29:54 -0400 (EDT) Received: from [172.16.0.172] (192-222-143-198.qc.cable.ebox.net [192.222.143.198]) by smtpout.efficios.com (Postfix) with ESMTPSA id 4PZzYv3BfNzqGV; Mon, 13 Mar 2023 10:29:23 -0400 (EDT) Message-ID: Date: Mon, 13 Mar 2023 10:29:31 -0400 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.8.0 Content-Language: en-US To: =?UTF-8?B?T25kxZllaiBTdXLDvQ==?= , lttng-dev@lists.lttng.org, paulmck References: <09AA2241-0226-44B8-8363-32AEC813CBB4@sury.org> In-Reply-To: <09AA2241-0226-44B8-8363-32AEC813CBB4@sury.org> Subject: Re: [lttng-dev] urcu/rculist.h clarifications - for implementing LRU X-BeenThere: lttng-dev@lists.lttng.org X-Mailman-Version: 2.1.39 Precedence: list List-Id: LTTng development list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Mathieu Desnoyers via lttng-dev Reply-To: Mathieu Desnoyers Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: lttng-dev-bounces@lists.lttng.org Sender: "lttng-dev" T24gMjAyMy0wMy0xMSAwMTowNCwgT25kxZllaiBTdXLDvSB2aWEgbHR0bmctZGV2IHdyb3RlOgo+ IEhleSwKPiAKPiBzbywgd2UgYXJlIGludGVncmF0aW5nIHVzZXJzcGFjZS1yY3UgdG8gQklORCA5 ICh5YXkhKSBhbmQgYXMgZXhwZXJpbWVudCwKPiBJIGFtIHJld3JpdGluZyB0aGUgaW50ZXJuYWwg YWRkcmVzcyBkYXRhYmFzZSAoa2VlcHMgdGhlIGluZnJhc3RydWN0dXJlCj4gaW5mb3JtYXRpb24g YWJvdXQgbmFtZXMgYW5kIGFkZHJlc3NlcykuCgpUaGF0J3MgaW5kZWVkIHZlcnkgaW50ZXJlc3Rp bmcgIQoKPiAKPiBUaGVyZSdzIGEgaGFzaHRhYmxlIHRvIGtlZXAgdGhlIGVudHJpZXMgYW5kIHRo ZXJlJ3MgYXNzb2NpYXRlZCBMUlUgbGlzdC4KPiAKPiBGb3IgdGhlIGhhc2h0YWJsZSB0aGUgY2Rz X2xmaHQgc2VlbXMgdG8gd29yayB3ZWxsLCBidXQgSSBhbSBraW5kIG9mIHN0cnVnZ2xpbmcKPiB3 aXRoIGNkc19saXN0ICh0aGUgdXJjdS9yY3VsaXN0LmggdmFyaWFudCkuCj4gCj4gVGhlIG5hbWVz IGFuZCBlbnRyaWVzIHdvcmtzIGluIHByZXR0eSBtdWNoIHNpbWlsYXIgd2F5LCBzbyBJIGFtIGdv aW5nIHRvCj4gZGVzY3JpYmUganVzdCBvbmUuCj4gCj4gVGhlIHdvcmtob3JzZSBpcyBnZXRfYXR0 YWNoZWRfYW5kX2xvY2tlZF9uYW1lKCkgZnVuY3Rpb24gKEkgYW0gZ29pbmcgdG8KPiBza2lwIHRo ZSBwYXJ0cyB3aGVyZSB3ZSBjcmVhdGUga2V5cywgY2hlY2tzIGlmIExSVSBuZWVkcyB0byBiZSB1 cGRhdGVkLCBldGMuKQoKSXQgd291bGQgaGVscCBpZiB5b3UgY291bGQgc2hhcmUgYSBnaXQgYnJh bmNoIG9mIHlvdXIgcHJvdG90eXBlLiBJbiBvcmRlciB0byByZWFzb24KYWJvdXQgUkNVLCB3ZSB0 eXBpY2FsbHkgbmVlZCB0byBsb29rIGF0IGJvdGggdGhlIHVwZGF0ZS1zaWRlIGFuZCB0aGUgcmVh ZC1zaWRlLgpGb3IgaW5zdGFuY2UgSSBkb24ndCBzZWUgdGhlIHJlYWQtc2lkZSBvZiB0aGUgTFJV IGxpbmtlZC1saXN0IGluIHRoZSBjb2RlIHNuaXBwZXRzCmJlbG93LiBXZSBhbHNvIG5lZWQgdG8g aGF2ZSBhIGNvbXBsZXRlIHBpY3R1cmUgb2YgdGhlIG9iamVjdCBsaWZldGltZSwgZnJvbSBhbGxv Y2F0aW9uCnRvIHJlY2xhaW0vcmV1c2UuIEkgZG9uJ3Qgc2VlIHdoZXJlIHRoZSBncmFjZSBwZXJp b2RzIChlaXRoZXIgc3luY2hyb25pemVfcmN1IG9yCmNhbGxfcmN1KSBhcmUgYmVmb3JlIHJlY2xh aW0gb3IgcmV1c2UgaW4gdGhlIGNvZGUgc25pcHBldHMgYmVsb3cuCgo+IAo+IFNvIHRoaXMgaXMg cGFydCB3aXRoIHRoZSBoYXNodGFibGUgbG9va3VwIHdoaWNoIHNlZW1zIHRvIHdvcmsgd2VsbDoK PiAKPiAgICAgICAgICByY3VfcmVhZF9sb2NrKCk7Cj4gCj4gICAgICAgICAgc3RydWN0IGNkc19s Zmh0X2l0ZXIgaXRlcjsKPiAgICAgICAgICBzdHJ1Y3QgY2RzX2xmaHRfbm9kZSAqaHRfbm9kZTsK PiAKPiAgICAgICAgICBjZHNfbGZodF9sb29rdXAoYWRiLT5uYW1lc19odCwgaGFzaHZhbCwgbmFt ZXNfbWF0Y2gsICZrZXksICZpdGVyKTsKPiAKPiAgICAgICAgICBodF9ub2RlID0gY2RzX2xmaHRf aXRlcl9nZXRfbm9kZSgmaXRlcik7Cj4gCj4gICAgICAgICAgYm9vbCB1bmxpbmsgPSBmYWxzZTsK PiAKPiAgICAgICAgICBpZiAoaHRfbm9kZSA9PSBOVUxMKSB7Cj4gICAgICAgICAgICAgICAgICAv KiBBbGxvY2F0ZSBhIG5ldyBuYW1lIGFuZCBhZGQgaXQgdG8gdGhlIGhhc2ggdGFibGUuICovCj4g ICAgICAgICAgICAgICAgICBhZGJuYW1lID0gbmV3X2FkYm5hbWUoYWRiLCBuYW1lLCBzdGFydF9h dF96b25lKTsKPiAKPiAgICAgICAgICAgICAgICAgIGh0X25vZGUgPSBjZHNfbGZodF9hZGRfdW5p cXVlKGFkYi0+bmFtZXNfaHQsIGhhc2h2YWwsCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBuYW1lc19tYXRjaCwgJmtleSwKPiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZhZGJuYW1lLT5odF9ub2RlKTsKPiAgICAg ICAgICAgICAgICAgIGlmIChodF9ub2RlICE9ICZhZGJuYW1lLT5odF9ub2RlKSB7Cj4gICAgICAg ICAgICAgICAgICAgICAgICAgIC8qIElTQ19SX0VYSVNUUyAqLwo+ICAgICAgICAgICAgICAgICAg ICAgICAgICBkZXN0cm95X2FkYm5hbWUoYWRibmFtZSk7Cj4gICAgICAgICAgICAgICAgICAgICAg ICAgIGFkYm5hbWUgPSBOVUxMOwo+ICAgICAgICAgICAgICAgICAgfQo+ICAgICAgICAgIH0KPiAg ICAgICAgICBpZiAoYWRibmFtZSA9PSBOVUxMKSB7Cj4gICAgICAgICAgICAgICAgICBJTlNJU1Qo aHRfbm9kZSAhPSBOVUxMKTsKPiAgICAgICAgICAgICAgICAgIGFkYm5hbWUgPSBjYWFfY29udGFp bmVyX29mKGh0X25vZGUsIGRuc19hZGJuYW1lX3QsIGh0X25vZGUpOwo+ICAgICAgICAgICAgICAg ICAgdW5saW5rID0gdHJ1ZTsKPiAgICAgICAgICB9Cj4gCj4gICAgICAgICAgZG5zX2FkYm5hbWVf cmVmKGFkYm5hbWUpOwoKV2hhdCBpcyB0aGlzIGRuc19hZGJuYW1lX3JlZigpIHN1cHBvc2VkIHRv IGRvID8gQW5kIGlzIHRoZXJlIGEgcmVmZXJlbmNlIHRvIGFkYm5hbWUKdGhhdCBpcyBzdGlsbCB1 c2VkIGFmdGVyIHJjdV9yZWFkX3VubG9jaygpID8gV2hhdCBndWFyYW50ZWVzIHRoZSBleGlzdGVu Y2Ugb2YgdGhlCmFkYm5hbWUgYWZ0ZXIgcmN1X3JlYWRfdW5sb2NrKCkgPwoKPiAKPiAgICAgICAg ICByY3VfcmVhZF91bmxvY2soKTsKPiAKPiBhbmQgaGVyZSdzIHRoZSBwYXJ0IHdoZXJlIExSVSBn ZXRzIHVwZGF0ZWQ6Cj4gCj4gICAgICAgICAgTE9DSygmYWRibmFtZS0+bG9jayk7IC8qIE11c3Qg YmUgdW5sb2NrZWQgYnkgdGhlIGNhbGxlciAqLwoKSSBzdXNwZWN0IHlvdSB1c2UgYSBzY2hlbWUg d2hlcmUgeW91IGhvbGQgdGhlIFJDVSByZWFkLXNpZGUgdG8gcGVyZm9ybSB0aGUgbG9va3VwLCBh bmQKdGhlbiB5b3UgdXNlIHRoZSBvYmplY3Qgd2l0aCBhbiBpbnRlcm5hbCBsb2NrIGhlbGQuIEJ1 dCBleHBlY3RpbmcgdGhlIG9iamVjdCB0byBzdGlsbApleGlzdCBhZnRlciByY3UgcmVhZCB1bmxv Y2sgaXMgaW5jb3JyZWN0LCB1bmxlc3Mgc29tZSBvdGhlciByZWZlcmVuY2UgY291bnRpbmcgc2No ZW1lCmlzIHVzZWQuCgo+ICAgICAgICAgIGlmIChOQU1FX0RFQUQoYWRibmFtZSkpIHsKPiAgICAg ICAgICAgICAgICAgIFVOTE9DSygmYWRibmFtZS0+bG9jayk7Cj4gICAgICAgICAgICAgICAgICBk bnNfYWRibmFtZV9kZXRhY2goJmFkYm5hbWUpOwo+ICAgICAgICAgICAgICAgICAgZ290byBhZ2Fp bjsKPiAgICAgICAgICB9Cj4gCj4gICAgICAgICAgaWYgKGFkYm5hbWUtPmxhc3RfdXNlZCArIEFE Ql9DQUNIRV9NSU5JTVVNIDw9IGxhc3RfdXBkYXRlKSB7Cj4gICAgICAgICAgICAgICAgICBhZGJu YW1lLT5sYXN0X3VzZWQgPSBub3c7Cj4gCj4gICAgICAgICAgICAgICAgICBMT0NLKCZhZGItPm5h bWVzX2xydV9sb2NrKTsKPiAgICAgICAgICAgICAgICAgIGlmICh1bmxpbmspIHsKPiAgICAgICAg ICAgICAgICAgICAgICAgICAgY2RzX2xpc3RfZGVsX3JjdSgmYWRibmFtZS0+bGlzdF9ub2RlKTsK PiAgICAgICAgICAgICAgICAgIH0KClRoaXMgbG9va3Mgb2RkLiBJIGRvbid0IHNlZSB0aGUgY29k ZSBpbXBsZW1lbnRpbmcgdHJhdmVyc2FsIG9mIHRoaXMgbGlzdCwgYnV0Ckkgd291bGQgZXhwZWN0 IGEgZ3JhY2UgcGVyaW9kIGJldHdlZW4gdW5saW5rIG9mIHRoZSBub2RlIGZyb20gYSBsaXN0IGFu ZCBpbnNlcnRpb24KaW50byBhbm90aGVyIGxpc3QsIG90aGVyd2lzZSBpZiB0aGVyZSBhcmUgUkNV IHJlYWRlcnMgdHJhdmVyc2luZyB0aGUgbGlzdApjb25jdXJyZW50bHksIHRoZXkgY2FuIG9ic2Vy dmUgYW4gaW5jb25zaXN0ZW50IHN0YXRlLgoKPiAgICAgICAgICAgICAgICAgIGNkc19saXN0X2Fk ZF90YWlsX3JjdSgmYWRibmFtZS0+bGlzdF9ub2RlLCAmYWRiLT5uYW1lc19scnUpOwo+ICAgICAg ICAgICAgICAgICAgVU5MT0NLKCZhZGItPm5hbWVzX2xydV9sb2NrKTsKPiAgICAgICAgICB9Cj4g Cj4gVGhlIE5BTUVfREVBRCBnZXRzIHVwZGF0ZWQgdW5kZXIgdGhlIGFkYm5hbWUtPmxvY2sgaW4g ZXhwaXJlX25hbWUoKToKPiAKPiAgICAgICAgICBpZiAoIU5BTUVfREVBRChhZGJuYW1lKSkgewo+ ICAgICAgICAgICAgICAgICAgYWRibmFtZS0+ZmxhZ3MgfD0gTkFNRV9JU19ERUFEOwo+IAo+ICAg ICAgICAgICAgICAgICAgLyogUmVtb3ZlIHRoZSBhZGJuYW1lIGZyb20gdGhlIGhhc2h0YWJsZS4u LiAqLwo+ICAgICAgICAgICAgICAgICAgKHZvaWQpY2RzX2xmaHRfZGVsKGFkYi0+bmFtZXNfaHQs ICZhZGJuYW1lLT5odF9ub2RlKTsKCkkgZG9uJ3QgaGF2ZSB0aGUgZnVsbCBjb250ZXh0IGhlcmUs IGJ1dCBBRkFJUiBjZHNfbGZodF9kZWwoKSBhbGxvd3MgdHdvIHJlbW92YWxzCm9mIHRoZSBzYW1l IGh0X25vZGUgdG8gYmUgZG9uZSBjb25jdXJyZW50bHksIGFuZCBvbmx5IG9uZSB3aWxsIHN1Y2Nl ZWQgKHdoaWNoIGlzCnByb2JhYmx5IHdoYXQgaGFwcGVucyBoZXJlKS4gY2RzX2xpc3RfZGVsX3Jj dSgpIGhvd2V2ZXIgZG9lcyBub3QgYWxsb3cgY29uY3VycmVudApyZW1vdmFscyBvZiBhIGxpc3Rf bm9kZS4gU28gaWYgeW91IHNvbWVob3cgZ2V0IHR3byBSQ1UgbG9va3VwcyB0byBmaW5kIHRoZSBz YW1lCm5vZGUgaW4gZXhwaXJlX25hbWUsIG9uZSB3aWxsIGxpa2VseSBkbyBhbiBleHRyYSB1bmV4 cGVjdGVkIGNkc19saXN0X2RlbF9yY3UoKS4KCj4gCj4gICAgICAgICAgICAgICAgICAvKiAuLi4g YW5kIExSVSBsaXN0ICovCj4gICAgICAgICAgICAgICAgICBMT0NLKCZhZGItPm5hbWVzX2xydV9s b2NrKTsKPiAgICAgICAgICAgICAgICAgIGNkc19saXN0X2RlbF9yY3UoJmFkYm5hbWUtPmxpc3Rf bm9kZSk7Cj4gICAgICAgICAgICAgICAgICBVTkxPQ0soJmFkYi0+bmFtZXNfbHJ1X2xvY2spOwo+ ICAgICAgICAgIH0KPiAKPiBTbywgbm93IHRoZSBwcm9ibGVtIGlzIHRoYXQgc29tZXRpbWVzIEkg Z2V0IGEgY3Jhc2ggdW5kZXIgbG9hZDoKPiAKPiAoZ2RiKSBidAo+ICMwICAweDAwMDA3ZmFlODdh MzRjOTYgaW4gY2RzX2xpc3RfZGVsX3JjdSAoZWxlbT0weDdmYWUzN2U3ODg4MCkgYXQgL3Vzci9p bmNsdWRlL3g4Nl82NC1saW51eC1nbnUvdXJjdS9yY3VsaXN0Lmg6NzEKPiAjMSAgZ2V0X2F0dGFj aGVkX2FuZF9sb2NrZWRfbmFtZSAoYWRiPWFkYkBlbnRyeT0weDdmYWU4MzAxNDJhMCwgbmFtZT1u YW1lQGVudHJ5PTB4N2ZhZTgwNGZjOWIwLCBzdGFydF9hdF96b25lPXRydWUsIG5vdz08b3B0aW1p emVkIG91dD4pIGF0IGFkYi5jOjE0NDYKPiAjMiAgMHgwMDAwN2ZhZTg3YTM5MmJmIGluIGRuc19h ZGJfY3JlYXRlZmluZCAoYWRiPTB4N2ZhZTgzMDE0MmEwLCBsb29wPTB4N2ZhZTg0MmMzYTIwLCBj Yj1jYkBlbnRyeT0weDdmYWU4N2IyOGQ5ZiA8ZmN0eF9maW5kZG9uZT4sIGNiYXJnPTB4N2ZhZTdj Njc5MDAwLCBuYW1lPW5hbWVAZW50cnk9MHg3ZmFlODA0ZmM5YjAsIHFuYW1lPTB4N2ZhZTdjNjc5 MDEwLCBxdHlwZT0xLCBvcHRpb25zPTYzLCBub3c9PG9wdGltaXplZCBvdXQ+LCB0YXJnZXQ9MHgw LCBwb3J0PTUzLCBkZXB0aD0xLCBxYz0weDdmYWU3YzY1MTA2MCwgZmluZHA9MHg3ZmFlODA0ZmM2 OTgpIGF0IGFkYi5jOjIxNDkKPiAKPiAoZ2RiKSBmcmFtZSAwCj4gIzAgIDB4MDAwMDdmYWU4N2Ez NGM5NiBpbiBjZHNfbGlzdF9kZWxfcmN1IChlbGVtPTB4N2ZhZTM3ZTc4ODgwKSBhdCAvdXNyL2lu Y2x1ZGUveDg2XzY0LWxpbnV4LWdudS91cmN1L3JjdWxpc3QuaDo3MQo+IDcxCQllbGVtLT5uZXh0 LT5wcmV2ID0gZWxlbS0+cHJldjsKPiAoZ2RiKSBwcmludCBlbGVtLT5uZXh0Cj4gJDEgPSAoc3Ry dWN0IGNkc19saXN0X2hlYWQgKikgMHgwCj4gKGdkYikgcHJpbnQgZWxlbQo+ICQyID0gKHN0cnVj dCBjZHNfbGlzdF9oZWFkICopIDB4N2ZhZTM3ZTc4ODgwCj4gCj4gU28sIEkgc3VzcGVjdCwgSSBh bSBkb2luZyBzb21ldGhpbmcgd3Jvbmcgd2hlbiB1cGRhdGluZyB0aGUgcG9zaXRpb24gb2YgdGhl IHRoZSBuYW1lIGluIHRoZSBMUlUgbGlzdC4KPiAKPiBUaGVyZSBhcmUgY291cGxlIG9mIHBsYWNl cyB3aGVyZSB3ZSBpdGVyYXRlIHRocm91Z2ggdGhlIExSVSBsaXN0IChvdmVybWVtIGNsZWFuaW5n IGNhbiBraWNrLWluLCB0aGUgdXNlciBpbml0aWF0ZWQgY2xlYW5pbmcgY2FuIHN0YXJ0LCBzaHV0 ZG93biBjYW4gYmUgaGFwcGVuaW5nLi4uKQo+IAoKSXQgZ2V0cyBtZSB0byB3b25kZXIgd2hldGhl ciB5b3UgcmVhbGx5IG5lZWQgUkNVIGZvciB0aGUgTFJVIGxpc3QgPyBBcmUgdGhvc2UgbG9va3Vw cwp2ZXJ5IGZyZXF1ZW50ID8gQW5kIGRvIHRoZXkgdHlwaWNhbGx5IGVuZCB1cCBuZWVkaW5nIHRv IGdyYWIgYSBsb2NrIHRvIHByb3RlY3QgYWdhaW5zdApjb25jdXJyZW50IGxpc3QgbW9kaWZpY2F0 aW9ucyA/Cgo+IElzIHRoZXJlIHBlcmhhcHMgYWxyZWFkeSBzb21lIExSVSBpbXBsZW1lbnRhdGlv biB1c2luZyBVc2Vyc3BhY2UtUkNVIHRoYXQgSSBjYW4gdGFrZSBsb29rIGF0PwoKSSBkb24ndCBo YXZlIGFuIGV4YW1wbGUgaW1wbGVtZW50aW5nIGFuIExSVSB3aXRoIGEgbGlua2VkIGxpc3Qgc3Bl Y2lmaWNhbGx5LCBidXQgdGhpcyBpcyBub3QKZGlmZmVyZW50IGZyb20gb3RoZXIgbGlua2VkLWxp c3QgdXNlcy4KClRoYW5rcywKCk1hdGhpZXUKCj4gCj4gVGhhbmsgeW91IQo+IE9uZHJlago+IC0t Cj4gT25kxZllaiBTdXLDvSAoSGUvSGltKQo+IG9uZHJlakBzdXJ5Lm9yZwo+IAo+IF9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gbHR0bmctZGV2IG1haWxp bmcgbGlzdAo+IGx0dG5nLWRldkBsaXN0cy5sdHRuZy5vcmcKPiBodHRwczovL2xpc3RzLmx0dG5n Lm9yZy9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vbHR0bmctZGV2CgotLSAKTWF0aGlldSBEZXNu b3llcnMKRWZmaWNpT1MgSW5jLgpodHRwczovL3d3dy5lZmZpY2lvcy5jb20KCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmx0dG5nLWRldiBtYWlsaW5nIGxp c3QKbHR0bmctZGV2QGxpc3RzLmx0dG5nLm9yZwpodHRwczovL2xpc3RzLmx0dG5nLm9yZy9jZ2kt YmluL21haWxtYW4vbGlzdGluZm8vbHR0bmctZGV2Cg==