From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 66846 invoked by alias); 8 Sep 2016 06:06:40 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 66824 invoked by uid 89); 8 Sep 2016 06:06:39 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=2.1 required=5.0 tests=AWL,BAYES_50,RCVD_IN_DNSWL_LOW,RCVD_IN_SORBS_SPAM autolearn=no version=3.3.2 spammy=sk:build_n, gol, size_type_node, @gol X-HELO: mail-oi0-f44.google.com Received: from mail-oi0-f44.google.com (HELO mail-oi0-f44.google.com) (209.85.218.44) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 08 Sep 2016 06:06:29 +0000 Received: by mail-oi0-f44.google.com with SMTP id s131so57385050oie.2 for ; Wed, 07 Sep 2016 23:06:29 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=FxHQsRmXw5lAheFOYc9bS8oKTF/WmqSOmRKXajJso3o=; b=Kkdtfvliac2pWDwe73HnhaNPl276aVcBFXz9DF6syHOb5ArWcQfIPSqI7/BHtAa2tB drmuUm6qvGDZsY5kgrN8kIK1V6qBDbZ8OyoKkT/Cgv15SPmA2q/lEHyeEWb/e2o1+okg cKJSFJ3Lbv4gMQLA4tp6CALVVUNXZYBioh9aOsVNJ5R54EY74pk68VLuvS0/4DTsrrkj UIjyaIntyTgkWGHn6qXJD/pnrDhx1cHEbEDHrB6XbJlJdvghqibZfMpOOyJ6pQKfvC1g RCyUpdS2MKIKKkV5N0hvQf37r2Igf5ge33Q27dUG/+KKaHeUcpB/S3q29wpoM7FKbKNm brvw== X-Gm-Message-State: AE9vXwMkvnm4Nv63yXG8qwPNYd/omNqoYhyjmG7RiabL30NivVe22lRQYtGgzNl+Smd6DT78Yc8Q9tG5S3V/tNc1 X-Received: by 10.157.50.203 with SMTP id u69mr11881505otb.157.1473314787583; Wed, 07 Sep 2016 23:06:27 -0700 (PDT) MIME-Version: 1.0 Received: by 10.182.105.169 with HTTP; Wed, 7 Sep 2016 23:06:06 -0700 (PDT) From: Jason Merrill Date: Thu, 08 Sep 2016 07:10:00 -0000 Message-ID: Subject: RFA (libstdc++): PATCH to implement C++17 over-aligned new To: gcc-patches List , libstdc++@gcc.gnu.org, "Joseph S. Myers" Content-Type: multipart/mixed; boundary=001a114949048e980c053bf8d407 X-IsSubscribed: yes X-SW-Source: 2016-09/txt/msg00422.txt.bz2 --001a114949048e980c053bf8d407 Content-Type: text/plain; charset=UTF-8 Content-length: 932 This patch adds support for C++17 allocation of types with alignment greater than max_align_t using 'new'. This is on by default in C++17 and can also be enabled for other -std= with -falign-new. If a user wants to use a different boundary than alignof(max_align_t), perhaps because their malloc provides more or less alignment than glibc's, they can specify -falign-new=. The patch also adds a warning about allocating an over-aligned type without using an aligned new-operator, which is enabled by -Wall. libstdc++ folk: Does my configury handling of different C library functions that might be usable for aligned allocation make sense? Is the (standard-conforming) implementation of the nothrow allocation function OK despite Jonathan's comment in bug 68210? OK for trunk? Joseph: My introduction of max_align_t_align will need to be merged with your change to cxx_fundamental_alignment_p. Tested x86_64-pc-linux-gnu. --001a114949048e980c053bf8d407 Content-Type: text/plain; charset=US-ASCII; name="aligned-new.diff" Content-Disposition: attachment; filename="aligned-new.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_istxahq30 Content-length: 75287 Y29tbWl0IGJlYTdhMzIyYTNiMmJhZGMzZTgwYmRkZWU3ZDVlNmIyMGY0YzJm ZTAKQXV0aG9yOiBKYXNvbiBNZXJyaWxsIDxqYXNvbkByZWRoYXQuY29tPgpE YXRlOiAgIFdlZCBTZXAgNyAxNjoyMjo1NCAyMDE2IC0wNDAwCgogICAgICAg ICAgICBJbXBsZW1lbnQgUDAwMzVSNCwgQysrMTcgbmV3IG9mIG92ZXItYWxp Z25lZCB0eXBlcy4KICAgIAogICAgZ2NjL2NwLwogICAgICAgICAgICAqIGNw LXRyZWUuaCAoZW51bSBjcF90cmVlX2luZGV4KTogQWRkIENQVElfQUxJR05f VFlQRS4KICAgICAgICAgICAgKGFsaWduX3R5cGVfbm9kZSk6IE5ldyBtYWNy by4KICAgICAgICAgICAgKiBjYWxsLmMgKGJ1aWxkX29wZXJhdG9yX25ld19j YWxsKTogSGFuZGxlIEMrKzE3IGFsaWduZWQgbmV3LgogICAgICAgICAgICAo c2Vjb25kX3Bhcm1faXNfc2l6ZV90LCBidWlsZF9vcF9kZWxldGVfY2FsbCk6 IExpa2V3aXNlLgogICAgICAgICAgICAobm9uX3BsYWNlbWVudF9kZWFsbG9j YXRpb25fZm5fcCk6IExpa2V3aXNlLiBSZW5hbWUgdG8KICAgICAgICAgICAg dXN1YWxfZGVhbGxvY2F0aW9uX2ZuX3AuCiAgICAgICAgICAgIChhbGlnbmVk X2FsbG9jYXRpb25fZm5fcCwgYWxpZ25lZF9kZWFsbG9jYXRpb25fZm5fcCk6 IE5ldy4KICAgICAgICAgICAgKiBkZWNsLmMgKGN4eF9pbml0X2RlY2xfcHJv Y2Vzc2luZyk6IEFkZCBhbGlnbmVkIG5ldyBzdXBwb3J0LgogICAgICAgICAg ICAqIGluaXQuYyAodHlwZV9oYXNfbmV3X2V4dGVuZGVkX2FsaWdubWVudCk6 IE5ldy4KICAgICAgICAgICAgKGJ1aWxkX25ld18xKTogSGFuZGxlIGFsaWdu ZWQgbmV3LgogICAgICAgICAgICAqIHRyZWUuYyAodmVjX2NvcHlfYW5kX2lu c2VydCk6IE5ldy4KICAgIGdjYy9jLWZhbWlseS8KICAgICAgICAgICAgKiBj Lm9wdDogQWRkIC1mYWxpZ25lZC1uZXcgYW5kIC1XYWxpZ25lZC1uZXcuCiAg ICAgICAgICAgICogYy1jb21tb24uYyAobWF4X2FsaWduX3RfYWxpZ24pOiBT cGxpdCBvdXQgZnJvbS4uLgogICAgICAgICAgICAoY3h4X2Z1bmRhbWVudGFs X2FsaWdubWVudF9wKTogLi4uaGVyZS4KICAgICAgICAgICAgKiBjLWNvbW1v bi5oOiBEZWNsYXJlIGl0LgogICAgICAgICAgICAqIGMtY3BwYnVpbHRpbi5j IChjX2NwcF9idWlsdGlucyk6IEhhbmRsZSBhbGlnbmVkIG5ldy4KICAgIGxp YnN0ZGMrKy12My8KICAgICAgICAgICAgKiBsaWJzdXBjKysvbmV3OiBEZWNs YXJlIGFsaWduZWQgbmV3L2RlbGV0ZSBvcGVyYXRvcnMuCiAgICAgICAgICAg ICogY29uZmlnL2FiaS9wcmUvZ251LnZlcjogRXhwb3J0IHRoZW0uCiAgICAg ICAgICAgICogY29uZmlndXJlLmFjOiBDaGVjayBmb3IgYWxpZ25lZF9hbGxv YywgcG9zaXhfbWVtYWxpZ24sIG1lbWFsaWduLgogICAgICAgICAgICAqIGxp YnN1cGMrKy9uZXdfb3BhLmNjOiBOZXcuCiAgICAgICAgICAgICogbGlic3Vw YysrL25ld19vcGFudC5jYzogTmV3LgogICAgICAgICAgICAqIGxpYnN1cGMr Ky9uZXdfb3B2YS5jYzogTmV3LgogICAgICAgICAgICAqIGxpYnN1cGMrKy9u ZXdfb3B2YS5jYzogTmV3LgogICAgICAgICAgICAqIGxpYnN1cGMrKy9kZWxf b3BhLmNjOiBOZXcuCiAgICAgICAgICAgICogbGlic3VwYysrL2RlbF9vcGFu dC5jYzogTmV3LgogICAgICAgICAgICAqIGxpYnN1cGMrKy9kZWxfb3BzYS5j YzogTmV3LgogICAgICAgICAgICAqIGxpYnN1cGMrKy9kZWxfb3B2YS5jYzog TmV3LgogICAgICAgICAgICAqIGxpYnN1cGMrKy9kZWxfb3B2YW50LmNjOiBO ZXcuCiAgICAgICAgICAgICogbGlic3VwYysrL2RlbF9vcHZzYS5jYzogTmV3 LgogICAgICAgICAgICAqIGxpYnN1cGMrKy9NYWtlZmlsZS5hbTogQnVpbGQg dGhlbS4KCmRpZmYgLS1naXQgYS9nY2MvYy1mYW1pbHkvYy1jb21tb24uYyBi L2djYy9jLWZhbWlseS9jLWNvbW1vbi5jCmluZGV4IGRlOWY4ODEuLjEyZDBl MTggMTAwNjQ0Ci0tLSBhL2djYy9jLWZhbWlseS9jLWNvbW1vbi5jCisrKyBi L2djYy9jLWZhbWlseS9jLWNvbW1vbi5jCkBAIC0xMjg3NSw2ICsxMjg3NSwx OSBAQCBzY2FsYXJfdG9fdmVjdG9yIChsb2NhdGlvbl90IGxvYywgZW51bSB0 cmVlX2NvZGUgY29kZSwgdHJlZSBvcDAsIHRyZWUgb3AxLAogICByZXR1cm4g c3R2X25vdGhpbmc7CiB9CiAKKy8qIFJldHVybiB0aGUgYWxpZ25tZW50IG9m IHN0ZDo6bWF4X2FsaWduX3QuCisKKyAgIFtzdXBwb3J0LnR5cGVzLmxheW91 dF0gVGhlIHR5cGUgbWF4X2FsaWduX3QgaXMgYSBQT0QgdHlwZSB3aG9zZSBh bGlnbm1lbnQKKyAgIHJlcXVpcmVtZW50IGlzIGF0IGxlYXN0IGFzIGdyZWF0 IGFzIHRoYXQgb2YgZXZlcnkgc2NhbGFyIHR5cGUsIGFuZCB3aG9zZQorICAg YWxpZ25tZW50IHJlcXVpcmVtZW50IGlzIHN1cHBvcnRlZCBpbiBldmVyeSBj b250ZXh0LiAgKi8KKwordW5zaWduZWQKK21heF9hbGlnbl90X2FsaWduICgp Cit7CisgIHJldHVybiBNQVggKFRZUEVfQUxJR04gKGxvbmdfbG9uZ19pbnRl Z2VyX3R5cGVfbm9kZSksCisJICAgICAgVFlQRV9BTElHTiAobG9uZ19kb3Vi bGVfdHlwZV9ub2RlKSk7Cit9CisKIC8qIFJldHVybiB0cnVlIGlmZiBBTElH TiBpcyBhbiBpbnRlZ3JhbCBjb25zdGFudCB0aGF0IGlzIGEgZnVuZGFtZW50 YWwKICAgIGFsaWdubWVudCwgYXMgZGVmaW5lZCBieSBbYmFzaWMuYWxpZ25d IGluIHRoZSBjKystMTEKICAgIHNwZWNpZmljYXRpb25zLgpAQCAtMTI4ODMs MTQgKzEyODk2LDEyIEBAIHNjYWxhcl90b192ZWN0b3IgKGxvY2F0aW9uX3Qg bG9jLCBlbnVtIHRyZWVfY29kZSBjb2RlLCB0cmVlIG9wMCwgdHJlZSBvcDEs CiAKICAgICAgICBbQSBmdW5kYW1lbnRhbCBhbGlnbm1lbnQgaXMgcmVwcmVz ZW50ZWQgYnkgYW4gYWxpZ25tZW50IGxlc3MgdGhhbiBvcgogICAgICAgICBl cXVhbCB0byB0aGUgZ3JlYXRlc3QgYWxpZ25tZW50IHN1cHBvcnRlZCBieSB0 aGUgaW1wbGVtZW50YXRpb24KLSAgICAgICAgaW4gYWxsIGNvbnRleHRzLCB3 aGljaCBpcyBlcXVhbCB0bwotICAgICAgICBhbGlnbm9mKG1heF9hbGlnbl90 KV0uICAqLworICAgICAgICBpbiBhbGwgY29udGV4dHMsIHdoaWNoIGlzIGVx dWFsIHRvIGFsaWdub2YobWF4X2FsaWduX3QpXS4gICovCiAKIGJvb2wKLWN4 eF9mdW5kYW1lbnRhbF9hbGlnbm1lbnRfcCAgKHVuc2lnbmVkIGFsaWduKQor Y3h4X2Z1bmRhbWVudGFsX2FsaWdubWVudF9wICh1bnNpZ25lZCBhbGlnbikK IHsKLSAgcmV0dXJuIChhbGlnbiA8PSAgTUFYIChUWVBFX0FMSUdOIChsb25n X2xvbmdfaW50ZWdlcl90eXBlX25vZGUpLAotCQkJIFRZUEVfQUxJR04gKGxv bmdfZG91YmxlX3R5cGVfbm9kZSkpKTsKKyAgcmV0dXJuIChhbGlnbiA8PSBt YXhfYWxpZ25fdF9hbGlnbiAoKSk7CiB9CiAKIC8qIFJldHVybiB0cnVlIGlm IFQgaXMgYSBwb2ludGVyIHRvIGEgemVyby1zaXplZCBhZ2dyZWdhdGUuICAq LwpkaWZmIC0tZ2l0IGEvZ2NjL2MtZmFtaWx5L2MtY29tbW9uLmggYi9nY2Mv Yy1mYW1pbHkvYy1jb21tb24uaAppbmRleCA0MmNlOTY5Li5iYWFjYjZjIDEw MDY0NAotLS0gYS9nY2MvYy1mYW1pbHkvYy1jb21tb24uaAorKysgYi9nY2Mv Yy1mYW1pbHkvYy1jb21tb24uaApAQCAtODYzLDYgKzg2Myw3IEBAIGV4dGVy biBib29sIGtleXdvcmRfYmVnaW5zX3R5cGVfc3BlY2lmaWVyIChlbnVtIHJp ZCk7CiBleHRlcm4gYm9vbCBrZXl3b3JkX2lzX3N0b3JhZ2VfY2xhc3Nfc3Bl Y2lmaWVyIChlbnVtIHJpZCk7CiBleHRlcm4gYm9vbCBrZXl3b3JkX2lzX3R5 cGVfcXVhbGlmaWVyIChlbnVtIHJpZCk7CiBleHRlcm4gYm9vbCBrZXl3b3Jk X2lzX2RlY2xfc3BlY2lmaWVyIChlbnVtIHJpZCk7CitleHRlcm4gdW5zaWdu ZWQgbWF4X2FsaWduX3RfYWxpZ24gKHZvaWQpOwogZXh0ZXJuIGJvb2wgY3h4 X2Z1bmRhbWVudGFsX2FsaWdubWVudF9wICh1bnNpZ25lZCk7CiBleHRlcm4g Ym9vbCBwb2ludGVyX3RvX3plcm9fc2l6ZWRfYWdncl9wICh0cmVlKTsKIGV4 dGVybiBib29sIGRpYWdub3NlX21pc21hdGNoZWRfYXR0cmlidXRlcyAodHJl ZSwgdHJlZSk7CmRpZmYgLS1naXQgYS9nY2MvYy1mYW1pbHkvYy1jcHBidWls dGluLmMgYi9nY2MvYy1mYW1pbHkvYy1jcHBidWlsdGluLmMKaW5kZXggZWU0 ZDIzMy4uZWEzNDE4NyAxMDA2NDQKLS0tIGEvZ2NjL2MtZmFtaWx5L2MtY3Bw YnVpbHRpbi5jCisrKyBiL2djYy9jLWZhbWlseS9jLWNwcGJ1aWx0aW4uYwpA QCAtOTA2LDYgKzkwNiwxMiBAQCBjX2NwcF9idWlsdGlucyAoY3BwX3JlYWRl ciAqcGZpbGUpCiAJY3BwX2RlZmluZSAocGZpbGUsICJfX2NwcF90cmFuc2Fj dGlvbmFsX21lbW9yeT0yMTA1MDAiKTsKICAgICAgIGlmIChmbGFnX3NpemVk X2RlYWxsb2NhdGlvbikKIAljcHBfZGVmaW5lIChwZmlsZSwgIl9fY3BwX3Np emVkX2RlYWxsb2NhdGlvbj0yMDEzMDkiKTsKKyAgICAgIGlmIChhbGlnbmVk X25ld190aHJlc2hob2xkKQorCXsKKwkgIGNwcF9kZWZpbmUgKHBmaWxlLCAi X19jcHBfYWxpZ25lZF9uZXc9MjAxNjA2Iik7CisJICBjcHBfZGVmaW5lX2Zv cm1hdHRlZCAocGZpbGUsICJfX1NURENQUF9ERUZBVUxUX05FV19BTElHTk1F TlRfXz0lZCIsCisJCQkJYWxpZ25lZF9uZXdfdGhyZXNoaG9sZCk7CisJfQog ICAgIH0KICAgLyogTm90ZSB0aGF0IHdlIGRlZmluZSB0aGlzIGZvciBDIGFz IHdlbGwsIHNvIHRoYXQgd2Uga25vdyBpZgogICAgICBfX2F0dHJpYnV0ZV9f KChjbGVhbnVwKSkgd2lsbCBpbnRlcmZhY2Ugd2l0aCBFSC4gICovCmRpZmYg LS1naXQgYS9nY2MvYy1mYW1pbHkvYy5vcHQgYi9nY2MvYy1mYW1pbHkvYy5v cHQKaW5kZXggYTUzNThlZC4uYzU1YzdjMyAxMDA2NDQKLS0tIGEvZ2NjL2Mt ZmFtaWx5L2Mub3B0CisrKyBiL2djYy9jLWZhbWlseS9jLm9wdApAQCAtMjcx LDYgKzI3MSwyNiBAQCBXYWRkcmVzcwogQyBPYmpDIEMrKyBPYmpDKysgVmFy KHdhcm5fYWRkcmVzcykgV2FybmluZyBMYW5nRW5hYmxlZEJ5KEMgT2JqQyBD KysgT2JqQysrLFdhbGwpCiBXYXJuIGFib3V0IHN1c3BpY2lvdXMgdXNlcyBv ZiBtZW1vcnkgYWRkcmVzc2VzLgogCitFbnVtCitOYW1lKHdhcm5fYWxpZ25l ZF9uZXdfbGV2ZWwpIFR5cGUoaW50KSBVbmtub3duRXJyb3IoYXJndW1lbnQg JXFzIHRvICU8LVdhbGlnbmVkLW5ldyU+IG5vdCByZWNvZ25pemVkKQorCitF bnVtVmFsdWUKK0VudW0od2Fybl9hbGlnbmVkX25ld19sZXZlbCkgU3RyaW5n KG5vbmUpIFZhbHVlKDApCisKK0VudW1WYWx1ZQorRW51bSh3YXJuX2FsaWdu ZWRfbmV3X2xldmVsKSBTdHJpbmcoZ2xvYmFsKSBWYWx1ZSgxKQorCitFbnVt VmFsdWUKK0VudW0od2Fybl9hbGlnbmVkX25ld19sZXZlbCkgU3RyaW5nKGFs bCkgVmFsdWUoMikKKworV2FsaWduZWQtbmV3CitDKysgT2JqQysrIEFsaWFz KFdhbGlnbmVkLW5ldz0sZ2xvYmFsLG5vbmUpCitXYXJuIGFib3V0ICduZXcn IG9mIHR5cGUgd2l0aCBleHRlbmRlZCBhbGlnbm1lbnQgd2l0aG91dCAtZmFs aWduZWQtbmV3LgorCitXYWxpZ25lZC1uZXc9CitDKysgT2JqQysrIFZhcih3 YXJuX2FsaWduZWRfbmV3KSBFbnVtKHdhcm5fYWxpZ25lZF9uZXdfbGV2ZWwp IEpvaW5lZCBXYXJuaW5nIExhbmdFbmFibGVkQnkoQysrIE9iakMrKyxXYWxs LDEsMCkKKy1XYWxpZ25lZC1uZXc9YWxsIFdhcm4gZXZlbiBpZiAnbmV3JyB1 c2VzIGEgY2xhc3MgbWVtYmVyIGFsbG9jYXRpb24gZnVuY3Rpb24uCisKIFdh bGwKIEMgT2JqQyBDKysgT2JqQysrIFdhcm5pbmcKIEVuYWJsZSBtb3N0IHdh cm5pbmcgbWVzc2FnZXMuCkBAIC0xMDMyLDYgKzEwNTIsMTQgQEAgZmFkYS1z cGVjLXBhcmVudD0KIEMgT2JqQyBDKysgT2JqQysrIFJlamVjdE5lZ2F0aXZl IEpvaW5lZCBWYXIoYWRhX3NwZWNzX3BhcmVudCkKIC1mYWRhLXNwZWMtcGFy ZW50PXVuaXQgIER1bXAgQWRhIHNwZWNzIGFzIGNoaWxkIHVuaXRzIG9mIGdp dmVuIHBhcmVudC4KIAorZmFsaWduZWQtbmV3CitDKysgT2JqQysrIEFsaWFz KGZhbGlnbmVkLW5ldz0sMSwwKQorU3VwcG9ydCBDKysxNyBhbGxvY2F0aW9u IG9mIG92ZXItYWxpZ25lZCB0eXBlcy4KKworZmFsaWduZWQtbmV3PQorQysr IE9iakMrKyBKb2luZWQgVmFyKGFsaWduZWRfbmV3X3RocmVzaGhvbGQpIFVJ bnRlZ2VyIEluaXQoLTEpCistZmFsaWduZWQtbmV3PTxOPiBVc2UgQysrMTcg b3Zlci1hbGlnbmVkIHR5cGUgYWxsb2NhdGlvbiBmb3IgYWxpZ25tZW50cyBn cmVhdGVyIHRoYW4gTi4KKwogZmFsbC12aXJ0dWFsCiBDKysgT2JqQysrIEln bm9yZSBXYXJuKHN3aXRjaCAlcXMgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZCkK IApkaWZmIC0tZ2l0IGEvZ2NjL2NwL2NhbGwuYyBiL2djYy9jcC9jYWxsLmMK aW5kZXggMDI0NTE5ZC4uMTY3ZDc3OCAxMDA2NDQKLS0tIGEvZ2NjL2NwL2Nh bGwuYworKysgYi9nY2MvY3AvY2FsbC5jCkBAIC00MjExLDEzICs0MjExLDE0 IEBAIGJ1aWxkX25ld19mdW5jdGlvbl9jYWxsICh0cmVlIGZuLCB2ZWM8dHJl ZSwgdmFfZ2M+ICoqYXJncywgYm9vbCBrb2VuaWdfcCwKIAogdHJlZQogYnVp bGRfb3BlcmF0b3JfbmV3X2NhbGwgKHRyZWUgZm5uYW1lLCB2ZWM8dHJlZSwg dmFfZ2M+ICoqYXJncywKLQkJCSB0cmVlICpzaXplLCB0cmVlICpjb29raWVf c2l6ZSwgdHJlZSBzaXplX2NoZWNrLAorCQkJIHRyZWUgKnNpemUsIHRyZWUg KmNvb2tpZV9zaXplLAorCQkJIHRyZWUgYWxpZ25fYXJnLCB0cmVlIHNpemVf Y2hlY2ssCiAJCQkgdHJlZSAqZm4sIHRzdWJzdF9mbGFnc190IGNvbXBsYWlu KQogewogICB0cmVlIG9yaWdpbmFsX3NpemUgPSAqc2l6ZTsKICAgdHJlZSBm bnM7CiAgIHN0cnVjdCB6X2NhbmRpZGF0ZSAqY2FuZGlkYXRlczsKLSAgc3Ry dWN0IHpfY2FuZGlkYXRlICpjYW5kOworICBzdHJ1Y3Qgel9jYW5kaWRhdGUg KmNhbmQgPSBOVUxMOwogICBib29sIGFueV92aWFibGVfcDsKIAogICBpZiAo Zm4pCkBAIC00MjQ3LDkgKzQyNDgsMjAgQEAgYnVpbGRfb3BlcmF0b3JfbmV3 X2NhbGwgKHRyZWUgZm5uYW1lLCB2ZWM8dHJlZSwgdmFfZ2M+ICoqYXJncywK ICAgICAgd2UgZGlzcmVnYXJkIGJsb2NrLXNjb3BlIGRlY2xhcmF0aW9ucyBv ZiAib3BlcmF0b3IgbmV3Ii4gICovCiAgIGZucyA9IGxvb2t1cF9mdW5jdGlv bl9ub25jbGFzcyAoZm5uYW1lLCAqYXJncywgLypibG9ja19wPSovZmFsc2Up OwogCisgIGlmIChhbGlnbl9hcmcpCisgICAgeworICAgICAgdmVjPHRyZWUs IHZhX2djPiogYWxpZ25fYXJncworCT0gdmVjX2NvcHlfYW5kX2luc2VydCAo KmFyZ3MsIGFsaWduX2FyZywgMSk7CisgICAgICBjYW5kID0gcGVyZm9ybV9v dmVybG9hZF9yZXNvbHV0aW9uIChmbnMsIGFsaWduX2FyZ3MsICZjYW5kaWRh dGVzLAorCQkJCQkgICZhbnlfdmlhYmxlX3AsIHRmX25vbmUpOworICAgICAg LyogSWYgbm8gYWxpZ25lZCBhbGxvY2F0aW9uIGZ1bmN0aW9uIG1hdGNoZXMs IHRyeSBhZ2FpbiB3aXRob3V0IHRoZQorCSBhbGlnbm1lbnQuICAqLworICAg IH0KKwogICAvKiBGaWd1cmUgb3V0IHdoYXQgZnVuY3Rpb24gaXMgYmVpbmcg Y2FsbGVkLiAgKi8KLSAgY2FuZCA9IHBlcmZvcm1fb3ZlcmxvYWRfcmVzb2x1 dGlvbiAoZm5zLCAqYXJncywgJmNhbmRpZGF0ZXMsICZhbnlfdmlhYmxlX3As Ci0JCQkJICAgICAgY29tcGxhaW4pOworICBpZiAoIWNhbmQpCisgICAgY2Fu ZCA9IHBlcmZvcm1fb3ZlcmxvYWRfcmVzb2x1dGlvbiAoZm5zLCAqYXJncywg JmNhbmRpZGF0ZXMsICZhbnlfdmlhYmxlX3AsCisJCQkJCWNvbXBsYWluKTsK IAogICAvKiBJZiBubyBzdWl0YWJsZSBmdW5jdGlvbiBjb3VsZCBiZSBmb3Vu ZCwgaXNzdWUgYW4gZXJyb3IgbWVzc2FnZQogICAgICBhbmQgZ2l2ZSB1cC4g ICovCkBAIC01OTQ1LDE2ICs1OTU3LDY1IEBAIHN0YXRpYyBib29sCiBzZWNv bmRfcGFybV9pc19zaXplX3QgKHRyZWUgZm4pCiB7CiAgIHRyZWUgdCA9IEZV TkNUSU9OX0FSR19DSEFJTiAoZm4pOwotICByZXR1cm4gKHQKLQkgICYmIHNh bWVfdHlwZV9wIChUUkVFX1ZBTFVFICh0KSwgc2l6ZV90eXBlX25vZGUpCi0J ICAmJiBUUkVFX0NIQUlOICh0KSA9PSB2b2lkX2xpc3Rfbm9kZSk7CisgIGlm ICghdCB8fCAhc2FtZV90eXBlX3AgKFRSRUVfVkFMVUUgKHQpLCBzaXplX3R5 cGVfbm9kZSkpCisgICAgcmV0dXJuIGZhbHNlOworICB0ID0gVFJFRV9DSEFJ TiAodCk7CisgIGlmICh0ID09IHZvaWRfbGlzdF9ub2RlKQorICAgIHJldHVy biB0cnVlOworICBpZiAoYWxpZ25lZF9uZXdfdGhyZXNoaG9sZCAmJiB0Cisg ICAgICAmJiBzYW1lX3R5cGVfcCAoVFJFRV9WQUxVRSAodCksIGFsaWduX3R5 cGVfbm9kZSkKKyAgICAgICYmIFRSRUVfQ0hBSU4gKHQpID09IHZvaWRfbGlz dF9ub2RlKQorICAgIHJldHVybiB0cnVlOworICByZXR1cm4gZmFsc2U7Cit9 CisKKy8qIFRydWUgaWYgVCwgYW4gYWxsb2NhdGlvbiBmdW5jdGlvbiwgaGFz IHN0ZDo6YWxpZ25fdmFsX3QgYXMgaXRzIHNlY29uZAorICAgYXJndW1lbnQu ICAqLworCitib29sCithbGlnbmVkX2FsbG9jYXRpb25fZm5fcCAodHJlZSB0 KQoreworICBpZiAoIWFsaWduZWRfbmV3X3RocmVzaGhvbGQpCisgICAgcmV0 dXJuIGZhbHNlOworCisgIHRyZWUgYSA9IEZVTkNUSU9OX0FSR19DSEFJTiAo dCk7CisgIHJldHVybiAoYSAmJiBzYW1lX3R5cGVfcCAoVFJFRV9WQUxVRSAo YSksIGFsaWduX3R5cGVfbm9kZSkpOworfQorCisvKiBSZXR1cm5zIHRydWUg aWZmIFQsIGFuIGVsZW1lbnQgb2YgYW4gT1ZFUkxPQUQgY2hhaW4sIGlzIGEg dXN1YWwgZGVhbGxvY2F0aW9uCisgICBmdW5jdGlvbiAoMy43LjQuMiBbYmFz aWMuc3RjLmR5bmFtaWMuZGVhbGxvY2F0aW9uXSkgd2l0aCBhIHBhcmFtZXRl ciBvZgorICAgc3RkOjphbGlnbl92YWxfdC4gICovCisKK3N0YXRpYyBib29s CithbGlnbmVkX2RlYWxsb2NhdGlvbl9mbl9wICh0cmVlIHQpCit7CisgIGlm ICghYWxpZ25lZF9uZXdfdGhyZXNoaG9sZCkKKyAgICByZXR1cm4gZmFsc2U7 CisKKyAgLyogQSB0ZW1wbGF0ZSBpbnN0YW5jZSBpcyBuZXZlciBhIHVzdWFs IGRlYWxsb2NhdGlvbiBmdW5jdGlvbiwKKyAgICAgcmVnYXJkbGVzcyBvZiBp dHMgc2lnbmF0dXJlLiAgKi8KKyAgaWYgKFRSRUVfQ09ERSAodCkgPT0gVEVN UExBVEVfREVDTAorICAgICAgfHwgcHJpbWFyeV90ZW1wbGF0ZV9pbnN0YW50 aWF0aW9uX3AgKHQpKQorICAgIHJldHVybiBmYWxzZTsKKworICB0cmVlIGEg PSBGVU5DVElPTl9BUkdfQ0hBSU4gKHQpOworICBpZiAoc2FtZV90eXBlX3Ag KFRSRUVfVkFMVUUgKGEpLCBhbGlnbl90eXBlX25vZGUpCisgICAgICAmJiBU UkVFX0NIQUlOIChhKSA9PSB2b2lkX2xpc3Rfbm9kZSkKKyAgICByZXR1cm4g dHJ1ZTsKKyAgaWYgKCFzYW1lX3R5cGVfcCAoVFJFRV9WQUxVRSAoYSksIHNp emVfdHlwZV9ub2RlKSkKKyAgICByZXR1cm4gZmFsc2U7CisgIGEgPSBUUkVF X0NIQUlOIChhKTsKKyAgaWYgKGEgJiYgc2FtZV90eXBlX3AgKFRSRUVfVkFM VUUgKGEpLCBhbGlnbl90eXBlX25vZGUpCisgICAgICAmJiBUUkVFX0NIQUlO IChhKSA9PSB2b2lkX2xpc3Rfbm9kZSkKKyAgICByZXR1cm4gdHJ1ZTsKKyAg cmV0dXJuIGZhbHNlOwogfQogCiAvKiBSZXR1cm5zIHRydWUgaWZmIFQsIGFu IGVsZW1lbnQgb2YgYW4gT1ZFUkxPQUQgY2hhaW4sIGlzIGEgdXN1YWwKICAg IGRlYWxsb2NhdGlvbiBmdW5jdGlvbiAoMy43LjQuMiBbYmFzaWMuc3RjLmR5 bmFtaWMuZGVhbGxvY2F0aW9uXSkuICAqLwogCiBib29sCi1ub25fcGxhY2Vt ZW50X2RlYWxsb2NhdGlvbl9mbl9wICh0cmVlIHQpCit1c3VhbF9kZWFsbG9j YXRpb25fZm5fcCAodHJlZSB0KQogewogICAvKiBBIHRlbXBsYXRlIGluc3Rh bmNlIGlzIG5ldmVyIGEgdXN1YWwgZGVhbGxvY2F0aW9uIGZ1bmN0aW9uLAog ICAgICByZWdhcmRsZXNzIG9mIGl0cyBzaWduYXR1cmUuICAqLwpAQCAtNTk3 MCwxMCArNjAzMSwxNSBAQCBub25fcGxhY2VtZW50X2RlYWxsb2NhdGlvbl9m bl9wICh0cmVlIHQpCiAgICAgIG9mIHdoaWNoIGhhcyB0eXBlIHN0ZDo6c2l6 ZV90ICgxOC4yKSwgdGhlbiB0aGlzIGZ1bmN0aW9uIGlzIGEgdXN1YWwKICAg ICAgZGVhbGxvY2F0aW9uIGZ1bmN0aW9uLiAgKi8KICAgYm9vbCBnbG9iYWwg PSBERUNMX05BTUVTUEFDRV9TQ09QRV9QICh0KTsKLSAgaWYgKEZVTkNUSU9O X0FSR19DSEFJTiAodCkgPT0gdm9pZF9saXN0X25vZGUKKyAgdHJlZSBjaGFp biA9IEZVTkNUSU9OX0FSR19DSEFJTiAodCk7CisgIGlmICghY2hhaW4pCisg ICAgcmV0dXJuIGZhbHNlOworICBpZiAoY2hhaW4gPT0gdm9pZF9saXN0X25v ZGUKICAgICAgIHx8ICgoIWdsb2JhbCB8fCBmbGFnX3NpemVkX2RlYWxsb2Nh dGlvbikKIAkgICYmIHNlY29uZF9wYXJtX2lzX3NpemVfdCAodCkpKQogICAg IHJldHVybiB0cnVlOworICBpZiAoYWxpZ25lZF9kZWFsbG9jYXRpb25fZm5f cCAodCkpCisgICAgcmV0dXJuIHRydWU7CiAgIHJldHVybiBmYWxzZTsKIH0K IApAQCAtNjA3Niw3ICs2MTQyLDcgQEAgYnVpbGRfb3BfZGVsZXRlX2NhbGwg KGVudW0gdHJlZV9jb2RlIGNvZGUsIHRyZWUgYWRkciwgdHJlZSBzaXplLAog CQkgdDsgdCA9IE9WTF9ORVhUICh0KSkKIAkgICAgICB7CiAJCXRyZWUgZWx0 ID0gT1ZMX0NVUlJFTlQgKHQpOwotCQlpZiAobm9uX3BsYWNlbWVudF9kZWFs bG9jYXRpb25fZm5fcCAoZWx0KQorCQlpZiAodXN1YWxfZGVhbGxvY2F0aW9u X2ZuX3AgKGVsdCkKIAkJICAgICYmIEZVTkNUSU9OX0FSR19DSEFJTiAoZWx0 KSA9PSB2b2lkX2xpc3Rfbm9kZSkKIAkJICBnb3RvIG9rOwogCSAgICAgIH0K QEAgLTYxMTgsNTEgKzYxODQsNjIgQEAgYnVpbGRfb3BfZGVsZXRlX2NhbGwg KGVudW0gdHJlZV9jb2RlIGNvZGUsIHRyZWUgYWRkciwgdHJlZSBzaXplLAog CSB0OyB0ID0gT1ZMX05FWFQgKHQpKQogICAgICAgewogCXRyZWUgZWx0ID0g T1ZMX0NVUlJFTlQgKHQpOwotCWlmIChub25fcGxhY2VtZW50X2RlYWxsb2Nh dGlvbl9mbl9wIChlbHQpKQorCWlmICh1c3VhbF9kZWFsbG9jYXRpb25fZm5f cCAoZWx0KSkKIAkgIHsKLQkgICAgZm4gPSBlbHQ7Ci0JICAgIC8qICJJZiBh IGNsYXNzIFQgaGFzIGEgbWVtYmVyIGRlYWxsb2NhdGlvbiBmdW5jdGlvbiBu YW1lZAotCSAgICAgICBvcGVyYXRvciBkZWxldGUgd2l0aCBleGFjdGx5IG9u ZSBwYXJhbWV0ZXIsIHRoZW4gdGhhdAotCSAgICAgICBmdW5jdGlvbiBpcyBh IHVzdWFsIChub24tcGxhY2VtZW50KSBkZWFsbG9jYXRpb24KLQkgICAgICAg ZnVuY3Rpb24uIElmIGNsYXNzIFQgZG9lcyBub3QgZGVjbGFyZSBzdWNoIGFu IG9wZXJhdG9yCi0JICAgICAgIGRlbGV0ZSBidXQgZG9lcyBkZWNsYXJlIGEg bWVtYmVyIGRlYWxsb2NhdGlvbiBmdW5jdGlvbiBuYW1lZAotCSAgICAgICBv cGVyYXRvciBkZWxldGUgd2l0aCBleGFjdGx5IHR3byBwYXJhbWV0ZXJzLCB0 aGUgc2Vjb25kIG9mCi0JICAgICAgIHdoaWNoIGhhcyB0eXBlIHN0ZDo6c2l6 ZV90ICgxOC4yKSwgdGhlbiB0aGlzIGZ1bmN0aW9uIGlzIGEKLQkgICAgICAg dXN1YWwgZGVhbGxvY2F0aW9uIGZ1bmN0aW9uLiIKKwkgICAgaWYgKCFmbikK KwkgICAgICB7CisJCWZuID0gZWx0OworCQljb250aW51ZTsKKwkgICAgICB9 CiAKLQkgICAgICAgU28gaW4gYSBjbGFzcyAodm9pZCopIGJlYXRzICh2b2lk Kiwgc2l6ZV90KS4gICovCisJICAgIC8qIC0tIElmIHRoZSB0eXBlIGhhcyBu ZXctZXh0ZW5kZWQgYWxpZ25tZW50LCBhIGZ1bmN0aW9uIHdpdGggYQorCSAg ICAgICBwYXJhbWV0ZXIgb2YgdHlwZSBzdGQ6OmFsaWduX3ZhbF90IGlzIHBy ZWZlcnJlZDsgb3RoZXJ3aXNlIGEKKwkgICAgICAgZnVuY3Rpb24gd2l0aG91 dCBzdWNoIGEgcGFyYW1ldGVyIGlzIHByZWZlcnJlZC4gSWYgZXhhY3RseSBv bmUKKwkgICAgICAgcHJlZmVycmVkIGZ1bmN0aW9uIGlzIGZvdW5kLCB0aGF0 IGZ1bmN0aW9uIGlzIHNlbGVjdGVkIGFuZCB0aGUKKwkgICAgICAgc2VsZWN0 aW9uIHByb2Nlc3MgdGVybWluYXRlcy4gSWYgbW9yZSB0aGFuIG9uZSBwcmVm ZXJyZWQKKwkgICAgICAgZnVuY3Rpb24gaXMgZm91bmQsIGFsbCBub24tcHJl ZmVycmVkIGZ1bmN0aW9ucyBhcmUgZWxpbWluYXRlZAorCSAgICAgICBmcm9t IGZ1cnRoZXIgY29uc2lkZXJhdGlvbi4gICovCisJICAgIGlmIChhbGlnbmVk X25ld190aHJlc2hob2xkKQorCSAgICAgIHsKKwkJYm9vbCB3YW50X2FsaWdu ID0gdHlwZV9oYXNfbmV3X2V4dGVuZGVkX2FsaWdubWVudCAodHlwZSk7CisJ CWJvb2wgZm5fYWxpZ24gPSBhbGlnbmVkX2RlYWxsb2NhdGlvbl9mbl9wIChm bik7CisJCWJvb2wgZWx0X2FsaWduID0gYWxpZ25lZF9kZWFsbG9jYXRpb25f Zm5fcCAoZWx0KTsKKworCQlpZiAoZWx0X2FsaWduICE9IGZuX2FsaWduKQor CQkgIHsKKwkJICAgIGlmICh3YW50X2FsaWduID09IGVsdF9hbGlnbikKKwkJ ICAgICAgZm4gPSBlbHQ7CisJCSAgICBjb250aW51ZTsKKwkJICB9CisJICAg ICAgfQorCisJICAgIC8qIC0tIElmIHRoZSBkZWFsbG9jYXRpb24gZnVuY3Rp b25zIGhhdmUgY2xhc3Mgc2NvcGUsIHRoZSBvbmUKKwkgICAgICAgd2l0aG91 dCBhIHBhcmFtZXRlciBvZiB0eXBlIHN0ZDo6c2l6ZV90IGlzIHNlbGVjdGVk LiAgKi8KKwkgICAgYm9vbCB3YW50X3NpemU7CiAJICAgIGlmIChERUNMX0NM QVNTX1NDT1BFX1AgKGZuKSkKLQkgICAgICB7Ci0JCWlmIChGVU5DVElPTl9B UkdfQ0hBSU4gKGZuKSA9PSB2b2lkX2xpc3Rfbm9kZSkKLQkJICBicmVhazsK LQkgICAgICB9Ci0JICAgIC8qIEF0IGdsb2JhbCBzY29wZSAoaW4gQysrMTQg YW5kIGFib3ZlKSB0aGUgcnVsZXMgYXJlIGRpZmZlcmVudDoKKwkgICAgICB3 YW50X3NpemUgPSBmYWxzZTsKIAotCSAgICAgICBJZiBkZWFsbG9jYXRpb24g ZnVuY3Rpb24gbG9va3VwIGZpbmRzIGJvdGggYSB1c3VhbAotCSAgICAgICBk ZWFsbG9jYXRpb24gZnVuY3Rpb24gd2l0aCBvbmx5IGEgcG9pbnRlciBwYXJh bWV0ZXIgYW5kIGEKLQkgICAgICAgdXN1YWwgZGVhbGxvY2F0aW9uIGZ1bmN0 aW9uIHdpdGggYm90aCBhIHBvaW50ZXIgcGFyYW1ldGVyCi0JICAgICAgIGFu ZCBhIHNpemUgcGFyYW1ldGVyLCB0aGUgZnVuY3Rpb24gdG8gYmUgY2FsbGVk IGlzIHNlbGVjdGVkCi0JICAgICAgIGFzIGZvbGxvd3M6CisJICAgIC8qIC0t IElmIHRoZSB0eXBlIGlzIGNvbXBsZXRlIGFuZCBpZiwgZm9yIHRoZSBzZWNv bmQgYWx0ZXJuYXRpdmUKKwkgICAgICAgKGRlbGV0ZSBhcnJheSkgb25seSwg dGhlIG9wZXJhbmQgaXMgYSBwb2ludGVyIHRvIGEgY2xhc3MgdHlwZQorCSAg ICAgICB3aXRoIGEgbm9uLXRyaXZpYWwgZGVzdHJ1Y3RvciBvciBhIChwb3Nz aWJseSBtdWx0aS1kaW1lbnNpb25hbCkKKwkgICAgICAgYXJyYXkgdGhlcmVv ZiwgdGhlIGZ1bmN0aW9uIHdpdGggYSBwYXJhbWV0ZXIgb2YgdHlwZSBzdGQ6 OnNpemVfdAorCSAgICAgICBpcyBzZWxlY3RlZC4KIAotCSAgICAgICAqIElm IHRoZSB0eXBlIGlzIGNvbXBsZXRlIGFuZCBpZiwgZm9yIHRoZSBzZWNvbmQg YWx0ZXJuYXRpdmUKLQkgICAgICAgKGRlbGV0ZSBhcnJheSkgb25seSwgdGhl IG9wZXJhbmQgaXMgYSBwb2ludGVyIHRvIGEgY2xhc3MKLQkgICAgICAgdHlw ZSB3aXRoIGEgbm9uLXRyaXZpYWwgZGVzdHJ1Y3RvciBvciBhIChwb3NzaWJs eQotCSAgICAgICBtdWx0aS1kaW1lbnNpb25hbCkgYXJyYXkgdGhlcmVvZiwg dGhlIGZ1bmN0aW9uIHdpdGggdHdvCi0JICAgICAgIHBhcmFtZXRlcnMgaXMg c2VsZWN0ZWQuCi0KLQkgICAgICAgKiBPdGhlcndpc2UsIGl0IGlzIHVuc3Bl Y2lmaWVkIHdoaWNoIG9mIHRoZSB0d28gZGVhbGxvY2F0aW9uCi0JICAgICAg IGZ1bmN0aW9ucyBpcyBzZWxlY3RlZC4gKi8KKwkgICAgICAgLS0gT3RoZXJ3 aXNlLCBpdCBpcyB1bnNwZWNpZmllZCB3aGV0aGVyIGEgZGVhbGxvY2F0aW9u IGZ1bmN0aW9uCisJICAgICAgIHdpdGggYSBwYXJhbWV0ZXIgb2YgdHlwZSBz dGQ6OnNpemVfdCBpcyBzZWxlY3RlZC4gICovCiAJICAgIGVsc2UKIAkgICAg ICB7Ci0JCWJvb2wgd2FudF9zaXplID0gQ09NUExFVEVfVFlQRV9QICh0eXBl KTsKKwkJd2FudF9zaXplID0gQ09NUExFVEVfVFlQRV9QICh0eXBlKTsKIAkJ aWYgKGNvZGUgPT0gVkVDX0RFTEVURV9FWFBSCiAJCSAgICAmJiAhVFlQRV9W RUNfTkVXX1VTRVNfQ09PS0lFICh0eXBlKSkKIAkJICAvKiBXZSBuZWVkIGEg Y29va2llIHRvIGRldGVybWluZSB0aGUgYXJyYXkgc2l6ZS4gICovCiAJCSAg d2FudF9zaXplID0gZmFsc2U7Ci0JCWJvb2wgaGF2ZV9zaXplID0gKEZVTkNU SU9OX0FSR19DSEFJTiAoZm4pICE9IHZvaWRfbGlzdF9ub2RlKTsKLQkJaWYg KHdhbnRfc2l6ZSA9PSBoYXZlX3NpemUpCi0JCSAgYnJlYWs7CiAJICAgICAg fQorCSAgICBib29sIGZuX3NpemUgPSBzZWNvbmRfcGFybV9pc19zaXplX3Qg KGZuKTsKKwkgICAgYm9vbCBlbHRfc2l6ZSA9IHNlY29uZF9wYXJtX2lzX3Np emVfdCAoZWx0KTsKKwkgICAgZ2NjX2Fzc2VydCAoZm5fc2l6ZSAhPSBlbHRf c2l6ZSk7CisJICAgIGlmICh3YW50X3NpemUgPT0gZWx0X3NpemUpCisJICAg ICAgZm4gPSBlbHQ7CiAJICB9CiAgICAgICB9CiAKQEAgLTYyMDAsOCArNjI3 NywxMyBAQCBidWlsZF9vcF9kZWxldGVfY2FsbCAoZW51bSB0cmVlX2NvZGUg Y29kZSwgdHJlZSBhZGRyLCB0cmVlIHNpemUsCiAJICB0cmVlIHJldDsKIAkg IHZlYzx0cmVlLCB2YV9nYz4gKmFyZ3MgPSBtYWtlX3RyZWVfdmVjdG9yICgp OwogCSAgYXJncy0+cXVpY2tfcHVzaCAoYWRkcik7Ci0JICBpZiAoRlVOQ1RJ T05fQVJHX0NIQUlOIChmbikgIT0gdm9pZF9saXN0X25vZGUpCisJICBpZiAo c2Vjb25kX3Bhcm1faXNfc2l6ZV90IChmbikpCiAJICAgIGFyZ3MtPnF1aWNr X3B1c2ggKHNpemUpOworCSAgaWYgKGFsaWduZWRfZGVhbGxvY2F0aW9uX2Zu X3AgKGZuKSkKKwkgICAgeworCSAgICAgIHRyZWUgYWwgPSBidWlsZF9pbnRf Y3N0IChhbGlnbl90eXBlX25vZGUsIFRZUEVfQUxJR05fVU5JVCAodHlwZSkp OworCSAgICAgIGFyZ3MtPnF1aWNrX3B1c2ggKGFsKTsKKwkgICAgfQogCSAg cmV0ID0gY3BfYnVpbGRfZnVuY3Rpb25fY2FsbF92ZWMgKGZuLCAmYXJncywg Y29tcGxhaW4pOwogCSAgcmVsZWFzZV90cmVlX3ZlY3RvciAoYXJncyk7CiAJ ICByZXR1cm4gcmV0OwpkaWZmIC0tZ2l0IGEvZ2NjL2NwL2NwLXRyZWUuaCBi L2djYy9jcC9jcC10cmVlLmgKaW5kZXggNWJjYjk4Yi4uZDRiZmIyNiAxMDA2 NDQKLS0tIGEvZ2NjL2NwL2NwLXRyZWUuaAorKysgYi9nY2MvY3AvY3AtdHJl ZS5oCkBAIC0xMTQ3LDYgKzExNDcsOCBAQCBlbnVtIGNwX3RyZWVfaW5kZXgK ICAgICBDUFRJX05VTExQVFIsCiAgICAgQ1BUSV9OVUxMUFRSX1RZUEUsCiAK KyAgICBDUFRJX0FMSUdOX1RZUEUsCisKICAgICBDUFRJX01BWAogfTsKIApA QCAtMTE4Miw2ICsxMTg0LDggQEAgZXh0ZXJuIEdUWSgoKSkgdHJlZSBjcF9n bG9iYWxfdHJlZXNbQ1BUSV9NQVhdOwogI2RlZmluZSBjdXJyZW50X2FnZ3IJ CQljcF9nbG9iYWxfdHJlZXNbQ1BUSV9BR0dSX1RBR10KICNkZWZpbmUgbnVs bHB0cl9ub2RlCQkJY3BfZ2xvYmFsX3RyZWVzW0NQVElfTlVMTFBUUl0KICNk ZWZpbmUgbnVsbHB0cl90eXBlX25vZGUJCWNwX2dsb2JhbF90cmVlc1tDUFRJ X05VTExQVFJfVFlQRV0KKy8qIHN0ZDo6YWxpZ25fdmFsX3QgKi8KKyNkZWZp bmUgYWxpZ25fdHlwZV9ub2RlCQkJY3BfZ2xvYmFsX3RyZWVzW0NQVElfQUxJ R05fVFlQRV0KIAogLyogV2UgY2FjaGUgdGhlc2UgdHJlZSBub2RlcyBzbyBh cyB0byBjYWxsIGdldF9pZGVudGlmaWVyIGxlc3MKICAgIGZyZXF1ZW50bHku ICAqLwpAQCAtNTU2MSw3ICs1NTY1LDcgQEAgZXh0ZXJuIHRyZWUgYnVpbGRf dXNlcl90eXBlX2NvbnZlcnNpb24JCSh0cmVlLCB0cmVlLCBpbnQsCiBleHRl cm4gdHJlZSBidWlsZF9uZXdfZnVuY3Rpb25fY2FsbAkJKHRyZWUsIHZlYzx0 cmVlLCB2YV9nYz4gKiosIGJvb2wsIAogCQkJCQkJIHRzdWJzdF9mbGFnc190 KTsKIGV4dGVybiB0cmVlIGJ1aWxkX29wZXJhdG9yX25ld19jYWxsCQkodHJl ZSwgdmVjPHRyZWUsIHZhX2djPiAqKiwgdHJlZSAqLAotCQkJCQkJIHRyZWUg KiwgdHJlZSwgdHJlZSAqLAorCQkJCQkJIHRyZWUgKiwgdHJlZSwgdHJlZSwg dHJlZSAqLAogCQkJCQkJIHRzdWJzdF9mbGFnc190KTsKIGV4dGVybiB0cmVl IGJ1aWxkX25ld19tZXRob2RfY2FsbAkJKHRyZWUsIHRyZWUsIHZlYzx0cmVl LCB2YV9nYz4gKiosCiAJCQkJCQkgdHJlZSwgaW50LCB0cmVlICosCkBAIC01 NTczLDcgKzU1NzcsOCBAQCBleHRlcm4gdHJlZSBidWlsZF9uZXdfb3AJCQko bG9jYXRpb25fdCwgZW51bSB0cmVlX2NvZGUsCiAJCQkJCQkgdHN1YnN0X2Zs YWdzX3QpOwogZXh0ZXJuIHRyZWUgYnVpbGRfb3BfY2FsbAkJCSh0cmVlLCB2 ZWM8dHJlZSwgdmFfZ2M+ICoqLAogCQkJCQkJIHRzdWJzdF9mbGFnc190KTsK LWV4dGVybiBib29sIG5vbl9wbGFjZW1lbnRfZGVhbGxvY2F0aW9uX2ZuX3AJ KHRyZWUpOworZXh0ZXJuIGJvb2wgYWxpZ25lZF9hbGxvY2F0aW9uX2ZuX3AJ CSh0cmVlKTsKK2V4dGVybiBib29sIHVzdWFsX2RlYWxsb2NhdGlvbl9mbl9w CSh0cmVlKTsKIGV4dGVybiB0cmVlIGJ1aWxkX29wX2RlbGV0ZV9jYWxsCQko ZW51bSB0cmVlX2NvZGUsIHRyZWUsIHRyZWUsCiAJCQkJCQkgYm9vbCwgdHJl ZSwgdHJlZSwKIAkJCQkJCSB0c3Vic3RfZmxhZ3NfdCk7CkBAIC01OTY2LDYg KzU5NzEsNyBAQCBleHRlcm4gdHJlZSBnZXRfbnNkbWkJCQkJKHRyZWUsIGJv b2wpOwogZXh0ZXJuIHRyZWUgYnVpbGRfb2Zmc2V0X3JlZgkJCSh0cmVlLCB0 cmVlLCBib29sLAogCQkJCQkJIHRzdWJzdF9mbGFnc190KTsKIGV4dGVybiB0 cmVlIHRocm93X2JhZF9hcnJheV9uZXdfbGVuZ3RoCQkodm9pZCk7CitleHRl cm4gYm9vbCB0eXBlX2hhc19uZXdfZXh0ZW5kZWRfYWxpZ25tZW50CSh0cmVl KTsKIGV4dGVybiB0cmVlIGJ1aWxkX25ldwkJCQkodmVjPHRyZWUsIHZhX2dj PiAqKiwgdHJlZSwgdHJlZSwKIAkJCQkJCSB2ZWM8dHJlZSwgdmFfZ2M+ICoq LCBpbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdHN1YnN0X2ZsYWdzX3QpOwpAQCAtNjUyOCw2ICs2NTM0 LDcgQEAgZXh0ZXJuIHRyZWUgYnVpbGRfbWluX250X2xvYwkJCShsb2NhdGlv bl90LCBlbnVtIHRyZWVfY29kZSwKIGV4dGVybiB0cmVlIGJ1aWxkX21pbl9u b25fZGVwCQkJKGVudW0gdHJlZV9jb2RlLCB0cmVlLCAuLi4pOwogZXh0ZXJu IHRyZWUgYnVpbGRfbWluX25vbl9kZXBfb3Bfb3ZlcmxvYWQJKGVudW0gdHJl ZV9jb2RlLCB0cmVlLCB0cmVlLCAuLi4pOwogZXh0ZXJuIHRyZWUgYnVpbGRf bWluX25vbl9kZXBfY2FsbF92ZWMJCSh0cmVlLCB0cmVlLCB2ZWM8dHJlZSwg dmFfZ2M+ICopOworZXh0ZXJuIHZlYzx0cmVlLCB2YV9nYz4qIHZlY19jb3B5 X2FuZF9pbnNlcnQgICAgKHZlYzx0cmVlLCB2YV9nYz4qLCB0cmVlLCB1bnNp Z25lZCk7CiBleHRlcm4gdHJlZSBidWlsZF9jcGx1c19uZXcJCQkodHJlZSwg dHJlZSwgdHN1YnN0X2ZsYWdzX3QpOwogZXh0ZXJuIHRyZWUgYnVpbGRfYWdn cl9pbml0X2V4cHIJCSh0cmVlLCB0cmVlKTsKIGV4dGVybiB0cmVlIGdldF90 YXJnZXRfZXhwcgkJCSh0cmVlKTsKZGlmZiAtLWdpdCBhL2djYy9jcC9kZWNs LmMgYi9nY2MvY3AvZGVjbC5jCmluZGV4IDQzY2YzZGYuLjJmNDQ0NjUgMTAw NjQ0Ci0tLSBhL2djYy9jcC9kZWNsLmMKKysrIGIvZ2NjL2NwL2RlY2wuYwpA QCAtNDEzMiw2ICs0MTMyLDE3IEBAIGN4eF9pbml0X2RlY2xfcHJvY2Vzc2lu ZyAodm9pZCkKICAgLyogTm93LCBDKysuICAqLwogICBjdXJyZW50X2xhbmdf bmFtZSA9IGxhbmdfbmFtZV9jcGx1c3BsdXM7CiAKKyAgaWYgKGFsaWduZWRf bmV3X3RocmVzaGhvbGQgPiAxCisgICAgICAmJiAhcG93MnBfaHdpIChhbGln bmVkX25ld190aHJlc2hob2xkKSkKKyAgICB7CisgICAgICBlcnJvciAoIi1m YWxpZ25lZC1uZXc9JWQgaXMgbm90IGEgcG93ZXIgb2YgdHdvIiwgYWxpZ25l ZF9uZXdfdGhyZXNoaG9sZCk7CisgICAgICBhbGlnbmVkX25ld190aHJlc2ho b2xkID0gMTsKKyAgICB9CisgIGlmIChhbGlnbmVkX25ld190aHJlc2hob2xk ID09IC0xKQorICAgIGFsaWduZWRfbmV3X3RocmVzaGhvbGQgPSAoY3h4X2Rp YWxlY3QgPj0gY3h4MXopID8gMSA6IDA7CisgIGlmIChhbGlnbmVkX25ld190 aHJlc2hob2xkID09IDEpCisgICAgYWxpZ25lZF9uZXdfdGhyZXNoaG9sZCA9 IG1heF9hbGlnbl90X2FsaWduICgpIC8gQklUU19QRVJfVU5JVDsKKwogICB7 CiAgICAgdHJlZSBuZXdhdHRycywgZXh0dmlzYXR0cjsKICAgICB0cmVlIG5l d3R5cGUsIGRlbHR5cGU7CkBAIC00MTk5LDYgKzQyMTAsNDcgQEAgY3h4X2lu aXRfZGVjbF9wcm9jZXNzaW5nICh2b2lkKQogCXB1c2hfY3BfbGlicmFyeV9m biAoVkVDX0RFTEVURV9FWFBSLCBkZWx0eXBlLCBFQ0ZfTk9USFJPVyk7CiAg ICAgICB9CiAKKyAgICBpZiAoYWxpZ25lZF9uZXdfdGhyZXNoaG9sZCkKKyAg ICAgIHsKKwlwdXNoX25hbWVzcGFjZSAoc3RkX2lkZW50aWZpZXIpOworCXRy ZWUgYWxpZ25faWQgPSBnZXRfaWRlbnRpZmllciAoImFsaWduX3ZhbF90Iik7 CisJYWxpZ25fdHlwZV9ub2RlID0gc3RhcnRfZW51bSAoYWxpZ25faWQsIE5V TExfVFJFRSwgc2l6ZV90eXBlX25vZGUsCisJCQkJICAgICAgTlVMTF9UUkVF LCAvKnNjb3BlZCovdHJ1ZSwgTlVMTCk7CisJcG9wX25hbWVzcGFjZSAoKTsK KworCS8qIG9wZXJhdG9yIG5ldyAoc2l6ZV90LCBhbGlnbl92YWxfdCk7ICov CisJbmV3dHlwZSA9IGJ1aWxkX2Z1bmN0aW9uX3R5cGVfbGlzdCAocHRyX3R5 cGVfbm9kZSwgc2l6ZV90eXBlX25vZGUsCisJCQkJCSAgICBhbGlnbl90eXBl X25vZGUsIE5VTExfVFJFRSk7CisJbmV3dHlwZSA9IGNwX2J1aWxkX3R5cGVf YXR0cmlidXRlX3ZhcmlhbnQgKG5ld3R5cGUsIG5ld2F0dHJzKTsKKwluZXd0 eXBlID0gYnVpbGRfZXhjZXB0aW9uX3ZhcmlhbnQgKG5ld3R5cGUsIG5ld19l aF9zcGVjKTsKKwlvcG5ldyA9IHB1c2hfY3BfbGlicmFyeV9mbiAoTkVXX0VY UFIsIG5ld3R5cGUsIDApOworCURFQ0xfSVNfTUFMTE9DIChvcG5ldykgPSAx OworCURFQ0xfSVNfT1BFUkFUT1JfTkVXIChvcG5ldykgPSAxOworCW9wbmV3 ID0gcHVzaF9jcF9saWJyYXJ5X2ZuIChWRUNfTkVXX0VYUFIsIG5ld3R5cGUs IDApOworCURFQ0xfSVNfTUFMTE9DIChvcG5ldykgPSAxOworCURFQ0xfSVNf T1BFUkFUT1JfTkVXIChvcG5ldykgPSAxOworCisJLyogb3BlcmF0b3IgZGVs ZXRlICh2b2lkICosIGFsaWduX3ZhbF90KTsgKi8KKwlkZWx0eXBlID0gYnVp bGRfZnVuY3Rpb25fdHlwZV9saXN0ICh2b2lkX3R5cGVfbm9kZSwgcHRyX3R5 cGVfbm9kZSwKKwkJCQkJICAgIGFsaWduX3R5cGVfbm9kZSwgTlVMTF9UUkVF KTsKKwlkZWx0eXBlID0gY3BfYnVpbGRfdHlwZV9hdHRyaWJ1dGVfdmFyaWFu dCAoZGVsdHlwZSwgZXh0dmlzYXR0cik7CisJZGVsdHlwZSA9IGJ1aWxkX2V4 Y2VwdGlvbl92YXJpYW50IChkZWx0eXBlLCBlbXB0eV9leGNlcHRfc3BlYyk7 CisJcHVzaF9jcF9saWJyYXJ5X2ZuIChERUxFVEVfRVhQUiwgZGVsdHlwZSwg RUNGX05PVEhST1cpOworCXB1c2hfY3BfbGlicmFyeV9mbiAoVkVDX0RFTEVU RV9FWFBSLCBkZWx0eXBlLCBFQ0ZfTk9USFJPVyk7CisKKwlpZiAoZmxhZ19z aXplZF9kZWFsbG9jYXRpb24pCisJICB7CisJICAgIC8qIG9wZXJhdG9yIGRl bGV0ZSAodm9pZCAqLCBzaXplX3QsIGFsaWduX3ZhbF90KTsgKi8KKwkgICAg ZGVsdHlwZSA9IGJ1aWxkX2Z1bmN0aW9uX3R5cGVfbGlzdCAodm9pZF90eXBl X25vZGUsIHB0cl90eXBlX25vZGUsCisJCQkJCQlzaXplX3R5cGVfbm9kZSwg YWxpZ25fdHlwZV9ub2RlLAorCQkJCQkJTlVMTF9UUkVFKTsKKwkgICAgZGVs dHlwZSA9IGNwX2J1aWxkX3R5cGVfYXR0cmlidXRlX3ZhcmlhbnQgKGRlbHR5 cGUsIGV4dHZpc2F0dHIpOworCSAgICBkZWx0eXBlID0gYnVpbGRfZXhjZXB0 aW9uX3ZhcmlhbnQgKGRlbHR5cGUsIGVtcHR5X2V4Y2VwdF9zcGVjKTsKKwkg ICAgcHVzaF9jcF9saWJyYXJ5X2ZuIChERUxFVEVfRVhQUiwgZGVsdHlwZSwg RUNGX05PVEhST1cpOworCSAgICBwdXNoX2NwX2xpYnJhcnlfZm4gKFZFQ19E RUxFVEVfRVhQUiwgZGVsdHlwZSwgRUNGX05PVEhST1cpOworCSAgfQorICAg ICAgfQorCiAgICAgbnVsbHB0cl90eXBlX25vZGUgPSBtYWtlX25vZGUgKE5V TExQVFJfVFlQRSk7CiAgICAgVFlQRV9TSVpFIChudWxscHRyX3R5cGVfbm9k ZSkgPSBiaXRzaXplX2ludCAoR0VUX01PREVfQklUU0laRSAocHRyX21vZGUp KTsKICAgICBUWVBFX1NJWkVfVU5JVCAobnVsbHB0cl90eXBlX25vZGUpID0g c2l6ZV9pbnQgKEdFVF9NT0RFX1NJWkUgKHB0cl9tb2RlKSk7CmRpZmYgLS1n aXQgYS9nY2MvY3AvZGVjbDIuYyBiL2djYy9jcC9kZWNsMi5jCmluZGV4IDJi YTVmZmIuLmEzMjBmOTIgMTAwNjQ0Ci0tLSBhL2djYy9jcC9kZWNsMi5jCisr KyBiL2djYy9jcC9kZWNsMi5jCkBAIC00NDg4LDcgKzQ0ODgsNyBAQCBtYXli ZV93YXJuX3NpemVkX2RlbGV0ZSAoZW51bSB0cmVlX2NvZGUgY29kZSkKICAg ICB7CiAgICAgICB0cmVlIGZuID0gT1ZMX0NVUlJFTlQgKG92bCk7CiAgICAg ICAvKiBXZSdyZSBvbmx5IGludGVyZXN0ZWQgaW4gdXN1YWwgZGVhbGxvY2F0 aW9uIGZ1bmN0aW9ucy4gICovCi0gICAgICBpZiAoIW5vbl9wbGFjZW1lbnRf ZGVhbGxvY2F0aW9uX2ZuX3AgKGZuKSkKKyAgICAgIGlmICghdXN1YWxfZGVh bGxvY2F0aW9uX2ZuX3AgKGZuKSkKIAljb250aW51ZTsKICAgICAgIGlmIChG VU5DVElPTl9BUkdfQ0hBSU4gKGZuKSA9PSB2b2lkX2xpc3Rfbm9kZSkKIAl1 bnNpemVkID0gZm47CmRpZmYgLS1naXQgYS9nY2MvY3AvaW5pdC5jIGIvZ2Nj L2NwL2luaXQuYwppbmRleCAxYTU3NjZhLi41YmI3ZjI5IDEwMDY0NAotLS0g YS9nY2MvY3AvaW5pdC5jCisrKyBiL2djYy9jcC9pbml0LmMKQEAgLTI1Njks NiArMjU2OSwxNSBAQCB3YXJuX3BsYWNlbWVudF9uZXdfdG9vX3NtYWxsICh0 cmVlIHR5cGUsIHRyZWUgbmVsdHMsIHRyZWUgc2l6ZSwgdHJlZSBvcGVyKQog ICAgIH0KIH0KIAorLyogVHJ1ZSBpZiBhbGlnbm9mKFQpID4gX19TVERDUFBf REVGQVVMVF9ORVdfQUxJR05NRU5UX18uICAqLworCitib29sCit0eXBlX2hh c19uZXdfZXh0ZW5kZWRfYWxpZ25tZW50ICh0cmVlIHQpCit7CisgIHJldHVy biAoYWxpZ25lZF9uZXdfdGhyZXNoaG9sZAorCSAgJiYgVFlQRV9BTElHTl9V TklUICh0KSA+ICh1bnNpZ25lZClhbGlnbmVkX25ld190aHJlc2hob2xkKTsK K30KKwogLyogR2VuZXJhdGUgY29kZSBmb3IgYSBuZXctZXhwcmVzc2lvbiwg aW5jbHVkaW5nIGNhbGxpbmcgdGhlICJvcGVyYXRvcgogICAgbmV3IiBmdW5j dGlvbiwgaW5pdGlhbGl6aW5nIHRoZSBvYmplY3QsIGFuZCwgaWYgYW4gZXhj ZXB0aW9uIG9jY3VycwogICAgZHVyaW5nIGNvbnN0cnVjdGlvbiwgY2xlYW5p bmcgdXAuICBUaGUgYXJndW1lbnRzIGFyZSBhcyBmb3IKQEAgLTI4NDAsNiAr Mjg0OSwxMCBAQCBidWlsZF9uZXdfMSAodmVjPHRyZWUsIHZhX2djPiAqKnBs YWNlbWVudCwgdHJlZSB0eXBlLCB0cmVlIG5lbHRzLAogCX0KICAgICB9CiAK KyAgdHJlZSBhbGlnbl9hcmcgPSBOVUxMX1RSRUU7CisgIGlmICh0eXBlX2hh c19uZXdfZXh0ZW5kZWRfYWxpZ25tZW50IChlbHRfdHlwZSkpCisgICAgYWxp Z25fYXJnID0gYnVpbGRfaW50X2NzdCAoYWxpZ25fdHlwZV9ub2RlLCBUWVBF X0FMSUdOX1VOSVQgKGVsdF90eXBlKSk7CisKICAgYWxsb2NfZm4gPSBOVUxM X1RSRUU7CiAKICAgLyogSWYgUExBQ0VNRU5UIGlzIGEgc2luZ2xlIHNpbXBs ZSBwb2ludGVyIHR5cGUgbm90IHBhc3NlZCBieQpAQCAtMjk1NCwxMiArMjk2 NywyOCBAQCBidWlsZF9uZXdfMSAodmVjPHRyZWUsIHZhX2djPiAqKnBsYWNl bWVudCwgdHJlZSB0eXBlLCB0cmVlIG5lbHRzLAogICAgICAgICAgICAgICAg IH0KIAkgICAgICByZXR1cm4gZXJyb3JfbWFya19ub2RlOwogCSAgICB9Ci0J ICBhbGxvY19jYWxsID0gYnVpbGRfbmV3X21ldGhvZF9jYWxsIChidWlsZF9k dW1teV9vYmplY3QgKGVsdF90eXBlKSwKLQkJCQkJICAgICAgZm5zLCBwbGFj ZW1lbnQsCi0JCQkJCSAgICAgIC8qY29udmVyc2lvbl9wYXRoPSovTlVMTF9U UkVFLAotCQkJCQkgICAgICBMT09LVVBfTk9STUFMLAotCQkJCQkgICAgICAm YWxsb2NfZm4sCi0JCQkJCSAgICAgIGNvbXBsYWluKTsKKwkgIHRyZWUgZHVt bXkgPSBidWlsZF9kdW1teV9vYmplY3QgKGVsdF90eXBlKTsKKwkgIGFsbG9j X2NhbGwgPSBOVUxMX1RSRUU7CisJICBpZiAoYWxpZ25fYXJnKQorCSAgICB7 CisJICAgICAgdmVjPHRyZWUsIHZhX2djPiAqYWxpZ25fYXJncworCQk9IHZl Y19jb3B5X2FuZF9pbnNlcnQgKCpwbGFjZW1lbnQsIGFsaWduX2FyZywgMSk7 CisJICAgICAgYWxsb2NfY2FsbAorCQk9IGJ1aWxkX25ld19tZXRob2RfY2Fs bCAoZHVtbXksIGZucywgJmFsaWduX2FyZ3MsCisJCQkJCSAvKmNvbnZlcnNp b25fcGF0aD0qL05VTExfVFJFRSwKKwkJCQkJIExPT0tVUF9OT1JNQUwsICZh bGxvY19mbiwgdGZfbm9uZSk7CisJICAgICAgLyogSWYgbm8gbWF0Y2hpbmcg ZnVuY3Rpb24gaXMgZm91bmQgYW5kIHRoZSBhbGxvY2F0ZWQgb2JqZWN0IHR5 cGUKKwkJIGhhcyBuZXctZXh0ZW5kZWQgYWxpZ25tZW50LCB0aGUgYWxpZ25t ZW50IGFyZ3VtZW50IGlzIHJlbW92ZWQKKwkJIGZyb20gdGhlIGFyZ3VtZW50 IGxpc3QsIGFuZCBvdmVybG9hZCByZXNvbHV0aW9uIGlzIHBlcmZvcm1lZAor CQkgYWdhaW4uICAqLworCSAgICAgIGlmIChhbGxvY19jYWxsID09IGVycm9y X21hcmtfbm9kZSkKKwkJYWxsb2NfY2FsbCA9IE5VTExfVFJFRTsKKwkgICAg fQorCSAgaWYgKCFhbGxvY19jYWxsKQorCSAgICBhbGxvY19jYWxsID0gYnVp bGRfbmV3X21ldGhvZF9jYWxsIChkdW1teSwgZm5zLCBwbGFjZW1lbnQsCisJ CQkJCQkvKmNvbnZlcnNpb25fcGF0aD0qL05VTExfVFJFRSwKKwkJCQkJCUxP T0tVUF9OT1JNQUwsCisJCQkJCQkmYWxsb2NfZm4sIGNvbXBsYWluKTsKIAl9 CiAgICAgICBlbHNlCiAJewpAQCAtMjk3Niw2ICszMDA1LDcgQEAgYnVpbGRf bmV3XzEgKHZlYzx0cmVlLCB2YV9nYz4gKipwbGFjZW1lbnQsIHRyZWUgdHlw ZSwgdHJlZSBuZWx0cywKIAogCSAgYWxsb2NfY2FsbCA9IGJ1aWxkX29wZXJh dG9yX25ld19jYWxsIChmbm5hbWUsIHBsYWNlbWVudCwKIAkJCQkJCSZzaXpl LCAmY29va2llX3NpemUsCisJCQkJCQlhbGlnbl9hcmcsCiAJCQkJCQlvdXRl cl9uZWx0c19jaGVjaywKIAkJCQkJCSZhbGxvY19mbiwgY29tcGxhaW4pOwog CX0KQEAgLTI5ODYsNiArMzAxNiwyMCBAQCBidWlsZF9uZXdfMSAodmVjPHRy ZWUsIHZhX2djPiAqKnBsYWNlbWVudCwgdHJlZSB0eXBlLCB0cmVlIG5lbHRz LAogCiAgIGdjY19hc3NlcnQgKGFsbG9jX2ZuICE9IE5VTExfVFJFRSk7CiAK KyAgaWYgKHdhcm5fYWxpZ25lZF9uZXcKKyAgICAgICYmIFRZUEVfQUxJR04g KGVsdF90eXBlKSA+IG1heF9hbGlnbl90X2FsaWduICgpCisgICAgICAmJiAo d2Fybl9hbGlnbmVkX25ldyA+IDEKKwkgIHx8IENQX0RFQ0xfQ09OVEVYVCAo YWxsb2NfZm4pID09IGdsb2JhbF9uYW1lc3BhY2UpCisgICAgICAmJiAhYWxp Z25lZF9hbGxvY2F0aW9uX2ZuX3AgKGFsbG9jX2ZuKSkKKyAgICB7CisgICAg ICB3YXJuaW5nIChPUFRfV2FsaWduZWRfbmV3XywgIiU8bmV3JT4gb2YgdHlw ZSAlcVQgd2l0aCBleHRlbmRlZCAiCisJICAgICAgICJhbGlnbm1lbnQgJWQi LCBlbHRfdHlwZSwgVFlQRV9BTElHTl9VTklUIChlbHRfdHlwZSkpOworICAg ICAgaW5mb3JtIChpbnB1dF9sb2NhdGlvbiwgInVzZXMgJXFELCB3aGljaCBk b2VzIG5vdCBoYXZlIGFuIGFsaWdubWVudCAiCisJICAgICAgInBhcmFtZXRl ciIsIGFsbG9jX2ZuKTsKKyAgICAgIGluZm9ybSAoaW5wdXRfbG9jYXRpb24s ICJ1c2UgJTwtZmFsaWduZWQtbmV3JT4gdG8gZW5hYmxlIEMrKzE3ICIKKwkg ICAgICAib3Zlci1hbGlnbmVkIG5ldyBzdXBwb3J0Iik7CisgICAgfQorCiAg IC8qIElmIHdlIGZvdW5kIGEgc2ltcGxlIGNhc2Ugb2YgUExBQ0VNRU5UX0VY UFIgYWJvdmUsIHRoZW4gY29weSBpdAogICAgICBpbnRvIGEgdGVtcG9yYXJ5 IHZhcmlhYmxlLiAgKi8KICAgaWYgKCFwcm9jZXNzaW5nX3RlbXBsYXRlX2Rl Y2wKZGlmZiAtLWdpdCBhL2djYy9jcC90cmVlLmMgYi9nY2MvY3AvdHJlZS5j CmluZGV4IDZkMjU0ZGQuLmJkMmU4ZjYgMTAwNjQ0Ci0tLSBhL2djYy9jcC90 cmVlLmMKKysrIGIvZ2NjL2NwL3RyZWUuYwpAQCAtMjkyMCw2ICsyOTIwLDMw IEBAIGJ1aWxkX21pbl9ub25fZGVwX29wX292ZXJsb2FkIChlbnVtIHRyZWVf Y29kZSBvcCwKICAgcmV0dXJuIGNhbGw7CiB9CiAKKy8qIFJldHVybiBhIG5l dyB0cmVlIHZlYyBjb3BpZWQgZnJvbSBWRUMsIHdpdGggRUxUIGluc2VydGVk IGF0IGluZGV4IElEWC4gICovCisKK3ZlYzx0cmVlLCB2YV9nYz4gKgordmVj X2NvcHlfYW5kX2luc2VydCAodmVjPHRyZWUsIHZhX2djPiAqb2xkX3ZlYywg dHJlZSBlbHQsIHVuc2lnbmVkIGlkeCkKK3sKKyAgdW5zaWduZWQgbGVuID0g dmVjX3NhZmVfbGVuZ3RoIChvbGRfdmVjKTsKKyAgZ2NjX2Fzc2VydCAoaWR4 IDw9IGxlbik7CisKKyAgdmVjPHRyZWUsIHZhX2djPiAqbmV3X3ZlYyA9IE5V TEw7CisgIHZlY19hbGxvYyAobmV3X3ZlYywgbGVuICsgMSk7CisKKyAgdW5z aWduZWQgaTsKKyAgZm9yIChpID0gMDsgaSA8IGxlbjsgKytpKQorICAgIHsK KyAgICAgIGlmIChpID09IGlkeCkKKwluZXdfdmVjLT5xdWlja19wdXNoIChl bHQpOworICAgICAgbmV3X3ZlYy0+cXVpY2tfcHVzaCAoKCpvbGRfdmVjKVtp XSk7CisgICAgfQorICBpZiAoaSA9PSBpZHgpCisgICAgbmV3X3ZlYy0+cXVp Y2tfcHVzaCAoZWx0KTsKKworICByZXR1cm4gbmV3X3ZlYzsKK30KKwogdHJl ZQogZ2V0X3R5cGVfZGVjbCAodHJlZSB0KQogewpkaWZmIC0tZ2l0IGEvZ2Nj L2RvYy9pbnZva2UudGV4aSBiL2djYy9kb2MvaW52b2tlLnRleGkKaW5kZXgg MjBiZTliNy4uYjJlYWVhNyAxMDA2NDQKLS0tIGEvZ2NjL2RvYy9pbnZva2Uu dGV4aQorKysgYi9nY2MvZG9jL2ludm9rZS50ZXhpCkBAIC0xOTAsNyArMTkw LDcgQEAgaW4gdGhlIGZvbGxvd2luZyBzZWN0aW9ucy4KIEBpdGVtIEMrKyBM YW5ndWFnZSBPcHRpb25zCiBAeHJlZntDKysgRGlhbGVjdCBPcHRpb25zLCxP cHRpb25zIENvbnRyb2xsaW5nIEMrKyBEaWFsZWN0fS4KIEBnY2NvcHRsaXN0 ey1mYWJpLXZlcnNpb249QHZhcntufSAgLWZuby1hY2Nlc3MtY29udHJvbCBA Z29sCi0tZmFyZ3MtaW4tb3JkZXI9QHZhcntufSAtZmNoZWNrLW5ldyBAZ29s CistZmFsaWduZWQtbmV3PUB2YXJ7bn0gLWZhcmdzLWluLW9yZGVyPUB2YXJ7 bn0gLWZjaGVjay1uZXcgQGdvbAogLWZjb25zdGV4cHItZGVwdGg9QHZhcntu fSAtZmNvbnN0ZXhwci1sb29wLWxpbWl0PUB2YXJ7bn0gQGdvbAogLWZmcmll bmQtaW5qZWN0aW9uIEBnb2wKIC1mbm8tZWxpZGUtY29uc3RydWN0b3JzIEBn b2wKQEAgLTIyMzcsNiArMjIzNywxNSBAQCBvcHRpb24gaXMgdXNlZCBmb3Ig dGhlIHdhcm5pbmcuCiBUdXJuIG9mZiBhbGwgYWNjZXNzIGNoZWNraW5nLiAg VGhpcyBzd2l0Y2ggaXMgbWFpbmx5IHVzZWZ1bCBmb3Igd29ya2luZwogYXJv dW5kIGJ1Z3MgaW4gdGhlIGFjY2VzcyBjb250cm9sIGNvZGUuCiAKK0BpdGVt IC1mYWxpZ25lZC1uZXcKK0BvcGluZGV4IGZhbGlnbmVkLW5ldworRW5hYmxl IHN1cHBvcnQgZm9yIEMrKzE3IEBjb2Rle25ld30gb2YgdHlwZXMgdGhhdCBy ZXF1aXJlIG1vcmUKK2FsaWdubWVudCB0aGFuIEBjb2Rle3ZvaWQqIDo6b3Bl cmF0b3IgbmV3KHN0ZDo6c2l6ZV90KX0gcHJvdmlkZXMuICBBCitudW1lcmlj IGFyZ3VtZW50IHN1Y2ggYXMgQGNvZGV7LWZhbGlnbmVkLW5ldz0zMn0gY2Fu IGJlIHVzZWQgdG8KK3NwZWNpZnkgaG93IG11Y2ggYWxpZ25tZW50IChpbiBi eXRlcykgaXMgcHJvdmlkZWQgYnkgdGhhdCBmdW5jdGlvbiwKK2J1dCBmZXcg dXNlcnMgd2lsbCBuZWVkIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IG9mCitA Y29kZXthbGlnbm9mKHN0ZDo6bWF4X2FsaWduX3QpfS4KKwogQGl0ZW0gLWZj aGVjay1uZXcKIEBvcGluZGV4IGZjaGVjay1uZXcKIENoZWNrIHRoYXQgdGhl IHBvaW50ZXIgcmV0dXJuZWQgYnkgQGNvZGV7b3BlcmF0b3IgbmV3fSBpcyBu b24tbnVsbApAQCAtNTA2Miw2ICs1MDcxLDE4IEBAIGRpc2FibGVzIHRoZSB3 YXJuaW5ncyBhYm91dCBub24tSVNPIEBjb2Rle3ByaW50Zn0gLyBAY29kZXtz Y2FuZn0gZm9ybWF0CiB3aWR0aCBzcGVjaWZpZXJzIEBjb2Rle0kzMn0sIEBj b2Rle0k2NH0sIGFuZCBAY29kZXtJfSB1c2VkIG9uIFdpbmRvd3MgdGFyZ2V0 cywKIHdoaWNoIGRlcGVuZCBvbiB0aGUgTVMgcnVudGltZS4KIAorQGl0ZW0g LVdhbGlnbmVkLW5ldworQG9waW5kZXggV2FsaWduZWQtbmV3CitAb3BpbmRl eCBXbm8tYWxpZ25lZC1uZXcKK1dhcm4gYWJvdXQgYSBuZXctZXhwcmVzc2lv biBvZiBhIHR5cGUgdGhhdCByZXF1aXJlcyBncmVhdGVyIGFsaWdubWVudAor dGhhbiB0aGUgQGNvZGV7YWxpZ25vZihzdGQ6Om1heF9hbGlnbl90KX0gYnV0 IHVzZXMgYW4gYWxsb2NhdGlvbgorZnVuY3Rpb24gd2l0aG91dCBhbiBleHBs aWNpdCBhbGlnbm1lbnQgcGFyYW1ldGVyLiBUaGlzIG9wdGlvbiBpcworZW5h YmxlZCBieSBAb3B0aW9uey1XYWxsfS4KKworTm9ybWFsbHkgdGhpcyBvbmx5 IHdhcm5zIGFib3V0IGdsb2JhbCBhbGxvY2F0aW9uIGZ1bmN0aW9ucywgYnV0 CitAb3B0aW9uey1XYWxpZ25lZC1uZXc9YWxsfSBhbHNvIHdhcm5zIGFib3V0 IGNsYXNzIG1lbWJlciBhbGxvY2F0aW9uCitmdW5jdGlvbnMuCisKIEBpdGVt IC1XcGxhY2VtZW50LW5ldwogQGl0ZW14IC1XcGxhY2VtZW50LW5ldz1AdmFy e259CiBAb3BpbmRleCBXcGxhY2VtZW50LW5ldwpkaWZmIC0tZ2l0IGEvZ2Nj L3Rlc3RzdWl0ZS9nKysuZGcvY3BwMHgvV2F0dHJpYnV0ZXMxLkMgYi9nY2Mv dGVzdHN1aXRlL2crKy5kZy9jcHAweC9XYXR0cmlidXRlczEuQwppbmRleCBk ZDkwMTFiLi5iMGExZTg2IDEwMDY0NAotLS0gYS9nY2MvdGVzdHN1aXRlL2cr Ky5kZy9jcHAweC9XYXR0cmlidXRlczEuQworKysgYi9nY2MvdGVzdHN1aXRl L2crKy5kZy9jcHAweC9XYXR0cmlidXRlczEuQwpAQCAtNSw0ICs1LDQgQEAK ICNpbmNsdWRlIDxuZXc+CiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJo aWRkZW4iKSkpdm9pZCpvcGVyYXRvciBuZXcoc3RkOjpzaXplX3QpOyAvLyB7 IGRnLXdhcm5pbmcgInZpc2liaWxpdHkgYXR0cmlidXRlIGlnbm9yZWQiIH0K IAotLy8geyBkZy1tZXNzYWdlICJwcmV2aW91cyBkZWNsYXJhdGlvbiIgIiIg eyB0YXJnZXQgKi0qLSogfSAxMTYgfQorLy8geyBkZy1tZXNzYWdlICJwcmV2 aW91cyBkZWNsYXJhdGlvbiIgIiIgeyB0YXJnZXQgKi0qLSogfSAxMjAgfQpk aWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMXovYWxpZ25l ZC1uZXcxLkMgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAxei9hbGlnbmVk LW5ldzEuQwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43 MzUyOTZmCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nKysu ZGcvY3BwMXovYWxpZ25lZC1uZXcxLkMKQEAgLTAsMCArMSwxNyBAQAorLy8g eyBkZy1vcHRpb25zIC1zdGQ9YysrMXogfQorLy8geyBkZy1kbyBydW4gfQor CisjaWZuZGVmIF9fU1REQ1BQX0RFRkFVTFRfTkVXX0FMSUdOTUVOVF9fCisj ZXJyb3IgX19TVERDUFBfREVGQVVMVF9ORVdfQUxJR05NRU5UX18gbm90IGRl ZmluZWQKKyNlbmRpZgorCisjaW5jbHVkZSA8Y3N0ZGludD4KKworc3RydWN0 IGFsaWduYXMoNjQpIEEgeyBpbnQgaTsgfTsKKworaW50IG1haW4oKQorewor ICBBICpwID0gbmV3IEE7CisgIGlmIChzdGQ6OmludHB0cl90KHApICUgNjQg IT0gMCkKKyAgICBfX2J1aWx0aW5fYWJvcnQoKTsKK30KZGlmZiAtLWdpdCBh L2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDF6L2FsaWduZWQtbmV3Mi5DIGIv Z2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMXovYWxpZ25lZC1uZXcyLkMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmUxNTk2OQotLS0g L2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDF6L2Fs aWduZWQtbmV3Mi5DCkBAIC0wLDAgKzEsMzEgQEAKKy8vIHsgZGctb3B0aW9u cyAtc3RkPWMrKzF6IH0KKy8vIHsgZGctZG8gcnVuIH0KKworI2luY2x1ZGUg PG5ldz4KKworc3RydWN0IGFsaWduYXMoNjQpIEEgeworICBpbnQgaTsKKyAg QSgpIHsgdGhyb3cgNDI7IH0KK307CitzdHJ1Y3QgQiB7IGludCBpOyB9IGI7 CisKK3ZvaWQgKm9wZXJhdG9yIG5ldyAoc3RkOjpzaXplX3Qgcywgc3RkOjph bGlnbl92YWxfdCBhLCBCIGIpCit7CisgIHJldHVybiBvcGVyYXRvciBuZXcg KHMsIGEpOworfQorCitib29sIGRlbGV0ZWQgPSBmYWxzZTsKK3ZvaWQgb3Bl cmF0b3IgZGVsZXRlICh2b2lkICpwLCBzdGQ6OmFsaWduX3ZhbF90LCBCKQor eworICBkZWxldGVkID0gdHJ1ZTsKK30KKworaW50IG1haW4oKQoreworICB0 cnkgeworICAgIEEgKnAgPSBuZXcgKGIpIEE7CisgICAgX19idWlsdGluX2Fi b3J0ICgpOworICB9IGNhdGNoICguLi4pIHt9CisgIGlmICghZGVsZXRlZCkK KyAgICBfX2J1aWx0aW5fYWJvcnQgKCk7Cit9CmRpZmYgLS1naXQgYS9nY2Mv dGVzdHN1aXRlL2crKy5kZy9jcHAxei9hbGlnbmVkLW5ldzMuQyBiL2djYy90 ZXN0c3VpdGUvZysrLmRnL2NwcDF6L2FsaWduZWQtbmV3My5DCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjczZTMzNDMKLS0tIC9kZXYv bnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAxei9hbGlnbmVk LW5ldzMuQwpAQCAtMCwwICsxLDIzIEBACisvLyB7IGRnLW9wdGlvbnMgLXN0 ZD1jKysxeiB9CisvLyB7IGRnLWRvIHJ1biB9CisKKyNpbmNsdWRlIDxuZXc+ CisKK3N0cnVjdCBhbGlnbmFzKDY0KSBBIHsKKyAgaW50IGk7Cit9OworCiti b29sIGRlbGV0ZWQgPSBmYWxzZTsKK3ZvaWQgb3BlcmF0b3IgZGVsZXRlICh2 b2lkICpwLCBzdGQ6OnNpemVfdCwgc3RkOjphbGlnbl92YWxfdCkKK3sKKyAg ZGVsZXRlZCA9IHRydWU7CisgIG9wZXJhdG9yIGRlbGV0ZSAocCk7Cit9CisK K2ludCBtYWluKCkKK3sKKyAgQSAqcCA9IG5ldyBBOworICBkZWxldGUgcDsK KyAgaWYgKCFkZWxldGVkKQorICAgIF9fYnVpbHRpbl9hYm9ydCgpOworfQpk aWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMXovYWxpZ25l ZC1uZXc0LkMgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAxei9hbGlnbmVk LW5ldzQuQwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5j YzYzYTE0Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nKysu ZGcvY3BwMXovYWxpZ25lZC1uZXc0LkMKQEAgLTAsMCArMSwxMyBAQAorLy8g eyBkZy1vcHRpb25zICItc3RkPWMrKzE0IC1XYWxpZ25lZC1uZXciIH0KKwor c3RydWN0IGFsaWduYXMoNjQpIEEgeyBpbnQgaTsgfTsKK3N0cnVjdCBhbGln bmFzKDY0KSBCIHsKKyAgaW50IGk7CisgIHZvaWQgKm9wZXJhdG9yIG5ldyhf X1NJWkVfVFlQRV9fKTsKK307CisKK2ludCBtYWluKCkKK3sKKyAgQSogYXAg PSBuZXcgQTsJCS8vIHsgZGctd2FybmluZyAiLVdhbGlnbmVkLW5ldyIgfQor ICBCKiBicCA9IG5ldyBCOworfQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0 ZS9nKysuZGcvY3BwMXovYWxpZ25lZC1uZXc0YS5DIGIvZ2NjL3Rlc3RzdWl0 ZS9nKysuZGcvY3BwMXovYWxpZ25lZC1uZXc0YS5DCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmViMTc4ZDQKLS0tIC9kZXYvbnVsbAor KysgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAxei9hbGlnbmVkLW5ldzRh LkMKQEAgLTAsMCArMSwxMyBAQAorLy8geyBkZy1vcHRpb25zICItc3RkPWMr KzE0IC1XYWxpZ25lZC1uZXc9YWxsIiB9CisKK3N0cnVjdCBhbGlnbmFzKDY0 KSBBIHsgaW50IGk7IH07CitzdHJ1Y3QgYWxpZ25hcyg2NCkgQiB7CisgIGlu dCBpOworICB2b2lkICpvcGVyYXRvciBuZXcoX19TSVpFX1RZUEVfXyk7Cit9 OworCitpbnQgbWFpbigpCit7CisgIEEqIGFwID0gbmV3IEE7CQkvLyB7IGRn LXdhcm5pbmcgIi1XYWxpZ25lZC1uZXciIH0KKyAgQiogYnAgPSBuZXcgQjsJ CS8vIHsgZGctd2FybmluZyAiLVdhbGlnbmVkLW5ldyIgfQorfQpkaWZmIC0t Z2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMXovYWxpZ25lZC1uZXc1 LkMgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAxei9hbGlnbmVkLW5ldzUu QwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MjUxMjll Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3Bw MXovYWxpZ25lZC1uZXc1LkMKQEAgLTAsMCArMSwxNCBAQAorLy8geyBkZy1v cHRpb25zIC1mYWxpZ25lZC1uZXcgfQorLy8geyBkZy1kbyBydW4gfQorCisj aW5jbHVkZSA8bmV3PgorI2luY2x1ZGUgPHN0ZGludC5oPgorCitzdHJ1Y3Qg QSB7IGludCBpOyB9OworCitpbnQgbWFpbigpCit7CisgIEEqIGFwID0gbmV3 IChzdGQ6OmFsaWduX3ZhbF90KDY0KSkgQTsKKyAgaWYgKGludHB0cl90KGFw KSAlIDY0ICE9IDApCisgICAgX19idWlsdGluX2Fib3J0KCk7Cit9CmRpZmYg LS1naXQgYS9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAxei9mZWF0LWN4eDF6 LkMgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAxei9mZWF0LWN4eDF6LkMK aW5kZXggNDFiNjExMS4uOTgyNTcyZSAxMDA2NDQKLS0tIGEvZ2NjL3Rlc3Rz dWl0ZS9nKysuZGcvY3BwMXovZmVhdC1jeHgxei5DCisrKyBiL2djYy90ZXN0 c3VpdGUvZysrLmRnL2NwcDF6L2ZlYXQtY3h4MXouQwpAQCAtMzUwLDYgKzM1 MCwxMiBAQAogIyAgZXJyb3IgIl9fY3BwX2lmX2NvbnN0ZXhwciAhPSAyMDE2 MDYiCiAjZW5kaWYKIAorI2lmbmRlZiBfX2NwcF9hbGlnbmVkX25ldworIyAg ZXJyb3IgIl9fY3BwX2FsaWduZWRfbmV3IgorI2VsaWYgX19jcHBfYWxpZ25l ZF9uZXcgIT0gMjAxNjA2CisjICBlcnJvciAiX19jcHBfYWxpZ25lZF9uZXcg IT0gMjAxNjA2IgorI2VuZGlmCisKICNpZmRlZiBfX2hhc19jcHBfYXR0cmli dXRlCiAKICMgIGlmICEgX19oYXNfY3BwX2F0dHJpYnV0ZShtYXliZV91bnVz ZWQpCmRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2FiaS9wcmUv Z251LnZlciBiL2xpYnN0ZGMrKy12My9jb25maWcvYWJpL3ByZS9nbnUudmVy CmluZGV4IDBhYjRiYjEuLjliNWJiMjMgMTAwNjQ0Ci0tLSBhL2xpYnN0ZGMr Ky12My9jb25maWcvYWJpL3ByZS9nbnUudmVyCisrKyBiL2xpYnN0ZGMrKy12 My9jb25maWcvYWJpL3ByZS9nbnUudmVyCkBAIC0yMTk3LDYgKzIxOTcsMTgg QEAgQ1hYQUJJXzEuMy4xMSB7CiAgICAgX19jeGFfaW5pdF9wcmltYXJ5X2V4 Y2VwdGlvbjsKICAgICBfWk5TdDE1X19leGNlcHRpb25fcHRyMTNleGNlcHRp b25fcHRyQzFFUHY7CiAKKyAgICAjIEMrKzE3IGFsaWduZWQgbmV3L2RlbGV0 ZQorICAgIF9abndtU3QxMWFsaWduX3ZhbF90OworICAgIF9abndtU3QxMWFs aWduX3ZhbF90UktTdDlub3Rocm93X3Q7CisgICAgX1puYW1TdDExYWxpZ25f dmFsX3Q7CisgICAgX1puYW1TdDExYWxpZ25fdmFsX3RSS1N0OW5vdGhyb3df dDsKKyAgICBfWmRsUHZTdDExYWxpZ25fdmFsX3Q7CisgICAgX1pkbFB2U3Qx MWFsaWduX3ZhbF90UktTdDlub3Rocm93X3Q7CisgICAgX1pkbFB2bVN0MTFh bGlnbl92YWxfdDsKKyAgICBfWmRhUHZTdDExYWxpZ25fdmFsX3Q7CisgICAg X1pkYVB2U3QxMWFsaWduX3ZhbF90UktTdDlub3Rocm93X3Q7CisgICAgX1pk YVB2bVN0MTFhbGlnbl92YWxfdDsKKwogfSBDWFhBQklfMS4zLjEwOwogCiAj IFN5bWJvbHMgaW4gdGhlIHN1cHBvcnQgbGlicmFyeSAobGlic3VwYysrKSBz dXBwb3J0aW5nIHRyYW5zYWN0aW9uYWwgbWVtb3J5LgpkaWZmIC0tZ2l0IGEv bGlic3RkYysrLXYzL2NvbmZpZ3VyZSBiL2xpYnN0ZGMrKy12My9jb25maWd1 cmUKaW5kZXggYmZjYjQ2NS4uZjliYjc1MiAxMDA3NTUKLS0tIGEvbGlic3Rk YysrLXYzL2NvbmZpZ3VyZQorKysgYi9saWJzdGRjKystdjMvY29uZmlndXJl CkBAIC0yNzk3Miw2ICsyNzk3MiwxOSBAQCBfQUNFT0YKIGZpCiBkb25lCiAK KyAgZm9yIGFjX2Z1bmMgaW4gYWxpZ25lZF9hbGxvYyBwb3NpeF9tZW1hbGln biBtZW1hbGlnbgorZG8gOgorICBhc19hY192YXI9YCRhc19lY2hvICJhY19j dl9mdW5jXyRhY19mdW5jIiB8ICRhc190cl9zaGAKK2FjX2ZuX2NfY2hlY2tf ZnVuYyAiJExJTkVOTyIgIiRhY19mdW5jIiAiJGFzX2FjX3ZhciIKK2V2YWwg YXNfdmFsPVwkJGFzX2FjX3ZhcgorICAgaWYgdGVzdCAieCRhc192YWwiID0g eCIieWVzOyB0aGVuIDoKKyAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgor I2RlZmluZSBgJGFzX2VjaG8gIkhBVkVfJGFjX2Z1bmMiIHwgJGFzX3RyX2Nw cGAgMQorX0FDRU9GCisKK2ZpCitkb25lCisKIAogICAjIEZvciBpY29udiBz dXBwb3J0LgogCmRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlndXJl LmFjIGIvbGlic3RkYysrLXYzL2NvbmZpZ3VyZS5hYwppbmRleCA5ZTE5ZTk5 Li42YTY0ZDg4IDEwMDY0NAotLS0gYS9saWJzdGRjKystdjMvY29uZmlndXJl LmFjCisrKyBiL2xpYnN0ZGMrKy12My9jb25maWd1cmUuYWMKQEAgLTI1Niw2 ICsyNTYsNyBAQCBpZiAkR0xJQkNYWF9JU19OQVRJVkU7IHRoZW4KICAgR0ND X0NIRUNLX1RMUwogCiAgIEFDX0NIRUNLX0ZVTkNTKF9fY3hhX3RocmVhZF9h dGV4aXRfaW1wbCkKKyAgQUNfQ0hFQ0tfRlVOQ1MoYWxpZ25lZF9hbGxvYyBw b3NpeF9tZW1hbGlnbiBtZW1hbGlnbikKIAogICAjIEZvciBpY29udiBzdXBw b3J0LgogICBBTV9JQ09OVgpkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2xp YnN1cGMrKy9NYWtlZmlsZS5hbSBiL2xpYnN0ZGMrKy12My9saWJzdXBjKysv TWFrZWZpbGUuYW0KaW5kZXggYmE0ZWFjMS4uMmRmMzFmZiAxMDA2NDQKLS0t IGEvbGlic3RkYysrLXYzL2xpYnN1cGMrKy9NYWtlZmlsZS5hbQorKysgYi9s aWJzdGRjKystdjMvbGlic3VwYysrL01ha2VmaWxlLmFtCkBAIC04OCw2ICs4 OCwxNiBAQCBzb3VyY2VzID0gXAogCW5ld19vcG50LmNjIFwKIAluZXdfb3B2 LmNjIFwKIAluZXdfb3B2bnQuY2MgXAorCW5ld19vcGEuY2MgXAorCW5ld19v cGFudC5jYyBcCisJbmV3X29wdmEuY2MgXAorCW5ld19vcHZhbnQuY2MgXAor CWRlbF9vcGEuY2MgXAorCWRlbF9vcGFudC5jYyBcCisJZGVsX29wc2EuY2Mg XAorCWRlbF9vcHZhLmNjIFwKKwlkZWxfb3B2YW50LmNjIFwKKwlkZWxfb3B2 c2EuY2MgXAogCXBiYXNlX3R5cGVfaW5mby5jYyBcCiAJcG1lbV90eXBlX2lu Zm8uY2MgXAogCXBvaW50ZXJfdHlwZV9pbmZvLmNjIFwKQEAgLTE4OSw2ICsx OTksMjggQEAgZGVsX29wdnMubG86IGRlbF9vcHZzLmNjCiBkZWxfb3B2cy5v OiBkZWxfb3B2cy5jYwogCSQoQ1hYQ09NUElMRSkgLXN0ZD1nbnUrKzE0IC1X bm8tc2l6ZWQtZGVhbGxvY2F0aW9uIC1jICQ8CiAKKyMgVXNlIHNwZWNpYWwg cnVsZXMgZm9yIHRoZSBDKysxNyBzb3VyY2VzIHNvIHRoYXQgdGhlIHByb3Bl ciBmbGFncyBhcmUgcGFzc2VkLgorbmV3X29wYS5sbzogbmV3X29wYS5jYwor CSQoTFRDWFhDT01QSUxFKSAtc3RkPWdudSsrMXogLWMgJDwKK25ld19vcGFu dC5sbzogbmV3X29wYW50LmNjCisJJChMVENYWENPTVBJTEUpIC1zdGQ9Z251 KysxeiAtYyAkPAorbmV3X29wdmEubG86IG5ld19vcHZhLmNjCisJJChMVENY WENPTVBJTEUpIC1zdGQ9Z251KysxeiAtYyAkPAorbmV3X29wdmFudC5sbzog bmV3X29wdmFudC5jYworCSQoTFRDWFhDT01QSUxFKSAtc3RkPWdudSsrMXog LWMgJDwKK2RlbF9vcGEubG86IGRlbF9vcGEuY2MKKwkkKExUQ1hYQ09NUElM RSkgLXN0ZD1nbnUrKzF6IC1jICQ8CitkZWxfb3BhbnQubG86IGRlbF9vcGFu dC5jYworCSQoTFRDWFhDT01QSUxFKSAtc3RkPWdudSsrMXogLWMgJDwKK2Rl bF9vcHNhLmxvOiBkZWxfb3BzYS5jYworCSQoTFRDWFhDT01QSUxFKSAtc3Rk PWdudSsrMXogLWMgJDwKK2RlbF9vcHZhLmxvOiBkZWxfb3B2YS5jYworCSQo TFRDWFhDT01QSUxFKSAtc3RkPWdudSsrMXogLWMgJDwKK2RlbF9vcHZhbnQu bG86IGRlbF9vcHZhbnQuY2MKKwkkKExUQ1hYQ09NUElMRSkgLXN0ZD1nbnUr KzF6IC1jICQ8CitkZWxfb3B2c2EubG86IGRlbF9vcHZzYS5jYworCSQoTFRD WFhDT01QSUxFKSAtc3RkPWdudSsrMXogLWMgJDwKKwogIyBBTV9DWFhGTEFH UyBuZWVkcyB0byBiZSBpbiBlYWNoIHN1YmRpcmVjdG9yeSBzbyB0aGF0IGl0 IGNhbiBiZQogIyBtb2RpZmllZCBpbiBhIHBlci1saWJyYXJ5IG9yIHBlci1z dWItbGlicmFyeSB3YXkuICBOZWVkIHRvIG1hbnVhbGx5CiAjIHNldCB0aGlz IG9wdGlvbiBiZWNhdXNlIENPTkZJR19DWFhGTEFHUyBoYXMgdG8gYmUgYWZ0 ZXIKZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9saWJzdXBjKysvTWFrZWZp bGUuaW4gYi9saWJzdGRjKystdjMvbGlic3VwYysrL01ha2VmaWxlLmluCmlu ZGV4IDNmYjlkMTYuLmU4MjhlZDkgMTAwNjQ0Ci0tLSBhL2xpYnN0ZGMrKy12 My9saWJzdXBjKysvTWFrZWZpbGUuaW4KKysrIGIvbGlic3RkYysrLXYzL2xp YnN1cGMrKy9NYWtlZmlsZS5pbgpAQCAtMTI1LDkgKzEyNSwxMSBAQCBhbV9f b2JqZWN0c18xID0gYXJyYXlfdHlwZV9pbmZvLmxvIGF0ZXhpdF9hcm0ubG8g YXRleGl0X3RocmVhZC5sbyBcCiAJZnVuY3Rpb25fdHlwZV9pbmZvLmxvIGZ1 bmRhbWVudGFsX3R5cGVfaW5mby5sbyBndWFyZC5sbyBcCiAJZ3VhcmRfZXJy b3IubG8gaGFzaF9ieXRlcy5sbyBuZXN0ZWRfZXhjZXB0aW9uLmxvIFwKIAlu ZXdfaGFuZGxlci5sbyBuZXdfb3AubG8gbmV3X29wbnQubG8gbmV3X29wdi5s byBuZXdfb3B2bnQubG8gXAotCXBiYXNlX3R5cGVfaW5mby5sbyBwbWVtX3R5 cGVfaW5mby5sbyBwb2ludGVyX3R5cGVfaW5mby5sbyBcCi0JcHVyZS5sbyBz aV9jbGFzc190eXBlX2luZm8ubG8gdGluZm8ubG8gdGluZm8yLmxvIHZlYy5s byBcCi0Jdm1pX2NsYXNzX3R5cGVfaW5mby5sbyB2dGVybWluYXRlLmxvCisJ bmV3X29wYS5sbyBuZXdfb3BhbnQubG8gbmV3X29wdmEubG8gbmV3X29wdmFu dC5sbyBkZWxfb3BhLmxvIFwKKwlkZWxfb3BhbnQubG8gZGVsX29wc2EubG8g ZGVsX29wdmEubG8gZGVsX29wdmFudC5sbyBcCisJZGVsX29wdnNhLmxvIHBi YXNlX3R5cGVfaW5mby5sbyBwbWVtX3R5cGVfaW5mby5sbyBcCisJcG9pbnRl cl90eXBlX2luZm8ubG8gcHVyZS5sbyBzaV9jbGFzc190eXBlX2luZm8ubG8g dGluZm8ubG8gXAorCXRpbmZvMi5sbyB2ZWMubG8gdm1pX2NsYXNzX3R5cGVf aW5mby5sbyB2dGVybWluYXRlLmxvCiBAR0xJQkNYWF9IT1NURURfVFJVRUBh bV9fb2JqZWN0c18yID0gY3AtZGVtYW5nbGUubG8KIEBFTkFCTEVfVlRBQkxF X1ZFUklGWV9UUlVFQEBWVFZfQ1lHTUlOX0ZBTFNFQGFtX19vYmplY3RzXzMg PSAgXAogQEVOQUJMRV9WVEFCTEVfVkVSSUZZX1RSVUVAQFZUVl9DWUdNSU5f RkFMU0VACXZ0dl9zdHVicy5sbwpAQCAtNDQ1LDYgKzQ0NywxNiBAQCBzb3Vy Y2VzID0gXAogCW5ld19vcG50LmNjIFwKIAluZXdfb3B2LmNjIFwKIAluZXdf b3B2bnQuY2MgXAorCW5ld19vcGEuY2MgXAorCW5ld19vcGFudC5jYyBcCisJ bmV3X29wdmEuY2MgXAorCW5ld19vcHZhbnQuY2MgXAorCWRlbF9vcGEuY2Mg XAorCWRlbF9vcGFudC5jYyBcCisJZGVsX29wc2EuY2MgXAorCWRlbF9vcHZh LmNjIFwKKwlkZWxfb3B2YW50LmNjIFwKKwlkZWxfb3B2c2EuY2MgXAogCXBi YXNlX3R5cGVfaW5mby5jYyBcCiAJcG1lbV90eXBlX2luZm8uY2MgXAogCXBv aW50ZXJfdHlwZV9pbmZvLmNjIFwKQEAgLTkxNiw2ICs5MjgsMjggQEAgZGVs X29wdnMubG86IGRlbF9vcHZzLmNjCiBkZWxfb3B2cy5vOiBkZWxfb3B2cy5j YwogCSQoQ1hYQ09NUElMRSkgLXN0ZD1nbnUrKzE0IC1Xbm8tc2l6ZWQtZGVh bGxvY2F0aW9uIC1jICQ8CiAKKyMgVXNlIHNwZWNpYWwgcnVsZXMgZm9yIHRo ZSBDKysxNyBzb3VyY2VzIHNvIHRoYXQgdGhlIHByb3BlciBmbGFncyBhcmUg cGFzc2VkLgorbmV3X29wYS5sbzogbmV3X29wYS5jYworCSQoTFRDWFhDT01Q SUxFKSAtc3RkPWdudSsrMXogLWMgJDwKK25ld19vcGFudC5sbzogbmV3X29w YW50LmNjCisJJChMVENYWENPTVBJTEUpIC1zdGQ9Z251KysxeiAtYyAkPAor bmV3X29wdmEubG86IG5ld19vcHZhLmNjCisJJChMVENYWENPTVBJTEUpIC1z dGQ9Z251KysxeiAtYyAkPAorbmV3X29wdmFudC5sbzogbmV3X29wdmFudC5j YworCSQoTFRDWFhDT01QSUxFKSAtc3RkPWdudSsrMXogLWMgJDwKK2RlbF9v cGEubG86IGRlbF9vcGEuY2MKKwkkKExUQ1hYQ09NUElMRSkgLXN0ZD1nbnUr KzF6IC1jICQ8CitkZWxfb3BhbnQubG86IGRlbF9vcGFudC5jYworCSQoTFRD WFhDT01QSUxFKSAtc3RkPWdudSsrMXogLWMgJDwKK2RlbF9vcHNhLmxvOiBk ZWxfb3BzYS5jYworCSQoTFRDWFhDT01QSUxFKSAtc3RkPWdudSsrMXogLWMg JDwKK2RlbF9vcHZhLmxvOiBkZWxfb3B2YS5jYworCSQoTFRDWFhDT01QSUxF KSAtc3RkPWdudSsrMXogLWMgJDwKK2RlbF9vcHZhbnQubG86IGRlbF9vcHZh bnQuY2MKKwkkKExUQ1hYQ09NUElMRSkgLXN0ZD1nbnUrKzF6IC1jICQ8Citk ZWxfb3B2c2EubG86IGRlbF9vcHZzYS5jYworCSQoTFRDWFhDT01QSUxFKSAt c3RkPWdudSsrMXogLWMgJDwKKwogaW5zdGFsbC1zdGRIRUFERVJTOiAkKHN0 ZF9IRUFERVJTKQogCUAkKE5PUk1BTF9JTlNUQUxMKQogCSQobWtpbnN0YWxs ZGlycykgJChERVNURElSKSQoc3RkZGlyKQpkaWZmIC0tZ2l0IGEvbGlic3Rk YysrLXYzL2xpYnN1cGMrKy9kZWxfb3BhLmNjIGIvbGlic3RkYysrLXYzL2xp YnN1cGMrKy9kZWxfb3BhLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLjI0ZGVjMjIKLS0tIC9kZXYvbnVsbAorKysgYi9saWJzdGRj KystdjMvbGlic3VwYysrL2RlbF9vcGEuY2MKQEAgLTAsMCArMSw1MCBAQAor Ly8gQm9pbGVycGxhdGUgc3VwcG9ydCByb3V0aW5lcyBmb3IgLSotIEMrKyAt Ki0gZHluYW1pYyBtZW1vcnkgbWFuYWdlbWVudC4KKworLy8gQ29weXJpZ2h0 IChDKSAxOTk3LTIwMTYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu CisvLworLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0NDLgorLy8KKy8vIEdD QyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5CisvLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorLy8g dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24g Mywgb3IgKGF0IHlvdXIgb3B0aW9uKQorLy8gYW55IGxhdGVyIHZlcnNpb24u CisvLworLy8gR0NDIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsCisvLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorLy8g TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLiAgU2VlIHRoZQorLy8gR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KKy8vCisvLyBVbmRlciBTZWN0aW9uIDcg b2YgR1BMIHZlcnNpb24gMywgeW91IGFyZSBncmFudGVkIGFkZGl0aW9uYWwK Ky8vIHBlcm1pc3Npb25zIGRlc2NyaWJlZCBpbiB0aGUgR0NDIFJ1bnRpbWUg TGlicmFyeSBFeGNlcHRpb24sIHZlcnNpb24KKy8vIDMuMSwgYXMgcHVibGlz aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisKKy8vIFlv dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGFuZAorLy8gYSBjb3B5IG9mIHRoZSBHQ0Mg UnVudGltZSBMaWJyYXJ5IEV4Y2VwdGlvbiBhbG9uZyB3aXRoIHRoaXMgcHJv Z3JhbTsKKy8vIHNlZSB0aGUgZmlsZXMgQ09QWUlORzMgYW5kIENPUFlJTkcu UlVOVElNRSByZXNwZWN0aXZlbHkuICBJZiBub3QsIHNlZQorLy8gPGh0dHA6 Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorCisjaW5jbHVkZSA8Yml0cy9j Kytjb25maWcuaD4KKworI2lmICFfR0xJQkNYWF9IT1NURUQKKy8vIEEgZnJl ZXN0YW5kaW5nIEMgcnVudGltZSBtYXkgbm90IHByb3ZpZGUgImZyZWUiIC0t IGJ1dCB0aGVyZSBpcyBubworLy8gb3RoZXIgcmVhc29uYWJsZSB3YXkgdG8g aW1wbGVtZW50ICJvcGVyYXRvciBkZWxldGUiLgorbmFtZXNwYWNlIHN0ZAor eworX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04KKyAgZXh0ZXJu ICJDIiB2b2lkIGZyZWUodm9pZCopOworX0dMSUJDWFhfRU5EX05BTUVTUEFD RV9WRVJTSU9OCit9IC8vIG5hbWVzcGFjZQorI2Vsc2UKKyMgaW5jbHVkZSA8 Y3N0ZGxpYj4KKyNlbmRpZgorCisjaW5jbHVkZSAibmV3IgorCisvLyBUaGUg c2l6ZWQgZGVsZXRlcyBhcmUgZGVmaW5lZCBpbiBvdGhlciBmaWxlcy4KKyNw cmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAiLVdzaXplZC1kZWFsbG9j YXRpb24iCisKK19HTElCQ1hYX1dFQUtfREVGSU5JVElPTiB2b2lkCitvcGVy YXRvciBkZWxldGUodm9pZCogcHRyLCBzdGQ6OmFsaWduX3ZhbF90KSBfR0xJ QkNYWF9VU0VfTk9FWENFUFQKK3sKKyAgc3RkOjpmcmVlKHB0cik7Cit9CmRp ZmYgLS1naXQgYS9saWJzdGRjKystdjMvbGlic3VwYysrL2RlbF9vcGFudC5j YyBiL2xpYnN0ZGMrKy12My9saWJzdXBjKysvZGVsX29wYW50LmNjCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiMTkxOWMKLS0tIC9k ZXYvbnVsbAorKysgYi9saWJzdGRjKystdjMvbGlic3VwYysrL2RlbF9vcGFu dC5jYwpAQCAtMCwwICsxLDMzIEBACisvLyBCb2lsZXJwbGF0ZSBzdXBwb3J0 IHJvdXRpbmVzIGZvciAtKi0gQysrIC0qLSBkeW5hbWljIG1lbW9yeSBtYW5h Z2VtZW50LgorCisvLyBDb3B5cmlnaHQgKEMpIDE5OTctMjAxNiBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKy8vCisvLyBUaGlzIGZpbGUgaXMg cGFydCBvZiBHQ0MuCisvLworLy8gR0NDIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKy8vIGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5CisvLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzLCBvciAoYXQgeW91ciBvcHRpb24p CisvLyBhbnkgbGF0ZXIgdmVyc2lvbi4KKy8vCisvLyBHQ0MgaXMgZGlzdHJp YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKy8v IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCisvLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisvLyBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor Ly8KKy8vIFVuZGVyIFNlY3Rpb24gNyBvZiBHUEwgdmVyc2lvbiAzLCB5b3Ug YXJlIGdyYW50ZWQgYWRkaXRpb25hbAorLy8gcGVybWlzc2lvbnMgZGVzY3Jp YmVkIGluIHRoZSBHQ0MgUnVudGltZSBMaWJyYXJ5IEV4Y2VwdGlvbiwgdmVy c2lvbgorLy8gMy4xLCBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbi4KKworLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk IGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYW5k CisvLyBhIGNvcHkgb2YgdGhlIEdDQyBSdW50aW1lIExpYnJhcnkgRXhjZXB0 aW9uIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOworLy8gc2VlIHRoZSBmaWxl cyBDT1BZSU5HMyBhbmQgQ09QWUlORy5SVU5USU1FIHJlc3BlY3RpdmVseS4g IElmIG5vdCwgc2VlCisvLyA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2Vz Lz4uCisKKyNpbmNsdWRlIDxiaXRzL2MrK2NvbmZpZy5oPgorI2luY2x1ZGUg Im5ldyIKKworX0dMSUJDWFhfV0VBS19ERUZJTklUSU9OIHZvaWQKK29wZXJh dG9yIGRlbGV0ZSAodm9pZCAqcHRyLCBzdGQ6OmFsaWduX3ZhbF90IGFsLCBj b25zdCBzdGQ6Om5vdGhyb3dfdCYpIF9HTElCQ1hYX1VTRV9OT0VYQ0VQVAor eworICA6Om9wZXJhdG9yIGRlbGV0ZSAocHRyLCBhbCk7Cit9CmRpZmYgLS1n aXQgYS9saWJzdGRjKystdjMvbGlic3VwYysrL2RlbF9vcHNhLmNjIGIvbGli c3RkYysrLXYzL2xpYnN1cGMrKy9kZWxfb3BzYS5jYwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi43ODgwZWZlCi0tLSAvZGV2L251bGwK KysrIGIvbGlic3RkYysrLXYzL2xpYnN1cGMrKy9kZWxfb3BzYS5jYwpAQCAt MCwwICsxLDMzIEBACisvLyBCb2lsZXJwbGF0ZSBzdXBwb3J0IHJvdXRpbmVz IGZvciAtKi0gQysrIC0qLSBkeW5hbWljIG1lbW9yeSBtYW5hZ2VtZW50Lgor CisvLyBDb3B5cmlnaHQgKEMpIDE5OTctMjAxNiBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KKy8vCisvLyBUaGlzIGZpbGUgaXMgcGFydCBvZiBH Q0MuCisvLworLy8gR0NDIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKy8vIGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5CisvLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl aXRoZXIgdmVyc2lvbiAzLCBvciAoYXQgeW91ciBvcHRpb24pCisvLyBhbnkg bGF0ZXIgdmVyc2lvbi4KKy8vCisvLyBHQ0MgaXMgZGlzdHJpYnV0ZWQgaW4g dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKy8vIGJ1dCBXSVRI T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mCisvLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisvLyBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorLy8KKy8vIFVu ZGVyIFNlY3Rpb24gNyBvZiBHUEwgdmVyc2lvbiAzLCB5b3UgYXJlIGdyYW50 ZWQgYWRkaXRpb25hbAorLy8gcGVybWlzc2lvbnMgZGVzY3JpYmVkIGluIHRo ZSBHQ0MgUnVudGltZSBMaWJyYXJ5IEV4Y2VwdGlvbiwgdmVyc2lvbgorLy8g My4xLCBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbi4KKworLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYW5kCisvLyBhIGNv cHkgb2YgdGhlIEdDQyBSdW50aW1lIExpYnJhcnkgRXhjZXB0aW9uIGFsb25n IHdpdGggdGhpcyBwcm9ncmFtOworLy8gc2VlIHRoZSBmaWxlcyBDT1BZSU5H MyBhbmQgQ09QWUlORy5SVU5USU1FIHJlc3BlY3RpdmVseS4gIElmIG5vdCwg c2VlCisvLyA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisKKyNp bmNsdWRlIDxiaXRzL2MrK2NvbmZpZy5oPgorI2luY2x1ZGUgIm5ldyIKKwor X0dMSUJDWFhfV0VBS19ERUZJTklUSU9OIHZvaWQKK29wZXJhdG9yIGRlbGV0 ZSh2b2lkKiBwdHIsIHN0ZDo6c2l6ZV90LCBzdGQ6OmFsaWduX3ZhbF90IGFs KSBfR0xJQkNYWF9VU0VfTk9FWENFUFQKK3sKKyAgOjpvcGVyYXRvciBkZWxl dGUgKHB0ciwgYWwpOworfQpkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2xp YnN1cGMrKy9kZWxfb3B2YS5jYyBiL2xpYnN0ZGMrKy12My9saWJzdXBjKysv ZGVsX29wdmEuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uOTVkMmEzZgotLS0gL2Rldi9udWxsCisrKyBiL2xpYnN0ZGMrKy12My9s aWJzdXBjKysvZGVsX29wdmEuY2MKQEAgLTAsMCArMSwzNiBAQAorLy8gQm9p bGVycGxhdGUgc3VwcG9ydCByb3V0aW5lcyBmb3IgLSotIEMrKyAtKi0gZHlu YW1pYyBtZW1vcnkgbWFuYWdlbWVudC4KKworLy8gQ29weXJpZ2h0IChDKSAx OTk3LTIwMTYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisvLwor Ly8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0NDLgorLy8KKy8vIEdDQyBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5CisvLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorLy8gdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMywgb3Ig KGF0IHlvdXIgb3B0aW9uKQorLy8gYW55IGxhdGVyIHZlcnNpb24uCisvLwor Ly8gR0NDIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSB1c2VmdWwsCisvLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorLy8gTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZQorLy8gR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y IG1vcmUgZGV0YWlscy4KKy8vCisvLyBVbmRlciBTZWN0aW9uIDcgb2YgR1BM IHZlcnNpb24gMywgeW91IGFyZSBncmFudGVkIGFkZGl0aW9uYWwKKy8vIHBl cm1pc3Npb25zIGRlc2NyaWJlZCBpbiB0aGUgR0NDIFJ1bnRpbWUgTGlicmFy eSBFeGNlcHRpb24sIHZlcnNpb24KKy8vIDMuMSwgYXMgcHVibGlzaGVkIGJ5 IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisKKy8vIFlvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFuZAorLy8gYSBjb3B5IG9mIHRoZSBHQ0MgUnVudGlt ZSBMaWJyYXJ5IEV4Y2VwdGlvbiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsK Ky8vIHNlZSB0aGUgZmlsZXMgQ09QWUlORzMgYW5kIENPUFlJTkcuUlVOVElN RSByZXNwZWN0aXZlbHkuICBJZiBub3QsIHNlZQorLy8gPGh0dHA6Ly93d3cu Z251Lm9yZy9saWNlbnNlcy8+LgorCisjaW5jbHVkZSA8Yml0cy9jKytjb25m aWcuaD4KKyNpbmNsdWRlICJuZXciCisKKy8vIFRoZSBzaXplZCBkZWxldGVz IGFyZSBkZWZpbmVkIGluIG90aGVyIGZpbGVzLgorI3ByYWdtYSBHQ0MgZGlh Z25vc3RpYyBpZ25vcmVkICItV3NpemVkLWRlYWxsb2NhdGlvbiIKKworX0dM SUJDWFhfV0VBS19ERUZJTklUSU9OIHZvaWQKK29wZXJhdG9yIGRlbGV0ZVtd ICh2b2lkICpwdHIsIHN0ZDo6YWxpZ25fdmFsX3QgYWwpIF9HTElCQ1hYX1VT RV9OT0VYQ0VQVAoreworICA6Om9wZXJhdG9yIGRlbGV0ZSAocHRyLCBhbCk7 Cit9CmRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvbGlic3VwYysrL2RlbF9v cHZhbnQuY2MgYi9saWJzdGRjKystdjMvbGlic3VwYysrL2RlbF9vcHZhbnQu Y2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTg0MGM4 ZgotLS0gL2Rldi9udWxsCisrKyBiL2xpYnN0ZGMrKy12My9saWJzdXBjKysv ZGVsX29wdmFudC5jYwpAQCAtMCwwICsxLDMzIEBACisvLyBCb2lsZXJwbGF0 ZSBzdXBwb3J0IHJvdXRpbmVzIGZvciAtKi0gQysrIC0qLSBkeW5hbWljIG1l bW9yeSBtYW5hZ2VtZW50LgorCisvLyBDb3B5cmlnaHQgKEMpIDE5OTctMjAx NiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKy8vCisvLyBUaGlz IGZpbGUgaXMgcGFydCBvZiBHQ0MuCisvLworLy8gR0NDIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK Ky8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisvLyB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzLCBvciAoYXQgeW91 ciBvcHRpb24pCisvLyBhbnkgbGF0ZXIgdmVyc2lvbi4KKy8vCisvLyBHQ0Mg aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwKKy8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisvLyBNRVJDSEFOVEFCSUxJ VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg dGhlCisvLyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk ZXRhaWxzLgorLy8KKy8vIFVuZGVyIFNlY3Rpb24gNyBvZiBHUEwgdmVyc2lv biAzLCB5b3UgYXJlIGdyYW50ZWQgYWRkaXRpb25hbAorLy8gcGVybWlzc2lv bnMgZGVzY3JpYmVkIGluIHRoZSBHQ0MgUnVudGltZSBMaWJyYXJ5IEV4Y2Vw dGlvbiwgdmVyc2lvbgorLy8gMy4xLCBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKworLy8gWW91IHNob3VsZCBoYXZl IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYW5kCisvLyBhIGNvcHkgb2YgdGhlIEdDQyBSdW50aW1lIExpYnJh cnkgRXhjZXB0aW9uIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOworLy8gc2Vl IHRoZSBmaWxlcyBDT1BZSU5HMyBhbmQgQ09QWUlORy5SVU5USU1FIHJlc3Bl Y3RpdmVseS4gIElmIG5vdCwgc2VlCisvLyA8aHR0cDovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzLz4uCisKKyNpbmNsdWRlIDxiaXRzL2MrK2NvbmZpZy5oPgor I2luY2x1ZGUgIm5ldyIKKworX0dMSUJDWFhfV0VBS19ERUZJTklUSU9OIHZv aWQKK29wZXJhdG9yIGRlbGV0ZVtdICh2b2lkICpwdHIsIHN0ZDo6YWxpZ25f dmFsX3QgYWwsIGNvbnN0IHN0ZDo6bm90aHJvd190JikgX0dMSUJDWFhfVVNF X05PRVhDRVBUCit7CisgIDo6b3BlcmF0b3IgZGVsZXRlW10gKHB0ciwgYWwp OworfQpkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2xpYnN1cGMrKy9kZWxf b3B2c2EuY2MgYi9saWJzdGRjKystdjMvbGlic3VwYysrL2RlbF9vcHZzYS5j YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MTU4NmIw Ci0tLSAvZGV2L251bGwKKysrIGIvbGlic3RkYysrLXYzL2xpYnN1cGMrKy9k ZWxfb3B2c2EuY2MKQEAgLTAsMCArMSwzMyBAQAorLy8gQm9pbGVycGxhdGUg c3VwcG9ydCByb3V0aW5lcyBmb3IgLSotIEMrKyAtKi0gZHluYW1pYyBtZW1v cnkgbWFuYWdlbWVudC4KKworLy8gQ29weXJpZ2h0IChDKSAxOTk3LTIwMTYg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisvLworLy8gVGhpcyBm aWxlIGlzIHBhcnQgb2YgR0NDLgorLy8KKy8vIEdDQyBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cisv LyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorLy8gdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMywgb3IgKGF0IHlvdXIg b3B0aW9uKQorLy8gYW55IGxhdGVyIHZlcnNpb24uCisvLworLy8gR0NDIGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm dWwsCisvLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorLy8gTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZQorLy8gR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0 YWlscy4KKy8vCisvLyBVbmRlciBTZWN0aW9uIDcgb2YgR1BMIHZlcnNpb24g MywgeW91IGFyZSBncmFudGVkIGFkZGl0aW9uYWwKKy8vIHBlcm1pc3Npb25z IGRlc2NyaWJlZCBpbiB0aGUgR0NDIFJ1bnRpbWUgTGlicmFyeSBFeGNlcHRp b24sIHZlcnNpb24KKy8vIDMuMSwgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24uCisKKy8vIFlvdSBzaG91bGQgaGF2ZSBy ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFuZAorLy8gYSBjb3B5IG9mIHRoZSBHQ0MgUnVudGltZSBMaWJyYXJ5 IEV4Y2VwdGlvbiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsKKy8vIHNlZSB0 aGUgZmlsZXMgQ09QWUlORzMgYW5kIENPUFlJTkcuUlVOVElNRSByZXNwZWN0 aXZlbHkuICBJZiBub3QsIHNlZQorLy8gPGh0dHA6Ly93d3cuZ251Lm9yZy9s aWNlbnNlcy8+LgorCisjaW5jbHVkZSA8Yml0cy9jKytjb25maWcuaD4KKyNp bmNsdWRlICJuZXciCisKK19HTElCQ1hYX1dFQUtfREVGSU5JVElPTiB2b2lk CitvcGVyYXRvciBkZWxldGVbXSAodm9pZCAqcHRyLCBzdGQ6OnNpemVfdCwg c3RkOjphbGlnbl92YWxfdCBhbCkgX0dMSUJDWFhfVVNFX05PRVhDRVBUCit7 CisgIDo6b3BlcmF0b3IgZGVsZXRlW10gKHB0ciwgYWwpOworfQpkaWZmIC0t Z2l0IGEvbGlic3RkYysrLXYzL2xpYnN1cGMrKy9uZXcgYi9saWJzdGRjKyst djMvbGlic3VwYysrL25ldwppbmRleCA4ZThhMzI3Li40NzdmYWRjIDEwMDY0 NAotLS0gYS9saWJzdGRjKystdjMvbGlic3VwYysrL25ldworKysgYi9saWJz dGRjKystdjMvbGlic3VwYysrL25ldwpAQCAtNzksNiArNzksMTAgQEAgbmFt ZXNwYWNlIHN0ZAogICB9OwogI2VuZGlmCiAKKyNpZiBfX2NwcF9hbGlnbmVk X25ldworICBlbnVtIGNsYXNzIGFsaWduX3ZhbF90OiBzaXplX3Qge307Cisj ZW5kaWYKKwogICBzdHJ1Y3Qgbm90aHJvd190CiAgIHsKICNpZiBfX2NwbHVz cGx1cyA+PSAyMDExMDNMCkBAIC0xMzUsNiArMTM5LDMwIEBAIHZvaWQgb3Bl cmF0b3IgZGVsZXRlKHZvaWQqLCBjb25zdCBzdGQ6Om5vdGhyb3dfdCYpIF9H TElCQ1hYX1VTRV9OT0VYQ0VQVAogICBfX2F0dHJpYnV0ZV9fKChfX2V4dGVy bmFsbHlfdmlzaWJsZV9fKSk7CiB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZv aWQqLCBjb25zdCBzdGQ6Om5vdGhyb3dfdCYpIF9HTElCQ1hYX1VTRV9OT0VY Q0VQVAogICBfX2F0dHJpYnV0ZV9fKChfX2V4dGVybmFsbHlfdmlzaWJsZV9f KSk7CisjaWYgX19jcHBfYWxpZ25lZF9uZXcKK3ZvaWQqIG9wZXJhdG9yIG5l dyhzdGQ6OnNpemVfdCwgc3RkOjphbGlnbl92YWxfdCkKKyAgX19hdHRyaWJ1 dGVfXygoX19leHRlcm5hbGx5X3Zpc2libGVfXykpOwordm9pZCogb3BlcmF0 b3IgbmV3KHN0ZDo6c2l6ZV90LCBzdGQ6OmFsaWduX3ZhbF90LCBjb25zdCBz dGQ6Om5vdGhyb3dfdCYpCisgIF9HTElCQ1hYX1VTRV9OT0VYQ0VQVCBfX2F0 dHJpYnV0ZV9fKChfX2V4dGVybmFsbHlfdmlzaWJsZV9fKSk7Cit2b2lkIG9w ZXJhdG9yIGRlbGV0ZSh2b2lkKiwgc3RkOjphbGlnbl92YWxfdCkKKyAgX0dM SUJDWFhfVVNFX05PRVhDRVBUIF9fYXR0cmlidXRlX18oKF9fZXh0ZXJuYWxs eV92aXNpYmxlX18pKTsKK3ZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqLCBz dGQ6OmFsaWduX3ZhbF90LCBjb25zdCBzdGQ6Om5vdGhyb3dfdCYpCisgIF9H TElCQ1hYX1VTRV9OT0VYQ0VQVCBfX2F0dHJpYnV0ZV9fKChfX2V4dGVybmFs bHlfdmlzaWJsZV9fKSk7Cit2b2lkKiBvcGVyYXRvciBuZXdbXShzdGQ6OnNp emVfdCwgc3RkOjphbGlnbl92YWxfdCkKKyAgX19hdHRyaWJ1dGVfXygoX19l eHRlcm5hbGx5X3Zpc2libGVfXykpOwordm9pZCogb3BlcmF0b3IgbmV3W10o c3RkOjpzaXplX3QsIHN0ZDo6YWxpZ25fdmFsX3QsIGNvbnN0IHN0ZDo6bm90 aHJvd190JikKKyAgX0dMSUJDWFhfVVNFX05PRVhDRVBUIF9fYXR0cmlidXRl X18oKF9fZXh0ZXJuYWxseV92aXNpYmxlX18pKTsKK3ZvaWQgb3BlcmF0b3Ig ZGVsZXRlW10odm9pZCosIHN0ZDo6YWxpZ25fdmFsX3QpCisgIF9HTElCQ1hY X1VTRV9OT0VYQ0VQVCBfX2F0dHJpYnV0ZV9fKChfX2V4dGVybmFsbHlfdmlz aWJsZV9fKSk7Cit2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqLCBzdGQ6 OmFsaWduX3ZhbF90LCBjb25zdCBzdGQ6Om5vdGhyb3dfdCYpCisgIF9HTElC Q1hYX1VTRV9OT0VYQ0VQVCBfX2F0dHJpYnV0ZV9fKChfX2V4dGVybmFsbHlf dmlzaWJsZV9fKSk7CisjaWYgX19jcHBfc2l6ZWRfZGVhbGxvY2F0aW9uCit2 b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiwgc3RkOjpzaXplX3QsIHN0ZDo6 YWxpZ25fdmFsX3QpCisgIF9HTElCQ1hYX1VTRV9OT0VYQ0VQVCBfX2F0dHJp YnV0ZV9fKChfX2V4dGVybmFsbHlfdmlzaWJsZV9fKSk7Cit2b2lkIG9wZXJh dG9yIGRlbGV0ZVtdKHZvaWQqLCBzdGQ6OnNpemVfdCwgc3RkOjphbGlnbl92 YWxfdCkKKyAgX0dMSUJDWFhfVVNFX05PRVhDRVBUIF9fYXR0cmlidXRlX18o KF9fZXh0ZXJuYWxseV92aXNpYmxlX18pKTsKKyNlbmRpZiAvLyBfX2NwcF9z aXplZF9kZWFsbG9jYXRpb24KKyNlbmRpZiAvLyBfX2NwcF9hbGlnbmVkX25l dwogCiAvLyBEZWZhdWx0IHBsYWNlbWVudCB2ZXJzaW9ucyBvZiBvcGVyYXRv ciBuZXcuCiBpbmxpbmUgdm9pZCogb3BlcmF0b3IgbmV3KHN0ZDo6c2l6ZV90 LCB2b2lkKiBfX3ApIF9HTElCQ1hYX1VTRV9OT0VYQ0VQVApkaWZmIC0tZ2l0 IGEvbGlic3RkYysrLXYzL2xpYnN1cGMrKy9uZXdfb3BhLmNjIGIvbGlic3Rk YysrLXYzL2xpYnN1cGMrKy9uZXdfb3BhLmNjCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLjIxOTQwZTgKLS0tIC9kZXYvbnVsbAorKysg Yi9saWJzdGRjKystdjMvbGlic3VwYysrL25ld19vcGEuY2MKQEAgLTAsMCAr MSw3NCBAQAorLy8gU3VwcG9ydCByb3V0aW5lcyBmb3IgdGhlIC0qLSBDKysg LSotIGR5bmFtaWMgbWVtb3J5IG1hbmFnZW1lbnQuCisKKy8vIENvcHlyaWdo dCAoQykgMTk5Ny0yMDE2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j LgorLy8KKy8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdDQy4KKy8vCisvLyBH Q0MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yIG1vZGlmeQorLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKy8v IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u IDMsIG9yIChhdCB5b3VyIG9wdGlvbikKKy8vIGFueSBsYXRlciB2ZXJzaW9u LgorLy8KKy8vIEdDQyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAorLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKy8v IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRS4gIFNlZSB0aGUKKy8vIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCisvLworLy8gVW5kZXIgU2VjdGlvbiA3 IG9mIEdQTCB2ZXJzaW9uIDMsIHlvdSBhcmUgZ3JhbnRlZCBhZGRpdGlvbmFs CisvLyBwZXJtaXNzaW9ucyBkZXNjcmliZWQgaW4gdGhlIEdDQyBSdW50aW1l IExpYnJhcnkgRXhjZXB0aW9uLCB2ZXJzaW9uCisvLyAzLjEsIGFzIHB1Ymxp c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorCisvLyBZ b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBhbmQKKy8vIGEgY29weSBvZiB0aGUgR0ND IFJ1bnRpbWUgTGlicmFyeSBFeGNlcHRpb24gYWxvbmcgd2l0aCB0aGlzIHBy b2dyYW07CisvLyBzZWUgdGhlIGZpbGVzIENPUFlJTkczIGFuZCBDT1BZSU5H LlJVTlRJTUUgcmVzcGVjdGl2ZWx5LiAgSWYgbm90LCBzZWUKKy8vIDxodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKworI2luY2x1ZGUgPGJpdHMv YysrY29uZmlnLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8 Yml0cy9leGNlcHRpb25fZGVmaW5lcy5oPgorI2luY2x1ZGUgIm5ldyIKKwor dXNpbmcgc3RkOjpuZXdfaGFuZGxlcjsKK3VzaW5nIHN0ZDo6YmFkX2FsbG9j OworCisjaWYgIUhBVkVfQUxJR05FRF9BTExPQworI2lmIEhBVkVfUE9TSVhf TUVNQUxJR04KK3N0YXRpYyBpbmxpbmUgdm9pZCoKK2FsaWduZWRfYWxsb2Mg KHN0ZDo6c2l6ZV90IGFsLCBzdGQ6OnNpemVfdCBzeikKK3sKKyAgdm9pZCAq cHRyOworICBpbnQgcmV0ID0gcG9zaXhfbWVtYWxpZ24gKCZwdHIsIGFsLCBz eik7CisgIGlmIChyZXQgPT0gMCkKKyAgICByZXR1cm4gcHRyOworICByZXR1 cm4gbnVsbHB0cjsKK30KKyNlbGlmIEhBVkVfTUVNQUxJR04KKyNpbmNsdWRl IDxtYWxsb2MuaD4KKyNkZWZpbmUgYWxpZ25lZF9hbGxvYyBtZW1hbGlnbgor I2Vsc2UKKy8vIFRoZSBDIGxpYnJhcnkgZG9lc24ndCBwcm92aWRlIGFueSBh bGlnbmVkIGFsbG9jYXRpb24gZnVuY3Rpb25zLCBkZWNsYXJlCisvLyBhbGln bmVkX2FsbG9jIGFuZCBnZXQgYSBsaW5rIGZhaWx1cmUgaWYgYWxpZ25lZCBu ZXcgaXMgdXNlZC4KK2V4dGVybiAiQyIgdm9pZCAqYWxpZ25lZF9hbGxvYyhz dGQ6OnNpemVfdCwgc3RkOjpzaXplX3QpOworI2VuZGlmCisjZW5kaWYKKwor X0dMSUJDWFhfV0VBS19ERUZJTklUSU9OIHZvaWQgKgorb3BlcmF0b3IgbmV3 IChzdGQ6OnNpemVfdCBzeiwgc3RkOjphbGlnbl92YWxfdCBhbCkKK3sKKyAg dm9pZCAqcDsKKworICAvKiBtYWxsb2MgKDApIGlzIHVucHJlZGljdGFibGU7 IGF2b2lkIGl0LiAgKi8KKyAgaWYgKHN6ID09IDApCisgICAgc3ogPSAxOwor CisgIHdoaWxlIChfX2J1aWx0aW5fZXhwZWN0ICgocCA9IGFsaWduZWRfYWxs b2MgKChzdGQ6OnNpemVfdClhbCwgc3opKSA9PSAwLAorCQkJICAgZmFsc2Up KQorICAgIHsKKyAgICAgIG5ld19oYW5kbGVyIGhhbmRsZXIgPSBzdGQ6Omdl dF9uZXdfaGFuZGxlciAoKTsKKyAgICAgIGlmICghIGhhbmRsZXIpCisJX0dM SUJDWFhfVEhST1dfT1JfQUJPUlQoYmFkX2FsbG9jKCkpOworICAgICAgaGFu ZGxlciAoKTsKKyAgICB9CisKKyAgcmV0dXJuIHA7Cit9CmRpZmYgLS1naXQg YS9saWJzdGRjKystdjMvbGlic3VwYysrL25ld19vcGFudC5jYyBiL2xpYnN0 ZGMrKy12My9saWJzdXBjKysvbmV3X29wYW50LmNjCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4NjNkNjQKLS0tIC9kZXYvbnVsbAor KysgYi9saWJzdGRjKystdjMvbGlic3VwYysrL25ld19vcGFudC5jYwpAQCAt MCwwICsxLDQxIEBACisvLyBCb2lsZXJwbGF0ZSBzdXBwb3J0IHJvdXRpbmVz IGZvciAtKi0gQysrIC0qLSBkeW5hbWljIG1lbW9yeSBtYW5hZ2VtZW50Lgor CisvLyBDb3B5cmlnaHQgKEMpIDE5OTctMjAxNiBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KKy8vCisvLyBUaGlzIGZpbGUgaXMgcGFydCBvZiBH Q0MuCisvLworLy8gR0NDIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKy8vIGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5CisvLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl aXRoZXIgdmVyc2lvbiAzLCBvciAoYXQgeW91ciBvcHRpb24pCisvLyBhbnkg bGF0ZXIgdmVyc2lvbi4KKy8vCisvLyBHQ0MgaXMgZGlzdHJpYnV0ZWQgaW4g dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKy8vIGJ1dCBXSVRI T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mCisvLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisvLyBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorLy8KKy8vIFVu ZGVyIFNlY3Rpb24gNyBvZiBHUEwgdmVyc2lvbiAzLCB5b3UgYXJlIGdyYW50 ZWQgYWRkaXRpb25hbAorLy8gcGVybWlzc2lvbnMgZGVzY3JpYmVkIGluIHRo ZSBHQ0MgUnVudGltZSBMaWJyYXJ5IEV4Y2VwdGlvbiwgdmVyc2lvbgorLy8g My4xLCBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbi4KKworLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYW5kCisvLyBhIGNv cHkgb2YgdGhlIEdDQyBSdW50aW1lIExpYnJhcnkgRXhjZXB0aW9uIGFsb25n IHdpdGggdGhpcyBwcm9ncmFtOworLy8gc2VlIHRoZSBmaWxlcyBDT1BZSU5H MyBhbmQgQ09QWUlORy5SVU5USU1FIHJlc3BlY3RpdmVseS4gIElmIG5vdCwg c2VlCisvLyA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisKKyNp bmNsdWRlIDxiaXRzL2MrK2NvbmZpZy5oPgorI2luY2x1ZGUgIm5ldyIKKwor X0dMSUJDWFhfV0VBS19ERUZJTklUSU9OIHZvaWQqCitvcGVyYXRvciBuZXco c3RkOjpzaXplX3Qgc3osIHN0ZDo6YWxpZ25fdmFsX3QgYWwsIGNvbnN0IHN0 ZDo6bm90aHJvd190JikKKyAgX0dMSUJDWFhfVVNFX05PRVhDRVBUCit7Cisg IF9fdHJ5CisgICAgeworICAgICAgcmV0dXJuIG9wZXJhdG9yIG5ldyhzeiwg YWwpOworICAgIH0KKyAgX19jYXRjaCguLi4pCisgICAgeworICAgICAgcmV0 dXJuIDA7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2xp YnN1cGMrKy9uZXdfb3B2YS5jYyBiL2xpYnN0ZGMrKy12My9saWJzdXBjKysv bmV3X29wdmEuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uNzEwOTQzMQotLS0gL2Rldi9udWxsCisrKyBiL2xpYnN0ZGMrKy12My9s aWJzdXBjKysvbmV3X29wdmEuY2MKQEAgLTAsMCArMSwzMyBAQAorLy8gQm9p bGVycGxhdGUgc3VwcG9ydCByb3V0aW5lcyBmb3IgLSotIEMrKyAtKi0gZHlu YW1pYyBtZW1vcnkgbWFuYWdlbWVudC4KKworLy8gQ29weXJpZ2h0IChDKSAx OTk3LTIwMTYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisvLwor Ly8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0NDLgorLy8KKy8vIEdDQyBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5CisvLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorLy8gdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMywgb3Ig KGF0IHlvdXIgb3B0aW9uKQorLy8gYW55IGxhdGVyIHZlcnNpb24uCisvLwor Ly8gR0NDIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSB1c2VmdWwsCisvLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorLy8gTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZQorLy8gR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y IG1vcmUgZGV0YWlscy4KKy8vCisvLyBVbmRlciBTZWN0aW9uIDcgb2YgR1BM IHZlcnNpb24gMywgeW91IGFyZSBncmFudGVkIGFkZGl0aW9uYWwKKy8vIHBl cm1pc3Npb25zIGRlc2NyaWJlZCBpbiB0aGUgR0NDIFJ1bnRpbWUgTGlicmFy eSBFeGNlcHRpb24sIHZlcnNpb24KKy8vIDMuMSwgYXMgcHVibGlzaGVkIGJ5 IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisKKy8vIFlvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFuZAorLy8gYSBjb3B5IG9mIHRoZSBHQ0MgUnVudGlt ZSBMaWJyYXJ5IEV4Y2VwdGlvbiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsK Ky8vIHNlZSB0aGUgZmlsZXMgQ09QWUlORzMgYW5kIENPUFlJTkcuUlVOVElN RSByZXNwZWN0aXZlbHkuICBJZiBub3QsIHNlZQorLy8gPGh0dHA6Ly93d3cu Z251Lm9yZy9saWNlbnNlcy8+LgorCisjaW5jbHVkZSA8Yml0cy9jKytjb25m aWcuaD4KKyNpbmNsdWRlICJuZXciCisKK19HTElCQ1hYX1dFQUtfREVGSU5J VElPTiB2b2lkKgorb3BlcmF0b3IgbmV3W10gKHN0ZDo6c2l6ZV90IHN6LCBz dGQ6OmFsaWduX3ZhbF90IGFsKQoreworICByZXR1cm4gOjpvcGVyYXRvciBu ZXcoc3osIGFsKTsKK30KZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9saWJz dXBjKysvbmV3X29wdmFudC5jYyBiL2xpYnN0ZGMrKy12My9saWJzdXBjKysv bmV3X29wdmFudC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi5hMzJmZWM4Ci0tLSAvZGV2L251bGwKKysrIGIvbGlic3RkYysrLXYz L2xpYnN1cGMrKy9uZXdfb3B2YW50LmNjCkBAIC0wLDAgKzEsNDEgQEAKKy8v IEJvaWxlcnBsYXRlIHN1cHBvcnQgcm91dGluZXMgZm9yIC0qLSBDKysgLSot IGR5bmFtaWMgbWVtb3J5IG1hbmFnZW1lbnQuCisKKy8vIENvcHlyaWdodCAo QykgMTk5Ny0yMDE2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgor Ly8KKy8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdDQy4KKy8vCisvLyBHQ0Mg aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yIG1vZGlmeQorLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKy8vIHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMs IG9yIChhdCB5b3VyIG9wdGlvbikKKy8vIGFueSBsYXRlciB2ZXJzaW9uLgor Ly8KKy8vIEdDQyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0 IHdpbGwgYmUgdXNlZnVsLAorLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKy8vIE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRS4gIFNlZSB0aGUKKy8vIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvciBtb3JlIGRldGFpbHMuCisvLworLy8gVW5kZXIgU2VjdGlvbiA3IG9m IEdQTCB2ZXJzaW9uIDMsIHlvdSBhcmUgZ3JhbnRlZCBhZGRpdGlvbmFsCisv LyBwZXJtaXNzaW9ucyBkZXNjcmliZWQgaW4gdGhlIEdDQyBSdW50aW1lIExp YnJhcnkgRXhjZXB0aW9uLCB2ZXJzaW9uCisvLyAzLjEsIGFzIHB1Ymxpc2hl ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorCisvLyBZb3Ug c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBhbmQKKy8vIGEgY29weSBvZiB0aGUgR0NDIFJ1 bnRpbWUgTGlicmFyeSBFeGNlcHRpb24gYWxvbmcgd2l0aCB0aGlzIHByb2dy YW07CisvLyBzZWUgdGhlIGZpbGVzIENPUFlJTkczIGFuZCBDT1BZSU5HLlJV TlRJTUUgcmVzcGVjdGl2ZWx5LiAgSWYgbm90LCBzZWUKKy8vIDxodHRwOi8v d3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKworI2luY2x1ZGUgPGJpdHMvYysr Y29uZmlnLmg+CisjaW5jbHVkZSAibmV3IgorCitfR0xJQkNYWF9XRUFLX0RF RklOSVRJT04gdm9pZCoKK29wZXJhdG9yIG5ld1tdIChzdGQ6OnNpemVfdCBz eiwgc3RkOjphbGlnbl92YWxfdCBhbCwgY29uc3Qgc3RkOjpub3Rocm93X3Qm KQorICBfR0xJQkNYWF9VU0VfTk9FWENFUFQKK3sKKyAgX190cnkKKyAgICB7 CisgICAgICByZXR1cm4gOjpvcGVyYXRvciBuZXdbXShzeiwgYWwpOworICAg IH0KKyAgX19jYXRjaCguLi4pCisgICAgeworICAgICAgcmV0dXJuIDA7Cisg ICAgfQorfQo= --001a114949048e980c053bf8d407--