From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from esa4.mentor.iphmx.com (esa4.mentor.iphmx.com [68.232.137.252]) by sourceware.org (Postfix) with ESMTPS id 34C6E385842C; Wed, 21 Dec 2022 15:51:36 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 34C6E385842C Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=codesourcery.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=mentor.com X-IronPort-AV: E=Sophos;i="5.96,262,1665475200"; d="diff'?scan'208";a="90482079" Received: from orw-gwy-02-in.mentorg.com ([192.94.38.167]) by esa4.mentor.iphmx.com with ESMTP; 21 Dec 2022 07:51:33 -0800 IronPort-SDR: pqUzYBP+qGdl5nuDqV/9awIJYjluBwzu5xLm1/qlLyTG7CzngYwqS1SquLcNSMWpqu+DQR4q0C f3vpKxKdKoGP/mURm99c+hL5q/2GxtcZzlOVNnovn4zrMLuiO0zmmLLcUCVveX9t2V8uOT5PE2 VtOC1roOBeXD/Josi5Z9eePwBm7/KTfWleSTKt3aR7oyWTfRkjmJJnPdcN0cyUqiZrvwmudn4h hEKK9cXeR0M76T5qbxt+FDGZEXnO25Fhu5XhsOFvk2SSwQDnp9wE+NsrMO00d393b1NLi0mTNp MfU= Content-Type: multipart/mixed; boundary="------------L6Ik9jUOU5eEE1rFUCRHbWVU" Message-ID: <7839f6c0-2ea2-eab5-4660-111dec7cfcb2@codesourcery.com> Date: Wed, 21 Dec 2022 16:51:25 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.6.0 Subject: [Patch] Fortran/OpenMP: Add parsing support for allocators/allocate directive (was: [Patch] Fortran/OpenMP: Add parsing support for allocators directive) Content-Language: en-US From: Tobias Burnus To: gcc-patches , Jakub Jelinek , fortran References: <11d6c8f4-cdb1-ddb6-8d48-f76c4c8e6382@codesourcery.com> In-Reply-To: <11d6c8f4-cdb1-ddb6-8d48-f76c4c8e6382@codesourcery.com> X-Originating-IP: [137.202.0.90] X-ClientProxiedBy: svr-ies-mbx-13.mgc.mentorg.com (139.181.222.13) To svr-ies-mbx-12.mgc.mentorg.com (139.181.222.12) X-Spam-Status: No, score=-11.4 required=5.0 tests=BAYES_00,GIT_PATCH_0,HEADER_FROM_DIFFERENT_DOMAINS,KAM_DMARC_STATUS,KAM_SHORT,SPF_HELO_PASS,SPF_PASS,TXREP 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: --------------L6Ik9jUOU5eEE1rFUCRHbWVU Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: quoted-printable Related pending (simple) patches - aka *Patch Ping*: * [Patch] Fortran: Extend align-clause checks of OpenMP's allocate clause https://gcc.gnu.org/pipermail/gcc-patches/2022-December/608401.html * [Patch] OpenMP: Parse align clause in allocate directive in C/C++ https://gcc.gnu.org/pipermail/gcc-patches/2022-December/608404.html On 14.12.22 11:47, Tobias Burnus wrote: > This patch adds parsing/argument-checking support for > '!$omp allocators allocate([align(int),allocator(a) :] list)' This follow-up patch additionally adds parsing support for both declarative and allocate-stmt-associated '!$omp allocate' directives =E2=80= =93 and replaces my previous patch. OK for mainline? * * * The code requires in line with OpenMP 5.1 that an executable statement comes before an '!$omp allocate' that is associated with a Fortran ALLOCATE stmt, which is diagnosed. Note: There is a spec change/regression related to permitting structure elements; while OpenMP 5.0/5.1 did permit them in the allocate-stmt-associated "!$omp allocate", OpenMP 5.2 stopped doing =E2=80= =93 and '!$omp allocators' never permitted it. =E2=80=94 For allocate that's se= ems to be the accidental result from "permitted unless stated otherwise" to "rejected unless stated otherwise". For 'allocators', it is the result of the original 'allocate' clause which should have been extended for 'allocators' - or should not. In any case, that's tracked now in OpenMP's spec issue #3437. Thoughts? =E2=80=93 The code rejects var%comp and var(1)%comp etc. for now = =E2=80=93 besides the unclear spec status, I admittedly did this also to make checking easier (like for duplicated entries, entry same as in ALLOCATE except for tailing array spec etc.). * * * This patch replaced both my previous patch in this thread and also Abid's patch > "[PATCH 1/5] [gfortran] Add parsing support for allocate directive > (OpenMP 5.0)." > https://gcc.gnu.org/pipermail/gcc-patches/2022-October/603258.html In his patch set, later patches actually add allocater support for allocatables/pointers, only =E2=80=93 but there issues with regards to the = used allocator (see patches + patch review). As my attached patch raises a sorry, it neither addresses that issue nor is it affected by that issue. Tobias ----------------- Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstra=C3=9Fe 201= , 80634 M=C3=BCnchen; Gesellschaft mit beschr=C3=A4nkter Haftung; Gesch=C3= =A4ftsf=C3=BChrer: Thomas Heurung, Frank Th=C3=BCrauf; Sitz der Gesellschaf= t: M=C3=BCnchen; Registergericht M=C3=BCnchen, HRB 106955 --------------L6Ik9jUOU5eEE1rFUCRHbWVU Content-Type: text/x-patch; charset="UTF-8"; name="allocate-allocators.diff" Content-Disposition: attachment; filename="allocate-allocators.diff" Content-Transfer-Encoding: base64 Rm9ydHJhbi9PcGVuTVA6IEFkZCBwYXJzaW5nIHN1cHBvcnQgZm9yIGFsbG9jYXRvcnMvYWxs b2NhdGUgZGlyZWN0aXZlCgpnY2MvZm9ydHJhbi9DaGFuZ2VMb2c6CgoJKiBkdW1wLXBhcnNl LXRyZWUuY2MgKHNob3dfb21wX25hbWVsaXN0KTogVXBkYXRlIGFsbG9jYXRvciwgZml4Cglh bGlnbiBkdW1wLgoJKHNob3dfb21wX25vZGUsIHNob3dfY29kZV9ub2RlKTogSGFuZGxlIEVY RUNfT01QX0FMTE9DQVRFLgoJKiBnZm9ydHJhbi5oIChlbnVtIGdmY19zdGF0ZW1lbnQpOiBB ZGQgU1RfT01QX0FMTE9DQVRFIGFuZCAuLi5fRVhFQy4KCShlbnVtIGdmY19leGVjX29wKTog QWRkIEVYRUNfT01QX0FMTE9DQVRFLgoJKHN0cnVjdCBnZmNfb21wX25hbWVsaXN0KTogQWRk ICdhbGxvY2F0b3InIHRvICd1MicgdW5pb24uCgkoc3RydWN0IGdmY19uYW1lc3BhY2UpOiBB ZGQgb21wX2FsbG9jYXRlLgoJKGdmY19yZXNvbHZlX29tcF9hbGxvY2F0ZSk6IE5ldy4KCSog bWF0Y2guY2MgKGdmY19mcmVlX29tcF9uYW1lbGlzdCk6IEZyZWUgJ3UyLmFsbG9jYXRvcicu CgkqIG1hdGNoLmggKGdmY19tYXRjaF9vbXBfYWxsb2NhdGUsIGdmY19tYXRjaF9vbXBfYWxs b2NhdG9ycyk6IE5ldy4KCSogb3Blbm1wLmNjIChnZmNfb21wX2RpcmVjdGl2ZXMpOiBVbmNv bW1lbnQgYWxsb2NhdGUvYWxsb2NhdG9ycy4KCShnZmNfbWF0Y2hfb21wX3ZhcmlhYmxlX2xp c3QpOiBBZGQgYm9vbCBhcmcgZm9yCglyZWplY3RpbmcgbGlzdGVuaW5nIGNvbW1vbi1ibG9j ayB2YXJzIHNlcGFyYXRlbHkuCgkoZ2ZjX21hdGNoX29tcF9jbGF1c2VzKTogVXBkYXRlIGZv ciB1Mi5hbGxvY2F0b3JzLgoJKE9NUF9BTExPQ0FUT1JTX0NMQVVTRVMsIGdmY19tYXRjaF9v bXBfYWxsb2NhdGUsCglnZmNfbWF0Y2hfb21wX2FsbG9jYXRvcnMsIGlzX3ByZWRlZmluZWRf YWxsb2NhdG9yLAoJZ2ZjX3Jlc29sdmVfb21wX2FsbG9jYXRlKTogTmV3LgoJKHJlc29sdmVf b21wX2NsYXVzZXMpOiBVcGRhdGUgJ2FsbG9jYXRlJyBjbGF1c2UgY2hlY2tzLgoJKG9tcF9j b2RlX3RvX3N0YXRlbWVudCwgZ2ZjX3Jlc29sdmVfb21wX2RpcmVjdGl2ZSk6IEhhbmRsZQoJ T01QIEFMTE9DQVRFL0FMTE9DQVRPUlMuCgkqIHBhcnNlLmNjIChpbl9leGVjX3BhcnQpOiBO ZXcgZ2xvYmFsIHZhci4KCShjaGVja19vbXBfYWxsb2NhdGVfc3RtdCwgcGFyc2Vfb3Blbm1w X2FsbG9jYXRlX2Jsb2NrKTogTmV3LgoJKGRlY29kZV9vbXBfZGlyZWN0aXZlLCBjYXNlX2V4 ZWNfbWFya2VycywgY2FzZV9vbXBfZGVjbCwKCWdmY19hc2NpaV9zdGF0ZW1lbnQsIHBhcnNl X29tcF9zdHJ1Y3R1cmVkX2Jsb2NrKTogSGFuZGxlCglPTVAgYWxsb2NhdGUvYWxsb2NhdG9y cy4KCSh2ZXJpZnlfc3Rfb3JkZXIsIHBhcnNlX2V4ZWN1dGFibGUpOiBTZXQgaW5fZXhlY19w YXJ0LgoJKiByZXNvbHZlLmNjIChnZmNfcmVzb2x2ZV9ibG9ja3MsIHJlc29sdmVfY29kZXMp OiBIYW5kbGUKCWFsbG9jYXRlL2FsbG9jYXRvcnMuCgkqIHN0LmNjIChnZmNfZnJlZV9zdGF0 ZW1lbnQpOiBMaWtld2lzZS4KCSogdHJhbnMuY2MgKHRyYW5zX2NvZGUpOikgTGlrZXdpc2Uu CgkqIHRyYW5zLW9wZW5tcC5jYyAoZ2ZjX3RyYW5zX29tcF9kaXJlY3RpdmUpOiBMaWtld2lz ZS4KCShnZmNfdHJhbnNfb21wX2NsYXVzZXMsIGdmY19zcGxpdF9vbXBfY2xhdXNlcyk6IFVw ZGF0ZSBmb3IKCXUyLmFsbG9jYXRvciwgZml4IGZvciB1LmFsaWduLgoKbGliZ29tcC9DaGFu Z2VMb2c6CgoJKiB0ZXN0c3VpdGUvbGliZ29tcC5mb3J0cmFuL2FsbG9jYXRlLTMuZjkwOiBV cGRhdGUgZGctZXJyb3IuCgpnY2MvdGVzdHN1aXRlL0NoYW5nZUxvZzoKCgkqIGdmb3J0cmFu LmRnL2dvbXAvYWxsb2NhdGUtMi5mOTA6IFVwZGF0ZSBkZy1lcnJvci4KCSogZ2ZvcnRyYW4u ZGcvZ29tcC9hbGxvY2F0ZS00LmY5MDogTmV3IHRlc3QuCgkqIGdmb3J0cmFuLmRnL2dvbXAv YWxsb2NhdGUtNS5mOTA6IE5ldyB0ZXN0LgoJKiBnZm9ydHJhbi5kZy9nb21wL2FsbG9jYXRl LTYuZjkwOiBOZXcgdGVzdC4KCSogZ2ZvcnRyYW4uZGcvZ29tcC9hbGxvY2F0ZS03LmY5MDog TmV3IHRlc3QuCgkqIGdmb3J0cmFuLmRnL2dvbXAvYWxsb2NhdG9ycy0xLmY5MDogTmV3IHRl c3QuCgkqIGdmb3J0cmFuLmRnL2dvbXAvYWxsb2NhdG9ycy0yLmY5MDogTmV3IHRlc3QuCgog Z2NjL2ZvcnRyYW4vZHVtcC1wYXJzZS10cmVlLmNjICAgICAgICAgICAgICAgICAgIHwgICA4 ICstCiBnY2MvZm9ydHJhbi9nZm9ydHJhbi5oICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgIDkgKy0KIGdjYy9mb3J0cmFuL21hdGNoLmNjICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAgNyArLQogZ2NjL2ZvcnRyYW4vbWF0Y2guaCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgICAyICsKIGdjYy9mb3J0cmFuL29wZW5tcC5jYyAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8IDMyOCArKysrKysrKysrKysrKysrKysrKystLQogZ2NjL2ZvcnRy YW4vcGFyc2UuY2MgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTg0ICsrKysrKysr KysrKy0KIGdjYy9mb3J0cmFuL3Jlc29sdmUuY2MgICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgNiArCiBnY2MvZm9ydHJhbi9zdC5jYyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgIDIgKwogZ2NjL2ZvcnRyYW4vdHJhbnMtb3Blbm1wLmNjICAgICAgICAgICAg ICAgICAgICAgIHwgIDE0ICstCiBnY2MvZm9ydHJhbi90cmFucy5jYyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgIDIgKwogZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21w L2FsbG9jYXRlLTIuZjkwICAgIHwgICA0ICstCiBnY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRn L2dvbXAvYWxsb2NhdGUtNC5mOTAgICAgfCAgNTQgKysrKwogZ2NjL3Rlc3RzdWl0ZS9nZm9y dHJhbi5kZy9nb21wL2FsbG9jYXRlLTUuZjkwICAgIHwgIDkzICsrKysrKysKIGdjYy90ZXN0 c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9hbGxvY2F0ZS02LmY5MCAgICB8IDEwMyArKysrKysr CiBnY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dvbXAvYWxsb2NhdGUtNy5mOTAgICAgfCAy MzAgKysrKysrKysrKysrKysrKwogZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL2Fs bG9jYXRvcnMtMS5mOTAgIHwgIDI4ICsrCiBnY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dv bXAvYWxsb2NhdG9ycy0yLmY5MCAgfCAgMjIgKysKIGxpYmdvbXAvdGVzdHN1aXRlL2xpYmdv bXAuZm9ydHJhbi9hbGxvY2F0ZS0zLmY5MCB8ICAgMiArLQogMTggZmlsZXMgY2hhbmdlZCwg MTA2MiBpbnNlcnRpb25zKCspLCAzNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9nY2Mv Zm9ydHJhbi9kdW1wLXBhcnNlLXRyZWUuY2MgYi9nY2MvZm9ydHJhbi9kdW1wLXBhcnNlLXRy ZWUuY2MKaW5kZXggNWFlNzJkYzFjYWMuLjQ0MGZiNDYxZjQ2IDEwMDY0NAotLS0gYS9nY2Mv Zm9ydHJhbi9kdW1wLXBhcnNlLXRyZWUuY2MKKysrIGIvZ2NjL2ZvcnRyYW4vZHVtcC1wYXJz ZS10cmVlLmNjCkBAIC0xMzYyLDE0ICsxMzYyLDE0IEBAIHNob3dfb21wX25hbWVsaXN0IChp bnQgbGlzdF90eXBlLCBnZmNfb21wX25hbWVsaXN0ICpuKQogCSAgaWYgKG4tPmV4cHIpCiAJ ICAgIHsKIAkgICAgICBmcHV0cyAoImFsbG9jYXRvcigiLCBkdW1wZmlsZSk7Ci0JICAgICAg c2hvd19leHByIChuLT5leHByKTsKKwkgICAgICBzaG93X2V4cHIgKG4tPnUyLmFsbG9jYXRv cik7CiAJICAgICAgZnB1dGMgKCcpJywgZHVtcGZpbGUpOwogCSAgICB9CiAJICBpZiAobi0+ ZXhwciAmJiBuLT51LmFsaWduKQogCSAgICBmcHV0YyAoJywnLCBkdW1wZmlsZSk7CiAJICBp ZiAobi0+dS5hbGlnbikKIAkgICAgewotCSAgICAgIGZwdXRzICgiYWxsb2NhdG9yKCIsIGR1 bXBmaWxlKTsKKwkgICAgICBmcHV0cyAoImFsaWduKCIsIGR1bXBmaWxlKTsKIAkgICAgICBz aG93X2V4cHIgKG4tPnUuYWxpZ24pOwogCSAgICAgIGZwdXRjICgnKScsIGR1bXBmaWxlKTsK IAkgICAgfQpAQCAtMjA4MSw2ICsyMDgxLDggQEAgc2hvd19vbXBfbm9kZSAoaW50IGxldmVs LCBnZmNfY29kZSAqYykKICAgICBjYXNlIEVYRUNfT0FDQ19DQUNIRTogbmFtZSA9ICJDQUNI RSI7IGlzX29hY2MgPSB0cnVlOyBicmVhazsKICAgICBjYXNlIEVYRUNfT0FDQ19FTlRFUl9E QVRBOiBuYW1lID0gIkVOVEVSIERBVEEiOyBpc19vYWNjID0gdHJ1ZTsgYnJlYWs7CiAgICAg Y2FzZSBFWEVDX09BQ0NfRVhJVF9EQVRBOiBuYW1lID0gIkVYSVQgREFUQSI7IGlzX29hY2Mg PSB0cnVlOyBicmVhazsKKyAgICBjYXNlIEVYRUNfT01QX0FMTE9DQVRFOiBuYW1lID0gIkFM TE9DQVRFIjsgYnJlYWs7CisgICAgY2FzZSBFWEVDX09NUF9BTExPQ0FUT1JTOiBuYW1lID0g IkFMTE9DQVRPUlMiOyBicmVhazsKICAgICBjYXNlIEVYRUNfT01QX0FTU1VNRTogbmFtZSA9 ICJBU1NVTUUiOyBicmVhazsKICAgICBjYXNlIEVYRUNfT01QX0FUT01JQzogbmFtZSA9ICJB VE9NSUMiOyBicmVhazsKICAgICBjYXNlIEVYRUNfT01QX0JBUlJJRVI6IG5hbWUgPSAiQkFS UklFUiI7IGJyZWFrOwpAQCAtMzQwOSw2ICszNDExLDggQEAgc2hvd19jb2RlX25vZGUgKGlu dCBsZXZlbCwgZ2ZjX2NvZGUgKmMpCiAgICAgY2FzZSBFWEVDX09BQ0NfQ0FDSEU6CiAgICAg Y2FzZSBFWEVDX09BQ0NfRU5URVJfREFUQToKICAgICBjYXNlIEVYRUNfT0FDQ19FWElUX0RB VEE6CisgICAgY2FzZSBFWEVDX09NUF9BTExPQ0FURToKKyAgICBjYXNlIEVYRUNfT01QX0FM TE9DQVRPUlM6CiAgICAgY2FzZSBFWEVDX09NUF9BU1NVTUU6CiAgICAgY2FzZSBFWEVDX09N UF9BVE9NSUM6CiAgICAgY2FzZSBFWEVDX09NUF9DQU5DRUw6CmRpZmYgLS1naXQgYS9nY2Mv Zm9ydHJhbi9nZm9ydHJhbi5oIGIvZ2NjL2ZvcnRyYW4vZ2ZvcnRyYW4uaAppbmRleCAyMTll ZjhjNzYxMi4uNDkwYzk3NzI4N2UgMTAwNjQ0Ci0tLSBhL2djYy9mb3J0cmFuL2dmb3J0cmFu LmgKKysrIGIvZ2NjL2ZvcnRyYW4vZ2ZvcnRyYW4uaApAQCAtMzE4LDYgKzMxOCw4IEBAIGVu dW0gZ2ZjX3N0YXRlbWVudAogICBTVF9PTVBfRU5EX01BU0tFRF9UQVNLTE9PUCwgU1RfT01Q X01BU0tFRF9UQVNLTE9PUF9TSU1ELAogICBTVF9PTVBfRU5EX01BU0tFRF9UQVNLTE9PUF9T SU1ELCBTVF9PTVBfU0NPUEUsIFNUX09NUF9FTkRfU0NPUEUsCiAgIFNUX09NUF9FUlJPUiwg U1RfT01QX0FTU1VNRSwgU1RfT01QX0VORF9BU1NVTUUsIFNUX09NUF9BU1NVTUVTLAorICBT VF9PTVBfQUxMT0NBVEUsIFNUX09NUF9BTExPQ0FURV9FWEVDLAorICBTVF9PTVBfQUxMT0NB VE9SUywgU1RfT01QX0VORF9BTExPQ0FUT1JTLAogICAvKiBOb3RlOiBnZmNfbWF0Y2hfb21w X25vdGhpbmcgcmV0dXJucyBTVF9OT05FLiAqLwogICBTVF9PTVBfTk9USElORywgU1RfTk9O RQogfTsKQEAgLTEzNjIsNiArMTM2NCw3IEBAIHR5cGVkZWYgc3RydWN0IGdmY19vbXBfbmFt ZWxpc3QKICAgICB7CiAgICAgICBzdHJ1Y3QgZ2ZjX29tcF9uYW1lbGlzdF91ZHIgKnVkcjsK ICAgICAgIGdmY19uYW1lc3BhY2UgKm5zOworICAgICAgZ2ZjX2V4cHIgKmFsbG9jYXRvcjsK ICAgICB9IHUyOwogICBzdHJ1Y3QgZ2ZjX29tcF9uYW1lbGlzdCAqbmV4dDsKICAgbG9jdXMg d2hlcmU7CkBAIC0yMTc0LDggKzIxNzcsOSBAQCB0eXBlZGVmIHN0cnVjdCBnZmNfbmFtZXNw YWNlCiAgIC8qIExpbmtlZCBsaXN0IG9mICEkb21wIGRlY2xhcmUgdmFyaWFudCBjb25zdHJ1 Y3RzLiAgKi8KICAgc3RydWN0IGdmY19vbXBfZGVjbGFyZV92YXJpYW50ICpvbXBfZGVjbGFy ZV92YXJpYW50OwogCi0gIC8qIE9wZW5NUCBhc3N1bXB0aW9ucy4gICovCisgIC8qIE9wZW5N UCBhc3N1bXB0aW9ucyBhbmQgYWxsb2NhdGUgZm9yIHN0YXRpYy9zdGFjayB2YXJzLiAgKi8K ICAgc3RydWN0IGdmY19vbXBfYXNzdW1wdGlvbnMgKm9tcF9hc3N1bWVzOworICBzdHJ1Y3Qg Z2ZjX29tcF9uYW1lbGlzdCAqb21wX2FsbG9jYXRlOwogCiAgIC8qIEEgaGFzaCBzZXQgZm9y IHRoZSBnZmMgZXhwcmVzc2lvbnMgdGhhdCBoYXZlIGFscmVhZHkKICAgICAgYmVlbiBmaW5h bGl6ZWQgaW4gdGhpcyBuYW1lc3BhY2UuICAqLwpAQCAtMjk3MSw3ICsyOTc1LDcgQEAgZW51 bSBnZmNfZXhlY19vcAogICBFWEVDX09NUF9UQVJHRVRfVEVBTVNfTE9PUCwgRVhFQ19PTVBf TUFTS0VELCBFWEVDX09NUF9QQVJBTExFTF9NQVNLRUQsCiAgIEVYRUNfT01QX1BBUkFMTEVM X01BU0tFRF9UQVNLTE9PUCwgRVhFQ19PTVBfUEFSQUxMRUxfTUFTS0VEX1RBU0tMT09QX1NJ TUQsCiAgIEVYRUNfT01QX01BU0tFRF9UQVNLTE9PUCwgRVhFQ19PTVBfTUFTS0VEX1RBU0tM T09QX1NJTUQsIEVYRUNfT01QX1NDT1BFLAotICBFWEVDX09NUF9FUlJPUgorICBFWEVDX09N UF9FUlJPUiwgRVhFQ19PTVBfQUxMT0NBVEUsIEVYRUNfT01QX0FMTE9DQVRPUlMKIH07CiAK IHR5cGVkZWYgc3RydWN0IGdmY19jb2RlCkBAIC0zNjA3LDYgKzM2MTEsNyBAQCB2b2lkIGdm Y19mcmVlX29tcF9kZWNsYXJlX3NpbWQgKGdmY19vbXBfZGVjbGFyZV9zaW1kICopOwogdm9p ZCBnZmNfZnJlZV9vbXBfZGVjbGFyZV9zaW1kX2xpc3QgKGdmY19vbXBfZGVjbGFyZV9zaW1k ICopOwogdm9pZCBnZmNfZnJlZV9vbXBfdWRyIChnZmNfb21wX3VkciAqKTsKIGdmY19vbXBf dWRyICpnZmNfb21wX3Vkcl9maW5kIChnZmNfc3ltdHJlZSAqLCBnZmNfdHlwZXNwZWMgKik7 Cit2b2lkIGdmY19yZXNvbHZlX29tcF9hbGxvY2F0ZSAoZ2ZjX25hbWVzcGFjZSAqLCBnZmNf b21wX25hbWVsaXN0ICopOwogdm9pZCBnZmNfcmVzb2x2ZV9vbXBfYXNzdW1wdGlvbnMgKGdm Y19vbXBfYXNzdW1wdGlvbnMgKik7CiB2b2lkIGdmY19yZXNvbHZlX29tcF9kaXJlY3RpdmUg KGdmY19jb2RlICosIGdmY19uYW1lc3BhY2UgKik7CiB2b2lkIGdmY19yZXNvbHZlX2RvX2l0 ZXJhdG9yIChnZmNfY29kZSAqLCBnZmNfc3ltYm9sICosIGJvb2wpOwpkaWZmIC0tZ2l0IGEv Z2NjL2ZvcnRyYW4vbWF0Y2guY2MgYi9nY2MvZm9ydHJhbi9tYXRjaC5jYwppbmRleCA4OWZi MTE1YzBmNi4uZGNlNzJjOTFiZGUgMTAwNjQ0Ci0tLSBhL2djYy9mb3J0cmFuL21hdGNoLmNj CisrKyBiL2djYy9mb3J0cmFuL21hdGNoLmNjCkBAIC01NTI0LDE3ICs1NTI0LDIwIEBAIGdm Y19mcmVlX25hbWVsaXN0IChnZmNfbmFtZWxpc3QgKm5hbWUpCiAvKiBGcmVlIGFuIE9wZW5N UCBuYW1lbGlzdCBzdHJ1Y3R1cmUuICAqLwogCiB2b2lkCi1nZmNfZnJlZV9vbXBfbmFtZWxp c3QgKGdmY19vbXBfbmFtZWxpc3QgKm5hbWUsIGJvb2wgZnJlZV9ucywgYm9vbCBmcmVlX2Fs aWduKQorZ2ZjX2ZyZWVfb21wX25hbWVsaXN0IChnZmNfb21wX25hbWVsaXN0ICpuYW1lLCBi b29sIGZyZWVfbnMsCisJCSAgICAgICBib29sIGZyZWVfYWxpZ25fYWxsb2NhdG9yKQogewog ICBnZmNfb21wX25hbWVsaXN0ICpuOwogCiAgIGZvciAoOyBuYW1lOyBuYW1lID0gbikKICAg ICB7CiAgICAgICBnZmNfZnJlZV9leHByIChuYW1lLT5leHByKTsKLSAgICAgIGlmIChmcmVl X2FsaWduKQorICAgICAgaWYgKGZyZWVfYWxpZ25fYWxsb2NhdG9yKQogCWdmY19mcmVlX2V4 cHIgKG5hbWUtPnUuYWxpZ24pOwogICAgICAgaWYgKGZyZWVfbnMpCiAJZ2ZjX2ZyZWVfbmFt ZXNwYWNlIChuYW1lLT51Mi5ucyk7CisgICAgICBlbHNlIGlmIChmcmVlX2FsaWduX2FsbG9j YXRvcikKKwlnZmNfZnJlZV9leHByIChuYW1lLT51Mi5hbGxvY2F0b3IpOwogICAgICAgZWxz ZSBpZiAobmFtZS0+dTIudWRyKQogCXsKIAkgIGlmIChuYW1lLT51Mi51ZHItPmNvbWJpbmVy KQpkaWZmIC0tZ2l0IGEvZ2NjL2ZvcnRyYW4vbWF0Y2guaCBiL2djYy9mb3J0cmFuL21hdGNo LmgKaW5kZXggMmE4MDU4MTVkOWMuLjQ4ODk1OGI0MzljIDEwMDY0NAotLS0gYS9nY2MvZm9y dHJhbi9tYXRjaC5oCisrKyBiL2djYy9mb3J0cmFuL21hdGNoLmgKQEAgLTE0OSw2ICsxNDks OCBAQCBtYXRjaCBnZmNfbWF0Y2hfb2FjY19yb3V0aW5lICh2b2lkKTsKIAogLyogT3Blbk1Q IGRpcmVjdGl2ZSBtYXRjaGVycy4gICovCiBtYXRjaCBnZmNfbWF0Y2hfb21wX2Vvc19lcnJv ciAodm9pZCk7CittYXRjaCBnZmNfbWF0Y2hfb21wX2FsbG9jYXRlICh2b2lkKTsKK21hdGNo IGdmY19tYXRjaF9vbXBfYWxsb2NhdG9ycyAodm9pZCk7CiBtYXRjaCBnZmNfbWF0Y2hfb21w X2Fzc3VtZSAodm9pZCk7CiBtYXRjaCBnZmNfbWF0Y2hfb21wX2Fzc3VtZXMgKHZvaWQpOwog bWF0Y2ggZ2ZjX21hdGNoX29tcF9hdG9taWMgKHZvaWQpOwpkaWZmIC0tZ2l0IGEvZ2NjL2Zv cnRyYW4vb3Blbm1wLmNjIGIvZ2NjL2ZvcnRyYW4vb3Blbm1wLmNjCmluZGV4IGI3MWVlNDY3 YzAxLi4zOWYzZDk4Y2FmOCAxMDA2NDQKLS0tIGEvZ2NjL2ZvcnRyYW4vb3Blbm1wLmNjCisr KyBiL2djYy9mb3J0cmFuL29wZW5tcC5jYwpAQCAtNTQsOCArNTQsOCBAQCBzdHJ1Y3QgZ2Zj X29tcF9kaXJlY3RpdmUgewogICAgYW5kICJub3RoaW5nIi4gICovCiAKIHN0YXRpYyBjb25z dCBzdHJ1Y3QgZ2ZjX29tcF9kaXJlY3RpdmUgZ2ZjX29tcF9kaXJlY3RpdmVzW10gPSB7Ci0g IC8qIHsiYWxsb2NhdGUiLCBHRkNfT01QX0RJUl9ERUNMQVJBVElWRSwgU1RfT01QX0FMTE9D QVRFfSwgKi8KLSAgLyogeyJhbGxvY2F0b3JzIiwgR0ZDX09NUF9ESVJfRVhFQ1VUQUJMRSwg U1RfT01QX0FMTE9DQVRPUlN9LCAqLworICB7ImFsbG9jYXRlIiwgR0ZDX09NUF9ESVJfREVD TEFSQVRJVkUsIFNUX09NUF9BTExPQ0FURX0sCisgIHsiYWxsb2NhdG9ycyIsIEdGQ19PTVBf RElSX0VYRUNVVEFCTEUsIFNUX09NUF9BTExPQ0FUT1JTfSwKICAgeyJhc3N1bWVzIiwgR0ZD X09NUF9ESVJfSU5GT1JNQVRJT05BTCwgU1RfT01QX0FTU1VNRVN9LAogICB7ImFzc3VtZSIs IEdGQ19PTVBfRElSX0lORk9STUFUSU9OQUwsIFNUX09NUF9BU1NVTUV9LAogICB7ImF0b21p YyIsIEdGQ19PTVBfRElSX0VYRUNVVEFCTEUsIFNUX09NUF9BVE9NSUN9LApAQCAtMzk0LDcg KzM5NCw4IEBAIGdmY19tYXRjaF9vbXBfdmFyaWFibGVfbGlzdCAoY29uc3QgY2hhciAqc3Ry LCBnZmNfb21wX25hbWVsaXN0ICoqbGlzdCwKIAkJCSAgICAgZ2ZjX29tcF9uYW1lbGlzdCAq KipoZWFkcCA9IE5VTEwsCiAJCQkgICAgIGJvb2wgYWxsb3dfc2VjdGlvbnMgPSBmYWxzZSwK IAkJCSAgICAgYm9vbCBhbGxvd19kZXJpdmVkID0gZmFsc2UsCi0JCQkgICAgIGJvb2wgKmhh c19hbGxfbWVtb3J5ID0gTlVMTCkKKwkJCSAgICAgYm9vbCAqaGFzX2FsbF9tZW1vcnkgPSBO VUxMLAorCQkJICAgICBib29sIHJlamVjdF9jb21tb25fdmFycyA9IGZhbHNlKQogewogICBn ZmNfb21wX25hbWVsaXN0ICpoZWFkLCAqdGFpbCwgKnA7CiAgIGxvY3VzIG9sZF9sb2MsIGN1 cl9sb2M7CkBAIC00ODIsNiArNDgzLDE1IEBAIGdmY19tYXRjaF9vbXBfdmFyaWFibGVfbGlz dCAoY29uc3QgY2hhciAqc3RyLCBnZmNfb21wX25hbWVsaXN0ICoqbGlzdCwKIAkgIHRhaWwt PnN5bSA9IHN5bTsKIAkgIHRhaWwtPmV4cHIgPSBleHByOwogCSAgdGFpbC0+d2hlcmUgPSBj dXJfbG9jOworCSAgaWYgKHJlamVjdF9jb21tb25fdmFycyAmJiBzeW0tPmF0dHIuaW5fY29t bW9uKQorCSAgICB7CisJICAgICAgZ2NjX2Fzc2VydCAoYWxsb3dfY29tbW9uKTsKKwkgICAg ICBnZmNfZXJyb3IgKCIlcXMgYXQgJUwgaXMgcGFydCBvZiB0aGUgY29tbW9uIGJsb2NrICU8 LyVzLyU+IGFuZCAiCisJCQkgIm1heSBvbmx5IGJlIHNwZWNpZmljZWQgaW1wbGljaXRseSB2 aWEgdGhlIG5hbWVkICIKKwkJCSAiY29tbW9uIGJsb2NrIiwgc3ltLT5uYW1lLCAmY3VyX2xv YywKKwkJCSBzeW0tPmNvbW1vbl9oZWFkLT5uYW1lKTsKKwkgICAgICBnb3RvIGNsZWFudXA7 CisJICAgIH0KIAkgIGdvdG8gbmV4dF9pdGVtOwogCWNhc2UgTUFUQ0hfTk86CiAJICBicmVh azsKQEAgLTE4OTUsNyArMTkwNSw4IEBAIGdmY19tYXRjaF9vbXBfY2xhdXNlcyAoZ2ZjX29t cF9jbGF1c2VzICoqY3AsIGNvbnN0IG9tcF9tYXNrIG1hc2ssCiAKIAkgICAgICBmb3IgKGdm Y19vbXBfbmFtZWxpc3QgKm4gPSAqaGVhZDsgbjsgbiA9IG4tPm5leHQpCiAJCXsKLQkJICBu LT5leHByID0gKGFsbG9jYXRvcikgPyBnZmNfY29weV9leHByIChhbGxvY2F0b3IpIDogTlVM TDsKKwkJICBuLT51Mi5hbGxvY2F0b3IgPSAoKGFsbG9jYXRvcikKKwkJCQkgICAgID8gZ2Zj X2NvcHlfZXhwciAoYWxsb2NhdG9yKSA6IE5VTEwpOwogCQkgIG4tPnUuYWxpZ24gPSAoYWxp Z24pID8gZ2ZjX2NvcHlfZXhwciAoYWxpZ24pIDogTlVMTDsKIAkJfQogCSAgICAgIGdmY19m cmVlX2V4cHIgKGFsbG9jYXRvcik7CkBAIC00MjcwLDYgKzQyODEsOCBAQCBjbGVhbnVwOgog ICAob21wX21hc2sgKE9NUF9DTEFVU0VfQVQpIHwgT01QX0NMQVVTRV9NRVNTQUdFIHwgT01Q X0NMQVVTRV9TRVZFUklUWSkKICNkZWZpbmUgT01QX1dPUktTSEFSRV9DTEFVU0VTIFwKICAg b21wX21hc2sgKE9NUF9DTEFVU0VfTk9XQUlUKQorI2RlZmluZSBPTVBfQUxMT0NBVE9SU19D TEFVU0VTIFwKKyAgb21wX21hc2sgKE9NUF9DTEFVU0VfQUxMT0NBVEUpCiAKIAogc3RhdGlj IG1hdGNoCkBAIC00Mjg0LDYgKzQyOTcsMTEyIEBAIG1hdGNoX29tcCAoZ2ZjX2V4ZWNfb3Ag b3AsIGNvbnN0IG9tcF9tYXNrIG1hc2spCiAgIHJldHVybiBNQVRDSF9ZRVM7CiB9CiAKKy8q IEhhbmRsZXMgYm90aCBkZWNsYXJhdGl2ZSBhbmQgKGRlcHJlY2F0ZWQpIGV4ZWN1dGFibGUg QUxMT0NBVEUgZGlyZWN0aXZlOworICAgYWNjZXB0cyBvcHRpb25hbCBsaXN0IChmb3IgZXhl Y3V0YWJsZSkgYW5kIGNvbW1vbiBibG9ja3MuCisgICBObyBuYW1lbGlzdCBpcyBkZW5vdGVz IGJ5IGEgbmFtZWxpc3Qgd2l0aCBzeW0gPT0gTlVMTC4KKworICAgTm90ZSB0aGF0IHRoZSBl eGVjdXRhYmxlIEFMTE9DQVRFIGRpcmVjdGl2ZSBwZXJtaXRzIHN0cnVjdHVyZSBlbGVtZW50 cyBvbmx5CisgICBpbiBPcGVuTVAgNS4wIGFuZCA1LjEgYnV0IG5vdCBsb25nZXIgaW4gNS4y IChhbiBhY2NpZGVudGFsIGNoYW5nZSkuICBTZWUgYWxzbworICAgdGhlIGNvbW1lbnQgb24g dGhlICdvbXAgYWxsb2NhdG9ycycgZGlyZWN0aXZlIGJlbG93LgorCisgICBGSVhNRTogU3Ry dWN0dXJlIGVsZW1lbnRzIGFyZSByZWplY3RlZCBmb3Igbm93IHRvIG1ha2UgcmVzb2x2aW5n CisgICBPTVBfTElTVF9BTExPQ0FURSBzaW1wbGVyIChjaGVjayBmb3IgZHVwbGljYXRlcywg c2FtZSBzeW1ib2wgaW4gRm9ydHJhbgorICAgYWxsb2NhdGUgc3RtdCkgLSBkZXBlbmRpbmcg YWxzbyBvbiB0aGUgZGV2ZWxvcG1lbnQgb2YgdGhlIE9wZW5NUCBzcGVjLiAgKi8KKworbWF0 Y2gKK2dmY19tYXRjaF9vbXBfYWxsb2NhdGUgKHZvaWQpCit7CisgIG1hdGNoIG07CisgIGJv b2wgZmlyc3QgPSB0cnVlOworICBnZmNfb21wX25hbWVsaXN0ICp2YXJzID0gTlVMTDsKKyAg Z2ZjX2V4cHIgKmFsaWduID0gTlVMTDsKKyAgZ2ZjX2V4cHIgKmFsbG9jYXRvciA9IE5VTEw7 CisgIGxvY3VzIGxvYyA9IGdmY19jdXJyZW50X2xvY3VzOworCisgIG0gPSBnZmNfbWF0Y2hf b21wX3ZhcmlhYmxlX2xpc3QgKCIgKCIsICZ2YXJzLCB0cnVlLCBOVUxMLCBOVUxMLCB0cnVl LCB0cnVlLAorCQkJCSAgIE5VTEwsIHRydWUpOworCisgIGlmIChtID09IE1BVENIX0VSUk9S KQorICAgIHJldHVybiBtOworCisgIHdoaWxlICh0cnVlKQorICAgIHsKKyAgICAgIGdmY19n b2JibGVfd2hpdGVzcGFjZSAoKTsKKyAgICAgIGlmIChnZmNfbWF0Y2hfb21wX2VvcyAoKSA9 PSBNQVRDSF9ZRVMpCisJYnJlYWs7CisgICAgICBpZiAoIWZpcnN0KQorCWdmY19tYXRjaCAo IiwgIik7CisgICAgICBmaXJzdCA9IGZhbHNlOworICAgICAgaWYgKChtID0gZ2ZjX21hdGNo X2R1cGxfY2hlY2sgKCFhbGlnbiwgImFsaWduIiwgdHJ1ZSwgJmFsaWduKSkKKwkgICE9IE1B VENIX05PKQorCXsKKwkgIGlmIChtID09IE1BVENIX0VSUk9SKQorCSAgICBnb3RvIGVycm9y OworCSAgY29udGludWU7CisJfQorICAgICAgaWYgKChtID0gZ2ZjX21hdGNoX2R1cGxfY2hl Y2sgKCFhbGxvY2F0b3IsICJhbGxvY2F0b3IiLAorCQkJCSAgICAgdHJ1ZSwgJmFsbG9jYXRv cikpICE9IE1BVENIX05PKQorCXsKKwkgIGlmIChtID09IE1BVENIX0VSUk9SKQorCSAgICBn b3RvIGVycm9yOworCSAgY29udGludWU7CisJfQorICAgICAgZ2ZjX2Vycm9yICgiRXhwZWN0 ZWQgQUxJR04gb3IgQUxMT0NBVE9SIGNsYXVzZSBhdCAlQyIpOworICAgICAgcmV0dXJuIE1B VENIX0VSUk9SOworICAgIH0KKyAgZm9yIChnZmNfb21wX25hbWVsaXN0ICpuID0gdmFyczsg bjsgbiA9IG4tPm5leHQpCisgICAgaWYgKG4tPmV4cHIpCisgICAgICB7CisJaWYgKChuLT5l eHByLT5yZWYgJiYgbi0+ZXhwci0+cmVmLT50eXBlID09IFJFRl9DT01QT05FTlQpCisJICAg IHx8IChuLT5leHByLT5yZWYtPm5leHQgJiYgbi0+ZXhwci0+cmVmLT50eXBlID09IFJFRl9D T01QT05FTlQpKQorCSAgZ2ZjX2Vycm9yICgiU29ycnksIHN0cnVjdHVyZS1lbGVtZW50IGxp c3QgaXRlbSBhdCAlTCBpbiBBTExPQ0FURSAiCisJCSAgICAgImRpcmVjdGl2ZSBpcyBub3Qg eWV0IHN1cHBvcnRlZCIsICZuLT5leHByLT53aGVyZSk7CisJZWxzZQorCSAgZ2ZjX2Vycm9y ICgiVW5leHBlY3RlZCBleHByZXNzaW9uIGFzIGxpc3QgaXRlbSBhdCAlTCBpbiBBTExPQ0FU RSAiCisJCSAgICAgImRpcmVjdGl2ZSIsICZuLT5leHByLT53aGVyZSk7CisKKwlnZmNfZnJl ZV9vbXBfbmFtZWxpc3QgKHZhcnMsIGZhbHNlLCB0cnVlKTsKKwlnb3RvIGVycm9yOworICAg ICAgfQorCisgIG5ld19zdC5vcCA9IEVYRUNfT01QX0FMTE9DQVRFOworICBuZXdfc3QuZXh0 Lm9tcF9jbGF1c2VzID0gZ2ZjX2dldF9vbXBfY2xhdXNlcyAoKTsKKyAgaWYgKHZhcnMgPT0g TlVMTCkKKyAgICB7CisgICAgICB2YXJzID0gZ2ZjX2dldF9vbXBfbmFtZWxpc3QgKCk7Cisg ICAgICB2YXJzLT53aGVyZSA9IGxvYzsKKyAgICAgIHZhcnMtPnUuYWxpZ24gPSBhbGlnbjsK KyAgICAgIHZhcnMtPnUyLmFsbG9jYXRvciA9IGFsbG9jYXRvcjsKKyAgICAgIG5ld19zdC5l eHQub21wX2NsYXVzZXMtPmxpc3RzW09NUF9MSVNUX0FMTE9DQVRFXSA9IHZhcnM7CisgICAg fQorICBlbHNlCisgICAgeworICAgICAgbmV3X3N0LmV4dC5vbXBfY2xhdXNlcy0+bGlzdHNb T01QX0xJU1RfQUxMT0NBVEVdID0gdmFyczsKKyAgICAgIGZvciAoOyB2YXJzOyB2YXJzID0g dmFycy0+bmV4dCkKKwl7CisJICB2YXJzLT51LmFsaWduID0gKGFsaWduKSA/IGdmY19jb3B5 X2V4cHIgKGFsaWduKSA6IE5VTEw7CisJICB2YXJzLT51Mi5hbGxvY2F0b3IgPSAoKGFsbG9j YXRvcikgPyBnZmNfY29weV9leHByIChhbGxvY2F0b3IpIDogTlVMTCk7CisJfQorICAgICAg Z2ZjX2ZyZWVfZXhwciAoYWxsb2NhdG9yKTsKKyAgICAgIGdmY19mcmVlX2V4cHIgKGFsaWdu KTsKKyAgICB9CisgIHJldHVybiBNQVRDSF9ZRVM7CisKK2Vycm9yOgorICBnZmNfZnJlZV9l eHByIChhbGlnbik7CisgIGdmY19mcmVlX2V4cHIgKGFsbG9jYXRvcik7CisgIHJldHVybiBN QVRDSF9FUlJPUjsKK30KKworLyogTm90ZSB0aGF0IHN0cnVjdHVyZSBjb21wb25lbnRzIGFy ZSBub3QgcGVybWl0dGVkOyBidXQgc2VlIG5vdGUgYWJvdmUgZm9yIHRoZQorICAgJ29tcCBh bGxvY2F0ZScgZGlyZWN0aXZlIGFib3ZlLiAgKi8KKworbWF0Y2gKK2dmY19tYXRjaF9vbXBf YWxsb2NhdG9ycyAodm9pZCkKK3sKKyAgcmV0dXJuIG1hdGNoX29tcCAoRVhFQ19PTVBfQUxM T0NBVE9SUywgT01QX0FMTE9DQVRPUlNfQ0xBVVNFUyk7Cit9CisKIAogbWF0Y2gKIGdmY19t YXRjaF9vbXBfYXNzdW1lICh2b2lkKQpAQCAtNjkwMyw2ICs3MDIyLDEyOCBAQCByZXNvbHZl X29tcF91ZHJfY2xhdXNlIChnZmNfb21wX25hbWVsaXN0ICpuLCBnZmNfbmFtZXNwYWNlICpu cywKICAgcmV0dXJuIGNvcHk7CiB9CiAKKy8qIEFzc3VtZSB0aGF0IGEgY29uc3RhbnQgZXhw cmVzc2lvbiBpbiB0aGUgcmFuZ2UgMSAob21wX2RlZmF1bHRfbWVtX2FsbG9jKQorICAgdG8g OCAob21wX3RocmVhZF9tZW1fYWxsb2MpIHJhbmdlIGlzIGZpbmUuICBUaGUgb3JpZ2luYWwg c3ltYm9sIG5hbWUgaXMKKyAgIGFscmVhZHkgbG9zdCBkdXJpbmcgbWF0Y2hpbmcgdmlhIGdm Y19tYXRjaF9leHByLiAgKi8KK2Jvb2wKK2lzX3ByZWRlZmluZWRfYWxsb2NhdG9yIChnZmNf ZXhwciAqZXhwcikKK3sKKyAgcmV0dXJuIChnZmNfcmVzb2x2ZV9leHByIChleHByKQorCSAg JiYgZXhwci0+cmFuayA9PSAwCisJICAmJiBleHByLT50cy50eXBlID09IEJUX0lOVEVHRVIK KwkgICYmIGV4cHItPnRzLmtpbmQgPT0gZ2ZjX2NfaW50cHRyX2tpbmQKKwkgICYmIGV4cHIt PmV4cHJfdHlwZSA9PSBFWFBSX0NPTlNUQU5UCisJICAmJiBtcHpfc2duIChleHByLT52YWx1 ZS5pbnRlZ2VyKSA+IDAKKwkgICYmIG1wel9jbXBfc2kgKGV4cHItPnZhbHVlLmludGVnZXIs IDgpIDw9IDApOworfQorCisvKiBSZXNvbHZlIGRlY2xhcmF0aXZlIEFMTE9DQVRFIHN0YXRl bWVudC4gTm90ZTogQ29tbW9uIGJsb2NrIHZhcnMgb25seSBhcHBlYXIKKyAgIGFzIC9ibG9j ay8gbm90IGluZGl2aWR1YWwsIHdoaWNoIGlzIGVuc3VyZWQgZHVyaW5nIG1hcHBpbmcuICAq LworCit2b2lkCitnZmNfcmVzb2x2ZV9vbXBfYWxsb2NhdGUgKGdmY19uYW1lc3BhY2UgKm5z LCBnZmNfb21wX25hbWVsaXN0ICpsaXN0KQoreworICBmb3IgKGdmY19vbXBfbmFtZWxpc3Qg Km4gPSBsaXN0OyBuOyBuID0gbi0+bmV4dCkKKyAgICBuLT5zeW0tPm1hcmsgPSAwOworICBm b3IgKGdmY19vbXBfbmFtZWxpc3QgKm4gPSBsaXN0OyBuOyBuID0gbi0+bmV4dCkKKyAgICB7 CisgICAgICBpZiAobi0+c3ltLT5hdHRyLmZsYXZvciAhPSBGTF9WQVJJQUJMRSkKKwl7CisJ ICBnZmNfZXJyb3IgKCJBcmd1bWVudCAlcXMgYXQgJUwgdG8gZGVjbGFyYXRpdmUgISRPTVAg QUxMT0NBVEUgIgorCQkgICAgICJkaXJlY3RpdmUgbXVzdCBiZSBhIHZhcmlhYmxlIiwgbi0+ c3ltLT5uYW1lLAorCQkgICAgICZuLT53aGVyZSk7CisJICBjb250aW51ZTsKKwl9CisgICAg ICBpZiAobnMgIT0gbi0+c3ltLT5ucyB8fCBuLT5zeW0tPmF0dHIudXNlX2Fzc29jCisJICB8 fCBuLT5zeW0tPmF0dHIuaG9zdF9hc3NvYyB8fCBuLT5zeW0tPmF0dHIuaW1wb3J0ZWQpCisJ eworCSAgZ2ZjX2Vycm9yICgiQXJndW1lbnQgJXFzIGF0ICVMIHRvIGRlY2xhcmF0aXZlICEk T01QIEFMTE9DQVRFIHNoYWxsIGJlIgorCQkgICAgICIgaW4gdGhlIHNhbWUgc2NvcGUgYXMg dGhlIHZhcmlhYmxlIGRlY2xhcmF0aW9uIiwKKwkJICAgICBuLT5zeW0tPm5hbWUsICZuLT53 aGVyZSk7CisJICBjb250aW51ZTsKKwl9CisgICAgICBpZiAobi0+c3ltLT5hdHRyLmR1bW15 KQorCXsKKwkgIGdmY19lcnJvciAoIlVuZXhwZWN0ZWQgZHVtbXkgYXJndW1lbnQgJXFzIGFz IGFyZ3VtZW50IGF0ICVMIHRvICIKKwkJICAgICAiZGVjbGFyYXRpdmUgISRPTVAgQUxMT0NB VEUiLCBuLT5zeW0tPm5hbWUsICZuLT53aGVyZSk7CisJICBjb250aW51ZTsKKwl9CisgICAg ICBpZiAobi0+c3ltLT5tYXJrKQorCXsKKwkgIGlmIChuLT5zeW0tPmF0dHIuaW5fY29tbW9u KQorCSAgICB7CisJICAgICAgZ2ZjX2Vycm9yICgiRHVwbGljYXRlZCBjb21tb24gYmxvY2sg JTwvJXMvJT4gaW4gISRPTVAgQUxMT0NBVEUgIgorCQkJICJhdCAlTCIsIG4tPnN5bS0+Y29t bW9uX2hlYWQtPm5hbWUsICZuLT53aGVyZSk7CisJICAgICAgd2hpbGUgKG4tPm5leHQgJiYg bi0+bmV4dC0+c3ltCisJCSAgICAgJiYgbi0+c3ltLT5jb21tb25faGVhZCA9PSBuLT5uZXh0 LT5zeW0tPmNvbW1vbl9oZWFkKQorCQluID0gbi0+bmV4dDsKKwkgICAgfQorCSAgZWxzZQor CSAgICBnZmNfZXJyb3IgKCJEdXBsaWNhdGVkIHZhcmlhYmxlICVxcyBpbiAhJE9NUCBBTExP Q0FURSBhdCAlTCIsCisJCSAgICAgICBuLT5zeW0tPm5hbWUsICZuLT53aGVyZSk7CisJICBj b250aW51ZTsKKwl9CisgICAgICBuLT5zeW0tPm1hcmsgPSAxOworICAgICAgaWYgKChuLT5z eW0tPnRzLnR5cGUgPT0gQlRfQ0xBU1MgJiYgbi0+c3ltLT5hdHRyLmNsYXNzX29rCisJICAg JiYgQ0xBU1NfREFUQSAobi0+c3ltKS0+YXR0ci5hbGxvY2F0YWJsZSkKKwkgIHx8IChuLT5z eW0tPnRzLnR5cGUgIT0gQlRfQ0xBU1MgJiYgbi0+c3ltLT5hdHRyLmFsbG9jYXRhYmxlKSkK KwlnZmNfZXJyb3IgKCJVbmV4cGVjdGVkIGFsbG9jYXRhYmxlIHZhcmlhYmxlICVxcyBhdCAl TCBpbiBkZWNsYXJhdGl2ZSAiCisJCSAgICIhJE9NUCBBTExPQ0FURSBkaXJlY3RpdmUiLCBu LT5zeW0tPm5hbWUsICZuLT53aGVyZSk7CisgICAgICBlbHNlIGlmICgobi0+c3ltLT50cy50 eXBlID09IEJUX0NMQVNTICYmIG4tPnN5bS0+YXR0ci5jbGFzc19vaworCQkmJiBDTEFTU19E QVRBIChuLT5zeW0pLT5hdHRyLmNsYXNzX3BvaW50ZXIpCisJICAgICAgIHx8IChuLT5zeW0t PnRzLnR5cGUgIT0gQlRfQ0xBU1MgJiYgbi0+c3ltLT5hdHRyLnBvaW50ZXIpKQorCWdmY19l cnJvciAoIlVuZXhwZWN0ZWQgcG9pbnRlciB2YXJpYWJsZSAlcXMgYXQgJUwgaW4gZGVjbGFy YXRpdmUgIgorCQkgICAiISRPTVAgQUxMT0NBVEUgZGlyZWN0aXZlIiwgbi0+c3ltLT5uYW1l LCAmbi0+d2hlcmUpOworICAgICAgSE9TVF9XSURFX0lOVCBhbGlnbm1lbnQgPSAwOworICAg ICAgaWYgKG4tPnUuYWxpZ24KKwkgICYmICghZ2ZjX3Jlc29sdmVfZXhwciAobi0+dS5hbGln bikKKwkgICAgICB8fCBuLT51LmFsaWduLT50cy50eXBlICE9IEJUX0lOVEVHRVIKKwkgICAg ICB8fCBuLT51LmFsaWduLT5yYW5rICE9IDAKKwkgICAgICB8fCBuLT51LmFsaWduLT5leHBy X3R5cGUgIT0gRVhQUl9DT05TVEFOVAorCSAgICAgIHx8IGdmY19leHRyYWN0X2h3aSAobi0+ dS5hbGlnbiwgJmFsaWdubWVudCkKKwkgICAgICB8fCAhcG93MnBfaHdpIChhbGlnbm1lbnQp KSkKKwl7CisJICBnZmNfZXJyb3IgKCJBTElHTiByZXF1aXJlcyBhIHNjYWxhciBwb3NpdGl2 ZSBjb25zdGFudCBpbnRlZ2VyICIKKwkJICAgICAiYWxpZ25tZW50IGV4cHJlc3Npb24gYXQg JUwgdGhhdCBpcyBhIHBvd2VyIG9mIHR3byIsCisJCSAgICAgJm4tPnUuYWxpZ24tPndoZXJl KTsKKwkgIHdoaWxlIChuLT5zeW0tPmF0dHIuaW5fY29tbW9uICYmIG4tPm5leHQgJiYgbi0+ bmV4dC0+c3ltCisJCSAmJiBuLT5zeW0tPmNvbW1vbl9oZWFkID09IG4tPm5leHQtPnN5bS0+ Y29tbW9uX2hlYWQpCisJICAgIG4gPSBuLT5uZXh0OworCSAgY29udGludWU7CisJfQorICAg ICAgaWYgKG4tPnN5bS0+YXR0ci5pbl9jb21tb24gfHwgbi0+c3ltLT5hdHRyLnNhdmUgfHwg bi0+c3ltLT5ucy0+c2F2ZV9hbGwKKwkgIHx8IChuLT5zeW0tPm5zLT5wcm9jX25hbWUKKwkg ICAgICAmJiAobi0+c3ltLT5ucy0+cHJvY19uYW1lLT5hdHRyLmZsYXZvciA9PSBGTF9QUk9H UkFNCisJCSAgfHwgbi0+c3ltLT5ucy0+cHJvY19uYW1lLT5hdHRyLmZsYXZvciA9PSBGTF9N T0RVTEUpKSkKKwl7CisJICBib29sIGNvbSA9IG4tPnN5bS0+YXR0ci5pbl9jb21tb247CisJ ICBpZiAoIW4tPnUyLmFsbG9jYXRvcikKKwkgICAgZ2ZjX2Vycm9yICgiQW4gQUxMT0NBVE9S IGNsYXVzZSBpcyByZXF1aXJlZCBhcyB0aGUgbGlzdCBpdGVtICIKKwkJICAgICAgICIlPCVz JXMlcyU+IGF0ICVMIGhhcyB0aGUgU0FWRSBhdHRyaWJ1dGUiLCBjb20gPyAiLyIgOiAiIiwK KwkJICAgICAgIGNvbSA/IG4tPnN5bS0+Y29tbW9uX2hlYWQtPm5hbWUgOiBuLT5zeW0tPm5h bWUsCisJCSAgICAgICBjb20gPyAiLyIgOiAiIiwgJm4tPndoZXJlKTsKKwkgIGVsc2UgaWYg KCFpc19wcmVkZWZpbmVkX2FsbG9jYXRvciAobi0+dTIuYWxsb2NhdG9yKSkKKwkgICAgZ2Zj X2Vycm9yICgiUHJlZGVmaW5lZCBhbGxvY2F0b3IgcmVxdWlyZWQgaW4gQUxMT0NBVE9SIGNs YXVzZSBhdCAlTCIKKwkJICAgICAgICIgYXMgdGhlIGxpc3QgaXRlbSAlPCVzJXMlcyU+IGF0 ICVMIGhhcyB0aGUgU0FWRSBhdHRyaWJ1dGUiLAorCQkgICAgICAgJm4tPnUyLmFsbG9jYXRv ci0+d2hlcmUsIGNvbSA/ICIvIiA6ICIiLAorCQkgICAgICAgY29tID8gbi0+c3ltLT5jb21t b25faGVhZC0+bmFtZSA6IG4tPnN5bS0+bmFtZSwKKwkJICAgICAgIGNvbSA/ICIvIiA6ICIi LCAmbi0+d2hlcmUpOworCSAgd2hpbGUgKG4tPnN5bS0+YXR0ci5pbl9jb21tb24gJiYgbi0+ bmV4dCAmJiBuLT5uZXh0LT5zeW0KKwkJICYmIG4tPnN5bS0+Y29tbW9uX2hlYWQgPT0gbi0+ bmV4dC0+c3ltLT5jb21tb25faGVhZCkKKwkgICAgbiA9IG4tPm5leHQ7CisJfQorICAgICAg ZWxzZSBpZiAobi0+dTIuYWxsb2NhdG9yCisJICAmJiAoIWdmY19yZXNvbHZlX2V4cHIgKG4t PnUyLmFsbG9jYXRvcikKKwkgICAgICB8fCBuLT51Mi5hbGxvY2F0b3ItPnRzLnR5cGUgIT0g QlRfSU5URUdFUgorCSAgICAgIHx8IG4tPnUyLmFsbG9jYXRvci0+cmFuayAhPSAwCisJICAg ICAgfHwgbi0+dTIuYWxsb2NhdG9yLT50cy5raW5kICE9IGdmY19jX2ludHB0cl9raW5kKSkK KwlnZmNfZXJyb3IgKCJFeHBlY3RlZCBpbnRlZ2VyIGV4cHJlc3Npb24gb2YgdGhlICIKKwkJ ICAgIiU8b21wX2FsbG9jYXRvcl9oYW5kbGVfa2luZCU+IGtpbmQgYXQgJUwiLAorCQkgICAm bi0+dTIuYWxsb2NhdG9yLT53aGVyZSk7CisgICAgfQorICBnZmNfZXJyb3IgKCJTb3JyeSwg ZGVjbGFyYXRpdmUgISRPTVAgQUxMT0NBVEUgYXQgJUwgbm90IHlldCBzdXBwb3J0ZWQiLAor CSAgICAgJmxpc3QtPndoZXJlKTsKK30KIAogLyogUmVzb2x2ZSBBU1NVTUUncyBhbmQgQVNT VU1FUycgYXNzdW1wdGlvbiBjbGF1c2VzLiAgTm90ZSB0aGF0IGFic2VudC9jb250YWlucwog ICAgaXMgaGFuZGxlZCBkdXJpbmcgcGFyc2UgdGltZSBpbiBvbXBfdmVyaWZ5X21lcmdlX2Fi c2VudF9jb250YWlucy4gICAqLwpAQCAtNzM3NCwyNSArNzYxNSwyOCBAQCByZXNvbHZlX29t cF9jbGF1c2VzIChnZmNfY29kZSAqY29kZSwgZ2ZjX29tcF9jbGF1c2VzICpvbXBfY2xhdXNl cywKICAgICB7CiAgICAgICBmb3IgKG4gPSBvbXBfY2xhdXNlcy0+bGlzdHNbT01QX0xJU1Rf QUxMT0NBVEVdOyBuOyBuID0gbi0+bmV4dCkKIAl7Ci0JICBpZiAobi0+ZXhwciAmJiAoIWdm Y19yZXNvbHZlX2V4cHIgKG4tPmV4cHIpCi0JCQkgIHx8IG4tPmV4cHItPnRzLnR5cGUgIT0g QlRfSU5URUdFUgotCQkJICB8fCBuLT5leHByLT50cy5raW5kICE9IGdmY19jX2ludHB0cl9r aW5kKSkKKwkgIGlmIChuLT51Mi5hbGxvY2F0b3IKKwkgICAgICAmJiAoIWdmY19yZXNvbHZl X2V4cHIgKG4tPnUyLmFsbG9jYXRvcikKKwkJICB8fCBuLT51Mi5hbGxvY2F0b3ItPnRzLnR5 cGUgIT0gQlRfSU5URUdFUgorCQkgIHx8IG4tPnUyLmFsbG9jYXRvci0+cmFuayAhPSAwCisJ CSAgfHwgbi0+dTIuYWxsb2NhdG9yLT50cy5raW5kICE9IGdmY19jX2ludHB0cl9raW5kKSkK IAkgICAgewogCSAgICAgIGdmY19lcnJvciAoIkV4cGVjdGVkIGludGVnZXIgZXhwcmVzc2lv biBvZiB0aGUgIgogCQkJICIlPG9tcF9hbGxvY2F0b3JfaGFuZGxlX2tpbmQlPiBraW5kIGF0 ICVMIiwKLQkJCSAmbi0+ZXhwci0+d2hlcmUpOworCQkJICZuLT51Mi5hbGxvY2F0b3ItPndo ZXJlKTsKIAkgICAgICBicmVhazsKIAkgICAgfQogCSAgaWYgKCFuLT51LmFsaWduKQogCSAg ICBjb250aW51ZTsKLQkgIGludCBhbGlnbm1lbnQgPSAwOworCSAgSE9TVF9XSURFX0lOVCBh bGlnbm1lbnQgPSAwOwogCSAgaWYgKCFnZmNfcmVzb2x2ZV9leHByIChuLT51LmFsaWduKQog CSAgICAgIHx8IG4tPnUuYWxpZ24tPnRzLnR5cGUgIT0gQlRfSU5URUdFUgogCSAgICAgIHx8 IG4tPnUuYWxpZ24tPnJhbmsgIT0gMAotCSAgICAgIHx8IGdmY19leHRyYWN0X2ludCAobi0+ dS5hbGlnbiwgJmFsaWdubWVudCkKKwkgICAgICB8fCBuLT51LmFsaWduLT5leHByX3R5cGUg IT0gRVhQUl9DT05TVEFOVAorCSAgICAgIHx8IGdmY19leHRyYWN0X2h3aSAobi0+dS5hbGln biwgJmFsaWdubWVudCkKIAkgICAgICB8fCBhbGlnbm1lbnQgPD0gMCkKIAkgICAgewotCSAg ICAgIGdmY19lcnJvciAoIkFMSUdOIG1vZGlmaWVyIHJlcXVpcmVzIGEgc2NhbGFyIHBvc2l0 aXZlICIKKwkgICAgICBnZmNfZXJyb3IgKCJBTElHTiByZXF1aXJlcyBhIHNjYWxhciBwb3Np dGl2ZSAiCiAJCQkgImNvbnN0YW50IGludGVnZXIgYWxpZ25tZW50IGV4cHJlc3Npb24gYXQg JUwiLAogCQkJICZuLT51LmFsaWduLT53aGVyZSk7CiAJICAgICAgYnJlYWs7CkBAIC03NDA0 LDE1ICs3NjQ4LDIxIEBAIHJlc29sdmVfb21wX2NsYXVzZXMgKGdmY19jb2RlICpjb2RlLCBn ZmNfb21wX2NsYXVzZXMgKm9tcF9jbGF1c2VzLAogCSAyLiAgVmFyaWFibGUgaW4gYWxsb2Nh dGUgY2xhdXNlIGFyZSBhbHNvIHByZXNlbnQgaW4gc29tZQogCSAgICAgcHJpdmF0aXphdGlv biBjbGFzZSAobm9uLWNvbXBvc2l0ZSBjYXNlKS4gICovCiAgICAgICBmb3IgKG4gPSBvbXBf Y2xhdXNlcy0+bGlzdHNbT01QX0xJU1RfQUxMT0NBVEVdOyBuOyBuID0gbi0+bmV4dCkKLQlu LT5zeW0tPm1hcmsgPSAwOworCWlmIChuLT5zeW0pCisJICBuLT5zeW0tPm1hcmsgPSAwOwog CiAgICAgICBnZmNfb21wX25hbWVsaXN0ICpwcmV2ID0gTlVMTDsKLSAgICAgIGZvciAobiA9 IG9tcF9jbGF1c2VzLT5saXN0c1tPTVBfTElTVF9BTExPQ0FURV07IG47KQorICAgICAgZm9y IChuID0gb21wX2NsYXVzZXMtPmxpc3RzW09NUF9MSVNUX0FMTE9DQVRFXTsgbjsgKQogCXsK KwkgIGlmIChuLT5zeW0gPT0gTlVMTCkKKwkgICAgeworCSAgICAgIG4gPSBuLT5uZXh0Owor CSAgICAgIGNvbnRpbnVlOworCSAgICB9CiAJICBpZiAobi0+c3ltLT5tYXJrID09IDEpCiAJ ICAgIHsKIAkgICAgICBnZmNfd2FybmluZyAoMCwgIiVxcyBhcHBlYXJzIG1vcmUgdGhhbiBv bmNlIGluICU8YWxsb2NhdGUlPiAiCi0JCQkgICAiY2xhdXNlcyBhdCAlTCIgLCBuLT5zeW0t Pm5hbWUsICZuLT53aGVyZSk7CisJCQkgICAiYXQgJUwiICwgbi0+c3ltLT5uYW1lLCAmbi0+ d2hlcmUpOwogCSAgICAgIC8qIFdlIGhhdmUgYWxyZWFkeSBzZWVuIHRoaXMgdmFyaWFibGUg c28gaXQgaXMgYSBkdXBsaWNhdGUuCiAJCSBSZW1vdmUgaXQuICAqLwogCSAgICAgIGlmIChw cmV2ICE9IE5VTEwgJiYgcHJldi0+bmV4dCA9PSBuKQpAQCAtNzQ1Nyw2ICs3NzA3LDI4IEBA IHJlc29sdmVfb21wX2NsYXVzZXMgKGdmY19jb2RlICpjb2RlLCBnZmNfb21wX2NsYXVzZXMg Km9tcF9jbGF1c2VzLAogCQkJICJpbiBhbiBleHBsaWNpdCBwcml2YXRpemF0aW9uIGNsYXVz ZSIsCiAJCQkgbi0+c3ltLT5uYW1lLCAmbi0+d2hlcmUpOwogCX0KKyAgICAgIGlmIChjb2Rl CisJICAmJiAoY29kZS0+b3AgPT0gRVhFQ19PTVBfQUxMT0NBVE9SUyB8fCBjb2RlLT5vcCA9 PSBFWEVDX09NUF9BTExPQ0FURSkKKwkgICYmIGNvZGUtPmJsb2NrCisJICAmJiBjb2RlLT5i bG9jay0+bmV4dAorCSAgJiYgY29kZS0+YmxvY2stPm5leHQtPm9wID09IEVYRUNfQUxMT0NB VEUpCisJeworCSAgZ2ZjX2FsbG9jICphOworCSAgZm9yIChuID0gb21wX2NsYXVzZXMtPmxp c3RzW09NUF9MSVNUX0FMTE9DQVRFXTsgbjsgbiA9IG4tPm5leHQpCisJICAgIHsKKwkgICAg ICBpZiAobi0+c3ltID09IE5VTEwpCisJCWNvbnRpbnVlOworCSAgICAgIGZvciAoYSA9IGNv ZGUtPmJsb2NrLT5uZXh0LT5leHQuYWxsb2MubGlzdDsgYTsgYSA9IGEtPm5leHQpCisJCWlm IChhLT5leHByLT5leHByX3R5cGUgPT0gRVhQUl9WQVJJQUJMRQorCQkgICAgJiYgYS0+ZXhw ci0+c3ltdHJlZS0+bi5zeW0gPT0gbi0+c3ltKQorCQkgIGJyZWFrOworCSAgICAgIGlmIChh ID09IE5VTEwpCisJCWdmY19lcnJvciAoIiVxcyBzcGVjaWZpZWQgaW4gJTxhbGxvY2F0ZSU+ IGF0ICVMIGJ1dCBub3QgIgorCQkJICAgImluIHRoZSBhc3NvY2lhdGVkIEFMTE9DQVRFIHN0 YXRlbWVudCIsCisJCQkgICBuLT5zeW0tPm5hbWUsICZuLT53aGVyZSk7CisJICAgIH0KKwl9 CisKICAgICB9CiAKICAgLyogT3BlbkFDQyByZWR1Y3Rpb25zLiAgKi8KQEAgLTc1NjAsMTUg Kzc4MzIsMTMgQEAgcmVzb2x2ZV9vbXBfY2xhdXNlcyAoZ2ZjX2NvZGUgKmNvZGUsIGdmY19v bXBfY2xhdXNlcyAqb21wX2NsYXVzZXMsCiAJCQkgICAgIG4tPnN5bS0+bmFtZSwgJm4tPndo ZXJlKTsKIAkJZWxzZSBpZiAobi0+ZXhwcikKIAkJICB7Ci0JCSAgICBnZmNfZXhwciAqZXhw ciA9IG4tPmV4cHI7Ci0JCSAgICBpbnQgYWxpZ25tZW50ID0gMDsKLQkJICAgIGlmICghZ2Zj X3Jlc29sdmVfZXhwciAoZXhwcikKLQkJCXx8IGV4cHItPnRzLnR5cGUgIT0gQlRfSU5URUdF UgotCQkJfHwgZXhwci0+cmFuayAhPSAwCi0JCQl8fCBnZmNfZXh0cmFjdF9pbnQgKGV4cHIs ICZhbGlnbm1lbnQpCi0JCQl8fCBhbGlnbm1lbnQgPD0gMCkKLQkJICAgICAgZ2ZjX2Vycm9y ICgiJXFzIGluIEFMSUdORUQgY2xhdXNlIGF0ICVMIHJlcXVpcmVzIGEgc2NhbGFyICIKLQkJ CQkgInBvc2l0aXZlIGNvbnN0YW50IGludGVnZXIgYWxpZ25tZW50ICIKKwkJICAgIGlmICgh Z2ZjX3Jlc29sdmVfZXhwciAobi0+ZXhwcikKKwkJCXx8IG4tPmV4cHItPnRzLnR5cGUgIT0g QlRfSU5URUdFUgorCQkJfHwgbi0+ZXhwci0+cmFuayAhPSAwCisJCQl8fCBuLT5leHByLT5l eHByX3R5cGUgIT0gRVhQUl9DT05TVEFOVAorCQkJfHwgbXB6X3NnbiAobi0+ZXhwci0+dmFs dWUuaW50ZWdlcikgPD0gMCkKKwkJICAgICAgZ2ZjX2Vycm9yICgiJXFzIGluIEFMSUdORUQg Y2xhdXNlIGF0ICVMIHJlcXVpcmVzIGEgc2NhbGFyIgorCQkJCSAiIHBvc2l0aXZlIGNvbnN0 YW50IGludGVnZXIgYWxpZ25tZW50ICIKIAkJCQkgImV4cHJlc3Npb24iLCBuLT5zeW0tPm5h bWUsICZuLT53aGVyZSk7CiAJCSAgfQogCSAgICAgIH0KQEAgLTc5MzIsNiArODIwMiwxMiBA QCByZXNvbHZlX29tcF9jbGF1c2VzIChnZmNfY29kZSAqY29kZSwgZ2ZjX29tcF9jbGF1c2Vz ICpvbXBfY2xhdXNlcywKIAkgIGRlZmF1bHQ6CiAJICAgIGZvciAoOyBuICE9IE5VTEw7IG4g PSBuLT5uZXh0KQogCSAgICAgIHsKKwkJaWYgKG4tPnN5bSA9PSBOVUxMKQorCQkgIHsKKwkJ ICAgIGdjY19hc3NlcnQgKGNvZGUtPm9wID09IEVYRUNfT01QX0FMTE9DQVRPUlMKKwkJCQl8 fCBjb2RlLT5vcCA9PSBFWEVDX09NUF9BTExPQ0FURSk7CisJCSAgICBjb250aW51ZTsKKwkJ ICB9CiAJCWJvb2wgYmFkID0gZmFsc2U7CiAJCWJvb2wgaXNfcmVkdWN0aW9uID0gKGxpc3Qg PT0gT01QX0xJU1RfUkVEVUNUSU9OCiAJCQkJICAgICB8fCBsaXN0ID09IE9NUF9MSVNUX1JF RFVDVElPTl9JTlNDQU4KQEAgLTk2MjYsNiArOTkwMiwxMCBAQCBvbXBfY29kZV90b19zdGF0 ZW1lbnQgKGdmY19jb2RlICpjb2RlKQogICAgICAgcmV0dXJuIFNUX09NUF9ETzsKICAgICBj YXNlIEVYRUNfT01QX0xPT1A6CiAgICAgICByZXR1cm4gU1RfT01QX0xPT1A7CisgICAgY2Fz ZSBFWEVDX09NUF9BTExPQ0FURToKKyAgICAgIHJldHVybiBTVF9PTVBfQUxMT0NBVEVfRVhF QzsKKyAgICBjYXNlIEVYRUNfT01QX0FMTE9DQVRPUlM6CisgICAgICByZXR1cm4gU1RfT01Q X0FMTE9DQVRPUlM7CiAgICAgY2FzZSBFWEVDX09NUF9BU1NVTUU6CiAgICAgICByZXR1cm4g U1RfT01QX0FTU1VNRTsKICAgICBjYXNlIEVYRUNfT01QX0FUT01JQzoKQEAgLTEwMTQ3LDYg KzEwNDI3LDggQEAgZ2ZjX3Jlc29sdmVfb21wX2RpcmVjdGl2ZSAoZ2ZjX2NvZGUgKmNvZGUs IGdmY19uYW1lc3BhY2UgKm5zKQogICAgIGNhc2UgRVhFQ19PTVBfVEVBTVNfTE9PUDoKICAg ICAgIHJlc29sdmVfb21wX2RvIChjb2RlKTsKICAgICAgIGJyZWFrOworICAgIGNhc2UgRVhF Q19PTVBfQUxMT0NBVEU6CisgICAgY2FzZSBFWEVDX09NUF9BTExPQ0FUT1JTOgogICAgIGNh c2UgRVhFQ19PTVBfQVNTVU1FOgogICAgIGNhc2UgRVhFQ19PTVBfQ0FOQ0VMOgogICAgIGNh c2UgRVhFQ19PTVBfRVJST1I6CmRpZmYgLS1naXQgYS9nY2MvZm9ydHJhbi9wYXJzZS5jYyBi L2djYy9mb3J0cmFuL3BhcnNlLmNjCmluZGV4IGJjMmIyMTg4ZWVhLi5mOGU0YzRiY2YyYiAx MDA2NDQKLS0tIGEvZ2NjL2ZvcnRyYW4vcGFyc2UuY2MKKysrIGIvZ2NjL2ZvcnRyYW4vcGFy c2UuY2MKQEAgLTM5LDYgKzM5LDcgQEAgc3RhdGljIGptcF9idWYgZW9mX2J1ZjsKIAogZ2Zj X3N0YXRlX2RhdGEgKmdmY19zdGF0ZV9zdGFjazsKIHN0YXRpYyBib29sIGxhc3Rfd2FzX3Vz ZV9zdG10ID0gZmFsc2U7Citib29sIGluX2V4ZWNfcGFydDsKIAogLyogVE9ETzogUmUtb3Jk ZXIgZnVuY3Rpb25zIHRvIGtpbGwgdGhlc2UgZm9yd2FyZCBkZWNscy4gICovCiBzdGF0aWMg dm9pZCBjaGVja19zdGF0ZW1lbnRfbGFiZWwgKGdmY19zdGF0ZW1lbnQpOwpAQCAtNzQ1LDYg Kzc0Niw4MiBAQCBkZWNvZGVfb2FjY19kaXJlY3RpdmUgKHZvaWQpCiAgIHJldHVybiBTVF9H RVRfRkNOX0NIQVJBQ1RFUklTVElDUzsKIH0KIAorLyogQ2hlY2tzIGZvciB0aGUgU1RfT01Q X0FMTE9DQVRFLiBGaXJzdCwgY2hlY2sgd2hldGhlciBhbGwgbGlzdCBpdGVtcworICAgYXJl IGFsbG9jYXRhYmxlcy9wb2ludGVycyAtIGFuZCBpZiBzbywgYXNzdW1lIGl0IGlzIGFzc29j aWF0ZWQgd2l0aCBhIEZvcnRyYW4KKyAgIEFMTE9DQVRFIHN0bXQuICBJZiBub3QsIGRvIHNv bWUgaW5pdGlhbCBwYXJzaW5nLXJlbGF0ZWQgY2hlY2tzIGFuZCBhcHBlbmQKKyAgIG5hbWVs aXN0IHRvIG5hbWVzcGFjZS4KKyAgIFRoZSBjaGVjayBmb2xsb3dzIE9wZW5NUCA1LjEgYnkg cmVxdWlyaW5nIGFuIGV4ZWN1dGFibGUgc3RtdCBvciBPcGVuTVAKKyAgIGNvbnN0cnVjdCBi ZWZvcmUgYSBkaXJlY3RpdmUgYXNzb2NpYXRlZCB3aXRoIGFuIGFsbG9jYXRlIHN0YXRlbWVu dAorICAgKC0+IFNUX09NUF9BTExPQ0FURV9FWEVDKTsgaW5zdGVhZCBvZiBzaG93aW5nIGFu IGVycm9yLCBjb252ZXJzaW9uIG9mCisgICBTVF9PTVBfQUxMT0NBVEUgLT4gU1RfT01QX0FM TE9DQVRFX0VYRUMgd291bGMgYmUgYW4gYWx0ZXJuYXRpdmUuICAqLworCitib29sCitjaGVj a19vbXBfYWxsb2NhdGVfc3RtdCAobG9jdXMgKmxvYykKK3sKKyAgZ2ZjX29tcF9uYW1lbGlz dCAqbjsKKworICBpZiAobmV3X3N0LmV4dC5vbXBfY2xhdXNlcy0+bGlzdHNbT01QX0xJU1Rf QUxMT0NBVEVdLT5zeW0gPT0gTlVMTCkKKyAgICB7CisgICAgICBnZmNfZXJyb3IgKCIlcXMg ZGlyZWN0aXZlIGF0ICVMIG11c3QgZWl0aGVyIGhhdmUgYSB2YXJpYWJsZSBhcmd1bWVudCBv ciwgIgorCQkgImlmIGFzc29jaWF0ZWQgd2l0aCBhbiBBTExPQ0FURSBzdG10LCBtdXN0IGJl IHByZWNlZGVkIGJ5IGFuICIKKwkJICJleGVjdXRhYmxlIHN0YXRlbWVudCBvciBPcGVuTVAg Y29uc3RydWN0IiwKKwkJIGdmY19hc2NpaV9zdGF0ZW1lbnQgKFNUX09NUF9BTExPQ0FURSks IGxvYyk7CisgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICBib29sIGhhc19hbGxvY2F0 YWJsZSA9IGZhbHNlOworICBib29sIGhhc19ub25fYWxsb2NhdGFibGUgPSBmYWxzZTsKKyAg Zm9yIChuID0gbmV3X3N0LmV4dC5vbXBfY2xhdXNlcy0+bGlzdHNbT01QX0xJU1RfQUxMT0NB VEVdOyBuOyBuID0gbi0+bmV4dCkKKyAgICB7CisgICAgICBpZiAobi0+ZXhwcikKKwl7CisJ ICBnZmNfZXJyb3IgKCJTdHJ1Y3R1cmUtY29tcG9uZW50IGV4cHJlc3Npb24gYXQgJUwgaW4g JXFzIGRpcmVjdGl2ZSBub3QiCisJCSAgICAgIiBwZXJtaXR0ZWQgaW4gZGVjbGFyYXRpdmUg ZGlyZWN0aXZlOyBhcyBkaXJlY3RpdmUgIgorCQkgICAgICJhc3NvY2lhdGVkIHdpdGggYW4g QUxMT0NBVEUgc3RtdCBpdCBtdXN0IGJlIHByZWNlZGVkIGJ5ICIKKwkJICAgICAiYW4gZXhl Y3V0YWJsZSBzdGF0ZW1lbnQgb3IgT3Blbk1QIGNvbnN0cnVjdCIsCisJCSAgICAgICZuLT5l eHByLT53aGVyZSwgZ2ZjX2FzY2lpX3N0YXRlbWVudCAoU1RfT01QX0FMTE9DQVRFKSk7CisJ ICByZXR1cm4gZmFsc2U7CisJfQorICAgICAgYm9vbCBhbGxvY19wdHI7CisgICAgICBpZiAo bi0+c3ltLT50cy50eXBlID09IEJUX0NMQVNTICYmIG4tPnN5bS0+YXR0ci5jbGFzc19vaykK KwlhbGxvY19wdHIgPSAoQ0xBU1NfREFUQSAobi0+c3ltKS0+YXR0ci5hbGxvY2F0YWJsZQor CQkgICAgIHx8IENMQVNTX0RBVEEgKG4tPnN5bSktPmF0dHIuY2xhc3NfcG9pbnRlcik7Cisg ICAgICBlbHNlCisJYWxsb2NfcHRyID0gKG4tPnN5bS0+YXR0ci5hbGxvY2F0YWJsZSB8fCBu LT5zeW0tPmF0dHIucG9pbnRlcgorCQkgICAgIHx8IG4tPnN5bS0+YXR0ci5wcm9jX3BvaW50 ZXIpOworICAgICAgaWYgKGFsbG9jX3B0cgorCSAgfHwgKG4tPnN5bS0+bnMgJiYgbi0+c3lt LT5ucy0+cHJvY19uYW1lCisJICAgICAgJiYgKG4tPnN5bS0+bnMtPnByb2NfbmFtZS0+YXR0 ci5hbGxvY2F0YWJsZQorCQkgIHx8IG4tPnN5bS0+bnMtPnByb2NfbmFtZS0+YXR0ci5wb2lu dGVyCisJCSAgfHwgbi0+c3ltLT5ucy0+cHJvY19uYW1lLT5hdHRyLnByb2NfcG9pbnRlcikp KQorCWhhc19hbGxvY2F0YWJsZSA9IHRydWU7CisgICAgICBlbHNlCisJaGFzX25vbl9hbGxv Y2F0YWJsZSA9IHRydWU7CisgICAgfQorICAvKiBBbGwgYWxsb2NhdGFibGVzIC0gYXNzdW1l IGl0IGlzIGFsbG9jYXRlZCB3aXRoIGFuIEFMTE9DQVRFIHN0bXQuICAqLworICBpZiAoaGFz X2FsbG9jYXRhYmxlICYmICFoYXNfbm9uX2FsbG9jYXRhYmxlKQorICAgIHsKKyAgICAgIGdm Y19lcnJvciAoIiVxcyBkaXJlY3RpdmUgYXQgJUwgYXNzb2NpYXRlZCB3aXRoIGFuIEFMTE9D QVRFIHN0bXQgbXVzdCBiZSAiCisJCSAicHJlY2VkZWQgYnkgYW4gZXhlY3V0YWJsZSBzdGF0 ZW1lbnQgb3IgT3Blbk1QIGNvbnN0cnVjdDsgIgorCQkgIm5vdGUgdGhlIHZhcmlhYmxlcyBp biB0aGUgbGlzdCBhbGwgaGF2ZSB0aGUgYWxsb2NhdGFibGUgb3IgIgorCQkgInBvaW50ZXIg YXR0cmlidXRlIiwgZ2ZjX2FzY2lpX3N0YXRlbWVudCAoU1RfT01QX0FMTE9DQVRFKSwKKwkJ IGxvYyk7CisgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICBpZiAoIWdmY19jdXJyZW50 X25zLT5vbXBfYWxsb2NhdGUpCisgICAgZ2ZjX2N1cnJlbnRfbnMtPm9tcF9hbGxvY2F0ZQor ICAgICAgPSBuZXdfc3QuZXh0Lm9tcF9jbGF1c2VzLT5saXN0c1tPTVBfTElTVF9BTExPQ0FU RV07CisgIGVsc2UKKyAgICB7CisgICAgICBmb3IgKG4gPSBnZmNfY3VycmVudF9ucy0+b21w X2FsbG9jYXRlOyBuLT5uZXh0OyBuID0gbi0+bmV4dCkKKwk7CisgICAgICBuLT5uZXh0ID0g bmV3X3N0LmV4dC5vbXBfY2xhdXNlcy0+bGlzdHNbT01QX0xJU1RfQUxMT0NBVEVdOworICAg IH0KKyAgbmV3X3N0LmV4dC5vbXBfY2xhdXNlcy0+bGlzdHNbT01QX0xJU1RfQUxMT0NBVEVd ID0gTlVMTDsKKyAgZ2ZjX2ZyZWVfb21wX2NsYXVzZXMgKG5ld19zdC5leHQub21wX2NsYXVz ZXMpOworICByZXR1cm4gdHJ1ZTsKK30KKworCiAvKiBMaWtlIG1hdGNoLCBidXQgc2V0IGEg ZmxhZyBzaW1kX21hdGNoZWQgaWYga2V5d29yZCBtYXRjaGVkCiAgICBhbmQgaWYgc3BlY19v bmx5LCBnb3RvIGRvX3NwZWNfb25seSB3aXRob3V0IGFjdHVhbGx5IG1hdGNoaW5nLiAgKi8K ICNkZWZpbmUgbWF0Y2hzKGtleXdvcmQsIHN1YnIsIHN0KQkJCQlcCkBAIC04ODUsNiArOTYy LDExIEBAIGRlY29kZV9vbXBfZGlyZWN0aXZlICh2b2lkKQogICBzd2l0Y2ggKGMpCiAgICAg ewogICAgIGNhc2UgJ2EnOgorICAgICAgaWYgKGluX2V4ZWNfcGFydCkKKwltYXRjaG8gKCJh bGxvY2F0ZSIsIGdmY19tYXRjaF9vbXBfYWxsb2NhdGUsIFNUX09NUF9BTExPQ0FURV9FWEVD KTsKKyAgICAgIGVsc2UKKwltYXRjaG8gKCJhbGxvY2F0ZSIsIGdmY19tYXRjaF9vbXBfYWxs b2NhdGUsIFNUX09NUF9BTExPQ0FURSk7CisgICAgICBtYXRjaG8gKCJhbGxvY2F0b3JzIiwg Z2ZjX21hdGNoX29tcF9hbGxvY2F0b3JzLCBTVF9PTVBfQUxMT0NBVE9SUyk7CiAgICAgICBt YXRjaG8gKCJhc3N1bWVzIiwgZ2ZjX21hdGNoX29tcF9hc3N1bWVzLCBTVF9PTVBfQVNTVU1F Uyk7CiAgICAgICBtYXRjaHMgKCJhc3N1bWUiLCBnZmNfbWF0Y2hfb21wX2Fzc3VtZSwgU1Rf T01QX0FTU1VNRSk7CiAgICAgICBtYXRjaG8gKCJhdG9taWMiLCBnZmNfbWF0Y2hfb21wX2F0 b21pYywgU1RfT01QX0FUT01JQyk7CkBAIC05MTUsNiArOTk3LDcgQEAgZGVjb2RlX29tcF9k aXJlY3RpdmUgKHZvaWQpCiAgICAgICBicmVhazsKICAgICBjYXNlICdlJzoKICAgICAgIG1h dGNobyAoImVycm9yIiwgZ2ZjX21hdGNoX29tcF9lcnJvciwgU1RfT01QX0VSUk9SKTsKKyAg ICAgIG1hdGNobyAoImVuZCBhbGxvY2F0b3JzIiwgZ2ZjX21hdGNoX29tcF9lb3NfZXJyb3Is IFNUX09NUF9FTkRfQUxMT0NBVE9SUyk7CiAgICAgICBtYXRjaHMgKCJlbmQgYXNzdW1lIiwg Z2ZjX21hdGNoX29tcF9lb3NfZXJyb3IsIFNUX09NUF9FTkRfQVNTVU1FKTsKICAgICAgIG1h dGNobyAoImVuZCBhdG9taWMiLCBnZmNfbWF0Y2hfb21wX2Vvc19lcnJvciwgU1RfT01QX0VO RF9BVE9NSUMpOwogICAgICAgbWF0Y2hvICgiZW5kIGNyaXRpY2FsIiwgZ2ZjX21hdGNoX29t cF9lbmRfY3JpdGljYWwsIFNUX09NUF9FTkRfQ1JJVElDQUwpOwpAQCAtMTE3MSw2ICsxMjU0 LDkgQEAgZGVjb2RlX29tcF9kaXJlY3RpdmUgKHZvaWQpCiAJICByZXR1cm4gU1RfTk9ORTsK IAl9CiAgICAgfQorICBpZiAocmV0ID09IFNUX09NUF9BTExPQ0FURSAmJiAhY2hlY2tfb21w X2FsbG9jYXRlX3N0bXQgKCZvbGRfbG9jdXMpKQorICAgIGdvdG8gZXJyb3JfaGFuZGxpbmc7 CisKICAgc3dpdGNoIChyZXQpCiAgICAgewogICAgIC8qIFNldCBvbXBfdGFyZ2V0X3NlZW47 IGV4Y2x1ZGUgU1RfT01QX0RFQ0xBUkVfVEFSR0VULgpAQCAtMTcyMCw3ICsxODA2LDcgQEAg bmV4dF9zdGF0ZW1lbnQgKHZvaWQpCiAgIGNhc2UgU1RfT01QX1RBUkdFVF9TSU1EOiBjYXNl IFNUX09NUF9UQVNLTE9PUDogY2FzZSBTVF9PTVBfVEFTS0xPT1BfU0lNRDogXAogICBjYXNl IFNUX09NUF9MT09QOiBjYXNlIFNUX09NUF9QQVJBTExFTF9MT09QOiBjYXNlIFNUX09NUF9U RUFNU19MT09QOiBcCiAgIGNhc2UgU1RfT01QX1RBUkdFVF9QQVJBTExFTF9MT09QOiBjYXNl IFNUX09NUF9UQVJHRVRfVEVBTVNfTE9PUDogXAotICBjYXNlIFNUX09NUF9BU1NVTUU6IFwK KyAgY2FzZSBTVF9PTVBfQUxMT0NBVEVfRVhFQzogY2FzZSBTVF9PTVBfQUxMT0NBVE9SUzog Y2FzZSBTVF9PTVBfQVNTVU1FOiBcCiAgIGNhc2UgU1RfQ1JJVElDQUw6IFwKICAgY2FzZSBT VF9PQUNDX1BBUkFMTEVMX0xPT1A6IGNhc2UgU1RfT0FDQ19QQVJBTExFTDogY2FzZSBTVF9P QUNDX0tFUk5FTFM6IFwKICAgY2FzZSBTVF9PQUNDX0RBVEE6IGNhc2UgU1RfT0FDQ19IT1NU X0RBVEE6IGNhc2UgU1RfT0FDQ19MT09QOiBcCkBAIC0xNzM4LDcgKzE4MjQsNyBAQCBuZXh0 X3N0YXRlbWVudCAodm9pZCkKIAogI2RlZmluZSBjYXNlX29tcF9kZWNsIGNhc2UgU1RfT01Q X1RIUkVBRFBSSVZBVEU6IGNhc2UgU1RfT01QX0RFQ0xBUkVfU0lNRDogXAogICBjYXNlIFNU X09NUF9ERUNMQVJFX1RBUkdFVDogY2FzZSBTVF9PTVBfREVDTEFSRV9SRURVQ1RJT046IFwK LSAgY2FzZSBTVF9PTVBfREVDTEFSRV9WQVJJQU5UOiBjYXNlIFNUX09NUF9BU1NVTUVTOiBc CisgIGNhc2UgU1RfT01QX0RFQ0xBUkVfVkFSSUFOVDogY2FzZSBTVF9PTVBfQUxMT0NBVEU6 IGNhc2UgU1RfT01QX0FTU1VNRVM6IFwKICAgY2FzZSBTVF9PTVBfUkVRVUlSRVM6IGNhc2Ug U1RfT0FDQ19ST1VUSU5FOiBjYXNlIFNUX09BQ0NfREVDTEFSRQogCiAvKiBCbG9jayBlbmQg c3RhdGVtZW50cy4gIEVycm9ycyBhc3NvY2lhdGVkIHdpdGggaW50ZXJjaGFuZ2luZyB0aGVz ZQpAQCAtMjM1OSw2ICsyNDQ1LDEzIEBAIGdmY19hc2NpaV9zdGF0ZW1lbnQgKGdmY19zdGF0 ZW1lbnQgc3QsIGJvb2wgc3RyaXBfc2VudGluZWwpCiAgICAgY2FzZSBTVF9PQUNDX0VORF9B VE9NSUM6CiAgICAgICBwID0gIiEkQUNDIEVORCBBVE9NSUMiOwogICAgICAgYnJlYWs7Cisg ICAgY2FzZSBTVF9PTVBfQUxMT0NBVEU6CisgICAgY2FzZSBTVF9PTVBfQUxMT0NBVEVfRVhF QzoKKyAgICAgIHAgPSAiISRPTVAgQUxMT0NBVEUiOworICAgICAgYnJlYWs7CisgICAgY2Fz ZSBTVF9PTVBfQUxMT0NBVE9SUzoKKyAgICAgIHAgPSAiISRPTVAgQUxMT0NBVE9SUyI7Cisg ICAgICBicmVhazsKICAgICBjYXNlIFNUX09NUF9BU1NVTUU6CiAgICAgICBwID0gIiEkT01Q IEFTU1VNRSI7CiAgICAgICBicmVhazsKQEAgLTI0MTMsNiArMjUwNiw5IEBAIGdmY19hc2Np aV9zdGF0ZW1lbnQgKGdmY19zdGF0ZW1lbnQgc3QsIGJvb2wgc3RyaXBfc2VudGluZWwpCiAg ICAgY2FzZSBTVF9PTVBfRE9fU0lNRDoKICAgICAgIHAgPSAiISRPTVAgRE8gU0lNRCI7CiAg ICAgICBicmVhazsKKyAgICBjYXNlIFNUX09NUF9FTkRfQUxMT0NBVE9SUzoKKyAgICAgIHAg PSAiISRPTVAgRU5EIEFMTE9DQVRPUlMiOworICAgICAgYnJlYWs7CiAgICAgY2FzZSBTVF9P TVBfRU5EX0FTU1VNRToKICAgICAgIHAgPSAiISRPTVAgRU5EIEFTU1VNRSI7CiAgICAgICBi cmVhazsKQEAgLTI5ODAsNiArMzA3Niw3IEBAIHZlcmlmeV9zdF9vcmRlciAoc3Rfc3RhdGUg KnAsIGdmY19zdGF0ZW1lbnQgc3QsIGJvb2wgc2lsZW50KQogICAgIHsKICAgICBjYXNlIFNU X05PTkU6CiAgICAgICBwLT5zdGF0ZSA9IE9SREVSX1NUQVJUOworICAgICAgaW5fZXhlY19w YXJ0ID0gZmFsc2U7CiAgICAgICBicmVhazsKIAogICAgIGNhc2UgU1RfVVNFOgpAQCAtMzA1 Myw2ICszMTUwLDcgQEAgdmVyaWZ5X3N0X29yZGVyIChzdF9zdGF0ZSAqcCwgZ2ZjX3N0YXRl bWVudCBzdCwgYm9vbCBzaWxlbnQpCiAgICAgY2FzZV9leGVjX21hcmtlcnM6CiAgICAgICBp ZiAocC0+c3RhdGUgPCBPUkRFUl9FWEVDKQogCXAtPnN0YXRlID0gT1JERVJfRVhFQzsKKyAg ICAgIGluX2V4ZWNfcGFydCA9IHRydWU7CiAgICAgICBicmVhazsKIAogICAgIGRlZmF1bHQ6 CkBAIC01NTI2LDYgKzU2MjQsNzcgQEAgcGFyc2Vfb2FjY19sb29wIChnZmNfc3RhdGVtZW50 IGFjY19zdCkKIH0KIAogCisvKiBQYXJzZSBhbiBPcGVuTVAgYWxsb2NhdGUgYmxvY2ssIGlu Y2x1ZGluZyBvcHRpb25hbCBBTExPQ0FUT1JTCisgICBlbmQgZGlyZWN0aXZlLiAgKi8KKwor c3RhdGljIGdmY19zdGF0ZW1lbnQKK3BhcnNlX29wZW5tcF9hbGxvY2F0ZV9ibG9jayAoZ2Zj X3N0YXRlbWVudCBvbXBfc3QpCit7CisgIGdmY19zdGF0ZW1lbnQgc3Q7CisgIGdmY19jb2Rl ICpjcCwgKm5wOworICBnZmNfc3RhdGVfZGF0YSBzOworICBib29sIGVtcHR5X2xpc3QgPSBm YWxzZTsKKyAgbG9jdXMgZW1wdHlfbGlzdF9sb2M7CisgIGdmY19vbXBfbmFtZWxpc3QgKm5f Zmlyc3QgPSBuZXdfc3QuZXh0Lm9tcF9jbGF1c2VzLT5saXN0c1tPTVBfTElTVF9BTExPQ0FU RV07CisKKyAgaWYgKG9tcF9zdCA9PSBTVF9PTVBfQUxMT0NBVEVfRVhFQworICAgICAgJiYg bmV3X3N0LmV4dC5vbXBfY2xhdXNlcy0+bGlzdHNbT01QX0xJU1RfQUxMT0NBVEVdLT5zeW0g PT0gTlVMTCkKKyAgICB7CisgICAgICBlbXB0eV9saXN0ID0gdHJ1ZTsKKyAgICAgIGVtcHR5 X2xpc3RfbG9jID0gbmV3X3N0LmV4dC5vbXBfY2xhdXNlcy0+bGlzdHNbT01QX0xJU1RfQUxM T0NBVEVdLT53aGVyZTsKKyAgICB9CisKKyAgYWNjZXB0X3N0YXRlbWVudCAob21wX3N0KTsK KworICBjcCA9IGdmY19zdGF0ZV9zdGFjay0+dGFpbDsKKyAgcHVzaF9zdGF0ZSAoJnMsIENP TVBfT01QX1NUUlVDVFVSRURfQkxPQ0ssIE5VTEwpOworICBucCA9IG5ld19sZXZlbCAoY3Ap OworICBucC0+b3AgPSBjcC0+b3A7CisgIG5wLT5ibG9jayA9IE5VTEw7CisKKyAgc3QgPSBu ZXh0X3N0YXRlbWVudCAoKTsKKyAgd2hpbGUgKG9tcF9zdCA9PSBTVF9PTVBfQUxMT0NBVEVf RVhFQyAmJiBzdCA9PSBTVF9PTVBfQUxMT0NBVEVfRVhFQykKKyAgICB7CisgICAgICBpZiAo ZW1wdHlfbGlzdCAmJiAhbmV3X3N0LmV4dC5vbXBfY2xhdXNlcy0+bGlzdHNbT01QX0xJU1Rf QUxMT0NBVEVdLT5zeW0pCisJeworCSAgbG9jdXMgKmxvYyA9ICZuZXdfc3QuZXh0Lm9tcF9j bGF1c2VzLT5saXN0c1tPTVBfTElTVF9BTExPQ0FURV0tPndoZXJlOworCSAgZ2ZjX2Vycm9y X25vdyAoIiVzIHN0YXRlbWVudHMgYXQgJUwgYW5kICVMIGhhdmUgYm90aCBubyBsaXN0IGl0 ZW0gYnV0IgorCQkJICIgb25seSBvbmUgbWF5IiwgZ2ZjX2FzY2lpX3N0YXRlbWVudCAoc3Qp LAorCQkJICZlbXB0eV9saXN0X2xvYywgbG9jKTsKKwkgIGVtcHR5X2xpc3QgPSBmYWxzZTsK Kwl9CisgICAgICBpZiAoIW5ld19zdC5leHQub21wX2NsYXVzZXMtPmxpc3RzW09NUF9MSVNU X0FMTE9DQVRFXS0+c3ltKQorCXsKKwkgIGVtcHR5X2xpc3QgPSB0cnVlOworCSAgZW1wdHlf bGlzdF9sb2MgPSBuZXdfc3QuZXh0Lm9tcF9jbGF1c2VzLT5saXN0c1tPTVBfTElTVF9BTExP Q0FURV0tPndoZXJlOworCX0KKyAgICAgIGZvciAoIDsgbl9maXJzdC0+bmV4dDsgbl9maXJz dCA9IG5fZmlyc3QtPm5leHQpCisJOworICAgICAgbl9maXJzdC0+bmV4dCA9IG5ld19zdC5l eHQub21wX2NsYXVzZXMtPmxpc3RzW09NUF9MSVNUX0FMTE9DQVRFXTsKKyAgICAgIG5ld19z dC5leHQub21wX2NsYXVzZXMtPmxpc3RzW09NUF9MSVNUX0FMTE9DQVRFXSA9IE5VTEw7Cisg ICAgICBnZmNfZnJlZV9vbXBfY2xhdXNlcyAobmV3X3N0LmV4dC5vbXBfY2xhdXNlcyk7CisK KyAgICAgIGFjY2VwdF9zdGF0ZW1lbnQgKFNUX05PTkUpOworICAgICAgc3QgPSBuZXh0X3N0 YXRlbWVudCAoKTsKKyAgICB9CisgIGlmIChzdCAhPSBTVF9BTExPQ0FURSAmJiBvbXBfc3Qg PT0gU1RfT01QX0FMTE9DQVRFX0VYRUMpCisgICAgZ2ZjX2Vycm9yX25vdyAoIlVuZXhwZWN0 ZWQgJXMgYXQgJUM7IGV4cGVjdGVkIEFMTE9DQVRFIG9yICVzIHN0YXRlbWVudCIsCisJCSAg IGdmY19hc2NpaV9zdGF0ZW1lbnQgKHN0KSwgZ2ZjX2FzY2lpX3N0YXRlbWVudCAob21wX3N0 KSk7CisgIGVsc2UgaWYgKHN0ICE9IFNUX0FMTE9DQVRFKQorICAgIGdmY19lcnJvcl9ub3cg KCJVbmV4cGVjdGVkICVzIGF0ICVDOyBleHBlY3RlZCBBTExPQ0FURSBzdGF0ZW1lbnQgYWZ0 ZXIgJXMiLAorCQkgICBnZmNfYXNjaWlfc3RhdGVtZW50IChzdCksIGdmY19hc2NpaV9zdGF0 ZW1lbnQgKG9tcF9zdCkpOworICBhY2NlcHRfc3RhdGVtZW50IChzdCk7CisgIHBvcF9zdGF0 ZSAoKTsKKyAgc3QgPSBuZXh0X3N0YXRlbWVudCAoKTsKKyAgaWYgKG9tcF9zdCA9PSBTVF9P TVBfQUxMT0NBVE9SUyAmJiBzdCA9PSBTVF9PTVBfRU5EX0FMTE9DQVRPUlMpCisgICAgewor ICAgICAgYWNjZXB0X3N0YXRlbWVudCAoc3QpOworICAgICAgc3QgPSBuZXh0X3N0YXRlbWVu dCAoKTsKKyAgICB9CisgIHJldHVybiBzdDsKK30KKworCiAvKiBQYXJzZSB0aGUgc3RhdGVt ZW50cyBvZiBhbiBPcGVuTVAgc3RydWN0dXJlZCBibG9jay4gICovCiAKIHN0YXRpYyBnZmNf c3RhdGVtZW50CkBAIC01NjgxLDYgKzU4NTAsMTEgQEAgcGFyc2Vfb21wX3N0cnVjdHVyZWRf YmxvY2sgKGdmY19zdGF0ZW1lbnQgb21wX3N0LCBib29sIHdvcmtzaGFyZV9zdG10c19vbmx5 KQogCQkgIHBhcnNlX2ZvcmFsbF9ibG9jayAoKTsKIAkJICBicmVhazsKIAorCQljYXNlIFNU X09NUF9BTExPQ0FURV9FWEVDOgorCQljYXNlIFNUX09NUF9BTExPQ0FUT1JTOgorCQkgIHN0 ID0gcGFyc2Vfb3Blbm1wX2FsbG9jYXRlX2Jsb2NrIChzdCk7CisJCSAgY29udGludWU7CisK IAkJY2FzZSBTVF9PTVBfQVNTVU1FOgogCQljYXNlIFNUX09NUF9QQVJBTExFTDoKIAkJY2Fz ZSBTVF9PTVBfUEFSQUxMRUxfTUFTS0VEOgpAQCAtNTgxMyw2ICs1OTg3LDcgQEAgc3RhdGlj IGdmY19zdGF0ZW1lbnQKIHBhcnNlX2V4ZWN1dGFibGUgKGdmY19zdGF0ZW1lbnQgc3QpCiB7 CiAgIGludCBjbG9zZV9mbGFnOworICBpbl9leGVjX3BhcnQgPSB0cnVlOwogCiAgIGlmIChz dCA9PSBTVF9OT05FKQogICAgIHN0ID0gbmV4dF9zdGF0ZW1lbnQgKCk7CkBAIC01OTIzLDYg KzYwOTgsMTEgQEAgcGFyc2VfZXhlY3V0YWJsZSAoZ2ZjX3N0YXRlbWVudCBzdCkKIAkgIHBh cnNlX29hY2Nfc3RydWN0dXJlZF9ibG9jayAoc3QpOwogCSAgYnJlYWs7CiAKKwljYXNlIFNU X09NUF9BTExPQ0FURV9FWEVDOgorCWNhc2UgU1RfT01QX0FMTE9DQVRPUlM6CisJICBzdCA9 IHBhcnNlX29wZW5tcF9hbGxvY2F0ZV9ibG9jayAoc3QpOworCSAgY29udGludWU7CisKIAlj YXNlIFNUX09NUF9BU1NVTUU6CiAJY2FzZSBTVF9PTVBfUEFSQUxMRUw6CiAJY2FzZSBTVF9P TVBfUEFSQUxMRUxfTUFTS0VEOgpkaWZmIC0tZ2l0IGEvZ2NjL2ZvcnRyYW4vcmVzb2x2ZS5j YyBiL2djYy9mb3J0cmFuL3Jlc29sdmUuY2MKaW5kZXggMGY1ZjFkMjc3ZTQuLjc1OWZjYWNm N2U4IDEwMDY0NAotLS0gYS9nY2MvZm9ydHJhbi9yZXNvbHZlLmNjCisrKyBiL2djYy9mb3J0 cmFuL3Jlc29sdmUuY2MKQEAgLTEwOTA5LDYgKzEwOTA5LDggQEAgZ2ZjX3Jlc29sdmVfYmxv Y2tzIChnZmNfY29kZSAqYiwgZ2ZjX25hbWVzcGFjZSAqbnMpCiAJY2FzZSBFWEVDX09BQ0Nf RU5URVJfREFUQToKIAljYXNlIEVYRUNfT0FDQ19FWElUX0RBVEE6CiAJY2FzZSBFWEVDX09B Q0NfUk9VVElORToKKwljYXNlIEVYRUNfT01QX0FMTE9DQVRFOgorCWNhc2UgRVhFQ19PTVBf QUxMT0NBVE9SUzoKIAljYXNlIEVYRUNfT01QX0FTU1VNRToKIAljYXNlIEVYRUNfT01QX0NS SVRJQ0FMOgogCWNhc2UgRVhFQ19PTVBfRElTVFJJQlVURToKQEAgLTEyMzg0LDYgKzEyMzg2 LDggQEAgc3RhcnQ6CiAJICBnZmNfcmVzb2x2ZV9vYWNjX2RpcmVjdGl2ZSAoY29kZSwgbnMp OwogCSAgYnJlYWs7CiAKKwljYXNlIEVYRUNfT01QX0FMTE9DQVRFOgorCWNhc2UgRVhFQ19P TVBfQUxMT0NBVE9SUzoKIAljYXNlIEVYRUNfT01QX0FTU1VNRToKIAljYXNlIEVYRUNfT01Q X0FUT01JQzoKIAljYXNlIEVYRUNfT01QX0JBUlJJRVI6CkBAIC0xNzYyNiw2ICsxNzYzMCw4 IEBAIHJlc29sdmVfY29kZXMgKGdmY19uYW1lc3BhY2UgKm5zKQogICBnZmNfcmVzb2x2ZV9v YWNjX2RlY2xhcmUgKG5zKTsKICAgZ2ZjX3Jlc29sdmVfb2FjY19yb3V0aW5lcyAobnMpOwog ICBnZmNfcmVzb2x2ZV9vbXBfbG9jYWxfdmFycyAobnMpOworICBpZiAobnMtPm9tcF9hbGxv Y2F0ZSkKKyAgICBnZmNfcmVzb2x2ZV9vbXBfYWxsb2NhdGUgKG5zLCBucy0+b21wX2FsbG9j YXRlKTsKICAgZ2ZjX3Jlc29sdmVfY29kZSAobnMtPmNvZGUsIG5zKTsKIAogICBiaXRtYXBf b2JzdGFja19yZWxlYXNlICgmbGFiZWxzX29ic3RhY2spOwpkaWZmIC0tZ2l0IGEvZ2NjL2Zv cnRyYW4vc3QuY2MgYi9nY2MvZm9ydHJhbi9zdC5jYwppbmRleCA4YjRjYTVlYzJlYS4uOTc4 YWMwNTY5YmIgMTAwNjQ0Ci0tLSBhL2djYy9mb3J0cmFuL3N0LmNjCisrKyBiL2djYy9mb3J0 cmFuL3N0LmNjCkBAIC0yMTQsNiArMjE0LDggQEAgZ2ZjX2ZyZWVfc3RhdGVtZW50IChnZmNf Y29kZSAqcCkKICAgICBjYXNlIEVYRUNfT0FDQ19FTlRFUl9EQVRBOgogICAgIGNhc2UgRVhF Q19PQUNDX0VYSVRfREFUQToKICAgICBjYXNlIEVYRUNfT0FDQ19ST1VUSU5FOgorICAgIGNh c2UgRVhFQ19PTVBfQUxMT0NBVEU6CisgICAgY2FzZSBFWEVDX09NUF9BTExPQ0FUT1JTOgog ICAgIGNhc2UgRVhFQ19PTVBfQVNTVU1FOgogICAgIGNhc2UgRVhFQ19PTVBfQVRPTUlDOgog ICAgIGNhc2UgRVhFQ19PTVBfQ0FOQ0VMOgpkaWZmIC0tZ2l0IGEvZ2NjL2ZvcnRyYW4vdHJh bnMtb3Blbm1wLmNjIGIvZ2NjL2ZvcnRyYW4vdHJhbnMtb3Blbm1wLmNjCmluZGV4IDM5NWJj Yzk4ZTAwLi5mOWVlMTA3YmZjZiAxMDA2NDQKLS0tIGEvZ2NjL2ZvcnRyYW4vdHJhbnMtb3Bl bm1wLmNjCisrKyBiL2djYy9mb3J0cmFuL3RyYW5zLW9wZW5tcC5jYwpAQCAtMjcxNiwxMSAr MjcxNiwxMSBAQCBnZmNfdHJhbnNfb21wX2NsYXVzZXMgKHN0bXRibG9ja190ICpibG9jaywg Z2ZjX29tcF9jbGF1c2VzICpjbGF1c2VzLAogCQkgICAgdHJlZSBub2RlID0gYnVpbGRfb21w X2NsYXVzZSAoaW5wdXRfbG9jYXRpb24sCiAJCQkJCQkgIE9NUF9DTEFVU0VfQUxMT0NBVEUp OwogCQkgICAgT01QX0NMQVVTRV9ERUNMIChub2RlKSA9IHQ7Ci0JCSAgICBpZiAobi0+ZXhw cikKKwkJICAgIGlmIChuLT51Mi5hbGxvY2F0b3IpCiAJCSAgICAgIHsKIAkJCXRyZWUgYWxs b2NhdG9yXzsKIAkJCWdmY19pbml0X3NlICgmc2UsIE5VTEwpOwotCQkJZ2ZjX2NvbnZfZXhw ciAoJnNlLCBuLT5leHByKTsKKwkJCWdmY19jb252X2V4cHIgKCZzZSwgbi0+dTIuYWxsb2Nh dG9yKTsKIAkJCWFsbG9jYXRvcl8gPSBnZmNfZXZhbHVhdGVfbm93IChzZS5leHByLCBibG9j ayk7CiAJCQlPTVBfQ0xBVVNFX0FMTE9DQVRFX0FMTE9DQVRPUiAobm9kZSkgPSBhbGxvY2F0 b3JfOwogCQkgICAgICB9CkBAIC02NTE4LDYgKzY1MTgsOCBAQCBnZmNfc3BsaXRfb21wX2Ns YXVzZXMgKGdmY19jb2RlICpjb2RlLAogCQkJICAgICBwID0gZ2ZjX2dldF9vbXBfbmFtZWxp c3QgKCk7CiAJCQkgICAgIHAtPnN5bSA9IGFsbG9jX25sLT5zeW07CiAJCQkgICAgIHAtPmV4 cHIgPSBhbGxvY19ubC0+ZXhwcjsKKwkJCSAgICAgcC0+dS5hbGlnbiA9IGFsbG9jX25sLT51 LmFsaWduOworCQkJICAgICBwLT51Mi5hbGxvY2F0b3IgPSBhbGxvY19ubC0+dTIuYWxsb2Nh dG9yOwogCQkJICAgICBwLT53aGVyZSA9IGFsbG9jX25sLT53aGVyZTsKIAkJCSAgICAgaWYg KGNsYXVzZXNhW2ldLmxpc3RzW09NUF9MSVNUX0FMTE9DQVRFXSA9PSBOVUxMKQogCQkJICAg ICAgIHsKQEAgLTc1NjksNiArNzU3MSwxNCBAQCBnZmNfdHJhbnNfb21wX2RpcmVjdGl2ZSAo Z2ZjX2NvZGUgKmNvZGUpCiB7CiAgIHN3aXRjaCAoY29kZS0+b3ApCiAgICAgeworICAgIGNh c2UgRVhFQ19PTVBfQUxMT0NBVEU6CisgICAgY2FzZSBFWEVDX09NUF9BTExPQ0FUT1JTOgor ICAgICAgLyogTm90ZSB0aGF0IHRoZSBhbGxvY2F0ZS1zdG10IGFzc29jaWF0ZWQgT01QIEFM TE9DQVRFIChidXQgbm90CisJIE9NUCBBTExPQ0FUT1JTKSBwZXJtaXRzIHN0cnVjdHVyZSBl bGVtZW50czsgaG93ZXZlciwgdGhvc2UgYXJlCisJIGN1cnJlbnRseSByZWplY3RlZCBkaXJl Y3RseSBhZnRlciBwYXJzaW5nLiAgKi8KKyAgICAgIHNvcnJ5ICgiJTwhJE9NUCAlcyU+IG5v dCB5ZXQgc3VwcG9ydGVkIiwKKwkgICAgIGNvZGUtPm9wID09IEVYRUNfT01QX0FMTE9DQVRF ID8gIkFMTE9DQVRFIiA6ICJBTExPQ0FUT1JTIik7CisgICAgICByZXR1cm4gTlVMTF9UUkVF OwogICAgIGNhc2UgRVhFQ19PTVBfQVNTVU1FOgogICAgICAgcmV0dXJuIGdmY190cmFuc19v bXBfYXNzdW1lIChjb2RlKTsKICAgICBjYXNlIEVYRUNfT01QX0FUT01JQzoKZGlmZiAtLWdp dCBhL2djYy9mb3J0cmFuL3RyYW5zLmNjIGIvZ2NjL2ZvcnRyYW4vdHJhbnMuY2MKaW5kZXgg OGE2NDg4MmVhOWUuLjliNGZiNTc1NTcyIDEwMDY0NAotLS0gYS9nY2MvZm9ydHJhbi90cmFu cy5jYworKysgYi9nY2MvZm9ydHJhbi90cmFucy5jYwpAQCAtMjE3NCw2ICsyMTc0LDggQEAg dHJhbnNfY29kZSAoZ2ZjX2NvZGUgKiBjb2RlLCB0cmVlIGNvbmQpCiAJICByZXMgPSBnZmNf dHJhbnNfZHRfZW5kIChjb2RlKTsKIAkgIGJyZWFrOwogCisJY2FzZSBFWEVDX09NUF9BTExP Q0FURToKKwljYXNlIEVYRUNfT01QX0FMTE9DQVRPUlM6CiAJY2FzZSBFWEVDX09NUF9BU1NV TUU6CiAJY2FzZSBFWEVDX09NUF9BVE9NSUM6CiAJY2FzZSBFWEVDX09NUF9CQVJSSUVSOgpk aWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL2FsbG9jYXRlLTIu ZjkwIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL2FsbG9jYXRlLTIuZjkwCmlu ZGV4IDY1N2ZmNDRkMDIzLi5jYzgzYjVlZGJjZSAxMDA2NDQKLS0tIGEvZ2NjL3Rlc3RzdWl0 ZS9nZm9ydHJhbi5kZy9nb21wL2FsbG9jYXRlLTIuZjkwCisrKyBiL2djYy90ZXN0c3VpdGUv Z2ZvcnRyYW4uZGcvZ29tcC9hbGxvY2F0ZS0yLmY5MApAQCAtMjUsMTEgKzI1LDExIEBAIHN1 YnJvdXRpbmUgZm9vKHgpCiAgIHg9MwogICAhJG9tcCBlbmQgcGFyYWxsZWwKIAotICAhJG9t cCBwYXJhbGxlbCBwcml2YXRlICh4KSBhbGxvY2F0ZSAoeCkgYWxsb2NhdGUgKHgpICEgeyBk Zy13YXJuaW5nICIneCcgYXBwZWFycyBtb3JlIHRoYW4gb25jZSBpbiAnYWxsb2NhdGUnIGNs YXVzZXMgYXQgLjEuIiB9CisgICEkb21wIHBhcmFsbGVsIHByaXZhdGUgKHgpIGFsbG9jYXRl ICh4KSBhbGxvY2F0ZSAoeCkgISB7IGRnLXdhcm5pbmcgIid4JyBhcHBlYXJzIG1vcmUgdGhh biBvbmNlIGluICdhbGxvY2F0ZScgYXQgLjEuIiB9CiAgIHg9NAogICAhJG9tcCBlbmQgcGFy YWxsZWwKIAotICAhJG9tcCBwYXJhbGxlbCBwcml2YXRlICh4KSBhbGxvY2F0ZSAoeCwgeCkg ISB7IGRnLXdhcm5pbmcgIid4JyBhcHBlYXJzIG1vcmUgdGhhbiBvbmNlIGluICdhbGxvY2F0 ZScgY2xhdXNlcyBhdCAuMS4iIH0gCisgICEkb21wIHBhcmFsbGVsIHByaXZhdGUgKHgpIGFs bG9jYXRlICh4LCB4KSAhIHsgZGctd2FybmluZyAiJ3gnIGFwcGVhcnMgbW9yZSB0aGFuIG9u Y2UgaW4gJ2FsbG9jYXRlJyBhdCAuMS4iIH0gCiAgIHg9NQogICAhJG9tcCBlbmQgcGFyYWxs ZWwKIApkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL2FsbG9j YXRlLTQuZjkwIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL2FsbG9jYXRlLTQu ZjkwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5hMmRjZjEwNWVl MQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9h bGxvY2F0ZS00LmY5MApAQCAtMCwwICsxLDU0IEBACittb2R1bGUgbXlfb21wX2xpYgorICB1 c2UgaXNvX2NfYmluZGluZywgb25seTogY19pbnRwdHJfdAorICAhdXNlIG9tcF9saWIKKyAg aW1wbGljaXQgbm9uZQorICAgICAgICBpbnRlZ2VyLCBwYXJhbWV0ZXIgOjogb21wX2FsbG9j YXRvcl9oYW5kbGVfa2luZCA9IGNfaW50cHRyX3QKKworICAgICAgICBpbnRlZ2VyIChraW5k PW9tcF9hbGxvY2F0b3JfaGFuZGxlX2tpbmQpLCAmCisgICAgICAgICAgICAgICAgIHBhcmFt ZXRlciA6OiBvbXBfbnVsbF9hbGxvY2F0b3IgPSAwCisKKyAgICAgICAgaW50ZWdlciAoa2lu ZD1vbXBfYWxsb2NhdG9yX2hhbmRsZV9raW5kKSwgJgorICAgICAgICAgICAgICAgICBwYXJh bWV0ZXIgOjogb21wX2RlZmF1bHRfbWVtX2FsbG9jID0gMQorICAgICAgICBpbnRlZ2VyIChr aW5kPW9tcF9hbGxvY2F0b3JfaGFuZGxlX2tpbmQpLCAmCisgICAgICAgICAgICAgICAgIHBh cmFtZXRlciA6OiBvbXBfbGFyZ2VfY2FwX21lbV9hbGxvYyA9IDIKKyAgICAgICAgaW50ZWdl ciAoa2luZD1vbXBfYWxsb2NhdG9yX2hhbmRsZV9raW5kKSwgJgorICAgICAgICAgICAgICAg ICBwYXJhbWV0ZXIgOjogb21wX2NvbnN0X21lbV9hbGxvYyA9IDMKKyAgICAgICAgaW50ZWdl ciAoa2luZD1vbXBfYWxsb2NhdG9yX2hhbmRsZV9raW5kKSwgJgorICAgICAgICAgICAgICAg ICBwYXJhbWV0ZXIgOjogb21wX2hpZ2hfYndfbWVtX2FsbG9jID0gNAorICAgICAgICBpbnRl Z2VyIChraW5kPW9tcF9hbGxvY2F0b3JfaGFuZGxlX2tpbmQpLCAmCisgICAgICAgICAgICAg ICAgIHBhcmFtZXRlciA6OiBvbXBfbG93X2xhdF9tZW1fYWxsb2MgPSA1CisgICAgICAgIGlu dGVnZXIgKGtpbmQ9b21wX2FsbG9jYXRvcl9oYW5kbGVfa2luZCksICYKKyAgICAgICAgICAg ICAgICAgcGFyYW1ldGVyIDo6IG9tcF9jZ3JvdXBfbWVtX2FsbG9jID0gNgorICAgICAgICBp bnRlZ2VyIChraW5kPW9tcF9hbGxvY2F0b3JfaGFuZGxlX2tpbmQpLCAmCisgICAgICAgICAg ICAgICAgIHBhcmFtZXRlciA6OiBvbXBfcHRlYW1fbWVtX2FsbG9jID0gNworICAgICAgICBp bnRlZ2VyIChraW5kPW9tcF9hbGxvY2F0b3JfaGFuZGxlX2tpbmQpLCAmCisgICAgICAgICAg ICAgICAgIHBhcmFtZXRlciA6OiBvbXBfdGhyZWFkX21lbV9hbGxvYyA9IDgKK2VuZCBtb2R1 bGUgbXlfb21wX2xpYgorCitzdWJyb3V0aW5lIG9uZShuLCBteV9hbGxvYykKKyAgdXNlIG15 X29tcF9saWIKKyAgaW1wbGljaXQgbm9uZQoraW50ZWdlciA6OiBuCitpbnRlZ2VyKGtpbmQ9 b21wX2FsbG9jYXRvcl9oYW5kbGVfa2luZCksIGludGVudChpbikgOjogbXlfYWxsb2MKKwor IXN0YWNrIHZhcmlhYmxlczoKK2ludGVnZXIgOjogYSxiLGMobiksZCg1KSxlKDIpCishJG9t cCBhbGxvY2F0ZShhKSAgICEgeyBkZy1lcnJvciAiU29ycnksIGRlY2xhcmF0aXZlICEuT01Q IEFMTE9DQVRFIGF0IC4xLiBub3QgeWV0IHN1cHBvcnRlZCIgfQorISRvbXAgYWxsb2NhdGUg KCBiICwgYyApIGFsaWduICggMzIpIGFsbG9jYXRvciAobXlfYWxsb2MpCishJG9tcCBhbGxv Y2F0ZSAoZCkgYWxpZ24oIDEyOCApCishJG9tcCBhbGxvY2F0ZSggICBlICkgYWxsb2NhdG9y KCBvbXBfaGlnaF9id19tZW1fYWxsb2MgKQorCishc2F2ZWQgdmFycworaW50ZWdlciwgc2F2 ZSA6OiBrLGwsbSg1KSxyKDIpCishJG9tcCBhbGxvY2F0ZShrKSAgYWxpZ24oMTYpICwgYWxs b2NhdG9yIChvbXBfbGFyZ2VfY2FwX21lbV9hbGxvYykKKyEkb21wIGFsbG9jYXRlICggbCAp IGFsbG9jYXRvciAob21wX2xhcmdlX2NhcF9tZW1fYWxsb2MpICwgYWxpZ24gKCAzMikKKyEk b21wIGFsbG9jYXRlIChtKSBhbGlnbiggMTI4ICksYWxsb2NhdG9yKCBvbXBfaGlnaF9id19t ZW1fYWxsb2MgKQorISRvbXAgYWxsb2NhdGUoICAgciApIGFsbG9jYXRvciggb21wX2hpZ2hf YndfbWVtX2FsbG9jICkKKworIWNvbW1vbiAvYmxvY2svCitpbnRlZ2VyIDo6IHEseCx5KDIp LHooNSkKK2NvbW1vbiAvY29tMS8gcSx4Citjb21tb24gL2NvbTIvIHksegorISRvbXAgYWxs b2NhdGUgKCAvIGNvbTEvKSBhbGlnbiggMTI4ICkgYWxsb2NhdG9yKCBvbXBfaGlnaF9id19t ZW1fYWxsb2MgKQorISRvbXAgYWxsb2NhdGUoL2NvbTIgLyApIGFsbG9jYXRvciggb21wX2hp Z2hfYndfbWVtX2FsbG9jICkKK2VuZApkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nZm9y dHJhbi5kZy9nb21wL2FsbG9jYXRlLTUuZjkwIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5k Zy9nb21wL2FsbG9jYXRlLTUuZjkwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwLi5iZjljNzgxZGNjNQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUv Z2ZvcnRyYW4uZGcvZ29tcC9hbGxvY2F0ZS01LmY5MApAQCAtMCwwICsxLDkzIEBACittb2R1 bGUgbXlfb21wX2xpYgorICB1c2UgaXNvX2NfYmluZGluZywgb25seTogY19pbnRwdHJfdAor ICAhdXNlIG9tcF9saWIKKyAgaW1wbGljaXQgbm9uZQorICAgICAgICBpbnRlZ2VyLCBwYXJh bWV0ZXIgOjogb21wX2FsbG9jYXRvcl9oYW5kbGVfa2luZCA9IGNfaW50cHRyX3QKKworICAg ICAgICBpbnRlZ2VyIChraW5kPW9tcF9hbGxvY2F0b3JfaGFuZGxlX2tpbmQpLCAmCisgICAg ICAgICAgICAgICAgIHBhcmFtZXRlciA6OiBvbXBfbnVsbF9hbGxvY2F0b3IgPSAwCisKKyAg ICAgICAgaW50ZWdlciAoa2luZD1vbXBfYWxsb2NhdG9yX2hhbmRsZV9raW5kKSwgJgorICAg ICAgICAgICAgICAgICBwYXJhbWV0ZXIgOjogb21wX2RlZmF1bHRfbWVtX2FsbG9jID0gMQor ICAgICAgICBpbnRlZ2VyIChraW5kPW9tcF9hbGxvY2F0b3JfaGFuZGxlX2tpbmQpLCAmCisg ICAgICAgICAgICAgICAgIHBhcmFtZXRlciA6OiBvbXBfbGFyZ2VfY2FwX21lbV9hbGxvYyA9 IDIKKyAgICAgICAgaW50ZWdlciAoa2luZD1vbXBfYWxsb2NhdG9yX2hhbmRsZV9raW5kKSwg JgorICAgICAgICAgICAgICAgICBwYXJhbWV0ZXIgOjogb21wX2NvbnN0X21lbV9hbGxvYyA9 IDMKKyAgICAgICAgaW50ZWdlciAoa2luZD1vbXBfYWxsb2NhdG9yX2hhbmRsZV9raW5kKSwg JgorICAgICAgICAgICAgICAgICBwYXJhbWV0ZXIgOjogb21wX2hpZ2hfYndfbWVtX2FsbG9j ID0gNAorICAgICAgICBpbnRlZ2VyIChraW5kPW9tcF9hbGxvY2F0b3JfaGFuZGxlX2tpbmQp LCAmCisgICAgICAgICAgICAgICAgIHBhcmFtZXRlciA6OiBvbXBfbG93X2xhdF9tZW1fYWxs b2MgPSA1CisgICAgICAgIGludGVnZXIgKGtpbmQ9b21wX2FsbG9jYXRvcl9oYW5kbGVfa2lu ZCksICYKKyAgICAgICAgICAgICAgICAgcGFyYW1ldGVyIDo6IG9tcF9jZ3JvdXBfbWVtX2Fs bG9jID0gNgorICAgICAgICBpbnRlZ2VyIChraW5kPW9tcF9hbGxvY2F0b3JfaGFuZGxlX2tp bmQpLCAmCisgICAgICAgICAgICAgICAgIHBhcmFtZXRlciA6OiBvbXBfcHRlYW1fbWVtX2Fs bG9jID0gNworICAgICAgICBpbnRlZ2VyIChraW5kPW9tcF9hbGxvY2F0b3JfaGFuZGxlX2tp bmQpLCAmCisgICAgICAgICAgICAgICAgIHBhcmFtZXRlciA6OiBvbXBfdGhyZWFkX21lbV9h bGxvYyA9IDgKKyAgdHlwZSB0CisgICAgaW50ZWdlciA6OiBhCisgIGVuZCB0eXBlIHQKK2Vu ZCBtb2R1bGUgbXlfb21wX2xpYgorCitzdWJyb3V0aW5lIHplcm8oKQorICAhJG9tcCBhc3N1 bWVzIGFic2VudCAoYWxsb2NhdG9ycykKKworICAhJG9tcCBhc3N1bWUgYWJzZW50IChhbGxv Y2F0b3JzKQorICAhJG9tcCBlbmQgYXNzdW1lCitlbmQKKworc3Vicm91dGluZSB0d28oYyx4 Mix5MikKKyAgdXNlIG15X29tcF9saWIKKyAgaW1wbGljaXQgbm9uZQorICBpbnRlZ2VyLCBh bGxvY2F0YWJsZSA6OiBhLCBiKDopLCBjKDosOikKKyAgdHlwZSh0KSwgYWxsb2NhdGFibGUg OjogeDEKKyAgdHlwZSh0KSwgcG9pbnRlciA6OiB4Mig6KQorICBjbGFzcyh0KSwgYWxsb2Nh dGFibGUgOjogeTEKKyAgY2xhc3ModCksIHBvaW50ZXIgOjogeTIoOikKKworICAhJG9tcCBm bHVzaCAgISBzb21lIGV4ZWN1dGFibGUgc3RhdGVtZW50CisgICEkb21wIGFsbG9jYXRlKGEp ICAhIHsgZGctbWVzc2FnZSAibm90IHlldCBzdXBwb3J0ZWQiIH0KKyAgYWxsb2NhdGUoYSxi KDQpLGMoMyw0KSkKKyAgZGVhbGxvY2F0ZShhLGIsYykKKworICAhJG9tcCBhbGxvY2F0ZSh4 MSx5MSx4Mix5MikgICEgeyBkZy1tZXNzYWdlICJub3QgeWV0IHN1cHBvcnRlZCIgfQorICBh bGxvY2F0ZSh4MSx5MSx4Mig1KSx5Mig1KSkKKyAgZGVhbGxvY2F0ZSh4MSx5MSx4Mix5MikK KworICAhJG9tcCBhbGxvY2F0ZShiLGEpIGFsaWduICggMTI4ICkgICEgeyBkZy1tZXNzYWdl ICJub3QgeWV0IHN1cHBvcnRlZCIgfQorICAhJG9tcCBhbGxvY2F0ZSBhbGlnbiAoIDY0ICkK KyAgYWxsb2NhdGUoYSxiKDQpLGMoMyw0KSkKKyAgZGVhbGxvY2F0ZShhLGIsYykKK2VuZAor CitzdWJyb3V0aW5lIHRocmVlKGMpCisgIHVzZSBteV9vbXBfbGliCisgIGltcGxpY2l0IG5v bmUKKyAgaW50ZWdlciA6OiBxCisgIGludGVnZXIsIGFsbG9jYXRhYmxlIDo6IGEsIGIoOiks IGMoOiw6KQorCisgIGNhbGwgZm9vKCkgICEgZXhlY3V0YWJsZSBzdG10CisgICEkb21wIGFs bG9jYXRlIGFsbG9jYXRvciggb21wX2xhcmdlX2NhcF9tZW1fYWxsb2MgKSAsIGFsaWduKDY0 KSAgISB7IGRnLW1lc3NhZ2UgIm5vdCB5ZXQgc3VwcG9ydGVkIiB9CisgICEkb21wIGFsbG9j YXRlKGIpIGFsbG9jYXRvciggb21wX2hpZ2hfYndfbWVtX2FsbG9jICkKKyAgISRvbXAgYWxs b2NhdGUoYykgYWxsb2NhdG9yKCBvbXBfaGlnaF9id19tZW1fYWxsb2MgKQorICBhbGxvY2F0 ZShhLGIoNCksYygzLDQpKQorICBkZWFsbG9jYXRlKGEsYixjKQorCisgIGJsb2NrCisgICAg cSA9IDUgICEgZXhlY3V0YWJsZSBzdG10CisgICAgISRvbXAgYWxsb2NhdGUoYSkgYWxpZ24o NjQpICAhIHsgZGctbWVzc2FnZSAibm90IHlldCBzdXBwb3J0ZWQiIH0KKyAgICAhJG9tcCBh bGxvY2F0ZShiKSBhbGxvY2F0b3IoIG9tcF9oaWdoX2J3X21lbV9hbGxvYyApLCBhbGlnbigz MikKKyAgICAhJG9tcCBhbGxvY2F0ZShjKSBhbGxvY2F0b3IoIG9tcF90aHJlYWRfbWVtX2Fs bG9jICkKKyAgICBhbGxvY2F0ZShhLGIoNCksYygzLDQpKQorICAgIGRlYWxsb2NhdGUoYSxi LGMpCisgIGVuZCBibG9jaworICBjYWxsIGlubmVyCitjb250YWlucworICBzdWJyb3V0aW5l IGlubmVyCisgICAgY2FsbCBmb28oKSAgISBleGVjdXRhYmxlIHN0bXQKKyAgICAhJG9tcCBh bGxvY2F0ZShhKSBhbGlnbig2NCkgICEgeyBkZy1tZXNzYWdlICJub3QgeWV0IHN1cHBvcnRl ZCIgfQorICAgICEkb21wIGFsbG9jYXRlKGIpIGFsbG9jYXRvciggb21wX2hpZ2hfYndfbWVt X2FsbG9jICksIGFsaWduKDMyKQorICAgICEkb21wIGFsbG9jYXRlKGMpIGFsbG9jYXRvcigg b21wX3RocmVhZF9tZW1fYWxsb2MgKQorICAgIGFsbG9jYXRlKGEsYig0KSxjKDMsNCkpCisg ICAgZGVhbGxvY2F0ZShhLGIsYykKKyAgZW5kIHN1YnJvdXRpbmUgaW5uZXIKK2VuZApkaWZm IC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL2FsbG9jYXRlLTYuZjkw IGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL2FsbG9jYXRlLTYuZjkwCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi43M2U1YmJjZjcxYgotLS0gL2Rl di9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9hbGxvY2F0ZS02 LmY5MApAQCAtMCwwICsxLDEwMyBAQAorbW9kdWxlIG15X29tcF9saWIKKyAgdXNlIGlzb19j X2JpbmRpbmcsIG9ubHk6IGNfaW50cHRyX3QKKyAgIXVzZSBvbXBfbGliCisgIGltcGxpY2l0 IG5vbmUKKyAgICAgICAgaW50ZWdlciwgcGFyYW1ldGVyIDo6IG9tcF9hbGxvY2F0b3JfaGFu ZGxlX2tpbmQgPSBjX2ludHB0cl90CisKKyAgICAgICAgaW50ZWdlciAoa2luZD1vbXBfYWxs b2NhdG9yX2hhbmRsZV9raW5kKSwgJgorICAgICAgICAgICAgICAgICBwYXJhbWV0ZXIgOjog b21wX251bGxfYWxsb2NhdG9yID0gMAorCisgICAgICAgIGludGVnZXIgKGtpbmQ9b21wX2Fs bG9jYXRvcl9oYW5kbGVfa2luZCksICYKKyAgICAgICAgICAgICAgICAgcGFyYW1ldGVyIDo6 IG9tcF9kZWZhdWx0X21lbV9hbGxvYyA9IDEKKyAgICAgICAgaW50ZWdlciAoa2luZD1vbXBf YWxsb2NhdG9yX2hhbmRsZV9raW5kKSwgJgorICAgICAgICAgICAgICAgICBwYXJhbWV0ZXIg Ojogb21wX2xhcmdlX2NhcF9tZW1fYWxsb2MgPSAyCisgICAgICAgIGludGVnZXIgKGtpbmQ9 b21wX2FsbG9jYXRvcl9oYW5kbGVfa2luZCksICYKKyAgICAgICAgICAgICAgICAgcGFyYW1l dGVyIDo6IG9tcF9jb25zdF9tZW1fYWxsb2MgPSAzCisgICAgICAgIGludGVnZXIgKGtpbmQ9 b21wX2FsbG9jYXRvcl9oYW5kbGVfa2luZCksICYKKyAgICAgICAgICAgICAgICAgcGFyYW1l dGVyIDo6IG9tcF9oaWdoX2J3X21lbV9hbGxvYyA9IDQKKyAgICAgICAgaW50ZWdlciAoa2lu ZD1vbXBfYWxsb2NhdG9yX2hhbmRsZV9raW5kKSwgJgorICAgICAgICAgICAgICAgICBwYXJh bWV0ZXIgOjogb21wX2xvd19sYXRfbWVtX2FsbG9jID0gNQorICAgICAgICBpbnRlZ2VyIChr aW5kPW9tcF9hbGxvY2F0b3JfaGFuZGxlX2tpbmQpLCAmCisgICAgICAgICAgICAgICAgIHBh cmFtZXRlciA6OiBvbXBfY2dyb3VwX21lbV9hbGxvYyA9IDYKKyAgICAgICAgaW50ZWdlciAo a2luZD1vbXBfYWxsb2NhdG9yX2hhbmRsZV9raW5kKSwgJgorICAgICAgICAgICAgICAgICBw YXJhbWV0ZXIgOjogb21wX3B0ZWFtX21lbV9hbGxvYyA9IDcKKyAgICAgICAgaW50ZWdlciAo a2luZD1vbXBfYWxsb2NhdG9yX2hhbmRsZV9raW5kKSwgJgorICAgICAgICAgICAgICAgICBw YXJhbWV0ZXIgOjogb21wX3RocmVhZF9tZW1fYWxsb2MgPSA4CisgICB0eXBlIHQKKyAgICAg aW50ZWdlcixhbGxvY2F0YWJsZSA6OiBhCisgICAgIGludGVnZXIscG9pbnRlciA6OiBiKDos OikKKyAgIGVuZCB0eXBlIHQKK2VuZCBtb2R1bGUgbXlfb21wX2xpYgorCitzdWJyb3V0aW5l IHplcm8oKQorICAhJG9tcCBhc3N1bWVzIGFic2VudCAoYWxsb2NhdGUpICAhIHsgZGctZXJy b3IgIkludmFsaWQgJ0FMTE9DQVRFJyBkaXJlY3RpdmUgYXQgLjEuIGluIEFCU0VOVCBjbGF1 c2U6IGRlY2xhcmF0aXZlLCBpbmZvcm1hdGlvbmFsIGFuZCBtZXRhIGRpcmVjdGl2ZXMgbm90 IHBlcm1pdHRlZCIgfQorCisgICEkb21wIGFzc3VtZSBhYnNlbnQgKGFsbG9jYXRlKSAgISB7 IGRnLWVycm9yICJJbnZhbGlkICdBTExPQ0FURScgZGlyZWN0aXZlIGF0IC4xLiBpbiBBQlNF TlQgY2xhdXNlOiBkZWNsYXJhdGl2ZSwgaW5mb3JtYXRpb25hbCBhbmQgbWV0YSBkaXJlY3Rp dmVzIG5vdCBwZXJtaXR0ZWQiIH0KKyAgISEkb21wIGVuZCBhc3N1bWUKK2VuZAorCitzdWJy b3V0aW5lIGFsbG9jKGMseDIseTIpCisgIHVzZSBteV9vbXBfbGliCisgIGltcGxpY2l0IG5v bmUKKyAgaW50ZWdlciwgYWxsb2NhdGFibGUgOjogYSwgYig6KSwgYyg6LDopCisgIHR5cGUo dCkgOjogeDEseDIKKyAgY2xhc3ModCkgOjogeTEseTIKKyAgYWxsb2NhdGFibGUgOjogeDEs IHkxCisKKyAgISRvbXAgZmx1c2ggICEgc29tZSBleGVjdXRhYmxlIHN0YXRlbWVudAorCisg ICEkb21wIGFsbG9jYXRlKHgyJWEseDIlYix5MiVhLHkyJWIpIGFsbG9jYXRvcihvbXBfcHRl YW1fbWVtX2FsbG9jKSBhbGlnbig2NCkgICEgeyBkZy1lcnJvciAiU29ycnksIHN0cnVjdHVy ZS1lbGVtZW50IGxpc3QgaXRlbSBhdCAuMS4gaW4gQUxMT0NBVEUgZGlyZWN0aXZlIGlzIG5v dCB5ZXQgc3VwcG9ydGVkIiB9CisgIGFsbG9jYXRlKHgyJWEseDIlYigzLDQpLHkyJWEseTIl YigzLDQpKQorCisgICEkb21wIGFsbG9jYXRlKGIoMykpIGFsaWduICggNjQgKSAhIHsgZGct ZXJyb3IgIlVuZXhwZWN0ZWQgZXhwcmVzc2lvbiBhcyBsaXN0IGl0ZW0gYXQgLjEuIGluIEFM TE9DQVRFIGRpcmVjdGl2ZSIgfQorICBhbGxvY2F0ZShiKDMpKQorZW5kCisKK3N1YnJvdXRp bmUgb25lKG4sIG15X2FsbG9jKQorICB1c2UgbXlfb21wX2xpYgorICBpbXBsaWNpdCBub25l CitpbnRlZ2VyIDo6IG4KK2ludGVnZXIoa2luZD1vbXBfYWxsb2NhdG9yX2hhbmRsZV9raW5k KSwgaW50ZW50KGluKSA6OiBteV9hbGxvYworCitpbnRlZ2VyIDo6IGEsYixjKG4pLGQoNSks ZSgyKQoraW50ZWdlciwgc2F2ZSA6OiBrLGwsbSg1KSxyKDIpCitpbnRlZ2VyIDo6IHEseCx5 KDIpLHooNSkKK2NvbW1vbiAvY29tMS8gcSx4Citjb21tb24gL2NvbTIvIHksegoraW50ZWdl ciwgYWxsb2NhdGFibGUgOjogYWxsb2MKK2ludGVnZXIsIHBvaW50ZXIgOjogcHRyCisKKyEk b21wIGFsbG9jYXRlKHEpICEgeyBkZy1lcnJvciAiJ3EnIGF0IC4xLiBpcyBwYXJ0IG9mIHRo ZSBjb21tb24gYmxvY2sgJy9jb20xLycgYW5kIG1heSBvbmx5IGJlIHNwZWNpZmljZWQgaW1w bGljaXRseSB2aWEgdGhlIG5hbWVkIGNvbW1vbiBibG9jayIgfQorCishJG9tcCBhbGxvY2F0 ZShkKDopKSAhIHsgZGctZXJyb3IgIlVuZXhwZWN0ZWQgZXhwcmVzc2lvbiBhcyBsaXN0IGl0 ZW0gYXQgLjEuIGluIEFMTE9DQVRFIGRpcmVjdGl2ZSIgfQorISRvbXAgYWxsb2NhdGUoYSkg YWxpZ24oNCksIGFsaWduKDQpICAhIHsgZGctZXJyb3IgIkR1cGxpY2F0ZWQgJ2FsaWduJyBj bGF1c2UiIH0KKyEkb21wIGFsbG9jYXRlKCAgIGUgKSBhbGxvY2F0b3IoIG9tcF9oaWdoX2J3 X21lbV9hbGxvYyApLCBhbGlnbigzMiksYWxsb2NhdG9yKCBvbXBfaGlnaF9id19tZW1fYWxs b2MgKSAgISB7IGRnLWVycm9yICJEdXBsaWNhdGVkICdhbGxvY2F0b3InIGNsYXVzZSIgfQor CishJG9tcCBhbGxvY2F0ZSBhbGlnbigzMikgISB7IGRnLWVycm9yICInIS5PTVAgQUxMT0NB VEUnIGRpcmVjdGl2ZSBhdCAuMS4gbXVzdCBlaXRoZXIgaGF2ZSBhIHZhcmlhYmxlIGFyZ3Vt ZW50IG9yLCBpZiBhc3NvY2lhdGVkIHdpdGggYW4gQUxMT0NBVEUgc3RtdCwgbXVzdCBiZSBw cmVjZWRlZCBieSBhbiBleGVjdXRhYmxlIHN0YXRlbWVudCBvciBPcGVuTVAgY29uc3RydWN0 IiB9CisKKyEkb21wIGFsbG9jYXRlKGFsbG9jKSBhbGlnbigxMjgpICAhIHsgZGctZXJyb3Ig IichLk9NUCBBTExPQ0FURScgZGlyZWN0aXZlIGF0IC4xLiBhc3NvY2lhdGVkIHdpdGggYW4g QUxMT0NBVEUgc3RtdCBtdXN0IGJlIHByZWNlZGVkIGJ5IGFuIGV4ZWN1dGFibGUgc3RhdGVt ZW50IG9yIE9wZW5NUCBjb25zdHJ1Y3Q7IG5vdGUgdGhlIHZhcmlhYmxlcyBpbiB0aGUgbGlz dCBhbGwgaGF2ZSB0aGUgYWxsb2NhdGFibGUgb3IgcG9pbnRlciBhdHRyaWJ1dGUiIH0KKyEk b21wIGFsbG9jYXRlKHB0cikgYWxpZ24oMTI4KSAgISB7IGRnLWVycm9yICInIS5PTVAgQUxM T0NBVEUnIGRpcmVjdGl2ZSBhdCAuMS4gYXNzb2NpYXRlZCB3aXRoIGFuIEFMTE9DQVRFIHN0 bXQgbXVzdCBiZSBwcmVjZWRlZCBieSBhbiBleGVjdXRhYmxlIHN0YXRlbWVudCBvciBPcGVu TVAgY29uc3RydWN0OyBub3RlIHRoZSB2YXJpYWJsZXMgaW4gdGhlIGxpc3QgYWxsIGhhdmUg dGhlIGFsbG9jYXRhYmxlIG9yIHBvaW50ZXIgYXR0cmlidXRlIiB9CisKKyEkb21wIGFsbG9j YXRlKGUpIGFsbG9jYXRlKG9tcF90aHJlYWRfbWVtX2FsbG9jKSAgISB7IGRnLWVycm9yICJF eHBlY3RlZCBBTElHTiBvciBBTExPQ0FUT1IgY2xhdXNlIiB9CitlbmQKKworc3Vicm91dGlu ZSB0d28oKQorICBpbnRlZ2VyLCBhbGxvY2F0YWJsZSA6OiBhLGIsYworCisgIGNhbGwgZm9v KCkKKyAgISRvbXAgYWxsb2NhdGUoYSkKKyAgYSA9IDUgICEgeyBkZy1lcnJvciAiVW5leHBl Y3RlZCBhc3NpZ25tZW50IGF0IC4xLjsgZXhwZWN0ZWQgQUxMT0NBVEUgb3IgIS5PTVAgQUxM T0NBVEUgc3RhdGVtZW50IiB9CisKKyAgISRvbXAgYWxsb2NhdGUgICEgeyBkZy1lcnJvciAi IS5PTVAgQUxMT0NBVEUgc3RhdGVtZW50cyBhdCAuMS4gYW5kIC4yLiBoYXZlIGJvdGggbm8g bGlzdCBpdGVtIGJ1dCBvbmx5IG9uZSBtYXkiIH0KKyAgISRvbXAgYWxsb2NhdGUoYikKKyAg ISRvbXAgYWxsb2NhdGUgICEgeyBkZy1lcnJvciAiIS5PTVAgQUxMT0NBVEUgc3RhdGVtZW50 cyBhdCAuMS4gYW5kIC4yLiBoYXZlIGJvdGggbm8gbGlzdCBpdGVtIGJ1dCBvbmx5IG9uZSBt YXkiIH0KKyAgIGFsbG9jYXRlKGEsYixjKQorCisgICEkb21wIGFsbG9jYXRlCisgICBhbGxv Y2F0ZShhLGIsYykgICEgYWxsb2NhdGUgaXMgbm8gYmxvY2sgY29uc3RydWN0LCBoZW5jZToK KyAgISRvbXAgZW5kIGFsbG9jYXRlICAhIHsgZGctZXJyb3IgIlVuY2xhc3NpZmlhYmxlIE9w ZW5NUCBkaXJlY3RpdmUiIH0KKworICAhJG9tcCBhbGxvY2F0b3JzIGFsbG9jYXRlKGFsaWdu KDY0KSA6IGEsIGIpCisgICEkb21wIGFsbG9jYXRvcnMgYWxsb2NhdGUoYWxpZ24oMTI4KSA6 IGMpICAhIHsgZGctZXJyb3IgIlVuZXhwZWN0ZWQgIS5PTVAgQUxMT0NBVE9SUyBhdCAuMS47 IGV4cGVjdGVkIEFMTE9DQVRFIHN0YXRlbWVudCBhZnRlciAhLk9NUCBBTExPQ0FUT1JTIiB9 CisgICBhbGxvY2F0ZShhLGIsYykKK2VuZApkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9n Zm9ydHJhbi5kZy9nb21wL2FsbG9jYXRlLTcuZjkwIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJh bi5kZy9nb21wL2FsbG9jYXRlLTcuZjkwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwLi5jNDY4OTlkODc1MgotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3Vp dGUvZ2ZvcnRyYW4uZGcvZ29tcC9hbGxvY2F0ZS03LmY5MApAQCAtMCwwICsxLDIzMCBAQAor ISB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLWZtYXgtZXJyb3JzPTEwMDAiIH0KK21vZHVs ZSBteV9vbXBfbGliCisgIHVzZSBpc29fY19iaW5kaW5nLCBvbmx5OiBjX2ludHB0cl90Cisg ICF1c2Ugb21wX2xpYgorICBpbXBsaWNpdCBub25lCisgICAgICAgIGludGVnZXIsIHBhcmFt ZXRlciA6OiBvbXBfYWxsb2NhdG9yX2hhbmRsZV9raW5kID0gY19pbnRwdHJfdAorCisgICAg ICAgIGludGVnZXIgKGtpbmQ9b21wX2FsbG9jYXRvcl9oYW5kbGVfa2luZCksICYKKyAgICAg ICAgICAgICAgICAgcGFyYW1ldGVyIDo6IG9tcF9udWxsX2FsbG9jYXRvciA9IDAKKworICAg ICAgICBpbnRlZ2VyIChraW5kPW9tcF9hbGxvY2F0b3JfaGFuZGxlX2tpbmQpLCAmCisgICAg ICAgICAgICAgICAgIHBhcmFtZXRlciA6OiBvbXBfZGVmYXVsdF9tZW1fYWxsb2MgPSAxCisg ICAgICAgIGludGVnZXIgKGtpbmQ9b21wX2FsbG9jYXRvcl9oYW5kbGVfa2luZCksICYKKyAg ICAgICAgICAgICAgICAgcGFyYW1ldGVyIDo6IG9tcF9sYXJnZV9jYXBfbWVtX2FsbG9jID0g MgorICAgICAgICBpbnRlZ2VyIChraW5kPW9tcF9hbGxvY2F0b3JfaGFuZGxlX2tpbmQpLCAm CisgICAgICAgICAgICAgICAgIHBhcmFtZXRlciA6OiBvbXBfY29uc3RfbWVtX2FsbG9jID0g MworICAgICAgICBpbnRlZ2VyIChraW5kPW9tcF9hbGxvY2F0b3JfaGFuZGxlX2tpbmQpLCAm CisgICAgICAgICAgICAgICAgIHBhcmFtZXRlciA6OiBvbXBfaGlnaF9id19tZW1fYWxsb2Mg PSA0CisgICAgICAgIGludGVnZXIgKGtpbmQ9b21wX2FsbG9jYXRvcl9oYW5kbGVfa2luZCks ICYKKyAgICAgICAgICAgICAgICAgcGFyYW1ldGVyIDo6IG9tcF9sb3dfbGF0X21lbV9hbGxv YyA9IDUKKyAgICAgICAgaW50ZWdlciAoa2luZD1vbXBfYWxsb2NhdG9yX2hhbmRsZV9raW5k KSwgJgorICAgICAgICAgICAgICAgICBwYXJhbWV0ZXIgOjogb21wX2Nncm91cF9tZW1fYWxs b2MgPSA2CisgICAgICAgIGludGVnZXIgKGtpbmQ9b21wX2FsbG9jYXRvcl9oYW5kbGVfa2lu ZCksICYKKyAgICAgICAgICAgICAgICAgcGFyYW1ldGVyIDo6IG9tcF9wdGVhbV9tZW1fYWxs b2MgPSA3CisgICAgICAgIGludGVnZXIgKGtpbmQ9b21wX2FsbG9jYXRvcl9oYW5kbGVfa2lu ZCksICYKKyAgICAgICAgICAgICAgICAgcGFyYW1ldGVyIDo6IG9tcF90aHJlYWRfbWVtX2Fs bG9jID0gOAorICAgdHlwZSB0CisgICAgIGludGVnZXIsYWxsb2NhdGFibGUgOjogYQorICAg ICBpbnRlZ2VyLHBvaW50ZXIgOjogYig6LDopCisgICBlbmQgdHlwZSB0CisgICBpbnRlZ2Vy IDo6IHVzZWQKK2VuZCBtb2R1bGUgbXlfb21wX2xpYgorCitzdWJyb3V0aW5lIG9uZShuLCBt eV9hbGxvYykKKyAgdXNlIG15X29tcF9saWIKKyAgaW1wbGljaXQgbm9uZQoraW50ZWdlciA6 OiBuCitpbnRlZ2VyKGtpbmQ9b21wX2FsbG9jYXRvcl9oYW5kbGVfa2luZCksIGludGVudChp bikgOjogbXlfYWxsb2MKKworaW50ZWdlciA6OiBhLGIsYyhuKSxkKDUpLGUoMikKK2ludGVn ZXIsIHNhdmUgOjogayxsLG0oNSkscigyKQoraW50ZWdlciA6OiBxLHgseSgyKSx6KDUpCitj b21tb24gL2NvbTEvIHEseAorY29tbW9uIC9jb20yLyB5LHoKK2ludGVnZXIsIGFsbG9jYXRh YmxlIDo6IGFsbG9jCitpbnRlZ2VyLCBwb2ludGVyIDo6IHB0cgoraW50ZWdlciwgcGFyYW1l dGVyIDo6IHBybT01CisKKyEkb21wIGFsbG9jYXRlKHBybSkgYWxpZ24oNjQpICEgeyBkZy1l cnJvciAiQXJndW1lbnQgJ3BybScgYXQgLjEuIHRvIGRlY2xhcmF0aXZlICEuT01QIEFMTE9D QVRFIGRpcmVjdGl2ZSBtdXN0IGJlIGEgdmFyaWFibGUiIH0KKyEgeyBkZy1lcnJvciAiU29y cnksIGRlY2xhcmF0aXZlICEuT01QIEFMTE9DQVRFIGF0IC4xLiBub3QgeWV0IHN1cHBvcnRl ZCIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfQorCishJG9tcCBhbGxvY2F0ZSh1c2VkKSBh bGxvY2F0b3Iob21wX3B0ZWFtX21lbV9hbGxvYykgICEgeyBkZy1lcnJvciAiQXJndW1lbnQg J3VzZWQnIGF0IC4xLiB0byBkZWNsYXJhdGl2ZSAhLk9NUCBBTExPQ0FURSBzaGFsbCBiZSBp biB0aGUgc2FtZSBzY29wZSBhcyB0aGUgdmFyaWFibGUgZGVjbGFyYXRpb24iIH0KKyEkb21w IGFsbG9jYXRlKG4pIGFsbG9jYXRvcihvbXBfcHRlYW1fbWVtX2FsbG9jKSAhIHsgZGctZXJy b3IgIlVuZXhwZWN0ZWQgZHVtbXkgYXJndW1lbnQgJ24nIGFzIGFyZ3VtZW50IGF0IC4xLiB0 byBkZWNsYXJhdGl2ZSAhLk9NUCBBTExPQ0FURSIgfQorCishJG9tcCBhbGxvY2F0ZSAoeCkg YWxpZ24oMTI4KSAhIHsgZGctZXJyb3IgIid4JyBhdCAuMS4gaXMgcGFydCBvZiB0aGUgY29t bW9uIGJsb2NrICcvY29tMS8nIGFuZCBtYXkgb25seSBiZSBzcGVjaWZpY2VkIGltcGxpY2l0 bHkgdmlhIHRoZSBuYW1lZCBjb21tb24gYmxvY2siIH0KKworISRvbXAgYWxsb2NhdGUgKGEs IGIsIGEpIGFsbG9jYXRvciAob21wX3B0ZWFtX21lbV9hbGxvYykgISB7IGRnLWVycm9yICJE dXBsaWNhdGVkIHZhcmlhYmxlICdhJyBpbiAhLk9NUCBBTExPQ0FURSIgfQorY29udGFpbnMK KworICBzdWJyb3V0aW5lIGlubmVyCisgICAgISRvbXAgYWxsb2NhdGUoYSkgYWxsb2NhdG9y KG9tcF9wdGVhbV9tZW1fYWxsb2MpICAhIHsgZGctZXJyb3IgIkFyZ3VtZW50ICdhJyBhdCAu MS4gdG8gZGVjbGFyYXRpdmUgIS5PTVAgQUxMT0NBVEUgc2hhbGwgYmUgaW4gdGhlIHNhbWUg c2NvcGUgYXMgdGhlIHZhcmlhYmxlIGRlY2xhcmF0aW9uIiB9CishIHsgZGctZXJyb3IgIlNv cnJ5LCBkZWNsYXJhdGl2ZSAhLk9NUCBBTExPQ0FURSBhdCAuMS4gbm90IHlldCBzdXBwb3J0 ZWQiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0KKyAgZW5kCitlbmQKKworc3Vicm91dGlu ZSB0aHJlZShuKQorICB1c2UgbXlfb21wX2xpYgorICBpbXBsaWNpdCBub25lCitpbnRlZ2Vy LHZhbHVlIDo6IG4KK2ludGVnZXIgOjogYSxiLGMobiksZCg1KSxlKDIpCitpbnRlZ2VyLCBz YXZlIDo6IGssbCxtKDUpCitpbnRlZ2VyIDo6IHEseCx5KDIpLHooNSkscgorY29tbW9uIC9j b200LyB5LHoKK2FsbG9jYXRhYmxlIDo6IHEKK3BvaW50ZXIgOjogYgorISRvbXAgYWxsb2Nh dGUgKGMsIGQpIGFsbG9jYXRvciAob21wX3B0ZWFtX21lbV9hbGxvYykKKyEgeyBkZy1lcnJv ciAiU29ycnksIGRlY2xhcmF0aXZlICEuT01QIEFMTE9DQVRFIGF0IC4xLiBub3QgeWV0IHN1 cHBvcnRlZCIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfQorISRvbXAgYWxsb2NhdGUgKC9j b200LykgYWxsb2NhdG9yIChvbXBfcHRlYW1fbWVtX2FsbG9jKQorISRvbXAgYWxsb2NhdGUg KGMpIGFsbG9jYXRvciAob21wX3B0ZWFtX21lbV9hbGxvYykgISB7IGRnLWVycm9yICJEdXBs aWNhdGVkIHZhcmlhYmxlICdjJyBpbiAhLk9NUCBBTExPQ0FURSIgfQorISRvbXAgYWxsb2Nh dGUgKC9jb200LykgYWxsb2NhdG9yIChvbXBfcHRlYW1fbWVtX2FsbG9jKSAhIHsgZGctZXJy b3IgIkR1cGxpY2F0ZWQgY29tbW9uIGJsb2NrICcvY29tNC8nIGluICEuT01QIEFMTE9DQVRF IiB9CisKKyEkb21wIGFsbG9jYXRlKHEseCkgICEgeyBkZy1lcnJvciAiVW5leHBlY3RlZCBh bGxvY2F0YWJsZSB2YXJpYWJsZSAncScgYXQgLjEuIGluIGRlY2xhcmF0aXZlICEuT01QIEFM TE9DQVRFIGRpcmVjdGl2ZSIgfQorISRvbXAgYWxsb2NhdGUoYixlKSAgISB7IGRnLWVycm9y ICJVbmV4cGVjdGVkIHBvaW50ZXIgdmFyaWFibGUgJ2InIGF0IC4xLiBpbiBkZWNsYXJhdGl2 ZSAhLk9NUCBBTExPQ0FURSBkaXJlY3RpdmUiIH0KK2VuZAorCitzdWJyb3V0aW5lIGZvdXIo bikKKyAgaW50ZWdlciA6OiBxcSwgcnIsIHNzLCB0dCwgdXUsIHZ2LG4KKyEkb21wIGFsbG9j YXRlIChxcSkgYWxpZ24oMytuKSAhIHsgZGctZXJyb3IgIkFMSUdOIHJlcXVpcmVzIGEgc2Nh bGFyIHBvc2l0aXZlIGNvbnN0YW50IGludGVnZXIgYWxpZ25tZW50IGV4cHJlc3Npb24gYXQg LjEuIHRoYXQgaXMgYSBwb3dlciBvZiB0d28iIH0KKyEgeyBkZy1lcnJvciAiU29ycnksIGRl Y2xhcmF0aXZlICEuT01QIEFMTE9DQVRFIGF0IC4xLiBub3QgeWV0IHN1cHBvcnRlZCIgIiIg eyB0YXJnZXQgKi0qLSogfSAuLTEgfQorISRvbXAgYWxsb2NhdGUgKHJyKSBhbGlnbihbNF0p ICEgeyBkZy1lcnJvciAiQUxJR04gcmVxdWlyZXMgYSBzY2FsYXIgcG9zaXRpdmUgY29uc3Rh bnQgaW50ZWdlciBhbGlnbm1lbnQgZXhwcmVzc2lvbiBhdCAuMS4gdGhhdCBpcyBhIHBvd2Vy IG9mIHR3byIgfQorISRvbXAgYWxsb2NhdGUgKHNzKSBhbGlnbihbNF0pICEgeyBkZy1lcnJv ciAiQUxJR04gcmVxdWlyZXMgYSBzY2FsYXIgcG9zaXRpdmUgY29uc3RhbnQgaW50ZWdlciBh bGlnbm1lbnQgZXhwcmVzc2lvbiBhdCAuMS4gdGhhdCBpcyBhIHBvd2VyIG9mIHR3byIgfQor ISRvbXAgYWxsb2NhdGUgKHR0KSBhbGlnbigzMi4wKSAhIHsgZGctZXJyb3IgIkFMSUdOIHJl cXVpcmVzIGEgc2NhbGFyIHBvc2l0aXZlIGNvbnN0YW50IGludGVnZXIgYWxpZ25tZW50IGV4 cHJlc3Npb24gYXQgLjEuIHRoYXQgaXMgYSBwb3dlciBvZiB0d28iIH0KKyEkb21wIGFsbG9j YXRlICh1dSkgYWxpZ24oMzEpICEgeyBkZy1lcnJvciAiQUxJR04gcmVxdWlyZXMgYSBzY2Fs YXIgcG9zaXRpdmUgY29uc3RhbnQgaW50ZWdlciBhbGlnbm1lbnQgZXhwcmVzc2lvbiBhdCAu MS4gdGhhdCBpcyBhIHBvd2VyIG9mIHR3byIgfQorZW5kCisKK3N1YnJvdXRpbmUgZml2ZShu LG15X2FsbG9jKQorICB1c2UgbXlfb21wX2xpYgorICBpbXBsaWNpdCBub25lCisgIGludGVn ZXIgOjogcXEsIHJyLCBzcywgdHQsIHV1LCB2dixuCisgIGludGVnZXIob21wX2FsbG9jYXRv cl9oYW5kbGVfa2luZCkgOjogbXlfYWxsb2MKKyEkb21wIGFsbG9jYXRlIChxcSkgYWxsb2Nh dG9yKDMuMCkgICEgeyBkZy1lcnJvciAiRXhwZWN0ZWQgaW50ZWdlciBleHByZXNzaW9uIG9m IHRoZSAnb21wX2FsbG9jYXRvcl9oYW5kbGVfa2luZCcga2luZCIgfQorISB7IGRnLWVycm9y ICJTb3JyeSwgZGVjbGFyYXRpdmUgIS5PTVAgQUxMT0NBVEUgYXQgLjEuIG5vdCB5ZXQgc3Vw cG9ydGVkIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9CishJG9tcCBhbGxvY2F0ZSAocnIp IGFsbG9jYXRvcigzXzIpICAhIHsgZGctZXJyb3IgIkV4cGVjdGVkIGludGVnZXIgZXhwcmVz c2lvbiBvZiB0aGUgJ29tcF9hbGxvY2F0b3JfaGFuZGxlX2tpbmQnIGtpbmQiIH0KKyEkb21w IGFsbG9jYXRlIChzcykgYWxsb2NhdG9yKFtvbXBfcHRlYW1fbWVtX2FsbG9jXSkgICEgeyBk Zy1lcnJvciAiRXhwZWN0ZWQgaW50ZWdlciBleHByZXNzaW9uIG9mIHRoZSAnb21wX2FsbG9j YXRvcl9oYW5kbGVfa2luZCcga2luZCIgfQorISRvbXAgYWxsb2NhdGUgKHR0KSBhbGxvY2F0 b3IobXlfYWxsb2MpICAhIE9LCitlbmQKKworCitzdWJyb3V0aW5lIGZpdmVfU2F2ZUFsbChu LG15X2FsbG9jKQorICB1c2UgbXlfb21wX2xpYgorICBpbXBsaWNpdCBub25lCisgIHNhdmUK KyAgaW50ZWdlciA6OiBxcSwgcnIsIHNzLCB0dCwgdXUsIHZ2LG4KKyAgaW50ZWdlcihvbXBf YWxsb2NhdG9yX2hhbmRsZV9raW5kKSA6OiBteV9hbGxvYworISRvbXAgYWxsb2NhdGUgKHFx KSBhbGxvY2F0b3IoMy4wKSAgISB7IGRnLWVycm9yICJQcmVkZWZpbmVkIGFsbG9jYXRvciBy ZXF1aXJlZCBpbiBBTExPQ0FUT1IgY2xhdXNlIGF0IC4xLiBhcyB0aGUgbGlzdCBpdGVtICdx cScgYXQgLjIuIGhhcyB0aGUgU0FWRSBhdHRyaWJ1dGUiIH0KKyEgeyBkZy1lcnJvciAiU29y cnksIGRlY2xhcmF0aXZlICEuT01QIEFMTE9DQVRFIGF0IC4xLiBub3QgeWV0IHN1cHBvcnRl ZCIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfQorISRvbXAgYWxsb2NhdGUgKHJyKSBhbGxv Y2F0b3IoM18yKSAgISB7IGRnLWVycm9yICJQcmVkZWZpbmVkIGFsbG9jYXRvciByZXF1aXJl ZCBpbiBBTExPQ0FUT1IgY2xhdXNlIGF0IC4xLiBhcyB0aGUgbGlzdCBpdGVtICdycicgYXQg LjIuIGhhcyB0aGUgU0FWRSBhdHRyaWJ1dGUiIH0KKyEkb21wIGFsbG9jYXRlIChzcykgYWxs b2NhdG9yKFtvbXBfcHRlYW1fbWVtX2FsbG9jXSkgICEgeyBkZy1lcnJvciAiUHJlZGVmaW5l ZCBhbGxvY2F0b3IgcmVxdWlyZWQgaW4gQUxMT0NBVE9SIGNsYXVzZSBhdCAuMS4gYXMgdGhl IGxpc3QgaXRlbSAnc3MnIGF0IC4yLiBoYXMgdGhlIFNBVkUgYXR0cmlidXRlIiB9CishJG9t cCBhbGxvY2F0ZSAodHQpIGFsbG9jYXRvcihteV9hbGxvYykgICEgeyBkZy1lcnJvciAiUHJl ZGVmaW5lZCBhbGxvY2F0b3IgcmVxdWlyZWQgaW4gQUxMT0NBVE9SIGNsYXVzZSBhdCAuMS4g YXMgdGhlIGxpc3QgaXRlbSAndHQnIGF0IC4yLiBoYXMgdGhlIFNBVkUgYXR0cmlidXRlIiB9 CitlbmQKKworCitzdWJyb3V0aW5lIGZpdmVfU2F2ZShuLG15X2FsbG9jKQorICB1c2UgbXlf b21wX2xpYgorICBpbXBsaWNpdCBub25lCisgIGludGVnZXIgOjogbgorICBpbnRlZ2VyLCBz YXZlIDo6IHFxLCByciwgc3MsIHR0LCB1dSwgdnYKKyAgaW50ZWdlcihvbXBfYWxsb2NhdG9y X2hhbmRsZV9raW5kKSA6OiBteV9hbGxvYworISRvbXAgYWxsb2NhdGUgKHFxKSBhbGxvY2F0 b3IoMy4wKSAgISB7IGRnLWVycm9yICJQcmVkZWZpbmVkIGFsbG9jYXRvciByZXF1aXJlZCBp biBBTExPQ0FUT1IgY2xhdXNlIGF0IC4xLiBhcyB0aGUgbGlzdCBpdGVtICdxcScgYXQgLjIu IGhhcyB0aGUgU0FWRSBhdHRyaWJ1dGUiIH0KKyEgeyBkZy1lcnJvciAiU29ycnksIGRlY2xh cmF0aXZlICEuT01QIEFMTE9DQVRFIGF0IC4xLiBub3QgeWV0IHN1cHBvcnRlZCIgIiIgeyB0 YXJnZXQgKi0qLSogfSAuLTEgfQorISRvbXAgYWxsb2NhdGUgKHJyKSBhbGxvY2F0b3IoM18y KSAgISB7IGRnLWVycm9yICJQcmVkZWZpbmVkIGFsbG9jYXRvciByZXF1aXJlZCBpbiBBTExP Q0FUT1IgY2xhdXNlIGF0IC4xLiBhcyB0aGUgbGlzdCBpdGVtICdycicgYXQgLjIuIGhhcyB0 aGUgU0FWRSBhdHRyaWJ1dGUiIH0KKyEkb21wIGFsbG9jYXRlIChzcykgYWxsb2NhdG9yKFtv bXBfcHRlYW1fbWVtX2FsbG9jXSkgICEgeyBkZy1lcnJvciAiUHJlZGVmaW5lZCBhbGxvY2F0 b3IgcmVxdWlyZWQgaW4gQUxMT0NBVE9SIGNsYXVzZSBhdCAuMS4gYXMgdGhlIGxpc3QgaXRl bSAnc3MnIGF0IC4yLiBoYXMgdGhlIFNBVkUgYXR0cmlidXRlIiB9CishJG9tcCBhbGxvY2F0 ZSAodHQpIGFsbG9jYXRvcihteV9hbGxvYykgICEgeyBkZy1lcnJvciAiUHJlZGVmaW5lZCBh bGxvY2F0b3IgcmVxdWlyZWQgaW4gQUxMT0NBVE9SIGNsYXVzZSBhdCAuMS4gYXMgdGhlIGxp c3QgaXRlbSAndHQnIGF0IC4yLiBoYXMgdGhlIFNBVkUgYXR0cmlidXRlIiB9CitlbmQKKwor bW9kdWxlIGZpdmVfTW9kdWxlCisgIHVzZSBteV9vbXBfbGliCisgIGltcGxpY2l0IG5vbmUK KyAgaW50ZWdlciwgc2F2ZSA6OiBxcSwgcnIsIHNzLCB0dCwgdXUsIHZ2LG4KKyAgaW50ZWdl cihvbXBfYWxsb2NhdG9yX2hhbmRsZV9raW5kKSA6OiBteV9hbGxvYworISRvbXAgYWxsb2Nh dGUgKHFxKSBhbGxvY2F0b3IoMy4wKSAgISB7IGRnLWVycm9yICJQcmVkZWZpbmVkIGFsbG9j YXRvciByZXF1aXJlZCBpbiBBTExPQ0FUT1IgY2xhdXNlIGF0IC4xLiBhcyB0aGUgbGlzdCBp dGVtICdxcScgYXQgLjIuIGhhcyB0aGUgU0FWRSBhdHRyaWJ1dGUiIH0KKyEgeyBkZy1lcnJv ciAiU29ycnksIGRlY2xhcmF0aXZlICEuT01QIEFMTE9DQVRFIGF0IC4xLiBub3QgeWV0IHN1 cHBvcnRlZCIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfQorISRvbXAgYWxsb2NhdGUgKHJy KSBhbGxvY2F0b3IoM18yKSAgISB7IGRnLWVycm9yICJQcmVkZWZpbmVkIGFsbG9jYXRvciBy ZXF1aXJlZCBpbiBBTExPQ0FUT1IgY2xhdXNlIGF0IC4xLiBhcyB0aGUgbGlzdCBpdGVtICdy cicgYXQgLjIuIGhhcyB0aGUgU0FWRSBhdHRyaWJ1dGUiIH0KKyEkb21wIGFsbG9jYXRlIChz cykgYWxsb2NhdG9yKFtvbXBfcHRlYW1fbWVtX2FsbG9jXSkgICEgeyBkZy1lcnJvciAiUHJl ZGVmaW5lZCBhbGxvY2F0b3IgcmVxdWlyZWQgaW4gQUxMT0NBVE9SIGNsYXVzZSBhdCAuMS4g YXMgdGhlIGxpc3QgaXRlbSAnc3MnIGF0IC4yLiBoYXMgdGhlIFNBVkUgYXR0cmlidXRlIiB9 CishJG9tcCBhbGxvY2F0ZSAodHQpIGFsbG9jYXRvcihteV9hbGxvYykgICEgeyBkZy1lcnJv ciAiUHJlZGVmaW5lZCBhbGxvY2F0b3IgcmVxdWlyZWQgaW4gQUxMT0NBVE9SIGNsYXVzZSBh dCAuMS4gYXMgdGhlIGxpc3QgaXRlbSAndHQnIGF0IC4yLiBoYXMgdGhlIFNBVkUgYXR0cmli dXRlIiB9CitlbmQgbW9kdWxlCisKK3Byb2dyYW0gZml2ZV9wcm9ncmFtCisgIHVzZSBteV9v bXBfbGliCisgIGltcGxpY2l0IG5vbmUKKyAgaW50ZWdlciwgc2F2ZSA6OiBxcSwgcnIsIHNz LCB0dCwgdXUsIHZ2LG4KKyAgaW50ZWdlcihvbXBfYWxsb2NhdG9yX2hhbmRsZV9raW5kKSA6 OiBteV9hbGxvYworISRvbXAgYWxsb2NhdGUgKHFxKSBhbGxvY2F0b3IoMy4wKSAgISB7IGRn LWVycm9yICJQcmVkZWZpbmVkIGFsbG9jYXRvciByZXF1aXJlZCBpbiBBTExPQ0FUT1IgY2xh dXNlIGF0IC4xLiBhcyB0aGUgbGlzdCBpdGVtICdxcScgYXQgLjIuIGhhcyB0aGUgU0FWRSBh dHRyaWJ1dGUiIH0KKyEgeyBkZy1lcnJvciAiU29ycnksIGRlY2xhcmF0aXZlICEuT01QIEFM TE9DQVRFIGF0IC4xLiBub3QgeWV0IHN1cHBvcnRlZCIgIiIgeyB0YXJnZXQgKi0qLSogfSAu LTEgfQorISRvbXAgYWxsb2NhdGUgKHJyKSBhbGxvY2F0b3IoM18yKSAgISB7IGRnLWVycm9y ICJQcmVkZWZpbmVkIGFsbG9jYXRvciByZXF1aXJlZCBpbiBBTExPQ0FUT1IgY2xhdXNlIGF0 IC4xLiBhcyB0aGUgbGlzdCBpdGVtICdycicgYXQgLjIuIGhhcyB0aGUgU0FWRSBhdHRyaWJ1 dGUiIH0KKyEkb21wIGFsbG9jYXRlIChzcykgYWxsb2NhdG9yKFtvbXBfcHRlYW1fbWVtX2Fs bG9jXSkgICEgeyBkZy1lcnJvciAiUHJlZGVmaW5lZCBhbGxvY2F0b3IgcmVxdWlyZWQgaW4g QUxMT0NBVE9SIGNsYXVzZSBhdCAuMS4gYXMgdGhlIGxpc3QgaXRlbSAnc3MnIGF0IC4yLiBo YXMgdGhlIFNBVkUgYXR0cmlidXRlIiB9CishJG9tcCBhbGxvY2F0ZSAodHQpIGFsbG9jYXRv cihteV9hbGxvYykgICEgeyBkZy1lcnJvciAiUHJlZGVmaW5lZCBhbGxvY2F0b3IgcmVxdWly ZWQgaW4gQUxMT0NBVE9SIGNsYXVzZSBhdCAuMS4gYXMgdGhlIGxpc3QgaXRlbSAndHQnIGF0 IC4yLiBoYXMgdGhlIFNBVkUgYXR0cmlidXRlIiB9CitlbmQgcHJvZ3JhbQorCisKKworc3Vi cm91dGluZSBzaXgobixteV9hbGxvYykKKyAgdXNlIG15X29tcF9saWIKKyAgaW1wbGljaXQg bm9uZQorICBpbnRlZ2VyIDo6IHFxLCByciwgc3MsIHR0LCB1dSwgdnYsbgorICBjb21tb24g L2NvbTZxcS8gcXEKKyAgY29tbW9uIC9jb202cnIvIHJyCisgIGNvbW1vbiAvY29tNnNzLyBz cworICBjb21tb24gL2NvbTZ0dC8gdHQKKyAgaW50ZWdlcihvbXBfYWxsb2NhdG9yX2hhbmRs ZV9raW5kKSA6OiBteV9hbGxvYworCishJG9tcCBhbGxvY2F0ZSAoL2NvbTZxcS8pIGFsbG9j YXRvcigzLjApICAhIHsgZGctZXJyb3IgIlByZWRlZmluZWQgYWxsb2NhdG9yIHJlcXVpcmVk IGluIEFMTE9DQVRPUiBjbGF1c2UgYXQgLjEuIGFzIHRoZSBsaXN0IGl0ZW0gJy9jb202cXEv JyBhdCAuMi4gaGFzIHRoZSBTQVZFIGF0dHJpYnV0ZSIgfQorISB7IGRnLWVycm9yICJTb3Jy eSwgZGVjbGFyYXRpdmUgIS5PTVAgQUxMT0NBVEUgYXQgLjEuIG5vdCB5ZXQgc3VwcG9ydGVk IiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9CishJG9tcCBhbGxvY2F0ZSAoL2NvbTZyci8p IGFsbG9jYXRvcigzXzIpICAhIHsgZGctZXJyb3IgIlByZWRlZmluZWQgYWxsb2NhdG9yIHJl cXVpcmVkIGluIEFMTE9DQVRPUiBjbGF1c2UgYXQgLjEuIGFzIHRoZSBsaXN0IGl0ZW0gJy9j b202cnIvJyBhdCAuMi4gaGFzIHRoZSBTQVZFIGF0dHJpYnV0ZSIgfQorISRvbXAgYWxsb2Nh dGUgKC9jb202c3MvKSBhbGxvY2F0b3IoW29tcF9wdGVhbV9tZW1fYWxsb2NdKSAgISB7IGRn LWVycm9yICJQcmVkZWZpbmVkIGFsbG9jYXRvciByZXF1aXJlZCBpbiBBTExPQ0FUT1IgY2xh dXNlIGF0IC4xLiBhcyB0aGUgbGlzdCBpdGVtICcvY29tNnNzLycgYXQgLjIuIGhhcyB0aGUg U0FWRSBhdHRyaWJ1dGUiIH0KKyEkb21wIGFsbG9jYXRlICgvY29tNnR0LykgYWxsb2NhdG9y KG15X2FsbG9jKSAgISB7IGRnLWVycm9yICJQcmVkZWZpbmVkIGFsbG9jYXRvciByZXF1aXJl ZCBpbiBBTExPQ0FUT1IgY2xhdXNlIGF0IC4xLiBhcyB0aGUgbGlzdCBpdGVtICcvY29tNnR0 LycgYXQgLjIuIGhhcyB0aGUgU0FWRSBhdHRyaWJ1dGUiIH0KK2VuZAorCisKK3N1YnJvdXRp bmUgdHdvKCkKKyAgdXNlIG15X29tcF9saWIKKyAgaW1wbGljaXQgbm9uZQorICBpbnRlZ2Vy LGFsbG9jYXRhYmxlIDo6IHFxLCByciwgc3MsIHR0LCB1dSwgdnYsbgorICBpbnRlZ2VyKG9t cF9hbGxvY2F0b3JfaGFuZGxlX2tpbmQpIDo6IG15X2FsbG9jCisKKyAgY2FsbCBmb28oKQor ISRvbXAgYWxsb2NhdGUgKHFxKSBhbGxvY2F0b3IoMy4wKSAgISB7IGRnLWVycm9yICJFeHBl Y3RlZCBpbnRlZ2VyIGV4cHJlc3Npb24gb2YgdGhlICdvbXBfYWxsb2NhdG9yX2hhbmRsZV9r aW5kJyBraW5kIiB9CithbGxvY2F0ZShxcSkKKyEkb21wIGFsbG9jYXRlIChycikgYWxsb2Nh dG9yKDNfMikgICEgeyBkZy1lcnJvciAiRXhwZWN0ZWQgaW50ZWdlciBleHByZXNzaW9uIG9m IHRoZSAnb21wX2FsbG9jYXRvcl9oYW5kbGVfa2luZCcga2luZCIgfQorYWxsb2NhdGUocnIp CishJG9tcCBhbGxvY2F0ZSAoc3MpIGFsbG9jYXRvcihbb21wX3B0ZWFtX21lbV9hbGxvY10p ICAhIHsgZGctZXJyb3IgIkV4cGVjdGVkIGludGVnZXIgZXhwcmVzc2lvbiBvZiB0aGUgJ29t cF9hbGxvY2F0b3JfaGFuZGxlX2tpbmQnIGtpbmQiIH0KK2FsbG9jYXRlKHNzKQorISRvbXAg YWxsb2NhdGUgKHR0KSBhbGxvY2F0b3IobXlfYWxsb2MpICAhIE9LCithbGxvY2F0ZSh0dCkK K2VuZAorCitzdWJyb3V0aW5lIHR3b19wdHIoKQorICB1c2UgbXlfb21wX2xpYgorICBpbXBs aWNpdCBub25lCisgIGludGVnZXIscG9pbnRlciA6OiBxcSwgcnIsIHNzLCB0dCwgdXUsIHZ2 LG4KKyAgaW50ZWdlcihvbXBfYWxsb2NhdG9yX2hhbmRsZV9raW5kKSA6OiBteV9hbGxvYwor CisgIGNhbGwgZm9vKCkKKyEkb21wIGFsbG9jYXRlIChxcSkgYWxpZ24oMytuKSAhIHsgZGct ZXJyb3IgIkFMSUdOIHJlcXVpcmVzIGEgc2NhbGFyIHBvc2l0aXZlIGNvbnN0YW50IGludGVn ZXIgYWxpZ25tZW50IGV4cHJlc3Npb24gYXQgLjEuIiB9CithbGxvY2F0ZShxcSkKKyEkb21w IGFsbG9jYXRlIChycikgYWxpZ24oWzRdKSAhIHsgZGctZXJyb3IgIkFMSUdOIHJlcXVpcmVz IGEgc2NhbGFyIHBvc2l0aXZlIGNvbnN0YW50IGludGVnZXIgYWxpZ25tZW50IGV4cHJlc3Np b24gYXQgLjEuIiB9CithbGxvY2F0ZShycikKKyEkb21wIGFsbG9jYXRlIChzcykgYWxpZ24o WzRdKSAhIHsgZGctZXJyb3IgIkFMSUdOIHJlcXVpcmVzIGEgc2NhbGFyIHBvc2l0aXZlIGNv bnN0YW50IGludGVnZXIgYWxpZ25tZW50IGV4cHJlc3Npb24gYXQgLjEuIiB9CithbGxvY2F0 ZShzcykKKyEkb21wIGFsbG9jYXRlICh0dCkgYWxpZ24oMzIuMCkgISB7IGRnLWVycm9yICJB TElHTiByZXF1aXJlcyBhIHNjYWxhciBwb3NpdGl2ZSBjb25zdGFudCBpbnRlZ2VyIGFsaWdu bWVudCBleHByZXNzaW9uIGF0IC4xLiIgfQorYWxsb2NhdGUodHQpCisKK2VuZAorCitzdWJy b3V0aW5lIG5leHQoKQorICB1c2UgbXlfb21wX2xpYgorICBpbXBsaWNpdCBub25lCisgIGlu dGVnZXIsYWxsb2NhdGFibGUgOjogcXEsIHJyLCBzcywgdHQsIHV1LCB2dixuCisgIGludGVn ZXIob21wX2FsbG9jYXRvcl9oYW5kbGVfa2luZCkgOjogbXlfYWxsb2MKKworICAhJG9tcCBh bGxvY2F0ZShxcSkgICEgeyBkZy1lcnJvciAiJyEuT01QIEFMTE9DQVRFJyBkaXJlY3RpdmUg YXQgLjEuIGFzc29jaWF0ZWQgd2l0aCBhbiBBTExPQ0FURSBzdG10IG11c3QgYmUgcHJlY2Vk ZWQgYnkgYW4gZXhlY3V0YWJsZSBzdGF0ZW1lbnQgb3IgT3Blbk1QIGNvbnN0cnVjdDsgbm90 ZSB0aGUgdmFyaWFibGVzIGluIHRoZSBsaXN0IGFsbCBoYXZlIHRoZSBhbGxvY2F0YWJsZSBv ciBwb2ludGVyIGF0dHJpYnV0ZSIgfQorICAgYWxsb2NhdGUocXEscnIpCisKKyAgISRvbXAg YWxsb2NhdGUodXUsdHQpCisgICEkb21wIGFsbG9jYXRlKHR0KSAgISB7IGRnLXdhcm5pbmcg Iid0dCcgYXBwZWFycyBtb3JlIHRoYW4gb25jZSBpbiAnYWxsb2NhdGUiIH0KKyAgIGFsbG9j YXRlKHV1LHR0KQorCisgICEkb21wIGFsbG9jYXRlKHV1LHZ2KSAhIHsgZGctZXJyb3IgIid1 dScgc3BlY2lmaWVkIGluICdhbGxvY2F0ZScgYXQgLjEuIGJ1dCBub3QgaW4gdGhlIGFzc29j aWF0ZWQgQUxMT0NBVEUgc3RhdGVtZW50IiB9CisgICBhbGxvY2F0ZSh2dikKK2VuZApkaWZm IC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL2FsbG9jYXRvcnMtMS5m OTAgYi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dvbXAvYWxsb2NhdG9ycy0xLmY5MApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYjM5ZjZkMjcyYzEKLS0t IC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dvbXAvYWxsb2Nh dG9ycy0xLmY5MApAQCAtMCwwICsxLDI4IEBACitpbXBsaWNpdCBub25lCitpbnRlZ2VyLCBh bGxvY2F0YWJsZSA6OiBhLCBiCitpbnRlZ2VyIDo6IHEKK2ludGVnZXIgOjogYXJyKDIpCisK KyEkb21wIGFsbG9jYXRvcnMgYWxsb2NhdGUoYWxpZ24oNjQpOiBhKQorYmxvY2sgICEgeyBk Zy1lcnJvciAiZXhwZWN0ZWQgQUxMT0NBVEUgc3RhdGVtZW50IGFmdGVyICEuT01QIEFMTE9D QVRPUlMiIH0KK2VuZCBibG9jayAhIHsgZGctZXJyb3IgIkV4cGVjdGluZyBFTkQgUFJPR1JB TSBzdGF0ZW1lbnQiIH0KKworCishJG9tcCBhbGxvY2F0b3JzIGFsbG9jYXRlKGFsaWduKDY0 KTogYSkKKyAgYWxsb2NhdGUoYSwgYikgICEgT0sKKyEkb21wIGVuZCBhbGxvY2F0b3JzCisK KyEkb21wIGFsbG9jYXRvcnMgYWxsb2NhdGUoYWxpZ24oMTI4KTogYikKKyAgYWxsb2NhdGUo YSwgYikgICEgT0sgKGFzc3VtaW5nIG5vdCBhbGxvY2F0ZWQpCisKKworISRvbXAgYWxsb2Nh dG9ycyBhbGxvY2F0ZShhbGlnbig2NCk6IGEpCisgIGFsbG9jYXRlKGEsIGIsIHN0YXQ9YXJy KSAgISB7IGRnLWVycm9yICJTdGF0LXZhcmlhYmxlIGF0IC4xLiBtdXN0IGJlIGEgc2NhbGFy IElOVEVHRVIgdmFyaWFibGUiIH0KKyEkb21wIGVuZCBhbGxvY2F0b3JzCisKKworISRvbXAg YWxsb2NhdG9ycyBhbGxvY2F0ZShhbGlnbig2NCk6IGEpCisgIGFsbG9jYXRlKHEpICAhIHsg ZGctZXJyb3IgImlzIG5laXRoZXIgYSBkYXRhIHBvaW50ZXIgbm9yIGFuIGFsbG9jYXRhYmxl IHZhcmlhYmxlIiB9CishJG9tcCBlbmQgYWxsb2NhdG9ycyAhIHsgZGctZXJyb3IgIlVuZXhw ZWN0ZWQgIS5PTVAgRU5EIEFMTE9DQVRPUlMiIH0KKworZW5kCmRpZmYgLS1naXQgYS9nY2Mv dGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dvbXAvYWxsb2NhdG9ycy0yLmY5MCBiL2djYy90ZXN0 c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9hbGxvY2F0b3JzLTIuZjkwCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi42ZmI4MDg3OWVmNwotLS0gL2Rldi9udWxsCisr KyBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9hbGxvY2F0b3JzLTIuZjkwCkBA IC0wLDAgKzEsMjIgQEAKK2ltcGxpY2l0IG5vbmUKK2ludGVnZXIsIGFsbG9jYXRhYmxlIDo6 IGEsIGIKK2ludGVnZXIgOjogcQoraW50ZWdlciA6OiBhcnIoMikKKworISRvbXAgYWxsb2Nh dG9ycyBhbGxvY2F0ZShhbGlnbig2NCk6IGEpCisgIGFsbG9jYXRlKGEsIGIpICAhIE9LCish JG9tcCBlbmQgYWxsb2NhdG9ycworCishJG9tcCBhbGxvY2F0b3JzIGFsbG9jYXRlKGFsaWdu KDEyOCk6IGIpCisgIGFsbG9jYXRlKGEsIGIpICAhIE9LIChhc3N1bWluZyBub3QgYWxsb2Nh dGVkKQorCisKKyEkb21wIGFsbG9jYXRvcnMgYWxsb2NhdGUoYWxpZ24oNjIuMCk6IGEpICEg eyBkZy1lcnJvciAiYSBzY2FsYXIgcG9zaXRpdmUgY29uc3RhbnQgaW50ZWdlciBhbGlnbm1l bnQgZXhwcmVzc2lvbiIgfQorIGFsbG9jYXRlKGEpCisKKworISRvbXAgYWxsb2NhdG9ycyBh bGxvY2F0ZShhbGlnbig2NCk6IGEsIGIpICAhIHsgZGctZXJyb3IgIidiJyBzcGVjaWZpZWQg aW4gJ2FsbG9jYXRlJyBhdCBcXCgxXFwpIGJ1dCBub3QgaW4gdGhlIGFzc29jaWF0ZWQgQUxM T0NBVEUgc3RhdGVtZW50IiB9CisgYWxsb2NhdGUoYSkKKyEkb21wIGVuZCBhbGxvY2F0b3Jz CisKK2VuZApkaWZmIC0tZ2l0IGEvbGliZ29tcC90ZXN0c3VpdGUvbGliZ29tcC5mb3J0cmFu L2FsbG9jYXRlLTMuZjkwIGIvbGliZ29tcC90ZXN0c3VpdGUvbGliZ29tcC5mb3J0cmFuL2Fs bG9jYXRlLTMuZjkwCmluZGV4IGEzOTgxOTE2NGQ2Li4yZTJiYzMzYTcyNiAxMDA2NDQKLS0t IGEvbGliZ29tcC90ZXN0c3VpdGUvbGliZ29tcC5mb3J0cmFuL2FsbG9jYXRlLTMuZjkwCisr KyBiL2xpYmdvbXAvdGVzdHN1aXRlL2xpYmdvbXAuZm9ydHJhbi9hbGxvY2F0ZS0zLmY5MApA QCAtMjMsNiArMjMsNiBAQCBpbnRlZ2VyIDo6IHEsIHgseSx6CiAhIHsgZGctZXJyb3IgIk9i amVjdCAnb21wX2hpZ2hfYndfbWVtX2FsbG9jJyBpcyBub3QgYSB2YXJpYWJsZSIgIiIgeyB0 YXJnZXQgKi0qLSogfSAuLTEgfQogISRvbXAgZW5kIHBhcmFsbGVsCiAKLSEkb21wIHBhcmFs bGVsIGFsbG9jYXRlKCBhbGlnbihxKSA6IHgpIGZpcnN0cHJpdmF0ZSh4KSAhIHsgZGctZXJy b3IgIjMxOkFMSUdOIG1vZGlmaWVyIHJlcXVpcmVzIGEgc2NhbGFyIHBvc2l0aXZlIGNvbnN0 YW50IGludGVnZXIgYWxpZ25tZW50IGV4cHJlc3Npb24gYXQiIH0KKyEkb21wIHBhcmFsbGVs IGFsbG9jYXRlKCBhbGlnbihxKSA6IHgpIGZpcnN0cHJpdmF0ZSh4KSAhIHsgZGctZXJyb3Ig IjMxOkFMSUdOIHJlcXVpcmVzIGEgc2NhbGFyIHBvc2l0aXZlIGNvbnN0YW50IGludGVnZXIg YWxpZ25tZW50IGV4cHJlc3Npb24gYXQiIH0KICEkb21wIGVuZCBwYXJhbGxlbAogZW5kCg== --------------L6Ik9jUOU5eEE1rFUCRHbWVU--