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=-18.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING,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 8CA59C433E6 for ; Fri, 12 Mar 2021 18:26:29 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 5629564F6A for ; Fri, 12 Mar 2021 18:26:29 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232933AbhCLSZ6 (ORCPT ); Fri, 12 Mar 2021 13:25:58 -0500 Received: from smtp502.hk.chengmail.me ([113.10.190.23]:44207 "EHLO smtp502.hk.chengmail.me" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232709AbhCLSZx (ORCPT ); Fri, 12 Mar 2021 13:25:53 -0500 X-CHENGMAILHOST: 113.10.190.23 X-CHENGMAIL-INSTANCEID: 756a.604bb227.23794.0 Date: Sat, 13 Mar 2021 02:25:44 +0800 From: "lilinchao@oschina.cn" To: "Li Linchao via GitGitGadget" , git Cc: "Junio C Hamano" , "Derrick Stolee" , dscho , "Jonathan Tan" Subject: Re: [PATCH v6] builtin/clone.c: add --reject-shallow option References: , X-Priority: 3 X-Has-Attach: no X-Mailer: Foxmail 7.2.19.158[cn] Mime-Version: 1.0 X-source-message-id: <202103130225436028693@oschina.cn> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Message-ID: <5e9d62c6836011eb9c540026b95c99cc@oschina.cn> Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org UElORy4KClNlZW1zIHRoYXQgdGhpcyBwYXRjaCBoYXZlIGJlZW4gZm9yZ290dGVuIGJ5IGV2ZXJ5 b25lLgoKLS0tLS0tLS0tLS0tLS0KCj5Gcm9tOiBsaWxpbmNoYW8gPGxpbGluY2hhb0Bvc2NoaW5h LmNuPgo+Cj5JbiBzb21lIHNjZW5hcmlvcywgdXNlcnMgbWF5IHdhbnQgbW9yZSBoaXN0b3J5IHRo YW4gdGhlIHJlcG9zaXRvcnkKPm9mZmVyZWQgZm9yIGNsb25pbmcsIHdoaWNoIGhhcHBlbnMgdG8g YmUgYSBzaGFsbG93IHJlcG9zaXRvcnksIGNhbgo+Z2l2ZSB0aGVtLiBCdXQgYmVjYXVzZSB1c2Vy cyBkb24ndCBrbm93IGl0IGlzIGEgc2hhbGxvdyByZXBvc2l0b3J5Cj51bnRpbCB0aGV5IGRvd25s b2FkIGl0IHRvIGxvY2FsLCB1c2VycyBzaG91bGQgaGF2ZSB0aGUgb3B0aW9uIHRvCj5yZWZ1c2Ug dG8gY2xvbmUgdGhpcyBraW5kIG9mIHJlcG9zaXRvcnksIGFuZCBtYXkgd2FudCB0byBleGl0IHRo ZQo+cHJvY2VzcyBpbW1lZGlhdGVseSB3aXRob3V0IGNyZWF0aW5nIGFueSB1bm5lY2Vzc2FyeSBm aWxlcy4KPgo+QWx0aG91Z2h0IHRoZXJlIGlzIGFuIG9wdGlvbiAnLS1kZXB0aD14JyBmb3IgdXNl cnMgdG8gZGVjaWRlIGhvdwo+ZGVlcCBoaXN0b3J5IHRoZXkgY2FuIGZldGNoLCBidXQgYXMgdGhl IHVuc2hhbGxvdyBjbG9uaW5nJ3MgZGVwdGgKPmlzIElORklOSVRZLCB3ZSBjYW4ndCBrbm93IGV4 YWN0bHkgdGhlIG1pbmltdW4gJ3gnIHZhbHVlIHRoYXQgY2FuCj5zYXRpc2Z5IHRoZSBtaW5pbXVt IGludGVncml0eSwgc28gd2UgY2FuJ3QgcGFzcyAneCcgdmFsdWUgdG8gLS1kZXB0aCwKPmFuZCBl eHBlY3QgdGhpcyBjYW4gb2J0YWluIGEgY29tcGxldGUgaGlzdG9yeSBvZiBhIHJlcG9zaXRvcnku Cj4KPkluIG90aGVyIHNjZW5hcmlvcywgaWYgd2UgaGF2ZSBhbiBBUEkgdGhhdCBhbGxvdyB1cyB0 byBpbXBvcnQgZXh0ZXJuYWwKPnJlcG9zaXRvcnksIGFuZCB0aGVuIHBlcmZvcm0gdmFyaW91cyBv cGVyYXRpb25zIG9uIHRoZSByZXBvLgo+QnV0IGlmIHRoZSBpbXBvcnRlZCBpcyBhIHNoYWxsb3cg b25lKHdoaWNoIGlzIGFjdHVhbGx5IHBvc3NpYmxlKSwgaXQKPndpbGwgYWZmZWN0IHRoZSBzdWJz ZXF1ZW50IG9wZXJhdGlvbnMuIFNvIHdlIGNhbiBjaG9vc2UgdG8gcmVmdXNlIHRvCj5jbG9uZSwg YW5kIGxldCdzIGp1c3QgaW1wb3J0IGEgbm9ybWFsIHJlcG9zaXRvcnkuCj4KPlRoaXMgcGF0Y2gg b2ZmZXJzIGEgbmV3IG9wdGlvbiAnLS1yZWplY3Qtc2hhbGxvdycgdGhhdCBjYW4gcmVqZWN0IHRv Cj5jbG9uZSBhIHNoYWxsb3cgcmVwb3NpdG9yeS4KPgo+U2lnbmVkLW9mZi1ieTogbGlsaW5jaGFv IDxsaWxpbmNoYW9Ab3NjaGluYS5jbj4KPi0tLQo+wqDCoMKgIGJ1aWx0aW4vY2xvbmUuYzogYWRk IC0tcmVqZWN0LXNoYWxsb3cgb3B0aW9uCj7CoMKgwqAKPsKgwqDCoCBDaGFuZ2VzIHNpbmNlIHYx Ogo+wqDCoMKgCj7CoMKgwqDCoCAqIFJlbmFtZSAtLW5vLXNoYWxsb3cgdG8gLS1yZWplY3Qtc2hh bGxvdwo+wqDCoMKgwqAgKiBFbmFibGUgdG8gcmVqZWN0IGEgbm9uLWxvY2FsIGNsb25lCj7CoMKg wqDCoCAqIEVuYWJsZSAtLVtuby1dcmVqZWN0LXNoYWxsb3cgZnJvbSBDTEkgb3ZlcnJpZGUgY29u ZmlndXJhdGlvbi4KPsKgwqDCoMKgICogQWRkIG1vcmUgdGVzdGNhc2VzLgo+wqDCoMKgwqAgKiBS ZXdvcmQgY29tbWl0IG1lc3NhZ2VzIGFuZCByZWxhdGl2ZSBkb2N1bWVudGF0aW9uLgo+wqDCoMKg Cj7CoMKgwqAgQ2hhbmdlcyBzaW5jZSB2MzoKPsKgwqDCoAo+wqDCoMKgwqAgKiBBZGQgc3VwcG9y dCB0byByZWplY3QgY2xvbmUgc2hhbGxvdyByZXBvIG92ZXIgaHR0cHMgcHJvdG9jb2wKPiAqIEFk ZCB0ZXN0Y2FzZSB0byByZWplY3QgY2xvbmUgc2hhbGxvdyByZXBvIG92ZXIgaHR0cHM6Ly8gdHJh bnNwb3J0Cj7CoMKgwqDCoCAqIFJld29yZCBjb21taXQgbWVzc2FnZXMgYW5kIHJlbGF0aXZlIGRv Y3VtZW50YXRpb24gYWNjb3JkaW5nCj7CoMKgwqDCoMKgwqAgc3VnZ2VzdGlvbnMgZnJvbSBKdW5p by4KPsKgwqDCoAo+wqDCoMKgIENoYW5nZXMgc2luY2UgdjU6Cj7CoMKgwqAKPsKgwqDCoMKgICog Y2FtZWxjYXNlIGNvbmZpZyB2YXJpYWJsZQo+wqDCoMKgwqAgKiB3YXJuaW5nIGNsaWVudCB0aGF0 IHNvdXJjZSByZXBvIGlzIHNoYWxsb3cKPsKgwqDCoMKgICogYmV0dGVyIHN1cHBvcnQgc3NoOi8v IGFuZCBnaXQ6Ly8gcHJvdG9jb2wgdjEsIHYyCj7CoMKgwqAKPsKgwqDCoCBTaWduZWQtb2ZmLWJ5 OiBsaWxpbmNoYW8gbGlsaW5jaGFvQG9zY2hpbmEuY24KPgo+UHVibGlzaGVkLUFzOiBodHRwczov L2dpdGh1Yi5jb20vZ2l0Z2l0Z2FkZ2V0L2dpdC9yZWxlYXNlcy90YWcvcHItODY1JTJGQ2FjdHVz aW5oYW5kJTJGZ2l0LWNsb25lLW9wdGlvbnMtdjYKPkZldGNoLUl0LVZpYTogZ2l0IGZldGNoIGh0 dHBzOi8vZ2l0aHViLmNvbS9naXRnaXRnYWRnZXQvZ2l0IHByLTg2NS9DYWN0dXNpbmhhbmQvZ2l0 LWNsb25lLW9wdGlvbnMtdjYKPlB1bGwtUmVxdWVzdDogaHR0cHM6Ly9naXRodWIuY29tL2dpdGdp dGdhZGdldC9naXQvcHVsbC84NjUKPgo+UmFuZ2UtZGlmZiB2cyB2NToKPgo+IDE6wqAgM2Y3NjVl NDllNGE3ICEgMTrCoCA5NTMxMjI1ODhjYTggYnVpbHRpbi9jbG9uZS5jOiBhZGQgLS1yZWplY3Qt c2hhbGxvdyBvcHRpb24KPsKgwqDCoMKgIEBAIERvY3VtZW50YXRpb24vY29uZmlnL2Nsb25lLnR4 dDogY2xvbmUuZGVmYXVsdFJlbW90ZU5hbWU6Ogo+wqDCoMKgwqDCoMKgIGBvcmlnaW5gLCBhbmQg Y2FuIGJlIG92ZXJyaWRkZW4gYnkgcGFzc2luZyB0aGUgYC0tb3JpZ2luYCBjb21tYW5kLWxpbmUK PsKgwqDCoMKgwqDCoCBvcHRpb24gdG8gbGlua2dpdDpnaXQtY2xvbmVbMV0uCj7CoMKgwqDCoMKg ICsKPsKgwqDCoMKgIC0rY2xvbmUucmVqZWN0c2hhbGxvdzo6Cj7CoMKgwqDCoCArK2Nsb25lLnJl amVjdFNoYWxsb3c6Ogo+wqDCoMKgwqDCoCArCVJlamVjdCB0byBjbG9uZSBhIHJlcG9zaXRvcnkg aWYgaXQgaXMgYSBzaGFsbG93IG9uZSwgY2FuIGJlIG92ZXJyaWRkZW4gYnkKPsKgwqDCoMKgwqAg KwlwYXNzaW5nIG9wdGlvbiBgLS1yZWplY3Qtc2hhbGxvd2AgaW4gY29tbWFuZCBsaW5lLiBTZWUg bGlua2dpdDpnaXQtY2xvbmVbMV0KPsKgwqDCoMKgwqAKPsKgwqDCoMKgIEBAIERvY3VtZW50YXRp b24vZ2l0LWNsb25lLnR4dDogb2JqZWN0cyBmcm9tIHRoZSBzb3VyY2UgcmVwb3NpdG9yeSBpbnRv IGEgcGFjayBpbiB0Cj7CoMKgwqDCoMKgwqAgTm8gY2hlY2tvdXQgb2YgSEVBRCBpcyBwZXJmb3Jt ZWQgYWZ0ZXIgdGhlIGNsb25lIGlzIGNvbXBsZXRlLgo+wqDCoMKgwqDCoMKgCj7CoMKgwqDCoMKg ICstLVtuby1dcmVqZWN0LXNoYWxsb3c6Ogo+wqDCoMKgwqAgLSsJRmFpbCBpZiB0aGUgc291cmNl IHJlcG9zaXRvcnkgaXMgYSBzaGFsbG93IHJlcG9zaXRvcnkuIFRoZQo+wqDCoMKgwqAgLSsJJ2Ns b25lLnJlamVjdHNoYWxsb3cnIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUgY2FuIGJlIHVzZWQgdG8K PsKgwqDCoMKgICsrCUZhaWwgaWYgdGhlIHNvdXJjZSByZXBvc2l0b3J5IGlzIGEgc2hhbGxvdyBy ZXBvc2l0b3J5Lgo+wqDCoMKgwqAgKysJVGhlICdjbG9uZS5yZWplY3RTaGFsbG93JyBjb25maWd1 cmF0aW9uIHZhcmlhYmxlIGNhbiBiZSB1c2VkIHRvCj7CoMKgwqDCoMKgICsJZ2l2ZSB0aGUgZGVm YXVsdC4KPsKgwqDCoMKgwqAgKwo+wqDCoMKgwqDCoMKgIC0tYmFyZTo6Cj7CoMKgwqDCoCBAQCBi dWlsdGluL2Nsb25lLmM6IHN0YXRpYyBpbnQgZ2l0X2Nsb25lX2NvbmZpZyhjb25zdCBjaGFyICpr LCBjb25zdCBjaGFyICp2LCB2b2lkCj7CoMKgwqDCoMKgwqAgZnJlZShyZW1vdGVfbmFtZSk7Cj7C oMKgwqDCoMKgwqAgcmVtb3RlX25hbWUgPSB4c3RyZHVwKHYpOwo+wqDCoMKgwqDCoMKgIH0KPsKg wqDCoMKgIC0rCWlmICghc3RyY21wKGssICJjbG9uZS5yZWplY3RzaGFsbG93IikpIHsKPsKgwqDC oMKgICsrCWlmICghc3RyY21wKGssICJjbG9uZS5yZWplY3RzaGFsbG93IikpCj7CoMKgwqDCoMKg ICsJY29uZmlnX3NoYWxsb3cgPSBnaXRfY29uZmlnX2Jvb2woaywgdik7Cj7CoMKgwqDCoCAtKwl9 Cj7CoMKgwqDCoCArKwo+wqDCoMKgwqDCoMKgIHJldHVybiBnaXRfZGVmYXVsdF9jb25maWcoaywg diwgY2IpOwo+wqDCoMKgwqDCoMKgIH0KPsKgwqDCoMKgwqDCoAo+wqDCoMKgwqAgQEAgYnVpbHRp bi9jbG9uZS5jOiBpbnQgY21kX2Nsb25lKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndiwgY29u c3QgY2hhciAqcHJlZml4KQo+wqDCoMKgwqDCoCArCSogSWYgb3B0aW9uX3NoYWxsb3cgaXMgc3Bl Y2lmaWVkIGZyb20gQ0xJIG9wdGlvbiwKPsKgwqDCoMKgwqAgKwkqIGlnbm9yZSBjb25maWdfc2hh bGxvdyBmcm9tIGdpdF9jbG9uZV9jb25maWcuCj7CoMKgwqDCoMKgICsJKi8KPsKgwqDCoMKgIC0r CWlmIChjb25maWdfc2hhbGxvdyAhPSAtMSkgewo+wqDCoMKgwqAgKysJaWYgKGNvbmZpZ19zaGFs bG93ICE9IC0xKQo+wqDCoMKgwqDCoCArCXJlamVjdF9zaGFsbG93ID0gY29uZmlnX3NoYWxsb3c7 Cj7CoMKgwqDCoCAtKwl9Cj7CoMKgwqDCoCAtKwlpZiAob3B0aW9uX3NoYWxsb3cgIT0gLTEpIHsK PsKgwqDCoMKgICsrCj7CoMKgwqDCoCArKwlpZiAob3B0aW9uX3NoYWxsb3cgIT0gLTEpCj7CoMKg wqDCoMKgICsJcmVqZWN0X3NoYWxsb3cgPSBvcHRpb25fc2hhbGxvdzsKPsKgwqDCoMKgIC0rCX0K PsKgwqDCoMKgICsrCj7CoMKgwqDCoMKgwqAgLyoKPsKgwqDCoMKgwqDCoCAqIGFwcGx5IHRoZSBy ZW1vdGUgbmFtZSBwcm92aWRlZCBieSAtLW9yaWdpbiBvbmx5IGFmdGVyIHRoaXMgc2Vjb25kCj7C oMKgwqDCoMKgwqAgKiBjYWxsIHRvIGdpdF9jb25maWcsIHRvIGVuc3VyZSBpdCBvdmVycmlkZXMg YWxsIGNvbmZpZy1iYXNlZCB2YWx1ZXMuCj7CoMKgwqDCoCBAQCBidWlsdGluL2Nsb25lLmM6IGlu dCBjbWRfY2xvbmUoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2LCBjb25zdCBjaGFyICpwcmVm aXgpCj7CoMKgwqDCoMKgwqAgaWYgKCFhY2Nlc3MobWtwYXRoKCIlcy9zaGFsbG93IiwgcGF0aCks IEZfT0spKSB7Cj7CoMKgwqDCoMKgICsJaWYgKHJlamVjdF9zaGFsbG93KQo+wqDCoMKgwqDCoCAr CWRpZSgic291cmNlIHJlcG9zaXRvcnkgaXMgc2hhbGxvdywgcmVqZWN0IHRvIGNsb25lLiIpOwo+ wqDCoMKgwqAgKysJZWxzZQo+wqDCoMKgwqAgKysJd2FybmluZygic291cmNlIHJlcG9zaXRvcnkg aXMgc2hhbGxvdy4iKTsKPsKgwqDCoMKgwqDCoCBpZiAob3B0aW9uX2xvY2FsID4gMCkKPsKgwqDC oMKgwqDCoCB3YXJuaW5nKF8oInNvdXJjZSByZXBvc2l0b3J5IGlzIHNoYWxsb3csIGlnbm9yaW5n IC0tbG9jYWwiKSk7Cj7CoMKgwqDCoMKgwqAgaXNfbG9jYWwgPSAwOwo+wqDCoMKgwqAgQEAgZmV0 Y2gtcGFjay5jOiBzdGF0aWMgc3RydWN0IHJlZiAqZG9fZmV0Y2hfcGFjayhzdHJ1Y3QgZmV0Y2hf cGFja19hcmdzICphcmdzLAo+wqDCoMKgwqDCoMKgCj7CoMKgwqDCoMKgwqAgaWYgKGFyZ3MtPnN0 YXRlbGVzc19ycGMpCj7CoMKgwqDCoMKgwqAgcGFja2V0X2ZsdXNoKGZkWzFdKTsKPsKgwqDCoMKg IC0rCj7CoMKgwqDCoCAtKwlpZiAoIWFyZ3MtPmRlZXBlbiAmJiBhcmdzLT5yZW1vdGVfc2hhbGxv dykKPsKgwqDCoMKgIC0rCWRpZSgic291cmNlIHJlcG9zaXRvcnkgaXMgc2hhbGxvdywgcmVqZWN0 IHRvIGNsb25lLiIpOwo+wqDCoMKgwqDCoCArCj7CoMKgwqDCoMKgwqAgaWYgKGFyZ3MtPmRlZXBl bikKPsKgwqDCoMKgwqDCoCBzZXR1cF9hbHRlcm5hdGVfc2hhbGxvdygmc2hhbGxvd19sb2NrLCAm YWx0ZXJuYXRlX3NoYWxsb3dfZmlsZSwKPsKgwqDCoMKgwqDCoCBOVUxMKTsKPsKgwqDCoMKgICst CWVsc2UgaWYgKHNpLT5ucl9vdXJzIHx8IHNpLT5ucl90aGVpcnMpCj7CoMKgwqDCoCArKwllbHNl IGlmIChzaS0+bnJfb3VycyB8fCBzaS0+bnJfdGhlaXJzKSB7Cj7CoMKgwqDCoCArKwlpZiAoYXJn cy0+cmVtb3RlX3NoYWxsb3cpCj7CoMKgwqDCoCArKwlkaWUoInNvdXJjZSByZXBvc2l0b3J5IGlz IHNoYWxsb3csIHJlamVjdCB0byBjbG9uZS4iKTsKPsKgwqDCoMKgICsrCWVsc2UKPsKgwqDCoMKg ICsrCXdhcm5pbmcoInNvdXJjZSByZXBvc2l0b3J5IGlzIHNoYWxsb3cuIik7Cj7CoMKgwqDCoCAr IGFsdGVybmF0ZV9zaGFsbG93X2ZpbGUgPSBzZXR1cF90ZW1wb3Jhcnlfc2hhbGxvdyhzaS0+c2hh bGxvdyk7Cj7CoMKgwqDCoCArLQllbHNlCj7CoMKgwqDCoCArKwl9IGVsc2UKPsKgwqDCoMKgICsg YWx0ZXJuYXRlX3NoYWxsb3dfZmlsZSA9IE5VTEw7Cj7CoMKgwqDCoCArIGlmIChnZXRfcGFjayhh cmdzLCBmZCwgcGFja19sb2NrZmlsZXMsIE5VTEwsIHNvdWdodCwgbnJfc291Z2h0LAo+wqDCoMKg wqAgKyDCoMKgwqDCoCAmZ2l0bW9kdWxlc19vaWRzKSkKPsKgwqDCoMKgwqAgQEAgZmV0Y2gtcGFj ay5jOiBzdGF0aWMgdm9pZCByZWNlaXZlX3NoYWxsb3dfaW5mbyhzdHJ1Y3QgZmV0Y2hfcGFja19h cmdzICphcmdzLAo+wqDCoMKgwqAgLSAqIHNoYWxsb3cuIEluIHYwLCByZW1vdGUgcmVmcyB0aGF0 IHJlYWNoIHRoZXNlIG9iamVjdHMgYXJlCj7CoMKgwqDCoMKgwqAgKiByZWplY3RlZCAodW5sZXNz IC0tdXBkYXRlLXNoYWxsb3cgaXMgc2V0KTsgZG8gdGhlIHNhbWUuCj7CoMKgwqDCoMKgwqAgKi8K PsKgwqDCoMKgIC0rCWlmIChhcmdzLT5yZW1vdGVfc2hhbGxvdykKPsKgwqDCoMKgIC0rCWRpZSgi c291cmNlIHJlcG9zaXRvcnkgaXMgc2hhbGxvdywgcmVqZWN0IHRvIGNsb25lLiIpOwo+wqDCoMKg wqDCoMKgIHByZXBhcmVfc2hhbGxvd19pbmZvKHNpLCBzaGFsbG93cyk7Cj7CoMKgwqDCoCAtIGlm IChzaS0+bnJfb3VycyB8fCBzaS0+bnJfdGhlaXJzKQo+wqDCoMKgwqAgKy0JaWYgKHNpLT5ucl9v dXJzIHx8IHNpLT5ucl90aGVpcnMpCj7CoMKgwqDCoCArKwlpZiAoc2ktPm5yX291cnMgfHwgc2kt Pm5yX3RoZWlycykgewo+wqDCoMKgwqAgKysJaWYgKGFyZ3MtPnJlbW90ZV9zaGFsbG93KQo+wqDC oMKgwqAgKysJZGllKCJzb3VyY2UgcmVwb3NpdG9yeSBpcyBzaGFsbG93LCByZWplY3QgdG8gY2xv bmUuIik7Cj7CoMKgwqDCoCArKwllbHNlCj7CoMKgwqDCoCArKwl3YXJuaW5nKCJzb3VyY2UgcmVw b3NpdG9yeSBpcyBzaGFsbG93LiIpOwo+wqDCoMKgwqDCoMKgIGFsdGVybmF0ZV9zaGFsbG93X2Zp bGUgPQo+wqDCoMKgwqAgKyBzZXR1cF90ZW1wb3Jhcnlfc2hhbGxvdyhzaS0+c2hhbGxvdyk7Cj7C oMKgwqDCoCArLQllbHNlCj7CoMKgwqDCoCArKwl9IGVsc2UKPsKgwqDCoMKgICsgYWx0ZXJuYXRl X3NoYWxsb3dfZmlsZSA9IE5VTEw7Cj7CoMKgwqDCoCArIH0gZWxzZSB7Cj7CoMKgwqDCoCArIGFs dGVybmF0ZV9zaGFsbG93X2ZpbGUgPSBOVUxMOwo+wqDCoMKgwqDCoAo+wqDCoMKgwqDCoMKgICMj IGZldGNoLXBhY2suaCAjIwo+wqDCoMKgwqDCoCBAQCBmZXRjaC1wYWNrLmg6IHN0cnVjdCBmZXRj aF9wYWNrX2FyZ3Mgewo+wqDCoMKgwqAgQEAgdC90NTYxMS1jbG9uZS1jb25maWcuc2g6IHRlc3Rf ZXhwZWN0X3N1Y2Nlc3MgJ2Nsb25lIC1jIHJlbW90ZS48cmVtb3RlPi5mZXRjaD08cmUKPsKgwqDC oMKgwqDCoCB0ZXN0X2NvbW1pdCBhdHRyaWJ1dGVzIC5naXRhdHRyaWJ1dGVzICIiICYmCj7CoMKg wqDCoMKgwqAgcm0gLXJmIGNoaWxkICYmCj7CoMKgwqDCoMKgCj7CoMKgwqDCoCAtICMjIHRyYW5z cG9ydC1oZWxwZXIuYyAjIwo+wqDCoMKgwqAgLUBAIHRyYW5zcG9ydC1oZWxwZXIuYzogc3RhdGlj IGNvbnN0IGNoYXIgKmJvb2xlYW5fb3B0aW9uc1tdID0gewo+wqDCoMKgwqAgLSBUUkFOU19PUFRf VEhJTiwKPsKgwqDCoMKgIC0gVFJBTlNfT1BUX0tFRVAsCj7CoMKgwqDCoCAtIFRSQU5TX09QVF9G T0xMT1dUQUdTLAo+wqDCoMKgwqAgLS0JVFJBTlNfT1BUX0RFRVBFTl9SRUxBVElWRQo+wqDCoMKg wqAgLSsJVFJBTlNfT1BUX0RFRVBFTl9SRUxBVElWRSwKPsKgwqDCoMKgIC0rCVRSQU5TX09QVF9S RUpFQ1RfU0hBTExPVwo+wqDCoMKgwqAgLSB9Owo+wqDCoMKgwqAgLQo+wqDCoMKgwqAgLSBzdGF0 aWMgaW50IHN0cmJ1Zl9zZXRfaGVscGVyX29wdGlvbihzdHJ1Y3QgaGVscGVyX2RhdGEgKmRhdGEs Cj7CoMKgwqDCoCAtCj7CoMKgwqDCoMKgwqAgIyMgdHJhbnNwb3J0LmMgIyMKPsKgwqDCoMKgwqAg QEAgdHJhbnNwb3J0LmM6IHN0YXRpYyBpbnQgc2V0X2dpdF9vcHRpb24oc3RydWN0IGdpdF90cmFu c3BvcnRfb3B0aW9ucyAqb3B0cywKPsKgwqDCoMKgwqDCoCBsaXN0X29iamVjdHNfZmlsdGVyX2Rp ZV9pZl9wb3B1bGF0ZWQoJm9wdHMtPmZpbHRlcl9vcHRpb25zKTsKPsKgwqDCoMKgIEBAIHRyYW5z cG9ydC5oOiB2b2lkIHRyYW5zcG9ydF9jaGVja19hbGxvd2VkKGNvbnN0IGNoYXIgKnR5cGUpOwo+ wqDCoMKgwqDCoMKgIC8qIEFnZ3Jlc3NpdmVseSBmZXRjaCBhbm5vdGF0ZWQgdGFncyBpZiBwb3Nz aWJsZSAqLwo+wqDCoMKgwqDCoMKgICNkZWZpbmUgVFJBTlNfT1BUX0ZPTExPV1RBR1MgImZvbGxv d3RhZ3MiCj7CoMKgwqDCoMKgwqAKPsKgwqDCoMKgIC0rLyogcmVqZWN0IHNoYWxsb3cgcmVwbyB0 cmFuc3BvcnTCoCAqLwo+wqDCoMKgwqAgKysvKiBSZWplY3Qgc2hhbGxvdyByZXBvIHRyYW5zcG9y dCAqLwo+wqDCoMKgwqDCoCArI2RlZmluZSBUUkFOU19PUFRfUkVKRUNUX1NIQUxMT1cgInJlamVj dHNoYWxsb3ciCj7CoMKgwqDCoMKgICsKPsKgwqDCoMKgwqDCoCAvKiBBY2NlcHQgcmVmcyB0aGF0 IG1heSB1cGRhdGUgLmdpdC9zaGFsbG93IHdpdGhvdXQgLS1kZXB0aCAqLwo+Cj4KPiBEb2N1bWVu dGF0aW9uL2NvbmZpZy9jbG9uZS50eHQgfMKgIDQgKysrCj4gRG9jdW1lbnRhdGlvbi9naXQtY2xv bmUudHh0wqDCoMKgIHzCoCA3ICsrKystCj4gYnVpbHRpbi9jbG9uZS5jwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHwgMjQgKysrKysrKysrKysrKysrKysKPiBmZXRjaC1wYWNrLmPCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCAxNyArKysrKysrKystLS0KPiBmZXRj aC1wYWNrLmjCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgIDEgKwo+IHQv dDU2MDYtY2xvbmUtb3B0aW9ucy5zaMKgwqDCoMKgwqDCoCB8IDQ3ICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysKPiB0L3Q1NjExLWNsb25lLWNvbmZpZy5zaMKgwqDCoMKgwqDCoMKg IHwgMzIgKysrKysrKysrKysrKysrKysrKysrKysKPiB0cmFuc3BvcnQuY8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoCA0ICsrKwo+IHRyYW5zcG9ydC5owqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgIDQgKysrCj4gOSBmaWxlcyBjaGFuZ2Vk LCAxMzUgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKPgo+ZGlmZiAtLWdpdCBhL0RvY3Vt ZW50YXRpb24vY29uZmlnL2Nsb25lLnR4dCBiL0RvY3VtZW50YXRpb24vY29uZmlnL2Nsb25lLnR4 dAo+aW5kZXggNDdkZTM2YTVmZWRmLi43YmNmYmQxOGE1MmEgMTAwNjQ0Cj4tLS0gYS9Eb2N1bWVu dGF0aW9uL2NvbmZpZy9jbG9uZS50eHQKPisrKyBiL0RvY3VtZW50YXRpb24vY29uZmlnL2Nsb25l LnR4dAo+QEAgLTIsMyArMiw3IEBAIGNsb25lLmRlZmF1bHRSZW1vdGVOYW1lOjoKPiBUaGUgbmFt ZSBvZiB0aGUgcmVtb3RlIHRvIGNyZWF0ZSB3aGVuIGNsb25pbmcgYSByZXBvc2l0b3J5LsKgIERl ZmF1bHRzIHRvCj4gYG9yaWdpbmAsIGFuZCBjYW4gYmUgb3ZlcnJpZGRlbiBieSBwYXNzaW5nIHRo ZSBgLS1vcmlnaW5gIGNvbW1hbmQtbGluZQo+IG9wdGlvbiB0byBsaW5rZ2l0OmdpdC1jbG9uZVsx XS4KPisKPitjbG9uZS5yZWplY3RTaGFsbG93OjoKPisJUmVqZWN0IHRvIGNsb25lIGEgcmVwb3Np dG9yeSBpZiBpdCBpcyBhIHNoYWxsb3cgb25lLCBjYW4gYmUgb3ZlcnJpZGRlbiBieQo+KwlwYXNz aW5nIG9wdGlvbiBgLS1yZWplY3Qtc2hhbGxvd2AgaW4gY29tbWFuZCBsaW5lLiBTZWUgbGlua2dp dDpnaXQtY2xvbmVbMV0KPmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1jbG9uZS50eHQg Yi9Eb2N1bWVudGF0aW9uL2dpdC1jbG9uZS50eHQKPmluZGV4IDAyZDljMTljZWM3NS4uMGFkYzk4 ZmE3ZWVlIDEwMDY0NAo+LS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtY2xvbmUudHh0Cj4rKysgYi9E b2N1bWVudGF0aW9uL2dpdC1jbG9uZS50eHQKPkBAIC0xNSw3ICsxNSw3IEBAIFNZTk9QU0lTCj4g wqAgWy0tZGlzc29jaWF0ZV0gWy0tc2VwYXJhdGUtZ2l0LWRpciA8Z2l0IGRpcj5dCj4gwqAgWy0t ZGVwdGggPGRlcHRoPl0gWy0tW25vLV1zaW5nbGUtYnJhbmNoXSBbLS1uby10YWdzXQo+IMKgIFst LXJlY3Vyc2Utc3VibW9kdWxlc1s9PHBhdGhzcGVjPl1dIFstLVtuby1dc2hhbGxvdy1zdWJtb2R1 bGVzXQo+LQnCoCBbLS1bbm8tXXJlbW90ZS1zdWJtb2R1bGVzXSBbLS1qb2JzIDxuPl0gWy0tc3Bh cnNlXQo+KwnCoCBbLS1bbm8tXXJlbW90ZS1zdWJtb2R1bGVzXSBbLS1qb2JzIDxuPl0gWy0tc3Bh cnNlXSBbLS1bbm8tXXJlamVjdC1zaGFsbG93XQo+IMKgIFstLWZpbHRlcj08ZmlsdGVyPl0gWy0t XSA8cmVwb3NpdG9yeT4KPiDCoCBbPGRpcmVjdG9yeT5dCj4KPkBAIC0xNDksNiArMTQ5LDExIEBA IG9iamVjdHMgZnJvbSB0aGUgc291cmNlIHJlcG9zaXRvcnkgaW50byBhIHBhY2sgaW4gdGhlIGNs b25lZCByZXBvc2l0b3J5Lgo+IC0tbm8tY2hlY2tvdXQ6Ogo+IE5vIGNoZWNrb3V0IG9mIEhFQUQg aXMgcGVyZm9ybWVkIGFmdGVyIHRoZSBjbG9uZSBpcyBjb21wbGV0ZS4KPgo+Ky0tW25vLV1yZWpl Y3Qtc2hhbGxvdzo6Cj4rCUZhaWwgaWYgdGhlIHNvdXJjZSByZXBvc2l0b3J5IGlzIGEgc2hhbGxv dyByZXBvc2l0b3J5Lgo+KwlUaGUgJ2Nsb25lLnJlamVjdFNoYWxsb3cnIGNvbmZpZ3VyYXRpb24g dmFyaWFibGUgY2FuIGJlIHVzZWQgdG8KPisJZ2l2ZSB0aGUgZGVmYXVsdC4KPisKPiAtLWJhcmU6 Ogo+IE1ha2UgYSAnYmFyZScgR2l0IHJlcG9zaXRvcnkuwqAgVGhhdCBpcywgaW5zdGVhZCBvZgo+ IGNyZWF0aW5nIGA8ZGlyZWN0b3J5PmAgYW5kIHBsYWNpbmcgdGhlIGFkbWluaXN0cmF0aXZlCj5k aWZmIC0tZ2l0IGEvYnVpbHRpbi9jbG9uZS5jIGIvYnVpbHRpbi9jbG9uZS5jCj5pbmRleCA1MWU4 NDRhMmRlMGEuLjVjNjQ4MzdlOGY3YiAxMDA2NDQKPi0tLSBhL2J1aWx0aW4vY2xvbmUuYwo+Kysr IGIvYnVpbHRpbi9jbG9uZS5jCj5AQCAtNTAsNiArNTAsOCBAQCBzdGF0aWMgaW50IG9wdGlvbl9u b19jaGVja291dCwgb3B0aW9uX2JhcmUsIG9wdGlvbl9taXJyb3IsIG9wdGlvbl9zaW5nbGVfYnJh bmNoCj4gc3RhdGljIGludCBvcHRpb25fbG9jYWwgPSAtMSwgb3B0aW9uX25vX2hhcmRsaW5rcywg b3B0aW9uX3NoYXJlZDsKPiBzdGF0aWMgaW50IG9wdGlvbl9ub190YWdzOwo+IHN0YXRpYyBpbnQg b3B0aW9uX3NoYWxsb3dfc3VibW9kdWxlczsKPitzdGF0aWMgaW50IG9wdGlvbl9zaGFsbG93ID0g LTE7wqDCoMKgIC8qIHVuc3BlY2lmaWVkICovCj4rc3RhdGljIGludCBjb25maWdfc2hhbGxvdyA9 IC0xO8KgwqDCoCAvKiB1bnNwZWNpZmllZCAqLwo+IHN0YXRpYyBpbnQgZGVlcGVuOwo+IHN0YXRp YyBjaGFyICpvcHRpb25fdGVtcGxhdGUsICpvcHRpb25fZGVwdGgsICpvcHRpb25fc2luY2U7Cj4g c3RhdGljIGNoYXIgKm9wdGlvbl9vcmlnaW4gPSBOVUxMOwo+QEAgLTkwLDYgKzkyLDggQEAgc3Rh dGljIHN0cnVjdCBvcHRpb24gYnVpbHRpbl9jbG9uZV9vcHRpb25zW10gPSB7Cj4gT1BUX19WRVJC T1NJVFkoJm9wdGlvbl92ZXJib3NpdHkpLAo+IE9QVF9CT09MKDAsICJwcm9ncmVzcyIsICZvcHRp b25fcHJvZ3Jlc3MsCj4gTl8oImZvcmNlIHByb2dyZXNzIHJlcG9ydGluZyIpKSwKPisJT1BUX0JP T0woMCwgInJlamVjdC1zaGFsbG93IiwgJm9wdGlvbl9zaGFsbG93LAo+KwlOXygiZG9uJ3QgY2xv bmUgc2hhbGxvdyByZXBvc2l0b3J5IikpLAo+IE9QVF9CT09MKCduJywgIm5vLWNoZWNrb3V0Iiwg Jm9wdGlvbl9ub19jaGVja291dCwKPiBOXygiZG9uJ3QgY3JlYXRlIGEgY2hlY2tvdXQiKSksCj4g T1BUX0JPT0woMCwgImJhcmUiLCAmb3B0aW9uX2JhcmUsIE5fKCJjcmVhdGUgYSBiYXJlIHJlcG9z aXRvcnkiKSksCj5AQCAtODU4LDYgKzg2Miw5IEBAIHN0YXRpYyBpbnQgZ2l0X2Nsb25lX2NvbmZp Zyhjb25zdCBjaGFyICprLCBjb25zdCBjaGFyICp2LCB2b2lkICpjYikKPiBmcmVlKHJlbW90ZV9u YW1lKTsKPiByZW1vdGVfbmFtZSA9IHhzdHJkdXAodik7Cj4gfQo+KwlpZiAoIXN0cmNtcChrLCAi Y2xvbmUucmVqZWN0c2hhbGxvdyIpKQo+Kwljb25maWdfc2hhbGxvdyA9IGdpdF9jb25maWdfYm9v bChrLCB2KTsKPisKPiByZXR1cm4gZ2l0X2RlZmF1bHRfY29uZmlnKGssIHYsIGNiKTsKPiB9Cj4K PkBAIC05NjMsNiArOTcwLDcgQEAgc3RhdGljIGludCBwYXRoX2V4aXN0cyhjb25zdCBjaGFyICpw YXRoKQo+IGludCBjbWRfY2xvbmUoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2LCBjb25zdCBj aGFyICpwcmVmaXgpCj4gewo+IGludCBpc19idW5kbGUgPSAwLCBpc19sb2NhbDsKPisJaW50IHJl amVjdF9zaGFsbG93ID0gMDsKPiBjb25zdCBjaGFyICpyZXBvX25hbWUsICpyZXBvLCAqd29ya190 cmVlLCAqZ2l0X2RpcjsKPiBjaGFyICpwYXRoLCAqZGlyLCAqZGlzcGxheV9yZXBvID0gTlVMTDsK PiBpbnQgZGVzdF9leGlzdHMsIHJlYWxfZGVzdF9leGlzdHMgPSAwOwo+QEAgLTExNTYsNiArMTE2 NCwxNiBAQCBpbnQgY21kX2Nsb25lKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndiwgY29uc3Qg Y2hhciAqcHJlZml4KQo+ICovCj4gZ2l0X2NvbmZpZyhnaXRfY2xvbmVfY29uZmlnLCBOVUxMKTsK Pgo+KwkvKgo+KwkqIElmIG9wdGlvbl9zaGFsbG93IGlzIHNwZWNpZmllZCBmcm9tIENMSSBvcHRp b24sCj4rCSogaWdub3JlIGNvbmZpZ19zaGFsbG93IGZyb20gZ2l0X2Nsb25lX2NvbmZpZy4KPisJ Ki8KPisJaWYgKGNvbmZpZ19zaGFsbG93ICE9IC0xKQo+KwlyZWplY3Rfc2hhbGxvdyA9IGNvbmZp Z19zaGFsbG93Owo+Kwo+KwlpZiAob3B0aW9uX3NoYWxsb3cgIT0gLTEpCj4rCXJlamVjdF9zaGFs bG93ID0gb3B0aW9uX3NoYWxsb3c7Cj4rCj4gLyoKPiAqIGFwcGx5IHRoZSByZW1vdGUgbmFtZSBw cm92aWRlZCBieSAtLW9yaWdpbiBvbmx5IGFmdGVyIHRoaXMgc2Vjb25kCj4gKiBjYWxsIHRvIGdp dF9jb25maWcsIHRvIGVuc3VyZSBpdCBvdmVycmlkZXMgYWxsIGNvbmZpZy1iYXNlZCB2YWx1ZXMu Cj5AQCAtMTIxNiw2ICsxMjM0LDEwIEBAIGludCBjbWRfY2xvbmUoaW50IGFyZ2MsIGNvbnN0IGNo YXIgKiphcmd2LCBjb25zdCBjaGFyICpwcmVmaXgpCj4gaWYgKGZpbHRlcl9vcHRpb25zLmNob2lj ZSkKPiB3YXJuaW5nKF8oIi0tZmlsdGVyIGlzIGlnbm9yZWQgaW4gbG9jYWwgY2xvbmVzOyB1c2Ug ZmlsZTovLyBpbnN0ZWFkLiIpKTsKPiBpZiAoIWFjY2Vzcyhta3BhdGgoIiVzL3NoYWxsb3ciLCBw YXRoKSwgRl9PSykpIHsKPisJaWYgKHJlamVjdF9zaGFsbG93KQo+KwlkaWUoInNvdXJjZSByZXBv c2l0b3J5IGlzIHNoYWxsb3csIHJlamVjdCB0byBjbG9uZS4iKTsKPisJZWxzZQo+Kwl3YXJuaW5n KCJzb3VyY2UgcmVwb3NpdG9yeSBpcyBzaGFsbG93LiIpOwo+IGlmIChvcHRpb25fbG9jYWwgPiAw KQo+IHdhcm5pbmcoXygic291cmNlIHJlcG9zaXRvcnkgaXMgc2hhbGxvdywgaWdub3JpbmcgLS1s b2NhbCIpKTsKPiBpc19sb2NhbCA9IDA7Cj5AQCAtMTIyNyw2ICsxMjQ5LDggQEAgaW50IGNtZF9j bG9uZShpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YsIGNvbnN0IGNoYXIgKnByZWZpeCkKPgo+ IHRyYW5zcG9ydF9zZXRfb3B0aW9uKHRyYW5zcG9ydCwgVFJBTlNfT1BUX0tFRVAsICJ5ZXMiKTsK Pgo+KwlpZiAocmVqZWN0X3NoYWxsb3cpCj4rCXRyYW5zcG9ydF9zZXRfb3B0aW9uKHRyYW5zcG9y dCwgVFJBTlNfT1BUX1JFSkVDVF9TSEFMTE9XLCAiMSIpOwo+IGlmIChvcHRpb25fZGVwdGgpCj4g dHJhbnNwb3J0X3NldF9vcHRpb24odHJhbnNwb3J0LCBUUkFOU19PUFRfREVQVEgsCj4gwqDCoMKg wqAgb3B0aW9uX2RlcHRoKTsKPmRpZmYgLS1naXQgYS9mZXRjaC1wYWNrLmMgYi9mZXRjaC1wYWNr LmMKPmluZGV4IDBjYjU5YWNjNDg2Ni4uODYwZmY0NWQ0NmU3IDEwMDY0NAo+LS0tIGEvZmV0Y2gt cGFjay5jCj4rKysgYi9mZXRjaC1wYWNrLmMKPkBAIC0xMTI2LDEyICsxMTI2LDE3IEBAIHN0YXRp YyBzdHJ1Y3QgcmVmICpkb19mZXRjaF9wYWNrKHN0cnVjdCBmZXRjaF9wYWNrX2FyZ3MgKmFyZ3Ms Cj4KPiBpZiAoYXJncy0+c3RhdGVsZXNzX3JwYykKPiBwYWNrZXRfZmx1c2goZmRbMV0pOwo+Kwo+ IGlmIChhcmdzLT5kZWVwZW4pCj4gc2V0dXBfYWx0ZXJuYXRlX3NoYWxsb3coJnNoYWxsb3dfbG9j aywgJmFsdGVybmF0ZV9zaGFsbG93X2ZpbGUsCj4gTlVMTCk7Cj4tCWVsc2UgaWYgKHNpLT5ucl9v dXJzIHx8IHNpLT5ucl90aGVpcnMpCj4rCWVsc2UgaWYgKHNpLT5ucl9vdXJzIHx8IHNpLT5ucl90 aGVpcnMpIHsKPisJaWYgKGFyZ3MtPnJlbW90ZV9zaGFsbG93KQo+KwlkaWUoInNvdXJjZSByZXBv c2l0b3J5IGlzIHNoYWxsb3csIHJlamVjdCB0byBjbG9uZS4iKTsKPisJZWxzZQo+Kwl3YXJuaW5n KCJzb3VyY2UgcmVwb3NpdG9yeSBpcyBzaGFsbG93LiIpOwo+IGFsdGVybmF0ZV9zaGFsbG93X2Zp bGUgPSBzZXR1cF90ZW1wb3Jhcnlfc2hhbGxvdyhzaS0+c2hhbGxvdyk7Cj4tCWVsc2UKPisJfSBl bHNlCj4gYWx0ZXJuYXRlX3NoYWxsb3dfZmlsZSA9IE5VTEw7Cj4gaWYgKGdldF9wYWNrKGFyZ3Ms IGZkLCBwYWNrX2xvY2tmaWxlcywgTlVMTCwgc291Z2h0LCBucl9zb3VnaHQsCj4gwqDCoMKgwqAg JmdpdG1vZHVsZXNfb2lkcykpCj5AQCAtMTQ5OCwxMCArMTUwMywxNCBAQCBzdGF0aWMgdm9pZCBy ZWNlaXZlX3NoYWxsb3dfaW5mbyhzdHJ1Y3QgZmV0Y2hfcGFja19hcmdzICphcmdzLAo+ICogcmVq ZWN0ZWQgKHVubGVzcyAtLXVwZGF0ZS1zaGFsbG93IGlzIHNldCk7IGRvIHRoZSBzYW1lLgo+ICov Cj4gcHJlcGFyZV9zaGFsbG93X2luZm8oc2ksIHNoYWxsb3dzKTsKPi0JaWYgKHNpLT5ucl9vdXJz IHx8IHNpLT5ucl90aGVpcnMpCj4rCWlmIChzaS0+bnJfb3VycyB8fCBzaS0+bnJfdGhlaXJzKSB7 Cj4rCWlmIChhcmdzLT5yZW1vdGVfc2hhbGxvdykKPisJZGllKCJzb3VyY2UgcmVwb3NpdG9yeSBp cyBzaGFsbG93LCByZWplY3QgdG8gY2xvbmUuIik7Cj4rCWVsc2UKPisJd2FybmluZygic291cmNl IHJlcG9zaXRvcnkgaXMgc2hhbGxvdy4iKTsKPiBhbHRlcm5hdGVfc2hhbGxvd19maWxlID0KPiBz ZXR1cF90ZW1wb3Jhcnlfc2hhbGxvdyhzaS0+c2hhbGxvdyk7Cj4tCWVsc2UKPisJfSBlbHNlCj4g YWx0ZXJuYXRlX3NoYWxsb3dfZmlsZSA9IE5VTEw7Cj4gfSBlbHNlIHsKPiBhbHRlcm5hdGVfc2hh bGxvd19maWxlID0gTlVMTDsKPmRpZmYgLS1naXQgYS9mZXRjaC1wYWNrLmggYi9mZXRjaC1wYWNr LmgKPmluZGV4IDczNmEzZGFlNDY3YS4uNmU0ZjhmMGQ3MzhjIDEwMDY0NAo+LS0tIGEvZmV0Y2gt cGFjay5oCj4rKysgYi9mZXRjaC1wYWNrLmgKPkBAIC0zOSw2ICszOSw3IEBAIHN0cnVjdCBmZXRj aF9wYWNrX2FyZ3Mgewo+IHVuc2lnbmVkIHNlbGZfY29udGFpbmVkX2FuZF9jb25uZWN0ZWQ6MTsK PiB1bnNpZ25lZCBjbG9uaW5nOjE7Cj4gdW5zaWduZWQgdXBkYXRlX3NoYWxsb3c6MTsKPisJdW5z aWduZWQgcmVtb3RlX3NoYWxsb3c6MTsKPiB1bnNpZ25lZCBkZWVwZW46MTsKPgo+IC8qCj5kaWZm IC0tZ2l0IGEvdC90NTYwNi1jbG9uZS1vcHRpb25zLnNoIGIvdC90NTYwNi1jbG9uZS1vcHRpb25z LnNoCj5pbmRleCA1MmU1Nzg5ZmIwNTAuLjYxNzBkMDUxMzIyNyAxMDA3NTUKPi0tLSBhL3QvdDU2 MDYtY2xvbmUtb3B0aW9ucy5zaAo+KysrIGIvdC90NTYwNi1jbG9uZS1vcHRpb25zLnNoCj5AQCAt NSw2ICs1LDggQEAgR0lUX1RFU1RfREVGQVVMVF9JTklUSUFMX0JSQU5DSF9OQU1FPW1haW4KPiBl eHBvcnQgR0lUX1RFU1RfREVGQVVMVF9JTklUSUFMX0JSQU5DSF9OQU1FCj4KPiAuIC4vdGVzdC1s aWIuc2gKPisuICIkVEVTVF9ESVJFQ1RPUlkiL2xpYi1odHRwZC5zaAo+K3N0YXJ0X2h0dHBkCj4K PiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXR1cCcgJwo+Cj5AQCAtNDUsNiArNDcsNTEgQEAgdGVz dF9leHBlY3Rfc3VjY2VzcyAnZGlzYWxsb3dzIC0tYmFyZSB3aXRoIC0tc2VwYXJhdGUtZ2l0LWRp cicgJwo+Cj4gJwo+Cj4rdGVzdF9leHBlY3Rfc3VjY2VzcyAnZmFpbCB0byBjbG9uZSBodHRwIHNo YWxsb3cgcmVwb3NpdG9yeScgJwo+KwlnaXQgY2xvbmUgLS1kZXB0aD0xIC0tbm8tbG9jYWwgcGFy ZW50IHNoYWxsb3ctcmVwbyAmJgo+KwlnaXQgY2xvbmUgLS1iYXJlIC0tbm8tbG9jYWwgc2hhbGxv dy1yZXBvICIkSFRUUERfRE9DVU1FTlRfUk9PVF9QQVRIL3JlcG8uZ2l0IiAmJgo+Kwl0ZXN0X211 c3RfZmFpbCBnaXQgY2xvbmUgLS1yZWplY3Qtc2hhbGxvdyAkSFRUUERfVVJML3NtYXJ0L3JlcG8u Z2l0IG91dCAyPmVyciAmJgo+Kwl0ZXN0X2kxOG5ncmVwIC1lICJzb3VyY2UgcmVwb3NpdG9yeSBp cyBzaGFsbG93LCByZWplY3QgdG8gY2xvbmUuIiBlcnIKPisKPisnCj4rCj4rdGVzdF9leHBlY3Rf c3VjY2VzcyAnZmFpbCB0byBjbG9uZSBzaGFsbG93IHJlcG9zaXRvcnknICcKPisJcm0gLXJmIHNo YWxsb3ctcmVwbyAmJgo+KwlnaXQgY2xvbmUgLS1kZXB0aD0xIC0tbm8tbG9jYWwgcGFyZW50IHNo YWxsb3ctcmVwbyAmJgo+Kwl0ZXN0X211c3RfZmFpbCBnaXQgY2xvbmUgLS1yZWplY3Qtc2hhbGxv dyBzaGFsbG93LXJlcG8gb3V0IDI+ZXJyICYmCj4rCXRlc3RfaTE4bmdyZXAgLWUgInNvdXJjZSBy ZXBvc2l0b3J5IGlzIHNoYWxsb3csIHJlamVjdCB0byBjbG9uZS4iIGVycgo+Kwo+KycKPisKPit0 ZXN0X2V4cGVjdF9zdWNjZXNzICdmYWlsIHRvIGNsb25lIG5vbi1sb2NhbCBzaGFsbG93IHJlcG9z aXRvcnknICcKPisJcm0gLXJmIHNoYWxsb3ctcmVwbyAmJgo+KwlnaXQgY2xvbmUgLS1kZXB0aD0x IC0tbm8tbG9jYWwgcGFyZW50IHNoYWxsb3ctcmVwbyAmJgo+Kwl0ZXN0X211c3RfZmFpbCBnaXQg Y2xvbmUgLS1yZWplY3Qtc2hhbGxvdyAtLW5vLWxvY2FsIHNoYWxsb3ctcmVwbyBvdXQgMj5lcnIg JiYKPisJdGVzdF9pMThuZ3JlcCAtZSAic291cmNlIHJlcG9zaXRvcnkgaXMgc2hhbGxvdywgcmVq ZWN0IHRvIGNsb25lLiIgZXJyCj4rCj4rJwo+Kwo+K3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2Nsb25l IHNoYWxsb3cgcmVwb3NpdG9yeSB3aXRoIC0tbm8tcmVqZWN0LXNoYWxsb3cnICcKPisJcm0gLXJm IHNoYWxsb3ctcmVwbyAmJgo+KwlnaXQgY2xvbmUgLS1kZXB0aD0xIC0tbm8tbG9jYWwgcGFyZW50 IHNoYWxsb3ctcmVwbyAmJgo+KwlnaXQgY2xvbmUgLS1uby1yZWplY3Qtc2hhbGxvdyAtLW5vLWxv Y2FsIHNoYWxsb3ctcmVwbyBjbG9uZS1yZXBvCj4rCj4rJwo+Kwo+K3Rlc3RfZXhwZWN0X3N1Y2Nl c3MgJ2Nsb25lIG5vcm1hbCByZXBvc2l0b3J5IHdpdGggLS1yZWplY3Qtc2hhbGxvdycgJwo+Kwly bSAtcmYgY2xvbmUtcmVwbyAmJgo+KwlnaXQgY2xvbmUgLS1uby1sb2NhbCBwYXJlbnQgbm9ybWFs LXJlcG8gJiYKPisJZ2l0IGNsb25lIC0tcmVqZWN0LXNoYWxsb3cgLS1uby1sb2NhbCBub3JtYWwt cmVwbyBjbG9uZS1yZXBvCj4rCj4rJwo+Kwo+K3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Vuc3BlY2lm aWVkIGFueSBjb25maWdzIG9yIG9wdGlvbnMnICcKPisJcm0gLXJmIHNoYWxsb3ctcmVwbyBjbG9u ZS1yZXBvICYmCj4rCWdpdCBjbG9uZSAtLWRlcHRoPTEgLS1uby1sb2NhbCBwYXJlbnQgc2hhbGxv dy1yZXBvICYmCj4rCWdpdCBjbG9uZSBzaGFsbG93LXJlcG8gY2xvbmUtcmVwbwo+Kwo+KycKPisK PiB0ZXN0X2V4cGVjdF9zdWNjZXNzICd1c2VzICJvcmlnaW4iIGZvciBkZWZhdWx0IHJlbW90ZSBu YW1lJyAnCj4KPiBnaXQgY2xvbmUgcGFyZW50IGNsb25lLWRlZmF1bHQtb3JpZ2luICYmCj5kaWZm IC0tZ2l0IGEvdC90NTYxMS1jbG9uZS1jb25maWcuc2ggYi90L3Q1NjExLWNsb25lLWNvbmZpZy5z aAo+aW5kZXggOWY1NTViODdlY2RmLi5kYTEwZDNmMTAzNTIgMTAwNzU1Cj4tLS0gYS90L3Q1NjEx LWNsb25lLWNvbmZpZy5zaAo+KysrIGIvdC90NTYxMS1jbG9uZS1jb25maWcuc2gKPkBAIC05NSw2 ICs5NSwzOCBAQCB0ZXN0X2V4cGVjdF9zdWNjZXNzICdjbG9uZSAtYyByZW1vdGUuPHJlbW90ZT4u ZmV0Y2g9PHJlZnNwZWM+IC0tb3JpZ2luPTxuYW1lPicgJwo+IHRlc3RfY21wIGV4cGVjdCBhY3R1 YWwKPiAnCj4KPit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjbG9uZS5yZWplY3RzaGFsbG93PXRydWUg c2hvdWxkIGZhaWwgdG8gY2xvbmUnICcKPisJcm0gLXJmIGNoaWxkICYmCj4rCWdpdCBjbG9uZSAt LWRlcHRoPTEgLS1uby1sb2NhbCAuIGNoaWxkICYmCj4rCXRlc3RfbXVzdF9mYWlsIGdpdCAtYyBj bG9uZS5yZWplY3RzaGFsbG93PXRydWUgY2xvbmUgLS1uby1sb2NhbCBjaGlsZCBvdXQgMj5lcnIg JiYKPisJdGVzdF9pMThuZ3JlcCAtZSAic291cmNlIHJlcG9zaXRvcnkgaXMgc2hhbGxvdywgcmVq ZWN0IHRvIGNsb25lLiIgZXJyCj4rJwo+Kwo+K3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2Nsb25lLnJl amVjdHNoYWxsb3c9ZmFsc2Ugc2hvdWxkIHN1Y2NlZWQnICcKPisJcm0gLXJmIGNoaWxkIG91dCAm Jgo+KwlnaXQgY2xvbmUgLS1kZXB0aD0xIC0tbm8tbG9jYWwgLiBjaGlsZCAmJgo+KwlnaXQgLWMg Y2xvbmUucmVqZWN0c2hhbGxvdz1mYWxzZSBjbG9uZSAtLW5vLWxvY2FsIGNoaWxkIG91dAo+KycK PisKPit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjbG9uZS5yZWplY3RzaGFsbG93PXRydWUgc2hvdWxk IHN1Y2NlZWQgd2l0aCBub3JtYWwgcmVwbycgJwo+KwlybSAtcmYgY2hpbGQgb3V0ICYmCj4rCWdp dCBjbG9uZSAtLW5vLWxvY2FsIC4gY2hpbGQgJiYKPisJZ2l0IC1jIGNsb25lLnJlamVjdHNoYWxs b3c9dHJ1ZSBjbG9uZSAtLW5vLWxvY2FsIGNoaWxkIG91dAo+KycKPisKPit0ZXN0X2V4cGVjdF9z dWNjZXNzICdvcHRpb24gLS1yZWplY3Qtc2hhbGxvdyBvdmVycmlkZSBjbG9uZS5yZWplY3RzaGFs bG93JyAnCj4rCXJtIC1yZiBjaGlsZCBvdXQgJiYKPisJZ2l0IGNsb25lIC0tZGVwdGg9MSAtLW5v LWxvY2FsIC4gY2hpbGQgJiYKPisJdGVzdF9tdXN0X2ZhaWwgZ2l0IC1jIGNsb25lLnJlamVjdHNo YWxsb3c9ZmFsc2UgY2xvbmUgLS1yZWplY3Qtc2hhbGxvdyAtLW5vLWxvY2FsIGNoaWxkIG91dCAy PmVyciAmJgo+Kwl0ZXN0X2kxOG5ncmVwIC1lICJzb3VyY2UgcmVwb3NpdG9yeSBpcyBzaGFsbG93 LCByZWplY3QgdG8gY2xvbmUuIiBlcnIKPisnCj4rCj4rdGVzdF9leHBlY3Rfc3VjY2VzcyAnb3B0 aW9uIC0tbm8tcmVqZWN0LXNoYWxsb3cgb3ZlcnJpZGUgY2xvbmUucmVqZWN0c2hhbGxvdycgJwo+ KwlybSAtcmYgY2hpbGQgb3V0ICYmCj4rCWdpdCBjbG9uZSAtLWRlcHRoPTEgLS1uby1sb2NhbCAu IGNoaWxkICYmCj4rCWdpdCAtYyBjbG9uZS5yZWplY3RzaGFsbG93PXRydWUgY2xvbmUgLS1uby1y ZWplY3Qtc2hhbGxvdyAtLW5vLWxvY2FsIGNoaWxkIG91dAo+KycKPisKPiB0ZXN0X2V4cGVjdF9z dWNjZXNzIE1JTkdXICdjbG9uZSAtYyBjb3JlLmhpZGVEb3RGaWxlcycgJwo+IHRlc3RfY29tbWl0 IGF0dHJpYnV0ZXMgLmdpdGF0dHJpYnV0ZXMgIiIgJiYKPiBybSAtcmYgY2hpbGQgJiYKPmRpZmYg LS1naXQgYS90cmFuc3BvcnQuYyBiL3RyYW5zcG9ydC5jCj5pbmRleCBiMTNmYWI1ZGMzYjEuLjM0 ZmUwMTIyMWVlMCAxMDA2NDQKPi0tLSBhL3RyYW5zcG9ydC5jCj4rKysgYi90cmFuc3BvcnQuYwo+ QEAgLTIzNiw2ICsyMzYsOSBAQCBzdGF0aWMgaW50IHNldF9naXRfb3B0aW9uKHN0cnVjdCBnaXRf dHJhbnNwb3J0X29wdGlvbnMgKm9wdHMsCj4gbGlzdF9vYmplY3RzX2ZpbHRlcl9kaWVfaWZfcG9w dWxhdGVkKCZvcHRzLT5maWx0ZXJfb3B0aW9ucyk7Cj4gcGFyc2VfbGlzdF9vYmplY3RzX2ZpbHRl cigmb3B0cy0+ZmlsdGVyX29wdGlvbnMsIHZhbHVlKTsKPiByZXR1cm4gMDsKPisJfSBlbHNlIGlm ICghc3RyY21wKG5hbWUsIFRSQU5TX09QVF9SRUpFQ1RfU0hBTExPVykpIHsKPisJb3B0cy0+cmVq ZWN0X3NoYWxsb3cgPSAhIXZhbHVlOwo+KwlyZXR1cm4gMDsKPiB9Cj4gcmV0dXJuIDE7Cj4gfQo+ QEAgLTM3MCw2ICszNzMsNyBAQCBzdGF0aWMgaW50IGZldGNoX3JlZnNfdmlhX3BhY2soc3RydWN0 IHRyYW5zcG9ydCAqdHJhbnNwb3J0LAo+IGFyZ3Muc3RhdGVsZXNzX3JwYyA9IHRyYW5zcG9ydC0+ c3RhdGVsZXNzX3JwYzsKPiBhcmdzLnNlcnZlcl9vcHRpb25zID0gdHJhbnNwb3J0LT5zZXJ2ZXJf b3B0aW9uczsKPiBhcmdzLm5lZ290aWF0aW9uX3RpcHMgPSBkYXRhLT5vcHRpb25zLm5lZ290aWF0 aW9uX3RpcHM7Cj4rCWFyZ3MucmVtb3RlX3NoYWxsb3cgPSB0cmFuc3BvcnQtPnNtYXJ0X29wdGlv bnMtPnJlamVjdF9zaGFsbG93Owo+Cj4gaWYgKCFkYXRhLT5nb3RfcmVtb3RlX2hlYWRzKSB7Cj4g aW50IGk7Cj5kaWZmIC0tZ2l0IGEvdHJhbnNwb3J0LmggYi90cmFuc3BvcnQuaAo+aW5kZXggMjRl MTU3OTllNzE0Li40ZDVkYjBhN2YyMmIgMTAwNjQ0Cj4tLS0gYS90cmFuc3BvcnQuaAo+KysrIGIv dHJhbnNwb3J0LmgKPkBAIC0xNCw2ICsxNCw3IEBAIHN0cnVjdCBnaXRfdHJhbnNwb3J0X29wdGlv bnMgewo+IHVuc2lnbmVkIGNoZWNrX3NlbGZfY29udGFpbmVkX2FuZF9jb25uZWN0ZWQgOiAxOwo+ IHVuc2lnbmVkIHNlbGZfY29udGFpbmVkX2FuZF9jb25uZWN0ZWQgOiAxOwo+IHVuc2lnbmVkIHVw ZGF0ZV9zaGFsbG93IDogMTsKPisJdW5zaWduZWQgcmVqZWN0X3NoYWxsb3cgOiAxOwo+IHVuc2ln bmVkIGRlZXBlbl9yZWxhdGl2ZSA6IDE7Cj4KPiAvKiBzZWUgZG9jdW1lbnRhdGlvbiBvZiBjb3Jy ZXNwb25kaW5nIGZsYWcgaW4gZmV0Y2gtcGFjay5oICovCj5AQCAtMTk0LDYgKzE5NSw5IEBAIHZv aWQgdHJhbnNwb3J0X2NoZWNrX2FsbG93ZWQoY29uc3QgY2hhciAqdHlwZSk7Cj4gLyogQWdncmVz c2l2ZWx5IGZldGNoIGFubm90YXRlZCB0YWdzIGlmIHBvc3NpYmxlICovCj4gI2RlZmluZSBUUkFO U19PUFRfRk9MTE9XVEFHUyAiZm9sbG93dGFncyIKPgo+Ky8qIFJlamVjdCBzaGFsbG93IHJlcG8g dHJhbnNwb3J0ICovCj4rI2RlZmluZSBUUkFOU19PUFRfUkVKRUNUX1NIQUxMT1cgInJlamVjdHNo YWxsb3ciCj4rCj4gLyogQWNjZXB0IHJlZnMgdGhhdCBtYXkgdXBkYXRlIC5naXQvc2hhbGxvdyB3 aXRob3V0IC0tZGVwdGggKi8KPiAjZGVmaW5lIFRSQU5TX09QVF9VUERBVEVfU0hBTExPVyAidXBk YXRlc2hhbGxvdyIKPgo+Cj5iYXNlLWNvbW1pdDogZjAxNjIzYjJjOWQxNDIwN2U0OTdiMjFlYmM2 YjNlYzRhZmFmNGI0Ngo+LS0KPmdpdGdpdGdhZGdldAo+