From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from zg8tmtu5ljg5lje1ms4xmtka.icoremail.net (zg8tmtu5ljg5lje1ms4xmtka.icoremail.net [159.89.151.119]) by sourceware.org (Postfix) with ESMTP id 615A03858C66 for ; Fri, 22 Dec 2023 01:22:00 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 615A03858C66 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=eswincomputing.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=eswincomputing.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 615A03858C66 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=159.89.151.119 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1703208123; cv=none; b=iYPHkVjLFlGd6t24Z10jnKjwRVIVnDJHiVVvKSfAIACe5b+COvpv+Lj73TbdPIhkt6ieRTGVVp3mcJAhN2XfJOFBUlK0Foc1Z9m20c8n1bT7Tw4dmmbtiegtwZT8sL/qvfkWhDCjbgJgqiJX0bpzayaOMAu2EHfiCheh2k9wtFA= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1703208123; c=relaxed/simple; bh=h1CogxydzQ8XdZQsj99/+6jKeJJyMTVV+rZanW3mYhU=; h=Date:From:To:Subject:Mime-Version:Message-ID; b=VqJPKgpyUtb00VlF20m0EyMIUnS5DFlZCg50UBDJL0ckglYlHLbx9mIjqGh+YqbmK7COf2n8p9uV2amd8sl3pZcUBqzC+d6Z5PBYcAG65ED6fGyitswzd5ge9gAHkJjXttA8yPn2jZDknQeXsq3qmSrfjT//QgtEfONilfUoykg= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from E0002168DT (unknown [123.157.250.130]) by app1 (Coremail) with SMTP id TAJkCgD3dftZ5IRlvp0CAA--.493S2; Fri, 22 Dec 2023 09:20:25 +0800 (CST) Date: Fri, 22 Dec 2023 09:21:54 +0800 From: "Xiao Zeng" To: "Jeff Johnston" Cc: "newlib@sourceware.org" , "palmer@rivosinc.com" , jeffreyalaw , "Torbjorn SVENSSON" Subject: Re: Re: [PATCH] newlib: libc: Improved the readability of strpbrk with minor optimization References: <20231220061054.35685-1-zengxiao@eswincomputing.com>, , <202312210916074865474@eswincomputing.com>, X-Priority: 3 X-GUID: 036F57B1-B599-4A4A-8F2A-B99634BAF166 X-Has-Attach: no X-Mailer: Foxmail 7.2.15.80[cn] Mime-Version: 1.0 Message-ID: <202312220921541052082@eswincomputing.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-CM-TRANSID:TAJkCgD3dftZ5IRlvp0CAA--.493S2 X-Coremail-Antispam: 1UD129KBjvJXoW3Gw47WryDCFWrZr4kJw4xJFb_yoW3Ww4kpr n3JF17GrWrXr1kJr1Utr1UtryUtr1UA3WUXr1UJF18Jr1jyFyqqr1UXr10gryDJrW8Xr1U Xr1UJr12vr17Jw7anT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUQvb7Iv0xC_Cr1lb4IE77IF4wAFF20E14v26r1j6r4UM7CY07I2 0VC2zVCF04k26cxKx2IYs7xG6rWj6s0DM7CIcVAFz4kK6r1j6r18M28lY4IEw2IIxxk0rw A2F7IY1VAKz4vEj48ve4kI8wA2z4x0Y4vE2Ix0cI8IcVAFwI0_tr0E3s1l84ACjcxK6xII jxv20xvEc7CjxVAFwI0_Gr1j6F4UJwA2z4x0Y4vEx4A2jsIE14v26F4UJVW0owA2z4x0Y4 vEx4A2jsIEc7CjxVAFwI0_GcCE3s1lnx0E6VACY4xI67k04243AVACY4xI67k04243AVAK zVAKj4xI6x02cVCv0xWle2I262IYc4CY6c8Ij28IcVAaY2xG8wAqx4xG64xvF2IEw4CE5I 8CrVC2j2WlYx0E2Ix0cI8IcVAFwI0_JF0_Jw1lYx0Ec7CjxVAajcxG14v26r1j6r4UMcIj 6I8E87Iv67AKxVW8Jr0_Cr1UMcvjeVCFs4IE7xkEbVWUJVW8JwACjcxG0xvY0x0EwIxGrw ACY4xI67k04243AVAKzVAKj4xxMxkIecxEwVAFwVWkMxAIw28IcxkI7VAKI48JMxC20s02 6xCaFVCjc4AY6r1j6r4UMI8I3I0E5I8CrVAFwI0_Jr0_Jr4lx2IqxVCjr7xvwVAFwI0_Jr I_JrWlx4CE17CEb7AF67AKxVWUAVWUtwCIc40Y0x0EwIxGrwCI42IY6xIIjxv20xvE14v2 6r1j6r1xMIIF0xvE2Ix0cI8IcVCY1x0267AKxVWUJVW8JwCI42IY6xAIw20EY4v20xvaj4 0_Jr0_JF4lIxAIcVC2z280aVAFwI0_Jr0_Gr1lIxAIcVC2z280aVCY1x0267AKxVWUJVW8 JwCE64xvF2IEb7IF0Fy7YxBIdaVFxhVjvjDU0xZFpf9x07Ukl19UUUUU= X-CM-SenderInfo: p2hqw5xldrqvxvzl0uprps33xlqjhudrp/ X-Spam-Status: No, score=-10.3 required=5.0 tests=BAYES_00,BODY_8BITS,GIT_PATCH_0,KAM_ASCII_DIVIDERS,KAM_DMARC_STATUS,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: MjAyMy0xMi0yMiAwMzowNSDCoEplZmYgSm9obnN0b24gPGpqb2huc3RuQHJlZGhhdC5jb20+IHdy b3RlOgo+CsKgCj5QYXRjaCBtZXJnZWQuwqAgVGhhbmtzLiAKVGhhbmsgeW91LCBKZWZmLgpQZXJo YXBzIHRoZSB0d28gZW1haWxzIGFyZSB0b28gc2ltaWxhciwgSSB3b3VsZCBsaWtlIHRvIHJlbWlu ZCB5b3UgdGhhdCB0aGVyZSBpcyBhIHNpbWlsYXIgb3B0aW1pemF0aW9uIG9uCjxodHRwczovL3Nv dXJjZXdhcmUub3JnL3BpcGVybWFpbC9uZXdsaWIvMjAyMy8wMjA3NzEuaHRtbD4uCgo+Cj4tLSBK ZWZmIEouCj4KPk9uIFdlZCwgRGVjIDIwLCAyMDIzIGF0IDg6MTbigK9QTSBYaWFvIFplbmcgPHpl bmd4aWFvQGVzd2luY29tcHV0aW5nLmNvbT4KPndyb3RlOgo+Cj4+IDIwMjMtMTItMjEgMDY6NDjC oCBKZWZmIEpvaG5zdG9uIDxqam9obnN0bkByZWRoYXQuY29tPiB3cm90ZToKPj4gPgo+Pgo+PiA+ VW5sZXNzIEkgYW0gbWlzc2luZyBzb21ldGhpbmcsIEkgdGhpbmsgdGhlIGNvZGUgY291bGQgYmUg bWFkZSBldmVuIHNpbXBsZXIKPj4gPnRvIHJldHVybiB0aGUgcG9pbnRlciB3aGVuIGZvdW5kIGFu ZCByZXR1cm4gTlVMTCBvdGhlcndpc2UuCj4+IFllcywgeW91IGhhdmUgZm91bmQgYSBtb3JlIGVm ZmljaWVudCBtZXRob2QuCj4+IEFmdGVyIG15IHRlc3RpbmcsIGZld2VyIGFzc2VtYmx5IGluc3Ry dWN0aW9ucyB3ZXJlIGdlbmVyYXRlZC4gVGhpcyBpcwo+PiByZWFsbHkgZXhjaXRpbmcuCj4+Cj4+ IFhpYW8ncyBwYXRjaDoKPj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCj4+IGxpYmNfYS1zdHJwYnJrLm86wqDCoMKgwqAgZmlsZSBmb3Jt YXQgZWxmNjQtbGl0dGxlcmlzY3YKPj4KPj4KPj4gRGlzYXNzZW1ibHkgb2Ygc2VjdGlvbiAudGV4 dDoKPj4KPj4gMDAwMDAwMDAwMDAwMDAwMCA8c3RycGJyaz46Cj4+wqDCoMKgIDA6wqDCoCAwMDA1 NDY4M8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBsYnXCoMKgwqDCoCBhMywwKGEwKQo+ Pgo+PiAwMDAwMDAwMDAwMDAwMDA0IDwuTFZMMT46Cj4+wqDCoMKgIDQ6wqDCoCAwNDA2ODA2M8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBiZXF6wqDCoMKgIGEzLDQ0IDwuTDEwPgo+PsKg wqDCoCA4OsKgwqAgMDAwNWM2MDPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbGJ1wqDC oMKgwqAgYTIsMChhMSkKPj7CoMKgwqAgYzrCoMKgIDA0MDYwMDYzwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGJlcXrCoMKgwqAgYTIsNGMgPC5MMTQ+Cj4+Cj4+IDAwMDAwMDAwMDAwMDAw MTAgPC5MNT46Cj4+wqDCoCAxMDrCoMKgIDAwMDU4NzkzwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIG12wqDCoMKgwqDCoCBhNSxhMQo+PsKgwqAgMTQ6wqDCoCAwMDA2MDcxM8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBtdsKgwqDCoMKgwqAgYTQsYTIKPj7CoMKgIDE4OsKgwqAg MDBjMDAwNmbCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgasKgwqDCoMKgwqDCoCAyNCA8 Lkw0Pgo+Pgo+PiAwMDAwMDAwMDAwMDAwMDFjIDwuTDE3PjoKPj7CoMKgIDFjOsKgwqAgMDAwN2M3 MDPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbGJ1wqDCoMKgwqAgYTQsMChhNSkKPj7C oMKgIDIwOsKgwqAgMDAwNzA4NjPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYmVxesKg wqDCoCBhNCwzMCA8LkwxNj4KPj4KPj4gMDAwMDAwMDAwMDAwMDAyNCA8Lkw0PjoKPj7CoMKgIDI0 OsKgwqAgMDAxNzg3OTPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYWRkacKgwqDCoCBh NSxhNSwxCj4+Cj4+IDAwMDAwMDAwMDAwMDAwMjggPC5MVkw1PjoKPj7CoMKgIDI4OsKgwqAgZmVl NjlhZTPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYm5lwqDCoMKgwqAgYTMsYTQsMWMg PC5MMTc+Cj4+Cj4+IDAwMDAwMDAwMDAwMDAwMmMgPC5MMT46Cj4+wqDCoCAyYzrCoMKgIDAwMDA4 MDY3wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldAo+Pgo+PiAwMDAwMDAwMDAwMDAw MDMwIDwuTDE2PjoKPj7CoMKgIDMwOsKgwqAgMDAxNTQ2ODPCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgbGJ1wqDCoMKgwqAgYTMsMShhMCkKPj7CoMKgIDM0OsKgwqAgMDAxNTA1MTPCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYWRkacKgwqDCoCBhMCxhMCwxCj4+Cj4+IDAwMDAw MDAwMDAwMDAwMzggPC5MVkw4PjoKPj7CoMKgIDM4OsKgwqAgZmMwNjljZTPCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgYm5lesKgwqDCoCBhMywxMCA8Lkw1Pgo+Pgo+PiAwMDAwMDAwMDAw MDAwMDNjIDwuTDY+Ogo+PsKgwqAgM2M6wqDCoCAwMDA3Yzc4M8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBsYnXCoMKgwqDCoCBhNSwwKGE1KQo+Pgo+PiAwMDAwMDAwMDAwMDAwMDQwIDwu TFZMOT46Cj4+wqDCoCA0MDrCoMKgIGZlMDc5NmUzwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGJuZXrCoMKgwqAgYTUsMmMgPC5MMT4KPj4KPj4gMDAwMDAwMDAwMDAwMDA0NCA8LkwxMD46 Cj4+wqDCoCA0NDrCoMKgIDAwMDAwNTEzwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGxp wqDCoMKgwqDCoCBhMCwwCj4+Cj4+IDAwMDAwMDAwMDAwMDAwNDggPC5MVkwxMT46Cj4+wqDCoCA0 ODrCoMKgIDAwMDA4MDY3wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldAo+Pgo+PiAw MDAwMDAwMDAwMDAwMDRjIDwuTDE0PjoKPj7CoMKgIDRjOsKgwqAgMDAxNTQ2ODPCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgbGJ1wqDCoMKgwqAgYTMsMShhMCkKPj7CoMKgIDUwOsKgwqAg MDAxNTA1MTPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYWRkacKgwqDCoCBhMCxhMCwx Cj4+wqDCoCA1NDrCoMKgIGZlMDY5Y2UzwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJu ZXrCoMKgwqAgYTMsNGMgPC5MMTQ+Cj4+wqDCoCA1ODrCoMKgIDAwMDU4NzkzwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIG12wqDCoMKgwqDCoCBhNSxhMQo+PsKgwqAgNWM6wqDCoCBmZTFm ZjA2ZsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBqwqDCoMKgwqDCoMKgIDNjIDwuTDY+ Cj4+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQo+Pgo+PiBKZWZmJ3MgcGF0Y2gKPj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4+IGxpYmNfYS1zdHJwYnJrLm86wqDCoMKgwqAg ZmlsZSBmb3JtYXQgZWxmNjQtbGl0dGxlcmlzY3YKPj4KPj4KPj4gRGlzYXNzZW1ibHkgb2Ygc2Vj dGlvbiAudGV4dDoKPj4KPj4gMDAwMDAwMDAwMDAwMDAwMCA8c3RycGJyaz46Cj4+wqDCoMKgIDA6 wqDCoCAwMDA1NDY4M8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBsYnXCoMKgwqDCoCBh MywwKGEwKQo+PsKgwqDCoCA0OsKgwqAgMDIwNjhjNjPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgYmVxesKgwqDCoCBhMywzYyA8Lkw4Pgo+PsKgwqDCoCA4OsKgwqAgMDAwNWM2MDPCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbGJ1wqDCoMKgwqAgYTIsMChhMSkKPj7CoMKgwqAg YzrCoMKgIDAyMDYwYzYzwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJlcXrCoMKgwqAg YTIsNDQgPC5MMTI+Cj4+Cj4+IDAwMDAwMDAwMDAwMDAwMTAgPC5MNT46Cj4+wqDCoCAxMDrCoMKg IDAwMDU4NzkzwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG12wqDCoMKgwqDCoCBhNSxh MQo+PsKgwqAgMTQ6wqDCoCAwMDA2MDcxM8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBt dsKgwqDCoMKgwqAgYTQsYTIKPj7CoMKgIDE4OsKgwqAgMDBjMDAwNmbCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgasKgwqDCoMKgwqDCoCAyNCA8Lkw0Pgo+Pgo+PiAwMDAwMDAwMDAwMDAw MDFjIDwuTDE1PjoKPj7CoMKgIDFjOsKgwqAgMDAwN2M3MDPCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgbGJ1wqDCoMKgwqAgYTQsMChhNSkKPj7CoMKgIDIwOsKgwqAgMDAwNzA4NjPCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYmVxesKgwqDCoCBhNCwzMCA8LkwxND4KPj4KPj4g MDAwMDAwMDAwMDAwMDAyNCA8Lkw0PjoKPj7CoMKgIDI0OsKgwqAgMDAxNzg3OTPCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgYWRkacKgwqDCoCBhNSxhNSwxCj4+Cj4+IDAwMDAwMDAwMDAw MDAwMjggPC5MVkw0PjoKPj7CoMKgIDI4OsKgwqAgZmVkNzFhZTPCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgYm5lwqDCoMKgwqAgYTQsYTMsMWMgPC5MMTU+Cj4+wqDCoCAyYzrCoMKgIDAw MDA4MDY3wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldAo+Pgo+PiAwMDAwMDAwMDAw MDAwMDMwIDwuTDE0PjoKPj7CoMKgIDMwOsKgwqAgMDAxNTQ2ODPCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgbGJ1wqDCoMKgwqAgYTMsMShhMCkKPj7CoMKgIDM0OsKgwqAgMDAxNTA1MTPC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYWRkacKgwqDCoCBhMCxhMCwxCj4+Cj4+IDAw MDAwMDAwMDAwMDAwMzggPC5MVkw2PjoKPj7CoMKgIDM4OsKgwqAgZmMwNjljZTPCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgYm5lesKgwqDCoCBhMywxMCA8Lkw1Pgo+Pgo+PiAwMDAwMDAw MDAwMDAwMDNjIDwuTDg+Ogo+PsKgwqAgM2M6wqDCoCAwMDAwMDUxM8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBsacKgwqDCoMKgwqAgYTAsMAo+Pgo+PiAwMDAwMDAwMDAwMDAwMDQwIDwu TFZMNz46Cj4+wqDCoCA0MDrCoMKgIDAwMDA4MDY3wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHJldAo+Pgo+PiAwMDAwMDAwMDAwMDAwMDQ0IDwuTDEyPjoKPj7CoMKgIDQ0OsKgwqAgMDAx NTQ2ODPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbGJ1wqDCoMKgwqAgYTMsMShhMCkK Pj7CoMKgIDQ4OsKgwqAgMDAxNTA1MTPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYWRk acKgwqDCoCBhMCxhMCwxCj4+wqDCoCA0YzrCoMKgIGZlMDY5Y2UzwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGJuZXrCoMKgwqAgYTMsNDQgPC5MMTI+Cj4+wqDCoCA1MDrCoMKgIGZlZGZm MDZmwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGrCoMKgwqDCoMKgwqAgM2MgPC5MOD4K Pj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCj4+IEFmdGVyIGNhcmVmdWwgY29tcGFyaXNvbiwgaXQgd2FzIGZvdW5kIHRoYXQgdGhlcmUg YXJlIGZld2VyIGFzc2VtYmx5Cj4+IGluc3RydWN0aW9ucyBhZnRlciB0aGUgSmVmZidzIHBhdGNo Lgo+Pgo+PiA+Cj4+ID5pbmRleCA3NzRkYjFlLi5kOTg0NzQ1IDEwMDY0NAo+PiA+LS0tIGEvbmV3 bGliL2xpYmMvc3RyaW5nL3N0cnBicmsuYwo+PiA+KysrIGIvbmV3bGliL2xpYmMvc3RyaW5nL3N0 cnBicmsuYwo+PiA+QEAgLTI5LDIzICsyOSwxNiBAQCBzdHJwYnJrIChjb25zdCBjaGFyICpzMSwK Pj4gPsKgwqDCoMKgwqDCoMKgIGNvbnN0IGNoYXIgKnMyKQo+PiA+IHsKPj4gPsKgwqAgY29uc3Qg Y2hhciAqYyA9IHMyOwo+PiA+LcKgIGlmICghKnMxKQo+PiA+LcKgwqDCoCByZXR1cm4gKGNoYXIg KikgTlVMTDsKPj4gPgo+PiA+wqDCoCB3aGlsZSAoKnMxKQo+PiA+wqDCoMKgwqAgewo+PiA+wqDC oMKgwqDCoMKgIGZvciAoYyA9IHMyOyAqYzsgYysrKQo+PiA+wqDCoMKgwqDCoMKgwqAgewo+PiA+ wqDCoMKgwqDCoMKgwqDCoMKgIGlmICgqczEgPT0gKmMpCj4+ID4twqDCoMKgwqDCoMKgwqDCoMKg wqAgYnJlYWs7Cj4+ID4rwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIChjaGFyICopIHMxOwo+ PiA+wqDCoMKgwqDCoMKgwqAgfQo+PiA+LcKgwqDCoMKgwqAgaWYgKCpjKQo+PiA+LcKgwqDCoMKg wqDCoCBicmVhazsKPj4gPsKgwqDCoMKgwqDCoCBzMSsrOwo+PiA+wqDCoMKgwqAgfQo+PiA+Cj4+ ID4twqAgaWYgKCpjID09ICdcMCcpCj4+ID4twqDCoMKgIHMxID0gTlVMTDsKPj4gPi0KPj4gPi3C oCByZXR1cm4gKGNoYXIgKikgczE7Cj4+ID4rwqAgcmV0dXJuIChjaGFyICopIE5VTEw7Cj4+ID4g fQo+PiA+Cj4+ID5PbiBXZWQsIERlYyAyMCwgMjAyMyBhdCAxOjEy4oCvQU0gWGlhbyBaZW5nIDx6 ZW5neGlhb0Blc3dpbmNvbXB1dGluZy5jb20+Cj4+ID53cm90ZToKPj4gPgo+PiA+PiBTaWduZWQt b2ZmLWJ5OiBYaWFvIFplbmcgPHplbmd4aWFvQGVzd2luY29tcHV0aW5nLmNvbT4KPj4gPj4gLS0t Cj4+ID4+wqAgbmV3bGliL2xpYmMvc3RyaW5nL3N0cnBicmsuYyB8IDUgKystLS0KPj4gPj7CoCAx IGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQo+PiA+Pgo+PiA+ PiBkaWZmIC0tZ2l0IGEvbmV3bGliL2xpYmMvc3RyaW5nL3N0cnBicmsuYyBiL25ld2xpYi9saWJj L3N0cmluZy9zdHJwYnJrLmMKPj4gPj4gaW5kZXggNzc0ZGIxZTZkLi45NWU4OWMyMGMgMTAwNjQ0 Cj4+ID4+IC0tLSBhL25ld2xpYi9saWJjL3N0cmluZy9zdHJwYnJrLmMKPj4gPj4gKysrIGIvbmV3 bGliL2xpYmMvc3RyaW5nL3N0cnBicmsuYwo+PiA+PiBAQCAtMzcsMTUgKzM3LDE0IEBAIHN0cnBi cmsgKGNvbnN0IGNoYXIgKnMxLAo+PiA+PsKgwqDCoMKgwqDCoMKgIGZvciAoYyA9IHMyOyAqYzsg YysrKQo+PiA+PsKgwqDCoMKgwqDCoMKgwqAgewo+PiA+PsKgwqDCoMKgwqDCoMKgwqDCoMKgIGlm ICgqczEgPT0gKmMpCj4+ID4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsKPj4gPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8gZW5kOwo+PiA+PsKgwqDCoMKgwqDCoMKgwqAgfQo+PiA+ PiAtwqDCoMKgwqDCoCBpZiAoKmMpCj4+ID4+IC3CoMKgwqDCoMKgwqAgYnJlYWs7Cj4+ID4+wqDC oMKgwqDCoMKgwqAgczErKzsKPj4gPj7CoMKgwqDCoMKgIH0KPj4gPj4KPj4gPj7CoMKgwqAgaWYg KCpjID09ICdcMCcpCj4+ID4+wqDCoMKgwqDCoCBzMSA9IE5VTEw7Cj4+ID4+Cj4+ID4+ICtlbmQ6 Cj4+ID4+wqDCoMKgIHJldHVybiAoY2hhciAqKSBzMTsKPj4gPj7CoCB9Cj4+ID4+IC0tCj4+ID4+ IDIuMTcuMQo+PiA+Pgo+PiA+Pgo+Pgo+PiBUaGFua3MKPj4gWGlhbyBaZW5nCj4+Cj4+CsKgClRo YW5rcwpYaWFvIFplbmcKCg==