X-Original-To: pgsql-patches-postgresql.org@localhost.postgresql.org Received: from localhost (unknown [200.46.204.2]) by svr1.postgresql.org (Postfix) with ESMTP id 6521ED1DD65 for ; Mon, 1 Mar 2004 08:11:15 +0000 (GMT) Received: from svr1.postgresql.org ([200.46.204.71]) by localhost (neptune.hub.org [200.46.204.2]) (amavisd-new, port 10024) with ESMTP id 24631-05 for ; Mon, 1 Mar 2004 04:11:00 -0400 (AST) Received: from cri.ensmp.fr (orgenoy.ensmp.fr [193.48.171.195]) by svr1.postgresql.org (Postfix) with ESMTP id 4A362D1E8E7 for ; Mon, 1 Mar 2004 04:10:57 -0400 (AST) Received: from sablons.cri.ensmp.fr (sablons.cri.ensmp.fr [10.2.14.143]) by cri.ensmp.fr (8.11.2/8.11.2/mx-cri-CRI) with ESMTP id i218At314003 for ; Mon, 1 Mar 2004 09:10:55 +0100 (MET) Date: Mon, 1 Mar 2004 09:10:54 +0100 (CET) From: Fabien COELHO Reply-To: Fabien COELHO To: PostgreSQL Patches Subject: "ALSO" keyword to "CREATE RULE" patch Message-ID: MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="34246414-1794079377-1078128654=:28778" X-Virus-Scanned: by amavisd-new at postgresql.org X-Archive-Number: 200403/1 X-Sequence-Number: 9932 This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. Send mail to mime@docserver.cac.washington.edu for more info. --34246414-1794079377-1078128654=:28778 Content-Type: TEXT/PLAIN; charset=US-ASCII Dear patchers, Please find attached a small patch to add an optionnal "ALSO" keyword to the "CREATE RULE" syntax. The "ALSO" keyword can be used where "INSTEAD" would be used, to mean the opposite, i.e. the current default behavior of rules which adds operations to the current one. IMHO, it makes the intended behavior much clearer for the basic user (say, me;-). CREATE RULE some_table_del AS ON DELETE TO some_table DO ALSO ( DELETE FROM this_other_table WHERE id=old.id; ); Of course, the absence of the "ALSO" keyword preserves the previous behavior... that is it behaves the same as with the "ALSO" keyword. This patch was made against 7.4.1 with the "difforig" script provided by postgresql. It adds "ALSO" keyword in the parser code (two lines), fixes somehow the documentation and sql help, and modifies four of the "RULE" test cases to use this keyword instead of the default nothing-ness. It validated for me with a "make check". Have a nice day, -- Fabien Coelho - coelho@cri.ensmp.fr --34246414-1794079377-1078128654=:28778 Content-Type: TEXT/plain; charset=US-ASCII; name="also_keyword.diff" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename="also_keyword.diff" KioqIC4vZG9jL3NyYy9zZ21sL3J1bGVzLnNnbWwub3JpZwlTdW4gRmViIDI5 IDE3OjM1OjE1IDIwMDQNCi0tLSAuL2RvYy9zcmMvc2dtbC9ydWxlcy5zZ21s CVN1biBGZWIgMjkgMTc6Mzg6NDUgMjAwNA0KKioqKioqKioqKioqKioqDQoq KiogODczLDg3OSAqKioqDQogIA0KICAgICAgICAgIDxMaXN0SXRlbT4NCiAg CTxQYXJhPg0KISAJICAgIFRoZXkgY2FuIGJlIDxsaXRlcmFsPklOU1RFQUQ8 Lz4gb3Igbm90Lg0KICAJPC9QYXJhPg0KICAJPC9MaXN0SXRlbT4NCiAgDQot LS0gODczLDg3OSAtLS0tDQogIA0KICAgICAgICAgIDxMaXN0SXRlbT4NCiAg CTxQYXJhPg0KISAJICAgIFRoZXkgY2FuIGJlIDxsaXRlcmFsPklOU1RFQUQ8 Lz4gb3IgPGxpdGVyYWw+QUxTTzwvPiAoZGVmYXVsdCkuDQogIAk8L1BhcmE+ DQogIAk8L0xpc3RJdGVtPg0KICANCioqKioqKioqKioqKioqKg0KKioqIDkw NCw5MTAgKioqKg0KICA8UHJvZ3JhbUxpc3Rpbmc+DQogIENSRUFURSBSVUxF IDxyZXBsYWNlYWJsZT5ydWxlX25hbWU8Lz4gQVMgT04gPHJlcGxhY2VhYmxl PmV2ZW50PC8+DQogICAgICBUTyA8cmVwbGFjZWFibGU+b2JqZWN0PC8+IFtX SEVSRSA8cmVwbGFjZWFibGU+cnVsZV9xdWFsaWZpY2F0aW9uPC8+XQ0KISAg ICAgRE8gW0lOU1RFQURdIFs8cmVwbGFjZWFibGU+YWN0aW9uPC8+IHwgKDxy ZXBsYWNlYWJsZT5hY3Rpb25zPC8+KSB8IE5PVEhJTkddOw0KICA8L1Byb2dy YW1MaXN0aW5nPg0KICANCiAgICAgIGluIG1pbmQuDQotLS0gOTA0LDkxMCAt LS0tDQogIDxQcm9ncmFtTGlzdGluZz4NCiAgQ1JFQVRFIFJVTEUgPHJlcGxh Y2VhYmxlPnJ1bGVfbmFtZTwvPiBBUyBPTiA8cmVwbGFjZWFibGU+ZXZlbnQ8 Lz4NCiAgICAgIFRPIDxyZXBsYWNlYWJsZT5vYmplY3Q8Lz4gW1dIRVJFIDxy ZXBsYWNlYWJsZT5ydWxlX3F1YWxpZmljYXRpb248Lz5dDQohICAgICBETyBb QUxTT3xJTlNURUFEXSBbPHJlcGxhY2VhYmxlPmFjdGlvbjwvPiB8ICg8cmVw bGFjZWFibGU+YWN0aW9uczwvPikgfCBOT1RISU5HXTsNCiAgPC9Qcm9ncmFt TGlzdGluZz4NCiAgDQogICAgICBpbiBtaW5kLg0KKioqKioqKioqKioqKioq DQoqKiogOTIwLDkyNiAqKioqDQogICAgICBJbml0aWFsbHkgdGhlIHF1ZXJ5 LXRyZWUgbGlzdCBpcyBlbXB0eS4NCiAgICAgIFRoZXJlIGNhbiBiZSB6ZXJv ICg8bGl0ZXJhbD5OT1RISU5HPC8+IGtleSB3b3JkKSwgb25lLCBvciBtdWx0 aXBsZSBhY3Rpb25zLg0KICAgICAgVG8gc2ltcGxpZnksIHdlIHdpbGwgbG9v ayBhdCBhIHJ1bGUgd2l0aCBvbmUgYWN0aW9uLiBUaGlzIHJ1bGUNCiEgICAg IGNhbiBoYXZlIGEgcXVhbGlmaWNhdGlvbiBvciBub3QgYW5kIGl0IGNhbiBi ZSA8bGl0ZXJhbD5JTlNURUFEPC8+IG9yIG5vdC4NCiAgPC9QYXJhPg0KICAN CiAgPFBhcmE+DQotLS0gOTIwLDkyNiAtLS0tDQogICAgICBJbml0aWFsbHkg dGhlIHF1ZXJ5LXRyZWUgbGlzdCBpcyBlbXB0eS4NCiAgICAgIFRoZXJlIGNh biBiZSB6ZXJvICg8bGl0ZXJhbD5OT1RISU5HPC8+IGtleSB3b3JkKSwgb25l LCBvciBtdWx0aXBsZSBhY3Rpb25zLg0KICAgICAgVG8gc2ltcGxpZnksIHdl IHdpbGwgbG9vayBhdCBhIHJ1bGUgd2l0aCBvbmUgYWN0aW9uLiBUaGlzIHJ1 bGUNCiEgICAgIGNhbiBoYXZlIGEgcXVhbGlmaWNhdGlvbiBvciBub3QgYW5k IGl0IGNhbiBiZSA8bGl0ZXJhbD5JTlNURUFEPC8+IG9yIDxsaXRlcmFsPkFM U088Lz4gKGRlZmF1bHQpLg0KICA8L1BhcmE+DQogIA0KICA8UGFyYT4NCioq KioqKioqKioqKioqKg0KKioqIDkzNyw5NDMgKioqKg0KICANCiAgICAgIDx2 YXJpYWJsZWxpc3Q+DQogICAgICAgPHZhcmxpc3RlbnRyeT4NCiEgICAgICAg PHRlcm0+Tm8gcXVhbGlmaWNhdGlvbiBhbmQgbm90IDxsaXRlcmFsPklOU1RF QUQ8Lz48L3Rlcm0+DQogICAgICAgIDxsaXN0aXRlbT4NCiAgICAgICAgIDxw YXJhPg0KICAgICAgICAgIHRoZSBxdWVyeSB0cmVlIGZyb20gdGhlIHJ1bGUg YWN0aW9uIHdpdGggdGhlIG9yaWdpbmFsIHF1ZXJ5DQotLS0gOTM3LDk0MyAt LS0tDQogIA0KICAgICAgPHZhcmlhYmxlbGlzdD4NCiAgICAgICA8dmFybGlz dGVudHJ5Pg0KISAgICAgICA8dGVybT5ObyBxdWFsaWZpY2F0aW9uIGFuZCA8 bGl0ZXJhbD5BTFNPPC8+PC90ZXJtPg0KICAgICAgICA8bGlzdGl0ZW0+DQog ICAgICAgICA8cGFyYT4NCiAgICAgICAgICB0aGUgcXVlcnkgdHJlZSBmcm9t IHRoZSBydWxlIGFjdGlvbiB3aXRoIHRoZSBvcmlnaW5hbCBxdWVyeQ0KKioq KioqKioqKioqKioqDQoqKiogOTU3LDk2MyAqKioqDQogICAgICAgPC92YXJs aXN0ZW50cnk+DQogIA0KICAgICAgIDx2YXJsaXN0ZW50cnk+DQohICAgICAg IDx0ZXJtPlF1YWxpZmljYXRpb24gZ2l2ZW4gYW5kIG5vdCA8bGl0ZXJhbD5J TlNURUFEPC8+PC90ZXJtPg0KICAgICAgICA8bGlzdGl0ZW0+DQogICAgICAg ICA8cGFyYT4NCiAgICAgICAgICB0aGUgcXVlcnkgdHJlZSBmcm9tIHRoZSBy dWxlIGFjdGlvbiB3aXRoIHRoZSBydWxlDQotLS0gOTU3LDk2MyAtLS0tDQog ICAgICAgPC92YXJsaXN0ZW50cnk+DQogIA0KICAgICAgIDx2YXJsaXN0ZW50 cnk+DQohICAgICAgIDx0ZXJtPlF1YWxpZmljYXRpb24gZ2l2ZW4gYW5kIDxs aXRlcmFsPkFMU088Lz48L3Rlcm0+DQogICAgICAgIDxsaXN0aXRlbT4NCiAg ICAgICAgIDxwYXJhPg0KICAgICAgICAgIHRoZSBxdWVyeSB0cmVlIGZyb20g dGhlIHJ1bGUgYWN0aW9uIHdpdGggdGhlIHJ1bGUNCioqKioqKioqKioqKioq Kg0KKioqIDk4MCw5ODYgKioqKg0KICAgICAgIDwvdmFybGlzdGVudHJ5Pg0K ICAgICAgPC92YXJpYWJsZWxpc3Q+DQogIA0KISAgICAgRmluYWxseSwgaWYg dGhlIHJ1bGUgaXMgbm90IDxsaXRlcmFsPklOU1RFQUQ8Lz4sIHRoZSB1bmNo YW5nZWQgb3JpZ2luYWwgcXVlcnkgdHJlZSBpcw0KICAgICAgYWRkZWQgdG8g dGhlIGxpc3QuIFNpbmNlIG9ubHkgcXVhbGlmaWVkIDxsaXRlcmFsPklOU1RF QUQ8Lz4gcnVsZXMgYWxyZWFkeSBhZGQgdGhlDQogICAgICBvcmlnaW5hbCBx dWVyeSB0cmVlLCB3ZSBlbmQgdXAgd2l0aCBlaXRoZXIgb25lIG9yIHR3byBv dXRwdXQgcXVlcnkgdHJlZXMNCiAgICAgIGZvciBhIHJ1bGUgd2l0aCBvbmUg YWN0aW9uLg0KLS0tIDk4MCw5ODYgLS0tLQ0KICAgICAgIDwvdmFybGlzdGVu dHJ5Pg0KICAgICAgPC92YXJpYWJsZWxpc3Q+DQogIA0KISAgICAgRmluYWxs eSwgaWYgdGhlIHJ1bGUgaXMgPGxpdGVyYWw+QUxTTzwvPiwgdGhlIHVuY2hh bmdlZCBvcmlnaW5hbCBxdWVyeSB0cmVlIGlzDQogICAgICBhZGRlZCB0byB0 aGUgbGlzdC4gU2luY2Ugb25seSBxdWFsaWZpZWQgPGxpdGVyYWw+SU5TVEVB RDwvPiBydWxlcyBhbHJlYWR5IGFkZCB0aGUNCiAgICAgIG9yaWdpbmFsIHF1 ZXJ5IHRyZWUsIHdlIGVuZCB1cCB3aXRoIGVpdGhlciBvbmUgb3IgdHdvIG91 dHB1dCBxdWVyeSB0cmVlcw0KICAgICAgZm9yIGEgcnVsZSB3aXRoIG9uZSBh Y3Rpb24uDQoqKioqKioqKioqKioqKioNCioqKiAxMTExLDExMTcgKioqKg0K ICA8L1BhcmE+DQogIA0KICA8UGFyYT4NCiEgICAgIFRoZSBydWxlIGlzIGEg cXVhbGlmaWVkIG5vbi08bGl0ZXJhbD5JTlNURUFEPC8+IHJ1bGUsIHNvIHRo ZSBydWxlIHN5c3RlbQ0KICAgICAgaGFzIHRvIHJldHVybiB0d28gcXVlcnkg dHJlZXM6IHRoZSBtb2RpZmllZCBydWxlIGFjdGlvbiBhbmQgdGhlIG9yaWdp bmFsDQogICAgICBxdWVyeSB0cmVlLiBJbiBzdGVwIDEsIHRoZSByYW5nZSB0 YWJsZSBvZiB0aGUgb3JpZ2luYWwgcXVlcnkgaXMNCiAgICAgIGluY29ycG9y YXRlZCBpbnRvIHRoZSBydWxlJ3MgYWN0aW9uIHF1ZXJ5IHRyZWUuIFRoaXMg cmVzdWx0cyBpbjoNCi0tLSAxMTExLDExMTcgLS0tLQ0KICA8L1BhcmE+DQog IA0KICA8UGFyYT4NCiEgICAgIFRoZSBydWxlIGlzIGEgcXVhbGlmaWVkIDxs aXRlcmFsPkFMU088Lz4gcnVsZSwgc28gdGhlIHJ1bGUgc3lzdGVtDQogICAg ICBoYXMgdG8gcmV0dXJuIHR3byBxdWVyeSB0cmVlczogdGhlIG1vZGlmaWVk IHJ1bGUgYWN0aW9uIGFuZCB0aGUgb3JpZ2luYWwNCiAgICAgIHF1ZXJ5IHRy ZWUuIEluIHN0ZXAgMSwgdGhlIHJhbmdlIHRhYmxlIG9mIHRoZSBvcmlnaW5h bCBxdWVyeSBpcw0KICAgICAgaW5jb3Jwb3JhdGVkIGludG8gdGhlIHJ1bGUn cyBhY3Rpb24gcXVlcnkgdHJlZS4gVGhpcyByZXN1bHRzIGluOg0KKioqKioq KioqKioqKioqDQoqKiogMTE5MCwxMTk2ICoqKioNCiAgICAgPC9wYXJhPg0K ICANCiAgICAgPHBhcmE+DQohICAgICBUaGF0J3MgaXQuICBTaW5jZSB0aGUg cnVsZSBpcyBub3QgPGxpdGVyYWw+SU5TVEVBRDwvPiwgd2UgYWxzbyBvdXRw dXQgdGhlDQogICAgICBvcmlnaW5hbCBxdWVyeSB0cmVlLiAgSW4gc2hvcnQs IHRoZSBvdXRwdXQgZnJvbSB0aGUgcnVsZSBzeXN0ZW0NCiAgICAgIGlzIGEg bGlzdCBvZiB0d28gcXVlcnkgdHJlZXMgdGhhdCBjb3JyZXNwb25kIHRvIHRo ZXNlIHN0YXRlbWVudHM6DQogIA0KLS0tIDExOTAsMTE5NiAtLS0tDQogICAg IDwvcGFyYT4NCiAgDQogICAgIDxwYXJhPg0KISAgICAgVGhhdCdzIGl0LiAg U2luY2UgdGhlIHJ1bGUgaXMgPGxpdGVyYWw+QUxTTzwvPiwgd2UgYWxzbyBv dXRwdXQgdGhlDQogICAgICBvcmlnaW5hbCBxdWVyeSB0cmVlLiAgSW4gc2hv cnQsIHRoZSBvdXRwdXQgZnJvbSB0aGUgcnVsZSBzeXN0ZW0NCiAgICAgIGlz IGEgbGlzdCBvZiB0d28gcXVlcnkgdHJlZXMgdGhhdCBjb3JyZXNwb25kIHRv IHRoZXNlIHN0YXRlbWVudHM6DQogIA0KKioqIC4vc3JjL2JhY2tlbmQvcGFy c2VyL2dyYW0ueS5vcmlnCVN1biBGZWIgMjkgMTc6MzI6NDggMjAwNA0KLS0t IC4vc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQlTdW4gRmViIDI5IDE3OjMz OjIxIDIwMDQNCioqKioqKioqKioqKioqKg0KKioqIDMyNywzMzMgKioqKg0K ICANCiAgLyogb3JkaW5hcnkga2V5IHdvcmRzIGluIGFscGhhYmV0aWNhbCBv cmRlciAqLw0KICAldG9rZW4gPGtleXdvcmQ+IEFCT1JUX1AgQUJTT0xVVEVf UCBBQ0NFU1MgQUNUSU9OIEFERCBBRlRFUg0KISAJQUdHUkVHQVRFIEFMTCBB TFRFUiBBTkFMWVNFIEFOQUxZWkUgQU5EIEFOWSBBUlJBWSBBUyBBU0MNCiAg CUFTU0VSVElPTiBBU1NJR05NRU5UIEFUIEFVVEhPUklaQVRJT04NCiAgDQog IAlCQUNLV0FSRCBCRUZPUkUgQkVHSU5fUCBCRVRXRUVOIEJJR0lOVCBCSU5B UlkgQklUDQotLS0gMzI3LDMzMyAtLS0tDQogIA0KICAvKiBvcmRpbmFyeSBr ZXkgd29yZHMgaW4gYWxwaGFiZXRpY2FsIG9yZGVyICovDQogICV0b2tlbiA8 a2V5d29yZD4gQUJPUlRfUCBBQlNPTFVURV9QIEFDQ0VTUyBBQ1RJT04gQURE IEFGVEVSDQohIAlBR0dSRUdBVEUgQUxMIEFMU08gQUxURVIgQU5BTFlTRSBB TkFMWVpFIEFORCBBTlkgQVJSQVkgQVMgQVNDDQogIAlBU1NFUlRJT04gQVNT SUdOTUVOVCBBVCBBVVRIT1JJWkFUSU9ODQogIA0KICAJQkFDS1dBUkQgQkVG T1JFIEJFR0lOX1AgQkVUV0VFTiBCSUdJTlQgQklOQVJZIEJJVA0KKioqKioq KioqKioqKioqDQoqKiogMzUyOSwzNTM0ICoqKioNCi0tLSAzNTI5LDM1MzUg LS0tLQ0KICANCiAgb3B0X2luc3RlYWQ6DQogIAkJCUlOU1RFQUQJCQkJCQkJ CQl7ICQkID0gVFJVRTsgfQ0KKyAJCQl8IEFMU08JCQkJCQkJCQl7ICQkID0g RkFMU0U7IH0NCiAgCQkJfCAvKkVNUFRZKi8JCQkJCQkJCXsgJCQgPSBGQUxT RTsgfQ0KICAJCTsNCiAgDQoqKiogLi9zcmMvYmFja2VuZC9wYXJzZXIva2V5 d29yZHMuYy5vcmlnCVN1biBGZWIgMjkgMTc6Mjk6NDQgMjAwNA0KLS0tIC4v c3JjL2JhY2tlbmQvcGFyc2VyL2tleXdvcmRzLmMJU3VuIEZlYiAyOSAxNzoz MDoyNyAyMDA0DQoqKioqKioqKioqKioqKioNCioqKiAzOCw0MyAqKioqDQot LS0gMzgsNDQgLS0tLQ0KICAJeyJhZnRlciIsIEFGVEVSfSwNCiAgCXsiYWdn cmVnYXRlIiwgQUdHUkVHQVRFfSwNCiAgCXsiYWxsIiwgQUxMfSwNCisgCXsi YWxzbyIsIEFMU099LA0KICAJeyJhbHRlciIsIEFMVEVSfSwNCiAgCXsiYW5h bHlzZSIsIEFOQUxZU0V9LAkJLyogQnJpdGlzaCBzcGVsbGluZyAqLw0KICAJ eyJhbmFseXplIiwgQU5BTFlaRX0sDQoqKiogLi9zcmMvYmluL3BzcWwvc3Fs X2hlbHAuaC5vcmlnCVN1biBGZWIgMjkgMTc6NDI6MDYgMjAwNA0KLS0tIC4v c3JjL2Jpbi9wc3FsL3NxbF9oZWxwLmgJU3VuIEZlYiAyOSAxNzo0MjoyMCAy MDA0DQoqKioqKioqKioqKioqKioNCioqKiAxNTksMTY1ICoqKioNCiAgDQog ICAgICB7ICJDUkVBVEUgUlVMRSIsDQogICAgICAgIE5fKCJkZWZpbmUgYSBu ZXcgcmV3cml0ZSBydWxlIiksDQohICAgICAgIE5fKCJDUkVBVEUgWyBPUiBS RVBMQUNFIF0gUlVMRSBuYW1lIEFTIE9OIGV2ZW50XG4gICAgVE8gdGFibGUg WyBXSEVSRSBjb25kaXRpb24gXVxuICAgIERPIFsgSU5TVEVBRCBdIHsgTk9U SElORyB8IGNvbW1hbmQgfCAoIGNvbW1hbmQgOyBjb21tYW5kIC4uLiApIH0i KSB9LA0KICANCiAgICAgIHsgIkNSRUFURSBTQ0hFTUEiLA0KICAgICAgICBO XygiZGVmaW5lIGEgbmV3IHNjaGVtYSIpLA0KLS0tIDE1OSwxNjUgLS0tLQ0K ICANCiAgICAgIHsgIkNSRUFURSBSVUxFIiwNCiAgICAgICAgTl8oImRlZmlu ZSBhIG5ldyByZXdyaXRlIHJ1bGUiKSwNCiEgICAgICAgTl8oIkNSRUFURSBb IE9SIFJFUExBQ0UgXSBSVUxFIG5hbWUgQVMgT04gZXZlbnRcbiAgICBUTyB0 YWJsZSBbIFdIRVJFIGNvbmRpdGlvbiBdXG4gICAgRE8gWyBBTFNPIHwgSU5T VEVBRCBdIHsgTk9USElORyB8IGNvbW1hbmQgfCAoIGNvbW1hbmQgOyBjb21t YW5kIC4uLiApIH0iKSB9LA0KICANCiAgICAgIHsgIkNSRUFURSBTQ0hFTUEi LA0KICAgICAgICBOXygiZGVmaW5lIGEgbmV3IHNjaGVtYSIpLA0KKioqIC4v c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQub3JpZwlTdW4g RmViIDI5IDE3OjU4OjU0IDIwMDQNCi0tLSAuL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvcnVsZXMub3V0CVN1biBGZWIgMjkgMTc6NTk6MTAgMjAwNA0K KioqKioqKioqKioqKioqDQoqKiogMjksNDcgKioqKg0KICBjcmVhdGUgdGFi bGUgcnRlc3RfaW50ZXJmYWNlIChzeXNuYW1lIHRleHQsIGlmbmFtZSB0ZXh0 KTsNCiAgY3JlYXRlIHRhYmxlIHJ0ZXN0X3BlcnNvbiAocG5hbWUgdGV4dCwg cGRlc2MgdGV4dCk7DQogIGNyZWF0ZSB0YWJsZSBydGVzdF9hZG1pbiAocG5h bWUgdGV4dCwgc3lzbmFtZSB0ZXh0KTsNCiEgY3JlYXRlIHJ1bGUgcnRlc3Rf c3lzX3VwZCBhcyBvbiB1cGRhdGUgdG8gcnRlc3Rfc3lzdGVtIGRvICgNCiAg CXVwZGF0ZSBydGVzdF9pbnRlcmZhY2Ugc2V0IHN5c25hbWUgPSBuZXcuc3lz bmFtZSANCiAgCQl3aGVyZSBzeXNuYW1lID0gb2xkLnN5c25hbWU7DQogIAl1 cGRhdGUgcnRlc3RfYWRtaW4gc2V0IHN5c25hbWUgPSBuZXcuc3lzbmFtZSAN CiAgCQl3aGVyZSBzeXNuYW1lID0gb2xkLnN5c25hbWUNCiAgCSk7DQohIGNy ZWF0ZSBydWxlIHJ0ZXN0X3N5c19kZWwgYXMgb24gZGVsZXRlIHRvIHJ0ZXN0 X3N5c3RlbSBkbyAoDQogIAlkZWxldGUgZnJvbSBydGVzdF9pbnRlcmZhY2Ug d2hlcmUgc3lzbmFtZSA9IG9sZC5zeXNuYW1lOw0KICAJZGVsZXRlIGZyb20g cnRlc3RfYWRtaW4gd2hlcmUgc3lzbmFtZSA9IG9sZC5zeXNuYW1lOw0KICAJ KTsNCiEgY3JlYXRlIHJ1bGUgcnRlc3RfcGVyc191cGQgYXMgb24gdXBkYXRl IHRvIHJ0ZXN0X3BlcnNvbiBkbyANCiAgCXVwZGF0ZSBydGVzdF9hZG1pbiBz ZXQgcG5hbWUgPSBuZXcucG5hbWUgd2hlcmUgcG5hbWUgPSBvbGQucG5hbWU7 DQohIGNyZWF0ZSBydWxlIHJ0ZXN0X3BlcnNfZGVsIGFzIG9uIGRlbGV0ZSB0 byBydGVzdF9wZXJzb24gZG8gDQogIAlkZWxldGUgZnJvbSBydGVzdF9hZG1p biB3aGVyZSBwbmFtZSA9IG9sZC5wbmFtZTsNCiAgLS0NCiAgLS0gVGFibGVz IGFuZCBydWxlcyBmb3IgdGhlIGxvZ2dpbmcgdGVzdA0KLS0tIDI5LDQ3IC0t LS0NCiAgY3JlYXRlIHRhYmxlIHJ0ZXN0X2ludGVyZmFjZSAoc3lzbmFtZSB0 ZXh0LCBpZm5hbWUgdGV4dCk7DQogIGNyZWF0ZSB0YWJsZSBydGVzdF9wZXJz b24gKHBuYW1lIHRleHQsIHBkZXNjIHRleHQpOw0KICBjcmVhdGUgdGFibGUg cnRlc3RfYWRtaW4gKHBuYW1lIHRleHQsIHN5c25hbWUgdGV4dCk7DQohIGNy ZWF0ZSBydWxlIHJ0ZXN0X3N5c191cGQgYXMgb24gdXBkYXRlIHRvIHJ0ZXN0 X3N5c3RlbSBkbyBhbHNvICgNCiAgCXVwZGF0ZSBydGVzdF9pbnRlcmZhY2Ug c2V0IHN5c25hbWUgPSBuZXcuc3lzbmFtZSANCiAgCQl3aGVyZSBzeXNuYW1l ID0gb2xkLnN5c25hbWU7DQogIAl1cGRhdGUgcnRlc3RfYWRtaW4gc2V0IHN5 c25hbWUgPSBuZXcuc3lzbmFtZSANCiAgCQl3aGVyZSBzeXNuYW1lID0gb2xk LnN5c25hbWUNCiAgCSk7DQohIGNyZWF0ZSBydWxlIHJ0ZXN0X3N5c19kZWwg YXMgb24gZGVsZXRlIHRvIHJ0ZXN0X3N5c3RlbSBkbyBhbHNvICgNCiAgCWRl bGV0ZSBmcm9tIHJ0ZXN0X2ludGVyZmFjZSB3aGVyZSBzeXNuYW1lID0gb2xk LnN5c25hbWU7DQogIAlkZWxldGUgZnJvbSBydGVzdF9hZG1pbiB3aGVyZSBz eXNuYW1lID0gb2xkLnN5c25hbWU7DQogIAkpOw0KISBjcmVhdGUgcnVsZSBy dGVzdF9wZXJzX3VwZCBhcyBvbiB1cGRhdGUgdG8gcnRlc3RfcGVyc29uIGRv IGFsc28NCiAgCXVwZGF0ZSBydGVzdF9hZG1pbiBzZXQgcG5hbWUgPSBuZXcu cG5hbWUgd2hlcmUgcG5hbWUgPSBvbGQucG5hbWU7DQohIGNyZWF0ZSBydWxl IHJ0ZXN0X3BlcnNfZGVsIGFzIG9uIGRlbGV0ZSB0byBydGVzdF9wZXJzb24g ZG8gYWxzbw0KICAJZGVsZXRlIGZyb20gcnRlc3RfYWRtaW4gd2hlcmUgcG5h bWUgPSBvbGQucG5hbWU7DQogIC0tDQogIC0tIFRhYmxlcyBhbmQgcnVsZXMg Zm9yIHRoZSBsb2dnaW5nIHRlc3QNCioqKiAuL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL3J1bGVzLnNxbC5vcmlnCVN1biBGZWIgMjkgMTc6NDM6NTkgMjAwNA0K LS0tIC4vc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnVsZXMuc3FsCVN1biBGZWIg MjkgMTc6NDU6NDcgMjAwNA0KKioqKioqKioqKioqKioqDQoqKiogMzMsNTQg KioqKg0KICBjcmVhdGUgdGFibGUgcnRlc3RfcGVyc29uIChwbmFtZSB0ZXh0 LCBwZGVzYyB0ZXh0KTsNCiAgY3JlYXRlIHRhYmxlIHJ0ZXN0X2FkbWluIChw bmFtZSB0ZXh0LCBzeXNuYW1lIHRleHQpOw0KICANCiEgY3JlYXRlIHJ1bGUg cnRlc3Rfc3lzX3VwZCBhcyBvbiB1cGRhdGUgdG8gcnRlc3Rfc3lzdGVtIGRv ICgNCiAgCXVwZGF0ZSBydGVzdF9pbnRlcmZhY2Ugc2V0IHN5c25hbWUgPSBu ZXcuc3lzbmFtZSANCiAgCQl3aGVyZSBzeXNuYW1lID0gb2xkLnN5c25hbWU7 DQogIAl1cGRhdGUgcnRlc3RfYWRtaW4gc2V0IHN5c25hbWUgPSBuZXcuc3lz bmFtZSANCiAgCQl3aGVyZSBzeXNuYW1lID0gb2xkLnN5c25hbWUNCiAgCSk7 DQogIA0KISBjcmVhdGUgcnVsZSBydGVzdF9zeXNfZGVsIGFzIG9uIGRlbGV0 ZSB0byBydGVzdF9zeXN0ZW0gZG8gKA0KICAJZGVsZXRlIGZyb20gcnRlc3Rf aW50ZXJmYWNlIHdoZXJlIHN5c25hbWUgPSBvbGQuc3lzbmFtZTsNCiAgCWRl bGV0ZSBmcm9tIHJ0ZXN0X2FkbWluIHdoZXJlIHN5c25hbWUgPSBvbGQuc3lz bmFtZTsNCiAgCSk7DQogIA0KISBjcmVhdGUgcnVsZSBydGVzdF9wZXJzX3Vw ZCBhcyBvbiB1cGRhdGUgdG8gcnRlc3RfcGVyc29uIGRvIA0KICAJdXBkYXRl IHJ0ZXN0X2FkbWluIHNldCBwbmFtZSA9IG5ldy5wbmFtZSB3aGVyZSBwbmFt ZSA9IG9sZC5wbmFtZTsNCiAgDQohIGNyZWF0ZSBydWxlIHJ0ZXN0X3BlcnNf ZGVsIGFzIG9uIGRlbGV0ZSB0byBydGVzdF9wZXJzb24gZG8gDQogIAlkZWxl dGUgZnJvbSBydGVzdF9hZG1pbiB3aGVyZSBwbmFtZSA9IG9sZC5wbmFtZTsN CiAgDQogIC0tDQotLS0gMzMsNTQgLS0tLQ0KICBjcmVhdGUgdGFibGUgcnRl c3RfcGVyc29uIChwbmFtZSB0ZXh0LCBwZGVzYyB0ZXh0KTsNCiAgY3JlYXRl IHRhYmxlIHJ0ZXN0X2FkbWluIChwbmFtZSB0ZXh0LCBzeXNuYW1lIHRleHQp Ow0KICANCiEgY3JlYXRlIHJ1bGUgcnRlc3Rfc3lzX3VwZCBhcyBvbiB1cGRh dGUgdG8gcnRlc3Rfc3lzdGVtIGRvIGFsc28gKA0KICAJdXBkYXRlIHJ0ZXN0 X2ludGVyZmFjZSBzZXQgc3lzbmFtZSA9IG5ldy5zeXNuYW1lIA0KICAJCXdo ZXJlIHN5c25hbWUgPSBvbGQuc3lzbmFtZTsNCiAgCXVwZGF0ZSBydGVzdF9h ZG1pbiBzZXQgc3lzbmFtZSA9IG5ldy5zeXNuYW1lIA0KICAJCXdoZXJlIHN5 c25hbWUgPSBvbGQuc3lzbmFtZQ0KICAJKTsNCiAgDQohIGNyZWF0ZSBydWxl IHJ0ZXN0X3N5c19kZWwgYXMgb24gZGVsZXRlIHRvIHJ0ZXN0X3N5c3RlbSBk byBhbHNvICgNCiAgCWRlbGV0ZSBmcm9tIHJ0ZXN0X2ludGVyZmFjZSB3aGVy ZSBzeXNuYW1lID0gb2xkLnN5c25hbWU7DQogIAlkZWxldGUgZnJvbSBydGVz dF9hZG1pbiB3aGVyZSBzeXNuYW1lID0gb2xkLnN5c25hbWU7DQogIAkpOw0K ICANCiEgY3JlYXRlIHJ1bGUgcnRlc3RfcGVyc191cGQgYXMgb24gdXBkYXRl IHRvIHJ0ZXN0X3BlcnNvbiBkbyBhbHNvDQogIAl1cGRhdGUgcnRlc3RfYWRt aW4gc2V0IHBuYW1lID0gbmV3LnBuYW1lIHdoZXJlIHBuYW1lID0gb2xkLnBu YW1lOw0KICANCiEgY3JlYXRlIHJ1bGUgcnRlc3RfcGVyc19kZWwgYXMgb24g ZGVsZXRlIHRvIHJ0ZXN0X3BlcnNvbiBkbyBhbHNvDQogIAlkZWxldGUgZnJv bSBydGVzdF9hZG1pbiB3aGVyZSBwbmFtZSA9IG9sZC5wbmFtZTsNCiAgDQog IC0tDQoqKiogLi9kb2Mvc3JjL3NnbWwva2V5d29yZHMuc2dtbC5vcmlnCVN1 biBGZWIgMjkgMTg6NDQ6NDQgMjAwNA0KLS0tIC4vZG9jL3NyYy9zZ21sL2tl eXdvcmRzLnNnbWwJU3VuIEZlYiAyOSAxODo0NTo0MCAyMDA0DQoqKioqKioq KioqKioqKioNCioqKiAxNzEsMTc2ICoqKioNCi0tLSAxNzEsMTgyIC0tLS0N CiAgICAgIDxlbnRyeT5yZXNlcnZlZDwvZW50cnk+DQogICAgIDwvcm93Pg0K ICAgICA8cm93Pg0KKyAgICAgPGVudHJ5Pjx0b2tlbj5BTFNPPC90b2tlbj48 L2VudHJ5Pg0KKyAgICAgPGVudHJ5Pm5vbi1yZXNlcnZlZDwvZW50cnk+DQor ICAgICA8ZW50cnk+PC9lbnRyeT4NCisgICAgIDxlbnRyeT48L2VudHJ5Pg0K KyAgICA8L3Jvdz4NCisgICAgPHJvdz4NCiAgICAgIDxlbnRyeT48dG9rZW4+ QUxURVI8L3Rva2VuPjwvZW50cnk+DQogICAgICA8ZW50cnk+bm9uLXJlc2Vy dmVkPC9lbnRyeT4NCiAgICAgIDxlbnRyeT5yZXNlcnZlZDwvZW50cnk+DQo= --34246414-1794079377-1078128654=:28778--