Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1sBpqK-001W7g-Gc for pgsql-hackers@arkaria.postgresql.org; Tue, 28 May 2024 05:57:54 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1sBpqK-008XtK-4I for pgsql-hackers@arkaria.postgresql.org; Tue, 28 May 2024 05:57:52 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1sBpqJ-008Xt5-Hd for pgsql-hackers@lists.postgresql.org; Tue, 28 May 2024 05:57:51 +0000 Received: from mail.postgrespro.ru ([93.174.131.139]) by magus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1sBpq8-0018Cw-WE for pgsql-hackers@postgresql.org; Tue, 28 May 2024 05:57:48 +0000 Received: from mail.postgrespro.ru (unknown [192.168.2.28]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) (Authenticated sender: a.pyhalov@postgrespro.ru) by mail.postgrespro.ru (Postfix/587) with ESMTPSA id 99E91E2110A; Tue, 28 May 2024 08:57:39 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mx2023; t=1716875860; bh=bxpYGV1cgr22QfqqZSMgemwB+V7N3LB+BidMmYzgpVY=; h=Date:From:To:Cc:Subject:In-Reply-To:References:User-Agent: Message-ID:From; b=hRuxylDAL4XnGVZc1dQ1Bm1tD7nnBSOFOeBfne7BhNkA3aMCpYSSVuQXabS5Gelsh FIeKzLBsat+SqRFTyi6Yrj4Q9z0beJM54a+sKoCgNdPjHTWgYBmCasqvk3jSU+F1NB 0tMQlfsMiE/Hb+YEaVGP05ZstSwnC8AuVpEkWTUR6x+VsdHaJFK116iBuIPJN6O+rN KqESe9yemMlx9Ed6dkcq5GOxodYpOQRU8pQwFJL+FzWjlNIEZxfvxqVkv4mWY/Uk+Q 7RyjEmuzlMaQ303YEO+YYf71gAdG4aqNqBACrqd86mZP2OPniXujSSeI+5Shq8f4Al osyYUlSpiu51w== MIME-Version: 1.0 Date: Tue, 28 May 2024 08:57:39 +0300 From: Alexander Pyhalov To: "Fujii.Yuki@df.MitsubishiElectric.co.jp" Cc: Robert Haas , PostgreSQL-development , Tom Lane , Bruce Momjian , Stephen Frost , Andres Freund , Tomas Vondra , Julien Rouhaud , Daniel Gustafsson , vignesh C Subject: Re: Partial aggregates pushdown In-Reply-To: References: <8175ddeb6d417d8a1f91e667fef77abf@postgrespro.ru> <4012625.1701120204@sss.pgh.pa.us> <31ab8f7b91cef6e837b3e31ea1e35a9a@postgrespro.ru> User-Agent: Roundcube Webmail/1.6.5 Message-ID: X-Sender: a.pyhalov@postgrespro.ru Content-Type: multipart/mixed; boundary="=_2ecdf759bee13919fb5520c7603e7c7a" X-KSMG-AntiPhishing: NotDetected X-KSMG-AntiSpam-Interceptor-Info: not scanned X-KSMG-AntiSpam-Status: not scanned, disabled by settings X-KSMG-AntiVirus: Kaspersky Secure Mail Gateway, version 2.1.0.7854, bases: 2024/05/28 01:37:00 #25308827 X-KSMG-AntiVirus-Status: NotDetected, skipped X-KSMG-LinksScanning: not scanned, disabled by settings X-KSMG-Message-Action: skipped X-KSMG-Rule-ID: 1 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=_2ecdf759bee13919fb5520c7603e7c7a Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8; format=flowed Fujii.Yuki@df.MitsubishiElectric.co.jp писал(а) 2024-05-28 00:30: > Hi Mr. Pyhalov. > > Sorry for the late reply. > Thank you for your modification and detailed review. > I attach a fixed patch, have been not yet rebased. > > Monday, 25 March 2024 16:01 Alexander Pyhalov > :. >> Comment in nodeAgg.c seems to be strange: >> >> 1079 /* >> 1080 * If the agg's finalfn is provided and PARTIAL_AGGREGATE >> keyword is >> 1081 * not specified, apply the agg's finalfn. >> 1082 * If PARTIAL_AGGREGATE keyword is specified and the >> transValue type >> 1083 * is internal, apply the agg's serialfn. In this case, if >> the agg's >> 1084 * serialfn must not be invalid. Otherwise return >> transValue. >> 1085 */ >> >> Likely, you mean: >> >> ... In this case the agg'ss serialfn must not be invalid... > Fixed. > >> Lower, in the same file, please, correct error message: >> >> 1136 if(!OidIsValid(peragg->serialfn_oid)) >> 1137 elog(ERROR, "serialfunc is note provided >> for partial aggregate"); >> >> it should be "serialfunc is not provided for partial aggregate" > Fixed. > >> Also something is wrong with the following test : >> >> SELECT /* aggregate <> partial aggregate */ >> array_agg(c_int4array), array_agg(b), >> avg(b::int2), avg(b::int4), avg(b::int8), avg(c_interval), >> avg(b::float4), avg(b::float8), >> corr(b::float8, (b * b)::float8), >> covar_pop(b::float8, (b * b)::float8), >> covar_samp(b::float8, (b * b)::float8), >> regr_avgx((2 * b)::float8, b::float8), >> ..... >> >> Its results have changed since last patch. Do they depend on daylight >> saving time? > You are right. In my environment, TimeZone is set to 'PST8PDT' > with which timetz values depends on daylight saving time. > Changed TimeZone to 'UTC' in this test. > >> You can see that filter is applied before append. The result is >> correct >> only by chance, as sum in every partition is actually < 700. If you >> lower this bound, let's say, to 200, you'll start getting wrong >> results >> as data is filtered prior to aggregation. >> >> It seems, however, that in partial case you should just avoid pulling >> conditions from having qual at all, all filters will be applied on >> upper >> level. Something like > Thank you for your modification. > >> Found one more problem. You can fire partial aggregate over >> partitioned >> table, but convert_combining_aggrefs() will make non-partial copy, >> which >> leads to >> 'variable not found in subplan target list' error. > Thanks for the correction as well. > As you pointed out, > the original patch certainly had the potential to cause problems. > However, I could not actually reproduce the problem in cases such as > the following. > > Settings: > t(c1, c2) is a patitioned table whose partition key is c1. > t1, t2 are patitions of t and are partitioned table. > t11, t12: partitions of t1 and foreign table of postgres_fdw. > t21, t22: partitions of t2 and foreign table of postgres_fdw. > Query: > select c2 / 2, sum(c1) from t group by c2 / 2 order by 1 > > If you have a reproducible example, I would like to add it to > the regression test. > Do you have a reproducible example? > >> Also denied partial agregates pushdown on server version mismatch. >> Should check_partial_aggregate_support be 'true' by default? > Could we discuss this point after we determine how to transfer state > values? > If we determine this point, we can easly determine whether > check_partial_aggregate_support shold be 'true' by default. > >> I'm not sure what to do with current grammar - it precludes partial >> distinct aggregates. I understand that it's currently impossible to >> have >> partial aggregation for distinct agregates -but does it worth to have >> such restriction at grammar level? > If partial aggregation for distinct agregates becomes possible in the > future, > I see no problem with the policy of accepting new SQL keywords, > such as "PARTIL_AGGREGATE DISTINCT". BTW, there's I have an issue with test results in the last version of the patch. Attaching regression diffs. I have partial sum over c_interval instead of sum(c_interval). -- Best regards, Alexander Pyhalov, Postgres Professional --=_2ecdf759bee13919fb5520c7603e7c7a Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=regression.diffs Content-Disposition: attachment; filename=regression.diffs; size=44215 ZGlmZiAtVTMgL2hvbWUvbGVvcmljL3NyY3Mvc2hhcmRtYW4tYmFja3VwL3NoYXJkbWFuL2NvbnRy aWIvcG9zdGdyZXNfZmR3L2V4cGVjdGVkL3Bvc3RncmVzX2Zkdy5vdXQgL2hvbWUvbGVvcmljL3Ny Y3Mvc2hhcmRtYW4tYmFja3VwL3NoYXJkbWFuL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Jlc3VsdHMv cG9zdGdyZXNfZmR3Lm91dAotLS0gL2hvbWUvbGVvcmljL3NyY3Mvc2hhcmRtYW4tYmFja3VwL3No YXJkbWFuL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2V4cGVjdGVkL3Bvc3RncmVzX2Zkdy5vdXQJMjAy NC0wNS0yOCAwODo0ODoyNy4yMzY1MjAwOTggKzAzMDAKKysrIC9ob21lL2xlb3JpYy9zcmNzL3No YXJkbWFuLWJhY2t1cC9zaGFyZG1hbi9jb250cmliL3Bvc3RncmVzX2Zkdy9yZXN1bHRzL3Bvc3Rn cmVzX2Zkdy5vdXQJMjAyNC0wNS0yOCAwODo1MToyNC4zOTU3MDQ4NDYgKzAzMDAKQEAgLTEwNDM4 LDE1ICsxMDQzOCwxNSBAQAogICAgICAgICAgLT4gIEZvcmVpZ24gU2NhbgogICAgICAgICAgICAg ICAgT3V0cHV0OiAoUEFSVElBTCBhcnJheV9hZ2cocGFnZ190YWIuY19pbnQ0YXJyYXkpKSwgKFBB UlRJQUwgYXJyYXlfYWdnKHBhZ2dfdGFiLmIpKSwgKFBBUlRJQUwgYXZnKChwYWdnX3RhYi5iKTo6 c21hbGxpbnQpKSwgKFBBUlRJQUwgYXZnKHBhZ2dfdGFiLmIpKSwgKFBBUlRJQUwgYXZnKChwYWdn X3RhYi5iKTo6YmlnaW50KSksIChQQVJUSUFMIGF2ZyhwYWdnX3RhYi5jX2ludGVydmFsKSksIChQ QVJUSUFMIGF2ZygocGFnZ190YWIuYik6OnJlYWwpKSwgKFBBUlRJQUwgYXZnKChwYWdnX3RhYi5i KTo6ZG91YmxlIHByZWNpc2lvbikpLCAoUEFSVElBTCBhdmcoKHBhZ2dfdGFiLmIpOjpudW1lcmlj KSksIChQQVJUSUFMIGNvcnIoKHBhZ2dfdGFiLmIpOjpkb3VibGUgcHJlY2lzaW9uLCAoKHBhZ2df dGFiLmIgKiBwYWdnX3RhYi5iKSk6OmRvdWJsZSBwcmVjaXNpb24pKSwgKFBBUlRJQUwgY292YXJf cG9wKChwYWdnX3RhYi5iKTo6ZG91YmxlIHByZWNpc2lvbiwgKChwYWdnX3RhYi5iICogcGFnZ190 YWIuYikpOjpkb3VibGUgcHJlY2lzaW9uKSksIChQQVJUSUFMIGNvdmFyX3NhbXAoKHBhZ2dfdGFi LmIpOjpkb3VibGUgcHJlY2lzaW9uLCAoKHBhZ2dfdGFiLmIgKiBwYWdnX3RhYi5iKSk6OmRvdWJs ZSBwcmVjaXNpb24pKSwgKFBBUlRJQUwgcmVncl9hdmd4KCgoMiAqIHBhZ2dfdGFiLmIpKTo6ZG91 YmxlIHByZWNpc2lvbiwgKHBhZ2dfdGFiLmIpOjpkb3VibGUgcHJlY2lzaW9uKSksIChQQVJUSUFM IHJlZ3JfYXZneSgoKDIgKiBwYWdnX3RhYi5iKSk6OmRvdWJsZSBwcmVjaXNpb24sIChwYWdnX3Rh Yi5iKTo6ZG91YmxlIHByZWNpc2lvbikpLCAoUEFSVElBTCByZWdyX2ludGVyY2VwdCgoKCgyICog cGFnZ190YWIuYikgKyAzKSk6OmRvdWJsZSBwcmVjaXNpb24sIChwYWdnX3RhYi5iKTo6ZG91Ymxl IHByZWNpc2lvbikpLCAoUEFSVElBTCByZWdyX3IyKCgocGFnZ190YWIuYiAqIHBhZ2dfdGFiLmIp KTo6ZG91YmxlIHByZWNpc2lvbiwgKHBhZ2dfdGFiLmIpOjpkb3VibGUgcHJlY2lzaW9uKSksIChQ QVJUSUFMIHJlZ3Jfc2xvcGUoKCgoMiAqIHBhZ2dfdGFiLmIpICsgMykpOjpkb3VibGUgcHJlY2lz aW9uLCAocGFnZ190YWIuYik6OmRvdWJsZSBwcmVjaXNpb24pKSwgKFBBUlRJQUwgcmVncl9zeHgo KCgoMiAqIHBhZ2dfdGFiLmIpICsgMykpOjpkb3VibGUgcHJlY2lzaW9uLCAocGFnZ190YWIuYik6 OmRvdWJsZSBwcmVjaXNpb24pKSwgKFBBUlRJQUwgcmVncl9zeHkoKChwYWdnX3RhYi5iICogcGFn Z190YWIuYikpOjpkb3VibGUgcHJlY2lzaW9uLCAocGFnZ190YWIuYik6OmRvdWJsZSBwcmVjaXNp b24pKSwgKFBBUlRJQUwgcmVncl9zeXkoKCgoMiAqIHBhZ2dfdGFiLmIpICsgMykpOjpkb3VibGUg cHJlY2lzaW9uLCAocGFnZ190YWIuYik6OmRvdWJsZSBwcmVjaXNpb24pKSwgKFBBUlRJQUwgc3Rk ZGV2KChwYWdnX3RhYi5iKTo6cmVhbCkpLCAoUEFSVElBTCBzdGRkZXYoKHBhZ2dfdGFiLmIpOjpk b3VibGUgcHJlY2lzaW9uKSksIChQQVJUSUFMIHN0ZGRldigocGFnZ190YWIuYik6OnNtYWxsaW50 KSksIChQQVJUSUFMIHN0ZGRldihwYWdnX3RhYi5iKSksIChQQVJUSUFMIHN0ZGRldigocGFnZ190 YWIuYik6OmJpZ2ludCkpLCAoUEFSVElBTCBzdGRkZXYoKHBhZ2dfdGFiLmIpOjpudW1lcmljKSks IChQQVJUSUFMIHN0ZGRldl9wb3AoKHBhZ2dfdGFiLmIpOjpyZWFsKSksIChQQVJUSUFMIHN0ZGRl dl9wb3AoKHBhZ2dfdGFiLmIpOjpkb3VibGUgcHJlY2lzaW9uKSksIChQQVJUSUFMIHN0ZGRldl9w b3AoKHBhZ2dfdGFiLmIpOjpzbWFsbGludCkpLCAoUEFSVElBTCBzdGRkZXZfcG9wKHBhZ2dfdGFi LmIpKSwgKFBBUlRJQUwgc3RkZGV2X3BvcCgocGFnZ190YWIuYik6OmJpZ2ludCkpLCAoUEFSVElB TCBzdGRkZXZfcG9wKChwYWdnX3RhYi5iKTo6bnVtZXJpYykpLCAoUEFSVElBTCBzdGRkZXZfc2Ft cCgocGFnZ190YWIuYik6OnJlYWwpKSwgKFBBUlRJQUwgc3RkZGV2X3NhbXAoKHBhZ2dfdGFiLmIp Ojpkb3VibGUgcHJlY2lzaW9uKSksIChQQVJUSUFMIHN0ZGRldl9zYW1wKChwYWdnX3RhYi5iKTo6 c21hbGxpbnQpKSwgKFBBUlRJQUwgc3RkZGV2X3NhbXAocGFnZ190YWIuYikpLCAoUEFSVElBTCBz dGRkZXZfc2FtcCgocGFnZ190YWIuYik6OmJpZ2ludCkpLCAoUEFSVElBTCBzdGRkZXZfc2FtcCgo cGFnZ190YWIuYik6Om51bWVyaWMpKSwgKFBBUlRJQUwgc3RyaW5nX2FnZyhwYWdnX3RhYi5jXzFj LCAnLCc6OnRleHQpKSwgKFBBUlRJQUwgc3RyaW5nX2FnZyhwYWdnX3RhYi5jXzFiLCAnXHgyYyc6 OmJ5dGVhKSksIChQQVJUSUFMIHN1bSgocGFnZ190YWIuYik6OmJpZ2ludCkpLCAoUEFSVElBTCBz dW0oKHBhZ2dfdGFiLmIpOjpudW1lcmljKSksIChQQVJUSUFMIHZhcmlhbmNlKChwYWdnX3RhYi5i KTo6cmVhbCkpLCAoUEFSVElBTCB2YXJpYW5jZSgocGFnZ190YWIuYik6OmRvdWJsZSBwcmVjaXNp b24pKSwgKFBBUlRJQUwgdmFyaWFuY2UoKHBhZ2dfdGFiLmIpOjpzbWFsbGludCkpLCAoUEFSVElB TCB2YXJpYW5jZShwYWdnX3RhYi5iKSksIChQQVJUSUFMIHZhcmlhbmNlKChwYWdnX3RhYi5iKTo6 YmlnaW50KSksIChQQVJUSUFMIHZhcmlhbmNlKChwYWdnX3RhYi5iKTo6bnVtZXJpYykpLCAoUEFS VElBTCB2YXJfcG9wKChwYWdnX3RhYi5iKTo6cmVhbCkpLCAoUEFSVElBTCB2YXJfcG9wKChwYWdn X3RhYi5iKTo6ZG91YmxlIHByZWNpc2lvbikpLCAoUEFSVElBTCB2YXJfcG9wKChwYWdnX3RhYi5i KTo6c21hbGxpbnQpKSwgKFBBUlRJQUwgdmFyX3BvcChwYWdnX3RhYi5iKSksIChQQVJUSUFMIHZh cl9wb3AoKHBhZ2dfdGFiLmIpOjpiaWdpbnQpKSwgKFBBUlRJQUwgdmFyX3BvcCgocGFnZ190YWIu Yik6Om51bWVyaWMpKSwgKFBBUlRJQUwgdmFyX3NhbXAoKHBhZ2dfdGFiLmIpOjpyZWFsKSksIChQ QVJUSUFMIHZhcl9zYW1wKChwYWdnX3RhYi5iKTo6ZG91YmxlIHByZWNpc2lvbikpLCAoUEFSVElB TCB2YXJfc2FtcCgocGFnZ190YWIuYik6OnNtYWxsaW50KSksIChQQVJUSUFMIHZhcl9zYW1wKHBh Z2dfdGFiLmIpKSwgKFBBUlRJQUwgdmFyX3NhbXAoKHBhZ2dfdGFiLmIpOjpiaWdpbnQpKSwgKFBB UlRJQUwgdmFyX3NhbXAoKHBhZ2dfdGFiLmIpOjpudW1lcmljKSksIChQQVJUSUFMIGFueV92YWx1 ZSgocGFnZ190YWIuYiAqIDApKSksIChQQVJUSUFMIGJpdF9hbmQocGFnZ190YWIuY19iaXQpKSwg KFBBUlRJQUwgYml0X2FuZChwYWdnX3RhYi5jXzFvcjNpbnQyKSksIChQQVJUSUFMIGJpdF9hbmQo cGFnZ190YWIuY18xb3IzaW50NCkpLCAoUEFSVElBTCBiaXRfYW5kKHBhZ2dfdGFiLmNfMW9yM2lu dDgpKSwgKFBBUlRJQUwgYml0X29yKHBhZ2dfdGFiLmNfYml0KSksIChQQVJUSUFMIGJpdF9vcihw YWdnX3RhYi5jXzFvcjNpbnQyKSksIChQQVJUSUFMIGJpdF9vcihwYWdnX3RhYi5jXzFvcjNpbnQ0 KSksIChQQVJUSUFMIGJpdF9vcihwYWdnX3RhYi5jXzFvcjNpbnQ4KSksIChQQVJUSUFMIGJpdF94 b3IocGFnZ190YWIuY19iaXQpKSwgKFBBUlRJQUwgYml0X3hvcihwYWdnX3RhYi5jXzFvcjNpbnQy KSksIChQQVJUSUFMIGJpdF94b3IocGFnZ190YWIuY18xb3IzaW50NCkpLCAoUEFSVElBTCBiaXRf eG9yKHBhZ2dfdGFiLmNfMW9yM2ludDgpKSwgKFBBUlRJQUwgYm9vbF9hbmQocGFnZ190YWIuY19i b29sKSksIChQQVJUSUFMIGJvb2xfb3IocGFnZ190YWIuY19ib29sKSksIChQQVJUSUFMIGNvdW50 KHBhZ2dfdGFiLmIpKSwgKFBBUlRJQUwgY291bnQoKikpLCAoUEFSVElBTCBldmVyeShwYWdnX3Rh Yi5jX2Jvb2wpKSwgKFBBUlRJQUwgbWF4KHBhZ2dfdGFiLmNfaW50NGFycmF5KSksIChQQVJUSUFM IG1heChwYWdnX3RhYi5jX2VudW0pKSwgKFBBUlRJQUwgbWF4KChwYWdnX3RhYi5jXzFjKTo6Y2hh cmFjdGVyKDEpKSksIChQQVJUSUFMIG1heCgoJzAxLTAxLTIwMDAnOjpkYXRlICsgcGFnZ190YWIu YikpKSwgKFBBUlRJQUwgbWF4KCgnMC4wLjAuMCc6OmluZXQgKyAocGFnZ190YWIuYik6OmJpZ2lu dCkpKSwgKFBBUlRJQUwgbWF4KChwYWdnX3RhYi5iKTo6cmVhbCkpLCAoUEFSVElBTCBtYXgoKHBh Z2dfdGFiLmIpOjpkb3VibGUgcHJlY2lzaW9uKSksIChQQVJUSUFMIG1heCgocGFnZ190YWIuYik6 OnNtYWxsaW50KSksIChQQVJUSUFMIG1heChwYWdnX3RhYi5iKSksIChQQVJUSUFMIG1heCgocGFn Z190YWIuYik6OmJpZ2ludCkpLCAoUEFSVElBTCBtYXgocGFnZ190YWIuY19pbnRlcnZhbCkpLCAo UEFSVElBTCBtYXgocGFnZ190YWIuY19tb25leSkpLCAoUEFSVElBTCBtYXgoKHBhZ2dfdGFiLmIp OjpudW1lcmljKSksIChQQVJUSUFMIG1heCgocGFnZ190YWIuYik6Om9pZCkpLCAoUEFSVElBTCBt YXgocGFnZ190YWIuY19wZ19sc24pKSwgKFBBUlRJQUwgbWF4KHBhZ2dfdGFiLmNfdGlkKSksIChQ QVJUSUFMIG1heChwYWdnX3RhYi5jXzFjKSksIChQQVJUSUFMIG1heChwYWdnX3RhYi5jX3RpbWUp KSwgKFBBUlRJQUwgbWF4KHBhZ2dfdGFiLmNfdGltZXR6KSksIChQQVJUSUFMIG1heChwYWdnX3Rh Yi5jX3RpbWVzdGFtcCkpLCAoUEFSVElBTCBtYXgocGFnZ190YWIuY190aW1lc3RhbXB0eikpLCAo UEFSVElBTCBtYXgocGFnZ190YWIuY194aWQ4KSksIChQQVJUSUFMIG1pbihwYWdnX3RhYi5jX2lu dDRhcnJheSkpLCAoUEFSVElBTCBtaW4ocGFnZ190YWIuY19lbnVtKSksIChQQVJUSUFMIG1pbigo cGFnZ190YWIuY18xYyk6OmNoYXJhY3RlcigxKSkpLCAoUEFSVElBTCBtaW4oKCcwMS0wMS0yMDAw Jzo6ZGF0ZSArIHBhZ2dfdGFiLmIpKSksIChQQVJUSUFMIG1pbigoJzAuMC4wLjAnOjppbmV0ICsg KHBhZ2dfdGFiLmIpOjpiaWdpbnQpKSksIChQQVJUSUFMIG1pbigocGFnZ190YWIuYik6OnJlYWwp KSwgKFBBUlRJQUwgbWluKChwYWdnX3RhYi5iKTo6ZG91YmxlIHByZWNpc2lvbikpLCAoUEFSVElB TCBtaW4oKHBhZ2dfdGFiLmIpOjpzbWFsbGludCkpLCAoUEFSVElBTCBtaW4ocGFnZ190YWIuYikp LCAoUEFSVElBTCBtaW4oKHBhZ2dfdGFiLmIpOjpiaWdpbnQpKSwgKFBBUlRJQUwgbWluKHBhZ2df dGFiLmNfaW50ZXJ2YWwpKSwgKFBBUlRJQUwgbWluKHBhZ2dfdGFiLmNfbW9uZXkpKSwgKFBBUlRJ QUwgbWluKChwYWdnX3RhYi5iKTo6bnVtZXJpYykpLCAoUEFSVElBTCBtaW4oKHBhZ2dfdGFiLmIp OjpvaWQpKSwgKFBBUlRJQUwgbWluKHBhZ2dfdGFiLmNfcGdfbHNuKSksIChQQVJUSUFMIG1pbihw YWdnX3RhYi5jX3RpZCkpLCAoUEFSVElBTCBtaW4ocGFnZ190YWIuY18xYykpLCAoUEFSVElBTCBt aW4ocGFnZ190YWIuY190aW1lKSksIChQQVJUSUFMIG1pbihwYWdnX3RhYi5jX3RpbWV0eikpLCAo UEFSVElBTCBtaW4ocGFnZ190YWIuY190aW1lc3RhbXApKSwgKFBBUlRJQUwgbWluKHBhZ2dfdGFi LmNfdGltZXN0YW1wdHopKSwgKFBBUlRJQUwgbWluKHBhZ2dfdGFiLmNfeGlkOCkpLCAoUEFSVElB TCByYW5nZV9pbnRlcnNlY3RfYWdnKHBhZ2dfdGFiLmNfaW50NHJhbmdlKSksIChQQVJUSUFMIHJh bmdlX2ludGVyc2VjdF9hZ2cocGFnZ190YWIuY19pbnQ0bXVsdGlyYW5nZSkpLCAoUEFSVElBTCBy ZWdyX2NvdW50KCgoKDIgKiBwYWdnX3RhYi5iKSArIDMpKTo6ZG91YmxlIHByZWNpc2lvbiwgKHBh Z2dfdGFiLmIpOjpkb3VibGUgcHJlY2lzaW9uKSksIChQQVJUSUFMIHN1bSgocGFnZ190YWIuYik6 OnJlYWwpKSwgKFBBUlRJQUwgc3VtKChwYWdnX3RhYi5iKTo6ZG91YmxlIHByZWNpc2lvbikpLCAo UEFSVElBTCBzdW0oKHBhZ2dfdGFiLmIpOjpzbWFsbGludCkpLCAoUEFSVElBTCBzdW0ocGFnZ190 YWIuYikpLCAoUEFSVElBTCBzdW0ocGFnZ190YWIuY19pbnRlcnZhbCkpLCAoUEFSVElBTCBzdW0o cGFnZ190YWIuY19tb25leSkpCiAgICAgICAgICAgICAgICBSZWxhdGlvbnM6IEFnZ3JlZ2F0ZSBv biAocHVibGljLmZwYWdnX3RhYl9wMSBwYWdnX3RhYikKLSAgICAgICAgICAgICAgIFJlbW90ZSBT UUw6IFNFTEVDVCBhcnJheV9hZ2coUEFSVElBTF9BR0dSRUdBVEUgY19pbnQ0YXJyYXkpLCBhcnJh eV9hZ2coUEFSVElBTF9BR0dSRUdBVEUgYiksIGF2ZyhQQVJUSUFMX0FHR1JFR0FURSBiOjpzbWFs bGludCksIGF2ZyhQQVJUSUFMX0FHR1JFR0FURSBiKSwgYXZnKFBBUlRJQUxfQUdHUkVHQVRFIGI6 OmJpZ2ludCksIGF2ZyhQQVJUSUFMX0FHR1JFR0FURSBjX2ludGVydmFsKSwgYXZnKFBBUlRJQUxf QUdHUkVHQVRFIGI6OnJlYWwpLCBhdmcoUEFSVElBTF9BR0dSRUdBVEUgYjo6ZG91YmxlIHByZWNp c2lvbiksIGF2ZyhQQVJUSUFMX0FHR1JFR0FURSBiOjpudW1lcmljKSwgY29ycihQQVJUSUFMX0FH R1JFR0FURSBiOjpkb3VibGUgcHJlY2lzaW9uLCAoYiAqIGIpOjpkb3VibGUgcHJlY2lzaW9uKSwg Y292YXJfcG9wKFBBUlRJQUxfQUdHUkVHQVRFIGI6OmRvdWJsZSBwcmVjaXNpb24sIChiICogYik6 OmRvdWJsZSBwcmVjaXNpb24pLCBjb3Zhcl9zYW1wKFBBUlRJQUxfQUdHUkVHQVRFIGI6OmRvdWJs ZSBwcmVjaXNpb24sIChiICogYik6OmRvdWJsZSBwcmVjaXNpb24pLCByZWdyX2F2Z3goUEFSVElB TF9BR0dSRUdBVEUgKDIgKiBiKTo6ZG91YmxlIHByZWNpc2lvbiwgYjo6ZG91YmxlIHByZWNpc2lv biksIHJlZ3JfYXZneShQQVJUSUFMX0FHR1JFR0FURSAoMiAqIGIpOjpkb3VibGUgcHJlY2lzaW9u LCBiOjpkb3VibGUgcHJlY2lzaW9uKSwgcmVncl9pbnRlcmNlcHQoUEFSVElBTF9BR0dSRUdBVEUg KCgyICogYikgKyAzKTo6ZG91YmxlIHByZWNpc2lvbiwgYjo6ZG91YmxlIHByZWNpc2lvbiksIHJl Z3JfcjIoUEFSVElBTF9BR0dSRUdBVEUgKGIgKiBiKTo6ZG91YmxlIHByZWNpc2lvbiwgYjo6ZG91 YmxlIHByZWNpc2lvbiksIHJlZ3Jfc2xvcGUoUEFSVElBTF9BR0dSRUdBVEUgKCgyICogYikgKyAz KTo6ZG91YmxlIHByZWNpc2lvbiwgYjo6ZG91YmxlIHByZWNpc2lvbiksIHJlZ3Jfc3h4KFBBUlRJ QUxfQUdHUkVHQVRFICgoMiAqIGIpICsgMyk6OmRvdWJsZSBwcmVjaXNpb24sIGI6OmRvdWJsZSBw cmVjaXNpb24pLCByZWdyX3N4eShQQVJUSUFMX0FHR1JFR0FURSAoYiAqIGIpOjpkb3VibGUgcHJl Y2lzaW9uLCBiOjpkb3VibGUgcHJlY2lzaW9uKSwgcmVncl9zeXkoUEFSVElBTF9BR0dSRUdBVEUg KCgyICogYikgKyAzKTo6ZG91YmxlIHByZWNpc2lvbiwgYjo6ZG91YmxlIHByZWNpc2lvbiksIHN0 ZGRldihQQVJUSUFMX0FHR1JFR0FURSBiOjpyZWFsKSwgc3RkZGV2KFBBUlRJQUxfQUdHUkVHQVRF IGI6OmRvdWJsZSBwcmVjaXNpb24pLCBzdGRkZXYoUEFSVElBTF9BR0dSRUdBVEUgYjo6c21hbGxp bnQpLCBzdGRkZXYoUEFSVElBTF9BR0dSRUdBVEUgYiksIHN0ZGRldihQQVJUSUFMX0FHR1JFR0FU RSBiOjpiaWdpbnQpLCBzdGRkZXYoUEFSVElBTF9BR0dSRUdBVEUgYjo6bnVtZXJpYyksIHN0ZGRl dl9wb3AoUEFSVElBTF9BR0dSRUdBVEUgYjo6cmVhbCksIHN0ZGRldl9wb3AoUEFSVElBTF9BR0dS RUdBVEUgYjo6ZG91YmxlIHByZWNpc2lvbiksIHN0ZGRldl9wb3AoUEFSVElBTF9BR0dSRUdBVEUg Yjo6c21hbGxpbnQpLCBzdGRkZXZfcG9wKFBBUlRJQUxfQUdHUkVHQVRFIGIpLCBzdGRkZXZfcG9w KFBBUlRJQUxfQUdHUkVHQVRFIGI6OmJpZ2ludCksIHN0ZGRldl9wb3AoUEFSVElBTF9BR0dSRUdB VEUgYjo6bnVtZXJpYyksIHN0ZGRldl9zYW1wKFBBUlRJQUxfQUdHUkVHQVRFIGI6OnJlYWwpLCBz dGRkZXZfc2FtcChQQVJUSUFMX0FHR1JFR0FURSBiOjpkb3VibGUgcHJlY2lzaW9uKSwgc3RkZGV2 X3NhbXAoUEFSVElBTF9BR0dSRUdBVEUgYjo6c21hbGxpbnQpLCBzdGRkZXZfc2FtcChQQVJUSUFM X0FHR1JFR0FURSBiKSwgc3RkZGV2X3NhbXAoUEFSVElBTF9BR0dSRUdBVEUgYjo6YmlnaW50KSwg c3RkZGV2X3NhbXAoUEFSVElBTF9BR0dSRUdBVEUgYjo6bnVtZXJpYyksIHN0cmluZ19hZ2coUEFS VElBTF9BR0dSRUdBVEUgY18xYywgJywnOjp0ZXh0KSwgc3RyaW5nX2FnZyhQQVJUSUFMX0FHR1JF R0FURSBjXzFiLCBFJ1xceDJjJzo6Ynl0ZWEpLCBzdW0oUEFSVElBTF9BR0dSRUdBVEUgYjo6Ymln aW50KSwgc3VtKFBBUlRJQUxfQUdHUkVHQVRFIGI6Om51bWVyaWMpLCB2YXJpYW5jZShQQVJUSUFM X0FHR1JFR0FURSBiOjpyZWFsKSwgdmFyaWFuY2UoUEFSVElBTF9BR0dSRUdBVEUgYjo6ZG91Ymxl IHByZWNpc2lvbiksIHZhcmlhbmNlKFBBUlRJQUxfQUdHUkVHQVRFIGI6OnNtYWxsaW50KSwgdmFy aWFuY2UoUEFSVElBTF9BR0dSRUdBVEUgYiksIHZhcmlhbmNlKFBBUlRJQUxfQUdHUkVHQVRFIGI6 OmJpZ2ludCksIHZhcmlhbmNlKFBBUlRJQUxfQUdHUkVHQVRFIGI6Om51bWVyaWMpLCB2YXJfcG9w KFBBUlRJQUxfQUdHUkVHQVRFIGI6OnJlYWwpLCB2YXJfcG9wKFBBUlRJQUxfQUdHUkVHQVRFIGI6 OmRvdWJsZSBwcmVjaXNpb24pLCB2YXJfcG9wKFBBUlRJQUxfQUdHUkVHQVRFIGI6OnNtYWxsaW50 KSwgdmFyX3BvcChQQVJUSUFMX0FHR1JFR0FURSBiKSwgdmFyX3BvcChQQVJUSUFMX0FHR1JFR0FU RSBiOjpiaWdpbnQpLCB2YXJfcG9wKFBBUlRJQUxfQUdHUkVHQVRFIGI6Om51bWVyaWMpLCB2YXJf c2FtcChQQVJUSUFMX0FHR1JFR0FURSBiOjpyZWFsKSwgdmFyX3NhbXAoUEFSVElBTF9BR0dSRUdB VEUgYjo6ZG91YmxlIHByZWNpc2lvbiksIHZhcl9zYW1wKFBBUlRJQUxfQUdHUkVHQVRFIGI6OnNt YWxsaW50KSwgdmFyX3NhbXAoUEFSVElBTF9BR0dSRUdBVEUgYiksIHZhcl9zYW1wKFBBUlRJQUxf QUdHUkVHQVRFIGI6OmJpZ2ludCksIHZhcl9zYW1wKFBBUlRJQUxfQUdHUkVHQVRFIGI6Om51bWVy aWMpLCBhbnlfdmFsdWUoKGIgKiAwKSksIGJpdF9hbmQoY19iaXQpLCBiaXRfYW5kKGNfMW9yM2lu dDIpLCBiaXRfYW5kKGNfMW9yM2ludDQpLCBiaXRfYW5kKGNfMW9yM2ludDgpLCBiaXRfb3IoY19i aXQpLCBiaXRfb3IoY18xb3IzaW50MiksIGJpdF9vcihjXzFvcjNpbnQ0KSwgYml0X29yKGNfMW9y M2ludDgpLCBiaXRfeG9yKGNfYml0KSwgYml0X3hvcihjXzFvcjNpbnQyKSwgYml0X3hvcihjXzFv cjNpbnQ0KSwgYml0X3hvcihjXzFvcjNpbnQ4KSwgYm9vbF9hbmQoY19ib29sKSwgYm9vbF9vcihj X2Jvb2wpLCBjb3VudChiKSwgY291bnQoKiksIGV2ZXJ5KGNfYm9vbCksIG1heChjX2ludDRhcnJh eSksIG1heChjX2VudW0pLCBtYXgoY18xYzo6Y2hhcmFjdGVyKDEpKSwgbWF4KCgnMDEtMDEtMjAw MCc6OmRhdGUgKyBiKSksIG1heCgoJzAuMC4wLjAnOjppbmV0ICsgYikpLCBtYXgoYjo6cmVhbCks IG1heChiOjpkb3VibGUgcHJlY2lzaW9uKSwgbWF4KGI6OnNtYWxsaW50KSwgbWF4KGIpLCBtYXgo Yjo6YmlnaW50KSwgbWF4KGNfaW50ZXJ2YWwpLCBtYXgoY19tb25leSksIG1heChiOjpudW1lcmlj KSwgbWF4KGI6Om9pZCksIG1heChjX3BnX2xzbiksIG1heChjX3RpZCksIG1heChjXzFjKSwgbWF4 KGNfdGltZSksIG1heChjX3RpbWV0eiksIG1heChjX3RpbWVzdGFtcCksIG1heChjX3RpbWVzdGFt cHR6KSwgbWF4KGNfeGlkOCksIG1pbihjX2ludDRhcnJheSksIG1pbihjX2VudW0pLCBtaW4oY18x Yzo6Y2hhcmFjdGVyKDEpKSwgbWluKCgnMDEtMDEtMjAwMCc6OmRhdGUgKyBiKSksIG1pbigoJzAu MC4wLjAnOjppbmV0ICsgYikpLCBtaW4oYjo6cmVhbCksIG1pbihiOjpkb3VibGUgcHJlY2lzaW9u KSwgbWluKGI6OnNtYWxsaW50KSwgbWluKGIpLCBtaW4oYjo6YmlnaW50KSwgbWluKGNfaW50ZXJ2 YWwpLCBtaW4oY19tb25leSksIG1pbihiOjpudW1lcmljKSwgbWluKGI6Om9pZCksIG1pbihjX3Bn X2xzbiksIG1pbihjX3RpZCksIG1pbihjXzFjKSwgbWluKGNfdGltZSksIG1pbihjX3RpbWV0eiks IG1pbihjX3RpbWVzdGFtcCksIG1pbihjX3RpbWVzdGFtcHR6KSwgbWluKGNfeGlkOCksIHJhbmdl X2ludGVyc2VjdF9hZ2coY19pbnQ0cmFuZ2UpLCByYW5nZV9pbnRlcnNlY3RfYWdnKGNfaW50NG11 bHRpcmFuZ2UpLCByZWdyX2NvdW50KCgoMiAqIGIpICsgMyk6OmRvdWJsZSBwcmVjaXNpb24sIGI6 OmRvdWJsZSBwcmVjaXNpb24pLCBzdW0oYjo6cmVhbCksIHN1bShiOjpkb3VibGUgcHJlY2lzaW9u KSwgc3VtKGI6OnNtYWxsaW50KSwgc3VtKGIpLCBzdW0oY19pbnRlcnZhbCksIHN1bShjX21vbmV5 KSBGUk9NIHB1YmxpYy5wYWdnX3RhYl9wMSBXSEVSRSAoKGNfc2VyaWFsID49IDEpKSBBTkQgKChj X3NlcmlhbCA8PSAzMCkpCisgICAgICAgICAgICAgICBSZW1vdGUgU1FMOiBTRUxFQ1QgYXJyYXlf YWdnKFBBUlRJQUxfQUdHUkVHQVRFIGNfaW50NGFycmF5KSwgYXJyYXlfYWdnKFBBUlRJQUxfQUdH UkVHQVRFIGIpLCBhdmcoUEFSVElBTF9BR0dSRUdBVEUgYjo6c21hbGxpbnQpLCBhdmcoUEFSVElB TF9BR0dSRUdBVEUgYiksIGF2ZyhQQVJUSUFMX0FHR1JFR0FURSBiOjpiaWdpbnQpLCBhdmcoUEFS VElBTF9BR0dSRUdBVEUgY19pbnRlcnZhbCksIGF2ZyhQQVJUSUFMX0FHR1JFR0FURSBiOjpyZWFs KSwgYXZnKFBBUlRJQUxfQUdHUkVHQVRFIGI6OmRvdWJsZSBwcmVjaXNpb24pLCBhdmcoUEFSVElB TF9BR0dSRUdBVEUgYjo6bnVtZXJpYyksIGNvcnIoUEFSVElBTF9BR0dSRUdBVEUgYjo6ZG91Ymxl IHByZWNpc2lvbiwgKGIgKiBiKTo6ZG91YmxlIHByZWNpc2lvbiksIGNvdmFyX3BvcChQQVJUSUFM X0FHR1JFR0FURSBiOjpkb3VibGUgcHJlY2lzaW9uLCAoYiAqIGIpOjpkb3VibGUgcHJlY2lzaW9u KSwgY292YXJfc2FtcChQQVJUSUFMX0FHR1JFR0FURSBiOjpkb3VibGUgcHJlY2lzaW9uLCAoYiAq IGIpOjpkb3VibGUgcHJlY2lzaW9uKSwgcmVncl9hdmd4KFBBUlRJQUxfQUdHUkVHQVRFICgyICog Yik6OmRvdWJsZSBwcmVjaXNpb24sIGI6OmRvdWJsZSBwcmVjaXNpb24pLCByZWdyX2F2Z3koUEFS VElBTF9BR0dSRUdBVEUgKDIgKiBiKTo6ZG91YmxlIHByZWNpc2lvbiwgYjo6ZG91YmxlIHByZWNp c2lvbiksIHJlZ3JfaW50ZXJjZXB0KFBBUlRJQUxfQUdHUkVHQVRFICgoMiAqIGIpICsgMyk6OmRv dWJsZSBwcmVjaXNpb24sIGI6OmRvdWJsZSBwcmVjaXNpb24pLCByZWdyX3IyKFBBUlRJQUxfQUdH UkVHQVRFIChiICogYik6OmRvdWJsZSBwcmVjaXNpb24sIGI6OmRvdWJsZSBwcmVjaXNpb24pLCBy ZWdyX3Nsb3BlKFBBUlRJQUxfQUdHUkVHQVRFICgoMiAqIGIpICsgMyk6OmRvdWJsZSBwcmVjaXNp b24sIGI6OmRvdWJsZSBwcmVjaXNpb24pLCByZWdyX3N4eChQQVJUSUFMX0FHR1JFR0FURSAoKDIg KiBiKSArIDMpOjpkb3VibGUgcHJlY2lzaW9uLCBiOjpkb3VibGUgcHJlY2lzaW9uKSwgcmVncl9z eHkoUEFSVElBTF9BR0dSRUdBVEUgKGIgKiBiKTo6ZG91YmxlIHByZWNpc2lvbiwgYjo6ZG91Ymxl IHByZWNpc2lvbiksIHJlZ3Jfc3l5KFBBUlRJQUxfQUdHUkVHQVRFICgoMiAqIGIpICsgMyk6OmRv dWJsZSBwcmVjaXNpb24sIGI6OmRvdWJsZSBwcmVjaXNpb24pLCBzdGRkZXYoUEFSVElBTF9BR0dS RUdBVEUgYjo6cmVhbCksIHN0ZGRldihQQVJUSUFMX0FHR1JFR0FURSBiOjpkb3VibGUgcHJlY2lz aW9uKSwgc3RkZGV2KFBBUlRJQUxfQUdHUkVHQVRFIGI6OnNtYWxsaW50KSwgc3RkZGV2KFBBUlRJ QUxfQUdHUkVHQVRFIGIpLCBzdGRkZXYoUEFSVElBTF9BR0dSRUdBVEUgYjo6YmlnaW50KSwgc3Rk ZGV2KFBBUlRJQUxfQUdHUkVHQVRFIGI6Om51bWVyaWMpLCBzdGRkZXZfcG9wKFBBUlRJQUxfQUdH UkVHQVRFIGI6OnJlYWwpLCBzdGRkZXZfcG9wKFBBUlRJQUxfQUdHUkVHQVRFIGI6OmRvdWJsZSBw cmVjaXNpb24pLCBzdGRkZXZfcG9wKFBBUlRJQUxfQUdHUkVHQVRFIGI6OnNtYWxsaW50KSwgc3Rk ZGV2X3BvcChQQVJUSUFMX0FHR1JFR0FURSBiKSwgc3RkZGV2X3BvcChQQVJUSUFMX0FHR1JFR0FU RSBiOjpiaWdpbnQpLCBzdGRkZXZfcG9wKFBBUlRJQUxfQUdHUkVHQVRFIGI6Om51bWVyaWMpLCBz dGRkZXZfc2FtcChQQVJUSUFMX0FHR1JFR0FURSBiOjpyZWFsKSwgc3RkZGV2X3NhbXAoUEFSVElB TF9BR0dSRUdBVEUgYjo6ZG91YmxlIHByZWNpc2lvbiksIHN0ZGRldl9zYW1wKFBBUlRJQUxfQUdH UkVHQVRFIGI6OnNtYWxsaW50KSwgc3RkZGV2X3NhbXAoUEFSVElBTF9BR0dSRUdBVEUgYiksIHN0 ZGRldl9zYW1wKFBBUlRJQUxfQUdHUkVHQVRFIGI6OmJpZ2ludCksIHN0ZGRldl9zYW1wKFBBUlRJ QUxfQUdHUkVHQVRFIGI6Om51bWVyaWMpLCBzdHJpbmdfYWdnKFBBUlRJQUxfQUdHUkVHQVRFIGNf MWMsICcsJzo6dGV4dCksIHN0cmluZ19hZ2coUEFSVElBTF9BR0dSRUdBVEUgY18xYiwgRSdcXHgy Yyc6OmJ5dGVhKSwgc3VtKFBBUlRJQUxfQUdHUkVHQVRFIGI6OmJpZ2ludCksIHN1bShQQVJUSUFM X0FHR1JFR0FURSBiOjpudW1lcmljKSwgdmFyaWFuY2UoUEFSVElBTF9BR0dSRUdBVEUgYjo6cmVh bCksIHZhcmlhbmNlKFBBUlRJQUxfQUdHUkVHQVRFIGI6OmRvdWJsZSBwcmVjaXNpb24pLCB2YXJp YW5jZShQQVJUSUFMX0FHR1JFR0FURSBiOjpzbWFsbGludCksIHZhcmlhbmNlKFBBUlRJQUxfQUdH UkVHQVRFIGIpLCB2YXJpYW5jZShQQVJUSUFMX0FHR1JFR0FURSBiOjpiaWdpbnQpLCB2YXJpYW5j ZShQQVJUSUFMX0FHR1JFR0FURSBiOjpudW1lcmljKSwgdmFyX3BvcChQQVJUSUFMX0FHR1JFR0FU RSBiOjpyZWFsKSwgdmFyX3BvcChQQVJUSUFMX0FHR1JFR0FURSBiOjpkb3VibGUgcHJlY2lzaW9u KSwgdmFyX3BvcChQQVJUSUFMX0FHR1JFR0FURSBiOjpzbWFsbGludCksIHZhcl9wb3AoUEFSVElB TF9BR0dSRUdBVEUgYiksIHZhcl9wb3AoUEFSVElBTF9BR0dSRUdBVEUgYjo6YmlnaW50KSwgdmFy X3BvcChQQVJUSUFMX0FHR1JFR0FURSBiOjpudW1lcmljKSwgdmFyX3NhbXAoUEFSVElBTF9BR0dS RUdBVEUgYjo6cmVhbCksIHZhcl9zYW1wKFBBUlRJQUxfQUdHUkVHQVRFIGI6OmRvdWJsZSBwcmVj aXNpb24pLCB2YXJfc2FtcChQQVJUSUFMX0FHR1JFR0FURSBiOjpzbWFsbGludCksIHZhcl9zYW1w KFBBUlRJQUxfQUdHUkVHQVRFIGIpLCB2YXJfc2FtcChQQVJUSUFMX0FHR1JFR0FURSBiOjpiaWdp bnQpLCB2YXJfc2FtcChQQVJUSUFMX0FHR1JFR0FURSBiOjpudW1lcmljKSwgYW55X3ZhbHVlKChi ICogMCkpLCBiaXRfYW5kKGNfYml0KSwgYml0X2FuZChjXzFvcjNpbnQyKSwgYml0X2FuZChjXzFv cjNpbnQ0KSwgYml0X2FuZChjXzFvcjNpbnQ4KSwgYml0X29yKGNfYml0KSwgYml0X29yKGNfMW9y M2ludDIpLCBiaXRfb3IoY18xb3IzaW50NCksIGJpdF9vcihjXzFvcjNpbnQ4KSwgYml0X3hvcihj X2JpdCksIGJpdF94b3IoY18xb3IzaW50MiksIGJpdF94b3IoY18xb3IzaW50NCksIGJpdF94b3Io Y18xb3IzaW50OCksIGJvb2xfYW5kKGNfYm9vbCksIGJvb2xfb3IoY19ib29sKSwgY291bnQoYiks IGNvdW50KCopLCBldmVyeShjX2Jvb2wpLCBtYXgoY19pbnQ0YXJyYXkpLCBtYXgoY19lbnVtKSwg bWF4KGNfMWM6OmNoYXJhY3RlcigxKSksIG1heCgoJzAxLTAxLTIwMDAnOjpkYXRlICsgYikpLCBt YXgoKCcwLjAuMC4wJzo6aW5ldCArIGIpKSwgbWF4KGI6OnJlYWwpLCBtYXgoYjo6ZG91YmxlIHBy ZWNpc2lvbiksIG1heChiOjpzbWFsbGludCksIG1heChiKSwgbWF4KGI6OmJpZ2ludCksIG1heChj X2ludGVydmFsKSwgbWF4KGNfbW9uZXkpLCBtYXgoYjo6bnVtZXJpYyksIG1heChiOjpvaWQpLCBt YXgoY19wZ19sc24pLCBtYXgoY190aWQpLCBtYXgoY18xYyksIG1heChjX3RpbWUpLCBtYXgoY190 aW1ldHopLCBtYXgoY190aW1lc3RhbXApLCBtYXgoY190aW1lc3RhbXB0eiksIG1heChjX3hpZDgp LCBtaW4oY19pbnQ0YXJyYXkpLCBtaW4oY19lbnVtKSwgbWluKGNfMWM6OmNoYXJhY3RlcigxKSks IG1pbigoJzAxLTAxLTIwMDAnOjpkYXRlICsgYikpLCBtaW4oKCcwLjAuMC4wJzo6aW5ldCArIGIp KSwgbWluKGI6OnJlYWwpLCBtaW4oYjo6ZG91YmxlIHByZWNpc2lvbiksIG1pbihiOjpzbWFsbGlu dCksIG1pbihiKSwgbWluKGI6OmJpZ2ludCksIG1pbihjX2ludGVydmFsKSwgbWluKGNfbW9uZXkp LCBtaW4oYjo6bnVtZXJpYyksIG1pbihiOjpvaWQpLCBtaW4oY19wZ19sc24pLCBtaW4oY190aWQp LCBtaW4oY18xYyksIG1pbihjX3RpbWUpLCBtaW4oY190aW1ldHopLCBtaW4oY190aW1lc3RhbXAp LCBtaW4oY190aW1lc3RhbXB0eiksIG1pbihjX3hpZDgpLCByYW5nZV9pbnRlcnNlY3RfYWdnKGNf aW50NHJhbmdlKSwgcmFuZ2VfaW50ZXJzZWN0X2FnZyhjX2ludDRtdWx0aXJhbmdlKSwgcmVncl9j b3VudCgoKDIgKiBiKSArIDMpOjpkb3VibGUgcHJlY2lzaW9uLCBiOjpkb3VibGUgcHJlY2lzaW9u KSwgc3VtKGI6OnJlYWwpLCBzdW0oYjo6ZG91YmxlIHByZWNpc2lvbiksIHN1bShiOjpzbWFsbGlu dCksIHN1bShiKSwgc3VtKFBBUlRJQUxfQUdHUkVHQVRFIGNfaW50ZXJ2YWwpLCBzdW0oY19tb25l eSkgRlJPTSBwdWJsaWMucGFnZ190YWJfcDEgV0hFUkUgKChjX3NlcmlhbCA+PSAxKSkgQU5EICgo Y19zZXJpYWwgPD0gMzApKQogICAgICAgICAgLT4gIEZvcmVpZ24gU2NhbgogICAgICAgICAgICAg ICAgT3V0cHV0OiAoUEFSVElBTCBhcnJheV9hZ2cocGFnZ190YWJfMS5jX2ludDRhcnJheSkpLCAo UEFSVElBTCBhcnJheV9hZ2cocGFnZ190YWJfMS5iKSksIChQQVJUSUFMIGF2ZygocGFnZ190YWJf MS5iKTo6c21hbGxpbnQpKSwgKFBBUlRJQUwgYXZnKHBhZ2dfdGFiXzEuYikpLCAoUEFSVElBTCBh dmcoKHBhZ2dfdGFiXzEuYik6OmJpZ2ludCkpLCAoUEFSVElBTCBhdmcocGFnZ190YWJfMS5jX2lu dGVydmFsKSksIChQQVJUSUFMIGF2ZygocGFnZ190YWJfMS5iKTo6cmVhbCkpLCAoUEFSVElBTCBh dmcoKHBhZ2dfdGFiXzEuYik6OmRvdWJsZSBwcmVjaXNpb24pKSwgKFBBUlRJQUwgYXZnKChwYWdn X3RhYl8xLmIpOjpudW1lcmljKSksIChQQVJUSUFMIGNvcnIoKHBhZ2dfdGFiXzEuYik6OmRvdWJs ZSBwcmVjaXNpb24sICgocGFnZ190YWJfMS5iICogcGFnZ190YWJfMS5iKSk6OmRvdWJsZSBwcmVj aXNpb24pKSwgKFBBUlRJQUwgY292YXJfcG9wKChwYWdnX3RhYl8xLmIpOjpkb3VibGUgcHJlY2lz aW9uLCAoKHBhZ2dfdGFiXzEuYiAqIHBhZ2dfdGFiXzEuYikpOjpkb3VibGUgcHJlY2lzaW9uKSks IChQQVJUSUFMIGNvdmFyX3NhbXAoKHBhZ2dfdGFiXzEuYik6OmRvdWJsZSBwcmVjaXNpb24sICgo cGFnZ190YWJfMS5iICogcGFnZ190YWJfMS5iKSk6OmRvdWJsZSBwcmVjaXNpb24pKSwgKFBBUlRJ QUwgcmVncl9hdmd4KCgoMiAqIHBhZ2dfdGFiXzEuYikpOjpkb3VibGUgcHJlY2lzaW9uLCAocGFn Z190YWJfMS5iKTo6ZG91YmxlIHByZWNpc2lvbikpLCAoUEFSVElBTCByZWdyX2F2Z3koKCgyICog cGFnZ190YWJfMS5iKSk6OmRvdWJsZSBwcmVjaXNpb24sIChwYWdnX3RhYl8xLmIpOjpkb3VibGUg cHJlY2lzaW9uKSksIChQQVJUSUFMIHJlZ3JfaW50ZXJjZXB0KCgoKDIgKiBwYWdnX3RhYl8xLmIp ICsgMykpOjpkb3VibGUgcHJlY2lzaW9uLCAocGFnZ190YWJfMS5iKTo6ZG91YmxlIHByZWNpc2lv bikpLCAoUEFSVElBTCByZWdyX3IyKCgocGFnZ190YWJfMS5iICogcGFnZ190YWJfMS5iKSk6OmRv dWJsZSBwcmVjaXNpb24sIChwYWdnX3RhYl8xLmIpOjpkb3VibGUgcHJlY2lzaW9uKSksIChQQVJU SUFMIHJlZ3Jfc2xvcGUoKCgoMiAqIHBhZ2dfdGFiXzEuYikgKyAzKSk6OmRvdWJsZSBwcmVjaXNp b24sIChwYWdnX3RhYl8xLmIpOjpkb3VibGUgcHJlY2lzaW9uKSksIChQQVJUSUFMIHJlZ3Jfc3h4 KCgoKDIgKiBwYWdnX3RhYl8xLmIpICsgMykpOjpkb3VibGUgcHJlY2lzaW9uLCAocGFnZ190YWJf MS5iKTo6ZG91YmxlIHByZWNpc2lvbikpLCAoUEFSVElBTCByZWdyX3N4eSgoKHBhZ2dfdGFiXzEu YiAqIHBhZ2dfdGFiXzEuYikpOjpkb3VibGUgcHJlY2lzaW9uLCAocGFnZ190YWJfMS5iKTo6ZG91 YmxlIHByZWNpc2lvbikpLCAoUEFSVElBTCByZWdyX3N5eSgoKCgyICogcGFnZ190YWJfMS5iKSAr IDMpKTo6ZG91YmxlIHByZWNpc2lvbiwgKHBhZ2dfdGFiXzEuYik6OmRvdWJsZSBwcmVjaXNpb24p KSwgKFBBUlRJQUwgc3RkZGV2KChwYWdnX3RhYl8xLmIpOjpyZWFsKSksIChQQVJUSUFMIHN0ZGRl digocGFnZ190YWJfMS5iKTo6ZG91YmxlIHByZWNpc2lvbikpLCAoUEFSVElBTCBzdGRkZXYoKHBh Z2dfdGFiXzEuYik6OnNtYWxsaW50KSksIChQQVJUSUFMIHN0ZGRldihwYWdnX3RhYl8xLmIpKSwg KFBBUlRJQUwgc3RkZGV2KChwYWdnX3RhYl8xLmIpOjpiaWdpbnQpKSwgKFBBUlRJQUwgc3RkZGV2 KChwYWdnX3RhYl8xLmIpOjpudW1lcmljKSksIChQQVJUSUFMIHN0ZGRldl9wb3AoKHBhZ2dfdGFi XzEuYik6OnJlYWwpKSwgKFBBUlRJQUwgc3RkZGV2X3BvcCgocGFnZ190YWJfMS5iKTo6ZG91Ymxl IHByZWNpc2lvbikpLCAoUEFSVElBTCBzdGRkZXZfcG9wKChwYWdnX3RhYl8xLmIpOjpzbWFsbGlu dCkpLCAoUEFSVElBTCBzdGRkZXZfcG9wKHBhZ2dfdGFiXzEuYikpLCAoUEFSVElBTCBzdGRkZXZf cG9wKChwYWdnX3RhYl8xLmIpOjpiaWdpbnQpKSwgKFBBUlRJQUwgc3RkZGV2X3BvcCgocGFnZ190 YWJfMS5iKTo6bnVtZXJpYykpLCAoUEFSVElBTCBzdGRkZXZfc2FtcCgocGFnZ190YWJfMS5iKTo6 cmVhbCkpLCAoUEFSVElBTCBzdGRkZXZfc2FtcCgocGFnZ190YWJfMS5iKTo6ZG91YmxlIHByZWNp c2lvbikpLCAoUEFSVElBTCBzdGRkZXZfc2FtcCgocGFnZ190YWJfMS5iKTo6c21hbGxpbnQpKSwg KFBBUlRJQUwgc3RkZGV2X3NhbXAocGFnZ190YWJfMS5iKSksIChQQVJUSUFMIHN0ZGRldl9zYW1w KChwYWdnX3RhYl8xLmIpOjpiaWdpbnQpKSwgKFBBUlRJQUwgc3RkZGV2X3NhbXAoKHBhZ2dfdGFi XzEuYik6Om51bWVyaWMpKSwgKFBBUlRJQUwgc3RyaW5nX2FnZyhwYWdnX3RhYl8xLmNfMWMsICcs Jzo6dGV4dCkpLCAoUEFSVElBTCBzdHJpbmdfYWdnKHBhZ2dfdGFiXzEuY18xYiwgJ1x4MmMnOjpi eXRlYSkpLCAoUEFSVElBTCBzdW0oKHBhZ2dfdGFiXzEuYik6OmJpZ2ludCkpLCAoUEFSVElBTCBz dW0oKHBhZ2dfdGFiXzEuYik6Om51bWVyaWMpKSwgKFBBUlRJQUwgdmFyaWFuY2UoKHBhZ2dfdGFi XzEuYik6OnJlYWwpKSwgKFBBUlRJQUwgdmFyaWFuY2UoKHBhZ2dfdGFiXzEuYik6OmRvdWJsZSBw cmVjaXNpb24pKSwgKFBBUlRJQUwgdmFyaWFuY2UoKHBhZ2dfdGFiXzEuYik6OnNtYWxsaW50KSks IChQQVJUSUFMIHZhcmlhbmNlKHBhZ2dfdGFiXzEuYikpLCAoUEFSVElBTCB2YXJpYW5jZSgocGFn Z190YWJfMS5iKTo6YmlnaW50KSksIChQQVJUSUFMIHZhcmlhbmNlKChwYWdnX3RhYl8xLmIpOjpu dW1lcmljKSksIChQQVJUSUFMIHZhcl9wb3AoKHBhZ2dfdGFiXzEuYik6OnJlYWwpKSwgKFBBUlRJ QUwgdmFyX3BvcCgocGFnZ190YWJfMS5iKTo6ZG91YmxlIHByZWNpc2lvbikpLCAoUEFSVElBTCB2 YXJfcG9wKChwYWdnX3RhYl8xLmIpOjpzbWFsbGludCkpLCAoUEFSVElBTCB2YXJfcG9wKHBhZ2df dGFiXzEuYikpLCAoUEFSVElBTCB2YXJfcG9wKChwYWdnX3RhYl8xLmIpOjpiaWdpbnQpKSwgKFBB UlRJQUwgdmFyX3BvcCgocGFnZ190YWJfMS5iKTo6bnVtZXJpYykpLCAoUEFSVElBTCB2YXJfc2Ft cCgocGFnZ190YWJfMS5iKTo6cmVhbCkpLCAoUEFSVElBTCB2YXJfc2FtcCgocGFnZ190YWJfMS5i KTo6ZG91YmxlIHByZWNpc2lvbikpLCAoUEFSVElBTCB2YXJfc2FtcCgocGFnZ190YWJfMS5iKTo6 c21hbGxpbnQpKSwgKFBBUlRJQUwgdmFyX3NhbXAocGFnZ190YWJfMS5iKSksIChQQVJUSUFMIHZh cl9zYW1wKChwYWdnX3RhYl8xLmIpOjpiaWdpbnQpKSwgKFBBUlRJQUwgdmFyX3NhbXAoKHBhZ2df dGFiXzEuYik6Om51bWVyaWMpKSwgKFBBUlRJQUwgYW55X3ZhbHVlKChwYWdnX3RhYl8xLmIgKiAw KSkpLCAoUEFSVElBTCBiaXRfYW5kKHBhZ2dfdGFiXzEuY19iaXQpKSwgKFBBUlRJQUwgYml0X2Fu ZChwYWdnX3RhYl8xLmNfMW9yM2ludDIpKSwgKFBBUlRJQUwgYml0X2FuZChwYWdnX3RhYl8xLmNf MW9yM2ludDQpKSwgKFBBUlRJQUwgYml0X2FuZChwYWdnX3RhYl8xLmNfMW9yM2ludDgpKSwgKFBB UlRJQUwgYml0X29yKHBhZ2dfdGFiXzEuY19iaXQpKSwgKFBBUlRJQUwgYml0X29yKHBhZ2dfdGFi XzEuY18xb3IzaW50MikpLCAoUEFSVElBTCBiaXRfb3IocGFnZ190YWJfMS5jXzFvcjNpbnQ0KSks IChQQVJUSUFMIGJpdF9vcihwYWdnX3RhYl8xLmNfMW9yM2ludDgpKSwgKFBBUlRJQUwgYml0X3hv cihwYWdnX3RhYl8xLmNfYml0KSksIChQQVJUSUFMIGJpdF94b3IocGFnZ190YWJfMS5jXzFvcjNp bnQyKSksIChQQVJUSUFMIGJpdF94b3IocGFnZ190YWJfMS5jXzFvcjNpbnQ0KSksIChQQVJUSUFM IGJpdF94b3IocGFnZ190YWJfMS5jXzFvcjNpbnQ4KSksIChQQVJUSUFMIGJvb2xfYW5kKHBhZ2df dGFiXzEuY19ib29sKSksIChQQVJUSUFMIGJvb2xfb3IocGFnZ190YWJfMS5jX2Jvb2wpKSwgKFBB UlRJQUwgY291bnQocGFnZ190YWJfMS5iKSksIChQQVJUSUFMIGNvdW50KCopKSwgKFBBUlRJQUwg ZXZlcnkocGFnZ190YWJfMS5jX2Jvb2wpKSwgKFBBUlRJQUwgbWF4KHBhZ2dfdGFiXzEuY19pbnQ0 YXJyYXkpKSwgKFBBUlRJQUwgbWF4KHBhZ2dfdGFiXzEuY19lbnVtKSksIChQQVJUSUFMIG1heCgo cGFnZ190YWJfMS5jXzFjKTo6Y2hhcmFjdGVyKDEpKSksIChQQVJUSUFMIG1heCgoJzAxLTAxLTIw MDAnOjpkYXRlICsgcGFnZ190YWJfMS5iKSkpLCAoUEFSVElBTCBtYXgoKCcwLjAuMC4wJzo6aW5l dCArIChwYWdnX3RhYl8xLmIpOjpiaWdpbnQpKSksIChQQVJUSUFMIG1heCgocGFnZ190YWJfMS5i KTo6cmVhbCkpLCAoUEFSVElBTCBtYXgoKHBhZ2dfdGFiXzEuYik6OmRvdWJsZSBwcmVjaXNpb24p KSwgKFBBUlRJQUwgbWF4KChwYWdnX3RhYl8xLmIpOjpzbWFsbGludCkpLCAoUEFSVElBTCBtYXgo cGFnZ190YWJfMS5iKSksIChQQVJUSUFMIG1heCgocGFnZ190YWJfMS5iKTo6YmlnaW50KSksIChQ QVJUSUFMIG1heChwYWdnX3RhYl8xLmNfaW50ZXJ2YWwpKSwgKFBBUlRJQUwgbWF4KHBhZ2dfdGFi XzEuY19tb25leSkpLCAoUEFSVElBTCBtYXgoKHBhZ2dfdGFiXzEuYik6Om51bWVyaWMpKSwgKFBB UlRJQUwgbWF4KChwYWdnX3RhYl8xLmIpOjpvaWQpKSwgKFBBUlRJQUwgbWF4KHBhZ2dfdGFiXzEu Y19wZ19sc24pKSwgKFBBUlRJQUwgbWF4KHBhZ2dfdGFiXzEuY190aWQpKSwgKFBBUlRJQUwgbWF4 KHBhZ2dfdGFiXzEuY18xYykpLCAoUEFSVElBTCBtYXgocGFnZ190YWJfMS5jX3RpbWUpKSwgKFBB UlRJQUwgbWF4KHBhZ2dfdGFiXzEuY190aW1ldHopKSwgKFBBUlRJQUwgbWF4KHBhZ2dfdGFiXzEu Y190aW1lc3RhbXApKSwgKFBBUlRJQUwgbWF4KHBhZ2dfdGFiXzEuY190aW1lc3RhbXB0eikpLCAo UEFSVElBTCBtYXgocGFnZ190YWJfMS5jX3hpZDgpKSwgKFBBUlRJQUwgbWluKHBhZ2dfdGFiXzEu Y19pbnQ0YXJyYXkpKSwgKFBBUlRJQUwgbWluKHBhZ2dfdGFiXzEuY19lbnVtKSksIChQQVJUSUFM IG1pbigocGFnZ190YWJfMS5jXzFjKTo6Y2hhcmFjdGVyKDEpKSksIChQQVJUSUFMIG1pbigoJzAx LTAxLTIwMDAnOjpkYXRlICsgcGFnZ190YWJfMS5iKSkpLCAoUEFSVElBTCBtaW4oKCcwLjAuMC4w Jzo6aW5ldCArIChwYWdnX3RhYl8xLmIpOjpiaWdpbnQpKSksIChQQVJUSUFMIG1pbigocGFnZ190 YWJfMS5iKTo6cmVhbCkpLCAoUEFSVElBTCBtaW4oKHBhZ2dfdGFiXzEuYik6OmRvdWJsZSBwcmVj aXNpb24pKSwgKFBBUlRJQUwgbWluKChwYWdnX3RhYl8xLmIpOjpzbWFsbGludCkpLCAoUEFSVElB TCBtaW4ocGFnZ190YWJfMS5iKSksIChQQVJUSUFMIG1pbigocGFnZ190YWJfMS5iKTo6YmlnaW50 KSksIChQQVJUSUFMIG1pbihwYWdnX3RhYl8xLmNfaW50ZXJ2YWwpKSwgKFBBUlRJQUwgbWluKHBh Z2dfdGFiXzEuY19tb25leSkpLCAoUEFSVElBTCBtaW4oKHBhZ2dfdGFiXzEuYik6Om51bWVyaWMp KSwgKFBBUlRJQUwgbWluKChwYWdnX3RhYl8xLmIpOjpvaWQpKSwgKFBBUlRJQUwgbWluKHBhZ2df dGFiXzEuY19wZ19sc24pKSwgKFBBUlRJQUwgbWluKHBhZ2dfdGFiXzEuY190aWQpKSwgKFBBUlRJ QUwgbWluKHBhZ2dfdGFiXzEuY18xYykpLCAoUEFSVElBTCBtaW4ocGFnZ190YWJfMS5jX3RpbWUp KSwgKFBBUlRJQUwgbWluKHBhZ2dfdGFiXzEuY190aW1ldHopKSwgKFBBUlRJQUwgbWluKHBhZ2df dGFiXzEuY190aW1lc3RhbXApKSwgKFBBUlRJQUwgbWluKHBhZ2dfdGFiXzEuY190aW1lc3RhbXB0 eikpLCAoUEFSVElBTCBtaW4ocGFnZ190YWJfMS5jX3hpZDgpKSwgKFBBUlRJQUwgcmFuZ2VfaW50 ZXJzZWN0X2FnZyhwYWdnX3RhYl8xLmNfaW50NHJhbmdlKSksIChQQVJUSUFMIHJhbmdlX2ludGVy c2VjdF9hZ2cocGFnZ190YWJfMS5jX2ludDRtdWx0aXJhbmdlKSksIChQQVJUSUFMIHJlZ3JfY291 bnQoKCgoMiAqIHBhZ2dfdGFiXzEuYikgKyAzKSk6OmRvdWJsZSBwcmVjaXNpb24sIChwYWdnX3Rh Yl8xLmIpOjpkb3VibGUgcHJlY2lzaW9uKSksIChQQVJUSUFMIHN1bSgocGFnZ190YWJfMS5iKTo6 cmVhbCkpLCAoUEFSVElBTCBzdW0oKHBhZ2dfdGFiXzEuYik6OmRvdWJsZSBwcmVjaXNpb24pKSwg KFBBUlRJQUwgc3VtKChwYWdnX3RhYl8xLmIpOjpzbWFsbGludCkpLCAoUEFSVElBTCBzdW0ocGFn Z190YWJfMS5iKSksIChQQVJUSUFMIHN1bShwYWdnX3RhYl8xLmNfaW50ZXJ2YWwpKSwgKFBBUlRJ QUwgc3VtKHBhZ2dfdGFiXzEuY19tb25leSkpCiAgICAgICAgICAgICAgICBSZWxhdGlvbnM6IEFn Z3JlZ2F0ZSBvbiAocHVibGljLmZwYWdnX3RhYl9wMiBwYWdnX3RhYl8xKQotICAgICAgICAgICAg ICAgUmVtb3RlIFNRTDogU0VMRUNUIGFycmF5X2FnZyhQQVJUSUFMX0FHR1JFR0FURSBjX2ludDRh cnJheSksIGFycmF5X2FnZyhQQVJUSUFMX0FHR1JFR0FURSBiKSwgYXZnKFBBUlRJQUxfQUdHUkVH QVRFIGI6OnNtYWxsaW50KSwgYXZnKFBBUlRJQUxfQUdHUkVHQVRFIGIpLCBhdmcoUEFSVElBTF9B R0dSRUdBVEUgYjo6YmlnaW50KSwgYXZnKFBBUlRJQUxfQUdHUkVHQVRFIGNfaW50ZXJ2YWwpLCBh dmcoUEFSVElBTF9BR0dSRUdBVEUgYjo6cmVhbCksIGF2ZyhQQVJUSUFMX0FHR1JFR0FURSBiOjpk b3VibGUgcHJlY2lzaW9uKSwgYXZnKFBBUlRJQUxfQUdHUkVHQVRFIGI6Om51bWVyaWMpLCBjb3Jy KFBBUlRJQUxfQUdHUkVHQVRFIGI6OmRvdWJsZSBwcmVjaXNpb24sIChiICogYik6OmRvdWJsZSBw cmVjaXNpb24pLCBjb3Zhcl9wb3AoUEFSVElBTF9BR0dSRUdBVEUgYjo6ZG91YmxlIHByZWNpc2lv biwgKGIgKiBiKTo6ZG91YmxlIHByZWNpc2lvbiksIGNvdmFyX3NhbXAoUEFSVElBTF9BR0dSRUdB VEUgYjo6ZG91YmxlIHByZWNpc2lvbiwgKGIgKiBiKTo6ZG91YmxlIHByZWNpc2lvbiksIHJlZ3Jf YXZneChQQVJUSUFMX0FHR1JFR0FURSAoMiAqIGIpOjpkb3VibGUgcHJlY2lzaW9uLCBiOjpkb3Vi bGUgcHJlY2lzaW9uKSwgcmVncl9hdmd5KFBBUlRJQUxfQUdHUkVHQVRFICgyICogYik6OmRvdWJs ZSBwcmVjaXNpb24sIGI6OmRvdWJsZSBwcmVjaXNpb24pLCByZWdyX2ludGVyY2VwdChQQVJUSUFM X0FHR1JFR0FURSAoKDIgKiBiKSArIDMpOjpkb3VibGUgcHJlY2lzaW9uLCBiOjpkb3VibGUgcHJl Y2lzaW9uKSwgcmVncl9yMihQQVJUSUFMX0FHR1JFR0FURSAoYiAqIGIpOjpkb3VibGUgcHJlY2lz aW9uLCBiOjpkb3VibGUgcHJlY2lzaW9uKSwgcmVncl9zbG9wZShQQVJUSUFMX0FHR1JFR0FURSAo KDIgKiBiKSArIDMpOjpkb3VibGUgcHJlY2lzaW9uLCBiOjpkb3VibGUgcHJlY2lzaW9uKSwgcmVn cl9zeHgoUEFSVElBTF9BR0dSRUdBVEUgKCgyICogYikgKyAzKTo6ZG91YmxlIHByZWNpc2lvbiwg Yjo6ZG91YmxlIHByZWNpc2lvbiksIHJlZ3Jfc3h5KFBBUlRJQUxfQUdHUkVHQVRFIChiICogYik6 OmRvdWJsZSBwcmVjaXNpb24sIGI6OmRvdWJsZSBwcmVjaXNpb24pLCByZWdyX3N5eShQQVJUSUFM X0FHR1JFR0FURSAoKDIgKiBiKSArIDMpOjpkb3VibGUgcHJlY2lzaW9uLCBiOjpkb3VibGUgcHJl Y2lzaW9uKSwgc3RkZGV2KFBBUlRJQUxfQUdHUkVHQVRFIGI6OnJlYWwpLCBzdGRkZXYoUEFSVElB TF9BR0dSRUdBVEUgYjo6ZG91YmxlIHByZWNpc2lvbiksIHN0ZGRldihQQVJUSUFMX0FHR1JFR0FU RSBiOjpzbWFsbGludCksIHN0ZGRldihQQVJUSUFMX0FHR1JFR0FURSBiKSwgc3RkZGV2KFBBUlRJ QUxfQUdHUkVHQVRFIGI6OmJpZ2ludCksIHN0ZGRldihQQVJUSUFMX0FHR1JFR0FURSBiOjpudW1l cmljKSwgc3RkZGV2X3BvcChQQVJUSUFMX0FHR1JFR0FURSBiOjpyZWFsKSwgc3RkZGV2X3BvcChQ QVJUSUFMX0FHR1JFR0FURSBiOjpkb3VibGUgcHJlY2lzaW9uKSwgc3RkZGV2X3BvcChQQVJUSUFM X0FHR1JFR0FURSBiOjpzbWFsbGludCksIHN0ZGRldl9wb3AoUEFSVElBTF9BR0dSRUdBVEUgYiks IHN0ZGRldl9wb3AoUEFSVElBTF9BR0dSRUdBVEUgYjo6YmlnaW50KSwgc3RkZGV2X3BvcChQQVJU SUFMX0FHR1JFR0FURSBiOjpudW1lcmljKSwgc3RkZGV2X3NhbXAoUEFSVElBTF9BR0dSRUdBVEUg Yjo6cmVhbCksIHN0ZGRldl9zYW1wKFBBUlRJQUxfQUdHUkVHQVRFIGI6OmRvdWJsZSBwcmVjaXNp b24pLCBzdGRkZXZfc2FtcChQQVJUSUFMX0FHR1JFR0FURSBiOjpzbWFsbGludCksIHN0ZGRldl9z YW1wKFBBUlRJQUxfQUdHUkVHQVRFIGIpLCBzdGRkZXZfc2FtcChQQVJUSUFMX0FHR1JFR0FURSBi OjpiaWdpbnQpLCBzdGRkZXZfc2FtcChQQVJUSUFMX0FHR1JFR0FURSBiOjpudW1lcmljKSwgc3Ry aW5nX2FnZyhQQVJUSUFMX0FHR1JFR0FURSBjXzFjLCAnLCc6OnRleHQpLCBzdHJpbmdfYWdnKFBB UlRJQUxfQUdHUkVHQVRFIGNfMWIsIEUnXFx4MmMnOjpieXRlYSksIHN1bShQQVJUSUFMX0FHR1JF R0FURSBiOjpiaWdpbnQpLCBzdW0oUEFSVElBTF9BR0dSRUdBVEUgYjo6bnVtZXJpYyksIHZhcmlh bmNlKFBBUlRJQUxfQUdHUkVHQVRFIGI6OnJlYWwpLCB2YXJpYW5jZShQQVJUSUFMX0FHR1JFR0FU RSBiOjpkb3VibGUgcHJlY2lzaW9uKSwgdmFyaWFuY2UoUEFSVElBTF9BR0dSRUdBVEUgYjo6c21h bGxpbnQpLCB2YXJpYW5jZShQQVJUSUFMX0FHR1JFR0FURSBiKSwgdmFyaWFuY2UoUEFSVElBTF9B R0dSRUdBVEUgYjo6YmlnaW50KSwgdmFyaWFuY2UoUEFSVElBTF9BR0dSRUdBVEUgYjo6bnVtZXJp YyksIHZhcl9wb3AoUEFSVElBTF9BR0dSRUdBVEUgYjo6cmVhbCksIHZhcl9wb3AoUEFSVElBTF9B R0dSRUdBVEUgYjo6ZG91YmxlIHByZWNpc2lvbiksIHZhcl9wb3AoUEFSVElBTF9BR0dSRUdBVEUg Yjo6c21hbGxpbnQpLCB2YXJfcG9wKFBBUlRJQUxfQUdHUkVHQVRFIGIpLCB2YXJfcG9wKFBBUlRJ QUxfQUdHUkVHQVRFIGI6OmJpZ2ludCksIHZhcl9wb3AoUEFSVElBTF9BR0dSRUdBVEUgYjo6bnVt ZXJpYyksIHZhcl9zYW1wKFBBUlRJQUxfQUdHUkVHQVRFIGI6OnJlYWwpLCB2YXJfc2FtcChQQVJU SUFMX0FHR1JFR0FURSBiOjpkb3VibGUgcHJlY2lzaW9uKSwgdmFyX3NhbXAoUEFSVElBTF9BR0dS RUdBVEUgYjo6c21hbGxpbnQpLCB2YXJfc2FtcChQQVJUSUFMX0FHR1JFR0FURSBiKSwgdmFyX3Nh bXAoUEFSVElBTF9BR0dSRUdBVEUgYjo6YmlnaW50KSwgdmFyX3NhbXAoUEFSVElBTF9BR0dSRUdB VEUgYjo6bnVtZXJpYyksIGFueV92YWx1ZSgoYiAqIDApKSwgYml0X2FuZChjX2JpdCksIGJpdF9h bmQoY18xb3IzaW50MiksIGJpdF9hbmQoY18xb3IzaW50NCksIGJpdF9hbmQoY18xb3IzaW50OCks IGJpdF9vcihjX2JpdCksIGJpdF9vcihjXzFvcjNpbnQyKSwgYml0X29yKGNfMW9yM2ludDQpLCBi aXRfb3IoY18xb3IzaW50OCksIGJpdF94b3IoY19iaXQpLCBiaXRfeG9yKGNfMW9yM2ludDIpLCBi aXRfeG9yKGNfMW9yM2ludDQpLCBiaXRfeG9yKGNfMW9yM2ludDgpLCBib29sX2FuZChjX2Jvb2wp LCBib29sX29yKGNfYm9vbCksIGNvdW50KGIpLCBjb3VudCgqKSwgZXZlcnkoY19ib29sKSwgbWF4 KGNfaW50NGFycmF5KSwgbWF4KGNfZW51bSksIG1heChjXzFjOjpjaGFyYWN0ZXIoMSkpLCBtYXgo KCcwMS0wMS0yMDAwJzo6ZGF0ZSArIGIpKSwgbWF4KCgnMC4wLjAuMCc6OmluZXQgKyBiKSksIG1h eChiOjpyZWFsKSwgbWF4KGI6OmRvdWJsZSBwcmVjaXNpb24pLCBtYXgoYjo6c21hbGxpbnQpLCBt YXgoYiksIG1heChiOjpiaWdpbnQpLCBtYXgoY19pbnRlcnZhbCksIG1heChjX21vbmV5KSwgbWF4 KGI6Om51bWVyaWMpLCBtYXgoYjo6b2lkKSwgbWF4KGNfcGdfbHNuKSwgbWF4KGNfdGlkKSwgbWF4 KGNfMWMpLCBtYXgoY190aW1lKSwgbWF4KGNfdGltZXR6KSwgbWF4KGNfdGltZXN0YW1wKSwgbWF4 KGNfdGltZXN0YW1wdHopLCBtYXgoY194aWQ4KSwgbWluKGNfaW50NGFycmF5KSwgbWluKGNfZW51 bSksIG1pbihjXzFjOjpjaGFyYWN0ZXIoMSkpLCBtaW4oKCcwMS0wMS0yMDAwJzo6ZGF0ZSArIGIp KSwgbWluKCgnMC4wLjAuMCc6OmluZXQgKyBiKSksIG1pbihiOjpyZWFsKSwgbWluKGI6OmRvdWJs ZSBwcmVjaXNpb24pLCBtaW4oYjo6c21hbGxpbnQpLCBtaW4oYiksIG1pbihiOjpiaWdpbnQpLCBt aW4oY19pbnRlcnZhbCksIG1pbihjX21vbmV5KSwgbWluKGI6Om51bWVyaWMpLCBtaW4oYjo6b2lk KSwgbWluKGNfcGdfbHNuKSwgbWluKGNfdGlkKSwgbWluKGNfMWMpLCBtaW4oY190aW1lKSwgbWlu KGNfdGltZXR6KSwgbWluKGNfdGltZXN0YW1wKSwgbWluKGNfdGltZXN0YW1wdHopLCBtaW4oY194 aWQ4KSwgcmFuZ2VfaW50ZXJzZWN0X2FnZyhjX2ludDRyYW5nZSksIHJhbmdlX2ludGVyc2VjdF9h Z2coY19pbnQ0bXVsdGlyYW5nZSksIHJlZ3JfY291bnQoKCgyICogYikgKyAzKTo6ZG91YmxlIHBy ZWNpc2lvbiwgYjo6ZG91YmxlIHByZWNpc2lvbiksIHN1bShiOjpyZWFsKSwgc3VtKGI6OmRvdWJs ZSBwcmVjaXNpb24pLCBzdW0oYjo6c21hbGxpbnQpLCBzdW0oYiksIHN1bShjX2ludGVydmFsKSwg c3VtKGNfbW9uZXkpIEZST00gcHVibGljLnBhZ2dfdGFiX3AyIFdIRVJFICgoY19zZXJpYWwgPj0g MSkpIEFORCAoKGNfc2VyaWFsIDw9IDMwKSkKKyAgICAgICAgICAgICAgIFJlbW90ZSBTUUw6IFNF TEVDVCBhcnJheV9hZ2coUEFSVElBTF9BR0dSRUdBVEUgY19pbnQ0YXJyYXkpLCBhcnJheV9hZ2co UEFSVElBTF9BR0dSRUdBVEUgYiksIGF2ZyhQQVJUSUFMX0FHR1JFR0FURSBiOjpzbWFsbGludCks IGF2ZyhQQVJUSUFMX0FHR1JFR0FURSBiKSwgYXZnKFBBUlRJQUxfQUdHUkVHQVRFIGI6OmJpZ2lu dCksIGF2ZyhQQVJUSUFMX0FHR1JFR0FURSBjX2ludGVydmFsKSwgYXZnKFBBUlRJQUxfQUdHUkVH QVRFIGI6OnJlYWwpLCBhdmcoUEFSVElBTF9BR0dSRUdBVEUgYjo6ZG91YmxlIHByZWNpc2lvbiks IGF2ZyhQQVJUSUFMX0FHR1JFR0FURSBiOjpudW1lcmljKSwgY29ycihQQVJUSUFMX0FHR1JFR0FU RSBiOjpkb3VibGUgcHJlY2lzaW9uLCAoYiAqIGIpOjpkb3VibGUgcHJlY2lzaW9uKSwgY292YXJf cG9wKFBBUlRJQUxfQUdHUkVHQVRFIGI6OmRvdWJsZSBwcmVjaXNpb24sIChiICogYik6OmRvdWJs ZSBwcmVjaXNpb24pLCBjb3Zhcl9zYW1wKFBBUlRJQUxfQUdHUkVHQVRFIGI6OmRvdWJsZSBwcmVj aXNpb24sIChiICogYik6OmRvdWJsZSBwcmVjaXNpb24pLCByZWdyX2F2Z3goUEFSVElBTF9BR0dS RUdBVEUgKDIgKiBiKTo6ZG91YmxlIHByZWNpc2lvbiwgYjo6ZG91YmxlIHByZWNpc2lvbiksIHJl Z3JfYXZneShQQVJUSUFMX0FHR1JFR0FURSAoMiAqIGIpOjpkb3VibGUgcHJlY2lzaW9uLCBiOjpk b3VibGUgcHJlY2lzaW9uKSwgcmVncl9pbnRlcmNlcHQoUEFSVElBTF9BR0dSRUdBVEUgKCgyICog YikgKyAzKTo6ZG91YmxlIHByZWNpc2lvbiwgYjo6ZG91YmxlIHByZWNpc2lvbiksIHJlZ3JfcjIo UEFSVElBTF9BR0dSRUdBVEUgKGIgKiBiKTo6ZG91YmxlIHByZWNpc2lvbiwgYjo6ZG91YmxlIHBy ZWNpc2lvbiksIHJlZ3Jfc2xvcGUoUEFSVElBTF9BR0dSRUdBVEUgKCgyICogYikgKyAzKTo6ZG91 YmxlIHByZWNpc2lvbiwgYjo6ZG91YmxlIHByZWNpc2lvbiksIHJlZ3Jfc3h4KFBBUlRJQUxfQUdH UkVHQVRFICgoMiAqIGIpICsgMyk6OmRvdWJsZSBwcmVjaXNpb24sIGI6OmRvdWJsZSBwcmVjaXNp b24pLCByZWdyX3N4eShQQVJUSUFMX0FHR1JFR0FURSAoYiAqIGIpOjpkb3VibGUgcHJlY2lzaW9u LCBiOjpkb3VibGUgcHJlY2lzaW9uKSwgcmVncl9zeXkoUEFSVElBTF9BR0dSRUdBVEUgKCgyICog YikgKyAzKTo6ZG91YmxlIHByZWNpc2lvbiwgYjo6ZG91YmxlIHByZWNpc2lvbiksIHN0ZGRldihQ QVJUSUFMX0FHR1JFR0FURSBiOjpyZWFsKSwgc3RkZGV2KFBBUlRJQUxfQUdHUkVHQVRFIGI6OmRv dWJsZSBwcmVjaXNpb24pLCBzdGRkZXYoUEFSVElBTF9BR0dSRUdBVEUgYjo6c21hbGxpbnQpLCBz dGRkZXYoUEFSVElBTF9BR0dSRUdBVEUgYiksIHN0ZGRldihQQVJUSUFMX0FHR1JFR0FURSBiOjpi aWdpbnQpLCBzdGRkZXYoUEFSVElBTF9BR0dSRUdBVEUgYjo6bnVtZXJpYyksIHN0ZGRldl9wb3Ao UEFSVElBTF9BR0dSRUdBVEUgYjo6cmVhbCksIHN0ZGRldl9wb3AoUEFSVElBTF9BR0dSRUdBVEUg Yjo6ZG91YmxlIHByZWNpc2lvbiksIHN0ZGRldl9wb3AoUEFSVElBTF9BR0dSRUdBVEUgYjo6c21h bGxpbnQpLCBzdGRkZXZfcG9wKFBBUlRJQUxfQUdHUkVHQVRFIGIpLCBzdGRkZXZfcG9wKFBBUlRJ QUxfQUdHUkVHQVRFIGI6OmJpZ2ludCksIHN0ZGRldl9wb3AoUEFSVElBTF9BR0dSRUdBVEUgYjo6 bnVtZXJpYyksIHN0ZGRldl9zYW1wKFBBUlRJQUxfQUdHUkVHQVRFIGI6OnJlYWwpLCBzdGRkZXZf c2FtcChQQVJUSUFMX0FHR1JFR0FURSBiOjpkb3VibGUgcHJlY2lzaW9uKSwgc3RkZGV2X3NhbXAo UEFSVElBTF9BR0dSRUdBVEUgYjo6c21hbGxpbnQpLCBzdGRkZXZfc2FtcChQQVJUSUFMX0FHR1JF R0FURSBiKSwgc3RkZGV2X3NhbXAoUEFSVElBTF9BR0dSRUdBVEUgYjo6YmlnaW50KSwgc3RkZGV2 X3NhbXAoUEFSVElBTF9BR0dSRUdBVEUgYjo6bnVtZXJpYyksIHN0cmluZ19hZ2coUEFSVElBTF9B R0dSRUdBVEUgY18xYywgJywnOjp0ZXh0KSwgc3RyaW5nX2FnZyhQQVJUSUFMX0FHR1JFR0FURSBj XzFiLCBFJ1xceDJjJzo6Ynl0ZWEpLCBzdW0oUEFSVElBTF9BR0dSRUdBVEUgYjo6YmlnaW50KSwg c3VtKFBBUlRJQUxfQUdHUkVHQVRFIGI6Om51bWVyaWMpLCB2YXJpYW5jZShQQVJUSUFMX0FHR1JF R0FURSBiOjpyZWFsKSwgdmFyaWFuY2UoUEFSVElBTF9BR0dSRUdBVEUgYjo6ZG91YmxlIHByZWNp c2lvbiksIHZhcmlhbmNlKFBBUlRJQUxfQUdHUkVHQVRFIGI6OnNtYWxsaW50KSwgdmFyaWFuY2Uo UEFSVElBTF9BR0dSRUdBVEUgYiksIHZhcmlhbmNlKFBBUlRJQUxfQUdHUkVHQVRFIGI6OmJpZ2lu dCksIHZhcmlhbmNlKFBBUlRJQUxfQUdHUkVHQVRFIGI6Om51bWVyaWMpLCB2YXJfcG9wKFBBUlRJ QUxfQUdHUkVHQVRFIGI6OnJlYWwpLCB2YXJfcG9wKFBBUlRJQUxfQUdHUkVHQVRFIGI6OmRvdWJs ZSBwcmVjaXNpb24pLCB2YXJfcG9wKFBBUlRJQUxfQUdHUkVHQVRFIGI6OnNtYWxsaW50KSwgdmFy X3BvcChQQVJUSUFMX0FHR1JFR0FURSBiKSwgdmFyX3BvcChQQVJUSUFMX0FHR1JFR0FURSBiOjpi aWdpbnQpLCB2YXJfcG9wKFBBUlRJQUxfQUdHUkVHQVRFIGI6Om51bWVyaWMpLCB2YXJfc2FtcChQ QVJUSUFMX0FHR1JFR0FURSBiOjpyZWFsKSwgdmFyX3NhbXAoUEFSVElBTF9BR0dSRUdBVEUgYjo6 ZG91YmxlIHByZWNpc2lvbiksIHZhcl9zYW1wKFBBUlRJQUxfQUdHUkVHQVRFIGI6OnNtYWxsaW50 KSwgdmFyX3NhbXAoUEFSVElBTF9BR0dSRUdBVEUgYiksIHZhcl9zYW1wKFBBUlRJQUxfQUdHUkVH QVRFIGI6OmJpZ2ludCksIHZhcl9zYW1wKFBBUlRJQUxfQUdHUkVHQVRFIGI6Om51bWVyaWMpLCBh bnlfdmFsdWUoKGIgKiAwKSksIGJpdF9hbmQoY19iaXQpLCBiaXRfYW5kKGNfMW9yM2ludDIpLCBi aXRfYW5kKGNfMW9yM2ludDQpLCBiaXRfYW5kKGNfMW9yM2ludDgpLCBiaXRfb3IoY19iaXQpLCBi aXRfb3IoY18xb3IzaW50MiksIGJpdF9vcihjXzFvcjNpbnQ0KSwgYml0X29yKGNfMW9yM2ludDgp LCBiaXRfeG9yKGNfYml0KSwgYml0X3hvcihjXzFvcjNpbnQyKSwgYml0X3hvcihjXzFvcjNpbnQ0 KSwgYml0X3hvcihjXzFvcjNpbnQ4KSwgYm9vbF9hbmQoY19ib29sKSwgYm9vbF9vcihjX2Jvb2wp LCBjb3VudChiKSwgY291bnQoKiksIGV2ZXJ5KGNfYm9vbCksIG1heChjX2ludDRhcnJheSksIG1h eChjX2VudW0pLCBtYXgoY18xYzo6Y2hhcmFjdGVyKDEpKSwgbWF4KCgnMDEtMDEtMjAwMCc6OmRh dGUgKyBiKSksIG1heCgoJzAuMC4wLjAnOjppbmV0ICsgYikpLCBtYXgoYjo6cmVhbCksIG1heChi Ojpkb3VibGUgcHJlY2lzaW9uKSwgbWF4KGI6OnNtYWxsaW50KSwgbWF4KGIpLCBtYXgoYjo6Ymln aW50KSwgbWF4KGNfaW50ZXJ2YWwpLCBtYXgoY19tb25leSksIG1heChiOjpudW1lcmljKSwgbWF4 KGI6Om9pZCksIG1heChjX3BnX2xzbiksIG1heChjX3RpZCksIG1heChjXzFjKSwgbWF4KGNfdGlt ZSksIG1heChjX3RpbWV0eiksIG1heChjX3RpbWVzdGFtcCksIG1heChjX3RpbWVzdGFtcHR6KSwg bWF4KGNfeGlkOCksIG1pbihjX2ludDRhcnJheSksIG1pbihjX2VudW0pLCBtaW4oY18xYzo6Y2hh cmFjdGVyKDEpKSwgbWluKCgnMDEtMDEtMjAwMCc6OmRhdGUgKyBiKSksIG1pbigoJzAuMC4wLjAn OjppbmV0ICsgYikpLCBtaW4oYjo6cmVhbCksIG1pbihiOjpkb3VibGUgcHJlY2lzaW9uKSwgbWlu KGI6OnNtYWxsaW50KSwgbWluKGIpLCBtaW4oYjo6YmlnaW50KSwgbWluKGNfaW50ZXJ2YWwpLCBt aW4oY19tb25leSksIG1pbihiOjpudW1lcmljKSwgbWluKGI6Om9pZCksIG1pbihjX3BnX2xzbiks IG1pbihjX3RpZCksIG1pbihjXzFjKSwgbWluKGNfdGltZSksIG1pbihjX3RpbWV0eiksIG1pbihj X3RpbWVzdGFtcCksIG1pbihjX3RpbWVzdGFtcHR6KSwgbWluKGNfeGlkOCksIHJhbmdlX2ludGVy c2VjdF9hZ2coY19pbnQ0cmFuZ2UpLCByYW5nZV9pbnRlcnNlY3RfYWdnKGNfaW50NG11bHRpcmFu Z2UpLCByZWdyX2NvdW50KCgoMiAqIGIpICsgMyk6OmRvdWJsZSBwcmVjaXNpb24sIGI6OmRvdWJs ZSBwcmVjaXNpb24pLCBzdW0oYjo6cmVhbCksIHN1bShiOjpkb3VibGUgcHJlY2lzaW9uKSwgc3Vt KGI6OnNtYWxsaW50KSwgc3VtKGIpLCBzdW0oUEFSVElBTF9BR0dSRUdBVEUgY19pbnRlcnZhbCks IHN1bShjX21vbmV5KSBGUk9NIHB1YmxpYy5wYWdnX3RhYl9wMiBXSEVSRSAoKGNfc2VyaWFsID49 IDEpKSBBTkQgKChjX3NlcmlhbCA8PSAzMCkpCiAgICAgICAgICAtPiAgRm9yZWlnbiBTY2FuCiAg ICAgICAgICAgICAgICBPdXRwdXQ6IChQQVJUSUFMIGFycmF5X2FnZyhwYWdnX3RhYl8yLmNfaW50 NGFycmF5KSksIChQQVJUSUFMIGFycmF5X2FnZyhwYWdnX3RhYl8yLmIpKSwgKFBBUlRJQUwgYXZn KChwYWdnX3RhYl8yLmIpOjpzbWFsbGludCkpLCAoUEFSVElBTCBhdmcocGFnZ190YWJfMi5iKSks IChQQVJUSUFMIGF2ZygocGFnZ190YWJfMi5iKTo6YmlnaW50KSksIChQQVJUSUFMIGF2ZyhwYWdn X3RhYl8yLmNfaW50ZXJ2YWwpKSwgKFBBUlRJQUwgYXZnKChwYWdnX3RhYl8yLmIpOjpyZWFsKSks IChQQVJUSUFMIGF2ZygocGFnZ190YWJfMi5iKTo6ZG91YmxlIHByZWNpc2lvbikpLCAoUEFSVElB TCBhdmcoKHBhZ2dfdGFiXzIuYik6Om51bWVyaWMpKSwgKFBBUlRJQUwgY29ycigocGFnZ190YWJf Mi5iKTo6ZG91YmxlIHByZWNpc2lvbiwgKChwYWdnX3RhYl8yLmIgKiBwYWdnX3RhYl8yLmIpKTo6 ZG91YmxlIHByZWNpc2lvbikpLCAoUEFSVElBTCBjb3Zhcl9wb3AoKHBhZ2dfdGFiXzIuYik6OmRv dWJsZSBwcmVjaXNpb24sICgocGFnZ190YWJfMi5iICogcGFnZ190YWJfMi5iKSk6OmRvdWJsZSBw cmVjaXNpb24pKSwgKFBBUlRJQUwgY292YXJfc2FtcCgocGFnZ190YWJfMi5iKTo6ZG91YmxlIHBy ZWNpc2lvbiwgKChwYWdnX3RhYl8yLmIgKiBwYWdnX3RhYl8yLmIpKTo6ZG91YmxlIHByZWNpc2lv bikpLCAoUEFSVElBTCByZWdyX2F2Z3goKCgyICogcGFnZ190YWJfMi5iKSk6OmRvdWJsZSBwcmVj aXNpb24sIChwYWdnX3RhYl8yLmIpOjpkb3VibGUgcHJlY2lzaW9uKSksIChQQVJUSUFMIHJlZ3Jf YXZneSgoKDIgKiBwYWdnX3RhYl8yLmIpKTo6ZG91YmxlIHByZWNpc2lvbiwgKHBhZ2dfdGFiXzIu Yik6OmRvdWJsZSBwcmVjaXNpb24pKSwgKFBBUlRJQUwgcmVncl9pbnRlcmNlcHQoKCgoMiAqIHBh Z2dfdGFiXzIuYikgKyAzKSk6OmRvdWJsZSBwcmVjaXNpb24sIChwYWdnX3RhYl8yLmIpOjpkb3Vi bGUgcHJlY2lzaW9uKSksIChQQVJUSUFMIHJlZ3JfcjIoKChwYWdnX3RhYl8yLmIgKiBwYWdnX3Rh Yl8yLmIpKTo6ZG91YmxlIHByZWNpc2lvbiwgKHBhZ2dfdGFiXzIuYik6OmRvdWJsZSBwcmVjaXNp b24pKSwgKFBBUlRJQUwgcmVncl9zbG9wZSgoKCgyICogcGFnZ190YWJfMi5iKSArIDMpKTo6ZG91 YmxlIHByZWNpc2lvbiwgKHBhZ2dfdGFiXzIuYik6OmRvdWJsZSBwcmVjaXNpb24pKSwgKFBBUlRJ QUwgcmVncl9zeHgoKCgoMiAqIHBhZ2dfdGFiXzIuYikgKyAzKSk6OmRvdWJsZSBwcmVjaXNpb24s IChwYWdnX3RhYl8yLmIpOjpkb3VibGUgcHJlY2lzaW9uKSksIChQQVJUSUFMIHJlZ3Jfc3h5KCgo cGFnZ190YWJfMi5iICogcGFnZ190YWJfMi5iKSk6OmRvdWJsZSBwcmVjaXNpb24sIChwYWdnX3Rh Yl8yLmIpOjpkb3VibGUgcHJlY2lzaW9uKSksIChQQVJUSUFMIHJlZ3Jfc3l5KCgoKDIgKiBwYWdn X3RhYl8yLmIpICsgMykpOjpkb3VibGUgcHJlY2lzaW9uLCAocGFnZ190YWJfMi5iKTo6ZG91Ymxl IHByZWNpc2lvbikpLCAoUEFSVElBTCBzdGRkZXYoKHBhZ2dfdGFiXzIuYik6OnJlYWwpKSwgKFBB UlRJQUwgc3RkZGV2KChwYWdnX3RhYl8yLmIpOjpkb3VibGUgcHJlY2lzaW9uKSksIChQQVJUSUFM IHN0ZGRldigocGFnZ190YWJfMi5iKTo6c21hbGxpbnQpKSwgKFBBUlRJQUwgc3RkZGV2KHBhZ2df dGFiXzIuYikpLCAoUEFSVElBTCBzdGRkZXYoKHBhZ2dfdGFiXzIuYik6OmJpZ2ludCkpLCAoUEFS VElBTCBzdGRkZXYoKHBhZ2dfdGFiXzIuYik6Om51bWVyaWMpKSwgKFBBUlRJQUwgc3RkZGV2X3Bv cCgocGFnZ190YWJfMi5iKTo6cmVhbCkpLCAoUEFSVElBTCBzdGRkZXZfcG9wKChwYWdnX3RhYl8y LmIpOjpkb3VibGUgcHJlY2lzaW9uKSksIChQQVJUSUFMIHN0ZGRldl9wb3AoKHBhZ2dfdGFiXzIu Yik6OnNtYWxsaW50KSksIChQQVJUSUFMIHN0ZGRldl9wb3AocGFnZ190YWJfMi5iKSksIChQQVJU SUFMIHN0ZGRldl9wb3AoKHBhZ2dfdGFiXzIuYik6OmJpZ2ludCkpLCAoUEFSVElBTCBzdGRkZXZf cG9wKChwYWdnX3RhYl8yLmIpOjpudW1lcmljKSksIChQQVJUSUFMIHN0ZGRldl9zYW1wKChwYWdn X3RhYl8yLmIpOjpyZWFsKSksIChQQVJUSUFMIHN0ZGRldl9zYW1wKChwYWdnX3RhYl8yLmIpOjpk b3VibGUgcHJlY2lzaW9uKSksIChQQVJUSUFMIHN0ZGRldl9zYW1wKChwYWdnX3RhYl8yLmIpOjpz bWFsbGludCkpLCAoUEFSVElBTCBzdGRkZXZfc2FtcChwYWdnX3RhYl8yLmIpKSwgKFBBUlRJQUwg c3RkZGV2X3NhbXAoKHBhZ2dfdGFiXzIuYik6OmJpZ2ludCkpLCAoUEFSVElBTCBzdGRkZXZfc2Ft cCgocGFnZ190YWJfMi5iKTo6bnVtZXJpYykpLCAoUEFSVElBTCBzdHJpbmdfYWdnKHBhZ2dfdGFi XzIuY18xYywgJywnOjp0ZXh0KSksIChQQVJUSUFMIHN0cmluZ19hZ2cocGFnZ190YWJfMi5jXzFi LCAnXHgyYyc6OmJ5dGVhKSksIChQQVJUSUFMIHN1bSgocGFnZ190YWJfMi5iKTo6YmlnaW50KSks IChQQVJUSUFMIHN1bSgocGFnZ190YWJfMi5iKTo6bnVtZXJpYykpLCAoUEFSVElBTCB2YXJpYW5j ZSgocGFnZ190YWJfMi5iKTo6cmVhbCkpLCAoUEFSVElBTCB2YXJpYW5jZSgocGFnZ190YWJfMi5i KTo6ZG91YmxlIHByZWNpc2lvbikpLCAoUEFSVElBTCB2YXJpYW5jZSgocGFnZ190YWJfMi5iKTo6 c21hbGxpbnQpKSwgKFBBUlRJQUwgdmFyaWFuY2UocGFnZ190YWJfMi5iKSksIChQQVJUSUFMIHZh cmlhbmNlKChwYWdnX3RhYl8yLmIpOjpiaWdpbnQpKSwgKFBBUlRJQUwgdmFyaWFuY2UoKHBhZ2df dGFiXzIuYik6Om51bWVyaWMpKSwgKFBBUlRJQUwgdmFyX3BvcCgocGFnZ190YWJfMi5iKTo6cmVh bCkpLCAoUEFSVElBTCB2YXJfcG9wKChwYWdnX3RhYl8yLmIpOjpkb3VibGUgcHJlY2lzaW9uKSks IChQQVJUSUFMIHZhcl9wb3AoKHBhZ2dfdGFiXzIuYik6OnNtYWxsaW50KSksIChQQVJUSUFMIHZh cl9wb3AocGFnZ190YWJfMi5iKSksIChQQVJUSUFMIHZhcl9wb3AoKHBhZ2dfdGFiXzIuYik6OmJp Z2ludCkpLCAoUEFSVElBTCB2YXJfcG9wKChwYWdnX3RhYl8yLmIpOjpudW1lcmljKSksIChQQVJU SUFMIHZhcl9zYW1wKChwYWdnX3RhYl8yLmIpOjpyZWFsKSksIChQQVJUSUFMIHZhcl9zYW1wKChw YWdnX3RhYl8yLmIpOjpkb3VibGUgcHJlY2lzaW9uKSksIChQQVJUSUFMIHZhcl9zYW1wKChwYWdn X3RhYl8yLmIpOjpzbWFsbGludCkpLCAoUEFSVElBTCB2YXJfc2FtcChwYWdnX3RhYl8yLmIpKSwg KFBBUlRJQUwgdmFyX3NhbXAoKHBhZ2dfdGFiXzIuYik6OmJpZ2ludCkpLCAoUEFSVElBTCB2YXJf c2FtcCgocGFnZ190YWJfMi5iKTo6bnVtZXJpYykpLCAoUEFSVElBTCBhbnlfdmFsdWUoKHBhZ2df dGFiXzIuYiAqIDApKSksIChQQVJUSUFMIGJpdF9hbmQocGFnZ190YWJfMi5jX2JpdCkpLCAoUEFS VElBTCBiaXRfYW5kKHBhZ2dfdGFiXzIuY18xb3IzaW50MikpLCAoUEFSVElBTCBiaXRfYW5kKHBh Z2dfdGFiXzIuY18xb3IzaW50NCkpLCAoUEFSVElBTCBiaXRfYW5kKHBhZ2dfdGFiXzIuY18xb3Iz aW50OCkpLCAoUEFSVElBTCBiaXRfb3IocGFnZ190YWJfMi5jX2JpdCkpLCAoUEFSVElBTCBiaXRf b3IocGFnZ190YWJfMi5jXzFvcjNpbnQyKSksIChQQVJUSUFMIGJpdF9vcihwYWdnX3RhYl8yLmNf MW9yM2ludDQpKSwgKFBBUlRJQUwgYml0X29yKHBhZ2dfdGFiXzIuY18xb3IzaW50OCkpLCAoUEFS VElBTCBiaXRfeG9yKHBhZ2dfdGFiXzIuY19iaXQpKSwgKFBBUlRJQUwgYml0X3hvcihwYWdnX3Rh Yl8yLmNfMW9yM2ludDIpKSwgKFBBUlRJQUwgYml0X3hvcihwYWdnX3RhYl8yLmNfMW9yM2ludDQp KSwgKFBBUlRJQUwgYml0X3hvcihwYWdnX3RhYl8yLmNfMW9yM2ludDgpKSwgKFBBUlRJQUwgYm9v bF9hbmQocGFnZ190YWJfMi5jX2Jvb2wpKSwgKFBBUlRJQUwgYm9vbF9vcihwYWdnX3RhYl8yLmNf Ym9vbCkpLCAoUEFSVElBTCBjb3VudChwYWdnX3RhYl8yLmIpKSwgKFBBUlRJQUwgY291bnQoKikp LCAoUEFSVElBTCBldmVyeShwYWdnX3RhYl8yLmNfYm9vbCkpLCAoUEFSVElBTCBtYXgocGFnZ190 YWJfMi5jX2ludDRhcnJheSkpLCAoUEFSVElBTCBtYXgocGFnZ190YWJfMi5jX2VudW0pKSwgKFBB UlRJQUwgbWF4KChwYWdnX3RhYl8yLmNfMWMpOjpjaGFyYWN0ZXIoMSkpKSwgKFBBUlRJQUwgbWF4 KCgnMDEtMDEtMjAwMCc6OmRhdGUgKyBwYWdnX3RhYl8yLmIpKSksIChQQVJUSUFMIG1heCgoJzAu MC4wLjAnOjppbmV0ICsgKHBhZ2dfdGFiXzIuYik6OmJpZ2ludCkpKSwgKFBBUlRJQUwgbWF4KChw YWdnX3RhYl8yLmIpOjpyZWFsKSksIChQQVJUSUFMIG1heCgocGFnZ190YWJfMi5iKTo6ZG91Ymxl IHByZWNpc2lvbikpLCAoUEFSVElBTCBtYXgoKHBhZ2dfdGFiXzIuYik6OnNtYWxsaW50KSksIChQ QVJUSUFMIG1heChwYWdnX3RhYl8yLmIpKSwgKFBBUlRJQUwgbWF4KChwYWdnX3RhYl8yLmIpOjpi aWdpbnQpKSwgKFBBUlRJQUwgbWF4KHBhZ2dfdGFiXzIuY19pbnRlcnZhbCkpLCAoUEFSVElBTCBt YXgocGFnZ190YWJfMi5jX21vbmV5KSksIChQQVJUSUFMIG1heCgocGFnZ190YWJfMi5iKTo6bnVt ZXJpYykpLCAoUEFSVElBTCBtYXgoKHBhZ2dfdGFiXzIuYik6Om9pZCkpLCAoUEFSVElBTCBtYXgo cGFnZ190YWJfMi5jX3BnX2xzbikpLCAoUEFSVElBTCBtYXgocGFnZ190YWJfMi5jX3RpZCkpLCAo UEFSVElBTCBtYXgocGFnZ190YWJfMi5jXzFjKSksIChQQVJUSUFMIG1heChwYWdnX3RhYl8yLmNf dGltZSkpLCAoUEFSVElBTCBtYXgocGFnZ190YWJfMi5jX3RpbWV0eikpLCAoUEFSVElBTCBtYXgo cGFnZ190YWJfMi5jX3RpbWVzdGFtcCkpLCAoUEFSVElBTCBtYXgocGFnZ190YWJfMi5jX3RpbWVz dGFtcHR6KSksIChQQVJUSUFMIG1heChwYWdnX3RhYl8yLmNfeGlkOCkpLCAoUEFSVElBTCBtaW4o cGFnZ190YWJfMi5jX2ludDRhcnJheSkpLCAoUEFSVElBTCBtaW4ocGFnZ190YWJfMi5jX2VudW0p KSwgKFBBUlRJQUwgbWluKChwYWdnX3RhYl8yLmNfMWMpOjpjaGFyYWN0ZXIoMSkpKSwgKFBBUlRJ QUwgbWluKCgnMDEtMDEtMjAwMCc6OmRhdGUgKyBwYWdnX3RhYl8yLmIpKSksIChQQVJUSUFMIG1p bigoJzAuMC4wLjAnOjppbmV0ICsgKHBhZ2dfdGFiXzIuYik6OmJpZ2ludCkpKSwgKFBBUlRJQUwg bWluKChwYWdnX3RhYl8yLmIpOjpyZWFsKSksIChQQVJUSUFMIG1pbigocGFnZ190YWJfMi5iKTo6 ZG91YmxlIHByZWNpc2lvbikpLCAoUEFSVElBTCBtaW4oKHBhZ2dfdGFiXzIuYik6OnNtYWxsaW50 KSksIChQQVJUSUFMIG1pbihwYWdnX3RhYl8yLmIpKSwgKFBBUlRJQUwgbWluKChwYWdnX3RhYl8y LmIpOjpiaWdpbnQpKSwgKFBBUlRJQUwgbWluKHBhZ2dfdGFiXzIuY19pbnRlcnZhbCkpLCAoUEFS VElBTCBtaW4ocGFnZ190YWJfMi5jX21vbmV5KSksIChQQVJUSUFMIG1pbigocGFnZ190YWJfMi5i KTo6bnVtZXJpYykpLCAoUEFSVElBTCBtaW4oKHBhZ2dfdGFiXzIuYik6Om9pZCkpLCAoUEFSVElB TCBtaW4ocGFnZ190YWJfMi5jX3BnX2xzbikpLCAoUEFSVElBTCBtaW4ocGFnZ190YWJfMi5jX3Rp ZCkpLCAoUEFSVElBTCBtaW4ocGFnZ190YWJfMi5jXzFjKSksIChQQVJUSUFMIG1pbihwYWdnX3Rh Yl8yLmNfdGltZSkpLCAoUEFSVElBTCBtaW4ocGFnZ190YWJfMi5jX3RpbWV0eikpLCAoUEFSVElB TCBtaW4ocGFnZ190YWJfMi5jX3RpbWVzdGFtcCkpLCAoUEFSVElBTCBtaW4ocGFnZ190YWJfMi5j X3RpbWVzdGFtcHR6KSksIChQQVJUSUFMIG1pbihwYWdnX3RhYl8yLmNfeGlkOCkpLCAoUEFSVElB TCByYW5nZV9pbnRlcnNlY3RfYWdnKHBhZ2dfdGFiXzIuY19pbnQ0cmFuZ2UpKSwgKFBBUlRJQUwg cmFuZ2VfaW50ZXJzZWN0X2FnZyhwYWdnX3RhYl8yLmNfaW50NG11bHRpcmFuZ2UpKSwgKFBBUlRJ QUwgcmVncl9jb3VudCgoKCgyICogcGFnZ190YWJfMi5iKSArIDMpKTo6ZG91YmxlIHByZWNpc2lv biwgKHBhZ2dfdGFiXzIuYik6OmRvdWJsZSBwcmVjaXNpb24pKSwgKFBBUlRJQUwgc3VtKChwYWdn X3RhYl8yLmIpOjpyZWFsKSksIChQQVJUSUFMIHN1bSgocGFnZ190YWJfMi5iKTo6ZG91YmxlIHBy ZWNpc2lvbikpLCAoUEFSVElBTCBzdW0oKHBhZ2dfdGFiXzIuYik6OnNtYWxsaW50KSksIChQQVJU SUFMIHN1bShwYWdnX3RhYl8yLmIpKSwgKFBBUlRJQUwgc3VtKHBhZ2dfdGFiXzIuY19pbnRlcnZh bCkpLCAoUEFSVElBTCBzdW0ocGFnZ190YWJfMi5jX21vbmV5KSkKICAgICAgICAgICAgICAgIFJl bGF0aW9uczogQWdncmVnYXRlIG9uIChwdWJsaWMuZnBhZ2dfdGFiX3AzIHBhZ2dfdGFiXzIpCi0g ICAgICAgICAgICAgICBSZW1vdGUgU1FMOiBTRUxFQ1QgYXJyYXlfYWdnKFBBUlRJQUxfQUdHUkVH QVRFIGNfaW50NGFycmF5KSwgYXJyYXlfYWdnKFBBUlRJQUxfQUdHUkVHQVRFIGIpLCBhdmcoUEFS VElBTF9BR0dSRUdBVEUgYjo6c21hbGxpbnQpLCBhdmcoUEFSVElBTF9BR0dSRUdBVEUgYiksIGF2 ZyhQQVJUSUFMX0FHR1JFR0FURSBiOjpiaWdpbnQpLCBhdmcoUEFSVElBTF9BR0dSRUdBVEUgY19p bnRlcnZhbCksIGF2ZyhQQVJUSUFMX0FHR1JFR0FURSBiOjpyZWFsKSwgYXZnKFBBUlRJQUxfQUdH UkVHQVRFIGI6OmRvdWJsZSBwcmVjaXNpb24pLCBhdmcoUEFSVElBTF9BR0dSRUdBVEUgYjo6bnVt ZXJpYyksIGNvcnIoUEFSVElBTF9BR0dSRUdBVEUgYjo6ZG91YmxlIHByZWNpc2lvbiwgKGIgKiBi KTo6ZG91YmxlIHByZWNpc2lvbiksIGNvdmFyX3BvcChQQVJUSUFMX0FHR1JFR0FURSBiOjpkb3Vi bGUgcHJlY2lzaW9uLCAoYiAqIGIpOjpkb3VibGUgcHJlY2lzaW9uKSwgY292YXJfc2FtcChQQVJU SUFMX0FHR1JFR0FURSBiOjpkb3VibGUgcHJlY2lzaW9uLCAoYiAqIGIpOjpkb3VibGUgcHJlY2lz aW9uKSwgcmVncl9hdmd4KFBBUlRJQUxfQUdHUkVHQVRFICgyICogYik6OmRvdWJsZSBwcmVjaXNp b24sIGI6OmRvdWJsZSBwcmVjaXNpb24pLCByZWdyX2F2Z3koUEFSVElBTF9BR0dSRUdBVEUgKDIg KiBiKTo6ZG91YmxlIHByZWNpc2lvbiwgYjo6ZG91YmxlIHByZWNpc2lvbiksIHJlZ3JfaW50ZXJj ZXB0KFBBUlRJQUxfQUdHUkVHQVRFICgoMiAqIGIpICsgMyk6OmRvdWJsZSBwcmVjaXNpb24sIGI6 OmRvdWJsZSBwcmVjaXNpb24pLCByZWdyX3IyKFBBUlRJQUxfQUdHUkVHQVRFIChiICogYik6OmRv dWJsZSBwcmVjaXNpb24sIGI6OmRvdWJsZSBwcmVjaXNpb24pLCByZWdyX3Nsb3BlKFBBUlRJQUxf QUdHUkVHQVRFICgoMiAqIGIpICsgMyk6OmRvdWJsZSBwcmVjaXNpb24sIGI6OmRvdWJsZSBwcmVj aXNpb24pLCByZWdyX3N4eChQQVJUSUFMX0FHR1JFR0FURSAoKDIgKiBiKSArIDMpOjpkb3VibGUg cHJlY2lzaW9uLCBiOjpkb3VibGUgcHJlY2lzaW9uKSwgcmVncl9zeHkoUEFSVElBTF9BR0dSRUdB VEUgKGIgKiBiKTo6ZG91YmxlIHByZWNpc2lvbiwgYjo6ZG91YmxlIHByZWNpc2lvbiksIHJlZ3Jf c3l5KFBBUlRJQUxfQUdHUkVHQVRFICgoMiAqIGIpICsgMyk6OmRvdWJsZSBwcmVjaXNpb24sIGI6 OmRvdWJsZSBwcmVjaXNpb24pLCBzdGRkZXYoUEFSVElBTF9BR0dSRUdBVEUgYjo6cmVhbCksIHN0 ZGRldihQQVJUSUFMX0FHR1JFR0FURSBiOjpkb3VibGUgcHJlY2lzaW9uKSwgc3RkZGV2KFBBUlRJ QUxfQUdHUkVHQVRFIGI6OnNtYWxsaW50KSwgc3RkZGV2KFBBUlRJQUxfQUdHUkVHQVRFIGIpLCBz dGRkZXYoUEFSVElBTF9BR0dSRUdBVEUgYjo6YmlnaW50KSwgc3RkZGV2KFBBUlRJQUxfQUdHUkVH QVRFIGI6Om51bWVyaWMpLCBzdGRkZXZfcG9wKFBBUlRJQUxfQUdHUkVHQVRFIGI6OnJlYWwpLCBz dGRkZXZfcG9wKFBBUlRJQUxfQUdHUkVHQVRFIGI6OmRvdWJsZSBwcmVjaXNpb24pLCBzdGRkZXZf cG9wKFBBUlRJQUxfQUdHUkVHQVRFIGI6OnNtYWxsaW50KSwgc3RkZGV2X3BvcChQQVJUSUFMX0FH R1JFR0FURSBiKSwgc3RkZGV2X3BvcChQQVJUSUFMX0FHR1JFR0FURSBiOjpiaWdpbnQpLCBzdGRk ZXZfcG9wKFBBUlRJQUxfQUdHUkVHQVRFIGI6Om51bWVyaWMpLCBzdGRkZXZfc2FtcChQQVJUSUFM X0FHR1JFR0FURSBiOjpyZWFsKSwgc3RkZGV2X3NhbXAoUEFSVElBTF9BR0dSRUdBVEUgYjo6ZG91 YmxlIHByZWNpc2lvbiksIHN0ZGRldl9zYW1wKFBBUlRJQUxfQUdHUkVHQVRFIGI6OnNtYWxsaW50 KSwgc3RkZGV2X3NhbXAoUEFSVElBTF9BR0dSRUdBVEUgYiksIHN0ZGRldl9zYW1wKFBBUlRJQUxf QUdHUkVHQVRFIGI6OmJpZ2ludCksIHN0ZGRldl9zYW1wKFBBUlRJQUxfQUdHUkVHQVRFIGI6Om51 bWVyaWMpLCBzdHJpbmdfYWdnKFBBUlRJQUxfQUdHUkVHQVRFIGNfMWMsICcsJzo6dGV4dCksIHN0 cmluZ19hZ2coUEFSVElBTF9BR0dSRUdBVEUgY18xYiwgRSdcXHgyYyc6OmJ5dGVhKSwgc3VtKFBB UlRJQUxfQUdHUkVHQVRFIGI6OmJpZ2ludCksIHN1bShQQVJUSUFMX0FHR1JFR0FURSBiOjpudW1l cmljKSwgdmFyaWFuY2UoUEFSVElBTF9BR0dSRUdBVEUgYjo6cmVhbCksIHZhcmlhbmNlKFBBUlRJ QUxfQUdHUkVHQVRFIGI6OmRvdWJsZSBwcmVjaXNpb24pLCB2YXJpYW5jZShQQVJUSUFMX0FHR1JF R0FURSBiOjpzbWFsbGludCksIHZhcmlhbmNlKFBBUlRJQUxfQUdHUkVHQVRFIGIpLCB2YXJpYW5j ZShQQVJUSUFMX0FHR1JFR0FURSBiOjpiaWdpbnQpLCB2YXJpYW5jZShQQVJUSUFMX0FHR1JFR0FU RSBiOjpudW1lcmljKSwgdmFyX3BvcChQQVJUSUFMX0FHR1JFR0FURSBiOjpyZWFsKSwgdmFyX3Bv cChQQVJUSUFMX0FHR1JFR0FURSBiOjpkb3VibGUgcHJlY2lzaW9uKSwgdmFyX3BvcChQQVJUSUFM X0FHR1JFR0FURSBiOjpzbWFsbGludCksIHZhcl9wb3AoUEFSVElBTF9BR0dSRUdBVEUgYiksIHZh cl9wb3AoUEFSVElBTF9BR0dSRUdBVEUgYjo6YmlnaW50KSwgdmFyX3BvcChQQVJUSUFMX0FHR1JF R0FURSBiOjpudW1lcmljKSwgdmFyX3NhbXAoUEFSVElBTF9BR0dSRUdBVEUgYjo6cmVhbCksIHZh cl9zYW1wKFBBUlRJQUxfQUdHUkVHQVRFIGI6OmRvdWJsZSBwcmVjaXNpb24pLCB2YXJfc2FtcChQ QVJUSUFMX0FHR1JFR0FURSBiOjpzbWFsbGludCksIHZhcl9zYW1wKFBBUlRJQUxfQUdHUkVHQVRF IGIpLCB2YXJfc2FtcChQQVJUSUFMX0FHR1JFR0FURSBiOjpiaWdpbnQpLCB2YXJfc2FtcChQQVJU SUFMX0FHR1JFR0FURSBiOjpudW1lcmljKSwgYW55X3ZhbHVlKChiICogMCkpLCBiaXRfYW5kKGNf Yml0KSwgYml0X2FuZChjXzFvcjNpbnQyKSwgYml0X2FuZChjXzFvcjNpbnQ0KSwgYml0X2FuZChj XzFvcjNpbnQ4KSwgYml0X29yKGNfYml0KSwgYml0X29yKGNfMW9yM2ludDIpLCBiaXRfb3IoY18x b3IzaW50NCksIGJpdF9vcihjXzFvcjNpbnQ4KSwgYml0X3hvcihjX2JpdCksIGJpdF94b3IoY18x b3IzaW50MiksIGJpdF94b3IoY18xb3IzaW50NCksIGJpdF94b3IoY18xb3IzaW50OCksIGJvb2xf YW5kKGNfYm9vbCksIGJvb2xfb3IoY19ib29sKSwgY291bnQoYiksIGNvdW50KCopLCBldmVyeShj X2Jvb2wpLCBtYXgoY19pbnQ0YXJyYXkpLCBtYXgoY19lbnVtKSwgbWF4KGNfMWM6OmNoYXJhY3Rl cigxKSksIG1heCgoJzAxLTAxLTIwMDAnOjpkYXRlICsgYikpLCBtYXgoKCcwLjAuMC4wJzo6aW5l dCArIGIpKSwgbWF4KGI6OnJlYWwpLCBtYXgoYjo6ZG91YmxlIHByZWNpc2lvbiksIG1heChiOjpz bWFsbGludCksIG1heChiKSwgbWF4KGI6OmJpZ2ludCksIG1heChjX2ludGVydmFsKSwgbWF4KGNf bW9uZXkpLCBtYXgoYjo6bnVtZXJpYyksIG1heChiOjpvaWQpLCBtYXgoY19wZ19sc24pLCBtYXgo Y190aWQpLCBtYXgoY18xYyksIG1heChjX3RpbWUpLCBtYXgoY190aW1ldHopLCBtYXgoY190aW1l c3RhbXApLCBtYXgoY190aW1lc3RhbXB0eiksIG1heChjX3hpZDgpLCBtaW4oY19pbnQ0YXJyYXkp LCBtaW4oY19lbnVtKSwgbWluKGNfMWM6OmNoYXJhY3RlcigxKSksIG1pbigoJzAxLTAxLTIwMDAn OjpkYXRlICsgYikpLCBtaW4oKCcwLjAuMC4wJzo6aW5ldCArIGIpKSwgbWluKGI6OnJlYWwpLCBt aW4oYjo6ZG91YmxlIHByZWNpc2lvbiksIG1pbihiOjpzbWFsbGludCksIG1pbihiKSwgbWluKGI6 OmJpZ2ludCksIG1pbihjX2ludGVydmFsKSwgbWluKGNfbW9uZXkpLCBtaW4oYjo6bnVtZXJpYyks IG1pbihiOjpvaWQpLCBtaW4oY19wZ19sc24pLCBtaW4oY190aWQpLCBtaW4oY18xYyksIG1pbihj X3RpbWUpLCBtaW4oY190aW1ldHopLCBtaW4oY190aW1lc3RhbXApLCBtaW4oY190aW1lc3RhbXB0 eiksIG1pbihjX3hpZDgpLCByYW5nZV9pbnRlcnNlY3RfYWdnKGNfaW50NHJhbmdlKSwgcmFuZ2Vf aW50ZXJzZWN0X2FnZyhjX2ludDRtdWx0aXJhbmdlKSwgcmVncl9jb3VudCgoKDIgKiBiKSArIDMp Ojpkb3VibGUgcHJlY2lzaW9uLCBiOjpkb3VibGUgcHJlY2lzaW9uKSwgc3VtKGI6OnJlYWwpLCBz dW0oYjo6ZG91YmxlIHByZWNpc2lvbiksIHN1bShiOjpzbWFsbGludCksIHN1bShiKSwgc3VtKGNf aW50ZXJ2YWwpLCBzdW0oY19tb25leSkgRlJPTSBwdWJsaWMucGFnZ190YWJfcDMgV0hFUkUgKChj X3NlcmlhbCA+PSAxKSkgQU5EICgoY19zZXJpYWwgPD0gMzApKQorICAgICAgICAgICAgICAgUmVt b3RlIFNRTDogU0VMRUNUIGFycmF5X2FnZyhQQVJUSUFMX0FHR1JFR0FURSBjX2ludDRhcnJheSks IGFycmF5X2FnZyhQQVJUSUFMX0FHR1JFR0FURSBiKSwgYXZnKFBBUlRJQUxfQUdHUkVHQVRFIGI6 OnNtYWxsaW50KSwgYXZnKFBBUlRJQUxfQUdHUkVHQVRFIGIpLCBhdmcoUEFSVElBTF9BR0dSRUdB VEUgYjo6YmlnaW50KSwgYXZnKFBBUlRJQUxfQUdHUkVHQVRFIGNfaW50ZXJ2YWwpLCBhdmcoUEFS VElBTF9BR0dSRUdBVEUgYjo6cmVhbCksIGF2ZyhQQVJUSUFMX0FHR1JFR0FURSBiOjpkb3VibGUg cHJlY2lzaW9uKSwgYXZnKFBBUlRJQUxfQUdHUkVHQVRFIGI6Om51bWVyaWMpLCBjb3JyKFBBUlRJ QUxfQUdHUkVHQVRFIGI6OmRvdWJsZSBwcmVjaXNpb24sIChiICogYik6OmRvdWJsZSBwcmVjaXNp b24pLCBjb3Zhcl9wb3AoUEFSVElBTF9BR0dSRUdBVEUgYjo6ZG91YmxlIHByZWNpc2lvbiwgKGIg KiBiKTo6ZG91YmxlIHByZWNpc2lvbiksIGNvdmFyX3NhbXAoUEFSVElBTF9BR0dSRUdBVEUgYjo6 ZG91YmxlIHByZWNpc2lvbiwgKGIgKiBiKTo6ZG91YmxlIHByZWNpc2lvbiksIHJlZ3JfYXZneChQ QVJUSUFMX0FHR1JFR0FURSAoMiAqIGIpOjpkb3VibGUgcHJlY2lzaW9uLCBiOjpkb3VibGUgcHJl Y2lzaW9uKSwgcmVncl9hdmd5KFBBUlRJQUxfQUdHUkVHQVRFICgyICogYik6OmRvdWJsZSBwcmVj aXNpb24sIGI6OmRvdWJsZSBwcmVjaXNpb24pLCByZWdyX2ludGVyY2VwdChQQVJUSUFMX0FHR1JF R0FURSAoKDIgKiBiKSArIDMpOjpkb3VibGUgcHJlY2lzaW9uLCBiOjpkb3VibGUgcHJlY2lzaW9u KSwgcmVncl9yMihQQVJUSUFMX0FHR1JFR0FURSAoYiAqIGIpOjpkb3VibGUgcHJlY2lzaW9uLCBi Ojpkb3VibGUgcHJlY2lzaW9uKSwgcmVncl9zbG9wZShQQVJUSUFMX0FHR1JFR0FURSAoKDIgKiBi KSArIDMpOjpkb3VibGUgcHJlY2lzaW9uLCBiOjpkb3VibGUgcHJlY2lzaW9uKSwgcmVncl9zeHgo UEFSVElBTF9BR0dSRUdBVEUgKCgyICogYikgKyAzKTo6ZG91YmxlIHByZWNpc2lvbiwgYjo6ZG91 YmxlIHByZWNpc2lvbiksIHJlZ3Jfc3h5KFBBUlRJQUxfQUdHUkVHQVRFIChiICogYik6OmRvdWJs ZSBwcmVjaXNpb24sIGI6OmRvdWJsZSBwcmVjaXNpb24pLCByZWdyX3N5eShQQVJUSUFMX0FHR1JF R0FURSAoKDIgKiBiKSArIDMpOjpkb3VibGUgcHJlY2lzaW9uLCBiOjpkb3VibGUgcHJlY2lzaW9u KSwgc3RkZGV2KFBBUlRJQUxfQUdHUkVHQVRFIGI6OnJlYWwpLCBzdGRkZXYoUEFSVElBTF9BR0dS RUdBVEUgYjo6ZG91YmxlIHByZWNpc2lvbiksIHN0ZGRldihQQVJUSUFMX0FHR1JFR0FURSBiOjpz bWFsbGludCksIHN0ZGRldihQQVJUSUFMX0FHR1JFR0FURSBiKSwgc3RkZGV2KFBBUlRJQUxfQUdH UkVHQVRFIGI6OmJpZ2ludCksIHN0ZGRldihQQVJUSUFMX0FHR1JFR0FURSBiOjpudW1lcmljKSwg c3RkZGV2X3BvcChQQVJUSUFMX0FHR1JFR0FURSBiOjpyZWFsKSwgc3RkZGV2X3BvcChQQVJUSUFM X0FHR1JFR0FURSBiOjpkb3VibGUgcHJlY2lzaW9uKSwgc3RkZGV2X3BvcChQQVJUSUFMX0FHR1JF R0FURSBiOjpzbWFsbGludCksIHN0ZGRldl9wb3AoUEFSVElBTF9BR0dSRUdBVEUgYiksIHN0ZGRl dl9wb3AoUEFSVElBTF9BR0dSRUdBVEUgYjo6YmlnaW50KSwgc3RkZGV2X3BvcChQQVJUSUFMX0FH R1JFR0FURSBiOjpudW1lcmljKSwgc3RkZGV2X3NhbXAoUEFSVElBTF9BR0dSRUdBVEUgYjo6cmVh bCksIHN0ZGRldl9zYW1wKFBBUlRJQUxfQUdHUkVHQVRFIGI6OmRvdWJsZSBwcmVjaXNpb24pLCBz dGRkZXZfc2FtcChQQVJUSUFMX0FHR1JFR0FURSBiOjpzbWFsbGludCksIHN0ZGRldl9zYW1wKFBB UlRJQUxfQUdHUkVHQVRFIGIpLCBzdGRkZXZfc2FtcChQQVJUSUFMX0FHR1JFR0FURSBiOjpiaWdp bnQpLCBzdGRkZXZfc2FtcChQQVJUSUFMX0FHR1JFR0FURSBiOjpudW1lcmljKSwgc3RyaW5nX2Fn ZyhQQVJUSUFMX0FHR1JFR0FURSBjXzFjLCAnLCc6OnRleHQpLCBzdHJpbmdfYWdnKFBBUlRJQUxf QUdHUkVHQVRFIGNfMWIsIEUnXFx4MmMnOjpieXRlYSksIHN1bShQQVJUSUFMX0FHR1JFR0FURSBi OjpiaWdpbnQpLCBzdW0oUEFSVElBTF9BR0dSRUdBVEUgYjo6bnVtZXJpYyksIHZhcmlhbmNlKFBB UlRJQUxfQUdHUkVHQVRFIGI6OnJlYWwpLCB2YXJpYW5jZShQQVJUSUFMX0FHR1JFR0FURSBiOjpk b3VibGUgcHJlY2lzaW9uKSwgdmFyaWFuY2UoUEFSVElBTF9BR0dSRUdBVEUgYjo6c21hbGxpbnQp LCB2YXJpYW5jZShQQVJUSUFMX0FHR1JFR0FURSBiKSwgdmFyaWFuY2UoUEFSVElBTF9BR0dSRUdB VEUgYjo6YmlnaW50KSwgdmFyaWFuY2UoUEFSVElBTF9BR0dSRUdBVEUgYjo6bnVtZXJpYyksIHZh cl9wb3AoUEFSVElBTF9BR0dSRUdBVEUgYjo6cmVhbCksIHZhcl9wb3AoUEFSVElBTF9BR0dSRUdB VEUgYjo6ZG91YmxlIHByZWNpc2lvbiksIHZhcl9wb3AoUEFSVElBTF9BR0dSRUdBVEUgYjo6c21h bGxpbnQpLCB2YXJfcG9wKFBBUlRJQUxfQUdHUkVHQVRFIGIpLCB2YXJfcG9wKFBBUlRJQUxfQUdH UkVHQVRFIGI6OmJpZ2ludCksIHZhcl9wb3AoUEFSVElBTF9BR0dSRUdBVEUgYjo6bnVtZXJpYyks IHZhcl9zYW1wKFBBUlRJQUxfQUdHUkVHQVRFIGI6OnJlYWwpLCB2YXJfc2FtcChQQVJUSUFMX0FH R1JFR0FURSBiOjpkb3VibGUgcHJlY2lzaW9uKSwgdmFyX3NhbXAoUEFSVElBTF9BR0dSRUdBVEUg Yjo6c21hbGxpbnQpLCB2YXJfc2FtcChQQVJUSUFMX0FHR1JFR0FURSBiKSwgdmFyX3NhbXAoUEFS VElBTF9BR0dSRUdBVEUgYjo6YmlnaW50KSwgdmFyX3NhbXAoUEFSVElBTF9BR0dSRUdBVEUgYjo6 bnVtZXJpYyksIGFueV92YWx1ZSgoYiAqIDApKSwgYml0X2FuZChjX2JpdCksIGJpdF9hbmQoY18x b3IzaW50MiksIGJpdF9hbmQoY18xb3IzaW50NCksIGJpdF9hbmQoY18xb3IzaW50OCksIGJpdF9v cihjX2JpdCksIGJpdF9vcihjXzFvcjNpbnQyKSwgYml0X29yKGNfMW9yM2ludDQpLCBiaXRfb3Io Y18xb3IzaW50OCksIGJpdF94b3IoY19iaXQpLCBiaXRfeG9yKGNfMW9yM2ludDIpLCBiaXRfeG9y KGNfMW9yM2ludDQpLCBiaXRfeG9yKGNfMW9yM2ludDgpLCBib29sX2FuZChjX2Jvb2wpLCBib29s X29yKGNfYm9vbCksIGNvdW50KGIpLCBjb3VudCgqKSwgZXZlcnkoY19ib29sKSwgbWF4KGNfaW50 NGFycmF5KSwgbWF4KGNfZW51bSksIG1heChjXzFjOjpjaGFyYWN0ZXIoMSkpLCBtYXgoKCcwMS0w MS0yMDAwJzo6ZGF0ZSArIGIpKSwgbWF4KCgnMC4wLjAuMCc6OmluZXQgKyBiKSksIG1heChiOjpy ZWFsKSwgbWF4KGI6OmRvdWJsZSBwcmVjaXNpb24pLCBtYXgoYjo6c21hbGxpbnQpLCBtYXgoYiks IG1heChiOjpiaWdpbnQpLCBtYXgoY19pbnRlcnZhbCksIG1heChjX21vbmV5KSwgbWF4KGI6Om51 bWVyaWMpLCBtYXgoYjo6b2lkKSwgbWF4KGNfcGdfbHNuKSwgbWF4KGNfdGlkKSwgbWF4KGNfMWMp LCBtYXgoY190aW1lKSwgbWF4KGNfdGltZXR6KSwgbWF4KGNfdGltZXN0YW1wKSwgbWF4KGNfdGlt ZXN0YW1wdHopLCBtYXgoY194aWQ4KSwgbWluKGNfaW50NGFycmF5KSwgbWluKGNfZW51bSksIG1p bihjXzFjOjpjaGFyYWN0ZXIoMSkpLCBtaW4oKCcwMS0wMS0yMDAwJzo6ZGF0ZSArIGIpKSwgbWlu KCgnMC4wLjAuMCc6OmluZXQgKyBiKSksIG1pbihiOjpyZWFsKSwgbWluKGI6OmRvdWJsZSBwcmVj aXNpb24pLCBtaW4oYjo6c21hbGxpbnQpLCBtaW4oYiksIG1pbihiOjpiaWdpbnQpLCBtaW4oY19p bnRlcnZhbCksIG1pbihjX21vbmV5KSwgbWluKGI6Om51bWVyaWMpLCBtaW4oYjo6b2lkKSwgbWlu KGNfcGdfbHNuKSwgbWluKGNfdGlkKSwgbWluKGNfMWMpLCBtaW4oY190aW1lKSwgbWluKGNfdGlt ZXR6KSwgbWluKGNfdGltZXN0YW1wKSwgbWluKGNfdGltZXN0YW1wdHopLCBtaW4oY194aWQ4KSwg cmFuZ2VfaW50ZXJzZWN0X2FnZyhjX2ludDRyYW5nZSksIHJhbmdlX2ludGVyc2VjdF9hZ2coY19p bnQ0bXVsdGlyYW5nZSksIHJlZ3JfY291bnQoKCgyICogYikgKyAzKTo6ZG91YmxlIHByZWNpc2lv biwgYjo6ZG91YmxlIHByZWNpc2lvbiksIHN1bShiOjpyZWFsKSwgc3VtKGI6OmRvdWJsZSBwcmVj aXNpb24pLCBzdW0oYjo6c21hbGxpbnQpLCBzdW0oYiksIHN1bShQQVJUSUFMX0FHR1JFR0FURSBj X2ludGVydmFsKSwgc3VtKGNfbW9uZXkpIEZST00gcHVibGljLnBhZ2dfdGFiX3AzIFdIRVJFICgo Y19zZXJpYWwgPj0gMSkpIEFORCAoKGNfc2VyaWFsIDw9IDMwKSkKICgxNSByb3dzKQogCiBTRUxF Q1QgLyogYWdncmVnYXRlIDw+IHBhcnRpYWwgYWdncmVnYXRlICovCg== --=_2ecdf759bee13919fb5520c7603e7c7a--