Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1qMBWL-001d6z-Tt for pgsql-hackers@arkaria.postgresql.org; Wed, 19 Jul 2023 18:03:30 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1qMBWK-008rpe-9L for pgsql-hackers@arkaria.postgresql.org; Wed, 19 Jul 2023 18:03:28 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1qMBWJ-008rld-Un for pgsql-hackers@lists.postgresql.org; Wed, 19 Jul 2023 18:03:28 +0000 Received: from mail-oi1-x22a.google.com ([2607:f8b0:4864:20::22a]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1qMBWF-000UIE-VC for pgsql-hackers@postgresql.org; Wed, 19 Jul 2023 18:03:27 +0000 Received: by mail-oi1-x22a.google.com with SMTP id 5614622812f47-3a3c77e0154so5215418b6e.1 for ; Wed, 19 Jul 2023 11:03:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=neon-tech.20221208.gappssmtp.com; s=20221208; t=1689789803; x=1692381803; h=in-reply-to:references:message-id:cc:from:to:subject:date :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=3BSQlKh8kZX80u7hSetSDDpUg/OZ9i/hOHTnrlIa7xY=; b=bcx1ujRxpLUIuQ68L98Ua71oFGKj3vBpnXNmdTufh7l4uQ26M92GaakibBv5p6rXrW vY+YY4I4JjgQMkWhWiOFJgzSf89BDdA/YFKL7FFuwRkecnZs6UUuCOGGp43FqpfMrRal 5IGwksTEmHSiQf/d5DKzMtSK/m1SoEqtoo1UdL0gFCPdNSj360X8uCWkBDE+5F1q3msn rNQsA5V3ytquObSToHLAfZBgs44FXZT3i8zsxspSzorXUwH/M3ahpzv+11Anfe08vhJR FMZ77ufhpmeJwAbQxx15CcO0ztIE1L5hiQnfrioL6GbA5vnKPMs9Tm0oy2BY73OHnMbc /cJw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1689789803; x=1692381803; h=in-reply-to:references:message-id:cc:from:to:subject:date :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=3BSQlKh8kZX80u7hSetSDDpUg/OZ9i/hOHTnrlIa7xY=; b=ZfxrafDQNZsDHLzprYw8zITmSdXtRZ/NUayLsxyfnLyjKJb1ue7Ea0qD9892GLehql 6N/amyohz8iRkEIRX3QY+kifkzHF0rpOrArb5Z453zv4/05pY2vT1dGElEj47BSZulzR vGutZS9ly4HmHA8QmwoOgxhUUkmlDljbRvefjfGeUZLXgHFTAYkFugLexI65u77ZuHdK Z6EaW2ukvZeZYpRZIDACL9g64j3cpwkztPGUfF+ei0rq8viw9mDuFJNOaaJyZ+uHRHKy H1xFNGEdVTZp4SCkAbFOOIcTH+icAz15OR+pMtXrMFzlVJEkXhzokp+Lqnt7iYdmHG1H L50g== X-Gm-Message-State: ABy/qLbcbfPy4SxJFATFdPh8Ax/KqYtilBGwS7IFPYYbNADyYqLkMqNR rWPZQrRFRb4HLF8Uj8hF9lY+iXOX1fur0Zak4lA= X-Google-Smtp-Source: APBJJlEvI6EnNutj3YxOV6XNFrKUbISS5LsDR3Y5n1N9tavL6ky8i+pFbztRIAOPEiBZfM9y63/dGQ== X-Received: by 2002:a05:6808:1992:b0:3a3:9b9c:204f with SMTP id bj18-20020a056808199200b003a39b9c204fmr3712580oib.25.1689789803323; Wed, 19 Jul 2023 11:03:23 -0700 (PDT) Received: from localhost ([2607:fb90:f280:130d:3996:e070:71ee:42fb]) by smtp.gmail.com with ESMTPSA id dt2-20020a056808624200b003a3c757ea22sm1997512oib.50.2023.07.19.11.03.22 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 19 Jul 2023 11:03:22 -0700 (PDT) Content-Type: multipart/mixed; boundary=afffd4bf087818a6af2305faa7b462e0e231158e9474c1aac86f4325d4f5 Mime-Version: 1.0 Date: Wed, 19 Jul 2023 13:03:21 -0500 Subject: Re: Use COPY for populating all pgbench tables To: "Tristan Partin" , "Michael Paquier" From: "Tristan Partin" Cc: Message-Id: X-Mailer: aerc 0.15.2-105-g00bf476582f7 References: In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --afffd4bf087818a6af2305faa7b462e0e231158e9474c1aac86f4325d4f5 Content-Type: multipart/alternative; boundary=beef026c755688b336308879a59565f3248b00fcfb272f5cfa9109815908 --beef026c755688b336308879a59565f3248b00fcfb272f5cfa9109815908 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Content-Type: text/plain; charset=UTF-8; format=Flowed Didn't actually include the changes in the previous patch. --=20 Tristan Partin Neon (https://neon.tech) --beef026c755688b336308879a59565f3248b00fcfb272f5cfa9109815908-- --afffd4bf087818a6af2305faa7b462e0e231158e9474c1aac86f4325d4f5 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v5-0001-Use-COPY-instead-of-INSERT-for-populating-all-tab.patch Content-Type: text/x-patch; charset=utf-8; name=v5-0001-Use-COPY-instead-of-INSERT-for-populating-all-tab.patch RnJvbSA1YjkzNDY5MWI4OGIzYjJjNTY3NWJjNzc4YjBhMTBlOWVlZmYzZGJlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUcmlzdGFuIFBhcnRpbiA8dHJpc3RhbkBuZW9uLnRlY2g+CkRh dGU6IFR1ZSwgMjMgTWF5IDIwMjMgMTE6NDg6MTYgLTA1MDAKU3ViamVjdDogW1BBVENIIHY1XSBV c2UgQ09QWSBpbnN0ZWFkIG9mIElOU0VSVCBmb3IgcG9wdWxhdGluZyBhbGwgdGFibGVzCgpDT1BZ IGlzIGEgYmV0dGVyIGludGVyZmFjZSBmb3IgYnVsayBsb2FkaW5nIGFuZC9vciBoaWdoIGxhdGVu Y3kKY29ubmVjdGlvbnMuIFByZXZpb3VzbHkgQ09QWSB3YXMgb25seSB1c2VkIGZvciB0aGUgcGdi ZW5jaF9hY2NvdW50cwp0YWJsZSBiZWNhdXNlIHRoZSBhbW91bnQgb2YgZGF0YSB3YXMgc28gbXVj aCBsYXJnZXIgdGhhbiB0aGUgb3RoZXIKdGFibGVzLiBIb3dldmVyLCBhcyBhbHJlYWR5IHNhaWQg dGhlcmUgYXJlIGFsc28gZ2FpbnMgdG8gYmUgaGFkIGluIHRoZQpoaWdoIGxhdGVuY3kgY2FzZSwg c3VjaCBhcyBsb2FkaW5nIGRhdGEgYWNyb3NzIGNvbnRpbmVudHMuCi0tLQogZG9jL3NyYy9zZ21s L3JlZi9wZ2JlbmNoLnNnbWwgfCAgIDggKy0KIHNyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMgICAg IHwgMTUzICsrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0KIDIgZmlsZXMgY2hhbmdl ZCwgOTQgaW5zZXJ0aW9ucygrKSwgNjcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3Ny Yy9zZ21sL3JlZi9wZ2JlbmNoLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL3BnYmVuY2guc2dtbApp bmRleCA4NTAwMjg1NTdkLi40NDI0NTk1Y2M2IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVm L3BnYmVuY2guc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL3BnYmVuY2guc2dtbApAQCAtMjMx LDEwICsyMzEsMTAgQEAgcGdiZW5jaCA8b3B0aW9uYWw+IDxyZXBsYWNlYWJsZT5vcHRpb25zPC9y ZXBsYWNlYWJsZT4gPC9vcHRpb25hbD4gPHJlcGxhY2VhYmxlPmQKICAgICAgICAgICAgIGV4dGVu c2l2ZWx5IHRocm91Z2ggYSA8Y29tbWFuZD5DT1BZPC9jb21tYW5kPi4KICAgICAgICAgICAgIDxj b21tYW5kPnBnYmVuY2g8L2NvbW1hbmQ+IHVzZXMgdGhlIEZSRUVaRSBvcHRpb24gd2l0aCB2ZXJz aW9uIDE0IG9yIGxhdGVyCiAgICAgICAgICAgICBvZiA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwv cHJvZHVjdG5hbWU+IHRvIHNwZWVkIHVwCi0gICAgICAgICAgICBzdWJzZXF1ZW50IDxjb21tYW5k PlZBQ1VVTTwvY29tbWFuZD4sIHVubGVzcyBwYXJ0aXRpb25zIGFyZSBlbmFibGVkLgotICAgICAg ICAgICAgVXNpbmcgPGxpdGVyYWw+ZzwvbGl0ZXJhbD4gY2F1c2VzIGxvZ2dpbmcgdG8gcHJpbnQg b25lIG1lc3NhZ2UKLSAgICAgICAgICAgIGV2ZXJ5IDEwMCwwMDAgcm93cyB3aGlsZSBnZW5lcmF0 aW5nIGRhdGEgZm9yIHRoZQotICAgICAgICAgICAgPHN0cnVjdG5hbWU+cGdiZW5jaF9hY2NvdW50 czwvc3RydWN0bmFtZT4gdGFibGUuCisgICAgICAgICAgICBzdWJzZXF1ZW50IDxjb21tYW5kPlZB Q1VVTTwvY29tbWFuZD4uIElmIHBhcnRpdGlvbnMgYXJlIGVuYWJsZWQgZm9yCisgICAgICAgICAg ICB0aGUgPGxpdGVyYWw+cGdiZW5jaF9hY2NvdW50czwvbGl0ZXJhbD4gdGFibGUsIHRoZSBGUkVF WkUgb3B0aW9uIGlzCisgICAgICAgICAgICBub3QgZW5hYmxlZC4gVXNpbmcgPGxpdGVyYWw+Zzwv bGl0ZXJhbD4gY2F1c2VzIGxvZ2dpbmcgdG8gcHJpbnQgb25lCisgICAgICAgICAgICBtZXNzYWdl IGV2ZXJ5IDEwMCwwMDAgcm93cyB3aGlsZSBnZW5lcmF0aW5nIGRhdGEgZm9yIGFsbCB0YWJsZXMu CiAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICBXaXRo IDxsaXRlcmFsPkc8L2xpdGVyYWw+IChzZXJ2ZXItc2lkZSBkYXRhIGdlbmVyYXRpb24pLApkaWZm IC0tZ2l0IGEvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYyBiL3NyYy9iaW4vcGdiZW5jaC9wZ2Jl bmNoLmMKaW5kZXggMDg3YmFhN2Q1Ny4uOGNjMmUyYmNhNCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9w Z2JlbmNoL3BnYmVuY2guYworKysgYi9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCkBAIC00ODU5 LDE3ICs0ODU5LDQ2IEBAIGluaXRUcnVuY2F0ZVRhYmxlcyhQR2Nvbm4gKmNvbikKIAkJCQkJICJw Z2JlbmNoX3RlbGxlcnMiKTsKIH0KIAotLyoKLSAqIEZpbGwgdGhlIHN0YW5kYXJkIHRhYmxlcyB3 aXRoIHNvbWUgZGF0YSBnZW5lcmF0ZWQgYW5kIHNlbnQgZnJvbSB0aGUgY2xpZW50Ci0gKi8KK3R5 cGVkZWYgdm9pZCBpbml0Um93KFBRRXhwQnVmZmVyRGF0YSAqc3FsLCBpbnQ2NCBjdXJyKTsKKwog c3RhdGljIHZvaWQKLWluaXRHZW5lcmF0ZURhdGFDbGllbnRTaWRlKFBHY29ubiAqY29uKQoraW5p dEJyYW5jaChQUUV4cEJ1ZmZlckRhdGEgKnNxbCwgaW50NjQgY3VycikKK3sKKwkvKiAiZmlsbGVy IiBjb2x1bW4gZGVmYXVsdHMgdG8gTlVMTCAqLworCXByaW50ZlBRRXhwQnVmZmVyKHNxbCwKKwkJ CQkJICBJTlQ2NF9GT1JNQVQgIlx0MFx0XG4iLAorCQkJCQkgIGN1cnIgKyAxKTsKK30KKworc3Rh dGljIHZvaWQKK2luaXRUZWxsZXIoUFFFeHBCdWZmZXJEYXRhICpzcWwsIGludDY0IGN1cnIpCit7 CisJLyogImZpbGxlciIgY29sdW1uIGRlZmF1bHRzIHRvIE5VTEwgKi8KKwlwcmludGZQUUV4cEJ1 ZmZlcihzcWwsCisJCQkJCSAgSU5UNjRfRk9STUFUICJcdCIgSU5UNjRfRk9STUFUICJcdDBcdFxu IiwKKwkJCQkJICBjdXJyICsgMSwgY3VyciAvIG50ZWxsZXJzICsgMSk7Cit9CisKK3N0YXRpYyB2 b2lkCitpbml0QWNjb3VudChQUUV4cEJ1ZmZlckRhdGEgKnNxbCwgaW50NjQgY3VycikKIHsKKwkv KiAiZmlsbGVyIiBjb2x1bW4gZGVmYXVsdHMgdG8gYmxhbmsgcGFkZGVkIGVtcHR5IHN0cmluZyAq LworCXByaW50ZlBRRXhwQnVmZmVyKHNxbCwKKwkJCQkJICBJTlQ2NF9GT1JNQVQgIlx0IiBJTlQ2 NF9GT1JNQVQgIlx0MFx0XG4iLAorCQkJCQkgIGN1cnIgKyAxLCBjdXJyIC8gbmFjY291bnRzICsg MSk7Cit9CisKK3N0YXRpYyB2b2lkCitpbml0UG9wdWxhdGVUYWJsZShQR2Nvbm4gKmNvbiwgY29u c3QgY2hhciAqdGFibGUsIGludDY0IGJhc2UsIGluaXRSb3cgKmluaXRfcm93KQoreworCWludAkJ CW47CisJaW50CQkJazsKKwlpbnQJCQljaGFycyA9IDA7CisJUEdyZXN1bHQJKnJlczsKIAlQUUV4 cEJ1ZmZlckRhdGEgc3FsOwotCVBHcmVzdWx0ICAgKnJlczsKLQlpbnQJCQlpOwotCWludDY0CQlr OwotCWNoYXIJICAgKmNvcHlfc3RhdGVtZW50OworCWNoYXIgCQljb3B5X3N0YXRlbWVudFsyNTZd OworCWNvbnN0IGNoYXIgKmNvcHlfc3RhdGVtZW50X2ZtdCA9ICJjb3B5ICVzIGZyb20gc3RkaW4i OworCWNvbnN0IGludDY0IHRvdGFsID0gYmFzZSAqIHNjYWxlOwogCiAJLyogdXNlZCB0byB0cmFj ayBlbGFwc2VkIHRpbWUgYW5kIGVzdGltYXRlIG9mIHRoZSByZW1haW5pbmcgdGltZSAqLwogCXBn X3RpbWVfdXNlY190IHN0YXJ0OwpAQCAtNDg3OCw1MCArNDkwNywyNCBAQCBpbml0R2VuZXJhdGVE YXRhQ2xpZW50U2lkZShQR2Nvbm4gKmNvbikKIAkvKiBTdGF5IG9uIHRoZSBzYW1lIGxpbmUgaWYg cmVwb3J0aW5nIHRvIGEgdGVybWluYWwgKi8KIAljaGFyCQllb2wgPSBpc2F0dHkoZmlsZW5vKHN0 ZGVycikpID8gJ1xyJyA6ICdcbic7CiAKLQlmcHJpbnRmKHN0ZGVyciwgImdlbmVyYXRpbmcgZGF0 YSAoY2xpZW50LXNpZGUpLi4uXG4iKTsKLQotCS8qCi0JICogd2UgZG8gYWxsIG9mIHRoaXMgaW4g b25lIHRyYW5zYWN0aW9uIHRvIGVuYWJsZSB0aGUgYmFja2VuZCdzCi0JICogZGF0YS1sb2FkaW5n IG9wdGltaXphdGlvbnMKLQkgKi8KLQlleGVjdXRlU3RhdGVtZW50KGNvbiwgImJlZ2luIik7Ci0K LQkvKiB0cnVuY2F0ZSBhd2F5IGFueSBvbGQgZGF0YSAqLwotCWluaXRUcnVuY2F0ZVRhYmxlcyhj b24pOwotCiAJaW5pdFBRRXhwQnVmZmVyKCZzcWwpOwogCiAJLyoKLQkgKiBmaWxsIGJyYW5jaGVz LCB0ZWxsZXJzLCBhY2NvdW50cyBpbiB0aGF0IG9yZGVyIGluIGNhc2UgZm9yZWlnbiBrZXlzCi0J ICogYWxyZWFkeSBleGlzdAorCSAqIFVzZSBDT1BZIHdpdGggRlJFRVpFIG9uIHYxNCBhbmQgbGF0 ZXIgd2l0aG91dCBwYXJ0aXRpb25pbmcuICBSZW1lbWJlcgorCSAqIHRoYXQgcGFydGl0aW9ucyBv bmx5IGFwcGxpZXMgdG8gcGdiZW5jaF9hY2NvdW50cy4KIAkgKi8KLQlmb3IgKGkgPSAwOyBpIDwg bmJyYW5jaGVzICogc2NhbGU7IGkrKykKLQl7Ci0JCS8qICJmaWxsZXIiIGNvbHVtbiBkZWZhdWx0 cyB0byBOVUxMICovCi0JCXByaW50ZlBRRXhwQnVmZmVyKCZzcWwsCi0JCQkJCQkgICJpbnNlcnQg aW50byBwZ2JlbmNoX2JyYW5jaGVzKGJpZCxiYmFsYW5jZSkgdmFsdWVzKCVkLDApIiwKLQkJCQkJ CSAgaSArIDEpOwotCQlleGVjdXRlU3RhdGVtZW50KGNvbiwgc3FsLmRhdGEpOwotCX0KKwlpZiAo UFFzZXJ2ZXJWZXJzaW9uKGNvbikgPj0gMTQwMDAwKSB7CisJCWNvbnN0IGJvb2wgaXNfcGdiZW5j aF9hY2NvdW50cyA9IHN0cmNtcCh0YWJsZSwgInBnYmVuY2hfYWNjb3VudHMiKSA9PSAwOwogCi0J Zm9yIChpID0gMDsgaSA8IG50ZWxsZXJzICogc2NhbGU7IGkrKykKLQl7Ci0JCS8qICJmaWxsZXIi IGNvbHVtbiBkZWZhdWx0cyB0byBOVUxMICovCi0JCXByaW50ZlBRRXhwQnVmZmVyKCZzcWwsCi0J CQkJCQkgICJpbnNlcnQgaW50byBwZ2JlbmNoX3RlbGxlcnModGlkLGJpZCx0YmFsYW5jZSkgdmFs dWVzICglZCwlZCwwKSIsCi0JCQkJCQkgIGkgKyAxLCBpIC8gbnRlbGxlcnMgKyAxKTsKLQkJZXhl Y3V0ZVN0YXRlbWVudChjb24sIHNxbC5kYXRhKTsKKwkJaWYgKCFpc19wZ2JlbmNoX2FjY291bnRz IHx8IHBhcnRpdGlvbnMgPT0gMCkKKwkJCWNvcHlfc3RhdGVtZW50X2ZtdCA9ICJjb3B5ICVzIGZy b20gc3RkaW4gd2l0aCAoZnJlZXplIG9uKSI7CiAJfQogCi0JLyoKLQkgKiBhY2NvdW50cyBpcyBi aWcgZW5vdWdoIHRvIGJlIHdvcnRoIHVzaW5nIENPUFkgYW5kIHRyYWNraW5nIHJ1bnRpbWUKLQkg Ki8KLQotCS8qIHVzZSBDT1BZIHdpdGggRlJFRVpFIG9uIHYxNCBhbmQgbGF0ZXIgd2l0aG91dCBw YXJ0aXRpb25pbmcgKi8KLQlpZiAocGFydGl0aW9ucyA9PSAwICYmIFBRc2VydmVyVmVyc2lvbihj b24pID49IDE0MDAwMCkKLQkJY29weV9zdGF0ZW1lbnQgPSAiY29weSBwZ2JlbmNoX2FjY291bnRz IGZyb20gc3RkaW4gd2l0aCAoZnJlZXplIG9uKSI7Ci0JZWxzZQotCQljb3B5X3N0YXRlbWVudCA9 ICJjb3B5IHBnYmVuY2hfYWNjb3VudHMgZnJvbSBzdGRpbiI7CisJbiA9IHBnX3NucHJpbnRmKGNv cHlfc3RhdGVtZW50LCBzaXplb2YoY29weV9zdGF0ZW1lbnQpLCBjb3B5X3N0YXRlbWVudF9mbXQs IHRhYmxlKTsKKwlpZiAobiA+PSBzaXplb2YoY29weV9zdGF0ZW1lbnQpKQorCQlwZ19mYXRhbCgi aW52YWxpZCBidWZmZXIgc2l6ZTogbXVzdCBiZSBhdCBsZWFzdCAlZCBjaGFyYWN0ZXJzIGxvbmci LCBuKTsKKwllbHNlIGlmIChuID09IC0xKQorCQlwZ19mYXRhbCgiaW52YWxpZCBmb3JtYXQgc3Ry aW5nIik7CiAKIAlyZXMgPSBQUWV4ZWMoY29uLCBjb3B5X3N0YXRlbWVudCk7CiAKQEAgLTQ5MzEs MTQgKzQ5MzQsMTEgQEAgaW5pdEdlbmVyYXRlRGF0YUNsaWVudFNpZGUoUEdjb25uICpjb24pCiAK IAlzdGFydCA9IHBnX3RpbWVfbm93KCk7CiAKLQlmb3IgKGsgPSAwOyBrIDwgKGludDY0KSBuYWNj b3VudHMgKiBzY2FsZTsgaysrKQorCWZvciAoayA9IDA7IGsgPCB0b3RhbDsgaysrKQogCXsKLQkJ aW50NjQJCWogPSBrICsgMTsKKwkJY29uc3QgaW50NjQJCWogPSBrICsgMTsKIAotCQkvKiAiZmls bGVyIiBjb2x1bW4gZGVmYXVsdHMgdG8gYmxhbmsgcGFkZGVkIGVtcHR5IHN0cmluZyAqLwotCQlw cmludGZQUUV4cEJ1ZmZlcigmc3FsLAotCQkJCQkJICBJTlQ2NF9GT1JNQVQgIlx0IiBJTlQ2NF9G T1JNQVQgIlx0MFx0XG4iLAotCQkJCQkJICBqLCBrIC8gbmFjY291bnRzICsgMSk7CisJCWluaXRf cm93KCZzcWwsIGspOwogCQlpZiAoUFFwdXRsaW5lKGNvbiwgc3FsLmRhdGEpKQogCQkJcGdfZmF0 YWwoIlBRcHV0bGluZSBmYWlsZWQiKTsKIApAQCAtNDk1MiwyNSArNDk1MiwyNiBAQCBpbml0R2Vu ZXJhdGVEYXRhQ2xpZW50U2lkZShQR2Nvbm4gKmNvbikKIAkJaWYgKCghdXNlX3F1aWV0KSAmJiAo aiAlIDEwMDAwMCA9PSAwKSkKIAkJewogCQkJZG91YmxlCQllbGFwc2VkX3NlYyA9IFBHX1RJTUVf R0VUX0RPVUJMRShwZ190aW1lX25vdygpIC0gc3RhcnQpOwotCQkJZG91YmxlCQlyZW1haW5pbmdf c2VjID0gKChkb3VibGUpIHNjYWxlICogbmFjY291bnRzIC0gaikgKiBlbGFwc2VkX3NlYyAvIGo7 CisJCQlkb3VibGUJCXJlbWFpbmluZ19zZWMgPSAoKGRvdWJsZSkgdG90YWwgLSBqKSAqIGVsYXBz ZWRfc2VjIC8gajsKIAotCQkJZnByaW50ZihzdGRlcnIsIElOVDY0X0ZPUk1BVCAiIG9mICIgSU5U NjRfRk9STUFUICIgdHVwbGVzICglZCUlKSBkb25lIChlbGFwc2VkICUuMmYgcywgcmVtYWluaW5n ICUuMmYgcyklYyIsCi0JCQkJCWosIChpbnQ2NCkgbmFjY291bnRzICogc2NhbGUsCi0JCQkJCShp bnQpICgoKGludDY0KSBqICogMTAwKSAvIChuYWNjb3VudHMgKiAoaW50NjQpIHNjYWxlKSksCi0J CQkJCWVsYXBzZWRfc2VjLCByZW1haW5pbmdfc2VjLCBlb2wpOworCQkJY2hhcnMgPSBmcHJpbnRm KHN0ZGVyciwgSU5UNjRfRk9STUFUICIgb2YgIiBJTlQ2NF9GT1JNQVQgIiB0dXBsZXMgKCVkJSUp IG9mICVzIGRvbmUgKGVsYXBzZWQgJS4yZiBzLCByZW1haW5pbmcgJS4yZiBzKSVjIiwKKwkJCQkJ aiwgdG90YWwsCisJCQkJCShpbnQpICgoaiAqIDEwMCkgLyB0b3RhbCksCisJCQkJCXRhYmxlLCBl bGFwc2VkX3NlYywgcmVtYWluaW5nX3NlYywgZW9sKTsKIAkJfQogCQkvKiBsZXQncyBub3QgY2Fs bCB0aGUgdGltaW5nIGZvciBlYWNoIHJvdywgYnV0IG9ubHkgZWFjaCAxMDAgcm93cyAqLwogCQll bHNlIGlmICh1c2VfcXVpZXQgJiYgKGogJSAxMDAgPT0gMCkpCiAJCXsKIAkJCWRvdWJsZQkJZWxh cHNlZF9zZWMgPSBQR19USU1FX0dFVF9ET1VCTEUocGdfdGltZV9ub3coKSAtIHN0YXJ0KTsKLQkJ CWRvdWJsZQkJcmVtYWluaW5nX3NlYyA9ICgoZG91YmxlKSBzY2FsZSAqIG5hY2NvdW50cyAtIGop ICogZWxhcHNlZF9zZWMgLyBqOworCQkJZG91YmxlCQlyZW1haW5pbmdfc2VjID0gKChkb3VibGUp IHRvdGFsIC0gaikgKiBlbGFwc2VkX3NlYyAvIGo7CiAKIAkJCS8qIGhhdmUgd2UgcmVhY2hlZCB0 aGUgbmV4dCBpbnRlcnZhbCAob3IgZW5kKT8gKi8KLQkJCWlmICgoaiA9PSBzY2FsZSAqIG5hY2Nv dW50cykgfHwgKGVsYXBzZWRfc2VjID49IGxvZ19pbnRlcnZhbCAqIExPR19TVEVQX1NFQ09ORFMp KQorCQkJaWYgKChqID09IHRvdGFsKSB8fCAoZWxhcHNlZF9zZWMgPj0gbG9nX2ludGVydmFsICog TE9HX1NURVBfU0VDT05EUykpCiAJCQl7Ci0JCQkJZnByaW50ZihzdGRlcnIsIElOVDY0X0ZPUk1B VCAiIG9mICIgSU5UNjRfRk9STUFUICIgdHVwbGVzICglZCUlKSBkb25lIChlbGFwc2VkICUuMmYg cywgcmVtYWluaW5nICUuMmYgcyklYyIsCi0JCQkJCQlqLCAoaW50NjQpIG5hY2NvdW50cyAqIHNj YWxlLAotCQkJCQkJKGludCkgKCgoaW50NjQpIGogKiAxMDApIC8gKG5hY2NvdW50cyAqIChpbnQ2 NCkgc2NhbGUpKSwgZWxhcHNlZF9zZWMsIHJlbWFpbmluZ19zZWMsIGVvbCk7CisJCQkJY2hhcnMg PSBmcHJpbnRmKHN0ZGVyciwgSU5UNjRfRk9STUFUICIgb2YgIiBJTlQ2NF9GT1JNQVQgIiB0dXBs ZXMgKCVkJSUpIG9mICVzIGRvbmUgKGVsYXBzZWQgJS4yZiBzLCByZW1haW5pbmcgJS4yZiBzKSVj IiwKKwkJCQkJCWosIHRvdGFsLAorCQkJCQkJKGludCkgKChqICogMTAwKSAvIHRvdGFsKSwKKwkJ CQkJCXRhYmxlLCBlbGFwc2VkX3NlYywgcmVtYWluaW5nX3NlYywgZW9sKTsKIAogCQkJCS8qIHNr aXAgdG8gdGhlIG5leHQgaW50ZXJ2YWwgKi8KIAkJCQlsb2dfaW50ZXJ2YWwgPSAoaW50KSBjZWls KGVsYXBzZWRfc2VjIC8gTE9HX1NURVBfU0VDT05EUyk7CkBAIC00OTc4LDggKzQ5NzksOCBAQCBp bml0R2VuZXJhdGVEYXRhQ2xpZW50U2lkZShQR2Nvbm4gKmNvbikKIAkJfQogCX0KIAotCWlmIChl b2wgIT0gJ1xuJykKLQkJZnB1dGMoJ1xuJywgc3RkZXJyKTsJLyogTmVlZCB0byBtb3ZlIHRvIG5l eHQgbGluZSAqLworCWlmIChjaGFycyAhPSAwICYmIGVvbCAhPSAnXG4nKQorCQlmcHJpbnRmKHN0 ZGVyciwgIiUqY1xyIiwgY2hhcnMgLSAxLCAnICcpOyAvKiBDbGVhciB0aGUgY3VycmVudCBsaW5l ICovCiAKIAlpZiAoUFFwdXRsaW5lKGNvbiwgIlxcLlxuIikpCiAJCXBnX2ZhdGFsKCJ2ZXJ5IGxh c3QgUFFwdXRsaW5lIGZhaWxlZCIpOwpAQCAtNDk4Nyw2ICs0OTg4LDMyIEBAIGluaXRHZW5lcmF0 ZURhdGFDbGllbnRTaWRlKFBHY29ubiAqY29uKQogCQlwZ19mYXRhbCgiUFFlbmRjb3B5IGZhaWxl ZCIpOwogCiAJdGVybVBRRXhwQnVmZmVyKCZzcWwpOworfQorCisvKgorICogRmlsbCB0aGUgc3Rh bmRhcmQgdGFibGVzIHdpdGggc29tZSBkYXRhIGdlbmVyYXRlZCBhbmQgc2VudCBmcm9tIHRoZSBj bGllbnQKKyAqLworc3RhdGljIHZvaWQKK2luaXRHZW5lcmF0ZURhdGFDbGllbnRTaWRlKFBHY29u biAqY29uKQoreworCWZwcmludGYoc3RkZXJyLCAiZ2VuZXJhdGluZyBkYXRhIChjbGllbnQtc2lk ZSkuLi5cbiIpOworCisJLyoKKwkgKiB3ZSBkbyBhbGwgb2YgdGhpcyBpbiBvbmUgdHJhbnNhY3Rp b24gdG8gZW5hYmxlIHRoZSBiYWNrZW5kJ3MKKwkgKiBkYXRhLWxvYWRpbmcgb3B0aW1pemF0aW9u cworCSAqLworCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCAiYmVnaW4iKTsKKworCS8qIHRydW5jYXRl IGF3YXkgYW55IG9sZCBkYXRhICovCisJaW5pdFRydW5jYXRlVGFibGVzKGNvbik7CisKKwkvKgor CSAqIGZpbGwgYnJhbmNoZXMsIHRlbGxlcnMsIGFjY291bnRzIGluIHRoYXQgb3JkZXIgaW4gY2Fz ZSBmb3JlaWduIGtleXMKKwkgKiBhbHJlYWR5IGV4aXN0CisJICovCisJaW5pdFBvcHVsYXRlVGFi bGUoY29uLCAicGdiZW5jaF9icmFuY2hlcyIsIG5icmFuY2hlcywgaW5pdEJyYW5jaCk7CisJaW5p dFBvcHVsYXRlVGFibGUoY29uLCAicGdiZW5jaF90ZWxsZXJzIiwgbnRlbGxlcnMsIGluaXRUZWxs ZXIpOworCWluaXRQb3B1bGF0ZVRhYmxlKGNvbiwgInBnYmVuY2hfYWNjb3VudHMiLCBuYWNjb3Vu dHMsIGluaXRBY2NvdW50KTsKIAogCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCAiY29tbWl0Iik7CiB9 Ci0tIApUcmlzdGFuIFBhcnRpbgpOZW9uIChodHRwczovL25lb24udGVjaCkKCg== --afffd4bf087818a6af2305faa7b462e0e231158e9474c1aac86f4325d4f5--