Received: from maia.hub.org (unknown [200.46.204.183]) by mail.postgresql.org (Postfix) with ESMTP id D2C1E633E4C; Fri, 2 Apr 2010 03:06:16 -0300 (ADT) Received: from mail.postgresql.org ([200.46.204.86]) by maia.hub.org (mx1.hub.org [200.46.204.183]) (amavisd-maia, port 10024) with ESMTP id 94874-07; Fri, 2 Apr 2010 06:06:06 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from mail-yx0-f198.google.com (mail-yx0-f198.google.com [209.85.210.198]) by mail.postgresql.org (Postfix) with ESMTP id 15467633E38; Fri, 2 Apr 2010 03:06:06 -0300 (ADT) Received: by yxe36 with SMTP id 36so1437354yxe.13 for ; Thu, 01 Apr 2010 23:06:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:received:message-id:subject:from:to:cc:content-type; bh=eGjYdXD8gCN2uJx6OBykVAlsXYEmm+0lqffBt/chp3o=; b=LKGzrB1NmyWI5fL1DjmpBo6lLuBG1DSkWbZiTTV+ShiDelzCz6YT9t/Jzyr0IufYTp HHNHzkAE1zqeb2ZTuXfqoJtnXzXkIKVCvU8KyBOz42pKRGQnXyLAMCXo9HeNqgmxrEoC KGhctsdYPX0qgVq841LJ1onb09Xx95lsRqnvk= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; b=wPyDlq20FXDTTvtrvWP3y/t4dvgPj0dxWTBNGe9nG+RAvBn2LdX2uDI605wDimd3S2 vsUefuAM5OAHjQmBcaUGj0z4ZzImTTgjkQyTKpVLQoudQ1K9H+JDf9a5WdNawjrXuo5p YiiPMQEenpwBCIYy7eD/nEt0gF9HKDJyFVBK8= MIME-Version: 1.0 Received: by 10.100.253.9 with HTTP; Thu, 1 Apr 2010 23:06:04 -0700 (PDT) In-Reply-To: References: <3f0b79eb1003300152g5327eb47w8f9aecae6002b215@mail.gmail.com> <4BB49B0C.1050901@enterprisedb.com> <19262.1270142946@sss.pgh.pa.us> <4BB4952D0200002500030333@gw.wicourts.gov> <4BB4DBEF.3010301@agliodbs.com> Date: Fri, 2 Apr 2010 15:06:04 +0900 Received: by 10.101.126.3 with SMTP id d3mr4681714ann.92.1270188365050; Thu, 01 Apr 2010 23:06:05 -0700 (PDT) Message-ID: Subject: Re: [HACKERS] Streaming replication document improvements From: Fujii Masao To: Robert Haas Cc: Josh Berkus , Kevin Grittner , Tom Lane , Heikki Linnakangas , pgsql-docs@postgresql.org, PostgreSQL-development Content-Type: multipart/mixed; boundary=001636ed6b614bf56604833ac6a6 X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=-0.838 tagged_above=-10 required=5 tests=BAYES_00=-2.599, FS_REPLICA=1.041, SARE_SPEC_REPLICA=0.72 X-Spam-Level: X-Archive-Number: 201004/10 X-Sequence-Number: 5409 --001636ed6b614bf56604833ac6a6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable On Fri, Apr 2, 2010 at 2:58 AM, Robert Haas wrote: > It's probably also easy to fix so that it doesn't NEED to be documented. > > The thing is, when dealing with new features, we reduce our overall > maintenance burden if we get it right the first time. =A0Obviously it's > too late for major changes, but minor adjustments to maintain the POLA > seem like exactly what we SHOULD be doing right now. The attached patch implements the Heikki's proposal: ---------- ReservedBackends =3D superuser_reserved_connections + max_wal_senders MaxBackends =3D max_connections + autovacuum_max_workers + max_wal_senders = + 1 ---------- This change looks like minor adjustments rather than major changes. I have one question: In the patch, max_wal_senders is ignored by CheckRequiredParameterValues() as autovacuum_max_workers is already. Is this OK for HS? Regards, --=20 Fujii Masao NIPPON TELEGRAPH AND TELEPHONE CORPORATION NTT Open Source Software Center --001636ed6b614bf56604833ac6a6 Content-Type: application/octet-stream; name="replication_connections_v1.patch" Content-Disposition: attachment; filename="replication_connections_v1.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_g7ikjzjv0 KioqIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wb3N0bWFzdGVyLmMKLS0tIGIvc3JjL2JhY2tl bmQvcG9zdG1hc3Rlci9wb3N0bWFzdGVyLmMKKioqKioqKioqKioqKioqCioqKiAxNjIsMTc1ICoq KiogY2hhcgkgICAqTGlzdGVuQWRkcmVzc2VzOwogIAogIC8qCiAgICogUmVzZXJ2ZWRCYWNrZW5k cyBpcyB0aGUgbnVtYmVyIG9mIGJhY2tlbmRzIHJlc2VydmVkIGZvciBzdXBlcnVzZXIgdXNlLgoh ICAqIFRoaXMgbnVtYmVyIGlzIHRha2VuIG91dCBvZiB0aGUgcG9vbCBzaXplIGdpdmVuIGJ5IE1h eEJhY2tlbmRzIHNvCiEgICogbnVtYmVyIG9mIGJhY2tlbmQgc2xvdHMgYXZhaWxhYmxlIHRvIG5v bi1zdXBlcnVzZXJzIGlzCiEgICogKE1heEJhY2tlbmRzIC0gUmVzZXJ2ZWRCYWNrZW5kcykuICBO b3RlIHdoYXQgdGhpcyByZWFsbHkgbWVhbnMgaXMKISAgKiAiaWYgdGhlcmUgYXJlIDw9IFJlc2Vy dmVkQmFja2VuZHMgY29ubmVjdGlvbnMgYXZhaWxhYmxlLCBvbmx5IHN1cGVydXNlcnMKISAgKiBj YW4gbWFrZSBuZXcgY29ubmVjdGlvbnMiIC0tLSBwcmUtZXhpc3Rpbmcgc3VwZXJ1c2VyIGNvbm5l Y3Rpb25zIGRvbid0CiEgICogY291bnQgYWdhaW5zdCB0aGUgbGltaXQuCiAgICovCiEgaW50CQkJ UmVzZXJ2ZWRCYWNrZW5kczsKICAKICAvKiBUaGUgc29ja2V0KHMpIHdlJ3JlIGxpc3RlbmluZyB0 by4gKi8KICAjZGVmaW5lIE1BWExJU1RFTgk2NAotLS0gMTYyLDE3NyAtLS0tCiAgCiAgLyoKICAg KiBSZXNlcnZlZEJhY2tlbmRzIGlzIHRoZSBudW1iZXIgb2YgYmFja2VuZHMgcmVzZXJ2ZWQgZm9y IHN1cGVydXNlciB1c2UuCiEgICogVGhpcyBudW1iZXIgaXMgUmVzZXJ2ZWRDb25uZWN0aW9ucyAr IG1heF93YWxfc2VuZGVycyAoaXQgaXMgY29tcHV0ZWQgYnkKISAgKiB0aGUgR1VDIGFzc2lnbiBo b29rcyBmb3IgdGhvc2UgdmFyaWFibGVzKSBhbmQgdGFrZW4gb3V0IG9mIHRoZSBwb29sIHNpemUK ISAgKiBnaXZlbiBieSBNYXhCYWNrZW5kcyBzbyBudW1iZXIgb2YgYmFja2VuZCBzbG90cyBhdmFp bGFibGUgdG8KISAgKiBub24tc3VwZXJ1c2VycyBpcyAoTWF4QmFja2VuZHMgLSBSZXNlcnZlZEJh Y2tlbmRzKS4gIE5vdGUgd2hhdCB0aGlzCiEgICogcmVhbGx5IG1lYW5zIGlzICJpZiB0aGVyZSBh cmUgPD0gUmVzZXJ2ZWRCYWNrZW5kcyBjb25uZWN0aW9ucyBhdmFpbGFibGUsCiEgICogb25seSBz dXBlcnVzZXJzIGNhbiBtYWtlIG5ldyBjb25uZWN0aW9ucyIgLS0tIHByZS1leGlzdGluZyBzdXBl cnVzZXIKISAgKiBjb25uZWN0aW9ucyBkb24ndCBjb3VudCBhZ2FpbnN0IHRoZSBsaW1pdC4KICAg Ki8KISBpbnQJCQlSZXNlcnZlZEJhY2tlbmRzID0gMzsKISBpbnQJCQlSZXNlcnZlZENvbm5lY3Rp b25zID0gMzsKICAKICAvKiBUaGUgc29ja2V0KHMpIHdlJ3JlIGxpc3RlbmluZyB0by4gKi8KICAj ZGVmaW5lIE1BWExJU1RFTgk2NAoqKiogYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJvYy5j Ci0tLSBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMKKioqKioqKioqKioqKioqCioq KiAxNDIsMTQ5ICoqKiogUHJvY0dsb2JhbFNlbWFzKHZvaWQpCiAgICoJICBydW5uaW5nIG91dCB3 aGVuIHRyeWluZyB0byBzdGFydCBhbm90aGVyIGJhY2tlbmQgaXMgYSBjb21tb24gZmFpbHVyZS4K ICAgKgkgIFNvLCBub3cgd2UgZ3JhYiBlbm91Z2ggc2VtYXBob3JlcyB0byBzdXBwb3J0IHRoZSBk ZXNpcmVkIG1heCBudW1iZXIKICAgKgkgIG9mIGJhY2tlbmRzIGltbWVkaWF0ZWx5IGF0IGluaXRp YWxpemF0aW9uIC0tLSBpZiB0aGUgc3lzYWRtaW4gaGFzIHNldAohICAqCSAgTWF4Q29ubmVjdGlv bnMgb3IgYXV0b3ZhY3V1bV9tYXhfd29ya2VycyBoaWdoZXIgdGhhbiBoaXMga2VybmVsIHdpbGwK ISAgKgkgIHN1cHBvcnQsIGhlJ2xsIGZpbmQgb3V0IHNvb25lciByYXRoZXIgdGhhbiBsYXRlci4K ICAgKgogICAqCSAgQW5vdGhlciByZWFzb24gZm9yIGNyZWF0aW5nIHNlbWFwaG9yZXMgaGVyZSBp cyB0aGF0IHRoZSBzZW1hcGhvcmUKICAgKgkgIGltcGxlbWVudGF0aW9uIHR5cGljYWxseSByZXF1 aXJlcyB1cyB0byBjcmVhdGUgc2VtYXBob3JlcyBpbiB0aGUKLS0tIDE0MiwxNDkgLS0tLQogICAq CSAgcnVubmluZyBvdXQgd2hlbiB0cnlpbmcgdG8gc3RhcnQgYW5vdGhlciBiYWNrZW5kIGlzIGEg Y29tbW9uIGZhaWx1cmUuCiAgICoJICBTbywgbm93IHdlIGdyYWIgZW5vdWdoIHNlbWFwaG9yZXMg dG8gc3VwcG9ydCB0aGUgZGVzaXJlZCBtYXggbnVtYmVyCiAgICoJICBvZiBiYWNrZW5kcyBpbW1l ZGlhdGVseSBhdCBpbml0aWFsaXphdGlvbiAtLS0gaWYgdGhlIHN5c2FkbWluIGhhcyBzZXQKISAg KgkgIE1heENvbm5lY3Rpb25zLCBhdXRvdmFjdXVtX21heF93b3JrZXJzLCBvciBtYXhfd2FsX3Nl bmRlcnMgaGlnaGVyCiEgICoJICB0aGFuIGhpcyBrZXJuZWwgd2lsbCBzdXBwb3J0LCBoZSdsbCBm aW5kIG91dCBzb29uZXIgcmF0aGVyIHRoYW4gbGF0ZXIuCiAgICoKICAgKgkgIEFub3RoZXIgcmVh c29uIGZvciBjcmVhdGluZyBzZW1hcGhvcmVzIGhlcmUgaXMgdGhhdCB0aGUgc2VtYXBob3JlCiAg ICoJICBpbXBsZW1lbnRhdGlvbiB0eXBpY2FsbHkgcmVxdWlyZXMgdXMgdG8gY3JlYXRlIHNlbWFw aG9yZXMgaW4gdGhlCioqKioqKioqKioqKioqKgoqKiogMTU4LDE2MyAqKioqIEluaXRQcm9jR2xv YmFsKHZvaWQpCi0tLSAxNTgsMTY0IC0tLS0KICB7CiAgCVBHUFJPQwkgICAqcHJvY3M7CiAgCWlu dAkJCWk7CisgCWludAkJCW51bWNvbm47CiAgCWJvb2wJCWZvdW5kOwogIAogIAkvKiBDcmVhdGUg dGhlIFByb2NHbG9iYWwgc2hhcmVkIHN0cnVjdHVyZSAqLwoqKioqKioqKioqKioqKioKKioqIDE4 NSwxOTcgKioqKiBJbml0UHJvY0dsb2JhbCh2b2lkKQogIAkvKgogIAkgKiBQcmUtY3JlYXRlIHRo ZSBQR1BST0Mgc3RydWN0dXJlcyBhbmQgY3JlYXRlIGEgc2VtYXBob3JlIGZvciBlYWNoLgogIAkg Ki8KISAJcHJvY3MgPSAoUEdQUk9DICopIFNobWVtQWxsb2MoKE1heENvbm5lY3Rpb25zKSAqIHNp emVvZihQR1BST0MpKTsKICAJaWYgKCFwcm9jcykKICAJCWVyZXBvcnQoRkFUQUwsCiAgCQkJCShl cnJjb2RlKEVSUkNPREVfT1VUX09GX01FTU9SWSksCiAgCQkJCSBlcnJtc2coIm91dCBvZiBzaGFy ZWQgbWVtb3J5IikpKTsKISAJTWVtU2V0KHByb2NzLCAwLCBNYXhDb25uZWN0aW9ucyAqIHNpemVv ZihQR1BST0MpKTsKISAJZm9yIChpID0gMDsgaSA8IE1heENvbm5lY3Rpb25zOyBpKyspCiAgCXsK ICAJCVBHU2VtYXBob3JlQ3JlYXRlKCYocHJvY3NbaV0uc2VtKSk7CiAgCQlwcm9jc1tpXS5saW5r cy5uZXh0ID0gKFNITV9RVUVVRSAqKSBQcm9jR2xvYmFsLT5mcmVlUHJvY3M7Ci0tLSAxODYsMTk5 IC0tLS0KICAJLyoKICAJICogUHJlLWNyZWF0ZSB0aGUgUEdQUk9DIHN0cnVjdHVyZXMgYW5kIGNy ZWF0ZSBhIHNlbWFwaG9yZSBmb3IgZWFjaC4KICAJICovCiEgCW51bWNvbm4gPSBNYXhDb25uZWN0 aW9ucyArIG1heF93YWxfc2VuZGVyczsKISAJcHJvY3MgPSAoUEdQUk9DICopIFNobWVtQWxsb2Mo KG51bWNvbm4pICogc2l6ZW9mKFBHUFJPQykpOwogIAlpZiAoIXByb2NzKQogIAkJZXJlcG9ydChG QVRBTCwKICAJCQkJKGVycmNvZGUoRVJSQ09ERV9PVVRfT0ZfTUVNT1JZKSwKICAJCQkJIGVycm1z Zygib3V0IG9mIHNoYXJlZCBtZW1vcnkiKSkpOwohIAlNZW1TZXQocHJvY3MsIDAsIG51bWNvbm4g KiBzaXplb2YoUEdQUk9DKSk7CiEgCWZvciAoaSA9IDA7IGkgPCBudW1jb25uOyBpKyspCiAgCXsK ICAJCVBHU2VtYXBob3JlQ3JlYXRlKCYocHJvY3NbaV0uc2VtKSk7CiAgCQlwcm9jc1tpXS5saW5r cy5uZXh0ID0gKFNITV9RVUVVRSAqKSBQcm9jR2xvYmFsLT5mcmVlUHJvY3M7CioqKiBhL3NyYy9i YWNrZW5kL3V0aWxzL2luaXQvZ2xvYmFscy5jCi0tLSBiL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQv Z2xvYmFscy5jCioqKioqKioqKioqKioqKgoqKiogMTAwLDEwNyAqKioqIGludAkJCW1haW50ZW5h bmNlX3dvcmtfbWVtID0gMTYzODQ7CiAgCiAgLyoKICAgKiBQcmltYXJ5IGRldGVybWluYW50cyBv ZiBzaXplcyBvZiBzaGFyZWQtbWVtb3J5IHN0cnVjdHVyZXMuICBNYXhCYWNrZW5kcyBpcwohICAq IE1heENvbm5lY3Rpb25zICsgYXV0b3ZhY3V1bV9tYXhfd29ya2VycyArIDEgKGl0IGlzIGNvbXB1 dGVkIGJ5IHRoZSBHVUMKISAgKiBhc3NpZ24gaG9va3MgZm9yIHRob3NlIHZhcmlhYmxlcyk6CiAg ICovCiAgaW50CQkJTkJ1ZmZlcnMgPSAxMDAwOwogIGludAkJCU1heEJhY2tlbmRzID0gMTAwOwot LS0gMTAwLDEwNyAtLS0tCiAgCiAgLyoKICAgKiBQcmltYXJ5IGRldGVybWluYW50cyBvZiBzaXpl cyBvZiBzaGFyZWQtbWVtb3J5IHN0cnVjdHVyZXMuICBNYXhCYWNrZW5kcyBpcwohICAqIE1heENv bm5lY3Rpb25zICsgYXV0b3ZhY3V1bV9tYXhfd29ya2VycyArIDEgKyBtYXhfd2FsX3NlbmRlcnMg KGl0IGlzCiEgICogY29tcHV0ZWQgYnkgdGhlIEdVQyBhc3NpZ24gaG9va3MgZm9yIHRob3NlIHZh cmlhYmxlcyk6CiAgICovCiAgaW50CQkJTkJ1ZmZlcnMgPSAxMDAwOwogIGludAkJCU1heEJhY2tl bmRzID0gMTAwOwoqKiogYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Yy5jCi0tLSBiL3NyYy9i YWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMKKioqKioqKioqKioqKioqCioqKiAxNzIsMTc4ICoqKiog c3RhdGljIGNvbnN0IGNoYXIgKnNob3dfdGNwX2tlZXBhbGl2ZXNfaWRsZSh2b2lkKTsKLS0tIDE3 MiwxODAgLS0tLQogIHN0YXRpYyBjb25zdCBjaGFyICpzaG93X3RjcF9rZWVwYWxpdmVzX2ludGVy dmFsKHZvaWQpOwogIHN0YXRpYyBjb25zdCBjaGFyICpzaG93X3RjcF9rZWVwYWxpdmVzX2NvdW50 KHZvaWQpOwogIHN0YXRpYyBib29sIGFzc2lnbl9tYXhjb25uZWN0aW9ucyhpbnQgbmV3dmFsLCBi b29sIGRvaXQsIEd1Y1NvdXJjZSBzb3VyY2UpOworIHN0YXRpYyBib29sIGFzc2lnbl9yZXNlcnZl ZF9jb25uZWN0aW9ucyhpbnQgbmV3dmFsLCBib29sIGRvaXQsIEd1Y1NvdXJjZSBzb3VyY2UpOwog IHN0YXRpYyBib29sIGFzc2lnbl9hdXRvdmFjdXVtX21heF93b3JrZXJzKGludCBuZXd2YWwsIGJv b2wgZG9pdCwgR3VjU291cmNlIHNvdXJjZSk7Cisgc3RhdGljIGJvb2wgYXNzaWduX21heF93YWxf c2VuZGVycyhpbnQgbmV3dmFsLCBib29sIGRvaXQsIEd1Y1NvdXJjZSBzb3VyY2UpOwogIHN0YXRp YyBib29sIGFzc2lnbl9lZmZlY3RpdmVfaW9fY29uY3VycmVuY3koaW50IG5ld3ZhbCwgYm9vbCBk b2l0LCBHdWNTb3VyY2Ugc291cmNlKTsKICBzdGF0aWMgY29uc3QgY2hhciAqYXNzaWduX3Bnc3Rh dF90ZW1wX2RpcmVjdG9yeShjb25zdCBjaGFyICpuZXd2YWwsIGJvb2wgZG9pdCwgR3VjU291cmNl IHNvdXJjZSk7CiAgc3RhdGljIGNvbnN0IGNoYXIgKmFzc2lnbl9hcHBsaWNhdGlvbl9uYW1lKGNv bnN0IGNoYXIgKm5ld3ZhbCwgYm9vbCBkb2l0LCBHdWNTb3VyY2Ugc291cmNlKTsKKioqKioqKioq KioqKioqCioqKiAxMzYxLDEzNjcgKioqKiBzdGF0aWMgc3RydWN0IGNvbmZpZ19pbnQgQ29uZmln dXJlTmFtZXNJbnRbXSA9CiAgCSAqIE5vdGU6IE1heEJhY2tlbmRzIGlzIGxpbWl0ZWQgdG8gSU5U X01BWC80IGJlY2F1c2Ugc29tZSBwbGFjZXMgY29tcHV0ZQogIAkgKiA0Kk1heEJhY2tlbmRzIHdp dGhvdXQgYW55IG92ZXJmbG93IGNoZWNrLiAgVGhpcyBjaGVjayBpcyBtYWRlIGluCiAgCSAqIGFz c2lnbl9tYXhjb25uZWN0aW9ucywgc2luY2UgTWF4QmFja2VuZHMgaXMgY29tcHV0ZWQgYXMgTWF4 Q29ubmVjdGlvbnMKISAJICogcGx1cyBhdXRvdmFjdXVtX21heF93b3JrZXJzIHBsdXMgb25lIChm b3IgdGhlIGF1dG92YWN1dW0gbGF1bmNoZXIpLgogIAkgKgogIAkgKiBMaWtld2lzZSB3ZSBoYXZl IHRvIGxpbWl0IE5CdWZmZXJzIHRvIElOVF9NQVgvMi4KICAJICoKLS0tIDEzNjMsMTM3MCAtLS0t CiAgCSAqIE5vdGU6IE1heEJhY2tlbmRzIGlzIGxpbWl0ZWQgdG8gSU5UX01BWC80IGJlY2F1c2Ug c29tZSBwbGFjZXMgY29tcHV0ZQogIAkgKiA0Kk1heEJhY2tlbmRzIHdpdGhvdXQgYW55IG92ZXJm bG93IGNoZWNrLiAgVGhpcyBjaGVjayBpcyBtYWRlIGluCiAgCSAqIGFzc2lnbl9tYXhjb25uZWN0 aW9ucywgc2luY2UgTWF4QmFja2VuZHMgaXMgY29tcHV0ZWQgYXMgTWF4Q29ubmVjdGlvbnMKISAJ ICogcGx1cyBhdXRvdmFjdXVtX21heF93b3JrZXJzIHBsdXMgb25lIChmb3IgdGhlIGF1dG92YWN1 dW0gbGF1bmNoZXIpCiEgCSAqIHBsdXMgbWF4X3dhbF9zZW5kZXJzLgogIAkgKgogIAkgKiBMaWtl d2lzZSB3ZSBoYXZlIHRvIGxpbWl0IE5CdWZmZXJzIHRvIElOVF9NQVgvMi4KICAJICoKKioqKioq KioqKioqKioqCioqKiAxMzkwLDEzOTcgKioqKiBzdGF0aWMgc3RydWN0IGNvbmZpZ19pbnQgQ29u ZmlndXJlTmFtZXNJbnRbXSA9CiAgCQkJZ2V0dGV4dF9ub29wKCJTZXRzIHRoZSBudW1iZXIgb2Yg Y29ubmVjdGlvbiBzbG90cyByZXNlcnZlZCBmb3Igc3VwZXJ1c2Vycy4iKSwKICAJCQlOVUxMCiAg CQl9LAohIAkJJlJlc2VydmVkQmFja2VuZHMsCiEgCQkzLCAwLCBJTlRfTUFYIC8gNCwgTlVMTCwg TlVMTAogIAl9LAogIAogIAl7Ci0tLSAxMzkzLDE0MDAgLS0tLQogIAkJCWdldHRleHRfbm9vcCgi U2V0cyB0aGUgbnVtYmVyIG9mIGNvbm5lY3Rpb24gc2xvdHMgcmVzZXJ2ZWQgZm9yIHN1cGVydXNl cnMuIiksCiAgCQkJTlVMTAogIAkJfSwKISAJCSZSZXNlcnZlZENvbm5lY3Rpb25zLAohIAkJMywg MCwgSU5UX01BWCAvIDQsIGFzc2lnbl9yZXNlcnZlZF9jb25uZWN0aW9ucywgTlVMTAogIAl9LAog IAogIAl7CioqKioqKioqKioqKioqKgoqKiogMTcwNiwxNzEyICoqKiogc3RhdGljIHN0cnVjdCBj b25maWdfaW50IENvbmZpZ3VyZU5hbWVzSW50W10gPQogIAkJCU5VTEwKICAJCX0sCiAgCQkmbWF4 X3dhbF9zZW5kZXJzLAohIAkJMCwgMCwgSU5UX01BWCAvIDQsIE5VTEwsIE5VTEwKICAJfSwKICAK ICAJewotLS0gMTcwOSwxNzE1IC0tLS0KICAJCQlOVUxMCiAgCQl9LAogIAkJJm1heF93YWxfc2Vu ZGVycywKISAJCTAsIDAsIElOVF9NQVggLyA0LCBhc3NpZ25fbWF4X3dhbF9zZW5kZXJzLCBOVUxM CiAgCX0sCiAgCiAgCXsKKioqKioqKioqKioqKioqCioqKiA3ODE5LDc4MjkgKioqKiBzaG93X3Rj cF9rZWVwYWxpdmVzX2NvdW50KHZvaWQpCiAgc3RhdGljIGJvb2wKICBhc3NpZ25fbWF4Y29ubmVj dGlvbnMoaW50IG5ld3ZhbCwgYm9vbCBkb2l0LCBHdWNTb3VyY2Ugc291cmNlKQogIHsKISAJaWYg KG5ld3ZhbCArIGF1dG92YWN1dW1fbWF4X3dvcmtlcnMgKyAxID4gSU5UX01BWCAvIDQpCiAgCQly ZXR1cm4gZmFsc2U7CiAgCiAgCWlmIChkb2l0KQohIAkJTWF4QmFja2VuZHMgPSBuZXd2YWwgKyBh dXRvdmFjdXVtX21heF93b3JrZXJzICsgMTsKICAKICAJcmV0dXJuIHRydWU7CiAgfQotLS0gNzgy Miw3ODQ0IC0tLS0KICBzdGF0aWMgYm9vbAogIGFzc2lnbl9tYXhjb25uZWN0aW9ucyhpbnQgbmV3 dmFsLCBib29sIGRvaXQsIEd1Y1NvdXJjZSBzb3VyY2UpCiAgewohIAlpZiAobmV3dmFsICsgYXV0 b3ZhY3V1bV9tYXhfd29ya2VycyArIDEgKyBtYXhfd2FsX3NlbmRlcnMgPiBJTlRfTUFYIC8gNCkK ICAJCXJldHVybiBmYWxzZTsKICAKICAJaWYgKGRvaXQpCiEgCQlNYXhCYWNrZW5kcyA9IG5ld3Zh bCArIGF1dG92YWN1dW1fbWF4X3dvcmtlcnMgKyAxICsgbWF4X3dhbF9zZW5kZXJzOwohIAohIAly ZXR1cm4gdHJ1ZTsKISB9CiEgCiEgc3RhdGljIGJvb2wKISBhc3NpZ25fcmVzZXJ2ZWRfY29ubmVj dGlvbnMoaW50IG5ld3ZhbCwgYm9vbCBkb2l0LCBHdWNTb3VyY2Ugc291cmNlKQohIHsKISAJaWYg KG5ld3ZhbCArIG1heF93YWxfc2VuZGVycyA+IElOVF9NQVggLyA0KQohIAkJcmV0dXJuIGZhbHNl OwohIAohIAlpZiAoZG9pdCkKISAJCVJlc2VydmVkQmFja2VuZHMgPSBuZXd2YWwgKyBtYXhfd2Fs X3NlbmRlcnM7CiAgCiAgCXJldHVybiB0cnVlOwogIH0KKioqKioqKioqKioqKioqCioqKiA3ODMx LDc4NDEgKioqKiBhc3NpZ25fbWF4Y29ubmVjdGlvbnMoaW50IG5ld3ZhbCwgYm9vbCBkb2l0LCBH dWNTb3VyY2Ugc291cmNlKQogIHN0YXRpYyBib29sCiAgYXNzaWduX2F1dG92YWN1dW1fbWF4X3dv cmtlcnMoaW50IG5ld3ZhbCwgYm9vbCBkb2l0LCBHdWNTb3VyY2Ugc291cmNlKQogIHsKISAJaWYg KE1heENvbm5lY3Rpb25zICsgbmV3dmFsICsgMSA+IElOVF9NQVggLyA0KQogIAkJcmV0dXJuIGZh bHNlOwogIAogIAlpZiAoZG9pdCkKISAJCU1heEJhY2tlbmRzID0gTWF4Q29ubmVjdGlvbnMgKyBu ZXd2YWwgKyAxOwogIAogIAlyZXR1cm4gdHJ1ZTsKICB9Ci0tLSA3ODQ2LDc4NzIgLS0tLQogIHN0 YXRpYyBib29sCiAgYXNzaWduX2F1dG92YWN1dW1fbWF4X3dvcmtlcnMoaW50IG5ld3ZhbCwgYm9v bCBkb2l0LCBHdWNTb3VyY2Ugc291cmNlKQogIHsKISAJaWYgKE1heENvbm5lY3Rpb25zICsgbmV3 dmFsICsgMSArIG1heF93YWxfc2VuZGVycyA+IElOVF9NQVggLyA0KQogIAkJcmV0dXJuIGZhbHNl OwogIAogIAlpZiAoZG9pdCkKISAJCU1heEJhY2tlbmRzID0gTWF4Q29ubmVjdGlvbnMgKyBuZXd2 YWwgKyAxICsgbWF4X3dhbF9zZW5kZXJzOwohIAohIAlyZXR1cm4gdHJ1ZTsKISB9CiEgCiEgc3Rh dGljIGJvb2wKISBhc3NpZ25fbWF4X3dhbF9zZW5kZXJzKGludCBuZXd2YWwsIGJvb2wgZG9pdCwg R3VjU291cmNlIHNvdXJjZSkKISB7CiEgCWlmIChNYXhDb25uZWN0aW9ucyArIGF1dG92YWN1dW1f bWF4X3dvcmtlcnMgKyAxICsgbmV3dmFsID4gSU5UX01BWCAvIDQgfHwKISAJCVJlc2VydmVkQ29u bmVjdGlvbnMgKyBuZXd2YWwgPiBJTlRfTUFYIC8gNCkKISAJCXJldHVybiBmYWxzZTsKISAKISAJ aWYgKGRvaXQpCiEgCXsKISAJCU1heEJhY2tlbmRzID0gTWF4Q29ubmVjdGlvbnMgKyBhdXRvdmFj dXVtX21heF93b3JrZXJzICsgMSArIG5ld3ZhbDsKISAJCVJlc2VydmVkQmFja2VuZHMgPSBSZXNl cnZlZENvbm5lY3Rpb25zICsgbmV3dmFsOwohIAl9CiAgCiAgCXJldHVybiB0cnVlOwogIH0KKioq IGEvc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9wb3N0bWFzdGVyLmgKLS0tIGIvc3JjL2luY2x1ZGUv cG9zdG1hc3Rlci9wb3N0bWFzdGVyLmgKKioqKioqKioqKioqKioqCioqKiAxNywyMiAqKioqCi0t LSAxNywyMyAtLS0tCiAgZXh0ZXJuIGJvb2wgRW5hYmxlU1NMOwogIGV4dGVybiBib29sIFNpbGVu dE1vZGU7CiAgZXh0ZXJuIGludAlSZXNlcnZlZEJhY2tlbmRzOworIGV4dGVybiBpbnQJUmVzZXJ2 ZWRDb25uZWN0aW9uczsKICBleHRlcm4gaW50CVBvc3RQb3J0TnVtYmVyOwogIGV4dGVybiBpbnQJ VW5peF9zb2NrZXRfcGVybWlzc2lvbnM7CiAgZXh0ZXJuIGNoYXIgKlVuaXhfc29ja2V0X2dyb3Vw Owo= --001636ed6b614bf56604833ac6a6--