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 1rMd5W-005YQn-GD for pgsql-hackers@arkaria.postgresql.org; Mon, 08 Jan 2024 00:01:55 +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 1rMd5V-000wvU-OM for pgsql-hackers@arkaria.postgresql.org; Mon, 08 Jan 2024 00:01:53 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rMd5U-000wul-SI for pgsql-hackers@lists.postgresql.org; Mon, 08 Jan 2024 00:01:53 +0000 Received: from mail-vs1-xe31.google.com ([2607:f8b0:4864:20::e31]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1rMd5P-000Ob0-Vk for pgsql-hackers@lists.postgresql.org; Mon, 08 Jan 2024 00:01:51 +0000 Received: by mail-vs1-xe31.google.com with SMTP id ada2fe7eead31-467d58e133eso53544137.0 for ; Sun, 07 Jan 2024 16:01:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1704672107; x=1705276907; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=ron7NPeUX8N6iSbQAHwXs5OJ1CD06+sMZVD+56tmnTw=; b=QRJXXk8/wGis206ImtdMjtHWdZsNQEdscZZ80DqRPmX5TPYs5cdC8dAuUkpFQhB15/ t1LNiBEn1QmPSpwY7PXl+qXVpgFIICsSf63dgNQsVD9paYx4wWLUZCC0S66zWHODUrMW 4N77msC684pqe6Q/mH/utJmRCmT8XBgoN3/u+02omgd1uzmpMlNrxOc/v/3yim7xZONF JPH+dx+GgtHXdwbdHQuHyWXgIakVYlCNschFmEA3+eAwfUwFvgsjiTRzaNgUbE8P39kv 6N3+q6PnA8/FjMo5z0XS7xQVihEGCpn9ypj1ULSanYN2Be6pB0q4ji4AGLll8gWlbHu/ plHQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1704672107; x=1705276907; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=ron7NPeUX8N6iSbQAHwXs5OJ1CD06+sMZVD+56tmnTw=; b=Q+tA4QQRf5OEjsSQ8hHGNhBC0gKnU/eTUSXoS8zcUzXdc/dE2HnW3jc8o25+DKxMiB GkUnpw4ZtgIpU61//xx1vqsr7gGF1pqacBzO6m8/Budga+qDfkVmQT76J+13o+aD52Kq sSjnz06DZKU1gBvtnvK3C4lXWGcuNtIuOnAPRmcp4/8xsJxvJLQLYSvGsZIq3dqiVx4R K7K74MFPQL/ryCJG+KYchvW9+KPvK+AA9MwJF+R81JOo+NhNs3pphP/KRNjPbuFheTrT 7YplqSGcOUFbtlaTLRLYx2QhzFnKdS2LLuiuOiXIkzVzxF8nUbwQHO/gtbqchFXMUwzM FbGA== X-Gm-Message-State: AOJu0YzUzbzrUz8YkI8ArTTHZKJrpASfKm80gdtEWCMsytPohufOp+rL dgBGfHYh7XmE4BM7mDh32K5/lA/QnR2lbxRbHtA= X-Google-Smtp-Source: AGHT+IHMwbVxhbuoyOZc5wlYy2NtpyzkvkpNwtC9zWnezW0Q+yBpzFtPPs9JIrZV9fIfePUR4CM/DgqB2ZGRz5TXD1s= X-Received: by 2002:a05:6102:3f54:b0:467:a907:23d9 with SMTP id l20-20020a0561023f5400b00467a90723d9mr1089803vsv.28.1704672107039; Sun, 07 Jan 2024 16:01:47 -0800 (PST) MIME-Version: 1.0 References: <169880504467.94392.3769687331705514588.pgcf@coridan.postgresql.org> <87a5rry0bz.fsf@163.com> <87h6jpob9x.fsf@163.com> In-Reply-To: <87h6jpob9x.fsf@163.com> From: jian he Date: Mon, 8 Jan 2024 08:00:00 +0800 Message-ID: Subject: Re: Extract numeric filed in JSONB more effectively To: Andy Fan Cc: Chapman Flack , pgsql-hackers@lists.postgresql.org Content-Type: multipart/mixed; boundary="000000000000664127060e63e756" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000664127060e63e756 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Sun, Jan 7, 2024 at 3:26=E2=80=AFPM Andy Fan wro= te: > > > Hi, > > > hi. > > you don't need to change src/include/catalog/catversion.h > > as mentioned in https://wiki.postgresql.org/wiki/Committing_checklist > > Otherwise, cfbot will fail many times. > > Thanks for the wiki. > > I checked the wiki and search "catversion", the only message I got is: > > "Consider the need for a catversion bump." > > How could this be explained as "no need to change ../catversion.h"? that means catversion.h changes is the committer's responsibility, IMHO. IMHO, main reason is every time the catversion.h change, cfbot http://cfbot.cputube.org will fail. one patch took very long time to be committable. you don't need update your patch for the every catversion.h changes. > > > > +typedef enum JsonbValueTarget > > +{ > > + JsonbValue_AsJsonbValue, > > + JsonbValue_AsJsonb, > > + JsonbValue_AsText > > +} JsonbValueTarget; > > > > change to > > > > +typedef enum JsonbValueTarget > > +{ > > + JsonbValue_AsJsonbValue, > > + JsonbValue_AsJsonb, > > + JsonbValue_AsText, > > +} JsonbValueTarget; > > reason: https://git.postgresql.org/cgit/postgresql.git/commit/?id=3D611806c= d726fc92989ac918eac48fd8d684869c7 > > currently cannot do `git apply`. > > OK, I guess it's something about whitespaces, my git-commit hook has > been configured to capture this during commit. After we reach an > agreement about the 'catversion.h' stuff, the next version of patch > should fix this issue. Anyway, I made the following change: remove catversion.h changes. refactored the tests. Some of the explain(costs off, verbose) output is very very long. it's unreadable on the web browser. so I cut them into small pieces. resolve duplicate OID issues. slight refactored jsonbvalue_covert function, for the switch statement, add a default branch. see file v16-0001-Improve-the-performance-of-Jsonb-extraction.patch you made a lot of changes, that might not be easy to get committed, i think= . Maybe we can split the patch into several pieces. The first part is the original idea that: pattern: (jsonb(object) -> 'key')::numerica_data_type can be optimized. The second part: is other cases where cast jsonb to scalar data type can also be optimized. So, I refactor your patch. only have optimized casts for: (jsonb(object) -> 'key')::numerica_data_type. We can optimize more cast cases, but IMHO, make it as minimal as possible, easier to review, easier to understand. If people think this performance gain is good, then later we can add more on top of it. summary: 2 files attached. v16-0001-Improve-the-performance-of-Jsonb-extraction.patch refactored of your patch, that covers all the cast optimization cases, this file will run the CI test. v1-0001-Improve-performance-of-Jsonb-extract-via-key-and-c.no-cfbot this one also based on your patch. but as a minimum patch to optimize (jsonb(object) -> 'key')::numerica_data_type case only. (this one will not run CI test). --000000000000664127060e63e756 Content-Type: text/x-patch; charset="US-ASCII"; name="v16-0001-Improve-the-performance-of-Jsonb-extraction.patch" Content-Disposition: attachment; filename="v16-0001-Improve-the-performance-of-Jsonb-extraction.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lr3agct50 RnJvbSA1YWMxMzlkM2ViMjEzYmVhYTUzZTZjZDM5YzI1YjJlY2IzMzRiYTU2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFN1biwgNyBKYW4gMjAyNCAxNDoxNDoxMSArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjE2 IDEvMV0gSW1wcm92ZSB0aGUgcGVyZm9ybWFuY2Ugb2YgSnNvbmIgZXh0cmFjdGlvbi4KCkluIHRo ZSBwYXN0LCB3aGVuIHdlIG5lZWRlZCB0byBleHRyYWN0IGEgbnVtZXJpYyB2YWx1ZSBmcm9tIGEg ZmllbGQgaW4gYQpKU09OQiBvYmplY3QsIGV2ZW4gdGhvdWdoIHRoZSBKU09OQiBvYmplY3QgYWxy ZWFkeSBjb250YWluZWQgYSBiaW5hcnkKbWF0Y2hpbmcgbnVtZXJpYyB0eXBlLCB3ZSB3b3VsZCBm aXJzdCBmaW5kIHRoZSBjb3JyZXNwb25kaW5nIEpzb25iVmFsdWUsCnRoZW4gY29udmVydCB0aGUg SnNvbmJWYWx1ZSB0byBKc29uYiwgYW5kIGZpbmFsbHkgdXNlIHRoZSBjYXN0IHN5c3RlbSB0bwpj b252ZXJ0IHRoZSBKc29uYiB0byBhIE51bWVyaWMtbGlrZSBkYXRhIHR5cGUuIFRoaXMgYXBwcm9h Y2ggd2FzIHZlcnkKaW5lZmZpY2llbnQgaW4gdGVybXMgb2YgcGVyZm9ybWFuY2UuCgpJbiB0aGUg Y3VycmVudCBwYXRjaCwgaWYgd2UgZW5jb3VudGVyIGEgZnVuY3Rpb24gb3Igb3BlcmF0b3IgdGhh dCBuZWVkcwp0byBleHRyYWN0IGEgSlNPTkIgZmllbGQgYW5kIGNhc3QgaXQgdG8gYSBudW1lcmlj LWxpa2UgZGF0YSB0eXBlLCB0aGUKcmVxdWVzdCB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgY29udmVy dGVkIGludG8gZXh0cmFjdGluZyB0aGUgZmllbGQgYXMgYQpKc29uYlZhbHVlIGRhdGEgdHlwZSBm cm9tIHRoZSBKU09OQiBmaWVsZCwgdGhlbiwgY29udmVydCB0aGUgSnNvbmJWYWx1ZQp0byBhIG51 bWVyaWMgZGF0YSB0eXBlLiBJZiBuZWNlc3NhcnksIHRoZSBmaW5hbCBjb252ZXJzaW9uIGZyb20g dGhlCm51bWVyaWMgZGF0YSB0eXBlIHRvIGFub3RoZXIgbnVtZXJpYy1saWtlIGRhdGEgdHlwZSBp cyBkb25lIHRocm91Z2ggdGhlCmNhc3Rpbmcgc3lzdGVtLiBUaGlzIHNlcmllcyBvZiBjb252ZXJz aW9ucyBpcyBpbXBsZW1lbnRlZCB0aHJvdWdoIHRoZQpwbGFubmVyIHN1cHBvcnQgZnVuY3Rpb24u ICBCeSB1dGlsaXppbmcgdGhlc2UgbWV0aG9kcywgdGhlIGN1bWJlcnNvbWUKSlNPTkItcmVsYXRl ZCBvcGVyYXRpb25zIGFyZSBhdm9pZGVkLiBCZWNhdXNlIHRoZSBib29sZWFuIHR5cGUgYW5kCm51 bWVyaWMgdHlwZSBzaGFyZSBjZXJ0YWluIHNpbWlsYXJpdGllcyBpbiB0aGVpciBhdHRyaWJ1dGVz LCB3ZSBoYXZlCmltcGxlbWVudGVkIHRoZSBzYW1lIG9wdGltaXphdGlvbiBhcHByb2FjaCBmb3Ig Ym90aC4KCkF0IHRoZSBpbXBsZW1lbnRhdGlvbiBsZXZlbCwgY29uc2lkZXJpbmcgdGhhdCB3ZSBo YXZlIG11bHRpcGxlIG9wZXJhdG9ycwphbmQgdmFyaW91cyB0YXJnZXQgZGF0YSB0eXBlcywgYW5k IHRvIGF2b2lkIGFuIGV4Y2Vzc2l2ZSBudW1iZXIgb2YKZnVuY3Rpb25zLCB3ZSBoYXZlIGRlY29u c3RydWN0ZWQgdGhlIHR3byBzdGVwcyBtZW50aW9uZWQgZWFybGllciBpbnRvCnR3byBjYXRlZ29y aWVzIG9mIGZ1bmN0aW9ucy4gVGhlIGZpcnN0IGNhdGVnb3J5IG9mIGZ1bmN0aW9ucyBleHRyYWN0 cwp0aGUgZGF0YSBhcyBhIEpzb25iVmFsdWUgdHlwZSwgd2hpbGUgdGhlIHNlY29uZCBjYXRlZ29y eSBvZiBmdW5jdGlvbnMKY29udmVydHMgdGhlIEpzb25iVmFsdWUgdHlwZSBpbnRvIHRoZSBkZXNp cmVkIGRhdGEgdHlwZS4gSW4gc3BlY2lmaWMKc2NlbmFyaW9zLCB3ZSB1dGlsaXplIHBsYW5uZXIg c3VwcG9ydCBmdW5jdGlvbnMgdG8gYXV0b21hdGljYWxseQphc3NlbWJsZSB0aGVzZSBmdW5jdGlv bnMuCi0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25iLmMgICAgICAgICB8IDE2NiArKysr KysrKysrKysrKysrKysKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uYnN1YnMuYyAgICAgfCAg IDQgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uZnVuY3MuYyAgICAgfCAxODAgKysrKysr KysrKysrLS0tLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25wYXRoX2V4ZWMuYyB8ICAz MiArKystCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgIHwgIDQ2ICsrKyst CiBzcmMvaW5jbHVkZS91dGlscy9qc29uYi5oICAgICAgICAgICAgIHwgIDExICstCiBzcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL2pzb25iLm91dCAgIHwgMjQwICsrKysrKysrKysrKysrKysrKysr KysrKystCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9qc29uYi5zcWwgICAgICAgIHwgMTE2ICsrKysr KysrKysrKy0KIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICAgICAgfCAgIDEgKwog OSBmaWxlcyBjaGFuZ2VkLCA3MDcgaW5zZXJ0aW9ucygrKSwgODkgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25iLmMgYi9zcmMvYmFja2VuZC91dGls cy9hZHQvanNvbmIuYwppbmRleCBjMTBiM2ZiZS4uYjVhMDliNjEgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9qc29uYi5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29u Yi5jCkBAIC0xNywxMSArMTcsMTUgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX3Byb2MuaCIKICNp bmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKICNpbmNsdWRlICJmdW5jYXBpLmgiCisjaW5jbHVk ZSAibm9kZXMvbWFrZWZ1bmNzLmgiCisjaW5jbHVkZSAibm9kZXMvc3VwcG9ydG5vZGVzLmgiCisj aW5jbHVkZSAicGFyc2VyL3BhcnNlX2NvZXJjZS5oIgogI2luY2x1ZGUgImxpYnBxL3BxZm9ybWF0 LmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIK ICNpbmNsdWRlICJ1dGlscy9kYXRlLmgiCiAjaW5jbHVkZSAidXRpbHMvZGF0ZXRpbWUuaCIKKyNp bmNsdWRlICJ1dGlscy9mbWdyb2lkcy5oIgogI2luY2x1ZGUgInV0aWxzL2pzb24uaCIKICNpbmNs dWRlICJ1dGlscy9qc29uYi5oIgogI2luY2x1ZGUgInV0aWxzL2pzb25mdW5jcy5oIgpAQCAtMjAz OSw2ICsyMDQzLDE2OCBAQCBjYW5ub3RDYXN0SnNvbmJWYWx1ZShlbnVtIGpidlR5cGUgdHlwZSwg Y29uc3QgY2hhciAqc3FsdHlwZSkKIAllbG9nKEVSUk9SLCAidW5rbm93biBqc29uYiB0eXBlOiAl ZCIsIChpbnQpIHR5cGUpOwogfQogCisKKy8qCisgKiBqc29uYl9jYXN0X3N1cHBvcnQoKQorICoK KyAqIFBsYW5uZXIgc3VwcG9ydCBmdW5jdGlvbiBmb3IgY2FzdGluZyBhIGpzb25iIGV4dHJhY3Rp b24gdG8gYSBudW1lcmljCisgKiBvciBib29sIGRhdGEgdHlwZS4gSW5zdGVhZCBvZiBjb252ZXJ0 aW5nIGEganNvbmJ2YWx1ZSB0byBqc29uYiwgdGhlIG5ldworICogbWV0aG9kIHdpbGwgY2FzdCB0 aGUganNvbmJ2YWx1ZSB0byB0aGUgZGVzaXJlZCBkYXRhIHR5cGUgZGlyZWN0bHkuCisgKi8KK0Rh dHVtCitqc29uYl9jYXN0X3N1cHBvcnQoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlOb2RlCSAgICpy YXdyZXEgPSAoTm9kZSAqKSBQR19HRVRBUkdfUE9JTlRFUigwKTsKKworCWlmIChJc0EocmF3cmVx LCBTdXBwb3J0UmVxdWVzdFNpbXBsaWZ5KSkKKwl7CisJCVN1cHBvcnRSZXF1ZXN0U2ltcGxpZnkg KnJlcSA9IChTdXBwb3J0UmVxdWVzdFNpbXBsaWZ5ICopIHJhd3JlcTsKKwkJRnVuY0V4cHIgICAq ZmV4cHIgPSByZXEtPmZjYWxsOworCQlGdW5jRXhwciAgICpqc29uYl9zdGFydF9mdW5jID0gTlVM TCwKKwkJCQkgICAqanNvbmJfZmluaXNoX2Z1bmMgPSBOVUxMLAorCQkJCSAgICpmaW5hbF9mdW5j ID0gTlVMTDsKKwkJTm9kZQkgICAqaW5wdXQ7CisJCU9pZAkJCW5ld19mdW5jX2lkID0gSW52YWxp ZE9pZDsKKwkJTGlzdAkgICAqYXJnczsKKwkJT2lkCQkJaW5wdXRfZnVuY19pZCwKKwkJCQkJY29s bGlkLAorCQkJCQlpbnB1dGNvbGxpZDsKKwkJYm9vbAkJcmV0c2V0ID0gZmFsc2UsCisJCQkJCXZh cmlhZGljID0gZmFsc2U7CisKKwkJQXNzZXJ0KGxpc3RfbGVuZ3RoKGZleHByLT5hcmdzKSA9PSAx KTsKKwkJaW5wdXQgPSAoTm9kZSAqKSBsaW5pdGlhbChmZXhwci0+YXJncyk7CisKKwkJaWYgKElz QShpbnB1dCwgT3BFeHByKSkKKwkJeworCQkJT3BFeHByCSAgICpvcEV4cHIgPSBjYXN0Tm9kZShP cEV4cHIsIGlucHV0KTsKKworCQkJaW5wdXRfZnVuY19pZCA9IG9wRXhwci0+b3BmdW5jaWQ7CisJ CQljb2xsaWQgPSBvcEV4cHItPm9wY29sbGlkOworCQkJaW5wdXRjb2xsaWQgPSBvcEV4cHItPmlu cHV0Y29sbGlkOworCQkJYXJncyA9IG9wRXhwci0+YXJnczsKKwkJfQorCQllbHNlIGlmIChJc0Eo aW5wdXQsIEZ1bmNFeHByKSkKKwkJeworCQkJRnVuY0V4cHIgICAqZnVuY0V4cHIgPSBjYXN0Tm9k ZShGdW5jRXhwciwgaW5wdXQpOworCisJCQlpbnB1dF9mdW5jX2lkID0gZnVuY0V4cHItPmZ1bmNp ZDsKKwkJCWNvbGxpZCA9IGZ1bmNFeHByLT5mdW5jY29sbGlkOworCQkJaW5wdXRjb2xsaWQgPSBm dW5jRXhwci0+aW5wdXRjb2xsaWQ7CisJCQlhcmdzID0gZnVuY0V4cHItPmFyZ3M7CisJCX0KKwkJ ZWxzZQorCQkJLyogbm90IHRoZSBkZXNpcmVkIHBhdHRlcm4uICovCisJCQlQR19SRVRVUk5fUE9J TlRFUihOVUxMKTsKKworCQkvKiBidWlsZCBhIGZ1bmN0aW9uIHRvIHJldHVybiB0aGUgSnNvbmJW YWx1ZSBkaXJlY3RseS4gKi8KKwkJc3dpdGNoIChpbnB1dF9mdW5jX2lkKQorCQl7CisJCQljYXNl IEZfSlNPTkJfT0JKRUNUX0ZJRUxEOgorCQkJCW5ld19mdW5jX2lkID0gRl9KU09OQl9PQkpFQ1Rf RklFTERfU1RBUlQ7CisJCQkJYnJlYWs7CisJCQljYXNlIEZfSlNPTkJfQVJSQVlfRUxFTUVOVDoK KwkJCQluZXdfZnVuY19pZCA9IEZfSlNPTkJfQVJSQVlfRUxFTUVOVF9TVEFSVDsKKwkJCQlicmVh azsKKwkJCWNhc2UgRl9KU09OQl9FWFRSQUNUX1BBVEg6CisJCQkJbmV3X2Z1bmNfaWQgPSBGX0pT T05CX0VYVFJBQ1RfUEFUSF9TVEFSVDsKKwkJCQl2YXJpYWRpYyA9IHRydWU7CisJCQkJYnJlYWs7 CisJCQljYXNlIEZfSlNPTkJfUEFUSF9RVUVSWToKKwkJCQluZXdfZnVuY19pZCA9IEZfSlNPTkJf UEFUSF9RVUVSWV9TVEFSVDsKKwkJCQlyZXRzZXQgPSB0cnVlOworCQkJCWJyZWFrOworCQkJY2Fz ZSBGX0pTT05CX1BBVEhfUVVFUllfRklSU1Q6CisJCQkJbmV3X2Z1bmNfaWQgPSBGX0pTT05CX1BB VEhfUVVFUllfRklSU1RfU1RBUlQ7CisJCQkJYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCW5ld19m dW5jX2lkID0gSW52YWxpZE9pZDsKKwkJCQlicmVhazsKKwkJfQorCisJCWlmICghT2lkSXNWYWxp ZChuZXdfZnVuY19pZCkpCisJCQlQR19SRVRVUk5fUE9JTlRFUihOVUxMKTsKKworCQlqc29uYl9z dGFydF9mdW5jID0gbWFrZUZ1bmNFeHByKG5ld19mdW5jX2lkLCBJTlRFUk5BTE9JRCwgYXJncywK KwkJCQkJCQkJCQljb2xsaWQsIGlucHV0Y29sbGlkLAorCQkJCQkJCQkJCUNPRVJDRV9FWFBMSUNJ VF9DQUxMKTsKKwkJanNvbmJfc3RhcnRfZnVuYy0+ZnVuY3JldHNldCA9IHJldHNldDsKKwkJanNv bmJfc3RhcnRfZnVuYy0+ZnVuY3ZhcmlhZGljID0gdmFyaWFkaWM7CisKKwkJLyogcmVsYWJlbCB0 aGUgZmlyc3QgYXJndW1lbnQgYXMgJ2ludGVybmFsJy4gKi8KKwkJbGluaXRpYWwoanNvbmJfc3Rh cnRfZnVuYy0+YXJncykgPSBtYWtlUmVsYWJlbFR5cGUobGluaXRpYWwoanNvbmJfc3RhcnRfZnVu Yy0+YXJncyksCisJCQkJCQkJCQkJCQkJCSAgIElOVEVSTkFMT0lELCAtMSwKKwkJCQkJCQkJCQkJ CQkJICAgSW52YWxpZE9pZCwKKwkJCQkJCQkJCQkJCQkJICAgQ09FUkNFX0lNUExJQ0lUX0NBU1Qp OworCQlzd2l0Y2ggKGZleHByLT5mdW5jcmVzdWx0dHlwZSkKKwkJeworCQkJY2FzZSBJTlQyT0lE OgorCQkJY2FzZSBJTlQ0T0lEOgorCQkJY2FzZSBJTlQ4T0lEOgorCQkJY2FzZSBGTE9BVDRPSUQ6 CisJCQljYXNlIEZMT0FUOE9JRDoKKwkJCWNhc2UgTlVNRVJJQ09JRDoKKwkJCQkvKiBidWlsZCB0 aGUgZnVuY3Rpb24gdG8gdHVybiB0aGUgSnNvbmJWYWx1ZSBpbnRvIG51bWVyaWMgKi8KKwkJCQlq c29uYl9maW5pc2hfZnVuYyA9IG1ha2VGdW5jRXhwcihGX0pTT05CX0ZJTklTSF9OVU1FUklDLCBO VU1FUklDT0lELAorCQkJCQkJCQkJCQkJIGxpc3RfbWFrZTIoanNvbmJfc3RhcnRfZnVuYywKKwkJ CQkJCQkJCQkJCQkJCW1ha2VDb25zdChPSURPSUQsCisJCQkJCQkJCQkJCQkJCQkJCSAgLTEsCisJ CQkJCQkJCQkJCQkJCQkJCSAgSW52YWxpZE9pZCwKKwkJCQkJCQkJCQkJCQkJCQkJICBzaXplb2Yo T2lkKSwKKwkJCQkJCQkJCQkJCQkJCQkJICBPYmplY3RJZEdldERhdHVtKGZleHByLT5mdW5jcmVz dWx0dHlwZSksCisJCQkJCQkJCQkJCQkJCQkJCSAgZmFsc2UsCisJCQkJCQkJCQkJCQkJCQkJCSAg dHJ1ZSkpLAorCQkJCQkJCQkJCQkJIGNvbGxpZCwgaW5wdXRjb2xsaWQsIENPRVJDRV9FWFBMSUNJ VF9DQUxMKTsKKworCQkJCWlmIChmZXhwci0+ZnVuY3Jlc3VsdHR5cGUgIT0gTlVNRVJJQ09JRCkK KwkJCQl7CisJCQkJCS8qCisJCQkJCSAqIGxldmVyYWdlIHRoZSBjYXN0aW5nIHN5c3RlbSB0byB0 dXJuIHRoZSBudW1lcmljIHRvCisJCQkJCSAqIGRlc2lyZWQgdHlwZS4KKwkJCQkJICovCisJCQkJ CWZpbmFsX2Z1bmMgPSAoRnVuY0V4cHIgKikgY29lcmNlX3R5cGUoTlVMTCwgKE5vZGUgKikganNv bmJfZmluaXNoX2Z1bmMsIE5VTUVSSUNPSUQsCisJCQkJCQkJCQkJCQkJCSAgZmV4cHItPmZ1bmNy ZXN1bHR0eXBlLCAwLCBDT0VSQ0lPTl9FWFBMSUNJVCwKKwkJCQkJCQkJCQkJCQkJICBDT0VSQ0Vf RVhQTElDSVRfQ0FTVCwgZmV4cHItPmxvY2F0aW9uKTsKKwkJCQl9CisJCQkJZWxzZQorCQkJCQlm aW5hbF9mdW5jID0ganNvbmJfZmluaXNoX2Z1bmM7CisKKwkJCQlQR19SRVRVUk5fUE9JTlRFUihm aW5hbF9mdW5jKTsKKwkJCWNhc2UgQk9PTE9JRDoKKwkJCQlmaW5hbF9mdW5jID0gbWFrZUZ1bmNF eHByKEZfSlNPTkJfRklOSVNIX0JPT0wsIEJPT0xPSUQsCisJCQkJCQkJCQkJICBsaXN0X21ha2Ux KGpzb25iX3N0YXJ0X2Z1bmMpLCBjb2xsaWQsCisJCQkJCQkJCQkJICBpbnB1dGNvbGxpZCwgQ09F UkNFX0VYUExJQ0lUX0NBTEwpOworCQkJCVBHX1JFVFVSTl9QT0lOVEVSKGZpbmFsX2Z1bmMpOwor CQkJZGVmYXVsdDoKKwkJCQlQR19SRVRVUk5fUE9JTlRFUihOVUxMKTsKKwkJfQorCX0KKworCVBH X1JFVFVSTl9QT0lOVEVSKE5VTEwpOworfQorCisKK0RhdHVtCitqc29uYl9maW5pc2hfbnVtZXJp YyhQR19GVU5DVElPTl9BUkdTKQoreworCUpzb25iVmFsdWUgKnYgPSAoSnNvbmJWYWx1ZSAqKSBQ R19HRVRBUkdfUE9JTlRFUigwKTsKKwlPaWQJCQlmaW5hbF9vaWQgPSBQR19HRVRBUkdfT0lEKDEp OworCisJaWYgKHYtPnR5cGUgIT0gamJ2TnVtZXJpYykKKwkJY2Fubm90Q2FzdEpzb25iVmFsdWUo di0+dHlwZSwgZm9ybWF0X3R5cGVfYmUoZmluYWxfb2lkKSk7CisJUEdfUkVUVVJOX05VTUVSSUMo di0+dmFsLm51bWVyaWMpOworfQorCitEYXR1bQoranNvbmJfZmluaXNoX2Jvb2woUEdfRlVOQ1RJ T05fQVJHUykKK3sKKwlKc29uYlZhbHVlICp2ID0gKEpzb25iVmFsdWUgKikgUEdfR0VUQVJHX1BP SU5URVIoMCk7CisKKwlpZiAodi0+dHlwZSAhPSBqYnZCb29sKQorCQljYW5ub3RDYXN0SnNvbmJW YWx1ZSh2LT50eXBlLCAiYm9vbGVhbiIpOworCVBHX1JFVFVSTl9CT09MKHYtPnZhbC5ib29sZWFu KTsKK30KKwogRGF0dW0KIGpzb25iX2Jvb2woUEdfRlVOQ1RJT05fQVJHUykKIHsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uYnN1YnMuYyBiL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9qc29uYnN1YnMuYwppbmRleCA3OWM1ZDE2Zi4uMzdiZTgwZDEgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uYnN1YnMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9h ZHQvanNvbmJzdWJzLmMKQEAgLTI1MSw3ICsyNTEsNyBAQCBqc29uYl9zdWJzY3JpcHRfZmV0Y2go RXhwclN0YXRlICpzdGF0ZSwKIAkJCQkJCQkJCSAgd29ya3NwYWNlLT5pbmRleCwKIAkJCQkJCQkJ CSAgc2JzcmVmc3RhdGUtPm51bXVwcGVyLAogCQkJCQkJCQkJICBvcC0+cmVzbnVsbCwKLQkJCQkJ CQkJCSAgZmFsc2UpOworCQkJCQkJCQkJICBKc29uYlZhbHVlX0FzSnNvbmIpOwogfQogCiAvKgpA QCAtMzQzLDcgKzM0Myw3IEBAIGpzb25iX3N1YnNjcmlwdF9mZXRjaF9vbGQoRXhwclN0YXRlICpz dGF0ZSwKIAkJCQkJCQkJCQkJCSAgIHNic3JlZnN0YXRlLT51cHBlcmluZGV4LAogCQkJCQkJCQkJ CQkJICAgc2JzcmVmc3RhdGUtPm51bXVwcGVyLAogCQkJCQkJCQkJCQkJICAgJnNic3JlZnN0YXRl LT5wcmV2bnVsbCwKLQkJCQkJCQkJCQkJCSAgIGZhbHNlKTsKKwkJCQkJCQkJCQkJCSAgIEpzb25i VmFsdWVfQXNKc29uYik7CiAJfQogfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9h ZHQvanNvbmZ1bmNzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmZ1bmNzLmMKaW5kZXgg Y2FhYWZiNzIuLmJhZWVmYWJjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvanNv bmZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25mdW5jcy5jCkBAIC0zNTcs NyArMzU3LDcgQEAgc3RhdGljIEpzb25QYXJzZUVycm9yVHlwZSBnZXRfc2NhbGFyKHZvaWQgKnN0 YXRlLCBjaGFyICp0b2tlbiwgSnNvblRva2VuVHlwZSB0b2sKIHN0YXRpYyBEYXR1bSBnZXRfcGF0 aF9hbGwoRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8sIGJvb2wgYXNfdGV4dCk7CiBzdGF0aWMgdGV4 dCAqZ2V0X3dvcmtlcih0ZXh0ICpqc29uLCBjaGFyICoqdHBhdGgsIGludCAqaXBhdGgsIGludCBu cGF0aCwKIAkJCQkJCWJvb2wgbm9ybWFsaXplX3Jlc3VsdHMpOwotc3RhdGljIERhdHVtIGdldF9q c29uYl9wYXRoX2FsbChGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywgYm9vbCBhc190ZXh0KTsKK3N0 YXRpYyBEYXR1bSBnZXRfanNvbmJfcGF0aF9hbGwoRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8sIEpz b25iVmFsdWVUYXJnZXQgdGFyZ2V0KTsKIHN0YXRpYyB0ZXh0ICpKc29uYlZhbHVlQXNUZXh0KEpz b25iVmFsdWUgKnYpOwogCiAvKiBzZW1hbnRpYyBhY3Rpb24gZnVuY3Rpb25zIGZvciBqc29uX2Fy cmF5X2xlbmd0aCAqLwpAQCAtNDkyLDYgKzQ5MiwyMiBAQCBzdGF0aWMgSnNvblBhcnNlRXJyb3JU eXBlIHRyYW5zZm9ybV9zdHJpbmdfdmFsdWVzX29iamVjdF9maWVsZF9zdGFydCh2b2lkICpzdGF0 ZQogc3RhdGljIEpzb25QYXJzZUVycm9yVHlwZSB0cmFuc2Zvcm1fc3RyaW5nX3ZhbHVlc19hcnJh eV9lbGVtZW50X3N0YXJ0KHZvaWQgKnN0YXRlLCBib29sIGlzbnVsbCk7CiBzdGF0aWMgSnNvblBh cnNlRXJyb3JUeXBlIHRyYW5zZm9ybV9zdHJpbmdfdmFsdWVzX3NjYWxhcih2b2lkICpzdGF0ZSwg Y2hhciAqdG9rZW4sIEpzb25Ub2tlblR5cGUgdG9rZW50eXBlKTsKIAorRGF0dW0KK2pzb25idmFs dWVfY292ZXJ0KEpzb25iVmFsdWUgKmpidiwgSnNvbmJWYWx1ZVRhcmdldCB0YXJnZXQpCit7CisJ c3dpdGNoICh0YXJnZXQpCisJeworCQljYXNlIEpzb25iVmFsdWVfQXNKc29uYlZhbHVlOgorCQkJ UEdfUkVUVVJOX1BPSU5URVIoamJ2KTsKKwkJY2FzZSBKc29uYlZhbHVlX0FzSnNvbmI6CisJCQlQ R19SRVRVUk5fSlNPTkJfUChKc29uYlZhbHVlVG9Kc29uYihqYnYpKTsKKwkJY2FzZSBKc29uYlZh bHVlX0FzVGV4dDoKKwkJCVBHX1JFVFVSTl9URVhUX1AoSnNvbmJWYWx1ZUFzVGV4dChqYnYpKTsK KwkJZGVmYXVsdDoKKwkJCWVsb2coRVJST1IsICJpbnZhbGlkIGpzb25idmFsdWUgY2FzdCB0YXJn ZXQgdHlwZSIpOworCX0KKwlwZ191bnJlYWNoYWJsZSgpOworfQogCiAvKgogICogcGdfcGFyc2Vf anNvbl9vcl9lcnJzYXZlCkBAIC04NDcsMjYgKzg2MywzNyBAQCBqc29uX29iamVjdF9maWVsZChQ R19GVU5DVElPTl9BUkdTKQogCQlQR19SRVRVUk5fTlVMTCgpOwogfQogCitzdGF0aWMgRGF0dW0K K2pzb25iX29iamVjdF9maWVsZF9pbnRlcm5hbChGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywgSnNv bmJWYWx1ZVRhcmdldCB0YXJnZXQpCit7CisJSnNvbmIJICAgKmpiID0gUEdfR0VUQVJHX0pTT05C X1AoMCk7CisJdGV4dAkgICAqa2V5ID0gUEdfR0VUQVJHX1RFWFRfUFAoMSk7CisJSnNvbmJWYWx1 ZSAqdjsKKworCWlmICghSkJfUk9PVF9JU19PQkpFQ1QoamIpKQorCQlQR19SRVRVUk5fTlVMTCgp OworCisJdiA9IGdldEtleUpzb25WYWx1ZUZyb21Db250YWluZXIoJmpiLT5yb290LAorCQkJCQkJ CQkJIFZBUkRBVEFfQU5ZKGtleSksCisJCQkJCQkJCQkgVkFSU0laRV9BTllfRVhIRFIoa2V5KSwK KwkJCQkJCQkJCSBOVUxMKTsKKworCWlmICh2ICE9IE5VTEwpCisJCXJldHVybiBqc29uYnZhbHVl X2NvdmVydCh2LCB0YXJnZXQpOworCisJUEdfUkVUVVJOX05VTEwoKTsKK30KKwogRGF0dW0KIGpz b25iX29iamVjdF9maWVsZChQR19GVU5DVElPTl9BUkdTKQogewotCUpzb25iCSAgICpqYiA9IFBH X0dFVEFSR19KU09OQl9QKDApOwotCXRleHQJICAgKmtleSA9IFBHX0dFVEFSR19URVhUX1BQKDEp OwotCUpzb25iVmFsdWUgKnY7Ci0JSnNvbmJWYWx1ZQl2YnVmOworCXJldHVybiBqc29uYl9vYmpl Y3RfZmllbGRfaW50ZXJuYWwoZmNpbmZvLCBKc29uYlZhbHVlX0FzSnNvbmIpOworfQogCi0JaWYg KCFKQl9ST09UX0lTX09CSkVDVChqYikpCi0JCVBHX1JFVFVSTl9OVUxMKCk7Ci0KLQl2ID0gZ2V0 S2V5SnNvblZhbHVlRnJvbUNvbnRhaW5lcigmamItPnJvb3QsCi0JCQkJCQkJCQkgVkFSREFUQV9B Tlkoa2V5KSwKLQkJCQkJCQkJCSBWQVJTSVpFX0FOWV9FWEhEUihrZXkpLAotCQkJCQkJCQkJICZ2 YnVmKTsKLQotCWlmICh2ICE9IE5VTEwpCi0JCVBHX1JFVFVSTl9KU09OQl9QKEpzb25iVmFsdWVU b0pzb25iKHYpKTsKLQotCVBHX1JFVFVSTl9OVUxMKCk7CitEYXR1bQoranNvbmJfb2JqZWN0X2Zp ZWxkX3N0YXJ0KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJcmV0dXJuIGpzb25iX29iamVjdF9maWVs ZF9pbnRlcm5hbChmY2luZm8sIEpzb25iVmFsdWVfQXNKc29uYlZhbHVlKTsKIH0KIAogRGF0dW0K QEAgLTkyMiwzMiArOTQ5LDQ0IEBAIGpzb25fYXJyYXlfZWxlbWVudChQR19GVU5DVElPTl9BUkdT KQogCQlQR19SRVRVUk5fTlVMTCgpOwogfQogCitzdGF0aWMgRGF0dW0KK2pzb25iX2FycmF5X2Vs ZW1lbnRfaW50ZXJuYWwoRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8sIEpzb25iVmFsdWVUYXJnZXQg dGFyZ2V0KQoreworCUpzb25iCSAgICpqYiA9IFBHX0dFVEFSR19KU09OQl9QKDApOworCWludAkJ CWVsZW1lbnQgPSBQR19HRVRBUkdfSU5UMzIoMSk7CisJSnNvbmJWYWx1ZSAqdjsKKworCWlmICgh SkJfUk9PVF9JU19BUlJBWShqYikpCisJCVBHX1JFVFVSTl9OVUxMKCk7CisKKwkvKiBIYW5kbGUg bmVnYXRpdmUgc3Vic2NyaXB0ICovCisJaWYgKGVsZW1lbnQgPCAwKQorCXsKKwkJdWludDMyCQlu ZWxlbWVudHMgPSBKQl9ST09UX0NPVU5UKGpiKTsKKworCQlpZiAoLWVsZW1lbnQgPiBuZWxlbWVu dHMpCisJCQlQR19SRVRVUk5fTlVMTCgpOworCQllbHNlCisJCQllbGVtZW50ICs9IG5lbGVtZW50 czsKKwl9CisKKwl2ID0gZ2V0SXRoSnNvbmJWYWx1ZUZyb21Db250YWluZXIoJmpiLT5yb290LCBl bGVtZW50KTsKKwlpZiAodiAhPSBOVUxMKQorCQlyZXR1cm4ganNvbmJ2YWx1ZV9jb3ZlcnQodiwg dGFyZ2V0KTsKKworCVBHX1JFVFVSTl9OVUxMKCk7Cit9CisKIERhdHVtCiBqc29uYl9hcnJheV9l bGVtZW50KFBHX0ZVTkNUSU9OX0FSR1MpCiB7Ci0JSnNvbmIJICAgKmpiID0gUEdfR0VUQVJHX0pT T05CX1AoMCk7Ci0JaW50CQkJZWxlbWVudCA9IFBHX0dFVEFSR19JTlQzMigxKTsKLQlKc29uYlZh bHVlICp2OworCXJldHVybiBqc29uYl9hcnJheV9lbGVtZW50X2ludGVybmFsKGZjaW5mbywgSnNv bmJWYWx1ZV9Bc0pzb25iKTsKK30KIAotCWlmICghSkJfUk9PVF9JU19BUlJBWShqYikpCi0JCVBH X1JFVFVSTl9OVUxMKCk7Ci0KLQkvKiBIYW5kbGUgbmVnYXRpdmUgc3Vic2NyaXB0ICovCi0JaWYg KGVsZW1lbnQgPCAwKQotCXsKLQkJdWludDMyCQluZWxlbWVudHMgPSBKQl9ST09UX0NPVU5UKGpi KTsKLQotCQlpZiAoLWVsZW1lbnQgPiBuZWxlbWVudHMpCi0JCQlQR19SRVRVUk5fTlVMTCgpOwot CQllbHNlCi0JCQllbGVtZW50ICs9IG5lbGVtZW50czsKLQl9Ci0KLQl2ID0gZ2V0SXRoSnNvbmJW YWx1ZUZyb21Db250YWluZXIoJmpiLT5yb290LCBlbGVtZW50KTsKLQlpZiAodiAhPSBOVUxMKQot CQlQR19SRVRVUk5fSlNPTkJfUChKc29uYlZhbHVlVG9Kc29uYih2KSk7Ci0KLQlQR19SRVRVUk5f TlVMTCgpOworRGF0dW0KK2pzb25iX2FycmF5X2VsZW1lbnRfc3RhcnQoUEdfRlVOQ1RJT05fQVJH UykKK3sKKwlyZXR1cm4ganNvbmJfYXJyYXlfZWxlbWVudF9pbnRlcm5hbChmY2luZm8sIEpzb25i VmFsdWVfQXNKc29uYlZhbHVlKTsKIH0KIAogRGF0dW0KQEAgLTE0NzYsMTcgKzE1MTUsMjMgQEAg Z2V0X3NjYWxhcih2b2lkICpzdGF0ZSwgY2hhciAqdG9rZW4sIEpzb25Ub2tlblR5cGUgdG9rZW50 eXBlKQogRGF0dW0KIGpzb25iX2V4dHJhY3RfcGF0aChQR19GVU5DVElPTl9BUkdTKQogewotCXJl dHVybiBnZXRfanNvbmJfcGF0aF9hbGwoZmNpbmZvLCBmYWxzZSk7CisJcmV0dXJuIGdldF9qc29u Yl9wYXRoX2FsbChmY2luZm8sIEpzb25iVmFsdWVfQXNKc29uYik7CiB9CiAKIERhdHVtCiBqc29u Yl9leHRyYWN0X3BhdGhfdGV4dChQR19GVU5DVElPTl9BUkdTKQogewotCXJldHVybiBnZXRfanNv bmJfcGF0aF9hbGwoZmNpbmZvLCB0cnVlKTsKKwlyZXR1cm4gZ2V0X2pzb25iX3BhdGhfYWxsKGZj aW5mbywgSnNvbmJWYWx1ZV9Bc1RleHQpOworfQorCitEYXR1bQoranNvbmJfZXh0cmFjdF9wYXRo X3N0YXJ0KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJcmV0dXJuIGdldF9qc29uYl9wYXRoX2FsbChm Y2luZm8sIEpzb25iVmFsdWVfQXNKc29uYlZhbHVlKTsKIH0KIAogc3RhdGljIERhdHVtCi1nZXRf anNvbmJfcGF0aF9hbGwoRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8sIGJvb2wgYXNfdGV4dCkKK2dl dF9qc29uYl9wYXRoX2FsbChGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywgSnNvbmJWYWx1ZVRhcmdl dCB0YXJnZXQpCiB7CiAJSnNvbmIJICAgKmpiID0gUEdfR0VUQVJHX0pTT05CX1AoMCk7CiAJQXJy YXlUeXBlICAqcGF0aCA9IFBHX0dFVEFSR19BUlJBWVRZUEVfUCgxKTsKQEAgLTE1MDgsNyArMTU1 Myw3IEBAIGdldF9qc29uYl9wYXRoX2FsbChGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywgYm9vbCBh c190ZXh0KQogCiAJZGVjb25zdHJ1Y3RfYXJyYXlfYnVpbHRpbihwYXRoLCBURVhUT0lELCAmcGF0 aHRleHQsICZwYXRobnVsbHMsICZucGF0aCk7CiAKLQlyZXMgPSBqc29uYl9nZXRfZWxlbWVudChq YiwgcGF0aHRleHQsIG5wYXRoLCAmaXNudWxsLCBhc190ZXh0KTsKKwlyZXMgPSBqc29uYl9nZXRf ZWxlbWVudChqYiwgcGF0aHRleHQsIG5wYXRoLCAmaXNudWxsLCB0YXJnZXQpOwogCiAJaWYgKGlz bnVsbCkKIAkJUEdfUkVUVVJOX05VTEwoKTsKQEAgLTE1MTcsNyArMTU2Miw3IEBAIGdldF9qc29u Yl9wYXRoX2FsbChGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywgYm9vbCBhc190ZXh0KQogfQogCiBE YXR1bQotanNvbmJfZ2V0X2VsZW1lbnQoSnNvbmIgKmpiLCBEYXR1bSAqcGF0aCwgaW50IG5wYXRo LCBib29sICppc251bGwsIGJvb2wgYXNfdGV4dCkKK2pzb25iX2dldF9lbGVtZW50KEpzb25iICpq YiwgRGF0dW0gKnBhdGgsIGludCBucGF0aCwgYm9vbCAqaXNudWxsLCBKc29uYlZhbHVlVGFyZ2V0 IHRhcmdldCkKIHsKIAlKc29uYkNvbnRhaW5lciAqY29udGFpbmVyID0gJmpiLT5yb290OwogCUpz b25iVmFsdWUgKmpidnAgPSBOVUxMOwpAQCAtMTU1MCwxNiArMTU5NSwyNiBAQCBqc29uYl9nZXRf ZWxlbWVudChKc29uYiAqamIsIERhdHVtICpwYXRoLCBpbnQgbnBhdGgsIGJvb2wgKmlzbnVsbCwg Ym9vbCBhc190ZXh0KQogCSAqLwogCWlmIChucGF0aCA8PSAwICYmIGpidnAgPT0gTlVMTCkKIAl7 Ci0JCWlmIChhc190ZXh0KQorCQlzd2l0Y2ggKHRhcmdldCkKIAkJewotCQkJcmV0dXJuIFBvaW50 ZXJHZXREYXR1bShjc3RyaW5nX3RvX3RleHQoSnNvbmJUb0NTdHJpbmcoTlVMTCwKLQkJCQkJCQkJ CQkJCQkJCQkgIGNvbnRhaW5lciwKLQkJCQkJCQkJCQkJCQkJCQkgIFZBUlNJWkUoamIpKSkpOwot CQl9Ci0JCWVsc2UKLQkJewotCQkJLyogbm90IHRleHQgbW9kZSAtIGp1c3QgaGFuZCBiYWNrIHRo ZSBqc29uYiAqLwotCQkJUEdfUkVUVVJOX0pTT05CX1AoamIpOworCQkJY2FzZSBKc29uYlZhbHVl X0FzVGV4dDoKKwkJCQlyZXR1cm4gUG9pbnRlckdldERhdHVtKGNzdHJpbmdfdG9fdGV4dChKc29u YlRvQ1N0cmluZyhOVUxMLAorCQkJCQkJCQkJCQkJCQkJCQkgIGNvbnRhaW5lciwKKwkJCQkJCQkJ CQkJCQkJCQkJICBWQVJTSVpFKGpiKSkpKTsKKwkJCQkvKiBub3QgdGV4dCBtb2RlIC0ganVzdCBo YW5kIGJhY2sgdGhlIGpzb25iICovCisJCQljYXNlIEpzb25iVmFsdWVfQXNKc29uYjoKKwkJCQlQ R19SRVRVUk5fSlNPTkJfUChqYik7CisJCQljYXNlIEpzb25iVmFsdWVfQXNKc29uYlZhbHVlOgor CQkJCXsKKwkJCQkJSnNvbmJWYWx1ZSAqamJ2ID0gTlVMTDsKKworCQkJCQlpZiAoSkJfUk9PVF9J U19BUlJBWShqYikgJiYgSkJfUk9PVF9JU19TQ0FMQVIoamIpKQorCQkJCQkJUEdfUkVUVVJOX1BP SU5URVIoZ2V0SXRoSnNvbmJWYWx1ZUZyb21Db250YWluZXIoY29udGFpbmVyLCAwKSk7CisKKwkJ CQkJamJ2ID0gcGFsbG9jMChzaXplb2YoSnNvbmJWYWx1ZSkpOworCQkJCQlKc29uYlRvSnNvbmJW YWx1ZShqYiwgamJ2KTsKKwkJCQkJUEdfUkVUVVJOX1BPSU5URVIoamJ2KTsKKwkJCQl9CiAJCX0K IAl9CiAKQEAgLTE2NDUsMjMgKzE3MDAsMTQgQEAganNvbmJfZ2V0X2VsZW1lbnQoSnNvbmIgKmpi LCBEYXR1bSAqcGF0aCwgaW50IG5wYXRoLCBib29sICppc251bGwsIGJvb2wgYXNfdGV4dCkKIAkJ fQogCX0KIAotCWlmIChhc190ZXh0KQotCXsKLQkJaWYgKGpidnAtPnR5cGUgPT0gamJ2TnVsbCkK LQkJewotCQkJKmlzbnVsbCA9IHRydWU7Ci0JCQlyZXR1cm4gUG9pbnRlckdldERhdHVtKE5VTEwp OwotCQl9CiAKLQkJcmV0dXJuIFBvaW50ZXJHZXREYXR1bShKc29uYlZhbHVlQXNUZXh0KGpidnAp KTsKLQl9Ci0JZWxzZQorCWlmICh0YXJnZXQgPT0gSnNvbmJWYWx1ZV9Bc1RleHQgJiYgamJ2cC0+ dHlwZSA9PSBqYnZOdWxsKQogCXsKLQkJSnNvbmIJICAgKnJlcyA9IEpzb25iVmFsdWVUb0pzb25i KGpidnApOwotCi0JCS8qIG5vdCB0ZXh0IG1vZGUgLSBqdXN0IGhhbmQgYmFjayB0aGUganNvbmIg Ki8KLQkJUEdfUkVUVVJOX0pTT05CX1AocmVzKTsKKwkJKmlzbnVsbCA9IHRydWU7CisJCXJldHVy biBQb2ludGVyR2V0RGF0dW0oTlVMTCk7CiAJfQorCisJcmV0dXJuIGpzb25idmFsdWVfY292ZXJ0 KGpidnAsIHRhcmdldCk7CiB9CiAKIERhdHVtCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGls cy9hZHQvanNvbnBhdGhfZXhlYy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25wYXRoX2V4 ZWMuYwppbmRleCBhYzE2ZjVjOC4uYjEyMWE2YTMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9qc29ucGF0aF9leGVjLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25w YXRoX2V4ZWMuYwpAQCAtMzkzLDcgKzM5Myw3IEBAIGpzb25iX3BhdGhfbWF0Y2hfb3ByKFBHX0ZV TkNUSU9OX0FSR1MpCiAgKgkJcm93c2V0LgogICovCiBzdGF0aWMgRGF0dW0KLWpzb25iX3BhdGhf cXVlcnlfaW50ZXJuYWwoRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8sIGJvb2wgdHopCitqc29uYl9w YXRoX3F1ZXJ5X2ludGVybmFsKEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLCBib29sIHR6LCBKc29u YlZhbHVlVGFyZ2V0IHRhcmdldCkKIHsKIAlGdW5jQ2FsbENvbnRleHQgKmZ1bmNjdHg7CiAJTGlz dAkgICAqZm91bmQ7CkBAIC00MzUsMTkgKzQzNSwyNSBAQCBqc29uYl9wYXRoX3F1ZXJ5X2ludGVy bmFsKEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLCBib29sIHR6KQogCXYgPSBsZmlyc3QoYyk7CiAJ ZnVuY2N0eC0+dXNlcl9mY3R4ID0gbGlzdF9kZWxldGVfZmlyc3QoZm91bmQpOwogCi0JU1JGX1JF VFVSTl9ORVhUKGZ1bmNjdHgsIEpzb25iUEdldERhdHVtKEpzb25iVmFsdWVUb0pzb25iKHYpKSk7 CisJU1JGX1JFVFVSTl9ORVhUKGZ1bmNjdHgsIGpzb25idmFsdWVfY292ZXJ0KHYsIHRhcmdldCkp OwogfQogCiBEYXR1bQoganNvbmJfcGF0aF9xdWVyeShQR19GVU5DVElPTl9BUkdTKQogewotCXJl dHVybiBqc29uYl9wYXRoX3F1ZXJ5X2ludGVybmFsKGZjaW5mbywgZmFsc2UpOworCXJldHVybiBq c29uYl9wYXRoX3F1ZXJ5X2ludGVybmFsKGZjaW5mbywgZmFsc2UsIEpzb25iVmFsdWVfQXNKc29u Yik7CiB9CiAKIERhdHVtCiBqc29uYl9wYXRoX3F1ZXJ5X3R6KFBHX0ZVTkNUSU9OX0FSR1MpCiB7 Ci0JcmV0dXJuIGpzb25iX3BhdGhfcXVlcnlfaW50ZXJuYWwoZmNpbmZvLCB0cnVlKTsKKwlyZXR1 cm4ganNvbmJfcGF0aF9xdWVyeV9pbnRlcm5hbChmY2luZm8sIHRydWUsIEpzb25iVmFsdWVfQXNK c29uYik7Cit9CisKK0RhdHVtCitqc29uYl9wYXRoX3F1ZXJ5X3N0YXJ0KFBHX0ZVTkNUSU9OX0FS R1MpCit7CisJcmV0dXJuIGpzb25iX3BhdGhfcXVlcnlfaW50ZXJuYWwoZmNpbmZvLCBmYWxzZSwg SnNvbmJWYWx1ZV9Bc0pzb25iVmFsdWUpOwogfQogCiAvKgpAQCAtNDg3LDcgKzQ5Myw3IEBAIGpz b25iX3BhdGhfcXVlcnlfYXJyYXlfdHooUEdfRlVOQ1RJT05fQVJHUykKICAqCQlpdGVtLiAgSWYg dGhlcmUgYXJlIG5vIGl0ZW1zLCBOVUxMIHJldHVybmVkLgogICovCiBzdGF0aWMgRGF0dW0KLWpz b25iX3BhdGhfcXVlcnlfZmlyc3RfaW50ZXJuYWwoRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8sIGJv b2wgdHopCitqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0X2ludGVybmFsKEZ1bmN0aW9uQ2FsbEluZm8g ZmNpbmZvLCBib29sIHR6LCBKc29uYlZhbHVlVGFyZ2V0IHRhcmdldCkKIHsKIAlKc29uYgkgICAq amIgPSBQR19HRVRBUkdfSlNPTkJfUCgwKTsKIAlKc29uUGF0aCAgICpqcCA9IFBHX0dFVEFSR19K U09OUEFUSF9QKDEpOwpAQCAtNDk4LDcgKzUwNCwxMSBAQCBqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0 X2ludGVybmFsKEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLCBib29sIHR6KQogCSh2b2lkKSBleGVj dXRlSnNvblBhdGgoanAsIHZhcnMsIGpiLCAhc2lsZW50LCAmZm91bmQsIHR6KTsKIAogCWlmIChK c29uVmFsdWVMaXN0TGVuZ3RoKCZmb3VuZCkgPj0gMSkKLQkJUEdfUkVUVVJOX0pTT05CX1AoSnNv bmJWYWx1ZVRvSnNvbmIoSnNvblZhbHVlTGlzdEhlYWQoJmZvdW5kKSkpOworCXsKKwkJSnNvbmJW YWx1ZSAqamJ2ID0gSnNvblZhbHVlTGlzdEhlYWQoJmZvdW5kKTsKKworCQlyZXR1cm4ganNvbmJ2 YWx1ZV9jb3ZlcnQoamJ2LCB0YXJnZXQpOworCX0KIAllbHNlCiAJCVBHX1JFVFVSTl9OVUxMKCk7 CiB9CkBAIC01MDYsMTMgKzUxNiwxOSBAQCBqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0X2ludGVybmFs KEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLCBib29sIHR6KQogRGF0dW0KIGpzb25iX3BhdGhfcXVl cnlfZmlyc3QoUEdfRlVOQ1RJT05fQVJHUykKIHsKLQlyZXR1cm4ganNvbmJfcGF0aF9xdWVyeV9m aXJzdF9pbnRlcm5hbChmY2luZm8sIGZhbHNlKTsKKwlyZXR1cm4ganNvbmJfcGF0aF9xdWVyeV9m aXJzdF9pbnRlcm5hbChmY2luZm8sIGZhbHNlLCBKc29uYlZhbHVlX0FzSnNvbmIpOwogfQogCiBE YXR1bQoganNvbmJfcGF0aF9xdWVyeV9maXJzdF90eihQR19GVU5DVElPTl9BUkdTKQogewotCXJl dHVybiBqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0X2ludGVybmFsKGZjaW5mbywgdHJ1ZSk7CisJcmV0 dXJuIGpzb25iX3BhdGhfcXVlcnlfZmlyc3RfaW50ZXJuYWwoZmNpbmZvLCB0cnVlLCBKc29uYlZh bHVlX0FzSnNvbmIpOworfQorCitEYXR1bQoranNvbmJfcGF0aF9xdWVyeV9maXJzdF9zdGFydChQ R19GVU5DVElPTl9BUkdTKQoreworCXJldHVybiBqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0X2ludGVy bmFsKGZjaW5mbywgZmFsc2UsIEpzb25iVmFsdWVfQXNKc29uYlZhbHVlKTsKIH0KIAogLyoqKioq KioqKioqKioqKioqKioqRXhlY3V0ZSBmdW5jdGlvbnMgZm9yIEpzb25QYXRoKioqKioqKioqKioq KioqKioqKioqKioqKiovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2Mu ZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAppbmRleCA3OTc5MzkyNy4uMzky MmFjNGQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKKysrIGIv c3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdApAQCAtNDU5MCwyNSArNDU5MCwyNSBAQAog ICBwcm9uYW1lID0+ICdwZ19sc24nLCBwcm9yZXR0eXBlID0+ICdwZ19sc24nLCBwcm9hcmd0eXBl cyA9PiAnbnVtZXJpYycsCiAgIHByb3NyYyA9PiAnbnVtZXJpY19wZ19sc24nIH0sCiAKLXsgb2lk ID0+ICczNTU2JywgZGVzY3IgPT4gJ2NvbnZlcnQganNvbmIgdG8gYm9vbGVhbicsCit7IG9pZCA9 PiAnMzU1NicsIGRlc2NyID0+ICdjb252ZXJ0IGpzb25iIHRvIGJvb2xlYW4nLCBwcm9zdXBwb3J0 ID0+ICdqc29uYl9jYXN0X3N1cHBvcnQnLAogICBwcm9uYW1lID0+ICdib29sJywgcHJvcmV0dHlw ZSA9PiAnYm9vbCcsIHByb2FyZ3R5cGVzID0+ICdqc29uYicsCiAgIHByb3NyYyA9PiAnanNvbmJf Ym9vbCcgfSwKIHsgb2lkID0+ICczNDQ5JywgZGVzY3IgPT4gJ2NvbnZlcnQganNvbmIgdG8gbnVt ZXJpYycsCi0gIHByb25hbWUgPT4gJ251bWVyaWMnLCBwcm9yZXR0eXBlID0+ICdudW1lcmljJywg cHJvYXJndHlwZXMgPT4gJ2pzb25iJywKKyAgcHJvbmFtZSA9PiAnbnVtZXJpYycsIHByb3JldHR5 cGUgPT4gJ251bWVyaWMnLCBwcm9hcmd0eXBlcyA9PiAnanNvbmInLCBwcm9zdXBwb3J0ID0+ICdq c29uYl9jYXN0X3N1cHBvcnQnLAogICBwcm9zcmMgPT4gJ2pzb25iX251bWVyaWMnIH0sCi17IG9p ZCA9PiAnMzQ1MCcsIGRlc2NyID0+ICdjb252ZXJ0IGpzb25iIHRvIGludDInLAoreyBvaWQgPT4g JzM0NTAnLCBkZXNjciA9PiAnY29udmVydCBqc29uYiB0byBpbnQyJywgcHJvc3VwcG9ydCA9PiAn anNvbmJfY2FzdF9zdXBwb3J0JywKICAgcHJvbmFtZSA9PiAnaW50MicsIHByb3JldHR5cGUgPT4g J2ludDInLCBwcm9hcmd0eXBlcyA9PiAnanNvbmInLAogICBwcm9zcmMgPT4gJ2pzb25iX2ludDIn IH0sCi17IG9pZCA9PiAnMzQ1MScsIGRlc2NyID0+ICdjb252ZXJ0IGpzb25iIHRvIGludDQnLAor eyBvaWQgPT4gJzM0NTEnLCBkZXNjciA9PiAnY29udmVydCBqc29uYiB0byBpbnQ0JywgcHJvc3Vw cG9ydCA9PiAnanNvbmJfY2FzdF9zdXBwb3J0JywKICAgcHJvbmFtZSA9PiAnaW50NCcsIHByb3Jl dHR5cGUgPT4gJ2ludDQnLCBwcm9hcmd0eXBlcyA9PiAnanNvbmInLAogICBwcm9zcmMgPT4gJ2pz b25iX2ludDQnIH0sCi17IG9pZCA9PiAnMzQ1MicsIGRlc2NyID0+ICdjb252ZXJ0IGpzb25iIHRv IGludDgnLAoreyBvaWQgPT4gJzM0NTInLCBkZXNjciA9PiAnY29udmVydCBqc29uYiB0byBpbnQ4 JywgcHJvc3VwcG9ydCA9PiAnanNvbmJfY2FzdF9zdXBwb3J0JywKICAgcHJvbmFtZSA9PiAnaW50 OCcsIHByb3JldHR5cGUgPT4gJ2ludDgnLCBwcm9hcmd0eXBlcyA9PiAnanNvbmInLAogICBwcm9z cmMgPT4gJ2pzb25iX2ludDgnIH0sCi17IG9pZCA9PiAnMzQ1MycsIGRlc2NyID0+ICdjb252ZXJ0 IGpzb25iIHRvIGZsb2F0NCcsCit7IG9pZCA9PiAnMzQ1MycsIGRlc2NyID0+ICdjb252ZXJ0IGpz b25iIHRvIGZsb2F0NCcsIHByb3N1cHBvcnQgPT4gJ2pzb25iX2Nhc3Rfc3VwcG9ydCcsCiAgIHBy b25hbWUgPT4gJ2Zsb2F0NCcsIHByb3JldHR5cGUgPT4gJ2Zsb2F0NCcsIHByb2FyZ3R5cGVzID0+ ICdqc29uYicsCiAgIHByb3NyYyA9PiAnanNvbmJfZmxvYXQ0JyB9LAoteyBvaWQgPT4gJzI1ODAn LCBkZXNjciA9PiAnY29udmVydCBqc29uYiB0byBmbG9hdDgnLAoreyBvaWQgPT4gJzI1ODAnLCBk ZXNjciA9PiAnY29udmVydCBqc29uYiB0byBmbG9hdDgnLCBwcm9zdXBwb3J0ID0+ICdqc29uYl9j YXN0X3N1cHBvcnQnLAogICBwcm9uYW1lID0+ICdmbG9hdDgnLCBwcm9yZXR0eXBlID0+ICdmbG9h dDgnLCBwcm9hcmd0eXBlcyA9PiAnanNvbmInLAogICBwcm9zcmMgPT4gJ2pzb25iX2Zsb2F0OCcg fSwKIApAQCAtOTk4Myw2ICs5OTgzLDMwIEBACiAgIHByb25hbWUgPT4gJ2pzb25iX29iamVjdF9m aWVsZF90ZXh0JywgcHJvcmV0dHlwZSA9PiAndGV4dCcsCiAgIHByb2FyZ3R5cGVzID0+ICdqc29u YiB0ZXh0JywgcHJvYXJnbmFtZXMgPT4gJ3tmcm9tX2pzb24sIGZpZWxkX25hbWV9JywKICAgcHJv c3JjID0+ICdqc29uYl9vYmplY3RfZmllbGRfdGV4dCcgfSwKK3sgb2lkID0+ICc0NTUyJywgZGVz Y3IgPT4gJ2V4dHJhY3QganNvbmJ2YWx1ZSBmcm9tIGpzb25iIGZvciB0aGUgZ2l2ZW4gZmllbGQn LAorICBwcm9uYW1lID0+ICdqc29uYl9vYmplY3RfZmllbGRfc3RhcnQnLCBwcm9yZXR0eXBlID0+ ICdpbnRlcm5hbCcsCisgIHByb2FyZ3R5cGVzID0+ICdpbnRlcm5hbCB0ZXh0JywgcHJvYXJnbmFt ZXMgPT4gJ3tmcm9tX2pzb24sIGZpZWxkX25hbWV9JywKKyAgcHJvc3JjID0+ICdqc29uYl9vYmpl Y3RfZmllbGRfc3RhcnQnIH0sCit7IG9pZCA9PiAnOTMwMycsIGRlc2NyID0+ICdleHRyYWN0IGpv c25idmFsdWUgZnJvbSBqc29uYiBhcnJheSBmb3IgdGhlIGdpdmVuIGluZGV4JywKKyAgcHJvbmFt ZSA9PiAnanNvbmJfYXJyYXlfZWxlbWVudF9zdGFydCcsIHByb3JldHR5cGUgPT4gJ2ludGVybmFs JywKKyAgcHJvYXJndHlwZXMgPT4gJ2ludGVybmFsIGludDQnLCBwcm9hcmduYW1lcyA9PiAne2Zy b21fanNvbmIsIGVsZW1lbnRfaW5kZXh9JywKKyAgcHJvc3JjID0+ICdqc29uYl9hcnJheV9lbGVt ZW50X3N0YXJ0JyB9LAoreyBvaWQgPT4gJzQ1NTEnLCBkZXNjciA9PiAnZXh0cmFjdCBqc29uYnZh bHVlIGZyb20ganNvbmIgZm9yIHRoZSBnaXZlbiBwYXRocycsCisgIHByb25hbWUgPT4gJ2pzb25i X2V4dHJhY3RfcGF0aF9zdGFydCcsIHByb3ZhcmlhZGljID0+ICd0ZXh0JywgcHJvcmV0dHlwZSA9 PiAnaW50ZXJuYWwnLAorICBwcm9hcmd0eXBlcyA9PiAnaW50ZXJuYWwgX3RleHQnLCBwcm9hbGxh cmd0eXBlcyA9PiAne2ludGVybmFsLF90ZXh0fScsCisgIHByb2FyZ21vZGVzID0+ICd7aSx2fScs IHByb2FyZ25hbWVzID0+ICd7ZnJvbV9qc29uYixwYXRoX2VsZW1zfScsCisgIHByb3NyYyA9PiAn anNvbmJfZXh0cmFjdF9wYXRoX3N0YXJ0J30sCit7IG9pZCA9PiAnNDU1MycsIGRlc2NyID0+ICdj b252ZXJ0IGEganNvbmJ2YWx1ZSB0byBudW1lcmljJywKKyAgcHJvbmFtZSA9PiAnanNvbmJfZmlu aXNoX251bWVyaWMnLCBwcm9yZXR0eXBlID0+ICdudW1lcmljJywKKyAgcHJvYXJndHlwZXMgPT4g J2ludGVybmFsIG9pZCcsIHByb2FyZ25hbWVzID0+ICd7ZnJvbV9qc29udmFsdWUsdGFyZ2V0X29p ZH0nLAorICBwcm9zcmMgPT4gJ2pzb25iX2ZpbmlzaF9udW1lcmljJyB9LAoreyBvaWQgPT4gJzQ1 NTQnLCBkZXNjciA9PiAnY29udmVydCBhIGpzb25idmFsdWUgdG8gYm9vbGVhbicsCisgIHByb25h bWUgPT4gJ2pzb25iX2ZpbmlzaF9ib29sJywgcHJvcmV0dHlwZSA9PiAnYm9vbCcsCisgIHByb2Fy Z3R5cGVzID0+ICdpbnRlcm5hbCcsIHByb2FyZ25hbWVzID0+ICd7anNvbnZhbHVlfScsCisgIHBy b3NyYyA9PiAnanNvbmJfZmluaXNoX2Jvb2wnIH0sCit7IG9pZCA9PiAnMzgxNCcsIGRlc2NyID0+ ICdwbGFubmVyIHN1cHBvcnQgZm9yIG51bWVyaWMoanNvbmIpJywKKyAgcHJvbmFtZSA9PiAnanNv bmJfY2FzdF9zdXBwb3J0JywgcHJvcmV0dHlwZSA9PiAnaW50ZXJuYWwnLAorICBwcm9hcmd0eXBl cyA9PiAnaW50ZXJuYWwnLCBwcm9zcmMgPT4gJ2pzb25iX2Nhc3Rfc3VwcG9ydCcgfSwKIHsgb2lk ID0+ICczMjE1JywKICAgcHJvbmFtZSA9PiAnanNvbmJfYXJyYXlfZWxlbWVudCcsIHByb3JldHR5 cGUgPT4gJ2pzb25iJywKICAgcHJvYXJndHlwZXMgPT4gJ2pzb25iIGludDQnLCBwcm9hcmduYW1l cyA9PiAne2Zyb21fanNvbiwgZWxlbWVudF9pbmRleH0nLApAQCAtMTAxNzUsNiArMTAxOTksMTAg QEAKICAgcHJvbmFtZSA9PiAnanNvbmJfcGF0aF9xdWVyeScsIHByb3Jvd3MgPT4gJzEwMDAnLCBw cm9yZXRzZXQgPT4gJ3QnLAogICBwcm9yZXR0eXBlID0+ICdqc29uYicsIHByb2FyZ3R5cGVzID0+ ICdqc29uYiBqc29ucGF0aCBqc29uYiBib29sJywKICAgcHJvc3JjID0+ICdqc29uYl9wYXRoX3F1 ZXJ5JyB9LAoreyBvaWQgPT4gJzQ1NTcnLCBkZXNjciA9PiAnanNvbnBhdGggcXVlcnkgYXMganNv bmJ2YWx1ZScsCisgIHByb25hbWUgPT4gJ2pzb25iX3BhdGhfcXVlcnlfc3RhcnQnLCBwcm9yb3dz ID0+ICcxMDAwJywgcHJvcmV0c2V0ID0+ICd0JywKKyAgcHJvcmV0dHlwZSA9PiAnaW50ZXJuYWwn LCBwcm9hcmd0eXBlcyA9PiAnaW50ZXJuYWwganNvbnBhdGgganNvbmIgYm9vbCcsCisgIHByb3Ny YyA9PiAnanNvbmJfcGF0aF9xdWVyeV9zdGFydCcgfSwKIHsgb2lkID0+ICc0MDA3JywgZGVzY3Ig PT4gJ2pzb25wYXRoIHF1ZXJ5IHdyYXBwZWQgaW50byBhcnJheScsCiAgIHByb25hbWUgPT4gJ2pz b25iX3BhdGhfcXVlcnlfYXJyYXknLCBwcm9yZXR0eXBlID0+ICdqc29uYicsCiAgIHByb2FyZ3R5 cGVzID0+ICdqc29uYiBqc29ucGF0aCBqc29uYiBib29sJywKQEAgLTEwMTgzLDYgKzEwMjExLDEw IEBACiAgIHByb25hbWUgPT4gJ2pzb25iX3BhdGhfcXVlcnlfZmlyc3QnLCBwcm9yZXR0eXBlID0+ ICdqc29uYicsCiAgIHByb2FyZ3R5cGVzID0+ICdqc29uYiBqc29ucGF0aCBqc29uYiBib29sJywK ICAgcHJvc3JjID0+ICdqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0JyB9LAoreyBvaWQgPT4gJzQ1NTUn LCBkZXNjciA9PiAnanNvbnBhdGggcXVlcnkgZmlyc3QgaXRlbSBhcyBqc29uYnZhbHVlJywKKyAg cHJvbmFtZSA9PiAnanNvbmJfcGF0aF9xdWVyeV9maXJzdF9zdGFydCcsIHByb3JldHR5cGUgPT4g J2ludGVybmFsJywKKyAgcHJvYXJndHlwZXMgPT4gJ2ludGVybmFsIGpzb25wYXRoIGpzb25iIGJv b2wnLAorICBwcm9zcmMgPT4gJ2pzb25iX3BhdGhfcXVlcnlfZmlyc3Rfc3RhcnQnIH0sCiB7IG9p ZCA9PiAnNDAwOScsIGRlc2NyID0+ICdqc29ucGF0aCBtYXRjaCcsCiAgIHByb25hbWUgPT4gJ2pz b25iX3BhdGhfbWF0Y2gnLCBwcm9yZXR0eXBlID0+ICdib29sJywKICAgcHJvYXJndHlwZXMgPT4g J2pzb25iIGpzb25wYXRoIGpzb25iIGJvb2wnLCBwcm9zcmMgPT4gJ2pzb25iX3BhdGhfbWF0Y2gn IH0sCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9qc29uYi5oIGIvc3JjL2luY2x1ZGUv dXRpbHMvanNvbmIuaAppbmRleCBlMzhkZmQ0OS4uNTNlMDZhMjAgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL3V0aWxzL2pzb25iLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvanNvbmIuaApAQCAt Mjk0LDYgKzI5NCwxMyBAQCBzdHJ1Y3QgSnNvbmJWYWx1ZQogCX0JCQl2YWw7CiB9OwogCit0eXBl ZGVmIGVudW0gSnNvbmJWYWx1ZVRhcmdldAoreworCUpzb25iVmFsdWVfQXNKc29uYlZhbHVlLAor CUpzb25iVmFsdWVfQXNKc29uYiwKKwlKc29uYlZhbHVlX0FzVGV4dCwKK30gSnNvbmJWYWx1ZVRh cmdldDsKKwogI2RlZmluZSBJc0FKc29uYlNjYWxhcihqc29uYnZhbCkJKCgoanNvbmJ2YWwpLT50 eXBlID49IGpidk51bGwgJiYgXAogCQkJCQkJCQkJICAoanNvbmJ2YWwpLT50eXBlIDw9IGpidkJv b2wpIHx8IFwKIAkJCQkJCQkJCSAgKGpzb25idmFsKS0+dHlwZSA9PSBqYnZEYXRldGltZSkKQEAg LTQyOCwxMiArNDM1LDEyIEBAIGV4dGVybiBjb25zdCBjaGFyICpKc29uYlR5cGVOYW1lKEpzb25i VmFsdWUgKnZhbCk7CiBleHRlcm4gRGF0dW0ganNvbmJfc2V0X2VsZW1lbnQoSnNvbmIgKmpiLCBE YXR1bSAqcGF0aCwgaW50IHBhdGhfbGVuLAogCQkJCQkJCSAgIEpzb25iVmFsdWUgKm5ld3ZhbCk7 CiBleHRlcm4gRGF0dW0ganNvbmJfZ2V0X2VsZW1lbnQoSnNvbmIgKmpiLCBEYXR1bSAqcGF0aCwg aW50IG5wYXRoLAotCQkJCQkJCSAgIGJvb2wgKmlzbnVsbCwgYm9vbCBhc190ZXh0KTsKKwkJCQkJ CQkgICBib29sICppc251bGwsIEpzb25iVmFsdWVUYXJnZXQgdGFyZ2V0KTsKIGV4dGVybiBib29s IHRvX2pzb25iX2lzX2ltbXV0YWJsZShPaWQgdHlwb2lkKTsKIGV4dGVybiBEYXR1bSBqc29uYl9i dWlsZF9vYmplY3Rfd29ya2VyKGludCBuYXJncywgY29uc3QgRGF0dW0gKmFyZ3MsIGNvbnN0IGJv b2wgKm51bGxzLAogCQkJCQkJCQkJICAgY29uc3QgT2lkICp0eXBlcywgYm9vbCBhYnNlbnRfb25f bnVsbCwKIAkJCQkJCQkJCSAgIGJvb2wgdW5pcXVlX2tleXMpOwogZXh0ZXJuIERhdHVtIGpzb25i X2J1aWxkX2FycmF5X3dvcmtlcihpbnQgbmFyZ3MsIGNvbnN0IERhdHVtICphcmdzLCBjb25zdCBi b29sICpudWxscywKIAkJCQkJCQkJCSAgY29uc3QgT2lkICp0eXBlcywgYm9vbCBhYnNlbnRfb25f bnVsbCk7Ci0KK2V4dGVybiBEYXR1bSBqc29uYnZhbHVlX2NvdmVydChKc29uYlZhbHVlICpqYnYs IEpzb25iVmFsdWVUYXJnZXQgdGFyZ2V0KTsKICNlbmRpZgkJCQkJCQkvKiBfX0pTT05CX0hfXyAq LwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qc29uYi5vdXQgYi9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pzb25iLm91dAppbmRleCBiNTk3ZDAxYS4uMDE2N2IwZTIg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbmIub3V0CisrKyBiL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbmIub3V0CkBAIC00NTcsOCArNDU3LDI0MiBAQCBD UkVBVEUgVEVNUCBUQUJMRSB0ZXN0X2pzb25iICgKICk7CiBJTlNFUlQgSU5UTyB0ZXN0X2pzb25i IFZBTFVFUwogKCdzY2FsYXInLCciYSBzY2FsYXIiJyksCisoJ3NjYWxhcmludCcsJzInKSwKICgn YXJyYXknLCdbInplcm8iLCAib25lIiwidHdvIixudWxsLCJmb3VyIiwiZml2ZSIsIFsxLDIsM10s eyJmMSI6OX1dJyksCi0oJ29iamVjdCcsJ3siZmllbGQxIjoidmFsMSIsImZpZWxkMiI6InZhbDIi LCJmaWVsZDMiOm51bGwsICJmaWVsZDQiOiA0LCAiZmllbGQ1IjogWzEsMiwzXSwgImZpZWxkNiI6 IHsiZjEiOjl9fScpOworKCdvYmplY3QnLCd7ImZpZWxkMSI6InZhbDEiLCJmaWVsZDIiOiJ2YWwy IiwiZmllbGQzIjpudWxsLCAiZmllbGQ0IjogNAorCQkJLCJmaWVsZDUiOiBbMSwyLDNdLCAiZmll bGQ2IjogeyJmMSI6OX0KKwkJCSwiZmllbGQ3IjogdHJ1ZSwgImZpZWxkOCI6IFsxLDIsMyw0LDVd fScpOworXHBzZXQgbnVsbCBOVUxMCitFWFBMQUlOIChDT1NUUyBPRkYsIFZFUkJPU0UpCitTRUxF Q1QJKHRlc3RfanNvbiAtPiAnZmllbGQ0Jyk6Om51bWVyaWMKK0ZST00gCXRlc3RfanNvbmIKK1dI RVJFIAlqc29uX3R5cGUgPSAnb2JqZWN0JzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNlcSBTY2FuIG9uIHBnX3RlbXAudGVzdF9qc29uYgor ICAgT3V0cHV0OiBqc29uYl9maW5pc2hfbnVtZXJpYyhqc29uYl9vYmplY3RfZmllbGRfc3RhcnQo KHRlc3RfanNvbik6OmludGVybmFsLCAnZmllbGQ0Jzo6dGV4dCksICcxNzAwJzo6b2lkKQorICAg RmlsdGVyOiAodGVzdF9qc29uYi5qc29uX3R5cGUgPSAnb2JqZWN0Jzo6dGV4dCkKKygzIHJvd3Mp CisKK0VYUExBSU4gKENPU1RTIE9GRiwgVkVSQk9TRSkKK1NFTEVDVAkodGVzdF9qc29uIC0+ICdm aWVsZDQnKTo6aW50MgorRlJPTSAJdGVzdF9qc29uYgorV0hFUkUgCWpzb25fdHlwZSA9ICdvYmpl Y3QnOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTZXEgU2NhbiBvbiBwZ190ZW1wLnRlc3RfanNvbmIKKyAg IE91dHB1dDogKGpzb25iX2ZpbmlzaF9udW1lcmljKGpzb25iX29iamVjdF9maWVsZF9zdGFydCgo dGVzdF9qc29uKTo6aW50ZXJuYWwsICdmaWVsZDQnOjp0ZXh0KSwgJzIxJzo6b2lkKSk6OnNtYWxs aW50CisgICBGaWx0ZXI6ICh0ZXN0X2pzb25iLmpzb25fdHlwZSA9ICdvYmplY3QnOjp0ZXh0KQor KDMgcm93cykKKworRVhQTEFJTiAoQ09TVFMgT0ZGLCBWRVJCT1NFKQorU0VMRUNUICh0ZXN0X2pz b24gLT4gJ2ZpZWxkNCcpOjppbnQ0CitGUk9NIAl0ZXN0X2pzb25iCitXSEVSRSAJanNvbl90eXBl ID0gJ29iamVjdCc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTZXEgU2NhbiBvbiBwZ190ZW1wLnRlc3RfanNv bmIKKyAgIE91dHB1dDogKGpzb25iX2ZpbmlzaF9udW1lcmljKGpzb25iX29iamVjdF9maWVsZF9z dGFydCgodGVzdF9qc29uKTo6aW50ZXJuYWwsICdmaWVsZDQnOjp0ZXh0KSwgJzIzJzo6b2lkKSk6 OmludGVnZXIKKyAgIEZpbHRlcjogKHRlc3RfanNvbmIuanNvbl90eXBlID0gJ29iamVjdCc6OnRl eHQpCisoMyByb3dzKQorCitFWFBMQUlOIChDT1NUUyBPRkYsIFZFUkJPU0UpCitTRUxFQ1QgKHRl c3RfanNvbiAtPiAnZmllbGQ0Jyk6OmludDgKK0ZST00gCXRlc3RfanNvbmIKK1dIRVJFIAlqc29u X3R5cGUgPSAnb2JqZWN0JzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTZXEgU2NhbiBvbiBwZ190ZW1wLnRlc3Rf anNvbmIKKyAgIE91dHB1dDogKGpzb25iX2ZpbmlzaF9udW1lcmljKGpzb25iX29iamVjdF9maWVs ZF9zdGFydCgodGVzdF9qc29uKTo6aW50ZXJuYWwsICdmaWVsZDQnOjp0ZXh0KSwgJzIwJzo6b2lk KSk6OmJpZ2ludAorICAgRmlsdGVyOiAodGVzdF9qc29uYi5qc29uX3R5cGUgPSAnb2JqZWN0Jzo6 dGV4dCkKKygzIHJvd3MpCisKK0VYUExBSU4JKENPU1RTIE9GRiwgVkVSQk9TRSkKK1NFTEVDVAko dGVzdF9qc29uIC0+ICdmaWVsZDQnKTo6ZmxvYXQ0CitGUk9NIAl0ZXN0X2pzb25iCitXSEVSRSAJ anNvbl90eXBlID0gJ29iamVjdCc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNlcSBTY2FuIG9uIHBnX3RlbXAudGVz dF9qc29uYgorICAgT3V0cHV0OiAoanNvbmJfZmluaXNoX251bWVyaWMoanNvbmJfb2JqZWN0X2Zp ZWxkX3N0YXJ0KCh0ZXN0X2pzb24pOjppbnRlcm5hbCwgJ2ZpZWxkNCc6OnRleHQpLCAnNzAwJzo6 b2lkKSk6OnJlYWwKKyAgIEZpbHRlcjogKHRlc3RfanNvbmIuanNvbl90eXBlID0gJ29iamVjdCc6 OnRleHQpCisoMyByb3dzKQorCitFWFBMQUlOIChDT1NUUyBPRkYsIFZFUkJPU0UpCitTRUxFQ1Qg KHRlc3RfanNvbiAtPiAnZmllbGQ0Jyk6OmZsb2F0OAorRlJPTSAJdGVzdF9qc29uYgorV0hFUkUg CWpzb25fdHlwZSA9ICdvYmplY3QnOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyBTZXEgU2NhbiBvbiBwZ190ZW1wLnRlc3RfanNvbmIKKyAgIE91dHB1dDogKGpzb25iX2Zpbmlz aF9udW1lcmljKGpzb25iX29iamVjdF9maWVsZF9zdGFydCgodGVzdF9qc29uKTo6aW50ZXJuYWws ICdmaWVsZDQnOjp0ZXh0KSwgJzcwMSc6Om9pZCkpOjpkb3VibGUgcHJlY2lzaW9uCisgICBGaWx0 ZXI6ICh0ZXN0X2pzb25iLmpzb25fdHlwZSA9ICdvYmplY3QnOjp0ZXh0KQorKDMgcm93cykKKwor RVhQTEFJTiAoQ09TVFMgT0ZGLCBWRVJCT1NFKQorU0VMRUNUICh0ZXN0X2pzb24tPidmaWVsZDUn IC0+IDApOjpudW1lcmljCitGUk9NIAl0ZXN0X2pzb25iCitXSEVSRSAJanNvbl90eXBlID0gJ29i amVjdCc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgU2VxIFNjYW4gb24gcGdfdGVtcC50ZXN0X2pzb25iCisgICBP dXRwdXQ6IGpzb25iX2ZpbmlzaF9udW1lcmljKGpzb25iX2FycmF5X2VsZW1lbnRfc3RhcnQoKCh0 ZXN0X2pzb24gLT4gJ2ZpZWxkNSc6OnRleHQpKTo6aW50ZXJuYWwsIDApLCAnMTcwMCc6Om9pZCkK KyAgIEZpbHRlcjogKHRlc3RfanNvbmIuanNvbl90eXBlID0gJ29iamVjdCc6OnRleHQpCisoMyBy b3dzKQorCitFWFBMQUlOIChDT1NUUyBPRkYsIFZFUkJPU0UpCitTRUxFQ1QgKHRlc3RfanNvbi0+ J2ZpZWxkNScgLT4gMTApOjpudW1lcmljCitGUk9NIAl0ZXN0X2pzb25iCitXSEVSRSAJanNvbl90 eXBlID0gJ29iamVjdCc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTZXEgU2NhbiBvbiBwZ190ZW1wLnRlc3Rf anNvbmIKKyAgIE91dHB1dDoganNvbmJfZmluaXNoX251bWVyaWMoanNvbmJfYXJyYXlfZWxlbWVu dF9zdGFydCgoKHRlc3RfanNvbiAtPiAnZmllbGQ1Jzo6dGV4dCkpOjppbnRlcm5hbCwgMTApLCAn MTcwMCc6Om9pZCkKKyAgIEZpbHRlcjogKHRlc3RfanNvbmIuanNvbl90eXBlID0gJ29iamVjdCc6 OnRleHQpCisoMyByb3dzKQorCitFWFBMQUlOIChDT1NUUyBPRkYsIFZFUkJPU0UpCitTRUxFQ1Qg KHRlc3RfanNvbiM+J3siZmllbGQ2IiwgImYxIn0nKTo6bnVtZXJpYworRlJPTSAJdGVzdF9qc29u YgorV0hFUkUgCWpzb25fdHlwZSA9ICdvYmplY3QnOworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyBTZXEgU2NhbiBvbiBwZ190ZW1wLnRlc3RfanNvbmIKKyAgIE91dHB1dDoganNvbmJfZmlu aXNoX251bWVyaWMoanNvbmJfZXh0cmFjdF9wYXRoX3N0YXJ0KCh0ZXN0X2pzb24pOjppbnRlcm5h bCwgVkFSSUFESUMgJ3tmaWVsZDYsZjF9Jzo6dGV4dFtdKSwgJzE3MDAnOjpvaWQpCisgICBGaWx0 ZXI6ICh0ZXN0X2pzb25iLmpzb25fdHlwZSA9ICdvYmplY3QnOjp0ZXh0KQorKDMgcm93cykKKwor RVhQTEFJTiAoQ09TVFMgT0ZGLCBWRVJCT1NFKQorU0VMRUNUICh0ZXN0X2pzb24jPid7ImZpZWxk NiIsICJmMiJ9Jyk6Om51bWVyaWMKK0ZST00gCXRlc3RfanNvbmIKK1dIRVJFIAlqc29uX3R5cGUg PSAnb2JqZWN0JzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU2VxIFNjYW4gb24gcGdf dGVtcC50ZXN0X2pzb25iCisgICBPdXRwdXQ6IGpzb25iX2ZpbmlzaF9udW1lcmljKGpzb25iX2V4 dHJhY3RfcGF0aF9zdGFydCgodGVzdF9qc29uKTo6aW50ZXJuYWwsIFZBUklBRElDICd7ZmllbGQ2 LGYyfSc6OnRleHRbXSksICcxNzAwJzo6b2lkKQorICAgRmlsdGVyOiAodGVzdF9qc29uYi5qc29u X3R5cGUgPSAnb2JqZWN0Jzo6dGV4dCkKKygzIHJvd3MpCisKK0VYUExBSU4gKENPU1RTIE9GRiwg VkVSQk9TRSkKK1NFTEVDVAkodGVzdF9qc29uIz4neyJmaWVsZDcifScpOjpib29sCitGUk9NIAl0 ZXN0X2pzb25iCitXSEVSRSAJanNvbl90eXBlID0gJ29iamVjdCc7CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTZXEgU2NhbiBvbiBwZ190ZW1wLnRlc3Rf anNvbmIKKyAgIE91dHB1dDoganNvbmJfZmluaXNoX2Jvb2woanNvbmJfZXh0cmFjdF9wYXRoX3N0 YXJ0KCh0ZXN0X2pzb24pOjppbnRlcm5hbCwgVkFSSUFESUMgJ3tmaWVsZDd9Jzo6dGV4dFtdKSkK KyAgIEZpbHRlcjogKHRlc3RfanNvbmIuanNvbl90eXBlID0gJ29iamVjdCc6OnRleHQpCisoMyBy b3dzKQorCitTRUxFQ1QKKyh0ZXN0X2pzb24gLT4gJ2ZpZWxkNCcpOjpudW1lcmljLAorKHRlc3Rf anNvbiAtPiAnZmllbGQ0Jyk6OmludDIsCisodGVzdF9qc29uIC0+ICdmaWVsZDQnKTo6aW50NCwK Kyh0ZXN0X2pzb24gLT4gJ2ZpZWxkNCcpOjppbnQ4LAorKHRlc3RfanNvbiAtPiAnZmllbGQ0Jyk6 OmZsb2F0NCwKKyh0ZXN0X2pzb24gLT4gJ2ZpZWxkNCcpOjpmbG9hdDgsCisodGVzdF9qc29uIC0+ ICdmaWVsZDUnIC0+IDApOjpudW1lcmljLAorKHRlc3RfanNvbiAtPiAnZmllbGQ1JyAtPiAxMCk6 Om51bWVyaWMsCisodGVzdF9qc29uICM+ICd7ImZpZWxkNiIsICJmMSJ9Jyk6Om51bWVyaWMsCiso dGVzdF9qc29uICM+ICd7ImZpZWxkNiIsICJmMiJ9Jyk6Om51bWVyaWMsCisodGVzdF9qc29uIz4n eyJmaWVsZDcifScpOjpib29sCitGUk9NIHRlc3RfanNvbmIKK1dIRVJFIGpzb25fdHlwZSA9ICdv YmplY3QnOworIG51bWVyaWMgfCBpbnQyIHwgaW50NCB8IGludDggfCBmbG9hdDQgfCBmbG9hdDgg fCBudW1lcmljIHwgbnVtZXJpYyB8IG51bWVyaWMgfCBudW1lcmljIHwgYm9vbCAKKy0tLS0tLS0t LSstLS0tLS0rLS0tLS0tKy0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tCisgICAgICAgNCB8ICAgIDQgfCAgICA0IHwg ICAgNCB8ICAgICAgNCB8ICAgICAgNCB8ICAgICAgIDEgfCAgICBOVUxMIHwgICAgICAgOSB8ICAg IE5VTEwgfCB0CisoMSByb3cpCisKK0VYUExBSU4gKENPU1RTIE9GRiwgVkVSQk9TRSkKK1NFTEVD VAlqc29uYl9wYXRoX3F1ZXJ5KHRlc3RfanNvbiwnJC5maWVsZDhbKl0gPyAoQCA+PSAkbWluICYm IEAgPD0gJG1heCknLCAneyJtaW4iOjIsICJtYXgiOjR9JykKK0ZST00gdGVzdF9qc29uYglXSEVS RSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyBQcm9qZWN0U2V0CisgICBPdXRwdXQ6IGpzb25iX3BhdGhfcXVlcnkodGVzdF9q c29uLCAnJC4iZmllbGQ4IlsqXT8oQCA+PSAkIm1pbiIgJiYgQCA8PSAkIm1heCIpJzo6anNvbnBh dGgsICd7Im1heCI6IDQsICJtaW4iOiAyfSc6Ompzb25iLCBmYWxzZSkKKyAgIC0+ICBTZXEgU2Nh biBvbiBwZ190ZW1wLnRlc3RfanNvbmIKKyAgICAgICAgIE91dHB1dDoganNvbl90eXBlLCB0ZXN0 X2pzb24KKyAgICAgICAgIEZpbHRlcjogKHRlc3RfanNvbmIuanNvbl90eXBlID0gJ29iamVjdCc6 OnRleHQpCisoNSByb3dzKQorCitFWFBMQUlOIChDT1NUUyBPRkYsIFZFUkJPU0UpCitTRUxFQ1QJ anNvbmJfcGF0aF9xdWVyeV9maXJzdCh0ZXN0X2pzb24sICckLmZpZWxkOFsqXSA/IChAID49ICRt aW4gJiYgQCA8PSAkbWF4KScsICd7Im1pbiI6MiwgIm1heCI6NH0nKQorRlJPTSB0ZXN0X2pzb25i CVdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOworICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNlcSBTY2FuIG9uIHBnX3RlbXAudGVzdF9qc29u YgorICAgT3V0cHV0OiBqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0KHRlc3RfanNvbiwgJyQuImZpZWxk OCJbKl0/KEAgPj0gJCJtaW4iICYmIEAgPD0gJCJtYXgiKSc6Ompzb25wYXRoLCAneyJtYXgiOiA0 LCAibWluIjogMn0nOjpqc29uYiwgZmFsc2UpCisgICBGaWx0ZXI6ICh0ZXN0X2pzb25iLmpzb25f dHlwZSA9ICdvYmplY3QnOjp0ZXh0KQorKDMgcm93cykKKworRVhQTEFJTiAoQ09TVFMgT0ZGLCBW RVJCT1NFKQorU0VMRUNUCWpzb25iX3BhdGhfcXVlcnkodGVzdF9qc29uLCckLmZpZWxkOFsqXSA/ IChAID49ICRtaW4gJiYgQCA8PSAkbWF4KScsICd7Im1pbiI6MiwgIm1heCI6NH0nKTo6aW50Mgor RlJPTSB0ZXN0X2pzb25iCVdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBSZXN1bHQKKyAg IE91dHB1dDogKGpzb25iX2ZpbmlzaF9udW1lcmljKChqc29uYl9wYXRoX3F1ZXJ5X3N0YXJ0KCh0 ZXN0X2pzb24pOjppbnRlcm5hbCwgJyQuImZpZWxkOCJbKl0/KEAgPj0gJCJtaW4iICYmIEAgPD0g JCJtYXgiKSc6Ompzb25wYXRoLCAneyJtYXgiOiA0LCAibWluIjogMn0nOjpqc29uYiwgZmFsc2Up KSwgJzIxJzo6b2lkKSk6OnNtYWxsaW50CisgICAtPiAgUHJvamVjdFNldAorICAgICAgICAgT3V0 cHV0OiBqc29uYl9wYXRoX3F1ZXJ5X3N0YXJ0KCh0ZXN0X2pzb24pOjppbnRlcm5hbCwgJyQuImZp ZWxkOCJbKl0/KEAgPj0gJCJtaW4iICYmIEAgPD0gJCJtYXgiKSc6Ompzb25wYXRoLCAneyJtYXgi OiA0LCAibWluIjogMn0nOjpqc29uYiwgZmFsc2UpCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24g cGdfdGVtcC50ZXN0X2pzb25iCisgICAgICAgICAgICAgICBPdXRwdXQ6IGpzb25fdHlwZSwgdGVz dF9qc29uCisgICAgICAgICAgICAgICBGaWx0ZXI6ICh0ZXN0X2pzb25iLmpzb25fdHlwZSA9ICdv YmplY3QnOjp0ZXh0KQorKDcgcm93cykKKworRVhQTEFJTiAoQ09TVFMgT0ZGLCBWRVJCT1NFKQor U0VMRUNUCWpzb25iX3BhdGhfcXVlcnlfZmlyc3QodGVzdF9qc29uLCAnJC5maWVsZDhbKl0gPyAo QCA+PSAkbWluICYmIEAgPD0gJG1heCknLCAneyJtaW4iOjIsICJtYXgiOjR9Jyk6OmludDIKK0ZS T00gCXRlc3RfanNvbmIJV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU2Vx IFNjYW4gb24gcGdfdGVtcC50ZXN0X2pzb25iCisgICBPdXRwdXQ6IChqc29uYl9maW5pc2hfbnVt ZXJpYyhqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0X3N0YXJ0KCh0ZXN0X2pzb24pOjppbnRlcm5hbCwg JyQuImZpZWxkOCJbKl0/KEAgPj0gJCJtaW4iICYmIEAgPD0gJCJtYXgiKSc6Ompzb25wYXRoLCAn eyJtYXgiOiA0LCAibWluIjogMn0nOjpqc29uYiwgZmFsc2UpLCAnMjEnOjpvaWQpKTo6c21hbGxp bnQKKyAgIEZpbHRlcjogKHRlc3RfanNvbmIuanNvbl90eXBlID0gJ29iamVjdCc6OnRleHQpCiso MyByb3dzKQorCitTRUxFQ1QKK2pzb25iX3BhdGhfcXVlcnkodGVzdF9qc29uLCckLmZpZWxkOFsq XSA/IChAID49ICRtaW4gJiYgQCA8PSAkbWF4KScsICd7Im1pbiI6MiwgIm1heCI6NH0nKSwKK2pz b25iX3BhdGhfcXVlcnlfZmlyc3QodGVzdF9qc29uLCAnJC5maWVsZDhbKl0gPyAoQCA+PSAkbWlu ICYmIEAgPD0gJG1heCknLCAneyJtaW4iOjIsICJtYXgiOjR9JyksCitqc29uYl9wYXRoX3F1ZXJ5 KHRlc3RfanNvbiwnJC5maWVsZDhbKl0gPyAoQCA+PSAkbWluICYmIEAgPD0gJG1heCknLCAneyJt aW4iOjIsICJtYXgiOjR9Jyk6OmludDIsCitqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0KHRlc3RfanNv biwgJyQuZmllbGQ4WypdID8gKEAgPj0gJG1pbiAmJiBAIDw9ICRtYXgpJywgJ3sibWluIjoyLCAi bWF4Ijo0fScpOjppbnQyCitGUk9NIHRlc3RfanNvbmIKK1dIRVJFIGpzb25fdHlwZSA9ICdvYmpl Y3QnOworIGpzb25iX3BhdGhfcXVlcnkgfCBqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0IHwganNvbmJf cGF0aF9xdWVyeSB8IGpzb25iX3BhdGhfcXVlcnlfZmlyc3QgCistLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAyICAgICAgICAgICAgICAgIHwgMiAgICAgICAgICAgICAgICAgICAgICB8 ICAgICAgICAgICAgICAgIDIgfCAgICAgICAgICAgICAgICAgICAgICAyCisgMyAgICAgICAgICAg ICAgICB8IDIgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAzIHwgICAgICAg ICAgICAgICAgICAgICAgMgorIDQgICAgICAgICAgICAgICAgfCAyICAgICAgICAgICAgICAgICAg ICAgIHwgICAgICAgICAgICAgICAgNCB8ICAgICAgICAgICAgICAgICAgICAgIDIKKygzIHJvd3Mp CisKK0VYUExBSU4gKENPU1RTIE9GRiwgVkVSQk9TRSkKK1NFTEVDVCAodGVzdF9qc29uICM+ICd7 fScpOjpudW1lcmljIEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnc2NhbGFyaW50 JzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgU2VxIFNjYW4gb24gcGdfdGVtcC50ZXN0X2pzb25iCisgICBPdXRwdXQ6 IGpzb25iX2ZpbmlzaF9udW1lcmljKGpzb25iX2V4dHJhY3RfcGF0aF9zdGFydCgodGVzdF9qc29u KTo6aW50ZXJuYWwsIFZBUklBRElDICd7fSc6OnRleHRbXSksICcxNzAwJzo6b2lkKQorICAgRmls dGVyOiAodGVzdF9qc29uYi5qc29uX3R5cGUgPSAnc2NhbGFyaW50Jzo6dGV4dCkKKygzIHJvd3Mp CisKK1NFTEVDVCAodGVzdF9qc29uICM+ICd7fScpOjpudW1lcmljIEZST00gdGVzdF9qc29uYiBX SEVSRSBqc29uX3R5cGUgPSAnc2NhbGFyaW50JzsKKyBudW1lcmljIAorLS0tLS0tLS0tCisgICAg ICAgMgorKDEgcm93KQorCistLSBsZXQgcmFpc2Ugc29tZSBlcnJvcnMuCitFWFBMQUlOIChDT1NU UyBPRkYsIFZFUkJPU0UpCitTRUxFQ1QgKHRlc3RfanNvbiAtPiAnZmllbGQxJyk6OmludDQgRlJP TSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg U2VxIFNjYW4gb24gcGdfdGVtcC50ZXN0X2pzb25iCisgICBPdXRwdXQ6IChqc29uYl9maW5pc2hf bnVtZXJpYyhqc29uYl9vYmplY3RfZmllbGRfc3RhcnQoKHRlc3RfanNvbik6OmludGVybmFsLCAn ZmllbGQxJzo6dGV4dCksICcyMyc6Om9pZCkpOjppbnRlZ2VyCisgICBGaWx0ZXI6ICh0ZXN0X2pz b25iLmpzb25fdHlwZSA9ICdvYmplY3QnOjp0ZXh0KQorKDMgcm93cykKKworU0VMRUNUICh0ZXN0 X2pzb24gLT4gJ2ZpZWxkMScpOjppbnQ0IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUg PSAnb2JqZWN0JzsKK0VSUk9SOiAgY2Fubm90IGNhc3QganNvbmIgc3RyaW5nIHRvIHR5cGUgaW50 ZWdlcgorU0VMRUNUICh0ZXN0X2pzb24gLT4gJ2ZpZWxkMScpOjpib29sIEZST00gdGVzdF9qc29u YiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKK0VSUk9SOiAgY2Fubm90IGNhc3QganNvbmIg c3RyaW5nIHRvIHR5cGUgYm9vbGVhbgorXHBzZXQgbnVsbCAnJwogU0VMRUNUIHRlc3RfanNvbiAt PiAneCcgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdzY2FsYXInOwogID9jb2x1 bW4/IAogLS0tLS0tLS0tLQpAQCAtNTg2LDcgKzgyMCw5IEBAIFNFTEVDVCBqc29uYl9vYmplY3Rf a2V5cyh0ZXN0X2pzb24pIEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0 JzsKICBmaWVsZDQKICBmaWVsZDUKICBmaWVsZDYKLSg2IHJvd3MpCisgZmllbGQ3CisgZmllbGQ4 CisoOCByb3dzKQogCiAtLSBudWxscwogU0VMRUNUICh0ZXN0X2pzb24tPidmaWVsZDMnKSBJUyBO VUxMIEFTIGV4cGVjdF9mYWxzZSBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29i amVjdCc7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9qc29uYi5zcWwgYi9zcmMv dGVzdC9yZWdyZXNzL3NxbC9qc29uYi5zcWwKaW5kZXggNmRhZTcxNWEuLjFiOTk1OWY5IDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9qc29uYi5zcWwKKysrIGIvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvanNvbmIuc3FsCkBAIC0xNTQsOCArMTU0LDEyMiBAQCBDUkVBVEUgVEVNUCBUQUJM RSB0ZXN0X2pzb25iICgKIAogSU5TRVJUIElOVE8gdGVzdF9qc29uYiBWQUxVRVMKICgnc2NhbGFy JywnImEgc2NhbGFyIicpLAorKCdzY2FsYXJpbnQnLCcyJyksCiAoJ2FycmF5JywnWyJ6ZXJvIiwg Im9uZSIsInR3byIsbnVsbCwiZm91ciIsImZpdmUiLCBbMSwyLDNdLHsiZjEiOjl9XScpLAotKCdv YmplY3QnLCd7ImZpZWxkMSI6InZhbDEiLCJmaWVsZDIiOiJ2YWwyIiwiZmllbGQzIjpudWxsLCAi ZmllbGQ0IjogNCwgImZpZWxkNSI6IFsxLDIsM10sICJmaWVsZDYiOiB7ImYxIjo5fX0nKTsKKygn b2JqZWN0JywneyJmaWVsZDEiOiJ2YWwxIiwiZmllbGQyIjoidmFsMiIsImZpZWxkMyI6bnVsbCwg ImZpZWxkNCI6IDQKKwkJCSwiZmllbGQ1IjogWzEsMiwzXSwgImZpZWxkNiI6IHsiZjEiOjl9CisJ CQksImZpZWxkNyI6IHRydWUsICJmaWVsZDgiOiBbMSwyLDMsNCw1XX0nKTsKKworXHBzZXQgbnVs bCBOVUxMCisKK0VYUExBSU4gKENPU1RTIE9GRiwgVkVSQk9TRSkKK1NFTEVDVAkodGVzdF9qc29u IC0+ICdmaWVsZDQnKTo6bnVtZXJpYworRlJPTSAJdGVzdF9qc29uYgorV0hFUkUgCWpzb25fdHlw ZSA9ICdvYmplY3QnOworCitFWFBMQUlOIChDT1NUUyBPRkYsIFZFUkJPU0UpCitTRUxFQ1QJKHRl c3RfanNvbiAtPiAnZmllbGQ0Jyk6OmludDIKK0ZST00gCXRlc3RfanNvbmIKK1dIRVJFIAlqc29u X3R5cGUgPSAnb2JqZWN0JzsKKworRVhQTEFJTiAoQ09TVFMgT0ZGLCBWRVJCT1NFKQorU0VMRUNU ICh0ZXN0X2pzb24gLT4gJ2ZpZWxkNCcpOjppbnQ0CitGUk9NIAl0ZXN0X2pzb25iCitXSEVSRSAJ anNvbl90eXBlID0gJ29iamVjdCc7CisKK0VYUExBSU4gKENPU1RTIE9GRiwgVkVSQk9TRSkKK1NF TEVDVCAodGVzdF9qc29uIC0+ICdmaWVsZDQnKTo6aW50OAorRlJPTSAJdGVzdF9qc29uYgorV0hF UkUgCWpzb25fdHlwZSA9ICdvYmplY3QnOworCitFWFBMQUlOCShDT1NUUyBPRkYsIFZFUkJPU0Up CitTRUxFQ1QJKHRlc3RfanNvbiAtPiAnZmllbGQ0Jyk6OmZsb2F0NAorRlJPTSAJdGVzdF9qc29u YgorV0hFUkUgCWpzb25fdHlwZSA9ICdvYmplY3QnOworCitFWFBMQUlOIChDT1NUUyBPRkYsIFZF UkJPU0UpCitTRUxFQ1QgKHRlc3RfanNvbiAtPiAnZmllbGQ0Jyk6OmZsb2F0OAorRlJPTSAJdGVz dF9qc29uYgorV0hFUkUgCWpzb25fdHlwZSA9ICdvYmplY3QnOworCitFWFBMQUlOIChDT1NUUyBP RkYsIFZFUkJPU0UpCitTRUxFQ1QgKHRlc3RfanNvbi0+J2ZpZWxkNScgLT4gMCk6Om51bWVyaWMK K0ZST00gCXRlc3RfanNvbmIKK1dIRVJFIAlqc29uX3R5cGUgPSAnb2JqZWN0JzsKKworRVhQTEFJ TiAoQ09TVFMgT0ZGLCBWRVJCT1NFKQorU0VMRUNUICh0ZXN0X2pzb24tPidmaWVsZDUnIC0+IDEw KTo6bnVtZXJpYworRlJPTSAJdGVzdF9qc29uYgorV0hFUkUgCWpzb25fdHlwZSA9ICdvYmplY3Qn OworCitFWFBMQUlOIChDT1NUUyBPRkYsIFZFUkJPU0UpCitTRUxFQ1QgKHRlc3RfanNvbiM+J3si ZmllbGQ2IiwgImYxIn0nKTo6bnVtZXJpYworRlJPTSAJdGVzdF9qc29uYgorV0hFUkUgCWpzb25f dHlwZSA9ICdvYmplY3QnOworCitFWFBMQUlOIChDT1NUUyBPRkYsIFZFUkJPU0UpCitTRUxFQ1Qg KHRlc3RfanNvbiM+J3siZmllbGQ2IiwgImYyIn0nKTo6bnVtZXJpYworRlJPTSAJdGVzdF9qc29u YgorV0hFUkUgCWpzb25fdHlwZSA9ICdvYmplY3QnOworCitFWFBMQUlOIChDT1NUUyBPRkYsIFZF UkJPU0UpCitTRUxFQ1QJKHRlc3RfanNvbiM+J3siZmllbGQ3In0nKTo6Ym9vbAorRlJPTSAJdGVz dF9qc29uYgorV0hFUkUgCWpzb25fdHlwZSA9ICdvYmplY3QnOworCitTRUxFQ1QKKyh0ZXN0X2pz b24gLT4gJ2ZpZWxkNCcpOjpudW1lcmljLAorKHRlc3RfanNvbiAtPiAnZmllbGQ0Jyk6OmludDIs CisodGVzdF9qc29uIC0+ICdmaWVsZDQnKTo6aW50NCwKKyh0ZXN0X2pzb24gLT4gJ2ZpZWxkNCcp OjppbnQ4LAorKHRlc3RfanNvbiAtPiAnZmllbGQ0Jyk6OmZsb2F0NCwKKyh0ZXN0X2pzb24gLT4g J2ZpZWxkNCcpOjpmbG9hdDgsCisodGVzdF9qc29uIC0+ICdmaWVsZDUnIC0+IDApOjpudW1lcmlj LAorKHRlc3RfanNvbiAtPiAnZmllbGQ1JyAtPiAxMCk6Om51bWVyaWMsCisodGVzdF9qc29uICM+ ICd7ImZpZWxkNiIsICJmMSJ9Jyk6Om51bWVyaWMsCisodGVzdF9qc29uICM+ICd7ImZpZWxkNiIs ICJmMiJ9Jyk6Om51bWVyaWMsCisodGVzdF9qc29uIz4neyJmaWVsZDcifScpOjpib29sCitGUk9N IHRlc3RfanNvbmIKK1dIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOworCitFWFBMQUlOIChDT1NU UyBPRkYsIFZFUkJPU0UpCitTRUxFQ1QJanNvbmJfcGF0aF9xdWVyeSh0ZXN0X2pzb24sJyQuZmll bGQ4WypdID8gKEAgPj0gJG1pbiAmJiBAIDw9ICRtYXgpJywgJ3sibWluIjoyLCAibWF4Ijo0fScp CitGUk9NIHRlc3RfanNvbmIJV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7CisKK0VYUExBSU4g KENPU1RTIE9GRiwgVkVSQk9TRSkKK1NFTEVDVAlqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0KHRlc3Rf anNvbiwgJyQuZmllbGQ4WypdID8gKEAgPj0gJG1pbiAmJiBAIDw9ICRtYXgpJywgJ3sibWluIjoy LCAibWF4Ijo0fScpCitGUk9NIHRlc3RfanNvbmIJV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7 CisKK0VYUExBSU4gKENPU1RTIE9GRiwgVkVSQk9TRSkKK1NFTEVDVAlqc29uYl9wYXRoX3F1ZXJ5 KHRlc3RfanNvbiwnJC5maWVsZDhbKl0gPyAoQCA+PSAkbWluICYmIEAgPD0gJG1heCknLCAneyJt aW4iOjIsICJtYXgiOjR9Jyk6OmludDIKK0ZST00gdGVzdF9qc29uYglXSEVSRSBqc29uX3R5cGUg PSAnb2JqZWN0JzsKKworRVhQTEFJTiAoQ09TVFMgT0ZGLCBWRVJCT1NFKQorU0VMRUNUCWpzb25i X3BhdGhfcXVlcnlfZmlyc3QodGVzdF9qc29uLCAnJC5maWVsZDhbKl0gPyAoQCA+PSAkbWluICYm IEAgPD0gJG1heCknLCAneyJtaW4iOjIsICJtYXgiOjR9Jyk6OmludDIKK0ZST00gCXRlc3RfanNv bmIJV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7CisKK1NFTEVDVAoranNvbmJfcGF0aF9xdWVy eSh0ZXN0X2pzb24sJyQuZmllbGQ4WypdID8gKEAgPj0gJG1pbiAmJiBAIDw9ICRtYXgpJywgJ3si bWluIjoyLCAibWF4Ijo0fScpLAoranNvbmJfcGF0aF9xdWVyeV9maXJzdCh0ZXN0X2pzb24sICck LmZpZWxkOFsqXSA/IChAID49ICRtaW4gJiYgQCA8PSAkbWF4KScsICd7Im1pbiI6MiwgIm1heCI6 NH0nKSwKK2pzb25iX3BhdGhfcXVlcnkodGVzdF9qc29uLCckLmZpZWxkOFsqXSA/IChAID49ICRt aW4gJiYgQCA8PSAkbWF4KScsICd7Im1pbiI6MiwgIm1heCI6NH0nKTo6aW50MiwKK2pzb25iX3Bh dGhfcXVlcnlfZmlyc3QodGVzdF9qc29uLCAnJC5maWVsZDhbKl0gPyAoQCA+PSAkbWluICYmIEAg PD0gJG1heCknLCAneyJtaW4iOjIsICJtYXgiOjR9Jyk6OmludDIKK0ZST00gdGVzdF9qc29uYgor V0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7CisKK0VYUExBSU4gKENPU1RTIE9GRiwgVkVSQk9T RSkKK1NFTEVDVCAodGVzdF9qc29uICM+ICd7fScpOjpudW1lcmljIEZST00gdGVzdF9qc29uYiBX SEVSRSBqc29uX3R5cGUgPSAnc2NhbGFyaW50JzsKKworU0VMRUNUICh0ZXN0X2pzb24gIz4gJ3t9 Jyk6Om51bWVyaWMgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdzY2FsYXJpbnQn OworCistLSBsZXQgcmFpc2Ugc29tZSBlcnJvcnMuCitFWFBMQUlOIChDT1NUUyBPRkYsIFZFUkJP U0UpCitTRUxFQ1QgKHRlc3RfanNvbiAtPiAnZmllbGQxJyk6OmludDQgRlJPTSB0ZXN0X2pzb25i IFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOworCitTRUxFQ1QgKHRlc3RfanNvbiAtPiAnZmll bGQxJyk6OmludDQgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOwor CitTRUxFQ1QgKHRlc3RfanNvbiAtPiAnZmllbGQxJyk6OmJvb2wgRlJPTSB0ZXN0X2pzb25iIFdI RVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOworCitccHNldCBudWxsICcnCiAKIFNFTEVDVCB0ZXN0 X2pzb24gLT4gJ3gnIEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnc2NhbGFyJzsK IFNFTEVDVCB0ZXN0X2pzb24gLT4gJ3gnIEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUg PSAnYXJyYXknOwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3Qg Yi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAppbmRleCA1ZmQ0NmI3Yi4uNGNhNjY3 OWUgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3Ny Yy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CkBAIC0xMjY1LDYgKzEyNjUsNyBAQCBKc29u QXJyYXlBZ2cKIEpzb25BcnJheUNvbnN0cnVjdG9yCiBKc29uQXJyYXlRdWVyeUNvbnN0cnVjdG9y CiBKc29uQmFzZU9iamVjdEluZm8KK0pzb25iVmFsdWVUYXJnZXQKIEpzb25Db25zdHJ1Y3RvckV4 cHIKIEpzb25Db25zdHJ1Y3RvckV4cHJTdGF0ZQogSnNvbkNvbnN0cnVjdG9yVHlwZQotLSAKMi4z NC4xCgo= --000000000000664127060e63e756 Content-Type: application/octet-stream; name="v1-0001-Improve-performance-of-Jsonb-extract-via-key-and-c.no-cfbot" Content-Disposition: attachment; filename="v1-0001-Improve-performance-of-Jsonb-extract-via-key-and-c.no-cfbot" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lr3ah6b31 RnJvbSBjNDQ3NjI5ZjJhMzI5MGU3NGM1MjM2ZGMxMTQ1YjhmMmFmYjE3NzJhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFN1biwgNyBKYW4gMjAyNCAxMzozODo0OCArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjE2 IDEvMV0gSW1wcm92ZSBwZXJmb3JtYW5jZSBvZiBKc29uYiBleHRyYWN0ICh2aWEga2V5KSBhbmQK IGNhc3QgdG8gbnVtZXJpY2FsL2Jvb2wgZGF0YSB0eXBlCk1JTUUtVmVyc2lvbjogMS4wCkNvbnRl bnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOApDb250ZW50LVRyYW5zZmVyLUVuY29k aW5nOiA4Yml0CgpvcHRpbWl6ZSBmb3IgdGhlIGZvbGxvd2luZ3MgY2FzZXM6Cihqc29uYihvYmpl Y3QpIC0+ICdrZXknKTo6bnVtZXJpYwooanNvbmIob2JqZWN0KSAtPiAna2V5Jyk6OmludDIKKGpz b25iKG9iamVjdCkgLT4gJ2tleScpOjppbnQ0Cihqc29uYihvYmplY3QpIC0+ICdrZXknKTo6aW50 OAooanNvbmIob2JqZWN0KSAtPiAna2V5Jyk6OmZsb2F0NAooanNvbmIob2JqZWN0KSAtPiAna2V5 Jyk6OmZsb2F0OAooanNvbmIob2JqZWN0KSAtPiAna2V5Jyk6OmJvb2wKCmZvciB0aGVzZSBzY2Fy ZW5pbywgaW4gdGhlIG1hc3RlciB3ZSBuZWVkCmV4dHJhY3QgdGhlIGpzb25idmFsdWUsIGNvdmVy dCB0byBqc29uYiwKdGhlbiBjb252ZXJ0IGJhY2sgdG8ganNvbmJ2YWx1ZSB0aGVuIGNhc3QgdG8g bnVtZXJpY2FsIG9yIGJvb2wgdHlwZQoKd2l0aCB0aGUgcGFjdGguCmV4dHJhY3QgdGhlIGpzb25i dmFsdWUsIGRvaW5nIGxvZ2ljIG9uIHRvcCBvZiB0aGUgZXh0cmFjdGVkIGpzb25idmFsdWUuCgpJ IHRoaW5rIHRoaXMgb3B0aW1pemF0aW9uIHdpbGwgd29yay4gYmVjYXVzZToKMS4gdmFsaWRhdGUg YGpzb25iKG9iamVjdClgIMKgaXMgcmVhbGx5IG9iamVjdCB0eXBlIHdvcmsgYXMgYmVmb3JlLgoy LiB0ZXN0IGlmIHRoZSBrZXkgaXMgaW4gdGhlIGpzb25iIHdvcmsgYXMgYmVmb3JlLgozLiBhc3N1 bWUgdGhlIGtleSBleGlzdHMuIEluIHRoZSBtYXN0ZXIsIHdlIGZpcnN0IGNhc3QganNvbmIgdG8g anNvbmJ2YWx1ZSB0aGVuIHZhbGlkYXRlIHRoZSBqc29uYnZhbHVlIHR5cGUgaXMgamJ2TnVtZXJp Ywp3aXRoIHRoZSBwYXRjaCwgd2UgdmFsaWRhdGUgwqBqc29uYnZhbHVlIHR5cGUgaXMgamJ2TnVt ZXJpYyBpbiBqc29uYl9maW5pc2hfbnVtZXJpYy4KNC4gZnJvbSBudW1lcmljIGRhdGEgdHlwZSB0 byBvdGhlciBudW1lcmljYWwgZGF0YSB0eXBlIHdvcmsgYXMgYmVmb3JlLgotLS0KIHNyYy9iYWNr ZW5kL3V0aWxzL2FkdC9qc29uYi5jICAgICAgIHwgMTUyICsrKysrKysrKysrKysrKysrKysrKysr KysrKysKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uZnVuY3MuYyAgIHwgIDU5ICsrKysrKysr LS0tCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICB8ICAzMCArKysrLS0KIHNy Yy9pbmNsdWRlL3V0aWxzL2pzb25iLmggICAgICAgICAgIHwgICA4ICsrCiBzcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL2pzb25iLm91dCB8IDEwOCArKysrKysrKysrKysrKysrKysrLQogc3JjL3Rl c3QvcmVncmVzcy9zcWwvanNvbmIuc3FsICAgICAgfCAgNTcgKysrKysrKysrKy0KIHNyYy90b29s cy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICAgIHwgICAxICsKIDcgZmlsZXMgY2hhbmdlZCwgMzg5 IGluc2VydGlvbnMoKyksIDI2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9qc29uYi5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25iLmMKaW5kZXgg YzEwYjNmYmUuLjAxODcxN2FiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvanNv bmIuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmIuYwpAQCAtMTcsMTEgKzE3LDE1 IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19wcm9jLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190 eXBlLmgiCiAjaW5jbHVkZSAiZnVuY2FwaS5oIgorI2luY2x1ZGUgIm5vZGVzL21ha2VmdW5jcy5o IgorI2luY2x1ZGUgIm5vZGVzL3N1cHBvcnRub2Rlcy5oIgorI2luY2x1ZGUgInBhcnNlci9wYXJz ZV9jb2VyY2UuaCIKICNpbmNsdWRlICJsaWJwcS9wcWZvcm1hdC5oIgogI2luY2x1ZGUgIm1pc2Nh ZG1pbi5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVkZSAidXRpbHMvZGF0 ZS5oIgogI2luY2x1ZGUgInV0aWxzL2RhdGV0aW1lLmgiCisjaW5jbHVkZSAidXRpbHMvZm1ncm9p ZHMuaCIKICNpbmNsdWRlICJ1dGlscy9qc29uLmgiCiAjaW5jbHVkZSAidXRpbHMvanNvbmIuaCIK ICNpbmNsdWRlICJ1dGlscy9qc29uZnVuY3MuaCIKQEAgLTIwMzksNiArMjA0MywxNTQgQEAgY2Fu bm90Q2FzdEpzb25iVmFsdWUoZW51bSBqYnZUeXBlIHR5cGUsIGNvbnN0IGNoYXIgKnNxbHR5cGUp CiAJZWxvZyhFUlJPUiwgInVua25vd24ganNvbmIgdHlwZTogJWQiLCAoaW50KSB0eXBlKTsKIH0K IAorCisvKgorICoganNvbmJfY2FzdF9zdXBwb3J0KCkKKyAqCisgKiBQbGFubmVyIHN1cHBvcnQg ZnVuY3Rpb24gZm9yIGNhc3RpbmcgYSBqc29uYiBleHRyYWN0aW9uIHRvIGEgbnVtZXJpYworICog b3IgYm9vbCBkYXRhIHR5cGUuIEluc3RlYWQgb2YgY29udmVydGluZyBhIGpzb25idmFsdWUgdG8g anNvbmIsIHRoZSBuZXcKKyAqIG1ldGhvZCB3aWxsIGNhc3QgdGhlIGpzb25idmFsdWUgdG8gdGhl IGRlc2lyZWQgZGF0YSB0eXBlIGRpcmVjdGx5LgorICovCitEYXR1bQoranNvbmJfY2FzdF9zdXBw b3J0KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJTm9kZQkgICAqcmF3cmVxID0gKE5vZGUgKikgUEdf R0VUQVJHX1BPSU5URVIoMCk7CisKKwlpZiAoSXNBKHJhd3JlcSwgU3VwcG9ydFJlcXVlc3RTaW1w bGlmeSkpCisJeworCQlTdXBwb3J0UmVxdWVzdFNpbXBsaWZ5ICpyZXEgPSAoU3VwcG9ydFJlcXVl c3RTaW1wbGlmeSAqKSByYXdyZXE7CisJCUZ1bmNFeHByICAgKmZleHByID0gcmVxLT5mY2FsbDsK KwkJRnVuY0V4cHIgICAqanNvbmJfc3RhcnRfZnVuYyA9IE5VTEwsCisJCQkJICAgKmpzb25iX2Zp bmlzaF9mdW5jID0gTlVMTCwKKwkJCQkgICAqZmluYWxfZnVuYyA9IE5VTEw7CisJCU5vZGUJICAg KmlucHV0OworCQlPaWQJCQluZXdfZnVuY19pZCA9IEludmFsaWRPaWQ7CisJCUxpc3QJICAgKmFy Z3M7CisJCU9pZAkJCWlucHV0X2Z1bmNfaWQsCisJCQkJCWNvbGxpZCwKKwkJCQkJaW5wdXRjb2xs aWQ7CisJCWJvb2wJCXJldHNldCA9IGZhbHNlLAorCQkJCQl2YXJpYWRpYyA9IGZhbHNlOworCisJ CUFzc2VydChsaXN0X2xlbmd0aChmZXhwci0+YXJncykgPT0gMSk7CisJCWlucHV0ID0gKE5vZGUg KikgbGluaXRpYWwoZmV4cHItPmFyZ3MpOworCisJCWlmIChJc0EoaW5wdXQsIE9wRXhwcikpCisJ CXsKKwkJCU9wRXhwcgkgICAqb3BFeHByID0gY2FzdE5vZGUoT3BFeHByLCBpbnB1dCk7CisKKwkJ CWlucHV0X2Z1bmNfaWQgPSBvcEV4cHItPm9wZnVuY2lkOworCQkJY29sbGlkID0gb3BFeHByLT5v cGNvbGxpZDsKKwkJCWlucHV0Y29sbGlkID0gb3BFeHByLT5pbnB1dGNvbGxpZDsKKwkJCWFyZ3Mg PSBvcEV4cHItPmFyZ3M7CisJCX0KKwkJZWxzZSBpZiAoSXNBKGlucHV0LCBGdW5jRXhwcikpCisJ CXsKKwkJCUZ1bmNFeHByICAgKmZ1bmNFeHByID0gY2FzdE5vZGUoRnVuY0V4cHIsIGlucHV0KTsK KworCQkJaW5wdXRfZnVuY19pZCA9IGZ1bmNFeHByLT5mdW5jaWQ7CisJCQljb2xsaWQgPSBmdW5j RXhwci0+ZnVuY2NvbGxpZDsKKwkJCWlucHV0Y29sbGlkID0gZnVuY0V4cHItPmlucHV0Y29sbGlk OworCQkJYXJncyA9IGZ1bmNFeHByLT5hcmdzOworCQl9CisJCWVsc2UKKwkJCS8qIG5vdCB0aGUg ZGVzaXJlZCBwYXR0ZXJuLiAqLworCQkJUEdfUkVUVVJOX1BPSU5URVIoTlVMTCk7CisKKwkJLyog YnVpbGQgYSBmdW5jdGlvbiB0byByZXR1cm4gdGhlIEpzb25iVmFsdWUgZGlyZWN0bHkuICovCisJ CXN3aXRjaCAoaW5wdXRfZnVuY19pZCkKKwkJeworCQkJY2FzZSBGX0pTT05CX09CSkVDVF9GSUVM RDoKKwkJCQluZXdfZnVuY19pZCA9IEZfSlNPTkJfT0JKRUNUX0ZJRUxEX1NUQVJUOworCQkJCWJy ZWFrOworCisJCQlkZWZhdWx0OgorCQkJCW5ld19mdW5jX2lkID0gSW52YWxpZE9pZDsKKwkJCQli cmVhazsKKwkJfQorCisJCWlmICghT2lkSXNWYWxpZChuZXdfZnVuY19pZCkpCisJCQlQR19SRVRV Uk5fUE9JTlRFUihOVUxMKTsKKworCQlqc29uYl9zdGFydF9mdW5jID0gbWFrZUZ1bmNFeHByKG5l d19mdW5jX2lkLCBJTlRFUk5BTE9JRCwgYXJncywKKwkJCQkJCQkJCQljb2xsaWQsIGlucHV0Y29s bGlkLAorCQkJCQkJCQkJCUNPRVJDRV9FWFBMSUNJVF9DQUxMKTsKKwkJanNvbmJfc3RhcnRfZnVu Yy0+ZnVuY3JldHNldCA9IHJldHNldDsKKwkJanNvbmJfc3RhcnRfZnVuYy0+ZnVuY3ZhcmlhZGlj ID0gdmFyaWFkaWM7CisKKwkJLyogcmVsYWJlbCB0aGUgZmlyc3QgYXJndW1lbnQgYXMgJ2ludGVy bmFsJy4gKi8KKwkJbGluaXRpYWwoanNvbmJfc3RhcnRfZnVuYy0+YXJncykgPSBtYWtlUmVsYWJl bFR5cGUobGluaXRpYWwoanNvbmJfc3RhcnRfZnVuYy0+YXJncyksCisJCQkJCQkJCQkJCQkJCSAg IElOVEVSTkFMT0lELCAtMSwKKwkJCQkJCQkJCQkJCQkJICAgSW52YWxpZE9pZCwKKwkJCQkJCQkJ CQkJCQkJICAgQ09FUkNFX0lNUExJQ0lUX0NBU1QpOworCQlzd2l0Y2ggKGZleHByLT5mdW5jcmVz dWx0dHlwZSkKKwkJeworCQkJY2FzZSBJTlQyT0lEOgorCQkJY2FzZSBJTlQ0T0lEOgorCQkJY2Fz ZSBJTlQ4T0lEOgorCQkJY2FzZSBGTE9BVDRPSUQ6CisJCQljYXNlIEZMT0FUOE9JRDoKKwkJCWNh c2UgTlVNRVJJQ09JRDoKKwkJCQkvKiBidWlsZCB0aGUgZnVuY3Rpb24gdG8gdHVybiB0aGUgSnNv bmJWYWx1ZSBpbnRvIG51bWVyaWMgKi8KKwkJCQlqc29uYl9maW5pc2hfZnVuYyA9IG1ha2VGdW5j RXhwcihGX0pTT05CX0ZJTklTSF9OVU1FUklDLCBOVU1FUklDT0lELAorCQkJCQkJCQkJCQkJIGxp c3RfbWFrZTIoanNvbmJfc3RhcnRfZnVuYywKKwkJCQkJCQkJCQkJCQkJCW1ha2VDb25zdChPSURP SUQsCisJCQkJCQkJCQkJCQkJCQkJCSAgLTEsCisJCQkJCQkJCQkJCQkJCQkJCSAgSW52YWxpZE9p ZCwKKwkJCQkJCQkJCQkJCQkJCQkJICBzaXplb2YoT2lkKSwKKwkJCQkJCQkJCQkJCQkJCQkJICBP YmplY3RJZEdldERhdHVtKGZleHByLT5mdW5jcmVzdWx0dHlwZSksCisJCQkJCQkJCQkJCQkJCQkJ CSAgZmFsc2UsCisJCQkJCQkJCQkJCQkJCQkJCSAgdHJ1ZSkpLAorCQkJCQkJCQkJCQkJIGNvbGxp ZCwgaW5wdXRjb2xsaWQsIENPRVJDRV9FWFBMSUNJVF9DQUxMKTsKKworCQkJCWlmIChmZXhwci0+ ZnVuY3Jlc3VsdHR5cGUgIT0gTlVNRVJJQ09JRCkKKwkJCQl7CisJCQkJCS8qCisJCQkJCSAqIGxl dmVyYWdlIHRoZSBjYXN0aW5nIHN5c3RlbSB0byB0dXJuIHRoZSBudW1lcmljIHRvCisJCQkJCSAq IGRlc2lyZWQgdHlwZS4KKwkJCQkJICovCisJCQkJCWZpbmFsX2Z1bmMgPSAoRnVuY0V4cHIgKikg Y29lcmNlX3R5cGUoTlVMTCwgKE5vZGUgKikganNvbmJfZmluaXNoX2Z1bmMsIE5VTUVSSUNPSUQs CisJCQkJCQkJCQkJCQkJCSAgZmV4cHItPmZ1bmNyZXN1bHR0eXBlLCAwLCBDT0VSQ0lPTl9FWFBM SUNJVCwKKwkJCQkJCQkJCQkJCQkJICBDT0VSQ0VfRVhQTElDSVRfQ0FTVCwgZmV4cHItPmxvY2F0 aW9uKTsKKwkJCQl9CisJCQkJZWxzZQorCQkJCQlmaW5hbF9mdW5jID0ganNvbmJfZmluaXNoX2Z1 bmM7CisKKwkJCQlQR19SRVRVUk5fUE9JTlRFUihmaW5hbF9mdW5jKTsKKwkJCWNhc2UgQk9PTE9J RDoKKwkJCQlmaW5hbF9mdW5jID0gbWFrZUZ1bmNFeHByKEZfSlNPTkJfRklOSVNIX0JPT0wsIEJP T0xPSUQsCisJCQkJCQkJCQkJICBsaXN0X21ha2UxKGpzb25iX3N0YXJ0X2Z1bmMpLCBjb2xsaWQs CisJCQkJCQkJCQkJICBpbnB1dGNvbGxpZCwgQ09FUkNFX0VYUExJQ0lUX0NBTEwpOworCQkJCVBH X1JFVFVSTl9QT0lOVEVSKGZpbmFsX2Z1bmMpOworCQkJZGVmYXVsdDoKKwkJCQlQR19SRVRVUk5f UE9JTlRFUihOVUxMKTsKKwkJfQorCX0KKwlQR19SRVRVUk5fUE9JTlRFUihOVUxMKTsKK30KKwor CitEYXR1bQoranNvbmJfZmluaXNoX251bWVyaWMoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlKc29u YlZhbHVlICp2ID0gKEpzb25iVmFsdWUgKikgUEdfR0VUQVJHX1BPSU5URVIoMCk7CisJT2lkCQkJ ZmluYWxfb2lkID0gUEdfR0VUQVJHX09JRCgxKTsKKworCWlmICh2LT50eXBlICE9IGpidk51bWVy aWMpCisJCWNhbm5vdENhc3RKc29uYlZhbHVlKHYtPnR5cGUsIGZvcm1hdF90eXBlX2JlKGZpbmFs X29pZCkpOworCVBHX1JFVFVSTl9OVU1FUklDKHYtPnZhbC5udW1lcmljKTsKK30KKworRGF0dW0K K2pzb25iX2ZpbmlzaF9ib29sKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJSnNvbmJWYWx1ZSAqdiA9 IChKc29uYlZhbHVlICopIFBHX0dFVEFSR19QT0lOVEVSKDApOworCisJaWYgKHYtPnR5cGUgIT0g amJ2Qm9vbCkKKwkJY2Fubm90Q2FzdEpzb25iVmFsdWUodi0+dHlwZSwgImJvb2xlYW4iKTsKKwlQ R19SRVRVUk5fQk9PTCh2LT52YWwuYm9vbGVhbik7Cit9CisKIERhdHVtCiBqc29uYl9ib29sKFBH X0ZVTkNUSU9OX0FSR1MpCiB7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvanNv bmZ1bmNzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmZ1bmNzLmMKaW5kZXggY2FhYWZi NzIuLjEyYTZmMDdjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmZ1bmNz LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25mdW5jcy5jCkBAIC00OTIsNiArNDky LDIyIEBAIHN0YXRpYyBKc29uUGFyc2VFcnJvclR5cGUgdHJhbnNmb3JtX3N0cmluZ192YWx1ZXNf b2JqZWN0X2ZpZWxkX3N0YXJ0KHZvaWQgKnN0YXRlCiBzdGF0aWMgSnNvblBhcnNlRXJyb3JUeXBl IHRyYW5zZm9ybV9zdHJpbmdfdmFsdWVzX2FycmF5X2VsZW1lbnRfc3RhcnQodm9pZCAqc3RhdGUs IGJvb2wgaXNudWxsKTsKIHN0YXRpYyBKc29uUGFyc2VFcnJvclR5cGUgdHJhbnNmb3JtX3N0cmlu Z192YWx1ZXNfc2NhbGFyKHZvaWQgKnN0YXRlLCBjaGFyICp0b2tlbiwgSnNvblRva2VuVHlwZSB0 b2tlbnR5cGUpOwogCitEYXR1bQoranNvbmJ2YWx1ZV9jb3ZlcnQoSnNvbmJWYWx1ZSAqamJ2LCBK c29uYlZhbHVlVGFyZ2V0IHRhcmdldCkKK3sKKwlzd2l0Y2ggKHRhcmdldCkKKwl7CisJCWNhc2Ug SnNvbmJWYWx1ZV9Bc0pzb25iVmFsdWU6CisJCQlQR19SRVRVUk5fUE9JTlRFUihqYnYpOworCQlj YXNlIEpzb25iVmFsdWVfQXNKc29uYjoKKwkJCVBHX1JFVFVSTl9KU09OQl9QKEpzb25iVmFsdWVU b0pzb25iKGpidikpOworCQljYXNlIEpzb25iVmFsdWVfQXNUZXh0OgorCQkJUEdfUkVUVVJOX1RF WFRfUChKc29uYlZhbHVlQXNUZXh0KGpidikpOworCQlkZWZhdWx0OgorCQkJZWxvZyhFUlJPUiwg ImludmFsaWQganNvbmJ2YWx1ZSBjYXN0IHRhcmdldCB0eXBlIik7CisJfQorCXBnX3VucmVhY2hh YmxlKCk7Cit9CiAKIC8qCiAgKiBwZ19wYXJzZV9qc29uX29yX2VycnNhdmUKQEAgLTg0NywyNiAr ODYzLDM3IEBAIGpzb25fb2JqZWN0X2ZpZWxkKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCVBHX1JFVFVS Tl9OVUxMKCk7CiB9CiAKK3N0YXRpYyBEYXR1bQoranNvbmJfb2JqZWN0X2ZpZWxkX2ludGVybmFs KEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLCBKc29uYlZhbHVlVGFyZ2V0IHRhcmdldCkKK3sKKwlK c29uYgkgICAqamIgPSBQR19HRVRBUkdfSlNPTkJfUCgwKTsKKwl0ZXh0CSAgICprZXkgPSBQR19H RVRBUkdfVEVYVF9QUCgxKTsKKwlKc29uYlZhbHVlICp2OworCisJaWYgKCFKQl9ST09UX0lTX09C SkVDVChqYikpCisJCVBHX1JFVFVSTl9OVUxMKCk7CisKKwl2ID0gZ2V0S2V5SnNvblZhbHVlRnJv bUNvbnRhaW5lcigmamItPnJvb3QsCisJCQkJCQkJCQkgVkFSREFUQV9BTlkoa2V5KSwKKwkJCQkJ CQkJCSBWQVJTSVpFX0FOWV9FWEhEUihrZXkpLAorCQkJCQkJCQkJIE5VTEwpOworCisJaWYgKHYg IT0gTlVMTCkKKwkJcmV0dXJuIGpzb25idmFsdWVfY292ZXJ0KHYsIHRhcmdldCk7CisKKwlQR19S RVRVUk5fTlVMTCgpOworfQorCiBEYXR1bQoganNvbmJfb2JqZWN0X2ZpZWxkKFBHX0ZVTkNUSU9O X0FSR1MpCiB7Ci0JSnNvbmIJICAgKmpiID0gUEdfR0VUQVJHX0pTT05CX1AoMCk7Ci0JdGV4dAkg ICAqa2V5ID0gUEdfR0VUQVJHX1RFWFRfUFAoMSk7Ci0JSnNvbmJWYWx1ZSAqdjsKLQlKc29uYlZh bHVlCXZidWY7CisJcmV0dXJuIGpzb25iX29iamVjdF9maWVsZF9pbnRlcm5hbChmY2luZm8sIEpz b25iVmFsdWVfQXNKc29uYik7Cit9CiAKLQlpZiAoIUpCX1JPT1RfSVNfT0JKRUNUKGpiKSkKLQkJ UEdfUkVUVVJOX05VTEwoKTsKLQotCXYgPSBnZXRLZXlKc29uVmFsdWVGcm9tQ29udGFpbmVyKCZq Yi0+cm9vdCwKLQkJCQkJCQkJCSBWQVJEQVRBX0FOWShrZXkpLAotCQkJCQkJCQkJIFZBUlNJWkVf QU5ZX0VYSERSKGtleSksCi0JCQkJCQkJCQkgJnZidWYpOwotCi0JaWYgKHYgIT0gTlVMTCkKLQkJ UEdfUkVUVVJOX0pTT05CX1AoSnNvbmJWYWx1ZVRvSnNvbmIodikpOwotCi0JUEdfUkVUVVJOX05V TEwoKTsKK0RhdHVtCitqc29uYl9vYmplY3RfZmllbGRfc3RhcnQoUEdfRlVOQ1RJT05fQVJHUykK K3sKKwlyZXR1cm4ganNvbmJfb2JqZWN0X2ZpZWxkX2ludGVybmFsKGZjaW5mbywgSnNvbmJWYWx1 ZV9Bc0pzb25iVmFsdWUpOwogfQogCiBEYXR1bQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0 YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKaW5kZXgg Nzk3OTM5MjcuLjRjNjJjOTJkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3By b2MuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKQEAgLTQ1OTAsMjUg KzQ1OTAsMjUgQEAKICAgcHJvbmFtZSA9PiAncGdfbHNuJywgcHJvcmV0dHlwZSA9PiAncGdfbHNu JywgcHJvYXJndHlwZXMgPT4gJ251bWVyaWMnLAogICBwcm9zcmMgPT4gJ251bWVyaWNfcGdfbHNu JyB9LAogCi17IG9pZCA9PiAnMzU1NicsIGRlc2NyID0+ICdjb252ZXJ0IGpzb25iIHRvIGJvb2xl YW4nLAoreyBvaWQgPT4gJzM1NTYnLCBkZXNjciA9PiAnY29udmVydCBqc29uYiB0byBib29sZWFu JywgcHJvc3VwcG9ydCA9PiAnanNvbmJfY2FzdF9zdXBwb3J0JywKICAgcHJvbmFtZSA9PiAnYm9v bCcsIHByb3JldHR5cGUgPT4gJ2Jvb2wnLCBwcm9hcmd0eXBlcyA9PiAnanNvbmInLAogICBwcm9z cmMgPT4gJ2pzb25iX2Jvb2wnIH0sCiB7IG9pZCA9PiAnMzQ0OScsIGRlc2NyID0+ICdjb252ZXJ0 IGpzb25iIHRvIG51bWVyaWMnLAotICBwcm9uYW1lID0+ICdudW1lcmljJywgcHJvcmV0dHlwZSA9 PiAnbnVtZXJpYycsIHByb2FyZ3R5cGVzID0+ICdqc29uYicsCisgIHByb25hbWUgPT4gJ251bWVy aWMnLCBwcm9yZXR0eXBlID0+ICdudW1lcmljJywgcHJvYXJndHlwZXMgPT4gJ2pzb25iJywgcHJv c3VwcG9ydCA9PiAnanNvbmJfY2FzdF9zdXBwb3J0JywKICAgcHJvc3JjID0+ICdqc29uYl9udW1l cmljJyB9LAoteyBvaWQgPT4gJzM0NTAnLCBkZXNjciA9PiAnY29udmVydCBqc29uYiB0byBpbnQy JywKK3sgb2lkID0+ICczNDUwJywgZGVzY3IgPT4gJ2NvbnZlcnQganNvbmIgdG8gaW50MicsIHBy b3N1cHBvcnQgPT4gJ2pzb25iX2Nhc3Rfc3VwcG9ydCcsCiAgIHByb25hbWUgPT4gJ2ludDInLCBw cm9yZXR0eXBlID0+ICdpbnQyJywgcHJvYXJndHlwZXMgPT4gJ2pzb25iJywKICAgcHJvc3JjID0+ ICdqc29uYl9pbnQyJyB9LAoteyBvaWQgPT4gJzM0NTEnLCBkZXNjciA9PiAnY29udmVydCBqc29u YiB0byBpbnQ0JywKK3sgb2lkID0+ICczNDUxJywgZGVzY3IgPT4gJ2NvbnZlcnQganNvbmIgdG8g aW50NCcsIHByb3N1cHBvcnQgPT4gJ2pzb25iX2Nhc3Rfc3VwcG9ydCcsCiAgIHByb25hbWUgPT4g J2ludDQnLCBwcm9yZXR0eXBlID0+ICdpbnQ0JywgcHJvYXJndHlwZXMgPT4gJ2pzb25iJywKICAg cHJvc3JjID0+ICdqc29uYl9pbnQ0JyB9LAoteyBvaWQgPT4gJzM0NTInLCBkZXNjciA9PiAnY29u dmVydCBqc29uYiB0byBpbnQ4JywKK3sgb2lkID0+ICczNDUyJywgZGVzY3IgPT4gJ2NvbnZlcnQg anNvbmIgdG8gaW50OCcsIHByb3N1cHBvcnQgPT4gJ2pzb25iX2Nhc3Rfc3VwcG9ydCcsCiAgIHBy b25hbWUgPT4gJ2ludDgnLCBwcm9yZXR0eXBlID0+ICdpbnQ4JywgcHJvYXJndHlwZXMgPT4gJ2pz b25iJywKICAgcHJvc3JjID0+ICdqc29uYl9pbnQ4JyB9LAoteyBvaWQgPT4gJzM0NTMnLCBkZXNj ciA9PiAnY29udmVydCBqc29uYiB0byBmbG9hdDQnLAoreyBvaWQgPT4gJzM0NTMnLCBkZXNjciA9 PiAnY29udmVydCBqc29uYiB0byBmbG9hdDQnLCBwcm9zdXBwb3J0ID0+ICdqc29uYl9jYXN0X3N1 cHBvcnQnLAogICBwcm9uYW1lID0+ICdmbG9hdDQnLCBwcm9yZXR0eXBlID0+ICdmbG9hdDQnLCBw cm9hcmd0eXBlcyA9PiAnanNvbmInLAogICBwcm9zcmMgPT4gJ2pzb25iX2Zsb2F0NCcgfSwKLXsg b2lkID0+ICcyNTgwJywgZGVzY3IgPT4gJ2NvbnZlcnQganNvbmIgdG8gZmxvYXQ4JywKK3sgb2lk ID0+ICcyNTgwJywgZGVzY3IgPT4gJ2NvbnZlcnQganNvbmIgdG8gZmxvYXQ4JywgcHJvc3VwcG9y dCA9PiAnanNvbmJfY2FzdF9zdXBwb3J0JywKICAgcHJvbmFtZSA9PiAnZmxvYXQ4JywgcHJvcmV0 dHlwZSA9PiAnZmxvYXQ4JywgcHJvYXJndHlwZXMgPT4gJ2pzb25iJywKICAgcHJvc3JjID0+ICdq c29uYl9mbG9hdDgnIH0sCiAKQEAgLTk5ODMsNiArOTk4MywyMiBAQAogICBwcm9uYW1lID0+ICdq c29uYl9vYmplY3RfZmllbGRfdGV4dCcsIHByb3JldHR5cGUgPT4gJ3RleHQnLAogICBwcm9hcmd0 eXBlcyA9PiAnanNvbmIgdGV4dCcsIHByb2FyZ25hbWVzID0+ICd7ZnJvbV9qc29uLCBmaWVsZF9u YW1lfScsCiAgIHByb3NyYyA9PiAnanNvbmJfb2JqZWN0X2ZpZWxkX3RleHQnIH0sCit7IG9pZCA9 PiAnNDU1MicsIGRlc2NyID0+ICdleHRyYWN0IGpzb25idmFsdWUgZnJvbSBqc29uYiBmb3IgdGhl IGdpdmVuIGZpZWxkJywKKyAgcHJvbmFtZSA9PiAnanNvbmJfb2JqZWN0X2ZpZWxkX3N0YXJ0Jywg cHJvcmV0dHlwZSA9PiAnaW50ZXJuYWwnLAorICBwcm9hcmd0eXBlcyA9PiAnaW50ZXJuYWwgdGV4 dCcsIHByb2FyZ25hbWVzID0+ICd7ZnJvbV9qc29uLCBmaWVsZF9uYW1lfScsCisgIHByb3NyYyA9 PiAnanNvbmJfb2JqZWN0X2ZpZWxkX3N0YXJ0JyB9LAorCit7IG9pZCA9PiAnNDU1MycsIGRlc2Ny ID0+ICdjb252ZXJ0IGEganNvbmJ2YWx1ZSB0byBudW1lcmljJywKKyAgcHJvbmFtZSA9PiAnanNv bmJfZmluaXNoX251bWVyaWMnLCBwcm9yZXR0eXBlID0+ICdudW1lcmljJywKKyAgcHJvYXJndHlw ZXMgPT4gJ2ludGVybmFsIG9pZCcsIHByb2FyZ25hbWVzID0+ICd7ZnJvbV9qc29udmFsdWUsdGFy Z2V0X29pZH0nLAorICBwcm9zcmMgPT4gJ2pzb25iX2ZpbmlzaF9udW1lcmljJyB9LAoreyBvaWQg PT4gJzQ1NTQnLCBkZXNjciA9PiAnY29udmVydCBhIGpzb25idmFsdWUgdG8gYm9vbGVhbicsCisg IHByb25hbWUgPT4gJ2pzb25iX2ZpbmlzaF9ib29sJywgcHJvcmV0dHlwZSA9PiAnYm9vbCcsCisg IHByb2FyZ3R5cGVzID0+ICdpbnRlcm5hbCcsIHByb2FyZ25hbWVzID0+ICd7anNvbnZhbHVlfScs CisgIHByb3NyYyA9PiAnanNvbmJfZmluaXNoX2Jvb2wnIH0sCit7IG9pZCA9PiAnMzgxNCcsIGRl c2NyID0+ICdwbGFubmVyIHN1cHBvcnQgZm9yIG51bWVyaWMoanNvbmIpJywKKyAgcHJvbmFtZSA9 PiAnanNvbmJfY2FzdF9zdXBwb3J0JywgcHJvcmV0dHlwZSA9PiAnaW50ZXJuYWwnLAorICBwcm9h cmd0eXBlcyA9PiAnaW50ZXJuYWwnLCBwcm9zcmMgPT4gJ2pzb25iX2Nhc3Rfc3VwcG9ydCcgfSwK IHsgb2lkID0+ICczMjE1JywKICAgcHJvbmFtZSA9PiAnanNvbmJfYXJyYXlfZWxlbWVudCcsIHBy b3JldHR5cGUgPT4gJ2pzb25iJywKICAgcHJvYXJndHlwZXMgPT4gJ2pzb25iIGludDQnLCBwcm9h cmduYW1lcyA9PiAne2Zyb21fanNvbiwgZWxlbWVudF9pbmRleH0nLApkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvdXRpbHMvanNvbmIuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL2pzb25iLmgKaW5kZXgg ZTM4ZGZkNDkuLjAzZTg0NTAwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9qc29uYi5o CisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL2pzb25iLmgKQEAgLTI5NCw2ICsyOTQsMTMgQEAgc3Ry dWN0IEpzb25iVmFsdWUKIAl9CQkJdmFsOwogfTsKIAordHlwZWRlZiBlbnVtIEpzb25iVmFsdWVU YXJnZXQKK3sKKwlKc29uYlZhbHVlX0FzSnNvbmJWYWx1ZSwKKwlKc29uYlZhbHVlX0FzSnNvbmIs CisJSnNvbmJWYWx1ZV9Bc1RleHQsCit9IEpzb25iVmFsdWVUYXJnZXQ7CisKICNkZWZpbmUgSXNB SnNvbmJTY2FsYXIoanNvbmJ2YWwpCSgoKGpzb25idmFsKS0+dHlwZSA+PSBqYnZOdWxsICYmIFwK IAkJCQkJCQkJCSAgKGpzb25idmFsKS0+dHlwZSA8PSBqYnZCb29sKSB8fCBcCiAJCQkJCQkJCQkg IChqc29uYnZhbCktPnR5cGUgPT0gamJ2RGF0ZXRpbWUpCkBAIC00MzYsNCArNDQzLDUgQEAgZXh0 ZXJuIERhdHVtIGpzb25iX2J1aWxkX29iamVjdF93b3JrZXIoaW50IG5hcmdzLCBjb25zdCBEYXR1 bSAqYXJncywgY29uc3QgYm9vbAogZXh0ZXJuIERhdHVtIGpzb25iX2J1aWxkX2FycmF5X3dvcmtl cihpbnQgbmFyZ3MsIGNvbnN0IERhdHVtICphcmdzLCBjb25zdCBib29sICpudWxscywKIAkJCQkJ CQkJCSAgY29uc3QgT2lkICp0eXBlcywgYm9vbCBhYnNlbnRfb25fbnVsbCk7CiAKK2V4dGVybiBE YXR1bSBqc29uYnZhbHVlX2NvdmVydChKc29uYlZhbHVlICpqYnYsIEpzb25iVmFsdWVUYXJnZXQg dGFyZ2V0KTsKICNlbmRpZgkJCQkJCQkvKiBfX0pTT05CX0hfXyAqLwpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qc29uYi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL2pzb25iLm91dAppbmRleCBiNTk3ZDAxYS4uOTZhYzMzOTkgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbmIub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvanNvbmIub3V0CkBAIC00NTcsOCArNDU3LDExMCBAQCBDUkVBVEUgVEVNUCBUQUJMRSB0 ZXN0X2pzb25iICgKICk7CiBJTlNFUlQgSU5UTyB0ZXN0X2pzb25iIFZBTFVFUwogKCdzY2FsYXIn LCciYSBzY2FsYXIiJyksCisoJ3NjYWxhcmludCcsJzInKSwKICgnYXJyYXknLCdbInplcm8iLCAi b25lIiwidHdvIixudWxsLCJmb3VyIiwiZml2ZSIsIFsxLDIsM10seyJmMSI6OX1dJyksCi0oJ29i amVjdCcsJ3siZmllbGQxIjoidmFsMSIsImZpZWxkMiI6InZhbDIiLCJmaWVsZDMiOm51bGwsICJm aWVsZDQiOiA0LCAiZmllbGQ1IjogWzEsMiwzXSwgImZpZWxkNiI6IHsiZjEiOjl9fScpOworKCdv YmplY3QnLCd7ImZpZWxkMSI6InZhbDEiLCJmaWVsZDIiOiJ2YWwyIiwiZmllbGQzIjpudWxsLCAi ZmllbGQ0IjogNCwKKwkJCSJmaWVsZDUiOiBbMSwyLDNdLCAiZmllbGQ2IjogeyJmMSI6OX0sCisJ CQkiZmllbGQ3IjogdHJ1ZSwgImZpZWxkOCI6IFsxLDIsMyw0LDVdfScpOworXHBzZXQgbnVsbCBO VUxMCitFWFBMQUlOIChDT1NUUyBPRkYsIFZFUkJPU0UpCitTRUxFQ1QgKHRlc3RfanNvbiAtPiAn ZmllbGQ0Jyk6Om51bWVyaWMKK0ZST00gdGVzdF9qc29uYgorV0hFUkUganNvbl90eXBlID0gJ29i amVjdCc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyBTZXEgU2NhbiBvbiBwZ190ZW1wLnRlc3RfanNvbmIKKyAgIE91dHB1dDoganNvbmJfZmlu aXNoX251bWVyaWMoanNvbmJfb2JqZWN0X2ZpZWxkX3N0YXJ0KCh0ZXN0X2pzb24pOjppbnRlcm5h bCwgJ2ZpZWxkNCc6OnRleHQpLCAnMTcwMCc6Om9pZCkKKyAgIEZpbHRlcjogKHRlc3RfanNvbmIu anNvbl90eXBlID0gJ29iamVjdCc6OnRleHQpCisoMyByb3dzKQorCitFWFBMQUlOIChDT1NUUyBP RkYsIFZFUkJPU0UpCitTRUxFQ1QgKHRlc3RfanNvbiAtPiAnZmllbGQ0Jyk6OmludDIKK0ZST00g dGVzdF9qc29uYgorV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IFNlcSBTY2FuIG9uIHBnX3RlbXAudGVzdF9qc29uYgorICAgT3V0cHV0OiAoanNvbmJfZmluaXNo X251bWVyaWMoanNvbmJfb2JqZWN0X2ZpZWxkX3N0YXJ0KCh0ZXN0X2pzb24pOjppbnRlcm5hbCwg J2ZpZWxkNCc6OnRleHQpLCAnMjEnOjpvaWQpKTo6c21hbGxpbnQKKyAgIEZpbHRlcjogKHRlc3Rf anNvbmIuanNvbl90eXBlID0gJ29iamVjdCc6OnRleHQpCisoMyByb3dzKQorCitFWFBMQUlOIChD T1NUUyBPRkYsIFZFUkJPU0UpCitTRUxFQ1QgKHRlc3RfanNvbiAtPiAnZmllbGQ0Jyk6OmludDQK K0ZST00gdGVzdF9qc29uYgorV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyBTZXEgU2NhbiBvbiBwZ190ZW1wLnRlc3RfanNvbmIKKyAgIE91dHB1dDogKGpzb25iX2Zp bmlzaF9udW1lcmljKGpzb25iX29iamVjdF9maWVsZF9zdGFydCgodGVzdF9qc29uKTo6aW50ZXJu YWwsICdmaWVsZDQnOjp0ZXh0KSwgJzIzJzo6b2lkKSk6OmludGVnZXIKKyAgIEZpbHRlcjogKHRl c3RfanNvbmIuanNvbl90eXBlID0gJ29iamVjdCc6OnRleHQpCisoMyByb3dzKQorCitFWFBMQUlO IChDT1NUUyBPRkYsIFZFUkJPU0UpCitTRUxFQ1QgKHRlc3RfanNvbiAtPiAnZmllbGQ0Jyk6Omlu dDgKK0ZST00gdGVzdF9qc29uYgorV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFO ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgU2VxIFNjYW4gb24gcGdfdGVtcC50ZXN0X2pzb25iCisgICBPdXRwdXQ6IChqc29uYl9m aW5pc2hfbnVtZXJpYyhqc29uYl9vYmplY3RfZmllbGRfc3RhcnQoKHRlc3RfanNvbik6OmludGVy bmFsLCAnZmllbGQ0Jzo6dGV4dCksICcyMCc6Om9pZCkpOjpiaWdpbnQKKyAgIEZpbHRlcjogKHRl c3RfanNvbmIuanNvbl90eXBlID0gJ29iamVjdCc6OnRleHQpCisoMyByb3dzKQorCitFWFBMQUlO IChDT1NUUyBPRkYsIFZFUkJPU0UpCitTRUxFQ1QgKHRlc3RfanNvbiAtPiAnZmllbGQ0Jyk6OmZs b2F0NAorRlJPTSB0ZXN0X2pzb25iCitXSEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExB TiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgU2VxIFNjYW4gb24gcGdfdGVtcC50ZXN0X2pzb25iCisgICBPdXRwdXQ6IChqc29uYl9m aW5pc2hfbnVtZXJpYyhqc29uYl9vYmplY3RfZmllbGRfc3RhcnQoKHRlc3RfanNvbik6OmludGVy bmFsLCAnZmllbGQ0Jzo6dGV4dCksICc3MDAnOjpvaWQpKTo6cmVhbAorICAgRmlsdGVyOiAodGVz dF9qc29uYi5qc29uX3R5cGUgPSAnb2JqZWN0Jzo6dGV4dCkKKygzIHJvd3MpCisKK0VYUExBSU4g KENPU1RTIE9GRiwgVkVSQk9TRSkKK1NFTEVDVCAodGVzdF9qc29uIC0+ICdmaWVsZDQnKTo6Zmxv YXQ4CitGUk9NIHRlc3RfanNvbmIKK1dIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVS WSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTZXEgU2NhbiBvbiBwZ190ZW1wLnRlc3RfanNv bmIKKyAgIE91dHB1dDogKGpzb25iX2ZpbmlzaF9udW1lcmljKGpzb25iX29iamVjdF9maWVsZF9z dGFydCgodGVzdF9qc29uKTo6aW50ZXJuYWwsICdmaWVsZDQnOjp0ZXh0KSwgJzcwMSc6Om9pZCkp Ojpkb3VibGUgcHJlY2lzaW9uCisgICBGaWx0ZXI6ICh0ZXN0X2pzb25iLmpzb25fdHlwZSA9ICdv YmplY3QnOjp0ZXh0KQorKDMgcm93cykKKworRVhQTEFJTiAoQ09TVFMgT0ZGLCBWRVJCT1NFKQor U0VMRUNUICh0ZXN0X2pzb24gLT4gJ2ZpZWxkNycpOjpib29sCitGUk9NIHRlc3RfanNvbmIKK1dI RVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNlcSBTY2Fu IG9uIHBnX3RlbXAudGVzdF9qc29uYgorICAgT3V0cHV0OiBqc29uYl9maW5pc2hfYm9vbChqc29u Yl9vYmplY3RfZmllbGRfc3RhcnQoKHRlc3RfanNvbik6OmludGVybmFsLCAnZmllbGQ3Jzo6dGV4 dCkpCisgICBGaWx0ZXI6ICh0ZXN0X2pzb25iLmpzb25fdHlwZSA9ICdvYmplY3QnOjp0ZXh0KQor KDMgcm93cykKKworU0VMRUNUCisodGVzdF9qc29uIC0+ICdmaWVsZDQnKTo6bnVtZXJpYywKKyh0 ZXN0X2pzb24gLT4gJ2ZpZWxkNCcpOjppbnQyLAorKHRlc3RfanNvbiAtPiAnZmllbGQ0Jyk6Omlu dDQsCisodGVzdF9qc29uIC0+ICdmaWVsZDQnKTo6aW50OCwKKyh0ZXN0X2pzb24gLT4gJ2ZpZWxk NCcpOjpmbG9hdDQsCisodGVzdF9qc29uIC0+ICdmaWVsZDQnKTo6ZmxvYXQ4LAorKHRlc3RfanNv biAtPiAnZmllbGQ3Jyk6OmJvb2wKK0ZST00gdGVzdF9qc29uYgorV0hFUkUganNvbl90eXBlID0g J29iamVjdCc7CisgbnVtZXJpYyB8IGludDIgfCBpbnQ0IHwgaW50OCB8IGZsb2F0NCB8IGZsb2F0 OCB8IGJvb2wgCistLS0tLS0tLS0rLS0tLS0tKy0tLS0tLSstLS0tLS0rLS0tLS0tLS0rLS0tLS0t LS0rLS0tLS0tCisgICAgICAgNCB8ICAgIDQgfCAgICA0IHwgICAgNCB8ICAgICAgNCB8ICAgICAg NCB8IHQKKygxIHJvdykKKworLS0gbGV0cyByYWlzZSBzb21lIGVycm9ycy4KK1NFTEVDVCAodGVz dF9qc29uIC0+ICdmaWVsZDEnKTo6aW50NCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBl ID0gJ29iamVjdCc7CitFUlJPUjogIGNhbm5vdCBjYXN0IGpzb25iIHN0cmluZyB0byB0eXBlIGlu dGVnZXIKK1NFTEVDVCAodGVzdF9qc29uIC0+ICdmaWVsZDEnKTo6Ym9vbCBGUk9NIHRlc3RfanNv bmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7CitFUlJPUjogIGNhbm5vdCBjYXN0IGpzb25i IHN0cmluZyB0byB0eXBlIGJvb2xlYW4KK1xwc2V0IG51bGwgJycKIFNFTEVDVCB0ZXN0X2pzb24g LT4gJ3gnIEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnc2NhbGFyJzsKICA/Y29s dW1uPyAKIC0tLS0tLS0tLS0KQEAgLTU4Niw3ICs2ODgsOSBAQCBTRUxFQ1QganNvbmJfb2JqZWN0 X2tleXModGVzdF9qc29uKSBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVj dCc7CiAgZmllbGQ0CiAgZmllbGQ1CiAgZmllbGQ2Ci0oNiByb3dzKQorIGZpZWxkNworIGZpZWxk OAorKDggcm93cykKIAogLS0gbnVsbHMKIFNFTEVDVCAodGVzdF9qc29uLT4nZmllbGQzJykgSVMg TlVMTCBBUyBleHBlY3RfZmFsc2UgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdv YmplY3QnOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvanNvbmIuc3FsIGIvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvanNvbmIuc3FsCmluZGV4IDZkYWU3MTVhLi5iZTI5YjJlNyAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvanNvbmIuc3FsCisrKyBiL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL2pzb25iLnNxbApAQCAtMTU0LDggKzE1NCw2MyBAQCBDUkVBVEUgVEVNUCBUQUJM RSB0ZXN0X2pzb25iICgKIAogSU5TRVJUIElOVE8gdGVzdF9qc29uYiBWQUxVRVMKICgnc2NhbGFy JywnImEgc2NhbGFyIicpLAorKCdzY2FsYXJpbnQnLCcyJyksCiAoJ2FycmF5JywnWyJ6ZXJvIiwg Im9uZSIsInR3byIsbnVsbCwiZm91ciIsImZpdmUiLCBbMSwyLDNdLHsiZjEiOjl9XScpLAotKCdv YmplY3QnLCd7ImZpZWxkMSI6InZhbDEiLCJmaWVsZDIiOiJ2YWwyIiwiZmllbGQzIjpudWxsLCAi ZmllbGQ0IjogNCwgImZpZWxkNSI6IFsxLDIsM10sICJmaWVsZDYiOiB7ImYxIjo5fX0nKTsKKygn b2JqZWN0JywneyJmaWVsZDEiOiJ2YWwxIiwiZmllbGQyIjoidmFsMiIsImZpZWxkMyI6bnVsbCwg ImZpZWxkNCI6IDQsCisJCQkiZmllbGQ1IjogWzEsMiwzXSwgImZpZWxkNiI6IHsiZjEiOjl9LAor CQkJImZpZWxkNyI6IHRydWUsICJmaWVsZDgiOiBbMSwyLDMsNCw1XX0nKTsKKworXHBzZXQgbnVs bCBOVUxMCitFWFBMQUlOIChDT1NUUyBPRkYsIFZFUkJPU0UpCitTRUxFQ1QgKHRlc3RfanNvbiAt PiAnZmllbGQ0Jyk6Om51bWVyaWMKK0ZST00gdGVzdF9qc29uYgorV0hFUkUganNvbl90eXBlID0g J29iamVjdCc7CisKK0VYUExBSU4gKENPU1RTIE9GRiwgVkVSQk9TRSkKK1NFTEVDVCAodGVzdF9q c29uIC0+ICdmaWVsZDQnKTo6aW50MgorRlJPTSB0ZXN0X2pzb25iCitXSEVSRSBqc29uX3R5cGUg PSAnb2JqZWN0JzsKKworRVhQTEFJTiAoQ09TVFMgT0ZGLCBWRVJCT1NFKQorU0VMRUNUICh0ZXN0 X2pzb24gLT4gJ2ZpZWxkNCcpOjppbnQ0CitGUk9NIHRlc3RfanNvbmIKK1dIRVJFIGpzb25fdHlw ZSA9ICdvYmplY3QnOworCitFWFBMQUlOIChDT1NUUyBPRkYsIFZFUkJPU0UpCitTRUxFQ1QgKHRl c3RfanNvbiAtPiAnZmllbGQ0Jyk6OmludDgKK0ZST00gdGVzdF9qc29uYgorV0hFUkUganNvbl90 eXBlID0gJ29iamVjdCc7CisKK0VYUExBSU4gKENPU1RTIE9GRiwgVkVSQk9TRSkKK1NFTEVDVCAo dGVzdF9qc29uIC0+ICdmaWVsZDQnKTo6ZmxvYXQ0CitGUk9NIHRlc3RfanNvbmIKK1dIRVJFIGpz b25fdHlwZSA9ICdvYmplY3QnOworCitFWFBMQUlOIChDT1NUUyBPRkYsIFZFUkJPU0UpCitTRUxF Q1QgKHRlc3RfanNvbiAtPiAnZmllbGQ0Jyk6OmZsb2F0OAorRlJPTSB0ZXN0X2pzb25iCitXSEVS RSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKKworRVhQTEFJTiAoQ09TVFMgT0ZGLCBWRVJCT1NFKQor U0VMRUNUICh0ZXN0X2pzb24gLT4gJ2ZpZWxkNycpOjpib29sCitGUk9NIHRlc3RfanNvbmIKK1dI RVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOworCitTRUxFQ1QKKyh0ZXN0X2pzb24gLT4gJ2ZpZWxk NCcpOjpudW1lcmljLAorKHRlc3RfanNvbiAtPiAnZmllbGQ0Jyk6OmludDIsCisodGVzdF9qc29u IC0+ICdmaWVsZDQnKTo6aW50NCwKKyh0ZXN0X2pzb24gLT4gJ2ZpZWxkNCcpOjppbnQ4LAorKHRl c3RfanNvbiAtPiAnZmllbGQ0Jyk6OmZsb2F0NCwKKyh0ZXN0X2pzb24gLT4gJ2ZpZWxkNCcpOjpm bG9hdDgsCisodGVzdF9qc29uIC0+ICdmaWVsZDcnKTo6Ym9vbAorRlJPTSB0ZXN0X2pzb25iCitX SEVSRSBqc29uX3R5cGUgPSAnb2JqZWN0JzsKKworLS0gbGV0cyByYWlzZSBzb21lIGVycm9ycy4K K1NFTEVDVCAodGVzdF9qc29uIC0+ICdmaWVsZDEnKTo6aW50NCBGUk9NIHRlc3RfanNvbmIgV0hF UkUganNvbl90eXBlID0gJ29iamVjdCc7CitTRUxFQ1QgKHRlc3RfanNvbiAtPiAnZmllbGQxJyk6 OmJvb2wgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdvYmplY3QnOworXHBzZXQg bnVsbCAnJwogCiBTRUxFQ1QgdGVzdF9qc29uIC0+ICd4JyBGUk9NIHRlc3RfanNvbmIgV0hFUkUg anNvbl90eXBlID0gJ3NjYWxhcic7CiBTRUxFQ1QgdGVzdF9qc29uIC0+ICd4JyBGUk9NIHRlc3Rf anNvbmIgV0hFUkUganNvbl90eXBlID0gJ2FycmF5JzsKZGlmZiAtLWdpdCBhL3NyYy90b29scy9w Z2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QK aW5kZXggNWZkNDZiN2IuLjRjYTY2NzllIDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQv dHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAt MTI2NSw2ICsxMjY1LDcgQEAgSnNvbkFycmF5QWdnCiBKc29uQXJyYXlDb25zdHJ1Y3RvcgogSnNv bkFycmF5UXVlcnlDb25zdHJ1Y3RvcgogSnNvbkJhc2VPYmplY3RJbmZvCitKc29uYlZhbHVlVGFy Z2V0CiBKc29uQ29uc3RydWN0b3JFeHByCiBKc29uQ29uc3RydWN0b3JFeHByU3RhdGUKIEpzb25D b25zdHJ1Y3RvclR5cGUKLS0gCjIuMzQuMQoK --000000000000664127060e63e756--