Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nWhAE-0001sT-9e for pgsql-hackers@arkaria.postgresql.org; Tue, 22 Mar 2022 16:15:19 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1nWhAC-0005Xq-Uq for pgsql-hackers@arkaria.postgresql.org; Tue, 22 Mar 2022 16:15:16 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nWhAC-0005Xh-CW for pgsql-hackers@lists.postgresql.org; Tue, 22 Mar 2022 16:15:16 +0000 Received: from mail.postgrespro.ru ([93.174.131.139]) by magus.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1nWhA8-0005Oc-0b for pgsql-hackers@postgresql.org; Tue, 22 Mar 2022 16:15:16 +0000 Received: from mail.postgrespro.ru (cyclops.postgrespro.ru [93.174.131.138]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) by mail.postgrespro.ru (Postfix) with ESMTPSA id 349E721CA622; Tue, 22 Mar 2022 19:15:10 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mail; t=1647965710; bh=DeptDrl6tkL2MLhnje1j67XLuDh8XDYpHmcjR4uQInE=; h=Date:From:To:Cc:Subject:In-Reply-To:References; b=aX8nGnNSM3gqm8seRGAHbskCu9gAXCvnfNolf56TLMh3tiQkvUzeRqxR3EMOEnKQD qS1zcHFeOeSLqnrRX/gHpFc6m8v5Qt4aCtrxBxpDJWq9YH6AtaSLg1YOudTyIh+LT+ 66QTBNkRePyDlHpCLiQlYYI6Ude6722UB118r8KI= MIME-Version: 1.0 Date: Tue, 22 Mar 2022 19:15:10 +0300 From: Alexander Pyhalov To: Tomas Vondra Cc: Andres Freund , Zhihong Yu , Julien Rouhaud , Daniel Gustafsson , Ilya Gladyshev , PostgreSQL-development Subject: Re: Partial aggregates pushdown In-Reply-To: <57db913f-02c6-66af-2928-513e2b1c65f7@enterprisedb.com> References: <05d98f67a4f44b31d90dfb977db4ad71@postgrespro.ru> <317f8de58ce9889e056f2944e200a44d@postgrespro.ru> <2ed9ad03bc17cfb86da900d541a270b0@postgrespro.ru> <20220114121653.mjzqelwgnzwqhkoa@jrouhaud> <0cc653ad90dbfc5ca0fd8bb1ca57e1a7@postgrespro.ru> <2ad047732a8b8a9aaaad06fef59fb283@postgrespro.ru> <925e2d3f11283d8b2707fc5d827fc3e9@postgrespro.ru> <20220322004914.opkwl3beedl4uhks@alap3.anarazel.de> <57db913f-02c6-66af-2928-513e2b1c65f7@enterprisedb.com> User-Agent: Roundcube Webmail/1.4.11 Message-ID: <8dc86e502fbd9d04da0dc6cdd4156f84@postgrespro.ru> X-Sender: a.pyhalov@postgrespro.ru Content-Type: multipart/mixed; boundary="=_bce734be7c0f0b48b6144bd44518339b" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=_bce734be7c0f0b48b6144bd44518339b Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8; format=flowed Tomas Vondra писал 2022-03-22 15:28: > On 3/22/22 01:49, Andres Freund wrote: >> On 2022-01-17 15:27:53 +0300, Alexander Pyhalov wrote: >>> Alexander Pyhalov писал 2022-01-17 15:26: >>>> Updated patch. >>> >>> Sorry, missed attachment. >> >> Needs another update: http://cfbot.cputube.org/patch_37_3369.log >> >> Marked as waiting on author. >> > > TBH I'm still not convinced this is the right approach. I've voiced > this > opinion before, but to reiterate the main arguments: > > 1) It's not clear to me how could this get extended to aggregates with > more complex aggregate states, to support e.g. avg() and similar fairly > common aggregates. Hi. Yes, I'm also not sure how to proceed with aggregates with complex state. Likely it needs separate function to export their state, but then we should somehow ensure that this function exists and our 'importer' can handle its result. Note that for now we have no mechanics in postgres_fdw to find out remote server version on planning stage. > 2) I'm not sure relying on aggpartialpushdownsafe without any version > checks etc. is sufficient. I mean, how would we know the remote node > has > the same idea of representing the aggregate state. I wonder how this > aligns with assumptions we do e.g. for functions etc. It seems to be not a problem for me, as for now we don't care about remote node internal aggregate state representation. We currently get just aggregate result from remote node. For aggregates with 'internal' stype we call converter locally, and it converts external result from aggregate return type to local node internal representation. > > Aside from that, there's a couple review comments: > > 1) should not remove the comment in foreign_expr_walker Fixed. > > 2) comment in deparseAggref is obsolete/inaccurate Fixed. > > 3) comment for partial_agg_ok should probably explain when we consider > aggregate OK to be pushed down Expanded comment. > > 4) I'm not sure why get_rcvd_attinmeta comment talks about "return type > bytea" and "real input type". Expanded comment. Tupdesc can be retrieved from node->ss.ss_ScanTupleSlot, and so we expect to see bytea (as should be produced by partial aggregation). But when we scan data, we get aggregate output type (which matches converter input type), so attinmeta should be fixed. If we deal with aggregate which doesn't have converter, partial_agg_ok() ensures that agg->aggfnoid return type matches agg->aggtranstype. > 5) Talking about "partial" aggregates is a bit confusing, because that > suggests this is related to actual "partial aggregates". But it's not. How should we call them? It's about pushing "Partial count()" or "Partial sum()" to the remote server, why it's not related to partial aggregates? Do you mean that it's not about parallel aggregate processing? > 6) Can add_foreign_grouping_paths do without the new 'partial' > parameter? Clearly, it can be deduced from extra->patype, no? Fixed this. > > 7) There's no docs for PARTIALCONVERTERFUNC / PARTIAL_PUSHDOWN_SAFE in > CREATE AGGREGATE sgml docs. Added documentation. I'd appreciate advice on how it should be extended. > > 8) I don't think "serialize" in the converter functions is the right > term, considering those functions are not "serializing" anything. If > anything, it's the remote node that is serializing the agg state and > the > local not is deserializing it. Or maybe I just misunderstand where are > the converter functions executed? Converter function transforms aggregate result to serialized internal representation, which is expected from partial aggregate. I mean, it converts aggregate result type to internal representation and then efficiently executes serialization code (i.e. converter(x) == serialize(to_internal(x))). -- Best regards, Alexander Pyhalov, Postgres Professional --=_bce734be7c0f0b48b6144bd44518339b Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=0001-Partial-aggregates-push-down-v10.patch Content-Disposition: attachment; filename=0001-Partial-aggregates-push-down-v10.patch; size=61880 RnJvbSA3YWQ0ZWFjZjAxN2E0ZmQzNzkzZjA5NDllZjQzY2NjODI5MmJmM2Y2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgUHloYWxvdiA8YS5weWhhbG92QHBvc3RncmVz cHJvLnJ1PgpEYXRlOiBUaHUsIDE0IE9jdCAyMDIxIDE3OjMwOjM0ICswMzAwClN1YmplY3Q6IFtQ QVRDSF0gUGFydGlhbCBhZ2dyZWdhdGVzIHB1c2ggZG93bgoKLS0tCiBjb250cmliL3Bvc3RncmVz X2Zkdy9kZXBhcnNlLmMgICAgICAgICAgICAgICAgfCAgNjMgKysrKystCiAuLi4vcG9zdGdyZXNf ZmR3L2V4cGVjdGVkL3Bvc3RncmVzX2Zkdy5vdXQgICAgfCAxODUgKysrKysrKysrKysrKysrKy0K IGNvbnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy5jICAgICAgICAgICB8IDE4NyArKysr KysrKysrKysrKysrKy0KIGNvbnRyaWIvcG9zdGdyZXNfZmR3L3NxbC9wb3N0Z3Jlc19mZHcuc3Fs ICAgICB8ICAyNyArKy0KIGRvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX2FnZ3JlZ2F0ZS5zZ21sICAg ICAgICB8ICAyNyArKysKIHNyYy9iYWNrZW5kL2NhdGFsb2cvcGdfYWdncmVnYXRlLmMgICAgICAg ICAgICB8ICAyOCArKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2FnZ3JlZ2F0ZWNtZHMuYyAgICAg ICAgICB8ICAyMyArKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9udW1lcmljLmMgICAgICAgICAg ICAgICB8ICA5NiArKysrKysrKysKIHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgICAgICAgICAg ICAgICAgICAgICB8ICAyMCArLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19hZ2dyZWdhdGUuZGF0 ICAgICAgICAgIHwgMTEwICsrKysrKy0tLS0tCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2FnZ3Jl Z2F0ZS5oICAgICAgICAgICAgfCAgMTAgKy0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5k YXQgICAgICAgICAgICAgICB8ICAgNiArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL29pZGpv aW5zLm91dCAgICAgICAgfCAgIDEgKwogMTMgZmlsZXMgY2hhbmdlZCwgNzAyIGluc2VydGlvbnMo KyksIDgxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2Rl cGFyc2UuYyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2RlcGFyc2UuYwppbmRleCBiZjEyZWFjMDI4 OC4uMjcyZTIzOTFkN2YgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2RlcGFyc2Uu YworKysgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9kZXBhcnNlLmMKQEAgLTE5Nyw2ICsxOTcsNyBA QCBzdGF0aWMgYm9vbCBpc19zdWJxdWVyeV92YXIoVmFyICpub2RlLCBSZWxPcHRJbmZvICpmb3Jl aWducmVsLAogc3RhdGljIHZvaWQgZ2V0X3JlbGF0aW9uX2NvbHVtbl9hbGlhc19pZHMoVmFyICpu b2RlLCBSZWxPcHRJbmZvICpmb3JlaWducmVsLAogCQkJCQkJCQkJCSAgaW50ICpyZWxubywgaW50 ICpjb2xubyk7CiAKK3N0YXRpYyBib29sIHBhcnRpYWxfYWdnX29rKEFnZ3JlZiAqYWdnKTsKIAog LyoKICAqIEV4YW1pbmUgZWFjaCBxdWFsIGNsYXVzZSBpbiBpbnB1dF9jb25kcywgYW5kIGNsYXNz aWZ5IHRoZW0gaW50byB0d28gZ3JvdXBzLApAQCAtODMzLDcgKzgzNCwxMCBAQCBmb3JlaWduX2V4 cHJfd2Fsa2VyKE5vZGUgKm5vZGUsCiAJCQkJCXJldHVybiBmYWxzZTsKIAogCQkJCS8qIE9ubHkg bm9uLXNwbGl0IGFnZ3JlZ2F0ZXMgYXJlIHB1c2hhYmxlLiAqLwotCQkJCWlmIChhZ2ctPmFnZ3Nw bGl0ICE9IEFHR1NQTElUX1NJTVBMRSkKKwkJCQlpZiAoKGFnZy0+YWdnc3BsaXQgIT0gQUdHU1BM SVRfU0lNUExFKSAmJiAoYWdnLT5hZ2dzcGxpdCAhPSBBR0dTUExJVF9JTklUSUFMX1NFUklBTCkp CisJCQkJCXJldHVybiBmYWxzZTsKKworCQkJCWlmIChhZ2ctPmFnZ3NwbGl0ID09IEFHR1NQTElU X0lOSVRJQUxfU0VSSUFMICYmICFwYXJ0aWFsX2FnZ19vayhhZ2cpKQogCQkJCQlyZXR1cm4gZmFs c2U7CiAKIAkJCQkvKiBBcyB1c3VhbCwgaXQgbXVzdCBiZSBzaGlwcGFibGUuICovCkBAIC0zMzQ4 LDggKzMzNTIsOCBAQCBkZXBhcnNlQWdncmVmKEFnZ3JlZiAqbm9kZSwgZGVwYXJzZV9leHByX2N4 dCAqY29udGV4dCkKIAlTdHJpbmdJbmZvCWJ1ZiA9IGNvbnRleHQtPmJ1ZjsKIAlib29sCQl1c2Vf dmFyaWFkaWM7CiAKLQkvKiBPbmx5IGJhc2ljLCBub24tc3BsaXQgYWdncmVnYXRpb24gYWNjZXB0 ZWQuICovCi0JQXNzZXJ0KG5vZGUtPmFnZ3NwbGl0ID09IEFHR1NQTElUX1NJTVBMRSk7CisJLyog T25seSBub24tc3BsaXQgYWdncmVnYXRpb24gYWNjZXB0ZWQuICovCisJQXNzZXJ0KG5vZGUtPmFn Z3NwbGl0ID09IEFHR1NQTElUX1NJTVBMRSB8fCBub2RlLT5hZ2dzcGxpdCA9PSBBR0dTUExJVF9J TklUSUFMX1NFUklBTCk7CiAKIAkvKiBDaGVjayBpZiBuZWVkIHRvIHByaW50IFZBUklBRElDIChj Zi4gcnVsZXV0aWxzLmMpICovCiAJdXNlX3ZhcmlhZGljID0gbm9kZS0+YWdndmFyaWFkaWM7CkBA IC0zODE5LDMgKzM4MjMsNTYgQEAgZ2V0X3JlbGF0aW9uX2NvbHVtbl9hbGlhc19pZHMoVmFyICpu b2RlLCBSZWxPcHRJbmZvICpmb3JlaWducmVsLAogCS8qIFNob3VsZG4ndCBnZXQgaGVyZSAqLwog CWVsb2coRVJST1IsICJ1bmV4cGVjdGVkIGV4cHJlc3Npb24gaW4gc3VicXVlcnkgb3V0cHV0Iik7 CiB9CisKKy8qCisgKiBDaGVjayB0aGF0IHBhcnRpYWwgYWdncmVnYXRlIGFnZyBpcyBmaW5lIHRv IHB1c2ggZG93bgorICoKKyAqIENoZWNrIHRoYXQgaXQncyBBR0dLSU5EX05PUk1BTCBhZ2dyZWdh dGUgd2l0aG91dAorICogZGlzdGluY3Qgb3Igb3JkZXIgYnkgY2xhdXNlcywgd2hpY2ggaGFzIGFn Z3BhcnRpYWxwdXNoZG93bnNhZmUKKyAqIHByb3BlcnR5LiBJZiBhZ2d0cmFuc3R5cGUgaXMgaW50 ZXJuYWwsIGFnZ3BhcnRpYWxjb252ZXJ0ZXJmbgorICogc2hvdWxkIGJlIGRlZmluZWQuIE90aGVy d2lzZSBhZ2dmbiByZXR1cm4gdHlwZSBzaG91bGQgbWF0Y2ggYWdndHJhbnN0eXBlLgorICovCitz dGF0aWMgYm9vbAorcGFydGlhbF9hZ2dfb2soQWdncmVmICphZ2cpCit7CisJSGVhcFR1cGxlCWFn Z3R1cDsKKwlGb3JtX3BnX2FnZ3JlZ2F0ZSBhZ2dmb3JtOworCisJQXNzZXJ0KGFnZy0+YWdnc3Bs aXQgPT0gQUdHU1BMSVRfSU5JVElBTF9TRVJJQUwpOworCisJLyogV2UgZG9uJ3Qgc3VwcG9ydCBj b21wbGV4IHBhcnRpYWwgYWdncmVnYXRlcyAqLworCWlmIChhZ2ctPmFnZ2Rpc3RpbmN0IHx8IGFn Zy0+YWdndmFyaWFkaWMgfHwgYWdnLT5hZ2draW5kICE9IEFHR0tJTkRfTk9STUFMIHx8IGFnZy0+ YWdnb3JkZXIgIT0gTklMKQorCQlyZXR1cm4gZmFsc2U7CisKKwlhZ2d0dXAgPSBTZWFyY2hTeXND YWNoZTEoQUdHRk5PSUQsIE9iamVjdElkR2V0RGF0dW0oYWdnLT5hZ2dmbm9pZCkpOworCWlmICgh SGVhcFR1cGxlSXNWYWxpZChhZ2d0dXApKQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZh aWxlZCBmb3IgZnVuY3Rpb24gJXUiLCBhZ2ctPmFnZ2Zub2lkKTsKKwlhZ2dmb3JtID0gKEZvcm1f cGdfYWdncmVnYXRlKSBHRVRTVFJVQ1QoYWdndHVwKTsKKworCS8qIE9ubHkgYWdncmVnYXRlcywg bWFya2VkIGFzIHB1c2hkb3duIHNhZmUsIGFyZSBhbGxvd2VkICovCisJaWYgKCFhZ2dmb3JtLT5h Z2dwYXJ0aWFscHVzaGRvd25zYWZlKQorCXsKKwkJUmVsZWFzZVN5c0NhY2hlKGFnZ3R1cCk7CisJ CXJldHVybiBmYWxzZTsKKwl9CisKKwkvKgorCSAqIElmIGFuIGFnZ3JlZ2F0ZSByZXF1aXJlcyBz ZXJpYWxpemF0aW9uL2Rlc2VyaWFsaXphdGlvbiwgcGFydGlhbAorCSAqIGNvbnZlcnRlciBzaG91 bGQgYmUgZGVmaW5lZAorCSAqLworCWlmIChhZ2ctPmFnZ3RyYW5zdHlwZSA9PSBJTlRFUk5BTE9J RCAmJiBhZ2dmb3JtLT5hZ2dwYXJ0aWFsY29udmVydGVyZm4gPT0gSW52YWxpZE9pZCkKKwl7CisJ CVJlbGVhc2VTeXNDYWNoZShhZ2d0dXApOworCQlyZXR1cm4gZmFsc2U7CisJfQorCisJLyogSW4g dGhpcyBjYXNlIHdlIGN1cnJlbnRseSBkb24ndCB1c2UgY29udmVydGVyICovCisJaWYgKGFnZy0+ YWdndHJhbnN0eXBlICE9IElOVEVSTkFMT0lEICYmIGdldF9mdW5jX3JldHR5cGUoYWdnLT5hZ2dm bm9pZCkgIT0gYWdnLT5hZ2d0cmFuc3R5cGUpCisJeworCQlSZWxlYXNlU3lzQ2FjaGUoYWdndHVw KTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKworCVJlbGVhc2VTeXNDYWNoZShhZ2d0dXApOworCXJl dHVybiB0cnVlOworfQpkaWZmIC0tZ2l0IGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvZXhwZWN0ZWQv cG9zdGdyZXNfZmR3Lm91dCBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2V4cGVjdGVkL3Bvc3RncmVz X2Zkdy5vdXQKaW5kZXggZjIxMGY5MTE4ODAuLmUwMjBlOWI4YTQxIDEwMDY0NAotLS0gYS9jb250 cmliL3Bvc3RncmVzX2Zkdy9leHBlY3RlZC9wb3N0Z3Jlc19mZHcub3V0CisrKyBiL2NvbnRyaWIv cG9zdGdyZXNfZmR3L2V4cGVjdGVkL3Bvc3RncmVzX2Zkdy5vdXQKQEAgLTkzMzYsMTMgKzkzMzYs MTMgQEAgUkVTRVQgZW5hYmxlX3BhcnRpdGlvbndpc2Vfam9pbjsKIC0tID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0t IHRlc3QgcGFydGl0aW9ud2lzZSBhZ2dyZWdhdGVzCiAtLSA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci1DUkVBVEUgVEFC TEUgcGFnZ190YWIgKGEgaW50LCBiIGludCwgYyB0ZXh0KSBQQVJUSVRJT04gQlkgUkFOR0UoYSk7 CitDUkVBVEUgVEFCTEUgcGFnZ190YWIgKGEgaW50LCBiIGludCwgYyB0ZXh0LCBkIG51bWVyaWMp IFBBUlRJVElPTiBCWSBSQU5HRShhKTsKIENSRUFURSBUQUJMRSBwYWdnX3RhYl9wMSAoTElLRSBw YWdnX3RhYik7CiBDUkVBVEUgVEFCTEUgcGFnZ190YWJfcDIgKExJS0UgcGFnZ190YWIpOwogQ1JF QVRFIFRBQkxFIHBhZ2dfdGFiX3AzIChMSUtFIHBhZ2dfdGFiKTsKLUlOU0VSVCBJTlRPIHBhZ2df dGFiX3AxIFNFTEVDVCBpICUgMzAsIGkgJSA1MCwgdG9fY2hhcihpLzMwLCAnRk0wMDAwJykgRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMSwgMzAwMCkgaSBXSEVSRSAoaSAlIDMwKSA8IDEwOwotSU5TRVJU IElOVE8gcGFnZ190YWJfcDIgU0VMRUNUIGkgJSAzMCwgaSAlIDUwLCB0b19jaGFyKGkvMzAsICdG TTAwMDAnKSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAzMDAwKSBpIFdIRVJFIChpICUgMzApIDwg MjAgYW5kIChpICUgMzApID49IDEwOwotSU5TRVJUIElOVE8gcGFnZ190YWJfcDMgU0VMRUNUIGkg JSAzMCwgaSAlIDUwLCB0b19jaGFyKGkvMzAsICdGTTAwMDAnKSBGUk9NIGdlbmVyYXRlX3Nlcmll cygxLCAzMDAwKSBpIFdIRVJFIChpICUgMzApIDwgMzAgYW5kIChpICUgMzApID49IDIwOworSU5T RVJUIElOVE8gcGFnZ190YWJfcDEgU0VMRUNUIGkgJSAzMCwgaSAlIDUwLCB0b19jaGFyKGkvMzAs ICdGTTAwMDAnKSwgaSAlIDQwIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMwMDApIGkgV0hFUkUg KGkgJSAzMCkgPCAxMDsKK0lOU0VSVCBJTlRPIHBhZ2dfdGFiX3AyIFNFTEVDVCBpICUgMzAsIGkg JSA1MCwgdG9fY2hhcihpLzMwLCAnRk0wMDAwJyksIGkgJSA0MCBGUk9NIGdlbmVyYXRlX3Nlcmll cygxLCAzMDAwKSBpIFdIRVJFIChpICUgMzApIDwgMjAgYW5kIChpICUgMzApID49IDEwOworSU5T RVJUIElOVE8gcGFnZ190YWJfcDMgU0VMRUNUIGkgJSAzMCwgaSAlIDUwLCB0b19jaGFyKGkvMzAs ICdGTTAwMDAnKSwgaSAlIDQwIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMwMDApIGkgV0hFUkUg KGkgJSAzMCkgPCAzMCBhbmQgKGkgJSAzMCkgPj0gMjA7CiAtLSBDcmVhdGUgZm9yZWlnbiBwYXJ0 aXRpb25zCiBDUkVBVEUgRk9SRUlHTiBUQUJMRSBmcGFnZ190YWJfcDEgUEFSVElUSU9OIE9GIHBh Z2dfdGFiIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEwKSBTRVJWRVIgbG9vcGJhY2sgT1BUSU9O UyAodGFibGVfbmFtZSAncGFnZ190YWJfcDEnKTsKIENSRUFURSBGT1JFSUdOIFRBQkxFIGZwYWdn X3RhYl9wMiBQQVJUSVRJT04gT0YgcGFnZ190YWIgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDIw KSBTRVJWRVIgbG9vcGJhY2sgT1BUSU9OUyAodGFibGVfbmFtZSAncGFnZ190YWJfcDInKTsKQEAg LTk0MDEsOCArOTQwMSw4IEBAIFNFTEVDVCBhLCBzdW0oYiksIG1pbihiKSwgY291bnQoKikgRlJP TSBwYWdnX3RhYiBHUk9VUCBCWSBhIEhBVklORyBhdmcoYikgPCAyMiBPCiAtLSBTaG91bGQgaGF2 ZSBhbGwgdGhlIGNvbHVtbnMgaW4gdGhlIHRhcmdldCBsaXN0IGZvciB0aGUgZ2l2ZW4gcmVsYXRp b24KIEVYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKIFNFTEVDVCBhLCBjb3VudCh0MSkgRlJP TSBwYWdnX3RhYiB0MSBHUk9VUCBCWSBhIEhBVklORyBhdmcoYikgPCAyMiBPUkRFUiBCWSAxOwot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCiAgU29ydAogICAgT3V0cHV0OiB0MS5hLCAoY291bnQoKCh0MS4qKTo6 cGFnZ190YWIpKSkKICAgIFNvcnQgS2V5OiB0MS5hCkBAIC05NDEzLDIxICs5NDEzLDIxIEBAIFNF TEVDVCBhLCBjb3VudCh0MSkgRlJPTSBwYWdnX3RhYiB0MSBHUk9VUCBCWSBhIEhBVklORyBhdmco YikgPCAyMiBPUkRFUiBCWSAxOwogICAgICAgICAgICAgICAgRmlsdGVyOiAoYXZnKHQxLmIpIDwg JzIyJzo6bnVtZXJpYykKICAgICAgICAgICAgICAgIC0+ICBGb3JlaWduIFNjYW4gb24gcHVibGlj LmZwYWdnX3RhYl9wMSB0MQogICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MS5hLCB0MS4q LCB0MS5iCi0gICAgICAgICAgICAgICAgICAgICBSZW1vdGUgU1FMOiBTRUxFQ1QgYSwgYiwgYyBG Uk9NIHB1YmxpYy5wYWdnX3RhYl9wMQorICAgICAgICAgICAgICAgICAgICAgUmVtb3RlIFNRTDog U0VMRUNUIGEsIGIsIGMsIGQgRlJPTSBwdWJsaWMucGFnZ190YWJfcDEKICAgICAgICAgIC0+ICBI YXNoQWdncmVnYXRlCiAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzEuYSwgY291bnQoKCh0MV8x LiopOjpwYWdnX3RhYikpCiAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQxXzEuYQogICAgICAg ICAgICAgICAgRmlsdGVyOiAoYXZnKHQxXzEuYikgPCAnMjInOjpudW1lcmljKQogICAgICAgICAg ICAgICAgLT4gIEZvcmVpZ24gU2NhbiBvbiBwdWJsaWMuZnBhZ2dfdGFiX3AyIHQxXzEKICAgICAg ICAgICAgICAgICAgICAgIE91dHB1dDogdDFfMS5hLCB0MV8xLiosIHQxXzEuYgotICAgICAgICAg ICAgICAgICAgICAgUmVtb3RlIFNRTDogU0VMRUNUIGEsIGIsIGMgRlJPTSBwdWJsaWMucGFnZ190 YWJfcDIKKyAgICAgICAgICAgICAgICAgICAgIFJlbW90ZSBTUUw6IFNFTEVDVCBhLCBiLCBjLCBk IEZST00gcHVibGljLnBhZ2dfdGFiX3AyCiAgICAgICAgICAtPiAgSGFzaEFnZ3JlZ2F0ZQogICAg ICAgICAgICAgICAgT3V0cHV0OiB0MV8yLmEsIGNvdW50KCgodDFfMi4qKTo6cGFnZ190YWIpKQog ICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0MV8yLmEKICAgICAgICAgICAgICAgIEZpbHRlcjog KGF2Zyh0MV8yLmIpIDwgJzIyJzo6bnVtZXJpYykKICAgICAgICAgICAgICAgIC0+ICBGb3JlaWdu IFNjYW4gb24gcHVibGljLmZwYWdnX3RhYl9wMyB0MV8yCiAgICAgICAgICAgICAgICAgICAgICBP dXRwdXQ6IHQxXzIuYSwgdDFfMi4qLCB0MV8yLmIKLSAgICAgICAgICAgICAgICAgICAgIFJlbW90 ZSBTUUw6IFNFTEVDVCBhLCBiLCBjIEZST00gcHVibGljLnBhZ2dfdGFiX3AzCisgICAgICAgICAg ICAgICAgICAgICBSZW1vdGUgU1FMOiBTRUxFQ1QgYSwgYiwgYywgZCBGUk9NIHB1YmxpYy5wYWdn X3RhYl9wMwogKDI1IHJvd3MpCiAKIFNFTEVDVCBhLCBjb3VudCh0MSkgRlJPTSBwYWdnX3RhYiB0 MSBHUk9VUCBCWSBhIEhBVklORyBhdmcoYikgPCAyMiBPUkRFUiBCWSAxOwpAQCAtOTQ2Myw2ICs5 NDYzLDE3MyBAQCBTRUxFQ1QgYiwgYXZnKGEpLCBtYXgoYSksIGNvdW50KCopIEZST00gcGFnZ190 YWIgR1JPVVAgQlkgYiBIQVZJTkcgc3VtKGEpIDwgNzAwCiAgICAgICAgICAgICAgICAgICAgICAt PiAgRm9yZWlnbiBTY2FuIG9uIGZwYWdnX3RhYl9wMyBwYWdnX3RhYl8yCiAoMTUgcm93cykKIAor LS0gSXQncyB1bnNhZmUgdG8gcHVzaCBkb3duIGhhdmluZyBjbGF1c2Ugd2hlbiB0aGVyZSBhcmUg cGFydGlhbCBhZ2dyZWdhdGVzCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitTRUxFQ1Qg YiwgbWF4KGEpLCBjb3VudCgqKSBGUk9NIHBhZ2dfdGFiIEdST1VQIEJZIGIgSEFWSU5HIHN1bShh KSA8IDcwMCBPUkRFUiBCWSAxOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTb3J0CisgICBPdXRwdXQ6IHBhZ2dfdGFiLmIsICht YXgocGFnZ190YWIuYSkpLCAoY291bnQoKikpCisgICBTb3J0IEtleTogcGFnZ190YWIuYgorICAg LT4gIEZpbmFsaXplIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgIE91dHB1dDogcGFnZ190YWIuYiwg bWF4KHBhZ2dfdGFiLmEpLCBjb3VudCgqKQorICAgICAgICAgR3JvdXAgS2V5OiBwYWdnX3RhYi5i CisgICAgICAgICBGaWx0ZXI6IChzdW0ocGFnZ190YWIuYSkgPCA3MDApCisgICAgICAgICAtPiAg QXBwZW5kCisgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAg ICAgICAgICAgICAgICBPdXRwdXQ6IHBhZ2dfdGFiLmIsIFBBUlRJQUwgbWF4KHBhZ2dfdGFiLmEp LCBQQVJUSUFMIGNvdW50KCopLCBQQVJUSUFMIHN1bShwYWdnX3RhYi5hKQorICAgICAgICAgICAg ICAgICAgICAgR3JvdXAgS2V5OiBwYWdnX3RhYi5iCisgICAgICAgICAgICAgICAgICAgICAtPiAg Rm9yZWlnbiBTY2FuIG9uIHB1YmxpYy5mcGFnZ190YWJfcDEgcGFnZ190YWIKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIE91dHB1dDogcGFnZ190YWIuYiwgcGFnZ190YWIuYQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgUmVtb3RlIFNRTDogU0VMRUNUIGEsIGIgRlJPTSBwdWJsaWMucGFn Z190YWJfcDEKKyAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhhc2hBZ2dyZWdhdGUKKyAgICAg ICAgICAgICAgICAgICAgIE91dHB1dDogcGFnZ190YWJfMS5iLCBQQVJUSUFMIG1heChwYWdnX3Rh Yl8xLmEpLCBQQVJUSUFMIGNvdW50KCopLCBQQVJUSUFMIHN1bShwYWdnX3RhYl8xLmEpCisgICAg ICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHBhZ2dfdGFiXzEuYgorICAgICAgICAgICAgICAg ICAgICAgLT4gIEZvcmVpZ24gU2NhbiBvbiBwdWJsaWMuZnBhZ2dfdGFiX3AyIHBhZ2dfdGFiXzEK KyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogcGFnZ190YWJfMS5iLCBwYWdnX3Rh Yl8xLmEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbW90ZSBTUUw6IFNFTEVDVCBhLCBi IEZST00gcHVibGljLnBhZ2dfdGFiX3AyCisgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNo QWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHBhZ2dfdGFiXzIuYiwgUEFS VElBTCBtYXgocGFnZ190YWJfMi5hKSwgUEFSVElBTCBjb3VudCgqKSwgUEFSVElBTCBzdW0ocGFn Z190YWJfMi5hKQorICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiBwYWdnX3RhYl8yLmIK KyAgICAgICAgICAgICAgICAgICAgIC0+ICBGb3JlaWduIFNjYW4gb24gcHVibGljLmZwYWdnX3Rh Yl9wMyBwYWdnX3RhYl8yCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHBhZ2df dGFiXzIuYiwgcGFnZ190YWJfMi5hCisgICAgICAgICAgICAgICAgICAgICAgICAgICBSZW1vdGUg U1FMOiBTRUxFQ1QgYSwgYiBGUk9NIHB1YmxpYy5wYWdnX3RhYl9wMworKDI2IHJvd3MpCisKKy0t IFBhcnRpYWwgYWdncmVnYXRlcyBhcmUgZmluZSB0byBwdXNoIGRvd24gd2l0aG91dCBoYXZpbmcg Y2xhdXNlCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitTRUxFQ1QgYiwgbWF4KGEpLCBj b3VudCgqKSBGUk9NIHBhZ2dfdGFiIEdST1VQIEJZIGIgT1JERVIgQlkgMTsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIFNvcnQKKyAgIE91dHB1dDogcGFnZ190YWIuYiwgKG1heChwYWdnX3RhYi5h KSksIChjb3VudCgqKSkKKyAgIFNvcnQgS2V5OiBwYWdnX3RhYi5iCisgICAtPiAgRmluYWxpemUg SGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgT3V0cHV0OiBwYWdnX3RhYi5iLCBtYXgocGFnZ190YWIu YSksIGNvdW50KCopCisgICAgICAgICBHcm91cCBLZXk6IHBhZ2dfdGFiLmIKKyAgICAgICAgIC0+ ICBBcHBlbmQKKyAgICAgICAgICAgICAgIC0+ICBGb3JlaWduIFNjYW4KKyAgICAgICAgICAgICAg ICAgICAgIE91dHB1dDogcGFnZ190YWIuYiwgKFBBUlRJQUwgbWF4KHBhZ2dfdGFiLmEpKSwgKFBB UlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICBSZWxhdGlvbnM6IEFnZ3JlZ2F0 ZSBvbiAocHVibGljLmZwYWdnX3RhYl9wMSBwYWdnX3RhYikKKyAgICAgICAgICAgICAgICAgICAg IFJlbW90ZSBTUUw6IFNFTEVDVCBiLCBtYXgoYSksIGNvdW50KCopIEZST00gcHVibGljLnBhZ2df dGFiX3AxIEdST1VQIEJZIDEKKyAgICAgICAgICAgICAgIC0+ICBGb3JlaWduIFNjYW4KKyAgICAg ICAgICAgICAgICAgICAgIE91dHB1dDogcGFnZ190YWJfMS5iLCAoUEFSVElBTCBtYXgocGFnZ190 YWJfMS5hKSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAgICAgICAgUmVsYXRp b25zOiBBZ2dyZWdhdGUgb24gKHB1YmxpYy5mcGFnZ190YWJfcDIgcGFnZ190YWJfMSkKKyAgICAg ICAgICAgICAgICAgICAgIFJlbW90ZSBTUUw6IFNFTEVDVCBiLCBtYXgoYSksIGNvdW50KCopIEZS T00gcHVibGljLnBhZ2dfdGFiX3AyIEdST1VQIEJZIDEKKyAgICAgICAgICAgICAgIC0+ICBGb3Jl aWduIFNjYW4KKyAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogcGFnZ190YWJfMi5iLCAoUEFS VElBTCBtYXgocGFnZ190YWJfMi5hKSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAg ICAgICAgICAgUmVsYXRpb25zOiBBZ2dyZWdhdGUgb24gKHB1YmxpYy5mcGFnZ190YWJfcDMgcGFn Z190YWJfMikKKyAgICAgICAgICAgICAgICAgICAgIFJlbW90ZSBTUUw6IFNFTEVDVCBiLCBtYXgo YSksIGNvdW50KCopIEZST00gcHVibGljLnBhZ2dfdGFiX3AzIEdST1VQIEJZIDEKKygxOSByb3dz KQorCitTRUxFQ1QgYiwgbWF4KGEpLCBjb3VudCgqKSBGUk9NIHBhZ2dfdGFiIEdST1VQIEJZIGIg T1JERVIgQlkgMTsKKyBiICB8IG1heCB8IGNvdW50IAorLS0tLSstLS0tLSstLS0tLS0tCisgIDAg fCAgMjAgfCAgICA2MAorICAxIHwgIDIxIHwgICAgNjAKKyAgMiB8ICAyMiB8ICAgIDYwCisgIDMg fCAgMjMgfCAgICA2MAorICA0IHwgIDI0IHwgICAgNjAKKyAgNSB8ICAyNSB8ICAgIDYwCisgIDYg fCAgMjYgfCAgICA2MAorICA3IHwgIDI3IHwgICAgNjAKKyAgOCB8ICAyOCB8ICAgIDYwCisgIDkg fCAgMjkgfCAgICA2MAorIDEwIHwgIDIwIHwgICAgNjAKKyAxMSB8ICAyMSB8ICAgIDYwCisgMTIg fCAgMjIgfCAgICA2MAorIDEzIHwgIDIzIHwgICAgNjAKKyAxNCB8ICAyNCB8ICAgIDYwCisgMTUg fCAgMjUgfCAgICA2MAorIDE2IHwgIDI2IHwgICAgNjAKKyAxNyB8ICAyNyB8ICAgIDYwCisgMTgg fCAgMjggfCAgICA2MAorIDE5IHwgIDI5IHwgICAgNjAKKyAyMCB8ICAyMCB8ICAgIDYwCisgMjEg fCAgMjEgfCAgICA2MAorIDIyIHwgIDIyIHwgICAgNjAKKyAyMyB8ICAyMyB8ICAgIDYwCisgMjQg fCAgMjQgfCAgICA2MAorIDI1IHwgIDI1IHwgICAgNjAKKyAyNiB8ICAyNiB8ICAgIDYwCisgMjcg fCAgMjcgfCAgICA2MAorIDI4IHwgIDI4IHwgICAgNjAKKyAyOSB8ICAyOSB8ICAgIDYwCisgMzAg fCAgMjAgfCAgICA2MAorIDMxIHwgIDIxIHwgICAgNjAKKyAzMiB8ICAyMiB8ICAgIDYwCisgMzMg fCAgMjMgfCAgICA2MAorIDM0IHwgIDI0IHwgICAgNjAKKyAzNSB8ICAyNSB8ICAgIDYwCisgMzYg fCAgMjYgfCAgICA2MAorIDM3IHwgIDI3IHwgICAgNjAKKyAzOCB8ICAyOCB8ICAgIDYwCisgMzkg fCAgMjkgfCAgICA2MAorIDQwIHwgIDIwIHwgICAgNjAKKyA0MSB8ICAyMSB8ICAgIDYwCisgNDIg fCAgMjIgfCAgICA2MAorIDQzIHwgIDIzIHwgICAgNjAKKyA0NCB8ICAyNCB8ICAgIDYwCisgNDUg fCAgMjUgfCAgICA2MAorIDQ2IHwgIDI2IHwgICAgNjAKKyA0NyB8ICAyNyB8ICAgIDYwCisgNDgg fCAgMjggfCAgICA2MAorIDQ5IHwgIDI5IHwgICAgNjAKKyg1MCByb3dzKQorCistLSBQYXJ0aWFs IGFnZ3JlZ2F0ZXMgYXJlIGZpbmUgdG8gcHVzaCBkb3duCitFWFBMQUlOIChWRVJCT1NFLCBDT1NU UyBPRkYpCitTRUxFQ1QgbWF4KGEpLCBjb3VudCgqKSwgc3VtKGQpIEZST00gcGFnZ190YWI7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgRmluYWxpemUgQWdncmVnYXRlCisgICBP dXRwdXQ6IG1heChwYWdnX3RhYi5hKSwgY291bnQoKiksIHN1bShwYWdnX3RhYi5kKQorICAgLT4g IEFwcGVuZAorICAgICAgICAgLT4gIEZvcmVpZ24gU2NhbgorICAgICAgICAgICAgICAgT3V0cHV0 OiAoUEFSVElBTCBtYXgocGFnZ190YWIuYSkpLCAoUEFSVElBTCBjb3VudCgqKSksIChQQVJUSUFM IHN1bShwYWdnX3RhYi5kKSkKKyAgICAgICAgICAgICAgIFJlbGF0aW9uczogQWdncmVnYXRlIG9u IChwdWJsaWMuZnBhZ2dfdGFiX3AxIHBhZ2dfdGFiKQorICAgICAgICAgICAgICAgUmVtb3RlIFNR TDogU0VMRUNUIG1heChhKSwgY291bnQoKiksIHN1bShkKSBGUk9NIHB1YmxpYy5wYWdnX3RhYl9w MQorICAgICAgICAgLT4gIEZvcmVpZ24gU2NhbgorICAgICAgICAgICAgICAgT3V0cHV0OiAoUEFS VElBTCBtYXgocGFnZ190YWJfMS5hKSksIChQQVJUSUFMIGNvdW50KCopKSwgKFBBUlRJQUwgc3Vt KHBhZ2dfdGFiXzEuZCkpCisgICAgICAgICAgICAgICBSZWxhdGlvbnM6IEFnZ3JlZ2F0ZSBvbiAo cHVibGljLmZwYWdnX3RhYl9wMiBwYWdnX3RhYl8xKQorICAgICAgICAgICAgICAgUmVtb3RlIFNR TDogU0VMRUNUIG1heChhKSwgY291bnQoKiksIHN1bShkKSBGUk9NIHB1YmxpYy5wYWdnX3RhYl9w MgorICAgICAgICAgLT4gIEZvcmVpZ24gU2NhbgorICAgICAgICAgICAgICAgT3V0cHV0OiAoUEFS VElBTCBtYXgocGFnZ190YWJfMi5hKSksIChQQVJUSUFMIGNvdW50KCopKSwgKFBBUlRJQUwgc3Vt KHBhZ2dfdGFiXzIuZCkpCisgICAgICAgICAgICAgICBSZWxhdGlvbnM6IEFnZ3JlZ2F0ZSBvbiAo cHVibGljLmZwYWdnX3RhYl9wMyBwYWdnX3RhYl8yKQorICAgICAgICAgICAgICAgUmVtb3RlIFNR TDogU0VMRUNUIG1heChhKSwgY291bnQoKiksIHN1bShkKSBGUk9NIHB1YmxpYy5wYWdnX3RhYl9w MworKDE1IHJvd3MpCisKK1NFTEVDVCBtYXgoYSksIGNvdW50KCopLCBzdW0oZCkgRlJPTSBwYWdn X3RhYjsKKyBtYXggfCBjb3VudCB8ICBzdW0gIAorLS0tLS0rLS0tLS0tLSstLS0tLS0tCisgIDI5 IHwgIDMwMDAgfCA1ODUwMAorKDEgcm93KQorCistLSBTaG91bGRuJ3QgdHJ5IHRvIHB1c2ggZG93 bgorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIG1heChhKSwgY291bnQoZGlz dGluY3QgYikgRlJPTSBwYWdnX3RhYjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkg UExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICBP dXRwdXQ6IG1heChwYWdnX3RhYi5hKSwgY291bnQoRElTVElOQ1QgcGFnZ190YWIuYikKKyAgIC0+ ICBBcHBlbmQKKyAgICAgICAgIC0+ICBGb3JlaWduIFNjYW4gb24gcHVibGljLmZwYWdnX3RhYl9w MSBwYWdnX3RhYl8xCisgICAgICAgICAgICAgICBPdXRwdXQ6IHBhZ2dfdGFiXzEuYSwgcGFnZ190 YWJfMS5iCisgICAgICAgICAgICAgICBSZW1vdGUgU1FMOiBTRUxFQ1QgYSwgYiBGUk9NIHB1Ymxp Yy5wYWdnX3RhYl9wMQorICAgICAgICAgLT4gIEZvcmVpZ24gU2NhbiBvbiBwdWJsaWMuZnBhZ2df dGFiX3AyIHBhZ2dfdGFiXzIKKyAgICAgICAgICAgICAgIE91dHB1dDogcGFnZ190YWJfMi5hLCBw YWdnX3RhYl8yLmIKKyAgICAgICAgICAgICAgIFJlbW90ZSBTUUw6IFNFTEVDVCBhLCBiIEZST00g cHVibGljLnBhZ2dfdGFiX3AyCisgICAgICAgICAtPiAgRm9yZWlnbiBTY2FuIG9uIHB1YmxpYy5m cGFnZ190YWJfcDMgcGFnZ190YWJfMworICAgICAgICAgICAgICAgT3V0cHV0OiBwYWdnX3RhYl8z LmEsIHBhZ2dfdGFiXzMuYgorICAgICAgICAgICAgICAgUmVtb3RlIFNRTDogU0VMRUNUIGEsIGIg RlJPTSBwdWJsaWMucGFnZ190YWJfcDMKKygxMiByb3dzKQorCitTRUxFQ1QgbWF4KGEpLCBjb3Vu dChkaXN0aW5jdCBiKSBGUk9NIHBhZ2dfdGFiOworIG1heCB8IGNvdW50IAorLS0tLS0rLS0tLS0t LQorICAyOSB8ICAgIDUwCisoMSByb3cpCisKIC0tID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tIGFjY2VzcyByaWdo dHMgYW5kIHN1cGVydXNlcgogLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpkaWZmIC0tZ2l0IGEvY29udHJpYi9wb3N0 Z3Jlc19mZHcvcG9zdGdyZXNfZmR3LmMgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19m ZHcuYwppbmRleCA1NjY1NDg0NGU4Zi4uNmIzNzNjODVhNGQgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIv cG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy5jCisrKyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bv c3RncmVzX2Zkdy5jCkBAIC0xOCw2ICsxOCw4IEBACiAjaW5jbHVkZSAiYWNjZXNzL3N5c2F0dHIu aCIKICNpbmNsdWRlICJhY2Nlc3MvdGFibGUuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2NsYXNz LmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19hZ2dyZWdhdGUuaCIKKyNpbmNsdWRlICJjYXRhbG9n L3BnX3Byb2MuaCIKICNpbmNsdWRlICJjb21tYW5kcy9kZWZyZW0uaCIKICNpbmNsdWRlICJjb21t YW5kcy9leHBsYWluLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvdmFjdXVtLmgiCkBAIC00OCw2ICs1 MCw3IEBACiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCiAjaW5jbHVkZSAidXRpbHMvc2FtcGxpbmcu aCIKICNpbmNsdWRlICJ1dGlscy9zZWxmdW5jcy5oIgorI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hl LmgiCiAKIFBHX01PRFVMRV9NQUdJQzsKIApAQCAtODAsNyArODMsMTIgQEAgZW51bSBGZHdTY2Fu UHJpdmF0ZUluZGV4CiAJICogU3RyaW5nIGRlc2NyaWJpbmcgam9pbiBpLmUuIG5hbWVzIG9mIHJl bGF0aW9ucyBiZWluZyBqb2luZWQgYW5kIHR5cGVzCiAJICogb2Ygam9pbiwgYWRkZWQgd2hlbiB0 aGUgc2NhbiBpcyBqb2luCiAJICovCi0JRmR3U2NhblByaXZhdGVSZWxhdGlvbnMKKwlGZHdTY2Fu UHJpdmF0ZVJlbGF0aW9ucywKKworCS8qCisJICogTGlzdCBvZiBmdW5jdGlvbnMgdG8gY29udmVy dCBwYXJ0aWFsIGFnZ3JlZ2F0ZSByZXN1bHQKKwkgKi8KKwlGZHdTY2FuUHJpdmF0ZUNvbnZlcnRl cnMKIH07CiAKIC8qCkBAIC0xNDMsNiArMTUxLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUGdGZHdTY2Fu U3RhdGUKIAkvKiBleHRyYWN0ZWQgZmR3X3ByaXZhdGUgZGF0YSAqLwogCWNoYXIJICAgKnF1ZXJ5 OwkJCS8qIHRleHQgb2YgU0VMRUNUIGNvbW1hbmQgKi8KIAlMaXN0CSAgICpyZXRyaWV2ZWRfYXR0 cnM7CS8qIGxpc3Qgb2YgcmV0cmlldmVkIGF0dHJpYnV0ZSBudW1iZXJzICovCisJTGlzdAkgICAq Y29udl9saXN0OwkJLyogbGlzdCBvZiBjb252ZXJ0ZXJzICovCiAKIAkvKiBmb3IgcmVtb3RlIHF1 ZXJ5IGV4ZWN1dGlvbiAqLwogCVBHY29ubgkgICAqY29ubjsJCQkvKiBjb25uZWN0aW9uIGZvciB0 aGUgc2NhbiAqLwpAQCAtNDc0LDYgKzQ4Myw3IEBAIHN0YXRpYyB2b2lkIHN0b3JlX3JldHVybmlu Z19yZXN1bHQoUGdGZHdNb2RpZnlTdGF0ZSAqZm1zdGF0ZSwKIAkJCQkJCQkJICAgVHVwbGVUYWJs ZVNsb3QgKnNsb3QsIFBHcmVzdWx0ICpyZXMpOwogc3RhdGljIHZvaWQgZmluaXNoX2ZvcmVpZ25f bW9kaWZ5KFBnRmR3TW9kaWZ5U3RhdGUgKmZtc3RhdGUpOwogc3RhdGljIHZvaWQgZGVhbGxvY2F0 ZV9xdWVyeShQZ0Zkd01vZGlmeVN0YXRlICpmbXN0YXRlKTsKK3N0YXRpYyBMaXN0ICpidWlsZF9j b252X2xpc3QoUmVsT3B0SW5mbyAqZm9yZWlnbnJlbCk7CiBzdGF0aWMgTGlzdCAqYnVpbGRfcmVt b3RlX3JldHVybmluZyhJbmRleCBydGluZGV4LCBSZWxhdGlvbiByZWwsCiAJCQkJCQkJCQlMaXN0 ICpyZXR1cm5pbmdMaXN0KTsKIHN0YXRpYyB2b2lkIHJlYnVpbGRfZmR3X3NjYW5fdGxpc3QoRm9y ZWlnblNjYW4gKmZzY2FuLCBMaXN0ICp0bGlzdCk7CkBAIC01MTAsNiArNTIwLDcgQEAgc3RhdGlj IEhlYXBUdXBsZSBtYWtlX3R1cGxlX2Zyb21fcmVzdWx0X3JvdyhQR3Jlc3VsdCAqcmVzLAogCQkJ CQkJCQkJCQlSZWxhdGlvbiByZWwsCiAJCQkJCQkJCQkJCUF0dEluTWV0YWRhdGEgKmF0dGlubWV0 YSwKIAkJCQkJCQkJCQkJTGlzdCAqcmV0cmlldmVkX2F0dHJzLAorCQkJCQkJCQkJCQlMaXN0ICpj b252X2xpc3QsCiAJCQkJCQkJCQkJCUZvcmVpZ25TY2FuU3RhdGUgKmZzc3RhdGUsCiAJCQkJCQkJ CQkJCU1lbW9yeUNvbnRleHQgdGVtcF9jb250ZXh0KTsKIHN0YXRpYyB2b2lkIGNvbnZlcnNpb25f ZXJyb3JfY2FsbGJhY2sodm9pZCAqYXJnKTsKQEAgLTUxNyw3ICs1MjgsNyBAQCBzdGF0aWMgYm9v bCBmb3JlaWduX2pvaW5fb2soUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKmpvaW5yZWws CiAJCQkJCQkJSm9pblR5cGUgam9pbnR5cGUsIFJlbE9wdEluZm8gKm91dGVycmVsLCBSZWxPcHRJ bmZvICppbm5lcnJlbCwKIAkJCQkJCQlKb2luUGF0aEV4dHJhRGF0YSAqZXh0cmEpOwogc3RhdGlj IGJvb2wgZm9yZWlnbl9ncm91cGluZ19vayhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAq Z3JvdXBlZF9yZWwsCi0JCQkJCQkJCU5vZGUgKmhhdmluZ1F1YWwpOworCQkJCQkJCQlOb2RlICpo YXZpbmdRdWFsLCBQYXJ0aXRpb253aXNlQWdncmVnYXRlVHlwZSBwYXR5cGUpOwogc3RhdGljIExp c3QgKmdldF91c2VmdWxfcGF0aGtleXNfZm9yX3JlbGF0aW9uKFBsYW5uZXJJbmZvICpyb290LAog CQkJCQkJCQkJCQkgIFJlbE9wdEluZm8gKnJlbCk7CiBzdGF0aWMgTGlzdCAqZ2V0X3VzZWZ1bF9l Y3NfZm9yX3JlbGF0aW9uKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwpOwpAQCAt NTQxLDcgKzU1Miw2IEBAIHN0YXRpYyB2b2lkIG1lcmdlX2Zkd19vcHRpb25zKFBnRmR3UmVsYXRp b25JbmZvICpmcGluZm8sCiAJCQkJCQkJICBjb25zdCBQZ0Zkd1JlbGF0aW9uSW5mbyAqZnBpbmZv X2kpOwogc3RhdGljIGludAlnZXRfYmF0Y2hfc2l6ZV9vcHRpb24oUmVsYXRpb24gcmVsKTsKIAot CiAvKgogICogRm9yZWlnbi1kYXRhIHdyYXBwZXIgaGFuZGxlciBmdW5jdGlvbjogcmV0dXJuIGEg c3RydWN0IHdpdGggcG9pbnRlcnMKICAqIHRvIG15IGNhbGxiYWNrIHJvdXRpbmVzLgpAQCAtMTIz Myw2ICsxMjQzLDcgQEAgcG9zdGdyZXNHZXRGb3JlaWduUGxhbihQbGFubmVySW5mbyAqcm9vdCwK IAlMaXN0CSAgICpsb2NhbF9leHBycyA9IE5JTDsKIAlMaXN0CSAgICpwYXJhbXNfbGlzdCA9IE5J TDsKIAlMaXN0CSAgICpmZHdfc2Nhbl90bGlzdCA9IE5JTDsKKwlMaXN0CSAgICpmZHdfY29udl9s aXN0ID0gTklMOwogCUxpc3QJICAgKmZkd19yZWNoZWNrX3F1YWxzID0gTklMOwogCUxpc3QJICAg KnJldHJpZXZlZF9hdHRyczsKIAlTdHJpbmdJbmZvRGF0YSBzcWw7CkBAIC0xMzM2LDYgKzEzNDcs OSBAQCBwb3N0Z3Jlc0dldEZvcmVpZ25QbGFuKFBsYW5uZXJJbmZvICpyb290LAogCQkvKiBCdWls ZCB0aGUgbGlzdCBvZiBjb2x1bW5zIHRvIGJlIGZldGNoZWQgZnJvbSB0aGUgZm9yZWlnbiBzZXJ2 ZXIuICovCiAJCWZkd19zY2FuX3RsaXN0ID0gYnVpbGRfdGxpc3RfdG9fZGVwYXJzZShmb3JlaWdu cmVsKTsKIAorCQkvKiBCdWlsZCB0aGUgbGlzdCBvZiBjb252ZXJ0ZXJzIGZvciBwYXJ0aWFsIGFn Z3JlZ2F0ZXMuICovCisJCWZkd19jb252X2xpc3QgPSBidWlsZF9jb252X2xpc3QoZm9yZWlnbnJl bCk7CisKIAkJLyoKIAkJICogRW5zdXJlIHRoYXQgdGhlIG91dGVyIHBsYW4gcHJvZHVjZXMgYSB0 dXBsZSB3aG9zZSBkZXNjcmlwdG9yCiAJCSAqIG1hdGNoZXMgb3VyIHNjYW4gdHVwbGUgc2xvdC4g IEFsc28sIHJlbW92ZSB0aGUgbG9jYWwgY29uZGl0aW9ucwpAQCAtMTQxNSw2ICsxNDI5LDggQEAg cG9zdGdyZXNHZXRGb3JlaWduUGxhbihQbGFubmVySW5mbyAqcm9vdCwKIAlpZiAoSVNfSk9JTl9S RUwoZm9yZWlnbnJlbCkgfHwgSVNfVVBQRVJfUkVMKGZvcmVpZ25yZWwpKQogCQlmZHdfcHJpdmF0 ZSA9IGxhcHBlbmQoZmR3X3ByaXZhdGUsCiAJCQkJCQkJICBtYWtlU3RyaW5nKGZwaW5mby0+cmVs YXRpb25fbmFtZSkpOworCWlmIChJU19VUFBFUl9SRUwoZm9yZWlnbnJlbCkpCisJCWZkd19wcml2 YXRlID0gbGFwcGVuZChmZHdfcHJpdmF0ZSwgZmR3X2NvbnZfbGlzdCk7CiAKIAkvKgogCSAqIENy ZWF0ZSB0aGUgRm9yZWlnblNjYW4gbm9kZSBmb3IgdGhlIGdpdmVuIHJlbGF0aW9uLgpAQCAtMTQz Myw2ICsxNDQ5LDQ5IEBAIHBvc3RncmVzR2V0Rm9yZWlnblBsYW4oUGxhbm5lckluZm8gKnJvb3Qs CiAJCQkJCQkJb3V0ZXJfcGxhbik7CiB9CiAKKy8qCisgKiBHZW5lcmF0ZSBhdHRpbm1ldGEgaWYg dGhlcmUgYXJlIHNvbWUgY29udmVydGVyczoKKyAqIGNvcnJlc3BvbmRpbmcgYXR0cmlidXRlIHR5 cGUgc2hvdWxkIGJlIGNvbnZlcnRlcgorICogaW5wdXQgdHlwZSwgbm90IGV4cGVjdGVkIHJlc3Vs dCB0eXBlIChCWVRFQSkuCisgKi8KK3N0YXRpYyBBdHRJbk1ldGFkYXRhICoKK2dldF9yY3ZkX2F0 dGlubWV0YShUdXBsZURlc2MgdHVwZGVzYywgTGlzdCAqY29udl9saXN0KQoreworCVR1cGxlRGVz YwlyY3ZkX3R1cGRlc2M7CisKKwlBc3NlcnQoY29udl9saXN0ICE9IE5JTCk7CisKKwlyY3ZkX3R1 cGRlc2MgPSBDcmVhdGVUdXBsZURlc2NDb3B5KHR1cGRlc2MpOworCWZvciAoaW50IGkgPSAwOyBp IDwgcmN2ZF90dXBkZXNjLT5uYXR0czsgaSsrKQorCXsKKwkJT2lkCQkJY29udmVydGVyID0gSW52 YWxpZE9pZDsKKwkJRm9ybV9wZ19hdHRyaWJ1dGUgYXR0ID0gVHVwbGVEZXNjQXR0cihyY3ZkX3R1 cGRlc2MsIGkpOworCisJCWNvbnZlcnRlciA9IGxpc3RfbnRoX29pZChjb252X2xpc3QsIGkpOwor CQlpZiAoY29udmVydGVyICE9IEludmFsaWRPaWQpCisJCXsKKwkJCUhlYXBUdXBsZQlwcm9jdHVw OworCQkJRm9ybV9wZ19wcm9jIHByb2Nmb3JtOworCisJCQlwcm9jdHVwID0gU2VhcmNoU3lzQ2Fj aGUxKFBST0NPSUQsIE9iamVjdElkR2V0RGF0dW0oY29udmVydGVyKSk7CisKKwkJCWlmICghSGVh cFR1cGxlSXNWYWxpZChwcm9jdHVwKSkKKwkJCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZh aWxlZCBmb3IgZnVuY3Rpb24gJXUiLCBjb252ZXJ0ZXIpOworCisJCQlwcm9jZm9ybSA9IChGb3Jt X3BnX3Byb2MpIEdFVFNUUlVDVChwcm9jdHVwKTsKKworCQkJaWYgKHByb2Nmb3JtLT5wcm9uYXJn cyAhPSAxKQorCQkJCWVsb2coRVJST1IsICJjb252ZXJ0ZXIgJXMgaXMgZXhwZWN0ZWQgdG8gaGF2 ZSBvbmUgYXJndW1lbnQiLCBOYW1lU3RyKHByb2Nmb3JtLT5wcm9uYW1lKSk7CisKKwkJCWF0dC0+ YXR0dHlwaWQgPSBwcm9jZm9ybS0+cHJvYXJndHlwZXMudmFsdWVzWzBdOworCisJCQlSZWxlYXNl U3lzQ2FjaGUocHJvY3R1cCk7CisJCX0KKwl9CisKKwlyZXR1cm4gVHVwbGVEZXNjR2V0QXR0SW5N ZXRhZGF0YShyY3ZkX3R1cGRlc2MpOworfQorCiAvKgogICogQ29uc3RydWN0IGEgdHVwbGUgZGVz Y3JpcHRvciBmb3IgdGhlIHNjYW4gdHVwbGVzIGhhbmRsZWQgYnkgYSBmb3JlaWduIGpvaW4uCiAg Ki8KQEAgLTE1NDUsNiArMTYwNCwxMiBAQCBwb3N0Z3Jlc0JlZ2luRm9yZWlnblNjYW4oRm9yZWln blNjYW5TdGF0ZSAqbm9kZSwgaW50IGVmbGFncykKIAkJCQkJCQkJCSBGZHdTY2FuUHJpdmF0ZVNl bGVjdFNxbCkpOwogCWZzc3RhdGUtPnJldHJpZXZlZF9hdHRycyA9IChMaXN0ICopIGxpc3RfbnRo KGZzcGxhbi0+ZmR3X3ByaXZhdGUsCiAJCQkJCQkJCQkJCQkgRmR3U2NhblByaXZhdGVSZXRyaWV2 ZWRBdHRycyk7CisKKwlpZiAobGlzdF9sZW5ndGgoZnNwbGFuLT5mZHdfcHJpdmF0ZSkgPiBGZHdT Y2FuUHJpdmF0ZUNvbnZlcnRlcnMpCisJCWZzc3RhdGUtPmNvbnZfbGlzdCA9IChMaXN0ICopIGxp c3RfbnRoKGZzcGxhbi0+ZmR3X3ByaXZhdGUsCisJCQkJCQkJCQkJCSAgIEZkd1NjYW5Qcml2YXRl Q29udmVydGVycyk7CisKKwogCWZzc3RhdGUtPmZldGNoX3NpemUgPSBpbnRWYWwobGlzdF9udGgo ZnNwbGFuLT5mZHdfcHJpdmF0ZSwKIAkJCQkJCQkJCQkgIEZkd1NjYW5Qcml2YXRlRmV0Y2hTaXpl KSk7CiAKQEAgLTE1NzEsNyArMTYzNiwxMCBAQCBwb3N0Z3Jlc0JlZ2luRm9yZWlnblNjYW4oRm9y ZWlnblNjYW5TdGF0ZSAqbm9kZSwgaW50IGVmbGFncykKIAkJZnNzdGF0ZS0+dHVwZGVzYyA9IGdl dF90dXBkZXNjX2Zvcl9qb2luX3NjYW5fdHVwbGVzKG5vZGUpOwogCX0KIAotCWZzc3RhdGUtPmF0 dGlubWV0YSA9IFR1cGxlRGVzY0dldEF0dEluTWV0YWRhdGEoZnNzdGF0ZS0+dHVwZGVzYyk7CisJ aWYgKGZzc3RhdGUtPmNvbnZfbGlzdCAhPSBOSUwpCisJCWZzc3RhdGUtPmF0dGlubWV0YSA9IGdl dF9yY3ZkX2F0dGlubWV0YShmc3N0YXRlLT50dXBkZXNjLCBmc3N0YXRlLT5jb252X2xpc3QpOwor CWVsc2UKKwkJZnNzdGF0ZS0+YXR0aW5tZXRhID0gVHVwbGVEZXNjR2V0QXR0SW5NZXRhZGF0YShm c3N0YXRlLT50dXBkZXNjKTsKIAogCS8qCiAJICogUHJlcGFyZSBmb3IgcHJvY2Vzc2luZyBvZiBw YXJhbWV0ZXJzIHVzZWQgaW4gcmVtb3RlIHF1ZXJ5LCBpZiBhbnkuCkBAIC0zODM0LDYgKzM5MDIs NyBAQCBmZXRjaF9tb3JlX2RhdGEoRm9yZWlnblNjYW5TdGF0ZSAqbm9kZSkKIAkJCQkJCQkJCQkg ICBmc3N0YXRlLT5yZWwsCiAJCQkJCQkJCQkJICAgZnNzdGF0ZS0+YXR0aW5tZXRhLAogCQkJCQkJ CQkJCSAgIGZzc3RhdGUtPnJldHJpZXZlZF9hdHRycywKKwkJCQkJCQkJCQkgICBmc3N0YXRlLT5j b252X2xpc3QsCiAJCQkJCQkJCQkJICAgbm9kZSwKIAkJCQkJCQkJCQkgICBmc3N0YXRlLT50ZW1w X2N4dCk7CiAJCX0KQEAgLTQzMjEsNiArNDM5MCw3IEBAIHN0b3JlX3JldHVybmluZ19yZXN1bHQo UGdGZHdNb2RpZnlTdGF0ZSAqZm1zdGF0ZSwKIAkJCQkJCQkJCQkJZm1zdGF0ZS0+cmVsLAogCQkJ CQkJCQkJCQlmbXN0YXRlLT5hdHRpbm1ldGEsCiAJCQkJCQkJCQkJCWZtc3RhdGUtPnJldHJpZXZl ZF9hdHRycywKKwkJCQkJCQkJCQkJTklMLAogCQkJCQkJCQkJCQlOVUxMLAogCQkJCQkJCQkJCQlm bXN0YXRlLT50ZW1wX2N4dCk7CiAKQEAgLTQ2MTUsNiArNDY4NSw3IEBAIGdldF9yZXR1cm5pbmdf ZGF0YShGb3JlaWduU2NhblN0YXRlICpub2RlKQogCQkJCQkJCQkJCQkJZG1zdGF0ZS0+cmVsLAog CQkJCQkJCQkJCQkJZG1zdGF0ZS0+YXR0aW5tZXRhLAogCQkJCQkJCQkJCQkJZG1zdGF0ZS0+cmV0 cmlldmVkX2F0dHJzLAorCQkJCQkJCQkJCQkJTklMLAogCQkJCQkJCQkJCQkJbm9kZSwKIAkJCQkJ CQkJCQkJCWRtc3RhdGUtPnRlbXBfY3h0KTsKIAkJCUV4ZWNTdG9yZUhlYXBUdXBsZShuZXd0dXAs IHNsb3QsIGZhbHNlKTsKQEAgLTUxOTUsNiArNTI2Niw3IEBAIGFuYWx5emVfcm93X3Byb2Nlc3Nv cihQR3Jlc3VsdCAqcmVzLCBpbnQgcm93LCBQZ0Zkd0FuYWx5emVTdGF0ZSAqYXN0YXRlKQogCQkJ CQkJCQkJCQkJCSAgIGFzdGF0ZS0+cmVsLAogCQkJCQkJCQkJCQkJCSAgIGFzdGF0ZS0+YXR0aW5t ZXRhLAogCQkJCQkJCQkJCQkJCSAgIGFzdGF0ZS0+cmV0cmlldmVkX2F0dHJzLAorCQkJCQkJCQkJ CQkJCSAgIE5JTCwKIAkJCQkJCQkJCQkJCQkgICBOVUxMLAogCQkJCQkJCQkJCQkJCSAgIGFzdGF0 ZS0+dGVtcF9jeHQpOwogCkBAIC02MDk1LDcgKzYxNjcsNyBAQCBwb3N0Z3Jlc0dldEZvcmVpZ25K b2luUGF0aHMoUGxhbm5lckluZm8gKnJvb3QsCiAgKi8KIHN0YXRpYyBib29sCiBmb3JlaWduX2dy b3VwaW5nX29rKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpncm91cGVkX3JlbCwKLQkJ CQkJTm9kZSAqaGF2aW5nUXVhbCkKKwkJCQkJTm9kZSAqaGF2aW5nUXVhbCwgUGFydGl0aW9ud2lz ZUFnZ3JlZ2F0ZVR5cGUgcGF0eXBlKQogewogCVF1ZXJ5CSAgICpxdWVyeSA9IHJvb3QtPnBhcnNl OwogCVBnRmR3UmVsYXRpb25JbmZvICpmcGluZm8gPSAoUGdGZHdSZWxhdGlvbkluZm8gKikgZ3Jv dXBlZF9yZWwtPmZkd19wcml2YXRlOwpAQCAtNjEwOSw2ICs2MTgxLDExIEBAIGZvcmVpZ25fZ3Jv dXBpbmdfb2soUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKmdyb3VwZWRfcmVsLAogCWlm IChxdWVyeS0+Z3JvdXBpbmdTZXRzKQogCQlyZXR1cm4gZmFsc2U7CiAKKworCS8qIEl0J3MgdW5z YWZlIHRvIHB1c2ggaGF2aW5nIHN0YXRlbWVudHMgd2l0aCBwYXJ0aWFsIGFnZ3JlZ2F0ZXMgKi8K KwlpZiAoKHBhdHlwZSA9PSBQQVJUSVRJT05XSVNFX0FHR1JFR0FURV9QQVJUSUFMKSAmJiBoYXZp bmdRdWFsKQorCQlyZXR1cm4gZmFsc2U7CisKIAkvKiBHZXQgdGhlIGZwaW5mbyBvZiB0aGUgdW5k ZXJseWluZyBzY2FuIHJlbGF0aW9uLiAqLwogCW9mcGluZm8gPSAoUGdGZHdSZWxhdGlvbkluZm8g KikgZnBpbmZvLT5vdXRlcnJlbC0+ZmR3X3ByaXZhdGU7CiAKQEAgLTYzNDgsNiArNjQyNSw3IEBA IHBvc3RncmVzR2V0Rm9yZWlnblVwcGVyUGF0aHMoUGxhbm5lckluZm8gKnJvb3QsIFVwcGVyUmVs YXRpb25LaW5kIHN0YWdlLAogCiAJLyogSWdub3JlIHN0YWdlcyB3ZSBkb24ndCBzdXBwb3J0OyBh bmQgc2tpcCBhbnkgZHVwbGljYXRlIGNhbGxzLiAqLwogCWlmICgoc3RhZ2UgIT0gVVBQRVJSRUxf R1JPVVBfQUdHICYmCisJCSBzdGFnZSAhPSBVUFBFUlJFTF9QQVJUSUFMX0dST1VQX0FHRyAmJgog CQkgc3RhZ2UgIT0gVVBQRVJSRUxfT1JERVJFRCAmJgogCQkgc3RhZ2UgIT0gVVBQRVJSRUxfRklO QUwpIHx8CiAJCW91dHB1dF9yZWwtPmZkd19wcml2YXRlKQpAQCAtNjM2NCw2ICs2NDQyLDEwIEBA IHBvc3RncmVzR2V0Rm9yZWlnblVwcGVyUGF0aHMoUGxhbm5lckluZm8gKnJvb3QsIFVwcGVyUmVs YXRpb25LaW5kIHN0YWdlLAogCQkJYWRkX2ZvcmVpZ25fZ3JvdXBpbmdfcGF0aHMocm9vdCwgaW5w dXRfcmVsLCBvdXRwdXRfcmVsLAogCQkJCQkJCQkJICAgKEdyb3VwUGF0aEV4dHJhRGF0YSAqKSBl eHRyYSk7CiAJCQlicmVhazsKKwkJY2FzZSBVUFBFUlJFTF9QQVJUSUFMX0dST1VQX0FHRzoKKwkJ CWFkZF9mb3JlaWduX2dyb3VwaW5nX3BhdGhzKHJvb3QsIGlucHV0X3JlbCwgb3V0cHV0X3JlbCwK KwkJCQkJCQkJCSAgIChHcm91cFBhdGhFeHRyYURhdGEgKikgZXh0cmEpOworCQkJYnJlYWs7CiAJ CWNhc2UgVVBQRVJSRUxfT1JERVJFRDoKIAkJCWFkZF9mb3JlaWduX29yZGVyZWRfcGF0aHMocm9v dCwgaW5wdXRfcmVsLCBvdXRwdXRfcmVsKTsKIAkJCWJyZWFrOwpAQCAtNjQwNCw3ICs2NDg2LDgg QEAgYWRkX2ZvcmVpZ25fZ3JvdXBpbmdfcGF0aHMoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdElu Zm8gKmlucHV0X3JlbCwKIAkJcmV0dXJuOwogCiAJQXNzZXJ0KGV4dHJhLT5wYXR5cGUgPT0gUEFS VElUSU9OV0lTRV9BR0dSRUdBVEVfTk9ORSB8fAotCQkgICBleHRyYS0+cGF0eXBlID09IFBBUlRJ VElPTldJU0VfQUdHUkVHQVRFX0ZVTEwpOworCQkgICBleHRyYS0+cGF0eXBlID09IFBBUlRJVElP TldJU0VfQUdHUkVHQVRFX0ZVTEwgfHwKKwkJICAgZXh0cmEtPnBhdHlwZSA9PSBQQVJUSVRJT05X SVNFX0FHR1JFR0FURV9QQVJUSUFMKTsKIAogCS8qIHNhdmUgdGhlIGlucHV0X3JlbCBhcyBvdXRl cnJlbCBpbiBmcGluZm8gKi8KIAlmcGluZm8tPm91dGVycmVsID0gaW5wdXRfcmVsOwpAQCAtNjQy NCw3ICs2NTA3LDcgQEAgYWRkX2ZvcmVpZ25fZ3JvdXBpbmdfcGF0aHMoUGxhbm5lckluZm8gKnJv b3QsIFJlbE9wdEluZm8gKmlucHV0X3JlbCwKIAkgKiBVc2UgSEFWSU5HIHF1YWwgZnJvbSBleHRy YS4gSW4gY2FzZSBvZiBjaGlsZCBwYXJ0aXRpb24sIGl0IHdpbGwgaGF2ZQogCSAqIHRyYW5zbGF0 ZWQgVmFycy4KIAkgKi8KLQlpZiAoIWZvcmVpZ25fZ3JvdXBpbmdfb2socm9vdCwgZ3JvdXBlZF9y ZWwsIGV4dHJhLT5oYXZpbmdRdWFsKSkKKwlpZiAoIWZvcmVpZ25fZ3JvdXBpbmdfb2socm9vdCwg Z3JvdXBlZF9yZWwsIGV4dHJhLT5oYXZpbmdRdWFsLCBleHRyYS0+cGF0eXBlKSkKIAkJcmV0dXJu OwogCiAJLyoKQEAgLTcxMjIsNiArNzIwNSwzMCBAQCBjb21wbGV0ZV9wZW5kaW5nX3JlcXVlc3Qo QXN5bmNSZXF1ZXN0ICphcmVxKQogCQkJCQkJCSAgVHVwSXNOdWxsKGFyZXEtPnJlc3VsdCkgPyAw LjAgOiAxLjApOwogfQogCisvKgorICogSW50ZXJmYWNlIHRvIGZtZ3IgdG8gY2FsbCBjb252ZXJ0 ZXJzCisgKi8KK3N0YXRpYyBEYXR1bQorY2FsbF9jb252ZXJ0ZXIoT2lkIGNvbnZlcnRlciwgT2lk IGNvbGxhdGlvbiwgRGF0dW0gdmFsdWUsIGJvb2wgaXNudWxsLCBib29sICpyZXNfaXNudWxsKQor eworCUxPQ0FMX0ZDSU5GTyhmY2luZm8sIDEpOworCUZtZ3JJbmZvCWZsaW5mbzsKKwlEYXR1bQkJ cmVzdWx0OworCisJZm1ncl9pbmZvKGNvbnZlcnRlciwgJmZsaW5mbyk7CisKKwlJbml0RnVuY3Rp b25DYWxsSW5mb0RhdGEoKmZjaW5mbywgJmZsaW5mbywgMSwgY29sbGF0aW9uLCBOVUxMLCBOVUxM KTsKKworCWZjaW5mby0+YXJnc1swXS52YWx1ZSA9IHZhbHVlOworCWZjaW5mby0+YXJnc1swXS5p c251bGwgPSBpc251bGw7CisKKwlyZXN1bHQgPSBGdW5jdGlvbkNhbGxJbnZva2UoZmNpbmZvKTsK KworCWlmIChyZXNfaXNudWxsKQorCQkqcmVzX2lzbnVsbCA9IGZjaW5mby0+aXNudWxsOworCXJl dHVybiByZXN1bHQ7Cit9CisKIC8qCiAgKiBDcmVhdGUgYSB0dXBsZSBmcm9tIHRoZSBzcGVjaWZp ZWQgcm93IG9mIHRoZSBQR3Jlc3VsdC4KICAqCkBAIC03MTQxLDYgKzcyNDgsNyBAQCBtYWtlX3R1 cGxlX2Zyb21fcmVzdWx0X3JvdyhQR3Jlc3VsdCAqcmVzLAogCQkJCQkJICAgUmVsYXRpb24gcmVs LAogCQkJCQkJICAgQXR0SW5NZXRhZGF0YSAqYXR0aW5tZXRhLAogCQkJCQkJICAgTGlzdCAqcmV0 cmlldmVkX2F0dHJzLAorCQkJCQkJICAgTGlzdCAqY29udl9saXN0LAogCQkJCQkJICAgRm9yZWln blNjYW5TdGF0ZSAqZnNzdGF0ZSwKIAkJCQkJCSAgIE1lbW9yeUNvbnRleHQgdGVtcF9jb250ZXh0 KQogewpAQCAtNzIyMyw2ICs3MzMxLDIwIEBAIG1ha2VfdHVwbGVfZnJvbV9yZXN1bHRfcm93KFBH cmVzdWx0ICpyZXMsCiAJCQkJCQkJCQkJCSAgdmFsc3RyLAogCQkJCQkJCQkJCQkgIGF0dGlubWV0 YS0+YXR0aW9wYXJhbXNbaSAtIDFdLAogCQkJCQkJCQkJCQkgIGF0dGlubWV0YS0+YXR0dHlwbW9k c1tpIC0gMV0pOworCQkJaWYgKGNvbnZfbGlzdCAhPSBOSUwpCisJCQl7CisJCQkJT2lkCQkJY29u dmVydGVyID0gbGlzdF9udGhfb2lkKGNvbnZfbGlzdCwgaSAtIDEpOworCisJCQkJaWYgKGNvbnZl cnRlciAhPSBJbnZhbGlkT2lkKQorCQkJCXsKKwkJCQkJRm9ybV9wZ19hdHRyaWJ1dGUgYXR0ID0g VHVwbGVEZXNjQXR0cih0dXBkZXNjLCBpKTsKKwkJCQkJYm9vbAkJcmVzX2lzbnVsbDsKKworCQkJ CQl2YWx1ZXNbaSAtIDFdID0gY2FsbF9jb252ZXJ0ZXIoY29udmVydGVyLCBhdHQtPmF0dGNvbGxh dGlvbiwgdmFsdWVzW2kgLSAxXSwgbnVsbHNbaSAtIDFdLCAmcmVzX2lzbnVsbCk7CisKKwkJCQkJ bnVsbHNbaSAtIDFdID0gcmVzX2lzbnVsbDsKKwkJCQl9CisJCQl9CiAJCX0KIAkJZWxzZSBpZiAo aSA9PSBTZWxmSXRlbVBvaW50ZXJBdHRyaWJ1dGVOdW1iZXIpCiAJCXsKQEAgLTc0ODYsMyArNzYw OCw1NCBAQCBnZXRfYmF0Y2hfc2l6ZV9vcHRpb24oUmVsYXRpb24gcmVsKQogCiAJcmV0dXJuIGJh dGNoX3NpemU7CiB9CisKKy8qCisgKiBGb3IgVVBQRVJfUkVMIGJ1aWxkIGEgbGlzdCBvZiBjb252 ZXJ0ZXJzLCBjb3JyZXNwb25kaW5nIHRvIHRsaXN0IGVudHJpZXMuCisgKi8KK3N0YXRpYyBMaXN0 ICoKK2J1aWxkX2NvbnZfbGlzdChSZWxPcHRJbmZvICpmb3JlaWducmVsKQoreworCUxpc3QJICAg KmNvbnZfbGlzdCA9IE5JTDsKKwlQZ0Zkd1JlbGF0aW9uSW5mbyAqZnBpbmZvID0gKFBnRmR3UmVs YXRpb25JbmZvICopIGZvcmVpZ25yZWwtPmZkd19wcml2YXRlOworCUxpc3RDZWxsICAgKmxjOwor CisJaWYgKCFJU19VUFBFUl9SRUwoZm9yZWlnbnJlbCkpCisJCXJldHVybiBOSUw7CisKKwkvKiBG b3IgVVBQRVJfUkVMIHRsaXN0IG1hdGNoZXMgZ3JvdXBlZF90bGlzdCAqLworCWZvcmVhY2gobGMs IGZwaW5mby0+Z3JvdXBlZF90bGlzdCkKKwl7CisJCVRhcmdldEVudHJ5ICp0bGVudHJ5ID0gKFRh cmdldEVudHJ5ICopIGxmaXJzdChsYyk7CisJCU9pZAkJCWNvbnZlcnRlcl9vaWQgPSBJbnZhbGlk T2lkOworCisJCWlmIChJc0EodGxlbnRyeS0+ZXhwciwgQWdncmVmKSkKKwkJeworCQkJQWdncmVm CSAgICphZ2cgPSAoQWdncmVmICopIHRsZW50cnktPmV4cHI7CisKKwkJCWlmIChhZ2ctPmFnZ3Nw bGl0ID09IEFHR1NQTElUX0lOSVRJQUxfU0VSSUFMICYmIGFnZy0+YWdndHJhbnN0eXBlID09IElO VEVSTkFMT0lEKQorCQkJeworCQkJCUhlYXBUdXBsZQlhZ2d0dXA7CisJCQkJRm9ybV9wZ19hZ2dy ZWdhdGUgYWdnZm9ybTsKKworCQkJCWFnZ3R1cCA9IFNlYXJjaFN5c0NhY2hlMShBR0dGTk9JRCwg T2JqZWN0SWRHZXREYXR1bShhZ2ctPmFnZ2Zub2lkKSk7CisJCQkJaWYgKCFIZWFwVHVwbGVJc1Zh bGlkKGFnZ3R1cCkpCisJCQkJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBm dW5jdGlvbiAldSIsIGFnZy0+YWdnZm5vaWQpOworCisJCQkJYWdnZm9ybSA9IChGb3JtX3BnX2Fn Z3JlZ2F0ZSkgR0VUU1RSVUNUKGFnZ3R1cCk7CisKKwkJCQljb252ZXJ0ZXJfb2lkID0gYWdnZm9y bS0+YWdncGFydGlhbGNvbnZlcnRlcmZuOworCQkJCUFzc2VydChjb252ZXJ0ZXJfb2lkICE9IElu dmFsaWRPaWQpOworCisJCQkJUmVsZWFzZVN5c0NhY2hlKGFnZ3R1cCk7CisJCQl9CisJCX0KKwor CQkvKgorCQkgKiBXZSBhcHBlbmQgSW52YWxpZE9pZCB0byBjb252X2xpc3QgdG8gcHJlc2VydmUg b25lLXRvLW9uZSBtYXBwaW5nCisJCSAqIGJldHdlZW4gdGxpc3QgYW5kIGNvbnZfbGlzdCBtZW1i ZXJzLgorCQkgKi8KKwkJY29udl9saXN0ID0gbGFwcGVuZF9vaWQoY29udl9saXN0LCBjb252ZXJ0 ZXJfb2lkKTsKKwl9CisKKwlyZXR1cm4gY29udl9saXN0OworfQpkaWZmIC0tZ2l0IGEvY29udHJp Yi9wb3N0Z3Jlc19mZHcvc3FsL3Bvc3RncmVzX2Zkdy5zcWwgYi9jb250cmliL3Bvc3RncmVzX2Zk dy9zcWwvcG9zdGdyZXNfZmR3LnNxbAppbmRleCA5NWI2YjcxOTJlNi4uODgyMTA0NTJlM2YgMTAw NjQ0Ci0tLSBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3NxbC9wb3N0Z3Jlc19mZHcuc3FsCisrKyBi L2NvbnRyaWIvcG9zdGdyZXNfZmR3L3NxbC9wb3N0Z3Jlc19mZHcuc3FsCkBAIC0yNzU1LDE1ICsy NzU1LDE1IEBAIFJFU0VUIGVuYWJsZV9wYXJ0aXRpb253aXNlX2pvaW47CiAtLSB0ZXN0IHBhcnRp dGlvbndpc2UgYWdncmVnYXRlcwogLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCi1DUkVBVEUgVEFCTEUgcGFnZ190 YWIgKGEgaW50LCBiIGludCwgYyB0ZXh0KSBQQVJUSVRJT04gQlkgUkFOR0UoYSk7CitDUkVBVEUg VEFCTEUgcGFnZ190YWIgKGEgaW50LCBiIGludCwgYyB0ZXh0LCBkIG51bWVyaWMpIFBBUlRJVElP TiBCWSBSQU5HRShhKTsKIAogQ1JFQVRFIFRBQkxFIHBhZ2dfdGFiX3AxIChMSUtFIHBhZ2dfdGFi KTsKIENSRUFURSBUQUJMRSBwYWdnX3RhYl9wMiAoTElLRSBwYWdnX3RhYik7CiBDUkVBVEUgVEFC TEUgcGFnZ190YWJfcDMgKExJS0UgcGFnZ190YWIpOwogCi1JTlNFUlQgSU5UTyBwYWdnX3RhYl9w MSBTRUxFQ1QgaSAlIDMwLCBpICUgNTAsIHRvX2NoYXIoaS8zMCwgJ0ZNMDAwMCcpIEZST00gZ2Vu ZXJhdGVfc2VyaWVzKDEsIDMwMDApIGkgV0hFUkUgKGkgJSAzMCkgPCAxMDsKLUlOU0VSVCBJTlRP IHBhZ2dfdGFiX3AyIFNFTEVDVCBpICUgMzAsIGkgJSA1MCwgdG9fY2hhcihpLzMwLCAnRk0wMDAw JykgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMzAwMCkgaSBXSEVSRSAoaSAlIDMwKSA8IDIwIGFu ZCAoaSAlIDMwKSA+PSAxMDsKLUlOU0VSVCBJTlRPIHBhZ2dfdGFiX3AzIFNFTEVDVCBpICUgMzAs IGkgJSA1MCwgdG9fY2hhcihpLzMwLCAnRk0wMDAwJykgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwg MzAwMCkgaSBXSEVSRSAoaSAlIDMwKSA8IDMwIGFuZCAoaSAlIDMwKSA+PSAyMDsKK0lOU0VSVCBJ TlRPIHBhZ2dfdGFiX3AxIFNFTEVDVCBpICUgMzAsIGkgJSA1MCwgdG9fY2hhcihpLzMwLCAnRk0w MDAwJyksIGkgJSA0MCBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAzMDAwKSBpIFdIRVJFIChpICUg MzApIDwgMTA7CitJTlNFUlQgSU5UTyBwYWdnX3RhYl9wMiBTRUxFQ1QgaSAlIDMwLCBpICUgNTAs IHRvX2NoYXIoaS8zMCwgJ0ZNMDAwMCcpLCBpICUgNDAgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwg MzAwMCkgaSBXSEVSRSAoaSAlIDMwKSA8IDIwIGFuZCAoaSAlIDMwKSA+PSAxMDsKK0lOU0VSVCBJ TlRPIHBhZ2dfdGFiX3AzIFNFTEVDVCBpICUgMzAsIGkgJSA1MCwgdG9fY2hhcihpLzMwLCAnRk0w MDAwJyksIGkgJSA0MCBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAzMDAwKSBpIFdIRVJFIChpICUg MzApIDwgMzAgYW5kIChpICUgMzApID49IDIwOwogCiAtLSBDcmVhdGUgZm9yZWlnbiBwYXJ0aXRp b25zCiBDUkVBVEUgRk9SRUlHTiBUQUJMRSBmcGFnZ190YWJfcDEgUEFSVElUSU9OIE9GIHBhZ2df dGFiIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEwKSBTRVJWRVIgbG9vcGJhY2sgT1BUSU9OUyAo dGFibGVfbmFtZSAncGFnZ190YWJfcDEnKTsKQEAgLTI3OTcsNiArMjc5NywyNSBAQCBTRUxFQ1Qg YSwgY291bnQodDEpIEZST00gcGFnZ190YWIgdDEgR1JPVVAgQlkgYSBIQVZJTkcgYXZnKGIpIDwg MjIgT1JERVIgQlkgMTsKIEVYUExBSU4gKENPU1RTIE9GRikKIFNFTEVDVCBiLCBhdmcoYSksIG1h eChhKSwgY291bnQoKikgRlJPTSBwYWdnX3RhYiBHUk9VUCBCWSBiIEhBVklORyBzdW0oYSkgPCA3 MDAgT1JERVIgQlkgMTsKIAorLS0gSXQncyB1bnNhZmUgdG8gcHVzaCBkb3duIGhhdmluZyBjbGF1 c2Ugd2hlbiB0aGVyZSBhcmUgcGFydGlhbCBhZ2dyZWdhdGVzCitFWFBMQUlOIChWRVJCT1NFLCBD T1NUUyBPRkYpCitTRUxFQ1QgYiwgbWF4KGEpLCBjb3VudCgqKSBGUk9NIHBhZ2dfdGFiIEdST1VQ IEJZIGIgSEFWSU5HIHN1bShhKSA8IDcwMCBPUkRFUiBCWSAxOworCistLSBQYXJ0aWFsIGFnZ3Jl Z2F0ZXMgYXJlIGZpbmUgdG8gcHVzaCBkb3duIHdpdGhvdXQgaGF2aW5nIGNsYXVzZQorRVhQTEFJ TiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIGIsIG1heChhKSwgY291bnQoKikgRlJPTSBw YWdnX3RhYiBHUk9VUCBCWSBiIE9SREVSIEJZIDE7CitTRUxFQ1QgYiwgbWF4KGEpLCBjb3VudCgq KSBGUk9NIHBhZ2dfdGFiIEdST1VQIEJZIGIgT1JERVIgQlkgMTsKKworLS0gUGFydGlhbCBhZ2dy ZWdhdGVzIGFyZSBmaW5lIHRvIHB1c2ggZG93bgorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZG KQorU0VMRUNUIG1heChhKSwgY291bnQoKiksIHN1bShkKSBGUk9NIHBhZ2dfdGFiOworU0VMRUNU IG1heChhKSwgY291bnQoKiksIHN1bShkKSBGUk9NIHBhZ2dfdGFiOworCistLSBTaG91bGRuJ3Qg dHJ5IHRvIHB1c2ggZG93bgorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIG1h eChhKSwgY291bnQoZGlzdGluY3QgYikgRlJPTSBwYWdnX3RhYjsKK1NFTEVDVCBtYXgoYSksIGNv dW50KGRpc3RpbmN0IGIpIEZST00gcGFnZ190YWI7CisKIC0tID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tIGFjY2Vz cyByaWdodHMgYW5kIHN1cGVydXNlcgogLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpkaWZmIC0tZ2l0IGEvZG9jL3Ny Yy9zZ21sL3JlZi9jcmVhdGVfYWdncmVnYXRlLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0 ZV9hZ2dyZWdhdGUuc2dtbAppbmRleCAyMjJlMGFhNWM5ZC4uYjA1NDZkY2IxZDIgMTAwNjQ0Ci0t LSBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX2FnZ3JlZ2F0ZS5zZ21sCisrKyBiL2RvYy9zcmMv c2dtbC9yZWYvY3JlYXRlX2FnZ3JlZ2F0ZS5zZ21sCkBAIC0zMSw2ICszMSw3IEBAIENSRUFURSBb IE9SIFJFUExBQ0UgXSBBR0dSRUdBVEUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5h bWU8L3JlcGxhY2VhYmxlCiAgICAgWyAsIENPTUJJTkVGVU5DID0gPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPmNvbWJpbmVmdW5jPC9yZXBsYWNlYWJsZT4gXQogICAgIFsgLCBTRVJJQUxG VU5DID0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnNlcmlhbGZ1bmM8L3JlcGxhY2Vh YmxlPiBdCiAgICAgWyAsIERFU0VSSUFMRlVOQyA9IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5kZXNlcmlhbGZ1bmM8L3JlcGxhY2VhYmxlPiBdCisgICAgWyAsIFBBUlRJQUxDT05WRVJU RVJGVU5DID0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpYWxjb252ZXJ0ZXJm dW5jPC9yZXBsYWNlYWJsZT4gXQogICAgIFsgLCBJTklUQ09ORCA9IDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5pbml0aWFsX2NvbmRpdGlvbjwvcmVwbGFjZWFibGU+IF0KICAgICBbICwg TVNGVU5DID0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm1zZnVuYzwvcmVwbGFjZWFi bGU+IF0KICAgICBbICwgTUlOVkZVTkMgPSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ bWludmZ1bmM8L3JlcGxhY2VhYmxlPiBdCkBAIC00Miw2ICs0Myw3IEBAIENSRUFURSBbIE9SIFJF UExBQ0UgXSBBR0dSRUdBVEUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3Jl cGxhY2VhYmxlCiAgICAgWyAsIE1JTklUQ09ORCA9IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5taW5pdGlhbF9jb25kaXRpb248L3JlcGxhY2VhYmxlPiBdCiAgICAgWyAsIFNPUlRPUCA9 IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zb3J0X29wZXJhdG9yPC9yZXBsYWNlYWJs ZT4gXQogICAgIFsgLCBQQVJBTExFTCA9IHsgU0FGRSB8IFJFU1RSSUNURUQgfCBVTlNBRkUgfSBd CisgICAgWyAsIFBBUlRJQUxfUFVTSERPV05fU0FGRSBdCiApCiAKIENSRUFURSBbIE9SIFJFUExB Q0UgXSBBR0dSRUdBVEUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxh Y2VhYmxlPiAoIFsgWyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+YXJnbW9kZTwvcmVw bGFjZWFibGU+IF0gWyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+YXJnbmFtZTwvcmVw bGFjZWFibGU+IF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmFyZ19kYXRhX3R5cGU8 L3JlcGxhY2VhYmxlPiBbICwgLi4uIF0gXQpAQCAtNjEwLDYgKzYxMiwyMSBAQCBTRUxFQ1QgY29s IEZST00gdGFiIE9SREVSIEJZIGNvbCBVU0lORyBzb3J0b3AgTElNSVQgMTsKICAgICA8L2xpc3Rp dGVtPgogICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+ PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpYWxjb252ZXJ0ZXJmdW5jPC9yZXBs YWNlYWJsZT48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIEFuIGFn Z3JlZ2F0ZSBmdW5jdGlvbiB3aG9zZSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c3Rh dGVfZGF0YV90eXBlPC9yZXBsYWNlYWJsZT4KKyAgICAgIGlzIDx0eXBlPmludGVybmFsPC90eXBl PiBjYW4gYmUgbWFya2VkIGFzIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5QQVJUSUFM X1BVU0hET1dOX1NBRkU8L3JlcGxhY2VhYmxlPgorICAgICAgb25seSBpZiBpdCBoYXMgYSA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGlhbGNvbnZlcnRlcmZ1bmM8L3JlcGxhY2Vh YmxlPiBmdW5jdGlvbiwKKyAgICAgIHdoaWNoIG11c3QgY29udmVydCBwYXJ0aWFsIHJlc3VsdCBy ZXByZXNlbnRhdGlvbiBmcm9tIGFnZ3JlZ2F0ZSByZXN1bHQgdHlwZQorICAgICAgdG8gc2VyaWFs aXplZCBpbnRlcm5hbCByZXByZXNlbnRhdGlvbi4gV2hlbiB0aGlzIGZ1bmN0aW9uIGlzIGRlZmlu ZWQsCisgICAgICBpdCBzaG91bGQgZ2V0IG9uZSBhcmd1bWVudCwgdHlwZSBvZiB3aGljaCBtYXRj aGVzIGFnZ3JyZWdhdGUKKyAgICAgIHJlc3VsdCB0eXBlLCBhbmQgc2hvdWxkIHJldHVybiA8dHlw ZT5ieXRlYTwvdHlwZT4uCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJs aXN0ZW50cnk+CisKICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPnNvcnRfb3BlcmF0b3I8L3JlcGxhY2VhYmxlPjwvdGVybT4KICAgICA8 bGlzdGl0ZW0+CkBAIC02MzksNiArNjU2LDE2IEBAIFNFTEVDVCBjb2wgRlJPTSB0YWIgT1JERVIg QlkgY29sIFVTSU5HIHNvcnRvcCBMSU1JVCAxOwogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxp c3RlbnRyeT4KIAorICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48bGl0ZXJhbD5QQVJUSUFM X1BVU0hET1dOX1NBRkU8L2xpdGVyYWw+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBh cmE+CisgICAgICBUaGlzIGZsYWcgc3BlY2lmaWVzIHRoYXQgcGFydGlhbCBhZ2dyZWdhdGUgY29t cHV0YXRpb24gY2FuIGJlIGRlbGVnYXRlZAorICAgICAgdG8gZm9yZWlnbiBzZXJ2ZXIuCisgICAg IDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKICAgIDx2YXJs aXN0ZW50cnk+CiAgICAgPHRlcm0+PGxpdGVyYWw+SFlQT1RIRVRJQ0FMPC9saXRlcmFsPjwvdGVy bT4KICAgICA8bGlzdGl0ZW0+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX2Fn Z3JlZ2F0ZS5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19hZ2dyZWdhdGUuYwppbmRleCAwZDBk YWE2OWIzNC4uNTIxNzk0Y2ZiZWEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdf YWdncmVnYXRlLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19hZ2dyZWdhdGUuYwpAQCAt NjAsNiArNjAsNyBAQCBBZ2dyZWdhdGVDcmVhdGUoY29uc3QgY2hhciAqYWdnTmFtZSwKIAkJCQlM aXN0ICphZ2djb21iaW5lZm5OYW1lLAogCQkJCUxpc3QgKmFnZ3NlcmlhbGZuTmFtZSwKIAkJCQlM aXN0ICphZ2dkZXNlcmlhbGZuTmFtZSwKKwkJCQlMaXN0ICphZ2dwYXJ0aWFsY29udmVydGVyZm5O YW1lLAogCQkJCUxpc3QgKmFnZ210cmFuc2ZuTmFtZSwKIAkJCQlMaXN0ICphZ2dtaW52dHJhbnNm bk5hbWUsCiAJCQkJTGlzdCAqYWdnbWZpbmFsZm5OYW1lLApAQCAtNzQsNyArNzUsOCBAQCBBZ2dy ZWdhdGVDcmVhdGUoY29uc3QgY2hhciAqYWdnTmFtZSwKIAkJCQlpbnQzMiBhZ2dtVHJhbnNTcGFj ZSwKIAkJCQljb25zdCBjaGFyICphZ2dpbml0dmFsLAogCQkJCWNvbnN0IGNoYXIgKmFnZ21pbml0 dmFsLAotCQkJCWNoYXIgcHJvcGFyYWxsZWwpCisJCQkJY2hhciBwcm9wYXJhbGxlbCwKKwkJCQli b29sIHBhcnRpYWxQdXNoZG93blNhZmUpCiB7CiAJUmVsYXRpb24JYWdnZGVzYzsKIAlIZWFwVHVw bGUJdHVwOwpAQCAtODgsNiArOTAsNyBAQCBBZ2dyZWdhdGVDcmVhdGUoY29uc3QgY2hhciAqYWdn TmFtZSwKIAlPaWQJCQljb21iaW5lZm4gPSBJbnZhbGlkT2lkOyAvKiBjYW4gYmUgb21pdHRlZCAq LwogCU9pZAkJCXNlcmlhbGZuID0gSW52YWxpZE9pZDsJLyogY2FuIGJlIG9taXR0ZWQgKi8KIAlP aWQJCQlkZXNlcmlhbGZuID0gSW52YWxpZE9pZDsJLyogY2FuIGJlIG9taXR0ZWQgKi8KKwlPaWQJ CQlwYXJ0aWFsY29udmVydGVyZm4gPSBJbnZhbGlkT2lkOwkvKiBjYW4gYmUgb21pdHRlZCAqLwog CU9pZAkJCW10cmFuc2ZuID0gSW52YWxpZE9pZDsJLyogY2FuIGJlIG9taXR0ZWQgKi8KIAlPaWQJ CQltaW52dHJhbnNmbiA9IEludmFsaWRPaWQ7CS8qIGNhbiBiZSBvbWl0dGVkICovCiAJT2lkCQkJ bWZpbmFsZm4gPSBJbnZhbGlkT2lkOwkvKiBjYW4gYmUgb21pdHRlZCAqLwpAQCAtNTY5LDYgKzU3 MiwyNyBAQCBBZ2dyZWdhdGVDcmVhdGUoY29uc3QgY2hhciAqYWdnTmFtZSwKIAkJCQkJCQlmb3Jt YXRfdHlwZV9iZShmaW5hbHR5cGUpKSkpOwogCX0KIAorCS8qCisJICogVmFsaWRhdGUgdGhlIHBh cnRpYWwgY29udmVydGVyLCBpZiBwcmVzZW50LgorCSAqLworCWlmIChhZ2dwYXJ0aWFsY29udmVy dGVyZm5OYW1lKQorCXsKKwkJZm5BcmdzWzBdID0gZmluYWx0eXBlOworCisJCXBhcnRpYWxjb252 ZXJ0ZXJmbiA9IGxvb2t1cF9hZ2dfZnVuY3Rpb24oYWdncGFydGlhbGNvbnZlcnRlcmZuTmFtZSwg MSwKKwkJCQkJCQkJCQkJICBmbkFyZ3MsIEludmFsaWRPaWQsCisJCQkJCQkJCQkJCSAgJnJldHR5 cGUpOworCisJCWlmIChyZXR0eXBlICE9IEJZVEVBT0lEKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJ CQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBVFlQRV9NSVNNQVRDSCksCisJCQkJCSBlcnJtc2coInJl dHVybiB0eXBlIG9mIHBhcnRpYWwgc2VyaWFsaXphdGlvbiBmdW5jdGlvbiAlcyBpcyBub3QgJXMi LAorCQkJCQkJCU5hbWVMaXN0VG9TdHJpbmcoYWdnc2VyaWFsZm5OYW1lKSwKKwkJCQkJCQlmb3Jt YXRfdHlwZV9iZShCWVRFQU9JRCkpKSk7CisKKwl9CisKKwogCS8qIGhhbmRsZSBzb3J0b3AsIGlm IHN1cHBsaWVkICovCiAJaWYgKGFnZ3NvcnRvcE5hbWUpCiAJewpAQCAtNjY0LDYgKzY4OCw3IEBA IEFnZ3JlZ2F0ZUNyZWF0ZShjb25zdCBjaGFyICphZ2dOYW1lLAogCXZhbHVlc1tBbnVtX3BnX2Fn Z3JlZ2F0ZV9hZ2djb21iaW5lZm4gLSAxXSA9IE9iamVjdElkR2V0RGF0dW0oY29tYmluZWZuKTsK IAl2YWx1ZXNbQW51bV9wZ19hZ2dyZWdhdGVfYWdnc2VyaWFsZm4gLSAxXSA9IE9iamVjdElkR2V0 RGF0dW0oc2VyaWFsZm4pOwogCXZhbHVlc1tBbnVtX3BnX2FnZ3JlZ2F0ZV9hZ2dkZXNlcmlhbGZu IC0gMV0gPSBPYmplY3RJZEdldERhdHVtKGRlc2VyaWFsZm4pOworCXZhbHVlc1tBbnVtX3BnX2Fn Z3JlZ2F0ZV9hZ2dwYXJ0aWFsY29udmVydGVyZm4gLSAxXSA9IE9iamVjdElkR2V0RGF0dW0ocGFy dGlhbGNvbnZlcnRlcmZuKTsKIAl2YWx1ZXNbQW51bV9wZ19hZ2dyZWdhdGVfYWdnbXRyYW5zZm4g LSAxXSA9IE9iamVjdElkR2V0RGF0dW0obXRyYW5zZm4pOwogCXZhbHVlc1tBbnVtX3BnX2FnZ3Jl Z2F0ZV9hZ2dtaW52dHJhbnNmbiAtIDFdID0gT2JqZWN0SWRHZXREYXR1bShtaW52dHJhbnNmbik7 CiAJdmFsdWVzW0FudW1fcGdfYWdncmVnYXRlX2FnZ21maW5hbGZuIC0gMV0gPSBPYmplY3RJZEdl dERhdHVtKG1maW5hbGZuKTsKQEAgLTY3Niw2ICs3MDEsNyBAQCBBZ2dyZWdhdGVDcmVhdGUoY29u c3QgY2hhciAqYWdnTmFtZSwKIAl2YWx1ZXNbQW51bV9wZ19hZ2dyZWdhdGVfYWdndHJhbnNzcGFj ZSAtIDFdID0gSW50MzJHZXREYXR1bShhZ2dUcmFuc1NwYWNlKTsKIAl2YWx1ZXNbQW51bV9wZ19h Z2dyZWdhdGVfYWdnbXRyYW5zdHlwZSAtIDFdID0gT2JqZWN0SWRHZXREYXR1bShhZ2dtVHJhbnNU eXBlKTsKIAl2YWx1ZXNbQW51bV9wZ19hZ2dyZWdhdGVfYWdnbXRyYW5zc3BhY2UgLSAxXSA9IElu dDMyR2V0RGF0dW0oYWdnbVRyYW5zU3BhY2UpOworCXZhbHVlc1tBbnVtX3BnX2FnZ3JlZ2F0ZV9h Z2dwYXJ0aWFscHVzaGRvd25zYWZlIC0gMV0gPSBCb29sR2V0RGF0dW0ocGFydGlhbFB1c2hkb3du U2FmZSk7CiAJaWYgKGFnZ2luaXR2YWwpCiAJCXZhbHVlc1tBbnVtX3BnX2FnZ3JlZ2F0ZV9hZ2dp bml0dmFsIC0gMV0gPSBDU3RyaW5nR2V0VGV4dERhdHVtKGFnZ2luaXR2YWwpOwogCWVsc2UKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FnZ3JlZ2F0ZWNtZHMuYyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2FnZ3JlZ2F0ZWNtZHMuYwppbmRleCAwMTBlY2E3MzQwYS4uNDE0ZmMwOWEy NjMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FnZ3JlZ2F0ZWNtZHMuYworKysg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy9hZ2dyZWdhdGVjbWRzLmMKQEAgLTY5LDExICs2OSwxMyBA QCBEZWZpbmVBZ2dyZWdhdGUoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCUxpc3QJICAgKmNvbWJpbmVm dW5jTmFtZSA9IE5JTDsKIAlMaXN0CSAgICpzZXJpYWxmdW5jTmFtZSA9IE5JTDsKIAlMaXN0CSAg ICpkZXNlcmlhbGZ1bmNOYW1lID0gTklMOworCUxpc3QJICAgKnBhcnRpYWxjb252ZXJ0ZXJmdW5j TmFtZSA9IE5JTDsKIAlMaXN0CSAgICptdHJhbnNmdW5jTmFtZSA9IE5JTDsKIAlMaXN0CSAgICpt aW52dHJhbnNmdW5jTmFtZSA9IE5JTDsKIAlMaXN0CSAgICptZmluYWxmdW5jTmFtZSA9IE5JTDsK IAlib29sCQlmaW5hbGZ1bmNFeHRyYUFyZ3MgPSBmYWxzZTsKIAlib29sCQltZmluYWxmdW5jRXh0 cmFBcmdzID0gZmFsc2U7CisJYm9vbAkJcGFydGlhbFB1c2hkb3duU2FmZSA9IGZhbHNlOwogCWNo YXIJCWZpbmFsZnVuY01vZGlmeSA9IDA7CiAJY2hhcgkJbWZpbmFsZnVuY01vZGlmeSA9IDA7CiAJ TGlzdAkgICAqc29ydG9wZXJhdG9yTmFtZSA9IE5JTDsKQEAgLTE0Miw2ICsxNDQsOCBAQCBEZWZp bmVBZ2dyZWdhdGUoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJc2VyaWFsZnVuY05hbWUgPSBkZWZH ZXRRdWFsaWZpZWROYW1lKGRlZmVsKTsKIAkJZWxzZSBpZiAoc3RyY21wKGRlZmVsLT5kZWZuYW1l LCAiZGVzZXJpYWxmdW5jIikgPT0gMCkKIAkJCWRlc2VyaWFsZnVuY05hbWUgPSBkZWZHZXRRdWFs aWZpZWROYW1lKGRlZmVsKTsKKwkJZWxzZSBpZiAoc3RyY21wKGRlZmVsLT5kZWZuYW1lLCAicGFy dGlhbGNvbnZlcnRlcmZ1bmMiKSA9PSAwKQorCQkJcGFydGlhbGNvbnZlcnRlcmZ1bmNOYW1lID0g ZGVmR2V0UXVhbGlmaWVkTmFtZShkZWZlbCk7CiAJCWVsc2UgaWYgKHN0cmNtcChkZWZlbC0+ZGVm bmFtZSwgIm1zZnVuYyIpID09IDApCiAJCQltdHJhbnNmdW5jTmFtZSA9IGRlZkdldFF1YWxpZmll ZE5hbWUoZGVmZWwpOwogCQllbHNlIGlmIChzdHJjbXAoZGVmZWwtPmRlZm5hbWUsICJtaW52ZnVu YyIpID09IDApCkBAIC0xODksNiArMTkzLDggQEAgRGVmaW5lQWdncmVnYXRlKFBhcnNlU3RhdGUg KnBzdGF0ZSwKIAkJCW1pbml0dmFsID0gZGVmR2V0U3RyaW5nKGRlZmVsKTsKIAkJZWxzZSBpZiAo c3RyY21wKGRlZmVsLT5kZWZuYW1lLCAicGFyYWxsZWwiKSA9PSAwKQogCQkJcGFyYWxsZWwgPSBk ZWZHZXRTdHJpbmcoZGVmZWwpOworCQllbHNlIGlmIChzdHJjbXAoZGVmZWwtPmRlZm5hbWUsICJw YXJ0aWFsX3B1c2hkb3duX3NhZmUiKSA9PSAwKQorCQkJcGFydGlhbFB1c2hkb3duU2FmZSA9IGRl ZkdldEJvb2xlYW4oZGVmZWwpOwogCQllbHNlCiAJCQllcmVwb3J0KFdBUk5JTkcsCiAJCQkJCShl cnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKQEAgLTM3Miw2ICszNzgsMTggQEAgRGVmaW5l QWdncmVnYXRlKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkgZXJybXNnKCJtdXN0IHNwZWNpZnkg Ym90aCBvciBuZWl0aGVyIG9mIHNlcmlhbGl6YXRpb24gYW5kIGRlc2VyaWFsaXphdGlvbiBmdW5j dGlvbnMiKSkpOwogCX0KIAorCWlmIChwYXJ0aWFsY29udmVydGVyZnVuY05hbWUpCisJeworCQkv KgorCQkgKiBDb252ZXJ0ZXIgaXMgb25seSBuZWVkZWQvYWxsb3dlZCBmb3IgdHJhbnN0eXBlIElO VEVSTkFMLgorCQkgKi8KKwkJaWYgKHRyYW5zVHlwZUlkICE9IElOVEVSTkFMT0lEKQorCQkJZXJl cG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX0ZVTkNUSU9OX0RFRklO SVRJT04pLAorCQkJCQkgZXJybXNnKCJwYXJ0aWFsIGNvbnZlcnRlcnMgbWF5IGJlIHNwZWNpZmll ZCBvbmx5IHdoZW4gdGhlIGFnZ3JlZ2F0ZSB0cmFuc2l0aW9uIGRhdGEgdHlwZSBpcyAlcyIsCisJ CQkJCQkJZm9ybWF0X3R5cGVfYmUoSU5URVJOQUxPSUQpKSkpOworCX0KKwogCS8qCiAJICogSWYg YSBtb3ZpbmctYWdncmVnYXRlIHRyYW5zdHlwZSBpcyBzcGVjaWZpZWQsIGxvb2sgdGhhdCB1cC4g IFNhbWUKIAkgKiByZXN0cmljdGlvbnMgYXMgZm9yIHRyYW5zdHlwZS4KQEAgLTQ1Nyw2ICs0NzUs OCBAQCBEZWZpbmVBZ2dyZWdhdGUoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJICAgY29tYmlu ZWZ1bmNOYW1lLCAvKiBjb21iaW5lIGZ1bmN0aW9uIG5hbWUgKi8KIAkJCQkJCSAgIHNlcmlhbGZ1 bmNOYW1lLAkvKiBzZXJpYWwgZnVuY3Rpb24gbmFtZSAqLwogCQkJCQkJICAgZGVzZXJpYWxmdW5j TmFtZSwJLyogZGVzZXJpYWwgZnVuY3Rpb24gbmFtZSAqLworCQkJCQkJICAgcGFydGlhbGNvbnZl cnRlcmZ1bmNOYW1lLAkvKiBwYXJ0aWFsIGNvbnZlcnRlciBmdW5jdGlvbgorCQkJCQkJCQkJCQkJ CSAqIG5hbWUgKi8KIAkJCQkJCSAgIG10cmFuc2Z1bmNOYW1lLAkvKiBmd2QgdHJhbnMgZnVuY3Rp b24gbmFtZSAqLwogCQkJCQkJICAgbWludnRyYW5zZnVuY05hbWUsCS8qIGludiB0cmFucyBmdW5j dGlvbiBuYW1lICovCiAJCQkJCQkgICBtZmluYWxmdW5jTmFtZSwJLyogZmluYWwgZnVuY3Rpb24g bmFtZSAqLwpAQCAtNDcxLDcgKzQ5MSw4IEBAIERlZmluZUFnZ3JlZ2F0ZShQYXJzZVN0YXRlICpw c3RhdGUsCiAJCQkJCQkgICBtdHJhbnNTcGFjZSwgLyogdHJhbnNpdGlvbiBzcGFjZSAqLwogCQkJ CQkJICAgaW5pdHZhbCwgLyogaW5pdGlhbCBjb25kaXRpb24gKi8KIAkJCQkJCSAgIG1pbml0dmFs LAkvKiBpbml0aWFsIGNvbmRpdGlvbiAqLwotCQkJCQkJICAgcHJvcGFyYWxsZWwpOwkvKiBwYXJh bGxlbCBzYWZlPyAqLworCQkJCQkJICAgcHJvcGFyYWxsZWwsIC8qIHBhcmFsbGVsIHNhZmU/ICov CisJCQkJCQkgICBwYXJ0aWFsUHVzaGRvd25TYWZlKTsJLyogcGFydGlhbCBwdXNoZG93biBzYWZl PyAqLwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L251bWVyaWMu YyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9udW1lcmljLmMKaW5kZXggNDU1NDdmNmFlN2YuLjM5 OGRiMjkxNzBiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvbnVtZXJpYy5jCisr KyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9udW1lcmljLmMKQEAgLTU3NzEsNiArNTc3MSw1MiBA QCBpbnQ4X2F2Z19kZXNlcmlhbGl6ZShQR19GVU5DVElPTl9BUkdTKQogCVBHX1JFVFVSTl9QT0lO VEVSKHJlc3VsdCk7CiB9CiAKKy8qCisgKiBpbnQ4X3N1bV90b19pbnRlcm5hbF9zZXJpYWxpemUK KyAqCQlDb252ZXJ0IGludDggYXJndW1lbnQgdG8gc2VyaWFsaXplZCBpbnRlcm5hbCByZXByZXNl bnRhdGlvbgorICovCitEYXR1bQoraW50OF9zdW1fdG9faW50ZXJuYWxfc2VyaWFsaXplKFBHX0ZV TkNUSU9OX0FSR1MpCit7CisJUG9seU51bUFnZ1N0YXRlICpzdGF0ZSA9IE5VTEw7CisJU3RyaW5n SW5mb0RhdGEgYnVmOworCWJ5dGVhCSAgICpyZXN1bHQ7CisJTnVtZXJpY1Zhcgl0bXBfdmFyOwor CisJc3RhdGUgPSAoUG9seU51bUFnZ1N0YXRlICopIHBhbGxvYzAoc2l6ZW9mKFBvbHlOdW1BZ2dT dGF0ZSkpOworCXN0YXRlLT5jYWxjU3VtWDIgPSBmYWxzZTsKKworCWlmICghUEdfQVJHSVNOVUxM KDApKQorCXsKKyNpZmRlZiBIQVZFX0lOVDEyOAorCQlkb19pbnQxMjhfYWNjdW0oc3RhdGUsIChp bnQxMjgpIFBHX0dFVEFSR19JTlQ2NCgwKSk7CisjZWxzZQorCQlkb19udW1lcmljX2FjY3VtKHN0 YXRlLCBpbnQ2NF90b19udW1lcmljKFBHX0dFVEFSR19JTlQ2NCgwKSkpOworI2VuZGlmCisJfQor CisJaW5pdF92YXIoJnRtcF92YXIpOworCisJcHFfYmVnaW50eXBzZW5kKCZidWYpOworCisJLyog TiAqLworCXBxX3NlbmRpbnQ2NCgmYnVmLCBzdGF0ZS0+Tik7CisKKwkvKiBzdW1YICovCisjaWZk ZWYgSEFWRV9JTlQxMjgKKwlpbnQxMjhfdG9fbnVtZXJpY3ZhcihzdGF0ZS0+c3VtWCwgJnRtcF92 YXIpOworI2Vsc2UKKwlhY2N1bV9zdW1fZmluYWwoJnN0YXRlLT5zdW1YLCAmdG1wX3Zhcik7Cisj ZW5kaWYKKwludW1lcmljdmFyX3NlcmlhbGl6ZSgmYnVmLCAmdG1wX3Zhcik7CisKKwlyZXN1bHQg PSBwcV9lbmR0eXBzZW5kKCZidWYpOworCisJZnJlZV92YXIoJnRtcF92YXIpOworCisJUEdfUkVU VVJOX0JZVEVBX1AocmVzdWx0KTsKK30KKwogLyoKICAqIEludmVyc2UgdHJhbnNpdGlvbiBmdW5j dGlvbnMgdG8gZ28gd2l0aCB0aGUgYWJvdmUuCiAgKi8KQEAgLTU5OTYsNiArNjA0Miw1NiBAQCBu dW1lcmljX3N1bShQR19GVU5DVElPTl9BUkdTKQogCVBHX1JFVFVSTl9OVU1FUklDKHJlc3VsdCk7 CiB9CiAKKy8qCisgKiBudW1lcmljX3N1bV90b19pbnRlcm5hbF9zZXJpYWxpemUKKyAqCQlDb252 ZXJ0IG51bWVyaWMgYXJndW1lbnQgdG8gc2VyaWFsaXplZCBpbnRlcm5hbCByZXByZXNlbnRhdGlv bgorICovCitEYXR1bQorbnVtZXJpY19zdW1fdG9faW50ZXJuYWxfc2VyaWFsaXplKFBHX0ZVTkNU SU9OX0FSR1MpCit7CisJTnVtZXJpY0FnZ1N0YXRlICpzdGF0ZSA9IE5VTEw7CisJU3RyaW5nSW5m b0RhdGEgYnVmOworCWJ5dGVhCSAgICpyZXN1bHQ7CisJTnVtZXJpY1Zhcgl0bXBfdmFyOworCisJ c3RhdGUgPSBtYWtlTnVtZXJpY0FnZ1N0YXRlQ3VycmVudENvbnRleHQoZmFsc2UpOworCisJaWYg KCFQR19BUkdJU05VTEwoMCkpCisJCWRvX251bWVyaWNfYWNjdW0oc3RhdGUsIFBHX0dFVEFSR19O VU1FUklDKDApKTsKKworCWluaXRfdmFyKCZ0bXBfdmFyKTsKKworCXBxX2JlZ2ludHlwc2VuZCgm YnVmKTsKKworCS8qIE4gKi8KKwlwcV9zZW5kaW50NjQoJmJ1Ziwgc3RhdGUtPk4pOworCisJLyog c3VtWCAqLworCWFjY3VtX3N1bV9maW5hbCgmc3RhdGUtPnN1bVgsICZ0bXBfdmFyKTsKKwludW1l cmljdmFyX3NlcmlhbGl6ZSgmYnVmLCAmdG1wX3Zhcik7CisKKwkvKiBtYXhTY2FsZSAqLworCXBx X3NlbmRpbnQzMigmYnVmLCBzdGF0ZS0+bWF4U2NhbGUpOworCisJLyogbWF4U2NhbGVDb3VudCAq LworCXBxX3NlbmRpbnQ2NCgmYnVmLCBzdGF0ZS0+bWF4U2NhbGVDb3VudCk7CisKKwkvKiBOYU5j b3VudCAqLworCXBxX3NlbmRpbnQ2NCgmYnVmLCBzdGF0ZS0+TmFOY291bnQpOworCisJLyogcElu ZmNvdW50ICovCisJcHFfc2VuZGludDY0KCZidWYsIHN0YXRlLT5wSW5mY291bnQpOworCisJLyog bkluZmNvdW50ICovCisJcHFfc2VuZGludDY0KCZidWYsIHN0YXRlLT5uSW5mY291bnQpOworCisJ cmVzdWx0ID0gcHFfZW5kdHlwc2VuZCgmYnVmKTsKKworCWZyZWVfdmFyKCZ0bXBfdmFyKTsKKwor CVBHX1JFVFVSTl9CWVRFQV9QKHJlc3VsdCk7Cit9CisKIC8qCiAgKiBXb3JraG9yc2Ugcm91dGlu ZSBmb3IgdGhlIHN0YW5kYXJkIGRldmlhbmNlIGFuZCB2YXJpYW5jZQogICogYWdncmVnYXRlcy4g J3N0YXRlJyBpcyBhZ2dyZWdhdGUncyB0cmFuc2l0aW9uIHN0YXRlLgpkaWZmIC0tZ2l0IGEvc3Jj L2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKaW5kZXgg ZTU4MTZjNGNjZWEuLmM4ZTkzOTY3MjIyIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdf ZHVtcC5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKQEAgLTEzMjQ2LDExICsxMzI0 NiwxMyBAQCBkdW1wQWdnKEFyY2hpdmUgKmZvdXQsIGNvbnN0IEFnZ0luZm8gKmFnZ2luZm8pCiAJ Y29uc3QgY2hhciAqYWdnY29tYmluZWZuOwogCWNvbnN0IGNoYXIgKmFnZ3NlcmlhbGZuOwogCWNv bnN0IGNoYXIgKmFnZ2Rlc2VyaWFsZm47CisJY29uc3QgY2hhciAqYWdncGFydGlhbGNvbnZlcnRl cmZuOwogCWNvbnN0IGNoYXIgKmFnZ210cmFuc2ZuOwogCWNvbnN0IGNoYXIgKmFnZ21pbnZ0cmFu c2ZuOwogCWNvbnN0IGNoYXIgKmFnZ21maW5hbGZuOwogCWJvb2wJCWFnZ2ZpbmFsZXh0cmE7CiAJ Ym9vbAkJYWdnbWZpbmFsZXh0cmE7CisJYm9vbAkJYWdncGFydGlhbHB1c2hkb3duc2FmZTsKIAlj aGFyCQlhZ2dmaW5hbG1vZGlmeTsKIAljaGFyCQlhZ2dtZmluYWxtb2RpZnk7CiAJY29uc3QgY2hh ciAqYWdnc29ydG9wOwpAQCAtMTMzMzEsMTEgKzEzMzMzLDE5IEBAIGR1bXBBZ2coQXJjaGl2ZSAq Zm91dCwgY29uc3QgQWdnSW5mbyAqYWdnaW5mbykKIAkJaWYgKGZvdXQtPnJlbW90ZVZlcnNpb24g Pj0gMTEwMDAwKQogCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksCiAJCQkJCQkJCSAiYWdn ZmluYWxtb2RpZnksXG4iCi0JCQkJCQkJCSAiYWdnbWZpbmFsbW9kaWZ5XG4iKTsKKwkJCQkJCQkJ ICJhZ2dtZmluYWxtb2RpZnksXG4iKTsKIAkJZWxzZQogCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIo cXVlcnksCiAJCQkJCQkJCSAiJzAnIEFTIGFnZ2ZpbmFsbW9kaWZ5LFxuIgotCQkJCQkJCQkgIicw JyBBUyBhZ2dtZmluYWxtb2RpZnlcbiIpOworCQkJCQkJCQkgIicwJyBBUyBhZ2dtZmluYWxtb2Rp ZnksXG4iKTsKKwkJaWYgKGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gMTUwMDAwKQorCQkJYXBwZW5k UFFFeHBCdWZmZXJTdHIocXVlcnksCisJCQkJCQkJCSAiYWdncGFydGlhbGNvbnZlcnRlcmZuLFxu IgorCQkJCQkJCQkgImFnZ3BhcnRpYWxwdXNoZG93bnNhZmVcbiIpOworCQllbHNlCisJCQlhcHBl bmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKKwkJCQkJCQkJICInLScgQVMgYWdncGFydGlhbGNvbnZl cnRlcmZuLFxuIgorCQkJCQkJCQkgImZhbHNlIGFzIGFnZ3BhcnRpYWxwdXNoZG93bnNhZmVcbiIp OwogCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LAogCQkJCQkJCSAiRlJPTSBwZ19jYXRh bG9nLnBnX2FnZ3JlZ2F0ZSBhLCBwZ19jYXRhbG9nLnBnX3Byb2MgcCAiCkBAIC0xMzM2MSw2ICsx MzM3MSw4IEBAIGR1bXBBZ2coQXJjaGl2ZSAqZm91dCwgY29uc3QgQWdnSW5mbyAqYWdnaW5mbykK IAlhZ2djb21iaW5lZm4gPSBQUWdldHZhbHVlKHJlcywgMCwgUFFmbnVtYmVyKHJlcywgImFnZ2Nv bWJpbmVmbiIpKTsKIAlhZ2dzZXJpYWxmbiA9IFBRZ2V0dmFsdWUocmVzLCAwLCBQUWZudW1iZXIo cmVzLCAiYWdnc2VyaWFsZm4iKSk7CiAJYWdnZGVzZXJpYWxmbiA9IFBRZ2V0dmFsdWUocmVzLCAw LCBQUWZudW1iZXIocmVzLCAiYWdnZGVzZXJpYWxmbiIpKTsKKwlhZ2dwYXJ0aWFsY29udmVydGVy Zm4gPSBQUWdldHZhbHVlKHJlcywgMCwgUFFmbnVtYmVyKHJlcywgImFnZ3BhcnRpYWxjb252ZXJ0 ZXJmbiIpKTsKKwlhZ2dwYXJ0aWFscHVzaGRvd25zYWZlID0gKFBRZ2V0dmFsdWUocmVzLCAwLCBQ UWZudW1iZXIocmVzLCAiYWdncGFydGlhbHB1c2hkb3duc2FmZSIpKVswXSA9PSAndCcpOwogCWFn Z210cmFuc2ZuID0gUFFnZXR2YWx1ZShyZXMsIDAsIFBRZm51bWJlcihyZXMsICJhZ2dtdHJhbnNm biIpKTsKIAlhZ2dtaW52dHJhbnNmbiA9IFBRZ2V0dmFsdWUocmVzLCAwLCBQUWZudW1iZXIocmVz LCAiYWdnbWludnRyYW5zZm4iKSk7CiAJYWdnbWZpbmFsZm4gPSBQUWdldHZhbHVlKHJlcywgMCwg UFFmbnVtYmVyKHJlcywgImFnZ21maW5hbGZuIikpOwpAQCAtMTM0NTAsNiArMTM0NjIsMTAgQEAg ZHVtcEFnZyhBcmNoaXZlICpmb3V0LCBjb25zdCBBZ2dJbmZvICphZ2dpbmZvKQogCWlmIChzdHJj bXAoYWdnZGVzZXJpYWxmbiwgIi0iKSAhPSAwKQogCQlhcHBlbmRQUUV4cEJ1ZmZlcihkZXRhaWxz LCAiLFxuICAgIERFU0VSSUFMRlVOQyA9ICVzIiwgYWdnZGVzZXJpYWxmbik7CiAKKwlpZiAoc3Ry Y21wKGFnZ3BhcnRpYWxjb252ZXJ0ZXJmbiwgIi0iKSAhPSAwKQorCQlhcHBlbmRQUUV4cEJ1ZmZl cihkZXRhaWxzLCAiLFxuICAgIFBBUlRJQUxDT05WRVJURVJGVU5DID0gJXMiLCBhZ2dwYXJ0aWFs Y29udmVydGVyZm4pOworCWlmIChhZ2dwYXJ0aWFscHVzaGRvd25zYWZlKQorCQlhcHBlbmRQUUV4 cEJ1ZmZlclN0cihkZXRhaWxzLCAiLFxuICAgIFBBUlRJQUxfUFVTSERPV05fU0FGRSIpOwogCWlm IChzdHJjbXAoYWdnbXRyYW5zZm4sICItIikgIT0gMCkKIAl7CiAJCWFwcGVuZFBRRXhwQnVmZmVy KGRldGFpbHMsICIsXG4gICAgTVNGVU5DID0gJXMsXG4gICAgTUlOVkZVTkMgPSAlcyxcbiAgICBN U1RZUEUgPSAlcyIsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2FnZ3JlZ2F0 ZS5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2FnZ3JlZ2F0ZS5kYXQKaW5kZXggMjg0M2Y0 YjQxNTkuLjg2Yzc3Zjc3OGE1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2Fn Z3JlZ2F0ZS5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19hZ2dyZWdhdGUuZGF0CkBA IC01NiwyNiArNTYsMjcgQEAKICAgYWdnc2VyaWFsZm4gPT4gJ2ludDhfYXZnX3NlcmlhbGl6ZScs IGFnZ2Rlc2VyaWFsZm4gPT4gJ2ludDhfYXZnX2Rlc2VyaWFsaXplJywKICAgYWdnbXRyYW5zZm4g PT4gJ2ludDhfYXZnX2FjY3VtJywgYWdnbWludnRyYW5zZm4gPT4gJ2ludDhfYXZnX2FjY3VtX2lu dicsCiAgIGFnZ21maW5hbGZuID0+ICdudW1lcmljX3BvbHlfc3VtJywgYWdndHJhbnN0eXBlID0+ ICdpbnRlcm5hbCcsCi0gIGFnZ3RyYW5zc3BhY2UgPT4gJzQ4JywgYWdnbXRyYW5zdHlwZSA9PiAn aW50ZXJuYWwnLCBhZ2dtdHJhbnNzcGFjZSA9PiAnNDgnIH0sCisgIGFnZ3RyYW5zc3BhY2UgPT4g JzQ4JywgYWdnbXRyYW5zdHlwZSA9PiAnaW50ZXJuYWwnLCBhZ2dtdHJhbnNzcGFjZSA9PiAnNDgn LAorICBhZ2dwYXJ0aWFsY29udmVydGVyZm4gPT4gJ2ludDhfc3VtX3RvX2ludGVybmFsX3Nlcmlh bGl6ZScsIGFnZ3BhcnRpYWxwdXNoZG93bnNhZmUgPT4gJ3QnIH0sCiB7IGFnZ2Zub2lkID0+ICdz dW0oaW50NCknLCBhZ2d0cmFuc2ZuID0+ICdpbnQ0X3N1bScsIGFnZ2NvbWJpbmVmbiA9PiAnaW50 OHBsJywKICAgYWdnbXRyYW5zZm4gPT4gJ2ludDRfYXZnX2FjY3VtJywgYWdnbWludnRyYW5zZm4g PT4gJ2ludDRfYXZnX2FjY3VtX2ludicsCiAgIGFnZ21maW5hbGZuID0+ICdpbnQyaW50NF9zdW0n LCBhZ2d0cmFuc3R5cGUgPT4gJ2ludDgnLAotICBhZ2dtdHJhbnN0eXBlID0+ICdfaW50OCcsIGFn Z21pbml0dmFsID0+ICd7MCwwfScgfSwKKyAgYWdnbXRyYW5zdHlwZSA9PiAnX2ludDgnLCBhZ2dt aW5pdHZhbCA9PiAnezAsMH0nLCBhZ2dwYXJ0aWFscHVzaGRvd25zYWZlID0+ICd0JyB9LAogeyBh Z2dmbm9pZCA9PiAnc3VtKGludDIpJywgYWdndHJhbnNmbiA9PiAnaW50Ml9zdW0nLCBhZ2djb21i aW5lZm4gPT4gJ2ludDhwbCcsCiAgIGFnZ210cmFuc2ZuID0+ICdpbnQyX2F2Z19hY2N1bScsIGFn Z21pbnZ0cmFuc2ZuID0+ICdpbnQyX2F2Z19hY2N1bV9pbnYnLAogICBhZ2dtZmluYWxmbiA9PiAn aW50MmludDRfc3VtJywgYWdndHJhbnN0eXBlID0+ICdpbnQ4JywKLSAgYWdnbXRyYW5zdHlwZSA9 PiAnX2ludDgnLCBhZ2dtaW5pdHZhbCA9PiAnezAsMH0nIH0sCisgIGFnZ210cmFuc3R5cGUgPT4g J19pbnQ4JywgYWdnbWluaXR2YWwgPT4gJ3swLDB9JywgYWdncGFydGlhbHB1c2hkb3duc2FmZSA9 PiAndCcgfSwKIHsgYWdnZm5vaWQgPT4gJ3N1bShmbG9hdDQpJywgYWdndHJhbnNmbiA9PiAnZmxv YXQ0cGwnLAotICBhZ2djb21iaW5lZm4gPT4gJ2Zsb2F0NHBsJywgYWdndHJhbnN0eXBlID0+ICdm bG9hdDQnIH0sCisgIGFnZ2NvbWJpbmVmbiA9PiAnZmxvYXQ0cGwnLCBhZ2d0cmFuc3R5cGUgPT4g J2Zsb2F0NCcsIGFnZ3BhcnRpYWxwdXNoZG93bnNhZmUgPT4gJ3QnIH0sCiB7IGFnZ2Zub2lkID0+ ICdzdW0oZmxvYXQ4KScsIGFnZ3RyYW5zZm4gPT4gJ2Zsb2F0OHBsJywKLSAgYWdnY29tYmluZWZu ID0+ICdmbG9hdDhwbCcsIGFnZ3RyYW5zdHlwZSA9PiAnZmxvYXQ4JyB9LAorICBhZ2djb21iaW5l Zm4gPT4gJ2Zsb2F0OHBsJywgYWdndHJhbnN0eXBlID0+ICdmbG9hdDgnLCBhZ2dwYXJ0aWFscHVz aGRvd25zYWZlID0+ICd0JyB9LAogeyBhZ2dmbm9pZCA9PiAnc3VtKG1vbmV5KScsIGFnZ3RyYW5z Zm4gPT4gJ2Nhc2hfcGwnLCBhZ2djb21iaW5lZm4gPT4gJ2Nhc2hfcGwnLAogICBhZ2dtdHJhbnNm biA9PiAnY2FzaF9wbCcsIGFnZ21pbnZ0cmFuc2ZuID0+ICdjYXNoX21pJywKLSAgYWdndHJhbnN0 eXBlID0+ICdtb25leScsIGFnZ210cmFuc3R5cGUgPT4gJ21vbmV5JyB9LAorICBhZ2d0cmFuc3R5 cGUgPT4gJ21vbmV5JywgYWdnbXRyYW5zdHlwZSA9PiAnbW9uZXknLCBhZ2dwYXJ0aWFscHVzaGRv d25zYWZlID0+ICd0JyB9LAogeyBhZ2dmbm9pZCA9PiAnc3VtKGludGVydmFsKScsIGFnZ3RyYW5z Zm4gPT4gJ2ludGVydmFsX3BsJywKICAgYWdnY29tYmluZWZuID0+ICdpbnRlcnZhbF9wbCcsIGFn Z210cmFuc2ZuID0+ICdpbnRlcnZhbF9wbCcsCiAgIGFnZ21pbnZ0cmFuc2ZuID0+ICdpbnRlcnZh bF9taScsIGFnZ3RyYW5zdHlwZSA9PiAnaW50ZXJ2YWwnLAotICBhZ2dtdHJhbnN0eXBlID0+ICdp bnRlcnZhbCcgfSwKKyAgYWdnbXRyYW5zdHlwZSA9PiAnaW50ZXJ2YWwnLCBhZ2dwYXJ0aWFscHVz aGRvd25zYWZlID0+ICd0JyB9LAogeyBhZ2dmbm9pZCA9PiAnc3VtKG51bWVyaWMpJywgYWdndHJh bnNmbiA9PiAnbnVtZXJpY19hdmdfYWNjdW0nLAogICBhZ2dmaW5hbGZuID0+ICdudW1lcmljX3N1 bScsIGFnZ2NvbWJpbmVmbiA9PiAnbnVtZXJpY19hdmdfY29tYmluZScsCiAgIGFnZ3NlcmlhbGZu ID0+ICdudW1lcmljX2F2Z19zZXJpYWxpemUnLApAQCAtODMsMTUyICs4NCwxNTUgQEAKICAgYWdn bXRyYW5zZm4gPT4gJ251bWVyaWNfYXZnX2FjY3VtJywgYWdnbWludnRyYW5zZm4gPT4gJ251bWVy aWNfYWNjdW1faW52JywKICAgYWdnbWZpbmFsZm4gPT4gJ251bWVyaWNfc3VtJywgYWdndHJhbnN0 eXBlID0+ICdpbnRlcm5hbCcsCiAgIGFnZ3RyYW5zc3BhY2UgPT4gJzEyOCcsIGFnZ210cmFuc3R5 cGUgPT4gJ2ludGVybmFsJywKLSAgYWdnbXRyYW5zc3BhY2UgPT4gJzEyOCcgfSwKKyAgYWdnbXRy YW5zc3BhY2UgPT4gJzEyOCcsIGFnZ3BhcnRpYWxjb252ZXJ0ZXJmbiA9PiAnbnVtZXJpY19zdW1f dG9faW50ZXJuYWxfc2VyaWFsaXplJywgYWdncGFydGlhbHB1c2hkb3duc2FmZSA9PiAndCcgfSwK IAogIyBtYXgKIHsgYWdnZm5vaWQgPT4gJ21heChpbnQ4KScsIGFnZ3RyYW5zZm4gPT4gJ2ludDhs YXJnZXInLAogICBhZ2djb21iaW5lZm4gPT4gJ2ludDhsYXJnZXInLCBhZ2dzb3J0b3AgPT4gJz4o aW50OCxpbnQ4KScsCi0gIGFnZ3RyYW5zdHlwZSA9PiAnaW50OCcgfSwKKyAgYWdndHJhbnN0eXBl ID0+ICdpbnQ4JywgYWdncGFydGlhbHB1c2hkb3duc2FmZSA9PiAndCcgfSwKIHsgYWdnZm5vaWQg PT4gJ21heChpbnQ0KScsIGFnZ3RyYW5zZm4gPT4gJ2ludDRsYXJnZXInLAogICBhZ2djb21iaW5l Zm4gPT4gJ2ludDRsYXJnZXInLCBhZ2dzb3J0b3AgPT4gJz4oaW50NCxpbnQ0KScsCi0gIGFnZ3Ry YW5zdHlwZSA9PiAnaW50NCcgfSwKKyAgYWdndHJhbnN0eXBlID0+ICdpbnQ0JywgYWdncGFydGlh bHB1c2hkb3duc2FmZSA9PiAndCcgfSwKIHsgYWdnZm5vaWQgPT4gJ21heChpbnQyKScsIGFnZ3Ry YW5zZm4gPT4gJ2ludDJsYXJnZXInLAogICBhZ2djb21iaW5lZm4gPT4gJ2ludDJsYXJnZXInLCBh Z2dzb3J0b3AgPT4gJz4oaW50MixpbnQyKScsCi0gIGFnZ3RyYW5zdHlwZSA9PiAnaW50MicgfSwK KyAgYWdndHJhbnN0eXBlID0+ICdpbnQyJywgYWdncGFydGlhbHB1c2hkb3duc2FmZSA9PiAndCcg fSwKIHsgYWdnZm5vaWQgPT4gJ21heChvaWQpJywgYWdndHJhbnNmbiA9PiAnb2lkbGFyZ2VyJywK ICAgYWdnY29tYmluZWZuID0+ICdvaWRsYXJnZXInLCBhZ2dzb3J0b3AgPT4gJz4ob2lkLG9pZCkn LAotICBhZ2d0cmFuc3R5cGUgPT4gJ29pZCcgfSwKKyAgYWdndHJhbnN0eXBlID0+ICdvaWQnLCBh Z2dwYXJ0aWFscHVzaGRvd25zYWZlID0+ICd0JyB9LAogeyBhZ2dmbm9pZCA9PiAnbWF4KGZsb2F0 NCknLCBhZ2d0cmFuc2ZuID0+ICdmbG9hdDRsYXJnZXInLAogICBhZ2djb21iaW5lZm4gPT4gJ2Zs b2F0NGxhcmdlcicsIGFnZ3NvcnRvcCA9PiAnPihmbG9hdDQsZmxvYXQ0KScsCi0gIGFnZ3RyYW5z dHlwZSA9PiAnZmxvYXQ0JyB9LAorICBhZ2d0cmFuc3R5cGUgPT4gJ2Zsb2F0NCcsIGFnZ3BhcnRp YWxwdXNoZG93bnNhZmUgPT4gJ3QnIH0sCiB7IGFnZ2Zub2lkID0+ICdtYXgoZmxvYXQ4KScsIGFn Z3RyYW5zZm4gPT4gJ2Zsb2F0OGxhcmdlcicsCiAgIGFnZ2NvbWJpbmVmbiA9PiAnZmxvYXQ4bGFy Z2VyJywgYWdnc29ydG9wID0+ICc+KGZsb2F0OCxmbG9hdDgpJywKLSAgYWdndHJhbnN0eXBlID0+ ICdmbG9hdDgnIH0sCisgIGFnZ3RyYW5zdHlwZSA9PiAnZmxvYXQ4JywgYWdncGFydGlhbHB1c2hk b3duc2FmZSA9PiAndCcgfSwKIHsgYWdnZm5vaWQgPT4gJ21heChkYXRlKScsIGFnZ3RyYW5zZm4g PT4gJ2RhdGVfbGFyZ2VyJywKICAgYWdnY29tYmluZWZuID0+ICdkYXRlX2xhcmdlcicsIGFnZ3Nv cnRvcCA9PiAnPihkYXRlLGRhdGUpJywKLSAgYWdndHJhbnN0eXBlID0+ICdkYXRlJyB9LAorICBh Z2d0cmFuc3R5cGUgPT4gJ2RhdGUnLCBhZ2dwYXJ0aWFscHVzaGRvd25zYWZlID0+ICd0JyB9LAog eyBhZ2dmbm9pZCA9PiAnbWF4KHRpbWUpJywgYWdndHJhbnNmbiA9PiAndGltZV9sYXJnZXInLAog ICBhZ2djb21iaW5lZm4gPT4gJ3RpbWVfbGFyZ2VyJywgYWdnc29ydG9wID0+ICc+KHRpbWUsdGlt ZSknLAotICBhZ2d0cmFuc3R5cGUgPT4gJ3RpbWUnIH0sCisgIGFnZ3RyYW5zdHlwZSA9PiAndGlt ZScsIGFnZ3BhcnRpYWxwdXNoZG93bnNhZmUgPT4gJ3QnIH0sCiB7IGFnZ2Zub2lkID0+ICdtYXgo dGltZXR6KScsIGFnZ3RyYW5zZm4gPT4gJ3RpbWV0el9sYXJnZXInLAogICBhZ2djb21iaW5lZm4g PT4gJ3RpbWV0el9sYXJnZXInLCBhZ2dzb3J0b3AgPT4gJz4odGltZXR6LHRpbWV0eiknLAotICBh Z2d0cmFuc3R5cGUgPT4gJ3RpbWV0eicgfSwKKyAgYWdndHJhbnN0eXBlID0+ICd0aW1ldHonLCBh Z2dwYXJ0aWFscHVzaGRvd25zYWZlID0+ICd0JyB9LAogeyBhZ2dmbm9pZCA9PiAnbWF4KG1vbmV5 KScsIGFnZ3RyYW5zZm4gPT4gJ2Nhc2hsYXJnZXInLAogICBhZ2djb21iaW5lZm4gPT4gJ2Nhc2hs YXJnZXInLCBhZ2dzb3J0b3AgPT4gJz4obW9uZXksbW9uZXkpJywKLSAgYWdndHJhbnN0eXBlID0+ ICdtb25leScgfSwKKyAgYWdndHJhbnN0eXBlID0+ICdtb25leScsIGFnZ3BhcnRpYWxwdXNoZG93 bnNhZmUgPT4gJ3QnIH0sCiB7IGFnZ2Zub2lkID0+ICdtYXgodGltZXN0YW1wKScsIGFnZ3RyYW5z Zm4gPT4gJ3RpbWVzdGFtcF9sYXJnZXInLAogICBhZ2djb21iaW5lZm4gPT4gJ3RpbWVzdGFtcF9s YXJnZXInLCBhZ2dzb3J0b3AgPT4gJz4odGltZXN0YW1wLHRpbWVzdGFtcCknLAotICBhZ2d0cmFu c3R5cGUgPT4gJ3RpbWVzdGFtcCcgfSwKKyAgYWdndHJhbnN0eXBlID0+ICd0aW1lc3RhbXAnLCBh Z2dwYXJ0aWFscHVzaGRvd25zYWZlID0+ICd0JyB9LAogeyBhZ2dmbm9pZCA9PiAnbWF4KHRpbWVz dGFtcHR6KScsIGFnZ3RyYW5zZm4gPT4gJ3RpbWVzdGFtcHR6X2xhcmdlcicsCiAgIGFnZ2NvbWJp bmVmbiA9PiAndGltZXN0YW1wdHpfbGFyZ2VyJywKICAgYWdnc29ydG9wID0+ICc+KHRpbWVzdGFt cHR6LHRpbWVzdGFtcHR6KScsIGFnZ3RyYW5zdHlwZSA9PiAndGltZXN0YW1wdHonIH0sCiB7IGFn Z2Zub2lkID0+ICdtYXgoaW50ZXJ2YWwpJywgYWdndHJhbnNmbiA9PiAnaW50ZXJ2YWxfbGFyZ2Vy JywKICAgYWdnY29tYmluZWZuID0+ICdpbnRlcnZhbF9sYXJnZXInLCBhZ2dzb3J0b3AgPT4gJz4o aW50ZXJ2YWwsaW50ZXJ2YWwpJywKLSAgYWdndHJhbnN0eXBlID0+ICdpbnRlcnZhbCcgfSwKKyAg YWdndHJhbnN0eXBlID0+ICdpbnRlcnZhbCcsIGFnZ3BhcnRpYWxwdXNoZG93bnNhZmUgPT4gJ3Qn IH0sCiB7IGFnZ2Zub2lkID0+ICdtYXgodGV4dCknLCBhZ2d0cmFuc2ZuID0+ICd0ZXh0X2xhcmdl cicsCiAgIGFnZ2NvbWJpbmVmbiA9PiAndGV4dF9sYXJnZXInLCBhZ2dzb3J0b3AgPT4gJz4odGV4 dCx0ZXh0KScsCi0gIGFnZ3RyYW5zdHlwZSA9PiAndGV4dCcgfSwKKyAgYWdndHJhbnN0eXBlID0+ ICd0ZXh0JywgYWdncGFydGlhbHB1c2hkb3duc2FmZSA9PiAndCcgfSwKIHsgYWdnZm5vaWQgPT4g J21heChudW1lcmljKScsIGFnZ3RyYW5zZm4gPT4gJ251bWVyaWNfbGFyZ2VyJywKICAgYWdnY29t YmluZWZuID0+ICdudW1lcmljX2xhcmdlcicsIGFnZ3NvcnRvcCA9PiAnPihudW1lcmljLG51bWVy aWMpJywKLSAgYWdndHJhbnN0eXBlID0+ICdudW1lcmljJyB9LAorICBhZ2d0cmFuc3R5cGUgPT4g J251bWVyaWMnLCBhZ2dwYXJ0aWFscHVzaGRvd25zYWZlID0+ICd0JyB9LAogeyBhZ2dmbm9pZCA9 PiAnbWF4KGFueWFycmF5KScsIGFnZ3RyYW5zZm4gPT4gJ2FycmF5X2xhcmdlcicsCiAgIGFnZ2Nv bWJpbmVmbiA9PiAnYXJyYXlfbGFyZ2VyJywgYWdnc29ydG9wID0+ICc+KGFueWFycmF5LGFueWFy cmF5KScsCi0gIGFnZ3RyYW5zdHlwZSA9PiAnYW55YXJyYXknIH0sCisgIGFnZ3RyYW5zdHlwZSA9 PiAnYW55YXJyYXknLCBhZ2dwYXJ0aWFscHVzaGRvd25zYWZlID0+ICd0JyB9LAogeyBhZ2dmbm9p ZCA9PiAnbWF4KGJwY2hhciknLCBhZ2d0cmFuc2ZuID0+ICdicGNoYXJfbGFyZ2VyJywKICAgYWdn Y29tYmluZWZuID0+ICdicGNoYXJfbGFyZ2VyJywgYWdnc29ydG9wID0+ICc+KGJwY2hhcixicGNo YXIpJywKLSAgYWdndHJhbnN0eXBlID0+ICdicGNoYXInIH0sCisgIGFnZ3RyYW5zdHlwZSA9PiAn YnBjaGFyJywgYWdncGFydGlhbHB1c2hkb3duc2FmZSA9PiAndCcgfSwKIHsgYWdnZm5vaWQgPT4g J21heCh0aWQpJywgYWdndHJhbnNmbiA9PiAndGlkbGFyZ2VyJywKICAgYWdnY29tYmluZWZuID0+ ICd0aWRsYXJnZXInLCBhZ2dzb3J0b3AgPT4gJz4odGlkLHRpZCknLAotICBhZ2d0cmFuc3R5cGUg PT4gJ3RpZCcgfSwKKyAgYWdndHJhbnN0eXBlID0+ICd0aWQnLCBhZ2dwYXJ0aWFscHVzaGRvd25z YWZlID0+ICd0JyB9LAogeyBhZ2dmbm9pZCA9PiAnbWF4KGFueWVudW0pJywgYWdndHJhbnNmbiA9 PiAnZW51bV9sYXJnZXInLAogICBhZ2djb21iaW5lZm4gPT4gJ2VudW1fbGFyZ2VyJywgYWdnc29y dG9wID0+ICc+KGFueWVudW0sYW55ZW51bSknLAotICBhZ2d0cmFuc3R5cGUgPT4gJ2FueWVudW0n IH0sCisgIGFnZ3RyYW5zdHlwZSA9PiAnYW55ZW51bScsIGFnZ3BhcnRpYWxwdXNoZG93bnNhZmUg PT4gJ3QnIH0sCiB7IGFnZ2Zub2lkID0+ICdtYXgoaW5ldCknLCBhZ2d0cmFuc2ZuID0+ICduZXR3 b3JrX2xhcmdlcicsCiAgIGFnZ2NvbWJpbmVmbiA9PiAnbmV0d29ya19sYXJnZXInLCBhZ2dzb3J0 b3AgPT4gJz4oaW5ldCxpbmV0KScsCi0gIGFnZ3RyYW5zdHlwZSA9PiAnaW5ldCcgfSwKKyAgYWdn dHJhbnN0eXBlID0+ICdpbmV0JywgYWdncGFydGlhbHB1c2hkb3duc2FmZSA9PiAndCcgfSwKIHsg YWdnZm5vaWQgPT4gJ21heChwZ19sc24pJywgYWdndHJhbnNmbiA9PiAncGdfbHNuX2xhcmdlcics CiAgIGFnZ2NvbWJpbmVmbiA9PiAncGdfbHNuX2xhcmdlcicsIGFnZ3NvcnRvcCA9PiAnPihwZ19s c24scGdfbHNuKScsCi0gIGFnZ3RyYW5zdHlwZSA9PiAncGdfbHNuJyB9LAorICBhZ2d0cmFuc3R5 cGUgPT4gJ3BnX2xzbicsIGFnZ3BhcnRpYWxwdXNoZG93bnNhZmUgPT4gJ3QnIH0sCiB7IGFnZ2Zu b2lkID0+ICdtYXgoeGlkOCknLCBhZ2d0cmFuc2ZuID0+ICd4aWQ4X2xhcmdlcicsCiAgIGFnZ2Nv bWJpbmVmbiA9PiAneGlkOF9sYXJnZXInLCBhZ2dzb3J0b3AgPT4gJz4oeGlkOCx4aWQ4KScsCi0g IGFnZ3RyYW5zdHlwZSA9PiAneGlkOCcgfSwKKyAgYWdndHJhbnN0eXBlID0+ICd4aWQ4JywgYWdn cGFydGlhbHB1c2hkb3duc2FmZSA9PiAndCcgfSwKIAogIyBtaW4KIHsgYWdnZm5vaWQgPT4gJ21p bihpbnQ4KScsIGFnZ3RyYW5zZm4gPT4gJ2ludDhzbWFsbGVyJywKICAgYWdnY29tYmluZWZuID0+ ICdpbnQ4c21hbGxlcicsIGFnZ3NvcnRvcCA9PiAnPChpbnQ4LGludDgpJywKLSAgYWdndHJhbnN0 eXBlID0+ICdpbnQ4JyB9LAorICBhZ2d0cmFuc3R5cGUgPT4gJ2ludDgnLCBhZ2dwYXJ0aWFscHVz aGRvd25zYWZlID0+ICd0JyB9LAogeyBhZ2dmbm9pZCA9PiAnbWluKGludDQpJywgYWdndHJhbnNm biA9PiAnaW50NHNtYWxsZXInLAogICBhZ2djb21iaW5lZm4gPT4gJ2ludDRzbWFsbGVyJywgYWdn c29ydG9wID0+ICc8KGludDQsaW50NCknLAotICBhZ2d0cmFuc3R5cGUgPT4gJ2ludDQnIH0sCisg IGFnZ3RyYW5zdHlwZSA9PiAnaW50NCcsIGFnZ3BhcnRpYWxwdXNoZG93bnNhZmUgPT4gJ3QnIH0s CiB7IGFnZ2Zub2lkID0+ICdtaW4oaW50MiknLCBhZ2d0cmFuc2ZuID0+ICdpbnQyc21hbGxlcics CiAgIGFnZ2NvbWJpbmVmbiA9PiAnaW50MnNtYWxsZXInLCBhZ2dzb3J0b3AgPT4gJzwoaW50Mixp bnQyKScsCi0gIGFnZ3RyYW5zdHlwZSA9PiAnaW50MicgfSwKKyAgYWdndHJhbnN0eXBlID0+ICdp bnQyJywgYWdncGFydGlhbHB1c2hkb3duc2FmZSA9PiAndCcgfSwKIHsgYWdnZm5vaWQgPT4gJ21p bihvaWQpJywgYWdndHJhbnNmbiA9PiAnb2lkc21hbGxlcicsCiAgIGFnZ2NvbWJpbmVmbiA9PiAn b2lkc21hbGxlcicsIGFnZ3NvcnRvcCA9PiAnPChvaWQsb2lkKScsCi0gIGFnZ3RyYW5zdHlwZSA9 PiAnb2lkJyB9LAorICBhZ2d0cmFuc3R5cGUgPT4gJ29pZCcsIGFnZ3BhcnRpYWxwdXNoZG93bnNh ZmUgPT4gJ3QnIH0sCiB7IGFnZ2Zub2lkID0+ICdtaW4oZmxvYXQ0KScsIGFnZ3RyYW5zZm4gPT4g J2Zsb2F0NHNtYWxsZXInLAogICBhZ2djb21iaW5lZm4gPT4gJ2Zsb2F0NHNtYWxsZXInLCBhZ2dz b3J0b3AgPT4gJzwoZmxvYXQ0LGZsb2F0NCknLAotICBhZ2d0cmFuc3R5cGUgPT4gJ2Zsb2F0NCcg fSwKKyAgYWdndHJhbnN0eXBlID0+ICdmbG9hdDQnLCBhZ2dwYXJ0aWFscHVzaGRvd25zYWZlID0+ ICd0JyB9LAogeyBhZ2dmbm9pZCA9PiAnbWluKGZsb2F0OCknLCBhZ2d0cmFuc2ZuID0+ICdmbG9h dDhzbWFsbGVyJywKICAgYWdnY29tYmluZWZuID0+ICdmbG9hdDhzbWFsbGVyJywgYWdnc29ydG9w ID0+ICc8KGZsb2F0OCxmbG9hdDgpJywKLSAgYWdndHJhbnN0eXBlID0+ICdmbG9hdDgnIH0sCisg IGFnZ3RyYW5zdHlwZSA9PiAnZmxvYXQ4JywgYWdncGFydGlhbHB1c2hkb3duc2FmZSA9PiAndCcg fSwKIHsgYWdnZm5vaWQgPT4gJ21pbihkYXRlKScsIGFnZ3RyYW5zZm4gPT4gJ2RhdGVfc21hbGxl cicsCiAgIGFnZ2NvbWJpbmVmbiA9PiAnZGF0ZV9zbWFsbGVyJywgYWdnc29ydG9wID0+ICc8KGRh dGUsZGF0ZSknLAotICBhZ2d0cmFuc3R5cGUgPT4gJ2RhdGUnIH0sCisgIGFnZ3RyYW5zdHlwZSA9 PiAnZGF0ZScsIGFnZ3BhcnRpYWxwdXNoZG93bnNhZmUgPT4gJ3QnIH0sCiB7IGFnZ2Zub2lkID0+ ICdtaW4odGltZSknLCBhZ2d0cmFuc2ZuID0+ICd0aW1lX3NtYWxsZXInLAogICBhZ2djb21iaW5l Zm4gPT4gJ3RpbWVfc21hbGxlcicsIGFnZ3NvcnRvcCA9PiAnPCh0aW1lLHRpbWUpJywKLSAgYWdn dHJhbnN0eXBlID0+ICd0aW1lJyB9LAorICBhZ2d0cmFuc3R5cGUgPT4gJ3RpbWUnLCBhZ2dwYXJ0 aWFscHVzaGRvd25zYWZlID0+ICd0JyB9LAogeyBhZ2dmbm9pZCA9PiAnbWluKHRpbWV0eiknLCBh Z2d0cmFuc2ZuID0+ICd0aW1ldHpfc21hbGxlcicsCiAgIGFnZ2NvbWJpbmVmbiA9PiAndGltZXR6 X3NtYWxsZXInLCBhZ2dzb3J0b3AgPT4gJzwodGltZXR6LHRpbWV0eiknLAotICBhZ2d0cmFuc3R5 cGUgPT4gJ3RpbWV0eicgfSwKKyAgYWdndHJhbnN0eXBlID0+ICd0aW1ldHonLCBhZ2dwYXJ0aWFs cHVzaGRvd25zYWZlID0+ICd0JyB9LAogeyBhZ2dmbm9pZCA9PiAnbWluKG1vbmV5KScsIGFnZ3Ry YW5zZm4gPT4gJ2Nhc2hzbWFsbGVyJywKICAgYWdnY29tYmluZWZuID0+ICdjYXNoc21hbGxlcics IGFnZ3NvcnRvcCA9PiAnPChtb25leSxtb25leSknLAotICBhZ2d0cmFuc3R5cGUgPT4gJ21vbmV5 JyB9LAorICBhZ2d0cmFuc3R5cGUgPT4gJ21vbmV5JywgYWdncGFydGlhbHB1c2hkb3duc2FmZSA9 PiAndCcgfSwKIHsgYWdnZm5vaWQgPT4gJ21pbih0aW1lc3RhbXApJywgYWdndHJhbnNmbiA9PiAn dGltZXN0YW1wX3NtYWxsZXInLAogICBhZ2djb21iaW5lZm4gPT4gJ3RpbWVzdGFtcF9zbWFsbGVy JywgYWdnc29ydG9wID0+ICc8KHRpbWVzdGFtcCx0aW1lc3RhbXApJywKLSAgYWdndHJhbnN0eXBl ID0+ICd0aW1lc3RhbXAnIH0sCisgIGFnZ3RyYW5zdHlwZSA9PiAndGltZXN0YW1wJywgYWdncGFy dGlhbHB1c2hkb3duc2FmZSA9PiAndCcgfSwKIHsgYWdnZm5vaWQgPT4gJ21pbih0aW1lc3RhbXB0 eiknLCBhZ2d0cmFuc2ZuID0+ICd0aW1lc3RhbXB0el9zbWFsbGVyJywKICAgYWdnY29tYmluZWZu ID0+ICd0aW1lc3RhbXB0el9zbWFsbGVyJywKLSAgYWdnc29ydG9wID0+ICc8KHRpbWVzdGFtcHR6 LHRpbWVzdGFtcHR6KScsIGFnZ3RyYW5zdHlwZSA9PiAndGltZXN0YW1wdHonIH0sCisgIGFnZ3Nv cnRvcCA9PiAnPCh0aW1lc3RhbXB0eix0aW1lc3RhbXB0eiknLCBhZ2d0cmFuc3R5cGUgPT4gJ3Rp bWVzdGFtcHR6JywKKyAgYWdncGFydGlhbHB1c2hkb3duc2FmZSA9PiAndCcgfSwKIHsgYWdnZm5v aWQgPT4gJ21pbihpbnRlcnZhbCknLCBhZ2d0cmFuc2ZuID0+ICdpbnRlcnZhbF9zbWFsbGVyJywK ICAgYWdnY29tYmluZWZuID0+ICdpbnRlcnZhbF9zbWFsbGVyJywgYWdnc29ydG9wID0+ICc8KGlu dGVydmFsLGludGVydmFsKScsCi0gIGFnZ3RyYW5zdHlwZSA9PiAnaW50ZXJ2YWwnIH0sCisgIGFn Z3RyYW5zdHlwZSA9PiAnaW50ZXJ2YWwnLCBhZ2dwYXJ0aWFscHVzaGRvd25zYWZlID0+ICd0JyB9 LAogeyBhZ2dmbm9pZCA9PiAnbWluKHRleHQpJywgYWdndHJhbnNmbiA9PiAndGV4dF9zbWFsbGVy JywKICAgYWdnY29tYmluZWZuID0+ICd0ZXh0X3NtYWxsZXInLCBhZ2dzb3J0b3AgPT4gJzwodGV4 dCx0ZXh0KScsCi0gIGFnZ3RyYW5zdHlwZSA9PiAndGV4dCcgfSwKKyAgYWdndHJhbnN0eXBlID0+ ICd0ZXh0JywgYWdncGFydGlhbHB1c2hkb3duc2FmZSA9PiAndCcgfSwKIHsgYWdnZm5vaWQgPT4g J21pbihudW1lcmljKScsIGFnZ3RyYW5zZm4gPT4gJ251bWVyaWNfc21hbGxlcicsCiAgIGFnZ2Nv bWJpbmVmbiA9PiAnbnVtZXJpY19zbWFsbGVyJywgYWdnc29ydG9wID0+ICc8KG51bWVyaWMsbnVt ZXJpYyknLAotICBhZ2d0cmFuc3R5cGUgPT4gJ251bWVyaWMnIH0sCisgIGFnZ3RyYW5zdHlwZSA9 PiAnbnVtZXJpYycsIGFnZ3BhcnRpYWxwdXNoZG93bnNhZmUgPT4gJ3QnIH0sCiB7IGFnZ2Zub2lk ID0+ICdtaW4oYW55YXJyYXkpJywgYWdndHJhbnNmbiA9PiAnYXJyYXlfc21hbGxlcicsCiAgIGFn Z2NvbWJpbmVmbiA9PiAnYXJyYXlfc21hbGxlcicsIGFnZ3NvcnRvcCA9PiAnPChhbnlhcnJheSxh bnlhcnJheSknLAotICBhZ2d0cmFuc3R5cGUgPT4gJ2FueWFycmF5JyB9LAorICBhZ2d0cmFuc3R5 cGUgPT4gJ2FueWFycmF5JywgYWdncGFydGlhbHB1c2hkb3duc2FmZSA9PiAndCcgfSwKIHsgYWdn Zm5vaWQgPT4gJ21pbihicGNoYXIpJywgYWdndHJhbnNmbiA9PiAnYnBjaGFyX3NtYWxsZXInLAog ICBhZ2djb21iaW5lZm4gPT4gJ2JwY2hhcl9zbWFsbGVyJywgYWdnc29ydG9wID0+ICc8KGJwY2hh cixicGNoYXIpJywKLSAgYWdndHJhbnN0eXBlID0+ICdicGNoYXInIH0sCisgIGFnZ3RyYW5zdHlw ZSA9PiAnYnBjaGFyJywgYWdncGFydGlhbHB1c2hkb3duc2FmZSA9PiAndCcgfSwKIHsgYWdnZm5v aWQgPT4gJ21pbih0aWQpJywgYWdndHJhbnNmbiA9PiAndGlkc21hbGxlcicsCiAgIGFnZ2NvbWJp bmVmbiA9PiAndGlkc21hbGxlcicsIGFnZ3NvcnRvcCA9PiAnPCh0aWQsdGlkKScsCi0gIGFnZ3Ry YW5zdHlwZSA9PiAndGlkJyB9LAorICBhZ2d0cmFuc3R5cGUgPT4gJ3RpZCcsIGFnZ3BhcnRpYWxw dXNoZG93bnNhZmUgPT4gJ3QnIH0sCiB7IGFnZ2Zub2lkID0+ICdtaW4oYW55ZW51bSknLCBhZ2d0 cmFuc2ZuID0+ICdlbnVtX3NtYWxsZXInLAogICBhZ2djb21iaW5lZm4gPT4gJ2VudW1fc21hbGxl cicsIGFnZ3NvcnRvcCA9PiAnPChhbnllbnVtLGFueWVudW0pJywKLSAgYWdndHJhbnN0eXBlID0+ ICdhbnllbnVtJyB9LAorICBhZ2d0cmFuc3R5cGUgPT4gJ2FueWVudW0nLCBhZ2dwYXJ0aWFscHVz aGRvd25zYWZlID0+ICd0JyB9LAogeyBhZ2dmbm9pZCA9PiAnbWluKGluZXQpJywgYWdndHJhbnNm biA9PiAnbmV0d29ya19zbWFsbGVyJywKICAgYWdnY29tYmluZWZuID0+ICduZXR3b3JrX3NtYWxs ZXInLCBhZ2dzb3J0b3AgPT4gJzwoaW5ldCxpbmV0KScsCi0gIGFnZ3RyYW5zdHlwZSA9PiAnaW5l dCcgfSwKKyAgYWdndHJhbnN0eXBlID0+ICdpbmV0JywgYWdncGFydGlhbHB1c2hkb3duc2FmZSA9 PiAndCcgfSwKIHsgYWdnZm5vaWQgPT4gJ21pbihwZ19sc24pJywgYWdndHJhbnNmbiA9PiAncGdf bHNuX3NtYWxsZXInLAogICBhZ2djb21iaW5lZm4gPT4gJ3BnX2xzbl9zbWFsbGVyJywgYWdnc29y dG9wID0+ICc8KHBnX2xzbixwZ19sc24pJywKLSAgYWdndHJhbnN0eXBlID0+ICdwZ19sc24nIH0s CisgIGFnZ3RyYW5zdHlwZSA9PiAncGdfbHNuJywgYWdncGFydGlhbHB1c2hkb3duc2FmZSA9PiAn dCcgfSwKIHsgYWdnZm5vaWQgPT4gJ21pbih4aWQ4KScsIGFnZ3RyYW5zZm4gPT4gJ3hpZDhfc21h bGxlcicsCiAgIGFnZ2NvbWJpbmVmbiA9PiAneGlkOF9zbWFsbGVyJywgYWdnc29ydG9wID0+ICc8 KHhpZDgseGlkOCknLAotICBhZ2d0cmFuc3R5cGUgPT4gJ3hpZDgnIH0sCisgIGFnZ3RyYW5zdHlw ZSA9PiAneGlkOCcsIGFnZ3BhcnRpYWxwdXNoZG93bnNhZmUgPT4gJ3QnIH0sCiAKICMgY291bnQK IHsgYWdnZm5vaWQgPT4gJ2NvdW50KGFueSknLCBhZ2d0cmFuc2ZuID0+ICdpbnQ4aW5jX2FueScs CiAgIGFnZ2NvbWJpbmVmbiA9PiAnaW50OHBsJywgYWdnbXRyYW5zZm4gPT4gJ2ludDhpbmNfYW55 JywKICAgYWdnbWludnRyYW5zZm4gPT4gJ2ludDhkZWNfYW55JywgYWdndHJhbnN0eXBlID0+ICdp bnQ4JywKLSAgYWdnbXRyYW5zdHlwZSA9PiAnaW50OCcsIGFnZ2luaXR2YWwgPT4gJzAnLCBhZ2dt aW5pdHZhbCA9PiAnMCcgfSwKKyAgYWdnbXRyYW5zdHlwZSA9PiAnaW50OCcsIGFnZ2luaXR2YWwg PT4gJzAnLCBhZ2dtaW5pdHZhbCA9PiAnMCcsCisgIGFnZ3BhcnRpYWxwdXNoZG93bnNhZmUgPT4g J3QnIH0sCiB7IGFnZ2Zub2lkID0+ICdjb3VudCgpJywgYWdndHJhbnNmbiA9PiAnaW50OGluYycs IGFnZ2NvbWJpbmVmbiA9PiAnaW50OHBsJywKICAgYWdnbXRyYW5zZm4gPT4gJ2ludDhpbmMnLCBh Z2dtaW52dHJhbnNmbiA9PiAnaW50OGRlYycsIGFnZ3RyYW5zdHlwZSA9PiAnaW50OCcsCi0gIGFn Z210cmFuc3R5cGUgPT4gJ2ludDgnLCBhZ2dpbml0dmFsID0+ICcwJywgYWdnbWluaXR2YWwgPT4g JzAnIH0sCisgIGFnZ210cmFuc3R5cGUgPT4gJ2ludDgnLCBhZ2dpbml0dmFsID0+ICcwJywgYWdn bWluaXR2YWwgPT4gJzAnLAorICBhZ2dwYXJ0aWFscHVzaGRvd25zYWZlID0+ICd0JyB9LAogCiAj IHZhcl9wb3AKIHsgYWdnZm5vaWQgPT4gJ3Zhcl9wb3AoaW50OCknLCBhZ2d0cmFuc2ZuID0+ICdp bnQ4X2FjY3VtJywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYWdncmVnYXRl LmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2FnZ3JlZ2F0ZS5oCmluZGV4IDU5M2RhOWY3NmE4 Li4zYjhlNTQxNTMyZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19hZ2dyZWdh dGUuaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2FnZ3JlZ2F0ZS5oCkBAIC01NSw2ICs1 NSw5IEBAIENBVEFMT0cocGdfYWdncmVnYXRlLDI2MDAsQWdncmVnYXRlUmVsYXRpb25JZCkKIAkv KiBmdW5jdGlvbiB0byBjb252ZXJ0IGJ5dGVhIHRvIHRyYW5zdHlwZSAoMCBpZiBub25lKSAqLwog CXJlZ3Byb2MJCWFnZ2Rlc2VyaWFsZm4gQktJX0RFRkFVTFQoLSkgQktJX0xPT0tVUF9PUFQocGdf cHJvYyk7CiAKKwkvKiBmdW5jdGlvbiB0byBjb252ZXJ0IGFnZ3JlZ2F0ZSByZXN1bHQgdG8gYnl0 ZWEgKDAgaWYgbm9uZSkgKi8KKwlyZWdwcm9jCQlhZ2dwYXJ0aWFsY29udmVydGVyZm4gQktJX0RF RkFVTFQoLSkgQktJX0xPT0tVUF9PUFQocGdfcHJvYyk7CisKIAkvKiBmb3J3YXJkIGZ1bmN0aW9u IGZvciBtb3ZpbmctYWdncmVnYXRlIG1vZGUgKDAgaWYgbm9uZSkgKi8KIAlyZWdwcm9jCQlhZ2dt dHJhbnNmbiBCS0lfREVGQVVMVCgtKSBCS0lfTE9PS1VQX09QVChwZ19wcm9jKTsKIApAQCAtOTEs NiArOTQsOSBAQCBDQVRBTE9HKHBnX2FnZ3JlZ2F0ZSwyNjAwLEFnZ3JlZ2F0ZVJlbGF0aW9uSWQp CiAJLyogZXN0aW1hdGVkIHNpemUgb2YgbW92aW5nLWFnZyBzdGF0ZSAoMCBmb3IgZGVmYXVsdCBl c3QpICovCiAJaW50MzIJCWFnZ210cmFuc3NwYWNlIEJLSV9ERUZBVUxUKDApOwogCisJLyogdHJ1 ZSBpZiBwYXJ0aWFsIGFnZ3JlZ2F0ZSBpcyBmaW5lIHRvIHB1c2ggZG93biAqLworCWJvb2wJCWFn Z3BhcnRpYWxwdXNoZG93bnNhZmUgQktJX0RFRkFVTFQoZik7CisKICNpZmRlZiBDQVRBTE9HX1ZB UkxFTgkJCS8qIHZhcmlhYmxlLWxlbmd0aCBmaWVsZHMgc3RhcnQgaGVyZSAqLwogCiAJLyogaW5p dGlhbCB2YWx1ZSBmb3IgdHJhbnNpdGlvbiBzdGF0ZSAoY2FuIGJlIE5VTEwpICovCkBAIC0xNjEs NiArMTY3LDcgQEAgZXh0ZXJuIE9iamVjdEFkZHJlc3MgQWdncmVnYXRlQ3JlYXRlKGNvbnN0IGNo YXIgKmFnZ05hbWUsCiAJCQkJCQkJCQkgTGlzdCAqYWdnY29tYmluZWZuTmFtZSwKIAkJCQkJCQkJ CSBMaXN0ICphZ2dzZXJpYWxmbk5hbWUsCiAJCQkJCQkJCQkgTGlzdCAqYWdnZGVzZXJpYWxmbk5h bWUsCisJCQkJCQkJCQkgTGlzdCAqYWdncGFydGlhbGNvbnZlcnRlcmZuTmFtZSwKIAkJCQkJCQkJ CSBMaXN0ICphZ2dtdHJhbnNmbk5hbWUsCiAJCQkJCQkJCQkgTGlzdCAqYWdnbWludnRyYW5zZm5O YW1lLAogCQkJCQkJCQkJIExpc3QgKmFnZ21maW5hbGZuTmFtZSwKQEAgLTE3NSw2ICsxODIsNyBA QCBleHRlcm4gT2JqZWN0QWRkcmVzcyBBZ2dyZWdhdGVDcmVhdGUoY29uc3QgY2hhciAqYWdnTmFt ZSwKIAkJCQkJCQkJCSBpbnQzMiBhZ2dtVHJhbnNTcGFjZSwKIAkJCQkJCQkJCSBjb25zdCBjaGFy ICphZ2dpbml0dmFsLAogCQkJCQkJCQkJIGNvbnN0IGNoYXIgKmFnZ21pbml0dmFsLAotCQkJCQkJ CQkJIGNoYXIgcHJvcGFyYWxsZWwpOworCQkJCQkJCQkJIGNoYXIgcHJvcGFyYWxsZWwsCisJCQkJ CQkJCQkgYm9vbCBwYXJ0aWFsUHVzaGRvd25TYWZlKTsKIAogI2VuZGlmCQkJCQkJCS8qIFBHX0FH R1JFR0FURV9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0 IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAppbmRleCBkOGU4NzE1ZWQxYy4uMzQ1 MGI1MjZiMTQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKKysr IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdApAQCAtNDc5MCw2ICs0NzkwLDEyIEBA CiB7IG9pZCA9PiAnMjc4NicsIGRlc2NyID0+ICdhZ2dyZWdhdGUgc2VyaWFsIGZ1bmN0aW9uJywK ICAgcHJvbmFtZSA9PiAnaW50OF9hdmdfc2VyaWFsaXplJywgcHJvcmV0dHlwZSA9PiAnYnl0ZWEn LAogICBwcm9hcmd0eXBlcyA9PiAnaW50ZXJuYWwnLCBwcm9zcmMgPT4gJ2ludDhfYXZnX3Nlcmlh bGl6ZScgfSwKK3sgb2lkID0+ICc5NjMwJywgZGVzY3IgPT4gJ3BhcnRpYWwgYWdncmVnYXRlIGNv bnZlcnRlciBmdW5jdGlvbicsCisgIHByb25hbWUgPT4gJ2ludDhfc3VtX3RvX2ludGVybmFsX3Nl cmlhbGl6ZScsIHByb3JldHR5cGUgPT4gJ2J5dGVhJywKKyAgcHJvYXJndHlwZXMgPT4gJ2ludDgn LCBwcm9zcmMgPT4gJ2ludDhfc3VtX3RvX2ludGVybmFsX3NlcmlhbGl6ZScgfSwKK3sgb2lkID0+ ICc5NjMxJywgZGVzY3IgPT4gJ3BhcnRpYWwgYWdncmVnYXRlIGNvbnZlcnRlciBmdW5jdGlvbics CisgIHByb25hbWUgPT4gJ251bWVyaWNfc3VtX3RvX2ludGVybmFsX3NlcmlhbGl6ZScsIHByb3Jl dHR5cGUgPT4gJ2J5dGVhJywKKyAgcHJvYXJndHlwZXMgPT4gJ251bWVyaWMnLCBwcm9zcmMgPT4g J251bWVyaWNfc3VtX3RvX2ludGVybmFsX3NlcmlhbGl6ZScgfSwKIHsgb2lkID0+ICcyNzg3Jywg ZGVzY3IgPT4gJ2FnZ3JlZ2F0ZSBkZXNlcmlhbCBmdW5jdGlvbicsCiAgIHByb25hbWUgPT4gJ2lu dDhfYXZnX2Rlc2VyaWFsaXplJywgcHJvcmV0dHlwZSA9PiAnaW50ZXJuYWwnLAogICBwcm9hcmd0 eXBlcyA9PiAnYnl0ZWEgaW50ZXJuYWwnLCBwcm9zcmMgPT4gJ2ludDhfYXZnX2Rlc2VyaWFsaXpl JyB9LApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9vaWRqb2lucy5vdXQg Yi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL29pZGpvaW5zLm91dAppbmRleCAyMTVlYjg5OWJl My4uODY0MTUxYmJjYTMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvb2lk am9pbnMub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvb2lkam9pbnMub3V0CkBA IC0xNDUsNiArMTQ1LDcgQEAgTk9USUNFOiAgY2hlY2tpbmcgcGdfYWdncmVnYXRlIHthZ2dmaW5h bGZufSA9PiBwZ19wcm9jIHtvaWR9CiBOT1RJQ0U6ICBjaGVja2luZyBwZ19hZ2dyZWdhdGUge2Fn Z2NvbWJpbmVmbn0gPT4gcGdfcHJvYyB7b2lkfQogTk9USUNFOiAgY2hlY2tpbmcgcGdfYWdncmVn YXRlIHthZ2dzZXJpYWxmbn0gPT4gcGdfcHJvYyB7b2lkfQogTk9USUNFOiAgY2hlY2tpbmcgcGdf YWdncmVnYXRlIHthZ2dkZXNlcmlhbGZufSA9PiBwZ19wcm9jIHtvaWR9CitOT1RJQ0U6ICBjaGVj a2luZyBwZ19hZ2dyZWdhdGUge2FnZ3BhcnRpYWxjb252ZXJ0ZXJmbn0gPT4gcGdfcHJvYyB7b2lk fQogTk9USUNFOiAgY2hlY2tpbmcgcGdfYWdncmVnYXRlIHthZ2dtdHJhbnNmbn0gPT4gcGdfcHJv YyB7b2lkfQogTk9USUNFOiAgY2hlY2tpbmcgcGdfYWdncmVnYXRlIHthZ2dtaW52dHJhbnNmbn0g PT4gcGdfcHJvYyB7b2lkfQogTk9USUNFOiAgY2hlY2tpbmcgcGdfYWdncmVnYXRlIHthZ2dtZmlu YWxmbn0gPT4gcGdfcHJvYyB7b2lkfQotLSAKMi4yNS4xCgo= --=_bce734be7c0f0b48b6144bd44518339b--