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.96) (envelope-from ) id 1wepAE-0052xo-17 for pgsql-hackers@arkaria.postgresql.org; Wed, 01 Jul 2026 07:15:18 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wepAD-00CBR9-13 for pgsql-hackers@arkaria.postgresql.org; Wed, 01 Jul 2026 07:15:17 +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.96) (envelope-from ) id 1wepAC-00CBR0-1c for pgsql-hackers@lists.postgresql.org; Wed, 01 Jul 2026 07:15:17 +0000 Received: from mail-lf1-x12e.google.com ([2a00:1450:4864:20::12e]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wepAA-000000012d0-0Zwa for pgsql-hackers@lists.postgresql.org; Wed, 01 Jul 2026 07:15:15 +0000 Received: by mail-lf1-x12e.google.com with SMTP id 2adb3069b0e04-5aec201b582so310313e87.1 for ; Wed, 01 Jul 2026 00:15:14 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1782890111; cv=none; d=google.com; s=arc-20260327; b=MG29ac5tSt+hz4f7Oe8B3wnTrnvB2U75sxp8K1kfiFIcRw3n4ALZ4TB4k6GB/xo6GX MAsfBH8paXO1Rxha76lkBHhnGA/TkMorOEU2wKCeIGp6h6yHP8VEsB715pdUpGdJZPBp w3EuF+LbyQ33ZwROV6OspqV05IhtyHRH/kQ526Lj5arOYrLiEdAw1KzZUW0hPnmBJe9L cWwU4s/44dYFdSdQlu9MTa0dmpQojkMfcarXllWxaZ5IdAYGz/w34bovGFMrdxrRPOjK GxF/GDk+WQe+JWrhyFaS3m8j1zrMPmooJUTJ067Hs8vHYVF2RJXqXln/tkRzNXNPcWRv 1i3w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=WuzK1IEG3SZ+DR5Dg5kZ2tCFnGn9B12V0pDPdHbQsls=; fh=vgegmJPI/sEJ5X7ov+iT+I204qrQ+M16Bdd6ahL7DSI=; b=XmjxcvaJGmbeE36FQXUCjBMXKY3xTmfsHVSU9sCVVmvZL69TazD598D7L1tiYpA2W0 FB1aZ7hVeH6NOu9IvCKniy40W1qoBN+GslEkuLsndfy3gkqbDCdsPq9/fIVgVZ8dKRlR GnDcuNPshtHg6U8NwimS2VZ3TB7UzvpdO3ZmxpkbKfxHluZMSEkLmYo974keXjcCoM5f yx++R57d4uZEmZhNMbngEUMa0LD+XUfzgOGHuU1tTOdCBFYOUQbusERfevi3BtMTrzRK s55744OR2vrhaamSJnso/W1ZXAWBsN/mshy5aoQJzQOMUiHq8d+hvQ/HWmwxFk2dOoYp p0/A==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1782890111; x=1783494911; 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=WuzK1IEG3SZ+DR5Dg5kZ2tCFnGn9B12V0pDPdHbQsls=; b=rkBFHoHnB+CvL828WCJNlBx1aZhRSw7qi5M9GxxHvD321C+Ni+c058Yx3XM4t/tJGX 5O2vSdiKcwTMlVm/VIelmSs6ksLqhUWfL6lS6/mTRZQ9UN4fpw7wF02SKpGvdvakDqsh mQYoWjMeElnKjN+sdY8fk4AOtEe90p3wf1rESW9Ryo9fjJN1EfYwXadBnj/+dNqOkXDD Faz1JPOfWQKaOrp3EKVfdKTeeUsTH/o0Daltd6jjwd1pOkZcln21YYX/JukjVWd9tk9U 4Keb6drqZ2ScOcv1gvIelB7/Jfu0J79CPv5Eh2/y5D8OFHg2tkhnkizD6cuTNPuTmQcx MpRw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1782890111; x=1783494911; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=WuzK1IEG3SZ+DR5Dg5kZ2tCFnGn9B12V0pDPdHbQsls=; b=ip4A4lkHnCnujaYlRKbOJ+UgienuzaQ7m99mK6qbNUrJ4hpdsYwbpvV6kq7luA4D2C PfXUM8lBIpZl34+JkF9QLDrRTyNvRH1XpnhKlzp02921wzd91dUXAeOEWX54Cg93f5Gj /0dHNst/TWnzw/Ogv9W6pq+GgWtkJv6WSjKPf2K0OQEeig9WRMujKP3hdF6x7yBeVxtx O9SyQ/C5pqk34weFeKP4aSGLZkf/qcBiWyhiUwoQgyF0ZpvWlmSkfwjcAbe2vKpTSTHu Npg1WS6GbjMRzWJs/45+HbZdB/802M1cor0m9aMqrsrl8QgN0e3ke613tXByh5FOk4EX UXvA== X-Forwarded-Encrypted: i=1; AHgh+RoSJUf4S/L2PYKV4TbngPOMg5MbnXaW68ZoCIgqiFsinJ/iks2qAU49gyjrPJxveAGrwMdUKZpR9ELm8Dy4@lists.postgresql.org X-Gm-Message-State: AOJu0YwXNyyfKF9Z3lr1NcaibUlQIp4lsMe2cG8rUn8FZbor1L+bdaYZ ee1O0FZK+J79kv0tURiuI8WJmpiTLhpzOJ37jJQ6z+2eCs4v4Q4QD5KayWWwaz8WybrzMZtt7yq YpsjT/dgaQRhgG11XocC+rmwwtPk/jmk= X-Gm-Gg: AfdE7cmNlcrB2ruVab5Zz+v8BLy95kRLDVNgy19kazhZzVw0e0hAf+yZafSLg78oVTE IVS/RfsKF686VLu2niz4FACH+ULZ8+jLkqCq75oDKKVwQDOPr/gVibs29iOy/3dZBjUNYeAnBr0 KvPYVNIvMFy+7GdUCC0kemdPuoERjYwGcaumkm55YVImKKIWEdcrN/S7wdQ5gKl+Us74d8EgSB/ sG9SeSbJDzJDhLk/QdYuUOYj28rdbDeXPva6YfZYYdy3H8o+ud3Usjowi2iXSyOKIqCJ1nBQELf +j1Vk742R7yYulXFO3U7d8xamw== X-Received: by 2002:a05:6512:804b:b0:5ae:b88f:311e with SMTP id 2adb3069b0e04-5aec67a3c50mr69335e87.15.1782890111207; Wed, 01 Jul 2026 00:15:11 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Dilip Kumar Date: Wed, 1 Jul 2026 12:44:53 +0530 X-Gm-Features: AVVi8CeQd2uHyzqflQDjUH_vpxivhWtstkbelE6UaOqmZr6-3r_ZYjLduQelaXY Message-ID: Subject: Re: Proposal: Conflict log history table for Logical Replication To: shveta malik Cc: Amit Kapila , Peter Smith , vignesh C , Nisha Moond , Masahiko Sawada , Bharath Rupireddy , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000c0aca40655877306" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000c0aca40655877306 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, Jul 1, 2026 at 12:04=E2=80=AFPM shveta malik wrote: > > On Tue, Jun 30, 2026 at 5:20=E2=80=AFPM Dilip Kumar wrote: > > > > > > I have merged these patches and also merged 0001 and 0002. Also fixed > > other open comments from Nisha, Shlok, and Peter > > > > These are not needed: > > +++ b/src/include/replication/conflict.h > +#include "catalog/pg_type.h" > > +++ b/src/backend/commands/lockcmds.c > +#include "catalog/catalog.h" > > Plus we can have relevant docs added to this patch. > > I do not have any further comments on 001. Thanks I have fixed these comments and also merged the docs. Apart from those updates, I also missed the changes related to pg_namespace_aclmask_ext [1], so I am adding them now. While Peter suggested [2], that approach won't fix the revoke USAGE issue raised by Nisha. We cannot simply return early here under the assumption that ACL_USAGE is always allowed and ACL_CREATE is never allowed. Instead, we need to mask ACL_CREATE and let the execution flow pass through for other ACLs. This ensures that if ACL_USAGE has been explicitly revoked, that revocation is correctly evaluated and respected. [1] --- a/src/backend/catalog/aclchk.c +++ b/src/backend/catalog/aclchk.c @@ -3678,9 +3678,9 @@ pg_namespace_aclmask_ext(Oid nsp_oid, Oid roleid, * Disallow creation in the conflict schema for everyone, including * superusers, unless in binary-upgrade mode. */ - if (!IsBinaryUpgrade && (mask & ACL_CREATE) && - IsConflictLogTableNamespace(nsp_oid)) - return mask & ~ACL_CREATE; + if (!IsBinaryUpgrade && (mask & ACL_CREATE) && + IsConflictLogTableNamespace(nsp_oid)) + mask &=3D ~ACL_CREATE; [2] return mask & ACL_ALL_RIGHTS_SCHEMA & ~ACL_CREATE; --=20 Regards, Dilip Kumar Google --000000000000c0aca40655877306 Content-Type: application/octet-stream; name="v61-0001-Add-configurable-conflict-log-table-for-Logical-.patch" Content-Disposition: attachment; filename="v61-0001-Add-configurable-conflict-log-table-for-Logical-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mr1qlr7i0 RnJvbSA1MGQzM2Y0YjE0OGYyNTY2YmM5ZTZiZDI1NTY0NmYyN2FjZGIzZjUzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEaWxpcCBLdW1hciA8ZGlsaXBrdW1hcmJAZ29vZ2xlLmNvbT4K RGF0ZTogVGh1LCAyNSBKdW4gMjAyNiAxNzo1NjoyNyArMDUzMApTdWJqZWN0OiBbUEFUQ0ggdjYx XSBBZGQgY29uZmlndXJhYmxlIGNvbmZsaWN0IGxvZyB0YWJsZSBmb3IgTG9naWNhbAogUmVwbGlj YXRpb24KTUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0 PVVURi04CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKClRoaXMgcGF0Y2ggYWRkcyBh IGZlYXR1cmUgdG8gcHJvdmlkZSBhIHN0cnVjdHVyZWQsIHF1ZXJ5YWJsZSByZWNvcmQgb2YgYWxs CmxvZ2ljYWwgcmVwbGljYXRpb24gY29uZmxpY3RzLiBUaGUgY3VycmVudCBhcHByb2FjaCBvZiBs b2dnaW5nIGNvbmZsaWN0cyBhcwpwbGFpbiB0ZXh0IGluIHRoZSBzZXJ2ZXIgbG9ncyBtYWtlcyBp dCBkaWZmaWN1bHQgdG8gcXVlcnksIGFuYWx5emUsIGFuZAp1c2UgZm9yIGV4dGVybmFsIG1vbml0 b3JpbmcgYW5kIGF1dG9tYXRpb24uCgpUaGlzIHBhdGNoIGFkZHJlc3NlcyB0aGVzZSBsaW1pdGF0 aW9ucyBieSBpbnRyb2R1Y2luZyBhIGNvbmZpZ3VyYWJsZQpjb25mbGljdF9sb2dfZGVzdGluYXRp b249KCdsb2cnLyd0YWJsZScvJ2FsbCcpIG9wdGlvbiBpbiB0aGUgQ1JFQVRFIFNVQlNDUklQVElP Tgpjb21tYW5kLgoKSWYgdGhlIHVzZXIgY2hvb3NlcyB0byBlbmFibGUgbG9nZ2luZyB0byBhIHRh YmxlIChieSBzZWxlY3RpbmcgJ3RhYmxlJyBvciAnYWxsJyksCmFuIGludGVybmFsIGxvZ2dpbmcg dGFibGUgbmFtZWQgcGdfY29uZmxpY3RfbG9nXzxzdWJpZD4gaXMgYXV0b21hdGljYWxseQpjcmVh dGVkIHdpdGhpbiBhIGRlZGljYXRlZCwgc3lzdGVtLW1hbmFnZWQgJ3BnX2NvbmZsaWN0JyBuYW1l c3BhY2UgdG8gcHJldmVudAp1c2VycyBmcm9tIG1hbnVhbGx5IGRyb3BwaW5nIG9yIGFsdGVyaW5n IGl0LiBUaGlzIGFsc28gcHJldmVudHMgYWNjaWRlbnRhbApuYW1lIGNvbGxpc2lvbnMgd2l0aCB1 c2VyLWNyZWF0ZWQgdGFibGVzLiBUaGlzIHRhYmxlIGlzIGxpbmtlZCB0byB0aGUKc3Vic2NyaXB0 aW9uIHZpYSBhbiBpbnRlcm5hbCBkZXBlbmRlbmN5LCBlbnN1cmluZyBpdCBpcyBhdXRvbWF0aWNh bGx5IGRyb3BwZWQKd2hlbiB0aGUgc3Vic2NyaXB0aW9uIGlzIHJlbW92ZWQKClRoZSBwZXItc3Vi c2NyaXB0aW9uIHRhYmxlIG1vZGVsIHdhcyBjaG9zZW4gb3ZlciBhIHNpbmdsZSBnbG9iYWwgbG9n IHRvIGVuc3VyZQpzdXBlcmlvciBpc29sYXRpb24gYW5kIGFkbWluaXN0cmF0aXZlIGZsZXhpYmls aXR5IGJ5IGRpcmVjdGx5IGFsaWduaW5nIHRhYmxlIG93bmVyc2hpcAp3aXRoIHRoZSBzdWJzY3Jp cHRpb27igJlzIGxpZmVjeWNsZS4gVGhpcyBhcHByb2FjaCBhbGxvd3MgZm9yIGdyYW51bGFyIHBl cm1pc3Npb24KbWFuYWdlbWVudCwgZW5hYmxpbmcgdGhlIHN1YnNjcmlwdGlvbiBvd25lciB0byBw ZXJmb3JtIG5lY2Vzc2FyeSBtYWludGVuYW5jZQp0YXNrcyBsaWtlIFNFTEVDVCwgREVMRVRFLCBh bmQgVFJVTkNBVEUgd2l0aG91dCB0aGUgc2VjdXJpdHkgcmlza3Mgb3IgY29tcGxleApSb3ctTGV2 ZWwgU2VjdXJpdHkgcmVxdWlyZWQgYnkgYSBzaGFyZWQgZ2xvYmFsIHRhYmxlLgoKVGhlIGNvbmZs aWN0IGRldGFpbHMsIGluY2x1ZGluZyB0aGUgb3JpZ2luYWwgYW5kIHJlbW90ZSB0dXBsZXMsIGFy ZSBzdG9yZWQgaW4gSlNPTgpjb2x1bW5zLCBwcm92aWRpbmcgYSBmbGV4aWJsZSBmb3JtYXQgdG8g YWNjb21tb2RhdGUgZGlmZmVyZW50IHRhYmxlIHNjaGVtYXMuCgpUaGUgbG9nIHRhYmxlIGNhcHR1 cmVzIGVzc2VudGlhbCBhdHRyaWJ1dGVzIHN1Y2ggYXMgbG9jYWwgYW5kIHJlbW90ZSB0cmFuc2Fj dGlvbiBJRHMsCkxTTnMsIGNvbW1pdCB0aW1lc3RhbXBzLCBhbmQgY29uZmxpY3QgdHlwZSwgcHJv dmlkaW5nIGEgY29tcGxldGUgcmVjb3JkIGZvciBwb3N0LW1vcnRlbQphbmFseXNpcy4KClRoaXMg ZmVhdHVyZSB3aWxsIG1ha2UgbG9naWNhbCByZXBsaWNhdGlvbiBjb25mbGljdHMgZWFzaWVyIHRv IG1vbml0b3IgYW5kIG1hbmFnZSwKc2lnbmlmaWNhbnRseSBpbXByb3ZpbmcgdGhlIG92ZXJhbGwg cmVzaWxpZW5jZSBhbmQgb3BlcmFiaWxpdHkgb2YgcmVwbGljYXRpb24gc2V0dXBzLgoKVGhlIGNv bmZsaWN0IGxvZyB0YWJsZXMgd2lsbCBub3QgYmUgaW5jbHVkZWQgaW4gYSBwdWJsaWNhdGlvbiwg ZXZlbiBpZiB0aGUgcHVibGljYXRpb24KaXMgY29uZmlndXJlZCB0byBpbmNsdWRlIEFMTCBUQUJM RVMgb3IgQUxMIFRBQkxFUyBJTiBTQ0hFTUEuCgpOb3RlOiBCdW1wIGNhdGFsb2cgdmVyc2lvbiBh cyB0aGlzIGFkZCBuZXcgY29sdW1uIHRvIHBnX3N1YnNjcmlwdGlvbiBjYXRhbG9nCi0tLQogZG9j L3NyYy9zZ21sL2RkbC5zZ21sICAgICAgICAgICAgICAgICAgICAgIHwgIDIwICsrCiBkb2Mvc3Jj L3NnbWwvZ2xvc3Nhcnkuc2dtbCAgICAgICAgICAgICAgICAgfCAgMTIgKwogZG9jL3NyYy9zZ21s L2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbCAgICAgIHwgIDE1ICsrCiBkb2Mvc3JjL3NnbWwvcmVm L2FsdGVyX3N1YnNjcmlwdGlvbi5zZ21sICAgfCAgMTMgKy0KIGRvYy9zcmMvc2dtbC9yZWYvY3Jl YXRlX3N1YnNjcmlwdGlvbi5zZ21sICB8ICA0NyArKysrCiBzcmMvYmFja2VuZC9jYXRhbG9nL2Fj bGNoay5jICAgICAgICAgICAgICAgfCAgNTggKystLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9jYXRh bG9nLmMgICAgICAgICAgICAgIHwgIDI5ICstCiBzcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1Ymxp Y2F0aW9uLmMgICAgICAgfCAgMTQgKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvcGdfc3Vic2NyaXB0 aW9uLmMgICAgICB8ICAgNyArCiBzcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwg ICAgICAgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2xvY2tjbWRzLmMgICAgICAgICAg ICB8ICAyMyArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvcG9saWN5LmMgICAgICAgICAgICAgIHwg IDEyICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3N0YXRzY21kcy5jICAgICAgICAgICB8ICAxNCAr CiBzcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMgICAgfCAyMTMgKysrKysr KysrKysrKystCiBzcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyAgICAgICAgICAgfCAg OTIgKysrKysrLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dlci5jICAgICAgICAgICAgIHwg IDI1ICsrCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jICAgICAgICAgICAgfCAgMjgg KysKIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvY29uZmxpY3QuYyB8IDE3MiArKysr KysrKysrKysKIHNyYy9iYWNrZW5kL3Jld3JpdGUvcmV3cml0ZURlZmluZS5jICAgICAgICB8ICAy MiArKwogc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMgICAgICAgIHwgICAyICst CiBzcmMvYmluL2luaXRkYi9pbml0ZGIuYyAgICAgICAgICAgICAgICAgICAgfCAgIDYgKwogc3Jj L2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jICAgICAgICAgICAgIHwgICA4ICstCiBzcmMvaW5j bHVkZS9jYXRhbG9nL2NhdGFsb2cuaCAgICAgICAgICAgICAgfCAgIDIgKwogc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19uYW1lc3BhY2UuZGF0ICAgICAgIHwgICAzICsKIHNyYy9pbmNsdWRlL2NhdGFs b2cvcGdfc3Vic2NyaXB0aW9uLmggICAgICB8ICAxMSArCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlv bi9jb25mbGljdC5oICAgICAgICAgfCAgMjYgKysKIHNyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNo ZS5oICAgICAgICAgICAgICB8ICAgMiArLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdWJz Y3JpcHRpb24ub3V0IHwgMjk1ICsrKysrKysrKysrKysrKysrKysrKwogc3JjL3Rlc3QvcmVncmVz cy9zcWwvc3Vic2NyaXB0aW9uLnNxbCAgICAgIHwgMjM0ICsrKysrKysrKysrKysrKysKIHNyYy90 ZXN0L3N1YnNjcmlwdGlvbi90LzAzNV9jb25mbGljdHMucGwgICB8ICA2NyArKysrLQogc3JjL3Rv b2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAgICAgICAgIHwgICAyICsKIDMxIGZpbGVzIGNo YW5nZWQsIDE0MzggaW5zZXJ0aW9ucygrKSwgNDAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv ZG9jL3NyYy9zZ21sL2RkbC5zZ21sIGIvZG9jL3NyYy9zZ21sL2RkbC5zZ21sCmluZGV4IGZiZDBl YmJmMTBmLi5hYjQ1ZmVhN2VkNiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2RkbC5zZ21sCisr KyBiL2RvYy9zcmMvc2dtbC9kZGwuc2dtbApAQCAtMzc1OSw2ICszNzU5LDI2IEBAIFJFVk9LRSBD UkVBVEUgT04gU0NIRU1BIHB1YmxpYyBGUk9NIFBVQkxJQzsKICAgIDwvcGFyYT4KICAgPC9zZWN0 Mj4KIAorICA8c2VjdDIgaWQ9ImRkbC1zY2hlbWFzLWNvbmZsaWN0Ij4KKyAgIDx0aXRsZT5UaGUg Q29uZmxpY3QgU2NoZW1hPC90aXRsZT4KKworICAgPGluZGV4dGVybSB6b25lPSJkZGwtc2NoZW1h cy1jb25mbGljdCI+CisgICAgPHByaW1hcnk+Y29uZmxpY3Q8L3ByaW1hcnk+CisgICAgPHNlY29u ZGFyeT5zY2hlbWE8L3NlY29uZGFyeT4KKyAgIDwvaW5kZXh0ZXJtPgorCisgICA8cGFyYT4KKyAg ICBTaW1pbGFybHksIHRoZSA8bGl0ZXJhbD5wZ19jb25mbGljdDwvbGl0ZXJhbD4gc2NoZW1hIChz b21ldGltZXMgcmVmZXJyZWQgdG8KKyAgICBhcyB0aGUgPGVtcGhhc2lzPmNvbmZsaWN0IHNjaGVt YTwvZW1waGFzaXM+KSBjb250YWlucyBzeXN0ZW0gbWFuYWdlZAorICAgIGNvbmZsaWN0IGxvZyB0 YWJsZXMgdXNlZCBmb3IgbG9naWNhbCByZXBsaWNhdGlvbiBjb25mbGljdCB0cmFja2luZy4gVGhl c2UKKyAgICB0YWJsZXMgYXJlIGNyZWF0ZWQgYW5kIG1haW50YWluZWQgYnkgdGhlIHN5c3RlbSBh bmQgYXJlIG5vdCBpbnRlbmRlZCBmb3IKKyAgICBkaXJlY3QgdXNlciBtYW5pcHVsYXRpb24uIFVu bGlrZSA8bGl0ZXJhbD5wZ19jYXRhbG9nPC9saXRlcmFsPiwgdGhlCisgICAgPGxpdGVyYWw+cGdf Y2F0YWxvZzwvbGl0ZXJhbD4gc2NoZW1hIGlzIG5vdCBpbXBsaWNpdGx5IGluY2x1ZGVkIGluIHRo ZQorICAgIHNlYXJjaCBwYXRoLCBzbyBvYmplY3RzIHdpdGhpbiBpdCBtdXN0IGJlIHJlZmVyZW5j ZWQgZXhwbGljaXRseSBvciBieQorICAgIGFkanVzdGluZyB0aGUgc2VhcmNoIHBhdGguCisgICA8 L3BhcmE+CisgIDwvc2VjdDI+CisKICAgPHNlY3QyIGlkPSJkZGwtc2NoZW1hcy1wYXR0ZXJucyI+ CiAgICA8dGl0bGU+VXNhZ2UgUGF0dGVybnM8L3RpdGxlPgogCmRpZmYgLS1naXQgYS9kb2Mvc3Jj L3NnbWwvZ2xvc3Nhcnkuc2dtbCBiL2RvYy9zcmMvc2dtbC9nbG9zc2FyeS5zZ21sCmluZGV4IGI4 ODFhZTcxMTk4Li41N2I2OTcwYWQ5ZiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2dsb3NzYXJ5 LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2dsb3NzYXJ5LnNnbWwKQEAgLTUwNiw2ICs1MDYsMTgg QEAKICAgIDwvZ2xvc3NkZWY+CiAgIDwvZ2xvc3NlbnRyeT4KIAorICA8Z2xvc3NlbnRyeSBpZD0i Z2xvc3NhcnktY29uZmxpY3Qtc2NoZW1hIj4KKyAgIDxnbG9zc3Rlcm0+Y29uZmxpY3Qgc2NoZW1h PC9nbG9zc3Rlcm0+CisgICA8Z2xvc3NkZWY+CisgICAgPHBhcmE+CisgICAgIFRoZSA8bGl0ZXJh bD5wZ19jb25mbGljdDwvbGl0ZXJhbD4gc2NoZW1hIHRoYXQgY29udGFpbnMgc3lzdGVtLW1hbmFn ZWQKKyAgICAgY29uZmxpY3QgbG9nIHRhYmxlcyBmb3IgbG9naWNhbCByZXBsaWNhdGlvbi4gVGhl c2UgdGFibGVzIGFyZSBjcmVhdGVkCisgICAgIGFuZCBtYWludGFpbmVkIGF1dG9tYXRpY2FsbHkg YnkgdGhlIHN5c3RlbSBhbmQgYXJlIG5vdCBpbnRlbmRlZCBmb3IKKyAgICAgZGlyZWN0IHVzZXIg bWFuaXB1bGF0aW9uLiBTZWUgPHhyZWYgbGlua2VuZD0iZGRsLXNjaGVtYXMtY29uZmxpY3QiLz4u CisgICAgPC9wYXJhPgorICAgPC9nbG9zc2RlZj4KKyAgPC9nbG9zc2VudHJ5PgorCiAgIDxnbG9z c2VudHJ5IGlkPSJnbG9zc2FyeS1jb25uZWN0aW9uIj4KICAgIDxnbG9zc3Rlcm0+Q29ubmVjdGlv bjwvZ2xvc3N0ZXJtPgogICAgPGdsb3NzZGVmPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2xv Z2ljYWwtcmVwbGljYXRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9u LnNnbWwKaW5kZXggNWJlZmVmZDljNWEuLmViZDFjYzg2MmFlIDEwMDY0NAotLS0gYS9kb2Mvc3Jj L3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9sb2dpY2Fs LXJlcGxpY2F0aW9uLnNnbWwKQEAgLTI5Myw2ICsyOTMsMjEgQEAKICAgIG9wdGlvbiBvZiA8Y29t bWFuZD5DUkVBVEUgU1VCU0NSSVBUSU9OPC9jb21tYW5kPiBmb3IgZGV0YWlscy4KICAgPC9wYXJh PgogCisgIDxwYXJhPgorICAgPGxpbmsgbGlua2VuZD0ibG9naWNhbC1yZXBsaWNhdGlvbi1jb25m bGljdHMiPkNvbmZsaWN0czwvbGluaz4gdGhhdCBvY2N1cgorICAgZHVyaW5nIHJlcGxpY2F0aW9u IGFyZSwgYnkgZGVmYXVsdCwgbG9nZ2VkIGFzIHBsYWluIHRleHQgaW4gdGhlIHNlcnZlciBsb2cs CisgICB3aGljaCBjYW4gbWFrZSBhdXRvbWF0ZWQgbW9uaXRvcmluZyBhbmQgYW5hbHlzaXMgZGlm ZmljdWx0LiBUaGUKKyAgIDxjb21tYW5kPkNSRUFURSBTVUJTQ1JJUFRJT048L2NvbW1hbmQ+IGNv bW1hbmQgcHJvdmlkZXMgdGhlCisgICA8bGluayBsaW5rZW5kPSJzcWwtY3JlYXRlc3Vic2NyaXB0 aW9uLXBhcmFtcy13aXRoLWNvbmZsaWN0LWxvZy1kZXN0aW5hdGlvbiI+CisgICA8bGl0ZXJhbD5j b25mbGljdF9sb2dfZGVzdGluYXRpb248L2xpdGVyYWw+PC9saW5rPiBvcHRpb24gdG8gcmVjb3Jk IGRldGFpbGVkCisgICBjb25mbGljdCBpbmZvcm1hdGlvbiBpbiBhIHN0cnVjdHVyZWQsIHF1ZXJ5 YWJsZSBmb3JtYXQuIFdoZW4gdGhpcyBwYXJhbWV0ZXIKKyAgIGlzIHNldCB0byA8bGl0ZXJhbD50 YWJsZTwvbGl0ZXJhbD4gb3IgPGxpdGVyYWw+YWxsPC9saXRlcmFsPiwgdGhlIHN5c3RlbQorICAg YXV0b21hdGljYWxseSBtYW5hZ2VzIGEgZGVkaWNhdGVkIDxmaXJzdHRlcm0+Y29uZmxpY3QgbG9n IHRhYmxlPC9maXJzdHRlcm0+LAorICAgd2hpY2ggaXMgY3JlYXRlZCBhbiBkcm9wcGVkIGFsb25n IHdpdGggdGhlIHN1YnNjcmlwdGlvbi4gVGhpcyBzaWduaWZpY2FudGx5CisgICBpbXByb3ZlcyBw b3N0LW1vcnRlbSBhbmFseXNpcyBhbmQgb3BlcmF0aW9uYWwgdmlzaWJpbGl0eSBvZiB0aGUgcmVw bGljYXRpb24KKyAgIHNldHVwLgorICA8L3BhcmE+CisKICAgPHNlY3QyIGlkPSJsb2dpY2FsLXJl cGxpY2F0aW9uLXN1YnNjcmlwdGlvbi1zbG90Ij4KICAgIDx0aXRsZT5Mb2dpY2FsIFJlcGxpY2F0 aW9uIFNsb3QgTWFuYWdlbWVudDwvdGl0bGU+CiAKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9y ZWYvYWx0ZXJfc3Vic2NyaXB0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3N1YnNj cmlwdGlvbi5zZ21sCmluZGV4IGU0ZjBiNmIxNmM3Li4xM2I0MTNkMTQyZiAxMDA2NDQKLS0tIGEv ZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9zdWJzY3JpcHRpb24uc2dtbAorKysgYi9kb2Mvc3JjL3Nn bWwvcmVmL2FsdGVyX3N1YnNjcmlwdGlvbi5zZ21sCkBAIC0yOTMsOCArMjkzLDkgQEAgQUxURVIg U1VCU0NSSVBUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNl YWJsZT4gUkVOQU1FIFRPIDwKICAgICAgIDxsaW5rIGxpbmtlbmQ9InNxbC1jcmVhdGVzdWJzY3Jp cHRpb24tcGFyYW1zLXdpdGgtZmFpbG92ZXIiPjxsaXRlcmFsPmZhaWxvdmVyPC9saXRlcmFsPjwv bGluaz4sCiAgICAgICA8bGluayBsaW5rZW5kPSJzcWwtY3JlYXRlc3Vic2NyaXB0aW9uLXBhcmFt cy13aXRoLXR3by1waGFzZSI+PGxpdGVyYWw+dHdvX3BoYXNlPC9saXRlcmFsPjwvbGluaz4sCiAg ICAgICA8bGluayBsaW5rZW5kPSJzcWwtY3JlYXRlc3Vic2NyaXB0aW9uLXBhcmFtcy13aXRoLXJl dGFpbi1kZWFkLXR1cGxlcyI+PGxpdGVyYWw+cmV0YWluX2RlYWRfdHVwbGVzPC9saXRlcmFsPjwv bGluaz4sCi0gICAgICA8bGluayBsaW5rZW5kPSJzcWwtY3JlYXRlc3Vic2NyaXB0aW9uLXBhcmFt cy13aXRoLW1heC1yZXRlbnRpb24tZHVyYXRpb24iPjxsaXRlcmFsPm1heF9yZXRlbnRpb25fZHVy YXRpb248L2xpdGVyYWw+PC9saW5rPiwgYW5kCi0gICAgICA8bGluayBsaW5rZW5kPSJzcWwtY3Jl YXRlc3Vic2NyaXB0aW9uLXBhcmFtcy13aXRoLXdhbC1yZWNlaXZlci10aW1lb3V0Ij48bGl0ZXJh bD53YWxfcmVjZWl2ZXJfdGltZW91dDwvbGl0ZXJhbD48L2xpbms+LgorICAgICAgPGxpbmsgbGlu a2VuZD0ic3FsLWNyZWF0ZXN1YnNjcmlwdGlvbi1wYXJhbXMtd2l0aC1tYXgtcmV0ZW50aW9uLWR1 cmF0aW9uIj48bGl0ZXJhbD5tYXhfcmV0ZW50aW9uX2R1cmF0aW9uPC9saXRlcmFsPjwvbGluaz4s CisgICAgICA8bGluayBsaW5rZW5kPSJzcWwtY3JlYXRlc3Vic2NyaXB0aW9uLXBhcmFtcy13aXRo LXdhbC1yZWNlaXZlci10aW1lb3V0Ij48bGl0ZXJhbD53YWxfcmVjZWl2ZXJfdGltZW91dDwvbGl0 ZXJhbD48L2xpbms+LCBhbmQKKyAgICAgIDxsaW5rIGxpbmtlbmQ9InNxbC1jcmVhdGVzdWJzY3Jp cHRpb24tcGFyYW1zLXdpdGgtY29uZmxpY3QtbG9nLWRlc3RpbmF0aW9uIj48bGl0ZXJhbD5jb25m bGljdF9sb2dfZGVzdGluYXRpb248L2xpdGVyYWw+PC9saW5rPi4KICAgICAgIE9ubHkgYSBzdXBl cnVzZXIgY2FuIHNldCA8bGl0ZXJhbD5wYXNzd29yZF9yZXF1aXJlZCA9IGZhbHNlPC9saXRlcmFs Pi4KICAgICAgPC9wYXJhPgogCkBAIC0zNTIsNiArMzUzLDE0IEBAIEFMVEVSIFNVQlNDUklQVElP TiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+IFJFTkFN RSBUTyA8CiAgICAgICA8cXVvdGU+PGxpdGVyYWw+cGdfY29uZmxpY3RfZGV0ZWN0aW9uPC9saXRl cmFsPjwvcXVvdGU+LCBjcmVhdGVkIHRvIHJldGFpbgogICAgICAgZGVhZCB0dXBsZXMgZm9yIGNv bmZsaWN0IGRldGVjdGlvbiwgd2lsbCBiZSBkcm9wcGVkLgogICAgICA8L3BhcmE+CisKKyAgICAg PHBhcmE+CisgICAgICBXaGVuIHRoZSA8bGluayBsaW5rZW5kPSJzcWwtY3JlYXRlc3Vic2NyaXB0 aW9uLXBhcmFtcy13aXRoLWNvbmZsaWN0LWxvZy1kZXN0aW5hdGlvbiI+PGxpdGVyYWw+Y29uZmxp Y3RfbG9nX2Rlc3RpbmF0aW9uPC9saXRlcmFsPjwvbGluaz4KKyAgICAgIHBhcmFtZXRlciBpcyBz ZXQgdG8gPGxpdGVyYWw+dGFibGU8L2xpdGVyYWw+IG9yIDxsaXRlcmFsPmFsbDwvbGl0ZXJhbD4s IHRoZSBzeXN0ZW0KKyAgICAgIGF1dG9tYXRpY2FsbHkgY3JlYXRlcyB0aGUgY29uZmxpY3QgbG9n IHRhYmxlLiBDb252ZXJzZWx5LCBpZiB0aGUgZGVzdGluYXRpb24gaXMgY2hhbmdlZCB0bworICAg ICAgPGxpdGVyYWw+bG9nPC9saXRlcmFsPiwgbG9nZ2luZyB0byB0aGUgdGFibGUgc3RvcHMgYW5k IHRoZSBjb25mbGljdCBsb2cKKyAgICAgIHRhYmxlIGlzIGF1dG9tYXRpY2FsbHkgZHJvcHBlZC4K KyAgICAgPC9wYXJhPgogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KIApkaWZm IC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwgYi9kb2Mv c3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbAppbmRleCAwN2Q1YjFiZDc3Yy4u NjE4ZDUxZjJkZWYgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlw dGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21s CkBAIC0yNjEsNiArMjYxLDUzIEBAIENSRUFURSBTVUJTQ1JJUFRJT04gPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPnN1YnNjcmlwdGlvbl9uYW1lPC9yZXBsYWNlYWJsCiAgICAgICAgIDwv bGlzdGl0ZW0+CiAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgICAgICA8dmFybGlzdGVudHJ5 IGlkPSJzcWwtY3JlYXRlc3Vic2NyaXB0aW9uLXBhcmFtcy13aXRoLWNvbmZsaWN0LWxvZy1kZXN0 aW5hdGlvbiI+CisgICAgICAgIDx0ZXJtPjxsaXRlcmFsPmNvbmZsaWN0X2xvZ19kZXN0aW5hdGlv bjwvbGl0ZXJhbD4gKDx0eXBlPmVudW08L3R5cGU+KTwvdGVybT4KKyAgICAgICAgPGxpc3RpdGVt PgorICAgICAgICAgPHBhcmE+CisgICAgICAgICAgU3BlY2lmaWVzIHRoZSBkZXN0aW5hdGlvbiBm b3IgcmVjb3JkaW5nIGxvZ2ljYWwgcmVwbGljYXRpb24gY29uZmxpY3RzLgorICAgICAgICAgPC9w YXJhPgorICAgICAgICAgPHBhcmE+CisgICAgICAgICAgVGhlIGF2YWlsYWJsZSBkZXN0aW5hdGlv bnMgYXJlOgorICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgIDxsaXN0aXRlbT4K KyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgIDxsaXRlcmFsPmxvZzwvbGl0ZXJhbD46 IENvbmZsaWN0IGRldGFpbHMgYXJlIHJlY29yZGVkIGluIHRoZSBzZXJ2ZXIgbG9nLgorICAgICAg ICAgICAgIFRoaXMgaXMgdGhlIGRlZmF1bHQgYmVoYXZpb3IuCisgICAgICAgICAgICA8L3BhcmE+ CisgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAg ICAgIDxwYXJhPgorICAgICAgICAgICAgIDxsaXRlcmFsPnRhYmxlPC9saXRlcmFsPjogVGhlIHN5 c3RlbSBhdXRvbWF0aWNhbGx5IGNyZWF0ZXMgYSBzdHJ1Y3R1cmVkIHRhYmxlCisgICAgICAgICAg ICAgbmFtZWQgPGxpdGVyYWw+cGdfY29uZmxpY3RfbG9nX2Zvcl9zdWJpZF8mbHQ7c3ViaWQmZ3Q7 PC9saXRlcmFsPgorICAgICAgICAgICAgIGluIHRoZSA8bGl0ZXJhbD5wZ19jb25mbGljdDwvbGl0 ZXJhbD4gc2NoZW1hLiBUaGlzIGFsbG93cyBmb3IgZWFzeQorICAgICAgICAgICAgIHF1ZXJ5aW5n IGFuZCBhbmFseXNpcyBvZiBjb25mbGljdHMuCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAg ICAgICA8Y2F1dGlvbj4KKyAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgVGhlIGNv bmZsaWN0IGxvZyB0YWJsZSBpcyBzdHJpY3RseSB0aWVkIHRvIHRoZSBsaWZlY3ljbGUgb2YgdGhl CisgICAgICAgICAgICAgIHN1YnNjcmlwdGlvbiBvciB0aGUgPGxpdGVyYWw+Y29uZmxpY3RfbG9n X2Rlc3RpbmF0aW9uPC9saXRlcmFsPiBzZXR0aW5nLiBJZgorICAgICAgICAgICAgICB0aGUgc3Vi c2NyaXB0aW9uIGlzIGRyb3BwZWQsIG9yIGlmIHRoZSBkZXN0aW5hdGlvbiBpcyBjaGFuZ2VkIHRv CisgICAgICAgICAgICAgIDxsaXRlcmFsPmxvZzwvbGl0ZXJhbD4sIHRoZSB0YWJsZSBhbmQgYWxs IGl0cyByZWNvcmRlZCBjb25mbGljdCBkYXRhIGFyZQorICAgICAgICAgICAgICA8ZW1waGFzaXM+ cGVybWFuZW50bHkgZGVsZXRlZDwvZW1waGFzaXM+LgorICAgICAgICAgICAgIDwvcGFyYT4KKyAg ICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgSWYgY29uZmxpY3QgaGlzdG9yeSBtYXkg YmUgbmVlZGVkIGxhdGVyLCBiYWNrIHVwIHRoZSBjb25mbGljdCBsb2cKKyAgICAgICAgICAgICAg dGFibGUgYmVmb3JlIGl0IGdldHMgcmVtb3ZlZC4KKyAgICAgICAgICAgICA8L3BhcmE+CisgICAg ICAgICAgICA8L2NhdXRpb24+CisgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgIDxs aXN0aXRlbT4KKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgIDxsaXRlcmFsPmFsbDwv bGl0ZXJhbD46IFJlY29yZHMgY29uZmxpY3QgZGV0YWlscyB0byBib3RoIGRlc3RpbmF0aW9ucwor ICAgICAgICAgICAgIDxsaXRlcmFsPmxvZzwvbGl0ZXJhbD4gYW5kIDxsaXRlcmFsPnRhYmxlPC9s aXRlcmFsPi4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgPC9saXN0aXRlbT4KKyAg ICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0 aXRlbT4KKyAgICAgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgICAgIDx2YXJsaXN0ZW50cnkgaWQ9 InNxbC1jcmVhdGVzdWJzY3JpcHRpb24tcGFyYW1zLXdpdGgtY29weS1kYXRhIj4KICAgICAgICAg PHRlcm0+PGxpdGVyYWw+Y29weV9kYXRhPC9saXRlcmFsPiAoPHR5cGU+Ym9vbGVhbjwvdHlwZT4p PC90ZXJtPgogICAgICAgICA8bGlzdGl0ZW0+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRh bG9nL2FjbGNoay5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9hY2xjaGsuYwppbmRleCAwMDdlZGU5 OTdjNS4uN2Q0MDJlNDI5Y2EgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvYWNsY2hr LmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9hY2xjaGsuYwpAQCAtMzMzNywyNSArMzMzNywz OSBAQCBwZ19jbGFzc19hY2xtYXNrX2V4dChPaWQgdGFibGVfb2lkLCBPaWQgcm9sZWlkLCBBY2xN b2RlIG1hc2ssCiAKIAljbGFzc0Zvcm0gPSAoRm9ybV9wZ19jbGFzcykgR0VUU1RSVUNUKHR1cGxl KTsKIAotCS8qCi0JICogRGVueSBhbnlvbmUgcGVybWlzc2lvbiB0byB1cGRhdGUgYSBzeXN0ZW0g Y2F0YWxvZyB1bmxlc3MKLQkgKiBwZ19hdXRoaWQucm9sc3VwZXIgaXMgc2V0LgotCSAqCi0JICog QXMgb2YgNy40IHdlIGhhdmUgc29tZSB1cGRhdGFibGUgc3lzdGVtIHZpZXdzOyB0aG9zZSBzaG91 bGRuJ3QgYmUKLQkgKiBwcm90ZWN0ZWQgaW4gdGhpcyB3YXkuICBBc3N1bWUgdGhlIHZpZXcgcnVs ZXMgY2FuIHRha2UgY2FyZSBvZgotCSAqIHRoZW1zZWx2ZXMuICBBQ0xfVVNBR0UgaXMgaWYgd2Ug ZXZlciBoYXZlIHN5c3RlbSBzZXF1ZW5jZXMuCi0JICovCi0JaWYgKChtYXNrICYgKEFDTF9JTlNF UlQgfCBBQ0xfVVBEQVRFIHwgQUNMX0RFTEVURSB8IEFDTF9UUlVOQ0FURSB8IEFDTF9VU0FHRSkp ICYmCi0JCUlzU3lzdGVtQ2xhc3ModGFibGVfb2lkLCBjbGFzc0Zvcm0pICYmCi0JCWNsYXNzRm9y bS0+cmVsa2luZCAhPSBSRUxLSU5EX1ZJRVcgJiYKLQkJIXN1cGVydXNlcl9hcmcocm9sZWlkKSkK LQkJbWFzayAmPSB+KEFDTF9JTlNFUlQgfCBBQ0xfVVBEQVRFIHwgQUNMX0RFTEVURSB8IEFDTF9U UlVOQ0FURSB8IEFDTF9VU0FHRSk7Ci0KLQkvKgotCSAqIE90aGVyd2lzZSwgc3VwZXJ1c2VycyBi eXBhc3MgYWxsIHBlcm1pc3Npb24tY2hlY2tpbmcuCi0JICovCi0JaWYgKHN1cGVydXNlcl9hcmco cm9sZWlkKSkKKwlpZiAoIXN1cGVydXNlcl9hcmcocm9sZWlkKSkKIAl7CisJCWlmIChtYXNrICYg KEFDTF9JTlNFUlQgfCBBQ0xfVVBEQVRFIHwgQUNMX0RFTEVURSB8IEFDTF9UUlVOQ0FURSB8IEFD TF9VU0FHRSkpCisJCXsKKwkJCWlmIChJc0NvbmZsaWN0TG9nVGFibGVDbGFzcyhjbGFzc0Zvcm0p KQorCQkJeworCQkJCS8qCisJCQkJICogRm9yIGNvbmZsaWN0IGxvZyB0YWJsZXMsIGFsbG93IG5v bi1zdXBlcnVzZXJzIHRvIHBlcmZvcm0KKwkJCQkgKiBERUxFVEUgYW5kIFRSVU5DQVRFIGZvciBj bGVhbnVwIGFuZCBtYWludGVuYW5jZSwgd2hpbGUgc3RpbGwKKwkJCQkgKiByZXN0cmljdGluZyBJ TlNFUlQsIFVQREFURSwgYW5kIFVTQUdFLgorCQkJCSAqLworCQkJCW1hc2sgJj0gfihBQ0xfSU5T RVJUIHwgQUNMX1VQREFURSB8IEFDTF9VU0FHRSk7CisJCQl9CisJCQllbHNlIGlmIChJc1N5c3Rl bUNsYXNzKHRhYmxlX29pZCwgY2xhc3NGb3JtKSAmJgorCQkJCQkgY2xhc3NGb3JtLT5yZWxraW5k ICE9IFJFTEtJTkRfVklFVykKKwkJCXsKKwkJCQkvKgorCQkJCSAqIERlbnkgYW55b25lIHBlcm1p c3Npb24gdG8gdXBkYXRlIGEgc3lzdGVtIGNhdGFsb2cgdW5sZXNzCisJCQkJICogcGdfYXV0aGlk LnJvbHN1cGVyIGlzIHNldC4KKwkJCQkgKgorCQkJCSAqIEFzIG9mIDcuNCB3ZSBoYXZlIHNvbWUg dXBkYXRhYmxlIHN5c3RlbSB2aWV3czsgdGhvc2UKKwkJCQkgKiBzaG91bGRuJ3QgYmUgcHJvdGVj dGVkIGluIHRoaXMgd2F5LiAgQXNzdW1lIHRoZSB2aWV3IHJ1bGVzCisJCQkJICogY2FuIHRha2Ug Y2FyZSBvZiB0aGVtc2VsdmVzLiAgQUNMX1VTQUdFIGlzIGlmIHdlIGV2ZXIgaGF2ZQorCQkJCSAq IHN5c3RlbSBzZXF1ZW5jZXMuCisJCQkJICovCisJCQkJbWFzayAmPSB+KEFDTF9JTlNFUlQgfCBB Q0xfVVBEQVRFIHwgQUNMX0RFTEVURSB8IEFDTF9UUlVOQ0FURSB8CisJCQkJCQkgIEFDTF9VU0FH RSk7CisJCQl9CisJCX0KKwl9CisJZWxzZQorCXsKKwkJLyogU3VwZXJ1c2VycyBieXBhc3MgYWxs IHBlcm1pc3Npb24tY2hlY2tpbmcuICovCiAJCVJlbGVhc2VTeXNDYWNoZSh0dXBsZSk7CiAJCXJl dHVybiBtYXNrOwogCX0KQEAgLTM2NjAsNiArMzY3NCwxNCBAQCBwZ19uYW1lc3BhY2VfYWNsbWFz a19leHQoT2lkIG5zcF9vaWQsIE9pZCByb2xlaWQsCiAJQWNsCQkgICAqYWNsOwogCU9pZAkJCW93 bmVySWQ7CiAKKwkvKgorCSAqIERpc2FsbG93IGNyZWF0aW9uIGluIHRoZSBjb25mbGljdCBzY2hl bWEgZm9yIGV2ZXJ5b25lLCBpbmNsdWRpbmcKKwkgKiBzdXBlcnVzZXJzLCB1bmxlc3MgaW4gYmlu YXJ5LXVwZ3JhZGUgbW9kZS4KKwkgKi8KKwlpZiAoIUlzQmluYXJ5VXBncmFkZSAmJiAobWFzayAm IEFDTF9DUkVBVEUpICYmCisJCUlzQ29uZmxpY3RMb2dUYWJsZU5hbWVzcGFjZShuc3Bfb2lkKSkK KwkJbWFzayAmPSB+QUNMX0NSRUFURTsKKwogCS8qIFN1cGVydXNlcnMgYnlwYXNzIGFsbCBwZXJt aXNzaW9uIGNoZWNraW5nLiAqLwogCWlmIChzdXBlcnVzZXJfYXJnKHJvbGVpZCkpCiAJCXJldHVy biBtYXNrOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9jYXRhbG9nLmMgYi9zcmMv YmFja2VuZC9jYXRhbG9nL2NhdGFsb2cuYwppbmRleCA3YmU0OTAzMjkzNC4uYmU4NzkxYWY4NzUg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvY2F0YWxvZy5jCisrKyBiL3NyYy9iYWNr ZW5kL2NhdGFsb2cvY2F0YWxvZy5jCkBAIC04Niw3ICs4Niw5IEBAIGJvb2wKIElzU3lzdGVtQ2xh c3MoT2lkIHJlbGlkLCBGb3JtX3BnX2NsYXNzIHJlbHR1cGxlKQogewogCS8qIElzQ2F0YWxvZ1Jl bGF0aW9uT2lkIGlzIGEgYml0IGZhc3Rlciwgc28gdGVzdCB0aGF0IGZpcnN0ICovCi0JcmV0dXJu IChJc0NhdGFsb2dSZWxhdGlvbk9pZChyZWxpZCkgfHwgSXNUb2FzdENsYXNzKHJlbHR1cGxlKSk7 CisJcmV0dXJuIChJc0NhdGFsb2dSZWxhdGlvbk9pZChyZWxpZCkgfHwKKwkJCUlzVG9hc3RDbGFz cyhyZWx0dXBsZSkgfHwKKwkJCUlzQ29uZmxpY3RMb2dUYWJsZUNsYXNzKHJlbHR1cGxlKSk7CiB9 CiAKIC8qCkBAIC0yMzAsNiArMjMyLDIwIEBAIElzVG9hc3RDbGFzcyhGb3JtX3BnX2NsYXNzIHJl bHR1cGxlKQogCXJldHVybiBJc1RvYXN0TmFtZXNwYWNlKHJlbG5hbWVzcGFjZSk7CiB9CiAKKy8q CisgKiBJc0NvbmZsaWN0TG9nVGFibGVDbGFzcworICoJCVRydWUgaWZmIHBnX2NsYXNzIHR1cGxl IHJlcHJlc2VudHMgYSBDb25mbGljdCBMb2cgVGFibGUuCisgKgorICoJCURvZXMgbm90IHBlcmZv cm0gYW55IGNhdGFsb2cgYWNjZXNzZXMuCisgKi8KK2Jvb2wKK0lzQ29uZmxpY3RMb2dUYWJsZUNs YXNzKEZvcm1fcGdfY2xhc3MgcmVsdHVwbGUpCit7CisJT2lkCQkJcmVsbmFtZXNwYWNlID0gcmVs dHVwbGUtPnJlbG5hbWVzcGFjZTsKKworCXJldHVybiBJc0NvbmZsaWN0TG9nVGFibGVOYW1lc3Bh Y2UocmVsbmFtZXNwYWNlKTsKK30KKwogLyoKICAqIElzQ2F0YWxvZ05hbWVzcGFjZQogICoJCVRy dWUgaWZmIG5hbWVzcGFjZSBpcyBwZ19jYXRhbG9nLgpAQCAtMjY0LDYgKzI4MCwxNyBAQCBJc1Rv YXN0TmFtZXNwYWNlKE9pZCBuYW1lc3BhY2VJZCkKIAkJaXNUZW1wVG9hc3ROYW1lc3BhY2UobmFt ZXNwYWNlSWQpOwogfQogCisvKgorICogSXNDb25mbGljdExvZ1RhYmxlTmFtZXNwYWNlCisgKgkJ VHJ1ZSBpZmYgbmFtZXNwYWNlIGlzIHBnX2NvbmZsaWN0LgorICoKKyAqCQlEb2VzIG5vdCBwZXJm b3JtIGFueSBjYXRhbG9nIGFjY2Vzc2VzLgorICovCitib29sCitJc0NvbmZsaWN0TG9nVGFibGVO YW1lc3BhY2UoT2lkIG5hbWVzcGFjZUlkKQoreworCXJldHVybiBuYW1lc3BhY2VJZCA9PSBQR19D T05GTElDVF9OQU1FU1BBQ0U7Cit9CiAKIC8qCiAgKiBJc1Jlc2VydmVkTmFtZQpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jIGIvc3JjL2JhY2tlbmQvY2F0 YWxvZy9wZ19wdWJsaWNhdGlvbi5jCmluZGV4IDVjNDU3ZDlhY2E4Li4xZWM5NGM4NTFiMiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jCisrKyBiL3NyYy9i YWNrZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYwpAQCAtOTIsNiArOTIsMTMgQEAgY2hlY2tf cHVibGljYXRpb25fYWRkX3JlbGF0aW9uKFB1YmxpY2F0aW9uUmVsSW5mbyAqcHJpKQogCQkJCSBl cnJtc2coZXJyb3Jtc2csIHJlbG5hbWUpLAogCQkJCSBlcnJkZXRhaWwoIlRoaXMgb3BlcmF0aW9u IGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHN5c3RlbSB0YWJsZXMuIikpKTsKIAorCS8qIENhbid0IGJl IGNvbmZsaWN0IGxvZyB0YWJsZSAqLworCWlmIChJc0NvbmZsaWN0TG9nVGFibGVOYW1lc3BhY2Uo UmVsYXRpb25HZXROYW1lc3BhY2UodGFyZ2V0cmVsKSkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJ KGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJIGVycm1zZyhl cnJvcm1zZywgcmVsbmFtZSksCisJCQkJIGVycmRldGFpbCgiVGhpcyBvcGVyYXRpb24gaXMgbm90 IHN1cHBvcnRlZCBmb3IgY29uZmxpY3QgbG9nIHRhYmxlcy4iKSkpOworCiAJLyogVU5MT0dHRUQg YW5kIFRFTVAgcmVsYXRpb25zIGNhbm5vdCBiZSBwYXJ0IG9mIHB1YmxpY2F0aW9uLiAqLwogCWlm ICh0YXJnZXRyZWwtPnJkX3JlbC0+cmVscGVyc2lzdGVuY2UgPT0gUkVMUEVSU0lTVEVOQ0VfVEVN UCkKIAkJZXJlcG9ydChFUlJPUiwKQEAgLTExMyw3ICsxMjAsOCBAQCBzdGF0aWMgdm9pZAogY2hl Y2tfcHVibGljYXRpb25fYWRkX3NjaGVtYShPaWQgc2NoZW1haWQpCiB7CiAJLyogQ2FuJ3QgYmUg c3lzdGVtIG5hbWVzcGFjZSAqLwotCWlmIChJc0NhdGFsb2dOYW1lc3BhY2Uoc2NoZW1haWQpIHx8 IElzVG9hc3ROYW1lc3BhY2Uoc2NoZW1haWQpKQorCWlmIChJc0NhdGFsb2dOYW1lc3BhY2Uoc2No ZW1haWQpIHx8IElzVG9hc3ROYW1lc3BhY2Uoc2NoZW1haWQpIHx8CisJCUlzQ29uZmxpY3RMb2dU YWJsZU5hbWVzcGFjZShzY2hlbWFpZCkpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUo RVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCiAJCQkJIGVycm1zZygiY2Fubm90IGFk ZCBzY2hlbWEgXCIlc1wiIHRvIHB1YmxpY2F0aW9uIiwKQEAgLTE0OCw3ICsxNTYsOCBAQCBjaGVj a19wdWJsaWNhdGlvbl9hZGRfc2NoZW1hKE9pZCBzY2hlbWFpZCkKICAqIGlzIHJlYWxseSBpbmFk ZXF1YXRlIGZvciB0aGF0LCBzaW5jZSB0aGUgaW5mb3JtYXRpb25fc2NoZW1hIGNvdWxkIGJlCiAg KiBkcm9wcGVkIGFuZCByZWxvYWRlZCBhbmQgdGhlbiBpdCdsbCBiZSBjb25zaWRlcmVkIHB1Ymxp c2hhYmxlLiAgVGhlIGJlc3QKICAqIGxvbmctdGVybSBzb2x1dGlvbiBtYXkgYmUgdG8gYWRkIGEg InJlbGlzcHVibGlzaGFibGUiIGJvb2wgdG8gcGdfY2xhc3MsCi0gKiBhbmQgZGVwZW5kIG9uIHRo YXQgaW5zdGVhZCBvZiBPSUQgY2hlY2tzLgorICogYW5kIGRlcGVuZCBvbiB0aGF0IGluc3RlYWQg b2YgT0lEIGNoZWNrcy4gIElzQ29uZmxpY3RMb2dUYWJsZUNsYXNzKCkKKyAqIGV4Y2x1ZGVzIHRh YmxlcyBpbiBjb25mbGljdCBzY2hlbWEuCiAgKi8KIHN0YXRpYyBib29sCiBpc19wdWJsaXNoYWJs ZV9jbGFzcyhPaWQgcmVsaWQsIEZvcm1fcGdfY2xhc3MgcmVsdHVwbGUpCkBAIC0xNTcsNiArMTY2 LDcgQEAgaXNfcHVibGlzaGFibGVfY2xhc3MoT2lkIHJlbGlkLCBGb3JtX3BnX2NsYXNzIHJlbHR1 cGxlKQogCQkJcmVsdHVwbGUtPnJlbGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSB8 fAogCQkJcmVsdHVwbGUtPnJlbGtpbmQgPT0gUkVMS0lORF9TRVFVRU5DRSkgJiYKIAkJIUlzQ2F0 YWxvZ1JlbGF0aW9uT2lkKHJlbGlkKSAmJgorCQkhSXNDb25mbGljdExvZ1RhYmxlQ2xhc3MocmVs dHVwbGUpICYmCiAJCXJlbHR1cGxlLT5yZWxwZXJzaXN0ZW5jZSA9PSBSRUxQRVJTSVNURU5DRV9Q RVJNQU5FTlQgJiYKIAkJcmVsaWQgPj0gRmlyc3ROb3JtYWxPYmplY3RJZDsKIH0KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmMgYi9zcmMvYmFja2VuZC9j YXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5jCmluZGV4IGI1Y2IzMDFkYjg4Li4yMDY4ZTAzYzU3MSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uYworKysgYi9z cmMvYmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5jCkBAIC0xMzIsNiArMTMyLDcgQEAg R2V0U3Vic2NyaXB0aW9uKE9pZCBzdWJpZCwgYm9vbCBtaXNzaW5nX29rLCBib29sIGNvbm5pbmZv X25lZWRlZCwKIAlzdWItPnJldGFpbmRlYWR0dXBsZXMgPSBzdWJmb3JtLT5zdWJyZXRhaW5kZWFk dHVwbGVzOwogCXN1Yi0+bWF4cmV0ZW50aW9uID0gc3ViZm9ybS0+c3VibWF4cmV0ZW50aW9uOwog CXN1Yi0+cmV0ZW50aW9uYWN0aXZlID0gc3ViZm9ybS0+c3VicmV0ZW50aW9uYWN0aXZlOworCXN1 Yi0+Y29uZmxpY3Rsb2dyZWxpZCA9IHN1YmZvcm0tPnN1YmNvbmZsaWN0bG9ncmVsaWQ7CiAKIAlp ZiAoY29ubmluZm9fbmVlZGVkKQogCXsKQEAgLTIwMyw2ICsyMDQsMTIgQEAgR2V0U3Vic2NyaXB0 aW9uKE9pZCBzdWJpZCwgYm9vbCBtaXNzaW5nX29rLCBib29sIGNvbm5pbmZvX25lZWRlZCwKIAkJ CQkJCQkJICAgQW51bV9wZ19zdWJzY3JpcHRpb25fc3Vib3JpZ2luKTsKIAlzdWItPm9yaWdpbiA9 IFRleHREYXR1bUdldENTdHJpbmcoZGF0dW0pOwogCisJLyogR2V0IGNvbmZsaWN0IGxvZyBkZXN0 aW5hdGlvbiAqLworCWRhdHVtID0gU3lzQ2FjaGVHZXRBdHRyTm90TnVsbChTVUJTQ1JJUFRJT05P SUQsCisJCQkJCQkJCSAgIHR1cCwKKwkJCQkJCQkJICAgQW51bV9wZ19zdWJzY3JpcHRpb25fc3Vi Y29uZmxpY3Rsb2dkZXN0KTsKKwlzdWItPmNvbmZsaWN0bG9nZGVzdCA9IFRleHREYXR1bUdldENT dHJpbmcoZGF0dW0pOworCiAJLyogSXMgdGhlIHN1YnNjcmlwdGlvbiBvd25lciBhIHN1cGVydXNl cj8gKi8KIAlzdWItPm93bmVyc3VwZXJ1c2VyID0gc3VwZXJ1c2VyX2FyZyhzdWItPm93bmVyKTsK IApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsIGIvc3Jj L2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCmluZGV4IDhmMTI5YmFlYzkwLi41OTY3 NzYyZTYwMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3Fs CisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbApAQCAtMTUyNyw4ICsx NTI3LDggQEAgR1JBTlQgU0VMRUNUIChvaWQsIHN1YmRiaWQsIHN1YnNraXBsc24sIHN1Ym5hbWUs IHN1Ym93bmVyLCBzdWJlbmFibGVkLAogICAgICAgICAgICAgICBzdWJiaW5hcnksIHN1YnN0cmVh bSwgc3VidHdvcGhhc2VzdGF0ZSwgc3ViZGlzYWJsZW9uZXJyLAogCQkJICBzdWJwYXNzd29yZHJl cXVpcmVkLCBzdWJydW5hc293bmVyLCBzdWJmYWlsb3ZlciwKICAgICAgICAgICAgICAgc3VicmV0 YWluZGVhZHR1cGxlcywgc3VibWF4cmV0ZW50aW9uLCBzdWJyZXRlbnRpb25hY3RpdmUsCi0gICAg ICAgICAgICAgIHN1YnNlcnZlciwgc3Vic2xvdG5hbWUsIHN1YnN5bmNjb21taXQsIHN1YndhbHJj dnRpbWVvdXQsCi0gICAgICAgICAgICAgIHN1YnB1YmxpY2F0aW9ucywgc3Vib3JpZ2luKQorICAg ICAgICAgICAgICBzdWJzZXJ2ZXIsIHN1YmNvbmZsaWN0bG9ncmVsaWQsIHN1YmNvbmZsaWN0bG9n ZGVzdCwgc3Vic2xvdG5hbWUsCisgICAgICAgICAgICAgIHN1YnN5bmNjb21taXQsIHN1YndhbHJj dnRpbWVvdXQsIHN1YnB1YmxpY2F0aW9ucywgc3Vib3JpZ2luKQogICAgIE9OIHBnX3N1YnNjcmlw dGlvbiBUTyBwdWJsaWM7CiAKIENSRUFURSBWSUVXIHBnX3N0YXRfc3Vic2NyaXB0aW9uX3N0YXRz IEFTCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9sb2NrY21kcy5jIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvbG9ja2NtZHMuYwppbmRleCBmNjZiOGYxN2I5Yi4uMTkyY2IxNmQ5MDcg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2xvY2tjbWRzLmMKKysrIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvbG9ja2NtZHMuYwpAQCAtODMsNyArODMsMTggQEAgUmFuZ2VWYXJDYWxs YmFja0ZvckxvY2tUYWJsZShjb25zdCBSYW5nZVZhciAqcnYsIE9pZCByZWxpZCwgT2lkIG9sZHJl bGlkLAogCQlyZXR1cm47CQkJCQkvKiB3b29wcywgY29uY3VycmVudGx5IGRyb3BwZWQ7IG5vIHBl cm1pc3Npb25zCiAJCQkJCQkJCSAqIGNoZWNrICovCiAKLQkvKiBDdXJyZW50bHksIHdlIG9ubHkg YWxsb3cgcGxhaW4gdGFibGVzIG9yIHZpZXdzIHRvIGJlIGxvY2tlZCAqLworCS8qCisJICogTm90 ZTogQ29uZmxpY3QgbG9nIHRhYmxlcyBhcmUgZGVsaWJlcmF0ZWx5IE5PVCBibG9ja2VkIGhlcmUs IGV2ZW4gdGhvdWdoCisJICogb3RoZXIgZGlyZWN0IERETCBvbiB0aGVtIGlzIHJlamVjdGVkIGVs c2V3aGVyZS4gcGdfZHVtcCByZWxpZXMgb24gYmVpbmcKKwkgKiBhYmxlIHRvIHRha2UgYW4gQUND RVNTIFNIQVJFIGxvY2sgb24gdGhlc2UgdGFibGVzIHRvIHNhZmVseSBkdW1wIHRoZWlyCisJICog ZGVmaW5pdGlvbnMgZHVyaW5nIGEgYmluYXJ5IHVwZ3JhZGUsIHNvIHdlIHBlcm1pdCBMT0NLIGNv bW1hbmRzIG9uIHRoZW0KKwkgKiBhbmQgdHJlYXQgdGhlbSBsaWtlIG9yZGluYXJ5IHRhYmxlcyBo ZXJlLiBJdCdzIHRydWUgdGhhdCBhIHN0cm9uZyBsb2NrCisJICogKFNoYXJlTG9jayBvciBhYm92 ZSkgb24gc3VjaCBhIHRhYmxlIHdvdWxkIGNvbmZsaWN0IHdpdGggdGhlCisJICogUm93RXhjbHVz aXZlTG9jayB0YWtlbiBieSB0aGUgYXBwbHkgd29ya2VyJ3MgaW5zZXJ0cyBhbmQgY291bGQgc3Rh bGwKKwkgKiBjb25mbGljdCBsb2dnaW5nIGFzIHdlbGwgYXMgdGhlIGFwcGx5IHdvcmtlciBmb3Ig YXMgbG9uZyBhcyBpdCBpcyBoZWxkLgorCSAqIEJ1dCBsb2NraW5nIGEgc3lzdGVtLW1hbmFnZWQg Y29uZmxpY3QgbG9nIHRhYmxlIGlzIGFuIHVudXN1YWwgdGhpbmcgdG8KKwkgKiBkbywgYW5kIGl0 IGRvZXNuJ3Qgc2VlbSB3b3J0aCB0aGUgdHJvdWJsZSBvZiBmaWx0ZXJpbmcgYnkgbG9jayBtb2Rl IGhlcmUuCisJICovCiAJaWYgKHJlbGtpbmQgIT0gUkVMS0lORF9SRUxBVElPTiAmJiByZWxraW5k ICE9IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUgJiYKIAkJcmVsa2luZCAhPSBSRUxLSU5EX1ZJ RVcpCiAJCWVyZXBvcnQoRVJST1IsCkBAIC0xOTgsNiArMjA5LDE2IEBAIExvY2tWaWV3UmVjdXJz ZV93YWxrZXIoTm9kZSAqbm9kZSwgTG9ja1ZpZXdSZWN1cnNlX2NvbnRleHQgKmNvbnRleHQpCiAJ CQkJcmVsa2luZCAhPSBSRUxLSU5EX1ZJRVcpCiAJCQkJY29udGludWU7CiAKKwkJCS8qCisJCQkg KiBDb25mbGljdCBsb2cgdGFibGVzIG9ubHkgc3VwcG9ydCBTRUxFQ1QsIERFTEVURSwgYW5kIFRS VU5DQVRFLgorCQkJICogQSBkaXJlY3QgTE9DSyBvbiB0aGVtIGlzIHBlcm1pdHRlZCBzb2xlbHkg c28gdGhhdCBwZ19kdW1wIGNhbgorCQkJICogbG9jayB0aGVtIGR1cmluZyBhIGJpbmFyeSB1cGdy YWRlOyBsb2NraW5nIG9uZSBpbmRpcmVjdGx5IGJ5CisJCQkgKiBsb2NraW5nIGEgdmlldyBvdmVy IGl0IGlzIG5vdCBuZWVkZWQgZm9yIHRoYXQsIHNvIHNraXAgaXQgaGVyZQorCQkJICogcmF0aGVy IHRoYW4gbG9ja2luZyBpdC4KKwkJCSAqLworCQkJaWYgKElzQ29uZmxpY3RMb2dUYWJsZU5hbWVz cGFjZShnZXRfcmVsX25hbWVzcGFjZShyZWxpZCkpKQorCQkJCWNvbnRpbnVlOworCiAJCQkvKgog CQkJICogV2UgbWlnaHQgYmUgZGVhbGluZyB3aXRoIGEgc2VsZi1yZWZlcmVudGlhbCB2aWV3LiAg SWYgc28sIHdlCiAJCQkgKiBjYW4ganVzdCBzdG9wIHJlY3Vyc2luZywgc2luY2Ugd2UgYWxyZWFk eSBsb2NrZWQgaXQuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wb2xpY3kuYyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3BvbGljeS5jCmluZGV4IDIxYjhlZWJlMzJkLi5lYmFiMmVk ZGU5MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcG9saWN5LmMKKysrIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvcG9saWN5LmMKQEAgLTc5LDYgKzc5LDE4IEBAIFJhbmdlVmFyQ2Fs bGJhY2tGb3JQb2xpY3koY29uc3QgUmFuZ2VWYXIgKnJ2LCBPaWQgcmVsaWQsIE9pZCBvbGRyZWxp ZCwKIAlpZiAoIW9iamVjdF9vd25lcmNoZWNrKFJlbGF0aW9uUmVsYXRpb25JZCwgcmVsaWQsIEdl dFVzZXJJZCgpKSkKIAkJYWNsY2hlY2tfZXJyb3IoQUNMQ0hFQ0tfTk9UX09XTkVSLCBnZXRfcmVs a2luZF9vYmp0eXBlKGdldF9yZWxfcmVsa2luZChyZWxpZCkpLCBydi0+cmVsbmFtZSk7CiAKKwkv KgorCSAqIENvbmZsaWN0IGxvZyB0YWJsZXMgYXJlIHVzZWQgaW50ZXJuYWxseSBmb3IgbG9naWNh bCByZXBsaWNhdGlvbiBjb25mbGljdAorCSAqIGxvZ2dpbmcgYW5kIHNob3VsZCBub3QgYmUgbW9k aWZpZWQgZGlyZWN0bHksIGFzIGl0IGNvdWxkIGRpc3J1cHQKKwkgKiBjb25mbGljdCBsb2dnaW5n LgorCSAqLworCWlmIChJc0NvbmZsaWN0TG9nVGFibGVDbGFzcyhjbGFzc2Zvcm0pKQorCQllcmVw b3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUpLAorCQkJ CSBlcnJtc2coImNhbm5vdCBjcmVhdGUgcG9saWN5IG9uIGNvbmZsaWN0IGxvZyB0YWJsZSBcIiVz XCIiLAorCQkJCQkJcnYtPnJlbG5hbWUpLAorCQkJCSBlcnJkZXRhaWwoIkNvbmZsaWN0IGxvZyB0 YWJsZXMgYXJlIHN5c3RlbS1tYW5hZ2VkIHRhYmxlcyBmb3IgbG9naWNhbCByZXBsaWNhdGlvbiBj b25mbGljdHMuIikpKTsKKwogCS8qIE5vIHN5c3RlbSB0YWJsZSBtb2RpZmljYXRpb25zIHVubGVz cyBleHBsaWNpdGx5IGFsbG93ZWQuICovCiAJaWYgKCFhbGxvd1N5c3RlbVRhYmxlTW9kcyAmJiBJ c1N5c3RlbUNsYXNzKHJlbGlkLCBjbGFzc2Zvcm0pKQogCQllcmVwb3J0KEVSUk9SLApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3RhdHNjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9zdGF0c2NtZHMuYwppbmRleCBiMzU0NzIzYmU0NC4uY2U5OGViYjM1ZWEgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N0YXRzY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3N0YXRzY21kcy5jCkBAIC0xNDcsNiArMTQ3LDIwIEBAIENyZWF0ZVN0YXRpc3RpY3Mo Q3JlYXRlU3RhdHNTdG10ICpzdG10LCBib29sIGNoZWNrX3JpZ2h0cykKIAkJCWFjbGNoZWNrX2Vy cm9yKEFDTENIRUNLX05PVF9PV05FUiwgZ2V0X3JlbGtpbmRfb2JqdHlwZShyZWwtPnJkX3JlbC0+ cmVsa2luZCksCiAJCQkJCQkgICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKTsKIAorCQkv KgorCQkgKiBDb25mbGljdCBsb2cgdGFibGVzIGFyZSBzeXN0ZW0tbWFuYWdlZCB0YWJsZXMgdXNl ZCBpbnRlcm5hbGx5IGZvcgorCQkgKiBsb2dpY2FsIHJlcGxpY2F0aW9uIGNvbmZsaWN0IGxvZ2dp bmcuIFVubGlrZSB1c2VyIHRhYmxlcywgdGhleSBhcmUKKwkJICogbm90IGV4cGVjdGVkIHRvIGhh dmUgY29tcGxleCBxdWVyeSB1c2FnZSwgc28gdG8ga2VlcCB0aGluZ3Mgc2ltcGxlLAorCQkgKiB1 c2VyLWRlZmluZWQgZXh0ZW5kZWQgc3RhdGlzdGljcyBhcmUgbm90IHJlcXVpcmVkIG9yIHN1cHBv cnRlZCBhdAorCQkgKiBwcmVzZW50LgorCQkgKi8KKwkJaWYgKElzQ29uZmxpY3RMb2dUYWJsZUNs YXNzKHJlbC0+cmRfcmVsKSkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNP REVfV1JPTkdfT0JKRUNUX1RZUEUpLAorCQkJCQkgZXJybXNnKCJjYW5ub3QgY3JlYXRlIHN0YXRp c3RpY3Mgb24gY29uZmxpY3QgbG9nIHRhYmxlIFwiJXNcIiIsCisJCQkJCQkJUmVsYXRpb25HZXRS ZWxhdGlvbk5hbWUocmVsKSksCisJCQkJCSBlcnJkZXRhaWwoIkNvbmZsaWN0IGxvZyB0YWJsZXMg YXJlIHN5c3RlbS1tYW5hZ2VkIHRhYmxlcyBmb3IgbG9naWNhbCByZXBsaWNhdGlvbiBjb25mbGlj dHMuIikpKTsKKwogCQkvKiBDcmVhdGluZyBzdGF0aXN0aWNzIG9uIHN5c3RlbSBjYXRhbG9ncyBp cyBub3QgYWxsb3dlZCAqLwogCQlpZiAoIWFsbG93U3lzdGVtVGFibGVNb2RzICYmIElzU3lzdGVt UmVsYXRpb24ocmVsKSkKIAkJCWVyZXBvcnQoRVJST1IsCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJz Y3JpcHRpb25jbWRzLmMKaW5kZXggZWUwNmE3MjZmNDIuLmUzMGUwZTBkZmU3IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMKKysrIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVk ZSAiY2F0YWxvZy9wZ19hdXRoaWRfZC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfZGF0YWJhc2Vf ZC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfZm9yZWlnbl9zZXJ2ZXIuaCIKKyNpbmNsdWRlICJj YXRhbG9nL3BnX25hbWVzcGFjZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfc3Vic2NyaXB0aW9u LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19zdWJzY3JpcHRpb25fcmVsLmgiCiAjaW5jbHVkZSAi Y2F0YWxvZy9wZ190eXBlLmgiCkBAIC0zNSw2ICszNiw3IEBACiAjaW5jbHVkZSAiY29tbWFuZHMv ZGVmcmVtLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5oIgogI2luY2x1ZGUg ImNvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuaCIKKyNpbmNsdWRlICJjb21tYW5kcy90YWJsZWNt ZHMuaCIKICNpbmNsdWRlICJleGVjdXRvci9leGVjdXRvci5oIgogI2luY2x1ZGUgImZvcmVpZ24v Zm9yZWlnbi5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgpAQCAtNzksNiArODEsNyBAQAogI2Rl ZmluZSBTVUJPUFRfV0FMX1JFQ0VJVkVSX1RJTUVPVVQJCQkweDAwMDEwMDAwCiAjZGVmaW5lIFNV Qk9QVF9MU04JCQkJCTB4MDAwMjAwMDAKICNkZWZpbmUgU1VCT1BUX09SSUdJTgkJCQkweDAwMDQw MDAwCisjZGVmaW5lIFNVQk9QVF9DT05GTElDVF9MT0dfREVTVAkweDAwMDgwMDAwCiAKIC8qIGNo ZWNrIGlmIHRoZSAndmFsJyBoYXMgJ2JpdHMnIHNldCAqLwogI2RlZmluZSBJc1NldCh2YWwsIGJp dHMpICAoKCh2YWwpICYgKGJpdHMpKSA9PSAoYml0cykpCkBAIC0xMDcsNiArMTEwLDcgQEAgdHlw ZWRlZiBzdHJ1Y3QgU3ViT3B0cwogCWJvb2wJCXJldGFpbmRlYWR0dXBsZXM7CiAJaW50MzIJCW1h eHJldGVudGlvbjsKIAljaGFyCSAgICpvcmlnaW47CisJQ29uZmxpY3RMb2dEZXN0IGNvbmZsaWN0 bG9nZGVzdDsKIAlYTG9nUmVjUHRyCWxzbjsKIAljaGFyCSAgICp3YWxfcmVjZWl2ZXJfdGltZW91 dDsKIH0gU3ViT3B0czsKQEAgLTE0MCw3ICsxNDQsMTIgQEAgc3RhdGljIExpc3QgKm1lcmdlX3B1 YmxpY2F0aW9ucyhMaXN0ICpvbGRwdWJsaXN0LCBMaXN0ICpuZXdwdWJsaXN0LCBib29sIGFkZHB1 YiwKIHN0YXRpYyB2b2lkIFJlcG9ydFNsb3RDb25uZWN0aW9uRXJyb3IoTGlzdCAqcnN0YXRlcywg T2lkIHN1YmlkLCBjaGFyICpzbG90bmFtZSwgY2hhciAqZXJyKTsKIHN0YXRpYyB2b2lkIENoZWNr QWx0ZXJTdWJPcHRpb24oU3Vic2NyaXB0aW9uICpzdWIsIGNvbnN0IGNoYXIgKm9wdGlvbiwKIAkJ CQkJCQkJYm9vbCBzbG90X25lZWRzX3VwZGF0ZSwgYm9vbCBpc1RvcExldmVsKTsKLQorc3RhdGlj IGJvb2wgYWx0ZXJfc3ViX2NvbmZsaWN0X2xvZ19kZXN0KFN1YnNjcmlwdGlvbiAqc3ViLAorCQkJ CQkJCQkJCUNvbmZsaWN0TG9nRGVzdCBvbGRsb2dkZXN0LAorCQkJCQkJCQkJCUNvbmZsaWN0TG9n RGVzdCBuZXdsb2dkZXN0LAorCQkJCQkJCQkJCU9pZCAqY29uZmxpY3R0YWJsZXJlbGlkKTsKK3N0 YXRpYyB2b2lkIGRyb3Bfc3ViX2NvbmZsaWN0X2xvZ190YWJsZShPaWQgc3ViaWQsIGNoYXIgKnN1 Ym5hbWUsCisJCQkJCQkJCQkJT2lkIHN1YmNvbmZsaWN0bG9ncmVsaWQpOwogCiAvKgogICogQ29t bW9uIG9wdGlvbiBwYXJzaW5nIGZ1bmN0aW9uIGZvciBDUkVBVEUgYW5kIEFMVEVSIFNVQlNDUklQ VElPTiBjb21tYW5kcy4KQEAgLTE5Niw2ICsyMDUsOCBAQCBwYXJzZV9zdWJzY3JpcHRpb25fb3B0 aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKnN0bXRfb3B0aW9ucywKIAkJb3B0cy0+bWF4 cmV0ZW50aW9uID0gMDsKIAlpZiAoSXNTZXQoc3VwcG9ydGVkX29wdHMsIFNVQk9QVF9PUklHSU4p KQogCQlvcHRzLT5vcmlnaW4gPSBwc3RyZHVwKExPR0lDQUxSRVBfT1JJR0lOX0FOWSk7CisJaWYg KElzU2V0KHN1cHBvcnRlZF9vcHRzLCBTVUJPUFRfQ09ORkxJQ1RfTE9HX0RFU1QpKQorCQlvcHRz LT5jb25mbGljdGxvZ2Rlc3QgPSBDT05GTElDVF9MT0dfREVTVF9MT0c7CiAKIAkvKiBQYXJzZSBv cHRpb25zICovCiAJZm9yZWFjaChsYywgc3RtdF9vcHRpb25zKQpAQCAtNDM2LDYgKzQ0NywxOCBA QCBwYXJzZV9zdWJzY3JpcHRpb25fb3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKnN0 bXRfb3B0aW9ucywKIAkJCQkJCQkJCQkgUEdDX0JBQ0tFTkQsIFBHQ19TX1RFU1QsIEdVQ19BQ1RJ T05fU0VULAogCQkJCQkJCQkJCSBmYWxzZSwgMCwgZmFsc2UpOwogCQl9CisJCWVsc2UgaWYgKElz U2V0KHN1cHBvcnRlZF9vcHRzLCBTVUJPUFRfQ09ORkxJQ1RfTE9HX0RFU1QpICYmCisJCQkJIHN0 cmNtcChkZWZlbC0+ZGVmbmFtZSwgImNvbmZsaWN0X2xvZ19kZXN0aW5hdGlvbiIpID09IDApCisJ CXsKKwkJCWNoYXIgKnZhbDsKKworCQkJaWYgKElzU2V0KG9wdHMtPnNwZWNpZmllZF9vcHRzLCBT VUJPUFRfQ09ORkxJQ1RfTE9HX0RFU1QpKQorCQkJCWVycm9yQ29uZmxpY3RpbmdEZWZFbGVtKGRl ZmVsLCBwc3RhdGUpOworCisJCQl2YWwgPSBkZWZHZXRTdHJpbmcoZGVmZWwpOworCQkJb3B0cy0+ Y29uZmxpY3Rsb2dkZXN0ID0gR2V0Q29uZmxpY3RMb2dEZXN0KHZhbCk7CisJCQlvcHRzLT5zcGVj aWZpZWRfb3B0cyB8PSBTVUJPUFRfQ09ORkxJQ1RfTE9HX0RFU1Q7CisJCX0KIAkJZWxzZQogCQkJ ZXJlcG9ydChFUlJPUiwKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLApAQCAt NjYwLDYgKzY4Myw3IEBAIENyZWF0ZVN1YnNjcmlwdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENy ZWF0ZVN1YnNjcmlwdGlvblN0bXQgKnN0bXQsCiAJdWludDMyCQlzdXBwb3J0ZWRfb3B0czsKIAlT dWJPcHRzCQlvcHRzID0gezB9OwogCUFjbFJlc3VsdAlhY2xyZXN1bHQ7CisJT2lkCQkJbG9ncmVs aWQgPSBJbnZhbGlkT2lkOwogCiAJLyoKIAkgKiBQYXJzZSBhbmQgY2hlY2sgb3B0aW9ucy4KQEAg LTY3NCw3ICs2OTgsOCBAQCBDcmVhdGVTdWJzY3JpcHRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBD cmVhdGVTdWJzY3JpcHRpb25TdG10ICpzdG10LAogCQkJCQkgIFNVQk9QVF9SVU5fQVNfT1dORVIg fCBTVUJPUFRfRkFJTE9WRVIgfAogCQkJCQkgIFNVQk9QVF9SRVRBSU5fREVBRF9UVVBMRVMgfAog CQkJCQkgIFNVQk9QVF9NQVhfUkVURU5USU9OX0RVUkFUSU9OIHwKLQkJCQkJICBTVUJPUFRfV0FM X1JFQ0VJVkVSX1RJTUVPVVQgfCBTVUJPUFRfT1JJR0lOKTsKKwkJCQkJICBTVUJPUFRfV0FMX1JF Q0VJVkVSX1RJTUVPVVQgfCBTVUJPUFRfT1JJR0lOIHwKKwkJCQkJICBTVUJPUFRfQ09ORkxJQ1Rf TE9HX0RFU1QpOwogCXBhcnNlX3N1YnNjcmlwdGlvbl9vcHRpb25zKHBzdGF0ZSwgc3RtdC0+b3B0 aW9ucywgc3VwcG9ydGVkX29wdHMsICZvcHRzKTsKIAogCS8qCkBAIC04NDgsNiArODczLDIwIEBA IENyZWF0ZVN1YnNjcmlwdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVN1YnNjcmlwdGlv blN0bXQgKnN0bXQsCiAJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1Ym9yaWdpbiAtIDFd ID0KIAkJQ1N0cmluZ0dldFRleHREYXR1bShvcHRzLm9yaWdpbik7CiAKKwl2YWx1ZXNbQW51bV9w Z19zdWJzY3JpcHRpb25fc3ViY29uZmxpY3Rsb2dkZXN0IC0gMV0gPQorCQlDU3RyaW5nR2V0VGV4 dERhdHVtKENvbmZsaWN0TG9nRGVzdE5hbWVzW29wdHMuY29uZmxpY3Rsb2dkZXN0XSk7CisKKwkv KgorCSAqIFdlIGNyZWF0ZSB0aGUgY29uZmxpY3QgbG9nIHRhYmxlIGhlcmUsIGlmIHJlcXVpcmVk LCBzbyB0aGF0IGl0cyByZWxhdGlvbgorCSAqIE9JRCBjYW4gYmUgc3RvcmVkIHdoZW4gaW5zZXJ0 aW5nIHRoZSBwZ19zdWJzY3JpcHRpb24gdHVwbGUgYmVsb3cuCisJICovCisJaWYgKENPTkZMSUNU U19MT0dHRURfVE9fVEFCTEUob3B0cy5jb25mbGljdGxvZ2Rlc3QpKQorCQlsb2dyZWxpZCA9IGNy ZWF0ZV9jb25mbGljdF9sb2dfdGFibGUoc3ViaWQsIHN0bXQtPnN1Ym5hbWUsIG93bmVyKTsKKwor CS8qIFN0b3JlIHRhYmxlIE9JRCBpbiB0aGUgY2F0YWxvZy4gKi8KKwl2YWx1ZXNbQW51bV9wZ19z dWJzY3JpcHRpb25fc3ViY29uZmxpY3Rsb2dyZWxpZCAtIDFdID0KKwkJCQkJCU9iamVjdElkR2V0 RGF0dW0obG9ncmVsaWQpOworCiAJdHVwID0gaGVhcF9mb3JtX3R1cGxlKFJlbGF0aW9uR2V0RGVz Y3IocmVsKSwgdmFsdWVzLCBudWxscyk7CiAKIAkvKiBJbnNlcnQgdHVwbGUgaW50byBjYXRhbG9n LiAqLwpAQCAtODY4LDYgKzkwNywyNSBAQCBDcmVhdGVTdWJzY3JpcHRpb24oUGFyc2VTdGF0ZSAq cHN0YXRlLCBDcmVhdGVTdWJzY3JpcHRpb25TdG10ICpzdG10LAogCQlyZWNvcmREZXBlbmRlbmN5 T24oJm15c2VsZiwgJnJlZmVyZW5jZWQsIERFUEVOREVOQ1lfTk9STUFMKTsKIAl9CiAKKwkvKgor CSAqIEVzdGFibGlzaCBhbiBpbnRlcm5hbCBkZXBlbmRlbmN5IGJldHdlZW4gdGhlIGNvbmZsaWN0 IGxvZyB0YWJsZSBhbmQKKwkgKiB0aGUgc3Vic2NyaXB0aW9uLgorCSAqCisJICogV2UgdXNlIERF UEVOREVOQ1lfSU5URVJOQUwgdG8gc2lnbmlmeSB0aGF0IHRoZSB0YWJsZSdzIGxpZmVjeWNsZSBp cworCSAqIHN0cmljdGx5IHRpZWQgdG8gdGhlIHN1YnNjcmlwdGlvbiwgc2ltaWxhciB0byBob3cg YSBUT0FTVCB0YWJsZSByZWxhdGVzCisJICogdG8gaXRzIG1haW4gdGFibGUgb3IgYSBzZXF1ZW5j ZSByZWxhdGVzIHRvIGFuIGlkZW50aXR5IGNvbHVtbi4KKwkgKgorCSAqIFRoaXMgZW5zdXJlcyB0 aGUgY29uZmxpY3QgbG9nIHRhYmxlIGlzIGF1dG9tYXRpY2FsbHkgcmVhcGVkIGR1cmluZyBhCisJ ICogRFJPUCBTVUJTQ1JJUFRJT04gdmlhIHBlcmZvcm1EZWxldGlvbigpLgorCSAqLworCWlmIChP aWRJc1ZhbGlkKGxvZ3JlbGlkKSkKKwl7CisJCU9iamVjdEFkZHJlc3MgY2x0YWRkcjsKKworCQlP YmplY3RBZGRyZXNzU2V0KGNsdGFkZHIsIFJlbGF0aW9uUmVsYXRpb25JZCwgbG9ncmVsaWQpOwor CQlyZWNvcmREZXBlbmRlbmN5T24oJmNsdGFkZHIsICZteXNlbGYsIERFUEVOREVOQ1lfSU5URVJO QUwpOworCX0KKwogCS8qCiAJICogQSByZXBsaWNhdGlvbiBvcmlnaW4gaXMgY3VycmVudGx5IGNy ZWF0ZWQgZm9yIGFsbCBzdWJzY3JpcHRpb25zLAogCSAqIGluY2x1ZGluZyB0aG9zZSB0aGF0IG9u bHkgY29udGFpbiBzZXF1ZW5jZXMgb3IgYXJlIG90aGVyd2lzZSBlbXB0eS4KQEAgLTE0MzcsNiAr MTQ5NSw3MSBAQCBDaGVja0FsdGVyU3ViT3B0aW9uKFN1YnNjcmlwdGlvbiAqc3ViLCBjb25zdCBj aGFyICpvcHRpb24sCiAJfQogfQogCisvKgorICogYWx0ZXJfc3ViX2NvbmZsaWN0X2xvZ19kZXN0 CisgKgorICogV2hlbiB0aGUgc3Vic2NyaXB0aW9uJ3MgJ2NvbmZsaWN0X2xvZ19kZXN0aW5hdGlv bicgaXMgY2hhbmdlZCwgdXBkYXRlIHRoZQorICogY29uZmxpY3QgbG9nIHRhYmxlIGlmIHJlcXVp cmVkLgorICoKKyAqIElmIHRoZSBuZXcgZGVzdGluYXRpb24gbm8gbG9uZ2VyIHJlcXVpcmVzIGEg Y29uZmxpY3QgbG9nIHRhYmxlLCB0aGUgZXhpc3RpbmcKKyAqIGNvbmZsaWN0IGxvZyB0YWJsZSBh c3NvY2lhdGVkIHdpdGggdGhlIHN1YnNjcmlwdGlvbiBpcyByZW1vdmVkIHZpYSBpbnRlcm5hbAor ICogZGVwZW5kZW5jeSBjbGVhbnVwIHRvIHByZXZlbnQgb3JwaGFuZWQgcmVsYXRpb25zLgorICoK KyAqIE9uIHN1Y2Nlc3MsICpjb25mbGljdHRhYmxlcmVsaWQgaXMgc2V0IHRvIHRoZSBPSUQgb2Yg dGhlIGNvbmZsaWN0IGxvZyB0YWJsZQorICogdGhhdCB3YXMgY3JlYXRlZCBvciB2YWxpZGF0ZWQs IG9yIHRvIEludmFsaWRPaWQgaWYgbm8gdGFibGUgaXMgcmVxdWlyZWQuCisgKgorICogUmV0dXJu cyB0cnVlIGlmIHRoZSBzdWJzY3JpcHRpb24ncyBjb25mbGljdCBsb2cgdGFibGUgcmVmZXJlbmNl IG11c3QgYmUKKyAqIHVwZGF0ZWQgYXMgYSByZXN1bHQgb2YgdGhlIGRlc3RpbmF0aW9uIGNoYW5n ZTsgZmFsc2Ugb3RoZXJ3aXNlLgorICovCitzdGF0aWMgYm9vbAorYWx0ZXJfc3ViX2NvbmZsaWN0 X2xvZ19kZXN0KFN1YnNjcmlwdGlvbiAqc3ViLCBDb25mbGljdExvZ0Rlc3Qgb2xkbG9nZGVzdCwK KwkJCQkJCQlDb25mbGljdExvZ0Rlc3QgbmV3bG9nZGVzdCwKKwkJCQkJCQlPaWQgKmNvbmZsaWN0 dGFibGVyZWxpZCkKK3sKKwlib29sCQl3YW50X3RhYmxlOworCWJvb2wJCWhhc19vbGR0YWJsZTsK Kwlib29sCQl1cGRhdGVfcmVsaWQgPSBmYWxzZTsKKwlPaWQJCQlyZWxpZCA9IEludmFsaWRPaWQ7 CisKKwl3YW50X3RhYmxlID0gQ09ORkxJQ1RTX0xPR0dFRF9UT19UQUJMRShuZXdsb2dkZXN0KTsK KwloYXNfb2xkdGFibGUgPSBDT05GTElDVFNfTE9HR0VEX1RPX1RBQkxFKG9sZGxvZ2Rlc3QpOwor CisJaWYgKGhhc19vbGR0YWJsZSkKKwl7CisJCS8qIFRoZXJlIGlzIGEgY29uZmxpY3QgbG9nIHRh YmxlIGFscmVhZHkuICovCisJCWlmICghd2FudF90YWJsZSkKKwkJeworCQkJZHJvcF9zdWJfY29u ZmxpY3RfbG9nX3RhYmxlKHN1Yi0+b2lkLCBzdWItPm5hbWUsCisJCQkJCQkJCQkJc3ViLT5jb25m bGljdGxvZ3JlbGlkKTsKKwkJCXVwZGF0ZV9yZWxpZCA9IHRydWU7CisJCX0KKwl9CisJZWxzZQor CXsKKwkJLyogVGhlcmUgd2FzIG5vIHByZXZpb3VzIGNvbmZsaWN0IGxvZyB0YWJsZS4gKi8KKwkJ aWYgKHdhbnRfdGFibGUpCisJCXsKKwkJCU9iamVjdEFkZHJlc3MgY2x0YWRkcjsKKwkJCU9iamVj dEFkZHJlc3Mgc3Vib2JqOworCisJCQlyZWxpZCA9IGNyZWF0ZV9jb25mbGljdF9sb2dfdGFibGUo c3ViLT5vaWQsIHN1Yi0+bmFtZSwgc3ViLT5vd25lcik7CisJCQl1cGRhdGVfcmVsaWQgPSB0cnVl OworCisJCQkvKgorCQkJICogRXN0YWJsaXNoIGFuIGludGVybmFsIGRlcGVuZGVuY3kgYmV0d2Vl biB0aGUgY29uZmxpY3QgbG9nIHRhYmxlCisJCQkgKiBhbmQgdGhlIHN1YnNjcmlwdGlvbi4gIEZv ciBkZXRhaWxzIHJlZmVyIGNvbW1lbnRzIGluCisJCQkgKiBDcmVhdGVTdWJzY3JpcHRpb24gZnVu Y3Rpb24uCisJCQkgKi8KKwkJCU9iamVjdEFkZHJlc3NTZXQoY2x0YWRkciwgUmVsYXRpb25SZWxh dGlvbklkLCByZWxpZCk7CisJCQlPYmplY3RBZGRyZXNzU2V0KHN1Ym9iaiwgU3Vic2NyaXB0aW9u UmVsYXRpb25JZCwgc3ViLT5vaWQpOworCQkJcmVjb3JkRGVwZW5kZW5jeU9uKCZjbHRhZGRyLCAm c3Vib2JqLCBERVBFTkRFTkNZX0lOVEVSTkFMKTsKKwkJfQorCX0KKworCSpjb25mbGljdHRhYmxl cmVsaWQgPSByZWxpZDsKKwlyZXR1cm4gdXBkYXRlX3JlbGlkOworfQorCiAvKgogICogQWx0ZXIg dGhlIGV4aXN0aW5nIHN1YnNjcmlwdGlvbi4KICAqLwpAQCAtMTQ5OSw3ICsxNjIyLDggQEAgQWx0 ZXJTdWJzY3JpcHRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRlclN1YnNjcmlwdGlvblN0bXQg KnN0bXQsCiAJCQkJCQkJICBTVUJPUFRfUkVUQUlOX0RFQURfVFVQTEVTIHwKIAkJCQkJCQkgIFNV Qk9QVF9NQVhfUkVURU5USU9OX0RVUkFUSU9OIHwKIAkJCQkJCQkgIFNVQk9QVF9XQUxfUkVDRUlW RVJfVElNRU9VVCB8Ci0JCQkJCQkJICBTVUJPUFRfT1JJR0lOKTsKKwkJCQkJCQkgIFNVQk9QVF9P UklHSU4gfAorCQkJCQkJCSAgU1VCT1BUX0NPTkZMSUNUX0xPR19ERVNUKTsKIAkJCWJyZWFrOwog CiAJCWNhc2UgQUxURVJfU1VCU0NSSVBUSU9OX0VOQUJMRUQ6CkBAIC0xODU4LDYgKzE5ODIsMzQg QEAgQWx0ZXJTdWJzY3JpcHRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRlclN1YnNjcmlwdGlv blN0bXQgKnN0bXQsCiAJCQkJCXJlcGxhY2VzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YndhbHJj dnRpbWVvdXQgLSAxXSA9IHRydWU7CiAJCQkJfQogCisJCQkJaWYgKElzU2V0KG9wdHMuc3BlY2lm aWVkX29wdHMsIFNVQk9QVF9DT05GTElDVF9MT0dfREVTVCkpCisJCQkJeworCQkJCQlDb25mbGlj dExvZ0Rlc3Qgb2xkX2Rlc3QgPQorCQkJCQkJCUdldENvbmZsaWN0TG9nRGVzdChzdWItPmNvbmZs aWN0bG9nZGVzdCk7CisKKwkJCQkJaWYgKG9wdHMuY29uZmxpY3Rsb2dkZXN0ICE9IG9sZF9kZXN0 KQorCQkJCQl7CisJCQkJCQlib29sCQl1cGRhdGVfcmVsaWQ7CisJCQkJCQlPaWQJCQlyZWxpZCA9 IEludmFsaWRPaWQ7CisKKwkJCQkJCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJjb25m bGljdGxvZ2Rlc3QgLSAxXSA9CisJCQkJCQkJQ1N0cmluZ0dldFRleHREYXR1bShDb25mbGljdExv Z0Rlc3ROYW1lc1tvcHRzLmNvbmZsaWN0bG9nZGVzdF0pOworCQkJCQkJcmVwbGFjZXNbQW51bV9w Z19zdWJzY3JpcHRpb25fc3ViY29uZmxpY3Rsb2dkZXN0IC0gMV0gPSB0cnVlOworCisJCQkJCQl1 cGRhdGVfcmVsaWQgPSBhbHRlcl9zdWJfY29uZmxpY3RfbG9nX2Rlc3Qoc3ViLAorCQkJCQkJCQkJ CQkJCQkJCSAgIG9sZF9kZXN0LAorCQkJCQkJCQkJCQkJCQkJCSAgIG9wdHMuY29uZmxpY3Rsb2dk ZXN0LAorCQkJCQkJCQkJCQkJCQkJCSAgICZyZWxpZCk7CisJCQkJCQlpZiAodXBkYXRlX3JlbGlk KQorCQkJCQkJeworCQkJCQkJCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJjb25mbGlj dGxvZ3JlbGlkIC0gMV0gPQorCQkJCQkJCQlPYmplY3RJZEdldERhdHVtKHJlbGlkKTsKKwkJCQkJ CQlyZXBsYWNlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJjb25mbGljdGxvZ3JlbGlkIC0gMV0g PQorCQkJCQkJCQl0cnVlOworCQkJCQkJfQorCQkJCQl9CisJCQkJfQorCiAJCQkJdXBkYXRlX3R1 cGxlID0gdHJ1ZTsKIAkJCQlicmVhazsKIAkJCX0KQEAgLTIyOTcsNiArMjQ0OSw1MSBAQCBjb25z dHJ1Y3Rfc3Vic2VydmVyX2Nvbm5pbmZvKE9pZCBzdWJzZXJ2ZXIsIE9pZCBzdWJvd25lciwgY2hh ciAqKmVycikKIAlyZXR1cm4gRm9yZWlnblNlcnZlckNvbm5lY3Rpb25TdHJpbmcoc3Vib3duZXIs IHNlcnZlcik7CiB9CiAKKy8qCisgKiBEcm9wIHN1YnNjcmlwdGlvbidzIGNvbmZsaWN0IGxvZyB0 YWJsZQorICoKKyAqIFRoZSBjb25mbGljdCBsb2cgdGFibGUgaXMgcmVnaXN0ZXJlZCBhcyBhbiBp bnRlcm5hbCBkZXBlbmRlbmN5IG9mIHRoZQorICogc3Vic2NyaXB0aW9uLiBUaGlzIGZ1bmN0aW9u IHJlbW92ZXMgdGhlIGRlcGVuZGVuY3kgYnkgcGVyZm9ybWluZyBhCisgKiBjYXNjYWRpbmcgZGVs ZXRpb24gb24gdGhlIHN1YnNjcmlwdGlvbiBvYmplY3QsIHdoaWNoIGluIHR1cm4gZHJvcHMgdGhl CisgKiBhc3NvY2lhdGVkIGNvbmZsaWN0IGxvZyB0YWJsZS4KKyAqCisgKiBUaGlzIGlzIHVzZWQg dG8gY2xlYW4gdXAgY29uZmxpY3QgbG9nIHRhYmxlcyB0aGF0IGFyZSBubyBsb25nZXIgcmVxdWly ZWQsCisgKiBwcmV2ZW50aW5nIGFjY3VtdWxhdGlvbiBvZiBzdGFsZSBvciBvcnBoYW5lZCByZWxh dGlvbnMuCisgKgorICogTk9URToKKyAqIE9ubHkgY29uZmxpY3QgbG9nIHRhYmxlcyBhcmUgY3Vy cmVudGx5IG1hbmFnZWQgdmlhIHRoaXMgaW50ZXJuYWwgZGVwZW5kZW5jeQorICogbWVjaGFuaXNt LgorICovCitzdGF0aWMgdm9pZAorZHJvcF9zdWJfY29uZmxpY3RfbG9nX3RhYmxlKE9pZCBzdWJp ZCwgY2hhciAqc3VibmFtZSwgT2lkIHN1YmNvbmZsaWN0bG9ncmVsaWQpCit7CisJLyogRHJvcCBh bnkgZGVwZW5kZW50IGNvbmZsaWN0IGxvZyB0YWJsZSAqLworCWlmIChPaWRJc1ZhbGlkKHN1YmNv bmZsaWN0bG9ncmVsaWQpKQorCXsKKwkJT2JqZWN0QWRkcmVzcyBvYmplY3Q7CisJCWNoYXIgCQkg KmNvbmZsaWN0cmVsbmFtZTsKKworCQljb25mbGljdHJlbG5hbWUgPSBnZXRfcmVsX25hbWUoc3Vi Y29uZmxpY3Rsb2dyZWxpZCk7CisJCWlmIChjb25mbGljdHJlbG5hbWUgPT0gTlVMTCkKKwkJCWVs b2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciByZWxhdGlvbiAldSIsCisJCQkJIHN1 YmNvbmZsaWN0bG9ncmVsaWQpOworCisJCS8qCisJCSAqIEJ5IHVzaW5nIFBFUkZPUk1fREVMRVRJ T05fU0tJUF9PUklHSU5BTCwgd2UgZW5zdXJlIHRoYXQgb25seSB0aGUKKwkJICogY29uZmxpY3Qg bG9nIHRhYmxlIGlzIGRlbGV0ZWQgd2hpbGUgdGhlIHN1YnNjcmlwdGlvbiByZW1haW5zLgorCQkg Ki8KKwkJT2JqZWN0QWRkcmVzc1NldChvYmplY3QsIFN1YnNjcmlwdGlvblJlbGF0aW9uSWQsIHN1 YmlkKTsKKwkJcGVyZm9ybURlbGV0aW9uKCZvYmplY3QsIERST1BfQ0FTQ0FERSwKKwkJCQkJCVBF UkZPUk1fREVMRVRJT05fSU5URVJOQUwgfAorCQkJCQkJUEVSRk9STV9ERUxFVElPTl9TS0lQX09S SUdJTkFMKTsKKworCQllcmVwb3J0KE5PVElDRSwKKwkJCQllcnJtc2coImRyb3BwZWQgY29uZmxp Y3QgbG9nIHRhYmxlIFwiJXNcIiBmb3Igc3Vic2NyaXB0aW9uIFwiJXNcIiIsCisJCQkJCQlnZXRf cXVhbGlmaWVkX29iam5hbWUoUEdfQ09ORkxJQ1RfTkFNRVNQQUNFLCBjb25mbGljdHJlbG5hbWUp LAorCQkJCQkJc3VibmFtZSkpOworCX0KK30KKwogLyoKICAqIERyb3AgYSBzdWJzY3JpcHRpb24K ICAqLwpAQCAtMjMwOSw2ICsyNTA2LDcgQEAgRHJvcFN1YnNjcmlwdGlvbihEcm9wU3Vic2NyaXB0 aW9uU3RtdCAqc3RtdCwgYm9vbCBpc1RvcExldmVsKQogCU9pZAkJCXN1YmlkOwogCU9pZAkJCXN1 Ym93bmVyOwogCU9pZAkJCXN1YnNlcnZlcjsKKwlPaWQJCQlzdWJjb25mbGljdGxvZ3JlbGlkOwog CWNoYXIJICAgKnN1YmNvbm5pbmZvID0gTlVMTDsKIAlEYXR1bQkJZGF0dW07CiAJYm9vbAkJaXNu dWxsOwpAQCAtMjM2MSw2ICsyNTU5LDcgQEAgRHJvcFN1YnNjcmlwdGlvbihEcm9wU3Vic2NyaXB0 aW9uU3RtdCAqc3RtdCwgYm9vbCBpc1RvcExldmVsKQogCXN1YmlkID0gZm9ybS0+b2lkOwogCXN1 Ym93bmVyID0gZm9ybS0+c3Vib3duZXI7CiAJc3Vic2VydmVyID0gZm9ybS0+c3Vic2VydmVyOwor CXN1YmNvbmZsaWN0bG9ncmVsaWQgPSBmb3JtLT5zdWJjb25mbGljdGxvZ3JlbGlkOwogCW11c3Rf dXNlX3Bhc3N3b3JkID0gIXN1cGVydXNlcl9hcmcoc3Vib3duZXIpICYmIGZvcm0tPnN1YnBhc3N3 b3JkcmVxdWlyZWQ7CiAKIAkvKiBtdXN0IGJlIG93bmVyICovCkBAIC0yNDc4LDYgKzI2NzcsOSBA QCBEcm9wU3Vic2NyaXB0aW9uKERyb3BTdWJzY3JpcHRpb25TdG10ICpzdG10LCBib29sIGlzVG9w TGV2ZWwpCiAJCXJlcGxvcmlnaW5fZHJvcF9ieV9uYW1lKG9yaWdpbm5hbWUsIHRydWUsIGZhbHNl KTsKIAl9CiAKKwkvKiBEcm9wIHN1YnNjcmlwdGlvbidzIGNvbmZsaWN0IGxvZyB0YWJsZSAqLwor CWRyb3Bfc3ViX2NvbmZsaWN0X2xvZ190YWJsZShzdWJpZCwgc3VibmFtZSwgc3ViY29uZmxpY3Rs b2dyZWxpZCk7CisKIAkvKiBDbGVhbiB1cCBkZXBlbmRlbmNpZXMgKi8KIAlkZWxldGVEZXBlbmRl bmN5UmVjb3Jkc0ZvcihTdWJzY3JpcHRpb25SZWxhdGlvbklkLCBzdWJpZCwgZmFsc2UpOwogCWRl bGV0ZVNoYXJlZERlcGVuZGVuY3lSZWNvcmRzRm9yKFN1YnNjcmlwdGlvblJlbGF0aW9uSWQsIHN1 YmlkLCAwKTsKQEAgLTI3MjIsNiArMjkyNCwxMSBAQCBBbHRlclN1YnNjcmlwdGlvbk93bmVyX2lu dGVybmFsKFJlbGF0aW9uIHJlbCwgSGVhcFR1cGxlIHR1cCwgT2lkIG5ld093bmVySWQpCiAJZm9y bS0+c3Vib3duZXIgPSBuZXdPd25lcklkOwogCUNhdGFsb2dUdXBsZVVwZGF0ZShyZWwsICZ0dXAt PnRfc2VsZiwgdHVwKTsKIAorCS8qIFVwZGF0ZSBvd25lciBvZiB0aGUgY29uZmxpY3QgbG9nIHRh YmxlIGlmIGl0IGV4aXN0cy4gKi8KKwlpZiAoT2lkSXNWYWxpZChmb3JtLT5zdWJjb25mbGljdGxv Z3JlbGlkKSkKKwkJQVRFeGVjQ2hhbmdlT3duZXIoZm9ybS0+c3ViY29uZmxpY3Rsb2dyZWxpZCwg bmV3T3duZXJJZCwgdHJ1ZSwKKwkJCQkJCSAgQWNjZXNzRXhjbHVzaXZlTG9jayk7CisKIAkvKiBV cGRhdGUgb3duZXIgZGVwZW5kZW5jeSByZWZlcmVuY2UgKi8KIAljaGFuZ2VEZXBlbmRlbmN5T25P d25lcihTdWJzY3JpcHRpb25SZWxhdGlvbklkLAogCQkJCQkJCWZvcm0tPm9pZCwKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvdGFibGVjbWRzLmMKaW5kZXggNDcyZGIxMTJmYTcuLmM5NDVhNDQ5NDNhIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21t YW5kcy90YWJsZWNtZHMuYwpAQCAtMjQ2NCw5ICsyNDY0LDExIEBAIHRydW5jYXRlX2NoZWNrX3Jl bChPaWQgcmVsaWQsIEZvcm1fcGdfY2xhc3MgcmVsdHVwbGUpCiAJICogcGdfbGFyZ2VvYmplY3Qg YW5kIHBnX2xhcmdlb2JqZWN0X21ldGFkYXRhIHRvIGJlIHRydW5jYXRlZCBhcyBwYXJ0IG9mCiAJ ICogcGdfdXBncmFkZSwgYmVjYXVzZSB3ZSBuZWVkIHRvIGNoYW5nZSBpdHMgcmVsZmlsZW5vZGUg dG8gbWF0Y2ggdGhlIG9sZAogCSAqIGNsdXN0ZXIsIGFuZCBhbGxvd2luZyBhIFRSVU5DQVRFIGNv bW1hbmQgdG8gYmUgZXhlY3V0ZWQgaXMgdGhlIGVhc2llc3QKLQkgKiB3YXkgb2YgZG9pbmcgdGhh dC4KKwkgKiB3YXkgb2YgZG9pbmcgdGhhdC4gV2UgYWxzbyBhbGxvdyBUUlVOQ0FURSBvbiB0aGUg Y29uZmxpY3QgbG9nIHRhYmxlcywKKwkgKiB0byBwZXJtaXQgdXNlcnMgdG8gbWFudWFsbHkgcHJ1 bmUgY29uZmxpY3QgZGF0YSB0byBtYW5hZ2UgZGlzayBzcGFjZS4KIAkgKi8KLQlpZiAoIWFsbG93 U3lzdGVtVGFibGVNb2RzICYmIElzU3lzdGVtQ2xhc3MocmVsaWQsIHJlbHR1cGxlKQorCWlmICgh YWxsb3dTeXN0ZW1UYWJsZU1vZHMgJiYgSXNTeXN0ZW1DbGFzcyhyZWxpZCwgcmVsdHVwbGUpICYm CisJCSFJc0NvbmZsaWN0TG9nVGFibGVDbGFzcyhyZWx0dXBsZSkKIAkJJiYgKCFJc0JpbmFyeVVw Z3JhZGUgfHwKIAkJCShyZWxpZCAhPSBMYXJnZU9iamVjdFJlbGF0aW9uSWQgJiYKIAkJCSByZWxp ZCAhPSBMYXJnZU9iamVjdE1ldGFkYXRhUmVsYXRpb25JZCkpKQpAQCAtMjc1NSw2ICsyNzU3LDE4 IEBAIE1lcmdlQXR0cmlidXRlcyhMaXN0ICpjb2x1bW5zLCBjb25zdCBMaXN0ICpzdXBlcnMsIGNo YXIgcmVscGVyc2lzdGVuY2UsCiAJCQkJCSBlcnJtc2coImNhbm5vdCBpbmhlcml0IGZyb20gcGFy dGl0aW9uIFwiJXNcIiIsCiAJCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsYXRpb24p KSkpOwogCisJCS8qCisJCSAqIENvbmZsaWN0IGxvZyB0YWJsZXMgYXJlIG1hbmFnZWQgYnkgdGhl IHN5c3RlbSBmb3IgbG9naWNhbAorCQkgKiByZXBsaWNhdGlvbiBhbmQgc2hvdWxkIG5vdCBiZSB1 c2VkIGFzIHBhcmVudCB0YWJsZXMsIGFzCisJCSAqIGluaGVyaXRhbmNlIGNvdWxkIGludGVyZmVy ZSB3aXRoIHRoZSBsb2dnaW5nIGJlaGF2aW9yLgorCQkgKi8KKwkJaWYgKElzQ29uZmxpY3RMb2dU YWJsZU5hbWVzcGFjZShyZWxhdGlvbi0+cmRfcmVsLT5yZWxuYW1lc3BhY2UpKQorCQkJZXJlcG9y dChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSksCisJCQkJ CSBlcnJtc2coImNhbm5vdCBpbmhlcml0IGZyb20gY29uZmxpY3QgbG9nIHRhYmxlIFwiJXNcIiIs CisJCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsYXRpb24pKSwKKwkJCQkJIGVycmRl dGFpbCgiQ29uZmxpY3QgbG9nIHRhYmxlcyBhcmUgc3lzdGVtLW1hbmFnZWQgdGFibGVzIGZvciBs b2dpY2FsIHJlcGxpY2F0aW9uIGNvbmZsaWN0cy4iKSkpOworCiAJCWlmIChyZWxhdGlvbi0+cmRf cmVsLT5yZWxraW5kICE9IFJFTEtJTkRfUkVMQVRJT04gJiYKIAkJCXJlbGF0aW9uLT5yZF9yZWwt PnJlbGtpbmQgIT0gUkVMS0lORF9GT1JFSUdOX1RBQkxFICYmCiAJCQlyZWxhdGlvbi0+cmRfcmVs LT5yZWxraW5kICE9IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUpCkBAIC0zODkyLDYgKzM5MDYs MTkgQEAgcmVuYW1lYXR0X2NoZWNrKE9pZCBteXJlbGlkLCBGb3JtX3BnX2NsYXNzIGNsYXNzZm9y bSwgYm9vbCByZWN1cnNpbmcpCiAJaWYgKCFvYmplY3Rfb3duZXJjaGVjayhSZWxhdGlvblJlbGF0 aW9uSWQsIG15cmVsaWQsIEdldFVzZXJJZCgpKSkKIAkJYWNsY2hlY2tfZXJyb3IoQUNMQ0hFQ0tf Tk9UX09XTkVSLCBnZXRfcmVsa2luZF9vYmp0eXBlKGdldF9yZWxfcmVsa2luZChteXJlbGlkKSks CiAJCQkJCSAgIE5hbWVTdHIoY2xhc3Nmb3JtLT5yZWxuYW1lKSk7CisKKwkvKgorCSAqIENvbmZs aWN0IGxvZyB0YWJsZXMgYXJlIHVzZWQgaW50ZXJuYWxseSBmb3IgbG9naWNhbCByZXBsaWNhdGlv biBjb25mbGljdAorCSAqIGxvZ2dpbmcgYW5kIHNob3VsZCBub3QgYmUgbW9kaWZpZWQgZGlyZWN0 bHksIGFzIGl0IGNvdWxkIGRpc3J1cHQKKwkgKiBjb25mbGljdCBsb2dnaW5nLgorCSAqLworCWlm IChJc0NvbmZsaWN0TG9nVGFibGVDbGFzcyhjbGFzc2Zvcm0pKQorCQllcmVwb3J0KEVSUk9SLAor CQkJCShlcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUpLAorCQkJCSBlcnJtc2coImNh bm5vdCByZW5hbWUgY29sdW1ucyBvZiBjb25mbGljdCBsb2cgdGFibGUgXCIlc1wiIiwKKwkJCQkJ CU5hbWVTdHIoY2xhc3Nmb3JtLT5yZWxuYW1lKSksCisJCQkJIGVycmRldGFpbCgiQ29uZmxpY3Qg bG9nIHRhYmxlcyBhcmUgc3lzdGVtLW1hbmFnZWQgdGFibGVzIGZvciBsb2dpY2FsIHJlcGxpY2F0 aW9uIGNvbmZsaWN0cy4iKSkpOworCiAJaWYgKCFhbGxvd1N5c3RlbVRhYmxlTW9kcyAmJiBJc1N5 c3RlbUNsYXNzKG15cmVsaWQsIGNsYXNzZm9ybSkpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVy cmNvZGUoRVJSQ09ERV9JTlNVRkZJQ0lFTlRfUFJJVklMRUdFKSwKQEAgLTY4OTQsNiArNjkyMSwy MiBAQCBBVFNpbXBsZVBlcm1pc3Npb25zKEFsdGVyVGFibGVUeXBlIGNtZHR5cGUsIFJlbGF0aW9u IHJlbCwgaW50IGFsbG93ZWRfdGFyZ2V0cykKIAkJYWNsY2hlY2tfZXJyb3IoQUNMQ0hFQ0tfTk9U X09XTkVSLCBnZXRfcmVsa2luZF9vYmp0eXBlKHJlbC0+cmRfcmVsLT5yZWxraW5kKSwKIAkJCQkJ ICAgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSk7CiAKKwkvKgorCSAqIENvbmZsaWN0IGxv ZyB0YWJsZXMgYXJlIHVzZWQgaW50ZXJuYWxseSBmb3IgbG9naWNhbCByZXBsaWNhdGlvbiBjb25m bGljdAorCSAqIGxvZ2dpbmcgYW5kIHNob3VsZCBub3QgYmUgYWx0ZXJlZCBkaXJlY3RseSwgYXMg aXQgY291bGQgZGlzcnVwdCBjb25mbGljdAorCSAqIGxvZ2dpbmcuIERpcmVjdCBBTFRFUiBjb21t YW5kcyBhcmUgYWxyZWFkeSByZWplY3RlZCBkdXJpbmcgcmVsYXRpb24KKwkgKiBsb29rdXAgaW4g UmFuZ2VWYXJDYWxsYmFja0ZvckFsdGVyUmVsYXRpb24oKSwgYW5kIEFsdGVyVGFibGVNb3ZlQWxs KCkKKwkgKiBza2lwcyB0aGVzZSB0YWJsZXMsIHNvIGEgY29uZmxpY3QgbG9nIHRhYmxlIGRvZXMg bm90IG5vcm1hbGx5IHJlYWNoIGhlcmU7CisJICogdGhpcyBjaGVjayBndWFyZHMgYW55IGludGVy bmFsIGNhbGxlciB0aGF0IGFycml2ZXMgdmlhCisJICogQWx0ZXJUYWJsZUludGVybmFsKCkuCisJ ICovCisJaWYgKElzQ29uZmxpY3RMb2dUYWJsZUNsYXNzKHJlbC0+cmRfcmVsKSkKKwkJZXJlcG9y dChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVDVF9UWVBFKSwKKwkJCQkg ZXJybXNnKCJjYW5ub3QgYWx0ZXIgY29uZmxpY3QgbG9nIHRhYmxlIFwiJXNcIiIsCisJCQkJCQlS ZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKSwKKwkJCQkgZXJyZGV0YWlsKCJDb25mbGljdCBs b2cgdGFibGVzIGFyZSBzeXN0ZW0tbWFuYWdlZCB0YWJsZXMgZm9yIGxvZ2ljYWwgcmVwbGljYXRp b24gY29uZmxpY3RzLiIpKSk7CisKIAlpZiAoIWFsbG93U3lzdGVtVGFibGVNb2RzICYmIElzU3lz dGVtUmVsYXRpb24ocmVsKSkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RF X0lOU1VGRklDSUVOVF9QUklWSUxFR0UpLApAQCAtMTAyMDMsNiArMTAyNDYsMTggQEAgQVRBZGRG b3JlaWduS2V5Q29uc3RyYWludChMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIs IFJlbGF0aW9uIHJlbCwKIAkJCQkgZXJybXNnKCJyZWZlcmVuY2VkIHJlbGF0aW9uIFwiJXNcIiBp cyBub3QgYSB0YWJsZSIsCiAJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShwa3JlbCkpKSk7 CiAKKwkvKgorCSAqIENvbmZsaWN0IGxvZyB0YWJsZXMgYXJlIHVzZWQgaW50ZXJuYWxseSBmb3Ig bG9naWNhbCByZXBsaWNhdGlvbiBjb25mbGljdAorCSAqIGxvZ2dpbmcgYW5kIHNob3VsZCBub3Qg YmUgcmVmZXJlbmNlZCBieSBmb3JlaWduIGtleXMsIGFzIGl0IGNvdWxkCisJICogZGlzcnVwdCBj b25mbGljdCBsb2dnaW5nLgorCSAqLworCWlmIChJc0NvbmZsaWN0TG9nVGFibGVDbGFzcyhwa3Jl bC0+cmRfcmVsKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1dST05H X09CSkVDVF9UWVBFKSwKKwkJCQkgZXJybXNnKCJjYW5ub3QgcmVmZXJlbmNlIGNvbmZsaWN0IGxv ZyB0YWJsZSBcIiVzXCIiLAorCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocGtyZWwpKSwK KwkJCQkgZXJyZGV0YWlsKCJDb25mbGljdCBsb2cgdGFibGVzIGFyZSBzeXN0ZW0tbWFuYWdlZCB0 YWJsZXMgZm9yIGxvZ2ljYWwgcmVwbGljYXRpb24gY29uZmxpY3RzLiIpKSk7CisKIAlpZiAoIWFs bG93U3lzdGVtVGFibGVNb2RzICYmIElzU3lzdGVtUmVsYXRpb24ocGtyZWwpKQogCQllcmVwb3J0 KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfSU5TVUZGSUNJRU5UX1BSSVZJTEVHRSksCkBA IC0xNzUzOSwxMyArMTc1OTQsMTggQEAgQWx0ZXJUYWJsZU1vdmVBbGwoQWx0ZXJUYWJsZU1vdmVB bGxTdG10ICpzdG10KQogCQkgKiByZWFsbHkgd2lzaGVzIHRvIGRvIHNvLCB0aGV5IGNhbiBpc3N1 ZSB0aGUgaW5kaXZpZHVhbCBBTFRFUgogCQkgKiBjb21tYW5kcyBkaXJlY3RseS4KIAkJICoKLQkJ ICogQWxzbywgZXhwbGljaXRseSBhdm9pZCBhbnkgc2hhcmVkIHRhYmxlcywgdGVtcCB0YWJsZXMs IG9yIFRPQVNUCisJCSAqIEFsc28sIGV4cGxpY2l0bHkgYXZvaWQgYW55IHNoYXJlZCB0YWJsZXMs IHRlbXAgdGFibGVzLCBUT0FTVAogCQkgKiAoVE9BU1Qgd2lsbCBiZSBtb3ZlZCB3aXRoIHRoZSBt YWluIHRhYmxlKS4KKwkJICoKKwkJICogQ29uZmxpY3QgbG9nIHRhYmxlcyBhcmUgc3lzdGVtLW1h bmFnZWQgZm9yIGxvZ2ljYWwgcmVwbGljYXRpb24gYW5kCisJCSAqIGNhbm5vdCBiZSBhbHRlcmVk IGRpcmVjdGx5LCBzbyBza2lwIHRoZW0gYXMgd2VsbDsgb3RoZXJ3aXNlIGEgc2luZ2xlCisJCSAq IHN1Y2ggdGFibGUgaW4gdGhlIHNvdXJjZSB0YWJsZXNwYWNlIHdvdWxkIGFib3J0IHRoZSB3aG9s ZSBidWxrIG1vdmUuCiAJCSAqLwogCQlpZiAoSXNDYXRhbG9nTmFtZXNwYWNlKHJlbEZvcm0tPnJl bG5hbWVzcGFjZSkgfHwKIAkJCXJlbEZvcm0tPnJlbGlzc2hhcmVkIHx8CiAJCQlpc0FueVRlbXBO YW1lc3BhY2UocmVsRm9ybS0+cmVsbmFtZXNwYWNlKSB8fAotCQkJSXNUb2FzdE5hbWVzcGFjZShy ZWxGb3JtLT5yZWxuYW1lc3BhY2UpKQorCQkJSXNUb2FzdE5hbWVzcGFjZShyZWxGb3JtLT5yZWxu YW1lc3BhY2UpIHx8CisJCQlJc0NvbmZsaWN0TG9nVGFibGVOYW1lc3BhY2UocmVsRm9ybS0+cmVs bmFtZXNwYWNlKSkKIAkJCWNvbnRpbnVlOwogCiAJCS8qIE9ubHkgbW92ZSB0aGUgb2JqZWN0IHR5 cGUgcmVxdWVzdGVkICovCkBAIC0yMDAzNCw2ICsyMDA5NCwxOCBAQCBSYW5nZVZhckNhbGxiYWNr T3duc1JlbGF0aW9uKGNvbnN0IFJhbmdlVmFyICpyZWxhdGlvbiwKIAkJYWNsY2hlY2tfZXJyb3Io QUNMQ0hFQ0tfTk9UX09XTkVSLCBnZXRfcmVsa2luZF9vYmp0eXBlKGdldF9yZWxfcmVsa2luZChy ZWxJZCkpLAogCQkJCQkgICByZWxhdGlvbi0+cmVsbmFtZSk7CiAKKwkvKgorCSAqIENvbmZsaWN0 IGxvZyB0YWJsZXMgYXJlIHVzZWQgaW50ZXJuYWxseSBmb3IgbG9naWNhbCByZXBsaWNhdGlvbiBj b25mbGljdAorCSAqIGxvZ2dpbmcgYW5kIHNob3VsZCBub3QgYmUgbW9kaWZpZWQgZGlyZWN0bHks IGFzIGl0IGNvdWxkIGRpc3J1cHQKKwkgKiBjb25mbGljdCBsb2dnaW5nLgorCSAqLworCWlmIChJ c0NvbmZsaWN0TG9nVGFibGVDbGFzcygoRm9ybV9wZ19jbGFzcykgR0VUU1RSVUNUKHR1cGxlKSkp CisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQ RSksCisJCQkJIGVycm1zZygiY2Fubm90IGNoYW5nZSBjb25mbGljdCBsb2cgdGFibGUgXCIlc1wi IiwKKwkJCQkJCXJlbGF0aW9uLT5yZWxuYW1lKSwKKwkJCQkgZXJyZGV0YWlsKCJDb25mbGljdCBs b2cgdGFibGVzIGFyZSBzeXN0ZW0tbWFuYWdlZCB0YWJsZXMgZm9yIGxvZ2ljYWwgcmVwbGljYXRp b24gY29uZmxpY3RzLiIpKSk7CisKIAlpZiAoIWFsbG93U3lzdGVtVGFibGVNb2RzICYmCiAJCUlz U3lzdGVtQ2xhc3MocmVsSWQsIChGb3JtX3BnX2NsYXNzKSBHRVRTVFJVQ1QodHVwbGUpKSkKIAkJ ZXJlcG9ydChFUlJPUiwKQEAgLTIwMDY5LDYgKzIwMTQxLDE4IEBAIFJhbmdlVmFyQ2FsbGJhY2tG b3JBbHRlclJlbGF0aW9uKGNvbnN0IFJhbmdlVmFyICpydiwgT2lkIHJlbGlkLCBPaWQgb2xkcmVs aWQsCiAJaWYgKCFvYmplY3Rfb3duZXJjaGVjayhSZWxhdGlvblJlbGF0aW9uSWQsIHJlbGlkLCBH ZXRVc2VySWQoKSkpCiAJCWFjbGNoZWNrX2Vycm9yKEFDTENIRUNLX05PVF9PV05FUiwgZ2V0X3Jl bGtpbmRfb2JqdHlwZShnZXRfcmVsX3JlbGtpbmQocmVsaWQpKSwgcnYtPnJlbG5hbWUpOwogCisJ LyoKKwkgKiBDb25mbGljdCBsb2cgdGFibGVzIGFyZSB1c2VkIGludGVybmFsbHkgZm9yIGxvZ2lj YWwgcmVwbGljYXRpb24gY29uZmxpY3QKKwkgKiBsb2dnaW5nIGFuZCBzaG91bGQgbm90IGJlIGFs dGVyZWQgZGlyZWN0bHksIGFzIGl0IGNvdWxkIGRpc3J1cHQgY29uZmxpY3QKKwkgKiBsb2dnaW5n LgorCSAqLworCWlmIChJc0NvbmZsaWN0TG9nVGFibGVDbGFzcyhjbGFzc2Zvcm0pKQorCQllcmVw b3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUpLAorCQkJ CSBlcnJtc2coImNhbm5vdCBhbHRlciBjb25mbGljdCBsb2cgdGFibGUgXCIlc1wiIiwKKwkJCQkJ CXJ2LT5yZWxuYW1lKSwKKwkJCQkgZXJyZGV0YWlsKCJDb25mbGljdCBsb2cgdGFibGVzIGFyZSBz eXN0ZW0tbWFuYWdlZCB0YWJsZXMgZm9yIGxvZ2ljYWwgcmVwbGljYXRpb24gY29uZmxpY3RzLiIp KSk7CisKIAkvKiBObyBzeXN0ZW0gdGFibGUgbW9kaWZpY2F0aW9ucyB1bmxlc3MgZXhwbGljaXRs eSBhbGxvd2VkLiAqLwogCWlmICghYWxsb3dTeXN0ZW1UYWJsZU1vZHMgJiYgSXNTeXN0ZW1DbGFz cyhyZWxpZCwgY2xhc3Nmb3JtKSkKIAkJZXJlcG9ydChFUlJPUiwKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIu YwppbmRleCBiODdiNGI0MGQwNy4uMDBkM2M5MGI1OTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3RyaWdnZXIuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90cmlnZ2VyLmMK QEAgLTMxNCw2ICszMTQsMTggQEAgQ3JlYXRlVHJpZ2dlckZpcmluZ09uKGNvbnN0IENyZWF0ZVRy aWdTdG10ICpzdG10LCBjb25zdCBjaGFyICpxdWVyeVN0cmluZywKIAkJCQkJCVJlbGF0aW9uR2V0 UmVsYXRpb25OYW1lKHJlbCkpLAogCQkJCSBlcnJkZXRhaWxfcmVsa2luZF9ub3Rfc3VwcG9ydGVk KHJlbC0+cmRfcmVsLT5yZWxraW5kKSkpOwogCisJLyoKKwkgKiBDb25mbGljdCBsb2cgdGFibGVz IGFyZSB1c2VkIGludGVybmFsbHkgZm9yIGxvZ2ljYWwgcmVwbGljYXRpb24gY29uZmxpY3QKKwkg KiBsb2dnaW5nIGFuZCBzaG91bGQgbm90IGhhdmUgdHJpZ2dlcnMsIGFzIGl0IGNvdWxkIGRpc3J1 cHQgY29uZmxpY3QKKwkgKiBsb2dnaW5nLgorCSAqLworCWlmIChJc0NvbmZsaWN0TG9nVGFibGVD bGFzcyhyZWwtPnJkX3JlbCkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09E RV9XUk9OR19PQkpFQ1RfVFlQRSksCisJCQkJIGVycm1zZygiY2Fubm90IGNyZWF0ZSB0cmlnZ2Vy IG9uIGNvbmZsaWN0IGxvZyB0YWJsZSBcIiVzXCIiLAorCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlv bk5hbWUocmVsKSksCisJCQkJIGVycmRldGFpbCgiQ29uZmxpY3QgbG9nIHRhYmxlcyBhcmUgc3lz dGVtLW1hbmFnZWQgdGFibGVzIGZvciBsb2dpY2FsIHJlcGxpY2F0aW9uIGNvbmZsaWN0cy4iKSkp OworCiAJaWYgKCFhbGxvd1N5c3RlbVRhYmxlTW9kcyAmJiBJc1N5c3RlbVJlbGF0aW9uKHJlbCkp CiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlNVRkZJQ0lFTlRfUFJJ VklMRUdFKSwKQEAgLTE0NDMsNiArMTQ1NSwxOSBAQCBSYW5nZVZhckNhbGxiYWNrRm9yUmVuYW1l VHJpZ2dlcihjb25zdCBSYW5nZVZhciAqcnYsIE9pZCByZWxpZCwgT2lkIG9sZHJlbGlkLAogCS8q IHlvdSBtdXN0IG93biB0aGUgdGFibGUgdG8gcmVuYW1lIG9uZSBvZiBpdHMgdHJpZ2dlcnMgKi8K IAlpZiAoIW9iamVjdF9vd25lcmNoZWNrKFJlbGF0aW9uUmVsYXRpb25JZCwgcmVsaWQsIEdldFVz ZXJJZCgpKSkKIAkJYWNsY2hlY2tfZXJyb3IoQUNMQ0hFQ0tfTk9UX09XTkVSLCBnZXRfcmVsa2lu ZF9vYmp0eXBlKGdldF9yZWxfcmVsa2luZChyZWxpZCkpLCBydi0+cmVsbmFtZSk7CisKKwkvKgor CSAqIENvbmZsaWN0IGxvZyB0YWJsZXMgYXJlIHVzZWQgaW50ZXJuYWxseSBmb3IgbG9naWNhbCBy ZXBsaWNhdGlvbiBjb25mbGljdAorCSAqIGxvZ2dpbmcgYW5kIHNob3VsZCBub3QgaGF2ZSB0cmln Z2VycywgYXMgaXQgY291bGQgZGlzcnVwdCBjb25mbGljdAorCSAqIGxvZ2dpbmcuCisJICovCisJ aWYgKElzQ29uZmxpY3RMb2dUYWJsZUNsYXNzKGZvcm0pKQorCQllcmVwb3J0KEVSUk9SLAorCQkJ CShlcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUpLAorCQkJCSBlcnJtc2coImNhbm5v dCByZW5hbWUgdHJpZ2dlciBvbiBjb25mbGljdCBsb2cgdGFibGUgXCIlc1wiIiwKKwkJCQkJCXJ2 LT5yZWxuYW1lKSwKKwkJCQkgZXJyZGV0YWlsKCJDb25mbGljdCBsb2cgdGFibGVzIGFyZSBzeXN0 ZW0tbWFuYWdlZCB0YWJsZXMgZm9yIGxvZ2ljYWwgcmVwbGljYXRpb24gY29uZmxpY3RzLiIpKSk7 CisKIAlpZiAoIWFsbG93U3lzdGVtVGFibGVNb2RzICYmIElzU3lzdGVtQ2xhc3MocmVsaWQsIGZv cm0pKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfSU5TVUZGSUNJRU5U X1BSSVZJTEVHRSksCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5j IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYwppbmRleCBjM2FmOTY5ODliYS4uZmRl NTAyZWZkMzggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKKysr IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYwpAQCAtMTE5Niw2ICsxMTk2LDI0IEBA IENoZWNrVmFsaWRSZXN1bHRSZWwoUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywgQ21kVHlw ZSBvcGVyYXRpb24sCiAJCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVzdWx0UmVsKSkp KTsKIAkJCWJyZWFrOwogCX0KKworCS8qCisJICogQ29uZmxpY3QgbG9nIHRhYmxlcyBhcmUgbWFu YWdlZCBieSB0aGUgc3lzdGVtIHRvIHJlY29yZCBsb2dpY2FsCisJICogcmVwbGljYXRpb24gY29u ZmxpY3RzLiAgV2UgYWxsb3cgREVMRVRFIGFuZCBUUlVOQ0FURSB0byBwZXJtaXQgdXNlcnMgdG8K KwkgKiBtYW51YWxseSBwcnVuZSB0aGVzZSBsb2dzLCBidXQgbWFudWFsIGRhdGEgaW5zZXJ0aW9u IG9yIG1vZGlmaWNhdGlvbgorCSAqIChJTlNFUlQsIFVQREFURSwgTUVSR0UpIGlzIHByb2hpYml0 ZWQgdG8gbWFpbnRhaW4gdGhlIGludGVncml0eSBvZiB0aGUKKwkgKiBzeXN0ZW0tZ2VuZXJhdGVk IGxvZ3MuCisJICoKKwkgKiBTaW5jZSBUUlVOQ0FURSBpcyBoYW5kbGVkIGFzIGEgc2VwYXJhdGUg dXRpbGl0eSBjb21tYW5kLCB3ZSBvbmx5IG5lZWQKKwkgKiB0byBleHBsaWNpdGx5IHBlcm1pdCBD TURfREVMRVRFIGhlcmUuCisJICovCisJaWYgKElzQ29uZmxpY3RMb2dUYWJsZU5hbWVzcGFjZShS ZWxhdGlvbkdldE5hbWVzcGFjZShyZXN1bHRSZWwpKSAmJgorCQlvcGVyYXRpb24gIT0gQ01EX0RF TEVURSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVD VF9UWVBFKSwKKwkJCQkgZXJybXNnKCJjYW5ub3QgbW9kaWZ5IG9yIGluc2VydCBkYXRhIGludG8g Y29uZmxpY3QgbG9nIHRhYmxlIFwiJXNcIiIsCisJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFt ZShyZXN1bHRSZWwpKSwKKwkJCQkgZXJyZGV0YWlsKCJDb25mbGljdCBsb2cgdGFibGVzIGFyZSBz eXN0ZW0tbWFuYWdlZCBhbmQgb25seSBzdXBwb3J0IGNsZWFudXAgdXNpbmcgREVMRVRFIG9yIFRS VU5DQVRFLiIpKSk7CiB9CiAKIC8qCkBAIC0xMjY3LDYgKzEyODUsMTYgQEAgQ2hlY2tWYWxpZFJv d01hcmtSZWwoUmVsYXRpb24gcmVsLCBSb3dNYXJrVHlwZSBtYXJrVHlwZSkKIAkJCQkJCQlSZWxh dGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKSkpOwogCQkJYnJlYWs7CiAJfQorCisJLyoKKwkgKiBD b25mbGljdCBsb2cgdGFibGVzIGFyZSBtYW5hZ2VkIGJ5IHRoZSBzeXN0ZW0gdG8gcmVjb3JkIGxv Z2ljYWwKKwkgKiByZXBsaWNhdGlvbiBjb25mbGljdHMuCisJICovCisJaWYgKElzQ29uZmxpY3RM b2dUYWJsZU5hbWVzcGFjZShSZWxhdGlvbkdldE5hbWVzcGFjZShyZWwpKSkKKwkJZXJlcG9ydChF UlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVDVF9UWVBFKSwKKwkJCQkgZXJy bXNnKCJjYW5ub3QgbG9jayByb3dzIGluIHRoZSBjb25mbGljdCBsb2cgdGFibGUgXCIlc1wiIiwK KwkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCkpKSk7CiB9CiAKIC8qCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2NvbmZsaWN0LmMgYi9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2NvbmZsaWN0LmMKaW5kZXggMWY4ZDY3ZmRkOTAuLjVi MTdlZDQxZjRiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2Nv bmZsaWN0LmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9jb25mbGljdC5j CkBAIC0xNyw2ICsxNywxMCBAQAogI2luY2x1ZGUgImFjY2Vzcy9jb21taXRfdHMuaCIKICNpbmNs dWRlICJhY2Nlc3MvZ2VuYW0uaCIKICNpbmNsdWRlICJhY2Nlc3MvdGFibGVhbS5oIgorI2luY2x1 ZGUgImNhdGFsb2cvaGVhcC5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfYW0uaCIKKyNpbmNsdWRl ICJjYXRhbG9nL3BnX25hbWVzcGFjZS5oIgorI2luY2x1ZGUgImNhdGFsb2cvdG9hc3RpbmcuaCIK ICNpbmNsdWRlICJleGVjdXRvci9leGVjdXRvci5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgogI2lu Y2x1ZGUgInJlcGxpY2F0aW9uL2NvbmZsaWN0LmgiCkBAIC0yNCw2ICsyOCw1OSBAQAogI2luY2x1 ZGUgInN0b3JhZ2UvbG1nci5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogCisvKgor ICogU3RyaW5nIHJlcHJlc2VudGF0aW9ucyBmb3IgdGhlIHN1cHBvcnRlZCBjb25mbGljdCBsb2dn aW5nIGRlc3RpbmF0aW9ucy4KKyAqLworY29uc3QgY2hhciAqY29uc3QgQ29uZmxpY3RMb2dEZXN0 TmFtZXNbXSA9IHsKKwlbQ09ORkxJQ1RfTE9HX0RFU1RfTE9HXSA9ICJsb2ciLAorCVtDT05GTElD VF9MT0dfREVTVF9UQUJMRV0gPSAidGFibGUiLAorCVtDT05GTElDVF9MT0dfREVTVF9BTExdID0g ImFsbCIKK307CisKK1N0YXRpY0Fzc2VydERlY2wobGVuZ3Rob2YoQ29uZmxpY3RMb2dEZXN0TmFt ZXMpID09IENPTkZMSUNUX0xPR19ERVNUX0FMTCArIDEsCisJCQkJICJDb25mbGljdExvZ0Rlc3RO YW1lcyBsZW5ndGggbWlzbWF0Y2giKTsKKworCisvKiBTdHJ1Y3R1cmUgdG8gaG9sZCBtZXRhZGF0 YSBmb3Igb25lIGNvbHVtbiBvZiB0aGUgY29uZmxpY3QgbG9nIHRhYmxlICovCit0eXBlZGVmIHN0 cnVjdCBDb25mbGljdExvZ0NvbHVtbkRlZgoreworCWNvbnN0IGNoYXIgKmF0dG5hbWU7ICAgIC8q IENvbHVtbiBuYW1lICovCisJT2lkICAgICAgICAgYXR0dHlwaWQ7ICAgLyogRGF0YSB0eXBlIE9J RCAqLworfSBDb25mbGljdExvZ0NvbHVtbkRlZjsKKworLyoKKyAqIFNjaGVtYSBkZWZpbml0aW9u IGZvciBjb25mbGljdCBsb2cgdGFibGVzLgorICoKKyAqIERlZmluZXMgdGhlIGZpeGVkIHNjaGVt YSBvZiB0aGUgcGVyLXN1YnNjcmlwdGlvbiBjb25mbGljdCBsb2cgdGFibGUgY3JlYXRlZAorICog aW4gdGhlIHBnX2NvbmZsaWN0IG5hbWVzcGFjZS4gRWFjaCBlbnRyeSBzcGVjaWZpZXMgdGhlIGNv bHVtbiBuYW1lIGFuZCBpdHMKKyAqIHR5cGUgT0lEOyB0aGUgdGFibGUgaXMgY3JlYXRlZCBpbiB0 aGlzIGNvbHVtbiBvcmRlciBieQorICogY3JlYXRlX2NvbmZsaWN0X2xvZ190YWJsZSgpLgorICoK KyAqIFRoZSB0dXBsZS9rZXkgY29sdW1ucyAocmVwbGljYV9pZGVudGl0eSwgcmVtb3RlX3R1cGxl LCBsb2NhbF9jb25mbGljdHMpIGFyZQorICogdHlwZWQganNvbiByYXRoZXIgdGhhbiBqc29uYiBv biBwdXJwb3NlOiB0aGV5IGhvbGQgYW4gZXhhY3QgYXVkaXQgc25hcHNob3QKKyAqIG9mIHRoZSBh cHBsaWVkIHR1cGxlcyBhbmQgcmVwbGljYSBpZGVudGl0eSwgYW5kIGpzb24gcHJlc2VydmVzIHRo ZSB2ZXJiYXRpbQorICogcmVwcmVzZW50YXRpb24gd2hlcmVhcyBqc29uYiB3b3VsZCBub3JtYWxp emUgaXQuIEluZGV4aW5nIHRoZW0gKGpzb25iJ3MgbWFpbgorICogYWR2YW50YWdlKSB3b3VsZG4n dCBoZWxwIGFueXdheSwgYXMgdGhlIGNvbmZsaWN0IGxvZyBpcyBsb29rZWQgdXAgYnkgaXRzCisg KiBzY2FsYXIgY29sdW1ucyAocmVsaWQsIGNvbmZsaWN0X3R5cGUsIGNvbW1pdCB0aW1lc3RhbXAp IHdoaWxlIHRoZXNlIGpzb24KKyAqIGNvbHVtbnMgYXJlIHBlci1jb25mbGljdCBwYXlsb2FkIHRv IGluc3BlY3QsIG5vdCBzZWFyY2gga2V5cy4KKyAqLworc3RhdGljIGNvbnN0IENvbmZsaWN0TG9n Q29sdW1uRGVmIENvbmZsaWN0TG9nU2NoZW1hW10gPSB7CisJeyAuYXR0bmFtZSA9ICJyZWxpZCIs ICAgICAgICAgICAgLmF0dHR5cGlkID0gT0lET0lEIH0sCisJeyAuYXR0bmFtZSA9ICJzY2hlbWFu YW1lIiwgICAgICAgLmF0dHR5cGlkID0gVEVYVE9JRCB9LAorCXsgLmF0dG5hbWUgPSAicmVsbmFt ZSIsICAgICAgICAgIC5hdHR0eXBpZCA9IFRFWFRPSUQgfSwKKwl7IC5hdHRuYW1lID0gImNvbmZs aWN0X3R5cGUiLCAgICAuYXR0dHlwaWQgPSBURVhUT0lEIH0sCisJeyAuYXR0bmFtZSA9ICJyZW1v dGVfeGlkIiwgICAgICAgLmF0dHR5cGlkID0gWElET0lEIH0sCisJeyAuYXR0bmFtZSA9ICJyZW1v dGVfY29tbWl0X2xzbiIsLmF0dHR5cGlkID0gTFNOT0lEIH0sCisJeyAuYXR0bmFtZSA9ICJyZW1v dGVfY29tbWl0X3RzIiwgLmF0dHR5cGlkID0gVElNRVNUQU1QVFpPSUQgfSwKKwl7IC5hdHRuYW1l ID0gInJlbW90ZV9vcmlnaW4iLCAgICAuYXR0dHlwaWQgPSBURVhUT0lEIH0sCisJeyAuYXR0bmFt ZSA9ICJyZXBsaWNhX2lkZW50aXR5X2Z1bGwiLCAuYXR0dHlwaWQgPSBCT09MT0lEIH0sCisJeyAu YXR0bmFtZSA9ICJyZXBsaWNhX2lkZW50aXR5IiwgICAgICAuYXR0dHlwaWQgPSBKU09OT0lEIH0s CisJeyAuYXR0bmFtZSA9ICJyZW1vdGVfdHVwbGUiLCAgICAgICAgICAuYXR0dHlwaWQgPSBKU09O T0lEIH0sCisJeyAuYXR0bmFtZSA9ICJsb2NhbF9jb25mbGljdHMiLCAgICAgICAuYXR0dHlwaWQg PSBKU09OQVJSQVlPSUQgfQorfTsKKworI2RlZmluZSBOVU1fQ09ORkxJQ1RfQVRUUlMgbGVuZ3Ro b2YoQ29uZmxpY3RMb2dTY2hlbWEpCisKIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBDb25mbGlj dFR5cGVOYW1lc1tdID0gewogCVtDVF9JTlNFUlRfRVhJU1RTXSA9ICJpbnNlcnRfZXhpc3RzIiwK IAlbQ1RfVVBEQVRFX09SSUdJTl9ESUZGRVJTXSA9ICJ1cGRhdGVfb3JpZ2luX2RpZmZlcnMiLApA QCAtNTQsNiArMTExLDEyMSBAQCBzdGF0aWMgdm9pZCBnZXRfdHVwbGVfZGVzYyhFU3RhdGUgKmVz dGF0ZSwgUmVzdWx0UmVsSW5mbyAqcmVsaW5mbywKIHN0YXRpYyBjaGFyICpidWlsZF9pbmRleF92 YWx1ZV9kZXNjKEVTdGF0ZSAqZXN0YXRlLCBSZWxhdGlvbiBsb2NhbHJlbCwKIAkJCQkJCQkJCVR1 cGxlVGFibGVTbG90ICpzbG90LCBPaWQgaW5kZXhvaWQpOwogCisvKgorICogQnVpbGRzIHRoZSBU dXBsZURlc2MgZm9yIHRoZSBjb25mbGljdCBsb2cgdGFibGUuCisgKi8KK3N0YXRpYyBUdXBsZURl c2MKK2NyZWF0ZV9jb25mbGljdF9sb2dfdGFibGVfdHVwZGVzYyh2b2lkKQoreworCVR1cGxlRGVz Ywl0dXBkZXNjOworCisJdHVwZGVzYyA9IENyZWF0ZVRlbXBsYXRlVHVwbGVEZXNjKE5VTV9DT05G TElDVF9BVFRSUyk7CisKKwlmb3IgKGludCBpID0gMDsgaSA8IE5VTV9DT05GTElDVF9BVFRSUzsg aSsrKQorCQlUdXBsZURlc2NJbml0RW50cnkodHVwZGVzYywgaSArIDEsCisJCQkJCQkgICBDb25m bGljdExvZ1NjaGVtYVtpXS5hdHRuYW1lLAorCQkJCQkJICAgQ29uZmxpY3RMb2dTY2hlbWFbaV0u YXR0dHlwaWQsCisJCQkJCQkgICAtMSwgMCk7CisKKwlUdXBsZURlc2NGaW5hbGl6ZSh0dXBkZXNj KTsKKworCXJldHVybiB0dXBkZXNjOworfQorCisvKgorICogQ3JlYXRlIGEgc3RydWN0dXJlZCBj b25mbGljdCBsb2cgdGFibGUgZm9yIGEgc3Vic2NyaXB0aW9uLgorICoKKyAqIFRoZSB0YWJsZSBp cyBjcmVhdGVkIHdpdGhpbiB0aGUgc3lzdGVtLW1hbmFnZWQgJ3BnX2NvbmZsaWN0JyBuYW1lc3Bh Y2UgdG8KKyAqIHByZXZlbnQgdXNlcnMgZnJvbSBtYW51YWxseSBkcm9wcGluZyBvciBhbHRlcmlu ZyBpdC4gIFRoaXMgYWxzbyBwcmV2ZW50cworICogYWNjaWRlbnRhbCBuYW1lIGNvbGxpc2lvbnMg d2l0aCB1c2VyLWNyZWF0ZWQgdGFibGVzIHdpdGggdGhlIHNhbWUgbmFtZS4KKyAqCisgKiBUaGUg dGFibGUgbmFtZSBpcyBnZW5lcmF0ZWQgYXV0b21hdGljYWxseSB1c2luZyB0aGUgc3Vic2NyaXB0 aW9uJ3MgT0lECisgKiAoZS5nLiwgInBnX2NvbmZsaWN0X2xvZ188c3ViaWQ+IikgdG8gZW5zdXJl IHVuaXF1ZW5lc3Mgd2l0aGluIHRoZQorICogY2x1c3RlciBhbmQgdG8gYXZvaWQgY29sbGlzaW9u cyBkdXJpbmcgc3Vic2NyaXB0aW9uIHJlbmFtZXMuCisgKi8KK09pZAorY3JlYXRlX2NvbmZsaWN0 X2xvZ190YWJsZShPaWQgc3ViaWQsIGNoYXIgKnN1Ym5hbWUsIE9pZCBzdWJvd25lcikKK3sKKwlU dXBsZURlc2MJdHVwZGVzYzsKKwlPaWQJCQlyZWxpZDsKKwljaGFyICAgIAlyZWxuYW1lW05BTUVE QVRBTEVOXTsKKworCXNucHJpbnRmKHJlbG5hbWUsIE5BTUVEQVRBTEVOLCAicGdfY29uZmxpY3Rf bG9nXyV1Iiwgc3ViaWQpOworCisJLyogQnVpbGQgdGhlIHR1cGxlIGRlc2NyaXB0b3IgZm9yIHRo ZSBuZXcgdGFibGUuICovCisJdHVwZGVzYyA9IGNyZWF0ZV9jb25mbGljdF9sb2dfdGFibGVfdHVw ZGVzYygpOworCisJLyogQ3JlYXRlIGNvbmZsaWN0IGxvZyB0YWJsZS4gKi8KKwlyZWxpZCA9IGhl YXBfY3JlYXRlX3dpdGhfY2F0YWxvZyhyZWxuYW1lLAorCQkJCQkJCQkJIFBHX0NPTkZMSUNUX05B TUVTUEFDRSwKKwkJCQkJCQkJCSAwLAkvKiB0YWJsZXNwYWNlICovCisJCQkJCQkJCQkgSW52YWxp ZE9pZCwgLyogcmVsaWQgKi8KKwkJCQkJCQkJCSBJbnZhbGlkT2lkLCAvKiByZWx0eXBlaWQgKi8K KwkJCQkJCQkJCSBJbnZhbGlkT2lkLCAvKiByZWxvZnR5cGVpZCAqLworCQkJCQkJCQkJIHN1Ym93 bmVyLAorCQkJCQkJCQkJIEhFQVBfVEFCTEVfQU1fT0lELAorCQkJCQkJCQkJIHR1cGRlc2MsCisJ CQkJCQkJCQkgTklMLAorCQkJCQkJCQkJIFJFTEtJTkRfUkVMQVRJT04sCisJCQkJCQkJCQkgUkVM UEVSU0lTVEVOQ0VfUEVSTUFORU5ULAorCQkJCQkJCQkJIGZhbHNlLCAvKiBzaGFyZWRfcmVsYXRp b24gKi8KKwkJCQkJCQkJCSBmYWxzZSwgLyogbWFwcGVkX3JlbGF0aW9uICovCisJCQkJCQkJCQkg T05DT01NSVRfTk9PUCwKKwkJCQkJCQkJCSAoRGF0dW0pIDAsIC8qIHJlbG9wdGlvbnMgKi8KKwkJ CQkJCQkJCSBmYWxzZSwgLyogdXNlX3VzZXJfYWNsICovCisJCQkJCQkJCQkgdHJ1ZSwgLyogYWxs b3dfc3lzdGVtX3RhYmxlX21vZHMgKi8KKwkJCQkJCQkJCSB0cnVlLCAvKiBpc19pbnRlcm5hbCAq LworCQkJCQkJCQkJIEludmFsaWRPaWQsIC8qIHJlbHJld3JpdGUgKi8KKwkJCQkJCQkJCSBOVUxM KTsgLyogdHlwYWRkcmVzcyAqLworCUFzc2VydChPaWRJc1ZhbGlkKHJlbGlkKSk7CisKKwkvKiBS ZWxlYXNlIHR1cGxlIGRlc2NyaXB0b3IgbWVtb3J5LiAqLworCUZyZWVUdXBsZURlc2ModHVwZGVz Yyk7CisKKwkvKgorCSAqIFdlIG11c3QgYnVtcCB0aGUgY29tbWFuZCBjb3VudGVyIHRvIG1ha2Ug dGhlIG5ld2x5LWNyZWF0ZWQgcmVsYXRpb24KKwkgKiB0dXBsZSB2aXNpYmxlIGZvciBvcGVuaW5n LgorCSAqLworCUNvbW1hbmRDb3VudGVySW5jcmVtZW50KCk7CisKKwkvKgorCSAqIENyZWF0ZSBh IFRPQVNUIHRhYmxlIGZvciB0aGUgY29uZmxpY3QgbG9nIHRvIHN1cHBvcnQgb3V0LW9mLWxpbmUg c3RvcmFnZQorCSAqIG9mIGxhcmdlIGpzb24gZGF0YS4KKwkgKi8KKwlOZXdSZWxhdGlvbkNyZWF0 ZVRvYXN0VGFibGUocmVsaWQsIChEYXR1bSkgMCk7CisKKwllcmVwb3J0KE5PVElDRSwKKwkJCShl cnJtc2coImNyZWF0ZWQgY29uZmxpY3QgbG9nIHRhYmxlIFwiJXNcIiBmb3Igc3Vic2NyaXB0aW9u IFwiJXNcIiIsCisJCQkJCWdldF9xdWFsaWZpZWRfb2JqbmFtZShQR19DT05GTElDVF9OQU1FU1BB Q0UsIHJlbG5hbWUpLAorCQkJCQlzdWJuYW1lKSkpOworCisJcmV0dXJuIHJlbGlkOworfQorCisv KgorICogQ29udmVydCB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgY29uZmxpY3QgbG9n Z2luZyBkZXN0aW5hdGlvbiB0byBpdHMKKyAqIGNvcnJlc3BvbmRpbmcgZW51bSB2YWx1ZS4KKyAq LworQ29uZmxpY3RMb2dEZXN0CitHZXRDb25mbGljdExvZ0Rlc3QoY29uc3QgY2hhciAqZGVzdCkK K3sKKwkvKiBOVUxMIGRlZmF1bHRzIHRvIExPRy4gKi8KKwlpZiAoZGVzdCA9PSBOVUxMIHx8IHBn X3N0cmNhc2VjbXAoZGVzdCwgImxvZyIpID09IDApCisJCXJldHVybiBDT05GTElDVF9MT0dfREVT VF9MT0c7CisKKwlpZiAocGdfc3RyY2FzZWNtcChkZXN0LCAidGFibGUiKSA9PSAwKQorCQlyZXR1 cm4gQ09ORkxJQ1RfTE9HX0RFU1RfVEFCTEU7CisKKwlpZiAocGdfc3RyY2FzZWNtcChkZXN0LCAi YWxsIikgPT0gMCkKKwkJcmV0dXJuIENPTkZMSUNUX0xPR19ERVNUX0FMTDsKKworCS8qIFVucmVj b2duaXplZCBzdHJpbmcuICovCisJZXJlcG9ydChFUlJPUiwKKwkJCShlcnJjb2RlKEVSUkNPREVf SU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJIGVycm1zZygidW5yZWNvZ25pemVkIGNvbmZs aWN0X2xvZ19kZXN0aW5hdGlvbiB2YWx1ZTogXCIlc1wiIiwgZGVzdCksCisJCQkgZXJyaGludCgi VmFsaWQgdmFsdWVzIGFyZSBcImxvZ1wiLCBcInRhYmxlXCIsIGFuZCBcImFsbFwiLiIpKSk7Cit9 CisKIC8qCiAgKiBHZXQgdGhlIHhtaW4gYW5kIGNvbW1pdCB0aW1lc3RhbXAgZGF0YSAob3JpZ2lu IGFuZCB0aW1lc3RhbXApIGFzc29jaWF0ZWQKICAqIHdpdGggdGhlIHByb3ZpZGVkIGxvY2FsIHJv dy4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Jld3JpdGUvcmV3cml0ZURlZmluZS5jIGIvc3Jj L2JhY2tlbmQvcmV3cml0ZS9yZXdyaXRlRGVmaW5lLmMKaW5kZXggNmEyMjNmYmVhYTQuLjk2OGVk OGNjZmNlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVEZWZpbmUuYwor KysgYi9zcmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVEZWZpbmUuYwpAQCAtMjYyLDYgKzI2Miwx NyBAQCBEZWZpbmVRdWVyeVJld3JpdGUoY29uc3QgY2hhciAqcnVsZW5hbWUsCiAJCQkJCQlSZWxh dGlvbkdldFJlbGF0aW9uTmFtZShldmVudF9yZWxhdGlvbikpLAogCQkJCSBlcnJkZXRhaWxfcmVs a2luZF9ub3Rfc3VwcG9ydGVkKGV2ZW50X3JlbGF0aW9uLT5yZF9yZWwtPnJlbGtpbmQpKSk7CiAK KwkvKgorCSAqIENvbmZsaWN0IGxvZyB0YWJsZXMgYXJlIHVzZWQgaW50ZXJuYWxseSBmb3IgbG9n aWNhbCByZXBsaWNhdGlvbiBjb25mbGljdAorCSAqIGxvZ2dpbmcgYW5kIHNob3VsZCBub3QgaGF2 ZSBydWxlcywgYXMgaXQgY291bGQgZGlzcnVwdCBjb25mbGljdCBsb2dnaW5nLgorCSAqLworCWlm IChJc0NvbmZsaWN0TG9nVGFibGVDbGFzcyhldmVudF9yZWxhdGlvbi0+cmRfcmVsKSkKKwkJZXJl cG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVDVF9UWVBFKSwKKwkJ CQkgZXJybXNnKCJjb25mbGljdCBsb2cgdGFibGUgXCIlc1wiIGNhbm5vdCBoYXZlIHJ1bGVzIiwK KwkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKGV2ZW50X3JlbGF0aW9uKSksCisJCQkJIGVy cmRldGFpbCgiQ29uZmxpY3QgbG9nIHRhYmxlcyBhcmUgc3lzdGVtLW1hbmFnZWQgdGFibGVzIGZv ciBsb2dpY2FsIHJlcGxpY2F0aW9uIGNvbmZsaWN0cy4iKSkpOworCiAJaWYgKCFhbGxvd1N5c3Rl bVRhYmxlTW9kcyAmJiBJc1N5c3RlbVJlbGF0aW9uKGV2ZW50X3JlbGF0aW9uKSkKIAkJZXJlcG9y dChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX0lOU1VGRklDSUVOVF9QUklWSUxFR0UpLApA QCAtNzcyLDYgKzc4MywxNyBAQCBSYW5nZVZhckNhbGxiYWNrRm9yUmVuYW1lUnVsZShjb25zdCBS YW5nZVZhciAqcnYsIE9pZCByZWxpZCwgT2lkIG9sZHJlbGlkLAogCQkJCSBlcnJtc2coInJlbGF0 aW9uIFwiJXNcIiBjYW5ub3QgaGF2ZSBydWxlcyIsIHJ2LT5yZWxuYW1lKSwKIAkJCQkgZXJyZGV0 YWlsX3JlbGtpbmRfbm90X3N1cHBvcnRlZChmb3JtLT5yZWxraW5kKSkpOwogCisJLyoKKwkgKiBD b25mbGljdCBsb2cgdGFibGVzIGFyZSB1c2VkIGludGVybmFsbHkgZm9yIGxvZ2ljYWwgcmVwbGlj YXRpb24gY29uZmxpY3QKKwkgKiBsb2dnaW5nIGFuZCBzaG91bGQgbm90IGhhdmUgcnVsZXMsIGFz IGl0IGNvdWxkIGRpc3J1cHQgY29uZmxpY3QgbG9nZ2luZy4KKwkgKi8KKwlpZiAoSXNDb25mbGlj dExvZ1RhYmxlQ2xhc3MoZm9ybSkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJS Q09ERV9XUk9OR19PQkpFQ1RfVFlQRSksCisJCQkJIGVycm1zZygiY29uZmxpY3QgbG9nIHRhYmxl IFwiJXNcIiBjYW5ub3QgaGF2ZSBydWxlcyIsCisJCQkJCQlydi0+cmVsbmFtZSksCisJCQkJIGVy cmRldGFpbCgiQ29uZmxpY3QgbG9nIHRhYmxlcyBhcmUgc3lzdGVtLW1hbmFnZWQgdGFibGVzIGZv ciBsb2dpY2FsIHJlcGxpY2F0aW9uIGNvbmZsaWN0cy4iKSkpOworCiAJaWYgKCFhbGxvd1N5c3Rl bVRhYmxlTW9kcyAmJiBJc1N5c3RlbUNsYXNzKHJlbGlkLCBmb3JtKSkKIAkJZXJlcG9ydChFUlJP UiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX0lOU1VGRklDSUVOVF9QUklWSUxFR0UpLApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMgYi9zcmMvYmFja2VuZC91 dGlscy9jYWNoZS9sc3lzY2FjaGUuYwppbmRleCAwMzZkZTVmNzllZi4uZTUyZDRjY2QwODkgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jCisrKyBiL3NyYy9i YWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jCkBAIC0zNzA5LDcgKzM3MDksNyBAQCBnZXRf bmFtZXNwYWNlX25hbWVfb3JfdGVtcChPaWQgbnNwaWQpCiAgKgkJb2JqZWN0IGZvciB0aGUgZ2l2 ZW4gbmFtZXNwYWNlIElEIGFuZCBvYmplY3QgbmFtZS4KICAqLwogY2hhciAqCi1nZXRfcXVhbGlm aWVkX29iam5hbWUoT2lkIG5zcGlkLCBjaGFyICpvYmpuYW1lKQorZ2V0X3F1YWxpZmllZF9vYmpu YW1lKE9pZCBuc3BpZCwgY29uc3QgY2hhciAqb2JqbmFtZSkKIHsKIAljaGFyCSAgICpuc3BuYW1l OwogCWNoYXIJICAgKnJlc3VsdDsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vaW5pdGRiL2luaXRkYi5j IGIvc3JjL2Jpbi9pbml0ZGIvaW5pdGRiLmMKaW5kZXggOGZiYTg5NjU2MWIuLjkzZTljZDRhYzQz IDEwMDY0NAotLS0gYS9zcmMvYmluL2luaXRkYi9pbml0ZGIuYworKysgYi9zcmMvYmluL2luaXRk Yi9pbml0ZGIuYwpAQCAtMTgzOSw2ICsxODM5LDEyIEBAIHNldHVwX3ByaXZpbGVnZXMoRklMRSAq Y21kZmQpCiAJCQkJICAiICBBTkQgcmVsYWNsIElTIE5VTEw7XG5cbiIsCiAJCQkJICBlc2NhcGVf cXVvdGVzKHVzZXJuYW1lKSk7CiAJUEdfQ01EX1BVVFMoIkdSQU5UIFVTQUdFIE9OIFNDSEVNQSBw Z19jYXRhbG9nLCBwdWJsaWMgVE8gUFVCTElDO1xuXG4iKTsKKworCS8qCisJICogQWxsb3cgbm9u LXN1cGVydXNlciBzdWJzY3JpcHRpb24gb3duZXJzIHRvIGFjY2VzcyB0aGVpciBhc3NvY2lhdGVk CisJICogY29uZmxpY3QgbG9nIHRhYmxlcyBpbiB0aGUgcGdfY29uZmxpY3Qgc2NoZW1hLgorCSAq LworCVBHX0NNRF9QVVRTKCJHUkFOVCBVU0FHRSBPTiBTQ0hFTUEgcGdfY29uZmxpY3QgVE8gUFVC TElDO1xuXG4iKTsKIAlQR19DTURfUFVUUygiUkVWT0tFIEFMTCBPTiBwZ19sYXJnZW9iamVjdCBG Uk9NIFBVQkxJQztcblxuIik7CiAJUEdfQ01EX1BVVFMoIklOU0VSVCBJTlRPIHBnX2luaXRfcHJp dnMgIgogCQkJCSIgIChvYmpvaWQsIGNsYXNzb2lkLCBvYmpzdWJpZCwgaW5pdHByaXZzLCBwcml2 dHlwZSkiCmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMgYi9zcmMv YmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKaW5kZXggNDZiOWFkZDA2MDQuLmYzMzE0NjRmMmMx IDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKKysrIGIvc3JjL2Jp bi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCkBAIC0yMzc2LDggKzIzNzYsOCBAQCBtYXRjaF9wcmV2 aW91c193b3JkcyhpbnQgcGF0dGVybl9pZCwKIAkJQ09NUExFVEVfV0lUSCgiKCIsICJQVUJMSUNB VElPTiIpOwogCS8qIEFMVEVSIFNVQlNDUklQVElPTiA8bmFtZT4gU0VUICggKi8KIAllbHNlIGlm IChNYXRjaGVzKCJBTFRFUiIsICJTVUJTQ1JJUFRJT04iLCBNYXRjaEFueSwgTWF0Y2hBbnlOLCAi U0VUIiwgIigiKSkKLQkJQ09NUExFVEVfV0lUSCgiYmluYXJ5IiwgImRpc2FibGVfb25fZXJyb3Ii LCAiZmFpbG92ZXIiLAotCQkJCQkgICJtYXhfcmV0ZW50aW9uX2R1cmF0aW9uIiwgIm9yaWdpbiIs CisJCUNPTVBMRVRFX1dJVEgoImJpbmFyeSIsICJjb25mbGljdF9sb2dfZGVzdGluYXRpb24iLCAi ZGlzYWJsZV9vbl9lcnJvciIsCisJCQkJCSAgImZhaWxvdmVyIiwgIm1heF9yZXRlbnRpb25fZHVy YXRpb24iLCAib3JpZ2luIiwKIAkJCQkJICAicGFzc3dvcmRfcmVxdWlyZWQiLCAicmV0YWluX2Rl YWRfdHVwbGVzIiwKIAkJCQkJICAicnVuX2FzX293bmVyIiwgInNsb3RfbmFtZSIsICJzdHJlYW1p bmciLAogCQkJCQkgICJzeW5jaHJvbm91c19jb21taXQiLCAidHdvX3BoYXNlIiwKQEAgLTM5NjEs OCArMzk2MSw4IEBAIG1hdGNoX3ByZXZpb3VzX3dvcmRzKGludCBwYXR0ZXJuX2lkLAogCQlDT01Q TEVURV9XSVRIKCJXSVRIICgiKTsKIAkvKiBDb21wbGV0ZSAiQ1JFQVRFIFNVQlNDUklQVElPTiA8 bmFtZT4gLi4uICBXSVRIICggPG9wdD4iICovCiAJZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwg IlNVQlNDUklQVElPTiIsIE1hdGNoQW55TiwgIldJVEgiLCAiKCIpKQotCQlDT01QTEVURV9XSVRI KCJiaW5hcnkiLCAiY29ubmVjdCIsICJjb3B5X2RhdGEiLCAiY3JlYXRlX3Nsb3QiLAotCQkJCQkg ICJkaXNhYmxlX29uX2Vycm9yIiwgImVuYWJsZWQiLCAiZmFpbG92ZXIiLAorCQlDT01QTEVURV9X SVRIKCJiaW5hcnkiLCAiY29uZmxpY3RfbG9nX2Rlc3RpbmF0aW9uIiwgImNvbm5lY3QiLCAiY29w eV9kYXRhIiwKKwkJCQkJICAiY3JlYXRlX3Nsb3QiLCAiZGlzYWJsZV9vbl9lcnJvciIsICJlbmFi bGVkIiwgImZhaWxvdmVyIiwKIAkJCQkJICAibWF4X3JldGVudGlvbl9kdXJhdGlvbiIsICJvcmln aW4iLAogCQkJCQkgICJwYXNzd29yZF9yZXF1aXJlZCIsICJyZXRhaW5fZGVhZF90dXBsZXMiLAog CQkJCQkgICJydW5fYXNfb3duZXIiLCAic2xvdF9uYW1lIiwgInN0cmVhbWluZyIsCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL2NhdGFsb2cuaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cv Y2F0YWxvZy5oCmluZGV4IGE5ZDZlOGVhOTg2Li5mZWFiMzk4MmNmNSAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvY2F0YWxvZy9jYXRhbG9nLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9jYXRh bG9nLmgKQEAgLTI1LDYgKzI1LDcgQEAgZXh0ZXJuIGJvb2wgSXNJbnBsYWNlVXBkYXRlUmVsYXRp b24oUmVsYXRpb24gcmVsYXRpb24pOwogCiBleHRlcm4gYm9vbCBJc1N5c3RlbUNsYXNzKE9pZCBy ZWxpZCwgRm9ybV9wZ19jbGFzcyByZWx0dXBsZSk7CiBleHRlcm4gYm9vbCBJc1RvYXN0Q2xhc3Mo Rm9ybV9wZ19jbGFzcyByZWx0dXBsZSk7CitleHRlcm4gYm9vbCBJc0NvbmZsaWN0TG9nVGFibGVD bGFzcyhGb3JtX3BnX2NsYXNzIHJlbHR1cGxlKTsKIAogZXh0ZXJuIGJvb2wgSXNDYXRhbG9nUmVs YXRpb25PaWQoT2lkIHJlbGlkKTsKIGV4dGVybiBib29sIElzQ2F0YWxvZ1RleHRVbmlxdWVJbmRl eE9pZChPaWQgcmVsaWQpOwpAQCAtMzIsNiArMzMsNyBAQCBleHRlcm4gYm9vbCBJc0lucGxhY2VV cGRhdGVPaWQoT2lkIHJlbGlkKTsKIAogZXh0ZXJuIGJvb2wgSXNDYXRhbG9nTmFtZXNwYWNlKE9p ZCBuYW1lc3BhY2VJZCk7CiBleHRlcm4gYm9vbCBJc1RvYXN0TmFtZXNwYWNlKE9pZCBuYW1lc3Bh Y2VJZCk7CitleHRlcm4gYm9vbCBJc0NvbmZsaWN0TG9nVGFibGVOYW1lc3BhY2UoT2lkIG5hbWVz cGFjZUlkKTsKIAogZXh0ZXJuIGJvb2wgSXNSZXNlcnZlZE5hbWUoY29uc3QgY2hhciAqbmFtZSk7 CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfbmFtZXNwYWNlLmRhdCBiL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfbmFtZXNwYWNlLmRhdAppbmRleCAzMDc1ZTE0MmM3My4uZGU4 MzE2ZTQwZGYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfbmFtZXNwYWNlLmRh dAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX25hbWVzcGFjZS5kYXQKQEAgLTE4LDYgKzE4 LDkgQEAKIHsgb2lkID0+ICc5OScsIG9pZF9zeW1ib2wgPT4gJ1BHX1RPQVNUX05BTUVTUEFDRScs CiAgIGRlc2NyID0+ICdyZXNlcnZlZCBzY2hlbWEgZm9yIFRPQVNUIHRhYmxlcycsCiAgIG5zcG5h bWUgPT4gJ3BnX3RvYXN0JywgbnNwYWNsID0+ICdfbnVsbF8nIH0sCit7IG9pZCA9PiAnODk4OCcs IG9pZF9zeW1ib2wgPT4gJ1BHX0NPTkZMSUNUX05BTUVTUEFDRScsCisgIGRlc2NyID0+ICdyZXNl cnZlZCBzY2hlbWEgZm9yIHN1YnNjcmlwdGlvbi1zcGVjaWZpYyBjb25mbGljdCBsb2cgdGFibGVz JywKKyAgbnNwbmFtZSA9PiAncGdfY29uZmxpY3QnLCBuc3BhY2wgPT4gJ19udWxsXycgfSwKICMg dXBkYXRlIGR1bXBOYW1lc3BhY2UoKSBpZiBjaGFuZ2luZyB0aGlzIGRlc2NyCiB7IG9pZCA9PiAn MjIwMCcsIG9pZF9zeW1ib2wgPT4gJ1BHX1BVQkxJQ19OQU1FU1BBQ0UnLAogICBkZXNjciA9PiAn c3RhbmRhcmQgcHVibGljIHNjaGVtYScsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9n L3BnX3N1YnNjcmlwdGlvbi5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24u aAppbmRleCA0ODk0NDIwMTg4OS4uNDMzOGU2NjIwYjQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19z dWJzY3JpcHRpb24uaApAQCAtOTUsNyArOTUsMTYgQEAgQ0FUQUxPRyhwZ19zdWJzY3JpcHRpb24s NjEwMCxTdWJzY3JpcHRpb25SZWxhdGlvbklkKSBCS0lfU0hBUkVEX1JFTEFUSU9OIEJLSV9ST1cK IAlPaWQJCQlzdWJzZXJ2ZXIgQktJX0xPT0tVUF9PUFQocGdfZm9yZWlnbl9zZXJ2ZXIpOwkvKiBJ ZiBjb25uZWN0aW9uIHVzZXMKIAkJCQkJCQkJCQkJCQkJCQkgKiBzZXJ2ZXIgKi8KIAorCU9pZAkJ CXN1YmNvbmZsaWN0bG9ncmVsaWQ7IC8qIFJlbGlkIG9mIHRoZSBjb25mbGljdCBsb2cgdGFibGUu ICovCiAjaWZkZWYgQ0FUQUxPR19WQVJMRU4JCQkvKiB2YXJpYWJsZS1sZW5ndGggZmllbGRzIHN0 YXJ0IGhlcmUgKi8KKwkvKgorCSAqIFN0cmF0ZWd5IGZvciBsb2dnaW5nIHJlcGxpY2F0aW9uIGNv bmZsaWN0czoKKwkgKiAnbG9nJyAtIHNlcnZlciBsb2cgb25seSwKKwkgKiAndGFibGUnIC0gY29u ZmxpY3QgbG9nIHRhYmxlIG9ubHksCisJICogJ2FsbCcgLSBib3RoIGxvZyBhbmQgdGFibGUuCisJ ICovCisJdGV4dAkJc3ViY29uZmxpY3Rsb2dkZXN0IEJLSV9GT1JDRV9OT1RfTlVMTDsKKwogCS8q IENvbm5lY3Rpb24gc3RyaW5nIHRvIHRoZSBwdWJsaXNoZXIgKi8KIAl0ZXh0CQlzdWJjb25uaW5m bzsJLyogU2V0IGlmIGNvbm5lY3Rpbmcgd2l0aCBjb25uZWN0aW9uIHN0cmluZyAqLwogCkBAIC0x NjQsNiArMTczLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgU3Vic2NyaXB0aW9uCiAJCQkJCQkJCQkgKiBh bmQgdGhlIHJldGVudGlvbiBkdXJhdGlvbiBoYXMgbm90CiAJCQkJCQkJCQkgKiBleGNlZWRlZCBt YXhfcmV0ZW50aW9uX2R1cmF0aW9uLCB3aGVuCiAJCQkJCQkJCQkgKiBkZWZpbmVkICovCisJT2lk CQkJY29uZmxpY3Rsb2dyZWxpZDsJLyogY29uZmxpY3QgbG9nIHRhYmxlIE9pZCAqLwogCWNoYXIJ ICAgKmNvbm5pbmZvOwkJLyogQ29ubmVjdGlvbiBzdHJpbmcgdG8gdGhlIHB1Ymxpc2hlciAqLwog CWNoYXIJICAgKnNsb3RuYW1lOwkJLyogTmFtZSBvZiB0aGUgcmVwbGljYXRpb24gc2xvdCAqLwog CWNoYXIJICAgKnN5bmNjb21taXQ7CQkvKiBTeW5jaHJvbm91cyBjb21taXQgc2V0dGluZyBmb3Ig d29ya2VyICovCkBAIC0xNzEsNiArMTgxLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgU3Vic2NyaXB0aW9u CiAJTGlzdAkgICAqcHVibGljYXRpb25zOwkvKiBMaXN0IG9mIHB1YmxpY2F0aW9uIG5hbWVzIHRv IHN1YnNjcmliZSB0byAqLwogCWNoYXIJICAgKm9yaWdpbjsJCQkvKiBPbmx5IHB1Ymxpc2ggZGF0 YSBvcmlnaW5hdGluZyBmcm9tIHRoZQogCQkJCQkJCQkgKiBzcGVjaWZpZWQgb3JpZ2luICovCisJ Y2hhcgkgICAqY29uZmxpY3Rsb2dkZXN0OwkvKiBDb25mbGljdCBsb2cgZGVzdGluYXRpb24gKi8K IH0gU3Vic2NyaXB0aW9uOwogCiAjaWZkZWYgRVhQT1NFX1RPX0NMSUVOVF9DT0RFCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9jb25mbGljdC5oIGIvc3JjL2luY2x1ZGUvcmVw bGljYXRpb24vY29uZmxpY3QuaAppbmRleCAyZDlkYmNmNGQwZC4uN2NhNDcxMWRjZTYgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2NvbmZsaWN0LmgKKysrIGIvc3JjL2luY2x1 ZGUvcmVwbGljYXRpb24vY29uZmxpY3QuaApAQCAtNzksNiArNzksMzIgQEAgdHlwZWRlZiBzdHJ1 Y3QgQ29uZmxpY3RUdXBsZUluZm8KIAkJCQkJCQkJICogY29uZmxpY3RpbmcgbG9jYWwgcm93IG9j Y3VycmVkICovCiB9IENvbmZsaWN0VHVwbGVJbmZvOwogCisvKgorICogRGVmaW5lcyB3aGVyZSBs b2dpY2FsIHJlcGxpY2F0aW9uIGNvbmZsaWN0IGRldGFpbHMgYXJlIHJlY29yZGVkLgorICoKKyAq IFdoaWxlIHN0b3JlZCBhcyBhIHRleHQtYmFzZWQgYXJyYXkvc3RyaW5nIGluCisgKiBwZ19zdWJz Y3JpcHRpb24uc3ViY29uZmxpY3Rsb2dkZXN0IGZvciB1c2VyIHJlYWRhYmlsaXR5IGFuZCBleHRl bnNpYmlsaXR5LAorICogd2UgbWFwIHRoZXNlIHRvIGFuIGludGVybmFsIGVudW0gdG8gYWxsb3cg Zm9yIGVmZmljaWVudCBjaGVja3MuCisgKi8KK3R5cGVkZWYgZW51bSBDb25mbGljdExvZ0Rlc3QK K3sKKwlDT05GTElDVF9MT0dfREVTVF9MT0cgPSAwLAkvKiBFbWl0IHRvIHNlcnZlciBsb2dzICov CisJQ09ORkxJQ1RfTE9HX0RFU1RfVEFCTEUsCS8qIEluc2VydCBpbnRvIHRoZSBjb25mbGljdCBs b2cgdGFibGUgKi8KKwlDT05GTElDVF9MT0dfREVTVF9BTEwJCS8qIEJvdGggbG9nIGFuZCB0YWJs ZSAqLworfSBDb25mbGljdExvZ0Rlc3Q7CisKKyNkZWZpbmUgQ09ORkxJQ1RTX0xPR0dFRF9UT19U QUJMRShkZXN0KSBcCisJKChkZXN0ID09IENPTkZMSUNUX0xPR19ERVNUX1RBQkxFKSB8fCAoZGVz dCA9PSBDT05GTElDVF9MT0dfREVTVF9BTEwpKQorI2RlZmluZSBDT05GTElDVFNfTE9HR0VEX1RP X0xPRyhkZXN0KSBcCisJKChkZXN0ID09IENPTkZMSUNUX0xPR19ERVNUX0xPRykgfHwgKGRlc3Qg PT0gQ09ORkxJQ1RfTE9HX0RFU1RfQUxMKSkKKworLyoKKyAqIEFycmF5IG1hcHBpbmcgZm9yIGNv bnZlcnRpbmcgaW50ZXJuYWwgZW51bSB0byBzdHJpbmcuCisgKi8KK2V4dGVybiBQR0RMTElNUE9S VCBjb25zdCBjaGFyICpjb25zdCBDb25mbGljdExvZ0Rlc3ROYW1lc1tdOworCitleHRlcm4gT2lk IGNyZWF0ZV9jb25mbGljdF9sb2dfdGFibGUoT2lkIHN1YmlkLCBjaGFyICpzdWJuYW1lLCBPaWQg c3Vib3duZXIpOworZXh0ZXJuIENvbmZsaWN0TG9nRGVzdCBHZXRDb25mbGljdExvZ0Rlc3QoY29u c3QgY2hhciAqZGVzdCk7CiBleHRlcm4gYm9vbCBHZXRUdXBsZVRyYW5zYWN0aW9uSW5mbyhUdXBs ZVRhYmxlU2xvdCAqbG9jYWxzbG90LAogCQkJCQkJCQkJVHJhbnNhY3Rpb25JZCAqeG1pbiwKIAkJ CQkJCQkJCVJlcGxPcmlnaW5JZCAqbG9jYWxvcmlnaW4sCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS91dGlscy9sc3lzY2FjaGUuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5oCmluZGV4 IDg2NTk4MGNiMGYxLi41M2MyYTllODY3MyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMv bHN5c2NhY2hlLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmgKQEAgLTIwMiw3 ICsyMDIsNyBAQCBleHRlcm4gYm9vbCBnZXRfYXR0c3RhdHNzbG90KEF0dFN0YXRzU2xvdCAqc3Ns b3QsIEhlYXBUdXBsZSBzdGF0c3R1cGxlLAogZXh0ZXJuIHZvaWQgZnJlZV9hdHRzdGF0c3Nsb3Qo QXR0U3RhdHNTbG90ICpzc2xvdCk7CiBleHRlcm4gY2hhciAqZ2V0X25hbWVzcGFjZV9uYW1lKE9p ZCBuc3BpZCk7CiBleHRlcm4gY2hhciAqZ2V0X25hbWVzcGFjZV9uYW1lX29yX3RlbXAoT2lkIG5z cGlkKTsKLWV4dGVybiBjaGFyICpnZXRfcXVhbGlmaWVkX29iam5hbWUoT2lkIG5zcGlkLCBjaGFy ICpvYmpuYW1lKTsKK2V4dGVybiBjaGFyICpnZXRfcXVhbGlmaWVkX29iam5hbWUoT2lkIG5zcGlk LCBjb25zdCBjaGFyICpvYmpuYW1lKTsKIGV4dGVybiBPaWQJZ2V0X3JhbmdlX3N1YnR5cGUoT2lk IHJhbmdlT2lkKTsKIGV4dGVybiBPaWQJZ2V0X3JhbmdlX2NvbGxhdGlvbihPaWQgcmFuZ2VPaWQp OwogZXh0ZXJuIE9pZAlnZXRfcmFuZ2VfY29uc3RydWN0b3IyKE9pZCByYW5nZU9pZCk7CmRpZmYg LS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N1YnNjcmlwdGlvbi5vdXQgYi9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N1YnNjcmlwdGlvbi5vdXQKaW5kZXggOGRiZmFjNjYzMjYu LmQyMDFhZDc2NGYwIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N1YnNj cmlwdGlvbi5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdWJzY3JpcHRpb24u b3V0CkBAIC02MTksNiArNjE5LDMwMSBAQCBDT01NSVQ7CiAtLSBvaywgb3duaW5nIGl0IGlzIGVu b3VnaCBmb3IgdGhpcyBzdHVmZgogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBT RVQgKHNsb3RfbmFtZSA9IE5PTkUpOwogRFJPUCBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3Vi OworLS0KKy0tIENPTkZMSUNUIExPRyBERVNUSU5BVElPTiBURVNUUworLS0KK1NFVCBTRVNTSU9O IEFVVEhPUklaQVRJT04gJ3JlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXInOworU0VUIGNsaWVudF9t aW5fbWVzc2FnZXMgPSBXQVJOSU5HOworLS0gZmFpbCAtIHVucmVjb2duaXplZCBwYXJhbWV0ZXIg dmFsdWUKK0NSRUFURSBTVUJTQ1JJUFRJT04gcmVncmVzc19jb25mbGljdF9mYWlsIENPTk5FQ1RJ T04gJ2RibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCcgUFVCTElDQVRJT04gdGVzdHB1YiBXSVRI IChjb25uZWN0ID0gZmFsc2UsIGNvbmZsaWN0X2xvZ19kZXN0aW5hdGlvbiA9ICdpbnZhbGlkJyk7 CitFUlJPUjogIHVucmVjb2duaXplZCBjb25mbGljdF9sb2dfZGVzdGluYXRpb24gdmFsdWU6ICJp bnZhbGlkIgorSElOVDogIFZhbGlkIHZhbHVlcyBhcmUgImxvZyIsICJ0YWJsZSIsIGFuZCAiYWxs Ii4KKy0tIHZlcmlmeSBzdWJjb25mbGljdGxvZ2Rlc3QgaXMgJ2xvZycgYW5kIHN1YmNvbmZsaWN0 bG9ncmVsaWQgaXMgMCAoSW52YWxpZE9pZCkgZm9yIGRlZmF1bHQgY2FzZQorQ1JFQVRFIFNVQlND UklQVElPTiByZWdyZXNzX2NvbmZsaWN0X2xvZ19kZWZhdWx0IENPTk5FQ1RJT04gJ2RibmFtZT1y ZWdyZXNzX2RvZXNub3RleGlzdCcgUFVCTElDQVRJT04gdGVzdHB1YiBXSVRIIChjb25uZWN0ID0g ZmFsc2UpOworV0FSTklORzogIHN1YnNjcmlwdGlvbiB3YXMgY3JlYXRlZCwgYnV0IGlzIG5vdCBj b25uZWN0ZWQKK0hJTlQ6ICBUbyBpbml0aWF0ZSByZXBsaWNhdGlvbiwgeW91IG11c3QgbWFudWFs bHkgY3JlYXRlIHRoZSByZXBsaWNhdGlvbiBzbG90LCBlbmFibGUgdGhlIHN1YnNjcmlwdGlvbiwg YW5kIGFsdGVyIHRoZSBzdWJzY3JpcHRpb24gdG8gcmVmcmVzaCBwdWJsaWNhdGlvbnMuCitTRUxF Q1Qgc3VibmFtZSwgc3ViY29uZmxpY3Rsb2dkZXN0LCBzdWJjb25mbGljdGxvZ3JlbGlkCitGUk9N IHBnX3N1YnNjcmlwdGlvbiBXSEVSRSBzdWJuYW1lID0gJ3JlZ3Jlc3NfY29uZmxpY3RfbG9nX2Rl ZmF1bHQnOworICAgICAgICAgICBzdWJuYW1lICAgICAgICAgICAgfCBzdWJjb25mbGljdGxvZ2Rl c3QgfCBzdWJjb25mbGljdGxvZ3JlbGlkIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfY29u ZmxpY3RfbG9nX2RlZmF1bHQgfCBsb2cgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAg ICAwCisoMSByb3cpCisKKy0tIGZhaWwgLSBlbXB0eSBzdHJpbmcgcGFyYW1ldGVyIHZhbHVlCitD UkVBVEUgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfY29uZmxpY3RfZW1wdHlfc3RyIENPTk5FQ1RJT04g J2RibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCcgUFVCTElDQVRJT04gdGVzdHB1YiBXSVRIIChj b25uZWN0ID0gZmFsc2UsIGNvbmZsaWN0X2xvZ19kZXN0aW5hdGlvbiA9ICcnKTsKK0VSUk9SOiAg dW5yZWNvZ25pemVkIGNvbmZsaWN0X2xvZ19kZXN0aW5hdGlvbiB2YWx1ZTogIiIKK0hJTlQ6ICBW YWxpZCB2YWx1ZXMgYXJlICJsb2ciLCAidGFibGUiLCBhbmQgImFsbCIuCistLSB0aGlzIHNob3Vs ZCBnZW5lcmF0ZSBhIGNvbmZsaWN0IGxvZyB0YWJsZSBuYW1lZCBwZ19jb25mbGljdF9sb2dfJHN1 YmlkJAorQ1JFQVRFIFNVQlNDUklQVElPTiByZWdyZXNzX2NvbmZsaWN0X3Rlc3QxIENPTk5FQ1RJ T04gJ2RibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCcgUFVCTElDQVRJT04gdGVzdHB1YiBXSVRI IChjb25uZWN0ID0gZmFsc2UsIGNvbmZsaWN0X2xvZ19kZXN0aW5hdGlvbiA9ICd0YWJsZScpOwor V0FSTklORzogIHN1YnNjcmlwdGlvbiB3YXMgY3JlYXRlZCwgYnV0IGlzIG5vdCBjb25uZWN0ZWQK K0hJTlQ6ICBUbyBpbml0aWF0ZSByZXBsaWNhdGlvbiwgeW91IG11c3QgbWFudWFsbHkgY3JlYXRl IHRoZSByZXBsaWNhdGlvbiBzbG90LCBlbmFibGUgdGhlIHN1YnNjcmlwdGlvbiwgYW5kIGFsdGVy IHRoZSBzdWJzY3JpcHRpb24gdG8gcmVmcmVzaCBwdWJsaWNhdGlvbnMuCistLSBjaGVjayBtZXRh ZGF0YSBpbiBwZ19zdWJzY3JpcHRpb246IGRlc3RpbmF0aW9uIHNob3VsZCBiZSAndGFibGUnIGFu ZCBzdWJjb25mbGljdGxvZ3JlbGlkIHZhbGlkCitTRUxFQ1Qgc3VibmFtZSwgc3ViY29uZmxpY3Rs b2dkZXN0LCBzdWJjb25mbGljdGxvZ3JlbGlkID4gMCBBUyBoYXNfcmVsaWQKK0ZST00gcGdfc3Vi c2NyaXB0aW9uIFdIRVJFIHN1Ym5hbWUgPSAncmVncmVzc19jb25mbGljdF90ZXN0MSc7CisgICAg ICAgIHN1Ym5hbWUgICAgICAgICB8IHN1YmNvbmZsaWN0bG9nZGVzdCB8IGhhc19yZWxpZCAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQor IHJlZ3Jlc3NfY29uZmxpY3RfdGVzdDEgfCB0YWJsZSAgICAgICAgICAgICAgfCB0CisoMSByb3cp CisKKy0tIHZlcmlmeSB0aGUgcGh5c2ljYWwgdGFibGUgZXhpc3RzLCBpdHMgT0lEIG1hdGNoZXMg c3ViY29uZmxpY3Rsb2dyZWxpZCwKKy0tIGFuZCBpdCBpcyBsb2NhdGVkIGluIHRoZSAncGdfY29u ZmxpY3QnIG5hbWVzcGFjZQorU0VMRUNUIG4ubnNwbmFtZSwgKGMub2lkID0gcy5zdWJjb25mbGlj dGxvZ3JlbGlkKSBBUyAib2lkX21hdGNoZXMiCitGUk9NIHBnX2NsYXNzIGMKK0pPSU4gcGdfc3Vi c2NyaXB0aW9uIHMgT04gYy5yZWxuYW1lID0gJ3BnX2NvbmZsaWN0X2xvZ18nIHx8IHMub2lkCitK T0lOIHBnX25hbWVzcGFjZSBuIE9OIGMucmVsbmFtZXNwYWNlID0gbi5vaWQKK1dIRVJFIHMuc3Vi bmFtZSA9ICdyZWdyZXNzX2NvbmZsaWN0X3Rlc3QxJzsKKyAgIG5zcG5hbWUgICB8IG9pZF9tYXRj aGVzIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgcGdfY29uZmxpY3QgfCB0CisoMSBy b3cpCisKKy0tIGNoZWNrIGlmIHRoZSBjb25mbGljdCBsb2cgdGFibGUgaGFzIHRoZSBjb3JyZWN0 IHNjaGVtYQorU0VMRUNUIGEuYXR0bnVtLCBhLmF0dG5hbWUKK0ZST00gcGdfYXR0cmlidXRlIGEK K0pPSU4gcGdfY2xhc3MgYyBPTiBhLmF0dHJlbGlkID0gYy5vaWQKK0pPSU4gcGdfc3Vic2NyaXB0 aW9uIHMgT04gYy5yZWxuYW1lID0gJ3BnX2NvbmZsaWN0X2xvZ18nIHx8IHMub2lkCitXSEVSRSBz LnN1Ym5hbWUgPSAncmVncmVzc19jb25mbGljdF90ZXN0MScgQU5EIGEuYXR0bnVtID4gMAorICAg IE9SREVSIEJZIGEuYXR0bnVtOworIGF0dG51bSB8ICAgICAgICBhdHRuYW1lICAgICAgICAKKy0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAxIHwgcmVsaWQKKyAgICAgIDIg fCBzY2hlbWFuYW1lCisgICAgICAzIHwgcmVsbmFtZQorICAgICAgNCB8IGNvbmZsaWN0X3R5cGUK KyAgICAgIDUgfCByZW1vdGVfeGlkCisgICAgICA2IHwgcmVtb3RlX2NvbW1pdF9sc24KKyAgICAg IDcgfCByZW1vdGVfY29tbWl0X3RzCisgICAgICA4IHwgcmVtb3RlX29yaWdpbgorICAgICAgOSB8 IHJlcGxpY2FfaWRlbnRpdHlfZnVsbAorICAgICAxMCB8IHJlcGxpY2FfaWRlbnRpdHkKKyAgICAg MTEgfCByZW1vdGVfdHVwbGUKKyAgICAgMTIgfCBsb2NhbF9jb25mbGljdHMKKygxMiByb3dzKQor CistLSBDaGFuZ2luZyB0aGUgc3Vic2NyaXB0aW9uIG93bmVyIHNob3VsZCBhbHNvIHVwZGF0ZSB0 aGUgb3duZXIKKy0tIG9mIHRoZSBhc3NvY2lhdGVkIGNvbmZsaWN0IGxvZyB0YWJsZS4KK0FMVEVS IFNVQlNDUklQVElPTiByZWdyZXNzX2NvbmZsaWN0X3Rlc3QxIE9XTkVSIFRPIHJlZ3Jlc3Nfc3Vi c2NyaXB0aW9uX3VzZXIyOworU0VMRUNUIHBnX2NhdGFsb2cucGdfZ2V0X3VzZXJieWlkKGMucmVs b3duZXIpIEFTIG93bmVyCitGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYworSk9JTiBwZ19jYXRh bG9nLnBnX3N1YnNjcmlwdGlvbiBzCisgICAgICAgIE9OIGMucmVsbmFtZSA9ICdwZ19jb25mbGlj dF9sb2dfJyB8fCBzLm9pZAorV0hFUkUgcy5zdWJuYW1lID0gJ3JlZ3Jlc3NfY29uZmxpY3RfdGVz dDEnOworICAgICAgICAgICBvd25lciAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIyCisoMSByb3cpCisKKy0tIFZlcmlm eSB0aGF0IGEgbm9uLXN1cGVydXNlciBzdWJzY3JpcHRpb24gb3duZXIgY2FuIHRydW5jYXRlLAor LS0gZGVsZXRlIGZyb20sIGFuZCBzZWxlY3QgZnJvbSB0aGUgYXNzb2NpYXRlZCBjb25mbGljdCBs b2cgdGFibGUuCitTRVQgUk9MRSAncmVncmVzc19zdWJzY3JpcHRpb25fdXNlcjInOworU0VMRUNU IGZvcm1hdCgnJUkuJUknLCBuLm5zcG5hbWUsIGMucmVsbmFtZSkgQVMgY29uZmxpY3RfbG9nX3Rh YmxlCitGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYworSk9JTiBwZ19jYXRhbG9nLnBnX25hbWVz cGFjZSBuCisJT04gbi5vaWQgPSBjLnJlbG5hbWVzcGFjZQorSk9JTiBwZ19jYXRhbG9nLnBnX3N1 YnNjcmlwdGlvbiBzCisJT04gYy5yZWxuYW1lID0gJ3BnX2NvbmZsaWN0X2xvZ18nIHx8IHMub2lk CitXSEVSRSBzLnN1Ym5hbWUgPSAncmVncmVzc19jb25mbGljdF90ZXN0MScKK1xnc2V0CitUUlVO Q0FURSBUQUJMRSA6Y29uZmxpY3RfbG9nX3RhYmxlOworREVMRVRFIEZST00gOmNvbmZsaWN0X2xv Z190YWJsZTsKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIDpjb25mbGljdF9sb2dfdGFibGU7CisgY291 bnQgCistLS0tLS0tCisgICAgIDAKKygxIHJvdykKKworUkVTRVQgUk9MRTsKKy0tIFJlc3RvcmUg dGhlIG9yaWdpbmFsIHN1YnNjcmlwdGlvbiBvd25lci4KK0FMVEVSIFNVQlNDUklQVElPTiByZWdy ZXNzX2NvbmZsaWN0X3Rlc3QxIE9XTkVSIFRPIHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXI7Cist LQorLS0gQUxURVIgU1VCU0NSSVBUSU9OIC0gY29uZmxpY3RfbG9nX2Rlc3RpbmF0aW9uIHN0YXRl IHRyYW5zaXRpb25zCistLQorLS0gVGhlc2UgdGVzdHMgdmVyaWZ5IHRoZSB0cmFuc2l0aW9uIGxv Z2ljIGJldHdlZW4gZGlmZmVyZW50IGxvZ2dpbmcKKy0tIGRlc3RpbmF0aW9ucywgZW5zdXJpbmcg Y29uZmxpY3QgbG9nIHRhYmxlcyBhcmUgY3JlYXRlZCBvciBkcm9wcGVkIGFzCistLSBleHBlY3Rl ZAorLS0KKy0tIHRyYW5zaXRpb24gZnJvbSAnbG9nJyB0byAnYWxsJworLS0gYSBuZXcgY29uZmxp Y3QgbG9nIHRhYmxlIHNob3VsZCBiZSBjcmVhdGVkCitDUkVBVEUgU1VCU0NSSVBUSU9OIHJlZ3Jl c3NfY29uZmxpY3RfdGVzdDIgQ09OTkVDVElPTiAnZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0 JyBQVUJMSUNBVElPTiB0ZXN0cHViIFdJVEggKGNvbm5lY3QgPSBmYWxzZSwgY29uZmxpY3RfbG9n X2Rlc3RpbmF0aW9uID0gJ2xvZycpOworV0FSTklORzogIHN1YnNjcmlwdGlvbiB3YXMgY3JlYXRl ZCwgYnV0IGlzIG5vdCBjb25uZWN0ZWQKK0hJTlQ6ICBUbyBpbml0aWF0ZSByZXBsaWNhdGlvbiwg eW91IG11c3QgbWFudWFsbHkgY3JlYXRlIHRoZSByZXBsaWNhdGlvbiBzbG90LCBlbmFibGUgdGhl IHN1YnNjcmlwdGlvbiwgYW5kIGFsdGVyIHRoZSBzdWJzY3JpcHRpb24gdG8gcmVmcmVzaCBwdWJs aWNhdGlvbnMuCitBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc19jb25mbGljdF90ZXN0MiBTRVQg KGNvbmZsaWN0X2xvZ19kZXN0aW5hdGlvbiA9ICdhbGwnKTsKKy0tIHZlcmlmeSBtZXRhZGF0YSBh ZnRlciBBTFRFUiAoZGVzdGluYXRpb24gc2hvdWxkIGJlICdhbGwnKQorU0VMRUNUIHN1Ym5hbWUs IHN1YmNvbmZsaWN0bG9nZGVzdCwgc3ViY29uZmxpY3Rsb2dyZWxpZCA+IDAgQVMgaGFzX3JlbGlk CitGUk9NIHBnX3N1YnNjcmlwdGlvbiBXSEVSRSBzdWJuYW1lID0gJ3JlZ3Jlc3NfY29uZmxpY3Rf dGVzdDInOworICAgICAgICBzdWJuYW1lICAgICAgICAgfCBzdWJjb25mbGljdGxvZ2Rlc3QgfCBo YXNfcmVsaWQgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0KKyByZWdyZXNzX2NvbmZsaWN0X3Rlc3QyIHwgYWxsICAgICAgICAgICAgICAg IHwgdAorKDEgcm93KQorCistLSB0cmFuc2l0aW9uIGZyb20gJ2FsbCcgdG8gJ3RhYmxlJworLS0g c2hvdWxkIE5PVCBkcm9wIHRoZSB0YWJsZSwgb25seSBjaGFuZ2UgZGVzdGluYXRpb24gc3RyaW5n CitTRUxFQ1Qgc3ViY29uZmxpY3Rsb2dyZWxpZCBBUyBvbGRfcmVsaWQgRlJPTSBwZ19zdWJzY3Jp cHRpb24gV0hFUkUgc3VibmFtZSA9ICdyZWdyZXNzX2NvbmZsaWN0X3Rlc3QyJyBcZ3NldAorQUxU RVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfY29uZmxpY3RfdGVzdDIgU0VUIChjb25mbGljdF9sb2df ZGVzdGluYXRpb24gPSAndGFibGUnKTsKK1NFTEVDVCBzdWJjb25mbGljdGxvZ2Rlc3QsIHN1YmNv bmZsaWN0bG9ncmVsaWQgPSA6b2xkX3JlbGlkIEFTIHJlbGlkX3VuY2hhbmdlZAorRlJPTSBwZ19z dWJzY3JpcHRpb24gV0hFUkUgc3VibmFtZSA9ICdyZWdyZXNzX2NvbmZsaWN0X3Rlc3QyJzsKKyBz dWJjb25mbGljdGxvZ2Rlc3QgfCByZWxpZF91bmNoYW5nZWQgCistLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLQorIHRhYmxlICAgICAgICAgICAgICB8IHQKKygxIHJvdykKKwor LS0gdHJhbnNpdGlvbiBmcm9tICd0YWJsZScgdG8gJ2xvZycKKy0tIHNob3VsZCBkcm9wIHRoZSB0 YWJsZSBhbmQgY2xlYXIgc3ViY29uZmxpY3Rsb2dyZWxpZAorQUxURVIgU1VCU0NSSVBUSU9OIHJl Z3Jlc3NfY29uZmxpY3RfdGVzdDIgU0VUIChjb25mbGljdF9sb2dfZGVzdGluYXRpb24gPSAnbG9n Jyk7CitTRUxFQ1Qgc3ViY29uZmxpY3Rsb2dkZXN0LCBzdWJjb25mbGljdGxvZ3JlbGlkCitGUk9N IHBnX3N1YnNjcmlwdGlvbiBXSEVSRSBzdWJuYW1lID0gJ3JlZ3Jlc3NfY29uZmxpY3RfdGVzdDIn OworIHN1YmNvbmZsaWN0bG9nZGVzdCB8IHN1YmNvbmZsaWN0bG9ncmVsaWQgCistLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBsb2cgICAgICAgICAgICAgICAgfCAg ICAgICAgICAgICAgICAgICAwCisoMSByb3cpCisKKy0tIHZlcmlmeSB0aGUgcGh5c2ljYWwgdGFi bGUgaXMgZ29uZQorU0VMRUNUIGNvdW50KCopCitGUk9NIHBnX2NsYXNzIGMKK0pPSU4gcGdfc3Vi c2NyaXB0aW9uIHMgT04gYy5yZWxuYW1lID0gJ3BnX2NvbmZsaWN0X2xvZ18nIHx8IHMub2lkCitX SEVSRSBzLnN1Ym5hbWUgPSAncmVncmVzc19jb25mbGljdF90ZXN0Mic7CisgY291bnQgCistLS0t LS0tCisgICAgIDAKKygxIHJvdykKKworLS0KKy0tIFBVQkxJQ0FUSU9OOiBWZXJpZnkgY29uZmxp Y3QgbG9nIHRhYmxlcyBhcmUgbm90IHB1Ymxpc2hhYmxlCistLQorLS0gcGdfcmVsYXRpb25faXNf cHVibGlzaGFibGUgc2hvdWxkIHJldHVybiBmYWxzZSBmb3IgY29uZmxpY3QgbG9nIHRhYmxlcyB0 bworLS0gcHJldmVudCB0aGVtIGZyb20gYmVpbmcgYWNjaWRlbnRhbGx5IGluY2x1ZGVkIGluIHB1 YmxpY2F0aW9ucworLS0KK1NFTEVDVCBuLm5zcG5hbWUsIHBnX3JlbGF0aW9uX2lzX3B1Ymxpc2hh YmxlKGMub2lkKQorRlJPTSBwZ19jbGFzcyBjCitKT0lOIHBnX25hbWVzcGFjZSBuIE9OIGMucmVs bmFtZXNwYWNlID0gbi5vaWQKK0pPSU4gcGdfc3Vic2NyaXB0aW9uIHMgT04gcy5zdWJjb25mbGlj dGxvZ3JlbGlkID0gYy5vaWQKK1dIRVJFIHMuc3VibmFtZSA9ICdyZWdyZXNzX2NvbmZsaWN0X3Rl c3QxJzsKKyAgIG5zcG5hbWUgICB8IHBnX3JlbGF0aW9uX2lzX3B1Ymxpc2hhYmxlIAorLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgcGdfY29uZmxpY3QgfCBmCiso MSByb3cpCisKKy0tCistLSBUYWJsZSBQcm90ZWN0aW9uIGFuZCBMaWZlY3ljbGUgTWFuYWdlbWVu dAorLS0KKy0tIFRoZXNlIHRlc3RzIHZlcmlmeSB0aGF0OgorLS0gTWFudWFsIERST1AgVEFCTEUg aXMgZGlzYWxsb3dlZAorLS0gRFJPUCBTVUJTQ1JJUFRJT04gYXV0b21hdGljYWxseSByZWFwcyB0 aGUgdGFibGUKKy0tCistLSByZS1lbmFibGUgdGFibGUgbG9nZ2luZyBmb3IgdmVyaWZpY2F0aW9u CitBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc19jb25mbGljdF90ZXN0MSBTRVQgKGNvbmZsaWN0 X2xvZ19kZXN0aW5hdGlvbiA9ICd0YWJsZScpOworLS0gVGhlIGNvbmZsaWN0IGxvZyB0YWJsZSBu YW1lIGNvbnRhaW5zIHRoZSBzdWJzY3JpcHRpb24gT0lELCB3aGljaCBpcworLS0gbm9uLWRldGVy bWluaXN0aWMuICBDYXB0dXJlIGl0IGludG8gYSBwc3FsIHZhcmlhYmxlIGFuZCByZXBvcnQgb25s eSB0aGUKKy0tIFNRTFNUQVRFLCBzbyB0aGUgZXhwZWN0ZWQgb3V0cHV0IGRvZXMgbm90IGRlcGVu ZCBvbiB0aGUgT0lELgorLS0gZmFpbCAtIGRyb3AgdGFibGUgbm90IGFsbG93ZWQgZHVlIHRvIGlu dGVybmFsIGRlcGVuZGVuY3kKK1NFVCBjbGllbnRfbWluX21lc3NhZ2VzID0gTk9USUNFOworU0VM RUNUICdwZ19jb25mbGljdC5wZ19jb25mbGljdF9sb2dfJyB8fCBvaWQgQVMgY2x0MQorICAgIEZS T00gcGdfc3Vic2NyaXB0aW9uIFdIRVJFIHN1Ym5hbWUgPSAncmVncmVzc19jb25mbGljdF90ZXN0 MScgXGdzZXQKK1xzZXQgVkVSQk9TSVRZIHNxbHN0YXRlCitEUk9QIFRBQkxFIDpjbHQxOworRVJS T1I6ICA0MjUwMQorXHNldCBWRVJCT1NJVFkgZGVmYXVsdAorLS0gQ0xFQU5VUDogRFJPUCBTVUJT Q1JJUFRJT04gcmVhcHMgdGhlIHRhYmxlCitBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc19jb25m bGljdF90ZXN0MSBESVNBQkxFOworQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfY29uZmxpY3Rf dGVzdDEgU0VUIChzbG90X25hbWUgPSBOT05FKTsKKy0tIFZlcmlmeSB0aGUgdGFibGUgT0lEIGZv ciByZWFwIGNoZWNrCitTRUxFQ1QgJ3BnX2NvbmZsaWN0LnBnX2NvbmZsaWN0X2xvZ18nIHx8IG9p ZCBBUyBpbnRlcm5hbF90YWJsZW5hbWUgRlJPTSBwZ19zdWJzY3JpcHRpb24gV0hFUkUgc3VibmFt ZSA9ICdyZWdyZXNzX2NvbmZsaWN0X3Rlc3QxJyBcZ3NldAorU0VUIGNsaWVudF9taW5fbWVzc2Fn ZXMgPSBXQVJOSU5HOworRFJPUCBTVUJTQ1JJUFRJT04gcmVncmVzc19jb25mbGljdF90ZXN0MTsK Ky0tIHNob3VsZCByZXR1cm4gTlVMTCwgbWVhbmluZyB0aGUgY29uZmxpY3QgbG9nIHRhYmxlIHdh cyByZWFwZWQgdmlhIGRlcGVuZGVuY3kKK1NFTEVDVCB0b19yZWdjbGFzcyg6J2ludGVybmFsX3Rh YmxlbmFtZScpOworIHRvX3JlZ2NsYXNzIAorLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCist LQorLS0gQWRkaXRpb25hbCBOYW1lc3BhY2UgYW5kIFRhYmxlIFByb3RlY3Rpb24gVGVzdHMKKy0t CistLSBTZXR1cDogRW5zdXJlIHdlIGhhdmUgYSBzdWJzY3JpcHRpb24gd2l0aCBhIGNvbmZsaWN0 IGxvZyB0YWJsZQorQ1JFQVRFIFNVQlNDUklQVElPTiByZWdyZXNzX2NvbmZsaWN0X3Byb3RlY3Rp b25fdGVzdCBDT05ORUNUSU9OICdkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QnCisgICAgUFVC TElDQVRJT04gdGVzdHB1YiBXSVRIIChjb25uZWN0ID0gZmFsc2UsIGNvbmZsaWN0X2xvZ19kZXN0 aW5hdGlvbiA9ICd0YWJsZScpOworV0FSTklORzogIHN1YnNjcmlwdGlvbiB3YXMgY3JlYXRlZCwg YnV0IGlzIG5vdCBjb25uZWN0ZWQKK0hJTlQ6ICBUbyBpbml0aWF0ZSByZXBsaWNhdGlvbiwgeW91 IG11c3QgbWFudWFsbHkgY3JlYXRlIHRoZSByZXBsaWNhdGlvbiBzbG90LCBlbmFibGUgdGhlIHN1 YnNjcmlwdGlvbiwgYW5kIGFsdGVyIHRoZSBzdWJzY3JpcHRpb24gdG8gcmVmcmVzaCBwdWJsaWNh dGlvbnMuCistLSBUaGUgY29uZmxpY3QgbG9nIHRhYmxlIGlzIHN5c3RlbS1tYW5hZ2VkOyBpdHMg bmFtZSBjb250YWlucyB0aGUKKy0tIHN1YnNjcmlwdGlvbiBPSUQsIHdoaWNoIGlzIG5vbi1kZXRl cm1pbmlzdGljLiAgQ2FwdHVyZSB0aGUgbmFtZSBpbnRvIGEgcHNxbAorLS0gdmFyaWFibGUgYW5k IHJlcG9ydCBvbmx5IHRoZSBTUUxTVEFURSBmb3IgdGhlIG9wZXJhdGlvbnMgdGhhdCBtdXN0IGJl CistLSByZWplY3RlZCwgc28gdGhlIGV4cGVjdGVkIG91dHB1dCBzdGF5cyBmcmVlIG9mIHRoZSBk eW5hbWljIE9JRC4gIEV2ZXJ5CistLSBzdGF0ZW1lbnQgaW4gdGhlIFZFUkJPU0lUWS1zcWxzdGF0 ZSBibG9jayBiZWxvdyBtdXN0IGZhaWwgd2l0aCA0MjgwOQorLS0gKHdyb25nX29iamVjdF90eXBl KSwgZXhjZXB0IGFkZGluZyB0aGUgdGFibGUgdG8gYSBwdWJsaWNhdGlvbiwgd2hpY2ggZmFpbHMK Ky0tIHdpdGggMjIwMjMgKGludmFsaWRfcGFyYW1ldGVyX3ZhbHVlKS4KK1NFTEVDVCAncGdfY29u ZmxpY3QuJyB8fCByZWxuYW1lIEFTIGNsdAorICAgIEZST00gcGdfY2xhc3MgYyBKT0lOIHBnX3N1 YnNjcmlwdGlvbiBzIE9OIGMucmVsbmFtZSA9ICdwZ19jb25mbGljdF9sb2dfJyB8fCBzLm9pZAor ICAgIFdIRVJFIHMuc3VibmFtZSA9ICdyZWdyZXNzX2NvbmZsaWN0X3Byb3RlY3Rpb25fdGVzdCcg XGdzZXQKKy0tIFRyaWdnZXIgZnVuY3Rpb24gdXNlZCBieSB0aGUgQ1JFQVRFIFRSSUdHRVIgY2hl Y2sgYmVsb3cuCitDUkVBVEUgRlVOQ1RJT04gcHVibGljLmR1bW15X3RyaWdnZXJfZnVuYygpIFJF VFVSTlMgdHJpZ2dlciBBUyAkJAorQkVHSU4KKyAgICBSRVRVUk4gTkVXOworRU5EOworJCQgTEFO R1VBR0UgcGxwZ3NxbDsKK1xzZXQgVkVSQk9TSVRZIHNxbHN0YXRlCitBTFRFUiBUQUJMRSA6Y2x0 IEFERCBDT0xVTU4gZXh0cmFfaW5mbyB0ZXh0OworRVJST1I6ICA0MjgwOQorSU5TRVJUIElOVE8g OmNsdCAocmVsbmFtZSkgVkFMVUVTICgnbXl0ZXN0Jyk7CitFUlJPUjogIDQyODA5CitVUERBVEUg OmNsdCBTRVQgcmVsbmFtZSA9ICdteXRlc3QnOworRVJST1I6ICA0MjgwOQorQ1JFQVRFIFBPTElD WSBwMSBPTiA6Y2x0IFVTSU5HICh0cnVlKTsKK0VSUk9SOiAgNDI4MDkKK0NSRUFURSBTVEFUSVNU SUNTIHMxIE9OIHJlbG5hbWUsIHNjaGVtYW5hbWUgRlJPTSA6Y2x0OworRVJST1I6ICA0MjgwOQor Q1JFQVRFIFRBQkxFIHB1YmxpYy5jb25mbGljdF9jaGlsZCAoKSBJTkhFUklUUyAoOmNsdCk7CitF UlJPUjogIDQyODA5CitBTFRFUiBUQUJMRSA6Y2x0IFJFTkFNRSBDT0xVTU4gcmVsbmFtZSBUTyBu ZXdfcmVsbmFtZTsKK0VSUk9SOiAgNDI4MDkKK0NSRUFURSBUQUJMRSBwdWJsaWMuY29uZmxpY3Rf ZmsgKHJlbG5hbWUgdGV4dCBSRUZFUkVOQ0VTIDpjbHQocmVsbmFtZSkpOworRVJST1I6ICA0Mjgw OQorQUxURVIgVEFCTEUgOmNsdCBPV05FUiBUTyByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyX2R1 bW15OworRVJST1I6ICA0MjgwOQorQUxURVIgVEFCTEUgOmNsdCBTRVQgU0NIRU1BIHB1YmxpYzsK K0VSUk9SOiAgNDI4MDkKK0NSRUFURSBUUklHR0VSIHQxIEJFRk9SRSBJTlNFUlQgT04gOmNsdCBG T1IgRUFDSCBST1cgRVhFQ1VURSBGVU5DVElPTiBwdWJsaWMuZHVtbXlfdHJpZ2dlcl9mdW5jKCk7 CitFUlJPUjogIDQyODA5CitBTFRFUiBUUklHR0VSIG5vbl9leGlzdGVudF90cmlnZ2VyIE9OIDpj bHQgUkVOQU1FIFRPIG5ld190cmlnZ2VyOworRVJST1I6ICA0MjgwOQorQ1JFQVRFIFJVTEUgcjEg QVMgT04gSU5TRVJUIFRPIDpjbHQgRE8gSU5TVEVBRCBOT1RISU5HOworRVJST1I6ICA0MjgwOQor QUxURVIgUlVMRSBub25fZXhpc3RlbnRfcnVsZSBPTiA6Y2x0IFJFTkFNRSBUTyBuZXdfcnVsZTsK K0VSUk9SOiAgNDI4MDkKK0NSRUFURSBJTkRFWCBpZHgxIE9OIDpjbHQgKHJlbG5hbWUpOworRVJS T1I6ICA0MjgwOQorU0VMRUNUIDEgRlJPTSA6Y2x0IEZPUiBVUERBVEU7CitFUlJPUjogIDQyODA5 CitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JfY2x0IEZPUiBUQUJMRSA6Y2x0OworRVJS T1I6ICAyMjAyMworXHNldCBWRVJCT1NJVFkgZGVmYXVsdAorLS0gQ2xlYW4gdXAgdGhlIHRyaWdn ZXIgZnVuY3Rpb24gdXNlZCBhYm92ZS4KK0RST1AgRlVOQ1RJT04gcHVibGljLmR1bW15X3RyaWdn ZXJfZnVuYygpOworLS0gVFJVTkNBVEUgYW5kIERFTEVURSBhcmUgYWxsb3dlZCBzbyB0aGF0IHVz ZXJzIGNhbiBwcnVuZSB0aGUgY29uZmxpY3QgbG9nLgorVFJVTkNBVEUgOmNsdDsKK0RFTEVURSBG Uk9NIDpjbHQ7CistLSBDcmVhdGluZyBhIHRhYmxlIGRpcmVjdGx5IGluIHRoZSBwZ19jb25mbGlj dCBuYW1lc3BhY2UgaXMgcmVqZWN0ZWQgZm9yCistLSBldmVyeW9uZSAodGhlIHNjaGVtYSBpcyBy ZXNlcnZlZCBmb3IgY29uZmxpY3QgbG9nIHRhYmxlcykuCitDUkVBVEUgVEFCTEUgcGdfY29uZmxp Y3QubWFudWFsX3RhYmxlIChpZCBpbnQpOworRVJST1I6ICBwZXJtaXNzaW9uIGRlbmllZCBmb3Ig c2NoZW1hIHBnX2NvbmZsaWN0CitMSU5FIDE6IENSRUFURSBUQUJMRSBwZ19jb25mbGljdC5tYW51 YWxfdGFibGUgKGlkIGludCk7CisgICAgICAgICAgICAgICAgICAgICBeCistLSBNb3ZpbmcgYSB1 c2VyIHRhYmxlIGludG8gdGhlIHBnX2NvbmZsaWN0IG5hbWVzcGFjZSBpcyBsaWtld2lzZSByZWpl Y3RlZC4KK0NSRUFURSBUQUJMRSBwdWJsaWMudGVzdF9tb3ZlIChpZCBpbnQpOworQUxURVIgVEFC TEUgcHVibGljLnRlc3RfbW92ZSBTRVQgU0NIRU1BIHBnX2NvbmZsaWN0OworRVJST1I6ICBwZXJt aXNzaW9uIGRlbmllZCBmb3Igc2NoZW1hIHBnX2NvbmZsaWN0CitEUk9QIFRBQkxFIHB1YmxpYy50 ZXN0X21vdmU7CitTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9IFdBUk5JTkc7CistLSBDbGVhbiB1 cCByZW1haW5pbmcgdGVzdCBzdWJzY3JpcHRpb24KK0FMVEVSIFNVQlNDUklQVElPTiByZWdyZXNz X2NvbmZsaWN0X2xvZ19kZWZhdWx0IERJU0FCTEU7CitBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVz c19jb25mbGljdF9sb2dfZGVmYXVsdCBTRVQgKHNsb3RfbmFtZSA9IE5PTkUpOworRFJPUCBTVUJT Q1JJUFRJT04gcmVncmVzc19jb25mbGljdF9sb2dfZGVmYXVsdDsKK0FMVEVSIFNVQlNDUklQVElP TiByZWdyZXNzX2NvbmZsaWN0X3Rlc3QyIERJU0FCTEU7CitBTFRFUiBTVUJTQ1JJUFRJT04gcmVn cmVzc19jb25mbGljdF90ZXN0MiBTRVQgKHNsb3RfbmFtZSA9IE5PTkUpOworRFJPUCBTVUJTQ1JJ UFRJT04gcmVncmVzc19jb25mbGljdF90ZXN0MjsKK0FMVEVSIFNVQlNDUklQVElPTiByZWdyZXNz X2NvbmZsaWN0X3Byb3RlY3Rpb25fdGVzdCBESVNBQkxFOworQUxURVIgU1VCU0NSSVBUSU9OIHJl Z3Jlc3NfY29uZmxpY3RfcHJvdGVjdGlvbl90ZXN0IFNFVCAoc2xvdF9uYW1lID0gTk9ORSk7CitE Uk9QIFNVQlNDUklQVElPTiByZWdyZXNzX2NvbmZsaWN0X3Byb3RlY3Rpb25fdGVzdDsKIFJFU0VU IFNFU1NJT04gQVVUSE9SSVpBVElPTjsKIERST1AgUk9MRSByZWdyZXNzX3N1YnNjcmlwdGlvbl91 c2VyOwogRFJPUCBST0xFIHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIyOwpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvcmVncmVzcy9zcWwvc3Vic2NyaXB0aW9uLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL3N1YnNjcmlwdGlvbi5zcWwKaW5kZXggMDU1MzNkNjY2NzUuLjg2YzQwMmM1OWFhIDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zdWJzY3JpcHRpb24uc3FsCisrKyBiL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL3N1YnNjcmlwdGlvbi5zcWwKQEAgLTQ3NCw2ICs0NzQsMjQwIEBAIENP TU1JVDsKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzbG90X25hbWUg PSBOT05FKTsKIERST1AgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YjsKIAorLS0KKy0tIENP TkZMSUNUIExPRyBERVNUSU5BVElPTiBURVNUUworLS0KKworU0VUIFNFU1NJT04gQVVUSE9SSVpB VElPTiAncmVncmVzc19zdWJzY3JpcHRpb25fdXNlcic7CisKK1NFVCBjbGllbnRfbWluX21lc3Nh Z2VzID0gV0FSTklORzsKKworLS0gZmFpbCAtIHVucmVjb2duaXplZCBwYXJhbWV0ZXIgdmFsdWUK K0NSRUFURSBTVUJTQ1JJUFRJT04gcmVncmVzc19jb25mbGljdF9mYWlsIENPTk5FQ1RJT04gJ2Ri bmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCcgUFVCTElDQVRJT04gdGVzdHB1YiBXSVRIIChjb25u ZWN0ID0gZmFsc2UsIGNvbmZsaWN0X2xvZ19kZXN0aW5hdGlvbiA9ICdpbnZhbGlkJyk7CisKKy0t IHZlcmlmeSBzdWJjb25mbGljdGxvZ2Rlc3QgaXMgJ2xvZycgYW5kIHN1YmNvbmZsaWN0bG9ncmVs aWQgaXMgMCAoSW52YWxpZE9pZCkgZm9yIGRlZmF1bHQgY2FzZQorQ1JFQVRFIFNVQlNDUklQVElP TiByZWdyZXNzX2NvbmZsaWN0X2xvZ19kZWZhdWx0IENPTk5FQ1RJT04gJ2RibmFtZT1yZWdyZXNz X2RvZXNub3RleGlzdCcgUFVCTElDQVRJT04gdGVzdHB1YiBXSVRIIChjb25uZWN0ID0gZmFsc2Up OworU0VMRUNUIHN1Ym5hbWUsIHN1YmNvbmZsaWN0bG9nZGVzdCwgc3ViY29uZmxpY3Rsb2dyZWxp ZAorRlJPTSBwZ19zdWJzY3JpcHRpb24gV0hFUkUgc3VibmFtZSA9ICdyZWdyZXNzX2NvbmZsaWN0 X2xvZ19kZWZhdWx0JzsKKworLS0gZmFpbCAtIGVtcHR5IHN0cmluZyBwYXJhbWV0ZXIgdmFsdWUK K0NSRUFURSBTVUJTQ1JJUFRJT04gcmVncmVzc19jb25mbGljdF9lbXB0eV9zdHIgQ09OTkVDVElP TiAnZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0JyBQVUJMSUNBVElPTiB0ZXN0cHViIFdJVEgg KGNvbm5lY3QgPSBmYWxzZSwgY29uZmxpY3RfbG9nX2Rlc3RpbmF0aW9uID0gJycpOworCistLSB0 aGlzIHNob3VsZCBnZW5lcmF0ZSBhIGNvbmZsaWN0IGxvZyB0YWJsZSBuYW1lZCBwZ19jb25mbGlj dF9sb2dfJHN1YmlkJAorQ1JFQVRFIFNVQlNDUklQVElPTiByZWdyZXNzX2NvbmZsaWN0X3Rlc3Qx IENPTk5FQ1RJT04gJ2RibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCcgUFVCTElDQVRJT04gdGVz dHB1YiBXSVRIIChjb25uZWN0ID0gZmFsc2UsIGNvbmZsaWN0X2xvZ19kZXN0aW5hdGlvbiA9ICd0 YWJsZScpOworCistLSBjaGVjayBtZXRhZGF0YSBpbiBwZ19zdWJzY3JpcHRpb246IGRlc3RpbmF0 aW9uIHNob3VsZCBiZSAndGFibGUnIGFuZCBzdWJjb25mbGljdGxvZ3JlbGlkIHZhbGlkCitTRUxF Q1Qgc3VibmFtZSwgc3ViY29uZmxpY3Rsb2dkZXN0LCBzdWJjb25mbGljdGxvZ3JlbGlkID4gMCBB UyBoYXNfcmVsaWQKK0ZST00gcGdfc3Vic2NyaXB0aW9uIFdIRVJFIHN1Ym5hbWUgPSAncmVncmVz c19jb25mbGljdF90ZXN0MSc7CisKKy0tIHZlcmlmeSB0aGUgcGh5c2ljYWwgdGFibGUgZXhpc3Rz LCBpdHMgT0lEIG1hdGNoZXMgc3ViY29uZmxpY3Rsb2dyZWxpZCwKKy0tIGFuZCBpdCBpcyBsb2Nh dGVkIGluIHRoZSAncGdfY29uZmxpY3QnIG5hbWVzcGFjZQorU0VMRUNUIG4ubnNwbmFtZSwgKGMu b2lkID0gcy5zdWJjb25mbGljdGxvZ3JlbGlkKSBBUyAib2lkX21hdGNoZXMiCitGUk9NIHBnX2Ns YXNzIGMKK0pPSU4gcGdfc3Vic2NyaXB0aW9uIHMgT04gYy5yZWxuYW1lID0gJ3BnX2NvbmZsaWN0 X2xvZ18nIHx8IHMub2lkCitKT0lOIHBnX25hbWVzcGFjZSBuIE9OIGMucmVsbmFtZXNwYWNlID0g bi5vaWQKK1dIRVJFIHMuc3VibmFtZSA9ICdyZWdyZXNzX2NvbmZsaWN0X3Rlc3QxJzsKKworLS0g Y2hlY2sgaWYgdGhlIGNvbmZsaWN0IGxvZyB0YWJsZSBoYXMgdGhlIGNvcnJlY3Qgc2NoZW1hCitT RUxFQ1QgYS5hdHRudW0sIGEuYXR0bmFtZQorRlJPTSBwZ19hdHRyaWJ1dGUgYQorSk9JTiBwZ19j bGFzcyBjIE9OIGEuYXR0cmVsaWQgPSBjLm9pZAorSk9JTiBwZ19zdWJzY3JpcHRpb24gcyBPTiBj LnJlbG5hbWUgPSAncGdfY29uZmxpY3RfbG9nXycgfHwgcy5vaWQKK1dIRVJFIHMuc3VibmFtZSA9 ICdyZWdyZXNzX2NvbmZsaWN0X3Rlc3QxJyBBTkQgYS5hdHRudW0gPiAwCisgICAgT1JERVIgQlkg YS5hdHRudW07CisKKy0tIENoYW5naW5nIHRoZSBzdWJzY3JpcHRpb24gb3duZXIgc2hvdWxkIGFs c28gdXBkYXRlIHRoZSBvd25lcgorLS0gb2YgdGhlIGFzc29jaWF0ZWQgY29uZmxpY3QgbG9nIHRh YmxlLgorQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfY29uZmxpY3RfdGVzdDEgT1dORVIgVE8g cmVncmVzc19zdWJzY3JpcHRpb25fdXNlcjI7CitTRUxFQ1QgcGdfY2F0YWxvZy5wZ19nZXRfdXNl cmJ5aWQoYy5yZWxvd25lcikgQVMgb3duZXIKK0ZST00gcGdfY2F0YWxvZy5wZ19jbGFzcyBjCitK T0lOIHBnX2NhdGFsb2cucGdfc3Vic2NyaXB0aW9uIHMKKyAgICAgICAgT04gYy5yZWxuYW1lID0g J3BnX2NvbmZsaWN0X2xvZ18nIHx8IHMub2lkCitXSEVSRSBzLnN1Ym5hbWUgPSAncmVncmVzc19j b25mbGljdF90ZXN0MSc7CisKKy0tIFZlcmlmeSB0aGF0IGEgbm9uLXN1cGVydXNlciBzdWJzY3Jp cHRpb24gb3duZXIgY2FuIHRydW5jYXRlLAorLS0gZGVsZXRlIGZyb20sIGFuZCBzZWxlY3QgZnJv bSB0aGUgYXNzb2NpYXRlZCBjb25mbGljdCBsb2cgdGFibGUuCitTRVQgUk9MRSAncmVncmVzc19z dWJzY3JpcHRpb25fdXNlcjInOworCitTRUxFQ1QgZm9ybWF0KCclSS4lSScsIG4ubnNwbmFtZSwg Yy5yZWxuYW1lKSBBUyBjb25mbGljdF9sb2dfdGFibGUKK0ZST00gcGdfY2F0YWxvZy5wZ19jbGFz cyBjCitKT0lOIHBnX2NhdGFsb2cucGdfbmFtZXNwYWNlIG4KKwlPTiBuLm9pZCA9IGMucmVsbmFt ZXNwYWNlCitKT0lOIHBnX2NhdGFsb2cucGdfc3Vic2NyaXB0aW9uIHMKKwlPTiBjLnJlbG5hbWUg PSAncGdfY29uZmxpY3RfbG9nXycgfHwgcy5vaWQKK1dIRVJFIHMuc3VibmFtZSA9ICdyZWdyZXNz X2NvbmZsaWN0X3Rlc3QxJworXGdzZXQKKworVFJVTkNBVEUgVEFCTEUgOmNvbmZsaWN0X2xvZ190 YWJsZTsKK0RFTEVURSBGUk9NIDpjb25mbGljdF9sb2dfdGFibGU7CitTRUxFQ1QgQ09VTlQoKikg RlJPTSA6Y29uZmxpY3RfbG9nX3RhYmxlOworCitSRVNFVCBST0xFOworCistLSBSZXN0b3JlIHRo ZSBvcmlnaW5hbCBzdWJzY3JpcHRpb24gb3duZXIuCitBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVz c19jb25mbGljdF90ZXN0MSBPV05FUiBUTyByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyOworCist LQorLS0gQUxURVIgU1VCU0NSSVBUSU9OIC0gY29uZmxpY3RfbG9nX2Rlc3RpbmF0aW9uIHN0YXRl IHRyYW5zaXRpb25zCistLQorLS0gVGhlc2UgdGVzdHMgdmVyaWZ5IHRoZSB0cmFuc2l0aW9uIGxv Z2ljIGJldHdlZW4gZGlmZmVyZW50IGxvZ2dpbmcKKy0tIGRlc3RpbmF0aW9ucywgZW5zdXJpbmcg Y29uZmxpY3QgbG9nIHRhYmxlcyBhcmUgY3JlYXRlZCBvciBkcm9wcGVkIGFzCistLSBleHBlY3Rl ZAorLS0KKy0tIHRyYW5zaXRpb24gZnJvbSAnbG9nJyB0byAnYWxsJworLS0gYSBuZXcgY29uZmxp Y3QgbG9nIHRhYmxlIHNob3VsZCBiZSBjcmVhdGVkCitDUkVBVEUgU1VCU0NSSVBUSU9OIHJlZ3Jl c3NfY29uZmxpY3RfdGVzdDIgQ09OTkVDVElPTiAnZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0 JyBQVUJMSUNBVElPTiB0ZXN0cHViIFdJVEggKGNvbm5lY3QgPSBmYWxzZSwgY29uZmxpY3RfbG9n X2Rlc3RpbmF0aW9uID0gJ2xvZycpOworQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfY29uZmxp Y3RfdGVzdDIgU0VUIChjb25mbGljdF9sb2dfZGVzdGluYXRpb24gPSAnYWxsJyk7CisKKy0tIHZl cmlmeSBtZXRhZGF0YSBhZnRlciBBTFRFUiAoZGVzdGluYXRpb24gc2hvdWxkIGJlICdhbGwnKQor U0VMRUNUIHN1Ym5hbWUsIHN1YmNvbmZsaWN0bG9nZGVzdCwgc3ViY29uZmxpY3Rsb2dyZWxpZCA+ IDAgQVMgaGFzX3JlbGlkCitGUk9NIHBnX3N1YnNjcmlwdGlvbiBXSEVSRSBzdWJuYW1lID0gJ3Jl Z3Jlc3NfY29uZmxpY3RfdGVzdDInOworCistLSB0cmFuc2l0aW9uIGZyb20gJ2FsbCcgdG8gJ3Rh YmxlJworLS0gc2hvdWxkIE5PVCBkcm9wIHRoZSB0YWJsZSwgb25seSBjaGFuZ2UgZGVzdGluYXRp b24gc3RyaW5nCitTRUxFQ1Qgc3ViY29uZmxpY3Rsb2dyZWxpZCBBUyBvbGRfcmVsaWQgRlJPTSBw Z19zdWJzY3JpcHRpb24gV0hFUkUgc3VibmFtZSA9ICdyZWdyZXNzX2NvbmZsaWN0X3Rlc3QyJyBc Z3NldAorQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfY29uZmxpY3RfdGVzdDIgU0VUIChjb25m bGljdF9sb2dfZGVzdGluYXRpb24gPSAndGFibGUnKTsKK1NFTEVDVCBzdWJjb25mbGljdGxvZ2Rl c3QsIHN1YmNvbmZsaWN0bG9ncmVsaWQgPSA6b2xkX3JlbGlkIEFTIHJlbGlkX3VuY2hhbmdlZAor RlJPTSBwZ19zdWJzY3JpcHRpb24gV0hFUkUgc3VibmFtZSA9ICdyZWdyZXNzX2NvbmZsaWN0X3Rl c3QyJzsKKworLS0gdHJhbnNpdGlvbiBmcm9tICd0YWJsZScgdG8gJ2xvZycKKy0tIHNob3VsZCBk cm9wIHRoZSB0YWJsZSBhbmQgY2xlYXIgc3ViY29uZmxpY3Rsb2dyZWxpZAorQUxURVIgU1VCU0NS SVBUSU9OIHJlZ3Jlc3NfY29uZmxpY3RfdGVzdDIgU0VUIChjb25mbGljdF9sb2dfZGVzdGluYXRp b24gPSAnbG9nJyk7CitTRUxFQ1Qgc3ViY29uZmxpY3Rsb2dkZXN0LCBzdWJjb25mbGljdGxvZ3Jl bGlkCitGUk9NIHBnX3N1YnNjcmlwdGlvbiBXSEVSRSBzdWJuYW1lID0gJ3JlZ3Jlc3NfY29uZmxp Y3RfdGVzdDInOworCistLSB2ZXJpZnkgdGhlIHBoeXNpY2FsIHRhYmxlIGlzIGdvbmUKK1NFTEVD VCBjb3VudCgqKQorRlJPTSBwZ19jbGFzcyBjCitKT0lOIHBnX3N1YnNjcmlwdGlvbiBzIE9OIGMu cmVsbmFtZSA9ICdwZ19jb25mbGljdF9sb2dfJyB8fCBzLm9pZAorV0hFUkUgcy5zdWJuYW1lID0g J3JlZ3Jlc3NfY29uZmxpY3RfdGVzdDInOworCistLQorLS0gUFVCTElDQVRJT046IFZlcmlmeSBj b25mbGljdCBsb2cgdGFibGVzIGFyZSBub3QgcHVibGlzaGFibGUKKy0tCistLSBwZ19yZWxhdGlv bl9pc19wdWJsaXNoYWJsZSBzaG91bGQgcmV0dXJuIGZhbHNlIGZvciBjb25mbGljdCBsb2cgdGFi bGVzIHRvCistLSBwcmV2ZW50IHRoZW0gZnJvbSBiZWluZyBhY2NpZGVudGFsbHkgaW5jbHVkZWQg aW4gcHVibGljYXRpb25zCistLQorU0VMRUNUIG4ubnNwbmFtZSwgcGdfcmVsYXRpb25faXNfcHVi bGlzaGFibGUoYy5vaWQpCitGUk9NIHBnX2NsYXNzIGMKK0pPSU4gcGdfbmFtZXNwYWNlIG4gT04g Yy5yZWxuYW1lc3BhY2UgPSBuLm9pZAorSk9JTiBwZ19zdWJzY3JpcHRpb24gcyBPTiBzLnN1YmNv bmZsaWN0bG9ncmVsaWQgPSBjLm9pZAorV0hFUkUgcy5zdWJuYW1lID0gJ3JlZ3Jlc3NfY29uZmxp Y3RfdGVzdDEnOworCistLQorLS0gVGFibGUgUHJvdGVjdGlvbiBhbmQgTGlmZWN5Y2xlIE1hbmFn ZW1lbnQKKy0tCistLSBUaGVzZSB0ZXN0cyB2ZXJpZnkgdGhhdDoKKy0tIE1hbnVhbCBEUk9QIFRB QkxFIGlzIGRpc2FsbG93ZWQKKy0tIERST1AgU1VCU0NSSVBUSU9OIGF1dG9tYXRpY2FsbHkgcmVh cHMgdGhlIHRhYmxlCistLQorLS0gcmUtZW5hYmxlIHRhYmxlIGxvZ2dpbmcgZm9yIHZlcmlmaWNh dGlvbgorQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfY29uZmxpY3RfdGVzdDEgU0VUIChjb25m bGljdF9sb2dfZGVzdGluYXRpb24gPSAndGFibGUnKTsKKworLS0gVGhlIGNvbmZsaWN0IGxvZyB0 YWJsZSBuYW1lIGNvbnRhaW5zIHRoZSBzdWJzY3JpcHRpb24gT0lELCB3aGljaCBpcworLS0gbm9u LWRldGVybWluaXN0aWMuICBDYXB0dXJlIGl0IGludG8gYSBwc3FsIHZhcmlhYmxlIGFuZCByZXBv cnQgb25seSB0aGUKKy0tIFNRTFNUQVRFLCBzbyB0aGUgZXhwZWN0ZWQgb3V0cHV0IGRvZXMgbm90 IGRlcGVuZCBvbiB0aGUgT0lELgorCistLSBmYWlsIC0gZHJvcCB0YWJsZSBub3QgYWxsb3dlZCBk dWUgdG8gaW50ZXJuYWwgZGVwZW5kZW5jeQorU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSBOT1RJ Q0U7CitTRUxFQ1QgJ3BnX2NvbmZsaWN0LnBnX2NvbmZsaWN0X2xvZ18nIHx8IG9pZCBBUyBjbHQx CisgICAgRlJPTSBwZ19zdWJzY3JpcHRpb24gV0hFUkUgc3VibmFtZSA9ICdyZWdyZXNzX2NvbmZs aWN0X3Rlc3QxJyBcZ3NldAorXHNldCBWRVJCT1NJVFkgc3Fsc3RhdGUKK0RST1AgVEFCTEUgOmNs dDE7Citcc2V0IFZFUkJPU0lUWSBkZWZhdWx0CisKKy0tIENMRUFOVVA6IERST1AgU1VCU0NSSVBU SU9OIHJlYXBzIHRoZSB0YWJsZQorQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfY29uZmxpY3Rf dGVzdDEgRElTQUJMRTsKK0FMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX2NvbmZsaWN0X3Rlc3Qx IFNFVCAoc2xvdF9uYW1lID0gTk9ORSk7CisKKy0tIFZlcmlmeSB0aGUgdGFibGUgT0lEIGZvciBy ZWFwIGNoZWNrCitTRUxFQ1QgJ3BnX2NvbmZsaWN0LnBnX2NvbmZsaWN0X2xvZ18nIHx8IG9pZCBB UyBpbnRlcm5hbF90YWJsZW5hbWUgRlJPTSBwZ19zdWJzY3JpcHRpb24gV0hFUkUgc3VibmFtZSA9 ICdyZWdyZXNzX2NvbmZsaWN0X3Rlc3QxJyBcZ3NldAorCitTRVQgY2xpZW50X21pbl9tZXNzYWdl cyA9IFdBUk5JTkc7CitEUk9QIFNVQlNDUklQVElPTiByZWdyZXNzX2NvbmZsaWN0X3Rlc3QxOwor CistLSBzaG91bGQgcmV0dXJuIE5VTEwsIG1lYW5pbmcgdGhlIGNvbmZsaWN0IGxvZyB0YWJsZSB3 YXMgcmVhcGVkIHZpYSBkZXBlbmRlbmN5CitTRUxFQ1QgdG9fcmVnY2xhc3MoOidpbnRlcm5hbF90 YWJsZW5hbWUnKTsKKworLS0KKy0tIEFkZGl0aW9uYWwgTmFtZXNwYWNlIGFuZCBUYWJsZSBQcm90 ZWN0aW9uIFRlc3RzCistLQorCistLSBTZXR1cDogRW5zdXJlIHdlIGhhdmUgYSBzdWJzY3JpcHRp b24gd2l0aCBhIGNvbmZsaWN0IGxvZyB0YWJsZQorQ1JFQVRFIFNVQlNDUklQVElPTiByZWdyZXNz X2NvbmZsaWN0X3Byb3RlY3Rpb25fdGVzdCBDT05ORUNUSU9OICdkYm5hbWU9cmVncmVzc19kb2Vz bm90ZXhpc3QnCisgICAgUFVCTElDQVRJT04gdGVzdHB1YiBXSVRIIChjb25uZWN0ID0gZmFsc2Us IGNvbmZsaWN0X2xvZ19kZXN0aW5hdGlvbiA9ICd0YWJsZScpOworCistLSBUaGUgY29uZmxpY3Qg bG9nIHRhYmxlIGlzIHN5c3RlbS1tYW5hZ2VkOyBpdHMgbmFtZSBjb250YWlucyB0aGUKKy0tIHN1 YnNjcmlwdGlvbiBPSUQsIHdoaWNoIGlzIG5vbi1kZXRlcm1pbmlzdGljLiAgQ2FwdHVyZSB0aGUg bmFtZSBpbnRvIGEgcHNxbAorLS0gdmFyaWFibGUgYW5kIHJlcG9ydCBvbmx5IHRoZSBTUUxTVEFU RSBmb3IgdGhlIG9wZXJhdGlvbnMgdGhhdCBtdXN0IGJlCistLSByZWplY3RlZCwgc28gdGhlIGV4 cGVjdGVkIG91dHB1dCBzdGF5cyBmcmVlIG9mIHRoZSBkeW5hbWljIE9JRC4gIEV2ZXJ5CistLSBz dGF0ZW1lbnQgaW4gdGhlIFZFUkJPU0lUWS1zcWxzdGF0ZSBibG9jayBiZWxvdyBtdXN0IGZhaWwg d2l0aCA0MjgwOQorLS0gKHdyb25nX29iamVjdF90eXBlKSwgZXhjZXB0IGFkZGluZyB0aGUgdGFi bGUgdG8gYSBwdWJsaWNhdGlvbiwgd2hpY2ggZmFpbHMKKy0tIHdpdGggMjIwMjMgKGludmFsaWRf cGFyYW1ldGVyX3ZhbHVlKS4KK1NFTEVDVCAncGdfY29uZmxpY3QuJyB8fCByZWxuYW1lIEFTIGNs dAorICAgIEZST00gcGdfY2xhc3MgYyBKT0lOIHBnX3N1YnNjcmlwdGlvbiBzIE9OIGMucmVsbmFt ZSA9ICdwZ19jb25mbGljdF9sb2dfJyB8fCBzLm9pZAorICAgIFdIRVJFIHMuc3VibmFtZSA9ICdy ZWdyZXNzX2NvbmZsaWN0X3Byb3RlY3Rpb25fdGVzdCcgXGdzZXQKKworLS0gVHJpZ2dlciBmdW5j dGlvbiB1c2VkIGJ5IHRoZSBDUkVBVEUgVFJJR0dFUiBjaGVjayBiZWxvdy4KK0NSRUFURSBGVU5D VElPTiBwdWJsaWMuZHVtbXlfdHJpZ2dlcl9mdW5jKCkgUkVUVVJOUyB0cmlnZ2VyIEFTICQkCitC RUdJTgorICAgIFJFVFVSTiBORVc7CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsOworCitcc2V0 IFZFUkJPU0lUWSBzcWxzdGF0ZQorQUxURVIgVEFCTEUgOmNsdCBBREQgQ09MVU1OIGV4dHJhX2lu Zm8gdGV4dDsKK0lOU0VSVCBJTlRPIDpjbHQgKHJlbG5hbWUpIFZBTFVFUyAoJ215dGVzdCcpOwor VVBEQVRFIDpjbHQgU0VUIHJlbG5hbWUgPSAnbXl0ZXN0JzsKK0NSRUFURSBQT0xJQ1kgcDEgT04g OmNsdCBVU0lORyAodHJ1ZSk7CitDUkVBVEUgU1RBVElTVElDUyBzMSBPTiByZWxuYW1lLCBzY2hl bWFuYW1lIEZST00gOmNsdDsKK0NSRUFURSBUQUJMRSBwdWJsaWMuY29uZmxpY3RfY2hpbGQgKCkg SU5IRVJJVFMgKDpjbHQpOworQUxURVIgVEFCTEUgOmNsdCBSRU5BTUUgQ09MVU1OIHJlbG5hbWUg VE8gbmV3X3JlbG5hbWU7CitDUkVBVEUgVEFCTEUgcHVibGljLmNvbmZsaWN0X2ZrIChyZWxuYW1l IHRleHQgUkVGRVJFTkNFUyA6Y2x0KHJlbG5hbWUpKTsKK0FMVEVSIFRBQkxFIDpjbHQgT1dORVIg VE8gcmVncmVzc19zdWJzY3JpcHRpb25fdXNlcl9kdW1teTsKK0FMVEVSIFRBQkxFIDpjbHQgU0VU IFNDSEVNQSBwdWJsaWM7CitDUkVBVEUgVFJJR0dFUiB0MSBCRUZPUkUgSU5TRVJUIE9OIDpjbHQg Rk9SIEVBQ0ggUk9XIEVYRUNVVEUgRlVOQ1RJT04gcHVibGljLmR1bW15X3RyaWdnZXJfZnVuYygp OworQUxURVIgVFJJR0dFUiBub25fZXhpc3RlbnRfdHJpZ2dlciBPTiA6Y2x0IFJFTkFNRSBUTyBu ZXdfdHJpZ2dlcjsKK0NSRUFURSBSVUxFIHIxIEFTIE9OIElOU0VSVCBUTyA6Y2x0IERPIElOU1RF QUQgTk9USElORzsKK0FMVEVSIFJVTEUgbm9uX2V4aXN0ZW50X3J1bGUgT04gOmNsdCBSRU5BTUUg VE8gbmV3X3J1bGU7CitDUkVBVEUgSU5ERVggaWR4MSBPTiA6Y2x0IChyZWxuYW1lKTsKK1NFTEVD VCAxIEZST00gOmNsdCBGT1IgVVBEQVRFOworQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9y X2NsdCBGT1IgVEFCTEUgOmNsdDsKK1xzZXQgVkVSQk9TSVRZIGRlZmF1bHQKKworLS0gQ2xlYW4g dXAgdGhlIHRyaWdnZXIgZnVuY3Rpb24gdXNlZCBhYm92ZS4KK0RST1AgRlVOQ1RJT04gcHVibGlj LmR1bW15X3RyaWdnZXJfZnVuYygpOworCistLSBUUlVOQ0FURSBhbmQgREVMRVRFIGFyZSBhbGxv d2VkIHNvIHRoYXQgdXNlcnMgY2FuIHBydW5lIHRoZSBjb25mbGljdCBsb2cuCitUUlVOQ0FURSA6 Y2x0OworREVMRVRFIEZST00gOmNsdDsKKworLS0gQ3JlYXRpbmcgYSB0YWJsZSBkaXJlY3RseSBp biB0aGUgcGdfY29uZmxpY3QgbmFtZXNwYWNlIGlzIHJlamVjdGVkIGZvcgorLS0gZXZlcnlvbmUg KHRoZSBzY2hlbWEgaXMgcmVzZXJ2ZWQgZm9yIGNvbmZsaWN0IGxvZyB0YWJsZXMpLgorQ1JFQVRF IFRBQkxFIHBnX2NvbmZsaWN0Lm1hbnVhbF90YWJsZSAoaWQgaW50KTsKKworLS0gTW92aW5nIGEg dXNlciB0YWJsZSBpbnRvIHRoZSBwZ19jb25mbGljdCBuYW1lc3BhY2UgaXMgbGlrZXdpc2UgcmVq ZWN0ZWQuCitDUkVBVEUgVEFCTEUgcHVibGljLnRlc3RfbW92ZSAoaWQgaW50KTsKK0FMVEVSIFRB QkxFIHB1YmxpYy50ZXN0X21vdmUgU0VUIFNDSEVNQSBwZ19jb25mbGljdDsKK0RST1AgVEFCTEUg cHVibGljLnRlc3RfbW92ZTsKKworCitTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9IFdBUk5JTkc7 CisKKy0tIENsZWFuIHVwIHJlbWFpbmluZyB0ZXN0IHN1YnNjcmlwdGlvbgorQUxURVIgU1VCU0NS SVBUSU9OIHJlZ3Jlc3NfY29uZmxpY3RfbG9nX2RlZmF1bHQgRElTQUJMRTsKK0FMVEVSIFNVQlND UklQVElPTiByZWdyZXNzX2NvbmZsaWN0X2xvZ19kZWZhdWx0IFNFVCAoc2xvdF9uYW1lID0gTk9O RSk7CitEUk9QIFNVQlNDUklQVElPTiByZWdyZXNzX2NvbmZsaWN0X2xvZ19kZWZhdWx0OworCisK K0FMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX2NvbmZsaWN0X3Rlc3QyIERJU0FCTEU7CitBTFRF UiBTVUJTQ1JJUFRJT04gcmVncmVzc19jb25mbGljdF90ZXN0MiBTRVQgKHNsb3RfbmFtZSA9IE5P TkUpOworRFJPUCBTVUJTQ1JJUFRJT04gcmVncmVzc19jb25mbGljdF90ZXN0MjsKKworQUxURVIg U1VCU0NSSVBUSU9OIHJlZ3Jlc3NfY29uZmxpY3RfcHJvdGVjdGlvbl90ZXN0IERJU0FCTEU7CitB TFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc19jb25mbGljdF9wcm90ZWN0aW9uX3Rlc3QgU0VUIChz bG90X25hbWUgPSBOT05FKTsKK0RST1AgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfY29uZmxpY3RfcHJv dGVjdGlvbl90ZXN0OworCiBSRVNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT047CiBEUk9QIFJPTEUg cmVncmVzc19zdWJzY3JpcHRpb25fdXNlcjsKIERST1AgUk9MRSByZWdyZXNzX3N1YnNjcmlwdGlv bl91c2VyMjsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzNV9jb25mbGlj dHMucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzVfY29uZmxpY3RzLnBsCmluZGV4IGYy M2ZlNmFmMmE1Li4zOTEwYTQ5YzBhYSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9u L3QvMDM1X2NvbmZsaWN0cy5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzVfY29u ZmxpY3RzLnBsCkBAIC01MCw3ICs1MCw3IEBAICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgK IAkncG9zdGdyZXMnLAogCSJDUkVBVEUgU1VCU0NSSVBUSU9OIHN1Yl90YWIKIAkgQ09OTkVDVElP TiAnJHB1Ymxpc2hlcl9jb25uc3RyIGFwcGxpY2F0aW9uX25hbWU9JGFwcG5hbWUnCi0JIFBVQkxJ Q0FUSU9OIHB1Yl90YWI7Iik7CisJIFBVQkxJQ0FUSU9OIHB1Yl90YWIgV0lUSCAoY29uZmxpY3Rf bG9nX2Rlc3RpbmF0aW9uPWFsbCkiKTsKIAogIyBXYWl0IGZvciBpbml0aWFsIHRhYmxlIHN5bmMg dG8gZmluaXNoCiAkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9zdWJzY3JpcHRpb25fc3luYygk bm9kZV9wdWJsaXNoZXIsICRhcHBuYW1lKTsKQEAgLTY3MCw0ICs2NzAsNjkgQEAgb2soICRub2Rl X0EtPnBvbGxfcXVlcnlfdW50aWwoCiAJKSwKIAkidGhlIHNsb3QgJ3BnX2NvbmZsaWN0X2RldGVj dGlvbicgaGFzIGJlZW4gZHJvcHBlZCBvbiBOb2RlIEEiKTsKIAorIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIworIyBBIGNvbmZsaWN0IGxvZyB0YWJsZSBpcyBzeXN0ZW0tbWFuYWdlZCBhbmQgY2Fubm90 IGJlIGFsdGVyZWQgZGlyZWN0bHksIHNvCisjIG1vdmluZyBpdCB0byBhbm90aGVyIHRhYmxlc3Bh Y2UgbXVzdCBiZSByZWplY3RlZC4KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK215ICRzdWJpZCA9 ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1Qgb2lkIEZS T00gcGdfc3Vic2NyaXB0aW9uIFdIRVJFIHN1Ym5hbWUgPSAnc3ViX3RhYic7Iik7CitteSAkY2x0 ID0gInBnX2NvbmZsaWN0LnBnX2NvbmZsaWN0X2xvZ18kc3ViaWQiOworCisodW5kZWYsIHVuZGVm LCAkc3RkZXJyKSA9ICRub2RlX3N1YnNjcmliZXItPnBzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIg VEFCTEUgJGNsdCBTRVQgVEFCTEVTUEFDRSBwZ19kZWZhdWx0Iik7CitsaWtlKAorCSRzdGRlcnIs CisJcXIvY2Fubm90IGFsdGVyIGNvbmZsaWN0IGxvZyB0YWJsZSAicGdfY29uZmxpY3RfbG9nX1xk KyIvLAorCSJtb3ZpbmcgYSBjb25mbGljdCBsb2cgdGFibGUgd2l0aCBBTFRFUiBUQUJMRSBTRVQg VEFCTEVTUEFDRSBpcyByZWplY3RlZCIpOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIEFM VEVSIFRBQkxFIEFMTCBJTiBUQUJMRVNQQUNFIG11c3Qgc2tpcCBjb25mbGljdCBsb2cgdGFibGVz LCB0aGUgc2FtZSB3YXkgaXQKKyMgc2tpcHMgY2F0YWxvZyBhbmQgVE9BU1QgdGFibGVzLCBpbnN0 ZWFkIG9mIGZhaWxpbmcuICBVc2UgYW4gaXNvbGF0ZWQgZGF0YWJhc2UKKyMgc28gdGhlIGJ1bGsg bW92ZSBvbmx5IHRvdWNoZXMgdGhlIG9iamVjdHMgY3JlYXRlZCBoZXJlLgorIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDUkVB VEUgREFUQUJBU0UgY2x0X3RzX3Rlc3QiKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn Y2x0X3RzX3Rlc3QnLAorCSJDUkVBVEUgU1VCU0NSSVBUSU9OIHN1Yl90c190ZXN0CisJICAgICBD T05ORUNUSU9OICdkYm5hbWU9bm9uZXhpc3RlbnQnCisJICAgICBQVUJMSUNBVElPTiBwdWIKKwkg ICAgIFdJVEggKGNvbm5lY3Q9ZmFsc2UsIGNvbmZsaWN0X2xvZ19kZXN0aW5hdGlvbj0ndGFibGUn KSIpOworCisjIEEgcGxhaW4gdXNlciB0YWJsZSB0aGF0IHNob3VsZCBiZSBtb3ZlZCwgYWxvbmdz aWRlIHRoZSBDTFQgdGhhdCBtdXN0IG5vdCBiZS4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgnY2x0X3RzX3Rlc3QnLCAiQ1JFQVRFIFRBQkxFIHVzZXJfdGJsIChpIGludCkiKTsKKworIyBD cmVhdGUgYSB0YWJsZXNwYWNlIGJhY2tlZCBieSBhIGRpcmVjdG9yeSBpbnNpZGUgdGhlIGRhdGEg ZGlyLgorbXkgJHRzX2RpciA9ICRub2RlX3N1YnNjcmliZXItPmRhdGFfZGlyIC4gJy9iYWNrdXBf c3BhY2UnOworbWtkaXIoJHRzX2RpcikKKyAgb3IgZGllICJjb3VsZCBub3QgY3JlYXRlIHRhYmxl c3BhY2UgZGlyZWN0b3J5ICR0c19kaXI6ICQhIjsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCSJDUkVBVEUgVEFCTEVTUEFDRSBiYWNrdXBfc3BhY2UgTE9DQVRJT04g JyR0c19kaXInIik7CisKKyMgVGhlIGJ1bGsgbW92ZSBzdWNjZWVkczogdGhlIHVzZXIgdGFibGUg aXMgcmVsb2NhdGVkIHdoaWxlIHRoZSBDTFQgaXMgc2tpcHBlZC4KKyRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgnY2x0X3RzX3Rlc3QnLAorCSJBTFRFUiBUQUJMRSBBTEwgSU4gVEFCTEVTUEFD RSBwZ19kZWZhdWx0IFNFVCBUQUJMRVNQQUNFIGJhY2t1cF9zcGFjZSIpOworCitpcyggJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCQknY2x0X3RzX3Rlc3QnLAorCQkiU0VMRUNUIHJlbHRh Ymxlc3BhY2UgPD4gMCBGUk9NIHBnX2NsYXNzIFdIRVJFIHJlbG5hbWUgPSAndXNlcl90YmwnIiks CisJJ3QnLAorCSJBTFRFUiBUQUJMRSBBTEwgSU4gVEFCTEVTUEFDRSBtb3ZlcyBhbiBvcmRpbmFy eSB1c2VyIHRhYmxlIik7CisKK2lzKCAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJCSdj bHRfdHNfdGVzdCcsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19jbGFzcyBjIEpPSU4gcGdf c3Vic2NyaXB0aW9uIHMKKwkJICAgT04gYy5yZWxuYW1lID0gJ3BnX2NvbmZsaWN0X2xvZ18nIHx8 IHMub2lkCisJCSBXSEVSRSBzLnN1Ym5hbWUgPSAnc3ViX3RzX3Rlc3QnIEFORCBjLnJlbHRhYmxl c3BhY2UgPD4gMCIpLAorCScwJywKKwkiQUxURVIgVEFCTEUgQUxMIElOIFRBQkxFU1BBQ0Ugc2tp cHMgdGhlIGNvbmZsaWN0IGxvZyB0YWJsZSIpOworCisjIENsZWFudXAuICBUaGUgc3Vic2NyaXB0 aW9uIGhhcyBubyByZWFsIHB1Ymxpc2hlciBjb25uZWN0aW9uLCBzbyBkZXRhY2ggaXRzCisjIHNs b3QgYmVmb3JlIGRyb3BwaW5nIGl0LgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdjbHRf dHNfdGVzdCcsCisJIkFMVEVSIFNVQlNDUklQVElPTiBzdWJfdHNfdGVzdCBESVNBQkxFIik7Cisk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ2NsdF90c190ZXN0JywKKwkiQUxURVIgU1VCU0NS SVBUSU9OIHN1Yl90c190ZXN0IFNFVCAoc2xvdF9uYW1lID0gTk9ORSkiKTsKKyRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgnY2x0X3RzX3Rlc3QnLCAiRFJPUCBTVUJTQ1JJUFRJT04gc3ViX3Rz X3Rlc3QiKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJPUCBE QVRBQkFTRSBjbHRfdHNfdGVzdCIpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsICJEUk9QIFRBQkxFU1BBQ0UgYmFja3VwX3NwYWNlIik7CisKIGRvbmVfdGVzdGluZygp OwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMvdG9v bHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAppbmRleCAzYTI3MjBmYjVmOS4uM2Q2ZDFjMTYxMzIg MTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90 b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CkBAIC01MTUsNiArNTE1LDggQEAgQ29uZGl0aW9u YWxTdGFjawogQ29uZGl0aW9uYWxTdGFja0RhdGEKIENvbmZpZ0RhdGEKIENvbmZpZ1ZhcmlhYmxl CitDb25mbGljdExvZ0NvbHVtbkRlZgorQ29uZmxpY3RMb2dEZXN0CiBDb25mbGljdFR1cGxlSW5m bwogQ29uZmxpY3RUeXBlCiBDb25uQ2FjaGVFbnRyeQotLSAKMi40OS4wCgo= --000000000000c0aca40655877306--