Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nXt7V-0008Up-AF for pgsql-hackers@arkaria.postgresql.org; Fri, 25 Mar 2022 23:13:25 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1nXt7T-0000l8-KE for pgsql-hackers@arkaria.postgresql.org; Fri, 25 Mar 2022 23:13:23 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nXt7S-0000ky-MU for pgsql-hackers@lists.postgresql.org; Fri, 25 Mar 2022 23:13:23 +0000 Received: from mail-yw1-x112a.google.com ([2607:f8b0:4864:20::112a]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1nXt7Q-0005pG-0C for pgsql-hackers@lists.postgresql.org; Fri, 25 Mar 2022 23:13:21 +0000 Received: by mail-yw1-x112a.google.com with SMTP id 00721157ae682-2e6ceb45174so58159337b3.8 for ; Fri, 25 Mar 2022 16:13:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=NImMMJJM88Wsb+JVend6KXQU+BtbxiAbPZ5O2DMYes8=; b=nkwWQ1uZpjU56OSK3rflKjZQfRywrxZZogzdXr4hYMZA5geeyu4K3nAt7mFR1Ak3PZ w6wHu2bt1Yfc38ahSFYrnSB+P7YZN+cJpd2G8W9RnaAw3RJ2kghyPwsdcypfeyxq5fum T5d2bYJJXN3pbV3zarrAe0kupPhJAOTzo1ExB32qWWJ6nG+alzxjNCEZBUyB6ZPUohF8 SZcVeEwP90JQSZklMTG92UGPzoMjYGxwhP+3LTNfodtI/QfFTEHtsU3j9XFxJRMAkKzH SLZi822W9JS4yG2C1SJ7Gzx2MZsn6/mDZQcLVWnZe07V/qloeFb84UCOBpgURGu0xPu2 DgeQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=NImMMJJM88Wsb+JVend6KXQU+BtbxiAbPZ5O2DMYes8=; b=3PcTdA56vCdPiBOTAH/r3I9D/cdkFTv7yrspVQXOhzyg9rifj/CGoaaCY+zp2AjLqD aXGFCjn8YDYnUulomkDPBa/cPlDZKLGH0MLT6Bi9I0h3t4DQzltRqzc32RxNRyPOKTpr yxK8gBkcjvhcPRtG/FlsZZf/CxxIbAeBBom4VD6HFOnXtnpdCu6na2dagDhF02ofKODW YoeutYeNvufhQLuTZheWS1nVcG4KLj0f6U/87wyHC3+WhNgxbFjUpnwJPP7gnaE+xaeM hTZ7MO+i9GnO5X5mpnfyLsCkb0qx0tBhvVUE6RnG1xYbIcVk0mOVrRZGCKLAWc2KOBIU Ogzw== X-Gm-Message-State: AOAM530c0Rkn6dzFOAUHScfc8qZS7pfPftTldvrE2MCM6sfjHXmS+h+4 nV3kAHMtYcW/0VeW4PWpLUWskuC4m58hKVH5MJg= X-Google-Smtp-Source: ABdhPJw056luT2P+HUTN8Oex9L5fN2EvbTg2lfblyFXs/fNEcMIfeHKnnDQ7ptCVms+FOML06GqHOk4Y7fbw/362oJw= X-Received: by 2002:a81:5607:0:b0:2db:c245:5ff4 with SMTP id k7-20020a815607000000b002dbc2455ff4mr14150365ywb.244.1648249999077; Fri, 25 Mar 2022 16:13:19 -0700 (PDT) MIME-Version: 1.0 References: <20220304161039.GL27651@telsasoft.com> <20220325132253.GD28503@telsasoft.com> In-Reply-To: <20220325132253.GD28503@telsasoft.com> From: Rachel Heaton Date: Fri, 25 Mar 2022 16:13:08 -0700 Message-ID: Subject: Re: Add LZ4 compression in pg_dump To: Justin Pryzby Cc: Greg Stark , Georgios , Postgres hackers Content-Type: multipart/mixed; boundary="000000000000b26ed405db131b3f" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000b26ed405db131b3f Content-Type: text/plain; charset="UTF-8" On Fri, Mar 25, 2022 at 6:22 AM Justin Pryzby wrote: > > On Fri, Mar 25, 2022 at 01:20:47AM -0400, Greg Stark wrote: > > It seems development on this has stalled. If there's no further work > > happening I guess I'll mark the patch returned with feedback. Feel > > free to resubmit it to the next CF when there's progress. > > Since it's a reasonably large patch (and one that I had myself started before) > and it's only been 20some days since (minor) review comments, and since the > focus right now is on committing features, and not reviewing new patches, and > this patch is new one month ago, and its 0002 not intended for pg15, therefor > I'm moving it to the next CF, where I hope to work with its authors to progress > it. > Hi Folks, Here is an updated patchset from Georgios, with minor assistance from myself. The comments above should be addressed, but please let us know if there are other things to go over. A functional change in this patchset is when `--compress=none` is passed to pg_dump, it will not compress for directory type (previously, it would use gzip if present). The previous default behavior is retained. - Rachel --000000000000b26ed405db131b3f Content-Type: application/octet-stream; name="v2-0001-Extend-compression-coverage-for-pg_dump-pg_restor.patch" Content-Disposition: attachment; filename="v2-0001-Extend-compression-coverage-for-pg_dump-pg_restor.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l171f1b80 RnJvbSA2NzQ4MGUyMTZhMjAxZGZkZTlhYTJkYzQ4YjM5YjM3ZTM5YmY0NmZiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBHZW9yZ2lvcyBLb2tvbGF0b3MgPGdrb2tvbGF0b3NAcG0ubWU+ CkRhdGU6IEZyaSwgMjUgTWFyIDIwMjIgMTQ6MDA6MjggKzAwMDAKU3ViamVjdDogW1BBVENIIHYy IDEvNF0gRXh0ZW5kIGNvbXByZXNzaW9uIGNvdmVyYWdlIGZvciBwZ19kdW1wLCBwZ19yZXN0b3Jl CgotLS0KIHNyYy9iaW4vcGdfZHVtcC90LzAwMV9iYXNpYy5wbCAgIHwgMTUgKysrKysrCiBzcmMv YmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbCB8IDkyICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrCiAyIGZpbGVzIGNoYW5nZWQsIDEwNyBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0 IGEvc3JjL2Jpbi9wZ19kdW1wL3QvMDAxX2Jhc2ljLnBsIGIvc3JjL2Jpbi9wZ19kdW1wL3QvMDAx X2Jhc2ljLnBsCmluZGV4IDQ4ZmFlYjQzNzEuLjhmZGFjZWE2ZjUgMTAwNjQ0Ci0tLSBhL3NyYy9i aW4vcGdfZHVtcC90LzAwMV9iYXNpYy5wbAorKysgYi9zcmMvYmluL3BnX2R1bXAvdC8wMDFfYmFz aWMucGwKQEAgLTEyNiw2ICsxMjYsMjEgQEAgY29tbWFuZF9mYWlsc19saWtlKAogCXFyL1xRcGdf ZHVtcDogZXJyb3I6IC1aXC8tLWNvbXByZXNzIG11c3QgYmUgaW4gcmFuZ2UgMC4uOVxFLywKIAkn cGdfZHVtcDogLVovLS1jb21wcmVzcyBtdXN0IGJlIGluIHJhbmdlJyk7CiAKK2lmIChjaGVja19w Z19jb25maWcoIiNkZWZpbmUgSEFWRV9MSUJaIDEiKSkKK3sKKwljb21tYW5kX2ZhaWxzX2xpa2Uo CisJCVsgJ3BnX2R1bXAnLCAnLS1jb21wcmVzcycsICcxJywgJy0tZm9ybWF0JywgJ3RhcicgXSwK KwkJcXIvXFFwZ19kdW1wOiBlcnJvcjogY29tcHJlc3Npb24gaXMgbm90IHN1cHBvcnRlZCBieSB0 YXIgYXJjaGl2ZSBmb3JtYXRcRS8sCisJCSdwZ19kdW1wOiBjb21wcmVzc2lvbiBpcyBub3Qgc3Vw cG9ydGVkIGJ5IHRhciBhcmNoaXZlIGZvcm1hdCcpOworfQorZWxzZQoreworCWNvbW1hbmRfZmFp bHNfbGlrZSgKKwkJWyAncGdfZHVtcCcsICctLWNvbXByZXNzJywgJzEnLCAnLS1mb3JtYXQnLCAn dGFyJyBdLAorCQlxci9cUXBnX2R1bXA6IHdhcm5pbmc6IHJlcXVlc3RlZCBjb21wcmVzc2lvbiBu b3QgYXZhaWxhYmxlIGluIHRoaXMgaW5zdGFsbGF0aW9uIC0tIGFyY2hpdmUgd2lsbCBiZSB1bmNv bXByZXNzZWRcRS8sCisJCSdwZ19kdW1wOiB3YXJuaW5nOiByZXF1ZXN0ZWQgY29tcHJlc3Npb24g bm90IGF2YWlsYWJsZSBpbiB0aGlzIGluc3RhbGxhdGlvbiAtLSBhcmNoaXZlIHdpbGwgYmUgdW5j b21wcmVzc2VkJyk7Cit9CisKIGNvbW1hbmRfZmFpbHNfbGlrZSgKIAlbICdwZ19kdW1wJywgJy0t ZXh0cmEtZmxvYXQtZGlnaXRzJywgJy0xNicgXSwKIAlxci9cUXBnX2R1bXA6IGVycm9yOiAtLWV4 dHJhLWZsb2F0LWRpZ2l0cyBtdXN0IGJlIGluIHJhbmdlXEUvLApkaWZmIC0tZ2l0IGEvc3JjL2Jp bi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwgYi9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVt cC5wbAppbmRleCAzZTU1ZmYyNmY4Li5jYmY0NTI0NTAzIDEwMDY0NAotLS0gYS9zcmMvYmluL3Bn X2R1bXAvdC8wMDJfcGdfZHVtcC5wbAorKysgYi9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVt cC5wbApAQCAtNTUsNiArNTUsODEgQEAgbXkgJXBnZHVtcF9ydW5zID0gKAogCQkJIiR0ZW1wZGly L2JpbmFyeV91cGdyYWRlLmR1bXAiLAogCQldLAogCX0sCisKKwkjIERvIG5vdCB1c2UgLS1uby1z eW5jIHRvIGdpdmUgdGVzdCBjb3ZlcmFnZSBmb3IgZGF0YSBzeW5jLgorCWNvbXByZXNzaW9uX2d6 aXBfY3VzdG9tX2Zvcm1hdCA9PiB7CisJCXRlc3Rfa2V5ID0+ICdjb21wcmVzc2lvbicsCisJCWR1 bXBfY21kID0+IFsKKwkJCSdwZ19kdW1wJywKKwkJCSctLWZvcm1hdD1jdXN0b20nLCAnLS1jb21w cmVzcz0xJywKKwkJCSItLWZpbGU9JHRlbXBkaXIvY29tcHJlc3Npb25fZ3ppcF9jdXN0b21fZm9y bWF0LmR1bXAiLAorCQkJJ3Bvc3RncmVzJywKKwkJXSwKKwkJcmVzdG9yZV9jbWQgPT4gWworCQkJ J3BnX3Jlc3RvcmUnLAorCQkJIi0tZmlsZT0kdGVtcGRpci9jb21wcmVzc2lvbl9nemlwX2N1c3Rv bV9mb3JtYXQuc3FsIiwKKwkJCSIkdGVtcGRpci9jb21wcmVzc2lvbl9nemlwX2N1c3RvbV9mb3Jt YXQuZHVtcCIsCisJCV0sCisJfSwKKworCSMgRG8gbm90IHVzZSAtLW5vLXN5bmMgdG8gZ2l2ZSB0 ZXN0IGNvdmVyYWdlIGZvciBkYXRhIHN5bmMuCisJY29tcHJlc3Npb25fZ3ppcF9kaXJlY3Rvcnlf Zm9ybWF0ID0+IHsKKwkJdGVzdF9rZXkgPT4gJ2NvbXByZXNzaW9uJywKKwkJZHVtcF9jbWQgPT4g WworCQkJJ3BnX2R1bXAnLAorCQkJJy0tZm9ybWF0PWRpcmVjdG9yeScsICctLWNvbXByZXNzPTEn LAorCQkJIi0tZmlsZT0kdGVtcGRpci9jb21wcmVzc2lvbl9nemlwX2RpcmVjdG9yeV9mb3JtYXQi LAorCQkJJ3Bvc3RncmVzJywKKwkJXSwKKwkJIyBHaXZlIGNvdmVyYWdlIGZvciBtYW51YWxseSBj b21wcmVzc2VkIGJsb2IudG9jIGZpbGVzIGR1cmluZyByZXN0b3JlLgorCQljb21wcmVzc19jbWQg PT4gWworCQkJJEVOVnsnR1pJUF9QUk9HUkFNJ30sCisJCQknLWYnLAorCQkJIiR0ZW1wZGlyL2Nv bXByZXNzaW9uX2d6aXBfZGlyZWN0b3J5X2Zvcm1hdC9ibG9icy50b2MiLAorCQldLAorCQlyZXN0 b3JlX2NtZCA9PiBbCisJCQkncGdfcmVzdG9yZScsCisJCQkiLS1maWxlPSR0ZW1wZGlyL2NvbXBy ZXNzaW9uX2d6aXBfZGlyZWN0b3J5X2Zvcm1hdC5zcWwiLAorCQkJIiR0ZW1wZGlyL2NvbXByZXNz aW9uX2d6aXBfZGlyZWN0b3J5X2Zvcm1hdCIsCisJCV0sCisJfSwKKworCWNvbXByZXNzaW9uX2d6 aXBfZGlyZWN0b3J5X2Zvcm1hdF9wYXJhbGxlbCA9PiB7CisJCXRlc3Rfa2V5ID0+ICdjb21wcmVz c2lvbicsCisJCWR1bXBfY21kID0+IFsKKwkJCSdwZ19kdW1wJywgJy0tam9icz0yJywKKwkJCSct LWZvcm1hdD1kaXJlY3RvcnknLCAnLS1jb21wcmVzcz02JywKKwkJCSItLWZpbGU9JHRlbXBkaXIv Y29tcHJlc3Npb25fZ3ppcF9kaXJlY3RvcnlfZm9ybWF0X3BhcmFsbGVsIiwKKwkJCSdwb3N0Z3Jl cycsCisJCV0sCisJCSMgR2l2ZSBjb3ZlcmFnZSBmb3IgbWFudWFsbHkgY29tcHJlc3NlZCBibG9i LnRvYyBmaWxlcyBkdXJpbmcgcmVzdG9yZS4KKwkJY29tcHJlc3NfY21kID0+IFsKKwkJCSRFTlZ7 J0daSVBfUFJPR1JBTSd9LAorCQkJJy1mJywKKwkJCSIkdGVtcGRpci9jb21wcmVzc2lvbl9nemlw X2RpcmVjdG9yeV9mb3JtYXRfcGFyYWxsZWwvYmxvYnMudG9jIiwKKwkJXSwKKwkJcmVzdG9yZV9j bWQgPT4gWworCQkJJ3BnX3Jlc3RvcmUnLAorCQkJJy0tam9icz0zJywKKwkJCSItLWZpbGU9JHRl bXBkaXIvY29tcHJlc3Npb25fZ3ppcF9kaXJlY3RvcnlfZm9ybWF0X3BhcmFsbGVsLnNxbCIsCisJ CQkiJHRlbXBkaXIvY29tcHJlc3Npb25fZ3ppcF9kaXJlY3RvcnlfZm9ybWF0X3BhcmFsbGVsIiwK KwkJXSwKKwl9LAorCisJIyBDaGVjayB0aGF0IHRoZSBvdXRwdXQgaXMgdmFsaWQgZ3ppcAorCWNv bXByZXNzaW9uX2d6aXBfcGxhaW5fZm9ybWF0ID0+IHsKKwkJdGVzdF9rZXkgPT4gJ2NvbXByZXNz aW9uJywKKwkJZHVtcF9jbWQgPT4gWworCQkJJ3BnX2R1bXAnLCAnLS1mb3JtYXQ9cGxhaW4nLCAn LVoxJywKKwkJCSItLWZpbGU9JHRlbXBkaXIvY29tcHJlc3Npb25fZ3ppcF9wbGFpbl9mb3JtYXQu c3FsLmd6IiwKKwkJCSdwb3N0Z3JlcycsCisJCV0sCisJCWNvbXByZXNzX2NtZCA9PiBbCisJCQkk RU5WeydHWklQX1BST0dSQU0nfSwKKwkJCSctaycsICctZCcsCisJCQkiJHRlbXBkaXIvY29tcHJl c3Npb25fZ3ppcF9wbGFpbl9mb3JtYXQuc3FsLmd6IiwKKwkJXSwKKwl9LAogCWNsZWFuID0+IHsK IAkJZHVtcF9jbWQgPT4gWwogCQkJJ3BnX2R1bXAnLApAQCAtNDI1LDYgKzUwMCw3IEBAIG15ICVm dWxsX3J1bnMgPSAoCiAJYmluYXJ5X3VwZ3JhZGUgICAgICAgICAgID0+IDEsCiAJY2xlYW4gICAg ICAgICAgICAgICAgICAgID0+IDEsCiAJY2xlYW5faWZfZXhpc3RzICAgICAgICAgID0+IDEsCisJ Y29tcHJlc3Npb24gICAgICAgICAgICAgID0+IDEsCiAJY3JlYXRlZGIgICAgICAgICAgICAgICAg ID0+IDEsCiAJZGVmYXVsdHMgICAgICAgICAgICAgICAgID0+IDEsCiAJZXhjbHVkZV9kdW1wX3Rl c3Rfc2NoZW1hID0+IDEsCkBAIC0zMDA3LDYgKzMwODMsNyBAQCBteSAldGVzdHMgPSAoCiAJCQli aW5hcnlfdXBncmFkZSAgICAgICAgICA9PiAxLAogCQkJY2xlYW4gICAgICAgICAgICAgICAgICAg PT4gMSwKIAkJCWNsZWFuX2lmX2V4aXN0cyAgICAgICAgID0+IDEsCisJCQljb21wcmVzc2lvbiAg ICAgICAgICAgICA9PiAxLAogCQkJY3JlYXRlZGIgICAgICAgICAgICAgICAgPT4gMSwKIAkJCWRl ZmF1bHRzICAgICAgICAgICAgICAgID0+IDEsCiAJCQlleGNsdWRlX3Rlc3RfdGFibGUgICAgICA9 PiAxLApAQCAtMzA4MCw2ICszMTU3LDcgQEAgbXkgJXRlc3RzID0gKAogCQkJYmluYXJ5X3VwZ3Jh ZGUgICAgICAgICAgID0+IDEsCiAJCQljbGVhbiAgICAgICAgICAgICAgICAgICAgPT4gMSwKIAkJ CWNsZWFuX2lmX2V4aXN0cyAgICAgICAgICA9PiAxLAorCQkJY29tcHJlc3Npb24gICAgICAgICAg ICAgID0+IDEsCiAJCQljcmVhdGVkYiAgICAgICAgICAgICAgICAgPT4gMSwKIAkJCWRlZmF1bHRz ICAgICAgICAgICAgICAgICA9PiAxLAogCQkJZXhjbHVkZV9kdW1wX3Rlc3Rfc2NoZW1hID0+IDEs CkBAIC0zODU2LDkgKzM5MzQsMjMgQEAgZm9yZWFjaCBteSAkcnVuIChzb3J0IGtleXMgJXBnZHVt cF9ydW5zKQogCW15ICR0ZXN0X2tleSA9ICRydW47CiAJbXkgJHJ1bl9kYiAgID0gJ3Bvc3RncmVz JzsKIAorCW15ICRzdXBwb3J0c19jb21wcmVzc2lvbiA9IGNoZWNrX3BnX2NvbmZpZygiI2RlZmlu ZSBIQVZFX0xJQlogMSIpOworCW15ICRjb21wcmVzc19wcm9ncmFtID0gJEVOVntHWklQX1BST0dS QU19OworCiAJJG5vZGUtPmNvbW1hbmRfb2soXEB7ICRwZ2R1bXBfcnVuc3skcnVufS0+e2R1bXBf Y21kfSB9LAogCQkiJHJ1bjogcGdfZHVtcCBydW5zIik7CiAKKwlpZiAoZGVmaW5lZCgkcGdkdW1w X3J1bnN7JHJ1bn0tPntjb21wcmVzc19jbWR9KSkKKwl7CisJCSMgU2tpcCBjb21wcmVzc2lvbl9j bWQgdGVzdHMgd2hlbiBjb21wcmVzc2lvbiBpcyBub3Qgc3VwcG9ydGVkLAorCQkjIGFzIHRoZSBy ZXN1bHQgaXMgdW5jb21wcmVzc2VkIG9yIHRoZSB1dGlsaXR5IHByb2dyYW0gZG9lcyBub3QKKwkJ IyBleGlzdAorCQluZXh0IGlmICEkc3VwcG9ydHNfY29tcHJlc3Npb24gfHwgIWRlZmluZWQoJGNv bXByZXNzX3Byb2dyYW0pCisJCQkJfHwgJGNvbXByZXNzX3Byb2dyYW0gZXEgJyc7CisJCWNvbW1h bmRfb2soIFxAeyAkcGdkdW1wX3J1bnN7JHJ1bn0tPntjb21wcmVzc19jbWR9IH0sCisJCQkiJHJ1 bjogY29tcHJlc3Npb24gY29tbWFuZHMiKTsKKwl9CisKIAlpZiAoJHBnZHVtcF9ydW5zeyRydW59 LT57cmVzdG9yZV9jbWR9KQogCXsKIAkJJG5vZGUtPmNvbW1hbmRfb2soXEB7ICRwZ2R1bXBfcnVu c3skcnVufS0+e3Jlc3RvcmVfY21kfSB9LAotLSAKMi4zMy4wCgo= --000000000000b26ed405db131b3f Content-Type: application/octet-stream; name="v2-0002-Remove-unsupported-bitrot-compression-from-pg_dum.patch" Content-Disposition: attachment; filename="v2-0002-Remove-unsupported-bitrot-compression-from-pg_dum.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l171f1bc1 RnJvbSBmZGQ3ZDIwODdhZGUyM2JjNWU3MjliNDc4ZmI1MjRmNGQ2Mzc3NmY5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBHZW9yZ2lvcyBLb2tvbGF0b3MgPGdrb2tvbGF0b3NAcG0ubWU+ CkRhdGU6IEZyaSwgMjUgTWFyIDIwMjIgMTQ6NTY6NTAgKzAwMDAKU3ViamVjdDogW1BBVENIIHYy IDIvNF0gUmVtb3ZlIHVuc3VwcG9ydGVkL2JpdHJvdCBjb21wcmVzc2lvbiBmcm9tIHBnX2R1bXAg dGFyCgotLS0KIHNyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfdGFyLmMgfCA4MiArKysrLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyks IDczIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBf dGFyLmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX3Rhci5jCmluZGV4IDVjMzUxYWNkYTAu LmEzMTM3NmJmYTggMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfdGFyLmMK KysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF90YXIuYwpAQCAtNjUsMTEgKzY1LDYgQEAg c3RhdGljIHZvaWQgX0VuZEJsb2JzKEFyY2hpdmVIYW5kbGUgKkFILCBUb2NFbnRyeSAqdGUpOwog CiB0eXBlZGVmIHN0cnVjdAogewotI2lmZGVmIEhBVkVfTElCWgotCWd6RmlsZQkJekZIOwotI2Vs c2UKLQlGSUxFCSAgICp6Rkg7Ci0jZW5kaWYKIAlGSUxFCSAgICpuRkg7CiAJRklMRQkgICAqdGFy Rkg7CiAJRklMRQkgICAqdG1wRkg7CkBAIC0yNDgsMTQgKzI0Myw3IEBAIF9BcmNoaXZlRW50cnko QXJjaGl2ZUhhbmRsZSAqQUgsIFRvY0VudHJ5ICp0ZSkKIAljdHggPSAobGNsVG9jRW50cnkgKikg cGdfbWFsbG9jMChzaXplb2YobGNsVG9jRW50cnkpKTsKIAlpZiAodGUtPmRhdGFEdW1wZXIgIT0g TlVMTCkKIAl7Ci0jaWZkZWYgSEFWRV9MSUJaCi0JCWlmIChBSC0+Y29tcHJlc3Npb24gPT0gMCkK LQkJCXNwcmludGYoZm4sICIlZC5kYXQiLCB0ZS0+ZHVtcElkKTsKLQkJZWxzZQotCQkJc3ByaW50 ZihmbiwgIiVkLmRhdC5neiIsIHRlLT5kdW1wSWQpOwotI2Vsc2UKLQkJc3ByaW50ZihmbiwgIiVk LmRhdCIsIHRlLT5kdW1wSWQpOwotI2VuZGlmCisJCXNucHJpbnRmKGZuLCBzaXplb2YoZm4pLCAi JWQuZGF0IiwgdGUtPmR1bXBJZCk7CiAJCWN0eC0+ZmlsZW5hbWUgPSBwZ19zdHJkdXAoZm4pOwog CX0KIAllbHNlCkBAIC0zMjAsMTAgKzMwOCw2IEBAIHRhck9wZW4oQXJjaGl2ZUhhbmRsZSAqQUgs IGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBjaGFyIG1vZGUpCiAJbGNsQ29udGV4dCAqY3R4ID0gKGxj bENvbnRleHQgKikgQUgtPmZvcm1hdERhdGE7CiAJVEFSX01FTUJFUiAqdG07CiAKLSNpZmRlZiBI QVZFX0xJQloKLQljaGFyCQlmbW9kZVsxNF07Ci0jZW5kaWYKLQogCWlmIChtb2RlID09ICdyJykK IAl7CiAJCXRtID0gX3RhclBvc2l0aW9uVG8oQUgsIGZpbGVuYW1lKTsKQEAgLTM0NCwxNiArMzI4 LDEwIEBAIHRhck9wZW4oQXJjaGl2ZUhhbmRsZSAqQUgsIGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBj aGFyIG1vZGUpCiAJCQl9CiAJCX0KIAotI2lmZGVmIEhBVkVfTElCWgotCiAJCWlmIChBSC0+Y29t cHJlc3Npb24gPT0gMCkKIAkJCXRtLT5uRkggPSBjdHgtPnRhckZIOwogCQllbHNlCiAJCQlmYXRh bCgiY29tcHJlc3Npb24gaXMgbm90IHN1cHBvcnRlZCBieSB0YXIgYXJjaGl2ZSBmb3JtYXQiKTsK LQkJLyogdG0tPnpGSCA9IGd6ZG9wZW4oZHVwKGZpbGVubyhjdHgtPnRhckZIKSksICJyYiIpOyAq LwotI2Vsc2UKLQkJdG0tPm5GSCA9IGN0eC0+dGFyRkg7Ci0jZW5kaWYKIAl9CiAJZWxzZQogCXsK QEAgLTQwNSwyMSArMzgzLDEwIEBAIHRhck9wZW4oQXJjaGl2ZUhhbmRsZSAqQUgsIGNvbnN0IGNo YXIgKmZpbGVuYW1lLCBjaGFyIG1vZGUpCiAKIAkJdW1hc2sob2xkX3VtYXNrKTsKIAotI2lmZGVm IEhBVkVfTElCWgotCi0JCWlmIChBSC0+Y29tcHJlc3Npb24gIT0gMCkKLQkJewotCQkJc3ByaW50 ZihmbW9kZSwgIndiJWQiLCBBSC0+Y29tcHJlc3Npb24pOwotCQkJdG0tPnpGSCA9IGd6ZG9wZW4o ZHVwKGZpbGVubyh0bS0+dG1wRkgpKSwgZm1vZGUpOwotCQkJaWYgKHRtLT56RkggPT0gTlVMTCkK LQkJCQlmYXRhbCgiY291bGQgbm90IG9wZW4gdGVtcG9yYXJ5IGZpbGUiKTsKLQkJfQotCQllbHNl CisJCWlmIChBSC0+Y29tcHJlc3Npb24gPT0gMCkKIAkJCXRtLT5uRkggPSB0bS0+dG1wRkg7Ci0j ZWxzZQotCi0JCXRtLT5uRkggPSB0bS0+dG1wRkg7Ci0jZW5kaWYKKwkJZWxzZQorCQkJZmF0YWwo ImNvbXByZXNzaW9uIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGFyIGFyY2hpdmUgZm9ybWF0Iik7CiAK IAkJdG0tPkFIID0gQUg7CiAJCXRtLT50YXJnZXRGaWxlID0gcGdfc3RyZHVwKGZpbGVuYW1lKTsK QEAgLTQzNCwxNSArNDAxLDggQEAgdGFyT3BlbihBcmNoaXZlSGFuZGxlICpBSCwgY29uc3QgY2hh ciAqZmlsZW5hbWUsIGNoYXIgbW9kZSkKIHN0YXRpYyB2b2lkCiB0YXJDbG9zZShBcmNoaXZlSGFu ZGxlICpBSCwgVEFSX01FTUJFUiAqdGgpCiB7Ci0JLyoKLQkgKiBDbG9zZSB0aGUgR1ogZmlsZSBz aW5jZSB3ZSBkdXAnZC4gVGhpcyB3aWxsIGZsdXNoIHRoZSBidWZmZXJzLgotCSAqLwogCWlmIChB SC0+Y29tcHJlc3Npb24gIT0gMCkKLQl7Ci0JCWVycm5vID0gMDsJCQkJLyogaW4gY2FzZSBnemNs b3NlKCkgZG9lc24ndCBzZXQgaXQgKi8KLQkJaWYgKEdaQ0xPU0UodGgtPnpGSCkgIT0gMCkKLQkJ CWZhdGFsKCJjb3VsZCBub3QgY2xvc2UgdGFyIG1lbWJlcjogJW0iKTsKLQl9CisJCWZhdGFsKCJj b21wcmVzc2lvbiBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRhciBhcmNoaXZlIGZvcm1hdCIpOwogCiAJ aWYgKHRoLT5tb2RlID09ICd3JykKIAkJX3RhckFkZEZpbGUoQUgsIHRoKTsJLyogVGhpcyB3aWxs IGNsb3NlIHRoZSB0ZW1wIGZpbGUgKi8KQEAgLTQ1Niw3ICs0MTYsNiBAQCB0YXJDbG9zZShBcmNo aXZlSGFuZGxlICpBSCwgVEFSX01FTUJFUiAqdGgpCiAJCWZyZWUodGgtPnRhcmdldEZpbGUpOwog CiAJdGgtPm5GSCA9IE5VTEw7Ci0JdGgtPnpGSCA9IE5VTEw7CiB9CiAKICNpZmRlZiBfX05PVF9V U0VEX18KQEAgLTU0MiwyOSArNTAxLDkgQEAgX3RhclJlYWRSYXcoQXJjaGl2ZUhhbmRsZSAqQUgs IHZvaWQgKmJ1Ziwgc2l6ZV90IGxlbiwgVEFSX01FTUJFUiAqdGgsIEZJTEUgKmZoKQogCQl9CiAJ CWVsc2UgaWYgKHRoKQogCQl7Ci0JCQlpZiAodGgtPnpGSCkKLQkJCXsKLQkJCQlyZXMgPSBHWlJF QUQoJigoY2hhciAqKSBidWYpW3VzZWRdLCAxLCBsZW4sIHRoLT56RkgpOwotCQkJCWlmIChyZXMg IT0gbGVuICYmICFHWkVPRih0aC0+ekZIKSkKLQkJCQl7Ci0jaWZkZWYgSEFWRV9MSUJaCi0JCQkJ CWludAkJCWVycm51bTsKLQkJCQkJY29uc3QgY2hhciAqZXJybXNnID0gZ3plcnJvcih0aC0+ekZI LCAmZXJybnVtKTsKLQotCQkJCQlmYXRhbCgiY291bGQgbm90IHJlYWQgZnJvbSBpbnB1dCBmaWxl OiAlcyIsCi0JCQkJCQkgIGVycm51bSA9PSBaX0VSUk5PID8gc3RyZXJyb3IoZXJybm8pIDogZXJy bXNnKTsKLSNlbHNlCi0JCQkJCWZhdGFsKCJjb3VsZCBub3QgcmVhZCBmcm9tIGlucHV0IGZpbGU6 ICVzIiwKLQkJCQkJCSAgc3RyZXJyb3IoZXJybm8pKTsKLSNlbmRpZgotCQkJCX0KLQkJCX0KLQkJ CWVsc2UKLQkJCXsKLQkJCQlyZXMgPSBmcmVhZCgmKChjaGFyICopIGJ1ZilbdXNlZF0sIDEsIGxl biwgdGgtPm5GSCk7Ci0JCQkJaWYgKHJlcyAhPSBsZW4gJiYgIWZlb2YodGgtPm5GSCkpCi0JCQkJ CVJFQURfRVJST1JfRVhJVCh0aC0+bkZIKTsKLQkJCX0KKwkJCXJlcyA9IGZyZWFkKCYoKGNoYXIg KikgYnVmKVt1c2VkXSwgMSwgbGVuLCB0aC0+bkZIKTsKKwkJCWlmIChyZXMgIT0gbGVuICYmICFm ZW9mKHRoLT5uRkgpKQorCQkJCVJFQURfRVJST1JfRVhJVCh0aC0+bkZIKTsKIAkJfQogCX0KIApA QCAtNTk2LDEwICs1MzUsNyBAQCB0YXJXcml0ZShjb25zdCB2b2lkICpidWYsIHNpemVfdCBsZW4s IFRBUl9NRU1CRVIgKnRoKQogewogCXNpemVfdAkJcmVzOwogCi0JaWYgKHRoLT56RkggIT0gTlVM TCkKLQkJcmVzID0gR1pXUklURShidWYsIDEsIGxlbiwgdGgtPnpGSCk7Ci0JZWxzZQotCQlyZXMg PSBmd3JpdGUoYnVmLCAxLCBsZW4sIHRoLT5uRkgpOworCXJlcyA9IGZ3cml0ZShidWYsIDEsIGxl biwgdGgtPm5GSCk7CiAKIAl0aC0+cG9zICs9IHJlczsKIAlyZXR1cm4gcmVzOwotLSAKMi4zMy4w Cgo= --000000000000b26ed405db131b3f Content-Type: application/octet-stream; name="v2-0003-Prepare-pg_dump-for-additional-compression-method.patch" Content-Disposition: attachment; filename="v2-0003-Prepare-pg_dump-for-additional-compression-method.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l171f1bd2 RnJvbSBmN2QxMGNlNDAxYTliN2JlYTJlY2ZmNmU0ZTczOWI3MzNlNzRmM2FlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBHZW9yZ2lvcyBLb2tvbGF0b3MgPGdrb2tvbGF0b3NAcG0ubWU+ CkRhdGU6IEZyaSwgMjUgTWFyIDIwMjIgMTU6MTI6NDEgKzAwMDAKU3ViamVjdDogW1BBVENIIHYy IDMvNF0gUHJlcGFyZSBwZ19kdW1wIGZvciBhZGRpdGlvbmFsIGNvbXByZXNzaW9uIG1ldGhvZHMK ClRoaXMgY29tbW1pdCBkb2VzIHRoZSBoZWF2eSBsaWZ0aW5nIHJlcXVpcmVkIGZvciBhZGRpdGlv bmFsIGNvbXByZXNzaW9uIG1ldGhvZHMuCkNvbW1pdCAgYmY5YWE0OTBkYiBpbnRyb2R1Y2VkIGNm cCBpbiBjb21wcmVzc19pby57YyxofSB3aXRoIHRoZSBpbnRlbnQgb2YKdW5pZnlpbmcgY29tcHJl c3Npb24gcmVsYXRlZCBjb2RlIGFuZCBhbGxvdyBmb3IgdGhlIGludHJvZHVjdGlvbiBvZiBhZGRp dGlvbmFsCmFyY2hpdmUgZm9ybWF0cy4gSG93ZXZlciwgcGdfYmFja3VwX2FyY2hpdmVyLmMgd2Fz IG5vdCB1c2luZyB0aGF0IEFQSS4gVGhpcwpjb21taXQgdGVhY2hlcyBwZ19iYWNrdXBfYXJjaGl2 ZXIuYyBhYm91dCBjZnAgYW5kIGlzIHVzaW5nIGl0IHRocm91Z2ggb3V0LgoKRnVydGhlcm1vcmUs IGNvbXByZXNzaW9uIHdhcyBjaG9zZW4gYmFzZWQgb24gdGhlIHZhbHVlIG9mIHRoZSBsZXZlbCBw YXNzZWQKYXMgYW4gYXJndW1lbnQgZHVyaW5nIHRoZSBpbnZvY2F0aW9uIG9mIHBnX2R1bXAgb3Ig c29tZSBoYXJkY29kZWQgZGVmYXVsdHMuIFRoaXMKZG9lcyBub3Qgc2NhbGUgZm9yIG1vcmUgdGhh biBvbmUgY29tcHJlc3Npb24gbWV0aG9kcy4gTm93IHRoZSBtZXRob2QgdXNlZCBmb3IKY29tcHJl c3Npb24gY2FuIGJlIGV4cGxpY2l0bHkgcmVxdWVzdGVkIGR1cmluZyBjb21tYW5kIGludm9jYXRp b24sIG9yIHNldCBkdXJpbmcKaGFyZGNvZGVkIGRlZmF1bHRzLiBUaGVuIGl0IGlzIHN0b3JlZCBp biB0aGUgcmVsZXZhbnQgc3RydWN0cyBhbmQgcGFzc2VkIGluIHRoZQpyZWxldmFudCBmdW5jdGlv bnMsIGFsb25nIHNpZGUgY29tcHJlc3Npb24gbGV2ZWwgd2hpY2ggaGFzIGxvc3QgaXQncyBzcGVj aWFsCm1lYW5pbmcuIFRoZSBtZXRob2QgZm9yIGNvbXByZXNzaW9uIGlzIG5vdCB5ZXQgc3RvcmVk IGluIHRoZSBhY3R1YWwgYXJjaGl2ZS4KVGhpcyBpcyBkb25lIGluIHRoZSBuZXh0IGNvbW1pdCB3 aGljaCBkb2VzIGludHJvZHVjZSBhIG5ldyBtZXRob2QuCgpUaGUgcHJldmlvdXNseSBuYW1lZCBD b21wcmVzc2lvbkFsZ29yaXRobSBlbnVtIGlzIGNoYW5nZWQgZm9yCkNvbXByZXNzaW9uTWV0aG9k IHNvIHRoYXQgaXQgbWF0Y2hlcyBiZXR0ZXIgc2ltaWxhciB2YXJpYWJsZXMgZm91bmQgdGhyb3Vn aCBvdXQKdGhlIGNvZGUgYmFzZS4KCkluIGEgZmFzaGlvbiBzaW1pbGFyIHRvIHRoZSBiaW5hcnkg Zm9yIHBnX2Jhc2ViYWNrdXAsIHRoZSBtZXRob2QgZm9yIGNvbXByZXNzaW9uCmlzIHBhc3NlZCB1 c2luZyB0aGUgYWxyZWFkeSBleGlzdGluZyAtWi8tLWNvbXByZXNzIHBhcmFtZXRlciBvZiBwZ19k dW1wLiBUaGUKbGVnYWN5IGZvcm1hdCBhbmQgYmVoYXZpb3VyIGlzIG1haW50YWluZWQuIEFkZGl0 aW9uYWxseSwgdGhlIHVzZXIgY2FuIGV4cGxpY2l0bHkKcGFzcyBhIHJlcXVlc3RlZCBtZXRob2Qg YW5kIG9wdGlvbmFseSB0aGUgbGV2ZWwgdG8gYmUgdXNlZCBhZnRlciBhIHNlbWljb2xvbiwKZS5n LiAtLWNvbXByZXNzPWd6aXA6NgotLS0KIGRvYy9zcmMvc2dtbC9yZWYvcGdfZHVtcC5zZ21sICAg ICAgICAgfCAgMzAgKy0KIHNyYy9iaW4vcGdfZHVtcC9NYWtlZmlsZSAgICAgICAgICAgICAgfCAg IDIgKwogc3JjL2Jpbi9wZ19kdW1wL2NvbXByZXNzX2lvLmMgICAgICAgICB8IDQyNSArKysrKysr KysrKysrKysrLS0tLS0tLS0tLQogc3JjL2Jpbi9wZ19kdW1wL2NvbXByZXNzX2lvLmggICAgICAg ICB8ICAzMiArLQogc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cC5oICAgICAgICAgICB8ICAxNCAr LQogc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5jICB8IDE3MSArKysrKy0tLS0t LQogc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5oICB8ICA0NiArLS0KIHNyYy9i aW4vcGdfZHVtcC9wZ19iYWNrdXBfY3VzdG9tLmMgICAgfCAgMTEgKy0KIHNyYy9iaW4vcGdfZHVt cC9wZ19iYWNrdXBfZGlyZWN0b3J5LmMgfCAgMTIgKy0KIHNyYy9iaW4vcGdfZHVtcC9wZ19iYWNr dXBfdGFyLmMgICAgICAgfCAgMTIgKy0KIHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgICAgICAg ICAgICAgfCAxNTUgKysrKysrKystLQogc3JjL2Jpbi9wZ19kdW1wL3QvMDAxX2Jhc2ljLnBsICAg ICAgICB8ICAxNCArLQogc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwgICAgICB8ICA1 MCArKy0KIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICAgICAgfCAgIDIgKy0KIDE0 IGZpbGVzIGNoYW5nZWQsIDYxNiBpbnNlcnRpb25zKCspLCAzNjAgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9wZ19kdW1wLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVm L3BnX2R1bXAuc2dtbAppbmRleCAyZjAwNDJmZDk2Li45OTJiNzMxMmRmIDEwMDY0NAotLS0gYS9k b2Mvc3JjL3NnbWwvcmVmL3BnX2R1bXAuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL3BnX2R1 bXAuc2dtbApAQCAtNjQ0LDE3ICs2NDQsMzEgQEAgUG9zdGdyZVNRTCBkb2N1bWVudGF0aW9uCiAg ICAgIDwvdmFybGlzdGVudHJ5PgogCiAgICAgIDx2YXJsaXN0ZW50cnk+Ci0gICAgICA8dGVybT48 b3B0aW9uPi1aIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj4wLi45PC9yZXBsYWNlYWJs ZT48L29wdGlvbj48L3Rlcm0+Ci0gICAgICA8dGVybT48b3B0aW9uPi0tY29tcHJlc3M9PHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPjAuLjk8L3JlcGxhY2VhYmxlPjwvb3B0aW9uPjwvdGVy bT4KKyAgICAgIDx0ZXJtPjxvcHRpb24+LVogPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PmxldmVsPC9yZXBsYWNlYWJsZT48L29wdGlvbj48L3Rlcm0+CisgICAgICA8dGVybT48b3B0aW9u Pi1aIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5tZXRob2Q8L3JlcGxhY2VhYmxlPjwv b3B0aW9uPls6PHJlcGxhY2VhYmxlPmxldmVsPC9yZXBsYWNlYWJsZT5dPC90ZXJtPgorICAgICAg PHRlcm0+PG9wdGlvbj4tLWNvbXByZXNzPTxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5s ZXZlbDwvcmVwbGFjZWFibGU+PC9vcHRpb24+PC90ZXJtPgorICAgICAgPHRlcm0+PG9wdGlvbj4t LWNvbXByZXNzPTxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5tZXRob2Q8L3JlcGxhY2Vh YmxlPjwvb3B0aW9uPls6PHJlcGxhY2VhYmxlPmxldmVsPC9yZXBsYWNlYWJsZT5dPC90ZXJtPgog ICAgICAgPGxpc3RpdGVtPgogICAgICAgIDxwYXJhPgotICAgICAgICBTcGVjaWZ5IHRoZSBjb21w cmVzc2lvbiBsZXZlbCB0byB1c2UuICBaZXJvIG1lYW5zIG5vIGNvbXByZXNzaW9uLgorICAgICAg ICBTcGVjaWZ5IHRoZSBjb21wcmVzc2lvbiBtZXRob2QgYW5kL29yIHRoZSBjb21wcmVzc2lvbiBs ZXZlbCB0byB1c2UuCisgICAgICAgIFRoZSBjb21wcmVzc2lvbiBtZXRob2QgY2FuIGJlIHNldCB0 byA8bGl0ZXJhbD5nemlwPC9saXRlcmFsPiBvcgorICAgICAgICA8bGl0ZXJhbD5ub25lPC9saXRl cmFsPiBmb3Igbm8gY29tcHJlc3Npb24uIEEgY29tcHJlc3Npb24gbGV2ZWwgY2FuCisgICAgICAg IGJlIG9wdGlvbmFsbHkgc3BlY2lmaWVkLCBieSBhcHBlbmRpbmcgdGhlIGxldmVsIG51bWJlciBh ZnRlciBhIGNvbG9uCisgICAgICAgICg8bGl0ZXJhbD46PC9saXRlcmFsPikuIElmIG5vIGxldmVs IGlzIHNwZWNpZmllZCwgdGhlIGRlZmF1bHQgY29tcHJlc3Npb24KKyAgICAgICAgbGV2ZWwgd2ls bCBiZSB1c2VkIGZvciB0aGUgc3BlY2lmaWVkIG1ldGhvZC4gSWYgb25seSBhIGxldmVsIGlzCisg ICAgICAgIHNwZWNpZmllZCB3aXRob3V0IG1lbnRpb25pbmcgYSBtZXRob2QsIDxsaXRlcmFsPmd6 aXA8L2xpdGVyYWw+IGNvbXByZXNzaW9uCisgICAgICAgIHdpbGwgYmUgdXNlZC4KKyAgICAgICA8 L3BhcmE+CisKKyAgICAgICA8cGFyYT4KICAgICAgICAgRm9yIHRoZSBjdXN0b20gYW5kIGRpcmVj dG9yeSBhcmNoaXZlIGZvcm1hdHMsIHRoaXMgc3BlY2lmaWVzIGNvbXByZXNzaW9uIG9mCi0gICAg ICAgIGluZGl2aWR1YWwgdGFibGUtZGF0YSBzZWdtZW50cywgYW5kIHRoZSBkZWZhdWx0IGlzIHRv IGNvbXByZXNzCi0gICAgICAgIGF0IGEgbW9kZXJhdGUgbGV2ZWwuCi0gICAgICAgIEZvciBwbGFp biB0ZXh0IG91dHB1dCwgc2V0dGluZyBhIG5vbnplcm8gY29tcHJlc3Npb24gbGV2ZWwgY2F1c2Vz Ci0gICAgICAgIHRoZSBlbnRpcmUgb3V0cHV0IGZpbGUgdG8gYmUgY29tcHJlc3NlZCwgYXMgdGhv dWdoIGl0IGhhZCBiZWVuCi0gICAgICAgIGZlZCB0aHJvdWdoIDxhcHBsaWNhdGlvbj5nemlwPC9h cHBsaWNhdGlvbj47IGJ1dCB0aGUgZGVmYXVsdCBpcyBub3QgdG8gY29tcHJlc3MuCisgICAgICAg IGluZGl2aWR1YWwgdGFibGUtZGF0YSBzZWdtZW50cywgYW5kIHRoZSBkZWZhdWx0IGlzIHRvIGNv bXByZXNzIHVzaW5nCisgICAgICAgIDxsaXRlcmFsPmd6aXA8L2xpdGVyYWw+IGF0IGEgbW9kZXJh dGUgbGV2ZWwuIEZvciBwbGFpbiB0ZXh0IG91dHB1dCwKKyAgICAgICAgc2V0dGluZyBhIG5vbnpl cm8gY29tcHJlc3Npb24gbGV2ZWwgY2F1c2VzIHRoZSBlbnRpcmUgb3V0cHV0IGZpbGUgdG8gYmUg Y29tcHJlc3NlZCwKKyAgICAgICAgYXMgdGhvdWdoIGl0IGhhZCBiZWVuIGZlZCB0aHJvdWdoIDxh cHBsaWNhdGlvbj5nemlwPC9hcHBsaWNhdGlvbj47IGJ1dCB0aGUgZGVmYXVsdAorICAgICAgICBp cyBub3QgdG8gY29tcHJlc3MuCisgICAgICAgPC9wYXJhPgorICAgICAgIDxwYXJhPgogICAgICAg ICBUaGUgdGFyIGFyY2hpdmUgZm9ybWF0IGN1cnJlbnRseSBkb2VzIG5vdCBzdXBwb3J0IGNvbXBy ZXNzaW9uIGF0IGFsbC4KICAgICAgICA8L3BhcmE+CiAgICAgICA8L2xpc3RpdGVtPgpkaWZmIC0t Z2l0IGEvc3JjL2Jpbi9wZ19kdW1wL01ha2VmaWxlIGIvc3JjL2Jpbi9wZ19kdW1wL01ha2VmaWxl CmluZGV4IDg0MzA2ZDk0ZWUuLjU2ZTA0MWM5YjMgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVt cC9NYWtlZmlsZQorKysgYi9zcmMvYmluL3BnX2R1bXAvTWFrZWZpbGUKQEAgLTE2LDYgKzE2LDgg QEAgc3ViZGlyID0gc3JjL2Jpbi9wZ19kdW1wCiB0b3BfYnVpbGRkaXIgPSAuLi8uLi8uLgogaW5j bHVkZSAkKHRvcF9idWlsZGRpcikvc3JjL01ha2VmaWxlLmdsb2JhbAogCitleHBvcnQgR1pJUF9Q Uk9HUkFNPSQoR1pJUCkKKwogb3ZlcnJpZGUgQ1BQRkxBR1MgOj0gLUkkKGxpYnBxX3NyY2Rpcikg JChDUFBGTEFHUykKIExERkxBR1NfSU5URVJOQUwgKz0gLUwkKHRvcF9idWlsZGRpcikvc3JjL2Zl X3V0aWxzIC1scGdmZXV0aWxzICQobGlicHFfcGdwb3J0KQogCmRpZmYgLS1naXQgYS9zcmMvYmlu L3BnX2R1bXAvY29tcHJlc3NfaW8uYyBiL3NyYy9iaW4vcGdfZHVtcC9jb21wcmVzc19pby5jCmlu ZGV4IDkwNzdmZGI3NGQuLmJhYjcyM2M4NGYgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9j b21wcmVzc19pby5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9jb21wcmVzc19pby5jCkBAIC02NCw3 ICs2NCw3IEBACiAvKiB0eXBlZGVmIGFwcGVhcnMgaW4gY29tcHJlc3NfaW8uaCAqLwogc3RydWN0 IENvbXByZXNzb3JTdGF0ZQogewotCUNvbXByZXNzaW9uQWxnb3JpdGhtIGNvbXByQWxnOworCUNv bXByZXNzaW9uTWV0aG9kIGNvbXByZXNzaW9uTWV0aG9kOwogCVdyaXRlRnVuYwl3cml0ZUY7CiAK ICNpZmRlZiBIQVZFX0xJQloKQEAgLTc0LDkgKzc0LDYgQEAgc3RydWN0IENvbXByZXNzb3JTdGF0 ZQogI2VuZGlmCiB9OwogCi1zdGF0aWMgdm9pZCBQYXJzZUNvbXByZXNzaW9uT3B0aW9uKGludCBj b21wcmVzc2lvbiwgQ29tcHJlc3Npb25BbGdvcml0aG0gKmFsZywKLQkJCQkJCQkJICAgaW50ICps ZXZlbCk7Ci0KIC8qIFJvdXRpbmVzIHRoYXQgc3VwcG9ydCB6bGliIGNvbXByZXNzZWQgZGF0YSBJ L08gKi8KICNpZmRlZiBIQVZFX0xJQloKIHN0YXRpYyB2b2lkIEluaXRDb21wcmVzc29yWmxpYihD b21wcmVzc29yU3RhdGUgKmNzLCBpbnQgbGV2ZWwpOwpAQCAtOTMsNTcgKzkwLDMwIEBAIHN0YXRp YyB2b2lkIFJlYWREYXRhRnJvbUFyY2hpdmVOb25lKEFyY2hpdmVIYW5kbGUgKkFILCBSZWFkRnVu YyByZWFkRik7CiBzdGF0aWMgdm9pZCBXcml0ZURhdGFUb0FyY2hpdmVOb25lKEFyY2hpdmVIYW5k bGUgKkFILCBDb21wcmVzc29yU3RhdGUgKmNzLAogCQkJCQkJCQkgICBjb25zdCBjaGFyICpkYXRh LCBzaXplX3QgZExlbik7CiAKLS8qCi0gKiBJbnRlcnByZXRzIGEgbnVtZXJpYyAnY29tcHJlc3Np b24nIHZhbHVlLiBUaGUgYWxnb3JpdGhtIGltcGxpZWQgYnkgdGhlCi0gKiB2YWx1ZSAoemxpYiBv ciBub25lIGF0IHRoZSBtb21lbnQpLCBpcyByZXR1cm5lZCBpbiAqYWxnLCBhbmQgdGhlCi0gKiB6 bGliIGNvbXByZXNzaW9uIGxldmVsIGluICpsZXZlbC4KLSAqLwotc3RhdGljIHZvaWQKLVBhcnNl Q29tcHJlc3Npb25PcHRpb24oaW50IGNvbXByZXNzaW9uLCBDb21wcmVzc2lvbkFsZ29yaXRobSAq YWxnLCBpbnQgKmxldmVsKQotewotCWlmIChjb21wcmVzc2lvbiA9PSBaX0RFRkFVTFRfQ09NUFJF U1NJT04gfHwKLQkJKGNvbXByZXNzaW9uID4gMCAmJiBjb21wcmVzc2lvbiA8PSA5KSkKLQkJKmFs ZyA9IENPTVBSX0FMR19MSUJaOwotCWVsc2UgaWYgKGNvbXByZXNzaW9uID09IDApCi0JCSphbGcg PSBDT01QUl9BTEdfTk9ORTsKLQllbHNlCi0JewotCQlmYXRhbCgiaW52YWxpZCBjb21wcmVzc2lv biBjb2RlOiAlZCIsIGNvbXByZXNzaW9uKTsKLQkJKmFsZyA9IENPTVBSX0FMR19OT05FOwkvKiBr ZWVwIGNvbXBpbGVyIHF1aWV0ICovCi0JfQotCi0JLyogVGhlIGxldmVsIGlzIGp1c3QgdGhlIHBh c3NlZC1pbiB2YWx1ZS4gKi8KLQlpZiAobGV2ZWwpCi0JCSpsZXZlbCA9IGNvbXByZXNzaW9uOwot fQotCiAvKiBQdWJsaWMgaW50ZXJmYWNlIHJvdXRpbmVzICovCiAKIC8qIEFsbG9jYXRlIGEgbmV3 IGNvbXByZXNzb3IgKi8KIENvbXByZXNzb3JTdGF0ZSAqCi1BbGxvY2F0ZUNvbXByZXNzb3IoaW50 IGNvbXByZXNzaW9uLCBXcml0ZUZ1bmMgd3JpdGVGKQorQWxsb2NhdGVDb21wcmVzc29yKENvbXBy ZXNzaW9uTWV0aG9kIGNvbXByZXNzaW9uTWV0aG9kLAorCQkJCSAgIGludCBjb21wcmVzc2lvbkxl dmVsLCBXcml0ZUZ1bmMgd3JpdGVGKQogewogCUNvbXByZXNzb3JTdGF0ZSAqY3M7Ci0JQ29tcHJl c3Npb25BbGdvcml0aG0gYWxnOwotCWludAkJCWxldmVsOwotCi0JUGFyc2VDb21wcmVzc2lvbk9w dGlvbihjb21wcmVzc2lvbiwgJmFsZywgJmxldmVsKTsKIAogI2lmbmRlZiBIQVZFX0xJQloKLQlp ZiAoYWxnID09IENPTVBSX0FMR19MSUJaKQorCWlmIChjb21wcmVzc2lvbk1ldGhvZCA9PSBDT01Q UkVTU0lPTl9HWklQKQogCQlmYXRhbCgibm90IGJ1aWx0IHdpdGggemxpYiBzdXBwb3J0Iik7CiAj ZW5kaWYKIAogCWNzID0gKENvbXByZXNzb3JTdGF0ZSAqKSBwZ19tYWxsb2MwKHNpemVvZihDb21w cmVzc29yU3RhdGUpKTsKIAljcy0+d3JpdGVGID0gd3JpdGVGOwotCWNzLT5jb21wckFsZyA9IGFs ZzsKKwljcy0+Y29tcHJlc3Npb25NZXRob2QgPSBjb21wcmVzc2lvbk1ldGhvZDsKIAogCS8qCiAJ ICogUGVyZm9ybSBjb21wcmVzc2lvbiBhbGdvcml0aG0gc3BlY2lmaWMgaW5pdGlhbGl6YXRpb24u CiAJICovCiAjaWZkZWYgSEFWRV9MSUJaCi0JaWYgKGFsZyA9PSBDT01QUl9BTEdfTElCWikKLQkJ SW5pdENvbXByZXNzb3JabGliKGNzLCBsZXZlbCk7CisJaWYgKGNvbXByZXNzaW9uTWV0aG9kID09 IENPTVBSRVNTSU9OX0daSVApCisJCUluaXRDb21wcmVzc29yWmxpYihjcywgY29tcHJlc3Npb25M ZXZlbCk7CiAjZW5kaWYKIAogCXJldHVybiBjczsKQEAgLTE1NCwyMSArMTI0LDI0IEBAIEFsbG9j YXRlQ29tcHJlc3NvcihpbnQgY29tcHJlc3Npb24sIFdyaXRlRnVuYyB3cml0ZUYpCiAgKiBvdXQg d2l0aCBhaHdyaXRlKCkuCiAgKi8KIHZvaWQKLVJlYWREYXRhRnJvbUFyY2hpdmUoQXJjaGl2ZUhh bmRsZSAqQUgsIGludCBjb21wcmVzc2lvbiwgUmVhZEZ1bmMgcmVhZEYpCitSZWFkRGF0YUZyb21B cmNoaXZlKEFyY2hpdmVIYW5kbGUgKkFILCBDb21wcmVzc2lvbk1ldGhvZCBjb21wcmVzc2lvbk1l dGhvZCwKKwkJCQkJaW50IGNvbXByZXNzaW9uTGV2ZWwsIFJlYWRGdW5jIHJlYWRGKQogewotCUNv bXByZXNzaW9uQWxnb3JpdGhtIGFsZzsKLQotCVBhcnNlQ29tcHJlc3Npb25PcHRpb24oY29tcHJl c3Npb24sICZhbGcsIE5VTEwpOwotCi0JaWYgKGFsZyA9PSBDT01QUl9BTEdfTk9ORSkKLQkJUmVh ZERhdGFGcm9tQXJjaGl2ZU5vbmUoQUgsIHJlYWRGKTsKLQlpZiAoYWxnID09IENPTVBSX0FMR19M SUJaKQorCXN3aXRjaCAoY29tcHJlc3Npb25NZXRob2QpCiAJeworCQljYXNlIENPTVBSRVNTSU9O X05PTkU6CisJCQlSZWFkRGF0YUZyb21BcmNoaXZlTm9uZShBSCwgcmVhZEYpOworCQkJYnJlYWs7 CisJCWNhc2UgQ09NUFJFU1NJT05fR1pJUDoKICNpZmRlZiBIQVZFX0xJQloKLQkJUmVhZERhdGFG cm9tQXJjaGl2ZVpsaWIoQUgsIHJlYWRGKTsKKwkJCVJlYWREYXRhRnJvbUFyY2hpdmVabGliKEFI LCByZWFkRik7CiAjZWxzZQotCQlmYXRhbCgibm90IGJ1aWx0IHdpdGggemxpYiBzdXBwb3J0Iik7 CisJCQlmYXRhbCgibm90IGJ1aWx0IHdpdGggemxpYiBzdXBwb3J0Iik7CiAjZW5kaWYKKwkJCWJy ZWFrOworCQlkZWZhdWx0OgorCQkJZmF0YWwoImludmFsaWQgY29tcHJlc3Npb24gbWV0aG9kIik7 CisJCQlicmVhazsKIAl9CiB9CiAKQEAgLTE3OSwxOCArMTUyLDIxIEBAIHZvaWQKIFdyaXRlRGF0 YVRvQXJjaGl2ZShBcmNoaXZlSGFuZGxlICpBSCwgQ29tcHJlc3NvclN0YXRlICpjcywKIAkJCQkg ICBjb25zdCB2b2lkICpkYXRhLCBzaXplX3QgZExlbikKIHsKLQlzd2l0Y2ggKGNzLT5jb21wckFs ZykKKwlzd2l0Y2ggKGNzLT5jb21wcmVzc2lvbk1ldGhvZCkKIAl7Ci0JCWNhc2UgQ09NUFJfQUxH X0xJQlo6CisJCWNhc2UgQ09NUFJFU1NJT05fR1pJUDoKICNpZmRlZiBIQVZFX0xJQloKIAkJCVdy aXRlRGF0YVRvQXJjaGl2ZVpsaWIoQUgsIGNzLCBkYXRhLCBkTGVuKTsKICNlbHNlCiAJCQlmYXRh bCgibm90IGJ1aWx0IHdpdGggemxpYiBzdXBwb3J0Iik7CiAjZW5kaWYKIAkJCWJyZWFrOwotCQlj YXNlIENPTVBSX0FMR19OT05FOgorCQljYXNlIENPTVBSRVNTSU9OX05PTkU6CiAJCQlXcml0ZURh dGFUb0FyY2hpdmVOb25lKEFILCBjcywgZGF0YSwgZExlbik7CiAJCQlicmVhazsKKwkJZGVmYXVs dDoKKwkJCWZhdGFsKCJpbnZhbGlkIGNvbXByZXNzaW9uIG1ldGhvZCIpOworCQkJYnJlYWs7CiAJ fQogfQogCkBAIC0yMDAsMTEgKzE3NiwyMyBAQCBXcml0ZURhdGFUb0FyY2hpdmUoQXJjaGl2ZUhh bmRsZSAqQUgsIENvbXByZXNzb3JTdGF0ZSAqY3MsCiB2b2lkCiBFbmRDb21wcmVzc29yKEFyY2hp dmVIYW5kbGUgKkFILCBDb21wcmVzc29yU3RhdGUgKmNzKQogeworCXN3aXRjaCAoY3MtPmNvbXBy ZXNzaW9uTWV0aG9kKQorCXsKKwkJY2FzZSBDT01QUkVTU0lPTl9HWklQOgogI2lmZGVmIEhBVkVf TElCWgotCWlmIChjcy0+Y29tcHJBbGcgPT0gQ09NUFJfQUxHX0xJQlopCi0JCUVuZENvbXByZXNz b3JabGliKEFILCBjcyk7CisJCQlFbmRDb21wcmVzc29yWmxpYihBSCwgY3MpOworI2Vsc2UKKwkJ CWZhdGFsKCJub3QgYnVpbHQgd2l0aCB6bGliIHN1cHBvcnQiKTsKICNlbmRpZgotCWZyZWUoY3Mp OworCQkJYnJlYWs7CisJCWNhc2UgQ09NUFJFU1NJT05fTk9ORToKKwkJCWZyZWUoY3MpOworCQkJ YnJlYWs7CisKKwkJZGVmYXVsdDoKKwkJCWZhdGFsKCJpbnZhbGlkIGNvbXByZXNzaW9uIG1ldGhv ZCIpOworCQkJYnJlYWs7CisJfQogfQogCiAvKiBQcml2YXRlIHJvdXRpbmVzLCBzcGVjaWZpYyB0 byBlYWNoIGNvbXByZXNzaW9uIG1ldGhvZC4gKi8KQEAgLTQxOCwxMCArNDA2LDggQEAgV3JpdGVE YXRhVG9BcmNoaXZlTm9uZShBcmNoaXZlSGFuZGxlICpBSCwgQ29tcHJlc3NvclN0YXRlICpjcywK ICAqLwogc3RydWN0IGNmcAogewotCUZJTEUJICAgKnVuY29tcHJlc3NlZGZwOwotI2lmZGVmIEhB VkVfTElCWgotCWd6RmlsZQkJY29tcHJlc3NlZGZwOwotI2VuZGlmCisJQ29tcHJlc3Npb25NZXRo b2QgY29tcHJlc3Npb25NZXRob2Q7CisJdm9pZAkgICAqZnA7CiB9OwogCiAjaWZkZWYgSEFWRV9M SUJaCkBAIC00NTUsMTggKzQ0MSwxOCBAQCBjZm9wZW5fcmVhZChjb25zdCBjaGFyICpwYXRoLCBj b25zdCBjaGFyICptb2RlKQogCiAjaWZkZWYgSEFWRV9MSUJaCiAJaWYgKGhhc1N1ZmZpeChwYXRo LCAiLmd6IikpCi0JCWZwID0gY2ZvcGVuKHBhdGgsIG1vZGUsIDEpOworCQlmcCA9IGNmb3Blbihw YXRoLCBtb2RlLCBDT01QUkVTU0lPTl9HWklQLCAwKTsKIAllbHNlCiAjZW5kaWYKIAl7Ci0JCWZw ID0gY2ZvcGVuKHBhdGgsIG1vZGUsIDApOworCQlmcCA9IGNmb3BlbihwYXRoLCBtb2RlLCBDT01Q UkVTU0lPTl9OT05FLCAwKTsKICNpZmRlZiBIQVZFX0xJQloKIAkJaWYgKGZwID09IE5VTEwpCiAJ CXsKIAkJCWNoYXIJICAgKmZuYW1lOwogCiAJCQlmbmFtZSA9IHBzcHJpbnRmKCIlcy5neiIsIHBh dGgpOwotCQkJZnAgPSBjZm9wZW4oZm5hbWUsIG1vZGUsIDEpOworCQkJZnAgPSBjZm9wZW4oZm5h bWUsIG1vZGUsIENPTVBSRVNTSU9OX0daSVAsIDApOwogCQkJZnJlZV9rZWVwX2Vycm5vKGZuYW1l KTsKIAkJfQogI2VuZGlmCkBAIC00NzksMjYgKzQ2NSwzMSBAQCBjZm9wZW5fcmVhZChjb25zdCBj aGFyICpwYXRoLCBjb25zdCBjaGFyICptb2RlKQogICogYmUgYSBmaWxlbW9kZSBhcyBhY2NlcHRl ZCBieSBmb3BlbigpIGFuZCBnem9wZW4oKSB0aGF0IGluZGljYXRlcyB3cml0aW5nCiAgKiAoInci LCAid2IiLCAiYSIsIG9yICJhYiIpLgogICoKLSAqIElmICdjb21wcmVzc2lvbicgaXMgbm9uLXpl cm8sIGEgZ3ppcCBjb21wcmVzc2VkIHN0cmVhbSBpcyBvcGVuZWQsIGFuZAotICogJ2NvbXByZXNz aW9uJyBpbmRpY2F0ZXMgdGhlIGNvbXByZXNzaW9uIGxldmVsIHVzZWQuIFRoZSAiLmd6IiBzdWZm aXgKLSAqIGlzIGF1dG9tYXRpY2FsbHkgYWRkZWQgdG8gJ3BhdGgnIGluIHRoYXQgY2FzZS4KKyAq IFdoZW4gJ2NvbXByZXNzaW9uTWV0aG9kJyBpbmRpY2F0ZXMgZ3ppcCwgYSBnemlwIGNvbXByZXNz ZWQgc3RyZWFtIGlzIG9wZW5lZCwKKyAqIGFuZCAnY29tcHJlc3Npb25MZXZlbCcgaXMgdXNlZC4g VGhlICIuZ3oiIHN1ZmZpeCBpcyBhdXRvbWF0aWNhbGx5IGFkZGVkIHRvCisgKiAncGF0aCcgaW4g dGhhdCBjYXNlLgorICoKKyAqIEl0IGlzIHRoZSBjYWxsZXIncyByZXNwb25zaWJpbGl0eSB0byB2 ZXJpZnkgdGhhdCB0aGUgcmVxdWVzdGVkCisgKiAnY29tcHJlc3Npb25NZXRob2QnIGlzIHN1cHBv cnRlZCBieSB0aGUgYnVpbGQuCiAgKgogICogT24gZmFpbHVyZSwgcmV0dXJuIE5VTEwgd2l0aCBh biBlcnJvciBjb2RlIGluIGVycm5vLgogICovCiBjZnAgKgotY2ZvcGVuX3dyaXRlKGNvbnN0IGNo YXIgKnBhdGgsIGNvbnN0IGNoYXIgKm1vZGUsIGludCBjb21wcmVzc2lvbikKK2Nmb3Blbl93cml0 ZShjb25zdCBjaGFyICpwYXRoLCBjb25zdCBjaGFyICptb2RlLAorCQkJIENvbXByZXNzaW9uTWV0 aG9kIGNvbXByZXNzaW9uTWV0aG9kLAorCQkJIGludCBjb21wcmVzc2lvbkxldmVsKQogewogCWNm cAkJICAgKmZwOwogCi0JaWYgKGNvbXByZXNzaW9uID09IDApCi0JCWZwID0gY2ZvcGVuKHBhdGgs IG1vZGUsIDApOworCWlmIChjb21wcmVzc2lvbk1ldGhvZCA9PSBDT01QUkVTU0lPTl9OT05FKQor CQlmcCA9IGNmb3BlbihwYXRoLCBtb2RlLCBjb21wcmVzc2lvbk1ldGhvZCwgMCk7CiAJZWxzZQog CXsKICNpZmRlZiBIQVZFX0xJQloKIAkJY2hhcgkgICAqZm5hbWU7CiAKIAkJZm5hbWUgPSBwc3By aW50ZigiJXMuZ3oiLCBwYXRoKTsKLQkJZnAgPSBjZm9wZW4oZm5hbWUsIG1vZGUsIGNvbXByZXNz aW9uKTsKKwkJZnAgPSBjZm9wZW4oZm5hbWUsIG1vZGUsIGNvbXByZXNzaW9uTWV0aG9kLCBjb21w cmVzc2lvbkxldmVsKTsKIAkJZnJlZV9rZWVwX2Vycm5vKGZuYW1lKTsKICNlbHNlCiAJCWZhdGFs KCJub3QgYnVpbHQgd2l0aCB6bGliIHN1cHBvcnQiKTsKQEAgLTUwOSw2MCArNTAwLDk0IEBAIGNm b3Blbl93cml0ZShjb25zdCBjaGFyICpwYXRoLCBjb25zdCBjaGFyICptb2RlLCBpbnQgY29tcHJl c3Npb24pCiB9CiAKIC8qCi0gKiBPcGVucyBmaWxlICdwYXRoJyBpbiAnbW9kZScuIElmICdjb21w cmVzc2lvbicgaXMgbm9uLXplcm8sIHRoZSBmaWxlCi0gKiBpcyBvcGVuZWQgd2l0aCBsaWJ6IGd6 b3BlbigpLCBvdGhlcndpc2Ugd2l0aCBwbGFpbiBmb3BlbigpLgorICogVGhpcyBpcyB0aGUgd29y a2hvcnNlIGZvciBjZm9wZW4oKSBvciBjZmRvcGVuKCkuIEl0IG9wZW5zIGZpbGUgJ3BhdGgnIG9y CisgKiBhc3NvY2lhdGVzIGEgc3RyZWFtICdmZCcsIGlmICdmZCcgaXMgYSB2YWxpZCBkZXNjcmlw dG9yLCBpbiAnbW9kZScuIFRoZQorICogZGVzY3JpcHRvciBpcyBub3QgZHVwJ2VkIGFuZCBpdCBp cyB0aGUgY2FsbGVyJ3MgcmVzcG9uc2liaWxpdHkgdG8gZG8gc28uCisgKiBUaGUgY2FsbGVyIG11 c3QgdmVyaWZ5IHRoYXQgdGhlICdjb21wcmVzc2lvbk1ldGhvZCcgaXMgc3VwcG9ydGVkIGJ5IHRo ZQorICogY3VycmVudCBidWlsZC4KICAqCiAgKiBPbiBmYWlsdXJlLCByZXR1cm4gTlVMTCB3aXRo IGFuIGVycm9yIGNvZGUgaW4gZXJybm8uCiAgKi8KLWNmcCAqCi1jZm9wZW4oY29uc3QgY2hhciAq cGF0aCwgY29uc3QgY2hhciAqbW9kZSwgaW50IGNvbXByZXNzaW9uKQorc3RhdGljIGNmcCAqCitj Zm9wZW5faW50ZXJuYWwoY29uc3QgY2hhciAqcGF0aCwgaW50IGZkLCBjb25zdCBjaGFyICptb2Rl LAorCQkJCUNvbXByZXNzaW9uTWV0aG9kIGNvbXByZXNzaW9uTWV0aG9kLCBpbnQgY29tcHJlc3Np b25MZXZlbCkKIHsKIAljZnAJCSAgICpmcCA9IHBnX21hbGxvYyhzaXplb2YoY2ZwKSk7CiAKLQlp ZiAoY29tcHJlc3Npb24gIT0gMCkKKwlmcC0+Y29tcHJlc3Npb25NZXRob2QgPSBjb21wcmVzc2lv bk1ldGhvZDsKKworCXN3aXRjaCAoY29tcHJlc3Npb25NZXRob2QpCiAJewotI2lmZGVmIEhBVkVf TElCWgotCQlpZiAoY29tcHJlc3Npb24gIT0gWl9ERUZBVUxUX0NPTVBSRVNTSU9OKQotCQl7Ci0J CQkvKiB1c2VyIGhhcyBzcGVjaWZpZWQgYSBjb21wcmVzc2lvbiBsZXZlbCwgc28gdGVsbCB6bGli IHRvIHVzZSBpdCAqLwotCQkJY2hhcgkJbW9kZV9jb21wcmVzc2lvblszMl07CisJCWNhc2UgQ09N UFJFU1NJT05fTk9ORToKKwkJCWlmIChmZCA+PSAwKQorCQkJCWZwLT5mcCA9IGZkb3BlbihmZCwg bW9kZSk7CisJCQllbHNlCisJCQkJZnAtPmZwID0gZm9wZW4ocGF0aCwgbW9kZSk7CisJCQlpZiAo ZnAtPmZwID09IE5VTEwpCisJCQl7CisJCQkJZnJlZV9rZWVwX2Vycm5vKGZwKTsKKwkJCQlmcCA9 IE5VTEw7CisJCQl9CiAKLQkJCXNucHJpbnRmKG1vZGVfY29tcHJlc3Npb24sIHNpemVvZihtb2Rl X2NvbXByZXNzaW9uKSwgIiVzJWQiLAotCQkJCQkgbW9kZSwgY29tcHJlc3Npb24pOwotCQkJZnAt PmNvbXByZXNzZWRmcCA9IGd6b3BlbihwYXRoLCBtb2RlX2NvbXByZXNzaW9uKTsKLQkJfQotCQll bHNlCi0JCXsKLQkJCS8qIGRvbid0IHNwZWNpZnkgYSBsZXZlbCwganVzdCB1c2UgdGhlIHpsaWIg ZGVmYXVsdCAqLwotCQkJZnAtPmNvbXByZXNzZWRmcCA9IGd6b3BlbihwYXRoLCBtb2RlKTsKLQkJ fQorCQkJYnJlYWs7CisJCWNhc2UgQ09NUFJFU1NJT05fR1pJUDoKKyNpZmRlZiBIQVZFX0xJQloK KwkJCWlmIChjb21wcmVzc2lvbkxldmVsICE9IFpfREVGQVVMVF9DT01QUkVTU0lPTikKKwkJCXsK KwkJCQkvKgorCQkJCSAqIHVzZXIgaGFzIHNwZWNpZmllZCBhIGNvbXByZXNzaW9uIGxldmVsLCBz byB0ZWxsIHpsaWIgdG8gdXNlCisJCQkJICogaXQKKwkJCQkgKi8KKwkJCQljaGFyCQltb2RlX2Nv bXByZXNzaW9uWzMyXTsKKworCQkJCXNucHJpbnRmKG1vZGVfY29tcHJlc3Npb24sIHNpemVvZiht b2RlX2NvbXByZXNzaW9uKSwgIiVzJWQiLAorCQkJCQkJIG1vZGUsIGNvbXByZXNzaW9uTGV2ZWwp OworCQkJCWlmIChmZCA+PSAwKQorCQkJCQlmcC0+ZnAgPSBnemRvcGVuKGZkLCBtb2RlX2NvbXBy ZXNzaW9uKTsKKwkJCQllbHNlCisJCQkJCWZwLT5mcCA9IGd6b3BlbihwYXRoLCBtb2RlX2NvbXBy ZXNzaW9uKTsKKwkJCX0KKwkJCWVsc2UKKwkJCXsKKwkJCQkvKiBkb24ndCBzcGVjaWZ5IGEgbGV2 ZWwsIGp1c3QgdXNlIHRoZSB6bGliIGRlZmF1bHQgKi8KKwkJCQlpZiAoZmQgPj0gMCkKKwkJCQkJ ZnAtPmZwID0gZ3pkb3BlbihmZCwgbW9kZSk7CisJCQkJZWxzZQorCQkJCQlmcC0+ZnAgPSBnem9w ZW4ocGF0aCwgbW9kZSk7CisJCQl9CiAKLQkJZnAtPnVuY29tcHJlc3NlZGZwID0gTlVMTDsKLQkJ aWYgKGZwLT5jb21wcmVzc2VkZnAgPT0gTlVMTCkKLQkJewotCQkJZnJlZV9rZWVwX2Vycm5vKGZw KTsKLQkJCWZwID0gTlVMTDsKLQkJfQorCQkJaWYgKGZwLT5mcCA9PSBOVUxMKQorCQkJeworCQkJ CWZyZWVfa2VlcF9lcnJubyhmcCk7CisJCQkJZnAgPSBOVUxMOworCQkJfQogI2Vsc2UKLQkJZmF0 YWwoIm5vdCBidWlsdCB3aXRoIHpsaWIgc3VwcG9ydCIpOwotI2VuZGlmCi0JfQotCWVsc2UKLQl7 Ci0jaWZkZWYgSEFWRV9MSUJaCi0JCWZwLT5jb21wcmVzc2VkZnAgPSBOVUxMOworCQkJZmF0YWwo Im5vdCBidWlsdCB3aXRoIHpsaWIgc3VwcG9ydCIpOwogI2VuZGlmCi0JCWZwLT51bmNvbXByZXNz ZWRmcCA9IGZvcGVuKHBhdGgsIG1vZGUpOwotCQlpZiAoZnAtPnVuY29tcHJlc3NlZGZwID09IE5V TEwpCi0JCXsKLQkJCWZyZWVfa2VlcF9lcnJubyhmcCk7Ci0JCQlmcCA9IE5VTEw7Ci0JCX0KKwkJ CWJyZWFrOworCQlkZWZhdWx0OgorCQkJZmF0YWwoImludmFsaWQgY29tcHJlc3Npb24gbWV0aG9k Iik7CisJCQlicmVhazsKIAl9CiAKIAlyZXR1cm4gZnA7CiB9CiAKK2NmcCAqCitjZm9wZW4oY29u c3QgY2hhciAqcGF0aCwgY29uc3QgY2hhciAqbW9kZSwKKwkgICBDb21wcmVzc2lvbk1ldGhvZCBj b21wcmVzc2lvbk1ldGhvZCwKKwkgICBpbnQgY29tcHJlc3Npb25MZXZlbCkKK3sKKwlyZXR1cm4g Y2ZvcGVuX2ludGVybmFsKHBhdGgsIC0xLCBtb2RlLCBjb21wcmVzc2lvbk1ldGhvZCwgY29tcHJl c3Npb25MZXZlbCk7Cit9CisKK2NmcCAqCitjZmRvcGVuKGludCBmZCwgY29uc3QgY2hhciAqbW9k ZSwKKwkgICBDb21wcmVzc2lvbk1ldGhvZCBjb21wcmVzc2lvbk1ldGhvZCwKKwkgICBpbnQgY29t cHJlc3Npb25MZXZlbCkKK3sKKwlyZXR1cm4gY2ZvcGVuX2ludGVybmFsKE5VTEwsIGZkLCBtb2Rl LCBjb21wcmVzc2lvbk1ldGhvZCwgY29tcHJlc3Npb25MZXZlbCk7Cit9CiAKIGludAogY2ZyZWFk KHZvaWQgKnB0ciwgaW50IHNpemUsIGNmcCAqZnApCkBAIC01NzIsMzggKzU5Nyw2MSBAQCBjZnJl YWQodm9pZCAqcHRyLCBpbnQgc2l6ZSwgY2ZwICpmcCkKIAlpZiAoc2l6ZSA9PSAwKQogCQlyZXR1 cm4gMDsKIAotI2lmZGVmIEhBVkVfTElCWgotCWlmIChmcC0+Y29tcHJlc3NlZGZwKQorCXN3aXRj aCAoZnAtPmNvbXByZXNzaW9uTWV0aG9kKQogCXsKLQkJcmV0ID0gZ3pyZWFkKGZwLT5jb21wcmVz c2VkZnAsIHB0ciwgc2l6ZSk7Ci0JCWlmIChyZXQgIT0gc2l6ZSAmJiAhZ3plb2YoZnAtPmNvbXBy ZXNzZWRmcCkpCi0JCXsKLQkJCWludAkJCWVycm51bTsKLQkJCWNvbnN0IGNoYXIgKmVycm1zZyA9 IGd6ZXJyb3IoZnAtPmNvbXByZXNzZWRmcCwgJmVycm51bSk7CisJCWNhc2UgQ09NUFJFU1NJT05f Tk9ORToKKwkJCXJldCA9IGZyZWFkKHB0ciwgMSwgc2l6ZSwgZnAtPmZwKTsKKwkJCWlmIChyZXQg IT0gc2l6ZSAmJiAhZmVvZihmcC0+ZnApKQorCQkJCVJFQURfRVJST1JfRVhJVChmcC0+ZnApOwog Ci0JCQlmYXRhbCgiY291bGQgbm90IHJlYWQgZnJvbSBpbnB1dCBmaWxlOiAlcyIsCi0JCQkJICBl cnJudW0gPT0gWl9FUlJOTyA/IHN0cmVycm9yKGVycm5vKSA6IGVycm1zZyk7Ci0JCX0KLQl9Ci0J ZWxzZQorCQkJYnJlYWs7CisJCWNhc2UgQ09NUFJFU1NJT05fR1pJUDoKKyNpZmRlZiBIQVZFX0xJ QloKKwkJCXJldCA9IGd6cmVhZChmcC0+ZnAsIHB0ciwgc2l6ZSk7CisJCQlpZiAocmV0ICE9IHNp emUgJiYgIWd6ZW9mKGZwLT5mcCkpCisJCQl7CisJCQkJaW50CQkJZXJybnVtOworCQkJCWNvbnN0 IGNoYXIgKmVycm1zZyA9IGd6ZXJyb3IoZnAtPmZwLCAmZXJybnVtKTsKKworCQkJCWZhdGFsKCJj b3VsZCBub3QgcmVhZCBmcm9tIGlucHV0IGZpbGU6ICVzIiwKKwkJCQkJICBlcnJudW0gPT0gWl9F UlJOTyA/IHN0cmVycm9yKGVycm5vKSA6IGVycm1zZyk7CisJCQl9CisjZWxzZQorCQkJZmF0YWwo Im5vdCBidWlsdCB3aXRoIHpsaWIgc3VwcG9ydCIpOwogI2VuZGlmCi0JewotCQlyZXQgPSBmcmVh ZChwdHIsIDEsIHNpemUsIGZwLT51bmNvbXByZXNzZWRmcCk7Ci0JCWlmIChyZXQgIT0gc2l6ZSAm JiAhZmVvZihmcC0+dW5jb21wcmVzc2VkZnApKQotCQkJUkVBRF9FUlJPUl9FWElUKGZwLT51bmNv bXByZXNzZWRmcCk7CisJCQlicmVhazsKKworCQlkZWZhdWx0OgorCQkJZmF0YWwoImludmFsaWQg Y29tcHJlc3Npb24gbWV0aG9kIik7CisJCQlicmVhazsKIAl9CisKIAlyZXR1cm4gcmV0OwogfQog CiBpbnQKIGNmd3JpdGUoY29uc3Qgdm9pZCAqcHRyLCBpbnQgc2l6ZSwgY2ZwICpmcCkKIHsKKwlp bnQJCQlyZXQgPSAwOworCisJc3dpdGNoIChmcC0+Y29tcHJlc3Npb25NZXRob2QpCisJeworCQlj YXNlIENPTVBSRVNTSU9OX05PTkU6CisJCQlyZXQgPSBmd3JpdGUocHRyLCAxLCBzaXplLCBmcC0+ ZnApOworCQkJYnJlYWs7CisJCWNhc2UgQ09NUFJFU1NJT05fR1pJUDoKICNpZmRlZiBIQVZFX0xJ QloKLQlpZiAoZnAtPmNvbXByZXNzZWRmcCkKLQkJcmV0dXJuIGd6d3JpdGUoZnAtPmNvbXByZXNz ZWRmcCwgcHRyLCBzaXplKTsKLQllbHNlCisJCQlyZXQgPSBnendyaXRlKGZwLT5mcCwgcHRyLCBz aXplKTsKKyNlbHNlCisJCQlmYXRhbCgibm90IGJ1aWx0IHdpdGggemxpYiBzdXBwb3J0Iik7CiAj ZW5kaWYKLQkJcmV0dXJuIGZ3cml0ZShwdHIsIDEsIHNpemUsIGZwLT51bmNvbXByZXNzZWRmcCk7 CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCWZhdGFsKCJpbnZhbGlkIGNvbXByZXNzaW9uIG1l dGhvZCIpOworCQkJYnJlYWs7CisJfQorCisJcmV0dXJuIHJldDsKIH0KIAogaW50CkBAIC02MTEs MjQgKzY1OSwzMSBAQCBjZmdldGMoY2ZwICpmcCkKIHsKIAlpbnQJCQlyZXQ7CiAKLSNpZmRlZiBI QVZFX0xJQloKLQlpZiAoZnAtPmNvbXByZXNzZWRmcCkKKwlzd2l0Y2ggKGZwLT5jb21wcmVzc2lv bk1ldGhvZCkKIAl7Ci0JCXJldCA9IGd6Z2V0YyhmcC0+Y29tcHJlc3NlZGZwKTsKLQkJaWYgKHJl dCA9PSBFT0YpCi0JCXsKLQkJCWlmICghZ3plb2YoZnAtPmNvbXByZXNzZWRmcCkpCi0JCQkJZmF0 YWwoImNvdWxkIG5vdCByZWFkIGZyb20gaW5wdXQgZmlsZTogJXMiLCBzdHJlcnJvcihlcnJubykp OwotCQkJZWxzZQotCQkJCWZhdGFsKCJjb3VsZCBub3QgcmVhZCBmcm9tIGlucHV0IGZpbGU6IGVu ZCBvZiBmaWxlIik7Ci0JCX0KLQl9Ci0JZWxzZQorCQljYXNlIENPTVBSRVNTSU9OX05PTkU6CisJ CQlyZXQgPSBmZ2V0YyhmcC0+ZnApOworCQkJaWYgKHJldCA9PSBFT0YpCisJCQkJUkVBRF9FUlJP Ul9FWElUKGZwLT5mcCk7CisKKwkJCWJyZWFrOworCQljYXNlIENPTVBSRVNTSU9OX0daSVA6Cisj aWZkZWYgSEFWRV9MSUJaCisJCQlyZXQgPSBnemdldGMoKGd6RmlsZSlmcC0+ZnApOworCQkJaWYg KHJldCA9PSBFT0YpCisJCQl7CisJCQkJaWYgKCFnemVvZihmcC0+ZnApKQorCQkJCQlmYXRhbCgi Y291bGQgbm90IHJlYWQgZnJvbSBpbnB1dCBmaWxlOiAlcyIsIHN0cmVycm9yKGVycm5vKSk7CisJ CQkJZWxzZQorCQkJCQlmYXRhbCgiY291bGQgbm90IHJlYWQgZnJvbSBpbnB1dCBmaWxlOiBlbmQg b2YgZmlsZSIpOworCQkJfQorI2Vsc2UKKwkJCWZhdGFsKCJub3QgYnVpbHQgd2l0aCB6bGliIHN1 cHBvcnQiKTsKICNlbmRpZgotCXsKLQkJcmV0ID0gZmdldGMoZnAtPnVuY29tcHJlc3NlZGZwKTsK LQkJaWYgKHJldCA9PSBFT0YpCi0JCQlSRUFEX0VSUk9SX0VYSVQoZnAtPnVuY29tcHJlc3NlZGZw KTsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJZmF0YWwoImludmFsaWQgY29tcHJlc3Npb24g bWV0aG9kIik7CisJCQlicmVhazsKIAl9CiAKIAlyZXR1cm4gcmV0OwpAQCAtNjM3LDY1ICs2OTIs MTA3IEBAIGNmZ2V0YyhjZnAgKmZwKQogY2hhciAqCiBjZmdldHMoY2ZwICpmcCwgY2hhciAqYnVm LCBpbnQgbGVuKQogeworCWNoYXIJICAgKnJldDsKKworCXN3aXRjaCAoZnAtPmNvbXByZXNzaW9u TWV0aG9kKQorCXsKKwkJY2FzZSBDT01QUkVTU0lPTl9OT05FOgorCQkJcmV0ID0gZmdldHMoYnVm LCBsZW4sIGZwLT5mcCk7CisKKwkJCWJyZWFrOworCQljYXNlIENPTVBSRVNTSU9OX0daSVA6CiAj aWZkZWYgSEFWRV9MSUJaCi0JaWYgKGZwLT5jb21wcmVzc2VkZnApCi0JCXJldHVybiBnemdldHMo ZnAtPmNvbXByZXNzZWRmcCwgYnVmLCBsZW4pOwotCWVsc2UKKwkJCXJldCA9IGd6Z2V0cyhmcC0+ ZnAsIGJ1ZiwgbGVuKTsKKyNlbHNlCisJCQlmYXRhbCgibm90IGJ1aWx0IHdpdGggemxpYiBzdXBw b3J0Iik7CiAjZW5kaWYKLQkJcmV0dXJuIGZnZXRzKGJ1ZiwgbGVuLCBmcC0+dW5jb21wcmVzc2Vk ZnApOworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQlmYXRhbCgiaW52YWxpZCBjb21wcmVzc2lv biBtZXRob2QiKTsKKwkJCWJyZWFrOworCX0KKworCXJldHVybiByZXQ7CiB9CiAKIGludAogY2Zj bG9zZShjZnAgKmZwKQogewotCWludAkJCXJlc3VsdDsKKwlpbnQJCQlyZXQ7CiAKIAlpZiAoZnAg PT0gTlVMTCkKIAl7CiAJCWVycm5vID0gRUJBREY7CiAJCXJldHVybiBFT0Y7CiAJfQotI2lmZGVm IEhBVkVfTElCWgotCWlmIChmcC0+Y29tcHJlc3NlZGZwKQorCisJc3dpdGNoIChmcC0+Y29tcHJl c3Npb25NZXRob2QpCiAJewotCQlyZXN1bHQgPSBnemNsb3NlKGZwLT5jb21wcmVzc2VkZnApOwot CQlmcC0+Y29tcHJlc3NlZGZwID0gTlVMTDsKLQl9Ci0JZWxzZQorCQljYXNlIENPTVBSRVNTSU9O X05PTkU6CisJCQlyZXQgPSBmY2xvc2UoZnAtPmZwKTsKKwkJCWZwLT5mcCA9IE5VTEw7CisKKwkJ CWJyZWFrOworCQljYXNlIENPTVBSRVNTSU9OX0daSVA6CisjaWZkZWYgSEFWRV9MSUJaCisJCQly ZXQgPSBnemNsb3NlKGZwLT5mcCk7CisJCQlmcC0+ZnAgPSBOVUxMOworI2Vsc2UKKwkJCWZhdGFs KCJub3QgYnVpbHQgd2l0aCB6bGliIHN1cHBvcnQiKTsKICNlbmRpZgotCXsKLQkJcmVzdWx0ID0g ZmNsb3NlKGZwLT51bmNvbXByZXNzZWRmcCk7Ci0JCWZwLT51bmNvbXByZXNzZWRmcCA9IE5VTEw7 CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCWZhdGFsKCJpbnZhbGlkIGNvbXByZXNzaW9uIG1l dGhvZCIpOworCQkJYnJlYWs7CiAJfQorCiAJZnJlZV9rZWVwX2Vycm5vKGZwKTsKIAotCXJldHVy biByZXN1bHQ7CisJcmV0dXJuIHJldDsKIH0KIAogaW50CiBjZmVvZihjZnAgKmZwKQogeworCWlu dAkJCXJldDsKKworCXN3aXRjaCAoZnAtPmNvbXByZXNzaW9uTWV0aG9kKQorCXsKKwkJY2FzZSBD T01QUkVTU0lPTl9OT05FOgorCQkJcmV0ID0gZmVvZihmcC0+ZnApOworCisJCQlicmVhazsKKwkJ Y2FzZSBDT01QUkVTU0lPTl9HWklQOgogI2lmZGVmIEhBVkVfTElCWgotCWlmIChmcC0+Y29tcHJl c3NlZGZwKQotCQlyZXR1cm4gZ3plb2YoZnAtPmNvbXByZXNzZWRmcCk7Ci0JZWxzZQorCQkJcmV0 ID0gZ3plb2YoZnAtPmZwKTsKKyNlbHNlCisJCQlmYXRhbCgibm90IGJ1aWx0IHdpdGggemxpYiBz dXBwb3J0Iik7CiAjZW5kaWYKLQkJcmV0dXJuIGZlb2YoZnAtPnVuY29tcHJlc3NlZGZwKTsKKwkJ CWJyZWFrOworCQlkZWZhdWx0OgorCQkJZmF0YWwoImludmFsaWQgY29tcHJlc3Npb24gbWV0aG9k Iik7CisJCQlicmVhazsKKwl9CisKKwlyZXR1cm4gcmV0OwogfQogCiBjb25zdCBjaGFyICoKIGdl dF9jZnBfZXJyb3IoY2ZwICpmcCkKIHsKLSNpZmRlZiBIQVZFX0xJQloKLQlpZiAoZnAtPmNvbXBy ZXNzZWRmcCkKKwlpZiAoZnAtPmNvbXByZXNzaW9uTWV0aG9kID09IENPTVBSRVNTSU9OX0daSVAp CiAJeworI2lmZGVmIEhBVkVfTElCWgogCQlpbnQJCQllcnJudW07Ci0JCWNvbnN0IGNoYXIgKmVy cm1zZyA9IGd6ZXJyb3IoZnAtPmNvbXByZXNzZWRmcCwgJmVycm51bSk7CisJCWNvbnN0IGNoYXIg KmVycm1zZyA9IGd6ZXJyb3IoZnAtPmZwLCAmZXJybnVtKTsKIAogCQlpZiAoZXJybnVtICE9IFpf RVJSTk8pCiAJCQlyZXR1cm4gZXJybXNnOwotCX0KKyNlbHNlCisJCWZhdGFsKCJub3QgYnVpbHQg d2l0aCB6bGliIHN1cHBvcnQiKTsKICNlbmRpZgorCX0KKwogCXJldHVybiBzdHJlcnJvcihlcnJu byk7CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9jb21wcmVzc19pby5oIGIvc3Jj L2Jpbi9wZ19kdW1wL2NvbXByZXNzX2lvLmgKaW5kZXggZjYzNTc4NzY5Mi4uYjhiMzY2NjE2YyAx MDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL2NvbXByZXNzX2lvLmgKKysrIGIvc3JjL2Jpbi9w Z19kdW1wL2NvbXByZXNzX2lvLmgKQEAgLTE3LDE2ICsxNywxNyBAQAogCiAjaW5jbHVkZSAicGdf YmFja3VwX2FyY2hpdmVyLmgiCiAKKyNpZmRlZiBIQVZFX0xJQloKKyNpbmNsdWRlIDx6bGliLmg+ CisjZWxzZQorLyogdGhpcyBpcyBqdXN0IHRoZSByZWRlZmluaXRpb24gb2YgYSBsaWJ6IGNvbnN0 YW50ICovCisjZGVmaW5lIFpfREVGQVVMVF9DT01QUkVTU0lPTiAoLTEpCisjZW5kaWYKKwogLyog SW5pdGlhbCBidWZmZXIgc2l6ZXMgdXNlZCBpbiB6bGliIGNvbXByZXNzaW9uLiAqLwogI2RlZmlu ZSBaTElCX09VVF9TSVpFCTQwOTYKICNkZWZpbmUgWkxJQl9JTl9TSVpFCTQwOTYKIAotdHlwZWRl ZiBlbnVtCi17Ci0JQ09NUFJfQUxHX05PTkUsCi0JQ09NUFJfQUxHX0xJQloKLX0gQ29tcHJlc3Np b25BbGdvcml0aG07Ci0KIC8qIFByb3RvdHlwZSBmb3IgY2FsbGJhY2sgZnVuY3Rpb24gdG8gV3Jp dGVEYXRhVG9BcmNoaXZlKCkgKi8KIHR5cGVkZWYgdm9pZCAoKldyaXRlRnVuYykgKEFyY2hpdmVI YW5kbGUgKkFILCBjb25zdCBjaGFyICpidWYsIHNpemVfdCBsZW4pOwogCkBAIC00Niw4ICs0Nywx MiBAQCB0eXBlZGVmIHNpemVfdCAoKlJlYWRGdW5jKSAoQXJjaGl2ZUhhbmRsZSAqQUgsIGNoYXIg KipidWYsIHNpemVfdCAqYnVmbGVuKTsKIC8qIHN0cnVjdCBkZWZpbml0aW9uIGFwcGVhcnMgaW4g Y29tcHJlc3NfaW8uYyAqLwogdHlwZWRlZiBzdHJ1Y3QgQ29tcHJlc3NvclN0YXRlIENvbXByZXNz b3JTdGF0ZTsKIAotZXh0ZXJuIENvbXByZXNzb3JTdGF0ZSAqQWxsb2NhdGVDb21wcmVzc29yKGlu dCBjb21wcmVzc2lvbiwgV3JpdGVGdW5jIHdyaXRlRik7Ci1leHRlcm4gdm9pZCBSZWFkRGF0YUZy b21BcmNoaXZlKEFyY2hpdmVIYW5kbGUgKkFILCBpbnQgY29tcHJlc3Npb24sCitleHRlcm4gQ29t cHJlc3NvclN0YXRlICpBbGxvY2F0ZUNvbXByZXNzb3IoQ29tcHJlc3Npb25NZXRob2QgY29tcHJl c3Npb25NZXRob2QsCisJCQkJCQkJCQkJICAgaW50IGNvbXByZXNzaW9uTGV2ZWwsCisJCQkJCQkJ CQkJICAgV3JpdGVGdW5jIHdyaXRlRik7CitleHRlcm4gdm9pZCBSZWFkRGF0YUZyb21BcmNoaXZl KEFyY2hpdmVIYW5kbGUgKkFILAorCQkJCQkJCQlDb21wcmVzc2lvbk1ldGhvZCBjb21wcmVzc2lv bk1ldGhvZCwKKwkJCQkJCQkJaW50IGNvbXByZXNzaW9uTGV2ZWwsCiAJCQkJCQkJCVJlYWRGdW5j IHJlYWRGKTsKIGV4dGVybiB2b2lkIFdyaXRlRGF0YVRvQXJjaGl2ZShBcmNoaXZlSGFuZGxlICpB SCwgQ29tcHJlc3NvclN0YXRlICpjcywKIAkJCQkJCQkgICBjb25zdCB2b2lkICpkYXRhLCBzaXpl X3QgZExlbik7CkBAIC01Niw5ICs2MSwxNiBAQCBleHRlcm4gdm9pZCBFbmRDb21wcmVzc29yKEFy Y2hpdmVIYW5kbGUgKkFILCBDb21wcmVzc29yU3RhdGUgKmNzKTsKIAogdHlwZWRlZiBzdHJ1Y3Qg Y2ZwIGNmcDsKIAotZXh0ZXJuIGNmcCAqY2ZvcGVuKGNvbnN0IGNoYXIgKnBhdGgsIGNvbnN0IGNo YXIgKm1vZGUsIGludCBjb21wcmVzc2lvbik7CitleHRlcm4gY2ZwICpjZm9wZW4oY29uc3QgY2hh ciAqcGF0aCwgY29uc3QgY2hhciAqbW9kZSwKKwkJCQkgICBDb21wcmVzc2lvbk1ldGhvZCBjb21w cmVzc2lvbk1ldGhvZCwKKwkJCQkgICBpbnQgY29tcHJlc3Npb25MZXZlbCk7CitleHRlcm4gY2Zw ICpjZmRvcGVuKGludCBmZCwgY29uc3QgY2hhciAqbW9kZSwKKwkJCQkgICBDb21wcmVzc2lvbk1l dGhvZCBjb21wcmVzc2lvbk1ldGhvZCwKKwkJCQkgICBpbnQgY29tcHJlc3Npb25MZXZlbCk7CiBl eHRlcm4gY2ZwICpjZm9wZW5fcmVhZChjb25zdCBjaGFyICpwYXRoLCBjb25zdCBjaGFyICptb2Rl KTsKLWV4dGVybiBjZnAgKmNmb3Blbl93cml0ZShjb25zdCBjaGFyICpwYXRoLCBjb25zdCBjaGFy ICptb2RlLCBpbnQgY29tcHJlc3Npb24pOworZXh0ZXJuIGNmcCAqY2ZvcGVuX3dyaXRlKGNvbnN0 IGNoYXIgKnBhdGgsIGNvbnN0IGNoYXIgKm1vZGUsCisJCQkJCQkgQ29tcHJlc3Npb25NZXRob2Qg Y29tcHJlc3Npb25NZXRob2QsCisJCQkJCQkgaW50IGNvbXByZXNzaW9uTGV2ZWwpOwogZXh0ZXJu IGludAljZnJlYWQodm9pZCAqcHRyLCBpbnQgc2l6ZSwgY2ZwICpmcCk7CiBleHRlcm4gaW50CWNm d3JpdGUoY29uc3Qgdm9pZCAqcHRyLCBpbnQgc2l6ZSwgY2ZwICpmcCk7CiBleHRlcm4gaW50CWNm Z2V0YyhjZnAgKmZwKTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXAuaCBi L3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXAuaAppbmRleCBmY2M1ZjZiZDA1Li5kOWY2YzlhMDg3 IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwLmgKKysrIGIvc3JjL2Jpbi9w Z19kdW1wL3BnX2JhY2t1cC5oCkBAIC03NSw2ICs3NSwxMyBAQCBlbnVtIF9kdW1wUHJlcGFyZWRR dWVyaWVzCiAJTlVNX1BSRVBfUVVFUklFUwkJCS8qIG11c3QgYmUgbGFzdCAqLwogfTsKIAordHlw ZWRlZiBlbnVtIF9jb21wcmVzc2lvbk1ldGhvZAoreworCUNPTVBSRVNTSU9OX0daSVAsCisJQ09N UFJFU1NJT05fTk9ORSwKKwlDT01QUkVTU0lPTl9JTlZBTElECit9IENvbXByZXNzaW9uTWV0aG9k OworCiAvKiBQYXJhbWV0ZXJzIG5lZWRlZCBieSBDb25uZWN0RGF0YWJhc2U7IHNhbWUgZm9yIGR1 bXAgYW5kIHJlc3RvcmUgKi8KIHR5cGVkZWYgc3RydWN0IF9jb25uUGFyYW1zCiB7CkBAIC0xNDMs NyArMTUwLDggQEAgdHlwZWRlZiBzdHJ1Y3QgX3Jlc3RvcmVPcHRpb25zCiAKIAlpbnQJCQlub0Rh dGFGb3JGYWlsZWRUYWJsZXM7CiAJaW50CQkJZXhpdF9vbl9lcnJvcjsKLQlpbnQJCQljb21wcmVz c2lvbjsKKwlDb21wcmVzc2lvbk1ldGhvZCBjb21wcmVzc2lvbk1ldGhvZDsKKwlpbnQJCQljb21w cmVzc2lvbkxldmVsOwogCWludAkJCXN1cHByZXNzRHVtcFdhcm5pbmdzOwkvKiBTdXBwcmVzcyBv dXRwdXQgb2YgV0FSTklORyBlbnRyaWVzCiAJCQkJCQkJCQkJICogdG8gc3RkZXJyICovCiAJYm9v bAkJc2luZ2xlX3R4bjsKQEAgLTMwMyw3ICszMTEsOSBAQCBleHRlcm4gQXJjaGl2ZSAqT3BlbkFy Y2hpdmUoY29uc3QgY2hhciAqRmlsZVNwZWMsIGNvbnN0IEFyY2hpdmVGb3JtYXQgZm10KTsKIAog LyogQ3JlYXRlIGEgbmV3IGFyY2hpdmUgKi8KIGV4dGVybiBBcmNoaXZlICpDcmVhdGVBcmNoaXZl KGNvbnN0IGNoYXIgKkZpbGVTcGVjLCBjb25zdCBBcmNoaXZlRm9ybWF0IGZtdCwKLQkJCQkJCQkg IGNvbnN0IGludCBjb21wcmVzc2lvbiwgYm9vbCBkb3N5bmMsIEFyY2hpdmVNb2RlIG1vZGUsCisJ CQkJCQkJICBjb25zdCBDb21wcmVzc2lvbk1ldGhvZCBjb21wcmVzc2lvbk1ldGhvZCwKKwkJCQkJ CQkgIGNvbnN0IGludCBjb21wcmVzc2lvbiwKKwkJCQkJCQkgIGJvb2wgZG9zeW5jLCBBcmNoaXZl TW9kZSBtb2RlLAogCQkJCQkJCSAgU2V0dXBXb3JrZXJQdHJUeXBlIHNldHVwRHVtcFdvcmtlcik7 CiAKIC8qIFRoZSAtLWxpc3Qgb3B0aW9uICovCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAv cGdfYmFja3VwX2FyY2hpdmVyLmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hpdmVy LmMKaW5kZXggZDQxYTk5ZDZlYS4uN2Q5NjQ0NmYxYSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19k dW1wL3BnX2JhY2t1cF9hcmNoaXZlci5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBf YXJjaGl2ZXIuYwpAQCAtMzEsNiArMzEsNyBAQAogI2VuZGlmCiAKICNpbmNsdWRlICJjb21tb24v c3RyaW5nLmgiCisjaW5jbHVkZSAiY29tcHJlc3NfaW8uaCIKICNpbmNsdWRlICJkdW1wdXRpbHMu aCIKICNpbmNsdWRlICJmZV91dGlscy9zdHJpbmdfdXRpbHMuaCIKICNpbmNsdWRlICJsaWIvc3Ry aW5naW5mby5oIgpAQCAtNDMsMTMgKzQ0LDYgQEAKICNkZWZpbmUgVEVYVF9EVU1QX0hFQURFUiAi LS1cbi0tIFBvc3RncmVTUUwgZGF0YWJhc2UgZHVtcFxuLS1cblxuIgogI2RlZmluZSBURVhUX0RV TVBBTExfSEVBREVSICItLVxuLS0gUG9zdGdyZVNRTCBkYXRhYmFzZSBjbHVzdGVyIGR1bXBcbi0t XG5cbiIKIAotLyogc3RhdGUgbmVlZGVkIHRvIHNhdmUvcmVzdG9yZSBhbiBhcmNoaXZlJ3Mgb3V0 cHV0IHRhcmdldCAqLwotdHlwZWRlZiBzdHJ1Y3QgX291dHB1dENvbnRleHQKLXsKLQl2b2lkCSAg ICpPRjsKLQlpbnQJCQlnek91dDsKLX0gT3V0cHV0Q29udGV4dDsKLQogLyoKICAqIFN0YXRlIGZv ciB0cmFja2luZyBUb2NFbnRyeXMgdGhhdCBhcmUgcmVhZHkgdG8gcHJvY2VzcyBkdXJpbmcgYSBw YXJhbGxlbAogICogcmVzdG9yZS4gIChUaGlzIHVzZWQgdG8gYmUgYSBsaXN0LCBhbmQgd2Ugc3Rp bGwgY2FsbCBpdCB0aGF0LCB0aG91Z2ggbm93CkBAIC03MCw3ICs2NCw5IEBAIHR5cGVkZWYgc3Ry dWN0IF9wYXJhbGxlbFJlYWR5TGlzdAogCiAKIHN0YXRpYyBBcmNoaXZlSGFuZGxlICpfYWxsb2NB SChjb25zdCBjaGFyICpGaWxlU3BlYywgY29uc3QgQXJjaGl2ZUZvcm1hdCBmbXQsCi0JCQkJCQkJ ICAgY29uc3QgaW50IGNvbXByZXNzaW9uLCBib29sIGRvc3luYywgQXJjaGl2ZU1vZGUgbW9kZSwK KwkJCQkJCQkgICBjb25zdCBDb21wcmVzc2lvbk1ldGhvZCBjb21wcmVzc2lvbk1ldGhvZCwKKwkJ CQkJCQkgICBjb25zdCBpbnQgY29tcHJlc3Npb25MZXZlbCwKKwkJCQkJCQkgICBib29sIGRvc3lu YywgQXJjaGl2ZU1vZGUgbW9kZSwKIAkJCQkJCQkgICBTZXR1cFdvcmtlclB0clR5cGUgc2V0dXBX b3JrZXJQdHIpOwogc3RhdGljIHZvaWQgX2dldE9iamVjdERlc2NyaXB0aW9uKFBRRXhwQnVmZmVy IGJ1ZiwgVG9jRW50cnkgKnRlKTsKIHN0YXRpYyB2b2lkIF9wcmludFRvY0VudHJ5KEFyY2hpdmVI YW5kbGUgKkFILCBUb2NFbnRyeSAqdGUsIGJvb2wgaXNEYXRhKTsKQEAgLTk4LDkgKzk0LDExIEBA IHN0YXRpYyBpbnQJX2Rpc2NvdmVyQXJjaGl2ZUZvcm1hdChBcmNoaXZlSGFuZGxlICpBSCk7CiBz dGF0aWMgaW50CVJlc3RvcmluZ1RvREIoQXJjaGl2ZUhhbmRsZSAqQUgpOwogc3RhdGljIHZvaWQg ZHVtcF9sb19idWYoQXJjaGl2ZUhhbmRsZSAqQUgpOwogc3RhdGljIHZvaWQgZHVtcFRpbWVzdGFt cChBcmNoaXZlSGFuZGxlICpBSCwgY29uc3QgY2hhciAqbXNnLCB0aW1lX3QgdGltKTsKLXN0YXRp YyB2b2lkIFNldE91dHB1dChBcmNoaXZlSGFuZGxlICpBSCwgY29uc3QgY2hhciAqZmlsZW5hbWUs IGludCBjb21wcmVzc2lvbik7Ci1zdGF0aWMgT3V0cHV0Q29udGV4dCBTYXZlT3V0cHV0KEFyY2hp dmVIYW5kbGUgKkFIKTsKLXN0YXRpYyB2b2lkIFJlc3RvcmVPdXRwdXQoQXJjaGl2ZUhhbmRsZSAq QUgsIE91dHB1dENvbnRleHQgc2F2ZWRDb250ZXh0KTsKK3N0YXRpYyB2b2lkIFNldE91dHB1dChB cmNoaXZlSGFuZGxlICpBSCwgY29uc3QgY2hhciAqZmlsZW5hbWUsCisJCQkJCSAgQ29tcHJlc3Np b25NZXRob2QgY29tcHJlc3Npb25NZXRob2QsCisJCQkJCSAgaW50IGNvbXByZXNzaW9uTGV2ZWwp Oworc3RhdGljIGNmcCAqU2F2ZU91dHB1dChBcmNoaXZlSGFuZGxlICpBSCk7CitzdGF0aWMgdm9p ZCBSZXN0b3JlT3V0cHV0KEFyY2hpdmVIYW5kbGUgKkFILCBjZnAgKnNhdmVkT3V0cHV0KTsKIAog c3RhdGljIGludAlyZXN0b3JlX3RvY19lbnRyeShBcmNoaXZlSGFuZGxlICpBSCwgVG9jRW50cnkg KnRlLCBib29sIGlzX3BhcmFsbGVsKTsKIHN0YXRpYyB2b2lkIHJlc3RvcmVfdG9jX2VudHJpZXNf cHJlZm9yayhBcmNoaXZlSGFuZGxlICpBSCwKQEAgLTIzOSwxMiArMjM3LDE1IEBAIHNldHVwUmVz dG9yZVdvcmtlcihBcmNoaXZlICpBSFgpCiAvKiBQdWJsaWMgKi8KIEFyY2hpdmUgKgogQ3JlYXRl QXJjaGl2ZShjb25zdCBjaGFyICpGaWxlU3BlYywgY29uc3QgQXJjaGl2ZUZvcm1hdCBmbXQsCi0J CQkgIGNvbnN0IGludCBjb21wcmVzc2lvbiwgYm9vbCBkb3N5bmMsIEFyY2hpdmVNb2RlIG1vZGUs CisJCQkgIGNvbnN0IENvbXByZXNzaW9uTWV0aG9kIGNvbXByZXNzaW9uTWV0aG9kLAorCQkJICBj b25zdCBpbnQgY29tcHJlc3Npb25MZXZlbCwKKwkJCSAgYm9vbCBkb3N5bmMsIEFyY2hpdmVNb2Rl IG1vZGUsCiAJCQkgIFNldHVwV29ya2VyUHRyVHlwZSBzZXR1cER1bXBXb3JrZXIpCiAKIHsKLQlB cmNoaXZlSGFuZGxlICpBSCA9IF9hbGxvY0FIKEZpbGVTcGVjLCBmbXQsIGNvbXByZXNzaW9uLCBk b3N5bmMsCi0JCQkJCQkJCSBtb2RlLCBzZXR1cER1bXBXb3JrZXIpOworCUFyY2hpdmVIYW5kbGUg KkFIID0gX2FsbG9jQUgoRmlsZVNwZWMsIGZtdCwKKwkJCQkJCQkJIGNvbXByZXNzaW9uTWV0aG9k LCBjb21wcmVzc2lvbkxldmVsLAorCQkJCQkJCQkgZG9zeW5jLCBtb2RlLCBzZXR1cER1bXBXb3Jr ZXIpOwogCiAJcmV0dXJuIChBcmNoaXZlICopIEFIOwogfQpAQCAtMjU0LDcgKzI1NSw4IEBAIENy ZWF0ZUFyY2hpdmUoY29uc3QgY2hhciAqRmlsZVNwZWMsIGNvbnN0IEFyY2hpdmVGb3JtYXQgZm10 LAogQXJjaGl2ZSAqCiBPcGVuQXJjaGl2ZShjb25zdCBjaGFyICpGaWxlU3BlYywgY29uc3QgQXJj aGl2ZUZvcm1hdCBmbXQpCiB7Ci0JQXJjaGl2ZUhhbmRsZSAqQUggPSBfYWxsb2NBSChGaWxlU3Bl YywgZm10LCAwLCB0cnVlLCBhcmNoTW9kZVJlYWQsIHNldHVwUmVzdG9yZVdvcmtlcik7CisJQXJj aGl2ZUhhbmRsZSAqQUggPSBfYWxsb2NBSChGaWxlU3BlYywgZm10LCBDT01QUkVTU0lPTl9OT05F LCAwLCB0cnVlLAorCQkJCQkJCQkgYXJjaE1vZGVSZWFkLCBzZXR1cFJlc3RvcmVXb3JrZXIpOwog CiAJcmV0dXJuIChBcmNoaXZlICopIEFIOwogfQpAQCAtMjY5LDExICsyNzEsOCBAQCBDbG9zZUFy Y2hpdmUoQXJjaGl2ZSAqQUhYKQogCUFILT5DbG9zZVB0cihBSCk7CiAKIAkvKiBDbG9zZSB0aGUg b3V0cHV0ICovCi0JZXJybm8gPSAwOwkJCQkJLyogaW4gY2FzZSBnemNsb3NlKCkgZG9lc24ndCBz ZXQgaXQgKi8KLQlpZiAoQUgtPmd6T3V0KQotCQlyZXMgPSBHWkNMT1NFKEFILT5PRik7Ci0JZWxz ZSBpZiAoQUgtPk9GICE9IHN0ZG91dCkKLQkJcmVzID0gZmNsb3NlKEFILT5PRik7CisJZXJybm8g PSAwOworCXJlcyA9IGNmY2xvc2UoQUgtPk9GKTsKIAogCWlmIChyZXMgIT0gMCkKIAkJZmF0YWwo ImNvdWxkIG5vdCBjbG9zZSBvdXRwdXQgZmlsZTogJW0iKTsKQEAgLTM1NSw3ICszNTQsNyBAQCBS ZXN0b3JlQXJjaGl2ZShBcmNoaXZlICpBSFgpCiAJUmVzdG9yZU9wdGlvbnMgKnJvcHQgPSBBSC0+ cHVibGljLnJvcHQ7CiAJYm9vbAkJcGFyYWxsZWxfbW9kZTsKIAlUb2NFbnRyeSAgICp0ZTsKLQlP dXRwdXRDb250ZXh0IHNhdjsKKwljZnAJCSAgICpzYXY7CiAKIAlBSC0+c3RhZ2UgPSBTVEFHRV9J TklUSUFMSVpJTkc7CiAKQEAgLTM4NCw3ICszODMsOCBAQCBSZXN0b3JlQXJjaGl2ZShBcmNoaXZl ICpBSFgpCiAJICogTWFrZSBzdXJlIHdlIHdvbid0IG5lZWQgKGRlKWNvbXByZXNzaW9uIHdlIGhh dmVuJ3QgZ290CiAJICovCiAjaWZuZGVmIEhBVkVfTElCWgotCWlmIChBSC0+Y29tcHJlc3Npb24g IT0gMCAmJiBBSC0+UHJpbnRUb2NEYXRhUHRyICE9IE5VTEwpCisJaWYgKEFILT5jb21wcmVzc2lv bk1ldGhvZCA9PSBDT01QUkVTU0lPTl9HWklQICYmCisJCUFILT5QcmludFRvY0RhdGFQdHIgIT0g TlVMTCkKIAl7CiAJCWZvciAodGUgPSBBSC0+dG9jLT5uZXh0OyB0ZSAhPSBBSC0+dG9jOyB0ZSA9 IHRlLT5uZXh0KQogCQl7CkBAIC00NTksOCArNDU5LDkgQEAgUmVzdG9yZUFyY2hpdmUoQXJjaGl2 ZSAqQUhYKQogCSAqIFNldHVwIHRoZSBvdXRwdXQgZmlsZSBpZiBuZWNlc3NhcnkuCiAJICovCiAJ c2F2ID0gU2F2ZU91dHB1dChBSCk7Ci0JaWYgKHJvcHQtPmZpbGVuYW1lIHx8IHJvcHQtPmNvbXBy ZXNzaW9uKQotCQlTZXRPdXRwdXQoQUgsIHJvcHQtPmZpbGVuYW1lLCByb3B0LT5jb21wcmVzc2lv bik7CisJaWYgKHJvcHQtPmZpbGVuYW1lIHx8IHJvcHQtPmNvbXByZXNzaW9uTWV0aG9kICE9IENP TVBSRVNTSU9OX05PTkUpCisJCVNldE91dHB1dChBSCwgcm9wdC0+ZmlsZW5hbWUsCisJCQkJICBy b3B0LT5jb21wcmVzc2lvbk1ldGhvZCwgcm9wdC0+Y29tcHJlc3Npb25MZXZlbCk7CiAKIAlhaHBy aW50ZihBSCwgIi0tXG4tLSBQb3N0Z3JlU1FMIGRhdGFiYXNlIGR1bXBcbi0tXG5cbiIpOwogCkBA IC03NDAsNyArNzQxLDcgQEAgUmVzdG9yZUFyY2hpdmUoQXJjaGl2ZSAqQUhYKQogCSAqLwogCUFI LT5zdGFnZSA9IFNUQUdFX0ZJTkFMSVpJTkc7CiAKLQlpZiAocm9wdC0+ZmlsZW5hbWUgfHwgcm9w dC0+Y29tcHJlc3Npb24pCisJaWYgKHJvcHQtPmZpbGVuYW1lIHx8IHJvcHQtPmNvbXByZXNzaW9u TWV0aG9kICE9IENPTVBSRVNTSU9OX05PTkUpCiAJCVJlc3RvcmVPdXRwdXQoQUgsIHNhdik7CiAK IAlpZiAocm9wdC0+dXNlREIpCkBAIC05NzAsNiArOTcxLDcgQEAgTmV3UmVzdG9yZU9wdGlvbnMo dm9pZCkKIAlvcHRzLT5mb3JtYXQgPSBhcmNoVW5rbm93bjsKIAlvcHRzLT5jcGFyYW1zLnByb21w dFBhc3N3b3JkID0gVFJJX0RFRkFVTFQ7CiAJb3B0cy0+ZHVtcFNlY3Rpb25zID0gRFVNUF9VTlNF Q1RJT05FRDsKKwlvcHRzLT5jb21wcmVzc2lvbk1ldGhvZCA9IENPTVBSRVNTSU9OX05PTkU7CiAK IAlyZXR1cm4gb3B0czsKIH0KQEAgLTExMTcsMTMgKzExMTksMTMgQEAgUHJpbnRUT0NTdW1tYXJ5 KEFyY2hpdmUgKkFIWCkKIAlSZXN0b3JlT3B0aW9ucyAqcm9wdCA9IEFILT5wdWJsaWMucm9wdDsK IAlUb2NFbnRyeSAgICp0ZTsKIAl0ZVNlY3Rpb24JY3VyU2VjdGlvbjsKLQlPdXRwdXRDb250ZXh0 IHNhdjsKKwljZnAJCSAgICpzYXY7CiAJY29uc3QgY2hhciAqZm10TmFtZTsKIAljaGFyCQlzdGFt cF9zdHJbNjRdOwogCiAJc2F2ID0gU2F2ZU91dHB1dChBSCk7CiAJaWYgKHJvcHQtPmZpbGVuYW1l KQotCQlTZXRPdXRwdXQoQUgsIHJvcHQtPmZpbGVuYW1lLCAwIC8qIG5vIGNvbXByZXNzaW9uICov ICk7CisJCVNldE91dHB1dChBSCwgcm9wdC0+ZmlsZW5hbWUsIENPTVBSRVNTSU9OX05PTkUsIDAp OwogCiAJaWYgKHN0cmZ0aW1lKHN0YW1wX3N0ciwgc2l6ZW9mKHN0YW1wX3N0ciksIFBHRFVNUF9T VFJGVElNRV9GTVQsCiAJCQkJIGxvY2FsdGltZSgmQUgtPmNyZWF0ZURhdGUpKSA9PSAwKQpAQCAt MTEzMiw3ICsxMTM0LDcgQEAgUHJpbnRUT0NTdW1tYXJ5KEFyY2hpdmUgKkFIWCkKIAlhaHByaW50 ZihBSCwgIjtcbjsgQXJjaGl2ZSBjcmVhdGVkIGF0ICVzXG4iLCBzdGFtcF9zdHIpOwogCWFocHJp bnRmKEFILCAiOyAgICAgZGJuYW1lOiAlc1xuOyAgICAgVE9DIEVudHJpZXM6ICVkXG47ICAgICBD b21wcmVzc2lvbjogJWRcbiIsCiAJCQkgc2FuaXRpemVfbGluZShBSC0+YXJjaGRibmFtZSwgZmFs c2UpLAotCQkJIEFILT50b2NDb3VudCwgQUgtPmNvbXByZXNzaW9uKTsKKwkJCSBBSC0+dG9jQ291 bnQsIEFILT5jb21wcmVzc2lvbkxldmVsKTsKIAogCXN3aXRjaCAoQUgtPmZvcm1hdCkKIAl7CkBA IC0xNDg2LDYwICsxNDg4LDM1IEBAIGFyY2hwcmludGYoQXJjaGl2ZSAqQUgsIGNvbnN0IGNoYXIg KmZtdCwuLi4pCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogc3RhdGljIHZv aWQKLVNldE91dHB1dChBcmNoaXZlSGFuZGxlICpBSCwgY29uc3QgY2hhciAqZmlsZW5hbWUsIGlu dCBjb21wcmVzc2lvbikKK1NldE91dHB1dChBcmNoaXZlSGFuZGxlICpBSCwgY29uc3QgY2hhciAq ZmlsZW5hbWUsCisJCSAgQ29tcHJlc3Npb25NZXRob2QgY29tcHJlc3Npb25NZXRob2QsIGludCBj b21wcmVzc2lvbkxldmVsKQogewotCWludAkJCWZuOworCWNvbnN0IGNoYXIgKm1vZGU7CisJaW50 CQkJZm4gPSAtMTsKIAogCWlmIChmaWxlbmFtZSkKIAl7CiAJCWlmIChzdHJjbXAoZmlsZW5hbWUs ICItIikgPT0gMCkKIAkJCWZuID0gZmlsZW5vKHN0ZG91dCk7Ci0JCWVsc2UKLQkJCWZuID0gLTE7 CiAJfQogCWVsc2UgaWYgKEFILT5GSCkKIAkJZm4gPSBmaWxlbm8oQUgtPkZIKTsKIAllbHNlIGlm IChBSC0+ZlNwZWMpCiAJewotCQlmbiA9IC0xOwogCQlmaWxlbmFtZSA9IEFILT5mU3BlYzsKIAl9 CiAJZWxzZQogCQlmbiA9IGZpbGVubyhzdGRvdXQpOwogCi0JLyogSWYgY29tcHJlc3Npb24gZXhw bGljaXRseSByZXF1ZXN0ZWQsIHVzZSBnem9wZW4gKi8KLSNpZmRlZiBIQVZFX0xJQloKLQlpZiAo Y29tcHJlc3Npb24gIT0gMCkKLQl7Ci0JCWNoYXIJCWZtb2RlWzE0XTsKKwlpZiAoQUgtPm1vZGUg PT0gYXJjaE1vZGVBcHBlbmQpCisJCW1vZGUgPSBQR19CSU5BUllfQTsKKwllbHNlCisJCW1vZGUg PSBQR19CSU5BUllfVzsKIAotCQkvKiBEb24ndCB1c2UgUEdfQklOQVJZX3ggc2luY2UgdGhpcyBp cyB6bGliICovCi0JCXNwcmludGYoZm1vZGUsICJ3YiVkIiwgY29tcHJlc3Npb24pOwotCQlpZiAo Zm4gPj0gMCkKLQkJCUFILT5PRiA9IGd6ZG9wZW4oZHVwKGZuKSwgZm1vZGUpOwotCQllbHNlCi0J CQlBSC0+T0YgPSBnem9wZW4oZmlsZW5hbWUsIGZtb2RlKTsKLQkJQUgtPmd6T3V0ID0gMTsKLQl9 CisJaWYgKGZuID49IDApCisJCUFILT5PRiA9IGNmZG9wZW4oZHVwKGZuKSwgbW9kZSwgY29tcHJl c3Npb25NZXRob2QsIGNvbXByZXNzaW9uTGV2ZWwpOwogCWVsc2UKLSNlbmRpZgotCXsJCQkJCQkJ LyogVXNlIGZvcGVuICovCi0JCWlmIChBSC0+bW9kZSA9PSBhcmNoTW9kZUFwcGVuZCkKLQkJewot CQkJaWYgKGZuID49IDApCi0JCQkJQUgtPk9GID0gZmRvcGVuKGR1cChmbiksIFBHX0JJTkFSWV9B KTsKLQkJCWVsc2UKLQkJCQlBSC0+T0YgPSBmb3BlbihmaWxlbmFtZSwgUEdfQklOQVJZX0EpOwot CQl9Ci0JCWVsc2UKLQkJewotCQkJaWYgKGZuID49IDApCi0JCQkJQUgtPk9GID0gZmRvcGVuKGR1 cChmbiksIFBHX0JJTkFSWV9XKTsKLQkJCWVsc2UKLQkJCQlBSC0+T0YgPSBmb3BlbihmaWxlbmFt ZSwgUEdfQklOQVJZX1cpOwotCQl9Ci0JCUFILT5nek91dCA9IDA7Ci0JfQorCQlBSC0+T0YgPSBj Zm9wZW4oZmlsZW5hbWUsIG1vZGUsIGNvbXByZXNzaW9uTWV0aG9kLCBjb21wcmVzc2lvbkxldmVs KTsKIAogCWlmICghQUgtPk9GKQogCXsKQEAgLTE1NTAsMzMgKzE1MjcsMjQgQEAgU2V0T3V0cHV0 KEFyY2hpdmVIYW5kbGUgKkFILCBjb25zdCBjaGFyICpmaWxlbmFtZSwgaW50IGNvbXByZXNzaW9u KQogCX0KIH0KIAotc3RhdGljIE91dHB1dENvbnRleHQKK3N0YXRpYyBjZnAgKgogU2F2ZU91dHB1 dChBcmNoaXZlSGFuZGxlICpBSCkKIHsKLQlPdXRwdXRDb250ZXh0IHNhdjsKLQotCXNhdi5PRiA9 IEFILT5PRjsKLQlzYXYuZ3pPdXQgPSBBSC0+Z3pPdXQ7Ci0KLQlyZXR1cm4gc2F2OworCXJldHVy biAoY2ZwICopQUgtPk9GOwogfQogCiBzdGF0aWMgdm9pZAotUmVzdG9yZU91dHB1dChBcmNoaXZl SGFuZGxlICpBSCwgT3V0cHV0Q29udGV4dCBzYXZlZENvbnRleHQpCitSZXN0b3JlT3V0cHV0KEFy Y2hpdmVIYW5kbGUgKkFILCBjZnAgKnNhdmVkT3V0cHV0KQogewogCWludAkJCXJlczsKIAotCWVy cm5vID0gMDsJCQkJCS8qIGluIGNhc2UgZ3pjbG9zZSgpIGRvZXNuJ3Qgc2V0IGl0ICovCi0JaWYg KEFILT5nek91dCkKLQkJcmVzID0gR1pDTE9TRShBSC0+T0YpOwotCWVsc2UKLQkJcmVzID0gZmNs b3NlKEFILT5PRik7CisJZXJybm8gPSAwOworCXJlcyA9IGNmY2xvc2UoQUgtPk9GKTsKIAogCWlm IChyZXMgIT0gMCkKIAkJZmF0YWwoImNvdWxkIG5vdCBjbG9zZSBvdXRwdXQgZmlsZTogJW0iKTsK IAotCUFILT5nek91dCA9IHNhdmVkQ29udGV4dC5nek91dDsKLQlBSC0+T0YgPSBzYXZlZENvbnRl eHQuT0Y7CisJQUgtPk9GID0gc2F2ZWRPdXRwdXQ7CiB9CiAKIApAQCAtMTcwMCwyMiArMTY2OCwx NiBAQCBhaHdyaXRlKGNvbnN0IHZvaWQgKnB0ciwgc2l6ZV90IHNpemUsIHNpemVfdCBubWVtYiwg QXJjaGl2ZUhhbmRsZSAqQUgpCiAKIAkJYnl0ZXNfd3JpdHRlbiA9IHNpemUgKiBubWVtYjsKIAl9 Ci0JZWxzZSBpZiAoQUgtPmd6T3V0KQotCQlieXRlc193cml0dGVuID0gR1pXUklURShwdHIsIHNp emUsIG5tZW1iLCBBSC0+T0YpOwogCWVsc2UgaWYgKEFILT5DdXN0b21PdXRQdHIpCiAJCWJ5dGVz X3dyaXR0ZW4gPSBBSC0+Q3VzdG9tT3V0UHRyKEFILCBwdHIsIHNpemUgKiBubWVtYik7Ci0KLQll bHNlCi0JewotCQkvKgotCQkgKiBJZiB3ZSdyZSBkb2luZyBhIHJlc3RvcmUsIGFuZCBpdCdzIGRp cmVjdCB0byBEQiwgYW5kIHdlJ3JlCi0JCSAqIGNvbm5lY3RlZCB0aGVuIHNlbmQgaXQgdG8gdGhl IERCLgotCQkgKi8KLQkJaWYgKFJlc3RvcmluZ1RvREIoQUgpKQorCS8qCisJICogSWYgd2UncmUg ZG9pbmcgYSByZXN0b3JlLCBhbmQgaXQncyBkaXJlY3QgdG8gREIsIGFuZCB3ZSdyZQorCSAqIGNv bm5lY3RlZCB0aGVuIHNlbmQgaXQgdG8gdGhlIERCLgorCSAqLworCWVsc2UgaWYgKFJlc3Rvcmlu Z1RvREIoQUgpKQogCQkJYnl0ZXNfd3JpdHRlbiA9IEV4ZWN1dGVTcWxDb21tYW5kQnVmKCZBSC0+ cHVibGljLCAoY29uc3QgY2hhciAqKSBwdHIsIHNpemUgKiBubWVtYik7Ci0JCWVsc2UKLQkJCWJ5 dGVzX3dyaXR0ZW4gPSBmd3JpdGUocHRyLCBzaXplLCBubWVtYiwgQUgtPk9GKSAqIHNpemU7Ci0J fQorCWVsc2UKKwkJYnl0ZXNfd3JpdHRlbiA9IGNmd3JpdGUocHRyLCBzaXplICogbm1lbWIsIEFI LT5PRik7CiAKIAlpZiAoYnl0ZXNfd3JpdHRlbiAhPSBzaXplICogbm1lbWIpCiAJCVdSSVRFX0VS Uk9SX0VYSVQ7CkBAIC0yMjAwLDcgKzIxNjIsOSBAQCBfZGlzY292ZXJBcmNoaXZlRm9ybWF0KEFy Y2hpdmVIYW5kbGUgKkFIKQogICovCiBzdGF0aWMgQXJjaGl2ZUhhbmRsZSAqCiBfYWxsb2NBSChj b25zdCBjaGFyICpGaWxlU3BlYywgY29uc3QgQXJjaGl2ZUZvcm1hdCBmbXQsCi0JCSBjb25zdCBp bnQgY29tcHJlc3Npb24sIGJvb2wgZG9zeW5jLCBBcmNoaXZlTW9kZSBtb2RlLAorCQkgY29uc3Qg Q29tcHJlc3Npb25NZXRob2QgY29tcHJlc3Npb25NZXRob2QsCisJCSBjb25zdCBpbnQgY29tcHJl c3Npb25MZXZlbCwKKwkJIGJvb2wgZG9zeW5jLCBBcmNoaXZlTW9kZSBtb2RlLAogCQkgU2V0dXBX b3JrZXJQdHJUeXBlIHNldHVwV29ya2VyUHRyKQogewogCUFyY2hpdmVIYW5kbGUgKkFIOwpAQCAt MjI1MSwxNCArMjIxNSwxNCBAQCBfYWxsb2NBSChjb25zdCBjaGFyICpGaWxlU3BlYywgY29uc3Qg QXJjaGl2ZUZvcm1hdCBmbXQsCiAJQUgtPnRvYy0+cHJldiA9IEFILT50b2M7CiAKIAlBSC0+bW9k ZSA9IG1vZGU7Ci0JQUgtPmNvbXByZXNzaW9uID0gY29tcHJlc3Npb247CisJQUgtPmNvbXByZXNz aW9uTWV0aG9kID0gY29tcHJlc3Npb25NZXRob2Q7CisJQUgtPmNvbXByZXNzaW9uTGV2ZWwgPSBj b21wcmVzc2lvbkxldmVsOwogCUFILT5kb3N5bmMgPSBkb3N5bmM7CiAKIAltZW1zZXQoJihBSC0+ c3FscGFyc2UpLCAwLCBzaXplb2YoQUgtPnNxbHBhcnNlKSk7CiAKIAkvKiBPcGVuIHN0ZG91dCB3 aXRoIG5vIGNvbXByZXNzaW9uIGZvciBBSCBvdXRwdXQgaGFuZGxlICovCi0JQUgtPmd6T3V0ID0g MDsKLQlBSC0+T0YgPSBzdGRvdXQ7CisJQUgtPk9GID0gY2Zkb3BlbihkdXAoZmlsZW5vKHN0ZG91 dCkpLCBQR19CSU5BUllfQSwgQ09NUFJFU1NJT05fTk9ORSwgMCk7CiAKIAkvKgogCSAqIE9uIFdp bmRvd3MsIHdlIG5lZWQgdG8gdXNlIGJpbmFyeSBtb2RlIHRvIHJlYWQvd3JpdGUgbm9uLXRleHQg ZmlsZXMsCkBAIC0yMjY2LDcgKzIyMzAsNyBAQCBfYWxsb2NBSChjb25zdCBjaGFyICpGaWxlU3Bl YywgY29uc3QgQXJjaGl2ZUZvcm1hdCBmbXQsCiAJICogRm9yY2Ugc3RkaW4vc3Rkb3V0IGludG8g YmluYXJ5IG1vZGUgaWYgdGhhdCBpcyB3aGF0IHdlIGFyZSB1c2luZy4KIAkgKi8KICNpZmRlZiBX SU4zMgotCWlmICgoZm10ICE9IGFyY2hOdWxsIHx8IGNvbXByZXNzaW9uICE9IDApICYmCisJaWYg KChmbXQgIT0gYXJjaE51bGwgfHwgY29tcHJlc3Npb25NZXRob2QgIT0gQ09NUFJFU1NJT05fTk9O RSkgJiYKIAkJKEFILT5mU3BlYyA9PSBOVUxMIHx8IHN0cmNtcChBSC0+ZlNwZWMsICIiKSA9PSAw KSkKIAl7CiAJCWlmIChtb2RlID09IGFyY2hNb2RlV3JpdGUpCkBAIC0zNzE2LDcgKzM2ODAsNyBA QCBXcml0ZUhlYWQoQXJjaGl2ZUhhbmRsZSAqQUgpCiAJQUgtPldyaXRlQnl0ZVB0cihBSCwgQUgt PmludFNpemUpOwogCUFILT5Xcml0ZUJ5dGVQdHIoQUgsIEFILT5vZmZTaXplKTsKIAlBSC0+V3Jp dGVCeXRlUHRyKEFILCBBSC0+Zm9ybWF0KTsKLQlXcml0ZUludChBSCwgQUgtPmNvbXByZXNzaW9u KTsKKwlXcml0ZUludChBSCwgQUgtPmNvbXByZXNzaW9uTGV2ZWwpOwogCWNydG0gPSAqbG9jYWx0 aW1lKCZBSC0+Y3JlYXRlRGF0ZSk7CiAJV3JpdGVJbnQoQUgsIGNydG0udG1fc2VjKTsKIAlXcml0 ZUludChBSCwgY3J0bS50bV9taW4pOwpAQCAtMzc5MCwxOCArMzc1NCwyMSBAQCBSZWFkSGVhZChB cmNoaXZlSGFuZGxlICpBSCkKIAlpZiAoQUgtPnZlcnNpb24gPj0gS19WRVJTXzFfMikKIAl7CiAJ CWlmIChBSC0+dmVyc2lvbiA8IEtfVkVSU18xXzQpCi0JCQlBSC0+Y29tcHJlc3Npb24gPSBBSC0+ UmVhZEJ5dGVQdHIoQUgpOworCQkJQUgtPmNvbXByZXNzaW9uTGV2ZWwgPSBBSC0+UmVhZEJ5dGVQ dHIoQUgpOwogCQllbHNlCi0JCQlBSC0+Y29tcHJlc3Npb24gPSBSZWFkSW50KEFIKTsKKwkJCUFI LT5jb21wcmVzc2lvbkxldmVsID0gUmVhZEludChBSCk7CiAJfQogCWVsc2UKLQkJQUgtPmNvbXBy ZXNzaW9uID0gWl9ERUZBVUxUX0NPTVBSRVNTSU9OOworCQlBSC0+Y29tcHJlc3Npb25MZXZlbCA9 IFpfREVGQVVMVF9DT01QUkVTU0lPTjsKIAorCWlmIChBSC0+Y29tcHJlc3Npb25MZXZlbCAhPSBJ TlRfTUlOKQogI2lmbmRlZiBIQVZFX0xJQloKLQlpZiAoQUgtPmNvbXByZXNzaW9uICE9IDApCiAJ CXBnX2xvZ193YXJuaW5nKCJhcmNoaXZlIGlzIGNvbXByZXNzZWQsIGJ1dCB0aGlzIGluc3RhbGxh dGlvbiBkb2VzIG5vdCBzdXBwb3J0IGNvbXByZXNzaW9uIC0tIG5vIGRhdGEgd2lsbCBiZSBhdmFp bGFibGUiKTsKKyNlbHNlCisJCUFILT5jb21wcmVzc2lvbk1ldGhvZCA9IENPTVBSRVNTSU9OX0da SVA7CiAjZW5kaWYKIAorCiAJaWYgKEFILT52ZXJzaW9uID49IEtfVkVSU18xXzQpCiAJewogCQlz dHJ1Y3QgdG0JY3J0bTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfYXJj aGl2ZXIuaCBiL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfYXJjaGl2ZXIuaAppbmRleCA1NDBk NGY2YTgzLi44MzdlOWQ3M2Y1IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3Vw X2FyY2hpdmVyLmgKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5oCkBA IC0zMiwzMCArMzIsNiBAQAogCiAjZGVmaW5lIExPQkJVRlNJWkUgMTYzODQKIAotI2lmZGVmIEhB VkVfTElCWgotI2luY2x1ZGUgPHpsaWIuaD4KLSNkZWZpbmUgR1pDTE9TRShmaCkgZ3pjbG9zZShm aCkKLSNkZWZpbmUgR1pXUklURShwLCBzLCBuLCBmaCkgZ3p3cml0ZShmaCwgcCwgKG4pICogKHMp KQotI2RlZmluZSBHWlJFQUQocCwgcywgbiwgZmgpIGd6cmVhZChmaCwgcCwgKG4pICogKHMpKQot I2RlZmluZSBHWkVPRihmaCkJZ3plb2YoZmgpCi0jZWxzZQotI2RlZmluZSBHWkNMT1NFKGZoKSBm Y2xvc2UoZmgpCi0jZGVmaW5lIEdaV1JJVEUocCwgcywgbiwgZmgpIChmd3JpdGUocCwgcywgbiwg ZmgpICogKHMpKQotI2RlZmluZSBHWlJFQUQocCwgcywgbiwgZmgpIGZyZWFkKHAsIHMsIG4sIGZo KQotI2RlZmluZSBHWkVPRihmaCkJZmVvZihmaCkKLS8qIHRoaXMgaXMganVzdCB0aGUgcmVkZWZp bml0aW9uIG9mIGEgbGlieiBjb25zdGFudCAqLwotI2RlZmluZSBaX0RFRkFVTFRfQ09NUFJFU1NJ T04gKC0xKQotCi10eXBlZGVmIHN0cnVjdCBfel9zdHJlYW0KLXsKLQl2b2lkCSAgICpuZXh0X2lu OwotCXZvaWQJICAgKm5leHRfb3V0OwotCXNpemVfdAkJYXZhaWxfaW47Ci0Jc2l6ZV90CQlhdmFp bF9vdXQ7Ci19IHpfc3RyZWFtOwotdHlwZWRlZiB6X3N0cmVhbSAqel9zdHJlYW1wOwotI2VuZGlm Ci0KIC8qIERhdGEgYmxvY2sgdHlwZXMgKi8KICNkZWZpbmUgQkxLX0RBVEEgMQogI2RlZmluZSBC TEtfQkxPQlMgMwpAQCAtMzE5LDggKzI5NSw3IEBAIHN0cnVjdCBfYXJjaGl2ZUhhbmRsZQogCiAJ Y2hhcgkgICAqZlNwZWM7CQkJLyogQXJjaGl2ZSBGaWxlIFNwZWMgKi8KIAlGSUxFCSAgICpGSDsJ CQkJLyogR2VuZXJhbCBwdXJwb3NlIGZpbGUgaGFuZGxlICovCi0Jdm9pZAkgICAqT0Y7Ci0JaW50 CQkJZ3pPdXQ7CQkJLyogT3V0cHV0IGZpbGUgKi8KKwl2b2lkCSAgICpPRjsJCQkJLyogT3V0cHV0 IGZpbGUgKi8KIAogCXN0cnVjdCBfdG9jRW50cnkgKnRvYzsJCS8qIEhlYWRlciBvZiBjaXJjdWxh ciBsaXN0IG9mIFRPQyBlbnRyaWVzICovCiAJaW50CQkJdG9jQ291bnQ7CQkvKiBOdW1iZXIgb2Yg VE9DIGVudHJpZXMgKi8KQEAgLTMzMSwxNCArMzA2LDE3IEBAIHN0cnVjdCBfYXJjaGl2ZUhhbmRs ZQogCUR1bXBJZAkgICAqdGFibGVEYXRhSWQ7CS8qIFRBQkxFIERBVEEgaWRzLCBpbmRleGVkIGJ5 IHRhYmxlIGR1bXBJZCAqLwogCiAJc3RydWN0IF90b2NFbnRyeSAqY3VyclRvYzsJLyogVXNlZCB3 aGVuIGR1bXBpbmcgZGF0YSAqLwotCWludAkJCWNvbXByZXNzaW9uOwkvKi0tLS0tLS0tLQotCQkJ CQkJCQkgKiBDb21wcmVzc2lvbiByZXF1ZXN0ZWQgb24gb3BlbigpLgotCQkJCQkJCQkgKiBQb3Nz aWJsZSB2YWx1ZXMgZm9yIGNvbXByZXNzaW9uOgotCQkJCQkJCQkgKiAtMQlaX0RFRkFVTFRfQ09N UFJFU1NJT04KLQkJCQkJCQkJICogIDAJQ09NUFJFU1NJT05fTk9ORQotCQkJCQkJCQkgKiAxLTkg bGV2ZWxzIGZvciBnemlwIGNvbXByZXNzaW9uCi0JCQkJCQkJCSAqLS0tLS0tLS0tCi0JCQkJCQkJ CSAqLworCUNvbXByZXNzaW9uTWV0aG9kIGNvbXByZXNzaW9uTWV0aG9kOyAvKiBSZXF1ZXN0ZWQg bWV0aG9kIGZvciBjb21wcmVzc2lvbiAqLworCWludAkJCWNvbXByZXNzaW9uTGV2ZWw7IC8qLS0t LS0tLS0tCisJCQkJCQkJCSAgICogUmVxdWVzdGVkIGxldmVsIG9mIGNvbXByZXNzaW9uIGZvciBt ZXRob2QuCisJCQkJCQkJCSAgICogUG9zc2libGUgdmFsdWVzIGZvciBjb21wcmVzc2lvbjoKKwkJ CQkJCQkJICAgKiBJTlRfTUlOIHdoZW4gbm8gY29tcHJlc3Npb24gbWV0aG9kIGlzCisJCQkJCQkJ CSAgICogcmVxdWVzdGVkLgorCQkJCQkJCQkgICAqIC0xCVpfREVGQVVMVF9DT01QUkVTU0lPTiBm b3IgZ3ppcAorCQkJCQkJCQkgICAqIGNvbXByZXNzaW9uLgorCQkJCQkJCQkgICAqIDEtOSBsZXZl bHMgZm9yIGd6aXAgY29tcHJlc3Npb24uCisJCQkJCQkJCSAgICotLS0tLS0tLS0KKwkJCQkJCQkJ ICAgKi8KIAlib29sCQlkb3N5bmM7CQkJLyogZGF0YSByZXF1ZXN0ZWQgdG8gYmUgc3luY2VkIG9u IHNpZ2h0ICovCiAJQXJjaGl2ZU1vZGUgbW9kZTsJCQkvKiBGaWxlIG1vZGUgLSByIG9yIHcgKi8K IAl2b2lkCSAgICpmb3JtYXREYXRhOwkJLyogSGVhZGVyIGRhdGEgc3BlY2lmaWMgdG8gZmlsZSBm b3JtYXQgKi8KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfY3VzdG9tLmMg Yi9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2N1c3RvbS5jCmluZGV4IDc3ZDQwMmMzMjMuLjdm MzhlYTljZDUgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfY3VzdG9tLmMK KysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9jdXN0b20uYwpAQCAtMjk4LDcgKzI5OCw5 IEBAIF9TdGFydERhdGEoQXJjaGl2ZUhhbmRsZSAqQUgsIFRvY0VudHJ5ICp0ZSkKIAlfV3JpdGVC eXRlKEFILCBCTEtfREFUQSk7CS8qIEJsb2NrIHR5cGUgKi8KIAlXcml0ZUludChBSCwgdGUtPmR1 bXBJZCk7CS8qIEZvciBzYW5pdHkgY2hlY2sgKi8KIAotCWN0eC0+Y3MgPSBBbGxvY2F0ZUNvbXBy ZXNzb3IoQUgtPmNvbXByZXNzaW9uLCBfQ3VzdG9tV3JpdGVGdW5jKTsKKwljdHgtPmNzID0gQWxs b2NhdGVDb21wcmVzc29yKEFILT5jb21wcmVzc2lvbk1ldGhvZCwKKwkJCQkJCQkJIEFILT5jb21w cmVzc2lvbkxldmVsLAorCQkJCQkJCQkgX0N1c3RvbVdyaXRlRnVuYyk7CiB9CiAKIC8qCkBAIC0z NzcsNyArMzc5LDkgQEAgX1N0YXJ0QmxvYihBcmNoaXZlSGFuZGxlICpBSCwgVG9jRW50cnkgKnRl LCBPaWQgb2lkKQogCiAJV3JpdGVJbnQoQUgsIG9pZCk7CiAKLQljdHgtPmNzID0gQWxsb2NhdGVD b21wcmVzc29yKEFILT5jb21wcmVzc2lvbiwgX0N1c3RvbVdyaXRlRnVuYyk7CisJY3R4LT5jcyA9 IEFsbG9jYXRlQ29tcHJlc3NvcihBSC0+Y29tcHJlc3Npb25NZXRob2QsCisJCQkJCQkJCSBBSC0+ Y29tcHJlc3Npb25MZXZlbCwKKwkJCQkJCQkJIF9DdXN0b21Xcml0ZUZ1bmMpOwogfQogCiAvKgpA QCAtNTY2LDcgKzU3MCw4IEBAIF9QcmludFRvY0RhdGEoQXJjaGl2ZUhhbmRsZSAqQUgsIFRvY0Vu dHJ5ICp0ZSkKIHN0YXRpYyB2b2lkCiBfUHJpbnREYXRhKEFyY2hpdmVIYW5kbGUgKkFIKQogewot CVJlYWREYXRhRnJvbUFyY2hpdmUoQUgsIEFILT5jb21wcmVzc2lvbiwgX0N1c3RvbVJlYWRGdW5j KTsKKwlSZWFkRGF0YUZyb21BcmNoaXZlKEFILCBBSC0+Y29tcHJlc3Npb25NZXRob2QsIEFILT5j b21wcmVzc2lvbkxldmVsLAorCQkJCQkJX0N1c3RvbVJlYWRGdW5jKTsKIH0KIAogc3RhdGljIHZv aWQKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfZGlyZWN0b3J5LmMgYi9z cmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2RpcmVjdG9yeS5jCmluZGV4IDdmNGUzNDBkZWEuLjBl NjBiNDQ3ZGUgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfZGlyZWN0b3J5 LmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9kaXJlY3RvcnkuYwpAQCAtMzI3LDcg KzMyNyw5IEBAIF9TdGFydERhdGEoQXJjaGl2ZUhhbmRsZSAqQUgsIFRvY0VudHJ5ICp0ZSkKIAog CXNldEZpbGVQYXRoKEFILCBmbmFtZSwgdGN0eC0+ZmlsZW5hbWUpOwogCi0JY3R4LT5kYXRhRkgg PSBjZm9wZW5fd3JpdGUoZm5hbWUsIFBHX0JJTkFSWV9XLCBBSC0+Y29tcHJlc3Npb24pOworCWN0 eC0+ZGF0YUZIID0gY2ZvcGVuX3dyaXRlKGZuYW1lLCBQR19CSU5BUllfVywKKwkJCQkJCQkgICBB SC0+Y29tcHJlc3Npb25NZXRob2QsCisJCQkJCQkJICAgQUgtPmNvbXByZXNzaW9uTGV2ZWwpOwog CWlmIChjdHgtPmRhdGFGSCA9PSBOVUxMKQogCQlmYXRhbCgiY291bGQgbm90IG9wZW4gb3V0cHV0 IGZpbGUgXCIlc1wiOiAlbSIsIGZuYW1lKTsKIH0KQEAgLTU4MSw3ICs1ODMsOCBAQCBfQ2xvc2VB cmNoaXZlKEFyY2hpdmVIYW5kbGUgKkFIKQogCQljdHgtPnBzdGF0ZSA9IFBhcmFsbGVsQmFja3Vw U3RhcnQoQUgpOwogCiAJCS8qIFRoZSBUT0MgaXMgYWx3YXlzIGNyZWF0ZWQgdW5jb21wcmVzc2Vk ICovCi0JCXRvY0ZIID0gY2ZvcGVuX3dyaXRlKGZuYW1lLCBQR19CSU5BUllfVywgMCk7CisJCXRv Y0ZIID0gY2ZvcGVuX3dyaXRlKGZuYW1lLCBQR19CSU5BUllfVywKKwkJCQkJCQkgQ09NUFJFU1NJ T05fTk9ORSwgMCk7CiAJCWlmICh0b2NGSCA9PSBOVUxMKQogCQkJZmF0YWwoImNvdWxkIG5vdCBv cGVuIG91dHB1dCBmaWxlIFwiJXNcIjogJW0iLCBmbmFtZSk7CiAJCWN0eC0+ZGF0YUZIID0gdG9j Rkg7CkBAIC02NDQsNyArNjQ3LDcgQEAgX1N0YXJ0QmxvYnMoQXJjaGl2ZUhhbmRsZSAqQUgsIFRv Y0VudHJ5ICp0ZSkKIAlzZXRGaWxlUGF0aChBSCwgZm5hbWUsICJibG9icy50b2MiKTsKIAogCS8q IFRoZSBibG9iIFRPQyBmaWxlIGlzIG5ldmVyIGNvbXByZXNzZWQgKi8KLQljdHgtPmJsb2JzVG9j RkggPSBjZm9wZW5fd3JpdGUoZm5hbWUsICJhYiIsIDApOworCWN0eC0+YmxvYnNUb2NGSCA9IGNm b3Blbl93cml0ZShmbmFtZSwgImFiIiwgQ09NUFJFU1NJT05fTk9ORSwgMCk7CiAJaWYgKGN0eC0+ YmxvYnNUb2NGSCA9PSBOVUxMKQogCQlmYXRhbCgiY291bGQgbm90IG9wZW4gb3V0cHV0IGZpbGUg XCIlc1wiOiAlbSIsIGZuYW1lKTsKIH0KQEAgLTY2Miw3ICs2NjUsOCBAQCBfU3RhcnRCbG9iKEFy Y2hpdmVIYW5kbGUgKkFILCBUb2NFbnRyeSAqdGUsIE9pZCBvaWQpCiAKIAlzbnByaW50ZihmbmFt ZSwgTUFYUEdQQVRILCAiJXMvYmxvYl8ldS5kYXQiLCBjdHgtPmRpcmVjdG9yeSwgb2lkKTsKIAot CWN0eC0+ZGF0YUZIID0gY2ZvcGVuX3dyaXRlKGZuYW1lLCBQR19CSU5BUllfVywgQUgtPmNvbXBy ZXNzaW9uKTsKKwljdHgtPmRhdGFGSCA9IGNmb3Blbl93cml0ZShmbmFtZSwgUEdfQklOQVJZX1cs CisJCQkJCQkJICAgQUgtPmNvbXByZXNzaW9uTWV0aG9kLCBBSC0+Y29tcHJlc3Npb25MZXZlbCk7 CiAKIAlpZiAoY3R4LT5kYXRhRkggPT0gTlVMTCkKIAkJZmF0YWwoImNvdWxkIG5vdCBvcGVuIG91 dHB1dCBmaWxlIFwiJXNcIjogJW0iLCBmbmFtZSk7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1 bXAvcGdfYmFja3VwX3Rhci5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF90YXIuYwppbmRl eCBhMzEzNzZiZmE4Li5iZDk5YjM4MjZhIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdf YmFja3VwX3Rhci5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfdGFyLmMKQEAgLTM1 LDYgKzM1LDcgQEAKICNpbmNsdWRlIDx1bmlzdGQuaD4KIAogI2luY2x1ZGUgImNvbW1vbi9maWxl X3V0aWxzLmgiCisjaW5jbHVkZSAiY29tcHJlc3NfaW8uaCIKICNpbmNsdWRlICJmZV91dGlscy9z dHJpbmdfdXRpbHMuaCIKICNpbmNsdWRlICJwZ19iYWNrdXBfYXJjaGl2ZXIuaCIKICNpbmNsdWRl ICJwZ19iYWNrdXBfdGFyLmgiCkBAIC0xOTQsNyArMTk1LDcgQEAgSW5pdEFyY2hpdmVGbXRfVGFy KEFyY2hpdmVIYW5kbGUgKkFIKQogCQkgKiBwb3NzaWJsZSBzaW5jZSBnemRvcGVuIHVzZXMgYnVm ZmVyZWQgSU8gd2hpY2ggdG90YWxseSBzY3Jld3MgZmlsZQogCQkgKiBwb3NpdGlvbmluZy4KIAkJ ICovCi0JCWlmIChBSC0+Y29tcHJlc3Npb24gIT0gMCkKKwkJaWYgKEFILT5jb21wcmVzc2lvbk1l dGhvZCAhPSBDT01QUkVTU0lPTl9OT05FKQogCQkJZmF0YWwoImNvbXByZXNzaW9uIGlzIG5vdCBz dXBwb3J0ZWQgYnkgdGFyIGFyY2hpdmUgZm9ybWF0Iik7CiAJfQogCWVsc2UKQEAgLTMyOCw3ICsz MjksNyBAQCB0YXJPcGVuKEFyY2hpdmVIYW5kbGUgKkFILCBjb25zdCBjaGFyICpmaWxlbmFtZSwg Y2hhciBtb2RlKQogCQkJfQogCQl9CiAKLQkJaWYgKEFILT5jb21wcmVzc2lvbiA9PSAwKQorCQlp ZiAoQUgtPmNvbXByZXNzaW9uTWV0aG9kID09IENPTVBSRVNTSU9OX05PTkUpCiAJCQl0bS0+bkZI ID0gY3R4LT50YXJGSDsKIAkJZWxzZQogCQkJZmF0YWwoImNvbXByZXNzaW9uIGlzIG5vdCBzdXBw b3J0ZWQgYnkgdGFyIGFyY2hpdmUgZm9ybWF0Iik7CkBAIC0zODMsNyArMzg0LDcgQEAgdGFyT3Bl bihBcmNoaXZlSGFuZGxlICpBSCwgY29uc3QgY2hhciAqZmlsZW5hbWUsIGNoYXIgbW9kZSkKIAog CQl1bWFzayhvbGRfdW1hc2spOwogCi0JCWlmIChBSC0+Y29tcHJlc3Npb24gPT0gMCkKKwkJaWYg KEFILT5jb21wcmVzc2lvbk1ldGhvZCA9PSBDT01QUkVTU0lPTl9OT05FKQogCQkJdG0tPm5GSCA9 IHRtLT50bXBGSDsKIAkJZWxzZQogCQkJZmF0YWwoImNvbXByZXNzaW9uIGlzIG5vdCBzdXBwb3J0 ZWQgYnkgdGFyIGFyY2hpdmUgZm9ybWF0Iik7CkBAIC00MDEsNyArNDAyLDcgQEAgdGFyT3BlbihB cmNoaXZlSGFuZGxlICpBSCwgY29uc3QgY2hhciAqZmlsZW5hbWUsIGNoYXIgbW9kZSkKIHN0YXRp YyB2b2lkCiB0YXJDbG9zZShBcmNoaXZlSGFuZGxlICpBSCwgVEFSX01FTUJFUiAqdGgpCiB7Ci0J aWYgKEFILT5jb21wcmVzc2lvbiAhPSAwKQorCWlmIChBSC0+Y29tcHJlc3Npb25NZXRob2QgIT0g Q09NUFJFU1NJT05fTk9ORSkKIAkJZmF0YWwoImNvbXByZXNzaW9uIGlzIG5vdCBzdXBwb3J0ZWQg YnkgdGFyIGFyY2hpdmUgZm9ybWF0Iik7CiAKIAlpZiAodGgtPm1vZGUgPT0gJ3cnKQpAQCAtODAx LDcgKzgwMiw2IEBAIF9DbG9zZUFyY2hpdmUoQXJjaGl2ZUhhbmRsZSAqQUgpCiAJCW1lbWNweShy b3B0LCBBSC0+cHVibGljLnJvcHQsIHNpemVvZihSZXN0b3JlT3B0aW9ucykpOwogCQlyb3B0LT5m aWxlbmFtZSA9IE5VTEw7CiAJCXJvcHQtPmRyb3BTY2hlbWEgPSAxOwotCQlyb3B0LT5jb21wcmVz c2lvbiA9IDA7CiAJCXJvcHQtPnN1cGVydXNlciA9IE5VTEw7CiAJCXJvcHQtPnN1cHByZXNzRHVt cFdhcm5pbmdzID0gdHJ1ZTsKIApAQCAtODkwLDcgKzg5MCw3IEBAIF9TdGFydEJsb2IoQXJjaGl2 ZUhhbmRsZSAqQUgsIFRvY0VudHJ5ICp0ZSwgT2lkIG9pZCkKIAlpZiAob2lkID09IDApCiAJCWZh dGFsKCJpbnZhbGlkIE9JRCBmb3IgbGFyZ2Ugb2JqZWN0ICgldSkiLCBvaWQpOwogCi0JaWYgKEFI LT5jb21wcmVzc2lvbiAhPSAwKQorCWlmIChBSC0+Y29tcHJlc3Npb25NZXRob2QgIT0gQ09NUFJF U1NJT05fTk9ORSkKIAkJc2Z4ID0gIi5neiI7CiAJZWxzZQogCQlzZnggPSAiIjsKZGlmZiAtLWdp dCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5j CmluZGV4IGU2OWRjZjhhNDguLmNkOTFlZmRkN2EgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVt cC9wZ19kdW1wLmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwpAQCAtNTUsNiArNTUs NyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHJpZ2dlcl9kLmgiCiAjaW5jbHVkZSAiY2F0YWxv Zy9wZ190eXBlX2QuaCIKICNpbmNsdWRlICJjb21tb24vY29ubmVjdC5oIgorI2luY2x1ZGUgImNv bXByZXNzX2lvLmgiCiAjaW5jbHVkZSAiZHVtcHV0aWxzLmgiCiAjaW5jbHVkZSAiZmVfdXRpbHMv b3B0aW9uX3V0aWxzLmgiCiAjaW5jbHVkZSAiZmVfdXRpbHMvc3RyaW5nX3V0aWxzLmgiCkBAIC0x NjMsNiArMTY0LDkgQEAgc3RhdGljIHZvaWQgc2V0dXBfY29ubmVjdGlvbihBcmNoaXZlICpBSCwK IAkJCQkJCQkgY29uc3QgY2hhciAqZHVtcGVuY29kaW5nLCBjb25zdCBjaGFyICpkdW1wc25hcHNo b3QsCiAJCQkJCQkJIGNoYXIgKnVzZV9yb2xlKTsKIHN0YXRpYyBBcmNoaXZlRm9ybWF0IHBhcnNl QXJjaGl2ZUZvcm1hdChjb25zdCBjaGFyICpmb3JtYXQsIEFyY2hpdmVNb2RlICptb2RlKTsKK3N0 YXRpYyBib29sIHBhcnNlX2NvbXByZXNzaW9uX29wdGlvbihjb25zdCBjaGFyICpvcHQsCisJCQkJ CQkJCQkgQ29tcHJlc3Npb25NZXRob2QgKmNvbXByZXNzaW9uTWV0aG9kLAorCQkJCQkJCQkJIGlu dCAqY29tcHJlc3NMZXZlbCk7CiBzdGF0aWMgdm9pZCBleHBhbmRfc2NoZW1hX25hbWVfcGF0dGVy bnMoQXJjaGl2ZSAqZm91dCwKIAkJCQkJCQkJCQlTaW1wbGVTdHJpbmdMaXN0ICpwYXR0ZXJucywK IAkJCQkJCQkJCQlTaW1wbGVPaWRMaXN0ICpvaWRzLApAQCAtMzM2LDggKzM0MCw5IEBAIG1haW4o aW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCWNvbnN0IGNoYXIgKmR1bXBzbmFwc2hvdCA9IE5VTEw7 CiAJY2hhcgkgICAqdXNlX3JvbGUgPSBOVUxMOwogCWludAkJCW51bVdvcmtlcnMgPSAxOwotCWlu dAkJCWNvbXByZXNzTGV2ZWwgPSAtMTsKIAlpbnQJCQlwbGFpblRleHQgPSAwOworCWludAkJCWNv bXByZXNzTGV2ZWwgPSBJTlRfTUlOOworCUNvbXByZXNzaW9uTWV0aG9kIGNvbXByZXNzaW9uTWV0 aG9kID0gQ09NUFJFU1NJT05fSU5WQUxJRDsKIAlBcmNoaXZlRm9ybWF0IGFyY2hpdmVGb3JtYXQg PSBhcmNoVW5rbm93bjsKIAlBcmNoaXZlTW9kZSBhcmNoaXZlTW9kZTsKIApAQCAtNTU3LDkgKzU2 Miw5IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQkJCWRvcHQuYWNsc1NraXAgPSB0 cnVlOwogCQkJCWJyZWFrOwogCi0JCQljYXNlICdaJzoJCQkvKiBDb21wcmVzc2lvbiBMZXZlbCAq LwotCQkJCWlmICghb3B0aW9uX3BhcnNlX2ludChvcHRhcmcsICItWi8tLWNvbXByZXNzIiwgMCwg OSwKLQkJCQkJCQkJCSAgJmNvbXByZXNzTGV2ZWwpKQorCQkJY2FzZSAnWic6CQkJLyogQ29tcHJl c3Npb24gKi8KKwkJCQlpZiAoIXBhcnNlX2NvbXByZXNzaW9uX29wdGlvbihvcHRhcmcsICZjb21w cmVzc2lvbk1ldGhvZCwKKwkJCQkJCQkJCQkJICAmY29tcHJlc3NMZXZlbCkpCiAJCQkJCWV4aXRf bmljZWx5KDEpOwogCQkJCWJyZWFrOwogCkBAIC02ODksMjMgKzY5NCwyMSBAQCBtYWluKGludCBh cmdjLCBjaGFyICoqYXJndikKIAlpZiAoYXJjaGl2ZUZvcm1hdCA9PSBhcmNoTnVsbCkKIAkJcGxh aW5UZXh0ID0gMTsKIAotCS8qIEN1c3RvbSBhbmQgZGlyZWN0b3J5IGZvcm1hdHMgYXJlIGNvbXBy ZXNzZWQgYnkgZGVmYXVsdCwgb3RoZXJzIG5vdCAqLwotCWlmIChjb21wcmVzc0xldmVsID09IC0x KQorCS8qIFNldCBkZWZhdWx0IGNvbXByZXNzaW9uTWV0aG9kIHVubGVzcyBvbmUgYWxyZWFkeSBz ZXQgYnkgdGhlIHVzZXIgKi8KKwlpZiAoY29tcHJlc3Npb25NZXRob2QgPT0gQ09NUFJFU1NJT05f SU5WQUxJRCkKIAl7CisJCWNvbXByZXNzaW9uTWV0aG9kID0gQ09NUFJFU1NJT05fTk9ORTsKKwog I2lmZGVmIEhBVkVfTElCWgorCQkvKiBDdXN0b20gYW5kIGRpcmVjdG9yeSBmb3JtYXRzIGFyZSBj b21wcmVzc2VkIGJ5IGRlZmF1bHQgKHpsaWIpICovCiAJCWlmIChhcmNoaXZlRm9ybWF0ID09IGFy Y2hDdXN0b20gfHwgYXJjaGl2ZUZvcm1hdCA9PSBhcmNoRGlyZWN0b3J5KQorCQl7CisJCQljb21w cmVzc2lvbk1ldGhvZCA9IENPTVBSRVNTSU9OX0daSVA7CiAJCQljb21wcmVzc0xldmVsID0gWl9E RUZBVUxUX0NPTVBSRVNTSU9OOwotCQllbHNlCisJCX0KICNlbmRpZgotCQkJY29tcHJlc3NMZXZl bCA9IDA7CiAJfQogCi0jaWZuZGVmIEhBVkVfTElCWgotCWlmIChjb21wcmVzc0xldmVsICE9IDAp Ci0JCXBnX2xvZ193YXJuaW5nKCJyZXF1ZXN0ZWQgY29tcHJlc3Npb24gbm90IGF2YWlsYWJsZSBp biB0aGlzIGluc3RhbGxhdGlvbiAtLSBhcmNoaXZlIHdpbGwgYmUgdW5jb21wcmVzc2VkIik7Ci0J Y29tcHJlc3NMZXZlbCA9IDA7Ci0jZW5kaWYKLQogCS8qCiAJICogSWYgZW1pdHRpbmcgYW4gYXJj aGl2ZSBmb3JtYXQsIHdlIGFsd2F5cyB3YW50IHRvIGVtaXQgYSBEQVRBQkFTRSBpdGVtLAogCSAq IGluIGNhc2UgLS1jcmVhdGUgaXMgc3BlY2lmaWVkIGF0IHBnX3Jlc3RvcmUgdGltZS4KQEAgLTcx OCw4ICs3MjEsOSBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJZmF0YWwoInBhcmFs bGVsIGJhY2t1cCBvbmx5IHN1cHBvcnRlZCBieSB0aGUgZGlyZWN0b3J5IGZvcm1hdCIpOwogCiAJ LyogT3BlbiB0aGUgb3V0cHV0IGZpbGUgKi8KLQlmb3V0ID0gQ3JlYXRlQXJjaGl2ZShmaWxlbmFt ZSwgYXJjaGl2ZUZvcm1hdCwgY29tcHJlc3NMZXZlbCwgZG9zeW5jLAotCQkJCQkJIGFyY2hpdmVN b2RlLCBzZXR1cER1bXBXb3JrZXIpOworCWZvdXQgPSBDcmVhdGVBcmNoaXZlKGZpbGVuYW1lLCBh cmNoaXZlRm9ybWF0LAorCQkJCQkJIGNvbXByZXNzaW9uTWV0aG9kLCBjb21wcmVzc0xldmVsLAor CQkJCQkJIGRvc3luYywgYXJjaGl2ZU1vZGUsIHNldHVwRHVtcFdvcmtlcik7CiAKIAkvKiBNYWtl IGR1bXAgb3B0aW9ucyBhY2Nlc3NpYmxlIHJpZ2h0IGF3YXkgKi8KIAlTZXRBcmNoaXZlT3B0aW9u cyhmb3V0LCAmZG9wdCwgTlVMTCk7CkBAIC05NTAsMTAgKzk1NCw4IEBAIG1haW4oaW50IGFyZ2Ms IGNoYXIgKiphcmd2KQogCXJvcHQtPnNlcXVlbmNlX2RhdGEgPSBkb3B0LnNlcXVlbmNlX2RhdGE7 CiAJcm9wdC0+YmluYXJ5X3VwZ3JhZGUgPSBkb3B0LmJpbmFyeV91cGdyYWRlOwogCi0JaWYgKGNv bXByZXNzTGV2ZWwgPT0gLTEpCi0JCXJvcHQtPmNvbXByZXNzaW9uID0gMDsKLQllbHNlCi0JCXJv cHQtPmNvbXByZXNzaW9uID0gY29tcHJlc3NMZXZlbDsKKwlyb3B0LT5jb21wcmVzc2lvbkxldmVs ID0gY29tcHJlc3NMZXZlbDsKKwlyb3B0LT5jb21wcmVzc2lvbk1ldGhvZCA9IGNvbXByZXNzaW9u TWV0aG9kOwogCiAJcm9wdC0+c3VwcHJlc3NEdW1wV2FybmluZ3MgPSB0cnVlOwkvKiBXZSd2ZSBh bHJlYWR5IHNob3duIHRoZW0gKi8KIApAQCAtMTAwMCw3ICsxMDAyLDggQEAgaGVscChjb25zdCBj aGFyICpwcm9nbmFtZSkKIAlwcmludGYoXygiICAtaiwgLS1qb2JzPU5VTSAgICAgICAgICAgICAg IHVzZSB0aGlzIG1hbnkgcGFyYWxsZWwgam9icyB0byBkdW1wXG4iKSk7CiAJcHJpbnRmKF8oIiAg LXYsIC0tdmVyYm9zZSAgICAgICAgICAgICAgICB2ZXJib3NlIG1vZGVcbiIpKTsKIAlwcmludGYo XygiICAtViwgLS12ZXJzaW9uICAgICAgICAgICAgICAgIG91dHB1dCB2ZXJzaW9uIGluZm9ybWF0 aW9uLCB0aGVuIGV4aXRcbiIpKTsKLQlwcmludGYoXygiICAtWiwgLS1jb21wcmVzcz0wLTkgICAg ICAgICAgIGNvbXByZXNzaW9uIGxldmVsIGZvciBjb21wcmVzc2VkIGZvcm1hdHNcbiIpKTsKKwlw cmludGYoXygiICAtWiwgLS1jb21wcmVzcz1bZ3ppcCxub25lXVs6TEVWRUxdIG9yIFtMRVZFTF1c biIKKwkJCSAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXByZXNzIG91dHB1dCB3 aXRoIGdpdmVuIG1ldGhvZCBvciBsZXZlbFxuIikpOwogCXByaW50ZihfKCIgIC0tbG9jay13YWl0 LXRpbWVvdXQ9VElNRU9VVCAgZmFpbCBhZnRlciB3YWl0aW5nIFRJTUVPVVQgZm9yIGEgdGFibGUg bG9ja1xuIikpOwogCXByaW50ZihfKCIgIC0tbm8tc3luYyAgICAgICAgICAgICAgICAgICAgZG8g bm90IHdhaXQgZm9yIGNoYW5nZXMgdG8gYmUgd3JpdHRlbiBzYWZlbHkgdG8gZGlza1xuIikpOwog CXByaW50ZihfKCIgIC0/LCAtLWhlbHAgICAgICAgICAgICAgICAgICAgc2hvdyB0aGlzIGhlbHAs IHRoZW4gZXhpdFxuIikpOwpAQCAtMTI2MCw2ICsxMjYzLDExNiBAQCBnZXRfc3luY2hyb25pemVk X3NuYXBzaG90KEFyY2hpdmUgKmZvdXQpCiAJcmV0dXJuIHJlc3VsdDsKIH0KIAorc3RhdGljIGJv b2wKK3BhcnNlX2NvbXByZXNzaW9uX21ldGhvZChjb25zdCBjaGFyICptZXRob2QsCisJCQkJCQkg Q29tcHJlc3Npb25NZXRob2QgKmNvbXByZXNzaW9uTWV0aG9kKQoreworCWJvb2wgcmVzID0gdHJ1 ZTsKKworCWlmIChwZ19zdHJjYXNlY21wKG1ldGhvZCwgImd6aXAiKSA9PSAwKQorCQkqY29tcHJl c3Npb25NZXRob2QgPSBDT01QUkVTU0lPTl9HWklQOworCWVsc2UgaWYgKHBnX3N0cmNhc2VjbXAo bWV0aG9kLCAibm9uZSIpID09IDApCisJCSpjb21wcmVzc2lvbk1ldGhvZCA9IENPTVBSRVNTSU9O X05PTkU7CisJZWxzZQorCXsKKwkJcGdfbG9nX2Vycm9yKCJpbnZhbGlkIGNvbXByZXNzaW9uIG1l dGhvZCBcIiVzXCIgKGd6aXAsIG5vbmUpIiwgbWV0aG9kKTsKKwkJcmVzID0gZmFsc2U7CisJfQor CisJcmV0dXJuIHJlczsKK30KKworLyoKKyAqIEludGVycHJldHMgYSBjb21wcmVzc2lvbiBvcHRp b24gb2YgdGhlIGZvcm1hdCAnbWV0aG9kWzpMRVZFTF0nIG9mIGxlZ2FjeSBqdXN0CisgKiAnW0xF VkVMXScuIEluIHRoZSBsYXRlciBmb3JtYXQsIGd6aXAgaXMgaW1wbGllZC4gVGhlIHBhcnNlZCBt ZXRob2QgYW5kIGxldmVsCisgKiBhcmUgcmV0dXJuZWQgaW4gKmNvbXByZXNzaW9uTWV0aG9kIGFu ZCAqY29tcHJlc3Npb25MZXZlbC4gSW4gY2FzZSBvZiBlcnJvciwKKyAqIHRoZSBmdW5jdGlvbiBy ZXR1cm5zIGZhbHNlIGFuZCB0aGVuIHRoZSB2YWx1ZXMgb2YgKmNvbXByZXNzaW9ue01ldGhvZCxM ZXZlbH0KKyAqIGFyZSBub3QgdG8gYmUgdHJ1c3RlZC4KKyAqLworc3RhdGljIGJvb2wKK3BhcnNl X2NvbXByZXNzaW9uX29wdGlvbihjb25zdCBjaGFyICpvcHQsIENvbXByZXNzaW9uTWV0aG9kICpj b21wcmVzc2lvbk1ldGhvZCwKKwkJCQkJCSBpbnQgKmNvbXByZXNzTGV2ZWwpCit7CisJY2hhcgkg ICAqbWV0aG9kOworCWNvbnN0IGNoYXIgKnNlcDsKKwlpbnQJCQltZXRob2RsZW47CisJYm9vbAkJ c3VwcG9ydHNfY29tcHJlc3Npb24gPSB0cnVlOworCWJvb2wJCXJlcyA9IHRydWU7CisKKwkvKiBm aW5kIHRoZSBzZXBhcmF0b3IgaWYgZXhpc3RzICovCisJc2VwID0gc3RyY2hyKG9wdCwgJzonKTsK KworCS8qCisJICogSWYgdGhlcmUgaXMgbm8gc2VwYXJhdG9yLCB0aGVuIGl0IGlzIGVpdGhlciBh IGxlZ2FjeSBmb3JtYXQsIG9yIG9ubHkgdGhlCisJICogbWV0aG9kIGhhcyBiZWVuIHBhc3NlZC4K KwkgKi8KKwlpZiAoIXNlcCkKKwl7CisJCWlmIChzdHJzcG4ob3B0LCAiLTAxMjM0NTY3ODkiKSA9 PSBzdHJsZW4ob3B0KSkKKwkJeworCQkJcmVzID0gb3B0aW9uX3BhcnNlX2ludChvcHQsICItWi8t LWNvbXByZXNzIiwgMCwgOSwgY29tcHJlc3NMZXZlbCk7CisJCQkqY29tcHJlc3Npb25NZXRob2Qg PSAoKmNvbXByZXNzTGV2ZWwgPiAwKSA/IENPTVBSRVNTSU9OX0daSVAgOgorCQkJCQkJCQkJCQkJ CQlDT01QUkVTU0lPTl9OT05FOworCQl9CisJCWVsc2UKKwkJCXJlcyA9IHBhcnNlX2NvbXByZXNz aW9uX21ldGhvZChvcHQsIGNvbXByZXNzaW9uTWV0aG9kKTsKKwl9CisJZWxzZQorCXsKKwkJLyog b3RoZXJ3aXNlLCBpdCBzaG91bGQgYmUgbWV0aG9kOkxFVkVMICovCisJCW1ldGhvZGxlbiA9IHNl cCAtIG9wdCArIDE7CisJCW1ldGhvZCA9IHBnX21hbGxvYzAobWV0aG9kbGVuKTsKKwkJc25wcmlu dGYobWV0aG9kLCBtZXRob2RsZW4sICIlLipzIiwgbWV0aG9kbGVuIC0gMSwgb3B0KTsKKworCQly ZXMgPSBwYXJzZV9jb21wcmVzc2lvbl9tZXRob2QobWV0aG9kLCBjb21wcmVzc2lvbk1ldGhvZCk7 CisJCWlmIChyZXMpCisJCXsKKwkJCXNlcCsrOworCQkJaWYgKCpzZXAgPT0gJ1wwJykKKwkJCXsK KwkJCQlwZ19sb2dfZXJyb3IoIm5vIGxldmVsIGRlZmluZWQgZm9yIGNvbXByZXNzaW9uIFwiJXNc IiIsIG1ldGhvZCk7CisJCQkJcGdfZnJlZShtZXRob2QpOworCQkJCXJlcyA9IGZhbHNlOworCQkJ fQorCQkJZWxzZQorCQkJeworCQkJCXJlcyA9IG9wdGlvbl9wYXJzZV9pbnQoc2VwLCAiLVovLS1j b21wcmVzcyBbTEVWRUxdIiwgMSwgOSwKKwkJCQkJCQkJCSAgIGNvbXByZXNzTGV2ZWwpOworCQkJ fQorCQl9CisJfQorCisJLyogaWYgdGhlcmUgaXMgYW4gZXJyb3IsIHRoZXJlIGlzIG5vIG5lZWQg dG8gY2hlY2sgZnVydGhlciAqLworCWlmICghcmVzKQorCQlyZXR1cm4gcmVzOworCisJLyogb25l IGNhbiBzZXQgbGV2ZWwgd2hlbiBtZXRob2QgaXMgZ3ppcCAqLworCWlmICgqY29tcHJlc3Npb25N ZXRob2QgIT0gQ09NUFJFU1NJT05fR1pJUCAmJiAqY29tcHJlc3NMZXZlbCAhPSBJTlRfTUlOKQor CXsKKwkJcGdfbG9nX2Vycm9yKCJjYW4gb25seSBzcGVjaWZ5IC1aLy0tY29tcHJlc3MgW0xFVkVM XSB3aGVuIG1ldGhvZCBpcyBnemlwIik7CisJCXJldHVybiBmYWxzZTsKKwl9CisKKwkvKiB2ZXJp ZnkgdGhhdCB0aGUgcmVxdWVzdGVkIGNvbXByZXNzaW9uIGlzIHN1cHBvcnRlZCAqLworI2lmbmRl ZiBIQVZFX0xJQloKKwlpZiAoKmNvbXByZXNzaW9uTWV0aG9kID09IENPTVBSRVNTSU9OX0daSVAp CisJCXN1cHBvcnRzX2NvbXByZXNzaW9uID0gZmFsc2U7CisjZW5kaWYKKyNpZm5kZWYgSEFWRV9M SUJMWjQKKwlpZiAoKmNvbXByZXNzaW9uTWV0aG9kID09IENPTVBSRVNTSU9OX0xaNCkKKwkJc3Vw cG9ydHNfY29tcHJlc3Npb24gPSBmYWxzZTsKKyNlbmRpZgorCisJaWYgKCFzdXBwb3J0c19jb21w cmVzc2lvbikKKwl7CisJCXBnX2xvZ193YXJuaW5nKCJyZXF1ZXN0ZWQgY29tcHJlc3Npb24gbm90 IGF2YWlsYWJsZSBpbiB0aGlzIGluc3RhbGxhdGlvbiAtLSBhcmNoaXZlIHdpbGwgYmUgdW5jb21w cmVzc2VkIik7CisJCSpjb21wcmVzc2lvbk1ldGhvZCA9IENPTVBSRVNTSU9OX05PTkU7CisJCSpj b21wcmVzc0xldmVsID0gSU5UX01JTjsKKwl9CisKKwlyZXR1cm4gdHJ1ZTsKK30KKwogc3RhdGlj IEFyY2hpdmVGb3JtYXQKIHBhcnNlQXJjaGl2ZUZvcm1hdChjb25zdCBjaGFyICpmb3JtYXQsIEFy Y2hpdmVNb2RlICptb2RlKQogewpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3QvMDAxX2Jh c2ljLnBsIGIvc3JjL2Jpbi9wZ19kdW1wL3QvMDAxX2Jhc2ljLnBsCmluZGV4IDhmZGFjZWE2ZjUu LmY2YmNjZmU1NWIgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC90LzAwMV9iYXNpYy5wbAor KysgYi9zcmMvYmluL3BnX2R1bXAvdC8wMDFfYmFzaWMucGwKQEAgLTEyMSw2ICsxMjEsMTYgQEAg Y29tbWFuZF9mYWlsc19saWtlKAogCXFyL1xRcGdfcmVzdG9yZTogZXJyb3I6IGNhbm5vdCBzcGVj aWZ5IGJvdGggLS1zaW5nbGUtdHJhbnNhY3Rpb24gYW5kIG11bHRpcGxlIGpvYnNcRS8sCiAJJ3Bn X3Jlc3RvcmU6IGNhbm5vdCBzcGVjaWZ5IGJvdGggLS1zaW5nbGUtdHJhbnNhY3Rpb24gYW5kIG11 bHRpcGxlIGpvYnMnKTsKIAorY29tbWFuZF9mYWlsc19saWtlKAorCVsgJ3BnX2R1bXAnLCAnLS1j b21wcmVzcycsICdnYXJiYWdlJyBdLAorCXFyL1xRcGdfZHVtcDogZXJyb3I6IGludmFsaWQgY29t cHJlc3Npb24gbWV0aG9kICJnYXJiYWdlIiAoZ3ppcCwgbm9uZSlcRS8sCisJJ3BnX2R1bXA6IGlu dmFsaWQgLS1jb21wcmVzcycpOworCitjb21tYW5kX2ZhaWxzX2xpa2UoCisJWyAncGdfZHVtcCcs ICctLWNvbXByZXNzJywgJ25vbmU6MScgXSwKKwlxci9cUXBnX2R1bXA6IGVycm9yOiBjYW4gb25s eSBzcGVjaWZ5IC1aXC8tLWNvbXByZXNzIFtMRVZFTF0gd2hlbiBtZXRob2QgaXMgZ3ppcFxFLywK KwkncGdfZHVtcDogY2FuIG9ubHkgc3BlY2lmeSAtWi8tLWNvbXByZXNzIFtMRVZFTF0gd2hlbiBt ZXRob2QgaXMgZ3ppcCcpOworCiBjb21tYW5kX2ZhaWxzX2xpa2UoCiAJWyAncGdfZHVtcCcsICct WicsICctMScgXSwKIAlxci9cUXBnX2R1bXA6IGVycm9yOiAtWlwvLS1jb21wcmVzcyBtdXN0IGJl IGluIHJhbmdlIDAuLjlcRS8sCkBAIC0xMjksMTQgKzEzOSwxNCBAQCBjb21tYW5kX2ZhaWxzX2xp a2UoCiBpZiAoY2hlY2tfcGdfY29uZmlnKCIjZGVmaW5lIEhBVkVfTElCWiAxIikpCiB7CiAJY29t bWFuZF9mYWlsc19saWtlKAotCQlbICdwZ19kdW1wJywgJy0tY29tcHJlc3MnLCAnMScsICctLWZv cm1hdCcsICd0YXInIF0sCisJCVsgJ3BnX2R1bXAnLCAnLS1jb21wcmVzcycsICdnemlwOjEnLCAn LS1mb3JtYXQnLCAndGFyJyBdLAogCQlxci9cUXBnX2R1bXA6IGVycm9yOiBjb21wcmVzc2lvbiBp cyBub3Qgc3VwcG9ydGVkIGJ5IHRhciBhcmNoaXZlIGZvcm1hdFxFLywKIAkJJ3BnX2R1bXA6IGNv bXByZXNzaW9uIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGFyIGFyY2hpdmUgZm9ybWF0Jyk7CiB9CiBl bHNlCiB7CiAJY29tbWFuZF9mYWlsc19saWtlKAotCQlbICdwZ19kdW1wJywgJy0tY29tcHJlc3Mn LCAnMScsICctLWZvcm1hdCcsICd0YXInIF0sCisJCVsgJ3BnX2R1bXAnLCAnLS1jb21wcmVzcycs ICdnemlwOjEnLCAnLS1mb3JtYXQnLCAndGFyJyBdLAogCQlxci9cUXBnX2R1bXA6IHdhcm5pbmc6 IHJlcXVlc3RlZCBjb21wcmVzc2lvbiBub3QgYXZhaWxhYmxlIGluIHRoaXMgaW5zdGFsbGF0aW9u IC0tIGFyY2hpdmUgd2lsbCBiZSB1bmNvbXByZXNzZWRcRS8sCiAJCSdwZ19kdW1wOiB3YXJuaW5n OiByZXF1ZXN0ZWQgY29tcHJlc3Npb24gbm90IGF2YWlsYWJsZSBpbiB0aGlzIGluc3RhbGxhdGlv biAtLSBhcmNoaXZlIHdpbGwgYmUgdW5jb21wcmVzc2VkJyk7CiB9CmRpZmYgLS1naXQgYS9zcmMv YmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbCBiL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19k dW1wLnBsCmluZGV4IGNiZjQ1MjQ1MDMuLjQ5ZjA0Yzk0NzcgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4v cGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsCisrKyBiL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19k dW1wLnBsCkBAIC03Nyw3ICs3Nyw3IEBAIG15ICVwZ2R1bXBfcnVucyA9ICgKIAkJdGVzdF9rZXkg PT4gJ2NvbXByZXNzaW9uJywKIAkJZHVtcF9jbWQgPT4gWwogCQkJJ3BnX2R1bXAnLAotCQkJJy0t Zm9ybWF0PWRpcmVjdG9yeScsICctLWNvbXByZXNzPTEnLAorCQkJJy0tZm9ybWF0PWRpcmVjdG9y eScsICctLWNvbXByZXNzPWd6aXA6MScsCiAJCQkiLS1maWxlPSR0ZW1wZGlyL2NvbXByZXNzaW9u X2d6aXBfZGlyZWN0b3J5X2Zvcm1hdCIsCiAJCQkncG9zdGdyZXMnLAogCQldLApAQCAtOTgsNyAr OTgsNyBAQCBteSAlcGdkdW1wX3J1bnMgPSAoCiAJCXRlc3Rfa2V5ID0+ICdjb21wcmVzc2lvbics CiAJCWR1bXBfY21kID0+IFsKIAkJCSdwZ19kdW1wJywgJy0tam9icz0yJywKLQkJCSctLWZvcm1h dD1kaXJlY3RvcnknLCAnLS1jb21wcmVzcz02JywKKwkJCSctLWZvcm1hdD1kaXJlY3RvcnknLCAn LS1jb21wcmVzcz1nemlwOjYnLAogCQkJIi0tZmlsZT0kdGVtcGRpci9jb21wcmVzc2lvbl9nemlw X2RpcmVjdG9yeV9mb3JtYXRfcGFyYWxsZWwiLAogCQkJJ3Bvc3RncmVzJywKIAkJXSwKQEAgLTEz MCw2ICsxMzAsMjUgQEAgbXkgJXBnZHVtcF9ydW5zID0gKAogCQkJIiR0ZW1wZGlyL2NvbXByZXNz aW9uX2d6aXBfcGxhaW5fZm9ybWF0LnNxbC5neiIsCiAJCV0sCiAJfSwKKwljb21wcmVzc2lvbl9u b25lX2Rpcl9mb3JtYXQgPT4geworCQl0ZXN0X2tleSA9PiAnY29tcHJlc3Npb24nLAorCQlkdW1w X2NtZCA9PiBbCisJCQkncGdfZHVtcCcsICctRmQnLAorCQkJJy0tY29tcHJlc3M9bm9uZScsCisJ CQkiLS1maWxlPSR0ZW1wZGlyL2NvbXByZXNzaW9uX25vbmVfZGlyX2Zvcm1hdCIsCisJCQkncG9z dGdyZXMnLAorCQldLAorCQlnbG9iX21hdGNoID0+IHsKKwkJCW5vX21hdGNoID0+ICIkdGVtcGRp ci9jb21wcmVzc2lvbl9ub25lX2Rpcl9mb3JtYXQvKi5kYXQuZ3oiLAorCQkJbWF0Y2ggPT4gIiR0 ZW1wZGlyL2NvbXByZXNzaW9uX25vbmVfZGlyX2Zvcm1hdC8qLmRhdCIsCisJCQltYXRjaF9jb3Vu dCA9PiAyLCAjIHRvYy5kYXQgYW5kIG1vcmUKKwkJfSwKKwkJcmVzdG9yZV9jbWQgPT4gWworCQkJ J3BnX3Jlc3RvcmUnLCAnLUZkJywKKwkJCSItLWZpbGU9JHRlbXBkaXIvY29tcHJlc3Npb25fbm9u ZV9kaXJfZm9ybWF0LnNxbCIsCisJCQkiJHRlbXBkaXIvY29tcHJlc3Npb25fbm9uZV9kaXJfZm9y bWF0IiwKKwkJXSwKKwl9LAogCWNsZWFuID0+IHsKIAkJZHVtcF9jbWQgPT4gWwogCQkJJ3BnX2R1 bXAnLApAQCAtMjI5LDcgKzI0OCw3IEBAIG15ICVwZ2R1bXBfcnVucyA9ICgKIAlkZWZhdWx0c19k aXJfZm9ybWF0ID0+IHsKIAkJdGVzdF9rZXkgPT4gJ2RlZmF1bHRzJywKIAkJZHVtcF9jbWQgPT4g WwotCQkJJ3BnX2R1bXAnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy1GZCcsCisJCQkn cGdfZHVtcCcsICctRmQnLAogCQkJIi0tZmlsZT0kdGVtcGRpci9kZWZhdWx0c19kaXJfZm9ybWF0 IiwgJ3Bvc3RncmVzJywKIAkJXSwKIAkJcmVzdG9yZV9jbWQgPT4gWwpAQCAtMzk1MCw2ICszOTY5 LDMxIEBAIGZvcmVhY2ggbXkgJHJ1biAoc29ydCBrZXlzICVwZ2R1bXBfcnVucykKIAkJY29tbWFu ZF9vayggXEB7ICRwZ2R1bXBfcnVuc3skcnVufS0+e2NvbXByZXNzX2NtZH0gfSwKIAkJCSIkcnVu OiBjb21wcmVzc2lvbiBjb21tYW5kcyIpOwogCX0KKwlpZiAoZGVmaW5lZCgkcGdkdW1wX3J1bnN7 JHJ1bn0tPntnbG9iX21hdGNofSkpCisJeworCQkjIFNraXAgY29tcHJlc3Npb25fY21kIHRlc3Rz IHdoZW4gY29tcHJlc3Npb24gaXMgbm90IHN1cHBvcnRlZCwKKwkJIyBhcyB0aGUgcmVzdWx0IGlz IHVuY29tcHJlc3NlZCBvciB0aGUgdXRpbGl0eSBwcm9ncmFtIGRvZXMgbm90CisJCSMgZXhpc3QK KwkJbmV4dCBpZiAhJHN1cHBvcnRzX2NvbXByZXNzaW9uIHx8ICFkZWZpbmVkKCRjb21wcmVzc19w cm9ncmFtKQorCQkJCXx8ICRjb21wcmVzc19wcm9ncmFtIGVxICcnOworCisJCW15ICRtYXRjaCA9 ICRwZ2R1bXBfcnVuc3skcnVufS0+e2dsb2JfbWF0Y2h9LT57bWF0Y2h9OworCQlteSAkbWF0Y2hf Y291bnQgPSBkZWZpbmVkKCRwZ2R1bXBfcnVuc3skcnVufS0+e2dsb2JfbWF0Y2h9LT57bWF0Y2hf Y291bnR9KSA/CisJCQkJCQkJJHBnZHVtcF9ydW5zeyRydW59LT57Z2xvYl9tYXRjaH0tPnttYXRj aF9jb3VudH0gOiAxOworCQlteSBAZ2xvYl9tYXRjaGVkID0gZ2xvYiAkbWF0Y2g7CisKKwkJY21w X29rKHNjYWxhcihAZ2xvYl9tYXRjaGVkKSwgJz49JywgJG1hdGNoX2NvdW50LAorCQkJIkV4cGVj dGVkIGF0IGxlYXN0ICRtYXRjaF9jb3VudCBmaWxlKHMpIG1hdGNoaW5nICRtYXRjaCIpOworCisJ CWlmIChkZWZpbmVkKCRwZ2R1bXBfcnVuc3skcnVufS0+e2dsb2JfbWF0Y2h9LT57bm9fbWF0Y2h9 KSkKKwkJeworCQkJbXkgJG5vX21hdGNoID0gJHBnZHVtcF9ydW5zeyRydW59LT57Z2xvYl9tYXRj aH0tPntub19tYXRjaH07CisJCQlteSBAZ2xvYl9tYXRjaGVkID0gZ2xvYiAkbm9fbWF0Y2g7CisK KwkJCWNtcF9vayhzY2FsYXIoQGdsb2JfbWF0Y2hlZCksICc9PScsIDAsCisJCQkJIkV4cGVjdGVk IG5vIGZpbGUocykgbWF0Y2hpbmcgJG5vX21hdGNoIik7CisJCX0KKwl9CiAKIAlpZiAoJHBnZHVt cF9ydW5zeyRydW59LT57cmVzdG9yZV9jbWR9KQogCXsKZGlmZiAtLWdpdCBhL3NyYy90b29scy9w Z2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QK aW5kZXggZDliODNmNzQ0Zi4uN2NkZmUwOWU0NiAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5k ZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QK QEAgLTQxMSw3ICs0MTEsNyBAQCBDb21waWxlZEV4cHJTdGF0ZQogQ29tcG9zaXRlSU9EYXRhCiBD b21wb3NpdGVUeXBlU3RtdAogQ29tcG91bmRBZmZpeEZsYWcKLUNvbXByZXNzaW9uQWxnb3JpdGht CitDb21wcmVzc2lvbk1ldGhvZAogQ29tcHJlc3NvclN0YXRlCiBDb21wdXRlWGlkSG9yaXpvbnNS ZXN1bHQKIENvbmRpdGlvblZhcmlhYmxlCi0tIAoyLjMzLjAKCg== --000000000000b26ed405db131b3f Content-Type: application/octet-stream; name="v2-0004-Add-LZ4-compression-in-pg_-dump-restore.patch" Content-Disposition: attachment; filename="v2-0004-Add-LZ4-compression-in-pg_-dump-restore.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l171f1be3 RnJvbSA1NDc4ZTA3ZTFjOTlkYjg0MDNkY2NhY2FiN2UyZjc3NjhjNDk4ZWFjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBHZW9yZ2lvcyBLb2tvbGF0b3MgPGdrb2tvbGF0b3NAcG0ubWU+ CkRhdGU6IEZyaSwgMjUgTWFyIDIwMjIgMTY6MzQ6NTAgKzAwMDAKU3ViamVjdDogW1BBVENIIHYy IDQvNF0gQWRkIExaNCBjb21wcmVzc2lvbiBpbiBwZ197ZHVtcHxyZXN0b3JlfQoKV2l0aGluIGNv bXByZXNzX2lvLntjLGh9IHRoZXJlIGFyZSB0d28gZGlzdGluY3QgQVBJcyBleHBvc2VkLCB0aGUg c3RyZWFtaW5nIEFQSQphbmQgYSBmaWxlIEFQSS4gVGhlIGZpcnN0IG9uZSwgaXMgYWltZWQgYXQg aW5saW5lZCB1c2UgY2FzZXMgYW5kIHRodXMgc2ltcGxlCmx6NC5oIGNhbGxzIGNhbiBiZSB1c2Vk IGRpcmVjdGx5LiBUaGUgc2Vjb25kIG9uZSBpcyBnZW5lcmF0aW5nIG91dHB1dCwgb3IgaXMKcGFy c2luZyBpbnB1dCwgd2hpY2ggY2FuIGJlIHJlYWQvZ2VuZXJhdGVkIHZpYSB0aGUgbHo0IHV0aWxp dHkuCgpJbiB0aGUgbGF0ZXIgY2FzZSwgdGhlIEFQSSBpcyB1c2luZyBhbiBvcGFxdWUgd3JhcHBl ciBhcm91bmQgYSBmaWxlIHN0cmVhbSwKd2hpY2ggYXF1aXJlZCB2aWEgZm9wZW4oKSBvciBnem9w ZW4oKSByZXNwZWN0aXZlbHkuIEl0IHdvdWxkIHRoZW4gcHJvdmlkZQp3cmFwcGVycyBhcm91bmQg ZnJlYWQoKSwgZndyaXRlKCksIGZnZXRzKCksIGZnZXRjKCksIGZlb2YoKSwgYW5kIGZjbG9zZSgp OyBvcgp0aGVpciBneiBlcXVpdmFsbGVudHMuIEhvd2V2ZXIgdGhlIExaNEYgYXBpIGRvZXMgbm90 IHByb3ZpZGUgdGhpcyBmdW5jdGlvbmFsaXR5LgpTbyB0aGlzIGhhcyBiZWVuIGltcGxlbWVudGVk IGxvY2FseS4KCkluIG9yZGVyIHRvIG1haW50YWluIHRoZSBBUEkgY29tcGF0aWJpbGl0eSBhIG5l dyBzdHJ1Y3R1cmUgTFo0RmlsZSBpcwppbnRyb2R1Y2VkLiBJdCBpcyByZXNwb25zaWJsZSBmb3Ig a2VlcGluZyBzdGF0ZSBhbmQgYW55IHlldCB1bnVzZWQgZ2VuZXJhdGVkCmNvbnRlbnQuIFRoZSBs YXRlciBpcyByZXF1aXJlZCB3aGVuIHRoZSBnZW5lcmF0ZWQgZGVjb21wcmVzc2VkIG91dHB1dCwg ZXhjZWVkcwp0aGUgY2FsbGVyJ3MgYnVmZmVyIGNhcGFjaXR5LgoKQ3VzdG9tIGNvbXByZXNzZWQg YXJjaGl2ZXMgbmVlZCB0byBub3cgc3RvcmUgdGhlIGNvbXByZXNzaW9uIG1ldGhvZCBpbiB0aGVp cgpoZWFkZXIuIFRoaXMgcmVxdWlyZXMgYSBidW1wIGluIHRoZSB2ZXJzaW9uIG51bWJlci4gVGhl IGxldmVsIG9mIGNvbXByZXNzaW9uIGlzCnN0aWxsIHN0b3JlZCBpbiB0aGUgZHVtcCwgdGhvdWdo IGFkbWl0dGVkbHkgaXMgb2Ygbm8gYXBwYXJlbnQgdXNlLgotLS0KIGRvYy9zcmMvc2dtbC9yZWYv cGdfZHVtcC5zZ21sICAgICAgICB8ICAyMyArLQogc3JjL2Jpbi9wZ19kdW1wL01ha2VmaWxlICAg ICAgICAgICAgIHwgICAxICsKIHNyYy9iaW4vcGdfZHVtcC9jb21wcmVzc19pby5jICAgICAgICB8 IDczMSArKysrKysrKysrKysrKysrKysrKysrKystLS0KIHNyYy9iaW4vcGdfZHVtcC9wZ19iYWNr dXAuaCAgICAgICAgICB8ICAgMSArCiBzcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hpdmVy LmMgfCAgNzEgKystCiBzcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hpdmVyLmggfCAgIDMg Ky0KIHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgICAgICAgICAgICB8ICAxMiArLQogc3JjL2Jp bi9wZ19kdW1wL3QvMDAxX2Jhc2ljLnBsICAgICAgIHwgICA0ICstCiBzcmMvYmluL3BnX2R1bXAv dC8wMDJfcGdfZHVtcC5wbCAgICAgfCAyMDYgKysrKysrLS0KIDkgZmlsZXMgY2hhbmdlZCwgOTA1 IGluc2VydGlvbnMoKyksIDE0NyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3Nn bWwvcmVmL3BnX2R1bXAuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvcGdfZHVtcC5zZ21sCmluZGV4 IDk5MmI3MzEyZGYuLjMxMGNiMDk0ZGEgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvcGdf ZHVtcC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvcGdfZHVtcC5zZ21sCkBAIC0zMjgsOSAr MzI4LDEwIEBAIFBvc3RncmVTUUwgZG9jdW1lbnRhdGlvbgogICAgICAgICAgICBtYWNoaW5lLXJl YWRhYmxlIGZvcm1hdCB0aGF0IDxhcHBsaWNhdGlvbj5wZ19yZXN0b3JlPC9hcHBsaWNhdGlvbj4K ICAgICAgICAgICAgY2FuIHJlYWQuIEEgZGlyZWN0b3J5IGZvcm1hdCBhcmNoaXZlIGNhbiBiZSBt YW5pcHVsYXRlZCB3aXRoCiAgICAgICAgICAgIHN0YW5kYXJkIFVuaXggdG9vbHM7IGZvciBleGFt cGxlLCBmaWxlcyBpbiBhbiB1bmNvbXByZXNzZWQgYXJjaGl2ZQotICAgICAgICAgICBjYW4gYmUg Y29tcHJlc3NlZCB3aXRoIHRoZSA8YXBwbGljYXRpb24+Z3ppcDwvYXBwbGljYXRpb24+IHRvb2wu Ci0gICAgICAgICAgIFRoaXMgZm9ybWF0IGlzIGNvbXByZXNzZWQgYnkgZGVmYXVsdCBhbmQgYWxz byBzdXBwb3J0cyBwYXJhbGxlbAotICAgICAgICAgICBkdW1wcy4KKyAgICAgICAgICAgY2FuIGJl IGNvbXByZXNzZWQgd2l0aCB0aGUgPGFwcGxpY2F0aW9uPmd6aXA8L2FwcGxpY2F0aW9uPiBvcgor ICAgICAgICAgICA8YXBwbGljYXRpb24+bHo0PC9hcHBsaWNhdGlvbj50b29sLgorICAgICAgICAg ICBUaGlzIGZvcm1hdCBpcyBjb21wcmVzc2VkIGJ5IGRlZmF1bHQgdXNpbmcgPGxpdGVyYWw+Z3pp cDwvbGl0ZXJhbD4KKyAgICAgICAgICAgYW5kIGFsc28gc3VwcG9ydHMgcGFyYWxsZWwgZHVtcHMu CiAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgPC92YXJs aXN0ZW50cnk+CkBAIC02NTIsMTIgKzY1MywxMiBAQCBQb3N0Z3JlU1FMIGRvY3VtZW50YXRpb24K ICAgICAgICA8cGFyYT4KICAgICAgICAgU3BlY2lmeSB0aGUgY29tcHJlc3Npb24gbWV0aG9kIGFu ZC9vciB0aGUgY29tcHJlc3Npb24gbGV2ZWwgdG8gdXNlLgogICAgICAgICBUaGUgY29tcHJlc3Np b24gbWV0aG9kIGNhbiBiZSBzZXQgdG8gPGxpdGVyYWw+Z3ppcDwvbGl0ZXJhbD4gb3IKLSAgICAg ICAgPGxpdGVyYWw+bm9uZTwvbGl0ZXJhbD4gZm9yIG5vIGNvbXByZXNzaW9uLiBBIGNvbXByZXNz aW9uIGxldmVsIGNhbgotICAgICAgICBiZSBvcHRpb25hbGx5IHNwZWNpZmllZCwgYnkgYXBwZW5k aW5nIHRoZSBsZXZlbCBudW1iZXIgYWZ0ZXIgYSBjb2xvbgotICAgICAgICAoPGxpdGVyYWw+Ojwv bGl0ZXJhbD4pLiBJZiBubyBsZXZlbCBpcyBzcGVjaWZpZWQsIHRoZSBkZWZhdWx0IGNvbXByZXNz aW9uCi0gICAgICAgIGxldmVsIHdpbGwgYmUgdXNlZCBmb3IgdGhlIHNwZWNpZmllZCBtZXRob2Qu IElmIG9ubHkgYSBsZXZlbCBpcwotICAgICAgICBzcGVjaWZpZWQgd2l0aG91dCBtZW50aW9uaW5n IGEgbWV0aG9kLCA8bGl0ZXJhbD5nemlwPC9saXRlcmFsPiBjb21wcmVzc2lvbgotICAgICAgICB3 aWxsIGJlIHVzZWQuCisgICAgICAgIDxsaXRlcmFsPmx6NDwvbGl0ZXJhbD4gb3IgPGxpdGVyYWw+ bm9uZTwvbGl0ZXJhbD4gZm9yIG5vIGNvbXByZXNzaW9uLiBBCisgICAgICAgIGNvbXByZXNzaW9u IGxldmVsIGNhbiBiZSBvcHRpb25hbGx5IHNwZWNpZmllZCwgYnkgYXBwZW5kaW5nIHRoZSBsZXZl bAorICAgICAgICBudW1iZXIgYWZ0ZXIgYSBjb2xvbiAoPGxpdGVyYWw+OjwvbGl0ZXJhbD4pLiBJ ZiBubyBsZXZlbCBpcyBzcGVjaWZpZWQsCisgICAgICAgIHRoZSBkZWZhdWx0IGNvbXByZXNzaW9u IGxldmVsIHdpbGwgYmUgdXNlZCBmb3IgdGhlIHNwZWNpZmllZCBtZXRob2QuIElmCisgICAgICAg IG9ubHkgYSBsZXZlbCBpcyBzcGVjaWZpZWQgd2l0aG91dCBtZW50aW9uaW5nIGEgbWV0aG9kLAor ICAgICAgICA8bGl0ZXJhbD5nemlwPC9saXRlcmFsPiBjb21wcmVzc2lvbiB3aWxsIGJlIHVzZWQu CiAgICAgICAgPC9wYXJhPgogCiAgICAgICAgPHBhcmE+CkBAIC02NjUsOCArNjY2LDggQEAgUG9z dGdyZVNRTCBkb2N1bWVudGF0aW9uCiAgICAgICAgIGluZGl2aWR1YWwgdGFibGUtZGF0YSBzZWdt ZW50cywgYW5kIHRoZSBkZWZhdWx0IGlzIHRvIGNvbXByZXNzIHVzaW5nCiAgICAgICAgIDxsaXRl cmFsPmd6aXA8L2xpdGVyYWw+IGF0IGEgbW9kZXJhdGUgbGV2ZWwuIEZvciBwbGFpbiB0ZXh0IG91 dHB1dCwKICAgICAgICAgc2V0dGluZyBhIG5vbnplcm8gY29tcHJlc3Npb24gbGV2ZWwgY2F1c2Vz IHRoZSBlbnRpcmUgb3V0cHV0IGZpbGUgdG8gYmUgY29tcHJlc3NlZCwKLSAgICAgICAgYXMgdGhv dWdoIGl0IGhhZCBiZWVuIGZlZCB0aHJvdWdoIDxhcHBsaWNhdGlvbj5nemlwPC9hcHBsaWNhdGlv bj47IGJ1dCB0aGUgZGVmYXVsdAotICAgICAgICBpcyBub3QgdG8gY29tcHJlc3MuCisgICAgICAg IGFzIHRob3VnaCBpdCBoYWQgYmVlbiBmZWQgdGhyb3VnaCA8YXBwbGljYXRpb24+Z3ppcDwvYXBw bGljYXRpb24+IG9yCisgICAgICAgIDxhcHBsaWNhdGlvbj5sejQ8L2FwcGxpY2F0aW9uPjsgYnV0 IHRoZSBkZWZhdWx0IGlzIG5vdCB0byBjb21wcmVzcy4KICAgICAgICA8L3BhcmE+CiAgICAgICAg PHBhcmE+CiAgICAgICAgIFRoZSB0YXIgYXJjaGl2ZSBmb3JtYXQgY3VycmVudGx5IGRvZXMgbm90 IHN1cHBvcnQgY29tcHJlc3Npb24gYXQgYWxsLgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1w L01ha2VmaWxlIGIvc3JjL2Jpbi9wZ19kdW1wL01ha2VmaWxlCmluZGV4IDU2ZTA0MWM5YjMuLjYy NWMwMGIxMjMgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9NYWtlZmlsZQorKysgYi9zcmMv YmluL3BnX2R1bXAvTWFrZWZpbGUKQEAgLTE3LDYgKzE3LDcgQEAgdG9wX2J1aWxkZGlyID0gLi4v Li4vLi4KIGluY2x1ZGUgJCh0b3BfYnVpbGRkaXIpL3NyYy9NYWtlZmlsZS5nbG9iYWwKIAogZXhw b3J0IEdaSVBfUFJPR1JBTT0kKEdaSVApCitleHBvcnQgTFo0CiAKIG92ZXJyaWRlIENQUEZMQUdT IDo9IC1JJChsaWJwcV9zcmNkaXIpICQoQ1BQRkxBR1MpCiBMREZMQUdTX0lOVEVSTkFMICs9IC1M JCh0b3BfYnVpbGRkaXIpL3NyYy9mZV91dGlscyAtbHBnZmV1dGlscyAkKGxpYnBxX3BncG9ydCkK ZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9jb21wcmVzc19pby5jIGIvc3JjL2Jpbi9wZ19k dW1wL2NvbXByZXNzX2lvLmMKaW5kZXggYmFiNzIzYzg0Zi4uOGMzNzJmZjE5NiAxMDA2NDQKLS0t IGEvc3JjL2Jpbi9wZ19kdW1wL2NvbXByZXNzX2lvLmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL2Nv bXByZXNzX2lvLmMKQEAgLTM4LDEzICszOCwxNSBAQAogICogLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQogICoKICAqCVRoZSBjb21wcmVzc2VkIHN0cmVhbSBBUEkgaXMgYSB3cmFwcGVyIGFyb3VuZCB0 aGUgQyBzdGFuZGFyZCBmb3BlbigpIGFuZAotICoJbGlieidzIGd6b3BlbigpIEFQSXMuIEl0IGFs bG93cyB5b3UgdG8gdXNlIHRoZSBzYW1lIGZ1bmN0aW9ucyBmb3IKLSAqCWNvbXByZXNzZWQgYW5k IHVuY29tcHJlc3NlZCBzdHJlYW1zLiBjZm9wZW5fcmVhZCgpIGZpcnN0IHRyaWVzIHRvIG9wZW4K LSAqCXRoZSBmaWxlIHdpdGggZ2l2ZW4gbmFtZSwgYW5kIGlmIGl0IGZhaWxzLCBpdCB0cmllcyB0 byBvcGVuIHRoZSBzYW1lCi0gKglmaWxlIHdpdGggdGhlIC5neiBzdWZmaXguIGNmb3Blbl93cml0 ZSgpIG9wZW5zIGEgZmlsZSBmb3Igd3JpdGluZywgYW4KLSAqCWV4dHJhIGFyZ3VtZW50IHNwZWNp ZmllcyBpZiB0aGUgZmlsZSBzaG91bGQgYmUgY29tcHJlc3NlZCwgYW5kIGFkZHMgdGhlCi0gKgku Z3ogc3VmZml4IHRvIHRoZSBmaWxlbmFtZSBpZiBzby4gVGhpcyBhbGxvd3MgeW91IHRvIGVhc2ls eSBoYW5kbGUgYm90aAotICoJY29tcHJlc3NlZCBhbmQgdW5jb21wcmVzc2VkIGZpbGVzLgorICoJ bGlieidzIGd6b3BlbigpIEFQSXMgYW5kIGN1c3RvbSBMWjQgY2FsbHMgd2hpY2ggcHJvdmlkZSBz aW1pbGFyCisgKglmdW5jdGlvbmFsaXR5LiBJdCBhbGxvd3MgeW91IHRvIHVzZSB0aGUgc2FtZSBm dW5jdGlvbnMgZm9yIGNvbXByZXNzZWQgYW5kCisgKgl1bmNvbXByZXNzZWQgc3RyZWFtcy4gY2Zv cGVuX3JlYWQoKSBmaXJzdCB0cmllcyB0byBvcGVuIHRoZSBmaWxlIHdpdGggZ2l2ZW4KKyAqCW5h bWUsIGFuZCBpZiBpdCBmYWlscywgaXQgdHJpZXMgdG8gb3BlbiB0aGUgc2FtZSBmaWxlIHdpdGgg dGhlIC5neiBzdWZmaXgsCisgKglmYWlsaW5nIHRoYXQgaXQgdHJpZXMgdG8gb3BlbiB0aGUgc2Ft ZSBmaWxlIHdpdGggdGhlIC5sejQgc3VmZml4LgorICoJY2ZvcGVuX3dyaXRlKCkgb3BlbnMgYSBm aWxlIGZvciB3cml0aW5nLCBhbiBleHRyYSBhcmd1bWVudCBzcGVjaWZpZXMgdGhlCisgKgltZXRo b2QgdG8gdXNlIHNob3VsZCB0aGUgZmlsZSBiZSBjb21wcmVzc2VkLCBhbmQgYWRkcyB0aGUgYXBw cm9wcmlhdGUKKyAqCXN1ZmZpeCwgLmd6IG9yIC5sejQsIHRvIHRoZSBmaWxlbmFtZSBpZiBzby4g VGhpcyBhbGxvd3MgeW91IHRvIGVhc2lseSBoYW5kbGUKKyAqCWJvdGggY29tcHJlc3NlZCBhbmQg dW5jb21wcmVzc2VkIGZpbGVzLgogICoKICAqIElERU5USUZJQ0FUSU9OCiAgKgkgICBzcmMvYmlu L3BnX2R1bXAvY29tcHJlc3NfaW8uYwpAQCAtNTYsNiArNTgsMTQgQEAKICNpbmNsdWRlICJjb21w cmVzc19pby5oIgogI2luY2x1ZGUgInBnX2JhY2t1cF91dGlscy5oIgogCisjaWZkZWYgSEFWRV9M SUJMWjQKKyNpbmNsdWRlICJsejQuaCIKKyNpbmNsdWRlICJsejRmcmFtZS5oIgorCisjZGVmaW5l IExaNF9PVVRfU0laRQkoNCAqIDEwMjQpCisjZGVmaW5lIExaNF9JTl9TSVpFCQkoMTYgKiAxMDI0 KQorI2VuZGlmCisKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICogQ29tcHJlc3NvciBBUEkK ICAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNjksOSArNzksOSBAQCBzdHJ1Y3QgQ29tcHJl c3NvclN0YXRlCiAKICNpZmRlZiBIQVZFX0xJQloKIAl6X3N0cmVhbXAJenA7Ci0JY2hhcgkgICAq emxpYk91dDsKLQlzaXplX3QJCXpsaWJPdXRTaXplOwogI2VuZGlmCisJdm9pZAkgICAqb3V0YnVm OworCXNpemVfdAkJb3V0c2l6ZTsKIH07CiAKIC8qIFJvdXRpbmVzIHRoYXQgc3VwcG9ydCB6bGli IGNvbXByZXNzZWQgZGF0YSBJL08gKi8KQEAgLTg1LDYgKzk1LDE1IEBAIHN0YXRpYyB2b2lkIFdy aXRlRGF0YVRvQXJjaGl2ZVpsaWIoQXJjaGl2ZUhhbmRsZSAqQUgsIENvbXByZXNzb3JTdGF0ZSAq Y3MsCiBzdGF0aWMgdm9pZCBFbmRDb21wcmVzc29yWmxpYihBcmNoaXZlSGFuZGxlICpBSCwgQ29t cHJlc3NvclN0YXRlICpjcyk7CiAjZW5kaWYKIAorLyogUm91dGluZXMgdGhhdCBzdXBwb3J0IExa NCBjb21wcmVzc2VkIGRhdGEgSS9PICovCisjaWZkZWYgSEFWRV9MSUJMWjQKK3N0YXRpYyB2b2lk IEluaXRDb21wcmVzc29yTFo0KENvbXByZXNzb3JTdGF0ZSAqY3MpOworc3RhdGljIHZvaWQgUmVh ZERhdGFGcm9tQXJjaGl2ZUxaNChBcmNoaXZlSGFuZGxlICpBSCwgUmVhZEZ1bmMgcmVhZEYpOwor c3RhdGljIHZvaWQgV3JpdGVEYXRhVG9BcmNoaXZlTFo0KEFyY2hpdmVIYW5kbGUgKkFILCBDb21w cmVzc29yU3RhdGUgKmNzLAorCQkJCQkJCQkgIGNvbnN0IGNoYXIgKmRhdGEsIHNpemVfdCBkTGVu KTsKK3N0YXRpYyB2b2lkIEVuZENvbXByZXNzb3JMWjQoQXJjaGl2ZUhhbmRsZSAqQUgsIENvbXBy ZXNzb3JTdGF0ZSAqY3MpOworI2VuZGlmCisKIC8qIFJvdXRpbmVzIHRoYXQgc3VwcG9ydCB1bmNv bXByZXNzZWQgZGF0YSBJL08gKi8KIHN0YXRpYyB2b2lkIFJlYWREYXRhRnJvbUFyY2hpdmVOb25l KEFyY2hpdmVIYW5kbGUgKkFILCBSZWFkRnVuYyByZWFkRik7CiBzdGF0aWMgdm9pZCBXcml0ZURh dGFUb0FyY2hpdmVOb25lKEFyY2hpdmVIYW5kbGUgKkFILCBDb21wcmVzc29yU3RhdGUgKmNzLApA QCAtMTAzLDYgKzEyMiwxMSBAQCBBbGxvY2F0ZUNvbXByZXNzb3IoQ29tcHJlc3Npb25NZXRob2Qg Y29tcHJlc3Npb25NZXRob2QsCiAJaWYgKGNvbXByZXNzaW9uTWV0aG9kID09IENPTVBSRVNTSU9O X0daSVApCiAJCWZhdGFsKCJub3QgYnVpbHQgd2l0aCB6bGliIHN1cHBvcnQiKTsKICNlbmRpZgor I2lmbmRlZiBIQVZFX0xJQkxaNAorCWlmIChjb21wcmVzc2lvbk1ldGhvZCA9PSBDT01QUkVTU0lP Tl9MWjQpCisJCWZhdGFsKCJub3QgYnVpbHQgd2l0aCBMWjQgc3VwcG9ydCIpOworI2VuZGlmCisK IAogCWNzID0gKENvbXByZXNzb3JTdGF0ZSAqKSBwZ19tYWxsb2MwKHNpemVvZihDb21wcmVzc29y U3RhdGUpKTsKIAljcy0+d3JpdGVGID0gd3JpdGVGOwpAQCAtMTE1LDYgKzEzOSwxMCBAQCBBbGxv Y2F0ZUNvbXByZXNzb3IoQ29tcHJlc3Npb25NZXRob2QgY29tcHJlc3Npb25NZXRob2QsCiAJaWYg KGNvbXByZXNzaW9uTWV0aG9kID09IENPTVBSRVNTSU9OX0daSVApCiAJCUluaXRDb21wcmVzc29y WmxpYihjcywgY29tcHJlc3Npb25MZXZlbCk7CiAjZW5kaWYKKyNpZmRlZiBIQVZFX0xJQkxaNAor CWlmIChjb21wcmVzc2lvbk1ldGhvZCA9PSBDT01QUkVTU0lPTl9MWjQpCisJCUluaXRDb21wcmVz c29yTFo0KGNzKTsKKyNlbmRpZgogCiAJcmV0dXJuIGNzOwogfQpAQCAtMTM3LDYgKzE2NSwxMyBA QCBSZWFkRGF0YUZyb21BcmNoaXZlKEFyY2hpdmVIYW5kbGUgKkFILCBDb21wcmVzc2lvbk1ldGhv ZCBjb21wcmVzc2lvbk1ldGhvZCwKIAkJCVJlYWREYXRhRnJvbUFyY2hpdmVabGliKEFILCByZWFk Rik7CiAjZWxzZQogCQkJZmF0YWwoIm5vdCBidWlsdCB3aXRoIHpsaWIgc3VwcG9ydCIpOworI2Vu ZGlmCisJCQlicmVhazsKKwkJY2FzZSBDT01QUkVTU0lPTl9MWjQ6CisjaWZkZWYgSEFWRV9MSUJM WjQKKwkJCVJlYWREYXRhRnJvbUFyY2hpdmVMWjQoQUgsIHJlYWRGKTsKKyNlbHNlCisJCQlmYXRh bCgibm90IGJ1aWx0IHdpdGggbHo0IHN1cHBvcnQiKTsKICNlbmRpZgogCQkJYnJlYWs7CiAJCWRl ZmF1bHQ6CkBAIC0xNTksNiArMTk0LDEzIEBAIFdyaXRlRGF0YVRvQXJjaGl2ZShBcmNoaXZlSGFu ZGxlICpBSCwgQ29tcHJlc3NvclN0YXRlICpjcywKIAkJCVdyaXRlRGF0YVRvQXJjaGl2ZVpsaWIo QUgsIGNzLCBkYXRhLCBkTGVuKTsKICNlbHNlCiAJCQlmYXRhbCgibm90IGJ1aWx0IHdpdGggemxp YiBzdXBwb3J0Iik7CisjZW5kaWYKKwkJCWJyZWFrOworCQljYXNlIENPTVBSRVNTSU9OX0xaNDoK KyNpZmRlZiBIQVZFX0xJQkxaNAorCQkJV3JpdGVEYXRhVG9BcmNoaXZlTFo0KEFILCBjcywgZGF0 YSwgZExlbik7CisjZWxzZQorCQkJZmF0YWwoIm5vdCBidWlsdCB3aXRoIGx6NCBzdXBwb3J0Iik7 CiAjZW5kaWYKIAkJCWJyZWFrOwogCQljYXNlIENPTVBSRVNTSU9OX05PTkU6CkBAIC0xODMsNiAr MjI1LDEzIEBAIEVuZENvbXByZXNzb3IoQXJjaGl2ZUhhbmRsZSAqQUgsIENvbXByZXNzb3JTdGF0 ZSAqY3MpCiAJCQlFbmRDb21wcmVzc29yWmxpYihBSCwgY3MpOwogI2Vsc2UKIAkJCWZhdGFsKCJu b3QgYnVpbHQgd2l0aCB6bGliIHN1cHBvcnQiKTsKKyNlbmRpZgorCQkJYnJlYWs7CisJCWNhc2Ug Q09NUFJFU1NJT05fTFo0OgorI2lmZGVmIEhBVkVfTElCTFo0CisJCQlFbmRDb21wcmVzc29yTFo0 KEFILCBjcyk7CisjZWxzZQorCQkJZmF0YWwoIm5vdCBidWlsdCB3aXRoIGx6NCBzdXBwb3J0Iik7 CiAjZW5kaWYKIAkJCWJyZWFrOwogCQljYXNlIENPTVBSRVNTSU9OX05PTkU6CkBAIC0yMTMsMjAg KzI2MiwyMCBAQCBJbml0Q29tcHJlc3NvclpsaWIoQ29tcHJlc3NvclN0YXRlICpjcywgaW50IGxl dmVsKQogCXpwLT5vcGFxdWUgPSBaX05VTEw7CiAKIAkvKgotCSAqIHpsaWJPdXRTaXplIGlzIHRo ZSBidWZmZXIgc2l6ZSB3ZSB0ZWxsIHpsaWIgaXQgY2FuIG91dHB1dCB0by4gIFdlCisJICogb3V0 c2l6ZSBpcyB0aGUgYnVmZmVyIHNpemUgd2UgdGVsbCB6bGliIGl0IGNhbiBvdXRwdXQgdG8uICBX ZQogCSAqIGFjdHVhbGx5IGFsbG9jYXRlIG9uZSBleHRyYSBieXRlIGJlY2F1c2Ugc29tZSByb3V0 aW5lcyB3YW50IHRvIGFwcGVuZCBhCiAJICogdHJhaWxpbmcgemVybyBieXRlIHRvIHRoZSB6bGli IG91dHB1dC4KIAkgKi8KLQljcy0+emxpYk91dCA9IChjaGFyICopIHBnX21hbGxvYyhaTElCX09V VF9TSVpFICsgMSk7Ci0JY3MtPnpsaWJPdXRTaXplID0gWkxJQl9PVVRfU0laRTsKKwljcy0+b3V0 YnVmID0gcGdfbWFsbG9jKFpMSUJfT1VUX1NJWkUgKyAxKTsKKwljcy0+b3V0c2l6ZSA9IFpMSUJf T1VUX1NJWkU7CiAKIAlpZiAoZGVmbGF0ZUluaXQoenAsIGxldmVsKSAhPSBaX09LKQogCQlmYXRh bCgiY291bGQgbm90IGluaXRpYWxpemUgY29tcHJlc3Npb24gbGlicmFyeTogJXMiLAogCQkJICB6 cC0+bXNnKTsKIAogCS8qIEp1c3QgYmUgcGFyYW5vaWQgLSBtYXliZSBFbmQgaXMgY2FsbGVkIGFm dGVyIFN0YXJ0LCB3aXRoIG5vIFdyaXRlICovCi0JenAtPm5leHRfb3V0ID0gKHZvaWQgKikgY3Mt PnpsaWJPdXQ7Ci0JenAtPmF2YWlsX291dCA9IGNzLT56bGliT3V0U2l6ZTsKKwl6cC0+bmV4dF9v dXQgPSBjcy0+b3V0YnVmOworCXpwLT5hdmFpbF9vdXQgPSBjcy0+b3V0c2l6ZTsKIH0KIAogc3Rh dGljIHZvaWQKQEAgLTI0Myw3ICsyOTIsNyBAQCBFbmRDb21wcmVzc29yWmxpYihBcmNoaXZlSGFu ZGxlICpBSCwgQ29tcHJlc3NvclN0YXRlICpjcykKIAlpZiAoZGVmbGF0ZUVuZCh6cCkgIT0gWl9P SykKIAkJZmF0YWwoImNvdWxkIG5vdCBjbG9zZSBjb21wcmVzc2lvbiBzdHJlYW06ICVzIiwgenAt Pm1zZyk7CiAKLQlmcmVlKGNzLT56bGliT3V0KTsKKwlmcmVlKGNzLT5vdXRidWYpOwogCWZyZWUo Y3MtPnpwKTsKIH0KIApAQCAtMjUxLDcgKzMwMCw3IEBAIHN0YXRpYyB2b2lkCiBEZWZsYXRlQ29t cHJlc3NvclpsaWIoQXJjaGl2ZUhhbmRsZSAqQUgsIENvbXByZXNzb3JTdGF0ZSAqY3MsIGJvb2wg Zmx1c2gpCiB7CiAJel9zdHJlYW1wCXpwID0gY3MtPnpwOwotCWNoYXIJICAgKm91dCA9IGNzLT56 bGliT3V0OworCXZvaWQJICAgKm91dCA9IGNzLT5vdXRidWY7CiAJaW50CQkJcmVzID0gWl9PSzsK IAogCXdoaWxlIChjcy0+enAtPmF2YWlsX2luICE9IDAgfHwgZmx1c2gpCkBAIC0yNTksNyArMzA4 LDcgQEAgRGVmbGF0ZUNvbXByZXNzb3JabGliKEFyY2hpdmVIYW5kbGUgKkFILCBDb21wcmVzc29y U3RhdGUgKmNzLCBib29sIGZsdXNoKQogCQlyZXMgPSBkZWZsYXRlKHpwLCBmbHVzaCA/IFpfRklO SVNIIDogWl9OT19GTFVTSCk7CiAJCWlmIChyZXMgPT0gWl9TVFJFQU1fRVJST1IpCiAJCQlmYXRh bCgiY291bGQgbm90IGNvbXByZXNzIGRhdGE6ICVzIiwgenAtPm1zZyk7Ci0JCWlmICgoZmx1c2gg JiYgKHpwLT5hdmFpbF9vdXQgPCBjcy0+emxpYk91dFNpemUpKQorCQlpZiAoKGZsdXNoICYmICh6 cC0+YXZhaWxfb3V0IDwgY3MtPm91dHNpemUpKQogCQkJfHwgKHpwLT5hdmFpbF9vdXQgPT0gMCkK IAkJCXx8ICh6cC0+YXZhaWxfaW4gIT0gMCkKIAkJCSkKQEAgLTI2OSwxOCArMzE4LDE4IEBAIERl ZmxhdGVDb21wcmVzc29yWmxpYihBcmNoaXZlSGFuZGxlICpBSCwgQ29tcHJlc3NvclN0YXRlICpj cywgYm9vbCBmbHVzaCkKIAkJCSAqIGNodW5rIGlzIHRoZSBFT0YgbWFya2VyIGluIHRoZSBjdXN0 b20gZm9ybWF0LiBUaGlzIHNob3VsZCBuZXZlcgogCQkJICogaGFwcGVuIGJ1dC4uLgogCQkJICov Ci0JCQlpZiAoenAtPmF2YWlsX291dCA8IGNzLT56bGliT3V0U2l6ZSkKKwkJCWlmICh6cC0+YXZh aWxfb3V0IDwgY3MtPm91dHNpemUpCiAJCQl7CiAJCQkJLyoKIAkJCQkgKiBBbnkgd3JpdGUgZnVu Y3Rpb24gc2hvdWxkIGRvIGl0cyBvd24gZXJyb3IgY2hlY2tpbmcgYnV0IHRvCiAJCQkJICogbWFr ZSBzdXJlIHdlIGRvIGEgY2hlY2sgaGVyZSBhcyB3ZWxsLi4uCiAJCQkJICovCi0JCQkJc2l6ZV90 CQlsZW4gPSBjcy0+emxpYk91dFNpemUgLSB6cC0+YXZhaWxfb3V0OworCQkJCXNpemVfdAkJbGVu ID0gY3MtPm91dHNpemUgLSB6cC0+YXZhaWxfb3V0OwogCi0JCQkJY3MtPndyaXRlRihBSCwgb3V0 LCBsZW4pOworCQkJCWNzLT53cml0ZUYoQUgsIChjaGFyICopb3V0LCBsZW4pOwogCQkJfQotCQkJ enAtPm5leHRfb3V0ID0gKHZvaWQgKikgb3V0OwotCQkJenAtPmF2YWlsX291dCA9IGNzLT56bGli T3V0U2l6ZTsKKwkJCXpwLT5uZXh0X291dCA9IG91dDsKKwkJCXpwLT5hdmFpbF9vdXQgPSBjcy0+ b3V0c2l6ZTsKIAkJfQogCiAJCWlmIChyZXMgPT0gWl9TVFJFQU1fRU5EKQpAQCAtMzY0LDYgKzQx Myw3MSBAQCBSZWFkRGF0YUZyb21BcmNoaXZlWmxpYihBcmNoaXZlSGFuZGxlICpBSCwgUmVhZEZ1 bmMgcmVhZEYpCiB9CiAjZW5kaWYJCQkJCQkJLyogSEFWRV9MSUJaICovCiAKKyNpZmRlZiBIQVZF X0xJQkxaNAorc3RhdGljIHZvaWQKK0luaXRDb21wcmVzc29yTFo0KENvbXByZXNzb3JTdGF0ZSAq Y3MpCit7CisJLyogV2lsbCBiZSBsYXp5IGluaXQnZCAqLworCWNzLT5vdXRidWYgPSBOVUxMOwor CWNzLT5vdXRzaXplID0gMDsKK30KKworc3RhdGljIHZvaWQKK0VuZENvbXByZXNzb3JMWjQoQXJj aGl2ZUhhbmRsZSAqQUgsIENvbXByZXNzb3JTdGF0ZSAqY3MpCit7CisJcGdfZnJlZShjcy0+b3V0 YnVmKTsKKworCWNzLT5vdXRidWYgPSBOVUxMOworCWNzLT5vdXRzaXplID0gMDsKK30KKworc3Rh dGljIHZvaWQKK1JlYWREYXRhRnJvbUFyY2hpdmVMWjQoQXJjaGl2ZUhhbmRsZSAqQUgsIFJlYWRG dW5jIHJlYWRGKQoreworCUxaNF9zdHJlYW1EZWNvZGVfdCBsejRTdHJlYW1EZWNvZGU7CisJY2hh cgkgICAqYnVmOworCWNoYXIJICAgKmRlY2J1ZjsKKwlzaXplX3QJCWJ1ZmxlbjsKKwlzaXplX3QJ CWNudDsKKworCWJ1ZmxlbiA9ICg0ICogMTAyNCkgKyAxOworCWJ1ZiA9IHBnX21hbGxvYyhidWZs ZW4pOworCWRlY2J1ZiA9IHBnX21hbGxvYyhidWZsZW4pOworCisJTFo0X3NldFN0cmVhbURlY29k ZSgmbHo0U3RyZWFtRGVjb2RlLCBOVUxMLCAwKTsKKworCXdoaWxlICgoY250ID0gcmVhZEYoQUgs ICZidWYsICZidWZsZW4pKSkKKwl7CisJCWludAkJZGVjQnl0ZXMgPSBMWjRfZGVjb21wcmVzc19z YWZlX2NvbnRpbnVlKCZsejRTdHJlYW1EZWNvZGUsCisJCQkJCQkJCQkJCQkJCWJ1ZiwgZGVjYnVm LAorCQkJCQkJCQkJCQkJCQljbnQsIGJ1Zmxlbik7CisKKwkJYWh3cml0ZShkZWNidWYsIDEsIGRl Y0J5dGVzLCBBSCk7CisJfQorfQorCitzdGF0aWMgdm9pZAorV3JpdGVEYXRhVG9BcmNoaXZlTFo0 KEFyY2hpdmVIYW5kbGUgKkFILCBDb21wcmVzc29yU3RhdGUgKmNzLAorCQkJCQkgIGNvbnN0IGNo YXIgKmRhdGEsIHNpemVfdCBkTGVuKQoreworCXNpemVfdAkJY29tcHJlc3NlZDsKKwlzaXplX3QJ CXJlcXVpcmVkc2l6ZSA9IExaNF9jb21wcmVzc0JvdW5kKGRMZW4pOworCisJaWYgKHJlcXVpcmVk c2l6ZSA+IGNzLT5vdXRzaXplKQorCXsKKwkJY3MtPm91dGJ1ZiA9IHBnX3JlYWxsb2MoY3MtPm91 dGJ1ZiwgcmVxdWlyZWRzaXplKTsKKwkJY3MtPm91dHNpemUgPSByZXF1aXJlZHNpemU7CisJfQor CisJY29tcHJlc3NlZCA9IExaNF9jb21wcmVzc19kZWZhdWx0KGRhdGEsIGNzLT5vdXRidWYsCisJ CQkJCQkJCQkgIGRMZW4sIGNzLT5vdXRzaXplKTsKKworCWlmIChjb21wcmVzc2VkIDw9IDApCisJ CWZhdGFsKCJmYWlsZWQgdG8gTFo0IGNvbXByZXNzIGRhdGEiKTsKKworCWNzLT53cml0ZUYoQUgs IGNzLT5vdXRidWYsIGNvbXByZXNzZWQpOworfQorI2VuZGlmCQkJCQkJCS8qIEhBVkVfTElCTFo0 ICovCiAKIC8qCiAgKiBGdW5jdGlvbnMgZm9yIHVuY29tcHJlc3NlZCBvdXRwdXQuCkBAIC00MDAs OSArNTE0LDM2IEBAIFdyaXRlRGF0YVRvQXJjaGl2ZU5vbmUoQXJjaGl2ZUhhbmRsZSAqQUgsIENv bXByZXNzb3JTdGF0ZSAqY3MsCiAgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqLwogCisjaWZk ZWYgSEFWRV9MSUJMWjQKIC8qCi0gKiBjZnAgcmVwcmVzZW50cyBhbiBvcGVuIHN0cmVhbSwgd3Jh cHBpbmcgdGhlIHVuZGVybHlpbmcgRklMRSBvciBnekZpbGUKLSAqIHBvaW50ZXIuIFRoaXMgaXMg b3BhcXVlIHRvIHRoZSBjYWxsZXJzLgorICogU3RhdGUgbmVlZGVkIGZvciBMWjQgKGRlKWNvbXBy ZXNzaW9uIHVzaW5nIHRoZSBjZnAgQVBJLgorICovCit0eXBlZGVmIHN0cnVjdCBMWjRGaWxlCit7 CisJRklMRQkqZnA7CisKKwlMWjRGX3ByZWZlcmVuY2VzX3QJCQlwcmVmczsKKworCUxaNEZfY29t cHJlc3Npb25Db250ZXh0X3QJY3R4OworCUxaNEZfZGVjb21wcmVzc2lvbkNvbnRleHRfdAlkdHg7 CisKKwlib29sCWluaXRlZDsKKwlib29sCWNvbXByZXNzaW5nOworCisJc2l6ZV90CWJ1ZmxlbjsK KwljaGFyICAgKmJ1ZmZlcjsKKworCXNpemVfdCAgb3ZlcmZsb3dhbGxvY2xlbjsKKwlzaXplX3QJ b3ZlcmZsb3dsZW47CisJY2hhciAgICpvdmVyZmxvd2J1ZjsKKworCXNpemVfdAllcnJjb2RlOwor fSBMWjRGaWxlOworI2VuZGlmCisKKy8qCisgKiBjZnAgcmVwcmVzZW50cyBhbiBvcGVuIHN0cmVh bSwgd3JhcHBpbmcgdGhlIHVuZGVybHlpbmcgRklMRSwgZ3pGaWxlCisgKiBwb2ludGVyLCBvciBM WjRGaWxlIHBvaW50ZXIuIFRoaXMgaXMgb3BhcXVlIHRvIHRoZSBjYWxsZXJzLgogICovCiBzdHJ1 Y3QgY2ZwCiB7CkBAIC00MTAsOSArNTUxLDcgQEAgc3RydWN0IGNmcAogCXZvaWQJICAgKmZwOwog fTsKIAotI2lmZGVmIEhBVkVfTElCWgogc3RhdGljIGludAloYXNTdWZmaXgoY29uc3QgY2hhciAq ZmlsZW5hbWUsIGNvbnN0IGNoYXIgKnN1ZmZpeCk7Ci0jZW5kaWYKIAogLyogZnJlZSgpIHdpdGhv dXQgY2hhbmdpbmcgZXJybm87IHVzZWZ1bCBpbiBzZXZlcmFsIHBsYWNlcyBiZWxvdyAqLwogc3Rh dGljIHZvaWQKQEAgLTQyNCwyNiArNTYzLDM4MCBAQCBmcmVlX2tlZXBfZXJybm8odm9pZCAqcCkK IAllcnJubyA9IHNhdmVfZXJybm87CiB9CiAKKyNpZmRlZiBIQVZFX0xJQkxaNAorLyoKKyAqIExa NCBlcXVpdmFsZW50IHRvIGZlb2YoKSBvciBnemVvZigpLiBUaGUgZW5kIG9mIGZpbGUKKyAqIGlz IHJlYWNoZWQgaWYgdGhlcmUgaXMgbm8gZGVjb21wcmVzc2VkIG91dHB1dCBpbiB0aGUKKyAqIG92 ZXJmbG93IGJ1ZmZlciBhbmQgdGhlIGVuZCBvZiB0aGUgZmlsZSBpcyByZWFjaGVkLgorICovCitz dGF0aWMgaW50CitMWjRGaWxlX2VvZihMWjRGaWxlICpmcykKK3sKKwlyZXR1cm4gZnMtPm92ZXJm bG93bGVuID09IDAgJiYgZmVvZihmcy0+ZnApOworfQorCitzdGF0aWMgY29uc3QgY2hhciAqCitM WjRGaWxlX2Vycm9yKExaNEZpbGUgKmZzKQoreworCWNvbnN0IGNoYXIgKmVycm1zZzsKKworCWlm IChMWjRGX2lzRXJyb3IoZnMtPmVycmNvZGUpKQorCQllcnJtc2cgPSBMWjRGX2dldEVycm9yTmFt ZShmcy0+ZXJyY29kZSk7CisJZWxzZQorCQllcnJtc2cgPSBzdHJlcnJvcihlcnJubyk7CisKKwly ZXR1cm4gZXJybXNnOworfQorCisvKgorICogUHJlcGFyZSBhbiBhbHJlYWR5IGFsbG9jJ2VkIExa NEZpbGUgc3RydWN0IGZvciBzdWJzZXF1ZW50IGNhbGxzLgorICoKKyAqIEl0IGNyZWF0ZXMgdGhl IG5lY2Vzc2FyeSBjb250ZXh0cyBmb3IgdGhlIG9wZXJhdGlvbnMuIFdoZW4gY29tcHJlc3Npbmcs CisgKiBpdCBhZGRpdGlvbmFsbHkgd3JpdGVzIHRoZSBMWjQgaGVhZGVyIGluIHRoZSBvdXRwdXQg c3RyZWFtLgorICovCitzdGF0aWMgaW50CitMWjRGaWxlX2luaXQoTFo0RmlsZSAqZnMsIGludCBz aXplLCBib29sIGNvbXByZXNzaW5nKQoreworCXNpemVfdAlzdGF0dXM7CisKKwlpZiAoZnMtPmlu aXRlZCkKKwkJcmV0dXJuIDA7CisKKwlmcy0+Y29tcHJlc3NpbmcgPSBjb21wcmVzc2luZzsKKwlm cy0+aW5pdGVkID0gdHJ1ZTsKKworCWlmIChmcy0+Y29tcHJlc3NpbmcpCisJeworCQlmcy0+YnVm bGVuID0gTFo0Rl9jb21wcmVzc0JvdW5kKExaNF9JTl9TSVpFLCAmZnMtPnByZWZzKTsKKwkJaWYg KGZzLT5idWZsZW4gPCBMWjRGX0hFQURFUl9TSVpFX01BWCkKKwkJCWZzLT5idWZsZW4gPSBMWjRG X0hFQURFUl9TSVpFX01BWDsKKworCQlzdGF0dXMgPSBMWjRGX2NyZWF0ZUNvbXByZXNzaW9uQ29u dGV4dCgmZnMtPmN0eCwgTFo0Rl9WRVJTSU9OKTsKKwkJaWYgKExaNEZfaXNFcnJvcihzdGF0dXMp KQorCQl7CisJCQlmcy0+ZXJyY29kZSA9IHN0YXR1czsKKwkJCXJldHVybiAxOworCQl9CisKKwkJ ZnMtPmJ1ZmZlciA9IHBnX21hbGxvYyhmcy0+YnVmbGVuKTsKKwkJc3RhdHVzID0gTFo0Rl9jb21w cmVzc0JlZ2luKGZzLT5jdHgsIGZzLT5idWZmZXIsIGZzLT5idWZsZW4sICZmcy0+cHJlZnMpOwor CisJCWlmIChMWjRGX2lzRXJyb3Ioc3RhdHVzKSkKKwkJeworCQkJZnMtPmVycmNvZGUgPSBzdGF0 dXM7CisJCQlyZXR1cm4gMTsKKwkJfQorCisJCWlmIChmd3JpdGUoZnMtPmJ1ZmZlciwgMSwgc3Rh dHVzLCBmcy0+ZnApICE9IHN0YXR1cykKKwkJeworCQkJZXJybm8gPSBlcnJubyA/IDogRU5PU1BD OworCQkJcmV0dXJuIDE7CisJCX0KKwl9CisJZWxzZQorCXsKKwkJc3RhdHVzID0gTFo0Rl9jcmVh dGVEZWNvbXByZXNzaW9uQ29udGV4dCgmZnMtPmR0eCwgTFo0Rl9WRVJTSU9OKTsKKwkJaWYgKExa NEZfaXNFcnJvcihzdGF0dXMpKQorCQl7CisJCQlmcy0+ZXJyY29kZSA9IHN0YXR1czsKKwkJCXJl dHVybiAxOworCQl9CisKKwkJZnMtPmJ1ZmxlbiA9IHNpemUgPiBMWjRfT1VUX1NJWkUgPyBzaXpl IDogTFo0X09VVF9TSVpFOworCQlmcy0+YnVmZmVyID0gcGdfbWFsbG9jKGZzLT5idWZsZW4pOwor CisJCWZzLT5vdmVyZmxvd2FsbG9jbGVuID0gZnMtPmJ1ZmxlbjsKKwkJZnMtPm92ZXJmbG93YnVm ID0gcGdfbWFsbG9jKGZzLT5vdmVyZmxvd2FsbG9jbGVuKTsKKwkJZnMtPm92ZXJmbG93bGVuID0g MDsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworLyoKKyAqIFJlYWQgYWxyZWFkeSBkZWNvbXByZXNz ZWQgY29udGVudCBmcm9tIHRoZSBvdmVyZmxvdyBidWZmZXIgaW50byAncHRyJyB1cCB0bworICog J3NpemUnIGJ5dGVzLCBpZiBhdmFpbGFibGUuIElmIHRoZSBlb2xfZmxhZyBpcyBzZXQsIHRoZW4g c3RvcCBhdCB0aGUgZmlyc3QKKyAqIG9jY3VyYW5jZSBvZiB0aGUgbmV3IGxpbmUgY2hhciBwcmlv ciB0byAnc2l6ZScgYnl0ZXMuCisgKgorICogQW55IHVucmVhZCBjb250ZW50IGluIHRoZSBvdmVy ZmxvdyBidWZmZXIsIGlzIG1vdmVkIHRvIHRoZSBiZWdpbm5pbmcuCisgKi8KK3N0YXRpYyBpbnQK K0xaNEZpbGVfcmVhZF9vdmVyZmxvdyhMWjRGaWxlICpmcywgdm9pZCAqcHRyLCBpbnQgc2l6ZSwg Ym9vbCBlb2xfZmxhZykKK3sKKwljaGFyICAgKnA7CisJaW50CQlyZWFkbGVuID0gMDsKKworCWlm IChmcy0+b3ZlcmZsb3dsZW4gPT0gMCkKKwkJcmV0dXJuIDA7CisKKwlpZiAoZnMtPm92ZXJmbG93 bGVuID49IHNpemUpCisJCXJlYWRsZW4gPSBzaXplOworCWVsc2UKKwkJcmVhZGxlbiA9IGZzLT5v dmVyZmxvd2xlbjsKKworCWlmIChlb2xfZmxhZyAmJiAocCA9IG1lbWNocihmcy0+b3ZlcmZsb3di dWYsICdcbicsIHJlYWRsZW4pKSkKKwkJcmVhZGxlbiA9IHAgLSBmcy0+b3ZlcmZsb3didWYgKyAx OyAvKiBJbmNsdWRlIHRoZSBsaW5lIHRlcm1pbmF0aW5nIGNoYXIgKi8KKworCW1lbWNweShwdHIs IGZzLT5vdmVyZmxvd2J1ZiwgcmVhZGxlbik7CisJZnMtPm92ZXJmbG93bGVuIC09IHJlYWRsZW47 CisKKwlpZiAoZnMtPm92ZXJmbG93bGVuID4gMCkKKwkJbWVtbW92ZShmcy0+b3ZlcmZsb3didWYs IGZzLT5vdmVyZmxvd2J1ZiArIHJlYWRsZW4sIGZzLT5vdmVyZmxvd2xlbik7CisKKwlyZXR1cm4g cmVhZGxlbjsKK30KKworLyoKKyAqIFRoZSB3b3JraG9yc2UgZm9yIHJlYWRpbmcgZGVjb21wcmVz c2VkIGNvbnRlbnQgb3V0IG9mIGFuIExaNCBjb21wcmVzc2VkCisgKiBzdHJlYW0uCisgKgorICog SXQgd2lsbCByZWFkIHVwIHRvICdwdHJzaXplJyBkZWNvbXByZXNzZWQgY29udGVudCwgb3IgdXAg dG8gdGhlIG5ldyBsaW5lIGNoYXIKKyAqIGlmIGZvdW5kIGZpcnN0IHdoZW4gdGhlIGVvbF9mbGFn IGlzIHNldC4gSXQgaXMgcG9zc2libGUgdGhhdCB0aGUgZGVjb21wcmVzc2VkCisgKiBvdXRwdXQg Z2VuZXJhdGVkIGJ5IHJlYWRpbmcgYW55IGNvbXByZXNzZWQgaW5wdXQgdmlhIHRoZSBMWjRGIEFQ SSwgZXhjZWVkcworICogJ3B0cnNpemUnLiBBbnkgZXhjZWVkaW5nIGRlY29tcHJlc3NlZCBjb250 ZW50IGlzIHN0b3JlZCBhdCBhbiBvdmVyZmxvdworICogYnVmZmVyIHdpdGhpbiBMWjRGaWxlLiBP ZiBjb3Vyc2UsIHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZCwgaXQgd2lsbCBmaXJzdAorICog dHJ5IHRvIGNvbnN1bWUgYW55IGRlY29tcHJlc3NlZCBjb250ZW50IGFscmVhZHkgcHJlc2VudCBp biB0aGUgb3ZlcmZsb3cKKyAqIGJ1ZmZlciwgYmVmb3JlIGRlY29tcHJlc3NpbmcgbmV3IGNvbnRl bnQuCisgKi8KK3N0YXRpYyBpbnQKK0xaNEZpbGVfcmVhZChMWjRGaWxlICpmcywgdm9pZCAqcHRy LCBpbnQgcHRyc2l6ZSwgYm9vbCBlb2xfZmxhZykKK3sKKwlzaXplX3QJZHNpemUgPSAwOworCXNp emVfdCAgcnNpemU7CisJc2l6ZV90CXNpemUgPSBwdHJzaXplOworCWJvb2wJZW9sX2ZvdW5kID0g ZmFsc2U7CisKKwl2b2lkICpyZWFkYnVmOworCisJLyogTGF6eSBpbml0ICovCisJaWYgKCFmcy0+ aW5pdGVkICYmIExaNEZpbGVfaW5pdChmcywgc2l6ZSwgZmFsc2UgLyogZGVjb21wcmVzc2luZyAq LykpCisJCXJldHVybiAtMTsKKworCS8qIFZlcmZpeSB0aGF0IHRoZXJlIGlzIGVub3VnaCBzcGFj ZSBpbiB0aGUgb3V0YnVmICovCisJaWYgKHNpemUgPiBmcy0+YnVmbGVuKQorCXsKKwkJZnMtPmJ1 ZmxlbiA9IHNpemU7CisJCWZzLT5idWZmZXIgPSBwZ19yZWFsbG9jKGZzLT5idWZmZXIsIHNpemUp OworCX0KKworCS8qIHVzZSBhbHJlYWR5IGRlY29tcHJlc3NlZCBjb250ZW50IGlmIGF2YWlsYWJs ZSAqLworCWRzaXplID0gTFo0RmlsZV9yZWFkX292ZXJmbG93KGZzLCBwdHIsIHNpemUsIGVvbF9m bGFnKTsKKwlpZiAoZHNpemUgPT0gc2l6ZSB8fCAoZW9sX2ZsYWcgJiYgbWVtY2hyKHB0ciwgJ1xu JywgZHNpemUpKSkKKwkJcmV0dXJuIGRzaXplOworCisJcmVhZGJ1ZiA9IHBnX21hbGxvYyhzaXpl KTsKKworCWRvCisJeworCQljaGFyICAgKnJwOworCQljaGFyICAgKnJlbmQ7CisKKwkJcnNpemUg PSBmcmVhZChyZWFkYnVmLCAxLCBzaXplLCBmcy0+ZnApOworCQlpZiAocnNpemUgPCBzaXplICYm ICFmZW9mKGZzLT5mcCkpCisJCQlyZXR1cm4gLTE7CisKKwkJcnAgPSAoY2hhciAqKXJlYWRidWY7 CisJCXJlbmQgPSAoY2hhciAqKXJlYWRidWYgKyByc2l6ZTsKKworCQl3aGlsZSAocnAgPCByZW5k KQorCQl7CisJCQlzaXplX3QJc3RhdHVzOworCQkJc2l6ZV90CW91dGxlbiA9IGZzLT5idWZsZW47 CisJCQlzaXplX3QJcmVhZF9yZW1haW4gPSByZW5kIC0gcnA7CisKKwkJCW1lbXNldChmcy0+YnVm ZmVyLCAwLCBvdXRsZW4pOworCQkJc3RhdHVzID0gTFo0Rl9kZWNvbXByZXNzKGZzLT5kdHgsIGZz LT5idWZmZXIsICZvdXRsZW4sCisJCQkJCQkJCQkgcnAsICZyZWFkX3JlbWFpbiwgTlVMTCk7CisJ CQlpZiAoTFo0Rl9pc0Vycm9yKHN0YXR1cykpCisJCQl7CisJCQkJZnMtPmVycmNvZGUgPSBzdGF0 dXM7CisJCQkJcmV0dXJuIC0xOworCQkJfQorCisJCQlycCArPSByZWFkX3JlbWFpbjsKKworCQkJ LyoKKwkJCSAqIGZpbGwgaW4gd2hhdCBzcGFjZSBpcyBhdmFpbGFibGUgaW4gcHRyCisJCQkgKiBp ZiB0aGUgZW9sIGZsYWcgaXMgc2V0LCBlaXRoZXIgc2tpcCBpZiBvbmUgYWxyZWFkeSBmb3VuZCBv ciBmaWxsIHVwIHRvIEVPTAorCQkJICogaWYgcHJlc2VudCBpbiB0aGUgb3V0YnVmCisJCQkgKi8K KwkJCWlmIChvdXRsZW4gPiAwICYmIGRzaXplIDwgc2l6ZSAmJiBlb2xfZm91bmQgPT0gZmFsc2Up CisJCQl7CisJCQkJY2hhciAgICpwOworCQkJCXNpemVfdAlsaWIgPSAoZW9sX2ZsYWcgPT0gMCkg PyBzaXplIC0gZHNpemUgOiBzaXplIC0xIC1kc2l6ZTsKKwkJCQlzaXplX3QJbGVuID0gb3V0bGVu IDwgbGliID8gb3V0bGVuIDogbGliOworCisJCQkJaWYgKGVvbF9mbGFnID09IHRydWUgJiYgKHAg PSBtZW1jaHIoZnMtPmJ1ZmZlciwgJ1xuJywgb3V0bGVuKSkgJiYKKwkJCQkJKHNpemVfdCkocCAt IGZzLT5idWZmZXIgKyAxKSA8PSBsZW4pCisJCQkJeworCQkJCQlsZW4gPSBwIC0gZnMtPmJ1ZmZl ciArIDE7CisJCQkJCWVvbF9mb3VuZCA9IHRydWU7CisJCQkJfQorCisJCQkJbWVtY3B5KChjaGFy ICopcHRyICsgZHNpemUsIGZzLT5idWZmZXIsIGxlbik7CisJCQkJZHNpemUgKz0gbGVuOworCisJ CQkJLyogbW92ZSB3aGF0IGRpZCBub3QgZml0LCBpZiBhbnksIGF0IHRoZSBiZWdpbmluZyBvZiB0 aGUgYnVmICovCisJCQkJaWYgKGxlbiA8IG91dGxlbikKKwkJCQkJbWVtbW92ZShmcy0+YnVmZmVy LCBmcy0+YnVmZmVyICsgbGVuLCBvdXRsZW4gLSBsZW4pOworCQkJCW91dGxlbiAtPSBsZW47CisJ CQl9CisKKwkJCS8qIGlmIHRoZXJlIGlzIGF2YWlsYWJsZSBvdXRwdXQsIHNhdmUgaXQgKi8KKwkJ CWlmIChvdXRsZW4gPiAwKQorCQkJeworCQkJCXdoaWxlIChmcy0+b3ZlcmZsb3dsZW4gKyBvdXRs ZW4gPiBmcy0+b3ZlcmZsb3dhbGxvY2xlbikKKwkJCQl7CisJCQkJCWZzLT5vdmVyZmxvd2FsbG9j bGVuICo9IDI7CisJCQkJCWZzLT5vdmVyZmxvd2J1ZiA9IHBnX3JlYWxsb2MoZnMtPm92ZXJmbG93 YnVmLCBmcy0+b3ZlcmZsb3dhbGxvY2xlbik7CisJCQkJfQorCisJCQkJbWVtY3B5KGZzLT5vdmVy Zmxvd2J1ZiArIGZzLT5vdmVyZmxvd2xlbiwgZnMtPmJ1ZmZlciwgb3V0bGVuKTsKKwkJCQlmcy0+ b3ZlcmZsb3dsZW4gKz0gb3V0bGVuOworCQkJfQorCQl9CisJfSB3aGlsZSAocnNpemUgPT0gc2l6 ZSAmJiBkc2l6ZSA8IHNpemUgJiYgZW9sX2ZvdW5kID09IDApOworCisJcGdfZnJlZShyZWFkYnVm KTsKKworCXJldHVybiAoaW50KWRzaXplOworfQorCisvKgorICogQ29tcHJlc3Mgc2l6ZSBieXRl cyBmcm9tIHB0ciBhbmQgd3JpdGUgdGhlbSB0byB0aGUgc3RyZWFtLgorICovCitzdGF0aWMgaW50 CitMWjRGaWxlX3dyaXRlKExaNEZpbGUgKmZzLCBjb25zdCB2b2lkICpwdHIsIGludCBzaXplKQor eworCXNpemVfdAlzdGF0dXM7CisJaW50CQlyZW1haW5pbmcgPSBzaXplOworCisJaWYgKCFmcy0+ aW5pdGVkICYmIExaNEZpbGVfaW5pdChmcywgc2l6ZSwgdHJ1ZSkpCisJCXJldHVybiAtMTsKKwor CXdoaWxlIChyZW1haW5pbmcgPiAwKQorCXsKKwkJaW50CQljaHVuayA9IHJlbWFpbmluZyA8IExa NF9JTl9TSVpFID8gcmVtYWluaW5nIDogTFo0X0lOX1NJWkU7CisJCXJlbWFpbmluZyAtPSBjaHVu azsKKworCQlzdGF0dXMgPSBMWjRGX2NvbXByZXNzVXBkYXRlKGZzLT5jdHgsIGZzLT5idWZmZXIs IGZzLT5idWZsZW4sCisJCQkJCQkJCQkgcHRyLCBjaHVuaywgTlVMTCk7CisJCWlmIChMWjRGX2lz RXJyb3Ioc3RhdHVzKSkKKwkJeworCQkJZnMtPmVycmNvZGUgPSBzdGF0dXM7CisJCQlyZXR1cm4g LTE7CisJCX0KKworCQlpZiAoZndyaXRlKGZzLT5idWZmZXIsIDEsIHN0YXR1cywgZnMtPmZwKSAh PSBzdGF0dXMpCisJCXsKKwkJCWVycm5vID0gZXJybm8gPyA6IEVOT1NQQzsKKwkJCXJldHVybiAx OworCQl9CisJfQorCisJcmV0dXJuIHNpemU7Cit9CisKKy8qCisgKiBmZ2V0YygpIGFuZCBnemdl dGMoKSBlcXVpdmFsZW50IGltcGxlbWVudGF0aW9uIGZvciBMWjQgY29tcHJlc3NlZCBmaWxlcy4K KyAqLworc3RhdGljIGludAorTFo0RmlsZV9nZXRjKExaNEZpbGUgKmZzKQoreworCXVuc2lnbmVk IGNoYXIgYzsKKworCWlmIChMWjRGaWxlX3JlYWQoZnMsICZjLCAxLCBmYWxzZSkgIT0gMSkKKwkJ cmV0dXJuIEVPRjsKKworCXJldHVybiBjOworfQorCisvKgorICogZmdldHMoKSBhbmQgZ3pnZXRz KCkgZXF1aXZhbGVudCBpbXBsZW1lbnRhdGlvbiBmb3IgTFo0IGNvbXByZXNzZWQgZmlsZXMuCisg Ki8KK3N0YXRpYyBjaGFyICoKK0xaNEZpbGVfZ2V0cyhMWjRGaWxlICpmcywgY2hhciAqYnVmLCBp bnQgbGVuKQoreworCXNpemVfdAlkc2l6ZTsKKworCWRzaXplID0gTFo0RmlsZV9yZWFkKGZzLCBi dWYsIGxlbiwgdHJ1ZSk7CisJaWYgKGRzaXplIDwgMCkKKwkJZmF0YWwoImZhaWxlZCB0byByZWFk IGZyb20gYXJjaGl2ZSAlcyIsIExaNEZpbGVfZXJyb3IoZnMpKTsKKworCS8qIERvbmUgcmVhZGlu ZyAqLworCWlmIChkc2l6ZSA9PSAwKQorCQlyZXR1cm4gTlVMTDsKKworCXJldHVybiBidWY7Cit9 CisKKy8qCisgKiBGaW5hbGl6ZSAoZGUpY29tcHJlc3Npb24gb2YgYSBzdHJlYW0uIFdoZW4gY29t cHJlc3NpbmcgaXQgd2lsbCB3cml0ZSBhbnkKKyAqIHJlbWFpbmluZyBjb250ZW50IGFuZC9vciBn ZW5lcmF0ZWQgZm9vdGVyIGZyb20gdGhlIExaNCBBUEkuCisgKi8KK3N0YXRpYyBpbnQKK0xaNEZp bGVfY2xvc2UoTFo0RmlsZSAqZnMpCit7CisJRklMRQkqZnA7CisJc2l6ZV90CXN0YXR1czsKKwlp bnQJCXJldDsKKworCWZwID0gZnMtPmZwOworCWlmIChmcy0+aW5pdGVkKQorCXsKKwkJaWYgKGZz LT5jb21wcmVzc2luZykKKwkJeworCQkJc3RhdHVzID0gTFo0Rl9jb21wcmVzc0VuZChmcy0+Y3R4 LCBmcy0+YnVmZmVyLCBmcy0+YnVmbGVuLCBOVUxMKTsKKwkJCWlmIChMWjRGX2lzRXJyb3Ioc3Rh dHVzKSkKKwkJCQlmYXRhbCgiZmFpbGVkIHRvIGVuZCBjb21wcmVzc2lvbjogJXMiLCBMWjRGX2dl dEVycm9yTmFtZShzdGF0dXMpKTsKKwkJCWVsc2UgaWYgKChyZXQgPSBmd3JpdGUoZnMtPmJ1ZmZl ciwgMSwgc3RhdHVzLCBmcy0+ZnApKSAhPSBzdGF0dXMpCisJCQl7CisJCQkJZXJybm8gPSBlcnJu byA/IDogRU5PU1BDOworCQkJCVdSSVRFX0VSUk9SX0VYSVQ7CisJCQl9CisKKwkJCXN0YXR1cyA9 IExaNEZfZnJlZUNvbXByZXNzaW9uQ29udGV4dChmcy0+Y3R4KTsKKwkJCWlmIChMWjRGX2lzRXJy b3Ioc3RhdHVzKSkKKwkJCQlmYXRhbCgiZmFpbGVkIHRvIGVuZCBjb21wcmVzc2lvbjogJXMiLCBM WjRGX2dldEVycm9yTmFtZShzdGF0dXMpKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCXN0YXR1cyA9 IExaNEZfZnJlZURlY29tcHJlc3Npb25Db250ZXh0KGZzLT5kdHgpOworCQkJaWYgKExaNEZfaXNF cnJvcihzdGF0dXMpKQorCQkJCWZhdGFsKCJmYWlsZWQgdG8gZW5kIGRlY29tcHJlc3Npb246ICVz IiwgTFo0Rl9nZXRFcnJvck5hbWUoc3RhdHVzKSk7CisJCQlwZ19mcmVlKGZzLT5vdmVyZmxvd2J1 Zik7CisJCX0KKworCQlwZ19mcmVlKGZzLT5idWZmZXIpOworCX0KKworCXBnX2ZyZWUoZnMpOwor CisJcmV0dXJuIGZjbG9zZShmcCk7Cit9CisjZW5kaWYKKwogLyoKICAqIE9wZW4gYSBmaWxlIGZv ciByZWFkaW5nLiAncGF0aCcgaXMgdGhlIGZpbGUgdG8gb3BlbiwgYW5kICdtb2RlJyBzaG91bGQK ICAqIGJlIGVpdGhlciAiciIgb3IgInJiIi4KICAqCi0gKiBJZiB0aGUgZmlsZSBhdCAncGF0aCcg ZG9lcyBub3QgZXhpc3QsIHdlIGFwcGVuZCB0aGUgIi5neiIgc3VmZml4IChpZiAncGF0aCcKLSAq IGRvZXNuJ3QgYWxyZWFkeSBoYXZlIGl0KSBhbmQgdHJ5IGFnYWluLiBTbyBpZiB5b3UgcGFzcyAi Zm9vIiBhcyAncGF0aCcsCi0gKiB0aGlzIHdpbGwgb3BlbiBlaXRoZXIgImZvbyIgb3IgImZvby5n eiIuCisgKiBJZiB0aGUgZmlsZSBhdCAncGF0aCcgZG9lcyBub3QgZXhpc3QsIHdlIGFwcGVuZCB0 aGUgInsuZ3osLmx6NH0iIHN1ZmZpeCAoaWYKKyAqICdwYXRoJyBkb2Vzbid0IGFscmVhZHkgaGF2 ZSBpdCkgYW5kIHRyeSBhZ2Fpbi4gU28gaWYgeW91IHBhc3MgImZvbyIgYXMgJ3BhdGgnLAorICog dGhpcyB3aWxsIG9wZW4gZWl0aGVyICJmb28iIG9yICJmb28uZ3oiIG9yICJmb28ubHo0IiwgdHJ5 aW5nIGluIHRoYXQgb3JkZXIuCiAgKgogICogT24gZmFpbHVyZSwgcmV0dXJuIE5VTEwgd2l0aCBh biBlcnJvciBjb2RlIGluIGVycm5vLgorICoKICAqLwogY2ZwICoKIGNmb3Blbl9yZWFkKGNvbnN0 IGNoYXIgKnBhdGgsIGNvbnN0IGNoYXIgKm1vZGUpCiB7Ci0JY2ZwCQkgICAqZnA7CisJY2ZwCQkg ICAqZnAgPSBOVUxMOwogCi0jaWZkZWYgSEFWRV9MSUJaCiAJaWYgKGhhc1N1ZmZpeChwYXRoLCAi Lmd6IikpCiAJCWZwID0gY2ZvcGVuKHBhdGgsIG1vZGUsIENPTVBSRVNTSU9OX0daSVAsIDApOwor CWVsc2UgaWYgKGhhc1N1ZmZpeChwYXRoLCAiLmx6NCIpKQorCQlmcCA9IGNmb3BlbihwYXRoLCBt b2RlLCBDT01QUkVTU0lPTl9MWjQsIDApOwogCWVsc2UKLSNlbmRpZgogCXsKIAkJZnAgPSBjZm9w ZW4ocGF0aCwgbW9kZSwgQ09NUFJFU1NJT05fTk9ORSwgMCk7CiAjaWZkZWYgSEFWRV9MSUJaCkBA IC00NTUsOCArOTQ4LDE5IEBAIGNmb3Blbl9yZWFkKGNvbnN0IGNoYXIgKnBhdGgsIGNvbnN0IGNo YXIgKm1vZGUpCiAJCQlmcCA9IGNmb3BlbihmbmFtZSwgbW9kZSwgQ09NUFJFU1NJT05fR1pJUCwg MCk7CiAJCQlmcmVlX2tlZXBfZXJybm8oZm5hbWUpOwogCQl9CisjZW5kaWYKKyNpZmRlZiBIQVZF X0xJQkxaNAorCQlpZiAoZnAgPT0gTlVMTCkKKwkJeworCQkJY2hhcgkgICAqZm5hbWU7CisKKwkJ CWZuYW1lID0gcHNwcmludGYoIiVzLmx6NCIsIHBhdGgpOworCQkJZnAgPSBjZm9wZW4oZm5hbWUs IG1vZGUsIENPTVBSRVNTSU9OX0xaNCwgMCk7CisJCQlmcmVlX2tlZXBfZXJybm8oZm5hbWUpOwor CQl9CiAjZW5kaWYKIAl9CisKIAlyZXR1cm4gZnA7CiB9CiAKQEAgLTQ2Nyw3ICs5NzEsOCBAQCBj Zm9wZW5fcmVhZChjb25zdCBjaGFyICpwYXRoLCBjb25zdCBjaGFyICptb2RlKQogICoKICAqIFdo ZW4gJ2NvbXByZXNzaW9uTWV0aG9kJyBpbmRpY2F0ZXMgZ3ppcCwgYSBnemlwIGNvbXByZXNzZWQg c3RyZWFtIGlzIG9wZW5lZCwKICAqIGFuZCAnY29tcHJlc3Npb25MZXZlbCcgaXMgdXNlZC4gVGhl ICIuZ3oiIHN1ZmZpeCBpcyBhdXRvbWF0aWNhbGx5IGFkZGVkIHRvCi0gKiAncGF0aCcgaW4gdGhh dCBjYXNlLgorICogJ3BhdGgnIGluIHRoYXQgY2FzZS4gVGhlIHNhbWUgYXBwbGllcyB3aGVuICdj b21wcmVzc2lvbk1ldGhvZCcgaW5kaWNhdGVzIGx6NCwKKyAqIGJ1dCB0aGVuIHRoZSAiLmx6NCIg c3VmZml4IGlzIGFkZGVkIGluc3RlYWQuCiAgKgogICogSXQgaXMgdGhlIGNhbGxlcidzIHJlc3Bv bnNpYmlsaXR5IHRvIHZlcmlmeSB0aGF0IHRoZSByZXF1ZXN0ZWQKICAqICdjb21wcmVzc2lvbk1l dGhvZCcgaXMgc3VwcG9ydGVkIGJ5IHRoZSBidWlsZC4KQEAgLTQ3OSwyMyArOTg0LDQ0IEBAIGNm b3Blbl93cml0ZShjb25zdCBjaGFyICpwYXRoLCBjb25zdCBjaGFyICptb2RlLAogCQkJIENvbXBy ZXNzaW9uTWV0aG9kIGNvbXByZXNzaW9uTWV0aG9kLAogCQkJIGludCBjb21wcmVzc2lvbkxldmVs KQogewotCWNmcAkJICAgKmZwOworCWNmcAkJICAgKmZwID0gTlVMTDsKIAotCWlmIChjb21wcmVz c2lvbk1ldGhvZCA9PSBDT01QUkVTU0lPTl9OT05FKQotCQlmcCA9IGNmb3BlbihwYXRoLCBtb2Rl LCBjb21wcmVzc2lvbk1ldGhvZCwgMCk7Ci0JZWxzZQorCXN3aXRjaCAoY29tcHJlc3Npb25NZXRo b2QpCiAJeworCQljYXNlIENPTVBSRVNTSU9OX05PTkU6CisJCQlmcCA9IGNmb3BlbihwYXRoLCBt b2RlLCBjb21wcmVzc2lvbk1ldGhvZCwgMCk7CisJCQlicmVhazsKKwkJY2FzZSBDT01QUkVTU0lP Tl9HWklQOgogI2lmZGVmIEhBVkVfTElCWgotCQljaGFyCSAgICpmbmFtZTsKKwkJCXsKKwkJCQlj aGFyCSAgICpmbmFtZTsKIAotCQlmbmFtZSA9IHBzcHJpbnRmKCIlcy5neiIsIHBhdGgpOwotCQlm cCA9IGNmb3BlbihmbmFtZSwgbW9kZSwgY29tcHJlc3Npb25NZXRob2QsIGNvbXByZXNzaW9uTGV2 ZWwpOwotCQlmcmVlX2tlZXBfZXJybm8oZm5hbWUpOworCQkJCWZuYW1lID0gcHNwcmludGYoIiVz Lmd6IiwgcGF0aCk7CisJCQkJZnAgPSBjZm9wZW4oZm5hbWUsIG1vZGUsIGNvbXByZXNzaW9uTWV0 aG9kLCBjb21wcmVzc2lvbkxldmVsKTsKKwkJCQlmcmVlX2tlZXBfZXJybm8oZm5hbWUpOworCQkJ fQogI2Vsc2UKLQkJZmF0YWwoIm5vdCBidWlsdCB3aXRoIHpsaWIgc3VwcG9ydCIpOwotCQlmcCA9 IE5VTEw7CQkJCS8qIGtlZXAgY29tcGlsZXIgcXVpZXQgKi8KKwkJCWZhdGFsKCJub3QgYnVpbHQg d2l0aCB6bGliIHN1cHBvcnQiKTsKICNlbmRpZgorCQkJYnJlYWs7CisJCWNhc2UgQ09NUFJFU1NJ T05fTFo0OgorI2lmZGVmIEhBVkVfTElCTFo0CisJCQl7CisJCQkJY2hhcgkgICAqZm5hbWU7CisK KwkJCQlmbmFtZSA9IHBzcHJpbnRmKCIlcy5sejQiLCBwYXRoKTsKKwkJCQlmcCA9IGNmb3Blbihm bmFtZSwgbW9kZSwgY29tcHJlc3Npb25NZXRob2QsIGNvbXByZXNzaW9uTGV2ZWwpOworCQkJCWZy ZWVfa2VlcF9lcnJubyhmbmFtZSk7CisJCQl9CisjZWxzZQorCQkJZmF0YWwoIm5vdCBidWlsdCB3 aXRoIExaNCBzdXBwb3J0Iik7CisjZW5kaWYKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJZmF0 YWwoImludmFsaWQgY29tcHJlc3Npb24gbWV0aG9kIik7CisJCQlicmVhazsKIAl9CisKIAlyZXR1 cm4gZnA7CiB9CiAKQEAgLTUxMiw3ICsxMDM4LDcgQEAgc3RhdGljIGNmcCAqCiBjZm9wZW5faW50 ZXJuYWwoY29uc3QgY2hhciAqcGF0aCwgaW50IGZkLCBjb25zdCBjaGFyICptb2RlLAogCQkJCUNv bXByZXNzaW9uTWV0aG9kIGNvbXByZXNzaW9uTWV0aG9kLCBpbnQgY29tcHJlc3Npb25MZXZlbCkK IHsKLQljZnAJCSAgICpmcCA9IHBnX21hbGxvYyhzaXplb2YoY2ZwKSk7CisJY2ZwCQkgICAqZnAg PSBwZ19tYWxsb2MwKHNpemVvZihjZnApKTsKIAogCWZwLT5jb21wcmVzc2lvbk1ldGhvZCA9IGNv bXByZXNzaW9uTWV0aG9kOwogCkBAIC01NjMsNiArMTA4OSwyNyBAQCBjZm9wZW5faW50ZXJuYWwo Y29uc3QgY2hhciAqcGF0aCwgaW50IGZkLCBjb25zdCBjaGFyICptb2RlLAogCQkJfQogI2Vsc2UK IAkJCWZhdGFsKCJub3QgYnVpbHQgd2l0aCB6bGliIHN1cHBvcnQiKTsKKyNlbmRpZgorCQkJYnJl YWs7CisJCWNhc2UgQ09NUFJFU1NJT05fTFo0OgorI2lmZGVmIEhBVkVfTElCTFo0CisJCQl7CisJ CQkJTFo0RmlsZSAqbHo0ZnAgPSBwZ19tYWxsb2MwKHNpemVvZigqbHo0ZnApKTsKKwkJCQlpZiAo ZmQgPj0gMCkKKwkJCQkJbHo0ZnAtPmZwID0gZmRvcGVuKGZkLCBtb2RlKTsKKwkJCQllbHNlCisJ CQkJCWx6NGZwLT5mcCA9IGZvcGVuKHBhdGgsIG1vZGUpOworCQkJCWlmIChsejRmcC0+ZnAgPT0g TlVMTCkKKwkJCQl7CisJCQkJCWZyZWVfa2VlcF9lcnJubyhsejRmcCk7CisJCQkJCWZwID0gTlVM TDsKKwkJCQl9CisJCQkJaWYgKGNvbXByZXNzaW9uTGV2ZWwgPj0gMCkKKwkJCQkJbHo0ZnAtPnBy ZWZzLmNvbXByZXNzaW9uTGV2ZWwgPSBjb21wcmVzc2lvbkxldmVsOworCQkJCWZwLT5mcCA9IGx6 NGZwOworCQkJfQorI2Vsc2UKKwkJCWZhdGFsKCJub3QgYnVpbHQgd2l0aCBMWjQgc3VwcG9ydCIp OwogI2VuZGlmCiAJCQlicmVhazsKIAkJZGVmYXVsdDoKQEAgLTU4Myw4ICsxMTMwLDggQEAgY2Zv cGVuKGNvbnN0IGNoYXIgKnBhdGgsIGNvbnN0IGNoYXIgKm1vZGUsCiAKIGNmcCAqCiBjZmRvcGVu KGludCBmZCwgY29uc3QgY2hhciAqbW9kZSwKLQkgICBDb21wcmVzc2lvbk1ldGhvZCBjb21wcmVz c2lvbk1ldGhvZCwKLQkgICBpbnQgY29tcHJlc3Npb25MZXZlbCkKKwkJQ29tcHJlc3Npb25NZXRo b2QgY29tcHJlc3Npb25NZXRob2QsCisJCWludCBjb21wcmVzc2lvbkxldmVsKQogewogCXJldHVy biBjZm9wZW5faW50ZXJuYWwoTlVMTCwgZmQsIG1vZGUsIGNvbXByZXNzaW9uTWV0aG9kLCBjb21w cmVzc2lvbkxldmVsKTsKIH0KQEAgLTYyMCw3ICsxMTY3LDE2IEBAIGNmcmVhZCh2b2lkICpwdHIs IGludCBzaXplLCBjZnAgKmZwKQogCQkJZmF0YWwoIm5vdCBidWlsdCB3aXRoIHpsaWIgc3VwcG9y dCIpOwogI2VuZGlmCiAJCQlicmVhazsKLQorCQljYXNlIENPTVBSRVNTSU9OX0xaNDoKKyNpZmRl ZiBIQVZFX0xJQkxaNAorCQkJcmV0ID0gTFo0RmlsZV9yZWFkKGZwLT5mcCwgcHRyLCBzaXplLCBm YWxzZSk7CisJCQlpZiAocmV0ICE9IHNpemUgJiYgIUxaNEZpbGVfZW9mKGZwLT5mcCkpCisJCQkJ ZmF0YWwoImNvdWxkIG5vdCByZWFkIGZyb20gaW5wdXQgZmlsZTogJXMiLAorCQkJCQkgIExaNEZp bGVfZXJyb3IoZnAtPmZwKSk7CisjZWxzZQorCQkJZmF0YWwoIm5vdCBidWlsdCB3aXRoIExaNCBz dXBwb3J0Iik7CisjZW5kaWYKKwkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJZmF0YWwoImludmFs aWQgY29tcHJlc3Npb24gbWV0aG9kIik7CiAJCQlicmVhazsKQEAgLTY0NCw2ICsxMjAwLDEzIEBA IGNmd3JpdGUoY29uc3Qgdm9pZCAqcHRyLCBpbnQgc2l6ZSwgY2ZwICpmcCkKIAkJCXJldCA9IGd6 d3JpdGUoZnAtPmZwLCBwdHIsIHNpemUpOwogI2Vsc2UKIAkJCWZhdGFsKCJub3QgYnVpbHQgd2l0 aCB6bGliIHN1cHBvcnQiKTsKKyNlbmRpZgorCQkJYnJlYWs7CisJCWNhc2UgQ09NUFJFU1NJT05f TFo0OgorI2lmZGVmIEhBVkVfTElCTFo0CisJCQlyZXQgPSBMWjRGaWxlX3dyaXRlKGZwLT5mcCwg cHRyLCBzaXplKTsKKyNlbHNlCisJCQlmYXRhbCgibm90IGJ1aWx0IHdpdGggTFo0IHN1cHBvcnQi KTsKICNlbmRpZgogCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CkBAIC02NzksNiArMTI0MiwyMCBAQCBj ZmdldGMoY2ZwICpmcCkKIAkJCX0KICNlbHNlCiAJCQlmYXRhbCgibm90IGJ1aWx0IHdpdGggemxp YiBzdXBwb3J0Iik7CisjZW5kaWYKKwkJCWJyZWFrOworCQljYXNlIENPTVBSRVNTSU9OX0xaNDoK KyNpZmRlZiBIQVZFX0xJQkxaNAorCQkJcmV0ID0gTFo0RmlsZV9nZXRjKGZwLT5mcCk7CisJCQlp ZiAocmV0ID09IEVPRikKKwkJCXsKKwkJCQlpZiAoIUxaNEZpbGVfZW9mKGZwLT5mcCkpCisJCQkJ CWZhdGFsKCJjb3VsZCBub3QgcmVhZCBmcm9tIGlucHV0IGZpbGU6ICVzIiwgc3RyZXJyb3IoZXJy bm8pKTsKKwkJCQllbHNlCisJCQkJCWZhdGFsKCJjb3VsZCBub3QgcmVhZCBmcm9tIGlucHV0IGZp bGU6IGVuZCBvZiBmaWxlIik7CisJCQl9CisjZWxzZQorCQkJZmF0YWwoIm5vdCBidWlsdCB3aXRo IExaNCBzdXBwb3J0Iik7CiAjZW5kaWYKIAkJCWJyZWFrOwogCQlkZWZhdWx0OgpAQCAtNjk4LDEz ICsxMjc1LDE5IEBAIGNmZ2V0cyhjZnAgKmZwLCBjaGFyICpidWYsIGludCBsZW4pCiAJewogCQlj YXNlIENPTVBSRVNTSU9OX05PTkU6CiAJCQlyZXQgPSBmZ2V0cyhidWYsIGxlbiwgZnAtPmZwKTsK LQogCQkJYnJlYWs7CiAJCWNhc2UgQ09NUFJFU1NJT05fR1pJUDoKICNpZmRlZiBIQVZFX0xJQloK IAkJCXJldCA9IGd6Z2V0cyhmcC0+ZnAsIGJ1ZiwgbGVuKTsKICNlbHNlCiAJCQlmYXRhbCgibm90 IGJ1aWx0IHdpdGggemxpYiBzdXBwb3J0Iik7CisjZW5kaWYKKwkJCWJyZWFrOworCQljYXNlIENP TVBSRVNTSU9OX0xaNDoKKyNpZmRlZiBIQVZFX0xJQkxaNAorCQkJcmV0ID0gTFo0RmlsZV9nZXRz KGZwLT5mcCwgYnVmLCBsZW4pOworI2Vsc2UKKwkJCWZhdGFsKCJub3QgYnVpbHQgd2l0aCBMWjQg c3VwcG9ydCIpOwogI2VuZGlmCiAJCQlicmVhazsKIAkJZGVmYXVsdDoKQEAgLTczOSw2ICsxMzIy LDE0IEBAIGNmY2xvc2UoY2ZwICpmcCkKIAkJCWZwLT5mcCA9IE5VTEw7CiAjZWxzZQogCQkJZmF0 YWwoIm5vdCBidWlsdCB3aXRoIHpsaWIgc3VwcG9ydCIpOworI2VuZGlmCisJCQlicmVhazsKKwkJ Y2FzZSBDT01QUkVTU0lPTl9MWjQ6CisjaWZkZWYgSEFWRV9MSUJMWjQKKwkJCXJldCA9IExaNEZp bGVfY2xvc2UoZnAtPmZwKTsKKwkJCWZwLT5mcCA9IE5VTEw7CisjZWxzZQorCQkJZmF0YWwoIm5v dCBidWlsdCB3aXRoIExaNCBzdXBwb3J0Iik7CiAjZW5kaWYKIAkJCWJyZWFrOwogCQlkZWZhdWx0 OgpAQCAtNzY3LDYgKzEzNTgsMTMgQEAgY2Zlb2YoY2ZwICpmcCkKIAkJCXJldCA9IGd6ZW9mKGZw LT5mcCk7CiAjZWxzZQogCQkJZmF0YWwoIm5vdCBidWlsdCB3aXRoIHpsaWIgc3VwcG9ydCIpOwor I2VuZGlmCisJCQlicmVhazsKKwkJY2FzZSBDT01QUkVTU0lPTl9MWjQ6CisjaWZkZWYgSEFWRV9M SUJMWjQKKwkJCXJldCA9IExaNEZpbGVfZW9mKGZwLT5mcCk7CisjZWxzZQorCQkJZmF0YWwoIm5v dCBidWlsdCB3aXRoIExaNCBzdXBwb3J0Iik7CiAjZW5kaWYKIAkJCWJyZWFrOwogCQlkZWZhdWx0 OgpAQCAtNzgwLDIzICsxMzc4LDQyIEBAIGNmZW9mKGNmcCAqZnApCiBjb25zdCBjaGFyICoKIGdl dF9jZnBfZXJyb3IoY2ZwICpmcCkKIHsKLQlpZiAoZnAtPmNvbXByZXNzaW9uTWV0aG9kID09IENP TVBSRVNTSU9OX0daSVApCisJY29uc3QgY2hhciAqZXJybXNnID0gTlVMTDsKKworCXN3aXRjaChm cC0+Y29tcHJlc3Npb25NZXRob2QpCiAJeworCQljYXNlIENPTVBSRVNTSU9OX05PTkU6CisJCQll cnJtc2cgPSBzdHJlcnJvcihlcnJubyk7CisKKwkJCWJyZWFrOworCQljYXNlIENPTVBSRVNTSU9O X0daSVA6CiAjaWZkZWYgSEFWRV9MSUJaCi0JCWludAkJCWVycm51bTsKLQkJY29uc3QgY2hhciAq ZXJybXNnID0gZ3plcnJvcihmcC0+ZnAsICZlcnJudW0pOworCQkJeworCQkJCWludAkJCWVycm51 bTsKKwkJCQllcnJtc2cgPSBnemVycm9yKGZwLT5mcCwgJmVycm51bSk7CiAKLQkJaWYgKGVycm51 bSAhPSBaX0VSUk5PKQotCQkJcmV0dXJuIGVycm1zZzsKKwkJCQlpZiAoZXJybnVtID09IFpfRVJS Tk8pCisJCQkJCWVycm1zZyA9IHN0cmVycm9yKGVycm5vKTsKKwkJCX0KICNlbHNlCi0JCWZhdGFs KCJub3QgYnVpbHQgd2l0aCB6bGliIHN1cHBvcnQiKTsKKwkJCWZhdGFsKCJub3QgYnVpbHQgd2l0 aCB6bGliIHN1cHBvcnQiKTsKKyNlbmRpZgorCQkJYnJlYWs7CisJCWNhc2UgQ09NUFJFU1NJT05f TFo0OgorI2lmZGVmIEhBVkVfTElCTFo0CisJCQllcnJtc2cgPSBMWjRGaWxlX2Vycm9yKGZwLT5m cCk7CisjZWxzZQorCQkJZmF0YWwoIm5vdCBidWlsdCB3aXRoIExaNCBzdXBwb3J0Iik7CiAjZW5k aWYKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJZmF0YWwoImludmFsaWQgY29tcHJlc3Npb24g bWV0aG9kIik7CisJCQlicmVhazsKIAl9CiAKLQlyZXR1cm4gc3RyZXJyb3IoZXJybm8pOworCXJl dHVybiBlcnJtc2c7CiB9CiAKLSNpZmRlZiBIQVZFX0xJQloKIHN0YXRpYyBpbnQKIGhhc1N1ZmZp eChjb25zdCBjaGFyICpmaWxlbmFtZSwgY29uc3QgY2hhciAqc3VmZml4KQogewpAQCAtODEwLDUg KzE0MjcsMyBAQCBoYXNTdWZmaXgoY29uc3QgY2hhciAqZmlsZW5hbWUsIGNvbnN0IGNoYXIgKnN1 ZmZpeCkKIAkJCQkgIHN1ZmZpeCwKIAkJCQkgIHN1ZmZpeGxlbikgPT0gMDsKIH0KLQotI2VuZGlm CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwLmggYi9zcmMvYmluL3BnX2R1 bXAvcGdfYmFja3VwLmgKaW5kZXggZDlmNmM5YTA4Ny4uYzQ0M2U2OThmOSAxMDA2NDQKLS0tIGEv c3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cC5oCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNr dXAuaApAQCAtNzgsNiArNzgsNyBAQCBlbnVtIF9kdW1wUHJlcGFyZWRRdWVyaWVzCiB0eXBlZGVm IGVudW0gX2NvbXByZXNzaW9uTWV0aG9kCiB7CiAJQ09NUFJFU1NJT05fR1pJUCwKKwlDT01QUkVT U0lPTl9MWjQsCiAJQ09NUFJFU1NJT05fTk9ORSwKIAlDT01QUkVTU0lPTl9JTlZBTElECiB9IENv bXByZXNzaW9uTWV0aG9kOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9h cmNoaXZlci5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5jCmluZGV4IDdk OTY0NDZmMWEuLmU2ZjcyNzUzNGIgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNr dXBfYXJjaGl2ZXIuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hpdmVyLmMK QEAgLTM1Myw2ICszNTMsNyBAQCBSZXN0b3JlQXJjaGl2ZShBcmNoaXZlICpBSFgpCiAJQXJjaGl2 ZUhhbmRsZSAqQUggPSAoQXJjaGl2ZUhhbmRsZSAqKSBBSFg7CiAJUmVzdG9yZU9wdGlvbnMgKnJv cHQgPSBBSC0+cHVibGljLnJvcHQ7CiAJYm9vbAkJcGFyYWxsZWxfbW9kZTsKKwlib29sCQlzdXBw b3J0c19jb21wcmVzc2lvbjsKIAlUb2NFbnRyeSAgICp0ZTsKIAljZnAJCSAgICpzYXY7CiAKQEAg LTM4MiwxNyArMzgzLDI3IEBAIFJlc3RvcmVBcmNoaXZlKEFyY2hpdmUgKkFIWCkKIAkvKgogCSAq IE1ha2Ugc3VyZSB3ZSB3b24ndCBuZWVkIChkZSljb21wcmVzc2lvbiB3ZSBoYXZlbid0IGdvdAog CSAqLwotI2lmbmRlZiBIQVZFX0xJQloKLQlpZiAoQUgtPmNvbXByZXNzaW9uTWV0aG9kID09IENP TVBSRVNTSU9OX0daSVAgJiYKKwlzdXBwb3J0c19jb21wcmVzc2lvbiA9IHRydWU7CisJaWYgKEFI LT5jb21wcmVzc2lvbk1ldGhvZCAhPSBDT01QUkVTU0lPTl9OT05FICYmCiAJCUFILT5QcmludFRv Y0RhdGFQdHIgIT0gTlVMTCkKIAl7CiAJCWZvciAodGUgPSBBSC0+dG9jLT5uZXh0OyB0ZSAhPSBB SC0+dG9jOyB0ZSA9IHRlLT5uZXh0KQogCQl7CiAJCQlpZiAodGUtPmhhZER1bXBlciAmJiAodGUt PnJlcXMgJiBSRVFfREFUQSkgIT0gMCkKLQkJCQlmYXRhbCgiY2Fubm90IHJlc3RvcmUgZnJvbSBj b21wcmVzc2VkIGFyY2hpdmUgKGNvbXByZXNzaW9uIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBpbnN0 YWxsYXRpb24pIik7CisJCQl7CisjaWZuZGVmIEhBVkVfTElCWgorCQkJCWlmIChBSC0+Y29tcHJl c3Npb25NZXRob2QgPT0gQ09NUFJFU1NJT05fR1pJUCkKKwkJCQkJc3VwcG9ydHNfY29tcHJlc3Np b24gPSBmYWxzZTsKKyNlbmRpZgorI2lmbmRlZiBIQVZFX0xJQkxaNAorCQkJCWlmIChBSC0+Y29t cHJlc3Npb25NZXRob2QgPT0gQ09NUFJFU1NJT05fTFo0KQorCQkJCQlzdXBwb3J0c19jb21wcmVz c2lvbiA9IGZhbHNlOworI2VuZGlmCisJCQkJaWYgKHN1cHBvcnRzX2NvbXByZXNzaW9uID09IGZh bHNlKQorCQkJCQlmYXRhbCgiY2Fubm90IHJlc3RvcmUgZnJvbSBjb21wcmVzc2VkIGFyY2hpdmUg KGNvbXByZXNzaW9uIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBpbnN0YWxsYXRpb24pIik7CisJCQl9 CiAJCX0KIAl9Ci0jZW5kaWYKIAogCS8qCiAJICogUHJlcGFyZSBpbmRleCBhcnJheXMsIHNvIHdl IGNhbiBhc3N1bWUgd2UgaGF2ZSB0aGVtIHRocm91Z2hvdXQgcmVzdG9yZS4KQEAgLTIwMTksNiAr MjAzMCwxOCBAQCBSZWFkU3RyKEFyY2hpdmVIYW5kbGUgKkFIKQogCXJldHVybiBidWY7CiB9CiAK K3N0YXRpYyBib29sCitfZmlsZUV4aXN0c0luRGlyZWN0b3J5KGNvbnN0IGNoYXIgKmRpciwgY29u c3QgY2hhciAqZmlsZW5hbWUpCit7CisJc3RydWN0IHN0YXQgc3Q7CisJY2hhcgkJYnVmW01BWFBH UEFUSF07CisKKwlpZiAoc25wcmludGYoYnVmLCBNQVhQR1BBVEgsICIlcy8lcyIsIGRpciwgZmls ZW5hbWUpID49IE1BWFBHUEFUSCkKKwkJZmF0YWwoImRpcmVjdG9yeSBuYW1lIHRvbyBsb25nOiBc IiVzXCIiLCBkaXIpOworCisJcmV0dXJuIChzdGF0KGJ1ZiwgJnN0KSA9PSAwICYmIFNfSVNSRUco c3Quc3RfbW9kZSkpOworfQorCiBzdGF0aWMgaW50CiBfZGlzY292ZXJBcmNoaXZlRm9ybWF0KEFy Y2hpdmVIYW5kbGUgKkFIKQogewpAQCAtMjA0NiwzMCArMjA2OSwyMSBAQCBfZGlzY292ZXJBcmNo aXZlRm9ybWF0KEFyY2hpdmVIYW5kbGUgKkFIKQogCiAJCS8qCiAJCSAqIENoZWNrIGlmIHRoZSBz cGVjaWZpZWQgYXJjaGl2ZSBpcyBhIGRpcmVjdG9yeS4gSWYgc28sIGNoZWNrIGlmCi0JCSAqIHRo ZXJlJ3MgYSAidG9jLmRhdCIgKG9yICJ0b2MuZGF0Lmd6IikgZmlsZSBpbiBpdC4KKwkJICogdGhl cmUncyBhICJ0b2MuZGF0IiAob3IgInRvYy5kYXQue2d6LGx6NH0iKSBmaWxlIGluIGl0LgogCQkg Ki8KIAkJaWYgKHN0YXQoQUgtPmZTcGVjLCAmc3QpID09IDAgJiYgU19JU0RJUihzdC5zdF9tb2Rl KSkKIAkJewotCQkJY2hhcgkJYnVmW01BWFBHUEFUSF07CiAKLQkJCWlmIChzbnByaW50ZihidWYs IE1BWFBHUEFUSCwgIiVzL3RvYy5kYXQiLCBBSC0+ZlNwZWMpID49IE1BWFBHUEFUSCkKLQkJCQlm YXRhbCgiZGlyZWN0b3J5IG5hbWUgdG9vIGxvbmc6IFwiJXNcIiIsCi0JCQkJCSAgQUgtPmZTcGVj KTsKLQkJCWlmIChzdGF0KGJ1ZiwgJnN0KSA9PSAwICYmIFNfSVNSRUcoc3Quc3RfbW9kZSkpCi0J CQl7Ci0JCQkJQUgtPmZvcm1hdCA9IGFyY2hEaXJlY3Rvcnk7CisJCQlBSC0+Zm9ybWF0ID0gYXJj aERpcmVjdG9yeTsKKwkJCWlmIChfZmlsZUV4aXN0c0luRGlyZWN0b3J5KEFILT5mU3BlYywgInRv Yy5kYXQiKSkKIAkJCQlyZXR1cm4gQUgtPmZvcm1hdDsKLQkJCX0KLQogI2lmZGVmIEhBVkVfTElC WgotCQkJaWYgKHNucHJpbnRmKGJ1ZiwgTUFYUEdQQVRILCAiJXMvdG9jLmRhdC5neiIsIEFILT5m U3BlYykgPj0gTUFYUEdQQVRIKQotCQkJCWZhdGFsKCJkaXJlY3RvcnkgbmFtZSB0b28gbG9uZzog XCIlc1wiIiwKLQkJCQkJICBBSC0+ZlNwZWMpOwotCQkJaWYgKHN0YXQoYnVmLCAmc3QpID09IDAg JiYgU19JU1JFRyhzdC5zdF9tb2RlKSkKLQkJCXsKLQkJCQlBSC0+Zm9ybWF0ID0gYXJjaERpcmVj dG9yeTsKKwkJCWlmIChfZmlsZUV4aXN0c0luRGlyZWN0b3J5KEFILT5mU3BlYywgInRvYy5kYXQu Z3oiKSkKKwkJCQlyZXR1cm4gQUgtPmZvcm1hdDsKKyNlbmRpZgorI2lmZGVmIEhBVkVfTElCTFo0 CisJCQlpZiAoX2ZpbGVFeGlzdHNJbkRpcmVjdG9yeShBSC0+ZlNwZWMsICJ0b2MuZGF0Lmx6NCIp KQogCQkJCXJldHVybiBBSC0+Zm9ybWF0OwotCQkJfQogI2VuZGlmCiAJCQlmYXRhbCgiZGlyZWN0 b3J5IFwiJXNcIiBkb2VzIG5vdCBhcHBlYXIgdG8gYmUgYSB2YWxpZCBhcmNoaXZlIChcInRvYy5k YXRcIiBkb2VzIG5vdCBleGlzdCkiLAogCQkJCSAgQUgtPmZTcGVjKTsKQEAgLTM2ODEsNiArMzY5 NSw3IEBAIFdyaXRlSGVhZChBcmNoaXZlSGFuZGxlICpBSCkKIAlBSC0+V3JpdGVCeXRlUHRyKEFI LCBBSC0+b2ZmU2l6ZSk7CiAJQUgtPldyaXRlQnl0ZVB0cihBSCwgQUgtPmZvcm1hdCk7CiAJV3Jp dGVJbnQoQUgsIEFILT5jb21wcmVzc2lvbkxldmVsKTsKKwlBSC0+V3JpdGVCeXRlUHRyKEFILCBB SC0+Y29tcHJlc3Npb25NZXRob2QpOwogCWNydG0gPSAqbG9jYWx0aW1lKCZBSC0+Y3JlYXRlRGF0 ZSk7CiAJV3JpdGVJbnQoQUgsIGNydG0udG1fc2VjKTsKIAlXcml0ZUludChBSCwgY3J0bS50bV9t aW4pOwpAQCAtMzc2MSwxNCArMzc3NiwyMCBAQCBSZWFkSGVhZChBcmNoaXZlSGFuZGxlICpBSCkK IAllbHNlCiAJCUFILT5jb21wcmVzc2lvbkxldmVsID0gWl9ERUZBVUxUX0NPTVBSRVNTSU9OOwog Ci0JaWYgKEFILT5jb21wcmVzc2lvbkxldmVsICE9IElOVF9NSU4pCisJaWYgKEFILT52ZXJzaW9u ID49IEtfVkVSU18xXzE1KQorCQlBSC0+Y29tcHJlc3Npb25NZXRob2QgPSBBSC0+UmVhZEJ5dGVQ dHIoQUgpOworCWVsc2UgaWYgKEFILT5jb21wcmVzc2lvbkxldmVsICE9IDApCisJCUFILT5jb21w cmVzc2lvbk1ldGhvZCA9IENPTVBSRVNTSU9OX0daSVA7CisKICNpZm5kZWYgSEFWRV9MSUJaCisJ aWYgKEFILT5jb21wcmVzc2lvbk1ldGhvZCA9PSBDT01QUkVTU0lPTl9HWklQKQorCXsKIAkJcGdf bG9nX3dhcm5pbmcoImFyY2hpdmUgaXMgY29tcHJlc3NlZCwgYnV0IHRoaXMgaW5zdGFsbGF0aW9u IGRvZXMgbm90IHN1cHBvcnQgY29tcHJlc3Npb24gLS0gbm8gZGF0YSB3aWxsIGJlIGF2YWlsYWJs ZSIpOwotI2Vsc2UKLQkJQUgtPmNvbXByZXNzaW9uTWV0aG9kID0gQ09NUFJFU1NJT05fR1pJUDsK KwkJQUgtPmNvbXByZXNzaW9uTWV0aG9kID0gQ09NUFJFU1NJT05fTk9ORTsKKwkJQUgtPmNvbXBy ZXNzaW9uTGV2ZWwgPSAwOworCX0KICNlbmRpZgogCi0KIAlpZiAoQUgtPnZlcnNpb24gPj0gS19W RVJTXzFfNCkKIAl7CiAJCXN0cnVjdCB0bQljcnRtOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19k dW1wL3BnX2JhY2t1cF9hcmNoaXZlci5oIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNo aXZlci5oCmluZGV4IDgzN2U5ZDczZjUuLjAzN2JmY2Y5MTMgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4v cGdfZHVtcC9wZ19iYWNrdXBfYXJjaGl2ZXIuaAorKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfYmFj a3VwX2FyY2hpdmVyLmgKQEAgLTY1LDEwICs2NSwxMSBAQAogI2RlZmluZSBLX1ZFUlNfMV8xMyBN QUtFX0FSQ0hJVkVfVkVSU0lPTigxLCAxMywgMCkJLyogY2hhbmdlIHNlYXJjaF9wYXRoCiAJCQkJ CQkJCQkJCQkJICogYmVoYXZpb3IgKi8KICNkZWZpbmUgS19WRVJTXzFfMTQgTUFLRV9BUkNISVZF X1ZFUlNJT04oMSwgMTQsIDApCS8qIGFkZCB0YWJsZWFtICovCisjZGVmaW5lIEtfVkVSU18xXzE1 IE1BS0VfQVJDSElWRV9WRVJTSU9OKDEsIDE1LCAwKQkvKiBhZGQgY29tcHJlc3Npb25NZXRob2Qg aW4gaGVhZGVyICovCiAKIC8qIEN1cnJlbnQgYXJjaGl2ZSB2ZXJzaW9uIG51bWJlciAodGhlIGZv cm1hdCB3ZSBjYW4gb3V0cHV0KSAqLwogI2RlZmluZSBLX1ZFUlNfTUFKT1IgMQotI2RlZmluZSBL X1ZFUlNfTUlOT1IgMTQKKyNkZWZpbmUgS19WRVJTX01JTk9SIDE1CiAjZGVmaW5lIEtfVkVSU19S RVYgMAogI2RlZmluZSBLX1ZFUlNfU0VMRiBNQUtFX0FSQ0hJVkVfVkVSU0lPTihLX1ZFUlNfTUFK T1IsIEtfVkVSU19NSU5PUiwgS19WRVJTX1JFVikKIApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19k dW1wL3BnX2R1bXAuYyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKaW5kZXggY2Q5MWVmZGQ3 YS4uZjE1YTU2NWFjNyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYworKysg Yi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCkBAIC0xMDAyLDcgKzEwMDIsNyBAQCBoZWxwKGNv bnN0IGNoYXIgKnByb2duYW1lKQogCXByaW50ZihfKCIgIC1qLCAtLWpvYnM9TlVNICAgICAgICAg ICAgICAgdXNlIHRoaXMgbWFueSBwYXJhbGxlbCBqb2JzIHRvIGR1bXBcbiIpKTsKIAlwcmludGYo XygiICAtdiwgLS12ZXJib3NlICAgICAgICAgICAgICAgIHZlcmJvc2UgbW9kZVxuIikpOwogCXBy aW50ZihfKCIgIC1WLCAtLXZlcnNpb24gICAgICAgICAgICAgICAgb3V0cHV0IHZlcnNpb24gaW5m b3JtYXRpb24sIHRoZW4gZXhpdFxuIikpOwotCXByaW50ZihfKCIgIC1aLCAtLWNvbXByZXNzPVtn emlwLG5vbmVdWzpMRVZFTF0gb3IgW0xFVkVMXVxuIgorCXByaW50ZihfKCIgIC1aLCAtLWNvbXBy ZXNzPVtnemlwLGx6NCxub25lXVs6TEVWRUxdIG9yIFtMRVZFTF1cbiIKIAkJCSAiICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbXByZXNzIG91dHB1dCB3aXRoIGdpdmVuIG1ldGhvZCBv ciBsZXZlbFxuIikpOwogCXByaW50ZihfKCIgIC0tbG9jay13YWl0LXRpbWVvdXQ9VElNRU9VVCAg ZmFpbCBhZnRlciB3YWl0aW5nIFRJTUVPVVQgZm9yIGEgdGFibGUgbG9ja1xuIikpOwogCXByaW50 ZihfKCIgIC0tbm8tc3luYyAgICAgICAgICAgICAgICAgICAgZG8gbm90IHdhaXQgZm9yIGNoYW5n ZXMgdG8gYmUgd3JpdHRlbiBzYWZlbHkgdG8gZGlza1xuIikpOwpAQCAtMTI3MSwxMSArMTI3MSwx MyBAQCBwYXJzZV9jb21wcmVzc2lvbl9tZXRob2QoY29uc3QgY2hhciAqbWV0aG9kLAogCiAJaWYg KHBnX3N0cmNhc2VjbXAobWV0aG9kLCAiZ3ppcCIpID09IDApCiAJCSpjb21wcmVzc2lvbk1ldGhv ZCA9IENPTVBSRVNTSU9OX0daSVA7CisJZWxzZSBpZiAocGdfc3RyY2FzZWNtcChtZXRob2QsICJs ejQiKSA9PSAwKQorCQkqY29tcHJlc3Npb25NZXRob2QgPSBDT01QUkVTU0lPTl9MWjQ7CiAJZWxz ZSBpZiAocGdfc3RyY2FzZWNtcChtZXRob2QsICJub25lIikgPT0gMCkKIAkJKmNvbXByZXNzaW9u TWV0aG9kID0gQ09NUFJFU1NJT05fTk9ORTsKIAllbHNlCiAJewotCQlwZ19sb2dfZXJyb3IoImlu dmFsaWQgY29tcHJlc3Npb24gbWV0aG9kIFwiJXNcIiAoZ3ppcCwgbm9uZSkiLCBtZXRob2QpOwor CQlwZ19sb2dfZXJyb3IoImludmFsaWQgY29tcHJlc3Npb24gbWV0aG9kIFwiJXNcIiAoZ3ppcCwg bHo0LCBub25lKSIsIG1ldGhvZCk7CiAJCXJlcyA9IGZhbHNlOwogCX0KIApAQCAtMTM0NiwxMCAr MTM0OCwxMCBAQCBwYXJzZV9jb21wcmVzc2lvbl9vcHRpb24oY29uc3QgY2hhciAqb3B0LCBDb21w cmVzc2lvbk1ldGhvZCAqY29tcHJlc3Npb25NZXRob2QsCiAJaWYgKCFyZXMpCiAJCXJldHVybiBy ZXM7CiAKLQkvKiBvbmUgY2FuIHNldCBsZXZlbCB3aGVuIG1ldGhvZCBpcyBnemlwICovCi0JaWYg KCpjb21wcmVzc2lvbk1ldGhvZCAhPSBDT01QUkVTU0lPTl9HWklQICYmICpjb21wcmVzc0xldmVs ICE9IElOVF9NSU4pCisJLyogb25lIGNhbiBzZXQgbGV2ZWwgd2hlbiBhIGNvbXByZXNzaW9uIG1l dGhvZCBpcyBzZXQgKi8KKwlpZiAoKmNvbXByZXNzaW9uTWV0aG9kID09IENPTVBSRVNTSU9OX05P TkUgJiYgKmNvbXByZXNzTGV2ZWwgIT0gSU5UX01JTikKIAl7Ci0JCXBnX2xvZ19lcnJvcigiY2Fu IG9ubHkgc3BlY2lmeSAtWi8tLWNvbXByZXNzIFtMRVZFTF0gd2hlbiBtZXRob2QgaXMgZ3ppcCIp OworCQlwZ19sb2dfZXJyb3IoImNhbiBvbmx5IHNwZWNpZnkgLVovLS1jb21wcmVzcyBbTEVWRUxd IHdoZW4gbWV0aG9kIGlzIHNldCIpOwogCQlyZXR1cm4gZmFsc2U7CiAJfQogCmRpZmYgLS1naXQg YS9zcmMvYmluL3BnX2R1bXAvdC8wMDFfYmFzaWMucGwgYi9zcmMvYmluL3BnX2R1bXAvdC8wMDFf YmFzaWMucGwKaW5kZXggZjZiY2NmZTU1Yi4uZTJjMzYzNDU4MyAxMDA2NDQKLS0tIGEvc3JjL2Jp bi9wZ19kdW1wL3QvMDAxX2Jhc2ljLnBsCisrKyBiL3NyYy9iaW4vcGdfZHVtcC90LzAwMV9iYXNp Yy5wbApAQCAtMTIzLDEyICsxMjMsMTIgQEAgY29tbWFuZF9mYWlsc19saWtlKAogCiBjb21tYW5k X2ZhaWxzX2xpa2UoCiAJWyAncGdfZHVtcCcsICctLWNvbXByZXNzJywgJ2dhcmJhZ2UnIF0sCi0J cXIvXFFwZ19kdW1wOiBlcnJvcjogaW52YWxpZCBjb21wcmVzc2lvbiBtZXRob2QgImdhcmJhZ2Ui IChnemlwLCBub25lKVxFLywKKwlxci9cUXBnX2R1bXA6IGVycm9yOiBpbnZhbGlkIGNvbXByZXNz aW9uIG1ldGhvZCAiZ2FyYmFnZSIgKGd6aXAsIGx6NCwgbm9uZSlcRS8sCiAJJ3BnX2R1bXA6IGlu dmFsaWQgLS1jb21wcmVzcycpOwogCiBjb21tYW5kX2ZhaWxzX2xpa2UoCiAJWyAncGdfZHVtcCcs ICctLWNvbXByZXNzJywgJ25vbmU6MScgXSwKLQlxci9cUXBnX2R1bXA6IGVycm9yOiBjYW4gb25s eSBzcGVjaWZ5IC1aXC8tLWNvbXByZXNzIFtMRVZFTF0gd2hlbiBtZXRob2QgaXMgZ3ppcFxFLywK Kwlxci9cUXBnX2R1bXA6IGVycm9yOiBjYW4gb25seSBzcGVjaWZ5IC1aXC8tLWNvbXByZXNzIFtM RVZFTF0gd2hlbiBtZXRob2QgaXMgc2V0XEUvLAogCSdwZ19kdW1wOiBjYW4gb25seSBzcGVjaWZ5 IC1aLy0tY29tcHJlc3MgW0xFVkVMXSB3aGVuIG1ldGhvZCBpcyBnemlwJyk7CiAKIGNvbW1hbmRf ZmFpbHNfbGlrZSgKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBs IGIvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwKaW5kZXggNDlmMDRjOTQ3Ny4uYjE4 ZjQ1MzU4ZSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwKKysr IGIvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwKQEAgLTgyLDExICs4MiwxNCBAQCBt eSAlcGdkdW1wX3J1bnMgPSAoCiAJCQkncG9zdGdyZXMnLAogCQldLAogCQkjIEdpdmUgY292ZXJh Z2UgZm9yIG1hbnVhbGx5IGNvbXByZXNzZWQgYmxvYi50b2MgZmlsZXMgZHVyaW5nIHJlc3RvcmUu Ci0JCWNvbXByZXNzX2NtZCA9PiBbCi0JCQkkRU5WeydHWklQX1BST0dSQU0nfSwKLQkJCSctZics Ci0JCQkiJHRlbXBkaXIvY29tcHJlc3Npb25fZ3ppcF9kaXJlY3RvcnlfZm9ybWF0L2Jsb2JzLnRv YyIsCi0JCV0sCisJCWNvbXByZXNzaW9uID0+IHsKKwkJCW1ldGhvZCA9PiAnZ3ppcCcsCisJCQlj bWQgPT4gWworCQkJCSRFTlZ7J0daSVBfUFJPR1JBTSd9LAorCQkJCSctZicsCisJCQkJIiR0ZW1w ZGlyL2NvbXByZXNzaW9uX2d6aXBfZGlyZWN0b3J5X2Zvcm1hdC9ibG9icy50b2MiLAorCQkJXSwK KwkJfSwKIAkJcmVzdG9yZV9jbWQgPT4gWwogCQkJJ3BnX3Jlc3RvcmUnLAogCQkJIi0tZmlsZT0k dGVtcGRpci9jb21wcmVzc2lvbl9nemlwX2RpcmVjdG9yeV9mb3JtYXQuc3FsIiwKQEAgLTEwMiwx MiArMTA1LDE1IEBAIG15ICVwZ2R1bXBfcnVucyA9ICgKIAkJCSItLWZpbGU9JHRlbXBkaXIvY29t cHJlc3Npb25fZ3ppcF9kaXJlY3RvcnlfZm9ybWF0X3BhcmFsbGVsIiwKIAkJCSdwb3N0Z3Jlcycs CiAJCV0sCi0JCSMgR2l2ZSBjb3ZlcmFnZSBmb3IgbWFudWFsbHkgY29tcHJlc3NlZCBibG9iLnRv YyBmaWxlcyBkdXJpbmcgcmVzdG9yZS4KLQkJY29tcHJlc3NfY21kID0+IFsKLQkJCSRFTlZ7J0da SVBfUFJPR1JBTSd9LAotCQkJJy1mJywKLQkJCSIkdGVtcGRpci9jb21wcmVzc2lvbl9nemlwX2Rp cmVjdG9yeV9mb3JtYXRfcGFyYWxsZWwvYmxvYnMudG9jIiwKLQkJXSwKKwkJIyBHaXZlIGNvdmVy YWdlIGZvciBtYW51YWxseSBjb21wcmVzc2VkIHRvYy5kYXQgZmlsZXMgZHVyaW5nIHJlc3RvcmUu CisJCWNvbXByZXNzaW9uID0+IHsKKwkJCW1ldGhvZCA9PiAnZ3ppcCcsCisJCQljbWQgPT4gWwor CQkJCSRFTlZ7J0daSVBfUFJPR1JBTSd9LAorCQkJCSctZicsCisJCQkJIiR0ZW1wZGlyL2NvbXBy ZXNzaW9uX2d6aXBfZGlyZWN0b3J5X2Zvcm1hdF9wYXJhbGxlbC90b2MuZGF0IiwKKwkJCV0sCisJ CX0sCiAJCXJlc3RvcmVfY21kID0+IFsKIAkJCSdwZ19yZXN0b3JlJywKIAkJCSctLWpvYnM9Mycs CkBAIC0xMjQsMTIgKzEzMCw5NiBAQCBteSAlcGdkdW1wX3J1bnMgPSAoCiAJCQkiLS1maWxlPSR0 ZW1wZGlyL2NvbXByZXNzaW9uX2d6aXBfcGxhaW5fZm9ybWF0LnNxbC5neiIsCiAJCQkncG9zdGdy ZXMnLAogCQldLAotCQljb21wcmVzc19jbWQgPT4gWwotCQkJJEVOVnsnR1pJUF9QUk9HUkFNJ30s Ci0JCQknLWsnLCAnLWQnLAotCQkJIiR0ZW1wZGlyL2NvbXByZXNzaW9uX2d6aXBfcGxhaW5fZm9y bWF0LnNxbC5neiIsCisJCWNvbXByZXNzaW9uID0+IHsKKwkJCW1ldGhvZCA9PiAnZ3ppcCcsCisJ CQljbWQgPT4gWworCQkJCSRFTlZ7J0daSVBfUFJPR1JBTSd9LAorCQkJCSctaycsICctZCcsCisJ CQkJIiR0ZW1wZGlyL2NvbXByZXNzaW9uX2d6aXBfcGxhaW5fZm9ybWF0LnNxbC5neiIsCisJCQld LAorCQl9LAorCX0sCisJY29tcHJlc3Npb25fbHo0X2N1c3RvbV9mb3JtYXQgPT4geworCQl0ZXN0 X2tleSA9PiAnY29tcHJlc3Npb24nLAorCQlkdW1wX2NtZCA9PiBbCisJCQkncGdfZHVtcCcsICct LW5vLXN5bmMnLAorCQkJJy0tZm9ybWF0PWN1c3RvbScsICctLWNvbXByZXNzPWx6NDo5JywKKwkJ CSItLWZpbGU9JHRlbXBkaXIvY29tcHJlc3Npb25fbHo0X2N1c3RvbV9mb3JtYXQuZHVtcCIsCisJ CQkncG9zdGdyZXMnLAorCQldLAorCQlyZXN0b3JlX2NtZCA9PiBbCisJCQkncGdfcmVzdG9yZScs CisJCQkiLS1maWxlPSR0ZW1wZGlyL2NvbXByZXNzaW9uX2x6NF9jdXN0b21fZm9ybWF0LnNxbCIs CisJCQkiJHRlbXBkaXIvY29tcHJlc3Npb25fbHo0X2N1c3RvbV9mb3JtYXQuZHVtcCIsCisJCV0s CisJfSwKKwljb21wcmVzc2lvbl9sejRfZGlyZWN0b3J5X2Zvcm1hdCA9PiB7CisJCXRlc3Rfa2V5 ID0+ICdjb21wcmVzc2lvbicsCisJCWR1bXBfY21kID0+IFsKKwkJCSdwZ19kdW1wJywgJy0tbm8t c3luYycsCisJCQknLS1mb3JtYXQ9ZGlyZWN0b3J5JywgJy0tY29tcHJlc3M9bHo0JywKKwkJCSIt LWZpbGU9JHRlbXBkaXIvY29tcHJlc3Npb25fbHo0X2RpcmVjdG9yeV9mb3JtYXQiLAorCQkJJ3Bv c3RncmVzJywKKwkJXSwKKwkJIyBHaXZlIGNvdmVyYWdlIGZvciBtYW51YWxseSBjb21wcmVzc2Vk IHRvYy5kYXQgZmlsZXMgZHVyaW5nIHJlc3RvcmUuCisJCWNvbXByZXNzaW9uID0+IHsKKwkJCW1l dGhvZCA9PiAnbHo0JywKKwkJCWNtZCA9PiBbCisJCQkJJEVOVnsnTFo0J30sCisJCQkJJy16Jywg Jy1mJywgJy0tcm0nLAorCQkJCSIkdGVtcGRpci9jb21wcmVzc2lvbl9sejRfZGlyZWN0b3J5X2Zv cm1hdC90b2MuZGF0IiwKKwkJCQkiJHRlbXBkaXIvY29tcHJlc3Npb25fbHo0X2RpcmVjdG9yeV9m b3JtYXQvdG9jLmRhdC5sejQiLAorCQkJXSwKKwkJfSwKKwkJcmVzdG9yZV9jbWQgPT4gWworCQkJ J3BnX3Jlc3RvcmUnLAorCQkJIi0tZmlsZT0kdGVtcGRpci9jb21wcmVzc2lvbl9sejRfZGlyZWN0 b3J5X2Zvcm1hdC5zcWwiLAorCQkJIiR0ZW1wZGlyL2NvbXByZXNzaW9uX2x6NF9kaXJlY3Rvcnlf Zm9ybWF0IiwKIAkJXSwKIAl9LAorCWNvbXByZXNzaW9uX2x6NF9kaXJlY3RvcnlfZm9ybWF0X3Bh cmFsbGVsID0+IHsKKwkJdGVzdF9rZXkgPT4gJ2NvbXByZXNzaW9uJywKKwkJZHVtcF9jbWQgPT4g WworCQkJJ3BnX2R1bXAnLCAnLS1uby1zeW5jJywgJy0tam9icz0yJywKKwkJCSctLWZvcm1hdD1k aXJlY3RvcnknLCAnLS1jb21wcmVzcz1sejQ6OScsCisJCQkiLS1maWxlPSR0ZW1wZGlyL2NvbXBy ZXNzaW9uX2x6NF9kaXJlY3RvcnlfZm9ybWF0X3BhcmFsbGVsIiwKKwkJCSdwb3N0Z3JlcycsCisJ CV0sCisJCSMgR2l2ZSBjb3ZlcmFnZSBmb3IgbWFudWFsbHkgY29tcHJlc3NlZCBibG9iLnRvYyBm aWxlcyBkdXJpbmcgcmVzdG9yZS4KKwkJY29tcHJlc3Npb24gPT4geworCQkJbWV0aG9kID0+ICds ejQnLAorCQkJY21kID0+IFsKKwkJCQkkRU5WeydMWjQnfSwKKwkJCQknLXonLCAnLWYnLCAnLS1y bScsCisJCQkJIiR0ZW1wZGlyL2NvbXByZXNzaW9uX2x6NF9kaXJlY3RvcnlfZm9ybWF0X3BhcmFs bGVsL2Jsb2JzLnRvYyIsCisJCQkJIiR0ZW1wZGlyL2NvbXByZXNzaW9uX2x6NF9kaXJlY3Rvcnlf Zm9ybWF0X3BhcmFsbGVsL2Jsb2JzLnRvYy5sejQiLAorCQkJXSwKKwkJfSwKKwkJcmVzdG9yZV9j bWQgPT4gWworCQkJJ3BnX3Jlc3RvcmUnLCAnLS1qb2JzPTInLAorCQkJIi0tZmlsZT0kdGVtcGRp ci9jb21wcmVzc2lvbl9sejRfZGlyZWN0b3J5X2Zvcm1hdF9wYXJhbGxlbC5zcWwiLAorCQkJIiR0 ZW1wZGlyL2NvbXByZXNzaW9uX2x6NF9kaXJlY3RvcnlfZm9ybWF0X3BhcmFsbGVsIiwKKwkJXSwK Kwl9LAorCSMgQ2hlY2sgdGhhdCB0aGUgb3V0cHV0IGlzIHZhbGlkIGx6NAorCWNvbXByZXNzaW9u X2x6NF9wbGFpbl9mb3JtYXQgPT4geworCQl0ZXN0X2tleSA9PiAnY29tcHJlc3Npb24nLAorCQlk dW1wX2NtZCA9PiBbCisJCQkncGdfZHVtcCcsCisJCQknLS1uby1zeW5jJywKKwkJCSctLWZvcm1h dD1wbGFpbicsICctLWNvbXByZXNzPWx6NDoxJywKKwkJCSItLWZpbGU9JHRlbXBkaXIvY29tcHJl c3Npb25fbHo0X3BsYWluX2Zvcm1hdC5zcWwubHo0IiwKKwkJCSdwb3N0Z3JlcycsCisJCV0sCisJ CWNvbXByZXNzaW9uID0+IHsKKwkJCW1ldGhvZCA9PiAnbHo0JywKKwkJCWNtZCA9PiBbCisJCQkJ JEVOVntMWjR9LCAnLWQnLCAnLWYnLAorCQkJCSIkdGVtcGRpci9jb21wcmVzc2lvbl9sejRfcGxh aW5fZm9ybWF0LnNxbC5sejQiLAorCQkJCSIkdGVtcGRpci9jb21wcmVzc2lvbl9sejRfcGxhaW5f Zm9ybWF0LnNxbCIsCisJCQldLAorCQl9CisJfSwKIAljb21wcmVzc2lvbl9ub25lX2Rpcl9mb3Jt YXQgPT4gewogCQl0ZXN0X2tleSA9PiAnY29tcHJlc3Npb24nLAogCQlkdW1wX2NtZCA9PiBbCkBA IC0xMzgsMTAgKzIyOCwxMyBAQCBteSAlcGdkdW1wX3J1bnMgPSAoCiAJCQkiLS1maWxlPSR0ZW1w ZGlyL2NvbXByZXNzaW9uX25vbmVfZGlyX2Zvcm1hdCIsCiAJCQkncG9zdGdyZXMnLAogCQldLAot CQlnbG9iX21hdGNoID0+IHsKLQkJCW5vX21hdGNoID0+ICIkdGVtcGRpci9jb21wcmVzc2lvbl9u b25lX2Rpcl9mb3JtYXQvKi5kYXQuZ3oiLAotCQkJbWF0Y2ggPT4gIiR0ZW1wZGlyL2NvbXByZXNz aW9uX25vbmVfZGlyX2Zvcm1hdC8qLmRhdCIsCi0JCQltYXRjaF9jb3VudCA9PiAyLCAjIHRvYy5k YXQgYW5kIG1vcmUKKwkJY29tcHJlc3Npb24gPT4geworCQkJbWV0aG9kID0+ICdnemlwJywKKwkJ CWdsb2JfbWF0Y2ggPT4geworCQkJCW5vX21hdGNoID0+ICIkdGVtcGRpci9jb21wcmVzc2lvbl9u b25lX2Rpcl9mb3JtYXQvKi5kYXQuZ3oiLAorCQkJCW1hdGNoID0+ICIkdGVtcGRpci9jb21wcmVz c2lvbl9ub25lX2Rpcl9mb3JtYXQvKi5kYXQiLAorCQkJCW1hdGNoX2NvdW50ID0+IDIsICMgdG9j LmRhdCBhbmQgbW9yZQorCQkJfSwKIAkJfSwKIAkJcmVzdG9yZV9jbWQgPT4gWwogCQkJJ3BnX3Jl c3RvcmUnLCAnLUZkJywKQEAgLTE0OSw2ICsyNDIsMjYgQEAgbXkgJXBnZHVtcF9ydW5zID0gKAog CQkJIiR0ZW1wZGlyL2NvbXByZXNzaW9uX25vbmVfZGlyX2Zvcm1hdCIsCiAJCV0sCiAJfSwKKwlj b21wcmVzc2lvbl9kZWZhdWx0X2Rpcl9mb3JtYXQgPT4geworCQl0ZXN0X2tleSA9PiAnY29tcHJl c3Npb24nLAorCQlkdW1wX2NtZCA9PiBbCisJCQkncGdfZHVtcCcsICctRmQnLAorCQkJIi0tZmls ZT0kdGVtcGRpci9jb21wcmVzc2lvbl9kZWZhdWx0X2Rpcl9mb3JtYXQiLAorCQkJJ3Bvc3RncmVz JywKKwkJXSwKKwkJY29tcHJlc3Npb24gPT4geworCQkJbWV0aG9kID0+ICdnemlwJywKKwkJCWds b2JfbWF0Y2ggPT4geworCQkJCW1hdGNoID0+ICIkdGVtcGRpci9jb21wcmVzc2lvbl9kZWZhdWx0 X2Rpcl9mb3JtYXQvKi5kYXQuZ3oiLAorCQkJCW1hdGNoX2NvdW50ID0+IDEsICMgZGF0YQorCQkJ fSwKKwkJfSwKKwkJcmVzdG9yZV9jbWQgPT4gWworCQkJJ3BnX3Jlc3RvcmUnLCAnLUZkJywKKwkJ CSItLWZpbGU9JHRlbXBkaXIvY29tcHJlc3Npb25fZGVmYXVsdF9kaXJfZm9ybWF0LnNxbCIsCisJ CQkiJHRlbXBkaXIvY29tcHJlc3Npb25fZGVmYXVsdF9kaXJfZm9ybWF0IiwKKwkJXSwKKwl9LAog CWNsZWFuID0+IHsKIAkJZHVtcF9jbWQgPT4gWwogCQkJJ3BnX2R1bXAnLApAQCAtMzk1Myw0NSAr NDA2Niw0OCBAQCBmb3JlYWNoIG15ICRydW4gKHNvcnQga2V5cyAlcGdkdW1wX3J1bnMpCiAJbXkg JHRlc3Rfa2V5ID0gJHJ1bjsKIAlteSAkcnVuX2RiICAgPSAncG9zdGdyZXMnOwogCi0JbXkgJHN1 cHBvcnRzX2NvbXByZXNzaW9uID0gY2hlY2tfcGdfY29uZmlnKCIjZGVmaW5lIEhBVkVfTElCWiAx Iik7Ci0JbXkgJGNvbXByZXNzX3Byb2dyYW0gPSAkRU5We0daSVBfUFJPR1JBTX07CisJbXkgJGd6 aXBfcHJvZ3JhbSA9IGRlZmluZWQoJEVOVntHWklQX1BST0dSQU19KSAmJiAkRU5We0daSVBfUFJP R1JBTX0gbmUgJyc7CisJbXkgJGx6NF9wcm9ncmFtID0gZGVmaW5lZCgkRU5We0xaNH0pICYmICRF TlZ7TFo0fSBuZSAnJzsKKwlteSAkc3VwcG9ydHNfZ3ppcCA9IGNoZWNrX3BnX2NvbmZpZygiI2Rl ZmluZSBIQVZFX0xJQlogMSIpOworCW15ICRzdXBwb3J0c19jb21wcmVzc2lvbiA9ICRzdXBwb3J0 c19nemlwIHx8ICRzdXBwb3J0c19sejQ7CiAKIAkkbm9kZS0+Y29tbWFuZF9vayhcQHsgJHBnZHVt cF9ydW5zeyRydW59LT57ZHVtcF9jbWR9IH0sCiAJCSIkcnVuOiBwZ19kdW1wIHJ1bnMiKTsKIAot CWlmIChkZWZpbmVkKCRwZ2R1bXBfcnVuc3skcnVufS0+e2NvbXByZXNzX2NtZH0pKQotCXsKLQkJ IyBTa2lwIGNvbXByZXNzaW9uX2NtZCB0ZXN0cyB3aGVuIGNvbXByZXNzaW9uIGlzIG5vdCBzdXBw b3J0ZWQsCi0JCSMgYXMgdGhlIHJlc3VsdCBpcyB1bmNvbXByZXNzZWQgb3IgdGhlIHV0aWxpdHkg cHJvZ3JhbSBkb2VzIG5vdAotCQkjIGV4aXN0Ci0JCW5leHQgaWYgISRzdXBwb3J0c19jb21wcmVz c2lvbiB8fCAhZGVmaW5lZCgkY29tcHJlc3NfcHJvZ3JhbSkKLQkJCQl8fCAkY29tcHJlc3NfcHJv Z3JhbSBlcSAnJzsKLQkJY29tbWFuZF9vayggXEB7ICRwZ2R1bXBfcnVuc3skcnVufS0+e2NvbXBy ZXNzX2NtZH0gfSwKLQkJCSIkcnVuOiBjb21wcmVzc2lvbiBjb21tYW5kcyIpOwotCX0KLQlpZiAo ZGVmaW5lZCgkcGdkdW1wX3J1bnN7JHJ1bn0tPntnbG9iX21hdGNofSkpCisJaWYgKGRlZmluZWQo JHBnZHVtcF9ydW5zeyRydW59LT57J2NvbXByZXNzaW9uJ30pKQogCXsKIAkJIyBTa2lwIGNvbXBy ZXNzaW9uX2NtZCB0ZXN0cyB3aGVuIGNvbXByZXNzaW9uIGlzIG5vdCBzdXBwb3J0ZWQsCiAJCSMg YXMgdGhlIHJlc3VsdCBpcyB1bmNvbXByZXNzZWQgb3IgdGhlIHV0aWxpdHkgcHJvZ3JhbSBkb2Vz IG5vdAogCQkjIGV4aXN0Ci0JCW5leHQgaWYgISRzdXBwb3J0c19jb21wcmVzc2lvbiB8fCAhZGVm aW5lZCgkY29tcHJlc3NfcHJvZ3JhbSkKLQkJCQl8fCAkY29tcHJlc3NfcHJvZ3JhbSBlcSAnJzsK KwkJbmV4dCBpZiAhJHN1cHBvcnRzX2NvbXByZXNzaW9uOwogCi0JCW15ICRtYXRjaCA9ICRwZ2R1 bXBfcnVuc3skcnVufS0+e2dsb2JfbWF0Y2h9LT57bWF0Y2h9OwotCQlteSAkbWF0Y2hfY291bnQg PSBkZWZpbmVkKCRwZ2R1bXBfcnVuc3skcnVufS0+e2dsb2JfbWF0Y2h9LT57bWF0Y2hfY291bnR9 KSA/Ci0JCQkJCQkJJHBnZHVtcF9ydW5zeyRydW59LT57Z2xvYl9tYXRjaH0tPnttYXRjaF9jb3Vu dH0gOiAxOwotCQlteSBAZ2xvYl9tYXRjaGVkID0gZ2xvYiAkbWF0Y2g7CisJCW15ICgkY29tcHJl c3Npb24pID0gJHBnZHVtcF9ydW5zeyRydW59LT57J2NvbXByZXNzaW9uJ307CiAKLQkJY21wX29r KHNjYWxhcihAZ2xvYl9tYXRjaGVkKSwgJz49JywgJG1hdGNoX2NvdW50LAotCQkJIkV4cGVjdGVk IGF0IGxlYXN0ICRtYXRjaF9jb3VudCBmaWxlKHMpIG1hdGNoaW5nICRtYXRjaCIpOworCQluZXh0 IGlmICR7Y29tcHJlc3Npb259LT57bWV0aG9kfSBlcSAnZ3ppcCcgJiYgKCEkZ3ppcF9wcm9ncmFt IHx8ICEkc3VwcG9ydHNfZ3ppcCk7CisJCW5leHQgaWYgJHtjb21wcmVzc2lvbn0tPnttZXRob2R9 IGVxICdsejQnICAmJiAoISRsejRfcHJvZ3JhbSB8fCAhJHN1cHBvcnRzX2x6NCk7CiAKLQkJaWYg KGRlZmluZWQoJHBnZHVtcF9ydW5zeyRydW59LT57Z2xvYl9tYXRjaH0tPntub19tYXRjaH0pKQor CQlpZiAoZGVmaW5lZCgkY29tcHJlc3Npb24tPntjbWR9KSkKIAkJewotCQkJbXkgJG5vX21hdGNo ID0gJHBnZHVtcF9ydW5zeyRydW59LT57Z2xvYl9tYXRjaH0tPntub19tYXRjaH07Ci0JCQlteSBA Z2xvYl9tYXRjaGVkID0gZ2xvYiAkbm9fbWF0Y2g7CisJCQljb21tYW5kX29rKCBcQHsgJGNvbXBy ZXNzaW9uLT57Y21kfSB9LCAiJHJ1bjogY29tcHJlc3Npb24gY29tbWFuZHMiKTsKKwkJfQorCisJ CWlmIChkZWZpbmVkKCRjb21wcmVzc2lvbi0+e2dsb2JfbWF0Y2h9KSkKKwkJeworCQkJbXkgJG1h dGNoID0gJGNvbXByZXNzaW9uLT57Z2xvYl9tYXRjaH0tPnttYXRjaH07CisJCQlteSAkbWF0Y2hf Y291bnQgPSAkY29tcHJlc3Npb24tPntnbG9iX21hdGNofS0+e21hdGNoX2NvdW50fTsKKwkJCW15 IEBnbG9iX21hdGNoZWQgPSBnbG9iICRtYXRjaDsKKworCQkJY21wX29rKHNjYWxhcihAZ2xvYl9t YXRjaGVkKSwgJz49JywgJG1hdGNoX2NvdW50LAorCQkJCSJFeHBlY3RlZCBhdCBsZWFzdCAkbWF0 Y2hfY291bnQgZmlsZShzKSBtYXRjaGluZyAkbWF0Y2giKTsKIAotCQkJY21wX29rKHNjYWxhcihA Z2xvYl9tYXRjaGVkKSwgJz09JywgMCwKLQkJCQkiRXhwZWN0ZWQgbm8gZmlsZShzKSBtYXRjaGlu ZyAkbm9fbWF0Y2giKTsKKwkJCWlmIChkZWZpbmVkKCRwZ2R1bXBfcnVuc3skcnVufS0+e2dsb2Jf bWF0Y2h9LT57bm9fbWF0Y2h9KSkKKwkJCXsKKwkJCQlteSAkbm9fbWF0Y2ggPSAkcGdkdW1wX3J1 bnN7JHJ1bn0tPntnbG9iX21hdGNofS0+e25vX21hdGNofTsKKwkJCQlteSBAZ2xvYl9ub3RfbWF0 Y2hlZCA9IGdsb2IgJG5vX21hdGNoOworCisJCQkJY21wX29rKHNjYWxhcihAZ2xvYl9ub3RfbWF0 Y2hlZCksICc9PScsIDAsCisJCQkJCSJFeHBlY3RlZCBubyBmaWxlKHMpIG1hdGNoaW5nICRub19t YXRjaCIpOworCQkJfQogCQl9CiAJfQogCi0tIAoyLjMzLjAKCg== --000000000000b26ed405db131b3f--