Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rhJVg-00AnZo-86 for pgsql-hackers@arkaria.postgresql.org; Tue, 05 Mar 2024 01:22:25 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1rhJVd-00C9lB-OY for pgsql-hackers@arkaria.postgresql.org; Tue, 05 Mar 2024 01:22:22 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rhJVc-00C9kx-F5 for pgsql-hackers@lists.postgresql.org; Tue, 05 Mar 2024 01:22:21 +0000 Received: from mail-pj1-x102f.google.com ([2607:f8b0:4864:20::102f]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1rhJVT-002t4F-KG for pgsql-hackers@postgresql.org; Tue, 05 Mar 2024 01:22:19 +0000 Received: by mail-pj1-x102f.google.com with SMTP id 98e67ed59e1d1-299566373d4so3222430a91.1 for ; Mon, 04 Mar 2024 17:22:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1709601732; x=1710206532; darn=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=O+6lkcz1/sZPefgV8oPWalYvXr2pUrYm1WuwYSTnhuc=; b=AwRQcUPrdP8D2GPp6n6jquiUQyTQGtGbLgCj7UdZl2PhQrruPLwiK6tzjeT413djq3 ht9FXuD/7bdWOaQLaCqOl9e/tzJT5aVXoujZpHATVTkZ6P483CriwsxgZutWF46sazUt 7lcGqko96OL9L+Y8uK0tGS3yRAZOO3u0znoyser4HuH6QwSEHT5+62QHf45ZmXHjxzVC cOjHNTADULadgPZeBmkt4i8n2uE8dcm2FAhJZ3abSMry9X/8WMubCJwSMtlFOUaOsqiC hSpiCsoPkWkINV+6G5ViDh2X02yfh6ED89p8Cz5EM7HbKOZVzL+TsDU7s8x8AO6s6ZnR obvw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709601732; x=1710206532; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=O+6lkcz1/sZPefgV8oPWalYvXr2pUrYm1WuwYSTnhuc=; b=UfIAaJP6gmimR3t0v/e6z7fClGpdEWcTtZ6aMEzToePqGciqoWD07kXDo98miuH3eS 7wzoiD+xA/3voext0TzqZg0DDMj2B/0ahrgKu0mDBjNniJb7l8f8B+BE2yJ/TI3tkKh/ rY9TzkhwSrqx4Q+YSmIFY9u+pWyaf0piy5dqGapSdw8SyiNyZaitybPn38U8Q+JOuziI jTD0WpXnHCwKDYLTM7dmlw+paL25OaKxgG2f054Fy8oGnRkjqmwrUtR1oQysfIm6ge85 Nz3xSqqiTKn7pg3PCHJhhPeVS0Z5yCb7qYdY80O/zJB7Kc8WSKn7O3kRWA0dLqNB5gXg OGag== X-Forwarded-Encrypted: i=1; AJvYcCWWLXH6GoqJTQZHBCiZurjvZnb8l7JNCSiXIPBLgRviK3Iklt7FlD71vhJzB44Dht30C9m1D0f5Z3BkhWYRsJYbCCgN/AU7iI6f/mnL X-Gm-Message-State: AOJu0Ywgw2dJ2UeAPq0bo579+QRpc/Vc0VZCgHgVgh7zuvOytVySYL3T nyQ0yK3stLkObp0yTldFwbEyOfzGYza3i2Jzn/JtL7dJA7zJZGqA9GAKMPCkI/EGLdhmpqWD3e1 VjvV/gbvUHgnBYcQQrLI4dmuGhRI= X-Google-Smtp-Source: AGHT+IExUnmr6BXo0ioGmcYj5VrxYEcj1ju/HdTdw/bOkiGI2pGFwn8+MG9vFWFnXRiARbdwTOHCCEUwrR9/CMsO+1c= X-Received: by 2002:a17:90a:d514:b0:299:782e:25b0 with SMTP id t20-20020a17090ad51400b00299782e25b0mr7839566pju.8.1709601731672; Mon, 04 Mar 2024 17:22:11 -0800 (PST) MIME-Version: 1.0 References: <1cee81f3-312f-30e3-0282-c4df7ee72f93@xs4all.nl> <202403041503.5momp6knupgo@alvherre.pgsql> In-Reply-To: <202403041503.5momp6knupgo@alvherre.pgsql> From: Amit Langote Date: Tue, 5 Mar 2024 10:21:54 +0900 Message-ID: Subject: Re: remaining sql/json patches To: Alvaro Herrera Cc: Erik Rijkers , jian he , Andres Freund , Andrew Dunstan , PostgreSQL-development Content-Type: multipart/mixed; boundary="000000000000eca3d70612dfab27" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000eca3d70612dfab27 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, Mar 5, 2024 at 12:03=E2=80=AFAM Alvaro Herrera wrote: > On 2024-Mar-04, Erik Rijkers wrote: > > > In my hands (applying with patch), the patches, esp. 0001, do not apply= . > > But I see the cfbot builds without problem so maybe just ignore these F= AILED > > lines. Better get them merged - so I can test there... > > It's because of dbbca2cf299b. It should apply cleanly if you do "git > checkout dbbca2cf299b^" first ... That commit is so recent that > evidently the cfbot hasn't had a chance to try this patch again since it > went in, which is why it's still green. Thanks for the heads up. Attaching rebased patches. --=20 Thanks, Amit Langote --000000000000eca3d70612dfab27 Content-Type: application/octet-stream; name="v41-0002-Show-function-name-in-TableFuncScan.patch" Content-Disposition: attachment; filename="v41-0002-Show-function-name-in-TableFuncScan.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ltdopg5p1 RnJvbSAzMDA1NGJkZGNlMGFiN2RjZDA4ZjkzNjZlYjNkMzg5MTAxNTQ0MzA2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbHZhcm8gSGVycmVyYSA8YWx2aGVycmVAYWx2aC5uby1pcC5v cmc+CkRhdGU6IFR1ZSwgMjMgSmFuIDIwMjQgMTI6MTE6NDYgKzA5MDAKU3ViamVjdDogW1BBVENI IHY0MSAyLzNdIFNob3cgZnVuY3Rpb24gbmFtZSBpbiBUYWJsZUZ1bmNTY2FuCgpQcmV2aW91c2x5 IHdlIHdlcmUgb25seSBzaG93aW5nIHRoZSB1c2VyLXNwZWNpZmllZCBhbGlhcywgYnV0IHRoaXMg aXMKY2xlYXJseSBub3QgdGhlIGNvZGUncyBpbnRlbnQuCgpEaXNjdXNzaW9uOiBodHRwczovL3Bv c3Rnci5lcy9tLzIwMjQwMTE4MTcxMS5xeGp4cG5sM29obnclNDBhbHZoZXJyZS5wZ3NxbAotLS0K IHNyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYyAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5k L25vZGVzL291dGZ1bmNzLmMgICAgICAgIHwgIDEgKwogc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1 bmNzLmMgICAgICAgfCAgMSArCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfcmVsYXRpb24uYyB8 ICA0ICsrLS0KIHNyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCAgICAgIHwgIDEgKwogc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC94bWwub3V0ICAgfCAxNiArKysrKysrKy0tLS0tLS0tCiBz cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3htbF8xLm91dCB8IDE2ICsrKysrKysrLS0tLS0tLS0K IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQveG1sXzIub3V0IHwgMTYgKysrKysrKystLS0tLS0t LQogOCBmaWxlcyBjaGFuZ2VkLCAzMCBpbnNlcnRpb25zKCspLCAyNyBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9leHBsYWluLmMKaW5kZXggNzg3NTRiYzZiYS4uOGIyOWIyNGQ1NSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1h bmRzL2V4cGxhaW4uYwpAQCAtMzk5MSw3ICszOTkxLDcgQEAgRXhwbGFpblRhcmdldFJlbChQbGFu ICpwbGFuLCBJbmRleCBydGksIEV4cGxhaW5TdGF0ZSAqZXMpCiAJCQlicmVhazsKIAkJY2FzZSBU X1RhYmxlRnVuY1NjYW46CiAJCQlBc3NlcnQocnRlLT5ydGVraW5kID09IFJURV9UQUJMRUZVTkMp OwotCQkJb2JqZWN0bmFtZSA9ICJ4bWx0YWJsZSI7CisJCQlvYmplY3RuYW1lID0gcnRlLT50YWJs ZWZ1bmNfbmFtZTsKIAkJCW9iamVjdHRhZyA9ICJUYWJsZSBGdW5jdGlvbiBOYW1lIjsKIAkJCWJy ZWFrOwogCQljYXNlIFRfVmFsdWVzU2NhbjoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVz L291dGZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jCmluZGV4IDJjMzBiYmEy MTIuLjhmZDRiMDYwMTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL291dGZ1bmNzLmMK KysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3MuYwpAQCAtNTMxLDYgKzUzMSw3IEBAIF9v dXRSYW5nZVRibEVudHJ5KFN0cmluZ0luZm8gc3RyLCBjb25zdCBSYW5nZVRibEVudHJ5ICpub2Rl KQogCQkJYnJlYWs7CiAJCWNhc2UgUlRFX1RBQkxFRlVOQzoKIAkJCVdSSVRFX05PREVfRklFTEQo dGFibGVmdW5jKTsKKwkJCVdSSVRFX1NUUklOR19GSUVMRCh0YWJsZWZ1bmNfbmFtZSk7CiAJCQli cmVhazsKIAkJY2FzZSBSVEVfVkFMVUVTOgogCQkJV1JJVEVfTk9ERV9GSUVMRCh2YWx1ZXNfbGlz dHMpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMgYi9zcmMvYmFj a2VuZC9ub2Rlcy9yZWFkZnVuY3MuYwppbmRleCBiMWUyZjJiNDQwLi40NmViMTc2ZDQ2IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9yZWFkZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9u b2Rlcy9yZWFkZnVuY3MuYwpAQCAtMzg1LDYgKzM4NSw3IEBAIF9yZWFkUmFuZ2VUYmxFbnRyeSh2 b2lkKQogCQkJYnJlYWs7CiAJCWNhc2UgUlRFX1RBQkxFRlVOQzoKIAkJCVJFQURfTk9ERV9GSUVM RCh0YWJsZWZ1bmMpOworCQkJUkVBRF9TVFJJTkdfRklFTEQodGFibGVmdW5jX25hbWUpOwogCQkJ LyogVGhlIFJURSBtdXN0IGhhdmUgYSBjb3B5IG9mIHRoZSBjb2x1bW4gdHlwZSBpbmZvLCBpZiBh bnkgKi8KIAkJCWlmIChsb2NhbF9ub2RlLT50YWJsZWZ1bmMpCiAJCQl7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfcmVsYXRpb24uYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9w YXJzZV9yZWxhdGlvbi5jCmluZGV4IDM0YTBlYzU5MDEuLjY1ZTU0YWJkZDEgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9yZWxhdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL3Bh cnNlci9wYXJzZV9yZWxhdGlvbi5jCkBAIC0yMDczLDE3ICsyMDczLDE3IEBAIGFkZFJhbmdlVGFi bGVFbnRyeUZvclRhYmxlRnVuYyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJQXNzZXJ0KGxpc3RfbGVu Z3RoKHRmLT5jb2x0eXBtb2RzKSA9PSBsaXN0X2xlbmd0aCh0Zi0+Y29sbmFtZXMpKTsKIAlBc3Nl cnQobGlzdF9sZW5ndGgodGYtPmNvbGNvbGxhdGlvbnMpID09IGxpc3RfbGVuZ3RoKHRmLT5jb2xu YW1lcykpOwogCi0JcmVmbmFtZSA9IGFsaWFzID8gYWxpYXMtPmFsaWFzbmFtZSA6IHBzdHJkdXAo InhtbHRhYmxlIik7Ci0KIAlydGUtPnJ0ZWtpbmQgPSBSVEVfVEFCTEVGVU5DOwogCXJ0ZS0+cmVs aWQgPSBJbnZhbGlkT2lkOwogCXJ0ZS0+c3VicXVlcnkgPSBOVUxMOwogCXJ0ZS0+dGFibGVmdW5j ID0gdGY7CisJcnRlLT50YWJsZWZ1bmNfbmFtZSA9IHBzdHJkdXAoIlhNTFRBQkxFIik7CiAJcnRl LT5jb2x0eXBlcyA9IHRmLT5jb2x0eXBlczsKIAlydGUtPmNvbHR5cG1vZHMgPSB0Zi0+Y29sdHlw bW9kczsKIAlydGUtPmNvbGNvbGxhdGlvbnMgPSB0Zi0+Y29sY29sbGF0aW9uczsKIAlydGUtPmFs aWFzID0gYWxpYXM7CiAKKwlyZWZuYW1lID0gYWxpYXMgPyBhbGlhcy0+YWxpYXNuYW1lIDogcHN0 cmR1cCgieG1sdGFibGUiKTsKIAllcmVmID0gYWxpYXMgPyBjb3B5T2JqZWN0KGFsaWFzKSA6IG1h a2VBbGlhcyhyZWZuYW1lLCBOSUwpOwogCW51bWFsaWFzZXMgPSBsaXN0X2xlbmd0aChlcmVmLT5j b2xuYW1lcyk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCBi L3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAppbmRleCA3Y2VlM2JlYzQ5Li45YmE2ZWM2 YTdlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIvc3Jj L2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCkBAIC0xMTUyLDYgKzExNTIsNyBAQCB0eXBlZGVm IHN0cnVjdCBSYW5nZVRibEVudHJ5CiAJICogRmllbGRzIHZhbGlkIGZvciBhIFRhYmxlRnVuYyBS VEUgKGVsc2UgTlVMTCk6CiAJICovCiAJVGFibGVGdW5jICAqdGFibGVmdW5jOworCWNoYXIJICAg KnRhYmxlZnVuY19uYW1lOwogCiAJLyoKIAkgKiBGaWVsZHMgdmFsaWQgZm9yIGEgdmFsdWVzIFJU RSAoZWxzZSBOSUwpOgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC94bWwu b3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC94bWwub3V0CmluZGV4IDY1MDBjZmY4ODUu LjcwMzM1Yzc0ZGYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQveG1sLm91 dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3htbC5vdXQKQEAgLTEzNDMsMTEgKzEz NDMsMTEgQEAgQ1JFQVRFIE9SIFJFUExBQ0UgVklFVyBwdWJsaWMueG1sdGFibGV2aWV3MSBBUwog ICAgICAgICAgICBGUk9NIHhtbGRhdGEpIHgsCiAgICAgTEFURVJBTCBYTUxUQUJMRSgoJy9ST1dT L1JPVyc6OnRleHQpIFBBU1NJTkcgKHguZGF0YSkgQ09MVU1OUyBpZCBpbnRlZ2VyIFBBVEggKCdA aWQnOjp0ZXh0KSwgX2lkIEZPUiBPUkRJTkFMSVRZLCBjb3VudHJ5X25hbWUgdGV4dCBQQVRIICgn Q09VTlRSWV9OQU1FL3RleHQoKSc6OnRleHQpIE5PVCBOVUxMLCBjb3VudHJ5X2lkIHRleHQgUEFU SCAoJ0NPVU5UUllfSUQnOjp0ZXh0KSwgcmVnaW9uX2lkIGludGVnZXIgUEFUSCAoJ1JFR0lPTl9J RCc6OnRleHQpLCBzaXplIGRvdWJsZSBwcmVjaXNpb24gUEFUSCAoJ1NJWkUnOjp0ZXh0KSwgdW5p dCB0ZXh0IFBBVEggKCdTSVpFL0B1bml0Jzo6dGV4dCksIHByZW1pZXJfbmFtZSB0ZXh0IERFRkFV TFQgKCdub3Qgc3BlY2lmaWVkJzo6dGV4dCkgUEFUSCAoJ1BSRU1JRVJfTkFNRSc6OnRleHQpKQog RVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIHhtbHRhYmxldmlldzE7Ci0gICAgICAg ICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAg ICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KICBOZXN0ZWQgTG9vcAogICAgLT4gIFNlcSBTY2FuIG9uIHhtbGRhdGEK LSAgIC0+ICBUYWJsZSBGdW5jdGlvbiBTY2FuIG9uICJ4bWx0YWJsZSIKKyAgIC0+ICBUYWJsZSBG dW5jdGlvbiBTY2FuIG9uICJYTUxUQUJMRSIgInhtbHRhYmxlIgogKDMgcm93cykKIAogRVhQTEFJ TiAoQ09TVFMgT0ZGLCBWRVJCT1NFKSBTRUxFQ1QgKiBGUk9NIHhtbHRhYmxldmlldzE7CkBAIC0x MzU3LDcgKzEzNTcsNyBAQCBFWFBMQUlOIChDT1NUUyBPRkYsIFZFUkJPU0UpIFNFTEVDVCAqIEZS T00geG1sdGFibGV2aWV3MTsKICAgIE91dHB1dDogInhtbHRhYmxlIi5pZCwgInhtbHRhYmxlIi5f aWQsICJ4bWx0YWJsZSIuY291bnRyeV9uYW1lLCAieG1sdGFibGUiLmNvdW50cnlfaWQsICJ4bWx0 YWJsZSIucmVnaW9uX2lkLCAieG1sdGFibGUiLnNpemUsICJ4bWx0YWJsZSIudW5pdCwgInhtbHRh YmxlIi5wcmVtaWVyX25hbWUKICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMueG1sZGF0YQogICAg ICAgICAgT3V0cHV0OiB4bWxkYXRhLmRhdGEKLSAgIC0+ICBUYWJsZSBGdW5jdGlvbiBTY2FuIG9u ICJ4bWx0YWJsZSIKKyAgIC0+ICBUYWJsZSBGdW5jdGlvbiBTY2FuIG9uICJYTUxUQUJMRSIgInht bHRhYmxlIgogICAgICAgICAgT3V0cHV0OiAieG1sdGFibGUiLmlkLCAieG1sdGFibGUiLl9pZCwg InhtbHRhYmxlIi5jb3VudHJ5X25hbWUsICJ4bWx0YWJsZSIuY291bnRyeV9pZCwgInhtbHRhYmxl Ii5yZWdpb25faWQsICJ4bWx0YWJsZSIuc2l6ZSwgInhtbHRhYmxlIi51bml0LCAieG1sdGFibGUi LnByZW1pZXJfbmFtZQogICAgICAgICAgVGFibGUgRnVuY3Rpb24gQ2FsbDogWE1MVEFCTEUoKCcv Uk9XUy9ST1cnOjp0ZXh0KSBQQVNTSU5HICh4bWxkYXRhLmRhdGEpIENPTFVNTlMgaWQgaW50ZWdl ciBQQVRIICgnQGlkJzo6dGV4dCksIF9pZCBGT1IgT1JESU5BTElUWSwgY291bnRyeV9uYW1lIHRl eHQgUEFUSCAoJ0NPVU5UUllfTkFNRS90ZXh0KCknOjp0ZXh0KSBOT1QgTlVMTCwgY291bnRyeV9p ZCB0ZXh0IFBBVEggKCdDT1VOVFJZX0lEJzo6dGV4dCksIHJlZ2lvbl9pZCBpbnRlZ2VyIFBBVEgg KCdSRUdJT05fSUQnOjp0ZXh0KSwgc2l6ZSBkb3VibGUgcHJlY2lzaW9uIFBBVEggKCdTSVpFJzo6 dGV4dCksIHVuaXQgdGV4dCBQQVRIICgnU0laRS9AdW5pdCc6OnRleHQpLCBwcmVtaWVyX25hbWUg dGV4dCBERUZBVUxUICgnbm90IHNwZWNpZmllZCc6OnRleHQpIFBBVEggKCdQUkVNSUVSX05BTUUn Ojp0ZXh0KSkKICg3IHJvd3MpCkBAIC0xNTM2LDcgKzE1MzYsNyBAQCBTRUxFQ1QgIHhtbHRhYmxl LioKICAgIE91dHB1dDogInhtbHRhYmxlIi5pZCwgInhtbHRhYmxlIi5faWQsICJ4bWx0YWJsZSIu Y291bnRyeV9uYW1lLCAieG1sdGFibGUiLmNvdW50cnlfaWQsICJ4bWx0YWJsZSIucmVnaW9uX2lk LCAieG1sdGFibGUiLnNpemUsICJ4bWx0YWJsZSIudW5pdCwgInhtbHRhYmxlIi5wcmVtaWVyX25h bWUKICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMueG1sZGF0YQogICAgICAgICAgT3V0cHV0OiB4 bWxkYXRhLmRhdGEKLSAgIC0+ICBUYWJsZSBGdW5jdGlvbiBTY2FuIG9uICJ4bWx0YWJsZSIKKyAg IC0+ICBUYWJsZSBGdW5jdGlvbiBTY2FuIG9uICJYTUxUQUJMRSIgInhtbHRhYmxlIgogICAgICAg ICAgT3V0cHV0OiAieG1sdGFibGUiLmlkLCAieG1sdGFibGUiLl9pZCwgInhtbHRhYmxlIi5jb3Vu dHJ5X25hbWUsICJ4bWx0YWJsZSIuY291bnRyeV9pZCwgInhtbHRhYmxlIi5yZWdpb25faWQsICJ4 bWx0YWJsZSIuc2l6ZSwgInhtbHRhYmxlIi51bml0LCAieG1sdGFibGUiLnByZW1pZXJfbmFtZQog ICAgICAgICAgVGFibGUgRnVuY3Rpb24gQ2FsbDogWE1MVEFCTEUoKCcvUk9XUy9ST1cnOjp0ZXh0 KSBQQVNTSU5HICh4bWxkYXRhLmRhdGEpIENPTFVNTlMgaWQgaW50ZWdlciBQQVRIICgnQGlkJzo6 dGV4dCksIF9pZCBGT1IgT1JESU5BTElUWSwgY291bnRyeV9uYW1lIHRleHQgUEFUSCAoJ0NPVU5U UllfTkFNRSc6OnRleHQpIE5PVCBOVUxMLCBjb3VudHJ5X2lkIHRleHQgUEFUSCAoJ0NPVU5UUllf SUQnOjp0ZXh0KSwgcmVnaW9uX2lkIGludGVnZXIgUEFUSCAoJ1JFR0lPTl9JRCc6OnRleHQpLCBz aXplIGRvdWJsZSBwcmVjaXNpb24gUEFUSCAoJ1NJWkUnOjp0ZXh0KSwgdW5pdCB0ZXh0IFBBVEgg KCdTSVpFL0B1bml0Jzo6dGV4dCksIHByZW1pZXJfbmFtZSB0ZXh0IERFRkFVTFQgKCdub3Qgc3Bl Y2lmaWVkJzo6dGV4dCkgUEFUSCAoJ1BSRU1JRVJfTkFNRSc6OnRleHQpKQogKDcgcm93cykKQEAg LTE1NTYsNyArMTU1Niw3IEBAIFNFTEVDVCBmLiogRlJPTSB4bWxkYXRhLCBMQVRFUkFMIHhtbHRh YmxlKCcvUk9XUy9ST1dbQ09VTlRSWV9OQU1FPSJKYXBhbiIgb3IgQ09VCiAgICBPdXRwdXQ6IGYu IkNPVU5UUllfTkFNRSIsIGYuIlJFR0lPTl9JRCIKICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMu eG1sZGF0YQogICAgICAgICAgT3V0cHV0OiB4bWxkYXRhLmRhdGEKLSAgIC0+ICBUYWJsZSBGdW5j dGlvbiBTY2FuIG9uICJ4bWx0YWJsZSIgZgorICAgLT4gIFRhYmxlIEZ1bmN0aW9uIFNjYW4gb24g IlhNTFRBQkxFIiBmCiAgICAgICAgICBPdXRwdXQ6IGYuIkNPVU5UUllfTkFNRSIsIGYuIlJFR0lP Tl9JRCIKICAgICAgICAgIFRhYmxlIEZ1bmN0aW9uIENhbGw6IFhNTFRBQkxFKCgnL1JPV1MvUk9X W0NPVU5UUllfTkFNRT0iSmFwYW4iIG9yIENPVU5UUllfTkFNRT0iSW5kaWEiXSc6OnRleHQpIFBB U1NJTkcgKHhtbGRhdGEuZGF0YSkgQ09MVU1OUyAiQ09VTlRSWV9OQU1FIiB0ZXh0LCAiUkVHSU9O X0lEIiBpbnRlZ2VyKQogICAgICAgICAgRmlsdGVyOiAoZi4iQ09VTlRSWV9OQU1FIiA9ICdKYXBh bic6OnRleHQpCkBAIC0xNTkxLDcgKzE1OTEsNyBAQCBTRUxFQ1QgZi4qIEZST00geG1sZGF0YSwg TEFURVJBTCB4bWx0YWJsZSgnL1JPV1MvUk9XW0NPVU5UUllfTkFNRT0iSmFwYW4iIG9yIENPVQog ICAgICAgICAgICAiUGFyZW50IFJlbGF0aW9uc2hpcCI6ICJJbm5lciIsICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKwogICAgICAgICAgICAiUGFyYWxsZWwgQXdhcmUiOiBmYWxz ZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKwogICAgICAgICAg ICAiQXN5bmMgQ2FwYWJsZSI6IGZhbHNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKwotICAgICAgICAgICAiVGFibGUgRnVuY3Rpb24gTmFtZSI6ICJ4bWx0YWJs ZSIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAiVGFibGUg RnVuY3Rpb24gTmFtZSI6ICJYTUxUQUJMRSIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKwogICAgICAgICAgICAiQWxpYXMiOiAiZiIsICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKwogICAgICAgICAgICAiT3V0cHV0IjogWyJmLlwi Q09VTlRSWV9OQU1FXCIiLCAiZi5cIlJFR0lPTl9JRFwiIl0sICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKwogICAg ICAgICAgICAiVGFibGUgRnVuY3Rpb24gQ2FsbCI6ICJYTUxUQUJMRSgoJy9ST1dTL1JPV1tDT1VO VFJZX05BTUU9XCJKYXBhblwiIG9yIENPVU5UUllfTkFNRT1cIkluZGlhXCJdJzo6dGV4dCkgUEFT U0lORyAoeG1sZGF0YS5kYXRhKSBDT0xVTU5TIFwiQ09VTlRSWV9OQU1FXCIgdGV4dCwgXCJSRUdJ T05fSURcIiBpbnRlZ2VyKSIsKwpAQCAtMTcwMCw3ICsxNzAwLDcgQEAgU0VMRUNUICB4bWx0YWJs ZS4qCiAgICBPdXRwdXQ6ICJ4bWx0YWJsZSIuaWQsICJ4bWx0YWJsZSIuX2lkLCAieG1sdGFibGUi LmNvdW50cnlfbmFtZSwgInhtbHRhYmxlIi5jb3VudHJ5X2lkLCAieG1sdGFibGUiLnJlZ2lvbl9p ZCwgInhtbHRhYmxlIi5zaXplLCAieG1sdGFibGUiLnVuaXQsICJ4bWx0YWJsZSIucHJlbWllcl9u YW1lCiAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLnhtbGRhdGEKICAgICAgICAgIE91dHB1dDog eG1sZGF0YS5kYXRhCi0gICAtPiAgVGFibGUgRnVuY3Rpb24gU2NhbiBvbiAieG1sdGFibGUiCisg ICAtPiAgVGFibGUgRnVuY3Rpb24gU2NhbiBvbiAiWE1MVEFCTEUiICJ4bWx0YWJsZSIKICAgICAg ICAgIE91dHB1dDogInhtbHRhYmxlIi5pZCwgInhtbHRhYmxlIi5faWQsICJ4bWx0YWJsZSIuY291 bnRyeV9uYW1lLCAieG1sdGFibGUiLmNvdW50cnlfaWQsICJ4bWx0YWJsZSIucmVnaW9uX2lkLCAi eG1sdGFibGUiLnNpemUsICJ4bWx0YWJsZSIudW5pdCwgInhtbHRhYmxlIi5wcmVtaWVyX25hbWUK ICAgICAgICAgIFRhYmxlIEZ1bmN0aW9uIENhbGw6IFhNTFRBQkxFKCgnL1JPV1MvUk9XJzo6dGV4 dCkgUEFTU0lORyAoeG1sZGF0YS5kYXRhKSBDT0xVTU5TIGlkIGludGVnZXIgUEFUSCAoJ0BpZCc6 OnRleHQpLCBfaWQgRk9SIE9SRElOQUxJVFksIGNvdW50cnlfbmFtZSB0ZXh0IFBBVEggKCdDT1VO VFJZX05BTUUnOjp0ZXh0KSBOT1QgTlVMTCwgY291bnRyeV9pZCB0ZXh0IFBBVEggKCdDT1VOVFJZ X0lEJzo6dGV4dCksIHJlZ2lvbl9pZCBpbnRlZ2VyIFBBVEggKCdSRUdJT05fSUQnOjp0ZXh0KSwg c2l6ZSBkb3VibGUgcHJlY2lzaW9uIFBBVEggKCdTSVpFJzo6dGV4dCksIHVuaXQgdGV4dCBQQVRI ICgnU0laRS9AdW5pdCc6OnRleHQpLCBwcmVtaWVyX25hbWUgdGV4dCBERUZBVUxUICgnbm90IHNw ZWNpZmllZCc6OnRleHQpIFBBVEggKCdQUkVNSUVSX05BTUUnOjp0ZXh0KSkKICAgICAgICAgIEZp bHRlcjogKCJ4bWx0YWJsZSIucmVnaW9uX2lkID0gMikKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQveG1sXzEub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC94bWxf MS5vdXQKaW5kZXggOTMyM2I4NGFlMi4uMDgxMjdkYjcyMCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC94bWxfMS5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC94bWxfMS5vdXQKQEAgLTEwMDQsMTEgKzEwMDQsMTEgQEAgQ1JFQVRFIE9SIFJFUExBQ0UgVklF VyBwdWJsaWMueG1sdGFibGV2aWV3MSBBUwogICAgICAgICAgICBGUk9NIHhtbGRhdGEpIHgsCiAg ICAgTEFURVJBTCBYTUxUQUJMRSgoJy9ST1dTL1JPVyc6OnRleHQpIFBBU1NJTkcgKHguZGF0YSkg Q09MVU1OUyBpZCBpbnRlZ2VyIFBBVEggKCdAaWQnOjp0ZXh0KSwgX2lkIEZPUiBPUkRJTkFMSVRZ LCBjb3VudHJ5X25hbWUgdGV4dCBQQVRIICgnQ09VTlRSWV9OQU1FL3RleHQoKSc6OnRleHQpIE5P VCBOVUxMLCBjb3VudHJ5X2lkIHRleHQgUEFUSCAoJ0NPVU5UUllfSUQnOjp0ZXh0KSwgcmVnaW9u X2lkIGludGVnZXIgUEFUSCAoJ1JFR0lPTl9JRCc6OnRleHQpLCBzaXplIGRvdWJsZSBwcmVjaXNp b24gUEFUSCAoJ1NJWkUnOjp0ZXh0KSwgdW5pdCB0ZXh0IFBBVEggKCdTSVpFL0B1bml0Jzo6dGV4 dCksIHByZW1pZXJfbmFtZSB0ZXh0IERFRkFVTFQgKCdub3Qgc3BlY2lmaWVkJzo6dGV4dCkgUEFU SCAoJ1BSRU1JRVJfTkFNRSc6OnRleHQpKQogRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBG Uk9NIHhtbHRhYmxldmlldzE7Ci0gICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAg ICAgIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAg ICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBOZXN0ZWQgTG9vcAog ICAgLT4gIFNlcSBTY2FuIG9uIHhtbGRhdGEKLSAgIC0+ICBUYWJsZSBGdW5jdGlvbiBTY2FuIG9u ICJ4bWx0YWJsZSIKKyAgIC0+ICBUYWJsZSBGdW5jdGlvbiBTY2FuIG9uICJYTUxUQUJMRSIgInht bHRhYmxlIgogKDMgcm93cykKIAogRVhQTEFJTiAoQ09TVFMgT0ZGLCBWRVJCT1NFKSBTRUxFQ1Qg KiBGUk9NIHhtbHRhYmxldmlldzE7CkBAIC0xMDE4LDcgKzEwMTgsNyBAQCBFWFBMQUlOIChDT1NU UyBPRkYsIFZFUkJPU0UpIFNFTEVDVCAqIEZST00geG1sdGFibGV2aWV3MTsKICAgIE91dHB1dDog InhtbHRhYmxlIi5pZCwgInhtbHRhYmxlIi5faWQsICJ4bWx0YWJsZSIuY291bnRyeV9uYW1lLCAi eG1sdGFibGUiLmNvdW50cnlfaWQsICJ4bWx0YWJsZSIucmVnaW9uX2lkLCAieG1sdGFibGUiLnNp emUsICJ4bWx0YWJsZSIudW5pdCwgInhtbHRhYmxlIi5wcmVtaWVyX25hbWUKICAgIC0+ICBTZXEg U2NhbiBvbiBwdWJsaWMueG1sZGF0YQogICAgICAgICAgT3V0cHV0OiB4bWxkYXRhLmRhdGEKLSAg IC0+ICBUYWJsZSBGdW5jdGlvbiBTY2FuIG9uICJ4bWx0YWJsZSIKKyAgIC0+ICBUYWJsZSBGdW5j dGlvbiBTY2FuIG9uICJYTUxUQUJMRSIgInhtbHRhYmxlIgogICAgICAgICAgT3V0cHV0OiAieG1s dGFibGUiLmlkLCAieG1sdGFibGUiLl9pZCwgInhtbHRhYmxlIi5jb3VudHJ5X25hbWUsICJ4bWx0 YWJsZSIuY291bnRyeV9pZCwgInhtbHRhYmxlIi5yZWdpb25faWQsICJ4bWx0YWJsZSIuc2l6ZSwg InhtbHRhYmxlIi51bml0LCAieG1sdGFibGUiLnByZW1pZXJfbmFtZQogICAgICAgICAgVGFibGUg RnVuY3Rpb24gQ2FsbDogWE1MVEFCTEUoKCcvUk9XUy9ST1cnOjp0ZXh0KSBQQVNTSU5HICh4bWxk YXRhLmRhdGEpIENPTFVNTlMgaWQgaW50ZWdlciBQQVRIICgnQGlkJzo6dGV4dCksIF9pZCBGT1Ig T1JESU5BTElUWSwgY291bnRyeV9uYW1lIHRleHQgUEFUSCAoJ0NPVU5UUllfTkFNRS90ZXh0KCkn Ojp0ZXh0KSBOT1QgTlVMTCwgY291bnRyeV9pZCB0ZXh0IFBBVEggKCdDT1VOVFJZX0lEJzo6dGV4 dCksIHJlZ2lvbl9pZCBpbnRlZ2VyIFBBVEggKCdSRUdJT05fSUQnOjp0ZXh0KSwgc2l6ZSBkb3Vi bGUgcHJlY2lzaW9uIFBBVEggKCdTSVpFJzo6dGV4dCksIHVuaXQgdGV4dCBQQVRIICgnU0laRS9A dW5pdCc6OnRleHQpLCBwcmVtaWVyX25hbWUgdGV4dCBERUZBVUxUICgnbm90IHNwZWNpZmllZCc6 OnRleHQpIFBBVEggKCdQUkVNSUVSX05BTUUnOjp0ZXh0KSkKICg3IHJvd3MpCkBAIC0xMTYyLDcg KzExNjIsNyBAQCBTRUxFQ1QgIHhtbHRhYmxlLioKICAgIE91dHB1dDogInhtbHRhYmxlIi5pZCwg InhtbHRhYmxlIi5faWQsICJ4bWx0YWJsZSIuY291bnRyeV9uYW1lLCAieG1sdGFibGUiLmNvdW50 cnlfaWQsICJ4bWx0YWJsZSIucmVnaW9uX2lkLCAieG1sdGFibGUiLnNpemUsICJ4bWx0YWJsZSIu dW5pdCwgInhtbHRhYmxlIi5wcmVtaWVyX25hbWUKICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMu eG1sZGF0YQogICAgICAgICAgT3V0cHV0OiB4bWxkYXRhLmRhdGEKLSAgIC0+ICBUYWJsZSBGdW5j dGlvbiBTY2FuIG9uICJ4bWx0YWJsZSIKKyAgIC0+ICBUYWJsZSBGdW5jdGlvbiBTY2FuIG9uICJY TUxUQUJMRSIgInhtbHRhYmxlIgogICAgICAgICAgT3V0cHV0OiAieG1sdGFibGUiLmlkLCAieG1s dGFibGUiLl9pZCwgInhtbHRhYmxlIi5jb3VudHJ5X25hbWUsICJ4bWx0YWJsZSIuY291bnRyeV9p ZCwgInhtbHRhYmxlIi5yZWdpb25faWQsICJ4bWx0YWJsZSIuc2l6ZSwgInhtbHRhYmxlIi51bml0 LCAieG1sdGFibGUiLnByZW1pZXJfbmFtZQogICAgICAgICAgVGFibGUgRnVuY3Rpb24gQ2FsbDog WE1MVEFCTEUoKCcvUk9XUy9ST1cnOjp0ZXh0KSBQQVNTSU5HICh4bWxkYXRhLmRhdGEpIENPTFVN TlMgaWQgaW50ZWdlciBQQVRIICgnQGlkJzo6dGV4dCksIF9pZCBGT1IgT1JESU5BTElUWSwgY291 bnRyeV9uYW1lIHRleHQgUEFUSCAoJ0NPVU5UUllfTkFNRSc6OnRleHQpIE5PVCBOVUxMLCBjb3Vu dHJ5X2lkIHRleHQgUEFUSCAoJ0NPVU5UUllfSUQnOjp0ZXh0KSwgcmVnaW9uX2lkIGludGVnZXIg UEFUSCAoJ1JFR0lPTl9JRCc6OnRleHQpLCBzaXplIGRvdWJsZSBwcmVjaXNpb24gUEFUSCAoJ1NJ WkUnOjp0ZXh0KSwgdW5pdCB0ZXh0IFBBVEggKCdTSVpFL0B1bml0Jzo6dGV4dCksIHByZW1pZXJf bmFtZSB0ZXh0IERFRkFVTFQgKCdub3Qgc3BlY2lmaWVkJzo6dGV4dCkgUEFUSCAoJ1BSRU1JRVJf TkFNRSc6OnRleHQpKQogKDcgcm93cykKQEAgLTExODEsNyArMTE4MSw3IEBAIFNFTEVDVCBmLiog RlJPTSB4bWxkYXRhLCBMQVRFUkFMIHhtbHRhYmxlKCcvUk9XUy9ST1dbQ09VTlRSWV9OQU1FPSJK YXBhbiIgb3IgQ09VCiAgICBPdXRwdXQ6IGYuIkNPVU5UUllfTkFNRSIsIGYuIlJFR0lPTl9JRCIK ICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMueG1sZGF0YQogICAgICAgICAgT3V0cHV0OiB4bWxk YXRhLmRhdGEKLSAgIC0+ICBUYWJsZSBGdW5jdGlvbiBTY2FuIG9uICJ4bWx0YWJsZSIgZgorICAg LT4gIFRhYmxlIEZ1bmN0aW9uIFNjYW4gb24gIlhNTFRBQkxFIiBmCiAgICAgICAgICBPdXRwdXQ6 IGYuIkNPVU5UUllfTkFNRSIsIGYuIlJFR0lPTl9JRCIKICAgICAgICAgIFRhYmxlIEZ1bmN0aW9u IENhbGw6IFhNTFRBQkxFKCgnL1JPV1MvUk9XW0NPVU5UUllfTkFNRT0iSmFwYW4iIG9yIENPVU5U UllfTkFNRT0iSW5kaWEiXSc6OnRleHQpIFBBU1NJTkcgKHhtbGRhdGEuZGF0YSkgQ09MVU1OUyAi Q09VTlRSWV9OQU1FIiB0ZXh0LCAiUkVHSU9OX0lEIiBpbnRlZ2VyKQogICAgICAgICAgRmlsdGVy OiAoZi4iQ09VTlRSWV9OQU1FIiA9ICdKYXBhbic6OnRleHQpCkBAIC0xMjE2LDcgKzEyMTYsNyBA QCBTRUxFQ1QgZi4qIEZST00geG1sZGF0YSwgTEFURVJBTCB4bWx0YWJsZSgnL1JPV1MvUk9XW0NP VU5UUllfTkFNRT0iSmFwYW4iIG9yIENPVQogICAgICAgICAgICAiUGFyZW50IFJlbGF0aW9uc2hp cCI6ICJJbm5lciIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKwogICAgICAg ICAgICAiUGFyYWxsZWwgQXdhcmUiOiBmYWxzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKwogICAgICAgICAgICAiQXN5bmMgQ2FwYWJsZSI6IGZhbHNlLCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKwotICAgICAgICAgICAiVGFi bGUgRnVuY3Rpb24gTmFtZSI6ICJ4bWx0YWJsZSIsICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKworICAgICAgICAgICAiVGFibGUgRnVuY3Rpb24gTmFtZSI6ICJYTUxUQUJMRSIsICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKwogICAgICAgICAgICAiQWxpYXMiOiAiZiIs ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKwog ICAgICAgICAgICAiT3V0cHV0IjogWyJmLlwiQ09VTlRSWV9OQU1FXCIiLCAiZi5cIlJFR0lPTl9J RFwiIl0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKwogICAgICAgICAgICAiVGFibGUgRnVuY3Rpb24gQ2FsbCI6 ICJYTUxUQUJMRSgoJy9ST1dTL1JPV1tDT1VOVFJZX05BTUU9XCJKYXBhblwiIG9yIENPVU5UUllf TkFNRT1cIkluZGlhXCJdJzo6dGV4dCkgUEFTU0lORyAoeG1sZGF0YS5kYXRhKSBDT0xVTU5TIFwi Q09VTlRSWV9OQU1FXCIgdGV4dCwgXCJSRUdJT05fSURcIiBpbnRlZ2VyKSIsKwpAQCAtMTMxOSw3 ICsxMzE5LDcgQEAgU0VMRUNUICB4bWx0YWJsZS4qCiAgICBPdXRwdXQ6ICJ4bWx0YWJsZSIuaWQs ICJ4bWx0YWJsZSIuX2lkLCAieG1sdGFibGUiLmNvdW50cnlfbmFtZSwgInhtbHRhYmxlIi5jb3Vu dHJ5X2lkLCAieG1sdGFibGUiLnJlZ2lvbl9pZCwgInhtbHRhYmxlIi5zaXplLCAieG1sdGFibGUi LnVuaXQsICJ4bWx0YWJsZSIucHJlbWllcl9uYW1lCiAgICAtPiAgU2VxIFNjYW4gb24gcHVibGlj LnhtbGRhdGEKICAgICAgICAgIE91dHB1dDogeG1sZGF0YS5kYXRhCi0gICAtPiAgVGFibGUgRnVu Y3Rpb24gU2NhbiBvbiAieG1sdGFibGUiCisgICAtPiAgVGFibGUgRnVuY3Rpb24gU2NhbiBvbiAi WE1MVEFCTEUiICJ4bWx0YWJsZSIKICAgICAgICAgIE91dHB1dDogInhtbHRhYmxlIi5pZCwgInht bHRhYmxlIi5faWQsICJ4bWx0YWJsZSIuY291bnRyeV9uYW1lLCAieG1sdGFibGUiLmNvdW50cnlf aWQsICJ4bWx0YWJsZSIucmVnaW9uX2lkLCAieG1sdGFibGUiLnNpemUsICJ4bWx0YWJsZSIudW5p dCwgInhtbHRhYmxlIi5wcmVtaWVyX25hbWUKICAgICAgICAgIFRhYmxlIEZ1bmN0aW9uIENhbGw6 IFhNTFRBQkxFKCgnL1JPV1MvUk9XJzo6dGV4dCkgUEFTU0lORyAoeG1sZGF0YS5kYXRhKSBDT0xV TU5TIGlkIGludGVnZXIgUEFUSCAoJ0BpZCc6OnRleHQpLCBfaWQgRk9SIE9SRElOQUxJVFksIGNv dW50cnlfbmFtZSB0ZXh0IFBBVEggKCdDT1VOVFJZX05BTUUnOjp0ZXh0KSBOT1QgTlVMTCwgY291 bnRyeV9pZCB0ZXh0IFBBVEggKCdDT1VOVFJZX0lEJzo6dGV4dCksIHJlZ2lvbl9pZCBpbnRlZ2Vy IFBBVEggKCdSRUdJT05fSUQnOjp0ZXh0KSwgc2l6ZSBkb3VibGUgcHJlY2lzaW9uIFBBVEggKCdT SVpFJzo6dGV4dCksIHVuaXQgdGV4dCBQQVRIICgnU0laRS9AdW5pdCc6OnRleHQpLCBwcmVtaWVy X25hbWUgdGV4dCBERUZBVUxUICgnbm90IHNwZWNpZmllZCc6OnRleHQpIFBBVEggKCdQUkVNSUVS X05BTUUnOjp0ZXh0KSkKICAgICAgICAgIEZpbHRlcjogKCJ4bWx0YWJsZSIucmVnaW9uX2lkID0g MikKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQveG1sXzIub3V0IGIvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC94bWxfMi5vdXQKaW5kZXggZTFkMTY1YzZjOS4uYzcyMGEw NWY1YSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC94bWxfMi5vdXQKKysr IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC94bWxfMi5vdXQKQEAgLTEzMjMsMTEgKzEzMjMs MTEgQEAgQ1JFQVRFIE9SIFJFUExBQ0UgVklFVyBwdWJsaWMueG1sdGFibGV2aWV3MSBBUwogICAg ICAgICAgICBGUk9NIHhtbGRhdGEpIHgsCiAgICAgTEFURVJBTCBYTUxUQUJMRSgoJy9ST1dTL1JP Vyc6OnRleHQpIFBBU1NJTkcgKHguZGF0YSkgQ09MVU1OUyBpZCBpbnRlZ2VyIFBBVEggKCdAaWQn Ojp0ZXh0KSwgX2lkIEZPUiBPUkRJTkFMSVRZLCBjb3VudHJ5X25hbWUgdGV4dCBQQVRIICgnQ09V TlRSWV9OQU1FL3RleHQoKSc6OnRleHQpIE5PVCBOVUxMLCBjb3VudHJ5X2lkIHRleHQgUEFUSCAo J0NPVU5UUllfSUQnOjp0ZXh0KSwgcmVnaW9uX2lkIGludGVnZXIgUEFUSCAoJ1JFR0lPTl9JRCc6 OnRleHQpLCBzaXplIGRvdWJsZSBwcmVjaXNpb24gUEFUSCAoJ1NJWkUnOjp0ZXh0KSwgdW5pdCB0 ZXh0IFBBVEggKCdTSVpFL0B1bml0Jzo6dGV4dCksIHByZW1pZXJfbmFtZSB0ZXh0IERFRkFVTFQg KCdub3Qgc3BlY2lmaWVkJzo6dGV4dCkgUEFUSCAoJ1BSRU1JRVJfTkFNRSc6OnRleHQpKQogRVhQ TEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIHhtbHRhYmxldmlldzE7Ci0gICAgICAgICAg ICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KICBOZXN0ZWQgTG9vcAogICAgLT4gIFNlcSBTY2FuIG9uIHhtbGRhdGEKLSAg IC0+ICBUYWJsZSBGdW5jdGlvbiBTY2FuIG9uICJ4bWx0YWJsZSIKKyAgIC0+ICBUYWJsZSBGdW5j dGlvbiBTY2FuIG9uICJYTUxUQUJMRSIgInhtbHRhYmxlIgogKDMgcm93cykKIAogRVhQTEFJTiAo Q09TVFMgT0ZGLCBWRVJCT1NFKSBTRUxFQ1QgKiBGUk9NIHhtbHRhYmxldmlldzE7CkBAIC0xMzM3 LDcgKzEzMzcsNyBAQCBFWFBMQUlOIChDT1NUUyBPRkYsIFZFUkJPU0UpIFNFTEVDVCAqIEZST00g eG1sdGFibGV2aWV3MTsKICAgIE91dHB1dDogInhtbHRhYmxlIi5pZCwgInhtbHRhYmxlIi5faWQs ICJ4bWx0YWJsZSIuY291bnRyeV9uYW1lLCAieG1sdGFibGUiLmNvdW50cnlfaWQsICJ4bWx0YWJs ZSIucmVnaW9uX2lkLCAieG1sdGFibGUiLnNpemUsICJ4bWx0YWJsZSIudW5pdCwgInhtbHRhYmxl Ii5wcmVtaWVyX25hbWUKICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMueG1sZGF0YQogICAgICAg ICAgT3V0cHV0OiB4bWxkYXRhLmRhdGEKLSAgIC0+ICBUYWJsZSBGdW5jdGlvbiBTY2FuIG9uICJ4 bWx0YWJsZSIKKyAgIC0+ICBUYWJsZSBGdW5jdGlvbiBTY2FuIG9uICJYTUxUQUJMRSIgInhtbHRh YmxlIgogICAgICAgICAgT3V0cHV0OiAieG1sdGFibGUiLmlkLCAieG1sdGFibGUiLl9pZCwgInht bHRhYmxlIi5jb3VudHJ5X25hbWUsICJ4bWx0YWJsZSIuY291bnRyeV9pZCwgInhtbHRhYmxlIi5y ZWdpb25faWQsICJ4bWx0YWJsZSIuc2l6ZSwgInhtbHRhYmxlIi51bml0LCAieG1sdGFibGUiLnBy ZW1pZXJfbmFtZQogICAgICAgICAgVGFibGUgRnVuY3Rpb24gQ2FsbDogWE1MVEFCTEUoKCcvUk9X Uy9ST1cnOjp0ZXh0KSBQQVNTSU5HICh4bWxkYXRhLmRhdGEpIENPTFVNTlMgaWQgaW50ZWdlciBQ QVRIICgnQGlkJzo6dGV4dCksIF9pZCBGT1IgT1JESU5BTElUWSwgY291bnRyeV9uYW1lIHRleHQg UEFUSCAoJ0NPVU5UUllfTkFNRS90ZXh0KCknOjp0ZXh0KSBOT1QgTlVMTCwgY291bnRyeV9pZCB0 ZXh0IFBBVEggKCdDT1VOVFJZX0lEJzo6dGV4dCksIHJlZ2lvbl9pZCBpbnRlZ2VyIFBBVEggKCdS RUdJT05fSUQnOjp0ZXh0KSwgc2l6ZSBkb3VibGUgcHJlY2lzaW9uIFBBVEggKCdTSVpFJzo6dGV4 dCksIHVuaXQgdGV4dCBQQVRIICgnU0laRS9AdW5pdCc6OnRleHQpLCBwcmVtaWVyX25hbWUgdGV4 dCBERUZBVUxUICgnbm90IHNwZWNpZmllZCc6OnRleHQpIFBBVEggKCdQUkVNSUVSX05BTUUnOjp0 ZXh0KSkKICg3IHJvd3MpCkBAIC0xNTE2LDcgKzE1MTYsNyBAQCBTRUxFQ1QgIHhtbHRhYmxlLioK ICAgIE91dHB1dDogInhtbHRhYmxlIi5pZCwgInhtbHRhYmxlIi5faWQsICJ4bWx0YWJsZSIuY291 bnRyeV9uYW1lLCAieG1sdGFibGUiLmNvdW50cnlfaWQsICJ4bWx0YWJsZSIucmVnaW9uX2lkLCAi eG1sdGFibGUiLnNpemUsICJ4bWx0YWJsZSIudW5pdCwgInhtbHRhYmxlIi5wcmVtaWVyX25hbWUK ICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMueG1sZGF0YQogICAgICAgICAgT3V0cHV0OiB4bWxk YXRhLmRhdGEKLSAgIC0+ICBUYWJsZSBGdW5jdGlvbiBTY2FuIG9uICJ4bWx0YWJsZSIKKyAgIC0+ ICBUYWJsZSBGdW5jdGlvbiBTY2FuIG9uICJYTUxUQUJMRSIgInhtbHRhYmxlIgogICAgICAgICAg T3V0cHV0OiAieG1sdGFibGUiLmlkLCAieG1sdGFibGUiLl9pZCwgInhtbHRhYmxlIi5jb3VudHJ5 X25hbWUsICJ4bWx0YWJsZSIuY291bnRyeV9pZCwgInhtbHRhYmxlIi5yZWdpb25faWQsICJ4bWx0 YWJsZSIuc2l6ZSwgInhtbHRhYmxlIi51bml0LCAieG1sdGFibGUiLnByZW1pZXJfbmFtZQogICAg ICAgICAgVGFibGUgRnVuY3Rpb24gQ2FsbDogWE1MVEFCTEUoKCcvUk9XUy9ST1cnOjp0ZXh0KSBQ QVNTSU5HICh4bWxkYXRhLmRhdGEpIENPTFVNTlMgaWQgaW50ZWdlciBQQVRIICgnQGlkJzo6dGV4 dCksIF9pZCBGT1IgT1JESU5BTElUWSwgY291bnRyeV9uYW1lIHRleHQgUEFUSCAoJ0NPVU5UUllf TkFNRSc6OnRleHQpIE5PVCBOVUxMLCBjb3VudHJ5X2lkIHRleHQgUEFUSCAoJ0NPVU5UUllfSUQn Ojp0ZXh0KSwgcmVnaW9uX2lkIGludGVnZXIgUEFUSCAoJ1JFR0lPTl9JRCc6OnRleHQpLCBzaXpl IGRvdWJsZSBwcmVjaXNpb24gUEFUSCAoJ1NJWkUnOjp0ZXh0KSwgdW5pdCB0ZXh0IFBBVEggKCdT SVpFL0B1bml0Jzo6dGV4dCksIHByZW1pZXJfbmFtZSB0ZXh0IERFRkFVTFQgKCdub3Qgc3BlY2lm aWVkJzo6dGV4dCkgUEFUSCAoJ1BSRU1JRVJfTkFNRSc6OnRleHQpKQogKDcgcm93cykKQEAgLTE1 MzYsNyArMTUzNiw3IEBAIFNFTEVDVCBmLiogRlJPTSB4bWxkYXRhLCBMQVRFUkFMIHhtbHRhYmxl KCcvUk9XUy9ST1dbQ09VTlRSWV9OQU1FPSJKYXBhbiIgb3IgQ09VCiAgICBPdXRwdXQ6IGYuIkNP VU5UUllfTkFNRSIsIGYuIlJFR0lPTl9JRCIKICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMueG1s ZGF0YQogICAgICAgICAgT3V0cHV0OiB4bWxkYXRhLmRhdGEKLSAgIC0+ICBUYWJsZSBGdW5jdGlv biBTY2FuIG9uICJ4bWx0YWJsZSIgZgorICAgLT4gIFRhYmxlIEZ1bmN0aW9uIFNjYW4gb24gIlhN TFRBQkxFIiBmCiAgICAgICAgICBPdXRwdXQ6IGYuIkNPVU5UUllfTkFNRSIsIGYuIlJFR0lPTl9J RCIKICAgICAgICAgIFRhYmxlIEZ1bmN0aW9uIENhbGw6IFhNTFRBQkxFKCgnL1JPV1MvUk9XW0NP VU5UUllfTkFNRT0iSmFwYW4iIG9yIENPVU5UUllfTkFNRT0iSW5kaWEiXSc6OnRleHQpIFBBU1NJ TkcgKHhtbGRhdGEuZGF0YSkgQ09MVU1OUyAiQ09VTlRSWV9OQU1FIiB0ZXh0LCAiUkVHSU9OX0lE IiBpbnRlZ2VyKQogICAgICAgICAgRmlsdGVyOiAoZi4iQ09VTlRSWV9OQU1FIiA9ICdKYXBhbic6 OnRleHQpCkBAIC0xNTcxLDcgKzE1NzEsNyBAQCBTRUxFQ1QgZi4qIEZST00geG1sZGF0YSwgTEFU RVJBTCB4bWx0YWJsZSgnL1JPV1MvUk9XW0NPVU5UUllfTkFNRT0iSmFwYW4iIG9yIENPVQogICAg ICAgICAgICAiUGFyZW50IFJlbGF0aW9uc2hpcCI6ICJJbm5lciIsICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKwogICAgICAgICAgICAiUGFyYWxsZWwgQXdhcmUiOiBmYWxzZSwg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKwogICAgICAgICAgICAi QXN5bmMgQ2FwYWJsZSI6IGZhbHNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKwotICAgICAgICAgICAiVGFibGUgRnVuY3Rpb24gTmFtZSI6ICJ4bWx0YWJsZSIs ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAiVGFibGUgRnVu Y3Rpb24gTmFtZSI6ICJYTUxUQUJMRSIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KwogICAgICAgICAgICAiQWxpYXMiOiAiZiIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKwogICAgICAgICAgICAiT3V0cHV0IjogWyJmLlwiQ09V TlRSWV9OQU1FXCIiLCAiZi5cIlJFR0lPTl9JRFwiIl0sICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKwogICAgICAg ICAgICAiVGFibGUgRnVuY3Rpb24gQ2FsbCI6ICJYTUxUQUJMRSgoJy9ST1dTL1JPV1tDT1VOVFJZ X05BTUU9XCJKYXBhblwiIG9yIENPVU5UUllfTkFNRT1cIkluZGlhXCJdJzo6dGV4dCkgUEFTU0lO RyAoeG1sZGF0YS5kYXRhKSBDT0xVTU5TIFwiQ09VTlRSWV9OQU1FXCIgdGV4dCwgXCJSRUdJT05f SURcIiBpbnRlZ2VyKSIsKwpAQCAtMTY4MCw3ICsxNjgwLDcgQEAgU0VMRUNUICB4bWx0YWJsZS4q CiAgICBPdXRwdXQ6ICJ4bWx0YWJsZSIuaWQsICJ4bWx0YWJsZSIuX2lkLCAieG1sdGFibGUiLmNv dW50cnlfbmFtZSwgInhtbHRhYmxlIi5jb3VudHJ5X2lkLCAieG1sdGFibGUiLnJlZ2lvbl9pZCwg InhtbHRhYmxlIi5zaXplLCAieG1sdGFibGUiLnVuaXQsICJ4bWx0YWJsZSIucHJlbWllcl9uYW1l CiAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLnhtbGRhdGEKICAgICAgICAgIE91dHB1dDogeG1s ZGF0YS5kYXRhCi0gICAtPiAgVGFibGUgRnVuY3Rpb24gU2NhbiBvbiAieG1sdGFibGUiCisgICAt PiAgVGFibGUgRnVuY3Rpb24gU2NhbiBvbiAiWE1MVEFCTEUiICJ4bWx0YWJsZSIKICAgICAgICAg IE91dHB1dDogInhtbHRhYmxlIi5pZCwgInhtbHRhYmxlIi5faWQsICJ4bWx0YWJsZSIuY291bnRy eV9uYW1lLCAieG1sdGFibGUiLmNvdW50cnlfaWQsICJ4bWx0YWJsZSIucmVnaW9uX2lkLCAieG1s dGFibGUiLnNpemUsICJ4bWx0YWJsZSIudW5pdCwgInhtbHRhYmxlIi5wcmVtaWVyX25hbWUKICAg ICAgICAgIFRhYmxlIEZ1bmN0aW9uIENhbGw6IFhNTFRBQkxFKCgnL1JPV1MvUk9XJzo6dGV4dCkg UEFTU0lORyAoeG1sZGF0YS5kYXRhKSBDT0xVTU5TIGlkIGludGVnZXIgUEFUSCAoJ0BpZCc6OnRl eHQpLCBfaWQgRk9SIE9SRElOQUxJVFksIGNvdW50cnlfbmFtZSB0ZXh0IFBBVEggKCdDT1VOVFJZ X05BTUUnOjp0ZXh0KSBOT1QgTlVMTCwgY291bnRyeV9pZCB0ZXh0IFBBVEggKCdDT1VOVFJZX0lE Jzo6dGV4dCksIHJlZ2lvbl9pZCBpbnRlZ2VyIFBBVEggKCdSRUdJT05fSUQnOjp0ZXh0KSwgc2l6 ZSBkb3VibGUgcHJlY2lzaW9uIFBBVEggKCdTSVpFJzo6dGV4dCksIHVuaXQgdGV4dCBQQVRIICgn U0laRS9AdW5pdCc6OnRleHQpLCBwcmVtaWVyX25hbWUgdGV4dCBERUZBVUxUICgnbm90IHNwZWNp ZmllZCc6OnRleHQpIFBBVEggKCdQUkVNSUVSX05BTUUnOjp0ZXh0KSkKICAgICAgICAgIEZpbHRl cjogKCJ4bWx0YWJsZSIucmVnaW9uX2lkID0gMikKLS0gCjIuNDMuMAoK --000000000000eca3d70612dfab27 Content-Type: application/octet-stream; name="v41-0001-Add-SQL-JSON-query-functions.patch" Content-Disposition: attachment; filename="v41-0001-Add-SQL-JSON-query-functions.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ltdopg5l0 RnJvbSAzNDFiZDZkYTk0NTNiMmRlMjNmNjdjYzBhYmFjZTFmMjdiNTcxZGYwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IE1vbiwgNCBNYXIgMjAyNCAxODowNDo1MCArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjQx IDEvM10gQWRkIFNRTC9KU09OIHF1ZXJ5IGZ1bmN0aW9ucwpNSU1FLVZlcnNpb246IDEuMApDb250 ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKQ29udGVudC1UcmFuc2Zlci1FbmNv ZGluZzogOGJpdAoKVGhpcyBpbnRyb2R1Y2VzIHRoZSBmb2xsb3dpbmcgU1FML0pTT04gZnVuY3Rp b25zIGZvciBxdWVyeWluZyBKU09OCmRhdGEgdXNpbmcganNvbnBhdGggZXhwcmVzc2lvbnM6CgpK U09OX0VYSVNUUygpCkpTT05fUVVFUlkoKQpKU09OX1ZBTFVFKCkKCkpTT05fRVhJU1RTKCkgdGVz dHMgaWYgdGhlIGpzb25wYXRoIGV4cHJlc3Npb24gYXBwbGllZCB0byBhIGpzb25iCnZhbHVlIHlp ZWxkcyBhbnkgdmFsdWVzLgoKSlNPTl9WQUxVRSgpIGFwcGxpZXMgYSBqc29ucGF0aCBleHByZXNz aW9uIHRvIGEganNvbmIgdmFsdWUgdG8gcmV0dXJuCmEgc2luZ2xlIHNjYWxhciB2YWx1ZSwgcHJv ZHVjaW5nIGFuIGVycm9yIGlmIGl0IG11bHRpcGxlIHZhbHVlcyBhcmUKbWF0Y2hlZC4KCkpTT05f UVVFUlkoKSBhcHBsaWVzIGEganNvbnBhdGggZXhwcmVzc2lvbiB0byBhIGpzb25iIHZhbHVlIHRv CnJldHVybiBhIGpzb24gb2JqZWN0IG9yIGFycmF5LiAgVGhlcmUgYXJlIHZhcmlvdXMgb3B0aW9u cyB0byBjb250cm9sCndoZXRoZXIgbXVsdGktdmFsdWUgcmVzdWx0IHVzZXMgYXJyYXkgd3JhcHBl cnMgYW5kIHdoZXRoZXIgdGhlCnNpbmdsZXRvbiBzY2FsYXIgc3RyaW5ncyBhcmUgcXVvdGVkIG9y IG5vdC4KCkJvdGggSlNPTl9WQUxVRSgpIGFuZCBKU09OX1FVRVJZKCkgZnVuY3Rpb25zIGhhdmUg b3B0aW9ucyBmb3IKaGFuZGxpbmcgRU1QVFkgYW5kIEVSUk9SIGNvbmRpdGlvbnMsIHdoaWNoIGNh biBiZSB1c2VkIHRvIHNwZWNpZnkKdGhlIGJlaGF2aW9yIHdoZW4gbm8gdmFsdWVzIGFyZSBtYXRj aGVkIGFuZCB3aGVuIGFuIGVycm9yIG9jY3VycwpkdXJpbmcgZXZhbHVhdGlvbiwgcmVzcGVjdGl2 ZWx5LgoKQWxsIG9mIHRoZXNlIGZ1bmN0aW9ucyBvbmx5IG9wZXJhdGUgb24ganNvbmIgdmFsdWVz LiBUaGUgd29ya2Fyb3VuZApmb3Igbm93IGlzIHRvIGNhc3QgdGhlIGFyZ3VtZW50IHRvIGpzb25i LgoKQXV0aG9yOiBOaWtpdGEgR2x1a2hvdiA8bi5nbHVob3ZAcG9zdGdyZXNwcm8ucnU+CkF1dGhv cjogVGVvZG9yIFNpZ2FldiA8dGVvZG9yQHNpZ2Fldi5ydT4KQXV0aG9yOiBPbGVnIEJhcnR1bm92 IDxvYmFydHVub3ZAZ21haWwuY29tPgpBdXRob3I6IEFsZXhhbmRlciBLb3JvdGtvdiA8YWVrb3Jv dGtvdkBnbWFpbC5jb20+CkF1dGhvcjogQW5kcmV3IER1bnN0YW4gPGFuZHJld0BkdW5zbGFuZS5u ZXQ+CkF1dGhvcjogQW1pdCBMYW5nb3RlIDxhbWl0bGFuZ290ZTA5QGdtYWlsLmNvbT4KQXV0aG9y OiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRyYXV0Lm9yZz4KQXV0aG9yOiBKaWFuIEhl IDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+CgpSZXZpZXdlcnMgaGF2ZSBpbmNsdWRlZCAo aW4gbm8gcGFydGljdWxhciBvcmRlcikgQW5kcmVzIEZyZXVuZCwgQWxleGFuZGVyCktvcm90a292 LCBQYXZlbCBTdGVodWxlLCBBbmRyZXcgQWxzdXAsIEVyaWsgUmlqa2VycywgWmlob25nIFl1LApI aW1hbnNodSBVcGFkaHlheWEsIERhbmllbCBHdXN0YWZzc29uLCBKdXN0aW4gUHJ5emJ5LCDDgWx2 YXJvIEhlcnJlcmEsCkppYW4gSGUsIEFudG9uIEEuIE1lbG5pa292LCBOaWtpdGEgTWFsYWtob3Ys IFBldGVyIEVpc2VudHJhdXQKCkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vY2QwYmI5 MzUtMDE1OC03OGE3LTA4YjUtOTA0ODg2ZGVhYzRiQHBvc3RncmVzcHJvLnJ1CkRpc2N1c3Npb246 IGh0dHBzOi8vcG9zdGdyLmVzL20vMjAyMjA2MTYyMzMxMzAucnBhcml2YWZpcHQ2ZG9qM0BhbGFw My5hbmFyYXplbC5kZQpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL2FiZDliODNiLWFh NjYtZjIzMC0zZDZkLTczNDgxN2YwOTk1ZCU0MHBvc3RncmVzcWwub3JnCkRpc2N1c3Npb246IGh0 dHBzOi8vcG9zdGdyLmVzL20vQ0ErSGl3cUhST3BmOWU2NDREOEJScVl2YUFQbWdCWlZ1cC14S01E UGstbmQ0RXBnekh3QG1haWwuZ21haWwuY29tCkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVz L20vQ0ErSGl3cUU0WFRkZmIxblc9T2pveV90UVNSaFl0LXFfa2I2aTVkNHhjS3lyTEMxTmJnQG1h aWwuZ21haWwuY29tCi0tLQogZG9jL3NyYy9zZ21sL2Z1bmMuc2dtbCAgICAgICAgICAgICAgICAg ICAgICAgIHwgIDIxOSArKysKIHNyYy9iYWNrZW5kL2NhdGFsb2cvc3FsX2ZlYXR1cmVzLnR4dCAg ICAgICAgICB8ICAgMTIgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHByLmMgICAgICAg ICAgICAgICB8ICAzNDkgKysrKysKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHBySW50ZXJw LmMgICAgICAgICB8ICAzODMgKysrKy0KIHNyYy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1qaXRfZXhw ci5jICAgICAgICAgICB8ICAxNDQgKysKIHNyYy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1qaXRfdHlw ZXMuYyAgICAgICAgICB8ICAgIDMgKwogc3JjL2JhY2tlbmQvbm9kZXMvbWFrZWZ1bmNzLmMgICAg ICAgICAgICAgICAgIHwgICAxOCArCiBzcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYyAgICAg ICAgICAgICAgICAgfCAgMjQ4ICsrKy0KIHNyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2Nvc3Rz aXplLmMgICAgICAgICB8ICAgIDMgKy0KIHNyYy9iYWNrZW5kL29wdGltaXplci91dGlsL2NsYXVz ZXMuYyAgICAgICAgICB8ICAgMjAgKwogc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSAgICAgICAg ICAgICAgICAgICAgIHwgIDE4OCArKy0KIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMg ICAgICAgICAgICAgICB8ICA2NjkgKysrKysrKystCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vf dGFyZ2V0LmMgICAgICAgICAgICAgfCAgIDE1ICsKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9mb3Jt YXR0aW5nLmMgICAgICAgICAgICB8ICAgNDQgKwogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25i LmMgICAgICAgICAgICAgICAgIHwgICAzMSArCiBzcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmZ1 bmNzLmMgICAgICAgICAgICAgfCAgIDYyICstCiBzcmMvYmFja2VuZC91dGlscy9hZHQvanNvbnBh dGguYyAgICAgICAgICAgICAgfCAgMjgzICsrKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29u cGF0aF9leGVjLmMgICAgICAgICB8ICAzMjIgKysrKysKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9y dWxldXRpbHMuYyAgICAgICAgICAgICB8ICAxMzYgKysKIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4 ZWNFeHByLmggICAgICAgICAgICAgICB8ICAgMjQgKy0KIHNyYy9pbmNsdWRlL25vZGVzL2V4ZWNu b2Rlcy5oICAgICAgICAgICAgICAgICB8ICAgODcgKysKIHNyYy9pbmNsdWRlL25vZGVzL21ha2Vm dW5jcy5oICAgICAgICAgICAgICAgICB8ICAgIDIgKwogc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vu b2Rlcy5oICAgICAgICAgICAgICAgIHwgICA0NyArCiBzcmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9k ZXMuaCAgICAgICAgICAgICAgICAgfCAgMTgwICsrKwogc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlz dC5oICAgICAgICAgICAgICAgICAgIHwgICAxMSArCiBzcmMvaW5jbHVkZS91dGlscy9mb3JtYXR0 aW5nLmggICAgICAgICAgICAgICAgfCAgICAxICsKIHNyYy9pbmNsdWRlL3V0aWxzL2pzb25iLmgg ICAgICAgICAgICAgICAgICAgICB8ICAgIDEgKwogc3JjL2luY2x1ZGUvdXRpbHMvanNvbmZ1bmNz LmggICAgICAgICAgICAgICAgIHwgICAgNyArCiBzcmMvaW5jbHVkZS91dGlscy9qc29ucGF0aC5o ICAgICAgICAgICAgICAgICAgfCAgIDI0ICsKIHNyYy9pbnRlcmZhY2VzL2VjcGcvcHJlcHJvYy9l Y3BnLnRyYWlsZXIgICAgICB8ICAgMjggKwogLi4uL3JlZ3Jlc3MvZXhwZWN0ZWQvc3FsanNvbl9x dWVyeWZ1bmNzLm91dCAgIHwgMTI2MSArKysrKysrKysrKysrKysrKwogc3JjL3Rlc3QvcmVncmVz cy9wYXJhbGxlbF9zY2hlZHVsZSAgICAgICAgICAgIHwgICAgMiArLQogc3JjL3Rlc3QvcmVncmVz cy9zcWwvc3FsanNvbl9xdWVyeWZ1bmNzLnNxbCAgIHwgIDQyNyArKysrKysKIHNyYy90b29scy9w Z2luZGVudC90eXBlZGVmcy5saXN0ICAgICAgICAgICAgICB8ICAgMTggKwogMzQgZmlsZXMgY2hh bmdlZCwgNTIyOSBpbnNlcnRpb25zKCspLCA0MCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEw MDY0NCBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3NxbGpzb25fcXVlcnlmdW5jcy5vdXQKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNzL3NxbC9zcWxqc29uX3F1ZXJ5ZnVuY3Mu c3FsCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2Z1bmMuc2dtbCBiL2RvYy9zcmMvc2dtbC9m dW5jLnNnbWwKaW5kZXggZTVmYTgyYzE2MS4uMTQ0NzEzNTQxMCAxMDA2NDQKLS0tIGEvZG9jL3Ny Yy9zZ21sL2Z1bmMuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvZnVuYy5zZ21sCkBAIC0xNTQ1OCw2 ICsxNTQ1OCwxMSBAQCB0YWJsZTItbWFwcGluZwogICAgICAgdGhlIFNRTC9KU09OIHBhdGggbGFu Z3VhZ2UKICAgICAgPC9wYXJhPgogICAgIDwvbGlzdGl0ZW0+CisgICAgPGxpc3RpdGVtPgorICAg ICA8cGFyYT4KKyAgICAgIHRoZSBTUUwvSlNPTiBxdWVyeSBmdW5jdGlvbnMKKyAgICAgPC9wYXJh PgorICAgIDwvbGlzdGl0ZW0+CiAgICA8L2l0ZW1pemVkbGlzdD4KICAgPC9wYXJhPgogCkBAIC0x ODU4Niw2ICsxODU5MSwyMjAgQEAgJC4qID8gKEAgbGlrZV9yZWdleCAiXlxcZCskIikKICAgICA8 L3BhcmE+CiAgICA8L3NlY3QzPgogICA8L3NlY3QyPgorCisgICA8c2VjdDIgaWQ9InNxbGpzb24t cXVlcnktZnVuY3Rpb25zIj4KKyAgICA8dGl0bGU+U1FML0pTT04gUXVlcnkgRnVuY3Rpb25zPC90 aXRsZT4KKyAgPHBhcmE+CisgICBTUUwvSlNPTiBmdW5jdGlvbnMgPGxpdGVyYWw+SlNPTl9FWElT VFMoKTwvbGl0ZXJhbD4sCisgICA8bGl0ZXJhbD5KU09OX1FVRVJZKCk8L2xpdGVyYWw+LCBhbmQg PGxpdGVyYWw+SlNPTl9WQUxVRSgpPC9saXRlcmFsPgorICAgZGVzY3JpYmVkIGluIDx4cmVmIGxp bmtlbmQ9ImZ1bmN0aW9ucy1zcWxqc29uLXF1ZXJ5aW5nIi8+IGNhbiBiZSB1c2VkCisgICB0byBx dWVyeSBKU09OIGRvY3VtZW50LiAgRWFjaCBvZiB0aGVzZSBmdW5jdGlvbnMgYXBwbHkgYQorICAg PHJlcGxhY2VhYmxlPnBhdGhfZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+ICh0aGUgcXVlcnkpIHRv IGEKKyAgIDxyZXBsYWNlYWJsZT5jb250ZXh0X2l0ZW08L3JlcGxhY2VhYmxlPiAodGhlIGRvY3Vt ZW50KTsgc2VlbgorICAgPHhyZWYgbGlua2VuZD0iZnVuY3Rpb25zLXNxbGpzb24tcGF0aCIvPiBm b3IgbW9yZSBkZXRhaWxzIG9uIHdoYXQKKyAgIDxyZXBsYWNlYWJsZT5wYXRoX2V4cHJlc3Npb248 L3JlcGxhY2VhYmxlPiBjYW4gY29udGFpbi4KKyAgPC9wYXJhPgorCisgIDxub3RlPgorICAgPHBh cmE+CisgICAgU1FML0pTT04gcXVlcnkgZnVuY3Rpb25zIGN1cnJlbnRseSBvbmx5IGFjY2VwdCB2 YWx1ZXMgb2YgdGhlCisgICAgPHR5cGU+anNvbmI8L3R5cGU+IHR5cGUsIGJlY2F1c2UgdGhlIFNR TC9KU09OIHBhdGggbGFuZ3VhZ2Ugb25seQorICAgIHN1cHBvcnRzIHRob3NlLCBzbyBpdCBtaWdo dCBiZSBuZWNlc3NhcnkgdG8gY2FzdCB0aGUKKyAgICA8cmVwbGFjZWFibGU+Y29udGV4dF9pdGVt PC9yZXBsYWNlYWJsZT4gYXJndW1lbnQgb2YgdGhlc2UgZnVuY3Rpb25zIHRvCisgICAgPHR5cGU+ anNvbmI8L3R5cGU+LgorICAgPC9wYXJhPgorICA8L25vdGU+CisKKyAgPHRhYmxlIGlkPSJmdW5j dGlvbnMtc3FsanNvbi1xdWVyeWluZyI+CisgICA8dGl0bGU+U1FML0pTT04gUXVlcnkgRnVuY3Rp b25zPC90aXRsZT4KKyAgIDx0Z3JvdXAgY29scz0iMSI+CisgICAgPHRoZWFkPgorICAgICA8cm93 PgorICAgICAgPGVudHJ5IHJvbGU9ImZ1bmNfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImZ1bmNf c2lnbmF0dXJlIj4KKyAgICAgICAgRnVuY3Rpb24gc2lnbmF0dXJlCisgICAgICAgPC9wYXJhPgor ICAgICAgIDxwYXJhPgorICAgICAgICBEZXNjcmlwdGlvbgorICAgICAgIDwvcGFyYT4KKyAgICAg ICA8cGFyYT4KKyAgICAgICAgRXhhbXBsZShzKQorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAg IDwvcm93PgorICAgIDwvdGhlYWQ+CisgICAgPHRib2R5PgorICAgICA8cm93PgorICAgICAgPGVu dHJ5IHJvbGU9ImZ1bmNfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImZ1bmNfc2lnbmF0dXJlIj4K KyAgICAgICAgPGluZGV4dGVybT48cHJpbWFyeT5qc29uX2V4aXN0czwvcHJpbWFyeT48L2luZGV4 dGVybT4KKyAgICAgICAgPGZ1bmN0aW9uPmpzb25fZXhpc3RzPC9mdW5jdGlvbj4gKAorICAgICAg ICA8cmVwbGFjZWFibGU+Y29udGV4dF9pdGVtPC9yZXBsYWNlYWJsZT4sIDxyZXBsYWNlYWJsZT5w YXRoX2V4cHJlc3Npb248L3JlcGxhY2VhYmxlPiA8b3B0aW9uYWw+IDxsaXRlcmFsPlBBU1NJTkc8 L2xpdGVyYWw+IHsgPHJlcGxhY2VhYmxlPnZhbHVlPC9yZXBsYWNlYWJsZT4gPGxpdGVyYWw+QVM8 L2xpdGVyYWw+IDxyZXBsYWNlYWJsZT52YXJuYW1lPC9yZXBsYWNlYWJsZT4gfSA8b3B0aW9uYWw+ LCAuLi48L29wdGlvbmFsPjwvb3B0aW9uYWw+CisgICAgICAgIDxvcHRpb25hbD4geyA8bGl0ZXJh bD5UUlVFPC9saXRlcmFsPiB8IDxsaXRlcmFsPkZBTFNFPC9saXRlcmFsPiB8PGxpdGVyYWw+IFVO S05PV048L2xpdGVyYWw+IHwgPGxpdGVyYWw+RVJST1I8L2xpdGVyYWw+IH0gPGxpdGVyYWw+T04g RVJST1I8L2xpdGVyYWw+IDwvb3B0aW9uYWw+KQorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFy YT4KKyAgICAgICAgUmV0dXJucyB0cnVlIGlmIHRoZSBTUUwvSlNPTiA8cmVwbGFjZWFibGU+cGF0 aF9leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgYXBwbGllZCB0byB0aGUgPHJlcGxh Y2VhYmxlPmNvbnRleHRfaXRlbTwvcmVwbGFjZWFibGU+IHVzaW5nIHRoZQorICAgICAgICA8cmVw bGFjZWFibGU+dmFsdWU8L3JlcGxhY2VhYmxlPnMgeWllbGRzIGFueSBpdGVtcy4KKyAgICAgICAg VGhlIDxsaXRlcmFsPk9OIEVSUk9SPC9saXRlcmFsPiBjbGF1c2Ugc3BlY2lmaWVzIHRoZSBiZWhh dmlvciBpZgorICAgICAgICBhbiBlcnJvciBvY2N1cnM7IHRoZSBkZWZhdWx0IGlzIHRvIHJldHVy biB0aGUgPHR5cGU+Ym9vbGVhbjwvdHlwZT4KKyAgICAgICAgPGxpdGVyYWw+RkFMU0U8L2xpdGVy YWw+IHZhbHVlLgorICAgICAgICBOb3RlIHRoYXQgaWYgdGhlIDxyZXBsYWNlYWJsZT5wYXRoX2V4 cHJlc3Npb248L3JlcGxhY2VhYmxlPgorICAgICAgICBpcyA8bGl0ZXJhbD5zdHJpY3Q8L2xpdGVy YWw+IGFuZCA8bGl0ZXJhbD5PTiBFUlJPUjwvbGl0ZXJhbD4gYmVoYXZpb3IKKyAgICAgICAgaXMg PGxpdGVyYWw+T04gRVJST1I8L2xpdGVyYWw+LCBhbiBlcnJvciBpcyBnZW5lcmF0ZWQgaWYgaXQg eWllbGRzIG5vCisgICAgICAgIGl0ZW1zLgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4K KyAgICAgICAgRXhhbXBsZXM6CisgICAgICAgPC9wYXJhPgorICAgICAgIDxwYXJhPgorICAgICAg ICA8bGl0ZXJhbD5zZWxlY3QganNvbl9leGlzdHMoanNvbmIgJ3sia2V5MSI6IFsxLDIsM119Jywg J3N0cmljdCAkLmtleTFbKl0gPyAoQCA+IDIpJyk8L2xpdGVyYWw+CisgICAgICAgIDxyZXR1cm52 YWx1ZT50PC9yZXR1cm52YWx1ZT4KKyAgICAgICA8L3BhcmE+CisgICAgICAgPHBhcmE+CisgICAg ICAgIDxsaXRlcmFsPnNlbGVjdCBqc29uX2V4aXN0cyhqc29uYiAneyJhIjogWzEsMiwzXX0nLCAn bGF4ICQuYVs1XScgRVJST1IgT04gRVJST1IpPC9saXRlcmFsPgorICAgICAgICA8cmV0dXJudmFs dWU+ZjwvcmV0dXJudmFsdWU+CisgICAgICAgPC9wYXJhPgorICAgICAgIDxwYXJhPgorICAgICAg ICA8bGl0ZXJhbD5zZWxlY3QganNvbl9leGlzdHMoanNvbmIgJ3siYSI6IFsxLDIsM119JywgJ3N0 cmljdCAkLmFbNV0nIEVSUk9SIE9OIEVSUk9SKTwvbGl0ZXJhbD4KKyAgICAgICAgPHJldHVybnZh bHVlPjwvcmV0dXJudmFsdWU+Cis8cHJvZ3JhbWxpc3Rpbmc+CitFUlJPUjogIGpzb25wYXRoIGFy cmF5IHN1YnNjcmlwdCBpcyBvdXQgb2YgYm91bmRzCis8L3Byb2dyYW1saXN0aW5nPgorICAgICAg PC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorICAgICA8cm93PgorICAgICAgPGVudHJ5IHJv bGU9ImZ1bmNfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImZ1bmNfc2lnbmF0dXJlIj4KKyAgICAg ICAgPGluZGV4dGVybT48cHJpbWFyeT5qc29uX3F1ZXJ5PC9wcmltYXJ5PjwvaW5kZXh0ZXJtPgor ICAgICAgICA8ZnVuY3Rpb24+anNvbl9xdWVyeTwvZnVuY3Rpb24+ICgKKyAgICAgICAgPHJlcGxh Y2VhYmxlPmNvbnRleHRfaXRlbTwvcmVwbGFjZWFibGU+LCA8cmVwbGFjZWFibGU+cGF0aF9leHBy ZXNzaW9uPC9yZXBsYWNlYWJsZT4gPG9wdGlvbmFsPiA8bGl0ZXJhbD5QQVNTSU5HPC9saXRlcmFs PiB7IDxyZXBsYWNlYWJsZT52YWx1ZTwvcmVwbGFjZWFibGU+IDxsaXRlcmFsPkFTPC9saXRlcmFs PiA8cmVwbGFjZWFibGU+dmFybmFtZTwvcmVwbGFjZWFibGU+IH0gPG9wdGlvbmFsPiwgLi4uPC9v cHRpb25hbD48L29wdGlvbmFsPgorICAgICAgICA8b3B0aW9uYWw+IDxsaXRlcmFsPlJFVFVSTklO RzwvbGl0ZXJhbD4gPHJlcGxhY2VhYmxlPmRhdGFfdHlwZTwvcmVwbGFjZWFibGU+IDxvcHRpb25h bD4gPGxpdGVyYWw+Rk9STUFUIEpTT048L2xpdGVyYWw+IDxvcHRpb25hbD4gPGxpdGVyYWw+RU5D T0RJTkcgVVRGODwvbGl0ZXJhbD4gPC9vcHRpb25hbD4gPC9vcHRpb25hbD4gPC9vcHRpb25hbD4K KyAgICAgICAgPG9wdGlvbmFsPiB7IDxsaXRlcmFsPldJVEhPVVQ8L2xpdGVyYWw+IHwgPGxpdGVy YWw+V0lUSDwvbGl0ZXJhbD4geyA8bGl0ZXJhbD5DT05ESVRJT05BTDwvbGl0ZXJhbD4gfCA8b3B0 aW9uYWw+PGxpdGVyYWw+VU5DT05ESVRJT05BTDwvbGl0ZXJhbD48L29wdGlvbmFsPiB9IH0gPG9w dGlvbmFsPiA8bGl0ZXJhbD5BUlJBWTwvbGl0ZXJhbD4gPC9vcHRpb25hbD4gPGxpdGVyYWw+V1JB UFBFUjwvbGl0ZXJhbD4gPC9vcHRpb25hbD4KKyAgICAgICAgPG9wdGlvbmFsPiB7IDxsaXRlcmFs PktFRVA8L2xpdGVyYWw+IHwgPGxpdGVyYWw+T01JVDwvbGl0ZXJhbD4gfSA8bGl0ZXJhbD5RVU9U RVM8L2xpdGVyYWw+IDxvcHRpb25hbD4gPGxpdGVyYWw+T04gU0NBTEFSIFNUUklORzwvbGl0ZXJh bD4gPC9vcHRpb25hbD4gPC9vcHRpb25hbD4KKyAgICAgICAgPG9wdGlvbmFsPiB7IDxsaXRlcmFs PkVSUk9SPC9saXRlcmFsPiB8IDxsaXRlcmFsPk5VTEw8L2xpdGVyYWw+IHwgPGxpdGVyYWw+RU1Q VFk8L2xpdGVyYWw+IHsgPG9wdGlvbmFsPiA8bGl0ZXJhbD5BUlJBWTwvbGl0ZXJhbD4gPC9vcHRp b25hbD4gfCA8bGl0ZXJhbD5PQkpFQ1Q8L2xpdGVyYWw+IH0gfCA8bGl0ZXJhbD5ERUZBVUxUPC9s aXRlcmFsPiA8cmVwbGFjZWFibGU+ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+IH0gPGxpdGVyYWw+ T04gRU1QVFk8L2xpdGVyYWw+IDwvb3B0aW9uYWw+CisgICAgICAgIDxvcHRpb25hbD4geyA8bGl0 ZXJhbD5FUlJPUjwvbGl0ZXJhbD4gfCA8bGl0ZXJhbD5OVUxMPC9saXRlcmFsPiB8IDxsaXRlcmFs PkVNUFRZPC9saXRlcmFsPiB7IDxvcHRpb25hbD4gPGxpdGVyYWw+QVJSQVk8L2xpdGVyYWw+IDwv b3B0aW9uYWw+IHwgPGxpdGVyYWw+T0JKRUNUPC9saXRlcmFsPiB9IHwgPGxpdGVyYWw+REVGQVVM VDwvbGl0ZXJhbD4gPHJlcGxhY2VhYmxlPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPiB9IDxsaXRl cmFsPk9OIEVSUk9SPC9saXRlcmFsPiA8L29wdGlvbmFsPikKKyAgICAgIDwvcGFyYT4KKyAgICAg ICA8cGFyYT4KKyAgICAgICAgUmV0dXJucyB0aGUgcmVzdWx0IG9mIGFwcGx5aW5nIHRoZQorICAg ICAgICA8cmVwbGFjZWFibGU+cGF0aF9leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4gdG8gdGhlCisg ICAgICAgIDxyZXBsYWNlYWJsZT5jb250ZXh0X2l0ZW08L3JlcGxhY2VhYmxlPiB1c2luZyB0aGUK KyAgICAgICAgPHJlcGxhY2VhYmxlPnZhbHVlPC9yZXBsYWNlYWJsZT5zLgorICAgICAgIDwvcGFy YT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgVGhpcyBmdW5jdGlvbiBtdXN0IHJldHVybiBhIEpT T04gc3RyaW5nLCBzbyBpZiB0aGUgcGF0aCBleHByZXNzaW9uCisgICAgICAgIHJldHVybnMgbXVs dGlwbGUgU1FML0pTT04gaXRlbXMsIHlvdSBtdXN0IHdyYXAgdGhlIHJlc3VsdCB1c2luZyB0aGUK KyAgICAgICAgPGxpdGVyYWw+V0lUSCBXUkFQUEVSPC9saXRlcmFsPiBjbGF1c2UuICBJZiB0aGUg d3JhcHBlciBpcworICAgICAgICA8bGl0ZXJhbD5VTkNPTkRJVElPTkFMPC9saXRlcmFsPiwgYW4g YXJyYXkgd3JhcHBlciB3aWxsIGFsd2F5cyBiZQorICAgICAgICBhcHBsaWVkLCBldmVuIGlmIHRo ZSByZXR1cm5lZCB2YWx1ZSBpcyBhbHJlYWR5IGEgc2luZ2xlIEpTT04gb2JqZWN0CisgICAgICAg IG9yIGFuIGFycmF5LiAgSWYgdGhlIHdyYXBwZXIgaXMgPGxpdGVyYWw+VU5DT05ESVRJT05BTDwv bGl0ZXJhbD4sIGFuCisgICAgICAgIGFycmF5IHdyYXBwZXIgd2lsbCBhbHdheXMgYmUgYXBwbGll ZCwgZXZlbiBpZiB0aGUgcmV0dXJuZWQgdmFsdWUgaXMKKyAgICAgICAgYWxyZWFkeSBhIHNpbmds ZSBKU09OIG9iamVjdCBvciBhbiBhcnJheS4gIElmIGl0IGlzCisgICAgICAgIDxsaXRlcmFsPkNP TkRJVElPTkFMPC9saXRlcmFsPiwgaXQgd2lsbCBub3QgYmUgYXBwbGllZCB0byBhIHNpbmdsZQor ICAgICAgICBhcnJheSBvciBvYmplY3QuIDxsaXRlcmFsPlVOQ09ORElUSU9OQUw8L2xpdGVyYWw+ IGlzIHRoZSBkZWZhdWx0LgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAg SWYgdGhlIHJlc3VsdCBpcyBhIHNjYWxhciBzdHJpbmcsIGJ5IGRlZmF1bHQgdGhlIHZhbHVlIHJl dHVybmVkIHdpbGwKKyAgICAgICAgaGF2ZSBzdXJyb3VuZGluZyBxdW90ZXMgbWFraW5nIGl0IGEg dmFsaWQgSlNPTiB2YWx1ZSwKKyAgICAgICAgd2hpY2ggY2FuIGJlIG1hZGUgZXhwbGljaXQgYnkg c3BlY2lmeWluZyA8bGl0ZXJhbD5LRUVQIFFVT1RFUzwvbGl0ZXJhbD4uCisgICAgICAgIENvbnZl cnNlbHksIHF1b3RlcyBjYW4gYmUgb21pdHRlZCBieSBzcGVjaWZ5aW5nIDxsaXRlcmFsPk9NSVQg UVVPVEVTPC9saXRlcmFsPi4KKyAgICAgICAgTm90ZSB0aGF0IDxsaXRlcmFsPk9NSVQgUVVPVEVT PC9saXRlcmFsPiBjYW5ub3QgYmUgc3BlY2lmaWVkIHdoZW4KKyAgICAgICAgPGxpdGVyYWw+V0lU SCBXUkFQUEVSPC9saXRlcmFsPiBpcyBhbHNvIHNwZWNpZmllZC4KKyAgICAgICA8L3BhcmE+Cisg ICAgICAgPHBhcmE+CisgICAgICAgIFRoZSA8bGl0ZXJhbD5SRVRVUk5JTkc8L2xpdGVyYWw+IGNs YXVzZSBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IHRoZQorICAgICAgICA8cmVwbGFjZWFibGU+ZGF0 YV90eXBlPC9yZXBsYWNlYWJsZT4gb2YgdGhlIHJlc3VsdCB2YWx1ZS4gIEl0IG11c3QKKyAgICAg ICAgYmUgYSB0eXBlIGZvciB3aGljaCB0aGVyZSBpcyBhIGNhc3QgZnJvbSA8dHlwZT50ZXh0PC90 eXBlPiB0byB0aGF0IHR5cGUuCisgICAgICAgIElmIG5vIDxsaXRlcmFsPlJFVFVSTklORzwvbGl0 ZXJhbD4gaXMgc3BjaWZpZWQsIHRoZSByZXR1cm5lZCB2YWx1ZSB3aWxsCisgICAgICAgIGJlIG9m IHR5cGUgPHR5cGU+anNvbmI8L3R5cGU+LgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4K KyAgICAgICAgVGhlIDxsaXRlcmFsPk9OIEVNUFRZPC9saXRlcmFsPiBjbGF1c2Ugc3BlY2lmaWVz IHRoZSBiZWhhdmlvciBpZiB0aGUKKyAgICAgICAgPHJlcGxhY2VhYmxlPnBhdGhfZXhwcmVzc2lv bjwvcmVwbGFjZWFibGU+IHlpZWxkcyBubyB2YWx1ZSBhdCBhbGw7IHRoZQorICAgICAgICBkZWZh dWx0IHdoZW4gPGxpdGVyYWw+T04gRU1QVFk8L2xpdGVyYWw+IGlzIG5vdCBzcGVjaWZpZWQgaXMg dG8gcmV0dXJuCisgICAgICAgIGEgbnVsbCB2YWx1ZS4KKyAgICAgICA8L3BhcmE+CisgICAgICAg PHBhcmE+CisgICAgICAgIFRoZSA8bGl0ZXJhbD5PTiBFUlJPUjwvbGl0ZXJhbD4gY2xhdXNlIHNw ZWNpZmllcyB0aGUKKyAgICAgICAgYmVoYXZpb3IgaWYgYW4gZXJyb3Igb2NjdXJzIHdoZW4gZXZh bHVhdGluZworICAgICAgICA8dHlwZT5wYXRoX2V4cHJlc3Npb248L3R5cGU+LCBpbmNsdWRpbmcg dGhlIG9wZXJhdGlvbiB0byBjYXN0IHRoZQorICAgICAgICByZXN1bHQgdGhlIG91dHB1dCB0eXBl LCBvciBkdXJpbmcgdGhlIGV4ZWN1dGlvbiBvZgorICAgICAgICA8bGl0ZXJhbD5PTiBFTVBUWTwv bGl0ZXJhbD4gYmVoYXZpb3IgKHRoYXQgd2FzIGNhdXNlZCBieSBlbXB0eSByZXN1bHQgb2YKKyAg ICAgICAgPHR5cGU+cGF0aF9leHByZXNzaW9uPC90eXBlPiBldmFsdWF0aW9uKTsgdGhlIGRlZmF1 bHQgd2hlbgorICAgICAgICA8bGl0ZXJhbD5PTiBFUlJPUjwvbGl0ZXJhbD4gaXMgbm90IHNwZWNp ZmllZCBpcyB0byByZXR1cm4gYSBudWxsIHZhbHVlLgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8 cGFyYT4KKyAgICAgICAgRXhhbXBsZXM6CisgICAgICAgPC9wYXJhPgorICAgICAgIDxwYXJhPgor ICAgICAgICA8bGl0ZXJhbD5zZWxlY3QganNvbl9xdWVyeShqc29uYiAnWzEsWzIsM10sbnVsbF0n LCAnbGF4ICRbKl1bMV0nIFdJVEggQ09ORElUSU9OQUwgV1JBUFBFUik8L2xpdGVyYWw+CisgICAg ICAgIDxyZXR1cm52YWx1ZT5bM108L3JldHVybnZhbHVlPgorICAgICAgIDwvcGFyYT4KKyAgICAg ICA8cGFyYT4KKyAgICAgICAgPGxpdGVyYWw+c2VsZWN0IGpzb25fcXVlcnkoanNvbmIgJ3siYSI6 ICJbMSwgMl0ifScsICdsYXggJC5hJyBPTUlUIFFVT1RFUyk7PC9saXRlcmFsPgorICAgICAgICA8 cmV0dXJudmFsdWU+WzEsIDJdPC9yZXR1cm52YWx1ZT4KKyAgICAgICA8L3BhcmE+CisgICAgICAg PHBhcmE+CisgICAgICAgIDxsaXRlcmFsPnNlbGVjdCBqc29uX3F1ZXJ5KGpzb25iICd7ImEiOiAi WzEsIDJdIn0nLCAnbGF4ICQuYScgUkVUVVJOSU5HIGludFtdIE9NSVQgUVVPVEVTKTs8L2xpdGVy YWw+CisgICAgICAgIDxyZXR1cm52YWx1ZT48L3JldHVybnZhbHVlPgorICAgICAgIDwvcGFyYT4K KyAgICAgICA8cGFyYT4KKyAgICAgICAgPGxpdGVyYWw+c2VsZWN0IGpzb25fcXVlcnkoanNvbmIg J3siYSI6ICJbMSwgMl0ifScsICdsYXggJC5hJyBSRVRVUk5JTkcgaW50W10gT01JVCBRVU9URVMg RVJST1IgT04gRVJST1IpOzwvbGl0ZXJhbD4KKyAgICAgICAgPHJldHVybnZhbHVlPjwvcmV0dXJu dmFsdWU+Cis8cHJvZ3JhbWxpc3Rpbmc+CitFUlJPUjogIG1hbGZvcm1lZCBhcnJheSBsaXRlcmFs OiAiWzEsIDJdIgorREVUQUlMOiAgTWlzc2luZyAiXSIgYWZ0ZXIgYXJyYXkgZGltZW5zaW9ucy4K KzwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgICAgPC9wYXJhPgorICAgICAgPC9lbnRyeT4KKyAgICAg PC9yb3c+CisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iZnVuY190YWJsZV9lbnRyeSI+ PHBhcmEgcm9sZT0iZnVuY19zaWduYXR1cmUiPgorICAgICAgICA8aW5kZXh0ZXJtPjxwcmltYXJ5 Pmpzb25fdmFsdWU8L3ByaW1hcnk+PC9pbmRleHRlcm0+CisgICAgICAgIDxmdW5jdGlvbj5qc29u X3ZhbHVlPC9mdW5jdGlvbj4gKAorICAgICAgICA8cmVwbGFjZWFibGU+Y29udGV4dF9pdGVtPC9y ZXBsYWNlYWJsZT4sIDxyZXBsYWNlYWJsZT5wYXRoX2V4cHJlc3Npb248L3JlcGxhY2VhYmxlPgor ICAgICAgICA8b3B0aW9uYWw+IDxsaXRlcmFsPlBBU1NJTkc8L2xpdGVyYWw+IHsgPHJlcGxhY2Vh YmxlPnZhbHVlPC9yZXBsYWNlYWJsZT4gPGxpdGVyYWw+QVM8L2xpdGVyYWw+IDxyZXBsYWNlYWJs ZT52YXJuYW1lPC9yZXBsYWNlYWJsZT4gfSA8b3B0aW9uYWw+LCAuLi48L29wdGlvbmFsPjwvb3B0 aW9uYWw+CisgICAgICAgIDxvcHRpb25hbD4gPGxpdGVyYWw+UkVUVVJOSU5HPC9saXRlcmFsPiA8 cmVwbGFjZWFibGU+ZGF0YV90eXBlPC9yZXBsYWNlYWJsZT4gPC9vcHRpb25hbD4KKyAgICAgICAg PG9wdGlvbmFsPiB7IDxsaXRlcmFsPkVSUk9SPC9saXRlcmFsPiB8IDxsaXRlcmFsPk5VTEw8L2xp dGVyYWw+IHwgPGxpdGVyYWw+REVGQVVMVDwvbGl0ZXJhbD4gPHJlcGxhY2VhYmxlPmV4cHJlc3Np b248L3JlcGxhY2VhYmxlPiB9IDxsaXRlcmFsPk9OIEVNUFRZPC9saXRlcmFsPiA8L29wdGlvbmFs PgorICAgICAgICA8b3B0aW9uYWw+IHsgPGxpdGVyYWw+RVJST1I8L2xpdGVyYWw+IHwgPGxpdGVy YWw+TlVMTDwvbGl0ZXJhbD4gfCA8bGl0ZXJhbD5ERUZBVUxUPC9saXRlcmFsPiA8cmVwbGFjZWFi bGU+ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+IH0gPGxpdGVyYWw+T04gRVJST1I8L2xpdGVyYWw+ IDwvb3B0aW9uYWw+KQorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgUmV0 dXJucyB0aGUgcmVzdWx0IG9mIGFwcGx5aW5nIHRoZQorICAgICAgICA8cmVwbGFjZWFibGU+cGF0 aF9leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4gdG8gdGhlCisgICAgICAgIDxyZXBsYWNlYWJsZT5j b250ZXh0X2l0ZW08L3JlcGxhY2VhYmxlPiB1c2luZyB0aGUKKyAgICAgICAgPGxpdGVyYWw+UEFT U0lORzwvbGl0ZXJhbD4gPHJlcGxhY2VhYmxlPnZhbHVlPC9yZXBsYWNlYWJsZT5zLiBUaGUKKyAg ICAgICAgZXh0cmFjdGVkIHZhbHVlIG11c3QgYmUgYSBzaW5nbGUgPGFjcm9ueW0+U1FML0pTT048 L2Fjcm9ueW0+IHNjYWxhcgorICAgICAgICBpdGVtLiBGb3IgcmVzdWx0cyB0aGF0IGFyZSBvYmpl Y3RzIG9yIGFycmF5cywgdXNlIHRoZQorICAgICAgICA8ZnVuY3Rpb24+anNvbl9xdWVyeTwvZnVu Y3Rpb24+IGZ1bmN0aW9uIGluc3RlYWQuCisgICAgICAgIFRoZSA8bGl0ZXJhbD5SRVRVUk5JTkc8 L2xpdGVyYWw+IGNsYXVzZSBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IHRoZQorICAgICAgICA8cmVw bGFjZWFibGU+ZGF0YV90eXBlPC9yZXBsYWNlYWJsZT4gb2YgdGhlIHJlc3VsdCB2YWx1ZS4gIEl0 IG11c3QKKyAgICAgICAgYmUgYSB0eXBlIGZvciB3aGljaCB0aGVyZSBhcmUgY2FzdHMgZnJvbSBh bGwgcG9zc2libGUgSlNPTiBzY2FsYXIKKyAgICAgICAgdmFsdWUgdHlwZXMgKDx0eXBlPnRleHQ8 L3R5cGU+LCA8dHlwZT5ib29sZWFuPC90eXBlPiwgPHR5cGU+bnVtZXJpYzwvdHlwZT4sCisgICAg ICAgIGFuZCB2YXJpb3VzIGRhdGV0aW1lIHR5cGVzKSB0byB0aGF0IHR5cGUuICBJZiBubyA8bGl0 ZXJhbD5SRVRVUk5JTkc8L2xpdGVyYWw+CisgICAgICAgIGlzIHNwY2lmaWVkLCB0aGUgcmV0dXJu ZWQgdmFsdWUgd2lsbCBiZSBvZiB0eXBlIDx0eXBlPnRleHQ8L3R5cGU+LgorICAgICAgICBUaGUg PGxpdGVyYWw+T04gRVJST1I8L2xpdGVyYWw+IGFuZCA8bGl0ZXJhbD5PTiBFTVBUWTwvbGl0ZXJh bD4KKyAgICAgICAgY2xhdXNlcyBoYXZlIHNpbWlsYXIgc2VtYW50aWNzIGFzIG1lbnRpb25lZCBp biB0aGUgZGVzY3JpcHRpb24gb2YKKyAgICAgICAgPGZ1bmN0aW9uPmpzb25fcXVlcnk8L2Z1bmN0 aW9uPi4gIE5vdGUgdGhhdCBzY2FsYXIgc3RyaW5ncyByZXR1cm5lZAorICAgICAgICBieSA8ZnVu Y3Rpb24+anNvbl92YWx1ZTwvZnVuY3Rpb24+IGFsd2F5cyBoYXZlIHRoZWlyIHF1b3RlcyByZW1v dmVkLAorICAgICAgICBlcXVpdmFsZW50IHRvIHdoYXQgb25lIHdvdWxkIGdldCB3aXRoIDxsaXRl cmFsPk9NSVQgUVVPVEVTPC9saXRlcmFsPgorICAgICAgICB3aGVuIHVzaW5nIDxmdW5jdGlvbj5q c29uX3F1ZXJ5PC9mdW5jdGlvbj4uCisgICAgICAgPC9wYXJhPgorICAgICAgIDxwYXJhPgorICAg ICAgICBFeGFtcGxlczoKKyAgICAgICA8L3BhcmE+CisgICAgICAgPHBhcmE+CisgICAgICAgIDxs aXRlcmFsPnNlbGVjdCBqc29uX3ZhbHVlKGpzb25iICciMTIzLjQ1IicsICckJyBSRVRVUk5JTkcg ZmxvYXQpPC9saXRlcmFsPgorICAgICAgICA8cmV0dXJudmFsdWU+MTIzLjQ1PC9yZXR1cm52YWx1 ZT4KKyAgICAgICA8L3BhcmE+CisgICAgICAgPHBhcmE+CisgICAgICAgIDxsaXRlcmFsPnNlbGVj dCBqc29uX3ZhbHVlKGpzb25iICciMDM6MDQgMjAxNS0wMi0wMSInLCAnJC5kYXRldGltZSgiSEgy NDpNSSZuYnNwO1lZWVktTU0tREQiKScgUkVUVVJOSU5HIGRhdGUpPC9saXRlcmFsPgorICAgICAg ICA8cmV0dXJudmFsdWU+MjAxNS0wMi0wMTwvcmV0dXJudmFsdWU+CisgICAgICAgPC9wYXJhPgor ICAgICAgIDxwYXJhPgorICAgICAgICA8bGl0ZXJhbD5zZWxlY3QganNvbl92YWx1ZShqc29uYiAn WzEsMl0nLCAnc3RyaWN0ICRbKl0nIERFRkFVTFQgOSBPTiBFUlJPUik8L2xpdGVyYWw+CisgICAg ICAgIDxyZXR1cm52YWx1ZT45PC9yZXR1cm52YWx1ZT4KKyAgICAgIDwvcGFyYT48L2VudHJ5Pgor ICAgICA8L3Jvdz4KKyAgICA8L3Rib2R5PgorICAgPC90Z3JvdXA+CisgIDwvdGFibGU+CisgIDwv c2VjdDI+CiAgPC9zZWN0MT4KIAogIDxzZWN0MSBpZD0iZnVuY3Rpb25zLXNlcXVlbmNlIj4KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3FsX2ZlYXR1cmVzLnR4dCBiL3NyYy9iYWNr ZW5kL2NhdGFsb2cvc3FsX2ZlYXR1cmVzLnR4dAppbmRleCA5MjVkMTVhMmMzLi44MGFjNTlmYmE0 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3NxbF9mZWF0dXJlcy50eHQKKysrIGIv c3JjL2JhY2tlbmQvY2F0YWxvZy9zcWxfZmVhdHVyZXMudHh0CkBAIC01NDcsMTUgKzU0NywxNSBA QCBUODExCUJhc2ljIFNRTC9KU09OIGNvbnN0cnVjdG9yIGZ1bmN0aW9ucwkJCVlFUwogVDgxMglT UUwvSlNPTjogSlNPTl9PQkpFQ1RBR0cJCQlZRVMJCiBUODEzCVNRTC9KU09OOiBKU09OX0FSUkFZ QUdHIHdpdGggT1JERVIgQlkJCQlZRVMJCiBUODE0CUNvbG9uIGluIEpTT05fT0JKRUNUIG9yIEpT T05fT0JKRUNUQUdHCQkJWUVTCQotVDgyMQlCYXNpYyBTUUwvSlNPTiBxdWVyeSBvcGVyYXRvcnMJ CQlOTwkKK1Q4MjEJQmFzaWMgU1FML0pTT04gcXVlcnkgb3BlcmF0b3JzCQkJWUVTCQogVDgyMglT UUwvSlNPTjogSVMgSlNPTiBXSVRIIFVOSVFVRSBLRVlTIHByZWRpY2F0ZQkJCVlFUwkKLVQ4MjMJ U1FML0pTT046IFBBU1NJTkcgY2xhdXNlCQkJTk8JCitUODIzCVNRTC9KU09OOiBQQVNTSU5HIGNs YXVzZQkJCVlFUwkKIFQ4MjQJSlNPTl9UQUJMRTogc3BlY2lmaWMgUExBTiBjbGF1c2UJCQlOTwkK LVQ4MjUJU1FML0pTT046IE9OIEVNUFRZIGFuZCBPTiBFUlJPUiBjbGF1c2VzCQkJTk8JCi1UODI2 CUdlbmVyYWwgdmFsdWUgZXhwcmVzc2lvbiBpbiBPTiBFUlJPUiBvciBPTiBFTVBUWSBjbGF1c2Vz CQkJTk8JCitUODI1CVNRTC9KU09OOiBPTiBFTVBUWSBhbmQgT04gRVJST1IgY2xhdXNlcwkJCVlF UwkKK1Q4MjYJR2VuZXJhbCB2YWx1ZSBleHByZXNzaW9uIGluIE9OIEVSUk9SIG9yIE9OIEVNUFRZ IGNsYXVzZXMJCQlZRVMJCiBUODI3CUpTT05fVEFCTEU6IHNpYmxpbmcgTkVTVEVEIENPTFVNTlMg Y2xhdXNlcwkJCU5PCQotVDgyOAlKU09OX1FVRVJZCQkJTk8JCi1UODI5CUpTT05fUVVFUlk6IGFy cmF5IHdyYXBwZXIgb3B0aW9ucwkJCU5PCQorVDgyOAlKU09OX1FVRVJZCQkJWUVTCQorVDgyOQlK U09OX1FVRVJZOiBhcnJheSB3cmFwcGVyIG9wdGlvbnMJCQlZRVMJCiBUODMwCUVuZm9yY2luZyB1 bmlxdWUga2V5cyBpbiBTUUwvSlNPTiBjb25zdHJ1Y3RvciBmdW5jdGlvbnMJCQlZRVMJCiBUODMx CVNRTC9KU09OIHBhdGggbGFuZ3VhZ2U6IHN0cmljdCBtb2RlCQkJWUVTCQogVDgzMglTUUwvSlNP TiBwYXRoIGxhbmd1YWdlOiBpdGVtIG1ldGhvZAkJCVlFUwkKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNFeHByLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwci5j CmluZGV4IGZmZDNjYTRlNjEuLjNkYjQyYWExNzUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNFeHByLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHIuYwpA QCAtNDgsNiArNDgsNyBAQAogI2luY2x1ZGUgInV0aWxzL2FycmF5LmgiCiAjaW5jbHVkZSAidXRp bHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9qc29uZnVuY3MuaCIKKyNpbmNsdWRlICJ1 dGlscy9qc29ucGF0aC5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogI2luY2x1ZGUg InV0aWxzL3R5cGNhY2hlLmgiCiAKQEAgLTg3LDYgKzg4LDEyIEBAIHN0YXRpYyB2b2lkIEV4ZWNC dWlsZEFnZ1RyYW5zQ2FsbChFeHByU3RhdGUgKnN0YXRlLCBBZ2dTdGF0ZSAqYWdnc3RhdGUsCiAJ CQkJCQkJCSAgRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8sIEFnZ1N0YXRlUGVyVHJhbnMgcGVydHJh bnMsCiAJCQkJCQkJCSAgaW50IHRyYW5zbm8sIGludCBzZXRubywgaW50IHNldG9mZiwgYm9vbCBp c2hhc2gsCiAJCQkJCQkJCSAgYm9vbCBudWxsY2hlY2spOworc3RhdGljIHZvaWQgRXhlY0luaXRK c29uRXhwcihKc29uRXhwciAqamV4cHIsIEV4cHJTdGF0ZSAqc3RhdGUsCisJCQkJCQkJIERhdHVt ICpyZXN2LCBib29sICpyZXNudWxsLAorCQkJCQkJCSBFeHByRXZhbFN0ZXAgKnNjcmF0Y2gpOwor c3RhdGljIGludAlFeGVjSW5pdEpzb25FeHByQ29lcmNpb24oRXhwclN0YXRlICpzdGF0ZSwgTm9k ZSAqY29lcmNpb24sCisJCQkJCQkJCQkgRXJyb3JTYXZlQ29udGV4dCAqZXNjb250ZXh0LAorCQkJ CQkJCQkJIERhdHVtICpyZXN2LCBib29sICpyZXNudWxsKTsKIAogCiAvKgpAQCAtMjQxMiw2ICsy NDE5LDE0IEBAIEV4ZWNJbml0RXhwclJlYyhFeHByICpub2RlLCBFeHByU3RhdGUgKnN0YXRlLAog CQkJCWJyZWFrOwogCQkJfQogCisJCWNhc2UgVF9Kc29uRXhwcjoKKwkJCXsKKwkJCQlKc29uRXhw ciAgICpqZXhwciA9IGNhc3ROb2RlKEpzb25FeHByLCBub2RlKTsKKworCQkJCUV4ZWNJbml0SnNv bkV4cHIoamV4cHIsIHN0YXRlLCByZXN2LCByZXNudWxsLCAmc2NyYXRjaCk7CisJCQkJYnJlYWs7 CisJCQl9CisKIAkJY2FzZSBUX051bGxUZXN0OgogCQkJewogCQkJCU51bGxUZXN0ICAgKm50ZXN0 ID0gKE51bGxUZXN0ICopIG5vZGU7CkBAIC00MTgwLDMgKzQxOTUsMzM3IEBAIEV4ZWNCdWlsZFBh cmFtU2V0RXF1YWwoVHVwbGVEZXNjIGRlc2MsCiAKIAlyZXR1cm4gc3RhdGU7CiB9CisKKy8qCisg KiBQdXNoIHN0ZXBzIHRvIGV2YWx1YXRlIGEgSnNvbkV4cHIgYW5kIGl0cyB2YXJpb3VzIHN1YnNp ZGlhcnkgZXhwcmVzc2lvbnMuCisgKi8KK3N0YXRpYyB2b2lkCitFeGVjSW5pdEpzb25FeHByKEpz b25FeHByICpqZXhwciwgRXhwclN0YXRlICpzdGF0ZSwKKwkJCQkgRGF0dW0gKnJlc3YsIGJvb2wg KnJlc251bGwsCisJCQkJIEV4cHJFdmFsU3RlcCAqc2NyYXRjaCkKK3sKKwlKc29uRXhwclN0YXRl ICpqc2VzdGF0ZSA9IHBhbGxvYzAoc2l6ZW9mKEpzb25FeHByU3RhdGUpKTsKKwlKc29uRXhwclBv c3RFdmFsU3RhdGUgKnBvc3RfZXZhbCA9ICZqc2VzdGF0ZS0+cG9zdF9ldmFsOworCUxpc3RDZWxs ICAgKmFyZ2V4cHJsYzsKKwlMaXN0Q2VsbCAgICphcmduYW1lbGM7CisJTGlzdAkgICAqanVtcHNf aWZfc2tpcCA9IE5JTDsKKwlMaXN0CSAgICpqdW1wc190b19jb2VyY2VfZmluaXNoID0gTklMOwor CUxpc3QJICAgKmp1bXBzX3RvX2VuZCA9IE5JTDsKKwlMaXN0Q2VsbCAgICpsYzsKKwlFeHByRXZh bFN0ZXAgKmFzOworCisJanNlc3RhdGUtPmpzZXhwciA9IGpleHByOworCisJLyoKKwkgKiBFdmFs dWF0ZSBmb3JtYXR0ZWRfZXhwciBzdG9yaW5nIHRoZSByZXN1bHQgaW50bworCSAqIGpzZXN0YXRl LT5mb3JtYXR0ZWRfZXhwci4KKwkgKi8KKwlFeGVjSW5pdEV4cHJSZWMoKEV4cHIgKikgamV4cHIt PmZvcm1hdHRlZF9leHByLCBzdGF0ZSwKKwkJCQkJJmpzZXN0YXRlLT5mb3JtYXR0ZWRfZXhwci52 YWx1ZSwKKwkJCQkJJmpzZXN0YXRlLT5mb3JtYXR0ZWRfZXhwci5pc251bGwpOworCisJLyogU3Rl cHMgdG8ganVtcCB0byBlbmQgaWYgZm9ybWF0dGVkX2V4cHIgZXZhbHVhdGVzIHRvIE5VTEwgKi8K KwlzY3JhdGNoLT5vcGNvZGUgPSBFRU9QX0pVTVBfSUZfTlVMTDsKKwlzY3JhdGNoLT5yZXNudWxs ID0gJmpzZXN0YXRlLT5mb3JtYXR0ZWRfZXhwci5pc251bGw7CisJc2NyYXRjaC0+ZC5qdW1wLmp1 bXBkb25lID0gLTE7CS8qIHNldCBiZWxvdyAqLworCWp1bXBzX2lmX3NraXAgPSBsYXBwZW5kX2lu dChqdW1wc19pZl9za2lwLCBzdGF0ZS0+c3RlcHNfbGVuKTsKKwlFeHByRXZhbFB1c2hTdGVwKHN0 YXRlLCBzY3JhdGNoKTsKKworCS8qCisJICogRXZhbHVhdGUgcGF0aHNwZWMgZXhwcmVzc2lvbiBz dG9yaW5nIHRoZSByZXN1bHQgaW50bworCSAqIGpzZXN0YXRlLT5wYXRoc3BlYy4KKwkgKi8KKwlF eGVjSW5pdEV4cHJSZWMoKEV4cHIgKikgamV4cHItPnBhdGhfc3BlYywgc3RhdGUsCisJCQkJCSZq c2VzdGF0ZS0+cGF0aHNwZWMudmFsdWUsCisJCQkJCSZqc2VzdGF0ZS0+cGF0aHNwZWMuaXNudWxs KTsKKworCS8qIFN0ZXBzIHRvIEpVTVAgdG8gZW5kIGlmIHBhdGhzcGVjIGV2YWx1YXRlcyB0byBO VUxMICovCisJc2NyYXRjaC0+b3Bjb2RlID0gRUVPUF9KVU1QX0lGX05VTEw7CisJc2NyYXRjaC0+ cmVzbnVsbCA9ICZqc2VzdGF0ZS0+cGF0aHNwZWMuaXNudWxsOworCXNjcmF0Y2gtPmQuanVtcC5q dW1wZG9uZSA9IC0xOwkvKiBzZXQgYmVsb3cgKi8KKwlqdW1wc19pZl9za2lwID0gbGFwcGVuZF9p bnQoanVtcHNfaWZfc2tpcCwgc3RhdGUtPnN0ZXBzX2xlbik7CisJRXhwckV2YWxQdXNoU3RlcChz dGF0ZSwgc2NyYXRjaCk7CisKKwkvKiBTdGVwcyB0byBjb21wdXRlIFBBU1NJTkcgYXJncy4gKi8K Kwlqc2VzdGF0ZS0+YXJncyA9IE5JTDsKKwlmb3Jib3RoKGFyZ2V4cHJsYywgamV4cHItPnBhc3Np bmdfdmFsdWVzLAorCQkJYXJnbmFtZWxjLCBqZXhwci0+cGFzc2luZ19uYW1lcykKKwl7CisJCUV4 cHIJICAgKmFyZ2V4cHIgPSAoRXhwciAqKSBsZmlyc3QoYXJnZXhwcmxjKTsKKwkJU3RyaW5nCSAg ICphcmduYW1lID0gbGZpcnN0X25vZGUoU3RyaW5nLCBhcmduYW1lbGMpOworCQlKc29uUGF0aFZh cmlhYmxlICp2YXIgPSBwYWxsb2Moc2l6ZW9mKCp2YXIpKTsKKworCQl2YXItPm5hbWUgPSBhcmdu YW1lLT5zdmFsOworCQl2YXItPnR5cGlkID0gZXhwclR5cGUoKE5vZGUgKikgYXJnZXhwcik7CisJ CXZhci0+dHlwbW9kID0gZXhwclR5cG1vZCgoTm9kZSAqKSBhcmdleHByKTsKKworCQlFeGVjSW5p dEV4cHJSZWMoKEV4cHIgKikgYXJnZXhwciwgc3RhdGUsICZ2YXItPnZhbHVlLCAmdmFyLT5pc251 bGwpOworCisJCWpzZXN0YXRlLT5hcmdzID0gbGFwcGVuZChqc2VzdGF0ZS0+YXJncywgdmFyKTsK Kwl9CisKKwkvKiBTdGVwIGZvciBKc29uUGF0aCogZXZhbHVhdGlvbjsgc2VlIEV4ZWNFdmFsSnNv bkV4cHJQYXRoKCkuICovCisJc2NyYXRjaC0+b3Bjb2RlID0gRUVPUF9KU09ORVhQUl9QQVRIOwor CXNjcmF0Y2gtPnJlc3ZhbHVlID0gcmVzdjsKKwlzY3JhdGNoLT5yZXNudWxsID0gcmVzbnVsbDsK KwlzY3JhdGNoLT5kLmpzb25leHByLmpzZXN0YXRlID0ganNlc3RhdGU7CisJRXhwckV2YWxQdXNo U3RlcChzdGF0ZSwgc2NyYXRjaCk7CisKKwkvKgorCSAqIFN0ZXAgdG8ganVtcCB0byBlbmQgd2hl biB0aGVyZSdzIG5laXRoZXIgYW4gZXJyb3Igd2hlbiBldmFsdWF0aW5nCisJICogSnNvblBhdGgq IG5vciBhbnkgbmVlZCB0byBjb2VyY2UgdGhlIHJlc3VsdCBiZWNhdXNlIGl0J3MgYWxyZWFkeSBv ZiB0aGUKKwkgKiBzcGVjaWZpZWQgdHlwZS4KKwkgKi8KKwlzY3JhdGNoLT5vcGNvZGUgPSBFRU9Q X0pVTVA7CisJc2NyYXRjaC0+ZC5qdW1wLmp1bXBkb25lID0gLTE7CS8qIHNldCBiZWxvdyAqLwor CWp1bXBzX3RvX2VuZCA9IGxhcHBlbmRfaW50KGp1bXBzX3RvX2VuZCwgc3RhdGUtPnN0ZXBzX2xl bik7CisJRXhwckV2YWxQdXNoU3RlcChzdGF0ZSwgc2NyYXRjaCk7CisKKwkvKgorCSAqIFN0ZXBz IHRvIGNvZXJjZSB0aGUgcmVzdWx0IHZhbHVlIGNvbXB1dGVkIGJ5IEVFT1BfSlNPTkVYUFJfUEFU SC4gVG8KKwkgKiBoYW5kbGUgY29lcmNpb24gZXJyb3JzIHNvZnRseSwgdXNlIHRoZSBmb2xsb3dp bmcgRXJyb3JTYXZlQ29udGV4dCB3aGVuCisJICogaW5pdGlhbGl6aW5nIHRoZSBjb2VyY2lvbiBl eHByZXNzaW9ucywgaW5jbHVkaW5nIGFueSBKc29uQ29lcmNpb24KKwkgKiBub2Rlcy4KKwkgKi8K Kwlqc2VzdGF0ZS0+ZXNjb250ZXh0LnR5cGUgPSBUX0Vycm9yU2F2ZUNvbnRleHQ7CisJaWYgKGpl eHByLT5yZXN1bHRfY29lcmNpb24pCisJeworCQlqc2VzdGF0ZS0+anVtcF9ldmFsX3Jlc3VsdF9j b2VyY2lvbiA9CisJCQlFeGVjSW5pdEpzb25FeHByQ29lcmNpb24oc3RhdGUsIGpleHByLT5yZXN1 bHRfY29lcmNpb24sCisJCQkJCQkJCQkgamV4cHItPm9uX2Vycm9yLT5idHlwZSAhPSBKU09OX0JF SEFWSU9SX0VSUk9SID8KKwkJCQkJCQkJCSAmanNlc3RhdGUtPmVzY29udGV4dCA6IE5VTEwsCisJ CQkJCQkJCQkgcmVzdiwgcmVzbnVsbCk7CisJCS8qIEp1bXAgdG8gQ09FUkNJT05fRklOSVNILiAq LworCQlzY3JhdGNoLT5vcGNvZGUgPSBFRU9QX0pVTVA7CisJCXNjcmF0Y2gtPmQuanVtcC5qdW1w ZG9uZSA9IC0xOwkvKiBzZXQgYmVsb3cgKi8KKwkJanVtcHNfdG9fY29lcmNlX2ZpbmlzaCA9IGxh cHBlbmRfaW50KGp1bXBzX3RvX2NvZXJjZV9maW5pc2gsCisJCQkJCQkJCQkJCSBzdGF0ZS0+c3Rl cHNfbGVuKTsKKwkJRXhwckV2YWxQdXNoU3RlcChzdGF0ZSwgc2NyYXRjaCk7CisJfQorCWVsc2UK KwkJanNlc3RhdGUtPmp1bXBfZXZhbF9yZXN1bHRfY29lcmNpb24gPSAtMTsKKworCS8qIFN0ZXBz IGZvciBjb2VyY2luZyBKc29uSXRlbVR5cGUgdmFsdWVzIHJldHVybmVkIGJ5IEpzb25QYXRoVmFs dWUoKS4gKi8KKwlpZiAoamV4cHItPml0ZW1fY29lcmNpb25zKQorCXsKKwkJLyoKKwkJICogSGVy ZSB3ZSBjcmVhdGUgdGhlIHN0ZXBzIGZvciBlYWNoIEpzb25JdGVtVHlwZSB0eXBlJ3MgY29lcmNp b24KKwkJICogZXhwcmVzc2lvbiBhbmQgYWxzbyBzdG9yZSBhIGZsYWcgd2hldGhlciB0aGUgZXhw cmVzc2lvbiBpcyBhCisJCSAqIEpzb25Db2VyY2lvbiBub2RlLiAgRXhlY1ByZXBhcmVKc29uSXRl bUNvZXJjaW9uKCkgY2FsbGVkIGJ5CisJCSAqIEV4ZWNFdmFsSnNvbkV4cHJQYXRoKCkgd2lsbCBt YXAgYSBnaXZlbiBKc29uYlZhbHVlIHJldHVybmVkIGJ5CisJCSAqIEpzb25QYXRoVmFsdWUoKSB0 byBpdHMgIEpzb25JdGVtVHlwZSdzIGV4cHJlc3Npb24ncyBzdGVwIGFkZHJlc3MKKwkJICogYW5k IHRoZSBmbGFnIGJ5IGluZGV4aW5nIHRoZSBmb2xsb3dpbmcgYXJyYXlzIHdpdGggSnNvbkl0ZW1U eXBlCisJCSAqIGVudW0gdmFsdWUuCisJCSAqLworCQlqc2VzdGF0ZS0+bnVtX2l0ZW1fY29lcmNp b25zID0gbGlzdF9sZW5ndGgoamV4cHItPml0ZW1fY29lcmNpb25zKTsKKwkJanNlc3RhdGUtPmV2 YWxfaXRlbV9jb2VyY2lvbl9qdW1wcyA9IChpbnQgKikKKwkJCXBhbGxvYyhqc2VzdGF0ZS0+bnVt X2l0ZW1fY29lcmNpb25zICogc2l6ZW9mKGludCkpOworCQlqc2VzdGF0ZS0+aXRlbV9jb2VyY2lv bl92aWFfZXhwciA9IChib29sICopCisJCQlwYWxsb2MwKGpzZXN0YXRlLT5udW1faXRlbV9jb2Vy Y2lvbnMgKiBzaXplb2YoYm9vbCkpOworCQlmb3JlYWNoKGxjLCBqZXhwci0+aXRlbV9jb2VyY2lv bnMpCisJCXsKKwkJCUpzb25JdGVtQ29lcmNpb24gKml0ZW1fY29lcmNpb24gPSBsZmlyc3QobGMp OworCQkJTm9kZQkgICAqY29lcmNpb24gPSBpdGVtX2NvZXJjaW9uLT5jb2VyY2lvbjsKKworCQkJ anNlc3RhdGUtPml0ZW1fY29lcmNpb25fdmlhX2V4cHJbaXRlbV9jb2VyY2lvbi0+aXRlbV90eXBl XSA9CisJCQkJKGNvZXJjaW9uICE9IE5VTEwgJiYgIUlzQShjb2VyY2lvbiwgSnNvbkNvZXJjaW9u KSk7CisJCQlqc2VzdGF0ZS0+ZXZhbF9pdGVtX2NvZXJjaW9uX2p1bXBzW2l0ZW1fY29lcmNpb24t Pml0ZW1fdHlwZV0gPQorCQkJCUV4ZWNJbml0SnNvbkV4cHJDb2VyY2lvbihzdGF0ZSwgY29lcmNp b24sCisJCQkJCQkJCQkJIGpleHByLT5vbl9lcnJvci0+YnR5cGUgIT0gSlNPTl9CRUhBVklPUl9F UlJPUiA/CisJCQkJCQkJCQkJICZqc2VzdGF0ZS0+ZXNjb250ZXh0IDogTlVMTCwKKwkJCQkJCQkJ CQkgcmVzdiwgcmVzbnVsbCk7CisKKwkJCS8qIEp1bXAgdG8gQ09FUkNJT05fRklOSVNILiAqLwor CQkJc2NyYXRjaC0+b3Bjb2RlID0gRUVPUF9KVU1QOworCQkJc2NyYXRjaC0+ZC5qdW1wLmp1bXBk b25lID0gLTE7CS8qIHNldCBiZWxvdyAqLworCQkJanVtcHNfdG9fY29lcmNlX2ZpbmlzaCA9IGxh cHBlbmRfaW50KGp1bXBzX3RvX2NvZXJjZV9maW5pc2gsCisJCQkJCQkJCQkJCQkgc3RhdGUtPnN0 ZXBzX2xlbik7CisJCQlFeHByRXZhbFB1c2hTdGVwKHN0YXRlLCBzY3JhdGNoKTsKKwkJfQorCX0K KworCS8qCisJICogQWRkIHN0ZXAgdG8gcmVzZXQgdGhlIEVycm9yU2F2ZUNvbnRleHQgYW5kIHNl dCBlcnJvciBmbGFnIGlmIHRoZQorCSAqIGNvZXJjaW9uIHN0ZXBzIGVuY291bnRlcmVkIGFuIGVy cm9yIGJ1dCB3YXMgbm90IHRocm93biBiZWNhdXNlIG9mIHRoZQorCSAqIE9OIEVSUk9SIGJlaGF2 aW9yLgorCSAqLworCWlmIChqZXhwci0+cmVzdWx0X2NvZXJjaW9uIHx8IGpleHByLT5pdGVtX2Nv ZXJjaW9ucykKKwl7CisJCWZvcmVhY2gobGMsIGp1bXBzX3RvX2NvZXJjZV9maW5pc2gpCisJCXsK KwkJCWFzID0gJnN0YXRlLT5zdGVwc1tsZmlyc3RfaW50KGxjKV07CisJCQlhcy0+ZC5qdW1wLmp1 bXBkb25lID0gc3RhdGUtPnN0ZXBzX2xlbjsKKwkJfQorCisJCXNjcmF0Y2gtPm9wY29kZSA9IEVF T1BfSlNPTkVYUFJfQ09FUkNJT05fRklOSVNIOworCQlzY3JhdGNoLT5kLmpzb25leHByLmpzZXN0 YXRlID0ganNlc3RhdGU7CisJCUV4cHJFdmFsUHVzaFN0ZXAoc3RhdGUsIHNjcmF0Y2gpOworCX0K KworCWpzZXN0YXRlLT5qdW1wX2VtcHR5ID0ganNlc3RhdGUtPmp1bXBfZXJyb3IgPSAtMTsKKwor CS8qCisJICogU3RlcCB0byBoYW5kbGUgT04gRVJST1IgYmVoYXZpb3JzLiAgVGhpcyBoYW5kbGVz IGJvdGggdGhlIGVycm9ycyB0aGF0CisJICogb2NjdXIgZHVyaW5nIEVFT1BfSlNPTkVYUFJfUEFU SCBldmFsdWF0aW9uIGFuZCBzdWJzZXF1ZW50IGNvZXJjaW9uCisJICogZXZhbHVhdGlvbi4KKwkg Ki8KKwlpZiAoamV4cHItPm9uX2Vycm9yICYmCisJCWpleHByLT5vbl9lcnJvci0+YnR5cGUgIT0g SlNPTl9CRUhBVklPUl9FUlJPUikKKwl7CisJCWpzZXN0YXRlLT5qdW1wX2Vycm9yID0gc3RhdGUt PnN0ZXBzX2xlbjsKKwkJc2NyYXRjaC0+b3Bjb2RlID0gRUVPUF9KVU1QX0lGX05PVF9UUlVFOwor CisJCS8qCisJCSAqIHBvc3RfZXZhbC5lcnJvciBpcyBzZXQgYnkgRXhlY0V2YWxKc29uRXhwclBh dGgoKSBhbmQKKwkJICogRXhlY0V2YWxKc29uQ29lcmNpb25GaW5pc2goKS4KKwkJICovCisJCXNj cmF0Y2gtPnJlc3ZhbHVlID0gJnBvc3RfZXZhbC0+ZXJyb3IudmFsdWU7CisJCXNjcmF0Y2gtPnJl c251bGwgPSAmcG9zdF9ldmFsLT5lcnJvci5pc251bGw7CisJCXNjcmF0Y2gtPmQuanVtcC5qdW1w ZG9uZSA9IC0xOwkvKiBzZXQgYmVsb3cgKi8KKwkJanVtcHNfdG9fZW5kID0gbGFwcGVuZF9pbnQo anVtcHNfdG9fZW5kLCBzdGF0ZS0+c3RlcHNfbGVuKTsKKwkJRXhwckV2YWxQdXNoU3RlcChzdGF0 ZSwgc2NyYXRjaCk7CisKKwkJLyogU3RlcHMgdG8gZXZhbHVhdGUgdGhlIE9OIEVSUk9SIGV4cHJl c3Npb24gKi8KKwkJRXhlY0luaXRFeHByUmVjKChFeHByICopIGpleHByLT5vbl9lcnJvci0+ZXhw ciwKKwkJCQkJCXN0YXRlLCByZXN2LCByZXNudWxsKTsKKworCQkvKiBTdGVwcyB0byBjb2VyY2Ug dGhlIE9OIEVSUk9SIGV4cHJlc3Npb24gaWYgbmVlZGVkICovCisJCSh2b2lkKSBFeGVjSW5pdEpz b25FeHByQ29lcmNpb24oc3RhdGUsCisJCQkJCQkJCQkJKE5vZGUgKikgamV4cHItPm9uX2Vycm9y LT5jb2VyY2lvbiwKKwkJCQkJCQkJCQkmanNlc3RhdGUtPmVzY29udGV4dCwKKwkJCQkJCQkJCQly ZXN2LCByZXNudWxsKTsKKworCQlqdW1wc190b19lbmQgPSBsYXBwZW5kX2ludChqdW1wc190b19l bmQsIHN0YXRlLT5zdGVwc19sZW4pOworCQlzY3JhdGNoLT5vcGNvZGUgPSBFRU9QX0pVTVA7CisJ CXNjcmF0Y2gtPmQuanVtcC5qdW1wZG9uZSA9IC0xOworCQlFeHByRXZhbFB1c2hTdGVwKHN0YXRl LCBzY3JhdGNoKTsKKwl9CisKKwkvKiBTdGVwIHRvIGhhbmRsZSBPTiBFTVBUWSBiZWhhdmlvcnMu ICovCisJaWYgKGpleHByLT5vbl9lbXB0eSAhPSBOVUxMICYmCisJCWpleHByLT5vbl9lbXB0eS0+ YnR5cGUgIT0gSlNPTl9CRUhBVklPUl9FUlJPUikKKwl7CisJCWpzZXN0YXRlLT5qdW1wX2VtcHR5 ID0gc3RhdGUtPnN0ZXBzX2xlbjsKKworCQlzY3JhdGNoLT5vcGNvZGUgPSBFRU9QX0pVTVBfSUZf Tk9UX1RSVUU7CisJCXNjcmF0Y2gtPnJlc3ZhbHVlID0gJnBvc3RfZXZhbC0+ZW1wdHkudmFsdWU7 CisJCXNjcmF0Y2gtPnJlc251bGwgPSAmcG9zdF9ldmFsLT5lbXB0eS5pc251bGw7CisJCXNjcmF0 Y2gtPmQuanVtcC5qdW1wZG9uZSA9IC0xOwkvKiBzZXQgYmVsb3cgKi8KKwkJanVtcHNfdG9fZW5k ID0gbGFwcGVuZF9pbnQoanVtcHNfdG9fZW5kLCBzdGF0ZS0+c3RlcHNfbGVuKTsKKwkJRXhwckV2 YWxQdXNoU3RlcChzdGF0ZSwgc2NyYXRjaCk7CisKKwkJLyogU3RlcHMgdG8gZXZhbHVhdGUgdGhl IE9OIEVNUFRZIGV4cHJlc3Npb24gKi8KKwkJRXhlY0luaXRFeHByUmVjKChFeHByICopIGpleHBy LT5vbl9lbXB0eS0+ZXhwciwKKwkJCQkJCXN0YXRlLCByZXN2LCByZXNudWxsKTsKKworCQkvKiBT dGVwcyB0byBjb2VyY2UgdGhlIE9OIEVNUFRZIGV4cHJlc3Npb24gaWYgbmVlZGVkICovCisJCSh2 b2lkKSBFeGVjSW5pdEpzb25FeHByQ29lcmNpb24oc3RhdGUsCisJCQkJCQkJCQkJKE5vZGUgKikg amV4cHItPm9uX2VtcHR5LT5jb2VyY2lvbiwKKwkJCQkJCQkJCQkmanNlc3RhdGUtPmVzY29udGV4 dCwKKwkJCQkJCQkJCQlyZXN2LCByZXNudWxsKTsKKworCQlzY3JhdGNoLT5vcGNvZGUgPSBFRU9Q X0pVTVA7CisJCXNjcmF0Y2gtPmQuanVtcC5qdW1wZG9uZSA9IC0xOwkvKiBzZXQgYmVsb3cgKi8K KwkJanVtcHNfdG9fZW5kID0gbGFwcGVuZF9pbnQoanVtcHNfdG9fZW5kLCBzdGF0ZS0+c3RlcHNf bGVuKTsKKwkJRXhwckV2YWxQdXNoU3RlcChzdGF0ZSwgc2NyYXRjaCk7CisJfQorCisJaWYgKGpz ZXN0YXRlLT5qdW1wX2Vycm9yIDwgMCAmJiBqc2VzdGF0ZS0+anVtcF9lbXB0eSA8IDApCisJewor CQlzY3JhdGNoLT5vcGNvZGUgPSBFRU9QX0pVTVA7CisJCXNjcmF0Y2gtPmQuanVtcC5qdW1wZG9u ZSA9IC0xOwkvKiBzZXQgYmVsb3cgKi8KKwkJanVtcHNfdG9fZW5kID0gbGFwcGVuZF9pbnQoanVt cHNfdG9fZW5kLCBzdGF0ZS0+c3RlcHNfbGVuKTsKKwkJRXhwckV2YWxQdXNoU3RlcChzdGF0ZSwg c2NyYXRjaCk7CisJfQorCisJLyogUmV0dXJuIE5VTEwgd2hlbiBlaXRoZXIgZm9ybWF0dGVkX2V4 cHIgb3IgcGF0aHNwZWMgaXMgTlVMTC4gKi8KKwlmb3JlYWNoKGxjLCBqdW1wc19pZl9za2lwKQor CXsKKwkJYXMgPSAmc3RhdGUtPnN0ZXBzW2xmaXJzdF9pbnQobGMpXTsKKwkJYXMtPmQuanVtcC5q dW1wZG9uZSA9IHN0YXRlLT5zdGVwc19sZW47CisJfQorCXNjcmF0Y2gtPm9wY29kZSA9IEVFT1Bf Q09OU1Q7CisJc2NyYXRjaC0+cmVzdmFsdWUgPSByZXN2OworCXNjcmF0Y2gtPnJlc251bGwgPSBy ZXNudWxsOworCXNjcmF0Y2gtPmQuY29uc3R2YWwudmFsdWUgPSAoRGF0dW0pIDA7CisJc2NyYXRj aC0+ZC5jb25zdHZhbC5pc251bGwgPSB0cnVlOworCUV4cHJFdmFsUHVzaFN0ZXAoc3RhdGUsIHNj cmF0Y2gpOworCisJLyogSnVtcCB0byBjb2VyY2UgdGhlIE5VTEwgdXNpbmcgcmVzdWx0X2NvZXJj aW9uIGlzIHByZXNlbnQuICovCisJaWYgKGpzZXN0YXRlLT5qdW1wX2V2YWxfcmVzdWx0X2NvZXJj aW9uID49IDApCisJeworCQlzY3JhdGNoLT5vcGNvZGUgPSBFRU9QX0pVTVA7CisJCXNjcmF0Y2gt PmQuanVtcC5qdW1wZG9uZSA9IGpzZXN0YXRlLT5qdW1wX2V2YWxfcmVzdWx0X2NvZXJjaW9uOwor CQlFeHByRXZhbFB1c2hTdGVwKHN0YXRlLCBzY3JhdGNoKTsKKwl9CisKKwlmb3JlYWNoKGxjLCBq dW1wc190b19lbmQpCisJeworCQlhcyA9ICZzdGF0ZS0+c3RlcHNbbGZpcnN0X2ludChsYyldOwor CQlhcy0+ZC5qdW1wLmp1bXBkb25lID0gc3RhdGUtPnN0ZXBzX2xlbjsKKwl9CisKKwlqc2VzdGF0 ZS0+anVtcF9lbmQgPSBzdGF0ZS0+c3RlcHNfbGVuOworfQorCisvKiBJbml0aWFsaXplIG9uZSBK c29uQ29lcmNpb24gZm9yIGV4ZWN1dGlvbi4gKi8KK3N0YXRpYyBpbnQKK0V4ZWNJbml0SnNvbkV4 cHJDb2VyY2lvbihFeHByU3RhdGUgKnN0YXRlLCBOb2RlICpjb2VyY2lvbl9leHByLAorCQkJCQkJ IEVycm9yU2F2ZUNvbnRleHQgKmVzY29udGV4dCwKKwkJCQkJCSBEYXR1bSAqcmVzdiwgYm9vbCAq cmVzbnVsbCkKK3sKKwlpbnQJCQlqdW1wX2V2YWxfY29lcmNpb247CisJRGF0dW0JICAgKnNhdmVf aW5uZXJtb3N0X2Nhc2V2YWw7CisJYm9vbAkgICAqc2F2ZV9pbm5lcm1vc3RfY2FzZW51bGw7CisJ RXJyb3JTYXZlQ29udGV4dCAqc2F2ZV9lc2NvbnRleHQ7CisKKwlpZiAoY29lcmNpb25fZXhwciA9 PSBOVUxMKQorCQlyZXR1cm4gLTE7CisKKwlqdW1wX2V2YWxfY29lcmNpb24gPSBzdGF0ZS0+c3Rl cHNfbGVuOworCWlmIChJc0EoY29lcmNpb25fZXhwciwgSnNvbkNvZXJjaW9uKSkKKwl7CisJCUpz b25Db2VyY2lvbiAqY29lcmNpb24gPSAoSnNvbkNvZXJjaW9uICopIGNvZXJjaW9uX2V4cHI7CisJ CUV4cHJFdmFsU3RlcCBzY3JhdGNoID0gezB9OworCQlPaWQJCQl0eXBpbnB1dDsKKwkJRm1ncklu Zm8gICAqZmluZm87CisJCU9pZAkJCXR5cGlvcGFyYW07CisKKwkJZ2V0VHlwZUlucHV0SW5mbygo KEpzb25Db2VyY2lvbiAqKSBjb2VyY2lvbiktPnRhcmdldHR5cGUsCisJCQkJCQkgJnR5cGlucHV0 LCAmdHlwaW9wYXJhbSk7CisJCWZpbmZvID0gcGFsbG9jMChzaXplb2YoRm1nckluZm8pKTsKKwkJ Zm1ncl9pbmZvKHR5cGlucHV0LCBmaW5mbyk7CisKKwkJc2NyYXRjaC5vcGNvZGUgPSBFRU9QX0pT T05FWFBSX0NPRVJDSU9OOworCQlzY3JhdGNoLnJlc3ZhbHVlID0gcmVzdjsKKwkJc2NyYXRjaC5y ZXNudWxsID0gcmVzbnVsbDsKKwkJc2NyYXRjaC5kLmpzb25leHByX2NvZXJjaW9uLmNvZXJjaW9u ID0gY29lcmNpb247CisJCXNjcmF0Y2guZC5qc29uZXhwcl9jb2VyY2lvbi5pbnB1dF9maW5mbyA9 IGZpbmZvOworCQlzY3JhdGNoLmQuanNvbmV4cHJfY29lcmNpb24udHlwaW9wYXJhbSA9IHR5cGlv cGFyYW07CisJCXNjcmF0Y2guZC5qc29uZXhwcl9jb2VyY2lvbi5qc29uX3BvcHVsYXRlX3R5cGVf Y2FjaGUgPSBOVUxMOworCQlzY3JhdGNoLmQuanNvbmV4cHJfY29lcmNpb24uZXNjb250ZXh0ID0g ZXNjb250ZXh0OworCQlFeHByRXZhbFB1c2hTdGVwKHN0YXRlLCAmc2NyYXRjaCk7CisJCS8qIElu aXRpYWxpemUgdGhlIGNhc3QgZXhwcmVzc2lvbiBiZWxvdywgaWYgYW55LiAqLworCQlpZiAoY29l cmNpb24tPmNhc3RfZXhwciAhPSBOVUxMKQorCQkJY29lcmNpb25fZXhwciA9IGNvZXJjaW9uLT5j YXN0X2V4cHI7CisJCWVsc2UKKwkJCXJldHVybiBqdW1wX2V2YWxfY29lcmNpb247CisJfQorCisJ LyogUHVzaCBzdGVwKHMpIHRvIGNvbXB1dGUgY3N0YXRlLT5jb2VyY2lvbi4gKi8KKwlzYXZlX2lu bmVybW9zdF9jYXNldmFsID0gc3RhdGUtPmlubmVybW9zdF9jYXNldmFsOworCXNhdmVfaW5uZXJt b3N0X2Nhc2VudWxsID0gc3RhdGUtPmlubmVybW9zdF9jYXNlbnVsbDsKKwlzYXZlX2VzY29udGV4 dCA9IHN0YXRlLT5lc2NvbnRleHQ7CisKKwlzdGF0ZS0+aW5uZXJtb3N0X2Nhc2V2YWwgPSByZXN2 OworCXN0YXRlLT5pbm5lcm1vc3RfY2FzZW51bGwgPSByZXNudWxsOworCXN0YXRlLT5lc2NvbnRl eHQgPSBlc2NvbnRleHQ7CisKKwlFeGVjSW5pdEV4cHJSZWMoKEV4cHIgKikgY29lcmNpb25fZXhw ciwgc3RhdGUsIHJlc3YsIHJlc251bGwpOworCisJc3RhdGUtPmlubmVybW9zdF9jYXNldmFsID0g c2F2ZV9pbm5lcm1vc3RfY2FzZXZhbDsKKwlzdGF0ZS0+aW5uZXJtb3N0X2Nhc2VudWxsID0gc2F2 ZV9pbm5lcm1vc3RfY2FzZW51bGw7CisJc3RhdGUtPmVzY29udGV4dCA9IHNhdmVfZXNjb250ZXh0 OworCisJcmV0dXJuIGp1bXBfZXZhbF9jb2VyY2lvbjsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNFeHBySW50ZXJwLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj RXhwckludGVycC5jCmluZGV4IDdjMWY1MWUyZTAuLmJlYjQzMzNhMzUgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHBySW50ZXJwLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY0V4cHJJbnRlcnAuYwpAQCAtNzIsOCArNzIsOCBAQAogI2luY2x1ZGUgInV0aWxz L2RhdHVtLmgiCiAjaW5jbHVkZSAidXRpbHMvZXhwYW5kZWRyZWNvcmQuaCIKICNpbmNsdWRlICJ1 dGlscy9qc29uLmgiCi0jaW5jbHVkZSAidXRpbHMvanNvbmIuaCIKICNpbmNsdWRlICJ1dGlscy9q c29uZnVuY3MuaCIKKyNpbmNsdWRlICJ1dGlscy9qc29ucGF0aC5oIgogI2luY2x1ZGUgInV0aWxz L2xzeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVkZSAidXRp bHMvdGltZXN0YW1wLmgiCkBAIC0xODAsNiArMTgwLDEwIEBAIHN0YXRpYyBwZ19hdHRyaWJ1dGVf YWx3YXlzX2lubGluZSB2b2lkIEV4ZWNBZ2dQbGFpblRyYW5zQnlSZWYoQWdnU3RhdGUgKmFnZ3N0 YXRlCiAJCQkJCQkJCQkJCQkJCQkgIEFnZ1N0YXRlUGVyR3JvdXAgcGVyZ3JvdXAsCiAJCQkJCQkJ CQkJCQkJCQkgIEV4cHJDb250ZXh0ICphZ2djb250ZXh0LAogCQkJCQkJCQkJCQkJCQkJICBpbnQg c2V0bm8pOworc3RhdGljIHZvaWQgRXhlY1ByZXBhcmVKc29uSXRlbUNvZXJjaW9uKEpzb25iVmFs dWUgKml0ZW0sIEpzb25FeHByU3RhdGUgKmpzZXN0YXRlLAorCQkJCQkJCQkJCWJvb2wgdGhyb3df ZXJyb3IsCisJCQkJCQkJCQkJaW50ICpqdW1wX2V2YWxfaXRlbV9jb2VyY2lvbiwKKwkJCQkJCQkJ CQlEYXR1bSAqcmVzdmFsdWUsIGJvb2wgKnJlc251bGwpOwogCiAvKgogICogU2NhbGFyQXJyYXlP cEV4cHJIYXNoRW50cnkKQEAgLTQ4MSw2ICs0ODUsOSBAQCBFeGVjSW50ZXJwRXhwcihFeHByU3Rh dGUgKnN0YXRlLCBFeHByQ29udGV4dCAqZWNvbnRleHQsIGJvb2wgKmlzbnVsbCkKIAkJJiZDQVNF X0VFT1BfWE1MRVhQUiwKIAkJJiZDQVNFX0VFT1BfSlNPTl9DT05TVFJVQ1RPUiwKIAkJJiZDQVNF X0VFT1BfSVNfSlNPTiwKKwkJJiZDQVNFX0VFT1BfSlNPTkVYUFJfUEFUSCwKKwkJJiZDQVNFX0VF T1BfSlNPTkVYUFJfQ09FUkNJT04sCisJCSYmQ0FTRV9FRU9QX0pTT05FWFBSX0NPRVJDSU9OX0ZJ TklTSCwKIAkJJiZDQVNFX0VFT1BfQUdHUkVGLAogCQkmJkNBU0VfRUVPUF9HUk9VUElOR19GVU5D LAogCQkmJkNBU0VfRUVPUF9XSU5ET1dfRlVOQywKQEAgLTE1NTMsNiArMTU2MCwyOCBAQCBFeGVj SW50ZXJwRXhwcihFeHByU3RhdGUgKnN0YXRlLCBFeHByQ29udGV4dCAqZWNvbnRleHQsIGJvb2wg KmlzbnVsbCkKIAkJCUVFT19ORVhUKCk7CiAJCX0KIAorCQlFRU9fQ0FTRShFRU9QX0pTT05FWFBS X1BBVEgpCisJCXsKKwkJCS8qIHRvbyBjb21wbGV4IGZvciBhbiBpbmxpbmUgaW1wbGVtZW50YXRp b24gKi8KKwkJCUVFT19KVU1QKEV4ZWNFdmFsSnNvbkV4cHJQYXRoKHN0YXRlLCBvcCwgZWNvbnRl eHQpKTsKKwkJfQorCisJCUVFT19DQVNFKEVFT1BfSlNPTkVYUFJfQ09FUkNJT04pCisJCXsKKwkJ CS8qIHRvbyBjb21wbGV4IGZvciBhbiBpbmxpbmUgaW1wbGVtZW50YXRpb24gKi8KKwkJCUV4ZWNF dmFsSnNvbkNvZXJjaW9uKHN0YXRlLCBvcCwgZWNvbnRleHQpOworCisJCQlFRU9fTkVYVCgpOwor CQl9CisKKwkJRUVPX0NBU0UoRUVPUF9KU09ORVhQUl9DT0VSQ0lPTl9GSU5JU0gpCisJCXsKKwkJ CS8qIHRvbyBjb21wbGV4IGZvciBhbiBpbmxpbmUgaW1wbGVtZW50YXRpb24gKi8KKwkJCUV4ZWNF dmFsSnNvbkNvZXJjaW9uRmluaXNoKHN0YXRlLCBvcCk7CisKKwkJCUVFT19ORVhUKCk7CisJCX0K KwogCQlFRU9fQ0FTRShFRU9QX0FHR1JFRikKIAkJewogCQkJLyoKQEAgLTQyMTMsNiArNDI0Miwz NTggQEAgRXhlY0V2YWxKc29uSXNQcmVkaWNhdGUoRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxT dGVwICpvcCkKIAkqb3AtPnJlc3ZhbHVlID0gQm9vbEdldERhdHVtKHJlcyk7CiB9CiAKKy8qCisg KiBQZXJmb3JtcyBKc29uUGF0aHtFeGlzdHN8UXVlcnl8VmFsdWV9KCkgZm9yIGdpdmVuIGNvbnRl eHQgaXRlbSBhbmQgSlNPTgorICogcGF0aC4KKyAqCisgKiBSZXN1bHQgaXMgc2V0IGluICpvcC0+ cmVzdmFsdWUgYW5kICpvcC0+cmVzbnVsbC4gIFJldHVybiB2YWx1ZSBpcyB0aGUKKyAqIHN0ZXAg YWRkcmVzcyB0byBiZSBwZXJmb3JtZWQgbmV4dC4KKyAqCisgKiBPbiByZXR1cm4sIEpzb25FeHBy UG9zdEV2YWxTdGF0ZSBpcyBwb3B1bGF0ZWQgd2l0aCB0aGUgZm9sbG93aW5nIGRldGFpbHM6Cisg KgktIGVycm9yLnZhbHVlOiB0cnVlIGlmIGFuIGVycm9yIG9jY3VycmVkIGR1cmluZyBKc29uUGF0 aCBldmFsdWF0aW9uCisgKgktIGVtcHR5LnZhbHVlOiB0cnVlIGlmIEpzb25QYXRoe1F1ZXJ5fFZh bHVlfSgpIGZvdW5kIG5vIG1hdGNoaW5nIGl0ZW0KKyAqCisgKiBObyByZXR1cm4gaWYgdGhlIE9O IEVSUk9SL0VNUFRZIGJlaGF2aW9yIGlzIEVSUk9SLgorICovCitpbnQKK0V4ZWNFdmFsSnNvbkV4 cHJQYXRoKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJFdmFsU3RlcCAqb3AsCisJCQkJCSBFeHByQ29u dGV4dCAqZWNvbnRleHQpCit7CisJSnNvbkV4cHJTdGF0ZSAqanNlc3RhdGUgPSBvcC0+ZC5qc29u ZXhwci5qc2VzdGF0ZTsKKwlKc29uRXhwclBvc3RFdmFsU3RhdGUgKnBvc3RfZXZhbCA9ICZqc2Vz dGF0ZS0+cG9zdF9ldmFsOworCUpzb25FeHByICAgKmpleHByID0ganNlc3RhdGUtPmpzZXhwcjsK KwlEYXR1bQkJaXRlbTsKKwlKc29uUGF0aCAgICpwYXRoOworCWJvb2wJCXRocm93X2Vycm9yID0g amV4cHItPm9uX2Vycm9yLT5idHlwZSA9PSBKU09OX0JFSEFWSU9SX0VSUk9SOworCWJvb2wJCWVy cm9yID0gZmFsc2UsCisJCQkJZW1wdHkgPSBmYWxzZTsKKworCS8qIE1pZ2h0IGdldCBvdmVycmlk ZGVuIGZvciBKU09OX1ZBTFVFX09QIGJ5IGFuIHBlci1pdGVtIGNvZXJjaW9uLiAqLworCWludAkJ CWp1bXBfZXZhbF9jb2VyY2lvbiA9IGpzZXN0YXRlLT5qdW1wX2V2YWxfcmVzdWx0X2NvZXJjaW9u OworCisJaXRlbSA9IGpzZXN0YXRlLT5mb3JtYXR0ZWRfZXhwci52YWx1ZTsKKwlwYXRoID0gRGF0 dW1HZXRKc29uUGF0aFAoanNlc3RhdGUtPnBhdGhzcGVjLnZhbHVlKTsKKworCS8qIFJlc2V0IEpz b25FeHByUG9zdEV2YWxTdGF0ZSBmb3IgdGhpcyBldmFsdWF0aW9uLiAqLworCW1lbXNldChwb3N0 X2V2YWwsIDAsIHNpemVvZigqcG9zdF9ldmFsKSk7CisJc3dpdGNoIChqZXhwci0+b3ApCisJewor CQljYXNlIEpTT05fRVhJU1RTX09QOgorCQkJeworCQkJCWJvb2wJCWV4aXN0cyA9IEpzb25QYXRo RXhpc3RzKGl0ZW0sIHBhdGgsCisJCQkJCQkJCQkJCQkJIXRocm93X2Vycm9yID8gJmVycm9yIDog TlVMTCwKKwkJCQkJCQkJCQkJCQlqc2VzdGF0ZS0+YXJncyk7CisKKwkJCQlpZiAoIWVycm9yKQor CQkJCXsKKwkJCQkJKm9wLT5yZXN2YWx1ZSA9IEJvb2xHZXREYXR1bShleGlzdHMpOworCQkJCQkq b3AtPnJlc251bGwgPSBmYWxzZTsKKwkJCQl9CisJCQl9CisJCQlicmVhazsKKworCQljYXNlIEpT T05fUVVFUllfT1A6CisJCQkqb3AtPnJlc3ZhbHVlID0gSnNvblBhdGhRdWVyeShpdGVtLCBwYXRo LCBqZXhwci0+d3JhcHBlciwgJmVtcHR5LAorCQkJCQkJCQkJCSAgIXRocm93X2Vycm9yID8gJmVy cm9yIDogTlVMTCwKKwkJCQkJCQkJCQkgIGpzZXN0YXRlLT5hcmdzKTsKKworCQkJaWYgKCFlcnJv ciAmJiAhZW1wdHkpCisJCQkJKm9wLT5yZXNudWxsID0gKERhdHVtR2V0UG9pbnRlcigqb3AtPnJl c3ZhbHVlKSA9PSBOVUxMKTsKKwkJCWJyZWFrOworCisJCWNhc2UgSlNPTl9WQUxVRV9PUDoKKwkJ CXsKKwkJCQlKc29uYlZhbHVlICpqYnYgPSBKc29uUGF0aFZhbHVlKGl0ZW0sIHBhdGgsICZlbXB0 eSwKKwkJCQkJCQkJCQkJCSF0aHJvd19lcnJvciA/ICZlcnJvciA6IE5VTEwsCisJCQkJCQkJCQkJ CQlqc2VzdGF0ZS0+YXJncyk7CisKKwkJCQlpZiAoamJ2ID09IE5VTEwpCisJCQkJeworCQkJCQkv KiBXaWxsIGJlIGNvZXJjZWQgd2l0aCByZXN1bHRfY29lcmNpb24uICovCisJCQkJCSpvcC0+cmVz dmFsdWUgPSAoRGF0dW0pIDA7CisJCQkJCSpvcC0+cmVzbnVsbCA9IHRydWU7CisJCQkJfQorCQkJ CWVsc2UgaWYgKCFlcnJvciAmJiAhZW1wdHkpCisJCQkJeworCQkJCQkvKgorCQkJCQkgKiBJZiB0 aGUgcmVxdWVzdGVkIG91dHB1dCB0eXBlIGlzIGpzb24oYiksIHVzZQorCQkJCQkgKiByZXN1bHRf Y29lcmNpb24gdG8gZG8gdGhlIGNvZXJjaW9uLgorCQkJCQkgKi8KKwkJCQkJaWYgKGpleHByLT5y ZXR1cm5pbmctPnR5cGlkID09IEpTT05PSUQgfHwKKwkJCQkJCWpleHByLT5yZXR1cm5pbmctPnR5 cGlkID09IEpTT05CT0lEKQorCQkJCQl7CisJCQkJCQkqb3AtPnJlc3ZhbHVlID0gSnNvbmJQR2V0 RGF0dW0oSnNvbmJWYWx1ZVRvSnNvbmIoamJ2KSk7CisJCQkJCQkqb3AtPnJlc251bGwgPSBmYWxz ZTsKKwkJCQkJfQorCQkJCQllbHNlCisJCQkJCXsKKwkJCQkJCS8qCisJCQkJCQkgKiBFbHNlLCB1 c2Ugb25lIG9mIHRoZSBpdGVtX2NvZXJjaW9ucy4KKwkJCQkJCSAqCisJCQkJCQkgKiBFcnJvciBv dXQgaWYgbm8gY2FzdCBleHByZXNzaW9uIGV4aXN0cy4KKwkJCQkJCSAqLworCQkJCQkJRXhlY1By ZXBhcmVKc29uSXRlbUNvZXJjaW9uKGpidiwganNlc3RhdGUsIHRocm93X2Vycm9yLAorCQkJCQkJ CQkJCQkJCSZqdW1wX2V2YWxfY29lcmNpb24sCisJCQkJCQkJCQkJCQkJb3AtPnJlc3ZhbHVlLCBv cC0+cmVzbnVsbCk7CisJCQkJCX0KKwkJCQl9CisJCQkJYnJlYWs7CisJCQl9CisKKwkJZGVmYXVs dDoKKwkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgU1FML0pTT04gZXhwcmVzc2lvbiBvcCAl ZCIsIGpleHByLT5vcCk7CisJCQlyZXR1cm4gZmFsc2U7CisJfQorCisJaWYgKGVtcHR5KQorCXsK KwkJaWYgKGpleHByLT5vbl9lbXB0eSkKKwkJeworCQkJaWYgKGpleHByLT5vbl9lbXB0eS0+YnR5 cGUgPT0gSlNPTl9CRUhBVklPUl9FUlJPUikKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJZXJy Y29kZShFUlJDT0RFX05PX1NRTF9KU09OX0lURU0pLAorCQkJCQkJZXJybXNnKCJubyBTUUwvSlNP TiBpdGVtIikpOworCQkJZWxzZQorCQkJCXBvc3RfZXZhbC0+ZW1wdHkudmFsdWUgPSBCb29sR2V0 RGF0dW0odHJ1ZSk7CisKKwkJCUFzc2VydChqc2VzdGF0ZS0+anVtcF9lbXB0eSA+PSAwKTsKKwkJ CXJldHVybiBqc2VzdGF0ZS0+anVtcF9lbXB0eTsKKwkJfQorCQllbHNlIGlmIChqZXhwci0+b25f ZXJyb3ItPmJ0eXBlID09IEpTT05fQkVIQVZJT1JfRVJST1IpCisJCQllcmVwb3J0KEVSUk9SLAor CQkJCQllcnJjb2RlKEVSUkNPREVfTk9fU1FMX0pTT05fSVRFTSksCisJCQkJCWVycm1zZygibm8g U1FML0pTT04gaXRlbSIpKTsKKwkJZWxzZQorCQkJcG9zdF9ldmFsLT5lcnJvci52YWx1ZSA9IEJv b2xHZXREYXR1bSh0cnVlKTsKKworCQkqb3AtPnJlc3ZhbHVlID0gKERhdHVtKSAwOworCQkqb3At PnJlc251bGwgPSB0cnVlOworCisJCUFzc2VydChqc2VzdGF0ZS0+anVtcF9lcnJvciA+PSAwKTsK KwkJcmV0dXJuIGpzZXN0YXRlLT5qdW1wX2Vycm9yOworCX0KKworCWlmIChlcnJvcikKKwl7CisJ CUFzc2VydCghdGhyb3dfZXJyb3IgJiYganNlc3RhdGUtPmp1bXBfZXJyb3IgPj0gMCk7CisJCSpv cC0+cmVzdmFsdWUgPSAoRGF0dW0pIDA7CisJCSpvcC0+cmVzbnVsbCA9IHRydWU7CisJCXBvc3Rf ZXZhbC0+ZXJyb3IudmFsdWUgPSBCb29sR2V0RGF0dW0odHJ1ZSk7CisJCXJldHVybiBqc2VzdGF0 ZS0+anVtcF9lcnJvcjsKKwl9CisKKwkvKiBFbHNlIHJldHVybiB0aGUgY29lcmNpb24gc3RlcCBh ZGRyZXNzIG9yIHRoZSBhZGRyZXNzIHRvIHNraXAgdG8gZW5kLiAqLworCXJldHVybiBqdW1wX2V2 YWxfY29lcmNpb24gPj0gMCA/IGp1bXBfZXZhbF9jb2VyY2lvbiA6IGpzZXN0YXRlLT5qdW1wX2Vu ZDsKK30KKworLyoKKyAqIFNlbGVjdHMgYSBjb2VyY2lvbiBmb3IgYSBnaXZlbiBKc29uYlZhbHVl IGJhc2VkIG9uIGl0cyB0eXBlLgorICoKKyAqIE9uIHJldHVybiwgKnJlc3ZhbHVlIGFuZCAqcmVz bnVsbCBhcmUgc2V0IHRvIHRoZSB2YWx1ZSBleHRyYWN0ZWQgZnJvbSB0aGUKKyAqIEpzb25iVmFs dWUgYW5kICpqdW1wX2V2YWxfaXRlbV9jb2VyY2lvbiBpcyBzZXQgdG8gdGhlIHN0ZXAgYWRkcmVz cyBvZiB0aGUKKyAqIGNvZXJjaW9uIGV4cHJlc3Npb24uCisgKgorICogSWYgdGhlIGZvdW5kIGV4 cHJlc3Npb24gaXMgYSBKc29uQ29lcmNpb24gbm9kZSB0aGF0IG1lYW5zIHRoZSBwYXJzZXIKKyAq IGRpZG50JyBmaW5kIGEgY2FzdCB0byBkbyB0aGUgY29lcmNpb24sIHNvIHRocm93IGFuIGVycm9y IGlmIHRoZQorICogT04gRVJST1IgYmVoYXZpb3Igc2F5cyB0byBkbyBzby4KKyAqLworc3RhdGlj IHZvaWQKK0V4ZWNQcmVwYXJlSnNvbkl0ZW1Db2VyY2lvbihKc29uYlZhbHVlICppdGVtLCBKc29u RXhwclN0YXRlICpqc2VzdGF0ZSwKKwkJCQkJCQlib29sIHRocm93X2Vycm9yLAorCQkJCQkJCWlu dCAqanVtcF9ldmFsX2l0ZW1fY29lcmNpb24sCisJCQkJCQkJRGF0dW0gKnJlc3ZhbHVlLCBib29s ICpyZXNudWxsKQoreworCWludAkJICAgKmV2YWxfaXRlbV9jb2VyY2lvbl9qdW1wcyA9IGpzZXN0 YXRlLT5ldmFsX2l0ZW1fY29lcmNpb25fanVtcHM7CisJYm9vbAkgICAqaXRlbV9jb2VyY2lvbl92 aWFfZXhwciA9IGpzZXN0YXRlLT5pdGVtX2NvZXJjaW9uX3ZpYV9leHByOworCWJvb2wJCXZpYV9l eHByOworCWludAkJCWp1bXBfdG87CisJSnNvbmJWYWx1ZQlidWY7CisKKwlpZiAoaXRlbS0+dHlw ZSA9PSBqYnZCaW5hcnkgJiYgSnNvbkNvbnRhaW5lcklzU2NhbGFyKGl0ZW0tPnZhbC5iaW5hcnku ZGF0YSkpCisJeworCQlib29sCQlpc19zY2FsYXIgUEdfVVNFRF9GT1JfQVNTRVJUU19PTkxZOwor CisJCWlzX3NjYWxhciA9IEpzb25iRXh0cmFjdFNjYWxhcihpdGVtLT52YWwuYmluYXJ5LmRhdGEs ICZidWYpOworCQlpdGVtID0gJmJ1ZjsKKwkJQXNzZXJ0KGlzX3NjYWxhcik7CisJfQorCisJKnJl c251bGwgPSBmYWxzZTsKKworCS8qIGdldCBjb2VyY2lvbiBzdGF0ZSByZWZlcmVuY2UgYW5kIGRh dHVtIG9mIHRoZSBjb3JyZXNwb25kaW5nIFNRTCB0eXBlICovCisJc3dpdGNoIChpdGVtLT50eXBl KQorCXsKKwkJY2FzZSBqYnZOdWxsOgorCQkJdmlhX2V4cHIgPSBpdGVtX2NvZXJjaW9uX3ZpYV9l eHByW0pzb25JdGVtVHlwZU51bGxdOworCQkJanVtcF90byA9IGV2YWxfaXRlbV9jb2VyY2lvbl9q dW1wc1tKc29uSXRlbVR5cGVOdWxsXTsKKwkJCSpyZXN2YWx1ZSA9IChEYXR1bSkgMDsKKwkJCSpy ZXNudWxsID0gdHJ1ZTsKKwkJCWJyZWFrOworCisJCWNhc2UgamJ2U3RyaW5nOgorCQkJdmlhX2V4 cHIgPSBpdGVtX2NvZXJjaW9uX3ZpYV9leHByW0pzb25JdGVtVHlwZVN0cmluZ107CisJCQlqdW1w X3RvID0gZXZhbF9pdGVtX2NvZXJjaW9uX2p1bXBzW0pzb25JdGVtVHlwZVN0cmluZ107CisJCQkq cmVzdmFsdWUgPQorCQkJCVBvaW50ZXJHZXREYXR1bShjc3RyaW5nX3RvX3RleHRfd2l0aF9sZW4o aXRlbS0+dmFsLnN0cmluZy52YWwsCisJCQkJCQkJCQkJCQkJCSBpdGVtLT52YWwuc3RyaW5nLmxl bikpOworCQkJYnJlYWs7CisKKwkJY2FzZSBqYnZOdW1lcmljOgorCQkJdmlhX2V4cHIgPSBpdGVt X2NvZXJjaW9uX3ZpYV9leHByW0pzb25JdGVtVHlwZU51bWVyaWNdOworCQkJanVtcF90byA9IGV2 YWxfaXRlbV9jb2VyY2lvbl9qdW1wc1tKc29uSXRlbVR5cGVOdW1lcmljXTsKKwkJCSpyZXN2YWx1 ZSA9IE51bWVyaWNHZXREYXR1bShpdGVtLT52YWwubnVtZXJpYyk7CisJCQlicmVhazsKKworCQlj YXNlIGpidkJvb2w6CisJCQl2aWFfZXhwciA9IGl0ZW1fY29lcmNpb25fdmlhX2V4cHJbSnNvbkl0 ZW1UeXBlQm9vbGVhbl07CisJCQlqdW1wX3RvID0gZXZhbF9pdGVtX2NvZXJjaW9uX2p1bXBzW0pz b25JdGVtVHlwZUJvb2xlYW5dOworCQkJKnJlc3ZhbHVlID0gQm9vbEdldERhdHVtKGl0ZW0tPnZh bC5ib29sZWFuKTsKKwkJCWJyZWFrOworCisJCWNhc2UgamJ2RGF0ZXRpbWU6CisJCQkqcmVzdmFs dWUgPSBpdGVtLT52YWwuZGF0ZXRpbWUudmFsdWU7CisJCQlzd2l0Y2ggKGl0ZW0tPnZhbC5kYXRl dGltZS50eXBpZCkKKwkJCXsKKwkJCQljYXNlIERBVEVPSUQ6CisJCQkJCXZpYV9leHByID0gaXRl bV9jb2VyY2lvbl92aWFfZXhwcltKc29uSXRlbVR5cGVEYXRlXTsKKwkJCQkJanVtcF90byA9IGV2 YWxfaXRlbV9jb2VyY2lvbl9qdW1wc1tKc29uSXRlbVR5cGVEYXRlXTsKKwkJCQkJYnJlYWs7CisJ CQkJY2FzZSBUSU1FT0lEOgorCQkJCQl2aWFfZXhwciA9IGl0ZW1fY29lcmNpb25fdmlhX2V4cHJb SnNvbkl0ZW1UeXBlVGltZV07CisJCQkJCWp1bXBfdG8gPSBldmFsX2l0ZW1fY29lcmNpb25fanVt cHNbSnNvbkl0ZW1UeXBlVGltZV07CisJCQkJCWJyZWFrOworCQkJCWNhc2UgVElNRVRaT0lEOgor CQkJCQl2aWFfZXhwciA9IGl0ZW1fY29lcmNpb25fdmlhX2V4cHJbSnNvbkl0ZW1UeXBlVGltZXR6 XTsKKwkJCQkJanVtcF90byA9IGV2YWxfaXRlbV9jb2VyY2lvbl9qdW1wc1tKc29uSXRlbVR5cGVU aW1ldHpdOworCQkJCQlicmVhazsKKwkJCQljYXNlIFRJTUVTVEFNUE9JRDoKKwkJCQkJdmlhX2V4 cHIgPSBpdGVtX2NvZXJjaW9uX3ZpYV9leHByW0pzb25JdGVtVHlwZVRpbWVzdGFtcF07CisJCQkJ CWp1bXBfdG8gPSBldmFsX2l0ZW1fY29lcmNpb25fanVtcHNbSnNvbkl0ZW1UeXBlVGltZXN0YW1w XTsKKwkJCQkJYnJlYWs7CisJCQkJY2FzZSBUSU1FU1RBTVBUWk9JRDoKKwkJCQkJdmlhX2V4cHIg PSBpdGVtX2NvZXJjaW9uX3ZpYV9leHByW0pzb25JdGVtVHlwZVRpbWVzdGFtcHR6XTsKKwkJCQkJ anVtcF90byA9IGV2YWxfaXRlbV9jb2VyY2lvbl9qdW1wc1tKc29uSXRlbVR5cGVUaW1lc3RhbXB0 el07CisJCQkJCWJyZWFrOworCQkJCWRlZmF1bHQ6CisJCQkJCWVsb2coRVJST1IsICJ1bmV4cGVj dGVkIGpzb25iIGRhdGV0aW1lIHR5cGUgb2lkICV1IiwKKwkJCQkJCSBpdGVtLT52YWwuZGF0ZXRp bWUudHlwaWQpOworCQkJfQorCQkJYnJlYWs7CisKKwkJY2FzZSBqYnZBcnJheToKKwkJY2FzZSBq YnZPYmplY3Q6CisJCWNhc2UgamJ2QmluYXJ5OgorCQkJdmlhX2V4cHIgPSBpdGVtX2NvZXJjaW9u X3ZpYV9leHByW0pzb25JdGVtVHlwZUNvbXBvc2l0ZV07CisJCQlqdW1wX3RvID0gZXZhbF9pdGVt X2NvZXJjaW9uX2p1bXBzW0pzb25JdGVtVHlwZUNvbXBvc2l0ZV07CisJCQkqcmVzdmFsdWUgPSBK c29uYlBHZXREYXR1bShKc29uYlZhbHVlVG9Kc29uYihpdGVtKSk7CisJCQlicmVhazsKKworCQlk ZWZhdWx0OgorCQkJZWxvZyhFUlJPUiwgInVuZXhwZWN0ZWQganNvbmIgdmFsdWUgdHlwZSAlZCIs IGl0ZW0tPnR5cGUpOworCX0KKworCS8qIElmIHRoZSBleHByZXNzaW9uIGlzIGEgSnNvbkNvZXJj aW9uLCB0aHJvdyBhbiBlcnJvci4gKi8KKwlpZiAoanVtcF90byA+PSAwICYmICF2aWFfZXhwcikK Kwl7CisJCWlmICh0aHJvd19lcnJvcikKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCWVycmNvZGUo RVJSQ09ERV9TUUxfSlNPTl9JVEVNX0NBTk5PVF9CRV9DQVNUX1RPX1RBUkdFVF9UWVBFKSwKKwkJ CQkJZXJybXNnKCJTUUwvSlNPTiBpdGVtIGNhbm5vdCBiZSBjYXN0IHRvIHRhcmdldCB0eXBlIikp OworCisJCSpyZXN2YWx1ZSA9IChEYXR1bSkgMDsKKwkJKnJlc251bGwgPSB0cnVlOworCX0KKwor CSpqdW1wX2V2YWxfaXRlbV9jb2VyY2lvbiA9IGp1bXBfdG87Cit9CisKKy8qCisgKiBDb2VyY2Ug YSBqc29uYiBvciBhIHNjYWxhciBzdHJpbmcgdmFsdWUgcHJvZHVjZWQgYnkgRXhlY0V2YWxKc29u RXhwclBhdGgoKQorICogb3IgYW4gT04gRVJST1IgLyBFTVBUWSBiZWhhdmlvciBleHByZXNzaW9u IHRvIHRoZSB0YXJnZXQgdHlwZS4KKyAqCisgKiBUaGlzIGlzIGFsc28gcmVzcG9uc2libGUgZm9y IHJlbW92aW5nIGFueSBxdW90ZXMgcHJlc2VudCBpbiBhIHNjYWxhciBzb3VyY2UKKyAqIHZhbHVl IGJlZm9yZSBjb2VyY2luZyB0byB0aGUgdGFyZ2V0IHR5cGUgaWYgSnNvbkNvZXJjaW9uLm9taXRf cXVvdGVzIGlzCisgKiB0cnVlICh0aGUgT01JVCBRVU9URVMgY2xhdXNlKS4KKyAqCisgKiBBbnkg c29mdCBlcnJvcnMgdGhhdCBvY2N1ciBoZXJlIHdpbGwgYmUgY2hlY2tlZCBieQorICogRUVPUF9K U09ORVhQUl9DT0VSQ0lPTl9GSU5JU0ggdGhhdCB3aWxsIHJ1biBhZnRlciB0aGlzLgorICovCit2 b2lkCitFeGVjRXZhbEpzb25Db2VyY2lvbihFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAg Km9wLAorCQkJCQkgRXhwckNvbnRleHQgKmVjb250ZXh0KQoreworCUpzb25Db2VyY2lvbiAqY29l cmNpb24gPSBvcC0+ZC5qc29uZXhwcl9jb2VyY2lvbi5jb2VyY2lvbjsKKwlFcnJvclNhdmVDb250 ZXh0ICplc2NvbnRleHQgPSBvcC0+ZC5qc29uZXhwcl9jb2VyY2lvbi5lc2NvbnRleHQ7CisJRGF0 dW0JCXJlcyA9ICpvcC0+cmVzdmFsdWU7CisKKwkvKgorCSAqIEhhbmRsZSBPTUlUIFFVT1RFUy4K KwkgKgorCSAqIE5vcm1hbGx5LCBqc29uX3BvcHVsYXRlX3R5cGUoKSBpcyB0aGUgcGxhY2UgdG8g Y29lcmNlIGpzb25iIHZhbHVlcyB0bworCSAqIHRoZSByZXF1ZXN0ZWQgdGFyZ2V0IHR5cGUsIGlu Y2x1ZGluZyB0aG9zZSB0aGF0IGFyZSBzY2FsYXIgc3RyaW5ncywgYnV0CisJICogaXQgZG9lc24n dCBoYXZlIHRoZSBzdXBwb3J0IGZvciByZW1vdmluZyBxdW90ZXMgdG8gaW1wbGVtZW50IHRoZQor CSAqIE9NSVQgUVVPVEVTIGNsYXVzZSwgc28gd2UgaGFuZGxlIGl0IGhlcmUuCisJICovCisJaWYg KGNvZXJjaW9uLT5vbWl0X3F1b3RlcykKKwl7CisJCUZtZ3JJbmZvICAgKmlucHV0X2ZpbmZvID0g b3AtPmQuanNvbmV4cHJfY29lcmNpb24uaW5wdXRfZmluZm87CisJCU9pZAkJCXR5cGlvcGFyYW0g PSBvcC0+ZC5qc29uZXhwcl9jb2VyY2lvbi50eXBpb3BhcmFtOworCQljaGFyCSAgICp2YWwgPSAh Km9wLT5yZXNudWxsID8KKwkJCUpzb25iVW5xdW90ZShEYXR1bUdldEpzb25iUChyZXMpKSA6IE5V TEw7CisKKwkJLyoKKwkJICogSWYgdGhlIGNvZXJjaW9uIG11c3QgYmUgZG9uZSB1c2luZyBhIGNh c3QgZXhwcmVzc2lvbiwgcGFzcyB0byBpdAorCQkgKiB0aGUgdGV4dCB2ZXJzaW9uIG9mIHRoZSBx dW90ZS1zdHJpcHBlZCBzdHJpbmcuICBJZiBub3QsIGZpbmlzaCB0aGUKKwkJICogY29lcmNpb24g YnkgY2FsbGluZyB0aGUgaW5wdXQgZnVuY3Rpb24uCisJCSAqLworCQlpZiAoY29lcmNpb24tPmNh c3RfZXhwcikKKwkJCSpvcC0+cmVzdmFsdWUgPSBEaXJlY3RGdW5jdGlvbkNhbGwxKHRleHRpbiwK KwkJCQkJCQkJCQkJCUNTdHJpbmdHZXREYXR1bSh2YWwpKTsKKwkJZWxzZQorCQkJKHZvaWQpIElu cHV0RnVuY3Rpb25DYWxsU2FmZShpbnB1dF9maW5mbywgdmFsLCB0eXBpb3BhcmFtLAorCQkJCQkJ CQkJCSBjb2VyY2lvbi0+dGFyZ2V0dHlwbW9kLAorCQkJCQkJCQkJCSAoTm9kZSAqKSBlc2NvbnRl eHQsCisJCQkJCQkJCQkJIG9wLT5yZXN2YWx1ZSk7CisJfQorCWVsc2UKKwl7CisJCXZvaWQJICAg KmNhY2hlID0gb3AtPmQuanNvbmV4cHJfY29lcmNpb24uanNvbl9wb3B1bGF0ZV90eXBlX2NhY2hl OworCisJCSpvcC0+cmVzdmFsdWUgPSBqc29uX3BvcHVsYXRlX3R5cGUocmVzLCBKU09OQk9JRCwK KwkJCQkJCQkJCQkgICBjb2VyY2lvbi0+dGFyZ2V0dHlwZSwKKwkJCQkJCQkJCQkgICBjb2VyY2lv bi0+dGFyZ2V0dHlwbW9kLAorCQkJCQkJCQkJCSAgICZjYWNoZSwKKwkJCQkJCQkJCQkgICBlY29u dGV4dC0+ZWN4dF9wZXJfcXVlcnlfbWVtb3J5LAorCQkJCQkJCQkJCSAgIG9wLT5yZXNudWxsLCAo Tm9kZSAqKSBlc2NvbnRleHQpOworCX0KK30KKworLyoKKyAqIENoZWNrcyBpZiB0aGUgY29lcmNp b24gZXZhbHVhdGlvbiBsZWQgdG8gYW4gZXJyb3IuICBJZiBhbiBlcnJvciBkaWQgb2NjdXIsCisg KiB0aGlzIHNldHMgcG9zdF9ldmFsLT5lcnJvciB0byB0cmlnZ2VyIHRoZSBzdWJzZXF1ZW50IE9O IEVSUk9SIGhhbmRsaW5nCisgKiBzdGVwcy4KKyAqLwordm9pZAorRXhlY0V2YWxKc29uQ29lcmNp b25GaW5pc2goRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCkKK3sKKwlKc29uRXhw clN0YXRlICpqc2VzdGF0ZSA9IG9wLT5kLmpzb25leHByLmpzZXN0YXRlOworCisJaWYgKFNPRlRf RVJST1JfT0NDVVJSRUQoJmpzZXN0YXRlLT5lc2NvbnRleHQpKQorCXsKKwkJKm9wLT5yZXN2YWx1 ZSA9IChEYXR1bSkgMDsKKwkJKm9wLT5yZXNudWxsID0gdHJ1ZTsKKwkJanNlc3RhdGUtPnBvc3Rf ZXZhbC5lcnJvci52YWx1ZSA9IEJvb2xHZXREYXR1bSh0cnVlKTsKKworCQkvKgorCQkgKiBBbHNv IG1ha2UgRXJyb3JTYXZlQ29udGV4dCByZWFkeSBmb3IgdGhlIG5leHQgcm93LiAgU2luY2Ugd2Ug bmV2ZXIKKwkJICogc2V0IGRldGFpbHNfd2FudGVkLCB3ZSBkb24ndCBuZWVkIHRvIGFsc28gcmVz ZXQgZXJyb3JfZGF0YSwgd2hpY2gKKwkJICogd291bGQgYmUgTlVMTCBhbnl3YXkuCisJCSAqLwor CQlBc3NlcnQoIWpzZXN0YXRlLT5lc2NvbnRleHQuZGV0YWlsc193YW50ZWQgJiYKKwkJCSAgIGpz ZXN0YXRlLT5lc2NvbnRleHQuZXJyb3JfZGF0YSA9PSBOVUxMKTsKKwkJanNlc3RhdGUtPmVzY29u dGV4dC5lcnJvcl9vY2N1cnJlZCA9IGZhbHNlOworCX0KK30KIAogLyoKICAqIEV4ZWNFdmFsR3Jv dXBpbmdGdW5jCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9qaXQvbGx2bS9sbHZtaml0X2V4cHIu YyBiL3NyYy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1qaXRfZXhwci5jCmluZGV4IDBjNDQ4NDIyZTIu LjMyMjkyZjllYzggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1qaXRfZXhw ci5jCisrKyBiL3NyYy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1qaXRfZXhwci5jCkBAIC0xOTMwLDYg KzE5MzAsMTUwIEBAIGxsdm1fY29tcGlsZV9leHByKEV4cHJTdGF0ZSAqc3RhdGUpCiAJCQkJTExW TUJ1aWxkQnIoYiwgb3BibG9ja3Nbb3BubyArIDFdKTsKIAkJCQlicmVhazsKIAorCQkJY2FzZSBF RU9QX0pTT05FWFBSX1BBVEg6CisJCQkJeworCQkJCQlKc29uRXhwclN0YXRlICpqc2VzdGF0ZSA9 IG9wLT5kLmpzb25leHByLmpzZXN0YXRlOworCQkJCQlMTFZNVmFsdWVSZWYgdl9yZXQ7CisKKwkJ CQkJLyoKKwkJCQkJICogQ2FsbCBFeGVjRXZhbEpzb25FeHByUGF0aCgpLiAgSXQgcmV0dXJucyB0 aGUgYWRkcmVzcyBvZgorCQkJCQkgKiB0aGUgc3RlcCB0byBwZXJmb3JtIG5leHQuCisJCQkJCSAq LworCQkJCQl2X3JldCA9IGJ1aWxkX0V2YWxYRnVuYyhiLCBtb2QsICJFeGVjRXZhbEpzb25FeHBy UGF0aCIsCisJCQkJCQkJCQkJCXZfc3RhdGUsIG9wLCB2X2Vjb250ZXh0KTsKKworCQkJCQkvKgor CQkJCQkgKiBCdWlsZCBhIHN3aXRjaCB0byBtYXAgdGhlIHJldHVybiB2YWx1ZSwgd2hpY2ggaXMg YQorCQkJCQkgKiBydW50aW1lIHZhbHVlIG9mIHRoZSBzdGVwIGFkZHJlc3MgdG8gcGVyZm9ybSBu ZXh0LCB0bworCQkJCQkgKiBlaXRoZXIganVtcF9lbXB0eSwganVtcF9lcnJvciwgb3IgdGhlIGNv ZXJjaW9uCisJCQkJCSAqIGV4cHJlc3Npb24uCisJCQkJCSAqLworCQkJCQlpZiAoanNlc3RhdGUt Pmp1bXBfZW1wdHkgPj0gMCB8fAorCQkJCQkJanNlc3RhdGUtPmp1bXBfZXJyb3IgPj0gMCB8fAor CQkJCQkJanNlc3RhdGUtPmp1bXBfZXZhbF9yZXN1bHRfY29lcmNpb24gPj0gMCB8fAorCQkJCQkJ anNlc3RhdGUtPm51bV9pdGVtX2NvZXJjaW9ucyA+IDApCisJCQkJCXsKKwkJCQkJCWludAkJCWk7 CisJCQkJCQlMTFZNVmFsdWVSZWYgdl9qdW1wX2VtcHR5OworCQkJCQkJTExWTVZhbHVlUmVmIHZf anVtcF9lcnJvcjsKKwkJCQkJCUxMVk1WYWx1ZVJlZiB2X2p1bXBfY29lcmNpb247CisJCQkJCQlM TFZNVmFsdWVSZWYgdl9zd2l0Y2g7CisJCQkJCQlMTFZNQmFzaWNCbG9ja1JlZiBiX2RvbmUsCisJ CQkJCQkJCQliX2VtcHR5LAorCQkJCQkJCQkJYl9lcnJvciwKKwkJCQkJCQkJCWJfcmVzdWx0X2Nv ZXJjaW9uLAorCQkJCQkJCQkgICAqYl9pdGVtX2NvZXJjaW9ucyA9IE5VTEw7CisKKwkJCQkJCWJf ZW1wdHkgPQorCQkJCQkJCWxfYmJfYmVmb3JlX3Yob3BibG9ja3Nbb3BubyArIDFdLAorCQkJCQkJ CQkJCSAgIm9wLiVkLmpzb25leHByX2VtcHR5Iiwgb3Bubyk7CisJCQkJCQliX2Vycm9yID0KKwkJ CQkJCQlsX2JiX2JlZm9yZV92KG9wYmxvY2tzW29wbm8gKyAxXSwKKwkJCQkJCQkJCQkgICJvcC4l ZC5qc29uZXhwcl9lcnJvciIsIG9wbm8pOworCQkJCQkJYl9yZXN1bHRfY29lcmNpb24gPQorCQkJ CQkJCWxfYmJfYmVmb3JlX3Yob3BibG9ja3Nbb3BubyArIDFdLAorCQkJCQkJCQkJCSAgIm9wLiVk Lmpzb25leHByX3Jlc3VsdF9jb2VyY2lvbiIsIG9wbm8pOworCQkJCQkJaWYgKGpzZXN0YXRlLT5u dW1faXRlbV9jb2VyY2lvbnMgPiAwKQorCQkJCQkJeworCQkJCQkJCWJfaXRlbV9jb2VyY2lvbnMg PSBwYWxsb2Moc2l6ZW9mKExMVk1CYXNpY0Jsb2NrUmVmKSAqCisJCQkJCQkJCQkJCQkJICBqc2Vz dGF0ZS0+bnVtX2l0ZW1fY29lcmNpb25zKTsKKwkJCQkJCQlmb3IgKGkgPSAwOyBpIDwganNlc3Rh dGUtPm51bV9pdGVtX2NvZXJjaW9uczsgaSsrKQorCQkJCQkJCXsKKwkJCQkJCQkJYl9pdGVtX2Nv ZXJjaW9uc1tpXSA9CisJCQkJCQkJCQlsX2JiX2JlZm9yZV92KG9wYmxvY2tzW29wbm8gKyAxXSwK KwkJCQkJCQkJCQkJCSAgIm9wLiVkLmpzb25leHByX2l0ZW1fY29lcmNpb24uJWQiLAorCQkJCQkJ CQkJCQkJICBvcG5vLCBpKTsKKwkJCQkJCQl9CisJCQkJCQl9CisJCQkJCQliX2RvbmUgPQorCQkJ CQkJCWxfYmJfYmVmb3JlX3Yob3BibG9ja3Nbb3BubyArIDFdLAorCQkJCQkJCQkJCSAgIm9wLiVk Lmpzb25leHByX2RvbmUiLCBvcG5vKTsKKworCQkJCQkJdl9zd2l0Y2ggPSBMTFZNQnVpbGRTd2l0 Y2goYiwKKwkJCQkJCQkJCQkJCSAgIHZfcmV0LAorCQkJCQkJCQkJCQkJICAgYl9kb25lLAorCQkJ CQkJCQkJCQkJICAganNlc3RhdGUtPm51bV9pdGVtX2NvZXJjaW9ucyArIDMpOworCQkJCQkJLyog UmV0dXJuZWQganNlc3RhdGUtPmp1bXBfZW1wdHk/ICovCisJCQkJCQlpZiAoanNlc3RhdGUtPmp1 bXBfZW1wdHkgPj0gMCkKKwkJCQkJCXsKKwkJCQkJCQl2X2p1bXBfZW1wdHkgPSBsX2ludDMyX2Nv bnN0KGxjLCBqc2VzdGF0ZS0+anVtcF9lbXB0eSk7CisJCQkJCQkJTExWTUFkZENhc2Uodl9zd2l0 Y2gsIHZfanVtcF9lbXB0eSwgYl9lbXB0eSk7CisJCQkJCQl9CisJCQkJCQkvKiBSZXR1cm5lZCBq c2VzdGF0ZS0+anVtcF9lcnJvcj8gKi8KKwkJCQkJCWlmIChqc2VzdGF0ZS0+anVtcF9lcnJvciA+ PSAwKQorCQkJCQkJeworCQkJCQkJCXZfanVtcF9lcnJvciA9IGxfaW50MzJfY29uc3QobGMsIGpz ZXN0YXRlLT5qdW1wX2Vycm9yKTsKKwkJCQkJCQlMTFZNQWRkQ2FzZSh2X3N3aXRjaCwgdl9qdW1w X2Vycm9yLCBiX2Vycm9yKTsKKwkJCQkJCX0KKwkJCQkJCS8qIFJldHVybmVkIGpzZXN0YXRlLT5q dW1wX2V2YWxfcmVzdWx0X2NvZXJjaW9uPyAqLworCQkJCQkJaWYgKGpzZXN0YXRlLT5qdW1wX2V2 YWxfcmVzdWx0X2NvZXJjaW9uID49IDApCisJCQkJCQl7CisJCQkJCQkJdl9qdW1wX2NvZXJjaW9u ID0gbF9pbnQzMl9jb25zdChsYywganNlc3RhdGUtPmp1bXBfZXZhbF9yZXN1bHRfY29lcmNpb24p OworCQkJCQkJCUxMVk1BZGRDYXNlKHZfc3dpdGNoLCB2X2p1bXBfY29lcmNpb24sIGJfcmVzdWx0 X2NvZXJjaW9uKTsKKwkJCQkJCX0KKworCQkJCQkJLyoKKwkJCQkJCSAqIFJldHVybmVkIG9uZSBv ZgorCQkJCQkJICoganNlc3RhdGUtPmV2YWxfaXRlbV9jb2VyY2lvbl9qdW1wc1tdPworCQkJCQkJ ICovCisJCQkJCQlmb3IgKGkgPSAwOyBpIDwganNlc3RhdGUtPm51bV9pdGVtX2NvZXJjaW9uczsg aSsrKQorCQkJCQkJeworCQkJCQkJCWlmIChqc2VzdGF0ZS0+ZXZhbF9pdGVtX2NvZXJjaW9uX2p1 bXBzW2ldID49IDApCisJCQkJCQkJeworCQkJCQkJCQl2X2p1bXBfY29lcmNpb24gPSBsX2ludDMy X2NvbnN0KGxjLCBqc2VzdGF0ZS0+ZXZhbF9pdGVtX2NvZXJjaW9uX2p1bXBzW2ldKTsKKwkJCQkJ CQkJTExWTUFkZENhc2Uodl9zd2l0Y2gsIHZfanVtcF9jb2VyY2lvbiwgYl9pdGVtX2NvZXJjaW9u c1tpXSk7CisJCQkJCQkJfQorCQkJCQkJfQorCisJCQkJCQkvKiBPTiBFTVBUWSBjb2RlICovCisJ CQkJCQlMTFZNUG9zaXRpb25CdWlsZGVyQXRFbmQoYiwgYl9lbXB0eSk7CisJCQkJCQlpZiAoanNl c3RhdGUtPmp1bXBfZW1wdHkgPj0gMCkKKwkJCQkJCQlMTFZNQnVpbGRCcihiLCBvcGJsb2Nrc1tq c2VzdGF0ZS0+anVtcF9lbXB0eV0pOworCQkJCQkJZWxzZQorCQkJCQkJCUxMVk1CdWlsZFVucmVh Y2hhYmxlKGIpOworCQkJCQkJLyogT04gRVJST1IgY29kZSAqLworCQkJCQkJTExWTVBvc2l0aW9u QnVpbGRlckF0RW5kKGIsIGJfZXJyb3IpOworCQkJCQkJaWYgKGpzZXN0YXRlLT5qdW1wX2Vycm9y ID49IDApCisJCQkJCQkJTExWTUJ1aWxkQnIoYiwgb3BibG9ja3NbanNlc3RhdGUtPmp1bXBfZXJy b3JdKTsKKwkJCQkJCWVsc2UKKwkJCQkJCQlMTFZNQnVpbGRVbnJlYWNoYWJsZShiKTsKKwkJCQkJ CS8qIHJlc3VsdF9jb2VyY2lvbiBjb2RlICovCisJCQkJCQlMTFZNUG9zaXRpb25CdWlsZGVyQXRF bmQoYiwgYl9yZXN1bHRfY29lcmNpb24pOworCQkJCQkJaWYgKGpzZXN0YXRlLT5qdW1wX2V2YWxf cmVzdWx0X2NvZXJjaW9uID49IDApCisJCQkJCQkJTExWTUJ1aWxkQnIoYiwgb3BibG9ja3NbanNl c3RhdGUtPmp1bXBfZXZhbF9yZXN1bHRfY29lcmNpb25dKTsKKwkJCQkJCWVsc2UKKwkJCQkJCQlM TFZNQnVpbGRVbnJlYWNoYWJsZShiKTsKKwkJCQkJCS8qIGl0ZW0gY29lcmNpb24gY29kZSBibG9j a3MgKi8KKwkJCQkJCWZvciAoaSA9IDA7IGkgPCBqc2VzdGF0ZS0+bnVtX2l0ZW1fY29lcmNpb25z OyBpKyspCisJCQkJCQl7CisJCQkJCQkJTExWTVBvc2l0aW9uQnVpbGRlckF0RW5kKGIsIGJfaXRl bV9jb2VyY2lvbnNbaV0pOworCQkJCQkJCWlmIChqc2VzdGF0ZS0+ZXZhbF9pdGVtX2NvZXJjaW9u X2p1bXBzW2ldID49IDApCisJCQkJCQkJCUxMVk1CdWlsZEJyKGIsIG9wYmxvY2tzW2pzZXN0YXRl LT5ldmFsX2l0ZW1fY29lcmNpb25fanVtcHNbaV1dKTsKKwkJCQkJCQllbHNlCisJCQkJCQkJCUxM Vk1CdWlsZFVucmVhY2hhYmxlKGIpOworCQkJCQkJfQorCisJCQkJCQlMTFZNUG9zaXRpb25CdWls ZGVyQXRFbmQoYiwgYl9kb25lKTsKKwkJCQkJfQorCisJCQkJCUxMVk1CdWlsZEJyKGIsIG9wYmxv Y2tzW29wbm8gKyAxXSk7CisJCQkJCWJyZWFrOworCQkJCX0KKworCQkJY2FzZSBFRU9QX0pTT05F WFBSX0NPRVJDSU9OOgorCQkJCWJ1aWxkX0V2YWxYRnVuYyhiLCBtb2QsICJFeGVjRXZhbEpzb25D b2VyY2lvbiIsCisJCQkJCQkJCXZfc3RhdGUsIG9wLCB2X2Vjb250ZXh0KTsKKworCQkJCUxMVk1C dWlsZEJyKGIsIG9wYmxvY2tzW29wbm8gKyAxXSk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgRUVP UF9KU09ORVhQUl9DT0VSQ0lPTl9GSU5JU0g6CisJCQkJYnVpbGRfRXZhbFhGdW5jKGIsIG1vZCwg IkV4ZWNFdmFsSnNvbkNvZXJjaW9uRmluaXNoIiwKKwkJCQkJCQkJdl9zdGF0ZSwgb3ApOworCisJ CQkJTExWTUJ1aWxkQnIoYiwgb3BibG9ja3Nbb3BubyArIDFdKTsKKwkJCQlicmVhazsKKwogCQkJ Y2FzZSBFRU9QX0FHR1JFRjoKIAkJCQl7CiAJCQkJCUxMVk1WYWx1ZVJlZiB2X2FnZ25vOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2bWppdF90eXBlcy5jIGIvc3JjL2JhY2tl bmQvaml0L2xsdm0vbGx2bWppdF90eXBlcy5jCmluZGV4IDQ3YzlkYWY0MDIuLmVkZDFlMTY3OWIg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1qaXRfdHlwZXMuYworKysgYi9z cmMvYmFja2VuZC9qaXQvbGx2bS9sbHZtaml0X3R5cGVzLmMKQEAgLTE3Miw2ICsxNzIsOSBAQCB2 b2lkCSAgICpyZWZlcmVuY2VkX2Z1bmN0aW9uc1tdID0KIAlFeGVjRXZhbFhtbEV4cHIsCiAJRXhl Y0V2YWxKc29uQ29uc3RydWN0b3IsCiAJRXhlY0V2YWxKc29uSXNQcmVkaWNhdGUsCisJRXhlY0V2 YWxKc29uQ29lcmNpb24sCisJRXhlY0V2YWxKc29uQ29lcmNpb25GaW5pc2gsCisJRXhlY0V2YWxK c29uRXhwclBhdGgsCiAJTWFrZUV4cGFuZGVkT2JqZWN0UmVhZE9ubHlJbnRlcm5hbCwKIAlzbG90 X2dldG1pc3NpbmdhdHRycywKIAlzbG90X2dldHNvbWVhdHRyc19pbnQsCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9ub2Rlcy9tYWtlZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5j cy5jCmluZGV4IDMzZDRkMjNlMjMuLjUzOGNjYjMwYWEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L25vZGVzL21ha2VmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5jcy5jCkBA IC04NTYsNiArODU2LDI0IEBAIG1ha2VKc29uVmFsdWVFeHByKEV4cHIgKnJhd19leHByLCBFeHBy ICpmb3JtYXR0ZWRfZXhwciwKIAlyZXR1cm4ganZlOwogfQogCisvKgorICogbWFrZUpzb25CZWhh dmlvciAtCisgKgkgIGNyZWF0ZXMgYSBKc29uQmVoYXZpb3Igbm9kZQorICovCitKc29uQmVoYXZp b3IgKgorbWFrZUpzb25CZWhhdmlvcihKc29uQmVoYXZpb3JUeXBlIHR5cGUsIE5vZGUgKmV4cHIs IEpzb25Db2VyY2lvbiAqY29lcmNpb24sCisJCQkJIGludCBsb2NhdGlvbikKK3sKKwlKc29uQmVo YXZpb3IgKmJlaGF2aW9yID0gbWFrZU5vZGUoSnNvbkJlaGF2aW9yKTsKKworCWJlaGF2aW9yLT5i dHlwZSA9IHR5cGU7CisJYmVoYXZpb3ItPmV4cHIgPSBleHByOworCWJlaGF2aW9yLT5jb2VyY2lv biA9IGNvZXJjaW9uOworCWJlaGF2aW9yLT5sb2NhdGlvbiA9IGxvY2F0aW9uOworCisJcmV0dXJu IGJlaGF2aW9yOworfQorCiAvKgogICogbWFrZUpzb25LZXlWYWx1ZSAtCiAgKgkgIGNyZWF0ZXMg YSBKc29uS2V5VmFsdWUgbm9kZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1 bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYwppbmRleCA2YmE4ZTczMjU2Li5m NDViZWQyYTVkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYworKysg Yi9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYwpAQCAtMjMzLDYgKzIzMywzMyBAQCBleHBy VHlwZShjb25zdCBOb2RlICpleHByKQogCQljYXNlIFRfSnNvbklzUHJlZGljYXRlOgogCQkJdHlw ZSA9IEJPT0xPSUQ7CiAJCQlicmVhazsKKwkJY2FzZSBUX0pzb25FeHByOgorCQkJeworCQkJCWNv bnN0IEpzb25FeHByICpqZXhwciA9IChjb25zdCBKc29uRXhwciAqKSBleHByOworCisJCQkJdHlw ZSA9IGpleHByLT5yZXR1cm5pbmctPnR5cGlkOworCQkJCWJyZWFrOworCQkJfQorCQljYXNlIFRf SnNvbkNvZXJjaW9uOgorCQkJeworCQkJCWNvbnN0IEpzb25Db2VyY2lvbiAqY29lcmNpb24gPSAo Y29uc3QgSnNvbkNvZXJjaW9uICopIGV4cHI7CisKKwkJCQl0eXBlID0gY29lcmNpb24tPnRhcmdl dHR5cGU7CisJCQkJYnJlYWs7CisJCQl9CisJCWNhc2UgVF9Kc29uSXRlbUNvZXJjaW9uOgorCQkJ dHlwZSA9IGV4cHJUeXBlKCgoSnNvbkl0ZW1Db2VyY2lvbiAqKSBleHByKS0+Y29lcmNpb24pOwor CQkJYnJlYWs7CisJCWNhc2UgVF9Kc29uQmVoYXZpb3I6CisJCQl7CisJCQkJY29uc3QgSnNvbkJl aGF2aW9yICpiZWhhdmlvciA9IChjb25zdCBKc29uQmVoYXZpb3IgKikgZXhwcjsKKworCQkJCWlm IChiZWhhdmlvci0+Y29lcmNpb24pCisJCQkJCXR5cGUgPSBleHByVHlwZSgoTm9kZSAqKSBiZWhh dmlvci0+Y29lcmNpb24pOworCQkJCWVsc2UKKwkJCQkJdHlwZSA9IGV4cHJUeXBlKGJlaGF2aW9y LT5leHByKTsKKwkJCQlicmVhazsKKwkJCX0KIAkJY2FzZSBUX051bGxUZXN0OgogCQkJdHlwZSA9 IEJPT0xPSUQ7CiAJCQlicmVhazsKQEAgLTQ5MCw4ICs1MTcsMzIgQEAgZXhwclR5cG1vZChjb25z dCBOb2RlICpleHByKQogCQkJcmV0dXJuICgoY29uc3QgU1FMVmFsdWVGdW5jdGlvbiAqKSBleHBy KS0+dHlwbW9kOwogCQljYXNlIFRfSnNvblZhbHVlRXhwcjoKIAkJCXJldHVybiBleHByVHlwbW9k KChOb2RlICopICgoY29uc3QgSnNvblZhbHVlRXhwciAqKSBleHByKS0+Zm9ybWF0dGVkX2V4cHIp OwotCQljYXNlIFRfSnNvbkNvbnN0cnVjdG9yRXhwcjoKLQkJCXJldHVybiAoKGNvbnN0IEpzb25D b25zdHJ1Y3RvckV4cHIgKikgZXhwciktPnJldHVybmluZy0+dHlwbW9kOworCQljYXNlIFRfSnNv bkV4cHI6CisJCQl7CisJCQkJY29uc3QgSnNvbkV4cHIgKmpleHByID0gKGNvbnN0IEpzb25FeHBy ICopIGV4cHI7CisKKwkJCQlyZXR1cm4gamV4cHItPnJldHVybmluZy0+dHlwbW9kOworCQkJfQor CQkJYnJlYWs7CisJCWNhc2UgVF9Kc29uQ29lcmNpb246CisJCQl7CisJCQkJY29uc3QgSnNvbkNv ZXJjaW9uICpjb2VyY2lvbiA9IChjb25zdCBKc29uQ29lcmNpb24gKikgZXhwcjsKKworCQkJCXJl dHVybiBjb2VyY2lvbi0+dGFyZ2V0dHlwbW9kOworCQkJfQorCQkJYnJlYWs7CisJCWNhc2UgVF9K c29uSXRlbUNvZXJjaW9uOgorCQkJcmV0dXJuIGV4cHJUeXBtb2QoKChKc29uSXRlbUNvZXJjaW9u ICopIGV4cHIpLT5jb2VyY2lvbik7CisJCWNhc2UgVF9Kc29uQmVoYXZpb3I6CisJCQl7CisJCQkJ Y29uc3QgSnNvbkJlaGF2aW9yICpiZWhhdmlvciA9IChjb25zdCBKc29uQmVoYXZpb3IgKikgZXhw cjsKKworCQkJCWlmIChiZWhhdmlvci0+Y29lcmNpb24pCisJCQkJCXJldHVybiBleHByVHlwbW9k KChOb2RlICopIGJlaGF2aW9yLT5jb2VyY2lvbik7CisJCQkJZWxzZQorCQkJCQlyZXR1cm4gZXhw clR5cG1vZChiZWhhdmlvci0+ZXhwcik7CisJCQl9CisJCQlicmVhazsKIAkJY2FzZSBUX0NvZXJj ZVRvRG9tYWluOgogCQkJcmV0dXJuICgoY29uc3QgQ29lcmNlVG9Eb21haW4gKikgZXhwciktPnJl c3VsdHR5cG1vZDsKIAkJY2FzZSBUX0NvZXJjZVRvRG9tYWluVmFsdWU6CkBAIC05NjgsNiArMTAx OSwyNyBAQCBleHByQ29sbGF0aW9uKGNvbnN0IE5vZGUgKmV4cHIpCiAJCQkvKiBJUyBKU09OJ3Mg cmVzdWx0IGlzIGJvb2xlYW4gLi4uICovCiAJCQljb2xsID0gSW52YWxpZE9pZDsJLyogLi4uIHNv IGl0IGhhcyBubyBjb2xsYXRpb24gKi8KIAkJCWJyZWFrOworCQljYXNlIFRfSnNvbkV4cHI6CisJ CQljb2xsID0gZXhwckNvbGxhdGlvbigoKEpzb25FeHByICopIGV4cHIpLT5yZXN1bHRfY29lcmNp b24pOworCQkJYnJlYWs7CisJCWNhc2UgVF9Kc29uQ29lcmNpb246CisJCQljb2xsID0gKChjb25z dCBKc29uQ29lcmNpb24gKikgZXhwciktPmNvbGxhdGlvbjsKKwkJCWJyZWFrOworCQljYXNlIFRf SnNvbkl0ZW1Db2VyY2lvbjoKKwkJCWNvbGwgPSBleHByQ29sbGF0aW9uKCgoSnNvbkl0ZW1Db2Vy Y2lvbiAqKSBleHByKS0+Y29lcmNpb24pOworCQkJYnJlYWs7CisJCWNhc2UgVF9Kc29uQmVoYXZp b3I6CisJCQl7CisJCQkJSnNvbkJlaGF2aW9yICpiZWhhdmlvciA9IChKc29uQmVoYXZpb3IgKikg ZXhwcjsKKworCQkJCWlmIChiZWhhdmlvci0+Y29lcmNpb24pCisJCQkJCWNvbGwgPSBleHByQ29s bGF0aW9uKChOb2RlICopIGJlaGF2aW9yLT5jb2VyY2lvbik7CisJCQkJZWxzZSBpZiAoYmVoYXZp b3ItPmV4cHIpCisJCQkJCWNvbGwgPSBleHByQ29sbGF0aW9uKGJlaGF2aW9yLT5leHByKTsKKwkJ CQllbHNlCisJCQkJCWNvbGwgPSBJbnZhbGlkT2lkOworCQkJfQorCQkJYnJlYWs7CiAJCWNhc2Ug VF9OdWxsVGVzdDoKIAkJCS8qIE51bGxUZXN0J3MgcmVzdWx0IGlzIGJvb2xlYW4gLi4uICovCiAJ CQljb2xsID0gSW52YWxpZE9pZDsJLyogLi4uIHNvIGl0IGhhcyBubyBjb2xsYXRpb24gKi8KQEAg LTEyMDQsNiArMTI3Niw0NCBAQCBleHByU2V0Q29sbGF0aW9uKE5vZGUgKmV4cHIsIE9pZCBjb2xs YXRpb24pCiAJCWNhc2UgVF9Kc29uSXNQcmVkaWNhdGU6CiAJCQlBc3NlcnQoIU9pZElzVmFsaWQo Y29sbGF0aW9uKSk7IC8qIHJlc3VsdCBpcyBhbHdheXMgYm9vbGVhbiAqLwogCQkJYnJlYWs7CisJ CWNhc2UgVF9Kc29uRXhwcjoKKwkJCXsKKwkJCQlKc29uRXhwciAgICpqZXhwciA9IChKc29uRXhw ciAqKSBleHByOworCisJCQkJaWYgKGpleHByLT5yZXN1bHRfY29lcmNpb24pCisJCQkJCWV4cHJT ZXRDb2xsYXRpb24oKE5vZGUgKikgamV4cHItPnJlc3VsdF9jb2VyY2lvbiwgY29sbGF0aW9uKTsK KwkJCQllbHNlCisJCQkJCUFzc2VydCghT2lkSXNWYWxpZChjb2xsYXRpb24pKTsgLyogcmVzdWx0 IGlzIGFsd2F5cyBhCisJCQkJCQkJCQkJCQkJICoganNvbltiXSB0eXBlICovCisJCQl9CisJCQli cmVhazsKKwkJY2FzZSBUX0pzb25JdGVtQ29lcmNpb246CisJCQl7CisJCQkJSnNvbkl0ZW1Db2Vy Y2lvbiAqaXRlbV9jb2VyY2lvbiA9IChKc29uSXRlbUNvZXJjaW9uICopIGV4cHI7CisKKwkJCQlp ZiAoaXRlbV9jb2VyY2lvbi0+Y29lcmNpb24pCisJCQkJCWV4cHJTZXRDb2xsYXRpb24oaXRlbV9j b2VyY2lvbi0+Y29lcmNpb24sIGNvbGxhdGlvbik7CisJCQl9CisJCQlicmVhazsKKwkJY2FzZSBU X0pzb25Db2VyY2lvbjoKKwkJCXsKKwkJCQlKc29uQ29lcmNpb24gKmNvZXJjaW9uID0gKEpzb25D b2VyY2lvbiAqKSBleHByOworCisJCQkJaWYgKGNvZXJjaW9uLT5jYXN0X2V4cHIpCisJCQkJCWV4 cHJTZXRDb2xsYXRpb24oY29lcmNpb24tPmNhc3RfZXhwciwgY29sbGF0aW9uKTsKKwkJCQljb2Vy Y2lvbi0+Y29sbGF0aW9uID0gY29sbGF0aW9uOworCQkJfQorCQkJYnJlYWs7CisJCWNhc2UgVF9K c29uQmVoYXZpb3I6CisJCQl7CisJCQkJSnNvbkJlaGF2aW9yICpiZWhhdmlvciA9IChKc29uQmVo YXZpb3IgKikgZXhwcjsKKworCQkJCWlmIChiZWhhdmlvci0+ZXhwcikKKwkJCQkJZXhwclNldENv bGxhdGlvbihiZWhhdmlvci0+ZXhwciwgY29sbGF0aW9uKTsKKwkJCQlpZiAoYmVoYXZpb3ItPmNv ZXJjaW9uKQorCQkJCQlleHByU2V0Q29sbGF0aW9uKChOb2RlICopIGJlaGF2aW9yLT5jb2VyY2lv biwgY29sbGF0aW9uKTsKKwkJCX0KKwkJCWJyZWFrOwogCQljYXNlIFRfTnVsbFRlc3Q6CiAJCQkv KiBOdWxsVGVzdCdzIHJlc3VsdCBpcyBib29sZWFuIC4uLiAqLwogCQkJQXNzZXJ0KCFPaWRJc1Zh bGlkKGNvbGxhdGlvbikpOyAvKiAuLi4gc28gbmV2ZXIgc2V0IGEgY29sbGF0aW9uICovCkBAIC0x NTA3LDYgKzE2MTcsMTggQEAgZXhwckxvY2F0aW9uKGNvbnN0IE5vZGUgKmV4cHIpCiAJCWNhc2Ug VF9Kc29uSXNQcmVkaWNhdGU6CiAJCQlsb2MgPSAoKGNvbnN0IEpzb25Jc1ByZWRpY2F0ZSAqKSBl eHByKS0+bG9jYXRpb247CiAJCQlicmVhazsKKwkJY2FzZSBUX0pzb25FeHByOgorCQkJeworCQkJ CWNvbnN0IEpzb25FeHByICpqc2V4cHIgPSAoY29uc3QgSnNvbkV4cHIgKikgZXhwcjsKKworCQkJ CS8qIGNvbnNpZGVyIGJvdGggZnVuY3Rpb24gbmFtZSBhbmQgbGVmdG1vc3QgYXJnICovCisJCQkJ bG9jID0gbGVmdG1vc3RMb2MoanNleHByLT5sb2NhdGlvbiwKKwkJCQkJCQkJICBleHByTG9jYXRp b24oanNleHByLT5mb3JtYXR0ZWRfZXhwcikpOworCQkJfQorCQkJYnJlYWs7CisJCWNhc2UgVF9K c29uQmVoYXZpb3I6CisJCQlsb2MgPSBleHByTG9jYXRpb24oKChKc29uQmVoYXZpb3IgKikgZXhw ciktPmV4cHIpOworCQkJYnJlYWs7CiAJCWNhc2UgVF9OdWxsVGVzdDoKIAkJCXsKIAkJCQljb25z dCBOdWxsVGVzdCAqbmV4cHIgPSAoY29uc3QgTnVsbFRlc3QgKikgZXhwcjsKQEAgLTIyNTksNiAr MjM4MSw1MSBAQCBleHByZXNzaW9uX3RyZWVfd2Fsa2VyX2ltcGwoTm9kZSAqbm9kZSwKIAkJCWJy ZWFrOwogCQljYXNlIFRfSnNvbklzUHJlZGljYXRlOgogCQkJcmV0dXJuIFdBTEsoKChKc29uSXNQ cmVkaWNhdGUgKikgbm9kZSktPmV4cHIpOworCQljYXNlIFRfSnNvbkV4cHI6CisJCQl7CisJCQkJ SnNvbkV4cHIgICAqamV4cHIgPSAoSnNvbkV4cHIgKikgbm9kZTsKKworCQkJCWlmIChXQUxLKGpl eHByLT5mb3JtYXR0ZWRfZXhwcikpCisJCQkJCXJldHVybiB0cnVlOworCQkJCWlmIChXQUxLKGpl eHByLT5yZXN1bHRfY29lcmNpb24pKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCQlpZiAoV0FMSyhq ZXhwci0+aXRlbV9jb2VyY2lvbnMpKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCQlpZiAoV0FMSyhq ZXhwci0+cGFzc2luZ192YWx1ZXMpKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCQkvKiB3ZSBhc3N1 bWUgd2Fsa2VyIGRvZXNuJ3QgY2FyZSBhYm91dCBwYXNzaW5nX25hbWVzICovCisJCQkJaWYgKFdB TEsoamV4cHItPm9uX2VtcHR5KSkKKwkJCQkJcmV0dXJuIHRydWU7CisJCQkJaWYgKFdBTEsoamV4 cHItPm9uX2Vycm9yKSkKKwkJCQkJcmV0dXJuIHRydWU7CisJCQl9CisJCQlicmVhazsKKwkJY2Fz ZSBUX0pzb25Db2VyY2lvbjoKKwkJCXsKKwkJCQlKc29uQ29lcmNpb24gKmNvZXJjaW9uID0gKEpz b25Db2VyY2lvbiAqKSBub2RlOworCisJCQkJaWYgKFdBTEsoY29lcmNpb24tPmNhc3RfZXhwcikp CisJCQkJCXJldHVybiB0cnVlOworCQkJfQorCQkJYnJlYWs7CisJCWNhc2UgVF9Kc29uSXRlbUNv ZXJjaW9uOgorCQkJeworCQkJCUpzb25JdGVtQ29lcmNpb24gKml0ZW1fY29lcmNpb24gPSAoSnNv bkl0ZW1Db2VyY2lvbiAqKSBub2RlOworCisJCQkJaWYgKFdBTEsoaXRlbV9jb2VyY2lvbi0+Y29l cmNpb24pKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCX0KKwkJCWJyZWFrOworCQljYXNlIFRfSnNv bkJlaGF2aW9yOgorCQkJeworCQkJCUpzb25CZWhhdmlvciAqYmVoYXZpb3IgPSAoSnNvbkJlaGF2 aW9yICopIG5vZGU7CisKKwkJCQlpZiAoV0FMSyhiZWhhdmlvci0+ZXhwcikpCisJCQkJCXJldHVy biB0cnVlOworCQkJCWlmIChXQUxLKGJlaGF2aW9yLT5jb2VyY2lvbikpCisJCQkJCXJldHVybiB0 cnVlOworCQkJfQorCQkJYnJlYWs7CiAJCWNhc2UgVF9OdWxsVGVzdDoKIAkJCXJldHVybiBXQUxL KCgoTnVsbFRlc3QgKikgbm9kZSktPmFyZyk7CiAJCWNhc2UgVF9Cb29sZWFuVGVzdDoKQEAgLTMy NjIsNiArMzQyOSw1MyBAQCBleHByZXNzaW9uX3RyZWVfbXV0YXRvcl9pbXBsKE5vZGUgKm5vZGUs CiAKIAkJCQlyZXR1cm4gKE5vZGUgKikgbmV3bm9kZTsKIAkJCX0KKwkJY2FzZSBUX0pzb25FeHBy OgorCQkJeworCQkJCUpzb25FeHByICAgKmpleHByID0gKEpzb25FeHByICopIG5vZGU7CisJCQkJ SnNvbkV4cHIgICAqbmV3bm9kZTsKKworCQkJCUZMQVRDT1BZKG5ld25vZGUsIGpleHByLCBKc29u RXhwcik7CisJCQkJTVVUQVRFKG5ld25vZGUtPnBhdGhfc3BlYywgamV4cHItPnBhdGhfc3BlYywg Tm9kZSAqKTsKKwkJCQlNVVRBVEUobmV3bm9kZS0+Zm9ybWF0dGVkX2V4cHIsIGpleHByLT5mb3Jt YXR0ZWRfZXhwciwgTm9kZSAqKTsKKwkJCQlNVVRBVEUobmV3bm9kZS0+cmVzdWx0X2NvZXJjaW9u LCBqZXhwci0+cmVzdWx0X2NvZXJjaW9uLCBOb2RlICopOworCQkJCU1VVEFURShuZXdub2RlLT5p dGVtX2NvZXJjaW9ucywgamV4cHItPml0ZW1fY29lcmNpb25zLCBMaXN0ICopOworCQkJCU1VVEFU RShuZXdub2RlLT5wYXNzaW5nX3ZhbHVlcywgamV4cHItPnBhc3NpbmdfdmFsdWVzLCBMaXN0ICop OworCQkJCS8qIGFzc3VtZSBtdXRhdG9yIGRvZXMgbm90IGNhcmUgYWJvdXQgcGFzc2luZ19uYW1l cyAqLworCQkJCU1VVEFURShuZXdub2RlLT5vbl9lbXB0eSwgamV4cHItPm9uX2VtcHR5LCBKc29u QmVoYXZpb3IgKik7CisJCQkJTVVUQVRFKG5ld25vZGUtPm9uX2Vycm9yLCBqZXhwci0+b25fZXJy b3IsIEpzb25CZWhhdmlvciAqKTsKKwkJCQlyZXR1cm4gKE5vZGUgKikgbmV3bm9kZTsKKwkJCX0K KwkJCWJyZWFrOworCQljYXNlIFRfSnNvbkNvZXJjaW9uOgorCQkJeworCQkJCUpzb25Db2VyY2lv biAqY29lcmNpb24gPSAoSnNvbkNvZXJjaW9uICopIG5vZGU7CisJCQkJSnNvbkNvZXJjaW9uICpu ZXdub2RlOworCisJCQkJRkxBVENPUFkobmV3bm9kZSwgY29lcmNpb24sIEpzb25Db2VyY2lvbik7 CisJCQkJTVVUQVRFKG5ld25vZGUtPmNhc3RfZXhwciwgY29lcmNpb24tPmNhc3RfZXhwciwgTm9k ZSAqKTsKKwkJCQlyZXR1cm4gKE5vZGUgKikgbmV3bm9kZTsKKwkJCX0KKwkJY2FzZSBUX0pzb25J dGVtQ29lcmNpb246CisJCQl7CisJCQkJSnNvbkl0ZW1Db2VyY2lvbiAqaXRlbV9jb2VyY2lvbiA9 IChKc29uSXRlbUNvZXJjaW9uICopIG5vZGU7CisJCQkJSnNvbkl0ZW1Db2VyY2lvbiAqbmV3bm9k ZTsKKworCQkJCUZMQVRDT1BZKG5ld25vZGUsIGl0ZW1fY29lcmNpb24sIEpzb25JdGVtQ29lcmNp b24pOworCQkJCU1VVEFURShuZXdub2RlLT5jb2VyY2lvbiwgaXRlbV9jb2VyY2lvbi0+Y29lcmNp b24sIE5vZGUgKik7CisJCQkJcmV0dXJuIChOb2RlICopIG5ld25vZGU7CisJCQl9CisJCQlicmVh azsKKwkJY2FzZSBUX0pzb25CZWhhdmlvcjoKKwkJCXsKKwkJCQlKc29uQmVoYXZpb3IgKmJlaGF2 aW9yID0gKEpzb25CZWhhdmlvciAqKSBub2RlOworCQkJCUpzb25CZWhhdmlvciAqbmV3bm9kZTsK KworCQkJCUZMQVRDT1BZKG5ld25vZGUsIGJlaGF2aW9yLCBKc29uQmVoYXZpb3IpOworCQkJCU1V VEFURShuZXdub2RlLT5leHByLCBiZWhhdmlvci0+ZXhwciwgTm9kZSAqKTsKKwkJCQlNVVRBVEUo bmV3bm9kZS0+Y29lcmNpb24sIGJlaGF2aW9yLT5jb2VyY2lvbiwgSnNvbkNvZXJjaW9uICopOwor CQkJCXJldHVybiAoTm9kZSAqKSBuZXdub2RlOworCQkJfQorCQkJYnJlYWs7CiAJCWNhc2UgVF9O dWxsVGVzdDoKIAkJCXsKIAkJCQlOdWxsVGVzdCAgICpudGVzdCA9IChOdWxsVGVzdCAqKSBub2Rl OwpAQCAtMzk1MCw2ICs0MTY0LDM2IEBAIHJhd19leHByZXNzaW9uX3RyZWVfd2Fsa2VyX2ltcGwo Tm9kZSAqbm9kZSwKIAkJCWJyZWFrOwogCQljYXNlIFRfSnNvbklzUHJlZGljYXRlOgogCQkJcmV0 dXJuIFdBTEsoKChKc29uSXNQcmVkaWNhdGUgKikgbm9kZSktPmV4cHIpOworCQljYXNlIFRfSnNv bkFyZ3VtZW50OgorCQkJcmV0dXJuIFdBTEsoKChKc29uQXJndW1lbnQgKikgbm9kZSktPnZhbCk7 CisJCWNhc2UgVF9Kc29uRnVuY0V4cHI6CisJCQl7CisJCQkJSnNvbkZ1bmNFeHByICpqZmUgPSAo SnNvbkZ1bmNFeHByICopIG5vZGU7CisKKwkJCQlpZiAoV0FMSyhqZmUtPmNvbnRleHRfaXRlbSkp CisJCQkJCXJldHVybiB0cnVlOworCQkJCWlmIChXQUxLKGpmZS0+cGF0aHNwZWMpKQorCQkJCQly ZXR1cm4gdHJ1ZTsKKwkJCQlpZiAoV0FMSyhqZmUtPnBhc3NpbmcpKQorCQkJCQlyZXR1cm4gdHJ1 ZTsKKwkJCQlpZiAoamZlLT5vdXRwdXQgJiYgV0FMSyhqZmUtPm91dHB1dCkpCisJCQkJCXJldHVy biB0cnVlOworCQkJCWlmIChqZmUtPm9uX2VtcHR5KQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCQlp ZiAoamZlLT5vbl9lcnJvcikKKwkJCQkJcmV0dXJuIHRydWU7CisJCQl9CisJCQlicmVhazsKKwkJ Y2FzZSBUX0pzb25CZWhhdmlvcjoKKwkJCXsKKwkJCQlKc29uQmVoYXZpb3IgKmpiID0gKEpzb25C ZWhhdmlvciAqKSBub2RlOworCisJCQkJaWYgKFdBTEsoamItPmV4cHIpKQorCQkJCQlyZXR1cm4g dHJ1ZTsKKwkJCQlpZiAoV0FMSyhqYi0+Y29lcmNpb24pKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJ CX0KKwkJCWJyZWFrOwogCQljYXNlIFRfTnVsbFRlc3Q6CiAJCQlyZXR1cm4gV0FMSygoKE51bGxU ZXN0ICopIG5vZGUpLT5hcmcpOwogCQljYXNlIFRfQm9vbGVhblRlc3Q6CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9jb3N0c2l6ZS5jIGIvc3JjL2JhY2tlbmQvb3B0aW1p emVyL3BhdGgvY29zdHNpemUuYwppbmRleCA4M2EwYWVkMDUxLi4zYzE0YzYwNWEwIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9jb3N0c2l6ZS5jCisrKyBiL3NyYy9iYWNr ZW5kL29wdGltaXplci9wYXRoL2Nvc3RzaXplLmMKQEAgLTQ4NzgsNyArNDg3OCw4IEBAIGNvc3Rf cXVhbF9ldmFsX3dhbGtlcihOb2RlICpub2RlLCBjb3N0X3F1YWxfZXZhbF9jb250ZXh0ICpjb250 ZXh0KQogCQkJIElzQShub2RlLCBTUUxWYWx1ZUZ1bmN0aW9uKSB8fAogCQkJIElzQShub2RlLCBY bWxFeHByKSB8fAogCQkJIElzQShub2RlLCBDb2VyY2VUb0RvbWFpbikgfHwKLQkJCSBJc0Eobm9k ZSwgTmV4dFZhbHVlRXhwcikpCisJCQkgSXNBKG5vZGUsIE5leHRWYWx1ZUV4cHIpIHx8CisJCQkg SXNBKG5vZGUsIEpzb25FeHByKSkKIAl7CiAJCS8qIFRyZWF0IGFsbCB0aGVzZSBhcyBoYXZpbmcg Y29zdCAxICovCiAJCWNvbnRleHQtPnRvdGFsLnBlcl90dXBsZSArPSBjcHVfb3BlcmF0b3JfY29z dDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL2NsYXVzZXMuYyBiL3Ny Yy9iYWNrZW5kL29wdGltaXplci91dGlsL2NsYXVzZXMuYwppbmRleCA0NTVjMmU4ZDMxLi43YTVj NGVmZWE0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9jbGF1c2VzLmMK KysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvY2xhdXNlcy5jCkBAIC01MCw2ICs1MCw3 IEBACiAjaW5jbHVkZSAidXRpbHMvZm1ncm9pZHMuaCIKICNpbmNsdWRlICJ1dGlscy9qc29uLmgi CiAjaW5jbHVkZSAidXRpbHMvanNvbmIuaCIKKyNpbmNsdWRlICJ1dGlscy9qc29ucGF0aC5oIgog I2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgi CiAjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKQEAgLTQxNCw2ICs0MTUsMjUgQEAgY29udGFp bl9tdXRhYmxlX2Z1bmN0aW9uc193YWxrZXIoTm9kZSAqbm9kZSwgdm9pZCAqY29udGV4dCkKIAkJ LyogQ2hlY2sgYWxsIHN1Ym5vZGVzICovCiAJfQogCisJaWYgKElzQShub2RlLCBKc29uRXhwcikp CisJeworCQlKc29uRXhwciAgICpqZXhwciA9IGNhc3ROb2RlKEpzb25FeHByLCBub2RlKTsKKwkJ Q29uc3QJICAgKmNuc3Q7CisKKwkJaWYgKCFJc0EoamV4cHItPnBhdGhfc3BlYywgQ29uc3QpKQor CQkJcmV0dXJuIHRydWU7CisKKwkJY25zdCA9IGNhc3ROb2RlKENvbnN0LCBqZXhwci0+cGF0aF9z cGVjKTsKKworCQlBc3NlcnQoY25zdC0+Y29uc3R0eXBlID09IEpTT05QQVRIT0lEKTsKKwkJaWYg KGNuc3QtPmNvbnN0aXNudWxsKQorCQkJcmV0dXJuIGZhbHNlOworCisJCWlmIChqc3BJc011dGFi bGUoRGF0dW1HZXRKc29uUGF0aFAoY25zdC0+Y29uc3R2YWx1ZSksCisJCQkJCQkgamV4cHItPnBh c3NpbmdfbmFtZXMsIGpleHByLT5wYXNzaW5nX3ZhbHVlcykpCisJCQlyZXR1cm4gdHJ1ZTsKKwl9 CisKIAlpZiAoSXNBKG5vZGUsIFNRTFZhbHVlRnVuY3Rpb24pKQogCXsKIAkJLyogYWxsIHZhcmlh bnRzIG9mIFNRTFZhbHVlRnVuY3Rpb24gYXJlIHN0YWJsZSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvcGFyc2VyL2dyYW0ueSBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKaW5kZXggMTMw ZjdmYzdjMy4uZTkwMGVkZmI4YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0u eQorKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CkBAIC02NTIsMTAgKzY1MiwxOSBAQCBz dGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAq YWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCQkJCWpzb25fcmV0dXJuaW5nX2NsYXVzZV9vcHQKIAkJ CQlqc29uX25hbWVfYW5kX3ZhbHVlCiAJCQkJanNvbl9hZ2dyZWdhdGVfZnVuYworCQkJCWpzb25f YXJndW1lbnQKKwkJCQlqc29uX2JlaGF2aW9yCisJCQkJanNvbl9vbl9lcnJvcl9jbGF1c2Vfb3B0 CiAldHlwZSA8bGlzdD4JanNvbl9uYW1lX2FuZF92YWx1ZV9saXN0CiAJCQkJanNvbl92YWx1ZV9l eHByX2xpc3QKIAkJCQlqc29uX2FycmF5X2FnZ3JlZ2F0ZV9vcmRlcl9ieV9jbGF1c2Vfb3B0Ci0l dHlwZSA8aXZhbD4JanNvbl9wcmVkaWNhdGVfdHlwZV9jb25zdHJhaW50CisJCQkJanNvbl9hcmd1 bWVudHMKKwkJCQlqc29uX2JlaGF2aW9yX2NsYXVzZV9vcHQKKwkJCQlqc29uX3Bhc3NpbmdfY2xh dXNlX29wdAorJXR5cGUgPGl2YWw+CWpzb25fYmVoYXZpb3JfdHlwZQorCQkJCWpzb25fcHJlZGlj YXRlX3R5cGVfY29uc3RyYWludAorCQkJCWpzb25fcXVvdGVzX2NsYXVzZV9vcHQKKwkJCQlqc29u X3dyYXBwZXJfYmVoYXZpb3IKICV0eXBlIDxib29sZWFuPglqc29uX2tleV91bmlxdWVuZXNzX2Nv bnN0cmFpbnRfb3B0CiAJCQkJanNvbl9vYmplY3RfY29uc3RydWN0b3JfbnVsbF9jbGF1c2Vfb3B0 CiAJCQkJanNvbl9hcnJheV9jb25zdHJ1Y3Rvcl9udWxsX2NsYXVzZV9vcHQKQEAgLTY5Niw3ICs3 MDUsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFt ZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCUNBQ0hFIENBTEwgQ0FMTEVEIENBU0NB REUgQ0FTQ0FERUQgQ0FTRSBDQVNUIENBVEFMT0dfUCBDSEFJTiBDSEFSX1AKIAlDSEFSQUNURVIg Q0hBUkFDVEVSSVNUSUNTIENIRUNLIENIRUNLUE9JTlQgQ0xBU1MgQ0xPU0UKIAlDTFVTVEVSIENP QUxFU0NFIENPTExBVEUgQ09MTEFUSU9OIENPTFVNTiBDT0xVTU5TIENPTU1FTlQgQ09NTUVOVFMg Q09NTUlUCi0JQ09NTUlUVEVEIENPTVBSRVNTSU9OIENPTkNVUlJFTlRMWSBDT05GSUdVUkFUSU9O IENPTkZMSUNUCisJQ09NTUlUVEVEIENPTVBSRVNTSU9OIENPTkNVUlJFTlRMWSBDT05ESVRJT05B TCBDT05GSUdVUkFUSU9OIENPTkZMSUNUCiAJQ09OTkVDVElPTiBDT05TVFJBSU5UIENPTlNUUkFJ TlRTIENPTlRFTlRfUCBDT05USU5VRV9QIENPTlZFUlNJT05fUCBDT1BZCiAJQ09TVCBDUkVBVEUg Q1JPU1MgQ1NWIENVQkUgQ1VSUkVOVF9QCiAJQ1VSUkVOVF9DQVRBTE9HIENVUlJFTlRfREFURSBD VVJSRU5UX1JPTEUgQ1VSUkVOVF9TQ0hFTUEKQEAgLTcwNyw4ICs3MTYsOCBAQCBzdGF0aWMgTm9k ZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywg Tm9kZSAqcXVlcnkpOwogCURFVEFDSCBESUNUSU9OQVJZIERJU0FCTEVfUCBESVNDQVJEIERJU1RJ TkNUIERPIERPQ1VNRU5UX1AgRE9NQUlOX1AKIAlET1VCTEVfUCBEUk9QCiAKLQlFQUNIIEVMU0Ug RU5BQkxFX1AgRU5DT0RJTkcgRU5DUllQVEVEIEVORF9QIEVOVU1fUCBFU0NBUEUgRVZFTlQgRVhD RVBUCi0JRVhDTFVERSBFWENMVURJTkcgRVhDTFVTSVZFIEVYRUNVVEUgRVhJU1RTIEVYUExBSU4g RVhQUkVTU0lPTgorCUVBQ0ggRUxTRSBFTVBUWV9QIEVOQUJMRV9QIEVOQ09ESU5HIEVOQ1JZUFRF RCBFTkRfUCBFTlVNX1AgRVJST1JfUCBFU0NBUEUKKwlFVkVOVCBFWENFUFQgRVhDTFVERSBFWENM VURJTkcgRVhDTFVTSVZFIEVYRUNVVEUgRVhJU1RTIEVYUExBSU4gRVhQUkVTU0lPTgogCUVYVEVO U0lPTiBFWFRFUk5BTCBFWFRSQUNUCiAKIAlGQUxTRV9QIEZBTUlMWSBGRVRDSCBGSUxURVIgRklO QUxJWkUgRklSU1RfUCBGTE9BVF9QIEZPTExPV0lORyBGT1IKQEAgLTcyMywxMCArNzMyLDEwIEBA IHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0 ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJSU5ORVJfUCBJTk9VVCBJTlBVVF9QIElOU0VOU0lU SVZFIElOU0VSVCBJTlNURUFEIElOVF9QIElOVEVHRVIKIAlJTlRFUlNFQ1QgSU5URVJWQUwgSU5U TyBJTlZPS0VSIElTIElTTlVMTCBJU09MQVRJT04KIAotCUpPSU4gSlNPTiBKU09OX0FSUkFZIEpT T05fQVJSQVlBR0cgSlNPTl9PQkpFQ1QgSlNPTl9PQkpFQ1RBR0cKLQlKU09OX1NDQUxBUiBKU09O X1NFUklBTElaRQorCUpPSU4gSlNPTiBKU09OX0FSUkFZIEpTT05fQVJSQVlBR0cgSlNPTl9FWElT VFMgSlNPTl9PQkpFQ1QgSlNPTl9PQkpFQ1RBR0cKKwlKU09OX1FVRVJZIEpTT05fU0NBTEFSIEpT T05fU0VSSUFMSVpFIEpTT05fVkFMVUUKIAotCUtFWSBLRVlTCisJS0VFUCBLRVkgS0VZUwogCiAJ TEFCRUwgTEFOR1VBR0UgTEFSR0VfUCBMQVNUX1AgTEFURVJBTF9QCiAJTEVBRElORyBMRUFLUFJP T0YgTEVBU1QgTEVGVCBMRVZFTCBMSUtFIExJTUlUIExJU1RFTiBMT0FEIExPQ0FMCkBAIC03NDAs NyArNzQ5LDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJl bG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAlOT1QgTk9USElORyBOT1RJRlkg Tk9UTlVMTCBOT1dBSVQgTlVMTF9QIE5VTExJRgogCU5VTExTX1AgTlVNRVJJQwogCi0JT0JKRUNU X1AgT0YgT0ZGIE9GRlNFVCBPSURTIE9MRCBPTiBPTkxZIE9QRVJBVE9SIE9QVElPTiBPUFRJT05T IE9SCisJT0JKRUNUX1AgT0YgT0ZGIE9GRlNFVCBPSURTIE9MRCBPTUlUIE9OIE9OTFkgT1BFUkFU T1IgT1BUSU9OIE9QVElPTlMgT1IKIAlPUkRFUiBPUkRJTkFMSVRZIE9USEVSUyBPVVRfUCBPVVRF Ul9QCiAJT1ZFUiBPVkVSTEFQUyBPVkVSTEFZIE9WRVJSSURJTkcgT1dORUQgT1dORVIKIApAQCAt NzQ5LDcgKzc1OCw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFy ICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJUE9TSVRJT04gUFJFQ0VE SU5HIFBSRUNJU0lPTiBQUkVTRVJWRSBQUkVQQVJFIFBSRVBBUkVEIFBSSU1BUlkKIAlQUklPUiBQ UklWSUxFR0VTIFBST0NFRFVSQUwgUFJPQ0VEVVJFIFBST0NFRFVSRVMgUFJPR1JBTSBQVUJMSUNB VElPTgogCi0JUVVPVEUKKwlRVU9URSBRVU9URVMKIAogCVJBTkdFIFJFQUQgUkVBTCBSRUFTU0lH TiBSRUNIRUNLIFJFQ1VSU0lWRSBSRUZfUCBSRUZFUkVOQ0VTIFJFRkVSRU5DSU5HCiAJUkVGUkVT SCBSRUlOREVYIFJFTEFUSVZFX1AgUkVMRUFTRSBSRU5BTUUgUkVQRUFUQUJMRSBSRVBMQUNFIFJF UExJQ0EKQEAgLTc2MCw3ICs3NjksNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdT ZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCVNFUVVF TkNFIFNFUVVFTkNFUwogCVNFUklBTElaQUJMRSBTRVJWRVIgU0VTU0lPTiBTRVNTSU9OX1VTRVIg U0VUIFNFVFMgU0VUT0YgU0hBUkUgU0hPVwogCVNJTUlMQVIgU0lNUExFIFNLSVAgU01BTExJTlQg U05BUFNIT1QgU09NRSBTUUxfUCBTVEFCTEUgU1RBTkRBTE9ORV9QCi0JU1RBUlQgU1RBVEVNRU5U IFNUQVRJU1RJQ1MgU1RESU4gU1RET1VUIFNUT1JBR0UgU1RPUkVEIFNUUklDVF9QIFNUUklQX1AK KwlTVEFSVCBTVEFURU1FTlQgU1RBVElTVElDUyBTVERJTiBTVERPVVQgU1RPUkFHRSBTVE9SRUQg U1RSSUNUX1AgU1RSSU5HX1AgU1RSSVBfUAogCVNVQlNDUklQVElPTiBTVUJTVFJJTkcgU1VQUE9S VCBTWU1NRVRSSUMgU1lTSUQgU1lTVEVNX1AgU1lTVEVNX1VTRVIKIAogCVRBQkxFIFRBQkxFUyBU QUJMRVNBTVBMRSBUQUJMRVNQQUNFIFRFTVAgVEVNUExBVEUgVEVNUE9SQVJZIFRFWFRfUCBUSEVO CkBAIC03NjgsNyArNzc3LDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0 KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAlUUkVBVCBUUklH R0VSIFRSSU0gVFJVRV9QCiAJVFJVTkNBVEUgVFJVU1RFRCBUWVBFX1AgVFlQRVNfUAogCi0JVUVT Q0FQRSBVTkJPVU5ERUQgVU5DT01NSVRURUQgVU5FTkNSWVBURUQgVU5JT04gVU5JUVVFIFVOS05P V04KKwlVRVNDQVBFIFVOQk9VTkRFRCBVTkNPTkRJVElPTkFMIFVOQ09NTUlUVEVEIFVORU5DUllQ VEVEIFVOSU9OIFVOSVFVRSBVTktOT1dOCiAJVU5MSVNURU4gVU5MT0dHRUQgVU5USUwgVVBEQVRF IFVTRVIgVVNJTkcKIAogCVZBQ1VVTSBWQUxJRCBWQUxJREFURSBWQUxJREFUT1IgVkFMVUVfUCBW QUxVRVMgVkFSQ0hBUiBWQVJJQURJQyBWQVJZSU5HCkBAIC0xNTc4OSw2ICsxNTc5OCw2MiBAQCBm dW5jX2V4cHJfY29tbW9uX3N1YmV4cHI6CiAJCQkJCW4tPmxvY2F0aW9uID0gQDE7CiAJCQkJCSQk ID0gKE5vZGUgKikgbjsKIAkJCQl9CisJCQl8IEpTT05fUVVFUlkgJygnCisJCQkJanNvbl92YWx1 ZV9leHByICcsJyBhX2V4cHIganNvbl9wYXNzaW5nX2NsYXVzZV9vcHQKKwkJCQlqc29uX3JldHVy bmluZ19jbGF1c2Vfb3B0CisJCQkJanNvbl93cmFwcGVyX2JlaGF2aW9yCisJCQkJanNvbl9xdW90 ZXNfY2xhdXNlX29wdAorCQkJCWpzb25fYmVoYXZpb3JfY2xhdXNlX29wdAorCQkJJyknCisJCQkJ eworCQkJCQlKc29uRnVuY0V4cHIgKm4gPSBtYWtlTm9kZShKc29uRnVuY0V4cHIpOworCisJCQkJ CW4tPm9wID0gSlNPTl9RVUVSWV9PUDsKKwkJCQkJbi0+Y29udGV4dF9pdGVtID0gKEpzb25WYWx1 ZUV4cHIgKikgJDM7CisJCQkJCW4tPnBhdGhzcGVjID0gJDU7CisJCQkJCW4tPnBhc3NpbmcgPSAk NjsKKwkJCQkJbi0+b3V0cHV0ID0gKEpzb25PdXRwdXQgKikgJDc7CisJCQkJCW4tPndyYXBwZXIg PSAkODsKKwkJCQkJbi0+cXVvdGVzID0gJDk7CisJCQkJCW4tPm9uX2VtcHR5ID0gKEpzb25CZWhh dmlvciAqKSBsaW5pdGlhbCgkMTApOworCQkJCQluLT5vbl9lcnJvciA9IChKc29uQmVoYXZpb3Ig KikgbHNlY29uZCgkMTApOworCQkJCQluLT5sb2NhdGlvbiA9IEAxOworCQkJCQkkJCA9IChOb2Rl ICopIG47CisJCQkJfQorCQkJfCBKU09OX0VYSVNUUyAnKCcKKwkJCQlqc29uX3ZhbHVlX2V4cHIg JywnIGFfZXhwciBqc29uX3Bhc3NpbmdfY2xhdXNlX29wdAorCQkJCWpzb25fb25fZXJyb3JfY2xh dXNlX29wdAorCQkJJyknCisJCQkJeworCQkJCQlKc29uRnVuY0V4cHIgKm4gPSBtYWtlTm9kZShK c29uRnVuY0V4cHIpOworCisJCQkJCW4tPm9wID0gSlNPTl9FWElTVFNfT1A7CisJCQkJCW4tPmNv bnRleHRfaXRlbSA9IChKc29uVmFsdWVFeHByICopICQzOworCQkJCQluLT5wYXRoc3BlYyA9ICQ1 OworCQkJCQluLT5wYXNzaW5nID0gJDY7CisJCQkJCW4tPm91dHB1dCA9IE5VTEw7CisJCQkJCW4t Pm9uX2Vycm9yID0gKEpzb25CZWhhdmlvciAqKSAkNzsKKwkJCQkJbi0+bG9jYXRpb24gPSBAMTsK KwkJCQkJJCQgPSAoTm9kZSAqKSBuOworCQkJCX0KKwkJCXwgSlNPTl9WQUxVRSAnKCcKKwkJCQlq c29uX3ZhbHVlX2V4cHIgJywnIGFfZXhwciBqc29uX3Bhc3NpbmdfY2xhdXNlX29wdAorCQkJCWpz b25fcmV0dXJuaW5nX2NsYXVzZV9vcHQKKwkJCQlqc29uX2JlaGF2aW9yX2NsYXVzZV9vcHQKKwkJ CScpJworCQkJCXsKKwkJCQkJSnNvbkZ1bmNFeHByICpuID0gbWFrZU5vZGUoSnNvbkZ1bmNFeHBy KTsKKworCQkJCQluLT5vcCA9IEpTT05fVkFMVUVfT1A7CisJCQkJCW4tPmNvbnRleHRfaXRlbSA9 IChKc29uVmFsdWVFeHByICopICQzOworCQkJCQluLT5wYXRoc3BlYyA9ICQ1OworCQkJCQluLT5w YXNzaW5nID0gJDY7CisJCQkJCW4tPm91dHB1dCA9IChKc29uT3V0cHV0ICopICQ3OworCQkJCQlu LT5vbl9lbXB0eSA9IChKc29uQmVoYXZpb3IgKikgbGluaXRpYWwoJDgpOworCQkJCQluLT5vbl9l cnJvciA9IChKc29uQmVoYXZpb3IgKikgbHNlY29uZCgkOCk7CisJCQkJCW4tPmxvY2F0aW9uID0g QDE7CisJCQkJCSQkID0gKE5vZGUgKikgbjsKKwkJCQl9CiAJCQk7CiAKIApAQCAtMTY1MTUsNiAr MTY1ODAsNzcgQEAgb3B0X2FzeW1tZXRyaWM6IEFTWU1NRVRSSUMKIAkJOwogCiAvKiBTUUwvSlNP TiBzdXBwb3J0ICovCitqc29uX3Bhc3NpbmdfY2xhdXNlX29wdDoKKwkJCVBBU1NJTkcganNvbl9h cmd1bWVudHMJCQkJCXsgJCQgPSAkMjsgfQorCQkJfCAvKkVNUFRZKi8JCQkJCQkJCXsgJCQgPSBO SUw7IH0KKwkJOworCitqc29uX2FyZ3VtZW50czoKKwkJCWpzb25fYXJndW1lbnQJCQkJCQkJeyAk JCA9IGxpc3RfbWFrZTEoJDEpOyB9CisJCQl8IGpzb25fYXJndW1lbnRzICcsJyBqc29uX2FyZ3Vt ZW50CQl7ICQkID0gbGFwcGVuZCgkMSwgJDMpOyB9CisJCTsKKworanNvbl9hcmd1bWVudDoKKwkJ CWpzb25fdmFsdWVfZXhwciBBUyBDb2xMYWJlbAorCQkJeworCQkJCUpzb25Bcmd1bWVudCAqbiA9 IG1ha2VOb2RlKEpzb25Bcmd1bWVudCk7CisKKwkJCQluLT52YWwgPSAoSnNvblZhbHVlRXhwciAq KSAkMTsKKwkJCQluLT5uYW1lID0gJDM7CisJCQkJJCQgPSAoTm9kZSAqKSBuOworCQkJfQorCQk7 CisKKy8qIEFSUkFZIGlzIGEgbm9pc2Ugd29yZCAqLworanNvbl93cmFwcGVyX2JlaGF2aW9yOgor CQkJICBXSVRIT1VUIFdSQVBQRVIJCQkJCXsgJCQgPSBKU1dfTk9ORTsgfQorCQkJfCBXSVRIT1VU IEFSUkFZCVdSQVBQRVIJCQkJeyAkJCA9IEpTV19OT05FOyB9CisJCQl8IFdJVEggV1JBUFBFUgkJ CQkJCXsgJCQgPSBKU1dfVU5DT05ESVRJT05BTDsgfQorCQkJfCBXSVRIIEFSUkFZIFdSQVBQRVIJ CQkJeyAkJCA9IEpTV19VTkNPTkRJVElPTkFMOyB9CisJCQl8IFdJVEggQ09ORElUSU9OQUwgQVJS QVkgV1JBUFBFUgl7ICQkID0gSlNXX0NPTkRJVElPTkFMOyB9CisJCQl8IFdJVEggVU5DT05ESVRJ T05BTCBBUlJBWSBXUkFQUEVSCXsgJCQgPSBKU1dfVU5DT05ESVRJT05BTDsgfQorCQkJfCBXSVRI IENPTkRJVElPTkFMIFdSQVBQRVIJCQl7ICQkID0gSlNXX0NPTkRJVElPTkFMOyB9CisJCQl8IFdJ VEggVU5DT05ESVRJT05BTCBXUkFQUEVSCQl7ICQkID0gSlNXX1VOQ09ORElUSU9OQUw7IH0KKwkJ CXwgLyogZW1wdHkgKi8JCQkJCQl7ICQkID0gSlNXX1VOU1BFQzsgfQorCQk7CisKK2pzb25fYmVo YXZpb3I6CisJCQlERUZBVUxUIGFfZXhwcgorCQkJCXsgJCQgPSAoTm9kZSAqKSBtYWtlSnNvbkJl aGF2aW9yKEpTT05fQkVIQVZJT1JfREVGQVVMVCwgJDIsIE5VTEwsIEAxKTsgfQorCQkJfCBqc29u X2JlaGF2aW9yX3R5cGUKKwkJCQl7ICQkID0gKE5vZGUgKikgbWFrZUpzb25CZWhhdmlvcigkMSwg TlVMTCwgTlVMTCwgQDEpOyB9CisJCTsKKworanNvbl9iZWhhdmlvcl90eXBlOgorCQkJRVJST1Jf UAkJeyAkJCA9IEpTT05fQkVIQVZJT1JfRVJST1I7IH0KKwkJCXwgTlVMTF9QCXsgJCQgPSBKU09O X0JFSEFWSU9SX05VTEw7IH0KKwkJCXwgVFJVRV9QCXsgJCQgPSBKU09OX0JFSEFWSU9SX1RSVUU7 IH0KKwkJCXwgRkFMU0VfUAl7ICQkID0gSlNPTl9CRUhBVklPUl9GQUxTRTsgfQorCQkJfCBVTktO T1dOCXsgJCQgPSBKU09OX0JFSEFWSU9SX1VOS05PV047IH0KKwkJCXwgRU1QVFlfUCBBUlJBWQl7 ICQkID0gSlNPTl9CRUhBVklPUl9FTVBUWV9BUlJBWTsgfQorCQkJfCBFTVBUWV9QIE9CSkVDVF9Q CXsgJCQgPSBKU09OX0JFSEFWSU9SX0VNUFRZX09CSkVDVDsgfQorCQkJLyogbm9uLXN0YW5kYXJk LCBmb3IgT3JhY2xlIGNvbXBhdGliaWxpdHkgb25seSAqLworCQkJfCBFTVBUWV9QCXsgJCQgPSBK U09OX0JFSEFWSU9SX0VNUFRZX0FSUkFZOyB9CisJCTsKKworanNvbl9iZWhhdmlvcl9jbGF1c2Vf b3B0OgorCQkJanNvbl9iZWhhdmlvciBPTiBFTVBUWV9QCisJCQkJeyAkJCA9IGxpc3RfbWFrZTIo JDEsIE5VTEwpOyB9CisJCQl8IGpzb25fYmVoYXZpb3IgT04gRVJST1JfUAorCQkJCXsgJCQgPSBs aXN0X21ha2UyKE5VTEwsICQxKTsgfQorCQkJfCBqc29uX2JlaGF2aW9yIE9OIEVNUFRZX1AganNv bl9iZWhhdmlvciBPTiBFUlJPUl9QCisJCQkJeyAkJCA9IGxpc3RfbWFrZTIoJDEsICQ0KTsgfQor CQkJfCAvKiBFTVBUWSAqLworCQkJCXsgJCQgPSBsaXN0X21ha2UyKE5VTEwsIE5VTEwpOyB9CisJ CTsKKworanNvbl9vbl9lcnJvcl9jbGF1c2Vfb3B0OgorCQkJanNvbl9iZWhhdmlvciBPTiBFUlJP Ul9QCisJCQkJeyAkJCA9ICQxOyB9CisJCQl8IC8qIEVNUFRZICovCisJCQkJeyAkJCA9IE5VTEw7 IH0KKwkJOworCiBqc29uX3ZhbHVlX2V4cHI6CiAJCQlhX2V4cHIganNvbl9mb3JtYXRfY2xhdXNl X29wdAogCQkJewpAQCAtMTY1NTksNiArMTY2OTUsMTQgQEAganNvbl9mb3JtYXRfY2xhdXNlX29w dDoKIAkJCQl9CiAJCTsKIAoranNvbl9xdW90ZXNfY2xhdXNlX29wdDoKKwkJCUtFRVAgUVVPVEVT IE9OIFNDQUxBUiBTVFJJTkdfUAkJeyAkJCA9IEpTX1FVT1RFU19LRUVQOyB9CisJCQl8IEtFRVAg UVVPVEVTCQkJCQkJeyAkJCA9IEpTX1FVT1RFU19LRUVQOyB9CisJCQl8IE9NSVQgUVVPVEVTIE9O IFNDQUxBUiBTVFJJTkdfUAl7ICQkID0gSlNfUVVPVEVTX09NSVQ7IH0KKwkJCXwgT01JVCBRVU9U RVMJCQkJCQl7ICQkID0gSlNfUVVPVEVTX09NSVQ7IH0KKwkJCXwgLyogRU1QVFkgKi8JCQkJCQl7 ICQkID0gSlNfUVVPVEVTX1VOU1BFQzsgfQorCQk7CisKIGpzb25fcmV0dXJuaW5nX2NsYXVzZV9v cHQ6CiAJCQlSRVRVUk5JTkcgVHlwZW5hbWUganNvbl9mb3JtYXRfY2xhdXNlX29wdAogCQkJCXsK QEAgLTE3MTc1LDYgKzE3MzE5LDcgQEAgdW5yZXNlcnZlZF9rZXl3b3JkOgogCQkJfCBDT01NSVQK IAkJCXwgQ09NTUlUVEVECiAJCQl8IENPTVBSRVNTSU9OCisJCQl8IENPTkRJVElPTkFMCiAJCQl8 IENPTkZJR1VSQVRJT04KIAkJCXwgQ09ORkxJQ1QKIAkJCXwgQ09OTkVDVElPTgpAQCAtMTcyMTEs MTAgKzE3MzU2LDEyIEBAIHVucmVzZXJ2ZWRfa2V5d29yZDoKIAkJCXwgRE9VQkxFX1AKIAkJCXwg RFJPUAogCQkJfCBFQUNICisJCQl8IEVNUFRZX1AKIAkJCXwgRU5BQkxFX1AKIAkJCXwgRU5DT0RJ TkcKIAkJCXwgRU5DUllQVEVECiAJCQl8IEVOVU1fUAorCQkJfCBFUlJPUl9QCiAJCQl8IEVTQ0FQ RQogCQkJfCBFVkVOVAogCQkJfCBFWENMVURFCkBAIC0xNzI2NCw2ICsxNzQxMSw3IEBAIHVucmVz ZXJ2ZWRfa2V5d29yZDoKIAkJCXwgSU5TVEVBRAogCQkJfCBJTlZPS0VSCiAJCQl8IElTT0xBVElP TgorCQkJfCBLRUVQCiAJCQl8IEtFWQogCQkJfCBLRVlTCiAJCQl8IExBQkVMCkBAIC0xNzMxMCw2 ICsxNzQ1OCw3IEBAIHVucmVzZXJ2ZWRfa2V5d29yZDoKIAkJCXwgT0ZGCiAJCQl8IE9JRFMKIAkJ CXwgT0xECisJCQl8IE9NSVQKIAkJCXwgT1BFUkFUT1IKIAkJCXwgT1BUSU9OCiAJCQl8IE9QVElP TlMKQEAgLTE3MzQwLDYgKzE3NDg5LDcgQEAgdW5yZXNlcnZlZF9rZXl3b3JkOgogCQkJfCBQUk9H UkFNCiAJCQl8IFBVQkxJQ0FUSU9OCiAJCQl8IFFVT1RFCisJCQl8IFFVT1RFUwogCQkJfCBSQU5H RQogCQkJfCBSRUFECiAJCQl8IFJFQVNTSUdOCkBAIC0xNzM5OSw2ICsxNzU0OSw3IEBAIHVucmVz ZXJ2ZWRfa2V5d29yZDoKIAkJCXwgU1RPUkFHRQogCQkJfCBTVE9SRUQKIAkJCXwgU1RSSUNUX1AK KwkJCXwgU1RSSU5HX1AKIAkJCXwgU1RSSVBfUAogCQkJfCBTVUJTQ1JJUFRJT04KIAkJCXwgU1VQ UE9SVApAQCAtMTc0MjEsNiArMTc1NzIsNyBAQCB1bnJlc2VydmVkX2tleXdvcmQ6CiAJCQl8IFVF U0NBUEUKIAkJCXwgVU5CT1VOREVECiAJCQl8IFVOQ09NTUlUVEVECisJCQl8IFVOQ09ORElUSU9O QUwKIAkJCXwgVU5FTkNSWVBURUQKIAkJCXwgVU5LTk9XTgogCQkJfCBVTkxJU1RFTgpAQCAtMTc0 ODEsMTAgKzE3NjMzLDEzIEBAIGNvbF9uYW1lX2tleXdvcmQ6CiAJCQl8IEpTT04KIAkJCXwgSlNP Tl9BUlJBWQogCQkJfCBKU09OX0FSUkFZQUdHCisJCQl8IEpTT05fRVhJU1RTCiAJCQl8IEpTT05f T0JKRUNUCiAJCQl8IEpTT05fT0JKRUNUQUdHCisJCQl8IEpTT05fUVVFUlkKIAkJCXwgSlNPTl9T Q0FMQVIKIAkJCXwgSlNPTl9TRVJJQUxJWkUKKwkJCXwgSlNPTl9WQUxVRQogCQkJfCBMRUFTVAog CQkJfCBOQVRJT05BTAogCQkJfCBOQ0hBUgpAQCAtMTc3MTcsNiArMTc4NzIsNyBAQCBiYXJlX2xh YmVsX2tleXdvcmQ6CiAJCQl8IENPTU1JVFRFRAogCQkJfCBDT01QUkVTU0lPTgogCQkJfCBDT05D VVJSRU5UTFkKKwkJCXwgQ09ORElUSU9OQUwKIAkJCXwgQ09ORklHVVJBVElPTgogCQkJfCBDT05G TElDVAogCQkJfCBDT05ORUNUSU9OCkBAIC0xNzc2OSwxMSArMTc5MjUsMTMgQEAgYmFyZV9sYWJl bF9rZXl3b3JkOgogCQkJfCBEUk9QCiAJCQl8IEVBQ0gKIAkJCXwgRUxTRQorCQkJfCBFTVBUWV9Q CiAJCQl8IEVOQUJMRV9QCiAJCQl8IEVOQ09ESU5HCiAJCQl8IEVOQ1JZUFRFRAogCQkJfCBFTkRf UAogCQkJfCBFTlVNX1AKKwkJCXwgRVJST1JfUAogCQkJfCBFU0NBUEUKIAkJCXwgRVZFTlQKIAkJ CXwgRVhDTFVERQpAQCAtMTc4NDMsMTAgKzE4MDAxLDE0IEBAIGJhcmVfbGFiZWxfa2V5d29yZDoK IAkJCXwgSlNPTgogCQkJfCBKU09OX0FSUkFZCiAJCQl8IEpTT05fQVJSQVlBR0cKKwkJCXwgSlNP Tl9FWElTVFMKIAkJCXwgSlNPTl9PQkpFQ1QKIAkJCXwgSlNPTl9PQkpFQ1RBR0cKKwkJCXwgSlNP Tl9RVUVSWQogCQkJfCBKU09OX1NDQUxBUgogCQkJfCBKU09OX1NFUklBTElaRQorCQkJfCBKU09O X1ZBTFVFCisJCQl8IEtFRVAKIAkJCXwgS0VZCiAJCQl8IEtFWVMKIAkJCXwgTEFCRUwKQEAgLTE3 OTA3LDYgKzE4MDY5LDcgQEAgYmFyZV9sYWJlbF9rZXl3b3JkOgogCQkJfCBPRkYKIAkJCXwgT0lE UwogCQkJfCBPTEQKKwkJCXwgT01JVAogCQkJfCBPTkxZCiAJCQl8IE9QRVJBVE9SCiAJCQl8IE9Q VElPTgpAQCAtMTc5NDQsNiArMTgxMDcsNyBAQCBiYXJlX2xhYmVsX2tleXdvcmQ6CiAJCQl8IFBS T0dSQU0KIAkJCXwgUFVCTElDQVRJT04KIAkJCXwgUVVPVEUKKwkJCXwgUVVPVEVTCiAJCQl8IFJB TkdFCiAJCQl8IFJFQUQKIAkJCXwgUkVBTApAQCAtMTgwMTIsNiArMTgxNzYsNyBAQCBiYXJlX2xh YmVsX2tleXdvcmQ6CiAJCQl8IFNUT1JBR0UKIAkJCXwgU1RPUkVECiAJCQl8IFNUUklDVF9QCisJ CQl8IFNUUklOR19QCiAJCQl8IFNUUklQX1AKIAkJCXwgU1VCU0NSSVBUSU9OCiAJCQl8IFNVQlNU UklORwpAQCAtMTgwNDYsNiArMTgyMTEsNyBAQCBiYXJlX2xhYmVsX2tleXdvcmQ6CiAJCQl8IFVF U0NBUEUKIAkJCXwgVU5CT1VOREVECiAJCQl8IFVOQ09NTUlUVEVECisJCQl8IFVOQ09ORElUSU9O QUwKIAkJCXwgVU5FTkNSWVBURUQKIAkJCXwgVU5JUVVFCiAJCQl8IFVOS05PV04KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIv cGFyc2VfZXhwci5jCmluZGV4IDkzMDBjN2I5YWIuLjUzNDI2ZmFjNTMgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3Bh cnNlX2V4cHIuYwpAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgi CiAjaW5jbHVkZSAidXRpbHMvZGF0ZS5oIgogI2luY2x1ZGUgInV0aWxzL2ZtZ3JvaWRzLmgiCisj aW5jbHVkZSAidXRpbHMvanNvbmIuaCIKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNp bmNsdWRlICJ1dGlscy90aW1lc3RhbXAuaCIKICNpbmNsdWRlICJ1dGlscy94bWwuaCIKQEAgLTkw LDYgKzkxLDIzIEBAIHN0YXRpYyBOb2RlICp0cmFuc2Zvcm1Kc29uUGFyc2VFeHByKFBhcnNlU3Rh dGUgKnBzdGF0ZSwgSnNvblBhcnNlRXhwciAqZXhwcik7CiBzdGF0aWMgTm9kZSAqdHJhbnNmb3Jt SnNvblNjYWxhckV4cHIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBKc29uU2NhbGFyRXhwciAqZXhwcik7 CiBzdGF0aWMgTm9kZSAqdHJhbnNmb3JtSnNvblNlcmlhbGl6ZUV4cHIoUGFyc2VTdGF0ZSAqcHN0 YXRlLAogCQkJCQkJCQkJCUpzb25TZXJpYWxpemVFeHByICpleHByKTsKK3N0YXRpYyBOb2RlICp0 cmFuc2Zvcm1Kc29uRnVuY0V4cHIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBKc29uRnVuY0V4cHIgKnAp Oworc3RhdGljIEpzb25FeHByICp0cmFuc2Zvcm1Kc29uRXhwckNvbW1vbihQYXJzZVN0YXRlICpw c3RhdGUsIEpzb25GdW5jRXhwciAqZnVuYywKKwkJCQkJCQkJCQkgY29uc3QgY2hhciAqY29uc3Ry dWN0TmFtZSk7CitzdGF0aWMgdm9pZCB0cmFuc2Zvcm1Kc29uUGFzc2luZ0FyZ3MoUGFyc2VTdGF0 ZSAqcHN0YXRlLCBjb25zdCBjaGFyICpjb25zdHJ1Y3ROYW1lLAorCQkJCQkJCQkJIEpzb25Gb3Jt YXRUeXBlIGZvcm1hdCwgTGlzdCAqYXJncywKKwkJCQkJCQkJCSBMaXN0ICoqcGFzc2luZ192YWx1 ZXMsIExpc3QgKipwYXNzaW5nX25hbWVzKTsKK3N0YXRpYyBOb2RlICpjb2VyY2VKc29uRnVuY0V4 cHJPdXRwdXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBKc29uRXhwciAqanNleHByKTsKK3N0YXRpYyBP aWQJSnNvbkZ1bmNFeHByRGVmYXVsdFJldHVyblR5cGUoSnNvbkV4cHIgKmpzZXhwcik7CitzdGF0 aWMgTm9kZSAqY29lcmNlSnNvbkV4cHIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpleHByLAor CQkJCQkJCWNvbnN0IEpzb25SZXR1cm5pbmcgKnJldHVybmluZywgYm9vbCBvbWl0X3F1b3Rlcyk7 CitzdGF0aWMgSnNvbkNvZXJjaW9uICptYWtlSnNvbkNvZXJjaW9uKGNvbnN0IEpzb25SZXR1cm5p bmcgKnJldHVybmluZywKKwkJCQkJCQkJCSAgYm9vbCBvbWl0X3F1b3RlcywgTm9kZSAqY2FzdF9l eHByKTsKK3N0YXRpYyBMaXN0ICpJbml0SnNvbkl0ZW1Db2VyY2lvbnMoUGFyc2VTdGF0ZSAqcHN0 YXRlLCBjb25zdCBKc29uUmV0dXJuaW5nICpyZXR1cm5pbmcsCisJCQkJCQkJCSAgIE9pZCBjb250 ZXh0SXRlbVR5cGVJZCk7CitzdGF0aWMgSnNvbkJlaGF2aW9yICp0cmFuc2Zvcm1Kc29uQmVoYXZp b3IoUGFyc2VTdGF0ZSAqcHN0YXRlLCBKc29uQmVoYXZpb3IgKmJlaGF2aW9yLAorCQkJCQkJCQkJ CSAgIEpzb25CZWhhdmlvclR5cGUgZGVmYXVsdF9iZWhhdmlvciwKKwkJCQkJCQkJCQkgICBKc29u UmV0dXJuaW5nICpyZXR1cm5pbmcpOwogc3RhdGljIE5vZGUgKm1ha2Vfcm93X2NvbXBhcmlzb25f b3AoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpvcG5hbWUsCiAJCQkJCQkJCQlMaXN0ICpsYXJn cywgTGlzdCAqcmFyZ3MsIGludCBsb2NhdGlvbik7CiBzdGF0aWMgTm9kZSAqbWFrZV9yb3dfZGlz dGluY3Rfb3AoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpvcG5hbWUsCkBAIC0zNTMsNiArMzcx LDEwIEBAIHRyYW5zZm9ybUV4cHJSZWN1cnNlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqZXhw cikKIAkJCXJlc3VsdCA9IHRyYW5zZm9ybUpzb25TZXJpYWxpemVFeHByKHBzdGF0ZSwgKEpzb25T ZXJpYWxpemVFeHByICopIGV4cHIpOwogCQkJYnJlYWs7CiAKKwkJY2FzZSBUX0pzb25GdW5jRXhw cjoKKwkJCXJlc3VsdCA9IHRyYW5zZm9ybUpzb25GdW5jRXhwcihwc3RhdGUsIChKc29uRnVuY0V4 cHIgKikgZXhwcik7CisJCQlicmVhazsKKwogCQlkZWZhdWx0OgogCQkJLyogc2hvdWxkIG5vdCBy ZWFjaCBoZXJlICovCiAJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIG5vZGUgdHlwZTogJWQi LCAoaW50KSBub2RlVGFnKGV4cHIpKTsKQEAgLTMyMjksNyArMzI1MSw3IEBAIG1ha2VKc29uQnl0 ZWFUb1RleHRDb252ZXJzaW9uKE5vZGUgKmV4cHIsIEpzb25Gb3JtYXQgKmZvcm1hdCwgaW50IGxv Y2F0aW9uKQogc3RhdGljIE5vZGUgKgogdHJhbnNmb3JtSnNvblZhbHVlRXhwcihQYXJzZVN0YXRl ICpwc3RhdGUsIGNvbnN0IGNoYXIgKmNvbnN0cnVjdE5hbWUsCiAJCQkJCSAgIEpzb25WYWx1ZUV4 cHIgKnZlLCBKc29uRm9ybWF0VHlwZSBkZWZhdWx0X2Zvcm1hdCwKLQkJCQkJICAgT2lkIHRhcmdl dHR5cGUpCisJCQkJCSAgIE9pZCB0YXJnZXR0eXBlLCBib29sIGlzYXJnKQogewogCU5vZGUJICAg KmV4cHIgPSB0cmFuc2Zvcm1FeHByUmVjdXJzZShwc3RhdGUsIChOb2RlICopIHZlLT5yYXdfZXhw cik7CiAJTm9kZQkgICAqcmF3ZXhwcjsKQEAgLTMyNjEsNiArMzI4Myw0MSBAQCB0cmFuc2Zvcm1K c29uVmFsdWVFeHByKFBhcnNlU3RhdGUgKnBzdGF0ZSwgY29uc3QgY2hhciAqY29uc3RydWN0TmFt ZSwKIAkJZWxzZQogCQkJZm9ybWF0ID0gdmUtPmZvcm1hdC0+Zm9ybWF0X3R5cGU7CiAJfQorCWVs c2UgaWYgKGlzYXJnKQorCXsKKwkJLyoKKwkJICogU3BlY2lhbCB0cmVhdG1lbnQgZm9yIFBBU1NJ TkcgYXJndW1lbnRzLgorCQkgKgorCQkgKiBQYXNzIHR5cGVzIHN1cHBvcnRlZCBieSBHZXRKc29u UGF0aFZhcigpIC8gSnNvbkl0ZW1Gcm9tRGF0dW0oKQorCQkgKiBkaXJlY3RseSB3aXRob3V0IGNv bnZlcnRpbmcgdG8ganNvbltiXS4KKwkJICovCisJCXN3aXRjaCAoZXhwcnR5cGUpCisJCXsKKwkJ CWNhc2UgQk9PTE9JRDoKKwkJCWNhc2UgTlVNRVJJQ09JRDoKKwkJCWNhc2UgSU5UMk9JRDoKKwkJ CWNhc2UgSU5UNE9JRDoKKwkJCWNhc2UgSU5UOE9JRDoKKwkJCWNhc2UgRkxPQVQ0T0lEOgorCQkJ Y2FzZSBGTE9BVDhPSUQ6CisJCQljYXNlIFRFWFRPSUQ6CisJCQljYXNlIFZBUkNIQVJPSUQ6CisJ CQljYXNlIERBVEVPSUQ6CisJCQljYXNlIFRJTUVPSUQ6CisJCQljYXNlIFRJTUVUWk9JRDoKKwkJ CWNhc2UgVElNRVNUQU1QT0lEOgorCQkJY2FzZSBUSU1FU1RBTVBUWk9JRDoKKwkJCQlyZXR1cm4g ZXhwcjsKKworCQkJZGVmYXVsdDoKKwkJCQlpZiAodHlwY2F0ZWdvcnkgPT0gVFlQQ0FURUdPUllf U1RSSU5HKQorCQkJCQlyZXR1cm4gZXhwcjsKKwkJCQkvKiBlbHNlIGNvbnZlcnQgYXJndW1lbnQg dG8ganNvbltiXSB0eXBlICovCisJCQkJYnJlYWs7CisJCX0KKworCQlmb3JtYXQgPSBkZWZhdWx0 X2Zvcm1hdDsKKwl9CiAJZWxzZSBpZiAoZXhwcnR5cGUgPT0gSlNPTk9JRCB8fCBleHBydHlwZSA9 PSBKU09OQk9JRCkKIAkJZm9ybWF0ID0gSlNfRk9STUFUX0RFRkFVTFQ7IC8qIGRvIG5vdCBmb3Jt YXQganNvbltiXSB0eXBlcyAqLwogCWVsc2UKQEAgLTMyNzIsNyArMzMyOSwxMiBAQCB0cmFuc2Zv cm1Kc29uVmFsdWVFeHByKFBhcnNlU3RhdGUgKnBzdGF0ZSwgY29uc3QgY2hhciAqY29uc3RydWN0 TmFtZSwKIAkJTm9kZQkgICAqY29lcmNlZDsKIAkJYm9vbAkJb25seV9hbGxvd19jYXN0ID0gT2lk SXNWYWxpZCh0YXJnZXR0eXBlKTsKIAotCQlpZiAoIW9ubHlfYWxsb3dfY2FzdCAmJgorCQkvKgor CQkgKiBQQVNTSU5HIGFyZ3MgYXJlIGhhbmRsZWQgYXBwcm9wcmlhdGVseSBieSBHZXRKc29uUGF0 aFZhcigpIC8KKwkJICogSnNvbkl0ZW1Gcm9tRGF0dW0oKS4KKwkJICovCisJCWlmICghaXNhcmcg JiYKKwkJCSFvbmx5X2FsbG93X2Nhc3QgJiYKIAkJCWV4cHJ0eXBlICE9IEJZVEVBT0lEICYmIHR5 cGNhdGVnb3J5ICE9IFRZUENBVEVHT1JZX1NUUklORykKIAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJ CWVycmNvZGUoRVJSQ09ERV9EQVRBVFlQRV9NSVNNQVRDSCksCkBAIC0zNDI1LDYgKzM0ODcsMTEg QEAgdHJhbnNmb3JtSnNvbk91dHB1dChQYXJzZVN0YXRlICpwc3RhdGUsIGNvbnN0IEpzb25PdXRw dXQgKm91dHB1dCwKIAkJCQllcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwK IAkJCQllcnJtc2coInJldHVybmluZyBTRVRPRiB0eXBlcyBpcyBub3Qgc3VwcG9ydGVkIGluIFNR TC9KU09OIGZ1bmN0aW9ucyIpKTsKIAorCWlmIChnZXRfdHlwdHlwZShyZXQtPnR5cGlkKSA9PSBU WVBUWVBFX1BTRVVETykKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfRkVB VFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQllcnJtc2coInJldHVybmluZyBwc2V1ZG8tdHlwZXMg aXMgbm90IHN1cHBvcnRlZCBpbiBTUUwvSlNPTiBmdW5jdGlvbnMiKSk7CisKIAlpZiAocmV0LT5m b3JtYXQtPmZvcm1hdF90eXBlID09IEpTX0ZPUk1BVF9ERUZBVUxUKQogCQkvKiBhc3NpZ24gSlNP TkIgZm9ybWF0IHdoZW4gcmV0dXJuaW5nIGpzb25iLCBvciBKU09OIGZvcm1hdCBvdGhlcndpc2Ug Ki8KIAkJcmV0LT5mb3JtYXQtPmZvcm1hdF90eXBlID0KQEAgLTM1MjEsNyArMzU4OCw2IEBAIGNv ZXJjZUpzb25GdW5jRXhwcihQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKmV4cHIsCiAJLyogdHJ5 IHRvIGNvZXJjZSBleHByZXNzaW9uIHRvIHRoZSBvdXRwdXQgdHlwZSAqLwogCXJlcyA9IGNvZXJj ZV90b190YXJnZXRfdHlwZShwc3RhdGUsIGV4cHIsIGV4cHJ0eXBlLAogCQkJCQkJCQlyZXR1cm5p bmctPnR5cGlkLCByZXR1cm5pbmctPnR5cG1vZCwKLQkvKiBYWFggdGhyb3dpbmcgZXJyb3JzIHdo ZW4gY2FzdGluZyB0byBjaGFyKE4pICovCiAJCQkJCQkJCUNPRVJDSU9OX0VYUExJQ0lULAogCQkJ CQkJCQlDT0VSQ0VfRVhQTElDSVRfQ0FTVCwKIAkJCQkJCQkJbG9jYXRpb24pOwpAQCAtMzYyMSw3 ICszNjg3LDcgQEAgdHJhbnNmb3JtSnNvbk9iamVjdENvbnN0cnVjdG9yKFBhcnNlU3RhdGUgKnBz dGF0ZSwgSnNvbk9iamVjdENvbnN0cnVjdG9yICpjdG9yKQogCQkJTm9kZQkgICAqdmFsID0gdHJh bnNmb3JtSnNvblZhbHVlRXhwcihwc3RhdGUsICJKU09OX09CSkVDVCgpIiwKIAkJCQkJCQkJCQkJ CQkga3YtPnZhbHVlLAogCQkJCQkJCQkJCQkJCSBKU19GT1JNQVRfREVGQVVMVCwKLQkJCQkJCQkJ CQkJCQkgSW52YWxpZE9pZCk7CisJCQkJCQkJCQkJCQkJIEludmFsaWRPaWQsIGZhbHNlKTsKIAog CQkJYXJncyA9IGxhcHBlbmQoYXJncywga2V5KTsKIAkJCWFyZ3MgPSBsYXBwZW5kKGFyZ3MsIHZh bCk7CkBAIC0zODA4LDcgKzM4NzQsNyBAQCB0cmFuc2Zvcm1Kc29uT2JqZWN0QWdnKFBhcnNlU3Rh dGUgKnBzdGF0ZSwgSnNvbk9iamVjdEFnZyAqYWdnKQogCXZhbCA9IHRyYW5zZm9ybUpzb25WYWx1 ZUV4cHIocHN0YXRlLCAiSlNPTl9PQkpFQ1RBR0coKSIsCiAJCQkJCQkJCSBhZ2ctPmFyZy0+dmFs dWUsCiAJCQkJCQkJCSBKU19GT1JNQVRfREVGQVVMVCwKLQkJCQkJCQkJIEludmFsaWRPaWQpOwor CQkJCQkJCQkgSW52YWxpZE9pZCwgZmFsc2UpOwogCWFyZ3MgPSBsaXN0X21ha2UyKGtleSwgdmFs KTsKIAogCXJldHVybmluZyA9IHRyYW5zZm9ybUpzb25Db25zdHJ1Y3Rvck91dHB1dChwc3RhdGUs IGFnZy0+Y29uc3RydWN0b3ItPm91dHB1dCwKQEAgLTM4NjQsOSArMzkzMCw4IEBAIHRyYW5zZm9y bUpzb25BcnJheUFnZyhQYXJzZVN0YXRlICpwc3RhdGUsIEpzb25BcnJheUFnZyAqYWdnKQogCU9p ZAkJCWFnZ2Zub2lkOwogCU9pZAkJCWFnZ3R5cGU7CiAKLQlhcmcgPSB0cmFuc2Zvcm1Kc29uVmFs dWVFeHByKHBzdGF0ZSwgIkpTT05fQVJSQVlBR0coKSIsCi0JCQkJCQkJCSBhZ2ctPmFyZywKLQkJ CQkJCQkJIEpTX0ZPUk1BVF9ERUZBVUxULCBJbnZhbGlkT2lkKTsKKwlhcmcgPSB0cmFuc2Zvcm1K c29uVmFsdWVFeHByKHBzdGF0ZSwgIkpTT05fQVJSQVlBR0coKSIsIGFnZy0+YXJnLAorCQkJCQkJ CQkgSlNfRk9STUFUX0RFRkFVTFQsIEludmFsaWRPaWQsIGZhbHNlKTsKIAogCXJldHVybmluZyA9 IHRyYW5zZm9ybUpzb25Db25zdHJ1Y3Rvck91dHB1dChwc3RhdGUsIGFnZy0+Y29uc3RydWN0b3It Pm91dHB1dCwKIAkJCQkJCQkJCQkJICAgbGlzdF9tYWtlMShhcmcpKTsKQEAgLTM5MTMsOSArMzk3 OCw4IEBAIHRyYW5zZm9ybUpzb25BcnJheUNvbnN0cnVjdG9yKFBhcnNlU3RhdGUgKnBzdGF0ZSwg SnNvbkFycmF5Q29uc3RydWN0b3IgKmN0b3IpCiAJCXsKIAkJCUpzb25WYWx1ZUV4cHIgKmpzdmFs ID0gY2FzdE5vZGUoSnNvblZhbHVlRXhwciwgbGZpcnN0KGxjKSk7CiAJCQlOb2RlCSAgICp2YWwg PSB0cmFuc2Zvcm1Kc29uVmFsdWVFeHByKHBzdGF0ZSwgIkpTT05fQVJSQVkoKSIsCi0JCQkJCQkJ CQkJCQkJIGpzdmFsLAotCQkJCQkJCQkJCQkJCSBKU19GT1JNQVRfREVGQVVMVCwKLQkJCQkJCQkJ CQkJCQkgSW52YWxpZE9pZCk7CisJCQkJCQkJCQkJCQkJIGpzdmFsLCBKU19GT1JNQVRfREVGQVVM VCwKKwkJCQkJCQkJCQkJCQkgSW52YWxpZE9pZCwgZmFsc2UpOwogCiAJCQlhcmdzID0gbGFwcGVu ZChhcmdzLCB2YWwpOwogCQl9CkBAIC00MDc0LDcgKzQxMzgsNyBAQCB0cmFuc2Zvcm1Kc29uUGFy c2VFeHByKFBhcnNlU3RhdGUgKnBzdGF0ZSwgSnNvblBhcnNlRXhwciAqanNleHByKQogCQkgKiBm dW5jdGlvbi1saWtlIENBU1RzLgogCQkgKi8KIAkJYXJnID0gdHJhbnNmb3JtSnNvblZhbHVlRXhw cihwc3RhdGUsICJKU09OKCkiLCBqc2V4cHItPmV4cHIsCi0JCQkJCQkJCQkgSlNfRk9STUFUX0pT T04sIHJldHVybmluZy0+dHlwaWQpOworCQkJCQkJCQkJIEpTX0ZPUk1BVF9KU09OLCByZXR1cm5p bmctPnR5cGlkLCBmYWxzZSk7CiAJfQogCiAJcmV0dXJuIG1ha2VKc29uQ29uc3RydWN0b3JFeHBy KHBzdGF0ZSwgSlNDVE9SX0pTT05fUEFSU0UsIGxpc3RfbWFrZTEoYXJnKSwgTlVMTCwKQEAgLTQx MTksNyArNDE4Myw3IEBAIHRyYW5zZm9ybUpzb25TZXJpYWxpemVFeHByKFBhcnNlU3RhdGUgKnBz dGF0ZSwgSnNvblNlcmlhbGl6ZUV4cHIgKmV4cHIpCiAJTm9kZQkgICAqYXJnID0gdHJhbnNmb3Jt SnNvblZhbHVlRXhwcihwc3RhdGUsICJKU09OX1NFUklBTElaRSgpIiwKIAkJCQkJCQkJCQkJIGV4 cHItPmV4cHIsCiAJCQkJCQkJCQkJCSBKU19GT1JNQVRfSlNPTiwKLQkJCQkJCQkJCQkJIEludmFs aWRPaWQpOworCQkJCQkJCQkJCQkgSW52YWxpZE9pZCwgZmFsc2UpOwogCiAJaWYgKGV4cHItPm91 dHB1dCkKIAl7CkBAIC00MTUzLDMgKzQyMTcsNTgyIEBAIHRyYW5zZm9ybUpzb25TZXJpYWxpemVF eHByKFBhcnNlU3RhdGUgKnBzdGF0ZSwgSnNvblNlcmlhbGl6ZUV4cHIgKmV4cHIpCiAJcmV0dXJu IG1ha2VKc29uQ29uc3RydWN0b3JFeHByKHBzdGF0ZSwgSlNDVE9SX0pTT05fU0VSSUFMSVpFLCBs aXN0X21ha2UxKGFyZyksCiAJCQkJCQkJCSAgIE5VTEwsIHJldHVybmluZywgZmFsc2UsIGZhbHNl LCBleHByLT5sb2NhdGlvbik7CiB9CisKKy8qCisgKiBUcmFuc2Zvcm0gSlNPTl9WQUxVRSwgSlNP Tl9RVUVSWSwgSlNPTl9FWElTVFMgZnVuY3Rpb25zIGludG8gYSBKc29uRXhwciBub2RlLgorICov CitzdGF0aWMgTm9kZSAqCit0cmFuc2Zvcm1Kc29uRnVuY0V4cHIoUGFyc2VTdGF0ZSAqcHN0YXRl LCBKc29uRnVuY0V4cHIgKmZ1bmMpCit7CisJSnNvbkV4cHIgICAqanNleHByID0gTlVMTDsKKwlj b25zdCBjaGFyICpmdW5jX25hbWUgPSBOVUxMOworCisJc3dpdGNoIChmdW5jLT5vcCkKKwl7CisJ CWNhc2UgSlNPTl9FWElTVFNfT1A6CisJCQlmdW5jX25hbWUgPSAiSlNPTl9FWElTVFMiOworCQkJ YnJlYWs7CisJCWNhc2UgSlNPTl9RVUVSWV9PUDoKKwkJCWZ1bmNfbmFtZSA9ICJKU09OX1FVRVJZ IjsKKwkJCWJyZWFrOworCQljYXNlIEpTT05fVkFMVUVfT1A6CisJCQlmdW5jX25hbWUgPSAiSlNP Tl9WQUxVRSI7CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCWVsb2coRVJST1IsICJpbnZhbGlk IEpzb25GdW5jRXhwciBvcCIpOworCQkJYnJlYWs7CisJfQorCisJLyoKKwkgKiBGT1JNQVQgSlNP TiBzcGVjaWZpY2F0aW9uIGlzIG1lYW5pbmdsZXNzIGV4Y2VwdCBmb3IgSlNPTl9RVUVSWSgpLAor CSAqIHRob3VnaCB0aGUgc3ludGF4IGFsbG93cyBpdC4gIEZsYWcgaWYgbm90IEpTT05fUVVFUlko KS4KKwkgKi8KKwlpZiAoZnVuYy0+b3V0cHV0ICYmIGZ1bmMtPm9wICE9IEpTT05fUVVFUllfT1Ap CisJeworCQlKc29uRm9ybWF0ICpmb3JtYXQgPSBmdW5jLT5vdXRwdXQtPnJldHVybmluZy0+Zm9y bWF0OworCisJCWlmIChmb3JtYXQtPmZvcm1hdF90eXBlICE9IEpTX0ZPUk1BVF9ERUZBVUxUIHx8 CisJCQlmb3JtYXQtPmVuY29kaW5nICE9IEpTX0VOQ19ERUZBVUxUKQorCQkJZXJlcG9ydChFUlJP UiwKKwkJCQkJZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCWVycm1zZygiY2Fu bm90IHNwZWNpZnkgRk9STUFUIGluIFJFVFVSTklORyBjbGF1c2Ugb2YgJXMoKSIsCisJCQkJCQkg ICBmdW5jX25hbWUpLAorCQkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBmb3JtYXQtPmxv Y2F0aW9uKSk7CisJfQorCisJLyogT01JVCBRVU9URVMgbWVhbmluZ2xlc3Mgd2hlbiBzdHJpbmdz IGFyZSB3cmFwcGVkLiAqLworCWlmIChmdW5jLT5vcCA9PSBKU09OX1FVRVJZX09QICYmCisJCWZ1 bmMtPnF1b3RlcyAhPSBKU19RVU9URVNfVU5TUEVDICYmCisJCShmdW5jLT53cmFwcGVyID09IEpT V19DT05ESVRJT05BTCB8fAorCQkgZnVuYy0+d3JhcHBlciA9PSBKU1dfVU5DT05ESVRJT05BTCkp CisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJ CQkJZXJybXNnKCJTUUwvSlNPTiBRVU9URVMgYmVoYXZpb3IgbXVzdCBub3QgYmUgc3BlY2lmaWVk IHdoZW4gV0lUSCBXUkFQUEVSIGlzIHVzZWQiKSwKKwkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHN0 YXRlLCBmdW5jLT5sb2NhdGlvbikpOworCisJanNleHByID0gdHJhbnNmb3JtSnNvbkV4cHJDb21t b24ocHN0YXRlLCBmdW5jLCBmdW5jX25hbWUpOworCisJc3dpdGNoIChmdW5jLT5vcCkKKwl7CisJ CWNhc2UgSlNPTl9FWElTVFNfT1A6CisJCQkvKiBKU09OX0VYSVNUUyByZXR1cm5zIGJvb2xlYW4g YnkgZGVmYXVsdC4gKi8KKwkJCWlmICghT2lkSXNWYWxpZChqc2V4cHItPnJldHVybmluZy0+dHlw aWQpKQorCQkJeworCQkJCWpzZXhwci0+cmV0dXJuaW5nLT50eXBpZCA9IEJPT0xPSUQ7CisJCQkJ anNleHByLT5yZXR1cm5pbmctPnR5cG1vZCA9IC0xOworCQkJfQorCisJCQlqc2V4cHItPm9uX2Vy cm9yID0gdHJhbnNmb3JtSnNvbkJlaGF2aW9yKHBzdGF0ZSwgZnVuYy0+b25fZXJyb3IsCisJCQkJ CQkJCQkJCQkJIEpTT05fQkVIQVZJT1JfRkFMU0UsCisJCQkJCQkJCQkJCQkJIGpzZXhwci0+cmV0 dXJuaW5nKTsKKwkJCWJyZWFrOworCisJCWNhc2UgSlNPTl9RVUVSWV9PUDoKKwkJCWpzZXhwci0+ d3JhcHBlciA9IGZ1bmMtPndyYXBwZXI7CisKKwkJCS8qCisJCQkgKiBLZWVwIHF1b3RlcyBvbiBz Y2FsYXIgc3RyaW5ncyBieSBkZWZhdWx0LCBvbWl0dGluZyB0aGVtIG9ubHkgaWYKKwkJCSAqIE9N SVQgUVVPVEVTIGlzIHNwZWNpZmllZC4KKwkJCSAqLworCQkJanNleHByLT5vbWl0X3F1b3RlcyA9 IChmdW5jLT5xdW90ZXMgPT0gSlNfUVVPVEVTX09NSVQpOworCisJCQkvKiBKU09OX1FVRVJZIHJl dHVybnMganNvbihiKSBieSBkZWZhdWx0LiAqLworCQkJaWYgKCFPaWRJc1ZhbGlkKGpzZXhwci0+ cmV0dXJuaW5nLT50eXBpZCkpCisJCQl7CisJCQkJSnNvblJldHVybmluZyAqcmV0ID0ganNleHBy LT5yZXR1cm5pbmc7CisKKwkJCQlyZXQtPnR5cGlkID0gSnNvbkZ1bmNFeHByRGVmYXVsdFJldHVy blR5cGUoanNleHByKTsKKwkJCQlyZXQtPnR5cG1vZCA9IC0xOworCQkJfQorCisJCQlqc2V4cHIt PnJlc3VsdF9jb2VyY2lvbiA9IGNvZXJjZUpzb25GdW5jRXhwck91dHB1dChwc3RhdGUsIGpzZXhw cik7CisKKwkJCWlmIChmdW5jLT5vbl9lbXB0eSkKKwkJCQlqc2V4cHItPm9uX2VtcHR5ID0gdHJh bnNmb3JtSnNvbkJlaGF2aW9yKHBzdGF0ZSwKKwkJCQkJCQkJCQkJCQkJIGZ1bmMtPm9uX2VtcHR5 LAorCQkJCQkJCQkJCQkJCQkgSlNPTl9CRUhBVklPUl9OVUxMLAorCQkJCQkJCQkJCQkJCQkganNl eHByLT5yZXR1cm5pbmcpOworCQkJanNleHByLT5vbl9lcnJvciA9IHRyYW5zZm9ybUpzb25CZWhh dmlvcihwc3RhdGUsIGZ1bmMtPm9uX2Vycm9yLAorCQkJCQkJCQkJCQkJCSBKU09OX0JFSEFWSU9S X05VTEwsCisJCQkJCQkJCQkJCQkJIGpzZXhwci0+cmV0dXJuaW5nKTsKKwkJCWJyZWFrOworCisJ CWNhc2UgSlNPTl9WQUxVRV9PUDoKKwkJCS8qIEFsd2F5cyBvbWl0IHF1b3RlcyBmcm9tIHNjYWxh ciBzdHJpbmdzLiAqLworCQkJanNleHByLT5vbWl0X3F1b3RlcyA9IChmdW5jLT5xdW90ZXMgPT0g SlNfUVVPVEVTX09NSVQpOworCisJCQkvKiBKU09OX1ZBTFVFIHJldHVybnMgdGV4dCBieSBkZWZh dWx0LiAqLworCQkJaWYgKCFPaWRJc1ZhbGlkKGpzZXhwci0+cmV0dXJuaW5nLT50eXBpZCkpCisJ CQl7CisJCQkJanNleHByLT5yZXR1cm5pbmctPnR5cGlkID0gVEVYVE9JRDsKKwkJCQlqc2V4cHIt PnJldHVybmluZy0+dHlwbW9kID0gLTE7CisJCQl9CisKKwkJCS8qCisJCQkgKiBPdmVycmlkZSB3 aGF0ZXZlciB0cmFuc2Zvcm1Kc29uT3V0cHV0KCkgc2V0IHRoZXNlIHRvLCB3aGljaAorCQkJICog YXNzdW1lcyB0aGF0IG91dHB1dCB0eXBlIHRvIGJlIGpzb24oYikuCisJCQkgKi8KKwkJCWpzZXhw ci0+cmV0dXJuaW5nLT5mb3JtYXQtPmZvcm1hdF90eXBlID0gSlNfRk9STUFUX0RFRkFVTFQ7CisJ CQlqc2V4cHItPnJldHVybmluZy0+Zm9ybWF0LT5lbmNvZGluZyA9IEpTX0VOQ19ERUZBVUxUOwor CisJCQlqc2V4cHItPnJlc3VsdF9jb2VyY2lvbiA9IGNvZXJjZUpzb25GdW5jRXhwck91dHB1dChw c3RhdGUsIGpzZXhwcik7CisKKwkJCS8qCisJCQkgKiBJbml0aWFsaXplIGV4cHJlc3Npb25zIHRv IGNvZXJjZSB0aGUgc2NhbGFyIHZhbHVlIHJldHVybmVkIGJ5CisJCQkgKiBKc29uUGF0aFZhbHVl KCkgdG8gdGhlICJyZXR1cm5pbmciIHR5cGUuCisJCQkgKi8KKwkJCWlmIChqc2V4cHItPnJlc3Vs dF9jb2VyY2lvbikKKwkJCQlqc2V4cHItPml0ZW1fY29lcmNpb25zID0KKwkJCQkJSW5pdEpzb25J dGVtQ29lcmNpb25zKHBzdGF0ZSwganNleHByLT5yZXR1cm5pbmcsCisJCQkJCQkJCQkJICBleHBy VHlwZShqc2V4cHItPmZvcm1hdHRlZF9leHByKSk7CisKKwkJCWlmIChmdW5jLT5vbl9lbXB0eSkK KwkJCQlqc2V4cHItPm9uX2VtcHR5ID0gdHJhbnNmb3JtSnNvbkJlaGF2aW9yKHBzdGF0ZSwKKwkJ CQkJCQkJCQkJCQkJIGZ1bmMtPm9uX2VtcHR5LAorCQkJCQkJCQkJCQkJCQkgSlNPTl9CRUhBVklP Ul9OVUxMLAorCQkJCQkJCQkJCQkJCQkganNleHByLT5yZXR1cm5pbmcpOworCQkJanNleHByLT5v bl9lcnJvciA9IHRyYW5zZm9ybUpzb25CZWhhdmlvcihwc3RhdGUsIGZ1bmMtPm9uX2Vycm9yLAor CQkJCQkJCQkJCQkJCSBKU09OX0JFSEFWSU9SX05VTEwsCisJCQkJCQkJCQkJCQkJIGpzZXhwci0+ cmV0dXJuaW5nKTsKKwkJCWJyZWFrOworCisJCWRlZmF1bHQ6CisJCQllbG9nKEVSUk9SLCAiaW52 YWxpZCBKc29uRnVuY0V4cHIgb3AiKTsKKwkJCWJyZWFrOworCX0KKworCXJldHVybiAoTm9kZSAq KSBqc2V4cHI7Cit9CisKKy8qCisgKiBDb21tb24gY29kZSBmb3IgSlNPTl9WQUxVRSwgSlNPTl9R VUVSWSwgSlNPTl9FWElTVFMgdHJhbnNmb3JtYXRpb24KKyAqIGludG8gYSBKc29uRXhwciBub2Rl LgorICovCitzdGF0aWMgSnNvbkV4cHIgKgordHJhbnNmb3JtSnNvbkV4cHJDb21tb24oUGFyc2VT dGF0ZSAqcHN0YXRlLCBKc29uRnVuY0V4cHIgKmZ1bmMsCisJCQkJCQljb25zdCBjaGFyICpjb25z dHJ1Y3ROYW1lKQoreworCUpzb25FeHByICAgKmpzZXhwciA9IG1ha2VOb2RlKEpzb25FeHByKTsK KwlOb2RlCSAgICpwYXRoX3NwZWM7CisKKwlqc2V4cHItPmxvY2F0aW9uID0gZnVuYy0+bG9jYXRp b247CisJanNleHByLT5vcCA9IGZ1bmMtPm9wOworCWpzZXhwci0+Zm9ybWF0dGVkX2V4cHIgPSB0 cmFuc2Zvcm1Kc29uVmFsdWVFeHByKHBzdGF0ZSwgY29uc3RydWN0TmFtZSwKKwkJCQkJCQkJCQkJ CQlmdW5jLT5jb250ZXh0X2l0ZW0sCisJCQkJCQkJCQkJCQkJSlNfRk9STUFUX0pTT04sCisJCQkJ CQkJCQkJCQkJSW52YWxpZE9pZCwgZmFsc2UpOworCisJaWYgKGV4cHJUeXBlKGpzZXhwci0+Zm9y bWF0dGVkX2V4cHIpICE9IEpTT05CT0lEKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUo RVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCWVycm1zZygiJXMoKSBpcyBub3Qg eWV0IGltcGxlbWVudGVkIGZvciB0aGUganNvbiB0eXBlIiwKKwkJCQkJICAgY29uc3RydWN0TmFt ZSksCisJCQkJZXJyaGludCgiVHJ5IGNhc3RpbmcgdGhlIGFyZ3VtZW50IHRvIGpzb25iIiksCisJ CQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZXhwckxvY2F0aW9uKGpzZXhwci0+Zm9ybWF0 dGVkX2V4cHIpKSk7CisKKwlqc2V4cHItPmZvcm1hdCA9IGZ1bmMtPmNvbnRleHRfaXRlbS0+Zm9y bWF0OworCisJcGF0aF9zcGVjID0gdHJhbnNmb3JtRXhwclJlY3Vyc2UocHN0YXRlLCBmdW5jLT5w YXRoc3BlYyk7CisJanNleHByLT5wYXRoX3NwZWMgPQorCQljb2VyY2VfdG9fdGFyZ2V0X3R5cGUo cHN0YXRlLCBwYXRoX3NwZWMsIGV4cHJUeXBlKHBhdGhfc3BlYyksCisJCQkJCQkJICBKU09OUEFU SE9JRCwgLTEsCisJCQkJCQkJICBDT0VSQ0lPTl9FWFBMSUNJVCwgQ09FUkNFX0lNUExJQ0lUX0NB U1QsCisJCQkJCQkJICBleHByTG9jYXRpb24ocGF0aF9zcGVjKSk7CisJaWYgKCFqc2V4cHItPnBh dGhfc3BlYykKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFUWVBF X01JU01BVENIKSwKKwkJCQkgZXJybXNnKCJKU09OIHBhdGggZXhwcmVzc2lvbiBtdXN0IGJlIG9m IHR5cGUgJXMsIG5vdCBvZiB0eXBlICVzIiwKKwkJCQkJCSJqc29ucGF0aCIsIGZvcm1hdF90eXBl X2JlKGV4cHJUeXBlKHBhdGhfc3BlYykpKSwKKwkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0 ZSwgZXhwckxvY2F0aW9uKHBhdGhfc3BlYykpKSk7CisKKwkvKgorCSAqIFRyYW5zZm9ybSBhbmQg Y29lcmNlIHRvIGpzb25bYl0gcGFzc2luZyBhcmd1bWVudHMsIHdob3NlIGZvcm1hdCBpcworCSAq IGRldGVybWluZWQgYnkgY29udGV4dCBpdGVtIHR5cGUuCisJICovCisJdHJhbnNmb3JtSnNvblBh c3NpbmdBcmdzKHBzdGF0ZSwgY29uc3RydWN0TmFtZSwKKwkJCQkJCQkgZXhwclR5cGUoanNleHBy LT5mb3JtYXR0ZWRfZXhwcikgPT0gSlNPTkJPSUQgPworCQkJCQkJCSBKU19GT1JNQVRfSlNPTkIg OiBKU19GT1JNQVRfSlNPTiwKKwkJCQkJCQkgZnVuYy0+cGFzc2luZywKKwkJCQkJCQkgJmpzZXhw ci0+cGFzc2luZ192YWx1ZXMsCisJCQkJCQkJICZqc2V4cHItPnBhc3NpbmdfbmFtZXMpOworCisJ anNleHByLT5yZXR1cm5pbmcgPSB0cmFuc2Zvcm1Kc29uT3V0cHV0KHBzdGF0ZSwgZnVuYy0+b3V0 cHV0LCBmYWxzZSk7CisKKwlyZXR1cm4ganNleHByOworfQorCisvKgorICogVHJhbnNmb3JtIGEg SlNPTiBQQVNTSU5HIGNsYXVzZS4KKyAqLworc3RhdGljIHZvaWQKK3RyYW5zZm9ybUpzb25QYXNz aW5nQXJncyhQYXJzZVN0YXRlICpwc3RhdGUsIGNvbnN0IGNoYXIgKmNvbnN0cnVjdE5hbWUsCisJ CQkJCQkgSnNvbkZvcm1hdFR5cGUgZm9ybWF0LCBMaXN0ICphcmdzLAorCQkJCQkJIExpc3QgKipw YXNzaW5nX3ZhbHVlcywgTGlzdCAqKnBhc3NpbmdfbmFtZXMpCit7CisJTGlzdENlbGwgICAqbGM7 CisKKwkqcGFzc2luZ192YWx1ZXMgPSBOSUw7CisJKnBhc3NpbmdfbmFtZXMgPSBOSUw7CisKKwlm b3JlYWNoKGxjLCBhcmdzKQorCXsKKwkJSnNvbkFyZ3VtZW50ICphcmcgPSBjYXN0Tm9kZShKc29u QXJndW1lbnQsIGxmaXJzdChsYykpOworCQlOb2RlCSAgICpleHByID0gdHJhbnNmb3JtSnNvblZh bHVlRXhwcihwc3RhdGUsIGNvbnN0cnVjdE5hbWUsCisJCQkJCQkJCQkJCQkgIGFyZy0+dmFsLCBm b3JtYXQsCisJCQkJCQkJCQkJCQkgIEludmFsaWRPaWQsIHRydWUpOworCisJCSpwYXNzaW5nX3Zh bHVlcyA9IGxhcHBlbmQoKnBhc3NpbmdfdmFsdWVzLCBleHByKTsKKwkJKnBhc3NpbmdfbmFtZXMg PSBsYXBwZW5kKCpwYXNzaW5nX25hbWVzLCBtYWtlU3RyaW5nKGFyZy0+bmFtZSkpOworCX0KK30K KworLyoKKyAqIENyZWF0ZSBhbiBleHByZXNzaW9uIHRvIGNvZXJjZSB0aGUgb3V0cHV0IG9mIEpT T05fVkFMVUUoKSAvIEpTT05fUVVFUlkoKQorICogdG8gdGhlIG91dHB1dCB0eXBlLCBpZiBuZWVk ZWQuCisgKi8KK3N0YXRpYyBOb2RlICoKK2NvZXJjZUpzb25GdW5jRXhwck91dHB1dChQYXJzZVN0 YXRlICpwc3RhdGUsIEpzb25FeHByICpqc2V4cHIpCit7CisJSnNvblJldHVybmluZyAqcmV0dXJu aW5nID0ganNleHByLT5yZXR1cm5pbmc7CisJTm9kZQkgICAqY29udGV4dF9pdGVtID0ganNleHBy LT5mb3JtYXR0ZWRfZXhwcjsKKwlOb2RlCSAgICpjb2VyY2lvbl9leHByID0gTlVMTDsKKwlpbnQJ CQlkZWZhdWx0X3R5cG1vZDsKKwlPaWQJCQlkZWZhdWx0X3R5cGlkOworCWJvb2wJCW9taXRfcXVv dGVzID0KKwkJanNleHByLT5vcCA9PSBKU09OX1FVRVJZX09QICYmIGpzZXhwci0+b21pdF9xdW90 ZXM7CisKKwlBc3NlcnQocmV0dXJuaW5nKTsKKworCS8qCisJICogQ2FzdCBmdW5jdGlvbnMgZnJv bSBqc29uYiB0byB0aGUgZm9sbG93aW5nIHR5cGVzIChqc29uYl9ib29sKCkgZXQgYWwpCisJICog ZG9uJ3QgaGFuZGxlIGVycm9ycyBzb2Z0bHksIHNvIGZvcmNlIHRvIHVzZSBqc29uX3BvcHVsYXRl X3R5cGUoKSB1c2luZworCSAqIGEgSnNvbkNvZXJjaW9uIG5vZGUgc28gdGhhdCBhbnkgZXJyb3Jz IGFyZSBoYW5kbGVkIGFwcHJvcHJpYXRlbHkuCisJICovCisJaWYgKGpzZXhwci0+b3AgPT0gSlNP Tl9RVUVSWV9PUCkKKwl7CisJCXN3aXRjaCAocmV0dXJuaW5nLT50eXBpZCkKKwkJeworCQkJY2Fz ZSBCT09MT0lEOgorCQkJY2FzZSBOVU1FUklDT0lEOgorCQkJY2FzZSBJTlQyT0lEOgorCQkJY2Fz ZSBJTlQ0T0lEOgorCQkJY2FzZSBJTlQ4T0lEOgorCQkJY2FzZSBGTE9BVDRPSUQ6CisJCQljYXNl IEZMT0FUOE9JRDoKKwkJCQlyZXR1cm4gKE5vZGUgKikgbWFrZUpzb25Db2VyY2lvbihyZXR1cm5p bmcsIG9taXRfcXVvdGVzLCBOVUxMKTsKKwkJCWRlZmF1bHQ6CisJCQkJYnJlYWs7CisJCX0KKwl9 CisKKwlkZWZhdWx0X3R5cGlkID0gSnNvbkZ1bmNFeHByRGVmYXVsdFJldHVyblR5cGUoanNleHBy KTsKKwlkZWZhdWx0X3R5cG1vZCA9IC0xOworCWlmIChyZXR1cm5pbmctPnR5cGlkICE9IGRlZmF1 bHRfdHlwaWQgfHwKKwkJcmV0dXJuaW5nLT50eXBtb2QgIT0gZGVmYXVsdF90eXBtb2QgfHwKKwkJ b21pdF9xdW90ZXMpCisJeworCQkvKgorCQkgKiBXZSBhYnVzZSBDYXNlVGVzdEV4cHIgaGVyZSBh cyBwbGFjZWhvbGRlciB0byBwYXNzIHRoZSByZXN1bHQgb2YKKwkJICogZXZhbHVhdGluZyB0aGUg SlNPTl9WQUxVRS9RVUVSWSBqc29ucGF0aCBleHByZXNzaW9uIGFzIGlucHV0IHRvIHRoZQorCQkg KiBjb2VyY2lvbiBleHByZXNzaW9uLgorCQkgKi8KKwkJQ2FzZVRlc3RFeHByICpwbGFjZWhvbGRl ciA9IG1ha2VOb2RlKENhc2VUZXN0RXhwcik7CisKKwkJLyoKKwkJICogV2hlbiBPTUlUIFFVT1RF UyBpcyB0cnVlLCBFeGVjRXZhbEpzb25Db2VyY2lvbigpIHdpbGwgY29udmVydCBhCisJCSAqIHF1 b3RlLXN0cmlwcGVkIHNvdXJjZSB2YWx1ZSB0byBpdHMgdGV4dCByZXByZXNlbnRhdGlvbiwgc28g dXNlCisJCSAqIFRFWFRPSUQgYXMgdGhlIHNvdXJjZSB0eXBlLgorCQkgKi8KKwkJcGxhY2Vob2xk ZXItPnR5cGVJZCA9IG9taXRfcXVvdGVzID8gVEVYVE9JRCA6IGV4cHJUeXBlKGNvbnRleHRfaXRl bSk7CisJCXBsYWNlaG9sZGVyLT50eXBlTW9kID0gb21pdF9xdW90ZXMgPyAtMSA6IGV4cHJUeXBt b2QoY29udGV4dF9pdGVtKTsKKworCQlBc3NlcnQocGxhY2Vob2xkZXItPnR5cGVJZCA9PSBkZWZh dWx0X3R5cGlkIHx8CisJCQkgICBwbGFjZWhvbGRlci0+dHlwZUlkID09IFRFWFRPSUQpOworCQlB c3NlcnQocGxhY2Vob2xkZXItPnR5cGVNb2QgPT0gZGVmYXVsdF90eXBtb2QgfHwKKwkJCSAgIHBs YWNlaG9sZGVyLT50eXBlTW9kID09IC0xKTsKKworCQljb2VyY2lvbl9leHByID0gY29lcmNlSnNv bkV4cHIocHN0YXRlLCAoTm9kZSAqKSBwbGFjZWhvbGRlciwKKwkJCQkJCQkJCSAgIHJldHVybmlu Zywgb21pdF9xdW90ZXMpOworCX0KKworCXJldHVybiBjb2VyY2lvbl9leHByOworfQorCisvKiBS ZXR1cm5zIHRoZSBkZWZhdWx0IHR5cGUgZm9yIGEgZ2l2ZW4gSnNvbkV4cHIgZm9yIGEgZ2l2ZW4g SnNvbkZvcm1hdC4gKi8KK3N0YXRpYyBPaWQKK0pzb25GdW5jRXhwckRlZmF1bHRSZXR1cm5UeXBl KEpzb25FeHByICpqc2V4cHIpCit7CisJSnNvbkZvcm1hdCAqZm9ybWF0ID0ganNleHByLT5mb3Jt YXQ7CisJTm9kZQkgICAqY29udGV4dF9pdGVtID0ganNleHByLT5mb3JtYXR0ZWRfZXhwcjsKKwor CUFzc2VydChmb3JtYXQpOworCWlmIChmb3JtYXQtPmZvcm1hdF90eXBlID09IEpTX0ZPUk1BVF9K U09OQikKKwkJcmV0dXJuIEpTT05CT0lEOworCWVsc2UgaWYgKGZvcm1hdC0+Zm9ybWF0X3R5cGUg PT0gSlNfRk9STUFUX0RFRkFVTFQgJiYKKwkJCSBleHByVHlwZShjb250ZXh0X2l0ZW0pID09IEpT T05CT0lEKQorCQlyZXR1cm4gSlNPTkJPSUQ7CisKKwlyZXR1cm4gSlNPTk9JRDsKK30KKworLyoK KyAqIFJldHVybnMgYSBKc29uQ29lcmNpb24gbm9kZSB0byBjb2VyY2UgYSBqc29uYi12YWx1ZWQg ZXhwcmVzc2lvbiB0byB0aGUKKyAqIHRhcmdldCB0eXBlIGdpdmVuIGJ5ICdyZXR1cm5pbmcnIHVz aW5nIGVpdGhlciBqc29uX3BvcHVsYXRlX3R5cGUoKSBvcgorICogYnkgdXNpbmcgdGhlIHRhcmdl dCB0eXBlJ3MgaW5wdXQgZnVuY3Rpb24uCisgKi8KK3N0YXRpYyBKc29uQ29lcmNpb24gKgorbWFr ZUpzb25Db2VyY2lvbihjb25zdCBKc29uUmV0dXJuaW5nICpyZXR1cm5pbmcsIGJvb2wgb21pdF9x dW90ZXMsCisJCQkJIE5vZGUgKmNhc3RfZXhwcikKK3sKKwlKc29uQ29lcmNpb24gKmNvZXJjaW9u ID0gbWFrZU5vZGUoSnNvbkNvZXJjaW9uKTsKKworCWNvZXJjaW9uLT50YXJnZXR0eXBlID0gcmV0 dXJuaW5nLT50eXBpZDsKKwljb2VyY2lvbi0+dGFyZ2V0dHlwbW9kID0gcmV0dXJuaW5nLT50eXBt b2Q7CisJY29lcmNpb24tPm9taXRfcXVvdGVzID0gb21pdF9xdW90ZXM7CisJY29lcmNpb24tPmNh c3RfZXhwciA9IGNhc3RfZXhwcjsKKworCXJldHVybiBjb2VyY2lvbjsKK30KKworLyoKKyAqIENv ZXJjZSB0aGUgcmVzdWx0IG9mIEpTT05fVkFMVUUgLyBKU09OX1FVRVJZICgpIChvciBhIGJlaGF2 aW9yIGV4cHJlc3Npb24pCisgKiB0byB0aGUgb3V0cHV0IHR5cGUKKyAqCisgKiBSZXR1cm5zIE5V TEwgaWYgbm8gY29lcmNpb24gbmVlZGVkICh0aGUgaW5wdXQgZXhwcmVzc3Npb24gaXMgYWxyZWFk eSBvZiB0aGUKKyAqIGRlc2lyZWQgdHlwZSkgYW5kIE9NSVQgUVVPVEVTIGlzIGZhbHNlLgorICoK KyAqIFJldHVybnMgYSBKc29uQ29lcmNpb24gbm9kZSBpZiB0aGUgY2FzdCB3YXMgbm90IGZvdW5k IG9yIGlmIE9NSVQgUVVPVEVTIGlzCisgKiB0cnVlLgorICovCitzdGF0aWMgTm9kZSAqCitjb2Vy Y2VKc29uRXhwcihQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKmV4cHIsIGNvbnN0IEpzb25SZXR1 cm5pbmcgKnJldHVybmluZywKKwkJCSAgIGJvb2wgb21pdF9xdW90ZXMpCit7CisJTm9kZQkgICAq Y29lcmNlZF9leHByOworCisJQXNzZXJ0KGV4cHIgIT0gTlVMTCk7CisJY29lcmNlZF9leHByID0g Y29lcmNlSnNvbkZ1bmNFeHByKHBzdGF0ZSwgZXhwciwgcmV0dXJuaW5nLCBmYWxzZSk7CisKKwlp ZiAoY29lcmNlZF9leHByID09IGV4cHIgJiYgIW9taXRfcXVvdGVzKQorCQlyZXR1cm4gTlVMTDsK KworCS8qIFVzZSBjb2VyY2VkX2V4cHIgZm9yIEpzb25Db2VyY2lvbi5jYXN0X2V4cHIgaWZmIGNv ZXJjaW9uIGlzIG5lZWRlZC4gKi8KKwlpZiAoY29lcmNlZF9leHByID09IE5VTEwgfHwgb21pdF9x dW90ZXMpCisJCXJldHVybiAoTm9kZSAqKSBtYWtlSnNvbkNvZXJjaW9uKHJldHVybmluZywgb21p dF9xdW90ZXMsCisJCQkJCQkJCQkJIGNvZXJjZWRfZXhwciA9PSBleHByID8KKwkJCQkJCQkJCQkg TlVMTCA6IGNvZXJjZWRfZXhwcik7CisKKwlyZXR1cm4gY29lcmNlZF9leHByOworfQorCisvKgor ICogSW5pdGlhbGl6ZSBKc29uQ29lcmNpb24gbm9kZXMgZm9yIGNvZXJjaW5nIGEgZ2l2ZW4gSlNP TiBpdGVtIHZhbHVlIHByb2R1Y2VkCisgKiBieSBKU09OX1ZBTFVFIHRvIHRoZSB0YXJnZXQgInJl dHVybmluZyIgdHlwZTsgYWxzbyBzZWUKKyAqIEV4ZWNQcmVwYXJlSnNvbkl0ZW1Db2VyY2lvbigp LgorICovCitzdGF0aWMgTGlzdCAqCitJbml0SnNvbkl0ZW1Db2VyY2lvbnMoUGFyc2VTdGF0ZSAq cHN0YXRlLCBjb25zdCBKc29uUmV0dXJuaW5nICpyZXR1cm5pbmcsCisJCQkJCSAgT2lkIGNvbnRl eHRJdGVtVHlwZUlkKQoreworCUxpc3QJICAgKml0ZW1fY29lcmNpb25zID0gTklMOworCWludAkJ CWk7CisJT2lkCQkJdHlwZW9pZDsKKwlzdHJ1Y3QKKwl7CisJCUpzb25JdGVtVHlwZSBpdGVtX3R5 cGU7CisJCU9pZAkJCXR5cGVvaWQ7CisJfQkJCWl0ZW1fdHlwZXNbXSA9CisJeworCQl7SnNvbkl0 ZW1UeXBlTnVsbCwgVU5LTk9XTk9JRH0sCisJCXtKc29uSXRlbVR5cGVTdHJpbmcsIFRFWFRPSUR9 LAorCQl7SnNvbkl0ZW1UeXBlTnVtZXJpYywgTlVNRVJJQ09JRH0sCisJCXtKc29uSXRlbVR5cGVC b29sZWFuLCBCT09MT0lEfSwKKwkJe0pzb25JdGVtVHlwZURhdGUsIERBVEVPSUR9LAorCQl7SnNv bkl0ZW1UeXBlVGltZSwgVElNRU9JRH0sCisJCXtKc29uSXRlbVR5cGVUaW1ldHosIFRJTUVUWk9J RH0sCisJCXtKc29uSXRlbVR5cGVUaW1lc3RhbXAsIFRJTUVTVEFNUE9JRH0sCisJCXtKc29uSXRl bVR5cGVUaW1lc3RhbXB0eiwgVElNRVNUQU1QVFpPSUR9LAorCQl7SnNvbkl0ZW1UeXBlQ29tcG9z aXRlLCBjb250ZXh0SXRlbVR5cGVJZH0sCisJCXtKc29uSXRlbVR5cGVJbnZhbGlkLCBJbnZhbGlk T2lkfQorCX07CisKKwlmb3IgKGkgPSAwOyBPaWRJc1ZhbGlkKHR5cGVvaWQgPSBpdGVtX3R5cGVz W2ldLnR5cGVvaWQpOyBpKyspCisJeworCQlOb2RlCSAgICpleHByOworCQlKc29uSXRlbUNvZXJj aW9uICppdGVtX2NvZXJjaW9uID0gbWFrZU5vZGUoSnNvbkl0ZW1Db2VyY2lvbik7CisKKwkJaWYg KHR5cGVvaWQgPT0gVU5LTk9XTk9JRCkKKwkJeworCQkJZXhwciA9IChOb2RlICopIG1ha2VOdWxs Q29uc3QoVU5LTk9XTk9JRCwgLTEsIEludmFsaWRPaWQpOworCQl9CisJCWVsc2UKKwkJeworCQkJ Q2FzZVRlc3RFeHByICpwbGFjZWhvbGRlciA9IG1ha2VOb2RlKENhc2VUZXN0RXhwcik7CisKKwkJ CS8qCisJCQkgKiBXZSBhYnVzZSBDYXNlVGVzdEV4cHIgaGVyZSBhcyBwbGFjZWhvbGRlciB0byBw YXNzIHRoZSByZXN1bHQgb2YKKwkJCSAqIEpTT05fVkFMVUUganNvbnBhdGggZXhwcmVzc2lvbiB0 byB0aGUgY29lcmNpb24gZnVuY3Rpb24uCisJCQkgKi8KKwkJCXBsYWNlaG9sZGVyLT50eXBlSWQg PSBpdGVtX3R5cGVzW2ldLnR5cGVvaWQ7CisJCQlwbGFjZWhvbGRlci0+dHlwZU1vZCA9IC0xOwor CQkJcGxhY2Vob2xkZXItPmNvbGxhdGlvbiA9IEludmFsaWRPaWQ7CisKKwkJCWV4cHIgPSAoTm9k ZSAqKSBwbGFjZWhvbGRlcjsKKwkJfQorCisJCWl0ZW1fY29lcmNpb24tPml0ZW1fdHlwZSA9IGl0 ZW1fdHlwZXNbaV0uaXRlbV90eXBlOworCQlpdGVtX2NvZXJjaW9uLT5jb2VyY2lvbiA9IGNvZXJj ZUpzb25FeHByKHBzdGF0ZSwgZXhwciwgcmV0dXJuaW5nLCBmYWxzZSk7CisJCWl0ZW1fY29lcmNp b25zID0gbGFwcGVuZChpdGVtX2NvZXJjaW9ucywgaXRlbV9jb2VyY2lvbik7CisJfQorCisJcmV0 dXJuIGl0ZW1fY29lcmNpb25zOworfQorCisvKgorICogUmV0dXJucyBjb25zdGFudCB2YWx1ZXMg dG8gYmUgcmV0dXJuZWQgdG8gdGhlIHVzZXIgZm9yIHZhcmlvdXMKKyAqIG5vbi1FUlJPUiBPTiBF UlJPUi9FTVBUWSBiZWhhdmlvcnMuCisgKgorICogTm90ZSB0aGF0IEpTT05fQkVIQVZJT1JfREVG QVVMVCBleHByZXNzaW9uIGlzIGhhbmRsZWQgYnkgdGhlCisgKiBjYWxsZXIgc2VwYXJhdGVseS4K KyAqLworc3RhdGljIE5vZGUgKgorR2V0SnNvbkJlaGF2aW9yQ29uc3RFeHByKEpzb25CZWhhdmlv clR5cGUgYnR5cGUsIGludCBsb2NhdGlvbikKK3sKKwlEYXR1bQkJdmFsID0gKERhdHVtKSAwOwor CU9pZAkJCXR5cGlkID0gSlNPTkJPSUQ7CisJaW50CQkJbGVuID0gLTE7CisJYm9vbAkJaXNieXZh bCA9IGZhbHNlOworCWJvb2wJCWlzbnVsbCA9IGZhbHNlOworCUNvbnN0CSAgICpjb247CisKKwlz d2l0Y2ggKGJ0eXBlKQorCXsKKwkJY2FzZSBKU09OX0JFSEFWSU9SX0VNUFRZX0FSUkFZOgorCQkJ dmFsID0gRGlyZWN0RnVuY3Rpb25DYWxsMShqc29uYl9pbiwgQ1N0cmluZ0dldERhdHVtKCJbXSIp KTsKKwkJCWJyZWFrOworCisJCWNhc2UgSlNPTl9CRUhBVklPUl9FTVBUWV9PQkpFQ1Q6CisJCQl2 YWwgPSBEaXJlY3RGdW5jdGlvbkNhbGwxKGpzb25iX2luLCBDU3RyaW5nR2V0RGF0dW0oInt9Iikp OworCQkJYnJlYWs7CisKKwkJY2FzZSBKU09OX0JFSEFWSU9SX1RSVUU6CisJCQl2YWwgPSBCb29s R2V0RGF0dW0odHJ1ZSk7CisJCQl0eXBpZCA9IEJPT0xPSUQ7CisJCQlsZW4gPSBzaXplb2YoYm9v bCk7CisJCQlpc2J5dmFsID0gdHJ1ZTsKKwkJCWJyZWFrOworCisJCWNhc2UgSlNPTl9CRUhBVklP Ul9GQUxTRToKKwkJCXZhbCA9IEJvb2xHZXREYXR1bShmYWxzZSk7CisJCQl0eXBpZCA9IEJPT0xP SUQ7CisJCQlsZW4gPSBzaXplb2YoYm9vbCk7CisJCQlpc2J5dmFsID0gdHJ1ZTsKKwkJCWJyZWFr OworCisJCWNhc2UgSlNPTl9CRUhBVklPUl9OVUxMOgorCQljYXNlIEpTT05fQkVIQVZJT1JfVU5L Tk9XTjoKKwkJY2FzZSBKU09OX0JFSEFWSU9SX0VNUFRZOgorCQkJdmFsID0gKERhdHVtKSAwOwor CQkJaXNudWxsID0gdHJ1ZTsKKwkJCXR5cGlkID0gSU5UNE9JRDsKKwkJCWxlbiA9IHNpemVvZihp bnQzMik7CisJCQlpc2J5dmFsID0gdHJ1ZTsKKwkJCWJyZWFrOworCisJCWNhc2UgSlNPTl9CRUhB VklPUl9ERUZBVUxUOgorCQljYXNlIEpTT05fQkVIQVZJT1JfRVJST1I6CisJCQkvKiBBbHdheXMg aGFuZGxlZCBpbiB0aGUgY2FsbGVyLiAqLworCQkJQXNzZXJ0KGZhbHNlKTsKKwkJCWJyZWFrOwor CisJCWRlZmF1bHQ6CisJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIFNRTC9KU09OIGJlaGF2 aW9yICVkIiwgYnR5cGUpOworCQkJYnJlYWs7CisJfQorCisJY29uID0gbWFrZUNvbnN0KHR5cGlk LCAtMSwgSW52YWxpZE9pZCwgbGVuLCB2YWwsIGlzbnVsbCwgaXNieXZhbCk7CisJY29uLT5sb2Nh dGlvbiA9IGxvY2F0aW9uOworCisJcmV0dXJuIChOb2RlICopIGNvbjsKK30KKworLyoKKyAqIFRy YW5zZm9ybSBhIEpTT04gQkVIQVZJT1IgY2xhdXNlLgorICovCitzdGF0aWMgSnNvbkJlaGF2aW9y ICoKK3RyYW5zZm9ybUpzb25CZWhhdmlvcihQYXJzZVN0YXRlICpwc3RhdGUsIEpzb25CZWhhdmlv ciAqYmVoYXZpb3IsCisJCQkJCSAgSnNvbkJlaGF2aW9yVHlwZSBkZWZhdWx0X2JlaGF2aW9yLAor CQkJCQkgIEpzb25SZXR1cm5pbmcgKnJldHVybmluZykKK3sKKwlKc29uQmVoYXZpb3JUeXBlIGJl aGF2aW9yX3R5cGUgPSBkZWZhdWx0X2JlaGF2aW9yOworCU5vZGUJICAgKmV4cHIgPSBOVUxMOwor CUpzb25Db2VyY2lvbiAqY29lcmNpb24gPSBOVUxMOworCWludAkJCWxvY2F0aW9uID0gLTE7CisK KwlpZiAoYmVoYXZpb3IpCisJeworCQliZWhhdmlvcl90eXBlID0gYmVoYXZpb3ItPmJ0eXBlOwor CQlsb2NhdGlvbiA9IGJlaGF2aW9yLT5sb2NhdGlvbjsKKwkJaWYgKGJlaGF2aW9yX3R5cGUgPT0g SlNPTl9CRUhBVklPUl9ERUZBVUxUKQorCQl7CisJCQlleHByID0gdHJhbnNmb3JtRXhwclJlY3Vy c2UocHN0YXRlLCBiZWhhdmlvci0+ZXhwcik7CisJCQlpZiAoIUlzQShleHByLCBDb25zdCkgJiYg IUlzQShleHByLCBGdW5jRXhwcikgJiYKKwkJCQkhSXNBKGV4cHIsIE9wRXhwcikpCisJCQkJZXJl cG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQVRZUEVfTUlTTUFUQ0gpLAor CQkJCQkJIGVycm1zZygiY2FuIG9ubHkgc3BlY2lmeSBjb25zdGFudCwgbm9uLWFnZ3JlZ2F0ZSIK KwkJCQkJCQkJIiBmdW5jdGlvbiwgb3Igb3BlcmF0b3IgZXhwcmVzc2lvbiBmb3IiCisJCQkJCQkJ CSIgREVGQVVMVCIpLAorCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZXhwckxvY2F0 aW9uKGV4cHIpKSkpOworCQkJaWYgKGNvbnRhaW5fdmFyX2NsYXVzZShleHByKSkKKwkJCQllcmVw b3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBVFlQRV9NSVNNQVRDSCksCisJ CQkJCQkgZXJybXNnKCJERUZBVUxUIGV4cHJlc3Npb24gbXVzdCBub3QgY29udGFpbiBjb2x1bW4g cmVmZXJlbmNlcyIpLAorCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZXhwckxvY2F0 aW9uKGV4cHIpKSkpOworCQkJaWYgKGV4cHJlc3Npb25fcmV0dXJuc19zZXQoZXhwcikpCisJCQkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQVRZUEVfTUlTTUFUQ0gp LAorCQkJCQkJIGVycm1zZygiREVGQVVMVCBleHByZXNzaW9uIG11c3Qgbm90IHJldHVybiBhIHNl dCIpLAorCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZXhwckxvY2F0aW9uKGV4cHIp KSkpOworCQl9CisJfQorCisJaWYgKGV4cHIgPT0gTlVMTCAmJiBiZWhhdmlvcl90eXBlICE9IEpT T05fQkVIQVZJT1JfRVJST1IpCisJCWV4cHIgPSBHZXRKc29uQmVoYXZpb3JDb25zdEV4cHIoYmVo YXZpb3JfdHlwZSwgbG9jYXRpb24pOworCisJaWYgKGV4cHIpCisJeworCQlOb2RlCSAgICpjb2Vy Y2VkX2V4cHIgPSBleHByOworCQlib29sCQlpc251bGwgPSAoSXNBKGV4cHIsIENvbnN0KSAmJiAo KENvbnN0ICopIGV4cHIpLT5jb25zdGlzbnVsbCk7CisKKwkJLyoKKwkJICogQ29lcmNlIE5VTExz IGFuZCAiaW50ZXJuYWwiICh0aGF0IGlzLCBub3Qgc3BlY2lmaWVkIGJ5IHRoZSB1c2VyKQorCQkg KiBqc29uYi12YWx1ZWQgZXhwcmVzc2lvbnMgd2l0aCBhIEpzb25Db2VyY2lvbiBub2RlLgorCQkg KgorCQkgKiBGb3Igb3RoZXIgKHVzZXItc3BlY2lmaWVkKSBub24tTlVMTCB2YWx1ZXMsIHRyeSB0 byBmaW5kIGEgY2FzdCBhbmQKKwkJICogZXJyb3Igb3V0IGlmIG9uZSBpcyBub3QgZm91bmQuCisJ CSAqLworCQlpZiAoaXNudWxsIHx8CisJCQkoZXhwclR5cGUoZXhwcikgPT0gSlNPTkJPSUQgJiYK KwkJCSBiZWhhdmlvcl90eXBlID09IGRlZmF1bHRfYmVoYXZpb3IpKQorCQkJY29lcmNpb24gPSBt YWtlSnNvbkNvZXJjaW9uKHJldHVybmluZywgZmFsc2UsIE5VTEwpOworCQllbHNlCisJCQljb2Vy Y2VkX2V4cHIgPQorCQkJCWNvZXJjZV90b190YXJnZXRfdHlwZShwc3RhdGUsIGV4cHIsIGV4cHJU eXBlKGV4cHIpLAorCQkJCQkJCQkJICByZXR1cm5pbmctPnR5cGlkLCByZXR1cm5pbmctPnR5cG1v ZCwKKwkJCQkJCQkJCSAgQ09FUkNJT05fRVhQTElDSVQsIENPRVJDRV9FWFBMSUNJVF9DQVNULAor CQkJCQkJCQkJICBleHByTG9jYXRpb24oKE5vZGUgKikgYmVoYXZpb3IpKTsKKworCQlpZiAoY29l cmNlZF9leHByID09IE5VTEwpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQllcnJjb2RlKEVSUkNP REVfQ0FOTk9UX0NPRVJDRSksCisJCQkJCWVycm1zZygiY2Fubm90IGNhc3QgYmVoYXZpb3IgZXhw cmVzc2lvbiBvZiB0eXBlICVzIHRvICVzIiwKKwkJCQkJCSAgIGZvcm1hdF90eXBlX2JlKGV4cHJU eXBlKGV4cHIpKSwKKwkJCQkJCSAgIGZvcm1hdF90eXBlX2JlKHJldHVybmluZy0+dHlwaWQpKSwK KwkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZXhwckxvY2F0aW9uKGV4cHIpKSk7CisJ CWVsc2UKKwkJCWV4cHIgPSBjb2VyY2VkX2V4cHI7CisJfQorCisJcmV0dXJuIG1ha2VKc29uQmVo YXZpb3IoYmVoYXZpb3JfdHlwZSwgZXhwciwgY29lcmNpb24sIGxvY2F0aW9uKTsKK30KZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV90YXJnZXQuYyBiL3NyYy9iYWNrZW5kL3Bh cnNlci9wYXJzZV90YXJnZXQuYwppbmRleCBmMTBmYzQyMGU2Li40YzJkNTg2ZTRkIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdGFyZ2V0LmMKKysrIGIvc3JjL2JhY2tlbmQv cGFyc2VyL3BhcnNlX3RhcmdldC5jCkBAIC0xOTg4LDYgKzE5ODgsMjEgQEAgRmlndXJlQ29sbmFt ZUludGVybmFsKE5vZGUgKm5vZGUsIGNoYXIgKipuYW1lKQogCQkJLyogbWFrZSBKU09OX0FSUkFZ QUdHIGFjdCBsaWtlIGEgcmVndWxhciBmdW5jdGlvbiAqLwogCQkJKm5hbWUgPSAianNvbl9hcnJh eWFnZyI7CiAJCQlyZXR1cm4gMjsKKwkJY2FzZSBUX0pzb25GdW5jRXhwcjoKKwkJCS8qIG1ha2Ug U1FML0pTT04gZnVuY3Rpb25zIGFjdCBsaWtlIGEgcmVndWxhciBmdW5jdGlvbiAqLworCQkJc3dp dGNoICgoKEpzb25GdW5jRXhwciAqKSBub2RlKS0+b3ApCisJCQl7CisJCQkJY2FzZSBKU09OX0VY SVNUU19PUDoKKwkJCQkJKm5hbWUgPSAianNvbl9leGlzdHMiOworCQkJCQlyZXR1cm4gMjsKKwkJ CQljYXNlIEpTT05fUVVFUllfT1A6CisJCQkJCSpuYW1lID0gImpzb25fcXVlcnkiOworCQkJCQly ZXR1cm4gMjsKKwkJCQljYXNlIEpTT05fVkFMVUVfT1A6CisJCQkJCSpuYW1lID0gImpzb25fdmFs dWUiOworCQkJCQlyZXR1cm4gMjsKKwkJCX0KKwkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJYnJl YWs7CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2Zvcm1hdHRpbmcuYyBi L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9mb3JtYXR0aW5nLmMKaW5kZXggMDM2YTQ2MzQ5MS4uMTlm NWY3YzUzMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2Zvcm1hdHRpbmcuYwor KysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvZm9ybWF0dGluZy5jCkBAIC00NDY1LDYgKzQ0NjUs NTAgQEAgcGFyc2VfZGF0ZXRpbWUodGV4dCAqZGF0ZV90eHQsIHRleHQgKmZtdCwgT2lkIGNvbGxp ZCwgYm9vbCBzdHJpY3QsCiAJfQogfQogCisvKgorICogUGFyc2VzIHRoZSBkYXRldGltZSBmb3Jt YXQgc3RyaW5nIGluICdmbXRfc3RyJyBhbmQgcmV0dXJucyB0cnVlIGlmIGl0CisgKiBjb250YWlu cyBhIHRpbWV6b25lIHNwZWNpZmllciwgZmFsc2UgaWYgbm90LgorICovCitib29sCitkYXRldGlt ZV9mb3JtYXRfaGFzX3R6KGNvbnN0IGNoYXIgKmZtdF9zdHIpCit7CisJYm9vbAkJaW5jYWNoZTsK KwlpbnQJCQlmbXRfbGVuID0gc3RybGVuKGZtdF9zdHIpOworCWludAkJCXJlc3VsdDsKKwlGb3Jt YXROb2RlICpmb3JtYXQ7CisKKwlpZiAoZm10X2xlbiA+IERDSF9DQUNIRV9TSVpFKQorCXsKKwkJ LyoKKwkJICogQWxsb2NhdGUgbmV3IG1lbW9yeSBpZiBmb3JtYXQgcGljdHVyZSBpcyBiaWdnZXIg dGhhbiBzdGF0aWMgY2FjaGUKKwkJICogYW5kIGRvIG5vdCB1c2UgY2FjaGUgKGNhbGwgcGFyc2Vy IGFsd2F5cykKKwkJICovCisJCWluY2FjaGUgPSBmYWxzZTsKKworCQlmb3JtYXQgPSAoRm9ybWF0 Tm9kZSAqKSBwYWxsb2MoKGZtdF9sZW4gKyAxKSAqIHNpemVvZihGb3JtYXROb2RlKSk7CisKKwkJ cGFyc2VfZm9ybWF0KGZvcm1hdCwgZm10X3N0ciwgRENIX2tleXdvcmRzLAorCQkJCQkgRENIX3N1 ZmYsIERDSF9pbmRleCwgRENIX0ZMQUcsIE5VTEwpOworCX0KKwllbHNlCisJeworCQkvKgorCQkg KiBVc2UgY2FjaGUgYnVmZmVycworCQkgKi8KKwkJRENIQ2FjaGVFbnRyeSAqZW50ID0gRENIX2Nh Y2hlX2ZldGNoKGZtdF9zdHIsIGZhbHNlKTsKKworCQlpbmNhY2hlID0gdHJ1ZTsKKwkJZm9ybWF0 ID0gZW50LT5mb3JtYXQ7CisJfQorCisJcmVzdWx0ID0gRENIX2RhdGV0aW1lX3R5cGUoZm9ybWF0 KTsKKworCWlmICghaW5jYWNoZSkKKwkJcGZyZWUoZm9ybWF0KTsKKworCXJldHVybiByZXN1bHQg JiBEQ0hfWk9ORUQ7Cit9CisKIC8qCiAgKiBkb190b190aW1lc3RhbXA6IHNoYXJlZCBjb2RlIGZv ciB0b190aW1lc3RhbXAgYW5kIHRvX2RhdGUKICAqCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91 dGlscy9hZHQvanNvbmIuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uYi5jCmluZGV4IGE1 ZTQ4NzQ0YWMuLjhmZmEyNmI3OTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9q c29uYi5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uYi5jCkBAIC0yMTU5LDMgKzIx NTksMzQgQEAganNvbmJfZmxvYXQ4KFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAlQR19SRVRVUk5fREFU VU0ocmV0VmFsdWUpOwogfQorCisvKgorICogQ29udmVydCBqc29uYiB0byBhIEMtc3RyaW5nIHN0 cmlwcGluZyBxdW90ZXMgZnJvbSBzY2FsYXIgc3RyaW5ncy4KKyAqLworY2hhciAqCitKc29uYlVu cXVvdGUoSnNvbmIgKmpiKQoreworCWlmIChKQl9ST09UX0lTX1NDQUxBUihqYikpCisJeworCQlK c29uYlZhbHVlCXY7CisKKwkJKHZvaWQpIEpzb25iRXh0cmFjdFNjYWxhcigmamItPnJvb3QsICZ2 KTsKKworCQlpZiAodi50eXBlID09IGpidlN0cmluZykKKwkJCXJldHVybiBwbnN0cmR1cCh2LnZh bC5zdHJpbmcudmFsLCB2LnZhbC5zdHJpbmcubGVuKTsKKwkJZWxzZSBpZiAodi50eXBlID09IGpi dkJvb2wpCisJCQlyZXR1cm4gcHN0cmR1cCh2LnZhbC5ib29sZWFuID8gInRydWUiIDogImZhbHNl Iik7CisJCWVsc2UgaWYgKHYudHlwZSA9PSBqYnZOdW1lcmljKQorCQkJcmV0dXJuIERhdHVtR2V0 Q1N0cmluZyhEaXJlY3RGdW5jdGlvbkNhbGwxKG51bWVyaWNfb3V0LAorCQkJCQkJCQkJCQkJCSAg IFBvaW50ZXJHZXREYXR1bSh2LnZhbC5udW1lcmljKSkpOworCQllbHNlIGlmICh2LnR5cGUgPT0g amJ2TnVsbCkKKwkJCXJldHVybiBwc3RyZHVwKCJudWxsIik7CisJCWVsc2UKKwkJeworCQkJZWxv ZyhFUlJPUiwgInVucmVjb2duaXplZCBqc29uYiB2YWx1ZSB0eXBlICVkIiwgdi50eXBlKTsKKwkJ CXJldHVybiBOVUxMOworCQl9CisJfQorCWVsc2UKKwkJcmV0dXJuIEpzb25iVG9DU3RyaW5nKE5V TEwsICZqYi0+cm9vdCwgVkFSU0laRShqYikpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L2pzb25mdW5jcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25mdW5jcy5j CmluZGV4IDFiMGY0OTQzMjkuLjU0ZGJkN2U3OWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9qc29uZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmZ1bmNz LmMKQEAgLTI4MzAsNyArMjgzMCw5IEBAIHBvcHVsYXRlX2FycmF5X2RpbV9qc29uYihQb3B1bGF0 ZUFycmF5Q29udGV4dCAqY3R4LCAvKiBjb250ZXh0ICovCiAKIAljaGVja19zdGFja19kZXB0aCgp OwogCi0JaWYgKGpidi0+dHlwZSAhPSBqYnZCaW5hcnkgfHwgIUpzb25Db250YWluZXJJc0FycmF5 KGpiYykpCisJLyogRXZlbiBzY2FsYXJzIGNhbiBlbmQgdXAgaGVyZSB0aGFua3MgdG8gSnNvblBh dGhRdWVyeS9WYWx1ZSgpLiAqLworCWlmIChqYnYtPnR5cGUgIT0gamJ2QmluYXJ5IHx8ICFKc29u Q29udGFpbmVySXNBcnJheShqYmMpIHx8CisJCUpzb25Db250YWluZXJJc1NjYWxhcihqYmMpKQog CXsKIAkJcG9wdWxhdGVfYXJyYXlfcmVwb3J0X2V4cGVjdGVkX2FycmF5KGN0eCwgbmRpbSAtIDEp OwogCQkvKiBHZXR0aW5nIGhlcmUgbWVhbnMgdGhlIGVycm9yIHdhcyByZXBvcnRlZCBzb2Z0bHku ICovCkBAIC0yODM4LDggKzI4NDAsNiBAQCBwb3B1bGF0ZV9hcnJheV9kaW1fanNvbmIoUG9wdWxh dGVBcnJheUNvbnRleHQgKmN0eCwgLyogY29udGV4dCAqLwogCQlyZXR1cm4gZmFsc2U7CiAJfQog Ci0JQXNzZXJ0KCFKc29uQ29udGFpbmVySXNTY2FsYXIoamJjKSk7Ci0KIAlpdCA9IEpzb25iSXRl cmF0b3JJbml0KGpiYyk7CiAKIAl0b2sgPSBKc29uYkl0ZXJhdG9yTmV4dCgmaXQsICZ2YWwsIHRy dWUpOwpAQCAtMzMyMyw2ICszMzIzLDYyIEBAIHByZXBhcmVfY29sdW1uX2NhY2hlKENvbHVtbklP RGF0YSAqY29sdW1uLAogCVJlbGVhc2VTeXNDYWNoZSh0dXApOwogfQogCisvKgorICogUG9wdWxh dGUgYW5kIHJldHVybiB0aGUgdmFsdWUgb2Ygc3BlY2lmaWVkIHR5cGUgZnJvbSBhIGdpdmVuIGpz b24vanNvbmIKKyAqIHZhbHVlICdqc29uX3ZhbCcuICAnY2FjaGUnIGlzIGNhbGxlci1zcGVjaWZp ZWQgcG9pbnRlciB0byBzYXZlIHRoZQorICogQ29sdW1uSU9EYXRhIHRoYXQgd2lsbCBiZSBpbml0 aWFsaXplZCBvbiB0aGUgMXN0IGNhbGwgYW5kIHRoZW4gcmV1c2VkCisgKiBkdXJpbmcgYW55IHN1 YnNlcXVlbnQgY2FsbHMuICAnbWN4dCcgZ2l2ZXMgdGhlIG1lbW9yeSBjb250ZXh0IHRvIGFsbG9j YXRlCisgKiB0aGUgQ29sdW1uSU9EYXRhIGFuZCBhbnkgb3RoZXIgc3Vic2lkaWFyeSBtZW1vcnkg aW4uICAnZXNjb250ZXh0JywKKyAqIGlmIG5vdCBOVUxMLCB0ZWxscyB0aGF0IGFueSBlcnJvcnMg dGhhdCBvY2N1ciBzaG91bGQgYmUgaGFuZGxlZCBzb2Z0bHkuCisgKi8KK0RhdHVtCitqc29uX3Bv cHVsYXRlX3R5cGUoRGF0dW0ganNvbl92YWwsIE9pZCBqc29uX3R5cGUsCisJCQkJICAgT2lkIHR5 cGlkLCBpbnQzMiB0eXBtb2QsCisJCQkJICAgdm9pZCAqKmNhY2hlLCBNZW1vcnlDb250ZXh0IG1j eHQsCisJCQkJICAgYm9vbCAqaXNudWxsLAorCQkJCSAgIE5vZGUgKmVzY29udGV4dCkKK3sKKwlK c1ZhbHVlCQlqc3YgPSB7MH07CisJSnNvbmJWYWx1ZQlqYnY7CisKKwlqc3YuaXNfanNvbiA9IGpz b25fdHlwZSA9PSBKU09OT0lEOworCisJaWYgKCppc251bGwpCisJeworCQlpZiAoanN2LmlzX2pz b24pCisJCQlqc3YudmFsLmpzb24uc3RyID0gTlVMTDsKKwkJZWxzZQorCQkJanN2LnZhbC5qc29u YiA9IE5VTEw7CisJfQorCWVsc2UgaWYgKGpzdi5pc19qc29uKQorCXsKKwkJdGV4dAkgICAqanNv biA9IERhdHVtR2V0VGV4dFBQKGpzb25fdmFsKTsKKworCQlqc3YudmFsLmpzb24uc3RyID0gVkFS REFUQV9BTlkoanNvbik7CisJCWpzdi52YWwuanNvbi5sZW4gPSBWQVJTSVpFX0FOWV9FWEhEUihq c29uKTsKKwkJanN2LnZhbC5qc29uLnR5cGUgPSBKU09OX1RPS0VOX0lOVkFMSUQ7IC8qIG5vdCB1 c2VkIGluCisJCQkJCQkJCQkJCQkgKiBwb3B1bGF0ZV9jb21wb3NpdGUoKSAqLworCX0KKwllbHNl CisJeworCQlKc29uYgkgICAqanNvbmIgPSBEYXR1bUdldEpzb25iUChqc29uX3ZhbCk7CisKKwkJ anN2LnZhbC5qc29uYiA9ICZqYnY7CisKKwkJLyogZmlsbCBiaW5hcnkganNvbmIgdmFsdWUgcG9p bnRpbmcgdG8gamIgKi8KKwkJamJ2LnR5cGUgPSBqYnZCaW5hcnk7CisJCWpidi52YWwuYmluYXJ5 LmRhdGEgPSAmanNvbmItPnJvb3Q7CisJCWpidi52YWwuYmluYXJ5LmxlbiA9IFZBUlNJWkUoanNv bmIpIC0gVkFSSERSU1o7CisJfQorCisJaWYgKCpjYWNoZSA9PSBOVUxMKQorCQkqY2FjaGUgPSBN ZW1vcnlDb250ZXh0QWxsb2NaZXJvKG1jeHQsIHNpemVvZihDb2x1bW5JT0RhdGEpKTsKKworCXJl dHVybiBwb3B1bGF0ZV9yZWNvcmRfZmllbGQoKmNhY2hlLCB0eXBpZCwgdHlwbW9kLCBOVUxMLCBt Y3h0LAorCQkJCQkJCQkgUG9pbnRlckdldERhdHVtKE5VTEwpLCAmanN2LCBpc251bGwsCisJCQkJ CQkJCSBlc2NvbnRleHQpOworfQorCiAvKiByZWN1cnNpdmVseSBwb3B1bGF0ZSBhIHJlY29yZCBm aWVsZCBvciBhbiBhcnJheSBlbGVtZW50IGZyb20gYSBqc29uL2pzb25iIHZhbHVlICovCiBzdGF0 aWMgRGF0dW0KIHBvcHVsYXRlX3JlY29yZF9maWVsZChDb2x1bW5JT0RhdGEgKmNvbCwKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29ucGF0aC5jIGIvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L2pzb25wYXRoLmMKaW5kZXggZjRhNWQwMDc2Ny4uMTFlNjE5M2U5NiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25wYXRoLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L2pzb25wYXRoLmMKQEAgLTYzLDExICs2MywxNCBAQAogCiAjaW5jbHVkZSAicG9zdGdy ZXMuaCIKIAorI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgogI2luY2x1ZGUgImxpYi9zdHJp bmdpbmZvLmgiCiAjaW5jbHVkZSAibGlicHEvcHFmb3JtYXQuaCIKLSNpbmNsdWRlICJub2Rlcy9t aXNjbm9kZXMuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJub2Rlcy9taXNj bm9kZXMuaCIKKyNpbmNsdWRlICJub2Rlcy9ub2RlRnVuY3MuaCIKICNpbmNsdWRlICJ1dGlscy9m bWdycHJvdG9zLmgiCisjaW5jbHVkZSAidXRpbHMvZm9ybWF0dGluZy5oIgogI2luY2x1ZGUgInV0 aWxzL2pzb24uaCIKICNpbmNsdWRlICJ1dGlscy9qc29ucGF0aC5oIgogCkBAIC0xMjM5LDMgKzEy NDIsMjgxIEBAIGpzcEdldEFycmF5U3Vic2NyaXB0KEpzb25QYXRoSXRlbSAqdiwgSnNvblBhdGhJ dGVtICpmcm9tLCBKc29uUGF0aEl0ZW0gKnRvLAogCiAJcmV0dXJuIHRydWU7CiB9CisKKy8qIFNR TC9KU09OIGRhdGF0eXBlIHN0YXR1czogKi8KK2VudW0gSnNvblBhdGhEYXRhdHlwZVN0YXR1cwor eworCWpwZHNOb25EYXRlVGltZSwJCQkvKiBudWxsLCBib29sLCBudW1lcmljLCBzdHJpbmcsIGFy cmF5LCBvYmplY3QgKi8KKwlqcGRzVW5rbm93bkRhdGVUaW1lLAkJLyogdW5rbm93biBkYXRldGlt ZSB0eXBlICovCisJanBkc0RhdGVUaW1lWm9uZWQsCQkJLyogdGltZXR6LCB0aW1lc3RhbXB0eiAq LworCWpwZHNEYXRlVGltZU5vblpvbmVkLAkJLyogdGltZSwgdGltZXN0YW1wLCBkYXRlICovCit9 OworCisvKiBDb250ZXh0IGZvciBqc3BJc011dGFibGVXYWxrZXIoKSAqLworc3RydWN0IEpzb25Q YXRoTXV0YWJsZUNvbnRleHQKK3sKKwlMaXN0CSAgICp2YXJuYW1lczsJCS8qIGxpc3Qgb2YgdmFy aWFibGUgbmFtZXMgKi8KKwlMaXN0CSAgICp2YXJleHByczsJCS8qIGxpc3Qgb2YgdmFyaWFibGUg ZXhwcmVzc2lvbnMgKi8KKwllbnVtIEpzb25QYXRoRGF0YXR5cGVTdGF0dXMgY3VycmVudDsJLyog c3RhdHVzIG9mIEAgaXRlbSAqLworCWJvb2wJCWxheDsJCQkvKiBqc29ucGF0aCBpcyBsYXggb3Ig c3RyaWN0ICovCisJYm9vbAkJbXV0YWJsZTsJCS8qIHJlc3VsdGluZyBtdXRhYmlsaXR5IHN0YXR1 cyAqLworfTsKKworc3RhdGljIGVudW0gSnNvblBhdGhEYXRhdHlwZVN0YXR1cyBqc3BJc011dGFi bGVXYWxrZXIoSnNvblBhdGhJdGVtICpqcGksCisJCQkJCQkJCQkJCQkJICBzdHJ1Y3QgSnNvblBh dGhNdXRhYmxlQ29udGV4dCAqY3h0KTsKKworLyoKKyAqIEZ1bmN0aW9uIHRvIGNoZWNrIHdoZXRo ZXIganNvbnBhdGggZXhwcmVzc2lvbiBpcyBtdXRhYmxlIHRvIGJlIHVzZWQgaW4gdGhlCisgKiBw bGFubmVyIGZ1bmN0aW9uIGNvbnRhaW5fbXV0YWJsZV9mdW5jdGlvbnMoKS4KKyAqLworYm9vbAor anNwSXNNdXRhYmxlKEpzb25QYXRoICpwYXRoLCBMaXN0ICp2YXJuYW1lcywgTGlzdCAqdmFyZXhw cnMpCit7CisJc3RydWN0IEpzb25QYXRoTXV0YWJsZUNvbnRleHQgY3h0OworCUpzb25QYXRoSXRl bSBqcGk7CisKKwljeHQudmFybmFtZXMgPSB2YXJuYW1lczsKKwljeHQudmFyZXhwcnMgPSB2YXJl eHByczsKKwljeHQuY3VycmVudCA9IGpwZHNOb25EYXRlVGltZTsKKwljeHQubGF4ID0gKHBhdGgt PmhlYWRlciAmIEpTT05QQVRIX0xBWCkgIT0gMDsKKwljeHQubXV0YWJsZSA9IGZhbHNlOworCisJ anNwSW5pdCgmanBpLCBwYXRoKTsKKwkodm9pZCkganNwSXNNdXRhYmxlV2Fsa2VyKCZqcGksICZj eHQpOworCisJcmV0dXJuIGN4dC5tdXRhYmxlOworfQorCisvKgorICogUmVjdXJzaXZlIHdhbGtl ciBmb3IganNwSXNNdXRhYmxlKCkKKyAqLworc3RhdGljIGVudW0gSnNvblBhdGhEYXRhdHlwZVN0 YXR1cworanNwSXNNdXRhYmxlV2Fsa2VyKEpzb25QYXRoSXRlbSAqanBpLCBzdHJ1Y3QgSnNvblBh dGhNdXRhYmxlQ29udGV4dCAqY3h0KQoreworCUpzb25QYXRoSXRlbSBuZXh0OworCWVudW0gSnNv blBhdGhEYXRhdHlwZVN0YXR1cyBzdGF0dXMgPSBqcGRzTm9uRGF0ZVRpbWU7CisKKwl3aGlsZSAo IWN4dC0+bXV0YWJsZSkKKwl7CisJCUpzb25QYXRoSXRlbSBhcmc7CisJCWVudW0gSnNvblBhdGhE YXRhdHlwZVN0YXR1cyBsZWZ0U3RhdHVzOworCQllbnVtIEpzb25QYXRoRGF0YXR5cGVTdGF0dXMg cmlnaHRTdGF0dXM7CisKKwkJc3dpdGNoIChqcGktPnR5cGUpCisJCXsKKwkJCWNhc2UganBpUm9v dDoKKwkJCQlBc3NlcnQoc3RhdHVzID09IGpwZHNOb25EYXRlVGltZSk7CisJCQkJYnJlYWs7CisK KwkJCWNhc2UganBpQ3VycmVudDoKKwkJCQlBc3NlcnQoc3RhdHVzID09IGpwZHNOb25EYXRlVGlt ZSk7CisJCQkJc3RhdHVzID0gY3h0LT5jdXJyZW50OworCQkJCWJyZWFrOworCisJCQljYXNlIGpw aUZpbHRlcjoKKwkJCQl7CisJCQkJCWVudW0gSnNvblBhdGhEYXRhdHlwZVN0YXR1cyBwcmV2U3Rh dHVzID0gY3h0LT5jdXJyZW50OworCisJCQkJCWN4dC0+Y3VycmVudCA9IHN0YXR1czsKKwkJCQkJ anNwR2V0QXJnKGpwaSwgJmFyZyk7CisJCQkJCWpzcElzTXV0YWJsZVdhbGtlcigmYXJnLCBjeHQp OworCisJCQkJCWN4dC0+Y3VycmVudCA9IHByZXZTdGF0dXM7CisJCQkJCWJyZWFrOworCQkJCX0K KworCQkJY2FzZSBqcGlWYXJpYWJsZToKKwkJCQl7CisJCQkJCWludDMyCQlsZW47CisJCQkJCWNv bnN0IGNoYXIgKm5hbWUgPSBqc3BHZXRTdHJpbmcoanBpLCAmbGVuKTsKKwkJCQkJTGlzdENlbGwg ICAqbGMxOworCQkJCQlMaXN0Q2VsbCAgICpsYzI7CisKKwkJCQkJQXNzZXJ0KHN0YXR1cyA9PSBq cGRzTm9uRGF0ZVRpbWUpOworCisJCQkJCWZvcmJvdGgobGMxLCBjeHQtPnZhcm5hbWVzLCBsYzIs IGN4dC0+dmFyZXhwcnMpCisJCQkJCXsKKwkJCQkJCVN0cmluZwkgICAqdmFybmFtZSA9IGxmaXJz dF9ub2RlKFN0cmluZywgbGMxKTsKKwkJCQkJCU5vZGUJICAgKnZhcmV4cHIgPSBsZmlyc3QobGMy KTsKKworCQkJCQkJaWYgKHN0cm5jbXAodmFybmFtZS0+c3ZhbCwgbmFtZSwgbGVuKSkKKwkJCQkJ CQljb250aW51ZTsKKworCQkJCQkJc3dpdGNoIChleHByVHlwZSh2YXJleHByKSkKKwkJCQkJCXsK KwkJCQkJCQljYXNlIERBVEVPSUQ6CisJCQkJCQkJY2FzZSBUSU1FT0lEOgorCQkJCQkJCWNhc2Ug VElNRVNUQU1QT0lEOgorCQkJCQkJCQlzdGF0dXMgPSBqcGRzRGF0ZVRpbWVOb25ab25lZDsKKwkJ CQkJCQkJYnJlYWs7CisKKwkJCQkJCQljYXNlIFRJTUVUWk9JRDoKKwkJCQkJCQljYXNlIFRJTUVT VEFNUFRaT0lEOgorCQkJCQkJCQlzdGF0dXMgPSBqcGRzRGF0ZVRpbWVab25lZDsKKwkJCQkJCQkJ YnJlYWs7CisKKwkJCQkJCQlkZWZhdWx0OgorCQkJCQkJCQlzdGF0dXMgPSBqcGRzTm9uRGF0ZVRp bWU7CisJCQkJCQkJCWJyZWFrOworCQkJCQkJfQorCisJCQkJCQlicmVhazsKKwkJCQkJfQorCQkJ CQlicmVhazsKKwkJCQl9CisKKwkJCWNhc2UganBpRXF1YWw6CisJCQljYXNlIGpwaU5vdEVxdWFs OgorCQkJY2FzZSBqcGlMZXNzOgorCQkJY2FzZSBqcGlHcmVhdGVyOgorCQkJY2FzZSBqcGlMZXNz T3JFcXVhbDoKKwkJCWNhc2UganBpR3JlYXRlck9yRXF1YWw6CisJCQkJQXNzZXJ0KHN0YXR1cyA9 PSBqcGRzTm9uRGF0ZVRpbWUpOworCQkJCWpzcEdldExlZnRBcmcoanBpLCAmYXJnKTsKKwkJCQls ZWZ0U3RhdHVzID0ganNwSXNNdXRhYmxlV2Fsa2VyKCZhcmcsIGN4dCk7CisKKwkJCQlqc3BHZXRS aWdodEFyZyhqcGksICZhcmcpOworCQkJCXJpZ2h0U3RhdHVzID0ganNwSXNNdXRhYmxlV2Fsa2Vy KCZhcmcsIGN4dCk7CisKKwkJCQkvKgorCQkJCSAqIENvbXBhcmlzb24gb2YgZGF0ZXRpbWUgdHlw ZSB3aXRoIGRpZmZlcmVudCB0aW1lem9uZSBzdGF0dXMKKwkJCQkgKiBpcyBtdXRhYmxlLgorCQkJ CSAqLworCQkJCWlmIChsZWZ0U3RhdHVzICE9IGpwZHNOb25EYXRlVGltZSAmJgorCQkJCQlyaWdo dFN0YXR1cyAhPSBqcGRzTm9uRGF0ZVRpbWUgJiYKKwkJCQkJKGxlZnRTdGF0dXMgPT0ganBkc1Vu a25vd25EYXRlVGltZSB8fAorCQkJCQkgcmlnaHRTdGF0dXMgPT0ganBkc1Vua25vd25EYXRlVGlt ZSB8fAorCQkJCQkgbGVmdFN0YXR1cyAhPSByaWdodFN0YXR1cykpCisJCQkJCWN4dC0+bXV0YWJs ZSA9IHRydWU7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UganBpTm90OgorCQkJY2FzZSBqcGlJc1Vu a25vd246CisJCQljYXNlIGpwaUV4aXN0czoKKwkJCWNhc2UganBpUGx1czoKKwkJCWNhc2UganBp TWludXM6CisJCQkJQXNzZXJ0KHN0YXR1cyA9PSBqcGRzTm9uRGF0ZVRpbWUpOworCQkJCWpzcEdl dEFyZyhqcGksICZhcmcpOworCQkJCWpzcElzTXV0YWJsZVdhbGtlcigmYXJnLCBjeHQpOworCQkJ CWJyZWFrOworCisJCQljYXNlIGpwaUFuZDoKKwkJCWNhc2UganBpT3I6CisJCQljYXNlIGpwaUFk ZDoKKwkJCWNhc2UganBpU3ViOgorCQkJY2FzZSBqcGlNdWw6CisJCQljYXNlIGpwaURpdjoKKwkJ CWNhc2UganBpTW9kOgorCQkJY2FzZSBqcGlTdGFydHNXaXRoOgorCQkJCUFzc2VydChzdGF0dXMg PT0ganBkc05vbkRhdGVUaW1lKTsKKwkJCQlqc3BHZXRMZWZ0QXJnKGpwaSwgJmFyZyk7CisJCQkJ anNwSXNNdXRhYmxlV2Fsa2VyKCZhcmcsIGN4dCk7CisJCQkJanNwR2V0UmlnaHRBcmcoanBpLCAm YXJnKTsKKwkJCQlqc3BJc011dGFibGVXYWxrZXIoJmFyZywgY3h0KTsKKwkJCQlicmVhazsKKwor CQkJY2FzZSBqcGlJbmRleEFycmF5OgorCQkJCWZvciAoaW50IGkgPSAwOyBpIDwganBpLT5jb250 ZW50LmFycmF5Lm5lbGVtczsgaSsrKQorCQkJCXsKKwkJCQkJSnNvblBhdGhJdGVtIGZyb207CisJ CQkJCUpzb25QYXRoSXRlbSB0bzsKKworCQkJCQlpZiAoanNwR2V0QXJyYXlTdWJzY3JpcHQoanBp LCAmZnJvbSwgJnRvLCBpKSkKKwkJCQkJCWpzcElzTXV0YWJsZVdhbGtlcigmdG8sIGN4dCk7CisK KwkJCQkJanNwSXNNdXRhYmxlV2Fsa2VyKCZmcm9tLCBjeHQpOworCQkJCX0KKwkJCQkvKiBGQUxM VEhST1VHSCAqLworCisJCQljYXNlIGpwaUFueUFycmF5OgorCQkJCWlmICghY3h0LT5sYXgpCisJ CQkJCXN0YXR1cyA9IGpwZHNOb25EYXRlVGltZTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBqcGlB bnk6CisJCQkJaWYgKGpwaS0+Y29udGVudC5hbnlib3VuZHMuZmlyc3QgPiAwKQorCQkJCQlzdGF0 dXMgPSBqcGRzTm9uRGF0ZVRpbWU7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UganBpRGF0ZXRpbWU6 CisJCQkJaWYgKGpwaS0+Y29udGVudC5hcmcpCisJCQkJeworCQkJCQljaGFyCSAgICp0ZW1wbGF0 ZTsKKworCQkJCQlqc3BHZXRBcmcoanBpLCAmYXJnKTsKKwkJCQkJaWYgKGFyZy50eXBlICE9IGpw aVN0cmluZykKKwkJCQkJeworCQkJCQkJc3RhdHVzID0ganBkc05vbkRhdGVUaW1lOworCQkJCQkJ YnJlYWs7CS8qIHRoZXJlIHdpbGwgYmUgcnVudGltZSBlcnJvciAqLworCQkJCQl9CisKKwkJCQkJ dGVtcGxhdGUgPSBqc3BHZXRTdHJpbmcoJmFyZywgTlVMTCk7CisJCQkJCWlmIChkYXRldGltZV9m b3JtYXRfaGFzX3R6KHRlbXBsYXRlKSkKKwkJCQkJCXN0YXR1cyA9IGpwZHNEYXRlVGltZVpvbmVk OworCQkJCQllbHNlCisJCQkJCQlzdGF0dXMgPSBqcGRzRGF0ZVRpbWVOb25ab25lZDsKKwkJCQl9 CisJCQkJZWxzZQorCQkJCXsKKwkJCQkJc3RhdHVzID0ganBkc1Vua25vd25EYXRlVGltZTsKKwkJ CQl9CisJCQkJYnJlYWs7CisKKwkJCWNhc2UganBpTGlrZVJlZ2V4OgorCQkJCUFzc2VydChzdGF0 dXMgPT0ganBkc05vbkRhdGVUaW1lKTsKKwkJCQlqc3BJbml0QnlCdWZmZXIoJmFyZywganBpLT5i YXNlLCBqcGktPmNvbnRlbnQubGlrZV9yZWdleC5leHByKTsKKwkJCQlqc3BJc011dGFibGVXYWxr ZXIoJmFyZywgY3h0KTsKKwkJCQlicmVhazsKKworCQkJCS8qIGxpdGVyYWxzICovCisJCQljYXNl IGpwaU51bGw6CisJCQljYXNlIGpwaVN0cmluZzoKKwkJCWNhc2UganBpTnVtZXJpYzoKKwkJCWNh c2UganBpQm9vbDoKKwkJCQlicmVhazsKKwkJCQkvKiBhY2Nlc3NvcnMgKi8KKwkJCWNhc2UganBp S2V5OgorCQkJY2FzZSBqcGlBbnlLZXk6CisJCQkJLyogc3BlY2lhbCBpdGVtcyAqLworCQkJY2Fz ZSBqcGlTdWJzY3JpcHQ6CisJCQljYXNlIGpwaUxhc3Q6CisJCQkJLyogaXRlbSBtZXRob2RzICov CisJCQljYXNlIGpwaVR5cGU6CisJCQljYXNlIGpwaVNpemU6CisJCQljYXNlIGpwaUFiczoKKwkJ CWNhc2UganBpRmxvb3I6CisJCQljYXNlIGpwaUNlaWxpbmc6CisJCQljYXNlIGpwaURvdWJsZToK KwkJCWNhc2UganBpS2V5VmFsdWU6CisJCQljYXNlIGpwaUJpZ2ludDoKKwkJCWNhc2UganBpQm9v bGVhbjoKKwkJCWNhc2UganBpRGVjaW1hbDoKKwkJCWNhc2UganBpSW50ZWdlcjoKKwkJCWNhc2Ug anBpTnVtYmVyOgorCQkJY2FzZSBqcGlTdHJpbmdGdW5jOgorCQkJCXN0YXR1cyA9IGpwZHNOb25E YXRlVGltZTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBqcGlUaW1lOgorCQkJY2FzZSBqcGlEYXRl OgorCQkJY2FzZSBqcGlUaW1lc3RhbXA6CisJCQkJc3RhdHVzID0ganBkc0RhdGVUaW1lTm9uWm9u ZWQ7CisJCQkJY3h0LT5tdXRhYmxlID0gdHJ1ZTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBqcGlU aW1lVHo6CisJCQljYXNlIGpwaVRpbWVzdGFtcFR6OgorCQkJCXN0YXR1cyA9IGpwZHNEYXRlVGlt ZU5vblpvbmVkOworCQkJCWN4dC0+bXV0YWJsZSA9IHRydWU7CisJCQkJYnJlYWs7CisKKwkJfQor CisJCWlmICghanNwR2V0TmV4dChqcGksICZuZXh0KSkKKwkJCWJyZWFrOworCisJCWpwaSA9ICZu ZXh0OworCX0KKworCXJldHVybiBzdGF0dXM7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91 dGlscy9hZHQvanNvbnBhdGhfZXhlYy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25wYXRo X2V4ZWMuYwppbmRleCA2YzhiZDU3NTAzLi4xZDJkMDI0NWU4IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC91dGlscy9hZHQvanNvbnBhdGhfZXhlYy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC9qc29ucGF0aF9leGVjLmMKQEAgLTIyOSw2ICsyMjksMTIgQEAgc3RhdGljIEpzb25QYXRoRXhl Y1Jlc3VsdCBhcHBlbmRCb29sUmVzdWx0KEpzb25QYXRoRXhlY0NvbnRleHQgKmN4dCwKIAkJCQkJ CQkJCQkgICBKc29uUGF0aEl0ZW0gKmpzcCwgSnNvblZhbHVlTGlzdCAqZm91bmQsIEpzb25QYXRo Qm9vbCByZXMpOwogc3RhdGljIHZvaWQgZ2V0SnNvblBhdGhJdGVtKEpzb25QYXRoRXhlY0NvbnRl eHQgKmN4dCwgSnNvblBhdGhJdGVtICppdGVtLAogCQkJCQkJCUpzb25iVmFsdWUgKnZhbHVlKTsK K3N0YXRpYyBKc29uYlZhbHVlICpHZXRKc29uUGF0aFZhcih2b2lkICpjeHQsIGNoYXIgKnZhck5h bWUsIGludCB2YXJOYW1lTGVuLAorCQkJCQkJCQkgIEpzb25iVmFsdWUgKmJhc2VPYmplY3QsIGlu dCAqYmFzZU9iamVjdElkKTsKK3N0YXRpYyBpbnQJQ291bnRKc29uUGF0aFZhcnModm9pZCAqY3h0 KTsKK3N0YXRpYyB2b2lkIEpzb25JdGVtRnJvbURhdHVtKERhdHVtIHZhbCwgT2lkIHR5cGlkLCBp bnQzMiB0eXBtb2QsCisJCQkJCQkJICBKc29uYlZhbHVlICpyZXMpOworc3RhdGljIHZvaWQgSnNv bmJWYWx1ZUluaXROdW1lcmljRGF0dW0oSnNvbmJWYWx1ZSAqamJ2LCBEYXR1bSBudW0pOwogc3Rh dGljIHZvaWQgZ2V0SnNvblBhdGhWYXJpYWJsZShKc29uUGF0aEV4ZWNDb250ZXh0ICpjeHQsCiAJ CQkJCQkJCUpzb25QYXRoSXRlbSAqdmFyaWFibGUsIEpzb25iVmFsdWUgKnZhbHVlKTsKIHN0YXRp YyBpbnQJY291bnRWYXJpYWJsZXNGcm9tSnNvbmIodm9pZCAqdmFyc0pzb25iKTsKQEAgLTI4NjAs NiArMjg2NiwxNTUgQEAgZ2V0SnNvblBhdGhJdGVtKEpzb25QYXRoRXhlY0NvbnRleHQgKmN4dCwg SnNvblBhdGhJdGVtICppdGVtLAogCX0KIH0KIAorLyoKKyAqIFJldHVybnMgdGhlIGNvbXB1dGVk IHZhbHVlIG9mIGEgSlNPTiBwYXRoIHZhcmlhYmxlIHdpdGggZ2l2ZW4gbmFtZS4KKyAqLworc3Rh dGljIEpzb25iVmFsdWUgKgorR2V0SnNvblBhdGhWYXIodm9pZCAqY3h0LCBjaGFyICp2YXJOYW1l LCBpbnQgdmFyTmFtZUxlbiwKKwkJCSAgIEpzb25iVmFsdWUgKmJhc2VPYmplY3QsIGludCAqYmFz ZU9iamVjdElkKQoreworCUpzb25QYXRoVmFyaWFibGUgKnZhciA9IE5VTEw7CisJTGlzdAkgICAq dmFycyA9IGN4dDsKKwlMaXN0Q2VsbCAgICpsYzsKKwlKc29uYlZhbHVlICpyZXN1bHQ7CisJaW50 CQkJaWQgPSAxOworCisJZm9yZWFjaChsYywgdmFycykKKwl7CisJCUpzb25QYXRoVmFyaWFibGUg KmN1cnZhciA9IGxmaXJzdChsYyk7CisKKwkJaWYgKCFzdHJuY21wKGN1cnZhci0+bmFtZSwgdmFy TmFtZSwgdmFyTmFtZUxlbikpCisJCXsKKwkJCXZhciA9IGN1cnZhcjsKKwkJCWJyZWFrOworCQl9 CisKKwkJaWQrKzsKKwl9CisKKwlpZiAodmFyID09IE5VTEwpCisJeworCQkqYmFzZU9iamVjdElk ID0gLTE7CisJCXJldHVybiBOVUxMOworCX0KKworCXJlc3VsdCA9IHBhbGxvYyhzaXplb2YoSnNv bmJWYWx1ZSkpOworCWlmICh2YXItPmlzbnVsbCkKKwl7CisJCSpiYXNlT2JqZWN0SWQgPSAwOwor CQlyZXN1bHQtPnR5cGUgPSBqYnZOdWxsOworCX0KKwllbHNlCisJCUpzb25JdGVtRnJvbURhdHVt KHZhci0+dmFsdWUsIHZhci0+dHlwaWQsIHZhci0+dHlwbW9kLCByZXN1bHQpOworCisJKmJhc2VP YmplY3QgPSAqcmVzdWx0OworCSpiYXNlT2JqZWN0SWQgPSBpZDsKKworCXJldHVybiByZXN1bHQ7 Cit9CisKK3N0YXRpYyBpbnQKK0NvdW50SnNvblBhdGhWYXJzKHZvaWQgKmN4dCkKK3sKKwlMaXN0 CSAgICp2YXJzID0gKExpc3QgKikgY3h0OworCisJcmV0dXJuIGxpc3RfbGVuZ3RoKHZhcnMpOwor fQorCisKKy8qCisgKiBJbml0aWFsaXplIEpzb25iVmFsdWUgdG8gcGFzcyB0byBqc29ucGF0aCBl eGVjdXRvciBmcm9tIGdpdmVuCisgKiBkYXR1bSB2YWx1ZSBvZiB0aGUgc3BlY2lmaWVkIHR5cGUu CisgKi8KK3N0YXRpYyB2b2lkCitKc29uSXRlbUZyb21EYXR1bShEYXR1bSB2YWwsIE9pZCB0eXBp ZCwgaW50MzIgdHlwbW9kLCBKc29uYlZhbHVlICpyZXMpCit7CisJc3dpdGNoICh0eXBpZCkKKwl7 CisJCWNhc2UgQk9PTE9JRDoKKwkJCXJlcy0+dHlwZSA9IGpidkJvb2w7CisJCQlyZXMtPnZhbC5i b29sZWFuID0gRGF0dW1HZXRCb29sKHZhbCk7CisJCQlicmVhazsKKwkJY2FzZSBOVU1FUklDT0lE OgorCQkJSnNvbmJWYWx1ZUluaXROdW1lcmljRGF0dW0ocmVzLCB2YWwpOworCQkJYnJlYWs7CisJ CWNhc2UgSU5UMk9JRDoKKwkJCUpzb25iVmFsdWVJbml0TnVtZXJpY0RhdHVtKHJlcywgRGlyZWN0 RnVuY3Rpb25DYWxsMShpbnQyX251bWVyaWMsIHZhbCkpOworCQkJYnJlYWs7CisJCWNhc2UgSU5U NE9JRDoKKwkJCUpzb25iVmFsdWVJbml0TnVtZXJpY0RhdHVtKHJlcywgRGlyZWN0RnVuY3Rpb25D YWxsMShpbnQ0X251bWVyaWMsIHZhbCkpOworCQkJYnJlYWs7CisJCWNhc2UgSU5UOE9JRDoKKwkJ CUpzb25iVmFsdWVJbml0TnVtZXJpY0RhdHVtKHJlcywgRGlyZWN0RnVuY3Rpb25DYWxsMShpbnQ4 X251bWVyaWMsIHZhbCkpOworCQkJYnJlYWs7CisJCWNhc2UgRkxPQVQ0T0lEOgorCQkJSnNvbmJW YWx1ZUluaXROdW1lcmljRGF0dW0ocmVzLCBEaXJlY3RGdW5jdGlvbkNhbGwxKGZsb2F0NF9udW1l cmljLCB2YWwpKTsKKwkJCWJyZWFrOworCQljYXNlIEZMT0FUOE9JRDoKKwkJCUpzb25iVmFsdWVJ bml0TnVtZXJpY0RhdHVtKHJlcywgRGlyZWN0RnVuY3Rpb25DYWxsMShmbG9hdDhfbnVtZXJpYywg dmFsKSk7CisJCQlicmVhazsKKwkJY2FzZSBURVhUT0lEOgorCQljYXNlIFZBUkNIQVJPSUQ6CisJ CQlyZXMtPnR5cGUgPSBqYnZTdHJpbmc7CisJCQlyZXMtPnZhbC5zdHJpbmcudmFsID0gVkFSREFU QV9BTlkodmFsKTsKKwkJCXJlcy0+dmFsLnN0cmluZy5sZW4gPSBWQVJTSVpFX0FOWV9FWEhEUih2 YWwpOworCQkJYnJlYWs7CisJCWNhc2UgREFURU9JRDoKKwkJY2FzZSBUSU1FT0lEOgorCQljYXNl IFRJTUVUWk9JRDoKKwkJY2FzZSBUSU1FU1RBTVBPSUQ6CisJCWNhc2UgVElNRVNUQU1QVFpPSUQ6 CisJCQlyZXMtPnR5cGUgPSBqYnZEYXRldGltZTsKKwkJCXJlcy0+dmFsLmRhdGV0aW1lLnZhbHVl ID0gdmFsOworCQkJcmVzLT52YWwuZGF0ZXRpbWUudHlwaWQgPSB0eXBpZDsKKwkJCXJlcy0+dmFs LmRhdGV0aW1lLnR5cG1vZCA9IHR5cG1vZDsKKwkJCXJlcy0+dmFsLmRhdGV0aW1lLnR6ID0gMDsK KwkJCWJyZWFrOworCQljYXNlIEpTT05CT0lEOgorCQkJeworCQkJCUpzb25iVmFsdWUgKmpidiA9 IHJlczsKKwkJCQlKc29uYgkgICAqamIgPSBEYXR1bUdldEpzb25iUCh2YWwpOworCisJCQkJaWYg KEpzb25Db250YWluZXJJc1NjYWxhcigmamItPnJvb3QpKQorCQkJCXsKKwkJCQkJYm9vbAkJcmVz dWx0IFBHX1VTRURfRk9SX0FTU0VSVFNfT05MWTsKKworCQkJCQlyZXN1bHQgPSBKc29uYkV4dHJh Y3RTY2FsYXIoJmpiLT5yb290LCBqYnYpOworCQkJCQlBc3NlcnQocmVzdWx0KTsKKwkJCQl9CisJ CQkJZWxzZQorCQkJCQlKc29uYkluaXRCaW5hcnkoamJ2LCBqYik7CisJCQkJYnJlYWs7CisJCQl9 CisJCWNhc2UgSlNPTk9JRDoKKwkJCXsKKwkJCQl0ZXh0CSAgICp0eHQgPSBEYXR1bUdldFRleHRQ KHZhbCk7CisJCQkJY2hhcgkgICAqc3RyID0gdGV4dF90b19jc3RyaW5nKHR4dCk7CisJCQkJSnNv bmIJICAgKmpiOworCisJCQkJamIgPSBEYXR1bUdldEpzb25iUChEaXJlY3RGdW5jdGlvbkNhbGwx KGpzb25iX2luLAorCQkJCQkJCQkJCQkJCQlDU3RyaW5nR2V0RGF0dW0oc3RyKSkpOworCQkJCXBm cmVlKHN0cik7CisKKwkJCQlKc29uSXRlbUZyb21EYXR1bShKc29uYlBHZXREYXR1bShqYiksIEpT T05CT0lELCAtMSwgcmVzKTsKKwkJCQlicmVhazsKKwkJCX0KKwkJZGVmYXVsdDoKKwkJCWVyZXBv cnQoRVJST1IsCisJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSks CisJCQkJCWVycm1zZygiY291bGQgbm90IGNvbnZlcnQgdmFsdWUgb2YgdHlwZSAlcyB0byBqc29u cGF0aCIsCisJCQkJCQkgICBmb3JtYXRfdHlwZV9iZSh0eXBpZCkpKTsKKwl9Cit9CisKKy8qIElu aXRpYWxpemUgbnVtZXJpYyB2YWx1ZSBmcm9tIHRoZSBnaXZlbiBkYXR1bSAqLworc3RhdGljIHZv aWQKK0pzb25iVmFsdWVJbml0TnVtZXJpY0RhdHVtKEpzb25iVmFsdWUgKmpidiwgRGF0dW0gbnVt KQoreworCWpidi0+dHlwZSA9IGpidk51bWVyaWM7CisJamJ2LT52YWwubnVtZXJpYyA9IERhdHVt R2V0TnVtZXJpYyhudW0pOworfQorCiAvKgogICogR2V0IHRoZSB2YWx1ZSBvZiB2YXJpYWJsZSBw YXNzZWQgdG8ganNvbnBhdGggZXhlY3V0b3IKICAqLwpAQCAtMzU5NiwzICszNzUxLDE3MCBAQCBj b21wYXJlRGF0ZXRpbWUoRGF0dW0gdmFsMSwgT2lkIHR5cGlkMSwgRGF0dW0gdmFsMiwgT2lkIHR5 cGlkMiwKIAogCXJldHVybiBEYXR1bUdldEludDMyKERpcmVjdEZ1bmN0aW9uQ2FsbDIoY21wZnVu YywgdmFsMSwgdmFsMikpOwogfQorCisvKgorICogRXhlY3V0b3ItY2FsbGFibGUgSlNPTl9FWElT VFMgaW1wbGVtZW50YXRpb24KKyAqCisgKiBSZXR1cm5zIE5VTEwgaW5zdGVhZCBvZiB0aHJvd2lu ZyBlcnJvcnMgaWYgJ2Vycm9yJyBpcyBub3QgTlVMTCwgc2V0dGluZworICogKmVycm9yIHRvIHRy dWUuCisgKi8KK2Jvb2wKK0pzb25QYXRoRXhpc3RzKERhdHVtIGpiLCBKc29uUGF0aCAqanAsIGJv b2wgKmVycm9yLCBMaXN0ICp2YXJzKQoreworCUpzb25QYXRoRXhlY1Jlc3VsdCByZXM7CisKKwly ZXMgPSBleGVjdXRlSnNvblBhdGgoanAsIHZhcnMsCisJCQkJCQkgIEdldEpzb25QYXRoVmFyLCBD b3VudEpzb25QYXRoVmFycywKKwkJCQkJCSAgRGF0dW1HZXRKc29uYlAoamIpLCAhZXJyb3IsIE5V TEwsIHRydWUpOworCisJQXNzZXJ0KGVycm9yIHx8ICFqcGVySXNFcnJvcihyZXMpKTsKKworCWlm IChlcnJvciAmJiBqcGVySXNFcnJvcihyZXMpKQorCQkqZXJyb3IgPSB0cnVlOworCisJcmV0dXJu IHJlcyA9PSBqcGVyT2s7Cit9CisKKy8qCisgKiBFeGVjdXRvci1jYWxsYWJsZSBKU09OX1FVRVJZ IGltcGxlbWVudGF0aW9uCisgKgorICogUmV0dXJucyBOVUxMIGluc3RlYWQgb2YgdGhyb3dpbmcg ZXJyb3JzIGlmICdlcnJvcicgaXMgbm90IE5VTEwsIHNldHRpbmcKKyAqICplcnJvciB0byB0cnVl LiAgKmVtcHR5IGlzIHNldCB0byB0cnVlIGlmIG5vIG1hdGNoIGlzIGZvdW5kLgorICovCitEYXR1 bQorSnNvblBhdGhRdWVyeShEYXR1bSBqYiwgSnNvblBhdGggKmpwLCBKc29uV3JhcHBlciB3cmFw cGVyLCBib29sICplbXB0eSwKKwkJCSAgYm9vbCAqZXJyb3IsIExpc3QgKnZhcnMpCit7CisJSnNv bmJWYWx1ZSAqc2luZ2xldG9uOworCWJvb2wJCXdyYXA7CisJSnNvblZhbHVlTGlzdCBmb3VuZCA9 IHswfTsKKwlKc29uUGF0aEV4ZWNSZXN1bHQgcmVzOworCWludAkJCWNvdW50OworCisJcmVzID0g ZXhlY3V0ZUpzb25QYXRoKGpwLCB2YXJzLAorCQkJCQkJICBHZXRKc29uUGF0aFZhciwgQ291bnRK c29uUGF0aFZhcnMsCisJCQkJCQkgIERhdHVtR2V0SnNvbmJQKGpiKSwgIWVycm9yLCAmZm91bmQs IHRydWUpOworCUFzc2VydChlcnJvciB8fCAhanBlcklzRXJyb3IocmVzKSk7CisJaWYgKGVycm9y ICYmIGpwZXJJc0Vycm9yKHJlcykpCisJeworCQkqZXJyb3IgPSB0cnVlOworCQkqZW1wdHkgPSBm YWxzZTsKKwkJcmV0dXJuIChEYXR1bSkgMDsKKwl9CisKKwkvKiBXUkFQIG9yIG5vdD8gKi8KKwlj b3VudCA9IEpzb25WYWx1ZUxpc3RMZW5ndGgoJmZvdW5kKTsKKwlzaW5nbGV0b24gPSBjb3VudCA+ IDAgPyBKc29uVmFsdWVMaXN0SGVhZCgmZm91bmQpIDogTlVMTDsKKwlpZiAoc2luZ2xldG9uID09 IE5VTEwpCisJCXdyYXAgPSBmYWxzZTsKKwllbHNlIGlmICh3cmFwcGVyID09IEpTV19OT05FIHx8 IHdyYXBwZXIgPT0gSlNXX1VOU1BFQykKKwkJd3JhcCA9IGZhbHNlOworCWVsc2UgaWYgKHdyYXBw ZXIgPT0gSlNXX1VOQ09ORElUSU9OQUwpCisJCXdyYXAgPSB0cnVlOworCWVsc2UgaWYgKHdyYXBw ZXIgPT0gSlNXX0NPTkRJVElPTkFMKQorCQl3cmFwID0gY291bnQgPiAxIHx8CisJCQlJc0FKc29u YlNjYWxhcihzaW5nbGV0b24pIHx8CisJCQkoc2luZ2xldG9uLT50eXBlID09IGpidkJpbmFyeSAm JgorCQkJIEpzb25Db250YWluZXJJc1NjYWxhcihzaW5nbGV0b24tPnZhbC5iaW5hcnkuZGF0YSkp OworCWVsc2UKKwl7CisJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQganNvbiB3cmFwcGVyICVk Iiwgd3JhcHBlcik7CisJCXdyYXAgPSBmYWxzZTsKKwl9CisKKwlpZiAod3JhcCkKKwkJcmV0dXJu IEpzb25iUEdldERhdHVtKEpzb25iVmFsdWVUb0pzb25iKHdyYXBJdGVtc0luQXJyYXkoJmZvdW5k KSkpOworCisJLyogTm8gd3JhcHBpbmcgbWVhbnMgb25seSBvbmUgaXRlbSBpcyBleHBlY3RlZC4g Ki8KKwlpZiAoY291bnQgPiAxKQorCXsKKwkJaWYgKGVycm9yKQorCQl7CisJCQkqZXJyb3IgPSB0 cnVlOworCQkJcmV0dXJuIChEYXR1bSkgMDsKKwkJfQorCisJCWVyZXBvcnQoRVJST1IsCisJCQkJ KGVycmNvZGUoRVJSQ09ERV9NT1JFX1RIQU5fT05FX1NRTF9KU09OX0lURU0pLAorCQkJCSBlcnJt c2coIkpTT04gcGF0aCBleHByZXNzaW9uIGluIEpTT05fUVVFUlkgc2hvdWxkIHJldHVybiBzaW5n bGV0b24gaXRlbSB3aXRob3V0IHdyYXBwZXIiKSwKKwkJCQkgZXJyaGludCgiVXNlIFdJVEggV1JB UFBFUiBjbGF1c2UgdG8gd3JhcCBTUUwvSlNPTiBpdGVtIHNlcXVlbmNlIGludG8gYXJyYXkuIikp KTsKKwl9CisKKwlpZiAoc2luZ2xldG9uKQorCQlyZXR1cm4gSnNvbmJQR2V0RGF0dW0oSnNvbmJW YWx1ZVRvSnNvbmIoc2luZ2xldG9uKSk7CisKKwkqZW1wdHkgPSB0cnVlOworCXJldHVybiBQb2lu dGVyR2V0RGF0dW0oTlVMTCk7Cit9CisKKy8qCisgKiBFeGVjdXRvci1jYWxsYWJsZSBKU09OX1ZB TFVFIGltcGxlbWVudGF0aW9uCisgKgorICogUmV0dXJucyBOVUxMIGluc3RlYWQgb2YgdGhyb3dp bmcgZXJyb3JzIGlmICdlcnJvcicgaXMgbm90IE5VTEwsIHNldHRpbmcKKyAqICplcnJvciB0byB0 cnVlLiAgKmVtcHR5IGlzIHNldCB0byB0cnVlIGlmIG5vIG1hdGNoIGlzIGZvdW5kLgorICovCitK c29uYlZhbHVlICoKK0pzb25QYXRoVmFsdWUoRGF0dW0gamIsIEpzb25QYXRoICpqcCwgYm9vbCAq ZW1wdHksIGJvb2wgKmVycm9yLCBMaXN0ICp2YXJzKQoreworCUpzb25iVmFsdWUgKnJlczsKKwlK c29uVmFsdWVMaXN0IGZvdW5kID0gezB9OworCUpzb25QYXRoRXhlY1Jlc3VsdCBqcGVyIFBHX1VT RURfRk9SX0FTU0VSVFNfT05MWTsKKwlpbnQJCQljb3VudDsKKworCWpwZXIgPSBleGVjdXRlSnNv blBhdGgoanAsIHZhcnMsIEdldEpzb25QYXRoVmFyLCBDb3VudEpzb25QYXRoVmFycywKKwkJCQkJ CSAgIERhdHVtR2V0SnNvbmJQKGpiKSwKKwkJCQkJCSAgICFlcnJvciwgJmZvdW5kLCB0cnVlKTsK KworCUFzc2VydChlcnJvciB8fCAhanBlcklzRXJyb3IoanBlcikpOworCisJaWYgKGVycm9yICYm IGpwZXJJc0Vycm9yKGpwZXIpKQorCXsKKwkJKmVycm9yID0gdHJ1ZTsKKwkJKmVtcHR5ID0gZmFs c2U7CisJCXJldHVybiBOVUxMOworCX0KKworCWNvdW50ID0gSnNvblZhbHVlTGlzdExlbmd0aCgm Zm91bmQpOworCisJKmVtcHR5ID0gKGNvdW50ID09IDApOworCisJaWYgKCplbXB0eSkKKwkJcmV0 dXJuIE5VTEw7CisKKwkvKiBKU09OX1ZBTFVFIGV4cGVjdHMgdG8gZ2V0IG9ubHkgc2luZ2xldG9u cy4gKi8KKwlpZiAoY291bnQgPiAxKQorCXsKKwkJaWYgKGVycm9yKQorCQl7CisJCQkqZXJyb3Ig PSB0cnVlOworCQkJcmV0dXJuIE5VTEw7CisJCX0KKworCQllcmVwb3J0KEVSUk9SLAorCQkJCShl cnJjb2RlKEVSUkNPREVfTU9SRV9USEFOX09ORV9TUUxfSlNPTl9JVEVNKSwKKwkJCQkgZXJybXNn KCJKU09OIHBhdGggZXhwcmVzc2lvbiBpbiBKU09OX1ZBTFVFIHNob3VsZCByZXR1cm4gc2luZ2xl dG9uIHNjYWxhciBpdGVtIikpKTsKKwl9CisKKwlyZXMgPSBKc29uVmFsdWVMaXN0SGVhZCgmZm91 bmQpOworCWlmIChyZXMtPnR5cGUgPT0gamJ2QmluYXJ5ICYmIEpzb25Db250YWluZXJJc1NjYWxh cihyZXMtPnZhbC5iaW5hcnkuZGF0YSkpCisJCUpzb25iRXh0cmFjdFNjYWxhcihyZXMtPnZhbC5i aW5hcnkuZGF0YSwgcmVzKTsKKworCS8qIEpTT05fVkFMVUUgZXhwZWN0cyB0byBnZXQgb25seSBz Y2FsYXJzLiAqLworCWlmICghSXNBSnNvbmJTY2FsYXIocmVzKSkKKwl7CisJCWlmIChlcnJvcikK KwkJeworCQkJKmVycm9yID0gdHJ1ZTsKKwkJCXJldHVybiBOVUxMOworCQl9CisKKwkJZXJlcG9y dChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1NRTF9KU09OX1NDQUxBUl9SRVFVSVJFRCks CisJCQkJIGVycm1zZygiSlNPTiBwYXRoIGV4cHJlc3Npb24gaW4gSlNPTl9WQUxVRSBzaG91bGQg cmV0dXJuIHNpbmdsZXRvbiBzY2FsYXIgaXRlbSIpKSk7CisJfQorCisJaWYgKHJlcy0+dHlwZSA9 PSBqYnZOdWxsKQorCQlyZXR1cm4gTlVMTDsKKworCXJldHVybiByZXM7Cit9CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMgYi9zcmMvYmFja2VuZC91dGlscy9h ZHQvcnVsZXV0aWxzLmMKaW5kZXggNzU1MjUzMzgzMi4uYWNiNGY0M2NmMyAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9ydWxldXRpbHMuYwpAQCAtNDc0LDYgKzQ3NCw4IEBAIHN0YXRpYyB2b2lkIGdldF9jb25z dF9leHByKENvbnN0ICpjb25zdHZhbCwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0LAogCQkJCQkJ ICAgaW50IHNob3d0eXBlKTsKIHN0YXRpYyB2b2lkIGdldF9jb25zdF9jb2xsYXRpb24oQ29uc3Qg KmNvbnN0dmFsLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQpOwogc3RhdGljIHZvaWQgZ2V0X2pz b25fZm9ybWF0KEpzb25Gb3JtYXQgKmZvcm1hdCwgU3RyaW5nSW5mbyBidWYpOworc3RhdGljIHZv aWQgZ2V0X2pzb25fcmV0dXJuaW5nKEpzb25SZXR1cm5pbmcgKnJldHVybmluZywgU3RyaW5nSW5m byBidWYsCisJCQkJCQkJICAgYm9vbCBqc29uX2Zvcm1hdF9ieV9kZWZhdWx0KTsKIHN0YXRpYyB2 b2lkIGdldF9qc29uX2NvbnN0cnVjdG9yKEpzb25Db25zdHJ1Y3RvckV4cHIgKmN0b3IsCiAJCQkJ CQkJCSBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQsIGJvb2wgc2hvd2ltcGxpY2l0KTsKIHN0YXRp YyB2b2lkIGdldF9qc29uX2NvbnN0cnVjdG9yX29wdGlvbnMoSnNvbkNvbnN0cnVjdG9yRXhwciAq Y3RvciwKQEAgLTUxNiw2ICs1MTgsOCBAQCBzdGF0aWMgY2hhciAqZ2VuZXJhdGVfcXVhbGlmaWVk X3R5cGVfbmFtZShPaWQgdHlwaWQpOwogc3RhdGljIHRleHQgKnN0cmluZ190b190ZXh0KGNoYXIg KnN0cik7CiBzdGF0aWMgY2hhciAqZmxhdHRlbl9yZWxvcHRpb25zKE9pZCByZWxpZCk7CiBzdGF0 aWMgdm9pZCBnZXRfcmVsb3B0aW9ucyhTdHJpbmdJbmZvIGJ1ZiwgRGF0dW0gcmVsb3B0aW9ucyk7 CitzdGF0aWMgdm9pZCBnZXRfanNvbl9wYXRoX3NwZWMoTm9kZSAqcGF0aF9zcGVjLCBkZXBhcnNl X2NvbnRleHQgKmNvbnRleHQsCisJCQkJCQkJICAgYm9vbCBzaG93aW1wbGljaXQpOwogCiAjZGVm aW5lIG9ubHlfbWFya2VyKHJ0ZSkgICgocnRlKS0+aW5oID8gIiIgOiAiT05MWSAiKQogCkBAIC04 Mjk5LDYgKzgzMDMsNyBAQCBpc1NpbXBsZU5vZGUoTm9kZSAqbm9kZSwgTm9kZSAqcGFyZW50Tm9k ZSwgaW50IHByZXR0eUZsYWdzKQogCQljYXNlIFRfV2luZG93RnVuYzoKIAkJY2FzZSBUX0Z1bmNF eHByOgogCQljYXNlIFRfSnNvbkNvbnN0cnVjdG9yRXhwcjoKKwkJY2FzZSBUX0pzb25FeHByOgog CQkJLyogZnVuY3Rpb24tbGlrZTogbmFtZSguLikgb3IgbmFtZVsuLl0gKi8KIAkJCXJldHVybiB0 cnVlOwogCkBAIC04NDcwLDYgKzg0NzUsNyBAQCBpc1NpbXBsZU5vZGUoTm9kZSAqbm9kZSwgTm9k ZSAqcGFyZW50Tm9kZSwgaW50IHByZXR0eUZsYWdzKQogCQkJCWNhc2UgVF9Hcm91cGluZ0Z1bmM6 CS8qIG93biBwYXJlbnRoZXNlcyAqLwogCQkJCWNhc2UgVF9XaW5kb3dGdW5jOgkvKiBvd24gcGFy ZW50aGVzZXMgKi8KIAkJCQljYXNlIFRfQ2FzZUV4cHI6CS8qIG90aGVyIHNlcGFyYXRvcnMgKi8K KwkJCQljYXNlIFRfSnNvbkV4cHI6CS8qIG93biBwYXJlbnRoZXNlcyAqLwogCQkJCQlyZXR1cm4g dHJ1ZTsKIAkJCQlkZWZhdWx0OgogCQkJCQlyZXR1cm4gZmFsc2U7CkBAIC04NTg1LDYgKzg1OTEs NjQgQEAgZ2V0X3J1bGVfZXhwcl9wYXJlbihOb2RlICpub2RlLCBkZXBhcnNlX2NvbnRleHQgKmNv bnRleHQsCiAJCWFwcGVuZFN0cmluZ0luZm9DaGFyKGNvbnRleHQtPmJ1ZiwgJyknKTsKIH0KIAor c3RhdGljIHZvaWQKK2dldF9qc29uX2JlaGF2aW9yKEpzb25CZWhhdmlvciAqYmVoYXZpb3IsIGRl cGFyc2VfY29udGV4dCAqY29udGV4dCwKKwkJCQkgIGNvbnN0IGNoYXIgKm9uKQoreworCS8qCisJ ICogVGhlIG9yZGVyIG9mIGFycmF5IGVsZW1lbnRzIG11c3QgY29ycmVzcG9uZCB0byB0aGUgb3Jk ZXIgb2YKKwkgKiBKc29uQmVoYXZpb3JUeXBlIG1lbWJlcnMuCisJICovCisJY29uc3QgY2hhciAq YmVoYXZpb3JfbmFtZXNbXSA9CisJeworCQkiIE5VTEwiLAorCQkiIEVSUk9SIiwKKwkJIiBFTVBU WSIsCisJCSIgVFJVRSIsCisJCSIgRkFMU0UiLAorCQkiIFVOS05PV04iLAorCQkiIEVNUFRZIEFS UkFZIiwKKwkJIiBFTVBUWSBPQkpFQ1QiLAorCQkiIERFRkFVTFQgIgorCX07CisKKwlpZiAoKGlu dCkgYmVoYXZpb3ItPmJ0eXBlIDwgMCB8fCBiZWhhdmlvci0+YnR5cGUgPj0gbGVuZ3Rob2YoYmVo YXZpb3JfbmFtZXMpKQorCQllbG9nKEVSUk9SLCAiaW52YWxpZCBqc29uIGJlaGF2aW9yIHR5cGU6 ICVkIiwgYmVoYXZpb3ItPmJ0eXBlKTsKKworCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoY29udGV4 dC0+YnVmLCBiZWhhdmlvcl9uYW1lc1tiZWhhdmlvci0+YnR5cGVdKTsKKworCWlmIChiZWhhdmlv ci0+YnR5cGUgPT0gSlNPTl9CRUhBVklPUl9ERUZBVUxUKQorCQlnZXRfcnVsZV9leHByKGJlaGF2 aW9yLT5leHByLCBjb250ZXh0LCBmYWxzZSk7CisKKwlhcHBlbmRTdHJpbmdJbmZvKGNvbnRleHQt PmJ1ZiwgIiBPTiAlcyIsIG9uKTsKK30KKworLyoKKyAqIGdldF9qc29uX2V4cHJfb3B0aW9ucwor ICoKKyAqIFBhcnNlIGJhY2sgY29tbW9uIG9wdGlvbnMgZm9yIEpTT05fUVVFUlksIEpTT05fVkFM VUUsIEpTT05fRVhJU1RTLgorICovCitzdGF0aWMgdm9pZAorZ2V0X2pzb25fZXhwcl9vcHRpb25z KEpzb25FeHByICpqc2V4cHIsIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCwKKwkJCQkJICBKc29u QmVoYXZpb3JUeXBlIGRlZmF1bHRfYmVoYXZpb3IpCit7CisJaWYgKGpzZXhwci0+b3AgPT0gSlNP Tl9RVUVSWV9PUCkKKwl7CisJCWlmIChqc2V4cHItPndyYXBwZXIgPT0gSlNXX0NPTkRJVElPTkFM KQorCQkJYXBwZW5kU3RyaW5nSW5mbyhjb250ZXh0LT5idWYsICIgV0lUSCBDT05ESVRJT05BTCBX UkFQUEVSIik7CisJCWVsc2UgaWYgKGpzZXhwci0+d3JhcHBlciA9PSBKU1dfVU5DT05ESVRJT05B TCkKKwkJCWFwcGVuZFN0cmluZ0luZm8oY29udGV4dC0+YnVmLCAiIFdJVEggVU5DT05ESVRJT05B TCBXUkFQUEVSIik7CisKKwkJaWYgKGpzZXhwci0+b21pdF9xdW90ZXMpCisJCQlhcHBlbmRTdHJp bmdJbmZvKGNvbnRleHQtPmJ1ZiwgIiBPTUlUIFFVT1RFUyIpOworCX0KKworCWlmIChqc2V4cHIt Pm9uX2VtcHR5ICYmIGpzZXhwci0+b25fZW1wdHktPmJ0eXBlICE9IGRlZmF1bHRfYmVoYXZpb3Ip CisJCWdldF9qc29uX2JlaGF2aW9yKGpzZXhwci0+b25fZW1wdHksIGNvbnRleHQsICJFTVBUWSIp OworCisJaWYgKGpzZXhwci0+b25fZXJyb3IgJiYganNleHByLT5vbl9lcnJvci0+YnR5cGUgIT0g ZGVmYXVsdF9iZWhhdmlvcikKKwkJZ2V0X2pzb25fYmVoYXZpb3IoanNleHByLT5vbl9lcnJvciwg Y29udGV4dCwgIkVSUk9SIik7Cit9CiAKIC8qIC0tLS0tLS0tLS0KICAqIGdldF9ydWxlX2V4cHIJ CQktIFBhcnNlIGJhY2sgYW4gZXhwcmVzc2lvbgpAQCAtOTc0NCw2ICs5ODA4LDcgQEAgZ2V0X3J1 bGVfZXhwcihOb2RlICpub2RlLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQsCiAJCQl9CiAJCQli cmVhazsKIAorCiAJCWNhc2UgVF9Kc29uVmFsdWVFeHByOgogCQkJewogCQkJCUpzb25WYWx1ZUV4 cHIgKmp2ZSA9IChKc29uVmFsdWVFeHByICopIG5vZGU7CkBAIC05NzkzLDYgKzk4NTgsNjQgQEAg Z2V0X3J1bGVfZXhwcihOb2RlICpub2RlLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQsCiAJCQl9 CiAJCQlicmVhazsKIAorCQljYXNlIFRfSnNvbkV4cHI6CisJCQl7CisJCQkJSnNvbkV4cHIgICAq amV4cHIgPSAoSnNvbkV4cHIgKikgbm9kZTsKKworCQkJCXN3aXRjaCAoamV4cHItPm9wKQorCQkJ CXsKKwkJCQkJY2FzZSBKU09OX0VYSVNUU19PUDoKKwkJCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJp bmcoYnVmLCAiSlNPTl9FWElTVFMoIik7CisJCQkJCQlicmVhazsKKwkJCQkJY2FzZSBKU09OX1FV RVJZX09QOgorCQkJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICJKU09OX1FVRVJZKCIp OworCQkJCQkJYnJlYWs7CisJCQkJCWNhc2UgSlNPTl9WQUxVRV9PUDoKKwkJCQkJCWFwcGVuZFN0 cmluZ0luZm9TdHJpbmcoYnVmLCAiSlNPTl9WQUxVRSgiKTsKKwkJCQkJCWJyZWFrOworCQkJCX0K KworCQkJCWdldF9ydWxlX2V4cHIoamV4cHItPmZvcm1hdHRlZF9leHByLCBjb250ZXh0LCBzaG93 aW1wbGljaXQpOworCisJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICIsICIpOworCisJ CQkJZ2V0X2pzb25fcGF0aF9zcGVjKGpleHByLT5wYXRoX3NwZWMsIGNvbnRleHQsIHNob3dpbXBs aWNpdCk7CisKKwkJCQlpZiAoamV4cHItPnBhc3NpbmdfdmFsdWVzKQorCQkJCXsKKwkJCQkJTGlz dENlbGwgICAqbGMxLAorCQkJCQkJCSAgICpsYzI7CisJCQkJCWJvb2wJCW5lZWRjb21tYSA9IGZh bHNlOworCisJCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiIFBBU1NJTkcgIik7CisK KwkJCQkJZm9yYm90aChsYzEsIGpleHByLT5wYXNzaW5nX25hbWVzLAorCQkJCQkJCWxjMiwgamV4 cHItPnBhc3NpbmdfdmFsdWVzKQorCQkJCQl7CisJCQkJCQlpZiAobmVlZGNvbW1hKQorCQkJCQkJ CWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiLCAiKTsKKwkJCQkJCW5lZWRjb21tYSA9IHRy dWU7CisKKwkJCQkJCWdldF9ydWxlX2V4cHIoKE5vZGUgKikgbGZpcnN0KGxjMiksIGNvbnRleHQs IHNob3dpbXBsaWNpdCk7CisJCQkJCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIiBBUyAlcyIsCisJ CQkJCQkJCQkJICgoU3RyaW5nICopIGxmaXJzdF9ub2RlKFN0cmluZywgbGMxKSktPnN2YWwpOwor CQkJCQl9CisJCQkJfQorCisJCQkJaWYgKGpleHByLT5vcCAhPSBKU09OX0VYSVNUU19PUCB8fAor CQkJCQlqZXhwci0+cmV0dXJuaW5nLT50eXBpZCAhPSBCT09MT0lEKQorCQkJCQlnZXRfanNvbl9y ZXR1cm5pbmcoamV4cHItPnJldHVybmluZywgY29udGV4dC0+YnVmLAorCQkJCQkJCQkJICAgamV4 cHItPm9wID09IEpTT05fUVVFUllfT1ApOworCisJCQkJZ2V0X2pzb25fZXhwcl9vcHRpb25zKGpl eHByLCBjb250ZXh0LAorCQkJCQkJCQkJICBqZXhwci0+b3AgIT0gSlNPTl9FWElTVFNfT1AgPwor CQkJCQkJCQkJICBKU09OX0JFSEFWSU9SX05VTEwgOgorCQkJCQkJCQkJICBKU09OX0JFSEFWSU9S X0ZBTFNFKTsKKworCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiKSIpOworCQkJfQor CQkJYnJlYWs7CisKIAkJY2FzZSBUX0xpc3Q6CiAJCQl7CiAJCQkJY2hhcgkgICAqc2VwOwpAQCAt OTkxNiw2ICsxMDAzOSw3IEBAIGxvb2tzX2xpa2VfZnVuY3Rpb24oTm9kZSAqbm9kZSkKIAkJY2Fz ZSBUX01pbk1heEV4cHI6CiAJCWNhc2UgVF9TUUxWYWx1ZUZ1bmN0aW9uOgogCQljYXNlIFRfWG1s RXhwcjoKKwkJY2FzZSBUX0pzb25FeHByOgogCQkJLyogdGhlc2UgYXJlIGFsbCBhY2NlcHRlZCBi eSBmdW5jX2V4cHJfY29tbW9uX3N1YmV4cHIgKi8KIAkJCXJldHVybiB0cnVlOwogCQlkZWZhdWx0 OgpAQCAtMTA3ODUsNiArMTA5MDksMTggQEAgZ2V0X2NvbnN0X2NvbGxhdGlvbihDb25zdCAqY29u c3R2YWwsIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCkKIAl9CiB9CiAKKy8qCisgKiBnZXRfanNv bl9wYXRoX3NwZWMJCS0gUGFyc2UgYmFjayBhIEpTT04gcGF0aCBzcGVjaWZpY2F0aW9uCisgKi8K K3N0YXRpYyB2b2lkCitnZXRfanNvbl9wYXRoX3NwZWMoTm9kZSAqcGF0aF9zcGVjLCBkZXBhcnNl X2NvbnRleHQgKmNvbnRleHQsIGJvb2wgc2hvd2ltcGxpY2l0KQoreworCWlmIChJc0EocGF0aF9z cGVjLCBDb25zdCkpCisJCWdldF9jb25zdF9leHByKChDb25zdCAqKSBwYXRoX3NwZWMsIGNvbnRl eHQsIC0xKTsKKwllbHNlCisJCWdldF9ydWxlX2V4cHIocGF0aF9zcGVjLCBjb250ZXh0LCBzaG93 aW1wbGljaXQpOworfQorCiAvKgogICogZ2V0X2pzb25fZm9ybWF0CQkJLSBQYXJzZSBiYWNrIGEg SnNvbkZvcm1hdCBub2RlCiAgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4 ZWNFeHByLmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjRXhwci5oCmluZGV4IGEyOGRkY2Rk NzcuLjJiYWM4NzcwMGIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNFeHBy LmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY0V4cHIuaApAQCAtMjQwLDYgKzI0MCw5 IEBAIHR5cGVkZWYgZW51bSBFeHByRXZhbE9wCiAJRUVPUF9YTUxFWFBSLAogCUVFT1BfSlNPTl9D T05TVFJVQ1RPUiwKIAlFRU9QX0lTX0pTT04sCisJRUVPUF9KU09ORVhQUl9QQVRILAorCUVFT1Bf SlNPTkVYUFJfQ09FUkNJT04sCisJRUVPUF9KU09ORVhQUl9DT0VSQ0lPTl9GSU5JU0gsCiAJRUVP UF9BR0dSRUYsCiAJRUVPUF9HUk9VUElOR19GVU5DLAogCUVFT1BfV0lORE9XX0ZVTkMsCkBAIC02 OTIsNiArNjk1LDIxIEBAIHR5cGVkZWYgc3RydWN0IEV4cHJFdmFsU3RlcAogCQkJSnNvbklzUHJl ZGljYXRlICpwcmVkOwkvKiBvcmlnaW5hbCBleHByZXNzaW9uIG5vZGUgKi8KIAkJfQkJCWlzX2pz b247CiAKKwkJLyogZm9yIEVFT1BfSlNPTkVYUFJfUEFUSCAqLworCQlzdHJ1Y3QKKwkJeworCQkJ c3RydWN0IEpzb25FeHByU3RhdGUgKmpzZXN0YXRlOworCQl9CQkJanNvbmV4cHI7CisKKwkJLyog Zm9yIEVFT1BfSlNPTkVYUFJfQ09FUkNJT04gKi8KKwkJc3RydWN0CisJCXsKKwkJCUpzb25Db2Vy Y2lvbiAqY29lcmNpb247CisJCQlGbWdySW5mbyAgICppbnB1dF9maW5mbzsKKwkJCU9pZAkJCXR5 cGlvcGFyYW07CisJCQl2b2lkCSAgICpqc29uX3BvcHVsYXRlX3R5cGVfY2FjaGU7CisJCQlFcnJv clNhdmVDb250ZXh0ICplc2NvbnRleHQ7CisJCX0JCQlqc29uZXhwcl9jb2VyY2lvbjsKIAl9CQkJ ZDsKIH0gRXhwckV2YWxTdGVwOwogCkBAIC03NTUsNyArNzczLDYgQEAgdHlwZWRlZiBzdHJ1Y3Qg SnNvbkNvbnN0cnVjdG9yRXhwclN0YXRlCiAJaW50CQkJbmFyZ3M7CiB9IEpzb25Db25zdHJ1Y3Rv ckV4cHJTdGF0ZTsKIAotCiAvKiBmdW5jdGlvbnMgaW4gZXhlY0V4cHIuYyAqLwogZXh0ZXJuIHZv aWQgRXhwckV2YWxQdXNoU3RlcChFeHByU3RhdGUgKmVzLCBjb25zdCBFeHByRXZhbFN0ZXAgKnMp OwogCkBAIC04MDksNiArODI2LDExIEBAIGV4dGVybiB2b2lkIEV4ZWNFdmFsWG1sRXhwcihFeHBy U3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9wKTsKIGV4dGVybiB2b2lkIEV4ZWNFdmFsSnNv bkNvbnN0cnVjdG9yKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJFdmFsU3RlcCAqb3AsCiAJCQkJCQkJ CQlFeHByQ29udGV4dCAqZWNvbnRleHQpOwogZXh0ZXJuIHZvaWQgRXhlY0V2YWxKc29uSXNQcmVk aWNhdGUoRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCk7CitleHRlcm4gdm9pZCBF eGVjRXZhbEpzb25Db2VyY2lvbihFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9wLAor CQkJCQkJCQkgRXhwckNvbnRleHQgKmVjb250ZXh0KTsKK2V4dGVybiB2b2lkIEV4ZWNFdmFsSnNv bkNvZXJjaW9uRmluaXNoKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJFdmFsU3RlcCAqb3ApOworZXh0 ZXJuIGludAlFeGVjRXZhbEpzb25FeHByUGF0aChFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0 ZXAgKm9wLAorCQkJCQkJCQkgRXhwckNvbnRleHQgKmVjb250ZXh0KTsKIGV4dGVybiB2b2lkIEV4 ZWNFdmFsR3JvdXBpbmdGdW5jKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJFdmFsU3RlcCAqb3ApOwog ZXh0ZXJuIHZvaWQgRXhlY0V2YWxTdWJQbGFuKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJFdmFsU3Rl cCAqb3AsCiAJCQkJCQkJRXhwckNvbnRleHQgKmVjb250ZXh0KTsKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgK aW5kZXggNDQ0YTVmMGZkNS4uMTk2MWQ5ZTBhYSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9k ZXMvZXhlY25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKQEAgLTEw MDgsNiArMTAwOCw5MyBAQCB0eXBlZGVmIHN0cnVjdCBEb21haW5Db25zdHJhaW50U3RhdGUKIAlF eHByU3RhdGUgICpjaGVja19leHByc3RhdGU7CS8qIGNoZWNrX2V4cHIncyBldmFsIHN0YXRlLCBv ciBOVUxMICovCiB9IERvbWFpbkNvbnN0cmFpbnRTdGF0ZTsKIAorLyoKKyAqIEluZm9ybWF0aW9u IGFib3V0IHRoZSBzdGF0ZSBvZiBKc29uUGF0aCogZXZhbHVhdGlvbi4KKyAqLwordHlwZWRlZiBz dHJ1Y3QgSnNvbkV4cHJQb3N0RXZhbFN0YXRlCit7CisJLyogRGlkIEpzb25QYXRoKiBldmFsdWF0 aW9uIGNhdXNlIGFuIGVycm9yPyAqLworCU51bGxhYmxlRGF0dW0gZXJyb3I7CisKKwkvKiBJcyB0 aGUgcmVzdWx0IG9mIEpzb25QYXRoKiBldmFsdWF0aW9uIGVtcHR5PyAqLworCU51bGxhYmxlRGF0 dW0gZW1wdHk7CisKKwkvKgorCSAqIEV4ZWNFdmFsSnNvbkV4cHJQYXRoKCkgd2lsbCBzZXQgdGhp cyB0byB0aGUgYWRkcmVzcyBvZiB0aGUgc3RlcCB0byB1c2UKKwkgKiB0byBjb2VyY2UgdGhlIHJl c3VsdCBvZiBKc29uUGF0aCogZXZhbHVhdGlvbiB0byB0aGUgUkVUVVJOSU5HIHR5cGUuCisJICog QWxzbyBzZWUgdGhlIGRlc2NyaXB0aW9uIG9mIHBvc3NpYmxlIHN0ZXAgYWRkcmVzc2VzIHRoYXQg dGhpcyBjb3VsZCBiZQorCSAqIHNldCB0byBpbiB0aGUgZGVmaW5pdGlvbiBvZiBKc29uRXhwclN0 YXRlLgorCSAqLworCWludAkJCWp1bXBfZXZhbF9jb2VyY2lvbjsKK30gSnNvbkV4cHJQb3N0RXZh bFN0YXRlOworCisvKiBTdGF0ZSBmb3IgZXZhbHVhdGluZyBhIEpzb25FeHByLCB0b28gYmlnIHRv IGlubGluZSAqLwordHlwZWRlZiBzdHJ1Y3QgSnNvbkV4cHJTdGF0ZQoreworCS8qIG9yaWdpbmFs IGV4cHJlc3Npb24gbm9kZSAqLworCUpzb25FeHByICAgKmpzZXhwcjsKKworCS8qIHZhbHVlL2lz bnVsbCBmb3IgZm9ybWF0dGVkX2V4cHIgKi8KKwlOdWxsYWJsZURhdHVtIGZvcm1hdHRlZF9leHBy OworCisJLyogdmFsdWUvaXNudWxsIGZvciBwYXRoc3BlYyAqLworCU51bGxhYmxlRGF0dW0gcGF0 aHNwZWM7CisKKwkvKiBKc29uUGF0aFZhcmlhYmxlIGVudHJpZXMgZm9yIHBhc3NpbmdfdmFsdWVz ICovCisJTGlzdAkgICAqYXJnczsKKworCS8qCisJICogUGVyLXJvdyByZXN1bHQgc3RhdHVzIGlu Zm8gcG9wdWxhdGVkIGJ5IEV4ZWNFdmFsSnNvbkV4cHJQYXRoKCkgYW5kCisJICogRXhlY0V2YWxK c29uQ29lcmNpb25GaW5pc2goKS4KKwkgKi8KKwlKc29uRXhwclBvc3RFdmFsU3RhdGUgcG9zdF9l dmFsOworCisJLyoKKwkgKiBBZGRyZXNzZXMgb2YgdGhlIHN0ZXBzIHRoYXQgaW1wbGVtZW50cyB0 aGUgbm9uLUVSUk9SIHZhcmlhbnQgb2YgT04KKwkgKiBFTVBUWSBhbmQgT04gRVJST1IgYmVoYXZp b3JzLCByZXNwZWN0aXZlbHkuCisJICovCisJaW50CQkJanVtcF9lbXB0eTsKKwlpbnQJCQlqdW1w X2Vycm9yOworCisJLyoKKwkgKiBBZGRyZXNzZXMgb2Ygc3RlcHMgdG8gcGVyZm9ybSB0aGUgY29l cmNpb24gb2YgdGhlIEpzb25QYXRoKiByZXN1bHQKKwkgKiB2YWx1ZSB0byB0aGUgUkVUVVJOSU5H IHR5cGUuICBFYWNoIGFkZHJlc3MgcG9pbnRzIHRvIGVpdGhlciAxKSBhCisJICogc3BlY2lhbCBF RU9QX0pTT05FWFBSX0NPRVJDSU9OIHN0ZXAgdGhhdCBoYW5kbGVzIGNvZXJjaW9uIHVzaW5nIHRo ZQorCSAqIFJFVFVSTklORyB0eXBlJ3MgaW5wdXQgZnVuY3Rpb24gb3IgYnkgdXNpbmcganNvbl92 aWFfcG9wdWxhdGUoKSwgb3IgMikKKwkgKiBhbiBleHByZXNzaW9uIHN1Y2ggYXMgQ29lcmNlVmlh SU8uICBJdCBtYXkgYmUgLTEgaWYgbm8gY29lcmNpb24gaXMKKwkgKiBuZWNlc3NhcnkuCisJICoK KwkgKiBqdW1wX2V2YWxfcmVzdWx0X2NvZXJjaW9uIHBvaW50cyB0byB0aGUgc3RlcCB0byBldmFs dWF0ZSB0aGUgY29lcmNpb24KKwkgKiBnaXZlbiBpbiBKc29uRXhwci5yZXN1bHRfY29lcmNpb24u CisJICovCisJaW50CQkJanVtcF9ldmFsX3Jlc3VsdF9jb2VyY2lvbjsKKworCS8qIEp1bXAgdG8g ZW5kIHRvIHNraXAgYWxsIHRoZSBzdGVwcyBhZnRlciBFRU9QX0pTT05FWFBSX1BBVEguICovCisJ aW50CQkJanVtcF9lbmQ7CisKKwkvKgorCSAqIGV2YWxfaXRlbV9jb2VyY2lvbl9qdW1wcyBpcyBh biBhcnJheSBvZiBudW1faXRlbV9jb2VyY2lvbnMgZWxlbWVudHMKKwkgKiBlYWNoIGNvbnRhaW5p bmcgYSBzdGVwIGFkZHJlc3MgdG8gZXZhbHVhdGUgdGhlIGNvZXJjaW9uIGZyb20gYSB2YWx1ZSBv ZgorCSAqIHRoZSBnaXZlbiBKc29uSXRlbVR5cGUgdG8gdGhlIFJFVFVSTklORyB0eXBlLCBvciAt MSBpZiBubyBjb2VyY2lvbiBpcworCSAqIG5lY2Vzc2FyeS4gIGl0ZW1fY29lcmNpb25fdmlhX2V4 cHIgaXMgYW4gYXJyYXkgb2YgYm9vbGVhbiBmbGFncyBvZiB0aGUKKwkgKiBzYW1lIGxlbmd0aCB0 aGF0IGluZGljYXRlcyB3aGV0aGVyIGVhY2ggdmFsaWQgc3RlcCBhZGRyZXNzIGluIHRoZQorCSAq IGV2YWxfaXRlbV9jb2VyY2lvbl9qdW1wcyBhcnJheSBwb2ludHMgdG8gYW4gZXhwcmVzc2lvbiBv ciBhCisJICogRUVPUF9KU09ORVhQUl9DT0VSQ0lPTiBzdGVwLiAgRXhlY0V2YWxKc29uRXhwclBh dGgoKSB3aWxsIGNhdXNlIGFuCisJICogZXJyb3IgaWYgaXQncyB0aGUgbGF0dGVyLCBiZWNhdXNl IHRoYXQgbW9kZSBvZiBjb2VyY2lvbiBpcyBub3QKKwkgKiBzdXBwb3J0ZWQgZm9yIGFsbCBKc29u SXRlbVR5cGVzLgorCSAqLworCWludAkJCW51bV9pdGVtX2NvZXJjaW9uczsKKwlpbnQJCSAgICpl dmFsX2l0ZW1fY29lcmNpb25fanVtcHM7CisJYm9vbAkgICAqaXRlbV9jb2VyY2lvbl92aWFfZXhw cjsKKworCS8qCisJICogRm9yIHBhc3Npbmcgd2hlbiBpbml0aWFsaXppbmcgYSBFRU9QX0lPQ09F UkNFX1NBRkUgc3RlcCBmb3IgYW55CisJICogQ29lcmNlVmlhSU8gbm9kZXMgaW4gdGhlIGV4cHJl c3Npb24gdGhhdCBtdXN0IGJlIGV2YWx1YXRlZCBpbiBhbgorCSAqIGVycm9yLXNhZmUgbWFubmVy LgorCSAqLworCUVycm9yU2F2ZUNvbnRleHQgZXNjb250ZXh0OworfSBKc29uRXhwclN0YXRlOwor CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KICAqCQkJCSBFeGVjdXRvciBTdGF0ZSBUcmVlcwpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvbm9kZXMvbWFrZWZ1bmNzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9tYWtlZnVu Y3MuaAppbmRleCAyZGM3OTY0OGQyLi45MWQ5NWZjNTJiIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9ub2Rlcy9tYWtlZnVuY3MuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9tYWtlZnVuY3MuaApA QCAtMTEyLDYgKzExMiw4IEBAIGV4dGVybiBKc29uRm9ybWF0ICptYWtlSnNvbkZvcm1hdChKc29u Rm9ybWF0VHlwZSB0eXBlLCBKc29uRW5jb2RpbmcgZW5jb2RpbmcsCiAJCQkJCQkJCSAgaW50IGxv Y2F0aW9uKTsKIGV4dGVybiBKc29uVmFsdWVFeHByICptYWtlSnNvblZhbHVlRXhwcihFeHByICpy YXdfZXhwciwgRXhwciAqZm9ybWF0dGVkX2V4cHIsCiAJCQkJCQkJCQkJSnNvbkZvcm1hdCAqZm9y bWF0KTsKK2V4dGVybiBKc29uQmVoYXZpb3IgKm1ha2VKc29uQmVoYXZpb3IoSnNvbkJlaGF2aW9y VHlwZSB0eXBlLCBOb2RlICpleHByLAorCQkJCQkJCQkJICBKc29uQ29lcmNpb24gKmNvZXJjaW9u LCBpbnQgbG9jYXRpb24pOwogZXh0ZXJuIE5vZGUgKm1ha2VKc29uS2V5VmFsdWUoTm9kZSAqa2V5 LCBOb2RlICp2YWx1ZSk7CiBleHRlcm4gTm9kZSAqbWFrZUpzb25Jc1ByZWRpY2F0ZShOb2RlICpl eHByLCBKc29uRm9ybWF0ICpmb3JtYXQsCiAJCQkJCQkJCSBKc29uVmFsdWVUeXBlIGl0ZW1fdHlw ZSwgYm9vbCB1bmlxdWVfa2V5cywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNl bm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAppbmRleCBkNjBlMTQ4ZmYy Li43Y2VlM2JlYzQ5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgK KysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCkBAIC0xNzAwLDYgKzE3MDAsMTIg QEAgdHlwZWRlZiBzdHJ1Y3QgVHJpZ2dlclRyYW5zaXRpb24KIAogLyogTm9kZXMgZm9yIFNRTC9K U09OIHN1cHBvcnQgKi8KIAorLyoKKyAqIEpzb25QYXRoU3BlYyAtCisgKgkJcmVwcmVzZW50YXRp b24gb2YgSlNPTiBwYXRoIGNvbnN0YW50CisgKi8KK3R5cGVkZWYgY2hhciAqSnNvblBhdGhTcGVj OworCiAvKgogICogSnNvbk91dHB1dCAtCiAgKgkJcmVwcmVzZW50YXRpb24gb2YgSlNPTiBvdXRw dXQgY2xhdXNlIChSRVRVUk5JTkcgdHlwZSBbRk9STUFUIGZvcm1hdF0pCkBAIC0xNzExLDYgKzE3 MTcsNDcgQEAgdHlwZWRlZiBzdHJ1Y3QgSnNvbk91dHB1dAogCUpzb25SZXR1cm5pbmcgKnJldHVy bmluZzsJLyogUkVUVVJOSU5HIEZPUk1BVCBjbGF1c2UgYW5kIHR5cGUgT2lkcyAqLwogfSBKc29u T3V0cHV0OwogCisvKgorICogSnNvbkFyZ3VtZW50IC0KKyAqCQlyZXByZXNlbnRhdGlvbiBvZiBh cmd1bWVudCBmcm9tIEpTT04gUEFTU0lORyBjbGF1c2UKKyAqLwordHlwZWRlZiBzdHJ1Y3QgSnNv bkFyZ3VtZW50Cit7CisJTm9kZVRhZwkJdHlwZTsKKwlKc29uVmFsdWVFeHByICp2YWw7CQkJLyog YXJndW1lbnQgdmFsdWUgZXhwcmVzc2lvbiAqLworCWNoYXIJICAgKm5hbWU7CQkJLyogYXJndW1l bnQgbmFtZSAqLworfSBKc29uQXJndW1lbnQ7CisKKy8qCisgKiBKc29uUXVvdGVzIC0KKyAqCQly ZXByZXNlbnRhdGlvbiBvZiBbS0VFUHxPTUlUXSBRVU9URVMgY2xhdXNlIGZvciBKU09OX1FVRVJZ KCkKKyAqLwordHlwZWRlZiBlbnVtIEpzb25RdW90ZXMKK3sKKwlKU19RVU9URVNfVU5TUEVDLAkJ CS8qIHVuc3BlY2lmaWVkICovCisJSlNfUVVPVEVTX0tFRVAsCQkJCS8qIEtFRVAgUVVPVEVTICov CisJSlNfUVVPVEVTX09NSVQsCQkJCS8qIE9NSVQgUVVPVEVTICovCit9IEpzb25RdW90ZXM7CisK Ky8qCisgKiBKc29uRnVuY0V4cHIgLQorICoJCXVudHJhbnNmb3JtZWQgcmVwcmVzZW50YXRpb24g b2YgSlNPTiBmdW5jdGlvbiBleHByZXNzaW9ucworICovCit0eXBlZGVmIHN0cnVjdCBKc29uRnVu Y0V4cHIKK3sKKwlOb2RlVGFnCQl0eXBlOworCUpzb25FeHByT3AJb3A7CQkJCS8qIGV4cHJlc3Np b24gdHlwZSAqLworCUpzb25WYWx1ZUV4cHIgKmNvbnRleHRfaXRlbTsJLyogY29udGV4dCBpdGVt IGV4cHJlc3Npb24gKi8KKwlOb2RlCSAgICpwYXRoc3BlYzsJCS8qIEpTT04gcGF0aCBzcGVjaWZp Y2F0aW9uIGV4cHJlc3Npb24gKi8KKwlMaXN0CSAgICpwYXNzaW5nOwkJLyogbGlzdCBvZiBQQVNT SU5HIGNsYXVzZSBhcmd1bWVudHMsIGlmIGFueSAqLworCUpzb25PdXRwdXQgKm91dHB1dDsJCQkv KiBvdXRwdXQgY2xhdXNlLCBpZiBzcGVjaWZpZWQgKi8KKwlKc29uQmVoYXZpb3IgKm9uX2VtcHR5 OwkJLyogT04gRU1QVFkgYmVoYXZpb3IgKi8KKwlKc29uQmVoYXZpb3IgKm9uX2Vycm9yOwkJLyog T04gRVJST1IgYmVoYXZpb3IgKi8KKwlKc29uV3JhcHBlciB3cmFwcGVyOwkJLyogYXJyYXkgd3Jh cHBlciBiZWhhdmlvciAoSlNPTl9RVUVSWSBvbmx5KSAqLworCUpzb25RdW90ZXMJcXVvdGVzOwkJ CS8qIG9taXQgb3Iga2VlcCBxdW90ZXM/IChKU09OX1FVRVJZIG9ubHkpICovCisJaW50CQkJbG9j YXRpb247CQkvKiB0b2tlbiBsb2NhdGlvbiwgb3IgLTEgaWYgdW5rbm93biAqLworfSBKc29uRnVu Y0V4cHI7CisKIC8qCiAgKiBKc29uS2V5VmFsdWUgLQogICoJCXVudHJhbnNmb3JtZWQgcmVwcmVz ZW50YXRpb24gb2YgSlNPTiBvYmplY3Qga2V5LXZhbHVlIHBhaXIgZm9yCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rl cy5oCmluZGV4IDRhMTU0NjA2ZDIuLmZhZDJkZDkwOTIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L25vZGVzL3ByaW1ub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oCkBA IC0xNTUyLDYgKzE1NTIsMTcgQEAgdHlwZWRlZiBzdHJ1Y3QgWG1sRXhwcgogCWludAkJCWxvY2F0 aW9uOwogfSBYbWxFeHByOwogCisvKgorICogSnNvbkV4cHJPcCAtCisgKgkJZW51bWVyYXRpb24g b2YgSlNPTiBmdW5jdGlvbnMgdXNpbmcgSlNPTiBwYXRoCisgKi8KK3R5cGVkZWYgZW51bSBKc29u RXhwck9wCit7CisJSlNPTl9WQUxVRV9PUCwJCQkJLyogSlNPTl9WQUxVRSgpICovCisJSlNPTl9R VUVSWV9PUCwJCQkJLyogSlNPTl9RVUVSWSgpICovCisJSlNPTl9FWElTVFNfT1AsCQkJCS8qIEpT T05fRVhJU1RTKCkgKi8KK30gSnNvbkV4cHJPcDsKKwogLyoKICAqIEpzb25FbmNvZGluZyAtCiAg KgkJcmVwcmVzZW50YXRpb24gb2YgSlNPTiBFTkNPRElORyBjbGF1c2UKQEAgLTE2NzAsNiArMTY4 MSwxNzUgQEAgdHlwZWRlZiBzdHJ1Y3QgSnNvbklzUHJlZGljYXRlCiAJaW50CQkJbG9jYXRpb247 CQkvKiB0b2tlbiBsb2NhdGlvbiwgb3IgLTEgaWYgdW5rbm93biAqLwogfSBKc29uSXNQcmVkaWNh dGU7CiAKKy8qIE5vZGVzIHVzZWQgaW4gU1FML0pTT04gcXVlcnkgZnVuY3Rpb25zICovCisKKy8q CisgKiBKc29uV3JhcHBlciAtCisgKgkJcmVwcmVzZW50YXRpb24gb2YgV1JBUFBFUiBjbGF1c2Ug Zm9yIEpTT05fUVVFUlkoKQorICovCit0eXBlZGVmIGVudW0gSnNvbldyYXBwZXIKK3sKKwlKU1df VU5TUEVDLAorCUpTV19OT05FLAorCUpTV19DT05ESVRJT05BTCwKKwlKU1dfVU5DT05ESVRJT05B TCwKK30gSnNvbldyYXBwZXI7CisKKy8qCisgKiBKc29uQmVoYXZpb3JUeXBlIC0KKyAqCQllbnVt ZXJhdGlvbiBvZiBiZWhhdmlvciB0eXBlcyB1c2VkIGluIFNRTC9KU09OIE9OIEVSUk9SL0VNUFRZ IGNsYXVzZXMKKyAqCisgKiAJCUlmIGVudW0gbWVtYmVycyBhcmUgcmVvcmRlcmVkLCBnZXRfanNv bl9iZWhhdmlvcigpIGZyb20gcnVsZXV0aWxzLmMKKyAqIAkJbXVzdCBiZSB1cGRhdGVkIGFjY29y ZGluZ2x5LgorICovCit0eXBlZGVmIGVudW0gSnNvbkJlaGF2aW9yVHlwZQoreworCUpTT05fQkVI QVZJT1JfTlVMTCA9IDAsCisJSlNPTl9CRUhBVklPUl9FUlJPUiwKKwlKU09OX0JFSEFWSU9SX0VN UFRZLAorCUpTT05fQkVIQVZJT1JfVFJVRSwKKwlKU09OX0JFSEFWSU9SX0ZBTFNFLAorCUpTT05f QkVIQVZJT1JfVU5LTk9XTiwKKwlKU09OX0JFSEFWSU9SX0VNUFRZX0FSUkFZLAorCUpTT05fQkVI QVZJT1JfRU1QVFlfT0JKRUNULAorCUpTT05fQkVIQVZJT1JfREVGQVVMVCwKK30gSnNvbkJlaGF2 aW9yVHlwZTsKKworLyoKKyAqIEpzb25Db2VyY2lvbgorICoJCUluZm9ybWF0aW9uIGFib3V0IGNv ZXJjaW5nIGEgU1FML0pTT04gdmFsdWUgdG8gdGhlIHNwZWNpZmllZAorICoJCXR5cGUgYXQgcnVu dGltZQorICoKKyAqIEEgbm9kZSBvZiB0aGlzIHR5cGUgaXMgY3JlYXRlZCBpZiB0aGUgcGFyc2Vy IGNhbm5vdCBmaW5kIGEgY2FzdCBleHByZXNzaW9uCisgKiB1c2luZyBjb2VyY2VfdHlwZSgpIG9y IE9NSVQgUVVPVEVTIGlzIHNwZWNpZmllZCBmb3IgSlNPTl9RVUVSWS4gIElmIHRoZQorICogbGF0 dGVyLCAnZXhwcicgbWF5IGNvbnRhaW4gdGhlIGNhc3QgZXhwcmVzc2lvbjsgaWYgbm90LCB0aGUg cXVvdGUtc3RyaXBwZWQKKyAqIHNjYWxhciBzdHJpbmcgd2lsbCBiZSBjb2VyY2VkIGJ5IGNhbGxp bmcgdGhlIHRhcmdldCB0eXBlJ3MgaW5wdXQgZnVuY3Rpb24uCisgKiBTZWUgRXhlY0V2YWxKc29u Q29lcmNpb24uCisgKi8KK3R5cGVkZWYgc3RydWN0IEpzb25Db2VyY2lvbgoreworCU5vZGVUYWcJ CXR5cGU7CisKKwlPaWQJCQl0YXJnZXR0eXBlOworCWludDMyCQl0YXJnZXR0eXBtb2Q7CisJYm9v bAkJb21pdF9xdW90ZXM7CS8qIE9NSVQgUVVPVEVTIHNwZWNpZmllZCBmb3IgSlNPTl9RVUVSWT8g Ki8KKwlOb2RlCSAgICpjYXN0X2V4cHI7CQkvKiBjb2VyY2lvbiBjYXN0IGV4cHJlc3Npb24gb3Ig TlVMTCAqLworCU9pZAkJCWNvbGxhdGlvbjsKK30gSnNvbkNvZXJjaW9uOworCisvKgorICogSnNv bkl0ZW1UeXBlCisgKgkJUG9zc2libGUgdHlwZXMgZm9yIHNjYWxhciB2YWx1ZXMgcmV0dXJuZWQg YnkgSlNPTl9WQUxVRSgpCisgKgorICogVGhlIGNvbW1lbnQgbmV4dCB0byBlYWNoIGl0ZW0gdHlw ZSBtZW50aW9ucyB0aGUgY29ycmVzcG9uZGluZworICogSnNvbmJWYWx1ZS5qYnZUeXBlLgorICov Cit0eXBlZGVmIGVudW0gSnNvbkl0ZW1UeXBlCit7CisJSnNvbkl0ZW1UeXBlTnVsbCwJCQkvKiBq YnZOdWxsICovCisJSnNvbkl0ZW1UeXBlU3RyaW5nLAkJCS8qIGpidlN0cmluZyAqLworCUpzb25J dGVtVHlwZU51bWVyaWMsCQkvKiBqYnZOdW1lcmljICovCisJSnNvbkl0ZW1UeXBlQm9vbGVhbiwJ CS8qIGpidkJvb2wgKi8KKwlKc29uSXRlbVR5cGVEYXRlLAkJCS8qIGpidkRhdGV0aW1lOiBEQVRF T0lEICovCisJSnNvbkl0ZW1UeXBlVGltZSwJCQkvKiBqYnZEYXRldGltZTogVElNRU9JRCAqLwor CUpzb25JdGVtVHlwZVRpbWV0eiwJCQkvKiBqYnZEYXRldGltZTogVElNRVRaT0lEICovCisJSnNv bkl0ZW1UeXBlVGltZXN0YW1wLAkJLyogamJ2RGF0ZXRpbWU6IFRJTUVTVEFNUE9JRCAqLworCUpz b25JdGVtVHlwZVRpbWVzdGFtcHR6LAkvKiBqYnZEYXRldGltZTogVElNRVNUQU1QVFpPSUQgKi8K KwlKc29uSXRlbVR5cGVDb21wb3NpdGUsCQkvKiBqYnZBcnJheSwgamJ2T2JqZWN0LCBqYnZCaW5h cnkgKi8KKwlKc29uSXRlbVR5cGVJbnZhbGlkLAorfSBKc29uSXRlbVR5cGU7CisKKy8qCisgKiBK c29uSXRlbUNvZXJjaW9uCisgKgkJQ29lcmNpb24gZXhwcmVzc2lvbiBmb3IgdGhlIGdpdmVuIEpz b25JdGVtVHlwZQorICoKKyAqIElmIG5vdCBOVUxMLCAnY29lcmNpb24nIGdpdmVuIHRoZSBleHBy ZXNzaW9uIG5vZGUgdG8gY29udmVydCBhIHNjYWxhciB2YWx1ZQorICogZXh0cmFjdGVkIGZyb20g YSBKc29uYlZhbHVlIG9mIHRoZSBnaXZlbiB0eXBlIHRvIHRoZSB0YXJnZXQgdHlwZSBnaXZlbiBi eQorICogSnNvbkV4cHIucmV0dXJuaW5nLiAgTlVMTCBtZWFucyB0aGUgY29lcmNpb24gaXMgdW5u ZWNlc3NhcnkuCisgKi8KK3R5cGVkZWYgc3RydWN0IEpzb25JdGVtQ29lcmNpb24KK3sKKwlOb2Rl VGFnCQl0eXBlOworCisJSnNvbkl0ZW1UeXBlIGl0ZW1fdHlwZTsKKwlOb2RlCSAgICpjb2VyY2lv bjsKK30gSnNvbkl0ZW1Db2VyY2lvbjsKKworLyoKKyAqIEpzb25CZWhhdmlvcgorICoJCUluZm9y bWF0aW9uIGFib3V0IE9OIEVSUk9SIC8gT04gRU1QVFkgYmVoYXZpb3JzIG9mIEpTT05fVkFMVUUo KSwKKyAqCQlKU09OX1FVRVJZKCksIGFuZCBKU09OX0VYSVNUUygpCisgKgorICogJ2V4cHInIGlz IHRoZSBleHByZXNzaW9uIHRvIGVtaXQgd2hlbiBhIGdpdmVuIGJlaGF2aW9yIChFTVBUWSBvciBF UlJPUikKKyAqIG9jY3VycyBvbiBldmFsdWF0aW5nIHRoZSBTUUwvSlNPTiBxdWVyeSBmdW5jdGlv bi4gICdjb2VyY2lvbicgaXMgc2V0CisgKiBpZiAnZXhwcicgaXNuJ3QgYWxyZWFkeSBvZiB0aGUg ZXhwZWN0ZWQgdGFyZ2V0IHR5cGUgZ2l2ZW4gYnkKKyAqIEpzb25FeHByLnJldHVybmluZy4KKyAq LwordHlwZWRlZiBzdHJ1Y3QgSnNvbkJlaGF2aW9yCit7CisJTm9kZVRhZwkJdHlwZTsKKworCUpz b25CZWhhdmlvclR5cGUgYnR5cGU7CisJTm9kZQkgICAqZXhwcjsKKwlKc29uQ29lcmNpb24gKmNv ZXJjaW9uOwkJLyogdG8gY29lcmNlIGJlaGF2aW9yIGV4cHJlc3Npb24gd2hlbiB0aGVyZSBpcwor CQkJCQkJCQkgKiBubyBjYXN0IHRvIHRoZSB0YXJnZXQgdHlwZSAqLworCWludAkJCWxvY2F0aW9u OwkJLyogdG9rZW4gbG9jYXRpb24sIG9yIC0xIGlmIHVua25vd24gKi8KK30gSnNvbkJlaGF2aW9y OworCisvKgorICogSnNvbkV4cHIgLQorICoJCVRyYW5zZm9ybWVkIHJlcHJlc2VudGF0aW9uIG9m IEpTT05fVkFMVUUoKSwgSlNPTl9RVUVSWSgpLCBhbmQKKyAqCQlKU09OX0VYSVNUUygpCisgKi8K K3R5cGVkZWYgc3RydWN0IEpzb25FeHByCit7CisJRXhwcgkJeHByOworCisJLyogSlNPTl8qIGZ1 bmN0aW9uIGlkZW50aWZpZXIgKi8KKwlKc29uRXhwck9wCW9wOworCisJLyoganNvbihiKS12YWx1 ZWQgZXhwcmVzc2lvbiB0byBxdWVyeSAqLworCU5vZGUJICAgKmZvcm1hdHRlZF9leHByOworCisJ LyogRm9ybWF0IG9mIHRoZSBhYm92ZSBleHByZXNzaW9uIG5lZWRlZCBieSBydWxldXRpbHMuYyAq LworCUpzb25Gb3JtYXQgKmZvcm1hdDsKKworCS8qIGpzb3BhdGgtdmFsdWVkIGV4cHJlc3Npb24g Y29udGFpbmluZyB0aGUgcXVlcnkgcGF0dGVybiAqLworCU5vZGUJICAgKnBhdGhfc3BlYzsKKwor CS8qIEV4cGVjdGVkIHR5cGUvZm9ybWF0IG9mIHRoZSBvdXRwdXQuICovCisJSnNvblJldHVybmlu ZyAqcmV0dXJuaW5nOworCisJLyogSW5mb3JtYXRpb24gYWJvdXQgdGhlIFBBU1NJTkcgYXJndW1l bnQgZXhwcmVzc2lvbnMgKi8KKwlMaXN0CSAgICpwYXNzaW5nX25hbWVzOworCUxpc3QJICAgKnBh c3NpbmdfdmFsdWVzOworCisJLyogVXNlLXNwZWNpZmllZCBvciBkZWZhdWx0IE9OIEVNUFRZIGFu ZCBPTiBFUlJPUiBiZWhhdmlvcnMgKi8KKwlKc29uQmVoYXZpb3IgKm9uX2VtcHR5OworCUpzb25C ZWhhdmlvciAqb25fZXJyb3I7CisKKwkvKgorCSAqIEV4cHJlc3Npb24gdG8gY29udmVydCB0aGUg cmVzdWx0IG9mIEpTT05fKiBmdW5jdGlvbiB0byB0aGUgUkVUVVJOSU5HCisJICogdHlwZQorCSAq LworCU5vZGUJICAgKnJlc3VsdF9jb2VyY2lvbjsKKworCS8qCisJICogTGlzdCBvZiBleHByZXNz aW9ucyBmb3IgY29lcmNpbmcgSlNPTl9WQUxVRSgpIHJlc3VsdCB2YWx1ZXMsIGNvbnRhaW5pbmcK KwkgKiBvbmUgZWxlbWVudCBmb3IgZXZlcnkgSnNvbkl0ZW1UeXBlLgorCSAqLworCUxpc3QJICAg Kml0ZW1fY29lcmNpb25zOworCisJLyogV1JBUFBFUiBzcGVjaWZpY2F0aW9uIGZvciBKU09OX1FV RVJZICovCisJSnNvbldyYXBwZXIgd3JhcHBlcjsKKworCS8qIEtFRVAgb3IgT01JVCBRVU9URVMg Zm9yIHNpbmdsZXRvbiBzY2FsYXJzIHJldHVybmVkIGJ5IEpTT05fUVVFUlkoKSAqLworCWJvb2wJ CW9taXRfcXVvdGVzOworCisJLyogT3JpZ2luYWwgSnNvbkZ1bmNFeHByJ3MgbG9jYXRpb24gKi8K KwlpbnQJCQlsb2NhdGlvbjsKK30gSnNvbkV4cHI7CisKIC8qIC0tLS0tLS0tLS0tLS0tLS0KICAq IE51bGxUZXN0CiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oIGIv c3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCmluZGV4IDIzMzFhY2FjMDkuLjk0ZTFjYjRkY2Ug MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaAorKysgYi9zcmMvaW5jbHVk ZS9wYXJzZXIva3dsaXN0LmgKQEAgLTkzLDYgKzkzLDcgQEAgUEdfS0VZV09SRCgiY29tbWl0Iiwg Q09NTUlULCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJjb21t aXR0ZWQiLCBDT01NSVRURUQsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tF WVdPUkQoImNvbXByZXNzaW9uIiwgQ09NUFJFU1NJT04sIFVOUkVTRVJWRURfS0VZV09SRCwgQkFS RV9MQUJFTCkKIFBHX0tFWVdPUkQoImNvbmN1cnJlbnRseSIsIENPTkNVUlJFTlRMWSwgVFlQRV9G VU5DX05BTUVfS0VZV09SRCwgQkFSRV9MQUJFTCkKK1BHX0tFWVdPUkQoImNvbmRpdGlvbmFsIiwg Q09ORElUSU9OQUwsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQo ImNvbmZpZ3VyYXRpb24iLCBDT05GSUdVUkFUSU9OLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVf TEFCRUwpCiBQR19LRVlXT1JEKCJjb25mbGljdCIsIENPTkZMSUNULCBVTlJFU0VSVkVEX0tFWVdP UkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJjb25uZWN0aW9uIiwgQ09OTkVDVElPTiwgVU5S RVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQpAQCAtMTQ3LDExICsxNDgsMTMgQEAgUEdfS0VZ V09SRCgiZG91YmxlIiwgRE9VQkxFX1AsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkK IFBHX0tFWVdPUkQoImRyb3AiLCBEUk9QLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwp CiBQR19LRVlXT1JEKCJlYWNoIiwgRUFDSCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVM KQogUEdfS0VZV09SRCgiZWxzZSIsIEVMU0UsIFJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwp CitQR19LRVlXT1JEKCJlbXB0eSIsIEVNUFRZX1AsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9M QUJFTCkKIFBHX0tFWVdPUkQoImVuYWJsZSIsIEVOQUJMRV9QLCBVTlJFU0VSVkVEX0tFWVdPUkQs IEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJlbmNvZGluZyIsIEVOQ09ESU5HLCBVTlJFU0VSVkVE X0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJlbmNyeXB0ZWQiLCBFTkNSWVBURUQs IFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoImVuZCIsIEVORF9Q LCBSRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgiZW51bSIsIEVOVU1f UCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQorUEdfS0VZV09SRCgiZXJyb3IiLCBF UlJPUl9QLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJlc2Nh cGUiLCBFU0NBUEUsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQo ImV2ZW50IiwgRVZFTlQsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdP UkQoImV4Y2VwdCIsIEVYQ0VQVCwgUkVTRVJWRURfS0VZV09SRCwgQVNfTEFCRUwpCkBAIC0yMzMs MTAgKzIzNiwxNCBAQCBQR19LRVlXT1JEKCJqb2luIiwgSk9JTiwgVFlQRV9GVU5DX05BTUVfS0VZ V09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoImpzb24iLCBKU09OLCBDT0xfTkFNRV9LRVlX T1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgianNvbl9hcnJheSIsIEpTT05fQVJSQVksIENP TF9OQU1FX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJqc29uX2FycmF5YWdnIiwg SlNPTl9BUlJBWUFHRywgQ09MX05BTUVfS0VZV09SRCwgQkFSRV9MQUJFTCkKK1BHX0tFWVdPUkQo Impzb25fZXhpc3RzIiwgSlNPTl9FWElTVFMsIENPTF9OQU1FX0tFWVdPUkQsIEJBUkVfTEFCRUwp CiBQR19LRVlXT1JEKCJqc29uX29iamVjdCIsIEpTT05fT0JKRUNULCBDT0xfTkFNRV9LRVlXT1JE LCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgianNvbl9vYmplY3RhZ2ciLCBKU09OX09CSkVDVEFH RywgQ09MX05BTUVfS0VZV09SRCwgQkFSRV9MQUJFTCkKK1BHX0tFWVdPUkQoImpzb25fcXVlcnki LCBKU09OX1FVRVJZLCBDT0xfTkFNRV9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgi anNvbl9zY2FsYXIiLCBKU09OX1NDQUxBUiwgQ09MX05BTUVfS0VZV09SRCwgQkFSRV9MQUJFTCkK IFBHX0tFWVdPUkQoImpzb25fc2VyaWFsaXplIiwgSlNPTl9TRVJJQUxJWkUsIENPTF9OQU1FX0tF WVdPUkQsIEJBUkVfTEFCRUwpCitQR19LRVlXT1JEKCJqc29uX3ZhbHVlIiwgSlNPTl9WQUxVRSwg Q09MX05BTUVfS0VZV09SRCwgQkFSRV9MQUJFTCkKK1BHX0tFWVdPUkQoImtlZXAiLCBLRUVQLCBV TlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJrZXkiLCBLRVksIFVO UkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoImtleXMiLCBLRVlTLCBV TlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJsYWJlbCIsIExBQkVM LCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCkBAIC0zMDIsNiArMzA5LDcgQEAgUEdf S0VZV09SRCgib2ZmIiwgT0ZGLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19L RVlXT1JEKCJvZmZzZXQiLCBPRkZTRVQsIFJFU0VSVkVEX0tFWVdPUkQsIEFTX0xBQkVMKQogUEdf S0VZV09SRCgib2lkcyIsIE9JRFMsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBH X0tFWVdPUkQoIm9sZCIsIE9MRCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQorUEdf S0VZV09SRCgib21pdCIsIE9NSVQsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBH X0tFWVdPUkQoIm9uIiwgT04sIFJFU0VSVkVEX0tFWVdPUkQsIEFTX0xBQkVMKQogUEdfS0VZV09S RCgib25seSIsIE9OTFksIFJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JE KCJvcGVyYXRvciIsIE9QRVJBVE9SLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCkBA IC0zNDQsNiArMzUyLDcgQEAgUEdfS0VZV09SRCgicHJvY2VkdXJlcyIsIFBST0NFRFVSRVMsIFVO UkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInByb2dyYW0iLCBQUk9H UkFNLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwdWJsaWNh dGlvbiIsIFBVQkxJQ0FUSU9OLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19L RVlXT1JEKCJxdW90ZSIsIFFVT1RFLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCitQ R19LRVlXT1JEKCJxdW90ZXMiLCBRVU9URVMsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJF TCkKIFBHX0tFWVdPUkQoInJhbmdlIiwgUkFOR0UsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9M QUJFTCkKIFBHX0tFWVdPUkQoInJlYWQiLCBSRUFELCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVf TEFCRUwpCiBQR19LRVlXT1JEKCJyZWFsIiwgUkVBTCwgQ09MX05BTUVfS0VZV09SRCwgQkFSRV9M QUJFTCkKQEAgLTQxNCw2ICs0MjMsNyBAQCBQR19LRVlXT1JEKCJzdGRvdXQiLCBTVERPVVQsIFVO UkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInN0b3JhZ2UiLCBTVE9S QUdFLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJzdG9yZWQi LCBTVE9SRUQsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInN0 cmljdCIsIFNUUklDVF9QLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCitQR19LRVlX T1JEKCJzdHJpbmciLCBTVFJJTkdfUCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQog UEdfS0VZV09SRCgic3RyaXAiLCBTVFJJUF9QLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFC RUwpCiBQR19LRVlXT1JEKCJzdWJzY3JpcHRpb24iLCBTVUJTQ1JJUFRJT04sIFVOUkVTRVJWRURf S0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInN1YnN0cmluZyIsIFNVQlNUUklORywg Q09MX05BTUVfS0VZV09SRCwgQkFSRV9MQUJFTCkKQEAgLTQ0OSw2ICs0NTksNyBAQCBQR19LRVlX T1JEKCJ0eXBlcyIsIFRZUEVTX1AsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBH X0tFWVdPUkQoInVlc2NhcGUiLCBVRVNDQVBFLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFC RUwpCiBQR19LRVlXT1JEKCJ1bmJvdW5kZWQiLCBVTkJPVU5ERUQsIFVOUkVTRVJWRURfS0VZV09S RCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInVuY29tbWl0dGVkIiwgVU5DT01NSVRURUQsIFVO UkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKK1BHX0tFWVdPUkQoInVuY29uZGl0aW9uYWwi LCBVTkNPTkRJVElPTkFMLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlX T1JEKCJ1bmVuY3J5cHRlZCIsIFVORU5DUllQVEVELCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVf TEFCRUwpCiBQR19LRVlXT1JEKCJ1bmlvbiIsIFVOSU9OLCBSRVNFUlZFRF9LRVlXT1JELCBBU19M QUJFTCkKIFBHX0tFWVdPUkQoInVuaXF1ZSIsIFVOSVFVRSwgUkVTRVJWRURfS0VZV09SRCwgQkFS RV9MQUJFTCkKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL2Zvcm1hdHRpbmcuaCBiL3Ny Yy9pbmNsdWRlL3V0aWxzL2Zvcm1hdHRpbmcuaAppbmRleCA3ZWExYTcwZjcxLi5jZGUwMzA0MTRl IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9mb3JtYXR0aW5nLmgKKysrIGIvc3JjL2lu Y2x1ZGUvdXRpbHMvZm9ybWF0dGluZy5oCkBAIC0yOSw1ICsyOSw2IEBAIGV4dGVybiBjaGFyICph c2NfaW5pdGNhcChjb25zdCBjaGFyICpidWZmLCBzaXplX3QgbmJ5dGVzKTsKIGV4dGVybiBEYXR1 bSBwYXJzZV9kYXRldGltZSh0ZXh0ICpkYXRlX3R4dCwgdGV4dCAqZm10LCBPaWQgY29sbGlkLCBi b29sIHN0cmljdCwKIAkJCQkJCQlPaWQgKnR5cGlkLCBpbnQzMiAqdHlwbW9kLCBpbnQgKnR6LAog CQkJCQkJCXN0cnVjdCBOb2RlICplc2NvbnRleHQpOworZXh0ZXJuIGJvb2wgZGF0ZXRpbWVfZm9y bWF0X2hhc190eihjb25zdCBjaGFyICpmbXRfc3RyKTsKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS91dGlscy9qc29uYi5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvanNvbmIuaAppbmRl eCBlMzhkZmQ0OTAxLi5kNTg5YWNlNWEyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9q c29uYi5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL2pzb25iLmgKQEAgLTQyMiw2ICs0MjIsNyBA QCBleHRlcm4gY2hhciAqSnNvbmJUb0NTdHJpbmcoU3RyaW5nSW5mbyBvdXQsIEpzb25iQ29udGFp bmVyICppbiwKIAkJCQkJCQlpbnQgZXN0aW1hdGVkX2xlbik7CiBleHRlcm4gY2hhciAqSnNvbmJU b0NTdHJpbmdJbmRlbnQoU3RyaW5nSW5mbyBvdXQsIEpzb25iQ29udGFpbmVyICppbiwKIAkJCQkJ CQkJICBpbnQgZXN0aW1hdGVkX2xlbik7CitleHRlcm4gY2hhciAqSnNvbmJVbnF1b3RlKEpzb25i ICpqYik7CiBleHRlcm4gYm9vbCBKc29uYkV4dHJhY3RTY2FsYXIoSnNvbmJDb250YWluZXIgKmpi YywgSnNvbmJWYWx1ZSAqcmVzKTsKIGV4dGVybiBjb25zdCBjaGFyICpKc29uYlR5cGVOYW1lKEpz b25iVmFsdWUgKnZhbCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL2pzb25mdW5j cy5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvanNvbmZ1bmNzLmgKaW5kZXggMzFjMWFlNDc2Ny4uMTkw ZTEzMjg0YiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvanNvbmZ1bmNzLmgKKysrIGIv c3JjL2luY2x1ZGUvdXRpbHMvanNvbmZ1bmNzLmgKQEAgLTE1LDYgKzE1LDcgQEAKICNkZWZpbmUg SlNPTkZVTkNTX0gKIAogI2luY2x1ZGUgImNvbW1vbi9qc29uYXBpLmgiCisjaW5jbHVkZSAibm9k ZXMvbm9kZXMuaCIKICNpbmNsdWRlICJ1dGlscy9qc29uYi5oIgogCiAvKgpAQCAtODgsNCArODks MTAgQEAgZXh0ZXJuIERhdHVtIGRhdHVtX3RvX2pzb25iKERhdHVtIHZhbCwgSnNvblR5cGVDYXRl Z29yeSB0Y2F0ZWdvcnksCiAJCQkJCQkJT2lkIG91dGZ1bmNvaWQpOwogZXh0ZXJuIERhdHVtIGpz b25iX2Zyb21fdGV4dCh0ZXh0ICpqcywgYm9vbCB1bmlxdWVfa2V5cyk7CiAKK2V4dGVybiBEYXR1 bSBqc29uX3BvcHVsYXRlX3R5cGUoRGF0dW0ganNvbl92YWwsIE9pZCBqc29uX3R5cGUsCisJCQkJ CQkJCU9pZCB0eXBpZCwgaW50MzIgdHlwbW9kLAorCQkJCQkJCQl2b2lkICoqY2FjaGUsIE1lbW9y eUNvbnRleHQgbWN4dCwKKwkJCQkJCQkJYm9vbCAqaXNudWxsLAorCQkJCQkJCQlOb2RlICplc2Nv bnRleHQpOworCiAjZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL2pzb25wYXRo LmggYi9zcmMvaW5jbHVkZS91dGlscy9qc29ucGF0aC5oCmluZGV4IDBmMGUxMjZlMDMuLjBmNGIx ZWJjOWYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL2pzb25wYXRoLmgKKysrIGIvc3Jj L2luY2x1ZGUvdXRpbHMvanNvbnBhdGguaApAQCAtMTYsNiArMTYsNyBAQAogCiAjaW5jbHVkZSAi Zm1nci5oIgogI2luY2x1ZGUgIm5vZGVzL3BnX2xpc3QuaCIKKyNpbmNsdWRlICJub2Rlcy9wcmlt bm9kZXMuaCIKICNpbmNsdWRlICJ1dGlscy9qc29uYi5oIgogCiB0eXBlZGVmIHN0cnVjdApAQCAt MjAyLDYgKzIwMyw3IEBAIGV4dGVybiBib29sIGpzcEdldEJvb2woSnNvblBhdGhJdGVtICp2KTsK IGV4dGVybiBjaGFyICpqc3BHZXRTdHJpbmcoSnNvblBhdGhJdGVtICp2LCBpbnQzMiAqbGVuKTsK IGV4dGVybiBib29sIGpzcEdldEFycmF5U3Vic2NyaXB0KEpzb25QYXRoSXRlbSAqdiwgSnNvblBh dGhJdGVtICpmcm9tLAogCQkJCQkJCQkgSnNvblBhdGhJdGVtICp0bywgaW50IGkpOworZXh0ZXJu IGJvb2wganNwSXNNdXRhYmxlKEpzb25QYXRoICpwYXRoLCBMaXN0ICp2YXJuYW1lcywgTGlzdCAq dmFyZXhwcnMpOwogCiBleHRlcm4gY29uc3QgY2hhciAqanNwT3BlcmF0aW9uTmFtZShKc29uUGF0 aEl0ZW1UeXBlIHR5cGUpOwogCkBAIC0yNzksNCArMjgxLDI2IEBAIGV4dGVybiBib29sIGpzcENv bnZlcnRSZWdleEZsYWdzKHVpbnQzMiB4ZmxhZ3MsIGludCAqcmVzdWx0LAogCQkJCQkJCQkgc3Ry dWN0IE5vZGUgKmVzY29udGV4dCk7CiAKIAorLyoKKyAqIEV2YWx1YXRpb24gb2YganNvbnBhdGgK KyAqLworCisvKiBFeHRlcm5hbCB2YXJpYWJsZSBwYXNzZWQgaW50byBqc29ucGF0aC4gKi8KK3R5 cGVkZWYgc3RydWN0IEpzb25QYXRoVmFyaWFibGUKK3sKKwljaGFyCSAgICpuYW1lOworCU9pZAkJ CXR5cGlkOworCWludDMyCQl0eXBtb2Q7CisJRGF0dW0JCXZhbHVlOworCWJvb2wJCWlzbnVsbDsK K30gSnNvblBhdGhWYXJpYWJsZTsKKworCisvKiBTUUwvSlNPTiBpdGVtICovCitleHRlcm4gYm9v bCBKc29uUGF0aEV4aXN0cyhEYXR1bSBqYiwgSnNvblBhdGggKnBhdGgsIGJvb2wgKmVycm9yLCBM aXN0ICp2YXJzKTsKK2V4dGVybiBEYXR1bSBKc29uUGF0aFF1ZXJ5KERhdHVtIGpiLCBKc29uUGF0 aCAqanAsIEpzb25XcmFwcGVyIHdyYXBwZXIsCisJCQkJCQkgICBib29sICplbXB0eSwgYm9vbCAq ZXJyb3IsIExpc3QgKnZhcnMpOworZXh0ZXJuIEpzb25iVmFsdWUgKkpzb25QYXRoVmFsdWUoRGF0 dW0gamIsIEpzb25QYXRoICpqcCwgYm9vbCAqZW1wdHksCisJCQkJCQkJCSBib29sICplcnJvciwg TGlzdCAqdmFycyk7CisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvZWNwZy9w cmVwcm9jL2VjcGcudHJhaWxlciBiL3NyYy9pbnRlcmZhY2VzL2VjcGcvcHJlcHJvYy9lY3BnLnRy YWlsZXIKaW5kZXggNDM1YzEzOWVjMi4uYjJhYTQ0ZjM2ZCAxMDA2NDQKLS0tIGEvc3JjL2ludGVy ZmFjZXMvZWNwZy9wcmVwcm9jL2VjcGcudHJhaWxlcgorKysgYi9zcmMvaW50ZXJmYWNlcy9lY3Bn L3ByZXByb2MvZWNwZy50cmFpbGVyCkBAIC02NTEsNiArNjUxLDM0IEBAIHZhcl90eXBlOglzaW1w bGVfdHlwZQogCQkJJCQudHlwZV9pbmRleCA9IG1tX3N0cmR1cCgiLTEiKTsKIAkJCSQkLnR5cGVf c2l6ZW9mID0gTlVMTDsKIAkJfQorCQl8IFNUUklOR19QCisJCXsKKwkJCWlmIChJTkZPUk1JWF9N T0RFKQorCQkJeworCQkJCS8qIEluIEluZm9ybWl4IG1vZGUsICJzdHJpbmciIGlzIGF1dG9tYXRp Y2FsbHkgYSB0eXBlZGVmICovCisJCQkJJCQudHlwZV9lbnVtID0gRUNQR3Rfc3RyaW5nOworCQkJ CSQkLnR5cGVfc3RyID0gbW1fc3RyZHVwKCJjaGFyIik7CisJCQkJJCQudHlwZV9kaW1lbnNpb24g PSBtbV9zdHJkdXAoIi0xIik7CisJCQkJJCQudHlwZV9pbmRleCA9IG1tX3N0cmR1cCgiLTEiKTsK KwkJCQkkJC50eXBlX3NpemVvZiA9IE5VTEw7CisJCQl9CisJCQllbHNlCisJCQl7CisJCQkJLyog T3RoZXJ3aXNlLCBsZWdhbCBvbmx5IGlmIHVzZXIgdHlwZWRlZidlZCBpdCAqLworCQkJCXN0cnVj dCB0eXBlZGVmcyAqdGhpcyA9IGdldF90eXBlZGVmKCJzdHJpbmciLCBmYWxzZSk7CisKKwkJCQkk JC50eXBlX3N0ciA9ICh0aGlzLT50eXBlLT50eXBlX2VudW0gPT0gRUNQR3RfdmFyY2hhciB8fCB0 aGlzLT50eXBlLT50eXBlX2VudW0gPT0gRUNQR3RfYnl0ZWEpID8gRU1QVFkgOiBtbV9zdHJkdXAo dGhpcy0+bmFtZSk7CisJCQkJJCQudHlwZV9lbnVtID0gdGhpcy0+dHlwZS0+dHlwZV9lbnVtOwor CQkJCSQkLnR5cGVfZGltZW5zaW9uID0gdGhpcy0+dHlwZS0+dHlwZV9kaW1lbnNpb247CisJCQkJ JCQudHlwZV9pbmRleCA9IHRoaXMtPnR5cGUtPnR5cGVfaW5kZXg7CisJCQkJaWYgKHRoaXMtPnR5 cGUtPnR5cGVfc2l6ZW9mICYmIHN0cmxlbih0aGlzLT50eXBlLT50eXBlX3NpemVvZikgIT0gMCkK KwkJCQkJJCQudHlwZV9zaXplb2YgPSB0aGlzLT50eXBlLT50eXBlX3NpemVvZjsKKwkJCQllbHNl CisJCQkJCSQkLnR5cGVfc2l6ZW9mID0gY2F0X3N0cigzLCBtbV9zdHJkdXAoInNpemVvZigiKSwg bW1fc3RyZHVwKHRoaXMtPm5hbWUpLCBtbV9zdHJkdXAoIikiKSk7CisKKwkJCQlzdHJ1Y3RfbWVt YmVyX2xpc3Rbc3RydWN0X2xldmVsXSA9IEVDUEdzdHJ1Y3RfbWVtYmVyX2R1cCh0aGlzLT5zdHJ1 Y3RfbWVtYmVyX2xpc3QpOworCQkJfQorCQl9CiAJCXwgSU5URVJWQUwgZWNwZ19pbnRlcnZhbAog CQl7CiAJCQkkJC50eXBlX2VudW0gPSBFQ1BHdF9pbnRlcnZhbDsKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3FsanNvbl9xdWVyeWZ1bmNzLm91dCBiL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvc3FsanNvbl9xdWVyeWZ1bmNzLm91dApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwLi5mNWI1NzQ2NWQ2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9zcWxqc29uX3F1ZXJ5ZnVuY3Mub3V0CkBAIC0wLDAgKzEsMTI2 MSBAQAorLS0gSlNPTl9FWElTVFMKKy0tIGpzb24gYXJndW1lbnRzIGN1cnJlbnRseSBub3Qgc3Vw cG9ydGVkCitTRUxFQ1QgSlNPTl9FWElTVFMoTlVMTCBGT1JNQVQgSlNPTiwgJyQnKTsKK0VSUk9S OiAgSlNPTl9FWElTVFMoKSBpcyBub3QgeWV0IGltcGxlbWVudGVkIGZvciB0aGUganNvbiB0eXBl CitMSU5FIDE6IFNFTEVDVCBKU09OX0VYSVNUUyhOVUxMIEZPUk1BVCBKU09OLCAnJCcpOworICAg ICAgICAgICAgICAgICAgICAgICAgICAgXgorSElOVDogIFRyeSBjYXN0aW5nIHRoZSBhcmd1bWVu dCB0byBqc29uYgorU0VMRUNUIEpTT05fRVhJU1RTKE5VTEw6Ompzb25iLCAnJCcpOworIGpzb25f ZXhpc3RzIAorLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9FWElTVFMo anNvbmIgJ1tdJywgJyQnKTsKKyBqc29uX2V4aXN0cyAKKy0tLS0tLS0tLS0tLS0KKyB0CisoMSBy b3cpCisKK1NFTEVDVCBKU09OX0VYSVNUUyhKU09OX09CSkVDVChSRVRVUk5JTkcganNvbmIpLCAn JCcpOworIGpzb25fZXhpc3RzIAorLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworU0VMRUNU IEpTT05fRVhJU1RTKGpzb25iICcxJywgJyQnKTsKKyBqc29uX2V4aXN0cyAKKy0tLS0tLS0tLS0t LS0KKyB0CisoMSByb3cpCisKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAnbnVsbCcsICckJyk7 CisganNvbl9leGlzdHMgCistLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCitTRUxFQ1QgSlNP Tl9FWElTVFMoanNvbmIgJ1tdJywgJyQnKTsKKyBqc29uX2V4aXN0cyAKKy0tLS0tLS0tLS0tLS0K KyB0CisoMSByb3cpCisKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAnMScsICckLmEnKTsKKyBq c29uX2V4aXN0cyAKKy0tLS0tLS0tLS0tLS0KKyBmCisoMSByb3cpCisKK1NFTEVDVCBKU09OX0VY SVNUUyhqc29uYiAnMScsICdzdHJpY3QgJC5hJyk7IC0tIEZBTFNFIG9uIGVycm9yCisganNvbl9l eGlzdHMgCistLS0tLS0tLS0tLS0tCisgZgorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9FWElTVFMo anNvbmIgJzEnLCAnc3RyaWN0ICQuYScgRVJST1IgT04gRVJST1IpOworRVJST1I6ICBqc29ucGF0 aCBtZW1iZXIgYWNjZXNzb3IgY2FuIG9ubHkgYmUgYXBwbGllZCB0byBhbiBvYmplY3QKK1NFTEVD VCBKU09OX0VYSVNUUyhqc29uYiAnbnVsbCcsICckLmEnKTsKKyBqc29uX2V4aXN0cyAKKy0tLS0t LS0tLS0tLS0KKyBmCisoMSByb3cpCisKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAnW10nLCAn JC5hJyk7CisganNvbl9leGlzdHMgCistLS0tLS0tLS0tLS0tCisgZgorKDEgcm93KQorCitTRUxF Q1QgSlNPTl9FWElTVFMoanNvbmIgJ1sxLCAiYWFhIiwgeyJhIjogMX1dJywgJ3N0cmljdCAkLmEn KTsgLS0gRkFMU0Ugb24gZXJyb3IKKyBqc29uX2V4aXN0cyAKKy0tLS0tLS0tLS0tLS0KKyBmCiso MSByb3cpCisKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAnWzEsICJhYWEiLCB7ImEiOiAxfV0n LCAnbGF4ICQuYScpOworIGpzb25fZXhpc3RzIAorLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykK KworU0VMRUNUIEpTT05fRVhJU1RTKGpzb25iICd7fScsICckLmEnKTsKKyBqc29uX2V4aXN0cyAK Ky0tLS0tLS0tLS0tLS0KKyBmCisoMSByb3cpCisKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAn eyJiIjogMSwgImEiOiAyfScsICckLmEnKTsKKyBqc29uX2V4aXN0cyAKKy0tLS0tLS0tLS0tLS0K KyB0CisoMSByb3cpCisKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAnMScsICckLmEuYicpOwor IGpzb25fZXhpc3RzIAorLS0tLS0tLS0tLS0tLQorIGYKKygxIHJvdykKKworU0VMRUNUIEpTT05f RVhJU1RTKGpzb25iICd7ImEiOiB7ImIiOiAxfX0nLCAnJC5hLmInKTsKKyBqc29uX2V4aXN0cyAK Ky0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAn eyJhIjogMSwgImIiOiAyfScsICckLmEuYicpOworIGpzb25fZXhpc3RzIAorLS0tLS0tLS0tLS0t LQorIGYKKygxIHJvdykKKworU0VMRUNUIEpTT05fRVhJU1RTKGpzb25iICd7ImEiOiAxLCAiYiI6 IDJ9JywgJyQuKiA/IChAID4gJHgpJyBQQVNTSU5HIDEgQVMgeCk7CisganNvbl9leGlzdHMgCist LS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9FWElTVFMoanNvbmIgJ3si YSI6IDEsICJiIjogMn0nLCAnJC4qID8gKEAgPiAkeCknIFBBU1NJTkcgJzEnIEFTIHgpOworIGpz b25fZXhpc3RzIAorLS0tLS0tLS0tLS0tLQorIGYKKygxIHJvdykKKworU0VMRUNUIEpTT05fRVhJ U1RTKGpzb25iICd7ImEiOiAxLCAiYiI6IDJ9JywgJyQuKiA/IChAID4gJHggJiYgQCA8ICR5KScg UEFTU0lORyAwIEFTIHgsIDIgQVMgeSk7CisganNvbl9leGlzdHMgCistLS0tLS0tLS0tLS0tCisg dAorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9FWElTVFMoanNvbmIgJ3siYSI6IDEsICJiIjogMn0n LCAnJC4qID8gKEAgPiAkeCAmJiBAIDwgJHkpJyBQQVNTSU5HIDAgQVMgeCwgMSBBUyB5KTsKKyBq c29uX2V4aXN0cyAKKy0tLS0tLS0tLS0tLS0KKyBmCisoMSByb3cpCisKKy0tIGV4dGVuc2lvbjog Ym9vbGVhbiBleHByZXNzaW9ucworU0VMRUNUIEpTT05fRVhJU1RTKGpzb25iICcxJywgJyQgPiAy Jyk7CisganNvbl9leGlzdHMgCistLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCitTRUxFQ1Qg SlNPTl9FWElTVFMoanNvbmIgJzEnLCAnJC5hID4gMicgRVJST1IgT04gRVJST1IpOworIGpzb25f ZXhpc3RzIAorLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworLS0gSlNPTl9WQUxVRQorLS0g anNvbiBhcmd1bWVudHMgY3VycmVudGx5IG5vdCBzdXBwb3J0ZWQKK1NFTEVDVCBKU09OX1ZBTFVF KE5VTEwgRk9STUFUIEpTT04sICckJyk7CitFUlJPUjogIEpTT05fVkFMVUUoKSBpcyBub3QgeWV0 IGltcGxlbWVudGVkIGZvciB0aGUganNvbiB0eXBlCitMSU5FIDE6IFNFTEVDVCBKU09OX1ZBTFVF KE5VTEwgRk9STUFUIEpTT04sICckJyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK0hJ TlQ6ICBUcnkgY2FzdGluZyB0aGUgYXJndW1lbnQgdG8ganNvbmIKK1NFTEVDVCBKU09OX1ZBTFVF KE5VTEw6Ompzb25iLCAnJCcpOworIGpzb25fdmFsdWUgCistLS0tLS0tLS0tLS0KKyAKKygxIHJv dykKKworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ251bGwnLCAnJCcpOworIGpzb25fdmFsdWUg CistLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ251 bGwnLCAnJCcgUkVUVVJOSU5HIGludCk7CisganNvbl92YWx1ZSAKKy0tLS0tLS0tLS0tLQorICAg ICAgICAgICAKKygxIHJvdykKKworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ3RydWUnLCAnJCcp OworIGpzb25fdmFsdWUgCistLS0tLS0tLS0tLS0KKyB0cnVlCisoMSByb3cpCisKK1NFTEVDVCBK U09OX1ZBTFVFKGpzb25iICd0cnVlJywgJyQnIFJFVFVSTklORyBib29sKTsKKyBqc29uX3ZhbHVl IAorLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAn MTIzJywgJyQnKTsKKyBqc29uX3ZhbHVlIAorLS0tLS0tLS0tLS0tCisgMTIzCisoMSByb3cpCisK K1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICcxMjMnLCAnJCcgUkVUVVJOSU5HIGludCkgKyAyMzQ7 CisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgICAgICAzNTcKKygxIHJvdykKKworU0VMRUNUIEpT T05fVkFMVUUoanNvbmIgJzEyMycsICckJyBSRVRVUk5JTkcgdGV4dCk7CisganNvbl92YWx1ZSAK Ky0tLS0tLS0tLS0tLQorIDEyMworKDEgcm93KQorCisvKiBqc29uYiBieXRlYSA/Pz8gKi8KK1NF TEVDVCBKU09OX1ZBTFVFKGpzb25iICcxMjMnLCAnJCcgUkVUVVJOSU5HIGJ5dGVhIEVSUk9SIE9O IEVSUk9SKTsKK0VSUk9SOiAgU1FML0pTT04gaXRlbSBjYW5ub3QgYmUgY2FzdCB0byB0YXJnZXQg dHlwZQorU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJzEuMjMnLCAnJCcpOworIGpzb25fdmFsdWUg CistLS0tLS0tLS0tLS0KKyAxLjIzCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25i ICcxLjIzJywgJyQnIFJFVFVSTklORyBpbnQpOworIGpzb25fdmFsdWUgCistLS0tLS0tLS0tLS0K KyAgICAgICAgICAxCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICciMS4yMyIn LCAnJCcgUkVUVVJOSU5HIG51bWVyaWMpOworIGpzb25fdmFsdWUgCistLS0tLS0tLS0tLS0KKyAg ICAgICAxLjIzCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICciMS4yMyInLCAn JCcgUkVUVVJOSU5HIGludCBFUlJPUiBPTiBFUlJPUik7CitFUlJPUjogIGludmFsaWQgaW5wdXQg c3ludGF4IGZvciB0eXBlIGludGVnZXI6ICIxLjIzIgorU0VMRUNUIEpTT05fVkFMVUUoanNvbmIg JyJhYWEiJywgJyQnKTsKKyBqc29uX3ZhbHVlIAorLS0tLS0tLS0tLS0tCisgYWFhCisoMSByb3cp CisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICciYWFhIicsICckJyBSRVRVUk5JTkcgdGV4dCk7 CisganNvbl92YWx1ZSAKKy0tLS0tLS0tLS0tLQorIGFhYQorKDEgcm93KQorCitTRUxFQ1QgSlNP Tl9WQUxVRShqc29uYiAnImFhYSInLCAnJCcgUkVUVVJOSU5HIGNoYXIoNSkpOworIGpzb25fdmFs dWUgCistLS0tLS0tLS0tLS0KKyBhYWEgIAorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9WQUxVRShq c29uYiAnImFhYSInLCAnJCcgUkVUVVJOSU5HIGNoYXIoMikpOworIGpzb25fdmFsdWUgCistLS0t LS0tLS0tLS0KKyBhYQorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnImFhYSIn LCAnJCcgUkVUVVJOSU5HIGpzb24pOworIGpzb25fdmFsdWUgCistLS0tLS0tLS0tLS0KKyAiYWFh IgorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnImFhYSInLCAnJCcgUkVUVVJO SU5HIGpzb25iKTsKKyBqc29uX3ZhbHVlIAorLS0tLS0tLS0tLS0tCisgImFhYSIKKygxIHJvdykK KworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJyJhYWEiJywgJyQnIFJFVFVSTklORyBqc29uIEVS Uk9SIE9OIEVSUk9SKTsKKyBqc29uX3ZhbHVlIAorLS0tLS0tLS0tLS0tCisgImFhYSIKKygxIHJv dykKKworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJyJhYWEiJywgJyQnIFJFVFVSTklORyBqc29u YiBFUlJPUiBPTiBFUlJPUik7CisganNvbl92YWx1ZSAKKy0tLS0tLS0tLS0tLQorICJhYWEiCiso MSByb3cpCisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICciXCJhYWFcIiInLCAnJCcgUkVUVVJO SU5HIGpzb24pOworIGpzb25fdmFsdWUgCistLS0tLS0tLS0tLS0KKyAiXCJhYWFcIiIKKygxIHJv dykKKworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJyJcImFhYVwiIicsICckJyBSRVRVUk5JTkcg anNvbmIpOworIGpzb25fdmFsdWUgCistLS0tLS0tLS0tLS0KKyAiXCJhYWFcIiIKKygxIHJvdykK KworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJyJhYWEiJywgJyQnIFJFVFVSTklORyBpbnQpOwor IGpzb25fdmFsdWUgCistLS0tLS0tLS0tLS0KKyAgICAgICAgICAgCisoMSByb3cpCisKK1NFTEVD VCBKU09OX1ZBTFVFKGpzb25iICciYWFhIicsICckJyBSRVRVUk5JTkcgaW50IEVSUk9SIE9OIEVS Uk9SKTsKK0VSUk9SOiAgaW52YWxpZCBpbnB1dCBzeW50YXggZm9yIHR5cGUgaW50ZWdlcjogImFh YSIKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICciYWFhIicsICckJyBSRVRVUk5JTkcgaW50IERF RkFVTFQgMTExIE9OIEVSUk9SKTsKKyBqc29uX3ZhbHVlIAorLS0tLS0tLS0tLS0tCisgICAgICAg IDExMQorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnIjEyMyInLCAnJCcgUkVU VVJOSU5HIGludCkgKyAyMzQ7CisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgICAgICAzNTcKKygx IHJvdykKKworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJyIyMDE3LTAyLTIwIicsICckJyBSRVRV Uk5JTkcgZGF0ZSkgKyA5OworICA/Y29sdW1uPyAgCistLS0tLS0tLS0tLS0KKyAwMy0wMS0yMDE3 CisoMSByb3cpCisKKy0tIFRlc3QgTlVMTCBjaGVja3MgZXhlY3V0aW9uIGluIGRvbWFpbiB0eXBl cworQ1JFQVRFIERPTUFJTiBzcWxqc29uYl9pbnRfbm90X251bGwgQVMgaW50IE5PVCBOVUxMOwor U0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ251bGwnLCAnJCcgUkVUVVJOSU5HIHNxbGpzb25iX2lu dF9ub3RfbnVsbCk7CisganNvbl92YWx1ZSAKKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAKKygx IHJvdykKKworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ251bGwnLCAnJCcgUkVUVVJOSU5HIHNx bGpzb25iX2ludF9ub3RfbnVsbCBFUlJPUiBPTiBFUlJPUik7CitFUlJPUjogIGRvbWFpbiBzcWxq c29uYl9pbnRfbm90X251bGwgZG9lcyBub3QgYWxsb3cgbnVsbCB2YWx1ZXMKK1NFTEVDVCBKU09O X1ZBTFVFKGpzb25iICdudWxsJywgJyQnIFJFVFVSTklORyBzcWxqc29uYl9pbnRfbm90X251bGwg REVGQVVMVCAyIE9OIEVNUFRZIEVSUk9SIE9OIEVSUk9SKTsKK0VSUk9SOiAgZG9tYWluIHNxbGpz b25iX2ludF9ub3RfbnVsbCBkb2VzIG5vdCBhbGxvdyBudWxsIHZhbHVlcworU0VMRUNUIEpTT05f VkFMVUUoanNvbmIgJzEnLCAgJyQuYScgUkVUVVJOSU5HIHNxbGpzb25iX2ludF9ub3RfbnVsbCBE RUZBVUxUIDIgT04gRU1QVFkgRVJST1IgT04gRVJST1IpOworIGpzb25fdmFsdWUgCistLS0tLS0t LS0tLS0KKyAgICAgICAgICAyCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICcx JywgICckLmEnIFJFVFVSTklORyBzcWxqc29uYl9pbnRfbm90X251bGwgREVGQVVMVCBOVUxMIE9O IEVNUFRZIEVSUk9SIE9OIEVSUk9SKTsKKyBqc29uX3ZhbHVlIAorLS0tLS0tLS0tLS0tCisgICAg ICAgICAgIAorKDEgcm93KQorCitDUkVBVEUgVFlQRSByYWluYm93IEFTIEVOVU0gKCdyZWQnLCAn b3JhbmdlJywgJ3llbGxvdycsICdncmVlbicsICdibHVlJywgJ3B1cnBsZScpOworQ1JFQVRFIERP TUFJTiByZ2IgQVMgcmFpbmJvdyBDSEVDSyAoVkFMVUUgSU4gKCdyZWQnLCAnZ3JlZW4nLCAnYmx1 ZScpKTsKK1NFTEVDVCBKU09OX1ZBTFVFKCcicHVycGxlIic6Ompzb25iLCAnbGF4ICRbKl0nIFJF VFVSTklORyByZ2IpOworIGpzb25fdmFsdWUgCistLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKwor U0VMRUNUIEpTT05fVkFMVUUoJyJwdXJwbGUiJzo6anNvbmIsICdsYXggJFsqXScgUkVUVVJOSU5H IHJnYiBFUlJPUiBPTiBFUlJPUik7CitFUlJPUjogIHZhbHVlIGZvciBkb21haW4gcmdiIHZpb2xh dGVzIGNoZWNrIGNvbnN0cmFpbnQgInJnYl9jaGVjayIKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25i ICdbXScsICckJyk7CisganNvbl92YWx1ZSAKKy0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitT RUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnW10nLCAnJCcgRVJST1IgT04gRVJST1IpOworRVJST1I6 ICBKU09OIHBhdGggZXhwcmVzc2lvbiBpbiBKU09OX1ZBTFVFIHNob3VsZCByZXR1cm4gc2luZ2xl dG9uIHNjYWxhciBpdGVtCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAne30nLCAnJCcpOworIGpz b25fdmFsdWUgCistLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIEpTT05fVkFMVUUo anNvbmIgJ3t9JywgJyQnIEVSUk9SIE9OIEVSUk9SKTsKK0VSUk9SOiAgSlNPTiBwYXRoIGV4cHJl c3Npb24gaW4gSlNPTl9WQUxVRSBzaG91bGQgcmV0dXJuIHNpbmdsZXRvbiBzY2FsYXIgaXRlbQor U0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJzEnLCAnJC5hJyk7CisganNvbl92YWx1ZSAKKy0tLS0t LS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnMScsICdzdHJp Y3QgJC5hJyBFUlJPUiBPTiBFUlJPUik7CitFUlJPUjogIGpzb25wYXRoIG1lbWJlciBhY2Nlc3Nv ciBjYW4gb25seSBiZSBhcHBsaWVkIHRvIGFuIG9iamVjdAorU0VMRUNUIEpTT05fVkFMVUUoanNv bmIgJzEnLCAnc3RyaWN0ICQuYScgREVGQVVMVCAnZXJyb3InIE9OIEVSUk9SKTsKKyBqc29uX3Zh bHVlIAorLS0tLS0tLS0tLS0tCisgZXJyb3IKKygxIHJvdykKKworU0VMRUNUIEpTT05fVkFMVUUo anNvbmIgJzEnLCAnbGF4ICQuYScgRVJST1IgT04gRVJST1IpOworRVJST1I6ICBubyBTUUwvSlNP TiBpdGVtCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnMScsICdsYXggJC5hJyBFUlJPUiBPTiBF TVBUWSBFUlJPUiBPTiBFUlJPUik7CitFUlJPUjogIG5vIFNRTC9KU09OIGl0ZW0KK1NFTEVDVCBK U09OX1ZBTFVFKGpzb25iICcxJywgJ3N0cmljdCAkLmEnIERFRkFVTFQgMiBPTiBFUlJPUik7Cisg anNvbl92YWx1ZSAKKy0tLS0tLS0tLS0tLQorIDIKKygxIHJvdykKKworU0VMRUNUIEpTT05fVkFM VUUoanNvbmIgJzEnLCAnbGF4ICQuYScgREVGQVVMVCAyIE9OIEVSUk9SKTsKKyBqc29uX3ZhbHVl IAorLS0tLS0tLS0tLS0tCisgMgorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAn MScsICdsYXggJC5hJyBERUZBVUxUICcyJyBPTiBFUlJPUik7CisganNvbl92YWx1ZSAKKy0tLS0t LS0tLS0tLQorIDIKKygxIHJvdykKKworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJzEnLCAnbGF4 ICQuYScgTlVMTCBPTiBFTVBUWSBERUZBVUxUICcyJyBPTiBFUlJPUik7CisganNvbl92YWx1ZSAK Ky0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnMScs ICdsYXggJC5hJyBERUZBVUxUICcyJyBPTiBFTVBUWSBERUZBVUxUICczJyBPTiBFUlJPUik7Cisg anNvbl92YWx1ZSAKKy0tLS0tLS0tLS0tLQorIDIKKygxIHJvdykKKworU0VMRUNUIEpTT05fVkFM VUUoanNvbmIgJzEnLCAnbGF4ICQuYScgRVJST1IgT04gRU1QVFkgREVGQVVMVCAnMycgT04gRVJS T1IpOworRVJST1I6ICBubyBTUUwvSlNPTiBpdGVtCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAn WzEsMl0nLCAnJFsqXScgRVJST1IgT04gRVJST1IpOworRVJST1I6ICBKU09OIHBhdGggZXhwcmVz c2lvbiBpbiBKU09OX1ZBTFVFIHNob3VsZCByZXR1cm4gc2luZ2xldG9uIHNjYWxhciBpdGVtCitT RUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnWzEsMl0nLCAnJFsqXScgREVGQVVMVCAnMCcgT04gRVJS T1IpOworIGpzb25fdmFsdWUgCistLS0tLS0tLS0tLS0KKyAwCisoMSByb3cpCisKK1NFTEVDVCBK U09OX1ZBTFVFKGpzb25iICdbIiAiXScsICckWypdJyBSRVRVUk5JTkcgaW50IEVSUk9SIE9OIEVS Uk9SKTsKK0VSUk9SOiAgaW52YWxpZCBpbnB1dCBzeW50YXggZm9yIHR5cGUgaW50ZWdlcjogIiAi CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnWyIgIl0nLCAnJFsqXScgUkVUVVJOSU5HIGludCBE RUZBVUxUIDIgKyAzIE9OIEVSUk9SKTsKKyBqc29uX3ZhbHVlIAorLS0tLS0tLS0tLS0tCisgICAg ICAgICAgNQorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnWyIxIl0nLCAnJFsq XScgUkVUVVJOSU5HIGludCBERUZBVUxUIDIgKyAzIE9OIEVSUk9SKTsKKyBqc29uX3ZhbHVlIAor LS0tLS0tLS0tLS0tCisgICAgICAgICAgMQorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9WQUxVRShq c29uYiAnWyIxIl0nLCAnJFsqXScgUkVUVVJOSU5HIGludCBGT1JNQVQgSlNPTik7IC0tIFJFVFVS TklORyBGT1JNQVQgbm90IGFsbG93ZWQKK0VSUk9SOiAgY2Fubm90IHNwZWNpZnkgRk9STUFUIGlu IFJFVFVSTklORyBjbGF1c2Ugb2YgSlNPTl9WQUxVRSgpCitMSU5FIDE6IC4uLkNUIEpTT05fVkFM VUUoanNvbmIgJ1siMSJdJywgJyRbKl0nIFJFVFVSTklORyBpbnQgRk9STUFUIEpTTy4uLgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IF4KKy0tIFJFVFVHTklORyBwc2V1ZG8tdHlwZXMgbm90IGFsbG93ZWQKK1NFTEVDVCBKU09OX1ZB TFVFKGpzb25iICdbIjEiXScsICckWypdJyBSRVRVUk5JTkcgcmVjb3JkKTsKK0VSUk9SOiAgcmV0 dXJuaW5nIHBzZXVkby10eXBlcyBpcyBub3Qgc3VwcG9ydGVkIGluIFNRTC9KU09OIGZ1bmN0aW9u cworU0VMRUNUCisJeCwKKwlKU09OX1ZBTFVFKAorCQlqc29uYiAneyJhIjogMSwgImIiOiAyfScs CisJCSckLiogPyAoQCA+ICR4KScgUEFTU0lORyB4IEFTIHgKKwkJUkVUVVJOSU5HIGludAorCQlE RUZBVUxUIC0xIE9OIEVNUFRZCisJCURFRkFVTFQgLTIgT04gRVJST1IKKwkpIHkKK0ZST00KKwln ZW5lcmF0ZV9zZXJpZXMoMCwgMikgeDsKKyB4IHwgeSAgCistLS0rLS0tLQorIDAgfCAtMgorIDEg fCAgMgorIDIgfCAtMQorKDMgcm93cykKKworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ251bGwn LCAnJGEnIFBBU1NJTkcgcG9pbnQgJyAoMSwgMiApJyBBUyBhKTsKKyBqc29uX3ZhbHVlIAorLS0t LS0tLS0tLS0tCisgKDEsMikKKygxIHJvdykKKworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ251 bGwnLCAnJGEnIFBBU1NJTkcgcG9pbnQgJyAoMSwgMiApJyBBUyBhIFJFVFVSTklORyBwb2ludCk7 CisganNvbl92YWx1ZSAKKy0tLS0tLS0tLS0tLQorICgxLDIpCisoMSByb3cpCisKK1NFTEVDVCBK U09OX1ZBTFVFKGpzb25iICdudWxsJywgJyRhJyBQQVNTSU5HIHBvaW50ICcgKDEsIDIgKScgQVMg YSBSRVRVUk5JTkcgcG9pbnQgRVJST1IgT04gRVJST1IpOworIGpzb25fdmFsdWUgCistLS0tLS0t LS0tLS0KKyAoMSwyKQorKDEgcm93KQorCistLSBUZXN0IFBBU1NJTkcgYW5kIFJFVFVSTklORyBk YXRlL3RpbWUgdHlwZXMKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICdudWxsJywgJyR0cycgUEFT U0lORyB0aW1lc3RhbXB0eiAnMjAxOC0wMi0yMSAxMjozNDo1NiArMTAnIEFTIHRzKTsKKyAgICAg ICAgICBqc29uX3ZhbHVlICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgVHVlIEZlYiAyMCAxODozNDo1NiAyMDE4IFBTVAorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9W QUxVRShqc29uYiAnbnVsbCcsICckdHMnIFBBU1NJTkcgdGltZXN0YW1wdHogJzIwMTgtMDItMjEg MTI6MzQ6NTYgKzEwJyBBUyB0cyBSRVRVUk5JTkcgdGltZXN0YW1wdHopOworICAgICAgICAgIGpz b25fdmFsdWUgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBUdWUg RmViIDIwIDE4OjM0OjU2IDIwMTggUFNUCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1ZBTFVFKGpz b25iICdudWxsJywgJyR0cycgUEFTU0lORyB0aW1lc3RhbXB0eiAnMjAxOC0wMi0yMSAxMjozNDo1 NiArMTAnIEFTIHRzIFJFVFVSTklORyB0aW1lc3RhbXApOworICAgICAgICBqc29uX3ZhbHVlICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgVHVlIEZlYiAyMCAxODozNDo1NiAy MDE4CisoMSByb3cpCisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICdudWxsJywgJyR0cycgUEFT U0lORyBkYXRlICcyMDE4LTAyLTIxIDEyOjM0OjU2ICsxMCcgQVMgdHMgUkVUVVJOSU5HIGRhdGUp OworIGpzb25fdmFsdWUgCistLS0tLS0tLS0tLS0KKyAwMi0yMS0yMDE4CisoMSByb3cpCisKK1NF TEVDVCBKU09OX1ZBTFVFKGpzb25iICdudWxsJywgJyR0cycgUEFTU0lORyB0aW1lICcyMDE4LTAy LTIxIDEyOjM0OjU2ICsxMCcgQVMgdHMgUkVUVVJOSU5HIHRpbWUpOworIGpzb25fdmFsdWUgCist LS0tLS0tLS0tLS0KKyAxMjozNDo1NgorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9WQUxVRShqc29u YiAnbnVsbCcsICckdHMnIFBBU1NJTkcgdGltZXR6ICcyMDE4LTAyLTIxIDEyOjM0OjU2ICsxMCcg QVMgdHMgUkVUVVJOSU5HIHRpbWV0eik7CisganNvbl92YWx1ZSAgCistLS0tLS0tLS0tLS0tCisg MTI6MzQ6NTYrMTAKKygxIHJvdykKKworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ251bGwnLCAn JHRzJyBQQVNTSU5HIHRpbWVzdGFtcCAnMjAxOC0wMi0yMSAxMjozNDo1NiArMTAnIEFTIHRzIFJF VFVSTklORyB0aW1lc3RhbXApOworICAgICAgICBqc29uX3ZhbHVlICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgV2VkIEZlYiAyMSAxMjozNDo1NiAyMDE4CisoMSByb3cpCisK Ky0tIEFsc28gdGVzdCBSRVRVUk5JTkcganNvbltiXQorU0VMRUNUIEpTT05fVkFMVUUoanNvbmIg J251bGwnLCAnJHRzJyBQQVNTSU5HIHRpbWVzdGFtcHR6ICcyMDE4LTAyLTIxIDEyOjM0OjU2ICsx MCcgQVMgdHMgUkVUVVJOSU5HIGpzb24pOworICAgICAgICAganNvbl92YWx1ZSAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIjIwMTgtMDItMjFUMDI6MzQ6NTYrMDA6 MDAiCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICdudWxsJywgJyR0cycgUEFT U0lORyB0aW1lc3RhbXB0eiAnMjAxOC0wMi0yMSAxMjozNDo1NiArMTAnIEFTIHRzIFJFVFVSTklO RyBqc29uYik7CisgICAgICAgICBqc29uX3ZhbHVlICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAiMjAxOC0wMi0yMVQwMjozNDo1NiswMDowMCIKKygxIHJvdykKKwor LS0gSlNPTl9RVUVSWQorLS0ganNvbiBhcmd1bWVudHMgY3VycmVudGx5IG5vdCBzdXBwb3J0ZWQK K1NFTEVDVCBKU09OX1FVRVJZKE5VTEwgRk9STUFUIEpTT04sICckJyk7CitFUlJPUjogIEpTT05f UVVFUlkoKSBpcyBub3QgeWV0IGltcGxlbWVudGVkIGZvciB0aGUganNvbiB0eXBlCitMSU5FIDE6 IFNFTEVDVCBKU09OX1FVRVJZKE5VTEwgRk9STUFUIEpTT04sICckJyk7CisgICAgICAgICAgICAg ICAgICAgICAgICAgIF4KK0hJTlQ6ICBUcnkgY2FzdGluZyB0aGUgYXJndW1lbnQgdG8ganNvbmIK K1NFTEVDVCBKU09OX1ZBTFVFKE5VTEw6Ompzb25iLCAnJCcpOworIGpzb25fdmFsdWUgCistLS0t LS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUCisJSlNPTl9RVUVSWShqcywgJyQnKSwKKwlK U09OX1FVRVJZKGpzLCAnJCcgV0lUSE9VVCBXUkFQUEVSKSwKKwlKU09OX1FVRVJZKGpzLCAnJCcg V0lUSCBDT05ESVRJT05BTCBXUkFQUEVSKSwKKwlKU09OX1FVRVJZKGpzLCAnJCcgV0lUSCBVTkNP TkRJVElPTkFMIEFSUkFZIFdSQVBQRVIpLAorCUpTT05fUVVFUlkoanMsICckJyBXSVRIIEFSUkFZ IFdSQVBQRVIpCitGUk9NCisJKFZBTFVFUworCQkoanNvbmIgJ251bGwnKSwKKwkJKCcxMi4zJyks CisJCSgndHJ1ZScpLAorCQkoJyJhYWEiJyksCisJCSgnWzEsIG51bGwsICIyIl0nKSwKKwkJKCd7 ImEiOiAxLCAiYiI6IFsyXX0nKQorCSkgZm9vKGpzKTsKKyAgICAganNvbl9xdWVyeSAgICAgfCAg ICAganNvbl9xdWVyeSAgICAgfCAgICAganNvbl9xdWVyeSAgICAgfCAgICAgIGpzb25fcXVlcnkg ICAgICB8ICAgICAganNvbl9xdWVyeSAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgbnVsbCAgICAgICAgICAgICAgIHwgbnVsbCAgICAg ICAgICAgICAgIHwgW251bGxdICAgICAgICAgICAgIHwgW251bGxdICAgICAgICAgICAgICAgfCBb bnVsbF0KKyAxMi4zICAgICAgICAgICAgICAgfCAxMi4zICAgICAgICAgICAgICAgfCBbMTIuM10g ICAgICAgICAgICAgfCBbMTIuM10gICAgICAgICAgICAgICB8IFsxMi4zXQorIHRydWUgICAgICAg ICAgICAgICB8IHRydWUgICAgICAgICAgICAgICB8IFt0cnVlXSAgICAgICAgICAgICB8IFt0cnVl XSAgICAgICAgICAgICAgIHwgW3RydWVdCisgImFhYSIgICAgICAgICAgICAgIHwgImFhYSIgICAg ICAgICAgICAgIHwgWyJhYWEiXSAgICAgICAgICAgIHwgWyJhYWEiXSAgICAgICAgICAgICAgfCBb ImFhYSJdCisgWzEsIG51bGwsICIyIl0gICAgIHwgWzEsIG51bGwsICIyIl0gICAgIHwgWzEsIG51 bGwsICIyIl0gICAgIHwgW1sxLCBudWxsLCAiMiJdXSAgICAgfCBbWzEsIG51bGwsICIyIl1dCisg eyJhIjogMSwgImIiOiBbMl19IHwgeyJhIjogMSwgImIiOiBbMl19IHwgeyJhIjogMSwgImIiOiBb Ml19IHwgW3siYSI6IDEsICJiIjogWzJdfV0gfCBbeyJhIjogMSwgImIiOiBbMl19XQorKDYgcm93 cykKKworU0VMRUNUCisJSlNPTl9RVUVSWShqcywgJ3N0cmljdCAkWypdJykgQVMgInVuc3BlYyIs CisJSlNPTl9RVUVSWShqcywgJ3N0cmljdCAkWypdJyBXSVRIT1VUIFdSQVBQRVIpIEFTICJ3aXRo b3V0IiwKKwlKU09OX1FVRVJZKGpzLCAnc3RyaWN0ICRbKl0nIFdJVEggQ09ORElUSU9OQUwgV1JB UFBFUikgQVMgIndpdGggY29uZCIsCisJSlNPTl9RVUVSWShqcywgJ3N0cmljdCAkWypdJyBXSVRI IFVOQ09ORElUSU9OQUwgQVJSQVkgV1JBUFBFUikgQVMgIndpdGggdW5jb25kIiwKKwlKU09OX1FV RVJZKGpzLCAnc3RyaWN0ICRbKl0nIFdJVEggQVJSQVkgV1JBUFBFUikgQVMgIndpdGgiCitGUk9N CisJKFZBTFVFUworCQkoanNvbmIgJzEnKSwKKwkJKCdbXScpLAorCQkoJ1tudWxsXScpLAorCQko J1sxMi4zXScpLAorCQkoJ1t0cnVlXScpLAorCQkoJ1siYWFhIl0nKSwKKwkJKCdbWzEsIDIsIDNd XScpLAorCQkoJ1t7ImEiOiAxLCAiYiI6IFsyXX1dJyksCisJCSgnWzEsICIyIiwgbnVsbCwgWzNd XScpCisJKSBmb28oanMpOworICAgICAgIHVuc3BlYyAgICAgICB8ICAgICAgd2l0aG91dCAgICAg ICB8ICAgICAgd2l0aCBjb25kICAgICAgfCAgICAgd2l0aCB1bmNvbmQgICAgICB8ICAgICAgICAg d2l0aCAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICB8ICAg ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICB8IAorICAgICAgICAgICAg ICAgICAgICB8ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfCAgICAg ICAgICAgICAgICAgICAgICB8IAorIG51bGwgICAgICAgICAgICAgICB8IG51bGwgICAgICAgICAg ICAgICB8IFtudWxsXSAgICAgICAgICAgICAgfCBbbnVsbF0gICAgICAgICAgICAgICB8IFtudWxs XQorIDEyLjMgICAgICAgICAgICAgICB8IDEyLjMgICAgICAgICAgICAgICB8IFsxMi4zXSAgICAg ICAgICAgICAgfCBbMTIuM10gICAgICAgICAgICAgICB8IFsxMi4zXQorIHRydWUgICAgICAgICAg ICAgICB8IHRydWUgICAgICAgICAgICAgICB8IFt0cnVlXSAgICAgICAgICAgICAgfCBbdHJ1ZV0g ICAgICAgICAgICAgICB8IFt0cnVlXQorICJhYWEiICAgICAgICAgICAgICB8ICJhYWEiICAgICAg ICAgICAgICB8IFsiYWFhIl0gICAgICAgICAgICAgfCBbImFhYSJdICAgICAgICAgICAgICB8IFsi YWFhIl0KKyBbMSwgMiwgM10gICAgICAgICAgfCBbMSwgMiwgM10gICAgICAgICAgfCBbMSwgMiwg M10gICAgICAgICAgIHwgW1sxLCAyLCAzXV0gICAgICAgICAgfCBbWzEsIDIsIDNdXQorIHsiYSI6 IDEsICJiIjogWzJdfSB8IHsiYSI6IDEsICJiIjogWzJdfSB8IHsiYSI6IDEsICJiIjogWzJdfSAg fCBbeyJhIjogMSwgImIiOiBbMl19XSB8IFt7ImEiOiAxLCAiYiI6IFsyXX1dCisgICAgICAgICAg ICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgIHwgWzEsICIyIiwgbnVsbCwgWzNdXSB8IFsx LCAiMiIsIG51bGwsIFszXV0gIHwgWzEsICIyIiwgbnVsbCwgWzNdXQorKDkgcm93cykKKworU0VM RUNUIEpTT05fUVVFUlkoanNvbmIgJyJhYWEiJywgJyQnIFJFVFVSTklORyB0ZXh0KTsKKyBqc29u X3F1ZXJ5IAorLS0tLS0tLS0tLS0tCisgImFhYSIKKygxIHJvdykKKworU0VMRUNUIEpTT05fUVVF UlkoanNvbmIgJyJhYWEiJywgJyQnIFJFVFVSTklORyB0ZXh0IEtFRVAgUVVPVEVTKTsKKyBqc29u X3F1ZXJ5IAorLS0tLS0tLS0tLS0tCisgImFhYSIKKygxIHJvdykKKworU0VMRUNUIEpTT05fUVVF UlkoanNvbmIgJyJhYWEiJywgJyQnIFJFVFVSTklORyB0ZXh0IEtFRVAgUVVPVEVTIE9OIFNDQUxB UiBTVFJJTkcpOworIGpzb25fcXVlcnkgCistLS0tLS0tLS0tLS0KKyAiYWFhIgorKDEgcm93KQor CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnImFhYSInLCAnJCcgUkVUVVJOSU5HIHRleHQgT01J VCBRVU9URVMpOworIGpzb25fcXVlcnkgCistLS0tLS0tLS0tLS0KKyBhYWEKKygxIHJvdykKKwor U0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJyJhYWEiJywgJyQnIFJFVFVSTklORyB0ZXh0IE9NSVQg UVVPVEVTIE9OIFNDQUxBUiBTVFJJTkcpOworIGpzb25fcXVlcnkgCistLS0tLS0tLS0tLS0KKyBh YWEKKygxIHJvdykKKworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJyJhYWEiJywgJyQnIE9NSVQg UVVPVEVTIEVSUk9SIE9OIEVSUk9SKTsKK0VSUk9SOiAgaW52YWxpZCBpbnB1dCBzeW50YXggZm9y IHR5cGUganNvbgorREVUQUlMOiAgVG9rZW4gImFhYSIgaXMgaW52YWxpZC4KK0NPTlRFWFQ6ICBK U09OIGRhdGEsIGxpbmUgMTogYWFhCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnImFhYSInLCAn JCcgUkVUVVJOSU5HIGpzb24gT01JVCBRVU9URVMgRVJST1IgT04gRVJST1IpOworRVJST1I6ICBp bnZhbGlkIGlucHV0IHN5bnRheCBmb3IgdHlwZSBqc29uCitERVRBSUw6ICBUb2tlbiAiYWFhIiBp cyBpbnZhbGlkLgorQ09OVEVYVDogIEpTT04gZGF0YSwgbGluZSAxOiBhYWEKK1NFTEVDVCBKU09O X1FVRVJZKGpzb25iICciYWFhIicsICckJyBSRVRVUk5JTkcgYnl0ZWEgRk9STUFUIEpTT04gT01J VCBRVU9URVMgRVJST1IgT04gRVJST1IpOworIGpzb25fcXVlcnkgCistLS0tLS0tLS0tLS0KKyBc eDYxNjE2MQorKDEgcm93KQorCistLSBCZWhhdmlvciB3aGVuIGEgUkVUVVJOSU5HIHR5cGUgaGFz IHR5cG1vZCAhPSAtMQorU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJyJhYWEiJywgJyQnIFJFVFVS TklORyBjaGFyKDIpKTsKKyBqc29uX3F1ZXJ5IAorLS0tLS0tLS0tLS0tCisgImEKKygxIHJvdykK KworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJyJhYWEiJywgJyQnIFJFVFVSTklORyBjaGFyKDIp IE9NSVQgUVVPVEVTKTsKKyBqc29uX3F1ZXJ5IAorLS0tLS0tLS0tLS0tCisgYWEKKygxIHJvdykK KworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJyJhYWEiJywgJyQuYScgUkVUVVJOSU5HIGNoYXIo MikgT01JVCBRVU9URVMgREVGQVVMVCAnYmJiJyBPTiBFTVBUWSk7CisganNvbl9xdWVyeSAKKy0t LS0tLS0tLS0tLQorIGJiCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICciYWFh IicsICckLmEnIFJFVFVSTklORyBjaGFyKDIpIE9NSVQgUVVPVEVTIERFRkFVTFQgJyJiYmIiJzo6 anNvbmIgT04gRU1QVFkpOworIGpzb25fcXVlcnkgCistLS0tLS0tLS0tLS0KKyAiYgorKDEgcm93 KQorCistLSBRVU9URVMgYmVoYXZpb3Igc2hvdWxkIG5vdCBiZSBzcGVjaWZpZWQgd2hlbiBXSVRI IFdSQVBQRVIgdXNlZDoKKy0tIFNob3VsZCBmYWlsCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAn WzFdJywgJyQnIFdJVEggV1JBUFBFUiBPTUlUIFFVT1RFUyk7CitFUlJPUjogIFNRTC9KU09OIFFV T1RFUyBiZWhhdmlvciBtdXN0IG5vdCBiZSBzcGVjaWZpZWQgd2hlbiBXSVRIIFdSQVBQRVIgaXMg dXNlZAorTElORSAxOiBTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnWzFdJywgJyQnIFdJVEggV1JB UFBFUiBPTUlUIFFVT1RFUykuLi4KKyAgICAgICAgICAgICAgIF4KK1NFTEVDVCBKU09OX1FVRVJZ KGpzb25iICdbMV0nLCAnJCcgV0lUSCBXUkFQUEVSIEtFRVAgUVVPVEVTKTsKK0VSUk9SOiAgU1FM L0pTT04gUVVPVEVTIGJlaGF2aW9yIG11c3Qgbm90IGJlIHNwZWNpZmllZCB3aGVuIFdJVEggV1JB UFBFUiBpcyB1c2VkCitMSU5FIDE6IFNFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMV0nLCAnJCcg V0lUSCBXUkFQUEVSIEtFRVAgUVVPVEVTKS4uLgorICAgICAgICAgICAgICAgXgorU0VMRUNUIEpT T05fUVVFUlkoanNvbmIgJ1sxXScsICckJyBXSVRIIENPTkRJVElPTkFMIFdSQVBQRVIgS0VFUCBR VU9URVMpOworRVJST1I6ICBTUUwvSlNPTiBRVU9URVMgYmVoYXZpb3IgbXVzdCBub3QgYmUgc3Bl Y2lmaWVkIHdoZW4gV0lUSCBXUkFQUEVSIGlzIHVzZWQKK0xJTkUgMTogU0VMRUNUIEpTT05fUVVF UlkoanNvbmIgJ1sxXScsICckJyBXSVRIIENPTkRJVElPTkFMIFdSQVBQRVIgLi4uCisgICAgICAg ICAgICAgICBeCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnWzFdJywgJyQnIFdJVEggQ09ORElU SU9OQUwgV1JBUFBFUiBPTUlUIFFVT1RFUyk7CitFUlJPUjogIFNRTC9KU09OIFFVT1RFUyBiZWhh dmlvciBtdXN0IG5vdCBiZSBzcGVjaWZpZWQgd2hlbiBXSVRIIFdSQVBQRVIgaXMgdXNlZAorTElO RSAxOiBTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnWzFdJywgJyQnIFdJVEggQ09ORElUSU9OQUwg V1JBUFBFUiAuLi4KKyAgICAgICAgICAgICAgIF4KKy0tIFNob3VsZCBzdWNjZWVkCitTRUxFQ1Qg SlNPTl9RVUVSWShqc29uYiAnWzFdJywgJyQnIFdJVEhPVVQgV1JBUFBFUiBPTUlUIFFVT1RFUyk7 CisganNvbl9xdWVyeSAKKy0tLS0tLS0tLS0tLQorIFsxXQorKDEgcm93KQorCitTRUxFQ1QgSlNP Tl9RVUVSWShqc29uYiAnWzFdJywgJyQnIFdJVEhPVVQgV1JBUFBFUiBLRUVQIFFVT1RFUyk7Cisg anNvbl9xdWVyeSAKKy0tLS0tLS0tLS0tLQorIFsxXQorKDEgcm93KQorCistLSB0ZXN0IFFVT1RF UyBiZWhhdmlvci4KK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iJ3sicmVjIjogInsxLDIsM30ifScs ICckLnJlYycgcmV0dXJuaW5nIGludFtdIG9taXQgcXVvdGVzKTsKKyBqc29uX3F1ZXJ5IAorLS0t LS0tLS0tLS0tCisgezEsMiwzfQorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYid7 InJlYyI6ICJ7MSwyLDN9In0nLCAnJC5yZWMnIHJldHVybmluZyBpbnRbXSBrZWVwIHF1b3Rlcyk7 CisganNvbl9xdWVyeSAKKy0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9R VUVSWShqc29uYid7InJlYyI6ICJ7MSwyLDN9In0nLCAnJC5yZWMnIHJldHVybmluZyBpbnRbXSBr ZWVwIHF1b3RlcyBlcnJvciBvbiBlcnJvcik7CitFUlJPUjogIGV4cGVjdGVkIEpTT04gYXJyYXkK K1NFTEVDVCBKU09OX1FVRVJZKGpzb25iJ3sicmVjIjogIlsxLDJdIn0nLCAnJC5yZWMnIHJldHVy bmluZyBpbnQ0cmFuZ2Ugb21pdCBxdW90ZXMpOworIGpzb25fcXVlcnkgCistLS0tLS0tLS0tLS0K KyBbMSwzKQorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYid7InJlYyI6ICJbMSwy XSJ9JywgJyQucmVjJyByZXR1cm5pbmcgaW50NHJhbmdlIGtlZXAgcXVvdGVzKTsKKyBqc29uX3F1 ZXJ5IAorLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25i J3sicmVjIjogIlsxLDJdIn0nLCAnJC5yZWMnIAlyZXR1cm5pbmcgaW50NHJhbmdlIGtlZXAgcXVv dGVzIGVycm9yIG9uIGVycm9yKTsKK0VSUk9SOiAgbWFsZm9ybWVkIHJhbmdlIGxpdGVyYWw6ICIi WzEsMl0iIgorREVUQUlMOiAgTWlzc2luZyBsZWZ0IHBhcmVudGhlc2lzIG9yIGJyYWNrZXQuCitT RUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnW10nLCAnJFsqXScpOworIGpzb25fcXVlcnkgCistLS0t LS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1tdJywgJyRb Kl0nIE5VTEwgT04gRU1QVFkpOworIGpzb25fcXVlcnkgCistLS0tLS0tLS0tLS0KKyAKKygxIHJv dykKKworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1tdJywgJyRbKl0nIEVNUFRZIE9OIEVNUFRZ KTsKKyBqc29uX3F1ZXJ5IAorLS0tLS0tLS0tLS0tCisgW10KKygxIHJvdykKKworU0VMRUNUIEpT T05fUVVFUlkoanNvbmIgJ1tdJywgJyRbKl0nIEVNUFRZIEFSUkFZIE9OIEVNUFRZKTsKKyBqc29u X3F1ZXJ5IAorLS0tLS0tLS0tLS0tCisgW10KKygxIHJvdykKKworU0VMRUNUIEpTT05fUVVFUlko anNvbmIgJ1tdJywgJyRbKl0nIEVNUFRZIE9CSkVDVCBPTiBFTVBUWSk7CisganNvbl9xdWVyeSAK Ky0tLS0tLS0tLS0tLQorIHt9CisoMSByb3cpCisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdb XScsICckWypdJyBFUlJPUiBPTiBFTVBUWSk7CitFUlJPUjogIG5vIFNRTC9KU09OIGl0ZW0KK1NF TEVDVCBKU09OX1FVRVJZKGpzb25iICdbXScsICckWypdJyBERUZBVUxUICciZW1wdHkiJyBPTiBF TVBUWSk7CisganNvbl9xdWVyeSAKKy0tLS0tLS0tLS0tLQorICJlbXB0eSIKKygxIHJvdykKKwor U0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1tdJywgJyRbKl0nIEVSUk9SIE9OIEVNUFRZIE5VTEwg T04gRVJST1IpOworRVJST1I6ICBubyBTUUwvSlNPTiBpdGVtCitTRUxFQ1QgSlNPTl9RVUVSWShq c29uYiAnW10nLCAnJFsqXScgRVJST1IgT04gRU1QVFkgRU1QVFkgQVJSQVkgT04gRVJST1IpOwor RVJST1I6ICBubyBTUUwvSlNPTiBpdGVtCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnW10nLCAn JFsqXScgRVJST1IgT04gRU1QVFkgRU1QVFkgT0JKRUNUIE9OIEVSUk9SKTsKK0VSUk9SOiAgbm8g U1FML0pTT04gaXRlbQorU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1tdJywgJyRbKl0nIEVSUk9S IE9OIEVNUFRZIEVSUk9SIE9OIEVSUk9SKTsKK0VSUk9SOiAgbm8gU1FML0pTT04gaXRlbQorU0VM RUNUIEpTT05fUVVFUlkoanNvbmIgJ1tdJywgJyRbKl0nIEVSUk9SIE9OIEVSUk9SKTsKK0VSUk9S OiAgbm8gU1FML0pTT04gaXRlbQorU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sxLDJdJywgJyRb Kl0nIEVSUk9SIE9OIEVSUk9SKTsKK0VSUk9SOiAgSlNPTiBwYXRoIGV4cHJlc3Npb24gaW4gSlNP Tl9RVUVSWSBzaG91bGQgcmV0dXJuIHNpbmdsZXRvbiBpdGVtIHdpdGhvdXQgd3JhcHBlcgorSElO VDogIFVzZSBXSVRIIFdSQVBQRVIgY2xhdXNlIHRvIHdyYXAgU1FML0pTT04gaXRlbSBzZXF1ZW5j ZSBpbnRvIGFycmF5LgorU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sxLDJdJywgJyRbKl0nIERF RkFVTFQgJyJlbXB0eSInIE9OIEVSUk9SKTsKKyBqc29uX3F1ZXJ5IAorLS0tLS0tLS0tLS0tCisg ImVtcHR5IgorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnWzEsMl0nLCAnJCcg UkVUVVJOSU5HIGpzb24pOworIGpzb25fcXVlcnkgCistLS0tLS0tLS0tLS0KKyBbMSwgMl0KKygx IHJvdykKKworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sxLDJdJywgJyQnIFJFVFVSTklORyBq c29uIEZPUk1BVCBKU09OKTsKKyBqc29uX3F1ZXJ5IAorLS0tLS0tLS0tLS0tCisgWzEsIDJdCiso MSByb3cpCisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMSwyXScsICckJyBSRVRVUk5JTkcg anNvbmIpOworIGpzb25fcXVlcnkgCistLS0tLS0tLS0tLS0KKyBbMSwgMl0KKygxIHJvdykKKwor U0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sxLDJdJywgJyQnIFJFVFVSTklORyBqc29uYiBGT1JN QVQgSlNPTik7CisganNvbl9xdWVyeSAKKy0tLS0tLS0tLS0tLQorIFsxLCAyXQorKDEgcm93KQor CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnWzEsMl0nLCAnJCcgUkVUVVJOSU5HIHRleHQpOwor IGpzb25fcXVlcnkgCistLS0tLS0tLS0tLS0KKyBbMSwgMl0KKygxIHJvdykKKworU0VMRUNUIEpT T05fUVVFUlkoanNvbmIgJ1sxLDJdJywgJyQnIFJFVFVSTklORyBjaGFyKDEwKSk7CisganNvbl9x dWVyeSAKKy0tLS0tLS0tLS0tLQorIFsxLCAyXSAgICAKKygxIHJvdykKKworU0VMRUNUIEpTT05f UVVFUlkoanNvbmIgJ1sxLDJdJywgJyQnIFJFVFVSTklORyBjaGFyKDMpKTsKKyBqc29uX3F1ZXJ5 IAorLS0tLS0tLS0tLS0tCisgWzEsCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25i ICdbMSwyXScsICckJyBSRVRVUk5JTkcgdGV4dCBGT1JNQVQgSlNPTik7CisganNvbl9xdWVyeSAK Ky0tLS0tLS0tLS0tLQorIFsxLCAyXQorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9RVUVSWShqc29u YiAnWzEsMl0nLCAnJCcgUkVUVVJOSU5HIGJ5dGVhKTsKKyAgIGpzb25fcXVlcnkgICAKKy0tLS0t LS0tLS0tLS0tLS0KKyBceDViMzEyYzIwMzI1ZAorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9RVUVS WShqc29uYiAnWzEsMl0nLCAnJCcgUkVUVVJOSU5HIGJ5dGVhIEZPUk1BVCBKU09OKTsKKyAgIGpz b25fcXVlcnkgICAKKy0tLS0tLS0tLS0tLS0tLS0KKyBceDViMzEyYzIwMzI1ZAorKDEgcm93KQor CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnWzEsMl0nLCAnJFsqXScgUkVUVVJOSU5HIGJ5dGVh IEVNUFRZIE9CSkVDVCBPTiBFUlJPUik7CitFUlJPUjogIGNhbm5vdCBjYXN0IGJlaGF2aW9yIGV4 cHJlc3Npb24gb2YgdHlwZSBqc29uYiB0byBieXRlYQorTElORSAxOiAuLi4gSlNPTl9RVUVSWShq c29uYiAnWzEsMl0nLCAnJFsqXScgUkVUVVJOSU5HIGJ5dGVhIEVNUFRZIE9CSkUuLi4KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBe CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnWzEsMl0nLCAnJFsqXScgUkVUVVJOSU5HIGJ5dGVh IEZPUk1BVCBKU09OIEVNUFRZIE9CSkVDVCBPTiBFUlJPUik7CitFUlJPUjogIGNhbm5vdCBjYXN0 IGJlaGF2aW9yIGV4cHJlc3Npb24gb2YgdHlwZSBqc29uYiB0byBieXRlYQorTElORSAxOiAuLi5q c29uYiAnWzEsMl0nLCAnJFsqXScgUkVUVVJOSU5HIGJ5dGVhIEZPUk1BVCBKU09OIEVNUFRZIE9C SkUuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBeCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnWzEsMl0nLCAnJFsqXScgUkVU VVJOSU5HIGpzb24gRU1QVFkgT0JKRUNUIE9OIEVSUk9SKTsKKyBqc29uX3F1ZXJ5IAorLS0tLS0t LS0tLS0tCisge30KKygxIHJvdykKKworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sxLDJdJywg JyRbKl0nIFJFVFVSTklORyBqc29uYiBFTVBUWSBPQkpFQ1QgT04gRVJST1IpOworIGpzb25fcXVl cnkgCistLS0tLS0tLS0tLS0KKyB7fQorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9RVUVSWShqc29u YiAnWzMsNF0nLCAnJFsqXScgUkVUVVJOSU5HIGJpZ2ludFtdIEVNUFRZIE9CSkVDVCBPTiBFUlJP Uik7CitFUlJPUjogIGNhbm5vdCBjYXN0IGJlaGF2aW9yIGV4cHJlc3Npb24gb2YgdHlwZSBqc29u YiB0byBiaWdpbnRbXQorTElORSAxOiAuLi5PTl9RVUVSWShqc29uYiAnWzMsNF0nLCAnJFsqXScg UkVUVVJOSU5HIGJpZ2ludFtdIEVNUFRZIE9CSkUuLi4KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitTRUxFQ1QgSlNPTl9RVUVS WShqc29uYiAnIlszLDRdIicsICckWypdJyBSRVRVUk5JTkcgYmlnaW50W10gRU1QVFkgT0JKRUNU IE9OIEVSUk9SKTsKK0VSUk9SOiAgY2Fubm90IGNhc3QgYmVoYXZpb3IgZXhwcmVzc2lvbiBvZiB0 eXBlIGpzb25iIHRvIGJpZ2ludFtdCitMSU5FIDE6IC4uLl9RVUVSWShqc29uYiAnIlszLDRdIics ICckWypdJyBSRVRVUk5JTkcgYmlnaW50W10gRU1QVFkgT0JKRS4uLgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIENvZXJj aW9uIGZhaWxzIHdpdGggcXVvdGVzIG9uCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnIjEyMy4x IicsICckJyBSRVRVUk5JTkcgaW50MiBlcnJvciBvbiBlcnJvcik7CitFUlJPUjogIGludmFsaWQg aW5wdXQgc3ludGF4IGZvciB0eXBlIHNtYWxsaW50OiAiIjEyMy4xIiIKK1NFTEVDVCBKU09OX1FV RVJZKGpzb25iICciMTIzLjEiJywgJyQnIFJFVFVSTklORyBpbnQ0IGVycm9yIG9uIGVycm9yKTsK K0VSUk9SOiAgaW52YWxpZCBpbnB1dCBzeW50YXggZm9yIHR5cGUgaW50ZWdlcjogIiIxMjMuMSIi CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnIjEyMy4xIicsICckJyBSRVRVUk5JTkcgaW50OCBl cnJvciBvbiBlcnJvcik7CitFUlJPUjogIGludmFsaWQgaW5wdXQgc3ludGF4IGZvciB0eXBlIGJp Z2ludDogIiIxMjMuMSIiCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnIjEyMy4xIicsICckJyBS RVRVUk5JTkcgYm9vbCBlcnJvciBvbiBlcnJvcik7CitFUlJPUjogIGludmFsaWQgaW5wdXQgc3lu dGF4IGZvciB0eXBlIGJvb2xlYW46ICIiMTIzLjEiIgorU0VMRUNUIEpTT05fUVVFUlkoanNvbmIg JyIxMjMuMSInLCAnJCcgUkVUVVJOSU5HIG51bWVyaWMgZXJyb3Igb24gZXJyb3IpOworRVJST1I6 ICBpbnZhbGlkIGlucHV0IHN5bnRheCBmb3IgdHlwZSBudW1lcmljOiAiIjEyMy4xIiIKK1NFTEVD VCBKU09OX1FVRVJZKGpzb25iICciMTIzLjEiJywgJyQnIFJFVFVSTklORyByZWFsIGVycm9yIG9u IGVycm9yKTsKK0VSUk9SOiAgaW52YWxpZCBpbnB1dCBzeW50YXggZm9yIHR5cGUgcmVhbDogIiIx MjMuMSIiCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnIjEyMy4xIicsICckJyBSRVRVUk5JTkcg ZmxvYXQ4IGVycm9yIG9uIGVycm9yKTsKK0VSUk9SOiAgaW52YWxpZCBpbnB1dCBzeW50YXggZm9y IHR5cGUgZG91YmxlIHByZWNpc2lvbjogIiIxMjMuMSIiCistLSBGaW5lIHdpdGggT01JVCBRVU9U RVMKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICciMTIzLjEiJywgJyQnIFJFVFVSTklORyBpbnQy IG9taXQgcXVvdGVzIGVycm9yIG9uIGVycm9yKTsKK0VSUk9SOiAgaW52YWxpZCBpbnB1dCBzeW50 YXggZm9yIHR5cGUgc21hbGxpbnQ6ICIxMjMuMSIKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICci MTIzLjEiJywgJyQnIFJFVFVSTklORyBmbG9hdDggb21pdCBxdW90ZXMgZXJyb3Igb24gZXJyb3Ip OworIGpzb25fcXVlcnkgCistLS0tLS0tLS0tLS0KKyAgICAgIDEyMy4xCisoMSByb3cpCisKKy0t IFJFVFVHTklORyBwc2V1ZG8tdHlwZXMgbm90IGFsbG93ZWQKK1NFTEVDVCBKU09OX1FVRVJZKGpz b25iICdbMyw0XScsICckWypdJyBSRVRVUk5JTkcgYW55YXJyYXkgRU1QVFkgT0JKRUNUIE9OIEVS Uk9SKTsKK0VSUk9SOiAgcmV0dXJuaW5nIHBzZXVkby10eXBlcyBpcyBub3Qgc3VwcG9ydGVkIGlu IFNRTC9KU09OIGZ1bmN0aW9ucworU0VMRUNUCisJeCwgeSwKKwlKU09OX1FVRVJZKAorCQlqc29u YiAnWzEsMiwzLDQsNSxudWxsXScsCisJCSckWypdID8gKEAgPj0gJHggJiYgQCA8PSAkeSknCisJ CVBBU1NJTkcgeCBBUyB4LCB5IEFTIHkKKwkJV0lUSCBDT05ESVRJT05BTCBXUkFQUEVSCisJCUVN UFRZIEFSUkFZIE9OIEVNUFRZCisJKSBsaXN0CitGUk9NCisJZ2VuZXJhdGVfc2VyaWVzKDAsIDQp IHgsCisJZ2VuZXJhdGVfc2VyaWVzKDAsIDQpIHk7CisgeCB8IHkgfCAgICAgbGlzdCAgICAgCist LS0rLS0tKy0tLS0tLS0tLS0tLS0tCisgMCB8IDAgfCBbXQorIDAgfCAxIHwgWzFdCisgMCB8IDIg fCBbMSwgMl0KKyAwIHwgMyB8IFsxLCAyLCAzXQorIDAgfCA0IHwgWzEsIDIsIDMsIDRdCisgMSB8 IDAgfCBbXQorIDEgfCAxIHwgWzFdCisgMSB8IDIgfCBbMSwgMl0KKyAxIHwgMyB8IFsxLCAyLCAz XQorIDEgfCA0IHwgWzEsIDIsIDMsIDRdCisgMiB8IDAgfCBbXQorIDIgfCAxIHwgW10KKyAyIHwg MiB8IFsyXQorIDIgfCAzIHwgWzIsIDNdCisgMiB8IDQgfCBbMiwgMywgNF0KKyAzIHwgMCB8IFtd CisgMyB8IDEgfCBbXQorIDMgfCAyIHwgW10KKyAzIHwgMyB8IFszXQorIDMgfCA0IHwgWzMsIDRd CisgNCB8IDAgfCBbXQorIDQgfCAxIHwgW10KKyA0IHwgMiB8IFtdCisgNCB8IDMgfCBbXQorIDQg fCA0IHwgWzRdCisoMjUgcm93cykKKworLS0gcmVjb3JkIHR5cGUgcmV0dXJuaW5nIHdpdGggcXVv dGVzIGJlaGF2aW9yLgorQ1JFQVRFIFRZUEUgY29tcF9hYmMgQVMgKGEgdGV4dCwgYiBpbnQsIGMg dGltZXN0YW1wKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iJ3sicmVjIjogIihhYmMsNDIsMDEu MDIuMjAwMykifScsICckLnJlYycgcmV0dXJuaW5nIGNvbXBfYWJjIG9taXQgcXVvdGVzKTsKKyAg ICAgICAgICAgICBqc29uX3F1ZXJ5ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAoYWJjLDQyLCJUaHUgSmFuIDAyIDAwOjAwOjAwIDIwMDMiKQor KDEgcm93KQorCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYid7InJlYyI6ICIoYWJjLDQyLDAxLjAy LjIwMDMpIn0nLCAnJC5yZWMnIHJldHVybmluZyBjb21wX2FiYyBrZWVwIHF1b3Rlcyk7CisganNv bl9xdWVyeSAKKy0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9RVUVSWShq c29uYid7InJlYyI6ICIoYWJjLDQyLDAxLjAyLjIwMDMpIn0nLCAnJC5yZWMnIHJldHVybmluZyBj b21wX2FiYyBrZWVwIHF1b3RlcyBlcnJvciBvbiBlcnJvcik7CitFUlJPUjogIGNhbm5vdCBjYWxs IHBvcHVsYXRlX2NvbXBvc2l0ZSBvbiBhIHNjYWxhcgorRFJPUCBUWVBFIGNvbXBfYWJjOworLS0g RXh0ZW5zaW9uOiByZWNvcmQgdHlwZXMgcmV0dXJuaW5nCitDUkVBVEUgVFlQRSBzcWxqc29uYl9y ZWMgQVMgKGEgaW50LCB0IHRleHQsIGpzIGpzb24sIGpiIGpzb25iLCBqc2EganNvbltdKTsKK0NS RUFURSBUWVBFIHNxbGpzb25iX3JlY2EgQVMgKHJlY2Egc3FsanNvbmJfcmVjW10pOworU0VMRUNU IEpTT05fUVVFUlkoanNvbmIgJ1t7ImEiOiAxLCAiYiI6ICJmb28iLCAidCI6ICJhYWEiLCAianMi OiBbMSwgIjIiLCB7fV0sICJqYiI6IHsieCI6IFsxLCAiMiIsIHt9XX19LCAgeyJhIjogMn1dJywg JyRbMF0nIFJFVFVSTklORyBzcWxqc29uYl9yZWMpOworICAgICAgICAgICAgICAgICAgICAganNv bl9xdWVyeSAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKDEsYWFhLCJbMSwgIiIyIiIsIHt9XSIsInsi IngiIjogWzEsICIiMiIiLCB7fV19IiwpCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1FVRVJZKGpz b25iICdbeyJhIjogImEiLCAiYiI6ICJmb28iLCAidCI6ICJhYWEiLCAianMiOiBbMSwgIjIiLCB7 fV0sICJqYiI6IHsieCI6IFsxLCAiMiIsIHt9XX19LCAgeyJhIjogMn1dJywgJyRbMF0nIFJFVFVS TklORyBzcWxqc29uYl9yZWMgRVJST1IgT04gRVJST1IpOworRVJST1I6ICBpbnZhbGlkIGlucHV0 IHN5bnRheCBmb3IgdHlwZSBpbnRlZ2VyOiAiYSIKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdb eyJhIjogImEiLCAiYiI6ICJmb28iLCAidCI6ICJhYWEiLCAianMiOiBbMSwgIjIiLCB7fV0sICJq YiI6IHsieCI6IFsxLCAiMiIsIHt9XX19LCAgeyJhIjogMn1dJywgJyRbMF0nIFJFVFVSTklORyBz cWxqc29uYl9yZWMpOworIGpzb25fcXVlcnkgCistLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKwor U0VMRUNUICogRlJPTSB1bm5lc3QoKEpTT05fUVVFUlkoanNvbmIgJ3sianNhIjogIFt7ImEiOiAx LCAiYiI6IFsiZm9vIl19LCB7ImEiOiAyLCAiYyI6IHt9fSwgMTIzXX0nLCAnJCcgUkVUVVJOSU5H IHNxbGpzb25iX3JlYykpLmpzYSk7CisgICAgICAgICB1bm5lc3QgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIHsiYSI6IDEsICJiIjogWyJmb28iXX0KKyB7ImEiOiAyLCAiYyI6 IHt9fQorIDEyMworKDMgcm93cykKKworU0VMRUNUICogRlJPTSB1bm5lc3QoKEpTT05fUVVFUlko anNvbmIgJ3sicmVjYSI6IFt7ImEiOiAxLCAidCI6IFsiZm9vIiwgW11dfSwgeyJhIjogMiwgImpi IjogW3t9LCB0cnVlXX1dfScsICckJyBSRVRVUk5JTkcgc3FsanNvbmJfcmVjYSkpLnJlY2EpOwor IGEgfCAgICAgIHQgICAgICB8IGpzIHwgICAgIGpiICAgICB8IGpzYSAKKy0tLSstLS0tLS0tLS0t LS0tKy0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tCisgMSB8IFsiZm9vIiwgW11dIHwgICAgfCAgICAg ICAgICAgIHwgCisgMiB8ICAgICAgICAgICAgIHwgICAgfCBbe30sIHRydWVdIHwgCisoMiByb3dz KQorCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnW3siYSI6IDEsICJiIjogImZvbyIsICJ0Ijog ImFhYSIsICJqcyI6IFsxLCAiMiIsIHt9XSwgImpiIjogeyJ4IjogWzEsICIyIiwge31dfX0sICB7 ImEiOiAyfV0nLCAnJFswXScgUkVUVVJOSU5HIGpzb25wYXRoKTsKKyBqc29uX3F1ZXJ5IAorLS0t LS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbeyJhIjog MSwgImIiOiAiZm9vIiwgInQiOiAiYWFhIiwgImpzIjogWzEsICIyIiwge31dLCAiamIiOiB7Ingi OiBbMSwgIjIiLCB7fV19fSwgIHsiYSI6IDJ9XScsICckWzBdJyBSRVRVUk5JTkcganNvbnBhdGgg RVJST1IgT04gRVJST1IpOworRVJST1I6ICBzeW50YXggZXJyb3IgYXQgb3IgbmVhciAieyIgb2Yg anNvbnBhdGggaW5wdXQKKy0tIEV4dGVuc2lvbjogYXJyYXkgdHlwZXMgcmV0dXJuaW5nCitTRUxF Q1QgSlNPTl9RVUVSWShqc29uYiAnWzEsMixudWxsLCIzIl0nLCAnJFsqXScgUkVUVVJOSU5HIGlu dFtdIFdJVEggV1JBUFBFUik7CisgIGpzb25fcXVlcnkgIAorLS0tLS0tLS0tLS0tLS0KKyB7MSwy LE5VTEwsM30KKygxIHJvdykKKworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sxLDIsbnVsbCwi YSJdJywgJyRbKl0nIFJFVFVSTklORyBpbnRbXSBXSVRIIFdSQVBQRVIgRVJST1IgT04gRVJST1Ip OworRVJST1I6ICBpbnZhbGlkIGlucHV0IHN5bnRheCBmb3IgdHlwZSBpbnRlZ2VyOiAiYSIKK1NF TEVDVCBKU09OX1FVRVJZKGpzb25iICdbMSwyLG51bGwsImEiXScsICckWypdJyBSRVRVUk5JTkcg aW50W10gV0lUSCBXUkFQUEVSKTsKKyBqc29uX3F1ZXJ5IAorLS0tLS0tLS0tLS0tCisgCisoMSBy b3cpCisKK1NFTEVDVCAqIEZST00gdW5uZXN0KEpTT05fUVVFUlkoanNvbmIgJ1t7ImEiOiAxLCAi dCI6IFsiZm9vIiwgW11dfSwgeyJhIjogMiwgImpiIjogW3t9LCB0cnVlXX1dJywgJyQnIFJFVFVS TklORyBzcWxqc29uYl9yZWNbXSkpOworIGEgfCAgICAgIHQgICAgICB8IGpzIHwgICAgIGpiICAg ICB8IGpzYSAKKy0tLSstLS0tLS0tLS0tLS0tKy0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tCisgMSB8 IFsiZm9vIiwgW11dIHwgICAgfCAgICAgICAgICAgIHwgCisgMiB8ICAgICAgICAgICAgIHwgICAg fCBbe30sIHRydWVdIHwgCisoMiByb3dzKQorCistLSBFeHRlbnNpb246IGRvbWFpbiB0eXBlcyBy ZXR1cm5pbmcKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICd7ImEiOiAxfScsICckLmEnIFJFVFVS TklORyBzcWxqc29uYl9pbnRfbm90X251bGwpOworIGpzb25fcXVlcnkgCistLS0tLS0tLS0tLS0K KyAgICAgICAgICAxCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICd7ImEiOiAx fScsICckLmInIFJFVFVSTklORyBzcWxqc29uYl9pbnRfbm90X251bGwpOworIGpzb25fcXVlcnkg CistLS0tLS0tLS0tLS0KKyAgICAgICAgICAgCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1FVRVJZ KGpzb25iICd7ImEiOiAxfScsICckLmInIFJFVFVSTklORyBzcWxqc29uYl9pbnRfbm90X251bGwg RVJST1IgT04gRVJST1IpOworRVJST1I6ICBubyBTUUwvSlNPTiBpdGVtCistLSBUZXN0IHRpbWVz dGFtcHR6IHBhc3NpbmcgYW5kIG91dHB1dAorU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ251bGwn LCAnJHRzJyBQQVNTSU5HIHRpbWVzdGFtcHR6ICcyMDE4LTAyLTIxIDEyOjM0OjU2ICsxMCcgQVMg dHMpOworICAgICAgICAganNvbl9xdWVyeSAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgIjIwMTgtMDItMjFUMDI6MzQ6NTYrMDA6MDAiCisoMSByb3cpCisKK1NFTEVD VCBKU09OX1FVRVJZKGpzb25iICdudWxsJywgJyR0cycgUEFTU0lORyB0aW1lc3RhbXB0eiAnMjAx OC0wMi0yMSAxMjozNDo1NiArMTAnIEFTIHRzIFJFVFVSTklORyBqc29uKTsKKyAgICAgICAgIGpz b25fcXVlcnkgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICIyMDE4 LTAyLTIxVDAyOjM0OjU2KzAwOjAwIgorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9RVUVSWShqc29u YiAnbnVsbCcsICckdHMnIFBBU1NJTkcgdGltZXN0YW1wdHogJzIwMTgtMDItMjEgMTI6MzQ6NTYg KzEwJyBBUyB0cyBSRVRVUk5JTkcganNvbmIpOworICAgICAgICAganNvbl9xdWVyeSAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIjIwMTgtMDItMjFUMDI6MzQ6NTYr MDA6MDAiCisoMSByb3cpCisKKy0tIFRlc3QgY29uc3RyYWludHMKK0NSRUFURSBUQUJMRSB0ZXN0 X2pzb25iX2NvbnN0cmFpbnRzICgKKwlqcyB0ZXh0LAorCWkgaW50LAorCXgganNvbmIgREVGQVVM VCBKU09OX1FVRVJZKGpzb25iICdbMSwyXScsICckWypdJyBXSVRIIFdSQVBQRVIpCisJQ09OU1RS QUlOVCB0ZXN0X2pzb25iX2NvbnN0cmFpbnQxCisJCUNIRUNLIChqcyBJUyBKU09OKQorCUNPTlNU UkFJTlQgdGVzdF9qc29uYl9jb25zdHJhaW50MgorCQlDSEVDSyAoSlNPTl9FWElTVFMoanM6Ompz b25iLCAnJC5hJyBQQVNTSU5HIGkgKyA1IEFTIGludCwgaTo6dGV4dCBBUyB0eHQsIGFycmF5WzEs MiwzXSBhcyBhcnIpKQorCUNPTlNUUkFJTlQgdGVzdF9qc29uYl9jb25zdHJhaW50MworCQlDSEVD SyAoSlNPTl9WQUxVRShqczo6anNvbmIsICckLmEnIFJFVFVSTklORyBpbnQgREVGQVVMVCAnMTIn IE9OIEVNUFRZIEVSUk9SIE9OIEVSUk9SKSA+IGkpCisJQ09OU1RSQUlOVCB0ZXN0X2pzb25iX2Nv bnN0cmFpbnQ0CisJCUNIRUNLIChKU09OX1FVRVJZKGpzOjpqc29uYiwgJyQuYScgV0lUSCBDT05E SVRJT05BTCBXUkFQUEVSIEVNUFRZIE9CSkVDVCBPTiBFUlJPUikgPCBqc29uYiAnWzEwXScpCisJ Q09OU1RSQUlOVCB0ZXN0X2pzb25iX2NvbnN0cmFpbnQ1CisJCUNIRUNLIChKU09OX1FVRVJZKGpz Ojpqc29uYiwgJyQuYScgUkVUVVJOSU5HIGNoYXIoNSkgT01JVCBRVU9URVMgRU1QVFkgQVJSQVkg T04gRU1QVFkpID4gICdhJyBDT0xMQVRFICJDIikKKyk7CitcZCB0ZXN0X2pzb25iX2NvbnN0cmFp bnRzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUYWJsZSAicHVi bGljLnRlc3RfanNvbmJfY29uc3RyYWludHMiCisgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlv biB8IE51bGxhYmxlIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBqcyAgICAg fCB0ZXh0ICAgIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKKyBpICAgICAgfCBpbnRlZ2VyIHwg ICAgICAgICAgIHwgICAgICAgICAgfCAKKyB4ICAgICAgfCBqc29uYiAgIHwgICAgICAgICAgIHwg ICAgICAgICAgfCBKU09OX1FVRVJZKCdbMSwgMl0nOjpqc29uYiwgJyRbKl0nIFJFVFVSTklORyBq c29uYiBXSVRIIFVOQ09ORElUSU9OQUwgV1JBUFBFUikKK0NoZWNrIGNvbnN0cmFpbnRzOgorICAg ICJ0ZXN0X2pzb25iX2NvbnN0cmFpbnQxIiBDSEVDSyAoanMgSVMgSlNPTikKKyAgICAidGVzdF9q c29uYl9jb25zdHJhaW50MiIgQ0hFQ0sgKEpTT05fRVhJU1RTKGpzOjpqc29uYiwgJyQuImEiJyBQ QVNTSU5HIGkgKyA1IEFTIGludCwgaTo6dGV4dCBBUyB0eHQsIEFSUkFZWzEsIDIsIDNdIEFTIGFy cikpCisgICAgInRlc3RfanNvbmJfY29uc3RyYWludDMiIENIRUNLIChKU09OX1ZBTFVFKGpzOjpq c29uYiwgJyQuImEiJyBSRVRVUk5JTkcgaW50ZWdlciBERUZBVUxUIDEyIE9OIEVNUFRZIEVSUk9S IE9OIEVSUk9SKSA+IGkpCisgICAgInRlc3RfanNvbmJfY29uc3RyYWludDQiIENIRUNLIChKU09O X1FVRVJZKGpzOjpqc29uYiwgJyQuImEiJyBSRVRVUk5JTkcganNvbmIgV0lUSCBDT05ESVRJT05B TCBXUkFQUEVSIEVNUFRZIE9CSkVDVCBPTiBFUlJPUikgPCAnWzEwXSc6Ompzb25iKQorICAgICJ0 ZXN0X2pzb25iX2NvbnN0cmFpbnQ1IiBDSEVDSyAoSlNPTl9RVUVSWShqczo6anNvbmIsICckLiJh IicgUkVUVVJOSU5HIGNoYXJhY3Rlcig1KSBPTUlUIFFVT1RFUyBFTVBUWSBBUlJBWSBPTiBFTVBU WSkgPiAoJ2EnOjpicGNoYXIgQ09MTEFURSAiQyIpKQorCitTRUxFQ1QgY2hlY2tfY2xhdXNlCitG Uk9NIGluZm9ybWF0aW9uX3NjaGVtYS5jaGVja19jb25zdHJhaW50cworV0hFUkUgY29uc3RyYWlu dF9uYW1lIExJS0UgJ3Rlc3RfanNvbmJfY29uc3RyYWludCUnCitPUkRFUiBCWSAxOworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tfY2xh dXNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAoSlNPTl9RVUVSWSgoanMpOjpqc29uYiwgJyQuImEiJyBSRVRVUk5JTkcgY2hh cmFjdGVyKDUpIE9NSVQgUVVPVEVTIEVNUFRZIEFSUkFZIE9OIEVNUFRZKSA+ICgnYSc6OmJwY2hh ciBDT0xMQVRFICJDIikpCisgKEpTT05fUVVFUlkoKGpzKTo6anNvbmIsICckLiJhIicgUkVUVVJO SU5HIGpzb25iIFdJVEggQ09ORElUSU9OQUwgV1JBUFBFUiBFTVBUWSBPQkpFQ1QgT04gRVJST1Ip IDwgJ1sxMF0nOjpqc29uYikKKyAoSlNPTl9WQUxVRSgoanMpOjpqc29uYiwgJyQuImEiJyBSRVRV Uk5JTkcgaW50ZWdlciBERUZBVUxUIDEyIE9OIEVNUFRZIEVSUk9SIE9OIEVSUk9SKSA+IGkpCisg KGpzIElTIEpTT04pCisgSlNPTl9FWElTVFMoKGpzKTo6anNvbmIsICckLiJhIicgUEFTU0lORyAo aSArIDUpIEFTIGludCwgKGkpOjp0ZXh0IEFTIHR4dCwgQVJSQVlbMSwgMiwgM10gQVMgYXJyKQor KDUgcm93cykKKworU0VMRUNUIHBnX2dldF9leHByKGFkYmluLCBhZHJlbGlkKQorRlJPTSBwZ19h dHRyZGVmCitXSEVSRSBhZHJlbGlkID0gJ3Rlc3RfanNvbmJfY29uc3RyYWludHMnOjpyZWdjbGFz cworT1JERVIgQlkgMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRf ZXhwciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIEpTT05fUVVFUlkoJ1sxLCAyXSc6Ompzb25iLCAnJFsqXScgUkVUVVJOSU5HIGpz b25iIFdJVEggVU5DT05ESVRJT05BTCBXUkFQUEVSKQorKDEgcm93KQorCitJTlNFUlQgSU5UTyB0 ZXN0X2pzb25iX2NvbnN0cmFpbnRzIFZBTFVFUyAoJycsIDEpOworRVJST1I6ICBuZXcgcm93IGZv ciByZWxhdGlvbiAidGVzdF9qc29uYl9jb25zdHJhaW50cyIgdmlvbGF0ZXMgY2hlY2sgY29uc3Ry YWludCAidGVzdF9qc29uYl9jb25zdHJhaW50MSIKK0RFVEFJTDogIEZhaWxpbmcgcm93IGNvbnRh aW5zICgsIDEsIFsxLCAyXSkuCitJTlNFUlQgSU5UTyB0ZXN0X2pzb25iX2NvbnN0cmFpbnRzIFZB TFVFUyAoJzEnLCAxKTsKK0VSUk9SOiAgbmV3IHJvdyBmb3IgcmVsYXRpb24gInRlc3RfanNvbmJf Y29uc3RyYWludHMiIHZpb2xhdGVzIGNoZWNrIGNvbnN0cmFpbnQgInRlc3RfanNvbmJfY29uc3Ry YWludDIiCitERVRBSUw6ICBGYWlsaW5nIHJvdyBjb250YWlucyAoMSwgMSwgWzEsIDJdKS4KK0lO U0VSVCBJTlRPIHRlc3RfanNvbmJfY29uc3RyYWludHMgVkFMVUVTICgnW10nKTsKK0VSUk9SOiAg bmV3IHJvdyBmb3IgcmVsYXRpb24gInRlc3RfanNvbmJfY29uc3RyYWludHMiIHZpb2xhdGVzIGNo ZWNrIGNvbnN0cmFpbnQgInRlc3RfanNvbmJfY29uc3RyYWludDIiCitERVRBSUw6ICBGYWlsaW5n IHJvdyBjb250YWlucyAoW10sIG51bGwsIFsxLCAyXSkuCitJTlNFUlQgSU5UTyB0ZXN0X2pzb25i X2NvbnN0cmFpbnRzIFZBTFVFUyAoJ3siYiI6IDF9JywgMSk7CitFUlJPUjogIG5ldyByb3cgZm9y IHJlbGF0aW9uICJ0ZXN0X2pzb25iX2NvbnN0cmFpbnRzIiB2aW9sYXRlcyBjaGVjayBjb25zdHJh aW50ICJ0ZXN0X2pzb25iX2NvbnN0cmFpbnQyIgorREVUQUlMOiAgRmFpbGluZyByb3cgY29udGFp bnMgKHsiYiI6IDF9LCAxLCBbMSwgMl0pLgorSU5TRVJUIElOVE8gdGVzdF9qc29uYl9jb25zdHJh aW50cyBWQUxVRVMgKCd7ImEiOiAxfScsIDEpOworRVJST1I6ICBuZXcgcm93IGZvciByZWxhdGlv biAidGVzdF9qc29uYl9jb25zdHJhaW50cyIgdmlvbGF0ZXMgY2hlY2sgY29uc3RyYWludCAidGVz dF9qc29uYl9jb25zdHJhaW50MyIKK0RFVEFJTDogIEZhaWxpbmcgcm93IGNvbnRhaW5zICh7ImEi OiAxfSwgMSwgWzEsIDJdKS4KK0lOU0VSVCBJTlRPIHRlc3RfanNvbmJfY29uc3RyYWludHMgVkFM VUVTICgneyJhIjogN30nLCAxKTsKK0VSUk9SOiAgbmV3IHJvdyBmb3IgcmVsYXRpb24gInRlc3Rf anNvbmJfY29uc3RyYWludHMiIHZpb2xhdGVzIGNoZWNrIGNvbnN0cmFpbnQgInRlc3RfanNvbmJf Y29uc3RyYWludDUiCitERVRBSUw6ICBGYWlsaW5nIHJvdyBjb250YWlucyAoeyJhIjogN30sIDEs IFsxLCAyXSkuCitJTlNFUlQgSU5UTyB0ZXN0X2pzb25iX2NvbnN0cmFpbnRzIFZBTFVFUyAoJ3si YSI6IDEwfScsIDEpOworRVJST1I6ICBuZXcgcm93IGZvciByZWxhdGlvbiAidGVzdF9qc29uYl9j b25zdHJhaW50cyIgdmlvbGF0ZXMgY2hlY2sgY29uc3RyYWludCAidGVzdF9qc29uYl9jb25zdHJh aW50NCIKK0RFVEFJTDogIEZhaWxpbmcgcm93IGNvbnRhaW5zICh7ImEiOiAxMH0sIDEsIFsxLCAy XSkuCitEUk9QIFRBQkxFIHRlc3RfanNvbmJfY29uc3RyYWludHM7CistLSBUZXN0IG11dGFiaWxp bHkgb2YgcXVlcnkgZnVuY3Rpb25zCitDUkVBVEUgVEFCTEUgdGVzdF9qc29uYl9tdXRhYmlsaXR5 KGpzIGpzb25iLCBiIGludCk7CitDUkVBVEUgSU5ERVggT04gdGVzdF9qc29uYl9tdXRhYmlsaXR5 IChKU09OX1FVRVJZKGpzLCAnJCcpKTsKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFi aWxpdHkgKEpTT05fUVVFUlkoanMsICckLmFbMF0nKSk7CitDUkVBVEUgSU5ERVggT04gdGVzdF9q c29uYl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJC50aW1lKCknKSk7CitFUlJPUjogIGZ1 bmN0aW9ucyBpbiBpbmRleCBleHByZXNzaW9uIG11c3QgYmUgbWFya2VkIElNTVVUQUJMRQorQ1JF QVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQuZGF0 ZSgpJykpOworRVJST1I6ICBmdW5jdGlvbnMgaW4gaW5kZXggZXhwcmVzc2lvbiBtdXN0IGJlIG1h cmtlZCBJTU1VVEFCTEUKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpT T05fUVVFUlkoanMsICckLnRpbWVfdHooKScpKTsKK0VSUk9SOiAgZnVuY3Rpb25zIGluIGluZGV4 IGV4cHJlc3Npb24gbXVzdCBiZSBtYXJrZWQgSU1NVVRBQkxFCitDUkVBVEUgSU5ERVggT04gdGVz dF9qc29uYl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJC50aW1lc3RhbXAoKScpKTsKK0VS Uk9SOiAgZnVuY3Rpb25zIGluIGluZGV4IGV4cHJlc3Npb24gbXVzdCBiZSBtYXJrZWQgSU1NVVRB QkxFCitDUkVBVEUgSU5ERVggT04gdGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpz LCAnJC50aW1lc3RhbXBfdHooKScpKTsKK0VSUk9SOiAgZnVuY3Rpb25zIGluIGluZGV4IGV4cHJl c3Npb24gbXVzdCBiZSBtYXJrZWQgSU1NVVRBQkxFCitDUkVBVEUgSU5ERVggT04gdGVzdF9qc29u Yl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJC5hID8gKEAuZGF0ZSgpIDwgJC50aW1lX3R6 KCkpJykpOworRVJST1I6ICBmdW5jdGlvbnMgaW4gaW5kZXggZXhwcmVzc2lvbiBtdXN0IGJlIG1h cmtlZCBJTU1VVEFCTEUKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpT T05fUVVFUlkoanMsICckLmEgPyAoQC5kYXRlKCkgPCAkLnRpbWUoKSknKSk7CitFUlJPUjogIGZ1 bmN0aW9ucyBpbiBpbmRleCBleHByZXNzaW9uIG11c3QgYmUgbWFya2VkIElNTVVUQUJMRQorQ1JF QVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQuYSA/ IChALnRpbWUoKSA8ICQudGltZSgpKScpKTsKK0VSUk9SOiAgZnVuY3Rpb25zIGluIGluZGV4IGV4 cHJlc3Npb24gbXVzdCBiZSBtYXJrZWQgSU1NVVRBQkxFCitDUkVBVEUgSU5ERVggT04gdGVzdF9q c29uYl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJC5hID8gKEAudGltZSgpIDwgJC50aW1l X3R6KCkpJykpOworRVJST1I6ICBmdW5jdGlvbnMgaW4gaW5kZXggZXhwcmVzc2lvbiBtdXN0IGJl IG1hcmtlZCBJTU1VVEFCTEUKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkg KEpTT05fUVVFUlkoanMsICckLmEgPyAoQC50aW1lc3RhbXAoKSA8ICQudGltZXN0YW1wX3R6KCkp JykpOworRVJST1I6ICBmdW5jdGlvbnMgaW4gaW5kZXggZXhwcmVzc2lvbiBtdXN0IGJlIG1hcmtl ZCBJTU1VVEFCTEUKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05f UVVFUlkoanMsICckLmEgPyAoQC50aW1lc3RhbXBfdHooKSA8ICQudGltZXN0YW1wX3R6KCkpJykp OworRVJST1I6ICBmdW5jdGlvbnMgaW4gaW5kZXggZXhwcmVzc2lvbiBtdXN0IGJlIG1hcmtlZCBJ TU1VVEFCTEUKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05fUVVF UlkoanMsICckLmEgPyAoQC50aW1lKCkgPCAkLmRhdGV0aW1lKCJISDpNSSBUWkgiKSknKSk7CitF UlJPUjogIGZ1bmN0aW9ucyBpbiBpbmRleCBleHByZXNzaW9uIG11c3QgYmUgbWFya2VkIElNTVVU QUJMRQorQ1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShq cywgJyQuYSA/IChALmRhdGUoKSA8ICQuZGF0ZXRpbWUoIkhIOk1JIFRaSCIpKScpKTsKK0VSUk9S OiAgZnVuY3Rpb25zIGluIGluZGV4IGV4cHJlc3Npb24gbXVzdCBiZSBtYXJrZWQgSU1NVVRBQkxF CitDUkVBVEUgSU5ERVggT04gdGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAn JC5hID8gKEAudGltZXN0YW1wKCkgPCAkLmRhdGV0aW1lKCJISDpNSSBUWkgiKSknKSk7CitFUlJP UjogIGZ1bmN0aW9ucyBpbiBpbmRleCBleHByZXNzaW9uIG11c3QgYmUgbWFya2VkIElNTVVUQUJM RQorQ1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywg JyQuYSA/IChALnRpbWVzdGFtcCgpIDwgJC5kYXRldGltZSgiSEg6TUkiKSknKSk7CitFUlJPUjog IGZ1bmN0aW9ucyBpbiBpbmRleCBleHByZXNzaW9uIG11c3QgYmUgbWFya2VkIElNTVVUQUJMRQor Q1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQu YSA/IChALnRpbWVzdGFtcF90eigpIDwgJC5kYXRldGltZSgiSEg6TUkgVFpIIikpJykpOworRVJS T1I6ICBmdW5jdGlvbnMgaW4gaW5kZXggZXhwcmVzc2lvbiBtdXN0IGJlIG1hcmtlZCBJTU1VVEFC TEUKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05fUVVFUlkoanMs ICckLmEgPyAoQC50aW1lc3RhbXBfdHooKSA8ICQuZGF0ZXRpbWUoIkhIOk1JIikpJykpOworRVJS T1I6ICBmdW5jdGlvbnMgaW4gaW5kZXggZXhwcmVzc2lvbiBtdXN0IGJlIG1hcmtlZCBJTU1VVEFC TEUKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05fUVVFUlkoanMs ICckLmRhdGUoKSA8ICR4JyBQQVNTSU5HICcxMjozNCc6OnRpbWV0eiBBUyB4KSk7CitFUlJPUjog IGZ1bmN0aW9ucyBpbiBpbmRleCBleHByZXNzaW9uIG11c3QgYmUgbWFya2VkIElNTVVUQUJMRQor Q1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQu ZGF0ZSgpIDwgJHgnIFBBU1NJTkcgJzEyMzQnOjppbnQgQVMgeCkpOworRVJST1I6ICBmdW5jdGlv bnMgaW4gaW5kZXggZXhwcmVzc2lvbiBtdXN0IGJlIG1hcmtlZCBJTU1VVEFCTEUKK0NSRUFURSBJ TkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05fUVVFUlkoanMsICckLmEgPyAoQC50 aW1lc3RhbXAoMikgPCAkLnRpbWVzdGFtcCgzKSknKSk7CitFUlJPUjogIGZ1bmN0aW9ucyBpbiBp bmRleCBleHByZXNzaW9uIG11c3QgYmUgbWFya2VkIElNTVVUQUJMRQorQ1JFQVRFIElOREVYIE9O IHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQuZGF0ZXRpbWUoKScpKTsK K0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05fUVVFUlkoanMsICck LmEgPyAoQCA8ICQuZGF0ZXRpbWUoKSknKSk7CitDUkVBVEUgSU5ERVggT04gdGVzdF9qc29uYl9t dXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJC5hID8gKEAuZGF0ZXRpbWUoKSA8ICQuZGF0ZXRp bWUoKSknKSk7CitFUlJPUjogIGZ1bmN0aW9ucyBpbiBpbmRleCBleHByZXNzaW9uIG11c3QgYmUg bWFya2VkIElNTVVUQUJMRQorQ1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAo SlNPTl9RVUVSWShqcywgJyQuYSA/IChALmRhdGV0aW1lKCkgPCAkLmRhdGV0aW1lKCJISDpNSSBU WkgiKSknKSk7CitFUlJPUjogIGZ1bmN0aW9ucyBpbiBpbmRleCBleHByZXNzaW9uIG11c3QgYmUg bWFya2VkIElNTVVUQUJMRQorQ1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAo SlNPTl9RVUVSWShqcywgJyQuYSA/IChALmRhdGV0aW1lKCJISDpNSSBUWkgiKSA8ICQuZGF0ZXRp bWUoIkhIOk1JIFRaSCIpKScpKTsKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxp dHkgKEpTT05fUVVFUlkoanMsICckLmEgPyAoQC5kYXRldGltZSgiSEg6TUkiKSA8ICQuZGF0ZXRp bWUoIllZLU1NLUREIEhIOk1JIikpJykpOworQ1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0 YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQuYSA/IChALmRhdGV0aW1lKCJISDpNSSBUWkgiKSA8 ICQuZGF0ZXRpbWUoIllZLU1NLUREIEhIOk1JIikpJykpOworRVJST1I6ICBmdW5jdGlvbnMgaW4g aW5kZXggZXhwcmVzc2lvbiBtdXN0IGJlIG1hcmtlZCBJTU1VVEFCTEUKK0NSRUFURSBJTkRFWCBP TiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05fUVVFUlkoanMsICckLmRhdGV0aW1lKCJISDpN SSBUWkgiKSA8ICR4JyBQQVNTSU5HICcxMjozNCc6OnRpbWV0eiBBUyB4KSk7CitDUkVBVEUgSU5E RVggT04gdGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJC5kYXRldGltZSgi SEg6TUkgVFpIIikgPCAkeScgUEFTU0lORyAnMTI6MzQnOjp0aW1ldHogQVMgeCkpOworQ1JFQVRF IElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQuZGF0ZXRp bWUoKSA8ICR4JyBQQVNTSU5HICcxMjozNCc6OnRpbWV0eiBBUyB4KSk7CitFUlJPUjogIGZ1bmN0 aW9ucyBpbiBpbmRleCBleHByZXNzaW9uIG11c3QgYmUgbWFya2VkIElNTVVUQUJMRQorQ1JFQVRF IElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQuZGF0ZXRp bWUoKSA8ICR4JyBQQVNTSU5HICcxMjM0Jzo6aW50IEFTIHgpKTsKK0NSRUFURSBJTkRFWCBPTiB0 ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05fUVVFUlkoanMsICckLmRhdGV0aW1lKCkgPyAoQCA9 PSAkeCknIFBBU1NJTkcgJzEyOjM0Jzo6dGltZSBBUyB4KSk7CitFUlJPUjogIGZ1bmN0aW9ucyBp biBpbmRleCBleHByZXNzaW9uIG11c3QgYmUgbWFya2VkIElNTVVUQUJMRQorQ1JFQVRFIElOREVY IE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQuZGF0ZXRpbWUoIllZ LU1NLUREIikgPyAoQCA9PSAkeCknIFBBU1NJTkcgJzIwMjAtMDctMTQnOjpkYXRlIEFTIHgpKTsK K0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05fUVVFUlkoanMsICck WzEsICQuYSA/IChALmRhdGV0aW1lKCkgPT0gJHgpXScgUEFTU0lORyAnMTI6MzQnOjp0aW1lIEFT IHgpKTsKK0VSUk9SOiAgZnVuY3Rpb25zIGluIGluZGV4IGV4cHJlc3Npb24gbXVzdCBiZSBtYXJr ZWQgSU1NVVRBQkxFCitDUkVBVEUgSU5ERVggT04gdGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09O X1FVRVJZKGpzLCAnJFsxLCAwIHRvICQuYSA/IChALmRhdGV0aW1lKCkgPT0gJHgpXScgUEFTU0lO RyAnMTI6MzQnOjp0aW1lIEFTIHgpKTsKK0VSUk9SOiAgZnVuY3Rpb25zIGluIGluZGV4IGV4cHJl c3Npb24gbXVzdCBiZSBtYXJrZWQgSU1NVVRBQkxFCitDUkVBVEUgSU5ERVggT04gdGVzdF9qc29u Yl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJFsxLCAkLmEgPyAoQC5kYXRldGltZSgiSEg6 TUkiKSA9PSAkeCldJyBQQVNTSU5HICcxMjozNCc6OnRpbWUgQVMgeCkpOworQ1JFQVRFIElOREVY IE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9WQUxVRShqcywgJyQnIERFRkFVTFQgcmFu ZG9tKCk6OmludCBPTiBFUlJPUikpOworRVJST1I6ICBmdW5jdGlvbnMgaW4gaW5kZXggZXhwcmVz c2lvbiBtdXN0IGJlIG1hcmtlZCBJTU1VVEFCTEUKKy0tIERFRkFVTFQgZXhwcmVzc2lvbgorQ1JF QVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gcmV0X3NldGludCgpIFJFVFVSTlMgU0VUT0YgaW50ZWdl ciBBUworJCQKK0JFR0lOCisgICAgUkVUVVJOIFFVRVJZIEVYRUNVVEUgJ3NlbGVjdCAxIHVuaW9u IGFsbCBzZWxlY3QgMSc7CitFTkQ7CiskJAorTEFOR1VBR0UgcGxwZ3NxbCBJTU1VVEFCTEU7CitT RUxFQ1QgSlNPTl9RVUVSWShqcywgJyQnICBSRVRVUk5JTkcgaW50IERFRkFVTFQgcmV0X3NldGlu dCgpIE9OIEVSUk9SKSBGUk9NIHRlc3RfanNvbmJfbXV0YWJpbGl0eTsKK0VSUk9SOiAgREVGQVVM VCBleHByZXNzaW9uIG11c3Qgbm90IHJldHVybiBhIHNldAorTElORSAxOiBTRUxFQ1QgSlNPTl9R VUVSWShqcywgJyQnICBSRVRVUk5JTkcgaW50IERFRkFVTFQgcmV0X3NldGludCguLi4KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK1NF TEVDVCBKU09OX1FVRVJZKGpzLCAnJCcgIFJFVFVSTklORyBpbnQgREVGQVVMVCBiICsgMSBPTiBF UlJPUikgRlJPTSB0ZXN0X2pzb25iX211dGFiaWxpdHk7CitFUlJPUjogIERFRkFVTFQgZXhwcmVz c2lvbiBtdXN0IG5vdCBjb250YWluIGNvbHVtbiByZWZlcmVuY2VzCitMSU5FIDE6IFNFTEVDVCBK U09OX1FVRVJZKGpzLCAnJCcgIFJFVFVSTklORyBpbnQgREVGQVVMVCBiICsgMSBPTiBFUi4uLgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XgorU0VMRUNUIEpTT05fUVVFUlkoanMsICckJyAgUkVUVVJOSU5HIGludCBERUZBVUxUIHN1bSgx KSBvdmVyKCkgT04gRVJST1IpIEZST00gdGVzdF9qc29uYl9tdXRhYmlsaXR5OworRVJST1I6ICBj YW4gb25seSBzcGVjaWZ5IGNvbnN0YW50LCBub24tYWdncmVnYXRlIGZ1bmN0aW9uLCBvciBvcGVy YXRvciBleHByZXNzaW9uIGZvciBERUZBVUxUCitMSU5FIDE6IFNFTEVDVCBKU09OX1FVRVJZKGpz LCAnJCcgIFJFVFVSTklORyBpbnQgREVGQVVMVCBzdW0oMSkgb3Zlci4uLgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorU0VMRUNUIEpT T05fUVVFUlkoanMsICckJyAgUkVUVVJOSU5HIGludCBERUZBVUxUIChTRUxFQ1QgMSkgT04gRVJS T1IpIEZST00gdGVzdF9qc29uYl9tdXRhYmlsaXR5OworRVJST1I6ICBjYW4gb25seSBzcGVjaWZ5 IGNvbnN0YW50LCBub24tYWdncmVnYXRlIGZ1bmN0aW9uLCBvciBvcGVyYXRvciBleHByZXNzaW9u IGZvciBERUZBVUxUCitMSU5FIDE6IFNFTEVDVCBKU09OX1FVRVJZKGpzLCAnJCcgIFJFVFVSTklO RyBpbnQgREVGQVVMVCAoU0VMRUNUIDEpIC4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorRFJPUCBUQUJMRSB0ZXN0X2pzb25iX211 dGFiaWxpdHk7CitEUk9QIEZVTkNUSU9OIHJldF9zZXRpbnQ7CistLSBFeHRlbnNpb246IG5vbi1j b25zdGFudCBKU09OIHBhdGgKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAneyJhIjogMTIzfScs ICckJyB8fCAnLicgfHwgJ2EnKTsKKyBqc29uX2V4aXN0cyAKKy0tLS0tLS0tLS0tLS0KKyB0Ciso MSByb3cpCisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICd7ImEiOiAxMjN9JywgJyQnIHx8ICcu JyB8fCAnYScpOworIGpzb25fdmFsdWUgCistLS0tLS0tLS0tLS0KKyAxMjMKKygxIHJvdykKKwor U0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ3siYSI6IDEyM30nLCAnJCcgfHwgJy4nIHx8ICdiJyBE RUZBVUxUICdmb28nIE9OIEVNUFRZKTsKKyBqc29uX3ZhbHVlIAorLS0tLS0tLS0tLS0tCisgZm9v CisoMSByb3cpCisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICd7ImEiOiAxMjN9JywgJyQnIHx8 ICcuJyB8fCAnYScpOworIGpzb25fcXVlcnkgCistLS0tLS0tLS0tLS0KKyAxMjMKKygxIHJvdykK KworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ3siYSI6IDEyM30nLCAnJCcgfHwgJy4nIHx8ICdh JyBXSVRIIFdSQVBQRVIpOworIGpzb25fcXVlcnkgCistLS0tLS0tLS0tLS0KKyBbMTIzXQorKDEg cm93KQorCistLSBTaG91bGQgZmFpbCAoaW52YWxpZCBwYXRoKQorU0VMRUNUIEpTT05fUVVFUlko anNvbmIgJ3siYSI6IDEyM30nLCAnZXJyb3InIHx8ICcgJyB8fCAnZXJyb3InKTsKK0VSUk9SOiAg c3ludGF4IGVycm9yIGF0IG9yIG5lYXIgIiAiIG9mIGpzb25wYXRoIGlucHV0CmRpZmYgLS1naXQg YS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlIGIvc3JjL3Rlc3QvcmVncmVzcy9w YXJhbGxlbF9zY2hlZHVsZQppbmRleCAxZDhhNDE0ZWVhLi45MTBmNmZlM2M5IDEwMDY0NAotLS0g YS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCisrKyBiL3NyYy90ZXN0L3JlZ3Jl c3MvcGFyYWxsZWxfc2NoZWR1bGUKQEAgLTEwMyw3ICsxMDMsNyBAQCB0ZXN0OiBzZWxlY3Rfdmll d3MgcG9ydGFsc19wMiBmb3JlaWduX2tleSBjbHVzdGVyIGRlcGVuZGVuY3kgZ3VjIGJpdG1hcG9w cyBjb21ibwogIyAtLS0tLS0tLS0tCiAjIEFub3RoZXIgZ3JvdXAgb2YgcGFyYWxsZWwgdGVzdHMg KEpTT04gcmVsYXRlZCkKICMgLS0tLS0tLS0tLQotdGVzdDoganNvbiBqc29uYiBqc29uX2VuY29k aW5nIGpzb25wYXRoIGpzb25wYXRoX2VuY29kaW5nIGpzb25iX2pzb25wYXRoIHNxbGpzb24KK3Rl c3Q6IGpzb24ganNvbmIganNvbl9lbmNvZGluZyBqc29ucGF0aCBqc29ucGF0aF9lbmNvZGluZyBq c29uYl9qc29ucGF0aCBzcWxqc29uIHNxbGpzb25fcXVlcnlmdW5jcwogCiAjIC0tLS0tLS0tLS0K ICMgQW5vdGhlciBncm91cCBvZiBwYXJhbGxlbCB0ZXN0cwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvc3FsanNvbl9xdWVyeWZ1bmNzLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L3NxbGpzb25fcXVlcnlmdW5jcy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMC4uNWJlMmQ4ZTNmOAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L3NxbGpzb25fcXVlcnlmdW5jcy5zcWwKQEAgLTAsMCArMSw0MjcgQEAKKy0tIEpTT05fRVhJU1RT CisKKy0tIGpzb24gYXJndW1lbnRzIGN1cnJlbnRseSBub3Qgc3VwcG9ydGVkCitTRUxFQ1QgSlNP Tl9FWElTVFMoTlVMTCBGT1JNQVQgSlNPTiwgJyQnKTsKKworU0VMRUNUIEpTT05fRVhJU1RTKE5V TEw6Ompzb25iLCAnJCcpOworU0VMRUNUIEpTT05fRVhJU1RTKGpzb25iICdbXScsICckJyk7CitT RUxFQ1QgSlNPTl9FWElTVFMoSlNPTl9PQkpFQ1QoUkVUVVJOSU5HIGpzb25iKSwgJyQnKTsKKwor U0VMRUNUIEpTT05fRVhJU1RTKGpzb25iICcxJywgJyQnKTsKK1NFTEVDVCBKU09OX0VYSVNUUyhq c29uYiAnbnVsbCcsICckJyk7CitTRUxFQ1QgSlNPTl9FWElTVFMoanNvbmIgJ1tdJywgJyQnKTsK KworU0VMRUNUIEpTT05fRVhJU1RTKGpzb25iICcxJywgJyQuYScpOworU0VMRUNUIEpTT05fRVhJ U1RTKGpzb25iICcxJywgJ3N0cmljdCAkLmEnKTsgLS0gRkFMU0Ugb24gZXJyb3IKK1NFTEVDVCBK U09OX0VYSVNUUyhqc29uYiAnMScsICdzdHJpY3QgJC5hJyBFUlJPUiBPTiBFUlJPUik7CitTRUxF Q1QgSlNPTl9FWElTVFMoanNvbmIgJ251bGwnLCAnJC5hJyk7CitTRUxFQ1QgSlNPTl9FWElTVFMo anNvbmIgJ1tdJywgJyQuYScpOworU0VMRUNUIEpTT05fRVhJU1RTKGpzb25iICdbMSwgImFhYSIs IHsiYSI6IDF9XScsICdzdHJpY3QgJC5hJyk7IC0tIEZBTFNFIG9uIGVycm9yCitTRUxFQ1QgSlNP Tl9FWElTVFMoanNvbmIgJ1sxLCAiYWFhIiwgeyJhIjogMX1dJywgJ2xheCAkLmEnKTsKK1NFTEVD VCBKU09OX0VYSVNUUyhqc29uYiAne30nLCAnJC5hJyk7CitTRUxFQ1QgSlNPTl9FWElTVFMoanNv bmIgJ3siYiI6IDEsICJhIjogMn0nLCAnJC5hJyk7CisKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29u YiAnMScsICckLmEuYicpOworU0VMRUNUIEpTT05fRVhJU1RTKGpzb25iICd7ImEiOiB7ImIiOiAx fX0nLCAnJC5hLmInKTsKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAneyJhIjogMSwgImIiOiAy fScsICckLmEuYicpOworCitTRUxFQ1QgSlNPTl9FWElTVFMoanNvbmIgJ3siYSI6IDEsICJiIjog Mn0nLCAnJC4qID8gKEAgPiAkeCknIFBBU1NJTkcgMSBBUyB4KTsKK1NFTEVDVCBKU09OX0VYSVNU Uyhqc29uYiAneyJhIjogMSwgImIiOiAyfScsICckLiogPyAoQCA+ICR4KScgUEFTU0lORyAnMScg QVMgeCk7CitTRUxFQ1QgSlNPTl9FWElTVFMoanNvbmIgJ3siYSI6IDEsICJiIjogMn0nLCAnJC4q ID8gKEAgPiAkeCAmJiBAIDwgJHkpJyBQQVNTSU5HIDAgQVMgeCwgMiBBUyB5KTsKK1NFTEVDVCBK U09OX0VYSVNUUyhqc29uYiAneyJhIjogMSwgImIiOiAyfScsICckLiogPyAoQCA+ICR4ICYmIEAg PCAkeSknIFBBU1NJTkcgMCBBUyB4LCAxIEFTIHkpOworCistLSBleHRlbnNpb246IGJvb2xlYW4g ZXhwcmVzc2lvbnMKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAnMScsICckID4gMicpOworU0VM RUNUIEpTT05fRVhJU1RTKGpzb25iICcxJywgJyQuYSA+IDInIEVSUk9SIE9OIEVSUk9SKTsKKwor LS0gSlNPTl9WQUxVRQorCistLSBqc29uIGFyZ3VtZW50cyBjdXJyZW50bHkgbm90IHN1cHBvcnRl ZAorU0VMRUNUIEpTT05fVkFMVUUoTlVMTCBGT1JNQVQgSlNPTiwgJyQnKTsKKworU0VMRUNUIEpT T05fVkFMVUUoTlVMTDo6anNvbmIsICckJyk7CisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICdu dWxsJywgJyQnKTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICdudWxsJywgJyQnIFJFVFVSTklO RyBpbnQpOworCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAndHJ1ZScsICckJyk7CitTRUxFQ1Qg SlNPTl9WQUxVRShqc29uYiAndHJ1ZScsICckJyBSRVRVUk5JTkcgYm9vbCk7CisKK1NFTEVDVCBK U09OX1ZBTFVFKGpzb25iICcxMjMnLCAnJCcpOworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJzEy MycsICckJyBSRVRVUk5JTkcgaW50KSArIDIzNDsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICcx MjMnLCAnJCcgUkVUVVJOSU5HIHRleHQpOworLyoganNvbmIgYnl0ZWEgPz8/ICovCitTRUxFQ1Qg SlNPTl9WQUxVRShqc29uYiAnMTIzJywgJyQnIFJFVFVSTklORyBieXRlYSBFUlJPUiBPTiBFUlJP Uik7CisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICcxLjIzJywgJyQnKTsKK1NFTEVDVCBKU09O X1ZBTFVFKGpzb25iICcxLjIzJywgJyQnIFJFVFVSTklORyBpbnQpOworU0VMRUNUIEpTT05fVkFM VUUoanNvbmIgJyIxLjIzIicsICckJyBSRVRVUk5JTkcgbnVtZXJpYyk7CitTRUxFQ1QgSlNPTl9W QUxVRShqc29uYiAnIjEuMjMiJywgJyQnIFJFVFVSTklORyBpbnQgRVJST1IgT04gRVJST1IpOwor CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnImFhYSInLCAnJCcpOworU0VMRUNUIEpTT05fVkFM VUUoanNvbmIgJyJhYWEiJywgJyQnIFJFVFVSTklORyB0ZXh0KTsKK1NFTEVDVCBKU09OX1ZBTFVF KGpzb25iICciYWFhIicsICckJyBSRVRVUk5JTkcgY2hhcig1KSk7CitTRUxFQ1QgSlNPTl9WQUxV RShqc29uYiAnImFhYSInLCAnJCcgUkVUVVJOSU5HIGNoYXIoMikpOworU0VMRUNUIEpTT05fVkFM VUUoanNvbmIgJyJhYWEiJywgJyQnIFJFVFVSTklORyBqc29uKTsKK1NFTEVDVCBKU09OX1ZBTFVF KGpzb25iICciYWFhIicsICckJyBSRVRVUk5JTkcganNvbmIpOworU0VMRUNUIEpTT05fVkFMVUUo anNvbmIgJyJhYWEiJywgJyQnIFJFVFVSTklORyBqc29uIEVSUk9SIE9OIEVSUk9SKTsKK1NFTEVD VCBKU09OX1ZBTFVFKGpzb25iICciYWFhIicsICckJyBSRVRVUk5JTkcganNvbmIgRVJST1IgT04g RVJST1IpOworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJyJcImFhYVwiIicsICckJyBSRVRVUk5J TkcganNvbik7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnIlwiYWFhXCIiJywgJyQnIFJFVFVS TklORyBqc29uYik7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnImFhYSInLCAnJCcgUkVUVVJO SU5HIGludCk7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnImFhYSInLCAnJCcgUkVUVVJOSU5H IGludCBFUlJPUiBPTiBFUlJPUik7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnImFhYSInLCAn JCcgUkVUVVJOSU5HIGludCBERUZBVUxUIDExMSBPTiBFUlJPUik7CitTRUxFQ1QgSlNPTl9WQUxV RShqc29uYiAnIjEyMyInLCAnJCcgUkVUVVJOSU5HIGludCkgKyAyMzQ7CisKK1NFTEVDVCBKU09O X1ZBTFVFKGpzb25iICciMjAxNy0wMi0yMCInLCAnJCcgUkVUVVJOSU5HIGRhdGUpICsgOTsKKwor LS0gVGVzdCBOVUxMIGNoZWNrcyBleGVjdXRpb24gaW4gZG9tYWluIHR5cGVzCitDUkVBVEUgRE9N QUlOIHNxbGpzb25iX2ludF9ub3RfbnVsbCBBUyBpbnQgTk9UIE5VTEw7CitTRUxFQ1QgSlNPTl9W QUxVRShqc29uYiAnbnVsbCcsICckJyBSRVRVUk5JTkcgc3FsanNvbmJfaW50X25vdF9udWxsKTsK K1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICdudWxsJywgJyQnIFJFVFVSTklORyBzcWxqc29uYl9p bnRfbm90X251bGwgRVJST1IgT04gRVJST1IpOworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ251 bGwnLCAnJCcgUkVUVVJOSU5HIHNxbGpzb25iX2ludF9ub3RfbnVsbCBERUZBVUxUIDIgT04gRU1Q VFkgRVJST1IgT04gRVJST1IpOworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJzEnLCAgJyQuYScg UkVUVVJOSU5HIHNxbGpzb25iX2ludF9ub3RfbnVsbCBERUZBVUxUIDIgT04gRU1QVFkgRVJST1Ig T04gRVJST1IpOworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJzEnLCAgJyQuYScgUkVUVVJOSU5H IHNxbGpzb25iX2ludF9ub3RfbnVsbCBERUZBVUxUIE5VTEwgT04gRU1QVFkgRVJST1IgT04gRVJS T1IpOworQ1JFQVRFIFRZUEUgcmFpbmJvdyBBUyBFTlVNICgncmVkJywgJ29yYW5nZScsICd5ZWxs b3cnLCAnZ3JlZW4nLCAnYmx1ZScsICdwdXJwbGUnKTsKK0NSRUFURSBET01BSU4gcmdiIEFTIHJh aW5ib3cgQ0hFQ0sgKFZBTFVFIElOICgncmVkJywgJ2dyZWVuJywgJ2JsdWUnKSk7CitTRUxFQ1Qg SlNPTl9WQUxVRSgnInB1cnBsZSInOjpqc29uYiwgJ2xheCAkWypdJyBSRVRVUk5JTkcgcmdiKTsK K1NFTEVDVCBKU09OX1ZBTFVFKCcicHVycGxlIic6Ompzb25iLCAnbGF4ICRbKl0nIFJFVFVSTklO RyByZ2IgRVJST1IgT04gRVJST1IpOworCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnW10nLCAn JCcpOworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ1tdJywgJyQnIEVSUk9SIE9OIEVSUk9SKTsK K1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICd7fScsICckJyk7CitTRUxFQ1QgSlNPTl9WQUxVRShq c29uYiAne30nLCAnJCcgRVJST1IgT04gRVJST1IpOworCitTRUxFQ1QgSlNPTl9WQUxVRShqc29u YiAnMScsICckLmEnKTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICcxJywgJ3N0cmljdCAkLmEn IEVSUk9SIE9OIEVSUk9SKTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICcxJywgJ3N0cmljdCAk LmEnIERFRkFVTFQgJ2Vycm9yJyBPTiBFUlJPUik7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAn MScsICdsYXggJC5hJyBFUlJPUiBPTiBFUlJPUik7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAn MScsICdsYXggJC5hJyBFUlJPUiBPTiBFTVBUWSBFUlJPUiBPTiBFUlJPUik7CitTRUxFQ1QgSlNP Tl9WQUxVRShqc29uYiAnMScsICdzdHJpY3QgJC5hJyBERUZBVUxUIDIgT04gRVJST1IpOworU0VM RUNUIEpTT05fVkFMVUUoanNvbmIgJzEnLCAnbGF4ICQuYScgREVGQVVMVCAyIE9OIEVSUk9SKTsK K1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICcxJywgJ2xheCAkLmEnIERFRkFVTFQgJzInIE9OIEVS Uk9SKTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICcxJywgJ2xheCAkLmEnIE5VTEwgT04gRU1Q VFkgREVGQVVMVCAnMicgT04gRVJST1IpOworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJzEnLCAn bGF4ICQuYScgREVGQVVMVCAnMicgT04gRU1QVFkgREVGQVVMVCAnMycgT04gRVJST1IpOworU0VM RUNUIEpTT05fVkFMVUUoanNvbmIgJzEnLCAnbGF4ICQuYScgRVJST1IgT04gRU1QVFkgREVGQVVM VCAnMycgT04gRVJST1IpOworCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnWzEsMl0nLCAnJFsq XScgRVJST1IgT04gRVJST1IpOworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ1sxLDJdJywgJyRb Kl0nIERFRkFVTFQgJzAnIE9OIEVSUk9SKTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICdbIiAi XScsICckWypdJyBSRVRVUk5JTkcgaW50IEVSUk9SIE9OIEVSUk9SKTsKK1NFTEVDVCBKU09OX1ZB TFVFKGpzb25iICdbIiAiXScsICckWypdJyBSRVRVUk5JTkcgaW50IERFRkFVTFQgMiArIDMgT04g RVJST1IpOworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ1siMSJdJywgJyRbKl0nIFJFVFVSTklO RyBpbnQgREVGQVVMVCAyICsgMyBPTiBFUlJPUik7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAn WyIxIl0nLCAnJFsqXScgUkVUVVJOSU5HIGludCBGT1JNQVQgSlNPTik7IC0tIFJFVFVSTklORyBG T1JNQVQgbm90IGFsbG93ZWQKKworLS0gUkVUVUdOSU5HIHBzZXVkby10eXBlcyBub3QgYWxsb3dl ZAorU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ1siMSJdJywgJyRbKl0nIFJFVFVSTklORyByZWNv cmQpOworCitTRUxFQ1QKKwl4LAorCUpTT05fVkFMVUUoCisJCWpzb25iICd7ImEiOiAxLCAiYiI6 IDJ9JywKKwkJJyQuKiA/IChAID4gJHgpJyBQQVNTSU5HIHggQVMgeAorCQlSRVRVUk5JTkcgaW50 CisJCURFRkFVTFQgLTEgT04gRU1QVFkKKwkJREVGQVVMVCAtMiBPTiBFUlJPUgorCSkgeQorRlJP TQorCWdlbmVyYXRlX3NlcmllcygwLCAyKSB4OworCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAn bnVsbCcsICckYScgUEFTU0lORyBwb2ludCAnICgxLCAyICknIEFTIGEpOworU0VMRUNUIEpTT05f VkFMVUUoanNvbmIgJ251bGwnLCAnJGEnIFBBU1NJTkcgcG9pbnQgJyAoMSwgMiApJyBBUyBhIFJF VFVSTklORyBwb2ludCk7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnbnVsbCcsICckYScgUEFT U0lORyBwb2ludCAnICgxLCAyICknIEFTIGEgUkVUVVJOSU5HIHBvaW50IEVSUk9SIE9OIEVSUk9S KTsKKworLS0gVGVzdCBQQVNTSU5HIGFuZCBSRVRVUk5JTkcgZGF0ZS90aW1lIHR5cGVzCitTRUxF Q1QgSlNPTl9WQUxVRShqc29uYiAnbnVsbCcsICckdHMnIFBBU1NJTkcgdGltZXN0YW1wdHogJzIw MTgtMDItMjEgMTI6MzQ6NTYgKzEwJyBBUyB0cyk7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAn bnVsbCcsICckdHMnIFBBU1NJTkcgdGltZXN0YW1wdHogJzIwMTgtMDItMjEgMTI6MzQ6NTYgKzEw JyBBUyB0cyBSRVRVUk5JTkcgdGltZXN0YW1wdHopOworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIg J251bGwnLCAnJHRzJyBQQVNTSU5HIHRpbWVzdGFtcHR6ICcyMDE4LTAyLTIxIDEyOjM0OjU2ICsx MCcgQVMgdHMgUkVUVVJOSU5HIHRpbWVzdGFtcCk7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAn bnVsbCcsICckdHMnIFBBU1NJTkcgZGF0ZSAnMjAxOC0wMi0yMSAxMjozNDo1NiArMTAnIEFTIHRz IFJFVFVSTklORyBkYXRlKTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICdudWxsJywgJyR0cycg UEFTU0lORyB0aW1lICcyMDE4LTAyLTIxIDEyOjM0OjU2ICsxMCcgQVMgdHMgUkVUVVJOSU5HIHRp bWUpOworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ251bGwnLCAnJHRzJyBQQVNTSU5HIHRpbWV0 eiAnMjAxOC0wMi0yMSAxMjozNDo1NiArMTAnIEFTIHRzIFJFVFVSTklORyB0aW1ldHopOworU0VM RUNUIEpTT05fVkFMVUUoanNvbmIgJ251bGwnLCAnJHRzJyBQQVNTSU5HIHRpbWVzdGFtcCAnMjAx OC0wMi0yMSAxMjozNDo1NiArMTAnIEFTIHRzIFJFVFVSTklORyB0aW1lc3RhbXApOworCistLSBB bHNvIHRlc3QgUkVUVVJOSU5HIGpzb25bYl0KK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICdudWxs JywgJyR0cycgUEFTU0lORyB0aW1lc3RhbXB0eiAnMjAxOC0wMi0yMSAxMjozNDo1NiArMTAnIEFT IHRzIFJFVFVSTklORyBqc29uKTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICdudWxsJywgJyR0 cycgUEFTU0lORyB0aW1lc3RhbXB0eiAnMjAxOC0wMi0yMSAxMjozNDo1NiArMTAnIEFTIHRzIFJF VFVSTklORyBqc29uYik7CisKKy0tIEpTT05fUVVFUlkKKworLS0ganNvbiBhcmd1bWVudHMgY3Vy cmVudGx5IG5vdCBzdXBwb3J0ZWQKK1NFTEVDVCBKU09OX1FVRVJZKE5VTEwgRk9STUFUIEpTT04s ICckJyk7CisKK1NFTEVDVCBKU09OX1ZBTFVFKE5VTEw6Ompzb25iLCAnJCcpOworCitTRUxFQ1QK KwlKU09OX1FVRVJZKGpzLCAnJCcpLAorCUpTT05fUVVFUlkoanMsICckJyBXSVRIT1VUIFdSQVBQ RVIpLAorCUpTT05fUVVFUlkoanMsICckJyBXSVRIIENPTkRJVElPTkFMIFdSQVBQRVIpLAorCUpT T05fUVVFUlkoanMsICckJyBXSVRIIFVOQ09ORElUSU9OQUwgQVJSQVkgV1JBUFBFUiksCisJSlNP Tl9RVUVSWShqcywgJyQnIFdJVEggQVJSQVkgV1JBUFBFUikKK0ZST00KKwkoVkFMVUVTCisJCShq c29uYiAnbnVsbCcpLAorCQkoJzEyLjMnKSwKKwkJKCd0cnVlJyksCisJCSgnImFhYSInKSwKKwkJ KCdbMSwgbnVsbCwgIjIiXScpLAorCQkoJ3siYSI6IDEsICJiIjogWzJdfScpCisJKSBmb28oanMp OworCitTRUxFQ1QKKwlKU09OX1FVRVJZKGpzLCAnc3RyaWN0ICRbKl0nKSBBUyAidW5zcGVjIiwK KwlKU09OX1FVRVJZKGpzLCAnc3RyaWN0ICRbKl0nIFdJVEhPVVQgV1JBUFBFUikgQVMgIndpdGhv dXQiLAorCUpTT05fUVVFUlkoanMsICdzdHJpY3QgJFsqXScgV0lUSCBDT05ESVRJT05BTCBXUkFQ UEVSKSBBUyAid2l0aCBjb25kIiwKKwlKU09OX1FVRVJZKGpzLCAnc3RyaWN0ICRbKl0nIFdJVEgg VU5DT05ESVRJT05BTCBBUlJBWSBXUkFQUEVSKSBBUyAid2l0aCB1bmNvbmQiLAorCUpTT05fUVVF UlkoanMsICdzdHJpY3QgJFsqXScgV0lUSCBBUlJBWSBXUkFQUEVSKSBBUyAid2l0aCIKK0ZST00K KwkoVkFMVUVTCisJCShqc29uYiAnMScpLAorCQkoJ1tdJyksCisJCSgnW251bGxdJyksCisJCSgn WzEyLjNdJyksCisJCSgnW3RydWVdJyksCisJCSgnWyJhYWEiXScpLAorCQkoJ1tbMSwgMiwgM11d JyksCisJCSgnW3siYSI6IDEsICJiIjogWzJdfV0nKSwKKwkJKCdbMSwgIjIiLCBudWxsLCBbM11d JykKKwkpIGZvbyhqcyk7CisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICciYWFhIicsICckJyBS RVRVUk5JTkcgdGV4dCk7CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnImFhYSInLCAnJCcgUkVU VVJOSU5HIHRleHQgS0VFUCBRVU9URVMpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJyJhYWEi JywgJyQnIFJFVFVSTklORyB0ZXh0IEtFRVAgUVVPVEVTIE9OIFNDQUxBUiBTVFJJTkcpOworU0VM RUNUIEpTT05fUVVFUlkoanNvbmIgJyJhYWEiJywgJyQnIFJFVFVSTklORyB0ZXh0IE9NSVQgUVVP VEVTKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICciYWFhIicsICckJyBSRVRVUk5JTkcgdGV4 dCBPTUlUIFFVT1RFUyBPTiBTQ0FMQVIgU1RSSU5HKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25i ICciYWFhIicsICckJyBPTUlUIFFVT1RFUyBFUlJPUiBPTiBFUlJPUik7CitTRUxFQ1QgSlNPTl9R VUVSWShqc29uYiAnImFhYSInLCAnJCcgUkVUVVJOSU5HIGpzb24gT01JVCBRVU9URVMgRVJST1Ig T04gRVJST1IpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJyJhYWEiJywgJyQnIFJFVFVSTklO RyBieXRlYSBGT1JNQVQgSlNPTiBPTUlUIFFVT1RFUyBFUlJPUiBPTiBFUlJPUik7CisKKy0tIEJl aGF2aW9yIHdoZW4gYSBSRVRVUk5JTkcgdHlwZSBoYXMgdHlwbW9kICE9IC0xCitTRUxFQ1QgSlNP Tl9RVUVSWShqc29uYiAnImFhYSInLCAnJCcgUkVUVVJOSU5HIGNoYXIoMikpOworU0VMRUNUIEpT T05fUVVFUlkoanNvbmIgJyJhYWEiJywgJyQnIFJFVFVSTklORyBjaGFyKDIpIE9NSVQgUVVPVEVT KTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICciYWFhIicsICckLmEnIFJFVFVSTklORyBjaGFy KDIpIE9NSVQgUVVPVEVTIERFRkFVTFQgJ2JiYicgT04gRU1QVFkpOworU0VMRUNUIEpTT05fUVVF UlkoanNvbmIgJyJhYWEiJywgJyQuYScgUkVUVVJOSU5HIGNoYXIoMikgT01JVCBRVU9URVMgREVG QVVMVCAnImJiYiInOjpqc29uYiBPTiBFTVBUWSk7CisKKy0tIFFVT1RFUyBiZWhhdmlvciBzaG91 bGQgbm90IGJlIHNwZWNpZmllZCB3aGVuIFdJVEggV1JBUFBFUiB1c2VkOgorLS0gU2hvdWxkIGZh aWwKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMV0nLCAnJCcgV0lUSCBXUkFQUEVSIE9NSVQg UVVPVEVTKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMV0nLCAnJCcgV0lUSCBXUkFQUEVS IEtFRVAgUVVPVEVTKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMV0nLCAnJCcgV0lUSCBD T05ESVRJT05BTCBXUkFQUEVSIEtFRVAgUVVPVEVTKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25i ICdbMV0nLCAnJCcgV0lUSCBDT05ESVRJT05BTCBXUkFQUEVSIE9NSVQgUVVPVEVTKTsKKy0tIFNo b3VsZCBzdWNjZWVkCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnWzFdJywgJyQnIFdJVEhPVVQg V1JBUFBFUiBPTUlUIFFVT1RFUyk7CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnWzFdJywgJyQn IFdJVEhPVVQgV1JBUFBFUiBLRUVQIFFVT1RFUyk7CisKKy0tIHRlc3QgUVVPVEVTIGJlaGF2aW9y LgorU0VMRUNUIEpTT05fUVVFUlkoanNvbmIneyJyZWMiOiAiezEsMiwzfSJ9JywgJyQucmVjJyBy ZXR1cm5pbmcgaW50W10gb21pdCBxdW90ZXMpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIneyJy ZWMiOiAiezEsMiwzfSJ9JywgJyQucmVjJyByZXR1cm5pbmcgaW50W10ga2VlcCBxdW90ZXMpOwor U0VMRUNUIEpTT05fUVVFUlkoanNvbmIneyJyZWMiOiAiezEsMiwzfSJ9JywgJyQucmVjJyByZXR1 cm5pbmcgaW50W10ga2VlcCBxdW90ZXMgZXJyb3Igb24gZXJyb3IpOworU0VMRUNUIEpTT05fUVVF UlkoanNvbmIneyJyZWMiOiAiWzEsMl0ifScsICckLnJlYycgcmV0dXJuaW5nIGludDRyYW5nZSBv bWl0IHF1b3Rlcyk7CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYid7InJlYyI6ICJbMSwyXSJ9Jywg JyQucmVjJyByZXR1cm5pbmcgaW50NHJhbmdlIGtlZXAgcXVvdGVzKTsKK1NFTEVDVCBKU09OX1FV RVJZKGpzb25iJ3sicmVjIjogIlsxLDJdIn0nLCAnJC5yZWMnIAlyZXR1cm5pbmcgaW50NHJhbmdl IGtlZXAgcXVvdGVzIGVycm9yIG9uIGVycm9yKTsKKworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIg J1tdJywgJyRbKl0nKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbXScsICckWypdJyBOVUxM IE9OIEVNUFRZKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbXScsICckWypdJyBFTVBUWSBP TiBFTVBUWSk7CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnW10nLCAnJFsqXScgRU1QVFkgQVJS QVkgT04gRU1QVFkpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1tdJywgJyRbKl0nIEVNUFRZ IE9CSkVDVCBPTiBFTVBUWSk7CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnW10nLCAnJFsqXScg RVJST1IgT04gRU1QVFkpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1tdJywgJyRbKl0nIERF RkFVTFQgJyJlbXB0eSInIE9OIEVNUFRZKTsKKworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1td JywgJyRbKl0nIEVSUk9SIE9OIEVNUFRZIE5VTEwgT04gRVJST1IpOworU0VMRUNUIEpTT05fUVVF UlkoanNvbmIgJ1tdJywgJyRbKl0nIEVSUk9SIE9OIEVNUFRZIEVNUFRZIEFSUkFZIE9OIEVSUk9S KTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbXScsICckWypdJyBFUlJPUiBPTiBFTVBUWSBF TVBUWSBPQkpFQ1QgT04gRVJST1IpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1tdJywgJyRb Kl0nIEVSUk9SIE9OIEVNUFRZIEVSUk9SIE9OIEVSUk9SKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpz b25iICdbXScsICckWypdJyBFUlJPUiBPTiBFUlJPUik7CisKK1NFTEVDVCBKU09OX1FVRVJZKGpz b25iICdbMSwyXScsICckWypdJyBFUlJPUiBPTiBFUlJPUik7CitTRUxFQ1QgSlNPTl9RVUVSWShq c29uYiAnWzEsMl0nLCAnJFsqXScgREVGQVVMVCAnImVtcHR5IicgT04gRVJST1IpOworCitTRUxF Q1QgSlNPTl9RVUVSWShqc29uYiAnWzEsMl0nLCAnJCcgUkVUVVJOSU5HIGpzb24pOworU0VMRUNU IEpTT05fUVVFUlkoanNvbmIgJ1sxLDJdJywgJyQnIFJFVFVSTklORyBqc29uIEZPUk1BVCBKU09O KTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMSwyXScsICckJyBSRVRVUk5JTkcganNvbmIp OworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sxLDJdJywgJyQnIFJFVFVSTklORyBqc29uYiBG T1JNQVQgSlNPTik7CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnWzEsMl0nLCAnJCcgUkVUVVJO SU5HIHRleHQpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sxLDJdJywgJyQnIFJFVFVSTklO RyBjaGFyKDEwKSk7CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnWzEsMl0nLCAnJCcgUkVUVVJO SU5HIGNoYXIoMykpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sxLDJdJywgJyQnIFJFVFVS TklORyB0ZXh0IEZPUk1BVCBKU09OKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMSwyXScs ICckJyBSRVRVUk5JTkcgYnl0ZWEpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sxLDJdJywg JyQnIFJFVFVSTklORyBieXRlYSBGT1JNQVQgSlNPTik7CisKK1NFTEVDVCBKU09OX1FVRVJZKGpz b25iICdbMSwyXScsICckWypdJyBSRVRVUk5JTkcgYnl0ZWEgRU1QVFkgT0JKRUNUIE9OIEVSUk9S KTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMSwyXScsICckWypdJyBSRVRVUk5JTkcgYnl0 ZWEgRk9STUFUIEpTT04gRU1QVFkgT0JKRUNUIE9OIEVSUk9SKTsKK1NFTEVDVCBKU09OX1FVRVJZ KGpzb25iICdbMSwyXScsICckWypdJyBSRVRVUk5JTkcganNvbiBFTVBUWSBPQkpFQ1QgT04gRVJS T1IpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sxLDJdJywgJyRbKl0nIFJFVFVSTklORyBq c29uYiBFTVBUWSBPQkpFQ1QgT04gRVJST1IpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sz LDRdJywgJyRbKl0nIFJFVFVSTklORyBiaWdpbnRbXSBFTVBUWSBPQkpFQ1QgT04gRVJST1IpOwor U0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJyJbMyw0XSInLCAnJFsqXScgUkVUVVJOSU5HIGJpZ2lu dFtdIEVNUFRZIE9CSkVDVCBPTiBFUlJPUik7CisKKy0tIENvZXJjaW9uIGZhaWxzIHdpdGggcXVv dGVzIG9uCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnIjEyMy4xIicsICckJyBSRVRVUk5JTkcg aW50MiBlcnJvciBvbiBlcnJvcik7CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnIjEyMy4xIics ICckJyBSRVRVUk5JTkcgaW50NCBlcnJvciBvbiBlcnJvcik7CitTRUxFQ1QgSlNPTl9RVUVSWShq c29uYiAnIjEyMy4xIicsICckJyBSRVRVUk5JTkcgaW50OCBlcnJvciBvbiBlcnJvcik7CitTRUxF Q1QgSlNPTl9RVUVSWShqc29uYiAnIjEyMy4xIicsICckJyBSRVRVUk5JTkcgYm9vbCBlcnJvciBv biBlcnJvcik7CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnIjEyMy4xIicsICckJyBSRVRVUk5J TkcgbnVtZXJpYyBlcnJvciBvbiBlcnJvcik7CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnIjEy My4xIicsICckJyBSRVRVUk5JTkcgcmVhbCBlcnJvciBvbiBlcnJvcik7CitTRUxFQ1QgSlNPTl9R VUVSWShqc29uYiAnIjEyMy4xIicsICckJyBSRVRVUk5JTkcgZmxvYXQ4IGVycm9yIG9uIGVycm9y KTsKKy0tIEZpbmUgd2l0aCBPTUlUIFFVT1RFUworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJyIx MjMuMSInLCAnJCcgUkVUVVJOSU5HIGludDIgb21pdCBxdW90ZXMgZXJyb3Igb24gZXJyb3IpOwor U0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJyIxMjMuMSInLCAnJCcgUkVUVVJOSU5HIGZsb2F0OCBv bWl0IHF1b3RlcyBlcnJvciBvbiBlcnJvcik7CisKKy0tIFJFVFVHTklORyBwc2V1ZG8tdHlwZXMg bm90IGFsbG93ZWQKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMyw0XScsICckWypdJyBSRVRV Uk5JTkcgYW55YXJyYXkgRU1QVFkgT0JKRUNUIE9OIEVSUk9SKTsKKworU0VMRUNUCisJeCwgeSwK KwlKU09OX1FVRVJZKAorCQlqc29uYiAnWzEsMiwzLDQsNSxudWxsXScsCisJCSckWypdID8gKEAg Pj0gJHggJiYgQCA8PSAkeSknCisJCVBBU1NJTkcgeCBBUyB4LCB5IEFTIHkKKwkJV0lUSCBDT05E SVRJT05BTCBXUkFQUEVSCisJCUVNUFRZIEFSUkFZIE9OIEVNUFRZCisJKSBsaXN0CitGUk9NCisJ Z2VuZXJhdGVfc2VyaWVzKDAsIDQpIHgsCisJZ2VuZXJhdGVfc2VyaWVzKDAsIDQpIHk7CisKKy0t IHJlY29yZCB0eXBlIHJldHVybmluZyB3aXRoIHF1b3RlcyBiZWhhdmlvci4KK0NSRUFURSBUWVBF IGNvbXBfYWJjIEFTIChhIHRleHQsIGIgaW50LCBjIHRpbWVzdGFtcCk7CitTRUxFQ1QgSlNPTl9R VUVSWShqc29uYid7InJlYyI6ICIoYWJjLDQyLDAxLjAyLjIwMDMpIn0nLCAnJC5yZWMnIHJldHVy bmluZyBjb21wX2FiYyBvbWl0IHF1b3Rlcyk7CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYid7InJl YyI6ICIoYWJjLDQyLDAxLjAyLjIwMDMpIn0nLCAnJC5yZWMnIHJldHVybmluZyBjb21wX2FiYyBr ZWVwIHF1b3Rlcyk7CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYid7InJlYyI6ICIoYWJjLDQyLDAx LjAyLjIwMDMpIn0nLCAnJC5yZWMnIHJldHVybmluZyBjb21wX2FiYyBrZWVwIHF1b3RlcyBlcnJv ciBvbiBlcnJvcik7CitEUk9QIFRZUEUgY29tcF9hYmM7CisKKy0tIEV4dGVuc2lvbjogcmVjb3Jk IHR5cGVzIHJldHVybmluZworQ1JFQVRFIFRZUEUgc3FsanNvbmJfcmVjIEFTIChhIGludCwgdCB0 ZXh0LCBqcyBqc29uLCBqYiBqc29uYiwganNhIGpzb25bXSk7CitDUkVBVEUgVFlQRSBzcWxqc29u Yl9yZWNhIEFTIChyZWNhIHNxbGpzb25iX3JlY1tdKTsKKworU0VMRUNUIEpTT05fUVVFUlkoanNv bmIgJ1t7ImEiOiAxLCAiYiI6ICJmb28iLCAidCI6ICJhYWEiLCAianMiOiBbMSwgIjIiLCB7fV0s ICJqYiI6IHsieCI6IFsxLCAiMiIsIHt9XX19LCAgeyJhIjogMn1dJywgJyRbMF0nIFJFVFVSTklO RyBzcWxqc29uYl9yZWMpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1t7ImEiOiAiYSIsICJi IjogImZvbyIsICJ0IjogImFhYSIsICJqcyI6IFsxLCAiMiIsIHt9XSwgImpiIjogeyJ4IjogWzEs ICIyIiwge31dfX0sICB7ImEiOiAyfV0nLCAnJFswXScgUkVUVVJOSU5HIHNxbGpzb25iX3JlYyBF UlJPUiBPTiBFUlJPUik7CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnW3siYSI6ICJhIiwgImIi OiAiZm9vIiwgInQiOiAiYWFhIiwgImpzIjogWzEsICIyIiwge31dLCAiamIiOiB7IngiOiBbMSwg IjIiLCB7fV19fSwgIHsiYSI6IDJ9XScsICckWzBdJyBSRVRVUk5JTkcgc3FsanNvbmJfcmVjKTsK K1NFTEVDVCAqIEZST00gdW5uZXN0KChKU09OX1FVRVJZKGpzb25iICd7ImpzYSI6ICBbeyJhIjog MSwgImIiOiBbImZvbyJdfSwgeyJhIjogMiwgImMiOiB7fX0sIDEyM119JywgJyQnIFJFVFVSTklO RyBzcWxqc29uYl9yZWMpKS5qc2EpOworU0VMRUNUICogRlJPTSB1bm5lc3QoKEpTT05fUVVFUlko anNvbmIgJ3sicmVjYSI6IFt7ImEiOiAxLCAidCI6IFsiZm9vIiwgW11dfSwgeyJhIjogMiwgImpi IjogW3t9LCB0cnVlXX1dfScsICckJyBSRVRVUk5JTkcgc3FsanNvbmJfcmVjYSkpLnJlY2EpOwor CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnW3siYSI6IDEsICJiIjogImZvbyIsICJ0IjogImFh YSIsICJqcyI6IFsxLCAiMiIsIHt9XSwgImpiIjogeyJ4IjogWzEsICIyIiwge31dfX0sICB7ImEi OiAyfV0nLCAnJFswXScgUkVUVVJOSU5HIGpzb25wYXRoKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpz b25iICdbeyJhIjogMSwgImIiOiAiZm9vIiwgInQiOiAiYWFhIiwgImpzIjogWzEsICIyIiwge31d LCAiamIiOiB7IngiOiBbMSwgIjIiLCB7fV19fSwgIHsiYSI6IDJ9XScsICckWzBdJyBSRVRVUk5J TkcganNvbnBhdGggRVJST1IgT04gRVJST1IpOworCistLSBFeHRlbnNpb246IGFycmF5IHR5cGVz IHJldHVybmluZworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sxLDIsbnVsbCwiMyJdJywgJyRb Kl0nIFJFVFVSTklORyBpbnRbXSBXSVRIIFdSQVBQRVIpOworU0VMRUNUIEpTT05fUVVFUlkoanNv bmIgJ1sxLDIsbnVsbCwiYSJdJywgJyRbKl0nIFJFVFVSTklORyBpbnRbXSBXSVRIIFdSQVBQRVIg RVJST1IgT04gRVJST1IpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sxLDIsbnVsbCwiYSJd JywgJyRbKl0nIFJFVFVSTklORyBpbnRbXSBXSVRIIFdSQVBQRVIpOworU0VMRUNUICogRlJPTSB1 bm5lc3QoSlNPTl9RVUVSWShqc29uYiAnW3siYSI6IDEsICJ0IjogWyJmb28iLCBbXV19LCB7ImEi OiAyLCAiamIiOiBbe30sIHRydWVdfV0nLCAnJCcgUkVUVVJOSU5HIHNxbGpzb25iX3JlY1tdKSk7 CisKKy0tIEV4dGVuc2lvbjogZG9tYWluIHR5cGVzIHJldHVybmluZworU0VMRUNUIEpTT05fUVVF UlkoanNvbmIgJ3siYSI6IDF9JywgJyQuYScgUkVUVVJOSU5HIHNxbGpzb25iX2ludF9ub3RfbnVs bCk7CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAneyJhIjogMX0nLCAnJC5iJyBSRVRVUk5JTkcg c3FsanNvbmJfaW50X25vdF9udWxsKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICd7ImEiOiAx fScsICckLmInIFJFVFVSTklORyBzcWxqc29uYl9pbnRfbm90X251bGwgRVJST1IgT04gRVJST1Ip OworCistLSBUZXN0IHRpbWVzdGFtcHR6IHBhc3NpbmcgYW5kIG91dHB1dAorU0VMRUNUIEpTT05f UVVFUlkoanNvbmIgJ251bGwnLCAnJHRzJyBQQVNTSU5HIHRpbWVzdGFtcHR6ICcyMDE4LTAyLTIx IDEyOjM0OjU2ICsxMCcgQVMgdHMpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ251bGwnLCAn JHRzJyBQQVNTSU5HIHRpbWVzdGFtcHR6ICcyMDE4LTAyLTIxIDEyOjM0OjU2ICsxMCcgQVMgdHMg UkVUVVJOSU5HIGpzb24pOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ251bGwnLCAnJHRzJyBQ QVNTSU5HIHRpbWVzdGFtcHR6ICcyMDE4LTAyLTIxIDEyOjM0OjU2ICsxMCcgQVMgdHMgUkVUVVJO SU5HIGpzb25iKTsKKworLS0gVGVzdCBjb25zdHJhaW50cworCitDUkVBVEUgVEFCTEUgdGVzdF9q c29uYl9jb25zdHJhaW50cyAoCisJanMgdGV4dCwKKwlpIGludCwKKwl4IGpzb25iIERFRkFVTFQg SlNPTl9RVUVSWShqc29uYiAnWzEsMl0nLCAnJFsqXScgV0lUSCBXUkFQUEVSKQorCUNPTlNUUkFJ TlQgdGVzdF9qc29uYl9jb25zdHJhaW50MQorCQlDSEVDSyAoanMgSVMgSlNPTikKKwlDT05TVFJB SU5UIHRlc3RfanNvbmJfY29uc3RyYWludDIKKwkJQ0hFQ0sgKEpTT05fRVhJU1RTKGpzOjpqc29u YiwgJyQuYScgUEFTU0lORyBpICsgNSBBUyBpbnQsIGk6OnRleHQgQVMgdHh0LCBhcnJheVsxLDIs M10gYXMgYXJyKSkKKwlDT05TVFJBSU5UIHRlc3RfanNvbmJfY29uc3RyYWludDMKKwkJQ0hFQ0sg KEpTT05fVkFMVUUoanM6Ompzb25iLCAnJC5hJyBSRVRVUk5JTkcgaW50IERFRkFVTFQgJzEyJyBP TiBFTVBUWSBFUlJPUiBPTiBFUlJPUikgPiBpKQorCUNPTlNUUkFJTlQgdGVzdF9qc29uYl9jb25z dHJhaW50NAorCQlDSEVDSyAoSlNPTl9RVUVSWShqczo6anNvbmIsICckLmEnIFdJVEggQ09ORElU SU9OQUwgV1JBUFBFUiBFTVBUWSBPQkpFQ1QgT04gRVJST1IpIDwganNvbmIgJ1sxMF0nKQorCUNP TlNUUkFJTlQgdGVzdF9qc29uYl9jb25zdHJhaW50NQorCQlDSEVDSyAoSlNPTl9RVUVSWShqczo6 anNvbmIsICckLmEnIFJFVFVSTklORyBjaGFyKDUpIE9NSVQgUVVPVEVTIEVNUFRZIEFSUkFZIE9O IEVNUFRZKSA+ICAnYScgQ09MTEFURSAiQyIpCispOworCitcZCB0ZXN0X2pzb25iX2NvbnN0cmFp bnRzCisKK1NFTEVDVCBjaGVja19jbGF1c2UKK0ZST00gaW5mb3JtYXRpb25fc2NoZW1hLmNoZWNr X2NvbnN0cmFpbnRzCitXSEVSRSBjb25zdHJhaW50X25hbWUgTElLRSAndGVzdF9qc29uYl9jb25z dHJhaW50JScKK09SREVSIEJZIDE7CisKK1NFTEVDVCBwZ19nZXRfZXhwcihhZGJpbiwgYWRyZWxp ZCkKK0ZST00gcGdfYXR0cmRlZgorV0hFUkUgYWRyZWxpZCA9ICd0ZXN0X2pzb25iX2NvbnN0cmFp bnRzJzo6cmVnY2xhc3MKK09SREVSIEJZIDE7CisKK0lOU0VSVCBJTlRPIHRlc3RfanNvbmJfY29u c3RyYWludHMgVkFMVUVTICgnJywgMSk7CitJTlNFUlQgSU5UTyB0ZXN0X2pzb25iX2NvbnN0cmFp bnRzIFZBTFVFUyAoJzEnLCAxKTsKK0lOU0VSVCBJTlRPIHRlc3RfanNvbmJfY29uc3RyYWludHMg VkFMVUVTICgnW10nKTsKK0lOU0VSVCBJTlRPIHRlc3RfanNvbmJfY29uc3RyYWludHMgVkFMVUVT ICgneyJiIjogMX0nLCAxKTsKK0lOU0VSVCBJTlRPIHRlc3RfanNvbmJfY29uc3RyYWludHMgVkFM VUVTICgneyJhIjogMX0nLCAxKTsKK0lOU0VSVCBJTlRPIHRlc3RfanNvbmJfY29uc3RyYWludHMg VkFMVUVTICgneyJhIjogN30nLCAxKTsKK0lOU0VSVCBJTlRPIHRlc3RfanNvbmJfY29uc3RyYWlu dHMgVkFMVUVTICgneyJhIjogMTB9JywgMSk7CisKK0RST1AgVEFCTEUgdGVzdF9qc29uYl9jb25z dHJhaW50czsKKworLS0gVGVzdCBtdXRhYmlsaWx5IG9mIHF1ZXJ5IGZ1bmN0aW9ucworQ1JFQVRF IFRBQkxFIHRlc3RfanNvbmJfbXV0YWJpbGl0eShqcyBqc29uYiwgYiBpbnQpOworQ1JFQVRFIElO REVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQnKSk7CitDUkVB VEUgSU5ERVggT04gdGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJC5hWzBd JykpOworQ1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShq cywgJyQudGltZSgpJykpOworQ1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAo SlNPTl9RVUVSWShqcywgJyQuZGF0ZSgpJykpOworQ1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJf bXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQudGltZV90eigpJykpOworQ1JFQVRFIElOREVY IE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQudGltZXN0YW1wKCkn KSk7CitDUkVBVEUgSU5ERVggT04gdGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpz LCAnJC50aW1lc3RhbXBfdHooKScpKTsKKworQ1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0 YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQuYSA/IChALmRhdGUoKSA8ICQudGltZV90eigpKScp KTsKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05fUVVFUlkoanMs ICckLmEgPyAoQC5kYXRlKCkgPCAkLnRpbWUoKSknKSk7CitDUkVBVEUgSU5ERVggT04gdGVzdF9q c29uYl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJC5hID8gKEAudGltZSgpIDwgJC50aW1l KCkpJykpOworQ1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVS WShqcywgJyQuYSA/IChALnRpbWUoKSA8ICQudGltZV90eigpKScpKTsKK0NSRUFURSBJTkRFWCBP TiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05fUVVFUlkoanMsICckLmEgPyAoQC50aW1lc3Rh bXAoKSA8ICQudGltZXN0YW1wX3R6KCkpJykpOworQ1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJf bXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQuYSA/IChALnRpbWVzdGFtcF90eigpIDwgJC50 aW1lc3RhbXBfdHooKSknKSk7CisKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxp dHkgKEpTT05fUVVFUlkoanMsICckLmEgPyAoQC50aW1lKCkgPCAkLmRhdGV0aW1lKCJISDpNSSBU WkgiKSknKSk7CitDUkVBVEUgSU5ERVggT04gdGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09OX1FV RVJZKGpzLCAnJC5hID8gKEAuZGF0ZSgpIDwgJC5kYXRldGltZSgiSEg6TUkgVFpIIikpJykpOwor Q1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQu YSA/IChALnRpbWVzdGFtcCgpIDwgJC5kYXRldGltZSgiSEg6TUkgVFpIIikpJykpOworQ1JFQVRF IElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQuYSA/IChA LnRpbWVzdGFtcCgpIDwgJC5kYXRldGltZSgiSEg6TUkiKSknKSk7CitDUkVBVEUgSU5ERVggT04g dGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJC5hID8gKEAudGltZXN0YW1w X3R6KCkgPCAkLmRhdGV0aW1lKCJISDpNSSBUWkgiKSknKSk7CitDUkVBVEUgSU5ERVggT04gdGVz dF9qc29uYl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJC5hID8gKEAudGltZXN0YW1wX3R6 KCkgPCAkLmRhdGV0aW1lKCJISDpNSSIpKScpKTsKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25i X211dGFiaWxpdHkgKEpTT05fUVVFUlkoanMsICckLmRhdGUoKSA8ICR4JyBQQVNTSU5HICcxMjoz NCc6OnRpbWV0eiBBUyB4KSk7CitDUkVBVEUgSU5ERVggT04gdGVzdF9qc29uYl9tdXRhYmlsaXR5 IChKU09OX1FVRVJZKGpzLCAnJC5kYXRlKCkgPCAkeCcgUEFTU0lORyAnMTIzNCc6OmludCBBUyB4 KSk7CitDUkVBVEUgSU5ERVggT04gdGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpz LCAnJC5hID8gKEAudGltZXN0YW1wKDIpIDwgJC50aW1lc3RhbXAoMykpJykpOworCitDUkVBVEUg SU5ERVggT04gdGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJC5kYXRldGlt ZSgpJykpOworQ1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVS WShqcywgJyQuYSA/IChAIDwgJC5kYXRldGltZSgpKScpKTsKK0NSRUFURSBJTkRFWCBPTiB0ZXN0 X2pzb25iX211dGFiaWxpdHkgKEpTT05fUVVFUlkoanMsICckLmEgPyAoQC5kYXRldGltZSgpIDwg JC5kYXRldGltZSgpKScpKTsKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkg KEpTT05fUVVFUlkoanMsICckLmEgPyAoQC5kYXRldGltZSgpIDwgJC5kYXRldGltZSgiSEg6TUkg VFpIIikpJykpOworQ1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9R VUVSWShqcywgJyQuYSA/IChALmRhdGV0aW1lKCJISDpNSSBUWkgiKSA8ICQuZGF0ZXRpbWUoIkhI Ok1JIFRaSCIpKScpKTsKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpT T05fUVVFUlkoanMsICckLmEgPyAoQC5kYXRldGltZSgiSEg6TUkiKSA8ICQuZGF0ZXRpbWUoIllZ LU1NLUREIEhIOk1JIikpJykpOworQ1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0 eSAoSlNPTl9RVUVSWShqcywgJyQuYSA/IChALmRhdGV0aW1lKCJISDpNSSBUWkgiKSA8ICQuZGF0 ZXRpbWUoIllZLU1NLUREIEhIOk1JIikpJykpOworQ1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJf bXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQuZGF0ZXRpbWUoIkhIOk1JIFRaSCIpIDwgJHgn IFBBU1NJTkcgJzEyOjM0Jzo6dGltZXR6IEFTIHgpKTsKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pz b25iX211dGFiaWxpdHkgKEpTT05fUVVFUlkoanMsICckLmRhdGV0aW1lKCJISDpNSSBUWkgiKSA8 ICR5JyBQQVNTSU5HICcxMjozNCc6OnRpbWV0eiBBUyB4KSk7CitDUkVBVEUgSU5ERVggT04gdGVz dF9qc29uYl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJC5kYXRldGltZSgpIDwgJHgnIFBB U1NJTkcgJzEyOjM0Jzo6dGltZXR6IEFTIHgpKTsKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25i X211dGFiaWxpdHkgKEpTT05fUVVFUlkoanMsICckLmRhdGV0aW1lKCkgPCAkeCcgUEFTU0lORyAn MTIzNCc6OmludCBBUyB4KSk7CitDUkVBVEUgSU5ERVggT04gdGVzdF9qc29uYl9tdXRhYmlsaXR5 IChKU09OX1FVRVJZKGpzLCAnJC5kYXRldGltZSgpID8gKEAgPT0gJHgpJyBQQVNTSU5HICcxMjoz NCc6OnRpbWUgQVMgeCkpOworQ1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAo SlNPTl9RVUVSWShqcywgJyQuZGF0ZXRpbWUoIllZLU1NLUREIikgPyAoQCA9PSAkeCknIFBBU1NJ TkcgJzIwMjAtMDctMTQnOjpkYXRlIEFTIHgpKTsKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25i X211dGFiaWxpdHkgKEpTT05fUVVFUlkoanMsICckWzEsICQuYSA/IChALmRhdGV0aW1lKCkgPT0g JHgpXScgUEFTU0lORyAnMTI6MzQnOjp0aW1lIEFTIHgpKTsKK0NSRUFURSBJTkRFWCBPTiB0ZXN0 X2pzb25iX211dGFiaWxpdHkgKEpTT05fUVVFUlkoanMsICckWzEsIDAgdG8gJC5hID8gKEAuZGF0 ZXRpbWUoKSA9PSAkeCldJyBQQVNTSU5HICcxMjozNCc6OnRpbWUgQVMgeCkpOworQ1JFQVRFIElO REVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyRbMSwgJC5hID8g KEAuZGF0ZXRpbWUoIkhIOk1JIikgPT0gJHgpXScgUEFTU0lORyAnMTI6MzQnOjp0aW1lIEFTIHgp KTsKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05fVkFMVUUoanMs ICckJyBERUZBVUxUIHJhbmRvbSgpOjppbnQgT04gRVJST1IpKTsKKworLS0gREVGQVVMVCBleHBy ZXNzaW9uCitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiByZXRfc2V0aW50KCkgUkVUVVJOUyBT RVRPRiBpbnRlZ2VyIEFTCiskJAorQkVHSU4KKyAgICBSRVRVUk4gUVVFUlkgRVhFQ1VURSAnc2Vs ZWN0IDEgdW5pb24gYWxsIHNlbGVjdCAxJzsKK0VORDsKKyQkCitMQU5HVUFHRSBwbHBnc3FsIElN TVVUQUJMRTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzLCAnJCcgIFJFVFVSTklORyBpbnQgREVGQVVM VCByZXRfc2V0aW50KCkgT04gRVJST1IpIEZST00gdGVzdF9qc29uYl9tdXRhYmlsaXR5OworU0VM RUNUIEpTT05fUVVFUlkoanMsICckJyAgUkVUVVJOSU5HIGludCBERUZBVUxUIGIgKyAxIE9OIEVS Uk9SKSBGUk9NIHRlc3RfanNvbmJfbXV0YWJpbGl0eTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzLCAn JCcgIFJFVFVSTklORyBpbnQgREVGQVVMVCBzdW0oMSkgb3ZlcigpIE9OIEVSUk9SKSBGUk9NIHRl c3RfanNvbmJfbXV0YWJpbGl0eTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzLCAnJCcgIFJFVFVSTklO RyBpbnQgREVGQVVMVCAoU0VMRUNUIDEpIE9OIEVSUk9SKSBGUk9NIHRlc3RfanNvbmJfbXV0YWJp bGl0eTsKK0RST1AgVEFCTEUgdGVzdF9qc29uYl9tdXRhYmlsaXR5OworRFJPUCBGVU5DVElPTiBy ZXRfc2V0aW50OworCistLSBFeHRlbnNpb246IG5vbi1jb25zdGFudCBKU09OIHBhdGgKK1NFTEVD VCBKU09OX0VYSVNUUyhqc29uYiAneyJhIjogMTIzfScsICckJyB8fCAnLicgfHwgJ2EnKTsKK1NF TEVDVCBKU09OX1ZBTFVFKGpzb25iICd7ImEiOiAxMjN9JywgJyQnIHx8ICcuJyB8fCAnYScpOwor U0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ3siYSI6IDEyM30nLCAnJCcgfHwgJy4nIHx8ICdiJyBE RUZBVUxUICdmb28nIE9OIEVNUFRZKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICd7ImEiOiAx MjN9JywgJyQnIHx8ICcuJyB8fCAnYScpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ3siYSI6 IDEyM30nLCAnJCcgfHwgJy4nIHx8ICdhJyBXSVRIIFdSQVBQRVIpOworLS0gU2hvdWxkIGZhaWwg KGludmFsaWQgcGF0aCkKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICd7ImEiOiAxMjN9JywgJ2Vy cm9yJyB8fCAnICcgfHwgJ2Vycm9yJyk7CmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQv dHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4IDk1 YWU3ODQ1ZDguLjM1NWM4MTQ0YTIgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2luZGVudC90eXBl ZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CkBAIC0xMjU5 LDYgKzEyNTksNyBAQCBKb2luCiBKb2luQ29zdFdvcmtzcGFjZQogSm9pbkRvbWFpbgogSm9pbkV4 cHIKK0pzb25GdW5jRXhwcgogSm9pbkhhc2hFbnRyeQogSm9pblBhdGgKIEpvaW5QYXRoRXh0cmFE YXRhCkBAIC0xMjY5LDE4ICsxMjcwLDI4IEBAIEpzT2JqZWN0CiBKc1ZhbHVlCiBKc29uQWdnQ29u c3RydWN0b3IKIEpzb25BZ2dTdGF0ZQorSnNvbkFyZ3VtZW50CiBKc29uQXJyYXlBZ2cKIEpzb25B cnJheUNvbnN0cnVjdG9yCiBKc29uQXJyYXlRdWVyeUNvbnN0cnVjdG9yCiBKc29uQmFzZU9iamVj dEluZm8KK0pzb25CZWhhdmlvcgorSnNvbkJlaGF2aW9yVHlwZQorSnNvbkNvZXJjaW9uCiBKc29u Q29uc3RydWN0b3JFeHByCiBKc29uQ29uc3RydWN0b3JFeHByU3RhdGUKIEpzb25Db25zdHJ1Y3Rv clR5cGUKIEpzb25FbmNvZGluZworSnNvbkV4cHIKK0pzb25FeHByT3AKK0pzb25FeHByUG9zdEV2 YWxTdGF0ZQorSnNvbkV4cHJTdGF0ZQogSnNvbkZvcm1hdAogSnNvbkZvcm1hdFR5cGUKIEpzb25I YXNoRW50cnkKIEpzb25Jc1ByZWRpY2F0ZQorSnNvbkl0ZW1Db2VyY2lvbgorSnNvbkl0ZW1UeXBl CiBKc29uSXRlcmF0ZVN0cmluZ1ZhbHVlc0FjdGlvbgogSnNvbktleVZhbHVlCiBKc29uTGV4Q29u dGV4dApAQCAtMTI5OCw2ICsxMzA5LDcgQEAgSnNvblBhcnNlQ29udGV4dAogSnNvblBhcnNlRXJy b3JUeXBlCiBKc29uUGF0aAogSnNvblBhdGhCb29sCitKc29uUGF0aERhdGF0eXBlU3RhdHVzCiBK c29uUGF0aEV4ZWNDb250ZXh0CiBKc29uUGF0aEV4ZWNSZXN1bHQKIEpzb25QYXRoR2luQWRkUGF0 aEl0ZW1GdW5jCkBAIC0xMzEwLDEwICsxMzIyLDE1IEBAIEpzb25QYXRoR2luUGF0aEl0ZW0KIEpz b25QYXRoSXRlbQogSnNvblBhdGhJdGVtVHlwZQogSnNvblBhdGhLZXl3b3JkCitKc29uUGF0aE11 dGFibGVDb250ZXh0CiBKc29uUGF0aFBhcnNlSXRlbQogSnNvblBhdGhQYXJzZVJlc3VsdAogSnNv blBhdGhQcmVkaWNhdGVDYWxsYmFjawogSnNvblBhdGhTdHJpbmcKK0pzb25QYXRoVmFyaWFibGUK K0pzb25QYXRoVmFyaWFibGVFdmFsQ29udGV4dAorSnNvblBhdGhWYXJDYWxsYmFjaworSnNvblF1 b3RlcwogSnNvblJldHVybmluZwogSnNvblNjYWxhckV4cHIKIEpzb25TZW1BY3Rpb24KQEAgLTEz MzAsNiArMTM0Nyw3IEBAIEpzb25WYWx1ZUV4cHIKIEpzb25WYWx1ZUxpc3QKIEpzb25WYWx1ZUxp c3RJdGVyYXRvcgogSnNvblZhbHVlVHlwZQorSnNvbldyYXBwZXIKIEpzb25iCiBKc29uYkFnZ1N0 YXRlCiBKc29uYkNvbnRhaW5lcgotLSAKMi40My4wCgo= --000000000000eca3d70612dfab27 Content-Type: application/octet-stream; name="v41-0003-JSON_TABLE.patch" Content-Disposition: attachment; filename="v41-0003-JSON_TABLE.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ltdopg5p2 RnJvbSAxNDU1OWU4YjA2YjgzMzM1ZmM0ZjMyNjA5NmU4NjVjMjU1Yjk0YzAzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFRodSwgMTggSmFuIDIwMjQgMTg6MDA6MDYgKzA5MDAKU3ViamVjdDogW1BBVENIIHY0 MSAzLzNdIEpTT05fVEFCTEUKTUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB0ZXh0L3Bs YWluOyBjaGFyc2V0PVVURi04CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKClRoaXMg ZmVhdHVyZSBhbGxvd3MganNvbmIgZGF0YSB0byBiZSB0cmVhdGVkIGFzIGEgdGFibGUgYW5kIHRo dXMKdXNlZCBpbiBhIEZST00gY2xhdXNlIGxpa2Ugb3RoZXIgdGFidWxhciBkYXRhLiBEYXRhIGNh biBiZSBzZWxlY3RlZApmcm9tIHRoZSBqc29uYiB1c2luZyBqc29ucGF0aCBleHByZXNzaW9ucywg YW5kIGhvaXN0ZWQgb3V0IG9mIG5lc3RlZApzdHJ1Y3R1cmVzIGluIHRoZSBqc29uYiB0byBmb3Jt IG11bHRpcGxlIHJvd3MsIG1vcmUgb3IgbGVzcyBsaWtlIGFuCm91dGVyIGpvaW4uCgpUaGlzIGFs c28gYWRkcyB0aGUgUExBTiBjbGF1c2VzIGZvciBKU09OX1RBQkxFLCB3aGljaCBhbGxvdyB0aGUg dXNlcgp0byBzcGVjaWZ5IGhvdyBkYXRhIGZyb20gbmVzdGVkIHBhdGhzIGFyZSBqb2luZWQsIGFs bG93aW5nCmNvbnNpZGVyYWJsZSBmcmVlZG9tIGluIHNoYXBpbmcgdGhlIHRhYnVsYXIgb3V0cHV0 IG9mIEpTT05fVEFCTEUuClBMQU4gREVGQVVMVCBhbGxvd3MgdGhlIHVzZXIgdG8gc3BlY2lmeSB0 aGUgZ2xvYmFsIHN0cmF0ZWdpZXMgd2hlbgpkZWFsaW5nIHdpdGggc2libGluZyBvciBjaGlsZCBu ZXN0ZWQgcGF0aHMuIFRoZSBpcyBvZnRlbiBzdWZmaWNpZW50CnRvIGFjaGlldmUgdGhlIG5lY2Vz c2FyeSBnb2FsLCBhbmQgaXMgY29uc2lkZXJhYmx5IHNpbXBsZXIgdGhhbiB0aGUKZnVsbCBQTEFO IGNsYXVzZSwgd2hpY2ggYWxsb3dzIHRoZSB1c2VyIHRvIHNwZWNpZnkgdGhlIHN0cmF0ZWd5IHRv IGJlCnVzZWQgZm9yIGVhY2ggbmFtZWQgbmVzdGVkIHBhdGguCgpBdXRob3I6IE5pa2l0YSBHbHVr aG92IDxuLmdsdWhvdkBwb3N0Z3Jlc3Byby5ydT4KQXV0aG9yOiBUZW9kb3IgU2lnYWV2IDx0ZW9k b3JAc2lnYWV2LnJ1PgpBdXRob3I6IE9sZWcgQmFydHVub3YgPG9iYXJ0dW5vdkBnbWFpbC5jb20+ CkF1dGhvcjogQWxleGFuZGVyIEtvcm90a292IDxhZWtvcm90a292QGdtYWlsLmNvbT4KQXV0aG9y OiBBbmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1bnNsYW5lLm5ldD4KQXV0aG9yOiBBbWl0IExhbmdv dGUgPGFtaXRsYW5nb3RlMDlAZ21haWwuY29tPgpBdXRob3I6IEppYW4gSGUgPGppYW4udW5pdmVy c2FsaXR5QGdtYWlsLmNvbT4KClJldmlld2VycyBoYXZlIGluY2x1ZGVkIChpbiBubyBwYXJ0aWN1 bGFyIG9yZGVyKSBBbmRyZXMgRnJldW5kLCBBbGV4YW5kZXIKS29yb3Rrb3YsIFBhdmVsIFN0ZWh1 bGUsIEFuZHJldyBBbHN1cCwgRXJpayBSaWprZXJzLCBaaWhvbmcgWXUsCkhpbWFuc2h1IFVwYWRo eWF5YSwgRGFuaWVsIEd1c3RhZnNzb24sIEp1c3RpbiBQcnl6YnksIMOBbHZhcm8gSGVycmVyYSwK amlhbiBoZQoKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9jZDBiYjkzNS0wMTU4LTc4 YTctMDhiNS05MDQ4ODZkZWFjNGJAcG9zdGdyZXNwcm8ucnUKRGlzY3Vzc2lvbjogaHR0cHM6Ly9w b3N0Z3IuZXMvbS8yMDIyMDYxNjIzMzEzMC5ycGFyaXZhZmlwdDZkb2ozQGFsYXAzLmFuYXJhemVs LmRlCkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vYWJkOWI4M2ItYWE2Ni1mMjMwLTNk NmQtNzM0ODE3ZjA5OTVkJTQwcG9zdGdyZXNxbC5vcmcKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0 Z3IuZXMvbS9DQStIaXdxRTRYVGRmYjFuVz1Pam95X3RRU1JoWXQtcV9rYjZpNWQ0eGNLeXJMQzFO YmdAbWFpbC5nbWFpbC5jb20KLS0tCiBkb2Mvc3JjL3NnbWwvZnVuYy5zZ21sICAgICAgICAgICAg ICAgICAgICAgICAgfCAgNTEwICsrKysrKysKIHNyYy9iYWNrZW5kL2NhdGFsb2cvc3FsX2ZlYXR1 cmVzLnR4dCAgICAgICAgICB8ICAgIDYgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHBy SW50ZXJwLmMgICAgICAgICB8ICAgIDYgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRhYmxl RnVuY3NjYW4uYyAgICAgIHwgICAyNyArLQogc3JjL2JhY2tlbmQvbm9kZXMvbWFrZWZ1bmNzLmMg ICAgICAgICAgICAgICAgIHwgIDEwOCArKwogc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMg ICAgICAgICAgICAgICAgIHwgICAzOCArCiBzcmMvYmFja2VuZC9wYXJzZXIvTWFrZWZpbGUgICAg ICAgICAgICAgICAgICAgfCAgICAxICsKIHNyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgICAgICAg ICAgICAgICAgICAgICB8ICAyOTkgKysrLQogc3JjL2JhY2tlbmQvcGFyc2VyL21lc29uLmJ1aWxk ICAgICAgICAgICAgICAgIHwgICAgMSArCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfY2xhdXNl LmMgICAgICAgICAgICAgfCAgIDE0ICstCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5j ICAgICAgICAgICAgICAgfCAgIDUzICstCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfanNvbnRh YmxlLmMgICAgICAgICAgfCAgNzE4ICsrKysrKysrKwogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNl X3JlbGF0aW9uLmMgICAgICAgICAgIHwgICAgOCArLQogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNl X3RhcmdldC5jICAgICAgICAgICAgIHwgICAgMyArCiBzcmMvYmFja2VuZC91dGlscy9hZHQvanNv bnBhdGhfZXhlYy5jICAgICAgICAgfCAgNTQ3ICsrKysrKysKIHNyYy9iYWNrZW5kL3V0aWxzL2Fk dC9ydWxldXRpbHMuYyAgICAgICAgICAgICB8ICAyNzkgKysrLQogc3JjL2luY2x1ZGUvbm9kZXMv ZXhlY25vZGVzLmggICAgICAgICAgICAgICAgIHwgICAgMiArCiBzcmMvaW5jbHVkZS9ub2Rlcy9t YWtlZnVuY3MuaCAgICAgICAgICAgICAgICAgfCAgICA5ICsKIHNyYy9pbmNsdWRlL25vZGVzL3Bh cnNlbm9kZXMuaCAgICAgICAgICAgICAgICB8ICAxMDkgKysKIHNyYy9pbmNsdWRlL25vZGVzL3By aW1ub2Rlcy5oICAgICAgICAgICAgICAgICB8ICAgNjAgKy0KIHNyYy9pbmNsdWRlL3BhcnNlci9r d2xpc3QuaCAgICAgICAgICAgICAgICAgICB8ICAgIDQgKwogc3JjL2luY2x1ZGUvcGFyc2VyL3Bh cnNlX2NsYXVzZS5oICAgICAgICAgICAgIHwgICAgMyArCiBzcmMvaW5jbHVkZS91dGlscy9qc29u cGF0aC5oICAgICAgICAgICAgICAgICAgfCAgICAzICsKIHNyYy9pbnRlcmZhY2VzL2VjcGcvdGVz dC9lY3BnX3NjaGVkdWxlICAgICAgICB8ICAgIDEgKwogLi4uL3Rlc3QvZXhwZWN0ZWQvc3FsLXNx bGpzb25fanNvbnRhYmxlLmMgICAgIHwgIDEzMiArKwogLi4uL2V4cGVjdGVkL3NxbC1zcWxqc29u X2pzb250YWJsZS5zdGRlcnIgICAgIHwgICAyMCArCiAuLi4vZXhwZWN0ZWQvc3FsLXNxbGpzb25f anNvbnRhYmxlLnN0ZG91dCAgICAgfCAgICAwCiBzcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3Qvc3Fs L01ha2VmaWxlICAgICAgICAgfCAgICAxICsKIHNyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9zcWwv bWVzb24uYnVpbGQgICAgICB8ICAgIDEgKwogLi4uL2VjcGcvdGVzdC9zcWwvc3FsanNvbl9qc29u dGFibGUucGdjICAgICAgIHwgICAzMiArCiAuLi4vcmVncmVzcy9leHBlY3RlZC9zcWxqc29uX2pz b250YWJsZS5vdXQgICAgfCAxMzMzICsrKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNz L3BhcmFsbGVsX3NjaGVkdWxlICAgICAgICAgICAgfCAgICAyICstCiBzcmMvdGVzdC9yZWdyZXNz L3NxbC9zcWxqc29uX2pzb250YWJsZS5zcWwgICAgfCAgNzI5ICsrKysrKysrKwogc3JjL3Rvb2xz L3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAgICAgICAgICAgIHwgICAxNiArCiAzNCBmaWxlcyBj aGFuZ2VkLCA1MDI4IGluc2VydGlvbnMoKyksIDQ3IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9qc29udGFibGUuYwogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9leHBlY3RlZC9zcWwtc3FsanNvbl9qc29u dGFibGUuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9leHBl Y3RlZC9zcWwtc3FsanNvbl9qc29udGFibGUuc3RkZXJyCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3Jj L2ludGVyZmFjZXMvZWNwZy90ZXN0L2V4cGVjdGVkL3NxbC1zcWxqc29uX2pzb250YWJsZS5zdGRv dXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3Qvc3FsL3NxbGpz b25fanNvbnRhYmxlLnBnYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvc3FsanNvbl9qc29udGFibGUub3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3Qv cmVncmVzcy9zcWwvc3FsanNvbl9qc29udGFibGUuc3FsCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9z Z21sL2Z1bmMuc2dtbCBiL2RvYy9zcmMvc2dtbC9mdW5jLnNnbWwKaW5kZXggMTQ0NzEzNTQxMC4u MTQ4OGQ2MWExNiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2Z1bmMuc2dtbAorKysgYi9kb2Mv c3JjL3NnbWwvZnVuYy5zZ21sCkBAIC0xODgwNSw2ICsxODgwNSw1MTYgQEAgREVUQUlMOiAgTWlz c2luZyAiXSIgYWZ0ZXIgYXJyYXkgZGltZW5zaW9ucy4KICAgIDwvdGdyb3VwPgogICA8L3RhYmxl PgogICA8L3NlY3QyPgorCisgPHNlY3QyIGlkPSJmdW5jdGlvbnMtc3FsanNvbi10YWJsZSI+Cisg IDx0aXRsZT5KU09OX1RBQkxFPC90aXRsZT4KKyAgPGluZGV4dGVybT4KKyAgIDxwcmltYXJ5Pmpz b25fdGFibGU8L3ByaW1hcnk+CisgIDwvaW5kZXh0ZXJtPgorCisgIDxwYXJhPgorICAgPGZ1bmN0 aW9uPmpzb25fdGFibGU8L2Z1bmN0aW9uPiBpcyBhbiBTUUwvSlNPTiBmdW5jdGlvbiB3aGljaAor ICAgcXVlcmllcyA8YWNyb255bT5KU09OPC9hY3JvbnltPiBkYXRhCisgICBhbmQgcHJlc2VudHMg dGhlIHJlc3VsdHMgYXMgYSByZWxhdGlvbmFsIHZpZXcsIHdoaWNoIGNhbiBiZSBhY2Nlc3NlZCBh cyBhCisgICByZWd1bGFyIFNRTCB0YWJsZS4gWW91IGNhbiBvbmx5IHVzZSA8ZnVuY3Rpb24+anNv bl90YWJsZTwvZnVuY3Rpb24+IGluc2lkZSB0aGUKKyAgIDxsaXRlcmFsPkZST008L2xpdGVyYWw+ IGNsYXVzZSBvZiBhIDxsaXRlcmFsPlNFTEVDVDwvbGl0ZXJhbD4gc3RhdGVtZW50LgorICA8L3Bh cmE+CisKKyAgPHBhcmE+CisgICBUYWtpbmcgSlNPTiBkYXRhIGFzIGlucHV0LCA8ZnVuY3Rpb24+ anNvbl90YWJsZTwvZnVuY3Rpb24+IHVzZXMKKyAgIGEgcGF0aCBleHByZXNzaW9uIHRvIGV4dHJh Y3QgYSBwYXJ0IG9mIHRoZSBwcm92aWRlZCBkYXRhIHRoYXQKKyAgIHdpbGwgYmUgdXNlZCBhcyBh IDxmaXJzdHRlcm0+cm93IHBhdHRlcm48L2ZpcnN0dGVybT4gZm9yIHRoZQorICAgY29uc3RydWN0 ZWQgdmlldy4gRWFjaCBTUUwvSlNPTiBpdGVtIGF0IHRoZSB0b3AgbGV2ZWwgb2YgdGhlIHJvdyBw YXR0ZXJuIHNlcnZlcworICAgYXMgdGhlIHNvdXJjZSBmb3IgYSBzZXBhcmF0ZSByb3cgaW4gdGhl IGNvbnN0cnVjdGVkIHJlbGF0aW9uYWwgdmlldy4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgorICAg VG8gc3BsaXQgdGhlIHJvdyBwYXR0ZXJuIGludG8gY29sdW1ucywgPGZ1bmN0aW9uPmpzb25fdGFi bGU8L2Z1bmN0aW9uPgorICAgcHJvdmlkZXMgdGhlIDxsaXRlcmFsPkNPTFVNTlM8L2xpdGVyYWw+ IGNsYXVzZSB0aGF0IGRlZmluZXMgdGhlCisgICBzY2hlbWEgb2YgdGhlIGNyZWF0ZWQgdmlldy4g Rm9yIGVhY2ggY29sdW1uIHRvIGJlIGNvbnN0cnVjdGVkLAorICAgdGhpcyBjbGF1c2UgcHJvdmlk ZXMgYSBzZXBhcmF0ZSBwYXRoIGV4cHJlc3Npb24gdGhhdCBldmFsdWF0ZXMKKyAgIHRoZSByb3cg cGF0dGVybiwgZXh0cmFjdHMgYSBKU09OIGl0ZW0sIGFuZCByZXR1cm5zIGl0IGFzIGEKKyAgIHNl cGFyYXRlIFNRTCB2YWx1ZSBmb3IgdGhlIHNwZWNpZmllZCBjb2x1bW4uIElmIHRoZSByZXF1aXJl ZCB2YWx1ZQorICAgaXMgc3RvcmVkIGluIGEgbmVzdGVkIGxldmVsIG9mIHRoZSByb3cgcGF0dGVy biwgaXQgY2FuIGJlIGV4dHJhY3RlZAorICAgdXNpbmcgdGhlIDxsaXRlcmFsPk5FU1RFRCBQQVRI PC9saXRlcmFsPiBzdWJjbGF1c2UuIEpvaW5pbmcgdGhlCisgICBjb2x1bW5zIHJldHVybmVkIGJ5 IDxsaXRlcmFsPk5FU1RFRCBQQVRIPC9saXRlcmFsPiBjYW4gYWRkIG11bHRpcGxlCisgICBuZXcg cm93cyB0byB0aGUgY29uc3RydWN0ZWQgdmlldy4gU3VjaCByb3dzIGFyZSBjYWxsZWQKKyAgIDxm aXJzdHRlcm0+Y2hpbGQgcm93czwvZmlyc3R0ZXJtPiwgYXMgb3Bwb3NlZCB0byB0aGUgPGZpcnN0 dGVybT5wYXJlbnQgcm93PC9maXJzdHRlcm0+CisgICB0aGF0IGdlbmVyYXRlcyB0aGVtLgorICA8 L3BhcmE+CisKKyAgPHBhcmE+CisgICBUaGUgcm93cyBwcm9kdWNlZCBieSA8ZnVuY3Rpb24+SlNP Tl9UQUJMRTwvZnVuY3Rpb24+IGFyZSBsYXRlcmFsbHkKKyAgIGpvaW5lZCB0byB0aGUgcm93IHRo YXQgZ2VuZXJhdGVkIHRoZW0sIHNvIHlvdSBkbyBub3QgaGF2ZSB0byBleHBsaWNpdGx5IGpvaW4K KyAgIHRoZSBjb25zdHJ1Y3RlZCB2aWV3IHdpdGggdGhlIG9yaWdpbmFsIHRhYmxlIGhvbGRpbmcg PGFjcm9ueW0+SlNPTjwvYWNyb255bT4KKyAgIGRhdGEuIE9wdGlvbmFsbHksIHlvdSBjYW4gc3Bl Y2lmeSBob3cgdG8gam9pbiB0aGUgY29sdW1ucyByZXR1cm5lZAorICAgYnkgPGxpdGVyYWw+TkVT VEVEIFBBVEg8L2xpdGVyYWw+IHVzaW5nIHRoZSA8bGl0ZXJhbD5QTEFOPC9saXRlcmFsPiBjbGF1 c2UuCisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgIEVhY2ggPGxpdGVyYWw+TkVTVEVEIFBBVEg8 L2xpdGVyYWw+IGNsYXVzZSBjYW4gZ2VuZXJhdGUgb25lIG9yIG1vcmUKKyAgIGNvbHVtbnMuIENv bHVtbnMgcHJvZHVjZWQgYnkgPGxpdGVyYWw+TkVTVEVEIFBBVEg8L2xpdGVyYWw+cyBhdCB0aGUK KyAgIHNhbWUgbGV2ZWwgYXJlIGNvbnNpZGVyZWQgdG8gYmUgPGZpcnN0dGVybT5zaWJsaW5nczwv Zmlyc3R0ZXJtPiwKKyAgIHdoaWxlIGEgY29sdW1uIHByb2R1Y2VkIGJ5IGEgPGxpdGVyYWw+TkVT VEVEIFBBVEg8L2xpdGVyYWw+IGlzCisgICBjb25zaWRlcmVkIHRvIGJlIGEgY2hpbGQgb2YgdGhl IGNvbHVtbiBwcm9kdWNlZCBieSBhCisgICA8bGl0ZXJhbD5ORVNURUQgUEFUSDwvbGl0ZXJhbD4g b3Igcm93IGV4cHJlc3Npb24gYXQgYSBoaWdoZXIgbGV2ZWwuCisgICBTaWJsaW5nIGNvbHVtbnMg YXJlIGFsd2F5cyBqb2luZWQgZmlyc3QuIE9uY2UgdGhleSBhcmUgcHJvY2Vzc2VkLAorICAgdGhl IHJlc3VsdGluZyByb3dzIGFyZSBqb2luZWQgdG8gdGhlIHBhcmVudCByb3cuCisgIDwvcGFyYT4K KworICA8cGFyYT4KKyAgIFRoZSBzeW50YXggaXM6CisgIDwvcGFyYT4KKworPHN5bm9wc2lzPgor SlNPTl9UQUJMRSAoCisgIDxyZXBsYWNlYWJsZT5jb250ZXh0X2l0ZW08L3JlcGxhY2VhYmxlPiwg PHJlcGxhY2VhYmxlPnBhdGhfZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+IDxvcHRpb25hbD4gQVMg PHJlcGxhY2VhYmxlPmpzb25fcGF0aF9uYW1lPC9yZXBsYWNlYWJsZT4gPC9vcHRpb25hbD4gPG9w dGlvbmFsPiBQQVNTSU5HIHsgPHJlcGxhY2VhYmxlPnZhbHVlPC9yZXBsYWNlYWJsZT4gQVMgPHJl cGxhY2VhYmxlPnZhcm5hbWU8L3JlcGxhY2VhYmxlPiB9IDxvcHRpb25hbD4sIC4uLjwvb3B0aW9u YWw+IDwvb3B0aW9uYWw+CisgIENPTFVNTlMgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+anNvbl90YWJsZV9jb2x1bW48L3JlcGxhY2VhYmxlPiA8b3B0aW9uYWw+LCAuLi48L29wdGlv bmFsPiApCisgIDxvcHRpb25hbD4geyA8bGl0ZXJhbD5FUlJPUjwvbGl0ZXJhbD4gfCA8bGl0ZXJh bD5FTVBUWTwvbGl0ZXJhbD4gfSA8bGl0ZXJhbD5PTiBFUlJPUjwvbGl0ZXJhbD4gPC9vcHRpb25h bD4KKyAgPG9wdGlvbmFsPgorICAgIFBMQU4gKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+anNvbl90YWJsZV9wbGFuPC9yZXBsYWNlYWJsZT4gKSB8CisgICAgUExBTiBERUZBVUxUICgg eyBJTk5FUiB8IE9VVEVSIH0gPG9wdGlvbmFsPiAsIHsgQ1JPU1MgfCBVTklPTiB9IDwvb3B0aW9u YWw+CisgICAgICAgICAgICAgICAgIHwgeyBDUk9TUyB8IFVOSU9OIH0gPG9wdGlvbmFsPiAsIHsg SU5ORVIgfCBPVVRFUiB9IDwvb3B0aW9uYWw+ICkKKyAgPC9vcHRpb25hbD4KKykKKworPHBocmFz ZT4KK3doZXJlIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5qc29uX3RhYmxlX2NvbHVt bjwvcmVwbGFjZWFibGU+IGlzOgorPC9waHJhc2U+CisgICAgPHJlcGxhY2VhYmxlPm5hbWU8L3Jl cGxhY2VhYmxlPiA8cmVwbGFjZWFibGU+dHlwZTwvcmVwbGFjZWFibGU+IDxvcHRpb25hbD4gUEFU SCA8cmVwbGFjZWFibGU+anNvbl9wYXRoX3NwZWNpZmljYXRpb248L3JlcGxhY2VhYmxlPiA8L29w dGlvbmFsPgorICAgICAgICA8b3B0aW9uYWw+IHsgV0lUSE9VVCB8IFdJVEggeyBDT05ESVRJT05B TCB8IDxvcHRpb25hbD5VTkNPTkRJVElPTkFMPC9vcHRpb25hbD4gfSB9IDxvcHRpb25hbD4gQVJS QVkgPC9vcHRpb25hbD4gV1JBUFBFUiA8L29wdGlvbmFsPgorICAgICAgICA8b3B0aW9uYWw+IHsg S0VFUCB8IE9NSVQgfSBRVU9URVMgPG9wdGlvbmFsPiBPTiBTQ0FMQVIgU1RSSU5HIDwvb3B0aW9u YWw+IDwvb3B0aW9uYWw+CisgICAgICAgIDxvcHRpb25hbD4geyBFUlJPUiB8IE5VTEwgfCBERUZB VUxUIDxyZXBsYWNlYWJsZT5leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4gfSBPTiBFTVBUWSA8L29w dGlvbmFsPgorICAgICAgICA8b3B0aW9uYWw+IHsgRVJST1IgfCBOVUxMIHwgREVGQVVMVCA8cmVw bGFjZWFibGU+ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+IH0gT04gRVJST1IgPC9vcHRpb25hbD4K KyAgfCA8cmVwbGFjZWFibGU+bmFtZTwvcmVwbGFjZWFibGU+IDxyZXBsYWNlYWJsZT50eXBlPC9y ZXBsYWNlYWJsZT4gRk9STUFUIEpTT04gPG9wdGlvbmFsPkVOQ09ESU5HIDxsaXRlcmFsPlVURjg8 L2xpdGVyYWw+PC9vcHRpb25hbD4KKyAgICAgICAgPG9wdGlvbmFsPiBQQVRIIDxyZXBsYWNlYWJs ZT5qc29uX3BhdGhfc3BlY2lmaWNhdGlvbjwvcmVwbGFjZWFibGU+IDwvb3B0aW9uYWw+CisgICAg ICAgIDxvcHRpb25hbD4geyBXSVRIT1VUIHwgV0lUSCB7IENPTkRJVElPTkFMIHwgPG9wdGlvbmFs PlVOQ09ORElUSU9OQUw8L29wdGlvbmFsPiB9IH0gPG9wdGlvbmFsPiBBUlJBWSA8L29wdGlvbmFs PiBXUkFQUEVSIDwvb3B0aW9uYWw+CisgICAgICAgIDxvcHRpb25hbD4geyBLRUVQIHwgT01JVCB9 IFFVT1RFUyA8b3B0aW9uYWw+IE9OIFNDQUxBUiBTVFJJTkcgPC9vcHRpb25hbD4gPC9vcHRpb25h bD4KKyAgICAgICAgPG9wdGlvbmFsPiB7IEVSUk9SIHwgTlVMTCB8IEVNUFRZIHsgQVJSQVkgfCBP QkpFQ1QgfSB8IERFRkFVTFQgPHJlcGxhY2VhYmxlPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPiB9 IE9OIEVNUFRZIDwvb3B0aW9uYWw+CisgICAgICAgIDxvcHRpb25hbD4geyBFUlJPUiB8IE5VTEwg fCBFTVBUWSB7IEFSUkFZIHwgT0JKRUNUIH0gfCBERUZBVUxUIDxyZXBsYWNlYWJsZT5leHByZXNz aW9uPC9yZXBsYWNlYWJsZT4gfSBPTiBFUlJPUiA8L29wdGlvbmFsPgorICB8IDxyZXBsYWNlYWJs ZT5uYW1lPC9yZXBsYWNlYWJsZT4gPHJlcGxhY2VhYmxlPnR5cGU8L3JlcGxhY2VhYmxlPiBFWElT VFMgPG9wdGlvbmFsPiBQQVRIIDxyZXBsYWNlYWJsZT5qc29uX3BhdGhfc3BlY2lmaWNhdGlvbjwv cmVwbGFjZWFibGU+IDwvb3B0aW9uYWw+CisgICAgICAgIDxvcHRpb25hbD4geyBFUlJPUiB8IFRS VUUgfCBGQUxTRSB8IFVOS05PV04gfSBPTiBFUlJPUiA8L29wdGlvbmFsPgorICB8IE5FU1RFRCBQ QVRIIDxyZXBsYWNlYWJsZT5qc29uX3BhdGhfc3BlY2lmaWNhdGlvbjwvcmVwbGFjZWFibGU+IDxv cHRpb25hbD4gQVMgPHJlcGxhY2VhYmxlPnBhdGhfbmFtZTwvcmVwbGFjZWFibGU+IDwvb3B0aW9u YWw+CisgICAgICAgIENPTFVNTlMgKCA8cmVwbGFjZWFibGU+anNvbl90YWJsZV9jb2x1bW48L3Jl cGxhY2VhYmxlPiA8b3B0aW9uYWw+LCAuLi48L29wdGlvbmFsPiApCisgIHwgPHJlcGxhY2VhYmxl Pm5hbWU8L3JlcGxhY2VhYmxlPiBGT1IgT1JESU5BTElUWQorPHBocmFzZT4KKzxyZXBsYWNlYWJs ZT5qc29uX3RhYmxlX3BsYW48L3JlcGxhY2VhYmxlPiBpczoKKzwvcGhyYXNlPgorICAgIDxyZXBs YWNlYWJsZT5qc29uX3BhdGhfbmFtZTwvcmVwbGFjZWFibGU+IDxvcHRpb25hbD4geyBPVVRFUiB8 IElOTkVSIH0gPHJlcGxhY2VhYmxlPmpzb25fdGFibGVfcGxhbl9wcmltYXJ5PC9yZXBsYWNlYWJs ZT4gPC9vcHRpb25hbD4KKyAgfCA8cmVwbGFjZWFibGU+anNvbl90YWJsZV9wbGFuX3ByaW1hcnk8 L3JlcGxhY2VhYmxlPiB7IFVOSU9OIDxyZXBsYWNlYWJsZT5qc29uX3RhYmxlX3BsYW5fcHJpbWFy eTwvcmVwbGFjZWFibGU+IH0gPG9wdGlvbmFsPi4uLjwvb3B0aW9uYWw+CisgIHwgPHJlcGxhY2Vh YmxlPmpzb25fdGFibGVfcGxhbl9wcmltYXJ5PC9yZXBsYWNlYWJsZT4geyBDUk9TUyA8cmVwbGFj ZWFibGU+anNvbl90YWJsZV9wbGFuX3ByaW1hcnk8L3JlcGxhY2VhYmxlPiB9IDxvcHRpb25hbD4u Li48L29wdGlvbmFsPgorPHBocmFzZT4KKzxyZXBsYWNlYWJsZT5qc29uX3RhYmxlX3BsYW5fcHJp bWFyeTwvcmVwbGFjZWFibGU+IGlzOgorPC9waHJhc2U+CisgICAgPHJlcGxhY2VhYmxlPmpzb25f cGF0aF9uYW1lPC9yZXBsYWNlYWJsZT4gfCAoIDxyZXBsYWNlYWJsZT5qc29uX3RhYmxlX3BsYW48 L3JlcGxhY2VhYmxlPiApCis8L3N5bm9wc2lzPgorCisgIDxwYXJhPgorICAgRWFjaCBzeW50YXgg ZWxlbWVudCBpcyBkZXNjcmliZWQgYmVsb3cgaW4gbW9yZSBkZXRhaWwuCisgIDwvcGFyYT4KKwor ICA8dmFyaWFibGVsaXN0PgorICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT4KKyAgICAgPGxp dGVyYWw+PHJlcGxhY2VhYmxlPmNvbnRleHRfaXRlbTwvcmVwbGFjZWFibGU+LCA8cmVwbGFjZWFi bGU+cGF0aF9leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4gPG9wdGlvbmFsPiA8bGl0ZXJhbD5BUzwv bGl0ZXJhbD4gPHJlcGxhY2VhYmxlPmpzb25fcGF0aF9uYW1lPC9yZXBsYWNlYWJsZT4gPC9vcHRp b25hbD4gPG9wdGlvbmFsPiA8bGl0ZXJhbD5QQVNTSU5HPC9saXRlcmFsPiB7IDxyZXBsYWNlYWJs ZT52YWx1ZTwvcmVwbGFjZWFibGU+IDxsaXRlcmFsPkFTPC9saXRlcmFsPiA8cmVwbGFjZWFibGU+ dmFybmFtZTwvcmVwbGFjZWFibGU+IH0gPG9wdGlvbmFsPiwgLi4uPC9vcHRpb25hbD48L29wdGlv bmFsPjwvbGl0ZXJhbD4KKyAgICA8L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgIDxwYXJhPgor ICAgICBUaGUgaW5wdXQgZGF0YSB0byBxdWVyeSwgdGhlIEpTT04gcGF0aCBleHByZXNzaW9uIGRl ZmluaW5nIHRoZSBxdWVyeSwKKyAgICAgYW5kIGFuIG9wdGlvbmFsIDxsaXRlcmFsPlBBU1NJTkc8 L2xpdGVyYWw+IGNsYXVzZSwgd2hpY2ggY2FuIHByb3ZpZGUgZGF0YQorICAgICB2YWx1ZXMgdG8g dGhlIDxyZXBsYWNlYWJsZT5wYXRoX2V4cHJlc3Npb248L3JlcGxhY2VhYmxlPi4KKyAgICAgVGhl IHJlc3VsdCBvZiB0aGUgaW5wdXQgZGF0YQorICAgICBldmFsdWF0aW9uIGlzIGNhbGxlZCB0aGUg PGZpcnN0dGVybT5yb3cgcGF0dGVybjwvZmlyc3R0ZXJtPi4gVGhlIHJvdworICAgICBwYXR0ZXJu IGlzIHVzZWQgYXMgdGhlIHNvdXJjZSBmb3Igcm93IHZhbHVlcyBpbiB0aGUgY29uc3RydWN0ZWQg dmlldy4KKyAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5Pgor CisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPgorICAgICA8bGl0ZXJhbD5DT0xVTU5TPC9s aXRlcmFsPiggPHJlcGxhY2VhYmxlPmpzb25fdGFibGVfY29sdW1uPC9yZXBsYWNlYWJsZT4gPG9w dGlvbmFsPiwgLi4uPC9vcHRpb25hbD4gKQorICAgIDwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisK KyAgICA8cGFyYT4KKyAgICAgVGhlIDxsaXRlcmFsPkNPTFVNTlM8L2xpdGVyYWw+IGNsYXVzZSBk ZWZpbmluZyB0aGUgc2NoZW1hIG9mIHRoZQorICAgICBjb25zdHJ1Y3RlZCB2aWV3LiBJbiB0aGlz IGNsYXVzZSwgeW91IG11c3Qgc3BlY2lmeSBhbGwgdGhlIGNvbHVtbnMKKyAgICAgdG8gYmUgZmls bGVkIHdpdGggU1FML0pTT04gaXRlbXMuCisgICAgIFRoZSA8cmVwbGFjZWFibGU+anNvbl90YWJs ZV9jb2x1bW48L3JlcGxhY2VhYmxlPgorICAgICBleHByZXNzaW9uIGhhcyB0aGUgZm9sbG93aW5n IHN5bnRheCB2YXJpYW50czoKKyAgICA8L3BhcmE+CisKKyAgPHZhcmlhYmxlbGlzdD4KKyAgIDx2 YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+CisgICAgIDxsaXRlcmFsPjxyZXBsYWNlYWJsZT5uYW1l PC9yZXBsYWNlYWJsZT4gPHJlcGxhY2VhYmxlPnR5cGU8L3JlcGxhY2VhYmxlPgorICAgICAgICAg IDxvcHRpb25hbD4gPGxpdGVyYWw+UEFUSDwvbGl0ZXJhbD4gPHJlcGxhY2VhYmxlPmpzb25fcGF0 aF9zcGVjaWZpY2F0aW9uPC9yZXBsYWNlYWJsZT4gPC9vcHRpb25hbD48L2xpdGVyYWw+CisgICAg PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKworICAgIDxwYXJhPgorICAgICBJbnNlcnRzIGEgc2lu Z2xlIFNRTC9KU09OIGl0ZW0gaW50byB0aGUgb3V0cHV0IHJvdy4KKyAgICA8L3BhcmE+CisgICAg PHBhcmE+CisgICAgIFRoZSBwcm92aWRlZCA8bGl0ZXJhbD5QQVRIPC9saXRlcmFsPiBleHByZXNz aW9uIGlzIGV2YWx1YXRlZCBhbmQKKyAgICAgdGhlIGNvbHVtbiBpcyBmaWxsZWQgd2l0aCB0aGUg cHJvZHVjZWQgU1FML0pTT04gaXRlbSwgb25lIGZvciBlYWNoIHJvdy4KKyAgICAgSWYgdGhlIDxs aXRlcmFsPlBBVEg8L2xpdGVyYWw+IGV4cHJlc3Npb24gaXMgb21pdHRlZCwKKyAgICAgPGZ1bmN0 aW9uPkpTT05fVEFCTEU8L2Z1bmN0aW9uPiB1c2VzIHRoZQorICAgICA8bGl0ZXJhbD4kLjxyZXBs YWNlYWJsZT5uYW1lPC9yZXBsYWNlYWJsZT48L2xpdGVyYWw+IHBhdGggZXhwcmVzc2lvbiwKKyAg ICAgd2hlcmUgPHJlcGxhY2VhYmxlPm5hbWU8L3JlcGxhY2VhYmxlPiBpcyB0aGUgcHJvdmlkZWQg Y29sdW1uIG5hbWUuCisgICAgIEluIHRoaXMgY2FzZSwgdGhlIGNvbHVtbiBuYW1lIG11c3QgY29y cmVzcG9uZCB0byBvbmUgb2YgdGhlCisgICAgIGtleXMgd2l0aGluIHRoZSBTUUwvSlNPTiBpdGVt IHByb2R1Y2VkIGJ5IHRoZSByb3cgcGF0dGVybi4KKyAgICA8L3BhcmE+CisgICAgPHBhcmE+Cisg ICAgIE9wdGlvbmFsbHksIHlvdSBjYW4gc3BlY2lmeSA8bGl0ZXJhbD5XUkFQUEVSPC9saXRlcmFs PiwKKyAgICAgPGxpdGVyYWw+UVVPVEVTPC9saXRlcmFsPiBjbGF1c2VzIHRvIGZvcm1hdCB0aGUg b3V0cHV0IGFuZAorICAgICA8bGl0ZXJhbD5PTiBFTVBUWTwvbGl0ZXJhbD4gYW5kIDxsaXRlcmFs Pk9OIEVSUk9SPC9saXRlcmFsPiB0byBoYW5kbGUKKyAgICAgdGhvc2UgbWlzc2luZyB2YWx1ZXMg YW5kIHN0cnVjdHVyYWwgZXJyb3JzLCByZXNwZWN0aXZlbHkuCisgICAgPC9wYXJhPgorICAgIDxu b3RlPgorICAgICA8cGFyYT4KKyAgICAgIFRoaXMgY2xhdXNlIGlzIGludGVybmFsbHkgdHVybmVk IGludG8gYW5kIGhhcyB0aGUgc2FtZSBzZW1hbnRpY3MgYXMKKyAgICAgIDxmdW5jdGlvbj5qc29u X3ZhbHVlPC9mdW5jdGlvbj4gYW5kIDxmdW5jdGlvbj5qc29uX3F1ZXJ5PC9mdW5jdGlvbj4uCisg ICAgICBUaGUgbGF0dGVyIGlmIHRoZSBzcGVjaWZpZWQgdHlwZSBpcyBub3QgYSBzY2FsYXIgdHlw ZSBvciBpZgorICAgICAgPGxpdGVyYWw+V1JBUFBFUjwvbGl0ZXJhbD4gb3IgPGxpdGVyYWw+UVVP VEVTPC9saXRlcmFsPiBjbGF1c2UgaXMKKyAgICAgIHByZXNlbnQuCisgICAgIDwvcGFyYT4KKyAg ICA8L25vdGU+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFy bGlzdGVudHJ5PgorICAgIDx0ZXJtPgorICAgICA8cmVwbGFjZWFibGU+bmFtZTwvcmVwbGFjZWFi bGU+IDxyZXBsYWNlYWJsZT50eXBlPC9yZXBsYWNlYWJsZT4gPGxpdGVyYWw+Rk9STUFUIEpTT048 L2xpdGVyYWw+IDxvcHRpb25hbD5FTkNPRElORyA8bGl0ZXJhbD5VVEY4PC9saXRlcmFsPjwvb3B0 aW9uYWw+CisgICAgICAgICAgPG9wdGlvbmFsPiA8bGl0ZXJhbD5QQVRIPC9saXRlcmFsPiA8cmVw bGFjZWFibGU+anNvbl9wYXRoX3NwZWNpZmljYXRpb248L3JlcGxhY2VhYmxlPiA8L29wdGlvbmFs PgorICAgIDwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisKKyAgICA8cGFyYT4KKyAgICAgSW5zZXJ0 cyBhIGNvbXBvc2l0ZSBTUUwvSlNPTiBpdGVtIGludG8gdGhlIG91dHB1dCByb3cuCisgICAgPC9w YXJhPgorICAgIDxwYXJhPgorICAgICBUaGUgcHJvdmlkZWQgPGxpdGVyYWw+UEFUSDwvbGl0ZXJh bD4gZXhwcmVzc2lvbiBpcyBldmFsdWF0ZWQgYW5kCisgICAgIHRoZSBjb2x1bW4gaXMgZmlsbGVk IHdpdGggdGhlIHByb2R1Y2VkIFNRTC9KU09OIGl0ZW0uICBJZiB0aGUKKyAgICAgPGxpdGVyYWw+ UEFUSDwvbGl0ZXJhbD4gZXhwcmVzc2lvbiBpcyBvbWl0dGVkLCBwYXRoIGV4cHJlc3Npb24KKyAg ICAgPGxpdGVyYWw+JC48cmVwbGFjZWFibGU+bmFtZTwvcmVwbGFjZWFibGU+PC9saXRlcmFsPiBp cyB1c2VkLAorICAgICB3aGVyZSA8cmVwbGFjZWFibGU+bmFtZTwvcmVwbGFjZWFibGU+IGlzIHRo ZSBwcm92aWRlZCBjb2x1bW4gbmFtZS4KKyAgICAgSW4gdGhpcyBjYXNlLCB0aGUgY29sdW1uIG5h bWUgbXVzdCBjb3JyZXNwb25kIHRvIG9uZSBvZiB0aGUKKyAgICAga2V5cyB3aXRoaW4gdGhlIFNR TC9KU09OIGl0ZW0gcHJvZHVjZWQgYnkgdGhlIHJvdyBwYXR0ZXJuLgorICAgIDwvcGFyYT4KKyAg ICA8cGFyYT4KKyAgICAgT3B0aW9uYWxseSwgeW91IGNhbiBzcGVjaWZ5IDxsaXRlcmFsPldSQVBQ RVI8L2xpdGVyYWw+LAorICAgICA8bGl0ZXJhbD5RVU9URVM8L2xpdGVyYWw+IGNsYXVzZXMgdG8g Zm9ybWF0IHRoZSBvdXRwdXQgYW5kCisgICAgIDxsaXRlcmFsPk9OIEVNUFRZPC9saXRlcmFsPiBh bmQgPGxpdGVyYWw+T04gRVJST1I8L2xpdGVyYWw+IHRvIGhhbmRsZQorICAgICB0aG9zZSBzY2Vu YXJpb3MgYXBwcm9wcmlhdGVseS4KKyAgICA8L3BhcmE+CisgICAgPG5vdGU+CisgICAgIDxwYXJh PgorICAgICAgVGhpcyBjbGF1c2UgaXMgaW50ZXJuYWxseSB0dXJuZWQgaW50byBhbmQgaGFzIHRo ZSBzYW1lIHNlbWFudGljcyBhcworICAgICAgPGZ1bmN0aW9uPmpzb25fcXVlcnk8L2Z1bmN0aW9u Pi4KKyAgICAgPC9wYXJhPgorICAgIDwvbm90ZT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJs aXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+CisgICAgICAgPHJlcGxh Y2VhYmxlPm5hbWU8L3JlcGxhY2VhYmxlPiA8cmVwbGFjZWFibGU+dHlwZTwvcmVwbGFjZWFibGU+ CisgICAgICAgPGxpdGVyYWw+RVhJU1RTPC9saXRlcmFsPiA8b3B0aW9uYWw+IDxsaXRlcmFsPlBB VEg8L2xpdGVyYWw+IDxyZXBsYWNlYWJsZT5qc29uX3BhdGhfc3BlY2lmaWNhdGlvbjwvcmVwbGFj ZWFibGU+IDwvb3B0aW9uYWw+CisgICAgPC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKworICAgIDxw YXJhPgorICAgICBJbnNlcnRzIGEgYm9vbGVhbiBpdGVtIGludG8gZWFjaCBvdXRwdXQgcm93Lgor ICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAgICAgVGhlIHZhbHVlIGNvcnJlc3BvbmRzIHRvIHdo ZXRoZXIgZXZhbHVhdGluZyB0aGUgPGxpdGVyYWw+UEFUSDwvbGl0ZXJhbD4KKyAgICAgZXhwcmVz c2lvbiB5aWVsZHMgYW55IFNRTC9KU09OIGl0ZW1zLiAgSWYgdGhlIDxsaXRlcmFsPlBBVEg8L2xp dGVyYWw+CisgICAgIGV4cHJlc3Npb24gaXMgb21pdHRlZCwgcGF0aCBleHByZXNzaW9uCisgICAg IDxsaXRlcmFsPiQuPHJlcGxhY2VhYmxlPm5hbWU8L3JlcGxhY2VhYmxlPjwvbGl0ZXJhbD4gaXMg dXNlZCwKKyAgICAgd2hlcmUgPHJlcGxhY2VhYmxlPm5hbWU8L3JlcGxhY2VhYmxlPiBpcyB0aGUg cHJvdmlkZWQgY29sdW1uIG5hbWUuCisgICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgICBUaGUg c3BlY2lmaWVkIDxwYXJhbWV0ZXI+dHlwZTwvcGFyYW1ldGVyPiBzaG91bGQgaGF2ZSBhIGNhc3Qg ZnJvbSB0aGUKKyAgICAgPHR5cGU+Ym9vbGVhbjwvdHlwZT4uCisgICAgPC9wYXJhPgorICAgIDxw YXJhPgorICAgICBPcHRpb25hbGx5LCB5b3UgY2FuIGFkZCA8bGl0ZXJhbD5PTiBFUlJPUjwvbGl0 ZXJhbD4gY2xhdXNlIHRvIGRlZmluZQorICAgICBlcnJvciBiZWhhdmlvci4KKyAgICA8L3BhcmE+ CisgICAgPG5vdGU+CisgICAgIDxwYXJhPgorICAgICAgVGhpcyBjbGF1c2UgaXMgaW50ZXJuYWxs eSB0dXJuZWQgaW50byBhbmQgaGFzIHRoZSBzYW1lIHNlbWFudGljcyBhcworICAgICAgPGZ1bmN0 aW9uPmpzb25fZXhpc3RzPC9mdW5jdGlvbj4uCisgICAgIDwvcGFyYT4KKyAgICA8L25vdGU+Cisg ICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFybGlzdGVudHJ5Pgor ICAgIDx0ZXJtPgorICAgICAgPGxpdGVyYWw+TkVTVEVEIFBBVEg8L2xpdGVyYWw+IDxyZXBsYWNl YWJsZT5qc29uX3BhdGhfc3BlY2lmaWNhdGlvbjwvcmVwbGFjZWFibGU+IDxvcHRpb25hbD4gPGxp dGVyYWw+QVM8L2xpdGVyYWw+IDxyZXBsYWNlYWJsZT5qc29uX3BhdGhfbmFtZTwvcmVwbGFjZWFi bGU+IDwvb3B0aW9uYWw+CisgICAgICAgICAgPGxpdGVyYWw+Q09MVU1OUzwvbGl0ZXJhbD4gKCA8 cmVwbGFjZWFibGU+anNvbl90YWJsZV9jb2x1bW48L3JlcGxhY2VhYmxlPiA8b3B0aW9uYWw+LCAu Li48L29wdGlvbmFsPiApCisgICAgPC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKworICAgIDxwYXJh PgorICAgICBFeHRyYWN0cyBTUUwvSlNPTiBpdGVtcyBmcm9tIG5lc3RlZCBsZXZlbHMgb2YgdGhl IHJvdyBwYXR0ZXJuLAorICAgICBnZW5lcmF0ZXMgb25lIG9yIG1vcmUgY29sdW1ucyBhcyBkZWZp bmVkIGJ5IHRoZSA8bGl0ZXJhbD5DT0xVTU5TPC9saXRlcmFsPgorICAgICBzdWJjbGF1c2UsIGFu ZCBpbnNlcnRzIHRoZSBleHRyYWN0ZWQgU1FML0pTT04gaXRlbXMgaW50byBlYWNoIHJvdyBvZiB0 aGVzZSBjb2x1bW5zLgorICAgICBUaGUgPHJlcGxhY2VhYmxlPmpzb25fdGFibGVfY29sdW1uPC9y ZXBsYWNlYWJsZT4gZXhwcmVzc2lvbiBpbiB0aGUKKyAgICAgPGxpdGVyYWw+Q09MVU1OUzwvbGl0 ZXJhbD4gc3ViY2xhdXNlIHVzZXMgdGhlIHNhbWUgc3ludGF4IGFzIGluIHRoZQorICAgICBwYXJl bnQgPGxpdGVyYWw+Q09MVU1OUzwvbGl0ZXJhbD4gY2xhdXNlLgorICAgIDwvcGFyYT4KKworICAg IDxwYXJhPgorICAgICBUaGUgPGxpdGVyYWw+TkVTVEVEIFBBVEg8L2xpdGVyYWw+IHN5bnRheCBp cyByZWN1cnNpdmUsCisgICAgIHNvIHlvdSBjYW4gZ28gZG93biBtdWx0aXBsZSBuZXN0ZWQgbGV2 ZWxzIGJ5IHNwZWNpZnlpbmcgc2V2ZXJhbAorICAgICA8bGl0ZXJhbD5ORVNURUQgUEFUSDwvbGl0 ZXJhbD4gc3ViY2xhdXNlcyB3aXRoaW4gZWFjaCBvdGhlci4KKyAgICAgSXQgYWxsb3dzIHRvIHVu bmVzdCB0aGUgaGllcmFyY2h5IG9mIEpTT04gb2JqZWN0cyBhbmQgYXJyYXlzCisgICAgIGluIGEg c2luZ2xlIGZ1bmN0aW9uIGludm9jYXRpb24gcmF0aGVyIHRoYW4gY2hhaW5pbmcgc2V2ZXJhbAor ICAgICA8ZnVuY3Rpb24+SlNPTl9UQUJMRTwvZnVuY3Rpb24+IGV4cHJlc3Npb25zIGluIGFuIFNR TCBzdGF0ZW1lbnQuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgIFlvdSBjYW4gdXNl IHRoZSA8bGl0ZXJhbD5QTEFOPC9saXRlcmFsPiBjbGF1c2UgdG8gZGVmaW5lIGhvdworICAgICB0 byBqb2luIHRoZSBjb2x1bW5zIHJldHVybmVkIGJ5IDxsaXRlcmFsPk5FU1RFRCBQQVRIPC9saXRl cmFsPiBjbGF1c2VzLgorICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0 ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+CisgICAgIDxyZXBsYWNlYWJs ZT5uYW1lPC9yZXBsYWNlYWJsZT4gPGxpdGVyYWw+Rk9SIE9SRElOQUxJVFk8L2xpdGVyYWw+Cisg ICAgPC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKworICAgIDxwYXJhPgorICAgICBBZGRzIGFuIG9y ZGluYWxpdHkgY29sdW1uIHRoYXQgcHJvdmlkZXMgc2VxdWVudGlhbCByb3cgbnVtYmVyaW5nLgor ICAgICBZb3UgY2FuIGhhdmUgb25seSBvbmUgb3JkaW5hbGl0eSBjb2x1bW4gcGVyIHRhYmxlLiBS b3cgbnVtYmVyaW5nCisgICAgIGlzIDEtYmFzZWQuIEZvciBjaGlsZCByb3dzIHRoYXQgcmVzdWx0 IGZyb20gdGhlIDxsaXRlcmFsPk5FU1RFRCBQQVRIPC9saXRlcmFsPgorICAgICBjbGF1c2VzLCB0 aGUgcGFyZW50IHJvdyBudW1iZXIgaXMgcmVwZWF0ZWQuCisgICAgPC9wYXJhPgorICAgIDwvbGlz dGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKyAgPC92YXJpYWJsZWxpc3Q+CisKKyAgICA8L2xp c3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRl cm0+CisgICAgIDxsaXRlcmFsPkFTPC9saXRlcmFsPiA8cmVwbGFjZWFibGU+anNvbl9wYXRoX25h bWU8L3JlcGxhY2VhYmxlPgorICAgIDwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisKKyAgICA8cGFy YT4KKyAgICAgVGhlIG9wdGlvbmFsIDxyZXBsYWNlYWJsZT5qc29uX3BhdGhfbmFtZTwvcmVwbGFj ZWFibGU+IHNlcnZlcyBhcyBhbgorICAgICBpZGVudGlmaWVyIG9mIHRoZSBwcm92aWRlZCA8cmVw bGFjZWFibGU+anNvbl9wYXRoX3NwZWNpZmljYXRpb248L3JlcGxhY2VhYmxlPi4KKyAgICAgVGhl IHBhdGggbmFtZSBtdXN0IGJlIHVuaXF1ZSBhbmQgZGlzdGluY3QgZnJvbSB0aGUgY29sdW1uIG5h bWVzLgorICAgICBXaGVuIHVzaW5nIHRoZSA8bGl0ZXJhbD5QTEFOPC9saXRlcmFsPiBjbGF1c2Us IHlvdSBtdXN0IHNwZWNpZnkgdGhlIG5hbWVzCisgICAgIGZvciBhbGwgdGhlIHBhdGhzLCBpbmNs dWRpbmcgdGhlIHJvdyBwYXR0ZXJuLiBFYWNoIHBhdGggbmFtZSBjYW4gYXBwZWFyIGluCisgICAg IHRoZSA8bGl0ZXJhbD5QTEFOPC9saXRlcmFsPiBjbGF1c2Ugb25seSBvbmNlLgorICAgIDwvcGFy YT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50 cnk+CisgICAgPHRlcm0+CisgICAgIDxsaXRlcmFsPlBMQU48L2xpdGVyYWw+ICggPHJlcGxhY2Vh YmxlPmpzb25fdGFibGVfcGxhbjwvcmVwbGFjZWFibGU+ICkKKyAgICA8L3Rlcm0+CisgICAgPGxp c3RpdGVtPgorCisgICAgPHBhcmE+CisgICAgIERlZmluZXMgaG93IHRvIGpvaW4gdGhlIGRhdGEg cmV0dXJuZWQgYnkgPGxpdGVyYWw+TkVTVEVEIFBBVEg8L2xpdGVyYWw+CisgICAgIGNsYXVzZXMg dG8gdGhlIGNvbnN0cnVjdGVkIHZpZXcuCisgICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgICBU byBqb2luIGNvbHVtbnMgd2l0aCBwYXJlbnQvY2hpbGQgcmVsYXRpb25zaGlwLCB5b3UgY2FuIHVz ZToKKyAgICA8L3BhcmE+CisgIDx2YXJpYWJsZWxpc3Q+CisgICA8dmFybGlzdGVudHJ5PgorICAg IDx0ZXJtPgorICAgICA8bGl0ZXJhbD5JTk5FUjwvbGl0ZXJhbD4KKyAgICA8L3Rlcm0+CisgICAg PGxpc3RpdGVtPgorCisgICAgPHBhcmE+CisgICAgIFVzZSA8bGl0ZXJhbD5JTk5FUiBKT0lOPC9s aXRlcmFsPiwgc28gdGhhdCB0aGUgcGFyZW50IHJvdworICAgICBpcyBvbWl0dGVkIGZyb20gdGhl IG91dHB1dCBpZiBpdCBkb2VzIG5vdCBoYXZlIGFueSBjaGlsZCByb3dzCisgICAgIGFmdGVyIGpv aW5pbmcgdGhlIGRhdGEgcmV0dXJuZWQgYnkgPGxpdGVyYWw+TkVTVEVEIFBBVEg8L2xpdGVyYWw+ LgorICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAg IDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+CisgICAgIDxsaXRlcmFsPk9VVEVSPC9saXRlcmFs PgorICAgIDwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisKKyAgICA8cGFyYT4KKyAgICAgVXNlIDxs aXRlcmFsPkxFRlQgT1VURVIgSk9JTjwvbGl0ZXJhbD4sIHNvIHRoYXQgdGhlIHBhcmVudCByb3cK KyAgICAgaXMgYWx3YXlzIGluY2x1ZGVkIGludG8gdGhlIG91dHB1dCBldmVuIGlmIGl0IGRvZXMg bm90IGhhdmUgYW55IGNoaWxkIHJvd3MKKyAgICAgYWZ0ZXIgam9pbmluZyB0aGUgZGF0YSByZXR1 cm5lZCBieSA8bGl0ZXJhbD5ORVNURUQgUEFUSDwvbGl0ZXJhbD4sIHdpdGggTlVMTCB2YWx1ZXMK KyAgICAgaW5zZXJ0ZWQgaW50byB0aGUgY2hpbGQgY29sdW1ucyBpZiB0aGUgY29ycmVzcG9uZGlu ZworICAgICB2YWx1ZXMgYXJlIG1pc3NpbmcuCisgICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAg ICBUaGlzIGlzIHRoZSBkZWZhdWx0IG9wdGlvbiBmb3Igam9pbmluZyBjb2x1bW5zIHdpdGggcGFy ZW50L2NoaWxkIHJlbGF0aW9uc2hpcC4KKyAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAg IDwvdmFybGlzdGVudHJ5PgorICA8L3ZhcmlhYmxlbGlzdD4KKworICAgICA8cGFyYT4KKyAgICAg VG8gam9pbiBzaWJsaW5nIGNvbHVtbnMsIHlvdSBjYW4gdXNlOgorICAgIDwvcGFyYT4KKworICA8 dmFyaWFibGVsaXN0PgorICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT4KKyAgICAgPGxpdGVy YWw+VU5JT048L2xpdGVyYWw+CisgICAgPC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKworICAgIDxw YXJhPgorICAgICBHZW5lcmF0ZSBvbmUgcm93IGZvciBlYWNoIHZhbHVlIHByb2R1Y2VkIGJ5IGVh Y2ggb2YgdGhlIHNpYmxpbmcKKyAgICAgY29sdW1ucy4gVGhlIGNvbHVtbnMgZnJvbSB0aGUgb3Ro ZXIgc2libGluZ3MgYXJlIHNldCB0byBudWxsLgorICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAg ICAgVGhpcyBpcyB0aGUgZGVmYXVsdCBvcHRpb24gZm9yIGpvaW5pbmcgc2libGluZyBjb2x1bW5z LgorICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAg IDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+CisgICAgIDxsaXRlcmFsPkNST1NTPC9saXRlcmFs PgorICAgIDwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisKKyAgICA8cGFyYT4KKyAgICAgR2VuZXJh dGUgb25lIHJvdyBmb3IgZWFjaCBjb21iaW5hdGlvbiBvZiB2YWx1ZXMgZnJvbSB0aGUgc2libGlu ZyBjb2x1bW5zLgorICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50 cnk+CisKKyAgPC92YXJpYWJsZWxpc3Q+CisKKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0 ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+CisgICAgIDxsaXRlcmFsPlBM QU4gREVGQVVMVDwvbGl0ZXJhbD4gKCA8bGl0ZXJhbD48cmVwbGFjZWFibGU+T1VURVIgfCBJTk5F UjwvcmVwbGFjZWFibGU+IDxvcHRpb25hbD4sIDxyZXBsYWNlYWJsZT5VTklPTiB8IENST1NTPC9y ZXBsYWNlYWJsZT4gPC9vcHRpb25hbD48L2xpdGVyYWw+ICkKKyAgICA8L3Rlcm0+CisgICAgPGxp c3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRoZSB0ZXJtcyBjYW4gYWxzbyBiZSBzcGVjaWZp ZWQgaW4gcmV2ZXJzZSBvcmRlci4gVGhlCisgICAgICA8bGl0ZXJhbD5JTk5FUjwvbGl0ZXJhbD4g b3IgPGxpdGVyYWw+T1VURVI8L2xpdGVyYWw+IG9wdGlvbiBkZWZpbmVzIHRoZQorICAgICAgam9p bmluZyBwbGFuIGZvciBwYXJlbnQvY2hpbGQgY29sdW1ucywgd2hpbGUgPGxpdGVyYWw+VU5JT048 L2xpdGVyYWw+IG9yCisgICAgICA8bGl0ZXJhbD5DUk9TUzwvbGl0ZXJhbD4gYWZmZWN0cyBqb2lu cyBvZiBzaWJsaW5nIGNvbHVtbnMuIFRoaXMgZm9ybQorICAgICAgb2YgPGxpdGVyYWw+UExBTjwv bGl0ZXJhbD4gb3ZlcnJpZGVzIHRoZSBkZWZhdWx0IHBsYW4gZm9yCisgICAgICBhbGwgY29sdW1u cyBhdCBvbmNlLiBFdmVuIHRob3VnaCB0aGUgcGF0aCBuYW1lcyBhcmUgbm90IGluY2x1ZGVkIGlu IHRoZQorICAgICAgPGxpdGVyYWw+UExBTiBERUZBVUxUPC9saXRlcmFsPiBmb3JtLCB0byBjb25m b3JtIHRvIHRoZSBTUUwvSlNPTiBzdGFuZGFyZAorICAgICAgdGhleSBtdXN0IGJlIHByb3ZpZGVk IGZvciBhbGwgdGhlIHBhdGhzIGlmIHRoZSA8bGl0ZXJhbD5QTEFOPC9saXRlcmFsPgorICAgICAg Y2xhdXNlIGlzIHVzZWQuCisgICAgIDwvcGFyYT4KKyAgICAgPHBhcmE+CisgICAgICA8bGl0ZXJh bD5QTEFOIERFRkFVTFQ8L2xpdGVyYWw+IGlzIHNpbXBsZXIgdGhhbiBzcGVjaWZ5aW5nIGEgY29t cGxldGUKKyAgICAgIDxsaXRlcmFsPlBMQU48L2xpdGVyYWw+LCBhbmQgaXMgb2Z0ZW4gYWxsIHRo YXQgaXMgcmVxdWlyZWQgdG8gZ2V0IHRoZSBkZXNpcmVkCisgICAgICBvdXRwdXQuCisgICAgIDwv cGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisgIDwvdmFyaWFibGVs aXN0PgorCisgIDxwYXJhPkV4YW1wbGVzPC9wYXJhPgorCisgICAgIDxwYXJhPgorICAgICBJbiB0 aGVzZSBleGFtcGxlcyB0aGUgZm9sbG93aW5nIHNtYWxsIHRhYmxlIHN0b3Jpbmcgc29tZSBKU09O IGRhdGEgd2lsbCBiZSB1c2VkOgorPHByb2dyYW1saXN0aW5nPgorQ1JFQVRFIFRBQkxFIG15X2Zp bG1zICgganMganNvbmIgKTsKKworSU5TRVJUIElOVE8gbXlfZmlsbXMgVkFMVUVTICgKKyd7ICJm YXZvcml0ZXMiIDogWworICAgeyAia2luZCIgOiAiY29tZWR5IiwgImZpbG1zIiA6IFsKKyAgICAg eyAidGl0bGUiIDogIkJhbmFuYXMiLAorICAgICAgICJkaXJlY3RvciIgOiAiV29vZHkgQWxsZW4i fSwKKyAgICAgeyAidGl0bGUiIDogIlRoZSBEaW5uZXIgR2FtZSIsCisgICAgICAgImRpcmVjdG9y IiA6ICJGcmFuY2lzIFZlYmVyIiB9IF0gfSwKKyAgIHsgImtpbmQiIDogImhvcnJvciIsICJmaWxt cyIgOiBbCisgICAgIHsgInRpdGxlIiA6ICJQc3ljaG8iLAorICAgICAgICJkaXJlY3RvciIgOiAi QWxmcmVkIEhpdGNoY29jayIgfSBdIH0sCisgICB7ICJraW5kIiA6ICJ0aHJpbGxlciIsICJmaWxt cyIgOiBbCisgICAgIHsgInRpdGxlIiA6ICJWZXJ0aWdvIiwKKyAgICAgICAiZGlyZWN0b3IiIDog IkFsZnJlZCBIaXRjaGNvY2siIH0gXSB9LAorICAgeyAia2luZCIgOiAiZHJhbWEiLCAiZmlsbXMi IDogWworICAgICB7ICJ0aXRsZSIgOiAiWW9qaW1ibyIsCisgICAgICAgImRpcmVjdG9yIiA6ICJB a2lyYSBLdXJvc2F3YSIgfSBdIH0KKyAgXSB9Jyk7Cis8L3Byb2dyYW1saXN0aW5nPgorICAgICA8 L3BhcmE+CisgICAgIDxwYXJhPgorICAgICAgUXVlcnkgdGhlIDxzdHJ1Y3RuYW1lPm15X2ZpbG1z PC9zdHJ1Y3RuYW1lPiB0YWJsZSBob2xkaW5nCisgICAgICBzb21lIEpTT04gZGF0YSBhYm91dCB0 aGUgZmlsbXMgYW5kIGNyZWF0ZSBhIHZpZXcgdGhhdAorICAgICAgZGlzdHJpYnV0ZXMgdGhlIGZp bG0gZ2VucmUsIHRpdGxlLCBhbmQgZGlyZWN0b3IgYmV0d2VlbiBzZXBhcmF0ZSBjb2x1bW5zOgor PHNjcmVlbj4KK1NFTEVDVCBqdC4qIEZST00KKyBteV9maWxtcywKKyBKU09OX1RBQkxFICgganMs ICckLmZhdm9yaXRlc1sqXScgQ09MVU1OUyAoCisgICBpZCBGT1IgT1JESU5BTElUWSwKKyAgIGtp bmQgdGV4dCBQQVRIICckLmtpbmQnLAorICAgTkVTVEVEIFBBVEggJyQuZmlsbXNbKl0nIENPTFVN TlMgKAorICAgICB0aXRsZSB0ZXh0IFBBVEggJyQudGl0bGUnLAorICAgICBkaXJlY3RvciB0ZXh0 IFBBVEggJyQuZGlyZWN0b3InKSkpIEFTIGp0OworLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tCisgaWQgfCAgIGtpbmQgICB8ICAgICAgIHRpdGxl ICAgICAgfCAgICBkaXJlY3RvcgorLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tCisgMSAgfCBjb21lZHkgICB8IEJhbmFuYXMgICAgICAgICAgfCBX b29keSBBbGxlbgorIDEgIHwgY29tZWR5ICAgfCBUaGUgRGlubmVyIEdhbWUgIHwgRnJhbmNpcyBW ZWJlcgorIDIgIHwgaG9ycm9yICAgfCBQc3ljaG8gICAgICAgICAgIHwgQWxmcmVkIEhpdGNoY29j aworIDMgIHwgdGhyaWxsZXIgfCBWZXJ0aWdvICAgICAgICAgIHwgQWxmcmVkIEhpdGNoY29jawor IDQgIHwgZHJhbWEgICAgfCBZb2ppbWJvICAgICAgICAgIHwgQWtpcmEgS3Vyb3Nhd2EKKyAoNSBy b3dzKQorPC9zY3JlZW4+CisgICAgIDwvcGFyYT4KKworICAgICA8cGFyYT4KKyAgICAgIEZpbmQg YSBkaXJlY3RvciB0aGF0IGhhcyBkb25lIGZpbG1zIGluIHR3byBkaWZmZXJlbnQgZ2VucmVzOgor PHNjcmVlbj4KK1NFTEVDVAorICBkaXJlY3RvcjEgQVMgZGlyZWN0b3IsIHRpdGxlMSwga2luZDEs IHRpdGxlMiwga2luZDIKK0ZST00KKyAgbXlfZmlsbXMsCisgIEpTT05fVEFCTEUgKCBqcywgJyQu ZmF2b3JpdGVzJyBBUyBmYXZzIENPTFVNTlMgKAorICAgIE5FU1RFRCBQQVRIICckWypdJyBBUyBm aWxtczEgQ09MVU1OUyAoCisgICAgICBraW5kMSB0ZXh0IFBBVEggJyQua2luZCcsCisgICAgICBO RVNURUQgUEFUSCAnJC5maWxtc1sqXScgQVMgZmlsbTEgQ09MVU1OUyAoCisgICAgICAgIHRpdGxl MSB0ZXh0IFBBVEggJyQudGl0bGUnLAorICAgICAgICBkaXJlY3RvcjEgdGV4dCBQQVRIICckLmRp cmVjdG9yJykKKyAgICApLAorICAgIE5FU1RFRCBQQVRIICckWypdJyBBUyBmaWxtczIgQ09MVU1O UyAoCisgICAgICBraW5kMiB0ZXh0IFBBVEggJyQua2luZCcsCisgICAgICBORVNURUQgUEFUSCAn JC5maWxtc1sqXScgQVMgZmlsbTIgQ09MVU1OUyAoCisgICAgICAgIHRpdGxlMiB0ZXh0IFBBVEgg JyQudGl0bGUnLAorICAgICAgICBkaXJlY3RvcjIgdGV4dCBQQVRIICckLmRpcmVjdG9yJworICAg ICAgKQorICAgICkKKyAgICkKKyAgIFBMQU4gKGZhdnMgT1VURVIgKChmaWxtczEgSU5ORVIgZmls bTEpIENST1NTIChmaWxtczIgSU5ORVIgZmlsbTIpKSkKKyAgKSBBUyBqdAorIFdIRVJFIGtpbmQx ID4ga2luZDIgQU5EIGRpcmVjdG9yMSA9IGRpcmVjdG9yMjsKKworICAgICBkaXJlY3RvciAgICAg fCB0aXRsZTEgIHwgIGtpbmQxICAgfCB0aXRsZTIgfCBraW5kMgorLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tCisgQWxmcmVkIEhpdGNoY29j ayB8IFZlcnRpZ28gfCB0aHJpbGxlciB8IFBzeWNobyB8IGhvcnJvcgorKDEgcm93KQorPC9zY3Jl ZW4+CisgICAgIDwvcGFyYT4KKyAgPC9zZWN0Mj4KKwogIDwvc2VjdDE+CiAKICA8c2VjdDEgaWQ9 ImZ1bmN0aW9ucy1zZXF1ZW5jZSI+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3Nx bF9mZWF0dXJlcy50eHQgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3NxbF9mZWF0dXJlcy50eHQKaW5k ZXggODBhYzU5ZmJhNC4uYTBlNjNmNDU0ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxv Zy9zcWxfZmVhdHVyZXMudHh0CisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3FsX2ZlYXR1cmVz LnR4dApAQCAtNTUwLDEwICs1NTAsMTAgQEAgVDgxNAlDb2xvbiBpbiBKU09OX09CSkVDVCBvciBK U09OX09CSkVDVEFHRwkJCVlFUwogVDgyMQlCYXNpYyBTUUwvSlNPTiBxdWVyeSBvcGVyYXRvcnMJ CQlZRVMJCiBUODIyCVNRTC9KU09OOiBJUyBKU09OIFdJVEggVU5JUVVFIEtFWVMgcHJlZGljYXRl CQkJWUVTCQogVDgyMwlTUUwvSlNPTjogUEFTU0lORyBjbGF1c2UJCQlZRVMJCi1UODI0CUpTT05f VEFCTEU6IHNwZWNpZmljIFBMQU4gY2xhdXNlCQkJTk8JCitUODI0CUpTT05fVEFCTEU6IHNwZWNp ZmljIFBMQU4gY2xhdXNlCQkJWUVTCQogVDgyNQlTUUwvSlNPTjogT04gRU1QVFkgYW5kIE9OIEVS Uk9SIGNsYXVzZXMJCQlZRVMJCiBUODI2CUdlbmVyYWwgdmFsdWUgZXhwcmVzc2lvbiBpbiBPTiBF UlJPUiBvciBPTiBFTVBUWSBjbGF1c2VzCQkJWUVTCQotVDgyNwlKU09OX1RBQkxFOiBzaWJsaW5n IE5FU1RFRCBDT0xVTU5TIGNsYXVzZXMJCQlOTwkKK1Q4MjcJSlNPTl9UQUJMRTogc2libGluZyBO RVNURUQgQ09MVU1OUyBjbGF1c2VzCQkJWUVTCQogVDgyOAlKU09OX1FVRVJZCQkJWUVTCQogVDgy OQlKU09OX1FVRVJZOiBhcnJheSB3cmFwcGVyIG9wdGlvbnMJCQlZRVMJCiBUODMwCUVuZm9yY2lu ZyB1bmlxdWUga2V5cyBpbiBTUUwvSlNPTiBjb25zdHJ1Y3RvciBmdW5jdGlvbnMJCQlZRVMJCkBA IC01NjQsNyArNTY0LDcgQEAgVDgzNAlTUUwvSlNPTiBwYXRoIGxhbmd1YWdlOiB3aWxkY2FyZCBt ZW1iZXIgYWNjZXNzb3IJCQlZRVMKIFQ4MzUJU1FML0pTT04gcGF0aCBsYW5ndWFnZTogZmlsdGVy IGV4cHJlc3Npb25zCQkJWUVTCQogVDgzNglTUUwvSlNPTiBwYXRoIGxhbmd1YWdlOiBzdGFydHMg d2l0aCBwcmVkaWNhdGUJCQlZRVMJCiBUODM3CVNRTC9KU09OIHBhdGggbGFuZ3VhZ2U6IHJlZ2V4 X2xpa2UgcHJlZGljYXRlCQkJWUVTCQotVDgzOAlKU09OX1RBQkxFOiBQTEFOIERFRkFVTFQgY2xh dXNlCQkJTk8JCitUODM4CUpTT05fVEFCTEU6IFBMQU4gREVGQVVMVCBjbGF1c2UJCQlZRVMJCiBU ODM5CUZvcm1hdHRlZCBjYXN0IG9mIGRhdGV0aW1lcyB0by9mcm9tIGNoYXJhY3RlciBzdHJpbmdz CQkJTk8JCiBUODQwCUhleCBpbnRlZ2VyIGxpdGVyYWxzIGluIFNRTC9KU09OIHBhdGggbGFuZ3Vh Z2UJCQlZRVMJCiBUODUxCVNRTC9KU09OOiBvcHRpb25hbCBrZXl3b3JkcyBmb3IgZGVmYXVsdCBz eW50YXgJCQlZRVMJCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwcklu dGVycC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHJJbnRlcnAuYwppbmRleCBiZWI0 MzMzYTM1Li4wNTc5OTc3NzI4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj RXhwckludGVycC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHBySW50ZXJwLmMK QEAgLTQzNDAsNiArNDM0MCwxMiBAQCBFeGVjRXZhbEpzb25FeHByUGF0aChFeHByU3RhdGUgKnN0 YXRlLCBFeHByRXZhbFN0ZXAgKm9wLAogCQkJCWJyZWFrOwogCQkJfQogCisJCWNhc2UgSlNPTl9U QUJMRV9PUDoKKwkJCXBvc3RfZXZhbC0+anVtcF9ldmFsX2NvZXJjaW9uID0gLTE7CisJCQkqb3At PnJlc3ZhbHVlID0gaXRlbTsKKwkJCSpvcC0+cmVzbnVsbCA9IGZhbHNlOworCQkJYnJlYWs7CisK IAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgU1FML0pTT04gZXhwcmVz c2lvbiBvcCAlZCIsIGpleHByLT5vcCk7CiAJCQlyZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGFibGVGdW5jc2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZVRhYmxlRnVuY3NjYW4uYwppbmRleCA3MmNhMzRhMjI4Li45OWZiOTI4OTRjIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGFibGVGdW5jc2Nhbi5jCisrKyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUYWJsZUZ1bmNzY2FuLmMKQEAgLTI4LDYgKzI4LDcg QEAKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJub2Rlcy9leGVjbm9kZXMuaCIK ICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgorI2luY2x1ZGUgInV0aWxzL2pzb25wYXRoLmgi CiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMu aCIKICNpbmNsdWRlICJ1dGlscy94bWwuaCIKQEAgLTE2MSw4ICsxNjIsOSBAQCBFeGVjSW5pdFRh YmxlRnVuY1NjYW4oVGFibGVGdW5jU2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxh Z3MpCiAJc2NhbnN0YXRlLT5zcy5wcy5xdWFsID0KIAkJRXhlY0luaXRRdWFsKG5vZGUtPnNjYW4u cGxhbi5xdWFsLCAmc2NhbnN0YXRlLT5zcy5wcyk7CiAKLQkvKiBPbmx5IFhNTFRBQkxFIGlzIHN1 cHBvcnRlZCBjdXJyZW50bHkgKi8KLQlzY2Fuc3RhdGUtPnJvdXRpbmUgPSAmWG1sVGFibGVSb3V0 aW5lOworCS8qIE9ubHkgWE1MVEFCTEUgYW5kIEpTT05fVEFCTEUgYXJlIHN1cHBvcnRlZCBjdXJy ZW50bHkgKi8KKwlzY2Fuc3RhdGUtPnJvdXRpbmUgPQorCQl0Zi0+ZnVuY3R5cGUgPT0gVEZUX1hN TFRBQkxFID8gJlhtbFRhYmxlUm91dGluZSA6ICZKc29uYlRhYmxlUm91dGluZTsKIAogCXNjYW5z dGF0ZS0+cGVyVGFibGVDeHQgPQogCQlBbGxvY1NldENvbnRleHRDcmVhdGUoQ3VycmVudE1lbW9y eUNvbnRleHQsCkBAIC0xODIsNiArMTg0LDEwIEBAIEV4ZWNJbml0VGFibGVGdW5jU2NhbihUYWJs ZUZ1bmNTY2FuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJRXhlY0luaXRF eHByTGlzdCh0Zi0+Y29sZXhwcnMsIChQbGFuU3RhdGUgKikgc2NhbnN0YXRlKTsKIAlzY2Fuc3Rh dGUtPmNvbGRlZmV4cHJzID0KIAkJRXhlY0luaXRFeHByTGlzdCh0Zi0+Y29sZGVmZXhwcnMsIChQ bGFuU3RhdGUgKikgc2NhbnN0YXRlKTsKKwlzY2Fuc3RhdGUtPmNvbHZhbGV4cHJzID0KKwkJRXhl Y0luaXRFeHByTGlzdCh0Zi0+Y29sdmFsZXhwcnMsIChQbGFuU3RhdGUgKikgc2NhbnN0YXRlKTsK KwlzY2Fuc3RhdGUtPnBhc3Npbmd2YWxleHBycyA9CisJCUV4ZWNJbml0RXhwckxpc3QodGYtPnBh c3Npbmd2YWxleHBycywgKFBsYW5TdGF0ZSAqKSBzY2Fuc3RhdGUpOwogCiAJc2NhbnN0YXRlLT5u b3RudWxscyA9IHRmLT5ub3RudWxsczsKIApAQCAtMzY5LDE0ICszNzUsMTcgQEAgdGZ1bmNJbml0 aWFsaXplKFRhYmxlRnVuY1NjYW5TdGF0ZSAqdHN0YXRlLCBFeHByQ29udGV4dCAqZWNvbnRleHQs IERhdHVtIGRvYykKIAkJcm91dGluZS0+U2V0TmFtZXNwYWNlKHRzdGF0ZSwgbnNfbmFtZSwgbnNf dXJpKTsKIAl9CiAKLQkvKiBJbnN0YWxsIHRoZSByb3cgZmlsdGVyIGV4cHJlc3Npb24gaW50byB0 aGUgdGFibGUgYnVpbGRlciBjb250ZXh0ICovCi0JdmFsdWUgPSBFeGVjRXZhbEV4cHIodHN0YXRl LT5yb3dleHByLCBlY29udGV4dCwgJmlzbnVsbCk7Ci0JaWYgKGlzbnVsbCkKLQkJZXJlcG9ydChF UlJPUiwKLQkJCQkoZXJyY29kZShFUlJDT0RFX05VTExfVkFMVUVfTk9UX0FMTE9XRUQpLAotCQkJ CSBlcnJtc2coInJvdyBmaWx0ZXIgZXhwcmVzc2lvbiBtdXN0IG5vdCBiZSBudWxsIikpKTsKKwlp ZiAocm91dGluZS0+U2V0Um93RmlsdGVyKQorCXsKKwkJLyogSW5zdGFsbCB0aGUgcm93IGZpbHRl ciBleHByZXNzaW9uIGludG8gdGhlIHRhYmxlIGJ1aWxkZXIgY29udGV4dCAqLworCQl2YWx1ZSA9 IEV4ZWNFdmFsRXhwcih0c3RhdGUtPnJvd2V4cHIsIGVjb250ZXh0LCAmaXNudWxsKTsKKwkJaWYg KGlzbnVsbCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfTlVMTF9W QUxVRV9OT1RfQUxMT1dFRCksCisJCQkJCSBlcnJtc2coInJvdyBmaWx0ZXIgZXhwcmVzc2lvbiBt dXN0IG5vdCBiZSBudWxsIikpKTsKIAotCXJvdXRpbmUtPlNldFJvd0ZpbHRlcih0c3RhdGUsIFRl eHREYXR1bUdldENTdHJpbmcodmFsdWUpKTsKKwkJcm91dGluZS0+U2V0Um93RmlsdGVyKHRzdGF0 ZSwgVGV4dERhdHVtR2V0Q1N0cmluZyh2YWx1ZSkpOworCX0KIAogCS8qCiAJICogSW5zdGFsbCB0 aGUgY29sdW1uIGZpbHRlciBleHByZXNzaW9ucyBpbnRvIHRoZSB0YWJsZSBidWlsZGVyIGNvbnRl eHQuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9tYWtlZnVuY3MuYyBiL3NyYy9iYWNr ZW5kL25vZGVzL21ha2VmdW5jcy5jCmluZGV4IDUzOGNjYjMwYWEuLmE0YjljMjg2ODkgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25v ZGVzL21ha2VmdW5jcy5jCkBAIC01MzcsNiArNTM3LDIyIEBAIG1ha2VGdW5jRXhwcihPaWQgZnVu Y2lkLCBPaWQgcmV0dHlwZSwgTGlzdCAqYXJncywKIAlyZXR1cm4gZnVuY2V4cHI7CiB9CiAKKy8q CisgKiBtYWtlU3RyaW5nQ29uc3QgLQorICogCWJ1aWxkIGEgQV9Db25zdCBub2RlIG9mIHR5cGUg VF9TdHJpbmcgZm9yIGdpdmVuIHN0cmluZworICovCitOb2RlICoKK21ha2VTdHJpbmdDb25zdChj aGFyICpzdHIsIGludCBsb2NhdGlvbikKK3sKKwlBX0NvbnN0CSAgICpuID0gbWFrZU5vZGUoQV9D b25zdCk7CisKKwluLT52YWwuc3ZhbC50eXBlID0gVF9TdHJpbmc7CisJbi0+dmFsLnN2YWwuc3Zh bCA9IHN0cjsKKwluLT5sb2NhdGlvbiA9IGxvY2F0aW9uOworCisgICByZXR1cm4gKE5vZGUgKikg bjsKK30KKwogLyoKICAqIG1ha2VEZWZFbGVtIC0KICAqCWJ1aWxkIGEgRGVmRWxlbSBub2RlCkBA IC04NzQsNiArODkwLDk4IEBAIG1ha2VKc29uQmVoYXZpb3IoSnNvbkJlaGF2aW9yVHlwZSB0eXBl LCBOb2RlICpleHByLCBKc29uQ29lcmNpb24gKmNvZXJjaW9uLAogCXJldHVybiBiZWhhdmlvcjsK IH0KIAorLyoKKyAqIG1ha2VKc29uVGFibGVQYXRoIC0KKyAqCQlNYWtlIEpzb25UYWJsZVBhdGgg bm9kZSBmcm9tIGdpdmVuIHBhdGggc3RyaW5nIGFuZCBuYW1lIChpZiBhbnkpCisgKi8KK0pzb25U YWJsZVBhdGggKgorbWFrZUpzb25UYWJsZVBhdGgoQ29uc3QgKnBhdGh2YWx1ZSwgY2hhciAqcGF0 aG5hbWUpCit7CisJSnNvblRhYmxlUGF0aCAqcGF0aCA9IG1ha2VOb2RlKEpzb25UYWJsZVBhdGgp OworCisJQXNzZXJ0KElzQShwYXRodmFsdWUsIENvbnN0KSk7CisJcGF0aC0+dmFsdWUgPSBwYXRo dmFsdWU7CisJaWYgKHBhdGhuYW1lKQorCQlwYXRoLT5uYW1lID0gcGF0aG5hbWU7CisKKwlyZXR1 cm4gcGF0aDsKK30KKworLyoKKyAqIG1ha2VKc29uVGFibGVQYXRoU3BlYyAtCisgKgkJTWFrZSBK c29uVGFibGVQYXRoU3BlYyBub2RlIGZyb20gZ2l2ZW4gcGF0aCBzdHJpbmcgYW5kIG5hbWUgKGlm IGFueSkKKyAqLworTm9kZSAqCittYWtlSnNvblRhYmxlUGF0aFNwZWMoY2hhciAqc3RyaW5nLCBj aGFyICpuYW1lLCBpbnQgc3RyaW5nX2xvY2F0aW9uLAorCQkJCQkgIGludCBuYW1lX2xvY2F0aW9u KQoreworCUpzb25UYWJsZVBhdGhTcGVjICpwYXRoc3BlYyA9IG1ha2VOb2RlKEpzb25UYWJsZVBh dGhTcGVjKTsKKworCUFzc2VydChzdHJpbmcgIT0gTlVMTCk7CisJcGF0aHNwZWMtPnN0cmluZyA9 IG1ha2VTdHJpbmdDb25zdChzdHJpbmcsIHN0cmluZ19sb2NhdGlvbik7CisJaWYgKG5hbWUgIT0g TlVMTCkKKwkJcGF0aHNwZWMtPm5hbWUgPSBwc3RyZHVwKG5hbWUpOworCisJcGF0aHNwZWMtPm5h bWVfbG9jYXRpb24gPSBuYW1lX2xvY2F0aW9uOworCXBhdGhzcGVjLT5sb2NhdGlvbiA9IHN0cmlu Z19sb2NhdGlvbjsKKworCXJldHVybiAoTm9kZSAqKSBwYXRoc3BlYzsKK30KKworLyoKKyAqIG1h a2VKc29uVGFibGVEZWZhdWx0UGxhbiAtCisgKgkgICBjcmVhdGVzIGEgSnNvblRhYmxlUGxhblNw ZWMgbm9kZSB0byByZXByZXNlbnQgYSAiZGVmYXVsdCIgSlNPTl9UQUJMRSBwbGFuCisgKgkgICB3 aXRoIGdpdmVuIGpvaW4gc3RyYXRlZ3kKKyAqLworTm9kZSAqCittYWtlSnNvblRhYmxlRGVmYXVs dFBsYW4oSnNvblRhYmxlUGxhbkpvaW5UeXBlIGpvaW5fdHlwZSwgaW50IGxvY2F0aW9uKQorewor CUpzb25UYWJsZVBsYW5TcGVjICpuID0gbWFrZU5vZGUoSnNvblRhYmxlUGxhblNwZWMpOworCisJ bi0+cGxhbl90eXBlID0gSlNUUF9ERUZBVUxUOworCW4tPmpvaW5fdHlwZSA9IGpvaW5fdHlwZTsK KwluLT5sb2NhdGlvbiA9IGxvY2F0aW9uOworCisJcmV0dXJuIChOb2RlICopIG47Cit9CisKKy8q CisgKiBtYWtlSnNvblRhYmxlU2ltcGxlUGxhbiAtCisgKgkgICBjcmVhdGVzIGEgSnNvblRhYmxl UGxhblNwZWMgbm9kZSB0byByZXByZXNlbnQgYSAic2ltcGxlIiBKU09OX1RBQkxFIHBsYW4KKyAq CSAgIGZvciBnaXZlbiBQQVRICisgKi8KK05vZGUgKgorbWFrZUpzb25UYWJsZVNpbXBsZVBsYW4o Y2hhciAqcGF0aG5hbWUsIGludCBsb2NhdGlvbikKK3sKKwlKc29uVGFibGVQbGFuU3BlYyAqbiA9 IG1ha2VOb2RlKEpzb25UYWJsZVBsYW5TcGVjKTsKKworCW4tPnBsYW5fdHlwZSA9IEpTVFBfU0lN UExFOworCW4tPnBhdGhuYW1lID0gcGF0aG5hbWU7CisJbi0+bG9jYXRpb24gPSBsb2NhdGlvbjsK KworCXJldHVybiAoTm9kZSAqKSBuOworfQorCisvKgorICogbWFrZUpzb25UYWJsZUpvaW5lZFBs YW4gLQorICoJICAgY3JlYXRlcyBhIEpzb25UYWJsZVBsYW5TcGVjIG5vZGUgdG8gcmVwcmVzZW50 IGpvaW4gYmV0d2VlbiB0aGUgZ2l2ZW4KKyAqCSAgIHBhaXIgb2YgcGxhbnMKKyAqLworTm9kZSAq CittYWtlSnNvblRhYmxlSm9pbmVkUGxhbihKc29uVGFibGVQbGFuSm9pblR5cGUgdHlwZSwgTm9k ZSAqcGxhbjEsIE5vZGUgKnBsYW4yLAorCQkJCQkJaW50IGxvY2F0aW9uKQoreworCUpzb25UYWJs ZVBsYW5TcGVjICpuID0gbWFrZU5vZGUoSnNvblRhYmxlUGxhblNwZWMpOworCisJbi0+cGxhbl90 eXBlID0gSlNUUF9KT0lORUQ7CisJbi0+am9pbl90eXBlID0gdHlwZTsKKwluLT5wbGFuMSA9IGNh c3ROb2RlKEpzb25UYWJsZVBsYW5TcGVjLCBwbGFuMSk7CisJbi0+cGxhbjIgPSBjYXN0Tm9kZShK c29uVGFibGVQbGFuU3BlYywgcGxhbjIpOworCW4tPmxvY2F0aW9uID0gbG9jYXRpb247CisKKwly ZXR1cm4gKE5vZGUgKikgbjsKK30KKwogLyoKICAqIG1ha2VKc29uS2V5VmFsdWUgLQogICoJICBj cmVhdGVzIGEgSnNvbktleVZhbHVlIG5vZGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVz L25vZGVGdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMKaW5kZXggZjQ1YmVk MmE1ZC4uMGFlYjYxYzRmNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNz LmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMKQEAgLTI2OTksNiArMjY5OSwx MCBAQCBleHByZXNzaW9uX3RyZWVfd2Fsa2VyX2ltcGwoTm9kZSAqbm9kZSwKIAkJCQkJcmV0dXJu IHRydWU7CiAJCQkJaWYgKFdBTEsodGYtPmNvbGRlZmV4cHJzKSkKIAkJCQkJcmV0dXJuIHRydWU7 CisJCQkJaWYgKFdBTEsodGYtPmNvbHZhbGV4cHJzKSkKKwkJCQkJcmV0dXJuIHRydWU7CisJCQkJ aWYgKFdBTEsodGYtPnBhc3Npbmd2YWxleHBycykpCisJCQkJCXJldHVybiB0cnVlOwogCQkJfQog CQkJYnJlYWs7CiAJCWRlZmF1bHQ6CkBAIC0zNzY5LDYgKzM3NzMsOCBAQCBleHByZXNzaW9uX3Ry ZWVfbXV0YXRvcl9pbXBsKE5vZGUgKm5vZGUsCiAJCQkJTVVUQVRFKG5ld25vZGUtPnJvd2V4cHIs IHRmLT5yb3dleHByLCBOb2RlICopOwogCQkJCU1VVEFURShuZXdub2RlLT5jb2xleHBycywgdGYt PmNvbGV4cHJzLCBMaXN0ICopOwogCQkJCU1VVEFURShuZXdub2RlLT5jb2xkZWZleHBycywgdGYt PmNvbGRlZmV4cHJzLCBMaXN0ICopOworCQkJCU1VVEFURShuZXdub2RlLT5jb2x2YWxleHBycywg dGYtPmNvbHZhbGV4cHJzLCBMaXN0ICopOworCQkJCU1VVEFURShuZXdub2RlLT5wYXNzaW5ndmFs ZXhwcnMsIHRmLT5wYXNzaW5ndmFsZXhwcnMsIExpc3QgKik7CiAJCQkJcmV0dXJuIChOb2RlICop IG5ld25vZGU7CiAJCQl9CiAJCQlicmVhazsKQEAgLTQxOTQsNiArNDIwMCwzOCBAQCByYXdfZXhw cmVzc2lvbl90cmVlX3dhbGtlcl9pbXBsKE5vZGUgKm5vZGUsCiAJCQkJCXJldHVybiB0cnVlOwog CQkJfQogCQkJYnJlYWs7CisJCWNhc2UgVF9Kc29uVGFibGU6CisJCQl7CisJCQkJSnNvblRhYmxl ICAqanQgPSAoSnNvblRhYmxlICopIG5vZGU7CisKKwkJCQlpZiAoV0FMSyhqdC0+Y29udGV4dF9p dGVtKSkKKwkJCQkJcmV0dXJuIHRydWU7CisJCQkJaWYgKFdBTEsoanQtPnBhdGhzcGVjKSkKKwkJ CQkJcmV0dXJuIHRydWU7CisJCQkJaWYgKFdBTEsoanQtPnBhc3NpbmcpKQorCQkJCQlyZXR1cm4g dHJ1ZTsKKwkJCQlpZiAoV0FMSyhqdC0+Y29sdW1ucykpCisJCQkJCXJldHVybiB0cnVlOworCQkJ CWlmIChXQUxLKGp0LT5vbl9lcnJvcikpCisJCQkJCXJldHVybiB0cnVlOworCQkJfQorCQkJYnJl YWs7CisJCWNhc2UgVF9Kc29uVGFibGVDb2x1bW46CisJCQl7CisJCQkJSnNvblRhYmxlQ29sdW1u ICpqdGMgPSAoSnNvblRhYmxlQ29sdW1uICopIG5vZGU7CisKKwkJCQlpZiAoV0FMSyhqdGMtPnR5 cGVOYW1lKSkKKwkJCQkJcmV0dXJuIHRydWU7CisJCQkJaWYgKFdBTEsoanRjLT5vbl9lbXB0eSkp CisJCQkJCXJldHVybiB0cnVlOworCQkJCWlmIChXQUxLKGp0Yy0+b25fZXJyb3IpKQorCQkJCQly ZXR1cm4gdHJ1ZTsKKwkJCQlpZiAoanRjLT5jb2x0eXBlID09IEpUQ19ORVNURUQgJiYgV0FMSyhq dGMtPmNvbHVtbnMpKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCX0KKwkJCWJyZWFrOworCQljYXNl IFRfSnNvblRhYmxlUGF0aFNwZWM6CisJCQlyZXR1cm4gV0FMSygoKEpzb25UYWJsZVBhdGhTcGVj ICopIG5vZGUpLT5zdHJpbmcpOwogCQljYXNlIFRfTnVsbFRlc3Q6CiAJCQlyZXR1cm4gV0FMSygo KE51bGxUZXN0ICopIG5vZGUpLT5hcmcpOwogCQljYXNlIFRfQm9vbGVhblRlc3Q6CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvTWFrZWZpbGUgYi9zcmMvYmFja2VuZC9wYXJzZXIvTWFr ZWZpbGUKaW5kZXggNDAxYzE2Njg2Yy4uMzE2MmEwMWYzMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvcGFyc2VyL01ha2VmaWxlCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9NYWtlZmlsZQpAQCAt MjMsNiArMjMsNyBAQCBPQkpTID0gXAogCXBhcnNlX2Vuci5vIFwKIAlwYXJzZV9leHByLm8gXAog CXBhcnNlX2Z1bmMubyBcCisJcGFyc2VfanNvbnRhYmxlLm8gXAogCXBhcnNlX21lcmdlLm8gXAog CXBhcnNlX25vZGUubyBcCiAJcGFyc2Vfb3Blci5vIFwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3BhcnNlci9ncmFtLnkgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CmluZGV4IGU5MDBlZGZi OGEuLjc5MTVlODI3OWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKKysr IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpAQCAtMTcwLDcgKzE3MCw2IEBAIHN0YXRpYyB2 b2lkIHVwZGF0ZVJhd1N0bXRFbmQoUmF3U3RtdCAqcnMsIGludCBlbmRfbG9jYXRpb24pOwogc3Rh dGljIE5vZGUgKm1ha2VDb2x1bW5SZWYoY2hhciAqY29sbmFtZSwgTGlzdCAqaW5kaXJlY3Rpb24s CiAJCQkJCQkgICBpbnQgbG9jYXRpb24sIGNvcmVfeXlzY2FuX3QgeXlzY2FubmVyKTsKIHN0YXRp YyBOb2RlICptYWtlVHlwZUNhc3QoTm9kZSAqYXJnLCBUeXBlTmFtZSAqdHlwZW5hbWUsIGludCBs b2NhdGlvbik7Ci1zdGF0aWMgTm9kZSAqbWFrZVN0cmluZ0NvbnN0KGNoYXIgKnN0ciwgaW50IGxv Y2F0aW9uKTsKIHN0YXRpYyBOb2RlICptYWtlU3RyaW5nQ29uc3RDYXN0KGNoYXIgKnN0ciwgaW50 IGxvY2F0aW9uLCBUeXBlTmFtZSAqdHlwZW5hbWUpOwogc3RhdGljIE5vZGUgKm1ha2VJbnRDb25z dChpbnQgdmFsLCBpbnQgbG9jYXRpb24pOwogc3RhdGljIE5vZGUgKm1ha2VGbG9hdENvbnN0KGNo YXIgKnN0ciwgaW50IGxvY2F0aW9uKTsKQEAgLTY1NSwxNSArNjU0LDMxIEBAIHN0YXRpYyBOb2Rl ICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBO b2RlICpxdWVyeSk7CiAJCQkJanNvbl9hcmd1bWVudAogCQkJCWpzb25fYmVoYXZpb3IKIAkJCQlq c29uX29uX2Vycm9yX2NsYXVzZV9vcHQKKwkJCQlqc29uX3RhYmxlCisJCQkJanNvbl90YWJsZV9j b2x1bW5fZGVmaW5pdGlvbgorCQkJCWpzb25fdGFibGVfY29sdW1uX3BhdGhfY2xhdXNlX29wdAor CQkJCWpzb25fdGFibGVfcGxhbl9jbGF1c2Vfb3B0CisJCQkJanNvbl90YWJsZV9wbGFuCisJCQkJ anNvbl90YWJsZV9wbGFuX3NpbXBsZQorCQkJCWpzb25fdGFibGVfcGxhbl9vdXRlcgorCQkJCWpz b25fdGFibGVfcGxhbl9pbm5lcgorCQkJCWpzb25fdGFibGVfcGxhbl91bmlvbgorCQkJCWpzb25f dGFibGVfcGxhbl9jcm9zcworCQkJCWpzb25fdGFibGVfcGxhbl9wcmltYXJ5CiAldHlwZSA8bGlz dD4JanNvbl9uYW1lX2FuZF92YWx1ZV9saXN0CiAJCQkJanNvbl92YWx1ZV9leHByX2xpc3QKIAkJ CQlqc29uX2FycmF5X2FnZ3JlZ2F0ZV9vcmRlcl9ieV9jbGF1c2Vfb3B0CiAJCQkJanNvbl9hcmd1 bWVudHMKIAkJCQlqc29uX2JlaGF2aW9yX2NsYXVzZV9vcHQKIAkJCQlqc29uX3Bhc3NpbmdfY2xh dXNlX29wdAorCQkJCWpzb25fdGFibGVfY29sdW1uX2RlZmluaXRpb25fbGlzdAorJXR5cGUgPHN0 cj4JCWpzb25fdGFibGVfcGF0aF9uYW1lX29wdAogJXR5cGUgPGl2YWw+CWpzb25fYmVoYXZpb3Jf dHlwZQogCQkJCWpzb25fcHJlZGljYXRlX3R5cGVfY29uc3RyYWludAogCQkJCWpzb25fcXVvdGVz X2NsYXVzZV9vcHQKKwkJCQlqc29uX3RhYmxlX2RlZmF1bHRfcGxhbl9jaG9pY2VzCisJCQkJanNv bl90YWJsZV9kZWZhdWx0X3BsYW5faW5uZXJfb3V0ZXIKKwkJCQlqc29uX3RhYmxlX2RlZmF1bHRf cGxhbl91bmlvbl9jcm9zcwogCQkJCWpzb25fd3JhcHBlcl9iZWhhdmlvcgogJXR5cGUgPGJvb2xl YW4+CWpzb25fa2V5X3VuaXF1ZW5lc3NfY29uc3RyYWludF9vcHQKIAkJCQlqc29uX29iamVjdF9j b25zdHJ1Y3Rvcl9udWxsX2NsYXVzZV9vcHQKQEAgLTczMyw3ICs3NDgsNyBAQCBzdGF0aWMgTm9k ZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywg Tm9kZSAqcXVlcnkpOwogCUlOVEVSU0VDVCBJTlRFUlZBTCBJTlRPIElOVk9LRVIgSVMgSVNOVUxM IElTT0xBVElPTgogCiAJSk9JTiBKU09OIEpTT05fQVJSQVkgSlNPTl9BUlJBWUFHRyBKU09OX0VY SVNUUyBKU09OX09CSkVDVCBKU09OX09CSkVDVEFHRwotCUpTT05fUVVFUlkgSlNPTl9TQ0FMQVIg SlNPTl9TRVJJQUxJWkUgSlNPTl9WQUxVRQorCUpTT05fUVVFUlkgSlNPTl9TQ0FMQVIgSlNPTl9T RVJJQUxJWkUgSlNPTl9UQUJMRSBKU09OX1ZBTFVFCiAKIAlLRUVQIEtFWSBLRVlTCiAKQEAgLTc0 NCw4ICs3NTksOCBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAq cmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCU1BUFBJTkcgTUFUQ0ggTUFU Q0hFRCBNQVRFUklBTElaRUQgTUFYVkFMVUUgTUVSR0UgTUVUSE9ECiAJTUlOVVRFX1AgTUlOVkFM VUUgTU9ERSBNT05USF9QIE1PVkUKIAotCU5BTUVfUCBOQU1FUyBOQVRJT05BTCBOQVRVUkFMIE5D SEFSIE5FVyBORVhUIE5GQyBORkQgTkZLQyBORktEIE5PIE5PTkUKLQlOT1JNQUxJWkUgTk9STUFM SVpFRAorCU5BTUVfUCBOQU1FUyBOQVRJT05BTCBOQVRVUkFMIE5DSEFSIE5FU1RFRCBORVcgTkVY VCBORkMgTkZEIE5GS0MgTkZLRCBOTworCU5PTkUgTk9STUFMSVpFIE5PUk1BTElaRUQKIAlOT1Qg Tk9USElORyBOT1RJRlkgTk9UTlVMTCBOT1dBSVQgTlVMTF9QIE5VTExJRgogCU5VTExTX1AgTlVN RVJJQwogCkBAIC03NTMsOCArNzY4LDggQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3 U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAlPUkRF UiBPUkRJTkFMSVRZIE9USEVSUyBPVVRfUCBPVVRFUl9QCiAJT1ZFUiBPVkVSTEFQUyBPVkVSTEFZ IE9WRVJSSURJTkcgT1dORUQgT1dORVIKIAotCVBBUkFMTEVMIFBBUkFNRVRFUiBQQVJTRVIgUEFS VElBTCBQQVJUSVRJT04gUEFTU0lORyBQQVNTV09SRAotCVBMQUNJTkcgUExBTlMgUE9MSUNZCisJ UEFSQUxMRUwgUEFSQU1FVEVSIFBBUlNFUiBQQVJUSUFMIFBBUlRJVElPTiBQQVNTSU5HIFBBU1NX T1JEIFBBVEgKKwlQTEFDSU5HIFBMQU4gUExBTlMgUE9MSUNZCiAJUE9TSVRJT04gUFJFQ0VESU5H IFBSRUNJU0lPTiBQUkVTRVJWRSBQUkVQQVJFIFBSRVBBUkVEIFBSSU1BUlkKIAlQUklPUiBQUklW SUxFR0VTIFBST0NFRFVSQUwgUFJPQ0VEVVJFIFBST0NFRFVSRVMgUFJPR1JBTSBQVUJMSUNBVElP TgogCkBAIC04NzIsMTAgKzg4NywxMyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdT ZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogICogdGhl IHNhbWUgcHJlY2VkZW5jZSBhcyBJREVOVC4gIFRoaXMgYWxsb3dzIHJlc29sdmluZyBjb25mbGlj dHMgaW4gdGhlCiAgKiBqc29uX3ByZWRpY2F0ZV90eXBlX2NvbnN0cmFpbnQgYW5kIGpzb25fa2V5 X3VuaXF1ZW5lc3NfY29uc3RyYWludF9vcHQKICAqIHByb2R1Y3Rpb25zIChzZWUgY29tbWVudHMg dGhlcmUpLgorICoKKyAqIExpa2UgdGhlIFVOQk9VTkRFRCBQUkVDRURJTkcvRk9MTE9XSU5HIGNh c2UsIE5FU1RFRCBpcyBhc3NpZ25lZCBhIGxvd2VyCisgKiBwcmVjZWRlbmNlIHRoYW4gUEFUSCB0 byBmaXggYW1iaWd1aXR5IGluIHRoZSBqc29uX3RhYmxlIHByb2R1Y3Rpb24uCiAgKi8KLSVub25h c3NvYwlVTkJPVU5ERUQJCS8qIGlkZWFsbHkgd291bGQgaGF2ZSBzYW1lIHByZWNlZGVuY2UgYXMg SURFTlQgKi8KKyVub25hc3NvYwlVTkJPVU5ERUQgTkVTVEVEIC8qIGlkZWFsbHkgd291bGQgaGF2 ZSBzYW1lIHByZWNlZGVuY2UgYXMgSURFTlQgKi8KICVub25hc3NvYwlJREVOVCBQQVJUSVRJT04g UkFOR0UgUk9XUyBHUk9VUFMgUFJFQ0VESU5HIEZPTExPV0lORyBDVUJFIFJPTExVUAotCQkJU0VU IEtFWVMgT0JKRUNUX1AgU0NBTEFSIFZBTFVFX1AgV0lUSCBXSVRIT1VUCisJCQlTRVQgS0VZUyBP QkpFQ1RfUCBTQ0FMQVIgVkFMVUVfUCBXSVRIIFdJVEhPVVQgUEFUSAogJWxlZnQJCU9wIE9QRVJB VE9SCQkvKiBtdWx0aS1jaGFyYWN0ZXIgb3BzIGFuZCB1c2VyLWRlZmluZWQgb3BlcmF0b3JzICov CiAlbGVmdAkJJysnICctJwogJWxlZnQJCScqJyAnLycgJyUnCkBAIC04OTYsNyArOTE0LDYgQEAg c3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3Qg KmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKICAqIGxlZnQtYXNzb2NpYXRpdml0eSBhbW9uZyB0aGUg Sk9JTiBydWxlcyB0aGVtc2VsdmVzLgogICovCiAlbGVmdAkJSk9JTiBDUk9TUyBMRUZUIEZVTEwg UklHSFQgSU5ORVJfUCBOQVRVUkFMCi0KICUlCiAKIC8qCkBAIC0xMzQ0NSw2ICsxMzQ2MiwyMSBA QCB0YWJsZV9yZWY6CXJlbGF0aW9uX2V4cHIgb3B0X2FsaWFzX2NsYXVzZQogCQkJCQkkMi0+YWxp YXMgPSAkNDsKIAkJCQkJJCQgPSAoTm9kZSAqKSAkMjsKIAkJCQl9CisJCQl8IGpzb25fdGFibGUg b3B0X2FsaWFzX2NsYXVzZQorCQkJCXsKKwkJCQkJSnNvblRhYmxlICAqanQgPSBjYXN0Tm9kZShK c29uVGFibGUsICQxKTsKKworCQkJCQlqdC0+YWxpYXMgPSAkMjsKKwkJCQkJJCQgPSAoTm9kZSAq KSBqdDsKKwkJCQl9CisJCQl8IExBVEVSQUxfUCBqc29uX3RhYmxlIG9wdF9hbGlhc19jbGF1c2UK KwkJCQl7CisJCQkJCUpzb25UYWJsZSAgKmp0ID0gY2FzdE5vZGUoSnNvblRhYmxlLCAkMik7CisK KwkJCQkJanQtPmFsaWFzID0gJDM7CisJCQkJCWp0LT5sYXRlcmFsID0gdHJ1ZTsKKwkJCQkJJCQg PSAoTm9kZSAqKSBqdDsKKwkJCQl9CiAJCTsKIAogCkBAIC0xNDAxMiw2ICsxNDA0NCw4IEBAIHht bHRhYmxlX2NvbHVtbl9vcHRpb25fZWw6CiAJCQkJeyAkJCA9IG1ha2VEZWZFbGVtKCJpc19ub3Rf bnVsbCIsIChOb2RlICopIG1ha2VCb29sZWFuKHRydWUpLCBAMSk7IH0KIAkJCXwgTlVMTF9QCiAJ CQkJeyAkJCA9IG1ha2VEZWZFbGVtKCJpc19ub3RfbnVsbCIsIChOb2RlICopIG1ha2VCb29sZWFu KGZhbHNlKSwgQDEpOyB9CisJCQl8IFBBVEggYl9leHByCisJCQkJeyAkJCA9IG1ha2VEZWZFbGVt KCJwYXRoIiwgJDIsIEAxKTsgfQogCQk7CiAKIHhtbF9uYW1lc3BhY2VfbGlzdDoKQEAgLTE0MDQw LDYgKzE0MDc0LDIzMyBAQCB4bWxfbmFtZXNwYWNlX2VsOgogCQkJCX0KIAkJOwogCitqc29uX3Rh YmxlOgorCQkJSlNPTl9UQUJMRSAnKCcKKwkJCQlqc29uX3ZhbHVlX2V4cHIgJywnIGFfZXhwciBq c29uX3RhYmxlX3BhdGhfbmFtZV9vcHQKKwkJCQlqc29uX3Bhc3NpbmdfY2xhdXNlX29wdAorCQkJ CUNPTFVNTlMgJygnIGpzb25fdGFibGVfY29sdW1uX2RlZmluaXRpb25fbGlzdCAnKScKKwkJCQlq c29uX3RhYmxlX3BsYW5fY2xhdXNlX29wdAorCQkJCWpzb25fb25fZXJyb3JfY2xhdXNlX29wdAor CQkJJyknCisJCQkJeworCQkJCQlKc29uVGFibGUgKm4gPSBtYWtlTm9kZShKc29uVGFibGUpOwor CQkJCQljaGFyCSAgKnBhdGhzdHJpbmc7CisKKwkJCQkJbi0+Y29udGV4dF9pdGVtID0gKEpzb25W YWx1ZUV4cHIgKikgJDM7CisJCQkJCWlmICghSXNBKCQ1LCBBX0NvbnN0KSB8fAorCQkJCQkJY2Fz dE5vZGUoQV9Db25zdCwgJDUpLT52YWwubm9kZS50eXBlICE9IFRfU3RyaW5nKQorCQkJCQkJZXJl cG9ydChFUlJPUiwKKwkJCQkJCQkJZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRF RCksCisJCQkJCQkJCWVycm1zZygib25seSBzdHJpbmcgY29uc3RhbnRzIGFyZSBzdXBwb3J0ZWQg aW4gSlNPTl9UQUJMRSIKKwkJCQkJCQkJCSAgICIgcGF0aCBzcGVjaWZpY2F0aW9uIiksCisJCQkJ CQkJCXBhcnNlcl9lcnJwb3NpdGlvbihANSkpOworCQkJCQlwYXRoc3RyaW5nID0gY2FzdE5vZGUo QV9Db25zdCwgJDUpLT52YWwuc3ZhbC5zdmFsOworCQkJCQluLT5wYXRoc3BlYyA9IChKc29uVGFi bGVQYXRoU3BlYyAqKQorCQkJCQkJbWFrZUpzb25UYWJsZVBhdGhTcGVjKHBhdGhzdHJpbmcsICQ2 LCBANSwgQDYpOworCQkJCQluLT5wYXNzaW5nID0gJDc7CisJCQkJCW4tPmNvbHVtbnMgPSAkMTA7 CisJCQkJCW4tPnBsYW5zcGVjID0gKEpzb25UYWJsZVBsYW5TcGVjICopICQxMjsKKwkJCQkJbi0+ b25fZXJyb3IgPSAoSnNvbkJlaGF2aW9yICopICQxMzsKKwkJCQkJbi0+bG9jYXRpb24gPSBAMTsK KwkJCQkJJCQgPSAoTm9kZSAqKSBuOworCQkJCX0KKwkJOworCitqc29uX3RhYmxlX3BhdGhfbmFt ZV9vcHQ6CisJCQlBUyBuYW1lCQkJeyAkJCA9ICQyOyB9CisJCQl8IC8qIGVtcHR5ICovCXsgJCQg PSBOVUxMOyB9CisJCTsKKworanNvbl90YWJsZV9jb2x1bW5fZGVmaW5pdGlvbl9saXN0OgorCQkJ anNvbl90YWJsZV9jb2x1bW5fZGVmaW5pdGlvbgorCQkJCXsgJCQgPSBsaXN0X21ha2UxKCQxKTsg fQorCQkJfCBqc29uX3RhYmxlX2NvbHVtbl9kZWZpbml0aW9uX2xpc3QgJywnIGpzb25fdGFibGVf Y29sdW1uX2RlZmluaXRpb24KKwkJCQl7ICQkID0gbGFwcGVuZCgkMSwgJDMpOyB9CisJCTsKKwor anNvbl90YWJsZV9jb2x1bW5fZGVmaW5pdGlvbjoKKwkJCUNvbElkIEZPUiBPUkRJTkFMSVRZCisJ CQkJeworCQkJCQlKc29uVGFibGVDb2x1bW4gKm4gPSBtYWtlTm9kZShKc29uVGFibGVDb2x1bW4p OworCisJCQkJCW4tPmNvbHR5cGUgPSBKVENfRk9SX09SRElOQUxJVFk7CisJCQkJCW4tPm5hbWUg PSAkMTsKKwkJCQkJbi0+bG9jYXRpb24gPSBAMTsKKwkJCQkJJCQgPSAoTm9kZSAqKSBuOworCQkJ CX0KKwkJCXwgQ29sSWQgVHlwZW5hbWUKKwkJCQlqc29uX3RhYmxlX2NvbHVtbl9wYXRoX2NsYXVz ZV9vcHQKKwkJCQlqc29uX3dyYXBwZXJfYmVoYXZpb3IKKwkJCQlqc29uX3F1b3Rlc19jbGF1c2Vf b3B0CisJCQkJanNvbl9iZWhhdmlvcl9jbGF1c2Vfb3B0CisJCQkJeworCQkJCQlKc29uVGFibGVD b2x1bW4gKm4gPSBtYWtlTm9kZShKc29uVGFibGVDb2x1bW4pOworCisJCQkJCW4tPmNvbHR5cGUg PSBKVENfUkVHVUxBUjsKKwkJCQkJbi0+bmFtZSA9ICQxOworCQkJCQluLT50eXBlTmFtZSA9ICQy OworCQkJCQluLT5mb3JtYXQgPSBtYWtlSnNvbkZvcm1hdChKU19GT1JNQVRfREVGQVVMVCwgSlNf RU5DX0RFRkFVTFQsIC0xKTsKKwkJCQkJbi0+cGF0aHNwZWMgPSAoSnNvblRhYmxlUGF0aFNwZWMg KikgJDM7CisJCQkJCW4tPndyYXBwZXIgPSAkNDsgLyogZGlzYWxsb3dlZCBkdXJpbmcgcGFyc2Ut YW5hbHlzaXMhICovCisJCQkJCW4tPnF1b3RlcyA9ICQ1OyAvKiBkaXNhbGxvd2VkIGR1cmluZyBw YXJzZS1hbmFseXNpcyEgKi8KKwkJCQkJbi0+b25fZW1wdHkgPSAoSnNvbkJlaGF2aW9yICopIGxp bml0aWFsKCQ2KTsKKwkJCQkJbi0+b25fZXJyb3IgPSAoSnNvbkJlaGF2aW9yICopIGxzZWNvbmQo JDYpOworCQkJCQluLT5sb2NhdGlvbiA9IEAxOworCQkJCQkkJCA9IChOb2RlICopIG47CisJCQkJ fQorCQkJfCBDb2xJZCBUeXBlbmFtZSBqc29uX2Zvcm1hdF9jbGF1c2UKKwkJCQlqc29uX3RhYmxl X2NvbHVtbl9wYXRoX2NsYXVzZV9vcHQKKwkJCQlqc29uX3dyYXBwZXJfYmVoYXZpb3IKKwkJCQlq c29uX3F1b3Rlc19jbGF1c2Vfb3B0CisJCQkJanNvbl9iZWhhdmlvcl9jbGF1c2Vfb3B0CisJCQkJ eworCQkJCQlKc29uVGFibGVDb2x1bW4gKm4gPSBtYWtlTm9kZShKc29uVGFibGVDb2x1bW4pOwor CisJCQkJCW4tPmNvbHR5cGUgPSBKVENfRk9STUFUVEVEOworCQkJCQluLT5uYW1lID0gJDE7CisJ CQkJCW4tPnR5cGVOYW1lID0gJDI7CisJCQkJCW4tPmZvcm1hdCA9IChKc29uRm9ybWF0ICopICQz OworCQkJCQluLT5wYXRoc3BlYyA9IChKc29uVGFibGVQYXRoU3BlYyAqKSAkNDsKKwkJCQkJbi0+ d3JhcHBlciA9ICQ1OworCQkJCQluLT5xdW90ZXMgPSAkNjsKKwkJCQkJbi0+b25fZW1wdHkgPSAo SnNvbkJlaGF2aW9yICopIGxpbml0aWFsKCQ3KTsKKwkJCQkJbi0+b25fZXJyb3IgPSAoSnNvbkJl aGF2aW9yICopIGxzZWNvbmQoJDcpOworCQkJCQluLT5sb2NhdGlvbiA9IEAxOworCQkJCQkkJCA9 IChOb2RlICopIG47CisJCQkJfQorCQkJfCBDb2xJZCBUeXBlbmFtZQorCQkJCUVYSVNUUyBqc29u X3RhYmxlX2NvbHVtbl9wYXRoX2NsYXVzZV9vcHQKKwkJCQlqc29uX2JlaGF2aW9yX2NsYXVzZV9v cHQKKwkJCQl7CisJCQkJCUpzb25UYWJsZUNvbHVtbiAqbiA9IG1ha2VOb2RlKEpzb25UYWJsZUNv bHVtbik7CisKKwkJCQkJbi0+Y29sdHlwZSA9IEpUQ19FWElTVFM7CisJCQkJCW4tPm5hbWUgPSAk MTsKKwkJCQkJbi0+dHlwZU5hbWUgPSAkMjsKKwkJCQkJbi0+Zm9ybWF0ID0gbWFrZUpzb25Gb3Jt YXQoSlNfRk9STUFUX0RFRkFVTFQsIEpTX0VOQ19ERUZBVUxULCAtMSk7CisJCQkJCW4tPndyYXBw ZXIgPSBKU1dfTk9ORTsKKwkJCQkJbi0+cXVvdGVzID0gSlNfUVVPVEVTX1VOU1BFQzsKKwkJCQkJ bi0+cGF0aHNwZWMgPSAoSnNvblRhYmxlUGF0aFNwZWMgKikgJDQ7CisJCQkJCW4tPm9uX2VtcHR5 ID0gKEpzb25CZWhhdmlvciAqKSBsaW5pdGlhbCgkNSk7CisJCQkJCW4tPm9uX2Vycm9yID0gKEpz b25CZWhhdmlvciAqKSBsc2Vjb25kKCQ1KTsKKwkJCQkJbi0+bG9jYXRpb24gPSBAMTsKKwkJCQkJ JCQgPSAoTm9kZSAqKSBuOworCQkJCX0KKwkJCXwgTkVTVEVEIHBhdGhfb3B0IFNjb25zdAorCQkJ CUNPTFVNTlMgJygnIGpzb25fdGFibGVfY29sdW1uX2RlZmluaXRpb25fbGlzdCAnKScKKwkJCQl7 CisJCQkJCUpzb25UYWJsZUNvbHVtbiAqbiA9IG1ha2VOb2RlKEpzb25UYWJsZUNvbHVtbik7CisK KwkJCQkJbi0+Y29sdHlwZSA9IEpUQ19ORVNURUQ7CisJCQkJCW4tPnBhdGhzcGVjID0gKEpzb25U YWJsZVBhdGhTcGVjICopCisJCQkJCQltYWtlSnNvblRhYmxlUGF0aFNwZWMoJDMsIE5VTEwsIEAz LCAtMSk7CisJCQkJCW4tPmNvbHVtbnMgPSAkNjsKKwkJCQkJbi0+bG9jYXRpb24gPSBAMTsKKwkJ CQkJJCQgPSAoTm9kZSAqKSBuOworCQkJCX0KKwkJCXwgTkVTVEVEIHBhdGhfb3B0IFNjb25zdCBB UyBuYW1lCisJCQkJQ09MVU1OUyAnKCcganNvbl90YWJsZV9jb2x1bW5fZGVmaW5pdGlvbl9saXN0 ICcpJworCQkJCXsKKwkJCQkJSnNvblRhYmxlQ29sdW1uICpuID0gbWFrZU5vZGUoSnNvblRhYmxl Q29sdW1uKTsKKworCQkJCQluLT5jb2x0eXBlID0gSlRDX05FU1RFRDsKKwkJCQkJbi0+cGF0aHNw ZWMgPSAoSnNvblRhYmxlUGF0aFNwZWMgKikKKwkJCQkJCW1ha2VKc29uVGFibGVQYXRoU3BlYygk MywgJDUsIEAzLCBANSk7CisJCQkJCW4tPmNvbHVtbnMgPSAkODsKKwkJCQkJbi0+bG9jYXRpb24g PSBAMTsKKwkJCQkJJCQgPSAoTm9kZSAqKSBuOworCQkJCX0KKwkJOworCitwYXRoX29wdDoKKwkJ CVBBVEgKKwkJCXwgLyogRU1QVFkgKi8KKwkJOworCitqc29uX3RhYmxlX2NvbHVtbl9wYXRoX2Ns YXVzZV9vcHQ6CisJCQlQQVRIIFNjb25zdAorCQkJCXsgJCQgPSBtYWtlSnNvblRhYmxlUGF0aFNw ZWMoJDIsIE5VTEwsIEAyLCAtMSk7IH0KKwkJCXwgLyogRU1QVFkgKi8KKwkJCQl7ICQkID0gTlVM TDsgfQorCQk7CisKK2pzb25fdGFibGVfcGxhbl9jbGF1c2Vfb3B0OgorCQkJUExBTiAnKCcganNv bl90YWJsZV9wbGFuICcpJworCQkJCXsgJCQgPSAkMzsgfQorCQkJfCBQTEFOIERFRkFVTFQgJygn IGpzb25fdGFibGVfZGVmYXVsdF9wbGFuX2Nob2ljZXMgJyknCisJCQkJeyAkJCA9IG1ha2VKc29u VGFibGVEZWZhdWx0UGxhbigkNCwgQDEpOyB9CisJCQl8IC8qIEVNUFRZICovCisJCQkJeyAkJCA9 IE5VTEw7IH0KKwkJOworCitqc29uX3RhYmxlX3BsYW46CisJCQlqc29uX3RhYmxlX3BsYW5fc2lt cGxlCisJCQl8IGpzb25fdGFibGVfcGxhbl9vdXRlcgorCQkJfCBqc29uX3RhYmxlX3BsYW5faW5u ZXIKKwkJCXwganNvbl90YWJsZV9wbGFuX3VuaW9uCisJCQl8IGpzb25fdGFibGVfcGxhbl9jcm9z cworCQk7CisKK2pzb25fdGFibGVfcGxhbl9zaW1wbGU6CisJCQluYW1lCisJCQkJeyAkJCA9IG1h a2VKc29uVGFibGVTaW1wbGVQbGFuKCQxLCBAMSk7IH0KKwkJOworCitqc29uX3RhYmxlX3BsYW5f b3V0ZXI6CisJCQlqc29uX3RhYmxlX3BsYW5fc2ltcGxlIE9VVEVSX1AganNvbl90YWJsZV9wbGFu X3ByaW1hcnkKKwkJCQl7ICQkID0gbWFrZUpzb25UYWJsZUpvaW5lZFBsYW4oSlNUUF9KT0lOX09V VEVSLCAkMSwgJDMsIEAxKTsgfQorCQk7CisKK2pzb25fdGFibGVfcGxhbl9pbm5lcjoKKwkJCWpz b25fdGFibGVfcGxhbl9zaW1wbGUgSU5ORVJfUCBqc29uX3RhYmxlX3BsYW5fcHJpbWFyeQorCQkJ CXsgJCQgPSBtYWtlSnNvblRhYmxlSm9pbmVkUGxhbihKU1RQX0pPSU5fSU5ORVIsICQxLCAkMywg QDEpOyB9CisJCTsKKworanNvbl90YWJsZV9wbGFuX3VuaW9uOgorCQkJanNvbl90YWJsZV9wbGFu X3ByaW1hcnkgVU5JT04ganNvbl90YWJsZV9wbGFuX3ByaW1hcnkKKwkJCQl7ICQkID0gbWFrZUpz b25UYWJsZUpvaW5lZFBsYW4oSlNUUF9KT0lOX1VOSU9OLCAkMSwgJDMsIEAxKTsgfQorCQkJfCBq c29uX3RhYmxlX3BsYW5fdW5pb24gVU5JT04ganNvbl90YWJsZV9wbGFuX3ByaW1hcnkKKwkJCQl7 ICQkID0gbWFrZUpzb25UYWJsZUpvaW5lZFBsYW4oSlNUUF9KT0lOX1VOSU9OLCAkMSwgJDMsIEAx KTsgfQorCQk7CisKK2pzb25fdGFibGVfcGxhbl9jcm9zczoKKwkJCWpzb25fdGFibGVfcGxhbl9w cmltYXJ5IENST1NTIGpzb25fdGFibGVfcGxhbl9wcmltYXJ5CisJCQkJeyAkJCA9IG1ha2VKc29u VGFibGVKb2luZWRQbGFuKEpTVFBfSk9JTl9DUk9TUywgJDEsICQzLCBAMSk7IH0KKwkJCXwganNv bl90YWJsZV9wbGFuX2Nyb3NzIENST1NTIGpzb25fdGFibGVfcGxhbl9wcmltYXJ5CisJCQkJeyAk JCA9IG1ha2VKc29uVGFibGVKb2luZWRQbGFuKEpTVFBfSk9JTl9DUk9TUywgJDEsICQzLCBAMSk7 IH0KKwkJOworCitqc29uX3RhYmxlX3BsYW5fcHJpbWFyeToKKwkJCWpzb25fdGFibGVfcGxhbl9z aW1wbGUKKwkJCQl7ICQkID0gJDE7IH0KKwkJCXwgJygnIGpzb25fdGFibGVfcGxhbiAnKScKKwkJ CQl7CisJCQkJCWNhc3ROb2RlKEpzb25UYWJsZVBsYW5TcGVjLCAkMiktPmxvY2F0aW9uID0gQDE7 CisJCQkJCSQkID0gJDI7CisJCQkJfQorCQk7CisKK2pzb25fdGFibGVfZGVmYXVsdF9wbGFuX2No b2ljZXM6CisJCQlqc29uX3RhYmxlX2RlZmF1bHRfcGxhbl9pbm5lcl9vdXRlcgorCQkJCXsgJCQg PSAkMSB8IEpTVFBfSk9JTl9VTklPTjsgfQorCQkJfCBqc29uX3RhYmxlX2RlZmF1bHRfcGxhbl91 bmlvbl9jcm9zcworCQkJCXsgJCQgPSAkMSB8IEpTVFBfSk9JTl9PVVRFUjsgfQorCQkJfCBqc29u X3RhYmxlX2RlZmF1bHRfcGxhbl9pbm5lcl9vdXRlciAnLCcganNvbl90YWJsZV9kZWZhdWx0X3Bs YW5fdW5pb25fY3Jvc3MKKwkJCQl7ICQkID0gJDEgfCAkMzsgfQorCQkJfCBqc29uX3RhYmxlX2Rl ZmF1bHRfcGxhbl91bmlvbl9jcm9zcyAnLCcganNvbl90YWJsZV9kZWZhdWx0X3BsYW5faW5uZXJf b3V0ZXIKKwkJCQl7ICQkID0gJDEgfCAkMzsgfQorCQk7CisKK2pzb25fdGFibGVfZGVmYXVsdF9w bGFuX2lubmVyX291dGVyOgorCQkJSU5ORVJfUAkJCQkJCXsgJCQgPSBKU1RQX0pPSU5fSU5ORVI7 IH0KKwkJCXwgT1VURVJfUAkJCQkJeyAkJCA9IEpTVFBfSk9JTl9PVVRFUjsgfQorCQk7CisKK2pz b25fdGFibGVfZGVmYXVsdF9wbGFuX3VuaW9uX2Nyb3NzOgorCQkJVU5JT04JCQkJCQl7ICQkID0g SlNUUF9KT0lOX1VOSU9OOyB9CisJCQl8IENST1NTCQkJCQkJeyAkJCA9IEpTVFBfSk9JTl9DUk9T UzsgfQorCQk7CisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKICAqCVR5cGUgc3ludGF4CkBA IC0xNzQ0MSw2ICsxNzcwMiw3IEBAIHVucmVzZXJ2ZWRfa2V5d29yZDoKIAkJCXwgTU9WRQogCQkJ fCBOQU1FX1AKIAkJCXwgTkFNRVMKKwkJCXwgTkVTVEVECiAJCQl8IE5FVwogCQkJfCBORVhUCiAJ CQl8IE5GQwpAQCAtMTc0NzUsNiArMTc3MzcsOCBAQCB1bnJlc2VydmVkX2tleXdvcmQ6CiAJCQl8 IFBBUlRJVElPTgogCQkJfCBQQVNTSU5HCiAJCQl8IFBBU1NXT1JECisJCQl8IFBBVEgKKwkJCXwg UExBTgogCQkJfCBQTEFOUwogCQkJfCBQT0xJQ1kKIAkJCXwgUFJFQ0VESU5HCkBAIC0xNzYzOSw2 ICsxNzkwMyw3IEBAIGNvbF9uYW1lX2tleXdvcmQ6CiAJCQl8IEpTT05fUVVFUlkKIAkJCXwgSlNP Tl9TQ0FMQVIKIAkJCXwgSlNPTl9TRVJJQUxJWkUKKwkJCXwgSlNPTl9UQUJMRQogCQkJfCBKU09O X1ZBTFVFCiAJCQl8IExFQVNUCiAJCQl8IE5BVElPTkFMCkBAIC0xODAwNyw2ICsxODI3Miw3IEBA IGJhcmVfbGFiZWxfa2V5d29yZDoKIAkJCXwgSlNPTl9RVUVSWQogCQkJfCBKU09OX1NDQUxBUgog CQkJfCBKU09OX1NFUklBTElaRQorCQkJfCBKU09OX1RBQkxFCiAJCQl8IEpTT05fVkFMVUUKIAkJ CXwgS0VFUAogCQkJfCBLRVkKQEAgLTE4MDQ2LDYgKzE4MzEyLDcgQEAgYmFyZV9sYWJlbF9rZXl3 b3JkOgogCQkJfCBOQVRJT05BTAogCQkJfCBOQVRVUkFMCiAJCQl8IE5DSEFSCisJCQl8IE5FU1RF RAogCQkJfCBORVcKIAkJCXwgTkVYVAogCQkJfCBORkMKQEAgLTE4MDkwLDcgKzE4MzU3LDkgQEAg YmFyZV9sYWJlbF9rZXl3b3JkOgogCQkJfCBQQVJUSVRJT04KIAkJCXwgUEFTU0lORwogCQkJfCBQ QVNTV09SRAorCQkJfCBQQVRICiAJCQl8IFBMQUNJTkcKKwkJCXwgUExBTgogCQkJfCBQTEFOUwog CQkJfCBQT0xJQ1kKIAkJCXwgUE9TSVRJT04KQEAgLTE4MzU4LDE4ICsxODYyNyw2IEBAIG1ha2VU eXBlQ2FzdChOb2RlICphcmcsIFR5cGVOYW1lICp0eXBlbmFtZSwgaW50IGxvY2F0aW9uKQogCXJl dHVybiAoTm9kZSAqKSBuOwogfQogCi1zdGF0aWMgTm9kZSAqCi1tYWtlU3RyaW5nQ29uc3QoY2hh ciAqc3RyLCBpbnQgbG9jYXRpb24pCi17Ci0JQV9Db25zdAkgICAqbiA9IG1ha2VOb2RlKEFfQ29u c3QpOwotCi0Jbi0+dmFsLnN2YWwudHlwZSA9IFRfU3RyaW5nOwotCW4tPnZhbC5zdmFsLnN2YWwg PSBzdHI7Ci0Jbi0+bG9jYXRpb24gPSBsb2NhdGlvbjsKLQotICAgcmV0dXJuIChOb2RlICopIG47 Ci19Ci0KIHN0YXRpYyBOb2RlICoKIG1ha2VTdHJpbmdDb25zdENhc3QoY2hhciAqc3RyLCBpbnQg bG9jYXRpb24sIFR5cGVOYW1lICp0eXBlbmFtZSkKIHsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3BhcnNlci9tZXNvbi5idWlsZCBiL3NyYy9iYWNrZW5kL3BhcnNlci9tZXNvbi5idWlsZAppbmRl eCA4ZTgyOTU2NDBiLi41NzNkNzBiM2QxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIv bWVzb24uYnVpbGQKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL21lc29uLmJ1aWxkCkBAIC0xMCw2 ICsxMCw3IEBAIGJhY2tlbmRfc291cmNlcyArPSBmaWxlcygKICAgJ3BhcnNlX2Vuci5jJywKICAg J3BhcnNlX2V4cHIuYycsCiAgICdwYXJzZV9mdW5jLmMnLAorICAncGFyc2VfanNvbnRhYmxlLmMn LAogICAncGFyc2VfbWVyZ2UuYycsCiAgICdwYXJzZV9ub2RlLmMnLAogICAncGFyc2Vfb3Blci5j JywKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9jbGF1c2UuYyBiL3NyYy9i YWNrZW5kL3BhcnNlci9wYXJzZV9jbGF1c2UuYwppbmRleCBkMmFjODY3NzdjLi44MThkYzUzYWVi IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfY2xhdXNlLmMKKysrIGIvc3Jj L2JhY2tlbmQvcGFyc2VyL3BhcnNlX2NsYXVzZS5jCkBAIC02OTUsNyArNjk1LDExIEBAIHRyYW5z Zm9ybVJhbmdlVGFibGVGdW5jKFBhcnNlU3RhdGUgKnBzdGF0ZSwgUmFuZ2VUYWJsZUZ1bmMgKnJ0 ZikKIAljaGFyCSAgKipuYW1lczsKIAlpbnQJCQljb2xubzsKIAotCS8qIEN1cnJlbnRseSBvbmx5 IFhNTFRBQkxFIGlzIHN1cHBvcnRlZCAqLworCS8qCisJICogQ3VycmVudGx5IHdlIG9ubHkgc3Vw cG9ydCBYTUxUQUJMRSBoZXJlLiAgU2VlIHRyYW5zZm9ybUpzb25UYWJsZSgpIGZvcgorCSAqIEpT T05fVEFCTEUgc3VwcG9ydC4KKwkgKi8KKwl0Zi0+ZnVuY3R5cGUgPSBURlRfWE1MVEFCTEU7CiAJ Y29uc3RydWN0TmFtZSA9ICJYTUxUQUJMRSI7CiAJZG9jVHlwZSA9IFhNTE9JRDsKIApAQCAtMTEw MiwxMyArMTEwNiwxNyBAQCB0cmFuc2Zvcm1Gcm9tQ2xhdXNlSXRlbShQYXJzZVN0YXRlICpwc3Rh dGUsIE5vZGUgKm4sCiAJCXJ0ci0+cnRpbmRleCA9IG5zaXRlbS0+cF9ydGluZGV4OwogCQlyZXR1 cm4gKE5vZGUgKikgcnRyOwogCX0KLQllbHNlIGlmIChJc0EobiwgUmFuZ2VUYWJsZUZ1bmMpKQor CWVsc2UgaWYgKElzQShuLCBSYW5nZVRhYmxlRnVuYykgfHwgSXNBKG4sIEpzb25UYWJsZSkpCiAJ ewogCQkvKiB0YWJsZSBmdW5jdGlvbiBpcyBsaWtlIGEgcGxhaW4gcmVsYXRpb24gKi8KIAkJUmFu Z2VUYmxSZWYgKnJ0cjsKIAkJUGFyc2VOYW1lc3BhY2VJdGVtICpuc2l0ZW07CiAKLQkJbnNpdGVt ID0gdHJhbnNmb3JtUmFuZ2VUYWJsZUZ1bmMocHN0YXRlLCAoUmFuZ2VUYWJsZUZ1bmMgKikgbik7 CisJCWlmIChJc0EobiwgUmFuZ2VUYWJsZUZ1bmMpKQorCQkJbnNpdGVtID0gdHJhbnNmb3JtUmFu Z2VUYWJsZUZ1bmMocHN0YXRlLCAoUmFuZ2VUYWJsZUZ1bmMgKikgbik7CisJCWVsc2UKKwkJCW5z aXRlbSA9IHRyYW5zZm9ybUpzb25UYWJsZShwc3RhdGUsIChKc29uVGFibGUgKikgbik7CisKIAkJ KnRvcF9uc2l0ZW0gPSBuc2l0ZW07CiAJCSpuYW1lc3BhY2UgPSBsaXN0X21ha2UxKG5zaXRlbSk7 CiAJCXJ0ciA9IG1ha2VOb2RlKFJhbmdlVGJsUmVmKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3BhcnNlci9wYXJzZV9leHByLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCmlu ZGV4IDUzNDI2ZmFjNTMuLjY1NTdiMDdmMDQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNl ci9wYXJzZV9leHByLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYwpAQCAt NDIxOSw3ICs0MjE5LDggQEAgdHJhbnNmb3JtSnNvblNlcmlhbGl6ZUV4cHIoUGFyc2VTdGF0ZSAq cHN0YXRlLCBKc29uU2VyaWFsaXplRXhwciAqZXhwcikKIH0KIAogLyoKLSAqIFRyYW5zZm9ybSBK U09OX1ZBTFVFLCBKU09OX1FVRVJZLCBKU09OX0VYSVNUUyBmdW5jdGlvbnMgaW50byBhIEpzb25F eHByIG5vZGUuCisgKiBUcmFuc2Zvcm0gSlNPTl9WQUxVRSwgSlNPTl9RVUVSWSwgSlNPTl9FWElT VFMsIEpTT05fVEFCTEUgZnVuY3Rpb25zIGludG8KKyAqIGEgSnNvbkV4cHIgbm9kZS4KICAqLwog c3RhdGljIE5vZGUgKgogdHJhbnNmb3JtSnNvbkZ1bmNFeHByKFBhcnNlU3RhdGUgKnBzdGF0ZSwg SnNvbkZ1bmNFeHByICpmdW5jKQpAQCAtNDIzOCw2ICs0MjM5LDkgQEAgdHJhbnNmb3JtSnNvbkZ1 bmNFeHByKFBhcnNlU3RhdGUgKnBzdGF0ZSwgSnNvbkZ1bmNFeHByICpmdW5jKQogCQljYXNlIEpT T05fVkFMVUVfT1A6CiAJCQlmdW5jX25hbWUgPSAiSlNPTl9WQUxVRSI7CiAJCQlicmVhazsKKwkJ Y2FzZSBKU09OX1RBQkxFX09QOgorCQkJZnVuY19uYW1lID0gIkpTT05fVEFCTEUiOworCQkJYnJl YWs7CiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAiaW52YWxpZCBKc29uRnVuY0V4cHIgb3Ai KTsKIAkJCWJyZWFrOwpAQCAtNDI4Miw2ICs0Mjg2LDQyIEBAIHRyYW5zZm9ybUpzb25GdW5jRXhw cihQYXJzZVN0YXRlICpwc3RhdGUsIEpzb25GdW5jRXhwciAqZnVuYykKIAkJCQlqc2V4cHItPnJl dHVybmluZy0+dHlwbW9kID0gLTE7CiAJCQl9CiAKKwkJCS8qIEpTT05fVEFCTEUoKSBDT0xVTU5T IGNhbiBzcGVjaWZ5IGEgbm9uLWJvb2xlYW4gdHlwZS4gKi8KKwkJCWlmIChqc2V4cHItPnJldHVy bmluZy0+dHlwaWQgIT0gQk9PTE9JRCkKKwkJCXsKKwkJCQlOb2RlCSAgICpjb2VyY2lvbl9leHBy OworCQkJCUNhc2VUZXN0RXhwciAqcGxhY2Vob2xkZXIgPSBtYWtlTm9kZShDYXNlVGVzdEV4cHIp OworCQkJCWludAkJCWxvY2F0aW9uID0gZXhwckxvY2F0aW9uKChOb2RlICopIGpzZXhwcik7CisK KwkJCQkvKgorCQkJCSAqIFdlIGFidXNlIENhc2VUZXN0RXhwciBoZXJlIGFzIHBsYWNlaG9sZGVy IHRvIHBhc3MgdGhlCisJCQkJICogcmVzdWx0IG9mIGV2YWx1YXRpbmcgSlNPTl9FWElTVFMgdG8g dGhlIGNvZXJjaW9uCisJCQkJICogZXhwcmVzc2lvbi4KKwkJCQkgKi8KKwkJCQlwbGFjZWhvbGRl ci0+dHlwZUlkID0gQk9PTE9JRDsKKwkJCQlwbGFjZWhvbGRlci0+dHlwZU1vZCA9IC0xOworCQkJ CXBsYWNlaG9sZGVyLT5jb2xsYXRpb24gPSBJbnZhbGlkT2lkOworCisJCQkJY29lcmNpb25fZXhw ciA9CisJCQkJCWNvZXJjZV90b190YXJnZXRfdHlwZShwc3RhdGUsIChOb2RlICopIHBsYWNlaG9s ZGVyLCBCT09MT0lELAorCQkJCQkJCQkJCSAganNleHByLT5yZXR1cm5pbmctPnR5cGlkLAorCQkJ CQkJCQkJCSAganNleHByLT5yZXR1cm5pbmctPnR5cG1vZCwKKwkJCQkJCQkJCQkgIENPRVJDSU9O X0VYUExJQ0lULAorCQkJCQkJCQkJCSAgQ09FUkNFX0lNUExJQ0lUX0NBU1QsCisJCQkJCQkJCQkJ ICBsb2NhdGlvbik7CisKKwkJCQlpZiAoY29lcmNpb25fZXhwciA9PSBOVUxMKQorCQkJCQllcmVw b3J0KEVSUk9SLAorCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfQ0FOTk9UX0NPRVJDRSksCisJCQkJ CQkJIGVycm1zZygiY2Fubm90IGNhc3QgdHlwZSAlcyB0byAlcyIsCisJCQkJCQkJCQlmb3JtYXRf dHlwZV9iZShCT09MT0lEKSwKKwkJCQkJCQkJCWZvcm1hdF90eXBlX2JlKGpzZXhwci0+cmV0dXJu aW5nLT50eXBpZCkpLAorCQkJCQkJCSBwYXJzZXJfY29lcmNpb25fZXJycG9zaXRpb24ocHN0YXRl LCBsb2NhdGlvbiwgKE5vZGUgKikganNleHByKSkpOworCisJCQkJaWYgKGNvZXJjaW9uX2V4cHIg IT0gKE5vZGUgKikgcGxhY2Vob2xkZXIpCisJCQkJCWpzZXhwci0+cmVzdWx0X2NvZXJjaW9uID0g Y29lcmNpb25fZXhwcjsKKwkJCX0KKwogCQkJanNleHByLT5vbl9lcnJvciA9IHRyYW5zZm9ybUpz b25CZWhhdmlvcihwc3RhdGUsIGZ1bmMtPm9uX2Vycm9yLAogCQkJCQkJCQkJCQkJCSBKU09OX0JF SEFWSU9SX0ZBTFNFLAogCQkJCQkJCQkJCQkJCSBqc2V4cHItPnJldHVybmluZyk7CkBAIC00MzU2 LDYgKzQzOTYsMTcgQEAgdHJhbnNmb3JtSnNvbkZ1bmNFeHByKFBhcnNlU3RhdGUgKnBzdGF0ZSwg SnNvbkZ1bmNFeHByICpmdW5jKQogCQkJCQkJCQkJCQkJCSBqc2V4cHItPnJldHVybmluZyk7CiAJ CQlicmVhazsKIAorCQljYXNlIEpTT05fVEFCTEVfT1A6CisJCQlpZiAoIU9pZElzVmFsaWQoanNl eHByLT5yZXR1cm5pbmctPnR5cGlkKSkKKwkJCXsKKwkJCQlqc2V4cHItPnJldHVybmluZy0+dHlw aWQgPSBleHByVHlwZShqc2V4cHItPmZvcm1hdHRlZF9leHByKTsKKwkJCQlqc2V4cHItPnJldHVy bmluZy0+dHlwbW9kID0gLTE7CisJCQl9CisJCQlqc2V4cHItPm9uX2Vycm9yID0gdHJhbnNmb3Jt SnNvbkJlaGF2aW9yKHBzdGF0ZSwgZnVuYy0+b25fZXJyb3IsCisJCQkJCQkJCQkJCQkJIEpTT05f QkVIQVZJT1JfRU1QVFksCisJCQkJCQkJCQkJCQkJIGpzZXhwci0+cmV0dXJuaW5nKTsKKwkJCWJy ZWFrOworCiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAiaW52YWxpZCBKc29uRnVuY0V4cHIg b3AiKTsKIAkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2pz b250YWJsZS5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2pzb250YWJsZS5jCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmE0YjQxZmI5ZTAKLS0tIC9kZXYvbnVsbAor KysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfanNvbnRhYmxlLmMKQEAgLTAsMCArMSw3MTgg QEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIHBhcnNlX2pzb250YWJsZS5jCisgKgkgIHBh cnNpbmcgb2YgSlNPTl9UQUJMRQorICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0y MDI0LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICogUG9ydGlvbnMgQ29w eXJpZ2h0IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEK KyAqCisgKgorICogSURFTlRJRklDQVRJT04KKyAqCSAgc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNl X2pzb250YWJsZS5jCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKworI2luY2x1ZGUgInBv c3RncmVzLmgiCisKKyNpbmNsdWRlICJjYXRhbG9nL3BnX2NvbGxhdGlvbi5oIgorI2luY2x1ZGUg ImNhdGFsb2cvcGdfdHlwZS5oIgorI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUgIm5v ZGVzL21ha2VmdW5jcy5oIgorI2luY2x1ZGUgIm5vZGVzL25vZGVGdW5jcy5oIgorI2luY2x1ZGUg Im9wdGltaXplci9vcHRpbWl6ZXIuaCIKKyNpbmNsdWRlICJwYXJzZXIvcGFyc2VfY2xhdXNlLmgi CisjaW5jbHVkZSAicGFyc2VyL3BhcnNlX2NvbGxhdGUuaCIKKyNpbmNsdWRlICJwYXJzZXIvcGFy c2VfZXhwci5oIgorI2luY2x1ZGUgInBhcnNlci9wYXJzZV9yZWxhdGlvbi5oIgorI2luY2x1ZGUg InBhcnNlci9wYXJzZV90eXBlLmgiCisjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKKyNpbmNs dWRlICJ1dGlscy9qc29uLmgiCisjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCisKKy8qIENv bnRleHQgZm9yIEpTT05fVEFCTEUgdHJhbnNmb3JtYXRpb24gKi8KK3R5cGVkZWYgc3RydWN0IEpz b25UYWJsZVBhcnNlQ29udGV4dAoreworCVBhcnNlU3RhdGUgKnBzdGF0ZTsJCQkvKiBwYXJzaW5n IHN0YXRlICovCisJSnNvblRhYmxlICAqdGFibGU7CQkJLyogdW50cmFuc2Zvcm1lZCBub2RlICov CisJVGFibGVGdW5jICAqdGFibGVmdW5jOwkJLyogdHJhbnNmb3JtZWQgbm9kZQkqLworCUxpc3QJ ICAgKnBhdGhOYW1lczsJCS8qIGxpc3Qgb2YgYWxsIHBhdGggYW5kIGNvbHVtbnMgbmFtZXMgKi8K KwlpbnQJCQlwYXRoTmFtZUlkOwkJLyogcGF0aCBuYW1lIGlkIGNvdW50ZXIgKi8KKwlPaWQJCQlj b250ZXh0SXRlbVR5cGlkOwkvKiB0eXBlIG9pZCBvZiBjb250ZXh0IGl0ZW0gKGpzb24vanNvbmIp ICovCit9CQkJSnNvblRhYmxlUGFyc2VDb250ZXh0OworCitzdGF0aWMgSnNvblRhYmxlUGxhbiAq dHJhbnNmb3JtSnNvblRhYmxlQ29sdW1ucyhKc29uVGFibGVQYXJzZUNvbnRleHQgKiBjeHQsCisJ CQkJCQkJCQkJCQlKc29uVGFibGVQbGFuU3BlYyAqcGxhbnNwZWMsCisJCQkJCQkJCQkJCQlMaXN0 ICpjb2x1bW5zLAorCQkJCQkJCQkJCQkJSnNvblRhYmxlUGF0aFNwZWMgKnBhdGhzcGVjKTsKKwor LyoKKyAqIFRyYW5zZm9ybSBKU09OX1RBQkxFIGNvbHVtbgorICogICAtIHJlZ3VsYXIgY29sdW1u IGludG8gSlNPTl9WQUxVRSgpCisgKiAgIC0gRk9STUFUIEpTT04gY29sdW1uIGludG8gSlNPTl9R VUVSWSgpCisgKiAgIC0gRVhJU1RTIGNvbHVtbiBpbnRvIEpTT05fRVhJU1RTKCkKKyAqLworc3Rh dGljIE5vZGUgKgordHJhbnNmb3JtSnNvblRhYmxlQ29sdW1uKEpzb25UYWJsZUNvbHVtbiAqanRj LCBOb2RlICpjb250ZXh0SXRlbUV4cHIsCisJCQkJCQkgTGlzdCAqcGFzc2luZ0FyZ3MsIGJvb2wg ZXJyb3JPbkVycm9yKQoreworCUpzb25GdW5jRXhwciAqamZleHByID0gbWFrZU5vZGUoSnNvbkZ1 bmNFeHByKTsKKwlOb2RlCSAgICpwYXRoc3BlYzsKKwlKc29uRm9ybWF0ICpkZWZhdWx0X2Zvcm1h dDsKKworCWlmIChqdGMtPmNvbHR5cGUgPT0gSlRDX1JFR1VMQVIpCisJCWpmZXhwci0+b3AgPSBK U09OX1ZBTFVFX09QOworCWVsc2UgaWYgKGp0Yy0+Y29sdHlwZSA9PSBKVENfRVhJU1RTKQorCQlq ZmV4cHItPm9wID0gSlNPTl9FWElTVFNfT1A7CisJZWxzZQorCQlqZmV4cHItPm9wID0gSlNPTl9R VUVSWV9PUDsKKwlqZmV4cHItPm91dHB1dCA9IG1ha2VOb2RlKEpzb25PdXRwdXQpOworCWpmZXhw ci0+b25fZW1wdHkgPSBqdGMtPm9uX2VtcHR5OworCWpmZXhwci0+b25fZXJyb3IgPSBqdGMtPm9u X2Vycm9yOworCWlmIChqZmV4cHItPm9uX2Vycm9yID09IE5VTEwgJiYgZXJyb3JPbkVycm9yKQor CQlqZmV4cHItPm9uX2Vycm9yID0gbWFrZUpzb25CZWhhdmlvcihKU09OX0JFSEFWSU9SX0VSUk9S LCBOVUxMLAorCQkJCQkJCQkJCQlOVUxMLCAtMSk7CisJamZleHByLT5xdW90ZXMgPSBqdGMtPnF1 b3RlczsKKwlqZmV4cHItPndyYXBwZXIgPSBqdGMtPndyYXBwZXI7CisJamZleHByLT5sb2NhdGlv biA9IGp0Yy0+bG9jYXRpb247CisKKwlqZmV4cHItPm91dHB1dC0+dHlwZU5hbWUgPSBqdGMtPnR5 cGVOYW1lOworCWpmZXhwci0+b3V0cHV0LT5yZXR1cm5pbmcgPSBtYWtlTm9kZShKc29uUmV0dXJu aW5nKTsKKwlqZmV4cHItPm91dHB1dC0+cmV0dXJuaW5nLT5mb3JtYXQgPSBqdGMtPmZvcm1hdDsK KworCWRlZmF1bHRfZm9ybWF0ID0gbWFrZUpzb25Gb3JtYXQoSlNfRk9STUFUX0RFRkFVTFQsIEpT X0VOQ19ERUZBVUxULCAtMSk7CisKKwlpZiAoanRjLT5wYXRoc3BlYykKKwkJcGF0aHNwZWMgPSAo Tm9kZSAqKSBqdGMtPnBhdGhzcGVjLT5zdHJpbmc7CisJZWxzZQorCXsKKwkJLyogQ29uc3RydWN0 IGRlZmF1bHQgcGF0aCBhcyAnJC4iY29sdW1uX25hbWUiJyAqLworCQlTdHJpbmdJbmZvRGF0YSBw YXRoOworCisJCWluaXRTdHJpbmdJbmZvKCZwYXRoKTsKKworCQlhcHBlbmRTdHJpbmdJbmZvU3Ry aW5nKCZwYXRoLCAiJC4iKTsKKwkJZXNjYXBlX2pzb24oJnBhdGgsIGp0Yy0+bmFtZSk7CisKKwkJ cGF0aHNwZWMgPSBtYWtlU3RyaW5nQ29uc3QocGF0aC5kYXRhLCAtMSk7CisJfQorCisJamZleHBy LT5jb250ZXh0X2l0ZW0gPQltYWtlSnNvblZhbHVlRXhwcigoRXhwciAqKSBjb250ZXh0SXRlbUV4 cHIsIE5VTEwsCisJCQkJCQkJCQkJCSAgZGVmYXVsdF9mb3JtYXQpOworCWpmZXhwci0+cGF0aHNw ZWMgPSBwYXRoc3BlYzsKKwlqZmV4cHItPnBhdGhuYW1lID0gTlVMTDsKKwlqZmV4cHItPnBhc3Np bmcgPSBwYXNzaW5nQXJnczsKKworCXJldHVybiAoTm9kZSAqKSBqZmV4cHI7Cit9CisKKy8qCisg KiBSZWdpc3RlciBhIGNvbHVtbi9wYXRoIG5hbWUgaW4gdGhlIHBhdGggbmFtZSBsaXN0LCBmbGFn Z2luZyBpZiB0aGUgbmFtZSBpcworICogYWxyZWFkeSB0YWtlbiBieSBhbm90aGVyIGNvbHVtbi9w YXRoLgorICovCitzdGF0aWMgdm9pZAorcmVnaXN0ZXJKc29uVGFibGVDb2x1bW4oSnNvblRhYmxl UGFyc2VDb250ZXh0ICogY3h0LCBjaGFyICpjb2xuYW1lLAorCQkJCQkJaW50IGxvY2F0aW9uKQor eworCUxpc3RDZWxsICAgKmxjOworCisJZm9yZWFjaChsYywgY3h0LT5wYXRoTmFtZXMpCisJewor CQlpZiAoc3RyY21wKGNvbG5hbWUsIChjb25zdCBjaGFyICopIGxmaXJzdChsYykpID09IDApCisJ CQllcmVwb3J0KEVSUk9SLAorCQkJCQllcnJjb2RlKEVSUkNPREVfRFVQTElDQVRFX0FMSUFTKSwK KwkJCQkJZXJybXNnKCJkdXBsaWNhdGUgSlNPTl9UQUJMRSBjb2x1bW4gbmFtZTogJXMiLCBjb2xu YW1lKSwKKwkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKGN4dC0+cHN0YXRlLCBsb2NhdGlvbikpOwor CX0KKworCWN4dC0+cGF0aE5hbWVzID0gbGFwcGVuZChjeHQtPnBhdGhOYW1lcywgY29sbmFtZSk7 Cit9CisKK3N0YXRpYyB2b2lkCityZWdpc3Rlckpzb25UYWJsZVBhdGgoSnNvblRhYmxlUGFyc2VD b250ZXh0ICogY3h0LCBjaGFyICpwYXRobmFtZSwKKwkJCQkJICBpbnQgbG9jYXRpb24pCit7CisJ TGlzdENlbGwgICAqbGM7CisKKwlmb3JlYWNoKGxjLCBjeHQtPnBhdGhOYW1lcykKKwl7CisJCWlm IChzdHJjbXAocGF0aG5hbWUsIChjb25zdCBjaGFyICopIGxmaXJzdChsYykpID09IDApCisJCQll cmVwb3J0KEVSUk9SLAorCQkJCQllcnJjb2RlKEVSUkNPREVfRFVQTElDQVRFX0FMSUFTKSwKKwkJ CQkJZXJybXNnKCJkdXBsaWNhdGUgSlNPTl9UQUJMRSBwYXRoIG5hbWU6ICVzIiwgcGF0aG5hbWUp LAorCQkJCQlwYXJzZXJfZXJycG9zaXRpb24oY3h0LT5wc3RhdGUsIGxvY2F0aW9uKSk7CisJfQor CisJY3h0LT5wYXRoTmFtZXMgPSBsYXBwZW5kKGN4dC0+cGF0aE5hbWVzLCBwYXRobmFtZSk7Cit9 CisKKy8qCisgKiBSZWN1cnNpdmVseSByZWdpc3RlciBhbGwgbmVzdGVkIGNvbHVtbiBuYW1lcyBp biB0aGUgc2hhcmVkIGNvbHVtbnMvcGF0aCBuYW1lCisgKiBsaXN0LgorICovCitzdGF0aWMgdm9p ZAorcmVnaXN0ZXJBbGxKc29uVGFibGVDb2x1bW5zQW5kUGF0aHMoSnNvblRhYmxlUGFyc2VDb250 ZXh0ICogY3h0LAorCQkJCQkJCQkJTGlzdCAqY29sdW1ucykKK3sKKwlMaXN0Q2VsbCAgICpsYzsK KworCWZvcmVhY2gobGMsIGNvbHVtbnMpCisJeworCQlKc29uVGFibGVDb2x1bW4gKmp0YyA9IGNh c3ROb2RlKEpzb25UYWJsZUNvbHVtbiwgbGZpcnN0KGxjKSk7CisKKwkJaWYgKGp0Yy0+Y29sdHlw ZSA9PSBKVENfTkVTVEVEKQorCQl7CisJCQlpZiAoanRjLT5wYXRoc3BlYy0+bmFtZSkKKwkJCQly ZWdpc3Rlckpzb25UYWJsZVBhdGgoY3h0LCBqdGMtPnBhdGhzcGVjLT5uYW1lLAorCQkJCQkJCQkJ ICBqdGMtPnBhdGhzcGVjLT5uYW1lX2xvY2F0aW9uKTsKKworCQkJcmVnaXN0ZXJBbGxKc29uVGFi bGVDb2x1bW5zQW5kUGF0aHMoY3h0LCBqdGMtPmNvbHVtbnMpOworCQl9CisJCWVsc2UKKwkJewor CQkJcmVnaXN0ZXJKc29uVGFibGVDb2x1bW4oY3h0LCBqdGMtPm5hbWUsIGp0Yy0+bG9jYXRpb24p OworCQl9CisJfQorfQorCisvKiBHZW5lcmF0ZSBhIG5ldyB1bmlxdWUgSlNPTl9UQUJMRSBwYXRo IG5hbWUuICovCitzdGF0aWMgY2hhciAqCitnZW5lcmF0ZUpzb25UYWJsZVBhdGhOYW1lKEpzb25U YWJsZVBhcnNlQ29udGV4dCAqIGN4dCkKK3sKKwljaGFyCQluYW1lYnVmWzMyXTsKKwljaGFyCSAg ICpuYW1lID0gbmFtZWJ1ZjsKKworCXNucHJpbnRmKG5hbWVidWYsIHNpemVvZihuYW1lYnVmKSwg Impzb25fdGFibGVfcGF0aF8lZCIsCisJCQkgY3h0LT5wYXRoTmFtZUlkKyspOworCisJbmFtZSA9 IHBzdHJkdXAobmFtZSk7CisJY3h0LT5wYXRoTmFtZXMgPSBsYXBwZW5kKGN4dC0+cGF0aE5hbWVz LCBuYW1lKTsKKworCXJldHVybiBuYW1lOworfQorCisvKiBDb2xsZWN0IHNpYmxpbmcgcGF0aCBu YW1lcyBmcm9tIHBsYW4gdG8gdGhlIHNwZWNpZmllZCBsaXN0LiAqLworc3RhdGljIHZvaWQKK2Nv bGxlY3RTaWJsaW5nUGF0aHNJbkpzb25UYWJsZVBsYW4oSnNvblRhYmxlUGxhblNwZWMgKnBsYW4s IExpc3QgKipwYXRocykKK3sKKwlpZiAocGxhbi0+cGxhbl90eXBlID09IEpTVFBfU0lNUExFKQor CQkqcGF0aHMgPSBsYXBwZW5kKCpwYXRocywgcGxhbi0+cGF0aG5hbWUpOworCWVsc2UgaWYgKHBs YW4tPnBsYW5fdHlwZSA9PSBKU1RQX0pPSU5FRCkKKwl7CisJCWlmIChwbGFuLT5qb2luX3R5cGUg PT0gSlNUUF9KT0lOX0lOTkVSIHx8CisJCQlwbGFuLT5qb2luX3R5cGUgPT0gSlNUUF9KT0lOX09V VEVSKQorCQl7CisJCQlBc3NlcnQocGxhbi0+cGxhbjEtPnBsYW5fdHlwZSA9PSBKU1RQX1NJTVBM RSk7CisJCQkqcGF0aHMgPSBsYXBwZW5kKCpwYXRocywgcGxhbi0+cGxhbjEtPnBhdGhuYW1lKTsK KwkJfQorCQllbHNlIGlmIChwbGFuLT5qb2luX3R5cGUgPT0gSlNUUF9KT0lOX0NST1NTIHx8CisJ CQkJIHBsYW4tPmpvaW5fdHlwZSA9PSBKU1RQX0pPSU5fVU5JT04pCisJCXsKKwkJCWNvbGxlY3RT aWJsaW5nUGF0aHNJbkpzb25UYWJsZVBsYW4ocGxhbi0+cGxhbjEsIHBhdGhzKTsKKwkJCWNvbGxl Y3RTaWJsaW5nUGF0aHNJbkpzb25UYWJsZVBsYW4ocGxhbi0+cGxhbjIsIHBhdGhzKTsKKwkJfQor CQllbHNlCisJCQllbG9nKEVSUk9SLCAiaW52YWxpZCBKU09OX1RBQkxFIGpvaW4gdHlwZSAlZCIs CisJCQkJIHBsYW4tPmpvaW5fdHlwZSk7CisJfQorfQorCisvKgorICogVmFsaWRhdGUgY2hpbGQg SlNPTl9UQUJMRSBwbGFuIGJ5IGNoZWNraW5nIHRoYXQ6CisgKiAgLSBhbGwgbmVzdGVkIGNvbHVt bnMgaGF2ZSBwYXRoIG5hbWVzIHNwZWNpZmllZAorICogIC0gYWxsIG5lc3RlZCBjb2x1bW5zIGhh dmUgY29ycmVzcG9uZGluZyBub2RlIGluIHRoZSBzaWJsaW5nIHBsYW4KKyAqICAtIHBsYW4gZG9l cyBub3QgY29udGFpbiBkdXBsaWNhdGUgb3IgZXh0cmEgbm9kZXMKKyAqLworc3RhdGljIHZvaWQK K3ZhbGlkYXRlSnNvblRhYmxlQ2hpbGRQbGFuKFBhcnNlU3RhdGUgKnBzdGF0ZSwgSnNvblRhYmxl UGxhblNwZWMgKnBsYW4sCisJCQkJCQkgICBMaXN0ICpjb2x1bW5zKQoreworCUxpc3RDZWxsICAg KmxjMTsKKwlMaXN0CSAgICpzaWJsaW5ncyA9IE5JTDsKKwlpbnQJCQluY2hpbGRyZW4gPSAwOwor CisJaWYgKHBsYW4pCisJCWNvbGxlY3RTaWJsaW5nUGF0aHNJbkpzb25UYWJsZVBsYW4ocGxhbiwg JnNpYmxpbmdzKTsKKworCWZvcmVhY2gobGMxLCBjb2x1bW5zKQorCXsKKwkJSnNvblRhYmxlQ29s dW1uICpqdGMgPSBjYXN0Tm9kZShKc29uVGFibGVDb2x1bW4sIGxmaXJzdChsYzEpKTsKKworCQlp ZiAoanRjLT5jb2x0eXBlID09IEpUQ19ORVNURUQpCisJCXsKKwkJCUxpc3RDZWxsICAgKmxjMjsK KwkJCWJvb2wJCWZvdW5kID0gZmFsc2U7CisKKwkJCWlmIChqdGMtPnBhdGhzcGVjLT5uYW1lID09 IE5VTEwpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCWVycmNvZGUoRVJSQ09ERV9TWU5UQVhf RVJST1IpLAorCQkJCQkJZXJybXNnKCJuZXN0ZWQgSlNPTl9UQUJMRSBjb2x1bW5zIG11c3QgY29u dGFpbiIKKwkJCQkJCQkJIiBhbiBleHBsaWNpdCBBUyBwYXRobmFtZSBzcGVjaWZpY2F0aW9uIgor CQkJCQkJCQkiIGlmIGFuIGV4cGxpY2l0IFBMQU4gY2xhdXNlIGlzIHVzZWQiKSwKKwkJCQkJCXBh cnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGp0Yy0+bG9jYXRpb24pKTsKKworCQkJLyogZmluZCBu ZXN0ZWQgcGF0aCBuYW1lIGluIHRoZSBsaXN0IG9mIHNpYmxpbmcgcGF0aCBuYW1lcyAqLworCQkJ Zm9yZWFjaChsYzIsIHNpYmxpbmdzKQorCQkJeworCQkJCWlmICgoZm91bmQgPSAhc3RyY21wKGp0 Yy0+cGF0aHNwZWMtPm5hbWUsIGxmaXJzdChsYzIpKSkpCisJCQkJCWJyZWFrOworCQkJfQorCisJ CQlpZiAoIWZvdW5kKQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQllcnJjb2RlKEVSUkNPREVf U1lOVEFYX0VSUk9SKSwKKwkJCQkJCWVycm1zZygiaW52YWxpZCBKU09OX1RBQkxFIHNwZWNpZmlj YXRpb24iKSwKKwkJCQkJCWVycmRldGFpbCgiUExBTiBjbGF1c2UgZm9yIG5lc3RlZCBwYXRoICVz IHdhcyBub3QgZm91bmQuIiwKKwkJCQkJCQkJICBqdGMtPnBhdGhzcGVjLT5uYW1lKSwKKwkJCQkJ CXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGp0Yy0+bG9jYXRpb24pKTsKKworCQkJbmNoaWxk cmVuKys7CisJCX0KKwl9CisKKwlpZiAobGlzdF9sZW5ndGgoc2libGluZ3MpID4gbmNoaWxkcmVu KQorCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAor CQkJCWVycm1zZygiaW52YWxpZCBKU09OX1RBQkxFIHBsYW4gY2xhdXNlIiksCisJCQkJZXJyZGV0 YWlsKCJQTEFOIGNsYXVzZSBjb250YWlucyBzb21lIGV4dHJhIG9yIGR1cGxpY2F0ZSBzaWJsaW5n IG5vZGVzLiIpLAorCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIHBsYW4gPyBwbGFuLT5s b2NhdGlvbiA6IC0xKSk7Cit9CisKK3N0YXRpYyBKc29uVGFibGVDb2x1bW4gKgorZmluZE5lc3Rl ZEpzb25UYWJsZUNvbHVtbihMaXN0ICpjb2x1bW5zLCBjb25zdCBjaGFyICpwYXRobmFtZSkKK3sK KwlMaXN0Q2VsbCAgICpsYzsKKworCWZvcmVhY2gobGMsIGNvbHVtbnMpCisJeworCQlKc29uVGFi bGVDb2x1bW4gKmp0YyA9IGNhc3ROb2RlKEpzb25UYWJsZUNvbHVtbiwgbGZpcnN0KGxjKSk7CisK KwkJaWYgKGp0Yy0+Y29sdHlwZSA9PSBKVENfTkVTVEVEICYmCisJCQlqdGMtPnBhdGhzcGVjLT5u YW1lICYmCisJCQkhc3RyY21wKGp0Yy0+cGF0aHNwZWMtPm5hbWUsIHBhdGhuYW1lKSkKKwkJCXJl dHVybiBqdGM7CisJfQorCisJcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBOb2RlICoKK3RyYW5z Zm9ybU5lc3RlZEpzb25UYWJsZUNvbHVtbihKc29uVGFibGVQYXJzZUNvbnRleHQgKiBjeHQsIEpz b25UYWJsZUNvbHVtbiAqanRjLAorCQkJCQkJCSAgIEpzb25UYWJsZVBsYW5TcGVjICpwbGFuc3Bl YykKK3sKKwlpZiAoanRjLT5wYXRoc3BlYy0+bmFtZSA9PSBOVUxMKQorCXsKKwkJaWYgKGN4dC0+ dGFibGUtPnBsYW5zcGVjICE9IE5VTEwpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29k ZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCSBlcnJtc2coImludmFsaWQgSlNPTl9UQUJM RSBleHByZXNzaW9uIiksCisJCQkJCSBlcnJkZXRhaWwoIkpTT05fVEFCTEUgcGF0aCBtdXN0IGNv bnRhaW4iCisJCQkJCQkJICAgIiBleHBsaWNpdCBBUyBwYXRobmFtZSBzcGVjaWZpY2F0aW9uIGlm IgorCQkJCQkJCSAgICIgZXhwbGljaXQgUExBTiBjbGF1c2UgaXMgdXNlZCIpLAorCQkJCQkgcGFy c2VyX2VycnBvc2l0aW9uKGN4dC0+cHN0YXRlLCBqdGMtPmxvY2F0aW9uKSkpOworCisJCWp0Yy0+ cGF0aHNwZWMtPm5hbWUgPSBnZW5lcmF0ZUpzb25UYWJsZVBhdGhOYW1lKGN4dCk7CisJfQorCisJ cmV0dXJuIChOb2RlICopIHRyYW5zZm9ybUpzb25UYWJsZUNvbHVtbnMoY3h0LCBwbGFuc3BlYywg anRjLT5jb2x1bW5zLAorCQkJCQkJCQkJCQkgIGp0Yy0+cGF0aHNwZWMpOworfQorCitzdGF0aWMg Tm9kZSAqCittYWtlSnNvblRhYmxlU2libGluZ0pvaW4oYm9vbCBjcm9zcywgTm9kZSAqbG5vZGUs IE5vZGUgKnJub2RlKQoreworCUpzb25UYWJsZVNpYmxpbmcgKmpvaW4gPSBtYWtlTm9kZShKc29u VGFibGVTaWJsaW5nKTsKKworCWpvaW4tPmxhcmcgPSBsbm9kZTsKKwlqb2luLT5yYXJnID0gcm5v ZGU7CisJam9pbi0+Y3Jvc3MgPSBjcm9zczsKKworCXJldHVybiAoTm9kZSAqKSBqb2luOworfQor CisvKgorICogUmVjdXJzaXZlbHkgdHJhbnNmb3JtIGNoaWxkIEpTT05fVEFCTEUgcGxhbi4KKyAq CisgKiBEZWZhdWx0IHBsYW4gaXMgdHJhbnNmb3JtZWQgaW50byBhIGNyb3NzL3VuaW9uIGpvaW4g b2YgaXRzIG5lc3RlZCBjb2x1bW5zLgorICogU2ltcGxlIGFuZCBvdXRlci9pbm5lciBwbGFucyBh cmUgdHJhbnNmb3JtZWQgaW50byBhIEpzb25UYWJsZVBsYW4gYnkKKyAqIGZpbmRpbmcgYW5kIHRy YW5zZm9ybWluZyBjb3JyZXNwb25kaW5nIG5lc3RlZCBjb2x1bW4uCisgKiBTaWJsaW5nIHBsYW5z IGFyZSByZWN1cnNpdmVseSB0cmFuc2Zvcm1lZCBpbnRvIGEgSnNvblRhYmxlU2libGluZy4KKyAq Lworc3RhdGljIE5vZGUgKgordHJhbnNmb3JtSnNvblRhYmxlQ2hpbGRQbGFuKEpzb25UYWJsZVBh cnNlQ29udGV4dCAqIGN4dCwKKwkJCQkJCQlKc29uVGFibGVQbGFuU3BlYyAqcGxhbiwKKwkJCQkJ CQlMaXN0ICpjb2x1bW5zKQoreworCUpzb25UYWJsZUNvbHVtbiAqanRjID0gTlVMTDsKKworCWlm ICghcGxhbiB8fCBwbGFuLT5wbGFuX3R5cGUgPT0gSlNUUF9ERUZBVUxUKQorCXsKKwkJLyogdW5z cGVjaWZpZWQgb3IgZGVmYXVsdCBwbGFuICovCisJCU5vZGUJICAgKnJlcyA9IE5VTEw7CisJCUxp c3RDZWxsICAgKmxjOworCQlib29sCQljcm9zcyA9IHBsYW4gJiYgKHBsYW4tPmpvaW5fdHlwZSAm IEpTVFBfSk9JTl9DUk9TUyk7CisKKwkJLyogdHJhbnNmb3JtIGFsbCBuZXN0ZWQgY29sdW1ucyBp bnRvIGNyb3NzL3VuaW9uIGpvaW4gKi8KKwkJZm9yZWFjaChsYywgY29sdW1ucykKKwkJeworCQkJ SnNvblRhYmxlQ29sdW1uICpjb2wgPSBjYXN0Tm9kZShKc29uVGFibGVDb2x1bW4sIGxmaXJzdChs YykpOworCQkJTm9kZQkgICAqbm9kZTsKKworCQkJaWYgKGNvbC0+Y29sdHlwZSAhPSBKVENfTkVT VEVEKQorCQkJCWNvbnRpbnVlOworCisJCQlub2RlID0gdHJhbnNmb3JtTmVzdGVkSnNvblRhYmxl Q29sdW1uKGN4dCwgY29sLCBwbGFuKTsKKworCQkJLyogam9pbiB0cmFuc2Zvcm1lZCBub2RlIHdp dGggcHJldmlvdXMgc2libGluZyBub2RlcyAqLworCQkJcmVzID0gcmVzID8gbWFrZUpzb25UYWJs ZVNpYmxpbmdKb2luKGNyb3NzLCByZXMsIG5vZGUpIDogbm9kZTsKKwkJfQorCisJCXJldHVybiBy ZXM7CisJfQorCWVsc2UgaWYgKHBsYW4tPnBsYW5fdHlwZSA9PSBKU1RQX1NJTVBMRSkKKwl7CisJ CWp0YyA9IGZpbmROZXN0ZWRKc29uVGFibGVDb2x1bW4oY29sdW1ucywgcGxhbi0+cGF0aG5hbWUp OworCX0KKwllbHNlIGlmIChwbGFuLT5wbGFuX3R5cGUgPT0gSlNUUF9KT0lORUQpCisJeworCQlp ZiAocGxhbi0+am9pbl90eXBlID09IEpTVFBfSk9JTl9JTk5FUiB8fAorCQkJcGxhbi0+am9pbl90 eXBlID09IEpTVFBfSk9JTl9PVVRFUikKKwkJeworCQkJQXNzZXJ0KHBsYW4tPnBsYW4xLT5wbGFu X3R5cGUgPT0gSlNUUF9TSU1QTEUpOworCQkJanRjID0gZmluZE5lc3RlZEpzb25UYWJsZUNvbHVt bihjb2x1bW5zLCBwbGFuLT5wbGFuMS0+cGF0aG5hbWUpOworCQl9CisJCWVsc2UKKwkJeworCQkJ Tm9kZQkgICAqbm9kZTEgPSB0cmFuc2Zvcm1Kc29uVGFibGVDaGlsZFBsYW4oY3h0LCBwbGFuLT5w bGFuMSwKKwkJCQkJCQkJCQkJCQkJCWNvbHVtbnMpOworCQkJTm9kZQkgICAqbm9kZTIgPSB0cmFu c2Zvcm1Kc29uVGFibGVDaGlsZFBsYW4oY3h0LCBwbGFuLT5wbGFuMiwKKwkJCQkJCQkJCQkJCQkJ CWNvbHVtbnMpOworCisJCQlyZXR1cm4gbWFrZUpzb25UYWJsZVNpYmxpbmdKb2luKHBsYW4tPmpv aW5fdHlwZSA9PSBKU1RQX0pPSU5fQ1JPU1MsCisJCQkJCQkJCQkJCW5vZGUxLCBub2RlMik7CisJ CX0KKwl9CisJZWxzZQorCQllbG9nKEVSUk9SLCAiaW52YWxpZCBKU09OX1RBQkxFIHBsYW4gdHlw ZSAlZCIsIHBsYW4tPnBsYW5fdHlwZSk7CisKKwlpZiAoIWp0YykKKwkJZXJlcG9ydChFUlJPUiwK KwkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJIGVycm1zZygiaW52YWxp ZCBKU09OX1RBQkxFIHBsYW4gY2xhdXNlIiksCisJCQkJIGVycmRldGFpbCgiUEFUSCBuYW1lIHdh cyAlcyBub3QgZm91bmQgaW4gbmVzdGVkIGNvbHVtbnMgbGlzdC4iLAorCQkJCQkJICAgcGxhbi0+ cGF0aG5hbWUpLAorCQkJCSBwYXJzZXJfZXJycG9zaXRpb24oY3h0LT5wc3RhdGUsIHBsYW4tPmxv Y2F0aW9uKSkpOworCisJcmV0dXJuIHRyYW5zZm9ybU5lc3RlZEpzb25UYWJsZUNvbHVtbihjeHQs IGp0YywgcGxhbik7Cit9CisKKy8qIENoZWNrIHdoZXRoZXIgdHlwZSBpcyBqc29uL2pzb25iLCBh cnJheSwgb3IgcmVjb3JkLiAqLworc3RhdGljIGJvb2wKK3R5cGVJc0NvbXBvc2l0ZShPaWQgdHlw aWQpCit7CisJY2hhcgkJdHlwdHlwZTsKKworCWlmICh0eXBpZCA9PSBKU09OT0lEIHx8CisJCXR5 cGlkID09IEpTT05CT0lEIHx8CisJCXR5cGlkID09IFJFQ09SRE9JRCB8fAorCQl0eXBlX2lzX2Fy cmF5KHR5cGlkKSkKKwkJcmV0dXJuIHRydWU7CisKKwl0eXB0eXBlID0gZ2V0X3R5cHR5cGUodHlw aWQpOworCisJaWYgKHR5cHR5cGUgPT0gVFlQVFlQRV9DT01QT1NJVEUpCisJCXJldHVybiB0cnVl OworCisJaWYgKHR5cHR5cGUgPT0gVFlQVFlQRV9ET01BSU4pCisJCXJldHVybiB0eXBlSXNDb21w b3NpdGUoZ2V0QmFzZVR5cGUodHlwaWQpKTsKKworCXJldHVybiBmYWxzZTsKK30KKworLyogQXBw ZW5kIHRyYW5zZm9ybWVkIG5vbi1uZXN0ZWQgSlNPTl9UQUJMRSBjb2x1bW5zIHRvIHRoZSBUYWJs ZUZ1bmMgbm9kZSAqLworc3RhdGljIHZvaWQKK2FwcGVuZEpzb25UYWJsZUNvbHVtbnMoSnNvblRh YmxlUGFyc2VDb250ZXh0ICogY3h0LCBMaXN0ICpjb2x1bW5zKQoreworCUxpc3RDZWxsICAgKmNv bDsKKwlQYXJzZVN0YXRlICpwc3RhdGUgPSBjeHQtPnBzdGF0ZTsKKwlKc29uVGFibGUgICpqdCA9 IGN4dC0+dGFibGU7CisJVGFibGVGdW5jICAqdGYgPSBjeHQtPnRhYmxlZnVuYzsKKwlib29sCQlv cmRpbmFsaXR5X2ZvdW5kID0gZmFsc2U7CisJSnNvbkJlaGF2aW9yICpvbl9lcnJvciA9IGp0LT5v bl9lcnJvcjsKKwlib29sCQllcnJvck9uRXJyb3IgPSBvbl9lcnJvciAmJgorCQlvbl9lcnJvci0+ YnR5cGUgPT0gSlNPTl9CRUhBVklPUl9FUlJPUjsKKworCWZvcmVhY2goY29sLCBjb2x1bW5zKQor CXsKKwkJSnNvblRhYmxlQ29sdW1uICpyYXdjID0gY2FzdE5vZGUoSnNvblRhYmxlQ29sdW1uLCBs Zmlyc3QoY29sKSk7CisJCU9pZAkJCXR5cGlkOworCQlpbnQzMgkJdHlwbW9kOworCQlOb2RlCSAg ICpjb2xleHByOworCisJCWlmIChyYXdjLT5uYW1lKQorCQkJdGYtPmNvbG5hbWVzID0gbGFwcGVu ZCh0Zi0+Y29sbmFtZXMsCisJCQkJCQkJCSAgIG1ha2VTdHJpbmcocHN0cmR1cChyYXdjLT5uYW1l KSkpOworCisJCS8qCisJCSAqIERldGVybWluZSB0aGUgdHlwZSBhbmQgdHlwbW9kIGZvciB0aGUg bmV3IGNvbHVtbi4gRk9SIE9SRElOQUxJVFkKKwkJICogY29sdW1ucyBhcmUgSU5URUdFUiBieSBz dGFuZGFyZDsgdGhlIG90aGVycyBhcmUgdXNlci1zcGVjaWZpZWQuCisJCSAqLworCQlzd2l0Y2gg KHJhd2MtPmNvbHR5cGUpCisJCXsKKwkJCWNhc2UgSlRDX0ZPUl9PUkRJTkFMSVRZOgorCQkJCWlm IChvcmRpbmFsaXR5X2ZvdW5kKQorCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCShlcnJjb2Rl KEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCQkgZXJybXNnKCJjYW5ub3QgdXNlIG1vcmUg dGhhbiBvbmUgRk9SIE9SRElOQUxJVFkgY29sdW1uIiksCisJCQkJCQkJIHBhcnNlcl9lcnJwb3Np dGlvbihwc3RhdGUsIHJhd2MtPmxvY2F0aW9uKSkpOworCQkJCW9yZGluYWxpdHlfZm91bmQgPSB0 cnVlOworCQkJCWNvbGV4cHIgPSBOVUxMOworCQkJCXR5cGlkID0gSU5UNE9JRDsKKwkJCQl0eXBt b2QgPSAtMTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBKVENfUkVHVUxBUjoKKwkJCQl0eXBlbmFt ZVR5cGVJZEFuZE1vZChwc3RhdGUsIHJhd2MtPnR5cGVOYW1lLCAmdHlwaWQsICZ0eXBtb2QpOwor CisJCQkJLyoKKwkJCQkgKiBVc2UgaW1wbGljaXQgRk9STUFUIEpTT04gZm9yIGNvbXBvc2l0ZSB0 eXBlcyAoYXJyYXlzIGFuZAorCQkJCSAqIHJlY29yZHMpIG9yIGlmIGEgbm9uLWRlZmF1bHQgV1JB UFBFUiAvIFFVT1RFUyBiZWhhdmlvcgorCQkJCSAqIGlzIHNwZWNpZmllZC4KKwkJCQkgKi8KKwkJ CQlpZiAodHlwZUlzQ29tcG9zaXRlKHR5cGlkKSB8fAorCQkJCQlyYXdjLT5xdW90ZXMgIT0gSlNf UVVPVEVTX1VOU1BFQyB8fAorCQkJCQlyYXdjLT53cmFwcGVyICE9IEpTV19VTlNQRUMpCisJCQkJ CXJhd2MtPmNvbHR5cGUgPSBKVENfRk9STUFUVEVEOworCisJCQkJLyogRkFMTFRIUk9VR0ggKi8K KwkJCWNhc2UgSlRDX0ZPUk1BVFRFRDoKKwkJCWNhc2UgSlRDX0VYSVNUUzoKKwkJCQl7CisJCQkJ CU5vZGUJICAgKmplOworCQkJCQlDYXNlVGVzdEV4cHIgKnBhcmFtID0gbWFrZU5vZGUoQ2FzZVRl c3RFeHByKTsKKworCQkJCQlwYXJhbS0+Y29sbGF0aW9uID0gSW52YWxpZE9pZDsKKwkJCQkJcGFy YW0tPnR5cGVJZCA9IGN4dC0+Y29udGV4dEl0ZW1UeXBpZDsKKwkJCQkJcGFyYW0tPnR5cGVNb2Qg PSAtMTsKKworCQkJCQlqZSA9IHRyYW5zZm9ybUpzb25UYWJsZUNvbHVtbihyYXdjLCAoTm9kZSAq KSBwYXJhbSwKKwkJCQkJCQkJCQkJCSAgTklMLCBlcnJvck9uRXJyb3IpOworCisJCQkJCWNvbGV4 cHIgPSB0cmFuc2Zvcm1FeHByKHBzdGF0ZSwgamUsIEVYUFJfS0lORF9GUk9NX0ZVTkNUSU9OKTsK KwkJCQkJYXNzaWduX2V4cHJfY29sbGF0aW9ucyhwc3RhdGUsIGNvbGV4cHIpOworCisJCQkJCXR5 cGlkID0gZXhwclR5cGUoY29sZXhwcik7CisJCQkJCXR5cG1vZCA9IGV4cHJUeXBtb2QoY29sZXhw cik7CisJCQkJCWJyZWFrOworCQkJCX0KKworCQkJY2FzZSBKVENfTkVTVEVEOgorCQkJCWNvbnRp bnVlOworCisJCQlkZWZhdWx0OgorCQkJCWVsb2coRVJST1IsICJ1bmtub3duIEpTT05fVEFCTEUg Y29sdW1uIHR5cGU6ICVkIiwgcmF3Yy0+Y29sdHlwZSk7CisJCQkJYnJlYWs7CisJCX0KKworCQl0 Zi0+Y29sdHlwZXMgPSBsYXBwZW5kX29pZCh0Zi0+Y29sdHlwZXMsIHR5cGlkKTsKKwkJdGYtPmNv bHR5cG1vZHMgPSBsYXBwZW5kX2ludCh0Zi0+Y29sdHlwbW9kcywgdHlwbW9kKTsKKwkJdGYtPmNv bGNvbGxhdGlvbnMgPSBsYXBwZW5kX29pZCh0Zi0+Y29sY29sbGF0aW9ucywgZ2V0X3R5cGNvbGxh dGlvbih0eXBpZCkpOworCQl0Zi0+Y29sdmFsZXhwcnMgPSBsYXBwZW5kKHRmLT5jb2x2YWxleHBy cywgY29sZXhwcik7CisJfQorfQorCisvKgorICogQ3JlYXRlIHRyYW5zZm9ybWVkIEpTT05fVEFC TEUgcGFyZW50IHBsYW4gbm9kZSBieSBhcHBlbmRpbmcgYWxsIG5vbi1uZXN0ZWQKKyAqIGNvbHVt bnMgdG8gdGhlIFRhYmxlRnVuYyBub2RlIGFuZCByZW1lbWJlcmluZyB0aGVpciBpbmRpY2VzIGlu IHRoZQorICogY29sdmFsZXhwcnMgbGlzdC4KKyAqLworc3RhdGljIEpzb25UYWJsZVBsYW4gKgor bWFrZVBhcmVudEpzb25UYWJsZVBsYW4oSnNvblRhYmxlUGFyc2VDb250ZXh0ICogY3h0LCBKc29u VGFibGVQYXRoU3BlYyAqcGF0aHNwZWMsCisJCQkJCQlMaXN0ICpjb2x1bW5zKQoreworCUpzb25U YWJsZVBsYW4gKnBsYW4gPSBtYWtlTm9kZShKc29uVGFibGVQbGFuKTsKKwlKc29uQmVoYXZpb3Ig Km9uX2Vycm9yID0gY3h0LT50YWJsZS0+b25fZXJyb3I7CisJY2hhcgkJICpwYXRoc3RyaW5nOwor CUNvbnN0CQkgKnZhbHVlOworCisJQXNzZXJ0KElzQShwYXRoc3BlYy0+c3RyaW5nLCBBX0NvbnN0 KSk7CisJcGF0aHN0cmluZyA9IGNhc3ROb2RlKEFfQ29uc3QsIHBhdGhzcGVjLT5zdHJpbmcpLT52 YWwuc3ZhbC5zdmFsOworCXZhbHVlID0gbWFrZUNvbnN0KEpTT05QQVRIT0lELCAtMSwgSW52YWxp ZE9pZCwgLTEsCisJCQkJCSAgRGlyZWN0RnVuY3Rpb25DYWxsMShqc29ucGF0aF9pbiwKKwkJCQkJ CQkJCQkgIENTdHJpbmdHZXREYXR1bShwYXRoc3RyaW5nKSksCisJCQkJCSAgZmFsc2UsIGZhbHNl KTsKKwlwbGFuLT5wYXRoID0gbWFrZUpzb25UYWJsZVBhdGgodmFsdWUsIHBhdGhzcGVjLT5uYW1l KTsKKworCS8qIHNhdmUgc3RhcnQgb2YgY29sdW1uIHJhbmdlICovCisJcGxhbi0+Y29sTWluID0g bGlzdF9sZW5ndGgoY3h0LT50YWJsZWZ1bmMtPmNvbHZhbGV4cHJzKTsKKworCWFwcGVuZEpzb25U YWJsZUNvbHVtbnMoY3h0LCBjb2x1bW5zKTsKKworCS8qIHNhdmUgZW5kIG9mIGNvbHVtbiByYW5n ZSAqLworCXBsYW4tPmNvbE1heCA9IGxpc3RfbGVuZ3RoKGN4dC0+dGFibGVmdW5jLT5jb2x2YWxl eHBycykgLSAxOworCisJcGxhbi0+ZXJyb3JPbkVycm9yID0gb25fZXJyb3IgJiYgb25fZXJyb3It PmJ0eXBlID09IEpTT05fQkVIQVZJT1JfRVJST1I7CisKKwlyZXR1cm4gcGxhbjsKK30KKworc3Rh dGljIEpzb25UYWJsZVBsYW4gKgordHJhbnNmb3JtSnNvblRhYmxlQ29sdW1ucyhKc29uVGFibGVQ YXJzZUNvbnRleHQgKiBjeHQsCisJCQkJCQkgIEpzb25UYWJsZVBsYW5TcGVjICpwbGFuc3BlYywK KwkJCQkJCSAgTGlzdCAqY29sdW1ucywKKwkJCQkJCSAgSnNvblRhYmxlUGF0aFNwZWMgKnBhdGhz cGVjKQoreworCUpzb25UYWJsZVBsYW4gKnBsYW47CisJSnNvblRhYmxlUGxhblNwZWMgKmNoaWxk UGxhblNwZWM7CisJYm9vbAkJZGVmYXVsdFBsYW4gPSBwbGFuc3BlYyA9PSBOVUxMIHx8CisJCXBs YW5zcGVjLT5wbGFuX3R5cGUgPT0gSlNUUF9ERUZBVUxUOworCisJaWYgKGRlZmF1bHRQbGFuKQor CQljaGlsZFBsYW5TcGVjID0gcGxhbnNwZWM7CisJZWxzZQorCXsKKwkJLyogdmFsaWRhdGUgcGFy ZW50IGFuZCBjaGlsZCBwbGFucyAqLworCQlKc29uVGFibGVQbGFuU3BlYyAqcGFyZW50UGxhblNw ZWM7CisKKwkJaWYgKHBsYW5zcGVjLT5wbGFuX3R5cGUgPT0gSlNUUF9KT0lORUQpCisJCXsKKwkJ CWlmIChwbGFuc3BlYy0+am9pbl90eXBlICE9IEpTVFBfSk9JTl9JTk5FUiAmJgorCQkJCXBsYW5z cGVjLT5qb2luX3R5cGUgIT0gSlNUUF9KT0lOX09VVEVSKQorCQkJCWVyZXBvcnQoRVJST1IsCisJ CQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCQkgZXJybXNnKCJpbnZh bGlkIEpTT05fVEFCTEUgcGxhbiBjbGF1c2UiKSwKKwkJCQkJCSBlcnJkZXRhaWwoIkV4cGVjdGVk IElOTkVSIG9yIE9VVEVSLiIpLAorCQkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihjeHQtPnBzdGF0 ZSwgcGxhbnNwZWMtPmxvY2F0aW9uKSkpOworCisJCQlwYXJlbnRQbGFuU3BlYyA9IHBsYW5zcGVj LT5wbGFuMTsKKwkJCWNoaWxkUGxhblNwZWMgPSBwbGFuc3BlYy0+cGxhbjI7CisKKwkJCUFzc2Vy dChwYXJlbnRQbGFuU3BlYy0+cGxhbl90eXBlICE9IEpTVFBfSk9JTkVEKTsKKwkJCUFzc2VydChw YXJlbnRQbGFuU3BlYy0+cGF0aG5hbWUpOworCQl9CisJCWVsc2UKKwkJeworCQkJcGFyZW50UGxh blNwZWMgPSBwbGFuc3BlYzsKKwkJCWNoaWxkUGxhblNwZWMgPSBOVUxMOworCQl9CisKKwkJaWYg KHN0cmNtcChwYXJlbnRQbGFuU3BlYy0+cGF0aG5hbWUsIHBhdGhzcGVjLT5uYW1lKSAhPSAwKQor CQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAor CQkJCQkgZXJybXNnKCJpbnZhbGlkIEpTT05fVEFCTEUgcGxhbiIpLAorCQkJCQkgZXJyZGV0YWls KCJQQVRIIG5hbWUgbWlzbWF0Y2g6IGV4cGVjdGVkICVzIGJ1dCAlcyBpcyBnaXZlbi4iLAorCQkJ CQkJCSAgIHBhdGhzcGVjLT5uYW1lLCBwYXJlbnRQbGFuU3BlYy0+cGF0aG5hbWUpLAorCQkJCQkg cGFyc2VyX2VycnBvc2l0aW9uKGN4dC0+cHN0YXRlLCBwbGFuc3BlYy0+bG9jYXRpb24pKSk7CisK KwkJdmFsaWRhdGVKc29uVGFibGVDaGlsZFBsYW4oY3h0LT5wc3RhdGUsIGNoaWxkUGxhblNwZWMs IGNvbHVtbnMpOworCX0KKworCS8qIHRyYW5zZm9ybSBvbmx5IG5vbi1uZXN0ZWQgY29sdW1ucyAq LworCXBsYW4gPSBtYWtlUGFyZW50SnNvblRhYmxlUGxhbihjeHQsIHBhdGhzcGVjLCBjb2x1bW5z KTsKKworCWlmIChjaGlsZFBsYW5TcGVjIHx8IGRlZmF1bHRQbGFuKQorCXsKKwkJLyogdHJhbnNm b3JtIHJlY3Vyc2l2ZWx5IG5lc3RlZCBjb2x1bW5zICovCisJCXBsYW4tPmNoaWxkID0gdHJhbnNm b3JtSnNvblRhYmxlQ2hpbGRQbGFuKGN4dCwgY2hpbGRQbGFuU3BlYywgY29sdW1ucyk7CisJCWlm IChwbGFuLT5jaGlsZCkKKwkJCXBsYW4tPm91dGVySm9pbiA9IHBsYW5zcGVjID09IE5VTEwgfHwK KwkJCQkocGxhbnNwZWMtPmpvaW5fdHlwZSAmIEpTVFBfSk9JTl9PVVRFUik7CisJCS8qIGVsc2U6 IGRlZmF1bHQgcGxhbiBjYXNlLCBubyBjaGlsZHJlbiBmb3VuZCAqLworCX0KKworCXJldHVybiBw bGFuOworfQorCisvKgorICogdHJhbnNmb3JtSnNvblRhYmxlIC0KKyAqCQkJVHJhbnNmb3JtIGEg cmF3IEpzb25UYWJsZSBpbnRvIFRhYmxlRnVuYy4KKyAqCisgKiBUcmFuc2Zvcm0gdGhlIGRvY3Vt ZW50LWdlbmVyYXRpbmcgZXhwcmVzc2lvbiwgdGhlIHJvdy1nZW5lcmF0aW5nIGV4cHJlc3Npb24s CisgKiB0aGUgY29sdW1uLWdlbmVyYXRpbmcgZXhwcmVzc2lvbnMsIGFuZCB0aGUgZGVmYXVsdCB2 YWx1ZSBleHByZXNzaW9ucy4KKyAqLworUGFyc2VOYW1lc3BhY2VJdGVtICoKK3RyYW5zZm9ybUpz b25UYWJsZShQYXJzZVN0YXRlICpwc3RhdGUsIEpzb25UYWJsZSAqanQpCit7CisJSnNvblRhYmxl UGFyc2VDb250ZXh0IGN4dDsKKwlUYWJsZUZ1bmMgICp0ZiA9IG1ha2VOb2RlKFRhYmxlRnVuYyk7 CisJSnNvbkZ1bmNFeHByICpqZmUgPSBtYWtlTm9kZShKc29uRnVuY0V4cHIpOworCUpzb25FeHBy ICAgKmplOworCUpzb25UYWJsZVBsYW5TcGVjICpwbGFuID0ganQtPnBsYW5zcGVjOworCUpzb25U YWJsZVBhdGhTcGVjICpyb290UGF0aFNwZWMgPSBqdC0+cGF0aHNwZWM7CisJYm9vbAkJaXNfbGF0 ZXJhbDsKKworCUFzc2VydChJc0Eocm9vdFBhdGhTcGVjLT5zdHJpbmcsIEFfQ29uc3QpICYmCisJ CSAgIGNhc3ROb2RlKEFfQ29uc3QsIHJvb3RQYXRoU3BlYy0+c3RyaW5nKS0+dmFsLm5vZGUudHlw ZSA9PSBUX1N0cmluZyk7CisKKwljeHQucHN0YXRlID0gcHN0YXRlOworCWN4dC50YWJsZSA9IGp0 OworCWN4dC50YWJsZWZ1bmMgPSB0ZjsKKwljeHQucGF0aE5hbWVzID0gTklMOworCWN4dC5wYXRo TmFtZUlkID0gMDsKKworCWlmIChyb290UGF0aFNwZWMtPm5hbWUpCisJCXJlZ2lzdGVySnNvblRh YmxlUGF0aCgmY3h0LCByb290UGF0aFNwZWMtPm5hbWUsCisJCQkJCQkJICByb290UGF0aFNwZWMt Pm5hbWVfbG9jYXRpb24pOworCWVsc2UKKwl7CisJCWlmIChqdC0+cGxhbnNwZWMgIT0gTlVMTCkK KwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwK KwkJCQkJIGVycm1zZygiaW52YWxpZCBKU09OX1RBQkxFIGV4cHJlc3Npb24iKSwKKwkJCQkJIGVy cmRldGFpbCgiSlNPTl9UQUJMRSBwYXRoIG11c3QgY29udGFpbiIKKwkJCQkJCQkgICAiIGV4cGxp Y2l0IEFTIHBhdGhuYW1lIHNwZWNpZmljYXRpb24gaWYiCisJCQkJCQkJICAgIiBleHBsaWNpdCBQ TEFOIGNsYXVzZSBpcyB1c2VkIiksCisJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBy b290UGF0aFNwZWMtPmxvY2F0aW9uKSkpOworCisJCXJvb3RQYXRoU3BlYy0+bmFtZSA9IGdlbmVy YXRlSnNvblRhYmxlUGF0aE5hbWUoJmN4dCk7CisJfQorCisJcmVnaXN0ZXJBbGxKc29uVGFibGVD b2x1bW5zQW5kUGF0aHMoJmN4dCwganQtPmNvbHVtbnMpOworCisJamZlLT5vcCA9IEpTT05fVEFC TEVfT1A7CisJamZlLT5jb250ZXh0X2l0ZW0gPQlqdC0+Y29udGV4dF9pdGVtOworCWpmZS0+cGF0 aHNwZWMgPSAoTm9kZSAqKSByb290UGF0aFNwZWMtPnN0cmluZzsKKwlqZmUtPnBhdGhuYW1lID0g cm9vdFBhdGhTcGVjLT5uYW1lOworCWpmZS0+cGFzc2luZyA9IGp0LT5wYXNzaW5nOworCWpmZS0+ b25fZW1wdHkgPSBOVUxMOworCWpmZS0+b25fZXJyb3IgPSBqdC0+b25fZXJyb3I7CisJamZlLT5s b2NhdGlvbiA9IGp0LT5sb2NhdGlvbjsKKworCS8qCisJICogV2UgbWFrZSBsYXRlcmFsX29ubHkg bmFtZXMgb2YgdGhpcyBsZXZlbCB2aXNpYmxlLCB3aGV0aGVyIG9yIG5vdCB0aGUKKwkgKiBSYW5n ZVRhYmxlRnVuYyBpcyBleHBsaWNpdGx5IG1hcmtlZCBMQVRFUkFMLiAgVGhpcyBpcyBuZWVkZWQg Zm9yIFNRTAorCSAqIHNwZWMgY29tcGxpYW5jZSBhbmQgc2VlbXMgdXNlZnVsIG9uIGNvbnZlbmll bmNlIGdyb3VuZHMgZm9yIGFsbAorCSAqIGZ1bmN0aW9ucyBpbiBGUk9NLgorCSAqCisJICogKExB VEVSQUwgY2FuJ3QgbmVzdCB3aXRoaW4gYSBzaW5nbGUgcHN0YXRlIGxldmVsLCBzbyB3ZSBkb24n dCBuZWVkCisJICogc2F2ZS9yZXN0b3JlIGxvZ2ljIGhlcmUuKQorCSAqLworCUFzc2VydCghcHN0 YXRlLT5wX2xhdGVyYWxfYWN0aXZlKTsKKwlwc3RhdGUtPnBfbGF0ZXJhbF9hY3RpdmUgPSB0cnVl OworCisJdGYtPmZ1bmN0eXBlID0gVEZUX0pTT05fVEFCTEU7CisJdGYtPmRvY2V4cHIgPSB0cmFu c2Zvcm1FeHByKHBzdGF0ZSwgKE5vZGUgKikgamZlLCBFWFBSX0tJTkRfRlJPTV9GVU5DVElPTik7 CisKKwljeHQuY29udGV4dEl0ZW1UeXBpZCA9IGV4cHJUeXBlKHRmLT5kb2NleHByKTsKKworCXRm LT5wbGFuID0gKE5vZGUgKikgdHJhbnNmb3JtSnNvblRhYmxlQ29sdW1ucygmY3h0LCBwbGFuLCBq dC0+Y29sdW1ucywKKwkJCQkJCQkJCQkJCSAgcm9vdFBhdGhTcGVjKTsKKworCS8qIEFsc28gc2F2 ZSBhIGNvcHkgb2YgdGhlIFBBU1NJTkcgYXJndW1lbnRzIGluIHRoZSBUYWJsZUZ1bmMgbm9kZS4g Ki8KKwlqZSA9IChKc29uRXhwciAqKSB0Zi0+ZG9jZXhwcjsKKwl0Zi0+cGFzc2luZ3ZhbGV4cHJz ID0gY29weU9iamVjdChqZS0+cGFzc2luZ192YWx1ZXMpOworCisJdGYtPm9yZGluYWxpdHljb2wg PSAtMTsJCS8qIHVuZGVmaW5lIG9yZGluYWxpdHkgY29sdW1uIG51bWJlciAqLworCXRmLT5sb2Nh dGlvbiA9IGp0LT5sb2NhdGlvbjsKKworCXBzdGF0ZS0+cF9sYXRlcmFsX2FjdGl2ZSA9IGZhbHNl OworCisJLyoKKwkgKiBNYXJrIHRoZSBSVEUgYXMgTEFURVJBTCBpZiB0aGUgdXNlciBzYWlkIExB VEVSQUwgZXhwbGljaXRseSwgb3IgaWYKKwkgKiB0aGVyZSBhcmUgYW55IGxhdGVyYWwgY3Jvc3Mt cmVmZXJlbmNlcyBpbiBpdC4KKwkgKi8KKwlpc19sYXRlcmFsID0ganQtPmxhdGVyYWwgfHwgY29u dGFpbl92YXJzX29mX2xldmVsKChOb2RlICopIHRmLCAwKTsKKworCXJldHVybiBhZGRSYW5nZVRh YmxlRW50cnlGb3JUYWJsZUZ1bmMocHN0YXRlLAorCQkJCQkJCQkJCSAgdGYsIGp0LT5hbGlhcywg aXNfbGF0ZXJhbCwgdHJ1ZSk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFy c2VfcmVsYXRpb24uYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9yZWxhdGlvbi5jCmluZGV4 IDY1ZTU0YWJkZDEuLmMyZTNlNjVjYzYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9w YXJzZV9yZWxhdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9yZWxhdGlvbi5j CkBAIC0yMDc3LDEzICsyMDc3LDE1IEBAIGFkZFJhbmdlVGFibGVFbnRyeUZvclRhYmxlRnVuYyhQ YXJzZVN0YXRlICpwc3RhdGUsCiAJcnRlLT5yZWxpZCA9IEludmFsaWRPaWQ7CiAJcnRlLT5zdWJx dWVyeSA9IE5VTEw7CiAJcnRlLT50YWJsZWZ1bmMgPSB0ZjsKLQlydGUtPnRhYmxlZnVuY19uYW1l ID0gcHN0cmR1cCgiWE1MVEFCTEUiKTsKKwlydGUtPnRhYmxlZnVuY19uYW1lID0gcHN0cmR1cCh0 Zi0+ZnVuY3R5cGUgPT0gVEZUX1hNTFRBQkxFID8KKwkJCQkJCQkJICAiWE1MVEFCTEUiIDogIkpT T05fVEFCTEUiKTsKIAlydGUtPmNvbHR5cGVzID0gdGYtPmNvbHR5cGVzOwogCXJ0ZS0+Y29sdHlw bW9kcyA9IHRmLT5jb2x0eXBtb2RzOwogCXJ0ZS0+Y29sY29sbGF0aW9ucyA9IHRmLT5jb2xjb2xs YXRpb25zOwogCXJ0ZS0+YWxpYXMgPSBhbGlhczsKIAotCXJlZm5hbWUgPSBhbGlhcyA/IGFsaWFz LT5hbGlhc25hbWUgOiBwc3RyZHVwKCJ4bWx0YWJsZSIpOworCXJlZm5hbWUgPSBhbGlhcyA/IGFs aWFzLT5hbGlhc25hbWUgOgorCQlwc3RyZHVwKHRmLT5mdW5jdHlwZSA9PSBURlRfWE1MVEFCTEUg PyAieG1sdGFibGUiIDogImpzb25fdGFibGUiKTsKIAllcmVmID0gYWxpYXMgPyBjb3B5T2JqZWN0 KGFsaWFzKSA6IG1ha2VBbGlhcyhyZWZuYW1lLCBOSUwpOwogCW51bWFsaWFzZXMgPSBsaXN0X2xl bmd0aChlcmVmLT5jb2xuYW1lcyk7CiAKQEAgLTIwOTYsNyArMjA5OCw3IEBAIGFkZFJhbmdlVGFi bGVFbnRyeUZvclRhYmxlRnVuYyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJCWVyZXBvcnQoRVJST1Is CiAJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX0NPTFVNTl9SRUZFUkVOQ0UpLAogCQkJCSBl cnJtc2coIiVzIGZ1bmN0aW9uIGhhcyAlZCBjb2x1bW5zIGF2YWlsYWJsZSBidXQgJWQgY29sdW1u cyBzcGVjaWZpZWQiLAotCQkJCQkJIlhNTFRBQkxFIiwKKwkJCQkJCXRmLT5mdW5jdHlwZSA9PSBU RlRfWE1MVEFCTEUgPyAiWE1MVEFCTEUiIDogIkpTT05fVEFCTEUiLAogCQkJCQkJbGlzdF9sZW5n dGgodGYtPmNvbG5hbWVzKSwgbnVtYWxpYXNlcykpKTsKIAogCXJ0ZS0+ZXJlZiA9IGVyZWY7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdGFyZ2V0LmMgYi9zcmMvYmFja2Vu ZC9wYXJzZXIvcGFyc2VfdGFyZ2V0LmMKaW5kZXggNGMyZDU4NmU0ZC4uYmRkNDEyZWI1MSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3RhcmdldC5jCisrKyBiL3NyYy9iYWNr ZW5kL3BhcnNlci9wYXJzZV90YXJnZXQuYwpAQCAtMjAwMSw2ICsyMDAxLDkgQEAgRmlndXJlQ29s bmFtZUludGVybmFsKE5vZGUgKm5vZGUsIGNoYXIgKipuYW1lKQogCQkJCWNhc2UgSlNPTl9WQUxV RV9PUDoKIAkJCQkJKm5hbWUgPSAianNvbl92YWx1ZSI7CiAJCQkJCXJldHVybiAyOworCQkJCWNh c2UgSlNPTl9UQUJMRV9PUDoKKwkJCQkJKm5hbWUgPSAianNvbl90YWJsZSI7CisJCQkJCXJldHVy biAyOwogCQkJfQogCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC91dGlscy9hZHQvanNvbnBhdGhfZXhlYy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25w YXRoX2V4ZWMuYwppbmRleCAxZDJkMDI0NWU4Li40NGQ5N2QwMGY0IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC91dGlscy9hZHQvanNvbnBhdGhfZXhlYy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9qc29ucGF0aF9leGVjLmMKQEAgLTYxLDkgKzYxLDExIEBACiAKICNpbmNsdWRlICJjYXRh bG9nL3BnX2NvbGxhdGlvbi5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgorI2luY2x1 ZGUgImV4ZWN1dG9yL2V4ZWNFeHByLmgiCiAjaW5jbHVkZSAiZnVuY2FwaS5oIgogI2luY2x1ZGUg Im1pc2NhZG1pbi5oIgogI2luY2x1ZGUgIm5vZGVzL21pc2Nub2Rlcy5oIgorI2luY2x1ZGUgIm5v ZGVzL25vZGVGdW5jcy5oIgogI2luY2x1ZGUgInJlZ2V4L3JlZ2V4LmgiCiAjaW5jbHVkZSAidXRp bHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9kYXRlLmgiCkBAIC03MSw2ICs3Myw4IEBA CiAjaW5jbHVkZSAidXRpbHMvZmxvYXQuaCIKICNpbmNsdWRlICJ1dGlscy9mb3JtYXR0aW5nLmgi CiAjaW5jbHVkZSAidXRpbHMvanNvbnBhdGguaCIKKyNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUu aCIKKyNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgogI2luY2x1ZGUgInV0aWxzL3RpbWVzdGFt cC5oIgogCiAvKgpAQCAtMTU0LDYgKzE1OCw2MCBAQCB0eXBlZGVmIHN0cnVjdCBKc29uVmFsdWVM aXN0SXRlcmF0b3IKIAlMaXN0Q2VsbCAgICpuZXh0OwogfSBKc29uVmFsdWVMaXN0SXRlcmF0b3I7 CiAKKy8qIFN0cnVjdHVyZXMgZm9yIEpTT05fVEFCTEUgZXhlY3V0aW9uICAqLworCit0eXBlZGVm IGVudW0gSnNvblRhYmxlUGxhblN0YXRlVHlwZQoreworCUpTT05fVEFCTEVfU0NBTl9TVEFURSA9 IDAsCisJSlNPTl9UQUJMRV9KT0lOX1NUQVRFLAorfQkJCUpzb25UYWJsZVBsYW5TdGF0ZVR5cGU7 CisKK3R5cGVkZWYgc3RydWN0IEpzb25UYWJsZVBsYW5TdGF0ZQoreworCUpzb25UYWJsZVBsYW5T dGF0ZVR5cGUgdHlwZTsKKworCXN0cnVjdCBKc29uVGFibGVQbGFuU3RhdGUgKnBhcmVudDsKKwlz dHJ1Y3QgSnNvblRhYmxlUGxhblN0YXRlICpuZXN0ZWQ7Cit9CQkJSnNvblRhYmxlUGxhblN0YXRl OworCit0eXBlZGVmIHN0cnVjdCBKc29uVGFibGVTY2FuU3RhdGUKK3sKKwlKc29uVGFibGVQbGFu U3RhdGUgcGxhbjsKKworCU1lbW9yeUNvbnRleHQgbWN4dDsKKwlKc29uUGF0aCAgICpwYXRoOwor CUxpc3QJICAgKmFyZ3M7CisJSnNvblZhbHVlTGlzdCBmb3VuZDsKKwlKc29uVmFsdWVMaXN0SXRl cmF0b3IgaXRlcjsKKwlEYXR1bQkJY3VycmVudDsKKwlpbnQJCQlvcmRpbmFsOworCWJvb2wJCWN1 cnJlbnRJc051bGw7CisJYm9vbAkJb3V0ZXJKb2luOworCWJvb2wJCWVycm9yT25FcnJvcjsKKwli b29sCQlhZHZhbmNlTmVzdGVkOworCWJvb2wJCXJlc2V0OworfSBKc29uVGFibGVTY2FuU3RhdGU7 CisKK3R5cGVkZWYgc3RydWN0IEpzb25UYWJsZUpvaW5TdGF0ZQoreworCUpzb25UYWJsZVBsYW5T dGF0ZSBwbGFuOworCisJSnNvblRhYmxlUGxhblN0YXRlICpsZWZ0OworCUpzb25UYWJsZVBsYW5T dGF0ZSAqcmlnaHQ7CisJYm9vbAkJY3Jvc3M7CisJYm9vbAkJYWR2YW5jZVJpZ2h0OworfSBKc29u VGFibGVKb2luU3RhdGU7CisKKy8qIHJhbmRvbSBudW1iZXIgdG8gaWRlbnRpZnkgSnNvblRhYmxl RXhlY0NvbnRleHQgKi8KKyNkZWZpbmUgSlNPTl9UQUJMRV9FWEVDX0NPTlRFWFRfTUFHSUMJCTQx ODM1Mjg2NworCit0eXBlZGVmIHN0cnVjdCBKc29uVGFibGVFeGVjQ29udGV4dAoreworCWludAkJ CW1hZ2ljOworCUpzb25UYWJsZVNjYW5TdGF0ZSAqKmNvbGV4cHJzY2FuczsKKwlKc29uVGFibGVT Y2FuU3RhdGUgKnJvb3Q7Cit9CQkJSnNvblRhYmxlRXhlY0NvbnRleHQ7CisKIC8qIHN0cmljdC9s YXggZmxhZ3MgaXMgZGVjb21wb3NlZCBpbnRvIGZvdXIgW3VuXXdyYXAvZXJyb3IgZmxhZ3MgKi8K ICNkZWZpbmUganNwU3RyaWN0QWJzZW5jZU9mRXJyb3JzKGN4dCkJKCEoY3h0KS0+bGF4TW9kZSkK ICNkZWZpbmUganNwQXV0b1Vud3JhcChjeHQpCQkJCSgoY3h0KS0+bGF4TW9kZSkKQEAgLTI1Myw2 ICszMTEsNyBAQCBzdGF0aWMgSnNvblBhdGhFeGVjUmVzdWx0IGdldEFycmF5SW5kZXgoSnNvblBh dGhFeGVjQ29udGV4dCAqY3h0LAogCQkJCQkJCQkJCUpzb25QYXRoSXRlbSAqanNwLCBKc29uYlZh bHVlICpqYiwgaW50MzIgKmluZGV4KTsKIHN0YXRpYyBKc29uQmFzZU9iamVjdEluZm8gc2V0QmFz ZU9iamVjdChKc29uUGF0aEV4ZWNDb250ZXh0ICpjeHQsCiAJCQkJCQkJCQkJSnNvbmJWYWx1ZSAq amJ2LCBpbnQzMiBpZCk7CitzdGF0aWMgdm9pZCBKc29uVmFsdWVMaXN0Q2xlYXIoSnNvblZhbHVl TGlzdCAqanZsKTsKIHN0YXRpYyB2b2lkIEpzb25WYWx1ZUxpc3RBcHBlbmQoSnNvblZhbHVlTGlz dCAqanZsLCBKc29uYlZhbHVlICpqYnYpOwogc3RhdGljIGludAlKc29uVmFsdWVMaXN0TGVuZ3Ro KGNvbnN0IEpzb25WYWx1ZUxpc3QgKmp2bCk7CiBzdGF0aWMgYm9vbCBKc29uVmFsdWVMaXN0SXNF bXB0eShKc29uVmFsdWVMaXN0ICpqdmwpOwpAQCAtMjcyLDYgKzMzMSwzMiBAQCBzdGF0aWMgaW50 CWNvbXBhcmVEYXRldGltZShEYXR1bSB2YWwxLCBPaWQgdHlwaWQxLCBEYXR1bSB2YWwyLCBPaWQg dHlwaWQyLAogc3RhdGljIHZvaWQgY2hlY2tUaW1lem9uZUlzVXNlZEZvckNhc3QoYm9vbCB1c2VU eiwgY29uc3QgY2hhciAqdHlwZTEsCiAJCQkJCQkJCQkgICBjb25zdCBjaGFyICp0eXBlMik7CiAK Kworc3RhdGljIEpzb25UYWJsZVBsYW5TdGF0ZSAqIEpzb25UYWJsZUluaXRQbGFuU3RhdGUoSnNv blRhYmxlRXhlY0NvbnRleHQgKiBjeHQsCisJCQkJCQkJCQkJCQkgICBOb2RlICpwbGFuLAorCQkJ CQkJCQkJCQkJICAgSnNvblRhYmxlUGxhblN0YXRlICogcGFyZW50KTsKK3N0YXRpYyBib29sIEpz b25UYWJsZVBsYW5OZXh0Um93KEpzb25UYWJsZVBsYW5TdGF0ZSAqIHN0YXRlKTsKK3N0YXRpYyBi b29sIEpzb25UYWJsZVNjYW5OZXh0Um93KEpzb25UYWJsZVNjYW5TdGF0ZSAqc2Nhbik7CisKK3N0 YXRpYyB2b2lkIEpzb25UYWJsZUluaXRPcGFxdWUoVGFibGVGdW5jU2NhblN0YXRlICpzdGF0ZSwg aW50IG5hdHRzKTsKK3N0YXRpYyB2b2lkIEpzb25UYWJsZVNldERvY3VtZW50KFRhYmxlRnVuY1Nj YW5TdGF0ZSAqc3RhdGUsIERhdHVtIHZhbHVlKTsKK3N0YXRpYyBib29sIEpzb25UYWJsZUZldGNo Um93KFRhYmxlRnVuY1NjYW5TdGF0ZSAqc3RhdGUpOworc3RhdGljIERhdHVtIEpzb25UYWJsZUdl dFZhbHVlKFRhYmxlRnVuY1NjYW5TdGF0ZSAqc3RhdGUsIGludCBjb2xudW0sCisJCQkJICBPaWQg dHlwaWQsIGludDMyIHR5cG1vZCwgYm9vbCAqaXNudWxsKTsKK3N0YXRpYyB2b2lkIEpzb25UYWJs ZURlc3Ryb3lPcGFxdWUoVGFibGVGdW5jU2NhblN0YXRlICpzdGF0ZSk7CisKK2NvbnN0IFRhYmxl RnVuY1JvdXRpbmUgSnNvbmJUYWJsZVJvdXRpbmUgPQoreworCUpzb25UYWJsZUluaXRPcGFxdWUs CisJSnNvblRhYmxlU2V0RG9jdW1lbnQsCisJTlVMTCwKKwlOVUxMLAorCU5VTEwsCisJSnNvblRh YmxlRmV0Y2hSb3csCisJSnNvblRhYmxlR2V0VmFsdWUsCisJSnNvblRhYmxlRGVzdHJveU9wYXF1 ZQorfTsKKwogLyoqKioqKioqKioqKioqKioqKiBVc2VyIGludGVyZmFjZSB0byBKc29uUGF0aCBl eGVjdXRvciAqKioqKioqKioqKioqKioqKioqKi8KIAogLyoKQEAgLTMzODMsNiArMzQ2OCwxMyBA QCBzZXRCYXNlT2JqZWN0KEpzb25QYXRoRXhlY0NvbnRleHQgKmN4dCwgSnNvbmJWYWx1ZSAqamJ2 LCBpbnQzMiBpZCkKIAlyZXR1cm4gYmFzZU9iamVjdDsKIH0KIAorc3RhdGljIHZvaWQKK0pzb25W YWx1ZUxpc3RDbGVhcihKc29uVmFsdWVMaXN0ICpqdmwpCit7CisJanZsLT5zaW5nbGV0b24gPSBO VUxMOworCWp2bC0+bGlzdCA9IE5VTEw7Cit9CisKIHN0YXRpYyB2b2lkCiBKc29uVmFsdWVMaXN0 QXBwZW5kKEpzb25WYWx1ZUxpc3QgKmp2bCwgSnNvbmJWYWx1ZSAqamJ2KQogewpAQCAtMzkxOCwz ICs0MDEwLDQ1OCBAQCBKc29uUGF0aFZhbHVlKERhdHVtIGpiLCBKc29uUGF0aCAqanAsIGJvb2wg KmVtcHR5LCBib29sICplcnJvciwgTGlzdCAqdmFycykKIAogCXJldHVybiByZXM7CiB9CisKKy8q KioqKioqKioqKioqKioqKioqKioqKiogSlNPTl9UQUJMRSBmdW5jdGlvbnMgKioqKioqKioqKioq KioqKioqKioqKioqKioqLworCisvKgorICogUmV0dXJucyBwcml2YXRlIGRhdGEgZnJvbSBleGVj dXRvciBzdGF0ZS4gRW5zdXJlIHZhbGlkaXR5IGJ5IGNoZWNrIHdpdGgKKyAqIE1BR0lDIG51bWJl ci4KKyAqLworc3RhdGljIGlubGluZSBKc29uVGFibGVFeGVjQ29udGV4dCAqCitHZXRKc29uVGFi bGVFeGVjQ29udGV4dChUYWJsZUZ1bmNTY2FuU3RhdGUgKnN0YXRlLCBjb25zdCBjaGFyICpmbmFt ZSkKK3sKKwlKc29uVGFibGVFeGVjQ29udGV4dCAqcmVzdWx0OworCisJaWYgKCFJc0Eoc3RhdGUs IFRhYmxlRnVuY1NjYW5TdGF0ZSkpCisJCWVsb2coRVJST1IsICIlcyBjYWxsZWQgd2l0aCBpbnZh bGlkIFRhYmxlRnVuY1NjYW5TdGF0ZSIsIGZuYW1lKTsKKwlyZXN1bHQgPSAoSnNvblRhYmxlRXhl Y0NvbnRleHQgKikgc3RhdGUtPm9wYXF1ZTsKKwlpZiAocmVzdWx0LT5tYWdpYyAhPSBKU09OX1RB QkxFX0VYRUNfQ09OVEVYVF9NQUdJQykKKwkJZWxvZyhFUlJPUiwgIiVzIGNhbGxlZCB3aXRoIGlu dmFsaWQgVGFibGVGdW5jU2NhblN0YXRlIiwgZm5hbWUpOworCisJcmV0dXJuIHJlc3VsdDsKK30K KworLyogUmVjdXJzaXZlbHkgaW5pdGlhbGl6ZSBKU09OX1RBQkxFIHNjYW4gLyBqb2luIHN0YXRl ICovCitzdGF0aWMgSnNvblRhYmxlSm9pblN0YXRlICoKK0pzb25UYWJsZUluaXRKb2luU3RhdGUo SnNvblRhYmxlRXhlY0NvbnRleHQgKiBjeHQsIEpzb25UYWJsZVNpYmxpbmcgKnBsYW4sCisJCQkJ CSAgIEpzb25UYWJsZVBsYW5TdGF0ZSAqIHBhcmVudCkKK3sKKwlKc29uVGFibGVKb2luU3RhdGUg KmpvaW4gPSBwYWxsb2MwKHNpemVvZigqam9pbikpOworCisJam9pbi0+cGxhbi50eXBlID0gSlNP Tl9UQUJMRV9KT0lOX1NUQVRFOworCS8qIHBhcmVudCBhbmQgbmVzdGVkIG5vdCBzZXQuICovCisK Kwlqb2luLT5jcm9zcyA9IHBsYW4tPmNyb3NzOworCWpvaW4tPmxlZnQgPSBKc29uVGFibGVJbml0 UGxhblN0YXRlKGN4dCwgcGxhbi0+bGFyZywgcGFyZW50KTsKKwlqb2luLT5yaWdodCA9IEpzb25U YWJsZUluaXRQbGFuU3RhdGUoY3h0LCBwbGFuLT5yYXJnLCBwYXJlbnQpOworCisJcmV0dXJuIGpv aW47Cit9CisKK3N0YXRpYyBKc29uVGFibGVTY2FuU3RhdGUgKgorSnNvblRhYmxlSW5pdFNjYW5T dGF0ZShKc29uVGFibGVFeGVjQ29udGV4dCAqIGN4dCwKKwkJCQkJICAgSnNvblRhYmxlUGxhbiAq cGxhbiwKKwkJCQkJICAgSnNvblRhYmxlUGxhblN0YXRlICpwYXJlbnQsCisJCQkJCSAgIExpc3Qg KmFyZ3MsIE1lbW9yeUNvbnRleHQgbWN4dCkKK3sKKwlKc29uVGFibGVTY2FuU3RhdGUgKnNjYW4g PSBwYWxsb2MwKHNpemVvZigqc2NhbikpOworCWludAkJCWk7CisKKwlzY2FuLT5wbGFuLnR5cGUg PSBKU09OX1RBQkxFX1NDQU5fU1RBVEU7CisJc2Nhbi0+cGxhbi5wYXJlbnQgPSBwYXJlbnQ7CisK KwlzY2FuLT5vdXRlckpvaW4gPSBwbGFuLT5vdXRlckpvaW47CisJc2Nhbi0+ZXJyb3JPbkVycm9y ID0gcGxhbi0+ZXJyb3JPbkVycm9yOworCXNjYW4tPnBhdGggPSBEYXR1bUdldEpzb25QYXRoUChw bGFuLT5wYXRoLT52YWx1ZS0+Y29uc3R2YWx1ZSk7CisJc2Nhbi0+YXJncyA9IGFyZ3M7CisJc2Nh bi0+bWN4dCA9IEFsbG9jU2V0Q29udGV4dENyZWF0ZShtY3h0LCAiSnNvblRhYmxlRXhlY0NvbnRl eHQiLAorCQkJCQkJCQkJICAgQUxMT0NTRVRfREVGQVVMVF9TSVpFUyk7CisKKwkvKgorCSAqIFNl dCBhZnRlciBzZXR0aW5ncyBzY2FuLT5hcmdzIGFuZCBzY2FuLT5tY3h0LCBiZWNhdXNlIHRoZSBy ZWN1cnNpdmUKKwkgKiBjYWxsIHdhbnRzIHRvIHVzZSB0aG9zZSB2YWx1ZXMuCisJICovCisJc2Nh bi0+cGxhbi5uZXN0ZWQgPSBwbGFuLT5jaGlsZCA/CisJCUpzb25UYWJsZUluaXRQbGFuU3RhdGUo Y3h0LCBwbGFuLT5jaGlsZCwgKEpzb25UYWJsZVBsYW5TdGF0ZSAqKSBzY2FuKSA6CisJCU5VTEw7 CisKKwlzY2FuLT5jdXJyZW50ID0gUG9pbnRlckdldERhdHVtKE5VTEwpOworCXNjYW4tPmN1cnJl bnRJc051bGwgPSB0cnVlOworCisJZm9yIChpID0gcGxhbi0+Y29sTWluOyBpIDw9IHBsYW4tPmNv bE1heDsgaSsrKQorCQljeHQtPmNvbGV4cHJzY2Fuc1tpXSA9IHNjYW47CisKKwlyZXR1cm4gc2Nh bjsKK30KKworLyogUmVjdXJzaXZlbHkgaW5pdGlhbGl6ZSBKU09OX1RBQkxFIHNjYW4gc3RhdGUg Ki8KK3N0YXRpYyBKc29uVGFibGVQbGFuU3RhdGUgKgorSnNvblRhYmxlSW5pdFBsYW5TdGF0ZShK c29uVGFibGVFeGVjQ29udGV4dCAqIGN4dCwgTm9kZSAqcGxhbiwKKwkJCQkJICAgSnNvblRhYmxl UGxhblN0YXRlICogcGFyZW50KQoreworCUpzb25UYWJsZVBsYW5TdGF0ZSAqc3RhdGU7CisKKwlp ZiAoSXNBKHBsYW4sIEpzb25UYWJsZVNpYmxpbmcpKQorCXsKKwkJSnNvblRhYmxlU2libGluZyAq am9pbiA9IChKc29uVGFibGVTaWJsaW5nICopIHBsYW47CisKKwkJc3RhdGUgPSAoSnNvblRhYmxl UGxhblN0YXRlICopCisJCQlKc29uVGFibGVJbml0Sm9pblN0YXRlKGN4dCwgam9pbiwgcGFyZW50 KTsKKwl9CisJZWxzZQorCXsKKwkJSnNvblRhYmxlUGxhbiAqc2NhbiA9IGNhc3ROb2RlKEpzb25U YWJsZVBsYW4sIHBsYW4pOworCQlKc29uVGFibGVTY2FuU3RhdGUgKnBhcmVudF9zY2FuID0gKEpz b25UYWJsZVNjYW5TdGF0ZSAqKSBwYXJlbnQ7CisKKwkJQXNzZXJ0KHBhcmVudF9zY2FuKTsKKwkJ c3RhdGUgPSAoSnNvblRhYmxlUGxhblN0YXRlICopCisJCQlKc29uVGFibGVJbml0U2NhblN0YXRl KGN4dCwgc2NhbiwgcGFyZW50LCBwYXJlbnRfc2Nhbi0+YXJncywKKwkJCQkJCQkJICAgcGFyZW50 X3NjYW4tPm1jeHQpOworCX0KKworCXJldHVybiBzdGF0ZTsKK30KKworLyoKKyAqIEpzb25UYWJs ZUluaXRPcGFxdWUKKyAqCQlGaWxsIGluIFRhYmxlRnVuY1NjYW5TdGF0ZS0+b3BhcXVlIGZvciBK c29uVGFibGUgcHJvY2Vzc29yCisgKi8KK3N0YXRpYyB2b2lkCitKc29uVGFibGVJbml0T3BhcXVl KFRhYmxlRnVuY1NjYW5TdGF0ZSAqc3RhdGUsIGludCBuYXR0cykKK3sKKwlKc29uVGFibGVFeGVj Q29udGV4dCAqY3h0OworCVBsYW5TdGF0ZSAgKnBzID0gJnN0YXRlLT5zcy5wczsKKwlUYWJsZUZ1 bmNTY2FuICp0ZnMgPSBjYXN0Tm9kZShUYWJsZUZ1bmNTY2FuLCBwcy0+cGxhbik7CisJVGFibGVG dW5jICAqdGYgPSB0ZnMtPnRhYmxlZnVuYzsKKwlKc29uVGFibGVQbGFuICpyb290ID0gY2FzdE5v ZGUoSnNvblRhYmxlUGxhbiwgdGYtPnBsYW4pOworCUpzb25FeHByICAgKmplID0gY2FzdE5vZGUo SnNvbkV4cHIsIHRmLT5kb2NleHByKTsKKwlMaXN0CSAgICphcmdzID0gTklMOworCisJY3h0ID0g cGFsbG9jMChzaXplb2YoSnNvblRhYmxlRXhlY0NvbnRleHQpKTsKKwljeHQtPm1hZ2ljID0gSlNP Tl9UQUJMRV9FWEVDX0NPTlRFWFRfTUFHSUM7CisKKwlpZiAoc3RhdGUtPnBhc3Npbmd2YWxleHBy cykKKwl7CisJCUxpc3RDZWxsICAgKmV4cHJsYzsKKwkJTGlzdENlbGwgICAqbmFtZWxjOworCisJ CUFzc2VydChsaXN0X2xlbmd0aChzdGF0ZS0+cGFzc2luZ3ZhbGV4cHJzKSA9PQorCQkJICAgbGlz dF9sZW5ndGgoamUtPnBhc3NpbmdfbmFtZXMpKTsKKwkJZm9yYm90aChleHBybGMsIHN0YXRlLT5w YXNzaW5ndmFsZXhwcnMsCisJCQkJbmFtZWxjLCBqZS0+cGFzc2luZ19uYW1lcykKKwkJeworCQkJ RXhwclN0YXRlICAqc3RhdGUgPSBsZmlyc3Rfbm9kZShFeHByU3RhdGUsIGV4cHJsYyk7CisJCQlT dHJpbmcJICAgKm5hbWUgPSBsZmlyc3Rfbm9kZShTdHJpbmcsIG5hbWVsYyk7CisJCQlKc29uUGF0 aFZhcmlhYmxlICp2YXIgPSBwYWxsb2Moc2l6ZW9mKCp2YXIpKTsKKworCQkJdmFyLT5uYW1lID0g cHN0cmR1cChuYW1lLT5zdmFsKTsKKwkJCXZhci0+dHlwaWQgPSBleHByVHlwZSgoTm9kZSAqKSBz dGF0ZS0+ZXhwcik7CisJCQl2YXItPnR5cG1vZCA9IGV4cHJUeXBtb2QoKE5vZGUgKikgc3RhdGUt PmV4cHIpOworCisJCQkvKgorCQkJICogRXZhbHVhdGUgdGhlIGV4cHJlc3Npb24gYW5kIHNhdmUg dGhlIHZhbHVlIHRvIGJlIHJldHVybmVkIGJ5CisJCQkgKiBHZXRKc29uUGF0aFZhcigpLgorCQkJ ICovCisJCQl2YXItPnZhbHVlID0gRXhlY0V2YWxFeHByKHN0YXRlLCBwcy0+cHNfRXhwckNvbnRl eHQsCisJCQkJCQkJCQkgICZ2YXItPmlzbnVsbCk7CisKKwkJCWFyZ3MgPSBsYXBwZW5kKGFyZ3Ms IHZhcik7CisJCX0KKwl9CisKKwljeHQtPmNvbGV4cHJzY2FucyA9IHBhbGxvYyhzaXplb2YoSnNv blRhYmxlU2NhblN0YXRlICopICoKKwkJCQkJCQkgICBsaXN0X2xlbmd0aCh0Zi0+Y29sdmFsZXhw cnMpKTsKKworCWN4dC0+cm9vdCA9IEpzb25UYWJsZUluaXRTY2FuU3RhdGUoY3h0LCByb290LCBO VUxMLCBhcmdzLAorCQkJCQkJCQkJICAgQ3VycmVudE1lbW9yeUNvbnRleHQpOworCXN0YXRlLT5v cGFxdWUgPSBjeHQ7Cit9CisKKy8qIFJlc2V0IHNjYW4gaXRlcmF0b3IgdG8gdGhlIGJlZ2lubmlu ZyBvZiB0aGUgaXRlbSBsaXN0ICovCitzdGF0aWMgdm9pZAorSnNvblRhYmxlUmVzY2FuKEpzb25U YWJsZVNjYW5TdGF0ZSAqc2NhbikKK3sKKwlKc29uVmFsdWVMaXN0SW5pdEl0ZXJhdG9yKCZzY2Fu LT5mb3VuZCwgJnNjYW4tPml0ZXIpOworCXNjYW4tPmN1cnJlbnQgPSBQb2ludGVyR2V0RGF0dW0o TlVMTCk7CisJc2Nhbi0+Y3VycmVudElzTnVsbCA9IHRydWU7CisJc2Nhbi0+YWR2YW5jZU5lc3Rl ZCA9IGZhbHNlOworCXNjYW4tPm9yZGluYWwgPSAwOworfQorCisvKiBSZXNldCBjb250ZXh0IGl0 ZW0gb2YgYSBzY2FuLCBleGVjdXRlIEpTT04gcGF0aCBhbmQgcmVzZXQgYSBzY2FuICovCitzdGF0 aWMgdm9pZAorSnNvblRhYmxlUmVzZXRDb250ZXh0SXRlbShKc29uVGFibGVTY2FuU3RhdGUgKnNj YW4sIERhdHVtIGl0ZW0pCit7CisJTWVtb3J5Q29udGV4dCBvbGRjeHQ7CisJSnNvblBhdGhFeGVj UmVzdWx0IHJlczsKKwlKc29uYgkgICAqanMgPSAoSnNvbmIgKikgRGF0dW1HZXRKc29uYlAoaXRl bSk7CisKKwlKc29uVmFsdWVMaXN0Q2xlYXIoJnNjYW4tPmZvdW5kKTsKKworCU1lbW9yeUNvbnRl eHRSZXNldE9ubHkoc2Nhbi0+bWN4dCk7CisKKwlvbGRjeHQgPSBNZW1vcnlDb250ZXh0U3dpdGNo VG8oc2Nhbi0+bWN4dCk7CisKKwlyZXMgPSBleGVjdXRlSnNvblBhdGgoc2Nhbi0+cGF0aCwgc2Nh bi0+YXJncywKKwkJCQkJCSAgR2V0SnNvblBhdGhWYXIsIENvdW50SnNvblBhdGhWYXJzLAorCQkJ CQkJICBqcywgc2Nhbi0+ZXJyb3JPbkVycm9yLCAmc2Nhbi0+Zm91bmQsCisJCQkJCQkgIGZhbHNl IC8qIEZJWE1FICovICk7CisKKwlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3h0KTsKKworCWlm IChqcGVySXNFcnJvcihyZXMpKQorCXsKKwkJQXNzZXJ0KCFzY2FuLT5lcnJvck9uRXJyb3IpOwor CQlKc29uVmFsdWVMaXN0Q2xlYXIoJnNjYW4tPmZvdW5kKTsJLyogRU1QVFkgT04gRVJST1IgY2Fz ZSAqLworCX0KKworCUpzb25UYWJsZVJlc2NhbihzY2FuKTsKK30KKworLyoKKyAqIEpzb25UYWJs ZVNldERvY3VtZW50CisgKgkJSW5zdGFsbCB0aGUgaW5wdXQgZG9jdW1lbnQKKyAqLworc3RhdGlj IHZvaWQKK0pzb25UYWJsZVNldERvY3VtZW50KFRhYmxlRnVuY1NjYW5TdGF0ZSAqc3RhdGUsIERh dHVtIHZhbHVlKQoreworCUpzb25UYWJsZUV4ZWNDb250ZXh0ICpjeHQgPQorCQlHZXRKc29uVGFi bGVFeGVjQ29udGV4dChzdGF0ZSwgIkpzb25UYWJsZVNldERvY3VtZW50Iik7CisKKwlKc29uVGFi bGVSZXNldENvbnRleHRJdGVtKGN4dC0+cm9vdCwgdmFsdWUpOworfQorCisvKiBSZWN1cnNpdmVs eSByZXNldCBzY2FuIGFuZCBpdHMgY2hpbGQgbm9kZXMgKi8KK3N0YXRpYyB2b2lkCitKc29uVGFi bGVSZXNjYW5SZWN1cnNpdmUoSnNvblRhYmxlUGxhblN0YXRlICogc3RhdGUpCit7CisJaWYgKHN0 YXRlLT50eXBlID09IEpTT05fVEFCTEVfSk9JTl9TVEFURSkKKwl7CisJCUpzb25UYWJsZUpvaW5T dGF0ZSAqam9pbiA9IChKc29uVGFibGVKb2luU3RhdGUgKikgc3RhdGU7CisKKwkJSnNvblRhYmxl UmVzY2FuUmVjdXJzaXZlKGpvaW4tPmxlZnQpOworCQlKc29uVGFibGVSZXNjYW5SZWN1cnNpdmUo am9pbi0+cmlnaHQpOworCQlqb2luLT5hZHZhbmNlUmlnaHQgPSBmYWxzZTsKKwl9CisJZWxzZQor CXsKKwkJSnNvblRhYmxlU2NhblN0YXRlICpzY2FuID0gKEpzb25UYWJsZVNjYW5TdGF0ZSAqKSBz dGF0ZTsKKworCQlBc3NlcnQoc3RhdGUtPnR5cGUgPT0gSlNPTl9UQUJMRV9TQ0FOX1NUQVRFKTsK KwkJSnNvblRhYmxlUmVzY2FuKHNjYW4pOworCQlpZiAoc2Nhbi0+cGxhbi5uZXN0ZWQpCisJCQlK c29uVGFibGVSZXNjYW5SZWN1cnNpdmUoc2Nhbi0+cGxhbi5uZXN0ZWQpOworCX0KK30KKworLyoK KyAqIEZldGNoIG5leHQgcm93IGZyb20gYSBjcm9zcy91bmlvbiBqb2luZWQgc2Nhbi4KKyAqCisg KiBSZXR1cm5zIGZhbHNlIGF0IHRoZSBlbmQgb2YgYSBzY2FuLCB0cnVlIG90aGVyd2lzZS4KKyAq Lworc3RhdGljIGJvb2wKK0pzb25UYWJsZVBsYW5OZXh0Um93KEpzb25UYWJsZVBsYW5TdGF0ZSAq IHN0YXRlKQoreworCUpzb25UYWJsZUpvaW5TdGF0ZSAqam9pbjsKKworCWlmIChzdGF0ZS0+dHlw ZSA9PSBKU09OX1RBQkxFX1NDQU5fU1RBVEUpCisJCXJldHVybiBKc29uVGFibGVTY2FuTmV4dFJv dygoSnNvblRhYmxlU2NhblN0YXRlICopIHN0YXRlKTsKKworCWpvaW4gPSAoSnNvblRhYmxlSm9p blN0YXRlICopIHN0YXRlOworCWlmIChqb2luLT5hZHZhbmNlUmlnaHQpCisJeworCQkvKiBmZXRj aCBuZXh0IGlubmVyIHJvdyAqLworCQlpZiAoSnNvblRhYmxlUGxhbk5leHRSb3coam9pbi0+cmln aHQpKQorCQkJcmV0dXJuIHRydWU7CisKKwkJLyogaW5uZXIgcm93cyBhcmUgZXhoYXVzdGVkICov CisJCWlmIChqb2luLT5jcm9zcykKKwkJCWpvaW4tPmFkdmFuY2VSaWdodCA9IGZhbHNlOyAvKiBu ZXh0IG91dGVyIHJvdyAqLworCQllbHNlCisJCQlyZXR1cm4gZmFsc2U7CQkvKiBlbmQgb2Ygc2Nh biAqLworCX0KKworCXdoaWxlICgham9pbi0+YWR2YW5jZVJpZ2h0KQorCXsKKwkJLyogZmV0Y2gg bmV4dCBvdXRlciByb3cgKi8KKwkJYm9vbAkJbW9yZSA9IEpzb25UYWJsZVBsYW5OZXh0Um93KGpv aW4tPmxlZnQpOworCisJCWlmIChqb2luLT5jcm9zcykKKwkJeworCQkJaWYgKCFtb3JlKQorCQkJ CXJldHVybiBmYWxzZTsJLyogZW5kIG9mIHNjYW4gKi8KKworCQkJSnNvblRhYmxlUmVzY2FuUmVj dXJzaXZlKGpvaW4tPnJpZ2h0KTsKKworCQkJaWYgKCFKc29uVGFibGVQbGFuTmV4dFJvdyhqb2lu LT5yaWdodCkpCisJCQkJY29udGludWU7CQkvKiBuZXh0IG91dGVyIHJvdyAqLworCisJCQlqb2lu LT5hZHZhbmNlUmlnaHQgPSB0cnVlOwkvKiBuZXh0IGlubmVyIHJvdyAqLworCQl9CisJCWVsc2Ug aWYgKCFtb3JlKQorCQl7CisJCQlpZiAoIUpzb25UYWJsZVBsYW5OZXh0Um93KGpvaW4tPnJpZ2h0 KSkKKwkJCQlyZXR1cm4gZmFsc2U7CS8qIGVuZCBvZiBzY2FuICovCisKKwkJCWpvaW4tPmFkdmFu Y2VSaWdodCA9IHRydWU7CS8qIG5leHQgaW5uZXIgcm93ICovCisJCX0KKworCQlicmVhazsKKwl9 CisKKwlyZXR1cm4gdHJ1ZTsKK30KKworLyogUmVjdXJzaXZlbHkgc2V0ICdyZXNldCcgZmxhZyBv ZiBzY2FuIGFuZCBpdHMgY2hpbGQgbm9kZXMgKi8KK3N0YXRpYyB2b2lkCitKc29uVGFibGVQbGFu UmVzZXQoSnNvblRhYmxlUGxhblN0YXRlICogc3RhdGUpCit7CisJaWYgKHN0YXRlLT50eXBlID09 IEpTT05fVEFCTEVfSk9JTl9TVEFURSkKKwl7CisJCUpzb25UYWJsZUpvaW5TdGF0ZSAqam9pbiA9 IChKc29uVGFibGVKb2luU3RhdGUgKikgc3RhdGU7CisKKwkJSnNvblRhYmxlUGxhblJlc2V0KGpv aW4tPmxlZnQpOworCQlKc29uVGFibGVQbGFuUmVzZXQoam9pbi0+cmlnaHQpOworCQlqb2luLT5h ZHZhbmNlUmlnaHQgPSBmYWxzZTsKKwl9CisJZWxzZQorCXsKKwkJSnNvblRhYmxlU2NhblN0YXRl ICpzY2FuOworCisJCUFzc2VydChzdGF0ZS0+dHlwZSA9PSBKU09OX1RBQkxFX1NDQU5fU1RBVEUp OworCQlzY2FuID0gKEpzb25UYWJsZVNjYW5TdGF0ZSAqKSBzdGF0ZTsKKwkJc2Nhbi0+cmVzZXQg PSB0cnVlOworCQlzY2FuLT5hZHZhbmNlTmVzdGVkID0gZmFsc2U7CisKKwkJaWYgKHNjYW4tPnBs YW4ubmVzdGVkKQorCQkJSnNvblRhYmxlUGxhblJlc2V0KHNjYW4tPnBsYW4ubmVzdGVkKTsKKwl9 Cit9CisKKy8qCisgKiBGZXRjaCBuZXh0IHJvdyBmcm9tIGEgc2ltcGxlIHNjYW4gd2l0aCBvdXRl ci9pbm5lciBqb2luZWQgbmVzdGVkIHN1YnNjYW5zLgorICoKKyAqIFJldHVybnMgZmFsc2UgYXQg dGhlIGVuZCBvZiBhIHNjYW4sIHRydWUgb3RoZXJ3aXNlLgorICovCitzdGF0aWMgYm9vbAorSnNv blRhYmxlU2Nhbk5leHRSb3coSnNvblRhYmxlU2NhblN0YXRlICpzY2FuKQoreworCS8qIHJlc2V0 IGNvbnRleHQgaXRlbSBpZiByZXF1ZXN0ZWQgKi8KKwlpZiAoc2Nhbi0+cmVzZXQpCisJeworCQlK c29uVGFibGVTY2FuU3RhdGUgKnBhcmVudF9zY2FuID0KKwkJCShKc29uVGFibGVTY2FuU3RhdGUg Kikgc2Nhbi0+cGxhbi5wYXJlbnQ7CisKKwkJQXNzZXJ0KHBhcmVudF9zY2FuICYmICFwYXJlbnRf c2Nhbi0+Y3VycmVudElzTnVsbCk7CisJCUpzb25UYWJsZVJlc2V0Q29udGV4dEl0ZW0oc2Nhbiwg cGFyZW50X3NjYW4tPmN1cnJlbnQpOworCQlzY2FuLT5yZXNldCA9IGZhbHNlOworCX0KKworCWlm IChzY2FuLT5hZHZhbmNlTmVzdGVkKQorCXsKKwkJLyogZmV0Y2ggbmV4dCBuZXN0ZWQgcm93ICov CisJCXNjYW4tPmFkdmFuY2VOZXN0ZWQgPSBKc29uVGFibGVQbGFuTmV4dFJvdyhzY2FuLT5wbGFu Lm5lc3RlZCk7CisKKwkJaWYgKHNjYW4tPmFkdmFuY2VOZXN0ZWQpCisJCQlyZXR1cm4gdHJ1ZTsK Kwl9CisKKwlmb3IgKDs7KQorCXsKKwkJLyogZmV0Y2ggbmV4dCByb3cgKi8KKwkJSnNvbmJWYWx1 ZSAqamJ2ID0gSnNvblZhbHVlTGlzdE5leHQoJnNjYW4tPmZvdW5kLCAmc2Nhbi0+aXRlcik7CisJ CU1lbW9yeUNvbnRleHQgb2xkY3h0OworCisJCWlmICghamJ2KQorCQl7CisJCQlzY2FuLT5jdXJy ZW50ID0gUG9pbnRlckdldERhdHVtKE5VTEwpOworCQkJc2Nhbi0+Y3VycmVudElzTnVsbCA9IHRy dWU7CisJCQlyZXR1cm4gZmFsc2U7CQkvKiBlbmQgb2Ygc2NhbiAqLworCQl9CisKKwkJLyogc2V0 IGN1cnJlbnQgcm93IGl0ZW0gKi8KKwkJb2xkY3h0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKHNj YW4tPm1jeHQpOworCQlzY2FuLT5jdXJyZW50ID0gSnNvbmJQR2V0RGF0dW0oSnNvbmJWYWx1ZVRv SnNvbmIoamJ2KSk7CisJCXNjYW4tPmN1cnJlbnRJc051bGwgPSBmYWxzZTsKKwkJTWVtb3J5Q29u dGV4dFN3aXRjaFRvKG9sZGN4dCk7CisKKwkJc2Nhbi0+b3JkaW5hbCsrOworCisJCWlmICghc2Nh bi0+cGxhbi5uZXN0ZWQpCisJCQlicmVhazsKKworCQlKc29uVGFibGVQbGFuUmVzZXQoc2Nhbi0+ cGxhbi5uZXN0ZWQpOworCisJCXNjYW4tPmFkdmFuY2VOZXN0ZWQgPSBKc29uVGFibGVQbGFuTmV4 dFJvdyhzY2FuLT5wbGFuLm5lc3RlZCk7CisKKwkJaWYgKHNjYW4tPmFkdmFuY2VOZXN0ZWQgfHwg c2Nhbi0+b3V0ZXJKb2luKQorCQkJYnJlYWs7CisJfQorCisJcmV0dXJuIHRydWU7Cit9CisKKy8q CisgKiBKc29uVGFibGVGZXRjaFJvdworICoJCVByZXBhcmUgdGhlIG5leHQgImN1cnJlbnQiIHR1 cGxlIGZvciB1cGNvbWluZyBHZXRWYWx1ZSBjYWxscy4KKyAqCQlSZXR1cm5zIGZhbHNlIGlmIG5v IG1vcmUgcm93cyBjYW4gYmUgcmV0dXJuZWQuCisgKi8KK3N0YXRpYyBib29sCitKc29uVGFibGVG ZXRjaFJvdyhUYWJsZUZ1bmNTY2FuU3RhdGUgKnN0YXRlKQoreworCUpzb25UYWJsZUV4ZWNDb250 ZXh0ICpjeHQgPQorCQlHZXRKc29uVGFibGVFeGVjQ29udGV4dChzdGF0ZSwgIkpzb25UYWJsZUZl dGNoUm93Iik7CisKKwlyZXR1cm4gSnNvblRhYmxlU2Nhbk5leHRSb3coY3h0LT5yb290KTsKK30K KworLyoKKyAqIEpzb25UYWJsZUdldFZhbHVlCisgKgkJUmV0dXJuIHRoZSB2YWx1ZSBmb3IgY29s dW1uIG51bWJlciAnY29sbnVtJyBmb3IgdGhlIGN1cnJlbnQgcm93LgorICoKKyAqIFRoaXMgbGVh a3MgbWVtb3J5LCBzbyBiZSBzdXJlIHRvIHJlc2V0IG9mdGVuIHRoZSBjb250ZXh0IGluIHdoaWNo IGl0J3MKKyAqIGNhbGxlZC4KKyAqLworc3RhdGljIERhdHVtCitKc29uVGFibGVHZXRWYWx1ZShU YWJsZUZ1bmNTY2FuU3RhdGUgKnN0YXRlLCBpbnQgY29sbnVtLAorCQkJCSAgT2lkIHR5cGlkLCBp bnQzMiB0eXBtb2QsIGJvb2wgKmlzbnVsbCkKK3sKKwlKc29uVGFibGVFeGVjQ29udGV4dCAqY3h0 ID0KKwkJR2V0SnNvblRhYmxlRXhlY0NvbnRleHQoc3RhdGUsICJKc29uVGFibGVHZXRWYWx1ZSIp OworCUV4cHJDb250ZXh0ICplY29udGV4dCA9IHN0YXRlLT5zcy5wcy5wc19FeHByQ29udGV4dDsK KwlFeHByU3RhdGUgICplc3RhdGUgPSBsaXN0X250aChzdGF0ZS0+Y29sdmFsZXhwcnMsIGNvbG51 bSk7CisJSnNvblRhYmxlU2NhblN0YXRlICpzY2FuID0gY3h0LT5jb2xleHByc2NhbnNbY29sbnVt XTsKKwlEYXR1bQkJcmVzdWx0OworCisJaWYgKHNjYW4tPmN1cnJlbnRJc051bGwpCS8qIE5VTEwg ZnJvbSBvdXRlci91bmlvbiBqb2luICovCisJeworCQlyZXN1bHQgPSAoRGF0dW0pIDA7CisJCSpp c251bGwgPSB0cnVlOworCX0KKwllbHNlIGlmIChlc3RhdGUpCQkJLyogcmVndWxhciBjb2x1bW4g Ki8KKwl7CisJCURhdHVtCQlzYXZlZF9jYXNlVmFsdWUgPSBlY29udGV4dC0+Y2FzZVZhbHVlX2Rh dHVtOworCQlib29sCQlzYXZlZF9jYXNlSXNOdWxsID0gZWNvbnRleHQtPmNhc2VWYWx1ZV9pc051 bGw7CisKKwkJLyogUGFzcyB0aGUgdmFsdWUgZm9yIENhc2VUZXN0RXhwciB0aGF0IG1heSBiZSBw cmVzZW50IGluIGNvbGV4cHIgKi8KKwkJZWNvbnRleHQtPmNhc2VWYWx1ZV9kYXR1bSA9IHNjYW4t PmN1cnJlbnQ7CisJCWVjb250ZXh0LT5jYXNlVmFsdWVfaXNOdWxsID0gZmFsc2U7CisKKwkJcmVz dWx0ID0gRXhlY0V2YWxFeHByKGVzdGF0ZSwgZWNvbnRleHQsIGlzbnVsbCk7CisKKwkJZWNvbnRl eHQtPmNhc2VWYWx1ZV9kYXR1bSA9IHNhdmVkX2Nhc2VWYWx1ZTsKKwkJZWNvbnRleHQtPmNhc2VW YWx1ZV9pc051bGwgPSBzYXZlZF9jYXNlSXNOdWxsOworCX0KKwllbHNlCisJeworCQlyZXN1bHQg PSBJbnQzMkdldERhdHVtKHNjYW4tPm9yZGluYWwpOwkvKiBvcmRpbmFsaXR5IGNvbHVtbiAqLwor CQkqaXNudWxsID0gZmFsc2U7CisJfQorCisJcmV0dXJuIHJlc3VsdDsKK30KKworLyoKKyAqIEpz b25UYWJsZURlc3Ryb3lPcGFxdWUKKyAqLworc3RhdGljIHZvaWQKK0pzb25UYWJsZURlc3Ryb3lP cGFxdWUoVGFibGVGdW5jU2NhblN0YXRlICpzdGF0ZSkKK3sKKwlKc29uVGFibGVFeGVjQ29udGV4 dCAqY3h0ID0KKwkJR2V0SnNvblRhYmxlRXhlY0NvbnRleHQoc3RhdGUsICJKc29uVGFibGVEZXN0 cm95T3BhcXVlIik7CisKKwkvKiBub3QgdmFsaWQgYW55bW9yZSAqLworCWN4dC0+bWFnaWMgPSAw OworCisJc3RhdGUtPm9wYXF1ZSA9IE5VTEw7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91 dGlscy9hZHQvcnVsZXV0aWxzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMK aW5kZXggYWNiNGY0M2NmMy4uOWUwZjRjNjZkNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L3J1bGV1dGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMu YwpAQCAtNTIwLDYgKzUyMCw4IEBAIHN0YXRpYyBjaGFyICpmbGF0dGVuX3JlbG9wdGlvbnMoT2lk IHJlbGlkKTsKIHN0YXRpYyB2b2lkIGdldF9yZWxvcHRpb25zKFN0cmluZ0luZm8gYnVmLCBEYXR1 bSByZWxvcHRpb25zKTsKIHN0YXRpYyB2b2lkIGdldF9qc29uX3BhdGhfc3BlYyhOb2RlICpwYXRo X3NwZWMsIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCwKIAkJCQkJCQkgICBib29sIHNob3dpbXBs aWNpdCk7CitzdGF0aWMgdm9pZCBnZXRfanNvbl90YWJsZV9jb2x1bW5zKFRhYmxlRnVuYyAqdGYs IEpzb25UYWJsZVBsYW4gKm5vZGUsCisJCQkJCQkJCSAgIGRlcGFyc2VfY29udGV4dCAqY29udGV4 dCwgYm9vbCBzaG93aW1wbGljaXQpOwogCiAjZGVmaW5lIG9ubHlfbWFya2VyKHJ0ZSkgICgocnRl KS0+aW5oID8gIiIgOiAiT05MWSAiKQogCkBAIC04NjI2LDcgKzg2MjgsOCBAQCBnZXRfanNvbl9i ZWhhdmlvcihKc29uQmVoYXZpb3IgKmJlaGF2aW9yLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQs CiAvKgogICogZ2V0X2pzb25fZXhwcl9vcHRpb25zCiAgKgotICogUGFyc2UgYmFjayBjb21tb24g b3B0aW9ucyBmb3IgSlNPTl9RVUVSWSwgSlNPTl9WQUxVRSwgSlNPTl9FWElTVFMuCisgKiBQYXJz ZSBiYWNrIGNvbW1vbiBvcHRpb25zIGZvciBKU09OX1FVRVJZLCBKU09OX1ZBTFVFLCBKU09OX0VY SVNUUyBhbmQKKyAqIEpTT05fVEFCTEUgY29sdW1ucy4KICAqLwogc3RhdGljIHZvaWQKIGdldF9q c29uX2V4cHJfb3B0aW9ucyhKc29uRXhwciAqanNleHByLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRl eHQsCkBAIC05ODczLDYgKzk4NzYsOSBAQCBnZXRfcnVsZV9leHByKE5vZGUgKm5vZGUsIGRlcGFy c2VfY29udGV4dCAqY29udGV4dCwKIAkJCQkJY2FzZSBKU09OX1ZBTFVFX09QOgogCQkJCQkJYXBw ZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICJKU09OX1ZBTFVFKCIpOwogCQkJCQkJYnJlYWs7CisJ CQkJCWRlZmF1bHQ6CisJCQkJCQllbG9nKEVSUk9SLCAidW5leHBlY3RlZCBKc29uRXhwciB0eXBl OiAlZCIsIGpleHByLT5vcCk7CisJCQkJCQlicmVhazsKIAkJCQl9CiAKIAkJCQlnZXRfcnVsZV9l eHByKGpleHByLT5mb3JtYXR0ZWRfZXhwciwgY29udGV4dCwgc2hvd2ltcGxpY2l0KTsKQEAgLTEx MjM5LDE2ICsxMTI0NSwxNCBAQCBnZXRfc3VibGlua19leHByKFN1YkxpbmsgKnN1YmxpbmssIGRl cGFyc2VfY29udGV4dCAqY29udGV4dCkKIAogCiAvKiAtLS0tLS0tLS0tCi0gKiBnZXRfdGFibGVm dW5jCQkJLSBQYXJzZSBiYWNrIGEgdGFibGUgZnVuY3Rpb24KKyAqIGdldF94bWx0YWJsZQkJCS0g UGFyc2UgYmFjayBhIFhNTFRBQkxFIGZ1bmN0aW9uCiAgKiAtLS0tLS0tLS0tCiAgKi8KIHN0YXRp YyB2b2lkCi1nZXRfdGFibGVmdW5jKFRhYmxlRnVuYyAqdGYsIGRlcGFyc2VfY29udGV4dCAqY29u dGV4dCwgYm9vbCBzaG93aW1wbGljaXQpCitnZXRfeG1sdGFibGUoVGFibGVGdW5jICp0ZiwgZGVw YXJzZV9jb250ZXh0ICpjb250ZXh0LCBib29sIHNob3dpbXBsaWNpdCkKIHsKIAlTdHJpbmdJbmZv CWJ1ZiA9IGNvbnRleHQtPmJ1ZjsKIAotCS8qIFhNTFRBQkxFIGlzIHRoZSBvbmx5IGV4aXN0aW5n IGltcGxlbWVudGF0aW9uLiAgKi8KLQogCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiWE1M VEFCTEUoIik7CiAKIAlpZiAodGYtPm5zX3VyaXMgIT0gTklMKQpAQCAtMTEzMzksNiArMTEzNDMs MjcxIEBAIGdldF90YWJsZWZ1bmMoVGFibGVGdW5jICp0ZiwgZGVwYXJzZV9jb250ZXh0ICpjb250 ZXh0LCBib29sIHNob3dpbXBsaWNpdCkKIAlhcHBlbmRTdHJpbmdJbmZvQ2hhcihidWYsICcpJyk7 CiB9CiAKKy8qCisgKiBnZXRfanNvbl9uZXN0ZWRfY29sdW1ucyAtIFBhcnNlIGJhY2sgbmVzdGVk IEpTT05fVEFCTEUgY29sdW1ucworICovCitzdGF0aWMgdm9pZAorZ2V0X2pzb25fdGFibGVfbmVz dGVkX2NvbHVtbnMoVGFibGVGdW5jICp0ZiwgTm9kZSAqbm9kZSwKKwkJCQkJCQkgIGRlcGFyc2Vf Y29udGV4dCAqY29udGV4dCwgYm9vbCBzaG93aW1wbGljaXQsCisJCQkJCQkJICBib29sIG5lZWRj b21tYSkKK3sKKwlpZiAoSXNBKG5vZGUsIEpzb25UYWJsZVNpYmxpbmcpKQorCXsKKwkJSnNvblRh YmxlU2libGluZyAqbiA9IChKc29uVGFibGVTaWJsaW5nICopIG5vZGU7CisKKwkJZ2V0X2pzb25f dGFibGVfbmVzdGVkX2NvbHVtbnModGYsIG4tPmxhcmcsIGNvbnRleHQsIHNob3dpbXBsaWNpdCwK KwkJCQkJCQkJCSAgbmVlZGNvbW1hKTsKKwkJZ2V0X2pzb25fdGFibGVfbmVzdGVkX2NvbHVtbnMo dGYsIG4tPnJhcmcsIGNvbnRleHQsIHNob3dpbXBsaWNpdCwgdHJ1ZSk7CisJfQorCWVsc2UKKwl7 CisJCUpzb25UYWJsZVBsYW4gKm4gPSBjYXN0Tm9kZShKc29uVGFibGVQbGFuLCBub2RlKTsKKwor CQlpZiAobmVlZGNvbW1hKQorCQkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoY29udGV4dC0+YnVmLCAn LCcpOworCisJCWFwcGVuZFN0cmluZ0luZm9DaGFyKGNvbnRleHQtPmJ1ZiwgJyAnKTsKKwkJYXBw ZW5kQ29udGV4dEtleXdvcmQoY29udGV4dCwgIk5FU1RFRCBQQVRIICIsIDAsIDAsIDApOworCQln ZXRfY29uc3RfZXhwcihuLT5wYXRoLT52YWx1ZSwgY29udGV4dCwgLTEpOworCQlhcHBlbmRTdHJp bmdJbmZvKGNvbnRleHQtPmJ1ZiwgIiBBUyAlcyIsIHF1b3RlX2lkZW50aWZpZXIobi0+cGF0aC0+ bmFtZSkpOworCQlnZXRfanNvbl90YWJsZV9jb2x1bW5zKHRmLCBuLCBjb250ZXh0LCBzaG93aW1w bGljaXQpOworCX0KK30KKworLyoKKyAqIGdldF9qc29uX3RhYmxlX3BsYW4gLSBQYXJzZSBiYWNr IGEgSlNPTl9UQUJMRSBwbGFuCisgKi8KK3N0YXRpYyB2b2lkCitnZXRfanNvbl90YWJsZV9wbGFu KFRhYmxlRnVuYyAqdGYsIE5vZGUgKm5vZGUsIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCwKKwkJ CQkJYm9vbCBwYXJlbnRoZXNpemUpCit7CisJaWYgKHBhcmVudGhlc2l6ZSkKKwkJYXBwZW5kU3Ry aW5nSW5mb0NoYXIoY29udGV4dC0+YnVmLCAnKCcpOworCisJaWYgKElzQShub2RlLCBKc29uVGFi bGVTaWJsaW5nKSkKKwl7CisJCUpzb25UYWJsZVNpYmxpbmcgKm4gPSAoSnNvblRhYmxlU2libGlu ZyAqKSBub2RlOworCisJCWdldF9qc29uX3RhYmxlX3BsYW4odGYsIG4tPmxhcmcsIGNvbnRleHQs CisJCQkJCQkJSXNBKG4tPmxhcmcsIEpzb25UYWJsZVNpYmxpbmcpIHx8CisJCQkJCQkJY2FzdE5v ZGUoSnNvblRhYmxlUGxhbiwgbi0+bGFyZyktPmNoaWxkKTsKKworCQlhcHBlbmRTdHJpbmdJbmZv U3RyaW5nKGNvbnRleHQtPmJ1Ziwgbi0+Y3Jvc3MgPyAiIENST1NTICIgOiAiIFVOSU9OICIpOwor CisJCWdldF9qc29uX3RhYmxlX3BsYW4odGYsIG4tPnJhcmcsIGNvbnRleHQsCisJCQkJCQkJSXNB KG4tPnJhcmcsIEpzb25UYWJsZVNpYmxpbmcpIHx8CisJCQkJCQkJY2FzdE5vZGUoSnNvblRhYmxl UGxhbiwgbi0+cmFyZyktPmNoaWxkKTsKKwl9CisJZWxzZQorCXsKKwkJSnNvblRhYmxlUGxhbiAq biA9IGNhc3ROb2RlKEpzb25UYWJsZVBsYW4sIG5vZGUpOworCisJCWFwcGVuZFN0cmluZ0luZm9T dHJpbmcoY29udGV4dC0+YnVmLCBxdW90ZV9pZGVudGlmaWVyKG4tPnBhdGgtPm5hbWUpKTsKKwor CQlpZiAobi0+Y2hpbGQpCisJCXsKKwkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoY29udGV4dC0+ YnVmLAorCQkJCQkJCQkgICBuLT5vdXRlckpvaW4gPyAiIE9VVEVSICIgOiAiIElOTkVSICIpOwor CQkJZ2V0X2pzb25fdGFibGVfcGxhbih0Ziwgbi0+Y2hpbGQsIGNvbnRleHQsCisJCQkJCQkJCUlz QShuLT5jaGlsZCwgSnNvblRhYmxlU2libGluZykpOworCQl9CisJfQorCisJaWYgKHBhcmVudGhl c2l6ZSkKKwkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoY29udGV4dC0+YnVmLCAnKScpOworfQorCisv KgorICogZ2V0X2pzb25fdGFibGVfY29sdW1ucyAtIFBhcnNlIGJhY2sgSlNPTl9UQUJMRSBjb2x1 bW5zCisgKi8KK3N0YXRpYyB2b2lkCitnZXRfanNvbl90YWJsZV9jb2x1bW5zKFRhYmxlRnVuYyAq dGYsIEpzb25UYWJsZVBsYW4gKnBsYW4sCisJCQkJCSAgIGRlcGFyc2VfY29udGV4dCAqY29udGV4 dCwgYm9vbCBzaG93aW1wbGljaXQpCit7CisJU3RyaW5nSW5mbwlidWYgPSBjb250ZXh0LT5idWY7 CisJSnNvbkV4cHIgICAqamV4cHIgPSBjYXN0Tm9kZShKc29uRXhwciwgdGYtPmRvY2V4cHIpOwor CUxpc3RDZWxsICAgKmxjX2NvbG5hbWU7CisJTGlzdENlbGwgICAqbGNfY29sdHlwZTsKKwlMaXN0 Q2VsbCAgICpsY19jb2x0eXBtb2Q7CisJTGlzdENlbGwgICAqbGNfY29sdmFsZXhwcjsKKwlpbnQJ CQljb2xudW0gPSAwOworCisJYXBwZW5kU3RyaW5nSW5mb0NoYXIoYnVmLCAnICcpOworCWFwcGVu ZENvbnRleHRLZXl3b3JkKGNvbnRleHQsICJDT0xVTU5TICgiLCAwLCAwLCAwKTsKKworCWlmIChQ UkVUVFlfSU5ERU5UKGNvbnRleHQpKQorCQljb250ZXh0LT5pbmRlbnRMZXZlbCArPSBQUkVUVFlJ TkRFTlRfVkFSOworCisJZm9yZm91cihsY19jb2xuYW1lLCB0Zi0+Y29sbmFtZXMsCisJCQlsY19j b2x0eXBlLCB0Zi0+Y29sdHlwZXMsCisJCQlsY19jb2x0eXBtb2QsIHRmLT5jb2x0eXBtb2RzLAor CQkJbGNfY29sdmFsZXhwciwgdGYtPmNvbHZhbGV4cHJzKQorCXsKKwkJY2hhcgkgICAqY29sbmFt ZSA9IHN0clZhbChsZmlyc3QobGNfY29sbmFtZSkpOworCQlKc29uRXhwciAgICpjb2xleHByOwor CQlPaWQJCQl0eXBpZDsKKwkJaW50MzIJCXR5cG1vZDsKKwkJYm9vbAkJb3JkaW5hbGl0eTsKKwkJ SnNvbkJlaGF2aW9yVHlwZSBkZWZhdWx0X2JlaGF2aW9yOworCisJCXR5cGlkID0gbGZpcnN0X29p ZChsY19jb2x0eXBlKTsKKwkJdHlwbW9kID0gbGZpcnN0X2ludChsY19jb2x0eXBtb2QpOworCQlj b2xleHByID0gY2FzdE5vZGUoSnNvbkV4cHIsIGxmaXJzdChsY19jb2x2YWxleHByKSk7CisKKwkJ aWYgKGNvbG51bSA8IHBsYW4tPmNvbE1pbikKKwkJeworCQkJY29sbnVtKys7CisJCQljb250aW51 ZTsKKwkJfQorCisJCWlmIChjb2xudW0gPiBwbGFuLT5jb2xNYXgpCisJCQlicmVhazsKKworCQlp ZiAoY29sbnVtID4gcGxhbi0+Y29sTWluKQorCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYs ICIsICIpOworCisJCWNvbG51bSsrOworCisJCW9yZGluYWxpdHkgPSAhY29sZXhwcjsKKworCQlh cHBlbmRDb250ZXh0S2V5d29yZChjb250ZXh0LCAiIiwgMCwgMCwgMCk7CisKKwkJYXBwZW5kU3Ry aW5nSW5mbyhidWYsICIlcyAlcyIsIHF1b3RlX2lkZW50aWZpZXIoY29sbmFtZSksCisJCQkJCQkg b3JkaW5hbGl0eSA/ICJGT1IgT1JESU5BTElUWSIgOgorCQkJCQkJIGZvcm1hdF90eXBlX3dpdGhf dHlwZW1vZCh0eXBpZCwgdHlwbW9kKSk7CisJCWlmIChvcmRpbmFsaXR5KQorCQkJY29udGludWU7 CisKKwkJaWYgKGNvbGV4cHItPm9wID09IEpTT05fRVhJU1RTX09QKQorCQl7CisJCQlhcHBlbmRT dHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIiBFWElTVFMiKTsKKwkJCWRlZmF1bHRfYmVoYXZpb3IgPSBK U09OX0JFSEFWSU9SX0ZBTFNFOworCQl9CisJCWVsc2UKKwkJeworCQkJaWYgKGNvbGV4cHItPm9w ID09IEpTT05fUVVFUllfT1ApCisJCQl7CisJCQkJY2hhcgkJdHlwY2F0ZWdvcnk7CisJCQkJYm9v bAkJdHlwaXNwcmVmZXJyZWQ7CisKKwkJCQlnZXRfdHlwZV9jYXRlZ29yeV9wcmVmZXJyZWQodHlw aWQsICZ0eXBjYXRlZ29yeSwgJnR5cGlzcHJlZmVycmVkKTsKKworCQkJCWlmICh0eXBjYXRlZ29y eSA9PSBUWVBDQVRFR09SWV9TVFJJTkcpCisJCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVm LAorCQkJCQkJCQkJCSAgIGNvbGV4cHItPmZvcm1hdC0+Zm9ybWF0X3R5cGUgPT0gSlNfRk9STUFU X0pTT05CID8KKwkJCQkJCQkJCQkgICAiIEZPUk1BVCBKU09OQiIgOiAiIEZPUk1BVCBKU09OIik7 CisJCQl9CisKKwkJCWRlZmF1bHRfYmVoYXZpb3IgPSBKU09OX0JFSEFWSU9SX05VTEw7CisJCX0K KworCQlpZiAoamV4cHItPm9uX2Vycm9yLT5idHlwZSA9PSBKU09OX0JFSEFWSU9SX0VSUk9SKQor CQkJZGVmYXVsdF9iZWhhdmlvciA9IEpTT05fQkVIQVZJT1JfRVJST1I7CisKKwkJYXBwZW5kU3Ry aW5nSW5mb1N0cmluZyhidWYsICIgUEFUSCAiKTsKKworCQlnZXRfanNvbl9wYXRoX3NwZWMoY29s ZXhwci0+cGF0aF9zcGVjLCBjb250ZXh0LCBzaG93aW1wbGljaXQpOworCisJCWdldF9qc29uX2V4 cHJfb3B0aW9ucyhjb2xleHByLCBjb250ZXh0LCBkZWZhdWx0X2JlaGF2aW9yKTsKKwl9CisKKwlp ZiAocGxhbi0+Y2hpbGQpCisJCWdldF9qc29uX3RhYmxlX25lc3RlZF9jb2x1bW5zKHRmLCBwbGFu LT5jaGlsZCwgY29udGV4dCwgc2hvd2ltcGxpY2l0LAorCQkJCQkJCQkJICBwbGFuLT5jb2xNYXgg Pj0gcGxhbi0+Y29sTWluKTsKKworCWlmIChQUkVUVFlfSU5ERU5UKGNvbnRleHQpKQorCQljb250 ZXh0LT5pbmRlbnRMZXZlbCAtPSBQUkVUVFlJTkRFTlRfVkFSOworCisJYXBwZW5kQ29udGV4dEtl eXdvcmQoY29udGV4dCwgIikiLCAwLCAwLCAwKTsKK30KKworLyogLS0tLS0tLS0tLQorICogZ2V0 X2pzb25fdGFibGUJCQktIFBhcnNlIGJhY2sgYSBKU09OX1RBQkxFIGZ1bmN0aW9uCisgKiAtLS0t LS0tLS0tCisgKi8KK3N0YXRpYyB2b2lkCitnZXRfanNvbl90YWJsZShUYWJsZUZ1bmMgKnRmLCBk ZXBhcnNlX2NvbnRleHQgKmNvbnRleHQsIGJvb2wgc2hvd2ltcGxpY2l0KQoreworCVN0cmluZ0lu Zm8JYnVmID0gY29udGV4dC0+YnVmOworCUpzb25FeHByICAgKmpleHByID0gY2FzdE5vZGUoSnNv bkV4cHIsIHRmLT5kb2NleHByKTsKKwlKc29uVGFibGVQbGFuICpyb290ID0gY2FzdE5vZGUoSnNv blRhYmxlUGxhbiwgdGYtPnBsYW4pOworCisJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICJK U09OX1RBQkxFKCIpOworCisJaWYgKFBSRVRUWV9JTkRFTlQoY29udGV4dCkpCisJCWNvbnRleHQt PmluZGVudExldmVsICs9IFBSRVRUWUlOREVOVF9WQVI7CisKKwlhcHBlbmRDb250ZXh0S2V5d29y ZChjb250ZXh0LCAiIiwgMCwgMCwgMCk7CisKKwlnZXRfcnVsZV9leHByKGpleHByLT5mb3JtYXR0 ZWRfZXhwciwgY29udGV4dCwgc2hvd2ltcGxpY2l0KTsKKworCWFwcGVuZFN0cmluZ0luZm9TdHJp bmcoYnVmLCAiLCAiKTsKKworCWdldF9jb25zdF9leHByKHJvb3QtPnBhdGgtPnZhbHVlLCBjb250 ZXh0LCAtMSk7CisKKwlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIiBBUyAlcyIsIHF1b3RlX2lkZW50 aWZpZXIocm9vdC0+cGF0aC0+bmFtZSkpOworCisJaWYgKGpleHByLT5wYXNzaW5nX3ZhbHVlcykK Kwl7CisJCUxpc3RDZWxsICAgKmxjMSwKKwkJCQkgICAqbGMyOworCQlib29sCQluZWVkY29tbWEg PSBmYWxzZTsKKworCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcihidWYsICcgJyk7CisJCWFwcGVuZENv bnRleHRLZXl3b3JkKGNvbnRleHQsICJQQVNTSU5HICIsIDAsIDAsIDApOworCisJCWlmIChQUkVU VFlfSU5ERU5UKGNvbnRleHQpKQorCQkJY29udGV4dC0+aW5kZW50TGV2ZWwgKz0gUFJFVFRZSU5E RU5UX1ZBUjsKKworCQlmb3Jib3RoKGxjMSwgamV4cHItPnBhc3NpbmdfbmFtZXMsCisJCQkJbGMy LCBqZXhwci0+cGFzc2luZ192YWx1ZXMpCisJCXsKKwkJCWlmIChuZWVkY29tbWEpCisJCQkJYXBw ZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICIsICIpOworCQkJbmVlZGNvbW1hID0gdHJ1ZTsKKwor CQkJYXBwZW5kQ29udGV4dEtleXdvcmQoY29udGV4dCwgIiIsIDAsIDAsIDApOworCisJCQlnZXRf cnVsZV9leHByKChOb2RlICopIGxmaXJzdChsYzIpLCBjb250ZXh0LCBmYWxzZSk7CisJCQlhcHBl bmRTdHJpbmdJbmZvKGJ1ZiwgIiBBUyAlcyIsCisJCQkJCQkJIHF1b3RlX2lkZW50aWZpZXIoKGxm aXJzdF9ub2RlKFN0cmluZywgbGMxKSktPnN2YWwpCisJCQkJKTsKKwkJfQorCisJCWlmIChQUkVU VFlfSU5ERU5UKGNvbnRleHQpKQorCQkJY29udGV4dC0+aW5kZW50TGV2ZWwgLT0gUFJFVFRZSU5E RU5UX1ZBUjsKKwl9CisKKwlnZXRfanNvbl90YWJsZV9jb2x1bW5zKHRmLCByb290LCBjb250ZXh0 LCBzaG93aW1wbGljaXQpOworCisJYXBwZW5kU3RyaW5nSW5mb0NoYXIoYnVmLCAnICcpOworCWFw cGVuZENvbnRleHRLZXl3b3JkKGNvbnRleHQsICJQTEFOICIsIDAsIDAsIDApOworCWdldF9qc29u X3RhYmxlX3BsYW4odGYsIChOb2RlICopIHJvb3QsIGNvbnRleHQsIHRydWUpOworCisJaWYgKGpl eHByLT5vbl9lcnJvci0+YnR5cGUgIT0gSlNPTl9CRUhBVklPUl9FTVBUWSkKKwkJZ2V0X2pzb25f YmVoYXZpb3IoamV4cHItPm9uX2Vycm9yLCBjb250ZXh0LCAiRVJST1IiKTsKKworCWlmIChQUkVU VFlfSU5ERU5UKGNvbnRleHQpKQorCQljb250ZXh0LT5pbmRlbnRMZXZlbCAtPSBQUkVUVFlJTkRF TlRfVkFSOworCisJYXBwZW5kQ29udGV4dEtleXdvcmQoY29udGV4dCwgIikiLCAwLCAwLCAwKTsK K30KKworLyogLS0tLS0tLS0tLQorICogZ2V0X3RhYmxlZnVuYwkJCS0gUGFyc2UgYmFjayBhIHRh YmxlIGZ1bmN0aW9uCisgKiAtLS0tLS0tLS0tCisgKi8KK3N0YXRpYyB2b2lkCitnZXRfdGFibGVm dW5jKFRhYmxlRnVuYyAqdGYsIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCwgYm9vbCBzaG93aW1w bGljaXQpCit7CisJLyogWE1MVEFCTEUgYW5kIEpTT05fVEFCTEUgYXJlIHRoZSBvbmx5IGV4aXN0 aW5nIGltcGxlbWVudGF0aW9ucy4gICovCisKKwlpZiAodGYtPmZ1bmN0eXBlID09IFRGVF9YTUxU QUJMRSkKKwkJZ2V0X3htbHRhYmxlKHRmLCBjb250ZXh0LCBzaG93aW1wbGljaXQpOworCWVsc2Ug aWYgKHRmLT5mdW5jdHlwZSA9PSBURlRfSlNPTl9UQUJMRSkKKwkJZ2V0X2pzb25fdGFibGUodGYs IGNvbnRleHQsIHNob3dpbXBsaWNpdCk7Cit9CisKIC8qIC0tLS0tLS0tLS0KICAqIGdldF9mcm9t X2NsYXVzZQkJCS0gUGFyc2UgYmFjayBhIEZST00gY2xhdXNlCiAgKgpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMu aAppbmRleCAxOTYxZDllMGFhLi5lZWRhMDJlN2FjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9u b2Rlcy9leGVjbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAt MTk2OSw2ICsxOTY5LDggQEAgdHlwZWRlZiBzdHJ1Y3QgVGFibGVGdW5jU2NhblN0YXRlCiAJRXhw clN0YXRlICAqcm93ZXhwcjsJCS8qIHN0YXRlIGZvciByb3ctZ2VuZXJhdGluZyBleHByZXNzaW9u ICovCiAJTGlzdAkgICAqY29sZXhwcnM7CQkvKiBzdGF0ZSBmb3IgY29sdW1uLWdlbmVyYXRpbmcg ZXhwcmVzc2lvbiAqLwogCUxpc3QJICAgKmNvbGRlZmV4cHJzOwkvKiBzdGF0ZSBmb3IgY29sdW1u IGRlZmF1bHQgZXhwcmVzc2lvbnMgKi8KKwlMaXN0CSAgICpjb2x2YWxleHByczsJLyogc3RhdGUg Zm9yIGNvbHVtbiB2YWx1ZSBleHByZXNzaW9uICovCisJTGlzdAkgICAqcGFzc2luZ3ZhbGV4cHJz OwkvKiBzdGF0ZSBmb3IgUEFTU0lORyBhcmd1bWVudCBleHByZXNzaW9uICovCiAJTGlzdAkgICAq bnNfbmFtZXM7CQkvKiBzYW1lIGFzIFRhYmxlRnVuYy5uc19uYW1lcyAqLwogCUxpc3QJICAgKm5z X3VyaXM7CQkvKiBsaXN0IG9mIHN0YXRlcyBvZiBuYW1lc3BhY2UgVVJJIGV4cHJzICovCiAJQml0 bWFwc2V0ICAqbm90bnVsbHM7CQkvKiBudWxsYWJpbGl0eSBmbGFnIGZvciBlYWNoIG91dHB1dCBj b2x1bW4gKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL21ha2VmdW5jcy5oIGIvc3Jj L2luY2x1ZGUvbm9kZXMvbWFrZWZ1bmNzLmgKaW5kZXggOTFkOTVmYzUyYi4uNmQyMTA2ODRhOCAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvbWFrZWZ1bmNzLmgKKysrIGIvc3JjL2luY2x1 ZGUvbm9kZXMvbWFrZWZ1bmNzLmgKQEAgLTEwMCw2ICsxMDAsNyBAQCBleHRlcm4gSW5kZXhJbmZv ICptYWtlSW5kZXhJbmZvKGludCBudW1hdHRycywgaW50IG51bWtleWF0dHJzLCBPaWQgYW1vaWQs CiAJCQkJCQkJCWJvb2wgaXNyZWFkeSwgYm9vbCBjb25jdXJyZW50LAogCQkJCQkJCQlib29sIHN1 bW1hcml6aW5nKTsKIAorZXh0ZXJuIE5vZGUgKm1ha2VTdHJpbmdDb25zdChjaGFyICpzdHIsIGlu dCBsb2NhdGlvbik7CiBleHRlcm4gRGVmRWxlbSAqbWFrZURlZkVsZW0oY2hhciAqbmFtZSwgTm9k ZSAqYXJnLCBpbnQgbG9jYXRpb24pOwogZXh0ZXJuIERlZkVsZW0gKm1ha2VEZWZFbGVtRXh0ZW5k ZWQoY2hhciAqbmFtZVNwYWNlLCBjaGFyICpuYW1lLCBOb2RlICphcmcsCiAJCQkJCQkJCQlEZWZF bGVtQWN0aW9uIGRlZmFjdGlvbiwgaW50IGxvY2F0aW9uKTsKQEAgLTExNCw2ICsxMTUsMTQgQEAg ZXh0ZXJuIEpzb25WYWx1ZUV4cHIgKm1ha2VKc29uVmFsdWVFeHByKEV4cHIgKnJhd19leHByLCBF eHByICpmb3JtYXR0ZWRfZXhwciwKIAkJCQkJCQkJCQlKc29uRm9ybWF0ICpmb3JtYXQpOwogZXh0 ZXJuIEpzb25CZWhhdmlvciAqbWFrZUpzb25CZWhhdmlvcihKc29uQmVoYXZpb3JUeXBlIHR5cGUs IE5vZGUgKmV4cHIsCiAJCQkJCQkJCQkgIEpzb25Db2VyY2lvbiAqY29lcmNpb24sIGludCBsb2Nh dGlvbik7CitleHRlcm4gSnNvblRhYmxlUGF0aCAqbWFrZUpzb25UYWJsZVBhdGgoQ29uc3QgKnBh dGh2YWx1ZSwgY2hhciAqcGF0aG5hbWUpOworZXh0ZXJuIE5vZGUgKm1ha2VKc29uVGFibGVQYXRo U3BlYyhjaGFyICpzdHJpbmcsIGNoYXIgKm5hbWUsCisJCQkJCQkJCSAgIGludCBzdHJpbmdfbG9j YXRpb24sIGludCBuYW1lX2xvY2F0aW9uKTsKK2V4dGVybiBOb2RlICptYWtlSnNvblRhYmxlRGVm YXVsdFBsYW4oSnNvblRhYmxlUGxhbkpvaW5UeXBlIGpvaW5fdHlwZSwKKwkJCQkJCQkJCSAgaW50 IGxvY2F0aW9uKTsKK2V4dGVybiBOb2RlICptYWtlSnNvblRhYmxlU2ltcGxlUGxhbihjaGFyICpw YXRobmFtZSwgaW50IGxvY2F0aW9uKTsKK2V4dGVybiBOb2RlICptYWtlSnNvblRhYmxlSm9pbmVk UGxhbihKc29uVGFibGVQbGFuSm9pblR5cGUgdHlwZSwKKwkJCQkJCQkJCSBOb2RlICpwbGFuMSwg Tm9kZSAqcGxhbjIsIGludCBsb2NhdGlvbik7CiBleHRlcm4gTm9kZSAqbWFrZUpzb25LZXlWYWx1 ZShOb2RlICprZXksIE5vZGUgKnZhbHVlKTsKIGV4dGVybiBOb2RlICptYWtlSnNvbklzUHJlZGlj YXRlKE5vZGUgKmV4cHIsIEpzb25Gb3JtYXQgKmZvcm1hdCwKIAkJCQkJCQkJIEpzb25WYWx1ZVR5 cGUgaXRlbV90eXBlLCBib29sIHVuaXF1ZV9rZXlzLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv bm9kZXMvcGFyc2Vub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCmluZGV4 IDliYTZlYzZhN2UuLjRiMjAzMGU5OGQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3Bh cnNlbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKQEAgLTE3NTAs NiArMTc1MCw3IEBAIHR5cGVkZWYgc3RydWN0IEpzb25GdW5jRXhwcgogCUpzb25FeHByT3AJb3A7 CQkJCS8qIGV4cHJlc3Npb24gdHlwZSAqLwogCUpzb25WYWx1ZUV4cHIgKmNvbnRleHRfaXRlbTsJ LyogY29udGV4dCBpdGVtIGV4cHJlc3Npb24gKi8KIAlOb2RlCSAgICpwYXRoc3BlYzsJCS8qIEpT T04gcGF0aCBzcGVjaWZpY2F0aW9uIGV4cHJlc3Npb24gKi8KKwljaGFyCSAgICpwYXRobmFtZTsJ CS8qIHBhdGggbmFtZSwgaWYgYW55ICovCiAJTGlzdAkgICAqcGFzc2luZzsJCS8qIGxpc3Qgb2Yg UEFTU0lORyBjbGF1c2UgYXJndW1lbnRzLCBpZiBhbnkgKi8KIAlKc29uT3V0cHV0ICpvdXRwdXQ7 CQkJLyogb3V0cHV0IGNsYXVzZSwgaWYgc3BlY2lmaWVkICovCiAJSnNvbkJlaGF2aW9yICpvbl9l bXB0eTsJCS8qIE9OIEVNUFRZIGJlaGF2aW9yICovCkBAIC0xNzU5LDYgKzE3NjAsMTE0IEBAIHR5 cGVkZWYgc3RydWN0IEpzb25GdW5jRXhwcgogCWludAkJCWxvY2F0aW9uOwkJLyogdG9rZW4gbG9j YXRpb24sIG9yIC0xIGlmIHVua25vd24gKi8KIH0gSnNvbkZ1bmNFeHByOwogCisvKgorICogSnNv blRhYmxlUGF0aFNwZWMKKyAqCQl1bnRyYW5zZm9ybWVkIHNwZWNpZmljYXRpb24gb2YgSlNPTiBw YXRoIGV4cHJlc3Npb24gd2l0aCBhbiBvcHRpb25hbAorICoJCW5hbWUKKyAqLwordHlwZWRlZiBz dHJ1Y3QgSnNvblRhYmxlUGF0aFNwZWMKK3sKKwlOb2RlVGFnCQl0eXBlOworCisJTm9kZQkgICAq c3RyaW5nOworCWNoYXIJICAgKm5hbWU7CisJaW50CQkJbmFtZV9sb2NhdGlvbjsKKwlpbnQJCQls b2NhdGlvbjsJLyogbG9jYXRpb24gb2YgJ3N0cmluZycgKi8KK30gSnNvblRhYmxlUGF0aFNwZWM7 CisKKy8qCisgKiBKc29uVGFibGVDb2x1bW5UeXBlIC0KKyAqCQllbnVtZXJhdGlvbiBvZiBKU09O X1RBQkxFIGNvbHVtbiB0eXBlcworICovCit0eXBlZGVmIGVudW0gSnNvblRhYmxlQ29sdW1uVHlw ZQoreworCUpUQ19GT1JfT1JESU5BTElUWSwKKwlKVENfUkVHVUxBUiwKKwlKVENfRVhJU1RTLAor CUpUQ19GT1JNQVRURUQsCisJSlRDX05FU1RFRCwKK30gSnNvblRhYmxlQ29sdW1uVHlwZTsKKwor LyoKKyAqIEpzb25UYWJsZUNvbHVtbiAtCisgKgkJdW50cmFuc2Zvcm1lZCByZXByZXNlbnRhdGlv biBvZiBKU09OX1RBQkxFIGNvbHVtbgorICovCit0eXBlZGVmIHN0cnVjdCBKc29uVGFibGVDb2x1 bW4KK3sKKwlOb2RlVGFnCQl0eXBlOworCUpzb25UYWJsZUNvbHVtblR5cGUgY29sdHlwZTsJLyog Y29sdW1uIHR5cGUgKi8KKwljaGFyCSAgICpuYW1lOwkJCS8qIGNvbHVtbiBuYW1lICovCisJVHlw ZU5hbWUgICAqdHlwZU5hbWU7CQkvKiBjb2x1bW4gdHlwZSBuYW1lICovCisJSnNvblRhYmxlUGF0 aFNwZWMgKnBhdGhzcGVjOyAvKiBKU09OIHBhdGggc3BlY2lmaWNhdGlvbiAqLworCUpzb25Gb3Jt YXQgKmZvcm1hdDsJCQkvKiBKU09OIGZvcm1hdCBjbGF1c2UsIGlmIHNwZWNpZmllZCAqLworCUpz b25XcmFwcGVyIHdyYXBwZXI7CQkvKiBXUkFQUEVSIGJlaGF2aW9yIGZvciBmb3JtYXR0ZWQgY29s dW1ucyAqLworCUpzb25RdW90ZXMJcXVvdGVzOwkJCS8qIG9taXQgb3Iga2VlcCBxdW90ZXMgb24g c2NhbGFyIHN0cmluZ3M/ICovCisJTGlzdAkgICAqY29sdW1uczsJCS8qIG5lc3RlZCBjb2x1bW5z ICovCisJSnNvbkJlaGF2aW9yICpvbl9lbXB0eTsJCS8qIE9OIEVNUFRZIGJlaGF2aW9yICovCisJ SnNvbkJlaGF2aW9yICpvbl9lcnJvcjsJCS8qIE9OIEVSUk9SIGJlaGF2aW9yICovCisJaW50CQkJ bG9jYXRpb247CQkvKiB0b2tlbiBsb2NhdGlvbiwgb3IgLTEgaWYgdW5rbm93biAqLworfSBKc29u VGFibGVDb2x1bW47CisKKy8qCisgKiBKc29uVGFibGVQbGFuVHlwZSAtCisgKgkJZmxhZ3MgZm9y IEpTT05fVEFCTEUgcGxhbiBub2RlIHR5cGVzIHJlcHJlc2VudGF0aW9uCisgKi8KK3R5cGVkZWYg ZW51bSBKc29uVGFibGVQbGFuVHlwZQoreworCUpTVFBfREVGQVVMVCwKKwlKU1RQX1NJTVBMRSwK KwlKU1RQX0pPSU5FRCwKK30gSnNvblRhYmxlUGxhblR5cGU7CisKKy8qCisgKiBKc29uVGFibGVQ bGFuSm9pblR5cGUgLQorICoJCUpTT05fVEFCTEUgam9pbiB0eXBlcyBmb3IgSlNUUF9KT0lORUQg cGxhbnMKKyAqLwordHlwZWRlZiBlbnVtIEpzb25UYWJsZVBsYW5Kb2luVHlwZQoreworCUpTVFBf Sk9JTl9JTk5FUiwKKwlKU1RQX0pPSU5fT1VURVIsCisJSlNUUF9KT0lOX0NST1NTLAorCUpTVFBf Sk9JTl9VTklPTiwKK30gSnNvblRhYmxlUGxhbkpvaW5UeXBlOworCisvKgorICogSnNvblRhYmxl UGxhblNwZWMgLQorICoJCXVudHJhbnNmb3JtZWQgcmVwcmVzZW50YXRpb24gb2YgSlNPTl9UQUJM RSdzIFBMQU4gY2xhdXNlCisgKi8KK3R5cGVkZWYgc3RydWN0IEpzb25UYWJsZVBsYW5TcGVjCit7 CisJTm9kZVRhZwkJdHlwZTsKKworCUpzb25UYWJsZVBsYW5UeXBlIHBsYW5fdHlwZTsJLyogcGxh biB0eXBlICovCisJSnNvblRhYmxlUGxhbkpvaW5UeXBlIGpvaW5fdHlwZTsJLyogam9pbiB0eXBl IChmb3Igam9pbmVkIHBsYW4gb25seSkgKi8KKwljaGFyCSAgICpwYXRobmFtZTsJCS8qIHBhdGgg bmFtZSAoZm9yIHNpbXBsZSBwbGFuIG9ubHkpICovCisKKwkvKiBGb3Igam9pbmVkIHBsYW5zICov CisJc3RydWN0IEpzb25UYWJsZVBsYW5TcGVjICpwbGFuMTsJCS8qIGZpcnN0IGpvaW5lZCBwbGFu ICovCisJc3RydWN0IEpzb25UYWJsZVBsYW5TcGVjICpwbGFuMjsJCS8qIHNlY29uZCBqb2luZWQg cGxhbiAqLworCisJaW50CQkJbG9jYXRpb247CQkvKiB0b2tlbiBsb2NhdGlvbiwgb3IgLTEgaWYg dW5rbm93biAqLworfSBKc29uVGFibGVQbGFuU3BlYzsKKworLyoKKyAqIEpzb25UYWJsZSAtCisg KgkJdW50cmFuc2Zvcm1lZCByZXByZXNlbnRhdGlvbiBvZiBKU09OX1RBQkxFCisgKi8KK3R5cGVk ZWYgc3RydWN0IEpzb25UYWJsZQoreworCU5vZGVUYWcJCXR5cGU7CisJSnNvblZhbHVlRXhwciAq Y29udGV4dF9pdGVtOwkvKiBjb250ZXh0IGl0ZW0gZXhwcmVzc2lvbiAqLworCUpzb25UYWJsZVBh dGhTcGVjICpwYXRoc3BlYzsJLyogSlNPTiBwYXRoIHNwZWNpZmljYXRpb24gKi8KKwlMaXN0CSAg ICpwYXNzaW5nOwkJLyogbGlzdCBvZiBQQVNTSU5HIGNsYXVzZSBhcmd1bWVudHMsIGlmIGFueSAq LworCUxpc3QJICAgKmNvbHVtbnM7CQkvKiBsaXN0IG9mIEpzb25UYWJsZUNvbHVtbiAqLworCUpz b25UYWJsZVBsYW5TcGVjICpwbGFuc3BlYzsgLyogam9pbiBwbGFuLCBpZiBzcGVjaWZpZWQgKi8K KwlKc29uQmVoYXZpb3IgICpvbl9lcnJvcjsJLyogT04gRVJST1IgYmVoYXZpb3IgKi8KKwlBbGlh cwkgICAqYWxpYXM7CQkJLyogdGFibGUgYWxpYXMgaW4gRlJPTSBjbGF1c2UgKi8KKwlib29sCQls YXRlcmFsOwkJLyogZG9lcyBpdCBoYXZlIExBVEVSQUwgcHJlZml4PyAqLworCWludAkJCWxvY2F0 aW9uOwkJLyogdG9rZW4gbG9jYXRpb24sIG9yIC0xIGlmIHVua25vd24gKi8KK30gSnNvblRhYmxl OworCiAvKgogICogSnNvbktleVZhbHVlIC0KICAqCQl1bnRyYW5zZm9ybWVkIHJlcHJlc2VudGF0 aW9uIG9mIEpTT04gb2JqZWN0IGtleS12YWx1ZSBwYWlyIGZvcgpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaApp bmRleCBmYWQyZGQ5MDkyLi4yNTBhZmRhOTNiIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rl cy9wcmltbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaApAQCAtOTQs OCArOTQsMTQgQEAgdHlwZWRlZiBzdHJ1Y3QgUmFuZ2VWYXIKIAlpbnQJCQlsb2NhdGlvbjsKIH0g UmFuZ2VWYXI7CiAKK3R5cGVkZWYgZW51bSBUYWJsZUZ1bmNUeXBlCit7CisJVEZUX1hNTFRBQkxF LAorCVRGVF9KU09OX1RBQkxFLAorfSBUYWJsZUZ1bmNUeXBlOworCiAvKgotICogVGFibGVGdW5j IC0gbm9kZSBmb3IgYSB0YWJsZSBmdW5jdGlvbiwgc3VjaCBhcyBYTUxUQUJMRS4KKyAqIFRhYmxl RnVuYyAtIG5vZGUgZm9yIGEgdGFibGUgZnVuY3Rpb24sIHN1Y2ggYXMgWE1MVEFCTEUgb3IgSlNP Tl9UQUJMRS4KICAqCiAgKiBFbnRyaWVzIGluIHRoZSBuc19uYW1lcyBsaXN0IGFyZSBlaXRoZXIg U3RyaW5nIG5vZGVzIGNvbnRhaW5pbmcKICAqIGxpdGVyYWwgbmFtZXNwYWNlIG5hbWVzLCBvciBO VUxMIHBvaW50ZXJzIHRvIHJlcHJlc2VudCBERUZBVUxULgpAQCAtMTAzLDYgKzEwOSw4IEBAIHR5 cGVkZWYgc3RydWN0IFJhbmdlVmFyCiB0eXBlZGVmIHN0cnVjdCBUYWJsZUZ1bmMKIHsKIAlOb2Rl VGFnCQl0eXBlOworCS8qIFhNTFRBQkxFIG9yIEpTT05fVEFCTEUgKi8KKwlUYWJsZUZ1bmNUeXBl IGZ1bmN0eXBlOwogCS8qIGxpc3Qgb2YgbmFtZXNwYWNlIFVSSSBleHByZXNzaW9ucyAqLwogCUxp c3QJICAgKm5zX3VyaXMgcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJsZV9pZ25vcmUpOwogCS8qIGxp c3Qgb2YgbmFtZXNwYWNlIG5hbWVzIG9yIE5VTEwgKi8KQEAgLTEyMyw4ICsxMzEsMTQgQEAgdHlw ZWRlZiBzdHJ1Y3QgVGFibGVGdW5jCiAJTGlzdAkgICAqY29sZXhwcnM7CiAJLyogbGlzdCBvZiBj b2x1bW4gZGVmYXVsdCBleHByZXNzaW9ucyAqLwogCUxpc3QJICAgKmNvbGRlZmV4cHJzIHBnX25v ZGVfYXR0cihxdWVyeV9qdW1ibGVfaWdub3JlKTsKKwkvKiBsaXN0IG9mIGNvbHVtbiB2YWx1ZSBl eHByZXNzaW9ucyAqLworCUxpc3QJICAgKmNvbHZhbGV4cHJzIHBnX25vZGVfYXR0cihxdWVyeV9q dW1ibGVfaWdub3JlKTsKKwkvKiBsaXN0IG9mIFBBU1NJTkcgYXJndW1lbnQgZXhwcmVzc2lvbnMg Ki8KKwlMaXN0CSAgICpwYXNzaW5ndmFsZXhwcnMgcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJsZV9p Z25vcmUpOwogCS8qIG51bGxhYmlsaXR5IGZsYWcgZm9yIGVhY2ggb3V0cHV0IGNvbHVtbiAqLwog CUJpdG1hcHNldCAgKm5vdG51bGxzIHBnX25vZGVfYXR0cihxdWVyeV9qdW1ibGVfaWdub3JlKTsK KwkvKiBKU09OX1RBQkxFIHBsYW4gKi8KKwlOb2RlCSAgICpwbGFuIHBnX25vZGVfYXR0cihxdWVy eV9qdW1ibGVfaWdub3JlKTsKIAkvKiBjb3VudHMgZnJvbSAwOyAtMSBpZiBub25lIHNwZWNpZmll ZCAqLwogCWludAkJCW9yZGluYWxpdHljb2wgcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJsZV9pZ25v cmUpOwogCS8qIHRva2VuIGxvY2F0aW9uLCBvciAtMSBpZiB1bmtub3duICovCkBAIC0xNTYxLDYg KzE1NzUsNyBAQCB0eXBlZGVmIGVudW0gSnNvbkV4cHJPcAogCUpTT05fVkFMVUVfT1AsCQkJCS8q IEpTT05fVkFMVUUoKSAqLwogCUpTT05fUVVFUllfT1AsCQkJCS8qIEpTT05fUVVFUlkoKSAqLwog CUpTT05fRVhJU1RTX09QLAkJCQkvKiBKU09OX0VYSVNUUygpICovCisJSlNPTl9UQUJMRV9PUCwJ CQkJLyogSlNPTl9UQUJMRSgpICovCiB9IEpzb25FeHByT3A7CiAKIC8qCkBAIC0xODUwLDYgKzE4 NjUsNDkgQEAgdHlwZWRlZiBzdHJ1Y3QgSnNvbkV4cHIKIAlpbnQJCQlsb2NhdGlvbjsKIH0gSnNv bkV4cHI7CiAKKy8qCisgKiBKc29uVGFibGVQYXRoCisgKgkJQSBKU09OIHBhdGggZXhwcmVzc2lv biB0byBiZSBjb21wdXRlZCBhcyBwYXJ0IG9mIGV2YWx1YXRpbmcKKyAqCQlhIEpTT05fVEFCTEUg cGxhbiBub2RlCisgKi8KK3R5cGVkZWYgc3RydWN0IEpzb25UYWJsZVBhdGgKK3sKKwlOb2RlVGFn CQl0eXBlOworCisJQ29uc3QJICAgKnZhbHVlOworCWNoYXIJICAgKm5hbWU7Cit9CQkJSnNvblRh YmxlUGF0aDsKKworLyoKKyAqIEpzb25UYWJsZVNwZWMgLQorICoJCXRyYW5zZm9ybWVkIHJlcHJl c2VudGF0aW9uIG9mIGEgSlNPTl9UQUJMRSBwbGFuCisgKi8KK3R5cGVkZWYgc3RydWN0IEpzb25U YWJsZVBsYW4KK3sKKwlOb2RlVGFnCQl0eXBlOworCisJSnNvblRhYmxlUGF0aCAqcGF0aDsKKwlO b2RlCSAgICpjaGlsZDsJCQkvKiBuZXN0ZWQgY29sdW1ucywgaWYgYW55ICovCisJYm9vbAkJb3V0 ZXJKb2luOwkJLyogb3V0ZXIgb3IgaW5uZXIgam9pbiBmb3IgbmVzdGVkIGNvbHVtbnM/ICovCisJ aW50CQkJY29sTWluOwkJCS8qIG1pbiBjb2x1bW4gaW5kZXggaW4gdGhlIHJlc3VsdGluZyBjb2x1 bW4KKwkJCQkJCQkJICogbGlzdCAqLworCWludAkJCWNvbE1heDsJCQkvKiBtYXggY29sdW1uIGlu ZGV4IGluIHRoZSByZXN1bHRpbmcgY29sdW1uCisJCQkJCQkJCSAqIGxpc3QgKi8KKwlib29sCQll cnJvck9uRXJyb3I7CS8qIEVSUk9SL0VNUFRZIE9OIEVSUk9SIGJlaGF2aW9yICovCit9IEpzb25U YWJsZVBsYW47CisKKy8qCisgKiBKc29uVGFibGVTaWJsaW5nIC0KKyAqCQl0cmFuc2Zvcm1lZCBy ZXByZXNlbnRhdGlvbiBvZiBqb2luZWQgc2libGluZyBKU09OX1RBQkxFIHBsYW4gbm9kZQorICov Cit0eXBlZGVmIHN0cnVjdCBKc29uVGFibGVTaWJsaW5nCit7CisJTm9kZVRhZwkJdHlwZTsKKwlO b2RlCSAgICpsYXJnOwkJCS8qIGxlZnQgam9pbiBub2RlICovCisJTm9kZQkgICAqcmFyZzsJCQkv KiByaWdodCBqb2luIG5vZGUgKi8KKwlib29sCQljcm9zczsJCQkvKiBjcm9zcyBvciB1bmlvbiBq b2luPyAqLworfSBKc29uVGFibGVTaWJsaW5nOworCiAvKiAtLS0tLS0tLS0tLS0tLS0tCiAgKiBO dWxsVGVzdAogICoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaCBiL3Ny Yy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaAppbmRleCA5NGUxY2I0ZGNlLi5lMmJiZWViMjA5IDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgKKysrIGIvc3JjL2luY2x1ZGUv cGFyc2VyL2t3bGlzdC5oCkBAIC0yNDIsNiArMjQyLDcgQEAgUEdfS0VZV09SRCgianNvbl9vYmpl Y3RhZ2ciLCBKU09OX09CSkVDVEFHRywgQ09MX05BTUVfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBH X0tFWVdPUkQoImpzb25fcXVlcnkiLCBKU09OX1FVRVJZLCBDT0xfTkFNRV9LRVlXT1JELCBCQVJF X0xBQkVMKQogUEdfS0VZV09SRCgianNvbl9zY2FsYXIiLCBKU09OX1NDQUxBUiwgQ09MX05BTUVf S0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoImpzb25fc2VyaWFsaXplIiwgSlNPTl9T RVJJQUxJWkUsIENPTF9OQU1FX0tFWVdPUkQsIEJBUkVfTEFCRUwpCitQR19LRVlXT1JEKCJqc29u X3RhYmxlIiwgSlNPTl9UQUJMRSwgQ09MX05BTUVfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tF WVdPUkQoImpzb25fdmFsdWUiLCBKU09OX1ZBTFVFLCBDT0xfTkFNRV9LRVlXT1JELCBCQVJFX0xB QkVMKQogUEdfS0VZV09SRCgia2VlcCIsIEtFRVAsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9M QUJFTCkKIFBHX0tFWVdPUkQoImtleSIsIEtFWSwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xB QkVMKQpAQCAtMjg0LDYgKzI4NSw3IEBAIFBHX0tFWVdPUkQoIm5hbWVzIiwgTkFNRVMsIFVOUkVT RVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoIm5hdGlvbmFsIiwgTkFUSU9O QUwsIENPTF9OQU1FX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJuYXR1cmFsIiwg TkFUVVJBTCwgVFlQRV9GVU5DX05BTUVfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQo Im5jaGFyIiwgTkNIQVIsIENPTF9OQU1FX0tFWVdPUkQsIEJBUkVfTEFCRUwpCitQR19LRVlXT1JE KCJuZXN0ZWQiLCBORVNURUQsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tF WVdPUkQoIm5ldyIsIE5FVywgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZ V09SRCgibmV4dCIsIE5FWFQsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tF WVdPUkQoIm5mYyIsIE5GQywgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQpAQCAtMzM0 LDcgKzMzNiw5IEBAIFBHX0tFWVdPUkQoInBhcnRpYWwiLCBQQVJUSUFMLCBVTlJFU0VSVkVEX0tF WVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwYXJ0aXRpb24iLCBQQVJUSVRJT04sIFVO UkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInBhc3NpbmciLCBQQVNT SU5HLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwYXNzd29y ZCIsIFBBU1NXT1JELCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCitQR19LRVlXT1JE KCJwYXRoIiwgUEFUSCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09S RCgicGxhY2luZyIsIFBMQUNJTkcsIFJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCitQR19L RVlXT1JEKCJwbGFuIiwgUExBTiwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdf S0VZV09SRCgicGxhbnMiLCBQTEFOUywgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQog UEdfS0VZV09SRCgicG9saWN5IiwgUE9MSUNZLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFC RUwpCiBQR19LRVlXT1JEKCJwb3NpdGlvbiIsIFBPU0lUSU9OLCBDT0xfTkFNRV9LRVlXT1JELCBC QVJFX0xBQkVMKQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX2NsYXVzZS5o IGIvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX2NsYXVzZS5oCmluZGV4IDM4MjlkYjBmYzQuLmU3 MTc2MmIxMGMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9jbGF1c2UuaAor KysgYi9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfY2xhdXNlLmgKQEAgLTUxLDQgKzUxLDcgQEAg ZXh0ZXJuIExpc3QgKmFkZFRhcmdldFRvU29ydExpc3QoUGFyc2VTdGF0ZSAqcHN0YXRlLCBUYXJn ZXRFbnRyeSAqdGxlLAogZXh0ZXJuIEluZGV4IGFzc2lnblNvcnRHcm91cFJlZihUYXJnZXRFbnRy eSAqdGxlLCBMaXN0ICp0bGlzdCk7CiBleHRlcm4gYm9vbCB0YXJnZXRJc0luU29ydExpc3QoVGFy Z2V0RW50cnkgKnRsZSwgT2lkIHNvcnRvcCwgTGlzdCAqc29ydExpc3QpOwogCisvKiBmdW5jdGlv bnMgaW4gcGFyc2VfanNvbnRhYmxlLmMgKi8KK2V4dGVybiBQYXJzZU5hbWVzcGFjZUl0ZW0gKnRy YW5zZm9ybUpzb25UYWJsZShQYXJzZVN0YXRlICpwc3RhdGUsIEpzb25UYWJsZSAqanQpOworCiAj ZW5kaWYJCQkJCQkJLyogUEFSU0VfQ0xBVVNFX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L3V0aWxzL2pzb25wYXRoLmggYi9zcmMvaW5jbHVkZS91dGlscy9qc29ucGF0aC5oCmluZGV4IDBm NGIxZWJjOWYuLjJjNjczYjdkZWEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL2pzb25w YXRoLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvanNvbnBhdGguaApAQCAtMTUsNiArMTUsNyBA QAogI2RlZmluZSBKU09OUEFUSF9ICiAKICNpbmNsdWRlICJmbWdyLmgiCisjaW5jbHVkZSAiZXhl Y3V0b3IvdGFibGVmdW5jLmgiCiAjaW5jbHVkZSAibm9kZXMvcGdfbGlzdC5oIgogI2luY2x1ZGUg Im5vZGVzL3ByaW1ub2Rlcy5oIgogI2luY2x1ZGUgInV0aWxzL2pzb25iLmgiCkBAIC0zMDMsNCAr MzA0LDYgQEAgZXh0ZXJuIERhdHVtIEpzb25QYXRoUXVlcnkoRGF0dW0gamIsIEpzb25QYXRoICpq cCwgSnNvbldyYXBwZXIgd3JhcHBlciwKIGV4dGVybiBKc29uYlZhbHVlICpKc29uUGF0aFZhbHVl KERhdHVtIGpiLCBKc29uUGF0aCAqanAsIGJvb2wgKmVtcHR5LAogCQkJCQkJCQkgYm9vbCAqZXJy b3IsIExpc3QgKnZhcnMpOwogCitleHRlcm4gUEdETExJTVBPUlQgY29uc3QgVGFibGVGdW5jUm91 dGluZSBKc29uYlRhYmxlUm91dGluZTsKKwogI2VuZGlmCmRpZmYgLS1naXQgYS9zcmMvaW50ZXJm YWNlcy9lY3BnL3Rlc3QvZWNwZ19zY2hlZHVsZSBiL3NyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9l Y3BnX3NjaGVkdWxlCmluZGV4IGY5YzBhMGUzYzAuLjI1NGEwYmFjYzcgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9lY3BnX3NjaGVkdWxlCisrKyBiL3NyYy9pbnRlcmZhY2Vz L2VjcGcvdGVzdC9lY3BnX3NjaGVkdWxlCkBAIC01Miw2ICs1Miw3IEBAIHRlc3Q6IHNxbC9vbGRl eGVjCiB0ZXN0OiBzcWwvcXVvdGUKIHRlc3Q6IHNxbC9zaG93CiB0ZXN0OiBzcWwvc3FsanNvbgor dGVzdDogc3FsL3NxbGpzb25fanNvbnRhYmxlCiB0ZXN0OiBzcWwvaW5zdXBkCiB0ZXN0OiBzcWwv cGFyc2VyCiB0ZXN0OiBzcWwvcHJlcGFyZWFzCmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9l Y3BnL3Rlc3QvZXhwZWN0ZWQvc3FsLXNxbGpzb25fanNvbnRhYmxlLmMgYi9zcmMvaW50ZXJmYWNl cy9lY3BnL3Rlc3QvZXhwZWN0ZWQvc3FsLXNxbGpzb25fanNvbnRhYmxlLmMKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMGJiZjQ0NDMxOAotLS0gL2Rldi9udWxsCisrKyBi L3NyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9leHBlY3RlZC9zcWwtc3FsanNvbl9qc29udGFibGUu YwpAQCAtMCwwICsxLDEzMiBAQAorLyogUHJvY2Vzc2VkIGJ5IGVjcGcgKHJlZ3Jlc3Npb24gbW9k ZSkgKi8KKy8qIFRoZXNlIGluY2x1ZGUgZmlsZXMgYXJlIGFkZGVkIGJ5IHRoZSBwcmVwcm9jZXNz b3IgKi8KKyNpbmNsdWRlIDxlY3BnbGliLmg+CisjaW5jbHVkZSA8ZWNwZ2Vycm5vLmg+CisjaW5j bHVkZSA8c3FsY2EuaD4KKy8qIEVuZCBvZiBhdXRvbWF0aWMgaW5jbHVkZSBzZWN0aW9uICovCisj ZGVmaW5lIEVDUEdkZWJ1ZyhYLFkpIEVDUEdkZWJ1ZygoWCkrMTAwLChZKSkKKworI2xpbmUgMSAi c3FsanNvbl9qc29udGFibGUucGdjIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisKKworI2xpbmUgMSAi c3FsY2EuaCIKKyNpZm5kZWYgUE9TVEdSRVNfU1FMQ0FfSAorI2RlZmluZSBQT1NUR1JFU19TUUxD QV9ICisKKyNpZm5kZWYgUEdETExJTVBPUlQKKyNpZiAgZGVmaW5lZChXSU4zMikgfHwgZGVmaW5l ZChfX0NZR1dJTl9fKQorI2RlZmluZSBQR0RMTElNUE9SVCBfX2RlY2xzcGVjIChkbGxpbXBvcnQp CisjZWxzZQorI2RlZmluZSBQR0RMTElNUE9SVAorI2VuZGlmCQkJCQkJCS8qIF9fQ1lHV0lOX18g Ki8KKyNlbmRpZgkJCQkJCQkvKiBQR0RMTElNUE9SVCAqLworCisjZGVmaW5lIFNRTEVSUk1DX0xF TgkxNTAKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiCit7CisjZW5kaWYKKworc3Ry dWN0IHNxbGNhX3QKK3sKKwljaGFyCQlzcWxjYWlkWzhdOworCWxvbmcJCXNxbGFiYzsKKwlsb25n CQlzcWxjb2RlOworCXN0cnVjdAorCXsKKwkJaW50CQkJc3FsZXJybWw7CisJCWNoYXIJCXNxbGVy cm1jW1NRTEVSUk1DX0xFTl07CisJfQkJCXNxbGVycm07CisJY2hhcgkJc3FsZXJycFs4XTsKKwls b25nCQlzcWxlcnJkWzZdOworCS8qIEVsZW1lbnQgMDogZW1wdHkJCQkJCQkqLworCS8qIDE6IE9J RCBvZiBwcm9jZXNzZWQgdHVwbGUgaWYgYXBwbGljYWJsZQkJCSovCisJLyogMjogbnVtYmVyIG9m IHJvd3MgcHJvY2Vzc2VkCQkJCSovCisJLyogYWZ0ZXIgYW4gSU5TRVJULCBVUERBVEUgb3IJCQkJ Ki8KKwkvKiBERUxFVEUgc3RhdGVtZW50CQkJCQkqLworCS8qIDM6IGVtcHR5CQkJCQkJKi8KKwkv KiA0OiBlbXB0eQkJCQkJCSovCisJLyogNTogZW1wdHkJCQkJCQkqLworCWNoYXIJCXNxbHdhcm5b OF07CisJLyogRWxlbWVudCAwOiBzZXQgdG8gJ1cnIGlmIGF0IGxlYXN0IG9uZSBvdGhlciBpcyAn VycJKi8KKwkvKiAxOiBpZiAnVycgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciBzdHJpbmcJCSovCisJ LyogdmFsdWUgd2FzIHRydW5jYXRlZCB3aGVuIGl0IHdhcwkJCSovCisJLyogc3RvcmVkIGludG8g YSBob3N0IHZhcmlhYmxlLiAgICAgICAgICAgICAqLworCisJLyoKKwkgKiAyOiBpZiAnVycgYSAo aG9wZWZ1bGx5KSBub24tZmF0YWwgbm90aWNlIG9jY3VycmVkCisJICovCS8qIDM6IGVtcHR5ICov CisJLyogNDogZW1wdHkJCQkJCQkqLworCS8qIDU6IGVtcHR5CQkJCQkJKi8KKwkvKiA2OiBlbXB0 eQkJCQkJCSovCisJLyogNzogZW1wdHkJCQkJCQkqLworCisJY2hhcgkJc3Fsc3RhdGVbNV07Cit9 OworCitzdHJ1Y3Qgc3FsY2FfdCAqRUNQR2dldF9zcWxjYSh2b2lkKTsKKworI2lmbmRlZiBQT1NU R1JFU19FQ1BHX0lOVEVSTkFMCisjZGVmaW5lIHNxbGNhICgqRUNQR2dldF9zcWxjYSgpKQorI2Vu ZGlmCisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZgorCisjbGluZSAz ICJzcWxqc29uX2pzb250YWJsZS5wZ2MiCisKKworI2xpbmUgMSAicmVncmVzc2lvbi5oIgorCisK KworCisKKworI2xpbmUgNCAic3FsanNvbl9qc29udGFibGUucGdjIgorCisKKy8qIGV4ZWMgc3Fs IHdoZW5ldmVyIHNxbGVycm9yICBzcWxwcmludCA7ICovCisjbGluZSA2ICJzcWxqc29uX2pzb250 YWJsZS5wZ2MiCisKKworaW50CittYWluICgpCit7CisgIEVDUEdkZWJ1ZyAoMSwgc3RkZXJyKTsK KworICB7IEVDUEdjb25uZWN0KF9fTElORV9fLCAwLCAiZWNwZzFfcmVncmVzc2lvbiIgLCBOVUxM LCBOVUxMICwgTlVMTCwgMCk7IAorI2xpbmUgMTMgInNxbGpzb25fanNvbnRhYmxlLnBnYyIKKwor aWYgKHNxbGNhLnNxbGNvZGUgPCAwKSBzcWxwcmludCgpO30KKyNsaW5lIDEzICJzcWxqc29uX2pz b250YWJsZS5wZ2MiCisKKyAgeyBFQ1BHc2V0Y29tbWl0KF9fTElORV9fLCAib24iLCBOVUxMKTsK KyNsaW5lIDE0ICJzcWxqc29uX2pzb250YWJsZS5wZ2MiCisKK2lmIChzcWxjYS5zcWxjb2RlIDwg MCkgc3FscHJpbnQoKTt9CisjbGluZSAxNCAic3FsanNvbl9qc29udGFibGUucGdjIgorCisKKyAg eyBFQ1BHZG8oX19MSU5FX18sIDAsIDEsIE5VTEwsIDAsIEVDUEdzdF9ub3JtYWwsICJzZWxlY3Qg KiBmcm9tIGpzb25fdGFibGUgKCBqc29uYiAnbnVsbCcgLCAnJFsqXScgYXMgcDAgY29sdW1ucyAo IG5lc3RlZCAnJCcgYXMgcDEgY29sdW1ucyAoIG5lc3RlZCBwYXRoICckJyBhcyBwMTEgY29sdW1u cyAoIGZvbyBpbnQgKSAsIG5lc3RlZCBwYXRoICckJyBhcyBwMTIgY29sdW1ucyAoIGJhciBpbnQg KSApICwgbmVzdGVkIHBhdGggJyQnIGFzIHAyIGNvbHVtbnMgKCBuZXN0ZWQgcGF0aCAnJCcgYXMg cDIxIGNvbHVtbnMgKCBiYXogaW50ICkgKSApIHBsYW4gKCBwMSApICkganQiLCBFQ1BHdF9FT0lU LCBFQ1BHdF9FT1JUKTsKKyNsaW5lIDI2ICJzcWxqc29uX2pzb250YWJsZS5wZ2MiCisKK2lmIChz cWxjYS5zcWxjb2RlIDwgMCkgc3FscHJpbnQoKTt9CisjbGluZSAyNiAic3FsanNvbl9qc29udGFi bGUucGdjIgorCisgIC8vIGVycm9yCisKKyAgeyBFQ1BHZGlzY29ubmVjdChfX0xJTkVfXywgIkNV UlJFTlQiKTsKKyNsaW5lIDI5ICJzcWxqc29uX2pzb250YWJsZS5wZ2MiCisKK2lmIChzcWxjYS5z cWxjb2RlIDwgMCkgc3FscHJpbnQoKTt9CisjbGluZSAyOSAic3FsanNvbl9qc29udGFibGUucGdj IgorCisKKyAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rl c3QvZXhwZWN0ZWQvc3FsLXNxbGpzb25fanNvbnRhYmxlLnN0ZGVyciBiL3NyYy9pbnRlcmZhY2Vz L2VjcGcvdGVzdC9leHBlY3RlZC9zcWwtc3FsanNvbl9qc29udGFibGUuc3RkZXJyCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjU4ODFmZGI1ZWUKLS0tIC9kZXYvbnVsbAor KysgYi9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3QvZXhwZWN0ZWQvc3FsLXNxbGpzb25fanNvbnRh YmxlLnN0ZGVycgpAQCAtMCwwICsxLDIwIEBACitbTk9fUElEXTogRUNQR2RlYnVnOiBzZXQgdG8g MQorW05PX1BJRF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAKK1tOT19QSURdOiBFQ1BH Y29ubmVjdDogb3BlbmluZyBkYXRhYmFzZSBlY3BnMV9yZWdyZXNzaW9uIG9uIDxERUZBVUxUPiBw b3J0IDxERUZBVUxUPiAgCitbTk9fUElEXTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAor W05PX1BJRF06IEVDUEdzZXRjb21taXQgb24gbGluZSAxNDogYWN0aW9uICJvbiI7IGNvbm5lY3Rp b24gImVjcGcxX3JlZ3Jlc3Npb24iCitbTk9fUElEXTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAw MDAwMAorW05PX1BJRF06IGVjcGdfZXhlY3V0ZSBvbiBsaW5lIDE2OiBxdWVyeTogc2VsZWN0ICog ZnJvbSBqc29uX3RhYmxlICgganNvbmIgJ251bGwnICwgJyRbKl0nIGFzIHAwIGNvbHVtbnMgKCBu ZXN0ZWQgJyQnIGFzIHAxIGNvbHVtbnMgKCBuZXN0ZWQgcGF0aCAnJCcgYXMgcDExIGNvbHVtbnMg KCBmb28gaW50ICkgLCBuZXN0ZWQgcGF0aCAnJCcgYXMgcDEyIGNvbHVtbnMgKCBiYXIgaW50ICkg KSAsIG5lc3RlZCBwYXRoICckJyBhcyBwMiBjb2x1bW5zICggbmVzdGVkIHBhdGggJyQnIGFzIHAy MSBjb2x1bW5zICggYmF6IGludCApICkgKSBwbGFuICggcDEgKSApIGp0OyB3aXRoIDAgcGFyYW1l dGVyKHMpIG9uIGNvbm5lY3Rpb24gZWNwZzFfcmVncmVzc2lvbgorW05PX1BJRF06IHNxbGNhOiBj b2RlOiAwLCBzdGF0ZTogMDAwMDAKK1tOT19QSURdOiBlY3BnX2V4ZWN1dGUgb24gbGluZSAxNjog dXNpbmcgUFFleGVjCitbTk9fUElEXTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAorW05P X1BJRF06IGVjcGdfY2hlY2tfUFFyZXN1bHQgb24gbGluZSAxNjogYmFkIHJlc3BvbnNlIC0gRVJS T1I6ICBpbnZhbGlkIEpTT05fVEFCTEUgcGxhbgorTElORSAxOiAuLi50ZWQgcGF0aCAnJCcgYXMg cDIxIGNvbHVtbnMgKCBiYXogaW50ICkgKSApIHBsYW4gKCBwMSApICkganQKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorREVU QUlMOiAgUEFUSCBuYW1lIG1pc21hdGNoOiBleHBlY3RlZCBwMCBidXQgcDEgaXMgZ2l2ZW4uCitb Tk9fUElEXTogc3FsY2E6IGNvZGU6IDAsIHN0YXRlOiAwMDAwMAorW05PX1BJRF06IHJhaXNpbmcg c3Fsc3RhdGUgNDI2MDEgKHNxbGNvZGUgLTQwMCk6IGludmFsaWQgSlNPTl9UQUJMRSBwbGFuIG9u IGxpbmUgMTYKK1tOT19QSURdOiBzcWxjYTogY29kZTogLTQwMCwgc3RhdGU6IDQyNjAxCitTUUwg ZXJyb3I6IGludmFsaWQgSlNPTl9UQUJMRSBwbGFuIG9uIGxpbmUgMTYKK1tOT19QSURdOiBlY3Bn X2ZpbmlzaDogY29ubmVjdGlvbiBlY3BnMV9yZWdyZXNzaW9uIGNsb3NlZAorW05PX1BJRF06IHNx bGNhOiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAKZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2Vj cGcvdGVzdC9leHBlY3RlZC9zcWwtc3FsanNvbl9qc29udGFibGUuc3Rkb3V0IGIvc3JjL2ludGVy ZmFjZXMvZWNwZy90ZXN0L2V4cGVjdGVkL3NxbC1zcWxqc29uX2pzb250YWJsZS5zdGRvdXQKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uZTY5ZGUyOWJiMgpkaWZmIC0tZ2l0 IGEvc3JjL2ludGVyZmFjZXMvZWNwZy90ZXN0L3NxbC9NYWtlZmlsZSBiL3NyYy9pbnRlcmZhY2Vz L2VjcGcvdGVzdC9zcWwvTWFrZWZpbGUKaW5kZXggZDgyMTNiMjVjZS4uN2YwMzI2NTliOSAxMDA2 NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvZWNwZy90ZXN0L3NxbC9NYWtlZmlsZQorKysgYi9zcmMv aW50ZXJmYWNlcy9lY3BnL3Rlc3Qvc3FsL01ha2VmaWxlCkBAIC0yNCw2ICsyNCw3IEBAIFRFU1RT ID0gYXJyYXkgYXJyYXkuYyBcCiAgICAgICAgIHF1b3RlIHF1b3RlLmMgXAogICAgICAgICBzaG93 IHNob3cuYyBcCiAgICAgICAgIHNxbGpzb24gc3FsanNvbi5jIFwKKyAgICAgICAgc3FsanNvbl9q c29udGFibGUgc3FsanNvbl9qc29udGFibGUuYyBcCiAgICAgICAgIGluc3VwZCBpbnN1cGQuYyBc CiAgICAgICAgIHR3b3BoYXNlIHR3b3BoYXNlLmMgXAogICAgICAgICBpbnN1cGQgaW5zdXBkLmMg XApkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvZWNwZy90ZXN0L3NxbC9tZXNvbi5idWlsZCBi L3NyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9zcWwvbWVzb24uYnVpbGQKaW5kZXggMTJmMjhlMGEy NC4uODhhM2FjYjlhZiAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvZWNwZy90ZXN0L3NxbC9t ZXNvbi5idWlsZAorKysgYi9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3Qvc3FsL21lc29uLmJ1aWxk CkBAIC0yNiw2ICsyNiw3IEBAIHBnY19maWxlcyA9IFsKICAgJ3Nob3cnLAogICAnc3FsZGEnLAog ICAnc3FsanNvbicsCisgICdzcWxqc29uX2pzb250YWJsZScsCiAgICd0d29waGFzZScsCiBdCiAK ZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9zcWwvc3FsanNvbl9qc29udGFi bGUucGdjIGIvc3JjL2ludGVyZmFjZXMvZWNwZy90ZXN0L3NxbC9zcWxqc29uX2pzb250YWJsZS5w Z2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMDZmOGEyYjYzNAotLS0g L2Rldi9udWxsCisrKyBiL3NyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9zcWwvc3FsanNvbl9qc29u dGFibGUucGdjCkBAIC0wLDAgKzEsMzIgQEAKKyNpbmNsdWRlIDxzdGRpby5oPgorCitFWEVDIFNR TCBJTkNMVURFIHNxbGNhOworZXhlYyBzcWwgaW5jbHVkZSAuLi9yZWdyZXNzaW9uOworCitFWEVD IFNRTCBXSEVORVZFUiBTUUxFUlJPUiBzcWxwcmludDsKKworaW50CittYWluICgpCit7CisgIEVD UEdkZWJ1ZyAoMSwgc3RkZXJyKTsKKworICBFWEVDIFNRTCBDT05ORUNUIFRPIFJFR1JFU1NEQjE7 CisgIEVYRUMgU1FMIFNFVCBBVVRPQ09NTUlUID0gT047CisKKyAgRVhFQyBTUUwgU0VMRUNUICog RlJPTSBKU09OX1RBQkxFKGpzb25iICdudWxsJywgJyRbKl0nIEFTIHAwCisJQ09MVU1OUyAoCisJ CU5FU1RFRCAnJCcgQVMgcDEgQ09MVU1OUyAoCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDExIENP TFVNTlMgKCBmb28gaW50ICksCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDEyIENPTFVNTlMgKCBi YXIgaW50ICkKKwkJKSwKKwkJTkVTVEVEIFBBVEggJyQnIEFTIHAyIENPTFVNTlMgKAorCQkJTkVT VEVEIFBBVEggJyQnIEFTIHAyMSBDT0xVTU5TICggYmF6IGludCApCisJCSkKKwkpCisJUExBTiAo cDEpKSBqdDsKKyAgLy8gZXJyb3IKKworICBFWEVDIFNRTCBESVNDT05ORUNUOworCisgIHJldHVy biAwOworfQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zcWxqc29uX2pz b250YWJsZS5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3NxbGpzb25fanNvbnRhYmxl Lm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5mN2FlNzBhMDA2Ci0t LSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zcWxqc29uX2pzb250 YWJsZS5vdXQKQEAgLTAsMCArMSwxMzMzIEBACistLSBKU09OX1RBQkxFCistLSBTaG91bGQgZmFp bCAoSlNPTl9UQUJMRSBjYW4gYmUgdXNlZCBvbmx5IGluIEZST00gY2xhdXNlKQorU0VMRUNUIEpT T05fVEFCTEUoJ1tdJywgJyQnKTsKK0VSUk9SOiAgc3ludGF4IGVycm9yIGF0IG9yIG5lYXIgIigi CitMSU5FIDE6IFNFTEVDVCBKU09OX1RBQkxFKCdbXScsICckJyk7CisgICAgICAgICAgICAgICAg ICAgICAgICAgXgorLS0gU2hvdWxkIGZhaWwgKGpzb24gYXJndW1lbnQgbm90IHN1cHBvcnRlZCkK K1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRShOVUxMIEZPUk1BVCBKU09OLCAnJCcgQ09MVU1OUyAo Zm9vIHRleHQpKTsKK0VSUk9SOiAgSlNPTl9UQUJMRSgpIGlzIG5vdCB5ZXQgaW1wbGVtZW50ZWQg Zm9yIHRoZSBqc29uIHR5cGUKK0xJTkUgMTogU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKE5VTEwg Rk9STUFUIEpTT04sICckJyBDT0xVTU5TIChmb28gLi4uCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBeCitISU5UOiAgVHJ5IGNhc3RpbmcgdGhlIGFyZ3VtZW50IHRvIGpzb25iCist LSBTaG91bGQgZmFpbCAobm8gY29sdW1ucykKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRShOVUxM LCAnJCcgQ09MVU1OUyAoKSk7CitFUlJPUjogIHN5bnRheCBlcnJvciBhdCBvciBuZWFyICIpIgor TElORSAxOiBTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoTlVMTCwgJyQnIENPTFVNTlMgKCkpOwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK1NF TEVDVCAqIEZST00gSlNPTl9UQUJMRSAoTlVMTDo6anNvbmIsICckJyBDT0xVTU5TICh2MSB0aW1l c3RhbXApKSBBUyBmICh2MSwgdjIpOworRVJST1I6ICBKU09OX1RBQkxFIGZ1bmN0aW9uIGhhcyAx IGNvbHVtbnMgYXZhaWxhYmxlIGJ1dCAyIGNvbHVtbnMgc3BlY2lmaWVkCistLSBOVUxMID0+IGVt cHR5IHRhYmxlCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoTlVMTDo6anNvbmIsICckJyBDT0xV TU5TIChmb28gaW50KSkgYmFyOworIGZvbyAKKy0tLS0tCisoMCByb3dzKQorCistLQorU0VMRUNU ICogRlJPTSBKU09OX1RBQkxFKGpzb25iICcxMjMnLCAnJCcKKwlDT0xVTU5TIChpdGVtIGludCBQ QVRIICckJywgZm9vIGludCkpIGJhcjsKKyBpdGVtIHwgZm9vIAorLS0tLS0tKy0tLS0tCisgIDEy MyB8ICAgIAorKDEgcm93KQorCistLSBKU09OX1RBQkxFOiBiYXNpYyBmdW5jdGlvbmFsaXR5CitD UkVBVEUgRE9NQUlOIGpzb25iX3Rlc3RfZG9tYWluIEFTIHRleHQgQ0hFQ0sgKHZhbHVlIDw+ICdm b28nKTsKK0NSRUFURSBURU1QIFRBQkxFIGpzb25fdGFibGVfdGVzdCAoanMpIEFTCisJKFZBTFVF UworCQkoJzEnKSwKKwkJKCdbXScpLAorCQkoJ3t9JyksCisJCSgnWzEsIDEuMjMsICIyIiwgImFh YWFhYWEiLCAiZm9vIiwgbnVsbCwgZmFsc2UsIHRydWUsIHsiYWFhIjogMTIzfSwgIlsxLDJdIiwg Ilwic3RyXCIiXScpCisJKTsKKy0tIFJlZ3VsYXIgInVuZm9ybWF0dGVkIiBjb2x1bW5zCitTRUxF Q1QgKgorRlJPTSBqc29uX3RhYmxlX3Rlc3QgdmFscworCUxFRlQgT1VURVIgSk9JTgorCUpTT05f VEFCTEUoCisJCXZhbHMuanM6Ompzb25iLCAnbGF4ICRbKl0nCisJCUNPTFVNTlMgKAorCQkJaWQg Rk9SIE9SRElOQUxJVFksCisJCQkiaW50IiBpbnQgUEFUSCAnJCcsCisJCQkidGV4dCIgdGV4dCBQ QVRIICckJywKKwkJCSJjaGFyKDQpIiBjaGFyKDQpIFBBVEggJyQnLAorCQkJImJvb2wiIGJvb2wg UEFUSCAnJCcsCisJCQkibnVtZXJpYyIgbnVtZXJpYyBQQVRIICckJywKKwkJCSJkb21haW4iIGpz b25iX3Rlc3RfZG9tYWluIFBBVEggJyQnLAorCQkJanMganNvbiBQQVRIICckJywKKwkJCWpiIGpz b25iIFBBVEggJyQnCisJCSkKKwkpIGp0CisJT04gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGpzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgaWQgfCBpbnQgfCAgdGV4dCAgIHwgY2hhcig0KSB8IGJvb2wgfCBudW1lcmlj IHwgZG9tYWluICB8ICAgICAganMgICAgICB8ICAgICAgamIgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tKy0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0KKyAxICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgIDEgfCAgIDEgfCAxICAgICAgIHwgMSAgICAgICB8ICAg ICAgfCAgICAgICAxIHwgMSAgICAgICB8IDEgICAgICAgICAgICB8IDEKKyBbXSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgICAgfCAgICAgfCAgICAgICAgIHwgICAgICAgICB8ICAgICAgfCAg ICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICB8IAorIHt9ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgMSB8ICAgICB8ICAgICAgICAgfCAgICAgICAgIHwgICAgICB8ICAgICAgICAg fCAgICAgICAgIHwge30gICAgICAgICAgIHwge30KKyBbMSwgMS4yMywgIjIiLCAiYWFhYWFhYSIs ICJmb28iLCBudWxsLCBmYWxzZSwgdHJ1ZSwgeyJhYWEiOiAxMjN9LCAiWzEsMl0iLCAiXCJzdHJc IiJdIHwgIDEgfCAgIDEgfCAxICAgICAgIHwgMSAgICAgICB8ICAgICAgfCAgICAgICAxIHwgMSAg ICAgICB8IDEgICAgICAgICAgICB8IDEKKyBbMSwgMS4yMywgIjIiLCAiYWFhYWFhYSIsICJmb28i LCBudWxsLCBmYWxzZSwgdHJ1ZSwgeyJhYWEiOiAxMjN9LCAiWzEsMl0iLCAiXCJzdHJcIiJdIHwg IDIgfCAgIDEgfCAxLjIzICAgIHwgMS4yMyAgICB8ICAgICAgfCAgICAxLjIzIHwgMS4yMyAgICB8 IDEuMjMgICAgICAgICB8IDEuMjMKKyBbMSwgMS4yMywgIjIiLCAiYWFhYWFhYSIsICJmb28iLCBu dWxsLCBmYWxzZSwgdHJ1ZSwgeyJhYWEiOiAxMjN9LCAiWzEsMl0iLCAiXCJzdHJcIiJdIHwgIDMg fCAgIDIgfCAyICAgICAgIHwgMiAgICAgICB8ICAgICAgfCAgICAgICAyIHwgMiAgICAgICB8ICIy IiAgICAgICAgICB8ICIyIgorIFsxLCAxLjIzLCAiMiIsICJhYWFhYWFhIiwgImZvbyIsIG51bGws IGZhbHNlLCB0cnVlLCB7ImFhYSI6IDEyM30sICJbMSwyXSIsICJcInN0clwiIl0gfCAgNCB8ICAg ICB8IGFhYWFhYWEgfCBhYWFhICAgIHwgICAgICB8ICAgICAgICAgfCBhYWFhYWFhIHwgImFhYWFh YWEiICAgIHwgImFhYWFhYWEiCisgWzEsIDEuMjMsICIyIiwgImFhYWFhYWEiLCAiZm9vIiwgbnVs bCwgZmFsc2UsIHRydWUsIHsiYWFhIjogMTIzfSwgIlsxLDJdIiwgIlwic3RyXCIiXSB8ICA1IHwg ICAgIHwgZm9vICAgICB8IGZvbyAgICAgfCAgICAgIHwgICAgICAgICB8ICAgICAgICAgfCAiZm9v IiAgICAgICAgfCAiZm9vIgorIFsxLCAxLjIzLCAiMiIsICJhYWFhYWFhIiwgImZvbyIsIG51bGws IGZhbHNlLCB0cnVlLCB7ImFhYSI6IDEyM30sICJbMSwyXSIsICJcInN0clwiIl0gfCAgNiB8ICAg ICB8ICAgICAgICAgfCAgICAgICAgIHwgICAgICB8ICAgICAgICAgfCAgICAgICAgIHwgbnVsbCAg ICAgICAgIHwgbnVsbAorIFsxLCAxLjIzLCAiMiIsICJhYWFhYWFhIiwgImZvbyIsIG51bGwsIGZh bHNlLCB0cnVlLCB7ImFhYSI6IDEyM30sICJbMSwyXSIsICJcInN0clwiIl0gfCAgNyB8ICAgMCB8 IGZhbHNlICAgfCBmYWxzICAgIHwgZiAgICB8ICAgICAgICAgfCBmYWxzZSAgIHwgZmFsc2UgICAg ICAgIHwgZmFsc2UKKyBbMSwgMS4yMywgIjIiLCAiYWFhYWFhYSIsICJmb28iLCBudWxsLCBmYWxz ZSwgdHJ1ZSwgeyJhYWEiOiAxMjN9LCAiWzEsMl0iLCAiXCJzdHJcIiJdIHwgIDggfCAgIDEgfCB0 cnVlICAgIHwgdHJ1ZSAgICB8IHQgICAgfCAgICAgICAgIHwgdHJ1ZSAgICB8IHRydWUgICAgICAg ICB8IHRydWUKKyBbMSwgMS4yMywgIjIiLCAiYWFhYWFhYSIsICJmb28iLCBudWxsLCBmYWxzZSwg dHJ1ZSwgeyJhYWEiOiAxMjN9LCAiWzEsMl0iLCAiXCJzdHJcIiJdIHwgIDkgfCAgICAgfCAgICAg ICAgIHwgICAgICAgICB8ICAgICAgfCAgICAgICAgIHwgICAgICAgICB8IHsiYWFhIjogMTIzfSB8 IHsiYWFhIjogMTIzfQorIFsxLCAxLjIzLCAiMiIsICJhYWFhYWFhIiwgImZvbyIsIG51bGwsIGZh bHNlLCB0cnVlLCB7ImFhYSI6IDEyM30sICJbMSwyXSIsICJcInN0clwiIl0gfCAxMCB8ICAgICB8 IFsxLDJdICAgfCBbMSwyICAgIHwgICAgICB8ICAgICAgICAgfCBbMSwyXSAgIHwgIlsxLDJdIiAg ICAgIHwgIlsxLDJdIgorIFsxLCAxLjIzLCAiMiIsICJhYWFhYWFhIiwgImZvbyIsIG51bGwsIGZh bHNlLCB0cnVlLCB7ImFhYSI6IDEyM30sICJbMSwyXSIsICJcInN0clwiIl0gfCAxMSB8ICAgICB8 ICJzdHIiICAgfCAic3RyICAgIHwgICAgICB8ICAgICAgICAgfCAic3RyIiAgIHwgIlwic3RyXCIi ICAgIHwgIlwic3RyXCIiCisoMTQgcm93cykKKworLS0gImZvcm1hdHRlZCIgY29sdW1ucworU0VM RUNUICoKK0ZST00ganNvbl90YWJsZV90ZXN0IHZhbHMKKwlMRUZUIE9VVEVSIEpPSU4KKwlKU09O X1RBQkxFKAorCQl2YWxzLmpzOjpqc29uYiwgJ2xheCAkWypdJworCQlDT0xVTU5TICgKKwkJCWlk IEZPUiBPUkRJTkFMSVRZLAorCQkJanN0IHRleHQgICAgRk9STUFUIEpTT04gIFBBVEggJyQnLAor CQkJanNjIGNoYXIoNCkgRk9STUFUIEpTT04gIFBBVEggJyQnLAorCQkJanN2IHZhcmNoYXIoNCkg Rk9STUFUIEpTT04gIFBBVEggJyQnLAorCQkJanNiIGpzb25iIEZPUk1BVCBKU09OIFBBVEggJyQn LAorCQkJanNicSBqc29uYiBGT1JNQVQgSlNPTiBQQVRIICckJyBPTUlUIFFVT1RFUworCQkpCisJ KSBqdAorCU9OIHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBqcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGlkIHwgICAg IGpzdCAgICAgIHwganNjICB8IGpzdiAgfCAgICAganNiICAgICAgfCAgICAganNicSAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0r LS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tCisgMSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAxIHwgMSAgICAgICAgICAgIHwgMSAgICB8IDEgICAgfCAxICAgICAgICAg ICAgfCAxCisgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIHwgICAgICAgICAgICAg IHwgICAgICB8ICAgICAgfCAgICAgICAgICAgICAgfCAKKyB7fSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgIDEgfCB7fSAgICAgICAgICAgfCB7fSAgIHwge30gICB8IHt9ICAgICAgICAgICB8 IHt9CisgWzEsIDEuMjMsICIyIiwgImFhYWFhYWEiLCAiZm9vIiwgbnVsbCwgZmFsc2UsIHRydWUs IHsiYWFhIjogMTIzfSwgIlsxLDJdIiwgIlwic3RyXCIiXSB8ICAxIHwgMSAgICAgICAgICAgIHwg MSAgICB8IDEgICAgfCAxICAgICAgICAgICAgfCAxCisgWzEsIDEuMjMsICIyIiwgImFhYWFhYWEi LCAiZm9vIiwgbnVsbCwgZmFsc2UsIHRydWUsIHsiYWFhIjogMTIzfSwgIlsxLDJdIiwgIlwic3Ry XCIiXSB8ICAyIHwgMS4yMyAgICAgICAgIHwgMS4yMyB8IDEuMjMgfCAxLjIzICAgICAgICAgfCAx LjIzCisgWzEsIDEuMjMsICIyIiwgImFhYWFhYWEiLCAiZm9vIiwgbnVsbCwgZmFsc2UsIHRydWUs IHsiYWFhIjogMTIzfSwgIlsxLDJdIiwgIlwic3RyXCIiXSB8ICAzIHwgIjIiICAgICAgICAgIHwg IjIiICB8ICIyIiAgfCAiMiIgICAgICAgICAgfCAyCisgWzEsIDEuMjMsICIyIiwgImFhYWFhYWEi LCAiZm9vIiwgbnVsbCwgZmFsc2UsIHRydWUsIHsiYWFhIjogMTIzfSwgIlsxLDJdIiwgIlwic3Ry XCIiXSB8ICA0IHwgImFhYWFhYWEiICAgIHwgImFhYSB8ICJhYWEgfCAiYWFhYWFhYSIgICAgfCAK KyBbMSwgMS4yMywgIjIiLCAiYWFhYWFhYSIsICJmb28iLCBudWxsLCBmYWxzZSwgdHJ1ZSwgeyJh YWEiOiAxMjN9LCAiWzEsMl0iLCAiXCJzdHJcIiJdIHwgIDUgfCAiZm9vIiAgICAgICAgfCAiZm9v IHwgImZvbyB8ICJmb28iICAgICAgICB8IAorIFsxLCAxLjIzLCAiMiIsICJhYWFhYWFhIiwgImZv byIsIG51bGwsIGZhbHNlLCB0cnVlLCB7ImFhYSI6IDEyM30sICJbMSwyXSIsICJcInN0clwiIl0g fCAgNiB8IG51bGwgICAgICAgICB8IG51bGwgfCBudWxsIHwgbnVsbCAgICAgICAgIHwgbnVsbAor IFsxLCAxLjIzLCAiMiIsICJhYWFhYWFhIiwgImZvbyIsIG51bGwsIGZhbHNlLCB0cnVlLCB7ImFh YSI6IDEyM30sICJbMSwyXSIsICJcInN0clwiIl0gfCAgNyB8IGZhbHNlICAgICAgICB8IGZhbHMg fCBmYWxzIHwgZmFsc2UgICAgICAgIHwgZmFsc2UKKyBbMSwgMS4yMywgIjIiLCAiYWFhYWFhYSIs ICJmb28iLCBudWxsLCBmYWxzZSwgdHJ1ZSwgeyJhYWEiOiAxMjN9LCAiWzEsMl0iLCAiXCJzdHJc IiJdIHwgIDggfCB0cnVlICAgICAgICAgfCB0cnVlIHwgdHJ1ZSB8IHRydWUgICAgICAgICB8IHRy dWUKKyBbMSwgMS4yMywgIjIiLCAiYWFhYWFhYSIsICJmb28iLCBudWxsLCBmYWxzZSwgdHJ1ZSwg eyJhYWEiOiAxMjN9LCAiWzEsMl0iLCAiXCJzdHJcIiJdIHwgIDkgfCB7ImFhYSI6IDEyM30gfCB7 ImFhIHwgeyJhYSB8IHsiYWFhIjogMTIzfSB8IHsiYWFhIjogMTIzfQorIFsxLCAxLjIzLCAiMiIs ICJhYWFhYWFhIiwgImZvbyIsIG51bGwsIGZhbHNlLCB0cnVlLCB7ImFhYSI6IDEyM30sICJbMSwy XSIsICJcInN0clwiIl0gfCAxMCB8ICJbMSwyXSIgICAgICB8ICJbMSwgfCAiWzEsIHwgIlsxLDJd IiAgICAgIHwgWzEsIDJdCisgWzEsIDEuMjMsICIyIiwgImFhYWFhYWEiLCAiZm9vIiwgbnVsbCwg ZmFsc2UsIHRydWUsIHsiYWFhIjogMTIzfSwgIlsxLDJdIiwgIlwic3RyXCIiXSB8IDExIHwgIlwi c3RyXCIiICAgIHwgIlwicyB8ICJcInMgfCAiXCJzdHJcIiIgICAgfCAic3RyIgorKDE0IHJvd3Mp CisKKy0tIEVYSVNUUyBjb2x1bW5zCitTRUxFQ1QgKgorRlJPTSBqc29uX3RhYmxlX3Rlc3QgdmFs cworCUxFRlQgT1VURVIgSk9JTgorCUpTT05fVEFCTEUoCisJCXZhbHMuanM6Ompzb25iLCAnbGF4 ICRbKl0nCisJCUNPTFVNTlMgKAorCQkJaWQgRk9SIE9SRElOQUxJVFksCisJCQlleGlzdHMxIGJv b2wgRVhJU1RTIFBBVEggJyQuYWFhJywKKwkJCWV4aXN0czIgaW50IEVYSVNUUyBQQVRIICckLmFh YScsCisJCQlleGlzdHMzIGludCBFWElTVFMgUEFUSCAnc3RyaWN0ICQuYWFhJyBVTktOT1dOIE9O IEVSUk9SLAorCQkJZXhpc3RzNCB0ZXh0IEVYSVNUUyBQQVRIICdzdHJpY3QgJC5hYWEnIEZBTFNF IE9OIEVSUk9SCisJCSkKKwkpIGp0CisJT04gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGpzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgaWQgfCBleGlzdHMxIHwgZXhpc3RzMiB8IGV4aXN0czMgfCBleGlzdHM0IAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tCisgMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxIHwgZiAg ICAgICB8ICAgICAgIDAgfCAgICAgICAgIHwgZmFsc2UKKyBbXSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgICAgfCAgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgfCAKKyB7fSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgIDEgfCBmICAgICAgIHwgICAgICAgMCB8ICAgICAgICAgfCBm YWxzZQorIFsxLCAxLjIzLCAiMiIsICJhYWFhYWFhIiwgImZvbyIsIG51bGwsIGZhbHNlLCB0cnVl LCB7ImFhYSI6IDEyM30sICJbMSwyXSIsICJcInN0clwiIl0gfCAgMSB8IGYgICAgICAgfCAgICAg ICAwIHwgICAgICAgICB8IGZhbHNlCisgWzEsIDEuMjMsICIyIiwgImFhYWFhYWEiLCAiZm9vIiwg bnVsbCwgZmFsc2UsIHRydWUsIHsiYWFhIjogMTIzfSwgIlsxLDJdIiwgIlwic3RyXCIiXSB8ICAy IHwgZiAgICAgICB8ICAgICAgIDAgfCAgICAgICAgIHwgZmFsc2UKKyBbMSwgMS4yMywgIjIiLCAi YWFhYWFhYSIsICJmb28iLCBudWxsLCBmYWxzZSwgdHJ1ZSwgeyJhYWEiOiAxMjN9LCAiWzEsMl0i LCAiXCJzdHJcIiJdIHwgIDMgfCBmICAgICAgIHwgICAgICAgMCB8ICAgICAgICAgfCBmYWxzZQor IFsxLCAxLjIzLCAiMiIsICJhYWFhYWFhIiwgImZvbyIsIG51bGwsIGZhbHNlLCB0cnVlLCB7ImFh YSI6IDEyM30sICJbMSwyXSIsICJcInN0clwiIl0gfCAgNCB8IGYgICAgICAgfCAgICAgICAwIHwg ICAgICAgICB8IGZhbHNlCisgWzEsIDEuMjMsICIyIiwgImFhYWFhYWEiLCAiZm9vIiwgbnVsbCwg ZmFsc2UsIHRydWUsIHsiYWFhIjogMTIzfSwgIlsxLDJdIiwgIlwic3RyXCIiXSB8ICA1IHwgZiAg ICAgICB8ICAgICAgIDAgfCAgICAgICAgIHwgZmFsc2UKKyBbMSwgMS4yMywgIjIiLCAiYWFhYWFh YSIsICJmb28iLCBudWxsLCBmYWxzZSwgdHJ1ZSwgeyJhYWEiOiAxMjN9LCAiWzEsMl0iLCAiXCJz dHJcIiJdIHwgIDYgfCBmICAgICAgIHwgICAgICAgMCB8ICAgICAgICAgfCBmYWxzZQorIFsxLCAx LjIzLCAiMiIsICJhYWFhYWFhIiwgImZvbyIsIG51bGwsIGZhbHNlLCB0cnVlLCB7ImFhYSI6IDEy M30sICJbMSwyXSIsICJcInN0clwiIl0gfCAgNyB8IGYgICAgICAgfCAgICAgICAwIHwgICAgICAg ICB8IGZhbHNlCisgWzEsIDEuMjMsICIyIiwgImFhYWFhYWEiLCAiZm9vIiwgbnVsbCwgZmFsc2Us IHRydWUsIHsiYWFhIjogMTIzfSwgIlsxLDJdIiwgIlwic3RyXCIiXSB8ICA4IHwgZiAgICAgICB8 ICAgICAgIDAgfCAgICAgICAgIHwgZmFsc2UKKyBbMSwgMS4yMywgIjIiLCAiYWFhYWFhYSIsICJm b28iLCBudWxsLCBmYWxzZSwgdHJ1ZSwgeyJhYWEiOiAxMjN9LCAiWzEsMl0iLCAiXCJzdHJcIiJd IHwgIDkgfCB0ICAgICAgIHwgICAgICAgMSB8ICAgICAgIDEgfCB0cnVlCisgWzEsIDEuMjMsICIy IiwgImFhYWFhYWEiLCAiZm9vIiwgbnVsbCwgZmFsc2UsIHRydWUsIHsiYWFhIjogMTIzfSwgIlsx LDJdIiwgIlwic3RyXCIiXSB8IDEwIHwgZiAgICAgICB8ICAgICAgIDAgfCAgICAgICAgIHwgZmFs c2UKKyBbMSwgMS4yMywgIjIiLCAiYWFhYWFhYSIsICJmb28iLCBudWxsLCBmYWxzZSwgdHJ1ZSwg eyJhYWEiOiAxMjN9LCAiWzEsMl0iLCAiXCJzdHJcIiJdIHwgMTEgfCBmICAgICAgIHwgICAgICAg MCB8ICAgICAgICAgfCBmYWxzZQorKDE0IHJvd3MpCisKKy0tIE90aGVyIG1pc2NlbGxhbm91cyBj aGVja3MKK1NFTEVDVCAqCitGUk9NIGpzb25fdGFibGVfdGVzdCB2YWxzCisJTEVGVCBPVVRFUiBK T0lOCisJSlNPTl9UQUJMRSgKKwkJdmFscy5qczo6anNvbmIsICdsYXggJFsqXScKKwkJQ09MVU1O UyAoCisJCQlpZCBGT1IgT1JESU5BTElUWSwKKwkJCWFhYSBpbnQsIC0tICJhYWEiIGhhcyBpbXBs aWNpdCBwYXRoICckLiJhYWEiJworCQkJYWFhMSBpbnQgUEFUSCAnJC5hYWEnLAorCQkJanMyIGpz b24gUEFUSCAnJCcsCisJCQlqc2IydyBqc29uYiBQQVRIICckJyBXSVRIIFdSQVBQRVIsCisJCQlq c2IycSBqc29uYiBQQVRIICckJyBPTUlUIFFVT1RFUywKKwkJCWlhIGludFtdIFBBVEggJyQnLAor CQkJdGEgdGV4dFtdIFBBVEggJyQnLAorCQkJamJhIGpzb25iW10gUEFUSCAnJCcKKwkJKQorCSkg anQKKwlPTiB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg anMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpZCB8IGFhYSB8 IGFhYTEgfCAgICAganMyICAgICAgfCAgICAganNiMncgICAgICB8ICAgIGpzYjJxICAgICB8IGlh IHwgdGEgfCBqYmEgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLSstLS0tLSst LS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0t Ky0tLS0rLS0tLS0KKyAxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEgfCAgICAgfCAg ICAgIHwgMSAgICAgICAgICAgIHwgWzFdICAgICAgICAgICAgfCAxICAgICAgICAgICAgfCAgICB8 ICAgIHwgCisgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIHwgICAgIHwgICAgICB8 ICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgfCAgICB8 IAorIHt9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMSB8ICAgICB8ICAgICAgfCB7fSAg ICAgICAgICAgfCBbe31dICAgICAgICAgICB8IHt9ICAgICAgICAgICB8ICAgIHwgICAgfCAKKyBb MSwgMS4yMywgIjIiLCAiYWFhYWFhYSIsICJmb28iLCBudWxsLCBmYWxzZSwgdHJ1ZSwgeyJhYWEi OiAxMjN9LCAiWzEsMl0iLCAiXCJzdHJcIiJdIHwgIDEgfCAgICAgfCAgICAgIHwgMSAgICAgICAg ICAgIHwgWzFdICAgICAgICAgICAgfCAxICAgICAgICAgICAgfCAgICB8ICAgIHwgCisgWzEsIDEu MjMsICIyIiwgImFhYWFhYWEiLCAiZm9vIiwgbnVsbCwgZmFsc2UsIHRydWUsIHsiYWFhIjogMTIz fSwgIlsxLDJdIiwgIlwic3RyXCIiXSB8ICAyIHwgICAgIHwgICAgICB8IDEuMjMgICAgICAgICB8 IFsxLjIzXSAgICAgICAgIHwgMS4yMyAgICAgICAgIHwgICAgfCAgICB8IAorIFsxLCAxLjIzLCAi MiIsICJhYWFhYWFhIiwgImZvbyIsIG51bGwsIGZhbHNlLCB0cnVlLCB7ImFhYSI6IDEyM30sICJb MSwyXSIsICJcInN0clwiIl0gfCAgMyB8ICAgICB8ICAgICAgfCAiMiIgICAgICAgICAgfCBbIjIi XSAgICAgICAgICB8IDIgICAgICAgICAgICB8ICAgIHwgICAgfCAKKyBbMSwgMS4yMywgIjIiLCAi YWFhYWFhYSIsICJmb28iLCBudWxsLCBmYWxzZSwgdHJ1ZSwgeyJhYWEiOiAxMjN9LCAiWzEsMl0i LCAiXCJzdHJcIiJdIHwgIDQgfCAgICAgfCAgICAgIHwgImFhYWFhYWEiICAgIHwgWyJhYWFhYWFh Il0gICAgfCAgICAgICAgICAgICAgfCAgICB8ICAgIHwgCisgWzEsIDEuMjMsICIyIiwgImFhYWFh YWEiLCAiZm9vIiwgbnVsbCwgZmFsc2UsIHRydWUsIHsiYWFhIjogMTIzfSwgIlsxLDJdIiwgIlwi c3RyXCIiXSB8ICA1IHwgICAgIHwgICAgICB8ICJmb28iICAgICAgICB8IFsiZm9vIl0gICAgICAg IHwgICAgICAgICAgICAgIHwgICAgfCAgICB8IAorIFsxLCAxLjIzLCAiMiIsICJhYWFhYWFhIiwg ImZvbyIsIG51bGwsIGZhbHNlLCB0cnVlLCB7ImFhYSI6IDEyM30sICJbMSwyXSIsICJcInN0clwi Il0gfCAgNiB8ICAgICB8ICAgICAgfCBudWxsICAgICAgICAgfCBbbnVsbF0gICAgICAgICB8IG51 bGwgICAgICAgICB8ICAgIHwgICAgfCAKKyBbMSwgMS4yMywgIjIiLCAiYWFhYWFhYSIsICJmb28i LCBudWxsLCBmYWxzZSwgdHJ1ZSwgeyJhYWEiOiAxMjN9LCAiWzEsMl0iLCAiXCJzdHJcIiJdIHwg IDcgfCAgICAgfCAgICAgIHwgZmFsc2UgICAgICAgIHwgW2ZhbHNlXSAgICAgICAgfCBmYWxzZSAg ICAgICAgfCAgICB8ICAgIHwgCisgWzEsIDEuMjMsICIyIiwgImFhYWFhYWEiLCAiZm9vIiwgbnVs bCwgZmFsc2UsIHRydWUsIHsiYWFhIjogMTIzfSwgIlsxLDJdIiwgIlwic3RyXCIiXSB8ICA4IHwg ICAgIHwgICAgICB8IHRydWUgICAgICAgICB8IFt0cnVlXSAgICAgICAgIHwgdHJ1ZSAgICAgICAg IHwgICAgfCAgICB8IAorIFsxLCAxLjIzLCAiMiIsICJhYWFhYWFhIiwgImZvbyIsIG51bGwsIGZh bHNlLCB0cnVlLCB7ImFhYSI6IDEyM30sICJbMSwyXSIsICJcInN0clwiIl0gfCAgOSB8IDEyMyB8 ICAxMjMgfCB7ImFhYSI6IDEyM30gfCBbeyJhYWEiOiAxMjN9XSB8IHsiYWFhIjogMTIzfSB8ICAg IHwgICAgfCAKKyBbMSwgMS4yMywgIjIiLCAiYWFhYWFhYSIsICJmb28iLCBudWxsLCBmYWxzZSwg dHJ1ZSwgeyJhYWEiOiAxMjN9LCAiWzEsMl0iLCAiXCJzdHJcIiJdIHwgMTAgfCAgICAgfCAgICAg IHwgIlsxLDJdIiAgICAgIHwgWyJbMSwyXSJdICAgICAgfCBbMSwgMl0gICAgICAgfCAgICB8ICAg IHwgCisgWzEsIDEuMjMsICIyIiwgImFhYWFhYWEiLCAiZm9vIiwgbnVsbCwgZmFsc2UsIHRydWUs IHsiYWFhIjogMTIzfSwgIlsxLDJdIiwgIlwic3RyXCIiXSB8IDExIHwgICAgIHwgICAgICB8ICJc InN0clwiIiAgICB8IFsiXCJzdHJcIiJdICAgIHwgInN0ciIgICAgICAgIHwgICAgfCAgICB8IAor KDE0IHJvd3MpCisKKy0tIEpTT05fVEFCTEU6IFRlc3QgYmFja3dhcmQgcGFyc2luZworQ1JFQVRF IFZJRVcganNvbmJfdGFibGVfdmlldzEgQVMKK1NFTEVDVCAqIEZST00KKwlKU09OX1RBQkxFKAor CQlqc29uYiAnbnVsbCcsICdsYXggJFsqXScgUEFTU0lORyAxICsgMiBBUyBhLCBqc29uICciZm9v IicgQVMgImIgYyIKKwkJQ09MVU1OUyAoCisJCQlpZCBGT1IgT1JESU5BTElUWSwKKwkJCU5FU1RF RCBQQVRIICckWzFdJyBBUyBwMSBDT0xVTU5TICgKKwkJCQlhMSBpbnQsCisJCQkJTkVTVEVEIFBB VEggJyRbKl0nIEFTICJwMSAxIiBDT0xVTU5TICgKKwkJCQkJYTExIHRleHQKKwkJCQkpLAorCQkJ CWIxIHRleHQKKwkJCSksCisJCQlORVNURUQgUEFUSCAnJFsyXScgQVMgcDIgQ09MVU1OUyAoCisJ CQkJTkVTVEVEIFBBVEggJyRbKl0nIEFTICJwMjoxIiBDT0xVTU5TICgKKwkJCQkJYTIxIHRleHQK KwkJCQkpLAorCQkJCU5FU1RFRCBQQVRIICckWypdJyBBUyBwMjIgQ09MVU1OUyAoCisJCQkJCWEy MiB0ZXh0CisJCQkJKQorCQkJKQorCQkpCisJKTsKK0NSRUFURSBWSUVXIGpzb25iX3RhYmxlX3Zp ZXcyIEFTCitTRUxFQ1QgKiBGUk9NCisJSlNPTl9UQUJMRSgKKwkJanNvbmIgJ251bGwnLCAnbGF4 ICRbKl0nIFBBU1NJTkcgMSArIDIgQVMgYSwganNvbiAnImZvbyInIEFTICJiIGMiCisJCUNPTFVN TlMgKAorCQkJImludCIgaW50IFBBVEggJyQnLAorCQkJInRleHQiIHRleHQgUEFUSCAnJCcsCisJ CQkiY2hhcig0KSIgY2hhcig0KSBQQVRIICckJywKKwkJCSJib29sIiBib29sIFBBVEggJyQnLAor CQkJIm51bWVyaWMiIG51bWVyaWMgUEFUSCAnJCcsCisJCQkiZG9tYWluIiBqc29uYl90ZXN0X2Rv bWFpbiBQQVRIICckJykpOworQ1JFQVRFIFZJRVcganNvbmJfdGFibGVfdmlldzMgQVMKK1NFTEVD VCAqIEZST00KKwlKU09OX1RBQkxFKAorCQlqc29uYiAnbnVsbCcsICdsYXggJFsqXScgUEFTU0lO RyAxICsgMiBBUyBhLCBqc29uICciZm9vIicgQVMgImIgYyIKKwkJQ09MVU1OUyAoCisJCQlqcyBq c29uIFBBVEggJyQnLAorCQkJamIganNvbmIgUEFUSCAnJCcsCisJCQlqc3QgdGV4dCAgICBGT1JN QVQgSlNPTiAgUEFUSCAnJCcsCisJCQlqc2MgY2hhcig0KSBGT1JNQVQgSlNPTiAgUEFUSCAnJCcs CisJCQlqc3YgdmFyY2hhcig0KSBGT1JNQVQgSlNPTiAgUEFUSCAnJCcpKTsKK0NSRUFURSBWSUVX IGpzb25iX3RhYmxlX3ZpZXc0IEFTCitTRUxFQ1QgKiBGUk9NCisJSlNPTl9UQUJMRSgKKwkJanNv bmIgJ251bGwnLCAnbGF4ICRbKl0nIFBBU1NJTkcgMSArIDIgQVMgYSwganNvbiAnImZvbyInIEFT ICJiIGMiCisJCUNPTFVNTlMgKAorICAgICAgICAgICAganNiIGpzb25iICAgRk9STUFUIEpTT04g UEFUSCAnJCcsCisgICAgICAgICAgICBqc2JxIGpzb25iIEZPUk1BVCBKU09OIFBBVEggJyQnIE9N SVQgUVVPVEVTLAorICAgICAgICAgICAgYWFhIGludCwgLS0gaW1wbGljaXQgcGF0aCAnJC4iYWFh IicsCisgICAgICAgICAgICBhYWExIGludCBQQVRIICckLmFhYScpKTsKK0NSRUFURSBWSUVXIGpz b25iX3RhYmxlX3ZpZXc1IEFTCitTRUxFQ1QgKiBGUk9NCisJSlNPTl9UQUJMRSgKKwkJanNvbmIg J251bGwnLCAnbGF4ICRbKl0nIFBBU1NJTkcgMSArIDIgQVMgYSwganNvbiAnImZvbyInIEFTICJi IGMiCisJCUNPTFVNTlMgKAorCQkJZXhpc3RzMSBib29sIEVYSVNUUyBQQVRIICckLmFhYScsCisJ CQlleGlzdHMyIGludCBFWElTVFMgUEFUSCAnJC5hYWEnIFRSVUUgT04gRVJST1IsCisJCQlleGlz dHMzIHRleHQgRVhJU1RTIFBBVEggJ3N0cmljdCAkLmFhYScgVU5LTk9XTiBPTiBFUlJPUikpOwor Q1JFQVRFIFZJRVcganNvbmJfdGFibGVfdmlldzYgQVMKK1NFTEVDVCAqIEZST00KKwlKU09OX1RB QkxFKAorCQlqc29uYiAnbnVsbCcsICdsYXggJFsqXScgUEFTU0lORyAxICsgMiBBUyBhLCBqc29u ICciZm9vIicgQVMgImIgYyIKKwkJQ09MVU1OUyAoCisJCQlqczIganNvbiBQQVRIICckJywKKwkJ CWpzYjJ3IGpzb25iIFBBVEggJyQnIFdJVEggV1JBUFBFUiwKKwkJCWpzYjJxIGpzb25iIFBBVEgg JyQnIE9NSVQgUVVPVEVTLAorCQkJaWEgaW50W10gUEFUSCAnJCcsCisJCQl0YSB0ZXh0W10gUEFU SCAnJCcsCisJCQlqYmEganNvbmJbXSBQQVRIICckJykpOworXHN2IGpzb25iX3RhYmxlX3ZpZXcx CitDUkVBVEUgT1IgUkVQTEFDRSBWSUVXIHB1YmxpYy5qc29uYl90YWJsZV92aWV3MSBBUworIFNF TEVDVCBpZCwKKyAgICBhMSwKKyAgICBiMSwKKyAgICBhMTEsCisgICAgYTIxLAorICAgIGEyMgor ICAgRlJPTSBKU09OX1RBQkxFKAorICAgICAgICAgICAgJ251bGwnOjpqc29uYiwgJyRbKl0nIEFT IGpzb25fdGFibGVfcGF0aF8wCisgICAgICAgICAgICBQQVNTSU5HCisgICAgICAgICAgICAgICAg MSArIDIgQVMgYSwKKyAgICAgICAgICAgICAgICAnImZvbyInOjpqc29uIEFTICJiIGMiCisgICAg ICAgICAgICBDT0xVTU5TICgKKyAgICAgICAgICAgICAgICBpZCBGT1IgT1JESU5BTElUWSwKKyAg ICAgICAgICAgICAgICBORVNURUQgUEFUSCAnJFsxXScgQVMgcDEKKyAgICAgICAgICAgICAgICBD T0xVTU5TICgKKyAgICAgICAgICAgICAgICAgICAgYTEgaW50ZWdlciBQQVRIICckLiJhMSInLAor ICAgICAgICAgICAgICAgICAgICBiMSB0ZXh0IFBBVEggJyQuImIxIicsCisgICAgICAgICAgICAg ICAgICAgIE5FU1RFRCBQQVRIICckWypdJyBBUyAicDEgMSIKKyAgICAgICAgICAgICAgICAgICAg Q09MVU1OUyAoCisgICAgICAgICAgICAgICAgICAgICAgICBhMTEgdGV4dCBQQVRIICckLiJhMTEi JworICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAg ICAgICBORVNURUQgUEFUSCAnJFsyXScgQVMgcDIKKyAgICAgICAgICAgICAgICBDT0xVTU5TICgK KyAgICAgICAgICAgICAgICAgICAgTkVTVEVEIFBBVEggJyRbKl0nIEFTICJwMjoxIgorICAgICAg ICAgICAgICAgICAgICBDT0xVTU5TICgKKyAgICAgICAgICAgICAgICAgICAgICAgIGEyMSB0ZXh0 IFBBVEggJyQuImEyMSInCisgICAgICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAg ICAgIE5FU1RFRCBQQVRIICckWypdJyBBUyBwMjIKKyAgICAgICAgICAgICAgICAgICAgQ09MVU1O UyAoCisgICAgICAgICAgICAgICAgICAgICAgICBhMjIgdGV4dCBQQVRIICckLiJhMjIiJworICAg ICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKQorICAg ICAgICAgICAgUExBTiAoanNvbl90YWJsZV9wYXRoXzAgT1VURVIgKChwMSBPVVRFUiAicDEgMSIp IFVOSU9OIChwMiBPVVRFUiAoInAyOjEiIFVOSU9OIHAyMikpKSkKKyAgICAgICAgKQorXHN2IGpz b25iX3RhYmxlX3ZpZXcyCitDUkVBVEUgT1IgUkVQTEFDRSBWSUVXIHB1YmxpYy5qc29uYl90YWJs ZV92aWV3MiBBUworIFNFTEVDVCAiaW50IiwKKyAgICB0ZXh0LAorICAgICJjaGFyKDQpIiwKKyAg ICBib29sLAorICAgICJudW1lcmljIiwKKyAgICBkb21haW4KKyAgIEZST00gSlNPTl9UQUJMRSgK KyAgICAgICAgICAgICdudWxsJzo6anNvbmIsICckWypdJyBBUyBqc29uX3RhYmxlX3BhdGhfMAor ICAgICAgICAgICAgUEFTU0lORworICAgICAgICAgICAgICAgIDEgKyAyIEFTIGEsCisgICAgICAg ICAgICAgICAgJyJmb28iJzo6anNvbiBBUyAiYiBjIgorICAgICAgICAgICAgQ09MVU1OUyAoCisg ICAgICAgICAgICAgICAgImludCIgaW50ZWdlciBQQVRIICckJywKKyAgICAgICAgICAgICAgICB0 ZXh0IHRleHQgUEFUSCAnJCcsCisgICAgICAgICAgICAgICAgImNoYXIoNCkiIGNoYXJhY3Rlcig0 KSBQQVRIICckJywKKyAgICAgICAgICAgICAgICBib29sIGJvb2xlYW4gUEFUSCAnJCcsCisgICAg ICAgICAgICAgICAgIm51bWVyaWMiIG51bWVyaWMgUEFUSCAnJCcsCisgICAgICAgICAgICAgICAg ZG9tYWluIGpzb25iX3Rlc3RfZG9tYWluIFBBVEggJyQnCisgICAgICAgICAgICApCisgICAgICAg ICAgICBQTEFOIChqc29uX3RhYmxlX3BhdGhfMCkKKyAgICAgICAgKQorXHN2IGpzb25iX3RhYmxl X3ZpZXczCitDUkVBVEUgT1IgUkVQTEFDRSBWSUVXIHB1YmxpYy5qc29uYl90YWJsZV92aWV3MyBB UworIFNFTEVDVCBqcywKKyAgICBqYiwKKyAgICBqc3QsCisgICAganNjLAorICAgIGpzdgorICAg RlJPTSBKU09OX1RBQkxFKAorICAgICAgICAgICAgJ251bGwnOjpqc29uYiwgJyRbKl0nIEFTIGpz b25fdGFibGVfcGF0aF8wCisgICAgICAgICAgICBQQVNTSU5HCisgICAgICAgICAgICAgICAgMSAr IDIgQVMgYSwKKyAgICAgICAgICAgICAgICAnImZvbyInOjpqc29uIEFTICJiIGMiCisgICAgICAg ICAgICBDT0xVTU5TICgKKyAgICAgICAgICAgICAgICBqcyBqc29uIFBBVEggJyQnLAorICAgICAg ICAgICAgICAgIGpiIGpzb25iIFBBVEggJyQnLAorICAgICAgICAgICAgICAgIGpzdCB0ZXh0IEZP Uk1BVCBKU09OIFBBVEggJyQnLAorICAgICAgICAgICAgICAgIGpzYyBjaGFyYWN0ZXIoNCkgRk9S TUFUIEpTT04gUEFUSCAnJCcsCisgICAgICAgICAgICAgICAganN2IGNoYXJhY3RlciB2YXJ5aW5n KDQpIEZPUk1BVCBKU09OIFBBVEggJyQnCisgICAgICAgICAgICApCisgICAgICAgICAgICBQTEFO IChqc29uX3RhYmxlX3BhdGhfMCkKKyAgICAgICAgKQorXHN2IGpzb25iX3RhYmxlX3ZpZXc0CitD UkVBVEUgT1IgUkVQTEFDRSBWSUVXIHB1YmxpYy5qc29uYl90YWJsZV92aWV3NCBBUworIFNFTEVD VCBqc2IsCisgICAganNicSwKKyAgICBhYWEsCisgICAgYWFhMQorICAgRlJPTSBKU09OX1RBQkxF KAorICAgICAgICAgICAgJ251bGwnOjpqc29uYiwgJyRbKl0nIEFTIGpzb25fdGFibGVfcGF0aF8w CisgICAgICAgICAgICBQQVNTSU5HCisgICAgICAgICAgICAgICAgMSArIDIgQVMgYSwKKyAgICAg ICAgICAgICAgICAnImZvbyInOjpqc29uIEFTICJiIGMiCisgICAgICAgICAgICBDT0xVTU5TICgK KyAgICAgICAgICAgICAgICBqc2IganNvbmIgUEFUSCAnJCcsCisgICAgICAgICAgICAgICAganNi cSBqc29uYiBQQVRIICckJyBPTUlUIFFVT1RFUywKKyAgICAgICAgICAgICAgICBhYWEgaW50ZWdl ciBQQVRIICckLiJhYWEiJywKKyAgICAgICAgICAgICAgICBhYWExIGludGVnZXIgUEFUSCAnJC4i YWFhIicKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIFBMQU4gKGpzb25fdGFibGVfcGF0aF8w KQorICAgICAgICApCitcc3YganNvbmJfdGFibGVfdmlldzUKK0NSRUFURSBPUiBSRVBMQUNFIFZJ RVcgcHVibGljLmpzb25iX3RhYmxlX3ZpZXc1IEFTCisgU0VMRUNUIGV4aXN0czEsCisgICAgZXhp c3RzMiwKKyAgICBleGlzdHMzCisgICBGUk9NIEpTT05fVEFCTEUoCisgICAgICAgICAgICAnbnVs bCc6Ompzb25iLCAnJFsqXScgQVMganNvbl90YWJsZV9wYXRoXzAKKyAgICAgICAgICAgIFBBU1NJ TkcKKyAgICAgICAgICAgICAgICAxICsgMiBBUyBhLAorICAgICAgICAgICAgICAgICciZm9vIic6 Ompzb24gQVMgImIgYyIKKyAgICAgICAgICAgIENPTFVNTlMgKAorICAgICAgICAgICAgICAgIGV4 aXN0czEgYm9vbGVhbiBFWElTVFMgUEFUSCAnJC4iYWFhIicsCisgICAgICAgICAgICAgICAgZXhp c3RzMiBpbnRlZ2VyIEVYSVNUUyBQQVRIICckLiJhYWEiJyBUUlVFIE9OIEVSUk9SLAorICAgICAg ICAgICAgICAgIGV4aXN0czMgdGV4dCBFWElTVFMgUEFUSCAnc3RyaWN0ICQuImFhYSInIFVOS05P V04gT04gRVJST1IKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIFBMQU4gKGpzb25fdGFibGVf cGF0aF8wKQorICAgICAgICApCitcc3YganNvbmJfdGFibGVfdmlldzYKK0NSRUFURSBPUiBSRVBM QUNFIFZJRVcgcHVibGljLmpzb25iX3RhYmxlX3ZpZXc2IEFTCisgU0VMRUNUIGpzMiwKKyAgICBq c2IydywKKyAgICBqc2IycSwKKyAgICBpYSwKKyAgICB0YSwKKyAgICBqYmEKKyAgIEZST00gSlNP Tl9UQUJMRSgKKyAgICAgICAgICAgICdudWxsJzo6anNvbmIsICckWypdJyBBUyBqc29uX3RhYmxl X3BhdGhfMAorICAgICAgICAgICAgUEFTU0lORworICAgICAgICAgICAgICAgIDEgKyAyIEFTIGEs CisgICAgICAgICAgICAgICAgJyJmb28iJzo6anNvbiBBUyAiYiBjIgorICAgICAgICAgICAgQ09M VU1OUyAoCisgICAgICAgICAgICAgICAganMyIGpzb24gUEFUSCAnJCcsCisgICAgICAgICAgICAg ICAganNiMncganNvbmIgUEFUSCAnJCcgV0lUSCBVTkNPTkRJVElPTkFMIFdSQVBQRVIsCisgICAg ICAgICAgICAgICAganNiMnEganNvbmIgUEFUSCAnJCcgT01JVCBRVU9URVMsCisgICAgICAgICAg ICAgICAgaWEgaW50ZWdlcltdIFBBVEggJyQnLAorICAgICAgICAgICAgICAgIHRhIHRleHRbXSBQ QVRIICckJywKKyAgICAgICAgICAgICAgICBqYmEganNvbmJbXSBQQVRIICckJworICAgICAgICAg ICAgKQorICAgICAgICAgICAgUExBTiAoanNvbl90YWJsZV9wYXRoXzApCisgICAgICAgICkKK0VY UExBSU4gKENPU1RTIE9GRiwgVkVSQk9TRSkgU0VMRUNUICogRlJPTSBqc29uYl90YWJsZV92aWV3 MTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgVGFibGUgRnVuY3Rpb24gU2NhbiBvbiAiSlNPTl9UQUJMRSIgImpzb25fdGFi bGUiCisgICBPdXRwdXQ6ICJqc29uX3RhYmxlIi5pZCwgImpzb25fdGFibGUiLmExLCAianNvbl90 YWJsZSIuYjEsICJqc29uX3RhYmxlIi5hMTEsICJqc29uX3RhYmxlIi5hMjEsICJqc29uX3RhYmxl Ii5hMjIKKyAgIFRhYmxlIEZ1bmN0aW9uIENhbGw6IEpTT05fVEFCTEUoJ251bGwnOjpqc29uYiwg JyRbKl0nIEFTIGpzb25fdGFibGVfcGF0aF8wIFBBU1NJTkcgMyBBUyBhLCAnImZvbyInOjpqc29u YiBBUyAiYiBjIiBDT0xVTU5TIChpZCBGT1IgT1JESU5BTElUWSwgTkVTVEVEIFBBVEggJyRbMV0n IEFTIHAxIENPTFVNTlMgKGExIGludGVnZXIgUEFUSCAnJC4iYTEiJywgYjEgdGV4dCBQQVRIICck LiJiMSInLCBORVNURUQgUEFUSCAnJFsqXScgQVMgInAxIDEiIENPTFVNTlMgKGExMSB0ZXh0IFBB VEggJyQuImExMSInKSksIE5FU1RFRCBQQVRIICckWzJdJyBBUyBwMiBDT0xVTU5TICggTkVTVEVE IFBBVEggJyRbKl0nIEFTICJwMjoxIiBDT0xVTU5TIChhMjEgdGV4dCBQQVRIICckLiJhMjEiJyks IE5FU1RFRCBQQVRIICckWypdJyBBUyBwMjIgQ09MVU1OUyAoYTIyIHRleHQgUEFUSCAnJC4iYTIy IicpKSkgUExBTiAoanNvbl90YWJsZV9wYXRoXzAgT1VURVIgKChwMSBPVVRFUiAicDEgMSIpIFVO SU9OIChwMiBPVVRFUiAoInAyOjEiIFVOSU9OIHAyMikpKSkpCisoMyByb3dzKQorCitFWFBMQUlO IChDT1NUUyBPRkYsIFZFUkJPU0UpIFNFTEVDVCAqIEZST00ganNvbmJfdGFibGVfdmlldzI7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgVGFibGUgRnVuY3Rpb24gU2NhbiBvbiAiSlNPTl9UQUJMRSIgImpzb25fdGFibGUi CisgICBPdXRwdXQ6ICJqc29uX3RhYmxlIi4iaW50IiwgImpzb25fdGFibGUiLnRleHQsICJqc29u X3RhYmxlIi4iY2hhcig0KSIsICJqc29uX3RhYmxlIi5ib29sLCAianNvbl90YWJsZSIuIm51bWVy aWMiLCAianNvbl90YWJsZSIuZG9tYWluCisgICBUYWJsZSBGdW5jdGlvbiBDYWxsOiBKU09OX1RB QkxFKCdudWxsJzo6anNvbmIsICckWypdJyBBUyBqc29uX3RhYmxlX3BhdGhfMCBQQVNTSU5HIDMg QVMgYSwgJyJmb28iJzo6anNvbmIgQVMgImIgYyIgQ09MVU1OUyAoImludCIgaW50ZWdlciBQQVRI ICckJywgdGV4dCB0ZXh0IFBBVEggJyQnLCAiY2hhcig0KSIgY2hhcmFjdGVyKDQpIFBBVEggJyQn LCBib29sIGJvb2xlYW4gUEFUSCAnJCcsICJudW1lcmljIiBudW1lcmljIFBBVEggJyQnLCBkb21h aW4ganNvbmJfdGVzdF9kb21haW4gUEFUSCAnJCcpIFBMQU4gKGpzb25fdGFibGVfcGF0aF8wKSkK KygzIHJvd3MpCisKK0VYUExBSU4gKENPU1RTIE9GRiwgVkVSQk9TRSkgU0VMRUNUICogRlJPTSBq c29uYl90YWJsZV92aWV3MzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVS WSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyBUYWJsZSBGdW5jdGlvbiBTY2FuIG9uICJKU09OX1RBQkxFIiAianNvbl90YWJs ZSIKKyAgIE91dHB1dDogImpzb25fdGFibGUiLmpzLCAianNvbl90YWJsZSIuamIsICJqc29uX3Rh YmxlIi5qc3QsICJqc29uX3RhYmxlIi5qc2MsICJqc29uX3RhYmxlIi5qc3YKKyAgIFRhYmxlIEZ1 bmN0aW9uIENhbGw6IEpTT05fVEFCTEUoJ251bGwnOjpqc29uYiwgJyRbKl0nIEFTIGpzb25fdGFi bGVfcGF0aF8wIFBBU1NJTkcgMyBBUyBhLCAnImZvbyInOjpqc29uYiBBUyAiYiBjIiBDT0xVTU5T IChqcyBqc29uIFBBVEggJyQnLCBqYiBqc29uYiBQQVRIICckJywganN0IHRleHQgRk9STUFUIEpT T04gUEFUSCAnJCcsIGpzYyBjaGFyYWN0ZXIoNCkgRk9STUFUIEpTT04gUEFUSCAnJCcsIGpzdiBj aGFyYWN0ZXIgdmFyeWluZyg0KSBGT1JNQVQgSlNPTiBQQVRIICckJykgUExBTiAoanNvbl90YWJs ZV9wYXRoXzApKQorKDMgcm93cykKKworRVhQTEFJTiAoQ09TVFMgT0ZGLCBWRVJCT1NFKSBTRUxF Q1QgKiBGUk9NIGpzb25iX3RhYmxlX3ZpZXc0OworICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgVGFibGUgRnVu Y3Rpb24gU2NhbiBvbiAiSlNPTl9UQUJMRSIgImpzb25fdGFibGUiCisgICBPdXRwdXQ6ICJqc29u X3RhYmxlIi5qc2IsICJqc29uX3RhYmxlIi5qc2JxLCAianNvbl90YWJsZSIuYWFhLCAianNvbl90 YWJsZSIuYWFhMQorICAgVGFibGUgRnVuY3Rpb24gQ2FsbDogSlNPTl9UQUJMRSgnbnVsbCc6Ompz b25iLCAnJFsqXScgQVMganNvbl90YWJsZV9wYXRoXzAgUEFTU0lORyAzIEFTIGEsICciZm9vIic6 Ompzb25iIEFTICJiIGMiIENPTFVNTlMgKGpzYiBqc29uYiBQQVRIICckJywganNicSBqc29uYiBQ QVRIICckJyBPTUlUIFFVT1RFUywgYWFhIGludGVnZXIgUEFUSCAnJC4iYWFhIicsIGFhYTEgaW50 ZWdlciBQQVRIICckLiJhYWEiJykgUExBTiAoanNvbl90YWJsZV9wYXRoXzApKQorKDMgcm93cykK KworRVhQTEFJTiAoQ09TVFMgT0ZGLCBWRVJCT1NFKSBTRUxFQ1QgKiBGUk9NIGpzb25iX3RhYmxl X3ZpZXc1OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgVGFi bGUgRnVuY3Rpb24gU2NhbiBvbiAiSlNPTl9UQUJMRSIgImpzb25fdGFibGUiCisgICBPdXRwdXQ6 ICJqc29uX3RhYmxlIi5leGlzdHMxLCAianNvbl90YWJsZSIuZXhpc3RzMiwgImpzb25fdGFibGUi LmV4aXN0czMKKyAgIFRhYmxlIEZ1bmN0aW9uIENhbGw6IEpTT05fVEFCTEUoJ251bGwnOjpqc29u YiwgJyRbKl0nIEFTIGpzb25fdGFibGVfcGF0aF8wIFBBU1NJTkcgMyBBUyBhLCAnImZvbyInOjpq c29uYiBBUyAiYiBjIiBDT0xVTU5TIChleGlzdHMxIGJvb2xlYW4gRVhJU1RTIFBBVEggJyQuImFh YSInLCBleGlzdHMyIGludGVnZXIgRVhJU1RTIFBBVEggJyQuImFhYSInIFRSVUUgT04gRVJST1Is IGV4aXN0czMgdGV4dCBFWElTVFMgUEFUSCAnc3RyaWN0ICQuImFhYSInIFVOS05PV04gT04gRVJS T1IpIFBMQU4gKGpzb25fdGFibGVfcGF0aF8wKSkKKygzIHJvd3MpCisKK0VYUExBSU4gKENPU1RT IE9GRiwgVkVSQk9TRSkgU0VMRUNUICogRlJPTSBqc29uYl90YWJsZV92aWV3NjsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIFRhYmxlIEZ1bmN0aW9uIFNjYW4gb24gIkpTT05fVEFCTEUiICJqc29uX3RhYmxl IgorICAgT3V0cHV0OiAianNvbl90YWJsZSIuanMyLCAianNvbl90YWJsZSIuanNiMncsICJqc29u X3RhYmxlIi5qc2IycSwgImpzb25fdGFibGUiLmlhLCAianNvbl90YWJsZSIudGEsICJqc29uX3Rh YmxlIi5qYmEKKyAgIFRhYmxlIEZ1bmN0aW9uIENhbGw6IEpTT05fVEFCTEUoJ251bGwnOjpqc29u YiwgJyRbKl0nIEFTIGpzb25fdGFibGVfcGF0aF8wIFBBU1NJTkcgMyBBUyBhLCAnImZvbyInOjpq c29uYiBBUyAiYiBjIiBDT0xVTU5TIChqczIganNvbiBQQVRIICckJywganNiMncganNvbmIgUEFU SCAnJCcgV0lUSCBVTkNPTkRJVElPTkFMIFdSQVBQRVIsIGpzYjJxIGpzb25iIFBBVEggJyQnIE9N SVQgUVVPVEVTLCBpYSBpbnRlZ2VyW10gUEFUSCAnJCcsIHRhIHRleHRbXSBQQVRIICckJywgamJh IGpzb25iW10gUEFUSCAnJCcpIFBMQU4gKGpzb25fdGFibGVfcGF0aF8wKSkKKygzIHJvd3MpCisK Ky0tIEpTT05fVEFCTEUoKSB3aXRoIGFsaWFzCitFWFBMQUlOIChDT1NUUyBPRkYsIFZFUkJPU0Up CitTRUxFQ1QgKiBGUk9NCisJSlNPTl9UQUJMRSgKKwkJanNvbmIgJ251bGwnLCAnbGF4ICRbKl0n IFBBU1NJTkcgMSArIDIgQVMgYSwganNvbiAnImZvbyInIEFTICJiIGMiCisJCUNPTFVNTlMgKAor CQkJaWQgRk9SIE9SRElOQUxJVFksCisJCQkiaW50IiBpbnQgUEFUSCAnJCcsCisJCQkidGV4dCIg dGV4dCBQQVRIICckJworCSkpIGpzb25fdGFibGVfZnVuYzsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgVGFibGUgRnVuY3Rpb24gU2NhbiBvbiAiSlNPTl9UQUJMRSIganNv bl90YWJsZV9mdW5jCisgICBPdXRwdXQ6IGlkLCAiaW50IiwgdGV4dAorICAgVGFibGUgRnVuY3Rp b24gQ2FsbDogSlNPTl9UQUJMRSgnbnVsbCc6Ompzb25iLCAnJFsqXScgQVMganNvbl90YWJsZV9w YXRoXzAgUEFTU0lORyAzIEFTIGEsICciZm9vIic6Ompzb25iIEFTICJiIGMiIENPTFVNTlMgKGlk IEZPUiBPUkRJTkFMSVRZLCAiaW50IiBpbnRlZ2VyIFBBVEggJyQnLCB0ZXh0IHRleHQgUEFUSCAn JCcpIFBMQU4gKGpzb25fdGFibGVfcGF0aF8wKSkKKygzIHJvd3MpCisKK0RST1AgVklFVyBqc29u Yl90YWJsZV92aWV3MTsKK0RST1AgVklFVyBqc29uYl90YWJsZV92aWV3MjsKK0RST1AgVklFVyBq c29uYl90YWJsZV92aWV3MzsKK0RST1AgVklFVyBqc29uYl90YWJsZV92aWV3NDsKK0RST1AgVklF VyBqc29uYl90YWJsZV92aWV3NTsKK0RST1AgVklFVyBqc29uYl90YWJsZV92aWV3NjsKK0RST1Ag RE9NQUlOIGpzb25iX3Rlc3RfZG9tYWluOworLS0gSlNPTl9UQUJMRTogb25seSBvbmUgRk9SIE9S RElOQUxJVFkgY29sdW1ucyBhbGxvd2VkCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIg JzEnLCAnJCcgQ09MVU1OUyAoaWQgRk9SIE9SRElOQUxJVFksIGlkMiBGT1IgT1JESU5BTElUWSwg YSBpbnQgUEFUSCAnJC5hJyBFUlJPUiBPTiBFTVBUWSkpIGp0OworRVJST1I6ICBjYW5ub3QgdXNl IG1vcmUgdGhhbiBvbmUgRk9SIE9SRElOQUxJVFkgY29sdW1uCitMSU5FIDE6IC4uLl9UQUJMRShq c29uYiAnMScsICckJyBDT0xVTU5TIChpZCBGT1IgT1JESU5BTElUWSwgaWQyIEZPUiBPUi4uLgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIF4KK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnMScsICckJyBDT0xVTU5TIChp ZCBGT1IgT1JESU5BTElUWSwgYSBpbnQgUEFUSCAnJCcgRVJST1IgT04gRU1QVFkpKSBqdDsKKyBp ZCB8IGEgCistLS0tKy0tLQorICAxIHwgMQorKDEgcm93KQorCistLSBKU09OX1RBQkxFOiBPTiBF TVBUWS9PTiBFUlJPUiBiZWhhdmlvcgorU0VMRUNUICoKK0ZST00KKwkoVkFMVUVTICgnMScpLCAo JyJlcnIiJykpIHZhbHMoanMpLAorCUpTT05fVEFCTEUodmFscy5qczo6anNvbmIsICckJyBDT0xV TU5TIChhIGludCBQQVRIICckJykpIGp0OworICBqcyAgIHwgYSAKKy0tLS0tLS0rLS0tCisgMSAg ICAgfCAxCisgImVyciIgfCAgCisoMiByb3dzKQorCitTRUxFQ1QgKgorRlJPTQorCShWQUxVRVMg KCcxJyksICgnImVyciInKSkgdmFscyhqcykKKwkJTEVGVCBPVVRFUiBKT0lOCisJSlNPTl9UQUJM RSh2YWxzLmpzOjpqc29uYiwgJyQnIENPTFVNTlMgKGEgaW50IFBBVEggJyQnKSBFUlJPUiBPTiBF UlJPUikganQKKwkJT04gdHJ1ZTsKK0VSUk9SOiAgaW52YWxpZCBpbnB1dCBzeW50YXggZm9yIHR5 cGUgaW50ZWdlcjogImVyciIKK1NFTEVDVCAqCitGUk9NCisJKFZBTFVFUyAoJzEnKSwgKCciZXJy IicpKSB2YWxzKGpzKQorCQlMRUZUIE9VVEVSIEpPSU4KKwlKU09OX1RBQkxFKHZhbHMuanM6Ompz b25iLCAnJCcgQ09MVU1OUyAoYSBpbnQgUEFUSCAnJCcgRVJST1IgT04gRVJST1IpKSBqdAorCQlP TiB0cnVlOworRVJST1I6ICBpbnZhbGlkIGlucHV0IHN5bnRheCBmb3IgdHlwZSBpbnRlZ2VyOiAi ZXJyIgorU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICcxJywgJyQnIENPTFVNTlMgKGEg aW50IFBBVEggJyQuYScgRVJST1IgT04gRU1QVFkpKSBqdDsKK0VSUk9SOiAgbm8gU1FML0pTT04g aXRlbQorU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICcxJywgJyQnIENPTFVNTlMgKGEg aW50IFBBVEggJ3N0cmljdCAkLmEnIEVSUk9SIE9OIEVNUFRZKSBFUlJPUiBPTiBFUlJPUikganQ7 CitFUlJPUjogIGpzb25wYXRoIG1lbWJlciBhY2Nlc3NvciBjYW4gb25seSBiZSBhcHBsaWVkIHRv IGFuIG9iamVjdAorU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICcxJywgJyQnIENPTFVN TlMgKGEgaW50IFBBVEggJ2xheCAkLmEnIEVSUk9SIE9OIEVNUFRZKSBFUlJPUiBPTiBFUlJPUikg anQ7CitFUlJPUjogIG5vIFNRTC9KU09OIGl0ZW0KK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRShq c29uYiAnImEiJywgJyQnIENPTFVNTlMgKGEgaW50IFBBVEggJyQnICAgREVGQVVMVCAxIE9OIEVN UFRZIERFRkFVTFQgMiBPTiBFUlJPUikpIGp0OworIGEgCistLS0KKyAyCisoMSByb3cpCisKK1NF TEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnImEiJywgJyQnIENPTFVNTlMgKGEgaW50IFBB VEggJ3N0cmljdCAkLmEnIERFRkFVTFQgMSBPTiBFTVBUWSBERUZBVUxUIDIgT04gRVJST1IpKSBq dDsKKyBhIAorLS0tCisgMgorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoanNv bmIgJyJhIicsICckJyBDT0xVTU5TIChhIGludCBQQVRIICdsYXggJC5hJyBERUZBVUxUIDEgT04g RU1QVFkgREVGQVVMVCAyIE9OIEVSUk9SKSkganQ7CisgYSAKKy0tLQorIDEKKygxIHJvdykKKwor LS0gSlNPTl9UQUJMRTogRVhJU1RTIFBBVEggdHlwZXMKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJM RShqc29uYiAnImEiJywgJyQnIENPTFVNTlMgKGEgaW50NCBFWElTVFMgUEFUSCAnJC5hJykpOwor IGEgCistLS0KKyAwCisoMSByb3cpCisKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAn ImEiJywgJyQnIENPTFVNTlMgKGEgaW50MiBFWElTVFMgUEFUSCAnJC5hJykpOworRVJST1I6ICBj YW5ub3QgY2FzdCB0eXBlIGJvb2xlYW4gdG8gc21hbGxpbnQKK0xJTkUgMTogLi4uRUxFQ1QgKiBG Uk9NIEpTT05fVEFCTEUoanNvbmIgJyJhIicsICckJyBDT0xVTU5TIChhIGludDIgRVhJLi4uCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXgorU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICciYSInLCAnJCcgQ09MVU1OUyAo YSBpbnQ4IEVYSVNUUyBQQVRIICckLmEnKSk7CitFUlJPUjogIGNhbm5vdCBjYXN0IHR5cGUgYm9v bGVhbiB0byBiaWdpbnQKK0xJTkUgMTogLi4uRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIg JyJhIicsICckJyBDT0xVTU5TIChhIGludDggRVhJLi4uCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorU0VMRUNUICogRlJPTSBK U09OX1RBQkxFKGpzb25iICciYSInLCAnJCcgQ09MVU1OUyAoYSBmbG9hdDQgRVhJU1RTIFBBVEgg JyQuYScpKTsKK0VSUk9SOiAgY2Fubm90IGNhc3QgdHlwZSBib29sZWFuIHRvIHJlYWwKK0xJTkUg MTogLi4uRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIgJyJhIicsICckJyBDT0xVTU5TIChh IGZsb2F0NCBFLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXgorU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICciYSIn LCAnJCcgQ09MVU1OUyAoYSBjaGFyKDMpIEVYSVNUUyBQQVRIICckLmEnKSk7CisgIGEgIAorLS0t LS0KKyBmYWwKKygxIHJvdykKKworU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICciYSIn LCAnJCcgQ09MVU1OUyAoYSBqc29uIEVYSVNUUyBQQVRIICckLmEnKSk7CitFUlJPUjogIGNhbm5v dCBjYXN0IHR5cGUgYm9vbGVhbiB0byBqc29uCitMSU5FIDE6IC4uLkVMRUNUICogRlJPTSBKU09O X1RBQkxFKGpzb25iICciYSInLCAnJCcgQ09MVU1OUyAoYSBqc29uIEVYSS4uLgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK1NF TEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnImEiJywgJyQnIENPTFVNTlMgKGEganNvbmIg RVhJU1RTIFBBVEggJyQuYScpKTsKK0VSUk9SOiAgY2Fubm90IGNhc3QgdHlwZSBib29sZWFuIHRv IGpzb25iCitMSU5FIDE6IC4uLkVMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICciYSInLCAn JCcgQ09MVU1OUyAoYSBqc29uYiBFWC4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIEpTT05fVEFCTEU6IFdSQVBQRVIv UVVPVEVTIGNsYXVzZXMgb24gc2NhbGFyIGNvbHVtbnMKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJM RShqc29uYiAnIndvcmxkIicsICckJyBDT0xVTU5TIChpdGVtIHRleHQgUEFUSCAnJCcgS0VFUCBR VU9URVMgT04gU0NBTEFSIFNUUklORykpOworICBpdGVtICAgCistLS0tLS0tLS0KKyAid29ybGQi CisoMSByb3cpCisKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnIndvcmxkIicsICck JyBDT0xVTU5TIChpdGVtIHRleHQgUEFUSCAnJCcgT01JVCBRVU9URVMgT04gU0NBTEFSIFNUUklO RykpOworIGl0ZW0gIAorLS0tLS0tLQorIHdvcmxkCisoMSByb3cpCisKK1NFTEVDVCAqIEZST00g SlNPTl9UQUJMRShqc29uYiAnIndvcmxkIicsICckJyBDT0xVTU5TIChpdGVtIHRleHQgRk9STUFU IEpTT04gUEFUSCAnJCcgS0VFUCBRVU9URVMpKTsKKyAgaXRlbSAgIAorLS0tLS0tLS0tCisgIndv cmxkIgorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIgJyJ3b3JsZCIn LCAnJCcgQ09MVU1OUyAoaXRlbSB0ZXh0IEZPUk1BVCBKU09OIFBBVEggJyQnIE9NSVQgUVVPVEVT KSk7CisgaXRlbSAgCistLS0tLS0tCisgd29ybGQKKygxIHJvdykKKworU0VMRUNUICogRlJPTSBK U09OX1RBQkxFKGpzb25iICcid29ybGQiJywgJyQnIENPTFVNTlMgKGl0ZW0gdGV4dCBGT1JNQVQg SlNPTiBQQVRIICckJyBXSVRIT1VUIFdSQVBQRVIgS0VFUCBRVU9URVMpKTsKKyAgaXRlbSAgIAor LS0tLS0tLS0tCisgIndvcmxkIgorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUo anNvbmIgJyJ3b3JsZCInLCAnJCcgQ09MVU1OUyAoaXRlbSB0ZXh0IFBBVEggJyQnIFdJVEhPVVQg V1JBUFBFUiBPTUlUIFFVT1RFUykpOworIGl0ZW0gIAorLS0tLS0tLQorIHdvcmxkCisoMSByb3cp CisKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnIndvcmxkIicsICckJyBDT0xVTU5T IChpdGVtIHRleHQgRk9STUFUIEpTT04gUEFUSCAnJCcgV0lUSCBXUkFQUEVSKSk7CisgICBpdGVt ICAgIAorLS0tLS0tLS0tLS0KKyBbIndvcmxkIl0KKygxIHJvdykKKworLS0gRXJyb3I6IFFVT1RF UyBjbGF1c2UgbWVhbmluZ2xlc3Mgd2hlbiBXSVRIIFdSQVBQRVIgaXMgcHJlc2VudAorU0VMRUNU ICogRlJPTSBKU09OX1RBQkxFKGpzb25iICcid29ybGQiJywgJyQnIENPTFVNTlMgKGl0ZW0gdGV4 dCBGT1JNQVQgSlNPTiBQQVRIICckJyBXSVRIIFdSQVBQRVIgS0VFUCBRVU9URVMpKTsKK0VSUk9S OiAgU1FML0pTT04gUVVPVEVTIGJlaGF2aW9yIG11c3Qgbm90IGJlIHNwZWNpZmllZCB3aGVuIFdJ VEggV1JBUFBFUiBpcyB1c2VkCitMSU5FIDE6IC4uLlQgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIg JyJ3b3JsZCInLCAnJCcgQ09MVU1OUyAoaXRlbSB0ZXh0IC4uLgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK1NFTEVDVCAqIEZS T00gSlNPTl9UQUJMRShqc29uYiAnIndvcmxkIicsICckJyBDT0xVTU5TIChpdGVtIHRleHQgUEFU SCAnJCcgV0lUSCBXUkFQUEVSIE9NSVQgUVVPVEVTKSk7CitFUlJPUjogIFNRTC9KU09OIFFVT1RF UyBiZWhhdmlvciBtdXN0IG5vdCBiZSBzcGVjaWZpZWQgd2hlbiBXSVRIIFdSQVBQRVIgaXMgdXNl ZAorTElORSAxOiAuLi5UICogRlJPTSBKU09OX1RBQkxFKGpzb25iICcid29ybGQiJywgJyQnIENP TFVNTlMgKGl0ZW0gdGV4dCAuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBeCistLSBKU09OX1RBQkxFOiBuZXN0ZWQgcGF0aHMg YW5kIHBsYW5zCistLSBTaG91bGQgZmFpbCAoSlNPTl9UQUJMRSBjb2x1bW5zIG11c3QgY29udGFp biBleHBsaWNpdCBBUyBwYXRoCistLSBzcGVjaWZpY2F0aW9ucyBpZiBleHBsaWNpdCBQTEFOIGNs YXVzZSBpcyB1c2VkKQorU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKAorCWpzb25iICdbXScsICck JyAtLSBBUyA8cGF0aCBuYW1lPiByZXF1aXJlZCBoZXJlCisJQ09MVU1OUyAoCisJCWZvbyBpbnQg UEFUSCAnJCcKKwkpCisJUExBTiBERUZBVUxUIChVTklPTikKKykganQ7CitFUlJPUjogIGludmFs aWQgSlNPTl9UQUJMRSBleHByZXNzaW9uCitMSU5FIDI6ICBqc29uYiAnW10nLCAnJCcgLS0gQVMg PHBhdGggbmFtZT4gcmVxdWlyZWQgaGVyZQorICAgICAgICAgICAgICAgICAgICAgXgorREVUQUlM OiAgSlNPTl9UQUJMRSBwYXRoIG11c3QgY29udGFpbiBleHBsaWNpdCBBUyBwYXRobmFtZSBzcGVj aWZpY2F0aW9uIGlmIGV4cGxpY2l0IFBMQU4gY2xhdXNlIGlzIHVzZWQKK1NFTEVDVCAqIEZST00g SlNPTl9UQUJMRSgKKwlqc29uYiAnW10nLCAnJCcgQVMgcGF0aDEKKwlDT0xVTU5TICgKKwkJTkVT VEVEIFBBVEggJyQnIENPTFVNTlMgKCAtLSBBUyA8cGF0aCBuYW1lPiByZXF1aXJlZCBoZXJlCisJ CQlmb28gaW50IFBBVEggJyQnCisJCSkKKwkpCisJUExBTiBERUZBVUxUIChVTklPTikKKykganQ7 CitFUlJPUjogIGludmFsaWQgSlNPTl9UQUJMRSBleHByZXNzaW9uCitMSU5FIDQ6ICAgTkVTVEVE IFBBVEggJyQnIENPTFVNTlMgKCAtLSBBUyA8cGF0aCBuYW1lPiByZXF1aXJlZCBoZXJlCisgICAg ICAgICAgXgorREVUQUlMOiAgSlNPTl9UQUJMRSBwYXRoIG11c3QgY29udGFpbiBleHBsaWNpdCBB UyBwYXRobmFtZSBzcGVjaWZpY2F0aW9uIGlmIGV4cGxpY2l0IFBMQU4gY2xhdXNlIGlzIHVzZWQK Ky0tIFNob3VsZCBmYWlsIChjb2x1bW4gbmFtZXMgbXVzdCBiZSBkaXN0aW5jdCkKK1NFTEVDVCAq IEZST00gSlNPTl9UQUJMRSgKKwlqc29uYiAnW10nLCAnJCcgQVMgYQorCUNPTFVNTlMgKAorCQlh IGludAorCSkKKykganQ7CitFUlJPUjogIGR1cGxpY2F0ZSBKU09OX1RBQkxFIGNvbHVtbiBuYW1l OiBhCitMSU5FIDQ6ICAgYSBpbnQKKyAgICAgICAgICBeCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFC TEUoCisJanNvbmIgJ1tdJywgJyQnIEFTIGEKKwlDT0xVTU5TICgKKwkJYiBpbnQsCisJCU5FU1RF RCBQQVRIICckJyBBUyBhCisJCUNPTFVNTlMgKAorCQkJYyBpbnQKKwkJKQorCSkKKykganQ7CitF UlJPUjogIGR1cGxpY2F0ZSBKU09OX1RBQkxFIHBhdGggbmFtZTogYQorTElORSA1OiAgIE5FU1RF RCBQQVRIICckJyBBUyBhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK1NFTEVDVCAq IEZST00gSlNPTl9UQUJMRSgKKwlqc29uYiAnW10nLCAnJCcKKwlDT0xVTU5TICgKKwkJYiBpbnQs CisJCU5FU1RFRCBQQVRIICckJyBBUyBiCisJCUNPTFVNTlMgKAorCQkJYyBpbnQKKwkJKQorCSkK KykganQ7CitFUlJPUjogIGR1cGxpY2F0ZSBKU09OX1RBQkxFIHBhdGggbmFtZTogYgorTElORSA1 OiAgIE5FU1RFRCBQQVRIICckJyBBUyBiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4K K1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRSgKKwlqc29uYiAnW10nLCAnJCcKKwlDT0xVTU5TICgK KwkJTkVTVEVEIFBBVEggJyQnIEFTIGEKKwkJQ09MVU1OUyAoCisJCQliIGludAorCQkpLAorCQlO RVNURUQgUEFUSCAnJCcKKwkJQ09MVU1OUyAoCisJCQlORVNURUQgUEFUSCAnJCcgQVMgYQorCQkJ Q09MVU1OUyAoCisJCQkJYyBpbnQKKwkJCSkKKwkJKQorCSkKKykganQ7CitFUlJPUjogIGR1cGxp Y2F0ZSBKU09OX1RBQkxFIHBhdGggbmFtZTogYQorTElORSAxMDogICAgTkVTVEVEIFBBVEggJyQn IEFTIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCistLSBKU09OX1RBQkxFOiBw bGFuIHZhbGlkYXRpb24KK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRSgKKwlqc29uYiAnbnVsbCcs ICckWypdJyBBUyBwMAorCUNPTFVNTlMgKAorCQlORVNURUQgJyQnIEFTIHAxIENPTFVNTlMgKAor CQkJTkVTVEVEIFBBVEggJyQnIEFTIHAxMSBDT0xVTU5TICggZm9vIGludCApLAorCQkJTkVTVEVE IFBBVEggJyQnIEFTIHAxMiBDT0xVTU5TICggYmFyIGludCApCisJCSksCisJCU5FU1RFRCBQQVRI ICckJyBBUyBwMiBDT0xVTU5TICgKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMjEgQ09MVU1OUyAo IGJheiBpbnQgKQorCQkpCisJKQorCVBMQU4gKHAxKQorKSBqdDsKK0VSUk9SOiAgaW52YWxpZCBK U09OX1RBQkxFIHBsYW4KK0xJTkUgMTI6ICBQTEFOIChwMSkKKyAgICAgICAgICAgICAgICBeCitE RVRBSUw6ICBQQVRIIG5hbWUgbWlzbWF0Y2g6IGV4cGVjdGVkIHAwIGJ1dCBwMSBpcyBnaXZlbi4K K1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRSgKKwlqc29uYiAnbnVsbCcsICckWypdJyBBUyBwMAor CUNPTFVNTlMgKAorCQlORVNURUQgUEFUSCAnJCcgQVMgcDEgQ09MVU1OUyAoCisJCQlORVNURUQg UEFUSCAnJCcgQVMgcDExIENPTFVNTlMgKCBmb28gaW50ICksCisJCQlORVNURUQgUEFUSCAnJCcg QVMgcDEyIENPTFVNTlMgKCBiYXIgaW50ICkKKwkJKSwKKwkJTkVTVEVEIFBBVEggJyQnIEFTIHAy IENPTFVNTlMgKAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAyMSBDT0xVTU5TICggYmF6IGludCAp CisJCSkKKwkpCisJUExBTiAocDApCispIGp0OworRVJST1I6ICBpbnZhbGlkIEpTT05fVEFCTEUg c3BlY2lmaWNhdGlvbgorTElORSA0OiAgIE5FU1RFRCBQQVRIICckJyBBUyBwMSBDT0xVTU5TICgK KyAgICAgICAgICBeCitERVRBSUw6ICBQTEFOIGNsYXVzZSBmb3IgbmVzdGVkIHBhdGggcDEgd2Fz IG5vdCBmb3VuZC4KK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRSgKKwlqc29uYiAnbnVsbCcsICck WypdJyBBUyBwMAorCUNPTFVNTlMgKAorCQlORVNURUQgUEFUSCAnJCcgQVMgcDEgQ09MVU1OUyAo CisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDExIENPTFVNTlMgKCBmb28gaW50ICksCisJCQlORVNU RUQgUEFUSCAnJCcgQVMgcDEyIENPTFVNTlMgKCBiYXIgaW50ICkKKwkJKSwKKwkJTkVTVEVEIFBB VEggJyQnIEFTIHAyIENPTFVNTlMgKAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAyMSBDT0xVTU5T ICggYmF6IGludCApCisJCSkKKwkpCisJUExBTiAocDAgT1VURVIgcDMpCispIGp0OworRVJST1I6 ICBpbnZhbGlkIEpTT05fVEFCTEUgc3BlY2lmaWNhdGlvbgorTElORSA0OiAgIE5FU1RFRCBQQVRI ICckJyBBUyBwMSBDT0xVTU5TICgKKyAgICAgICAgICBeCitERVRBSUw6ICBQTEFOIGNsYXVzZSBm b3IgbmVzdGVkIHBhdGggcDEgd2FzIG5vdCBmb3VuZC4KK1NFTEVDVCAqIEZST00gSlNPTl9UQUJM RSgKKwlqc29uYiAnbnVsbCcsICckWypdJyBBUyBwMAorCUNPTFVNTlMgKAorCQlORVNURUQgUEFU SCAnJCcgQVMgcDEgQ09MVU1OUyAoCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDExIENPTFVNTlMg KCBmb28gaW50ICksCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDEyIENPTFVNTlMgKCBiYXIgaW50 ICkKKwkJKSwKKwkJTkVTVEVEIFBBVEggJyQnIEFTIHAyIENPTFVNTlMgKAorCQkJTkVTVEVEIFBB VEggJyQnIEFTIHAyMSBDT0xVTU5TICggYmF6IGludCApCisJCSkKKwkpCisJUExBTiAocDAgVU5J T04gcDEgVU5JT04gcDExKQorKSBqdDsKK0VSUk9SOiAgaW52YWxpZCBKU09OX1RBQkxFIHBsYW4g Y2xhdXNlCitMSU5FIDEyOiAgUExBTiAocDAgVU5JT04gcDEgVU5JT04gcDExKQorICAgICAgICAg ICAgICAgIF4KK0RFVEFJTDogIEV4cGVjdGVkIElOTkVSIG9yIE9VVEVSLgorU0VMRUNUICogRlJP TSBKU09OX1RBQkxFKAorCWpzb25iICdudWxsJywgJyRbKl0nIEFTIHAwCisJQ09MVU1OUyAoCisJ CU5FU1RFRCBQQVRIICckJyBBUyBwMSBDT0xVTU5TICgKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBw MTEgQ09MVU1OUyAoIGZvbyBpbnQgKSwKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMTIgQ09MVU1O UyAoIGJhciBpbnQgKQorCQkpLAorCQlORVNURUQgUEFUSCAnJCcgQVMgcDIgQ09MVU1OUyAoCisJ CQlORVNURUQgUEFUSCAnJCcgQVMgcDIxIENPTFVNTlMgKCBiYXogaW50ICkKKwkJKQorCSkKKwlQ TEFOIChwMCBPVVRFUiAocDEgQ1JPU1MgcDEzKSkKKykganQ7CitFUlJPUjogIGludmFsaWQgSlNP Tl9UQUJMRSBzcGVjaWZpY2F0aW9uCitMSU5FIDg6ICAgTkVTVEVEIFBBVEggJyQnIEFTIHAyIENP TFVNTlMgKAorICAgICAgICAgIF4KK0RFVEFJTDogIFBMQU4gY2xhdXNlIGZvciBuZXN0ZWQgcGF0 aCBwMiB3YXMgbm90IGZvdW5kLgorU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKAorCWpzb25iICdu dWxsJywgJyRbKl0nIEFTIHAwCisJQ09MVU1OUyAoCisJCU5FU1RFRCBQQVRIICckJyBBUyBwMSBD T0xVTU5TICgKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMTEgQ09MVU1OUyAoIGZvbyBpbnQgKSwK KwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMTIgQ09MVU1OUyAoIGJhciBpbnQgKQorCQkpLAorCQlO RVNURUQgUEFUSCAnJCcgQVMgcDIgQ09MVU1OUyAoCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDIx IENPTFVNTlMgKCBiYXogaW50ICkKKwkJKQorCSkKKwlQTEFOIChwMCBPVVRFUiAocDEgQ1JPU1Mg cDIpKQorKSBqdDsKK0VSUk9SOiAgaW52YWxpZCBKU09OX1RBQkxFIHNwZWNpZmljYXRpb24KK0xJ TkUgNTogICAgTkVTVEVEIFBBVEggJyQnIEFTIHAxMSBDT0xVTU5TICggZm9vIGludCApLAorICAg ICAgICAgICBeCitERVRBSUw6ICBQTEFOIGNsYXVzZSBmb3IgbmVzdGVkIHBhdGggcDExIHdhcyBu b3QgZm91bmQuCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoCisJanNvbmIgJ251bGwnLCAnJFsq XScgQVMgcDAKKwlDT0xVTU5TICgKKwkJTkVTVEVEIFBBVEggJyQnIEFTIHAxIENPTFVNTlMgKAor CQkJTkVTVEVEIFBBVEggJyQnIEFTIHAxMSBDT0xVTU5TICggZm9vIGludCApLAorCQkJTkVTVEVE IFBBVEggJyQnIEFTIHAxMiBDT0xVTU5TICggYmFyIGludCApCisJCSksCisJCU5FU1RFRCBQQVRI ICckJyBBUyBwMiBDT0xVTU5TICgKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMjEgQ09MVU1OUyAo IGJheiBpbnQgKQorCQkpCisJKQorCVBMQU4gKHAwIE9VVEVSICgocDEgVU5JT04gcDExKSBDUk9T UyBwMikpCispIGp0OworRVJST1I6ICBpbnZhbGlkIEpTT05fVEFCTEUgcGxhbiBjbGF1c2UKK0xJ TkUgMTI6ICBQTEFOIChwMCBPVVRFUiAoKHAxIFVOSU9OIHAxMSkgQ1JPU1MgcDIpKQorICAgICAg ICAgICAgICAgICAgICAgICAgIF4KK0RFVEFJTDogIFBMQU4gY2xhdXNlIGNvbnRhaW5zIHNvbWUg ZXh0cmEgb3IgZHVwbGljYXRlIHNpYmxpbmcgbm9kZXMuCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFC TEUoCisJanNvbmIgJ251bGwnLCAnJFsqXScgQVMgcDAKKwlDT0xVTU5TICgKKwkJTkVTVEVEIFBB VEggJyQnIEFTIHAxIENPTFVNTlMgKAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAxMSBDT0xVTU5T ICggZm9vIGludCApLAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAxMiBDT0xVTU5TICggYmFyIGlu dCApCisJCSksCisJCU5FU1RFRCBQQVRIICckJyBBUyBwMiBDT0xVTU5TICgKKwkJCU5FU1RFRCBQ QVRIICckJyBBUyBwMjEgQ09MVU1OUyAoIGJheiBpbnQgKQorCQkpCisJKQorCVBMQU4gKHAwIE9V VEVSICgocDEgSU5ORVIgcDExKSBDUk9TUyBwMikpCispIGp0OworRVJST1I6ICBpbnZhbGlkIEpT T05fVEFCTEUgc3BlY2lmaWNhdGlvbgorTElORSA2OiAgICBORVNURUQgUEFUSCAnJCcgQVMgcDEy IENPTFVNTlMgKCBiYXIgaW50ICkKKyAgICAgICAgICAgXgorREVUQUlMOiAgUExBTiBjbGF1c2Ug Zm9yIG5lc3RlZCBwYXRoIHAxMiB3YXMgbm90IGZvdW5kLgorU0VMRUNUICogRlJPTSBKU09OX1RB QkxFKAorCWpzb25iICdudWxsJywgJyRbKl0nIEFTIHAwCisJQ09MVU1OUyAoCisJCU5FU1RFRCBQ QVRIICckJyBBUyBwMSBDT0xVTU5TICgKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMTEgQ09MVU1O UyAoIGZvbyBpbnQgKSwKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMTIgQ09MVU1OUyAoIGJhciBp bnQgKQorCQkpLAorCQlORVNURUQgUEFUSCAnJCcgQVMgcDIgQ09MVU1OUyAoCisJCQlORVNURUQg UEFUSCAnJCcgQVMgcDIxIENPTFVNTlMgKCBiYXogaW50ICkKKwkJKQorCSkKKwlQTEFOIChwMCBP VVRFUiAoKHAxIElOTkVSIChwMTIgQ1JPU1MgcDExKSkgQ1JPU1MgcDIpKQorKSBqdDsKK0VSUk9S OiAgaW52YWxpZCBKU09OX1RBQkxFIHNwZWNpZmljYXRpb24KK0xJTkUgOTogICAgTkVTVEVEIFBB VEggJyQnIEFTIHAyMSBDT0xVTU5TICggYmF6IGludCApCisgICAgICAgICAgIF4KK0RFVEFJTDog IFBMQU4gY2xhdXNlIGZvciBuZXN0ZWQgcGF0aCBwMjEgd2FzIG5vdCBmb3VuZC4KK1NFTEVDVCAq IEZST00gSlNPTl9UQUJMRSgKKwlqc29uYiAnbnVsbCcsICdzdHJpY3QgJFsqXScgQVMgcDAKKwlD T0xVTU5TICgKKwkJTkVTVEVEIFBBVEggJyQnIEFTIHAxIENPTFVNTlMgKAorCQkJTkVTVEVEIFBB VEggJyQnIEFTIHAxMSBDT0xVTU5TICggZm9vIGludCApLAorCQkJTkVTVEVEIFBBVEggJyQnIEFT IHAxMiBDT0xVTU5TICggYmFyIGludCApCisJCSksCisJCU5FU1RFRCBQQVRIICckJyBBUyBwMiBD T0xVTU5TICgKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMjEgQ09MVU1OUyAoIGJheiBpbnQgKQor CQkpCisJKQorCVBMQU4gKHAwIE9VVEVSICgocDEgSU5ORVIgKHAxMiBDUk9TUyBwMTEpKSBDUk9T UyAocDIgSU5ORVIgcDIxKSkpCispIGp0OworIGJhciB8IGZvbyB8IGJheiAKKy0tLS0tKy0tLS0t Ky0tLS0tCisoMCByb3dzKQorCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoCisJanNvbmIgJ251 bGwnLCAnc3RyaWN0ICRbKl0nIC0tIHdpdGhvdXQgcm9vdCBwYXRoIG5hbWUKKwlDT0xVTU5TICgK KwkJTkVTVEVEIFBBVEggJyQnIEFTIHAxIENPTFVNTlMgKAorCQkJTkVTVEVEIFBBVEggJyQnIEFT IHAxMSBDT0xVTU5TICggZm9vIGludCApLAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAxMiBDT0xV TU5TICggYmFyIGludCApCisJCSksCisJCU5FU1RFRCBQQVRIICckJyBBUyBwMiBDT0xVTU5TICgK KwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMjEgQ09MVU1OUyAoIGJheiBpbnQgKQorCQkpCisJKQor CVBMQU4gKChwMSBJTk5FUiAocDEyIENST1NTIHAxMSkpIENST1NTIChwMiBJTk5FUiBwMjEpKQor KSBqdDsKK0VSUk9SOiAgaW52YWxpZCBKU09OX1RBQkxFIGV4cHJlc3Npb24KK0xJTkUgMjogIGpz b25iICdudWxsJywgJ3N0cmljdCAkWypdJyAtLSB3aXRob3V0IHJvb3QgcGF0aCBuYW1lCisgICAg ICAgICAgICAgICAgICAgICAgIF4KK0RFVEFJTDogIEpTT05fVEFCTEUgcGF0aCBtdXN0IGNvbnRh aW4gZXhwbGljaXQgQVMgcGF0aG5hbWUgc3BlY2lmaWNhdGlvbiBpZiBleHBsaWNpdCBQTEFOIGNs YXVzZSBpcyB1c2VkCistLSBKU09OX1RBQkxFOiBwbGFuIGV4ZWN1dGlvbgorQ1JFQVRFIFRFTVAg VEFCTEUganNvbmJfdGFibGVfdGVzdCAoanMganNvbmIpOworSU5TRVJUIElOVE8ganNvbmJfdGFi bGVfdGVzdAorVkFMVUVTICgKKwknWworCQl7ImEiOiAgMSwgICJiIjogW10sICJjIjogW119LAor CQl7ImEiOiAgMiwgICJiIjogWzEsIDIsIDNdLCAiYyI6IFsxMCwgbnVsbCwgMjBdfSwKKwkJeyJh IjogIDMsICAiYiI6IFsxLCAyXSwgImMiOiBbXX0sCisJCXsieCI6ICI0IiwgImIiOiBbMSwgMl0s ICJjIjogMTIzfQorCSBdJworKTsKKy0tIHVuc3BlY2lmaWVkIHBsYW4gKG91dGVyLCB1bmlvbikK K3NlbGVjdAorCWp0LioKK2Zyb20KKwlqc29uYl90YWJsZV90ZXN0IGp0dCwKKwlqc29uX3RhYmxl ICgKKwkJanR0LmpzLCdzdHJpY3QgJFsqXScgYXMgcAorCQljb2x1bW5zICgKKwkJCW4gZm9yIG9y ZGluYWxpdHksCisJCQlhIGludCBwYXRoICdsYXggJC5hJyBkZWZhdWx0IC0xIG9uIGVtcHR5LAor CQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmJbKl0nIGFzIHBiIGNvbHVtbnMgKCBiIGludCBwYXRo ICckJyApLAorCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmNbKl0nIGFzIHBjIGNvbHVtbnMgKCBj IGludCBwYXRoICckJyApCisJCSkKKwkpIGp0OworIG4gfCBhICB8IGIgfCBjICAKKy0tLSstLS0t Ky0tLSstLS0tCisgMSB8ICAxIHwgICB8ICAgCisgMiB8ICAyIHwgMSB8ICAgCisgMiB8ICAyIHwg MiB8ICAgCisgMiB8ICAyIHwgMyB8ICAgCisgMiB8ICAyIHwgICB8IDEwCisgMiB8ICAyIHwgICB8 ICAgCisgMiB8ICAyIHwgICB8IDIwCisgMyB8ICAzIHwgMSB8ICAgCisgMyB8ICAzIHwgMiB8ICAg CisgNCB8IC0xIHwgMSB8ICAgCisgNCB8IC0xIHwgMiB8ICAgCisoMTEgcm93cykKKworLS0gZGVm YXVsdCBwbGFuIChvdXRlciwgdW5pb24pCitzZWxlY3QKKwlqdC4qCitmcm9tCisJanNvbmJfdGFi bGVfdGVzdCBqdHQsCisJanNvbl90YWJsZSAoCisJCWp0dC5qcywnc3RyaWN0ICRbKl0nIGFzIHAK KwkJY29sdW1ucyAoCisJCQluIGZvciBvcmRpbmFsaXR5LAorCQkJYSBpbnQgcGF0aCAnbGF4ICQu YScgZGVmYXVsdCAtMSBvbiBlbXB0eSwKKwkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5iWypdJyBh cyBwYiBjb2x1bW5zICggYiBpbnQgcGF0aCAnJCcgKSwKKwkJCW5lc3RlZCBwYXRoICdzdHJpY3Qg JC5jWypdJyBhcyBwYyBjb2x1bW5zICggYyBpbnQgcGF0aCAnJCcgKQorCQkpCisJCXBsYW4gZGVm YXVsdCAob3V0ZXIsIHVuaW9uKQorCSkganQ7CisgbiB8IGEgIHwgYiB8IGMgIAorLS0tKy0tLS0r LS0tKy0tLS0KKyAxIHwgIDEgfCAgIHwgICAKKyAyIHwgIDIgfCAxIHwgMTAKKyAyIHwgIDIgfCAx IHwgICAKKyAyIHwgIDIgfCAxIHwgMjAKKyAyIHwgIDIgfCAyIHwgMTAKKyAyIHwgIDIgfCAyIHwg ICAKKyAyIHwgIDIgfCAyIHwgMjAKKyAyIHwgIDIgfCAzIHwgMTAKKyAyIHwgIDIgfCAzIHwgICAK KyAyIHwgIDIgfCAzIHwgMjAKKyAzIHwgIDMgfCAgIHwgICAKKyA0IHwgLTEgfCAgIHwgICAKKygx MiByb3dzKQorCistLSBzcGVjaWZpYyBwbGFuIChwIG91dGVyIChwYiB1bmlvbiBwYykpCitzZWxl Y3QKKwlqdC4qCitmcm9tCisJanNvbmJfdGFibGVfdGVzdCBqdHQsCisJanNvbl90YWJsZSAoCisJ CWp0dC5qcywnc3RyaWN0ICRbKl0nIGFzIHAKKwkJY29sdW1ucyAoCisJCQluIGZvciBvcmRpbmFs aXR5LAorCQkJYSBpbnQgcGF0aCAnbGF4ICQuYScgZGVmYXVsdCAtMSBvbiBlbXB0eSwKKwkJCW5l c3RlZCBwYXRoICdzdHJpY3QgJC5iWypdJyBhcyBwYiBjb2x1bW5zICggYiBpbnQgcGF0aCAnJCcg KSwKKwkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5jWypdJyBhcyBwYyBjb2x1bW5zICggYyBpbnQg cGF0aCAnJCcgKQorCQkpCisJCXBsYW4gKHAgb3V0ZXIgKHBiIHVuaW9uIHBjKSkKKwkpIGp0Owor IG4gfCBhICB8IGIgfCBjICAKKy0tLSstLS0tKy0tLSstLS0tCisgMSB8ICAxIHwgICB8ICAgCisg MiB8ICAyIHwgMSB8ICAgCisgMiB8ICAyIHwgMiB8ICAgCisgMiB8ICAyIHwgMyB8ICAgCisgMiB8 ICAyIHwgICB8IDEwCisgMiB8ICAyIHwgICB8ICAgCisgMiB8ICAyIHwgICB8IDIwCisgMyB8ICAz IHwgMSB8ICAgCisgMyB8ICAzIHwgMiB8ICAgCisgNCB8IC0xIHwgMSB8ICAgCisgNCB8IC0xIHwg MiB8ICAgCisoMTEgcm93cykKKworLS0gc3BlY2lmaWMgcGxhbiAocCBvdXRlciAocGMgdW5pb24g cGIpKQorc2VsZWN0CisJanQuKgorZnJvbQorCWpzb25iX3RhYmxlX3Rlc3QganR0LAorCWpzb25f dGFibGUgKAorCQlqdHQuanMsJ3N0cmljdCAkWypdJyBhcyBwCisJCWNvbHVtbnMgKAorCQkJbiBm b3Igb3JkaW5hbGl0eSwKKwkJCWEgaW50IHBhdGggJ2xheCAkLmEnIGRlZmF1bHQgLTEgb24gZW1w dHksCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuYlsqXScgYXMgcGIgY29sdW1ucyAoIGIgaW50 IHBhdGggJyQnICksCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuY1sqXScgYXMgcGMgY29sdW1u cyAoIGMgaW50IHBhdGggJyQnICkKKwkJKQorCQlwbGFuIChwIG91dGVyIChwYyB1bmlvbiBwYikp CisJKSBqdDsKKyBuIHwgYSAgfCBjICB8IGIgCistLS0rLS0tLSstLS0tKy0tLQorIDEgfCAgMSB8 ICAgIHwgIAorIDIgfCAgMiB8IDEwIHwgIAorIDIgfCAgMiB8ICAgIHwgIAorIDIgfCAgMiB8IDIw IHwgIAorIDIgfCAgMiB8ICAgIHwgMQorIDIgfCAgMiB8ICAgIHwgMgorIDIgfCAgMiB8ICAgIHwg MworIDMgfCAgMyB8ICAgIHwgMQorIDMgfCAgMyB8ICAgIHwgMgorIDQgfCAtMSB8ICAgIHwgMQor IDQgfCAtMSB8ICAgIHwgMgorKDExIHJvd3MpCisKKy0tIGRlZmF1bHQgcGxhbiAoaW5uZXIsIHVu aW9uKQorc2VsZWN0CisJanQuKgorZnJvbQorCWpzb25iX3RhYmxlX3Rlc3QganR0LAorCWpzb25f dGFibGUgKAorCQlqdHQuanMsJ3N0cmljdCAkWypdJyBhcyBwCisJCWNvbHVtbnMgKAorCQkJbiBm b3Igb3JkaW5hbGl0eSwKKwkJCWEgaW50IHBhdGggJ2xheCAkLmEnIGRlZmF1bHQgLTEgb24gZW1w dHksCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuYlsqXScgYXMgcGIgY29sdW1ucyAoIGIgaW50 IHBhdGggJyQnICksCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuY1sqXScgYXMgcGMgY29sdW1u cyAoIGMgaW50IHBhdGggJyQnICkKKwkJKQorCQlwbGFuIGRlZmF1bHQgKGlubmVyKQorCSkganQ7 CisgbiB8IGEgIHwgYiB8IGMgIAorLS0tKy0tLS0rLS0tKy0tLS0KKyAxIHwgIDEgfCAgIHwgICAK KyAyIHwgIDIgfCAxIHwgMTAKKyAyIHwgIDIgfCAxIHwgICAKKyAyIHwgIDIgfCAxIHwgMjAKKyAy IHwgIDIgfCAyIHwgMTAKKyAyIHwgIDIgfCAyIHwgICAKKyAyIHwgIDIgfCAyIHwgMjAKKyAyIHwg IDIgfCAzIHwgMTAKKyAyIHwgIDIgfCAzIHwgICAKKyAyIHwgIDIgfCAzIHwgMjAKKyAzIHwgIDMg fCAgIHwgICAKKyA0IHwgLTEgfCAgIHwgICAKKygxMiByb3dzKQorCistLSBzcGVjaWZpYyBwbGFu IChwIGlubmVyIChwYiB1bmlvbiBwYykpCitzZWxlY3QKKwlqdC4qCitmcm9tCisJanNvbmJfdGFi bGVfdGVzdCBqdHQsCisJanNvbl90YWJsZSAoCisJCWp0dC5qcywnc3RyaWN0ICRbKl0nIGFzIHAK KwkJY29sdW1ucyAoCisJCQluIGZvciBvcmRpbmFsaXR5LAorCQkJYSBpbnQgcGF0aCAnbGF4ICQu YScgZGVmYXVsdCAtMSBvbiBlbXB0eSwKKwkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5iWypdJyBh cyBwYiBjb2x1bW5zICggYiBpbnQgcGF0aCAnJCcgKSwKKwkJCW5lc3RlZCBwYXRoICdzdHJpY3Qg JC5jWypdJyBhcyBwYyBjb2x1bW5zICggYyBpbnQgcGF0aCAnJCcgKQorCQkpCisJCXBsYW4gKHAg aW5uZXIgKHBiIHVuaW9uIHBjKSkKKwkpIGp0OworIG4gfCBhICB8IGIgfCBjICAKKy0tLSstLS0t Ky0tLSstLS0tCisgMiB8ICAyIHwgMSB8ICAgCisgMiB8ICAyIHwgMiB8ICAgCisgMiB8ICAyIHwg MyB8ICAgCisgMiB8ICAyIHwgICB8IDEwCisgMiB8ICAyIHwgICB8ICAgCisgMiB8ICAyIHwgICB8 IDIwCisgMyB8ICAzIHwgMSB8ICAgCisgMyB8ICAzIHwgMiB8ICAgCisgNCB8IC0xIHwgMSB8ICAg CisgNCB8IC0xIHwgMiB8ICAgCisoMTAgcm93cykKKworLS0gZGVmYXVsdCBwbGFuIChpbm5lciwg Y3Jvc3MpCitzZWxlY3QKKwlqdC4qCitmcm9tCisJanNvbmJfdGFibGVfdGVzdCBqdHQsCisJanNv bl90YWJsZSAoCisJCWp0dC5qcywnc3RyaWN0ICRbKl0nIGFzIHAKKwkJY29sdW1ucyAoCisJCQlu IGZvciBvcmRpbmFsaXR5LAorCQkJYSBpbnQgcGF0aCAnbGF4ICQuYScgZGVmYXVsdCAtMSBvbiBl bXB0eSwKKwkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5iWypdJyBhcyBwYiBjb2x1bW5zICggYiBp bnQgcGF0aCAnJCcgKSwKKwkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5jWypdJyBhcyBwYyBjb2x1 bW5zICggYyBpbnQgcGF0aCAnJCcgKQorCQkpCisJCXBsYW4gZGVmYXVsdCAoY3Jvc3MsIGlubmVy KQorCSkganQ7CisgbiB8IGEgfCBiIHwgYyAgCistLS0rLS0tKy0tLSstLS0tCisgMiB8IDIgfCAx IHwgMTAKKyAyIHwgMiB8IDEgfCAgIAorIDIgfCAyIHwgMSB8IDIwCisgMiB8IDIgfCAyIHwgMTAK KyAyIHwgMiB8IDIgfCAgIAorIDIgfCAyIHwgMiB8IDIwCisgMiB8IDIgfCAzIHwgMTAKKyAyIHwg MiB8IDMgfCAgIAorIDIgfCAyIHwgMyB8IDIwCisoOSByb3dzKQorCistLSBzcGVjaWZpYyBwbGFu IChwIGlubmVyIChwYiBjcm9zcyBwYykpCitzZWxlY3QKKwlqdC4qCitmcm9tCisJanNvbmJfdGFi bGVfdGVzdCBqdHQsCisJanNvbl90YWJsZSAoCisJCWp0dC5qcywnc3RyaWN0ICRbKl0nIGFzIHAK KwkJY29sdW1ucyAoCisJCQluIGZvciBvcmRpbmFsaXR5LAorCQkJYSBpbnQgcGF0aCAnbGF4ICQu YScgZGVmYXVsdCAtMSBvbiBlbXB0eSwKKwkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5iWypdJyBh cyBwYiBjb2x1bW5zICggYiBpbnQgcGF0aCAnJCcgKSwKKwkJCW5lc3RlZCBwYXRoICdzdHJpY3Qg JC5jWypdJyBhcyBwYyBjb2x1bW5zICggYyBpbnQgcGF0aCAnJCcgKQorCQkpCisJCXBsYW4gKHAg aW5uZXIgKHBiIGNyb3NzIHBjKSkKKwkpIGp0OworIG4gfCBhIHwgYiB8IGMgIAorLS0tKy0tLSst LS0rLS0tLQorIDIgfCAyIHwgMSB8IDEwCisgMiB8IDIgfCAxIHwgICAKKyAyIHwgMiB8IDEgfCAy MAorIDIgfCAyIHwgMiB8IDEwCisgMiB8IDIgfCAyIHwgICAKKyAyIHwgMiB8IDIgfCAyMAorIDIg fCAyIHwgMyB8IDEwCisgMiB8IDIgfCAzIHwgICAKKyAyIHwgMiB8IDMgfCAyMAorKDkgcm93cykK KworLS0gZGVmYXVsdCBwbGFuIChvdXRlciwgY3Jvc3MpCitzZWxlY3QKKwlqdC4qCitmcm9tCisJ anNvbmJfdGFibGVfdGVzdCBqdHQsCisJanNvbl90YWJsZSAoCisJCWp0dC5qcywnc3RyaWN0ICRb Kl0nIGFzIHAKKwkJY29sdW1ucyAoCisJCQluIGZvciBvcmRpbmFsaXR5LAorCQkJYSBpbnQgcGF0 aCAnbGF4ICQuYScgZGVmYXVsdCAtMSBvbiBlbXB0eSwKKwkJCW5lc3RlZCBwYXRoICdzdHJpY3Qg JC5iWypdJyBhcyBwYiBjb2x1bW5zICggYiBpbnQgcGF0aCAnJCcgKSwKKwkJCW5lc3RlZCBwYXRo ICdzdHJpY3QgJC5jWypdJyBhcyBwYyBjb2x1bW5zICggYyBpbnQgcGF0aCAnJCcgKQorCQkpCisJ CXBsYW4gZGVmYXVsdCAob3V0ZXIsIGNyb3NzKQorCSkganQ7CisgbiB8IGEgIHwgYiB8IGMgIAor LS0tKy0tLS0rLS0tKy0tLS0KKyAxIHwgIDEgfCAgIHwgICAKKyAyIHwgIDIgfCAxIHwgMTAKKyAy IHwgIDIgfCAxIHwgICAKKyAyIHwgIDIgfCAxIHwgMjAKKyAyIHwgIDIgfCAyIHwgMTAKKyAyIHwg IDIgfCAyIHwgICAKKyAyIHwgIDIgfCAyIHwgMjAKKyAyIHwgIDIgfCAzIHwgMTAKKyAyIHwgIDIg fCAzIHwgICAKKyAyIHwgIDIgfCAzIHwgMjAKKyAzIHwgIDMgfCAgIHwgICAKKyA0IHwgLTEgfCAg IHwgICAKKygxMiByb3dzKQorCistLSBzcGVjaWZpYyBwbGFuIChwIG91dGVyIChwYiBjcm9zcyBw YykpCitzZWxlY3QKKwlqdC4qCitmcm9tCisJanNvbmJfdGFibGVfdGVzdCBqdHQsCisJanNvbl90 YWJsZSAoCisJCWp0dC5qcywnc3RyaWN0ICRbKl0nIGFzIHAKKwkJY29sdW1ucyAoCisJCQluIGZv ciBvcmRpbmFsaXR5LAorCQkJYSBpbnQgcGF0aCAnbGF4ICQuYScgZGVmYXVsdCAtMSBvbiBlbXB0 eSwKKwkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5iWypdJyBhcyBwYiBjb2x1bW5zICggYiBpbnQg cGF0aCAnJCcgKSwKKwkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5jWypdJyBhcyBwYyBjb2x1bW5z ICggYyBpbnQgcGF0aCAnJCcgKQorCQkpCisJCXBsYW4gKHAgb3V0ZXIgKHBiIGNyb3NzIHBjKSkK KwkpIGp0OworIG4gfCBhICB8IGIgfCBjICAKKy0tLSstLS0tKy0tLSstLS0tCisgMSB8ICAxIHwg ICB8ICAgCisgMiB8ICAyIHwgMSB8IDEwCisgMiB8ICAyIHwgMSB8ICAgCisgMiB8ICAyIHwgMSB8 IDIwCisgMiB8ICAyIHwgMiB8IDEwCisgMiB8ICAyIHwgMiB8ICAgCisgMiB8ICAyIHwgMiB8IDIw CisgMiB8ICAyIHwgMyB8IDEwCisgMiB8ICAyIHwgMyB8ICAgCisgMiB8ICAyIHwgMyB8IDIwCisg MyB8ICAzIHwgICB8ICAgCisgNCB8IC0xIHwgICB8ICAgCisoMTIgcm93cykKKworc2VsZWN0CisJ anQuKiwgYjEgKyAxMDAgYXMgYgorZnJvbQorCWpzb25fdGFibGUgKGpzb25iCisJCSdbCisJCQl7 ImEiOiAgMSwgICJiIjogW1sxLCAxMF0sIFsyXSwgWzMsIDMwLCAzMDBdXSwgImMiOiBbMSwgbnVs bCwgMl19LAorCQkJeyJhIjogIDIsICAiYiI6IFsxMCwgMjBdLCAiYyI6IFsxLCBudWxsLCAyXX0s CisJCQl7IngiOiAiMyIsICJiIjogWzExLCAyMiwgMzMsIDQ0XX0KKwkJIF0nLAorCQknJFsqXScg YXMgcAorCQljb2x1bW5zICgKKwkJCW4gZm9yIG9yZGluYWxpdHksCisJCQlhIGludCBwYXRoICds YXggJC5hJyBkZWZhdWx0IC0xIG9uIGVycm9yLAorCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmJb Kl0nIGFzIHBiIGNvbHVtbnMgKAorCQkJCWIgdGV4dCBmb3JtYXQganNvbiBwYXRoICckJywKKwkJ CQluZXN0ZWQgcGF0aCAnc3RyaWN0ICRbKl0nIGFzIHBiMSBjb2x1bW5zICgKKwkJCQkJYjEgaW50 IHBhdGggJyQnCisJCQkJKQorCQkJKSwKKwkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5jWypdJyBh cyBwYyBjb2x1bW5zICgKKwkJCQljIHRleHQgZm9ybWF0IGpzb24gcGF0aCAnJCcsCisJCQkJbmVz dGVkIHBhdGggJ3N0cmljdCAkWypdJyBhcyBwYzEgY29sdW1ucyAoCisJCQkJCWMxIGludCBwYXRo ICckJworCQkJCSkKKwkJCSkKKwkJKQorCQktLXBsYW4gZGVmYXVsdChvdXRlciwgY3Jvc3MpCisJ CXBsYW4ocCBvdXRlciAoKHBiIGlubmVyIHBiMSkgY3Jvc3MgKHBjIG91dGVyIHBjMSkpKQorCSkg anQ7CisgbiB8IGEgIHwgICAgICBiICAgICAgIHwgYjEgIHwgIGMgICB8IGMxIHwgIGIgIAorLS0t Ky0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0rLS0tLS0tKy0tLS0rLS0tLS0KKyAxIHwgIDEgfCBb MSwgMTBdICAgICAgfCAgIDEgfCAxICAgIHwgICAgfCAxMDEKKyAxIHwgIDEgfCBbMSwgMTBdICAg ICAgfCAgIDEgfCBudWxsIHwgICAgfCAxMDEKKyAxIHwgIDEgfCBbMSwgMTBdICAgICAgfCAgIDEg fCAyICAgIHwgICAgfCAxMDEKKyAxIHwgIDEgfCBbMSwgMTBdICAgICAgfCAgMTAgfCAxICAgIHwg ICAgfCAxMTAKKyAxIHwgIDEgfCBbMSwgMTBdICAgICAgfCAgMTAgfCBudWxsIHwgICAgfCAxMTAK KyAxIHwgIDEgfCBbMSwgMTBdICAgICAgfCAgMTAgfCAyICAgIHwgICAgfCAxMTAKKyAxIHwgIDEg fCBbMl0gICAgICAgICAgfCAgIDIgfCAxICAgIHwgICAgfCAxMDIKKyAxIHwgIDEgfCBbMl0gICAg ICAgICAgfCAgIDIgfCBudWxsIHwgICAgfCAxMDIKKyAxIHwgIDEgfCBbMl0gICAgICAgICAgfCAg IDIgfCAyICAgIHwgICAgfCAxMDIKKyAxIHwgIDEgfCBbMywgMzAsIDMwMF0gfCAgIDMgfCAxICAg IHwgICAgfCAxMDMKKyAxIHwgIDEgfCBbMywgMzAsIDMwMF0gfCAgIDMgfCBudWxsIHwgICAgfCAx MDMKKyAxIHwgIDEgfCBbMywgMzAsIDMwMF0gfCAgIDMgfCAyICAgIHwgICAgfCAxMDMKKyAxIHwg IDEgfCBbMywgMzAsIDMwMF0gfCAgMzAgfCAxICAgIHwgICAgfCAxMzAKKyAxIHwgIDEgfCBbMywg MzAsIDMwMF0gfCAgMzAgfCBudWxsIHwgICAgfCAxMzAKKyAxIHwgIDEgfCBbMywgMzAsIDMwMF0g fCAgMzAgfCAyICAgIHwgICAgfCAxMzAKKyAxIHwgIDEgfCBbMywgMzAsIDMwMF0gfCAzMDAgfCAx ICAgIHwgICAgfCA0MDAKKyAxIHwgIDEgfCBbMywgMzAsIDMwMF0gfCAzMDAgfCBudWxsIHwgICAg fCA0MDAKKyAxIHwgIDEgfCBbMywgMzAsIDMwMF0gfCAzMDAgfCAyICAgIHwgICAgfCA0MDAKKyAy IHwgIDIgfCAgICAgICAgICAgICAgfCAgICAgfCAgICAgIHwgICAgfCAgICAKKyAzIHwgLTEgfCAg ICAgICAgICAgICAgfCAgICAgfCAgICAgIHwgICAgfCAgICAKKygyMCByb3dzKQorCistLSBTaG91 bGQgc3VjY2VlZCAoSlNPTiBhcmd1bWVudHMgYXJlIHBhc3NlZCB0byByb290IGFuZCBuZXN0ZWQg cGF0aHMpCitTRUxFQ1QgKgorRlJPTQorCWdlbmVyYXRlX3NlcmllcygxLCA0KSB4LAorCWdlbmVy YXRlX3NlcmllcygxLCAzKSB5LAorCUpTT05fVEFCTEUoanNvbmIKKwkJJ1tbMSwyLDNdLFsyLDMs NCw1XSxbMyw0LDUsNl1dJywKKwkJJ3N0cmljdCAkWypdID8gKEBbKl0gPCAkeCknCisJCVBBU1NJ TkcgeCBBUyB4LCB5IEFTIHkKKwkJQ09MVU1OUyAoCisJCQl5IHRleHQgRk9STUFUIEpTT04gUEFU SCAnJCcsCisJCQlORVNURUQgUEFUSCAnc3RyaWN0ICRbKl0gPyAoQCA+PSAkeSknCisJCQlDT0xV TU5TICgKKwkJCQl6IGludCBQQVRIICckJworCQkJKQorCQkpCisJKSBqdDsKKyB4IHwgeSB8ICAg ICAgeSAgICAgICB8IHogCistLS0rLS0tKy0tLS0tLS0tLS0tLS0tKy0tLQorIDIgfCAxIHwgWzEs IDIsIDNdICAgIHwgMQorIDIgfCAxIHwgWzEsIDIsIDNdICAgIHwgMgorIDIgfCAxIHwgWzEsIDIs IDNdICAgIHwgMworIDMgfCAxIHwgWzEsIDIsIDNdICAgIHwgMQorIDMgfCAxIHwgWzEsIDIsIDNd ICAgIHwgMgorIDMgfCAxIHwgWzEsIDIsIDNdICAgIHwgMworIDMgfCAxIHwgWzIsIDMsIDQsIDVd IHwgMgorIDMgfCAxIHwgWzIsIDMsIDQsIDVdIHwgMworIDMgfCAxIHwgWzIsIDMsIDQsIDVdIHwg NAorIDMgfCAxIHwgWzIsIDMsIDQsIDVdIHwgNQorIDQgfCAxIHwgWzEsIDIsIDNdICAgIHwgMQor IDQgfCAxIHwgWzEsIDIsIDNdICAgIHwgMgorIDQgfCAxIHwgWzEsIDIsIDNdICAgIHwgMworIDQg fCAxIHwgWzIsIDMsIDQsIDVdIHwgMgorIDQgfCAxIHwgWzIsIDMsIDQsIDVdIHwgMworIDQgfCAx IHwgWzIsIDMsIDQsIDVdIHwgNAorIDQgfCAxIHwgWzIsIDMsIDQsIDVdIHwgNQorIDQgfCAxIHwg WzMsIDQsIDUsIDZdIHwgMworIDQgfCAxIHwgWzMsIDQsIDUsIDZdIHwgNAorIDQgfCAxIHwgWzMs IDQsIDUsIDZdIHwgNQorIDQgfCAxIHwgWzMsIDQsIDUsIDZdIHwgNgorIDIgfCAyIHwgWzEsIDIs IDNdICAgIHwgMgorIDIgfCAyIHwgWzEsIDIsIDNdICAgIHwgMworIDMgfCAyIHwgWzEsIDIsIDNd ICAgIHwgMgorIDMgfCAyIHwgWzEsIDIsIDNdICAgIHwgMworIDMgfCAyIHwgWzIsIDMsIDQsIDVd IHwgMgorIDMgfCAyIHwgWzIsIDMsIDQsIDVdIHwgMworIDMgfCAyIHwgWzIsIDMsIDQsIDVdIHwg NAorIDMgfCAyIHwgWzIsIDMsIDQsIDVdIHwgNQorIDQgfCAyIHwgWzEsIDIsIDNdICAgIHwgMgor IDQgfCAyIHwgWzEsIDIsIDNdICAgIHwgMworIDQgfCAyIHwgWzIsIDMsIDQsIDVdIHwgMgorIDQg fCAyIHwgWzIsIDMsIDQsIDVdIHwgMworIDQgfCAyIHwgWzIsIDMsIDQsIDVdIHwgNAorIDQgfCAy IHwgWzIsIDMsIDQsIDVdIHwgNQorIDQgfCAyIHwgWzMsIDQsIDUsIDZdIHwgMworIDQgfCAyIHwg WzMsIDQsIDUsIDZdIHwgNAorIDQgfCAyIHwgWzMsIDQsIDUsIDZdIHwgNQorIDQgfCAyIHwgWzMs IDQsIDUsIDZdIHwgNgorIDIgfCAzIHwgWzEsIDIsIDNdICAgIHwgMworIDMgfCAzIHwgWzEsIDIs IDNdICAgIHwgMworIDMgfCAzIHwgWzIsIDMsIDQsIDVdIHwgMworIDMgfCAzIHwgWzIsIDMsIDQs IDVdIHwgNAorIDMgfCAzIHwgWzIsIDMsIDQsIDVdIHwgNQorIDQgfCAzIHwgWzEsIDIsIDNdICAg IHwgMworIDQgfCAzIHwgWzIsIDMsIDQsIDVdIHwgMworIDQgfCAzIHwgWzIsIDMsIDQsIDVdIHwg NAorIDQgfCAzIHwgWzIsIDMsIDQsIDVdIHwgNQorIDQgfCAzIHwgWzMsIDQsIDUsIDZdIHwgMwor IDQgfCAzIHwgWzMsIDQsIDUsIDZdIHwgNAorIDQgfCAzIHwgWzMsIDQsIDUsIDZdIHwgNQorIDQg fCAzIHwgWzMsIDQsIDUsIDZdIHwgNgorKDUyIHJvd3MpCisKKy0tIFNob3VsZCBmYWlsIChKU09O IGFyZ3VtZW50cyBhcmUgbm90IHBhc3NlZCB0byBjb2x1bW4gcGF0aHMpCitTRUxFQ1QgKgorRlJP TSBKU09OX1RBQkxFKAorCWpzb25iICdbMSwyLDNdJywKKwknJFsqXSA/IChAIDwgJHgpJworCQlQ QVNTSU5HIDEwIEFTIHgKKwkJQ09MVU1OUyAoeSB0ZXh0IEZPUk1BVCBKU09OIFBBVEggJyQgPyAo QCA8ICR4KScpCisJKSBqdDsKK0VSUk9SOiAgY291bGQgbm90IGZpbmQganNvbnBhdGggdmFyaWFi bGUgIngiCistLSBTaG91bGQgZmFpbCAobm90IHN1cHBvcnRlZCkKK1NFTEVDVCAqIEZST00gSlNP Tl9UQUJMRShqc29uYiAneyJhIjogMTIzfScsICckJyB8fCAnLicgfHwgJ2EnIENPTFVNTlMgKGZv byBpbnQpKTsKK0VSUk9SOiAgb25seSBzdHJpbmcgY29uc3RhbnRzIGFyZSBzdXBwb3J0ZWQgaW4g SlNPTl9UQUJMRSBwYXRoIHNwZWNpZmljYXRpb24KK0xJTkUgMTogU0VMRUNUICogRlJPTSBKU09O X1RBQkxFKGpzb25iICd7ImEiOiAxMjN9JywgJyQnIHx8ICcuJyB8fCAnLi4uCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KZGlmZiAtLWdpdCBh L3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUgYi9zcmMvdGVzdC9yZWdyZXNzL3Bh cmFsbGVsX3NjaGVkdWxlCmluZGV4IDkxMGY2ZmUzYzkuLmQ4ZTI1YmJkMmUgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKKysrIGIvc3JjL3Rlc3QvcmVncmVz cy9wYXJhbGxlbF9zY2hlZHVsZQpAQCAtMTAzLDcgKzEwMyw3IEBAIHRlc3Q6IHNlbGVjdF92aWV3 cyBwb3J0YWxzX3AyIGZvcmVpZ25fa2V5IGNsdXN0ZXIgZGVwZW5kZW5jeSBndWMgYml0bWFwb3Bz IGNvbWJvCiAjIC0tLS0tLS0tLS0KICMgQW5vdGhlciBncm91cCBvZiBwYXJhbGxlbCB0ZXN0cyAo SlNPTiByZWxhdGVkKQogIyAtLS0tLS0tLS0tCi10ZXN0OiBqc29uIGpzb25iIGpzb25fZW5jb2Rp bmcganNvbnBhdGgganNvbnBhdGhfZW5jb2RpbmcganNvbmJfanNvbnBhdGggc3FsanNvbiBzcWxq c29uX3F1ZXJ5ZnVuY3MKK3Rlc3Q6IGpzb24ganNvbmIganNvbl9lbmNvZGluZyBqc29ucGF0aCBq c29ucGF0aF9lbmNvZGluZyBqc29uYl9qc29ucGF0aCBzcWxqc29uIHNxbGpzb25fcXVlcnlmdW5j cyBzcWxqc29uX2pzb250YWJsZQogCiAjIC0tLS0tLS0tLS0KICMgQW5vdGhlciBncm91cCBvZiBw YXJhbGxlbCB0ZXN0cwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3FsanNvbl9q c29udGFibGUuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3FsanNvbl9qc29udGFibGUuc3Fs Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjY3N2ExNGZkYmMKLS0tIC9k ZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zcWxqc29uX2pzb250YWJsZS5zcWwK QEAgLTAsMCArMSw3MjkgQEAKKy0tIEpTT05fVEFCTEUKKworLS0gU2hvdWxkIGZhaWwgKEpTT05f VEFCTEUgY2FuIGJlIHVzZWQgb25seSBpbiBGUk9NIGNsYXVzZSkKK1NFTEVDVCBKU09OX1RBQkxF KCdbXScsICckJyk7CisKKy0tIFNob3VsZCBmYWlsIChqc29uIGFyZ3VtZW50IG5vdCBzdXBwb3J0 ZWQpCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoTlVMTCBGT1JNQVQgSlNPTiwgJyQnIENPTFVN TlMgKGZvbyB0ZXh0KSk7CisKKy0tIFNob3VsZCBmYWlsIChubyBjb2x1bW5zKQorU0VMRUNUICog RlJPTSBKU09OX1RBQkxFKE5VTEwsICckJyBDT0xVTU5TICgpKTsKKworU0VMRUNUICogRlJPTSBK U09OX1RBQkxFIChOVUxMOjpqc29uYiwgJyQnIENPTFVNTlMgKHYxIHRpbWVzdGFtcCkpIEFTIGYg KHYxLCB2Mik7CisKKy0tIE5VTEwgPT4gZW1wdHkgdGFibGUKK1NFTEVDVCAqIEZST00gSlNPTl9U QUJMRShOVUxMOjpqc29uYiwgJyQnIENPTFVNTlMgKGZvbyBpbnQpKSBiYXI7CisKKy0tCitTRUxF Q1QgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIgJzEyMycsICckJworCUNPTFVNTlMgKGl0ZW0gaW50 IFBBVEggJyQnLCBmb28gaW50KSkgYmFyOworCistLSBKU09OX1RBQkxFOiBiYXNpYyBmdW5jdGlv bmFsaXR5CitDUkVBVEUgRE9NQUlOIGpzb25iX3Rlc3RfZG9tYWluIEFTIHRleHQgQ0hFQ0sgKHZh bHVlIDw+ICdmb28nKTsKK0NSRUFURSBURU1QIFRBQkxFIGpzb25fdGFibGVfdGVzdCAoanMpIEFT CisJKFZBTFVFUworCQkoJzEnKSwKKwkJKCdbXScpLAorCQkoJ3t9JyksCisJCSgnWzEsIDEuMjMs ICIyIiwgImFhYWFhYWEiLCAiZm9vIiwgbnVsbCwgZmFsc2UsIHRydWUsIHsiYWFhIjogMTIzfSwg IlsxLDJdIiwgIlwic3RyXCIiXScpCisJKTsKKworLS0gUmVndWxhciAidW5mb3JtYXR0ZWQiIGNv bHVtbnMKK1NFTEVDVCAqCitGUk9NIGpzb25fdGFibGVfdGVzdCB2YWxzCisJTEVGVCBPVVRFUiBK T0lOCisJSlNPTl9UQUJMRSgKKwkJdmFscy5qczo6anNvbmIsICdsYXggJFsqXScKKwkJQ09MVU1O UyAoCisJCQlpZCBGT1IgT1JESU5BTElUWSwKKwkJCSJpbnQiIGludCBQQVRIICckJywKKwkJCSJ0 ZXh0IiB0ZXh0IFBBVEggJyQnLAorCQkJImNoYXIoNCkiIGNoYXIoNCkgUEFUSCAnJCcsCisJCQki Ym9vbCIgYm9vbCBQQVRIICckJywKKwkJCSJudW1lcmljIiBudW1lcmljIFBBVEggJyQnLAorCQkJ ImRvbWFpbiIganNvbmJfdGVzdF9kb21haW4gUEFUSCAnJCcsCisJCQlqcyBqc29uIFBBVEggJyQn LAorCQkJamIganNvbmIgUEFUSCAnJCcKKwkJKQorCSkganQKKwlPTiB0cnVlOworCistLSAiZm9y bWF0dGVkIiBjb2x1bW5zCitTRUxFQ1QgKgorRlJPTSBqc29uX3RhYmxlX3Rlc3QgdmFscworCUxF RlQgT1VURVIgSk9JTgorCUpTT05fVEFCTEUoCisJCXZhbHMuanM6Ompzb25iLCAnbGF4ICRbKl0n CisJCUNPTFVNTlMgKAorCQkJaWQgRk9SIE9SRElOQUxJVFksCisJCQlqc3QgdGV4dCAgICBGT1JN QVQgSlNPTiAgUEFUSCAnJCcsCisJCQlqc2MgY2hhcig0KSBGT1JNQVQgSlNPTiAgUEFUSCAnJCcs CisJCQlqc3YgdmFyY2hhcig0KSBGT1JNQVQgSlNPTiAgUEFUSCAnJCcsCisJCQlqc2IganNvbmIg Rk9STUFUIEpTT04gUEFUSCAnJCcsCisJCQlqc2JxIGpzb25iIEZPUk1BVCBKU09OIFBBVEggJyQn IE9NSVQgUVVPVEVTCisJCSkKKwkpIGp0CisJT04gdHJ1ZTsKKworLS0gRVhJU1RTIGNvbHVtbnMK K1NFTEVDVCAqCitGUk9NIGpzb25fdGFibGVfdGVzdCB2YWxzCisJTEVGVCBPVVRFUiBKT0lOCisJ SlNPTl9UQUJMRSgKKwkJdmFscy5qczo6anNvbmIsICdsYXggJFsqXScKKwkJQ09MVU1OUyAoCisJ CQlpZCBGT1IgT1JESU5BTElUWSwKKwkJCWV4aXN0czEgYm9vbCBFWElTVFMgUEFUSCAnJC5hYWEn LAorCQkJZXhpc3RzMiBpbnQgRVhJU1RTIFBBVEggJyQuYWFhJywKKwkJCWV4aXN0czMgaW50IEVY SVNUUyBQQVRIICdzdHJpY3QgJC5hYWEnIFVOS05PV04gT04gRVJST1IsCisJCQlleGlzdHM0IHRl eHQgRVhJU1RTIFBBVEggJ3N0cmljdCAkLmFhYScgRkFMU0UgT04gRVJST1IKKwkJKQorCSkganQK KwlPTiB0cnVlOworCistLSBPdGhlciBtaXNjZWxsYW5vdXMgY2hlY2tzCitTRUxFQ1QgKgorRlJP TSBqc29uX3RhYmxlX3Rlc3QgdmFscworCUxFRlQgT1VURVIgSk9JTgorCUpTT05fVEFCTEUoCisJ CXZhbHMuanM6Ompzb25iLCAnbGF4ICRbKl0nCisJCUNPTFVNTlMgKAorCQkJaWQgRk9SIE9SRElO QUxJVFksCisJCQlhYWEgaW50LCAtLSAiYWFhIiBoYXMgaW1wbGljaXQgcGF0aCAnJC4iYWFhIicK KwkJCWFhYTEgaW50IFBBVEggJyQuYWFhJywKKwkJCWpzMiBqc29uIFBBVEggJyQnLAorCQkJanNi MncganNvbmIgUEFUSCAnJCcgV0lUSCBXUkFQUEVSLAorCQkJanNiMnEganNvbmIgUEFUSCAnJCcg T01JVCBRVU9URVMsCisJCQlpYSBpbnRbXSBQQVRIICckJywKKwkJCXRhIHRleHRbXSBQQVRIICck JywKKwkJCWpiYSBqc29uYltdIFBBVEggJyQnCisJCSkKKwkpIGp0CisJT04gdHJ1ZTsKKworLS0g SlNPTl9UQUJMRTogVGVzdCBiYWNrd2FyZCBwYXJzaW5nCisKK0NSRUFURSBWSUVXIGpzb25iX3Rh YmxlX3ZpZXcxIEFTCitTRUxFQ1QgKiBGUk9NCisJSlNPTl9UQUJMRSgKKwkJanNvbmIgJ251bGwn LCAnbGF4ICRbKl0nIFBBU1NJTkcgMSArIDIgQVMgYSwganNvbiAnImZvbyInIEFTICJiIGMiCisJ CUNPTFVNTlMgKAorCQkJaWQgRk9SIE9SRElOQUxJVFksCisJCQlORVNURUQgUEFUSCAnJFsxXScg QVMgcDEgQ09MVU1OUyAoCisJCQkJYTEgaW50LAorCQkJCU5FU1RFRCBQQVRIICckWypdJyBBUyAi cDEgMSIgQ09MVU1OUyAoCisJCQkJCWExMSB0ZXh0CisJCQkJKSwKKwkJCQliMSB0ZXh0CisJCQkp LAorCQkJTkVTVEVEIFBBVEggJyRbMl0nIEFTIHAyIENPTFVNTlMgKAorCQkJCU5FU1RFRCBQQVRI ICckWypdJyBBUyAicDI6MSIgQ09MVU1OUyAoCisJCQkJCWEyMSB0ZXh0CisJCQkJKSwKKwkJCQlO RVNURUQgUEFUSCAnJFsqXScgQVMgcDIyIENPTFVNTlMgKAorCQkJCQlhMjIgdGV4dAorCQkJCSkK KwkJCSkKKwkJKQorCSk7CisKK0NSRUFURSBWSUVXIGpzb25iX3RhYmxlX3ZpZXcyIEFTCitTRUxF Q1QgKiBGUk9NCisJSlNPTl9UQUJMRSgKKwkJanNvbmIgJ251bGwnLCAnbGF4ICRbKl0nIFBBU1NJ TkcgMSArIDIgQVMgYSwganNvbiAnImZvbyInIEFTICJiIGMiCisJCUNPTFVNTlMgKAorCQkJImlu dCIgaW50IFBBVEggJyQnLAorCQkJInRleHQiIHRleHQgUEFUSCAnJCcsCisJCQkiY2hhcig0KSIg Y2hhcig0KSBQQVRIICckJywKKwkJCSJib29sIiBib29sIFBBVEggJyQnLAorCQkJIm51bWVyaWMi IG51bWVyaWMgUEFUSCAnJCcsCisJCQkiZG9tYWluIiBqc29uYl90ZXN0X2RvbWFpbiBQQVRIICck JykpOworCitDUkVBVEUgVklFVyBqc29uYl90YWJsZV92aWV3MyBBUworU0VMRUNUICogRlJPTQor CUpTT05fVEFCTEUoCisJCWpzb25iICdudWxsJywgJ2xheCAkWypdJyBQQVNTSU5HIDEgKyAyIEFT IGEsIGpzb24gJyJmb28iJyBBUyAiYiBjIgorCQlDT0xVTU5TICgKKwkJCWpzIGpzb24gUEFUSCAn JCcsCisJCQlqYiBqc29uYiBQQVRIICckJywKKwkJCWpzdCB0ZXh0ICAgIEZPUk1BVCBKU09OICBQ QVRIICckJywKKwkJCWpzYyBjaGFyKDQpIEZPUk1BVCBKU09OICBQQVRIICckJywKKwkJCWpzdiB2 YXJjaGFyKDQpIEZPUk1BVCBKU09OICBQQVRIICckJykpOworCitDUkVBVEUgVklFVyBqc29uYl90 YWJsZV92aWV3NCBBUworU0VMRUNUICogRlJPTQorCUpTT05fVEFCTEUoCisJCWpzb25iICdudWxs JywgJ2xheCAkWypdJyBQQVNTSU5HIDEgKyAyIEFTIGEsIGpzb24gJyJmb28iJyBBUyAiYiBjIgor CQlDT0xVTU5TICgKKyAgICAgICAgICAgIGpzYiBqc29uYiAgIEZPUk1BVCBKU09OIFBBVEggJyQn LAorICAgICAgICAgICAganNicSBqc29uYiBGT1JNQVQgSlNPTiBQQVRIICckJyBPTUlUIFFVT1RF UywKKyAgICAgICAgICAgIGFhYSBpbnQsIC0tIGltcGxpY2l0IHBhdGggJyQuImFhYSInLAorICAg ICAgICAgICAgYWFhMSBpbnQgUEFUSCAnJC5hYWEnKSk7CisKK0NSRUFURSBWSUVXIGpzb25iX3Rh YmxlX3ZpZXc1IEFTCitTRUxFQ1QgKiBGUk9NCisJSlNPTl9UQUJMRSgKKwkJanNvbmIgJ251bGwn LCAnbGF4ICRbKl0nIFBBU1NJTkcgMSArIDIgQVMgYSwganNvbiAnImZvbyInIEFTICJiIGMiCisJ CUNPTFVNTlMgKAorCQkJZXhpc3RzMSBib29sIEVYSVNUUyBQQVRIICckLmFhYScsCisJCQlleGlz dHMyIGludCBFWElTVFMgUEFUSCAnJC5hYWEnIFRSVUUgT04gRVJST1IsCisJCQlleGlzdHMzIHRl eHQgRVhJU1RTIFBBVEggJ3N0cmljdCAkLmFhYScgVU5LTk9XTiBPTiBFUlJPUikpOworCitDUkVB VEUgVklFVyBqc29uYl90YWJsZV92aWV3NiBBUworU0VMRUNUICogRlJPTQorCUpTT05fVEFCTEUo CisJCWpzb25iICdudWxsJywgJ2xheCAkWypdJyBQQVNTSU5HIDEgKyAyIEFTIGEsIGpzb24gJyJm b28iJyBBUyAiYiBjIgorCQlDT0xVTU5TICgKKwkJCWpzMiBqc29uIFBBVEggJyQnLAorCQkJanNi MncganNvbmIgUEFUSCAnJCcgV0lUSCBXUkFQUEVSLAorCQkJanNiMnEganNvbmIgUEFUSCAnJCcg T01JVCBRVU9URVMsCisJCQlpYSBpbnRbXSBQQVRIICckJywKKwkJCXRhIHRleHRbXSBQQVRIICck JywKKwkJCWpiYSBqc29uYltdIFBBVEggJyQnKSk7CisKK1xzdiBqc29uYl90YWJsZV92aWV3MQor XHN2IGpzb25iX3RhYmxlX3ZpZXcyCitcc3YganNvbmJfdGFibGVfdmlldzMKK1xzdiBqc29uYl90 YWJsZV92aWV3NAorXHN2IGpzb25iX3RhYmxlX3ZpZXc1Citcc3YganNvbmJfdGFibGVfdmlldzYK KworRVhQTEFJTiAoQ09TVFMgT0ZGLCBWRVJCT1NFKSBTRUxFQ1QgKiBGUk9NIGpzb25iX3RhYmxl X3ZpZXcxOworRVhQTEFJTiAoQ09TVFMgT0ZGLCBWRVJCT1NFKSBTRUxFQ1QgKiBGUk9NIGpzb25i X3RhYmxlX3ZpZXcyOworRVhQTEFJTiAoQ09TVFMgT0ZGLCBWRVJCT1NFKSBTRUxFQ1QgKiBGUk9N IGpzb25iX3RhYmxlX3ZpZXczOworRVhQTEFJTiAoQ09TVFMgT0ZGLCBWRVJCT1NFKSBTRUxFQ1Qg KiBGUk9NIGpzb25iX3RhYmxlX3ZpZXc0OworRVhQTEFJTiAoQ09TVFMgT0ZGLCBWRVJCT1NFKSBT RUxFQ1QgKiBGUk9NIGpzb25iX3RhYmxlX3ZpZXc1OworRVhQTEFJTiAoQ09TVFMgT0ZGLCBWRVJC T1NFKSBTRUxFQ1QgKiBGUk9NIGpzb25iX3RhYmxlX3ZpZXc2OworCistLSBKU09OX1RBQkxFKCkg d2l0aCBhbGlhcworRVhQTEFJTiAoQ09TVFMgT0ZGLCBWRVJCT1NFKQorU0VMRUNUICogRlJPTQor CUpTT05fVEFCTEUoCisJCWpzb25iICdudWxsJywgJ2xheCAkWypdJyBQQVNTSU5HIDEgKyAyIEFT IGEsIGpzb24gJyJmb28iJyBBUyAiYiBjIgorCQlDT0xVTU5TICgKKwkJCWlkIEZPUiBPUkRJTkFM SVRZLAorCQkJImludCIgaW50IFBBVEggJyQnLAorCQkJInRleHQiIHRleHQgUEFUSCAnJCcKKwkp KSBqc29uX3RhYmxlX2Z1bmM7CisKK0RST1AgVklFVyBqc29uYl90YWJsZV92aWV3MTsKK0RST1Ag VklFVyBqc29uYl90YWJsZV92aWV3MjsKK0RST1AgVklFVyBqc29uYl90YWJsZV92aWV3MzsKK0RS T1AgVklFVyBqc29uYl90YWJsZV92aWV3NDsKK0RST1AgVklFVyBqc29uYl90YWJsZV92aWV3NTsK K0RST1AgVklFVyBqc29uYl90YWJsZV92aWV3NjsKK0RST1AgRE9NQUlOIGpzb25iX3Rlc3RfZG9t YWluOworCistLSBKU09OX1RBQkxFOiBvbmx5IG9uZSBGT1IgT1JESU5BTElUWSBjb2x1bW5zIGFs bG93ZWQKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnMScsICckJyBDT0xVTU5TIChp ZCBGT1IgT1JESU5BTElUWSwgaWQyIEZPUiBPUkRJTkFMSVRZLCBhIGludCBQQVRIICckLmEnIEVS Uk9SIE9OIEVNUFRZKSkganQ7CitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIgJzEnLCAn JCcgQ09MVU1OUyAoaWQgRk9SIE9SRElOQUxJVFksIGEgaW50IFBBVEggJyQnIEVSUk9SIE9OIEVN UFRZKSkganQ7CisKKy0tIEpTT05fVEFCTEU6IE9OIEVNUFRZL09OIEVSUk9SIGJlaGF2aW9yCitT RUxFQ1QgKgorRlJPTQorCShWQUxVRVMgKCcxJyksICgnImVyciInKSkgdmFscyhqcyksCisJSlNP Tl9UQUJMRSh2YWxzLmpzOjpqc29uYiwgJyQnIENPTFVNTlMgKGEgaW50IFBBVEggJyQnKSkganQ7 CisKK1NFTEVDVCAqCitGUk9NCisJKFZBTFVFUyAoJzEnKSwgKCciZXJyIicpKSB2YWxzKGpzKQor CQlMRUZUIE9VVEVSIEpPSU4KKwlKU09OX1RBQkxFKHZhbHMuanM6Ompzb25iLCAnJCcgQ09MVU1O UyAoYSBpbnQgUEFUSCAnJCcpIEVSUk9SIE9OIEVSUk9SKSBqdAorCQlPTiB0cnVlOworCitTRUxF Q1QgKgorRlJPTQorCShWQUxVRVMgKCcxJyksICgnImVyciInKSkgdmFscyhqcykKKwkJTEVGVCBP VVRFUiBKT0lOCisJSlNPTl9UQUJMRSh2YWxzLmpzOjpqc29uYiwgJyQnIENPTFVNTlMgKGEgaW50 IFBBVEggJyQnIEVSUk9SIE9OIEVSUk9SKSkganQKKwkJT04gdHJ1ZTsKKworU0VMRUNUICogRlJP TSBKU09OX1RBQkxFKGpzb25iICcxJywgJyQnIENPTFVNTlMgKGEgaW50IFBBVEggJyQuYScgRVJS T1IgT04gRU1QVFkpKSBqdDsKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnMScsICck JyBDT0xVTU5TIChhIGludCBQQVRIICdzdHJpY3QgJC5hJyBFUlJPUiBPTiBFTVBUWSkgRVJST1Ig T04gRVJST1IpIGp0OworU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICcxJywgJyQnIENP TFVNTlMgKGEgaW50IFBBVEggJ2xheCAkLmEnIEVSUk9SIE9OIEVNUFRZKSBFUlJPUiBPTiBFUlJP UikganQ7CisKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnImEiJywgJyQnIENPTFVN TlMgKGEgaW50IFBBVEggJyQnICAgREVGQVVMVCAxIE9OIEVNUFRZIERFRkFVTFQgMiBPTiBFUlJP UikpIGp0OworU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICciYSInLCAnJCcgQ09MVU1O UyAoYSBpbnQgUEFUSCAnc3RyaWN0ICQuYScgREVGQVVMVCAxIE9OIEVNUFRZIERFRkFVTFQgMiBP TiBFUlJPUikpIGp0OworU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICciYSInLCAnJCcg Q09MVU1OUyAoYSBpbnQgUEFUSCAnbGF4ICQuYScgREVGQVVMVCAxIE9OIEVNUFRZIERFRkFVTFQg MiBPTiBFUlJPUikpIGp0OworCistLSBKU09OX1RBQkxFOiBFWElTVFMgUEFUSCB0eXBlcworU0VM RUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICciYSInLCAnJCcgQ09MVU1OUyAoYSBpbnQ0IEVY SVNUUyBQQVRIICckLmEnKSk7CitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIgJyJhIics ICckJyBDT0xVTU5TIChhIGludDIgRVhJU1RTIFBBVEggJyQuYScpKTsKK1NFTEVDVCAqIEZST00g SlNPTl9UQUJMRShqc29uYiAnImEiJywgJyQnIENPTFVNTlMgKGEgaW50OCBFWElTVFMgUEFUSCAn JC5hJykpOworU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICciYSInLCAnJCcgQ09MVU1O UyAoYSBmbG9hdDQgRVhJU1RTIFBBVEggJyQuYScpKTsKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJM RShqc29uYiAnImEiJywgJyQnIENPTFVNTlMgKGEgY2hhcigzKSBFWElTVFMgUEFUSCAnJC5hJykp OworU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICciYSInLCAnJCcgQ09MVU1OUyAoYSBq c29uIEVYSVNUUyBQQVRIICckLmEnKSk7CitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIg JyJhIicsICckJyBDT0xVTU5TIChhIGpzb25iIEVYSVNUUyBQQVRIICckLmEnKSk7CisKKy0tIEpT T05fVEFCTEU6IFdSQVBQRVIvUVVPVEVTIGNsYXVzZXMgb24gc2NhbGFyIGNvbHVtbnMKK1NFTEVD VCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnIndvcmxkIicsICckJyBDT0xVTU5TIChpdGVtIHRl eHQgUEFUSCAnJCcgS0VFUCBRVU9URVMgT04gU0NBTEFSIFNUUklORykpOworU0VMRUNUICogRlJP TSBKU09OX1RBQkxFKGpzb25iICcid29ybGQiJywgJyQnIENPTFVNTlMgKGl0ZW0gdGV4dCBQQVRI ICckJyBPTUlUIFFVT1RFUyBPTiBTQ0FMQVIgU1RSSU5HKSk7CitTRUxFQ1QgKiBGUk9NIEpTT05f VEFCTEUoanNvbmIgJyJ3b3JsZCInLCAnJCcgQ09MVU1OUyAoaXRlbSB0ZXh0IEZPUk1BVCBKU09O IFBBVEggJyQnIEtFRVAgUVVPVEVTKSk7CitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIg JyJ3b3JsZCInLCAnJCcgQ09MVU1OUyAoaXRlbSB0ZXh0IEZPUk1BVCBKU09OIFBBVEggJyQnIE9N SVQgUVVPVEVTKSk7CitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIgJyJ3b3JsZCInLCAn JCcgQ09MVU1OUyAoaXRlbSB0ZXh0IEZPUk1BVCBKU09OIFBBVEggJyQnIFdJVEhPVVQgV1JBUFBF UiBLRUVQIFFVT1RFUykpOworU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICcid29ybGQi JywgJyQnIENPTFVNTlMgKGl0ZW0gdGV4dCBQQVRIICckJyBXSVRIT1VUIFdSQVBQRVIgT01JVCBR VU9URVMpKTsKKworU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICcid29ybGQiJywgJyQn IENPTFVNTlMgKGl0ZW0gdGV4dCBGT1JNQVQgSlNPTiBQQVRIICckJyBXSVRIIFdSQVBQRVIpKTsK KworLS0gRXJyb3I6IFFVT1RFUyBjbGF1c2UgbWVhbmluZ2xlc3Mgd2hlbiBXSVRIIFdSQVBQRVIg aXMgcHJlc2VudAorU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICcid29ybGQiJywgJyQn IENPTFVNTlMgKGl0ZW0gdGV4dCBGT1JNQVQgSlNPTiBQQVRIICckJyBXSVRIIFdSQVBQRVIgS0VF UCBRVU9URVMpKTsKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnIndvcmxkIicsICck JyBDT0xVTU5TIChpdGVtIHRleHQgUEFUSCAnJCcgV0lUSCBXUkFQUEVSIE9NSVQgUVVPVEVTKSk7 CisKKy0tIEpTT05fVEFCTEU6IG5lc3RlZCBwYXRocyBhbmQgcGxhbnMKKworLS0gU2hvdWxkIGZh aWwgKEpTT05fVEFCTEUgY29sdW1ucyBtdXN0IGNvbnRhaW4gZXhwbGljaXQgQVMgcGF0aAorLS0g c3BlY2lmaWNhdGlvbnMgaWYgZXhwbGljaXQgUExBTiBjbGF1c2UgaXMgdXNlZCkKK1NFTEVDVCAq IEZST00gSlNPTl9UQUJMRSgKKwlqc29uYiAnW10nLCAnJCcgLS0gQVMgPHBhdGggbmFtZT4gcmVx dWlyZWQgaGVyZQorCUNPTFVNTlMgKAorCQlmb28gaW50IFBBVEggJyQnCisJKQorCVBMQU4gREVG QVVMVCAoVU5JT04pCispIGp0OworCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoCisJanNvbmIg J1tdJywgJyQnIEFTIHBhdGgxCisJQ09MVU1OUyAoCisJCU5FU1RFRCBQQVRIICckJyBDT0xVTU5T ICggLS0gQVMgPHBhdGggbmFtZT4gcmVxdWlyZWQgaGVyZQorCQkJZm9vIGludCBQQVRIICckJwor CQkpCisJKQorCVBMQU4gREVGQVVMVCAoVU5JT04pCispIGp0OworCistLSBTaG91bGQgZmFpbCAo Y29sdW1uIG5hbWVzIG11c3QgYmUgZGlzdGluY3QpCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUo CisJanNvbmIgJ1tdJywgJyQnIEFTIGEKKwlDT0xVTU5TICgKKwkJYSBpbnQKKwkpCispIGp0Owor CitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoCisJanNvbmIgJ1tdJywgJyQnIEFTIGEKKwlDT0xV TU5TICgKKwkJYiBpbnQsCisJCU5FU1RFRCBQQVRIICckJyBBUyBhCisJCUNPTFVNTlMgKAorCQkJ YyBpbnQKKwkJKQorCSkKKykganQ7CisKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRSgKKwlqc29u YiAnW10nLCAnJCcKKwlDT0xVTU5TICgKKwkJYiBpbnQsCisJCU5FU1RFRCBQQVRIICckJyBBUyBi CisJCUNPTFVNTlMgKAorCQkJYyBpbnQKKwkJKQorCSkKKykganQ7CisKK1NFTEVDVCAqIEZST00g SlNPTl9UQUJMRSgKKwlqc29uYiAnW10nLCAnJCcKKwlDT0xVTU5TICgKKwkJTkVTVEVEIFBBVEgg JyQnIEFTIGEKKwkJQ09MVU1OUyAoCisJCQliIGludAorCQkpLAorCQlORVNURUQgUEFUSCAnJCcK KwkJQ09MVU1OUyAoCisJCQlORVNURUQgUEFUSCAnJCcgQVMgYQorCQkJQ09MVU1OUyAoCisJCQkJ YyBpbnQKKwkJCSkKKwkJKQorCSkKKykganQ7CisKKy0tIEpTT05fVEFCTEU6IHBsYW4gdmFsaWRh dGlvbgorCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoCisJanNvbmIgJ251bGwnLCAnJFsqXScg QVMgcDAKKwlDT0xVTU5TICgKKwkJTkVTVEVEICckJyBBUyBwMSBDT0xVTU5TICgKKwkJCU5FU1RF RCBQQVRIICckJyBBUyBwMTEgQ09MVU1OUyAoIGZvbyBpbnQgKSwKKwkJCU5FU1RFRCBQQVRIICck JyBBUyBwMTIgQ09MVU1OUyAoIGJhciBpbnQgKQorCQkpLAorCQlORVNURUQgUEFUSCAnJCcgQVMg cDIgQ09MVU1OUyAoCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDIxIENPTFVNTlMgKCBiYXogaW50 ICkKKwkJKQorCSkKKwlQTEFOIChwMSkKKykganQ7CisKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJM RSgKKwlqc29uYiAnbnVsbCcsICckWypdJyBBUyBwMAorCUNPTFVNTlMgKAorCQlORVNURUQgUEFU SCAnJCcgQVMgcDEgQ09MVU1OUyAoCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDExIENPTFVNTlMg KCBmb28gaW50ICksCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDEyIENPTFVNTlMgKCBiYXIgaW50 ICkKKwkJKSwKKwkJTkVTVEVEIFBBVEggJyQnIEFTIHAyIENPTFVNTlMgKAorCQkJTkVTVEVEIFBB VEggJyQnIEFTIHAyMSBDT0xVTU5TICggYmF6IGludCApCisJCSkKKwkpCisJUExBTiAocDApCisp IGp0OworCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoCisJanNvbmIgJ251bGwnLCAnJFsqXScg QVMgcDAKKwlDT0xVTU5TICgKKwkJTkVTVEVEIFBBVEggJyQnIEFTIHAxIENPTFVNTlMgKAorCQkJ TkVTVEVEIFBBVEggJyQnIEFTIHAxMSBDT0xVTU5TICggZm9vIGludCApLAorCQkJTkVTVEVEIFBB VEggJyQnIEFTIHAxMiBDT0xVTU5TICggYmFyIGludCApCisJCSksCisJCU5FU1RFRCBQQVRIICck JyBBUyBwMiBDT0xVTU5TICgKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMjEgQ09MVU1OUyAoIGJh eiBpbnQgKQorCQkpCisJKQorCVBMQU4gKHAwIE9VVEVSIHAzKQorKSBqdDsKKworU0VMRUNUICog RlJPTSBKU09OX1RBQkxFKAorCWpzb25iICdudWxsJywgJyRbKl0nIEFTIHAwCisJQ09MVU1OUyAo CisJCU5FU1RFRCBQQVRIICckJyBBUyBwMSBDT0xVTU5TICgKKwkJCU5FU1RFRCBQQVRIICckJyBB UyBwMTEgQ09MVU1OUyAoIGZvbyBpbnQgKSwKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMTIgQ09M VU1OUyAoIGJhciBpbnQgKQorCQkpLAorCQlORVNURUQgUEFUSCAnJCcgQVMgcDIgQ09MVU1OUyAo CisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDIxIENPTFVNTlMgKCBiYXogaW50ICkKKwkJKQorCSkK KwlQTEFOIChwMCBVTklPTiBwMSBVTklPTiBwMTEpCispIGp0OworCitTRUxFQ1QgKiBGUk9NIEpT T05fVEFCTEUoCisJanNvbmIgJ251bGwnLCAnJFsqXScgQVMgcDAKKwlDT0xVTU5TICgKKwkJTkVT VEVEIFBBVEggJyQnIEFTIHAxIENPTFVNTlMgKAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAxMSBD T0xVTU5TICggZm9vIGludCApLAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAxMiBDT0xVTU5TICgg YmFyIGludCApCisJCSksCisJCU5FU1RFRCBQQVRIICckJyBBUyBwMiBDT0xVTU5TICgKKwkJCU5F U1RFRCBQQVRIICckJyBBUyBwMjEgQ09MVU1OUyAoIGJheiBpbnQgKQorCQkpCisJKQorCVBMQU4g KHAwIE9VVEVSIChwMSBDUk9TUyBwMTMpKQorKSBqdDsKKworU0VMRUNUICogRlJPTSBKU09OX1RB QkxFKAorCWpzb25iICdudWxsJywgJyRbKl0nIEFTIHAwCisJQ09MVU1OUyAoCisJCU5FU1RFRCBQ QVRIICckJyBBUyBwMSBDT0xVTU5TICgKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMTEgQ09MVU1O UyAoIGZvbyBpbnQgKSwKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMTIgQ09MVU1OUyAoIGJhciBp bnQgKQorCQkpLAorCQlORVNURUQgUEFUSCAnJCcgQVMgcDIgQ09MVU1OUyAoCisJCQlORVNURUQg UEFUSCAnJCcgQVMgcDIxIENPTFVNTlMgKCBiYXogaW50ICkKKwkJKQorCSkKKwlQTEFOIChwMCBP VVRFUiAocDEgQ1JPU1MgcDIpKQorKSBqdDsKKworU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKAor CWpzb25iICdudWxsJywgJyRbKl0nIEFTIHAwCisJQ09MVU1OUyAoCisJCU5FU1RFRCBQQVRIICck JyBBUyBwMSBDT0xVTU5TICgKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMTEgQ09MVU1OUyAoIGZv byBpbnQgKSwKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMTIgQ09MVU1OUyAoIGJhciBpbnQgKQor CQkpLAorCQlORVNURUQgUEFUSCAnJCcgQVMgcDIgQ09MVU1OUyAoCisJCQlORVNURUQgUEFUSCAn JCcgQVMgcDIxIENPTFVNTlMgKCBiYXogaW50ICkKKwkJKQorCSkKKwlQTEFOIChwMCBPVVRFUiAo KHAxIFVOSU9OIHAxMSkgQ1JPU1MgcDIpKQorKSBqdDsKKworU0VMRUNUICogRlJPTSBKU09OX1RB QkxFKAorCWpzb25iICdudWxsJywgJyRbKl0nIEFTIHAwCisJQ09MVU1OUyAoCisJCU5FU1RFRCBQ QVRIICckJyBBUyBwMSBDT0xVTU5TICgKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMTEgQ09MVU1O UyAoIGZvbyBpbnQgKSwKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMTIgQ09MVU1OUyAoIGJhciBp bnQgKQorCQkpLAorCQlORVNURUQgUEFUSCAnJCcgQVMgcDIgQ09MVU1OUyAoCisJCQlORVNURUQg UEFUSCAnJCcgQVMgcDIxIENPTFVNTlMgKCBiYXogaW50ICkKKwkJKQorCSkKKwlQTEFOIChwMCBP VVRFUiAoKHAxIElOTkVSIHAxMSkgQ1JPU1MgcDIpKQorKSBqdDsKKworU0VMRUNUICogRlJPTSBK U09OX1RBQkxFKAorCWpzb25iICdudWxsJywgJyRbKl0nIEFTIHAwCisJQ09MVU1OUyAoCisJCU5F U1RFRCBQQVRIICckJyBBUyBwMSBDT0xVTU5TICgKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMTEg Q09MVU1OUyAoIGZvbyBpbnQgKSwKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMTIgQ09MVU1OUyAo IGJhciBpbnQgKQorCQkpLAorCQlORVNURUQgUEFUSCAnJCcgQVMgcDIgQ09MVU1OUyAoCisJCQlO RVNURUQgUEFUSCAnJCcgQVMgcDIxIENPTFVNTlMgKCBiYXogaW50ICkKKwkJKQorCSkKKwlQTEFO IChwMCBPVVRFUiAoKHAxIElOTkVSIChwMTIgQ1JPU1MgcDExKSkgQ1JPU1MgcDIpKQorKSBqdDsK KworU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKAorCWpzb25iICdudWxsJywgJ3N0cmljdCAkWypd JyBBUyBwMAorCUNPTFVNTlMgKAorCQlORVNURUQgUEFUSCAnJCcgQVMgcDEgQ09MVU1OUyAoCisJ CQlORVNURUQgUEFUSCAnJCcgQVMgcDExIENPTFVNTlMgKCBmb28gaW50ICksCisJCQlORVNURUQg UEFUSCAnJCcgQVMgcDEyIENPTFVNTlMgKCBiYXIgaW50ICkKKwkJKSwKKwkJTkVTVEVEIFBBVEgg JyQnIEFTIHAyIENPTFVNTlMgKAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAyMSBDT0xVTU5TICgg YmF6IGludCApCisJCSkKKwkpCisJUExBTiAocDAgT1VURVIgKChwMSBJTk5FUiAocDEyIENST1NT IHAxMSkpIENST1NTIChwMiBJTk5FUiBwMjEpKSkKKykganQ7CisKK1NFTEVDVCAqIEZST00gSlNP Tl9UQUJMRSgKKwlqc29uYiAnbnVsbCcsICdzdHJpY3QgJFsqXScgLS0gd2l0aG91dCByb290IHBh dGggbmFtZQorCUNPTFVNTlMgKAorCQlORVNURUQgUEFUSCAnJCcgQVMgcDEgQ09MVU1OUyAoCisJ CQlORVNURUQgUEFUSCAnJCcgQVMgcDExIENPTFVNTlMgKCBmb28gaW50ICksCisJCQlORVNURUQg UEFUSCAnJCcgQVMgcDEyIENPTFVNTlMgKCBiYXIgaW50ICkKKwkJKSwKKwkJTkVTVEVEIFBBVEgg JyQnIEFTIHAyIENPTFVNTlMgKAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAyMSBDT0xVTU5TICgg YmF6IGludCApCisJCSkKKwkpCisJUExBTiAoKHAxIElOTkVSIChwMTIgQ1JPU1MgcDExKSkgQ1JP U1MgKHAyIElOTkVSIHAyMSkpCispIGp0OworCistLSBKU09OX1RBQkxFOiBwbGFuIGV4ZWN1dGlv bgorCitDUkVBVEUgVEVNUCBUQUJMRSBqc29uYl90YWJsZV90ZXN0IChqcyBqc29uYik7CisKK0lO U0VSVCBJTlRPIGpzb25iX3RhYmxlX3Rlc3QKK1ZBTFVFUyAoCisJJ1sKKwkJeyJhIjogIDEsICAi YiI6IFtdLCAiYyI6IFtdfSwKKwkJeyJhIjogIDIsICAiYiI6IFsxLCAyLCAzXSwgImMiOiBbMTAs IG51bGwsIDIwXX0sCisJCXsiYSI6ICAzLCAgImIiOiBbMSwgMl0sICJjIjogW119LAorCQl7Ingi OiAiNCIsICJiIjogWzEsIDJdLCAiYyI6IDEyM30KKwkgXScKKyk7CisKKy0tIHVuc3BlY2lmaWVk IHBsYW4gKG91dGVyLCB1bmlvbikKK3NlbGVjdAorCWp0LioKK2Zyb20KKwlqc29uYl90YWJsZV90 ZXN0IGp0dCwKKwlqc29uX3RhYmxlICgKKwkJanR0LmpzLCdzdHJpY3QgJFsqXScgYXMgcAorCQlj b2x1bW5zICgKKwkJCW4gZm9yIG9yZGluYWxpdHksCisJCQlhIGludCBwYXRoICdsYXggJC5hJyBk ZWZhdWx0IC0xIG9uIGVtcHR5LAorCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmJbKl0nIGFzIHBi IGNvbHVtbnMgKCBiIGludCBwYXRoICckJyApLAorCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmNb Kl0nIGFzIHBjIGNvbHVtbnMgKCBjIGludCBwYXRoICckJyApCisJCSkKKwkpIGp0OworCistLSBk ZWZhdWx0IHBsYW4gKG91dGVyLCB1bmlvbikKK3NlbGVjdAorCWp0LioKK2Zyb20KKwlqc29uYl90 YWJsZV90ZXN0IGp0dCwKKwlqc29uX3RhYmxlICgKKwkJanR0LmpzLCdzdHJpY3QgJFsqXScgYXMg cAorCQljb2x1bW5zICgKKwkJCW4gZm9yIG9yZGluYWxpdHksCisJCQlhIGludCBwYXRoICdsYXgg JC5hJyBkZWZhdWx0IC0xIG9uIGVtcHR5LAorCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmJbKl0n IGFzIHBiIGNvbHVtbnMgKCBiIGludCBwYXRoICckJyApLAorCQkJbmVzdGVkIHBhdGggJ3N0cmlj dCAkLmNbKl0nIGFzIHBjIGNvbHVtbnMgKCBjIGludCBwYXRoICckJyApCisJCSkKKwkJcGxhbiBk ZWZhdWx0IChvdXRlciwgdW5pb24pCisJKSBqdDsKKworLS0gc3BlY2lmaWMgcGxhbiAocCBvdXRl ciAocGIgdW5pb24gcGMpKQorc2VsZWN0CisJanQuKgorZnJvbQorCWpzb25iX3RhYmxlX3Rlc3Qg anR0LAorCWpzb25fdGFibGUgKAorCQlqdHQuanMsJ3N0cmljdCAkWypdJyBhcyBwCisJCWNvbHVt bnMgKAorCQkJbiBmb3Igb3JkaW5hbGl0eSwKKwkJCWEgaW50IHBhdGggJ2xheCAkLmEnIGRlZmF1 bHQgLTEgb24gZW1wdHksCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuYlsqXScgYXMgcGIgY29s dW1ucyAoIGIgaW50IHBhdGggJyQnICksCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuY1sqXScg YXMgcGMgY29sdW1ucyAoIGMgaW50IHBhdGggJyQnICkKKwkJKQorCQlwbGFuIChwIG91dGVyIChw YiB1bmlvbiBwYykpCisJKSBqdDsKKworLS0gc3BlY2lmaWMgcGxhbiAocCBvdXRlciAocGMgdW5p b24gcGIpKQorc2VsZWN0CisJanQuKgorZnJvbQorCWpzb25iX3RhYmxlX3Rlc3QganR0LAorCWpz b25fdGFibGUgKAorCQlqdHQuanMsJ3N0cmljdCAkWypdJyBhcyBwCisJCWNvbHVtbnMgKAorCQkJ biBmb3Igb3JkaW5hbGl0eSwKKwkJCWEgaW50IHBhdGggJ2xheCAkLmEnIGRlZmF1bHQgLTEgb24g ZW1wdHksCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuYlsqXScgYXMgcGIgY29sdW1ucyAoIGIg aW50IHBhdGggJyQnICksCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuY1sqXScgYXMgcGMgY29s dW1ucyAoIGMgaW50IHBhdGggJyQnICkKKwkJKQorCQlwbGFuIChwIG91dGVyIChwYyB1bmlvbiBw YikpCisJKSBqdDsKKworLS0gZGVmYXVsdCBwbGFuIChpbm5lciwgdW5pb24pCitzZWxlY3QKKwlq dC4qCitmcm9tCisJanNvbmJfdGFibGVfdGVzdCBqdHQsCisJanNvbl90YWJsZSAoCisJCWp0dC5q cywnc3RyaWN0ICRbKl0nIGFzIHAKKwkJY29sdW1ucyAoCisJCQluIGZvciBvcmRpbmFsaXR5LAor CQkJYSBpbnQgcGF0aCAnbGF4ICQuYScgZGVmYXVsdCAtMSBvbiBlbXB0eSwKKwkJCW5lc3RlZCBw YXRoICdzdHJpY3QgJC5iWypdJyBhcyBwYiBjb2x1bW5zICggYiBpbnQgcGF0aCAnJCcgKSwKKwkJ CW5lc3RlZCBwYXRoICdzdHJpY3QgJC5jWypdJyBhcyBwYyBjb2x1bW5zICggYyBpbnQgcGF0aCAn JCcgKQorCQkpCisJCXBsYW4gZGVmYXVsdCAoaW5uZXIpCisJKSBqdDsKKworLS0gc3BlY2lmaWMg cGxhbiAocCBpbm5lciAocGIgdW5pb24gcGMpKQorc2VsZWN0CisJanQuKgorZnJvbQorCWpzb25i X3RhYmxlX3Rlc3QganR0LAorCWpzb25fdGFibGUgKAorCQlqdHQuanMsJ3N0cmljdCAkWypdJyBh cyBwCisJCWNvbHVtbnMgKAorCQkJbiBmb3Igb3JkaW5hbGl0eSwKKwkJCWEgaW50IHBhdGggJ2xh eCAkLmEnIGRlZmF1bHQgLTEgb24gZW1wdHksCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuYlsq XScgYXMgcGIgY29sdW1ucyAoIGIgaW50IHBhdGggJyQnICksCisJCQluZXN0ZWQgcGF0aCAnc3Ry aWN0ICQuY1sqXScgYXMgcGMgY29sdW1ucyAoIGMgaW50IHBhdGggJyQnICkKKwkJKQorCQlwbGFu IChwIGlubmVyIChwYiB1bmlvbiBwYykpCisJKSBqdDsKKworLS0gZGVmYXVsdCBwbGFuIChpbm5l ciwgY3Jvc3MpCitzZWxlY3QKKwlqdC4qCitmcm9tCisJanNvbmJfdGFibGVfdGVzdCBqdHQsCisJ anNvbl90YWJsZSAoCisJCWp0dC5qcywnc3RyaWN0ICRbKl0nIGFzIHAKKwkJY29sdW1ucyAoCisJ CQluIGZvciBvcmRpbmFsaXR5LAorCQkJYSBpbnQgcGF0aCAnbGF4ICQuYScgZGVmYXVsdCAtMSBv biBlbXB0eSwKKwkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5iWypdJyBhcyBwYiBjb2x1bW5zICgg YiBpbnQgcGF0aCAnJCcgKSwKKwkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5jWypdJyBhcyBwYyBj b2x1bW5zICggYyBpbnQgcGF0aCAnJCcgKQorCQkpCisJCXBsYW4gZGVmYXVsdCAoY3Jvc3MsIGlu bmVyKQorCSkganQ7CisKKy0tIHNwZWNpZmljIHBsYW4gKHAgaW5uZXIgKHBiIGNyb3NzIHBjKSkK K3NlbGVjdAorCWp0LioKK2Zyb20KKwlqc29uYl90YWJsZV90ZXN0IGp0dCwKKwlqc29uX3RhYmxl ICgKKwkJanR0LmpzLCdzdHJpY3QgJFsqXScgYXMgcAorCQljb2x1bW5zICgKKwkJCW4gZm9yIG9y ZGluYWxpdHksCisJCQlhIGludCBwYXRoICdsYXggJC5hJyBkZWZhdWx0IC0xIG9uIGVtcHR5LAor CQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmJbKl0nIGFzIHBiIGNvbHVtbnMgKCBiIGludCBwYXRo ICckJyApLAorCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmNbKl0nIGFzIHBjIGNvbHVtbnMgKCBj IGludCBwYXRoICckJyApCisJCSkKKwkJcGxhbiAocCBpbm5lciAocGIgY3Jvc3MgcGMpKQorCSkg anQ7CisKKy0tIGRlZmF1bHQgcGxhbiAob3V0ZXIsIGNyb3NzKQorc2VsZWN0CisJanQuKgorZnJv bQorCWpzb25iX3RhYmxlX3Rlc3QganR0LAorCWpzb25fdGFibGUgKAorCQlqdHQuanMsJ3N0cmlj dCAkWypdJyBhcyBwCisJCWNvbHVtbnMgKAorCQkJbiBmb3Igb3JkaW5hbGl0eSwKKwkJCWEgaW50 IHBhdGggJ2xheCAkLmEnIGRlZmF1bHQgLTEgb24gZW1wdHksCisJCQluZXN0ZWQgcGF0aCAnc3Ry aWN0ICQuYlsqXScgYXMgcGIgY29sdW1ucyAoIGIgaW50IHBhdGggJyQnICksCisJCQluZXN0ZWQg cGF0aCAnc3RyaWN0ICQuY1sqXScgYXMgcGMgY29sdW1ucyAoIGMgaW50IHBhdGggJyQnICkKKwkJ KQorCQlwbGFuIGRlZmF1bHQgKG91dGVyLCBjcm9zcykKKwkpIGp0OworCistLSBzcGVjaWZpYyBw bGFuIChwIG91dGVyIChwYiBjcm9zcyBwYykpCitzZWxlY3QKKwlqdC4qCitmcm9tCisJanNvbmJf dGFibGVfdGVzdCBqdHQsCisJanNvbl90YWJsZSAoCisJCWp0dC5qcywnc3RyaWN0ICRbKl0nIGFz IHAKKwkJY29sdW1ucyAoCisJCQluIGZvciBvcmRpbmFsaXR5LAorCQkJYSBpbnQgcGF0aCAnbGF4 ICQuYScgZGVmYXVsdCAtMSBvbiBlbXB0eSwKKwkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5iWypd JyBhcyBwYiBjb2x1bW5zICggYiBpbnQgcGF0aCAnJCcgKSwKKwkJCW5lc3RlZCBwYXRoICdzdHJp Y3QgJC5jWypdJyBhcyBwYyBjb2x1bW5zICggYyBpbnQgcGF0aCAnJCcgKQorCQkpCisJCXBsYW4g KHAgb3V0ZXIgKHBiIGNyb3NzIHBjKSkKKwkpIGp0OworCisKK3NlbGVjdAorCWp0LiosIGIxICsg MTAwIGFzIGIKK2Zyb20KKwlqc29uX3RhYmxlIChqc29uYgorCQknWworCQkJeyJhIjogIDEsICAi YiI6IFtbMSwgMTBdLCBbMl0sIFszLCAzMCwgMzAwXV0sICJjIjogWzEsIG51bGwsIDJdfSwKKwkJ CXsiYSI6ICAyLCAgImIiOiBbMTAsIDIwXSwgImMiOiBbMSwgbnVsbCwgMl19LAorCQkJeyJ4Ijog IjMiLCAiYiI6IFsxMSwgMjIsIDMzLCA0NF19CisJCSBdJywKKwkJJyRbKl0nIGFzIHAKKwkJY29s dW1ucyAoCisJCQluIGZvciBvcmRpbmFsaXR5LAorCQkJYSBpbnQgcGF0aCAnbGF4ICQuYScgZGVm YXVsdCAtMSBvbiBlcnJvciwKKwkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5iWypdJyBhcyBwYiBj b2x1bW5zICgKKwkJCQliIHRleHQgZm9ybWF0IGpzb24gcGF0aCAnJCcsCisJCQkJbmVzdGVkIHBh dGggJ3N0cmljdCAkWypdJyBhcyBwYjEgY29sdW1ucyAoCisJCQkJCWIxIGludCBwYXRoICckJwor CQkJCSkKKwkJCSksCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuY1sqXScgYXMgcGMgY29sdW1u cyAoCisJCQkJYyB0ZXh0IGZvcm1hdCBqc29uIHBhdGggJyQnLAorCQkJCW5lc3RlZCBwYXRoICdz dHJpY3QgJFsqXScgYXMgcGMxIGNvbHVtbnMgKAorCQkJCQljMSBpbnQgcGF0aCAnJCcKKwkJCQkp CisJCQkpCisJCSkKKwkJLS1wbGFuIGRlZmF1bHQob3V0ZXIsIGNyb3NzKQorCQlwbGFuKHAgb3V0 ZXIgKChwYiBpbm5lciBwYjEpIGNyb3NzIChwYyBvdXRlciBwYzEpKSkKKwkpIGp0OworCistLSBT aG91bGQgc3VjY2VlZCAoSlNPTiBhcmd1bWVudHMgYXJlIHBhc3NlZCB0byByb290IGFuZCBuZXN0 ZWQgcGF0aHMpCitTRUxFQ1QgKgorRlJPTQorCWdlbmVyYXRlX3NlcmllcygxLCA0KSB4LAorCWdl bmVyYXRlX3NlcmllcygxLCAzKSB5LAorCUpTT05fVEFCTEUoanNvbmIKKwkJJ1tbMSwyLDNdLFsy LDMsNCw1XSxbMyw0LDUsNl1dJywKKwkJJ3N0cmljdCAkWypdID8gKEBbKl0gPCAkeCknCisJCVBB U1NJTkcgeCBBUyB4LCB5IEFTIHkKKwkJQ09MVU1OUyAoCisJCQl5IHRleHQgRk9STUFUIEpTT04g UEFUSCAnJCcsCisJCQlORVNURUQgUEFUSCAnc3RyaWN0ICRbKl0gPyAoQCA+PSAkeSknCisJCQlD T0xVTU5TICgKKwkJCQl6IGludCBQQVRIICckJworCQkJKQorCQkpCisJKSBqdDsKKworLS0gU2hv dWxkIGZhaWwgKEpTT04gYXJndW1lbnRzIGFyZSBub3QgcGFzc2VkIHRvIGNvbHVtbiBwYXRocykK K1NFTEVDVCAqCitGUk9NIEpTT05fVEFCTEUoCisJanNvbmIgJ1sxLDIsM10nLAorCSckWypdID8g KEAgPCAkeCknCisJCVBBU1NJTkcgMTAgQVMgeAorCQlDT0xVTU5TICh5IHRleHQgRk9STUFUIEpT T04gUEFUSCAnJCA/IChAIDwgJHgpJykKKwkpIGp0OworCistLSBTaG91bGQgZmFpbCAobm90IHN1 cHBvcnRlZCkKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAneyJhIjogMTIzfScsICck JyB8fCAnLicgfHwgJ2EnIENPTFVNTlMgKGZvbyBpbnQpKTsKZGlmZiAtLWdpdCBhL3NyYy90b29s cy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxp c3QKaW5kZXggMzU1YzgxNDRhMi4uMDViZGZiOTJiYiAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3Bn aW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxp c3QKQEAgLTEzMjYsNiArMTMyNiw3IEBAIEpzb25QYXRoTXV0YWJsZUNvbnRleHQKIEpzb25QYXRo UGFyc2VJdGVtCiBKc29uUGF0aFBhcnNlUmVzdWx0CiBKc29uUGF0aFByZWRpY2F0ZUNhbGxiYWNr CitKc29uUGF0aFNwZWMKIEpzb25QYXRoU3RyaW5nCiBKc29uUGF0aFZhcmlhYmxlCiBKc29uUGF0 aFZhcmlhYmxlRXZhbENvbnRleHQKQEAgLTEzMzUsNiArMTMzNiwyMCBAQCBKc29uUmV0dXJuaW5n CiBKc29uU2NhbGFyRXhwcgogSnNvblNlbUFjdGlvbgogSnNvblNlcmlhbGl6ZUV4cHIKK0pzb25U YWJsZQorSnNvblRhYmxlQ29sdW1uCitKc29uVGFibGVDb2x1bW5UeXBlCitKc29uVGFibGVDb250 ZXh0CitKc29uVGFibGVQYXJzZUNvbnRleHQKK0pzb25UYWJsZUpvaW5TdGF0ZQorSnNvblRhYmxl UGxhbgorSnNvblRhYmxlUGxhblNwZWMKK0pzb25UYWJsZVBsYW5TdGF0ZQorSnNvblRhYmxlUGxh blN0YXRlVHlwZQorSnNvblRhYmxlUGxhbkpvaW5UeXBlCitKc29uVGFibGVQbGFuVHlwZQorSnNv blRhYmxlU2NhblN0YXRlCitKc29uVGFibGVTaWJsaW5nCiBKc29uVG9rZW5UeXBlCiBKc29uVHJh bnNmb3JtU3RyaW5nVmFsdWVzQWN0aW9uCiBKc29uVHlwZUNhdGVnb3J5CkBAIC0yODAzLDYgKzI4 MTgsNyBAQCBUYWJsZUZ1bmMKIFRhYmxlRnVuY1JvdXRpbmUKIFRhYmxlRnVuY1NjYW4KIFRhYmxl RnVuY1NjYW5TdGF0ZQorVGFibGVGdW5jVHlwZQogVGFibGVJbmZvCiBUYWJsZUxpa2VDbGF1c2UK IFRhYmxlU2FtcGxlQ2xhdXNlCi0tIAoyLjQzLjAKCg== --000000000000eca3d70612dfab27--