From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.io/gmane.comp.tex.context/112856 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Hans Hagen via ntg-context Newsgroups: gmane.comp.tex.context Subject: Re: Implementing a custom authorconversion for bibliographies Date: Wed, 15 Sep 2021 10:18:03 +0200 Message-ID: <0a3d6a27-30b2-90eb-1ddd-a8b732e2ae4a@xs4all.nl> References: Reply-To: mailing list for ConTeXt users Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="26301"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.14.0 Cc: Hans Hagen To: mailing list for ConTeXt users Original-X-From: ntg-context-bounces@ntg.nl Wed Sep 15 10:18:45 2021 Return-path: Envelope-to: gctc-ntg-context-518@m.gmane-mx.org Original-Received: from zapf.boekplan.nl ([5.39.185.232] helo=zapf.ntg.nl) by ciao.gmane.io with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mQQ7x-0006gQ-Dq for gctc-ntg-context-518@m.gmane-mx.org; Wed, 15 Sep 2021 10:18:45 +0200 Original-Received: from localhost (localhost [127.0.0.1]) by zapf.ntg.nl (Postfix) with ESMTP id B92452864B5; Wed, 15 Sep 2021 10:18:10 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at zapf.boekplan.nl Original-Received: from zapf.ntg.nl ([127.0.0.1]) by localhost (zapf.ntg.nl [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id X5443Xd3RR_M; Wed, 15 Sep 2021 10:18:09 +0200 (CEST) Original-Received: from zapf.ntg.nl (localhost [127.0.0.1]) by zapf.ntg.nl (Postfix) with ESMTP id ED7B42875AC; Wed, 15 Sep 2021 10:18:08 +0200 (CEST) Original-Received: from localhost (localhost [127.0.0.1]) by zapf.ntg.nl (Postfix) with ESMTP id A01C02875A9 for ; Wed, 15 Sep 2021 10:18:06 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at zapf.boekplan.nl Original-Received: from zapf.ntg.nl ([127.0.0.1]) by localhost (zapf.ntg.nl [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id sZZ2rryQmJKU for ; Wed, 15 Sep 2021 10:18:05 +0200 (CEST) Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=194.109.24.25; helo=lb2-smtp-cloud8.xs4all.net; envelope-from=j.hagen@xs4all.nl; receiver= Original-Received: from lb2-smtp-cloud8.xs4all.net (lb2-smtp-cloud8.xs4all.net [194.109.24.25]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (No client certificate requested) by zapf.ntg.nl (Postfix) with ESMTPS id 3D7EA2864B5 for ; Wed, 15 Sep 2021 10:18:05 +0200 (CEST) Original-Received: from cust-a169be40 ([IPv6:fc0c:c118:7078:83cd:b49d:5a87:2838:627c]) by smtp-cloud8.xs4all.net with ESMTPSA id QQ7HmRx0KeJ0cQQ7Impjk7; Wed, 15 Sep 2021 10:18:04 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=xs4all.nl; s=s2; t=1631693884; bh=9UrFtKS/1cIV48L/xunR4IOfY8iUCYiUPMd3FKW8+98=; h=Subject:To:From:Message-ID:Date:MIME-Version:Content-Type:From: Subject; b=eiS9SLwqxdAtm9Tplfe3hMzzke8P9HnzStp0uUO7S3p9CCkqqY2JqKQa+GhkUmkzr EBZbyBY24WrNyGqok30kkYakBMQAmrL15L/KwOSVrURhd2plZGCkP0wr2Mo2KUonrc d35HZbTTZ4gneTcMyTp9f5ZV0wV8illCKxtdG5Ahcjup6DvWOVHC+jTnHu/Z8tOMVV nNx1bsFR3QQetSEecSIqMLTVT0p0agTFAds0QKe3LeZyB8TKsURlhPgGJnN/KXCpuG QS9/2TVYm45LumxDLscSXMQohmODwn06qjbPRIhF/ddsjX+M7gIfFWubSF6VNPML8x OrUICm1HVB/Sg== In-Reply-To: Content-Language: en-US X-CMAE-Envelope: MS4xfJeeDV4hLKacLpUaAJt11yvdTBScjeHHRxMs/fS4jL4/9LuKc3ZhM4dih1sp5/MBHCsQmrN3IaMVr3mGrUHOH10bobGuFcwfHtd7icmcJTw+HJsZuu3c 1KFCXfsn8o7IlCUkngO2sK765ibJ/ptXkqXd8khLTm1GCiHTdTNfgORjHvLHAoJngi4Wrv+p3LQgNwPO6SP9YgujQunyMScMtkjePBzncdTIyyxpNBvs0grK X-BeenThere: ntg-context@ntg.nl X-Mailman-Version: 2.1.26 Precedence: list List-Id: mailing list for ConTeXt users List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: ntg-context-bounces@ntg.nl Original-Sender: "ntg-context" Xref: news.gmane.io gmane.comp.tex.context:112856 Archived-At: T24gOS8xNS8yMDIxIDU6MDYgQU0sIEpvZXkgTWNDb2xsdW0gdmlhIG50Zy1jb250ZXh0IHdyb3Rl Ogo+IEFsbCByaWdodCwgSSBmaWd1cmVkIG91dCB3aGVyZSBJIG5lZWRlZCB0byBtYWtlIHRoaXMg Y2hhbmdlIGZvciBpdCB0byAKPiB0YWtlIGVmZmVjdC4gVGhlIHJlbGV2YW50IHNjcmlwdCBpcyBw dWJsLWF1dC5sdWEuIFRoZSBjb2RlIEkgbmVlZGVkIHRvIAo+IGNoYW5nZSB3YXMgZm9yIHRoZSAi b25lYXV0aG9yIiBmdW5jdGlvbiBkZWZpbml0aW9uLCB3aGljaCBpdHNlbGYgaXMgCj4gbG9jYXRl ZCBpbiB0aGUgImJ0eGF1dGhvciIgZnVuY3Rpb24gZGVmaW5pdGlvbi4gTXkgY2hhbmdlcyBhcmUg ZGV0YWlsZWQgCj4gYmVsb3c6CgpkaWQgeW91IHRyeSB0byBzdGF5IGF0IHRoZSB0ZXggZW5kPyBs aWtlOgoKJSBcc3RhcnRzZXR1cHMgXHMhYnR4OlxzIWNpdGU6XHMhYXV0aG9yOmludmVydGVkZmly c3QKJSAgICAgXGlmbnVtXGN1cnJlbnRidHhhdXRob3JpbmRleD5ccGx1c29uZQolICAgICAgICBc YnR4c2V0YXV0aG9ydmFyaWFudHtpbnZlcnRlZH0KJSAgICAgXGVsc2UKJSAgICAgICAgXGJ0eHNl dGF1dGhvcnZhcmlhbnR7bm9ybWFsfQolICAgICBcZmkKJSAgICAgXGZhc3RzZXR1cHtccyFidHg6 XHMhY2l0ZTpccyFhdXRob3I6XGJ0eGF1dGhvcnZhcmlhbnR9CiUgXHN0b3BzZXR1cHMKClxzdGFy dHNldHVwcyBccyFidHg6XHMhY2l0ZTpccyFhdXRob3I6aW52ZXJ0ZWRmaXJzdAogICAgIFxpZm51 bVxjdXJyZW50YnR4YXV0aG9yaW5kZXg+XHBsdXNvbmUKICAgICAgICBcZmFzdHNldHVwe1xzIWJ0 eDpccyFjaXRlOlxzIWF1dGhvcjppbnZlcnRlZH0KICAgICBcZWxzZQogICAgICAgIFxmYXN0c2V0 dXB7XHMhYnR4OlxzIWNpdGU6XHMhYXV0aG9yOm5vcm1hbH0KICAgICBcZmkKXHN0b3BzZXR1cHMK CgoKPiBgYGAKPiAgwqAgwqAgwqAgwqAgbG9jYWwgZnVuY3Rpb24gb25lYXV0aG9yKGksbGFzdCxq dXN0b25lKQo+ICDCoCDCoCDCoCDCoCDCoCDCoCBsb2NhbCBhdXRob3IgPSBzcGxpdFtpXQo+ICDC oCDCoCDCoCDCoCDCoCDCoCBpZiBpbmRleCB0aGVuCj4gIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IGN0eF9idHhzdGFydGF1dGhvcihpLDEsMCkKPiAgwqAgwqAgwqAgwqAgwqAgwqAgZWxzZWlmIGxh c3QgdGhlbgo+ICDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjdHhfYnR4c3RhcnRhdXRob3IoaSwx LDApCj4gIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGN0eF9idHhzZXRjb25jYXQoMCkKPiAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYgY29tYmluZXIgPT0gImludmVydGVkZmlyc3QiIHRoZW4K PiAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYgaSA9PSAxIHRoZW4KPiAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY3R4X2J0eHNldGF1dGhvcnZhcmlhbnQoImlu dmVydGVkIikKPiAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZWxzZQo+ICDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjdHhfYnR4c2V0YXV0aG9ydmFyaWFudCgibm9y bWFsIikKPiAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZW5kCj4gIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIGVsc2UKPiAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY3R4X2J0 eHNldGF1dGhvcnZhcmlhbnQoY29tYmluZXIpCj4gIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGVu ZAo+ICDCoCDCoCDCoCDCoCDCoCDCoCBlbHNlCj4gIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGxv Y2FsIHN0YXRlID0gYXV0aG9yLnN0YXRlIG9yIDAKPiAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg Y3R4X2J0eHN0YXJ0YXV0aG9yKGksbWF4LHN0YXRlKQo+ICDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCBjdHhfYnR4c2V0Y29uY2F0KGNvbmNhdHN0YXRlKGksbWF4KSkKPiAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgaWYgY29tYmluZXIgPT0gImludmVydGVkZmlyc3QiIHRoZW4KPiAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYgaSA9PSAxIHRoZW4KPiAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgY3R4X2J0eHNldGF1dGhvcnZhcmlhbnQoImludmVydGVkIikKPiAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZWxzZQo+ICDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCBjdHhfYnR4c2V0YXV0aG9ydmFyaWFudCgibm9ybWFsIikKPiAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZW5kCj4gIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IGVsc2UKPiAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY3R4X2J0eHNldGF1dGhvcnZh cmlhbnQoY29tYmluZXIpCj4gIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGVuZAo+ICDCoCDCoCDC oCDCoCDCoCDCoCBlbmQKPiAgwqAgwqAgwqAgwqAgwqAgwqAgbG9jYWwgaW5pdGlhbHMgPSBhdXRo b3IuaW5pdGlhbHMKPiAgwqAgwqAgwqAgwqAgwqAgwqAgaWYgaW5pdGlhbHMgYW5kICNpbml0aWFs cyA+IDAgdGhlbgo+ICDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjdHhfYnR4c2V0aW5pdGlhbHMo KSAtLSAKPiAoY29uY2F0KHRoZV9pbml0aWFscyhpbml0aWFscyxzeW1ib2wpLCIgIikpCj4gIMKg IMKgIMKgIMKgIMKgIMKgIGVuZAo+ICDCoCDCoCDCoCDCoCDCoCDCoCBsb2NhbCBmaXJzdG5hbWVz ID0gYXV0aG9yLmZpcnN0bmFtZXMKPiAgwqAgwqAgwqAgwqAgwqAgwqAgaWYgZmlyc3RuYW1lcyBh bmQgI2ZpcnN0bmFtZXMgPiAwIHRoZW4KPiAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY3R4X2J0 eHNldGZpcnN0bmFtZXMoKSAtLSAoY29uY2F0KGZpcnN0bmFtZXMsIiAiKSkKPiAgwqAgwqAgwqAg wqAgwqAgwqAgZW5kCj4gIMKgIMKgIMKgIMKgIMKgIMKgIGxvY2FsIHZvbnMgPSBhdXRob3Iudm9u cwo+ICDCoCDCoCDCoCDCoCDCoCDCoCBpZiB2b25zIGFuZCAjdm9ucyA+IDAgdGhlbgo+ICDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCBjdHhfYnR4c2V0dm9ucygpIC0tIChjb25jYXQodm9ucywiICIp KQo+ICDCoCDCoCDCoCDCoCDCoCDCoCBlbmQKPiAgwqAgwqAgwqAgwqAgwqAgwqAgbG9jYWwgc3Vy bmFtZXMgPSBhdXRob3Iuc3VybmFtZXMKPiAgwqAgwqAgwqAgwqAgwqAgwqAgaWYgc3VybmFtZXMg YW5kICNzdXJuYW1lcyA+IDAgdGhlbgo+ICDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjdHhfYnR4 c2V0c3VybmFtZXMoKSAtLSAoY29uY2F0KHN1cm5hbWVzLCIgIikpCj4gIMKgIMKgIMKgIMKgIMKg IMKgIGVuZAo+ICDCoCDCoCDCoCDCoCDCoCDCoCBsb2NhbCBqdW5pb3JzID0gYXV0aG9yLmp1bmlv cnMKPiAgwqAgwqAgwqAgwqAgwqAgwqAgaWYganVuaW9ycyBhbmQgI2p1bmlvcnMgPiAwIHRoZW4K PiAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY3R4X2J0eHNldGp1bmlvcnMoKSAtLSAoY29uY2F0 KGp1bmlvcnMsIiAiKSkKPiAgwqAgwqAgwqAgwqAgwqAgwqAgZW5kCj4gIMKgIMKgIMKgIMKgIMKg IMKgIGlmIG5vdCBpbmRleCBhbmQgaSA9PSBtYXggdGhlbgo+ICDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCBpZiBzcGxpdC5vdGhlcnMgdGhlbgo+ICDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCBjdHhfYnR4c2V0b3ZlcmZsb3coMSkKPiAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZWxzZQo+ ICDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBsb2NhbCBvdmVyZmxvdyA9ICNzcGxpdCAt IG1heAo+ICDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpZiBvdmVyZmxvdyA+IDAgdGhl bgo+ICDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjdHhfYnR4c2V0b3ZlcmZs b3cob3ZlcmZsb3cpCj4gIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGVuZAo+ICDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCBlbmQKPiAgwqAgwqAgwqAgwqAgwqAgwqAgZW5kCj4gIMKgIMKg IMKgIMKgIMKgIMKgIGlmIGNvbWJpbmVyID09ICJpbnZlcnRlZGZpcnN0IiB0aGVuCj4gIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIGlmIGkgPT0gMSB0aGVuCj4gIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIGN0eF9idHhzZXR1cCgiaW52ZXJ0ZWQiKQo+ICDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCBlbHNlCj4gIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGN0eF9idHhzZXR1cCgi bm9ybWFsIikKPiAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZW5kCj4gIMKgIMKgIMKgIMKgIMKg IMKgIGVsc2UKPiAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY3R4X2J0eHNldHVwKGNvbWJpbmVy KQo+ICDCoCDCoCDCoCDCoCDCoCDCoCBlbmQKPiAgwqAgwqAgwqAgwqAgwqAgwqAgY3R4X2J0eHN0 b3BhdXRob3IoKQo+ICDCoCDCoCDCoCDCoCBlbmQKPiBgYGAKPiAKPiBJJ2xsIGFkbWl0IHRoYXQg dGhlIGFkZGl0aW9uIG9mIGVudGlyZSBpZi1lbHNlIGJsb2NrcyBhcm91bmQgd2hldGhlciBvciAK PiBub3QgdGhlIGNvbWJpbmVyIGlzIGEgc3BlY2lmaWMgdmFsdWUgbWF5IG5vdCBiZSB0aGUgYmVz dCBwcmFjdGljZSBpbiAKPiB0ZXJtcyBvZiBmdXR1cmUgbWFpbnRlbmFuY2UgKGVzcGVjaWFsbHkg aWYgc2ltaWxhciBpbmRleC1kZXBlbmRlbnQgCj4gYXV0aG9yY29udmVyc2lvbnPCoGFyZSBuZWVk ZWQgaW4gdGhlIGZ1dHVyZSkuIEFsdGVybmF0aXZlbHksIHRoZSAKPiAiYnR4YXV0aG9yIsKgZnVu Y3Rpb24gY291bGQgcG9wdWxhdGUgYSAiY29tYmluZXJzIiBhcnJheSBvZiBsZW5ndGggIm1heCIg Cj4gd2l0aCBhIHNwZWNpZmljIGF1dGhvcmNvbnZlcnNpb24gZm9yIGVhY2ggYXV0aG9yIGluIHRo ZSBzcGxpdDsgZm9yIG1vc3QgCj4gYXV0aG9yY29udmVyc2lvbnMsIGFsbCBlbnRyaWVzIGluIHRo aXMgYXJyYXkgd291bGQgYmUgdGhlIHNhbWUsIGJ1dCBmb3IgCj4gYXV0aG9yY29udmVyc2lvbnMg bGlrZSAiaW52ZXJ0ZWRmaXJzdCIsIHRoZSBmaXJzdCBlbnRyeSB3b3VsZCBiZSAKPiBkaWZmZXJl bnQgZnJvbSB0aGUgcmVzdC4gVGhlbiwgdGhlICJvbmVhdXRob3IiIGZ1bmN0aW9uIGNvdWxkIGp1 c3QgCj4gcmVmZXJlbmNlIGNvbWJpbmVyc1tpXSBpbnN0ZWFkIG9mIGNvbWJpbmVyLgo+IAo+IEpv ZXkKPiAKPiBPbiBGcmksIFNlcCAzLCAyMDIxIGF0IDEwOjQ4IFBNIEpvZXkgTWNDb2xsdW0gCj4g PGptY2NvbGx1bTIwMTQwNTExQGdtYWlsLmNvbSA8bWFpbHRvOmptY2NvbGx1bTIwMTQwNTExQGdt YWlsLmNvbT4+IHdyb3RlOgo+IAo+ICAgICBIaSwKPiAKPiAgICAgSSBtZW50aW9uZWQgdGhpcyBp biBhbiBlYXJsaWVyIGUtbWFpbMKgYnV0IHRob3VnaHQgdGhhdCBub3cgbWlnaHQgYmUKPiAgICAg YSBnb29kIHRpbWUgdG8gZGVzY3JpYmUgdGhpcyBpc3N1ZSBpbiBkZXRhaWwuIEknZCBsaWtlIHRv IGRlZmluZSBhCj4gICAgIG5ldyBhdXRob3Jjb252ZXJzaW9uIHRoYXQgcmVuZGVycyB0aGUgZmly c3QgYXV0aG9yIGluIGEgbGlzdAo+ICAgICBkaWZmZXJlbnRseSB0aGFuIHRoZSByZW1haW5pbmcg YXV0aG9ycyBpbiB0aGXCoGxpc3QuIFNwZWNpZmljYWxseSwKPiAgICAgSSdkIGxpa2UgdG8gdXNl IHRoZSAiaW52ZXJ0ZWQiIGF1dGhvcmNvbnZlcnNpb24gZm9yIHRoZSBmaXJzdCBhdXRob3IKPiAg ICAgYW5kIHRoZSAibm9ybWFsIiBhdXRob3Jjb252ZXJzaW9uIGZvciB0aGUgcmVzdC4KPiAKPiAg ICAgSW4gdGhlIG5ld2VyIGJpYmwtYmliLmx1YcKgZmlsZSwgSSBjYW4gc2VlIHdoYXQgSSBtaWdo dCBoYXZlIHRvCj4gICAgIG1vZGlmeSB0byBhY2NvbXBsaXNoIHRoaXMgKEkgYWRkZWQgdGhlIGlm IGNvbWJpbmVyID09Cj4gICAgICJpbnZlcnRlZGZpcnN0IsKgIGJsb2NrKToKPiAKPiAgICAgYGBg Cj4gICAgIGZ1bmN0aW9uIGF1dGhvcnMuY29uY2F0KGF1dGhvcixjb21iaW5lcix3aGF0LHNldHRp bmdzKQo+ICAgICAgwqAgwqAgaWYgdHlwZShjb21iaW5lcikgPT0gInN0cmluZyIgdGhlbgo+ICAg ICAgwqAgwqAgwqAgwqAgY29tYmluZXIgPSBhdXRob3JzW2NvbWJpbmVyIG9yICJub3JtYWwiXSBv ciBhdXRob3JzLm5vcm1hbAo+ICAgICAgwqAgwqAgZW5kCj4gICAgICDCoCDCoCBsb2NhbCBzcGxp dCA9IHNwbGl0YXV0aG9ycyhhdXRob3IpCj4gICAgICDCoCDCoCBsb2NhbCBzZXR0aW5nID0gc2V0 dGluZ3Nbd2hhdF0KPiAgICAgIMKgIMKgIGxvY2FsIGV0YWxsaW1pdCwgZXRhbGRpc3BsYXksIGV0 YWx0ZXh0ID0gMTAwMCwgMTAwMCwgIiIKPiAgICAgIMKgIMKgIGlmIHNldHRpbmcgdGhlbgo+ICAg ICAgwqAgwqAgwqAgwqAgZXRhbGxpbWl0IMKgID0gc2V0dGluZ3MuZXRhbGxpbWl0IMKgIG9yIDEw MDAKPiAgICAgIMKgIMKgIMKgIMKgIGV0YWxkaXNwbGF5ID0gc2V0dGluZ3MuZXRhbGRpc3BsYXkg b3IgZXRhbGxpbWl0Cj4gICAgICDCoCDCoCDCoCDCoCBldGFsbHRleHQgwqAgPSBzZXR0aW5ncy5l dGFsdGV4dCDCoCDCoG9yICIiCj4gICAgICDCoCDCoCBlbmQKPiAgICAgIMKgIMKgIGxvY2FsIG1h eCA9ICNzcGxpdAo+ICAgICAgwqAgwqAgaWYgbWF4ID4gZXRhbGxpbWl0IGFuZCBldGFsZGlzcGxh eSA8IG1heCB0aGVuCj4gICAgICDCoCDCoCDCoCDCoCBtYXggPSBldGFsZGlzcGxheQo+ICAgICAg wqAgwqAgZW5kCj4gICAgICDCoCDCoCBpZiBjb21iaW5lciA9PSAiaW52ZXJ0ZWRmaXJzdCIgdGhl bgo+ICAgICAgwqAgwqAgwqAgwqAgZm9yIGk9MSxtYXggZG8KPiAgICAgIMKgIMKgIMKgIMKgIMKg IMKgIGlmIGkgPT0gMSB0aGVuCj4gICAgICDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBzcGxpdFtp XSA9IGF1dGhvcnMuaW52ZXJ0ZWQoc3BsaXRbaV0sc2V0dGluZ3MpCj4gICAgICDCoCDCoCDCoCDC oCDCoCDCoCBlbHNlCj4gICAgICDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBzcGxpdFtpXSA9IGF1 dGhvcnMubm9ybWFsKHNwbGl0W2ldLHNldHRpbmdzKQo+ICAgICAgwqAgwqAgwqAgwqAgwqAgwqAg ZW5kCj4gCj4gICAgICDCoCDCoCDCoCDCoCBlbmQKPiAgICAgIMKgIMKgIGVsc2UKPiAgICAgIMKg IMKgIMKgIMKgIGZvciBpPTEsbWF4IGRvCj4gICAgICDCoCDCoCDCoCDCoCDCoCDCoCBzcGxpdFtp XSA9IGNvbWJpbmVyKHNwbGl0W2ldLHNldHRpbmdzKQo+ICAgICAgwqAgwqAgwqAgwqAgZW5kCj4g ICAgICDCoCDCoCBlbmQKPiAgICAgIMKgIMKgIGxvY2FsIHJlc3VsdCA9IGJpYnRleGNvbmNhdChz cGxpdCxzZXR0aW5ncykKPiAgICAgIMKgIMKgIGlmIG1heCA8ICNzcGxpdCB0aGVuCj4gICAgICDC oCDCoCDCoCDCoCByZXR1cm4gcmVzdWx0Cj4gICAgICDCoCDCoCBlbHNlCj4gICAgICDCoCDCoCDC oCDCoCByZXR1cm4gcmVzdWx0IC4uIGV0YWx0ZXh0Cj4gICAgICDCoCDCoCBlbmQKPiAgICAgZW5k Cj4gICAgIGBgYAo+IAo+ICAgICBVbmZvcnR1bmF0ZWx5LCB0aGlzIGRvZXNuJ3Qgc2VlbSB0byBk byBhbnl0aGluZy4gSXQncyBub3QgY2xlYXIgdG8KPiAgICAgbWUgaG93wqBiaWJsLWJpYi5sdWEg YW5kIGJpYmwtYmliLm1raXYgYXJlIGJlaW5nIHVzZWQgYnkgdGhlIG90aGVyCj4gICAgIHB1Ymxp Y2F0aW9uIHN1cHBvcnQgbW9kdWxlcywgaWYgdGhleSdyZSBiZWluZyB1c2VkIGF0IGFsbAo+ICAg ICAocHVibC1pbmkubWtpdiBkb2Vzbid0IGFwcGVhciB0byByZWdpc3RlciBpdCwgYW55d2F5KS4g SXMgdGhlcmUKPiAgICAgYW5vdGhlciBmaWxlIEknZCBoYXZlIHRvIGNoYW5nZSB0byBtYWtlICJp bnZlcnRlZGZpcnN0IiBhIHdvcmtpbmcKPiAgICAgYXV0aG9yY29udmVyc2lvbj8gSXMgdGhlcmUg YSBzaW1pbGFyIGJsb2NrIG9mIGNvZGUgaW4gcHVibC1pbmkubHVhCj4gICAgIHdoZXJlIEkgc2hv dWxkIGJlIGltcGxlbWVudGluZyB0aGlzIGNoYW5nZSBpbnN0ZWFkPwo+IAo+ICAgICBUaGFua3Mh Cj4gCj4gICAgIEpvZXkKPiAKPiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IElmIHlv dXIgcXVlc3Rpb24gaXMgb2YgaW50ZXJlc3QgdG8gb3RoZXJzIGFzIHdlbGwsIHBsZWFzZSBhZGQg YW4gZW50cnkgdG8gdGhlIFdpa2khCj4gCj4gbWFpbGxpc3QgOiBudGctY29udGV4dEBudGcubmwg LyBodHRwOi8vd3d3Lm50Zy5ubC9tYWlsbWFuL2xpc3RpbmZvL250Zy1jb250ZXh0Cj4gd2VicGFn ZSAgOiBodHRwOi8vd3d3LnByYWdtYS1hZGUubmwgLyBodHRwOi8vY29udGV4dC5hYW5oZXQubmV0 Cj4gYXJjaGl2ZSAgOiBodHRwczovL2JpdGJ1Y2tldC5vcmcvcGhnL2NvbnRleHQtbWlycm9yL2Nv bW1pdHMvCj4gd2lraSAgICAgOiBodHRwOi8vY29udGV4dGdhcmRlbi5uZXQKPiBfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwo+IAoKCi0tIAoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEhhbnMgSGFnZW4gfCBQUkFHTUEgQURFCiAgICAgICAgICAg ICAgIFJpZGRlcnN0cmFhdCAyNyB8IDgwNjEgR0ggSGFzc2VsdCB8IFRoZSBOZXRoZXJsYW5kcwog ICAgICAgIHRlbDogMDM4IDQ3NyA1MyA2OSB8IHd3dy5wcmFnbWEtYWRlLm5sIHwgd3d3LnByYWdt YS1wb2QubmwKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSWYgeW91ciBxdWVz dGlvbiBpcyBvZiBpbnRlcmVzdCB0byBvdGhlcnMgYXMgd2VsbCwgcGxlYXNlIGFkZCBhbiBlbnRy eSB0byB0aGUgV2lraSEKCm1haWxsaXN0IDogbnRnLWNvbnRleHRAbnRnLm5sIC8gaHR0cDovL3d3 dy5udGcubmwvbWFpbG1hbi9saXN0aW5mby9udGctY29udGV4dAp3ZWJwYWdlICA6IGh0dHA6Ly93 d3cucHJhZ21hLWFkZS5ubCAvIGh0dHA6Ly9jb250ZXh0LmFhbmhldC5uZXQKYXJjaGl2ZSAgOiBo dHRwczovL2JpdGJ1Y2tldC5vcmcvcGhnL2NvbnRleHQtbWlycm9yL2NvbW1pdHMvCndpa2kgICAg IDogaHR0cDovL2NvbnRleHRnYXJkZW4ubmV0Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCg==