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 1mcj3O-00052T-JZ for pgsql-hackers@arkaria.postgresql.org; Tue, 19 Oct 2021 06:56:55 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1mcj3M-0000TL-Ls for pgsql-hackers@arkaria.postgresql.org; Tue, 19 Oct 2021 06:56:52 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mcj3L-0000TC-Uu for pgsql-hackers@lists.postgresql.org; Tue, 19 Oct 2021 06:56:52 +0000 Received: from mail.postgrespro.ru ([93.174.131.139]) by makus.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1mcj3H-0004pS-LF for pgsql-hackers@postgresql.org; Tue, 19 Oct 2021 06:56:51 +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 5D4A321C2D92; Tue, 19 Oct 2021 09:56:45 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mail; t=1634626605; bh=hOV0emc/zAxG/A4J01Wckf/KKJPJ2g0X0d8ujjXe8Lw=; h=Date:From:To:Cc:Subject:In-Reply-To:References; b=kT6WYUXjwsrisDfznhpsLu8hP2mW+iImLViLTvprwWPbObQReD2Y8xd5bmr2AEH8t je/9lbR/3pS+CN7JaYyVo8nKUaaZcl/W88pmpGsingJBb5usSw57iCQYFL3PP4uZ9R G3yvYrtV8KWG5DSJXMblvTTDRxYca3naDqQlRZ9E= MIME-Version: 1.0 Date: Tue, 19 Oct 2021 09:56:45 +0300 From: Alexander Pyhalov To: Tomas Vondra Cc: pgsql-hackers@postgresql.org Subject: Re: Partial aggregates pushdown In-Reply-To: References: User-Agent: Roundcube Webmail/1.4.11 Message-ID: <2486a6db3f068efb97c1277c23402e0d@postgrespro.ru> X-Sender: a.pyhalov@postgrespro.ru Content-Type: multipart/mixed; boundary="=_325eac741659a5367c872773a889cec9" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=_325eac741659a5367c872773a889cec9 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8; format=flowed Hi. Tomas Vondra писал 2021-10-15 17:56: > As for the proposed approach, it's probably good enough for the first > version to restrict this to aggregates where the aggregate result is > sufficient, i.e. we don't need any new export/import procedures. > > But it's very unlikely we'd want to restrict it the way the patch does > it, i.e. based on aggregate name. That's both fragile (people can > create new aggregates with such name) and against the PostgreSQL > extensibility (people may implement custom aggregates, but won't be > able to benefit from this just because of name). > > So for v0 maybe, but I think there neeeds to be a way to relax this in > some way, for example we could add a new flag to pg_aggregate to mark > aggregates supporting this. > Updated patch to mark aggregates as pushdown-safe in pg_aggregates. So far have no solution for aggregates with internal aggtranstype. -- Best regards, Alexander Pyhalov, Postgres Professional --=_325eac741659a5367c872773a889cec9 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=0001-Partial-aggregates-push-down-v02.patch Content-Disposition: attachment; filename=0001-Partial-aggregates-push-down-v02.patch; size=38152 RnJvbSA4MjNhMzg5Y2FmMDAzYTIxZGQ0YzhlNzU4Zjg5ZDA4YmE4OWM1ODU2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgUHloYWxvdiA8YS5weWhhbG92QHBvc3RncmVz cHJvLnJ1PgpEYXRlOiBUaHUsIDE0IE9jdCAyMDIxIDE3OjMwOjM0ICswMzAwClN1YmplY3Q6IFtQ QVRDSF0gUGFydGlhbCBhZ2dyZWdhdGVzIHB1c2ggZG93bgoKLS0tCiBjb250cmliL3Bvc3RncmVz X2Zkdy9kZXBhcnNlLmMgICAgICAgICAgICAgICAgfCAgNDUgKysrLQogLi4uL3Bvc3RncmVzX2Zk dy9leHBlY3RlZC9wb3N0Z3Jlc19mZHcub3V0ICAgIHwgMjE1ICsrKysrKysrKysrKysrKysrLQog Y29udHJpYi9wb3N0Z3Jlc19mZHcvcG9zdGdyZXNfZmR3LmMgICAgICAgICAgIHwgIDI5ICsrLQog Y29udHJpYi9wb3N0Z3Jlc19mZHcvc3FsL3Bvc3RncmVzX2Zkdy5zcWwgICAgIHwgIDMxICsrLQog c3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19hZ2dyZWdhdGUuYyAgICAgICAgICAgIHwgICA0ICstCiBz cmMvYmFja2VuZC9jb21tYW5kcy9hZ2dyZWdhdGVjbWRzLmMgICAgICAgICAgfCAgIDYgKy0KIHNy Yy9pbmNsdWRlL2NhdGFsb2cvY2F0dmVyc2lvbi5oICAgICAgICAgICAgICB8ICAgMiArLQogc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19hZ2dyZWdhdGUuZGF0ICAgICAgICAgIHwgMTAxICsrKystLS0t CiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2FnZ3JlZ2F0ZS5oICAgICAgICAgICAgfCAgIDYgKy0K IDkgZmlsZXMgY2hhbmdlZCwgMzYyIGluc2VydGlvbnMoKyksIDc3IGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2RlcGFyc2UuYyBiL2NvbnRyaWIvcG9zdGdy ZXNfZmR3L2RlcGFyc2UuYwppbmRleCBkOThiZDY2NjgxOC4uY2Y2YjJkOWYwNjYgMTAwNjQ0Ci0t LSBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2RlcGFyc2UuYworKysgYi9jb250cmliL3Bvc3RncmVz X2Zkdy9kZXBhcnNlLmMKQEAgLTE5Niw2ICsxOTYsNyBAQCBzdGF0aWMgYm9vbCBpc19zdWJxdWVy eV92YXIoVmFyICpub2RlLCBSZWxPcHRJbmZvICpmb3JlaWducmVsLAogc3RhdGljIHZvaWQgZ2V0 X3JlbGF0aW9uX2NvbHVtbl9hbGlhc19pZHMoVmFyICpub2RlLCBSZWxPcHRJbmZvICpmb3JlaWdu cmVsLAogCQkJCQkJCQkJCSAgaW50ICpyZWxubywgaW50ICpjb2xubyk7CiAKK3N0YXRpYyBib29s IHBhcnRpYWxfYWdnX29rKEFnZ3JlZiAqYWdnKTsKIAogLyoKICAqIEV4YW1pbmUgZWFjaCBxdWFs IGNsYXVzZSBpbiBpbnB1dF9jb25kcywgYW5kIGNsYXNzaWZ5IHRoZW0gaW50byB0d28gZ3JvdXBz LApAQCAtODMxLDggKzgzMiwxMCBAQCBmb3JlaWduX2V4cHJfd2Fsa2VyKE5vZGUgKm5vZGUsCiAJ CQkJaWYgKCFJU19VUFBFUl9SRUwoZ2xvYl9jeHQtPmZvcmVpZ25yZWwpKQogCQkJCQlyZXR1cm4g ZmFsc2U7CiAKLQkJCQkvKiBPbmx5IG5vbi1zcGxpdCBhZ2dyZWdhdGVzIGFyZSBwdXNoYWJsZS4g Ki8KLQkJCQlpZiAoYWdnLT5hZ2dzcGxpdCAhPSBBR0dTUExJVF9TSU1QTEUpCisJCQkJaWYgKChh Z2ctPmFnZ3NwbGl0ICE9IEFHR1NQTElUX1NJTVBMRSkgJiYgKGFnZy0+YWdnc3BsaXQgIT0gQUdH U1BMSVRfSU5JVElBTF9TRVJJQUwpKQorCQkJCQlyZXR1cm4gZmFsc2U7CisKKwkJCQlpZiAoYWdn LT5hZ2dzcGxpdCA9PSBBR0dTUExJVF9JTklUSUFMX1NFUklBTCAmJiAhcGFydGlhbF9hZ2dfb2so YWdnKSkKIAkJCQkJcmV0dXJuIGZhbHNlOwogCiAJCQkJLyogQXMgdXN1YWwsIGl0IG11c3QgYmUg c2hpcHBhYmxlLiAqLwpAQCAtMzI0OSw3ICszMjUyLDcgQEAgZGVwYXJzZUFnZ3JlZihBZ2dyZWYg Km5vZGUsIGRlcGFyc2VfZXhwcl9jeHQgKmNvbnRleHQpCiAJYm9vbAkJdXNlX3ZhcmlhZGljOwog CiAJLyogT25seSBiYXNpYywgbm9uLXNwbGl0IGFnZ3JlZ2F0aW9uIGFjY2VwdGVkLiAqLwotCUFz c2VydChub2RlLT5hZ2dzcGxpdCA9PSBBR0dTUExJVF9TSU1QTEUpOworCUFzc2VydChub2RlLT5h Z2dzcGxpdCA9PSBBR0dTUExJVF9TSU1QTEUgfHwgbm9kZS0+YWdnc3BsaXQgPT0gQUdHU1BMSVRf SU5JVElBTF9TRVJJQUwpOwogCiAJLyogQ2hlY2sgaWYgbmVlZCB0byBwcmludCBWQVJJQURJQyAo Y2YuIHJ1bGV1dGlscy5jKSAqLwogCXVzZV92YXJpYWRpYyA9IG5vZGUtPmFnZ3ZhcmlhZGljOwpA QCAtMzcxOSwzICszNzIyLDM5IEBAIGdldF9yZWxhdGlvbl9jb2x1bW5fYWxpYXNfaWRzKFZhciAq bm9kZSwgUmVsT3B0SW5mbyAqZm9yZWlnbnJlbCwKIAkvKiBTaG91bGRuJ3QgZ2V0IGhlcmUgKi8K IAllbG9nKEVSUk9SLCAidW5leHBlY3RlZCBleHByZXNzaW9uIGluIHN1YnF1ZXJ5IG91dHB1dCIp OwogfQorCisvKgorICogQ2hlY2sgdGhhdCBwYXJ0aWFsIGFnZ3JlZ2F0ZSBhZ2cgaXMgZmluZSB0 byBwdXNoIGRvd24KKyAqLworc3RhdGljIGJvb2wKK3BhcnRpYWxfYWdnX29rKEFnZ3JlZiAqYWdn KQoreworCUhlYXBUdXBsZQlhZ2d0dXA7CisJRm9ybV9wZ19hZ2dyZWdhdGUgYWdnZm9ybTsKKwor CUFzc2VydChhZ2ctPmFnZ3NwbGl0ID09IEFHR1NQTElUX0lOSVRJQUxfU0VSSUFMKTsKKworCS8q IFdlIGRvbid0IHN1cHBvcnQgY29tcGxleCBwYXJ0aWFsIGFnZ3JlZ2F0ZXMgKi8KKwlpZiAoYWdn LT5hZ2dkaXN0aW5jdCB8fCBhZ2ctPmFnZ3ZhcmlhZGljIHx8IGFnZy0+YWdna2luZCAhPSBBR0dL SU5EX05PUk1BTCB8fCBhZ2ctPmFnZ29yZGVyICE9IE5JTCkKKwkJcmV0dXJuIGZhbHNlOworCisJ LyogQ2FuJ3QgcHJvY2VzcyBhZ2dyZWdhdGVzIHdoaWNoIHJlcXVpcmUgc2VyaWFsaXphdGlvbi9k ZXNlcmlhbGl6YXRpb24gKi8KKwlpZiAoYWdnLT5hZ2d0cmFuc3R5cGUgPT0gSU5URVJOQUxPSUQp CisJCXJldHVybiBmYWxzZTsKKworCWFnZ3R1cCA9IFNlYXJjaFN5c0NhY2hlMShBR0dGTk9JRCwg T2JqZWN0SWRHZXREYXR1bShhZ2ctPmFnZ2Zub2lkKSk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlk KGFnZ3R1cCkpCisJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBmdW5jdGlv biAldSIsIGFnZy0+YWdnZm5vaWQpOworCWFnZ2Zvcm0gPSAoRm9ybV9wZ19hZ2dyZWdhdGUpIEdF VFNUUlVDVChhZ2d0dXApOworCisJLyogT25seSBhZ2dyZWdhdGVzLCBtYXJrZWQgYXMgcHVzaGRv d24gc2FmZSwgYXJlIGFsbG93ZWQgKi8KKwlpZiAoYWdnZm9ybS0+YWdncGFydGlhbHB1c2hkb3du c2FmZSAhPSB0cnVlKQorCXsKKwkJUmVsZWFzZVN5c0NhY2hlKGFnZ3R1cCk7CisJCXJldHVybiBm YWxzZTsKKwl9CisKKwlSZWxlYXNlU3lzQ2FjaGUoYWdndHVwKTsKKworCXJldHVybiB0cnVlOwor fQpkaWZmIC0tZ2l0IGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3 Lm91dCBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2V4cGVjdGVkL3Bvc3RncmVzX2Zkdy5vdXQKaW5k ZXggNDRjNDM2N2I4ZjkuLjg5NDUxZTIwOGUwIDEwMDY0NAotLS0gYS9jb250cmliL3Bvc3RncmVz X2Zkdy9leHBlY3RlZC9wb3N0Z3Jlc19mZHcub3V0CisrKyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3 L2V4cGVjdGVkL3Bvc3RncmVzX2Zkdy5vdXQKQEAgLTkyNzksMTMgKzkyNzksMTMgQEAgUkVTRVQg ZW5hYmxlX3BhcnRpdGlvbndpc2Vfam9pbjsKIC0tID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tIHRlc3QgcGFydGl0 aW9ud2lzZSBhZ2dyZWdhdGVzCiAtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci1DUkVBVEUgVEFCTEUgcGFnZ190YWIg KGEgaW50LCBiIGludCwgYyB0ZXh0KSBQQVJUSVRJT04gQlkgUkFOR0UoYSk7CitDUkVBVEUgVEFC TEUgcGFnZ190YWIgKGEgaW50LCBiIGludCwgYyB0ZXh0LCBkIG51bWVyaWMpIFBBUlRJVElPTiBC WSBSQU5HRShhKTsKIENSRUFURSBUQUJMRSBwYWdnX3RhYl9wMSAoTElLRSBwYWdnX3RhYik7CiBD UkVBVEUgVEFCTEUgcGFnZ190YWJfcDIgKExJS0UgcGFnZ190YWIpOwogQ1JFQVRFIFRBQkxFIHBh Z2dfdGFiX3AzIChMSUtFIHBhZ2dfdGFiKTsKLUlOU0VSVCBJTlRPIHBhZ2dfdGFiX3AxIFNFTEVD VCBpICUgMzAsIGkgJSA1MCwgdG9fY2hhcihpLzMwLCAnRk0wMDAwJykgRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMSwgMzAwMCkgaSBXSEVSRSAoaSAlIDMwKSA8IDEwOwotSU5TRVJUIElOVE8gcGFnZ190 YWJfcDIgU0VMRUNUIGkgJSAzMCwgaSAlIDUwLCB0b19jaGFyKGkvMzAsICdGTTAwMDAnKSBGUk9N IGdlbmVyYXRlX3NlcmllcygxLCAzMDAwKSBpIFdIRVJFIChpICUgMzApIDwgMjAgYW5kIChpICUg MzApID49IDEwOwotSU5TRVJUIElOVE8gcGFnZ190YWJfcDMgU0VMRUNUIGkgJSAzMCwgaSAlIDUw LCB0b19jaGFyKGkvMzAsICdGTTAwMDAnKSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAzMDAwKSBp IFdIRVJFIChpICUgMzApIDwgMzAgYW5kIChpICUgMzApID49IDIwOworSU5TRVJUIElOVE8gcGFn Z190YWJfcDEgU0VMRUNUIGkgJSAzMCwgaSAlIDUwLCB0b19jaGFyKGkvMzAsICdGTTAwMDAnKSwg aSAlIDQwIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMwMDApIGkgV0hFUkUgKGkgJSAzMCkgPCAx MDsKK0lOU0VSVCBJTlRPIHBhZ2dfdGFiX3AyIFNFTEVDVCBpICUgMzAsIGkgJSA1MCwgdG9fY2hh cihpLzMwLCAnRk0wMDAwJyksIGkgJSA0MCBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAzMDAwKSBp IFdIRVJFIChpICUgMzApIDwgMjAgYW5kIChpICUgMzApID49IDEwOworSU5TRVJUIElOVE8gcGFn Z190YWJfcDMgU0VMRUNUIGkgJSAzMCwgaSAlIDUwLCB0b19jaGFyKGkvMzAsICdGTTAwMDAnKSwg aSAlIDQwIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMwMDApIGkgV0hFUkUgKGkgJSAzMCkgPCAz MCBhbmQgKGkgJSAzMCkgPj0gMjA7CiAtLSBDcmVhdGUgZm9yZWlnbiBwYXJ0aXRpb25zCiBDUkVB VEUgRk9SRUlHTiBUQUJMRSBmcGFnZ190YWJfcDEgUEFSVElUSU9OIE9GIHBhZ2dfdGFiIEZPUiBW QUxVRVMgRlJPTSAoMCkgVE8gKDEwKSBTRVJWRVIgbG9vcGJhY2sgT1BUSU9OUyAodGFibGVfbmFt ZSAncGFnZ190YWJfcDEnKTsKIENSRUFURSBGT1JFSUdOIFRBQkxFIGZwYWdnX3RhYl9wMiBQQVJU SVRJT04gT0YgcGFnZ190YWIgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDIwKSBTRVJWRVIgbG9v cGJhY2sgT1BUSU9OUyAodGFibGVfbmFtZSAncGFnZ190YWJfcDInKTsKQEAgLTkzNDQsOCArOTM0 NCw4IEBAIFNFTEVDVCBhLCBzdW0oYiksIG1pbihiKSwgY291bnQoKikgRlJPTSBwYWdnX3RhYiBH Uk9VUCBCWSBhIEhBVklORyBhdmcoYikgPCAyMiBPCiAtLSBTaG91bGQgaGF2ZSBhbGwgdGhlIGNv bHVtbnMgaW4gdGhlIHRhcmdldCBsaXN0IGZvciB0aGUgZ2l2ZW4gcmVsYXRpb24KIEVYUExBSU4g KFZFUkJPU0UsIENPU1RTIE9GRikKIFNFTEVDVCBhLCBjb3VudCh0MSkgRlJPTSBwYWdnX3RhYiB0 MSBHUk9VUCBCWSBhIEhBVklORyBhdmcoYikgPCAyMiBPUkRFUiBCWSAxOwotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVF UlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCiAgU29ydAogICAgT3V0cHV0OiB0MS5hLCAoY291bnQoKCh0MS4qKTo6cGFnZ190YWIpKSkK ICAgIFNvcnQgS2V5OiB0MS5hCkBAIC05MzU2LDIxICs5MzU2LDIxIEBAIFNFTEVDVCBhLCBjb3Vu dCh0MSkgRlJPTSBwYWdnX3RhYiB0MSBHUk9VUCBCWSBhIEhBVklORyBhdmcoYikgPCAyMiBPUkRF UiBCWSAxOwogICAgICAgICAgICAgICAgRmlsdGVyOiAoYXZnKHQxLmIpIDwgJzIyJzo6bnVtZXJp YykKICAgICAgICAgICAgICAgIC0+ICBGb3JlaWduIFNjYW4gb24gcHVibGljLmZwYWdnX3RhYl9w MSB0MQogICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MS5hLCB0MS4qLCB0MS5iCi0gICAg ICAgICAgICAgICAgICAgICBSZW1vdGUgU1FMOiBTRUxFQ1QgYSwgYiwgYyBGUk9NIHB1YmxpYy5w YWdnX3RhYl9wMQorICAgICAgICAgICAgICAgICAgICAgUmVtb3RlIFNRTDogU0VMRUNUIGEsIGIs IGMsIGQgRlJPTSBwdWJsaWMucGFnZ190YWJfcDEKICAgICAgICAgIC0+ICBIYXNoQWdncmVnYXRl CiAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzEuYSwgY291bnQoKCh0MV8xLiopOjpwYWdnX3Rh YikpCiAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQxXzEuYQogICAgICAgICAgICAgICAgRmls dGVyOiAoYXZnKHQxXzEuYikgPCAnMjInOjpudW1lcmljKQogICAgICAgICAgICAgICAgLT4gIEZv cmVpZ24gU2NhbiBvbiBwdWJsaWMuZnBhZ2dfdGFiX3AyIHQxXzEKICAgICAgICAgICAgICAgICAg ICAgIE91dHB1dDogdDFfMS5hLCB0MV8xLiosIHQxXzEuYgotICAgICAgICAgICAgICAgICAgICAg UmVtb3RlIFNRTDogU0VMRUNUIGEsIGIsIGMgRlJPTSBwdWJsaWMucGFnZ190YWJfcDIKKyAgICAg ICAgICAgICAgICAgICAgIFJlbW90ZSBTUUw6IFNFTEVDVCBhLCBiLCBjLCBkIEZST00gcHVibGlj LnBhZ2dfdGFiX3AyCiAgICAgICAgICAtPiAgSGFzaEFnZ3JlZ2F0ZQogICAgICAgICAgICAgICAg T3V0cHV0OiB0MV8yLmEsIGNvdW50KCgodDFfMi4qKTo6cGFnZ190YWIpKQogICAgICAgICAgICAg ICAgR3JvdXAgS2V5OiB0MV8yLmEKICAgICAgICAgICAgICAgIEZpbHRlcjogKGF2Zyh0MV8yLmIp IDwgJzIyJzo6bnVtZXJpYykKICAgICAgICAgICAgICAgIC0+ICBGb3JlaWduIFNjYW4gb24gcHVi bGljLmZwYWdnX3RhYl9wMyB0MV8yCiAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzIu YSwgdDFfMi4qLCB0MV8yLmIKLSAgICAgICAgICAgICAgICAgICAgIFJlbW90ZSBTUUw6IFNFTEVD VCBhLCBiLCBjIEZST00gcHVibGljLnBhZ2dfdGFiX3AzCisgICAgICAgICAgICAgICAgICAgICBS ZW1vdGUgU1FMOiBTRUxFQ1QgYSwgYiwgYywgZCBGUk9NIHB1YmxpYy5wYWdnX3RhYl9wMwogKDI1 IHJvd3MpCiAKIFNFTEVDVCBhLCBjb3VudCh0MSkgRlJPTSBwYWdnX3RhYiB0MSBHUk9VUCBCWSBh IEhBVklORyBhdmcoYikgPCAyMiBPUkRFUiBCWSAxOwpAQCAtOTQwNiw2ICs5NDA2LDIwMyBAQCBT RUxFQ1QgYiwgYXZnKGEpLCBtYXgoYSksIGNvdW50KCopIEZST00gcGFnZ190YWIgR1JPVVAgQlkg YiBIQVZJTkcgc3VtKGEpIDwgNzAwCiAgICAgICAgICAgICAgICAgICAgICAtPiAgRm9yZWlnbiBT Y2FuIG9uIGZwYWdnX3RhYl9wMyBwYWdnX3RhYl8yCiAoMTUgcm93cykKIAorLS0gSXQncyB1bnNh ZmUgdG8gcHVzaCBkb3duIGhhdmluZyBjbGF1c2Ugd2hlbiB0aGVyZSBhcmUgcGFydGlhbCBhZ2dy ZWdhdGVzCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitTRUxFQ1QgYiwgbWF4KGEpLCBj b3VudCgqKSBGUk9NIHBhZ2dfdGFiIEdST1VQIEJZIGIgSEFWSU5HIHN1bShhKSA8IDcwMCBPUkRF UiBCWSAxOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyBTb3J0CisgICBPdXRwdXQ6IHBhZ2dfdGFiLmIsIChtYXgocGFnZ190YWIu YSkpLCAoY291bnQoKikpCisgICBTb3J0IEtleTogcGFnZ190YWIuYgorICAgLT4gIEZpbmFsaXpl IEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgIE91dHB1dDogcGFnZ190YWIuYiwgbWF4KHBhZ2dfdGFi LmEpLCBjb3VudCgqKQorICAgICAgICAgR3JvdXAgS2V5OiBwYWdnX3RhYi5iCisgICAgICAgICBG aWx0ZXI6IChzdW0ocGFnZ190YWIuYSkgPCA3MDApCisgICAgICAgICAtPiAgQXBwZW5kCisgICAg ICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAg ICBPdXRwdXQ6IHBhZ2dfdGFiLmIsIFBBUlRJQUwgbWF4KHBhZ2dfdGFiLmEpLCBQQVJUSUFMIGNv dW50KCopLCBQQVJUSUFMIHN1bShwYWdnX3RhYi5hKQorICAgICAgICAgICAgICAgICAgICAgR3Jv dXAgS2V5OiBwYWdnX3RhYi5iCisgICAgICAgICAgICAgICAgICAgICAtPiAgRm9yZWlnbiBTY2Fu IG9uIHB1YmxpYy5mcGFnZ190YWJfcDEgcGFnZ190YWIKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIE91dHB1dDogcGFnZ190YWIuYiwgcGFnZ190YWIuYQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgUmVtb3RlIFNRTDogU0VMRUNUIGEsIGIgRlJPTSBwdWJsaWMucGFnZ190YWJfcDEKKyAg ICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAg ICAgIE91dHB1dDogcGFnZ190YWJfMS5iLCBQQVJUSUFMIG1heChwYWdnX3RhYl8xLmEpLCBQQVJU SUFMIGNvdW50KCopLCBQQVJUSUFMIHN1bShwYWdnX3RhYl8xLmEpCisgICAgICAgICAgICAgICAg ICAgICBHcm91cCBLZXk6IHBhZ2dfdGFiXzEuYgorICAgICAgICAgICAgICAgICAgICAgLT4gIEZv cmVpZ24gU2NhbiBvbiBwdWJsaWMuZnBhZ2dfdGFiX3AyIHBhZ2dfdGFiXzEKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIE91dHB1dDogcGFnZ190YWJfMS5iLCBwYWdnX3RhYl8xLmEKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgIFJlbW90ZSBTUUw6IFNFTEVDVCBhLCBiIEZST00gcHVibGlj LnBhZ2dfdGFiX3AyCisgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVnYXRlCisg ICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHBhZ2dfdGFiXzIuYiwgUEFSVElBTCBtYXgocGFn Z190YWJfMi5hKSwgUEFSVElBTCBjb3VudCgqKSwgUEFSVElBTCBzdW0ocGFnZ190YWJfMi5hKQor ICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiBwYWdnX3RhYl8yLmIKKyAgICAgICAgICAg ICAgICAgICAgIC0+ICBGb3JlaWduIFNjYW4gb24gcHVibGljLmZwYWdnX3RhYl9wMyBwYWdnX3Rh Yl8yCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHBhZ2dfdGFiXzIuYiwgcGFn Z190YWJfMi5hCisgICAgICAgICAgICAgICAgICAgICAgICAgICBSZW1vdGUgU1FMOiBTRUxFQ1Qg YSwgYiBGUk9NIHB1YmxpYy5wYWdnX3RhYl9wMworKDI2IHJvd3MpCisKKy0tIFBhcnRpYWwgYWdn cmVnYXRlcyBhcmUgZmluZSB0byBwdXNoIGRvd24gd2l0aG91dCBoYXZpbmcgY2xhdXNlCitFWFBM QUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitTRUxFQ1QgYiwgbWF4KGEpLCBjb3VudCgqKSBGUk9N IHBhZ2dfdGFiIEdST1VQIEJZIGIgT1JERVIgQlkgMTsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IFNvcnQKKyAgIE91dHB1dDogcGFnZ190YWIuYiwgKG1heChwYWdnX3RhYi5hKSksIChjb3VudCgq KSkKKyAgIFNvcnQgS2V5OiBwYWdnX3RhYi5iCisgICAtPiAgRmluYWxpemUgSGFzaEFnZ3JlZ2F0 ZQorICAgICAgICAgT3V0cHV0OiBwYWdnX3RhYi5iLCBtYXgocGFnZ190YWIuYSksIGNvdW50KCop CisgICAgICAgICBHcm91cCBLZXk6IHBhZ2dfdGFiLmIKKyAgICAgICAgIC0+ICBBcHBlbmQKKyAg ICAgICAgICAgICAgIC0+ICBGb3JlaWduIFNjYW4KKyAgICAgICAgICAgICAgICAgICAgIE91dHB1 dDogcGFnZ190YWIuYiwgKFBBUlRJQUwgbWF4KHBhZ2dfdGFiLmEpKSwgKFBBUlRJQUwgY291bnQo KikpCisgICAgICAgICAgICAgICAgICAgICBSZWxhdGlvbnM6IEFnZ3JlZ2F0ZSBvbiAocHVibGlj LmZwYWdnX3RhYl9wMSBwYWdnX3RhYikKKyAgICAgICAgICAgICAgICAgICAgIFJlbW90ZSBTUUw6 IFNFTEVDVCBiLCBtYXgoYSksIGNvdW50KCopIEZST00gcHVibGljLnBhZ2dfdGFiX3AxIEdST1VQ IEJZIDEKKyAgICAgICAgICAgICAgIC0+ICBGb3JlaWduIFNjYW4KKyAgICAgICAgICAgICAgICAg ICAgIE91dHB1dDogcGFnZ190YWJfMS5iLCAoUEFSVElBTCBtYXgocGFnZ190YWJfMS5hKSksIChQ QVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAgICAgICAgUmVsYXRpb25zOiBBZ2dyZWdh dGUgb24gKHB1YmxpYy5mcGFnZ190YWJfcDIgcGFnZ190YWJfMSkKKyAgICAgICAgICAgICAgICAg ICAgIFJlbW90ZSBTUUw6IFNFTEVDVCBiLCBtYXgoYSksIGNvdW50KCopIEZST00gcHVibGljLnBh Z2dfdGFiX3AyIEdST1VQIEJZIDEKKyAgICAgICAgICAgICAgIC0+ICBGb3JlaWduIFNjYW4KKyAg ICAgICAgICAgICAgICAgICAgIE91dHB1dDogcGFnZ190YWJfMi5iLCAoUEFSVElBTCBtYXgocGFn Z190YWJfMi5hKSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAgICAgICAgUmVs YXRpb25zOiBBZ2dyZWdhdGUgb24gKHB1YmxpYy5mcGFnZ190YWJfcDMgcGFnZ190YWJfMikKKyAg ICAgICAgICAgICAgICAgICAgIFJlbW90ZSBTUUw6IFNFTEVDVCBiLCBtYXgoYSksIGNvdW50KCop IEZST00gcHVibGljLnBhZ2dfdGFiX3AzIEdST1VQIEJZIDEKKygxOSByb3dzKQorCitTRUxFQ1Qg YiwgbWF4KGEpLCBjb3VudCgqKSBGUk9NIHBhZ2dfdGFiIEdST1VQIEJZIGIgT1JERVIgQlkgMTsK KyBiICB8IG1heCB8IGNvdW50IAorLS0tLSstLS0tLSstLS0tLS0tCisgIDAgfCAgMjAgfCAgICA2 MAorICAxIHwgIDIxIHwgICAgNjAKKyAgMiB8ICAyMiB8ICAgIDYwCisgIDMgfCAgMjMgfCAgICA2 MAorICA0IHwgIDI0IHwgICAgNjAKKyAgNSB8ICAyNSB8ICAgIDYwCisgIDYgfCAgMjYgfCAgICA2 MAorICA3IHwgIDI3IHwgICAgNjAKKyAgOCB8ICAyOCB8ICAgIDYwCisgIDkgfCAgMjkgfCAgICA2 MAorIDEwIHwgIDIwIHwgICAgNjAKKyAxMSB8ICAyMSB8ICAgIDYwCisgMTIgfCAgMjIgfCAgICA2 MAorIDEzIHwgIDIzIHwgICAgNjAKKyAxNCB8ICAyNCB8ICAgIDYwCisgMTUgfCAgMjUgfCAgICA2 MAorIDE2IHwgIDI2IHwgICAgNjAKKyAxNyB8ICAyNyB8ICAgIDYwCisgMTggfCAgMjggfCAgICA2 MAorIDE5IHwgIDI5IHwgICAgNjAKKyAyMCB8ICAyMCB8ICAgIDYwCisgMjEgfCAgMjEgfCAgICA2 MAorIDIyIHwgIDIyIHwgICAgNjAKKyAyMyB8ICAyMyB8ICAgIDYwCisgMjQgfCAgMjQgfCAgICA2 MAorIDI1IHwgIDI1IHwgICAgNjAKKyAyNiB8ICAyNiB8ICAgIDYwCisgMjcgfCAgMjcgfCAgICA2 MAorIDI4IHwgIDI4IHwgICAgNjAKKyAyOSB8ICAyOSB8ICAgIDYwCisgMzAgfCAgMjAgfCAgICA2 MAorIDMxIHwgIDIxIHwgICAgNjAKKyAzMiB8ICAyMiB8ICAgIDYwCisgMzMgfCAgMjMgfCAgICA2 MAorIDM0IHwgIDI0IHwgICAgNjAKKyAzNSB8ICAyNSB8ICAgIDYwCisgMzYgfCAgMjYgfCAgICA2 MAorIDM3IHwgIDI3IHwgICAgNjAKKyAzOCB8ICAyOCB8ICAgIDYwCisgMzkgfCAgMjkgfCAgICA2 MAorIDQwIHwgIDIwIHwgICAgNjAKKyA0MSB8ICAyMSB8ICAgIDYwCisgNDIgfCAgMjIgfCAgICA2 MAorIDQzIHwgIDIzIHwgICAgNjAKKyA0NCB8ICAyNCB8ICAgIDYwCisgNDUgfCAgMjUgfCAgICA2 MAorIDQ2IHwgIDI2IHwgICAgNjAKKyA0NyB8ICAyNyB8ICAgIDYwCisgNDggfCAgMjggfCAgICA2 MAorIDQ5IHwgIDI5IHwgICAgNjAKKyg1MCByb3dzKQorCistLSBQYXJ0aWFsIGFnZ3JlZ2F0ZXMg YXJlIGZpbmUgdG8gcHVzaCBkb3duCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitTRUxF Q1QgbWF4KGEpLCBjb3VudCgqKSBGUk9NIHBhZ2dfdGFiOworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyBGaW5hbGl6ZSBBZ2dyZWdhdGUKKyAgIE91dHB1dDogbWF4KHBh Z2dfdGFiLmEpLCBjb3VudCgqKQorICAgLT4gIEFwcGVuZAorICAgICAgICAgLT4gIEZvcmVpZ24g U2NhbgorICAgICAgICAgICAgICAgT3V0cHV0OiAoUEFSVElBTCBtYXgocGFnZ190YWIuYSkpLCAo UEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgIFJlbGF0aW9uczogQWdncmVnYXRlIG9u IChwdWJsaWMuZnBhZ2dfdGFiX3AxIHBhZ2dfdGFiKQorICAgICAgICAgICAgICAgUmVtb3RlIFNR TDogU0VMRUNUIG1heChhKSwgY291bnQoKikgRlJPTSBwdWJsaWMucGFnZ190YWJfcDEKKyAgICAg ICAgIC0+ICBGb3JlaWduIFNjYW4KKyAgICAgICAgICAgICAgIE91dHB1dDogKFBBUlRJQUwgbWF4 KHBhZ2dfdGFiXzEuYSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgIFJlbGF0 aW9uczogQWdncmVnYXRlIG9uIChwdWJsaWMuZnBhZ2dfdGFiX3AyIHBhZ2dfdGFiXzEpCisgICAg ICAgICAgICAgICBSZW1vdGUgU1FMOiBTRUxFQ1QgbWF4KGEpLCBjb3VudCgqKSBGUk9NIHB1Ymxp Yy5wYWdnX3RhYl9wMgorICAgICAgICAgLT4gIEZvcmVpZ24gU2NhbgorICAgICAgICAgICAgICAg T3V0cHV0OiAoUEFSVElBTCBtYXgocGFnZ190YWJfMi5hKSksIChQQVJUSUFMIGNvdW50KCopKQor ICAgICAgICAgICAgICAgUmVsYXRpb25zOiBBZ2dyZWdhdGUgb24gKHB1YmxpYy5mcGFnZ190YWJf cDMgcGFnZ190YWJfMikKKyAgICAgICAgICAgICAgIFJlbW90ZSBTUUw6IFNFTEVDVCBtYXgoYSks IGNvdW50KCopIEZST00gcHVibGljLnBhZ2dfdGFiX3AzCisoMTUgcm93cykKKworU0VMRUNUIG1h eChhKSwgY291bnQoKikgRlJPTSBwYWdnX3RhYjsKKyBtYXggfCBjb3VudCAKKy0tLS0tKy0tLS0t LS0KKyAgMjkgfCAgMzAwMAorKDEgcm93KQorCistLSBTaG91bGRuJ3QgdHJ5IHRvIHB1c2ggZG93 bgorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIG1heChhKSwgY291bnQoZGlz dGluY3QgYikgRlJPTSBwYWdnX3RhYjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkg UExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICBP dXRwdXQ6IG1heChwYWdnX3RhYi5hKSwgY291bnQoRElTVElOQ1QgcGFnZ190YWIuYikKKyAgIC0+ ICBBcHBlbmQKKyAgICAgICAgIC0+ICBGb3JlaWduIFNjYW4gb24gcHVibGljLmZwYWdnX3RhYl9w MSBwYWdnX3RhYl8xCisgICAgICAgICAgICAgICBPdXRwdXQ6IHBhZ2dfdGFiXzEuYSwgcGFnZ190 YWJfMS5iCisgICAgICAgICAgICAgICBSZW1vdGUgU1FMOiBTRUxFQ1QgYSwgYiBGUk9NIHB1Ymxp Yy5wYWdnX3RhYl9wMQorICAgICAgICAgLT4gIEZvcmVpZ24gU2NhbiBvbiBwdWJsaWMuZnBhZ2df dGFiX3AyIHBhZ2dfdGFiXzIKKyAgICAgICAgICAgICAgIE91dHB1dDogcGFnZ190YWJfMi5hLCBw YWdnX3RhYl8yLmIKKyAgICAgICAgICAgICAgIFJlbW90ZSBTUUw6IFNFTEVDVCBhLCBiIEZST00g cHVibGljLnBhZ2dfdGFiX3AyCisgICAgICAgICAtPiAgRm9yZWlnbiBTY2FuIG9uIHB1YmxpYy5m cGFnZ190YWJfcDMgcGFnZ190YWJfMworICAgICAgICAgICAgICAgT3V0cHV0OiBwYWdnX3RhYl8z LmEsIHBhZ2dfdGFiXzMuYgorICAgICAgICAgICAgICAgUmVtb3RlIFNRTDogU0VMRUNUIGEsIGIg RlJPTSBwdWJsaWMucGFnZ190YWJfcDMKKygxMiByb3dzKQorCitTRUxFQ1QgbWF4KGEpLCBjb3Vu dChkaXN0aW5jdCBiKSBGUk9NIHBhZ2dfdGFiOworIG1heCB8IGNvdW50IAorLS0tLS0rLS0tLS0t LQorICAyOSB8ICAgIDUwCisoMSByb3cpCisKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikK K1NFTEVDVCBzdW0oZCkgRlJPTSBwYWdnX3RhYjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgRmlu YWxpemUgQWdncmVnYXRlCisgICBPdXRwdXQ6IHN1bShwYWdnX3RhYi5kKQorICAgLT4gIEFwcGVu ZAorICAgICAgICAgLT4gIFBhcnRpYWwgQWdncmVnYXRlCisgICAgICAgICAgICAgICBPdXRwdXQ6 IFBBUlRJQUwgc3VtKHBhZ2dfdGFiLmQpCisgICAgICAgICAgICAgICAtPiAgRm9yZWlnbiBTY2Fu IG9uIHB1YmxpYy5mcGFnZ190YWJfcDEgcGFnZ190YWIKKyAgICAgICAgICAgICAgICAgICAgIE91 dHB1dDogcGFnZ190YWIuZAorICAgICAgICAgICAgICAgICAgICAgUmVtb3RlIFNRTDogU0VMRUNU IGQgRlJPTSBwdWJsaWMucGFnZ190YWJfcDEKKyAgICAgICAgIC0+ICBQYXJ0aWFsIEFnZ3JlZ2F0 ZQorICAgICAgICAgICAgICAgT3V0cHV0OiBQQVJUSUFMIHN1bShwYWdnX3RhYl8xLmQpCisgICAg ICAgICAgICAgICAtPiAgRm9yZWlnbiBTY2FuIG9uIHB1YmxpYy5mcGFnZ190YWJfcDIgcGFnZ190 YWJfMQorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiBwYWdnX3RhYl8xLmQKKyAgICAgICAg ICAgICAgICAgICAgIFJlbW90ZSBTUUw6IFNFTEVDVCBkIEZST00gcHVibGljLnBhZ2dfdGFiX3Ay CisgICAgICAgICAtPiAgUGFydGlhbCBBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgIE91dHB1dDog UEFSVElBTCBzdW0ocGFnZ190YWJfMi5kKQorICAgICAgICAgICAgICAgLT4gIEZvcmVpZ24gU2Nh biBvbiBwdWJsaWMuZnBhZ2dfdGFiX3AzIHBhZ2dfdGFiXzIKKyAgICAgICAgICAgICAgICAgICAg IE91dHB1dDogcGFnZ190YWJfMi5kCisgICAgICAgICAgICAgICAgICAgICBSZW1vdGUgU1FMOiBT RUxFQ1QgZCBGUk9NIHB1YmxpYy5wYWdnX3RhYl9wMworKDE4IHJvd3MpCisKK1NFTEVDVCBzdW0o ZCkgRlJPTSBwYWdnX3RhYjsKKyAgc3VtICAKKy0tLS0tLS0KKyA1ODUwMAorKDEgcm93KQorCiAt LSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CiAtLSBhY2Nlc3MgcmlnaHRzIGFuZCBzdXBlcnVzZXIKIC0tID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KZGlmZiAtLWdpdCBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy5jIGIvY29u dHJpYi9wb3N0Z3Jlc19mZHcvcG9zdGdyZXNfZmR3LmMKaW5kZXggNDVhMDkzMzdkMDguLjkwZTQ4 NGJjNjQwIDEwMDY0NAotLS0gYS9jb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYwor KysgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYwpAQCAtNTE3LDcgKzUxNyw3 IEBAIHN0YXRpYyBib29sIGZvcmVpZ25fam9pbl9vayhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0 SW5mbyAqam9pbnJlbCwKIAkJCQkJCQlKb2luVHlwZSBqb2ludHlwZSwgUmVsT3B0SW5mbyAqb3V0 ZXJyZWwsIFJlbE9wdEluZm8gKmlubmVycmVsLAogCQkJCQkJCUpvaW5QYXRoRXh0cmFEYXRhICpl eHRyYSk7CiBzdGF0aWMgYm9vbCBmb3JlaWduX2dyb3VwaW5nX29rKFBsYW5uZXJJbmZvICpyb290 LCBSZWxPcHRJbmZvICpncm91cGVkX3JlbCwKLQkJCQkJCQkJTm9kZSAqaGF2aW5nUXVhbCk7CisJ CQkJCQkJCU5vZGUgKmhhdmluZ1F1YWwsIGJvb2wgcGFydGlhbCk7CiBzdGF0aWMgTGlzdCAqZ2V0 X3VzZWZ1bF9wYXRoa2V5c19mb3JfcmVsYXRpb24oUGxhbm5lckluZm8gKnJvb3QsCiAJCQkJCQkJ CQkJCSAgUmVsT3B0SW5mbyAqcmVsKTsKIHN0YXRpYyBMaXN0ICpnZXRfdXNlZnVsX2Vjc19mb3Jf cmVsYXRpb24oUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCk7CkBAIC01MjYsNyAr NTI2LDggQEAgc3RhdGljIHZvaWQgYWRkX3BhdGhzX3dpdGhfcGF0aGtleXNfZm9yX3JlbChQbGFu bmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsLAogc3RhdGljIHZvaWQgYWRkX2ZvcmVpZ25f Z3JvdXBpbmdfcGF0aHMoUGxhbm5lckluZm8gKnJvb3QsCiAJCQkJCQkJCQkgICBSZWxPcHRJbmZv ICppbnB1dF9yZWwsCiAJCQkJCQkJCQkgICBSZWxPcHRJbmZvICpncm91cGVkX3JlbCwKLQkJCQkJ CQkJCSAgIEdyb3VwUGF0aEV4dHJhRGF0YSAqZXh0cmEpOworCQkJCQkJCQkJICAgR3JvdXBQYXRo RXh0cmFEYXRhICpleHRyYSwKKwkJCQkJCQkJCSAgIGJvb2wgcGFydGlhbCk7CiBzdGF0aWMgdm9p ZCBhZGRfZm9yZWlnbl9vcmRlcmVkX3BhdGhzKFBsYW5uZXJJbmZvICpyb290LAogCQkJCQkJCQkJ ICBSZWxPcHRJbmZvICppbnB1dF9yZWwsCiAJCQkJCQkJCQkgIFJlbE9wdEluZm8gKm9yZGVyZWRf cmVsKTsKQEAgLTYwODMsNyArNjA4NCw3IEBAIHBvc3RncmVzR2V0Rm9yZWlnbkpvaW5QYXRocyhQ bGFubmVySW5mbyAqcm9vdCwKICAqLwogc3RhdGljIGJvb2wKIGZvcmVpZ25fZ3JvdXBpbmdfb2so UGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKmdyb3VwZWRfcmVsLAotCQkJCQlOb2RlICpo YXZpbmdRdWFsKQorCQkJCQlOb2RlICpoYXZpbmdRdWFsLCBib29sIHBhcnRpYWwpCiB7CiAJUXVl cnkJICAgKnF1ZXJ5ID0gcm9vdC0+cGFyc2U7CiAJUGdGZHdSZWxhdGlvbkluZm8gKmZwaW5mbyA9 IChQZ0Zkd1JlbGF0aW9uSW5mbyAqKSBncm91cGVkX3JlbC0+ZmR3X3ByaXZhdGU7CkBAIC02MDk3 LDYgKzYwOTgsMTEgQEAgZm9yZWlnbl9ncm91cGluZ19vayhQbGFubmVySW5mbyAqcm9vdCwgUmVs T3B0SW5mbyAqZ3JvdXBlZF9yZWwsCiAJaWYgKHF1ZXJ5LT5ncm91cGluZ1NldHMpCiAJCXJldHVy biBmYWxzZTsKIAorCisJLyogSXQncyB1bnNhZmUgdG8gcHVzaCBoYXZpbmcgc3RhdGVtZW50cyB3 aXRoIHBhcnRpYWwgYWdncmVnYXRlcyAqLworCWlmIChwYXJ0aWFsICYmIGhhdmluZ1F1YWwpCisJ CXJldHVybiBmYWxzZTsKKwogCS8qIEdldCB0aGUgZnBpbmZvIG9mIHRoZSB1bmRlcmx5aW5nIHNj YW4gcmVsYXRpb24uICovCiAJb2ZwaW5mbyA9IChQZ0Zkd1JlbGF0aW9uSW5mbyAqKSBmcGluZm8t Pm91dGVycmVsLT5mZHdfcHJpdmF0ZTsKIApAQCAtNjMzNiw2ICs2MzQyLDcgQEAgcG9zdGdyZXNH ZXRGb3JlaWduVXBwZXJQYXRocyhQbGFubmVySW5mbyAqcm9vdCwgVXBwZXJSZWxhdGlvbktpbmQg c3RhZ2UsCiAKIAkvKiBJZ25vcmUgc3RhZ2VzIHdlIGRvbid0IHN1cHBvcnQ7IGFuZCBza2lwIGFu eSBkdXBsaWNhdGUgY2FsbHMuICovCiAJaWYgKChzdGFnZSAhPSBVUFBFUlJFTF9HUk9VUF9BR0cg JiYKKwkJIHN0YWdlICE9IFVQUEVSUkVMX1BBUlRJQUxfR1JPVVBfQUdHICYmCiAJCSBzdGFnZSAh PSBVUFBFUlJFTF9PUkRFUkVEICYmCiAJCSBzdGFnZSAhPSBVUFBFUlJFTF9GSU5BTCkgfHwKIAkJ b3V0cHV0X3JlbC0+ZmR3X3ByaXZhdGUpCkBAIC02MzUwLDcgKzYzNTcsMTEgQEAgcG9zdGdyZXNH ZXRGb3JlaWduVXBwZXJQYXRocyhQbGFubmVySW5mbyAqcm9vdCwgVXBwZXJSZWxhdGlvbktpbmQg c3RhZ2UsCiAJewogCQljYXNlIFVQUEVSUkVMX0dST1VQX0FHRzoKIAkJCWFkZF9mb3JlaWduX2dy b3VwaW5nX3BhdGhzKHJvb3QsIGlucHV0X3JlbCwgb3V0cHV0X3JlbCwKLQkJCQkJCQkJCSAgIChH cm91cFBhdGhFeHRyYURhdGEgKikgZXh0cmEpOworCQkJCQkJCQkJICAgKEdyb3VwUGF0aEV4dHJh RGF0YSAqKSBleHRyYSwgZmFsc2UpOworCQkJYnJlYWs7CisJCWNhc2UgVVBQRVJSRUxfUEFSVElB TF9HUk9VUF9BR0c6CisJCQlhZGRfZm9yZWlnbl9ncm91cGluZ19wYXRocyhyb290LCBpbnB1dF9y ZWwsIG91dHB1dF9yZWwsCisJCQkJCQkJCQkgICAoR3JvdXBQYXRoRXh0cmFEYXRhICopIGV4dHJh LCB0cnVlKTsKIAkJCWJyZWFrOwogCQljYXNlIFVQUEVSUkVMX09SREVSRUQ6CiAJCQlhZGRfZm9y ZWlnbl9vcmRlcmVkX3BhdGhzKHJvb3QsIGlucHV0X3JlbCwgb3V0cHV0X3JlbCk7CkBAIC02Mzc1 LDcgKzYzODYsOCBAQCBwb3N0Z3Jlc0dldEZvcmVpZ25VcHBlclBhdGhzKFBsYW5uZXJJbmZvICpy b290LCBVcHBlclJlbGF0aW9uS2luZCBzdGFnZSwKIHN0YXRpYyB2b2lkCiBhZGRfZm9yZWlnbl9n cm91cGluZ19wYXRocyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqaW5wdXRfcmVsLAog CQkJCQkJICAgUmVsT3B0SW5mbyAqZ3JvdXBlZF9yZWwsCi0JCQkJCQkgICBHcm91cFBhdGhFeHRy YURhdGEgKmV4dHJhKQorCQkJCQkJICAgR3JvdXBQYXRoRXh0cmFEYXRhICpleHRyYSwKKwkJCQkJ CSAgIGJvb2wgcGFydGlhbCkKIHsKIAlRdWVyeQkgICAqcGFyc2UgPSByb290LT5wYXJzZTsKIAlQ Z0Zkd1JlbGF0aW9uSW5mbyAqaWZwaW5mbyA9IGlucHV0X3JlbC0+ZmR3X3ByaXZhdGU7CkBAIC02 MzkxLDggKzY0MDMsOSBAQCBhZGRfZm9yZWlnbl9ncm91cGluZ19wYXRocyhQbGFubmVySW5mbyAq cm9vdCwgUmVsT3B0SW5mbyAqaW5wdXRfcmVsLAogCQkhcm9vdC0+aGFzSGF2aW5nUXVhbCkKIAkJ cmV0dXJuOwogCi0JQXNzZXJ0KGV4dHJhLT5wYXR5cGUgPT0gUEFSVElUSU9OV0lTRV9BR0dSRUdB VEVfTk9ORSB8fAotCQkgICBleHRyYS0+cGF0eXBlID09IFBBUlRJVElPTldJU0VfQUdHUkVHQVRF X0ZVTEwpOworCUFzc2VydCgoKGV4dHJhLT5wYXR5cGUgPT0gUEFSVElUSU9OV0lTRV9BR0dSRUdB VEVfTk9ORSB8fAorCQkJIGV4dHJhLT5wYXR5cGUgPT0gUEFSVElUSU9OV0lTRV9BR0dSRUdBVEVf RlVMTCkgJiYgIXBhcnRpYWwpIHx8CisJCSAgIChleHRyYS0+cGF0eXBlID09IFBBUlRJVElPTldJ U0VfQUdHUkVHQVRFX1BBUlRJQUwgJiYgcGFydGlhbCkpOwogCiAJLyogc2F2ZSB0aGUgaW5wdXRf cmVsIGFzIG91dGVycmVsIGluIGZwaW5mbyAqLwogCWZwaW5mby0+b3V0ZXJyZWwgPSBpbnB1dF9y ZWw7CkBAIC02NDEyLDcgKzY0MjUsNyBAQCBhZGRfZm9yZWlnbl9ncm91cGluZ19wYXRocyhQbGFu bmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqaW5wdXRfcmVsLAogCSAqIFVzZSBIQVZJTkcgcXVh bCBmcm9tIGV4dHJhLiBJbiBjYXNlIG9mIGNoaWxkIHBhcnRpdGlvbiwgaXQgd2lsbCBoYXZlCiAJ ICogdHJhbnNsYXRlZCBWYXJzLgogCSAqLwotCWlmICghZm9yZWlnbl9ncm91cGluZ19vayhyb290 LCBncm91cGVkX3JlbCwgZXh0cmEtPmhhdmluZ1F1YWwpKQorCWlmICghZm9yZWlnbl9ncm91cGlu Z19vayhyb290LCBncm91cGVkX3JlbCwgZXh0cmEtPmhhdmluZ1F1YWwsIHBhcnRpYWwpKQogCQly ZXR1cm47CiAKIAkvKgpkaWZmIC0tZ2l0IGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvc3FsL3Bvc3Rn cmVzX2Zkdy5zcWwgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9zcWwvcG9zdGdyZXNfZmR3LnNxbApp bmRleCBlN2I4NjlmOGNlYS4uNjNjMGMwM2RhMzcgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcG9zdGdy ZXNfZmR3L3NxbC9wb3N0Z3Jlc19mZHcuc3FsCisrKyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Nx bC9wb3N0Z3Jlc19mZHcuc3FsCkBAIC0yNzI5LDE1ICsyNzI5LDE1IEBAIFJFU0VUIGVuYWJsZV9w YXJ0aXRpb253aXNlX2pvaW47CiAtLSB0ZXN0IHBhcnRpdGlvbndpc2UgYWdncmVnYXRlcwogLS0g PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQogCi1DUkVBVEUgVEFCTEUgcGFnZ190YWIgKGEgaW50LCBiIGludCwgYyB0ZXh0 KSBQQVJUSVRJT04gQlkgUkFOR0UoYSk7CitDUkVBVEUgVEFCTEUgcGFnZ190YWIgKGEgaW50LCBi IGludCwgYyB0ZXh0LCBkIG51bWVyaWMpIFBBUlRJVElPTiBCWSBSQU5HRShhKTsKIAogQ1JFQVRF IFRBQkxFIHBhZ2dfdGFiX3AxIChMSUtFIHBhZ2dfdGFiKTsKIENSRUFURSBUQUJMRSBwYWdnX3Rh Yl9wMiAoTElLRSBwYWdnX3RhYik7CiBDUkVBVEUgVEFCTEUgcGFnZ190YWJfcDMgKExJS0UgcGFn Z190YWIpOwogCi1JTlNFUlQgSU5UTyBwYWdnX3RhYl9wMSBTRUxFQ1QgaSAlIDMwLCBpICUgNTAs IHRvX2NoYXIoaS8zMCwgJ0ZNMDAwMCcpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMwMDApIGkg V0hFUkUgKGkgJSAzMCkgPCAxMDsKLUlOU0VSVCBJTlRPIHBhZ2dfdGFiX3AyIFNFTEVDVCBpICUg MzAsIGkgJSA1MCwgdG9fY2hhcihpLzMwLCAnRk0wMDAwJykgRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MSwgMzAwMCkgaSBXSEVSRSAoaSAlIDMwKSA8IDIwIGFuZCAoaSAlIDMwKSA+PSAxMDsKLUlOU0VS VCBJTlRPIHBhZ2dfdGFiX3AzIFNFTEVDVCBpICUgMzAsIGkgJSA1MCwgdG9fY2hhcihpLzMwLCAn Rk0wMDAwJykgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMzAwMCkgaSBXSEVSRSAoaSAlIDMwKSA8 IDMwIGFuZCAoaSAlIDMwKSA+PSAyMDsKK0lOU0VSVCBJTlRPIHBhZ2dfdGFiX3AxIFNFTEVDVCBp ICUgMzAsIGkgJSA1MCwgdG9fY2hhcihpLzMwLCAnRk0wMDAwJyksIGkgJSA0MCBGUk9NIGdlbmVy YXRlX3NlcmllcygxLCAzMDAwKSBpIFdIRVJFIChpICUgMzApIDwgMTA7CitJTlNFUlQgSU5UTyBw YWdnX3RhYl9wMiBTRUxFQ1QgaSAlIDMwLCBpICUgNTAsIHRvX2NoYXIoaS8zMCwgJ0ZNMDAwMCcp LCBpICUgNDAgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMzAwMCkgaSBXSEVSRSAoaSAlIDMwKSA8 IDIwIGFuZCAoaSAlIDMwKSA+PSAxMDsKK0lOU0VSVCBJTlRPIHBhZ2dfdGFiX3AzIFNFTEVDVCBp ICUgMzAsIGkgJSA1MCwgdG9fY2hhcihpLzMwLCAnRk0wMDAwJyksIGkgJSA0MCBGUk9NIGdlbmVy YXRlX3NlcmllcygxLCAzMDAwKSBpIFdIRVJFIChpICUgMzApIDwgMzAgYW5kIChpICUgMzApID49 IDIwOwogCiAtLSBDcmVhdGUgZm9yZWlnbiBwYXJ0aXRpb25zCiBDUkVBVEUgRk9SRUlHTiBUQUJM RSBmcGFnZ190YWJfcDEgUEFSVElUSU9OIE9GIHBhZ2dfdGFiIEZPUiBWQUxVRVMgRlJPTSAoMCkg VE8gKDEwKSBTRVJWRVIgbG9vcGJhY2sgT1BUSU9OUyAodGFibGVfbmFtZSAncGFnZ190YWJfcDEn KTsKQEAgLTI3NzEsNiArMjc3MSwyOSBAQCBTRUxFQ1QgYSwgY291bnQodDEpIEZST00gcGFnZ190 YWIgdDEgR1JPVVAgQlkgYSBIQVZJTkcgYXZnKGIpIDwgMjIgT1JERVIgQlkgMTsKIEVYUExBSU4g KENPU1RTIE9GRikKIFNFTEVDVCBiLCBhdmcoYSksIG1heChhKSwgY291bnQoKikgRlJPTSBwYWdn X3RhYiBHUk9VUCBCWSBiIEhBVklORyBzdW0oYSkgPCA3MDAgT1JERVIgQlkgMTsKIAorLS0gSXQn cyB1bnNhZmUgdG8gcHVzaCBkb3duIGhhdmluZyBjbGF1c2Ugd2hlbiB0aGVyZSBhcmUgcGFydGlh bCBhZ2dyZWdhdGVzCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitTRUxFQ1QgYiwgbWF4 KGEpLCBjb3VudCgqKSBGUk9NIHBhZ2dfdGFiIEdST1VQIEJZIGIgSEFWSU5HIHN1bShhKSA8IDcw MCBPUkRFUiBCWSAxOworCistLSBQYXJ0aWFsIGFnZ3JlZ2F0ZXMgYXJlIGZpbmUgdG8gcHVzaCBk b3duIHdpdGhvdXQgaGF2aW5nIGNsYXVzZQorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQor U0VMRUNUIGIsIG1heChhKSwgY291bnQoKikgRlJPTSBwYWdnX3RhYiBHUk9VUCBCWSBiIE9SREVS IEJZIDE7CitTRUxFQ1QgYiwgbWF4KGEpLCBjb3VudCgqKSBGUk9NIHBhZ2dfdGFiIEdST1VQIEJZ IGIgT1JERVIgQlkgMTsKKworLS0gUGFydGlhbCBhZ2dyZWdhdGVzIGFyZSBmaW5lIHRvIHB1c2gg ZG93bgorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIG1heChhKSwgY291bnQo KikgRlJPTSBwYWdnX3RhYjsKK1NFTEVDVCBtYXgoYSksIGNvdW50KCopIEZST00gcGFnZ190YWI7 CisKKy0tIFNob3VsZG4ndCB0cnkgdG8gcHVzaCBkb3duCitFWFBMQUlOIChWRVJCT1NFLCBDT1NU UyBPRkYpCitTRUxFQ1QgbWF4KGEpLCBjb3VudChkaXN0aW5jdCBiKSBGUk9NIHBhZ2dfdGFiOwor U0VMRUNUIG1heChhKSwgY291bnQoZGlzdGluY3QgYikgRlJPTSBwYWdnX3RhYjsKKworRVhQTEFJ TiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIHN1bShkKSBGUk9NIHBhZ2dfdGFiOworU0VM RUNUIHN1bShkKSBGUk9NIHBhZ2dfdGFiOworCiAtLSA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLSBhY2Nlc3Mgcmln aHRzIGFuZCBzdXBlcnVzZXIKIC0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2NhdGFsb2cvcGdfYWdncmVnYXRlLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX2FnZ3JlZ2F0 ZS5jCmluZGV4IDFmNjNkODA4MWIyLi44YzkxYzg3YTg1YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvY2F0YWxvZy9wZ19hZ2dyZWdhdGUuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX2Fn Z3JlZ2F0ZS5jCkBAIC03NCw3ICs3NCw4IEBAIEFnZ3JlZ2F0ZUNyZWF0ZShjb25zdCBjaGFyICph Z2dOYW1lLAogCQkJCWludDMyIGFnZ21UcmFuc1NwYWNlLAogCQkJCWNvbnN0IGNoYXIgKmFnZ2lu aXR2YWwsCiAJCQkJY29uc3QgY2hhciAqYWdnbWluaXR2YWwsCi0JCQkJY2hhciBwcm9wYXJhbGxl bCkKKwkJCQljaGFyIHByb3BhcmFsbGVsLAorCQkJCWJvb2wgcGFydGlhbFB1c2hkb3duU2FmZSkK IHsKIAlSZWxhdGlvbglhZ2dkZXNjOwogCUhlYXBUdXBsZQl0dXA7CkBAIC02NzYsNiArNjc3LDcg QEAgQWdncmVnYXRlQ3JlYXRlKGNvbnN0IGNoYXIgKmFnZ05hbWUsCiAJdmFsdWVzW0FudW1fcGdf YWdncmVnYXRlX2FnZ3RyYW5zc3BhY2UgLSAxXSA9IEludDMyR2V0RGF0dW0oYWdnVHJhbnNTcGFj ZSk7CiAJdmFsdWVzW0FudW1fcGdfYWdncmVnYXRlX2FnZ210cmFuc3R5cGUgLSAxXSA9IE9iamVj dElkR2V0RGF0dW0oYWdnbVRyYW5zVHlwZSk7CiAJdmFsdWVzW0FudW1fcGdfYWdncmVnYXRlX2Fn Z210cmFuc3NwYWNlIC0gMV0gPSBJbnQzMkdldERhdHVtKGFnZ21UcmFuc1NwYWNlKTsKKwl2YWx1 ZXNbQW51bV9wZ19hZ2dyZWdhdGVfYWdncGFydGlhbHB1c2hkb3duc2FmZSAtIDFdID0gQm9vbEdl dERhdHVtKHBhcnRpYWxQdXNoZG93blNhZmUpOwogCWlmIChhZ2dpbml0dmFsKQogCQl2YWx1ZXNb QW51bV9wZ19hZ2dyZWdhdGVfYWdnaW5pdHZhbCAtIDFdID0gQ1N0cmluZ0dldFRleHREYXR1bShh Z2dpbml0dmFsKTsKIAllbHNlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9hZ2dy ZWdhdGVjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9hZ2dyZWdhdGVjbWRzLmMKaW5kZXgg MDQ2Y2YyZGYwOGYuLjUzOTc2NDg3ZmVjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5k cy9hZ2dyZWdhdGVjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvYWdncmVnYXRlY21k cy5jCkBAIC03NCw2ICs3NCw3IEBAIERlZmluZUFnZ3JlZ2F0ZShQYXJzZVN0YXRlICpwc3RhdGUs CiAJTGlzdAkgICAqbWZpbmFsZnVuY05hbWUgPSBOSUw7CiAJYm9vbAkJZmluYWxmdW5jRXh0cmFB cmdzID0gZmFsc2U7CiAJYm9vbAkJbWZpbmFsZnVuY0V4dHJhQXJncyA9IGZhbHNlOworCWJvb2wJ CXBhcnRpYWxQdXNoZG93blNhZmUgPSBmYWxzZTsKIAljaGFyCQlmaW5hbGZ1bmNNb2RpZnkgPSAw OwogCWNoYXIJCW1maW5hbGZ1bmNNb2RpZnkgPSAwOwogCUxpc3QJICAgKnNvcnRvcGVyYXRvck5h bWUgPSBOSUw7CkBAIC0xODksNiArMTkwLDggQEAgRGVmaW5lQWdncmVnYXRlKFBhcnNlU3RhdGUg KnBzdGF0ZSwKIAkJCW1pbml0dmFsID0gZGVmR2V0U3RyaW5nKGRlZmVsKTsKIAkJZWxzZSBpZiAo c3RyY21wKGRlZmVsLT5kZWZuYW1lLCAicGFyYWxsZWwiKSA9PSAwKQogCQkJcGFyYWxsZWwgPSBk ZWZHZXRTdHJpbmcoZGVmZWwpOworCQllbHNlIGlmIChzdHJjbXAoZGVmZWwtPmRlZm5hbWUsICJw YXJ0aWFsX3B1c2hkb3duX3NhZmUiKSA9PSAwKQorCQkJcGFydGlhbFB1c2hkb3duU2FmZSA9IGRl ZkdldEJvb2xlYW4oZGVmZWwpOwogCQllbHNlCiAJCQllcmVwb3J0KFdBUk5JTkcsCiAJCQkJCShl cnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKQEAgLTQ3MSw3ICs0NzQsOCBAQCBEZWZpbmVB Z2dyZWdhdGUoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJICAgbXRyYW5zU3BhY2UsIC8qIHRy YW5zaXRpb24gc3BhY2UgKi8KIAkJCQkJCSAgIGluaXR2YWwsIC8qIGluaXRpYWwgY29uZGl0aW9u ICovCiAJCQkJCQkgICBtaW5pdHZhbCwJLyogaW5pdGlhbCBjb25kaXRpb24gKi8KLQkJCQkJCSAg IHByb3BhcmFsbGVsKTsJLyogcGFyYWxsZWwgc2FmZT8gKi8KKwkJCQkJCSAgIHByb3BhcmFsbGVs LCAvKiBwYXJhbGxlbCBzYWZlPyAqLworCQkJCQkJICAgcGFydGlhbFB1c2hkb3duU2FmZSk7CS8q IHBhcnRpYWwgcHVzaGRvd24gc2FmZT8gKi8KIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2NhdGFsb2cvY2F0dmVyc2lvbi5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9jYXR2ZXJzaW9u LmgKaW5kZXggMzI1M2I4NzUxYjEuLjE4N2M4MWI0ODU3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9jYXRhbG9nL2NhdHZlcnNpb24uaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2NhdHZlcnNp b24uaApAQCAtNTMsNiArNTMsNiBAQAogICovCiAKIC8qCQkJCQkJCXl5eXltbWRkTiAqLwotI2Rl ZmluZSBDQVRBTE9HX1ZFUlNJT05fTk8JMjAyMTA5MTAxCisjZGVmaW5lIENBVEFMT0dfVkVSU0lP Tl9OTwkyMDIxMTAxOTEKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9n L3BnX2FnZ3JlZ2F0ZS5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2FnZ3JlZ2F0ZS5kYXQK aW5kZXggZmM2ZDNiZmQ5NDUuLmU4ZGYyNmUzMzRjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9j YXRhbG9nL3BnX2FnZ3JlZ2F0ZS5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19hZ2dy ZWdhdGUuZGF0CkBAIC02MCwyMiArNjAsMjIgQEAKIHsgYWdnZm5vaWQgPT4gJ3N1bShpbnQ0KScs IGFnZ3RyYW5zZm4gPT4gJ2ludDRfc3VtJywgYWdnY29tYmluZWZuID0+ICdpbnQ4cGwnLAogICBh Z2dtdHJhbnNmbiA9PiAnaW50NF9hdmdfYWNjdW0nLCBhZ2dtaW52dHJhbnNmbiA9PiAnaW50NF9h dmdfYWNjdW1faW52JywKICAgYWdnbWZpbmFsZm4gPT4gJ2ludDJpbnQ0X3N1bScsIGFnZ3RyYW5z dHlwZSA9PiAnaW50OCcsCi0gIGFnZ210cmFuc3R5cGUgPT4gJ19pbnQ4JywgYWdnbWluaXR2YWwg PT4gJ3swLDB9JyB9LAorICBhZ2dtdHJhbnN0eXBlID0+ICdfaW50OCcsIGFnZ21pbml0dmFsID0+ ICd7MCwwfScsIGFnZ3BhcnRpYWxwdXNoZG93bnNhZmUgPT4gJ3QnIH0sCiB7IGFnZ2Zub2lkID0+ ICdzdW0oaW50MiknLCBhZ2d0cmFuc2ZuID0+ICdpbnQyX3N1bScsIGFnZ2NvbWJpbmVmbiA9PiAn aW50OHBsJywKICAgYWdnbXRyYW5zZm4gPT4gJ2ludDJfYXZnX2FjY3VtJywgYWdnbWludnRyYW5z Zm4gPT4gJ2ludDJfYXZnX2FjY3VtX2ludicsCiAgIGFnZ21maW5hbGZuID0+ICdpbnQyaW50NF9z dW0nLCBhZ2d0cmFuc3R5cGUgPT4gJ2ludDgnLAotICBhZ2dtdHJhbnN0eXBlID0+ICdfaW50OCcs IGFnZ21pbml0dmFsID0+ICd7MCwwfScgfSwKKyAgYWdnbXRyYW5zdHlwZSA9PiAnX2ludDgnLCBh Z2dtaW5pdHZhbCA9PiAnezAsMH0nLCBhZ2dwYXJ0aWFscHVzaGRvd25zYWZlID0+ICd0JyB9LAog eyBhZ2dmbm9pZCA9PiAnc3VtKGZsb2F0NCknLCBhZ2d0cmFuc2ZuID0+ICdmbG9hdDRwbCcsCiAg IGFnZ2NvbWJpbmVmbiA9PiAnZmxvYXQ0cGwnLCBhZ2d0cmFuc3R5cGUgPT4gJ2Zsb2F0NCcgfSwK IHsgYWdnZm5vaWQgPT4gJ3N1bShmbG9hdDgpJywgYWdndHJhbnNmbiA9PiAnZmxvYXQ4cGwnLAot ICBhZ2djb21iaW5lZm4gPT4gJ2Zsb2F0OHBsJywgYWdndHJhbnN0eXBlID0+ICdmbG9hdDgnIH0s CisgIGFnZ2NvbWJpbmVmbiA9PiAnZmxvYXQ4cGwnLCBhZ2d0cmFuc3R5cGUgPT4gJ2Zsb2F0OCcs IGFnZ3BhcnRpYWxwdXNoZG93bnNhZmUgPT4gJ3QnIH0sCiB7IGFnZ2Zub2lkID0+ICdzdW0obW9u ZXkpJywgYWdndHJhbnNmbiA9PiAnY2FzaF9wbCcsIGFnZ2NvbWJpbmVmbiA9PiAnY2FzaF9wbCcs CiAgIGFnZ210cmFuc2ZuID0+ICdjYXNoX3BsJywgYWdnbWludnRyYW5zZm4gPT4gJ2Nhc2hfbWkn LAotICBhZ2d0cmFuc3R5cGUgPT4gJ21vbmV5JywgYWdnbXRyYW5zdHlwZSA9PiAnbW9uZXknIH0s CisgIGFnZ3RyYW5zdHlwZSA9PiAnbW9uZXknLCBhZ2dtdHJhbnN0eXBlID0+ICdtb25leScsIGFn Z3BhcnRpYWxwdXNoZG93bnNhZmUgPT4gJ3QnIH0sCiB7IGFnZ2Zub2lkID0+ICdzdW0oaW50ZXJ2 YWwpJywgYWdndHJhbnNmbiA9PiAnaW50ZXJ2YWxfcGwnLAogICBhZ2djb21iaW5lZm4gPT4gJ2lu dGVydmFsX3BsJywgYWdnbXRyYW5zZm4gPT4gJ2ludGVydmFsX3BsJywKICAgYWdnbWludnRyYW5z Zm4gPT4gJ2ludGVydmFsX21pJywgYWdndHJhbnN0eXBlID0+ICdpbnRlcnZhbCcsCi0gIGFnZ210 cmFuc3R5cGUgPT4gJ2ludGVydmFsJyB9LAorICBhZ2dtdHJhbnN0eXBlID0+ICdpbnRlcnZhbCcs IGFnZ3BhcnRpYWxwdXNoZG93bnNhZmUgPT4gJ3QnIH0sCiB7IGFnZ2Zub2lkID0+ICdzdW0obnVt ZXJpYyknLCBhZ2d0cmFuc2ZuID0+ICdudW1lcmljX2F2Z19hY2N1bScsCiAgIGFnZ2ZpbmFsZm4g PT4gJ251bWVyaWNfc3VtJywgYWdnY29tYmluZWZuID0+ICdudW1lcmljX2F2Z19jb21iaW5lJywK ICAgYWdnc2VyaWFsZm4gPT4gJ251bWVyaWNfYXZnX3NlcmlhbGl6ZScsCkBAIC04MywxNDYgKzgz LDE0OSBAQAogICBhZ2dtdHJhbnNmbiA9PiAnbnVtZXJpY19hdmdfYWNjdW0nLCBhZ2dtaW52dHJh bnNmbiA9PiAnbnVtZXJpY19hY2N1bV9pbnYnLAogICBhZ2dtZmluYWxmbiA9PiAnbnVtZXJpY19z dW0nLCBhZ2d0cmFuc3R5cGUgPT4gJ2ludGVybmFsJywKICAgYWdndHJhbnNzcGFjZSA9PiAnMTI4 JywgYWdnbXRyYW5zdHlwZSA9PiAnaW50ZXJuYWwnLAotICBhZ2dtdHJhbnNzcGFjZSA9PiAnMTI4 JyB9LAorICBhZ2dtdHJhbnNzcGFjZSA9PiAnMTI4JywgYWdncGFydGlhbHB1c2hkb3duc2FmZSA9 PiAndCcgfSwKIAogIyBtYXgKIHsgYWdnZm5vaWQgPT4gJ21heChpbnQ4KScsIGFnZ3RyYW5zZm4g PT4gJ2ludDhsYXJnZXInLAogICBhZ2djb21iaW5lZm4gPT4gJ2ludDhsYXJnZXInLCBhZ2dzb3J0 b3AgPT4gJz4oaW50OCxpbnQ4KScsCi0gIGFnZ3RyYW5zdHlwZSA9PiAnaW50OCcgfSwKKyAgYWdn dHJhbnN0eXBlID0+ICdpbnQ4JywgYWdncGFydGlhbHB1c2hkb3duc2FmZSA9PiAndCcgfSwKIHsg YWdnZm5vaWQgPT4gJ21heChpbnQ0KScsIGFnZ3RyYW5zZm4gPT4gJ2ludDRsYXJnZXInLAogICBh Z2djb21iaW5lZm4gPT4gJ2ludDRsYXJnZXInLCBhZ2dzb3J0b3AgPT4gJz4oaW50NCxpbnQ0KScs Ci0gIGFnZ3RyYW5zdHlwZSA9PiAnaW50NCcgfSwKKyAgYWdndHJhbnN0eXBlID0+ICdpbnQ0Jywg YWdncGFydGlhbHB1c2hkb3duc2FmZSA9PiAndCcgfSwKIHsgYWdnZm5vaWQgPT4gJ21heChpbnQy KScsIGFnZ3RyYW5zZm4gPT4gJ2ludDJsYXJnZXInLAogICBhZ2djb21iaW5lZm4gPT4gJ2ludDJs YXJnZXInLCBhZ2dzb3J0b3AgPT4gJz4oaW50MixpbnQyKScsCi0gIGFnZ3RyYW5zdHlwZSA9PiAn aW50MicgfSwKKyAgYWdndHJhbnN0eXBlID0+ICdpbnQyJywgYWdncGFydGlhbHB1c2hkb3duc2Fm ZSA9PiAndCcgfSwKIHsgYWdnZm5vaWQgPT4gJ21heChvaWQpJywgYWdndHJhbnNmbiA9PiAnb2lk bGFyZ2VyJywKICAgYWdnY29tYmluZWZuID0+ICdvaWRsYXJnZXInLCBhZ2dzb3J0b3AgPT4gJz4o b2lkLG9pZCknLAotICBhZ2d0cmFuc3R5cGUgPT4gJ29pZCcgfSwKKyAgYWdndHJhbnN0eXBlID0+ ICdvaWQnLCBhZ2dwYXJ0aWFscHVzaGRvd25zYWZlID0+ICd0JyB9LAogeyBhZ2dmbm9pZCA9PiAn bWF4KGZsb2F0NCknLCBhZ2d0cmFuc2ZuID0+ICdmbG9hdDRsYXJnZXInLAogICBhZ2djb21iaW5l Zm4gPT4gJ2Zsb2F0NGxhcmdlcicsIGFnZ3NvcnRvcCA9PiAnPihmbG9hdDQsZmxvYXQ0KScsCi0g IGFnZ3RyYW5zdHlwZSA9PiAnZmxvYXQ0JyB9LAorICBhZ2d0cmFuc3R5cGUgPT4gJ2Zsb2F0NCcs IGFnZ3BhcnRpYWxwdXNoZG93bnNhZmUgPT4gJ3QnIH0sCiB7IGFnZ2Zub2lkID0+ICdtYXgoZmxv YXQ4KScsIGFnZ3RyYW5zZm4gPT4gJ2Zsb2F0OGxhcmdlcicsCiAgIGFnZ2NvbWJpbmVmbiA9PiAn ZmxvYXQ4bGFyZ2VyJywgYWdnc29ydG9wID0+ICc+KGZsb2F0OCxmbG9hdDgpJywKLSAgYWdndHJh bnN0eXBlID0+ICdmbG9hdDgnIH0sCisgIGFnZ3RyYW5zdHlwZSA9PiAnZmxvYXQ4JywgYWdncGFy dGlhbHB1c2hkb3duc2FmZSA9PiAndCcgfSwKIHsgYWdnZm5vaWQgPT4gJ21heChkYXRlKScsIGFn Z3RyYW5zZm4gPT4gJ2RhdGVfbGFyZ2VyJywKICAgYWdnY29tYmluZWZuID0+ICdkYXRlX2xhcmdl cicsIGFnZ3NvcnRvcCA9PiAnPihkYXRlLGRhdGUpJywKLSAgYWdndHJhbnN0eXBlID0+ICdkYXRl JyB9LAorICBhZ2d0cmFuc3R5cGUgPT4gJ2RhdGUnLCBhZ2dwYXJ0aWFscHVzaGRvd25zYWZlID0+ ICd0JyB9LAogeyBhZ2dmbm9pZCA9PiAnbWF4KHRpbWUpJywgYWdndHJhbnNmbiA9PiAndGltZV9s YXJnZXInLAogICBhZ2djb21iaW5lZm4gPT4gJ3RpbWVfbGFyZ2VyJywgYWdnc29ydG9wID0+ICc+ KHRpbWUsdGltZSknLAotICBhZ2d0cmFuc3R5cGUgPT4gJ3RpbWUnIH0sCisgIGFnZ3RyYW5zdHlw ZSA9PiAndGltZScsIGFnZ3BhcnRpYWxwdXNoZG93bnNhZmUgPT4gJ3QnIH0sCiB7IGFnZ2Zub2lk ID0+ICdtYXgodGltZXR6KScsIGFnZ3RyYW5zZm4gPT4gJ3RpbWV0el9sYXJnZXInLAogICBhZ2dj b21iaW5lZm4gPT4gJ3RpbWV0el9sYXJnZXInLCBhZ2dzb3J0b3AgPT4gJz4odGltZXR6LHRpbWV0 eiknLAotICBhZ2d0cmFuc3R5cGUgPT4gJ3RpbWV0eicgfSwKKyAgYWdndHJhbnN0eXBlID0+ICd0 aW1ldHonLCBhZ2dwYXJ0aWFscHVzaGRvd25zYWZlID0+ICd0JyB9LAogeyBhZ2dmbm9pZCA9PiAn bWF4KG1vbmV5KScsIGFnZ3RyYW5zZm4gPT4gJ2Nhc2hsYXJnZXInLAogICBhZ2djb21iaW5lZm4g PT4gJ2Nhc2hsYXJnZXInLCBhZ2dzb3J0b3AgPT4gJz4obW9uZXksbW9uZXkpJywKLSAgYWdndHJh bnN0eXBlID0+ICdtb25leScgfSwKKyAgYWdndHJhbnN0eXBlID0+ICdtb25leScsIGFnZ3BhcnRp YWxwdXNoZG93bnNhZmUgPT4gJ3QnIH0sCiB7IGFnZ2Zub2lkID0+ICdtYXgodGltZXN0YW1wKScs IGFnZ3RyYW5zZm4gPT4gJ3RpbWVzdGFtcF9sYXJnZXInLAogICBhZ2djb21iaW5lZm4gPT4gJ3Rp bWVzdGFtcF9sYXJnZXInLCBhZ2dzb3J0b3AgPT4gJz4odGltZXN0YW1wLHRpbWVzdGFtcCknLAot ICBhZ2d0cmFuc3R5cGUgPT4gJ3RpbWVzdGFtcCcgfSwKKyAgYWdndHJhbnN0eXBlID0+ICd0aW1l c3RhbXAnLCBhZ2dwYXJ0aWFscHVzaGRvd25zYWZlID0+ICd0JyB9LAogeyBhZ2dmbm9pZCA9PiAn bWF4KHRpbWVzdGFtcHR6KScsIGFnZ3RyYW5zZm4gPT4gJ3RpbWVzdGFtcHR6X2xhcmdlcicsCiAg IGFnZ2NvbWJpbmVmbiA9PiAndGltZXN0YW1wdHpfbGFyZ2VyJywKICAgYWdnc29ydG9wID0+ICc+ KHRpbWVzdGFtcHR6LHRpbWVzdGFtcHR6KScsIGFnZ3RyYW5zdHlwZSA9PiAndGltZXN0YW1wdHon IH0sCiB7IGFnZ2Zub2lkID0+ICdtYXgoaW50ZXJ2YWwpJywgYWdndHJhbnNmbiA9PiAnaW50ZXJ2 YWxfbGFyZ2VyJywKICAgYWdnY29tYmluZWZuID0+ICdpbnRlcnZhbF9sYXJnZXInLCBhZ2dzb3J0 b3AgPT4gJz4oaW50ZXJ2YWwsaW50ZXJ2YWwpJywKLSAgYWdndHJhbnN0eXBlID0+ICdpbnRlcnZh bCcgfSwKKyAgYWdndHJhbnN0eXBlID0+ICdpbnRlcnZhbCcsIGFnZ3BhcnRpYWxwdXNoZG93bnNh ZmUgPT4gJ3QnIH0sCiB7IGFnZ2Zub2lkID0+ICdtYXgodGV4dCknLCBhZ2d0cmFuc2ZuID0+ICd0 ZXh0X2xhcmdlcicsCiAgIGFnZ2NvbWJpbmVmbiA9PiAndGV4dF9sYXJnZXInLCBhZ2dzb3J0b3Ag PT4gJz4odGV4dCx0ZXh0KScsCi0gIGFnZ3RyYW5zdHlwZSA9PiAndGV4dCcgfSwKKyAgYWdndHJh bnN0eXBlID0+ICd0ZXh0JywgYWdncGFydGlhbHB1c2hkb3duc2FmZSA9PiAndCcgfSwKIHsgYWdn Zm5vaWQgPT4gJ21heChudW1lcmljKScsIGFnZ3RyYW5zZm4gPT4gJ251bWVyaWNfbGFyZ2VyJywK ICAgYWdnY29tYmluZWZuID0+ICdudW1lcmljX2xhcmdlcicsIGFnZ3NvcnRvcCA9PiAnPihudW1l cmljLG51bWVyaWMpJywKLSAgYWdndHJhbnN0eXBlID0+ICdudW1lcmljJyB9LAorICBhZ2d0cmFu c3R5cGUgPT4gJ251bWVyaWMnLCBhZ2dwYXJ0aWFscHVzaGRvd25zYWZlID0+ICd0JyB9LAogeyBh Z2dmbm9pZCA9PiAnbWF4KGFueWFycmF5KScsIGFnZ3RyYW5zZm4gPT4gJ2FycmF5X2xhcmdlcics CiAgIGFnZ2NvbWJpbmVmbiA9PiAnYXJyYXlfbGFyZ2VyJywgYWdnc29ydG9wID0+ICc+KGFueWFy cmF5LGFueWFycmF5KScsCi0gIGFnZ3RyYW5zdHlwZSA9PiAnYW55YXJyYXknIH0sCisgIGFnZ3Ry YW5zdHlwZSA9PiAnYW55YXJyYXknLCBhZ2dwYXJ0aWFscHVzaGRvd25zYWZlID0+ICd0JyB9LAog eyBhZ2dmbm9pZCA9PiAnbWF4KGJwY2hhciknLCBhZ2d0cmFuc2ZuID0+ICdicGNoYXJfbGFyZ2Vy JywKICAgYWdnY29tYmluZWZuID0+ICdicGNoYXJfbGFyZ2VyJywgYWdnc29ydG9wID0+ICc+KGJw Y2hhcixicGNoYXIpJywKLSAgYWdndHJhbnN0eXBlID0+ICdicGNoYXInIH0sCisgIGFnZ3RyYW5z dHlwZSA9PiAnYnBjaGFyJywgYWdncGFydGlhbHB1c2hkb3duc2FmZSA9PiAndCcgfSwKIHsgYWdn Zm5vaWQgPT4gJ21heCh0aWQpJywgYWdndHJhbnNmbiA9PiAndGlkbGFyZ2VyJywKICAgYWdnY29t YmluZWZuID0+ICd0aWRsYXJnZXInLCBhZ2dzb3J0b3AgPT4gJz4odGlkLHRpZCknLAotICBhZ2d0 cmFuc3R5cGUgPT4gJ3RpZCcgfSwKKyAgYWdndHJhbnN0eXBlID0+ICd0aWQnLCBhZ2dwYXJ0aWFs cHVzaGRvd25zYWZlID0+ICd0JyB9LAogeyBhZ2dmbm9pZCA9PiAnbWF4KGFueWVudW0pJywgYWdn dHJhbnNmbiA9PiAnZW51bV9sYXJnZXInLAogICBhZ2djb21iaW5lZm4gPT4gJ2VudW1fbGFyZ2Vy JywgYWdnc29ydG9wID0+ICc+KGFueWVudW0sYW55ZW51bSknLAotICBhZ2d0cmFuc3R5cGUgPT4g J2FueWVudW0nIH0sCisgIGFnZ3RyYW5zdHlwZSA9PiAnYW55ZW51bScsIGFnZ3BhcnRpYWxwdXNo ZG93bnNhZmUgPT4gJ3QnIH0sCiB7IGFnZ2Zub2lkID0+ICdtYXgoaW5ldCknLCBhZ2d0cmFuc2Zu ID0+ICduZXR3b3JrX2xhcmdlcicsCiAgIGFnZ2NvbWJpbmVmbiA9PiAnbmV0d29ya19sYXJnZXIn LCBhZ2dzb3J0b3AgPT4gJz4oaW5ldCxpbmV0KScsCi0gIGFnZ3RyYW5zdHlwZSA9PiAnaW5ldCcg fSwKKyAgYWdndHJhbnN0eXBlID0+ICdpbmV0JywgYWdncGFydGlhbHB1c2hkb3duc2FmZSA9PiAn dCcgfSwKIHsgYWdnZm5vaWQgPT4gJ21heChwZ19sc24pJywgYWdndHJhbnNmbiA9PiAncGdfbHNu X2xhcmdlcicsCiAgIGFnZ2NvbWJpbmVmbiA9PiAncGdfbHNuX2xhcmdlcicsIGFnZ3NvcnRvcCA9 PiAnPihwZ19sc24scGdfbHNuKScsCi0gIGFnZ3RyYW5zdHlwZSA9PiAncGdfbHNuJyB9LAorICBh Z2d0cmFuc3R5cGUgPT4gJ3BnX2xzbicsIGFnZ3BhcnRpYWxwdXNoZG93bnNhZmUgPT4gJ3QnIH0s CiAKICMgbWluCiB7IGFnZ2Zub2lkID0+ICdtaW4oaW50OCknLCBhZ2d0cmFuc2ZuID0+ICdpbnQ4 c21hbGxlcicsCiAgIGFnZ2NvbWJpbmVmbiA9PiAnaW50OHNtYWxsZXInLCBhZ2dzb3J0b3AgPT4g JzwoaW50OCxpbnQ4KScsCi0gIGFnZ3RyYW5zdHlwZSA9PiAnaW50OCcgfSwKKyAgYWdndHJhbnN0 eXBlID0+ICdpbnQ4JywgYWdncGFydGlhbHB1c2hkb3duc2FmZSA9PiAndCcgfSwKIHsgYWdnZm5v aWQgPT4gJ21pbihpbnQ0KScsIGFnZ3RyYW5zZm4gPT4gJ2ludDRzbWFsbGVyJywKICAgYWdnY29t YmluZWZuID0+ICdpbnQ0c21hbGxlcicsIGFnZ3NvcnRvcCA9PiAnPChpbnQ0LGludDQpJywKLSAg YWdndHJhbnN0eXBlID0+ICdpbnQ0JyB9LAorICBhZ2d0cmFuc3R5cGUgPT4gJ2ludDQnLCBhZ2dw YXJ0aWFscHVzaGRvd25zYWZlID0+ICd0JyB9LAogeyBhZ2dmbm9pZCA9PiAnbWluKGludDIpJywg YWdndHJhbnNmbiA9PiAnaW50MnNtYWxsZXInLAogICBhZ2djb21iaW5lZm4gPT4gJ2ludDJzbWFs bGVyJywgYWdnc29ydG9wID0+ICc8KGludDIsaW50MiknLAotICBhZ2d0cmFuc3R5cGUgPT4gJ2lu dDInIH0sCisgIGFnZ3RyYW5zdHlwZSA9PiAnaW50MicsIGFnZ3BhcnRpYWxwdXNoZG93bnNhZmUg PT4gJ3QnIH0sCiB7IGFnZ2Zub2lkID0+ICdtaW4ob2lkKScsIGFnZ3RyYW5zZm4gPT4gJ29pZHNt YWxsZXInLAogICBhZ2djb21iaW5lZm4gPT4gJ29pZHNtYWxsZXInLCBhZ2dzb3J0b3AgPT4gJzwo b2lkLG9pZCknLAotICBhZ2d0cmFuc3R5cGUgPT4gJ29pZCcgfSwKKyAgYWdndHJhbnN0eXBlID0+ ICdvaWQnLCBhZ2dwYXJ0aWFscHVzaGRvd25zYWZlID0+ICd0JyB9LAogeyBhZ2dmbm9pZCA9PiAn bWluKGZsb2F0NCknLCBhZ2d0cmFuc2ZuID0+ICdmbG9hdDRzbWFsbGVyJywKICAgYWdnY29tYmlu ZWZuID0+ICdmbG9hdDRzbWFsbGVyJywgYWdnc29ydG9wID0+ICc8KGZsb2F0NCxmbG9hdDQpJywK LSAgYWdndHJhbnN0eXBlID0+ICdmbG9hdDQnIH0sCisgIGFnZ3RyYW5zdHlwZSA9PiAnZmxvYXQ0 JywgYWdncGFydGlhbHB1c2hkb3duc2FmZSA9PiAndCcgfSwKIHsgYWdnZm5vaWQgPT4gJ21pbihm bG9hdDgpJywgYWdndHJhbnNmbiA9PiAnZmxvYXQ4c21hbGxlcicsCiAgIGFnZ2NvbWJpbmVmbiA9 PiAnZmxvYXQ4c21hbGxlcicsIGFnZ3NvcnRvcCA9PiAnPChmbG9hdDgsZmxvYXQ4KScsCi0gIGFn Z3RyYW5zdHlwZSA9PiAnZmxvYXQ4JyB9LAorICBhZ2d0cmFuc3R5cGUgPT4gJ2Zsb2F0OCcsIGFn Z3BhcnRpYWxwdXNoZG93bnNhZmUgPT4gJ3QnIH0sCiB7IGFnZ2Zub2lkID0+ICdtaW4oZGF0ZSkn LCBhZ2d0cmFuc2ZuID0+ICdkYXRlX3NtYWxsZXInLAogICBhZ2djb21iaW5lZm4gPT4gJ2RhdGVf c21hbGxlcicsIGFnZ3NvcnRvcCA9PiAnPChkYXRlLGRhdGUpJywKLSAgYWdndHJhbnN0eXBlID0+ ICdkYXRlJyB9LAorICBhZ2d0cmFuc3R5cGUgPT4gJ2RhdGUnLCBhZ2dwYXJ0aWFscHVzaGRvd25z YWZlID0+ICd0JyB9LAogeyBhZ2dmbm9pZCA9PiAnbWluKHRpbWUpJywgYWdndHJhbnNmbiA9PiAn dGltZV9zbWFsbGVyJywKICAgYWdnY29tYmluZWZuID0+ICd0aW1lX3NtYWxsZXInLCBhZ2dzb3J0 b3AgPT4gJzwodGltZSx0aW1lKScsCi0gIGFnZ3RyYW5zdHlwZSA9PiAndGltZScgfSwKKyAgYWdn dHJhbnN0eXBlID0+ICd0aW1lJywgYWdncGFydGlhbHB1c2hkb3duc2FmZSA9PiAndCcgfSwKIHsg YWdnZm5vaWQgPT4gJ21pbih0aW1ldHopJywgYWdndHJhbnNmbiA9PiAndGltZXR6X3NtYWxsZXIn LAogICBhZ2djb21iaW5lZm4gPT4gJ3RpbWV0el9zbWFsbGVyJywgYWdnc29ydG9wID0+ICc8KHRp bWV0eix0aW1ldHopJywKLSAgYWdndHJhbnN0eXBlID0+ICd0aW1ldHonIH0sCisgIGFnZ3RyYW5z dHlwZSA9PiAndGltZXR6JywgYWdncGFydGlhbHB1c2hkb3duc2FmZSA9PiAndCcgfSwKIHsgYWdn Zm5vaWQgPT4gJ21pbihtb25leSknLCBhZ2d0cmFuc2ZuID0+ICdjYXNoc21hbGxlcicsCiAgIGFn Z2NvbWJpbmVmbiA9PiAnY2FzaHNtYWxsZXInLCBhZ2dzb3J0b3AgPT4gJzwobW9uZXksbW9uZXkp JywKLSAgYWdndHJhbnN0eXBlID0+ICdtb25leScgfSwKKyAgYWdndHJhbnN0eXBlID0+ICdtb25l eScsIGFnZ3BhcnRpYWxwdXNoZG93bnNhZmUgPT4gJ3QnIH0sCiB7IGFnZ2Zub2lkID0+ICdtaW4o dGltZXN0YW1wKScsIGFnZ3RyYW5zZm4gPT4gJ3RpbWVzdGFtcF9zbWFsbGVyJywKICAgYWdnY29t YmluZWZuID0+ICd0aW1lc3RhbXBfc21hbGxlcicsIGFnZ3NvcnRvcCA9PiAnPCh0aW1lc3RhbXAs dGltZXN0YW1wKScsCi0gIGFnZ3RyYW5zdHlwZSA9PiAndGltZXN0YW1wJyB9LAorICBhZ2d0cmFu c3R5cGUgPT4gJ3RpbWVzdGFtcCcsIGFnZ3BhcnRpYWxwdXNoZG93bnNhZmUgPT4gJ3QnIH0sCiB7 IGFnZ2Zub2lkID0+ICdtaW4odGltZXN0YW1wdHopJywgYWdndHJhbnNmbiA9PiAndGltZXN0YW1w dHpfc21hbGxlcicsCiAgIGFnZ2NvbWJpbmVmbiA9PiAndGltZXN0YW1wdHpfc21hbGxlcicsCi0g IGFnZ3NvcnRvcCA9PiAnPCh0aW1lc3RhbXB0eix0aW1lc3RhbXB0eiknLCBhZ2d0cmFuc3R5cGUg PT4gJ3RpbWVzdGFtcHR6JyB9LAorICBhZ2dzb3J0b3AgPT4gJzwodGltZXN0YW1wdHosdGltZXN0 YW1wdHopJywgYWdndHJhbnN0eXBlID0+ICd0aW1lc3RhbXB0eicsCisgIGFnZ3BhcnRpYWxwdXNo ZG93bnNhZmUgPT4gJ3QnIH0sCiB7IGFnZ2Zub2lkID0+ICdtaW4oaW50ZXJ2YWwpJywgYWdndHJh bnNmbiA9PiAnaW50ZXJ2YWxfc21hbGxlcicsCiAgIGFnZ2NvbWJpbmVmbiA9PiAnaW50ZXJ2YWxf c21hbGxlcicsIGFnZ3NvcnRvcCA9PiAnPChpbnRlcnZhbCxpbnRlcnZhbCknLAotICBhZ2d0cmFu c3R5cGUgPT4gJ2ludGVydmFsJyB9LAorICBhZ2d0cmFuc3R5cGUgPT4gJ2ludGVydmFsJywgYWdn cGFydGlhbHB1c2hkb3duc2FmZSA9PiAndCcgfSwKIHsgYWdnZm5vaWQgPT4gJ21pbih0ZXh0KScs IGFnZ3RyYW5zZm4gPT4gJ3RleHRfc21hbGxlcicsCiAgIGFnZ2NvbWJpbmVmbiA9PiAndGV4dF9z bWFsbGVyJywgYWdnc29ydG9wID0+ICc8KHRleHQsdGV4dCknLAotICBhZ2d0cmFuc3R5cGUgPT4g J3RleHQnIH0sCisgIGFnZ3RyYW5zdHlwZSA9PiAndGV4dCcsIGFnZ3BhcnRpYWxwdXNoZG93bnNh ZmUgPT4gJ3QnIH0sCiB7IGFnZ2Zub2lkID0+ICdtaW4obnVtZXJpYyknLCBhZ2d0cmFuc2ZuID0+ ICdudW1lcmljX3NtYWxsZXInLAogICBhZ2djb21iaW5lZm4gPT4gJ251bWVyaWNfc21hbGxlcics IGFnZ3NvcnRvcCA9PiAnPChudW1lcmljLG51bWVyaWMpJywKLSAgYWdndHJhbnN0eXBlID0+ICdu dW1lcmljJyB9LAorICBhZ2d0cmFuc3R5cGUgPT4gJ251bWVyaWMnLCBhZ2dwYXJ0aWFscHVzaGRv d25zYWZlID0+ICd0JyB9LAogeyBhZ2dmbm9pZCA9PiAnbWluKGFueWFycmF5KScsIGFnZ3RyYW5z Zm4gPT4gJ2FycmF5X3NtYWxsZXInLAogICBhZ2djb21iaW5lZm4gPT4gJ2FycmF5X3NtYWxsZXIn LCBhZ2dzb3J0b3AgPT4gJzwoYW55YXJyYXksYW55YXJyYXkpJywKLSAgYWdndHJhbnN0eXBlID0+ ICdhbnlhcnJheScgfSwKKyAgYWdndHJhbnN0eXBlID0+ICdhbnlhcnJheScsIGFnZ3BhcnRpYWxw dXNoZG93bnNhZmUgPT4gJ3QnIH0sCiB7IGFnZ2Zub2lkID0+ICdtaW4oYnBjaGFyKScsIGFnZ3Ry YW5zZm4gPT4gJ2JwY2hhcl9zbWFsbGVyJywKICAgYWdnY29tYmluZWZuID0+ICdicGNoYXJfc21h bGxlcicsIGFnZ3NvcnRvcCA9PiAnPChicGNoYXIsYnBjaGFyKScsCi0gIGFnZ3RyYW5zdHlwZSA9 PiAnYnBjaGFyJyB9LAorICBhZ2d0cmFuc3R5cGUgPT4gJ2JwY2hhcicsIGFnZ3BhcnRpYWxwdXNo ZG93bnNhZmUgPT4gJ3QnIH0sCiB7IGFnZ2Zub2lkID0+ICdtaW4odGlkKScsIGFnZ3RyYW5zZm4g PT4gJ3RpZHNtYWxsZXInLAogICBhZ2djb21iaW5lZm4gPT4gJ3RpZHNtYWxsZXInLCBhZ2dzb3J0 b3AgPT4gJzwodGlkLHRpZCknLAotICBhZ2d0cmFuc3R5cGUgPT4gJ3RpZCcgfSwKKyAgYWdndHJh bnN0eXBlID0+ICd0aWQnLCBhZ2dwYXJ0aWFscHVzaGRvd25zYWZlID0+ICd0JyB9LAogeyBhZ2dm bm9pZCA9PiAnbWluKGFueWVudW0pJywgYWdndHJhbnNmbiA9PiAnZW51bV9zbWFsbGVyJywKICAg YWdnY29tYmluZWZuID0+ICdlbnVtX3NtYWxsZXInLCBhZ2dzb3J0b3AgPT4gJzwoYW55ZW51bSxh bnllbnVtKScsCi0gIGFnZ3RyYW5zdHlwZSA9PiAnYW55ZW51bScgfSwKKyAgYWdndHJhbnN0eXBl ID0+ICdhbnllbnVtJywgYWdncGFydGlhbHB1c2hkb3duc2FmZSA9PiAndCcgfSwKIHsgYWdnZm5v aWQgPT4gJ21pbihpbmV0KScsIGFnZ3RyYW5zZm4gPT4gJ25ldHdvcmtfc21hbGxlcicsCiAgIGFn Z2NvbWJpbmVmbiA9PiAnbmV0d29ya19zbWFsbGVyJywgYWdnc29ydG9wID0+ICc8KGluZXQsaW5l dCknLAotICBhZ2d0cmFuc3R5cGUgPT4gJ2luZXQnIH0sCisgIGFnZ3RyYW5zdHlwZSA9PiAnaW5l dCcsIGFnZ3BhcnRpYWxwdXNoZG93bnNhZmUgPT4gJ3QnIH0sCiB7IGFnZ2Zub2lkID0+ICdtaW4o cGdfbHNuKScsIGFnZ3RyYW5zZm4gPT4gJ3BnX2xzbl9zbWFsbGVyJywKICAgYWdnY29tYmluZWZu ID0+ICdwZ19sc25fc21hbGxlcicsIGFnZ3NvcnRvcCA9PiAnPChwZ19sc24scGdfbHNuKScsCi0g IGFnZ3RyYW5zdHlwZSA9PiAncGdfbHNuJyB9LAorICBhZ2d0cmFuc3R5cGUgPT4gJ3BnX2xzbicg LCBhZ2dwYXJ0aWFscHVzaGRvd25zYWZlID0+ICd0J30sCiAKICMgY291bnQKIHsgYWdnZm5vaWQg PT4gJ2NvdW50KGFueSknLCBhZ2d0cmFuc2ZuID0+ICdpbnQ4aW5jX2FueScsCiAgIGFnZ2NvbWJp bmVmbiA9PiAnaW50OHBsJywgYWdnbXRyYW5zZm4gPT4gJ2ludDhpbmNfYW55JywKICAgYWdnbWlu dnRyYW5zZm4gPT4gJ2ludDhkZWNfYW55JywgYWdndHJhbnN0eXBlID0+ICdpbnQ4JywKLSAgYWdn bXRyYW5zdHlwZSA9PiAnaW50OCcsIGFnZ2luaXR2YWwgPT4gJzAnLCBhZ2dtaW5pdHZhbCA9PiAn MCcgfSwKKyAgYWdnbXRyYW5zdHlwZSA9PiAnaW50OCcsIGFnZ2luaXR2YWwgPT4gJzAnLCBhZ2dt aW5pdHZhbCA9PiAnMCcsCisgIGFnZ3BhcnRpYWxwdXNoZG93bnNhZmUgPT4gJ3QnIH0sCiB7IGFn Z2Zub2lkID0+ICdjb3VudCgpJywgYWdndHJhbnNmbiA9PiAnaW50OGluYycsIGFnZ2NvbWJpbmVm biA9PiAnaW50OHBsJywKICAgYWdnbXRyYW5zZm4gPT4gJ2ludDhpbmMnLCBhZ2dtaW52dHJhbnNm biA9PiAnaW50OGRlYycsIGFnZ3RyYW5zdHlwZSA9PiAnaW50OCcsCi0gIGFnZ210cmFuc3R5cGUg PT4gJ2ludDgnLCBhZ2dpbml0dmFsID0+ICcwJywgYWdnbWluaXR2YWwgPT4gJzAnIH0sCisgIGFn Z210cmFuc3R5cGUgPT4gJ2ludDgnLCBhZ2dpbml0dmFsID0+ICcwJywgYWdnbWluaXR2YWwgPT4g JzAnLAorICBhZ2dwYXJ0aWFscHVzaGRvd25zYWZlID0+ICd0JyB9LAogCiAjIHZhcl9wb3AKIHsg YWdnZm5vaWQgPT4gJ3Zhcl9wb3AoaW50OCknLCBhZ2d0cmFuc2ZuID0+ICdpbnQ4X2FjY3VtJywK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYWdncmVnYXRlLmggYi9zcmMvaW5j bHVkZS9jYXRhbG9nL3BnX2FnZ3JlZ2F0ZS5oCmluZGV4IDA4YzkzNzliYTc3Li4xMTM4YjY0ZDQ3 OCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19hZ2dyZWdhdGUuaAorKysgYi9z cmMvaW5jbHVkZS9jYXRhbG9nL3BnX2FnZ3JlZ2F0ZS5oCkBAIC05MSw2ICs5MSw5IEBAIENBVEFM T0cocGdfYWdncmVnYXRlLDI2MDAsQWdncmVnYXRlUmVsYXRpb25JZCkKIAkvKiBlc3RpbWF0ZWQg c2l6ZSBvZiBtb3ZpbmctYWdnIHN0YXRlICgwIGZvciBkZWZhdWx0IGVzdCkgKi8KIAlpbnQzMgkJ YWdnbXRyYW5zc3BhY2UgQktJX0RFRkFVTFQoMCk7CiAKKwkvKiB0cnVlIGlmIHBhcnRpYWwgYWdn cmVnYXRlIGlzIGZpbmUgdG8gcHVzaCBkb3duICovCisJYm9vbAkJYWdncGFydGlhbHB1c2hkb3du c2FmZSBCS0lfREVGQVVMVChmKTsKKwogI2lmZGVmIENBVEFMT0dfVkFSTEVOCQkJLyogdmFyaWFi bGUtbGVuZ3RoIGZpZWxkcyBzdGFydCBoZXJlICovCiAKIAkvKiBpbml0aWFsIHZhbHVlIGZvciB0 cmFuc2l0aW9uIHN0YXRlIChjYW4gYmUgTlVMTCkgKi8KQEAgLTE3NSw2ICsxNzgsNyBAQCBleHRl cm4gT2JqZWN0QWRkcmVzcyBBZ2dyZWdhdGVDcmVhdGUoY29uc3QgY2hhciAqYWdnTmFtZSwKIAkJ CQkJCQkJCSBpbnQzMiBhZ2dtVHJhbnNTcGFjZSwKIAkJCQkJCQkJCSBjb25zdCBjaGFyICphZ2dp bml0dmFsLAogCQkJCQkJCQkJIGNvbnN0IGNoYXIgKmFnZ21pbml0dmFsLAotCQkJCQkJCQkJIGNo YXIgcHJvcGFyYWxsZWwpOworCQkJCQkJCQkJIGNoYXIgcHJvcGFyYWxsZWwsCisJCQkJCQkJCQkg Ym9vbCBwYXJ0aWFsUHVzaGRvd25TYWZlKTsKIAogI2VuZGlmCQkJCQkJCS8qIFBHX0FHR1JFR0FU RV9IICovCi0tIAoyLjI1LjEKCg== --=_325eac741659a5367c872773a889cec9--