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 1q9St0-0002qi-C9 for pgsql-hackers@arkaria.postgresql.org; Wed, 14 Jun 2023 15:58:18 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1q9Ssx-0002qO-GS for pgsql-hackers@arkaria.postgresql.org; Wed, 14 Jun 2023 15:58:15 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1q9Ssx-0002qE-0n for pgsql-hackers@lists.postgresql.org; Wed, 14 Jun 2023 15:58:15 +0000 Received: from mail-oo1-xc34.google.com ([2607:f8b0:4864:20::c34]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1q9Sss-002MGV-3Q for pgsql-hackers@postgresql.org; Wed, 14 Jun 2023 15:58:14 +0000 Received: by mail-oo1-xc34.google.com with SMTP id 006d021491bc7-559b0ddcd4aso692060eaf.0 for ; Wed, 14 Jun 2023 08:58:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=neon-tech.20221208.gappssmtp.com; s=20221208; t=1686758288; x=1689350288; h=in-reply-to:references:message-id:subject:from:to:date:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=WG9u2eY3NHOVvQZOWErvdVRnMnwEy6ryu9fVLgFDBj0=; b=adNyTCNhAsBZmpmcPMXEVsqDkn/0cT415HzvaCT8oz9G4Dp4h4Gdvn1AmHAARf1qvM x3h0/SaLuM+rYZPnfjMx4vaQG396CZoQl3TAm2iWgM/sA4GI/+nEOiUZpy3p85NqAhIF DFJQsEw9A2gDgA3COCGgftw3b+NxdHuPhpI/JvGgh9uBYWiUlQRylepyMeqWv+aS1za1 wq3gnquAyRN5NN/8pNtVtGqhkIKzRhoLB30VElE0m/CKNXZ0uMAD0wVyiIlTjEuvXwoe 6AfCvIOTMXGfZh4hahh2xzWji+lYDzKBtE4WyTg39sW3Kdwn0En8IuWxF/OuPwyHFEwn 4Xiw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686758288; x=1689350288; h=in-reply-to:references:message-id:subject:from:to:date:mime-version :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=WG9u2eY3NHOVvQZOWErvdVRnMnwEy6ryu9fVLgFDBj0=; b=aLorSYvz76W4PX6USZxOD5joMtgmQuUbA8Kne81u+69ih527ev2S/gaHjcu7wiGtBu rXeHPs4JSibWORWGHrjt4hUtRQZn25TYznkTfff6WusxKAk8SGskyFBCjgvuqlhdXr/9 o2PVR+c0uQb5QtinIu/oawYL9sl+v2tInV8AEepZeAadIcR2Z4/eo+LKQSdcsIoWAMPM SOiZv+ozgAbciI0/NNczw5t/ZQSck5kIq9ETSNocLYws4SWcdXfkrLcnStP2TFdp59xb Ez4Y4AFNqIT63r6pR/0R2ol+dkOoLFe4h2juvd+IQNyWHaySGNNEnqh8yqO0GWnU13Eq ACPQ== X-Gm-Message-State: AC+VfDxv3iqmfeSv9E7uE+BVP4+BCpbcEdMklTMAdMVskW1f9SZxMQaa iE0QA1cjawUpcH4NBQaMwQLXfvDiZ4fXtL52Jok= X-Google-Smtp-Source: ACHHUZ50lmmzSNgp/MrVOB/ZoqcReUx8p9HUFjmCJwEokNLysrFylPsgPUdOlt80OXRZ0xTWq16LQA== X-Received: by 2002:a05:6808:3cd:b0:397:fe29:c526 with SMTP id o13-20020a05680803cd00b00397fe29c526mr10843723oie.10.1686758288310; Wed, 14 Jun 2023 08:58:08 -0700 (PDT) Received: from localhost ([2607:fb90:e696:c1dc:3996:e070:71ee:42fb]) by smtp.gmail.com with ESMTPSA id fu24-20020a0568082a7800b00396324838e7sm6018496oib.10.2023.06.14.08.58.07 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 14 Jun 2023 08:58:07 -0700 (PDT) Content-Type: multipart/mixed; boundary=8453ff440af1cc7423d67f3895b882b74764f8e3721fef27a4b863fbd284 Mime-Version: 1.0 Date: Wed, 14 Jun 2023 10:58:06 -0500 To: "Tristan Partin" , From: "Tristan Partin" Subject: Re: Use COPY for populating all pgbench tables Message-Id: X-Mailer: aerc 0.15.2-46-g263d8cbec504 References: In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --8453ff440af1cc7423d67f3895b882b74764f8e3721fef27a4b863fbd284 Content-Type: multipart/alternative; boundary=46835c8942a574938739a6db38deb3ef79ce746cfb975cebce6e870ea073 --46835c8942a574938739a6db38deb3ef79ce746cfb975cebce6e870ea073 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Content-Type: text/plain; charset=UTF-8 Again, I forget to actually attach. Holy guacamole. --=20 Tristan Partin Neon (https://neon.tech) --46835c8942a574938739a6db38deb3ef79ce746cfb975cebce6e870ea073-- --8453ff440af1cc7423d67f3895b882b74764f8e3721fef27a4b863fbd284 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v2-0001-Move-constant-into-format-string.patch Content-Type: text/x-patch; charset=utf-8; name=v2-0001-Move-constant-into-format-string.patch RnJvbSA4YzRlYjQ4NDliMTI4MmYxYTA5NDdkZGNmM2Y1OTllMzg0YTVhNDI4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUcmlzdGFuIFBhcnRpbiA8dHJpc3RhbkBuZW9uLnRlY2g+CkRh dGU6IFR1ZSwgMjMgTWF5IDIwMjMgMDk6MjE6NTUgLTA1MDAKU3ViamVjdDogW1BBVENIIHYyIDEv Ml0gTW92ZSBjb25zdGFudCBpbnRvIGZvcm1hdCBzdHJpbmcKCklmIHdlIGFyZSBhbHdheXMgZ29p bmcgdG8gd3JpdGUgYSAwLCBqdXN0IHB1dCB0aGUgMCBpbiB0aGUgZm9ybWF0CnN0cmluZy4KLS0t CiBzcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBp bnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdiZW5j aC9wZ2JlbmNoLmMgYi9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCmluZGV4IDFkMTY3MGQ0YzIu LjMyMGQzNDhhMGYgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMKKysrIGIv c3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYwpAQCAtNDk0Nyw4ICs0OTQ3LDggQEAgaW5pdEdlbmVy YXRlRGF0YUNsaWVudFNpZGUoUEdjb25uICpjb24pCiAKIAkJLyogImZpbGxlciIgY29sdW1uIGRl ZmF1bHRzIHRvIGJsYW5rIHBhZGRlZCBlbXB0eSBzdHJpbmcgKi8KIAkJcHJpbnRmUFFFeHBCdWZm ZXIoJnNxbCwKLQkJCQkJCSAgSU5UNjRfRk9STUFUICJcdCIgSU5UNjRfRk9STUFUICJcdCVkXHRc biIsCi0JCQkJCQkgIGosIGsgLyBuYWNjb3VudHMgKyAxLCAwKTsKKwkJCQkJCSAgSU5UNjRfRk9S TUFUICJcdCIgSU5UNjRfRk9STUFUICJcdDBcdFxuIiwKKwkJCQkJCSAgaiwgayAvIG5hY2NvdW50 cyArIDEpOwogCQlpZiAoUFFwdXRsaW5lKGNvbiwgc3FsLmRhdGEpKQogCQkJcGdfZmF0YWwoIlBR cHV0bGluZSBmYWlsZWQiKTsKIAotLSAKVHJpc3RhbiBQYXJ0aW4KTmVvbiAoaHR0cHM6Ly9uZW9u LnRlY2gpCgo= --8453ff440af1cc7423d67f3895b882b74764f8e3721fef27a4b863fbd284 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v2-0002-Use-COPY-instead-of-INSERT-for-populating-all-tab.patch Content-Type: text/x-patch; charset=utf-8; name=v2-0002-Use-COPY-instead-of-INSERT-for-populating-all-tab.patch RnJvbSA4YzU3M2NiZWRlMjI4YTViNTU3MGQzY2EzNzA1NWJkNDBkNGE0MDI1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUcmlzdGFuIFBhcnRpbiA8dHJpc3RhbkBuZW9uLnRlY2g+CkRh dGU6IFR1ZSwgMjMgTWF5IDIwMjMgMTE6NDg6MTYgLTA1MDAKU3ViamVjdDogW1BBVENIIHYyIDIv Ml0gVXNlIENPUFkgaW5zdGVhZCBvZiBJTlNFUlQgZm9yIHBvcHVsYXRpbmcgYWxsIHRhYmxlcwoK Q09QWSBpcyBhIGJldHRlciBpbnRlcmZhY2UgZm9yIGJ1bGsgbG9hZGluZyBhbmQvb3IgaGlnaCBs YXRlbmN5CmNvbm5lY3Rpb25zLiBQcmV2aW91c2x5IENPUFkgd2FzIG9ubHkgdXNlZCBmb3IgdGhl IHBnYmVuY2hfYWNjb3VudHMKdGFibGUgYmVjYXVzZSB0aGUgYW1vdW50IG9mIGRhdGEgd2FzIHNv IG11Y2ggbGFyZ2VyIHRoYW4gdGhlIG90aGVyCnRhYmxlcy4gSG93ZXZlciwgYXMgYWxyZWFkeSBz YWlkIHRoZXJlIGFyZSBhbHNvIGdhaW5zIHRvIGJlIGhhZCBpbiB0aGUKaGlnaCBsYXRlbmN5IGNh c2UsIHN1Y2ggYXMgbG9hZGluZyBkYXRhIGFjcm9zcyBjb250aW5lbnRzLgotLS0KIHNyYy9iaW4v cGdiZW5jaC9wZ2JlbmNoLmMgfCAxNTIgKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0t LS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA4NyBpbnNlcnRpb25zKCspLCA2NSBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jIGIvc3JjL2Jpbi9wZ2JlbmNo L3BnYmVuY2guYwppbmRleCAzMjBkMzQ4YTBmLi45YzU3ZjdlNGE3IDEwMDY0NAotLS0gYS9zcmMv YmluL3BnYmVuY2gvcGdiZW5jaC5jCisrKyBiL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMKQEAg LTQ4NjksMTcgKzQ4NjksNDYgQEAgaW5pdFRydW5jYXRlVGFibGVzKFBHY29ubiAqY29uKQogCQkJ CQkgInBnYmVuY2hfdGVsbGVycyIpOwogfQogCi0vKgotICogRmlsbCB0aGUgc3RhbmRhcmQgdGFi bGVzIHdpdGggc29tZSBkYXRhIGdlbmVyYXRlZCBhbmQgc2VudCBmcm9tIHRoZSBjbGllbnQKLSAq LwordHlwZWRlZiB2b2lkIGluaXRSb3coUEdjb25uICpjb24sIFBRRXhwQnVmZmVyRGF0YSAqc3Fs LCBpbnQ2NCBjdXJyKTsKKwogc3RhdGljIHZvaWQKLWluaXRHZW5lcmF0ZURhdGFDbGllbnRTaWRl KFBHY29ubiAqY29uKQoraW5pdEJyYW5jaChQR2Nvbm4gKmNvbiwgUFFFeHBCdWZmZXJEYXRhICpz cWwsIGludDY0IGN1cnIpCit7CisJLyogImZpbGxlciIgY29sdW1uIGRlZmF1bHRzIHRvIE5VTEwg Ki8KKwlwcmludGZQUUV4cEJ1ZmZlcihzcWwsCisJCQkJCSAgSU5UNjRfRk9STUFUICJcdDBcdFxu IiwKKwkJCQkJICBjdXJyICsgMSk7Cit9CisKK3N0YXRpYyB2b2lkCitpbml0VGVsbGVyKFBHY29u biAqY29uLCBQUUV4cEJ1ZmZlckRhdGEgKnNxbCwgaW50NjQgY3VycikKK3sKKwkvKiAiZmlsbGVy IiBjb2x1bW4gZGVmYXVsdHMgdG8gTlVMTCAqLworCXByaW50ZlBRRXhwQnVmZmVyKHNxbCwKKwkJ CQkJICBJTlQ2NF9GT1JNQVQgIlx0IiBJTlQ2NF9GT1JNQVQgIlx0MFx0XG4iLAorCQkJCQkgIGN1 cnIgKyAxLCBjdXJyIC8gbnRlbGxlcnMgKyAxKTsKK30KKworc3RhdGljIHZvaWQKK2luaXRBY2Nv dW50KFBHY29ubiAqY29uLCBQUUV4cEJ1ZmZlckRhdGEgKnNxbCwgaW50NjQgY3VycikKK3sKKwkv KiAiZmlsbGVyIiBjb2x1bW4gZGVmYXVsdHMgdG8gYmxhbmsgcGFkZGVkIGVtcHR5IHN0cmluZyAq LworCXByaW50ZlBRRXhwQnVmZmVyKHNxbCwKKwkJCQkJICBJTlQ2NF9GT1JNQVQgIlx0IiBJTlQ2 NF9GT1JNQVQgIlx0MFx0XG4iLAorCQkJCQkgIGN1cnIgKyAxLCBjdXJyIC8gbmFjY291bnRzICsg MSk7Cit9CisKK3N0YXRpYyB2b2lkCitpbml0UG9wdWxhdGVUYWJsZShQR2Nvbm4gKmNvbiwgY29u c3QgY2hhciAqdGFibGUsIGludDY0IGJhc2UsIGluaXRSb3cgKmluaXRfcm93KQogeworCWludAkJ CW47CisJaW50CQkJazsKKwlpbnQJCQljaGFycyA9IDA7CisJUEdyZXN1bHQJKnJlczsKIAlQUUV4 cEJ1ZmZlckRhdGEgc3FsOwotCVBHcmVzdWx0ICAgKnJlczsKLQlpbnQJCQlpOwotCWludDY0CQlr OwotCWNoYXIJICAgKmNvcHlfc3RhdGVtZW50OworCWNoYXIgCQljb3B5X3N0YXRlbWVudFsyNTZd OworCWNvbnN0IGNoYXIgKmNvcHlfc3RhdGVtZW50X2ZtdDsKKwljb25zdCBpbnQ2NCB0b3RhbCA9 IGJhc2UgKiBzY2FsZTsKIAogCS8qIHVzZWQgdG8gdHJhY2sgZWxhcHNlZCB0aW1lIGFuZCBlc3Rp bWF0ZSBvZiB0aGUgcmVtYWluaW5nIHRpbWUgKi8KIAlwZ190aW1lX3VzZWNfdCBzdGFydDsKQEAg LTQ4ODgsNTAgKzQ5MTcsMTkgQEAgaW5pdEdlbmVyYXRlRGF0YUNsaWVudFNpZGUoUEdjb25uICpj b24pCiAJLyogU3RheSBvbiB0aGUgc2FtZSBsaW5lIGlmIHJlcG9ydGluZyB0byBhIHRlcm1pbmFs ICovCiAJY2hhcgkJZW9sID0gaXNhdHR5KGZpbGVubyhzdGRlcnIpKSA/ICdccicgOiAnXG4nOwog Ci0JZnByaW50ZihzdGRlcnIsICJnZW5lcmF0aW5nIGRhdGEgKGNsaWVudC1zaWRlKS4uLlxuIik7 Ci0KLQkvKgotCSAqIHdlIGRvIGFsbCBvZiB0aGlzIGluIG9uZSB0cmFuc2FjdGlvbiB0byBlbmFi bGUgdGhlIGJhY2tlbmQncwotCSAqIGRhdGEtbG9hZGluZyBvcHRpbWl6YXRpb25zCi0JICovCi0J ZXhlY3V0ZVN0YXRlbWVudChjb24sICJiZWdpbiIpOwotCi0JLyogdHJ1bmNhdGUgYXdheSBhbnkg b2xkIGRhdGEgKi8KLQlpbml0VHJ1bmNhdGVUYWJsZXMoY29uKTsKLQogCWluaXRQUUV4cEJ1ZmZl cigmc3FsKTsKIAotCS8qCi0JICogZmlsbCBicmFuY2hlcywgdGVsbGVycywgYWNjb3VudHMgaW4g dGhhdCBvcmRlciBpbiBjYXNlIGZvcmVpZ24ga2V5cwotCSAqIGFscmVhZHkgZXhpc3QKLQkgKi8K LQlmb3IgKGkgPSAwOyBpIDwgbmJyYW5jaGVzICogc2NhbGU7IGkrKykKLQl7Ci0JCS8qICJmaWxs ZXIiIGNvbHVtbiBkZWZhdWx0cyB0byBOVUxMICovCi0JCXByaW50ZlBRRXhwQnVmZmVyKCZzcWws Ci0JCQkJCQkgICJpbnNlcnQgaW50byBwZ2JlbmNoX2JyYW5jaGVzKGJpZCxiYmFsYW5jZSkgdmFs dWVzKCVkLDApIiwKLQkJCQkJCSAgaSArIDEpOwotCQlleGVjdXRlU3RhdGVtZW50KGNvbiwgc3Fs LmRhdGEpOwotCX0KLQotCWZvciAoaSA9IDA7IGkgPCBudGVsbGVycyAqIHNjYWxlOyBpKyspCi0J ewotCQkvKiAiZmlsbGVyIiBjb2x1bW4gZGVmYXVsdHMgdG8gTlVMTCAqLwotCQlwcmludGZQUUV4 cEJ1ZmZlcigmc3FsLAotCQkJCQkJICAiaW5zZXJ0IGludG8gcGdiZW5jaF90ZWxsZXJzKHRpZCxi aWQsdGJhbGFuY2UpIHZhbHVlcyAoJWQsJWQsMCkiLAotCQkJCQkJICBpICsgMSwgaSAvIG50ZWxs ZXJzICsgMSk7Ci0JCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCBzcWwuZGF0YSk7Ci0JfQotCi0JLyoK LQkgKiBhY2NvdW50cyBpcyBiaWcgZW5vdWdoIHRvIGJlIHdvcnRoIHVzaW5nIENPUFkgYW5kIHRy YWNraW5nIHJ1bnRpbWUKLQkgKi8KLQogCS8qIHVzZSBDT1BZIHdpdGggRlJFRVpFIG9uIHYxNCBh bmQgbGF0ZXIgd2l0aG91dCBwYXJ0aXRpb25pbmcgKi8KIAlpZiAocGFydGl0aW9ucyA9PSAwICYm IFBRc2VydmVyVmVyc2lvbihjb24pID49IDE0MDAwMCkKLQkJY29weV9zdGF0ZW1lbnQgPSAiY29w eSBwZ2JlbmNoX2FjY291bnRzIGZyb20gc3RkaW4gd2l0aCAoZnJlZXplIG9uKSI7CisJCWNvcHlf c3RhdGVtZW50X2ZtdCA9ICJjb3B5ICVzIGZyb20gc3RkaW4gd2l0aCAoZnJlZXplIG9uKSI7CiAJ ZWxzZQotCQljb3B5X3N0YXRlbWVudCA9ICJjb3B5IHBnYmVuY2hfYWNjb3VudHMgZnJvbSBzdGRp biI7CisJCWNvcHlfc3RhdGVtZW50X2ZtdCA9ICJjb3B5ICVzIGZyb20gc3RkaW4iOworCisJbiA9 IHBnX3NucHJpbnRmKGNvcHlfc3RhdGVtZW50LCBzaXplb2YoY29weV9zdGF0ZW1lbnQpLCBjb3B5 X3N0YXRlbWVudF9mbXQsIHRhYmxlKTsKKwlpZiAobiA+PSBzaXplb2YoY29weV9zdGF0ZW1lbnQp KQorCQlwZ19mYXRhbCgiaW52YWxpZCBidWZmZXIgc2l6ZTogbXVzdCBiZSBhdCBsZWFzdCAlZCBj aGFyYWN0ZXJzIGxvbmciLCBuKTsKKwllbHNlIGlmIChuID09IC0xKQorCQlwZ19mYXRhbCgiaW52 YWxpZCBmb3JtYXQgc3RyaW5nIik7CiAKIAlyZXMgPSBQUWV4ZWMoY29uLCBjb3B5X3N0YXRlbWVu dCk7CiAKQEAgLTQ5NDEsMTQgKzQ5MzksMTEgQEAgaW5pdEdlbmVyYXRlRGF0YUNsaWVudFNpZGUo UEdjb25uICpjb24pCiAKIAlzdGFydCA9IHBnX3RpbWVfbm93KCk7CiAKLQlmb3IgKGsgPSAwOyBr IDwgKGludDY0KSBuYWNjb3VudHMgKiBzY2FsZTsgaysrKQorCWZvciAoayA9IDA7IGsgPCB0b3Rh bDsgaysrKQogCXsKLQkJaW50NjQJCWogPSBrICsgMTsKKwkJY29uc3QgaW50NjQJCWogPSBrICsg MTsKIAotCQkvKiAiZmlsbGVyIiBjb2x1bW4gZGVmYXVsdHMgdG8gYmxhbmsgcGFkZGVkIGVtcHR5 IHN0cmluZyAqLwotCQlwcmludGZQUUV4cEJ1ZmZlcigmc3FsLAotCQkJCQkJICBJTlQ2NF9GT1JN QVQgIlx0IiBJTlQ2NF9GT1JNQVQgIlx0MFx0XG4iLAotCQkJCQkJICBqLCBrIC8gbmFjY291bnRz ICsgMSk7CisJCWluaXRfcm93KGNvbiwgJnNxbCwgayk7CiAJCWlmIChQUXB1dGxpbmUoY29uLCBz cWwuZGF0YSkpCiAJCQlwZ19mYXRhbCgiUFFwdXRsaW5lIGZhaWxlZCIpOwogCkBAIC00OTYyLDI1 ICs0OTU3LDI2IEBAIGluaXRHZW5lcmF0ZURhdGFDbGllbnRTaWRlKFBHY29ubiAqY29uKQogCQlp ZiAoKCF1c2VfcXVpZXQpICYmIChqICUgMTAwMDAwID09IDApKQogCQl7CiAJCQlkb3VibGUJCWVs YXBzZWRfc2VjID0gUEdfVElNRV9HRVRfRE9VQkxFKHBnX3RpbWVfbm93KCkgLSBzdGFydCk7Ci0J CQlkb3VibGUJCXJlbWFpbmluZ19zZWMgPSAoKGRvdWJsZSkgc2NhbGUgKiBuYWNjb3VudHMgLSBq KSAqIGVsYXBzZWRfc2VjIC8gajsKKwkJCWRvdWJsZQkJcmVtYWluaW5nX3NlYyA9ICgoZG91Ymxl KSB0b3RhbCAtIGopICogZWxhcHNlZF9zZWMgLyBqOwogCi0JCQlmcHJpbnRmKHN0ZGVyciwgSU5U NjRfRk9STUFUICIgb2YgIiBJTlQ2NF9GT1JNQVQgIiB0dXBsZXMgKCVkJSUpIGRvbmUgKGVsYXBz ZWQgJS4yZiBzLCByZW1haW5pbmcgJS4yZiBzKSVjIiwKLQkJCQkJaiwgKGludDY0KSBuYWNjb3Vu dHMgKiBzY2FsZSwKLQkJCQkJKGludCkgKCgoaW50NjQpIGogKiAxMDApIC8gKG5hY2NvdW50cyAq IChpbnQ2NCkgc2NhbGUpKSwKLQkJCQkJZWxhcHNlZF9zZWMsIHJlbWFpbmluZ19zZWMsIGVvbCk7 CisJCQljaGFycyA9IGZwcmludGYoc3RkZXJyLCBJTlQ2NF9GT1JNQVQgIiBvZiAiIElOVDY0X0ZP Uk1BVCAiIHR1cGxlcyAoJWQlJSkgb2YgJXMgZG9uZSAoZWxhcHNlZCAlLjJmIHMsIHJlbWFpbmlu ZyAlLjJmIHMpJWMiLAorCQkJCQlqLCB0b3RhbCwKKwkJCQkJKGludCkgKChqICogMTAwKSAvIHRv dGFsKSwKKwkJCQkJdGFibGUsIGVsYXBzZWRfc2VjLCByZW1haW5pbmdfc2VjLCBlb2wpOwogCQl9 CiAJCS8qIGxldCdzIG5vdCBjYWxsIHRoZSB0aW1pbmcgZm9yIGVhY2ggcm93LCBidXQgb25seSBl YWNoIDEwMCByb3dzICovCiAJCWVsc2UgaWYgKHVzZV9xdWlldCAmJiAoaiAlIDEwMCA9PSAwKSkK IAkJewogCQkJZG91YmxlCQllbGFwc2VkX3NlYyA9IFBHX1RJTUVfR0VUX0RPVUJMRShwZ190aW1l X25vdygpIC0gc3RhcnQpOwotCQkJZG91YmxlCQlyZW1haW5pbmdfc2VjID0gKChkb3VibGUpIHNj YWxlICogbmFjY291bnRzIC0gaikgKiBlbGFwc2VkX3NlYyAvIGo7CisJCQlkb3VibGUJCXJlbWFp bmluZ19zZWMgPSAoKGRvdWJsZSkgdG90YWwgLSBqKSAqIGVsYXBzZWRfc2VjIC8gajsKIAogCQkJ LyogaGF2ZSB3ZSByZWFjaGVkIHRoZSBuZXh0IGludGVydmFsIChvciBlbmQpPyAqLwotCQkJaWYg KChqID09IHNjYWxlICogbmFjY291bnRzKSB8fCAoZWxhcHNlZF9zZWMgPj0gbG9nX2ludGVydmFs ICogTE9HX1NURVBfU0VDT05EUykpCisJCQlpZiAoKGogPT0gdG90YWwpIHx8IChlbGFwc2VkX3Nl YyA+PSBsb2dfaW50ZXJ2YWwgKiBMT0dfU1RFUF9TRUNPTkRTKSkKIAkJCXsKLQkJCQlmcHJpbnRm KHN0ZGVyciwgSU5UNjRfRk9STUFUICIgb2YgIiBJTlQ2NF9GT1JNQVQgIiB0dXBsZXMgKCVkJSUp IGRvbmUgKGVsYXBzZWQgJS4yZiBzLCByZW1haW5pbmcgJS4yZiBzKSVjIiwKLQkJCQkJCWosIChp bnQ2NCkgbmFjY291bnRzICogc2NhbGUsCi0JCQkJCQkoaW50KSAoKChpbnQ2NCkgaiAqIDEwMCkg LyAobmFjY291bnRzICogKGludDY0KSBzY2FsZSkpLCBlbGFwc2VkX3NlYywgcmVtYWluaW5nX3Nl YywgZW9sKTsKKwkJCQljaGFycyA9IGZwcmludGYoc3RkZXJyLCBJTlQ2NF9GT1JNQVQgIiBvZiAi IElOVDY0X0ZPUk1BVCAiIHR1cGxlcyAoJWQlJSkgb2YgJXMgZG9uZSAoZWxhcHNlZCAlLjJmIHMs IHJlbWFpbmluZyAlLjJmIHMpJWMiLAorCQkJCQkJaiwgdG90YWwsCisJCQkJCQkoaW50KSAoKGog KiAxMDApIC8gdG90YWwpLAorCQkJCQkJdGFibGUsIGVsYXBzZWRfc2VjLCByZW1haW5pbmdfc2Vj LCBlb2wpOwogCiAJCQkJLyogc2tpcCB0byB0aGUgbmV4dCBpbnRlcnZhbCAqLwogCQkJCWxvZ19p bnRlcnZhbCA9IChpbnQpIGNlaWwoZWxhcHNlZF9zZWMgLyBMT0dfU1RFUF9TRUNPTkRTKTsKQEAg LTQ5ODgsOCArNDk4NCw4IEBAIGluaXRHZW5lcmF0ZURhdGFDbGllbnRTaWRlKFBHY29ubiAqY29u KQogCQl9CiAJfQogCi0JaWYgKGVvbCAhPSAnXG4nKQotCQlmcHV0YygnXG4nLCBzdGRlcnIpOwkv KiBOZWVkIHRvIG1vdmUgdG8gbmV4dCBsaW5lICovCisJaWYgKGNoYXJzICE9IDAgJiYgZW9sICE9 ICdcbicpCisJCWZwcmludGYoc3RkZXJyLCAiJSpjXHIiLCBjaGFycyAtIDEsICcgJyk7IC8qIENs ZWFyIHRoZSBjdXJyZW50IGxpbmUgKi8KIAogCWlmIChQUXB1dGxpbmUoY29uLCAiXFwuXG4iKSkK IAkJcGdfZmF0YWwoInZlcnkgbGFzdCBQUXB1dGxpbmUgZmFpbGVkIik7CkBAIC00OTk3LDYgKzQ5 OTMsMzIgQEAgaW5pdEdlbmVyYXRlRGF0YUNsaWVudFNpZGUoUEdjb25uICpjb24pCiAJCXBnX2Zh dGFsKCJQUWVuZGNvcHkgZmFpbGVkIik7CiAKIAl0ZXJtUFFFeHBCdWZmZXIoJnNxbCk7Cit9CisK Ky8qCisgKiBGaWxsIHRoZSBzdGFuZGFyZCB0YWJsZXMgd2l0aCBzb21lIGRhdGEgZ2VuZXJhdGVk IGFuZCBzZW50IGZyb20gdGhlIGNsaWVudAorICovCitzdGF0aWMgdm9pZAoraW5pdEdlbmVyYXRl RGF0YUNsaWVudFNpZGUoUEdjb25uICpjb24pCit7CisJZnByaW50ZihzdGRlcnIsICJnZW5lcmF0 aW5nIGRhdGEgKGNsaWVudC1zaWRlKS4uLlxuIik7CisKKwkvKgorCSAqIHdlIGRvIGFsbCBvZiB0 aGlzIGluIG9uZSB0cmFuc2FjdGlvbiB0byBlbmFibGUgdGhlIGJhY2tlbmQncworCSAqIGRhdGEt bG9hZGluZyBvcHRpbWl6YXRpb25zCisJICovCisJZXhlY3V0ZVN0YXRlbWVudChjb24sICJiZWdp biIpOworCisJLyogdHJ1bmNhdGUgYXdheSBhbnkgb2xkIGRhdGEgKi8KKwlpbml0VHJ1bmNhdGVU YWJsZXMoY29uKTsKKworCS8qCisJICogZmlsbCBicmFuY2hlcywgdGVsbGVycywgYWNjb3VudHMg aW4gdGhhdCBvcmRlciBpbiBjYXNlIGZvcmVpZ24ga2V5cworCSAqIGFscmVhZHkgZXhpc3QKKwkg Ki8KKwlpbml0UG9wdWxhdGVUYWJsZShjb24sICJwZ2JlbmNoX2JyYW5jaGVzIiwgbmJyYW5jaGVz LCBpbml0QnJhbmNoKTsKKwlpbml0UG9wdWxhdGVUYWJsZShjb24sICJwZ2JlbmNoX3RlbGxlcnMi LCBudGVsbGVycywgaW5pdFRlbGxlcik7CisJaW5pdFBvcHVsYXRlVGFibGUoY29uLCAicGdiZW5j aF9hY2NvdW50cyIsIG5hY2NvdW50cywgaW5pdEFjY291bnQpOwogCiAJZXhlY3V0ZVN0YXRlbWVu dChjb24sICJjb21taXQiKTsKIH0KLS0gClRyaXN0YW4gUGFydGluCk5lb24gKGh0dHBzOi8vbmVv bi50ZWNoKQoK --8453ff440af1cc7423d67f3895b882b74764f8e3721fef27a4b863fbd284--