Received: from localhost (unknown [200.46.208.211]) by mail.postgresql.org (Postfix) with ESMTP id 767B36321A7 for ; Thu, 23 Apr 2009 09:15:30 -0300 (ADT) Received: from mail.postgresql.org ([200.46.204.86]) by localhost (mx1.hub.org [200.46.208.211]) (amavisd-maia, port 10024) with ESMTP id 23008-07 for ; Thu, 23 Apr 2009 09:15:20 -0300 (ADT) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from wf-out-1314.google.com (wf-out-1314.google.com [209.85.200.169]) by mail.postgresql.org (Postfix) with ESMTP id 23256632C79 for ; Thu, 23 Apr 2009 09:15:26 -0300 (ADT) Received: by wf-out-1314.google.com with SMTP id 28so400979wfc.28 for ; Thu, 23 Apr 2009 05:15:25 -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:message-id:subject:from:to:cc:content-type; bh=lqiBcjmI8cvFGmCAW6llhkOmUbsExdqvZBiSSuExBAo=; b=C1b2M19Y+cXXrANHg1fEKYZoMJSOWH/lQYBHF5Hl3rp1YnMpOZHV+fQjXjUqmPD4oN YCfSGSU1OYTW0m92aARkra/0FK9DbpPwg3ZERoQdPEmTB5H0GzoT5gNGJAMNfV1cARLk Lx+qfHMGdwtGLFIotctuXB+5JqmMckNFORjcE= 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=t2S5KYB2osVyj3z7BH+OfA3bBSEV3Y/Ol2WLF+p33C05twTd5gPnDFRmu3y4kGjlc1 n9mtL1l/uwgRAoSib9bgiFdYQv6e+fBHzjv1bjFYhtUL/r2Efqrpg5xTqcfu0BAT2GQ/ TGbqSgA+jWApYOCiOPE4pPIAb1LzNwUQuMq6Y= MIME-Version: 1.0 Received: by 10.142.214.5 with SMTP id m5mr322466wfg.110.1240488925349; Thu, 23 Apr 2009 05:15:25 -0700 (PDT) In-Reply-To: <49F01D79.8020805@enterprisedb.com> References: <3f0b79eb0903242329j12865d55s348f5c873a956e71@mail.gmail.com> <49DDEE72.6030803@enterprisedb.com> <3f0b79eb0904092047w355e0b3ar527a9285b161ef91@mail.gmail.com> <1239381103.16396.30.camel@ebony.2ndQuadrant> <3f0b79eb0904122252t1f4c5860v919d199f399ccf72@mail.gmail.com> <3f0b79eb0904132241p18084914g792cb8e5ab3eebb3@mail.gmail.com> <3f0b79eb0904150101pb1c59a3ubb422867e8e6a944@mail.gmail.com> <49EE1E3F.9050307@enterprisedb.com> <3f0b79eb0904212209i7fbd8b68k71db1fef09c62751@mail.gmail.com> <49F01D79.8020805@enterprisedb.com> Date: Thu, 23 Apr 2009 21:15:25 +0900 Message-ID: <3f0b79eb0904230515p751b5248n6ef96880617db055@mail.gmail.com> Subject: Re: New trigger option of pg_standby From: Fujii Masao To: Heikki Linnakangas Cc: Simon Riggs , Guillaume Smet , Tom Lane , Peter Eisentraut , Kevin Grittner , pgsql-hackers Content-Type: multipart/mixed; boundary=000e0cd2e12cbe4a9e046837d549 X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=0.11 tagged_above=0 required=5 tests=AWL=0.110 X-Spam-Level: X-Archive-Number: 200904/1202 X-Sequence-Number: 137305 --000e0cd2e12cbe4a9e046837d549 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Hi, On Thu, Apr 23, 2009 at 4:49 PM, Heikki Linnakangas wrote: > This is getting complicated, though. I guess it would be enough to document > that you mustn't copy any extra files into pg_xlog if you use a fast > trigger. Agreed. I added this note into document. Attached is the updated patch. I also fixed my bug which pg_standby returns 0 even if the requested file fails to be restored in smart mode. This patch is ready to commit, I think. Please review this. Regards, -- Fujii Masao NIPPON TELEGRAPH AND TELEPHONE CORPORATION NTT Open Source Software Center --000e0cd2e12cbe4a9e046837d549 Content-Type: application/octet-stream; name="pgstandby_change_trigger_0423.patch" Content-Disposition: attachment; filename="pgstandby_change_trigger_0423.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ftvf1z8n0 SW5kZXg6IGNvbnRyaWIvcGdfc3RhbmRieS9wZ19zdGFuZGJ5LmMKPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmls ZTogL3Byb2plY3RzL2N2c3Jvb3QvcGdzcWwvY29udHJpYi9wZ19zdGFuZGJ5L3BnX3N0YW5kYnku Yyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4yMQpkaWZmIC1jIC1yMS4yMSBwZ19zdGFuZGJ5LmMK KioqIGNvbnRyaWIvcGdfc3RhbmRieS9wZ19zdGFuZGJ5LmMJMjYgTWFyIDIwMDkgMjI6Mjk6MTMg LTAwMDAJMS4yMQotLS0gY29udHJpYi9wZ19zdGFuZGJ5L3BnX3N0YW5kYnkuYwkyMyBBcHIgMjAw OSAxMjowNDowOCAtMDAwMAoqKioqKioqKioqKioqKioKKioqIDUyLDU4ICoqKioKICBpbnQJCQlr ZWVwZmlsZXMgPSAwOwkJLyogbnVtYmVyIG9mIFdBTCBmaWxlcyB0byBrZWVwLCAwIGtlZXAgYWxs ICovCiAgaW50CQkJbWF4cmV0cmllcyA9IDM7CQkvKiBudW1iZXIgb2YgcmV0cmllcyBvbiByZXN0 b3JlIGNvbW1hbmQgKi8KICBib29sCQlkZWJ1ZyA9IGZhbHNlOwkJLyogYXJlIHdlIGRlYnVnZ2lu Zz8gKi8KLSBib29sCQl0cmlnZ2VyZWQgPSBmYWxzZTsJLyogaGF2ZSB3ZSBiZWVuIHRyaWdnZXJl ZD8gKi8KICBib29sCQluZWVkX2NsZWFudXAgPSBmYWxzZTsJCS8qIGRvIHdlIG5lZWQgdG8gcmVt b3ZlIGZpbGVzIGZyb20KICAJCQkJCQkJCQkJICogYXJjaGl2ZT8gKi8KICAKLS0tIDUyLDU3IC0t LS0KKioqKioqKioqKioqKioqCioqKiA2OSw3NCAqKioqCi0tLSA2OCw5OCAtLS0tCiAgY2hhcgkJ ZXhjbHVzaXZlQ2xlYW51cEZpbGVOYW1lW01BWFBHUEFUSF07CQkvKiB0aGUgZmlsZSB3ZSBuZWVk IHRvCiAgCQkJCQkJCQkJCQkJCQkgKiBnZXQgZnJvbSBhcmNoaXZlICovCiAgCisgLyoKKyAgKiBU d28gdHlwZXMgb2YgZmFpbG92ZXIgYXJlIHN1cHBvcnRlZCAoc21hcnQgYW5kIGZhc3QgZmFpbG92 ZXIpLgorICAqCisgICogVGhlIGNvbnRlbnQgb2YgdGhlIHRyaWdnZXIgZmlsZSBkZXRlcm1pbmVz IHRoZSB0eXBlIG9mIGZhaWxvdmVyLgorICAqIElmIHRoZSB0cmlnZ2VyIGZpbGUgY29udGFpbmlu ZyAic21hcnQiIGV4aXN0cywgc21hcnQgZmFpbG92ZXIgaXMgY2hvc2VuOworICAqIHBnX3N0YW5k YnkgYWN0cyBhcyBjcCBvciBsbiBjb21tYW5kIGl0c2VsZiwgb24gc3VjY2Vzc2Z1bCBjb21wbGV0 aW9uCisgICogYWxsIHRoZSBhdmFpbGFibGUgV0FMIHJlY29yZHMgd2lsbCBiZSBhcHBsaWVkIHJl c3VsdGluZyBpbiB6ZXJvIGRhdGEgbG9zcy4KKyAgKiBCdXQsIGl0IG1pZ2h0IHRha2Ugc29tZSB0 aW1lcyBiZWZvcmUgZmluaXNoaW5nIHJlY292ZXJ5LgorICAqCisgICogT24gdGhlIG90aGVyIGhh bmQsIHRoZSBleGlzdGVuY2Ugb2YgdGhlIHRyaWdnZXIgZmlsZSB3aXRoICJmYXN0IgorICAqIGNh dXNlcyByZWNvdmVyeSB0byBlbmQgaW1tZWRpYXRlbHkgZXZlbiBpZiB0aGUgYXZhaWxhYmxlIFdB TCBmaWxlcworICAqIHJlbWFpbi4gU28sIHNvbWUgdHJhbnNhY3Rpb25zIG1pZ2h0IGJlIGxvc3Qu CisgICoKKyAgKiBBbiBlbXB0eSB0cmlnZ2VyIGZpbGUgcGVyZm9ybXMgc21hcnQgZmFpbG92ZXIu CisgICoKKyAgKiBGYXN0IGZhaWxvdmVyIGlzIHRyaWdnZXJlZCBieSB0aGUgc2lnbmFsIChTSUdV U1IxIG9yIFNJR0lOVCkuCisgICoKKyAgKiBBIHRpbWVvdXQgY2F1c2VzIHNtYXJ0IGZhaWxvdmVy LgorICAqLworICNkZWZpbmUgTm9GYWlsb3ZlcgkJMAorICNkZWZpbmUgU21hcnRGYWlsb3Zlcgkx CisgI2RlZmluZSBGYXN0RmFpbG92ZXIJMgorIAorIHN0YXRpYyBpbnQgRmFpbG92ZXIgPSBOb0Zh aWxvdmVyOworIAogICNkZWZpbmUgUkVTVE9SRV9DT01NQU5EX0NPUFkgMAogICNkZWZpbmUgUkVT VE9SRV9DT01NQU5EX0xJTksgMQogIGludAkJCXJlc3RvcmVDb21tYW5kVHlwZTsKKioqKioqKioq KioqKioqCioqKiAxMDgsMTE0ICoqKioKICAgKgogICAqCUFzIGFuIGV4YW1wbGUsIGFuZCBwcm9i YWJseSB0aGUgY29tbW9uIGNhc2UsIHdlIHVzZSBlaXRoZXIKICAgKgljcC9sbiBjb21tYW5kcyBv biAqbml4LCBvciBjb3B5L21vdmUgY29tbWFuZCBvbiBXaW5kb3dzLgotICAqCiAgICovCiAgc3Rh dGljIHZvaWQKICBDdXN0b21pemFibGVJbml0aWFsaXplKHZvaWQpCi0tLSAxMzIsMTM3IC0tLS0K KioqKioqKioqKioqKioqCioqKiAzNTcsMzYzICoqKioKICBzdGF0aWMgYm9vbAogIENoZWNrRm9y RXh0ZXJuYWxUcmlnZ2VyKHZvaWQpCiAgewohIAlpbnQJCQlyYzsKICAKICAJLyoKICAJICogTG9v ayBmb3IgYSB0cmlnZ2VyIGZpbGUsIGlmIHRoYXQgb3B0aW9uIGhhcyBiZWVuIHNlbGVjdGVkCi0t LSAzODAsMzg3IC0tLS0KICBzdGF0aWMgYm9vbAogIENoZWNrRm9yRXh0ZXJuYWxUcmlnZ2VyKHZv aWQpCiAgewohIAljaGFyCWJ1ZlszMl07CiEgCUZJTEUgICAqZmQ7CiAgCiAgCS8qCiAgCSAqIExv b2sgZm9yIGEgdHJpZ2dlciBmaWxlLCBpZiB0aGF0IG9wdGlvbiBoYXMgYmVlbiBzZWxlY3RlZAoq KioqKioqKioqKioqKioKKioqIDM2NSwzNzQgKioqKgogIAkgKiBXZSB1c2Ugc3RhdCgpIGhlcmUg YmVjYXVzZSB0cmlnZ2VyUGF0aCBpcyBhbHdheXMgYSBmaWxlIHJhdGhlciB0aGFuCiAgCSAqIHBv dGVudGlhbGx5IGJlaW5nIGluIGFuIGFyY2hpdmUKICAJICovCiEgCWlmICh0cmlnZ2VyUGF0aCAm JiBzdGF0KHRyaWdnZXJQYXRoLCAmc3RhdF9idWYpID09IDApCiAgCXsKISAJCWZwcmludGYoc3Rk ZXJyLCAidHJpZ2dlciBmaWxlIGZvdW5kXG4iKTsKICAJCWZmbHVzaChzdGRlcnIpOwogIAogIAkJ LyoKICAJCSAqIElmIHRyaWdnZXIgZmlsZSBmb3VuZCwgd2UgKm11c3QqIGRlbGV0ZSBpdC4gSGVy ZSdzIHdoeTogV2hlbgotLS0gMzg5LDQzOCAtLS0tCiAgCSAqIFdlIHVzZSBzdGF0KCkgaGVyZSBi ZWNhdXNlIHRyaWdnZXJQYXRoIGlzIGFsd2F5cyBhIGZpbGUgcmF0aGVyIHRoYW4KICAJICogcG90 ZW50aWFsbHkgYmVpbmcgaW4gYW4gYXJjaGl2ZQogIAkgKi8KISAJaWYgKCF0cmlnZ2VyUGF0aCB8 fCBzdGF0KHRyaWdnZXJQYXRoLCAmc3RhdF9idWYpICE9IDApCiEgCQlyZXR1cm4gZmFsc2U7CiEg CiEgCS8qCiEgCSAqIEFuIGVtcHR5IHRyaWdnZXIgZmlsZSBwZXJmb3JtcyBzbWFydCBmYWlsb3Zl cgohIAkgKi8KISAJaWYgKHN0YXRfYnVmLnN0X3NpemUgPT0gMCkKICAJewohIAkJRmFpbG92ZXIg PSBTbWFydEZhaWxvdmVyOwohIAkJZnByaW50ZihzdGRlcnIsICJ0cmlnZ2VyIGZpbGUgZm91bmQ6 IHNtYXJ0IGZhaWxvdmVyXG4iKTsKICAJCWZmbHVzaChzdGRlcnIpOworIAkJcmV0dXJuIHRydWU7 CisgCX0KKyAKKyAJaWYgKChmZCA9IGZvcGVuKHRyaWdnZXJQYXRoLCAiciIpKSA9PSBOVUxMKQor IAl7CisgCQlmcHJpbnRmKHN0ZGVyciwgIldBUk5JTkc6IGNvdWxkIG5vdCBvcGVuIFwiJXNcIjog JXNcbiIsCisgCQkJCXRyaWdnZXJQYXRoLCBzdHJlcnJvcihlcnJubykpOworIAkJZmZsdXNoKHN0 ZGVycik7CisgCQlyZXR1cm4gZmFsc2U7CisgCX0KKyAJCisgCWlmIChmZ2V0cyhidWYsIHNpemVv ZihidWYpLCBmZCkgPT0gTlVMTCkKKyAJeworIAkJZnByaW50ZihzdGRlcnIsICJXQVJOSU5HOiBj b3VsZCBub3QgcmVhZCBcIiVzXCI6ICVzXG4iLAorIAkJCQl0cmlnZ2VyUGF0aCwgc3RyZXJyb3Io ZXJybm8pKTsKKyAJCWZmbHVzaChzdGRlcnIpOworIAkJZmNsb3NlKGZkKTsKKyAJCXJldHVybiBm YWxzZTsKKyAJfQorIAkKKyAJZmNsb3NlKGZkKTsKKyAJCisgCWlmIChzdHJuY21wKGJ1ZiwgInNt YXJ0IiwgNSkgPT0gMCkKKyAJeworIAkJRmFpbG92ZXIgPSBTbWFydEZhaWxvdmVyOworIAkJZnBy aW50ZihzdGRlcnIsICJ0cmlnZ2VyIGZpbGUgZm91bmQ6IHNtYXJ0IGZhaWxvdmVyXG4iKTsKKyAJ CWZmbHVzaChzdGRlcnIpOworIAkJcmV0dXJuIHRydWU7CisgCX0KKyAJCisgCWlmIChzdHJuY21w KGJ1ZiwgImZhc3QiLCA0KSA9PSAwKQorIAl7CisgCQlpbnQJcmM7CiAgCiAgCQkvKgogIAkJICog SWYgdHJpZ2dlciBmaWxlIGZvdW5kLCB3ZSAqbXVzdCogZGVsZXRlIGl0LiBIZXJlJ3Mgd2h5OiBX aGVuCioqKioqKioqKioqKioqKgoqKiogMzc5LDM5MSAqKioqCiAgCQlyYyA9IHVubGluayh0cmln Z2VyUGF0aCk7CiAgCQlpZiAocmMgIT0gMCkKICAJCXsKISAJCQlmcHJpbnRmKHN0ZGVyciwgIlxu IEVSUk9SOiBjb3VsZCBub3QgcmVtb3ZlIFwiJXNcIjogJXMiLCB0cmlnZ2VyUGF0aCwgc3RyZXJy b3IoZXJybm8pKTsKICAJCQlmZmx1c2goc3RkZXJyKTsKICAJCQlleGl0KHJjKTsKICAJCX0KICAJ CXJldHVybiB0cnVlOwogIAl9CiEgCiAgCXJldHVybiBmYWxzZTsKICB9CiAgCi0tLSA0NDMsNDYz IC0tLS0KICAJCXJjID0gdW5saW5rKHRyaWdnZXJQYXRoKTsKICAJCWlmIChyYyAhPSAwKQogIAkJ ewohIAkJCWZwcmludGYoc3RkZXJyLCAiXG4gRVJST1I6IGNvdWxkIG5vdCByZW1vdmUgXCIlc1wi OiAlcyIsCiEgCQkJCQl0cmlnZ2VyUGF0aCwgc3RyZXJyb3IoZXJybm8pKTsKICAJCQlmZmx1c2go c3RkZXJyKTsKICAJCQlleGl0KHJjKTsKICAJCX0KKyAKKyAJCUZhaWxvdmVyID0gRmFzdEZhaWxv dmVyOworIAkJZnByaW50ZihzdGRlcnIsICJ0cmlnZ2VyIGZpbGUgZm91bmQ6IGZhc3QgZmFpbG92 ZXJcbiIpOworIAkJZmZsdXNoKHN0ZGVycik7CiAgCQlyZXR1cm4gdHJ1ZTsKICAJfQohIAkKISAJ ZnByaW50ZihzdGRlcnIsICJXQVJOSU5HOiBpbnZhbGlkIGNvbnRlbnQgaW4gXCIlc1wiXG4iLAoh IAkJCXRyaWdnZXJQYXRoKTsKISAJZmZsdXNoKHN0ZGVycik7CiAgCXJldHVybiBmYWxzZTsKICB9 CiAgCioqKioqKioqKioqKioqKgoqKiogNTUyLDU1OSAqKioqCiAgCQkJCWJyZWFrOwogIAkJCWNh c2UgJ3QnOgkJCS8qIFRyaWdnZXIgZmlsZSAqLwogIAkJCQl0cmlnZ2VyUGF0aCA9IG9wdGFyZzsK LSAJCQkJaWYgKENoZWNrRm9yRXh0ZXJuYWxUcmlnZ2VyKCkpCi0gCQkJCQlleGl0KDEpOwkvKiBO b3JtYWwgZXhpdCwgd2l0aCBub24temVybyAqLwogIAkJCQlicmVhazsKICAJCQljYXNlICd3JzoJ CQkvKiBNYXggd2FpdCB0aW1lICovCiAgCQkJCW1heHdhaXR0aW1lID0gYXRvaShvcHRhcmcpOwot LS0gNjI0LDYyOSAtLS0tCioqKioqKioqKioqKioqKgoqKiogNjU5LDY2NCAqKioqCi0tLSA3Mjks NzU3IC0tLS0KICAJCXN0cmNtcChuZXh0V0FMRmlsZU5hbWUgKyBzdHJsZW4obmV4dFdBTEZpbGVO YW1lKSAtIHN0cmxlbigiLmhpc3RvcnkiKSwKICAJCQkgICAiLmhpc3RvcnkiKSA9PSAwKQogIAl7 CisgCQkvKgorIAkJICogR2V0IHJpZCBvZiB0aGUgdHJpZ2dlciBmaWxlIGF0IHRoZSBlbmQgb2Yg YXJjaGl2ZSByZWNvdmVyeSBhdCBsZWFzdC4KKyAJCSAqIE90aGVyd2lzZSwgaXQgd291bGQgdW5l eHBlY3RlZGx5IGNhdXNlIHRoZSBzdWJzZXF1ZW50IHdhcm0tc3RhbmRieSB0bworIAkJICogZW5k LgorIAkJICoKKyAJCSAqIEhlcmUgaXMgdGhlIHJpZ2h0IHBsYWNlIHRvIHJlbW92ZSB0aGUgdHJp Z2dlciBmaWxlIHNpbmNlIGEgdGltZWxpbmUKKyAJCSAqIGhpc3RvcnkgZmlsZSBpcyByZXF1ZXN0 ZWQgb25seSBhdCB0aGUgYmVnaW5uaW5nIGFuZCBlbmQgb2YgYXJjaGl2ZQorIAkJICogcmVjb3Zl cnkuCisgCQkgKi8KKyAJCWlmICh0cmlnZ2VyUGF0aCAmJiBzdGF0KHRyaWdnZXJQYXRoLCAmc3Rh dF9idWYpID09IDApCisgCQl7CisgCQkJaW50CXJjOworIAkJCQorIAkJCXJjID0gdW5saW5rKHRy aWdnZXJQYXRoKTsKKyAJCQlpZiAocmMgIT0gMCkKKyAJCQl7CisgCQkJCWZwcmludGYoc3RkZXJy LCAiXG4gRVJST1I6IGNvdWxkIG5vdCByZW1vdmUgXCIlc1wiOiAlcyIsCisgCQkJCQkJdHJpZ2dl clBhdGgsIHN0cmVycm9yKGVycm5vKSk7CisgCQkJCWZmbHVzaChzdGRlcnIpOworIAkJCQlleGl0 KHJjKTsKKyAJCQl9CisgCQl9CisgCiAgCQluZXh0V0FMRmlsZVR5cGUgPSBYTE9HX0hJU1RPUlk7 CiAgCQlpZiAoUmVzdG9yZVdBTEZpbGVGb3JSZWNvdmVyeSgpKQogIAkJCWV4aXQoMCk7CioqKioq KioqKioqKioqKgoqKiogNjc2LDY5NyAqKioqCiAgCS8qCiAgCSAqIE1haW4gd2FpdCBsb29wCiAg CSAqLwohIAl3aGlsZSAoIUN1c3RvbWl6YWJsZU5leHRXQUxGaWxlUmVhZHkoKSAmJiAhdHJpZ2dl cmVkKQogIAl7CiAgCQlpZiAoc2xlZXB0aW1lIDw9IDYwKQogIAkJCXBnX3VzbGVlcChzbGVlcHRp bWUgKiAxMDAwMDAwTCk7CiAgCiAgCQlpZiAoc2lnbmFsZWQpCiAgCQl7CiEgCQkJdHJpZ2dlcmVk ID0gdHJ1ZTsKICAJCQlpZiAoZGVidWcpCiAgCQkJewohIAkJCQlmcHJpbnRmKHN0ZGVyciwgIlxu c2lnbmFsZWQgdG8gZXhpdFxuIik7CiAgCQkJCWZmbHVzaChzdGRlcnIpOwogIAkJCX0KICAJCX0K ICAJCWVsc2UKICAJCXsKICAKICAJCQlpZiAoZGVidWcpCiAgCQkJewotLS0gNzY5LDgwMyAtLS0t CiAgCS8qCiAgCSAqIE1haW4gd2FpdCBsb29wCiAgCSAqLwohIAl3aGlsZSAoIUNoZWNrRm9yRXh0 ZXJuYWxUcmlnZ2VyKCkgJiYgIUN1c3RvbWl6YWJsZU5leHRXQUxGaWxlUmVhZHkoKSkKICAJewog IAkJaWYgKHNsZWVwdGltZSA8PSA2MCkKICAJCQlwZ191c2xlZXAoc2xlZXB0aW1lICogMTAwMDAw MEwpOwogIAogIAkJaWYgKHNpZ25hbGVkKQogIAkJewohIAkJCUZhaWxvdmVyID0gRmFzdEZhaWxv dmVyOwogIAkJCWlmIChkZWJ1ZykKICAJCQl7CiEgCQkJCWZwcmludGYoc3RkZXJyLCAiXG5zaWdu YWxlZCB0byBleGl0OiBmYXN0IGZhaWxvdmVyXG4iKTsKICAJCQkJZmZsdXNoKHN0ZGVycik7CiAg CQkJfQorIAkJCWJyZWFrOwogIAkJfQogIAkJZWxzZQogIAkJeworIAkJCXdhaXR0aW1lICs9IHNs ZWVwdGltZTsKKyAJCQlpZiAod2FpdHRpbWUgPj0gbWF4d2FpdHRpbWUgJiYgbWF4d2FpdHRpbWUg PiAwKQorIAkJCXsKKyAJCQkJRmFpbG92ZXIgPSBGYXN0RmFpbG92ZXI7CisgCQkJCWlmIChkZWJ1 ZykKKyAJCQkJeworIAkJCQkJZnByaW50ZihzdGRlcnIsICJcblRpbWVkIG91dCBhZnRlciAlZCBz ZWNvbmRzOiBmYXN0IGZhaWxvdmVyXG4iLAorIAkJCQkJCQl3YWl0dGltZSk7CisgCQkJCQlmZmx1 c2goc3RkZXJyKTsKKyAJCQkJfQorIAkJCQlicmVhazsKKyAJCQl9CiAgCiAgCQkJaWYgKGRlYnVn KQogIAkJCXsKKioqKioqKioqKioqKioqCioqKiA3MDAsNzIyICoqKioKICAJCQkJCWZwcmludGYo c3RkZXJyLCAiIENoZWNraW5nIGZvciB0cmlnZ2VyIGZpbGUuLi4iKTsKICAJCQkJZmZsdXNoKHN0 ZGVycik7CiAgCQkJfQotIAotIAkJCXdhaXR0aW1lICs9IHNsZWVwdGltZTsKLSAKLSAJCQlpZiAo IXRyaWdnZXJlZCAmJiAoQ2hlY2tGb3JFeHRlcm5hbFRyaWdnZXIoKSB8fCAod2FpdHRpbWUgPj0g bWF4d2FpdHRpbWUgJiYgbWF4d2FpdHRpbWUgPiAwKSkpCi0gCQkJewotIAkJCQl0cmlnZ2VyZWQg PSB0cnVlOwotIAkJCQlpZiAoZGVidWcgJiYgd2FpdHRpbWUgPj0gbWF4d2FpdHRpbWUgJiYgbWF4 d2FpdHRpbWUgPiAwKQotIAkJCQkJZnByaW50ZihzdGRlcnIsICJcblRpbWVkIG91dCBhZnRlciAl ZCBzZWNvbmRzXG4iLCB3YWl0dGltZSk7Ci0gCQkJfQogIAkJfQogIAl9CiAgCiAgCS8qCiAgCSAq IEFjdGlvbiBvbiBleGl0CiAgCSAqLwohIAlpZiAodHJpZ2dlcmVkKQohIAkJZXhpdCgxKTsJCQkJ LyogTm9ybWFsIGV4aXQsIHdpdGggbm9uLXplcm8gKi8KICAKICAJLyoKICAJICogT25jZSB3ZSBo YXZlIHJlc3RvcmVkIHRoaXMgZmlsZSBzdWNjZXNzZnVsbHkgd2UgY2FuIHJlbW92ZSBzb21lIHBy aW9yCi0tLSA4MDYsODE5IC0tLS0KICAJCQkJCWZwcmludGYoc3RkZXJyLCAiIENoZWNraW5nIGZv ciB0cmlnZ2VyIGZpbGUuLi4iKTsKICAJCQkJZmZsdXNoKHN0ZGVycik7CiAgCQkJfQogIAkJfQog IAl9CiAgCiAgCS8qCiAgCSAqIEFjdGlvbiBvbiBleGl0CiAgCSAqLwohIAlpZiAoRmFpbG92ZXIg PT0gRmFzdEZhaWxvdmVyKQohIAkJZXhpdCgxKTsKICAKICAJLyoKICAJICogT25jZSB3ZSBoYXZl IHJlc3RvcmVkIHRoaXMgZmlsZSBzdWNjZXNzZnVsbHkgd2UgY2FuIHJlbW92ZSBzb21lIHByaW9y CioqKioqKioqKioqKioqKgoqKiogNzI0LDczMSAqKioqCiAgCSAqIG9mIHRoZW0gd2lsbCBiZSBy ZXF1ZXN0ZWQgYWdhaW4gaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIGZhaWxlZCByZXN0b3JlLAogIAkg KiBvciB3aGVuIHdlIHJlc3RhcnQgcmVjb3ZlcnkuCiAgCSAqLwohIAlpZiAoUmVzdG9yZVdBTEZp bGVGb3JSZWNvdmVyeSgpICYmIG5lZWRfY2xlYW51cCkKISAJCUN1c3RvbWl6YWJsZUNsZWFudXBQ cmlvcldBTEZpbGVzKCk7CiAgCiEgCXJldHVybiAwOwogIH0KLS0tIDgyMSw4MzMgLS0tLQogIAkg KiBvZiB0aGVtIHdpbGwgYmUgcmVxdWVzdGVkIGFnYWluIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBm YWlsZWQgcmVzdG9yZSwKICAJICogb3Igd2hlbiB3ZSByZXN0YXJ0IHJlY292ZXJ5LgogIAkgKi8K ISAJaWYgKFJlc3RvcmVXQUxGaWxlRm9yUmVjb3ZlcnkoKSkKISAJewohIAkJaWYgKG5lZWRfY2xl YW51cCkKISAJCQlDdXN0b21pemFibGVDbGVhbnVwUHJpb3JXQUxGaWxlcygpOwogIAohIAkJZXhp dCgwKTsKISAJfQohIAllbHNlCiEgCQlleGl0KDEpOwogIH0KSW5kZXg6IGRvYy9zcmMvc2dtbC9w Z3N0YW5kYnkuc2dtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvcHJvamVjdHMvY3Zzcm9vdC9wZ3Nx bC9kb2Mvc3JjL3NnbWwvcGdzdGFuZGJ5LnNnbWwsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDIuNwpk aWZmIC1jIC1yMi43IHBnc3RhbmRieS5zZ21sCioqKiBkb2Mvc3JjL3NnbWwvcGdzdGFuZGJ5LnNn bWwJMjcgRmViIDIwMDkgMDk6MzA6MjEgLTAwMDAJMi43Ci0tLSBkb2Mvc3JjL3NnbWwvcGdzdGFu ZGJ5LnNnbWwJMjMgQXByIDIwMDkgMTI6MDQ6MDggLTAwMDAKKioqKioqKioqKioqKioqCioqKiA5 Miw5NyAqKioqCi0tLSA5MiwxMzUgLS0tLQogICAgIGlzIHNwZWNpZmllZCwKICAgICB0aGUgPHJl cGxhY2VhYmxlPmFyY2hpdmVsb2NhdGlvbjwvPiBkaXJlY3RvcnkgbXVzdCBiZSB3cml0YWJsZSB0 b28uCiAgICA8L3BhcmE+CisgICA8cGFyYT4KKyAgICBUaGVyZSBhcmUgdHdvIHdheXMgdG8gZmFp bCBvdmVyIGEgPHF1b3RlPndhcm0gc3RhbmRieTwvPiBkYXRhYmFzZSBzZXJ2ZXIuCisgICAgWW91 IGNvbnRyb2wgdGhlIHR5cGUgb2YgZmFpbG92ZXIgYnkgY3JlYXRpbmcgZGlmZmVyZW50IHRyaWdn ZXIgZmlsZXMKKyAgICAoaWYgPGxpdGVyYWw+LXQ8Lz4gaGFzIGJlZW4gc3BlY2lmaWVkKS4KKyAK KyAgICA8dmFyaWFibGVsaXN0PgorICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgPHRlcm0+U21h cnQgRmFpbG92ZXI8L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+CisgICAg ICAgIElmIGEgdHJpZ2dlciBmaWxlIGNvbnRhaW5pbmcgPGxpdGVyYWw+c21hcnQ8Lz4gb3IgYW4g ZW1wdHkgb25lIGV4aXN0cywKKyAgICAgICAgPGFwcGxpY2F0aW9uPnBnX3N0YW5kYnk8L2FwcGxp Y2F0aW9uPiBhY3RzIGFzIDxsaXRlcmFsPmNwPC8+IG9yCisgICAgICAgIDxsaXRlcmFsPmxuPC8+ IGNvbW1hbmQgaXRzZWxmLCBvbiBzdWNjZXNzZnVsIGNvbXBsZXRpb24gYWxsIHRoZQorICAgICAg ICBhdmFpbGFibGUgV0FMIHJlY29yZHMgd2lsbCBiZSBhcHBsaWVkIHJlc3VsdGluZyBpbiB6ZXJv IGRhdGEgbG9zcy4KKyAgICAgICAgQnV0IGl0IG1pZ2h0IHRha2Ugc29tZSB0aW1lcyBiZWZvcmUg ZmluaXNoaW5nIGZhaWxvdmVyLgorICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+Cisg ICAgIDwvdmFybGlzdGVudHJ5PgorICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgPHRlcm0+RmFz dCBGYWlsb3ZlcjwvdGVybT4KKyAgICAgIDxsaXN0aXRlbT4KKyAgICAgICA8cGFyYT4KKyAgICAg ICAgVGhlIGV4aXN0ZW5jZSBvZiBhIHRyaWdnZXIgZmlsZSBjb250YWluaW5nIDxsaXRlcmFsPmZh c3Q8Lz4gY2F1c2VzCisgICAgICAgIHJlY292ZXJ5IHRvIGVuZCBpbW1lZGlhdGVseSBldmVuIGlm IHRoZSBhdmFpbGFibGUgV0FMIGZpbGVzIHJlbWFpbi4KKyAgICAgICAgVGhvdWdoIHNvbWUgdHJh bnNhY3Rpb25zIG1pZ2h0IGJlIGxvc3QsIGl0IHdvbid0IHRha2UgbG9uZyBiZWZvcmUKKyAgICAg ICAgZmluaXNoaW5nIGZhaWxvdmVyLgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAg ICAgICAgWW91IG11c3RuJ3QgY29weSBhbnkgZXh0cmEgZmlsZXMgaW50byA8ZmlsZW5hbWU+cGdf eGxvZzwvPiBvZiBhCisgICAgICAgIDxxdW90ZT53YXJtIHN0YW5kYnk8Lz4gZGF0YWJhc2Ugc2Vy dmVyIGlmIHlvdSB1c2UgYSBmYXN0IHRyaWdnZXIuCisgICAgICAgIE90aGVyd2lzZSwgPGFwcGxp Y2F0aW9uPnBnX3N0YW5kYnk8Lz4gbWlnaHQgZ2V0IHN0dWNrIHdoaWxlIHJlYWRpbmcKKyAgICAg ICAgdGhlbSBmcm9tIDxmaWxlbmFtZT5wZ194bG9nPC8+LiBXaGVuIGZhaWxvdmVyIGNvbWVzIHRv IGEgZGVhZCBoYWx0CisgICAgICAgIHVuZm9ydHVuYXRlbHksIGl0IGNhbiByZXN1bWUgYnkgY3Jl YXRpbmcgYSBmYXN0IHRyaWdnZXIgZmlsZSBhZ2Fpbi4KKyAgICAgICA8L3BhcmE+CisgICAgICA8 L2xpc3RpdGVtPgorICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICA8L3ZhcmlhYmxlbGlzdD4KKyAg IDwvcGFyYT4KICAKICAgIDx0YWJsZT4KICAgICA8dGl0bGU+PGFwcGxpY2F0aW9uPnBnX3N0YW5k Ynk8Lz4gb3B0aW9uczwvdGl0bGU+CioqKioqKioqKioqKioqKgoqKiogMTc3LDE4OCAqKioqCiAg ICAgICAgPGVudHJ5PjxsaXRlcmFsPi10PC8+IDxyZXBsYWNlYWJsZT50cmlnZ2VyZmlsZTwvPjwv ZW50cnk+CiAgICAgICAgPGVudHJ5Pm5vbmU8L2VudHJ5PgogICAgICAgIDxlbnRyeT4KISAgICAg ICAgU3BlY2lmeSBhIHRyaWdnZXIgZmlsZSB3aG9zZSBwcmVzZW5jZSBzaG91bGQgY2F1c2UgcmVj b3ZlcnkgdG8gZW5kCiEgICAgICAgIHdoZXRoZXIgb3Igbm90IHRoZSBuZXh0IFdBTCBmaWxlIGlz IGF2YWlsYWJsZS4KICAgICAgICAgSXQgaXMgcmVjb21tZW5kZWQgdGhhdCB5b3UgdXNlIGEgc3Ry dWN0dXJlZCBmaWxlbmFtZSB0bwogICAgICAgICBhdm9pZCBjb25mdXNpb24gYXMgdG8gd2hpY2gg c2VydmVyIGlzIGJlaW5nIHRyaWdnZXJlZAogICAgICAgICB3aGVuIG11bHRpcGxlIHNlcnZlcnMg ZXhpc3Qgb24gdGhlIHNhbWUgc3lzdGVtOyBmb3IgZXhhbXBsZQogICAgICAgICA8ZmlsZW5hbWU+ L3RtcC9wZ3NxbC50cmlnZ2VyLjU0MzI8Lz4uCiAgICAgICAgPC9lbnRyeT4KICAgICAgIDwvcm93 PgogICAgICAgPHJvdz4KLS0tIDIxNSwyMjcgLS0tLQogICAgICAgIDxlbnRyeT48bGl0ZXJhbD4t dDwvPiA8cmVwbGFjZWFibGU+dHJpZ2dlcmZpbGU8Lz48L2VudHJ5PgogICAgICAgIDxlbnRyeT5u b25lPC9lbnRyeT4KICAgICAgICA8ZW50cnk+CiEgICAgICAgIFNwZWNpZnkgYSB0cmlnZ2VyIGZp bGUgd2hvc2UgcHJlc2VuY2Ugc2hvdWxkIHBlcmZvcm0gZmFpbG92ZXIuCiAgICAgICAgIEl0IGlz IHJlY29tbWVuZGVkIHRoYXQgeW91IHVzZSBhIHN0cnVjdHVyZWQgZmlsZW5hbWUgdG8KICAgICAg ICAgYXZvaWQgY29uZnVzaW9uIGFzIHRvIHdoaWNoIHNlcnZlciBpcyBiZWluZyB0cmlnZ2VyZWQK ICAgICAgICAgd2hlbiBtdWx0aXBsZSBzZXJ2ZXJzIGV4aXN0IG9uIHRoZSBzYW1lIHN5c3RlbTsg Zm9yIGV4YW1wbGUKICAgICAgICAgPGZpbGVuYW1lPi90bXAvcGdzcWwudHJpZ2dlci41NDMyPC8+ LgorICAgICAgICBOb3RlIHRoYXQgYSB0cmlnZ2VyIGZpbGUgaXMgZGVsZXRlZCBhdCB0aGUgZW5k IG9mIHJlY292ZXJ5CisgICAgICAgIHJlZ2FyZGxlc3Mgb2YgZmFpbG92ZXIgdHlwZS4KICAgICAg ICA8L2VudHJ5PgogICAgICAgPC9yb3c+CiAgICAgICA8cm93PgoqKioqKioqKioqKioqKioKKioq IDE5MCwxOTYgKioqKgogICAgICAgIDxlbnRyeT4wPC9lbnRyeT4KICAgICAgICA8ZW50cnk+CiAg ICAgICAgIFNldCB0aGUgbWF4aW11bSBudW1iZXIgb2Ygc2Vjb25kcyB0byB3YWl0IGZvciB0aGUg bmV4dCBXQUwgZmlsZSwKISAgICAgICAgYWZ0ZXIgd2hpY2ggcmVjb3Zlcnkgd2lsbCBlbmQgYW5k IHRoZSBzdGFuZGJ5IHdpbGwgY29tZSB1cC4KICAgICAgICAgQSBzZXR0aW5nIG9mIHplcm8gKHRo ZSBkZWZhdWx0KSBtZWFucyB3YWl0IGZvcmV2ZXIuCiAgICAgICAgIFRoZSBkZWZhdWx0IHNldHRp bmcgaXMgbm90IG5lY2Vzc2FyaWx5IHJlY29tbWVuZGVkOwogICAgICAgICBjb25zdWx0IDx4cmVm IGxpbmtlbmQ9Indhcm0tc3RhbmRieSI+IGZvciBkaXNjdXNzaW9uLgotLS0gMjI5LDIzNSAtLS0t CiAgICAgICAgPGVudHJ5PjA8L2VudHJ5PgogICAgICAgIDxlbnRyeT4KICAgICAgICAgU2V0IHRo ZSBtYXhpbXVtIG51bWJlciBvZiBzZWNvbmRzIHRvIHdhaXQgZm9yIHRoZSBuZXh0IFdBTCBmaWxl LAohICAgICAgICBhZnRlciB3aGljaCBhIGZhc3QgZmFpbG92ZXIgd2lsbCBiZSBwZXJmb3JtZWQu CiAgICAgICAgIEEgc2V0dGluZyBvZiB6ZXJvICh0aGUgZGVmYXVsdCkgbWVhbnMgd2FpdCBmb3Jl dmVyLgogICAgICAgICBUaGUgZGVmYXVsdCBzZXR0aW5nIGlzIG5vdCBuZWNlc3NhcmlseSByZWNv bW1lbmRlZDsKICAgICAgICAgY29uc3VsdCA8eHJlZiBsaW5rZW5kPSJ3YXJtLXN0YW5kYnkiPiBm b3IgZGlzY3Vzc2lvbi4KKioqKioqKioqKioqKioqCioqKiAyMzYsMjQyICoqKioKICAgICA8bGlz dGl0ZW0+CiAgICAgIDxwYXJhPgogICAgICAgc3RvcCB3YWl0aW5nIG9ubHkgd2hlbiBhIHRyaWdn ZXIgZmlsZSBjYWxsZWQKISAgICAgIDxmaWxlbmFtZT4vdG1wL3Bnc3FsLnRyaWdnZXIuNTQ0Mjwv PiBhcHBlYXJzCiAgICAgIDwvcGFyYT4KICAgICA8L2xpc3RpdGVtPgogICAgIDxsaXN0aXRlbT4K LS0tIDI3NSwyODIgLS0tLQogICAgIDxsaXN0aXRlbT4KICAgICAgPHBhcmE+CiAgICAgICBzdG9w IHdhaXRpbmcgb25seSB3aGVuIGEgdHJpZ2dlciBmaWxlIGNhbGxlZAohICAgICAgPGZpbGVuYW1l Pi90bXAvcGdzcWwudHJpZ2dlci41NDQyPC8+IGFwcGVhcnMsCiEgICAgICBhbmQgcGVyZm9ybSBm YWlsb3ZlciBhY2NvcmRpbmcgdG8gaXRzIGNvbnRlbnQKICAgICAgPC9wYXJhPgogICAgIDwvbGlz dGl0ZW0+CiAgICAgPGxpc3RpdGVtPgoqKioqKioqKioqKioqKioKKioqIDI3NywyODMgKioqKgog ICAgIDxsaXN0aXRlbT4KICAgICAgPHBhcmE+CiAgICAgICBzdG9wIHdhaXRpbmcgb25seSB3aGVu IGEgdHJpZ2dlciBmaWxlIGNhbGxlZAohICAgICAgPGZpbGVuYW1lPkM6XHBnc3FsLnRyaWdnZXIu NTQ0MjwvPiBhcHBlYXJzCiAgICAgIDwvcGFyYT4KICAgICA8L2xpc3RpdGVtPgogICAgIDxsaXN0 aXRlbT4KLS0tIDMxNywzMjQgLS0tLQogICAgIDxsaXN0aXRlbT4KICAgICAgPHBhcmE+CiAgICAg ICBzdG9wIHdhaXRpbmcgb25seSB3aGVuIGEgdHJpZ2dlciBmaWxlIGNhbGxlZAohICAgICAgPGZp bGVuYW1lPkM6XHBnc3FsLnRyaWdnZXIuNTQ0MjwvPiBhcHBlYXJzLAohICAgICAgYW5kIHBlcmZv cm0gZmFpbG92ZXIgYWNjb3JkaW5nIHRvIGl0cyBjb250ZW50CiAgICAgIDwvcGFyYT4KICAgICA8 L2xpc3RpdGVtPgogICAgIDxsaXN0aXRlbT4K --000e0cd2e12cbe4a9e046837d549--