X-Original-To: pgsql-patches-postgresql.org@postgresql.org Received: from localhost (mx1.hub.org [200.46.208.251]) by postgresql.org (Postfix) with ESMTP id C39E99FB33A for ; Mon, 31 Jul 2006 22:21:15 -0300 (ADT) Received: from postgresql.org ([200.46.204.71]) by localhost (mx1.hub.org [200.46.208.251]) (amavisd-new, port 10024) with ESMTP id 48390-05 for ; Mon, 31 Jul 2006 22:21:04 -0300 (ADT) X-Greylist: from auto-whitelisted by SQLgrey- Received: from sss.pgh.pa.us (sss.pgh.pa.us [66.207.139.130]) by postgresql.org (Postfix) with ESMTP id 4214E9FB306 for ; Mon, 31 Jul 2006 22:21:03 -0300 (ADT) Received: from sss2.sss.pgh.pa.us (tgl@localhost [127.0.0.1]) by sss.pgh.pa.us (8.13.6/8.13.6) with ESMTP id k711L045026168; Mon, 31 Jul 2006 21:21:00 -0400 (EDT) To: Joe Conway cc: "Patches (PostgreSQL)" Subject: Re: [HACKERS] 8.2 features? In-reply-to: <44CE529F.2070701@joeconway.com> References: <200607281947.k6SJlOI02533@momjian.us> <473.1154116455@sss.pgh.pa.us> <44CA76A9.8070101@joeconway.com> <44CB051D.6090609@joeconway.com> <21320.1154222840@sss.pgh.pa.us> <26226.1154279741@sss.pgh.pa.us> <44CE529F.2070701@joeconway.com> Comments: In-reply-to Joe Conway message dated "Mon, 31 Jul 2006 11:57:35 -0700" MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----- =_aaaaaaaaaa0" Content-ID: <26159.1154395165.0@sss.pgh.pa.us> Date: Mon, 31 Jul 2006 21:21:00 -0400 Message-ID: <26167.1154395260@sss.pgh.pa.us> From: Tom Lane X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=0.306 tagged_above=0 required=5 tests=AWL, MIME_BASE64_NO_NAME, SPF_HELO_PASS, SPF_PASS X-Spam-Level: X-Archive-Number: 200607/360 X-Sequence-Number: 20514 ------- =_aaaaaaaaaa0 Content-Type: text/plain; charset="us-ascii" Content-ID: <26159.1154395165.1@sss.pgh.pa.us> Joe Conway writes: > I wanted to post an updated patch even though there are still things not > working again after conversion to bare expressions. I've been through the planner part of this and it looks OK (one or two small errors). I'm currently messing with a revised version of the grammar that supports putting VALUES everyplace that the spec allows, and is a bit simpler than the old one to boot: it folds VALUES and SELECT together, so we need fewer cases in the INSERT production. Of course this breaks most of what you did in the parser :-( ... I'm working on fixing that. I'm about to go out to dinner but thought I'd post the gram.y and parsenodes.h files so you could see where I'm headed. These are diffs from CVS tip, not from your patch. regards, tom lane ------- =_aaaaaaaaaa0 Content-Type: application/octet-stream Content-ID: <26159.1154395165.2@sss.pgh.pa.us> Content-Description: values-incomplete-patch.diff Content-Transfer-Encoding: base64 KioqIHNyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkub3JpZwlTdW4gSnVsIDMwIDIxOjE2OjM3IDIw MDYKLS0tIHNyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkJTW9uIEp1bCAzMSAyMDoxNTo0NiAyMDA2 CioqKioqKioqKioqKioqKgoqKiogMTczLDE3OSAqKioqCiAgCQlEcm9wT3duZWRTdG10IFJlYXNz aWduT3duZWRTdG10CiAgCiAgJXR5cGUgPG5vZGU+CXNlbGVjdF9ub19wYXJlbnMgc2VsZWN0X3dp dGhfcGFyZW5zIHNlbGVjdF9jbGF1c2UKISAJCQkJc2ltcGxlX3NlbGVjdAogIAogICV0eXBlIDxu b2RlPglhbHRlcl9jb2x1bW5fZGVmYXVsdCBvcGNsYXNzX2l0ZW0gYWx0ZXJfdXNpbmcKICAldHlw ZSA8aXZhbD4JYWRkX2Ryb3AKLS0tIDE3MywxNzkgLS0tLQogIAkJRHJvcE93bmVkU3RtdCBSZWFz c2lnbk93bmVkU3RtdAogIAogICV0eXBlIDxub2RlPglzZWxlY3Rfbm9fcGFyZW5zIHNlbGVjdF93 aXRoX3BhcmVucyBzZWxlY3RfY2xhdXNlCiEgCQkJCXNpbXBsZV9zZWxlY3QgdmFsdWVzX2NsYXVz ZQogIAogICV0eXBlIDxub2RlPglhbHRlcl9jb2x1bW5fZGVmYXVsdCBvcGNsYXNzX2l0ZW0gYWx0 ZXJfdXNpbmcKICAldHlwZSA8aXZhbD4JYWRkX2Ryb3AKKioqKioqKioqKioqKioqCioqKiAyMzgs MjQ0ICoqKioKICAJCQkJcXVhbGlmaWVkX25hbWVfbGlzdCBhbnlfbmFtZSBhbnlfbmFtZV9saXN0 CiAgCQkJCWFueV9vcGVyYXRvciBleHByX2xpc3QgYXR0cnMKICAJCQkJdGFyZ2V0X2xpc3QgdXBk YXRlX3RhcmdldF9saXN0IGluc2VydF9jb2x1bW5fbGlzdAohIAkJCQlpbnNlcnRfdGFyZ2V0X2xp c3QgZGVmX2xpc3QgaW5kaXJlY3Rpb24gb3B0X2luZGlyZWN0aW9uCiAgCQkJCWdyb3VwX2NsYXVz ZSBUcmlnZ2VyRnVuY0FyZ3Mgc2VsZWN0X2xpbWl0CiAgCQkJCW9wdF9zZWxlY3RfbGltaXQgb3Bj bGFzc19pdGVtX2xpc3QKICAJCQkJdHJhbnNhY3Rpb25fbW9kZV9saXN0X29yX2VtcHR5Ci0tLSAy MzgsMjQ0IC0tLS0KICAJCQkJcXVhbGlmaWVkX25hbWVfbGlzdCBhbnlfbmFtZSBhbnlfbmFtZV9s aXN0CiAgCQkJCWFueV9vcGVyYXRvciBleHByX2xpc3QgYXR0cnMKICAJCQkJdGFyZ2V0X2xpc3Qg dXBkYXRlX3RhcmdldF9saXN0IGluc2VydF9jb2x1bW5fbGlzdAohIAkJCQl2YWx1ZXNfbGlzdCBk ZWZfbGlzdCBpbmRpcmVjdGlvbiBvcHRfaW5kaXJlY3Rpb24KICAJCQkJZ3JvdXBfY2xhdXNlIFRy aWdnZXJGdW5jQXJncyBzZWxlY3RfbGltaXQKICAJCQkJb3B0X3NlbGVjdF9saW1pdCBvcGNsYXNz X2l0ZW1fbGlzdAogIAkJCQl0cmFuc2FjdGlvbl9tb2RlX2xpc3Rfb3JfZW1wdHkKKioqKioqKioq KioqKioqCioqKiAyOTksMzA1ICoqKioKICAldHlwZSA8bGlzdD4Jd2hlbl9jbGF1c2VfbGlzdAog ICV0eXBlIDxpdmFsPglzdWJfdHlwZQogICV0eXBlIDxsaXN0PglPcHRDcmVhdGVBcyBDcmVhdGVB c0xpc3QKISAldHlwZSA8bm9kZT4JQ3JlYXRlQXNFbGVtZW50CiAgJXR5cGUgPHZhbHVlPglOdW1l cmljT25seSBGbG9hdE9ubHkgSW50ZWdlck9ubHkKICAldHlwZSA8YWxpYXM+CWFsaWFzX2NsYXVz ZQogICV0eXBlIDxzb3J0Ynk+CXNvcnRieQotLS0gMjk5LDMwNSAtLS0tCiAgJXR5cGUgPGxpc3Q+ CXdoZW5fY2xhdXNlX2xpc3QKICAldHlwZSA8aXZhbD4Jc3ViX3R5cGUKICAldHlwZSA8bGlzdD4J T3B0Q3JlYXRlQXMgQ3JlYXRlQXNMaXN0CiEgJXR5cGUgPG5vZGU+CUNyZWF0ZUFzRWxlbWVudCB2 YWx1ZXNfaXRlbQogICV0eXBlIDx2YWx1ZT4JTnVtZXJpY09ubHkgRmxvYXRPbmx5IEludGVnZXJP bmx5CiAgJXR5cGUgPGFsaWFzPglhbGlhc19jbGF1c2UKICAldHlwZSA8c29ydGJ5Pglzb3J0YnkK KioqKioqKioqKioqKioqCioqKiAzMDgsMzE0ICoqKioKICAldHlwZSA8amV4cHI+CWpvaW5lZF90 YWJsZQogICV0eXBlIDxyYW5nZT4JcmVsYXRpb25fZXhwcgogICV0eXBlIDxyYW5nZT4JcmVsYXRp b25fZXhwcl9vcHRfYWxpYXMKISAldHlwZSA8dGFyZ2V0Pgl0YXJnZXRfZWwgaW5zZXJ0X3Rhcmdl dF9lbCB1cGRhdGVfdGFyZ2V0X2VsIGluc2VydF9jb2x1bW5faXRlbQogIAogICV0eXBlIDx0eXBu YW0+CVR5cGVuYW1lIFNpbXBsZVR5cGVuYW1lIENvbnN0VHlwZW5hbWUKICAJCQkJR2VuZXJpY1R5 cGUgTnVtZXJpYyBvcHRfZmxvYXQKLS0tIDMwOCwzMTQgLS0tLQogICV0eXBlIDxqZXhwcj4Jam9p bmVkX3RhYmxlCiAgJXR5cGUgPHJhbmdlPglyZWxhdGlvbl9leHByCiAgJXR5cGUgPHJhbmdlPgly ZWxhdGlvbl9leHByX29wdF9hbGlhcwohICV0eXBlIDx0YXJnZXQ+CXRhcmdldF9lbCB1cGRhdGVf dGFyZ2V0X2VsIGluc2VydF9jb2x1bW5faXRlbQogIAogICV0eXBlIDx0eXBuYW0+CVR5cGVuYW1l IFNpbXBsZVR5cGVuYW1lIENvbnN0VHlwZW5hbWUKICAJCQkJR2VuZXJpY1R5cGUgTnVtZXJpYyBv cHRfZmxvYXQKKioqKioqKioqKioqKioqCioqKiA1MzQyLDUzODEgKioqKgogIAkJOwogIAogIGlu c2VydF9yZXN0OgohIAkJCVZBTFVFUyAnKCcgaW5zZXJ0X3RhcmdldF9saXN0ICcpJwohIAkJCQl7 CiEgCQkJCQkkJCA9IG1ha2VOb2RlKEluc2VydFN0bXQpOwohIAkJCQkJJCQtPmNvbHMgPSBOSUw7 CiEgCQkJCQkkJC0+dGFyZ2V0TGlzdCA9ICQzOwohIAkJCQkJJCQtPnNlbGVjdFN0bXQgPSBOVUxM OwohIAkJCQl9CiEgCQkJfCBERUZBVUxUIFZBTFVFUwohIAkJCQl7CiEgCQkJCQkkJCA9IG1ha2VO b2RlKEluc2VydFN0bXQpOwohIAkJCQkJJCQtPmNvbHMgPSBOSUw7CiEgCQkJCQkkJC0+dGFyZ2V0 TGlzdCA9IE5JTDsKISAJCQkJCSQkLT5zZWxlY3RTdG10ID0gTlVMTDsKISAJCQkJfQohIAkJCXwg U2VsZWN0U3RtdAogIAkJCQl7CiAgCQkJCQkkJCA9IG1ha2VOb2RlKEluc2VydFN0bXQpOwogIAkJ CQkJJCQtPmNvbHMgPSBOSUw7Ci0gCQkJCQkkJC0+dGFyZ2V0TGlzdCA9IE5JTDsKICAJCQkJCSQk LT5zZWxlY3RTdG10ID0gJDE7CiAgCQkJCX0KISAJCQl8ICcoJyBpbnNlcnRfY29sdW1uX2xpc3Qg JyknIFZBTFVFUyAnKCcgaW5zZXJ0X3RhcmdldF9saXN0ICcpJwogIAkJCQl7CiAgCQkJCQkkJCA9 IG1ha2VOb2RlKEluc2VydFN0bXQpOwogIAkJCQkJJCQtPmNvbHMgPSAkMjsKISAJCQkJCSQkLT50 YXJnZXRMaXN0ID0gJDY7CiEgCQkJCQkkJC0+c2VsZWN0U3RtdCA9IE5VTEw7CiAgCQkJCX0KISAJ CQl8ICcoJyBpbnNlcnRfY29sdW1uX2xpc3QgJyknIFNlbGVjdFN0bXQKICAJCQkJewogIAkJCQkJ JCQgPSBtYWtlTm9kZShJbnNlcnRTdG10KTsKISAJCQkJCSQkLT5jb2xzID0gJDI7CiEgCQkJCQkk JC0+dGFyZ2V0TGlzdCA9IE5JTDsKISAJCQkJCSQkLT5zZWxlY3RTdG10ID0gJDQ7CiAgCQkJCX0K ICAJCTsKICAKLS0tIDUzNDIsNTM2NCAtLS0tCiAgCQk7CiAgCiAgaW5zZXJ0X3Jlc3Q6CiEgCQkJ U2VsZWN0U3RtdAogIAkJCQl7CiAgCQkJCQkkJCA9IG1ha2VOb2RlKEluc2VydFN0bXQpOwogIAkJ CQkJJCQtPmNvbHMgPSBOSUw7CiAgCQkJCQkkJC0+c2VsZWN0U3RtdCA9ICQxOwogIAkJCQl9CiEg CQkJfCAnKCcgaW5zZXJ0X2NvbHVtbl9saXN0ICcpJyBTZWxlY3RTdG10CiAgCQkJCXsKICAJCQkJ CSQkID0gbWFrZU5vZGUoSW5zZXJ0U3RtdCk7CiAgCQkJCQkkJC0+Y29scyA9ICQyOwohIAkJCQkJ JCQtPnNlbGVjdFN0bXQgPSAkNDsKICAJCQkJfQohIAkJCXwgREVGQVVMVCBWQUxVRVMKICAJCQkJ ewogIAkJCQkJJCQgPSBtYWtlTm9kZShJbnNlcnRTdG10KTsKISAJCQkJCSQkLT5jb2xzID0gTklM OwohIAkJCQkJJCQtPnNlbGVjdFN0bXQgPSBOVUxMOwogIAkJCQl9CiAgCQk7CiAgCioqKioqKioq KioqKioqKgoqKiogNTYyOSw1NjM0ICoqKioKLS0tIDU2MTIsNTYxOCAtLS0tCiAgCQkJCQluLT5o YXZpbmdDbGF1c2UgPSAkODsKICAJCQkJCSQkID0gKE5vZGUgKiluOwogIAkJCQl9CisgCQkJfCB2 YWx1ZXNfY2xhdXNlCQkJCQkJCXsgJCQgPSAkMTsgfQogIAkJCXwgc2VsZWN0X2NsYXVzZSBVTklP TiBvcHRfYWxsIHNlbGVjdF9jbGF1c2UKICAJCQkJewogIAkJCQkJJCQgPSBtYWtlU2V0T3AoU0VU T1BfVU5JT04sICQzLCAkMSwgJDQpOwoqKioqKioqKioqKioqKioKKioqIDU4NDgsNTg1MyAqKioq Ci0tLSA1ODMyLDU4NjMgLS0tLQogIAkJCXwgLyogRU1QVFkgKi8JCQkJCQkJeyAkJCA9IE5JTDsg fQogIAkJOwogIAorIAorIHZhbHVlc19jbGF1c2U6CisgCQkJVkFMVUVTICcoJyB2YWx1ZXNfbGlz dCAnKScKKyAJCQkJeworIAkJCQkJU2VsZWN0U3RtdCAqbiA9IG1ha2VOb2RlKFNlbGVjdFN0bXQp OworIAkJCQkJbi0+dmFsdWVzTGlzdHMgPSBsaXN0X21ha2UxKCQzKTsKKyAJCQkJCSQkID0gKE5v ZGUgKikgbjsKKyAJCQkJfQorIAkJCXwgdmFsdWVzX2NsYXVzZSAnLCcgJygnIHZhbHVlc19saXN0 ICcpJworIAkJCQl7CisgCQkJCQlTZWxlY3RTdG10ICpuID0gKFNlbGVjdFN0bXQgKikgJDE7Cisg CQkJCQluLT52YWx1ZXNMaXN0cyA9IGxhcHBlbmQobi0+dmFsdWVzTGlzdHMsICQ0KTsKKyAJCQkJ CSQkID0gKE5vZGUgKikgbjsKKyAJCQkJfQorIAkJOworIAorIHZhbHVlc19saXN0OiB2YWx1ZXNf aXRlbQkJCQkJCQl7ICQkID0gbGlzdF9tYWtlMSgkMSk7IH0KKyAJCQl8IHZhbHVlc19saXN0ICcs JyB2YWx1ZXNfaXRlbQkJCXsgJCQgPSBsYXBwZW5kKCQxLCAkMyk7IH0KKyAJCTsKKyAKKyB2YWx1 ZXNfaXRlbToKKyAJCQlhX2V4cHIJCQkJCXsgJCQgPSAoTm9kZSAqKSAkMTsgfQorIAkJCXwgREVG QVVMVAkJCQl7ICQkID0gKE5vZGUgKikgbWFrZU5vZGUoU2V0VG9EZWZhdWx0KTsgfQorIAkJOwor IAorIAogIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqCiAgICoJY2xhdXNlcyBjb21tb24gdG8g YWxsIE9wdGltaXphYmxlIFN0bXRzOgoqKioqKioqKioqKioqKioKKioqIDgxNzYsODIwNSAqKioq CiAgCiAgCQk7CiAgCi0gaW5zZXJ0X3RhcmdldF9saXN0OgotIAkJCWluc2VydF90YXJnZXRfZWwJ CQkJCQl7ICQkID0gbGlzdF9tYWtlMSgkMSk7IH0KLSAJCQl8IGluc2VydF90YXJnZXRfbGlzdCAn LCcgaW5zZXJ0X3RhcmdldF9lbCB7ICQkID0gbGFwcGVuZCgkMSwgJDMpOyB9Ci0gCQk7Ci0gCi0g aW5zZXJ0X3RhcmdldF9lbDoKLSAJCQlhX2V4cHIKLSAJCQkJewotIAkJCQkJJCQgPSBtYWtlTm9k ZShSZXNUYXJnZXQpOwotIAkJCQkJJCQtPm5hbWUgPSBOVUxMOwotIAkJCQkJJCQtPmluZGlyZWN0 aW9uID0gTklMOwotIAkJCQkJJCQtPnZhbCA9IChOb2RlICopJDE7Ci0gCQkJCQkkJC0+bG9jYXRp b24gPSBAMTsKLSAJCQkJfQotIAkJCXwgREVGQVVMVAotIAkJCQl7Ci0gCQkJCQkkJCA9IG1ha2VO b2RlKFJlc1RhcmdldCk7Ci0gCQkJCQkkJC0+bmFtZSA9IE5VTEw7Ci0gCQkJCQkkJC0+aW5kaXJl Y3Rpb24gPSBOSUw7Ci0gCQkJCQkkJC0+dmFsID0gKE5vZGUgKikgbWFrZU5vZGUoU2V0VG9EZWZh dWx0KTsKLSAJCQkJCSQkLT5sb2NhdGlvbiA9IEAxOwotIAkJCQl9Ci0gCQk7Ci0gCiAgCiAgLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqCiAgICoKLS0tIDgxODYsODE5MSAtLS0tCioqKioqKioqKioqKioq KgoqKiogODY1Niw4NjYyICoqKioKICAJCQl8IFZBQ1VVTQogIAkJCXwgVkFMSUQKICAJCQl8IFZB TElEQVRPUgotIAkJCXwgVkFMVUVTCiAgCQkJfCBWQVJZSU5HCiAgCQkJfCBWSUVXCiAgCQkJfCBW T0xBVElMRQotLS0gODY0Miw4NjQ3IC0tLS0KKioqKioqKioqKioqKioqCioqKiA4NzE1LDg3MjAg KioqKgotLS0gODcwMCw4NzA2IC0tLS0KICAJCQl8IFRJTUVTVEFNUAogIAkJCXwgVFJFQVQKICAJ CQl8IFRSSU0KKyAJCQl8IFZBTFVFUwogIAkJCXwgVkFSQ0hBUgogIAkJOwogIAoqKiogc3JjL2lu Y2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oLm9yaWcJU3VuIEp1bCAzMCAyMToxNjozOCAyMDA2Ci0t LSBzcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgJTW9uIEp1bCAzMSAyMDoxMzo1OSAyMDA2 CioqKioqKioqKioqKioqKgoqKiogNTE3LDUyMyAqKioqCiAgCVJURV9TVUJRVUVSWSwJCQkJLyog c3VicXVlcnkgaW4gRlJPTSAqLwogIAlSVEVfSk9JTiwJCQkJCS8qIGpvaW4gKi8KICAJUlRFX1NQ RUNJQUwsCQkJCS8qIHNwZWNpYWwgcnVsZSByZWxhdGlvbiAoTkVXIG9yIE9MRCkgKi8KISAJUlRF X0ZVTkNUSU9OCQkJCS8qIGZ1bmN0aW9uIGluIEZST00gKi8KICB9IFJURUtpbmQ7CiAgCiAgdHlw ZWRlZiBzdHJ1Y3QgUmFuZ2VUYmxFbnRyeQotLS0gNTE3LDUyNCAtLS0tCiAgCVJURV9TVUJRVUVS WSwJCQkJLyogc3VicXVlcnkgaW4gRlJPTSAqLwogIAlSVEVfSk9JTiwJCQkJCS8qIGpvaW4gKi8K ICAJUlRFX1NQRUNJQUwsCQkJCS8qIHNwZWNpYWwgcnVsZSByZWxhdGlvbiAoTkVXIG9yIE9MRCkg Ki8KISAJUlRFX0ZVTkNUSU9OLAkJCQkvKiBmdW5jdGlvbiBpbiBGUk9NICovCiEgCVJURV9WQUxV RVMJCQkJCS8qIFZBTFVFUyAoPGV4cHJsaXN0PiksICg8ZXhwcmxpc3Q+KSwgLi4uICovCiAgfSBS VEVLaW5kOwogIAogIHR5cGVkZWYgc3RydWN0IFJhbmdlVGJsRW50cnkKKioqKioqKioqKioqKioq CioqKiA1NTQsNTU5ICoqKioKLS0tIDU1NSw1NjUgLS0tLQogIAlMaXN0CSAgICpmdW5jY29sdHlw bW9kczsJLyogaW50ZWdlciBsaXN0IG9mIGNvbHVtbiB0eXBtb2RzICovCiAgCiAgCS8qCisgCSAq IEZpZWxkcyB2YWxpZCBmb3IgYSB2YWx1ZXMgUlRFIChlbHNlIE5JTCk6CisgCSAqLworIAlMaXN0 CSAgICp2YWx1ZXNfbGlzdHM7CS8qIGxpc3Qgb2YgZXhwcmVzc2lvbiBsaXN0cyAqLworIAorIAkv KgogIAkgKiBGaWVsZHMgdmFsaWQgZm9yIGEgam9pbiBSVEUgKGVsc2UgTlVMTC96ZXJvKToKICAJ ICoKICAJICogam9pbmFsaWFzdmFycyBpcyBhIGxpc3Qgb2YgVmFycyBvciBDT0FMRVNDRSBleHBy ZXNzaW9ucyBjb3JyZXNwb25kaW5nCioqKioqKioqKioqKioqKgoqKiogNjMwLDYzNSAqKioqCi0t LSA2MzYsNjQ1IC0tLS0KICAKICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICoJCUluc2Vy dCBTdGF0ZW1lbnQKKyAgKgorICAqIFRoZSBzb3VyY2UgZXhwcmVzc2lvbiBpcyByZXByZXNlbnRl ZCBieSBTZWxlY3RTdG10IGZvciBib3RoIHRoZQorICAqIFNFTEVDVCBhbmQgVkFMVUVTIGNhc2Vz LiAgSWYgc2VsZWN0U3RtdCBpcyBOVUxMLCB0aGVuIHRoZSBxdWVyeQorICAqIGlzIElOU0VSVCAu Li4gREVGQVVMVCBWQUxVRVMuCiAgICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAqLwogIHR5 cGVkZWYgc3RydWN0IEluc2VydFN0bXQKKioqKioqKioqKioqKioqCioqKiA2MzcsNjUwICoqKioK ICAJTm9kZVRhZwkJdHlwZTsKICAJUmFuZ2VWYXIgICAqcmVsYXRpb247CQkvKiByZWxhdGlvbiB0 byBpbnNlcnQgaW50byAqLwogIAlMaXN0CSAgICpjb2xzOwkJCS8qIG9wdGlvbmFsOiBuYW1lcyBv ZiB0aGUgdGFyZ2V0IGNvbHVtbnMgKi8KISAKISAJLyoKISAJICogQW4gSU5TRVJUIHN0YXRlbWVu dCBoYXMgKmVpdGhlciogVkFMVUVTIG9yIFNFTEVDVCwgbmV2ZXIgYm90aC4gSWYKISAJICogVkFM VUVTLCBhIHRhcmdldExpc3QgaXMgc3VwcGxpZWQgKGVtcHR5IGZvciBERUZBVUxUIFZBTFVFUyku IElmIFNFTEVDVCwKISAJICogYSBjb21wbGV0ZSBTZWxlY3RTdG10IChvciBzZXQtb3BlcmF0aW9u IHRyZWUpIGlzIHN1cHBsaWVkLgohIAkgKi8KISAJTGlzdAkgICAqdGFyZ2V0TGlzdDsJCS8qIHRo ZSB0YXJnZXQgbGlzdCAob2YgUmVzVGFyZ2V0KSAqLwohIAlOb2RlCSAgICpzZWxlY3RTdG10OwkJ LyogdGhlIHNvdXJjZSBTRUxFQ1QgKi8KICB9IEluc2VydFN0bXQ7CiAgCiAgLyogLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQotLS0gNjQ3LDY1MyAtLS0tCiAgCU5vZGVUYWcJCXR5cGU7CiAgCVJhbmdl VmFyICAgKnJlbGF0aW9uOwkJLyogcmVsYXRpb24gdG8gaW5zZXJ0IGludG8gKi8KICAJTGlzdAkg ICAqY29sczsJCQkvKiBvcHRpb25hbDogbmFtZXMgb2YgdGhlIHRhcmdldCBjb2x1bW5zICovCiEg CU5vZGUJICAgKnNlbGVjdFN0bXQ7CQkvKiB0aGUgc291cmNlIFNFTEVDVC9WQUxVRVMsIG9yIE5V TEwgKi8KICB9IEluc2VydFN0bXQ7CiAgCiAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoqKioq KioqKioqKioqKioKKioqIDY3Niw2ODQgKioqKgogICAqCQlTZWxlY3QgU3RhdGVtZW50CiAgICoK ICAgKiBBICJzaW1wbGUiIFNFTEVDVCBpcyByZXByZXNlbnRlZCBpbiB0aGUgb3V0cHV0IG9mIGdy YW0ueSBieSBhIHNpbmdsZQohICAqIFNlbGVjdFN0bXQgbm9kZS4gIEEgU0VMRUNUIGNvbnN0cnVj dCBjb250YWluaW5nIHNldCBvcGVyYXRvcnMgKFVOSU9OLAohICAqIElOVEVSU0VDVCwgRVhDRVBU KSBpcyByZXByZXNlbnRlZCBieSBhIHRyZWUgb2YgU2VsZWN0U3RtdCBub2RlcywgaW4KISAgKiB3 aGljaCB0aGUgbGVhZiBub2RlcyBhcmUgY29tcG9uZW50IFNFTEVDVHMgYW5kIHRoZSBpbnRlcm5h bCBub2RlcwogICAqIHJlcHJlc2VudCBVTklPTiwgSU5URVJTRUNULCBvciBFWENFUFQgb3BlcmF0 b3JzLiAgVXNpbmcgdGhlIHNhbWUgbm9kZQogICAqIHR5cGUgZm9yIGJvdGggbGVhZiBhbmQgaW50 ZXJuYWwgbm9kZXMgYWxsb3dzIGdyYW0ueSB0byBzdGljayBPUkRFUiBCWSwKICAgKiBMSU1JVCwg ZXRjLCBjbGF1c2UgdmFsdWVzIGludG8gYSBTRUxFQ1Qgc3RhdGVtZW50IHdpdGhvdXQgd29ycnlp bmcKLS0tIDY3OSw2ODcgLS0tLQogICAqCQlTZWxlY3QgU3RhdGVtZW50CiAgICoKICAgKiBBICJz aW1wbGUiIFNFTEVDVCBpcyByZXByZXNlbnRlZCBpbiB0aGUgb3V0cHV0IG9mIGdyYW0ueSBieSBh IHNpbmdsZQohICAqIFNlbGVjdFN0bXQgbm9kZTsgc28gaXMgYSBWQUxVRVMgY29uc3RydWN0LiAg QSBxdWVyeSBjb250YWluaW5nIHNldAohICAqIG9wZXJhdG9ycyAoVU5JT04sIElOVEVSU0VDVCwg RVhDRVBUKSBpcyByZXByZXNlbnRlZCBieSBhIHRyZWUgb2YgU2VsZWN0U3RtdAohICAqIG5vZGVz LCBpbiB3aGljaCB0aGUgbGVhZiBub2RlcyBhcmUgY29tcG9uZW50IFNFTEVDVHMgYW5kIHRoZSBp bnRlcm5hbCBub2RlcwogICAqIHJlcHJlc2VudCBVTklPTiwgSU5URVJTRUNULCBvciBFWENFUFQg b3BlcmF0b3JzLiAgVXNpbmcgdGhlIHNhbWUgbm9kZQogICAqIHR5cGUgZm9yIGJvdGggbGVhZiBh bmQgaW50ZXJuYWwgbm9kZXMgYWxsb3dzIGdyYW0ueSB0byBzdGljayBPUkRFUiBCWSwKICAgKiBM SU1JVCwgZXRjLCBjbGF1c2UgdmFsdWVzIGludG8gYSBTRUxFQ1Qgc3RhdGVtZW50IHdpdGhvdXQg d29ycnlpbmcKKioqKioqKioqKioqKioqCioqKiA3MTUsNzIwICoqKioKLS0tIDcxOCw3MzMgLS0t LQogIAlOb2RlCSAgICp3aGVyZUNsYXVzZTsJLyogV0hFUkUgcXVhbGlmaWNhdGlvbiAqLwogIAlM aXN0CSAgICpncm91cENsYXVzZTsJLyogR1JPVVAgQlkgY2xhdXNlcyAqLwogIAlOb2RlCSAgICpo YXZpbmdDbGF1c2U7CS8qIEhBVklORyBjb25kaXRpb25hbC1leHByZXNzaW9uICovCisgCisgCS8q CisgCSAqIEluIGEgImxlYWYiIG5vZGUgcmVwcmVzZW50aW5nIGEgVkFMVUVTIGxpc3QsIHRoZSBh Ym92ZSBmaWVsZHMgYXJlIGFsbAorIAkgKiBudWxsLCBhbmQgaW5zdGVhZCB3ZSBoYXZlIHRoaXMg ZmllbGQgc2V0LiAgTm90ZSB0aGF0IHRoZSBlbGVtZW50cyBvZgorIAkgKiB0aGUgc3VibGlzdHMg YXJlIGp1c3QgZXhwcmVzc2lvbnMsIHdpdGhvdXQgUmVzVGFyZ2V0IGRlY29yYXRpb24uCisgCSAq IEFsc28gbm90ZSB0aGF0IGEgbGlzdCBlbGVtZW50IGNhbiBiZSBERUZBVUxUIChyZXByZXNlbnRl ZCBhcyBhCisgCSAqIFNldFRvRGVmYXVsdCBub2RlKSwgcmVnYXJkbGVzcyBvZiB0aGUgY29udGV4 dCBvZiB0aGUgVkFMVUVTIGxpc3QuCisgCSAqIEl0J3MgdXAgdG8gcGFyc2UgYW5hbHlzaXMgdG8g cmVqZWN0IHRoYXQgd2hlcmUgbm90IHZhbGlkLgorIAkgKi8KKyAJTGlzdAkgICAqdmFsdWVzTGlz dHM7CS8qIHVudHJhbnNmb3JtZWQgbGlzdCBvZiBleHByZXNzaW9uIGxpc3RzICovCiAgCiAgCS8q CiAgCSAqIFRoZXNlIGZpZWxkcyBhcmUgdXNlZCBpbiBib3RoICJsZWFmIiBTZWxlY3RTdG10cyBh bmQgdXBwZXItbGV2ZWwK ------- =_aaaaaaaaaa0--