From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by sourceware.org (Postfix) with ESMTPS id 31EFD3858020 for ; Mon, 12 Jun 2023 15:32:45 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 31EFD3858020 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=redhat.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=redhat.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1686583964; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type; bh=F3ATWGyffw4IRA5oSYxTLPiS1RHKB9suGtYGpzVHQ/o=; b=G711LPd5NDwDMVRPSXckSQbQoSlASlxcnTyM7LU2ODGgbl/ILupEMCLSYwJbpmmuJgN9wF M34XutQxJn3iMikKt+2syQAOSkPx+dhhaBBisrJ4Q2a1YZqltn2NVxWXPtBjaspBMyN4Uu W0TPKX3niEse4eeQ6B8sBB0WfxsmyeA= Received: from mail-qt1-f197.google.com (mail-qt1-f197.google.com [209.85.160.197]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-606-66iFGxoaM6-poibUyuzkDw-1; Mon, 12 Jun 2023 11:32:43 -0400 X-MC-Unique: 66iFGxoaM6-poibUyuzkDw-1 Received: by mail-qt1-f197.google.com with SMTP id d75a77b69052e-3f9a7a41baeso45001791cf.1 for ; Mon, 12 Jun 2023 08:32:43 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686583962; x=1689175962; h=subject:from:cc:to:content-language:user-agent:mime-version:date :message-id:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=q0umecH9tKHgRkeEvRIEznQIrI/LlYxiRc4wxX63K7k=; b=Yo3YPZ3L4Tk7DRwTuiHLlOCgpEMq+wdjWp2XsKd7vHNGYIU6QqLIMbRxCPl5XPTTXL 6T/FwFu3/WQUBLxccn6FJM5JZzG6dKzRiYdVNP6c1zjIlLeInkqhfAaDTT6BlDHmE0bV fo1zPcbz7gRpDb+DSyS0rr2qd+fgBEj0U6T9UNxWaFEjJf+TJ5ELI7g0i0IsP21UDlFh ItmMpWxSJBGxhPHf6V0aQyTdASjNOu0bYK1OT3eWs2hWxNZOoapKWPThunkGoEEBUySQ tQSsCUV0+f6zO/xnm5TOJ0P/pDmmi0eyIREulk8SdtH+NKvVQYb6MW3/tWZcpdzOmXAi YXeA== X-Gm-Message-State: AC+VfDz7uFqlnvYnPCI7ngxHQIIo49XZ8u2F68WevhDOlPmQMzw6v4cV +QO1itNmIFe3pZH5f+vN4H4rzXtIwJTie4mceKrLBqHvcsKBWQQjMEHwqWU2nk1uKJWulgcYzYE Gte62OctmLkIRW+pEGCE3A5Zmr9PIwYMhAKOHZzQX6531PmyGwE1v5fIDtu9TVXRz4xmZcj6yzV I8Eg== X-Received: by 2002:ac8:7fc8:0:b0:3f3:845f:122c with SMTP id b8-20020ac87fc8000000b003f3845f122cmr11007393qtk.34.1686583962559; Mon, 12 Jun 2023 08:32:42 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ51ruHhXALpNFLnck75XrvEFfVYmInFfaukVbT0W9S2kLpiVcit0FRziWLIa5ZR4Fg6WOmbwg== X-Received: by 2002:ac8:7fc8:0:b0:3f3:845f:122c with SMTP id b8-20020ac87fc8000000b003f3845f122cmr11007363qtk.34.1686583962143; Mon, 12 Jun 2023 08:32:42 -0700 (PDT) Received: from ?IPV6:2607:fea8:51df:4200::ca58? ([2607:fea8:51df:4200::ca58]) by smtp.gmail.com with ESMTPSA id fy26-20020a05622a5a1a00b003f86bc1753bsm3475201qtb.80.2023.06.12.08.32.41 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 12 Jun 2023 08:32:41 -0700 (PDT) Message-ID: <419f4280-d0c5-7fbe-2dae-4c198b69186e@redhat.com> Date: Mon, 12 Jun 2023 11:32:40 -0400 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.11.0 To: gcc-patches Cc: "hernandez, aldy" From: Andrew MacLeod Subject: [COMMITTED 8/17] - Split pointer based range operators to range-op-ptr.cc X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: multipart/mixed; boundary="------------qixlNdXjykta0Pmz6E04503D" Content-Language: en-US X-Spam-Status: No, score=-12.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,KAM_SHORT,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H5,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE,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: This is a multi-part message in MIME format. --------------qixlNdXjykta0Pmz6E04503D Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit This patch moves all the pointer specific code into a new file range-op-ptr.cc Bootstraps on x86_64-pc-linux-gnu with no regressions.  Pushed. Andrew --------------qixlNdXjykta0Pmz6E04503D Content-Type: text/x-patch; charset=UTF-8; name="0008-Split-pointer-ibased-range-operators-to-range-op-ptr.patch" Content-Disposition: attachment; filename*0="0008-Split-pointer-ibased-range-operators-to-range-op-ptr.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBjYjUxMWQyMjA5ZmEzYTA1ODAxOTgzYTY5NjU2NTY3MzRjMTU5MmM2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXcgTWFjTGVvZCA8YW1hY2xlb2RAcmVkaGF0LmNvbT4K RGF0ZTogU2F0LCAxMCBKdW4gMjAyMyAxNjoxNzo1MSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDgv MTddIFNwbGl0IHBvaW50ZXIgaWJhc2VkIHJhbmdlIG9wZXJhdG9ycyB0byByYW5nZS1vcC1wdHIu Y2MKCk1PdmUgdGhlIHBvaW50ZXIgdGFibGUgYW5kIGFsbCBwb2ludGVyIHNwZWNpZmljIG9wZXJh dG9ycyBpbnRvIGEKbmV3IGZpbGUgZm9yIHBvaW50ZXJzLgoKCSogTWFrZWZpbGUuaW4gKE9CSlMp OiBBZGQgcmFuZ2Utb3AtcHRyLm8uCgkqIHJhbmdlLW9wLW1peGVkLmggKHVwZGF0ZV9rbm93bl9i aXRtYXNrKTogTW92ZSBwcm90b3R5cGUgaGVyZS4KCShtaW51c19vcDFfb3AyX3JlbGF0aW9uX2Vm ZmVjdCk6IE1vdmUgcHJvdG90eXBlIGhlcmUuCgkod2lfaW5jbHVkZXNfemVyb19wKTogTW92ZSBm dW5jdGlvbiB0byBoZXJlLgoJKHdpX3plcm9fcCk6IERpdHRvLgoJKiByYW5nZS1vcC5jYyAodXBk YXRlX2tub3duX2JpdG1hc2spOiBSZW1vdmUgc3RhdGljLgoJKHdpX2luY2x1ZGVzX3plcm9fcCk6 IE1vdmUgdG8gaGVhZGVyLgoJKHdpX3plcm9fcCk6IE1vdmUgdG8gaGVhZGVyLgoJKG1pbnVzX29w MV9vcDJfcmVsYXRpb25fZWZmZWN0KTogUmVtb3ZlIHN0YXRpYy4KCShvcGVyYXRvcl9wb2ludGVy X2RpZmYpOiBNb3ZlIGNsYXNzIGFuZCByb3V0aW5lcyB0byByYW5nZS1vcC1wdHIuY2MuCgkocG9p bnRlcl9wbHVzX29wZXJhdG9yKTogRGl0dG8uCgkocG9pbnRlcl9taW5fbWF4X29wZXJhdG9yKTog RGl0dG8uCgkocG9pbnRlcl9hbmRfb3BlcmF0b3IpOiBEaXR0by4KCShwb2ludGVyX29yX29wZXJh dG9yKTogRGl0dG8uCgkocG9pbnRlcl90YWJsZSk6IERpdHRvLgoJKHJhbmdlX29wX3RhYmxlOjpp bml0aWFsaXplX3BvaW50ZXJfb3BzKTogRGl0dG8uCgkqIHJhbmdlLW9wLXB0ci5jYzogTmV3Lgot LS0KIGdjYy9NYWtlZmlsZS5pbiAgICAgIHwgICAxICsKIGdjYy9yYW5nZS1vcC1taXhlZC5oIHwg IDI1ICsrKysKIGdjYy9yYW5nZS1vcC1wdHIuY2MgIHwgMjg2ICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysKIGdjYy9yYW5nZS1vcC5jYyAgICAgIHwgMjU4ICstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiA0IGZpbGVzIGNoYW5nZWQsIDMxNCBp bnNlcnRpb25zKCspLCAyNTYgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Jh bmdlLW9wLXB0ci5jYwoKZGlmZiAtLWdpdCBhL2djYy9NYWtlZmlsZS5pbiBiL2djYy9NYWtlZmls ZS5pbgppbmRleCAwYzAyZjMxMjk4NS4uNGJlODJlODNiOWUgMTAwNjQ0Ci0tLSBhL2djYy9NYWtl ZmlsZS5pbgorKysgYi9nY2MvTWFrZWZpbGUuaW4KQEAgLTE1ODgsNiArMTU4OCw3IEBAIE9CSlMg PSBcCiAJcmFuZ2UubyBcCiAJcmFuZ2Utb3AubyBcCiAJcmFuZ2Utb3AtZmxvYXQubyBcCisJcmFu Z2Utb3AtcHRyLm8gXAogCXJlYWQtbWQubyBcCiAJcmVhZC1ydGwubyBcCiAJcmVhZC1ydGwtZnVu Y3Rpb24ubyBcCmRpZmYgLS1naXQgYS9nY2MvcmFuZ2Utb3AtbWl4ZWQuaCBiL2djYy9yYW5nZS1v cC1taXhlZC5oCmluZGV4IGNkMTM3YWNkMGU2Li5iMTg4ZjVhNTE2ZSAxMDA2NDQKLS0tIGEvZ2Nj L3JhbmdlLW9wLW1peGVkLmgKKysrIGIvZ2NjL3JhbmdlLW9wLW1peGVkLmgKQEAgLTIyLDYgKzIy LDMxIEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2Vl CiAjaWZuZGVmIEdDQ19SQU5HRV9PUF9NSVhFRF9ICiAjZGVmaW5lIEdDQ19SQU5HRV9PUF9NSVhF RF9ICiAKK3ZvaWQgdXBkYXRlX2tub3duX2JpdG1hc2sgKGlyYW5nZSAmLCB0cmVlX2NvZGUsIGNv bnN0IGlyYW5nZSAmLCBjb25zdCBpcmFuZ2UgJik7Citib29sIG1pbnVzX29wMV9vcDJfcmVsYXRp b25fZWZmZWN0IChpcmFuZ2UgJmxoc19yYW5nZSwgdHJlZSB0eXBlLAorCQkJCSAgICBjb25zdCBp cmFuZ2UgJiwgY29uc3QgaXJhbmdlICYsCisJCQkJICAgIHJlbGF0aW9uX2tpbmQgcmVsKTsKKwor CisvLyBSZXR1cm4gVFJVRSBpZiAwIGlzIHdpdGhpbiBbV01JTiwgV01BWF0uCisKK2lubGluZSBi b29sCit3aV9pbmNsdWRlc196ZXJvX3AgKHRyZWUgdHlwZSwgY29uc3Qgd2lkZV9pbnQgJndtaW4s IGNvbnN0IHdpZGVfaW50ICZ3bWF4KQoreworICBzaWdub3Agc2lnbiA9IFRZUEVfU0lHTiAodHlw ZSk7CisgIHJldHVybiB3aTo6bGVfcCAod21pbiwgMCwgc2lnbikgJiYgd2k6OmdlX3AgKHdtYXgs IDAsIHNpZ24pOworfQorCisvLyBSZXR1cm4gVFJVRSBpZiBbV01JTiwgV01BWF0gaXMgdGhlIHNp bmdsZXRvbiAwLgorCitpbmxpbmUgYm9vbAord2lfemVyb19wICh0cmVlIHR5cGUsIGNvbnN0IHdp ZGVfaW50ICZ3bWluLCBjb25zdCB3aWRlX2ludCAmd21heCkKK3sKKyAgdW5zaWduZWQgcHJlYyA9 IFRZUEVfUFJFQ0lTSU9OICh0eXBlKTsKKyAgcmV0dXJuIHdtaW4gPT0gd21heCAmJiB3aTo6ZXFf cCAod21pbiwgd2k6Onplcm8gKHByZWMpKTsKK30KKworCiBlbnVtIGJvb2xfcmFuZ2Vfc3RhdGUg eyBCUlNfRkFMU0UsIEJSU19UUlVFLCBCUlNfRU1QVFksIEJSU19GVUxMIH07CiBib29sX3Jhbmdl X3N0YXRlIGdldF9ib29sX3N0YXRlICh2cmFuZ2UgJnIsIGNvbnN0IHZyYW5nZSAmbGhzLCB0cmVl IHZhbF90eXBlKTsKIApkaWZmIC0tZ2l0IGEvZ2NjL3JhbmdlLW9wLXB0ci5jYyBiL2djYy9yYW5n ZS1vcC1wdHIuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjU1YzM3 Y2M4Yzg2Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3JhbmdlLW9wLXB0ci5jYwpAQCAtMCwwICsx LDI4NiBAQAorLyogQ29kZSBmb3IgcmFuZ2Ugb3BlcmF0b3JzLgorICAgQ29weXJpZ2h0IChDKSAy MDE3LTIwMjMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgICBDb250cmlidXRlZCBi eSBBbmRyZXcgTWFjTGVvZCA8YW1hY2xlb2RAcmVkaGF0LmNvbT4KKyAgIGFuZCBBbGR5IEhlcm5h bmRleiA8YWxkeWhAcmVkaGF0LmNvbT4uCisKK1RoaXMgZmlsZSBpcyBwYXJ0IG9mIEdDQy4KKwor R0NDIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkKK2l0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5Cit0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVy c2lvbiAzLCBvciAoYXQgeW91ciBvcHRpb24pCithbnkgbGF0ZXIgdmVyc2lvbi4KKworR0NDIGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCitidXQgV0lU SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl IHRoZQorR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworWW91 IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UKK2Fsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2Vl Cis8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworCisjaW5jbHVkZSAiY29uZmln LmgiCisjaW5jbHVkZSAic3lzdGVtLmgiCisjaW5jbHVkZSAiY29yZXR5cGVzLmgiCisjaW5jbHVk ZSAiYmFja2VuZC5oIgorI2luY2x1ZGUgImluc24tY29kZXMuaCIKKyNpbmNsdWRlICJydGwuaCIK KyNpbmNsdWRlICJ0cmVlLmgiCisjaW5jbHVkZSAiZ2ltcGxlLmgiCisjaW5jbHVkZSAiY2ZnaG9v a3MuaCIKKyNpbmNsdWRlICJ0cmVlLXBhc3MuaCIKKyNpbmNsdWRlICJzc2EuaCIKKyNpbmNsdWRl ICJvcHRhYnMtdHJlZS5oIgorI2luY2x1ZGUgImdpbXBsZS1wcmV0dHktcHJpbnQuaCIKKyNpbmNs dWRlICJkaWFnbm9zdGljLWNvcmUuaCIKKyNpbmNsdWRlICJmbGFncy5oIgorI2luY2x1ZGUgImZv bGQtY29uc3QuaCIKKyNpbmNsdWRlICJzdG9yLWxheW91dC5oIgorI2luY2x1ZGUgImNhbGxzLmgi CisjaW5jbHVkZSAiY2ZnYW5hbC5oIgorI2luY2x1ZGUgImdpbXBsZS1pdGVyYXRvci5oIgorI2lu Y2x1ZGUgImdpbXBsZS1mb2xkLmgiCisjaW5jbHVkZSAidHJlZS1laC5oIgorI2luY2x1ZGUgImdp bXBsZS13YWxrLmgiCisjaW5jbHVkZSAidHJlZS1jZmcuaCIKKyNpbmNsdWRlICJ3aWRlLWludC5o IgorI2luY2x1ZGUgInZhbHVlLXJlbGF0aW9uLmgiCisjaW5jbHVkZSAicmFuZ2Utb3AuaCIKKyNp bmNsdWRlICJ0cmVlLXNzYS1jY3AuaCIKKyNpbmNsdWRlICJyYW5nZS1vcC1taXhlZC5oIgorCitj bGFzcyBwb2ludGVyX3BsdXNfb3BlcmF0b3IgOiBwdWJsaWMgcmFuZ2Vfb3BlcmF0b3IKK3sKKyAg dXNpbmcgcmFuZ2Vfb3BlcmF0b3I6Om9wMl9yYW5nZTsKK3B1YmxpYzoKKyAgdmlydHVhbCB2b2lk IHdpX2ZvbGQgKGlyYW5nZSAmciwgdHJlZSB0eXBlLAorCQkJY29uc3Qgd2lkZV9pbnQgJmxoX2xi LAorCQkJY29uc3Qgd2lkZV9pbnQgJmxoX3ViLAorCQkJY29uc3Qgd2lkZV9pbnQgJnJoX2xiLAor CQkJY29uc3Qgd2lkZV9pbnQgJnJoX3ViKSBjb25zdDsKKyAgdmlydHVhbCBib29sIG9wMl9yYW5n ZSAoaXJhbmdlICZyLCB0cmVlIHR5cGUsCisJCQkgIGNvbnN0IGlyYW5nZSAmbGhzLAorCQkJICBj b25zdCBpcmFuZ2UgJm9wMSwKKwkJCSAgcmVsYXRpb25fdHJpbyA9IFRSSU9fVkFSWUlORykgY29u c3Q7CisgIHZvaWQgdXBkYXRlX2JpdG1hc2sgKGlyYW5nZSAmciwgY29uc3QgaXJhbmdlICZsaCwg Y29uc3QgaXJhbmdlICZyaCkgY29uc3QKKyAgICB7IHVwZGF0ZV9rbm93bl9iaXRtYXNrIChyLCBQ T0lOVEVSX1BMVVNfRVhQUiwgbGgsIHJoKTsgfQorfSBvcF9wb2ludGVyX3BsdXM7CisKK3ZvaWQK K3BvaW50ZXJfcGx1c19vcGVyYXRvcjo6d2lfZm9sZCAoaXJhbmdlICZyLCB0cmVlIHR5cGUsCisJ CQkJY29uc3Qgd2lkZV9pbnQgJmxoX2xiLAorCQkJCWNvbnN0IHdpZGVfaW50ICZsaF91YiwKKwkJ CQljb25zdCB3aWRlX2ludCAmcmhfbGIsCisJCQkJY29uc3Qgd2lkZV9pbnQgJnJoX3ViKSBjb25z dAoreworICAvLyBDaGVjayBmb3IgWzAsMF0gKyBjb25zdCwgYW5kIHNpbXBseSByZXR1cm4gdGhl IGNvbnN0LgorICBpZiAobGhfbGIgPT0gMCAmJiBsaF91YiA9PSAwICYmIHJoX2xiID09IHJoX3Vi KQorICAgIHsKKyAgICAgIHIuc2V0ICh0eXBlLCByaF9sYiwgcmhfbGIpOworICAgICAgcmV0dXJu OworICAgIH0KKworICAvLyBGb3IgcG9pbnRlciB0eXBlcywgd2UgYXJlIHJlYWxseSBvbmx5IGlu dGVyZXN0ZWQgaW4gYXNzZXJ0aW5nCisgIC8vIHdoZXRoZXIgdGhlIGV4cHJlc3Npb24gZXZhbHVh dGVzIHRvIG5vbi1OVUxMLgorICAvLworICAvLyBXaXRoIC1mbm8tZGVsZXRlLW51bGwtcG9pbnRl ci1jaGVja3Mgd2UgbmVlZCB0byBiZSBtb3JlCisgIC8vIGNvbnNlcnZhdGl2ZS4gIEFzIHNvbWUg b2JqZWN0IG1pZ2h0IHJlc2lkZSBhdCBhZGRyZXNzIDAsCisgIC8vIHRoZW4gc29tZSBvZmZzZXQg Y291bGQgYmUgYWRkZWQgdG8gaXQgYW5kIHRoZSBzYW1lIG9mZnNldAorICAvLyBzdWJ0cmFjdGVk IGFnYWluIGFuZCB0aGUgcmVzdWx0IHdvdWxkIGJlIE5VTEwuCisgIC8vIEUuZy4KKyAgLy8gc3Rh dGljIGludCBhWzEyXTsgd2hlcmUgJmFbMF0gaXMgTlVMTCBhbmQKKyAgLy8gcHRyID0gJmFbNl07 CisgIC8vIHB0ciAtPSA2OworICAvLyBwdHIgd2lsbCBiZSBOVUxMIGhlcmUsIGV2ZW4gd2hlbiB0 aGVyZSBpcyBQT0lOVEVSX1BMVVNfRVhQUgorICAvLyB3aGVyZSB0aGUgZmlyc3QgcmFuZ2UgZG9l c24ndCBpbmNsdWRlIHplcm8gYW5kIHRoZSBzZWNvbmQgb25lCisgIC8vIGRvZXNuJ3QgZWl0aGVy LiAgQXMgdGhlIHNlY29uZCBvcGVyYW5kIGlzIHNpemV0eXBlICh1bnNpZ25lZCksCisgIC8vIGNv bnNpZGVyIGFsbCByYW5nZXMgd2hlcmUgdGhlIE1TQiBjb3VsZCBiZSBzZXQgYXMgcG9zc2libGUK KyAgLy8gc3VidHJhY3Rpb25zIHdoZXJlIHRoZSByZXN1bHQgbWlnaHQgYmUgTlVMTC4KKyAgaWYg KCghd2lfaW5jbHVkZXNfemVyb19wICh0eXBlLCBsaF9sYiwgbGhfdWIpCisgICAgICAgfHwgIXdp X2luY2x1ZGVzX3plcm9fcCAodHlwZSwgcmhfbGIsIHJoX3ViKSkKKyAgICAgICYmICFUWVBFX09W RVJGTE9XX1dSQVBTICh0eXBlKQorICAgICAgJiYgKGZsYWdfZGVsZXRlX251bGxfcG9pbnRlcl9j aGVja3MKKwkgIHx8ICF3aTo6c2lnbl9tYXNrIChyaF91YikpKQorICAgIHIgPSByYW5nZV9ub256 ZXJvICh0eXBlKTsKKyAgZWxzZSBpZiAobGhfbGIgPT0gbGhfdWIgJiYgbGhfbGIgPT0gMAorCSAg ICYmIHJoX2xiID09IHJoX3ViICYmIHJoX2xiID09IDApCisgICAgciA9IHJhbmdlX3plcm8gKHR5 cGUpOworICBlbHNlCisgICByLnNldF92YXJ5aW5nICh0eXBlKTsKK30KKworYm9vbAorcG9pbnRl cl9wbHVzX29wZXJhdG9yOjpvcDJfcmFuZ2UgKGlyYW5nZSAmciwgdHJlZSB0eXBlLAorCQkJCSAg Y29uc3QgaXJhbmdlICZsaHMgQVRUUklCVVRFX1VOVVNFRCwKKwkJCQkgIGNvbnN0IGlyYW5nZSAm b3AxIEFUVFJJQlVURV9VTlVTRUQsCisJCQkJICByZWxhdGlvbl90cmlvIHRyaW8pIGNvbnN0Cit7 CisgIHJlbGF0aW9uX2tpbmQgcmVsID0gdHJpby5saHNfb3AxICgpOworICByLnNldF92YXJ5aW5n ICh0eXBlKTsKKworICAvLyBJZiB0aGUgTEhTIGFuZCBPUDEgYXJlIGVxdWFsLCB0aGUgb3AyIG11 c3QgYmUgemVyby4KKyAgaWYgKHJlbCA9PSBWUkVMX0VRKQorICAgIHIuc2V0X3plcm8gKHR5cGUp OworICAvLyBJZiB0aGUgTEhTIGFuZCBPUDEgYXJlIG5vdCBlcXVhbCwgdGhlIG9mZnNldCBtdXN0 IGJlIG5vbi16ZXJvLgorICBlbHNlIGlmIChyZWwgPT0gVlJFTF9ORSkKKyAgICByLnNldF9ub256 ZXJvICh0eXBlKTsKKyAgZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyAgcmV0dXJuIHRydWU7Cit9 CisKK2NsYXNzIHBvaW50ZXJfbWluX21heF9vcGVyYXRvciA6IHB1YmxpYyByYW5nZV9vcGVyYXRv cgoreworcHVibGljOgorICB2aXJ0dWFsIHZvaWQgd2lfZm9sZCAoaXJhbmdlICYgciwgdHJlZSB0 eXBlLAorCQkJY29uc3Qgd2lkZV9pbnQgJmxoX2xiLCBjb25zdCB3aWRlX2ludCAmbGhfdWIsCisJ CQljb25zdCB3aWRlX2ludCAmcmhfbGIsIGNvbnN0IHdpZGVfaW50ICZyaF91YikgY29uc3Q7Cit9 IG9wX3B0cl9taW5fbWF4OworCit2b2lkCitwb2ludGVyX21pbl9tYXhfb3BlcmF0b3I6OndpX2Zv bGQgKGlyYW5nZSAmciwgdHJlZSB0eXBlLAorCQkJCSAgIGNvbnN0IHdpZGVfaW50ICZsaF9sYiwK KwkJCQkgICBjb25zdCB3aWRlX2ludCAmbGhfdWIsCisJCQkJICAgY29uc3Qgd2lkZV9pbnQgJnJo X2xiLAorCQkJCSAgIGNvbnN0IHdpZGVfaW50ICZyaF91YikgY29uc3QKK3sKKyAgLy8gRm9yIE1J Ti9NQVggZXhwcmVzc2lvbnMgd2l0aCBwb2ludGVycywgd2Ugb25seSBjYXJlIGFib3V0CisgIC8v IG51bGxuZXNzLiAgSWYgYm90aCBhcmUgbm9uIG51bGwsIHRoZW4gdGhlIHJlc3VsdCBpcyBub25u dWxsLgorICAvLyBJZiBib3RoIGFyZSBudWxsLCB0aGVuIHRoZSByZXN1bHQgaXMgbnVsbC4gIE90 aGVyd2lzZSB0aGV5CisgIC8vIGFyZSB2YXJ5aW5nLgorICBpZiAoIXdpX2luY2x1ZGVzX3plcm9f cCAodHlwZSwgbGhfbGIsIGxoX3ViKQorICAgICAgJiYgIXdpX2luY2x1ZGVzX3plcm9fcCAodHlw ZSwgcmhfbGIsIHJoX3ViKSkKKyAgICByID0gcmFuZ2Vfbm9uemVybyAodHlwZSk7CisgIGVsc2Ug aWYgKHdpX3plcm9fcCAodHlwZSwgbGhfbGIsIGxoX3ViKSAmJiB3aV96ZXJvX3AgKHR5cGUsIHJo X2xiLCByaF91YikpCisgICAgciA9IHJhbmdlX3plcm8gKHR5cGUpOworICBlbHNlCisgICAgci5z ZXRfdmFyeWluZyAodHlwZSk7Cit9CisKKworY2xhc3MgcG9pbnRlcl9hbmRfb3BlcmF0b3IgOiBw dWJsaWMgcmFuZ2Vfb3BlcmF0b3IKK3sKK3B1YmxpYzoKKyAgdmlydHVhbCB2b2lkIHdpX2ZvbGQg KGlyYW5nZSAmciwgdHJlZSB0eXBlLAorCQkJY29uc3Qgd2lkZV9pbnQgJmxoX2xiLCBjb25zdCB3 aWRlX2ludCAmbGhfdWIsCisJCQljb25zdCB3aWRlX2ludCAmcmhfbGIsIGNvbnN0IHdpZGVfaW50 ICZyaF91YikgY29uc3Q7Cit9IG9wX3BvaW50ZXJfYW5kOworCit2b2lkCitwb2ludGVyX2FuZF9v cGVyYXRvcjo6d2lfZm9sZCAoaXJhbmdlICZyLCB0cmVlIHR5cGUsCisJCQkgICAgICAgY29uc3Qg d2lkZV9pbnQgJmxoX2xiLAorCQkJICAgICAgIGNvbnN0IHdpZGVfaW50ICZsaF91YiwKKwkJCSAg ICAgICBjb25zdCB3aWRlX2ludCAmcmhfbGIgQVRUUklCVVRFX1VOVVNFRCwKKwkJCSAgICAgICBj b25zdCB3aWRlX2ludCAmcmhfdWIgQVRUUklCVVRFX1VOVVNFRCkgY29uc3QKK3sKKyAgLy8gRm9y IHBvaW50ZXIgdHlwZXMsIHdlIGFyZSByZWFsbHkgb25seSBpbnRlcmVzdGVkIGluIGFzc2VydGlu ZworICAvLyB3aGV0aGVyIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byBub24tTlVMTC4KKyAg aWYgKHdpX3plcm9fcCAodHlwZSwgbGhfbGIsIGxoX3ViKSB8fCB3aV96ZXJvX3AgKHR5cGUsIGxo X2xiLCBsaF91YikpCisgICAgciA9IHJhbmdlX3plcm8gKHR5cGUpOworICBlbHNlCisgICAgci5z ZXRfdmFyeWluZyAodHlwZSk7Cit9CisKKworY2xhc3MgcG9pbnRlcl9vcl9vcGVyYXRvciA6IHB1 YmxpYyByYW5nZV9vcGVyYXRvcgoreworICB1c2luZyByYW5nZV9vcGVyYXRvcjo6b3AxX3Jhbmdl OworICB1c2luZyByYW5nZV9vcGVyYXRvcjo6b3AyX3JhbmdlOworcHVibGljOgorICB2aXJ0dWFs IGJvb2wgb3AxX3JhbmdlIChpcmFuZ2UgJnIsIHRyZWUgdHlwZSwKKwkJCSAgY29uc3QgaXJhbmdl ICZsaHMsCisJCQkgIGNvbnN0IGlyYW5nZSAmb3AyLAorCQkJICByZWxhdGlvbl90cmlvIHJlbCA9 IFRSSU9fVkFSWUlORykgY29uc3Q7CisgIHZpcnR1YWwgYm9vbCBvcDJfcmFuZ2UgKGlyYW5nZSAm ciwgdHJlZSB0eXBlLAorCQkJICBjb25zdCBpcmFuZ2UgJmxocywKKwkJCSAgY29uc3QgaXJhbmdl ICZvcDEsCisJCQkgIHJlbGF0aW9uX3RyaW8gcmVsID0gVFJJT19WQVJZSU5HKSBjb25zdDsKKyAg dmlydHVhbCB2b2lkIHdpX2ZvbGQgKGlyYW5nZSAmciwgdHJlZSB0eXBlLAorCQkJY29uc3Qgd2lk ZV9pbnQgJmxoX2xiLCBjb25zdCB3aWRlX2ludCAmbGhfdWIsCisJCQljb25zdCB3aWRlX2ludCAm cmhfbGIsIGNvbnN0IHdpZGVfaW50ICZyaF91YikgY29uc3Q7Cit9IG9wX3BvaW50ZXJfb3I7CisK K2Jvb2wKK3BvaW50ZXJfb3Jfb3BlcmF0b3I6Om9wMV9yYW5nZSAoaXJhbmdlICZyLCB0cmVlIHR5 cGUsCisJCQkJY29uc3QgaXJhbmdlICZsaHMsCisJCQkJY29uc3QgaXJhbmdlICZvcDIgQVRUUklC VVRFX1VOVVNFRCwKKwkJCQlyZWxhdGlvbl90cmlvKSBjb25zdAoreworICBpZiAobGhzLnVuZGVm aW5lZF9wICgpKQorICAgIHJldHVybiBmYWxzZTsKKyAgaWYgKGxocy56ZXJvX3AgKCkpCisgICAg eworICAgICAgci5zZXRfemVybyAodHlwZSk7CisgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9Cisg IHIuc2V0X3ZhcnlpbmcgKHR5cGUpOworICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbAorcG9pbnRl cl9vcl9vcGVyYXRvcjo6b3AyX3JhbmdlIChpcmFuZ2UgJnIsIHRyZWUgdHlwZSwKKwkJCQljb25z dCBpcmFuZ2UgJmxocywKKwkJCQljb25zdCBpcmFuZ2UgJm9wMSwKKwkJCQlyZWxhdGlvbl90cmlv KSBjb25zdAoreworICByZXR1cm4gcG9pbnRlcl9vcl9vcGVyYXRvcjo6b3AxX3JhbmdlIChyLCB0 eXBlLCBsaHMsIG9wMSk7Cit9CisKK3ZvaWQKK3BvaW50ZXJfb3Jfb3BlcmF0b3I6OndpX2ZvbGQg KGlyYW5nZSAmciwgdHJlZSB0eXBlLAorCQkJICAgICAgY29uc3Qgd2lkZV9pbnQgJmxoX2xiLAor CQkJICAgICAgY29uc3Qgd2lkZV9pbnQgJmxoX3ViLAorCQkJICAgICAgY29uc3Qgd2lkZV9pbnQg JnJoX2xiLAorCQkJICAgICAgY29uc3Qgd2lkZV9pbnQgJnJoX3ViKSBjb25zdAoreworICAvLyBG b3IgcG9pbnRlciB0eXBlcywgd2UgYXJlIHJlYWxseSBvbmx5IGludGVyZXN0ZWQgaW4gYXNzZXJ0 aW5nCisgIC8vIHdoZXRoZXIgdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIG5vbi1OVUxMLgor ICBpZiAoIXdpX2luY2x1ZGVzX3plcm9fcCAodHlwZSwgbGhfbGIsIGxoX3ViKQorICAgICAgJiYg IXdpX2luY2x1ZGVzX3plcm9fcCAodHlwZSwgcmhfbGIsIHJoX3ViKSkKKyAgICByID0gcmFuZ2Vf bm9uemVybyAodHlwZSk7CisgIGVsc2UgaWYgKHdpX3plcm9fcCAodHlwZSwgbGhfbGIsIGxoX3Vi KSAmJiB3aV96ZXJvX3AgKHR5cGUsIHJoX2xiLCByaF91YikpCisgICAgciA9IHJhbmdlX3plcm8g KHR5cGUpOworICBlbHNlCisgICAgci5zZXRfdmFyeWluZyAodHlwZSk7Cit9CisKK2NsYXNzIG9w ZXJhdG9yX3BvaW50ZXJfZGlmZiA6IHB1YmxpYyByYW5nZV9vcGVyYXRvcgoreworICB2aXJ0dWFs IGJvb2wgb3AxX29wMl9yZWxhdGlvbl9lZmZlY3QgKGlyYW5nZSAmbGhzX3JhbmdlLAorCQkJCQl0 cmVlIHR5cGUsCisJCQkJCWNvbnN0IGlyYW5nZSAmb3AxX3JhbmdlLAorCQkJCQljb25zdCBpcmFu Z2UgJm9wMl9yYW5nZSwKKwkJCQkJcmVsYXRpb25fa2luZCByZWwpIGNvbnN0OworICB2b2lkIHVw ZGF0ZV9iaXRtYXNrIChpcmFuZ2UgJnIsIGNvbnN0IGlyYW5nZSAmbGgsIGNvbnN0IGlyYW5nZSAm cmgpIGNvbnN0CisgICAgeyB1cGRhdGVfa25vd25fYml0bWFzayAociwgUE9JTlRFUl9ESUZGX0VY UFIsIGxoLCByaCk7IH0KK30gb3BfcG9pbnRlcl9kaWZmOworCitib29sCitvcGVyYXRvcl9wb2lu dGVyX2RpZmY6Om9wMV9vcDJfcmVsYXRpb25fZWZmZWN0IChpcmFuZ2UgJmxoc19yYW5nZSwgdHJl ZSB0eXBlLAorCQkJCQkJY29uc3QgaXJhbmdlICZvcDFfcmFuZ2UsCisJCQkJCQljb25zdCBpcmFu Z2UgJm9wMl9yYW5nZSwKKwkJCQkJCXJlbGF0aW9uX2tpbmQgcmVsKSBjb25zdAoreworICByZXR1 cm4gbWludXNfb3AxX29wMl9yZWxhdGlvbl9lZmZlY3QgKGxoc19yYW5nZSwgdHlwZSwgb3AxX3Jh bmdlLCBvcDJfcmFuZ2UsCisJCQkJCXJlbCk7Cit9CisKKy8vIFdoZW4gUFJBTkdFIGlzIGltcGxl bWVudGVkLCB0aGVzZSBhcmUgYWxsIHRoZSBvcGNvZGVzIHdoaWNoIGFyZSBjdXJyZW50bHkKKy8v IGV4cGVjdGluZyByb3V0aW5lcyB3aXRoIFBSQU5HRSBzaWduYXR1cmVzLgorCitwb2ludGVyX3Rh YmxlOjpwb2ludGVyX3RhYmxlICgpCit7CisgIHNldCAoQklUX0FORF9FWFBSLCBvcF9wb2ludGVy X2FuZCk7CisgIHNldCAoQklUX0lPUl9FWFBSLCBvcF9wb2ludGVyX29yKTsKKyAgc2V0IChNSU5f RVhQUiwgb3BfcHRyX21pbl9tYXgpOworICBzZXQgKE1BWF9FWFBSLCBvcF9wdHJfbWluX21heCk7 Cit9CisKKy8vIEluaXRpYWxpemUgYW55IHBvaW50ZXIgb3BlcmF0b3JzIHRvIHRoZSBwcmltYXJ5 IHRhYmxlCisKK3ZvaWQKK3JhbmdlX29wX3RhYmxlOjppbml0aWFsaXplX3BvaW50ZXJfb3BzICgp Cit7CisgIHNldCAoUE9JTlRFUl9QTFVTX0VYUFIsIG9wX3BvaW50ZXJfcGx1cyk7CisgIHNldCAo UE9JTlRFUl9ESUZGX0VYUFIsIG9wX3BvaW50ZXJfZGlmZik7Cit9CmRpZmYgLS1naXQgYS9nY2Mv cmFuZ2Utb3AuY2MgYi9nY2MvcmFuZ2Utb3AuY2MKaW5kZXggZTgzZjYyN2E3MjIuLmUwY2QxYjEw NzkwIDEwMDY0NAotLS0gYS9nY2MvcmFuZ2Utb3AuY2MKKysrIGIvZ2NjL3JhbmdlLW9wLmNjCkBA IC0zODEsNyArMzgxLDcgQEAgaXJhbmdlX3RvX21hc2tlZF92YWx1ZSAoY29uc3QgaXJhbmdlICZy LCB3aWRlc3RfaW50ICZ2YWx1ZSwgd2lkZXN0X2ludCAmbWFzaykKIC8vIFVwZGF0ZSB0aGUga25v d24gYml0bWFza3MgaW4gUiB3aGVuIGFwcGx5aW5nIHRoZSBvcGVyYXRpb24gQ09ERSB0bwogLy8g TEggYW5kIFJILgogCi1zdGF0aWMgdm9pZAordm9pZAogdXBkYXRlX2tub3duX2JpdG1hc2sgKGly YW5nZSAmciwgdHJlZV9jb2RlIGNvZGUsCiAJCSAgICAgIGNvbnN0IGlyYW5nZSAmbGgsIGNvbnN0 IGlyYW5nZSAmcmgpCiB7CkBAIC00NDQsMjQgKzQ0NCw2IEBAIGdldF9zaGlmdF9yYW5nZSAoaXJh bmdlICZyLCB0cmVlIHR5cGUsIGNvbnN0IGlyYW5nZSAmb3ApCiAgIHJldHVybiB0cnVlOwogfQog Ci0vLyBSZXR1cm4gVFJVRSBpZiAwIGlzIHdpdGhpbiBbV01JTiwgV01BWF0uCi0KLXN0YXRpYyBp bmxpbmUgYm9vbAotd2lfaW5jbHVkZXNfemVyb19wICh0cmVlIHR5cGUsIGNvbnN0IHdpZGVfaW50 ICZ3bWluLCBjb25zdCB3aWRlX2ludCAmd21heCkKLXsKLSAgc2lnbm9wIHNpZ24gPSBUWVBFX1NJ R04gKHR5cGUpOwotICByZXR1cm4gd2k6OmxlX3AgKHdtaW4sIDAsIHNpZ24pICYmIHdpOjpnZV9w ICh3bWF4LCAwLCBzaWduKTsKLX0KLQotLy8gUmV0dXJuIFRSVUUgaWYgW1dNSU4sIFdNQVhdIGlz IHRoZSBzaW5nbGV0b24gMC4KLQotc3RhdGljIGlubGluZSBib29sCi13aV96ZXJvX3AgKHRyZWUg dHlwZSwgY29uc3Qgd2lkZV9pbnQgJndtaW4sIGNvbnN0IHdpZGVfaW50ICZ3bWF4KQotewotICB1 bnNpZ25lZCBwcmVjID0gVFlQRV9QUkVDSVNJT04gKHR5cGUpOwotICByZXR1cm4gd21pbiA9PSB3 bWF4ICYmIHdpOjplcV9wICh3bWluLCB3aTo6emVybyAocHJlYykpOwotfQotCiAvLyBEZWZhdWx0 IHdpZGVfaW50IGZvbGQgb3BlcmF0aW9uIHJldHVybnMgW01JTiwgTUFYXS4KIAogdm9pZApAQCAt MTg0NCw3ICsxODI2LDcgQEAgb3BlcmF0b3JfbWludXM6Omxoc19vcDFfcmVsYXRpb24gKGNvbnN0 IGlyYW5nZSAmLCBjb25zdCBpcmFuZ2UgJm9wMSwKIC8vIExIUyBvZiB0aGUgZXhwcmVzc2lvbi4g IElmIHNvLCBhcHBseSBpdCB0byBMSFNfUkFOR0UuICBUaGlzIGlzIGEgaGVscGVyCiAvLyBmdW5j dGlvbiBmb3IgYm90aCBNSU5VU19FWFBSIGFuZCBQT0lOVEVSX0RJRkZfRVhQUi4KIAotc3RhdGlj IGJvb2wKK2Jvb2wKIG1pbnVzX29wMV9vcDJfcmVsYXRpb25fZWZmZWN0IChpcmFuZ2UgJmxoc19y YW5nZSwgdHJlZSB0eXBlLAogCQkJICAgICAgIGNvbnN0IGlyYW5nZSAmb3AxX3JhbmdlIEFUVFJJ QlVURV9VTlVTRUQsCiAJCQkgICAgICAgY29uc3QgaXJhbmdlICZvcDJfcmFuZ2UgQVRUUklCVVRF X1VOVVNFRCwKQEAgLTE5NTEsMjkgKzE5MzMsNiBAQCBvcGVyYXRvcl9taW51czo6b3AyX3Jhbmdl IChpcmFuZ2UgJnIsIHRyZWUgdHlwZSwKICAgcmV0dXJuIGZvbGRfcmFuZ2UgKHIsIHR5cGUsIG9w MSwgbGhzKTsKIH0KIAotCi1jbGFzcyBvcGVyYXRvcl9wb2ludGVyX2RpZmYgOiBwdWJsaWMgcmFu Z2Vfb3BlcmF0b3IKLXsKLSAgdmlydHVhbCBib29sIG9wMV9vcDJfcmVsYXRpb25fZWZmZWN0IChp cmFuZ2UgJmxoc19yYW5nZSwKLQkJCQkJdHJlZSB0eXBlLAotCQkJCQljb25zdCBpcmFuZ2UgJm9w MV9yYW5nZSwKLQkJCQkJY29uc3QgaXJhbmdlICZvcDJfcmFuZ2UsCi0JCQkJCXJlbGF0aW9uX2tp bmQgcmVsKSBjb25zdDsKLSAgdm9pZCB1cGRhdGVfYml0bWFzayAoaXJhbmdlICZyLCBjb25zdCBp cmFuZ2UgJmxoLCBjb25zdCBpcmFuZ2UgJnJoKSBjb25zdAotICAgIHsgdXBkYXRlX2tub3duX2Jp dG1hc2sgKHIsIFBPSU5URVJfRElGRl9FWFBSLCBsaCwgcmgpOyB9Ci19IG9wX3BvaW50ZXJfZGlm ZjsKLQotYm9vbAotb3BlcmF0b3JfcG9pbnRlcl9kaWZmOjpvcDFfb3AyX3JlbGF0aW9uX2VmZmVj dCAoaXJhbmdlICZsaHNfcmFuZ2UsIHRyZWUgdHlwZSwKLQkJCQkJCWNvbnN0IGlyYW5nZSAmb3Ax X3JhbmdlLAotCQkJCQkJY29uc3QgaXJhbmdlICZvcDJfcmFuZ2UsCi0JCQkJCQlyZWxhdGlvbl9r aW5kIHJlbCkgY29uc3QKLXsKLSAgcmV0dXJuIG1pbnVzX29wMV9vcDJfcmVsYXRpb25fZWZmZWN0 IChsaHNfcmFuZ2UsIHR5cGUsIG9wMV9yYW5nZSwgb3AyX3JhbmdlLAotCQkJCQlyZWwpOwotfQot Ci0KIHZvaWQKIG9wZXJhdG9yX21pbjo6dXBkYXRlX2JpdG1hc2sgKGlyYW5nZSAmciwgY29uc3Qg aXJhbmdlICZsaCwKIAkJCSAgICAgIGNvbnN0IGlyYW5nZSAmcmgpIGNvbnN0CkBAIC00MzE5LDIw MiArNDI3OCw2IEBAIG9wZXJhdG9yX2FkZHJfZXhwcjo6b3AxX3JhbmdlIChpcmFuZ2UgJnIsIHRy ZWUgdHlwZSwKIHsKICAgcmV0dXJuIG9wZXJhdG9yX2FkZHJfZXhwcjo6Zm9sZF9yYW5nZSAociwg dHlwZSwgbGhzLCBvcDIpOwogfQotCi0KLWNsYXNzIHBvaW50ZXJfcGx1c19vcGVyYXRvciA6IHB1 YmxpYyByYW5nZV9vcGVyYXRvcgotewotICB1c2luZyByYW5nZV9vcGVyYXRvcjo6b3AyX3Jhbmdl OwotcHVibGljOgotICB2aXJ0dWFsIHZvaWQgd2lfZm9sZCAoaXJhbmdlICZyLCB0cmVlIHR5cGUs Ci0JCSAgICAgICAgY29uc3Qgd2lkZV9pbnQgJmxoX2xiLAotCQkgICAgICAgIGNvbnN0IHdpZGVf aW50ICZsaF91YiwKLQkJICAgICAgICBjb25zdCB3aWRlX2ludCAmcmhfbGIsCi0JCSAgICAgICAg Y29uc3Qgd2lkZV9pbnQgJnJoX3ViKSBjb25zdDsKLSAgdmlydHVhbCBib29sIG9wMl9yYW5nZSAo aXJhbmdlICZyLCB0cmVlIHR5cGUsCi0JCQkgIGNvbnN0IGlyYW5nZSAmbGhzLAotCQkJICBjb25z dCBpcmFuZ2UgJm9wMSwKLQkJCSAgcmVsYXRpb25fdHJpbyA9IFRSSU9fVkFSWUlORykgY29uc3Q7 Ci0gIHZvaWQgdXBkYXRlX2JpdG1hc2sgKGlyYW5nZSAmciwgY29uc3QgaXJhbmdlICZsaCwgY29u c3QgaXJhbmdlICZyaCkgY29uc3QKLSAgICB7IHVwZGF0ZV9rbm93bl9iaXRtYXNrIChyLCBQT0lO VEVSX1BMVVNfRVhQUiwgbGgsIHJoKTsgfQotfSBvcF9wb2ludGVyX3BsdXM7Ci0KLXZvaWQKLXBv aW50ZXJfcGx1c19vcGVyYXRvcjo6d2lfZm9sZCAoaXJhbmdlICZyLCB0cmVlIHR5cGUsCi0JCQkJ Y29uc3Qgd2lkZV9pbnQgJmxoX2xiLAotCQkJCWNvbnN0IHdpZGVfaW50ICZsaF91YiwKLQkJCQlj b25zdCB3aWRlX2ludCAmcmhfbGIsCi0JCQkJY29uc3Qgd2lkZV9pbnQgJnJoX3ViKSBjb25zdAot ewotICAvLyBDaGVjayBmb3IgWzAsMF0gKyBjb25zdCwgYW5kIHNpbXBseSByZXR1cm4gdGhlIGNv bnN0LgotICBpZiAobGhfbGIgPT0gMCAmJiBsaF91YiA9PSAwICYmIHJoX2xiID09IHJoX3ViKQot ICAgIHsKLSAgICAgIHIuc2V0ICh0eXBlLCByaF9sYiwgcmhfbGIpOwotICAgICAgcmV0dXJuOwot ICAgIH0KLQotICAvLyBGb3IgcG9pbnRlciB0eXBlcywgd2UgYXJlIHJlYWxseSBvbmx5IGludGVy ZXN0ZWQgaW4gYXNzZXJ0aW5nCi0gIC8vIHdoZXRoZXIgdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVz IHRvIG5vbi1OVUxMLgotICAvLwotICAvLyBXaXRoIC1mbm8tZGVsZXRlLW51bGwtcG9pbnRlci1j aGVja3Mgd2UgbmVlZCB0byBiZSBtb3JlCi0gIC8vIGNvbnNlcnZhdGl2ZS4gIEFzIHNvbWUgb2Jq ZWN0IG1pZ2h0IHJlc2lkZSBhdCBhZGRyZXNzIDAsCi0gIC8vIHRoZW4gc29tZSBvZmZzZXQgY291 bGQgYmUgYWRkZWQgdG8gaXQgYW5kIHRoZSBzYW1lIG9mZnNldAotICAvLyBzdWJ0cmFjdGVkIGFn YWluIGFuZCB0aGUgcmVzdWx0IHdvdWxkIGJlIE5VTEwuCi0gIC8vIEUuZy4KLSAgLy8gc3RhdGlj IGludCBhWzEyXTsgd2hlcmUgJmFbMF0gaXMgTlVMTCBhbmQKLSAgLy8gcHRyID0gJmFbNl07Ci0g IC8vIHB0ciAtPSA2OwotICAvLyBwdHIgd2lsbCBiZSBOVUxMIGhlcmUsIGV2ZW4gd2hlbiB0aGVy ZSBpcyBQT0lOVEVSX1BMVVNfRVhQUgotICAvLyB3aGVyZSB0aGUgZmlyc3QgcmFuZ2UgZG9lc24n dCBpbmNsdWRlIHplcm8gYW5kIHRoZSBzZWNvbmQgb25lCi0gIC8vIGRvZXNuJ3QgZWl0aGVyLiAg QXMgdGhlIHNlY29uZCBvcGVyYW5kIGlzIHNpemV0eXBlICh1bnNpZ25lZCksCi0gIC8vIGNvbnNp ZGVyIGFsbCByYW5nZXMgd2hlcmUgdGhlIE1TQiBjb3VsZCBiZSBzZXQgYXMgcG9zc2libGUKLSAg Ly8gc3VidHJhY3Rpb25zIHdoZXJlIHRoZSByZXN1bHQgbWlnaHQgYmUgTlVMTC4KLSAgaWYgKCgh d2lfaW5jbHVkZXNfemVyb19wICh0eXBlLCBsaF9sYiwgbGhfdWIpCi0gICAgICAgfHwgIXdpX2lu Y2x1ZGVzX3plcm9fcCAodHlwZSwgcmhfbGIsIHJoX3ViKSkKLSAgICAgICYmICFUWVBFX09WRVJG TE9XX1dSQVBTICh0eXBlKQotICAgICAgJiYgKGZsYWdfZGVsZXRlX251bGxfcG9pbnRlcl9jaGVj a3MKLQkgIHx8ICF3aTo6c2lnbl9tYXNrIChyaF91YikpKQotICAgIHIgPSByYW5nZV9ub256ZXJv ICh0eXBlKTsKLSAgZWxzZSBpZiAobGhfbGIgPT0gbGhfdWIgJiYgbGhfbGIgPT0gMAotCSAgICYm IHJoX2xiID09IHJoX3ViICYmIHJoX2xiID09IDApCi0gICAgciA9IHJhbmdlX3plcm8gKHR5cGUp OwotICBlbHNlCi0gICByLnNldF92YXJ5aW5nICh0eXBlKTsKLX0KLQotYm9vbAotcG9pbnRlcl9w bHVzX29wZXJhdG9yOjpvcDJfcmFuZ2UgKGlyYW5nZSAmciwgdHJlZSB0eXBlLAotCQkJCSAgY29u c3QgaXJhbmdlICZsaHMgQVRUUklCVVRFX1VOVVNFRCwKLQkJCQkgIGNvbnN0IGlyYW5nZSAmb3Ax IEFUVFJJQlVURV9VTlVTRUQsCi0JCQkJICByZWxhdGlvbl90cmlvIHRyaW8pIGNvbnN0Ci17Ci0g IHJlbGF0aW9uX2tpbmQgcmVsID0gdHJpby5saHNfb3AxICgpOwotICByLnNldF92YXJ5aW5nICh0 eXBlKTsKLQotICAvLyBJZiB0aGUgTEhTIGFuZCBPUDEgYXJlIGVxdWFsLCB0aGUgb3AyIG11c3Qg YmUgemVyby4KLSAgaWYgKHJlbCA9PSBWUkVMX0VRKQotICAgIHIuc2V0X3plcm8gKHR5cGUpOwot ICAvLyBJZiB0aGUgTEhTIGFuZCBPUDEgYXJlIG5vdCBlcXVhbCwgdGhlIG9mZnNldCBtdXN0IGJl IG5vbi16ZXJvLgotICBlbHNlIGlmIChyZWwgPT0gVlJFTF9ORSkKLSAgICByLnNldF9ub256ZXJv ICh0eXBlKTsKLSAgZWxzZQotICAgIHJldHVybiBmYWxzZTsKLSAgcmV0dXJuIHRydWU7Ci19Ci0K LWNsYXNzIHBvaW50ZXJfbWluX21heF9vcGVyYXRvciA6IHB1YmxpYyByYW5nZV9vcGVyYXRvcgot ewotcHVibGljOgotICB2aXJ0dWFsIHZvaWQgd2lfZm9sZCAoaXJhbmdlICYgciwgdHJlZSB0eXBl LAotCQkJY29uc3Qgd2lkZV9pbnQgJmxoX2xiLCBjb25zdCB3aWRlX2ludCAmbGhfdWIsCi0JCQlj b25zdCB3aWRlX2ludCAmcmhfbGIsIGNvbnN0IHdpZGVfaW50ICZyaF91YikgY29uc3Q7Ci19IG9w X3B0cl9taW5fbWF4OwotCi12b2lkCi1wb2ludGVyX21pbl9tYXhfb3BlcmF0b3I6OndpX2ZvbGQg KGlyYW5nZSAmciwgdHJlZSB0eXBlLAotCQkJCSAgIGNvbnN0IHdpZGVfaW50ICZsaF9sYiwKLQkJ CQkgICBjb25zdCB3aWRlX2ludCAmbGhfdWIsCi0JCQkJICAgY29uc3Qgd2lkZV9pbnQgJnJoX2xi LAotCQkJCSAgIGNvbnN0IHdpZGVfaW50ICZyaF91YikgY29uc3QKLXsKLSAgLy8gRm9yIE1JTi9N QVggZXhwcmVzc2lvbnMgd2l0aCBwb2ludGVycywgd2Ugb25seSBjYXJlIGFib3V0Ci0gIC8vIG51 bGxuZXNzLiAgSWYgYm90aCBhcmUgbm9uIG51bGwsIHRoZW4gdGhlIHJlc3VsdCBpcyBub25udWxs LgotICAvLyBJZiBib3RoIGFyZSBudWxsLCB0aGVuIHRoZSByZXN1bHQgaXMgbnVsbC4gIE90aGVy d2lzZSB0aGV5Ci0gIC8vIGFyZSB2YXJ5aW5nLgotICBpZiAoIXdpX2luY2x1ZGVzX3plcm9fcCAo dHlwZSwgbGhfbGIsIGxoX3ViKQotICAgICAgJiYgIXdpX2luY2x1ZGVzX3plcm9fcCAodHlwZSwg cmhfbGIsIHJoX3ViKSkKLSAgICByID0gcmFuZ2Vfbm9uemVybyAodHlwZSk7Ci0gIGVsc2UgaWYg KHdpX3plcm9fcCAodHlwZSwgbGhfbGIsIGxoX3ViKSAmJiB3aV96ZXJvX3AgKHR5cGUsIHJoX2xi LCByaF91YikpCi0gICAgciA9IHJhbmdlX3plcm8gKHR5cGUpOwotICBlbHNlCi0gICAgci5zZXRf dmFyeWluZyAodHlwZSk7Ci19Ci0KLQotY2xhc3MgcG9pbnRlcl9hbmRfb3BlcmF0b3IgOiBwdWJs aWMgcmFuZ2Vfb3BlcmF0b3IKLXsKLXB1YmxpYzoKLSAgdmlydHVhbCB2b2lkIHdpX2ZvbGQgKGly YW5nZSAmciwgdHJlZSB0eXBlLAotCQkJY29uc3Qgd2lkZV9pbnQgJmxoX2xiLCBjb25zdCB3aWRl X2ludCAmbGhfdWIsCi0JCQljb25zdCB3aWRlX2ludCAmcmhfbGIsIGNvbnN0IHdpZGVfaW50ICZy aF91YikgY29uc3Q7Ci19IG9wX3BvaW50ZXJfYW5kOwotCi12b2lkCi1wb2ludGVyX2FuZF9vcGVy YXRvcjo6d2lfZm9sZCAoaXJhbmdlICZyLCB0cmVlIHR5cGUsCi0JCQkgICAgICAgY29uc3Qgd2lk ZV9pbnQgJmxoX2xiLAotCQkJICAgICAgIGNvbnN0IHdpZGVfaW50ICZsaF91YiwKLQkJCSAgICAg ICBjb25zdCB3aWRlX2ludCAmcmhfbGIgQVRUUklCVVRFX1VOVVNFRCwKLQkJCSAgICAgICBjb25z dCB3aWRlX2ludCAmcmhfdWIgQVRUUklCVVRFX1VOVVNFRCkgY29uc3QKLXsKLSAgLy8gRm9yIHBv aW50ZXIgdHlwZXMsIHdlIGFyZSByZWFsbHkgb25seSBpbnRlcmVzdGVkIGluIGFzc2VydGluZwot ICAvLyB3aGV0aGVyIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byBub24tTlVMTC4KLSAgaWYg KHdpX3plcm9fcCAodHlwZSwgbGhfbGIsIGxoX3ViKSB8fCB3aV96ZXJvX3AgKHR5cGUsIGxoX2xi LCBsaF91YikpCi0gICAgciA9IHJhbmdlX3plcm8gKHR5cGUpOwotICBlbHNlIAotICAgIHIuc2V0 X3ZhcnlpbmcgKHR5cGUpOwotfQotCi0KLWNsYXNzIHBvaW50ZXJfb3Jfb3BlcmF0b3IgOiBwdWJs aWMgcmFuZ2Vfb3BlcmF0b3IKLXsKLSAgdXNpbmcgcmFuZ2Vfb3BlcmF0b3I6Om9wMV9yYW5nZTsK LSAgdXNpbmcgcmFuZ2Vfb3BlcmF0b3I6Om9wMl9yYW5nZTsKLXB1YmxpYzoKLSAgdmlydHVhbCBi b29sIG9wMV9yYW5nZSAoaXJhbmdlICZyLCB0cmVlIHR5cGUsCi0JCQkgIGNvbnN0IGlyYW5nZSAm bGhzLAotCQkJICBjb25zdCBpcmFuZ2UgJm9wMiwKLQkJCSAgcmVsYXRpb25fdHJpbyByZWwgPSBU UklPX1ZBUllJTkcpIGNvbnN0OwotICB2aXJ0dWFsIGJvb2wgb3AyX3JhbmdlIChpcmFuZ2UgJnIs IHRyZWUgdHlwZSwKLQkJCSAgY29uc3QgaXJhbmdlICZsaHMsCi0JCQkgIGNvbnN0IGlyYW5nZSAm b3AxLAotCQkJICByZWxhdGlvbl90cmlvIHJlbCA9IFRSSU9fVkFSWUlORykgY29uc3Q7Ci0gIHZp cnR1YWwgdm9pZCB3aV9mb2xkIChpcmFuZ2UgJnIsIHRyZWUgdHlwZSwKLQkJCWNvbnN0IHdpZGVf aW50ICZsaF9sYiwgY29uc3Qgd2lkZV9pbnQgJmxoX3ViLAotCQkJY29uc3Qgd2lkZV9pbnQgJnJo X2xiLCBjb25zdCB3aWRlX2ludCAmcmhfdWIpIGNvbnN0OwotfSBvcF9wb2ludGVyX29yOwotCi1i b29sCi1wb2ludGVyX29yX29wZXJhdG9yOjpvcDFfcmFuZ2UgKGlyYW5nZSAmciwgdHJlZSB0eXBl LAotCQkJCWNvbnN0IGlyYW5nZSAmbGhzLAotCQkJCWNvbnN0IGlyYW5nZSAmb3AyIEFUVFJJQlVU RV9VTlVTRUQsCi0JCQkJcmVsYXRpb25fdHJpbykgY29uc3QKLXsKLSAgaWYgKGxocy51bmRlZmlu ZWRfcCAoKSkKLSAgICByZXR1cm4gZmFsc2U7Ci0gIGlmIChsaHMuemVyb19wICgpKQotICAgIHsK LSAgICAgIHIuc2V0X3plcm8gKHR5cGUpOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICBy LnNldF92YXJ5aW5nICh0eXBlKTsKLSAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wKLXBvaW50ZXJf b3Jfb3BlcmF0b3I6Om9wMl9yYW5nZSAoaXJhbmdlICZyLCB0cmVlIHR5cGUsCi0JCQkJY29uc3Qg aXJhbmdlICZsaHMsCi0JCQkJY29uc3QgaXJhbmdlICZvcDEsCi0JCQkJcmVsYXRpb25fdHJpbykg Y29uc3QKLXsKLSAgcmV0dXJuIHBvaW50ZXJfb3Jfb3BlcmF0b3I6Om9wMV9yYW5nZSAociwgdHlw ZSwgbGhzLCBvcDEpOwotfQotCi12b2lkCi1wb2ludGVyX29yX29wZXJhdG9yOjp3aV9mb2xkIChp cmFuZ2UgJnIsIHRyZWUgdHlwZSwKLQkJCSAgICAgIGNvbnN0IHdpZGVfaW50ICZsaF9sYiwKLQkJ CSAgICAgIGNvbnN0IHdpZGVfaW50ICZsaF91YiwKLQkJCSAgICAgIGNvbnN0IHdpZGVfaW50ICZy aF9sYiwKLQkJCSAgICAgIGNvbnN0IHdpZGVfaW50ICZyaF91YikgY29uc3QKLXsKLSAgLy8gRm9y IHBvaW50ZXIgdHlwZXMsIHdlIGFyZSByZWFsbHkgb25seSBpbnRlcmVzdGVkIGluIGFzc2VydGlu ZwotICAvLyB3aGV0aGVyIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byBub24tTlVMTC4KLSAg aWYgKCF3aV9pbmNsdWRlc196ZXJvX3AgKHR5cGUsIGxoX2xiLCBsaF91YikKLSAgICAgICYmICF3 aV9pbmNsdWRlc196ZXJvX3AgKHR5cGUsIHJoX2xiLCByaF91YikpCi0gICAgciA9IHJhbmdlX25v bnplcm8gKHR5cGUpOwotICBlbHNlIGlmICh3aV96ZXJvX3AgKHR5cGUsIGxoX2xiLCBsaF91Yikg JiYgd2lfemVyb19wICh0eXBlLCByaF9sYiwgcmhfdWIpKQotICAgIHIgPSByYW5nZV96ZXJvICh0 eXBlKTsKLSAgZWxzZQotICAgIHIuc2V0X3ZhcnlpbmcgKHR5cGUpOwotfQogDAogLy8gSW5pdGlh bGl6ZSBhbnkgaW50ZWdyYWwgb3BlcmF0b3JzIHRvIHRoZSBwcmltYXJ5IHRhYmxlCiAKQEAgLTQ1 MzcsMjMgKzQzMDAsNiBAQCByYW5nZV9vcF90YWJsZTo6aW5pdGlhbGl6ZV9pbnRlZ3JhbF9vcHMg KCkKICAgc2V0IChBQlNVX0VYUFIsIG9wX2Fic3UpOwogfQogCi1wb2ludGVyX3RhYmxlOjpwb2lu dGVyX3RhYmxlICgpCi17Ci0gIHNldCAoQklUX0FORF9FWFBSLCBvcF9wb2ludGVyX2FuZCk7Ci0g IHNldCAoQklUX0lPUl9FWFBSLCBvcF9wb2ludGVyX29yKTsKLSAgc2V0IChNSU5fRVhQUiwgb3Bf cHRyX21pbl9tYXgpOwotICBzZXQgKE1BWF9FWFBSLCBvcF9wdHJfbWluX21heCk7Ci19Ci0KLS8v IEluaXRpYWxpemUgYW55IHBvaW50ZXIgb3BlcmF0b3JzIHRvIHRoZSBwcmltYXJ5IHRhYmxlCi0K LXZvaWQKLXJhbmdlX29wX3RhYmxlOjppbml0aWFsaXplX3BvaW50ZXJfb3BzICgpCi17Ci0gIHNl dCAoUE9JTlRFUl9QTFVTX0VYUFIsIG9wX3BvaW50ZXJfcGx1cyk7Ci0gIHNldCAoUE9JTlRFUl9E SUZGX0VYUFIsIG9wX3BvaW50ZXJfZGlmZik7Ci19Ci0KICNpZiBDSEVDS0lOR19QCiAjaW5jbHVk ZSAic2VsZnRlc3QuaCIKIAotLSAKMi40MC4xCgo= --------------qixlNdXjykta0Pmz6E04503D--