Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.80) (envelope-from ) id 1WSQml-0006S4-4g for pgsql-hackers@arkaria.postgresql.org; Tue, 25 Mar 2014 12:48:55 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.80) (envelope-from ) id 1WSQmk-0005J5-3l for pgsql-hackers@arkaria.postgresql.org; Tue, 25 Mar 2014 12:48:54 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtp (Exim 4.80) (envelope-from ) id 1WSQmg-0005GA-P2 for pgsql-hackers@postgresql.org; Tue, 25 Mar 2014 12:48:50 +0000 Received: from tama50.ecl.ntt.co.jp ([129.60.39.147]) by magus.postgresql.org with esmtp (Exim 4.80) (envelope-from ) id 1WSQmY-0004fL-4o for pgsql-hackers@postgresql.org; Tue, 25 Mar 2014 12:48:50 +0000 Received: from mfs6.rdh.ecl.ntt.co.jp (mfs6.rdh.ecl.ntt.co.jp [129.60.39.149]) by tama50.ecl.ntt.co.jp (8.13.8/8.13.8) with ESMTP id s2PCmaP0012833; Tue, 25 Mar 2014 21:48:36 +0900 Received: from mfs6.rdh.ecl.ntt.co.jp (localhost.localdomain [127.0.0.1]) by mfs6.rdh.ecl.ntt.co.jp (Postfix) with ESMTP id AC768E0131; Tue, 25 Mar 2014 21:48:36 +0900 (JST) Received: from imail3.m.ecl.ntt.co.jp (imail3.m.ecl.ntt.co.jp [129.60.5.248]) by mfs6.rdh.ecl.ntt.co.jp (Postfix) with ESMTP id 9FA4BE0130; Tue, 25 Mar 2014 21:48:36 +0900 (JST) Received: from [129.60.241.153] ([129.60.241.153]) by imail3.m.ecl.ntt.co.jp (8.13.8/8.13.8) with ESMTP id s2PCmaqb015880; Tue, 25 Mar 2014 21:48:36 +0900 Message-ID: <53317B04.9050901@lab.ntt.co.jp> Date: Tue, 25 Mar 2014 21:48:04 +0900 From: Etsuro Fujita User-Agent: Mozilla/5.0 (Windows NT 6.0; rv:24.0) Gecko/20100101 Thunderbird/24.4.0 MIME-Version: 1.0 To: Kyotaro HORIGUCHI CC: shigeru.hanada@gmail.com, pgsql-hackers@postgresql.org Subject: Re: inherit support for foreign tables References: <20140310.172911.79971075.horiguchi.kyotaro@lab.ntt.co.jp> <5321ABD2.6000104@lab.ntt.co.jp> <20140317.173044.254841983.horiguchi.kyotaro@lab.ntt.co.jp> <20140318.183856.121817800.horiguchi.kyotaro@lab.ntt.co.jp> <532AE62A.6020307@lab.ntt.co.jp> In-Reply-To: <532AE62A.6020307@lab.ntt.co.jp> Content-Type: multipart/mixed; boundary="------------080600030109030009040501" X-TM-AS-MML: No X-Pg-Spam-Score: -2.3 (--) List-Archive: List-Help: List-ID: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-Mailing-List: pgsql-hackers Precedence: bulk Sender: pgsql-hackers-owner@postgresql.org This is a multi-part message in MIME format. --------------080600030109030009040501 Content-Type: text/plain; charset=Shift_JIS Content-Transfer-Encoding: 7bit (2014/03/20 21:59), Etsuro Fujita wrote: > I revised the patch. Patche attached, though I plan to update the > documentation further early next week. I updated the documentation further and revise the patch further. Attached is an updated version of the patch. Thanks, Best regards, Etsuro Fujita --------------080600030109030009040501 Content-Type: text/plain; charset=Shift_JIS; name="foreign_inherit-v8.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="foreign_inherit-v8.patch" KioqIGEvY29udHJpYi9maWxlX2Zkdy9maWxlX2Zkdy5jCi0tLSBiL2NvbnRy aWIvZmlsZV9mZHcvZmlsZV9mZHcuYwoqKioqKioqKioqKioqKioKKioqIDEx NywxMjIgKioqKiBzdGF0aWMgdm9pZCBmaWxlR2V0Rm9yZWlnblJlbFNpemUo UGxhbm5lckluZm8gKnJvb3QsCi0tLSAxMTcsMTI3IC0tLS0KICBzdGF0aWMg dm9pZCBmaWxlR2V0Rm9yZWlnblBhdGhzKFBsYW5uZXJJbmZvICpyb290LAog IAkJCQkJUmVsT3B0SW5mbyAqYmFzZXJlbCwKICAJCQkJCU9pZCBmb3JlaWdu dGFibGVpZCk7Cisgc3RhdGljIEZvcmVpZ25QYXRoICpmaWxlUmVwYXJhbWV0 ZXJpemVGb3JlaWduUGF0aChQbGFubmVySW5mbyAqcm9vdCwKKyAJCQkJCQkJ CQkJCQkgIFJlbE9wdEluZm8gKmJhc2VyZWwsCisgCQkJCQkJCQkJCQkJICBP aWQgZm9yZWlnbnRhYmxlaWQsCisgCQkJCQkJCQkJCQkJICBGb3JlaWduUGF0 aCAqcGF0aCwKKyAJCQkJCQkJCQkJCQkgIFJlbGlkcyByZXF1aXJlZF9vdXRl cik7CiAgc3RhdGljIEZvcmVpZ25TY2FuICpmaWxlR2V0Rm9yZWlnblBsYW4o UGxhbm5lckluZm8gKnJvb3QsCiAgCQkJCSAgIFJlbE9wdEluZm8gKmJhc2Vy ZWwsCiAgCQkJCSAgIE9pZCBmb3JlaWdudGFibGVpZCwKKioqKioqKioqKioq KioqCioqKiAxNDUsMTUxICoqKiogc3RhdGljIGJvb2wgY2hlY2tfc2VsZWN0 aXZlX2JpbmFyeV9jb252ZXJzaW9uKFJlbE9wdEluZm8gKmJhc2VyZWwsCiAg c3RhdGljIHZvaWQgZXN0aW1hdGVfc2l6ZShQbGFubmVySW5mbyAqcm9vdCwg UmVsT3B0SW5mbyAqYmFzZXJlbCwKICAJCQkgIEZpbGVGZHdQbGFuU3RhdGUg KmZkd19wcml2YXRlKTsKICBzdGF0aWMgdm9pZCBlc3RpbWF0ZV9jb3N0cyhQ bGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqYmFzZXJlbCwKISAJCQkg ICBGaWxlRmR3UGxhblN0YXRlICpmZHdfcHJpdmF0ZSwKICAJCQkgICBDb3N0 ICpzdGFydHVwX2Nvc3QsIENvc3QgKnRvdGFsX2Nvc3QpOwogIHN0YXRpYyBp bnQgZmlsZV9hY3F1aXJlX3NhbXBsZV9yb3dzKFJlbGF0aW9uIG9uZXJlbCwg aW50IGVsZXZlbCwKICAJCQkJCQkgSGVhcFR1cGxlICpyb3dzLCBpbnQgdGFy Z3Jvd3MsCi0tLSAxNTAsMTU2IC0tLS0KICBzdGF0aWMgdm9pZCBlc3RpbWF0 ZV9zaXplKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpiYXNlcmVs LAogIAkJCSAgRmlsZUZkd1BsYW5TdGF0ZSAqZmR3X3ByaXZhdGUpOwogIHN0 YXRpYyB2b2lkIGVzdGltYXRlX2Nvc3RzKFBsYW5uZXJJbmZvICpyb290LCBS ZWxPcHRJbmZvICpiYXNlcmVsLAohIAkJCSAgIEZpbGVGZHdQbGFuU3RhdGUg KmZkd19wcml2YXRlLCBMaXN0ICpqb2luX2NvbmRzLAogIAkJCSAgIENvc3Qg KnN0YXJ0dXBfY29zdCwgQ29zdCAqdG90YWxfY29zdCk7CiAgc3RhdGljIGlu dCBmaWxlX2FjcXVpcmVfc2FtcGxlX3Jvd3MoUmVsYXRpb24gb25lcmVsLCBp bnQgZWxldmVsLAogIAkJCQkJCSBIZWFwVHVwbGUgKnJvd3MsIGludCB0YXJn cm93cywKKioqKioqKioqKioqKioqCioqKiAxNjMsMTY4ICoqKiogZmlsZV9m ZHdfaGFuZGxlcihQR19GVU5DVElPTl9BUkdTKQotLS0gMTY4LDE3NCAtLS0t CiAgCiAgCWZkd3JvdXRpbmUtPkdldEZvcmVpZ25SZWxTaXplID0gZmlsZUdl dEZvcmVpZ25SZWxTaXplOwogIAlmZHdyb3V0aW5lLT5HZXRGb3JlaWduUGF0 aHMgPSBmaWxlR2V0Rm9yZWlnblBhdGhzOworIAlmZHdyb3V0aW5lLT5SZXBh cmFtZXRlcml6ZUZvcmVpZ25QYXRoID0gZmlsZVJlcGFyYW1ldGVyaXplRm9y ZWlnblBhdGg7CiAgCWZkd3JvdXRpbmUtPkdldEZvcmVpZ25QbGFuID0gZmls ZUdldEZvcmVpZ25QbGFuOwogIAlmZHdyb3V0aW5lLT5FeHBsYWluRm9yZWln blNjYW4gPSBmaWxlRXhwbGFpbkZvcmVpZ25TY2FuOwogIAlmZHdyb3V0aW5l LT5CZWdpbkZvcmVpZ25TY2FuID0gZmlsZUJlZ2luRm9yZWlnblNjYW47Cioq KioqKioqKioqKioqKgoqKiogNTE3LDUyMyAqKioqIGZpbGVHZXRGb3JlaWdu UGF0aHMoUGxhbm5lckluZm8gKnJvb3QsCiAgCQkJCQkJCQkJCSAgKE5vZGUg KikgY29sdW1ucykpOwogIAogIAkvKiBFc3RpbWF0ZSBjb3N0cyAqLwohIAll c3RpbWF0ZV9jb3N0cyhyb290LCBiYXNlcmVsLCBmZHdfcHJpdmF0ZSwKICAJ CQkJICAgJnN0YXJ0dXBfY29zdCwgJnRvdGFsX2Nvc3QpOwogIAogIAkvKgot LS0gNTIzLDUzMCAtLS0tCiAgCQkJCQkJCQkJCSAgKE5vZGUgKikgY29sdW1u cykpOwogIAogIAkvKiBFc3RpbWF0ZSBjb3N0cyAqLwohIAllc3RpbWF0ZV9j b3N0cyhyb290LCBiYXNlcmVsLAohIAkJCQkgICBmZHdfcHJpdmF0ZSwgTklM LAogIAkJCQkgICAmc3RhcnR1cF9jb3N0LCAmdG90YWxfY29zdCk7CiAgCiAg CS8qCioqKioqKioqKioqKioqKgoqKiogNTQyLDU0NyAqKioqIGZpbGVHZXRG b3JlaWduUGF0aHMoUGxhbm5lckluZm8gKnJvb3QsCi0tLSA1NDksNTg5IC0t LS0KICB9CiAgCiAgLyoKKyAgKiBmaWxlUmVwYXJhbWV0ZXJpemVGb3JlaWdu UGF0aAorICAqCQlBdHRlbXB0IHRvIG1vZGlmeSBhIGdpdmVuIHBhdGggdG8g aGF2ZSBncmVhdGVyIHBhcmFtZXRlcml6YXRpb24KKyAgKi8KKyBzdGF0aWMg Rm9yZWlnblBhdGggKgorIGZpbGVSZXBhcmFtZXRlcml6ZUZvcmVpZ25QYXRo KFBsYW5uZXJJbmZvICpyb290LAorIAkJCQkJCQkgIFJlbE9wdEluZm8gKmJh c2VyZWwsCisgCQkJCQkJCSAgT2lkIGZvcmVpZ250YWJsZWlkLAorIAkJCQkJ CQkgIEZvcmVpZ25QYXRoICpwYXRoLAorIAkJCQkJCQkgIFJlbGlkcyByZXF1 aXJlZF9vdXRlcikKKyB7CisgCVBhcmFtUGF0aEluZm8gKnBhcmFtX2luZm87 CisgCUZpbGVGZHdQbGFuU3RhdGUgKmZkd19wcml2YXRlID0gKEZpbGVGZHdQ bGFuU3RhdGUgKikgYmFzZXJlbC0+ZmR3X3ByaXZhdGU7CisgCUNvc3QJCXN0 YXJ0dXBfY29zdDsKKyAJQ29zdAkJdG90YWxfY29zdDsKKyAKKyAJLyogR2V0 IHRoZSBQYXJhbVBhdGhJbmZvICovCisgCXBhcmFtX2luZm8gPSBnZXRfYmFz ZXJlbF9wYXJhbXBhdGhpbmZvKHJvb3QsIGJhc2VyZWwsIHJlcXVpcmVkX291 dGVyKTsKKyAKKyAJLyogUmVkbyB0aGUgY29zdCBlc3RpbWF0ZXMgKi8KKyAJ ZXN0aW1hdGVfY29zdHMocm9vdCwgYmFzZXJlbCwKKyAJCQkJICAgZmR3X3By aXZhdGUsCisgCQkJCSAgIHBhcmFtX2luZm8tPnBwaV9jbGF1c2VzLAorIAkJ CQkgICAmc3RhcnR1cF9jb3N0LCAmdG90YWxfY29zdCk7CisgCisgCS8qIE1h a2UgYW5kIHJldHVybiB0aGUgbmV3IHBhdGggKi8KKyAJcmV0dXJuIGNyZWF0 ZV9mb3JlaWduc2Nhbl9wYXRoKHJvb3QsIGJhc2VyZWwsCisgCQkJCQkJCQkg ICBwYXJhbV9pbmZvLT5wcGlfcm93cywKKyAJCQkJCQkJCSAgIHN0YXJ0dXBf Y29zdCwKKyAJCQkJCQkJCSAgIHRvdGFsX2Nvc3QsCisgCQkJCQkJCQkgICBO SUwsCQkvKiBubyBwYXRoa2V5cyAqLworIAkJCQkJCQkJICAgcmVxdWlyZWRf b3V0ZXIsCisgCQkJCQkJCQkgICBwYXRoLT5mZHdfcHJpdmF0ZSk7CisgfQor IAorIC8qCiAgICogZmlsZUdldEZvcmVpZ25QbGFuCiAgICoJCUNyZWF0ZSBh IEZvcmVpZ25TY2FuIHBsYW4gbm9kZSBmb3Igc2Nhbm5pbmcgdGhlIGZvcmVp Z24gdGFibGUKICAgKi8KKioqKioqKioqKioqKioqCioqKiA5NzAsOTgxICoq KiogZXN0aW1hdGVfc2l6ZShQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5m byAqYmFzZXJlbCwKICAgKi8KICBzdGF0aWMgdm9pZAogIGVzdGltYXRlX2Nv c3RzKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpiYXNlcmVsLAoh IAkJCSAgIEZpbGVGZHdQbGFuU3RhdGUgKmZkd19wcml2YXRlLAogIAkJCSAg IENvc3QgKnN0YXJ0dXBfY29zdCwgQ29zdCAqdG90YWxfY29zdCkKICB7CiAg CUJsb2NrTnVtYmVyIHBhZ2VzID0gZmR3X3ByaXZhdGUtPnBhZ2VzOwogIAlk b3VibGUJCW50dXBsZXMgPSBmZHdfcHJpdmF0ZS0+bnR1cGxlczsKICAJQ29z dAkJcnVuX2Nvc3QgPSAwOwogIAlDb3N0CQljcHVfcGVyX3R1cGxlOwogIAog IAkvKgotLS0gMTAxMiwxMDI0IC0tLS0KICAgKi8KICBzdGF0aWMgdm9pZAog IGVzdGltYXRlX2Nvc3RzKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZv ICpiYXNlcmVsLAohIAkJCSAgIEZpbGVGZHdQbGFuU3RhdGUgKmZkd19wcml2 YXRlLCBMaXN0ICpqb2luX2NvbmRzLAogIAkJCSAgIENvc3QgKnN0YXJ0dXBf Y29zdCwgQ29zdCAqdG90YWxfY29zdCkKICB7CiAgCUJsb2NrTnVtYmVyIHBh Z2VzID0gZmR3X3ByaXZhdGUtPnBhZ2VzOwogIAlkb3VibGUJCW50dXBsZXMg PSBmZHdfcHJpdmF0ZS0+bnR1cGxlczsKICAJQ29zdAkJcnVuX2Nvc3QgPSAw OworIAlRdWFsQ29zdAlqb2luX2Nvc3Q7CiAgCUNvc3QJCWNwdV9wZXJfdHVw bGU7CiAgCiAgCS8qCioqKioqKioqKioqKioqKgoqKiogOTg2LDk5MyAqKioq IGVzdGltYXRlX2Nvc3RzKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZv ICpiYXNlcmVsLAogIAkgKi8KICAJcnVuX2Nvc3QgKz0gc2VxX3BhZ2VfY29z dCAqIHBhZ2VzOwogIAohIAkqc3RhcnR1cF9jb3N0ID0gYmFzZXJlbC0+YmFz ZXJlc3RyaWN0Y29zdC5zdGFydHVwOwohIAljcHVfcGVyX3R1cGxlID0gY3B1 X3R1cGxlX2Nvc3QgKiAxMCArIGJhc2VyZWwtPmJhc2VyZXN0cmljdGNvc3Qu cGVyX3R1cGxlOwogIAlydW5fY29zdCArPSBjcHVfcGVyX3R1cGxlICogbnR1 cGxlczsKICAJKnRvdGFsX2Nvc3QgPSAqc3RhcnR1cF9jb3N0ICsgcnVuX2Nv c3Q7CiAgfQotLS0gMTAyOSwxMDM5IC0tLS0KICAJICovCiAgCXJ1bl9jb3N0 ICs9IHNlcV9wYWdlX2Nvc3QgKiBwYWdlczsKICAKISAJY29zdF9xdWFsX2V2 YWwoJmpvaW5fY29zdCwgam9pbl9jb25kcywgcm9vdCk7CiEgCSpzdGFydHVw X2Nvc3QgPQohIAkJKGJhc2VyZWwtPmJhc2VyZXN0cmljdGNvc3Quc3RhcnR1 cCArIGpvaW5fY29zdC5zdGFydHVwKTsKISAJY3B1X3Blcl90dXBsZSA9IGNw dV90dXBsZV9jb3N0ICogMTAgKwohIAkJKGJhc2VyZWwtPmJhc2VyZXN0cmlj dGNvc3QucGVyX3R1cGxlICsgam9pbl9jb3N0LnBlcl90dXBsZSk7CiAgCXJ1 bl9jb3N0ICs9IGNwdV9wZXJfdHVwbGUgKiBudHVwbGVzOwogIAkqdG90YWxf Y29zdCA9ICpzdGFydHVwX2Nvc3QgKyBydW5fY29zdDsKICB9CioqKiBhL2Nv bnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy5jCi0tLSBiL2NvbnRy aWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy5jCioqKioqKioqKioqKioq KgoqKiogMjQxLDI0NiAqKioqIHN0YXRpYyB2b2lkIHBvc3RncmVzR2V0Rm9y ZWlnblJlbFNpemUoUGxhbm5lckluZm8gKnJvb3QsCi0tLSAyNDEsMjUxIC0t LS0KICBzdGF0aWMgdm9pZCBwb3N0Z3Jlc0dldEZvcmVpZ25QYXRocyhQbGFu bmVySW5mbyAqcm9vdCwKICAJCQkJCQlSZWxPcHRJbmZvICpiYXNlcmVsLAog IAkJCQkJCU9pZCBmb3JlaWdudGFibGVpZCk7Cisgc3RhdGljIEZvcmVpZ25Q YXRoICpwb3N0Z3Jlc1JlcGFyYW1ldGVyaXplRm9yZWlnblBhdGgoUGxhbm5l ckluZm8gKnJvb3QsCisgCQkJCQkJCQkJCQkJCSAgUmVsT3B0SW5mbyAqYmFz ZXJlbCwKKyAJCQkJCQkJCQkJCQkJICBPaWQgZm9yZWlnbnRhYmxlaWQsCisg CQkJCQkJCQkJCQkJCSAgRm9yZWlnblBhdGggKnBhdGgsCisgCQkJCQkJCQkJ CQkJCSAgUmVsaWRzIHJlcXVpcmVkX291dGVyKTsKICBzdGF0aWMgRm9yZWln blNjYW4gKnBvc3RncmVzR2V0Rm9yZWlnblBsYW4oUGxhbm5lckluZm8gKnJv b3QsCiAgCQkJCQkgICBSZWxPcHRJbmZvICpiYXNlcmVsLAogIAkJCQkJICAg T2lkIGZvcmVpZ250YWJsZWlkLAoqKioqKioqKioqKioqKioKKioqIDM0Miwz NDcgKioqKiBwb3N0Z3Jlc19mZHdfaGFuZGxlcihQR19GVU5DVElPTl9BUkdT KQotLS0gMzQ3LDM1MyAtLS0tCiAgCS8qIEZ1bmN0aW9ucyBmb3Igc2Nhbm5p bmcgZm9yZWlnbiB0YWJsZXMgKi8KICAJcm91dGluZS0+R2V0Rm9yZWlnblJl bFNpemUgPSBwb3N0Z3Jlc0dldEZvcmVpZ25SZWxTaXplOwogIAlyb3V0aW5l LT5HZXRGb3JlaWduUGF0aHMgPSBwb3N0Z3Jlc0dldEZvcmVpZ25QYXRoczsK KyAJcm91dGluZS0+UmVwYXJhbWV0ZXJpemVGb3JlaWduUGF0aCA9IHBvc3Rn cmVzUmVwYXJhbWV0ZXJpemVGb3JlaWduUGF0aDsKICAJcm91dGluZS0+R2V0 Rm9yZWlnblBsYW4gPSBwb3N0Z3Jlc0dldEZvcmVpZ25QbGFuOwogIAlyb3V0 aW5lLT5CZWdpbkZvcmVpZ25TY2FuID0gcG9zdGdyZXNCZWdpbkZvcmVpZ25T Y2FuOwogIAlyb3V0aW5lLT5JdGVyYXRlRm9yZWlnblNjYW4gPSBwb3N0Z3Jl c0l0ZXJhdGVGb3JlaWduU2NhbjsKKioqKioqKioqKioqKioqCioqKiA3Mjks NzM0ICoqKiogcG9zdGdyZXNHZXRGb3JlaWduUGF0aHMoUGxhbm5lckluZm8g KnJvb3QsCi0tLSA3MzUsNzgyIC0tLS0KICB9CiAgCiAgLyoKKyAgKiBwb3N0 Z3Jlc1JlcGFyYW1ldGVyaXplRm9yZWlnblBhdGgKKyAgKgkJQXR0ZW1wdCB0 byBtb2RpZnkgYSBnaXZlbiBwYXRoIHRvIGhhdmUgZ3JlYXRlciBwYXJhbWV0 ZXJpemF0aW9uCisgICovCisgc3RhdGljIEZvcmVpZ25QYXRoICoKKyBwb3N0 Z3Jlc1JlcGFyYW1ldGVyaXplRm9yZWlnblBhdGgoUGxhbm5lckluZm8gKnJv b3QsCisgCQkJCQkJCQkgIFJlbE9wdEluZm8gKmJhc2VyZWwsCisgCQkJCQkJ CQkgIE9pZCBmb3JlaWdudGFibGVpZCwKKyAJCQkJCQkJCSAgRm9yZWlnblBh dGggKnBhdGgsCisgCQkJCQkJCQkgIFJlbGlkcyByZXF1aXJlZF9vdXRlcikK KyB7CisgCVBhcmFtUGF0aEluZm8gKnBhcmFtX2luZm87CisgCWRvdWJsZQkJ cm93czsKKyAJaW50CQkJd2lkdGg7CisgCUNvc3QJCXN0YXJ0dXBfY29zdDsK KyAJQ29zdAkJdG90YWxfY29zdDsKKyAKKyAJLyogR2V0IHRoZSBQYXJhbVBh dGhJbmZvICovCisgCXBhcmFtX2luZm8gPSBnZXRfYmFzZXJlbF9wYXJhbXBh dGhpbmZvKHJvb3QsIGJhc2VyZWwsIHJlcXVpcmVkX291dGVyKTsKKyAKKyAJ LyogUmVkbyB0aGUgY29zdCBlc3RpbWF0ZXMgKi8KKyAJZXN0aW1hdGVfcGF0 aF9jb3N0X3NpemUocm9vdCwgYmFzZXJlbCwKKyAJCQkJCQkJcGFyYW1faW5m by0+cHBpX2NsYXVzZXMsCisgCQkJCQkJCSZyb3dzLCAmd2lkdGgsCisgCQkJ CQkJCSZzdGFydHVwX2Nvc3QsICZ0b3RhbF9jb3N0KTsKKyAKKyAJLyoKKyAJ ICogcHBpX3Jvd3MgY3VycmVudGx5IHdvbid0IGdldCBsb29rZWQgYXQgYnkg YW55dGhpbmcsIGJ1dCBzdGlsbCB3ZQorIAkgKiBtYXkgYXMgd2VsbCBlbnN1 cmUgdGhhdCBpdCBtYXRjaGVzIG91ciBpZGVhIG9mIHRoZSByb3djb3VudC4K KyAJICovCisgCXBhcmFtX2luZm8tPnBwaV9yb3dzID0gcm93czsKKyAKKyAJ LyogTWFrZSBhbmQgcmV0dXJuIHRoZSBuZXcgcGF0aCAqLworIAlyZXR1cm4g Y3JlYXRlX2ZvcmVpZ25zY2FuX3BhdGgocm9vdCwgYmFzZXJlbCwKKyAJCQkJ CQkJCSAgIHJvd3MsCisgCQkJCQkJCQkgICBzdGFydHVwX2Nvc3QsCisgCQkJ CQkJCQkgICB0b3RhbF9jb3N0LAorIAkJCQkJCQkJICAgTklMLAkJLyogbm8g cGF0aGtleXMgKi8KKyAJCQkJCQkJCSAgIHJlcXVpcmVkX291dGVyLAorIAkJ CQkJCQkJICAgTklMKTsJLyogbm8gZmR3X3ByaXZhdGUgbGlzdCAqLworIH0K KyAKKyAvKgogICAqIHBvc3RncmVzR2V0Rm9yZWlnblBsYW4KICAgKgkJQ3Jl YXRlIEZvcmVpZ25TY2FuIHBsYW4gbm9kZSB3aGljaCBpbXBsZW1lbnRzIHNl bGVjdGVkIGJlc3QgcGF0aAogICAqLwoqKioqKioqKioqKioqKioKKioqIDE3 NzUsMTc4NSAqKioqIGVzdGltYXRlX3BhdGhfY29zdF9zaXplKFBsYW5uZXJJ bmZvICpyb290LAogIAl9CiAgCWVsc2UKICAJewohIAkJLyoKISAJCSAqIFdl IGRvbid0IHN1cHBvcnQgam9pbiBjb25kaXRpb25zIGluIHRoaXMgbW9kZSAo aGVuY2UsIG5vCiEgCQkgKiBwYXJhbWV0ZXJpemVkIHBhdGhzIGNhbiBiZSBt YWRlKS4KISAJCSAqLwohIAkJQXNzZXJ0KGpvaW5fY29uZHMgPT0gTklMKTsK ICAKICAJCS8qIFVzZSByb3dzL3dpZHRoIGVzdGltYXRlcyBtYWRlIGJ5IHNl dF9iYXNlcmVsX3NpemVfZXN0aW1hdGVzLiAqLwogIAkJcm93cyA9IGJhc2Vy ZWwtPnJvd3M7Ci0tLSAxODIzLDE4MzAgLS0tLQogIAl9CiAgCWVsc2UKICAJ ewohIAkJU2VsZWN0aXZpdHkgam9pbl9zZWw7CiEgCQlRdWFsQ29zdAlqb2lu X2Nvc3Q7CiAgCiAgCQkvKiBVc2Ugcm93cy93aWR0aCBlc3RpbWF0ZXMgbWFk ZSBieSBzZXRfYmFzZXJlbF9zaXplX2VzdGltYXRlcy4gKi8KICAJCXJvd3Mg PSBiYXNlcmVsLT5yb3dzOwoqKioqKioqKioqKioqKioKKioqIDE3OTIsMTgw OCAqKioqIGVzdGltYXRlX3BhdGhfY29zdF9zaXplKFBsYW5uZXJJbmZvICpy b290LAogIAkJcmV0cmlldmVkX3Jvd3MgPSBjbGFtcF9yb3dfZXN0KHJvd3Mg LyBmcGluZm8tPmxvY2FsX2NvbmRzX3NlbCk7CiAgCQlyZXRyaWV2ZWRfcm93 cyA9IE1pbihyZXRyaWV2ZWRfcm93cywgYmFzZXJlbC0+dHVwbGVzKTsKICAK ICAJCS8qCiAgCQkgKiBDb3N0IGFzIHRob3VnaCB0aGlzIHdlcmUgYSBzZXFz Y2FuLCB3aGljaCBpcyBwZXNzaW1pc3RpYy4gIFdlCiEgCQkgKiBlZmZlY3Rp dmVseSBpbWFnaW5lIHRoZSBsb2NhbF9jb25kcyBhcmUgYmVpbmcgZXZhbHVh dGVkIHJlbW90ZWx5LAohIAkJICogdG9vLgogIAkJICovCiAgCQlzdGFydHVw X2Nvc3QgPSAwOwogIAkJcnVuX2Nvc3QgPSAwOwogIAkJcnVuX2Nvc3QgKz0g c2VxX3BhZ2VfY29zdCAqIGJhc2VyZWwtPnBhZ2VzOwogIAohIAkJc3RhcnR1 cF9jb3N0ICs9IGJhc2VyZWwtPmJhc2VyZXN0cmljdGNvc3Quc3RhcnR1cDsK ISAJCWNwdV9wZXJfdHVwbGUgPSBjcHVfdHVwbGVfY29zdCArIGJhc2VyZWwt PmJhc2VyZXN0cmljdGNvc3QucGVyX3R1cGxlOwogIAkJcnVuX2Nvc3QgKz0g Y3B1X3Blcl90dXBsZSAqIGJhc2VyZWwtPnR1cGxlczsKICAKICAJCXRvdGFs X2Nvc3QgPSBzdGFydHVwX2Nvc3QgKyBydW5fY29zdDsKLS0tIDE4MzcsMTg2 NSAtLS0tCiAgCQlyZXRyaWV2ZWRfcm93cyA9IGNsYW1wX3Jvd19lc3Qocm93 cyAvIGZwaW5mby0+bG9jYWxfY29uZHNfc2VsKTsKICAJCXJldHJpZXZlZF9y b3dzID0gTWluKHJldHJpZXZlZF9yb3dzLCBiYXNlcmVsLT50dXBsZXMpOwog IAorIAkJLyogRmFjdG9yIGluIHRoZSBzZWxlY3Rpdml0eSBvZiB0aGUgam9p bl9jb25kcyAqLworIAkJam9pbl9zZWwgPSBjbGF1c2VsaXN0X3NlbGVjdGl2 aXR5KHJvb3QsCisgCQkJCQkJCQkJCSAgam9pbl9jb25kcywKKyAJCQkJCQkJ CQkJICBiYXNlcmVsLT5yZWxpZCwKKyAJCQkJCQkJCQkJICBKT0lOX0lOTkVS LAorIAkJCQkJCQkJCQkgIE5VTEwpOworIAorIAkJcm93cyA9IGNsYW1wX3Jv d19lc3Qocm93cyAqIGpvaW5fc2VsKTsKKyAKICAJCS8qCiAgCQkgKiBDb3N0 IGFzIHRob3VnaCB0aGlzIHdlcmUgYSBzZXFzY2FuLCB3aGljaCBpcyBwZXNz aW1pc3RpYy4gIFdlCiEgCQkgKiBlZmZlY3RpdmVseSBpbWFnaW5lIHRoZSBs b2NhbF9jb25kcyBhbmQgam9pbl9jb25kcyBhcmUgYmVpbmcKISAJCSAqIGV2 YWx1YXRlZCByZW1vdGVseSwgdG9vLgogIAkJICovCiAgCQlzdGFydHVwX2Nv c3QgPSAwOwogIAkJcnVuX2Nvc3QgPSAwOwogIAkJcnVuX2Nvc3QgKz0gc2Vx X3BhZ2VfY29zdCAqIGJhc2VyZWwtPnBhZ2VzOwogIAohIAkJY29zdF9xdWFs X2V2YWwoJmpvaW5fY29zdCwgam9pbl9jb25kcywgcm9vdCk7CiEgCQlzdGFy dHVwX2Nvc3QgKz0KISAJCQkoYmFzZXJlbC0+YmFzZXJlc3RyaWN0Y29zdC5z dGFydHVwICsgam9pbl9jb3N0LnN0YXJ0dXApOwohIAkJY3B1X3Blcl90dXBs ZSA9IGNwdV90dXBsZV9jb3N0ICsKISAJCQkoYmFzZXJlbC0+YmFzZXJlc3Ry aWN0Y29zdC5wZXJfdHVwbGUgKyBqb2luX2Nvc3QucGVyX3R1cGxlKTsKICAJ CXJ1bl9jb3N0ICs9IGNwdV9wZXJfdHVwbGUgKiBiYXNlcmVsLT50dXBsZXM7 CiAgCiAgCQl0b3RhbF9jb3N0ID0gc3RhcnR1cF9jb3N0ICsgcnVuX2Nvc3Q7 CioqKiBhL2RvYy9zcmMvc2dtbC9kZGwuc2dtbAotLS0gYi9kb2Mvc3JjL3Nn bWwvZGRsLnNnbWwKKioqKioqKioqKioqKioqCioqKiAyNTgsMjYzICoqKiog Q1JFQVRFIFRBQkxFIHByb2R1Y3RzICgKLS0tIDI1OCwyNzQgLS0tLQogICAg IGV2ZW4gaWYgdGhlIHZhbHVlIGNhbWUgZnJvbSB0aGUgZGVmYXVsdCB2YWx1 ZSBkZWZpbml0aW9uLgogICAgPC9wYXJhPgogIAorICAgPG5vdGU+CisgICAg PHBhcmE+CisgICAgIE5vdGUgdGhhdCBjb25zdHJhaW50cyBjYW4gYmUgZGVm aW5lZCBvbiBmb3JlaWduIHRhYmxlcyB0b28sIGJ1dCBzdWNoCisgICAgIGNv bnN0cmFpbnRzIGFyZSBub3QgZW5mb3JjZWQgb24gaW5zZXJ0IG9yIHVwZGF0 ZS4gIFRob3NlIGNvbnN0cmFpbnRzIGFyZQorICAgICAiYXNzZXJ0aXZlIiwg YW5kIHdvcmsgb25seSB0byB0ZWxsIHBsYW5uZXIgdGhhdCBzb21lIGtpbmQg b2Ygb3B0aW1pemF0aW9uCisgICAgIHN1Y2ggYXMgY29uc3RyYWludCBleGNs dXNpb24gY2FuIGJlIGNvbnNpZGVyZC4gIFRoaXMgc2VlbXMgdXNlbGVzcywg YnV0CisgICAgIGFsbG93cyB1cyB0byB1c2UgZm9yaWVnbiB0YWJsZSBhcyBj aGlsZCB0YWJsZSAoc2VlCisgICAgIDx4cmVmIGxpbmtlbmQ9ImRkbC1pbmhl cml0Ij4pIHRvIG9mZi1sb2FkIHRvIG11bHRpcGxlIHNlcnZlcnMuCisgICAg PC9wYXJhPgorICAgPC9ub3RlPgorIAogICAgPHNlY3QyIGlkPSJkZGwtY29u c3RyYWludHMtY2hlY2stY29uc3RyYWludHMiPgogICAgIDx0aXRsZT5DaGVj ayBDb25zdHJhaW50czwvdGl0bGU+CiAgCioqKioqKioqKioqKioqKgoqKiog MjAxNywyMDI0ICoqKiogQ1JFQVRFIFRBQkxFIGNhcGl0YWxzICgKICAgIDwv cGFyYT4KICAKICAgIDxwYXJhPgohICAgIEluIDxwcm9kdWN0bmFtZT5Qb3N0 Z3JlU1FMPC9wcm9kdWN0bmFtZT4sIGEgdGFibGUgY2FuIGluaGVyaXQgZnJv bQohICAgIHplcm8gb3IgbW9yZSBvdGhlciB0YWJsZXMsIGFuZCBhIHF1ZXJ5 IGNhbiByZWZlcmVuY2UgZWl0aGVyIGFsbAogICAgIHJvd3Mgb2YgYSB0YWJs ZSBvciBhbGwgcm93cyBvZiBhIHRhYmxlIHBsdXMgYWxsIG9mIGl0cyBkZXNj ZW5kYW50IHRhYmxlcy4KICAgICBUaGUgbGF0dGVyIGJlaGF2aW9yIGlzIHRo ZSBkZWZhdWx0LgogICAgIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIHF1 ZXJ5IGZpbmRzIHRoZSBuYW1lcyBvZiBhbGwgY2l0aWVzLAotLS0gMjAyOCwy MDM1IC0tLS0KICAgIDwvcGFyYT4KICAKICAgIDxwYXJhPgohICAgIEluIDxw cm9kdWN0bmFtZT5Qb3N0Z3JlU1FMPC9wcm9kdWN0bmFtZT4sIGEgdGFibGUg b3IgZm9yZWlnbiB0YWJsZSBjYW4KISAgICBpbmhlcml0IGZyb20gemVybyBv ciBtb3JlIG90aGVyIHRhYmxlcywgYW5kIGEgcXVlcnkgY2FuIHJlZmVyZW5j ZSBlaXRoZXIgYWxsCiAgICAgcm93cyBvZiBhIHRhYmxlIG9yIGFsbCByb3dz IG9mIGEgdGFibGUgcGx1cyBhbGwgb2YgaXRzIGRlc2NlbmRhbnQgdGFibGVz LgogICAgIFRoZSBsYXR0ZXIgYmVoYXZpb3IgaXMgdGhlIGRlZmF1bHQuCiAg ICAgRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgcXVlcnkgZmluZHMgdGhl IG5hbWVzIG9mIGFsbCBjaXRpZXMsCioqKiBhL2RvYy9zcmMvc2dtbC9mZHdo YW5kbGVyLnNnbWwKLS0tIGIvZG9jL3NyYy9zZ21sL2Zkd2hhbmRsZXIuc2dt bAoqKioqKioqKioqKioqKioKKioqIDE2MiwxNjcgKioqKiBHZXRGb3JlaWdu UGF0aHMgKFBsYW5uZXJJbmZvICpyb290LAotLS0gMTYyLDE5OCAtLS0tCiAg CiAgICAgIDxwYXJhPgogIDxwcm9ncmFtbGlzdGluZz4KKyBGb3JlaWduUGF0 aCAqCisgUmVwYXJhbWV0ZXJpemVGb3JlaWduUGF0aCAoUGxhbm5lckluZm8g KnJvb3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVsT3B0SW5m byAqYmFzZXJlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBPaWQg Zm9yZWlnbnRhYmxlaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg Rm9yZWlnblBhdGggKnBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgUmVsaWRzIHJlcXVpcmVkX291dGVyKTsKKyA8L3Byb2dyYW1saXN0aW5n PgorIAorICAgICAgQ3JlYXRlIGFuIGFjY2VzcyBwYXRoIGZvciBhIHNjYW4g b24gYSBmb3JlaWduIHRhYmxlIHVzaW5nIGpvaW4KKyAgICAgIGNsYXVzZXMs IHdoaWNoIGlzIGNhbGxlZCBhIDxxdW90ZT5wYXJhbWV0ZXJpemVkIHBhdGg8 Lz4uCisgICAgICBUaGlzIGlzIGNhbGxlZCBkdXJpbmcgcXVlcnkgcGxhbm5p bmcuCisgICAgICBUaGUgcGFyYW1ldGVycyBhcmUgYXMgZm9yIDxmdW5jdGlv bj5HZXRGb3JlaWduUmVsU2l6ZTwvPiwgcGx1cworICAgICAgdGhlIDxzdHJ1 Y3RuYW1lPkZvcmVpZ25QYXRoPC8+IChwcmV2aW91c2x5IHByb2R1Y2VkIGJ5 CisgICAgICA8ZnVuY3Rpb24+R2V0Rm9yZWlnblBhdGhzPC8+KSwgYW5kIHRo ZSBJRHMgb2YgYWxsIG90aGVyIHRhYmxlcworICAgICAgdGhhdCBwcm92aWRl IHRoZSBqb2luIGNsYXVzZXMuCisgICAgIDwvcGFyYT4KKyAKKyAgICAgPHBh cmE+CisgICAgICBUaGlzIGZ1bmN0aW9uIG11c3QgZ2VuZXJhdGUgYSBwYXJh bWV0ZXJpemVkIHBhdGggZm9yIGEgc2NhbiBvbiB0aGUKKyAgICAgIGZvcmVp Z24gdGFibGUuICBUaGUgcGFyYW1ldGVyaXplZCBwYXRoIG11c3QgY29udGFp biBjb3N0IGVzdGltYXRlcywKKyAgICAgIGFuZCBjYW4gY29udGFpbiBhbnkg RkRXLXByaXZhdGUgaW5mb3JtYXRpb24gdGhhdCBpcyBuZWVkZWQgdG8gaWRl bnRpZnkKKyAgICAgIHRoZSBzcGVjaWZpYyBzY2FuIG1ldGhvZCBpbnRlbmRl ZC4gIFVubGlrZSB0aGUgb3RoZXIgc2Nhbi1yZWxhdGVkCisgICAgICBmdW5j dGlvbnMsIHRoaXMgZnVuY3Rpb24gaXMgb3B0aW9uYWwuCisgICAgIDwvcGFy YT4KKyAKKyAgICAgPHBhcmE+CisgICAgICBTZWUgPHhyZWYgbGlua2VuZD0i ZmR3LXBsYW5uaW5nIj4gZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uCisg ICAgIDwvcGFyYT4KKyAKKyAgICAgPHBhcmE+CisgPHByb2dyYW1saXN0aW5n PgogIEZvcmVpZ25TY2FuICoKICBHZXRGb3JlaWduUGxhbiAoUGxhbm5lcklu Zm8gKnJvb3QsCiAgICAgICAgICAgICAgICAgIFJlbE9wdEluZm8gKmJhc2Vy ZWwsCioqKioqKioqKioqKioqKgoqKiogODA0LDgxMyAqKioqIEdldEZvcmVp Z25TZXJ2ZXJCeU5hbWUoY29uc3QgY2hhciAqbmFtZSwgYm9vbCBtaXNzaW5n X29rKTsKICAKICAgICAgPHBhcmE+CiAgICAgICBUaGUgRkRXIGNhbGxiYWNr IGZ1bmN0aW9ucyA8ZnVuY3Rpb24+R2V0Rm9yZWlnblJlbFNpemU8Lz4sCiEg ICAgICA8ZnVuY3Rpb24+R2V0Rm9yZWlnblBhdGhzPC8+LCA8ZnVuY3Rpb24+ R2V0Rm9yZWlnblBsYW48Lz4sIGFuZAohICAgICAgPGZ1bmN0aW9uPlBsYW5G b3JlaWduTW9kaWZ5PC8+IG11c3QgZml0IGludG8gdGhlIHdvcmtpbmdzIG9m IHRoZQohICAgICAgPHByb2R1Y3RuYW1lPlBvc3RncmVTUUw8Lz4gcGxhbm5l ci4gIEhlcmUgYXJlIHNvbWUgbm90ZXMgYWJvdXQgd2hhdAohICAgICAgdGhl eSBtdXN0IGRvLgogICAgICA8L3BhcmE+CiAgCiAgICAgIDxwYXJhPgotLS0g ODM1LDg0NCAtLS0tCiAgCiAgICAgIDxwYXJhPgogICAgICAgVGhlIEZEVyBj YWxsYmFjayBmdW5jdGlvbnMgPGZ1bmN0aW9uPkdldEZvcmVpZ25SZWxTaXpl PC8+LAohICAgICAgPGZ1bmN0aW9uPkdldEZvcmVpZ25QYXRoczwvPiwgPGZ1 bmN0aW9uPlJlcGFyYW1ldGVyaXplRm9yZWlnblBhdGg8Lz4sCiEgICAgICA8 ZnVuY3Rpb24+R2V0Rm9yZWlnblBsYW48Lz4sIGFuZCA8ZnVuY3Rpb24+UGxh bkZvcmVpZ25Nb2RpZnk8Lz4gbXVzdCBmaXQKISAgICAgIGludG8gdGhlIHdv cmtpbmdzIG9mIHRoZSA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvPiBwbGFu bmVyLiAgSGVyZSBhcmUKISAgICAgIHNvbWUgbm90ZXMgYWJvdXQgd2hhdCB0 aGV5IG11c3QgZG8uCiAgICAgIDwvcGFyYT4KICAKICAgICAgPHBhcmE+Cioq KioqKioqKioqKioqKgoqKiogODM2LDg1MCAqKioqIEdldEZvcmVpZ25TZXJ2 ZXJCeU5hbWUoY29uc3QgY2hhciAqbmFtZSwgYm9vbCBtaXNzaW5nX29rKTsK ICAgICAgIHRoZSBwYXJ0aWN1bGFyIGZvcmVpZ24gdGFibGUuICBUaGUgY29y ZSBwbGFubmVyIGRvZXMgbm90IHRvdWNoIGl0IGV4Y2VwdAogICAgICAgdG8g aW5pdGlhbGl6ZSBpdCB0byBOVUxMIHdoZW4gdGhlIDxsaXRlcmFsPmJhc2Vy ZWw8Lz4gbm9kZSBpcyBjcmVhdGVkLgogICAgICAgSXQgaXMgdXNlZnVsIGZv ciBwYXNzaW5nIGluZm9ybWF0aW9uIGZvcndhcmQgZnJvbQohICAgICAgPGZ1 bmN0aW9uPkdldEZvcmVpZ25SZWxTaXplPC8+IHRvIDxmdW5jdGlvbj5HZXRG b3JlaWduUGF0aHM8Lz4gYW5kL29yCiEgICAgICA8ZnVuY3Rpb24+R2V0Rm9y ZWlnblBhdGhzPC8+IHRvIDxmdW5jdGlvbj5HZXRGb3JlaWduUGxhbjwvPiwg dGhlcmVieQohICAgICAgYXZvaWRpbmcgcmVjYWxjdWxhdGlvbi4KICAgICAg PC9wYXJhPgogIAogICAgICA8cGFyYT4KISAgICAgIDxmdW5jdGlvbj5HZXRG b3JlaWduUGF0aHM8Lz4gY2FuIGlkZW50aWZ5IHRoZSBtZWFuaW5nIG9mIGRp ZmZlcmVudAohICAgICAgYWNjZXNzIHBhdGhzIGJ5IHN0b3JpbmcgcHJpdmF0 ZSBpbmZvcm1hdGlvbiBpbiB0aGUKISAgICAgIDxzdHJ1Y3RmaWVsZD5mZHdf cHJpdmF0ZTwvPiBmaWVsZCBvZiA8c3RydWN0bmFtZT5Gb3JlaWduUGF0aDwv PiBub2Rlcy4KICAgICAgIDxzdHJ1Y3RmaWVsZD5mZHdfcHJpdmF0ZTwvPiBp cyBkZWNsYXJlZCBhcyBhIDx0eXBlPkxpc3Q8Lz4gcG9pbnRlciwgYnV0CiAg ICAgICBjb3VsZCBhY3R1YWxseSBjb250YWluIGFueXRoaW5nIHNpbmNlIHRo ZSBjb3JlIHBsYW5uZXIgZG9lcyBub3QgdG91Y2gKICAgICAgIGl0LiAgSG93 ZXZlciwgYmVzdCBwcmFjdGljZSBpcyB0byB1c2UgYSByZXByZXNlbnRhdGlv biB0aGF0J3MgZHVtcGFibGUKLS0tIDg2Nyw4ODMgLS0tLQogICAgICAgdGhl IHBhcnRpY3VsYXIgZm9yZWlnbiB0YWJsZS4gIFRoZSBjb3JlIHBsYW5uZXIg ZG9lcyBub3QgdG91Y2ggaXQgZXhjZXB0CiAgICAgICB0byBpbml0aWFsaXpl IGl0IHRvIE5VTEwgd2hlbiB0aGUgPGxpdGVyYWw+YmFzZXJlbDwvPiBub2Rl IGlzIGNyZWF0ZWQuCiAgICAgICBJdCBpcyB1c2VmdWwgZm9yIHBhc3Npbmcg aW5mb3JtYXRpb24gZm9yd2FyZCBmcm9tCiEgICAgICA8ZnVuY3Rpb24+R2V0 Rm9yZWlnblJlbFNpemU8Lz4gdG8gPGZ1bmN0aW9uPkdldEZvcmVpZ25QYXRo czwvPiwKISAgICAgIDxmdW5jdGlvbj5HZXRGb3JlaWduUGF0aHM8Lz4gdG8g PGZ1bmN0aW9uPlJlcGFyYW1ldGVyaXplRm9yZWlnblBhdGg8Lz4KISAgICAg IGFuZC9vciA8ZnVuY3Rpb24+R2V0Rm9yZWlnblBhdGhzPC8+IHRvIDxmdW5j dGlvbj5HZXRGb3JlaWduUGxhbjwvPiwKISAgICAgIHRoZXJlYnkgYXZvaWRp bmcgcmVjYWxjdWxhdGlvbi4KICAgICAgPC9wYXJhPgogIAogICAgICA8cGFy YT4KISAgICAgIDxmdW5jdGlvbj5HZXRGb3JlaWduUGF0aHM8Lz4gb3IgPGZ1 bmN0aW9uPlJlcGFyYW1ldGVyaXplRm9yZWlnblBhdGg8Lz4KISAgICAgIGNh biBpZGVudGlmeSB0aGUgbWVhbmluZyBvZiBkaWZmZXJlbnQgYWNjZXNzIHBh dGhzIGJ5IHN0b3JpbmcgcHJpdmF0ZQohICAgICAgaW5mb3JtYXRpb24gaW4g dGhlIDxzdHJ1Y3RmaWVsZD5mZHdfcHJpdmF0ZTwvPiBmaWVsZCBvZgohICAg ICAgPHN0cnVjdG5hbWU+Rm9yZWlnblBhdGg8Lz4gbm9kZXMuCiAgICAgICA8 c3RydWN0ZmllbGQ+ZmR3X3ByaXZhdGU8Lz4gaXMgZGVjbGFyZWQgYXMgYSA8 dHlwZT5MaXN0PC8+IHBvaW50ZXIsIGJ1dAogICAgICAgY291bGQgYWN0dWFs bHkgY29udGFpbiBhbnl0aGluZyBzaW5jZSB0aGUgY29yZSBwbGFubmVyIGRv ZXMgbm90IHRvdWNoCiAgICAgICBpdC4gIEhvd2V2ZXIsIGJlc3QgcHJhY3Rp Y2UgaXMgdG8gdXNlIGEgcmVwcmVzZW50YXRpb24gdGhhdCdzIGR1bXBhYmxl CioqKioqKioqKioqKioqKgoqKiogODg3LDg5NiAqKioqIEdldEZvcmVpZ25T ZXJ2ZXJCeU5hbWUoY29uc3QgY2hhciAqbmFtZSwgYm9vbCBtaXNzaW5nX29r KTsKICAgICAgIDxyZXBsYWNlYWJsZT5zdWJfZXhwcmVzc2lvbjwvPiwgd2hp Y2ggaXQgZGV0ZXJtaW5lcyBjYW4gYmUgZXhlY3V0ZWQgb24KICAgICAgIHRo ZSByZW1vdGUgc2VydmVyIGdpdmVuIHRoZSBsb2NhbGx5LWV2YWx1YXRlZCB2 YWx1ZSBvZiB0aGUKICAgICAgIDxyZXBsYWNlYWJsZT5zdWJfZXhwcmVzc2lv bjwvPi4gIFRoZSBhY3R1YWwgaWRlbnRpZmljYXRpb24gb2Ygc3VjaCBhCiEg ICAgICBjbGF1c2Ugc2hvdWxkIGhhcHBlbiBkdXJpbmcgPGZ1bmN0aW9uPkdl dEZvcmVpZ25QYXRoczwvPiwgc2luY2UgaXQgd291bGQKISAgICAgIGFmZmVj dCB0aGUgY29zdCBlc3RpbWF0ZSBmb3IgdGhlIHBhdGguICBUaGUgcGF0aCdz CiEgICAgICA8c3RydWN0ZmllbGQ+ZmR3X3ByaXZhdGU8Lz4gZmllbGQgd291 bGQgcHJvYmFibHkgaW5jbHVkZSBhIHBvaW50ZXIgdG8KISAgICAgIHRoZSBp ZGVudGlmaWVkIGNsYXVzZSdzIDxzdHJ1Y3RuYW1lPlJlc3RyaWN0SW5mbzwv PiBub2RlLiAgVGhlbgogICAgICAgPGZ1bmN0aW9uPkdldEZvcmVpZ25QbGFu PC8+IHdvdWxkIHJlbW92ZSB0aGF0IGNsYXVzZSBmcm9tIHNjYW5fY2xhdXNl cywKICAgICAgIGJ1dCBhZGQgdGhlIDxyZXBsYWNlYWJsZT5zdWJfZXhwcmVz c2lvbjwvPiB0byA8c3RydWN0ZmllbGQ+ZmR3X2V4cHJzPC8+CiAgICAgICB0 byBlbnN1cmUgdGhhdCBpdCBnZXRzIG1hc3NhZ2VkIGludG8gZXhlY3V0YWJs ZSBmb3JtLiAgSXQgd291bGQgcHJvYmFibHkKLS0tIDkyMCw5MzAgLS0tLQog ICAgICAgPHJlcGxhY2VhYmxlPnN1Yl9leHByZXNzaW9uPC8+LCB3aGljaCBp dCBkZXRlcm1pbmVzIGNhbiBiZSBleGVjdXRlZCBvbgogICAgICAgdGhlIHJl bW90ZSBzZXJ2ZXIgZ2l2ZW4gdGhlIGxvY2FsbHktZXZhbHVhdGVkIHZhbHVl IG9mIHRoZQogICAgICAgPHJlcGxhY2VhYmxlPnN1Yl9leHByZXNzaW9uPC8+ LiAgVGhlIGFjdHVhbCBpZGVudGlmaWNhdGlvbiBvZiBzdWNoIGEKISAgICAg IGNsYXVzZSBzaG91bGQgaGFwcGVuIGR1cmluZyA8ZnVuY3Rpb24+R2V0Rm9y ZWlnblBhdGhzPC8+IG9yCiEgICAgICA8ZnVuY3Rpb24+UmVwYXJhbWV0ZXJp emVGb3JlaWduUGF0aDwvPiwgc2luY2UgaXQgd291bGQgYWZmZWN0IHRoZSBj b3N0CiEgICAgICBlc3RpbWF0ZSBmb3IgdGhlIHBhdGguICBUaGUgcGF0aCdz IDxzdHJ1Y3RmaWVsZD5mZHdfcHJpdmF0ZTwvPiBmaWVsZAohICAgICAgd291 bGQgcHJvYmFibHkgaW5jbHVkZSBhIHBvaW50ZXIgdG8gdGhlIGlkZW50aWZp ZWQgY2xhdXNlJ3MKISAgICAgIDxzdHJ1Y3RuYW1lPlJlc3RyaWN0SW5mbzwv PiBub2RlLiAgVGhlbgogICAgICAgPGZ1bmN0aW9uPkdldEZvcmVpZ25QbGFu PC8+IHdvdWxkIHJlbW92ZSB0aGF0IGNsYXVzZSBmcm9tIHNjYW5fY2xhdXNl cywKICAgICAgIGJ1dCBhZGQgdGhlIDxyZXBsYWNlYWJsZT5zdWJfZXhwcmVz c2lvbjwvPiB0byA8c3RydWN0ZmllbGQ+ZmR3X2V4cHJzPC8+CiAgICAgICB0 byBlbnN1cmUgdGhhdCBpdCBnZXRzIG1hc3NhZ2VkIGludG8gZXhlY3V0YWJs ZSBmb3JtLiAgSXQgd291bGQgcHJvYmFibHkKKioqIGEvZG9jL3NyYy9zZ21s L3JlZi9hbHRlcl9mb3JlaWduX3RhYmxlLnNnbWwKLS0tIGIvZG9jL3NyYy9z Z21sL3JlZi9hbHRlcl9mb3JlaWduX3RhYmxlLnNnbWwKKioqKioqKioqKioq KioqCioqKiA0Miw0NyAqKioqIEFMVEVSIEZPUkVJR04gVEFCTEUgWyBJRiBF WElTVFMgXSA8cmVwbGFjZWFibGUgY2xhc3M9IlBBUkFNRVRFUiI+bmFtZTwv cmVwbGFjZWFiCi0tLSA0Miw1MSAtLS0tCiAgICAgIEFMVEVSIFsgQ09MVU1O IF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJQQVJBTUVURVIiPmNvbHVtbl9uYW1l PC9yZXBsYWNlYWJsZT4gU0VUICggPHJlcGxhY2VhYmxlIGNsYXNzPSJQQVJB TUVURVIiPmF0dHJpYnV0ZV9vcHRpb248L3JlcGxhY2VhYmxlPiA9IDxyZXBs YWNlYWJsZSBjbGFzcz0iUEFSQU1FVEVSIj52YWx1ZTwvcmVwbGFjZWFibGU+ IFssIC4uLiBdICkKICAgICAgQUxURVIgWyBDT0xVTU4gXSA8cmVwbGFjZWFi bGUgY2xhc3M9IlBBUkFNRVRFUiI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxl PiBSRVNFVCAoIDxyZXBsYWNlYWJsZSBjbGFzcz0iUEFSQU1FVEVSIj5hdHRy aWJ1dGVfb3B0aW9uPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gKQogICAgICBB TFRFUiBbIENPTFVNTiBdIDxyZXBsYWNlYWJsZSBjbGFzcz0iUEFSQU1FVEVS Ij5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IE9QVElPTlMgKCBbIEFERCB8 IFNFVCB8IERST1AgXSA8cmVwbGFjZWFibGUgY2xhc3M9IlBBUkFNRVRFUiI+ b3B0aW9uPC9yZXBsYWNlYWJsZT4gWyc8cmVwbGFjZWFibGUgY2xhc3M9IlBB UkFNRVRFUiI+dmFsdWU8L3JlcGxhY2VhYmxlPiddIFssIC4uLiBdKQorICAg ICBBREQgPHJlcGxhY2VhYmxlIGNsYXNzPSJQQVJBTUVURVIiPnRhYmxlX2Nv bnN0cmFpbnQ8L3JlcGxhY2VhYmxlPgorICAgICBEUk9QIENPTlNUUkFJTlQg WyBJRiBFWElTVFMgXSAgPHJlcGxhY2VhYmxlIGNsYXNzPSJQQVJBTUVURVIi PmNvbnN0cmFpbnRfbmFtZTwvcmVwbGFjZWFibGU+IFsgUkVTVFJJQ1QgfCBD QVNDQURFIF0KKyAgICAgSU5IRVJJVCA8cmVwbGFjZWFibGUgY2xhc3M9IlBB UkFNRVRFUiI+cGFyZW50X3RhYmxlPC9yZXBsYWNlYWJsZT4KKyAgICAgTk8g SU5IRVJJVCA8cmVwbGFjZWFibGUgY2xhc3M9IlBBUkFNRVRFUiI+cGFyZW50 X3RhYmxlPC9yZXBsYWNlYWJsZT4KICAgICAgT1dORVIgVE8gPHJlcGxhY2Vh YmxlIGNsYXNzPSJQQVJBTUVURVIiPm5ld19vd25lcjwvcmVwbGFjZWFibGU+ CiAgICAgIE9QVElPTlMgKCBbIEFERCB8IFNFVCB8IERST1AgXSA8cmVwbGFj ZWFibGUgY2xhc3M9IlBBUkFNRVRFUiI+b3B0aW9uPC9yZXBsYWNlYWJsZT4g Wyc8cmVwbGFjZWFibGUgY2xhc3M9IlBBUkFNRVRFUiI+dmFsdWU8L3JlcGxh Y2VhYmxlPiddIFssIC4uLiBdKQogIDwvc3lub3BzaXM+CioqKioqKioqKioq KioqKgoqKiogMTQ5LDE1NCAqKioqIEFMVEVSIEZPUkVJR04gVEFCTEUgWyBJ RiBFWElTVFMgXSA8cmVwbGFjZWFibGUgY2xhc3M9IlBBUkFNRVRFUiI+bmFt ZTwvcmVwbGFjZWFiCi0tLSAxNTMsMjAyIC0tLS0KICAgICA8L3Zhcmxpc3Rl bnRyeT4KICAKICAgICA8dmFybGlzdGVudHJ5PgorICAgICA8dGVybT48bGl0 ZXJhbD5BREQgPHJlcGxhY2VhYmxlIGNsYXNzPSJQQVJBTUVURVIiPnRhYmxl X2NvbnN0cmFpbnQ8L3JlcGxhY2VhYmxlPiBbIE5PVCBWQUxJRCBdPC9saXRl cmFsPjwvdGVybT4KKyAgICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+Cisg ICAgICAgVGhpcyBmb3JtIGFkZHMgYSBuZXcgY29uc3RyYWludCB0byBhIHRh YmxlIHVzaW5nIHRoZSBzYW1lIHN5bnRheCBhcworICAgICAgIDx4cmVmIGxp bmtlbmQ9IlNRTC1DUkVBVEVGT1JFSUdOVEFCTEUiPi4KKyAgICAgICBVbmxp a2UgdGhlIGNhc2Ugd2hlbiBhZGRpbmcgYSBjb25zdHJhaW50IHRvIGEgcmVn dWxhciB0YWJsZSwgbm90aGluZyBoYXBwZW5zCisgICAgICAgdG8gdGhlIHVu ZGVybHlpbmcgc3RvcmFnZTogdGhpcyBhY3Rpb24gc2ltcGx5IGRlY2xhcmVz IHRoYXQKKyAgICAgICBzb21lIG5ldyBjb25zdHJhaW50IGhvbGRzIGZvciBh bGwgcm93cyBpbiB0aGUgZm9yZWlnbiB0YWJsZS4KKyAgICAgIDwvcGFyYT4K KyAgICAgPC9saXN0aXRlbT4KKyAgICA8L3Zhcmxpc3RlbnRyeT4KKyAKKyAg ICA8dmFybGlzdGVudHJ5PgorICAgICA8dGVybT48bGl0ZXJhbD5EUk9QIENP TlNUUkFJTlQgWyBJRiBFWElTVFMgXTwvbGl0ZXJhbD48L3Rlcm0+CisgICAg IDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRoaXMgZm9ybSBk cm9wcyB0aGUgc3BlY2lmaWVkIGNvbnN0cmFpbnQgb24gYSB0YWJsZS4KKyAg ICAgICBJZiA8bGl0ZXJhbD5JRiBFWElTVFM8L2xpdGVyYWw+IGlzIHNwZWNp ZmllZCBhbmQgdGhlIGNvbnN0cmFpbnQKKyAgICAgICBkb2VzIG5vdCBleGlz dCwgbm8gZXJyb3IgaXMgdGhyb3duLiBJbiB0aGlzIGNhc2UgYSBub3RpY2Ug aXMgaXNzdWVkIGluc3RlYWQuCisgICAgICA8L3BhcmE+CisgICAgIDwvbGlz dGl0ZW0+CisgICAgPC92YXJsaXN0ZW50cnk+CisgCisgICAgPHZhcmxpc3Rl bnRyeT4KKyAgICAgPHRlcm0+PGxpdGVyYWw+SU5IRVJJVCA8cmVwbGFjZWFi bGUgY2xhc3M9IlBBUkFNRVRFUiI+cGFyZW50X3RhYmxlPC9yZXBsYWNlYWJs ZT48L2xpdGVyYWw+PC90ZXJtPgorICAgICA8bGlzdGl0ZW0+CisgICAgICA8 cGFyYT4KKyAgICAgICBUaGlzIGZvcm0gYWRkcyB0aGUgdGFyZ2V0IGZvcmVp Z24gdGFibGUgYXMgYSBuZXcgY2hpbGQgb2YgdGhlIHNwZWNpZmllZAorICAg ICAgIHBhcmVudCB0YWJsZS4gIFRoZSBwYXJlbnQgdGFibGUgbXVzdCBiZSBh biBvcmRpbmFyeSB0YWJsZS4KKyAgICAgIDwvcGFyYT4KKyAgICAgPC9saXN0 aXRlbT4KKyAgICA8L3Zhcmxpc3RlbnRyeT4KKyAKKyAgICA8dmFybGlzdGVu dHJ5PgorICAgICA8dGVybT48bGl0ZXJhbD5OTyBJTkhFUklUIDxyZXBsYWNl YWJsZSBjbGFzcz0iUEFSQU1FVEVSIj5wYXJlbnRfdGFibGU8L3JlcGxhY2Vh YmxlPjwvbGl0ZXJhbD48L3Rlcm0+CisgICAgIDxsaXN0aXRlbT4KKyAgICAg IDxwYXJhPgorICAgICAgIFRoaXMgZm9ybSByZW1vdmVzIHRoZSB0YXJnZXQg Zm9yZWlnbiB0YWJsZSBmcm9tIHRoZSBsaXN0IG9mIGNoaWxkcmVuIG9mCisg ICAgICAgdGhlIHNwZWNpZmllZCBwYXJlbnQgdGFibGUuCisgICAgICA8L3Bh cmE+CisgICAgIDwvbGlzdGl0ZW0+CisgICAgPC92YXJsaXN0ZW50cnk+Cisg CisgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgPHRlcm0+PGxpdGVyYWw+T1dO RVI8L2xpdGVyYWw+PC90ZXJtPgogICAgICA8bGlzdGl0ZW0+CiAgICAgICA8 cGFyYT4KKioqKioqKioqKioqKioqCioqKiAyNzAsMjc1ICoqKiogQUxURVIg Rk9SRUlHTiBUQUJMRSBbIElGIEVYSVNUUyBdIDxyZXBsYWNlYWJsZSBjbGFz cz0iUEFSQU1FVEVSIj5uYW1lPC9yZXBsYWNlYWIKLS0tIDMxOCwzNDEgLS0t LQogICAgICAgPC92YXJsaXN0ZW50cnk+CiAgCiAgICAgICA8dmFybGlzdGVu dHJ5PgorICAgICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBjbGFzcz0iUEFSQU1F VEVSIj50YWJsZV9jb25zdHJhaW50PC9yZXBsYWNlYWJsZT48L3Rlcm0+Cisg ICAgICAgPGxpc3RpdGVtPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgIE5l dyB0YWJsZSBjb25zdHJhaW50IGZvciB0aGUgdGFibGUuCisgICAgICAgIDwv cGFyYT4KKyAgICAgICA8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50 cnk+CisgCisgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgIDx0ZXJtPjxy ZXBsYWNlYWJsZSBjbGFzcz0iUEFSQU1FVEVSIj5jb25zdHJhaW50X25hbWU8 L3JlcGxhY2VhYmxlPjwvdGVybT4KKyAgICAgICA8bGlzdGl0ZW0+CisgICAg ICAgIDxwYXJhPgorICAgICAgICAgTmFtZSBvZiBhbiBleGlzdGluZyBjb25z dHJhaW50IHRvIGRyb3AuCisgICAgICAgIDwvcGFyYT4KKyAgICAgICA8L2xp c3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgCisgICAgICA8dmFy bGlzdGVudHJ5PgogICAgICAgIDx0ZXJtPjxsaXRlcmFsPkNBU0NBREU8L2xp dGVyYWw+PC90ZXJtPgogICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgPHBh cmE+CioqKioqKioqKioqKioqKgoqKiogMzA2LDMxMSAqKioqIEFMVEVSIEZP UkVJR04gVEFCTEUgWyBJRiBFWElTVFMgXSA8cmVwbGFjZWFibGUgY2xhc3M9 IlBBUkFNRVRFUiI+bmFtZTwvcmVwbGFjZWFiCi0tLSAzNzIsMzg3IC0tLS0K ICAgICAgICAgPC9wYXJhPgogICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICA8 L3Zhcmxpc3RlbnRyeT4KKyAKKyAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAg ICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJQQVJBTUVURVIiPnBhcmVu dF9uYW1lPC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAgICAgPGxpc3RpdGVt PgorICAgICAgICA8cGFyYT4KKyAgICAgICAgIEEgcGFyZW50IHRhYmxlIHRv IGFzc29jaWF0ZSBvciBkZS1hc3NvY2lhdGUgd2l0aCB0aGlzIGZvcmVpZ24g dGFibGUuCisgICAgICAgICBUaGUgcGFyZW50IHRhYmxlIG11c3QgYmUgYW4g b3JkaW5hcnkgdGFibGUuCisgICAgICAgIDwvcGFyYT4KKyAgICAgICA8L2xp c3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgIDwvdmFyaWFi bGVsaXN0PgogICA8L3JlZnNlY3QxPgogIAoqKioqKioqKioqKioqKioKKioq IDMxOSwzMjggKioqKiBBTFRFUiBGT1JFSUdOIFRBQkxFIFsgSUYgRVhJU1RT IF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJQQVJBTUVURVIiPm5hbWU8L3JlcGxh Y2VhYgogICAgIDxwYXJhPgogICAgICBDb25zaXN0ZW5jeSB3aXRoIHRoZSBm b3JlaWduIHNlcnZlciBpcyBub3QgY2hlY2tlZCB3aGVuIGEgY29sdW1uIGlz IGFkZGVkCiAgICAgIG9yIHJlbW92ZWQgd2l0aCA8bGl0ZXJhbD5BREQgQ09M VU1OPC9saXRlcmFsPiBvcgohICAgICA8bGl0ZXJhbD5EUk9QIENPTFVNTjwv bGl0ZXJhbD4sIGEgPGxpdGVyYWw+Tk9UIE5VTEw8Lz4gY29uc3RyYWludCBp cwohICAgICBhZGRlZCwgb3IgYSBjb2x1bW4gdHlwZSBpcyBjaGFuZ2VkIHdp dGggPGxpdGVyYWw+U0VUIERBVEEgVFlQRTwvPi4gIEl0IGlzCiEgICAgIHRo ZSB1c2VyJ3MgcmVzcG9uc2liaWxpdHkgdG8gZW5zdXJlIHRoYXQgdGhlIHRh YmxlIGRlZmluaXRpb24gbWF0Y2hlcyB0aGUKISAgICAgcmVtb3RlIHNpZGUu CiAgICAgPC9wYXJhPgogIAogICAgIDxwYXJhPgotLS0gMzk1LDQwNCAtLS0t CiAgICAgPHBhcmE+CiAgICAgIENvbnNpc3RlbmN5IHdpdGggdGhlIGZvcmVp Z24gc2VydmVyIGlzIG5vdCBjaGVja2VkIHdoZW4gYSBjb2x1bW4gaXMgYWRk ZWQKICAgICAgb3IgcmVtb3ZlZCB3aXRoIDxsaXRlcmFsPkFERCBDT0xVTU48 L2xpdGVyYWw+IG9yCiEgICAgIDxsaXRlcmFsPkRST1AgQ09MVU1OPC9saXRl cmFsPiwgYSA8bGl0ZXJhbD5OT1QgTlVMTDwvPiBjb25zdHJhaW50IG9yCiEg ICAgIDxsaXRlcmFsPkNIRUNLPC8+IGNvbnN0cmFpbnQgaXMgYWRkZWQsIG9y IGEgY29sdW1uIHR5cGUgaXMgY2hhbmdlZCB3aXRoCiEgICAgIDxsaXRlcmFs PlNFVCBEQVRBIFRZUEU8Lz4uICBJdCBpcyB0aGUgdXNlcidzIHJlc3BvbnNp YmlsaXR5IHRvIGVuc3VyZSB0aGF0CiEgICAgIHRoZSB0YWJsZSBkZWZpbml0 aW9uIG1hdGNoZXMgdGhlIHJlbW90ZSBzaWRlLgogICAgIDwvcGFyYT4KICAK ICAgICA8cGFyYT4KKioqIGEvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl90YWJs ZS5zZ21sCi0tLSBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfdGFibGUuc2dt bAoqKioqKioqKioqKioqKioKKioqIDkzNyw5NDIgKioqKiBBTFRFUiBUQUJM RSBbIElGIEVYSVNUUyBdIDxyZXBsYWNlYWJsZSBjbGFzcz0iUEFSQU1FVEVS Ij5uYW1lPC9yZXBsYWNlYWJsZT4KLS0tIDkzNyw5NDggLS0tLQogICAgIDwv cGFyYT4KICAKICAgICA8cGFyYT4KKyAgICAgU2luY2UgaXQgaXMgbm90IHBl cm1pdHRlZCB0byBhZGQgYW4gPGxpdGVyYWw+b2lkPC9saXRlcmFsPiBzeXN0 ZW0KKyAgICAgY29sdW1uIHRvIGZvcmVpZ24gdGFibGVzLCBhIHJlY3Vyc2l2 ZSA8bGl0ZXJhbD5TRVQgU1RPUkFHRTwvbGl0ZXJhbD4KKyAgICAgb3BlcmF0 aW9uIHdpbGwgYmUgcmVqZWN0ZWQgaWYgYW55IGRlc2NlbmRhbnQgdGFibGVz IGFyZSBmb3JlaWduLgorICAgIDwvcGFyYT4KKyAKKyAgICA8cGFyYT4KICAg ICAgVGhlIDxsaXRlcmFsPlRSSUdHRVI8Lz4sIDxsaXRlcmFsPkNMVVNURVI8 Lz4sIDxsaXRlcmFsPk9XTkVSPC8+LAogICAgICBhbmQgPGxpdGVyYWw+VEFC TEVTUEFDRTwvPiBhY3Rpb25zIG5ldmVyIHJlY3Vyc2UgdG8gZGVzY2VuZGFu dCB0YWJsZXM7CiAgICAgIHRoYXQgaXMsIHRoZXkgYWx3YXlzIGFjdCBhcyB0 aG91Z2ggPGxpdGVyYWw+T05MWTwvPiB3ZXJlIHNwZWNpZmllZC4KKioqKioq KioqKioqKioqCioqKiA5NDUsOTUwICoqKiogQUxURVIgVEFCTEUgWyBJRiBF WElTVFMgXSA8cmVwbGFjZWFibGUgY2xhc3M9IlBBUkFNRVRFUiI+bmFtZTwv cmVwbGFjZWFibGU+Ci0tLSA5NTEsOTY5IC0tLS0KICAgICA8L3BhcmE+CiAg CiAgICAgPHBhcmE+CisgICAgIFdoZW4gYWRkaW5nIGEgPGxpdGVyYWw+Q0hF Q0s8Lz4gY29uc3RyYWludCB3aXRoIHRoZSA8bGl0ZXJhbD5OT1QgVkFMSUQK KyAgICAgPC9saXRlcmFsPiBvcHRpb24gcmVjdXJzaXZlbHksIGFuIGluaGVy aXRlZCBjb25zdHJhaW50IG9uIGEgZGVzY2VuZGFudAorICAgICB0YWJsZSB0 aGF0IGlzIGZvcmVpZ24gd2lsbCBiZSBtYXJrZWQgdmFsaWQgd2l0aG91dCBj aGVja2luZworICAgICBjb25zaXN0ZW5jeSB3aXRoIHRoYXQgZm9yZWlnbiBz ZXJ2ZXIuCisgICAgPC9wYXJhPgorIAorICAgIDxwYXJhPgorICAgICBBIHJl Y3Vyc2l2ZSA8bGl0ZXJhbD5TRVQgU1RPUkFHRTwvbGl0ZXJhbD4gb3BlcmF0 aW9uIHdpbGwgbWFrZSB0aGUKKyAgICAgc3RvcmFnZSBtb2RlIGZvciBhIGRl c2NlbmRhbnQgdGFibGUncyBjb2x1bW4gdW5jaGFuZ2VkIGlmIHRoZSB0YWJs ZSBpcworICAgICBmb3JlaWduLgorICAgIDwvcGFyYT4KKyAKKyAgICA8cGFy YT4KICAgICAgQ2hhbmdpbmcgYW55IHBhcnQgb2YgYSBzeXN0ZW0gY2F0YWxv ZyB0YWJsZSBpcyBub3QgcGVybWl0dGVkLgogICAgIDwvcGFyYT4KICAKKioq IGEvZG9jL3NyYy9zZ21sL3JlZi9hbmFseXplLnNnbWwKLS0tIGIvZG9jL3Ny Yy9zZ21sL3JlZi9hbmFseXplLnNnbWwKKioqKioqKioqKioqKioqCioqKiAy MDAsMjA1ICoqKiogQU5BTFlaRSBbIFZFUkJPU0UgXSBbIDxyZXBsYWNlYWJs ZSBjbGFzcz0iUEFSQU1FVEVSIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4g WwotLS0gMjAwLDIxMiAtLS0tCiAgICA8L3BhcmE+CiAgCiAgICA8cGFyYT4K KyAgICAgVGhlIGluaGVyaXRhbmNlIHN0YXRpc3RpY3MgZm9yIGEgcGFyZW50 IHRhYmxlIHRoYXQgY29udGFpbnMgb25lIG9yIG1vcmUKKyAgICAgY2hpbGRy ZW4gdGhhdCBhcmUgZm9yZWlnbiB0YWJsZXMgYXJlIGNvbGxlY3RlZCBvbmx5 IHdoZW4gZXhwbGljaXRseQorICAgICBzZWxlY3RlZC4gIElmIHRoZSBmb3Jl aWduIHRhYmxlJ3Mgd3JhcHBlciBkb2VzIG5vdCBzdXBwb3J0IAorICAgICA8 Y29tbWFuZD5BTkFMWVpFPC9jb21tYW5kPiwgdGhlIGNvbW1hbmQgcHJpbnRz IGEgd2FybmluZyBhbmQgZG9lcyBub3RoaW5nLgorICAgPC9wYXJhPgorIAor ICAgPHBhcmE+CiAgICAgIElmIHRoZSB0YWJsZSBiZWluZyBhbmFseXplZCBp cyBjb21wbGV0ZWx5IGVtcHR5LCA8Y29tbWFuZD5BTkFMWVpFPC9jb21tYW5k PgogICAgICB3aWxsIG5vdCByZWNvcmQgbmV3IHN0YXRpc3RpY3MgZm9yIHRo YXQgdGFibGUuICBBbnkgZXhpc3Rpbmcgc3RhdGlzdGljcwogICAgICB3aWxs IGJlIHJldGFpbmVkLgoqKiogYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9m b3JlaWduX3RhYmxlLnNnbWwKLS0tIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVh dGVfZm9yZWlnbl90YWJsZS5zZ21sCioqKioqKioqKioqKioqKgoqKiogMTks MjcgKioqKgogICA8cmVmc3lub3BzaXNkaXY+CiAgPHN5bm9wc2lzPgogIENS RUFURSBGT1JFSUdOIFRBQkxFIFsgSUYgTk9UIEVYSVNUUyBdIDxyZXBsYWNl YWJsZSBjbGFzcz0iUEFSQU1FVEVSIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJs ZT4gKCBbCiEgICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0iUEFSQU1FVEVSIj5j b2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IDxyZXBsYWNlYWJsZSBjbGFzcz0i UEFSQU1FVEVSIj5kYXRhX3R5cGU8L3JlcGxhY2VhYmxlPiBbIE9QVElPTlMg KCA8cmVwbGFjZWFibGUgY2xhc3M9IlBBUkFNRVRFUiI+b3B0aW9uPC9yZXBs YWNlYWJsZT4gJzxyZXBsYWNlYWJsZSBjbGFzcz0iUEFSQU1FVEVSIj52YWx1 ZTwvcmVwbGFjZWFibGU+JyBbLCAuLi4gXSApIF0gWyBDT0xMQVRFIDxyZXBs YWNlYWJsZT5jb2xsYXRpb248L3JlcGxhY2VhYmxlPiBdIFsgPHJlcGxhY2Vh YmxlIGNsYXNzPSJQQVJBTUVURVIiPmNvbHVtbl9jb25zdHJhaW50PC9yZXBs YWNlYWJsZT4gWyAuLi4gXSBdCiAgICAgIFssIC4uLiBdCiAgXSApCiAgICBT RVJWRVIgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnNlcnZlcl9u YW1lPC9yZXBsYWNlYWJsZT4KICBbIE9QVElPTlMgKCA8cmVwbGFjZWFibGUg Y2xhc3M9IlBBUkFNRVRFUiI+b3B0aW9uPC9yZXBsYWNlYWJsZT4gJzxyZXBs YWNlYWJsZSBjbGFzcz0iUEFSQU1FVEVSIj52YWx1ZTwvcmVwbGFjZWFibGU+ JyBbLCAuLi4gXSApIF0KICAKLS0tIDE5LDI5IC0tLS0KICAgPHJlZnN5bm9w c2lzZGl2PgogIDxzeW5vcHNpcz4KICBDUkVBVEUgRk9SRUlHTiBUQUJMRSBb IElGIE5PVCBFWElTVFMgXSA8cmVwbGFjZWFibGUgY2xhc3M9IlBBUkFNRVRF UiI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+ICggWwohICAgeyA8cmVwbGFj ZWFibGUgY2xhc3M9IlBBUkFNRVRFUiI+Y29sdW1uX25hbWU8L3JlcGxhY2Vh YmxlPiA8cmVwbGFjZWFibGUgY2xhc3M9IlBBUkFNRVRFUiI+ZGF0YV90eXBl PC9yZXBsYWNlYWJsZT4gWyBPUFRJT05TICggPHJlcGxhY2VhYmxlIGNsYXNz PSJQQVJBTUVURVIiPm9wdGlvbjwvcmVwbGFjZWFibGU+ICc8cmVwbGFjZWFi bGUgY2xhc3M9IlBBUkFNRVRFUiI+dmFsdWU8L3JlcGxhY2VhYmxlPicgWywg Li4uIF0gKSBdIFsgQ09MTEFURSA8cmVwbGFjZWFibGU+Y29sbGF0aW9uPC9y ZXBsYWNlYWJsZT4gXSBbIDxyZXBsYWNlYWJsZSBjbGFzcz0iUEFSQU1FVEVS Ij5jb2x1bW5fY29uc3RyYWludDwvcmVwbGFjZWFibGU+IFsgLi4uIF0gXQoh ICAgICB8IDxyZXBsYWNlYWJsZT50YWJsZV9jb25zdHJhaW50PC9yZXBsYWNl YWJsZT4gfQogICAgICBbLCAuLi4gXQogIF0gKQorIFsgSU5IRVJJVFMgKCA8 cmVwbGFjZWFibGU+cGFyZW50X3RhYmxlPC9yZXBsYWNlYWJsZT4gWywgLi4u IF0gKSBdCiAgICBTRVJWRVIgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPnNlcnZlcl9uYW1lPC9yZXBsYWNlYWJsZT4KICBbIE9QVElPTlMgKCA8 cmVwbGFjZWFibGUgY2xhc3M9IlBBUkFNRVRFUiI+b3B0aW9uPC9yZXBsYWNl YWJsZT4gJzxyZXBsYWNlYWJsZSBjbGFzcz0iUEFSQU1FVEVSIj52YWx1ZTwv cmVwbGFjZWFibGU+JyBbLCAuLi4gXSApIF0KICAKKioqKioqKioqKioqKioq CioqKiAzMCwzNiAqKioqIENSRUFURSBGT1JFSUdOIFRBQkxFIFsgSUYgTk9U IEVYSVNUUyBdIDxyZXBsYWNlYWJsZSBjbGFzcz0iUEFSQU1FVEVSIj50YWJs ZV9uYW1lCi0tLSAzMiw0NCAtLS0tCiAgWyBDT05TVFJBSU5UIDxyZXBsYWNl YWJsZSBjbGFzcz0iUEFSQU1FVEVSIj5jb25zdHJhaW50X25hbWU8L3JlcGxh Y2VhYmxlPiBdCiAgeyBOT1QgTlVMTCB8CiAgICBOVUxMIHwKKyAgIENIRUNL ICggPHJlcGxhY2VhYmxlIGNsYXNzPSJQQVJBTUVURVIiPmV4cHJlc3Npb248 L3JlcGxhY2VhYmxlPiApIFsgTk8gSU5IRVJJVCBdIHwKICAgIERFRkFVTFQg PHJlcGxhY2VhYmxlPmRlZmF1bHRfZXhwcjwvcmVwbGFjZWFibGU+IH0KKyAK KyA8cGhyYXNlPmFuZCA8cmVwbGFjZWFibGUgY2xhc3M9IlBBUkFNRVRFUiI+ dGFibGVfY29uc3RyYWludDwvcmVwbGFjZWFibGU+IGlzOjwvcGhyYXNlPgor IAorIFsgQ09OU1RSQUlOVCA8cmVwbGFjZWFibGUgY2xhc3M9IlBBUkFNRVRF UiI+Y29uc3RyYWludF9uYW1lPC9yZXBsYWNlYWJsZT4gXQorIHsgQ0hFQ0sg KCA8cmVwbGFjZWFibGUgY2xhc3M9IlBBUkFNRVRFUiI+ZXhwcmVzc2lvbjwv cmVwbGFjZWFibGU+ICkgWyBOTyBJTkhFUklUIF0gfQogIDwvc3lub3BzaXM+ CiAgIDwvcmVmc3lub3BzaXNkaXY+CiAgCioqKioqKioqKioqKioqKgoqKiog MTM4LDE0MyAqKioqIENSRUFURSBGT1JFSUdOIFRBQkxFIFsgSUYgTk9UIEVY SVNUUyBdIDxyZXBsYWNlYWJsZSBjbGFzcz0iUEFSQU1FVEVSIj50YWJsZV9u YW1lCi0tLSAxNDYsMTc3IC0tLS0KICAgICA8L3Zhcmxpc3RlbnRyeT4KICAK ICAgICA8dmFybGlzdGVudHJ5PgorICAgICA8dGVybT48bGl0ZXJhbD5DSEVD SyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0iUEFSQU1FVEVSIj5leHByZXNzaW9u PC9yZXBsYWNlYWJsZT4gKSBbIE5PIElOSEVSSVQgXSA8L2xpdGVyYWw+PC90 ZXJtPgorICAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFyYT4KKyAgICAgICBU aGUgPGxpdGVyYWw+Q0hFQ0s8Lz4gY2xhdXNlIHNwZWNpZmllcyBhbiBleHBy ZXNzaW9uIHByb2R1Y2luZyBhCisgICAgICAgQm9vbGVhbiByZXN1bHQgd2hp Y2ggZWFjaCByb3cgbXVzdCBzYXRpc2Z5LgorICAgICAgIEV4cHJlc3Npb25z IGV2YWx1YXRpbmcgdG8gVFJVRSBvciBVTktOT1dOIHN1Y2NlZWQuCisgICAg ICAgQSBjaGVjayBjb25zdHJhaW50IHNwZWNpZmllZCBhcyBhIGNvbHVtbiBj b25zdHJhaW50IHNob3VsZAorICAgICAgIHJlZmVyZW5jZSB0aGF0IGNvbHVt bidzIHZhbHVlIG9ubHksIHdoaWxlIGFuIGV4cHJlc3Npb24KKyAgICAgICBh cHBlYXJpbmcgaW4gYSB0YWJsZSBjb25zdHJhaW50IGNhbiByZWZlcmVuY2Ug bXVsdGlwbGUgY29sdW1ucy4KKyAgICAgIDwvcGFyYT4KKyAKKyAgICAgIDxw YXJhPgorICAgICAgIEN1cnJlbnRseSwgPGxpdGVyYWw+Q0hFQ0s8L2xpdGVy YWw+IGV4cHJlc3Npb25zIGNhbm5vdCBjb250YWluCisgICAgICAgc3VicXVl cmllcyBub3IgcmVmZXIgdG8gdmFyaWFibGVzIG90aGVyIHRoYW4gY29sdW1u cyBvZiB0aGUKKyAgICAgICBjdXJyZW50IHJvdy4gIFRoZSBzeXN0ZW0gY29s dW1uIDxsaXRlcmFsPnRhYmxlb2lkPC9saXRlcmFsPgorICAgICAgIG1heSBi ZSByZWZlcmVuY2VkLCBidXQgbm90IGFueSBvdGhlciBzeXN0ZW0gY29sdW1u LgorICAgICAgPC9wYXJhPgorIAorICAgICAgPHBhcmE+CisgICAgICAgQSBj b25zdHJhaW50IG1hcmtlZCB3aXRoIDxsaXRlcmFsPk5PIElOSEVSSVQ8Lz4g d2lsbCBub3QgcHJvcGFnYXRlIHRvCisgICAgICAgY2hpbGQgdGFibGVzLgor ICAgICAgPC9wYXJhPgorICAgICA8L2xpc3RpdGVtPgorICAgIDwvdmFybGlz dGVudHJ5PgorIAorICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgIDx0ZXJtPjxs aXRlcmFsPkRFRkFVTFQKICAgICAgPHJlcGxhY2VhYmxlPmRlZmF1bHRfZXhw cjwvcmVwbGFjZWFibGU+PC9saXRlcmFsPjwvdGVybT4KICAgICAgPGxpc3Rp dGVtPgoqKioqKioqKioqKioqKioKKioqIDE1OSwxNjQgKioqKiBDUkVBVEUg Rk9SRUlHTiBUQUJMRSBbIElGIE5PVCBFWElTVFMgXSA8cmVwbGFjZWFibGUg Y2xhc3M9IlBBUkFNRVRFUiI+dGFibGVfbmFtZQotLS0gMTkzLDIxMCAtLS0t CiAgICAgPC92YXJsaXN0ZW50cnk+CiAgCiAgICAgPHZhcmxpc3RlbnRyeT4K KyAgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJQQVJBTUVURVIiPnBh cmVudF90YWJsZTwvcmVwbGFjZWFibGU+PC90ZXJtPgorICAgICA8bGlzdGl0 ZW0+CisgICAgICA8cGFyYT4KKyAgICAgICBUaGUgbmFtZSBvZiBhbiBleGlz dGluZyB0YWJsZSBmcm9tIHdoaWNoIHRoZSBuZXcgZm9yZWlnbiB0YWJsZQor ICAgICAgIGF1dG9tYXRpY2FsbHkgaW5oZXJpdHMgYWxsIGNvbHVtbnMuICBU aGUgc3BlY2lmaWVkIHBhcmVudCB0YWJsZQorICAgICAgIG11c3QgYmUgYW4g b3JkaW5hcnkgdGFibGUuICBTZWUgPHhyZWYgbGlua2VuZD0iZGRsLWluaGVy aXQiPiBmb3IgdGhlCisgICAgICAgZGV0YWlscyBvZiB0YWJsZSBpbmhlcml0 YW5jZS4KKyAgICAgIDwvcGFyYT4KKyAgICAgPC9saXN0aXRlbT4KKyAgICA8 L3Zhcmxpc3RlbnRyeT4KKyAKKyAgICA8dmFybGlzdGVudHJ5PgogICAgICA8 dGVybT48cmVwbGFjZWFibGUgY2xhc3M9IlBBUkFNRVRFUiI+c2VydmVyX25h bWU8L3JlcGxhY2VhYmxlPjwvdGVybT4KICAgICAgPGxpc3RpdGVtPgogICAg ICAgPHBhcmE+CioqKiBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FuYWx5emUu YwotLS0gYi9zcmMvYmFja2VuZC9jb21tYW5kcy9hbmFseXplLmMKKioqKioq KioqKioqKioqCioqKiA4Miw4NyAqKioqIGludAkJCWRlZmF1bHRfc3RhdGlz dGljc190YXJnZXQgPSAxMDA7Ci0tLSA4Miw4OCAtLS0tCiAgCiAgLyogQSBm ZXcgdmFyaWFibGVzIHRoYXQgZG9uJ3Qgc2VlbSB3b3J0aCBwYXNzaW5nIGFy b3VuZCBhcyBwYXJhbWV0ZXJzICovCiAgc3RhdGljIE1lbW9yeUNvbnRleHQg YW5sX2NvbnRleHQgPSBOVUxMOworIHN0YXRpYyBWYWN1dW1Nb2RlIHZhY19t b2RlOwogIHN0YXRpYyBCdWZmZXJBY2Nlc3NTdHJhdGVneSB2YWNfc3RyYXRl Z3k7CiAgCiAgCioqKioqKioqKioqKioqKgoqKiogMTE1LDEyMSAqKioqIHN0 YXRpYyBEYXR1bSBpbmRfZmV0Y2hfZnVuYyhWYWNBdHRyU3RhdHNQIHN0YXRz LCBpbnQgcm93bnVtLCBib29sICppc051bGwpOwogICAqCWFuYWx5emVfcmVs KCkgLS0gYW5hbHl6ZSBvbmUgcmVsYXRpb24KICAgKi8KICB2b2lkCiEgYW5h bHl6ZV9yZWwoT2lkIHJlbGlkLCBWYWN1dW1TdG10ICp2YWNzdG10LCBCdWZm ZXJBY2Nlc3NTdHJhdGVneSBic3RyYXRlZ3kpCiAgewogIAlSZWxhdGlvbglv bmVyZWw7CiAgCWludAkJCWVsZXZlbDsKLS0tIDExNiwxMjQgLS0tLQogICAq CWFuYWx5emVfcmVsKCkgLS0gYW5hbHl6ZSBvbmUgcmVsYXRpb24KICAgKi8K ICB2b2lkCiEgYW5hbHl6ZV9yZWwoT2lkIHJlbGlkLCBWYWN1dW1TdG10ICp2 YWNzdG10LAohIAkJCVZhY3V1bU1vZGUgdmFjbW9kZSwKISAJCQlCdWZmZXJB Y2Nlc3NTdHJhdGVneSBic3RyYXRlZ3kpCiAgewogIAlSZWxhdGlvbglvbmVy ZWw7CiAgCWludAkJCWVsZXZlbDsKKioqKioqKioqKioqKioqCioqKiAxMjks MTM0ICoqKiogYW5hbHl6ZV9yZWwoT2lkIHJlbGlkLCBWYWN1dW1TdG10ICp2 YWNzdG10LCBCdWZmZXJBY2Nlc3NTdHJhdGVneSBic3RyYXRlZ3kpCi0tLSAx MzIsMTM4IC0tLS0KICAJCWVsZXZlbCA9IERFQlVHMjsKICAKICAJLyogU2V0 IHVwIHN0YXRpYyB2YXJpYWJsZXMgKi8KKyAJdmFjX21vZGUgPSB2YWNtb2Rl OwogIAl2YWNfc3RyYXRlZ3kgPSBic3RyYXRlZ3k7CiAgCiAgCS8qCioqKioq KioqKioqKioqKgoqKiogMTQ1MiwxNDU3ICoqKiogYWNxdWlyZV9pbmhlcml0 ZWRfc2FtcGxlX3Jvd3MoUmVsYXRpb24gb25lcmVsLCBpbnQgZWxldmVsLAot LS0gMTQ1NiwxNDYyIC0tLS0KICB7CiAgCUxpc3QJICAgKnRhYmxlT0lEczsK ICAJUmVsYXRpb24gICAqcmVsczsKKyAJQWNxdWlyZVNhbXBsZVJvd3NGdW5j ICphY3F1aXJlZnVuYzsKICAJZG91YmxlCSAgICpyZWxibG9ja3M7CiAgCWRv dWJsZQkJdG90YWxibG9ja3M7CiAgCWludAkJCW51bXJvd3MsCioqKioqKioq KioqKioqKgoqKiogMTQ4NiwxNDkxICoqKiogYWNxdWlyZV9pbmhlcml0ZWRf c2FtcGxlX3Jvd3MoUmVsYXRpb24gb25lcmVsLCBpbnQgZWxldmVsLAotLS0g MTQ5MSwxNDk4IC0tLS0KICAJICogQmxvY2tOdW1iZXIsIHNvIHdlIHVzZSBk b3VibGUgYXJpdGhtZXRpYy4KICAJICovCiAgCXJlbHMgPSAoUmVsYXRpb24g KikgcGFsbG9jKGxpc3RfbGVuZ3RoKHRhYmxlT0lEcykgKiBzaXplb2YoUmVs YXRpb24pKTsKKyAJYWNxdWlyZWZ1bmMgPSAoQWNxdWlyZVNhbXBsZVJvd3NG dW5jICopIHBhbGxvYyhsaXN0X2xlbmd0aCh0YWJsZU9JRHMpCisgCQkJCQkJ CQkJCQkqIHNpemVvZihBY3F1aXJlU2FtcGxlUm93c0Z1bmMpKTsKICAJcmVs YmxvY2tzID0gKGRvdWJsZSAqKSBwYWxsb2MobGlzdF9sZW5ndGgodGFibGVP SURzKSAqIHNpemVvZihkb3VibGUpKTsKICAJdG90YWxibG9ja3MgPSAwOwog IAlucmVscyA9IDA7CioqKioqKioqKioqKioqKgoqKiogMTUwNywxNTEzICoq KiogYWNxdWlyZV9pbmhlcml0ZWRfc2FtcGxlX3Jvd3MoUmVsYXRpb24gb25l cmVsLCBpbnQgZWxldmVsLAogIAkJfQogIAogIAkJcmVsc1tucmVsc10gPSBj aGlsZHJlbDsKISAJCXJlbGJsb2Nrc1tucmVsc10gPSAoZG91YmxlKSBSZWxh dGlvbkdldE51bWJlck9mQmxvY2tzKGNoaWxkcmVsKTsKICAJCXRvdGFsYmxv Y2tzICs9IHJlbGJsb2Nrc1tucmVsc107CiAgCQlucmVscysrOwogIAl9Ci0t LSAxNTE0LDE1NTMgLS0tLQogIAkJfQogIAogIAkJcmVsc1tucmVsc10gPSBj aGlsZHJlbDsKISAKISAJCWlmIChjaGlsZHJlbC0+cmRfcmVsLT5yZWxraW5k ID09IFJFTEtJTkRfRk9SRUlHTl9UQUJMRSkKISAJCXsKISAJCQlGZHdSb3V0 aW5lICpmZHdyb3V0aW5lOwohIAkJCUJsb2NrTnVtYmVyIHJlbHBhZ2VzID0g MDsKISAJCQlib29sCQlvayA9IGZhbHNlOwohIAohIAkJCS8qIElnbm9yZSB1 bmxlc3MgYW5hbHl6aW5nIGEgc3BlY2lmaWMgaW5oZXJpdGFuY2UgdHJlZSAq LwohIAkJCWlmICh2YWNfbW9kZSAhPSBWQUNfTU9ERV9TSU5HTEUpCiEgCQkJ CXJldHVybiAwOwohIAohIAkJCS8qIENoZWNrIHdoZXRoZXIgdGhlIEZEVyBz dXBwb3J0cyBhbmFseXNpcyAqLwohIAkJCWZkd3JvdXRpbmUgPSBHZXRGZHdS b3V0aW5lRm9yUmVsYXRpb24oY2hpbGRyZWwsIGZhbHNlKTsKISAJCQlpZiAo ZmR3cm91dGluZS0+QW5hbHl6ZUZvcmVpZ25UYWJsZSAhPSBOVUxMKQohIAkJ CQlvayA9IGZkd3JvdXRpbmUtPkFuYWx5emVGb3JlaWduVGFibGUoY2hpbGRy ZWwsCiEgCQkJCQkJCQkJCQkJCSAmYWNxdWlyZWZ1bmNbbnJlbHNdLAohIAkJ CQkJCQkJCQkJCQkgJnJlbHBhZ2VzKTsKISAJCQlpZiAoIW9rKQohIAkJCXsK ISAJCQkJLyogR2l2ZSB1cCBpZiB0aGUgRkRXIGRvZXNuJ3Qgc3VwcG9ydCBh bmFseXNpcyAqLwohIAkJCQllcmVwb3J0KFdBUk5JTkcsCiEgCQkJCQkJKGVy cm1zZygic2tpcHBpbmcgYW5hbHl6ZSBvZiBpbmhlcml0YW5jZSB0cmVlIFwi JXNcIiAtLS0gY2Fubm90IGFuYWx5emUgZm9yZWlnbiB0YWJsZSBcIiVzXCIi LAohIAkJCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUob25lcmVsKSwK ISAJCQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKGNoaWxkcmVsKSkp KTsKISAJCQkJcmV0dXJuIDA7CiEgCQkJfQohIAkJCXJlbGJsb2Nrc1tucmVs c10gPSAoZG91YmxlKSByZWxwYWdlczsKISAJCX0KISAJCWVsc2UKISAJCXsK ISAJCQlhY3F1aXJlZnVuY1tucmVsc10gPSBhY3F1aXJlX3NhbXBsZV9yb3dz OwohIAkJCXJlbGJsb2Nrc1tucmVsc10gPSAoZG91YmxlKSBSZWxhdGlvbkdl dE51bWJlck9mQmxvY2tzKGNoaWxkcmVsKTsKISAJCX0KISAKICAJCXRvdGFs YmxvY2tzICs9IHJlbGJsb2Nrc1tucmVsc107CiAgCQlucmVscysrOwogIAl9 CioqKioqKioqKioqKioqKgoqKiogMTUyNSwxNTMwICoqKiogYWNxdWlyZV9p bmhlcml0ZWRfc2FtcGxlX3Jvd3MoUmVsYXRpb24gb25lcmVsLCBpbnQgZWxl dmVsLAotLS0gMTU2NSwxNTcxIC0tLS0KICAJewogIAkJUmVsYXRpb24JY2hp bGRyZWwgPSByZWxzW2ldOwogIAkJZG91YmxlCQljaGlsZGJsb2NrcyA9IHJl bGJsb2Nrc1tpXTsKKyAJCUFjcXVpcmVTYW1wbGVSb3dzRnVuYyBjaGlsZGFj cXVpcmVmdW5jID0gYWNxdWlyZWZ1bmNbaV07CiAgCiAgCQlpZiAoY2hpbGRi bG9ja3MgPiAwKQogIAkJewoqKioqKioqKioqKioqKioKKioqIDE1NDAsMTU1 MSAqKioqIGFjcXVpcmVfaW5oZXJpdGVkX3NhbXBsZV9yb3dzKFJlbGF0aW9u IG9uZXJlbCwgaW50IGVsZXZlbCwKICAJCQkJCQkJdGRyb3dzOwogIAogIAkJ CQkvKiBGZXRjaCBhIHJhbmRvbSBzYW1wbGUgb2YgdGhlIGNoaWxkJ3Mgcm93 cyAqLwohIAkJCQljaGlsZHJvd3MgPSBhY3F1aXJlX3NhbXBsZV9yb3dzKGNo aWxkcmVsLAohIAkJCQkJCQkJCQkJCWVsZXZlbCwKISAJCQkJCQkJCQkJCQly b3dzICsgbnVtcm93cywKISAJCQkJCQkJCQkJCQljaGlsZHRhcmdyb3dzLAoh IAkJCQkJCQkJCQkJCSZ0cm93cywKISAJCQkJCQkJCQkJCQkmdGRyb3dzKTsK ICAKICAJCQkJLyogV2UgbWF5IG5lZWQgdG8gY29udmVydCBmcm9tIGNoaWxk J3Mgcm93dHlwZSB0byBwYXJlbnQncyAqLwogIAkJCQlpZiAoY2hpbGRyb3dz ID4gMCAmJgotLS0gMTU4MSwxNTkyIC0tLS0KICAJCQkJCQkJdGRyb3dzOwog IAogIAkJCQkvKiBGZXRjaCBhIHJhbmRvbSBzYW1wbGUgb2YgdGhlIGNoaWxk J3Mgcm93cyAqLwohIAkJCQljaGlsZHJvd3MgPSBjaGlsZGFjcXVpcmVmdW5j KGNoaWxkcmVsLAohIAkJCQkJCQkJCQkJIGVsZXZlbCwKISAJCQkJCQkJCQkJ CSByb3dzICsgbnVtcm93cywKISAJCQkJCQkJCQkJCSBjaGlsZHRhcmdyb3dz LAohIAkJCQkJCQkJCQkJICZ0cm93cywKISAJCQkJCQkJCQkJCSAmdGRyb3dz KTsKICAKICAJCQkJLyogV2UgbWF5IG5lZWQgdG8gY29udmVydCBmcm9tIGNo aWxkJ3Mgcm93dHlwZSB0byBwYXJlbnQncyAqLwogIAkJCQlpZiAoY2hpbGRy b3dzID4gMCAmJgoqKiogYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNt ZHMuYwotLS0gYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwoq KioqKioqKioqKioqKioKKioqIDMxMSwzMTcgKioqKiBzdGF0aWMgQWx0ZXJl ZFRhYmxlSW5mbyAqQVRHZXRRdWV1ZUVudHJ5KExpc3QgKip3cXVldWUsIFJl bGF0aW9uIHJlbCk7CiAgc3RhdGljIHZvaWQgQVRTaW1wbGVQZXJtaXNzaW9u cyhSZWxhdGlvbiByZWwsIGludCBhbGxvd2VkX3RhcmdldHMpOwogIHN0YXRp YyB2b2lkIEFUV3JvbmdSZWxraW5kRXJyb3IoUmVsYXRpb24gcmVsLCBpbnQg YWxsb3dlZF90YXJnZXRzKTsKICBzdGF0aWMgdm9pZCBBVFNpbXBsZVJlY3Vy c2lvbihMaXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiByZWwsCiEgCQkJCSAgQWx0 ZXJUYWJsZUNtZCAqY21kLCBib29sIHJlY3Vyc2UsIExPQ0tNT0RFIGxvY2tt b2RlKTsKICBzdGF0aWMgdm9pZCBBVFR5cGVkVGFibGVSZWN1cnNpb24oTGlz dCAqKndxdWV1ZSwgUmVsYXRpb24gcmVsLCBBbHRlclRhYmxlQ21kICpjbWQs CiAgCQkJCQkgIExPQ0tNT0RFIGxvY2ttb2RlKTsKICBzdGF0aWMgTGlzdCAq ZmluZF90eXBlZF90YWJsZV9kZXBlbmRlbmNpZXMoT2lkIHR5cGVPaWQsIGNv bnN0IGNoYXIgKnR5cGVOYW1lLAotLS0gMzExLDMxOCAtLS0tCiAgc3RhdGlj IHZvaWQgQVRTaW1wbGVQZXJtaXNzaW9ucyhSZWxhdGlvbiByZWwsIGludCBh bGxvd2VkX3RhcmdldHMpOwogIHN0YXRpYyB2b2lkIEFUV3JvbmdSZWxraW5k RXJyb3IoUmVsYXRpb24gcmVsLCBpbnQgYWxsb3dlZF90YXJnZXRzKTsKICBz dGF0aWMgdm9pZCBBVFNpbXBsZVJlY3Vyc2lvbihMaXN0ICoqd3F1ZXVlLCBS ZWxhdGlvbiByZWwsCiEgCQkJCSAgQWx0ZXJUYWJsZUNtZCAqY21kLCBib29s IHJlY3Vyc2UsCiEgCQkJCSAgYm9vbCBpbmNsdWRlX2ZvcmVpZ24sIExPQ0tN T0RFIGxvY2ttb2RlKTsKICBzdGF0aWMgdm9pZCBBVFR5cGVkVGFibGVSZWN1 cnNpb24oTGlzdCAqKndxdWV1ZSwgUmVsYXRpb24gcmVsLCBBbHRlclRhYmxl Q21kICpjbWQsCiAgCQkJCQkgIExPQ0tNT0RFIGxvY2ttb2RlKTsKICBzdGF0 aWMgTGlzdCAqZmluZF90eXBlZF90YWJsZV9kZXBlbmRlbmNpZXMoT2lkIHR5 cGVPaWQsIGNvbnN0IGNoYXIgKnR5cGVOYW1lLAoqKioqKioqKioqKioqKioK KioqIDQ2Nyw0NzYgKioqKiBEZWZpbmVSZWxhdGlvbihDcmVhdGVTdG10ICpz dG10LCBjaGFyIHJlbGtpbmQsIE9pZCBvd25lcklkKQogIAkJZXJlcG9ydChF UlJPUiwKICAJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1RBQkxFX0RF RklOSVRJT04pLAogIAkJCQkgZXJybXNnKCJPTiBDT01NSVQgY2FuIG9ubHkg YmUgdXNlZCBvbiB0ZW1wb3JhcnkgdGFibGVzIikpKTsKLSAJaWYgKHN0bXQt PmNvbnN0cmFpbnRzICE9IE5JTCAmJiByZWxraW5kID09IFJFTEtJTkRfRk9S RUlHTl9UQUJMRSkKLSAJCWVyZXBvcnQoRVJST1IsCi0gCQkJCShlcnJjb2Rl KEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUpLAotIAkJCQkgZXJybXNnKCJj b25zdHJhaW50cyBhcmUgbm90IHN1cHBvcnRlZCBvbiBmb3JlaWduIHRhYmxl cyIpKSk7CiAgCiAgCS8qCiAgCSAqIExvb2sgdXAgdGhlIG5hbWVzcGFjZSBp biB3aGljaCB3ZSBhcmUgc3VwcG9zZWQgdG8gY3JlYXRlIHRoZSByZWxhdGlv biwKLS0tIDQ2OCw0NzMgLS0tLQoqKioqKioqKioqKioqKioKKioqIDMwMTks MzA0MiAqKioqIEFUUHJlcENtZChMaXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiBy ZWwsIEFsdGVyVGFibGVDbWQgKmNtZCwKICAJCQkgKiBydWxlcy4KICAJCQkg Ki8KICAJCQlBVFNpbXBsZVBlcm1pc3Npb25zKHJlbCwgQVRUX1RBQkxFIHwg QVRUX1ZJRVcgfCBBVFRfRk9SRUlHTl9UQUJMRSk7CiEgCQkJQVRTaW1wbGVS ZWN1cnNpb24od3F1ZXVlLCByZWwsIGNtZCwgcmVjdXJzZSwgbG9ja21vZGUp OwogIAkJCS8qIE5vIGNvbW1hbmQtc3BlY2lmaWMgcHJlcCBuZWVkZWQgKi8K ICAJCQlwYXNzID0gY21kLT5kZWYgPyBBVF9QQVNTX0FERF9DT05TVFIgOiBB VF9QQVNTX0RST1A7CiAgCQkJYnJlYWs7CiAgCQljYXNlIEFUX0Ryb3BOb3RO dWxsOgkvKiBBTFRFUiBDT0xVTU4gRFJPUCBOT1QgTlVMTCAqLwogIAkJCUFU U2ltcGxlUGVybWlzc2lvbnMocmVsLCBBVFRfVEFCTEUgfCBBVFRfRk9SRUlH Tl9UQUJMRSk7CiEgCQkJQVRTaW1wbGVSZWN1cnNpb24od3F1ZXVlLCByZWws IGNtZCwgcmVjdXJzZSwgbG9ja21vZGUpOwogIAkJCS8qIE5vIGNvbW1hbmQt c3BlY2lmaWMgcHJlcCBuZWVkZWQgKi8KICAJCQlwYXNzID0gQVRfUEFTU19E Uk9QOwogIAkJCWJyZWFrOwogIAkJY2FzZSBBVF9TZXROb3ROdWxsOgkJLyog QUxURVIgQ09MVU1OIFNFVCBOT1QgTlVMTCAqLwogIAkJCUFUU2ltcGxlUGVy bWlzc2lvbnMocmVsLCBBVFRfVEFCTEUgfCBBVFRfRk9SRUlHTl9UQUJMRSk7 CiEgCQkJQVRTaW1wbGVSZWN1cnNpb24od3F1ZXVlLCByZWwsIGNtZCwgcmVj dXJzZSwgbG9ja21vZGUpOwogIAkJCS8qIE5vIGNvbW1hbmQtc3BlY2lmaWMg cHJlcCBuZWVkZWQgKi8KICAJCQlwYXNzID0gQVRfUEFTU19BRERfQ09OU1RS OwogIAkJCWJyZWFrOwogIAkJY2FzZSBBVF9TZXRTdGF0aXN0aWNzOgkvKiBB TFRFUiBDT0xVTU4gU0VUIFNUQVRJU1RJQ1MgKi8KISAJCQlBVFNpbXBsZVJl Y3Vyc2lvbih3cXVldWUsIHJlbCwgY21kLCByZWN1cnNlLCBsb2NrbW9kZSk7 CiAgCQkJLyogUGVyZm9ybXMgb3duIHBlcm1pc3Npb24gY2hlY2tzICovCiAg CQkJQVRQcmVwU2V0U3RhdGlzdGljcyhyZWwsIGNtZC0+bmFtZSwgY21kLT5k ZWYsIGxvY2ttb2RlKTsKICAJCQlwYXNzID0gQVRfUEFTU19NSVNDOwotLS0g MzAxNiwzMDQzIC0tLS0KICAJCQkgKiBydWxlcy4KICAJCQkgKi8KICAJCQlB VFNpbXBsZVBlcm1pc3Npb25zKHJlbCwgQVRUX1RBQkxFIHwgQVRUX1ZJRVcg fCBBVFRfRk9SRUlHTl9UQUJMRSk7CiEgCQkJLyogUmVjdXJzZSB0byBjaGls ZCB0YWJsZXMgdGhhdCBhcmUgZm9yZWlnbiwgdG9vICovCiEgCQkJQVRTaW1w bGVSZWN1cnNpb24od3F1ZXVlLCByZWwsIGNtZCwgcmVjdXJzZSwgdHJ1ZSwg bG9ja21vZGUpOwogIAkJCS8qIE5vIGNvbW1hbmQtc3BlY2lmaWMgcHJlcCBu ZWVkZWQgKi8KICAJCQlwYXNzID0gY21kLT5kZWYgPyBBVF9QQVNTX0FERF9D T05TVFIgOiBBVF9QQVNTX0RST1A7CiAgCQkJYnJlYWs7CiAgCQljYXNlIEFU X0Ryb3BOb3ROdWxsOgkvKiBBTFRFUiBDT0xVTU4gRFJPUCBOT1QgTlVMTCAq LwogIAkJCUFUU2ltcGxlUGVybWlzc2lvbnMocmVsLCBBVFRfVEFCTEUgfCBB VFRfRk9SRUlHTl9UQUJMRSk7CiEgCQkJLyogUmVjdXJzZSB0byBjaGlsZCB0 YWJsZXMgdGhhdCBhcmUgZm9yZWlnbiwgdG9vICovCiEgCQkJQVRTaW1wbGVS ZWN1cnNpb24od3F1ZXVlLCByZWwsIGNtZCwgcmVjdXJzZSwgdHJ1ZSwgbG9j a21vZGUpOwogIAkJCS8qIE5vIGNvbW1hbmQtc3BlY2lmaWMgcHJlcCBuZWVk ZWQgKi8KICAJCQlwYXNzID0gQVRfUEFTU19EUk9QOwogIAkJCWJyZWFrOwog IAkJY2FzZSBBVF9TZXROb3ROdWxsOgkJLyogQUxURVIgQ09MVU1OIFNFVCBO T1QgTlVMTCAqLwogIAkJCUFUU2ltcGxlUGVybWlzc2lvbnMocmVsLCBBVFRf VEFCTEUgfCBBVFRfRk9SRUlHTl9UQUJMRSk7CiEgCQkJLyogUmVjdXJzZSB0 byBjaGlsZCB0YWJsZXMgdGhhdCBhcmUgZm9yZWlnbiwgdG9vICovCiEgCQkJ QVRTaW1wbGVSZWN1cnNpb24od3F1ZXVlLCByZWwsIGNtZCwgcmVjdXJzZSwg dHJ1ZSwgbG9ja21vZGUpOwogIAkJCS8qIE5vIGNvbW1hbmQtc3BlY2lmaWMg cHJlcCBuZWVkZWQgKi8KICAJCQlwYXNzID0gQVRfUEFTU19BRERfQ09OU1RS OwogIAkJCWJyZWFrOwogIAkJY2FzZSBBVF9TZXRTdGF0aXN0aWNzOgkvKiBB TFRFUiBDT0xVTU4gU0VUIFNUQVRJU1RJQ1MgKi8KISAJCQkvKiBSZWN1cnNl IHRvIGNoaWxkIHRhYmxlcyB0aGF0IGFyZSBmb3JlaWduLCB0b28gKi8KISAJ CQlBVFNpbXBsZVJlY3Vyc2lvbih3cXVldWUsIHJlbCwgY21kLCByZWN1cnNl LCB0cnVlLCBsb2NrbW9kZSk7CiAgCQkJLyogUGVyZm9ybXMgb3duIHBlcm1p c3Npb24gY2hlY2tzICovCiAgCQkJQVRQcmVwU2V0U3RhdGlzdGljcyhyZWws IGNtZC0+bmFtZSwgY21kLT5kZWYsIGxvY2ttb2RlKTsKICAJCQlwYXNzID0g QVRfUEFTU19NSVNDOwoqKioqKioqKioqKioqKioKKioqIDMwNDksMzA1NSAq KioqIEFUUHJlcENtZChMaXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiByZWwsIEFs dGVyVGFibGVDbWQgKmNtZCwKICAJCQlicmVhazsKICAJCWNhc2UgQVRfU2V0 U3RvcmFnZToJCS8qIEFMVEVSIENPTFVNTiBTRVQgU1RPUkFHRSAqLwogIAkJ CUFUU2ltcGxlUGVybWlzc2lvbnMocmVsLCBBVFRfVEFCTEUgfCBBVFRfTUFU VklFVyk7CiEgCQkJQVRTaW1wbGVSZWN1cnNpb24od3F1ZXVlLCByZWwsIGNt ZCwgcmVjdXJzZSwgbG9ja21vZGUpOwogIAkJCS8qIE5vIGNvbW1hbmQtc3Bl Y2lmaWMgcHJlcCBuZWVkZWQgKi8KICAJCQlwYXNzID0gQVRfUEFTU19NSVND OwogIAkJCWJyZWFrOwotLS0gMzA1MCwzMDU3IC0tLS0KICAJCQlicmVhazsK ICAJCWNhc2UgQVRfU2V0U3RvcmFnZToJCS8qIEFMVEVSIENPTFVNTiBTRVQg U1RPUkFHRSAqLwogIAkJCUFUU2ltcGxlUGVybWlzc2lvbnMocmVsLCBBVFRf VEFCTEUgfCBBVFRfTUFUVklFVyk7CiEgCQkJLyogRG9uJ3QgcmVjdXJzZSB0 byBjaGlsZCB0YWJsZXMgdGhhdCBhcmUgZm9yZWlnbiAqLwohIAkJCUFUU2lt cGxlUmVjdXJzaW9uKHdxdWV1ZSwgcmVsLCBjbWQsIHJlY3Vyc2UsIGZhbHNl LCBsb2NrbW9kZSk7CiAgCQkJLyogTm8gY29tbWFuZC1zcGVjaWZpYyBwcmVw IG5lZWRlZCAqLwogIAkJCXBhc3MgPSBBVF9QQVNTX01JU0M7CiAgCQkJYnJl YWs7CioqKioqKioqKioqKioqKgoqKiogMzA2NywzMDczICoqKiogQVRQcmVw Q21kKExpc3QgKip3cXVldWUsIFJlbGF0aW9uIHJlbCwgQWx0ZXJUYWJsZUNt ZCAqY21kLAogIAkJCXBhc3MgPSBBVF9QQVNTX0FERF9JTkRFWDsKICAJCQli cmVhazsKICAJCWNhc2UgQVRfQWRkQ29uc3RyYWludDoJLyogQUREIENPTlNU UkFJTlQgKi8KISAJCQlBVFNpbXBsZVBlcm1pc3Npb25zKHJlbCwgQVRUX1RB QkxFKTsKICAJCQkvKiBSZWN1cnNpb24gb2NjdXJzIGR1cmluZyBleGVjdXRp b24gcGhhc2UgKi8KICAJCQkvKiBObyBjb21tYW5kLXNwZWNpZmljIHByZXAg bmVlZGVkIGV4Y2VwdCBzYXZpbmcgcmVjdXJzZSBmbGFnICovCiAgCQkJaWYg KHJlY3Vyc2UpCi0tLSAzMDY5LDMwNzUgLS0tLQogIAkJCXBhc3MgPSBBVF9Q QVNTX0FERF9JTkRFWDsKICAJCQlicmVhazsKICAJCWNhc2UgQVRfQWRkQ29u c3RyYWludDoJLyogQUREIENPTlNUUkFJTlQgKi8KISAJCQlBVFNpbXBsZVBl cm1pc3Npb25zKHJlbCwgQVRUX1RBQkxFIHwgQVRUX0ZPUkVJR05fVEFCTEUp OwogIAkJCS8qIFJlY3Vyc2lvbiBvY2N1cnMgZHVyaW5nIGV4ZWN1dGlvbiBw aGFzZSAqLwogIAkJCS8qIE5vIGNvbW1hbmQtc3BlY2lmaWMgcHJlcCBuZWVk ZWQgZXhjZXB0IHNhdmluZyByZWN1cnNlIGZsYWcgKi8KICAJCQlpZiAocmVj dXJzZSkKKioqKioqKioqKioqKioqCioqKiAzMDgxLDMwODcgKioqKiBBVFBy ZXBDbWQoTGlzdCAqKndxdWV1ZSwgUmVsYXRpb24gcmVsLCBBbHRlclRhYmxl Q21kICpjbWQsCiAgCQkJcGFzcyA9IEFUX1BBU1NfQUREX0NPTlNUUjsKICAJ CQlicmVhazsKICAJCWNhc2UgQVRfRHJvcENvbnN0cmFpbnQ6CS8qIERST1Ag Q09OU1RSQUlOVCAqLwohIAkJCUFUU2ltcGxlUGVybWlzc2lvbnMocmVsLCBB VFRfVEFCTEUpOwogIAkJCS8qIFJlY3Vyc2lvbiBvY2N1cnMgZHVyaW5nIGV4 ZWN1dGlvbiBwaGFzZSAqLwogIAkJCS8qIE5vIGNvbW1hbmQtc3BlY2lmaWMg cHJlcCBuZWVkZWQgZXhjZXB0IHNhdmluZyByZWN1cnNlIGZsYWcgKi8KICAJ CQlpZiAocmVjdXJzZSkKLS0tIDMwODMsMzA4OSAtLS0tCiAgCQkJcGFzcyA9 IEFUX1BBU1NfQUREX0NPTlNUUjsKICAJCQlicmVhazsKICAJCWNhc2UgQVRf RHJvcENvbnN0cmFpbnQ6CS8qIERST1AgQ09OU1RSQUlOVCAqLwohIAkJCUFU U2ltcGxlUGVybWlzc2lvbnMocmVsLCBBVFRfVEFCTEUgfCBBVFRfRk9SRUlH Tl9UQUJMRSk7CiAgCQkJLyogUmVjdXJzaW9uIG9jY3VycyBkdXJpbmcgZXhl Y3V0aW9uIHBoYXNlICovCiAgCQkJLyogTm8gY29tbWFuZC1zcGVjaWZpYyBw cmVwIG5lZWRlZCBleGNlcHQgc2F2aW5nIHJlY3Vyc2UgZmxhZyAqLwogIAkJ CWlmIChyZWN1cnNlKQoqKioqKioqKioqKioqKioKKioqIDMxNDksMzE2MSAq KioqIEFUUHJlcENtZChMaXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiByZWwsIEFs dGVyVGFibGVDbWQgKmNtZCwKICAJCQlwYXNzID0gQVRfUEFTU19NSVNDOwog IAkJCWJyZWFrOwogIAkJY2FzZSBBVF9BZGRJbmhlcml0OgkJLyogSU5IRVJJ VCAqLwohIAkJCUFUU2ltcGxlUGVybWlzc2lvbnMocmVsLCBBVFRfVEFCTEUp OwogIAkJCS8qIFRoaXMgY29tbWFuZCBuZXZlciByZWN1cnNlcyAqLwogIAkJ CUFUUHJlcEFkZEluaGVyaXQocmVsKTsKICAJCQlwYXNzID0gQVRfUEFTU19N SVNDOwogIAkJCWJyZWFrOwogIAkJY2FzZSBBVF9BbHRlckNvbnN0cmFpbnQ6 CQkvKiBBTFRFUiBDT05TVFJBSU5UICovCiEgCQkJQVRTaW1wbGVQZXJtaXNz aW9ucyhyZWwsIEFUVF9UQUJMRSk7CiAgCQkJcGFzcyA9IEFUX1BBU1NfTUlT QzsKICAJCQlicmVhazsKICAJCWNhc2UgQVRfVmFsaWRhdGVDb25zdHJhaW50 OgkJLyogVkFMSURBVEUgQ09OU1RSQUlOVCAqLwotLS0gMzE1MSwzMTY5IC0t LS0KICAJCQlwYXNzID0gQVRfUEFTU19NSVNDOwogIAkJCWJyZWFrOwogIAkJ Y2FzZSBBVF9BZGRJbmhlcml0OgkJLyogSU5IRVJJVCAqLwohIAkJCUFUU2lt cGxlUGVybWlzc2lvbnMocmVsLCBBVFRfVEFCTEUgfCBBVFRfRk9SRUlHTl9U QUJMRSk7CiAgCQkJLyogVGhpcyBjb21tYW5kIG5ldmVyIHJlY3Vyc2VzICov CiAgCQkJQVRQcmVwQWRkSW5oZXJpdChyZWwpOwogIAkJCXBhc3MgPSBBVF9Q QVNTX01JU0M7CiAgCQkJYnJlYWs7CisgCQljYXNlIEFUX0Ryb3BJbmhlcml0 OgkvKiBOTyBJTkhFUklUICovCisgCQkJQVRTaW1wbGVQZXJtaXNzaW9ucyhy ZWwsIEFUVF9UQUJMRSB8IEFUVF9GT1JFSUdOX1RBQkxFKTsKKyAJCQkvKiBU aGlzIGNvbW1hbmQgbmV2ZXIgcmVjdXJzZXMgKi8KKyAJCQkvKiBObyBjb21t YW5kLXNwZWNpZmljIHByZXAgbmVlZGVkICovCisgCQkJcGFzcyA9IEFUX1BB U1NfTUlTQzsKKyAJCQlicmVhazsKICAJCWNhc2UgQVRfQWx0ZXJDb25zdHJh aW50OgkJLyogQUxURVIgQ09OU1RSQUlOVCAqLwohIAkJCUFUU2ltcGxlUGVy bWlzc2lvbnMocmVsLCBBVFRfVEFCTEUgfCBBVFRfRk9SRUlHTl9UQUJMRSk7 CiAgCQkJcGFzcyA9IEFUX1BBU1NfTUlTQzsKICAJCQlicmVhazsKICAJCWNh c2UgQVRfVmFsaWRhdGVDb25zdHJhaW50OgkJLyogVkFMSURBVEUgQ09OU1RS QUlOVCAqLwoqKioqKioqKioqKioqKioKKioqIDMxODQsMzE5MCAqKioqIEFU UHJlcENtZChMaXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiByZWwsIEFsdGVyVGFi bGVDbWQgKmNtZCwKICAJCWNhc2UgQVRfRW5hYmxlQWx3YXlzUnVsZToKICAJ CWNhc2UgQVRfRW5hYmxlUmVwbGljYVJ1bGU6CiAgCQljYXNlIEFUX0Rpc2Fi bGVSdWxlOgotIAkJY2FzZSBBVF9Ecm9wSW5oZXJpdDoJLyogTk8gSU5IRVJJ VCAqLwogIAkJY2FzZSBBVF9BZGRPZjoJCQkvKiBPRiAqLwogIAkJY2FzZSBB VF9Ecm9wT2Y6IC8qIE5PVCBPRiAqLwogIAkJCUFUU2ltcGxlUGVybWlzc2lv bnMocmVsLCBBVFRfVEFCTEUpOwotLS0gMzE5MiwzMTk3IC0tLS0KKioqKioq KioqKioqKioqCioqKiA0MTI1LDQxMzEgKioqKiBBVFdyb25nUmVsa2luZEVy cm9yKFJlbGF0aW9uIHJlbCwgaW50IGFsbG93ZWRfdGFyZ2V0cykKICAgKi8K ICBzdGF0aWMgdm9pZAogIEFUU2ltcGxlUmVjdXJzaW9uKExpc3QgKip3cXVl dWUsIFJlbGF0aW9uIHJlbCwKISAJCQkJICBBbHRlclRhYmxlQ21kICpjbWQs IGJvb2wgcmVjdXJzZSwgTE9DS01PREUgbG9ja21vZGUpCiAgewogIAkvKgog IAkgKiBQcm9wYWdhdGUgdG8gY2hpbGRyZW4gaWYgZGVzaXJlZC4gIE5vbi10 YWJsZSByZWxhdGlvbnMgbmV2ZXIgaGF2ZQotLS0gNDEzMiw0MTM5IC0tLS0K ICAgKi8KICBzdGF0aWMgdm9pZAogIEFUU2ltcGxlUmVjdXJzaW9uKExpc3Qg Kip3cXVldWUsIFJlbGF0aW9uIHJlbCwKISAJCQkJICBBbHRlclRhYmxlQ21k ICpjbWQsIGJvb2wgcmVjdXJzZSwKISAJCQkJICBib29sIGluY2x1ZGVfZm9y ZWlnbiwgTE9DS01PREUgbG9ja21vZGUpCiAgewogIAkvKgogIAkgKiBQcm9w YWdhdGUgdG8gY2hpbGRyZW4gaWYgZGVzaXJlZC4gIE5vbi10YWJsZSByZWxh dGlvbnMgbmV2ZXIgaGF2ZQoqKioqKioqKioqKioqKioKKioqIDQxNTMsNDE2 MCAqKioqIEFUU2ltcGxlUmVjdXJzaW9uKExpc3QgKip3cXVldWUsIFJlbGF0 aW9uIHJlbCwKICAJCQkJY29udGludWU7CiAgCQkJLyogZmluZF9hbGxfaW5o ZXJpdG9ycyBhbHJlYWR5IGdvdCBsb2NrICovCiAgCQkJY2hpbGRyZWwgPSBy ZWxhdGlvbl9vcGVuKGNoaWxkcmVsaWQsIE5vTG9jayk7CiEgCQkJQ2hlY2tU YWJsZU5vdEluVXNlKGNoaWxkcmVsLCAiQUxURVIgVEFCTEUiKTsKISAJCQlB VFByZXBDbWQod3F1ZXVlLCBjaGlsZHJlbCwgY21kLCBmYWxzZSwgdHJ1ZSwg bG9ja21vZGUpOwogIAkJCXJlbGF0aW9uX2Nsb3NlKGNoaWxkcmVsLCBOb0xv Y2spOwogIAkJfQogIAl9Ci0tLSA0MTYxLDQxNzIgLS0tLQogIAkJCQljb250 aW51ZTsKICAJCQkvKiBmaW5kX2FsbF9pbmhlcml0b3JzIGFscmVhZHkgZ290 IGxvY2sgKi8KICAJCQljaGlsZHJlbCA9IHJlbGF0aW9uX29wZW4oY2hpbGRy ZWxpZCwgTm9Mb2NrKTsKISAJCQlpZiAoY2hpbGRyZWwtPnJkX3JlbC0+cmVs a2luZCAhPSBSRUxLSU5EX0ZPUkVJR05fVEFCTEUKISAJCQkJfHwgaW5jbHVk ZV9mb3JlaWduKQohIAkJCXsKISAJCQkJQ2hlY2tUYWJsZU5vdEluVXNlKGNo aWxkcmVsLCAiQUxURVIgVEFCTEUiKTsKISAJCQkJQVRQcmVwQ21kKHdxdWV1 ZSwgY2hpbGRyZWwsIGNtZCwgZmFsc2UsIHRydWUsIGxvY2ttb2RlKTsKISAJ CQl9CiAgCQkJcmVsYXRpb25fY2xvc2UoY2hpbGRyZWwsIE5vTG9jayk7CiAg CQl9CiAgCX0KKioqKioqKioqKioqKioqCioqKiA0NDQ0LDQ0NTAgKioqKiBB VEV4ZWNBZGRDb2x1bW4oTGlzdCAqKndxdWV1ZSwgQWx0ZXJlZFRhYmxlSW5m byAqdGFiLCBSZWxhdGlvbiByZWwsCiAgCiAgCS8qIEF0IHRvcCBsZXZlbCwg cGVybWlzc2lvbiBjaGVjayB3YXMgZG9uZSBpbiBBVFByZXBDbWQsIGVsc2Ug ZG8gaXQgKi8KICAJaWYgKHJlY3Vyc2luZykKISAJCUFUU2ltcGxlUGVybWlz c2lvbnMocmVsLCBBVFRfVEFCTEUpOwogIAogIAlhdHRyZGVzYyA9IGhlYXBf b3BlbihBdHRyaWJ1dGVSZWxhdGlvbklkLCBSb3dFeGNsdXNpdmVMb2NrKTsK ICAKLS0tIDQ0NTYsNDQ2MiAtLS0tCiAgCiAgCS8qIEF0IHRvcCBsZXZlbCwg cGVybWlzc2lvbiBjaGVjayB3YXMgZG9uZSBpbiBBVFByZXBDbWQsIGVsc2Ug ZG8gaXQgKi8KICAJaWYgKHJlY3Vyc2luZykKISAJCUFUU2ltcGxlUGVybWlz c2lvbnMocmVsLCBBVFRfVEFCTEUgfCBBVFRfRk9SRUlHTl9UQUJMRSk7CiAg CiAgCWF0dHJkZXNjID0gaGVhcF9vcGVuKEF0dHJpYnV0ZVJlbGF0aW9uSWQs IFJvd0V4Y2x1c2l2ZUxvY2spOwogIAoqKioqKioqKioqKioqKioKKioqIDQ3 NDAsNDc0NSAqKioqIEFURXhlY0FkZENvbHVtbihMaXN0ICoqd3F1ZXVlLCBB bHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKLS0tIDQ3NTIs NDc2MiAtLS0tCiAgCiAgCQkvKiBmaW5kX2luaGVyaXRhbmNlX2NoaWxkcmVu IGFscmVhZHkgZ290IGxvY2sgKi8KICAJCWNoaWxkcmVsID0gaGVhcF9vcGVu KGNoaWxkcmVsaWQsIE5vTG9jayk7CisgCQlpZiAoY2hpbGRyZWwtPnJkX3Jl bC0+cmVsa2luZCA9PSBSRUxLSU5EX0ZPUkVJR05fVEFCTEUgJiYgaXNPaWQp CisgCQkJZXJlcG9ydChFUlJPUiwKKyAJCQkJCShlcnJjb2RlKEVSUkNPREVf RkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKyAJCQkJCSBlcnJtc2coImNhbm5v dCBhZGQgT0lEIGNvbHVtbiB0byBmb3JlaWduIHRhYmxlIFwiJXNcIiIsCisg CQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKGNoaWxkcmVsKSkpKTsK ICAJCUNoZWNrVGFibGVOb3RJblVzZShjaGlsZHJlbCwgIkFMVEVSIFRBQkxF Iik7CiAgCiAgCQkvKiBGaW5kIG9yIGNyZWF0ZSB3b3JrIHF1ZXVlIGVudHJ5 IGZvciB0aGlzIHRhYmxlICovCioqKioqKioqKioqKioqKgoqKiogNTM0MCw1 MzQ2ICoqKiogQVRFeGVjRHJvcENvbHVtbihMaXN0ICoqd3F1ZXVlLCBSZWxh dGlvbiByZWwsIGNvbnN0IGNoYXIgKmNvbE5hbWUsCiAgCiAgCS8qIEF0IHRv cCBsZXZlbCwgcGVybWlzc2lvbiBjaGVjayB3YXMgZG9uZSBpbiBBVFByZXBD bWQsIGVsc2UgZG8gaXQgKi8KICAJaWYgKHJlY3Vyc2luZykKISAJCUFUU2lt cGxlUGVybWlzc2lvbnMocmVsLCBBVFRfVEFCTEUpOwogIAogIAkvKgogIAkg KiBnZXQgdGhlIG51bWJlciBvZiB0aGUgYXR0cmlidXRlCi0tLSA1MzU3LDUz NjMgLS0tLQogIAogIAkvKiBBdCB0b3AgbGV2ZWwsIHBlcm1pc3Npb24gY2hl Y2sgd2FzIGRvbmUgaW4gQVRQcmVwQ21kLCBlbHNlIGRvIGl0ICovCiAgCWlm IChyZWN1cnNpbmcpCiEgCQlBVFNpbXBsZVBlcm1pc3Npb25zKHJlbCwgQVRU X1RBQkxFIHwgQVRUX0ZPUkVJR05fVEFCTEUpOwogIAogIAkvKgogIAkgKiBn ZXQgdGhlIG51bWJlciBvZiB0aGUgYXR0cmlidXRlCioqKioqKioqKioqKioq KgoqKiogNTczMiw1NzM4ICoqKiogQVRBZGRDaGVja0NvbnN0cmFpbnQoTGlz dCAqKndxdWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBSZWxhdGlvbiBy ZWwsCiAgCiAgCS8qIEF0IHRvcCBsZXZlbCwgcGVybWlzc2lvbiBjaGVjayB3 YXMgZG9uZSBpbiBBVFByZXBDbWQsIGVsc2UgZG8gaXQgKi8KICAJaWYgKHJl Y3Vyc2luZykKISAJCUFUU2ltcGxlUGVybWlzc2lvbnMocmVsLCBBVFRfVEFC TEUpOwogIAogIAkvKgogIAkgKiBDYWxsIEFkZFJlbGF0aW9uTmV3Q29uc3Ry YWludHMgdG8gZG8gdGhlIHdvcmssIG1ha2luZyBzdXJlIGl0IHdvcmtzIG9u Ci0tLSA1NzQ5LDU3NjIgLS0tLQogIAogIAkvKiBBdCB0b3AgbGV2ZWwsIHBl cm1pc3Npb24gY2hlY2sgd2FzIGRvbmUgaW4gQVRQcmVwQ21kLCBlbHNlIGRv IGl0ICovCiAgCWlmIChyZWN1cnNpbmcpCiEgCQlBVFNpbXBsZVBlcm1pc3Np b25zKHJlbCwgQVRUX1RBQkxFIHwgQVRUX0ZPUkVJR05fVEFCTEUpOwohIAoh IAkvKiBEb24ndCBhbGxvdyBBREQgQ09OU1RSQUlOVCBOT1QgVkFMSUQgdG8g YmUgYXBwbGllZCB0byBmb3JlaWduIHRhYmxlcyAqLwohIAlpZiAodGFiLT5y ZWxraW5kID09IFJFTEtJTkRfRk9SRUlHTl9UQUJMRSAmJgohIAkJY29uc3Ry LT5za2lwX3ZhbGlkYXRpb24gJiYgIXJlY3Vyc2luZykKISAJCWVyZXBvcnQo RVJST1IsCiEgCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQ UE9SVEVEKSwKISAJCQkJIGVycm1zZygiTk9UIFZBTElEIGlzIG5vdCBzdXBw b3J0ZWQgb24gZm9yZWlnbiB0YWJsZXMiKSkpOwogIAogIAkvKgogIAkgKiBD YWxsIEFkZFJlbGF0aW9uTmV3Q29uc3RyYWludHMgdG8gZG8gdGhlIHdvcmss IG1ha2luZyBzdXJlIGl0IHdvcmtzIG9uCioqKioqKioqKioqKioqKgoqKiog NTc0Myw1NzUxICoqKiogQVRBZGRDaGVja0NvbnN0cmFpbnQoTGlzdCAqKndx dWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsCiAg CSAqIG9taXR0ZWQgZnJvbSB0aGUgcmV0dXJuZWQgbGlzdCwgd2hpY2ggaXMg d2hhdCB3ZSB3YW50OiB3ZSBkbyBub3QgbmVlZAogIAkgKiB0byBkbyBhbnkg dmFsaWRhdGlvbiB3b3JrLiAgVGhhdCBjYW4gb25seSBoYXBwZW4gYXQgY2hp bGQgdGFibGVzLAogIAkgKiB0aG91Z2gsIHNpbmNlIHdlIGRpc2FsbG93IG1l cmdpbmcgYXQgdGhlIHRvcCBsZXZlbC4KICAJICovCiAgCW5ld2NvbnMgPSBB ZGRSZWxhdGlvbk5ld0NvbnN0cmFpbnRzKHJlbCwgTklMLAohIAkJCQkJCQkJ CQlsaXN0X21ha2UxKGNvcHlPYmplY3QoY29uc3RyKSksCiAgCQkJCQkJCQkJ CXJlY3Vyc2luZywJCS8qIGFsbG93X21lcmdlICovCiAgCQkJCQkJCQkJCSFy ZWN1cnNpbmcsCQkvKiBpc19sb2NhbCAqLwogIAkJCQkJCQkJCQlpc19yZWFk ZCk7CQkvKiBpc19pbnRlcm5hbCAqLwotLS0gNTc2Nyw1NzgzIC0tLS0KICAJ ICogb21pdHRlZCBmcm9tIHRoZSByZXR1cm5lZCBsaXN0LCB3aGljaCBpcyB3 aGF0IHdlIHdhbnQ6IHdlIGRvIG5vdCBuZWVkCiAgCSAqIHRvIGRvIGFueSB2 YWxpZGF0aW9uIHdvcmsuICBUaGF0IGNhbiBvbmx5IGhhcHBlbiBhdCBjaGls ZCB0YWJsZXMsCiAgCSAqIHRob3VnaCwgc2luY2Ugd2UgZGlzYWxsb3cgbWVy Z2luZyBhdCB0aGUgdG9wIGxldmVsLgorIAkgKgorIAkgKiBXaGVuIHByb3Bh Z2F0aW5nIGEgTk9UIFZBTElEIG9wdGlvbiB0byBjaGlsZHJlbiB0aGF0IGFy ZSBmb3JlaWduIHRhYmxlcywKKyAJICogd2UgcXVpZXRseSBpZ25vcmUgdGhl IG9wdGlvbi4gIE5vdGUgdGhhdCB0aGlzIGlzIHNhZmUgYmVjYXVzZSBmb3Jl aWduCisgCSAqIHRhYmxlcyBkb24ndCBoYXZlIGFueSBjaGlsZHJlbi4KICAJ ICovCisgCWNvbnN0ciA9IChDb25zdHJhaW50ICopIGNvcHlPYmplY3QoY29u c3RyKTsKKyAJaWYgKHRhYi0+cmVsa2luZCA9PSBSRUxLSU5EX0ZPUkVJR05f VEFCTEUgJiYKKyAJCWNvbnN0ci0+c2tpcF92YWxpZGF0aW9uICYmIHJlY3Vy c2luZykKKyAJCWNvbnN0ci0+c2tpcF92YWxpZGF0aW9uID0gZmFsc2U7CiAg CW5ld2NvbnMgPSBBZGRSZWxhdGlvbk5ld0NvbnN0cmFpbnRzKHJlbCwgTklM LAohIAkJCQkJCQkJCQlsaXN0X21ha2UxKGNvbnN0ciksCiAgCQkJCQkJCQkJ CXJlY3Vyc2luZywJCS8qIGFsbG93X21lcmdlICovCiAgCQkJCQkJCQkJCSFy ZWN1cnNpbmcsCQkvKiBpc19sb2NhbCAqLwogIAkJCQkJCQkJCQlpc19yZWFk ZCk7CQkvKiBpc19pbnRlcm5hbCAqLwoqKioqKioqKioqKioqKioKKioqIDcy MjUsNzIzMSAqKioqIEFURXhlY0Ryb3BDb25zdHJhaW50KFJlbGF0aW9uIHJl bCwgY29uc3QgY2hhciAqY29uc3RyTmFtZSwKICAKICAJLyogQXQgdG9wIGxl dmVsLCBwZXJtaXNzaW9uIGNoZWNrIHdhcyBkb25lIGluIEFUUHJlcENtZCwg ZWxzZSBkbyBpdCAqLwogIAlpZiAocmVjdXJzaW5nKQohIAkJQVRTaW1wbGVQ ZXJtaXNzaW9ucyhyZWwsIEFUVF9UQUJMRSk7CiAgCiAgCWNvbnJlbCA9IGhl YXBfb3BlbihDb25zdHJhaW50UmVsYXRpb25JZCwgUm93RXhjbHVzaXZlTG9j ayk7CiAgCi0tLSA3MjU3LDcyNjMgLS0tLQogIAogIAkvKiBBdCB0b3AgbGV2 ZWwsIHBlcm1pc3Npb24gY2hlY2sgd2FzIGRvbmUgaW4gQVRQcmVwQ21kLCBl bHNlIGRvIGl0ICovCiAgCWlmIChyZWN1cnNpbmcpCiEgCQlBVFNpbXBsZVBl cm1pc3Npb25zKHJlbCwgQVRUX1RBQkxFIHwgQVRUX0ZPUkVJR05fVEFCTEUp OwogIAogIAljb25yZWwgPSBoZWFwX29wZW4oQ29uc3RyYWludFJlbGF0aW9u SWQsIFJvd0V4Y2x1c2l2ZUxvY2spOwogIAoqKioqKioqKioqKioqKioKKioq IDc1NjAsNzU2NiAqKioqIEFUUHJlcEFsdGVyQ29sdW1uVHlwZShMaXN0ICoq d3F1ZXVlLAogIAkgKiBhbHRlciB3b3VsZCBwdXQgdGhlbSBvdXQgb2Ygc3Rl cC4KICAJICovCiAgCWlmIChyZWN1cnNlKQohIAkJQVRTaW1wbGVSZWN1cnNp b24od3F1ZXVlLCByZWwsIGNtZCwgcmVjdXJzZSwgbG9ja21vZGUpOwogIAll bHNlIGlmICghcmVjdXJzaW5nICYmCiAgCQkJIGZpbmRfaW5oZXJpdGFuY2Vf Y2hpbGRyZW4oUmVsYXRpb25HZXRSZWxpZChyZWwpLCBOb0xvY2spICE9IE5J TCkKICAJCWVyZXBvcnQoRVJST1IsCi0tLSA3NTkyLDc2MDEgLS0tLQogIAkg KiBhbHRlciB3b3VsZCBwdXQgdGhlbSBvdXQgb2Ygc3RlcC4KICAJICovCiAg CWlmIChyZWN1cnNlKQohIAl7CiEgCQkvKiBSZWN1cnNlIHRvIGNoaWxkIHRh YmxlcyB0aGF0IGFyZSBmb3JlaWduLCB0b28gKi8KISAJCUFUU2ltcGxlUmVj dXJzaW9uKHdxdWV1ZSwgcmVsLCBjbWQsIHJlY3Vyc2UsIHRydWUsIGxvY2tt b2RlKTsKISAJfQogIAllbHNlIGlmICghcmVjdXJzaW5nICYmCiAgCQkJIGZp bmRfaW5oZXJpdGFuY2VfY2hpbGRyZW4oUmVsYXRpb25HZXRSZWxpZChyZWwp LCBOb0xvY2spICE9IE5JTCkKICAJCWVyZXBvcnQoRVJST1IsCioqKiBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jCi0tLSBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3ZhY3V1bS5jCioqKioqKioqKioqKioqKgoqKiogNjEsNjYg KioqKiBpbnQJCQl2YWN1dW1fbXVsdGl4YWN0X2ZyZWV6ZV90YWJsZV9hZ2U7 Ci0tLSA2MSw2NyAtLS0tCiAgCiAgLyogQSBmZXcgdmFyaWFibGVzIHRoYXQg ZG9uJ3Qgc2VlbSB3b3J0aCBwYXNzaW5nIGFyb3VuZCBhcyBwYXJhbWV0ZXJz ICovCiAgc3RhdGljIE1lbW9yeUNvbnRleHQgdmFjX2NvbnRleHQgPSBOVUxM OworIHN0YXRpYyBWYWN1dW1Nb2RlIHZhY19tb2RlOwogIHN0YXRpYyBCdWZm ZXJBY2Nlc3NTdHJhdGVneSB2YWNfc3RyYXRlZ3k7CiAgCiAgCioqKioqKioq KioqKioqKgoqKiogMTQ2LDE1MSAqKioqIHZhY3V1bShWYWN1dW1TdG10ICp2 YWNzdG10LCBPaWQgcmVsaWQsIGJvb2wgZG9fdG9hc3QsCi0tLSAxNDcsMTY2 IC0tLS0KICAJCQkJCQkJCQkJQUxMT0NTRVRfREVGQVVMVF9NQVhTSVpFKTsK ICAKICAJLyoKKyAJICogSWRlbnRpZnkgdmFjdXVtIG1vZGUuICBJZiByZWxp ZCBpcyBub3QgSW52YWxpZE9pZCwgdGhlIGNhbGxlciBzaG91bGQgYmUKKyAJ ICogYW4gYXV0b3ZhY3V1bSB3b3JrZXIuICBTZWUgdGhlIGFib3ZlIGNvbW1l bnRzLgorIAkgKi8KKyAJaWYgKHJlbGlkICE9IEludmFsaWRPaWQpCisgCQl2 YWNfbW9kZSA9IFZBQ19NT0RFX0FVVE9WQUNVVU07CisgCWVsc2UKKyAJewor IAkJaWYgKCF2YWNzdG10LT5yZWxhdGlvbikKKyAJCQl2YWNfbW9kZSA9IFZB Q19NT0RFX0FMTDsKKyAJCWVsc2UKKyAJCQl2YWNfbW9kZSA9IFZBQ19NT0RF X1NJTkdMRTsKKyAJfQorIAorIAkvKgogIAkgKiBJZiBjYWxsZXIgZGlkbid0 IGdpdmUgdXMgYSBidWZmZXIgc3RyYXRlZ3kgb2JqZWN0LCBtYWtlIG9uZSBp biB0aGUKICAJICogY3Jvc3MtdHJhbnNhY3Rpb24gbWVtb3J5IGNvbnRleHQu CiAgCSAqLwoqKioqKioqKioqKioqKioKKioqIDI0OCwyNTQgKioqKiB2YWN1 dW0oVmFjdXVtU3RtdCAqdmFjc3RtdCwgT2lkIHJlbGlkLCBib29sIGRvX3Rv YXN0LAogIAkJCQkJUHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9u U25hcHNob3QoKSk7CiAgCQkJCX0KICAKISAJCQkJYW5hbHl6ZV9yZWwocmVs aWQsIHZhY3N0bXQsIHZhY19zdHJhdGVneSk7CiAgCiAgCQkJCWlmICh1c2Vf b3duX3hhY3RzKQogIAkJCQl7Ci0tLSAyNjMsMjY5IC0tLS0KICAJCQkJCVB1 c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOwog IAkJCQl9CiAgCiEgCQkJCWFuYWx5emVfcmVsKHJlbGlkLCB2YWNzdG10LCB2 YWNfbW9kZSwgdmFjX3N0cmF0ZWd5KTsKICAKICAJCQkJaWYgKHVzZV9vd25f eGFjdHMpCiAgCQkJCXsKKioqIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3By ZXAvcHJlcHVuaW9uLmMKLS0tIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3By ZXAvcHJlcHVuaW9uLmMKKioqKioqKioqKioqKioqCioqKiAxMzM3LDEzNDcg KioqKiBleHBhbmRfaW5oZXJpdGVkX3J0ZW50cnkoUGxhbm5lckluZm8gKnJv b3QsIFJhbmdlVGJsRW50cnkgKnJ0ZSwgSW5kZXggcnRpKQogIAkJLyoKICAJ CSAqIEJ1aWxkIGFuIFJURSBmb3IgdGhlIGNoaWxkLCBhbmQgYXR0YWNoIHRv IHF1ZXJ5J3MgcmFuZ2V0YWJsZSBsaXN0LgogIAkJICogV2UgY29weSBtb3N0 IGZpZWxkcyBvZiB0aGUgcGFyZW50J3MgUlRFLCBidXQgcmVwbGFjZSByZWxh dGlvbiBPSUQsCiEgCQkgKiBhbmQgc2V0IGluaCA9IGZhbHNlLiAgQWxzbywg c2V0IHJlcXVpcmVkUGVybXMgdG8gemVybyBzaW5jZSBhbGwKISAJCSAqIHJl cXVpcmVkIHBlcm1pc3Npb25zIGNoZWNrcyBhcmUgZG9uZSBvbiB0aGUgb3Jp Z2luYWwgUlRFLgogIAkJICovCiAgCQljaGlsZHJ0ZSA9IGNvcHlPYmplY3Qo cnRlKTsKICAJCWNoaWxkcnRlLT5yZWxpZCA9IGNoaWxkT0lEOwogIAkJY2hp bGRydGUtPmluaCA9IGZhbHNlOwogIAkJY2hpbGRydGUtPnJlcXVpcmVkUGVy bXMgPSAwOwogIAkJcGFyc2UtPnJ0YWJsZSA9IGxhcHBlbmQocGFyc2UtPnJ0 YWJsZSwgY2hpbGRydGUpOwotLS0gMTMzNywxMzQ4IC0tLS0KICAJCS8qCiAg CQkgKiBCdWlsZCBhbiBSVEUgZm9yIHRoZSBjaGlsZCwgYW5kIGF0dGFjaCB0 byBxdWVyeSdzIHJhbmdldGFibGUgbGlzdC4KICAJCSAqIFdlIGNvcHkgbW9z dCBmaWVsZHMgb2YgdGhlIHBhcmVudCdzIFJURSwgYnV0IHJlcGxhY2UgcmVs YXRpb24gT0lELAohIAkJICogcmVsa2luZCBhbmQgc2V0IGluaCA9IGZhbHNl LiAgQWxzbywgc2V0IHJlcXVpcmVkUGVybXMgdG8gemVybyBzaW5jZQohIAkJ ICogYWxsIHJlcXVpcmVkIHBlcm1pc3Npb25zIGNoZWNrcyBhcmUgZG9uZSBv biB0aGUgb3JpZ2luYWwgUlRFLgogIAkJICovCiAgCQljaGlsZHJ0ZSA9IGNv cHlPYmplY3QocnRlKTsKICAJCWNoaWxkcnRlLT5yZWxpZCA9IGNoaWxkT0lE OworIAkJY2hpbGRydGUtPnJlbGtpbmQgPSBuZXdyZWxhdGlvbi0+cmRfcmVs LT5yZWxraW5kOwogIAkJY2hpbGRydGUtPmluaCA9IGZhbHNlOwogIAkJY2hp bGRydGUtPnJlcXVpcmVkUGVybXMgPSAwOwogIAkJcGFyc2UtPnJ0YWJsZSA9 IGxhcHBlbmQocGFyc2UtPnJ0YWJsZSwgY2hpbGRydGUpOwoqKiogYS9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wYXRobm9kZS5jCi0tLSBiL3NyYy9i YWNrZW5kL29wdGltaXplci91dGlsL3BhdGhub2RlLmMKKioqKioqKioqKioq KioqCioqKiAxNiwyMSAqKioqCi0tLSAxNiwyMiAtLS0tCiAgCiAgI2luY2x1 ZGUgPG1hdGguaD4KICAKKyAjaW5jbHVkZSAiZm9yZWlnbi9mZHdhcGkuaCIK ICAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAgI2luY2x1ZGUgIm5vZGVzL25v ZGVGdW5jcy5oIgogICNpbmNsdWRlICJvcHRpbWl6ZXIvY2xhdXNlcy5oIgoq KioqKioqKioqKioqKioKKioqIDIwNjIsMjA2NyAqKioqIHJlcGFyYW1ldGVy aXplX3BhdGgoUGxhbm5lckluZm8gKnJvb3QsIFBhdGggKnBhdGgsCi0tLSAy MDYzLDIwOTEgLS0tLQogIAkJY2FzZSBUX1N1YnF1ZXJ5U2NhbjoKICAJCQly ZXR1cm4gY3JlYXRlX3N1YnF1ZXJ5c2Nhbl9wYXRoKHJvb3QsIHJlbCwgcGF0 aC0+cGF0aGtleXMsCiAgCQkJCQkJCQkJCQlyZXF1aXJlZF9vdXRlcik7Cisg CQljYXNlIFRfRm9yZWlnblNjYW46CisgCQkJeworIAkJCQlGb3JlaWduUGF0 aCAqZnBhdGggPSAoRm9yZWlnblBhdGggKikgcGF0aDsKKyAJCQkJRm9yZWln blBhdGggKm5ld3BhdGggPSBOVUxMOworIAkJCQlJbmRleAkJc2Nhbl9yZWxp ZCA9IHJlbC0+cmVsaWQ7CisgCQkJCVJhbmdlVGJsRW50cnkgKnJ0ZTsKKyAK KyAJCQkJLyogaXQgc2hvdWxkIGJlIGEgYmFzZSByZWwuLi4gKi8KKyAJCQkJ QXNzZXJ0KHNjYW5fcmVsaWQgPiAwKTsKKyAJCQkJQXNzZXJ0KHJlbC0+cnRl a2luZCA9PSBSVEVfUkVMQVRJT04pOworIAkJCQlydGUgPSBwbGFubmVyX3J0 X2ZldGNoKHNjYW5fcmVsaWQsIHJvb3QpOworIAkJCQlBc3NlcnQocnRlLT5y dGVraW5kID09IFJURV9SRUxBVElPTik7CisgCisgCQkJCS8qIExldCB0aGUg RkRXIHJlcGFyYW1ldGVyaXplIHRoZSBwYXRoIG5vZGUgaWYgcG9zc2libGUg Ki8KKyAJCQkJaWYgKHJlbC0+ZmR3cm91dGluZS0+UmVwYXJhbWV0ZXJpemVG b3JlaWduUGF0aCAhPSBOVUxMKQorIAkJCQkJbmV3cGF0aCA9CisgCQkJCQkJ cmVsLT5mZHdyb3V0aW5lLT5SZXBhcmFtZXRlcml6ZUZvcmVpZ25QYXRoKHJv b3QsCisgCQkJCQkJCQkJCQkJCQkJCSAgIHJlbCwKKyAJCQkJCQkJCQkJCQkJ CQkJICAgcnRlLT5yZWxpZCwKKyAJCQkJCQkJCQkJCQkJCQkJICAgZnBhdGgs CisgCQkJCQkJCQkJCQkJCQkJICAgcmVxdWlyZWRfb3V0ZXIpOworIAkJCQly ZXR1cm4gKFBhdGggKikgbmV3cGF0aDsKKyAJCQl9CiAgCQlkZWZhdWx0Ogog IAkJCWJyZWFrOwogIAl9CioqKiBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFt LnkKLS0tIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQoqKioqKioqKioq KioqKioKKioqIDQyMDksNDI0MCAqKioqIEFsdGVyRm9yZWlnblNlcnZlclN0 bXQ6IEFMVEVSIFNFUlZFUiBuYW1lIGZvcmVpZ25fc2VydmVyX3ZlcnNpb24g YWx0ZXJfZ2VuZXJpY19vCiAgQ3JlYXRlRm9yZWlnblRhYmxlU3RtdDoKICAJ CUNSRUFURSBGT1JFSUdOIFRBQkxFIHF1YWxpZmllZF9uYW1lCiAgCQkJJygn IE9wdFRhYmxlRWxlbWVudExpc3QgJyknCiEgCQkJU0VSVkVSIG5hbWUgY3Jl YXRlX2dlbmVyaWNfb3B0aW9ucwogIAkJCQl7CiAgCQkJCQlDcmVhdGVGb3Jl aWduVGFibGVTdG10ICpuID0gbWFrZU5vZGUoQ3JlYXRlRm9yZWlnblRhYmxl U3RtdCk7CiAgCQkJCQkkNC0+cmVscGVyc2lzdGVuY2UgPSBSRUxQRVJTSVNU RU5DRV9QRVJNQU5FTlQ7CiAgCQkJCQluLT5iYXNlLnJlbGF0aW9uID0gJDQ7 CiAgCQkJCQluLT5iYXNlLnRhYmxlRWx0cyA9ICQ2OwohIAkJCQkJbi0+YmFz ZS5pbmhSZWxhdGlvbnMgPSBOSUw7CiAgCQkJCQluLT5iYXNlLmlmX25vdF9l eGlzdHMgPSBmYWxzZTsKICAJCQkJCS8qIEZEVy1zcGVjaWZpYyBkYXRhICov CiEgCQkJCQluLT5zZXJ2ZXJuYW1lID0gJDk7CiEgCQkJCQluLT5vcHRpb25z ID0gJDEwOwogIAkJCQkJJCQgPSAoTm9kZSAqKSBuOwogIAkJCQl9CiAgCQl8 IENSRUFURSBGT1JFSUdOIFRBQkxFIElGX1AgTk9UIEVYSVNUUyBxdWFsaWZp ZWRfbmFtZQogIAkJCScoJyBPcHRUYWJsZUVsZW1lbnRMaXN0ICcpJwohIAkJ CVNFUlZFUiBuYW1lIGNyZWF0ZV9nZW5lcmljX29wdGlvbnMKICAJCQkJewog IAkJCQkJQ3JlYXRlRm9yZWlnblRhYmxlU3RtdCAqbiA9IG1ha2VOb2RlKENy ZWF0ZUZvcmVpZ25UYWJsZVN0bXQpOwogIAkJCQkJJDctPnJlbHBlcnNpc3Rl bmNlID0gUkVMUEVSU0lTVEVOQ0VfUEVSTUFORU5UOwogIAkJCQkJbi0+YmFz ZS5yZWxhdGlvbiA9ICQ3OwogIAkJCQkJbi0+YmFzZS50YWJsZUVsdHMgPSAk OTsKISAJCQkJCW4tPmJhc2UuaW5oUmVsYXRpb25zID0gTklMOwogIAkJCQkJ bi0+YmFzZS5pZl9ub3RfZXhpc3RzID0gdHJ1ZTsKICAJCQkJCS8qIEZEVy1z cGVjaWZpYyBkYXRhICovCiEgCQkJCQluLT5zZXJ2ZXJuYW1lID0gJDEyOwoh IAkJCQkJbi0+b3B0aW9ucyA9ICQxMzsKICAJCQkJCSQkID0gKE5vZGUgKikg bjsKICAJCQkJfQogIAkJOwotLS0gNDIwOSw0MjQwIC0tLS0KICBDcmVhdGVG b3JlaWduVGFibGVTdG10OgogIAkJQ1JFQVRFIEZPUkVJR04gVEFCTEUgcXVh bGlmaWVkX25hbWUKICAJCQknKCcgT3B0VGFibGVFbGVtZW50TGlzdCAnKScK ISAJCQlPcHRJbmhlcml0IFNFUlZFUiBuYW1lIGNyZWF0ZV9nZW5lcmljX29w dGlvbnMKICAJCQkJewogIAkJCQkJQ3JlYXRlRm9yZWlnblRhYmxlU3RtdCAq biA9IG1ha2VOb2RlKENyZWF0ZUZvcmVpZ25UYWJsZVN0bXQpOwogIAkJCQkJ JDQtPnJlbHBlcnNpc3RlbmNlID0gUkVMUEVSU0lTVEVOQ0VfUEVSTUFORU5U OwogIAkJCQkJbi0+YmFzZS5yZWxhdGlvbiA9ICQ0OwogIAkJCQkJbi0+YmFz ZS50YWJsZUVsdHMgPSAkNjsKISAJCQkJCW4tPmJhc2UuaW5oUmVsYXRpb25z ID0gJDg7CiAgCQkJCQluLT5iYXNlLmlmX25vdF9leGlzdHMgPSBmYWxzZTsK ICAJCQkJCS8qIEZEVy1zcGVjaWZpYyBkYXRhICovCiEgCQkJCQluLT5zZXJ2 ZXJuYW1lID0gJDEwOwohIAkJCQkJbi0+b3B0aW9ucyA9ICQxMTsKICAJCQkJ CSQkID0gKE5vZGUgKikgbjsKICAJCQkJfQogIAkJfCBDUkVBVEUgRk9SRUlH TiBUQUJMRSBJRl9QIE5PVCBFWElTVFMgcXVhbGlmaWVkX25hbWUKICAJCQkn KCcgT3B0VGFibGVFbGVtZW50TGlzdCAnKScKISAJCQlPcHRJbmhlcml0IFNF UlZFUiBuYW1lIGNyZWF0ZV9nZW5lcmljX29wdGlvbnMKICAJCQkJewogIAkJ CQkJQ3JlYXRlRm9yZWlnblRhYmxlU3RtdCAqbiA9IG1ha2VOb2RlKENyZWF0 ZUZvcmVpZ25UYWJsZVN0bXQpOwogIAkJCQkJJDctPnJlbHBlcnNpc3RlbmNl ID0gUkVMUEVSU0lTVEVOQ0VfUEVSTUFORU5UOwogIAkJCQkJbi0+YmFzZS5y ZWxhdGlvbiA9ICQ3OwogIAkJCQkJbi0+YmFzZS50YWJsZUVsdHMgPSAkOTsK ISAJCQkJCW4tPmJhc2UuaW5oUmVsYXRpb25zID0gJDExOwogIAkJCQkJbi0+ YmFzZS5pZl9ub3RfZXhpc3RzID0gdHJ1ZTsKICAJCQkJCS8qIEZEVy1zcGVj aWZpYyBkYXRhICovCiEgCQkJCQluLT5zZXJ2ZXJuYW1lID0gJDEzOwohIAkJ CQkJbi0+b3B0aW9ucyA9ICQxNDsKICAJCQkJCSQkID0gKE5vZGUgKikgbjsK ICAJCQkJfQogIAkJOwoqKiogYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vf dXRpbGNtZC5jCi0tLSBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGls Y21kLmMKKioqKioqKioqKioqKioqCioqKiA1MTUsNTI2ICoqKiogdHJhbnNm b3JtQ29sdW1uRGVmaW5pdGlvbihDcmVhdGVTdG10Q29udGV4dCAqY3h0LCBD b2x1bW5EZWYgKmNvbHVtbikKICAJCQkJYnJlYWs7CiAgCiAgCQkJY2FzZSBD T05TVFJfQ0hFQ0s6Ci0gCQkJCWlmIChjeHQtPmlzZm9yZWlnbikKLSAJCQkJ CWVyZXBvcnQoRVJST1IsCi0gCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVB VFVSRV9OT1RfU1VQUE9SVEVEKSwKLSAJCQkJCWVycm1zZygiY29uc3RyYWlu dHMgYXJlIG5vdCBzdXBwb3J0ZWQgb24gZm9yZWlnbiB0YWJsZXMiKSwKLSAJ CQkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihjeHQtPnBzdGF0ZSwKLSAJCQkJ CQkJCQkJCQljb25zdHJhaW50LT5sb2NhdGlvbikpKTsKICAJCQkJY3h0LT5j a2NvbnN0cmFpbnRzID0gbGFwcGVuZChjeHQtPmNrY29uc3RyYWludHMsIGNv bnN0cmFpbnQpOwogIAkJCQlicmVhazsKICAKLS0tIDUxNSw1MjAgLS0tLQoq KioqKioqKioqKioqKioKKioqIDUyOSw1MzUgKioqKiB0cmFuc2Zvcm1Db2x1 bW5EZWZpbml0aW9uKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsIENvbHVtbkRl ZiAqY29sdW1uKQogIAkJCQlpZiAoY3h0LT5pc2ZvcmVpZ24pCiAgCQkJCQll cmVwb3J0KEVSUk9SLAogIAkJCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRV UkVfTk9UX1NVUFBPUlRFRCksCiEgCQkJCQllcnJtc2coImNvbnN0cmFpbnRz IGFyZSBub3Qgc3VwcG9ydGVkIG9uIGZvcmVpZ24gdGFibGVzIiksCiAgCQkJ CQkJCSBwYXJzZXJfZXJycG9zaXRpb24oY3h0LT5wc3RhdGUsCiAgCQkJCQkJ CQkJCQkJY29uc3RyYWludC0+bG9jYXRpb24pKSk7CiAgCQkJCWlmIChjb25z dHJhaW50LT5rZXlzID09IE5JTCkKLS0tIDUyMyw1MjkgLS0tLQogIAkJCQlp ZiAoY3h0LT5pc2ZvcmVpZ24pCiAgCQkJCQllcmVwb3J0KEVSUk9SLAogIAkJ CQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCks CiEgCQkJCQllcnJtc2coInByaW1hcnkga2V5IG9yIHVuaXF1ZSBjb25zdHJh aW50cyBhcmUgbm90IHN1cHBvcnRlZCBvbiBmb3JlaWduIHRhYmxlcyIpLAog IAkJCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKGN4dC0+cHN0YXRlLAogIAkJ CQkJCQkJCQkJCWNvbnN0cmFpbnQtPmxvY2F0aW9uKSkpOwogIAkJCQlpZiAo Y29uc3RyYWludC0+a2V5cyA9PSBOSUwpCioqKioqKioqKioqKioqKgoqKiog NTQ2LDU1MiAqKioqIHRyYW5zZm9ybUNvbHVtbkRlZmluaXRpb24oQ3JlYXRl U3RtdENvbnRleHQgKmN4dCwgQ29sdW1uRGVmICpjb2x1bW4pCiAgCQkJCWlm IChjeHQtPmlzZm9yZWlnbikKICAJCQkJCWVyZXBvcnQoRVJST1IsCiAgCQkJ CQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwK ISAJCQkJCWVycm1zZygiY29uc3RyYWludHMgYXJlIG5vdCBzdXBwb3J0ZWQg b24gZm9yZWlnbiB0YWJsZXMiKSwKICAJCQkJCQkJIHBhcnNlcl9lcnJwb3Np dGlvbihjeHQtPnBzdGF0ZSwKICAJCQkJCQkJCQkJCQljb25zdHJhaW50LT5s b2NhdGlvbikpKTsKICAKLS0tIDU0MCw1NDYgLS0tLQogIAkJCQlpZiAoY3h0 LT5pc2ZvcmVpZ24pCiAgCQkJCQllcmVwb3J0KEVSUk9SLAogIAkJCQkJCQko ZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCiEgCQkJ CQllcnJtc2coImZvcmVpZ24ga2V5IGNvbnN0cmFpbnRzIGFyZSBub3Qgc3Vw cG9ydGVkIG9uIGZvcmVpZ24gdGFibGVzIiksCiAgCQkJCQkJCSBwYXJzZXJf ZXJycG9zaXRpb24oY3h0LT5wc3RhdGUsCiAgCQkJCQkJCQkJCQkJY29uc3Ry YWludC0+bG9jYXRpb24pKSk7CiAgCioqKioqKioqKioqKioqKgoqKiogNjA1 LDYxNCAqKioqIHRyYW5zZm9ybUNvbHVtbkRlZmluaXRpb24oQ3JlYXRlU3Rt dENvbnRleHQgKmN4dCwgQ29sdW1uRGVmICpjb2x1bW4pCiAgc3RhdGljIHZv aWQKICB0cmFuc2Zvcm1UYWJsZUNvbnN0cmFpbnQoQ3JlYXRlU3RtdENvbnRl eHQgKmN4dCwgQ29uc3RyYWludCAqY29uc3RyYWludCkKICB7CiEgCWlmIChj eHQtPmlzZm9yZWlnbikKICAJCWVyZXBvcnQoRVJST1IsCiAgCQkJCShlcnJj b2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKISAJCQkJIGVy cm1zZygiY29uc3RyYWludHMgYXJlIG5vdCBzdXBwb3J0ZWQgb24gZm9yZWln biB0YWJsZXMiKSwKICAJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihjeHQtPnBz dGF0ZSwKICAJCQkJCQkJCQljb25zdHJhaW50LT5sb2NhdGlvbikpKTsKICAK LS0tIDU5OSw2MTIgLS0tLQogIHN0YXRpYyB2b2lkCiAgdHJhbnNmb3JtVGFi bGVDb25zdHJhaW50KENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsIENvbnN0cmFp bnQgKmNvbnN0cmFpbnQpCiAgewohIAlpZiAoY3h0LT5pc2ZvcmVpZ24gJiYK ISAJCShjb25zdHJhaW50LT5jb250eXBlID09IENPTlNUUl9QUklNQVJZIHx8 CiEgCQkgY29uc3RyYWludC0+Y29udHlwZSA9PSBDT05TVFJfVU5JUVVFIHx8 CiEgCQkgY29uc3RyYWludC0+Y29udHlwZSA9PSBDT05TVFJfRVhDTFVTSU9O IHx8CiEgCQkgY29uc3RyYWludC0+Y29udHlwZSA9PSBDT05TVFJfRk9SRUlH TikpCiAgCQllcmVwb3J0KEVSUk9SLAogIAkJCQkoZXJyY29kZShFUlJDT0RF X0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCiEgCQkJCSBlcnJtc2coInByaW1h cnkga2V5LCB1bmlxdWUsIGV4Y2x1c2lvbiwgb3IgZm9yZWlnbiBrZXkgY29u c3RyYWludHMgYXJlIG5vdCBzdXBwb3J0ZWQgb24gZm9yZWlnbiB0YWJsZXMi KSwKICAJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihjeHQtPnBzdGF0ZSwKICAJ CQkJCQkJCQljb25zdHJhaW50LT5sb2NhdGlvbikpKTsKICAKKioqIGEvc3Jj L2luY2x1ZGUvY29tbWFuZHMvdmFjdXVtLmgKLS0tIGIvc3JjL2luY2x1ZGUv Y29tbWFuZHMvdmFjdXVtLmgKKioqKioqKioqKioqKioqCioqKiAxNDAsMTQ1 ICoqKiogZXh0ZXJuIGludAl2YWN1dW1fbXVsdGl4YWN0X2ZyZWV6ZV9taW5f YWdlOwotLS0gMTQwLDE1NCAtLS0tCiAgZXh0ZXJuIGludAl2YWN1dW1fbXVs dGl4YWN0X2ZyZWV6ZV90YWJsZV9hZ2U7CiAgCiAgCisgLyogUG9zc2libGUg bW9kZXMgZm9yIHZhY3V1bSgpICovCisgdHlwZWRlZiBlbnVtCisgeworIAlW QUNfTU9ERV9BTEwsCQkJCS8qIFZhY3V1bS9hbmFseXplIGFsbCByZWxhdGlv bnMgKi8KKyAJVkFDX01PREVfU0lOR0xFLAkJCS8qIFZhY3V1bS9hbmFseXpl IGEgc3BlY2lmaWMgcmVsYXRpb24gKi8KKyAJVkFDX01PREVfQVVUT1ZBQ1VV TQkJCS8qIEF1dG92YWN1dW0gd29ya2VyICovCisgfSBWYWN1dW1Nb2RlOwor IAorIAogIC8qIGluIGNvbW1hbmRzL3ZhY3V1bS5jICovCiAgZXh0ZXJuIHZv aWQgdmFjdXVtKFZhY3V1bVN0bXQgKnZhY3N0bXQsIE9pZCByZWxpZCwgYm9v bCBkb190b2FzdCwKICAJICAgQnVmZmVyQWNjZXNzU3RyYXRlZ3kgYnN0cmF0 ZWd5LCBib29sIGZvcl93cmFwYXJvdW5kLCBib29sIGlzVG9wTGV2ZWwpOwoq KioqKioqKioqKioqKioKKioqIDE3NCwxODAgKioqKiBleHRlcm4gdm9pZCBs YXp5X3ZhY3V1bV9yZWwoUmVsYXRpb24gb25lcmVsLCBWYWN1dW1TdG10ICp2 YWNzdG10LAogIAkJCQlCdWZmZXJBY2Nlc3NTdHJhdGVneSBic3RyYXRlZ3kp OwogIAogIC8qIGluIGNvbW1hbmRzL2FuYWx5emUuYyAqLwohIGV4dGVybiB2 b2lkIGFuYWx5emVfcmVsKE9pZCByZWxpZCwgVmFjdXVtU3RtdCAqdmFjc3Rt dCwKICAJCQlCdWZmZXJBY2Nlc3NTdHJhdGVneSBic3RyYXRlZ3kpOwogIGV4 dGVybiBib29sIHN0ZF90eXBhbmFseXplKFZhY0F0dHJTdGF0cyAqc3RhdHMp OwogIGV4dGVybiBkb3VibGUgYW5sX3JhbmRvbV9mcmFjdCh2b2lkKTsKLS0t IDE4MywxODkgLS0tLQogIAkJCQlCdWZmZXJBY2Nlc3NTdHJhdGVneSBic3Ry YXRlZ3kpOwogIAogIC8qIGluIGNvbW1hbmRzL2FuYWx5emUuYyAqLwohIGV4 dGVybiB2b2lkIGFuYWx5emVfcmVsKE9pZCByZWxpZCwgVmFjdXVtU3RtdCAq dmFjc3RtdCwgVmFjdXVtTW9kZSB2YWNtb2RlLAogIAkJCUJ1ZmZlckFjY2Vz c1N0cmF0ZWd5IGJzdHJhdGVneSk7CiAgZXh0ZXJuIGJvb2wgc3RkX3R5cGFu YWx5emUoVmFjQXR0clN0YXRzICpzdGF0cyk7CiAgZXh0ZXJuIGRvdWJsZSBh bmxfcmFuZG9tX2ZyYWN0KHZvaWQpOwoqKiogYS9zcmMvaW5jbHVkZS9mb3Jl aWduL2Zkd2FwaS5oCi0tLSBiL3NyYy9pbmNsdWRlL2ZvcmVpZ24vZmR3YXBp LmgKKioqKioqKioqKioqKioqCioqKiAzMSwzNiAqKioqIHR5cGVkZWYgdm9p ZCAoKkdldEZvcmVpZ25QYXRoc19mdW5jdGlvbikgKFBsYW5uZXJJbmZvICpy b290LAotLS0gMzEsNDIgLS0tLQogIAkJCQkJCQkJCQkJCQkgIFJlbE9wdElu Zm8gKmJhc2VyZWwsCiAgCQkJCQkJCQkJCQkJCSAgT2lkIGZvcmVpZ250YWJs ZWlkKTsKICAKKyB0eXBlZGVmIEZvcmVpZ25QYXRoICooKlJlcGFyYW1ldGVy aXplRm9yZWlnblBhdGhfZnVuY3Rpb24pIChQbGFubmVySW5mbyAqcm9vdCwK KyAJCQkJCQkJCQkJCQkJCSBSZWxPcHRJbmZvICpiYXNlcmVsLAorIAkJCQkJ CQkJCQkJCQkJICBPaWQgZm9yZWlnbnRhYmxlaWQsCisgCQkJCQkJCQkJCQkJ CQkJRm9yZWlnblBhdGggKnBhdGgsCisgCQkJCQkJCQkJCQkJCSAgUmVsaWRz IHJlcXVpcmVkX291dGVyKTsKKyAKICB0eXBlZGVmIEZvcmVpZ25TY2FuICoo KkdldEZvcmVpZ25QbGFuX2Z1bmN0aW9uKSAoUGxhbm5lckluZm8gKnJvb3Qs CiAgCQkJCQkJCQkJCQkJCQkgUmVsT3B0SW5mbyAqYmFzZXJlbCwKICAJCQkJ CQkJCQkJCQkJCSAgT2lkIGZvcmVpZ250YWJsZWlkLAoqKioqKioqKioqKioq KioKKioqIDExNywxMjIgKioqKiB0eXBlZGVmIHN0cnVjdCBGZHdSb3V0aW5l Ci0tLSAxMjMsMTI5IC0tLS0KICAJLyogRnVuY3Rpb25zIGZvciBzY2Fubmlu ZyBmb3JlaWduIHRhYmxlcyAqLwogIAlHZXRGb3JlaWduUmVsU2l6ZV9mdW5j dGlvbiBHZXRGb3JlaWduUmVsU2l6ZTsKICAJR2V0Rm9yZWlnblBhdGhzX2Z1 bmN0aW9uIEdldEZvcmVpZ25QYXRoczsKKyAJUmVwYXJhbWV0ZXJpemVGb3Jl aWduUGF0aF9mdW5jdGlvbiBSZXBhcmFtZXRlcml6ZUZvcmVpZ25QYXRoOwog IAlHZXRGb3JlaWduUGxhbl9mdW5jdGlvbiBHZXRGb3JlaWduUGxhbjsKICAJ QmVnaW5Gb3JlaWduU2Nhbl9mdW5jdGlvbiBCZWdpbkZvcmVpZ25TY2FuOwog IAlJdGVyYXRlRm9yZWlnblNjYW5fZnVuY3Rpb24gSXRlcmF0ZUZvcmVpZ25T Y2FuOwoqKiogYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2ZvcmVpZ25f ZGF0YS5vdXQKLS0tIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9mb3Jl aWduX2RhdGEub3V0CioqKioqKioqKioqKioqKgoqKiogNzUwLDc2NSAqKioq IENSRUFURSBUQUJMRSB1c2VfZnQxX2NvbHVtbl90eXBlICh4IGZ0MSk7CiAg QUxURVIgRk9SRUlHTiBUQUJMRSBmdDEgQUxURVIgQ09MVU1OIGM4IFNFVCBE QVRBIFRZUEUgaW50ZWdlcjsJLS0gRVJST1IKICBFUlJPUjogIGNhbm5vdCBh bHRlciBmb3JlaWduIHRhYmxlICJmdDEiIGJlY2F1c2UgY29sdW1uICJ1c2Vf ZnQxX2NvbHVtbl90eXBlLngiIHVzZXMgaXRzIHJvdyB0eXBlCiAgRFJPUCBU QUJMRSB1c2VfZnQxX2NvbHVtbl90eXBlOwohIEFMVEVSIEZPUkVJR04gVEFC TEUgZnQxIEFERCBDT05TVFJBSU5UIGZ0MV9jOV9jaGVjayBDSEVDSyAoYzkg PCAwKTsgLS0gRVJST1IKISBFUlJPUjogIGNvbnN0cmFpbnRzIGFyZSBub3Qg c3VwcG9ydGVkIG9uIGZvcmVpZ24gdGFibGVzCiEgTElORSAxOiBBTFRFUiBG T1JFSUdOIFRBQkxFIGZ0MSBBREQgQ09OU1RSQUlOVCBmdDFfYzlfY2hlY2sg Q0hFQ0sgKGMuLi4KISAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBeCiAgQUxURVIgRk9SRUlHTiBUQUJMRSBmdDEgRFJPUCBDT05TVFJB SU5UIG5vX2NvbnN0OyAgICAgICAgICAgICAgIC0tIEVSUk9SCiEgRVJST1I6 ICAiZnQxIiBpcyBub3QgYSB0YWJsZQogIEFMVEVSIEZPUkVJR04gVEFCTEUg ZnQxIERST1AgQ09OU1RSQUlOVCBJRiBFWElTVFMgbm9fY29uc3Q7CiEgRVJS T1I6ICAiZnQxIiBpcyBub3QgYSB0YWJsZQohIEFMVEVSIEZPUkVJR04gVEFC TEUgZnQxIERST1AgQ09OU1RSQUlOVCBmdDFfYzFfY2hlY2s7CiEgRVJST1I6 ICAiZnQxIiBpcyBub3QgYSB0YWJsZQogIEFMVEVSIEZPUkVJR04gVEFCTEUg ZnQxIFNFVCBXSVRIIE9JRFM7ICAgICAgICAgICAgICAgICAgICAgICAgICAt LSBFUlJPUgogIEVSUk9SOiAgImZ0MSIgaXMgbm90IGEgdGFibGUKICBBTFRF UiBGT1JFSUdOIFRBQkxFIGZ0MSBPV05FUiBUTyByZWdyZXNzX3Rlc3Rfcm9s ZTsKLS0tIDc1MCw3NjEgLS0tLQogIEFMVEVSIEZPUkVJR04gVEFCTEUgZnQx IEFMVEVSIENPTFVNTiBjOCBTRVQgREFUQSBUWVBFIGludGVnZXI7CS0tIEVS Uk9SCiAgRVJST1I6ICBjYW5ub3QgYWx0ZXIgZm9yZWlnbiB0YWJsZSAiZnQx IiBiZWNhdXNlIGNvbHVtbiAidXNlX2Z0MV9jb2x1bW5fdHlwZS54IiB1c2Vz IGl0cyByb3cgdHlwZQogIERST1AgVEFCTEUgdXNlX2Z0MV9jb2x1bW5fdHlw ZTsKISBBTFRFUiBGT1JFSUdOIFRBQkxFIGZ0MSBBREQgQ09OU1RSQUlOVCBm dDFfYzlfY2hlY2sgQ0hFQ0sgKGM5IDwgMCk7CiAgQUxURVIgRk9SRUlHTiBU QUJMRSBmdDEgRFJPUCBDT05TVFJBSU5UIG5vX2NvbnN0OyAgICAgICAgICAg ICAgIC0tIEVSUk9SCiEgRVJST1I6ICBjb25zdHJhaW50ICJub19jb25zdCIg b2YgcmVsYXRpb24gImZ0MSIgZG9lcyBub3QgZXhpc3QKICBBTFRFUiBGT1JF SUdOIFRBQkxFIGZ0MSBEUk9QIENPTlNUUkFJTlQgSUYgRVhJU1RTIG5vX2Nv bnN0OwohIE5PVElDRTogIGNvbnN0cmFpbnQgIm5vX2NvbnN0IiBvZiByZWxh dGlvbiAiZnQxIiBkb2VzIG5vdCBleGlzdCwgc2tpcHBpbmcKISBBTFRFUiBG T1JFSUdOIFRBQkxFIGZ0MSBEUk9QIENPTlNUUkFJTlQgZnQxX2M5X2NoZWNr OwogIEFMVEVSIEZPUkVJR04gVEFCTEUgZnQxIFNFVCBXSVRIIE9JRFM7ICAg ICAgICAgICAgICAgICAgICAgICAgICAtLSBFUlJPUgogIEVSUk9SOiAgImZ0 MSIgaXMgbm90IGEgdGFibGUKICBBTFRFUiBGT1JFSUdOIFRBQkxFIGZ0MSBP V05FUiBUTyByZWdyZXNzX3Rlc3Rfcm9sZTsKKioqIGEvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvZm9yZWlnbl9kYXRhLnNxbAotLS0gYi9zcmMvdGVzdC9yZWdy ZXNzL3NxbC9mb3JlaWduX2RhdGEuc3FsCioqKioqKioqKioqKioqKgoqKiog MzE0LDMyMyAqKioqIEFMVEVSIEZPUkVJR04gVEFCTEUgZnQxIEFMVEVSIENP TFVNTiBjOCBTRVQgU1RBVElTVElDUyAtMTsKICBDUkVBVEUgVEFCTEUgdXNl X2Z0MV9jb2x1bW5fdHlwZSAoeCBmdDEpOwogIEFMVEVSIEZPUkVJR04gVEFC TEUgZnQxIEFMVEVSIENPTFVNTiBjOCBTRVQgREFUQSBUWVBFIGludGVnZXI7 CS0tIEVSUk9SCiAgRFJPUCBUQUJMRSB1c2VfZnQxX2NvbHVtbl90eXBlOwoh IEFMVEVSIEZPUkVJR04gVEFCTEUgZnQxIEFERCBDT05TVFJBSU5UIGZ0MV9j OV9jaGVjayBDSEVDSyAoYzkgPCAwKTsgLS0gRVJST1IKICBBTFRFUiBGT1JF SUdOIFRBQkxFIGZ0MSBEUk9QIENPTlNUUkFJTlQgbm9fY29uc3Q7ICAgICAg ICAgICAgICAgLS0gRVJST1IKICBBTFRFUiBGT1JFSUdOIFRBQkxFIGZ0MSBE Uk9QIENPTlNUUkFJTlQgSUYgRVhJU1RTIG5vX2NvbnN0OwohIEFMVEVSIEZP UkVJR04gVEFCTEUgZnQxIERST1AgQ09OU1RSQUlOVCBmdDFfYzFfY2hlY2s7 CiAgQUxURVIgRk9SRUlHTiBUQUJMRSBmdDEgU0VUIFdJVEggT0lEUzsgICAg ICAgICAgICAgICAgICAgICAgICAgIC0tIEVSUk9SCiAgQUxURVIgRk9SRUlH TiBUQUJMRSBmdDEgT1dORVIgVE8gcmVncmVzc190ZXN0X3JvbGU7CiAgQUxU RVIgRk9SRUlHTiBUQUJMRSBmdDEgT1BUSU9OUyAoRFJPUCBkZWxpbWl0ZXIs IFNFVCBxdW90ZSAnficsIEFERCBlc2NhcGUgJ0AnKTsKLS0tIDMxNCwzMjMg LS0tLQogIENSRUFURSBUQUJMRSB1c2VfZnQxX2NvbHVtbl90eXBlICh4IGZ0 MSk7CiAgQUxURVIgRk9SRUlHTiBUQUJMRSBmdDEgQUxURVIgQ09MVU1OIGM4 IFNFVCBEQVRBIFRZUEUgaW50ZWdlcjsJLS0gRVJST1IKICBEUk9QIFRBQkxF IHVzZV9mdDFfY29sdW1uX3R5cGU7CiEgQUxURVIgRk9SRUlHTiBUQUJMRSBm dDEgQUREIENPTlNUUkFJTlQgZnQxX2M5X2NoZWNrIENIRUNLIChjOSA8IDAp OwogIEFMVEVSIEZPUkVJR04gVEFCTEUgZnQxIERST1AgQ09OU1RSQUlOVCBu b19jb25zdDsgICAgICAgICAgICAgICAtLSBFUlJPUgogIEFMVEVSIEZPUkVJ R04gVEFCTEUgZnQxIERST1AgQ09OU1RSQUlOVCBJRiBFWElTVFMgbm9fY29u c3Q7CiEgQUxURVIgRk9SRUlHTiBUQUJMRSBmdDEgRFJPUCBDT05TVFJBSU5U IGZ0MV9jOV9jaGVjazsKICBBTFRFUiBGT1JFSUdOIFRBQkxFIGZ0MSBTRVQg V0lUSCBPSURTOyAgICAgICAgICAgICAgICAgICAgICAgICAgLS0gRVJST1IK ICBBTFRFUiBGT1JFSUdOIFRBQkxFIGZ0MSBPV05FUiBUTyByZWdyZXNzX3Rl c3Rfcm9sZTsKICBBTFRFUiBGT1JFSUdOIFRBQkxFIGZ0MSBPUFRJT05TIChE Uk9QIGRlbGltaXRlciwgU0VUIHF1b3RlICd+JywgQUREIGVzY2FwZSAnQCcp Owo= --------------080600030109030009040501 Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 8bit MIME-Version: 1.0 -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers --------------080600030109030009040501--