From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.6 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0B812C3F2D2 for ; Fri, 28 Feb 2020 17:13:25 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 645692469F for ; Fri, 28 Feb 2020 17:13:24 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=quicinc.com header.i=@quicinc.com header.b="Ad1m6vUb" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 645692469F Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=quicinc.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:51066 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j7jCV-0006du-H8 for qemu-devel@archiver.kernel.org; Fri, 28 Feb 2020 12:13:23 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:58257) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j7ilZ-0004jl-7i for qemu-devel@nongnu.org; Fri, 28 Feb 2020 11:45:44 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1j7ilO-0006V8-0T for qemu-devel@nongnu.org; Fri, 28 Feb 2020 11:45:32 -0500 Received: from alexa-out-sd-01.qualcomm.com ([199.106.114.38]:13250) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1j7iky-0005Uz-VH for qemu-devel@nongnu.org; Fri, 28 Feb 2020 11:45:21 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=quicinc.com; i=@quicinc.com; q=dns/txt; s=qcdkim; t=1582908296; x=1614444296; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=FhbiVb0LyRDYiC030iK39U33v1SoyG4LAaAQjpUsgqA=; b=Ad1m6vUbUHBVGE1qNJJAI/6GbsQRpNf19I/mnibOZP2FbBHM/7kvK03m +nAMyOBXKn5WMp7x3rAiHoQFkOlW+7w0LIBLC9hd8PSRVFZGSa5IezEfV 5v2YXitwRw1StnmrYKKFqTdIE6e/YSCcPhS7Bk6rGPOkEL++B9DiEqqFv 8=; Received: from unknown (HELO ironmsg02-sd.qualcomm.com) ([10.53.140.142]) by alexa-out-sd-01.qualcomm.com with ESMTP; 28 Feb 2020 08:44:29 -0800 Received: from vu-tsimpson-aus.qualcomm.com (HELO vu-tsimpson1-aus.qualcomm.com) ([10.222.150.1]) by ironmsg02-sd.qualcomm.com with ESMTP; 28 Feb 2020 08:44:28 -0800 Received: by vu-tsimpson1-aus.qualcomm.com (Postfix, from userid 47164) id C7059F0B; Fri, 28 Feb 2020 10:44:28 -0600 (CST) From: Taylor Simpson To: qemu-devel@nongnu.org Subject: [RFC PATCH v2 16/67] Hexagon arch import - instruction semantics definitions Date: Fri, 28 Feb 2020 10:43:12 -0600 Message-Id: <1582908244-304-17-git-send-email-tsimpson@quicinc.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1582908244-304-1-git-send-email-tsimpson@quicinc.com> References: <1582908244-304-1-git-send-email-tsimpson@quicinc.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-detected-operating-system: by eggs.gnu.org: FreeBSD 9.x [fuzzy] X-Received-From: 199.106.114.38 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: riku.voipio@iki.fi, richard.henderson@linaro.org, laurent@vivier.eu, Taylor Simpson , philmd@redhat.com, aleksandar.m.mail@gmail.com Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" SW1wb3J0ZWQgZnJvbSB0aGUgSGV4YWdvbiBhcmNoaXRlY3R1cmUgbGlicmFyeQogICAgaW1wb3J0 ZWQvYWxsaWRlZnMuZGVmICAgICAgICAgIFRvcCBsZXZlbCBpbnN0cnVjdGlvbiBkZWZpbml0aW9u IGZpbGUKICAgIGltcG9ydGVkLyouaWRlZiAgICAgICAgICAgICAgICBJbnN0cnVjdGlvbiBkZWZp bml0aW9uIGZpbGVzClRoZXNlIGZpbGVzIGFyZSBpbnB1dCB0byB0aGUgZmlyc3QgcGhhc2Ugb2Yg dGhlIGdlbmVyYXRvciAoZ2VuX3NlbWFudGljcy5jKQp0byBjcmVhdGUgYSBweXRob24gaW5jbHVk ZSBmaWxlIHdpdGggdGhlIGluc3RydWN0aW9uIHNlbWFudGljcyBhbmQgYXR0cmlidXRlcy4KVGhl IHB5dGhvbiBpbmNsdWRlIGZpbGUgaXMgZmVkIHRvIHRoZSBzZWNvbmQgcGhhc2UgKGRvX3FlbXUu cHkpLgoKU2lnbmVkLW9mZi1ieTogVGF5bG9yIFNpbXBzb24gPHRzaW1wc29uQHF1aWNpbmMuY29t PgotLS0KIHRhcmdldC9oZXhhZ29uL2ltcG9ydGVkL2FsbGlkZWZzLmRlZiAgfCAgIDkxICsrKwog dGFyZ2V0L2hleGFnb24vaW1wb3J0ZWQvYWx1LmlkZWYgICAgICB8IDEzMzUgKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrCiB0YXJnZXQvaGV4YWdvbi9pbXBvcnRlZC9icmFuY2guaWRl ZiAgIHwgIDM0NCArKysrKysrKysKIHRhcmdldC9oZXhhZ29uL2ltcG9ydGVkL2NvbXBhcmUuaWRl ZiAgfCAgNjM5ICsrKysrKysrKysrKysrKysKIHRhcmdldC9oZXhhZ29uL2ltcG9ydGVkL2Zsb2F0 LmlkZWYgICAgfCAgNDk4ICsrKysrKysrKysrKwogdGFyZ2V0L2hleGFnb24vaW1wb3J0ZWQvbGRz dC5pZGVmICAgICB8ICA0MjEgKysrKysrKysrKysKIHRhcmdldC9oZXhhZ29uL2ltcG9ydGVkL21w eS5pZGVmICAgICAgfCAxMjY5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHRhcmdl dC9oZXhhZ29uL2ltcG9ydGVkL3NoaWZ0LmlkZWYgICAgfCAxMjExICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKwogdGFyZ2V0L2hleGFnb24vaW1wb3J0ZWQvc3ViaW5zbnMuaWRlZiB8ICAx NTIgKysrKwogdGFyZ2V0L2hleGFnb24vaW1wb3J0ZWQvc3lzdGVtLmlkZWYgICB8ICAzMDIgKysr KysrKysKIDEwIGZpbGVzIGNoYW5nZWQsIDYyNjIgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUg MTAwNjQ0IHRhcmdldC9oZXhhZ29uL2ltcG9ydGVkL2FsbGlkZWZzLmRlZgogY3JlYXRlIG1vZGUg MTAwNjQ0IHRhcmdldC9oZXhhZ29uL2ltcG9ydGVkL2FsdS5pZGVmCiBjcmVhdGUgbW9kZSAxMDA2 NDQgdGFyZ2V0L2hleGFnb24vaW1wb3J0ZWQvYnJhbmNoLmlkZWYKIGNyZWF0ZSBtb2RlIDEwMDY0 NCB0YXJnZXQvaGV4YWdvbi9pbXBvcnRlZC9jb21wYXJlLmlkZWYKIGNyZWF0ZSBtb2RlIDEwMDY0 NCB0YXJnZXQvaGV4YWdvbi9pbXBvcnRlZC9mbG9hdC5pZGVmCiBjcmVhdGUgbW9kZSAxMDA2NDQg dGFyZ2V0L2hleGFnb24vaW1wb3J0ZWQvbGRzdC5pZGVmCiBjcmVhdGUgbW9kZSAxMDA2NDQgdGFy Z2V0L2hleGFnb24vaW1wb3J0ZWQvbXB5LmlkZWYKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0YXJnZXQv aGV4YWdvbi9pbXBvcnRlZC9zaGlmdC5pZGVmCiBjcmVhdGUgbW9kZSAxMDA2NDQgdGFyZ2V0L2hl eGFnb24vaW1wb3J0ZWQvc3ViaW5zbnMuaWRlZgogY3JlYXRlIG1vZGUgMTAwNjQ0IHRhcmdldC9o ZXhhZ29uL2ltcG9ydGVkL3N5c3RlbS5pZGVmCgpkaWZmIC0tZ2l0IGEvdGFyZ2V0L2hleGFnb24v aW1wb3J0ZWQvYWxsaWRlZnMuZGVmIGIvdGFyZ2V0L2hleGFnb24vaW1wb3J0ZWQvYWxsaWRlZnMu ZGVmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyZjEzYTIKLS0tIC9kZXYv bnVsbAorKysgYi90YXJnZXQvaGV4YWdvbi9pbXBvcnRlZC9hbGxpZGVmcy5kZWYKQEAgLTAsMCAr MSw5MSBAQAorLyoKKyAqICBDb3B5cmlnaHQoYykgMjAxOS0yMDIwIFF1YWxjb21tIElubm92YXRp b24gQ2VudGVyLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFRoaXMgcHJvZ3Jh bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 CisgKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBhcyBwdWJsaXNoZWQgYnkKKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo ZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogIChhdCB5b3VyIG9wdGlvbikgYW55 IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0 aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJS QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICog IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlv dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlCisgKiAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgc2VlIDxodHRwOi8v d3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAqLworCisvKgorICogVG9wIGxldmVsIGluc3RydWN0 aW9uIGRlZmluaXRpb24gZmlsZQorICovCisKKyNkZWZpbmUgREVGX01BUFBJTkcoVEFHLEZST01T WU4sVE9TWU4pIFwKKwlRNklOU04oVEFHLEZST01TWU4sQVRUUklCUyhBX01BUFBJTkcpLCBcCisJ CSJNYXBwaW5nIGZyb20gIiBGUk9NU1lOICIgdG8gIiBUT1NZTiwgXAorCQlmQVNNX01BUChGUk9N U1lOLFRPU1lOKSkKKworI2RlZmluZSBERUZfQ09ORF9NQVBQSU5HKFRBRyxGUk9NU1lOLENPTkQs VE9TWU5BLFRPU1lOQikgXAorICAgICAgICBRNklOU04oVEFHLEZST01TWU4sQVRUUklCUyhBX01B UFBJTkcsQV9DT05ETUFQUElORyksIFwKKwkJIkNvbmRpdGlvbmFsIE1hcHBpbmcgZnJvbSAiIEZS T01TWU4gIiB0byBlaXRoZXIgIiBUT1NZTkEgIiBvciAiIFRPU1lOQiwgXAorCQlmQ09ORF9BU01f TUFQKEZST01TWU4sQ09ORCxUT1NZTkEsVE9TWU5CKSkKKworI2RlZmluZSBERUZfVjJfTUFQUElO RyhUQUcsRlJPTVNZTixUT1NZTikgXAorCVE2SU5TTihUQUcsRlJPTVNZTixBVFRSSUJTKEFfTUFQ UElORyxBX0FSQ0hWMiksIFwKKwkJIk1hcHBpbmcgZnJvbSAiIEZST01TWU4gIiB0byAiIFRPU1lO LCBcCisJCWZBU01fTUFQKEZST01TWU4sVE9TWU4pKQorCisjZGVmaW5lIERFRl9WMl9DT05EX01B UFBJTkcoVEFHLEZST01TWU4sQ09ORCxUT1NZTkEsVE9TWU5CKSBcCisgICAgICAgIFE2SU5TTihU QUcsRlJPTVNZTixBVFRSSUJTKEFfTUFQUElORyxBX0NPTkRNQVBQSU5HLEFfQVJDSFYyKSwgXAor CQkiQ29uZGl0aW9uYWwgTWFwcGluZyBmcm9tICIgRlJPTVNZTiAiIHRvIGVpdGhlciAiIFRPU1lO QSAiIG9yICIgVE9TWU5CLCBcCisJCWZDT05EX0FTTV9NQVAoRlJPTVNZTixDT05ELFRPU1lOQSxU T1NZTkIpKQorCisjZGVmaW5lIERFRl9WM19NQVBQSU5HKFRBRyxGUk9NU1lOLFRPU1lOKSBcCisJ UTZJTlNOKFRBRyxGUk9NU1lOLEFUVFJJQlMoQV9NQVBQSU5HLEFfQVJDSFYzKSwgXAorCQkiTWFw cGluZyBmcm9tICIgRlJPTVNZTiAiIHRvICIgVE9TWU4sIFwKKwkJZkFTTV9NQVAoRlJPTVNZTixU T1NZTikpCisKKyNkZWZpbmUgREVGX1YzX0NPTkRfTUFQUElORyhUQUcsRlJPTVNZTixDT05ELFRP U1lOQSxUT1NZTkIpIFwKKyAgICAgICAgUTZJTlNOKFRBRyxGUk9NU1lOLEFUVFJJQlMoQV9NQVBQ SU5HLEFfQ09ORE1BUFBJTkcsQV9BUkNIVjMpLCBcCisJCSJDb25kaXRpb25hbCBNYXBwaW5nIGZy b20gIiBGUk9NU1lOICIgdG8gZWl0aGVyICIgVE9TWU5BICIgb3IgIiBUT1NZTkIsIFwKKwkJZkNP TkRfQVNNX01BUChGUk9NU1lOLENPTkQsVE9TWU5BLFRPU1lOQikpCisKKyNkZWZpbmUgREVGX1Y0 X01BUFBJTkcoVEFHLEZST01TWU4sVE9TWU4pIFwKKwlRNklOU04oVEFHLEZST01TWU4sQVRUUklC UyhBX01BUFBJTkcsQV9BUkNIVjQpLCBcCisJCSJNYXBwaW5nIGZyb20gIiBGUk9NU1lOICIgdG8g IiBUT1NZTiwgXAorCQlmQVNNX01BUChGUk9NU1lOLFRPU1lOKSkKKworI2RlZmluZSBERUZfVjRf Q09ORF9NQVBQSU5HKFRBRyxGUk9NU1lOLENPTkQsVE9TWU5BLFRPU1lOQikgXAorICAgICAgICBR NklOU04oVEFHLEZST01TWU4sQVRUUklCUyhBX01BUFBJTkcsQV9DT05ETUFQUElORyxBX0FSQ0hW NCksIFwKKwkJIkNvbmRpdGlvbmFsIE1hcHBpbmcgZnJvbSAiIEZST01TWU4gIiB0byBlaXRoZXIg IiBUT1NZTkEgIiBvciAiIFRPU1lOQiwgXAorCQlmQ09ORF9BU01fTUFQKEZST01TWU4sQ09ORCxU T1NZTkEsVE9TWU5CKSkKKworI2RlZmluZSBERUZfVjVfTUFQUElORyhUQUcsRlJPTVNZTixUT1NZ TikgXAorCVE2SU5TTihUQUcsRlJPTVNZTixBVFRSSUJTKEFfTUFQUElORyxBX0FSQ0hWNSksIFwK KwkJIk1hcHBpbmcgZnJvbSAiIEZST01TWU4gIiB0byAiIFRPU1lOLCBcCisJCWZBU01fTUFQKEZS T01TWU4sVE9TWU4pKQorCisjZGVmaW5lIERFRl9WNV9DT05EX01BUFBJTkcoVEFHLEZST01TWU4s Q09ORCxUT1NZTkEsVE9TWU5CKSBcCisgICAgICAgIFE2SU5TTihUQUcsRlJPTVNZTixBVFRSSUJT KEFfTUFQUElORyxBX0NPTkRNQVBQSU5HLEFfQVJDSFY1KSwgXAorCQkiQ29uZGl0aW9uYWwgTWFw cGluZyBmcm9tICIgRlJPTVNZTiAiIHRvIGVpdGhlciAiIFRPU1lOQSAiIG9yICIgVE9TWU5CLCBc CisJCWZDT05EX0FTTV9NQVAoRlJPTVNZTixDT05ELFRPU1lOQSxUT1NZTkIpKQorCisjZGVmaW5l IERFRl9WRUNYX01BUFBJTkcoVEFHLEZST01TWU4sVE9TWU4pIFwKKwlFWFRJTlNOKFRBRyxGUk9N U1lOLEFUVFJJQlMoQV9NQVBQSU5HLEFfVkVDWCksIFwKKwkJIlZFQ1ggTWFwcGluZyBmcm9tICIg RlJPTVNZTiAiIHRvICIgVE9TWU4sIFwKKwkJZkFTTV9NQVAoRlJPTVNZTixUT1NZTikpCisKKyNk ZWZpbmUgREVGX0NWSV9NQVBQSU5HKFRBRyxGUk9NU1lOLFRPU1lOKSBcCisJUTZJTlNOKFRBRyxG Uk9NU1lOLEFUVFJJQlMoQV9NQVBQSU5HLEFfQ1ZJKSwgXAorCQkiQ1ZJIE1hcHBpbmcgZnJvbSAi IEZST01TWU4gIiB0byAiIFRPU1lOLCBcCisJCWZBU01fTUFQKEZST01TWU4sVE9TWU4pKQorCisK KyNpbmNsdWRlICJicmFuY2guaWRlZiIKKyNpbmNsdWRlICJsZHN0LmlkZWYiCisjaW5jbHVkZSAi Y29tcGFyZS5pZGVmIgorI2luY2x1ZGUgIm1weS5pZGVmIgorI2luY2x1ZGUgImFsdS5pZGVmIgor I2luY2x1ZGUgImZsb2F0LmlkZWYiCisjaW5jbHVkZSAic2hpZnQuaWRlZiIKKyNpbmNsdWRlICJz eXN0ZW0uaWRlZiIKKyNpbmNsdWRlICJzdWJpbnNucy5pZGVmIgpkaWZmIC0tZ2l0IGEvdGFyZ2V0 L2hleGFnb24vaW1wb3J0ZWQvYWx1LmlkZWYgYi90YXJnZXQvaGV4YWdvbi9pbXBvcnRlZC9hbHUu aWRlZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMTdkNTJmCi0tLSAvZGV2 L251bGwKKysrIGIvdGFyZ2V0L2hleGFnb24vaW1wb3J0ZWQvYWx1LmlkZWYKQEAgLTAsMCArMSwx MzM1IEBACisvKgorICogIENvcHlyaWdodChjKSAyMDE5LTIwMjAgUXVhbGNvbW0gSW5ub3ZhdGlv biBDZW50ZXIsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVGhpcyBwcm9ncmFt IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK KyAqICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieQorICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl ciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAgKGF0IHlvdXIgb3B0aW9uKSBhbnkg bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRo ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiAg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91 IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UKKyAqICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCBzZWUgPGh0dHA6Ly93 d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICovCisKKy8qCisgKiBBTFUgSW5zdHJ1Y3Rpb25zCisg Ki8KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8K Ky8qIEFkZC9TdWIgaW5zdHJ1Y3Rpb25zCQkgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitRNklOU04oQTJfYWRkLCJSZDMyPWFkZChS czMyLFJ0MzIpIixBVFRSSUJTKCksCisiQWRkIDMyLWJpdCByZWdpc3RlcnMiLAoreyBSZFY9UnNW K1J0Vjt9KQorCitRNklOU04oQTJfc3ViLCJSZDMyPXN1YihSdDMyLFJzMzIpIixBVFRSSUJTKCks CisiU3VidHJhY3QgMzItYml0IHJlZ2lzdGVycyIsCit7IFJkVj1SdFYtUnNWO30pCisKKyNkZWZp bmUgQ09ORF9BTFUoVEFHLE9QRVIsREVTQ1IsU0VNQU5USUNTKVwKK1E2SU5TTihUQUcjI3QsImlm IChQdTQpICJPUEVSLEFUVFJJQlMoQV9BUkNIVjIpLERFU0NSLHtpZihmTFNCT0xEKFB1Vikpe1NF TUFOVElDUzt9IGVsc2Uge0NBTkNFTDt9fSlcCitRNklOU04oVEFHIyNmLCJpZiAoIVB1NCkgIk9Q RVIsQVRUUklCUyhBX0FSQ0hWMiksREVTQ1Ise2lmKGZMU0JPTEROT1QoUHVWKSl7U0VNQU5USUNT O30gZWxzZSB7Q0FOQ0VMO319KVwKK1E2SU5TTihUQUcjI3RuZXcsImlmIChQdTQubmV3KSAiIE9Q RVIsQVRUUklCUyhBX0FSQ0hWMiksREVTQ1Ise2lmKGZMU0JORVcoUHVOKSl7U0VNQU5USUNTO30g ZWxzZSB7Q0FOQ0VMO319KVwKK1E2SU5TTihUQUcjI2ZuZXcsImlmICghUHU0Lm5ldykgIk9QRVIs QVRUUklCUyhBX0FSQ0hWMiksREVTQ1Ise2lmKGZMU0JORVdOT1QoUHVOKSl7U0VNQU5USUNTO30g ZWxzZSB7Q0FOQ0VMO319KQorCitDT05EX0FMVShBMl9wYWRkLCJSZDMyPWFkZChSczMyLFJ0MzIp IiwiQ29uZGl0aW9uYWxseSBBZGQgMzItYml0IHJlZ2lzdGVycyIsUmRWPVJzVitSdFYpCitDT05E X0FMVShBMl9wc3ViLCJSZDMyPXN1YihSdDMyLFJzMzIpIiwiQ29uZGl0aW9uYWxseSBTdWJ0cmFj dCAzMi1iaXQgcmVnaXN0ZXJzIixSZFY9UnRWLVJzVikKK0NPTkRfQUxVKEEyX3BhZGRpLCJSZDMy PWFkZChSczMyLCNzOCkiLCJDb25kaXRpb25hbGx5IEFkZCBSZWdpc3RlciBhbmQgaW1tZWRpYXRl IixmSU1NRVhUKHNpVik7IFJkVj1Sc1Yrc2lWKQorQ09ORF9BTFUoQTJfcHhvciwiUmQzMj14b3Io UnMzMixSdDMyKSIsIkNvbmRpdGlvbmFsbHkgWE9SIHJlZ2lzdGVycyIsUmRWPVJzVl5SdFYpOwor Q09ORF9BTFUoQTJfcGFuZCwiUmQzMj1hbmQoUnMzMixSdDMyKSIsIkNvbmRpdGlvbmFsbHkgQU5E IHJlZ2lzdGVycyIsUmRWPVJzViZSdFYpOworQ09ORF9BTFUoQTJfcG9yLCJSZDMyPW9yKFJzMzIs UnQzMikiLCJDb25kaXRpb25hbGx5IE9SIHJlZ2lzdGVycyIsUmRWPVJzVnxSdFYpOworCitDT05E X0FMVShBNF9wc3h0YiwiUmQzMj1zeHRiKFJzMzIpIiwiQ29uZGl0aW9uYWxseSBzaWduLWV4dGVu ZCBieXRlIiwgUmRWPWZTWFROKDgsMzIsUnNWKSk7CitDT05EX0FMVShBNF9wenh0YiwiUmQzMj16 eHRiKFJzMzIpIiwiQ29uZGl0aW9uYWxseSB6ZXJvLWV4dGVuZCBieXRlIiwgUmRWPWZaWFROKDgs MzIsUnNWKSk7CitDT05EX0FMVShBNF9wc3h0aCwiUmQzMj1zeHRoKFJzMzIpIiwiQ29uZGl0aW9u YWxseSBzaWduLWV4dGVuZCBoYWxmd29yZCIsIFJkVj1mU1hUTigxNiwzMixSc1YpKTsKK0NPTkRf QUxVKEE0X3B6eHRoLCJSZDMyPXp4dGgoUnMzMikiLCJDb25kaXRpb25hbGx5IHplcm8tZXh0ZW5k IGhhbGZ3b3JkIiwgUmRWPWZaWFROKDE2LDMyLFJzVikpOworQ09ORF9BTFUoQTRfcGFzbGgsIlJk MzI9YXNsaChSczMyKSIsIkNvbmRpdGlvbmFsbHkgemVyby1leHRlbmQgaGFsZndvcmQiLCBSZFY9 UnNWPDwxNik7CitDT05EX0FMVShBNF9wYXNyaCwiUmQzMj1hc3JoKFJzMzIpIiwiQ29uZGl0aW9u YWxseSB6ZXJvLWV4dGVuZCBoYWxmd29yZCIsIFJkVj1Sc1Y+PjE2KTsKKworCitERUZfVjJfTUFQ UElORyhBMl90ZnJ0LCAgICJpZiAoUHU0KSBSZDMyPVJzMzIiLCJpZiAoUHU0KSBSZDMyPWFkZChS czMyLCMwKSIpCitERUZfVjJfTUFQUElORyhBMl90ZnJmLCAgICJpZiAoIVB1NCkgUmQzMj1SczMy IiwiaWYgKCFQdTQpIFJkMzI9YWRkKFJzMzIsIzApIikKK0RFRl9WMl9NQVBQSU5HKEEyX3RmcnRu ZXcsImlmIChQdTQubmV3KSBSZDMyPVJzMzIiLCJpZiAoUHU0Lm5ldykgUmQzMj1hZGQoUnMzMiwj MCkiKQorREVGX1YyX01BUFBJTkcoQTJfdGZyZm5ldywiaWYgKCFQdTQubmV3KSBSZDMyPVJzMzIi LCJpZiAoIVB1NC5uZXcpIFJkMzI9YWRkKFJzMzIsIzApIikKKworCitERUZfVjJfTUFQUElORyhB Ml90ZnJwdCwgICAiaWYgKFB1NCkgUmRkMzI9UnNzMzIiLCJpZiAoUHU0KSBSZGQzMj1jb21iaW5l KFJzcy5IMzIsUnNzLkwzMikiKQorREVGX1YyX01BUFBJTkcoQTJfdGZycGYsICAgImlmICghUHU0 KSBSZGQzMj1Sc3MzMiIsImlmICghUHU0KSBSZGQzMj1jb21iaW5lKFJzcy5IMzIsUnNzLkwzMiki KQorREVGX1YyX01BUFBJTkcoQTJfdGZycHRuZXcsImlmIChQdTQubmV3KSBSZGQzMj1Sc3MzMiIs ImlmIChQdTQubmV3KSBSZGQzMj1jb21iaW5lKFJzcy5IMzIsUnNzLkwzMikiKQorREVGX1YyX01B UFBJTkcoQTJfdGZycGZuZXcsImlmICghUHU0Lm5ldykgUmRkMzI9UnNzMzIiLCJpZiAoIVB1NC5u ZXcpIFJkZDMyPWNvbWJpbmUoUnNzLkgzMixSc3MuTDMyKSIpCisKKworUTZJTlNOKEEyX2FkZHNh dCwiUmQzMj1hZGQoUnMzMixSdDMyKTpzYXQiLEFUVFJJQlMoKSwKKyJBZGQgMzItYml0IHJlZ2lz dGVycyB3aXRoIHNhdHVyYXRpb24iLAoreyBSZFY9ZlNBVChmU0UzMl82NChSc1YpK2ZTRTMyXzY0 KFJ0VikpOyB9KQorCitRNklOU04oQTJfc3Vic2F0LCJSZDMyPXN1YihSdDMyLFJzMzIpOnNhdCIs QVRUUklCUygpLAorIlN1YnRyYWN0IDMyLWJpdCByZWdpc3RlcnMgd2l0aCBzYXR1cmF0aW9uIiwK K3sgUmRWPWZTQVQoZlNFMzJfNjQoUnRWKSAtIGZTRTMyXzY0KFJzVikpOyB9KQorCisKK1E2SU5T TihBMl9hZGRpLCJSZDMyPWFkZChSczMyLCNzMTYpIixBVFRSSUJTKCksCisiQWRkIGEgc2lnbmVk IGltbWVkaWF0ZSB0byBhIHJlZ2lzdGVyIiwKK3sgZklNTUVYVChzaVYpOyBSZFY9UnNWK3NpVjt9 KQorCisKK1E2SU5TTihDNF9hZGRpcGMsIlJkMzI9YWRkKHBjLCN1NikiLEFUVFJJQlMoKSwKKyJB ZGQgaW1tZWRpYXRlIHRvIFBDIiwKK3sgUmRWPWZSRUFEX1BDKCkrZklNTUVYVCh1aVYpO30pCisK KworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8q IFNpbmdsZS1wcmVjaXNpb24gSEwgZm9ybXMJCSAgKi8KKy8qIFRoZXNlIGluc25zIGFuZCB0aGUg U1AgbXB5IGFyZSB0aGUgb25lcyAgICAqLworLyogdGhhdCBjYW4gZG8gLkhMIHN0dWZmCQkgICAg ICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisj ZGVmaW5lIFNURF9ITF9JTlNOKFRBRyxPUEVSLEFPUEVSLEFUUixTRU0pXAorUTZJTlNOKEEyXyMj VEFHIyNfbGwsIE9QRVIiKFJ0LkwzMixScy5MMzIpIkFPUEVSLCAgICBBVFIsIiIse1NFTShmR0VU SEFMRigwLFJ0ViksZkdFVEhBTEYoMCxSc1YpKTt9KVwKK1E2SU5TTihBMl8jI1RBRyMjX2xoLCBP UEVSIihSdC5MMzIsUnMuSDMyKSJBT1BFUiwgICAgQVRSLCIiLHtTRU0oZkdFVEhBTEYoMCxSdFYp LGZHRVRIQUxGKDEsUnNWKSk7fSlcCitRNklOU04oQTJfIyNUQUcjI19obCwgT1BFUiIoUnQuSDMy LFJzLkwzMikiQU9QRVIsICAgIEFUUiwiIix7U0VNKGZHRVRIQUxGKDEsUnRWKSxmR0VUSEFMRigw LFJzVikpO30pXAorUTZJTlNOKEEyXyMjVEFHIyNfaGgsIE9QRVIiKFJ0LkgzMixScy5IMzIpIkFP UEVSLCAgICBBVFIsIiIse1NFTShmR0VUSEFMRigxLFJ0ViksZkdFVEhBTEYoMSxSc1YpKTt9KQor CisjZGVmaW5lIFNVQlNURF9ITF9JTlNOKFRBRyxPUEVSLEFPUEVSLEFUUixTRU0pXAorUTZJTlNO KEEyXyMjVEFHIyNfbGwsIE9QRVIiKFJ0LkwzMixScy5MMzIpIkFPUEVSLCAgICBBVFIsIiIse1NF TShmR0VUSEFMRigwLFJ0ViksZkdFVEhBTEYoMCxSc1YpKTt9KVwKK1E2SU5TTihBMl8jI1RBRyMj X2hsLCBPUEVSIihSdC5MMzIsUnMuSDMyKSJBT1BFUiwgICAgQVRSLCIiLHtTRU0oZkdFVEhBTEYo MCxSdFYpLGZHRVRIQUxGKDEsUnNWKSk7fSkKKworCisjdW5kZWYgSExTRU0KKyNkZWZpbmUgSExT RU0oQSxCKSBSZFY9ZlNYVE4oMTYsMzIsKEErQikpCitTVUJTVERfSExfSU5TTihhZGRoX2wxNiwi UmQzMj1hZGQiLCIiLEFUVFJJQlMoKSxITFNFTSkKKworI3VuZGVmIEhMU0VNCisjZGVmaW5lIEhM U0VNKEEsQikgUmRWPWZTQVRIKEErQikKK1NVQlNURF9ITF9JTlNOKGFkZGhfbDE2X3NhdCwiUmQz Mj1hZGQiLCI6c2F0IixBVFRSSUJTKCksSExTRU0pCisKKyN1bmRlZiBITFNFTQorI2RlZmluZSBI TFNFTShBLEIpIFJkVj1mU1hUTigxNiwzMiwoQS1CKSkKK1NVQlNURF9ITF9JTlNOKHN1YmhfbDE2 LCJSZDMyPXN1YiIsIiIsQVRUUklCUygpLEhMU0VNKQorCisjdW5kZWYgSExTRU0KKyNkZWZpbmUg SExTRU0oQSxCKSBSZFY9ZlNBVEgoQS1CKQorU1VCU1REX0hMX0lOU04oc3ViaF9sMTZfc2F0LCJS ZDMyPXN1YiIsIjpzYXQiLEFUVFJJQlMoKSxITFNFTSkKKworI3VuZGVmIEhMU0VNCisjZGVmaW5l IEhMU0VNKEEsQikgUmRWPShBK0IpPDwxNgorU1REX0hMX0lOU04oYWRkaF9oMTYsIlJkMzI9YWRk IiwiOjw8MTYiLEFUVFJJQlMoKSxITFNFTSkKKworI3VuZGVmIEhMU0VNCisjZGVmaW5lIEhMU0VN KEEsQikgUmRWPShmU0FUSChBK0IpKTw8MTYKK1NURF9ITF9JTlNOKGFkZGhfaDE2X3NhdCwiUmQz Mj1hZGQiLCI6c2F0Ojw8MTYiLEFUVFJJQlMoKSxITFNFTSkKKworI3VuZGVmIEhMU0VNCisjZGVm aW5lIEhMU0VNKEEsQikgUmRWPShBLUIpPDwxNgorU1REX0hMX0lOU04oc3ViaF9oMTYsIlJkMzI9 c3ViIiwiOjw8MTYiLEFUVFJJQlMoKSxITFNFTSkKKworI3VuZGVmIEhMU0VNCisjZGVmaW5lIEhM U0VNKEEsQikgUmRWPShmU0FUSChBLUIpKTw8MTYKK1NURF9ITF9JTlNOKHN1YmhfaDE2X3NhdCwi UmQzMj1zdWIiLCI6c2F0Ojw8MTYiLEFUVFJJQlMoKSxITFNFTSkKKworCisKKworUTZJTlNOKEEy X2FzbGgsIlJkMzI9YXNsaChSczMyKSIsQVRUUklCUygpLAorIkFyaXRobWV0aWMgU2hpZnQgTGVm dCBieSBIYWxmd29yZCIseyBSZFY9UnNWPDwxNjsgfSkKKworUTZJTlNOKEEyX2FzcmgsIlJkMzI9 YXNyaChSczMyKSIsQVRUUklCUygpLAorIkFyaXRobWV0aWMgU2hpZnQgUmlnaHQgYnkgSGFsZndv cmQiLHsgUmRWPVJzVj4+MTY7IH0pCisKKworLyogNjQtYml0IHZlcnNpb25zICovCisKK1E2SU5T TihBMl9hZGRwLCJSZGQzMj1hZGQoUnNzMzIsUnR0MzIpIixBVFRSSUJTKCksCisiQWRkIiwKK3sg UmRkVj1Sc3NWK1J0dFY7fSkKKworUTZJTlNOKEEyX2FkZHBzYXQsIlJkZDMyPWFkZChSc3MzMixS dHQzMik6c2F0IixBVFRSSUJTKEFfQVJDSFYzKSwKKyJBZGQiLAoreyBmQUREU0FUNjQoUmRkVixS c3NWLFJ0dFYpO30pCisKK1E2SU5TTihBMl9hZGRzcGwsIlJkZDMyPWFkZChSc3MzMixSdHQzMik6 cmF3OmxvIixBVFRSSUJTKEFfQVJDSFYzKSwKKyJBZGQiLAoreyBSZGRWPVJ0dFYrZlNYVE4oMzIs NjQsZkdFVFdPUkQoMCxSc3NWKSk7fSkKKworUTZJTlNOKEEyX2FkZHNwaCwiUmRkMzI9YWRkKFJz czMyLFJ0dDMyKTpyYXc6aGkiLEFUVFJJQlMoQV9BUkNIVjMpLAorIkFkZCIsCit7IFJkZFY9UnR0 VitmU1hUTigzMiw2NCxmR0VUV09SRCgxLFJzc1YpKTt9KQorCitERUZfVjNfQ09ORF9NQVBQSU5H KEEyX2FkZHNwLCJSZGQzMj1hZGQoUnMzMixSdHQzMikiLCJSczMyICYgMSIsIlJkZDMyPWFkZChS c3MzMixSdHQzMik6cmF3OmhpIiwiUmRkMzI9YWRkKFJzczMyLFJ0dDMyKTpyYXc6bG8iKQorCitR NklOU04oQTJfc3VicCwiUmRkMzI9c3ViKFJ0dDMyLFJzczMyKSIsQVRUUklCUygpLAorIlN1YiIs Cit7IFJkZFY9UnR0Vi1Sc3NWO30pCisKKy8qIDY0LWJpdCB3aXRoIGNhcnJ5ICovCisKK1E2SU5T TihBNF9hZGRwX2MsIlJkZDMyPWFkZChSc3MzMixSdHQzMixQeDQpOmNhcnJ5IixBVFRSSUJTKEFf UkVTVFJJQ1RfTEFURVBSRUQsQV9OT1RFX0xBVEVQUkVEKSwiQWRkIHdpdGggQ2FycnkiLAorewor ICBmUFJFRFVTRV9USU1JTkcoKTsKKyAgUmRkViA9IFJzc1YgKyBSdHRWICsgZkxTQk9MRChQeFYp OworICBQeFYgPSBmOEJJVFNPRihmQ0FSUllfRlJPTV9BREQoUnNzVixSdHRWLGZMU0JPTEQoUHhW KSkpOworICBmSElERShNQVJLX0xBVEVfUFJFRF9XUklURShQeE4pKQorfSkKKworUTZJTlNOKEE0 X3N1YnBfYywiUmRkMzI9c3ViKFJzczMyLFJ0dDMyLFB4NCk6Y2FycnkiLEFUVFJJQlMoQV9SRVNU UklDVF9MQVRFUFJFRCxBX05PVEVfTEFURVBSRUQpLCJTdWIgd2l0aCBDYXJyeSIsCit7CisgIGZQ UkVEVVNFX1RJTUlORygpOworICBSZGRWID0gUnNzViArIH5SdHRWICsgZkxTQk9MRChQeFYpOwor ICBQeFYgPSBmOEJJVFNPRihmQ0FSUllfRlJPTV9BREQoUnNzVix+UnR0VixmTFNCT0xEKFB4Vikp KTsKKyAgZkhJREUoTUFSS19MQVRFX1BSRURfV1JJVEUoUHhOKSkKK30pCisKKworLyogTkVHIGFu ZCBBQlMgKi8KKworREVGX01BUFBJTkcoQTJfbmVnLCJSZDMyPW5lZyhSczMyKSIsIlJkMzI9c3Vi KCMwLFJzMzIpIikKKworCitRNklOU04oQTJfbmVnc2F0LCJSZDMyPW5lZyhSczMyKTpzYXQiLEFU VFJJQlMoKSwKKyJBcml0aG1ldGljIG5lZ2F0ZSByZWdpc3RlciIsIHsgUmRWID0gZlNBVCgtZkNB U1Q4cyhSc1YpKTsgfSkKKworUTZJTlNOKEEyX2FicywiUmQzMj1hYnMoUnMzMikiLEFUVFJJQlMo KSwKKyJBYnNvbHV0ZSBWYWx1ZSByZWdpc3RlciIsIHsgUmRWID0gZkFCUyhSc1YpOyB9KQorCitR NklOU04oQTJfYWJzc2F0LCJSZDMyPWFicyhSczMyKTpzYXQiLEFUVFJJQlMoKSwKKyJBcml0aG1l dGljIG5lZ2F0ZSByZWdpc3RlciIsIHsgUmRWID0gZlNBVChmQUJTKGZDQVNUNF84cyhSc1YpKSk7 IH0pCisKK1E2SU5TTihBMl92Y29uaiwiUmRkMzI9dmNvbmooUnNzMzIpOnNhdCIsQVRUUklCUyhB X0FSQ0hWMiksCisiVmVjdG9yIENvbXBsZXggY29uanVnYXRlIG9mIFJzcyIsCit7ICBmU0VUSEFM RigxLFJkZFYsZlNBVE4oMTYsLWZHRVRIQUxGKDEsUnNzVikpKTsKKyAgIGZTRVRIQUxGKDAsUmRk VixmR0VUSEFMRigwLFJzc1YpKTsKKyAgIGZTRVRIQUxGKDMsUmRkVixmU0FUTigxNiwtZkdFVEhB TEYoMyxSc3NWKSkpOworICAgZlNFVEhBTEYoMixSZGRWLGZHRVRIQUxGKDIsUnNzVikpOworfSkK KworCisvKiA2NC1iaXQgdmVyc2lvbnMgKi8KKworUTZJTlNOKEEyX25lZ3AsIlJkZDMyPW5lZyhS c3MzMikiLEFUVFJJQlMoKSwKKyJBcml0aG1ldGljIG5lZ2F0ZSByZWdpc3RlciIsIHsgUmRkViA9 IC1Sc3NWOyB9KQorCitRNklOU04oQTJfYWJzcCwiUmRkMzI9YWJzKFJzczMyKSIsQVRUUklCUygp LAorIkFic29sdXRlIFZhbHVlIHJlZ2lzdGVyIiwgeyBSZGRWID0gZkFCUyhSc3NWKTsgfSkKKwor CisvKiBNSU4gYW5kIE1BWCAgUiAqLworCitRNklOU04oQTJfbWF4LCJSZDMyPW1heChSczMyLFJ0 MzIpIixBVFRSSUJTKCksCisiTWF4aW11bSBvZiB0d28gcmVnaXN0ZXJzIiwKK3sgUmRWID0gZk1B WChSc1YsUnRWKTsgfSkKKworUTZJTlNOKEEyX21heHUsIlJkMzI9bWF4dShSczMyLFJ0MzIpIixB VFRSSUJTKEFfSU5UUklOU0lDX1JFVFVSTlNfVU5TSUdORUQpLAorIk1heGltdW0gb2YgdHdvIHJl Z2lzdGVycyAodW5zaWduZWQpIiwKK3sgUmRWID0gZk1BWChmQ0FTVDR1KFJzViksZkNBU1Q0dShS dFYpKTsgfSkKKworUTZJTlNOKEEyX21pbiwiUmQzMj1taW4oUnQzMixSczMyKSIsQVRUUklCUygp LAorIk1pbmltdW0gb2YgdHdvIHJlZ2lzdGVycyIsCit7IFJkViA9IGZNSU4oUnRWLFJzVik7IH0p CisKK1E2SU5TTihBMl9taW51LCJSZDMyPW1pbnUoUnQzMixSczMyKSIsQVRUUklCUyhBX0lOVFJJ TlNJQ19SRVRVUk5TX1VOU0lHTkVEKSwKKyJNaW5pbXVtIG9mIHR3byByZWdpc3RlcnMgKHVuc2ln bmVkKSIsCit7IFJkViA9IGZNSU4oZkNBU1Q0dShSdFYpLGZDQVNUNHUoUnNWKSk7IH0pCisKKy8q IE1JTiBhbmQgTUFYIFBhaXJzICovCisjaWYgMQorUTZJTlNOKEEyX21heHAsIlJkZDMyPW1heChS c3MzMixSdHQzMikiLEFUVFJJQlMoQV9BUkNIVjMpLAorIk1heGltdW0gb2YgdHdvIHJlZ2lzdGVy IHBhaXJzIiwKK3sgUmRkViA9IGZNQVgoUnNzVixSdHRWKTsgfSkKKworUTZJTlNOKEEyX21heHVw LCJSZGQzMj1tYXh1KFJzczMyLFJ0dDMyKSIsQVRUUklCUyhBX0lOVFJJTlNJQ19SRVRVUk5TX1VO U0lHTkVELEFfQVJDSFYzKSwKKyJNYXhpbXVtIG9mIHR3byByZWdpc3RlciBwYWlycyAodW5zaWdu ZWQpIiwKK3sgUmRkViA9IGZNQVgoZkNBU1Q4dShSc3NWKSxmQ0FTVDh1KFJ0dFYpKTsgfSkKKwor UTZJTlNOKEEyX21pbnAsIlJkZDMyPW1pbihSdHQzMixSc3MzMikiLEFUVFJJQlMoQV9BUkNIVjMp LAorIk1pbmltdW0gb2YgdHdvIHJlZ2lzdGVyIHBhaXJzIiwKK3sgUmRkViA9IGZNSU4oUnR0VixS c3NWKTsgfSkKKworUTZJTlNOKEEyX21pbnVwLCJSZGQzMj1taW51KFJ0dDMyLFJzczMyKSIsQVRU UklCUyhBX0lOVFJJTlNJQ19SRVRVUk5TX1VOU0lHTkVELEFfQVJDSFYzKSwKKyJNaW5pbXVtIG9m IHR3byByZWdpc3RlciBwYWlycyAodW5zaWduZWQpIiwKK3sgUmRkViA9IGZNSU4oZkNBU1Q4dShS dHRWKSxmQ0FTVDh1KFJzc1YpKTsgfSkKKyNlbmRpZgorCisvKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIFJlZ2lzdGVyIGFuZCBJbW1lZGlhdGUgVHJh bnNmZXJzCSAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKi8KKworUTZJTlNOKEEyX25vcCwibm9wIixBVFRSSUJTKEFfSVRfTk9QKSwKKyJOb3AgKDMy LWJpdCBlbmNvZGluZykiLAorIGZISURFKCB7IGZOT1BfRVhFQ1VURUQgfSAgKSkKKworCitRNklO U04oQTRfZXh0LCJpbW1leHQoI3UyNjo2KSIsQVRUUklCUyhBX0lUX0VYVEVOREVSKSwKKyJUaGlz IGluc3RydWN0aW9uIGNhcnJpZXMgdGhlIDI2IG1vc3Qtc2lnbmlmaWNhbnQgaW1tZWRpYXRlIGJp dHMgZm9yIHRoZSBuZXh0IGluc3RydWN0aW9uIiwKK3sgZkhJREUoKTsgfSkKKworCitRNklOU04o QTJfdGZyLCJSZDMyPVJzMzIiLEFUVFJJQlMoKSwKKyJ0ZnIgcmVnaXN0ZXIiLHsgUmRWPVJzVjt9 KQorCitRNklOU04oQTJfdGZyc2ksIlJkMzI9I3MxNiIsQVRUUklCUygpLAorInRyYW5zZmVyIHNp Z25lZCBpbW1lZGlhdGUgdG8gcmVnaXN0ZXIiLHsgZklNTUVYVChzaVYpOyBSZFY9c2lWO30pCisK K0RFRl9NQVBQSU5HKEEyX3RmcnAsIlJkZDMyPVJzczMyIiwiUmRkMzI9Y29tYmluZShSc3MuSDMy LFJzcy5MMzIpIikKK0RFRl9WMl9DT05EX01BUFBJTkcoQTJfdGZycGksIlJkZDMyPSNzOCIsIiNz ODwwIiwiUmRkMzI9Y29tYmluZSgjLTEsI3M4KSIsIlJkZDMyPWNvbWJpbmUoIzAsI3M4KSIpCitE RUZfTUFQUElORyhBMl96eHRiLCJSZDMyPXp4dGIoUnMzMikiLCJSZDMyPWFuZChSczMyLCMyNTUp IikKKworUTZJTlNOKEEyX3N4dGIsIlJkMzI9c3h0YihSczMyKSIsQVRUUklCUygpLAorIlNpZ24g ZXh0ZW5kIGJ5dGUiLCB7UmRWID0gZlNYVE4oOCwzMixSc1YpO30pCisKK1E2SU5TTihBMl96eHRo LCJSZDMyPXp4dGgoUnMzMikiLEFUVFJJQlMoKSwKKyJaZXJvIGV4dGVuZCBoYWxmIiwge1JkViA9 IGZaWFROKDE2LDMyLFJzVik7fSkKKworUTZJTlNOKEEyX3N4dGgsIlJkMzI9c3h0aChSczMyKSIs QVRUUklCUygpLAorIlNpZ24gZXh0ZW5kIGhhbGYiLCB7UmRWID0gZlNYVE4oMTYsMzIsUnNWKTt9 KQorCitRNklOU04oQTJfY29tYmluZXcsIlJkZDMyPWNvbWJpbmUoUnMzMixSdDMyKSIsQVRUUklC UyhBX1JPUFNfMiksCisiQ29tYmluZSB0d28gd29yZHMgaW50byBhIHJlZ2lzdGVyIHBhaXIiLAor eyBmU0VUV09SRCgwLFJkZFYsUnRWKTsKKyAgZlNFVFdPUkQoMSxSZGRWLFJzVik7Cit9KQorCitR NklOU04oQTRfY29tYmluZXJpLCJSZGQzMj1jb21iaW5lKFJzMzIsI3M4KSIsQVRUUklCUyhBX1JP UFNfMiksCisiQ29tYmluZSBhIHdvcmQgYW5kIGFuIGltbWVkaWF0ZSBpbnRvIGEgcmVnaXN0ZXIg cGFpciIsCit7IGZJTU1FWFQoc2lWKTsgZlNFVFdPUkQoMCxSZGRWLHNpVik7CisgIGZTRVRXT1JE KDEsUmRkVixSc1YpOworfSkKKworUTZJTlNOKEE0X2NvbWJpbmVpciwiUmRkMzI9Y29tYmluZSgj czgsUnMzMikiLEFUVFJJQlMoQV9ST1BTXzIpLAorIkNvbWJpbmUgYSB3b3JkIGFuZCBhbiBpbW1l ZGlhdGUgaW50byBhIHJlZ2lzdGVyIHBhaXIiLAoreyBmSU1NRVhUKHNpVik7IGZTRVRXT1JEKDAs UmRkVixSc1YpOworICBmU0VUV09SRCgxLFJkZFYsc2lWKTsKK30pCisKKworCitRNklOU04oQTJf Y29tYmluZWlpLCJSZGQzMj1jb21iaW5lKCNzOCwjUzgpIixBVFRSSUJTKEFfQVJDSFYyLEFfUk9Q U18yKSwKKyJTZXQgdHdvIHNtYWxsIGltbWVkaWF0ZXMiLAoreyBmSU1NRVhUKHNpVik7IGZTRVRX T1JEKDAsUmRkVixTaVYpOyBmU0VUV09SRCgxLFJkZFYsc2lWKTsgfSkKKworUTZJTlNOKEE0X2Nv bWJpbmVpaSwiUmRkMzI9Y29tYmluZSgjczgsI1U2KSIsQVRUUklCUyhBX1JPUFNfMiksIlNldCB0 d28gc21hbGwgaW1tZWRpYXRlcyIsCit7IGZJTU1FWFQoVWlWKTsgZlNFVFdPUkQoMCxSZGRWLFVp Vik7IGZTRVRXT1JEKDEsUmRkVixzaVYpOyB9KQorCisKK1E2SU5TTihBMl9jb21iaW5lX2hoLCJS ZDMyPWNvbWJpbmUoUnQuSDMyLFJzLkgzMikiLEFUVFJJQlMoKSwKKyJDb21iaW5lIHR3byBoYWxm cyBpbnRvIGEgcmVnaXN0ZXIiLCB7UmRWID0gKGZHRVRVSEFMRigxLFJ0Vik8PDE2KSB8IGZHRVRV SEFMRigxLFJzVik7fSkKKworUTZJTlNOKEEyX2NvbWJpbmVfaGwsIlJkMzI9Y29tYmluZShSdC5I MzIsUnMuTDMyKSIsQVRUUklCUygpLAorIkNvbWJpbmUgdHdvIGhhbGZzIGludG8gYSByZWdpc3Rl ciIsIHtSZFYgPSAoZkdFVFVIQUxGKDEsUnRWKTw8MTYpIHwgZkdFVFVIQUxGKDAsUnNWKTt9KQor CitRNklOU04oQTJfY29tYmluZV9saCwiUmQzMj1jb21iaW5lKFJ0LkwzMixScy5IMzIpIixBVFRS SUJTKCksCisiQ29tYmluZSB0d28gaGFsZnMgaW50byBhIHJlZ2lzdGVyIiwge1JkViA9IChmR0VU VUhBTEYoMCxSdFYpPDwxNikgfCBmR0VUVUhBTEYoMSxSc1YpO30pCisKK1E2SU5TTihBMl9jb21i aW5lX2xsLCJSZDMyPWNvbWJpbmUoUnQuTDMyLFJzLkwzMikiLEFUVFJJQlMoKSwKKyJDb21iaW5l IHR3byBoYWxmcyBpbnRvIGEgcmVnaXN0ZXIiLCB7UmRWID0gKGZHRVRVSEFMRigwLFJ0Vik8PDE2 KSB8IGZHRVRVSEFMRigwLFJzVik7fSkKKworUTZJTlNOKEEyX3RmcmlsLCJSeC5MMzI9I3UxNiIs QVRUUklCUygpLAorIlNldCBsb3cgMTYtYml0cywgbGVhdmUgdXBwZXIgMTYgdW5jaGFuZ2VkIix7 IGZTRVRIQUxGKDAsUnhWLHVpVik7fSkKKworUTZJTlNOKEEyX3RmcmloLCJSeC5IMzI9I3UxNiIs QVRUUklCUygpLAorIlNldCBoaWdoIDE2LWJpdHMsIGxlYXZlIGxvdyAxNiB1bmNoYW5nZWQiLHsg ZlNFVEhBTEYoMSxSeFYsdWlWKTt9KQorCitRNklOU04oQTJfdGZyY3JyLCJSZDMyPUNzMzIiLEFU VFJJQlMoKSwKKyJ0cmFuc2ZlciBjb250cm9sIHJlZ2lzdGVyIHRvIGdlbmVyYWwgcmVnaXN0ZXIi LHsgUmRWPUNzVjt9KQorCitRNklOU04oQTJfdGZycmNyLCJDZDMyPVJzMzIiLEFUVFJJQlMoKSwK KyJ0cmFuc2ZlciBnZW5lcmFsIHJlZ2lzdGVyIHRvIGNvbnRyb2wgcmVnaXN0ZXIiLHsgQ2RWPVJz Vjt9KQorCitRNklOU04oQTRfdGZyY3BwLCJSZGQzMj1Dc3MzMiIsQVRUUklCUygpLAorInRyYW5z ZmVyIGNvbnRyb2wgcmVnaXN0ZXIgdG8gZ2VuZXJhbCByZWdpc3RlciIseyBSZGRWPUNzc1Y7fSkK KworUTZJTlNOKEE0X3RmcnBjcCwiQ2RkMzI9UnNzMzIiLEFUVFJJQlMoKSwKKyJ0cmFuc2ZlciBn ZW5lcmFsIHJlZ2lzdGVyIHRvIGNvbnRyb2wgcmVnaXN0ZXIiLHsgQ2RkVj1Sc3NWO30pCisKKwor LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiBMb2dp Y2FscwkJCQkgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKiovCisKK1E2SU5TTihBMl9hbmQsIlJkMzI9YW5kKFJzMzIsUnQzMikiLEFUVFJJQlMoKSwK KyJsb2dpY2FsIEFORCIseyBSZFY9UnNWJlJ0Vjt9KQorCitRNklOU04oQTJfb3IsIlJkMzI9b3Io UnMzMixSdDMyKSIsQVRUUklCUygpLAorImxvZ2ljYWwgT1IiLHsgUmRWPVJzVnxSdFY7fSkKKwor UTZJTlNOKEEyX3hvciwiUmQzMj14b3IoUnMzMixSdDMyKSIsQVRUUklCUygpLAorImxvZ2ljYWwg WE9SIix7IFJkVj1Sc1ZeUnRWO30pCisKK0RFRl9NQVBQSU5HKEEyX25vdCwiUmQzMj1ub3QoUnMz MikiLCJSZDMyPXN1YigjLTEsUnMzMikiKQorCitRNklOU04oTTJfeG9yX3hhY2MsIlJ4MzJePXhv cihSczMyLFJ0MzIpIixBVFRSSUJTKEFfQVJDSFYyKSwKKyJsb2dpY2FsIFhPUiB3aXRoIFhPUiBh Y2N1bXVsYXRpb24iLHsgUnhWXj1Sc1ZeUnRWO30pCisKK1E2SU5TTihNNF94b3JfeGFjYywiUnh4 MzJePXhvcihSc3MzMixSdHQzMikiLCwKKyJsb2dpY2FsIFhPUiB3aXRoIFhPUiBhY2N1bXVsYXRp b24iLHsgUnh4Vl49UnNzVl5SdHRWO30pCisKKworCitRNklOU04oQTRfYW5kbiwiUmQzMj1hbmQo UnQzMix+UnMzMikiLCwKKyJBbmQtTm90IiwgeyBSZFYgPSAoUnRWICYgflJzVik7IH0pCisKK1E2 SU5TTihBNF9vcm4sIlJkMzI9b3IoUnQzMix+UnMzMikiLCwKKyJPci1Ob3QiLCB7IFJkViA9IChS dFYgfCB+UnNWKTsgfSkKKworCitRNklOU04oQTRfYW5kbnAsIlJkZDMyPWFuZChSdHQzMix+UnNz MzIpIiwsCisiQW5kLU5vdCIsIHsgUmRkViA9IChSdHRWICYgflJzc1YpOyB9KQorCitRNklOU04o QTRfb3JucCwiUmRkMzI9b3IoUnR0MzIsflJzczMyKSIsLAorIk9yLU5vdCIsIHsgUmRkViA9IChS dHRWIHwgflJzc1YpOyB9KQorCisKKworCisvKioqKioqKioqKioqKioqKioqKiovCisvKiBDb21w b3VuZCBhZGQtYWRkICovCisvKioqKioqKioqKioqKioqKioqKiovCisKK1E2SU5TTihTNF9hZGRh ZGRpLCJSZDMyPWFkZChSczMyLGFkZChSdTMyLCNzNikpIixBVFRSSUJTKEFfUk9QU18yKSwKKwki My1pbnB1dCBhZGQiLAorCXsgUmRWID0gUnNWICsgUnVWICsgZklNTUVYVChzaVYpOyB9KQorCisK K1E2SU5TTihTNF9zdWJhZGRpLCJSZDMyPWFkZChSczMyLHN1YigjczYsUnUzMikpIixBVFRSSUJT KEFfUk9QU18yKSwKKwkiMy1pbnB1dCBzdWIiLAorCXsgUmRWID0gUnNWIC0gUnVWICsgZklNTUVY VChzaVYpOyB9KQorCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiBDb21w b3VuZCBsb2dpY2FsLWxvZ2ljYWwgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqLwor CitRNklOU04oTTRfYW5kX2FuZCwiUngzMiY9YW5kKFJzMzIsUnQzMikiLEFUVFJJQlMoQV9ST1BT XzIpLAorIkNvbXBvdW5kIEFuZC1BbmQiLCB7IFJ4ViAmPSAoUnNWICYgUnRWKTsgfSkKKworUTZJ TlNOKE00X2FuZF9hbmRuLCJSeDMyJj1hbmQoUnMzMix+UnQzMikiLEFUVFJJQlMoQV9ST1BTXzIp LAorIkNvbXBvdW5kIEFuZC1BbmRuIiwgeyBSeFYgJj0gKFJzViAmIH5SdFYpOyB9KQorCitRNklO U04oTTRfYW5kX29yLCJSeDMyJj1vcihSczMyLFJ0MzIpIixBVFRSSUJTKEFfUk9QU18yKSwKKyJD b21wb3VuZCBBbmQtT3IiLCB7IFJ4ViAmPSAoUnNWIHwgUnRWKTsgfSkKKworUTZJTlNOKE00X2Fu ZF94b3IsIlJ4MzImPXhvcihSczMyLFJ0MzIpIixBVFRSSUJTKEFfUk9QU18yKSwKKyJDb21wb3Vu ZCBBbmQteG9yIiwgeyBSeFYgJj0gKFJzViBeIFJ0Vik7IH0pCisKKworCitRNklOU04oTTRfb3Jf YW5kLCJSeDMyfD1hbmQoUnMzMixSdDMyKSIsQVRUUklCUyhBX1JPUFNfMiksCisiQ29tcG91bmQg T3ItQW5kIiwgeyBSeFYgfD0gKFJzViAmIFJ0Vik7IH0pCisKK1E2SU5TTihNNF9vcl9hbmRuLCJS eDMyfD1hbmQoUnMzMix+UnQzMikiLEFUVFJJQlMoQV9ST1BTXzIpLAorIkNvbXBvdW5kIE9yLUFu ZE4iLCB7IFJ4ViB8PSAoUnNWICYgflJ0Vik7IH0pCisKK1E2SU5TTihNNF9vcl9vciwiUngzMnw9 b3IoUnMzMixSdDMyKSIsQVRUUklCUyhBX1JPUFNfMiksCisiQ29tcG91bmQgT3ItT3IiLCB7IFJ4 ViB8PSAoUnNWIHwgUnRWKTsgfSkKKworUTZJTlNOKE00X29yX3hvciwiUngzMnw9eG9yKFJzMzIs UnQzMikiLEFUVFJJQlMoQV9ST1BTXzIpLAorIkNvbXBvdW5kIE9yLXhvciIsIHsgUnhWIHw9IChS c1YgXiBSdFYpOyB9KQorCisKK1E2SU5TTihTNF9vcl9hbmRpeCwiUngzMj1vcihSdTMyLGFuZChS eDMyLCNzMTApKSIsQVRUUklCUyhBX1JPUFNfMiksCisiQ29tcG91bmQgT3ItQW5kIiwgeyBSeFYg PSBSdVYgfCAoUnhWICYgZklNTUVYVChzaVYpKTsgfSkKKworUTZJTlNOKFM0X29yX2FuZGksIlJ4 MzJ8PWFuZChSczMyLCNzMTApIixBVFRSSUJTKEFfUk9QU18yKSwKKyJDb21wb3VuZCBPci1BbmQi LCB7IFJ4ViA9IFJ4ViB8IChSc1YgJiBmSU1NRVhUKHNpVikpOyB9KQorCitRNklOU04oUzRfb3Jf b3JpLCJSeDMyfD1vcihSczMyLCNzMTApIixBVFRSSUJTKEFfUk9QU18yKSwKKyJDb21wb3VuZCBP ci1BbmQiLCB7IFJ4ViA9IFJ4ViB8IChSc1YgfCBmSU1NRVhUKHNpVikpOyB9KQorCisKKworCitR NklOU04oTTRfeG9yX2FuZCwiUngzMl49YW5kKFJzMzIsUnQzMikiLEFUVFJJQlMoQV9ST1BTXzIp LAorIkNvbXBvdW5kIFhvci1BbmQiLCB7IFJ4ViBePSAoUnNWICYgUnRWKTsgfSkKKworUTZJTlNO KE00X3hvcl9vciwiUngzMl49b3IoUnMzMixSdDMyKSIsQVRUUklCUyhBX1JPUFNfMiksCisiQ29t cG91bmQgWG9yLU9yIiwgeyBSeFYgXj0gKFJzViB8IFJ0Vik7IH0pCisKK1E2SU5TTihNNF94b3Jf YW5kbiwiUngzMl49YW5kKFJzMzIsflJ0MzIpIixBVFRSSUJTKEFfUk9QU18yKSwKKyJDb21wb3Vu ZCBYb3ItQW5kIiwgeyBSeFYgXj0gKFJzViAmIH5SdFYpOyB9KQorCisKKworCisKKworUTZJTlNO KEEyX3N1YnJpLCJSZDMyPXN1YigjczEwLFJzMzIpIixBVFRSSUJTKEFfQVJDSFYyKSwKKyJTdWJ0 cmFjdCByZWdpc3RlciBmcm9tIGltbWVkaWF0ZSIseyBmSU1NRVhUKHNpVik7IFJkVj1zaVYtUnNW O30pCisKK1E2SU5TTihBMl9hbmRpciwiUmQzMj1hbmQoUnMzMiwjczEwKSIsQVRUUklCUyhBX0FS Q0hWMiksCisibG9naWNhbCBBTkQgd2l0aCBpbW1lZGlhdGUiLHsgZklNTUVYVChzaVYpOyBSZFY9 UnNWJnNpVjt9KQorCitRNklOU04oQTJfb3JpciwiUmQzMj1vcihSczMyLCNzMTApIixBVFRSSUJT KEFfQVJDSFYyKSwKKyJsb2dpY2FsIE9SIHdpdGggaW1tZWRpYXRlIix7IGZJTU1FWFQoc2lWKTsg UmRWPVJzVnxzaVY7fSkKKworCisKKworUTZJTlNOKEEyX2FuZHAsIlJkZDMyPWFuZChSc3MzMixS dHQzMikiLEFUVFJJQlMoKSwKKyJsb2dpY2FsIEFORCBwYWlyIix7IFJkZFY9UnNzViZSdHRWO30p CisKK1E2SU5TTihBMl9vcnAsIlJkZDMyPW9yKFJzczMyLFJ0dDMyKSIsQVRUUklCUygpLAorImxv Z2ljYWwgT1IgcGFpciIseyBSZGRWPVJzc1Z8UnR0Vjt9KQorCitRNklOU04oQTJfeG9ycCwiUmRk MzI9eG9yKFJzczMyLFJ0dDMyKSIsQVRUUklCUygpLAorImxvZ2ljYWwgZVhjbHVzaXZlIE9SIHBh aXIiLHsgUmRkVj1Sc3NWXlJ0dFY7fSkKKworUTZJTlNOKEEyX25vdHAsIlJkZDMyPW5vdChSc3Mz MikiLEFUVFJJQlMoKSwKKyJsb2dpY2FsIE5PVCBwYWlyIix7IFJkZFY9flJzc1Y7fSkKKworUTZJ TlNOKEEyX3N4dHcsIlJkZDMyPXN4dHcoUnMzMikiLEFUVFJJQlMoKSwKKyJTaWduIGV4dGVuZCAz Mi1iaXQgd29yZCB0byA2NC1iaXQgcGFpciIsCit7IFJkZFYgPSBmQ0FTVDRfOHMoUnNWKTsgfSkK KworUTZJTlNOKEEyX3NhdCwiUmQzMj1zYXQoUnNzMzIpIixBVFRSSUJTKCksCisiU2F0dXJhdGUg dG8gMzItYml0IFNpZ25lZCIsCit7IFJkViA9IGZTQVQoUnNzVik7IH0pCisKK1E2SU5TTihBMl9y b3VuZHNhdCwiUmQzMj1yb3VuZChSc3MzMik6c2F0IixBVFRSSUJTKCksCisiUm91bmQgJiBTYXR1 cmF0ZSB0byAzMi1iaXQgU2lnbmVkIiwKK3sgZkhJREUoc2l6ZThzX3QgdG1wOykgZkFERFNBVDY0 KHRtcCxSc3NWLDB4MDgwMDAwMDAwVUxMKTsgUmRWID0gZkdFVFdPUkQoMSx0bXApOyB9KQorCitR NklOU04oQTJfc2F0aCwiUmQzMj1zYXRoKFJzMzIpIixBVFRSSUJTKCksCisiU2F0dXJhdGUgdG8g MTYtYml0IFNpZ25lZCIsCit7IFJkViA9IGZTQVRIKFJzVik7IH0pCisKK1E2SU5TTihBMl9zYXR1 aCwiUmQzMj1zYXR1aChSczMyKSIsQVRUUklCUygpLAorIlNhdHVyYXRlIHRvIDE2LWJpdCBVbnNp Z25lZCIsCit7IFJkViA9IGZTQVRVSChSc1YpOyB9KQorCitRNklOU04oQTJfc2F0dWIsIlJkMzI9 c2F0dWIoUnMzMikiLEFUVFJJQlMoKSwKKyJTYXR1cmF0ZSB0byA4LWJpdCBVbnNpZ25lZCIsCit7 IFJkViA9IGZTQVRVQihSc1YpOyB9KQorCitRNklOU04oQTJfc2F0YiwiUmQzMj1zYXRiKFJzMzIp IixBVFRSSUJTKEFfQVJDSFYyKSwKKyJTYXR1cmF0ZSB0byA4LWJpdCBTaWduZWQiLAoreyBSZFYg PSBmU0FUQihSc1YpOyB9KQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKi8KKy8qIFZlY3RvciBBZGQJCQkJICovCisvKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKi8KKworUTZJTlNOKEEyX3ZhZGR1YiwiUmRkMzI9dmFk ZHViKFJzczMyLFJ0dDMyKSIsQVRUUklCUygpLAorIkFkZCB2ZWN0b3Igb2YgYnl0ZXMiLAorewor CWZISURFKGludCBpOykKKwlmb3IgKGkgPSAwOyBpIDwgODsgaSsrKSB7CisJCWZTRVRCWVRFKGks UmRkViwoZkdFVFVCWVRFKGksUnNzVikrZkdFVFVCWVRFKGksUnR0VikpKTsKKwl9Cit9KQorREVG X01BUFBJTkcoQTJfdmFkZGJfbWFwLCJSZGQzMj12YWRkYihSc3MzMixSdHQzMikiLCJSZGQzMj12 YWRkdWIoUnNzMzIsUnR0MzIpIikKKworUTZJTlNOKEEyX3ZhZGR1YnMsIlJkZDMyPXZhZGR1YihS c3MzMixSdHQzMik6c2F0IixBVFRSSUJTKCksCisiQWRkIHZlY3RvciBvZiBieXRlcyIsCit7CisJ ZkhJREUoaW50IGk7KQorCWZvciAoaSA9IDA7IGkgPCA4OyBpKyspIHsKKwkJZlNFVEJZVEUoaSxS ZGRWLGZTQVRVTig4LGZHRVRVQllURShpLFJzc1YpK2ZHRVRVQllURShpLFJ0dFYpKSk7CisJfQor fSkKKworUTZJTlNOKEEyX3ZhZGRoLCJSZGQzMj12YWRkaChSc3MzMixSdHQzMikiLEFUVFJJQlMo KSwKKyJBZGQgdmVjdG9yIG9mIGhhbGYgaW50ZWdlcnMiLAoreworCWZISURFKGludCBpOykKKwlm b3IgKGk9MDtpPDQ7aSsrKSB7CisJICBmU0VUSEFMRihpLFJkZFYsZkdFVEhBTEYoaSxSc3NWKStm R0VUSEFMRihpLFJ0dFYpKTsKKwl9Cit9KQorCitRNklOU04oQTJfdmFkZGhzLCJSZGQzMj12YWRk aChSc3MzMixSdHQzMik6c2F0IixBVFRSSUJTKCksCisiQWRkIHZlY3RvciBvZiBoYWxmIGludGVn ZXJzIHdpdGggc2F0dXJhdGlvbiIsCit7CisJZkhJREUoaW50IGk7KQorCWZvciAoaT0wO2k8NDtp KyspIHsKKwkgIGZTRVRIQUxGKGksUmRkVixmU0FUTigxNixmR0VUSEFMRihpLFJzc1YpK2ZHRVRI QUxGKGksUnR0VikpKTsKKwl9Cit9KQorCitRNklOU04oQTJfdmFkZHVocywiUmRkMzI9dmFkZHVo KFJzczMyLFJ0dDMyKTpzYXQiLEFUVFJJQlMoKSwKKyJBZGQgdmVjdG9yIG9mIHVuc2lnbmVkIGhh bGYgaW50ZWdlcnMgd2l0aCBzYXR1cmF0aW9uIiwKK3sKKwlmSElERShpbnQgaTspCisJZm9yIChp PTA7aTw0O2krKykgeworCSAgZlNFVEhBTEYoaSxSZGRWLGZTQVRVTigxNixmR0VUVUhBTEYoaSxS c3NWKStmR0VUVUhBTEYoaSxSdHRWKSkpOworCX0KK30pCisKK1E2SU5TTihBNV92YWRkaHVicywi UmQzMj12YWRkaHViKFJzczMyLFJ0dDMyKTpzYXQiLEFUVFJJQlMoKSwKKyJBZGQgdmVjdG9yIG9m IGhhbGYgaW50ZWdlcnMgd2l0aCBzYXR1cmF0aW9uIGFuZCBwYWNrIHRvIHVuc2lnbmVkIGJ5dGVz IiwKK3sKKwlmSElERShpbnQgaTspCisJZm9yIChpPTA7aTw0O2krKykgeworCSAgCQlmU0VUQllU RShpLFJkVixmU0FUVUIoZkdFVEhBTEYoaSxSc3NWKStmR0VUSEFMRihpLFJ0dFYpKSk7CisJfQor fSkKKworUTZJTlNOKEEyX3ZhZGR3LCJSZGQzMj12YWRkdyhSc3MzMixSdHQzMikiLEFUVFJJQlMo KSwKKyJBZGQgdmVjdG9yIG9mIHdvcmRzIiwKK3sKKwlmSElERShpbnQgaTspCisJZm9yIChpPTA7 aTwyO2krKykgeworCSAgZlNFVFdPUkQoaSxSZGRWLGZHRVRXT1JEKGksUnNzVikrZkdFVFdPUkQo aSxSdHRWKSk7CisJfQorfSkKKworUTZJTlNOKEEyX3ZhZGR3cywiUmRkMzI9dmFkZHcoUnNzMzIs UnR0MzIpOnNhdCIsQVRUUklCUygpLAorIkFkZCB2ZWN0b3Igb2Ygd29yZHMgd2l0aCBzYXR1cmF0 aW9uIiwKK3sKKwlmSElERShpbnQgaTspCisJZm9yIChpPTA7aTwyO2krKykgeworCSAgZlNFVFdP UkQoaSxSZGRWLGZTQVROKDMyLGZHRVRXT1JEKGksUnNzVikrZkdFVFdPUkQoaSxSdHRWKSkpOwor CX0KK30pCisKKworCitRNklOU04oUzRfdnhhZGRzdWJ3LCJSZGQzMj12eGFkZHN1YncoUnNzMzIs UnR0MzIpOnNhdCIsQVRUUklCUygpLAorIkNyb3NzIHZlY3RvciBhZGQtc3ViIHdvcmRzIHdpdGgg c2F0dXJhdGlvbiIsCit7CisJZlNFVFdPUkQoMCxSZGRWLGZTQVQoZkdFVFdPUkQoMCxSc3NWKStm R0VUV09SRCgxLFJ0dFYpKSk7CisJZlNFVFdPUkQoMSxSZGRWLGZTQVQoZkdFVFdPUkQoMSxSc3NW KS1mR0VUV09SRCgwLFJ0dFYpKSk7Cit9KQorUTZJTlNOKFM0X3Z4c3ViYWRkdywiUmRkMzI9dnhz dWJhZGR3KFJzczMyLFJ0dDMyKTpzYXQiLEFUVFJJQlMoKSwKKyJDcm9zcyB2ZWN0b3Igc3ViLWFk ZCB3b3JkcyB3aXRoIHNhdHVyYXRpb24iLAoreworCWZTRVRXT1JEKDAsUmRkVixmU0FUKGZHRVRX T1JEKDAsUnNzViktZkdFVFdPUkQoMSxSdHRWKSkpOworCWZTRVRXT1JEKDEsUmRkVixmU0FUKGZH RVRXT1JEKDEsUnNzVikrZkdFVFdPUkQoMCxSdHRWKSkpOworfSkKKworCisKK1E2SU5TTihTNF92 eGFkZHN1YmgsIlJkZDMyPXZ4YWRkc3ViaChSc3MzMixSdHQzMik6c2F0IixBVFRSSUJTKCksCisi Q3Jvc3MgdmVjdG9yIGFkZC1zdWIgaGFsZndvcmRzIHdpdGggc2F0dXJhdGlvbiIsCit7CisJZlNF VEhBTEYoMCxSZGRWLGZTQVRIKGZHRVRIQUxGKDAsUnNzVikrZkdFVEhBTEYoMSxSdHRWKSkpOwor CWZTRVRIQUxGKDEsUmRkVixmU0FUSChmR0VUSEFMRigxLFJzc1YpLWZHRVRIQUxGKDAsUnR0Vikp KTsKKworCWZTRVRIQUxGKDIsUmRkVixmU0FUSChmR0VUSEFMRigyLFJzc1YpK2ZHRVRIQUxGKDMs UnR0VikpKTsKKwlmU0VUSEFMRigzLFJkZFYsZlNBVEgoZkdFVEhBTEYoMyxSc3NWKS1mR0VUSEFM RigyLFJ0dFYpKSk7CisKK30pCitRNklOU04oUzRfdnhzdWJhZGRoLCJSZGQzMj12eHN1YmFkZGgo UnNzMzIsUnR0MzIpOnNhdCIsQVRUUklCUygpLAorIkNyb3NzIHZlY3RvciBzdWItYWRkIGhhbGZ3 b3JkcyB3aXRoIHNhdHVyYXRpb24iLAoreworCWZTRVRIQUxGKDAsUmRkVixmU0FUSChmR0VUSEFM RigwLFJzc1YpLWZHRVRIQUxGKDEsUnR0VikpKTsKKwlmU0VUSEFMRigxLFJkZFYsZlNBVEgoZkdF VEhBTEYoMSxSc3NWKStmR0VUSEFMRigwLFJ0dFYpKSk7CisKKwlmU0VUSEFMRigyLFJkZFYsZlNB VEgoZkdFVEhBTEYoMixSc3NWKS1mR0VUSEFMRigzLFJ0dFYpKSk7CisJZlNFVEhBTEYoMyxSZGRW LGZTQVRIKGZHRVRIQUxGKDMsUnNzVikrZkdFVEhBTEYoMixSdHRWKSkpOworfSkKKworCisKKwor UTZJTlNOKFM0X3Z4YWRkc3ViaHIsIlJkZDMyPXZ4YWRkc3ViaChSc3MzMixSdHQzMik6cm5kOj4+ MTpzYXQiLEFUVFJJQlMoKSwKKyJDcm9zcyB2ZWN0b3IgYWRkLXN1YiBoYWxmd29yZHMgd2l0aCBz aGlmdCwgcm91bmQsIGFuZCBzYXR1cmF0aW9uIiwKK3sKKwlmU0VUSEFMRigwLFJkZFYsZlNBVEgo KGZHRVRIQUxGKDAsUnNzVikrZkdFVEhBTEYoMSxSdHRWKSsxKT4+MSkpOworCWZTRVRIQUxGKDEs UmRkVixmU0FUSCgoZkdFVEhBTEYoMSxSc3NWKS1mR0VUSEFMRigwLFJ0dFYpKzEpPj4xKSk7CisK KwlmU0VUSEFMRigyLFJkZFYsZlNBVEgoKGZHRVRIQUxGKDIsUnNzVikrZkdFVEhBTEYoMyxSdHRW KSsxKT4+MSkpOworCWZTRVRIQUxGKDMsUmRkVixmU0FUSCgoZkdFVEhBTEYoMyxSc3NWKS1mR0VU SEFMRigyLFJ0dFYpKzEpPj4xKSk7CisKK30pCitRNklOU04oUzRfdnhzdWJhZGRociwiUmRkMzI9 dnhzdWJhZGRoKFJzczMyLFJ0dDMyKTpybmQ6Pj4xOnNhdCIsQVRUUklCUygpLAorIkNyb3NzIHZl Y3RvciBzdWItYWRkIGhhbGZ3b3JkcyB3aXRoIHNoaWZ0LCByb3VuZCwgYW5kIHNhdHVyYXRpb24i LAoreworCWZTRVRIQUxGKDAsUmRkVixmU0FUSCgoZkdFVEhBTEYoMCxSc3NWKS1mR0VUSEFMRigx LFJ0dFYpKzEpPj4xKSk7CisJZlNFVEhBTEYoMSxSZGRWLGZTQVRIKChmR0VUSEFMRigxLFJzc1Yp K2ZHRVRIQUxGKDAsUnR0VikrMSk+PjEpKTsKKworCWZTRVRIQUxGKDIsUmRkVixmU0FUSCgoZkdF VEhBTEYoMixSc3NWKS1mR0VUSEFMRigzLFJ0dFYpKzEpPj4xKSk7CisJZlNFVEhBTEYoMyxSZGRW LGZTQVRIKChmR0VUSEFMRigzLFJzc1YpK2ZHRVRIQUxGKDIsUnR0VikrMSk+PjEpKTsKK30pCisK KworCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov CisvKiAxLzIgVmVjdG9yIG9wZXJhdGlvbnMJCSAgICAgICovCisvKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCitRNklOU04oQTJfc3ZhdmdoLCJSZDMy PXZhdmdoKFJzMzIsUnQzMikiLEFUVFJJQlMoQV9BUkNIVjIpLAorIkF2ZyB2ZWN0b3Igb2YgaGFs ZiBpbnRlZ2VycyIsCit7CisJZkhJREUoaW50IGk7KQorCWZvciAoaT0wO2k8MjtpKyspIHsKKwkg IGZTRVRIQUxGKGksUmRWLCgoZkdFVEhBTEYoaSxSc1YpK2ZHRVRIQUxGKGksUnRWKSk+PjEpKTsK Kwl9Cit9KQorCitRNklOU04oQTJfc3ZhdmdocywiUmQzMj12YXZnaChSczMyLFJ0MzIpOnJuZCIs QVRUUklCUyhBX0FSQ0hWMiksCisiQXZnIHZlY3RvciBvZiBoYWxmIGludGVnZXJzIHdpdGggcm91 bmRpbmciLAoreworCWZISURFKGludCBpOykKKwlmb3IgKGk9MDtpPDI7aSsrKSB7CisJICBmU0VU SEFMRihpLFJkViwoKGZHRVRIQUxGKGksUnNWKStmR0VUSEFMRihpLFJ0VikrMSk+PjEpKTsKKwl9 Cit9KQorCisKKworUTZJTlNOKEEyX3N2bmF2Z2gsIlJkMzI9dm5hdmdoKFJ0MzIsUnMzMikiLEFU VFJJQlMoQV9BUkNIVjIpLAorIkF2ZyB2ZWN0b3Igb2YgaGFsZiBpbnRlZ2VycyIsCit7CisJZkhJ REUoaW50IGk7KQorCWZvciAoaT0wO2k8MjtpKyspIHsKKwkgIGZTRVRIQUxGKGksUmRWLCgoZkdF VEhBTEYoaSxSdFYpLWZHRVRIQUxGKGksUnNWKSk+PjEpKTsKKwl9Cit9KQorCisKK1E2SU5TTihB Ml9zdmFkZGgsIlJkMzI9dmFkZGgoUnMzMixSdDMyKSIsQVRUUklCUygpLAorIkFkZCB2ZWN0b3Ig b2YgaGFsZiBpbnRlZ2VycyIsCit7CisJZkhJREUoaW50IGk7KQorCWZvciAoaT0wO2k8MjtpKysp IHsKKwkgIGZTRVRIQUxGKGksUmRWLGZHRVRIQUxGKGksUnNWKStmR0VUSEFMRihpLFJ0VikpOwor CX0KK30pCisKK1E2SU5TTihBMl9zdmFkZGhzLCJSZDMyPXZhZGRoKFJzMzIsUnQzMik6c2F0IixB VFRSSUJTKCksCisiQWRkIHZlY3RvciBvZiBoYWxmIGludGVnZXJzIHdpdGggc2F0dXJhdGlvbiIs Cit7CisJZkhJREUoaW50IGk7KQorCWZvciAoaT0wO2k8MjtpKyspIHsKKwkgIGZTRVRIQUxGKGks UmRWLGZTQVROKDE2LGZHRVRIQUxGKGksUnNWKStmR0VUSEFMRihpLFJ0VikpKTsKKwl9Cit9KQor CitRNklOU04oQTJfc3ZhZGR1aHMsIlJkMzI9dmFkZHVoKFJzMzIsUnQzMik6c2F0IixBVFRSSUJT KCksCisiQWRkIHZlY3RvciBvZiB1bnNpZ25lZCBoYWxmIGludGVnZXJzIHdpdGggc2F0dXJhdGlv biIsCit7CisJZkhJREUoaW50IGk7KQorCWZvciAoaT0wO2k8MjtpKyspIHsKKwkgIGZTRVRIQUxG KGksUmRWLGZTQVRVTigxNixmR0VUVUhBTEYoaSxSc1YpK2ZHRVRVSEFMRihpLFJ0VikpKTsKKwl9 Cit9KQorCisKK1E2SU5TTihBMl9zdnN1YmgsIlJkMzI9dnN1YmgoUnQzMixSczMyKSIsQVRUUklC UygpLAorIlN1YiB2ZWN0b3Igb2YgaGFsZiBpbnRlZ2VycyIsCit7CisJZkhJREUoaW50IGk7KQor CWZvciAoaT0wO2k8MjtpKyspIHsKKwkgIGZTRVRIQUxGKGksUmRWLGZHRVRIQUxGKGksUnRWKS1m R0VUSEFMRihpLFJzVikpOworCX0KK30pCisKK1E2SU5TTihBMl9zdnN1YmhzLCJSZDMyPXZzdWJo KFJ0MzIsUnMzMik6c2F0IixBVFRSSUJTKCksCisiU3ViIHZlY3RvciBvZiBoYWxmIGludGVnZXJz IHdpdGggc2F0dXJhdGlvbiIsCit7CisJZkhJREUoaW50IGk7KQorCWZvciAoaT0wO2k8MjtpKysp IHsKKwkgIGZTRVRIQUxGKGksUmRWLGZTQVROKDE2LGZHRVRIQUxGKGksUnRWKS1mR0VUSEFMRihp LFJzVikpKTsKKwl9Cit9KQorCitRNklOU04oQTJfc3ZzdWJ1aHMsIlJkMzI9dnN1YnVoKFJ0MzIs UnMzMik6c2F0IixBVFRSSUJTKCksCisiU3ViIHZlY3RvciBvZiB1bnNpZ25lZCBoYWxmIGludGVn ZXJzIHdpdGggc2F0dXJhdGlvbiIsCit7CisJZkhJREUoaW50IGk7KQorCWZvciAoaT0wO2k8Mjtp KyspIHsKKwkgIGZTRVRIQUxGKGksUmRWLGZTQVRVTigxNixmR0VUVUhBTEYoaSxSdFYpLWZHRVRV SEFMRihpLFJzVikpKTsKKwl9Cit9KQorCisKKworCisvKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKi8KKy8qIFZlY3RvciBSZWR1Y2UgQWRkCQkJICAqLworLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK1E2SU5TTihB Ml92cmFkZHViLCJSZGQzMj12cmFkZHViKFJzczMyLFJ0dDMyKSIsQVRUUklCUygpLAorIlN1bTog dHdvIHZlY3RvcnMgb2YgdW5zaWduZWQgYnl0ZXMiLAoreworCWZISURFKGludCBpOykKKwlSZGRW ID0gMDsKKwlmb3IgKGk9MDtpPDQ7aSsrKSB7CisJCWZTRVRXT1JEKDAsUmRkViwoZkdFVFdPUkQo MCxSZGRWKSArIChmR0VUVUJZVEUoaSxSc3NWKStmR0VUVUJZVEUoaSxSdHRWKSkpKTsKKwl9CisJ Zm9yIChpPTQ7aTw4O2krKykgeworCQlmU0VUV09SRCgxLFJkZFYsKGZHRVRXT1JEKDEsUmRkVikg KyAoZkdFVFVCWVRFKGksUnNzVikrZkdFVFVCWVRFKGksUnR0VikpKSk7CisJfQorfSkKKworUTZJ TlNOKEEyX3ZyYWRkdWJfYWNjLCJSeHgzMis9dnJhZGR1YihSc3MzMixSdHQzMikiLEFUVFJJQlMo KSwKKyJTdW06IHR3byB2ZWN0b3JzIG9mIHVuc2lnbmVkIGJ5dGVzIiwKK3sKKwlmSElERShpbnQg aTspCisJZm9yIChpID0gMDsgaSA8IDQ7IGkrKykgeworCQlmU0VUV09SRCgwLFJ4eFYsKGZHRVRX T1JEKDAsUnh4VikgKyAoZkdFVFVCWVRFKGksUnNzVikrZkdFVFVCWVRFKGksUnR0VikpKSk7CisJ fQorCWZvciAoaSA9IDQ7IGkgPCA4OyBpKyspIHsKKwkJZlNFVFdPUkQoMSxSeHhWLChmR0VUV09S RCgxLFJ4eFYpICsgKGZHRVRVQllURShpLFJzc1YpK2ZHRVRVQllURShpLFJ0dFYpKSkpOworCX0K KyAgICBmQUNDKCk7XAorfSkKKworCisKK1E2SU5TTihNMl92cmFkZGgsIlJkMzI9dnJhZGRoKFJz czMyLFJ0dDMyKSIsQVRUUklCUyhBX0FSQ0hWMyksCisiU3VtOiB0d28gdmVjdG9ycyBvZiBoYWx2 ZXMiLAoreworCWZISURFKGludCBpOykKKwlSZFYgPSAwOworCWZvciAoaT0wO2k8NDtpKyspIHsK KwkJUmRWICs9IChmR0VUSEFMRihpLFJzc1YpK2ZHRVRIQUxGKGksUnR0VikpOworCX0KK30pCisK K1E2SU5TTihNMl92cmFkZHVoLCJSZDMyPXZyYWRkdWgoUnNzMzIsUnR0MzIpIixBVFRSSUJTKEFf QVJDSFYzKSwKKyJTdW06IHR3byB2ZWN0b3JzIG9mIHVuc2lnbmVkIGhhbHZlcyIsCit7CisJZkhJ REUoaW50IGk7KQorCVJkViA9IDA7CisJZm9yIChpPTA7aTw0O2krKykgeworCQlSZFYgKz0gKGZH RVRVSEFMRihpLFJzc1YpK2ZHRVRVSEFMRihpLFJ0dFYpKTsKKwl9Cit9KQorCisvKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIFZlY3RvciBTdWIJCQkJ ICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKwor UTZJTlNOKEEyX3ZzdWJ1YiwiUmRkMzI9dnN1YnViKFJ0dDMyLFJzczMyKSIsQVRUUklCUygpLAor IlN1YiB2ZWN0b3Igb2YgYnl0ZXMiLAoreworCWZISURFKGludCBpOykKKwlmb3IgKGkgPSAwOyBp IDwgODsgaSsrKSB7CisJCWZTRVRCWVRFKGksUmRkViwoZkdFVFVCWVRFKGksUnR0ViktZkdFVFVC WVRFKGksUnNzVikpKTsKKwl9Cit9KQorREVGX01BUFBJTkcoQTJfdnN1YmJfbWFwLCJSZGQzMj12 c3ViYihSc3MzMixSdHQzMikiLCJSZGQzMj12c3VidWIoUnNzMzIsUnR0MzIpIikKKworUTZJTlNO KEEyX3ZzdWJ1YnMsIlJkZDMyPXZzdWJ1YihSdHQzMixSc3MzMik6c2F0IixBVFRSSUJTKCksCisi U3ViIHZlY3RvciBvZiBieXRlcyIsCit7CisJZkhJREUoaW50IGk7KQorCWZvciAoaSA9IDA7IGkg PCA4OyBpKyspIHsKKwkJZlNFVEJZVEUoaSxSZGRWLGZTQVRVTig4LGZHRVRVQllURShpLFJ0dFYp LWZHRVRVQllURShpLFJzc1YpKSk7CisJfQorfSkKKworUTZJTlNOKEEyX3ZzdWJoLCJSZGQzMj12 c3ViaChSdHQzMixSc3MzMikiLEFUVFJJQlMoKSwKKyJTdWIgdmVjdG9yIG9mIGhhbGYgaW50ZWdl cnMiLAoreworCWZISURFKGludCBpOykKKwlmb3IgKGk9MDtpPDQ7aSsrKSB7CisJICBmU0VUSEFM RihpLFJkZFYsZkdFVEhBTEYoaSxSdHRWKS1mR0VUSEFMRihpLFJzc1YpKTsKKwl9Cit9KQorCitR NklOU04oQTJfdnN1YmhzLCJSZGQzMj12c3ViaChSdHQzMixSc3MzMik6c2F0IixBVFRSSUJTKCks CisiU3ViIHZlY3RvciBvZiBoYWxmIGludGVnZXJzIHdpdGggc2F0dXJhdGlvbiIsCit7CisJZkhJ REUoaW50IGk7KQorCWZvciAoaT0wO2k8NDtpKyspIHsKKwkgIGZTRVRIQUxGKGksUmRkVixmU0FU TigxNixmR0VUSEFMRihpLFJ0dFYpLWZHRVRIQUxGKGksUnNzVikpKTsKKwl9Cit9KQorCitRNklO U04oQTJfdnN1YnVocywiUmRkMzI9dnN1YnVoKFJ0dDMyLFJzczMyKTpzYXQiLEFUVFJJQlMoKSwK KyJTdWIgdmVjdG9yIG9mIHVuc2lnbmVkIGhhbGYgaW50ZWdlcnMgd2l0aCBzYXR1cmF0aW9uIiwK K3sKKwlmSElERShpbnQgaTspCisJZm9yIChpPTA7aTw0O2krKykgeworCSAgZlNFVEhBTEYoaSxS ZGRWLGZTQVRVTigxNixmR0VUVUhBTEYoaSxSdHRWKS1mR0VUVUhBTEYoaSxSc3NWKSkpOworCX0K K30pCisKK1E2SU5TTihBMl92c3VidywiUmRkMzI9dnN1YncoUnR0MzIsUnNzMzIpIixBVFRSSUJT KCksCisiU3ViIHZlY3RvciBvZiB3b3JkcyIsCit7CisJZkhJREUoaW50IGk7KQorCWZvciAoaT0w O2k8MjtpKyspIHsKKwkgIGZTRVRXT1JEKGksUmRkVixmR0VUV09SRChpLFJ0dFYpLWZHRVRXT1JE KGksUnNzVikpOworCX0KK30pCisKK1E2SU5TTihBMl92c3Vid3MsIlJkZDMyPXZzdWJ3KFJ0dDMy LFJzczMyKTpzYXQiLEFUVFJJQlMoKSwKKyJTdWIgdmVjdG9yIG9mIHdvcmRzIHdpdGggc2F0dXJh dGlvbiIsCit7CisJZkhJREUoaW50IGk7KQorCWZvciAoaT0wO2k8MjtpKyspIHsKKwkgIGZTRVRX T1JEKGksUmRkVixmU0FUTigzMixmR0VUV09SRChpLFJ0dFYpLWZHRVRXT1JEKGksUnNzVikpKTsK Kwl9Cit9KQorCisKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKi8KKy8qIFZlY3RvciBBYnMJCQkJICovCisvKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKi8KKworUTZJTlNOKEEyX3ZhYnNoLCJSZGQzMj12YWJzaChS c3MzMikiLEFUVFJJQlMoKSwKKyJOZWdhdGUgdmVjdG9yIG9mIGhhbGYgaW50ZWdlcnMiLAorewor CWZISURFKGludCBpOykKKwlmb3IgKGk9MDtpPDQ7aSsrKSB7CisJICBmU0VUSEFMRihpLFJkZFYs ZkFCUyhmR0VUSEFMRihpLFJzc1YpKSk7CisJfQorfSkKKworUTZJTlNOKEEyX3ZhYnNoc2F0LCJS ZGQzMj12YWJzaChSc3MzMik6c2F0IixBVFRSSUJTKCksCisiTmVnYXRlIHZlY3RvciBvZiBoYWxm IGludGVnZXJzIiwKK3sKKwlmSElERShpbnQgaTspCisJZm9yIChpPTA7aTw0O2krKykgeworCSAg ZlNFVEhBTEYoaSxSZGRWLGZTQVRIKGZBQlMoZkdFVEhBTEYoaSxSc3NWKSkpKTsKKwl9Cit9KQor CitRNklOU04oQTJfdmFic3csIlJkZDMyPXZhYnN3KFJzczMyKSIsQVRUUklCUygpLAorIkFic29s dXRlIFZhbHVlIHZlY3RvciBvZiB3b3JkcyIsCit7CisJZkhJREUoaW50IGk7KQorCWZvciAoaT0w O2k8MjtpKyspIHsKKwkgIGZTRVRXT1JEKGksUmRkVixmQUJTKGZHRVRXT1JEKGksUnNzVikpKTsK Kwl9Cit9KQorCitRNklOU04oQTJfdmFic3dzYXQsIlJkZDMyPXZhYnN3KFJzczMyKTpzYXQiLEFU VFJJQlMoKSwKKyJBYnNvbHV0ZSBWYWx1ZSB2ZWN0b3Igb2Ygd29yZHMiLAoreworCWZISURFKGlu dCBpOykKKwlmb3IgKGk9MDtpPDI7aSsrKSB7CisJICBmU0VUV09SRChpLFJkZFYsZlNBVChmQUJT KGZHRVRXT1JEKGksUnNzVikpKSk7CisJfQorfSkKKworLyoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKiovCisvKiBWZWN0b3IgU0FECQkJCSAqLworLyoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworUTZJTlNOKE0yX3Zh YnNkaWZmdywiUmRkMzI9dmFic2RpZmZ3KFJ0dDMyLFJzczMyKSIsQVRUUklCUyhBX0FSQ0hWMiks CisiQWJzb2x1dGUgRGlmZmVyZW5jZXM6IHZlY3RvciBvZiB3b3JkcyIsCit7CisJZkhJREUoaW50 IGk7KQorCWZvciAoaT0wO2k8MjtpKyspIHsKKwkgIGZTRVRXT1JEKGksUmRkVixmQUJTKGZHRVRX T1JEKGksUnR0VikgLSBmR0VUV09SRChpLFJzc1YpKSk7CisJfQorfSkKKworUTZJTlNOKE0yX3Zh YnNkaWZmaCwiUmRkMzI9dmFic2RpZmZoKFJ0dDMyLFJzczMyKSIsQVRUUklCUyhBX0FSQ0hWMiks CisiQWJzb2x1dGUgRGlmZmVyZW5jZXM6IHZlY3RvciBvZiBoYWxmd29yZHMiLAoreworCWZISURF KGludCBpOykKKwlmb3IgKGk9MDtpPDQ7aSsrKSB7CisJICBmU0VUSEFMRihpLFJkZFYsZkFCUyhm R0VUSEFMRihpLFJ0dFYpIC0gZkdFVEhBTEYoaSxSc3NWKSkpOworCX0KK30pCisKK1E2SU5TTihN Nl92YWJzZGlmZmIsIlJkZDMyPXZhYnNkaWZmYihSdHQzMixSc3MzMikiLEFUVFJJQlMoKSwKKyJB YnNvbHV0ZSBEaWZmZXJlbmNlczogdmVjdG9yIG9mIGhhbGZ3b3JkcyIsCit7CisJZkhJREUoaW50 IGk7KQorCWZvciAoaT0wO2k8ODtpKyspIHsKKwkgIGZTRVRCWVRFKGksUmRkVixmQUJTKGZHRVRC WVRFKGksUnR0VikgLSBmR0VUQllURShpLFJzc1YpKSk7CisJfQorfSkKKworUTZJTlNOKE02X3Zh YnNkaWZmdWIsIlJkZDMyPXZhYnNkaWZmdWIoUnR0MzIsUnNzMzIpIixBVFRSSUJTKCksCisiQWJz b2x1dGUgRGlmZmVyZW5jZXM6IHZlY3RvciBvZiBoYWxmd29yZHMiLAoreworCWZISURFKGludCBp OykKKwlmb3IgKGk9MDtpPDg7aSsrKSB7CisJICBmU0VUQllURShpLFJkZFYsZkFCUyhmR0VUVUJZ VEUoaSxSdHRWKSAtIGZHRVRVQllURShpLFJzc1YpKSk7CisJfQorfSkKKworCisKK1E2SU5TTihB Ml92cnNhZHViLCJSZGQzMj12cnNhZHViKFJzczMyLFJ0dDMyKSIsQVRUUklCUygpLAorIlN1bSBv ZiBBYnNvbHV0ZSBEaWZmZXJlbmNlczogdmVjdG9yIG9mIHVuc2lnbmVkIGJ5dGVzIiwKK3sKKwlm SElERShpbnQgaTspCisJUmRkViA9IDA7CisJZm9yIChpID0gMDsgaSA8IDQ7IGkrKykgeworCQlm U0VUV09SRCgwLFJkZFYsKGZHRVRXT1JEKDAsUmRkVikgKyBmQUJTKChmR0VUVUJZVEUoaSxSc3NW KSAtIGZHRVRVQllURShpLFJ0dFYpKSkpKTsKKwl9CisJZm9yIChpID0gNDsgaSA8IDg7IGkrKykg eworCQlmU0VUV09SRCgxLFJkZFYsKGZHRVRXT1JEKDEsUmRkVikgKyBmQUJTKChmR0VUVUJZVEUo aSxSc3NWKSAtIGZHRVRVQllURShpLFJ0dFYpKSkpKTsKKwl9Cit9KQorCitRNklOU04oQTJfdnJz YWR1Yl9hY2MsIlJ4eDMyKz12cnNhZHViKFJzczMyLFJ0dDMyKSIsQVRUUklCUygpLAorIlN1bSBv ZiBBYnNvbHV0ZSBEaWZmZXJlbmNlczogdmVjdG9yIG9mIHVuc2lnbmVkIGJ5dGVzIiwKK3sKKwlm SElERShpbnQgaTspCisJZm9yIChpID0gMDsgaSA8IDQ7IGkrKykgeworCQlmU0VUV09SRCgwLFJ4 eFYsKGZHRVRXT1JEKDAsUnh4VikgKyBmQUJTKChmR0VUVUJZVEUoaSxSc3NWKSAtIGZHRVRVQllU RShpLFJ0dFYpKSkpKTsKKwl9CisJZm9yIChpID0gNDsgaSA8IDg7IGkrKykgeworCQlmU0VUV09S RCgxLFJ4eFYsKGZHRVRXT1JEKDEsUnh4VikgKyBmQUJTKChmR0VUVUJZVEUoaSxSc3NWKSAtIGZH RVRVQllURShpLFJ0dFYpKSkpKTsKKwl9CisgICAgZkFDQygpO1wKK30pCisKKworLyoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiBWZWN0b3IgQXZlcmFn ZQkJCSAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqLworCitRNklOU04oQTJfdmF2Z3ViLCJSZGQzMj12YXZndWIoUnNzMzIsUnR0MzIpIixBVFRS SUJTKCksCisiQXZlcmFnZSB2ZWN0b3Igb2YgdW5zaWduZWQgYnl0ZXMiLAoreworCWZISURFKGlu dCBpOykKKwlmb3IgKGkgPSAwOyBpIDwgODsgaSsrKSB7CisJCWZTRVRCWVRFKGksUmRkViwoKGZH RVRVQllURShpLFJzc1YpICsgZkdFVFVCWVRFKGksUnR0VikpPj4xKSk7CisJfQorfSkKKworUTZJ TlNOKEEyX3Zhdmd1aCwiUmRkMzI9dmF2Z3VoKFJzczMyLFJ0dDMyKSIsQVRUUklCUygpLAorIkF2 ZXJhZ2UgdmVjdG9yIG9mIHVuc2lnbmVkIGhhbGZ3b3JkcyIsCit7CisJZkhJREUoaW50IGk7KQor CWZvciAoaT0wO2k8NDtpKyspIHsKKwkJZlNFVEhBTEYoaSxSZGRWLChmR0VUVUhBTEYoaSxSc3NW KStmR0VUVUhBTEYoaSxSdHRWKSk+PjEpOworCX0KK30pCisKK1E2SU5TTihBMl92YXZnaCwiUmRk MzI9dmF2Z2goUnNzMzIsUnR0MzIpIixBVFRSSUJTKCksCisiQXZlcmFnZSB2ZWN0b3Igb2YgaGFs ZndvcmRzIiwKK3sKKwlmSElERShpbnQgaTspCisJZm9yIChpPTA7aTw0O2krKykgeworCQlmU0VU SEFMRihpLFJkZFYsKGZHRVRIQUxGKGksUnNzVikrZkdFVEhBTEYoaSxSdHRWKSk+PjEpOworCX0K K30pCisKK1E2SU5TTihBMl92bmF2Z2gsIlJkZDMyPXZuYXZnaChSdHQzMixSc3MzMikiLEFUVFJJ QlMoKSwKKyJOZWdhdGl2ZSBBdmVyYWdlIHZlY3RvciBvZiBoYWxmd29yZHMiLAoreworCWZISURF KGludCBpOykKKwlmb3IgKGk9MDtpPDQ7aSsrKSB7CisJCWZTRVRIQUxGKGksUmRkViwoZkdFVEhB TEYoaSxSdHRWKS1mR0VUSEFMRihpLFJzc1YpKT4+MSk7CisJfQorfSkKKworUTZJTlNOKEEyX3Zh dmd3LCJSZGQzMj12YXZndyhSc3MzMixSdHQzMikiLEFUVFJJQlMoKSwKKyJBdmVyYWdlIHZlY3Rv ciBvZiB3b3JkcyIsCit7CisJZkhJREUoaW50IGk7KQorCWZvciAoaT0wO2k8MjtpKyspIHsKKwkJ ZlNFVFdPUkQoaSxSZGRWLChmU1hUTigzMiwzMyxmR0VUV09SRChpLFJzc1YpKStmU1hUTigzMiwz MyxmR0VUV09SRChpLFJ0dFYpKSk+PjEpOworCX0KK30pCisKK1E2SU5TTihBMl92bmF2Z3csIlJk ZDMyPXZuYXZndyhSdHQzMixSc3MzMikiLEFUVFJJQlMoQV9BUkNIVjIpLAorIkF2ZXJhZ2UgdmVj dG9yIG9mIHdvcmRzIiwKK3sKKwlmSElERShpbnQgaTspCisJZm9yIChpPTA7aTwyO2krKykgewor CQlmU0VUV09SRChpLFJkZFYsKGZTWFROKDMyLDMzLGZHRVRXT1JEKGksUnR0VikpLWZTWFROKDMy LDMzLGZHRVRXT1JEKGksUnNzVikpKT4+MSk7CisJfQorfSkKKworUTZJTlNOKEEyX3Zhdmd3ciwi UmRkMzI9dmF2Z3coUnNzMzIsUnR0MzIpOnJuZCIsQVRUUklCUygpLAorIkF2ZXJhZ2UgdmVjdG9y IG9mIHdvcmRzIiwKK3sKKwlmSElERShpbnQgaTspCisJZm9yIChpPTA7aTwyO2krKykgeworCQlm U0VUV09SRChpLFJkZFYsKGZTWFROKDMyLDMzLGZHRVRXT1JEKGksUnNzVikpK2ZTWFROKDMyLDMz LGZHRVRXT1JEKGksUnR0VikpKzEpPj4xKTsKKwl9Cit9KQorCitRNklOU04oQTJfdm5hdmd3ciwi UmRkMzI9dm5hdmd3KFJ0dDMyLFJzczMyKTpybmQ6c2F0IixBVFRSSUJTKEFfQVJDSFYyKSwKKyJB dmVyYWdlIHZlY3RvciBvZiB3b3JkcyIsCit7CisJZkhJREUoaW50IGk7KQorCWZvciAoaT0wO2k8 MjtpKyspIHsKKwkJZlNFVFdPUkQoaSxSZGRWLGZTQVQoKGZTWFROKDMyLDMzLGZHRVRXT1JEKGks UnR0VikpLWZTWFROKDMyLDMzLGZHRVRXT1JEKGksUnNzVikpKzEpPj4xKSk7CisJfQorfSkKKwor UTZJTlNOKEEyX3Zhdmd3Y3IsIlJkZDMyPXZhdmd3KFJzczMyLFJ0dDMyKTpjcm5kIixBVFRSSUJT KEFfQVJDSFYyKSwKKyJBdmVyYWdlIHZlY3RvciBvZiB3b3JkcyB3aXRoIGNvbnZlcmdlbnQgcm91 bmRpbmciLAoreworCWZISURFKGludCBpOykKKwlmb3IgKGk9MDtpPDI7aSsrKSB7CisJCWZTRVRX T1JEKGksUmRkViwoZkNSTkQoZlNYVE4oMzIsMzMsZkdFVFdPUkQoaSxSc3NWKSkrZlNYVE4oMzIs MzMsZkdFVFdPUkQoaSxSdHRWKSkpPj4xKSk7CisJfQorfSkKKworUTZJTlNOKEEyX3ZuYXZnd2Ny LCJSZGQzMj12bmF2Z3coUnR0MzIsUnNzMzIpOmNybmQ6c2F0IixBVFRSSUJTKEFfQVJDSFYyKSwK KyJBdmVyYWdlIG5lZ2F0aXZlIHZlY3RvciBvZiB3b3JkcyB3aXRoIGNvbnZlcmdlbnQgcm91bmRp bmciLAoreworCWZISURFKGludCBpOykKKwlmb3IgKGk9MDtpPDI7aSsrKSB7CisJCWZTRVRXT1JE KGksUmRkVixmU0FUKGZDUk5EKGZTWFROKDMyLDMzLGZHRVRXT1JEKGksUnR0VikpLWZTWFROKDMy LDMzLGZHRVRXT1JEKGksUnNzVikpKT4+MSkpOworCX0KK30pCisKK1E2SU5TTihBMl92YXZnaGNy LCJSZGQzMj12YXZnaChSc3MzMixSdHQzMik6Y3JuZCIsQVRUUklCUyhBX0FSQ0hWMiksCisiQXZl cmFnZSB2ZWN0b3Igb2YgaGFsZndvcmRzIHdpdGggY29udiByb3VuZGluZyIsCit7CisJZkhJREUo aW50IGk7KQorCWZvciAoaT0wO2k8NDtpKyspIHsKKwkJZlNFVEhBTEYoaSxSZGRWLGZDUk5EKGZH RVRIQUxGKGksUnNzVikrZkdFVEhBTEYoaSxSdHRWKSk+PjEpOworCX0KK30pCisKK1E2SU5TTihB Ml92bmF2Z2hjciwiUmRkMzI9dm5hdmdoKFJ0dDMyLFJzczMyKTpjcm5kOnNhdCIsQVRUUklCUyhB X0FSQ0hWMiksCisiQXZlcmFnZSBuZWdhdGl2ZSB2ZWN0b3Igb2YgaGFsZndvcmRzIHdpdGggY29u diByb3VuZGluZyIsCit7CisJZkhJREUoaW50IGk7KQorCWZvciAoaT0wO2k8NDtpKyspIHsKKwkJ ZlNFVEhBTEYoaSxSZGRWLGZTQVRIKGZDUk5EKGZHRVRIQUxGKGksUnR0ViktZkdFVEhBTEYoaSxS c3NWKSk+PjEpKTsKKwl9Cit9KQorCisKK1E2SU5TTihBMl92YXZndXcsIlJkZDMyPXZhdmd1dyhS c3MzMixSdHQzMikiLEFUVFJJQlMoKSwKKyJBdmVyYWdlIHZlY3RvciBvZiB1bnNpZ25lZCB3b3Jk cyIsCit7CisJZkhJREUoaW50IGk7KQorCWZvciAoaT0wO2k8MjtpKyspIHsKKwkJZlNFVFdPUkQo aSxSZGRWLChmWlhUTigzMiwzMyxmR0VUVVdPUkQoaSxSc3NWKSkrZlpYVE4oMzIsMzMsZkdFVFVX T1JEKGksUnR0VikpKT4+MSk7CisJfQorfSkKKworUTZJTlNOKEEyX3Zhdmd1d3IsIlJkZDMyPXZh dmd1dyhSc3MzMixSdHQzMik6cm5kIixBVFRSSUJTKCksCisiQXZlcmFnZSB2ZWN0b3Igb2YgdW5z aWduZWQgd29yZHMiLAoreworCWZISURFKGludCBpOykKKwlmb3IgKGk9MDtpPDI7aSsrKSB7CisJ CWZTRVRXT1JEKGksUmRkViwoZlpYVE4oMzIsMzMsZkdFVFVXT1JEKGksUnNzVikpK2ZaWFROKDMy LDMzLGZHRVRVV09SRChpLFJ0dFYpKSsxKT4+MSk7CisJfQorfSkKKworUTZJTlNOKEEyX3Zhdmd1 YnIsIlJkZDMyPXZhdmd1YihSc3MzMixSdHQzMik6cm5kIixBVFRSSUJTKCksCisiQXZlcmFnZSB2 ZWN0b3Igb2YgdW5zaWduZWQgYnl0ZXMiLAoreworCWZISURFKGludCBpOykKKwlmb3IgKGkgPSAw OyBpIDwgODsgaSsrKSB7CisJCWZTRVRCWVRFKGksUmRkViwoKGZHRVRVQllURShpLFJzc1YpK2ZH RVRVQllURShpLFJ0dFYpKzEpPj4xKSk7CisJfQorfSkKKworUTZJTlNOKEEyX3Zhdmd1aHIsIlJk ZDMyPXZhdmd1aChSc3MzMixSdHQzMik6cm5kIixBVFRSSUJTKCksCisiQXZlcmFnZSB2ZWN0b3Ig b2YgdW5zaWduZWQgaGFsZndvcmRzIHdpdGggcm91bmRpbmciLAoreworCWZISURFKGludCBpOykK Kwlmb3IgKGk9MDtpPDQ7aSsrKSB7CisJCWZTRVRIQUxGKGksUmRkViwoZkdFVFVIQUxGKGksUnNz VikrZkdFVFVIQUxGKGksUnR0VikrMSk+PjEpOworCX0KK30pCisKK1E2SU5TTihBMl92YXZnaHIs IlJkZDMyPXZhdmdoKFJzczMyLFJ0dDMyKTpybmQiLEFUVFJJQlMoKSwKKyJBdmVyYWdlIHZlY3Rv ciBvZiBoYWxmd29yZHMgd2l0aCByb3VuZGluZyIsCit7CisJZkhJREUoaW50IGk7KQorCWZvciAo aT0wO2k8NDtpKyspIHsKKwkJZlNFVEhBTEYoaSxSZGRWLChmR0VUSEFMRihpLFJzc1YpK2ZHRVRI QUxGKGksUnR0VikrMSk+PjEpOworCX0KK30pCisKK1E2SU5TTihBMl92bmF2Z2hyLCJSZGQzMj12 bmF2Z2goUnR0MzIsUnNzMzIpOnJuZDpzYXQiLEFUVFJJQlMoQV9BUkNIVjIpLAorIk5lZ2F0aXZl IEF2ZXJhZ2UgdmVjdG9yIG9mIGhhbGZ3b3JkcyB3aXRoIHJvdW5kaW5nIiwKK3sKKwlmSElERShp bnQgaTspCisJZm9yIChpPTA7aTw0O2krKykgeworCQlmU0VUSEFMRihpLFJkZFYsZlNBVEgoKGZH RVRIQUxGKGksUnR0ViktZkdFVEhBTEYoaSxSc3NWKSsxKT4+MSkpOworCX0KK30pCisKKworLyog Um91bmRpbmcgSW5zdHJ1Y3Rpb24gKi8KKworUTZJTlNOKEE0X3JvdW5kX3JpLCJSZDMyPXJvdW5k KFJzMzIsI3U1KSIsQVRUUklCUygpLCJSb3VuZCIsIHtSZFYgPSBmUk5ETihSc1YsdWlWKT4+dWlW OyB9KQorUTZJTlNOKEE0X3JvdW5kX3JyLCJSZDMyPXJvdW5kKFJzMzIsUnQzMikiLEFUVFJJQlMo KSwiUm91bmQiLCB7UmRWID0gZlJORE4oUnNWLGZaWFROKDUsMzIsUnRWKSk+PmZaWFROKDUsMzIs UnRWKTsgfSkKK1E2SU5TTihBNF9yb3VuZF9yaV9zYXQsIlJkMzI9cm91bmQoUnMzMiwjdTUpOnNh dCIsQVRUUklCUygpLCJSb3VuZCIsIHtSZFYgPSAoZlNBVChmUk5ETihSc1YsdWlWKSkpPj51aVY7 IH0pCitRNklOU04oQTRfcm91bmRfcnJfc2F0LCJSZDMyPXJvdW5kKFJzMzIsUnQzMik6c2F0IixB VFRSSUJTKCksIlJvdW5kIiwge1JkViA9IChmU0FUKGZSTkROKFJzVixmWlhUTig1LDMyLFJ0Vikp KSk+PmZaWFROKDUsMzIsUnRWKTsgfSkKKworCitRNklOU04oQTRfY3JvdW5kX3JpLCJSZDMyPWNy b3VuZChSczMyLCN1NSkiLEFUVFJJQlMoKSwiQ29udmVyZ2VudCBSb3VuZCIsIHtSZFYgPSBmQ1JO RE4oUnNWLHVpVik7IH0pCitRNklOU04oQTRfY3JvdW5kX3JyLCJSZDMyPWNyb3VuZChSczMyLFJ0 MzIpIixBVFRSSUJTKCksIkNvbnZlcmdlbnQgUm91bmQiLCB7UmRWID0gZkNSTkROKFJzVixmWlhU Tig1LDMyLFJ0VikpOyB9KQorCisKKyNkZWZpbmUgQ1JPVU5EKERTVCxTUkMsU0hJRlQpIFwKKwlm SElERShzaXplMTZzX3Qgcm5kYml0XzEyODspXAorCWZISURFKHNpemUxNnNfdCB0bXAxMjg7KVwK KwlmSElERShzaXplMTZzX3Qgc3JjXzEyODspXAorCWlmIChTSElGVCA9PSAwKSB7IFwKKwkJRFNU ID0gU1JDO1wKKwl9IGVsc2UgaWYgKChTUkMgJiAoc2l6ZThzX3QpKCgxTEwgPDwgKFNISUZUIC0g MSkpIC0gMUxMKSkgPT0gMCkgeyBcCisJCXNyY18xMjggPSBmQ0FTVDhTXzE2UyhTUkMpO1wKKwkJ cm5kYml0XzEyOCA9IGZDQVNUOFNfMTZTKDFMTCk7XAorCQlybmRiaXRfMTI4ID0gZlNISUZUTDEy OChybmRiaXRfMTI4LCBTSElGVCk7XAorCQlybmRiaXRfMTI4ID0gZkFORDEyOChybmRiaXRfMTI4 LCBzcmNfMTI4KTtcCisJCXJuZGJpdF8xMjggPSBmU0hJRlRSMTI4KHJuZGJpdF8xMjgsIDEpO1wK KwkJdG1wMTI4ID0gZkFERDEyOChzcmNfMTI4LCBybmRiaXRfMTI4KTtcCisJCXRtcDEyOCA9IGZT SElGVFIxMjgodG1wMTI4LCBTSElGVCk7XAorCQlEU1QgPSAgZkNBU1QxNlNfOFModG1wMTI4KTtc CisJfSBlbHNlIHtcCisJCXNpemUxNnNfdCBybmRiaXRfMTI4ID0gIGZDQVNUOFNfMTZTKCgxTEwg PDwgKFNISUZUIC0gMSkpKTsgXAorCQlzaXplMTZzX3Qgc3JjXzEyOCA9ICBmQ0FTVDhTXzE2UyhT UkMpOyBcCisJCXNpemUxNnNfdCB0bXAxMjggPSBmQUREMTI4KHNyY18xMjgsIHJuZGJpdF8xMjgp O1wKKwkJdG1wMTI4ID0gZlNISUZUUjEyOCh0bXAxMjgsIFNISUZUKTtcCisJCURTVCA9ICBmQ0FT VDE2U184Uyh0bXAxMjgpO1wKKwl9CisKK1E2SU5TTihBN19jcm91bmRkX3JpLCJSZGQzMj1jcm91 bmQoUnNzMzIsI3U2KSIsQVRUUklCUygpLCJDb252ZXJnZW50IFJvdW5kIiwKK3sKK0NST1VORChS ZGRWLFJzc1YsdWlWKTsKK2ZFWFRFTlNJT05fQVVESU8oKTt9KQorCitRNklOU04oQTdfY3JvdW5k ZF9yciwiUmRkMzI9Y3JvdW5kKFJzczMyLFJ0MzIpIixBVFRSSUJTKCksIkNvbnZlcmdlbnQgUm91 bmQiLAoreworQ1JPVU5EKFJkZFYsUnNzVixmWlhUTig2LDMyLFJ0VikpOworZkVYVEVOU0lPTl9B VURJTygpO30pCisKKworCisKKworCisKKworCitRNklOU04oQTdfY2xpcCwiUmQzMj1jbGlwKFJz MzIsI3U1KSIsQVRUUklCUygpLCJDbGlwIHRvICAjczUiLCAJeyAgIGZDTElQKFJkVixSc1YsdWlW KTsgZkVYVEVOU0lPTl9BVURJTygpO30pCitRNklOU04oQTdfdmNsaXAsIlJkZDMyPXZjbGlwKFJz czMyLCN1NSkiLEFUVFJJQlMoKSwiQ2xpcCB0byAgI3M1IiwKK3sKK2ZISURFKHNpemU0c190IHRt cDspCitmQ0xJUCh0bXAsIGZHRVRXT1JEKDAsIFJzc1YpLCB1aVYpOworZlNFVFdPUkQoMCwgUmRk ViwgdG1wKTsKK2ZDTElQKHRtcCxmR0VUV09SRCgxLCBSc3NWKSwgdWlWKTsKK2ZTRVRXT1JEKDEs IFJkZFYsIHRtcCk7CitmRVhURU5TSU9OX0FVRElPKCk7Cit9CispCisKKworCisvKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIFY0OiBDcm9zcyBWZWN0 b3IgTWluL01heAkJICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqLworCisKKyNkZWZpbmUgVlJNSU5PUk1BWChUQUcsU1RSLE9QLFNIT1JUVFlQRSxT RVRUWVBFLEdFVFRZUEUsTkVMLFNISUZUKSBcCitRNklOU04oQTRfdnIjI1RBRyMjU0hPUlRUWVBF LCJSeHgzMj12ciIjVEFHI1NIT1JUVFlQRSIoUnNzMzIsUnUzMikiLEFUVFJJQlMoKSwgXAorIkNo b29zZSAiIFNUUiAiIGVsZW1lbnRzIG9mIGEgdmVjdG9yIiwgXAoreyBcCisJZkhJREUoaW50IGk7 IHNpemU4c190IFRBRzsgc2l6ZTRzX3QgYWRkcjspIFwKKwlUQUcgPSBmR0VUIyNHRVRUWVBFKDAs Unh4Vik7IFwKKwlhZGRyID0gZkdFVFdPUkQoMSxSeHhWKTsgXAorCWZvciAoaSA9IDA7IGkgPCBO RUw7IGkrKykgeyBcCisJCWlmIChUQUcgT1AgZkdFVCMjR0VUVFlQRShpLFJzc1YpKSB7IFwKKwkJ CVRBRyA9IGZHRVQjI0dFVFRZUEUoaSxSc3NWKTsgXAorCQkJYWRkciA9IFJ1ViB8IGk8PFNISUZU OyBcCisJCX0gXAorCX0gXAorCWZTRVRXT1JEKDAsUnh4VixUQUcpOyBcCisJZlNFVFdPUkQoMSxS eHhWLGFkZHIpOyBcCit9KQorCisjZGVmaW5lIFJNSU5NQVgoU0hPUlRUWVBFLFNFVFRZUEUsR0VU VFlQRSxORUwsU0hJRlQpIFwKK1ZSTUlOT1JNQVgobWluLCJtaW5pbXVtIiw+LFNIT1JUVFlQRSxT RVRUWVBFLEdFVFRZUEUsTkVMLFNISUZUKSBcCitWUk1JTk9STUFYKG1heCwibWF4aW11bSIsPCxT SE9SVFRZUEUsU0VUVFlQRSxHRVRUWVBFLE5FTCxTSElGVCkKKworCitSTUlOTUFYKGgsSEFMRixI QUxGLDQsMSkKK1JNSU5NQVgodWgsSEFMRixVSEFMRiw0LDEpCitSTUlOTUFYKHcsV09SRCxXT1JE LDIsMikKK1JNSU5NQVgodXcsV09SRCxVV09SRCwyLDIpCisKKyN1bmRlZiBSTUlOTUFYCisjdW5k ZWYgVlJNSU5PUk1BWAorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKi8KKy8qIFZlY3RvciBNaW4vTWF4CQkJICAgICAqLworLyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNkZWZpbmUgVk1JTk9STUFYKFRBRyxT VFIsRlVOQyxTSE9SVFRZUEUsU0VUVFlQRSxHRVRUWVBFLE5FTCkgXAorUTZJTlNOKEEyX3YjI1RB RyMjU0hPUlRUWVBFLCJSZGQzMj12IiNUQUcjU0hPUlRUWVBFIihSdHQzMixSc3MzMikiLEFUVFJJ QlMoKSwgXAorIkNob29zZSAiIFNUUiAiIGVsZW1lbnRzIG9mIHR3byB2ZWN0b3JzIiwgXAoreyBc CisJZkhJREUoaW50IGk7KSBcCisJZm9yIChpID0gMDsgaSA8IE5FTDsgaSsrKSB7IFwKKwkJZlNF VCMjU0VUVFlQRShpLFJkZFYsRlVOQyhmR0VUIyNHRVRUWVBFKGksUnR0ViksZkdFVCMjR0VUVFlQ RShpLFJzc1YpKSk7IFwKKwl9IFwKK30pCisKKyNkZWZpbmUgVk1JTk9STUFYMyhUQUcsU1RSLEZV TkMsU0hPUlRUWVBFLFNFVFRZUEUsR0VUVFlQRSxORUwpIFwKK1E2SU5TTihBNl92IyNUQUcjI1NI T1JUVFlQRSMjMywiUnh4MzI9diIjVEFHI1NIT1JUVFlQRSIzKFJ0dDMyLFJzczMyKSIsQVRUUklC UygpLCBcCisiQ2hvb3NlICIgU1RSICIgZWxlbWVudHMgb2YgdHdvIHZlY3RvcnMiLCBcCit7IFwK KwlmSElERShpbnQgaTspIFwKKwlmb3IgKGkgPSAwOyBpIDwgTkVMOyBpKyspIHsgXAorCQlmU0VU IyNTRVRUWVBFKGksUnh4VixGVU5DKGZHRVQjI0dFVFRZUEUoaSxSeHhWKSxGVU5DKGZHRVQjI0dF VFRZUEUoaSxSdHRWKSxmR0VUIyNHRVRUWVBFKGksUnNzVikpKSk7IFwKKwl9IFwKK30pCisKKyNk ZWZpbmUgTUlOTUFYKFNIT1JUVFlQRSxTRVRUWVBFLEdFVFRZUEUsTkVMKSBcCitWTUlOT1JNQVgo bWluLCJtaW5pbXVtIixmTUlOLFNIT1JUVFlQRSxTRVRUWVBFLEdFVFRZUEUsTkVMKSBcCitWTUlO T1JNQVgobWF4LCJtYXhpbXVtIixmTUFYLFNIT1JUVFlQRSxTRVRUWVBFLEdFVFRZUEUsTkVMKQor CitNSU5NQVgoYixCWVRFLEJZVEUsOCkKK01JTk1BWCh1YixCWVRFLFVCWVRFLDgpCitNSU5NQVgo aCxIQUxGLEhBTEYsNCkKK01JTk1BWCh1aCxIQUxGLFVIQUxGLDQpCitNSU5NQVgodyxXT1JELFdP UkQsMikKK01JTk1BWCh1dyxXT1JELFVXT1JELDIpCisKKyN1bmRlZiBNSU5NQVgKKyN1bmRlZiBW TUlOT1JNQVgKKyN1bmRlZiBWTUlOT1JNQVgzCisKKworUTZJTlNOKEE1X0FDUywiUnh4MzIsUGU0 PXZhY3NoKFJzczMyLFJ0dDMyKSIsQVRUUklCUyhBX05PVEVfTEFURVBSRUQsQV9SRVNUUklDVF9M QVRFUFJFRCksCisiQWRkIENvbXBhcmUgYW5kIFNlbGVjdCBlbGVtZW50cyBvZiB0d28gdmVjdG9y cywgcmVjb3JkIHRoZSBtYXhpbXVtcyBhbmQgdGhlIGRlY2lzaW9ucyAiLAoreworICAgICAgICBm SElERShpbnQgaTspCisgICAgICAgIGZISURFKGludCB4djspCisgICAgICAgIGZISURFKGludCBz djspCisgICAgICAgIGZISURFKGludCB0djspCisgICAgICAgIGZvciAoaSA9IDA7IGkgPCA0OyBp KyspIHsKKyAgICAgICAgICAgICAgICB4diA9IChpbnQpIGZHRVRIQUxGKGksUnh4Vik7CisgICAg ICAgICAgICAgICAgc3YgPSAoaW50KSBmR0VUSEFMRihpLFJzc1YpOworICAgICAgICAgICAgICAg IHR2ID0gKGludCkgZkdFVEhBTEYoaSxSdHRWKTsKKyAgICAgICAgICAgICAgICB4diA9IHh2ICsg dHY7ICAgICAgICAgICAvL2Fzc3VtZXMgMTdiaXQgZGF0YXBhdGgKKyAgICAgICAgICAgICAgICBz diA9IHN2IC0gdHY7ICAgICAgICAgICAvL2Fzc3VtZXMgMTdiaXQgZGF0YXBhdGgKKyAgICAgICAg ICAgICAgICBmU0VUQklUKGkqMiwgIFBlViwgICh4diA+IHN2KSk7CisgICAgICAgICAgICAgICAg ZlNFVEJJVChpKjIrMSxQZVYsICAoeHYgPiBzdikpOworCQlmU0VUSEFMRihpLCAgIFJ4eFYsIGZT QVRIKGZNQVgoeHYsc3YpKSk7CisgICAgICAgIH0KK30pCisKK1E2SU5TTihBNl92bWludWJfUmRQ LCJSZGQzMixQZTQ9dm1pbnViKFJ0dDMyLFJzczMyKSIsQVRUUklCUyhBX05PVEVfTEFURVBSRUQs QV9SRVNUUklDVF9MQVRFUFJFRCksCisiVmVjdG9yIG1pbmltdW0gb2YgYnl0ZXMsIHJlY29yZHMg bWluaW11bSBhbmQgZGVjaXNpb24gdmVjdG9yIiwKK3sKKyAgICAgICAgZkhJREUoaW50IGk7KQor ICAgICAgICBmb3IgKGkgPSAwOyBpIDwgODsgaSsrKSB7CisJCQlmU0VUQklUKGksIFBlViwgICAg IChmR0VUVUJZVEUoaSxSdHRWKSA+IGZHRVRVQllURShpLFJzc1YpKSk7CisJCQlmU0VUQllURShp LFJkZFYsZk1JTihmR0VUVUJZVEUoaSxSdHRWKSxmR0VUVUJZVEUoaSxSc3NWKSkpOworICAgICAg ICB9Cit9KQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ki8KKy8qIFZlY3RvciBNaW4vTWF4CQkJICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKiovCisKKworUTZJTlNOKEE0X21vZHdyYXB1LCJSZDMyPW1v ZHdyYXAoUnMzMixSdDMyKSIsQVRUUklCUygpLAorIldyYXAgdG8gYW4gdW5zaWduZWQgbW9kdWxv IGJ1ZmZlciIsCit7CisJaWYgKFJzViA8IDApIHsKKwkgICAgUmRWID0gUnNWICsgZkNBU1Q0dShS dFYpOworCX0gZWxzZSBpZiAoZkNBU1Q0dShSc1YpID49IGZDQVNUNHUoUnRWKSkgeworCSAgICBS ZFYgPSBSc1YgLSBmQ0FTVDR1KFJ0Vik7CisJfSBlbHNlIHsKKyAJIAkJIFJkViA9IFJzVjsKKyAg ICB9Cit9KQorCmRpZmYgLS1naXQgYS90YXJnZXQvaGV4YWdvbi9pbXBvcnRlZC9icmFuY2guaWRl ZiBiL3RhcmdldC9oZXhhZ29uL2ltcG9ydGVkL2JyYW5jaC5pZGVmCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLmVkMDY2ZjYKLS0tIC9kZXYvbnVsbAorKysgYi90YXJnZXQvaGV4 YWdvbi9pbXBvcnRlZC9icmFuY2guaWRlZgpAQCAtMCwwICsxLDM0NCBAQAorLyoKKyAqICBDb3B5 cmlnaHQoYykgMjAxOS0yMDIwIFF1YWxjb21tIElubm92YXRpb24gQ2VudGVyLCBJbmMuIEFsbCBS aWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiAgaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAq ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBM aWNlbnNlLCBvcgorICogIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgor ICogIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl ZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiAgYWxvbmcgd2l0 aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMv Pi4KKyAqLworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KiovCisvKiBKdW1wIGluc3RydWN0aW9ucwkJCSAqLworLyoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKi8KKworI2RlZmluZSBBX0NPRlNURCBBX1JFU1RSSUNUX0xP T1BfTEEsQV9SRVNUUklDVF9DT0ZfTUFYMQorI2RlZmluZSBBX0pESVIgQV9KVU1QLEFfRElSRUNU LEFfQ09GU1RELEFfQlJBTkNIQURERVIKKyNkZWZpbmUgQV9DSk5FV0RJUiBBX0pVTVAsQV9ESVJF Q1QsQV9DSlVNUCxBX0NPRlNURCxBX0JSQU5DSEFEREVSLEFfRE9UTkVXLEFfUk9QU18yCisjZGVm aW5lIEFfQ0pPTERESVIgQV9KVU1QLEFfRElSRUNULEFfQ0pVTVAsQV9DT0ZTVEQsQV9CUkFOQ0hB RERFUixBX0RPVE9MRAorI2RlZmluZSBBX05FV1ZBTFVFSiBBX0pVTVAsQV9ESVJFQ1QsQV9DSlVN UCxBX0NPRlNURCxBX0JSQU5DSEFEREVSLEFfUkVTVFJJQ1RfQ09GX01BWDEsQV9ET1RORVdWQUxV RSxBX01FTUxJS0VfUEFDS0VUX1JVTEVTLEFfUkVTVFJJQ1RfU0lOR0xFX01FTV9GSVJTVCxBX1JP UFNfMgorI2RlZmluZSBBX0pJTkRJUiBBX0pVTVAsQV9JTkRJUkVDVCxBX0NPRlNURAorI2RlZmlu ZSBBX0pJTkRJUk5FVyBBX0pVTVAsQV9JTkRJUkVDVCxBX0NPRlNURCxBX0NKVU1QLEFfRE9UTkVX CisjZGVmaW5lIEFfSklORElST0xEIEFfSlVNUCxBX0lORElSRUNULEFfQ09GU1RELEFfQ0pVTVAs QV9ET1RPTEQKKworI2RlZmluZSBBX1JFTEFYX0NPTkQgQV9SRVNUUklDVF9DT0ZfTUFYMSxBX1JF TEFYX0NPRl8yTkQsQV9SRUxBWF9DT0ZfMVNUCisjZGVmaW5lIEFfUkVMQVhfVU5DIEFfUkVTVFJJ Q1RfQ09GX01BWDEsQV9SRUxBWF9DT0ZfMk5ECisKK1E2SU5TTihKMl9qdW1wLCJqdW1wICNyMjI6 MiIsQVRUUklCUyhBX0pESVIsQV9SRUxBWF9VTkMpLCAiZGlyZWN0IHVuY29uZGl0aW9uYWwganVt cCIsCit7ZklNTUVYVChyaVYpOyBmUENBTElHTihyaVYpOyBmQlJBTkNIKGZSRUFEX1BDKCkrcmlW LENPRl9UWVBFX0pVTVApO30pCisKK1E2SU5TTihKMl9qdW1wciwianVtcHIgUnMzMiIsQVRUUklC UyhBX0pJTkRJUiksICJpbmRpcmVjdCB1bmNvbmRpdGlvbmFsIGp1bXAiLAore2ZKVU1QUihSc04s UnNWLENPRl9UWVBFX0pVTVBSKTt9KQorCisjZGVmaW5lIE9MRENPTkRfSlVNUChUQUcsT1BFUixP UEVSMixBVFRSSUIsREVTQ1IsU0VNQU5USUNTKSBcCitRNklOU04oVEFHIyN0LCJpZiAoUHU0KSAi T1BFUiI6bnQgIk9QRVIyLEFUVFJJQixERVNDUix7ZkJSQU5DSF9TUEVDVUxBVEVfU1RBTEwoZkxT Qk9MRChQdVYpLCxTUEVDVUxBVEVfTk9UX1RBS0VOLDEyLDApOyBpZiAoZkxTQk9MRChQdVYpKSB7 IFNFTUFOVElDUzsgfX0pIFwKK1E2SU5TTihUQUcjI2YsImlmICghUHU0KSAiT1BFUiI6bnQgIk9Q RVIyLEFUVFJJQixERVNDUix7ZkJSQU5DSF9TUEVDVUxBVEVfU1RBTEwoZkxTQk9MRE5PVChQdVYp LCxTUEVDVUxBVEVfTk9UX1RBS0VOLDEyLDApOyBpZiAoZkxTQk9MRE5PVChQdVYpKSB7IFNFTUFO VElDUzsgfX0pIFwKK1E2SU5TTihUQUcjI3RwdCwiaWYgKFB1NCkgIk9QRVIiOnQgIk9QRVIyLEFU VFJJQixERVNDUix7ZkJSQU5DSF9TUEVDVUxBVEVfU1RBTEwoZkxTQk9MRChQdVYpLCxTUEVDVUxB VEVfVEFLRU4sMTIsMCk7IGlmIChmTFNCT0xEKFB1VikpIHsgU0VNQU5USUNTOyB9fSkgXAorUTZJ TlNOKFRBRyMjZnB0LCJpZiAoIVB1NCkgIk9QRVIiOnQgIk9QRVIyLEFUVFJJQixERVNDUix7ZkJS QU5DSF9TUEVDVUxBVEVfU1RBTEwoZkxTQk9MRE5PVChQdVYpLCxTUEVDVUxBVEVfVEFLRU4sMTIs MCk7IGlmIChmTFNCT0xETk9UKFB1VikpIHsgU0VNQU5USUNTOyB9fSkgXAorREVGX01BUFBJTkco VEFHIyN0X25vcHJlZF9tYXAsImlmIChQdTQpICJPUEVSIiAiT1BFUjIsImlmIChQdTQpICJPUEVS IjpudCAiT1BFUjIpIFwKK0RFRl9NQVBQSU5HKFRBRyMjZl9ub3ByZWRfbWFwLCJpZiAoIVB1NCkg Ik9QRVIiICJPUEVSMiwiaWYgKCFQdTQpICJPUEVSIjpudCAiT1BFUjIpCisKK09MRENPTkRfSlVN UChKMl9qdW1wLCJqdW1wIiwiI3IxNToyIixBVFRSSUJTKEFfQ0pPTERESVIsQV9OT1RFX0NPTkRJ VElPTkFMLEFfUkVMQVhfQ09ORCxBX1BSRURfQklUXzEyKSwiZGlyZWN0IGNvbmRpdGlvbmFsIGp1 bXAiLAorZklNTUVYVChyaVYpO2ZQQ0FMSUdOKHJpVik7IGZCUkFOQ0goZlJFQURfUEMoKStyaVYs Q09GX1RZUEVfSlVNUCk7KQorCitPTERDT05EX0pVTVAoSjJfanVtcHIsImp1bXByIiwiUnMzMiIs QVRUUklCUyhBX0pJTkRJUk9MRCxBX05PVEVfQ09ORElUSU9OQUwsQV9QUkVEX0JJVF8xMiksImlu ZGlyZWN0IGNvbmRpdGlvbmFsIGp1bXAiLAorZkpVTVBSKFJzTixSc1YsQ09GX1RZUEVfSlVNUFIp OykKKworI2RlZmluZSBORVdDT05EX0pVTVAoVEFHLE9QRVIsT1BFUjIsQVRUUklCLERFU0NSLFNF TUFOVElDUylcCitRNklOU04oVEFHIyN0bmV3LCJpZiAoUHU0Lm5ldykgIk9QRVIiOm50ICJPUEVS MixBVFRSSUIsREVTQ1Ise2ZCUkFOQ0hfU1BFQ1VMQVRFX1NUQUxMKGZMU0JORVcoUHVOKSwsIFNQ RUNVTEFURV9OT1RfVEFLRU4gLCAxMiwwKX0ge2lmKGZMU0JORVcoUHVOKSl7U0VNQU5USUNTO319 KVwKK1E2SU5TTihUQUcjI2ZuZXcsImlmICghUHU0Lm5ldykgIk9QRVIiOm50ICJPUEVSMixBVFRS SUIsREVTQ1Ise2ZCUkFOQ0hfU1BFQ1VMQVRFX1NUQUxMKGZMU0JORVdOT1QoUHVOKSwsIFNQRUNV TEFURV9OT1RfVEFLRU4gLCAxMiwwKX0ge2lmKGZMU0JORVdOT1QoUHVOKSl7U0VNQU5USUNTO319 KVwKK1E2SU5TTihUQUcjI3RuZXdwdCwiaWYgKFB1NC5uZXcpICJPUEVSIjp0ICJPUEVSMixBVFRS SUIsREVTQ1Ise2ZCUkFOQ0hfU1BFQ1VMQVRFX1NUQUxMKGZMU0JORVcoUHVOKSwsIFNQRUNVTEFU RV9UQUtFTiAsIDEyLDApfSB7aWYoZkxTQk5FVyhQdU4pKXtTRU1BTlRJQ1M7fX0pXAorUTZJTlNO KFRBRyMjZm5ld3B0LCJpZiAoIVB1NC5uZXcpICJPUEVSIjp0ICJPUEVSMixBVFRSSUIsREVTQ1Is e2ZCUkFOQ0hfU1BFQ1VMQVRFX1NUQUxMKGZMU0JORVdOT1QoUHVOKSwsIFNQRUNVTEFURV9UQUtF TiAsIDEyLDApfSB7aWYoZkxTQk5FV05PVChQdU4pKXtTRU1BTlRJQ1M7fX0pCisKK05FV0NPTkRf SlVNUChKMl9qdW1wLCJqdW1wIiwiI3IxNToyIixBVFRSSUJTKEFfQ0pORVdESVIsQV9OT1RFX0NP TkRJVElPTkFMLEFfQVJDSFYyLEFfUkVMQVhfQ09ORCxBX1BSRURfQklUXzEyKSwiZGlyZWN0IGNv bmRpdGlvbmFsIGp1bXAiLAorZklNTUVYVChyaVYpOyBmUENBTElHTihyaVYpOyBmQlJBTkNIKGZS RUFEX1BDKCkrcmlWLENPRl9UWVBFX0pVTVBORVcpOykKKworTkVXQ09ORF9KVU1QKEoyX2p1bXBy LCJqdW1wciIsIlJzMzIiLEFUVFJJQlMoQV9KSU5ESVJORVcsQV9OT1RFX0NPTkRJVElPTkFMLEFf QVJDSFYzLEFfUFJFRF9CSVRfMTIpLCJpbmRpcmVjdCBjb25kaXRpb25hbCBqdW1wIiwKK2ZKVU1Q UihSc04sUnNWLENPRl9UWVBFX0pVTVBSKTspCisKKworCitRNklOU04oSjRfaGludGp1bXByLCJo aW50anIoUnMzMikiLEFUVFJJQlMoQV9KSU5ESVIsQV9ISU5USlIpLCJoaW50IGluZGlyZWN0IGNv bmRpdGlvbmFsIGp1bXAiLAore2ZISU5USlIoUnNWKTt9KQorCisKKy8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiBDb21wb3VuZCBDb21wYXJlLUp1bXBz CQkgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov CitRNklOU04oSjJfanVtcHJ6LCJpZiAoUnMzMiE9IzApIGp1bXA6bnQgI3IxMzoyIixBVFRSSUJT KEFfTk9URV9ERVBSRUNBVEVELEFfQ0pORVdESVIsQV9BUkNIVjMsQV9SRUxBWF9DT05ELEFfUFJF RF9CSVRfMTIpLCJkaXJlY3QgY29uZGl0aW9uYWwganVtcCBpZiByZWdpc3RlciB0cnVlIiwKK3tm QlJBTkNIX1NQRUNVTEFURV9TVEFMTCgoUnNWIT0wKSwgLCBTUEVDVUxBVEVfTk9UX1RBS0VOLDEy LDApIGlmIChSc1YgIT0gMCkgeyBmQlJBTkNIKGZSRUFEX1BDKCkrcmlWLENPRl9UWVBFX0pVTVAp O319KQorCitRNklOU04oSjJfanVtcHJueiwiaWYgKFJzMzI9PSMwKSBqdW1wOm50ICNyMTM6MiIs QVRUUklCUyhBX05PVEVfREVQUkVDQVRFRCxBX0NKTkVXRElSLEFfQVJDSFYzLEFfUkVMQVhfQ09O RCxBX1BSRURfQklUXzEyKSwiZGlyZWN0IGNvbmRpdGlvbmFsIGp1bXAgaWYgcmVnaXN0ZXIgZmFs c2UiLAore2ZCUkFOQ0hfU1BFQ1VMQVRFX1NUQUxMKChSc1Y9PTApLCAsIFNQRUNVTEFURV9OT1Rf VEFLRU4sMTIsMCkgaWYgKFJzViA9PSAwKSB7ZkJSQU5DSChmUkVBRF9QQygpK3JpVixDT0ZfVFlQ RV9KVU1QKTt9fSkKKworUTZJTlNOKEoyX2p1bXByenB0LCJpZiAoUnMzMiE9IzApIGp1bXA6dCAj cjEzOjIiLEFUVFJJQlMoQV9OT1RFX0RFUFJFQ0FURUQsQV9DSk5FV0RJUixBX0FSQ0hWMyxBX1JF TEFYX0NPTkQsQV9QUkVEX0JJVF8xMiksImRpcmVjdCBjb25kaXRpb25hbCBqdW1wIGlmIHJlZ2lz dGVyIHRydWUiLAore2ZCUkFOQ0hfU1BFQ1VMQVRFX1NUQUxMKChSc1YhPTApLCAsIFNQRUNVTEFU RV9UQUtFTiwxMiwwKSBpZiAoUnNWICE9IDApIHsgZkJSQU5DSChmUkVBRF9QQygpK3JpVixDT0Zf VFlQRV9KVU1QKTt9fSkKKworUTZJTlNOKEoyX2p1bXBybnpwdCwiaWYgKFJzMzI9PSMwKSBqdW1w OnQgI3IxMzoyIixBVFRSSUJTKEFfTk9URV9ERVBSRUNBVEVELEFfQ0pORVdESVIsQV9BUkNIVjMs QV9SRUxBWF9DT05ELEFfUFJFRF9CSVRfMTIpLCJkaXJlY3QgY29uZGl0aW9uYWwganVtcCBpZiBy ZWdpc3RlciBmYWxzZSIsCit7ZkJSQU5DSF9TUEVDVUxBVEVfU1RBTEwoKFJzVj09MCksICwgU1BF Q1VMQVRFX1RBS0VOLDEyLDApIGlmIChSc1YgPT0gMCkge2ZCUkFOQ0goZlJFQURfUEMoKStyaVYs Q09GX1RZUEVfSlVNUCk7fX0pCisKK1E2SU5TTihKMl9qdW1wcmd0ZXosImlmIChSczMyPj0jMCkg anVtcDpudCAjcjEzOjIiLEFUVFJJQlMoQV9OT1RFX0RFUFJFQ0FURUQsQV9DSk5FV0RJUixBX0FS Q0hWMyxBX1JFTEFYX0NPTkQsQV9QUkVEX0JJVF8xMiksImRpcmVjdCBjb25kaXRpb25hbCBqdW1w IGlmIHJlZ2lzdGVyIGdyZWF0ZXIgb3IgZXF1YWwgdG8gemVybyIsCit7ZkJSQU5DSF9TUEVDVUxB VEVfU1RBTEwoKFJzVj49MCksICwgU1BFQ1VMQVRFX05PVF9UQUtFTiwxMiwwKSBpZiAoUnNWPj0w KSB7IGZCUkFOQ0goZlJFQURfUEMoKStyaVYsQ09GX1RZUEVfSlVNUCk7fX0pCisKK1E2SU5TTihK Ml9qdW1wcmd0ZXpwdCwiaWYgKFJzMzI+PSMwKSBqdW1wOnQgI3IxMzoyIixBVFRSSUJTKEFfTk9U RV9ERVBSRUNBVEVELEFfQ0pORVdESVIsQV9BUkNIVjMsQV9SRUxBWF9DT05ELEFfUFJFRF9CSVRf MTIpLCJkaXJlY3QgY29uZGl0aW9uYWwganVtcCBpZiByZWdpc3RlciBncmVhdGVyIG9yIGVxdWFs IHRvIHplcm8iLAore2ZCUkFOQ0hfU1BFQ1VMQVRFX1NUQUxMKChSc1Y+PTApLCAsIFNQRUNVTEFU RV9UQUtFTiwxMiwwKSBpZiAoUnNWPj0wKSB7IGZCUkFOQ0goZlJFQURfUEMoKStyaVYsQ09GX1RZ UEVfSlVNUCk7fX0pCisKK1E2SU5TTihKMl9qdW1wcmx0ZXosImlmIChSczMyPD0jMCkganVtcDpu dCAjcjEzOjIiLEFUVFJJQlMoQV9OT1RFX0RFUFJFQ0FURUQsQV9DSk5FV0RJUixBX0FSQ0hWMyxB X1JFTEFYX0NPTkQsQV9QUkVEX0JJVF8xMiksImRpcmVjdCBjb25kaXRpb25hbCBqdW1wIGlmIHJl Z2lzdGVyIGxlc3MgdGhhbiBvciBlcXVhbCB0byB6ZXJvIiwKK3tmQlJBTkNIX1NQRUNVTEFURV9T VEFMTCgoUnNWPD0wKSwgLCBTUEVDVUxBVEVfTk9UX1RBS0VOLDEyLDApIGlmIChSc1Y8PTApIHsg ZkJSQU5DSChmUkVBRF9QQygpK3JpVixDT0ZfVFlQRV9KVU1QKTt9fSkKKworUTZJTlNOKEoyX2p1 bXBybHRlenB0LCJpZiAoUnMzMjw9IzApIGp1bXA6dCAjcjEzOjIiLEFUVFJJQlMoQV9OT1RFX0RF UFJFQ0FURUQsQV9DSk5FV0RJUixBX0FSQ0hWMyxBX1JFTEFYX0NPTkQsQV9QUkVEX0JJVF8xMiks ImRpcmVjdCBjb25kaXRpb25hbCBqdW1wIGlmIHJlZ2lzdGVyIGxlc3MgdGhhbiBvciBlcXVhbCB0 byB6ZXJvIiwKK3tmQlJBTkNIX1NQRUNVTEFURV9TVEFMTCgoUnNWPD0wKSwgLCBTUEVDVUxBVEVf VEFLRU4sMTIsMCkgaWYgKFJzVjw9MCkgeyBmQlJBTkNIKGZSRUFEX1BDKCkrcmlWLENPRl9UWVBF X0pVTVApO319KQorCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKi8KKy8qIFY0IENvbXBvdW5kIENvbXBhcmUtSnVtcHMJCSAqLworLyoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisvKiBWNCBjb21wb3VuZCBj b21wYXJlIGp1bXBzIChDSikgKi8KKyNkZWZpbmUgU1REX0NNUEpVTVAoVEFHLFRTVCxUU1RTRU0p XAorUTZJTlNOKEo0XyMjVEFHIyNfdHAwX2p1bXBfbnQsICJwMD0iVFNUIjsgaWYgKHAwLm5ldykg anVtcDpudCAjcjk6MiIsIEFUVFJJQlMoQV9DSk5FV0RJUixBX1JFTEFYX0NPTkQsQV9ORVdDTVBK VU1QLEFfUFJFRF9CSVRfMTMpLCJjb21wb3VuZCBjb21wYXJlLWp1bXAiLCB7ZlBBUlQxKGZXUklU RV9QMChmOEJJVFNPRihUU1RTRU0pKSkgIGZCUkFOQ0hfU1BFQ1VMQVRFX1NUQUxMKGZMU0JORVcw LCxTUEVDVUxBVEVfTk9UX1RBS0VOLDEzLDApICBpZiAoZkxTQk5FVzApIHtmSU1NRVhUKHJpVik7 IGZQQ0FMSUdOKHJpVik7IGZCUkFOQ0goZlJFQURfUEMoKStyaVYsQ09GX1RZUEVfSlVNUCk7fX0p XAorUTZJTlNOKEo0XyMjVEFHIyNfZnAwX2p1bXBfbnQsICJwMD0iVFNUIjsgaWYgKCFwMC5uZXcp IGp1bXA6bnQgI3I5OjIiLCBBVFRSSUJTKEFfQ0pORVdESVIsQV9SRUxBWF9DT05ELEFfTkVXQ01Q SlVNUCxBX1BSRURfQklUXzEzKSwiY29tcG91bmQgY29tcGFyZS1qdW1wIix7ZlBBUlQxKGZXUklU RV9QMChmOEJJVFNPRihUU1RTRU0pKSkgIGZCUkFOQ0hfU1BFQ1VMQVRFX1NUQUxMKGZMU0JORVcw Tk9ULCxTUEVDVUxBVEVfTk9UX1RBS0VOLDEzLDApIGlmIChmTFNCTkVXME5PVCkge2ZJTU1FWFQo cmlWKTsgZlBDQUxJR04ocmlWKTsgZkJSQU5DSChmUkVBRF9QQygpK3JpVixDT0ZfVFlQRV9KVU1Q KTt9fSlcCitRNklOU04oSjRfIyNUQUcjI190cDBfanVtcF90LCAgInAwPSJUU1QiOyBpZiAocDAu bmV3KSBqdW1wOnQgI3I5OjIiLCBBVFRSSUJTKEFfQ0pORVdESVIsQV9SRUxBWF9DT05ELEFfTkVX Q01QSlVNUCxBX1BSRURfQklUXzEzKSwiY29tcG91bmQgY29tcGFyZS1qdW1wIiwgIHtmUEFSVDEo ZldSSVRFX1AwKGY4QklUU09GKFRTVFNFTSkpKSAgZkJSQU5DSF9TUEVDVUxBVEVfU1RBTEwoZkxT Qk5FVzAsLFNQRUNVTEFURV9UQUtFTiwxMywwKSAgICAgIGlmIChmTFNCTkVXMCkge2ZJTU1FWFQo cmlWKTsgZlBDQUxJR04ocmlWKTsgZkJSQU5DSChmUkVBRF9QQygpK3JpVixDT0ZfVFlQRV9KVU1Q KTt9fSlcCitRNklOU04oSjRfIyNUQUcjI19mcDBfanVtcF90LCAgInAwPSJUU1QiOyBpZiAoIXAw Lm5ldykganVtcDp0ICNyOToyIiwgQVRUUklCUyhBX0NKTkVXRElSLEFfUkVMQVhfQ09ORCxBX05F V0NNUEpVTVAsQV9QUkVEX0JJVF8xMyksImNvbXBvdW5kIGNvbXBhcmUtanVtcCIsIHtmUEFSVDEo ZldSSVRFX1AwKGY4QklUU09GKFRTVFNFTSkpKSAgZkJSQU5DSF9TUEVDVUxBVEVfU1RBTEwoZkxT Qk5FVzBOT1QsLFNQRUNVTEFURV9UQUtFTiwxMywwKSAgICAgaWYgKGZMU0JORVcwTk9UKSB7ZklN TUVYVChyaVYpOyBmUENBTElHTihyaVYpOyBmQlJBTkNIKGZSRUFEX1BDKCkrcmlWLENPRl9UWVBF X0pVTVApO319KVwKK1E2SU5TTihKNF8jI1RBRyMjX3RwMV9qdW1wX250LCAicDE9IlRTVCI7IGlm IChwMS5uZXcpIGp1bXA6bnQgI3I5OjIiLCBBVFRSSUJTKEFfQ0pORVdESVIsQV9SRUxBWF9DT05E LEFfTkVXQ01QSlVNUCxBX1BSRURfQklUXzEzKSwiY29tcG91bmQgY29tcGFyZS1qdW1wIiwge2ZQ QVJUMShmV1JJVEVfUDEoZjhCSVRTT0YoVFNUU0VNKSkpICBmQlJBTkNIX1NQRUNVTEFURV9TVEFM TChmTFNCTkVXMSwsU1BFQ1VMQVRFX05PVF9UQUtFTiwxMywwKSAgaWYgKGZMU0JORVcxKSB7ZklN TUVYVChyaVYpOyBmUENBTElHTihyaVYpOyBmQlJBTkNIKGZSRUFEX1BDKCkrcmlWLENPRl9UWVBF X0pVTVApO319KVwKK1E2SU5TTihKNF8jI1RBRyMjX2ZwMV9qdW1wX250LCAicDE9IlRTVCI7IGlm ICghcDEubmV3KSBqdW1wOm50ICNyOToyIiwgQVRUUklCUyhBX0NKTkVXRElSLEFfUkVMQVhfQ09O RCxBX05FV0NNUEpVTVAsQV9QUkVEX0JJVF8xMyksImNvbXBvdW5kIGNvbXBhcmUtanVtcCIse2ZQ QVJUMShmV1JJVEVfUDEoZjhCSVRTT0YoVFNUU0VNKSkpICBmQlJBTkNIX1NQRUNVTEFURV9TVEFM TChmTFNCTkVXMU5PVCwsU1BFQ1VMQVRFX05PVF9UQUtFTiwxMywwKSBpZiAoZkxTQk5FVzFOT1Qp IHtmSU1NRVhUKHJpVik7IGZQQ0FMSUdOKHJpVik7IGZCUkFOQ0goZlJFQURfUEMoKStyaVYsQ09G X1RZUEVfSlVNUCk7fX0pXAorUTZJTlNOKEo0XyMjVEFHIyNfdHAxX2p1bXBfdCwgICJwMT0iVFNU IjsgaWYgKHAxLm5ldykganVtcDp0ICNyOToyIiwgQVRUUklCUyhBX0NKTkVXRElSLEFfUkVMQVhf Q09ORCxBX05FV0NNUEpVTVAsQV9QUkVEX0JJVF8xMyksImNvbXBvdW5kIGNvbXBhcmUtanVtcCIs ICB7ZlBBUlQxKGZXUklURV9QMShmOEJJVFNPRihUU1RTRU0pKSkgIGZCUkFOQ0hfU1BFQ1VMQVRF X1NUQUxMKGZMU0JORVcxLCxTUEVDVUxBVEVfVEFLRU4sMTMsMCkgICAgICBpZiAoZkxTQk5FVzEp IHtmSU1NRVhUKHJpVik7IGZQQ0FMSUdOKHJpVik7IGZCUkFOQ0goZlJFQURfUEMoKStyaVYsQ09G X1RZUEVfSlVNUCk7fX0pXAorUTZJTlNOKEo0XyMjVEFHIyNfZnAxX2p1bXBfdCwgICJwMT0iVFNU IjsgaWYgKCFwMS5uZXcpIGp1bXA6dCAjcjk6MiIsIEFUVFJJQlMoQV9DSk5FV0RJUixBX1JFTEFY X0NPTkQsQV9ORVdDTVBKVU1QLEFfUFJFRF9CSVRfMTMpLCJjb21wb3VuZCBjb21wYXJlLWp1bXAi LCB7ZlBBUlQxKGZXUklURV9QMShmOEJJVFNPRihUU1RTRU0pKSkgIGZCUkFOQ0hfU1BFQ1VMQVRF X1NUQUxMKGZMU0JORVcxTk9ULCxTUEVDVUxBVEVfVEFLRU4sMTMsMCkgICAgIGlmIChmTFNCTkVX MU5PVCkge2ZJTU1FWFQocmlWKTsgZlBDQUxJR04ocmlWKTsgZkJSQU5DSChmUkVBRF9QQygpK3Jp VixDT0ZfVFlQRV9KVU1QKTt9fSkKKworCitTVERfQ01QSlVNUChjbXBlcWksImNtcC5lcShSczE2 LCNVNSkiLChSc1Y9PVVpVikpCitTVERfQ01QSlVNUChjbXBndGksImNtcC5ndChSczE2LCNVNSki LChSc1Y+VWlWKSkKK1NURF9DTVBKVU1QKGNtcGd0dWksImNtcC5ndHUoUnMxNiwjVTUpIiwoZkNB U1Q0dShSc1YpPlVpVikpCisKK1NURF9DTVBKVU1QKGNtcGVxbjEsImNtcC5lcShSczE2LCMtMSki LChSc1Y9PS0xKSkKK1NURF9DTVBKVU1QKGNtcGd0bjEsImNtcC5ndChSczE2LCMtMSkiLChSc1Y+ LTEpKQorU1REX0NNUEpVTVAodHN0Yml0MCwidHN0Yml0KFJzMTYsIzApIiwoUnNWICYgMSkpCisK K1NURF9DTVBKVU1QKGNtcGVxLCJjbXAuZXEoUnMxNixSdDE2KSIsKFJzVj09UnRWKSkKK1NURF9D TVBKVU1QKGNtcGd0LCJjbXAuZ3QoUnMxNixSdDE2KSIsKFJzVj5SdFYpKQorU1REX0NNUEpVTVAo Y21wZ3R1LCJjbXAuZ3R1KFJzMTYsUnQxNikiLChmQ0FTVDR1KFJzVik+UnRWKSkKKworCisKKy8q IFY0IGp1bXAgYW5kIHRyYW5zZmVyIChDSikgKi8KK1E2SU5TTihKNF9qdW1wc2V0aSwiUmQxNj0j VTYgOyBqdW1wICNyOToyIixBVFRSSUJTKEFfSkRJUixBX1JFTEFYX1VOQyksICJkaXJlY3QgdW5j b25kaXRpb25hbCBqdW1wIGFuZCBzZXQgcmVnaXN0ZXIgdG8gaW1tZWRpYXRlIiwKK3tmSU1NRVhU KHJpVik7IGZQQ0FMSUdOKHJpVik7IFJkVj1VaVY7IGZCUkFOQ0goZlJFQURfUEMoKStyaVYsQ09G X1RZUEVfSlVNUCk7fSkKKworUTZJTlNOKEo0X2p1bXBzZXRyLCJSZDE2PVJzMTYgOyBqdW1wICNy OToyIixBVFRSSUJTKEFfSkRJUixBX1JFTEFYX1VOQyksICJkaXJlY3QgdW5jb25kaXRpb25hbCBq dW1wIGFuZCB0cmFuc2ZlciByZWdpc3RlciIsCit7ZklNTUVYVChyaVYpOyBmUENBTElHTihyaVYp OyBSZFY9UnNWOyBmQlJBTkNIKGZSRUFEX1BDKCkrcmlWLENPRl9UWVBFX0pVTVApO30pCisKKwor LyogVjQgbmV3LXZhbHVlIGp1bXBzIChOQ0opICovCisjZGVmaW5lIFNURF9DTVBKVU1QTkVXUlMo VEFHLFRTVCxUU1RTRU0pXAorUTZJTlNOKEo0XyMjVEFHIyNfanVtcG52X3QsICJpZiAoIlRTVCIp IGp1bXA6dCAjcjk6MiIsIEFUVFJJQlMoQV9ORVdWQUxVRUosQV9SRVNUUklDVF9OT1NMT1QxX1NU T1JFLEFfUkVTVFJJQ1RfU0xPVDBPTkxZLEFfUFJFRF9CSVRfMTMpLCJjb21wb3VuZCBjb21wYXJl LWp1bXAiLHtmQlJBTkNIX1NQRUNVTEFURV9TVEFMTChUU1RTRU0sLFNQRUNVTEFURV9UQUtFTiwx MywwKTtpZiAoVFNUU0VNKSB7ZklNTUVYVChyaVYpOyBmUENBTElHTihyaVYpOyBmQlJBTkNIKGZS RUFEX1BDKCkrcmlWLENPRl9UWVBFX0pVTVApO319KVwKK1E2SU5TTihKNF8jI1RBRyMjX2p1bXBu dl9udCwiaWYgKCJUU1QiKSBqdW1wOm50ICNyOToyIixBVFRSSUJTKEFfTkVXVkFMVUVKLEFfUkVT VFJJQ1RfTk9TTE9UMV9TVE9SRSxBX1JFU1RSSUNUX1NMT1QwT05MWSxBX1BSRURfQklUXzEzKSwi Y29tcG91bmQgY29tcGFyZS1qdW1wIix7ZkJSQU5DSF9TUEVDVUxBVEVfU1RBTEwoVFNUU0VNLCxT UEVDVUxBVEVfTk9UX1RBS0VOLDEzLDApOyBpZiAoVFNUU0VNKSB7ZklNTUVYVChyaVYpOyBmUENB TElHTihyaVYpOyBmQlJBTkNIKGZSRUFEX1BDKCkrcmlWLENPRl9UWVBFX0pVTVApO319KQorCisK KworCitTVERfQ01QSlVNUE5FV1JTKGNtcGVxaV90LCJjbXAuZXEoTnM4Lm5ldywjVTUpIiwoZk5F V1JFRyhOc04pPT0oVWlWKSkpCitTVERfQ01QSlVNUE5FV1JTKGNtcGVxaV9mLCIhY21wLmVxKE5z OC5uZXcsI1U1KSIsKGZORVdSRUcoTnNOKSE9KFVpVikpKQorU1REX0NNUEpVTVBORVdSUyhjbXBn dGlfdCwiY21wLmd0KE5zOC5uZXcsI1U1KSIsKGZORVdSRUcoTnNOKT4oVWlWKSkpCitTVERfQ01Q SlVNUE5FV1JTKGNtcGd0aV9mLCIhY21wLmd0KE5zOC5uZXcsI1U1KSIsIShmTkVXUkVHKE5zTik+ KFVpVikpKQorU1REX0NNUEpVTVBORVdSUyhjbXBndHVpX3QsImNtcC5ndHUoTnM4Lm5ldywjVTUp IiwoZkNBU1Q0dShmTkVXUkVHKE5zTikpPihVaVYpKSkKK1NURF9DTVBKVU1QTkVXUlMoY21wZ3R1 aV9mLCIhY21wLmd0dShOczgubmV3LCNVNSkiLCEoZkNBU1Q0dShmTkVXUkVHKE5zTikpPihVaVYp KSkKKworCitTVERfQ01QSlVNUE5FV1JTKGNtcGVxbjFfdCwiY21wLmVxKE5zOC5uZXcsIy0xKSIs KGZORVdSRUcoTnNOKT09KC0xKSkpCitTVERfQ01QSlVNUE5FV1JTKGNtcGVxbjFfZiwiIWNtcC5l cShOczgubmV3LCMtMSkiLChmTkVXUkVHKE5zTikhPSgtMSkpKQorU1REX0NNUEpVTVBORVdSUyhj bXBndG4xX3QsImNtcC5ndChOczgubmV3LCMtMSkiLChmTkVXUkVHKE5zTik+KC0xKSkpCitTVERf Q01QSlVNUE5FV1JTKGNtcGd0bjFfZiwiIWNtcC5ndChOczgubmV3LCMtMSkiLCEoZk5FV1JFRyhO c04pPigtMSkpKQorU1REX0NNUEpVTVBORVdSUyh0c3RiaXQwX3QsInRzdGJpdChOczgubmV3LCMw KSIsKChmTkVXUkVHKE5zTikpICYgMSkpCitTVERfQ01QSlVNUE5FV1JTKHRzdGJpdDBfZiwiIXRz dGJpdChOczgubmV3LCMwKSIsISgoZk5FV1JFRyhOc04pKSAmIDEpKQorCisKK1NURF9DTVBKVU1Q TkVXUlMoY21wZXFfdCwgImNtcC5lcShOczgubmV3LFJ0MzIpIiwgKGZORVdSRUcoTnNOKT09UnRW KSkKK1NURF9DTVBKVU1QTkVXUlMoY21wZ3RfdCwgImNtcC5ndChOczgubmV3LFJ0MzIpIiwgKGZO RVdSRUcoTnNOKT5SdFYpKQorU1REX0NNUEpVTVBORVdSUyhjbXBndHVfdCwiY21wLmd0dShOczgu bmV3LFJ0MzIpIiwoZkNBU1Q0dShmTkVXUkVHKE5zTikpPmZDQVNUNHUoUnRWKSkpCitTVERfQ01Q SlVNUE5FV1JTKGNtcGx0X3QsICJjbXAuZ3QoUnQzMixOczgubmV3KSIsIChSdFY+Zk5FV1JFRyhO c04pKSkKK1NURF9DTVBKVU1QTkVXUlMoY21wbHR1X3QsImNtcC5ndHUoUnQzMixOczgubmV3KSIs KGZDQVNUNHUoUnRWKT5mQ0FTVDR1KGZORVdSRUcoTnNOKSkpKQorU1REX0NNUEpVTVBORVdSUyhj bXBlcV9mLCAiIWNtcC5lcShOczgubmV3LFJ0MzIpIiwgKGZORVdSRUcoTnNOKSE9UnRWKSkKK1NU RF9DTVBKVU1QTkVXUlMoY21wZ3RfZiwgIiFjbXAuZ3QoTnM4Lm5ldyxSdDMyKSIsICEoZk5FV1JF RyhOc04pPlJ0VikpCitTVERfQ01QSlVNUE5FV1JTKGNtcGd0dV9mLCIhY21wLmd0dShOczgubmV3 LFJ0MzIpIiwhKGZDQVNUNHUoZk5FV1JFRyhOc04pKT5mQ0FTVDR1KFJ0VikpKQorU1REX0NNUEpV TVBORVdSUyhjbXBsdF9mLCAiIWNtcC5ndChSdDMyLE5zOC5uZXcpIiwgIShSdFY+Zk5FV1JFRyhO c04pKSkKK1NURF9DTVBKVU1QTkVXUlMoY21wbHR1X2YsIiFjbXAuZ3R1KFJ0MzIsTnM4Lm5ldyki LCEoZkNBU1Q0dShSdFYpPmZDQVNUNHUoZk5FV1JFRyhOc04pKSkpCisKKworCisKKworLyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIFN1YnJvdXRpbmUg Q2FsbCBpbnN0cnVjdGlvbnMJICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiovCisKKyNkZWZpbmUgQ0FMTF9OT1RFUyBBX05PVEVfUEFDS0VUX1BD LEFfTk9URV9QQUNLRVRfTlBDLEFfTk9URV9SRUxBVElWRV9BRERSRVNTCisjZGVmaW5lIENESVJf U1REICAgQV9DQUxMLEFfRElSRUNULENBTExfTk9URVMsQV9DT0ZTVEQsQV9CUkFOQ0hBRERFUgor I2RlZmluZSBDSU5ESVJfU1REIEFfQ0FMTCxBX0lORElSRUNULEFfQ09GU1RECisKK1E2SU5TTihK Ml9jYWxsLCJjYWxsICNyMjI6MiIsQVRUUklCUyhDRElSX1NURCxBX1JFTEFYX1VOQyksICJkaXJl Y3QgdW5jb25kaXRpb25hbCBjYWxsIiwKK3tmSU1NRVhUKHJpVik7IGZQQ0FMSUdOKHJpVik7IGZD QUxMKGZSRUFEX1BDKCkrcmlWKTsgfSkKKworUTZJTlNOKEoyX2NhbGx0LCJpZiAoUHU0KSBjYWxs ICNyMTU6MiIsQVRUUklCUyhDRElSX1NURCxBX05PVEVfQ09ORElUSU9OQUwsQV9SRUxBWF9DT05E LEFfUFJFRF9CSVRfMTIpLCJkaXJlY3QgY29uZGl0aW9uYWwgY2FsbCBpZiB0cnVlIiwKK3tmSU1N RVhUKHJpVik7IGZQQ0FMSUdOKHJpVik7IGZCUkFOQ0hfU1BFQ1VMQVRFX1NUQUxMKGZMU0JPTEQo UHVWKSwsU1BFQ1VMQVRFX05PVF9UQUtFTiwxMiwwKTsgaWYgKGZMU0JPTEQoUHVWKSkgeyBmQ0FM TChmUkVBRF9QQygpK3JpVik7IH19KQorCitRNklOU04oSjJfY2FsbGYsImlmICghUHU0KSBjYWxs ICNyMTU6MiIsQVRUUklCUyhDRElSX1NURCxBX05PVEVfQ09ORElUSU9OQUwsQV9SRUxBWF9DT05E LEFfUFJFRF9CSVRfMTIpLCJkaXJlY3QgY29uZGl0aW9uYWwgY2FsbCBpZiBmYWxzZSIsCit7ZklN TUVYVChyaVYpOyBmUENBTElHTihyaVYpOyBmQlJBTkNIX1NQRUNVTEFURV9TVEFMTChmTFNCT0xE Tk9UKFB1ViksLFNQRUNVTEFURV9OT1RfVEFLRU4sMTIsMCk7aWYgKGZMU0JPTEROT1QoUHVWKSkg eyBmQ0FMTChmUkVBRF9QQygpK3JpVik7IH19KQorCitRNklOU04oSjJfY2FsbHIsImNhbGxyIFJz MzIiLEFUVFJJQlMoQ0lORElSX1NURCksICJpbmRpcmVjdCB1bmNvbmRpdGlvbmFsIGNhbGwiLAor eyBmQ0FMTFIoUnNWKTsgfSkKKworUTZJTlNOKEoyX2NhbGxydCwiaWYgKFB1NCkgY2FsbHIgUnMz MiIsQVRUUklCUyhDSU5ESVJfU1RELEFfTk9URV9DT05ESVRJT05BTCxBX1BSRURfQklUXzEyKSwi aW5kaXJlY3QgY29uZGl0aW9uYWwgY2FsbCBpZiB0cnVlIiwKK3tmQlJBTkNIX1NQRUNVTEFURV9T VEFMTChmTFNCT0xEKFB1ViksLFNQRUNVTEFURV9OT1RfVEFLRU4sMTIsMCk7aWYgKGZMU0JPTEQo UHVWKSkgeyBmQ0FMTFIoUnNWKTsgfX0pCisKK1E2SU5TTihKMl9jYWxscmYsImlmICghUHU0KSBj YWxsciBSczMyIixBVFRSSUJTKENJTkRJUl9TVEQsQV9OT1RFX0NPTkRJVElPTkFMLEFfUFJFRF9C SVRfMTIpLCJpbmRpcmVjdCBjb25kaXRpb25hbCBjYWxsIGlmIGZhbHNlIiwKK3tmQlJBTkNIX1NQ RUNVTEFURV9TVEFMTChmTFNCT0xETk9UKFB1ViksLFNQRUNVTEFURV9OT1RfVEFLRU4sMTIsMCk7 aWYgKGZMU0JPTEROT1QoUHVWKSkgeyBmQ0FMTFIoUnNWKTsgfX0pCisKKworCisKKyNkZWZpbmUg QVRUUklCX0hXTE9PUF9TRVRVUCBBX05PVEVfUEFDS0VUX05QQyxBX05PVEVfUkVMQVRJVkVfQURE UkVTUyxBX05PVEVfUEFDS0VUX1BDLEFfTk9URV9MQV9SRVNUUklDVCxBX1JFU1RSSUNUX0xPT1Bf TEEsQV9CUkFOQ0hBRERFUixBX0lUX0hXTE9PUCxBX1JFTEFYX0NPRl8xU1QsQV9SRUxBWF9DT0Zf Mk5ECisjZGVmaW5lIEFUVFJJQl9IV0xPT1AgQV9OT1RFX1BBQ0tFVF9OUEMsQV9OT1RFX1BBQ0tF VF9QQyxBX1JFU1RSSUNUX05PQ09GLEFfTk9URV9OT0NPRl9SRVNUUklDVCxBX1JPUFNfMworCisv KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogSFcgTG9v cCBpbnN0cnVjdGlvbnMJCSAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqLworCitRNklOU04oSjJfbG9vcDByLCJsb29wMCgjcjc6MixSczMyKSIs QVRUUklCUyhBVFRSSUJfSFdMT09QX1NFVFVQLEFfSFdMT09QMF9TRVRVUCksIkluaXRpYWxpemUg SFcgbG9vcCAwIiwKK3sgZklNTUVYVChyaVYpOyBmUENBTElHTihyaVYpOworICBmV1JJVEVfTE9P UF9SRUdTMCgvKnNhLGxjKi8gZlJFQURfUEMoKStyaVYsIFJzVik7CisgIGZTRVRfTFBDRkcoMCk7 Cit9KQorCitRNklOU04oSjJfbG9vcDFyLCJsb29wMSgjcjc6MixSczMyKSIsQVRUUklCUyhBVFRS SUJfSFdMT09QX1NFVFVQLEFfSFdMT09QMV9TRVRVUCksIkluaXRpYWxpemUgSFcgbG9vcCAxIiwK K3sgZklNTUVYVChyaVYpOyBmUENBTElHTihyaVYpOworICBmV1JJVEVfTE9PUF9SRUdTMSgvKnNh LGxjKi8gZlJFQURfUEMoKStyaVYsIFJzVik7Cit9KQorCitRNklOU04oSjJfbG9vcDBpLCJsb29w MCgjcjc6MiwjVTEwKSIsQVRUUklCUyhBVFRSSUJfSFdMT09QX1NFVFVQLEFfSFdMT09QMF9TRVRV UCksIkluaXRpYWxpemUgSFcgbG9vcCAwIiwKK3sgZklNTUVYVChyaVYpOyBmUENBTElHTihyaVYp OworICBmV1JJVEVfTE9PUF9SRUdTMCgvKnNhLGxjKi8gZlJFQURfUEMoKStyaVYsIFVpVik7Cisg IGZTRVRfTFBDRkcoMCk7Cit9KQorCitRNklOU04oSjJfbG9vcDFpLCJsb29wMSgjcjc6MiwjVTEw KSIsQVRUUklCUyhBVFRSSUJfSFdMT09QX1NFVFVQLEFfSFdMT09QMV9TRVRVUCksIkluaXRpYWxp emUgSFcgbG9vcCAxIiwKK3sgZklNTUVYVChyaVYpOyBmUENBTElHTihyaVYpOworICBmV1JJVEVf TE9PUF9SRUdTMSgvKnNhLGxjKi8gZlJFQURfUEMoKStyaVYsIFVpVik7Cit9KQorCisKK1E2SU5T TihKMl9wbG9vcDFzciwicDM9c3AxbG9vcDAoI3I3OjIsUnMzMikiLEFUVFJJQlMoQVRUUklCX0hX TE9PUF9TRVRVUCxBX0FSQ0hWMixBX1JFU1RSSUNUX0xBVEVQUkVELEFfTk9URV9MQVRFUFJFRCxB X0hXTE9PUDBfU0VUVVApLCJJbml0aWFsaXplIEhXIGxvb3AgMCIsCit7IGZJTU1FWFQocmlWKTsg ZlBDQUxJR04ocmlWKTsKKyAgZldSSVRFX0xPT1BfUkVHUzAoLypzYSxsYyovIGZSRUFEX1BDKCkr cmlWLCBSc1YpOworICBmU0VUX0xQQ0ZHKDEpOworICBmV1JJVEVfUDNfTEFURSgwKTsKK30pCitR NklOU04oSjJfcGxvb3Axc2ksInAzPXNwMWxvb3AwKCNyNzoyLCNVMTApIixBVFRSSUJTKEFUVFJJ Ql9IV0xPT1BfU0VUVVAsQV9BUkNIVjIsQV9SRVNUUklDVF9MQVRFUFJFRCxBX05PVEVfTEFURVBS RUQsQV9IV0xPT1AwX1NFVFVQKSwiSW5pdGlhbGl6ZSBIVyBsb29wIDAiLAoreyBmSU1NRVhUKHJp Vik7IGZQQ0FMSUdOKHJpVik7CisgIGZXUklURV9MT09QX1JFR1MwKC8qc2EsbGMqLyBmUkVBRF9Q QygpK3JpViwgVWlWKTsKKyAgZlNFVF9MUENGRygxKTsKKyAgZldSSVRFX1AzX0xBVEUoMCk7Cit9 KQorCitRNklOU04oSjJfcGxvb3Ayc3IsInAzPXNwMmxvb3AwKCNyNzoyLFJzMzIpIixBVFRSSUJT KEFUVFJJQl9IV0xPT1BfU0VUVVAsQV9BUkNIVjIsQV9SRVNUUklDVF9MQVRFUFJFRCxBX05PVEVf TEFURVBSRUQsQV9IV0xPT1AwX1NFVFVQKSwiSW5pdGlhbGl6ZSBIVyBsb29wIDAiLAoreyBmSU1N RVhUKHJpVik7IGZQQ0FMSUdOKHJpVik7CisgIGZXUklURV9MT09QX1JFR1MwKC8qc2EsbGMqLyBm UkVBRF9QQygpK3JpViwgUnNWKTsKKyAgZlNFVF9MUENGRygyKTsKKyAgZldSSVRFX1AzX0xBVEUo MCk7Cit9KQorUTZJTlNOKEoyX3Bsb29wMnNpLCJwMz1zcDJsb29wMCgjcjc6MiwjVTEwKSIsQVRU UklCUyhBVFRSSUJfSFdMT09QX1NFVFVQLEFfQVJDSFYyLEFfUkVTVFJJQ1RfTEFURVBSRUQsQV9O T1RFX0xBVEVQUkVELEFfSFdMT09QMF9TRVRVUCksIkluaXRpYWxpemUgSFcgbG9vcCAwIiwKK3sg ZklNTUVYVChyaVYpOyBmUENBTElHTihyaVYpOworICBmV1JJVEVfTE9PUF9SRUdTMCgvKnNhLGxj Ki8gZlJFQURfUEMoKStyaVYsIFVpVik7CisgIGZTRVRfTFBDRkcoMik7CisgIGZXUklURV9QM19M QVRFKDApOworfSkKKworUTZJTlNOKEoyX3Bsb29wM3NyLCJwMz1zcDNsb29wMCgjcjc6MixSczMy KSIsQVRUUklCUyhBVFRSSUJfSFdMT09QX1NFVFVQLEFfQVJDSFYyLEFfUkVTVFJJQ1RfTEFURVBS RUQsQV9OT1RFX0xBVEVQUkVELEFfSFdMT09QMF9TRVRVUCksIkluaXRpYWxpemUgSFcgbG9vcCAw IiwKK3sgZklNTUVYVChyaVYpOyBmUENBTElHTihyaVYpOworICBmV1JJVEVfTE9PUF9SRUdTMCgv KnNhLGxjKi8gZlJFQURfUEMoKStyaVYsIFJzVik7CisgIGZTRVRfTFBDRkcoMyk7CisgIGZXUklU RV9QM19MQVRFKDApOworfSkKK1E2SU5TTihKMl9wbG9vcDNzaSwicDM9c3AzbG9vcDAoI3I3OjIs I1UxMCkiLEFUVFJJQlMoQVRUUklCX0hXTE9PUF9TRVRVUCxBX0FSQ0hWMixBX1JFU1RSSUNUX0xB VEVQUkVELEFfTk9URV9MQVRFUFJFRCxBX0hXTE9PUDBfU0VUVVApLCJJbml0aWFsaXplIEhXIGxv b3AgMCIsCit7IGZJTU1FWFQocmlWKTsgZlBDQUxJR04ocmlWKTsKKyAgZldSSVRFX0xPT1BfUkVH UzAoLypzYSxsYyovIGZSRUFEX1BDKCkrcmlWLCBVaVYpOworICBmU0VUX0xQQ0ZHKDMpOworICBm V1JJVEVfUDNfTEFURSgwKTsKK30pCisKKworCitRNklOU04oSjJfZW5kbG9vcDAxLCJlbmRsb29w MDEiLEFUVFJJQlMoQVRUUklCX0hXTE9PUCxBX0hXTE9PUDBfRU5ELEFfSFdMT09QMV9FTkQsQV9S RVNUUklDVF9MQVRFUFJFRCksIkxvb3BlbmQgZm9yIGlubmVyIGFuZCBvdXRlciBsb29wIiwKK3sK KworICAvKiBWMjogV2l0aCBwcmVkaWNhdGUgY29udHJvbCAqLworICBpZiAoZkdFVF9MUENGRykg eworICAgIGZISURFKCBpZiAoZkdFVF9MUENGRyA+PSAyKSB7IGZXUklURV9QMyhmTk9BVFRSSUJf UkVBRF9QMygpKTsgfSBlbHNlICkKKyAgICBpZiAoZkdFVF9MUENGRz09MSkgeworICAgICAgIGZX UklURV9QMygweGZmKTsKKyAgICB9CisgICAgZlNFVF9MUENGRyhmR0VUX0xQQ0ZHLTEpOworICAg IGZISURFKE1BUktfTEFURV9QUkVEX1dSSVRFKDMpKQorICB9CisKKyAgLyogY2hlY2sgaWYgaXRl cmF0ZSAqLworICBpZiAoZlJFQURfTEMwPjEpIHsKKyAgICBmQlJBTkNIKGZSRUFEX1NBMCxDT0Zf VFlQRV9MT09QRU5EMCk7CisgICAgZkhJREUoZkxPT1BTVEFUUyhmUkVBRF9TQTApOykKKyAgICAv KiBkZWNyZW1lbnQgbG9vcCBjb3VudCAqLworICAgIGZXUklURV9MQzAoZlJFQURfTEMwLTEpOwor ICB9IGVsc2UgeworICAgIC8qIGNoZWNrIGlmIGl0ZXJhdGUgKi8KKyAgICBpZiAoZlJFQURfTEMx PjEpIHsKKyAgICAgIGZCUkFOQ0goZlJFQURfU0ExLENPRl9UWVBFX0xPT1BFTkQxKTsKKyAgICAg IGZISURFKGZMT09QU1RBVFMoZlJFQURfU0ExKTspCisgICAgICAvKiBkZWNyZW1lbnQgbG9vcCBj b3VudCAqLworICAgICAgZldSSVRFX0xDMShmUkVBRF9MQzEtMSk7CisgICAgfQorICB9CisKK30p CisKK1E2SU5TTihKMl9lbmRsb29wMCwiZW5kbG9vcDAiLEFUVFJJQlMoQVRUUklCX0hXTE9PUCxB X0hXTE9PUDBfRU5ELEFfUkVTVFJJQ1RfTEFURVBSRUQpLCJMb29wZW5kIGZvciBpbm5lciBsb29w IiwKK3sKKworICAvKiBWMjogV2l0aCBwcmVkaWNhdGUgY29udHJvbCAqLworICBpZiAoZkdFVF9M UENGRykgeworICAgIGZISURFKCBpZiAoZkdFVF9MUENGRyA+PSAyKSB7IGZXUklURV9QMyhmTk9B VFRSSUJfUkVBRF9QMygpKTsgfSBlbHNlICkKKyAgICBpZiAoZkdFVF9MUENGRz09MSkgeworICAg ICAgIGZXUklURV9QMygweGZmKTsKKyAgICB9CisgICAgZkhJREUoTUFSS19MQVRFX1BSRURfV1JJ VEUoMykpCisgICAgZlNFVF9MUENGRyhmR0VUX0xQQ0ZHLTEpOworICB9CisKKyAgLyogY2hlY2sg aWYgaXRlcmF0ZSAqLworICBpZiAoZlJFQURfTEMwPjEpIHsKKyAgICBmQlJBTkNIKGZSRUFEX1NB MCxDT0ZfVFlQRV9MT09QRU5EMCk7CisgICAgZkhJREUoZkxPT1BTVEFUUyhmUkVBRF9TQTApOykK KyAgICAvKiBkZWNyZW1lbnQgbG9vcCBjb3VudCAqLworICAgIGZXUklURV9MQzAoZlJFQURfTEMw LTEpOworICB9Cit9KQorCitRNklOU04oSjJfZW5kbG9vcDEsImVuZGxvb3AxIixBVFRSSUJTKEFU VFJJQl9IV0xPT1AsQV9IV0xPT1AxX0VORCksIkxvb3BlbmQgZm9yIG91dGVyIGxvb3AiLAorewor ICAvKiBjaGVjayBpZiBpdGVyYXRlICovCisgIGlmIChmUkVBRF9MQzE+MSkgeworICAgIGZCUkFO Q0goZlJFQURfU0ExLENPRl9UWVBFX0xPT1BFTkQxKTsKKyAgICBmSElERShmTE9PUFNUQVRTKGZS RUFEX1NBMSk7KQorICAgIC8qIGRlY3JlbWVudCBsb29wIGNvdW50ICovCisgICAgZldSSVRFX0xD MShmUkVBRF9MQzEtMSk7CisgIH0KK30pCisKKwpkaWZmIC0tZ2l0IGEvdGFyZ2V0L2hleGFnb24v aW1wb3J0ZWQvY29tcGFyZS5pZGVmIGIvdGFyZ2V0L2hleGFnb24vaW1wb3J0ZWQvY29tcGFyZS5p ZGVmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmMDUzMDcKLS0tIC9kZXYv bnVsbAorKysgYi90YXJnZXQvaGV4YWdvbi9pbXBvcnRlZC9jb21wYXJlLmlkZWYKQEAgLTAsMCAr MSw2MzkgQEAKKy8qCisgKiAgQ29weXJpZ2h0KGMpIDIwMTktMjAyMCBRdWFsY29tbSBJbm5vdmF0 aW9uIENlbnRlciwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBUaGlzIHByb2dy YW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlm eQorICogIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5CisgKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0 aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqICAoYXQgeW91ciBvcHRpb24pIGFu eSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4g dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5U QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAq ICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZ b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZQorICogIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHNlZSA8aHR0cDov L3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKi8KKworLyoKKyAqIENvbXBhcmUgSW5zdHJ1Y3Rp b25zCisgKi8KKworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKiovCisvKiBTY2FsYXIgY29tcGFyZSBpbnN0cnVjdGlvbnMJICAgICAgICovCisvKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitRNklOU04oQzJfY21w ZXEsIlBkND1jbXAuZXEoUnMzMixSdDMyKSIsQVRUUklCUygpLAorIkNvbXBhcmUgZm9yIEVxdWFs IiwKK3tQZFY9ZjhCSVRTT0YoUnNWPT1SdFYpO30pCisKK1E2SU5TTihDMl9jbXBndCwiUGQ0PWNt cC5ndChSczMyLFJ0MzIpIixBVFRSSUJTKCksCisiQ29tcGFyZSBmb3Igc2lnbmVkIEdyZWF0ZXIg VGhhbiIsCit7UGRWPWY4QklUU09GKFJzVj5SdFYpO30pCisKK1E2SU5TTihDMl9jbXBndHUsIlBk ND1jbXAuZ3R1KFJzMzIsUnQzMikiLEFUVFJJQlMoKSwKKyJDb21wYXJlIGZvciBHcmVhdGVyIFRo YW4gVW5zaWduZWQiLAore1BkVj1mOEJJVFNPRihmQ0FTVDR1KFJzVik+ZkNBU1Q0dShSdFYpKTt9 KQorCitRNklOU04oQzJfY21wZXFwLCJQZDQ9Y21wLmVxKFJzczMyLFJ0dDMyKSIsQVRUUklCUygp LAorIkNvbXBhcmUgZm9yIEVxdWFsIiwKK3tQZFY9ZjhCSVRTT0YoUnNzVj09UnR0Vik7fSkKKwor UTZJTlNOKEMyX2NtcGd0cCwiUGQ0PWNtcC5ndChSc3MzMixSdHQzMikiLEFUVFJJQlMoKSwKKyJD b21wYXJlIGZvciBzaWduZWQgR3JlYXRlciBUaGFuIiwKK3tQZFY9ZjhCSVRTT0YoUnNzVj5SdHRW KTt9KQorCitRNklOU04oQzJfY21wZ3R1cCwiUGQ0PWNtcC5ndHUoUnNzMzIsUnR0MzIpIixBVFRS SUJTKCksCisiQ29tcGFyZSBmb3IgR3JlYXRlciBUaGFuIFVuc2lnbmVkIiwKK3tQZFY9ZjhCSVRT T0YoZkNBU1Q4dShSc3NWKT5mQ0FTVDh1KFJ0dFYpKTt9KQorCisKKworCisvKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogQ29tcGFyZSBhbmQgcHV0IHJl c3VsdCBpbiBHUFIJICAgICAqLworLyogIHR5cGljYWxseSBmb3IgZnVuY3Rpb24gSS9PCSAgICAg ICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKwor UTZJTlNOKEE0X3JjbXBlcWksIlJkMzI9Y21wLmVxKFJzMzIsI3M4KSIsQVRUUklCUygpLAorIkNv bXBhcmUgZm9yIEVxdWFsIiwKK3tmSU1NRVhUKHNpVik7IFJkVj0oUnNWPT1zaVYpOyB9KQorCitR NklOU04oQTRfcmNtcG5lcWksIlJkMzI9IWNtcC5lcShSczMyLCNzOCkiLEFUVFJJQlMoKSwKKyJD b21wYXJlIGZvciBFcXVhbCIsCit7ZklNTUVYVChzaVYpOyBSZFY9KFJzViE9c2lWKTsgfSkKKwor CitRNklOU04oQTRfcmNtcGVxLCJSZDMyPWNtcC5lcShSczMyLFJ0MzIpIixBVFRSSUJTKCksCisi Q29tcGFyZSBmb3IgRXF1YWwiLAore1JkVj0oUnNWPT1SdFYpOyB9KQorCitRNklOU04oQTRfcmNt cG5lcSwiUmQzMj0hY21wLmVxKFJzMzIsUnQzMikiLEFUVFJJQlMoKSwKKyJDb21wYXJlIGZvciBF cXVhbCIsCit7UmRWPShSc1YhPVJ0Vik7IH0pCisKKworCisvKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqLworLyogU2NhbGFyIGNvbXBhcmUgaW5zdHJ1Y3Rpb25z CSAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ki8KKworCitRNklOU04oQzJfYml0c3NldCwiUGQ0PWJpdHNzZXQoUnMzMixSdDMyKSIsQVRUUklC UyhBX0FSQ0hWMiksCisiQ29tcGFyZSBmb3Igc2VsZWN0ZWQgYml0cyBzZXQiLAore1BkVj1mOEJJ VFNPRigoUnNWJlJ0Vik9PVJ0Vik7fSkKKworUTZJTlNOKEMyX2JpdHNjbHIsIlBkND1iaXRzY2xy KFJzMzIsUnQzMikiLEFUVFJJQlMoQV9BUkNIVjIpLAorIkNvbXBhcmUgZm9yIHNlbGVjdGVkIGJp dHMgY2xlYXIiLAore1BkVj1mOEJJVFNPRigoUnNWJlJ0Vik9PTApO30pCisKKworUTZJTlNOKEM0 X25iaXRzc2V0LCJQZDQ9IWJpdHNzZXQoUnMzMixSdDMyKSIsQVRUUklCUyhBX0FSQ0hWMiksCisi Q29tcGFyZSBmb3Igc2VsZWN0ZWQgYml0cyBzZXQiLAore1BkVj1mOEJJVFNPRigoUnNWJlJ0Vikh PVJ0Vik7fSkKKworUTZJTlNOKEM0X25iaXRzY2xyLCJQZDQ9IWJpdHNjbHIoUnMzMixSdDMyKSIs QVRUUklCUyhBX0FSQ0hWMiksCisiQ29tcGFyZSBmb3Igc2VsZWN0ZWQgYml0cyBjbGVhciIsCit7 UGRWPWY4QklUU09GKChSc1YmUnRWKSE9MCk7fSkKKworCisKKy8qKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiBTY2FsYXIgY29tcGFyZSBpbnN0cnVjdGlv bnMgVy8gaW1tZWRpYXRlICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKi8KKworUTZJTlNOKEMyX2NtcGVxaSwiUGQ0PWNtcC5lcShSczMyLCNzMTApIixB VFRSSUJTKCksCisiQ29tcGFyZSBmb3IgRXF1YWwiLAore2ZJTU1FWFQoc2lWKTsgUGRWPWY4QklU U09GKFJzVj09c2lWKTt9KQorCitRNklOU04oQzJfY21wZ3RpLCJQZDQ9Y21wLmd0KFJzMzIsI3Mx MCkiLEFUVFJJQlMoKSwKKyJDb21wYXJlIGZvciBzaWduZWQgR3JlYXRlciBUaGFuIiwKK3tmSU1N RVhUKHNpVik7IFBkVj1mOEJJVFNPRihSc1Y+c2lWKTt9KQorCitRNklOU04oQzJfY21wZ3R1aSwi UGQ0PWNtcC5ndHUoUnMzMiwjdTkpIixBVFRSSUJTKCksCisiQ29tcGFyZSBmb3IgR3JlYXRlciBU aGFuIFVuc2lnbmVkIiwKK3tmSU1NRVhUKHVpVik7IFBkVj1mOEJJVFNPRihmQ0FTVDR1KFJzVik+ ZkNBU1Q0dSh1aVYpKTt9KQorCitERUZfTUFQUElORyhDMl9jbXBnZWksIlBkND1jbXAuZ2UoUnMz MiwjczgpIiwiUGQ0PWNtcC5ndChSczMyLCNzOC0xKSIpCitERUZfQ09ORF9NQVBQSU5HKEMyX2Nt cGdldWksIlBkND1jbXAuZ2V1KFJzMzIsI3U4KSIsIiN1OD09MCIsIlBkND1jbXAuZXEoUnMzMixS czMyKSIsIlBkND1jbXAuZ3R1KFJzMzIsI3U4LTEpIikKKworLyogSnVzdCBmb3IgZnVuICovCitE RUZfVjJfTUFQUElORyhDMl9jbXBsdCwiUGQ0PWNtcC5sdChSczMyLFJ0MzIpIiwiUGQ0PWNtcC5n dChSdDMyLFJzMzIpIikKK0RFRl9WMl9NQVBQSU5HKEMyX2NtcGx0dSwiUGQ0PWNtcC5sdHUoUnMz MixSdDMyKSIsIlBkND1jbXAuZ3R1KFJ0MzIsUnMzMikiKQorCisKK1E2SU5TTihDMl9iaXRzY2xy aSwiUGQ0PWJpdHNjbHIoUnMzMiwjdTYpIixBVFRSSUJTKEFfQVJDSFYyKSwKKyJDb21wYXJlIGZv ciBzZWxlY3RlZCBiaXRzIGNsZWFyIiwKK3tQZFY9ZjhCSVRTT0YoKFJzViZ1aVYpPT0wKTt9KQor CitRNklOU04oQzRfbmJpdHNjbHJpLCJQZDQ9IWJpdHNjbHIoUnMzMiwjdTYpIixBVFRSSUJTKEFf QVJDSFYyKSwKKyJDb21wYXJlIGZvciBzZWxlY3RlZCBiaXRzIGNsZWFyIiwKK3tQZFY9ZjhCSVRT T0YoKFJzViZ1aVYpIT0wKTt9KQorCisKKworCitRNklOU04oQzRfY21wbmVxaSwiUGQ0PSFjbXAu ZXEoUnMzMiwjczEwKSIsQVRUUklCUygpLCAiQ29tcGFyZSBmb3IgTm90IEVxdWFsIiwge2ZJTU1F WFQoc2lWKTsgUGRWPWY4QklUU09GKFJzViE9c2lWKTt9KQorUTZJTlNOKEM0X2NtcGx0ZWksIlBk ND0hY21wLmd0KFJzMzIsI3MxMCkiLEFUVFJJQlMoKSwgIkNvbXBhcmUgZm9yIExlc3MgVGhhbiBv ciBFcXVhbCIsIHtmSU1NRVhUKHNpVik7IFBkVj1mOEJJVFNPRihSc1Y8PXNpVik7fSkKK1E2SU5T TihDNF9jbXBsdGV1aSwiUGQ0PSFjbXAuZ3R1KFJzMzIsI3U5KSIsQVRUUklCUygpLCAiQ29tcGFy ZSBmb3IgTGVzcyBUaGFuIG9yIEVxdWFsIFVuc2lnbmVkIiwge2ZJTU1FWFQodWlWKTsgUGRWPWY4 QklUU09GKGZDQVNUNHUoUnNWKTw9ZkNBU1Q0dSh1aVYpKTt9KQorCitRNklOU04oQzRfY21wbmVx LCJQZDQ9IWNtcC5lcShSczMyLFJ0MzIpIixBVFRSSUJTKCksICJBbmQtQ29tcGFyZSBmb3IgRXF1 YWwiLCB7UGRWPWY4QklUU09GKFJzViE9UnRWKTt9KQorUTZJTlNOKEM0X2NtcGx0ZSwiUGQ0PSFj bXAuZ3QoUnMzMixSdDMyKSIsQVRUUklCUygpLCAiQW5kLUNvbXBhcmUgZm9yIHNpZ25lZCBHcmVh dGVyIFRoYW4iLCB7UGRWPWY4QklUU09GKFJzVjw9UnRWKTt9KQorUTZJTlNOKEM0X2NtcGx0ZXUs IlBkND0hY21wLmd0dShSczMyLFJ0MzIpIixBVFRSSUJTKCksICJBbmQtQ29tcGFyZSBmb3IgR3Jl YXRlciBUaGFuIFVuc2lnbmVkIiwge1BkVj1mOEJJVFNPRihmQ0FTVDR1KFJzVik8PWZDQVNUNHUo UnRWKSk7fSkKKworCisKKworCisvKiBQcmVkaWNhdGUgTG9naWNhbCBPcGVyYXRpb25zICovCisK K1E2SU5TTihDMl9hbmQsIlBkND1hbmQoUHQ0LFBzNCkiLEFUVFJJQlMoQV9DUlNMT1QyMyxBX05P VEVfQ1JTTE9UMjMpLAorIlByZWRpY2F0ZSBBTkQiLAore2ZQUkVEVVNFX1RJTUlORygpO1BkVj1Q c1YgJiBQdFY7fSkKKworUTZJTlNOKEMyX29yLCJQZDQ9b3IoUHQ0LFBzNCkiLEFUVFJJQlMoQV9D UlNMT1QyMyxBX05PVEVfQ1JTTE9UMjMpLAorIlByZWRpY2F0ZSBPUiIsCit7ZlBSRURVU0VfVElN SU5HKCk7UGRWPVBzViB8IFB0Vjt9KQorCitRNklOU04oQzJfeG9yLCJQZDQ9eG9yKFBzNCxQdDQp IixBVFRSSUJTKEFfQ1JTTE9UMjMsQV9OT1RFX0NSU0xPVDIzKSwKKyJQcmVkaWNhdGUgWE9SIiwK K3tmUFJFRFVTRV9USU1JTkcoKTtQZFY9UHNWIF4gUHRWO30pCisKK1E2SU5TTihDMl9hbmRuLCJQ ZDQ9YW5kKFB0NCwhUHM0KSIsQVRUUklCUyhBX0NSU0xPVDIzLEFfTk9URV9DUlNMT1QyMyksCisi UHJlZGljYXRlIEFORCBOT1QiLAore2ZQUkVEVVNFX1RJTUlORygpO1BkVj1QdFYgJiAoflBzVik7 fSkKKworUTZJTlNOKEMyX25vdCwiUGQ0PW5vdChQczQpIixBVFRSSUJTKEFfQ1JTTE9UMjMsQV9O T1RFX0NSU0xPVDIzKSwKKyJMb2dpY2FsIE5PVCBQcmVkaWNhdGUiLAore2ZQUkVEVVNFX1RJTUlO RygpO1BkVj1+UHNWO30pCisKK1E2SU5TTihDMl9vcm4sIlBkND1vcihQdDQsIVBzNCkiLEFUVFJJ QlMoQV9BUkNIVjIsQV9DUlNMT1QyMyxBX05PVEVfQ1JTTE9UMjMpLAorIlByZWRpY2F0ZSBPUiBO T1QiLAore2ZQUkVEVVNFX1RJTUlORygpO1BkVj1QdFYgfCAoflBzVik7fSkKKworCisKKworCitR NklOU04oQzRfYW5kX2FuZCwiUGQ0PWFuZChQczQsYW5kKFB0NCxQdTQpKSIsQVRUUklCUyhBX0NS U0xPVDIzLEFfTk9URV9DUlNMT1QyMyksCisiQ29tcG91bmQgQW5kLUFuZCIsIHsgZlBSRURVU0Vf VElNSU5HKCk7UGRWID0gUHNWICYgUHRWICYgUHVWOyB9KQorCitRNklOU04oQzRfYW5kX29yLCJQ ZDQ9YW5kKFBzNCxvcihQdDQsUHU0KSkiLEFUVFJJQlMoQV9DUlNMT1QyMyxBX05PVEVfQ1JTTE9U MjMpLAorIkNvbXBvdW5kIEFuZC1PciIsIHsgZlBSRURVU0VfVElNSU5HKCk7UGRWID0gUHNWICYg IChQdFYgfCBQdVYpOyB9KQorCitRNklOU04oQzRfb3JfYW5kLCJQZDQ9b3IoUHM0LGFuZChQdDQs UHU0KSkiLEFUVFJJQlMoQV9DUlNMT1QyMyxBX05PVEVfQ1JTTE9UMjMpLAorIkNvbXBvdW5kIE9y LUFuZCIsIHsgZlBSRURVU0VfVElNSU5HKCk7UGRWID0gUHNWIHwgKFB0ViAmIFB1Vik7IH0pCisK K1E2SU5TTihDNF9vcl9vciwiUGQ0PW9yKFBzNCxvcihQdDQsUHU0KSkiLEFUVFJJQlMoQV9DUlNM T1QyMyxBX05PVEVfQ1JTTE9UMjMpLAorIkNvbXBvdW5kIE9yLU9yIiwgeyBmUFJFRFVTRV9USU1J TkcoKTtQZFYgPSBQc1YgfCBQdFYgfCBQdVY7IH0pCisKKworCitRNklOU04oQzRfYW5kX2FuZG4s IlBkND1hbmQoUHM0LGFuZChQdDQsIVB1NCkpIixBVFRSSUJTKEFfQ1JTTE9UMjMsQV9OT1RFX0NS U0xPVDIzKSwKKyJDb21wb3VuZCBBbmQtQW5kIiwgeyBmUFJFRFVTRV9USU1JTkcoKTtQZFYgPSBQ c1YgJiBQdFYgJiAoflB1Vik7IH0pCisKK1E2SU5TTihDNF9hbmRfb3JuLCJQZDQ9YW5kKFBzNCxv cihQdDQsIVB1NCkpIixBVFRSSUJTKEFfQ1JTTE9UMjMsQV9OT1RFX0NSU0xPVDIzKSwKKyJDb21w b3VuZCBBbmQtT3IiLCB7IGZQUkVEVVNFX1RJTUlORygpO1BkViA9IFBzViAmICAoUHRWIHwgKH5Q dVYpKTsgfSkKKworUTZJTlNOKEM0X29yX2FuZG4sIlBkND1vcihQczQsYW5kKFB0NCwhUHU0KSki LEFUVFJJQlMoQV9DUlNMT1QyMyxBX05PVEVfQ1JTTE9UMjMpLAorIkNvbXBvdW5kIE9yLUFuZCIs IHsgZlBSRURVU0VfVElNSU5HKCk7UGRWID0gUHNWIHwgKFB0ViAmICh+UHVWKSk7IH0pCisKK1E2 SU5TTihDNF9vcl9vcm4sIlBkND1vcihQczQsb3IoUHQ0LCFQdTQpKSIsQVRUUklCUyhBX0NSU0xP VDIzLEFfTk9URV9DUlNMT1QyMyksCisiQ29tcG91bmQgT3ItT3IiLCB7IGZQUkVEVVNFX1RJTUlO RygpO1BkViA9IFBzViB8IFB0ViB8ICh+UHVWKTsgfSkKKworCisKKworCitERUZfVjJfTUFQUElO RyhDMl9weGZlcl9tYXAsIlBkND1QczQiLCJQZDQ9b3IoUHM0LFBzNCkiKQorCisKK1E2SU5TTihD Ml9hbnk4LCJQZDQ9YW55OChQczQpIixBVFRSSUJTKEFfQ1JTTE9UMjMsQV9OT1RFX0NSU0xPVDIz KSwKKyJMb2dpY2FsIEFOWSBvZiBsb3cgOCBwcmVkaWNhdGUgYml0cyIsCit7IGZQUkVEVVNFX1RJ TUlORygpO1BzViA/IChQZFY9MHhmZikgOiAoUGRWPTB4MDApOyB9KQorCitRNklOU04oQzJfYWxs OCwiUGQ0PWFsbDgoUHM0KSIsQVRUUklCUyhBX0NSU0xPVDIzLEFfTk9URV9DUlNMT1QyMyksCisi TG9naWNhbCBBTEwgb2YgbG93IDggcHJlZGljYXRlIGJpdHMiLAoreyBmUFJFRFVTRV9USU1JTkco KTsoUHNWPT0weGZmKSA/IChQZFY9MHhmZikgOiAoUGRWPTB4MDApOyB9KQorCitRNklOU04oQzJf dml0cGFjaywiUmQzMj12aXRwYWNrKFBzNCxQdDQpIixBVFRSSUJTKCksCisiUGFjayB0aGUgb2Rk IGFuZCBldmVuIGJpdHMgb2YgdHdvIHByZWRpY2F0ZSByZWdpc3RlcnMiLAoreyBmUFJFRFVTRV9U SU1JTkcoKTtSZFYgPSAoUHNWJjB4NTUpIHwgKFB0ViYweEFBKTsgfSkKKworLyogTXV4IGluc3Ry dWN0aW9ucyAqLworCitRNklOU04oQzJfbXV4LCJSZDMyPW11eChQdTQsUnMzMixSdDMyKSIsQVRU UklCUygpLAorIlNjYWxhciBNVVgiLAoreyBmUFJFRFVTRV9USU1JTkcoKTsoZkxTQk9MRChQdVYp KSA/IChSZFY9UnNWKTooUmRWPVJ0Vik7IH0pCisKKworUTZJTlNOKEMyX2Ntb3ZlbmV3aXQsImlm IChQdTQubmV3KSBSZDMyPSNzMTIiLEFUVFJJQlMoQV9BUkNIVjIpLAorIlNjYWxhciBjb25kaXRp b25hbCBtb3ZlIiwKK3sgZklNTUVYVChzaVYpOyBpZiAoZkxTQk5FVyhQdU4pKSBSZFY9c2lWOyBl bHNlIENBTkNFTDt9KQorCitRNklOU04oQzJfY21vdmVuZXdpZiwiaWYgKCFQdTQubmV3KSBSZDMy PSNzMTIiLEFUVFJJQlMoQV9BUkNIVjIpLAorIlNjYWxhciBjb25kaXRpb25hbCBtb3ZlIiwKK3sg ZklNTUVYVChzaVYpOyBpZiAoZkxTQk5FV05PVChQdU4pKSBSZFY9c2lWOyBlbHNlIENBTkNFTDt9 KQorCitRNklOU04oQzJfY21vdmVpdCwiaWYgKFB1NCkgUmQzMj0jczEyIixBVFRSSUJTKEFfQVJD SFYyKSwKKyJTY2FsYXIgY29uZGl0aW9uYWwgbW92ZSIsCit7IGZJTU1FWFQoc2lWKTsgaWYgKGZM U0JPTEQoUHVWKSkgUmRWPXNpVjsgZWxzZSBDQU5DRUw7fSkKKworUTZJTlNOKEMyX2Ntb3ZlaWYs ImlmICghUHU0KSBSZDMyPSNzMTIiLEFUVFJJQlMoQV9BUkNIVjIpLAorIlNjYWxhciBjb25kaXRp b25hbCBtb3ZlIiwKK3sgZklNTUVYVChzaVYpOyBpZiAoZkxTQk9MRE5PVChQdVYpKSBSZFY9c2lW OyBlbHNlIENBTkNFTDt9KQorCisKKworUTZJTlNOKEMyX2Njb21iaW5ld25ld3QsImlmIChQdTQu bmV3KSBSZGQzMj1jb21iaW5lKFJzMzIsUnQzMikiLEFUVFJJQlMoQV9ST1BTXzIsQV9BUkNIVjIp LAorIkNvbmRpdGlvbmFsbHkgY29tYmluZSB0d28gd29yZHMgaW50byBhIHJlZ2lzdGVyIHBhaXIi LAoreyBpZiAoZkxTQk5FVyhQdU4pKSB7CisgICAgZlNFVFdPUkQoMCxSZGRWLFJ0Vik7CisgICAg ZlNFVFdPUkQoMSxSZGRWLFJzVik7CisgIH0gZWxzZSB7Q0FOQ0VMO30KK30pCisKK1E2SU5TTihD Ml9jY29tYmluZXduZXdmLCJpZiAoIVB1NC5uZXcpIFJkZDMyPWNvbWJpbmUoUnMzMixSdDMyKSIs QVRUUklCUyhBX0FSQ0hWMixBX1JPUFNfMiksCisiQ29uZGl0aW9uYWxseSBjb21iaW5lIHR3byB3 b3JkcyBpbnRvIGEgcmVnaXN0ZXIgcGFpciIsCit7IGlmIChmTFNCTkVXTk9UKFB1TikpIHsKKyAg ICBmU0VUV09SRCgwLFJkZFYsUnRWKTsKKyAgICBmU0VUV09SRCgxLFJkZFYsUnNWKTsKKyAgfSBl bHNlIHtDQU5DRUw7fQorfSkKKworUTZJTlNOKEMyX2Njb21iaW5ld3QsImlmIChQdTQpIFJkZDMy PWNvbWJpbmUoUnMzMixSdDMyKSIsQVRUUklCUyhBX0FSQ0hWMixBX1JPUFNfMiksCisiQ29uZGl0 aW9uYWxseSBjb21iaW5lIHR3byB3b3JkcyBpbnRvIGEgcmVnaXN0ZXIgcGFpciIsCit7IGlmIChm TFNCT0xEKFB1VikpIHsKKyAgICBmU0VUV09SRCgwLFJkZFYsUnRWKTsKKyAgICBmU0VUV09SRCgx LFJkZFYsUnNWKTsKKyAgfSBlbHNlIHtDQU5DRUw7fQorfSkKKworUTZJTlNOKEMyX2Njb21iaW5l d2YsImlmICghUHU0KSBSZGQzMj1jb21iaW5lKFJzMzIsUnQzMikiLEFUVFJJQlMoQV9BUkNIVjIs QV9ST1BTXzIpLAorIkNvbmRpdGlvbmFsbHkgY29tYmluZSB0d28gd29yZHMgaW50byBhIHJlZ2lz dGVyIHBhaXIiLAoreyBpZiAoZkxTQk9MRE5PVChQdVYpKSB7CisgICAgZlNFVFdPUkQoMCxSZGRW LFJ0Vik7CisgICAgZlNFVFdPUkQoMSxSZGRWLFJzVik7CisgIH0gZWxzZSB7Q0FOQ0VMO30KK30p CisKKworCitRNklOU04oQzJfbXV4aWksIlJkMzI9bXV4KFB1NCwjczgsI1M4KSIsQVRUUklCUyhB X0FSQ0hWMiksCisiU2NhbGFyIE1VWCBpbW1lZGlhdGVzIiwKK3sgZlBSRURVU0VfVElNSU5HKCk7 ZklNTUVYVChzaVYpOyAoZkxTQk9MRChQdVYpKSA/IChSZFY9c2lWKTooUmRWPVNpVik7IH0pCisK KworCitRNklOU04oQzJfbXV4aXIsIlJkMzI9bXV4KFB1NCxSczMyLCNzOCkiLEFUVFJJQlMoQV9B UkNIVjIpLAorIlNjYWxhciBNVVggcmVnaXN0ZXIgaW1tZWRpYXRlIiwKK3sgZlBSRURVU0VfVElN SU5HKCk7ZklNTUVYVChzaVYpOyAoZkxTQk9MRChQdVYpKSA/IChSZFY9UnNWKTooUmRWPXNpVik7 IH0pCisKKworUTZJTlNOKEMyX211eHJpLCJSZDMyPW11eChQdTQsI3M4LFJzMzIpIixBVFRSSUJT KEFfQVJDSFYyKSwKKyJTY2FsYXIgTVVYIHJlZ2lzdGVyIGltbWVkaWF0ZSIsCit7IGZQUkVEVVNF X1RJTUlORygpO2ZJTU1FWFQoc2lWKTsgKGZMU0JPTEQoUHVWKSkgPyAoUmRWPXNpVik6KFJkVj1S c1YpOyB9KQorCisKKworUTZJTlNOKEMyX3ZtdXgsIlJkZDMyPXZtdXgoUHU0LFJzczMyLFJ0dDMy KSIsQVRUUklCUygpLAorIlZlY3RvciBNVVgiLAoreyAgIGZQUkVEVVNFX1RJTUlORygpOworCWZI SURFKGludCBpOykKKwlmb3IgKGkgPSAwOyBpIDwgODsgaSsrKSB7CisJCWZTRVRCWVRFKGksUmRk ViwoZkdFVEJJVChpLFB1Vik/KGZHRVRCWVRFKGksUnNzVikpOihmR0VUQllURShpLFJ0dFYpKSkp OworCX0KK30pCisKK1E2SU5TTihDMl9tYXNrLCJSZGQzMj1tYXNrKFB0NCkiLEFUVFJJQlMoKSwK KyJWZWN0b3IgTWFzayBHZW5lcmF0aW9uIiwKK3sgICBmUFJFRFVTRV9USU1JTkcoKTsKKwlmSElE RShpbnQgaTspCisJZm9yIChpID0gMDsgaSA8IDg7IGkrKykgeworCQlmU0VUQllURShpLFJkZFYs KGZHRVRCSVQoaSxQdFYpPygweGZmKTooMHgwMCkpKTsKKwl9Cit9KQorCisvKiBWQ01QICovCisK K1E2SU5TTihBMl92Y21wYmVxLCJQZDQ9dmNtcGIuZXEoUnNzMzIsUnR0MzIpIixBVFRSSUJTKCks CisiQ29tcGFyZSBlbGVtZW50cyBvZiB0d28gdmVjdG9ycyAiLAoreworCWZISURFKGludCBpOykK Kwlmb3IgKGkgPSAwOyBpIDwgODsgaSsrKSB7CisJCWZTRVRCSVQoaSxQZFYsKGZHRVRCWVRFKGks UnNzVikgPT0gZkdFVEJZVEUoaSxSdHRWKSkpOworCX0KK30pCisKK1E2SU5TTihBNF92Y21wYmVx aSwiUGQ0PXZjbXBiLmVxKFJzczMyLCN1OCkiLEFUVFJJQlMoKSwKKyJDb21wYXJlIGVsZW1lbnRz IG9mIHR3byB2ZWN0b3JzICIsCit7CisJZkhJREUoaW50IGk7KQorCWZvciAoaSA9IDA7IGkgPCA4 OyBpKyspIHsKKwkJZlNFVEJJVChpLFBkViwoZkdFVFVCWVRFKGksUnNzVikgPT0gdWlWKSk7CisJ fQorfSkKKworUTZJTlNOKEE0X3ZjbXBiZXFfYW55LCJQZDQ9YW55OCh2Y21wYi5lcShSc3MzMixS dHQzMikpIixBVFRSSUJTKCksCisiQ29tcGFyZSBlbGVtZW50cyBvZiB0d28gdmVjdG9ycyAiLAor eworCWZISURFKGludCBpOykKKwlQZFYgPSAwOworCWZvciAoaSA9IDA7IGkgPCA4OyBpKyspIHsK KwkJaWYgKGZHRVRCWVRFKGksUnNzVikgPT0gZkdFVEJZVEUoaSxSdHRWKSkgUGRWID0gMHhmZjsK Kwl9Cit9KQorCitRNklOU04oQTZfdmNtcGJlcV9ub3RhbnksIlBkND0hYW55OCh2Y21wYi5lcShS c3MzMixSdHQzMikpIixBVFRSSUJTKCksCisiQ29tcGFyZSBlbGVtZW50cyBvZiB0d28gdmVjdG9y cyAiLAoreworCWZISURFKGludCBpOykKKwlQZFYgPSAwOworCWZvciAoaSA9IDA7IGkgPCA4OyBp KyspIHsKKwkJaWYgKGZHRVRCWVRFKGksUnNzVikgPT0gZkdFVEJZVEUoaSxSdHRWKSkgUGRWID0g MHhmZjsKKwl9CisJUGRWID0gflBkVjsKK30pCisKK1E2SU5TTihBMl92Y21wYmd0dSwiUGQ0PXZj bXBiLmd0dShSc3MzMixSdHQzMikiLEFUVFJJQlMoKSwKKyJDb21wYXJlIGVsZW1lbnRzIG9mIHR3 byB2ZWN0b3JzICIsCit7CisJZkhJREUoaW50IGk7KQorCWZvciAoaSA9IDA7IGkgPCA4OyBpKysp IHsKKwkJZlNFVEJJVChpLFBkViwoZkdFVFVCWVRFKGksUnNzVikgPiBmR0VUVUJZVEUoaSxSdHRW KSkpOworCX0KK30pCisKK1E2SU5TTihBNF92Y21wYmd0dWksIlBkND12Y21wYi5ndHUoUnNzMzIs I3U3KSIsQVRUUklCUygpLAorIkNvbXBhcmUgZWxlbWVudHMgb2YgdHdvIHZlY3RvcnMgIiwKK3sK KwlmSElERShpbnQgaTspCisJZm9yIChpID0gMDsgaSA8IDg7IGkrKykgeworCQlmU0VUQklUKGks UGRWLChmR0VUVUJZVEUoaSxSc3NWKSA+IHVpVikpOworCX0KK30pCisKK1E2SU5TTihBNF92Y21w Ymd0LCJQZDQ9dmNtcGIuZ3QoUnNzMzIsUnR0MzIpIixBVFRSSUJTKCksCisiQ29tcGFyZSBlbGVt ZW50cyBvZiB0d28gdmVjdG9ycyAiLAoreworCWZISURFKGludCBpOykKKwlmb3IgKGkgPSAwOyBp IDwgODsgaSsrKSB7CisJCWZTRVRCSVQoaSxQZFYsKGZHRVRCWVRFKGksUnNzVikgPiBmR0VUQllU RShpLFJ0dFYpKSk7CisJfQorfSkKKworUTZJTlNOKEE0X3ZjbXBiZ3RpLCJQZDQ9dmNtcGIuZ3Qo UnNzMzIsI3M4KSIsQVRUUklCUygpLAorIkNvbXBhcmUgZWxlbWVudHMgb2YgdHdvIHZlY3RvcnMg IiwKK3sKKwlmSElERShpbnQgaTspCisJZm9yIChpID0gMDsgaSA8IDg7IGkrKykgeworCQlmU0VU QklUKGksUGRWLChmR0VUQllURShpLFJzc1YpID4gc2lWKSk7CisJfQorfSkKKworCisKK1E2SU5T TihBNF9jbXBiZXEsIlBkND1jbXBiLmVxKFJzMzIsUnQzMikiLEFUVFJJQlMoKSwKKyJDb21wYXJl IGJ5dGVzICIsCit7CisJUGRWPWY4QklUU09GKGZHRVRCWVRFKDAsUnNWKSA9PSBmR0VUQllURSgw LFJ0VikpOworfSkKKworUTZJTlNOKEE0X2NtcGJlcWksIlBkND1jbXBiLmVxKFJzMzIsI3U4KSIs QVRUUklCUygpLAorIkNvbXBhcmUgYnl0ZXMgIiwKK3sKKwlQZFY9ZjhCSVRTT0YoZkdFVFVCWVRF KDAsUnNWKSA9PSB1aVYpOworfSkKKworUTZJTlNOKEE0X2NtcGJndHUsIlBkND1jbXBiLmd0dShS czMyLFJ0MzIpIixBVFRSSUJTKCksCisiQ29tcGFyZSBieXRlcyAiLAoreworCVBkVj1mOEJJVFNP RihmR0VUVUJZVEUoMCxSc1YpID4gZkdFVFVCWVRFKDAsUnRWKSk7Cit9KQorCitRNklOU04oQTRf Y21wYmd0dWksIlBkND1jbXBiLmd0dShSczMyLCN1NykiLEFUVFJJQlMoKSwKKyJDb21wYXJlIGJ5 dGVzICIsCit7CisJZklNTUVYVCh1aVYpOworCVBkVj1mOEJJVFNPRihmR0VUVUJZVEUoMCxSc1Yp ID4gZkNBU1Q0dSh1aVYpKTsKK30pCisKK1E2SU5TTihBNF9jbXBiZ3QsIlBkND1jbXBiLmd0KFJz MzIsUnQzMikiLEFUVFJJQlMoKSwKKyJDb21wYXJlIGJ5dGVzICIsCit7CisJUGRWPWY4QklUU09G KGZHRVRCWVRFKDAsUnNWKSA+IGZHRVRCWVRFKDAsUnRWKSk7Cit9KQorCitRNklOU04oQTRfY21w Ymd0aSwiUGQ0PWNtcGIuZ3QoUnMzMiwjczgpIixBVFRSSUJTKCksCisiQ29tcGFyZSBieXRlcyAi LAoreworCVBkVj1mOEJJVFNPRihmR0VUQllURSgwLFJzVikgPiBzaVYpOworfSkKKworUTZJTlNO KEEyX3ZjbXBoZXEsIlBkND12Y21waC5lcShSc3MzMixSdHQzMikiLEFUVFJJQlMoKSwKKyJDb21w YXJlIGVsZW1lbnRzIG9mIHR3byB2ZWN0b3JzICIsCit7CisJZkhJREUoaW50IGk7KQorCWZvciAo aSA9IDA7IGkgPCA0OyBpKyspIHsKKwkJZlNFVEJJVChpKjIsUGRWLCAgKGZHRVRIQUxGKGksUnNz VikgPT0gZkdFVEhBTEYoaSxSdHRWKSkpOworCQlmU0VUQklUKGkqMisxLFBkViwoZkdFVEhBTEYo aSxSc3NWKSA9PSBmR0VUSEFMRihpLFJ0dFYpKSk7CisJfQorfSkKKworUTZJTlNOKEEyX3ZjbXBo Z3QsIlBkND12Y21waC5ndChSc3MzMixSdHQzMikiLEFUVFJJQlMoKSwKKyJDb21wYXJlIGVsZW1l bnRzIG9mIHR3byB2ZWN0b3JzICIsCit7CisJZkhJREUoaW50IGk7KQorCWZvciAoaSA9IDA7IGkg PCA0OyBpKyspIHsKKwkJZlNFVEJJVChpKjIsICBQZFYsICAoZkdFVEhBTEYoaSxSc3NWKSA+IGZH RVRIQUxGKGksUnR0VikpKTsKKwkJZlNFVEJJVChpKjIrMSxQZFYsICAoZkdFVEhBTEYoaSxSc3NW KSA+IGZHRVRIQUxGKGksUnR0VikpKTsKKwl9Cit9KQorCitRNklOU04oQTJfdmNtcGhndHUsIlBk ND12Y21waC5ndHUoUnNzMzIsUnR0MzIpIixBVFRSSUJTKCksCisiQ29tcGFyZSBlbGVtZW50cyBv ZiB0d28gdmVjdG9ycyAiLAoreworCWZISURFKGludCBpOykKKwlmb3IgKGkgPSAwOyBpIDwgNDsg aSsrKSB7CisJCWZTRVRCSVQoaSoyLCAgUGRWLCAgKGZHRVRVSEFMRihpLFJzc1YpID4gZkdFVFVI QUxGKGksUnR0VikpKTsKKwkJZlNFVEJJVChpKjIrMSxQZFYsICAoZkdFVFVIQUxGKGksUnNzVikg PiBmR0VUVUhBTEYoaSxSdHRWKSkpOworCX0KK30pCisKK1E2SU5TTihBNF92Y21waGVxaSwiUGQ0 PXZjbXBoLmVxKFJzczMyLCNzOCkiLEFUVFJJQlMoKSwKKyJDb21wYXJlIGVsZW1lbnRzIG9mIHR3 byB2ZWN0b3JzICIsCit7CisJZkhJREUoaW50IGk7KQorCWZvciAoaSA9IDA7IGkgPCA0OyBpKysp IHsKKwkJZlNFVEJJVChpKjIsUGRWLCAgKGZHRVRIQUxGKGksUnNzVikgPT0gc2lWKSk7CisJCWZT RVRCSVQoaSoyKzEsUGRWLChmR0VUSEFMRihpLFJzc1YpID09IHNpVikpOworCX0KK30pCisKK1E2 SU5TTihBNF92Y21waGd0aSwiUGQ0PXZjbXBoLmd0KFJzczMyLCNzOCkiLEFUVFJJQlMoKSwKKyJD b21wYXJlIGVsZW1lbnRzIG9mIHR3byB2ZWN0b3JzICIsCit7CisJZkhJREUoaW50IGk7KQorCWZv ciAoaSA9IDA7IGkgPCA0OyBpKyspIHsKKwkJZlNFVEJJVChpKjIsICBQZFYsICAoZkdFVEhBTEYo aSxSc3NWKSA+IHNpVikpOworCQlmU0VUQklUKGkqMisxLFBkViwgIChmR0VUSEFMRihpLFJzc1Yp ID4gc2lWKSk7CisJfQorfSkKKworCitRNklOU04oQTRfdmNtcGhndHVpLCJQZDQ9dmNtcGguZ3R1 KFJzczMyLCN1NykiLEFUVFJJQlMoKSwKKyJDb21wYXJlIGVsZW1lbnRzIG9mIHR3byB2ZWN0b3Jz ICIsCit7CisJZkhJREUoaW50IGk7KQorCWZvciAoaSA9IDA7IGkgPCA0OyBpKyspIHsKKwkJZlNF VEJJVChpKjIsICBQZFYsICAoZkdFVFVIQUxGKGksUnNzVikgPiB1aVYpKTsKKwkJZlNFVEJJVChp KjIrMSxQZFYsICAoZkdFVFVIQUxGKGksUnNzVikgPiB1aVYpKTsKKwl9Cit9KQorCitRNklOU04o QTRfY21waGVxLCJQZDQ9Y21waC5lcShSczMyLFJ0MzIpIixBVFRSSUJTKCksCisiQ29tcGFyZSBo YWxmd29yZHMgIiwKK3sKKwlQZFY9ZjhCSVRTT0YoZkdFVEhBTEYoMCxSc1YpID09IGZHRVRIQUxG KDAsUnRWKSk7Cit9KQorCitRNklOU04oQTRfY21waGd0LCJQZDQ9Y21waC5ndChSczMyLFJ0MzIp IixBVFRSSUJTKCksCisiQ29tcGFyZSBoYWxmd29yZHMgIiwKK3sKKwlQZFY9ZjhCSVRTT0YoZkdF VEhBTEYoMCxSc1YpID4gZkdFVEhBTEYoMCxSdFYpKTsKK30pCisKK1E2SU5TTihBNF9jbXBoZ3R1 LCJQZDQ9Y21waC5ndHUoUnMzMixSdDMyKSIsQVRUUklCUygpLAorIkNvbXBhcmUgaGFsZndvcmRz ICIsCit7CisJUGRWPWY4QklUU09GKGZHRVRVSEFMRigwLFJzVikgPiBmR0VUVUhBTEYoMCxSdFYp KTsKK30pCisKK1E2SU5TTihBNF9jbXBoZXFpLCJQZDQ9Y21waC5lcShSczMyLCNzOCkiLEFUVFJJ QlMoKSwKKyJDb21wYXJlIGhhbGZ3b3JkcyAiLAoreworCWZJTU1FWFQoc2lWKTsKKwlQZFY9ZjhC SVRTT0YoZkdFVEhBTEYoMCxSc1YpID09IHNpVik7Cit9KQorCitRNklOU04oQTRfY21waGd0aSwi UGQ0PWNtcGguZ3QoUnMzMiwjczgpIixBVFRSSUJTKCksCisiQ29tcGFyZSBoYWxmd29yZHMgIiwK K3sKKwlmSU1NRVhUKHNpVik7CisJUGRWPWY4QklUU09GKGZHRVRIQUxGKDAsUnNWKSA+IHNpVik7 Cit9KQorCitRNklOU04oQTRfY21waGd0dWksIlBkND1jbXBoLmd0dShSczMyLCN1NykiLEFUVFJJ QlMoKSwKKyJDb21wYXJlIGhhbGZ3b3JkcyAiLAoreworCWZJTU1FWFQodWlWKTsKKwlQZFY9ZjhC SVRTT0YoZkdFVFVIQUxGKDAsUnNWKSA+IGZDQVNUNHUodWlWKSk7Cit9KQorCitRNklOU04oQTJf dmNtcHdlcSwiUGQ0PXZjbXB3LmVxKFJzczMyLFJ0dDMyKSIsQVRUUklCUygpLAorIkNvbXBhcmUg ZWxlbWVudHMgb2YgdHdvIHZlY3RvcnMgIiwKK3sKKwlmU0VUQklUUygzLDAsUGRWLChmR0VUV09S RCgwLFJzc1YpPT1mR0VUV09SRCgwLFJ0dFYpKSk7CisJZlNFVEJJVFMoNyw0LFBkViwoZkdFVFdP UkQoMSxSc3NWKT09ZkdFVFdPUkQoMSxSdHRWKSkpOworfSkKKworUTZJTlNOKEEyX3ZjbXB3Z3Qs IlBkND12Y21wdy5ndChSc3MzMixSdHQzMikiLEFUVFJJQlMoKSwKKyJDb21wYXJlIGVsZW1lbnRz IG9mIHR3byB2ZWN0b3JzICIsCit7CisJZlNFVEJJVFMoMywwLFBkViwoZkdFVFdPUkQoMCxSc3NW KT5mR0VUV09SRCgwLFJ0dFYpKSk7CisJZlNFVEJJVFMoNyw0LFBkViwoZkdFVFdPUkQoMSxSc3NW KT5mR0VUV09SRCgxLFJ0dFYpKSk7Cit9KQorCitRNklOU04oQTJfdmNtcHdndHUsIlBkND12Y21w dy5ndHUoUnNzMzIsUnR0MzIpIixBVFRSSUJTKCksCisiQ29tcGFyZSBlbGVtZW50cyBvZiB0d28g dmVjdG9ycyAiLAoreworCWZTRVRCSVRTKDMsMCxQZFYsKGZHRVRVV09SRCgwLFJzc1YpPmZHRVRV V09SRCgwLFJ0dFYpKSk7CisJZlNFVEJJVFMoNyw0LFBkViwoZkdFVFVXT1JEKDEsUnNzVik+ZkdF VFVXT1JEKDEsUnR0VikpKTsKK30pCisKK1E2SU5TTihBNF92Y21wd2VxaSwiUGQ0PXZjbXB3LmVx KFJzczMyLCNzOCkiLEFUVFJJQlMoKSwKKyJDb21wYXJlIGVsZW1lbnRzIG9mIHR3byB2ZWN0b3Jz ICIsCit7CisJZlNFVEJJVFMoMywwLFBkViwoZkdFVFdPUkQoMCxSc3NWKT09c2lWKSk7CisJZlNF VEJJVFMoNyw0LFBkViwoZkdFVFdPUkQoMSxSc3NWKT09c2lWKSk7Cit9KQorCitRNklOU04oQTRf dmNtcHdndGksIlBkND12Y21wdy5ndChSc3MzMiwjczgpIixBVFRSSUJTKCksCisiQ29tcGFyZSBl bGVtZW50cyBvZiB0d28gdmVjdG9ycyAiLAoreworCWZTRVRCSVRTKDMsMCxQZFYsKGZHRVRXT1JE KDAsUnNzVik+c2lWKSk7CisJZlNFVEJJVFMoNyw0LFBkViwoZkdFVFdPUkQoMSxSc3NWKT5zaVYp KTsKK30pCisKK1E2SU5TTihBNF92Y21wd2d0dWksIlBkND12Y21wdy5ndHUoUnNzMzIsI3U3KSIs QVRUUklCUygpLAorIkNvbXBhcmUgZWxlbWVudHMgb2YgdHdvIHZlY3RvcnMgIiwKK3sKKwlmU0VU QklUUygzLDAsUGRWLChmR0VUVVdPUkQoMCxSc3NWKT5mQ0FTVDR1KHVpVikpKTsKKwlmU0VUQklU Uyg3LDQsUGRWLChmR0VUVVdPUkQoMSxSc3NWKT5mQ0FTVDR1KHVpVikpKTsKK30pCisKK1E2SU5T TihBNF9ib3VuZHNjaGVja19oaSwiUGQ0PWJvdW5kc2NoZWNrKFJzczMyLFJ0dDMyKTpyYXc6aGki LEFUVFJJQlMoKSwKKyJEZXRlY3QgaWYgYSByZWdpc3RlciBpcyB3aXRoaW4gYm91bmRzIiwKK3sK KwlmSElERShzaXplNHVfdCBzcmM7KQorCXNyYyA9IGZHRVRVV09SRCgxLFJzc1YpOworCVBkViA9 IGY4QklUU09GKChmQ0FTVDR1KHNyYykgPj0gZkdFVFVXT1JEKDAsUnR0VikpICYmIChmQ0FTVDR1 KHNyYykgPCBmR0VUVVdPUkQoMSxSdHRWKSkpOworfSkKKworUTZJTlNOKEE0X2JvdW5kc2NoZWNr X2xvLCJQZDQ9Ym91bmRzY2hlY2soUnNzMzIsUnR0MzIpOnJhdzpsbyIsQVRUUklCUygpLAorIkRl dGVjdCBpZiBhIHJlZ2lzdGVyIGlzIHdpdGhpbiBib3VuZHMiLAoreworCWZISURFKHNpemU0dV90 IHNyYzspCisJc3JjID0gZkdFVFVXT1JEKDAsUnNzVik7CisJUGRWID0gZjhCSVRTT0YoKGZDQVNU NHUoc3JjKSA+PSBmR0VUVVdPUkQoMCxSdHRWKSkgJiYgKGZDQVNUNHUoc3JjKSA8IGZHRVRVV09S RCgxLFJ0dFYpKSk7Cit9KQorCitERUZfVjRfQ09ORF9NQVBQSU5HKEE0X2JvdW5kc2NoZWNrLCJQ ZDQ9Ym91bmRzY2hlY2soUnMzMixSdHQzMikiLCJSczMyICYgMSIsIlBkND1ib3VuZHNjaGVjayhS c3MzMixSdHQzMik6cmF3OmhpIiwiUGQ0PWJvdW5kc2NoZWNrKFJzczMyLFJ0dDMyKTpyYXc6bG8i KQorCitRNklOU04oQTRfdGxibWF0Y2gsIlBkND10bGJtYXRjaChSc3MzMixSdDMyKSIsQVRUUklC UyhBX05PVEVfTEFURVBSRUQsQV9SRVNUUklDVF9MQVRFUFJFRCksCisiRGV0ZWN0IGlmIGEgVkEv QVNJRCBtYXRjaGVzIGEgVExCIGVudHJ5IiwKK3sKKwlmSElERShzaXplNHVfdCBUTEJISTsgc2l6 ZTR1X3QgVExCTE87IHNpemU0dV90IE1BU0s7IHNpemU0dV90IFNJWkU7KQorCU1BU0sgPSAweDA3 ZmZmZmZmOworCVRMQkxPID0gZkdFVFVXT1JEKDAsUnNzVik7CisJVExCSEkgPSBmR0VUVVdPUkQo MSxSc3NWKTsKKwlTSVpFID0gZk1JTig2LGZDTDFfNCh+ZkJSRVZfNChUTEJMTykpKTsKKwlNQVNL ICY9ICgweGZmZmZmZmZmIDw8IDIqU0laRSk7CisJUGRWID0gZjhCSVRTT0YoZkdFVEJJVCgzMSxU TEJISSkgJiYgKChUTEJISSAmIE1BU0spID09IChSdFYgJiBNQVNLKSkpOworCWZISURFKE1BUktf TEFURV9QUkVEX1dSSVRFKFBkTikpCit9KQorCitRNklOU04oQzJfdGZycHIsIlJkMzI9UHM0IixB VFRSSUJTKCksCisiVHJhbnNmZXIgcHJlZGljYXRlIHRvIGdlbmVyYWwgcmVnaXN0ZXIiLCB7IGZQ UkVEVVNFX1RJTUlORygpO1JkViA9IGZaWFROKDgsMzIsUHNWKTsgfSkKKworUTZJTlNOKEMyX3Rm cnJwLCJQZDQ9UnMzMiIsQVRUUklCUygpLAorIlRyYW5zZmVyIGdlbmVyYWwgcmVnaXN0ZXIgdG8g UHJlZGljYXRlIiwgeyBQZFYgPSBmR0VUVUJZVEUoMCxSc1YpOyB9KQorCitRNklOU04oQzRfZmFz dGNvcm5lcjksIlBkND1mYXN0Y29ybmVyOShQczQsUHQ0KSIsQVRUUklCUyhBX0NSU0xPVDIzLEFf Tk9URV9DUlNMT1QyMyksCisiRGV0ZXJtaW5lIHdoZXRoZXIgdGhlIHByZWRpY2F0ZSBzb3VyY2Vz IGRlZmluZSBhIGNvcm5lciIsCit7ICAgZlBSRURVU0VfVElNSU5HKCk7CisJZkhJREUoc2l6ZTR1 X3QgdG1wID0gMDsgc2l6ZTR1X3QgaTspCisJZlNFVEhBTEYoMCx0bXAsKFBzVjw8OCl8UHRWKTsK KwlmU0VUSEFMRigxLHRtcCwoUHNWPDw4KXxQdFYpOworCWZvciAoaSA9IDE7IGkgPCA5OyBpKysp IHsKKwkJdG1wICY9IHRtcCA+PiAxOworCX0KKwlQZFYgPSBmOEJJVFNPRih0bXAgIT0gMCk7Cit9 KQorCitRNklOU04oQzRfZmFzdGNvcm5lcjlfbm90LCJQZDQ9IWZhc3Rjb3JuZXI5KFBzNCxQdDQp IixBVFRSSUJTKEFfQ1JTTE9UMjMsQV9OT1RFX0NSU0xPVDIzKSwKKyJEZXRlcm1pbmUgd2hldGhl ciB0aGUgcHJlZGljYXRlIHNvdXJjZXMgZGVmaW5lIGEgY29ybmVyIiwKK3sKKyAgICBmUFJFRFVT RV9USU1JTkcoKTsKKwlmSElERShzaXplNHVfdCB0bXAgPSAwOyBzaXplNHVfdCBpOykKKwlmU0VU SEFMRigwLHRtcCwoUHNWPDw4KXxQdFYpOworCWZTRVRIQUxGKDEsdG1wLChQc1Y8PDgpfFB0Vik7 CisJZm9yIChpID0gMTsgaSA8IDk7IGkrKykgeworCQl0bXAgJj0gdG1wID4+IDE7CisJfQorCVBk ViA9IGY4QklUU09GKHRtcCA9PSAwKTsKK30pCisKKwpkaWZmIC0tZ2l0IGEvdGFyZ2V0L2hleGFn b24vaW1wb3J0ZWQvZmxvYXQuaWRlZiBiL3RhcmdldC9oZXhhZ29uL2ltcG9ydGVkL2Zsb2F0Lmlk ZWYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWU5ZTk0MAotLS0gL2Rldi9u dWxsCisrKyBiL3RhcmdldC9oZXhhZ29uL2ltcG9ydGVkL2Zsb2F0LmlkZWYKQEAgLTAsMCArMSw0 OTggQEAKKy8qCisgKiAgQ29weXJpZ2h0KGMpIDIwMTktMjAyMCBRdWFsY29tbSBJbm5vdmF0aW9u IENlbnRlciwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBUaGlzIHByb2dyYW0g aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQor ICogIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5CisgKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqICAoYXQgeW91ciBvcHRpb24pIGFueSBs YXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhl IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqICBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ug c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZQorICogIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHNlZSA8aHR0cDovL3d3 dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKi8KKworLyoKKyAqIEZsb2F0aW5nLVBvaW50IEluc3Ry dWN0aW9ucworICovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwor LyogU2NhbGFyIEZQCQkJICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ki8KK1E2SU5TTihGMl9zZmFkZCwiUmQzMj1zZmFkZChSczMyLFJ0MzIpIixBVFRSSUJTKCksCisi RmxvYXRpbmctUG9pbnQgQWRkIiwKK3sgUmRWPWZVTkZMT0FUKGZGTE9BVChSc1YpK2ZGTE9BVChS dFYpKTt9KQorCitRNklOU04oRjJfc2ZzdWIsIlJkMzI9c2ZzdWIoUnMzMixSdDMyKSIsQVRUUklC UygpLAorIkZsb2F0aW5nLVBvaW50IFN1YnRyYWN0IiwKK3sgUmRWPWZVTkZMT0FUKGZGTE9BVChS c1YpLWZGTE9BVChSdFYpKTt9KQorCitRNklOU04oRjJfc2ZtcHksIlJkMzI9c2ZtcHkoUnMzMixS dDMyKSIsQVRUUklCUygpLAorIkZsb2F0aW5nLVBvaW50IE11bHRpcGx5IiwKK3sgUmRWPWZVTkZM T0FUKGZTRk1QWShmRkxPQVQoUnNWKSxmRkxPQVQoUnRWKSkpO30pCisKK1E2SU5TTihGMl9zZmZt YSwiUngzMis9c2ZtcHkoUnMzMixSdDMyKSIsQVRUUklCUygpLAorIkZsb2F0aW5nLVBvaW50IEZ1 c2VkIE11bHRpcGx5IEFkZCIsCit7IFJ4Vj1mVU5GTE9BVChmRk1BRihmRkxPQVQoUnNWKSxmRkxP QVQoUnRWKSxmRkxPQVQoUnhWKSkpO30pCisKK1E2SU5TTihGMl9zZmZtYV9zYywiUngzMis9c2Zt cHkoUnMzMixSdDMyLFB1NCk6c2NhbGUiLEFUVFJJQlMoKSwKKyJGbG9hdGluZy1Qb2ludCBGdXNl ZCBNdWx0aXBseSBBZGQgdy8gQWRkaXRpb25hbCBTY2FsaW5nICgyKipQdSkiLAoreworICAgIGZQ UkVEVVNFX1RJTUlORygpOworCWZISURFKHNpemU0c190IHRtcDspCisJZkNIRUNLU0ZOQU4zKFJ4 VixSeFYsUnNWLFJ0Vik7CisJdG1wPWZVTkZMT0FUKGZGTUFGWChmRkxPQVQoUnNWKSxmRkxPQVQo UnRWKSxmRkxPQVQoUnhWKSxQdVYpKTsKKwlpZiAoISgoZkZMT0FUKFJ4VikgPT0gMC4wKSAmJiBm SVNaRVJPUFJPRChmRkxPQVQoUnNWKSxmRkxPQVQoUnRWKSkpKSBSeFYgPSB0bXA7Cit9KQorCitR NklOU04oRjJfc2ZmbXMsIlJ4MzItPXNmbXB5KFJzMzIsUnQzMikiLEFUVFJJQlMoKSwKKyJGbG9h dGluZy1Qb2ludCBGdXNlZCBNdWx0aXBseSBBZGQiLAoreyBSeFY9ZlVORkxPQVQoZkZNQUYoLWZG TE9BVChSc1YpLGZGTE9BVChSdFYpLGZGTE9BVChSeFYpKSk7IH0pCisKK1E2SU5TTihGMl9zZmZt YV9saWIsIlJ4MzIrPXNmbXB5KFJzMzIsUnQzMik6bGliIixBVFRSSUJTKCksCisiRmxvYXRpbmct UG9pbnQgRnVzZWQgTXVsdGlwbHkgQWRkIGZvciBMaWJyYXJ5IFJvdXRpbmVzIiwKK3sgZkZQU0VU Uk9VTkRfTkVBUkVTVCgpOyBmSElERShpbnQgaW5maW5wOyBpbnQgaW5mbWludXNpbmY7IHNpemU0 c190IHRtcDspCisJaW5mbWludXNpbmYgPSAoKGlzaW5mKGZGTE9BVChSeFYpKSkgJiYKKwkJKGZJ U0lORlBST0QoZkZMT0FUKFJzViksZkZMT0FUKFJ0VikpKSAmJgorCQkoZkdFVEJJVCgzMSxSc1Yg XiBSeFYgXiBSdFYpICE9IDApKTsKKwlpbmZpbnAgPSAoaXNpbmYoZkZMT0FUKFJ4VikpKSB8fCAo aXNpbmYoZkZMT0FUKFJ0VikpKSB8fCAoaXNpbmYoZkZMT0FUKFJzVikpKTsKKwlmQ0hFQ0tTRk5B TjMoUnhWLFJ4VixSc1YsUnRWKTsKKwl0bXA9ZlVORkxPQVQoZkZNQUYoZkZMT0FUKFJzViksZkZM T0FUKFJ0ViksZkZMT0FUKFJ4VikpKTsKKwlpZiAoISgoZkZMT0FUKFJ4VikgPT0gMC4wKSAmJiBm SVNaRVJPUFJPRChmRkxPQVQoUnNWKSxmRkxPQVQoUnRWKSkpKSBSeFYgPSB0bXA7CisJZkZQQ0FO Q0VMRkxBR1MoKTsKKwlpZiAoaXNpbmYoZkZMT0FUKFJ4VikpICYmICFpbmZpbnApIFJ4ViA9IFJ4 ViAtIDE7CisJaWYgKGluZm1pbnVzaW5mKSBSeFYgPSAwOworfSkKKworUTZJTlNOKEYyX3NmZm1z X2xpYiwiUngzMi09c2ZtcHkoUnMzMixSdDMyKTpsaWIiLEFUVFJJQlMoKSwKKyJGbG9hdGluZy1Q b2ludCBGdXNlZCBNdWx0aXBseSBBZGQgZm9yIExpYnJhcnkgUm91dGluZXMiLAoreyBmRlBTRVRS T1VORF9ORUFSRVNUKCk7IGZISURFKGludCBpbmZpbnA7IGludCBpbmZtaW51c2luZjsgc2l6ZTRz X3QgdG1wOykKKwlpbmZtaW51c2luZiA9ICgoaXNpbmYoZkZMT0FUKFJ4VikpKSAmJgorCQkoZklT SU5GUFJPRChmRkxPQVQoUnNWKSxmRkxPQVQoUnRWKSkpICYmCisJCShmR0VUQklUKDMxLFJzViBe IFJ4ViBeIFJ0VikgPT0gMCkpOworCWluZmlucCA9IChpc2luZihmRkxPQVQoUnhWKSkpIHx8IChp c2luZihmRkxPQVQoUnRWKSkpIHx8IChpc2luZihmRkxPQVQoUnNWKSkpOworCWZDSEVDS1NGTkFO MyhSeFYsUnhWLFJzVixSdFYpOworCXRtcD1mVU5GTE9BVChmRk1BRigtZkZMT0FUKFJzViksZkZM T0FUKFJ0ViksZkZMT0FUKFJ4VikpKTsKKwlpZiAoISgoZkZMT0FUKFJ4VikgPT0gMC4wKSAmJiBm SVNaRVJPUFJPRChmRkxPQVQoUnNWKSxmRkxPQVQoUnRWKSkpKSBSeFYgPSB0bXA7CisJZkZQQ0FO Q0VMRkxBR1MoKTsKKwlpZiAoaXNpbmYoZkZMT0FUKFJ4VikpICYmICFpbmZpbnApIFJ4ViA9IFJ4 ViAtIDE7CisJaWYgKGluZm1pbnVzaW5mKSBSeFYgPSAwOworfSkKKworCitRNklOU04oRjJfc2Zj bXBlcSwiUGQ0PXNmY21wLmVxKFJzMzIsUnQzMikiLEFUVFJJQlMoKSwKKyJGbG9hdGluZyBQb2lu dCBDb21wYXJlIGZvciBFcXVhbCIsCit7UGRWPWY4QklUU09GKGZGTE9BVChSc1YpPT1mRkxPQVQo UnRWKSk7fSkKKworUTZJTlNOKEYyX3NmY21wZ3QsIlBkND1zZmNtcC5ndChSczMyLFJ0MzIpIixB VFRSSUJTKCksCisiRmxvYXRpbmctUG9pbnQgQ29tcGFyZSBmb3IgR3JlYXRlciBUaGFuIiwKK3tQ ZFY9ZjhCSVRTT0YoZkZMT0FUKFJzVik+ZkZMT0FUKFJ0VikpO30pCisKKy8qIGNtcGdlIGlzIG5v dCB0aGUgc2FtZSBhcyAhY21wZ3Qoc3dhcG9wcykgaW4gSUVFRSAqLworCitRNklOU04oRjJfc2Zj bXBnZSwiUGQ0PXNmY21wLmdlKFJzMzIsUnQzMikiLEFUVFJJQlMoKSwKKyJGbG9hdGluZy1Qb2lu dCBDb21wYXJlIGZvciBHcmVhdGVyIFRoYW4gLyBFcXVhbCBUbyIsCit7UGRWPWY4QklUU09GKGZG TE9BVChSc1YpPj1mRkxPQVQoUnRWKSk7fSkKKworLyogRXZlcnlvbmUgc2VlbXMgdG8gaGF2ZSB0 aGlzLi4uICovCisKK1E2SU5TTihGMl9zZmNtcHVvLCJQZDQ9c2ZjbXAudW8oUnMzMixSdDMyKSIs QVRUUklCUygpLAorIkZsb2F0aW5nLVBvaW50IENvbXBhcmUgZm9yIFVub3JkZXJlZCIsCit7UGRW PWY4QklUU09GKGlzdW5vcmRlcmVkKGZGTE9BVChSc1YpLGZGTE9BVChSdFYpKSk7fSkKKworCitR NklOU04oRjJfc2ZtYXgsIlJkMzI9c2ZtYXgoUnMzMixSdDMyKSIsQVRUUklCUygpLAorIk1heGlt dW0gb2YgRmxvYXRpbmctUG9pbnQgdmFsdWVzIiwKK3sgUmRWID0gZlVORkxPQVQoZlNGX01BWChm RkxPQVQoUnNWKSxmRkxPQVQoUnRWKSkpOyB9KQorCitRNklOU04oRjJfc2ZtaW4sIlJkMzI9c2Zt aW4oUnMzMixSdDMyKSIsQVRUUklCUygpLAorIk1pbmltdW0gb2YgRmxvYXRpbmctUG9pbnQgdmFs dWVzIiwKK3sgUmRWID0gZlVORkxPQVQoZlNGX01JTihmRkxPQVQoUnNWKSxmRkxPQVQoUnRWKSkp OyB9KQorCisKK1E2SU5TTihGMl9zZmNsYXNzLCJQZDQ9c2ZjbGFzcyhSczMyLCN1NSkiLEFUVFJJ QlMoKSwKKyJDbGFzc2lmeSBGbG9hdGluZy1Qb2ludCBWYWx1ZSIsCit7CisJZkhJREUoaW50IGNs YXNzOykKKwlQZFYgPSAwOworCWNsYXNzID0gZnBjbGFzc2lmeShmRkxPQVQoUnNWKSk7CisJLyog SXMgdGhlIHZhbHVlIHplcm8/ICovCisJaWYgKGZHRVRCSVQoMCx1aVYpICYmIChjbGFzcyA9PSBG UF9aRVJPKSkgUGRWID0gMHhmZjsKKwlpZiAoZkdFVEJJVCgxLHVpVikgJiYgKGNsYXNzID09IEZQ X05PUk1BTCkpIFBkViA9IDB4ZmY7CisJaWYgKGZHRVRCSVQoMix1aVYpICYmIChjbGFzcyA9PSBG UF9TVUJOT1JNQUwpKSBQZFYgPSAweGZmOworCWlmIChmR0VUQklUKDMsdWlWKSAmJiAoY2xhc3Mg PT0gRlBfSU5GSU5JVEUpKSBQZFYgPSAweGZmOworCWlmIChmR0VUQklUKDQsdWlWKSAmJiAoY2xh c3MgPT0gRlBfTkFOKSkgUGRWID0gMHhmZjsKKwlmRlBDQU5DRUxGTEFHUygpOworfSkKKworLyog UmFuZ2U6ICsvLSAoMS4wIC4uIDErKDYzLzY0KSkgKiAyKiooLTYgLi4gKzkpICovCisvKiBNb3Jl IGltbWVkaWF0ZSBiaXRzIHNob3VsZCBwcm9iYWJseSBiZSB1c2VkIGZvciBtb3JlIHByZWNpc2lv bj8gKi8KKworUTZJTlNOKEYyX3NmaW1tX3AsIlJkMzI9c2ZtYWtlKCN1MTApOnBvcyIsQVRUUklC UyhBX1NGTUFLRSksCisiTWFrZSBGbG9hdGluZyBQb2ludCBWYWx1ZSIsCit7CisJUmRWID0gKDEy NyAtIDYpIDw8IDIzOworCVJkViArPSB1aVYgPDwgMTc7Cit9KQorCitRNklOU04oRjJfc2ZpbW1f biwiUmQzMj1zZm1ha2UoI3UxMCk6bmVnIixBVFRSSUJTKEFfU0ZNQUtFKSwKKyJNYWtlIEZsb2F0 aW5nIFBvaW50IFZhbHVlIiwKK3sKKwlSZFYgPSAoMTI3IC0gNikgPDwgMjM7CisJUmRWICs9ICh1 aVYgPDwgMTcpOworCVJkViB8PSAoMSA8PCAzMSk7Cit9KQorCisKK1E2SU5TTihGMl9zZmRpdmNo ZWF0LCJSZDMyPXNmZGl2Y2hlYXQoUnMzMixSdDMyKSIsQVRUUklCUyhBX0ZBS0VJTlNOKSwKKyJD aGVhdGluZyBJbnN0cnVjdGlvbiBmb3IgRGl2aWRlIFRlc3RpbmciLAoreworCVJkViA9IGZVTkZM T0FUKGZGTE9BVChSc1YpIC8gZkZMT0FUKFJ0VikpOworfSkKKworUTZJTlNOKEYyX3NmcmVjaXBh LCJSZDMyLFBlND1zZnJlY2lwYShSczMyLFJ0MzIpIixBVFRSSUJTKEFfTk9URV9DT01QQVRfQUND VVJBQ1ksQV9SRVNUUklDVF9MQVRFUFJFRCxBX05PVEVfTEFURVBSRUQpLAorIlJlY2lwcm9jYWwg QXBwcm94aW1hdGlvbiBmb3IgRGl2aXNpb24iLAoreworCWZISURFKGludCBpZHg7KQorCWZISURF KGludCBhZGp1c3Q7KQorCWZISURFKGludCBtYW50OykKKwlmSElERShpbnQgZXhwOykKKwlpZiAo ZlNGX1JFQ0lQX0NPTU1PTihSc1YsUnRWLFJkVixhZGp1c3QpKSB7CisJCVBlViA9IGFkanVzdDsK KwkJaWR4ID0gKFJ0ViA+PiAxNikgJiAweDdmOworCQltYW50ID0gKGZTRl9SRUNJUF9MT09LVVAo aWR4KSA8PCAxNSkgfCAxOworCQlleHAgPSBmU0ZfQklBUygpIC0gKGZTRl9HRVRFWFAoUnRWKSAt IGZTRl9CSUFTKCkpIC0gMTsKKwkJUmRWID0gZk1BS0VTRihmR0VUQklUKDMxLFJ0ViksZXhwLG1h bnQpOworCX0KK30pCisKK1E2SU5TTihGMl9zZmZpeHVwbiwiUmQzMj1zZmZpeHVwbihSczMyLFJ0 MzIpIixBVFRSSUJTKCksCisiRml4IFVwIE51bWVyYXRvciIsCit7CisJZkhJREUoaW50IGFkanVz dDspCisJZlNGX1JFQ0lQX0NPTU1PTihSc1YsUnRWLFJkVixhZGp1c3QpOworCVJkViA9IFJzVjsK K30pCisKK1E2SU5TTihGMl9zZmZpeHVwZCwiUmQzMj1zZmZpeHVwZChSczMyLFJ0MzIpIixBVFRS SUJTKCksCisiRml4IFVwIERlbm9taW5hdG9yIiwKK3sKKwlmSElERShpbnQgYWRqdXN0OykKKwlm U0ZfUkVDSVBfQ09NTU9OKFJzVixSdFYsUmRWLGFkanVzdCk7CisJUmRWID0gUnRWOworfSkKKwor UTZJTlNOKEYyX3NmaW52c3FydGEsIlJkMzIsUGU0PXNmaW52c3FydGEoUnMzMikiLEFUVFJJQlMo QV9OT1RFX0NPTVBBVF9BQ0NVUkFDWSxBX05PVEVfTEFURVBSRUQsQV9SRVNUUklDVF9MQVRFUFJF RCksCisiUmVjaXByb2NhbCBTcXVhcmUgUm9vdCBBcHByb3hpbWF0aW9uIiwKK3sKKwlmSElERShp bnQgaWR4OykKKwlmSElERShpbnQgYWRqdXN0OykKKwlmSElERShpbnQgbWFudDspCisJZkhJREUo aW50IGV4cDspCisJaWYgKGZTRl9JTlZTUVJUX0NPTU1PTihSc1YsUmRWLGFkanVzdCkpIHsKKwkJ UGVWID0gYWRqdXN0OworCQlpZHggPSAoUnNWID4+IDE3KSAmIDB4N2Y7CisJCW1hbnQgPSAoZlNG X0lOVlNRUlRfTE9PS1VQKGlkeCkgPDwgMTUpOworCQlleHAgPSBmU0ZfQklBUygpIC0gKChmU0Zf R0VURVhQKFJzVikgLSBmU0ZfQklBUygpKSA+PiAxKSAtIDE7CisJCVJkViA9IGZNQUtFU0YoZkdF VEJJVCgzMSxSc1YpLGV4cCxtYW50KTsKKwl9Cit9KQorCitRNklOU04oRjJfc2ZmaXh1cHIsIlJk MzI9c2ZmaXh1cHIoUnMzMikiLEFUVFJJQlMoKSwKKyJGaXggVXAgUmFkaWNhbmQiLAoreworCWZI SURFKGludCBhZGp1c3Q7KQorCWZTRl9JTlZTUVJUX0NPTU1PTihSc1YsUmRWLGFkanVzdCk7CisJ UmRWID0gUnNWOworfSkKKworUTZJTlNOKEYyX3Nmc3FydGNoZWF0LCJSZDMyPXNmc3FydGNoZWF0 KFJzMzIpIixBVFRSSUJTKEFfRkFLRUlOU04pLAorIkNoZWF0aW5nIGluc3RydWN0aW9uIGZvciBT UVJUIFRlc3RpbmciLAoreworCVJkViA9IGZVTkZMT0FUKHNxcnRmKGZGTE9BVChSc1YpKSk7Cit9 KQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIFNjYWxhciBE UAkJCSAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitRNklOU04o RjJfZGZhZGQsIlJkZDMyPWRmYWRkKFJzczMyLFJ0dDMyKSIsQVRUUklCUygpLAorIkZsb2F0aW5n LVBvaW50IEFkZCIsCit7IFJkZFY9ZlVORE9VQkxFKGZET1VCTEUoUnNzVikrZkRPVUJMRShSdHRW KSk7fSkKKworUTZJTlNOKEYyX2Rmc3ViLCJSZGQzMj1kZnN1YihSc3MzMixSdHQzMikiLEFUVFJJ QlMoKSwKKyJGbG9hdGluZy1Qb2ludCBTdWJ0cmFjdCIsCit7IFJkZFY9ZlVORE9VQkxFKGZET1VC TEUoUnNzViktZkRPVUJMRShSdHRWKSk7fSkKKworUTZJTlNOKEYyX2RmbWF4LCJSZGQzMj1kZm1h eChSc3MzMixSdHQzMikiLEFUVFJJQlMoKSwKKyJNYXhpbXVtIG9mIEZsb2F0aW5nLVBvaW50IHZh bHVlcyIsCit7IFJkZFYgPSBmVU5ET1VCTEUoZkRGX01BWChmRE9VQkxFKFJzc1YpLGZET1VCTEUo UnR0VikpKTsgfSkKKworUTZJTlNOKEYyX2RmbWluLCJSZGQzMj1kZm1pbihSc3MzMixSdHQzMiki LEFUVFJJQlMoKSwKKyJNaW5pbXVtIG9mIEZsb2F0aW5nLVBvaW50IHZhbHVlcyIsCit7IFJkZFYg PSBmVU5ET1VCTEUoZkRGX01JTihmRE9VQkxFKFJzc1YpLGZET1VCTEUoUnR0VikpKTsgfSkKKwor UTZJTlNOKEYyX2RmbXB5Zml4LCJSZGQzMj1kZm1weWZpeChSc3MzMixSdHQzMikiLEFUVFJJQlMo KSwKKyJGaXggVXAgTXVsdGlwbGljYW5kIGZvciBNdWx0aXBsaWNhdGlvbiIsCit7CisJaWYgKGZE Rl9JU0RFTk9STShSc3NWKSAmJiBmREZfSVNCSUcoUnR0VikgJiYgZkRGX0lTTk9STUFMKFJ0dFYp KSBSZGRWID0gZlVORE9VQkxFKGZET1VCTEUoUnNzVikgKiAweDEuMHA1Mik7CisJZWxzZSBpZiAo ZkRGX0lTREVOT1JNKFJ0dFYpICYmIGZERl9JU0JJRyhSc3NWKSAmJiBmREZfSVNOT1JNQUwoUnNz VikpIFJkZFYgPSBmVU5ET1VCTEUoZkRPVUJMRShSc3NWKSAqIDB4MS4wcC01Mik7CisJZWxzZSBS ZGRWID0gUnNzVjsKK30pCisKK1E2SU5TTihGMl9kZm1weWxsLCJSZGQzMj1kZm1weWxsKFJzczMy LFJ0dDMyKSIsQVRUUklCUygpLAorIk11bHRpcGx5IGxvdypsb3cgYW5kIHNoaWZ0IG9mZiBsb3cg MzIgYml0cyBpbnRvIHN0aWNreSAoaW4gTVNCKSIsCit7CisJZkhJREUoc2l6ZTh1X3QgcHJvZDsp CisJcHJvZCA9IGZNUFkzMlVVKGZHRVRVV09SRCgwLFJzc1YpLGZHRVRVV09SRCgwLFJ0dFYpKTsK KwlSZGRWID0gKHByb2QgPj4gMzIpIDw8IDE7CisJaWYgKGZHRVRVV09SRCgwLHByb2QpICE9IDAp IGZTRVRCSVQoMCxSZGRWLDEpOworfSkKKworUTZJTlNOKEYyX2RmbXB5bGgsIlJ4eDMyKz1kZm1w eWxoKFJzczMyLFJ0dDMyKSIsQVRUUklCUygpLAorIk11bHRpcGx5IGxvdypoaWdoIGFuZCBhY2N1 bXVsYXRlIiwKK3sKKwlSeHhWICs9IChmR0VUVVdPUkQoMCxSc3NWKSAqICgweDAwMTAwMDAwIHwg ZlpYVE4oMjAsNjQsZkdFVFVXT1JEKDEsUnR0VikpKSkgPDwgMTsKK30pCisKK1E2SU5TTihGMl9k Zm1weWhoLCJSeHgzMis9ZGZtcHloaChSc3MzMixSdHQzMikiLEFUVFJJQlMoKSwKKyJNdWx0aXBs eSBoaWdoKmhpZ2ggYW5kIGFjY3VtdWxhdGUgd2l0aCBMKkggdmFsdWUiLAoreworCVJ4eFYgPSBm VU5ET1VCTEUoZkRGX01QWV9ISChmRE9VQkxFKFJzc1YpLGZET1VCTEUoUnR0ViksUnh4VikpOwor fSkKKworCisKKyNpZmRlZiBBRERfRFBfT1BTCitRNklOU04oRjJfZGZtcHksIlJkZDMyPWRmbXB5 KFJzczMyLFJ0dDMyKSIsQVRUUklCUyhBX0ZBS0VJTlNOKSwKKyJGbG9hdGluZy1Qb2ludCBNdWx0 aXBseSIsCit7IEZMQVRFTkNZKDQpO1JkZFY9ZlVORE9VQkxFKGZERk1QWShmRE9VQkxFKFJzc1Yp LGZET1VCTEUoUnR0VikpKTt9KQorCitRNklOU04oRjJfZGZmbWEsIlJ4eDMyKz1kZm1weShSc3Mz MixSdHQzMikiLEFUVFJJQlMoQV9GQUtFSU5TTiksCisiRmxvYXRpbmctUG9pbnQgRnVzZWQgTXVs dGlwbHkgQWRkIiwKK3sgRkxBVEVOQ1koNSk7Unh4Vj1mVU5ET1VCTEUoZkZNQShmRE9VQkxFKFJz c1YpLGZET1VCTEUoUnR0ViksZkRPVUJMRShSeHhWKSkpO30pCisKK1E2SU5TTihGMl9kZmZtcywi Unh4MzItPWRmbXB5KFJzczMyLFJ0dDMyKSIsQVRUUklCUyhBX0ZBS0VJTlNOKSwKKyJGbG9hdGlu Zy1Qb2ludCBGdXNlZCBNdWx0aXBseSBBZGQiLAoreyBGTEFURU5DWSg1KTtSeHhWPWZVTkRPVUJM RShmRk1BKC1mRE9VQkxFKFJzc1YpLGZET1VCTEUoUnR0ViksZkRPVUJMRShSeHhWKSkpO30pCisK K1E2SU5TTihGMl9kZmZtYV9saWIsIlJ4eDMyKz1kZm1weShSc3MzMixSdHQzMik6bGliIixBVFRS SUJTKEFfRkFLRUlOU04pLAorIkZsb2F0aW5nLVBvaW50IEZ1c2VkIE11bHRpcGx5IEFkZCBmb3Ig TGlicmFyeSBSb3V0aW5lcyIsCit7IEZMQVRFTkNZKDUpO2ZGUFNFVFJPVU5EX05FQVJFU1QoKTsg ZkhJREUoaW50IGluZmlucDsgaW50IGluZm1pbnVzaW5mOykKKyAgaW5maW5wID0gKGlzaW5mKGZE T1VCTEUoUnh4VikpKSB8fCAoaXNpbmYoZkRPVUJMRShSdHRWKSkpIHx8IChpc2luZihmRE9VQkxF KFJzc1YpKSk7CisgIGluZm1pbnVzaW5mID0gKChpc2luZihmRE9VQkxFKFJ4eFYpKSkgJiYKKwkJ KGZJU0lORlBST0QoZkRPVUJMRShSc3NWKSxmRE9VQkxFKFJ0dFYpKSkgJiYKKwkJKGZHRVRCSVQo NjMsUnNzViBeIFJ4eFYgXiBSdHRWKSAhPSAwKSk7CisgIGZDSEVDS0RGTkFOMyhSeHhWLFJ4eFYs UnNzVixSdHRWKTsKKyAgaWYgKChmRE9VQkxFKFJzc1YpICE9IDAuMCkgJiYgKGZET1VCTEUoUnR0 VikgIT0gMC4wKSkgeworICAgIFJ4eFY9ZlVORE9VQkxFKGZGTUEoZkRPVUJMRShSc3NWKSxmRE9V QkxFKFJ0dFYpLGZET1VCTEUoUnh4VikpKTsKKyAgfSBlbHNlIHsKKyAgICBpZiAoaXNpbmYoZkRP VUJMRShSc3NWKSkgfHwgaXNpbmYoZkRPVUJMRShSdHRWKSkpIFJ4eFYgPSBmREZOQU5WQUwoKTsK KyAgfQorICBmRlBDQU5DRUxGTEFHUygpOworICBpZiAoaXNpbmYoZkRPVUJMRShSeHhWKSkgJiYg IWluZmlucCkgUnh4ViA9IFJ4eFYgLSAxOworICBpZiAoaW5mbWludXNpbmYpIFJ4eFYgPSAwOwor fSkKKworCitRNklOU04oRjJfZGZmbXNfbGliLCJSeHgzMi09ZGZtcHkoUnNzMzIsUnR0MzIpOmxp YiIsQVRUUklCUyhBX0ZBS0VJTlNOKSwKKyJGbG9hdGluZy1Qb2ludCBGdXNlZCBNdWx0aXBseSBB ZGQgZm9yIExpYnJhcnkgUm91dGluZXMiLAoreyBGTEFURU5DWSg1KTsgZkZQU0VUUk9VTkRfTkVB UkVTVCgpOyBmSElERShpbnQgaW5maW5wOyBpbnQgaW5mbWludXNpbmY7KQorICBpbmZpbnAgPSAo aXNpbmYoZkRPVUJMRShSeHhWKSkpIHx8IChpc2luZihmRE9VQkxFKFJ0dFYpKSkgfHwgKGlzaW5m KGZET1VCTEUoUnNzVikpKTsKKyAgaW5mbWludXNpbmYgPSAoKGlzaW5mKGZET1VCTEUoUnh4Vikp KSAmJgorCQkoZklTSU5GUFJPRChmRE9VQkxFKFJzc1YpLGZET1VCTEUoUnR0VikpKSAmJgorCQko ZkdFVEJJVCg2MyxSc3NWIF4gUnh4ViBeIFJ0dFYpID09IDApKTsKKyAgZkNIRUNLREZOQU4zKFJ4 eFYsUnh4VixSc3NWLFJ0dFYpOworICBpZiAoKGZET1VCTEUoUnNzVikgIT0gMC4wKSAmJiAoZkRP VUJMRShSdHRWKSAhPSAwLjApKSB7CisgICAgUnh4Vj1mVU5ET1VCTEUoZkZNQSgtZkRPVUJMRShS c3NWKSxmRE9VQkxFKFJ0dFYpLGZET1VCTEUoUnh4VikpKTsKKyAgfSBlbHNlIHsKKyAgICBpZiAo aXNpbmYoZkRPVUJMRShSc3NWKSkgfHwgaXNpbmYoZkRPVUJMRShSdHRWKSkpIFJ4eFYgPSBmREZO QU5WQUwoKTsKKyAgfQorICBmRlBDQU5DRUxGTEFHUygpOworICBpZiAoaXNpbmYoZkRPVUJMRShS eHhWKSkgJiYgIWluZmlucCkgUnh4ViA9IFJ4eFYgLSAxOworICBpZiAoaW5mbWludXNpbmYpIFJ4 eFYgPSAwOworfSkKKworCitRNklOU04oRjJfZGZmbWFfc2MsIlJ4eDMyKz1kZm1weShSc3MzMixS dHQzMixQdTQpOnNjYWxlIixBVFRSSUJTKEFfRkFLRUlOU04pLAorIkZsb2F0aW5nLVBvaW50IEZ1 c2VkIE11bHRpcGx5IEFkZCB3LyBBZGRpdGlvbmFsIFNjYWxpbmcgKDIqKig0KlB1KSkiLAoreyBG TEFURU5DWSg1KTsKKyAgZkhJREUoc2l6ZThzX3QgdG1wOykKKyAgZkNIRUNLREZOQU4zKFJ4eFYs Unh4VixSc3NWLFJ0dFYpOworICB0bXA9ZlVORE9VQkxFKGZGTUFYKGZET1VCTEUoUnNzViksZkRP VUJMRShSdHRWKSxmRE9VQkxFKFJ4eFYpLFB1VikpOworICBpZiAoKGZET1VCTEUodG1wKSAhPSBm RE9VQkxFKFJ4eFYpKSB8fCAoKGZET1VCTEUoUnNzVikgIT0gMC4wKSAmJiAoZkRPVUJMRShSdHRW KSAhPSAwLjApKSkgUnh4ViA9IHRtcDsKK30pCisKKyNlbmRpZgorCitRNklOU04oRjJfZGZjbXBl cSwiUGQ0PWRmY21wLmVxKFJzczMyLFJ0dDMyKSIsQVRUUklCUygpLAorIkZsb2F0aW5nIFBvaW50 IENvbXBhcmUgZm9yIEVxdWFsIiwKK3tQZFY9ZjhCSVRTT0YoZkRPVUJMRShSc3NWKT09ZkRPVUJM RShSdHRWKSk7fSkKKworUTZJTlNOKEYyX2RmY21wZ3QsIlBkND1kZmNtcC5ndChSc3MzMixSdHQz MikiLEFUVFJJQlMoKSwKKyJGbG9hdGluZy1Qb2ludCBDb21wYXJlIGZvciBHcmVhdGVyIFRoYW4i LAore1BkVj1mOEJJVFNPRihmRE9VQkxFKFJzc1YpPmZET1VCTEUoUnR0VikpO30pCisKKworLyog Y21wZ2UgaXMgbm90IHRoZSBzYW1lIGFzICFjbXBndChzd2Fwb3BzKSBpbiBJRUVFICovCisKK1E2 SU5TTihGMl9kZmNtcGdlLCJQZDQ9ZGZjbXAuZ2UoUnNzMzIsUnR0MzIpIixBVFRSSUJTKCksCisi RmxvYXRpbmctUG9pbnQgQ29tcGFyZSBmb3IgR3JlYXRlciBUaGFuIC8gRXF1YWwgVG8iLAore1Bk Vj1mOEJJVFNPRihmRE9VQkxFKFJzc1YpPj1mRE9VQkxFKFJ0dFYpKTt9KQorCisvKiBFdmVyeW9u ZSBzZWVtcyB0byBoYXZlIHRoaXMuLi4gKi8KKworUTZJTlNOKEYyX2RmY21wdW8sIlBkND1kZmNt cC51byhSc3MzMixSdHQzMikiLEFUVFJJQlMoKSwKKyJGbG9hdGluZy1Qb2ludCBDb21wYXJlIGZv ciBVbm9yZGVyZWQiLAore1BkVj1mOEJJVFNPRihpc3Vub3JkZXJlZChmRE9VQkxFKFJzc1YpLGZE T1VCTEUoUnR0VikpKTt9KQorCisKK1E2SU5TTihGMl9kZmNsYXNzLCJQZDQ9ZGZjbGFzcyhSc3Mz MiwjdTUpIixBVFRSSUJTKCksCisiQ2xhc3NpZnkgRmxvYXRpbmctUG9pbnQgVmFsdWUiLAorewor CWZISURFKGludCBjbGFzczspCisJUGRWID0gMDsKKwljbGFzcyA9IGZwY2xhc3NpZnkoZkRPVUJM RShSc3NWKSk7CisJLyogSXMgdGhlIHZhbHVlIHplcm8/ICovCisJaWYgKGZHRVRCSVQoMCx1aVYp ICYmIChjbGFzcyA9PSBGUF9aRVJPKSkgUGRWID0gMHhmZjsKKwlpZiAoZkdFVEJJVCgxLHVpVikg JiYgKGNsYXNzID09IEZQX05PUk1BTCkpIFBkViA9IDB4ZmY7CisJaWYgKGZHRVRCSVQoMix1aVYp ICYmIChjbGFzcyA9PSBGUF9TVUJOT1JNQUwpKSBQZFYgPSAweGZmOworCWlmIChmR0VUQklUKDMs dWlWKSAmJiAoY2xhc3MgPT0gRlBfSU5GSU5JVEUpKSBQZFYgPSAweGZmOworCWlmIChmR0VUQklU KDQsdWlWKSAmJiAoY2xhc3MgPT0gRlBfTkFOKSkgUGRWID0gMHhmZjsKKwlmRlBDQU5DRUxGTEFH UygpOworfSkKKworCisvKiBSYW5nZTogKy8tICgxLjAgLi4gMSsoNjMvNjQpKSAqIDIqKigtNiAu LiArOSkgKi8KKy8qIE1vcmUgaW1tZWRpYXRlIGJpdHMgc2hvdWxkIHByb2JhYmx5IGJlIHVzZWQg Zm9yIG1vcmUgcHJlY2lzaW9uPyAqLworCitRNklOU04oRjJfZGZpbW1fcCwiUmRkMzI9ZGZtYWtl KCN1MTApOnBvcyIsQVRUUklCUyhBX0RGTUFLRSksCisiTWFrZSBGbG9hdGluZyBQb2ludCBWYWx1 ZSIsCit7CisJUmRkViA9ICgxMDIzVUxMIC0gNikgPDwgNTI7CisJUmRkViArPSAoZkhJREUoKHNp emU4dV90KSl1aVYpIDw8IDQ2OworfSkKKworUTZJTlNOKEYyX2RmaW1tX24sIlJkZDMyPWRmbWFr ZSgjdTEwKTpuZWciLEFUVFJJQlMoQV9ERk1BS0UpLAorIk1ha2UgRmxvYXRpbmcgUG9pbnQgVmFs dWUiLAoreworCVJkZFYgPSAoMTAyM1VMTCAtIDYpIDw8IDUyOworCVJkZFYgKz0gKGZISURFKChz aXplOHVfdCkpdWlWKSA8PCA0NjsKKwlSZGRWIHw9ICgoMVVMTCkgPDwgNjMpOworfSkKKworCisj aWZkZWYgQUREX0RQX09QUworUTZJTlNOKEYyX2RmZGl2Y2hlYXQsIlJkZDMyPWRmZGl2Y2hlYXQo UnNzMzIsUnR0MzIpIixBVFRSSUJTKEFfRkFLRUlOU04pLAorIkNoZWF0aW5nIEluc3RydWN0aW9u IGZvciBEaXZpZGUgVGVzdGluZyIsCit7CisJUmRkViA9IGZVTkRPVUJMRShmRE9VQkxFKFJzc1Yp IC8gZkRPVUJMRShSdHRWKSk7Cit9KQorCisKK1E2SU5TTihGMl9kZnJlY2lwYSwiUmRkMzIsUGU0 PWRmcmVjaXBhKFJzczMyLFJ0dDMyKSIsQVRUUklCUyhBX05PVEVfQ09NUEFUX0FDQ1VSQUNZLEFf RkFLRUlOU04pLAorIlJlY2lwcm9jYWwgQXBwcm94aW1hdGlvbiBmb3IgRGl2aXNpb24iLAorewor CWZISURFKGludCBpZHg7KQorCWZISURFKGludCBhZGp1c3Q7KQorCWZISURFKHNpemU4c190IG1h bnQ7KQorCWZISURFKGludCBleHA7KQorCWlmIChmREZfUkVDSVBfQ09NTU9OKFJzc1YsUnR0VixS ZGRWLGFkanVzdCkpIHsKKwkJUGVWID0gYWRqdXN0OworCQlpZHggPSAoUnR0ViA+PiA0NSkgJiAw eDdmOworCQltYW50ID0gKGZERl9SRUNJUF9MT09LVVAoaWR4KSA8PCA0NCkgfCAxOworCQlleHAg PSBmREZfQklBUygpIC0gKGZERl9HRVRFWFAoUnR0VikgLSBmREZfQklBUygpKSAtIDE7CisJCVJk ZFYgPSBmTUFLRURGKGZHRVRCSVQoNjMsUnR0ViksZXhwLG1hbnQpOworCX0KK30pCisKK1E2SU5T TihGMl9kZmZpeHVwbiwiUmRkMzI9ZGZmaXh1cG4oUnNzMzIsUnR0MzIpIixBVFRSSUJTKEFfRkFL RUlOU04pLAorIkZpeCBVcCBOdW1lcmF0b3IiLAoreworCWZISURFKGludCBhZGp1c3Q7KQorCWZE Rl9SRUNJUF9DT01NT04oUnNzVixSdHRWLFJkZFYsYWRqdXN0KTsKKwlSZGRWID0gUnNzVjsKK30p CisKK1E2SU5TTihGMl9kZmZpeHVwZCwiUmRkMzI9ZGZmaXh1cGQoUnNzMzIsUnR0MzIpIixBVFRS SUJTKEFfRkFLRUlOU04pLAorIkZpeCBVcCBEZW5vbWluYXRvciIsCit7CisJZkhJREUoaW50IGFk anVzdDspCisJZkRGX1JFQ0lQX0NPTU1PTihSc3NWLFJ0dFYsUmRkVixhZGp1c3QpOworCVJkZFYg PSBSdHRWOworfSkKKworCisKKworUTZJTlNOKEYyX2RmaW52c3FydGEsIlJkZDMyLFBlND1kZmlu dnNxcnRhKFJzczMyKSIsQVRUUklCUyhBX05PVEVfQ09NUEFUX0FDQ1VSQUNZLEFfRkFLRUlOU04p LAorIlJlY2lwcm9jYWwgQXBwcm94aW1hdGlvbiBmb3IgRGl2aXNpb24iLAoreworCWZISURFKGlu dCBpZHg7KQorCWZISURFKGludCBhZGp1c3Q7KQorCWZISURFKHNpemU4dV90IG1hbnQ7KQorCWZI SURFKGludCBleHA7KQorCWlmIChmREZfSU5WU1FSVF9DT01NT04oUnNzVixSZGRWLGFkanVzdCkp IHsKKwkJUGVWID0gYWRqdXN0OworCQlpZHggPSAoUnNzViA+PiA0NikgJiAweDdmOworCQltYW50 ID0gKGZERl9JTlZTUVJUX0xPT0tVUChpZHgpIDw8IDQ0KTsKKwkJZXhwID0gZkRGX0JJQVMoKSAt ICgoZkRGX0dFVEVYUChSc3NWKSAtIGZERl9CSUFTKCkpID4+IDEpIC0gMTsKKwkJUmRkViA9IGZN QUtFREYoZkdFVEJJVCg2MyxSc3NWKSxleHAsbWFudCk7CisJfQorfSkKKworUTZJTlNOKEYyX2Rm Zml4dXByLCJSZGQzMj1kZmZpeHVwcihSc3MzMikiLEFUVFJJQlMoQV9GQUtFSU5TTiksCisiRml4 IFVwIFJhZGljYW5kIiwKK3sKKwlmSElERShpbnQgYWRqdXN0OykKKwlmREZfSU5WU1FSVF9DT01N T04oUnNzVixSZGRWLGFkanVzdCk7CisJUmRkViA9IFJzc1Y7Cit9KQorCitRNklOU04oRjJfZGZz cXJ0Y2hlYXQsIlJkZDMyPWRmc3FydGNoZWF0KFJzczMyKSIsQVRUUklCUyhBX0ZBS0VJTlNOKSwK KyJDaGVhdGluZyBpbnN0cnVjdGlvbiBmb3IgU1FSVCBUZXN0aW5nIiwKK3sKKwlSZGRWID0gZlVO RE9VQkxFKHNxcnQoZkRPVUJMRShSc3NWKSkpOworfSkKKyNlbmRpZgorCisKKworCisKKy8qIENP TlZFUlNJT04gKi8KKworI2RlZmluZSBDT05WRVJUKFRBRyxERVNULERFU1RWLFNSQyxTUkNWLE9V VENBU1QsT1VUVFlQRSxJTkNBU1QsSU5UWVBFLE1PREVUQUcsTU9ERVNZTixNT0RFQkVIKSBcCisg ICAgUTZJTlNOKEYyX2NvbnZfIyNUQUcjI01PREVUQUcsI0RFU1QiPWNvbnZlcnRfIiNUQUciKCIj U1JDIikiI01PREVTWU4sQVRUUklCUygpLCBcCisgICAgIkZsb2F0aW5nIHBvaW50IGZvcm1hdCBj b252ZXJzaW9uIiwgXAorICAgIHsgTU9ERUJFSCBERVNUViA9IE9VVENBU1QoY29udl8jI0lOVFlQ RSMjX3RvXyMjT1VUVFlQRShJTkNBU1QoU1JDVikpKTsgfSkKKworQ09OVkVSVChzZjJkZixSZGQz MixSZGRWLFJzMzIsUnNWLGZVTkRPVUJMRSxkZixmRkxPQVQsc2YsLCwpCitDT05WRVJUKGRmMnNm LFJkMzIsUmRWLFJzczMyLFJzc1YsZlVORkxPQVQsc2YsZkRPVUJMRSxkZiwsLCkKKworI2RlZmlu ZSBBTExJTlREU1QoVEFHU1RBUlQsU1JDLFNSQ1YsSU5DQVNULElOVFlQRSxNT0RFVEFHLE1PREVT WU4sTU9ERUJFSCkgXAorQ09OVkVSVChUQUdTVEFSVCMjdXcsUmQzMixSZFYsU1JDLFNSQ1YsZkNB U1Q0dSw0dSxJTkNBU1QsSU5UWVBFLE1PREVUQUcsTU9ERVNZTixNT0RFQkVIKSBcCitDT05WRVJU KFRBR1NUQVJUIyN3LFJkMzIsUmRWLFNSQyxTUkNWLGZDQVNUNHMsNHMsSU5DQVNULElOVFlQRSxN T0RFVEFHLE1PREVTWU4sTU9ERUJFSCkgXAorQ09OVkVSVChUQUdTVEFSVCMjdWQsUmRkMzIsUmRk VixTUkMsU1JDVixmQ0FTVDh1LDh1LElOQ0FTVCxJTlRZUEUsTU9ERVRBRyxNT0RFU1lOLE1PREVC RUgpIFwKK0NPTlZFUlQoVEFHU1RBUlQjI2QsUmRkMzIsUmRkVixTUkMsU1JDVixmQ0FTVDhzLDhz LElOQ0FTVCxJTlRZUEUsTU9ERVRBRyxNT0RFU1lOLE1PREVCRUgpCisKKyNkZWZpbmUgQUxMRlBE U1QoVEFHU1RBUlQsU1JDLFNSQ1YsSU5DQVNULElOVFlQRSxNT0RFVEFHLE1PREVTWU4sTU9ERUJF SCkgXAorQ09OVkVSVChUQUdTVEFSVCMjc2YsUmQzMixSZFYsU1JDLFNSQ1YsZlVORkxPQVQsc2Ys SU5DQVNULElOVFlQRSxNT0RFVEFHLE1PREVTWU4sTU9ERUJFSCkgXAorQ09OVkVSVChUQUdTVEFS VCMjZGYsUmRkMzIsUmRkVixTUkMsU1JDVixmVU5ET1VCTEUsZGYsSU5DQVNULElOVFlQRSxNT0RF VEFHLE1PREVTWU4sTU9ERUJFSCkKKworI2RlZmluZSBBTExJTlRTUkMoR0VOLE1PREVUQUcsTU9E RVNZTixNT0RFQkVIKSBcCitHRU4odXcjIzIsUnMzMixSc1YsZkNBU1Q0dSw0dSxNT0RFVEFHLE1P REVTWU4sTU9ERUJFSCkgXAorR0VOKHcjIzIsUnMzMixSc1YsZkNBU1Q0cyw0cyxNT0RFVEFHLE1P REVTWU4sTU9ERUJFSCkgXAorR0VOKHVkIyMyLFJzczMyLFJzc1YsZkNBU1Q4dSw4dSxNT0RFVEFH LE1PREVTWU4sTU9ERUJFSCkgXAorR0VOKGQjIzIsUnNzMzIsUnNzVixmQ0FTVDhzLDhzLE1PREVU QUcsTU9ERVNZTixNT0RFQkVIKQorCisjZGVmaW5lIEFMTEZQU1JDKEdFTixNT0RFVEFHLE1PREVT WU4sTU9ERUJFSCkgXAorR0VOKHNmIyMyLFJzMzIsUnNWLGZGTE9BVCxzZixNT0RFVEFHLE1PREVT WU4sTU9ERUJFSCkgXAorR0VOKGRmIyMyLFJzczMyLFJzc1YsZkRPVUJMRSxkZixNT0RFVEFHLE1P REVTWU4sTU9ERUJFSCkKKworQUxMSU5UU1JDKEFMTEZQRFNULCwsKQorQUxMRlBTUkMoQUxMSU5U RFNULCwsKQorQUxMRlBTUkMoQUxMSU5URFNULF9jaG9wLDpjaG9wLGZGUFNFVFJPVU5EX0NIT1Ao KTspCisKZGlmZiAtLWdpdCBhL3RhcmdldC9oZXhhZ29uL2ltcG9ydGVkL2xkc3QuaWRlZiBiL3Rh cmdldC9oZXhhZ29uL2ltcG9ydGVkL2xkc3QuaWRlZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi4yYjAzYmJjCi0tLSAvZGV2L251bGwKKysrIGIvdGFyZ2V0L2hleGFnb24vaW1w b3J0ZWQvbGRzdC5pZGVmCkBAIC0wLDAgKzEsNDIxIEBACisvKgorICogIENvcHlyaWdodChjKSAy MDE5LTIwMjAgUXVhbGNvbW0gSW5ub3ZhdGlvbiBDZW50ZXIsIEluYy4gQWxsIFJpZ2h0cyBSZXNl cnZlZC4KKyAqCisgKiAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogIHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y CisgKiAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBw cm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws CisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y IG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3aXRoIHRoaXMgcHJv Z3JhbTsgaWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICovCisK Ky8qCisgKiBMb2FkIGFuZCBTdG9yZSBpbnN0cnVjdGlvbiBkZWZpbml0aW9ucworICovCisKKyNk ZWZpbmUgRlJBTUVfRVhQTElDSVQgMQorCisvKiBUaGUgc2V0IG9mIGFkZHJlc3NpbmcgbW9kZXMg c3RhbmRhcmQgdG8gYWxsIExvYWQgaW5zdHJ1Y3Rpb25zICovCisjZGVmaW5lIFNURF9MRF9BTU9E RVMoVEFHLE9QRVIsREVTQ1IsQVRUUklCLFNIRlQsU0VNQU5USUNTLFNDQUxFKVwKK1E2SU5TTihM Ml8jI1RBRyMjX2lvLCAgT1BFUiIoUnMzMisjczExOiJTSEZUIikiLCAgICAgICAgICBBVFRSSUIs REVTQ1Ise2ZJTU1FWFQoc2lWKTsgZkVBX1JJKFJzVixzaVYpOyBTRU1BTlRJQ1M7IH0pXAorUTZJ TlNOKEw0XyMjVEFHIyNfdXIsICBPUEVSIihSdDMyPDwjdTIrI1U2KSIsICAgICAgICAgICAgIEFU VFJJQixERVNDUix7Zk1VU1RfSU1NRVhUKFVpVik7IGZFQV9JUnMoVWlWLFJ0Vix1aVYpOyBTRU1B TlRJQ1M7fSlcCitRNklOU04oTDRfIyNUQUcjI19hcCwgIE9QRVIiKFJlMzI9I1U2KSIsICAgICAg ICAgICAgICAgICAgQVRUUklCLERFU0NSLHtmTVVTVF9JTU1FWFQoVWlWKTsgZkVBX0lNTShVaVYp OyBTRU1BTlRJQ1M7IFJlVj1VaVY7IH0pXAorUTZJTlNOKEwyXyMjVEFHIyNfcHIsICBPUEVSIihS eDMyKytNdTIpIiwgICAgICAgICAgICAgICAgIEFUVFJJQixERVNDUix7ZkVBX1JFRyhSeFYpOyBm UE1fTShSeFYsTXVWKTsgU0VNQU5USUNTO30pXAorUTZJTlNOKEwyXyMjVEFHIyNfcGJyLCBPUEVS IihSeDMyKytNdTI6YnJldikiLCAgICAgICAgICAgIEFUVFJJQixERVNDUix7ZkVBX0JSRVZSKFJ4 Vik7IGZQTV9NKFJ4VixNdVYpOyBTRU1BTlRJQ1M7fSlcCitRNklOU04oTDJfIyNUQUcjI19waSwg IE9QRVIiKFJ4MzIrKyNzNDoiU0hGVCIpIiwgICAgICAgICAgQVRUUklCLERFU0NSLHtmRUFfUkVH KFJ4Vik7IGZQTV9JKFJ4VixzaVYpOyBTRU1BTlRJQ1M7fSlcCitRNklOU04oTDJfIyNUQUcjI19w Y2ksIE9QRVIiKFJ4MzIrKyNzNDoiU0hGVCI6Y2lyYyhNdTIpKSIsQVRUUklCLERFU0NSLHtmRUFf UkVHKFJ4Vik7IGZQTV9DSVJJKFJ4VixzaVYsTXVWKTsgU0VNQU5USUNTO30pXAorUTZJTlNOKEwy XyMjVEFHIyNfcGNyLCBPUEVSIihSeDMyKytJOmNpcmMoTXUyKSkiLCAgQVRUUklCLERFU0NSLHtm RUFfUkVHKFJ4Vik7IGZQTV9DSVJSKFJ4VixmUkVBRF9JUkVHKE11Vik8PFNDQUxFLE11Vik7IFNF TUFOVElDUzt9KVwKK0RFRl9NQVBQSU5HKEwyXyMjVEFHIyNfem9tYXAsIE9QRVIiKFJzMzIpIiwg T1BFUiIoUnMzMisjMCkiKTsKKworLyogVGhlIHNldCBvZiAzMi1iaXQgbG9hZCBpbnN0cnVjdGlv bnMgKi8KK1NURF9MRF9BTU9ERVMobG9hZHJ1YiwiUmQzMj1tZW11YiIsIkxvYWQgVW5zaWduZWQg Qnl0ZSIsQVRUUklCUyhBX01FTVNJWkVfMUIsQV9MT0FEKSwiMCIsZkxPQUQoMSwxLHUsRUEsUmRW KSwwKQorU1REX0xEX0FNT0RFUyhsb2FkcmIsICJSZDMyPW1lbWIiLCAiTG9hZCBzaWduZWQgQnl0 ZSIsQVRUUklCUyhBX01FTVNJWkVfMUIsQV9MT0FEKSwiMCIsZkxPQUQoMSwxLHMsRUEsUmRWKSww KQorU1REX0xEX0FNT0RFUyhsb2FkcnVoLCJSZDMyPW1lbXVoIiwiTG9hZCB1bnNpZ25lZCBIYWxm IGludGVnZXIiLEFUVFJJQlMoQV9NRU1TSVpFXzJCLEFfTE9BRCksIjEiLGZMT0FEKDEsMix1LEVB LFJkViksMSkKK1NURF9MRF9BTU9ERVMobG9hZHJoLCAiUmQzMj1tZW1oIiwgIkxvYWQgc2lnbmVk IEhhbGYgaW50ZWdlciIsQVRUUklCUyhBX01FTVNJWkVfMkIsQV9MT0FEKSwiMSIsZkxPQUQoMSwy LHMsRUEsUmRWKSwxKQorU1REX0xEX0FNT0RFUyhsb2FkcmksICJSZDMyPW1lbXciLCAiTG9hZCBX b3JkIixBVFRSSUJTKEFfTUVNU0laRV80QixBX0xPQUQpLCIyIixmTE9BRCgxLDQsdSxFQSxSZFYp LDIpCitTVERfTERfQU1PREVTKGxvYWRyZCwgIlJkZDMyPW1lbWQiLCJMb2FkIERvdWJsZSBpbnRl Z2VyIixBVFRSSUJTKEFfTUVNU0laRV84QixBX0xPQUQpLCIzIixmTE9BRCgxLDgsdSxFQSxSZGRW KSwzKQorCisvKiBUaGVzZSBpbnN0cnVjdGlvbnMgZG8gYSBsb2FkIGFuIHVucGFjayAqLworU1RE X0xEX0FNT0RFUyhsb2FkYnp3MiwgIlJkMzI9bWVtdWJoIiwgIkxvYWQgQnl0ZXMgYW5kIFZlY3Rv ciBaZXJvLUV4dGVuZCAodW5wYWNrKSIsCitBVFRSSUJTKEFfTUVNU0laRV8yQixBX0xPQUQpLCIx IiwKK3tmSElERShzaXplMnVfdCB0bXBWOyBpbnQgaTspCisgZkxPQUQoMSwyLHUsRUEsdG1wVik7 CisgZm9yIChpPTA7aTwyO2krKykgeworICBmU0VUSEFMRihpLFJkVixmR0VUVUJZVEUoaSx0bXBW KSk7CisgfQorfSwxKQorCitTVERfTERfQU1PREVTKGxvYWRienc0LCAiUmRkMzI9bWVtdWJoIiwg IkxvYWQgQnl0ZXMgYW5kIFZlY3RvciBaZXJvLUV4dGVuZCAodW5wYWNrKSIsCitBVFRSSUJTKEFf TUVNU0laRV80QixBX0xPQUQpLCIyIiwKK3tmSElERShzaXplNHVfdCB0bXBWOyBpbnQgaTspCisg ZkxPQUQoMSw0LHUsRUEsdG1wVik7CisgZm9yIChpPTA7aTw0O2krKykgeworICBmU0VUSEFMRihp LFJkZFYsZkdFVFVCWVRFKGksdG1wVikpOworIH0KK30sMikKKworCisKKy8qIFRoZXNlIGluc3Ry dWN0aW9ucyBkbyBhIGxvYWQgYW4gdW5wYWNrICovCitTVERfTERfQU1PREVTKGxvYWRic3cyLCAi UmQzMj1tZW1iaCIsICJMb2FkIEJ5dGVzIGFuZCBWZWN0b3IgU2lnbi1FeHRlbmQgKHVucGFjayki LAorQVRUUklCUyhBX01FTVNJWkVfMkIsQV9MT0FEKSwiMSIsCit7ZkhJREUoc2l6ZTJ1X3QgdG1w VjsgaW50IGk7KQorIGZMT0FEKDEsMix1LEVBLHRtcFYpOworIGZvciAoaT0wO2k8MjtpKyspIHsK KyAgZlNFVEhBTEYoaSxSZFYsZkdFVEJZVEUoaSx0bXBWKSk7CisgfQorfSwxKQorCitTVERfTERf QU1PREVTKGxvYWRic3c0LCAiUmRkMzI9bWVtYmgiLCAiTG9hZCBCeXRlcyBhbmQgVmVjdG9yIFNp Z24tRXh0ZW5kICh1bnBhY2spIiwKK0FUVFJJQlMoQV9NRU1TSVpFXzRCLEFfTE9BRCksIjIiLAor e2ZISURFKHNpemU0dV90IHRtcFY7IGludCBpOykKKyBmTE9BRCgxLDQsdSxFQSx0bXBWKTsKKyBm b3IgKGk9MDtpPDQ7aSsrKSB7CisgIGZTRVRIQUxGKGksUmRkVixmR0VUQllURShpLHRtcFYpKTsK KyB9Cit9LDIpCisKKworCitTVERfTERfQU1PREVTKGxvYWRhbGlnbmgsICJSeXkzMj1tZW1oX2Zp Zm8iLCAiTG9hZCBIYWxmLXdvcmQgaW50byBzaGlmdGVkIHZlY3RvciIsCitBVFRSSUJTKEFfTUVN U0laRV8yQixBX0xPQUQpLCIxIiwKK3sKKyBmSElERShzaXplOHVfdCB0bXBWOykKKyBmTE9BRCgx LDIsdSxFQSx0bXBWKTsKKyBSeXlWID0gKCgoc2l6ZTh1X3QpUnl5Vik+PjE2KXwodG1wVjw8NDgp OworfSwxKQorCisKK1NURF9MRF9BTU9ERVMobG9hZGFsaWduYiwgIlJ5eTMyPW1lbWJfZmlmbyIs ICJMb2FkIGJ5dGUgaW50byBzaGlmdGVkIHZlY3RvciIsCitBVFRSSUJTKEFfTUVNU0laRV8xQixB X0xPQUQpLCIwIiwKK3sKKyBmSElERShzaXplOHVfdCB0bXBWOykKKyBmTE9BRCgxLDEsdSxFQSx0 bXBWKTsKKyBSeXlWID0gKCgoc2l6ZTh1X3QpUnl5Vik+PjgpfCh0bXBWPDw1Nik7Cit9LDApCisK KworCisKKy8qIFRoZSBzZXQgb2YgYWRkcmVzc2luZyBtb2RlcyBzdGFuZGFyZCB0byBhbGwgU3Rv cmUgaW5zdHJ1Y3Rpb25zICovCisjZGVmaW5lIFNURF9TVF9BTU9ERVMoVEFHLERFU1QsT1BFUixE RVNDUixBVFRSSUIsU0hGVCxTRU1BTlRJQ1MsU0NBTEUpXAorUTZJTlNOKFMyXyMjVEFHIyNfaW8s ICBPUEVSIihSczMyKyNzMTE6IlNIRlQiKT0iREVTVCwgICAgIEFUVFJJQixERVNDUix7ZklNTUVY VChzaVYpOyBmRUFfUkkoUnNWLHNpVik7IFNFTUFOVElDUzsgfSlcCitRNklOU04oUzJfIyNUQUcj I19waSwgIE9QRVIiKFJ4MzIrKyNzNDoiU0hGVCIpPSJERVNULCAgICAgQVRUUklCLERFU0NSLHtm RUFfUkVHKFJ4Vik7IGZQTV9JKFJ4VixzaVYpOyBTRU1BTlRJQ1M7IH0pXAorUTZJTlNOKFM0XyMj VEFHIyNfYXAsICBPUEVSIihSZTMyPSNVNik9IkRFU1QsICAgICAgICAgICAgIEFUVFJJQixERVND Uix7Zk1VU1RfSU1NRVhUKFVpVik7IGZFQV9JTU0oVWlWKTsgU0VNQU5USUNTOyBSZVY9VWlWOyB9 KVwKK1E2SU5TTihTMl8jI1RBRyMjX3ByLCAgT1BFUiIoUngzMisrTXUyKT0iREVTVCwgICAgICAg ICAgICBBVFRSSUIsREVTQ1Ise2ZFQV9SRUcoUnhWKTsgZlBNX00oUnhWLE11Vik7IFNFTUFOVElD UzsgfSlcCitRNklOU04oUzRfIyNUQUcjI191ciwgIE9QRVIiKFJ1MzI8PCN1MisjVTYpPSJERVNU LCAgICAgICAgICAgIEFUVFJJQixERVNDUix7Zk1VU1RfSU1NRVhUKFVpVik7IGZFQV9JUnMoVWlW LFJ1Vix1aVYpOyBTRU1BTlRJQ1M7fSlcCitRNklOU04oUzJfIyNUQUcjI19wYnIsIE9QRVIiKFJ4 MzIrK011MjpicmV2KT0iREVTVCwgICAgICAgQVRUUklCLERFU0NSLHtmRUFfQlJFVlIoUnhWKTsg ZlBNX00oUnhWLE11Vik7IFNFTUFOVElDUzsgfSlcCitRNklOU04oUzJfIyNUQUcjI19wY2ksIE9Q RVIiKFJ4MzIrKyNzNDoiU0hGVCI6Y2lyYyhNdTIpKT0iREVTVCwgIEFUVFJJQixERVNDUix7ZkVB X1JFRyhSeFYpOyBmUE1fQ0lSSShSeFYsc2lWLE11Vik7IFNFTUFOVElDUzt9KVwKK1E2SU5TTihT Ml8jI1RBRyMjX3BjciwgT1BFUiIoUngzMisrSTpjaXJjKE11MikpPSJERVNULCAgQVRUUklCLERF U0NSLHtmRUFfUkVHKFJ4Vik7IGZQTV9DSVJSKFJ4VixmUkVBRF9JUkVHKE11Vik8PFNDQUxFLE11 Vik7IFNFTUFOVElDUzt9KVwKK0RFRl9NQVBQSU5HKFMyXyMjVEFHIyNfem9tYXAsIE9QRVIiKFJz MzIpPSJERVNULCBPUEVSIihSczMyKyMwKT0iREVTVCk7CisKKworLyogVGhlIHNldCBvZiAzMi1i aXQgc3RvcmUgaW5zdHJ1Y3Rpb25zICovCitTVERfU1RfQU1PREVTKHN0b3JlcmIsICJSdDMyIiwg Im1lbWIiLCJTdG9yZSBCeXRlIixBVFRSSUJTKEFfTUVNU0laRV8xQixBX1NUT1JFKSwiMCIsZlNU T1JFKDEsMSxFQSxmR0VUQllURSgwLFJ0VikpLDApCitTVERfU1RfQU1PREVTKHN0b3JlcmgsICJS dDMyIiwgIm1lbWgiLCJTdG9yZSBIYWxmIGludGVnZXIiLEFUVFJJQlMoQV9NRU1TSVpFXzJCLEFf U1RPUkUpLCIxIixmU1RPUkUoMSwyLEVBLGZHRVRIQUxGKDAsUnRWKSksMSkKK1NURF9TVF9BTU9E RVMoc3RvcmVyZiwgIlJ0LkgzMiIsICJtZW1oIiwiU3RvcmUgVXBwZXIgSGFsZiBpbnRlZ2VyIixB VFRSSUJTKEFfTUVNU0laRV8yQixBX1NUT1JFKSwiMSIsZlNUT1JFKDEsMixFQSxmR0VUSEFMRigx LFJ0VikpLDEpCitTVERfU1RfQU1PREVTKHN0b3JlcmksICJSdDMyIiwgIm1lbXciLCJTdG9yZSBX b3JkIixBVFRSSUJTKEFfTUVNU0laRV80QixBX1NUT1JFKSwiMiIsZlNUT1JFKDEsNCxFQSxSdFYp LDIpCitTVERfU1RfQU1PREVTKHN0b3JlcmQsICJSdHQzMiIsIm1lbWQiLCJTdG9yZSBEb3VibGUg aW50ZWdlciIsQVRUUklCUyhBX01FTVNJWkVfOEIsQV9TVE9SRSksIjMiLGZTVE9SRSgxLDgsRUEs UnR0ViksMykKK1NURF9TVF9BTU9ERVMoc3RvcmVyaW5ldywgIk50OC5uZXciLCAibWVtdyIsIlN0 b3JlIFdvcmQiLEFUVFJJQlMoQV9OT1RFX05FV1ZBTF9TTE9UMCxBX05WU1RPUkUsQV9OT1RFX05W U0xPVDAsQV9NRU1TSVpFXzRCLEFfU1RPUkUsQV9SRVNUUklDVF9OT1NMT1QxX1NUT1JFKSwiMiIs ZlNUT1JFKDEsNCxFQSxmTkVXUkVHX1NUKE50TikpLDIpCitTVERfU1RfQU1PREVTKHN0b3JlcmJu ZXcsICJOdDgubmV3IiwgIm1lbWIiLCJTdG9yZSBCeXRlIixBVFRSSUJTKEFfTk9URV9ORVdWQUxf U0xPVDAsQV9OVlNUT1JFLEFfTk9URV9OVlNMT1QwLEFfTUVNU0laRV8xQixBX1NUT1JFLEFfUkVT VFJJQ1RfTk9TTE9UMV9TVE9SRSksIjAiLGZTVE9SRSgxLDEsRUEsZkdFVEJZVEUoMCxmTkVXUkVH X1NUKE50TikpKSwwKQorU1REX1NUX0FNT0RFUyhzdG9yZXJobmV3LCAiTnQ4Lm5ldyIsICJtZW1o IiwiU3RvcmUgSGFsZiBpbnRlZ2VyIixBVFRSSUJTKEFfTk9URV9ORVdWQUxfU0xPVDAsQV9OVlNU T1JFLEFfTk9URV9OVlNMT1QwLEFfTUVNU0laRV8yQixBX1NUT1JFLEFfUkVTVFJJQ1RfTk9TTE9U MV9TVE9SRSksIjEiLGZTVE9SRSgxLDIsRUEsZkdFVEhBTEYoMCxmTkVXUkVHX1NUKE50TikpKSwx KQorCisKKyNpZiBGUkFNRV9FWFBMSUNJVAorUTZJTlNOKFMyX2FsbG9jZnJhbWUsImFsbG9jZnJh bWUoUngzMiwjdTExOjMpOnJhdyIsIEFUVFJJQlMoQV9NRU1TSVpFXzhCLEFfU1RPUkUsQV9SRVNU UklDVF9TTE9UME9OTFkpLCAiQWxsb2NhdGUgc3RhY2sgZnJhbWUiLAoreyBmRUFfUkkoUnhWLC04 KTsgZlNUT1JFKDEsOCxFQSxmRlJBTUVfU0NSQU1CTEUoKGZDQVNUOF84dShmUkVBRF9MUigpKSA8 PCAzMikgfCBmQ0FTVDRfNHUoZlJFQURfRlAoKSkpKTsgZldSSVRFX0ZQKEVBKTsgZkZSQU1FQ0hF Q0soRUEtdWlWLEVBKTsgUnhWID0gRUEtdWlWOyB9KQorCitERUZfTUFQUElORyhTNl9hbGxvY2Zy YW1lX3RvX3JhdywiYWxsb2NmcmFtZSgjdTExOjMpIiwiYWxsb2NmcmFtZShyMjksI3UxMTozKTpy YXciKQorI2Vsc2UKK1E2SU5TTihTMl9hbGxvY2ZyYW1lLCJhbGxvY2ZyYW1lKCN1MTE6MykiLCBB VFRSSUJTKEFfTUVNU0laRV84QixBX1NUT1JFLEFfUkVTVFJJQ1RfU0xPVDBPTkxZKSwgIkFsbG9j YXRlIHN0YWNrIGZyYW1lIiwKK3sgZkVBX1JJKGZSRUFEX1NQKCksLTgpOyBmU1RPUkUoMSw4LEVB LGZGUkFNRV9TQ1JBTUJMRSgoZkNBU1Q4Xzh1KGZSRUFEX0xSKCkpIDw8IDMyKSB8IGZDQVNUNF80 dShmUkVBRF9GUCgpKSkpOyBmV1JJVEVfRlAoRUEpOyBmRlJBTUVDSEVDSyhFQS11aVYsRUEpOyBm V1JJVEVfU1AoRUEtdWlWKTsgfSkKKyNlbmRpZgorCisjZGVmaW5lIEFfUkVUVVJOIEFfUkVTVFJJ Q1RfQ09GX01BWDEsQV9SRVNUUklDVF9TTE9UME9OTFksQV9SRVNUUklDVF9OT1NMT1QxX1NUT1JF LEFfUkVUX1RZUEUsQV9ERUFMTE9DUkVUCisKKyNpZiBGUkFNRV9FWFBMSUNJVAorUTZJTlNOKEwy X2RlYWxsb2NmcmFtZSwiUmRkMzI9ZGVhbGxvY2ZyYW1lKFJzMzIpOnJhdyIsIEFUVFJJQlMoQV9N RU1TSVpFXzhCLEFfTE9BRCxBX0RFQUxMT0NGUkFNRSksICJEZWFsbG9jYXRlIHN0YWNrIGZyYW1l IiwKK3sgZkhJREUoc2l6ZTh1X3QgdG1wOykgZkVBX1JFRyhSc1YpOworCWZMT0FEKDEsOCx1LEVB LHRtcCk7CisJUmRkViA9IGZGUkFNRV9VTlNDUkFNQkxFKHRtcCk7CisJZldSSVRFX1NQKEVBKzgp OyB9KQorCitERUZfTUFQUElORyhMNl9kZWFsbG9jZnJhbWVfbWFwX3RvX3JhdywiZGVhbGxvY2Zy YW1lIiwicjMxOjMwPWRlYWxsb2NmcmFtZShyMzApOnJhdyIpCisjZWxzZQorUTZJTlNOKEwyX2Rl YWxsb2NmcmFtZSwiZGVhbGxvY2ZyYW1lIiwgQVRUUklCUyhBX01FTVNJWkVfOEIsQV9MT0FELEFf REVBTExPQ0ZSQU1FKSwgIkRlYWxsb2NhdGUgc3RhY2sgZnJhbWUiLAoreyBmSElERShzaXplOHVf dCB0bXA7KSBmRUFfUkVHKGZSRUFEX0ZQKCkpOworCWZMT0FEKDEsOCx1LEVBLHRtcCk7CisJdG1w ID0gZkZSQU1FX1VOU0NSQU1CTEUodG1wKTsKKwlmV1JJVEVfTFIoZkdFVFdPUkQoMSx0bXApKTsK KwlmV1JJVEVfRlAoZkdFVFdPUkQoMCx0bXApKTsKKwlmV1JJVEVfU1AoRUErOCk7IH0pCisjZW5k aWYKKworI2lmIEZSQU1FX0VYUExJQ0lUCitRNklOU04oTDRfcmV0dXJuLCJSZGQzMj1kZWFsbG9j X3JldHVybihSczMyKTpyYXciLCBBVFRSSUJTKEFfUk9QU18yLEFfSklORElSLEFfTUVNU0laRV84 QixBX0xPQUQsQV9SRVRVUk4pLCAiRGVhbGxvY2F0ZSBzdGFjayBmcmFtZSBhbmQgcmV0dXJuIiwK K3sgZkhJREUoc2l6ZTh1X3QgdG1wOykgZkVBX1JFRyhSc1YpOworCWZMT0FEKDEsOCx1LEVBLHRt cCk7CisJUmRkViA9IGZGUkFNRV9VTlNDUkFNQkxFKHRtcCk7CisJZldSSVRFX1NQKEVBKzgpOwor ICAgIGZKVU1QUihSRUdfTFIsZkdFVFdPUkQoMSxSZGRWKSxDT0ZfVFlQRV9KVU1QUik7fSkKKwor REVGX01BUFBJTkcoTDZfcmV0dXJuX21hcF90b19yYXcsImRlYWxsb2NfcmV0dXJuIiwicjMxOjMw PWRlYWxsb2NfcmV0dXJuKHIzMCk6cmF3IikKKyNlbHNlCitRNklOU04oTDRfcmV0dXJuLCJkZWFs bG9jX3JldHVybiIsIEFUVFJJQlMoQV9ST1BTXzIsQV9KSU5ESVIsQV9NRU1TSVpFXzhCLEFfTE9B RCxBX1JFVFVSTiksICJEZWFsbG9jYXRlIHN0YWNrIGZyYW1lIGFuZCByZXR1cm4iLAoreyBmSElE RShzaXplOHVfdCB0bXA7KSBmRUFfUkVHKGZSRUFEX0ZQKCkpOworCWZMT0FEKDEsOCx1LEVBLHRt cCk7CisJdG1wID0gZkZSQU1FX1VOU0NSQU1CTEUodG1wKTsKKwlmV1JJVEVfTFIoZkdFVFdPUkQo MSx0bXApKTsKKwlmV1JJVEVfRlAoZkdFVFdPUkQoMCx0bXApKTsKKwlmV1JJVEVfU1AoRUErOCk7 CisgICAgZkpVTVBSKFJFR19MUixmR0VUV09SRCgxLHRtcCksQ09GX1RZUEVfSlVNUFIpO30pCisj ZW5kaWYKKworI2RlZmluZSBDT05EU0VNKFNSQ1JFRyxTVEFMTEJJVFMwLFNUQUxMQklUUzEsUFJF REZVTkMsUFJFREFSRyxTVEFMTFNQRUMsUFJFRENPTkQpIFwKK3sgXAorCWZISURFKHNpemU4dV90 IHRtcDspIFwKKwlmQlJBTkNIX1NQRUNVTEFURV9TVEFMTChQUkVERlVOQyMjUFJFRENPTkQoUFJF REFSRyksLFNUQUxMU1BFQyxTVEFMTEJJVFMwLFNUQUxMQklUUzEpOyBcCisJZkVBX1JFRyhTUkNS RUcpOyBcCisJaWYgKFBSRURGVU5DIyNQUkVEQ09ORChQUkVEQVJHKSkgeyBcCisJCWZMT0FEKDEs OCx1LEVBLHRtcCk7IFwKKwkJUmRkViA9IGZGUkFNRV9VTlNDUkFNQkxFKHRtcCk7IFwKKwkJZldS SVRFX1NQKEVBKzgpOyBcCisJCWZKVU1QUihSRUdfTFIsZkdFVFdPUkQoMSxSZGRWKSxDT0ZfVFlQ RV9KVU1QUik7IFwKKwl9IGVsc2UgeyBcCisJCUxPQURfQ0FOQ0VMKEVBKTsgXAorCX0gXAorfQor CisjZGVmaW5lIENPTkRfUkVUVVJOX1RGKFRHLFRHMixET1RORVcsU1RBTExCSVRTMCxTVEFMTEJJ VFMxLFNUQUxMU1BFQyxBVFRSSUJTLFBSRURGVU5DLFBSRURBUkcsVF9OVCkgXAorCVE2SU5TTihU RyMjX3QjI1RHMiwiaWYgKFB2NCJET1RORVciKSBSZGQzMj1kZWFsbG9jX3JldHVybihSczMyKSJU X05UIjpyYXciLEFUVFJJQlMsImRlYWxsb2NhdGUgc3RhY2sgZnJhbWUgYW5kIHJldHVybiIsIFwK KwkJQ09ORFNFTShSc1YsU1RBTExCSVRTMCxTVEFMTEJJVFMxLFBSRURGVU5DLFBSRURBUkcsU1RB TExTUEVDLCkpIFwKKwlRNklOU04oVEcjI19mIyNURzIsImlmICghUHY0IkRPVE5FVyIpIFJkZDMy PWRlYWxsb2NfcmV0dXJuKFJzMzIpIlRfTlQiOnJhdyIsQVRUUklCUywiZGVhbGxvY2F0ZSBzdGFj ayBmcmFtZSBhbmQgcmV0dXJuIiwgXAorCQlDT05EU0VNKFJzVixTVEFMTEJJVFMwLFNUQUxMQklU UzEsUFJFREZVTkMjI05PVCxQUkVEQVJHLFNUQUxMU1BFQywpKSBcCisJREVGX01BUFBJTkcoVEcj I19tYXBfdG9fcmF3X3QjI1RHMiwiaWYgKFB2NCJET1RORVciKSBkZWFsbG9jX3JldHVybiJUX05U LCJpZiAoUHY0IkRPVE5FVyIpIHIzMTozMD1kZWFsbG9jX3JldHVybihyMzApIlRfTlQiOnJhdyIp IFwKKwlERUZfTUFQUElORyhURyMjX21hcF90b19yYXdfZiMjVEcyLCJpZiAoIVB2NCJET1RORVci KSBkZWFsbG9jX3JldHVybiJUX05ULCJpZiAoIVB2NCJET1RORVciKSByMzE6MzA9ZGVhbGxvY19y ZXR1cm4ocjMwKSJUX05UIjpyYXciKQorCisjZGVmaW5lIENPTkRfUkVUVVJOX05FVyhURyxTVEFM TEJJVFMwLFNUQUxMQklUUzEsQVRUUklCUykgXAorCUNPTkRfUkVUVVJOX1RGKFRHLG5ld19wdCwi Lm5ldyIsMTIsMCxTUEVDVUxBVEVfVEFLRU4sQVRUUklCUyxmTFNCTkVXLFB2TiwiOnQiKSBcCisJ Q09ORF9SRVRVUk5fVEYoVEcsbmV3X3BudCwiLm5ldyIsMTIsMCxTUEVDVUxBVEVfTk9UX1RBS0VO LEFUVFJJQlMsZkxTQk5FVyxQdk4sIjpudCIpIFwKKworI2RlZmluZSBSRVRVUk5fQVRUUklCUyBB X1JPUFNfMixBX01FTVNJWkVfOEIsQV9MT0FELEFfUkVUVVJOCisKK0NPTkRfUkVUVVJOX1RGKEw0 X3JldHVybiwsLDcsMCxTUEVDVUxBVEVfTk9UX1RBS0VOLEFUVFJJQlMoUkVUVVJOX0FUVFJJQlMs QV9KSU5ESVJPTEQsQV9QUkVEX0JJVF83KSxmTFNCT0xELFB2ViwpCitDT05EX1JFVFVSTl9ORVco TDRfcmV0dXJuLDEyLDAsQVRUUklCUyhSRVRVUk5fQVRUUklCUyxBX0pJTkRJUk5FVyxBX1BSRURf QklUXzEyKSkKKworCisKKworUTZJTlNOKEwyX2xvYWR3X2xvY2tlZCwiUmQzMj1tZW13X2xvY2tl ZChSczMyKSIsIEFUVFJJQlMoQV9NRU1TSVpFXzRCLEFfTE9BRCxBX1JFU1RSSUNUX1NMT1QwT05M WSxBX1JFU1RSSUNUX1BBQ0tFVF9BWE9LLEFfTk9URV9BWE9LKSwgIkxvYWQgd29yZCB3aXRoIGxv Y2siLAoreyBmRUFfUkVHKFJzVik7IGZMT0FEX0xPQ0tFRCgxLDQsdSxFQSxSZFYpIH0pOworCisK K1E2SU5TTihTMl9zdG9yZXdfbG9ja2VkLCJtZW13X2xvY2tlZChSczMyLFBkNCk9UnQzMiIsIEFU VFJJQlMoQV9NRU1TSVpFXzRCLEFfU1RPUkUsQV9SRVNUUklDVF9TTE9UME9OTFksQV9SRVNUUklD VF9QQUNLRVRfQVhPSyxBX05PVEVfQVhPSyxBX1JFU1RSSUNUX0xBVEVQUkVELEFfTk9URV9MQVRF UFJFRCksICJTdG9yZSB3b3JkIHdpdGggbG9jayIsCit7IGZFQV9SRUcoUnNWKTsgZlNUT1JFX0xP Q0tFRCgxLDQsRUEsUnRWLFBkVikgZkhJREUoTUFSS19MQVRFX1BSRURfV1JJVEUoUGROKSkgfSk7 CisKKworUTZJTlNOKEw0X2xvYWRkX2xvY2tlZCwiUmRkMzI9bWVtZF9sb2NrZWQoUnMzMikiLCBB VFRSSUJTKEFfTUVNU0laRV84QixBX0xPQUQsQV9SRVNUUklDVF9TTE9UME9OTFksQV9SRVNUUklD VF9QQUNLRVRfQVhPSyxBX05PVEVfQVhPSyksICJMb2FkIGRvdWJsZSB3aXRoIGxvY2siLAoreyBm RUFfUkVHKFJzVik7IGZMT0FEX0xPQ0tFRCgxLDgsdSxFQSxSZGRWKSB9KTsKKworUTZJTlNOKEw0 X2xvYWR3X3BoeXMsIlJkMzI9bWVtd19waHlzKFJzMzIsUnQzMikiLCBBVFRSSUJTKEFfUFJJVixB X1JFU1RSSUNUX1NMT1QwT05MWSxBX05PVEVfUFJJVixBX01FTVNJWkVfNEIsQV9MT0FELEFfTk9U RV9OT1BBQ0tFVCxBX1JFU1RSSUNUX05PUEFDS0VUKSwgIkxvYWQgd29yZCBmcm9tIHBoeXNpY2Fs IGFkZHJlc3MiLAoreyBmTE9BRF9QSFlTKDEsNCx1LFJzVixSdFYsUmRWKTsgfSk7CisKKworUTZJ TlNOKFM0X3N0b3JlZF9sb2NrZWQsIm1lbWRfbG9ja2VkKFJzMzIsUGQ0KT1SdHQzMiIsIEFUVFJJ QlMoQV9NRU1TSVpFXzhCLEFfU1RPUkUsQV9SRVNUUklDVF9TTE9UME9OTFksQV9SRVNUUklDVF9Q QUNLRVRfQVhPSyxBX05PVEVfQVhPSyxBX1JFU1RSSUNUX0xBVEVQUkVELEFfTk9URV9MQVRFUFJF RCksICJTdG9yZSB3b3JkIHdpdGggbG9jayIsCit7IGZFQV9SRUcoUnNWKTsgZlNUT1JFX0xPQ0tF RCgxLDgsRUEsUnR0VixQZFYpIGZISURFKE1BUktfTEFURV9QUkVEX1dSSVRFKFBkTikpIH0pOwor CisKKworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAg ICBQcmVkaWNhdGVkIExEU1QgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8K Ky8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKi8KKworI2RlZmluZSBTVERfUExEX0FNT0RFUyhUQUcsT1BFUixERVNDUixBVFRS SUIsU0hGVCxTSEZUTlVNLFNFTUFOVElDUylcCitRNklOU04oTDRfIyNUQUcjI19yciwgIE9QRVIi KFJzMzIrUnQzMjw8I3UyKSIsICAgICAgICAgICAgQVRUUklCLERFU0NSLHtmRUFfUlJzKFJzVixS dFYsdWlWKTsgU0VNQU5USUNTO30pXAorUTZJTlNOKEwyX3AjI1RBRyMjdF9pbywgImlmIChQdDQp ICJPUEVSIihSczMyKyN1NjoiU0hGVCIpIiwgICAgICAgICAgICBBVFRSSUIsREVTQ1Ise2ZJTU1F WFQodWlWKTsgZkVBX1JJKFJzVix1aVYpOyBpZihmTFNCT0xEKFB0Vikpe1NFTUFOVElDUzt9IGVs c2Uge0xPQURfQ0FOQ0VMKEVBKTt9fSlcCitRNklOU04oTDJfcCMjVEFHIyN0X3BpLCAiaWYgKFB0 NCkgIk9QRVIiKFJ4MzIrKyNzNDoiU0hGVCIpIiwgICAgICAgICAgIEFUVFJJQixERVNDUix7ZkVB X1JFRyhSeFYpOyBpZihmTFNCT0xEKFB0VikpeyBmUE1fSShSeFYsc2lWKTsgU0VNQU5USUNTO30g ZWxzZSB7TE9BRF9DQU5DRUwoRUEpO319KVwKK1E2SU5TTihMMl9wIyNUQUcjI2ZfaW8sICJpZiAo IVB0NCkgIk9QRVIiKFJzMzIrI3U2OiJTSEZUIikiLCAgICAgICAgICAgQVRUUklCLERFU0NSLHtm SU1NRVhUKHVpVik7IGZFQV9SSShSc1YsdWlWKTsgaWYoZkxTQk9MRE5PVChQdFYpKXsgU0VNQU5U SUNTOyB9IGVsc2Uge0xPQURfQ0FOQ0VMKEVBKTt9fSlcCitRNklOU04oTDJfcCMjVEFHIyNmX3Bp LCAiaWYgKCFQdDQpICJPUEVSIihSeDMyKysjczQ6IlNIRlQiKSIsICAgICAgICAgIEFUVFJJQixE RVNDUix7ZkVBX1JFRyhSeFYpOyBpZihmTFNCT0xETk9UKFB0VikpeyBmUE1fSShSeFYsc2lWKTsg U0VNQU5USUNTO30gZWxzZSB7TE9BRF9DQU5DRUwoRUEpO319KVwKK1E2SU5TTihMMl9wIyNUQUcj I3RuZXdfaW8sImlmIChQdDQubmV3KSAiT1BFUiIoUnMzMisjdTY6IlNIRlQiKSIsQVRUUklCLERF U0NSLHtmSU1NRVhUKHVpVik7IGZFQV9SSShSc1YsdWlWKTsgaWYgKGZMU0JORVcoUHROKSkgIHsg U0VNQU5USUNTOyB9IGVsc2Uge0xPQURfQ0FOQ0VMKEVBKTt9fSlcCitRNklOU04oTDJfcCMjVEFH IyNmbmV3X2lvLCJpZiAoIVB0NC5uZXcpICJPUEVSIihSczMyKyN1NjoiU0hGVCIpIixBVFRSSUIs REVTQ1Ise2ZJTU1FWFQodWlWKTsgZkVBX1JJKFJzVix1aVYpOyBpZiAoZkxTQk5FV05PVChQdE4p KSB7IFNFTUFOVElDUzsgfSBlbHNlIHtMT0FEX0NBTkNFTChFQSk7fX0pXAorUTZJTlNOKEw0X3Aj I1RBRyMjdF9yciwgImlmIChQdjQpICJPUEVSIihSczMyK1J0MzI8PCN1MikiLCAgICAgICAgICAg IEFUVFJJQixERVNDUix7ZkVBX1JScyhSc1YsUnRWLHVpVik7IGlmKGZMU0JPTEQoUHZWKSl7IFNF TUFOVElDUzt9IGVsc2Uge0xPQURfQ0FOQ0VMKEVBKTt9fSlcCitRNklOU04oTDRfcCMjVEFHIyNm X3JyLCAiaWYgKCFQdjQpICJPUEVSIihSczMyK1J0MzI8PCN1MikiLCAgICAgICAgICAgQVRUUklC LERFU0NSLHtmRUFfUlJzKFJzVixSdFYsdWlWKTsgaWYoZkxTQk9MRE5PVChQdlYpKXsgU0VNQU5U SUNTOyB9IGVsc2Uge0xPQURfQ0FOQ0VMKEVBKTt9fSlcCitRNklOU04oTDRfcCMjVEFHIyN0bmV3 X3JyLCJpZiAoUHY0Lm5ldykgIk9QRVIiKFJzMzIrUnQzMjw8I3UyKSIsQVRUUklCLERFU0NSLHtm RUFfUlJzKFJzVixSdFYsdWlWKTsgaWYgKGZMU0JORVcoUHZOKSkgIHsgU0VNQU5USUNTOyB9IGVs c2Uge0xPQURfQ0FOQ0VMKEVBKTt9fSlcCitRNklOU04oTDRfcCMjVEFHIyNmbmV3X3JyLCJpZiAo IVB2NC5uZXcpICJPUEVSIihSczMyK1J0MzI8PCN1MikiLEFUVFJJQixERVNDUix7ZkVBX1JScyhS c1YsUnRWLHVpVik7IGlmIChmTFNCTkVXTk9UKFB2TikpIHsgU0VNQU5USUNTOyB9IGVsc2Uge0xP QURfQ0FOQ0VMKEVBKTt9fSlcCitRNklOU04oTDJfcCMjVEFHIyN0bmV3X3BpLCAiaWYgKFB0NC5u ZXcpICJPUEVSIihSeDMyKysjczQ6IlNIRlQiKSIsICAgICAgICAgICBBVFRSSUIsREVTQ1Ise2ZF QV9SRUcoUnhWKTsgaWYoZkxTQk5FVyhQdE4pKXsgZlBNX0koUnhWLHNpVik7IFNFTUFOVElDUzt9 IGVsc2Uge0xPQURfQ0FOQ0VMKEVBKTt9fSlcCitRNklOU04oTDJfcCMjVEFHIyNmbmV3X3BpLCAi aWYgKCFQdDQubmV3KSAiT1BFUiIoUngzMisrI3M0OiJTSEZUIikiLCAgICAgICAgICBBVFRSSUIs REVTQ1Ise2ZFQV9SRUcoUnhWKTsgaWYoZkxTQk5FV05PVChQdE4pKXsgZlBNX0koUnhWLHNpVik7 IFNFTUFOVElDUzt9IGVsc2Uge0xPQURfQ0FOQ0VMKEVBKTt9fSlcCitRNklOU04oTDRfcCMjVEFH IyN0X2FicywgImlmIChQdDQpICJPUEVSIigjdTYpIiwgICAgICAgICAgICBBVFRSSUIsREVTQ1Is e2ZNVVNUX0lNTUVYVCh1aVYpOyBmRUFfSU1NKHVpVik7IGlmKGZMU0JPTEQoUHRWKSl7IFNFTUFO VElDUzt9IGVsc2Uge0xPQURfQ0FOQ0VMKEVBKTt9fSlcCitRNklOU04oTDRfcCMjVEFHIyNmX2Fi cywgImlmICghUHQ0KSAiT1BFUiIoI3U2KSIsICAgICAgICAgICBBVFRSSUIsREVTQ1Ise2ZNVVNU X0lNTUVYVCh1aVYpOyBmRUFfSU1NKHVpVik7IGlmKGZMU0JPTEROT1QoUHRWKSl7IFNFTUFOVElD UzsgfSBlbHNlIHtMT0FEX0NBTkNFTChFQSk7fX0pXAorUTZJTlNOKEw0X3AjI1RBRyMjdG5ld19h YnMsImlmIChQdDQubmV3KSAiT1BFUiIoI3U2KSIsQVRUUklCLERFU0NSLHtmTVVTVF9JTU1FWFQo dWlWKTsgZkVBX0lNTSh1aVYpO2lmIChmTFNCTkVXKFB0TikpICB7IFNFTUFOVElDUzsgfSBlbHNl IHtMT0FEX0NBTkNFTChFQSk7fX0pXAorUTZJTlNOKEw0X3AjI1RBRyMjZm5ld19hYnMsImlmICgh UHQ0Lm5ldykgIk9QRVIiKCN1NikiLEFUVFJJQixERVNDUix7Zk1VU1RfSU1NRVhUKHVpVik7IGZF QV9JTU0odWlWKTtpZiAoZkxTQk5FV05PVChQdE4pKSB7IFNFTUFOVElDUzsgfSBlbHNlIHtMT0FE X0NBTkNFTChFQSk7fX0pXAorREVGX01BUFBJTkcoTDJfcCMjVEFHIyN0X3pvbWFwLCAiaWYgKFB0 NCkgIk9QRVIiKFJzMzIpIiwgImlmIChQdDQpICJPUEVSIihSczMyKyMwKSIpOyBcCitERUZfTUFQ UElORyhMMl9wIyNUQUcjI2Zfem9tYXAsICJpZiAoIVB0NCkgIk9QRVIiKFJzMzIpIiwgImlmICgh UHQ0KSAiT1BFUiIoUnMzMisjMCkiKTsgXAorREVGX01BUFBJTkcoTDJfcCMjVEFHIyN0bmV3X3pv bWFwLCAiaWYgKFB0NC5uZXcpICJPUEVSIihSczMyKSIsICJpZiAoUHQ0Lm5ldykgIk9QRVIiKFJz MzIrIzApIik7IFwKK0RFRl9NQVBQSU5HKEwyX3AjI1RBRyMjZm5ld196b21hcCwgImlmICghUHQ0 Lm5ldykgIk9QRVIiKFJzMzIpIiwgImlmICghUHQ0Lm5ldykgIk9QRVIiKFJzMzIrIzApIik7CisK KworCisvKiBUaGUgc2V0IG9mIDMyLWJpdCBwcmVkaWNhdGVkIGxvYWQgaW5zdHJ1Y3Rpb25zICov CitTVERfUExEX0FNT0RFUyhsb2FkcnViLCJSZDMyPW1lbXViIiwiTG9hZCBVbnNpZ25lZCBCeXRl IixBVFRSSUJTKEFfQVJDSFYyLEFfTUVNU0laRV8xQixBX0xPQUQpLCIwIiwwLGZMT0FEKDEsMSx1 LEVBLFJkVikpCitTVERfUExEX0FNT0RFUyhsb2FkcmIsICJSZDMyPW1lbWIiLCAiTG9hZCBzaWdu ZWQgQnl0ZSIsQVRUUklCUyhBX0FSQ0hWMixBX01FTVNJWkVfMUIsQV9MT0FEKSwiMCIsMCxmTE9B RCgxLDEscyxFQSxSZFYpKQorU1REX1BMRF9BTU9ERVMobG9hZHJ1aCwiUmQzMj1tZW11aCIsIkxv YWQgdW5zaWduZWQgSGFsZiBpbnRlZ2VyIixBVFRSSUJTKEFfQVJDSFYyLEFfTUVNU0laRV8yQixB X0xPQUQpLCIxIiwxLGZMT0FEKDEsMix1LEVBLFJkVikpCitTVERfUExEX0FNT0RFUyhsb2Fkcmgs ICJSZDMyPW1lbWgiLCAiTG9hZCBzaWduZWQgSGFsZiBpbnRlZ2VyIixBVFRSSUJTKEFfQVJDSFYy LEFfTUVNU0laRV8yQixBX0xPQUQpLCIxIiwxLGZMT0FEKDEsMixzLEVBLFJkVikpCitTVERfUExE X0FNT0RFUyhsb2FkcmksICJSZDMyPW1lbXciLCAiTG9hZCBXb3JkIixBVFRSSUJTKEFfQVJDSFYy LEFfTUVNU0laRV80QixBX0xPQUQpLCIyIiwyLGZMT0FEKDEsNCx1LEVBLFJkVikpCitTVERfUExE X0FNT0RFUyhsb2FkcmQsICJSZGQzMj1tZW1kIiwiTG9hZCBEb3VibGUgaW50ZWdlciIsQVRUUklC UyhBX0FSQ0hWMixBX01FTVNJWkVfOEIsQV9MT0FEKSwiMyIsMyxmTE9BRCgxLDgsdSxFQSxSZGRW KSkKKworLyogVGhlIHNldCBvZiBhZGRyZXNzaW5nIG1vZGVzIHN0YW5kYXJkIHRvIGFsbCBwcmVk aWNhdGVkIHN0b3JlIGluc3RydWN0aW9ucyAqLworI2RlZmluZSBTVERfUFNUX0FNT0RFUyhUQUcs REVTVCxPUEVSLERFU0NSLEFUVFJJQixTSEZULFNIRlROVU0sU0VNQU5USUNTKVwKK1E2SU5TTihT NF8jI1RBRyMjX3JyLCAgT1BFUiIoUnMzMitSdTMyPDwjdTIpPSJERVNULCAgICAgICAgICAgIEFU VFJJQixERVNDUix7ZkVBX1JScyhSc1YsUnVWLHVpVik7IFNFTUFOVElDUzt9KVwKK1E2SU5TTihT Ml9wIyNUQUcjI3RfaW8sICJpZiAoUHY0KSAiT1BFUiIoUnMzMisjdTY6IlNIRlQiKT0iREVTVCwg ICAgIEFUVFJJQixERVNDUix7ZklNTUVYVCh1aVYpOyBmRUFfUkkoUnNWLHVpVik7IGlmIChmTFNC T0xEKFB2VikpeyBTRU1BTlRJQ1M7IH0gZWxzZSB7U1RPUkVfQ0FOQ0VMKEVBKTt9fSlcCitRNklO U04oUzJfcCMjVEFHIyN0X3BpLCAiaWYgKFB2NCkgIk9QRVIiKFJ4MzIrKyNzNDoiU0hGVCIpPSJE RVNULCAgICAgQVRUUklCLERFU0NSLHtmRUFfUkVHKFJ4Vik7IGlmIChmTFNCT0xEKFB2VikpeyBm UE1fSShSeFYsc2lWKTsgU0VNQU5USUNTO30gZWxzZSB7U1RPUkVfQ0FOQ0VMKEVBKTt9fSlcCitR NklOU04oUzJfcCMjVEFHIyNmX2lvLCAiaWYgKCFQdjQpICJPUEVSIihSczMyKyN1NjoiU0hGVCIp PSJERVNULCAgICAgQVRUUklCLERFU0NSLHtmSU1NRVhUKHVpVik7IGZFQV9SSShSc1YsdWlWKTsg aWYgKGZMU0JPTEROT1QoUHZWKSl7IFNFTUFOVElDUzsgfSBlbHNlIHtTVE9SRV9DQU5DRUwoRUEp O319KVwKK1E2SU5TTihTMl9wIyNUQUcjI2ZfcGksICJpZiAoIVB2NCkgIk9QRVIiKFJ4MzIrKyNz NDoiU0hGVCIpPSJERVNULCAgICAgQVRUUklCLERFU0NSLHtmRUFfUkVHKFJ4Vik7IGlmIChmTFNC T0xETk9UKFB2VikpeyBmUE1fSShSeFYsc2lWKTsgU0VNQU5USUNTO30gZWxzZSB7U1RPUkVfQ0FO Q0VMKEVBKTt9fSlcCitRNklOU04oUzRfcCMjVEFHIyN0X3JyLCAiaWYgKFB2NCkgIk9QRVIiKFJz MzIrUnUzMjw8I3UyKT0iREVTVCwgICAgIEFUVFJJQixERVNDUix7ZkVBX1JScyhSc1YsUnVWLHVp Vik7IGlmIChmTFNCT0xEKFB2VikpeyBTRU1BTlRJQ1M7IH0gZWxzZSB7U1RPUkVfQ0FOQ0VMKEVB KTt9fSlcCitRNklOU04oUzRfcCMjVEFHIyNmX3JyLCAiaWYgKCFQdjQpICJPUEVSIihSczMyK1J1 MzI8PCN1Mik9IkRFU1QsICAgICBBVFRSSUIsREVTQ1Ise2ZFQV9SUnMoUnNWLFJ1Vix1aVYpOyBp ZiAoZkxTQk9MRE5PVChQdlYpKXsgU0VNQU5USUNTOyB9IGVsc2Uge1NUT1JFX0NBTkNFTChFQSk7 fX0pXAorUTZJTlNOKFM0X3AjI1RBRyMjdG5ld19pbywiaWYgKFB2NC5uZXcpICJPUEVSIihSczMy KyN1NjoiU0hGVCIpPSJERVNULEFUVFJJQixERVNDUix7ZklNTUVYVCh1aVYpOyBmRUFfUkkoUnNW LHVpVik7IGlmICggZkxTQk5FVyhQdk4pKSB7IFNFTUFOVElDUzsgfSBlbHNlIHtTVE9SRV9DQU5D RUwoRUEpO319KVwKK1E2SU5TTihTNF9wIyNUQUcjI2ZuZXdfaW8sImlmICghUHY0Lm5ldykgIk9Q RVIiKFJzMzIrI3U2OiJTSEZUIik9IkRFU1QsQVRUUklCLERFU0NSLHtmSU1NRVhUKHVpVik7IGZF QV9SSShSc1YsdWlWKTsgaWYgKGZMU0JORVdOT1QoUHZOKSkgeyBTRU1BTlRJQ1M7IH0gZWxzZSB7 U1RPUkVfQ0FOQ0VMKEVBKTt9fSlcCitRNklOU04oUzRfcCMjVEFHIyN0bmV3X3JyLCJpZiAoUHY0 Lm5ldykgIk9QRVIiKFJzMzIrUnUzMjw8I3UyKT0iREVTVCxBVFRSSUIsREVTQ1Ise2ZFQV9SUnMo UnNWLFJ1Vix1aVYpOyBpZiAoIGZMU0JORVcoUHZOKSkgeyBTRU1BTlRJQ1M7IH0gZWxzZSB7U1RP UkVfQ0FOQ0VMKEVBKTt9fSlcCitRNklOU04oUzRfcCMjVEFHIyNmbmV3X3JyLCJpZiAoIVB2NC5u ZXcpICJPUEVSIihSczMyK1J1MzI8PCN1Mik9IkRFU1QsQVRUUklCLERFU0NSLHtmRUFfUlJzKFJz VixSdVYsdWlWKTsgaWYgKGZMU0JORVdOT1QoUHZOKSkgeyBTRU1BTlRJQ1M7IH0gZWxzZSB7U1RP UkVfQ0FOQ0VMKEVBKTt9fSlcCitRNklOU04oUzJfcCMjVEFHIyN0bmV3X3BpLCAiaWYgKFB2NC5u ZXcpICJPUEVSIihSeDMyKysjczQ6IlNIRlQiKT0iREVTVCwgICAgIEFUVFJJQixERVNDUix7ZkVB X1JFRyhSeFYpOyBpZiAoZkxTQk5FVyhQdk4pKXsgZlBNX0koUnhWLHNpVik7IFNFTUFOVElDUzt9 IGVsc2Uge1NUT1JFX0NBTkNFTChFQSk7fX0pXAorUTZJTlNOKFMyX3AjI1RBRyMjZm5ld19waSwg ImlmICghUHY0Lm5ldykgIk9QRVIiKFJ4MzIrKyNzNDoiU0hGVCIpPSJERVNULCAgICAgQVRUUklC LERFU0NSLHtmRUFfUkVHKFJ4Vik7IGlmIChmTFNCTkVXTk9UKFB2TikpeyBmUE1fSShSeFYsc2lW KTsgU0VNQU5USUNTO30gZWxzZSB7U1RPUkVfQ0FOQ0VMKEVBKTt9fSlcCitRNklOU04oUzRfcCMj VEFHIyN0X2FicywgImlmIChQdjQpICJPUEVSIigjdTYpPSJERVNULCAgICAgQVRUUklCLERFU0NS LHtmTVVTVF9JTU1FWFQodWlWKTsgZkVBX0lNTSh1aVYpOyBpZiAoZkxTQk9MRChQdlYpKXsgU0VN QU5USUNTOyB9IGVsc2Uge1NUT1JFX0NBTkNFTChFQSk7fX0pXAorUTZJTlNOKFM0X3AjI1RBRyMj Zl9hYnMsICJpZiAoIVB2NCkgIk9QRVIiKCN1Nik9IkRFU1QsICAgICBBVFRSSUIsREVTQ1Ise2ZN VVNUX0lNTUVYVCh1aVYpO2ZFQV9JTU0odWlWKTsgaWYgKGZMU0JPTEROT1QoUHZWKSl7IFNFTUFO VElDUzsgfSBlbHNlIHtTVE9SRV9DQU5DRUwoRUEpO319KVwKK1E2SU5TTihTNF9wIyNUQUcjI3Ru ZXdfYWJzLCJpZiAoUHY0Lm5ldykgIk9QRVIiKCN1Nik9IkRFU1QsQVRUUklCLERFU0NSLHtmTVVT VF9JTU1FWFQodWlWKTtmRUFfSU1NKHVpVik7IGlmICggZkxTQk5FVyhQdk4pKSB7IFNFTUFOVElD UzsgfSBlbHNlIHtTVE9SRV9DQU5DRUwoRUEpO319KVwKK1E2SU5TTihTNF9wIyNUQUcjI2ZuZXdf YWJzLCJpZiAoIVB2NC5uZXcpICJPUEVSIigjdTYpPSJERVNULEFUVFJJQixERVNDUix7Zk1VU1Rf SU1NRVhUKHVpVik7ZkVBX0lNTSh1aVYpOyBpZiAoZkxTQk5FV05PVChQdk4pKSB7IFNFTUFOVElD UzsgfSBlbHNlIHtTVE9SRV9DQU5DRUwoRUEpO319KVwKK0RFRl9NQVBQSU5HKFMyX3AjI1RBRyMj dF96b21hcCwgImlmIChQdjQpICJPUEVSIihSczMyKT0iREVTVCwgImlmIChQdjQpICJPUEVSIihS czMyKyMwKT0iREVTVCk7IFwKK0RFRl9NQVBQSU5HKFMyX3AjI1RBRyMjZl96b21hcCwgImlmICgh UHY0KSAiT1BFUiIoUnMzMik9IkRFU1QsICJpZiAoIVB2NCkgIk9QRVIiKFJzMzIrIzApPSJERVNU KTsgXAorREVGX01BUFBJTkcoUzRfcCMjVEFHIyN0bmV3X3pvbWFwLCAiaWYgKFB2NC5uZXcpICJP UEVSIihSczMyKT0iREVTVCwgImlmIChQdjQubmV3KSAiT1BFUiIoUnMzMisjMCk9IkRFU1QpOyBc CitERUZfTUFQUElORyhTNF9wIyNUQUcjI2ZuZXdfem9tYXAsICJpZiAoIVB2NC5uZXcpICJPUEVS IihSczMyKT0iREVTVCwgImlmICghUHY0Lm5ldykgIk9QRVIiKFJzMzIrIzApPSJERVNUKTsKKwor CisKKworLyogVGhlIHNldCBvZiAzMi1iaXQgcHJlZGljYXRlZCBzdG9yZSBpbnN0cnVjdGlvbnMg Ki8KK1NURF9QU1RfQU1PREVTKHN0b3JlcmIsIlJ0MzIiLCJtZW1iIiwiU3RvcmUgQnl0ZSIsQVRU UklCUyhBX0FSQ0hWMixBX01FTVNJWkVfMUIsQV9TVE9SRSksIjAiLDAsZlNUT1JFKDEsMSxFQSxm R0VUQllURSgwLFJ0VikpKQorU1REX1BTVF9BTU9ERVMoc3RvcmVyaCwiUnQzMiIsIm1lbWgiLCJT dG9yZSBIYWxmIGludGVnZXIiLEFUVFJJQlMoQV9BUkNIVjIsQV9NRU1TSVpFXzJCLEFfU1RPUkUp LCIxIiwxLGZTVE9SRSgxLDIsRUEsZkdFVEhBTEYoMCxSdFYpKSkKK1NURF9QU1RfQU1PREVTKHN0 b3JlcmYsIlJ0LkgzMiIsIm1lbWgiLCJTdG9yZSBVcHBlciBIYWxmIGludGVnZXIiLEFUVFJJQlMo QV9BUkNIVjIsQV9NRU1TSVpFXzJCLEFfU1RPUkUpLCIxIiwxLGZTVE9SRSgxLDIsRUEsZkdFVEhB TEYoMSxSdFYpKSkKK1NURF9QU1RfQU1PREVTKHN0b3JlcmksIlJ0MzIiLCJtZW13IiwiU3RvcmUg V29yZCIsQVRUUklCUyhBX0FSQ0hWMixBX01FTVNJWkVfNEIsQV9TVE9SRSksIjIiLDIsZlNUT1JF KDEsNCxFQSxSdFYpKQorU1REX1BTVF9BTU9ERVMoc3RvcmVyZCwiUnR0MzIiLCJtZW1kIiwiU3Rv cmUgRG91YmxlIGludGVnZXIiLEFUVFJJQlMoQV9BUkNIVjIsQV9NRU1TSVpFXzhCLEFfU1RPUkUp LCIzIiwzLGZTVE9SRSgxLDgsRUEsUnR0VikpCitTVERfUFNUX0FNT0RFUyhzdG9yZXJpbmV3LCJO dDgubmV3IiwibWVtdyIsIlN0b3JlIFdvcmQiLEFUVFJJQlMoQV9BUkNIVjIsQV9OT1RFX05FV1ZB TF9TTE9UMCxBX05WU1RPUkUsQV9OT1RFX05WU0xPVDAsQV9NRU1TSVpFXzRCLEFfU1RPUkUsQV9S RVNUUklDVF9OT1NMT1QxX1NUT1JFKSwiMiIsMixmU1RPUkUoMSw0LEVBLGZORVdSRUdfU1QoTnRO KSkpCitTVERfUFNUX0FNT0RFUyhzdG9yZXJibmV3LCJOdDgubmV3IiwibWVtYiIsIlN0b3JlIEJ5 dGUiLEFUVFJJQlMoQV9BUkNIVjIsQV9OT1RFX05FV1ZBTF9TTE9UMCxBX05WU1RPUkUsQV9OT1RF X05WU0xPVDAsQV9NRU1TSVpFXzFCLEFfU1RPUkUsQV9SRVNUUklDVF9OT1NMT1QxX1NUT1JFKSwi MCIsMCxmU1RPUkUoMSwxLEVBLGZHRVRCWVRFKDAsZk5FV1JFR19TVChOdE4pKSkpCitTVERfUFNU X0FNT0RFUyhzdG9yZXJobmV3LCJOdDgubmV3IiwibWVtaCIsIlN0b3JlIEhhbGYgaW50ZWdlciIs QVRUUklCUyhBX0FSQ0hWMixBX05PVEVfTkVXVkFMX1NMT1QwLEFfTlZTVE9SRSxBX05PVEVfTlZT TE9UMCxBX01FTVNJWkVfMkIsQV9TVE9SRSxBX1JFU1RSSUNUX05PU0xPVDFfU1RPUkUpLCIxIiwx LGZTVE9SRSgxLDIsRUEsZkdFVEhBTEYoMCxmTkVXUkVHX1NUKE50TikpKSkKKworCisKKworLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgIE1lbS1PcHMgKExv YWQtb3AtU3RvcmUpICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwor CisvKiBUaGUgc2V0IG9mIDMyLWJpdCBub24tcHJlZGljYXRlZCBtZW0tb3BzICovCisjZGVmaW5l IFNURF9NRU1PUF9BTU9ERVMoVEFHLE9QRVIsREVTQ1IsU0VNQU5USUNTKVwKK1E2SU5TTihMNF8j I1RBRyMjd19pbywgICJtZW13KFJzMzIrI3U2OjIpIk9QRVIsICAgICBBVFRSSUJTKEFfTUVNT1As QV9ST1BTXzMsQV9NRU1TSVpFXzRCLEFfUkVTVFJJQ1RfU0xPVDBPTkxZLEFfUkVTVFJJQ1RfTk9T TE9UMV9TVE9SRSksREVTQ1Ise2ZJTU1FWFQodWlWKTsgZkVBX1JJKFJzVix1aVYpOyBmSElERShz aXplNHNfdCB0bXA7KSBmTE9BRCgxLDQscyxFQSx0bXApOyBTRU1BTlRJQ1M7ICBmU1RPUkUoMSw0 LEVBLHRtcCk7IH0pXAorUTZJTlNOKEw0XyMjVEFHIyNiX2lvLCAgIm1lbWIoUnMzMisjdTY6MCki T1BFUiwgICAgIEFUVFJJQlMoQV9NRU1PUCxBX1JPUFNfMyxBX01FTVNJWkVfMUIsQV9SRVNUUklD VF9TTE9UME9OTFksQV9SRVNUUklDVF9OT1NMT1QxX1NUT1JFKSxERVNDUix7ZklNTUVYVCh1aVYp OyBmRUFfUkkoUnNWLHVpVik7IGZISURFKHNpemU0c190IHRtcDspIGZMT0FEKDEsMSxzLEVBLHRt cCk7IFNFTUFOVElDUzsgIGZTVE9SRSgxLDEsRUEsdG1wKTsgfSlcCitRNklOU04oTDRfIyNUQUcj I2hfaW8sICAibWVtaChSczMyKyN1NjoxKSJPUEVSLCAgICAgQVRUUklCUyhBX01FTU9QLEFfUk9Q U18zLEFfTUVNU0laRV8yQixBX1JFU1RSSUNUX1NMT1QwT05MWSxBX1JFU1RSSUNUX05PU0xPVDFf U1RPUkUpLERFU0NSLHtmSU1NRVhUKHVpVik7IGZFQV9SSShSc1YsdWlWKTsgZkhJREUoc2l6ZTRz X3QgdG1wOykgZkxPQUQoMSwyLHMsRUEsdG1wKTsgU0VNQU5USUNTOyAgZlNUT1JFKDEsMixFQSx0 bXApOyB9KVwKK0RFRl9NQVBQSU5HKEw0XyMjVEFHIyN3X3pvbWFwLCAibWVtdyhSczMyKSJPUEVS LCAibWVtdyhSczMyKyMwKSJPUEVSKTtcCitERUZfTUFQUElORyhMNF8jI1RBRyMjaF96b21hcCwg Im1lbWgoUnMzMikiT1BFUiwgIm1lbWgoUnMzMisjMCkiT1BFUik7XAorREVGX01BUFBJTkcoTDRf IyNUQUcjI2Jfem9tYXAsICJtZW1iKFJzMzIpIk9QRVIsICJtZW1iKFJzMzIrIzApIk9QRVIpOwor CisKKworU1REX01FTU9QX0FNT0RFUyhhZGRfbWVtb3AsICIrPVJ0MzIiLCAiQWRkIFJlZ2lzdGVy IHRvIE1lbW9yeSBXb3JkIiwgdG1wICs9IFJ0VikKK1NURF9NRU1PUF9BTU9ERVMoc3ViX21lbW9w LCAiLT1SdDMyIiwgIlN1YiBSZWdpc3RlciBmcm9tIE1lbW9yeSBXb3JkIiwgdG1wIC09IFJ0VikK K1NURF9NRU1PUF9BTU9ERVMoYW5kX21lbW9wLCAiJj1SdDMyIiwgIkxvZ2ljYWwgQU5EIFJlZ2lz dGVyIHRvIE1lbW9yeSBXb3JkIiwgdG1wICY9IFJ0VikKK1NURF9NRU1PUF9BTU9ERVMob3JfbWVt b3AsICJ8PVJ0MzIiLCAiTG9naWNhbCBPUiBSZWdpc3RlciB0byBNZW1vcnkgV29yZCIsIHRtcCB8 PSBSdFYpCisKKworU1REX01FTU9QX0FNT0RFUyhpYWRkX21lbW9wLCAiKz0jVTUiLCAiQWRkIElt bWVkaWF0ZSB0byBNZW1vcnkgV29yZCIsIHRtcCArPSBVaVYpCitTVERfTUVNT1BfQU1PREVTKGlz dWJfbWVtb3AsICItPSNVNSIsICJTdWIgSW1tZWRpYXRlIHRvIE1lbW9yeSBXb3JkIiwgdG1wIC09 IFVpVikKK1NURF9NRU1PUF9BTU9ERVMoaWFuZF9tZW1vcCwgIj1jbHJiaXQoI1U1KSIsICJDbGVh ciBhIGJpdCBpbiBtZW1vcnkiLCB0bXAgJj0gKH4oMTw8VWlWKSkpCitTVERfTUVNT1BfQU1PREVT KGlvcl9tZW1vcCwgICI9c2V0Yml0KCNVNSkiLCAiU2V0IGEgYml0IGluIG1lbW9yeSIsIHRtcCB8 PSAoMTw8VWlWKSkKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAg ICAgIFY0IHN0b3JlIGltbWVkaWF0ZXMgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiovCisvKiBQcmVkaWNhdGVkIFN0b3JlIGltbWVkaWF0ZXMgKi8KKyNk ZWZpbmUgVjRfUFNUSV9BTU9ERVMoVEFHLERFU1QsT1BFUixERVNDUixBVFRSSUIsU0hGVCxTRU1B TlRJQ1MpXAorUTZJTlNOKFM0XyMjVEFHIyN0X2lvLCJpZiAoUHY0KSAiT1BFUiIoUnMzMisjdTY6 IlNIRlQiKT0iREVTVCxBVFRSSUIsREVTQ1Ise2ZFQV9SSShSc1YsdWlWKTsgaWYgKGZMU0JPTEQo UHZWKSl7IFNFTUFOVElDUzsgfSBlbHNlIHtTVE9SRV9DQU5DRUwoRUEpO319KVwKK1E2SU5TTihT NF8jI1RBRyMjZl9pbywiaWYgKCFQdjQpICJPUEVSIihSczMyKyN1NjoiU0hGVCIpPSJERVNULEFU VFJJQixERVNDUix7ZkVBX1JJKFJzVix1aVYpOyBpZiAoZkxTQk9MRE5PVChQdlYpKXsgU0VNQU5U SUNTOyB9IGVsc2Uge1NUT1JFX0NBTkNFTChFQSk7fX0pXAorUTZJTlNOKFM0XyMjVEFHIyN0bmV3 X2lvLCJpZiAoUHY0Lm5ldykgIk9QRVIiKFJzMzIrI3U2OiJTSEZUIik9IkRFU1QsQVRUUklCLERF U0NSLHtmRUFfUkkoUnNWLHVpVik7IGlmIChmTFNCTkVXKFB2TikpeyBTRU1BTlRJQ1M7IH0gZWxz ZSB7U1RPUkVfQ0FOQ0VMKEVBKTt9fSlcCitRNklOU04oUzRfIyNUQUcjI2ZuZXdfaW8sImlmICgh UHY0Lm5ldykgIk9QRVIiKFJzMzIrI3U2OiJTSEZUIik9IkRFU1QsQVRUUklCLERFU0NSLHtmRUFf UkkoUnNWLHVpVik7IGlmIChmTFNCTkVXTk9UKFB2TikpeyBTRU1BTlRJQ1M7IH0gZWxzZSB7U1RP UkVfQ0FOQ0VMKEVBKTt9fSlcCitERUZfTUFQUElORyhTNF8jI1RBRyMjdF96b21hcCwiaWYgKFB2 NCkgIk9QRVIiKFJzMzIpPSJERVNULCJpZiAoUHY0KSAiT1BFUiIoUnMzMisjMCk9IkRFU1QpO1wK K0RFRl9NQVBQSU5HKFM0XyMjVEFHIyNmX3pvbWFwLCJpZiAoIVB2NCkgIk9QRVIiKFJzMzIpPSJE RVNULCJpZiAoIVB2NCkgIk9QRVIiKFJzMzIrIzApPSJERVNUKTtcCitERUZfTUFQUElORyhTNF8j I1RBRyMjdG5ld196b21hcCwiaWYgKFB2NC5uZXcpICJPUEVSIihSczMyKT0iREVTVCwiaWYgKFB2 NC5uZXcpICJPUEVSIihSczMyKyMwKT0iREVTVCk7XAorREVGX01BUFBJTkcoUzRfIyNUQUcjI2Zu ZXdfem9tYXAsImlmICghUHY0Lm5ldykgIk9QRVIiKFJzMzIpPSJERVNULCJpZiAoIVB2NC5uZXcp ICJPUEVSIihSczMyKyMwKT0iREVTVCk7XAorCisvKiBUaGUgc2V0IG9mIDMyLWJpdCBzdG9yZSBp bW1lZGlhdGUgaW5zdHJ1Y3Rpb25zICovCitWNF9QU1RJX0FNT0RFUyhzdG9yZWlyYiwiI1M2Iiwi bWVtYiIsIlN0b3JlIEltbWVkaWF0ZSBCeXRlIixBVFRSSUJTKEFfQVJDSFYyLEFfUk9QU18yLEFf TUVNU0laRV8xQixBX1NUT1JFLEFfU1RPUkVJTU1FRCksIjAiLGZJTU1FWFQoU2lWKTsgZlNUT1JF KDEsMSxFQSxTaVYpKQorVjRfUFNUSV9BTU9ERVMoc3RvcmVpcmgsIiNTNiIsIm1lbWgiLCJTdG9y ZSBJbW1lZGlhdGUgSGFsZiBpbnRlZ2VyIixBVFRSSUJTKEFfQVJDSFYyLEFfUk9QU18yLEFfTUVN U0laRV8yQixBX1NUT1JFLEFfU1RPUkVJTU1FRCksIjEiLGZJTU1FWFQoU2lWKTsgZlNUT1JFKDEs MixFQSxTaVYpKQorVjRfUFNUSV9BTU9ERVMoc3RvcmVpcmksIiNTNiIsIm1lbXciLCJTdG9yZSBJ bW1lZGlhdGUgV29yZCIsQVRUUklCUyhBX0FSQ0hWMixBX1JPUFNfMixBX01FTVNJWkVfNEIsQV9T VE9SRSxBX1NUT1JFSU1NRUQpLCIyIixmSU1NRVhUKFNpVik7IGZTVE9SRSgxLDQsRUEsU2lWKSkK KworCisvKiBOb24tcHJlZGljYXRlZCBzdG9yZSBpbW1lZGlhdGVzICovCisjZGVmaW5lIFY0X1NU SV9BTU9ERVMoVEFHLERFU1QsT1BFUixERVNDUixBVFRSSUIsU0hGVCxTRU1BTlRJQ1MpXAorUTZJ TlNOKFM0XyMjVEFHIyNfaW8sICBPUEVSIihSczMyKyN1NjoiU0hGVCIpPSJERVNULCAgQVRUUklC LERFU0NSLHtmRUFfUkkoUnNWLHVpVik7IFNFTUFOVElDUzsgfSlcCisvKlE2SU5TTihTNF8jI1RB RyMjX3JyLCAgT1BFUiIoUnMzMitSdDMyPDwjdTIpPSJERVNULCAgIEFUVFJJQixERVNDUix7ZkVB X1JScyhSc1YsUnRWLHVpVik7IFNFTUFOVElDUzsgfSkqL1wKK0RFRl9NQVBQSU5HKFM0XyMjVEFH IyNfem9tYXAsT1BFUiIoUnMzMik9IkRFU1QsT1BFUiIoUnMzMisjMCk9IkRFU1QpOworCisvKiBU aGUgc2V0IG9mIDMyLWJpdCBzdG9yZSBpbW1lZGlhdGUgaW5zdHJ1Y3Rpb25zICovCitWNF9TVElf QU1PREVTKHN0b3JlaXJiLCIjUzgiLCJtZW1iIiwiU3RvcmUgSW1tZWRpYXRlIEJ5dGUiLEFUVFJJ QlMoQV9BUkNIVjIsQV9ST1BTXzIsQV9NRU1TSVpFXzFCLEFfU1RPUkUsQV9TVE9SRUlNTUVEKSwi MCIsZklNTUVYVChTaVYpOyBmU1RPUkUoMSwxLEVBLFNpVikpCitWNF9TVElfQU1PREVTKHN0b3Jl aXJoLCIjUzgiLCJtZW1oIiwiU3RvcmUgSW1tZWRpYXRlIEhhbGYgaW50ZWdlciIsQVRUUklCUyhB X0FSQ0hWMixBX1JPUFNfMixBX01FTVNJWkVfMkIsQV9TVE9SRSxBX1NUT1JFSU1NRUQpLCIxIixm SU1NRVhUKFNpVik7IGZTVE9SRSgxLDIsRUEsU2lWKSkKK1Y0X1NUSV9BTU9ERVMoc3RvcmVpcmks IiNTOCIsIm1lbXciLCJTdG9yZSBJbW1lZGlhdGUgV29yZCIsQVRUUklCUyhBX0FSQ0hWMixBX1JP UFNfMixBX01FTVNJWkVfNEIsQV9TVE9SRSxBX1NUT1JFSU1NRUQpLCIyIixmSU1NRVhUKFNpVik7 IGZTVE9SRSgxLDQsRUEsU2lWKSkKKworCisKKworCisKKworLyoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAq LworLyogICAgICAgICAgICAgICAgICBWMiBHUC1yZWxhdGl2ZSBMRC9TVCAgICAgICAgICAgICAg ICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjZGVmaW5lIFNURF9HUExE X0FNT0RFUyhUQUcsT1BFUixERVNDUixBVFRSSUIsU0hGVCxTRU1BTlRJQ1MpXAorUTZJTlNOKEwy XyMjVEFHIyNncCwgT1BFUiIoZ3ArI3UxNjoiU0hGVCIpIiwgICBBVFRSSUIsREVTQ1Ise2ZJTU1F WFQodWlWKTsgZkVBX0dQSSh1aVYpOyBTRU1BTlRJQ1M7IH0pCisKKy8qIFRoZSBzZXQgb2YgMzIt Yml0IGxvYWQgaW5zdHJ1Y3Rpb25zICovCitTVERfR1BMRF9BTU9ERVMobG9hZHJ1YiwiUmQzMj1t ZW11YiIsIkxvYWQgVW5zaWduZWQgQnl0ZSIsQVRUUklCUyhBX01FTVNJWkVfMUIsQV9MT0FELEFf QVJDSFYyKSwiMCIsZkxPQUQoMSwxLHUsRUEsUmRWKSkKK1NURF9HUExEX0FNT0RFUyhsb2FkcmIs ICJSZDMyPW1lbWIiLCAiTG9hZCBzaWduZWQgQnl0ZSIsQVRUUklCUyhBX01FTVNJWkVfMUIsQV9M T0FELEFfQVJDSFYyKSwiMCIsZkxPQUQoMSwxLHMsRUEsUmRWKSkKK1NURF9HUExEX0FNT0RFUyhs b2FkcnVoLCJSZDMyPW1lbXVoIiwiTG9hZCB1bnNpZ25lZCBIYWxmIGludGVnZXIiLEFUVFJJQlMo QV9NRU1TSVpFXzJCLEFfTE9BRCxBX0FSQ0hWMiksIjEiLGZMT0FEKDEsMix1LEVBLFJkVikpCitT VERfR1BMRF9BTU9ERVMobG9hZHJoLCAiUmQzMj1tZW1oIiwgIkxvYWQgc2lnbmVkIEhhbGYgaW50 ZWdlciIsQVRUUklCUyhBX01FTVNJWkVfMkIsQV9MT0FELEFfQVJDSFYyKSwiMSIsZkxPQUQoMSwy LHMsRUEsUmRWKSkKK1NURF9HUExEX0FNT0RFUyhsb2FkcmksICJSZDMyPW1lbXciLCAiTG9hZCBX b3JkIixBVFRSSUJTKEFfTUVNU0laRV80QixBX0xPQUQsQV9BUkNIVjIpLCIyIixmTE9BRCgxLDQs dSxFQSxSZFYpKQorU1REX0dQTERfQU1PREVTKGxvYWRyZCwgIlJkZDMyPW1lbWQiLCJMb2FkIERv dWJsZSBpbnRlZ2VyIixBVFRSSUJTKEFfTUVNU0laRV84QixBX0xPQUQsQV9BUkNIVjIpLCIzIixm TE9BRCgxLDgsdSxFQSxSZGRWKSkKKworCisjZGVmaW5lIFNURF9HUFNUX0FNT0RFUyhUQUcsREVT VCxPUEVSLERFU0NSLEFUVFJJQixTSEZULFNFTUFOVElDUylcCitRNklOU04oUzJfIyNUQUcjI2dw LCBPUEVSIihncCsjdTE2OiJTSEZUIik9IkRFU1QsIEFUVFJJQixERVNDUix7ZklNTUVYVCh1aVYp OyBmRUFfR1BJKHVpVik7IFNFTUFOVElDUzsgfSkKKworLyogVGhlIHNldCBvZiAzMi1iaXQgc3Rv cmUgaW5zdHJ1Y3Rpb25zICovCitTVERfR1BTVF9BTU9ERVMoc3RvcmVyYiwgIlJ0MzIiLCAibWVt YiIsIlN0b3JlIEJ5dGUiLEFUVFJJQlMoQV9NRU1TSVpFXzFCLEFfU1RPUkUsQV9BUkNIVjIpLCIw IixmU1RPUkUoMSwxLEVBLGZHRVRCWVRFKDAsUnRWKSkpCitTVERfR1BTVF9BTU9ERVMoc3RvcmVy aCwgIlJ0MzIiLCAibWVtaCIsIlN0b3JlIEhhbGYgaW50ZWdlciIsQVRUUklCUyhBX01FTVNJWkVf MkIsQV9TVE9SRSxBX0FSQ0hWMiksIjEiLGZTVE9SRSgxLDIsRUEsZkdFVEhBTEYoMCxSdFYpKSkK K1NURF9HUFNUX0FNT0RFUyhzdG9yZXJmLCAiUnQuSDMyIiwgIm1lbWgiLCJTdG9yZSBVcHBlciBI YWxmIGludGVnZXIiLEFUVFJJQlMoQV9NRU1TSVpFXzJCLEFfU1RPUkUsQV9BUkNIVjIpLCIxIixm U1RPUkUoMSwyLEVBLGZHRVRIQUxGKDEsUnRWKSkpCitTVERfR1BTVF9BTU9ERVMoc3RvcmVyaSwg IlJ0MzIiLCAibWVtdyIsIlN0b3JlIFdvcmQiLEFUVFJJQlMoQV9NRU1TSVpFXzRCLEFfU1RPUkUs QV9BUkNIVjIpLCIyIixmU1RPUkUoMSw0LEVBLFJ0VikpCitTVERfR1BTVF9BTU9ERVMoc3RvcmVy ZCwgIlJ0dDMyIiwibWVtZCIsIlN0b3JlIERvdWJsZSBpbnRlZ2VyIixBVFRSSUJTKEFfTUVNU0la RV84QixBX1NUT1JFLEFfQVJDSFYyKSwiMyIsZlNUT1JFKDEsOCxFQSxSdHRWKSkKK1NURF9HUFNU X0FNT0RFUyhzdG9yZXJpbmV3LCAiTnQ4Lm5ldyIsICJtZW13IiwiU3RvcmUgV29yZCIsQVRUUklC UyhBX05PVEVfTkVXVkFMX1NMT1QwLEFfTlZTVE9SRSxBX05PVEVfTlZTTE9UMCxBX01FTVNJWkVf NEIsQV9TVE9SRSxBX1JFU1RSSUNUX05PU0xPVDFfU1RPUkUsQV9BUkNIVjIpLCIyIixmU1RPUkUo MSw0LEVBLGZORVdSRUdfU1QoTnROKSkpCitTVERfR1BTVF9BTU9ERVMoc3RvcmVyYm5ldywgIk50 OC5uZXciLCAibWVtYiIsIlN0b3JlIEJ5dGUiLEFUVFJJQlMoQV9OT1RFX05FV1ZBTF9TTE9UMCxB X05WU1RPUkUsQV9OT1RFX05WU0xPVDAsQV9NRU1TSVpFXzFCLEFfU1RPUkUsQV9SRVNUUklDVF9O T1NMT1QxX1NUT1JFLEFfQVJDSFYyKSwiMCIsZlNUT1JFKDEsMSxFQSxmR0VUQllURSgwLGZORVdS RUdfU1QoTnROKSkpKQorU1REX0dQU1RfQU1PREVTKHN0b3JlcmhuZXcsICJOdDgubmV3IiwgIm1l bWgiLCJTdG9yZSBIYWxmIGludGVnZXIiLEFUVFJJQlMoQV9OT1RFX05FV1ZBTF9TTE9UMCxBX05W U1RPUkUsQV9OT1RFX05WU0xPVDAsQV9NRU1TSVpFXzJCLEFfU1RPUkUsQV9SRVNUUklDVF9OT1NM T1QxX1NUT1JFLEFfQVJDSFYyKSwiMSIsZlNUT1JFKDEsMixFQSxmR0VUSEFMRigwLGZORVdSRUdf U1QoTnROKSkpKQorCisKKworCisKKworI3VuZGVmIEZSQU1FX0VYUExJQ0lUCisKZGlmZiAtLWdp dCBhL3RhcmdldC9oZXhhZ29uL2ltcG9ydGVkL21weS5pZGVmIGIvdGFyZ2V0L2hleGFnb24vaW1w b3J0ZWQvbXB5LmlkZWYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDVjZDgw NAotLS0gL2Rldi9udWxsCisrKyBiL3RhcmdldC9oZXhhZ29uL2ltcG9ydGVkL21weS5pZGVmCkBA IC0wLDAgKzEsMTI2OSBAQAorLyoKKyAqICBDb3B5cmlnaHQoYykgMjAxOS0yMDIwIFF1YWxjb21t IElubm92YXRpb24gQ2VudGVyLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFRo aXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IgbW9kaWZ5CisgKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogIChhdCB5b3VyIG9w dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VU IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAg TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl IHRoZQorICogIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg KgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlCisgKiAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgc2Vl IDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAqLworCisvKgorICogTXVsdGlwbHkg SW5zdHJ1Y3Rpb25zCisgKi8KKworCisjZGVmaW5lIFNURF9TUF9NT0RFUyhUQUcsT1BFUixBVFIs RFNULEFDQ1NFTSxTRU0sT1NFTSxTQVRTRU0sUk5EU0VNLEFDQ1NZTilcCitRNklOU04oTTJfIyNU QUcjI19oaF9zMCwgT1BFUiIoUnMuSDMyLFJ0LkgzMikiT1NFTSwgICAgICAgIEFUUiwiIix7RFNU PVNBVFNFTShSTkRTRU0oQUNDU0VNIFNFTSggICAgICAgICBmR0VUSEFMRigxLFJzViksZkdFVEhB TEYoMSxSdFYpKSkpOyBBQ0NTWU47fSlcCitRNklOU04oTTJfIyNUQUcjI19oaF9zMSwgT1BFUiIo UnMuSDMyLFJ0LkgzMik6PDwxIk9TRU0sICAgIEFUUiwiIix7RFNUPVNBVFNFTShSTkRTRU0oQUND U0VNIGZTQ0FMRSgxLFNFTShmR0VUSEFMRigxLFJzViksZkdFVEhBTEYoMSxSdFYpKSkpKTsgQUND U1lOO30pXAorUTZJTlNOKE0yXyMjVEFHIyNfaGxfczAsIE9QRVIiKFJzLkgzMixSdC5MMzIpIk9T RU0sICAgICAgICBBVFIsIiIse0RTVD1TQVRTRU0oUk5EU0VNKEFDQ1NFTSBTRU0oICAgICAgICAg ZkdFVEhBTEYoMSxSc1YpLGZHRVRIQUxGKDAsUnRWKSkpKTsgQUNDU1lOO30pXAorUTZJTlNOKE0y XyMjVEFHIyNfaGxfczEsIE9QRVIiKFJzLkgzMixSdC5MMzIpOjw8MSJPU0VNLCAgICBBVFIsIiIs e0RTVD1TQVRTRU0oUk5EU0VNKEFDQ1NFTSBmU0NBTEUoMSxTRU0oZkdFVEhBTEYoMSxSc1YpLGZH RVRIQUxGKDAsUnRWKSkpKSk7IEFDQ1NZTjt9KVwKK1E2SU5TTihNMl8jI1RBRyMjX2xoX3MwLCBP UEVSIihScy5MMzIsUnQuSDMyKSJPU0VNLCAgICAgICAgQVRSLCIiLHtEU1Q9U0FUU0VNKFJORFNF TShBQ0NTRU0gU0VNKCAgICAgICAgIGZHRVRIQUxGKDAsUnNWKSxmR0VUSEFMRigxLFJ0VikpKSk7 IEFDQ1NZTjt9KVwKK1E2SU5TTihNMl8jI1RBRyMjX2xoX3MxLCBPUEVSIihScy5MMzIsUnQuSDMy KTo8PDEiT1NFTSwgICAgQVRSLCIiLHtEU1Q9U0FUU0VNKFJORFNFTShBQ0NTRU0gZlNDQUxFKDEs U0VNKGZHRVRIQUxGKDAsUnNWKSxmR0VUSEFMRigxLFJ0VikpKSkpOyBBQ0NTWU47fSlcCitRNklO U04oTTJfIyNUQUcjI19sbF9zMCwgT1BFUiIoUnMuTDMyLFJ0LkwzMikiT1NFTSwgICAgICAgIEFU UiwiIix7RFNUPVNBVFNFTShSTkRTRU0oQUNDU0VNIFNFTSggICAgICAgICBmR0VUSEFMRigwLFJz ViksZkdFVEhBTEYoMCxSdFYpKSkpOyBBQ0NTWU47fSlcCitRNklOU04oTTJfIyNUQUcjI19sbF9z MSwgT1BFUiIoUnMuTDMyLFJ0LkwzMik6PDwxIk9TRU0sICAgIEFUUiwiIix7RFNUPVNBVFNFTShS TkRTRU0oQUNDU0VNIGZTQ0FMRSgxLFNFTShmR0VUSEFMRigwLFJzViksZkdFVEhBTEYoMCxSdFYp KSkpKTsgQUNDU1lOO30pCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKi8KKy8qIG11bHRpcGx5IDE2eDE2LT4zMiBzaWduZWQgaW5zdHJ1Y3Rp b25zICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKi8KK1NURF9TUF9NT0RFUyhtcHlfYWNjLCAgICAiUngzMis9bXB5Iiwg LFJ4VixSeFYrICAgICxmTVBZMTZTUywgICAgICAgICAgLGZQQVNTLGZQQVNTLGZBQ0MoKSkKK1NU RF9TUF9NT0RFUyhtcHlfbmFjLCAgICAiUngzMi09bXB5IiwgLFJ4VixSeFYtICAgICxmTVBZMTZT UywgICAgICAgICAgLGZQQVNTLGZQQVNTLGZBQ0MoKSkKK1NURF9TUF9NT0RFUyhtcHlfYWNjX3Nh dCwiUngzMis9bXB5IiwgLFJ4VixSeFYrICAgICxmTVBZMTZTUywiOnNhdCIgICAgLGZTQVQsIGZQ QVNTLGZBQ0MoKSkKK1NURF9TUF9NT0RFUyhtcHlfbmFjX3NhdCwiUngzMi09bXB5IiwgLFJ4VixS eFYtICAgICxmTVBZMTZTUywiOnNhdCIgICAgLGZTQVQsIGZQQVNTLGZBQ0MoKSkKK1NURF9TUF9N T0RFUyhtcHksICAgICAgICAiUmQzMj1tcHkiLCAgLFJkViwgICAgICAgICxmTVBZMTZTUywgICAg ICAgICAgLGZQQVNTLGZQQVNTLCkKK1NURF9TUF9NT0RFUyhtcHlfc2F0LCAgICAiUmQzMj1tcHki LCAgLFJkViwgICAgICAgICxmTVBZMTZTUywiOnNhdCIgICAgLGZTQVQsIGZQQVNTLCkKK1NURF9T UF9NT0RFUyhtcHlfcm5kLCAgICAiUmQzMj1tcHkiLCAgLFJkViwgICAgICAgICxmTVBZMTZTUywi OnJuZCIgICAgLGZQQVNTLGZST1VORCwpCitTVERfU1BfTU9ERVMobXB5X3NhdF9ybmQsIlJkMzI9 bXB5IiwgICxSZFYsICAgICAgICAsZk1QWTE2U1MsIjpybmQ6c2F0IixmU0FULCBmUk9VTkQsKQor U1REX1NQX01PREVTKG1weWRfYWNjLCAgICJSeHgzMis9bXB5IiwsUnh4VixSeHhWKyAgLGZNUFkx NlNTLCAgICAgICAgICAsZlBBU1MsZlBBU1MsZkFDQygpKQorU1REX1NQX01PREVTKG1weWRfbmFj LCAgICJSeHgzMi09bXB5IiwsUnh4VixSeHhWLSAgLGZNUFkxNlNTLCAgICAgICAgICAsZlBBU1Ms ZlBBU1MsZkFDQygpKQorU1REX1NQX01PREVTKG1weWQsICAgICAgICJSZGQzMj1tcHkiLCAsUmRk ViwgICAgICAgLGZNUFkxNlNTLCAgICAgICAgICAsZlBBU1MsZlBBU1MsKQorU1REX1NQX01PREVT KG1weWRfcm5kLCAgICJSZGQzMj1tcHkiLCAsUmRkViwgICAgICAgLGZNUFkxNlNTLCI6cm5kIiAg ICAsZlBBU1MsZlJPVU5ELCkKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKiovCisvKiBtdWx0aXBseSAxNngxNi0+MzIgdW5zaWduZWQgaW5z dHJ1Y3Rpb25zICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lIFNURF9VU1BfTU9ERVMoVEFHLE9QRVIsQVRS LERTVCxBQ0NTRU0sU0VNLE9TRU0sU0FUU0VNLFJORFNFTSxBQ0NTWU4pXAorUTZJTlNOKE0yXyMj VEFHIyNfaGhfczAsIE9QRVIiKFJzLkgzMixSdC5IMzIpIk9TRU0sICAgICAgICBBVFIsIiIse0RT VD1TQVRTRU0oUk5EU0VNKEFDQ1NFTSBTRU0oICAgICAgICAgZkdFVFVIQUxGKDEsUnNWKSxmR0VU VUhBTEYoMSxSdFYpKSkpOyBBQ0NTWU47fSlcCitRNklOU04oTTJfIyNUQUcjI19oaF9zMSwgT1BF UiIoUnMuSDMyLFJ0LkgzMik6PDwxIk9TRU0sICAgIEFUUiwiIix7RFNUPVNBVFNFTShSTkRTRU0o QUNDU0VNIGZTQ0FMRSgxLFNFTShmR0VUVUhBTEYoMSxSc1YpLGZHRVRVSEFMRigxLFJ0VikpKSkp OyBBQ0NTWU47fSlcCitRNklOU04oTTJfIyNUQUcjI19obF9zMCwgT1BFUiIoUnMuSDMyLFJ0Lkwz MikiT1NFTSwgICAgICAgIEFUUiwiIix7RFNUPVNBVFNFTShSTkRTRU0oQUNDU0VNIFNFTSggICAg ICAgICBmR0VUVUhBTEYoMSxSc1YpLGZHRVRVSEFMRigwLFJ0VikpKSk7IEFDQ1NZTjt9KVwKK1E2 SU5TTihNMl8jI1RBRyMjX2hsX3MxLCBPUEVSIihScy5IMzIsUnQuTDMyKTo8PDEiT1NFTSwgICAg QVRSLCIiLHtEU1Q9U0FUU0VNKFJORFNFTShBQ0NTRU0gZlNDQUxFKDEsU0VNKGZHRVRVSEFMRigx LFJzViksZkdFVFVIQUxGKDAsUnRWKSkpKSk7IEFDQ1NZTjt9KVwKK1E2SU5TTihNMl8jI1RBRyMj X2xoX3MwLCBPUEVSIihScy5MMzIsUnQuSDMyKSJPU0VNLCAgICAgICAgQVRSLCIiLHtEU1Q9U0FU U0VNKFJORFNFTShBQ0NTRU0gU0VNKCAgICAgICAgIGZHRVRVSEFMRigwLFJzViksZkdFVFVIQUxG KDEsUnRWKSkpKTt9IEFDQ1NZTjspXAorUTZJTlNOKE0yXyMjVEFHIyNfbGhfczEsIE9QRVIiKFJz LkwzMixSdC5IMzIpOjw8MSJPU0VNLCAgICBBVFIsIiIse0RTVD1TQVRTRU0oUk5EU0VNKEFDQ1NF TSBmU0NBTEUoMSxTRU0oZkdFVFVIQUxGKDAsUnNWKSxmR0VUVUhBTEYoMSxSdFYpKSkpKTsgQUND U1lOO30pXAorUTZJTlNOKE0yXyMjVEFHIyNfbGxfczAsIE9QRVIiKFJzLkwzMixSdC5MMzIpIk9T RU0sICAgICAgICBBVFIsIiIse0RTVD1TQVRTRU0oUk5EU0VNKEFDQ1NFTSBTRU0oICAgICAgICAg ZkdFVFVIQUxGKDAsUnNWKSxmR0VUVUhBTEYoMCxSdFYpKSkpOyBBQ0NTWU47fSlcCitRNklOU04o TTJfIyNUQUcjI19sbF9zMSwgT1BFUiIoUnMuTDMyLFJ0LkwzMik6PDwxIk9TRU0sICAgIEFUUiwi Iix7RFNUPVNBVFNFTShSTkRTRU0oQUNDU0VNIGZTQ0FMRSgxLFNFTShmR0VUVUhBTEYoMCxSc1Yp LGZHRVRVSEFMRigwLFJ0VikpKSkpOyBBQ0NTWU47fSkKKworU1REX1VTUF9NT0RFUyhtcHl1X2Fj YywgICAgIlJ4MzIrPW1weXUiLCAsUnhWLFJ4VisgICxmTVBZMTZVVSwgICAgICAgICAgLGZQQVNT LGZQQVNTLGZBQ0MoKSkKK1NURF9VU1BfTU9ERVMobXB5dV9uYWMsICAgICJSeDMyLT1tcHl1Iiwg LFJ4VixSeFYtICAsZk1QWTE2VVUsICAgICAgICAgICxmUEFTUyxmUEFTUyxmQUNDKCkpCitTVERf VVNQX01PREVTKG1weXUsICAgICAgICAiUmQzMj1tcHl1IiwgIEFUVFJJQlMoQV9JTlRSSU5TSUNf UkVUVVJOU19VTlNJR05FRCkgLFJkViwgICxmTVBZMTZVVSwgLGZQQVNTLGZQQVNTLCkKK1NURF9V U1BfTU9ERVMobXB5dWRfYWNjLCAgICJSeHgzMis9bXB5dSIsLFJ4eFYsUnh4VissZk1QWTE2VVUs ICAgICAgICAgICxmUEFTUyxmUEFTUyxmQUNDKCkpCitTVERfVVNQX01PREVTKG1weXVkX25hYywg ICAiUnh4MzItPW1weXUiLCxSeHhWLFJ4eFYtLGZNUFkxNlVVLCAgICAgICAgICAsZlBBU1MsZlBB U1MsZkFDQygpKQorU1REX1VTUF9NT0RFUyhtcHl1ZCwgICAgICAgIlJkZDMyPW1weXUiLCBBVFRS SUJTKEFfSU5UUklOU0lDX1JFVFVSTlNfVU5TSUdORUQpICxSZGRWLCAsZk1QWTE2VVUsICxmUEFT UyxmUEFTUywpCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqLworLyogbXB5IDE2eCNzOC0+MzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisv KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworUTZJTlNO KE0yX21weXNpcCwiUmQzMj0rbXB5aShSczMyLCN1OCkiLEFUVFJJQlMoQV9BUkNIVjIsQV9ST1BT XzIsQV9NUFkpLAorIjMyLWJpdCBNdWx0aXBseSBieSB1bnNpZ25lZCBpbW1lZGlhdGUiLAoreyBm SU1NRVhUKHVpVik7IFJkVj1Sc1YqdWlWOyB9KQorCitRNklOU04oTTJfbXB5c2luLCJSZDMyPS1t cHlpKFJzMzIsI3U4KSIsQVRUUklCUyhBX0FSQ0hWMixBX1JPUFNfMixBX01QWSksCisiMzItYml0 IE11bHRpcGx5IGJ5IHVuc2lnbmVkIGltbWVkaWF0ZSwgbmVnYXRlIHJlc3VsdCIsCit7IFJkVj1S c1YqLXVpVjsgfSkKKworREVGX1YyX0NPTkRfTUFQUElORyhNMl9tcHlzbWksIlJkMzI9bXB5aShS czMyLCNtOSkiLCIoKCNtOTwwKSAmJiAoI205Pi0yNTYpKSIsIlJkMzI9LW1weWkoUnMzMiwjbTkq KC0xKSkiLCJSZDMyPSttcHlpKFJzMzIsI205KSIpCisKK1E2SU5TTihNMl9tYWNzaXAsIlJ4MzIr PW1weWkoUnMzMiwjdTgpIixBVFRSSUJTKEFfQVJDSFYyLEFfUk9QU18yLEFfTVBZKSwKKyIzMi1i aXQgTXVsdGlwbHktQWRkIGJ5IHVuc2lnbmVkIGltbWVkaWF0ZSIsCit7IGZJTU1FWFQodWlWKTsg UnhWPVJ4ViArIChSc1YqdWlWKTsgZkFDQygpO30pCisKK1E2SU5TTihNMl9tYWNzaW4sIlJ4MzIt PW1weWkoUnMzMiwjdTgpIixBVFRSSUJTKEFfQVJDSFYyLEFfUk9QU18yLEFfTVBZKSwKKyIzMi1i aXQgTXVsdGlwbHktU3VidHJhY3QgYnkgdW5zaWduZWQgaW1tZWRpYXRlIiwKK3sgZklNTUVYVCh1 aVYpOyBSeFY9UnhWIC0gKFJzVip1aVYpOyBmQUNDKCk7fSkKKworCisvKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIG11bHRpcGx5L21hYyAgMzJ4MzIt PjY0IGluc3RydWN0aW9ucyAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiovCitRNklOU04oTTJfZHBtcHlzc19zMCwgICAgIlJkZDMyPW1weShS czMyLFJ0MzIpIiwgQVRUUklCUyhBX0lUX01QWSxBX0lUX01QWV8zMiksIk11bHRpcGx5IDMyeDMy Iix7UmRkVj1mTVBZMzJTUyhSc1YsUnRWKTt9KQorUTZJTlNOKE0yX2RwbXB5c3NfYWNjX3MwLCJS eHgzMis9bXB5KFJzMzIsUnQzMikiLEFUVFJJQlMoQV9JVF9NUFksQV9JVF9NUFlfMzIsQV9ST1BT XzIpLCJNdWx0aXBseSAzMngzMiIse1J4eFY9IFJ4eFYgKyBmTVBZMzJTUyhSc1YsUnRWKTsgZkFD QygpO30pCitRNklOU04oTTJfZHBtcHlzc19uYWNfczAsIlJ4eDMyLT1tcHkoUnMzMixSdDMyKSIs QVRUUklCUyhBX0lUX01QWSxBX0lUX01QWV8zMixBX1JPUFNfMiksIk11bHRpcGx5IDMyeDMyIix7 Unh4Vj0gUnh4ViAtIGZNUFkzMlNTKFJzVixSdFYpOyBmQUNDKCk7fSkKKworUTZJTlNOKE0yX2Rw bXB5dXVfczAsICAgICJSZGQzMj1tcHl1KFJzMzIsUnQzMikiLCBBVFRSSUJTKEFfSVRfTVBZLEFf SVRfTVBZXzMyLEFfSU5UUklOU0lDX1JFVFVSTlNfVU5TSUdORUQpLCJNdWx0aXBseSAzMngzMiIs e1JkZFY9Zk1QWTMyVVUoZkNBU1Q0dShSc1YpLGZDQVNUNHUoUnRWKSk7fSkKK1E2SU5TTihNMl9k cG1weXV1X2FjY19zMCwiUnh4MzIrPW1weXUoUnMzMixSdDMyKSIsQVRUUklCUyhBX0lUX01QWSxB X0lUX01QWV8zMixBX1JPUFNfMiksIk11bHRpcGx5IDMyeDMyIix7Unh4Vj0gUnh4ViArIGZNUFkz MlVVKGZDQVNUNHUoUnNWKSxmQ0FTVDR1KFJ0VikpOyBmQUNDKCk7fSkKK1E2SU5TTihNMl9kcG1w eXV1X25hY19zMCwiUnh4MzItPW1weXUoUnMzMixSdDMyKSIsQVRUUklCUyhBX0lUX01QWSxBX0lU X01QWV8zMixBX1JPUFNfMiksIk11bHRpcGx5IDMyeDMyIix7Unh4Vj0gUnh4ViAtIGZNUFkzMlVV KGZDQVNUNHUoUnNWKSxmQ0FTVDR1KFJ0VikpOyBmQUNDKCk7fSkKKworCisvKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogbXVsdGlwbHkv bWFjICAzMngzMi0+MzIgKHVwcGVyKSBpbnN0cnVjdGlvbnMgICAgICAgKi8KKy8qKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitRNklOU04oTTJf bXB5X3VwLCAgICAgICAgIlJkMzI9bXB5KFJzMzIsUnQzMikiLCBBVFRSSUJTKEFfSVRfTVBZLEFf SVRfTVBZXzMyKSwiTXVsdGlwbHkgMzJ4MzIiLHtSZFY9Zk1QWTMyU1MoUnNWLFJ0Vik+PjMyO30p CitRNklOU04oTTJfbXB5X3VwX3MxLCAgICAgIlJkMzI9bXB5KFJzMzIsUnQzMik6PDwxIiwgQVRU UklCUyhBX0lUX01QWSxBX0lUX01QWV8zMiksIk11bHRpcGx5IDMyeDMyIix7UmRWPWZNUFkzMlNT KFJzVixSdFYpPj4zMTt9KQorUTZJTlNOKE0yX21weV91cF9zMV9zYXQsICJSZDMyPW1weShSczMy LFJ0MzIpOjw8MTpzYXQiLCBBVFRSSUJTKEFfSVRfTVBZLEFfSVRfTVBZXzMyKSwiTXVsdGlwbHkg MzJ4MzIiLHtSZFY9ZlNBVChmTVBZMzJTUyhSc1YsUnRWKT4+MzEpO30pCitRNklOU04oTTJfbXB5 dV91cCwgICAgICAgIlJkMzI9bXB5dShSczMyLFJ0MzIpIiwgQVRUUklCUyhBX0lUX01QWSxBX0lU X01QWV8zMixBX0lOVFJJTlNJQ19SRVRVUk5TX1VOU0lHTkVEKSwiTXVsdGlwbHkgMzJ4MzIiLHtS ZFY9Zk1QWTMyVVUoZkNBU1Q0dShSc1YpLGZDQVNUNHUoUnRWKSk+PjMyO30pCitRNklOU04oTTJf bXB5c3VfdXAsICAgICAgIlJkMzI9bXB5c3UoUnMzMixSdDMyKSIsIEFUVFJJQlMoQV9JVF9NUFks QV9JVF9NUFlfMzIpLCJNdWx0aXBseSAzMngzMiIse1JkVj1mTVBZMzJTVShSc1YsZkNBU1Q0dShS dFYpKT4+MzI7fSkKK1E2SU5TTihNMl9kcG1weXNzX3JuZF9zMCwiUmQzMj1tcHkoUnMzMixSdDMy KTpybmQiLCBBVFRSSUJTKEFfSVRfTVBZLEFfSVRfTVBZXzMyKSwiTXVsdGlwbHkgMzJ4MzIiLHtS ZFY9KGZNUFkzMlNTKFJzVixSdFYpK2ZDT05TVExMKDB4ODAwMDAwMDApKT4+MzI7fSkKKworUTZJ TlNOKE00X21hY191cF9zMV9zYXQsICJSeDMyKz1tcHkoUnMzMixSdDMyKTo8PDE6c2F0IiwgQVRU UklCUyhBX0lUX01QWSxBX0lUX01QWV8zMiksIk11bHRpcGx5IDMyeDMyIix7UnhWPWZTQVQoICAo ZlNFMzJfNjQoUnhWKSkgKyAoZk1QWTMyU1MoUnNWLFJ0Vik+PjMxKSk7IGZBQ0MoKTt9KQorUTZJ TlNOKE00X25hY191cF9zMV9zYXQsICJSeDMyLT1tcHkoUnMzMixSdDMyKTo8PDE6c2F0IiwgQVRU UklCUyhBX0lUX01QWSxBX0lUX01QWV8zMiksIk11bHRpcGx5IDMyeDMyIix7UnhWPWZTQVQoICAo ZlNFMzJfNjQoUnhWKSkgLSAoZk1QWTMyU1MoUnNWLFJ0Vik+PjMxKSk7IGZBQ0MoKTt9KQorCisK Ky8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogMzJ4 MzItPjMyIG11bHRpcGx5IChsb3dlcikgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworUTZJTlNOKE0yX21weWksIlJk MzI9bXB5aShSczMyLFJ0MzIpIixBVFRSSUJTKEFfSVRfTVBZLEFfSVRfTVBZXzMyLEFfTVBZKSwK KyJNdWx0aXBseSBJbnRlZ2VyIiwKK3sgUmRWPVJzVipSdFY7fSkKKworCisKK0RFRl9NQVBQSU5H KE0yX21weXVpLCJSZDMyPW1weXVpKFJzMzIsUnQzMikiLCJSZDMyPW1weWkoUnMzMixSdDMyKSIp CisKKworUTZJTlNOKE0yX21hY2ksIlJ4MzIrPW1weWkoUnMzMixSdDMyKSIsQVRUUklCUyhBX0lU X01QWSxBX0lUX01QWV8zMixBX0FSQ0hWMixBX1JPUFNfMixBX01QWSksCisiTXVsdGlwbHktQWNj dW11bGF0ZSBJbnRlZ2VyIiwKK3sgUnhWPVJ4ViArIFJzVipSdFY7IGZBQ0MoKTt9KQorCitRNklO U04oTTJfbW5hY2ksIlJ4MzItPW1weWkoUnMzMixSdDMyKSIsQVRUUklCUyhBX0lUX01QWSxBX0lU X01QWV8zMixBX0FSQ0hWMixBX1JPUFNfMixBX01QWSksCisiTXVsdGlwbHktTmVnLUFjY3VtdWxh dGUgSW50ZWdlciIsCit7IFJ4Vj1SeFYgLSBSc1YqUnRWOyBmQUNDKCk7fSkKKworLyoqKioqKiBX SFkgQVJFIFRIRVNFIElOIE1QWS5JREVGPyAqKioqKioqKioqLworCitRNklOU04oTTJfYWNjaSwi UngzMis9YWRkKFJzMzIsUnQzMikiLEFUVFJJQlMoQV9ST1BTXzIsQV9BUkNIVjIpLAorIkFkZCB3 aXRoIGFjY3VtdWxhdGUiLAoreyBSeFY9UnhWICsgUnNWICsgUnRWO30pCisKK1E2SU5TTihNMl9h Y2NpaSwiUngzMis9YWRkKFJzMzIsI3M4KSIsQVRUUklCUyhBX1JPUFNfMixBX0FSQ0hWMiksCisi QWRkIHdpdGggYWNjdW11bGF0ZSIsCit7IGZJTU1FWFQoc2lWKTsgUnhWPVJ4ViArIFJzViArIHNp Vjt9KQorCitRNklOU04oTTJfbmFjY2ksIlJ4MzItPWFkZChSczMyLFJ0MzIpIixBVFRSSUJTKEFf Uk9QU18yLEFfQVJDSFYyKSwKKyJBZGQgd2l0aCBuZWcgYWNjdW11bGF0ZSIsCit7IFJ4Vj1SeFYg LSAoUnNWICsgUnRWKTt9KQorCitRNklOU04oTTJfbmFjY2lpLCJSeDMyLT1hZGQoUnMzMiwjczgp IixBVFRSSUJTKEFfUk9QU18yLEFfQVJDSFYyKSwKKyJBZGQgd2l0aCBuZWcgYWNjdW11bGF0ZSIs Cit7IGZJTU1FWFQoc2lWKTsgUnhWPVJ4ViAtIChSc1YgKyBzaVYpO30pCisKK1E2SU5TTihNMl9z dWJhY2MsIlJ4MzIrPXN1YihSdDMyLFJzMzIpIixBVFRSSUJTKEFfUk9QU18yLEFfQVJDSFYyKSwK KyJTdWIgd2l0aCBhY2N1bXVsYXRlIiwKK3sgUnhWPVJ4ViArIFJ0ViAtIFJzVjt9KQorCisKKwor CitRNklOU04oTTRfbXB5cnJfYWRkciwiUnkzMj1hZGQoUnUzMixtcHlpKFJ5MzIsUnMzMikpIixB VFRSSUJTKEFfUk9QU18yLEFfTVBZKSwKKyJNcHkgYnkgaW1tZWQgYW5kIGFkZCBpbW1lZCIsCit7 IFJ5ViA9IFJ1ViArIFJzVipSeVY7IGZBQ0MoKTt9KQorCitRNklOU04oTTRfbXB5cmlfYWRkcl91 MiwiUmQzMj1hZGQoUnUzMixtcHlpKCN1NjoyLFJzMzIpKSIsQVRUUklCUyhBX1JPUFNfMixBX01Q WSksCisiTXB5IGJ5IGltbWVkIGFuZCBhZGQgaW1tZWQiLAoreyBSZFYgPSBSdVYgKyBSc1YqdWlW OyBmQUNDKCk7fSkKKworUTZJTlNOKE00X21weXJpX2FkZHIsIlJkMzI9YWRkKFJ1MzIsbXB5aShS czMyLCN1NikpIixBVFRSSUJTKEFfUk9QU18yLEFfTVBZKSwKKyJNcHkgYnkgaW1tZWQgYW5kIGFk ZCBpbW1lZCIsCit7IGZJTU1FWFQodWlWKTsgUmRWID0gUnVWICsgUnNWKnVpVjsgZkFDQygpO30p CisKKworCitRNklOU04oTTRfbXB5cmlfYWRkaSwiUmQzMj1hZGQoI3U2LG1weWkoUnMzMiwjVTYp KSIsQVRUUklCUyhBX1JPUFNfMixBX01QWSksCisiTXB5IGJ5IGltbWVkIGFuZCBhZGQgaW1tZWQi LAoreyBmSU1NRVhUKHVpVik7IFJkViA9IHVpViArIFJzVipVaVY7fSkKKworCisKK1E2SU5TTihN NF9tcHlycl9hZGRpLCJSZDMyPWFkZCgjdTYsbXB5aShSczMyLFJ0MzIpKSIsQVRUUklCUyhBX1JP UFNfMixBX01QWSksCisiTXB5IGJ5IGltbWVkIGFuZCBhZGQgaW1tZWQiLAoreyBmSU1NRVhUKHVp Vik7IFJkViA9IHVpViArIFJzVipSdFY7fSkKKworCisKKworCisKKworCisKKworCisKKworCisK KworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8q IHZlY3RvciBtYWMgIDJ4WzE2eDE2IC0+IDMyXSAgICAgICAgICAgICAgICAqLworLyoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyN1bmRlZiB2bWFjX3Nl bWEKKyNkZWZpbmUgdm1hY19zZW1hKE4pXAoreyBmU0VUV09SRCgwLFJkZFYsZlNBVChmU0NBTEUo TixmTVBZMTZTUyhmR0VUSEFMRigwLFJzViksZkdFVEhBTEYoMCxSdFYpKSkpKTtcCisgIGZTRVRX T1JEKDEsUmRkVixmU0FUKGZTQ0FMRShOLGZNUFkxNlNTKGZHRVRIQUxGKDEsUnNWKSxmR0VUSEFM RigxLFJ0VikpKSkpO1wKK30KK1E2SU5TTihNMl92bXB5MnNfczAsIlJkZDMyPXZtcHloKFJzMzIs UnQzMik6c2F0IixBVFRSSUJTKCksIlZlY3RvciBNdWx0aXBseSIsdm1hY19zZW1hKDApKQorUTZJ TlNOKE0yX3ZtcHkyc19zMSwiUmRkMzI9dm1weWgoUnMzMixSdDMyKTo8PDE6c2F0IixBVFRSSUJT KCksIlZlY3RvciBNdWx0aXBseSIsdm1hY19zZW1hKDEpKQorCisKKyN1bmRlZiB2bWFjX3NlbWEK KyNkZWZpbmUgdm1hY19zZW1hKE4pXAoreyBmU0VUV09SRCgwLFJ4eFYsZlNBVChmR0VUV09SRCgw LFJ4eFYpICsgZlNDQUxFKE4sZk1QWTE2U1MoZkdFVEhBTEYoMCxSc1YpLGZHRVRIQUxGKDAsUnRW KSkpKSk7XAorICBmU0VUV09SRCgxLFJ4eFYsZlNBVChmR0VUV09SRCgxLFJ4eFYpICsgZlNDQUxF KE4sZk1QWTE2U1MoZkdFVEhBTEYoMSxSc1YpLGZHRVRIQUxGKDEsUnRWKSkpKSk7XAorICBmQUND KCk7XAorfQorUTZJTlNOKE0yX3ZtYWMyc19zMCwiUnh4MzIrPXZtcHloKFJzMzIsUnQzMik6c2F0 IixBVFRSSUJTKCksIlZlY3RvciBNdWx0aXBseSIsdm1hY19zZW1hKDApKQorUTZJTlNOKE0yX3Zt YWMyc19zMSwiUnh4MzIrPXZtcHloKFJzMzIsUnQzMik6PDwxOnNhdCIsQVRUUklCUygpLCJWZWN0 b3IgTXVsdGlwbHkiLHZtYWNfc2VtYSgxKSkKKworI3VuZGVmIHZtYWNfc2VtYQorI2RlZmluZSB2 bWFjX3NlbWEoTilcCit7IGZTRVRXT1JEKDAsUmRkVixmU0FUKGZTQ0FMRShOLGZNUFkxNlNVKGZH RVRIQUxGKDAsUnNWKSxmR0VUVUhBTEYoMCxSdFYpKSkpKTtcCisgIGZTRVRXT1JEKDEsUmRkVixm U0FUKGZTQ0FMRShOLGZNUFkxNlNVKGZHRVRIQUxGKDEsUnNWKSxmR0VUVUhBTEYoMSxSdFYpKSkp KTtcCit9CitRNklOU04oTTJfdm1weTJzdV9zMCwiUmRkMzI9dm1weWhzdShSczMyLFJ0MzIpOnNh dCIsQVRUUklCUygpLCJWZWN0b3IgTXVsdGlwbHkiLHZtYWNfc2VtYSgwKSkKK1E2SU5TTihNMl92 bXB5MnN1X3MxLCJSZGQzMj12bXB5aHN1KFJzMzIsUnQzMik6PDwxOnNhdCIsQVRUUklCUygpLCJW ZWN0b3IgTXVsdGlwbHkiLHZtYWNfc2VtYSgxKSkKKworCisjdW5kZWYgdm1hY19zZW1hCisjZGVm aW5lIHZtYWNfc2VtYShOKVwKK3sgZlNFVFdPUkQoMCxSeHhWLGZTQVQoZkdFVFdPUkQoMCxSeHhW KSArIGZTQ0FMRShOLGZNUFkxNlNVKGZHRVRIQUxGKDAsUnNWKSxmR0VUVUhBTEYoMCxSdFYpKSkp KTtcCisgIGZTRVRXT1JEKDEsUnh4VixmU0FUKGZHRVRXT1JEKDEsUnh4VikgKyBmU0NBTEUoTixm TVBZMTZTVShmR0VUSEFMRigxLFJzViksZkdFVFVIQUxGKDEsUnRWKSkpKSk7XAorICBmQUNDKCk7 XAorfQorUTZJTlNOKE0yX3ZtYWMyc3VfczAsIlJ4eDMyKz12bXB5aHN1KFJzMzIsUnQzMik6c2F0 IixBVFRSSUJTKCksIlZlY3RvciBNdWx0aXBseSIsdm1hY19zZW1hKDApKQorUTZJTlNOKE0yX3Zt YWMyc3VfczEsIlJ4eDMyKz12bXB5aHN1KFJzMzIsUnQzMik6PDwxOnNhdCIsQVRUUklCUygpLCJW ZWN0b3IgTXVsdGlwbHkiLHZtYWNfc2VtYSgxKSkKKworCisKKyN1bmRlZiB2bWFjX3NlbWEKKyNk ZWZpbmUgdm1hY19zZW1hKE4pXAoreyBmU0VUSEFMRigxLFJkVixmR0VUSEFMRigxLChmU0FUKGZT Q0FMRShOLGZNUFkxNlNTKGZHRVRIQUxGKDEsUnNWKSxmR0VUSEFMRigxLFJ0VikpKSArIDB4ODAw MCkpKSk7XAorICBmU0VUSEFMRigwLFJkVixmR0VUSEFMRigxLChmU0FUKGZTQ0FMRShOLGZNUFkx NlNTKGZHRVRIQUxGKDAsUnNWKSxmR0VUSEFMRigwLFJ0VikpKSArIDB4ODAwMCkpKSk7XAorfQor UTZJTlNOKE0yX3ZtcHkyc19zMHBhY2ssIlJkMzI9dm1weWgoUnMzMixSdDMyKTpybmQ6c2F0IixB VFRSSUJTKEFfQVJDSFYyKSwiVmVjdG9yIE11bHRpcGx5Iix2bWFjX3NlbWEoMCkpCitRNklOU04o TTJfdm1weTJzX3MxcGFjaywiUmQzMj12bXB5aChSczMyLFJ0MzIpOjw8MTpybmQ6c2F0IixBVFRS SUJTKEFfQVJDSFYyKSwiVmVjdG9yIE11bHRpcGx5Iix2bWFjX3NlbWEoMSkpCisKKworI3VuZGVm IHZtYWNfc2VtYQorI2RlZmluZSB2bWFjX3NlbWEoTilcCit7IGZTRVRXT1JEKDAsUnh4VixmR0VU V09SRCgwLFJ4eFYpICsgZk1QWTE2U1MoZkdFVEhBTEYoMCxSc1YpLGZHRVRIQUxGKDAsUnRWKSkp O1wKKyAgZlNFVFdPUkQoMSxSeHhWLGZHRVRXT1JEKDEsUnh4VikgKyBmTVBZMTZTUyhmR0VUSEFM RigxLFJzViksZkdFVEhBTEYoMSxSdFYpKSk7XAorICBmQUNDKCk7XAorfQorUTZJTlNOKE0yX3Zt YWMyLCJSeHgzMis9dm1weWgoUnMzMixSdDMyKSIsQVRUUklCUyhBX0FSQ0hWMiksIlZlY3RvciBN dWx0aXBseSIsdm1hY19zZW1hKDApKQorCisjdW5kZWYgdm1hY19zZW1hCisjZGVmaW5lIHZtYWNf c2VtYShOKVwKK3sgZlNFVFdPUkQoMCxSZGRWLGZTQVQoZlNDQUxFKE4sZk1QWTE2U1MoZkdFVEhB TEYoMCxSc3NWKSxmR0VUSEFMRigwLFJ0dFYpKSkpKTtcCisgIGZTRVRXT1JEKDEsUmRkVixmU0FU KGZTQ0FMRShOLGZNUFkxNlNTKGZHRVRIQUxGKDIsUnNzViksZkdFVEhBTEYoMixSdHRWKSkpKSk7 XAorfQorUTZJTlNOKE0yX3ZtcHkyZXNfczAsIlJkZDMyPXZtcHllaChSc3MzMixSdHQzMik6c2F0 IixBVFRSSUJTKCksIlZlY3RvciBNdWx0aXBseSIsdm1hY19zZW1hKDApKQorUTZJTlNOKE0yX3Zt cHkyZXNfczEsIlJkZDMyPXZtcHllaChSc3MzMixSdHQzMik6PDwxOnNhdCIsQVRUUklCUygpLCJW ZWN0b3IgTXVsdGlwbHkiLHZtYWNfc2VtYSgxKSkKKworI3VuZGVmIHZtYWNfc2VtYQorI2RlZmlu ZSB2bWFjX3NlbWEoTilcCit7IGZTRVRXT1JEKDAsUnh4VixmU0FUKGZHRVRXT1JEKDAsUnh4Vikg KyBmU0NBTEUoTixmTVBZMTZTUyhmR0VUSEFMRigwLFJzc1YpLGZHRVRIQUxGKDAsUnR0VikpKSkp O1wKKyAgZlNFVFdPUkQoMSxSeHhWLGZTQVQoZkdFVFdPUkQoMSxSeHhWKSArIGZTQ0FMRShOLGZN UFkxNlNTKGZHRVRIQUxGKDIsUnNzViksZkdFVEhBTEYoMixSdHRWKSkpKSk7XAorICBmQUNDKCk7 XAorfQorUTZJTlNOKE0yX3ZtYWMyZXNfczAsIlJ4eDMyKz12bXB5ZWgoUnNzMzIsUnR0MzIpOnNh dCIsQVRUUklCUygpLCJWZWN0b3IgTXVsdGlwbHkiLHZtYWNfc2VtYSgwKSkKK1E2SU5TTihNMl92 bWFjMmVzX3MxLCJSeHgzMis9dm1weWVoKFJzczMyLFJ0dDMyKTo8PDE6c2F0IixBVFRSSUJTKCks IlZlY3RvciBNdWx0aXBseSIsdm1hY19zZW1hKDEpKQorCisjdW5kZWYgdm1hY19zZW1hCisjZGVm aW5lIHZtYWNfc2VtYShOKVwKK3sgZlNFVFdPUkQoMCxSeHhWLGZHRVRXT1JEKDAsUnh4VikgKyBm TVBZMTZTUyhmR0VUSEFMRigwLFJzc1YpLGZHRVRIQUxGKDAsUnR0VikpKTtcCisgIGZTRVRXT1JE KDEsUnh4VixmR0VUV09SRCgxLFJ4eFYpICsgZk1QWTE2U1MoZkdFVEhBTEYoMixSc3NWKSxmR0VU SEFMRigyLFJ0dFYpKSk7XAorICBmQUNDKCk7XAorfQorUTZJTlNOKE0yX3ZtYWMyZXMsIlJ4eDMy Kz12bXB5ZWgoUnNzMzIsUnR0MzIpIixBVFRSSUJTKEFfQVJDSFYyKSwiVmVjdG9yIE11bHRpcGx5 Iix2bWFjX3NlbWEoMCkpCisKKworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIHZybXB5aCwgYWthIEJpZyBNYWMsIGFrYSBN YWMgRGFkZHksIGFrYSBNYWMtYWMtYWMtYWMgKi8KKy8qIHZlY3RvciBtYWMgIDR4WzE2eDE2XSAr IDY0IC0+NjQgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjdW5kZWYgdm1hY19zZW1h CisjZGVmaW5lIHZtYWNfc2VtYShOKVwKK3sgUnh4ViA9IFJ4eFYgKyBmTVBZMTZTUyhmR0VUSEFM RigwLFJzc1YpLGZHRVRIQUxGKDAsUnR0VikpXAorICAgICAgICAgICAgICArIGZNUFkxNlNTKGZH RVRIQUxGKDEsUnNzViksZkdFVEhBTEYoMSxSdHRWKSlcCisgICAgICAgICAgICAgICsgZk1QWTE2 U1MoZkdFVEhBTEYoMixSc3NWKSxmR0VUSEFMRigyLFJ0dFYpKVwKKyAgICAgICAgICAgICAgKyBm TVBZMTZTUyhmR0VUSEFMRigzLFJzc1YpLGZHRVRIQUxGKDMsUnR0VikpO1wKKyAgZkFDQygpO1wK K30KK1E2SU5TTihNMl92cm1hY19zMCwiUnh4MzIrPXZybXB5aChSc3MzMixSdHQzMikiLEFUVFJJ QlMoKSwiVmVjdG9yIE11bHRpcGx5Iix2bWFjX3NlbWEoMCkpCisKKyN1bmRlZiB2bWFjX3NlbWEK KyNkZWZpbmUgdm1hY19zZW1hKE4pXAoreyBSZGRWID0gZk1QWTE2U1MoZkdFVEhBTEYoMCxSc3NW KSxmR0VUSEFMRigwLFJ0dFYpKVwKKyAgICAgICArIGZNUFkxNlNTKGZHRVRIQUxGKDEsUnNzViks ZkdFVEhBTEYoMSxSdHRWKSlcCisgICAgICAgKyBmTVBZMTZTUyhmR0VUSEFMRigyLFJzc1YpLGZH RVRIQUxGKDIsUnR0VikpXAorICAgICAgICsgZk1QWTE2U1MoZkdFVEhBTEYoMyxSc3NWKSxmR0VU SEFMRigzLFJ0dFYpKTtcCit9CitRNklOU04oTTJfdnJtcHlfczAsIlJkZDMyPXZybXB5aChSc3Mz MixSdHQzMikiLEFUVFJJQlMoKSwiVmVjdG9yIE11bHRpcGx5Iix2bWFjX3NlbWEoMCkpCisKKwor CisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq LworLyogdmVjdG9yIGR1YWwgbWFjcy4ganVzdCBsaWtlIGNvbXBsZXggICAgICAgICAgICAgICAg Ki8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KiovCisKKworLyogV2l0aCByb3VuZCZwYWNrICovCisjdW5kZWYgZG1weV9zZW1hCisjZGVmaW5l IGRtcHlfc2VtYShOKVwKK3sgZlNFVEhBTEYoMCxSZFYsZkdFVEhBTEYoMSwoZlNBVChmU0NBTEUo TixmTVBZMTZTUyhmR0VUSEFMRigwLFJzc1YpLGZHRVRIQUxGKDAsUnR0VikpKSArIFwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmU0NBTEUoTixmTVBZMTZTUyhmR0VUSEFMRigx LFJzc1YpLGZHRVRIQUxGKDEsUnR0VikpKSArIDB4ODAwMCkpKSk7XAorICBmU0VUSEFMRigxLFJk VixmR0VUSEFMRigxLChmU0FUKGZTQ0FMRShOLGZNUFkxNlNTKGZHRVRIQUxGKDIsUnNzViksZkdF VEhBTEYoMixSdHRWKSkpICsgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZT Q0FMRShOLGZNUFkxNlNTKGZHRVRIQUxGKDMsUnNzViksZkdFVEhBTEYoMyxSdHRWKSkpICsgMHg4 MDAwKSkpKTtcCit9CitRNklOU04oTTJfdmRtcHlyc19zMCwiUmQzMj12ZG1weShSc3MzMixSdHQz Mik6cm5kOnNhdCIsQVRUUklCUygpLCAgICAidmVjdG9yIGR1YWwgbWFjIHcvIHJvdW5kJnBhY2si LGRtcHlfc2VtYSgwKSkKK1E2SU5TTihNMl92ZG1weXJzX3MxLCJSZDMyPXZkbXB5KFJzczMyLFJ0 dDMyKTo8PDE6cm5kOnNhdCIsQVRUUklCUygpLCJ2ZWN0b3IgZHVhbCBtYWMgdy8gcm91bmQmcGFj ayIsZG1weV9zZW1hKDEpKQorCisKKworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiB2ZWN0b3IgYnl0ZSBtdWx0aXBsaWVzICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCitRNklOU04oTTVfdnJtcHlidXUsIlJk ZDMyPXZybXB5YnUoUnNzMzIsUnR0MzIpIixBVFRSSUJTKCksCisgInZlY3RvciBkdWFsIG1weSBi eXRlcyIsCit7CisgIGZTRVRXT1JEKDAsUmRkViwoZk1QWTE2U1MoZkdFVFVCWVRFKDAsUnNzViks ZkdFVFVCWVRFKDAsUnR0VikpICsKKwkJICAgZk1QWTE2U1MoZkdFVFVCWVRFKDEsUnNzViksZkdF VFVCWVRFKDEsUnR0VikpICsKKwkJICAgZk1QWTE2U1MoZkdFVFVCWVRFKDIsUnNzViksZkdFVFVC WVRFKDIsUnR0VikpICsKKwkJICAgZk1QWTE2U1MoZkdFVFVCWVRFKDMsUnNzViksZkdFVFVCWVRF KDMsUnR0VikpKSk7CisgIGZTRVRXT1JEKDEsUmRkViwoZk1QWTE2U1MoZkdFVFVCWVRFKDQsUnNz ViksZkdFVFVCWVRFKDQsUnR0VikpICsKKwkJICAgZk1QWTE2U1MoZkdFVFVCWVRFKDUsUnNzViks ZkdFVFVCWVRFKDUsUnR0VikpICsKKwkJICAgZk1QWTE2U1MoZkdFVFVCWVRFKDYsUnNzViksZkdF VFVCWVRFKDYsUnR0VikpICsKKwkJICAgZk1QWTE2U1MoZkdFVFVCWVRFKDcsUnNzViksZkdFVFVC WVRFKDcsUnR0VikpKSk7CisgfSkKKworUTZJTlNOKE01X3ZybWFjYnV1LCJSeHgzMis9dnJtcHli dShSc3MzMixSdHQzMikiLEFUVFJJQlMoKSwKKyAidmVjdG9yIGR1YWwgbWFjIGJ5dGVzIiwKK3sK KyAgZlNFVFdPUkQoMCxSeHhWLChmR0VUV09SRCgwLFJ4eFYpICsKKwkgICAgICAgICAgIGZNUFkx NlNTKGZHRVRVQllURSgwLFJzc1YpLGZHRVRVQllURSgwLFJ0dFYpKSArCisJCSAgIGZNUFkxNlNT KGZHRVRVQllURSgxLFJzc1YpLGZHRVRVQllURSgxLFJ0dFYpKSArCisJCSAgIGZNUFkxNlNTKGZH RVRVQllURSgyLFJzc1YpLGZHRVRVQllURSgyLFJ0dFYpKSArCisJCSAgIGZNUFkxNlNTKGZHRVRV QllURSgzLFJzc1YpLGZHRVRVQllURSgzLFJ0dFYpKSkpOworICBmU0VUV09SRCgxLFJ4eFYsKGZH RVRXT1JEKDEsUnh4VikgKworCQkgICBmTVBZMTZTUyhmR0VUVUJZVEUoNCxSc3NWKSxmR0VUVUJZ VEUoNCxSdHRWKSkgKworCQkgICBmTVBZMTZTUyhmR0VUVUJZVEUoNSxSc3NWKSxmR0VUVUJZVEUo NSxSdHRWKSkgKworCQkgICBmTVBZMTZTUyhmR0VUVUJZVEUoNixSc3NWKSxmR0VUVUJZVEUoNixS dHRWKSkgKworCQkgICBmTVBZMTZTUyhmR0VUVUJZVEUoNyxSc3NWKSxmR0VUVUJZVEUoNyxSdHRW KSkpKTsKKyAgZkFDQygpO1wKKyB9KQorCisKK1E2SU5TTihNNV92cm1weWJzdSwiUmRkMzI9dnJt cHlic3UoUnNzMzIsUnR0MzIpIixBVFRSSUJTKCksCisgInZlY3RvciBkdWFsIG1weSBieXRlcyIs Cit7CisgIGZTRVRXT1JEKDAsUmRkViwoZk1QWTE2U1MoZkdFVEJZVEUoMCxSc3NWKSxmR0VUVUJZ VEUoMCxSdHRWKSkgKworCQkgICBmTVBZMTZTUyhmR0VUQllURSgxLFJzc1YpLGZHRVRVQllURSgx LFJ0dFYpKSArCisJCSAgIGZNUFkxNlNTKGZHRVRCWVRFKDIsUnNzViksZkdFVFVCWVRFKDIsUnR0 VikpICsKKwkJICAgZk1QWTE2U1MoZkdFVEJZVEUoMyxSc3NWKSxmR0VUVUJZVEUoMyxSdHRWKSkp KTsKKyAgZlNFVFdPUkQoMSxSZGRWLChmTVBZMTZTUyhmR0VUQllURSg0LFJzc1YpLGZHRVRVQllU RSg0LFJ0dFYpKSArCisJCSAgIGZNUFkxNlNTKGZHRVRCWVRFKDUsUnNzViksZkdFVFVCWVRFKDUs UnR0VikpICsKKwkJICAgZk1QWTE2U1MoZkdFVEJZVEUoNixSc3NWKSxmR0VUVUJZVEUoNixSdHRW KSkgKworCQkgICBmTVBZMTZTUyhmR0VUQllURSg3LFJzc1YpLGZHRVRVQllURSg3LFJ0dFYpKSkp OworIH0pCisKK1E2SU5TTihNNV92cm1hY2JzdSwiUnh4MzIrPXZybXB5YnN1KFJzczMyLFJ0dDMy KSIsQVRUUklCUygpLAorICJ2ZWN0b3IgZHVhbCBtYWMgYnl0ZXMiLAoreworICBmU0VUV09SRCgw LFJ4eFYsKGZHRVRXT1JEKDAsUnh4VikgKworCQkgICBmTVBZMTZTUyhmR0VUQllURSgwLFJzc1Yp LGZHRVRVQllURSgwLFJ0dFYpKSArCisJCSAgIGZNUFkxNlNTKGZHRVRCWVRFKDEsUnNzViksZkdF VFVCWVRFKDEsUnR0VikpICsKKwkJICAgZk1QWTE2U1MoZkdFVEJZVEUoMixSc3NWKSxmR0VUVUJZ VEUoMixSdHRWKSkgKworCQkgICBmTVBZMTZTUyhmR0VUQllURSgzLFJzc1YpLGZHRVRVQllURSgz LFJ0dFYpKSkpOworICBmU0VUV09SRCgxLFJ4eFYsKGZHRVRXT1JEKDEsUnh4VikgKworCQkgICBm TVBZMTZTUyhmR0VUQllURSg0LFJzc1YpLGZHRVRVQllURSg0LFJ0dFYpKSArCisJCSAgIGZNUFkx NlNTKGZHRVRCWVRFKDUsUnNzViksZkdFVFVCWVRFKDUsUnR0VikpICsKKwkJICAgZk1QWTE2U1Mo ZkdFVEJZVEUoNixSc3NWKSxmR0VUVUJZVEUoNixSdHRWKSkgKworCQkgICBmTVBZMTZTUyhmR0VU QllURSg3LFJzc1YpLGZHRVRVQllURSg3LFJ0dFYpKSkpOworICBmQUNDKCk7XAorIH0pCisKKwor UTZJTlNOKE01X3ZtcHlidXUsIlJkZDMyPXZtcHlidShSczMyLFJ0MzIpIixBVFRSSUJTKCksCisg InZlY3RvciBtcHkgYnl0ZXMiLAoreworICBmU0VUSEFMRigwLFJkZFYsKGZNUFkxNlNTKGZHRVRV QllURSgwLFJzViksZkdFVFVCWVRFKDAsUnRWKSkpKTsKKyAgZlNFVEhBTEYoMSxSZGRWLChmTVBZ MTZTUyhmR0VUVUJZVEUoMSxSc1YpLGZHRVRVQllURSgxLFJ0VikpKSk7CisgIGZTRVRIQUxGKDIs UmRkViwoZk1QWTE2U1MoZkdFVFVCWVRFKDIsUnNWKSxmR0VUVUJZVEUoMixSdFYpKSkpOworICBm U0VUSEFMRigzLFJkZFYsKGZNUFkxNlNTKGZHRVRVQllURSgzLFJzViksZkdFVFVCWVRFKDMsUnRW KSkpKTsKKyB9KQorCitRNklOU04oTTVfdm1weWJzdSwiUmRkMzI9dm1weWJzdShSczMyLFJ0MzIp IixBVFRSSUJTKCksCisgInZlY3RvciBtcHkgYnl0ZXMiLAoreworICBmU0VUSEFMRigwLFJkZFYs KGZNUFkxNlNTKGZHRVRCWVRFKDAsUnNWKSxmR0VUVUJZVEUoMCxSdFYpKSkpOworICBmU0VUSEFM RigxLFJkZFYsKGZNUFkxNlNTKGZHRVRCWVRFKDEsUnNWKSxmR0VUVUJZVEUoMSxSdFYpKSkpOwor ICBmU0VUSEFMRigyLFJkZFYsKGZNUFkxNlNTKGZHRVRCWVRFKDIsUnNWKSxmR0VUVUJZVEUoMixS dFYpKSkpOworICBmU0VUSEFMRigzLFJkZFYsKGZNUFkxNlNTKGZHRVRCWVRFKDMsUnNWKSxmR0VU VUJZVEUoMyxSdFYpKSkpOworIH0pCisKKworUTZJTlNOKE01X3ZtYWNidXUsIlJ4eDMyKz12bXB5 YnUoUnMzMixSdDMyKSIsQVRUUklCUygpLAorICJ2ZWN0b3IgbWFjIGJ5dGVzIiwKK3sKKyAgZlNF VEhBTEYoMCxSeHhWLChmR0VUSEFMRigwLFJ4eFYpK2ZNUFkxNlNTKGZHRVRVQllURSgwLFJzViks ZkdFVFVCWVRFKDAsUnRWKSkpKTsKKyAgZlNFVEhBTEYoMSxSeHhWLChmR0VUSEFMRigxLFJ4eFYp K2ZNUFkxNlNTKGZHRVRVQllURSgxLFJzViksZkdFVFVCWVRFKDEsUnRWKSkpKTsKKyAgZlNFVEhB TEYoMixSeHhWLChmR0VUSEFMRigyLFJ4eFYpK2ZNUFkxNlNTKGZHRVRVQllURSgyLFJzViksZkdF VFVCWVRFKDIsUnRWKSkpKTsKKyAgZlNFVEhBTEYoMyxSeHhWLChmR0VUSEFMRigzLFJ4eFYpK2ZN UFkxNlNTKGZHRVRVQllURSgzLFJzViksZkdFVFVCWVRFKDMsUnRWKSkpKTsKKyAgZkFDQygpO1wK KyB9KQorCitRNklOU04oTTVfdm1hY2JzdSwiUnh4MzIrPXZtcHlic3UoUnMzMixSdDMyKSIsQVRU UklCUygpLAorICJ2ZWN0b3IgbWFjIGJ5dGVzIiwKK3sKKyAgZlNFVEhBTEYoMCxSeHhWLChmR0VU SEFMRigwLFJ4eFYpK2ZNUFkxNlNTKGZHRVRCWVRFKDAsUnNWKSxmR0VUVUJZVEUoMCxSdFYpKSkp OworICBmU0VUSEFMRigxLFJ4eFYsKGZHRVRIQUxGKDEsUnh4VikrZk1QWTE2U1MoZkdFVEJZVEUo MSxSc1YpLGZHRVRVQllURSgxLFJ0VikpKSk7CisgIGZTRVRIQUxGKDIsUnh4ViwoZkdFVEhBTEYo MixSeHhWKStmTVBZMTZTUyhmR0VUQllURSgyLFJzViksZkdFVFVCWVRFKDIsUnRWKSkpKTsKKyAg ZlNFVEhBTEYoMyxSeHhWLChmR0VUSEFMRigzLFJ4eFYpK2ZNUFkxNlNTKGZHRVRCWVRFKDMsUnNW KSxmR0VUVUJZVEUoMyxSdFYpKSkpOworICBmQUNDKCk7XAorIH0pCisKKworCitRNklOU04oTTVf dmRtcHlic3UsIlJkZDMyPXZkbXB5YnN1KFJzczMyLFJ0dDMyKTpzYXQiLEFUVFJJQlMoKSwKKyAi dmVjdG9yIHF1YWQgbXB5IGJ5dGVzIiwKK3sKKyAgZlNFVEhBTEYoMCxSZGRWLGZTQVROKDE2LChm TVBZMTZTUyhmR0VUQllURSgwLFJzc1YpLGZHRVRVQllURSgwLFJ0dFYpKSArCisgICAgICAgICAJ CSAgIGZNUFkxNlNTKGZHRVRCWVRFKDEsUnNzViksZkdFVFVCWVRFKDEsUnR0VikpKSkpOworICBm U0VUSEFMRigxLFJkZFYsZlNBVE4oMTYsKGZNUFkxNlNTKGZHRVRCWVRFKDIsUnNzViksZkdFVFVC WVRFKDIsUnR0VikpICsKKyAgICAgICAgIAkJICAgZk1QWTE2U1MoZkdFVEJZVEUoMyxSc3NWKSxm R0VUVUJZVEUoMyxSdHRWKSkpKSk7CisgIGZTRVRIQUxGKDIsUmRkVixmU0FUTigxNiwoZk1QWTE2 U1MoZkdFVEJZVEUoNCxSc3NWKSxmR0VUVUJZVEUoNCxSdHRWKSkgKworICAgICAgICAgCQkgICBm TVBZMTZTUyhmR0VUQllURSg1LFJzc1YpLGZHRVRVQllURSg1LFJ0dFYpKSkpKTsKKyAgZlNFVEhB TEYoMyxSZGRWLGZTQVROKDE2LChmTVBZMTZTUyhmR0VUQllURSg2LFJzc1YpLGZHRVRVQllURSg2 LFJ0dFYpKSArCisgICAgICAgICAJCSAgIGZNUFkxNlNTKGZHRVRCWVRFKDcsUnNzViksZkdFVFVC WVRFKDcsUnR0VikpKSkpOworIH0pCisKKworUTZJTlNOKE01X3ZkbWFjYnN1LCJSeHgzMis9dmRt cHlic3UoUnNzMzIsUnR0MzIpOnNhdCIsQVRUUklCUygpLAorICJ2ZWN0b3IgcXVhZCBtYWMgYnl0 ZXMiLAoreworICBmU0VUSEFMRigwLFJ4eFYsZlNBVE4oMTYsKGZHRVRIQUxGKDAsUnh4VikgKwor CQkgICBmTVBZMTZTUyhmR0VUQllURSgwLFJzc1YpLGZHRVRVQllURSgwLFJ0dFYpKSArCisJCSAg IGZNUFkxNlNTKGZHRVRCWVRFKDEsUnNzViksZkdFVFVCWVRFKDEsUnR0VikpKSkpOworICBmU0VU SEFMRigxLFJ4eFYsZlNBVE4oMTYsKGZHRVRIQUxGKDEsUnh4VikgKworCQkgICBmTVBZMTZTUyhm R0VUQllURSgyLFJzc1YpLGZHRVRVQllURSgyLFJ0dFYpKSArCisJCSAgIGZNUFkxNlNTKGZHRVRC WVRFKDMsUnNzViksZkdFVFVCWVRFKDMsUnR0VikpKSkpOworICBmU0VUSEFMRigyLFJ4eFYsZlNB VE4oMTYsKGZHRVRIQUxGKDIsUnh4VikgKworCQkgICBmTVBZMTZTUyhmR0VUQllURSg0LFJzc1Yp LGZHRVRVQllURSg0LFJ0dFYpKSArCisJCSAgIGZNUFkxNlNTKGZHRVRCWVRFKDUsUnNzViksZkdF VFVCWVRFKDUsUnR0VikpKSkpOworICBmU0VUSEFMRigzLFJ4eFYsZlNBVE4oMTYsKGZHRVRIQUxG KDMsUnh4VikgKworCQkgICBmTVBZMTZTUyhmR0VUQllURSg2LFJzc1YpLGZHRVRVQllURSg2LFJ0 dFYpKSArCisJCSAgIGZNUFkxNlNTKGZHRVRCWVRFKDcsUnNzViksZkdFVFVCWVRFKDcsUnR0Vikp KSkpOworICBmQUNDKCk7XAorIH0pCisKKworCisvKiBGdWxsIHZlcnNpb24gKi8KKyN1bmRlZiBk bXB5X3NlbWEKKyNkZWZpbmUgZG1weV9zZW1hKE4pXAoreyBmU0VUV09SRCgwLFJ4eFYsZlNBVChm R0VUV09SRCgwLFJ4eFYpICsgZlNDQUxFKE4sZk1QWTE2U1MoZkdFVEhBTEYoMCxSc3NWKSxmR0VU SEFMRigwLFJ0dFYpKSkgKyBcCisgICAgICAgICAgICAgICAgICAgICBmU0NBTEUoTixmTVBZMTZT UyhmR0VUSEFMRigxLFJzc1YpLGZHRVRIQUxGKDEsUnR0VikpKSkpO1wKKyAgZlNFVFdPUkQoMSxS eHhWLGZTQVQoZkdFVFdPUkQoMSxSeHhWKSArIGZTQ0FMRShOLGZNUFkxNlNTKGZHRVRIQUxGKDIs UnNzViksZkdFVEhBTEYoMixSdHRWKSkpICsgXAorICAgICAgICAgICAgICAgICAgICAgZlNDQUxF KE4sZk1QWTE2U1MoZkdFVEhBTEYoMyxSc3NWKSxmR0VUSEFMRigzLFJ0dFYpKSkpKTtcCisgIGZB Q0MoKTtcCit9CitRNklOU04oTTJfdmRtYWNzX3MwLCJSeHgzMis9dmRtcHkoUnNzMzIsUnR0MzIp OnNhdCIsQVRUUklCUygpLCAgICAiIixkbXB5X3NlbWEoMCkpCitRNklOU04oTTJfdmRtYWNzX3Mx LCJSeHgzMis9dmRtcHkoUnNzMzIsUnR0MzIpOjw8MTpzYXQiLEFUVFJJQlMoKSwiIixkbXB5X3Nl bWEoMSkpCisKKyN1bmRlZiBkbXB5X3NlbWEKKyNkZWZpbmUgZG1weV9zZW1hKE4pXAoreyBmU0VU V09SRCgwLFJkZFYsZlNBVChmU0NBTEUoTixmTVBZMTZTUyhmR0VUSEFMRigwLFJzc1YpLGZHRVRI QUxGKDAsUnR0VikpKSArIFwKKyAgICAgICAgICAgICAgZlNDQUxFKE4sZk1QWTE2U1MoZkdFVEhB TEYoMSxSc3NWKSxmR0VUSEFMRigxLFJ0dFYpKSkpKTtcCisgIGZTRVRXT1JEKDEsUmRkVixmU0FU KGZTQ0FMRShOLGZNUFkxNlNTKGZHRVRIQUxGKDIsUnNzViksZkdFVEhBTEYoMixSdHRWKSkpICsg XAorICAgICAgICAgICAgICBmU0NBTEUoTixmTVBZMTZTUyhmR0VUSEFMRigzLFJzc1YpLGZHRVRI QUxGKDMsUnR0VikpKSkpO1wKK30KKworUTZJTlNOKE0yX3ZkbXB5c19zMCwiUmRkMzI9dmRtcHko UnNzMzIsUnR0MzIpOnNhdCIsQVRUUklCUygpLCAgICAiIixkbXB5X3NlbWEoMCkpCitRNklOU04o TTJfdmRtcHlzX3MxLCJSZGQzMj12ZG1weShSc3MzMixSdHQzMik6PDwxOnNhdCIsQVRUUklCUygp LCIiLGRtcHlfc2VtYSgxKSkKKworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKiovCisvKiBjb21wbGV4IG11bHRpcGx5L21hYyB3aXRoICAg ICAgICAgICAgICAgICAgICAgICAgICAqLworLyogcmVhbCZpbWFnIGFyZSBwYWNrZWQgdG9nZXRo ZXIgYW5kIGFsd2F5cyBzYXR1cmF0ZWQgKi8KKy8qIHRvIHByb3RlY3QgYWdhaW5zdCBvdmVyZmxv dy4gICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjdW5kZWYgY21weV9zZW1hCisjZGVmaW5l IGNtcHlfc2VtYShOLENPTkpNSU5VUyxDT05KUExVUylcCit7IGZTRVRIQUxGKDEsUmRWLGZHRVRI QUxGKDEsKGZTQVQoZlNDQUxFKE4sZk1QWTE2U1MoZkdFVEhBTEYoMSxSc1YpLGZHRVRIQUxGKDAs UnRWKSkpIENPTkpNSU5VUyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZlND QUxFKE4sZk1QWTE2U1MoZkdFVEhBTEYoMCxSc1YpLGZHRVRIQUxGKDEsUnRWKSkpICsgMHg4MDAw KSkpKTtcCisgIGZTRVRIQUxGKDAsUmRWLGZHRVRIQUxGKDEsKGZTQVQoZlNDQUxFKE4sZk1QWTE2 U1MoZkdFVEhBTEYoMCxSc1YpLGZHRVRIQUxGKDAsUnRWKSkpIENPTkpQTFVTIFwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBmU0NBTEUoTixmTVBZMTZTUyhmR0VUSEFMRigxLFJz ViksZkdFVEhBTEYoMSxSdFYpKSkgKyAweDgwMDApKSkpO1wKK30KK1E2SU5TTihNMl9jbXB5cnNf czAsIlJkMzI9Y21weShSczMyLFJ0MzIpOnJuZDpzYXQiLEFUVFJJQlMoKSwgICAgIkNvbXBsZXgg TXVsdGlwbHkiLGNtcHlfc2VtYSgwLCssLSkpCitRNklOU04oTTJfY21weXJzX3MxLCJSZDMyPWNt cHkoUnMzMixSdDMyKTo8PDE6cm5kOnNhdCIsQVRUUklCUygpLCJDb21wbGV4IE11bHRpcGx5Iixj bXB5X3NlbWEoMSwrLC0pKQorCisKK1E2SU5TTihNMl9jbXB5cnNjX3MwLCJSZDMyPWNtcHkoUnMz MixSdDMyKik6cm5kOnNhdCIsQVRUUklCUyhBX0FSQ0hWMiksICAgICJDb21wbGV4IE11bHRpcGx5 IixjbXB5X3NlbWEoMCwtLCspKQorUTZJTlNOKE0yX2NtcHlyc2NfczEsIlJkMzI9Y21weShSczMy LFJ0MzIqKTo8PDE6cm5kOnNhdCIsQVRUUklCUyhBX0FSQ0hWMiksIkNvbXBsZXggTXVsdGlwbHki LGNtcHlfc2VtYSgxLC0sKykpCisKKworI3VuZGVmIGNtcHlfc2VtYQorI2RlZmluZSBjbXB5X3Nl bWEoTixDT05KTUlOVVMsQ09OSlBMVVMpXAoreyBmU0VUV09SRCgxLFJ4eFYsZlNBVChmR0VUV09S RCgxLFJ4eFYpICsgZlNDQUxFKE4sZk1QWTE2U1MoZkdFVEhBTEYoMSxSc1YpLGZHRVRIQUxGKDAs UnRWKSkpIENPTkpNSU5VUyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBmU0NBTEUoTixmTVBZMTZTUyhmR0VUSEFMRigwLFJzViksZkdFVEhBTEYoMSxSdFYpKSkp KTtcCisgIGZTRVRXT1JEKDAsUnh4VixmU0FUKGZHRVRXT1JEKDAsUnh4VikgKyBmU0NBTEUoTixm TVBZMTZTUyhmR0VUSEFMRigwLFJzViksZkdFVEhBTEYoMCxSdFYpKSkgQ09OSlBMVVMgXAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZlNDQUxFKE4sZk1QWTE2U1Mo ZkdFVEhBTEYoMSxSc1YpLGZHRVRIQUxGKDEsUnRWKSkpKSk7XAorICBmQUNDKCk7XAorfQorUTZJ TlNOKE0yX2NtYWNzX3MwLCJSeHgzMis9Y21weShSczMyLFJ0MzIpOnNhdCIsQVRUUklCUygpLCAg ICAiQ29tcGxleCBNdWx0aXBseSIsY21weV9zZW1hKDAsKywtKSkKK1E2SU5TTihNMl9jbWFjc19z MSwiUnh4MzIrPWNtcHkoUnMzMixSdDMyKTo8PDE6c2F0IixBVFRSSUJTKCksIkNvbXBsZXggTXVs dGlwbHkiLGNtcHlfc2VtYSgxLCssLSkpCisKKy8qIEVKUDogTmVlZCBtYWMgdmVyc2lvbnMgdy8g Q09OSiBUPyAqLworUTZJTlNOKE0yX2NtYWNzY19zMCwiUnh4MzIrPWNtcHkoUnMzMixSdDMyKik6 c2F0IixBVFRSSUJTKEFfQVJDSFYyKSwgICAgIkNvbXBsZXggTXVsdGlwbHkiLGNtcHlfc2VtYSgw LC0sKykpCitRNklOU04oTTJfY21hY3NjX3MxLCJSeHgzMis9Y21weShSczMyLFJ0MzIqKTo8PDE6 c2F0IixBVFRSSUJTKEFfQVJDSFYyKSwiQ29tcGxleCBNdWx0aXBseSIsY21weV9zZW1hKDEsLSwr KSkKKworCisjdW5kZWYgY21weV9zZW1hCisjZGVmaW5lIGNtcHlfc2VtYShOLENPTkpNSU5VUyxD T05KUExVUylcCit7IGZTRVRXT1JEKDEsUmRkVixmU0FUKGZTQ0FMRShOLGZNUFkxNlNTKGZHRVRI QUxGKDEsUnNWKSxmR0VUSEFMRigwLFJ0VikpKSBDT05KTUlOVVMgXAorICAgICAgICAgICAgICAg ICAgICAgICBmU0NBTEUoTixmTVBZMTZTUyhmR0VUSEFMRigwLFJzViksZkdFVEhBTEYoMSxSdFYp KSkpKTtcCisgIGZTRVRXT1JEKDAsUmRkVixmU0FUKGZTQ0FMRShOLGZNUFkxNlNTKGZHRVRIQUxG KDAsUnNWKSxmR0VUSEFMRigwLFJ0VikpKSBDT05KUExVUyBcCisgICAgICAgICAgICAgICAgICAg ICAgIGZTQ0FMRShOLGZNUFkxNlNTKGZHRVRIQUxGKDEsUnNWKSxmR0VUSEFMRigxLFJ0VikpKSkp O1wKK30KKworUTZJTlNOKE0yX2NtcHlzX3MwLCJSZGQzMj1jbXB5KFJzMzIsUnQzMik6c2F0IixB VFRSSUJTKCksICAgICJDb21wbGV4IE11bHRpcGx5IixjbXB5X3NlbWEoMCwrLC0pKQorUTZJTlNO KE0yX2NtcHlzX3MxLCJSZGQzMj1jbXB5KFJzMzIsUnQzMik6PDwxOnNhdCIsQVRUUklCUygpLCJD b21wbGV4IE11bHRpcGx5IixjbXB5X3NlbWEoMSwrLC0pKQorCitRNklOU04oTTJfY21weXNjX3Mw LCJSZGQzMj1jbXB5KFJzMzIsUnQzMiopOnNhdCIsQVRUUklCUyhBX0FSQ0hWMiksICAgICJDb21w bGV4IE11bHRpcGx5IixjbXB5X3NlbWEoMCwtLCspKQorUTZJTlNOKE0yX2NtcHlzY19zMSwiUmRk MzI9Y21weShSczMyLFJ0MzIqKTo8PDE6c2F0IixBVFRSSUJTKEFfQVJDSFYyKSwiQ29tcGxleCBN dWx0aXBseSIsY21weV9zZW1hKDEsLSwrKSkKKworCisKKyN1bmRlZiBjbXB5X3NlbWEKKyNkZWZp bmUgY21weV9zZW1hKE4sQ09OSk1JTlVTLENPTkpQTFVTKVwKK3sgZlNFVFdPUkQoMSxSeHhWLGZT QVQoZkdFVFdPUkQoMSxSeHhWKSAtIChmU0NBTEUoTixmTVBZMTZTUyhmR0VUSEFMRigxLFJzViks ZkdFVEhBTEYoMCxSdFYpKSkgQ09OSk1JTlVTIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBmU0NBTEUoTixmTVBZMTZTUyhmR0VUSEFMRigwLFJzViksZkdFVEhB TEYoMSxSdFYpKSkpKSk7XAorICBmU0VUV09SRCgwLFJ4eFYsZlNBVChmR0VUV09SRCgwLFJ4eFYp IC0gKGZTQ0FMRShOLGZNUFkxNlNTKGZHRVRIQUxGKDAsUnNWKSxmR0VUSEFMRigwLFJ0VikpKSBD T05KUExVUyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZlND QUxFKE4sZk1QWTE2U1MoZkdFVEhBTEYoMSxSc1YpLGZHRVRIQUxGKDEsUnRWKSkpKSkpO1wKKyAg ZkFDQygpO1wKK30KK1E2SU5TTihNMl9jbmFjc19zMCwiUnh4MzItPWNtcHkoUnMzMixSdDMyKTpz YXQiLEFUVFJJQlMoQV9BUkNIVjIpLCAgICAiQ29tcGxleCBNdWx0aXBseSIsY21weV9zZW1hKDAs KywtKSkKK1E2SU5TTihNMl9jbmFjc19zMSwiUnh4MzItPWNtcHkoUnMzMixSdDMyKTo8PDE6c2F0 IixBVFRSSUJTKEFfQVJDSFYyKSwiQ29tcGxleCBNdWx0aXBseSIsY21weV9zZW1hKDEsKywtKSkK KworLyogRUpQOiBuZWVkIENPTkogdmVyc2lvbnM/ICovCitRNklOU04oTTJfY25hY3NjX3MwLCJS eHgzMi09Y21weShSczMyLFJ0MzIqKTpzYXQiLEFUVFJJQlMoQV9BUkNIVjIpLCAgICAiQ29tcGxl eCBNdWx0aXBseSIsY21weV9zZW1hKDAsLSwrKSkKK1E2SU5TTihNMl9jbmFjc2NfczEsIlJ4eDMy LT1jbXB5KFJzMzIsUnQzMiopOjw8MTpzYXQiLEFUVFJJQlMoQV9BUkNIVjIpLCJDb21wbGV4IE11 bHRpcGx5IixjbXB5X3NlbWEoMSwtLCspKQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiBjb21wbGV4IGludGVycG9sYXRpb24g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogR2l2ZW4gYSBwYWlyIG9mIGNvbXBs ZXggdmFsdWVzLCBzY2FsZSBieSBhLGIsIHN1bSAgKi8KKy8qIFNhdHVyYXRlL3NoaWZ0MSBhbmQg cm91bmQvcGFjayAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjdW5kZWYgdnJjbXB5c19zZW1h CisjZGVmaW5lIHZyY21weXNfc2VtYShOLElOV09SRCkgXAoreyBmU0VUV09SRCgxLFJkZFYsZlNB VChmU0NBTEUoTixmTVBZMTZTUyhmR0VUSEFMRigxLFJzc1YpLGZHRVRIQUxGKDAsSU5XT1JEKSkp ICsgXAorICAgICAgICAgICAgICAgICAgICAgICBmU0NBTEUoTixmTVBZMTZTUyhmR0VUSEFMRigz LFJzc1YpLGZHRVRIQUxGKDEsSU5XT1JEKSkpKSk7XAorICBmU0VUV09SRCgwLFJkZFYsZlNBVChm U0NBTEUoTixmTVBZMTZTUyhmR0VUSEFMRigwLFJzc1YpLGZHRVRIQUxGKDAsSU5XT1JEKSkpICsg XAorICAgICAgICAgICAgICAgICAgICAgICBmU0NBTEUoTixmTVBZMTZTUyhmR0VUSEFMRigyLFJz c1YpLGZHRVRIQUxGKDEsSU5XT1JEKSkpKSk7XAorfQorCisKKworUTZJTlNOKE0yX3ZyY21weXNf czFfaCwiUmRkMzI9dnJjbXB5cyhSc3MzMixSdHQzMik6PDwxOnNhdDpyYXc6aGkiLEFUVFJJQlMo QV9BUkNIVjMpLCAiVmVjdG9yIFJlZHVjZSBDb21wbGV4IE11bHRpcGx5IGJ5IFNjYWxhciIsdnJj bXB5c19zZW1hKDEsZkdFVFdPUkQoMSxSdHRWKSkpCitRNklOU04oTTJfdnJjbXB5c19zMV9sLCJS ZGQzMj12cmNtcHlzKFJzczMyLFJ0dDMyKTo8PDE6c2F0OnJhdzpsbyIsQVRUUklCUyhBX0FSQ0hW MyksICJWZWN0b3IgUmVkdWNlIENvbXBsZXggTXVsdGlwbHkgYnkgU2NhbGFyIix2cmNtcHlzX3Nl bWEoMSxmR0VUV09SRCgwLFJ0dFYpKSkKKworREVGX1YzX0NPTkRfTUFQUElORyhNMl92cmNtcHlz X3MxLCJSZGQzMj12cmNtcHlzKFJzczMyLFJ0MzIpOjw8MTpzYXQiLCJSdDMyICYgMSIsIlJkZDMy PXZyY21weXMoUnNzMzIsUnR0MzIpOjw8MTpzYXQ6cmF3OmhpIiwiUmRkMzI9dnJjbXB5cyhSc3Mz MixSdHQzMik6PDwxOnNhdDpyYXc6bG8iKQorCisjdW5kZWYgdnJjbXB5c19zZW1hCisjZGVmaW5l IHZyY21weXNfc2VtYShOLElOV09SRCkgXAoreyBmU0VUV09SRCgxLFJ4eFYsZlNBVChmR0VUV09S RCgxLFJ4eFYpICsgZlNDQUxFKE4sZk1QWTE2U1MoZkdFVEhBTEYoMSxSc3NWKSxmR0VUSEFMRigw LElOV09SRCkpKSArIFwKKyAgICAgICAgICAgICAgICAgICAgICAgZlNDQUxFKE4sZk1QWTE2U1Mo ZkdFVEhBTEYoMyxSc3NWKSxmR0VUSEFMRigxLElOV09SRCkpKSkpO1wKKyAgZlNFVFdPUkQoMCxS eHhWLGZTQVQoZkdFVFdPUkQoMCxSeHhWKSArIGZTQ0FMRShOLGZNUFkxNlNTKGZHRVRIQUxGKDAs UnNzViksZkdFVEhBTEYoMCxJTldPUkQpKSkgKyBcCisgICAgICAgICAgICAgICAgICAgICAgIGZT Q0FMRShOLGZNUFkxNlNTKGZHRVRIQUxGKDIsUnNzViksZkdFVEhBTEYoMSxJTldPUkQpKSkpKTtc CisgIGZBQ0MoKTtcCit9CisKKworCitRNklOU04oTTJfdnJjbXB5c19hY2NfczFfaCwiUnh4MzIr PXZyY21weXMoUnNzMzIsUnR0MzIpOjw8MTpzYXQ6cmF3OmhpIixBVFRSSUJTKEFfQVJDSFYzKSwg IlZlY3RvciBSZWR1Y2UgQ29tcGxleCBNdWx0aXBseSBieSBTY2FsYXIiLHZyY21weXNfc2VtYSgx LGZHRVRXT1JEKDEsUnR0VikpKQorUTZJTlNOKE0yX3ZyY21weXNfYWNjX3MxX2wsIlJ4eDMyKz12 cmNtcHlzKFJzczMyLFJ0dDMyKTo8PDE6c2F0OnJhdzpsbyIsQVRUUklCUyhBX0FSQ0hWMyksICJW ZWN0b3IgUmVkdWNlIENvbXBsZXggTXVsdGlwbHkgYnkgU2NhbGFyIix2cmNtcHlzX3NlbWEoMSxm R0VUV09SRCgwLFJ0dFYpKSkKKworREVGX1YzX0NPTkRfTUFQUElORyhNMl92cmNtcHlzX2FjY19z MSwiUnh4MzIrPXZyY21weXMoUnNzMzIsUnQzMik6PDwxOnNhdCIsIlJ0MzIgJiAxIiwiUnh4MzIr PXZyY21weXMoUnNzMzIsUnR0MzIpOjw8MTpzYXQ6cmF3OmhpIiwiUnh4MzIrPXZyY21weXMoUnNz MzIsUnR0MzIpOjw8MTpzYXQ6cmF3OmxvIikKKworCisjdW5kZWYgdnJjbXB5c19zZW1hCisjZGVm aW5lIHZyY21weXNfc2VtYShOLElOV09SRCkgXAoreyBmU0VUSEFMRigxLFJkVixmR0VUSEFMRigx LGZTQVQoZlNDQUxFKE4sZk1QWTE2U1MoZkdFVEhBTEYoMSxSc3NWKSxmR0VUSEFMRigwLElOV09S RCkpKSArIFwKKyAgICAgICAgICAgICAgICAgICAgICAgZlNDQUxFKE4sZk1QWTE2U1MoZkdFVEhB TEYoMyxSc3NWKSxmR0VUSEFMRigxLElOV09SRCkpKSArIDB4ODAwMCkpKTtcCisgIGZTRVRIQUxG KDAsUmRWLGZHRVRIQUxGKDEsZlNBVChmU0NBTEUoTixmTVBZMTZTUyhmR0VUSEFMRigwLFJzc1Yp LGZHRVRIQUxGKDAsSU5XT1JEKSkpICsgXAorICAgICAgICAgICAgICAgICAgICAgICBmU0NBTEUo TixmTVBZMTZTUyhmR0VUSEFMRigyLFJzc1YpLGZHRVRIQUxGKDEsSU5XT1JEKSkpICsgMHg4MDAw KSkpO1wKK30KKworUTZJTlNOKE0yX3ZyY21weXNfczFycF9oLCJSZDMyPXZyY21weXMoUnNzMzIs UnR0MzIpOjw8MTpybmQ6c2F0OnJhdzpoaSIsQVRUUklCUyhBX0FSQ0hWMyksICJWZWN0b3IgUmVk dWNlIENvbXBsZXggTXVsdGlwbHkgYnkgU2NhbGFyIix2cmNtcHlzX3NlbWEoMSxmR0VUV09SRCgx LFJ0dFYpKSkKK1E2SU5TTihNMl92cmNtcHlzX3MxcnBfbCwiUmQzMj12cmNtcHlzKFJzczMyLFJ0 dDMyKTo8PDE6cm5kOnNhdDpyYXc6bG8iLEFUVFJJQlMoQV9BUkNIVjMpLCAiVmVjdG9yIFJlZHVj ZSBDb21wbGV4IE11bHRpcGx5IGJ5IFNjYWxhciIsdnJjbXB5c19zZW1hKDEsZkdFVFdPUkQoMCxS dHRWKSkpCisKK0RFRl9WM19DT05EX01BUFBJTkcoTTJfdnJjbXB5c19zMXJwLCJSZDMyPXZyY21w eXMoUnNzMzIsUnQzMik6PDwxOnJuZDpzYXQiLCJSdDMyICYgMSIsIlJkMzI9dnJjbXB5cyhSc3Mz MixSdHQzMik6PDwxOnJuZDpzYXQ6cmF3OmhpIiwiUmQzMj12cmNtcHlzKFJzczMyLFJ0dDMyKTo8 PDE6cm5kOnNhdDpyYXc6bG8iKQorCisjaWYgMQorLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogbWl4ZWQgbW9kZSAzMngx NiB2ZWN0b3IgZHVhbCBtdWx0aXBsaWVzICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwor LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqLworCisvKiBTSUdORUQgMzIgeCBTSUdORUQgMTYgKi8KKworCisjdW5kZWYgbWl4bXB5 X3NlbWEKKyNkZWZpbmUgbWl4bXB5X3NlbWEoTilcCit7IGZTRVRXT1JEKDEsUnh4VixmU0FUKGZH RVRXT1JEKDEsUnh4VikgKyAoKGZTQ0FMRShOLGZNUFkzMjE2U1MoZkdFVFdPUkQoMSxSc3NWKSxm R0VUSEFMRigyLFJ0dFYpKSkpPj4xNikpICk7IFwKKyAgZlNFVFdPUkQoMCxSeHhWLGZTQVQoZkdF VFdPUkQoMCxSeHhWKSArICgoZlNDQUxFKE4sZk1QWTMyMTZTUyhmR0VUV09SRCgwLFJzc1YpLGZH RVRIQUxGKDAsUnR0VikpKSk+PjE2KSkgKTsgXAorICBmQUNDKCk7XAorfQorUTZJTlNOKE0yX21t YWNsc19zMCwiUnh4MzIrPXZtcHl3ZWgoUnNzMzIsUnR0MzIpOnNhdCIsQVRUUklCUygpLCAgICAi TWl4ZWQgUHJlY2lzaW9uIE11bHRpcGx5IixtaXhtcHlfc2VtYSgwKSkKK1E2SU5TTihNMl9tbWFj bHNfczEsIlJ4eDMyKz12bXB5d2VoKFJzczMyLFJ0dDMyKTo8PDE6c2F0IixBVFRSSUJTKCksIk1p eGVkIFByZWNpc2lvbiBNdWx0aXBseSIsbWl4bXB5X3NlbWEoMSkpCisKKyN1bmRlZiBtaXhtcHlf c2VtYQorI2RlZmluZSBtaXhtcHlfc2VtYShOKVwKK3sgZlNFVFdPUkQoMSxSeHhWLGZTQVQoZkdF VFdPUkQoMSxSeHhWKSArICgoZlNDQUxFKE4sZk1QWTMyMTZTUyhmR0VUV09SRCgxLFJzc1YpLGZH RVRIQUxGKDMsUnR0VikpKSk+PjE2KSApKTsgXAorICBmU0VUV09SRCgwLFJ4eFYsZlNBVChmR0VU V09SRCgwLFJ4eFYpICsgKChmU0NBTEUoTixmTVBZMzIxNlNTKGZHRVRXT1JEKDAsUnNzViksZkdF VEhBTEYoMSxSdHRWKSkpKT4+MTYgKSkpOyBcCisgIGZBQ0MoKTtcCit9CitRNklOU04oTTJfbW1h Y2hzX3MwLCJSeHgzMis9dm1weXdvaChSc3MzMixSdHQzMik6c2F0IixBVFRSSUJTKCksICAgICJN aXhlZCBQcmVjaXNpb24gTXVsdGlwbHkiLG1peG1weV9zZW1hKDApKQorUTZJTlNOKE0yX21tYWNo c19zMSwiUnh4MzIrPXZtcHl3b2goUnNzMzIsUnR0MzIpOjw8MTpzYXQiLEFUVFJJQlMoKSwiTWl4 ZWQgUHJlY2lzaW9uIE11bHRpcGx5IixtaXhtcHlfc2VtYSgxKSkKKworI3VuZGVmIG1peG1weV9z ZW1hCisjZGVmaW5lIG1peG1weV9zZW1hKE4pXAoreyBmU0VUV09SRCgxLFJkZFYsZlNBVCgoZlND QUxFKE4sZk1QWTMyMTZTUyhmR0VUV09SRCgxLFJzc1YpLGZHRVRIQUxGKDIsUnR0VikpKSk+PjE2 KSk7IFwKKyAgZlNFVFdPUkQoMCxSZGRWLGZTQVQoKGZTQ0FMRShOLGZNUFkzMjE2U1MoZkdFVFdP UkQoMCxSc3NWKSxmR0VUSEFMRigwLFJ0dFYpKSkpPj4xNikpOyBcCit9CitRNklOU04oTTJfbW1w eWxfczAsIlJkZDMyPXZtcHl3ZWgoUnNzMzIsUnR0MzIpOnNhdCIsQVRUUklCUygpLCAgICAiTWl4 ZWQgUHJlY2lzaW9uIE11bHRpcGx5IixtaXhtcHlfc2VtYSgwKSkKK1E2SU5TTihNMl9tbXB5bF9z MSwiUmRkMzI9dm1weXdlaChSc3MzMixSdHQzMik6PDwxOnNhdCIsQVRUUklCUygpLCJNaXhlZCBQ cmVjaXNpb24gTXVsdGlwbHkiLG1peG1weV9zZW1hKDEpKQorCisjdW5kZWYgbWl4bXB5X3NlbWEK KyNkZWZpbmUgbWl4bXB5X3NlbWEoTilcCit7IGZTRVRXT1JEKDEsUmRkVixmU0FUKChmU0NBTEUo TixmTVBZMzIxNlNTKGZHRVRXT1JEKDEsUnNzViksZkdFVEhBTEYoMyxSdHRWKSkpKT4+MTYpKTsg XAorICBmU0VUV09SRCgwLFJkZFYsZlNBVCgoZlNDQUxFKE4sZk1QWTMyMTZTUyhmR0VUV09SRCgw LFJzc1YpLGZHRVRIQUxGKDEsUnR0VikpKSk+PjE2KSk7IFwKK30KK1E2SU5TTihNMl9tbXB5aF9z MCwiUmRkMzI9dm1weXdvaChSc3MzMixSdHQzMik6c2F0IixBVFRSSUJTKCksICAgICJNaXhlZCBQ cmVjaXNpb24gTXVsdGlwbHkiLG1peG1weV9zZW1hKDApKQorUTZJTlNOKE0yX21tcHloX3MxLCJS ZGQzMj12bXB5d29oKFJzczMyLFJ0dDMyKTo8PDE6c2F0IixBVFRSSUJTKCksIk1peGVkIFByZWNp c2lvbiBNdWx0aXBseSIsbWl4bXB5X3NlbWEoMSkpCisKKworLyogV2l0aCByb3VuZGluZyAqLwor CisjdW5kZWYgbWl4bXB5X3NlbWEKKyNkZWZpbmUgbWl4bXB5X3NlbWEoTilcCit7IGZTRVRXT1JE KDEsUnh4VixmU0FUKGZHRVRXT1JEKDEsUnh4VikgKyAoKGZTQ0FMRShOLGZNUFkzMjE2U1MoZkdF VFdPUkQoMSxSc3NWKSxmR0VUSEFMRigyLFJ0dFYpKSkrMHg4MDAwKT4+MTYpKSApOyBcCisgIGZT RVRXT1JEKDAsUnh4VixmU0FUKGZHRVRXT1JEKDAsUnh4VikgKyAoKGZTQ0FMRShOLGZNUFkzMjE2 U1MoZkdFVFdPUkQoMCxSc3NWKSxmR0VUSEFMRigwLFJ0dFYpKSkrMHg4MDAwKT4+MTYpKSApOyBc CisgIGZBQ0MoKTtcCit9CitRNklOU04oTTJfbW1hY2xzX3JzMCwiUnh4MzIrPXZtcHl3ZWgoUnNz MzIsUnR0MzIpOnJuZDpzYXQiLEFUVFJJQlMoKSwgICAgIk1peGVkIFByZWNpc2lvbiBNdWx0aXBs eSIsbWl4bXB5X3NlbWEoMCkpCitRNklOU04oTTJfbW1hY2xzX3JzMSwiUnh4MzIrPXZtcHl3ZWgo UnNzMzIsUnR0MzIpOjw8MTpybmQ6c2F0IixBVFRSSUJTKCksIk1peGVkIFByZWNpc2lvbiBNdWx0 aXBseSIsbWl4bXB5X3NlbWEoMSkpCisKKyN1bmRlZiBtaXhtcHlfc2VtYQorI2RlZmluZSBtaXht cHlfc2VtYShOKVwKK3sgZlNFVFdPUkQoMSxSeHhWLGZTQVQoZkdFVFdPUkQoMSxSeHhWKSArICgo ZlNDQUxFKE4sZk1QWTMyMTZTUyhmR0VUV09SRCgxLFJzc1YpLGZHRVRIQUxGKDMsUnR0VikpKSsw eDgwMDApPj4xNikgKSk7IFwKKyAgZlNFVFdPUkQoMCxSeHhWLGZTQVQoZkdFVFdPUkQoMCxSeHhW KSArICgoZlNDQUxFKE4sZk1QWTMyMTZTUyhmR0VUV09SRCgwLFJzc1YpLGZHRVRIQUxGKDEsUnR0 VikpKSsweDgwMDApPj4xNiApKSk7IFwKKyAgZkFDQygpO1wKK30KK1E2SU5TTihNMl9tbWFjaHNf cnMwLCJSeHgzMis9dm1weXdvaChSc3MzMixSdHQzMik6cm5kOnNhdCIsQVRUUklCUygpLCAgICAi TWl4ZWQgUHJlY2lzaW9uIE11bHRpcGx5IixtaXhtcHlfc2VtYSgwKSkKK1E2SU5TTihNMl9tbWFj aHNfcnMxLCJSeHgzMis9dm1weXdvaChSc3MzMixSdHQzMik6PDwxOnJuZDpzYXQiLEFUVFJJQlMo KSwiTWl4ZWQgUHJlY2lzaW9uIE11bHRpcGx5IixtaXhtcHlfc2VtYSgxKSkKKworI3VuZGVmIG1p eG1weV9zZW1hCisjZGVmaW5lIG1peG1weV9zZW1hKE4pXAoreyBmU0VUV09SRCgxLFJkZFYsZlNB VCgoZlNDQUxFKE4sZk1QWTMyMTZTUyhmR0VUV09SRCgxLFJzc1YpLGZHRVRIQUxGKDIsUnR0Vikp KSsweDgwMDApPj4xNikpOyBcCisgIGZTRVRXT1JEKDAsUmRkVixmU0FUKChmU0NBTEUoTixmTVBZ MzIxNlNTKGZHRVRXT1JEKDAsUnNzViksZkdFVEhBTEYoMCxSdHRWKSkpKzB4ODAwMCk+PjE2KSk7 IFwKK30KK1E2SU5TTihNMl9tbXB5bF9yczAsIlJkZDMyPXZtcHl3ZWgoUnNzMzIsUnR0MzIpOnJu ZDpzYXQiLEFUVFJJQlMoKSwgICAgIk1peGVkIFByZWNpc2lvbiBNdWx0aXBseSIsbWl4bXB5X3Nl bWEoMCkpCitRNklOU04oTTJfbW1weWxfcnMxLCJSZGQzMj12bXB5d2VoKFJzczMyLFJ0dDMyKTo8 PDE6cm5kOnNhdCIsQVRUUklCUygpLCJNaXhlZCBQcmVjaXNpb24gTXVsdGlwbHkiLG1peG1weV9z ZW1hKDEpKQorCisjdW5kZWYgbWl4bXB5X3NlbWEKKyNkZWZpbmUgbWl4bXB5X3NlbWEoTilcCit7 IGZTRVRXT1JEKDEsUmRkVixmU0FUKChmU0NBTEUoTixmTVBZMzIxNlNTKGZHRVRXT1JEKDEsUnNz ViksZkdFVEhBTEYoMyxSdHRWKSkpKzB4ODAwMCk+PjE2KSk7IFwKKyAgZlNFVFdPUkQoMCxSZGRW LGZTQVQoKGZTQ0FMRShOLGZNUFkzMjE2U1MoZkdFVFdPUkQoMCxSc3NWKSxmR0VUSEFMRigxLFJ0 dFYpKSkrMHg4MDAwKT4+MTYpKTsgXAorfQorUTZJTlNOKE0yX21tcHloX3JzMCwiUmRkMzI9dm1w eXdvaChSc3MzMixSdHQzMik6cm5kOnNhdCIsQVRUUklCUygpLCAgICAiTWl4ZWQgUHJlY2lzaW9u IE11bHRpcGx5IixtaXhtcHlfc2VtYSgwKSkKK1E2SU5TTihNMl9tbXB5aF9yczEsIlJkZDMyPXZt cHl3b2goUnNzMzIsUnR0MzIpOjw8MTpybmQ6c2F0IixBVFRSSUJTKCksIk1peGVkIFByZWNpc2lv biBNdWx0aXBseSIsbWl4bXB5X3NlbWEoMSkpCisKKworI3VuZGVmIG1peG1weV9zZW1hCisjZGVm aW5lIG1peG1weV9zZW1hKERFU1QsRVFVQUxTLE4sQUNDU1lOKVwKK3sgREVTVCBFUVVBTFMgZlND QUxFKE4sZk1QWTMyMTZTUyhmR0VUV09SRCgxLFJzc1YpLGZHRVRIQUxGKDIsUnR0VikpKSArIGZT Q0FMRShOLGZNUFkzMjE2U1MoZkdFVFdPUkQoMCxSc3NWKSxmR0VUSEFMRigwLFJ0dFYpKSk7IEFD Q1NZTjt9CisKK1E2SU5TTihNNF92cm1weWVoX3MwLCJSZGQzMj12cm1weXdlaChSc3MzMixSdHQz MikiLEFUVFJJQlMoKSwgICAgIk1peGVkIFByZWNpc2lvbiBNdWx0aXBseSIsbWl4bXB5X3NlbWEo UmRkViw9LDAsKSkKK1E2SU5TTihNNF92cm1weWVoX3MxLCJSZGQzMj12cm1weXdlaChSc3MzMixS dHQzMik6PDwxIixBVFRSSUJTKCksIk1peGVkIFByZWNpc2lvbiBNdWx0aXBseSIsbWl4bXB5X3Nl bWEoUmRkViw9LDEsKSkKK1E2SU5TTihNNF92cm1weWVoX2FjY19zMCwiUnh4MzIrPXZybXB5d2Vo KFJzczMyLFJ0dDMyKSIsQVRUUklCUygpLCAgICAiTWl4ZWQgUHJlY2lzaW9uIE11bHRpcGx5Iixt aXhtcHlfc2VtYShSeHhWLCs9LDAsZkFDQygpKSkKK1E2SU5TTihNNF92cm1weWVoX2FjY19zMSwi Unh4MzIrPXZybXB5d2VoKFJzczMyLFJ0dDMyKTo8PDEiLEFUVFJJQlMoKSwiTWl4ZWQgUHJlY2lz aW9uIE11bHRpcGx5IixtaXhtcHlfc2VtYShSeHhWLCs9LDEsZkFDQygpKSkKKworI3VuZGVmIG1p eG1weV9zZW1hCisjZGVmaW5lIG1peG1weV9zZW1hKERFU1QsRVFVQUxTLE4sQUNDU1lOKVwKK3sg REVTVCBFUVVBTFMgZlNDQUxFKE4sZk1QWTMyMTZTUyhmR0VUV09SRCgxLFJzc1YpLGZHRVRIQUxG KDMsUnR0VikpKSArIGZTQ0FMRShOLGZNUFkzMjE2U1MoZkdFVFdPUkQoMCxSc3NWKSxmR0VUSEFM RigxLFJ0dFYpKSk7IEFDQ1NZTjt9CisKK1E2SU5TTihNNF92cm1weW9oX3MwLCJSZGQzMj12cm1w eXdvaChSc3MzMixSdHQzMikiLEFUVFJJQlMoKSwgICAgIk1peGVkIFByZWNpc2lvbiBNdWx0aXBs eSIsbWl4bXB5X3NlbWEoUmRkViw9LDAsKSkKK1E2SU5TTihNNF92cm1weW9oX3MxLCJSZGQzMj12 cm1weXdvaChSc3MzMixSdHQzMik6PDwxIixBVFRSSUJTKCksIk1peGVkIFByZWNpc2lvbiBNdWx0 aXBseSIsbWl4bXB5X3NlbWEoUmRkViw9LDEsKSkKK1E2SU5TTihNNF92cm1weW9oX2FjY19zMCwi Unh4MzIrPXZybXB5d29oKFJzczMyLFJ0dDMyKSIsQVRUUklCUygpLCAgICAiTWl4ZWQgUHJlY2lz aW9uIE11bHRpcGx5IixtaXhtcHlfc2VtYShSeHhWLCs9LDAsZkFDQygpKSkKK1E2SU5TTihNNF92 cm1weW9oX2FjY19zMSwiUnh4MzIrPXZybXB5d29oKFJzczMyLFJ0dDMyKTo8PDEiLEFUVFJJQlMo KSwiTWl4ZWQgUHJlY2lzaW9uIE11bHRpcGx5IixtaXhtcHlfc2VtYShSeHhWLCs9LDEsZkFDQygp KSkKKworCisKKworCisKKyN1bmRlZiBtaXhtcHlfc2VtYQorI2RlZmluZSBtaXhtcHlfc2VtYShO LEgsUk5EKVwKK3sgIFJkViA9IGZTQVQoKGZTQ0FMRShOLGZNUFkzMjE2U1MoUnNWLGZHRVRIQUxG KEgsUnRWKSkpUk5EKT4+MTYpOyBcCit9CitRNklOU04oTTJfaG1tcHlsX3JzMSwiUmQzMj1tcHko UnMzMixSdC5MMzIpOjw8MTpybmQ6c2F0IixBVFRSSUJTKEFfQVJDSFYyKSwiTWl4ZWQgUHJlY2lz aW9uIE11bHRpcGx5IixtaXhtcHlfc2VtYSgxLDAsKzB4ODAwMCkpCitRNklOU04oTTJfaG1tcHlo X3JzMSwiUmQzMj1tcHkoUnMzMixSdC5IMzIpOjw8MTpybmQ6c2F0IixBVFRSSUJTKEFfQVJDSFYy KSwiTWl4ZWQgUHJlY2lzaW9uIE11bHRpcGx5IixtaXhtcHlfc2VtYSgxLDEsKzB4ODAwMCkpCitR NklOU04oTTJfaG1tcHlsX3MxLCJSZDMyPW1weShSczMyLFJ0LkwzMik6PDwxOnNhdCIsQVRUUklC UyhBX0FSQ0hWMiksIk1peGVkIFByZWNpc2lvbiBNdWx0aXBseSIsbWl4bXB5X3NlbWEoMSwwLCkp CitRNklOU04oTTJfaG1tcHloX3MxLCJSZDMyPW1weShSczMyLFJ0LkgzMik6PDwxOnNhdCIsQVRU UklCUyhBX0FSQ0hWMiksIk1peGVkIFByZWNpc2lvbiBNdWx0aXBseSIsbWl4bXB5X3NlbWEoMSwx LCkpCisKKworCisKKworCisKKworCisvKiBTSUdORUQgMzIgeCBVTlNJR05FRCAxNiAqLworCisj dW5kZWYgbWl4bXB5X3NlbWEKKyNkZWZpbmUgbWl4bXB5X3NlbWEoTilcCit7IGZTRVRXT1JEKDEs Unh4VixmU0FUKGZHRVRXT1JEKDEsUnh4VikgKyAoKGZTQ0FMRShOLGZNUFkzMjE2U1UoZkdFVFdP UkQoMSxSc3NWKSxmR0VUVUhBTEYoMixSdHRWKSkpKT4+MTYpKSApOyBcCisgIGZTRVRXT1JEKDAs Unh4VixmU0FUKGZHRVRXT1JEKDAsUnh4VikgKyAoKGZTQ0FMRShOLGZNUFkzMjE2U1UoZkdFVFdP UkQoMCxSc3NWKSxmR0VUVUhBTEYoMCxSdHRWKSkpKT4+MTYpKSApOyBcCisgIGZBQ0MoKTtcCit9 CitRNklOU04oTTJfbW1hY3Vsc19zMCwiUnh4MzIrPXZtcHl3ZXVoKFJzczMyLFJ0dDMyKTpzYXQi LEFUVFJJQlMoKSwgICAgIk1peGVkIFByZWNpc2lvbiBNdWx0aXBseSIsbWl4bXB5X3NlbWEoMCkp CitRNklOU04oTTJfbW1hY3Vsc19zMSwiUnh4MzIrPXZtcHl3ZXVoKFJzczMyLFJ0dDMyKTo8PDE6 c2F0IixBVFRSSUJTKCksIk1peGVkIFByZWNpc2lvbiBNdWx0aXBseSIsbWl4bXB5X3NlbWEoMSkp CisKKyN1bmRlZiBtaXhtcHlfc2VtYQorI2RlZmluZSBtaXhtcHlfc2VtYShOKVwKK3sgZlNFVFdP UkQoMSxSeHhWLGZTQVQoZkdFVFdPUkQoMSxSeHhWKSArICgoZlNDQUxFKE4sZk1QWTMyMTZTVShm R0VUV09SRCgxLFJzc1YpLGZHRVRVSEFMRigzLFJ0dFYpKSkpPj4xNikgKSk7IFwKKyAgZlNFVFdP UkQoMCxSeHhWLGZTQVQoZkdFVFdPUkQoMCxSeHhWKSArICgoZlNDQUxFKE4sZk1QWTMyMTZTVShm R0VUV09SRCgwLFJzc1YpLGZHRVRVSEFMRigxLFJ0dFYpKSkpPj4xNiApKSk7IFwKKyAgZkFDQygp O1wKK30KK1E2SU5TTihNMl9tbWFjdWhzX3MwLCJSeHgzMis9dm1weXdvdWgoUnNzMzIsUnR0MzIp OnNhdCIsQVRUUklCUygpLCAgICAiTWl4ZWQgUHJlY2lzaW9uIE11bHRpcGx5IixtaXhtcHlfc2Vt YSgwKSkKK1E2SU5TTihNMl9tbWFjdWhzX3MxLCJSeHgzMis9dm1weXdvdWgoUnNzMzIsUnR0MzIp Ojw8MTpzYXQiLEFUVFJJQlMoKSwiTWl4ZWQgUHJlY2lzaW9uIE11bHRpcGx5IixtaXhtcHlfc2Vt YSgxKSkKKworI3VuZGVmIG1peG1weV9zZW1hCisjZGVmaW5lIG1peG1weV9zZW1hKE4pXAoreyBm U0VUV09SRCgxLFJkZFYsZlNBVCgoZlNDQUxFKE4sZk1QWTMyMTZTVShmR0VUV09SRCgxLFJzc1Yp LGZHRVRVSEFMRigyLFJ0dFYpKSkpPj4xNikpOyBcCisgIGZTRVRXT1JEKDAsUmRkVixmU0FUKChm U0NBTEUoTixmTVBZMzIxNlNVKGZHRVRXT1JEKDAsUnNzViksZkdFVFVIQUxGKDAsUnR0VikpKSk+ PjE2KSk7IFwKK30KK1E2SU5TTihNMl9tbXB5dWxfczAsIlJkZDMyPXZtcHl3ZXVoKFJzczMyLFJ0 dDMyKTpzYXQiLEFUVFJJQlMoKSwgICAgIk1peGVkIFByZWNpc2lvbiBNdWx0aXBseSIsbWl4bXB5 X3NlbWEoMCkpCitRNklOU04oTTJfbW1weXVsX3MxLCJSZGQzMj12bXB5d2V1aChSc3MzMixSdHQz Mik6PDwxOnNhdCIsQVRUUklCUygpLCJNaXhlZCBQcmVjaXNpb24gTXVsdGlwbHkiLG1peG1weV9z ZW1hKDEpKQorCisjdW5kZWYgbWl4bXB5X3NlbWEKKyNkZWZpbmUgbWl4bXB5X3NlbWEoTilcCit7 IGZTRVRXT1JEKDEsUmRkVixmU0FUKChmU0NBTEUoTixmTVBZMzIxNlNVKGZHRVRXT1JEKDEsUnNz ViksZkdFVFVIQUxGKDMsUnR0VikpKSk+PjE2KSk7IFwKKyAgZlNFVFdPUkQoMCxSZGRWLGZTQVQo KGZTQ0FMRShOLGZNUFkzMjE2U1UoZkdFVFdPUkQoMCxSc3NWKSxmR0VUVUhBTEYoMSxSdHRWKSkp KT4+MTYpKTsgXAorfQorUTZJTlNOKE0yX21tcHl1aF9zMCwiUmRkMzI9dm1weXdvdWgoUnNzMzIs UnR0MzIpOnNhdCIsQVRUUklCUygpLCAgICAiTWl4ZWQgUHJlY2lzaW9uIE11bHRpcGx5IixtaXht cHlfc2VtYSgwKSkKK1E2SU5TTihNMl9tbXB5dWhfczEsIlJkZDMyPXZtcHl3b3VoKFJzczMyLFJ0 dDMyKTo8PDE6c2F0IixBVFRSSUJTKCksIk1peGVkIFByZWNpc2lvbiBNdWx0aXBseSIsbWl4bXB5 X3NlbWEoMSkpCisKKworLyogV2l0aCByb3VuZGluZyAqLworCisjdW5kZWYgbWl4bXB5X3NlbWEK KyNkZWZpbmUgbWl4bXB5X3NlbWEoTilcCit7IGZTRVRXT1JEKDEsUnh4VixmU0FUKGZHRVRXT1JE KDEsUnh4VikgKyAoKGZTQ0FMRShOLGZNUFkzMjE2U1UoZkdFVFdPUkQoMSxSc3NWKSxmR0VUVUhB TEYoMixSdHRWKSkpKzB4ODAwMCk+PjE2KSkgKTsgXAorICBmU0VUV09SRCgwLFJ4eFYsZlNBVChm R0VUV09SRCgwLFJ4eFYpICsgKChmU0NBTEUoTixmTVBZMzIxNlNVKGZHRVRXT1JEKDAsUnNzViks ZkdFVFVIQUxGKDAsUnR0VikpKSsweDgwMDApPj4xNikpICk7IFwKKyAgZkFDQygpO1wKK30KK1E2 SU5TTihNMl9tbWFjdWxzX3JzMCwiUnh4MzIrPXZtcHl3ZXVoKFJzczMyLFJ0dDMyKTpybmQ6c2F0 IixBVFRSSUJTKCksICAgICJNaXhlZCBQcmVjaXNpb24gTXVsdGlwbHkiLG1peG1weV9zZW1hKDAp KQorUTZJTlNOKE0yX21tYWN1bHNfcnMxLCJSeHgzMis9dm1weXdldWgoUnNzMzIsUnR0MzIpOjw8 MTpybmQ6c2F0IixBVFRSSUJTKCksIk1peGVkIFByZWNpc2lvbiBNdWx0aXBseSIsbWl4bXB5X3Nl bWEoMSkpCisKKyN1bmRlZiBtaXhtcHlfc2VtYQorI2RlZmluZSBtaXhtcHlfc2VtYShOKVwKK3sg ZlNFVFdPUkQoMSxSeHhWLGZTQVQoZkdFVFdPUkQoMSxSeHhWKSArICgoZlNDQUxFKE4sZk1QWTMy MTZTVShmR0VUV09SRCgxLFJzc1YpLGZHRVRVSEFMRigzLFJ0dFYpKSkrMHg4MDAwKT4+MTYpICkp OyBcCisgIGZTRVRXT1JEKDAsUnh4VixmU0FUKGZHRVRXT1JEKDAsUnh4VikgKyAoKGZTQ0FMRShO LGZNUFkzMjE2U1UoZkdFVFdPUkQoMCxSc3NWKSxmR0VUVUhBTEYoMSxSdHRWKSkpKzB4ODAwMCk+ PjE2ICkpKTsgXAorICBmQUNDKCk7XAorfQorUTZJTlNOKE0yX21tYWN1aHNfcnMwLCJSeHgzMis9 dm1weXdvdWgoUnNzMzIsUnR0MzIpOnJuZDpzYXQiLEFUVFJJQlMoKSwgICAgIk1peGVkIFByZWNp c2lvbiBNdWx0aXBseSIsbWl4bXB5X3NlbWEoMCkpCitRNklOU04oTTJfbW1hY3Voc19yczEsIlJ4 eDMyKz12bXB5d291aChSc3MzMixSdHQzMik6PDwxOnJuZDpzYXQiLEFUVFJJQlMoKSwiTWl4ZWQg UHJlY2lzaW9uIE11bHRpcGx5IixtaXhtcHlfc2VtYSgxKSkKKworI3VuZGVmIG1peG1weV9zZW1h CisjZGVmaW5lIG1peG1weV9zZW1hKE4pXAoreyBmU0VUV09SRCgxLFJkZFYsZlNBVCgoZlNDQUxF KE4sZk1QWTMyMTZTVShmR0VUV09SRCgxLFJzc1YpLGZHRVRVSEFMRigyLFJ0dFYpKSkrMHg4MDAw KT4+MTYpKTsgXAorICBmU0VUV09SRCgwLFJkZFYsZlNBVCgoZlNDQUxFKE4sZk1QWTMyMTZTVShm R0VUV09SRCgwLFJzc1YpLGZHRVRVSEFMRigwLFJ0dFYpKSkrMHg4MDAwKT4+MTYpKTsgXAorfQor UTZJTlNOKE0yX21tcHl1bF9yczAsIlJkZDMyPXZtcHl3ZXVoKFJzczMyLFJ0dDMyKTpybmQ6c2F0 IixBVFRSSUJTKCksICAgICJNaXhlZCBQcmVjaXNpb24gTXVsdGlwbHkiLG1peG1weV9zZW1hKDAp KQorUTZJTlNOKE0yX21tcHl1bF9yczEsIlJkZDMyPXZtcHl3ZXVoKFJzczMyLFJ0dDMyKTo8PDE6 cm5kOnNhdCIsQVRUUklCUygpLCJNaXhlZCBQcmVjaXNpb24gTXVsdGlwbHkiLG1peG1weV9zZW1h KDEpKQorCisjdW5kZWYgbWl4bXB5X3NlbWEKKyNkZWZpbmUgbWl4bXB5X3NlbWEoTilcCit7IGZT RVRXT1JEKDEsUmRkVixmU0FUKChmU0NBTEUoTixmTVBZMzIxNlNVKGZHRVRXT1JEKDEsUnNzViks ZkdFVFVIQUxGKDMsUnR0VikpKSsweDgwMDApPj4xNikpOyBcCisgIGZTRVRXT1JEKDAsUmRkVixm U0FUKChmU0NBTEUoTixmTVBZMzIxNlNVKGZHRVRXT1JEKDAsUnNzViksZkdFVFVIQUxGKDEsUnR0 VikpKSsweDgwMDApPj4xNikpOyBcCit9CitRNklOU04oTTJfbW1weXVoX3JzMCwiUmRkMzI9dm1w eXdvdWgoUnNzMzIsUnR0MzIpOnJuZDpzYXQiLEFUVFJJQlMoKSwgICAgIk1peGVkIFByZWNpc2lv biBNdWx0aXBseSIsbWl4bXB5X3NlbWEoMCkpCitRNklOU04oTTJfbW1weXVoX3JzMSwiUmRkMzI9 dm1weXdvdWgoUnNzMzIsUnR0MzIpOjw8MTpybmQ6c2F0IixBVFRSSUJTKCksIk1peGVkIFByZWNp c2lvbiBNdWx0aXBseSIsbWl4bXB5X3NlbWEoMSkpCisKKworI2VuZGlmCisKKworCisvKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov CisvKiBjb21wbGV4IG1hYyB3aXRoIGZ1bGwgNjQtYml0IGFjY3VtIC0gbm8gc2F0LCBubyBzaGlm dCAgICAgICovCisvKiBlaXRoZXIgZG8gcmVhbCBvciBhY2N1bSwgbmV2ZXIgYm90aCAgICAgICAg ICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK1E2SU5TTihNMl92cmNtYWNpX3MwLCJSeHgz Mis9dnJjbXB5aShSc3MzMixSdHQzMikiLEFUVFJJQlMoKSwiVmVjdG9yIENvbXBsZXggTWFjIElt YWdpbmFyeSIsCit7CitSeHhWID0gUnh4ViArIGZNUFkxNlNTKGZHRVRIQUxGKDEsUnNzViksZkdF VEhBTEYoMCxSdHRWKSkgKyBcCisgICAgICAgICAgICAgIGZNUFkxNlNTKGZHRVRIQUxGKDAsUnNz ViksZkdFVEhBTEYoMSxSdHRWKSkgKyBcCisgICAgICAgICAgICAgIGZNUFkxNlNTKGZHRVRIQUxG KDMsUnNzViksZkdFVEhBTEYoMixSdHRWKSkgKyBcCisgICAgICAgICAgICAgIGZNUFkxNlNTKGZH RVRIQUxGKDIsUnNzViksZkdFVEhBTEYoMyxSdHRWKSk7XAorZkFDQygpO1wKK30pCisKK1E2SU5T TihNMl92cmNtYWNyX3MwLCJSeHgzMis9dnJjbXB5cihSc3MzMixSdHQzMikiLEFUVFJJQlMoKSwi VmVjdG9yIENvbXBsZXggTWFjIFJlYWwiLAoreyBSeHhWID0gUnh4ViArIGZNUFkxNlNTKGZHRVRI QUxGKDAsUnNzViksZkdFVEhBTEYoMCxSdHRWKSkgLSBcCisgICAgICAgICAgICAgICAgZk1QWTE2 U1MoZkdFVEhBTEYoMSxSc3NWKSxmR0VUSEFMRigxLFJ0dFYpKSArIFwKKyAgICAgICAgICAgICAg ICBmTVBZMTZTUyhmR0VUSEFMRigyLFJzc1YpLGZHRVRIQUxGKDIsUnR0VikpIC0gXAorICAgICAg ICAgICAgICAgIGZNUFkxNlNTKGZHRVRIQUxGKDMsUnNzViksZkdFVEhBTEYoMyxSdHRWKSk7XAor ZkFDQygpO1wKK30pCisKK1E2SU5TTihNMl92cmNtYWNpX3MwYywiUnh4MzIrPXZyY21weWkoUnNz MzIsUnR0MzIqKSIsQVRUUklCUyhBX0FSQ0hWMiksIlZlY3RvciBDb21wbGV4IE1hYyBJbWFnaW5h cnkiLAoreworUnh4ViA9IFJ4eFYgKyBmTVBZMTZTUyhmR0VUSEFMRigxLFJzc1YpLGZHRVRIQUxG KDAsUnR0VikpIC0gXAorICAgICAgICAgICAgICBmTVBZMTZTUyhmR0VUSEFMRigwLFJzc1YpLGZH RVRIQUxGKDEsUnR0VikpICsgXAorICAgICAgICAgICAgICBmTVBZMTZTUyhmR0VUSEFMRigzLFJz c1YpLGZHRVRIQUxGKDIsUnR0VikpIC0gXAorICAgICAgICAgICAgICBmTVBZMTZTUyhmR0VUSEFM RigyLFJzc1YpLGZHRVRIQUxGKDMsUnR0VikpO1wKK2ZBQ0MoKTtcCit9KQorCitRNklOU04oTTJf dnJjbWFjcl9zMGMsIlJ4eDMyKz12cmNtcHlyKFJzczMyLFJ0dDMyKikiLEFUVFJJQlMoQV9BUkNI VjIpLCJWZWN0b3IgQ29tcGxleCBNYWMgUmVhbCIsCit7IFJ4eFYgPSBSeHhWICsgZk1QWTE2U1Mo ZkdFVEhBTEYoMCxSc3NWKSxmR0VUSEFMRigwLFJ0dFYpKSArIFwKKyAgICAgICAgICAgICAgICBm TVBZMTZTUyhmR0VUSEFMRigxLFJzc1YpLGZHRVRIQUxGKDEsUnR0VikpICsgXAorICAgICAgICAg ICAgICAgIGZNUFkxNlNTKGZHRVRIQUxGKDIsUnNzViksZkdFVEhBTEYoMixSdHRWKSkgKyBcCisg ICAgICAgICAgICAgICAgZk1QWTE2U1MoZkdFVEhBTEYoMyxSc3NWKSxmR0VUSEFMRigzLFJ0dFYp KTtcCitmQUNDKCk7XAorfSkKKworUTZJTlNOKE0yX2NtYWNpX3MwLCJSeHgzMis9Y21weWkoUnMz MixSdDMyKSIsQVRUUklCUygpLCJWZWN0b3IgQ29tcGxleCBNYWMgSW1hZ2luYXJ5IiwKK3sKK1J4 eFYgPSBSeHhWICsgZk1QWTE2U1MoZkdFVEhBTEYoMSxSc1YpLGZHRVRIQUxGKDAsUnRWKSkgKyBc CisgICAgICAgICAgICAgIGZNUFkxNlNTKGZHRVRIQUxGKDAsUnNWKSxmR0VUSEFMRigxLFJ0Vikp OworZkFDQygpO1wKK30pCisKK1E2SU5TTihNMl9jbWFjcl9zMCwiUnh4MzIrPWNtcHlyKFJzMzIs UnQzMikiLEFUVFJJQlMoKSwiVmVjdG9yIENvbXBsZXggTWFjIFJlYWwiLAoreyBSeHhWID0gUnh4 ViArIGZNUFkxNlNTKGZHRVRIQUxGKDAsUnNWKSxmR0VUSEFMRigwLFJ0VikpIC0gXAorICAgICAg ICAgICAgICAgIGZNUFkxNlNTKGZHRVRIQUxGKDEsUnNWKSxmR0VUSEFMRigxLFJ0VikpOworZkFD QygpO1wKK30pCisKKworUTZJTlNOKE0yX3ZyY21weWlfczAsIlJkZDMyPXZyY21weWkoUnNzMzIs UnR0MzIpIixBVFRSSUJTKCksIlZlY3RvciBDb21wbGV4IE1weSBJbWFnaW5hcnkiLAoreworUmRk ViA9IGZNUFkxNlNTKGZHRVRIQUxGKDEsUnNzViksZkdFVEhBTEYoMCxSdHRWKSkgKyBcCisgICAg ICAgZk1QWTE2U1MoZkdFVEhBTEYoMCxSc3NWKSxmR0VUSEFMRigxLFJ0dFYpKSArIFwKKyAgICAg ICBmTVBZMTZTUyhmR0VUSEFMRigzLFJzc1YpLGZHRVRIQUxGKDIsUnR0VikpICsgXAorICAgICAg IGZNUFkxNlNTKGZHRVRIQUxGKDIsUnNzViksZkdFVEhBTEYoMyxSdHRWKSk7XAorfSkKKworUTZJ TlNOKE0yX3ZyY21weXJfczAsIlJkZDMyPXZyY21weXIoUnNzMzIsUnR0MzIpIixBVFRSSUJTKCks IlZlY3RvciBDb21wbGV4IE1weSBSZWFsIiwKK3sgUmRkViA9IGZNUFkxNlNTKGZHRVRIQUxGKDAs UnNzViksZkdFVEhBTEYoMCxSdHRWKSkgLSBcCisgICAgICAgICBmTVBZMTZTUyhmR0VUSEFMRigx LFJzc1YpLGZHRVRIQUxGKDEsUnR0VikpICsgXAorICAgICAgICAgZk1QWTE2U1MoZkdFVEhBTEYo MixSc3NWKSxmR0VUSEFMRigyLFJ0dFYpKSAtIFwKKyAgICAgICAgIGZNUFkxNlNTKGZHRVRIQUxG KDMsUnNzViksZkdFVEhBTEYoMyxSdHRWKSk7XAorfSkKKworUTZJTlNOKE0yX3ZyY21weWlfczBj LCJSZGQzMj12cmNtcHlpKFJzczMyLFJ0dDMyKikiLEFUVFJJQlMoQV9BUkNIVjIpLCJWZWN0b3Ig Q29tcGxleCBNcHkgSW1hZ2luYXJ5IiwKK3sKK1JkZFYgPSBmTVBZMTZTUyhmR0VUSEFMRigxLFJz c1YpLGZHRVRIQUxGKDAsUnR0VikpIC0gXAorICAgICAgIGZNUFkxNlNTKGZHRVRIQUxGKDAsUnNz ViksZkdFVEhBTEYoMSxSdHRWKSkgKyBcCisgICAgICAgZk1QWTE2U1MoZkdFVEhBTEYoMyxSc3NW KSxmR0VUSEFMRigyLFJ0dFYpKSAtIFwKKyAgICAgICBmTVBZMTZTUyhmR0VUSEFMRigyLFJzc1Yp LGZHRVRIQUxGKDMsUnR0VikpO1wKK30pCisKK1E2SU5TTihNMl92cmNtcHlyX3MwYywiUmRkMzI9 dnJjbXB5cihSc3MzMixSdHQzMiopIixBVFRSSUJTKEFfQVJDSFYyKSwiVmVjdG9yIENvbXBsZXgg TXB5IFJlYWwiLAoreyBSZGRWID0gZk1QWTE2U1MoZkdFVEhBTEYoMCxSc3NWKSxmR0VUSEFMRigw LFJ0dFYpKSArIFwKKyAgICAgICAgIGZNUFkxNlNTKGZHRVRIQUxGKDEsUnNzViksZkdFVEhBTEYo MSxSdHRWKSkgKyBcCisgICAgICAgICBmTVBZMTZTUyhmR0VUSEFMRigyLFJzc1YpLGZHRVRIQUxG KDIsUnR0VikpICsgXAorICAgICAgICAgZk1QWTE2U1MoZkdFVEhBTEYoMyxSc3NWKSxmR0VUSEFM RigzLFJ0dFYpKTtcCit9KQorCitRNklOU04oTTJfY21weWlfczAsIlJkZDMyPWNtcHlpKFJzMzIs UnQzMikiLEFUVFJJQlMoKSwiVmVjdG9yIENvbXBsZXggTXB5IEltYWdpbmFyeSIsCit7CitSZGRW ID0gZk1QWTE2U1MoZkdFVEhBTEYoMSxSc1YpLGZHRVRIQUxGKDAsUnRWKSkgKyBcCisgICAgICAg Zk1QWTE2U1MoZkdFVEhBTEYoMCxSc1YpLGZHRVRIQUxGKDEsUnRWKSk7Cit9KQorCitRNklOU04o TTJfY21weXJfczAsIlJkZDMyPWNtcHlyKFJzMzIsUnQzMikiLEFUVFJJQlMoKSwiVmVjdG9yIENv bXBsZXggTXB5IFJlYWwiLAoreyBSZGRWID0gZk1QWTE2U1MoZkdFVEhBTEYoMCxSc1YpLGZHRVRI QUxGKDAsUnRWKSkgLSBcCisgICAgICAgICBmTVBZMTZTUyhmR0VUSEFMRigxLFJzViksZkdFVEhB TEYoMSxSdFYpKTsKK30pCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogQ29tcGxleCBtcHkvbWFjIHdpdGggMngz MiBiaXQgYWNjdW0sIHNhdCwgc2hpZnQgICAgICAgICAgICAqLworLyogMzJ4MTYgcmVhbCBvciBp bWFnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwor CisjaWYgMQorCitRNklOU04oTTRfY21weWlfd2gsIlJkMzI9Y21weWl3aChSc3MzMixSdDMyKTo8 PDE6cm5kOnNhdCIsQVRUUklCUygpLCJNaXhlZCBQcmVjaXNpb24gQ29tcGxleCBNdWx0aXBseSIs Cit7CisgUmRWID0gZlNBVCggICggIGZNUFkzMjE2U1MoZkdFVFdPUkQoMCxSc3NWKSxmR0VUSEFM RigxLFJ0VikpCisgICAgICAgICAgICAgICArIGZNUFkzMjE2U1MoZkdFVFdPUkQoMSxSc3NWKSxm R0VUSEFMRigwLFJ0VikpCisgICAgICAgICAgICAgICArIDB4NDAwMCk+PjE1KTsKK30pCisKKwor UTZJTlNOKE00X2NtcHlyX3doLCJSZDMyPWNtcHlyd2goUnNzMzIsUnQzMik6PDwxOnJuZDpzYXQi LEFUVFJJQlMoKSwiTWl4ZWQgUHJlY2lzaW9uIENvbXBsZXggTXVsdGlwbHkiLAoreworIFJkViA9 IGZTQVQoICAoICBmTVBZMzIxNlNTKGZHRVRXT1JEKDAsUnNzViksZkdFVEhBTEYoMCxSdFYpKQor ICAgICAgICAgICAgICAgLSBmTVBZMzIxNlNTKGZHRVRXT1JEKDEsUnNzViksZkdFVEhBTEYoMSxS dFYpKQorICAgICAgICAgICAgICAgKyAweDQwMDApPj4xNSk7Cit9KQorCitRNklOU04oTTRfY21w eWlfd2hjLCJSZDMyPWNtcHlpd2goUnNzMzIsUnQzMiopOjw8MTpybmQ6c2F0IixBVFRSSUJTKCks Ik1peGVkIFByZWNpc2lvbiBDb21wbGV4IE11bHRpcGx5IiwKK3sKKyBSZFYgPSBmU0FUKCAgKCAg Zk1QWTMyMTZTUyhmR0VUV09SRCgxLFJzc1YpLGZHRVRIQUxGKDAsUnRWKSkKKyAgICAgICAgICAg ICAgIC0gZk1QWTMyMTZTUyhmR0VUV09SRCgwLFJzc1YpLGZHRVRIQUxGKDEsUnRWKSkKKyAgICAg ICAgICAgICAgICsgMHg0MDAwKT4+MTUpOworfSkKKworCitRNklOU04oTTRfY21weXJfd2hjLCJS ZDMyPWNtcHlyd2goUnNzMzIsUnQzMiopOjw8MTpybmQ6c2F0IixBVFRSSUJTKCksIk1peGVkIFBy ZWNpc2lvbiBDb21wbGV4IE11bHRpcGx5IiwKK3sKKyBSZFYgPSBmU0FUKCAgKCAgZk1QWTMyMTZT UyhmR0VUV09SRCgwLFJzc1YpLGZHRVRIQUxGKDAsUnRWKSkKKyAgICAgICAgICAgICAgICsgZk1Q WTMyMTZTUyhmR0VUV09SRCgxLFJzc1YpLGZHRVRIQUxGKDEsUnRWKSkKKyAgICAgICAgICAgICAg ICsgMHg0MDAwKT4+MTUpOworfSkKKworCisjZW5kaWYKKworLyoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogVmVjdG9yIG1w eS9tYWMgd2l0aCAyeDMyIGJpdCBhY2N1bSwgc2F0LCBzaGlmdCAgICAgICAgICAgICAqLworLyog ZWl0aGVyIGRvIHJlYWwgb3IgaW1hZywgIG5ldmVyIGJvdGggICAgICAgICAgICAgICAgICAgICAg ICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqLworCisjdW5kZWYgVkNNUFlTRU1JCisjZGVmaW5lIFZDTVBZU0VNSShEU1Qs QUNDMCxBQ0MxLFNISUZULFNBVCxBQ0NTWU4pIFwKKwlmU0VUV09SRCgwLERTVCxTQVQoQUNDMCBm U0NBTEUoU0hJRlQsZk1QWTE2U1MoZkdFVEhBTEYoMSxSc3NWKSxmR0VUSEFMRigwLFJ0dFYpKSAr IFwKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmTVBZMTZTUyhmR0VUSEFM RigwLFJzc1YpLGZHRVRIQUxGKDEsUnR0VikpKSkpOyBcCisJZlNFVFdPUkQoMSxEU1QsU0FUKEFD QzEgZlNDQUxFKFNISUZULGZNUFkxNlNTKGZHRVRIQUxGKDMsUnNzViksZkdFVEhBTEYoMixSdHRW KSkgKyBcCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZk1QWTE2U1MoZkdF VEhBTEYoMixSc3NWKSxmR0VUSEFMRigzLFJ0dFYpKSkpKTsgXAorICAgIEFDQ1NZTjtcCisKKyN1 bmRlZiBWQ01QWVNFTVIKKyNkZWZpbmUgVkNNUFlTRU1SKERTVCxBQ0MwLEFDQzEsU0hJRlQsU0FU LEFDQ1NZTikgXAorCWZTRVRXT1JEKDAsRFNULFNBVChBQ0MwIGZTQ0FMRShTSElGVCxmTVBZMTZT UyhmR0VUSEFMRigwLFJzc1YpLGZHRVRIQUxGKDAsUnR0VikpIC0gXAorCSAgICAgICAgICAgICAg ICAgICAgICAgZk1QWTE2U1MoZkdFVEhBTEYoMSxSc3NWKSxmR0VUSEFMRigxLFJ0dFYpKSkpKTsg XAorCWZTRVRXT1JEKDEsRFNULFNBVChBQ0MxIGZTQ0FMRShTSElGVCxmTVBZMTZTUyhmR0VUSEFM RigyLFJzc1YpLGZHRVRIQUxGKDIsUnR0VikpIC0gXAorCSAgICAgICAgICAgICAgICAgICAgICAg Zk1QWTE2U1MoZkdFVEhBTEYoMyxSc3NWKSxmR0VUSEFMRigzLFJ0dFYpKSkpKTsgXAorICAgIEFD Q1NZTjtcCisKKworI3VuZGVmIFZDTVBZSVIKKyNkZWZpbmUgVkNNUFlJUihUQUdCQVNFLERTVFNZ TixEU1RWQUwsQUNDU0VNLEFDQ1ZBTDAsQUNDVkFMMSxTSElGVFNZTixTSElGVFZBTCxTQVRTWU4s U0FUVkFMLEFDQ1NZTikgXAorUTZJTlNOKE0yXyMjVEFHQkFTRSMjaSxEU1RTWU4gQUNDU0VNICJ2 Y21weWkoUnNzMzIsUnR0MzIpIiBTSElGVFNZTiBTQVRTWU4sQVRUUklCUyhBX0FSQ0hWMiksIFwK KwkiVmVjdG9yIENvbXBsZXggTXVsdGlwbHkgSW1hZ2luYXJ5IiwgeyBWQ01QWVNFTUkoRFNUVkFM LEFDQ1ZBTDAsQUNDVkFMMSxTSElGVFZBTCxTQVRWQUwsQUNDU1lOKTsgfSkgXAorUTZJTlNOKE0y XyMjVEFHQkFTRSMjcixEU1RTWU4gQUNDU0VNICJ2Y21weXIoUnNzMzIsUnR0MzIpIiBTSElGVFNZ TiBTQVRTWU4sQVRUUklCUyhBX0FSQ0hWMiksIFwKKwkiVmVjdG9yIENvbXBsZXggTXVsdGlwbHkg SW1hZ2luYXJ5IiwgeyBWQ01QWVNFTVIoRFNUVkFMLEFDQ1ZBTDAsQUNDVkFMMSxTSElGVFZBTCxT QVRWQUwsQUNDU1lOKTsgfSkKKworCitWQ01QWUlSKHZjbXB5X3MwX3NhdF8sIlJkZDMyIixSZGRW LCI9IiwsLCIiLDAsIjpzYXQiLGZTQVQsKQorVkNNUFlJUih2Y21weV9zMV9zYXRfLCJSZGQzMiIs UmRkViwiPSIsLCwiOjw8MSIsMSwiOnNhdCIsZlNBVCwpCitWQ01QWUlSKHZjbWFjX3MwX3NhdF8s IlJ4eDMyIixSeHhWLCIrPSIsZkdFVFdPUkQoMCxSeHhWKSArICxmR0VUV09SRCgxLFJ4eFYpICsg LCIiLDAsIjpzYXQiLGZTQVQsZkFDQygpKQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgUm90YXRp b24gIC0tIGJ5IDAsIDkwLCAxODAsIG9yIDI3MCBtZWFucyBtdWx0IGJ5IDEsIEosIC0xLCAtSiAg ICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKi8KKworUTZJTlNOKFMyX3Zjcm90YXRlLCJSZGQzMj12Y3JvdGF0 ZShSc3MzMixSdDMyKSIsQVRUUklCUyhBX0FSQ0hWMiksIlJvdGF0ZSBjb21wbGV4IHZhbHVlIGJ5 IG11bHRpcGxlIG9mIFBJLzIiLAoreworCWZISURFKHNpemUxdV90IHRtcDspCisJdG1wID0gZkVY VFJBQ1RVX1JBTkdFKFJ0ViwxLDApOworCWlmICh0bXAgPT0gMCkgeyAvKiBObyByb3RhdGlvbiAq LworCQlmU0VUSEFMRigwLFJkZFYsZkdFVEhBTEYoMCxSc3NWKSk7CisJCWZTRVRIQUxGKDEsUmRk VixmR0VUSEFMRigxLFJzc1YpKTsKKwl9IGVsc2UgaWYgKHRtcCA9PSAxKSB7IC8qIE11bHRpcGx5 IGJ5IC1KICovCisJCWZTRVRIQUxGKDAsUmRkVixmR0VUSEFMRigxLFJzc1YpKTsKKwkJZlNFVEhB TEYoMSxSZGRWLGZTQVRIKC1mR0VUSEFMRigwLFJzc1YpKSk7CisJfSBlbHNlIGlmICh0bXAgPT0g MikgeyAvKiBNdWx0aXBseSBieSBKICovCisJCWZTRVRIQUxGKDAsUmRkVixmU0FUSCgtZkdFVEhB TEYoMSxSc3NWKSkpOworCQlmU0VUSEFMRigxLFJkZFYsZkdFVEhBTEYoMCxSc3NWKSk7CisJfSBl bHNlIHsgLyogTXVsdGlwbHkgYnkgLTEgKi8KKwkJZkhJREUoaWYgKHRtcCAhPSAzKSBmYXRhbCgi QyBpcyBicm9rZW4iKTspCisJCWZTRVRIQUxGKDAsUmRkVixmU0FUSCgtZkdFVEhBTEYoMCxSc3NW KSkpOworCQlmU0VUSEFMRigxLFJkZFYsZlNBVEgoLWZHRVRIQUxGKDEsUnNzVikpKTsKKwl9CisJ dG1wID0gZkVYVFJBQ1RVX1JBTkdFKFJ0ViwzLDIpOworCWlmICh0bXAgPT0gMCkgeyAvKiBObyBy b3RhdGlvbiAqLworCQlmU0VUSEFMRigyLFJkZFYsZkdFVEhBTEYoMixSc3NWKSk7CisJCWZTRVRI QUxGKDMsUmRkVixmR0VUSEFMRigzLFJzc1YpKTsKKwl9IGVsc2UgaWYgKHRtcCA9PSAxKSB7IC8q IE11bHRpcGx5IGJ5IC1KICovCisJCWZTRVRIQUxGKDIsUmRkVixmR0VUSEFMRigzLFJzc1YpKTsK KwkJZlNFVEhBTEYoMyxSZGRWLGZTQVRIKC1mR0VUSEFMRigyLFJzc1YpKSk7CisJfSBlbHNlIGlm ICh0bXAgPT0gMikgeyAvKiBNdWx0aXBseSBieSBKICovCisJCWZTRVRIQUxGKDIsUmRkVixmU0FU SCgtZkdFVEhBTEYoMyxSc3NWKSkpOworCQlmU0VUSEFMRigzLFJkZFYsZkdFVEhBTEYoMixSc3NW KSk7CisJfSBlbHNlIHsgLyogTXVsdGlwbHkgYnkgLTEgKi8KKwkJZkhJREUoaWYgKHRtcCAhPSAz KSBmYXRhbCgiQyBpcyBicm9rZW4iKTspCisJCWZTRVRIQUxGKDIsUmRkVixmU0FUSCgtZkdFVEhB TEYoMixSc3NWKSkpOworCQlmU0VUSEFMRigzLFJkZFYsZlNBVEgoLWZHRVRIQUxGKDMsUnNzVikp KTsKKwl9Cit9KQorCisKK1E2SU5TTihTNF92cmNyb3RhdGVfYWNjLCJSeHgzMis9dnJjcm90YXRl KFJzczMyLFJ0MzIsI3UyKSIsQVRUUklCUygpLCJSb3RhdGUgYW5kIFJlZHVjZSBCeXRlcyIsCit7 CisJZkhJREUoaW50IGk7IGludCB0bXByOyBpbnQgdG1waTsgdW5zaWduZWQgaW50IGNvbnRyb2w7 KQorCWZISURFKGludCBzdW1yOyBpbnQgc3VtaTspCisJc3VtciA9IDA7CisJc3VtaSA9IDA7CisJ Y29udHJvbCA9IGZHRVRVQllURSh1aVYsUnRWKTsKKwlmb3IgKGkgPSAwOyBpIDwgODsgaSArPSAy KSB7CisJCXRtcHIgPSBmR0VUQllURShpICAsUnNzVik7CisJCXRtcGkgPSBmR0VUQllURShpKzEs UnNzVik7CisJCXN3aXRjaCAoY29udHJvbCAmIDMpIHsKKwkJCWNhc2UgMDogLyogTm8gUm90YXRp b24gKi8KKwkJCQlzdW1yICs9IHRtcHI7CisJCQkJc3VtaSArPSB0bXBpOworCQkJCWJyZWFrOwor CQkJY2FzZSAxOiAvKiBNdWx0aXBseSBieSAtSiAqLworCQkJCXN1bXIgKz0gdG1waTsKKwkJCQlz dW1pIC09IHRtcHI7CisJCQkJYnJlYWs7CisJCQljYXNlIDI6IC8qIE11bHRpcGx5IGJ5IEogKi8K KwkJCQlzdW1yIC09IHRtcGk7CisJCQkJc3VtaSArPSB0bXByOworCQkJCWJyZWFrOworCQkJY2Fz ZSAzOiAvKiBNdWx0aXBseSBieSAtMSAqLworCQkJCXN1bXIgLT0gdG1wcjsKKwkJCQlzdW1pIC09 IHRtcGk7CisJCQkJYnJlYWs7CisJCQlmSElERShkZWZhdWx0OiBmYXRhbCgiQyBpcyBicm9rZW4h Iik7KQorCQl9CisJCWNvbnRyb2wgPSBjb250cm9sID4+IDI7CisJfQorCWZTRVRXT1JEKDAsUnh4 VixmR0VUV09SRCgwLFJ4eFYpICsgc3Vtcik7CisJZlNFVFdPUkQoMSxSeHhWLGZHRVRXT1JEKDEs Unh4VikgKyBzdW1pKTsKKyAgICBmQUNDKCk7XAorfSkKKworUTZJTlNOKFM0X3ZyY3JvdGF0ZSwi UmRkMzI9dnJjcm90YXRlKFJzczMyLFJ0MzIsI3UyKSIsQVRUUklCUygpLCJSb3RhdGUgYW5kIFJl ZHVjZSBCeXRlcyIsCit7CisJZkhJREUoaW50IGk7IGludCB0bXByOyBpbnQgdG1waTsgdW5zaWdu ZWQgaW50IGNvbnRyb2w7KQorCWZISURFKGludCBzdW1yOyBpbnQgc3VtaTspCisJc3VtciA9IDA7 CisJc3VtaSA9IDA7CisJY29udHJvbCA9IGZHRVRVQllURSh1aVYsUnRWKTsKKwlmb3IgKGkgPSAw OyBpIDwgODsgaSArPSAyKSB7CisJCXRtcHIgPSBmR0VUQllURShpICAsUnNzVik7CisJCXRtcGkg PSBmR0VUQllURShpKzEsUnNzVik7CisJCXN3aXRjaCAoY29udHJvbCAmIDMpIHsKKwkJCWNhc2Ug MDogLyogTm8gUm90YXRpb24gKi8KKwkJCQlzdW1yICs9IHRtcHI7CisJCQkJc3VtaSArPSB0bXBp OworCQkJCWJyZWFrOworCQkJY2FzZSAxOiAvKiBNdWx0aXBseSBieSAtSiAqLworCQkJCXN1bXIg Kz0gdG1waTsKKwkJCQlzdW1pIC09IHRtcHI7CisJCQkJYnJlYWs7CisJCQljYXNlIDI6IC8qIE11 bHRpcGx5IGJ5IEogKi8KKwkJCQlzdW1yIC09IHRtcGk7CisJCQkJc3VtaSArPSB0bXByOworCQkJ CWJyZWFrOworCQkJY2FzZSAzOiAvKiBNdWx0aXBseSBieSAtMSAqLworCQkJCXN1bXIgLT0gdG1w cjsKKwkJCQlzdW1pIC09IHRtcGk7CisJCQkJYnJlYWs7CisJCQlmSElERShkZWZhdWx0OiBmYXRh bCgiQyBpcyBicm9rZW4hIik7KQorCQl9CisJCWNvbnRyb2wgPSBjb250cm9sID4+IDI7CisJfQor CWZTRVRXT1JEKDAsUmRkVixzdW1yKTsKKwlmU0VUV09SRCgxLFJkZFYsc3VtaSk7Cit9KQorCisK K1E2SU5TTihTMl92Y25lZ2gsIlJkZDMyPXZjbmVnaChSc3MzMixSdDMyKSIsQVRUUklCUygpLCJD b25kaXRpb25hbCBOZWdhdGUgaGFsZndvcmRzIiwKK3sKKwlmSElERShpbnQgaTspCisJZm9yIChp ID0gMDsgaSA8IDQ7IGkrKykgeworCQlpZiAoZkdFVEJJVChpLFJ0VikpIHsKKwkJCWZTRVRIQUxG KGksUmRkVixmU0FUSCgtZkdFVEhBTEYoaSxSc3NWKSkpOworCQl9IGVsc2UgeworCQkJZlNFVEhB TEYoaSxSZGRWLGZHRVRIQUxGKGksUnNzVikpOworCQl9CisJfQorfSkKKworUTZJTlNOKFMyX3Zy Y25lZ2gsIlJ4eDMyKz12cmNuZWdoKFJzczMyLFJ0MzIpIixBVFRSSUJTKCksIlZlY3RvciBSZWR1 Y2UgQ29uZGl0aW9uYWwgTmVnYXRlIGhhbGZ3b3JkcyIsCit7CisJZkhJREUoaW50IGk7KQorCWZv ciAoaSA9IDA7IGkgPCA0OyBpKyspIHsKKwkJaWYgKGZHRVRCSVQoaSxSdFYpKSB7CisJCQlSeHhW ICs9IC1mR0VUSEFMRihpLFJzc1YpOworCQl9IGVsc2UgeworCQkJUnh4ViArPSBmR0VUSEFMRihp LFJzc1YpOworCQl9CisJfQorICAgIGZBQ0MoKTsKK30pCisKKworLyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAq ICBGaW5pdGUtZmllbGQgbXVsdGlwbGllcy4gIFdyaXR0ZW4gYnkgRGF2aWQgSG95bGUgICAgICAg ICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitRNklOU04oTTRfcG1weXcsIlJkZDMyPXBt cHl3KFJzMzIsUnQzMikiLEFUVFJJQlMoKSwiUG9seW5vbWlhbCAzMmJpdCBNdWx0aXBsaWNhdGlv biB3aXRoIEFkZGl0aW9uIGluIEdGKDIpIiwKK3sKKyAgICAgICAgZkhJREUoaW50IGk7IHVuc2ln bmVkIGludCB5OykKKyAgICAgICAgZkhJREUodW5zaWduZWQgbG9uZyBsb25nIHg7IHVuc2lnbmVk IGxvbmcgbG9uZyBwcm9kOykKKyAgICAgICAgeCA9IGZHRVRVV09SRCgwLCBSc1YpOworICAgICAg ICB5ID0gZkdFVFVXT1JEKDAsIFJ0Vik7CisKKyAgICAgICAgcHJvZCA9IDA7CisgICAgICAgIGZv cihpPTA7IGkgPCAzMjsgaSsrKSB7CisgICAgICAgICAgICBpZigoeSA+PiBpKSAmIDEpIHByb2Qg Xj0gKHggPDwgaSk7CisgICAgICAgIH0KKwlSZGRWID0gcHJvZDsKK30pCisKK1E2SU5TTihNNF92 cG1weWgsIlJkZDMyPXZwbXB5aChSczMyLFJ0MzIpIixBVFRSSUJTKCksIkR1YWwgUG9seW5vbWlh bCAxNmJpdCBNdWx0aXBsaWNhdGlvbiB3aXRoIEFkZGl0aW9uIGluIEdGKDIpIiwKK3sKKyAgICAg ICAgZkhJREUoaW50IGk7IHVuc2lnbmVkIGludCB4MDsgdW5zaWduZWQgaW50IHgxOykKKyAgICAg ICAgZkhJREUodW5zaWduZWQgaW50IHkwOyB1bnNpZ25lZCBpbnQgeTE7KQorICAgICAgICBmSElE RSh1bnNpZ25lZCBpbnQgcHJvZDA7IHVuc2lnbmVkIGludCBwcm9kMTspCisKKyAgICAgICAgeDAg PSBmR0VUVUhBTEYoMCwgUnNWKTsKKyAgICAgICAgeDEgPSBmR0VUVUhBTEYoMSwgUnNWKTsKKyAg ICAgICAgeTAgPSBmR0VUVUhBTEYoMCwgUnRWKTsKKyAgICAgICAgeTEgPSBmR0VUVUhBTEYoMSwg UnRWKTsKKworICAgICAgICBwcm9kMCA9IHByb2QxID0gMDsKKyAgICAgICAgZm9yKGk9MDsgaSA8 IDE2OyBpKyspIHsKKyAgICAgICAgICAgIGlmKCh5MCA+PiBpKSAmIDEpIHByb2QwIF49ICh4MCA8 PCBpKTsKKyAgICAgICAgICAgIGlmKCh5MSA+PiBpKSAmIDEpIHByb2QxIF49ICh4MSA8PCBpKTsK KyAgICAgICAgfQorICAgICAgICBmU0VUSEFMRigwLFJkZFYsZkdFVFVIQUxGKDAscHJvZDApKTsK KyAgICAgICAgZlNFVEhBTEYoMSxSZGRWLGZHRVRVSEFMRigwLHByb2QxKSk7CisgICAgICAgIGZT RVRIQUxGKDIsUmRkVixmR0VUVUhBTEYoMSxwcm9kMCkpOworICAgICAgICBmU0VUSEFMRigzLFJk ZFYsZkdFVFVIQUxGKDEscHJvZDEpKTsKK30pCisKK1E2SU5TTihNNF9wbXB5d19hY2MsIlJ4eDMy Xj1wbXB5dyhSczMyLFJ0MzIpIixBVFRSSUJTKCksIlBvbHlub21pYWwgMzJiaXQgTXVsdGlwbGlj YXRpb24gd2l0aCBBZGRpdGlvbiBpbiBHRigyKSIsCit7CisgICAgICAgIGZISURFKGludCBpOyB1 bnNpZ25lZCBpbnQgeTspCisgICAgICAgIGZISURFKHVuc2lnbmVkIGxvbmcgbG9uZyB4OyB1bnNp Z25lZCBsb25nIGxvbmcgcHJvZDspCisgICAgICAgIHggPSBmR0VUVVdPUkQoMCwgUnNWKTsKKyAg ICAgICAgeSA9IGZHRVRVV09SRCgwLCBSdFYpOworCisgICAgICAgIHByb2QgPSAwOworICAgICAg ICBmb3IoaT0wOyBpIDwgMzI7IGkrKykgeworICAgICAgICAgICAgaWYoKHkgPj4gaSkgJiAxKSBw cm9kIF49ICh4IDw8IGkpOworICAgICAgICB9CisJUnh4ViBePSBwcm9kOworfSkKKworUTZJTlNO KE00X3ZwbXB5aF9hY2MsIlJ4eDMyXj12cG1weWgoUnMzMixSdDMyKSIsQVRUUklCUygpLCJEdWFs IFBvbHlub21pYWwgMTZiaXQgTXVsdGlwbGljYXRpb24gd2l0aCBBZGRpdGlvbiBpbiBHRigyKSIs Cit7CisgICAgICAgIGZISURFKGludCBpOyB1bnNpZ25lZCBpbnQgeDA7IHVuc2lnbmVkIGludCB4 MTspCisgICAgICAgIGZISURFKHVuc2lnbmVkIGludCB5MDsgdW5zaWduZWQgaW50IHkxOykKKyAg ICAgICAgZkhJREUodW5zaWduZWQgaW50IHByb2QwOyB1bnNpZ25lZCBpbnQgcHJvZDE7KQorCisg ICAgICAgIHgwID0gZkdFVFVIQUxGKDAsIFJzVik7CisgICAgICAgIHgxID0gZkdFVFVIQUxGKDEs IFJzVik7CisgICAgICAgIHkwID0gZkdFVFVIQUxGKDAsIFJ0Vik7CisgICAgICAgIHkxID0gZkdF VFVIQUxGKDEsIFJ0Vik7CisKKyAgICAgICAgcHJvZDAgPSBwcm9kMSA9IDA7CisgICAgICAgIGZv cihpPTA7IGkgPCAxNjsgaSsrKSB7CisgICAgICAgICAgICBpZigoeTAgPj4gaSkgJiAxKSBwcm9k MCBePSAoeDAgPDwgaSk7CisgICAgICAgICAgICBpZigoeTEgPj4gaSkgJiAxKSBwcm9kMSBePSAo eDEgPDwgaSk7CisgICAgICAgIH0KKyAgICAgICAgZlNFVEhBTEYoMCxSeHhWLGZHRVRVSEFMRigw LFJ4eFYpIF4gZkdFVFVIQUxGKDAscHJvZDApKTsKKyAgICAgICAgZlNFVEhBTEYoMSxSeHhWLGZH RVRVSEFMRigxLFJ4eFYpIF4gZkdFVFVIQUxGKDAscHJvZDEpKTsKKyAgICAgICAgZlNFVEhBTEYo MixSeHhWLGZHRVRVSEFMRigyLFJ4eFYpIF4gZkdFVFVIQUxGKDEscHJvZDApKTsKKyAgICAgICAg ZlNFVEhBTEYoMyxSeHhWLGZHRVRVSEFMRigzLFJ4eFYpIF4gZkdFVFVIQUxGKDEscHJvZDEpKTsK K30pCisKKworLyogVjcwOiBUSU5ZIENPUkUgKi8KKworI2RlZmluZSBDTVBZNjQoVEFHLE5BTUUs REVTQyxPUEVSQU5EMSxPUCxXMCxXMSxXMixXMykgXAorUTZJTlNOKE03XyMjVEFHLCJSZGQzMj0i IE5BTUUgIihSc3MzMiwiIE9QRVJBTkQxICIpIixBVFRSSUJTKEFfUkVTVFJJQ1RfU0xPVDNPTkxZ LEFfUkVTVFJJQ1RfTk9TTE9UMl9NUFkpLCJDb21wbGV4IE11bHRpcGx5IDY0LWJpdCAiIERFU0Ms ICAgIHsgUmRkViAgPSAoZk1QWTMyU1MoZkdFVFdPUkQoVzAsIFJzc1YpLCBmR0VUV09SRChXMSwg UnR0VikpIE9QIGZNUFkzMlNTKGZHRVRXT1JEKFcyLCBSc3NWKSwgZkdFVFdPUkQoVzMsIFJ0dFYp KSk7IGZFWFRFTlNJT05fQVVESU8oKTt9KVwKK1E2SU5TTihNN18jI1RBRyMjX2FjYywiUnh4MzIr PSIgTkFNRSAiKFJzczMyLCJPUEVSQU5EMSIpIixBVFRSSUJTKEFfUkVTVFJJQ1RfU0xPVDNPTkxZ LEFfUkVTVFJJQ1RfTk9TTE9UMl9NUFksQV9OT1RFX05PU0xPVDJfTVBZKSwiQ29tcGxleCBNdWx0 aXBseS1BY2N1bXVsYXRlIDY0LWJpdCAiIERFU0MsIHsgUnh4ViArPSAoZk1QWTMyU1MoZkdFVFdP UkQoVzAsIFJzc1YpLCBmR0VUV09SRChXMSwgUnR0VikpIE9QIGZNUFkzMlNTKGZHRVRXT1JEKFcy LCBSc3NWKSwgZkdFVFdPUkQoVzMsIFJ0dFYpKSk7IGZFWFRFTlNJT05fQVVESU8oKTsgZkFDQygp OyB9KQorCitDTVBZNjQoZGNtcHlydywgImNtcHlydyIsIlJlYWwiLCJSdHQzMiIgLC0sMCwwLDEs MSkKK0NNUFk2NChkY21weXJ3YywiY21weXJ3IiwiUmVhbCIsIlJ0dDMyKiIsKywwLDAsMSwxKQor Q01QWTY0KGRjbXB5aXcsICJjbXB5aXciLCJJbWFnIiwiUnR0MzIiICwrLDAsMSwxLDApCitDTVBZ NjQoZGNtcHlpd2MsImNtcHlpdyIsIkltYWciLCJSdHQzMioiLC0sMSwwLDAsMSkKKworREVGX01B UFBJTkcoTTdfdmRtcHksIlJkZDMyPXZkbXB5dyhSc3MzMixSdHQzMikiLCJSZGQzMj1jbXB5cnco UnNzMzIsUnR0MzIqKSIpCitERUZfTUFQUElORyhNN192ZG1weV9hY2MsIlJ4eDMyKz12ZG1weXco UnNzMzIsUnR0MzIpIiwiUnh4MzIrPWNtcHlydyhSc3MzMixSdHQzMiopIikKKworCisKKyNkZWZp bmUgQ01QWTEyOChUQUcsIE5BTUUsIE9QRVJBTkQxLCBXT1JEMCwgV09SRDEsIFdPUkQyLCBXT1JE MywgT1ApIFwKK1E2SU5TTihNN18jI1RBRywiUmQzMj0iIE5BTUUgIihSc3MzMiwiT1BFUkFORDEi KTo8PDE6c2F0IixBVFRSSUJTKEFfUkVTVFJJQ1RfU0xPVDNPTkxZLEFfUkVTVFJJQ1RfTk9TTE9U Ml9NUFksQV9OT1RFX05PU0xPVDJfTVBZKSwiQ29tcGxleCBNdWx0aXBseSAzMi1iaXQgcmVzdWx0 IHJlYWwiLCAgXAoreyBcCitmSElERShzaXplMTZzX3QgYWNjMTI4OylcCitmSElERShzaXplMTZz X3QgdG1wMTI4OylcCitmSElERShzaXplOHNfdCBhY2M2NDspXAordG1wMTI4ID0gZkNBU1Q4U18x NlMoZk1QWTMyU1MoZkdFVFdPUkQoV09SRDAsIFJzc1YpLCBmR0VUV09SRChXT1JEMSwgUnR0Vikp KTtcCithY2MxMjggPSBmQ0FTVDhTXzE2UyhmTVBZMzJTUyhmR0VUV09SRChXT1JEMiwgUnNzViks IGZHRVRXT1JEKFdPUkQzLCBSdHRWKSkpO1wKK2FjYzEyOCA9IE9QKHRtcDEyOCxhY2MxMjgpO1wK K2FjYzEyOCA9IGZTSElGVFIxMjgoYWNjMTI4LCAzMSk7XAorYWNjNjQgPSAgZkNBU1QxNlNfOFMo YWNjMTI4KTtcCitSZFYgPSBmU0FUVyhhY2M2NCk7XAorZkVYVEVOU0lPTl9BVURJTygpO30pCisK KworQ01QWTEyOCh3Y21weXJ3LCAiY21weXJ3IiwgIlJ0dDMyIiwgMCwgMCwgMSwgMSwgZlNVQjEy OCkKK0NNUFkxMjgod2NtcHlyd2MsICJjbXB5cnciLCAiUnR0MzIqIiwgMCwgMCwgMSwgMSwgZkFE RDEyOCkKK0NNUFkxMjgod2NtcHlpdywgImNtcHlpdyIsICJSdHQzMiIsIDAsIDEsIDEsIDAsIGZB REQxMjgpCitDTVBZMTI4KHdjbXB5aXdjLCAiY21weWl3IiwgIlJ0dDMyKiIsIDEsIDAsIDAsIDEs IGZTVUIxMjgpCisKKworI2RlZmluZSBDTVBZMTI4Uk5EKFRBRywgTkFNRSwgT1BFUkFORDEsIFdP UkQwLCBXT1JEMSwgV09SRDIsIFdPUkQzLCBPUCkgXAorUTZJTlNOKE03XyMjVEFHIyNfcm5kLCJS ZDMyPSIgTkFNRSAiKFJzczMyLCJPUEVSQU5EMSIpOjw8MTpybmQ6c2F0IixBVFRSSUJTKEFfUkVT VFJJQ1RfU0xPVDNPTkxZLEFfUkVTVFJJQ1RfTk9TTE9UMl9NUFksQV9OT1RFX05PU0xPVDJfTVBZ KSwiQ29tcGxleCBNdWx0aXBseSAzMi1iaXQgcmVzdWx0IHJlYWwiLCAgXAoreyBcCitmSElERShz aXplMTZzX3QgYWNjMTI4OylcCitmSElERShzaXplMTZzX3QgdG1wMTI4OylcCitmSElERShzaXpl MTZzX3QgY29uc3QxMjg7KVwKK2ZISURFKHNpemU4c190IGFjYzY0OylcCit0bXAxMjggPSBmQ0FT VDhTXzE2UyhmTVBZMzJTUyhmR0VUV09SRChXT1JEMCwgUnNzViksIGZHRVRXT1JEKFdPUkQxLCBS dHRWKSkpO1wKK2FjYzEyOCA9IGZDQVNUOFNfMTZTKGZNUFkzMlNTKGZHRVRXT1JEKFdPUkQyLCBS c3NWKSwgZkdFVFdPUkQoV09SRDMsIFJ0dFYpKSk7XAorY29uc3QxMjggPSBmQ0FTVDhTXzE2Uyhm Q09OU1RMTCgweDQwMDAwMDAwKSk7XAorYWNjMTI4ID0gT1AodG1wMTI4LGFjYzEyOCk7XAorYWNj MTI4ID0gZkFERDEyOChhY2MxMjgsY29uc3QxMjgpO1wKK2FjYzEyOCA9IGZTSElGVFIxMjgoYWNj MTI4LCAzMSk7XAorYWNjNjQgPSAgZkNBU1QxNlNfOFMoYWNjMTI4KTtcCitSZFYgPSBmU0FUVyhh Y2M2NCk7XAorZkVYVEVOU0lPTl9BVURJTygpO30pCisKK0NNUFkxMjhSTkQod2NtcHlydywgImNt cHlydyIsICJSdHQzMiIsIDAsIDAsIDEsIDEsIGZTVUIxMjgpCitDTVBZMTI4Uk5EKHdjbXB5cndj LCAiY21weXJ3IiwgIlJ0dDMyKiIsIDAsIDAsIDEsIDEsIGZBREQxMjgpCitDTVBZMTI4Uk5EKHdj bXB5aXcsICJjbXB5aXciLCAiUnR0MzIiLCAwLCAxLCAxLCAwLCBmQUREMTI4KQorQ01QWTEyOFJO RCh3Y21weWl3YywgImNtcHlpdyIsICJSdHQzMioiLCAxLCAwLCAwLCAxLCBmU1VCMTI4KQorCisK KworCmRpZmYgLS1naXQgYS90YXJnZXQvaGV4YWdvbi9pbXBvcnRlZC9zaGlmdC5pZGVmIGIvdGFy Z2V0L2hleGFnb24vaW1wb3J0ZWQvc2hpZnQuaWRlZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi44MWM0NDBmCi0tLSAvZGV2L251bGwKKysrIGIvdGFyZ2V0L2hleGFnb24vaW1w b3J0ZWQvc2hpZnQuaWRlZgpAQCAtMCwwICsxLDEyMTEgQEAKKy8qCisgKiAgQ29weXJpZ2h0KGMp IDIwMTktMjAyMCBRdWFsY29tbSBJbm5vdmF0aW9uIENlbnRlciwgSW5jLiBBbGwgUmlnaHRzIFJl c2VydmVkLgorICoKKyAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiAgdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg b3IKKyAqICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlz IHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1 bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll ZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogIGFsb25nIHdpdGggdGhpcyBw cm9ncmFtOyBpZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKi8K KworLyoKKyAqIFMtdHlwZSBJbnN0cnVjdGlvbnMKKyAqLworCisvKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIFNISUZUUyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKiovCisKKy8qIE5PVEU6IFJkZCA9IFJzICpyaWdodCogc2hpZnRzIGRvbid0 IG1ha2Ugc2Vuc2UgKi8KKy8qIE5PVEU6IFJkW2RdID0gUnNbc10gKnJpZ2h0KiBzaGlmdHMgd2l0 aCBzYXR1cmF0aW9uIGRvbid0IG1ha2Ugc2Vuc2UgKi8KKworCisjZGVmaW5lIFJTSElGVFRZUEVT KFRBR0VORCxSRUdELFJFR1MsUkVHU1RZUEUsQUNDLEFDQ1NSQyxTQVQsU0FUT1BULEFUVFJTKSBc CitRNklOU04oUzJfYXNyX3JfIyNUQUdFTkQsI1JFR0QgIjMyIiAjQUNDICI9YXNyKCIgI1JFR1Mg IjMyLFJ0MzIpIiAjU0FUT1BULEFUVFJJQlMoQVRUUlMpLCBcCisJIkFyaXRobWV0aWMgU2hpZnQg UmlnaHQgYnkgUmVnaXN0ZXIiLCBcCisJeyAgXAorICAgICAgICAgICAgICAgIGZISURFKHNpemU0 c190KSBzaGFtdD1mU1hUTig3LDMyLFJ0Vik7XAorCQlSRUdEIyNWID0gU0FUKEFDQ1NSQyBBQ0Mg ZkJJRElSX0FTSElGVFIoUkVHUyMjVixzaGFtdCxSRUdTVFlQRSkpOyAgXAorCX0pXAorXAorUTZJ TlNOKFMyX2FzbF9yXyMjVEFHRU5ELCNSRUdEICIzMiIgI0FDQyAiPWFzbCgiICNSRUdTICIzMixS dDMyKSIgI1NBVE9QVCxBVFRSSUJTKEFUVFJTKSwgXAorCSJBcml0aG1ldGljIFNoaWZ0IExlZnQg YnkgUmVnaXN0ZXIiLCBcCisJeyAgXAorICAgICAgICAgICAgICAgIGZISURFKHNpemU0c190KSBz aGFtdD1mU1hUTig3LDMyLFJ0Vik7XAorCQlSRUdEIyNWID0gU0FUKEFDQ1NSQyBBQ0MgZkJJRElS X0FTSElGVEwoUkVHUyMjVixzaGFtdCxSRUdTVFlQRSkpOyAgXAorCX0pXAorXAorUTZJTlNOKFMy X2xzcl9yXyMjVEFHRU5ELCNSRUdEICIzMiIgI0FDQyAiPWxzcigiICNSRUdTICIzMixSdDMyKSIg I1NBVE9QVCxBVFRSSUJTKEFUVFJTKSwgXAorCSJMb2dpY2FsIFNoaWZ0IFJpZ2h0IGJ5IFJlZ2lz dGVyIiwgXAorCXsgIFwKKyAgICAgICAgICAgICAgICBmSElERShzaXplNHNfdCkgc2hhbXQ9ZlNY VE4oNywzMixSdFYpO1wKKwkJUkVHRCMjViA9IFNBVChBQ0NTUkMgQUNDIGZCSURJUl9MU0hJRlRS KFJFR1MjI1Ysc2hhbXQsUkVHU1RZUEUpKTsgIFwKKwl9KVwKK1wKK1E2SU5TTihTMl9sc2xfcl8j I1RBR0VORCwjUkVHRCAiMzIiICNBQ0MgIj1sc2woIiAjUkVHUyAiMzIsUnQzMikiICNTQVRPUFQs QVRUUklCUyhBVFRSUyksIFwKKwkiTG9naWNhbCBTaGlmdCBMZWZ0IGJ5IFJlZ2lzdGVyIiwgXAor CXsgIFwKKyAgICAgICAgICAgICAgICBmSElERShzaXplNHNfdCkgc2hhbXQ9ZlNYVE4oNywzMixS dFYpO1wKKwkJUkVHRCMjViA9IFNBVChBQ0NTUkMgQUNDIGZCSURJUl9MU0hJRlRMKFJFR1MjI1Ys c2hhbXQsUkVHU1RZUEUpKTsgIFwKKwl9KQorCitSU0hJRlRUWVBFUyhyLFJkLFJzLDRfOCwsLGZF Q0hPLCwpCitSU0hJRlRUWVBFUyhwLFJkZCxSc3MsOF84LCwsZkVDSE8sLCkKK1JTSElGVFRZUEVT KHJfYWNjLFJ4LFJzLDRfOCwrLFJ4VixmRUNITywsQV9ST1BTXzIpCitSU0hJRlRUWVBFUyhwX2Fj YyxSeHgsUnNzLDhfOCwrLFJ4eFYsZkVDSE8sLEFfUk9QU18yKQorUlNISUZUVFlQRVMocl9uYWMs UngsUnMsNF84LC0sUnhWLGZFQ0hPLCxBX1JPUFNfMikKK1JTSElGVFRZUEVTKHBfbmFjLFJ4eCxS c3MsOF84LC0sUnh4VixmRUNITywsQV9ST1BTXzIpCisKK1JTSElGVFRZUEVTKHJfYW5kLFJ4LFJz LDRfOCwmLFJ4VixmRUNITywsQV9ST1BTXzIpCitSU0hJRlRUWVBFUyhyX29yLFJ4LFJzLDRfOCx8 LFJ4VixmRUNITywsQV9ST1BTXzIpCitSU0hJRlRUWVBFUyhwX2FuZCxSeHgsUnNzLDhfOCwmLFJ4 eFYsZkVDSE8sLEFfUk9QU18yKQorUlNISUZUVFlQRVMocF9vcixSeHgsUnNzLDhfOCx8LFJ4eFYs ZkVDSE8sLEFfUk9QU18yKQorUlNISUZUVFlQRVMocF94b3IsUnh4LFJzcyw4XzgsXixSeHhWLGZF Q0hPLCxBX1JPUFNfMikKKworCisjdW5kZWYgUlNISUZUVFlQRVMKKworLyogUmVnaXN0ZXIgc2hp ZnQgd2l0aCBzYXR1cmF0aW9uICovCisjZGVmaW5lIFJTQVRTSElGVFRZUEVTKFRBR0VORCxSRUdE LFJFR1MsUkVHU1RZUEUpIFwKK1E2SU5TTihTMl9hc3Jfcl8jI1RBR0VORCwjUkVHRCAiMzIiICI9 YXNyKCIgI1JFR1MgIjMyLFJ0MzIpOnNhdCIsQVRUUklCUygpLCBcCisJIkFyaXRobWV0aWMgU2hp ZnQgUmlnaHQgYnkgUmVnaXN0ZXIiLCBcCisJeyAgXAorICAgICAgICAgICAgICAgIGZISURFKHNp emU0c190KSBzaGFtdD1mU1hUTig3LDMyLFJ0Vik7XAorCQlSRUdEIyNWID0gZkJJRElSX0FTSElG VFJfU0FUKFJFR1MjI1Ysc2hhbXQsUkVHU1RZUEUpOyAgXAorCX0pXAorXAorUTZJTlNOKFMyX2Fz bF9yXyMjVEFHRU5ELCNSRUdEICIzMiIgIj1hc2woIiAjUkVHUyAiMzIsUnQzMik6c2F0IixBVFRS SUJTKCksIFwKKwkiQXJpdGhtZXRpYyBTaGlmdCBMZWZ0IGJ5IFJlZ2lzdGVyIiwgXAorCXsgIFwK KyAgICAgICAgICAgICAgICBmSElERShzaXplNHNfdCkgc2hhbXQ9ZlNYVE4oNywzMixSdFYpO1wK KwkJUkVHRCMjViA9IGZCSURJUl9BU0hJRlRMX1NBVChSRUdTIyNWLHNoYW10LFJFR1NUWVBFKTsg IFwKKwl9KQorCitSU0FUU0hJRlRUWVBFUyhyX3NhdCxSZCxScyw0XzgpCisKKworCisKKworI2Rl ZmluZSBJU0hJRlRUWVBFUyhUQUdFTkQsU0laRSxSRUdELFJFR1MsUkVHU1RZUEUsQUNDLEFDQ1NS QyxTQVQsU0FUT1BULEFUVFJTKSBcCitRNklOU04oUzJfYXNyX2lfIyNUQUdFTkQsI1JFR0QgIjMy IiAjQUNDICI9YXNyKCIgI1JFR1MgIjMyLCN1IiAjU0laRSAiKSIgI1NBVE9QVCxBVFRSSUJTKEFU VFJTKSwgXAorCSJBcml0aG1ldGljIFNoaWZ0IFJpZ2h0IGJ5IEltbWVkaWF0ZSIsIFwKKwl7IFJF R0QjI1YgPSBTQVQoQUNDU1JDIEFDQyBmQVNISUZUUihSRUdTIyNWLHVpVixSRUdTVFlQRSkpOyB9 KSBcCitcCitRNklOU04oUzJfbHNyX2lfIyNUQUdFTkQsI1JFR0QgIjMyIiAjQUNDICI9bHNyKCIg I1JFR1MgIjMyLCN1IiAjU0laRSAiKSIgI1NBVE9QVCxBVFRSSUJTKEFUVFJTKSwgXAorCSJMb2dp Y2FsIFNoaWZ0IFJpZ2h0IGJ5IEltbWVkaWF0ZSIsIFwKKwl7IFJFR0QjI1YgPSBTQVQoQUNDU1JD IEFDQyBmTFNISUZUUihSRUdTIyNWLHVpVixSRUdTVFlQRSkpOyB9KSBcCitcCitRNklOU04oUzJf YXNsX2lfIyNUQUdFTkQsI1JFR0QgIjMyIiAjQUNDICI9YXNsKCIgI1JFR1MgIjMyLCN1IiAjU0la RSAiKSIgI1NBVE9QVCxBVFRSSUJTKEFUVFJTKSwgXAorCSJTaGlmdCBMZWZ0IGJ5IEltbWVkaWF0 ZSIsIFwKKwl7IFJFR0QjI1YgPSBTQVQoQUNDU1JDIEFDQyBmQVNISUZUTChSRUdTIyNWLHVpVixS RUdTVFlQRSkpOyB9KSBcCitRNklOU04oUzZfcm9sX2lfIyNUQUdFTkQsI1JFR0QgIjMyIiAjQUND ICI9cm9sKCIgI1JFR1MgIjMyLCN1IiAjU0laRSAiKSIgI1NBVE9QVCxBVFRSSUJTKEFUVFJTKSwg XAorCSJSb3RhdGUgTGVmdCBieSBJbW1lZGlhdGUiLCBcCisJeyBSRUdEIyNWID0gU0FUKEFDQ1NS QyBBQ0MgZlJPVEwoUkVHUyMjVix1aVYsUkVHU1RZUEUpKTsgfSkKKworCisjZGVmaW5lIElTSElG VFRZUEVTX09OTFlfQVNMKFRBR0VORCxTSVpFLFJFR0QsUkVHUyxSRUdTVFlQRSxBQ0MsQUNDU1JD LFNBVCxTQVRPUFQpIFwKK1E2SU5TTihTMl9hc2xfaV8jI1RBR0VORCwjUkVHRCAiMzIiICNBQ0Mg Ij1hc2woIiAjUkVHUyAiMzIsI3UiICNTSVpFICIpIiAjU0FUT1BULEFUVFJJQlMoKSwgXAorCSIi LCBcCisJeyBSRUdEIyNWID0gU0FUKEFDQ1NSQyBBQ0MgZkFTSElGVEwoUkVHUyMjVix1aVYsUkVH U1RZUEUpKTsgfSkKKworI2RlZmluZSBJU0hJRlRUWVBFU19PTkxZX0FTUihUQUdFTkQsU0laRSxS RUdELFJFR1MsUkVHU1RZUEUsQUNDLEFDQ1NSQyxTQVQsU0FUT1BUKSBcCitRNklOU04oUzJfYXNy X2lfIyNUQUdFTkQsI1JFR0QgIjMyIiAjQUNDICI9YXNyKCIgI1JFR1MgIjMyLCN1IiAjU0laRSAi KSIgI1NBVE9QVCxBVFRSSUJTKCksIFwKKwkiIiwgXAorCXsgUkVHRCMjViA9IFNBVChBQ0NTUkMg QUNDIGZBU0hJRlRSKFJFR1MjI1YsdWlWLFJFR1NUWVBFKSk7IH0pCisKKworI2RlZmluZSBJU0hJ RlRUWVBFU19OT0FTUihUQUdFTkQsU0laRSxSRUdELFJFR1MsUkVHU1RZUEUsQUNDLEFDQ1NSQyxT QVQsU0FUT1BUKSBcCitRNklOU04oUzJfbHNyX2lfIyNUQUdFTkQsI1JFR0QgIjMyIiAjQUNDICI9 bHNyKCIgI1JFR1MgIjMyLCN1IiAjU0laRSAiKSIgI1NBVE9QVCxBVFRSSUJTKCksIFwKKwkiTG9n aWNhbCBTaGlmdCBSaWdodCBieSBSZWdpc3RlciIsIFwKKwl7IFJFR0QjI1YgPSBTQVQoQUNDU1JD IEFDQyBmTFNISUZUUihSRUdTIyNWLHVpVixSRUdTVFlQRSkpOyB9KSBcCitRNklOU04oUzJfYXNs X2lfIyNUQUdFTkQsI1JFR0QgIjMyIiAjQUNDICI9YXNsKCIgI1JFR1MgIjMyLCN1IiAjU0laRSAi KSIgI1NBVE9QVCxBVFRSSUJTKCksIFwKKwkiU2hpZnQgTGVmdCBieSBSZWdpc3RlciIsIFwKKwl7 IFJFR0QjI1YgPSBTQVQoQUNDU1JDIEFDQyBmQVNISUZUTChSRUdTIyNWLHVpVixSRUdTVFlQRSkp OyB9KSBcCitRNklOU04oUzZfcm9sX2lfIyNUQUdFTkQsI1JFR0QgIjMyIiAjQUNDICI9cm9sKCIg I1JFR1MgIjMyLCN1IiAjU0laRSAiKSIgI1NBVE9QVCxBVFRSSUJTKCksIFwKKwkiUm90YXRlIExl ZnQgYnkgSW1tZWRpYXRlIiwgXAorCXsgUkVHRCMjViA9IFNBVChBQ0NTUkMgQUNDIGZST1RMKFJF R1MjI1YsdWlWLFJFR1NUWVBFKSk7IH0pCisKKworCitJU0hJRlRUWVBFUyhyLDUsUmQsUnMsNF80 LCwsZkVDSE8sLCkKK0lTSElGVFRZUEVTKHAsNixSZGQsUnNzLDhfOCwsLGZFQ0hPLCwpCitJU0hJ RlRUWVBFUyhyX2FjYyw1LFJ4LFJzLDRfNCwrLFJ4VixmRUNITywsQV9ST1BTXzIpCitJU0hJRlRU WVBFUyhwX2FjYyw2LFJ4eCxSc3MsOF84LCssUnh4VixmRUNITywsQV9ST1BTXzIpCitJU0hJRlRU WVBFUyhyX25hYyw1LFJ4LFJzLDRfNCwtLFJ4VixmRUNITywsQV9ST1BTXzIpCitJU0hJRlRUWVBF UyhwX25hYyw2LFJ4eCxSc3MsOF84LC0sUnh4VixmRUNITywsQV9ST1BTXzIpCisKK0lTSElGVFRZ UEVTX05PQVNSKHJfeGFjYyw1LFJ4LFJzLDRfNCxeLCBSeFYsZkVDSE8sKQorSVNISUZUVFlQRVNf Tk9BU1IocF94YWNjLDYsUnh4LFJzcyw4XzgsXiwgUnh4VixmRUNITywpCisKK0lTSElGVFRZUEVT KHJfYW5kLDUsUngsUnMsNF80LCYsUnhWLGZFQ0hPLCxBX1JPUFNfMikKK0lTSElGVFRZUEVTKHJf b3IsNSxSeCxScyw0XzQsfCxSeFYsZkVDSE8sLEFfUk9QU18yKQorSVNISUZUVFlQRVMocF9hbmQs NixSeHgsUnNzLDhfOCwmLFJ4eFYsZkVDSE8sLEFfUk9QU18yKQorSVNISUZUVFlQRVMocF9vciw2 LFJ4eCxSc3MsOF84LHwsUnh4VixmRUNITywsQV9ST1BTXzIpCisKK0lTSElGVFRZUEVTX09OTFlf QVNMKHJfc2F0LDUsUmQsUnMsNF84LCwsZlNBVCw6c2F0KQorCisKK1E2SU5TTihTMl9hc3JfaV9y X3JuZCwiUmQzMj1hc3IoUnMzMiwjdTUpOnJuZCIsQVRUUklCUygpLAorICAgICAgICJTaGlmdCBy aWdodCB3aXRoIHJvdW5kIiwKKyAgICAgICB7IFJkViA9IGZBU0hJRlRSKCgoZkFTSElGVFIoUnNW LHVpViw0XzgpKSsxKSwxLDhfOCk7IH0pCisKKworREVGX1YyX0NPTkRfTUFQUElORyhTMl9hc3Jf aV9yX3JuZF9nb29kc3ludGF4LCJSZDMyPWFzcnJuZChSczMyLCN1NSkiLCIjdTU9PTAiLCJSZDMy PVJzMzIiLCJSZDMyPWFzcihSczMyLCN1NS0xKTpybmQiKQorCisKKworCitRNklOU04oUzJfYXNy X2lfcF9ybmQsIlJkZDMyPWFzcihSc3MzMiwjdTYpOnJuZCIsQVRUUklCUygpLCAiU2hpZnQgcmln aHQgd2l0aCByb3VuZCIsCit7IGZISURFKHNpemU4dV90IHRtcDspCisgIGZISURFKHNpemU4dV90 IHJuZDspCisgIHRtcCA9IGZBU0hJRlRSKFJzc1YsdWlWLDhfOCk7CisgIHJuZCA9IHRtcCAmIDE7 CisgIFJkZFYgPSBmQVNISUZUUih0bXAsMSw4XzgpICsgcm5kOyB9KQorCisKK0RFRl9WNV9DT05E X01BUFBJTkcoUzJfYXNyX2lfcF9ybmRfZ29vZHN5bnRheCwiUmRkMzI9YXNycm5kKFJzczMyLCN1 NikiLCIjdTY9PTAiLCJSZGQzMj1Sc3MzMiIsIlJkZDMyPWFzcihSc3MzMiwjdTYtMSk6cm5kIikK KworCisKK1E2SU5TTihTNF9sc2xpLCJSZDMyPWxzbCgjczYsUnQzMikiLEFUVFJJQlMoKSwgIlNo aWZ0IGFuIGltbWVkaWF0ZSBsZWZ0IGJ5IHJlZ2lzdGVyIGFtb3VudCIsCit7CisJZkhJREUoc2l6 ZTRzX3QpIHNoYW10ID0gZlNYVE4oNywzMixSdFYpOworCVJkViA9IGZCSURJUl9MU0hJRlRMKHNp VixzaGFtdCw0XzgpOworfSkKKworCisKKworUTZJTlNOKFMyX2FkZGFzbF9ycnJpLCJSZDMyPWFk ZGFzbChSdDMyLFJzMzIsI3UzKSIsQVRUUklCUygpLAorCSJTaGlmdCBsZWZ0IGJ5IHNtYWxsIGFt b3VudCBhbmQgYWRkIiwKKwl7IFJkViA9IFJ0ViArIGZBU0hJRlRMKFJzVix1aVYsNF80KTsgfSkK KworCisKKyNkZWZpbmUgU0hJRlRPUEkoVEFHRU5ELElOTkVST1AsSU5ORVJTRU0pXAorUTZJTlNO KFM0X2FuZGlfIyNUQUdFTkQsIlJ4MzI9YW5kKCN1OCwiSU5ORVJPUCIpIiwsIlNoaWZ0LW9wIix7 UnhWPWZJTU1FWFQodWlWKSZJTk5FUlNFTTt9KVwKK1E2SU5TTihTNF9vcmlfIyNUQUdFTkQsICJS eDMyPW9yKCN1OCwiSU5ORVJPUCIpIiwsIlNoaWZ0LW9wIix7UnhWPWZJTU1FWFQodWlWKXxJTk5F UlNFTTt9KVwKK1E2SU5TTihTNF9hZGRpXyMjVEFHRU5ELCJSeDMyPWFkZCgjdTgsIklOTkVST1Ai KSIsLCJTaGlmdC1vcCIse1J4Vj1mSU1NRVhUKHVpVikrSU5ORVJTRU07fSlcCitRNklOU04oUzRf c3ViaV8jI1RBR0VORCwiUngzMj1zdWIoI3U4LCJJTk5FUk9QIikiLCwiU2hpZnQtb3AiLHtSeFY9 ZklNTUVYVCh1aVYpLUlOTkVSU0VNO30pCisKKworU0hJRlRPUEkoYXNsX3JpLCJhc2woUngzMiwj VTUpIiwoUnhWPDxVaVYpKQorU0hJRlRPUEkobHNyX3JpLCJsc3IoUngzMiwjVTUpIiwoKCh1bnNp Z25lZCBpbnQpUnhWKT4+VWlWKSkKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKi8KKy8qIFBFUk1VVEVTICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KiovCitRNklOU04oUzJfdmFsaWduaWIsIlJkZDMyPXZhbGlnbmIoUnR0MzIsUnNzMzIsI3UzKSIs CitBVFRSSUJTKCksICJWZWN0b3IgYWxpZ24gYnl0ZXMiLAoreworICBSZGRWID0gKGZMU0hJRlRS KFJzc1YsdWlWKjgsOF84KSl8KGZBU0hJRlRMKFJ0dFYsKCg4LXVpVikqOCksOF84KSk7Cit9KQor CitRNklOU04oUzJfdmFsaWducmIsIlJkZDMyPXZhbGlnbmIoUnR0MzIsUnNzMzIsUHU0KSIsCitB VFRSSUJTKCksICJBbGlnbiB3aXRoIHJlZ2lzdGVyIiwKK3sgZlBSRURVU0VfVElNSU5HKCk7UmRk ViA9IGZMU0hJRlRSKFJzc1YsKFB1ViYweDcpKjgsOF84KXwoZkFTSElGVEwoUnR0ViwoOC0oUHVW JjB4NykpKjgsOF84KSk7fSkKKworUTZJTlNOKFMyX3ZzcGxpY2VpYiwiUmRkMzI9dnNwbGljZWIo UnNzMzIsUnR0MzIsI3UzKSIsCitBVFRSSUJTKCksICJWZWN0b3Igc3BsaWNlIGJ5dGVzIiwKK3sg UmRkViA9IGZBU0hJRlRMKFJ0dFYsdWlWKjgsOF84KSB8IGZaWFROKHVpVio4LDY0LFJzc1YpOyB9 KQorCitRNklOU04oUzJfdnNwbGljZXJiLCJSZGQzMj12c3BsaWNlYihSc3MzMixSdHQzMixQdTQp IiwKK0FUVFJJQlMoKSwgIlNwbGljZSB3aXRoIHJlZ2lzdGVyIiwKK3sgZlBSRURVU0VfVElNSU5H KCk7UmRkViA9IGZBU0hJRlRMKFJ0dFYsKFB1ViY3KSo4LDhfOCkgfCBmWlhUTigoUHVWJjcpKjgs NjQsUnNzVik7IH0pCisKK1E2SU5TTihTMl92c3BsYXRyaCwiUmRkMzI9dnNwbGF0aChSczMyKSIs CitBVFRSSUJTKCksICJWZWN0b3Igc3BsYXQgaGFsZndvcmRzIGZyb20gcmVnaXN0ZXIiLAorewor ICAgICAgICBmSElERShpbnQgaTspCisgICAgICAgIGZvciAoaT0wO2k8NDtpKyspIHsKKwkgIGZT RVRIQUxGKGksUmRkViwgZkdFVEhBTEYoMCxSc1YpKTsKKyAgICAgICAgfQorfSkKKworCitRNklO U04oUzJfdnNwbGF0cmIsIlJkMzI9dnNwbGF0YihSczMyKSIsCitBVFRSSUJTKCksICJWZWN0b3Ig c3BsYXQgYnl0ZXMgZnJvbSByZWdpc3RlciIsCit7CisgICAgICAgIGZISURFKGludCBpOykKKyAg ICAgICAgZm9yIChpPTA7aTw0O2krKykgeworCSAgZlNFVEJZVEUoaSxSZFYsIGZHRVRCWVRFKDAs UnNWKSk7CisgICAgICAgIH0KK30pCisKK1E2SU5TTihTNl92c3BsYXRyYnAsIlJkZDMyPXZzcGxh dGIoUnMzMikiLAorQVRUUklCUygpLCAiVmVjdG9yIHNwbGF0IGJ5dGVzIGZyb20gcmVnaXN0ZXIi LAoreworICAgICAgICBmSElERShpbnQgaTspCisgICAgICAgIGZvciAoaT0wO2k8ODtpKyspIHsK KwkgIGZTRVRCWVRFKGksUmRkViwgZkdFVEJZVEUoMCxSc1YpKTsKKyAgICAgICAgfQorfSkKKwor CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyog SW5zZXJ0L0V4dHJhY3RbdV0gICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworUTZJTlNOKFMyX2luc2Vy dCwiUngzMj1pbnNlcnQoUnMzMiwjdTUsI1U1KSIsCitBVFRSSUJTKCksICJJbnNlcnQgYml0cyIs Cit7CisgICAgICAgIGZISURFKGludCkgd2lkdGg9dWlWOworICAgICAgICBmSElERShpbnQpIG9m ZnNldD1VaVY7CisJLyogY2xlYXIgYml0cyBpbiBSeHggd2hlcmUgbmV3IGJpdHMgZ28gKi8KKwlS eFYgJj0gfigoKGZDT05TVExMKDEpPDx3aWR0aCktMSk8PG9mZnNldCk7CisJLyogT1IgaW4gbmV3 IGJpdHMgKi8KKwlSeFYgfD0gKChSc1YgJiAoKGZDT05TVExMKDEpPDx3aWR0aCktMSkpIDw8IG9m ZnNldCk7Cit9KQorCisKK1E2SU5TTihTMl90YWJsZWlkeGIsIlJ4MzI9dGFibGVpZHhiKFJzMzIs I3U0LCNTNik6cmF3IiwKK0FUVFJJQlMoQV9BUkNIVjIpLCAiRXh0cmFjdCBhbmQgaW5zZXJ0IGJp dHMiLAoreworICAgICAgICBmSElERShpbnQpIHdpZHRoPXVpVjsKKyAgICAgICAgZkhJREUoaW50 KSBvZmZzZXQ9U2lWOworICAgICAgICBmSElERShpbnQpIGZpZWxkID0gZkVYVFJBQ1RVX0JJRElS KFJzVix3aWR0aCxvZmZzZXQpOworICAgICAgICBmSU5TRVJUX0JJVFMoUnhWLHdpZHRoLDAsZmll bGQpOworfSkKKworUTZJTlNOKFMyX3RhYmxlaWR4aCwiUngzMj10YWJsZWlkeGgoUnMzMiwjdTQs I1M2KTpyYXciLAorQVRUUklCUyhBX0FSQ0hWMiksICJFeHRyYWN0IGFuZCBpbnNlcnQgYml0cyIs Cit7CisgICAgICAgIGZISURFKGludCkgd2lkdGg9dWlWOworICAgICAgICBmSElERShpbnQpIG9m ZnNldD1TaVYrMTsKKyAgICAgICAgZkhJREUoaW50KSBmaWVsZCA9IGZFWFRSQUNUVV9CSURJUihS c1Ysd2lkdGgsb2Zmc2V0KTsKKyAgICAgICAgZklOU0VSVF9CSVRTKFJ4Vix3aWR0aCwxLGZpZWxk KTsKK30pCisKK1E2SU5TTihTMl90YWJsZWlkeHcsIlJ4MzI9dGFibGVpZHh3KFJzMzIsI3U0LCNT Nik6cmF3IiwKK0FUVFJJQlMoQV9BUkNIVjIpLCAiRXh0cmFjdCBhbmQgaW5zZXJ0IGJpdHMiLAor eworICAgICAgICBmSElERShpbnQpIHdpZHRoPXVpVjsKKyAgICAgICAgZkhJREUoaW50KSBvZmZz ZXQ9U2lWKzI7CisgICAgICAgIGZISURFKGludCkgZmllbGQgPSBmRVhUUkFDVFVfQklESVIoUnNW LHdpZHRoLG9mZnNldCk7CisgICAgICAgIGZJTlNFUlRfQklUUyhSeFYsd2lkdGgsMixmaWVsZCk7 Cit9KQorCitRNklOU04oUzJfdGFibGVpZHhkLCJSeDMyPXRhYmxlaWR4ZChSczMyLCN1NCwjUzYp OnJhdyIsCitBVFRSSUJTKEFfQVJDSFYyKSwgIkV4dHJhY3QgYW5kIGluc2VydCBiaXRzIiwKK3sK KyAgICAgICAgZkhJREUoaW50KSB3aWR0aD11aVY7CisgICAgICAgIGZISURFKGludCkgb2Zmc2V0 PVNpViszOworICAgICAgICBmSElERShpbnQpIGZpZWxkID0gZkVYVFJBQ1RVX0JJRElSKFJzVix3 aWR0aCxvZmZzZXQpOworICAgICAgICBmSU5TRVJUX0JJVFMoUnhWLHdpZHRoLDMsZmllbGQpOwor fSkKKworREVGX1YyX01BUFBJTkcoUzJfdGFibGVpZHhiX2dvb2RzeW50YXgsIlJ4MzI9dGFibGVp ZHhiKFJzMzIsI3U0LCNVNSkiLCJSeDMyPXRhYmxlaWR4YihSczMyLCN1NCwjVTUpOnJhdyIpCitE RUZfVjJfTUFQUElORyhTMl90YWJsZWlkeGhfZ29vZHN5bnRheCwiUngzMj10YWJsZWlkeGgoUnMz MiwjdTQsI1U1KSIsIlJ4MzI9dGFibGVpZHhoKFJzMzIsI3U0LCNVNS0xKTpyYXciKQorREVGX1Yy X01BUFBJTkcoUzJfdGFibGVpZHh3X2dvb2RzeW50YXgsIlJ4MzI9dGFibGVpZHh3KFJzMzIsI3U0 LCNVNSkiLCJSeDMyPXRhYmxlaWR4dyhSczMyLCN1NCwjVTUtMik6cmF3IikKK0RFRl9WMl9NQVBQ SU5HKFMyX3RhYmxlaWR4ZF9nb29kc3ludGF4LCJSeDMyPXRhYmxlaWR4ZChSczMyLCN1NCwjVTUp IiwiUngzMj10YWJsZWlkeGQoUnMzMiwjdTQsI1U1LTMpOnJhdyIpCisKKworCisKKworUTZJTlNO KEE0X2JpdHNwbGl0aSwiUmRkMzI9Yml0c3BsaXQoUnMzMiwjdTUpIiwKK0FUVFJJQlMoKSwgIlNw bGl0IGEgYml0ZmllbGQgaW50byB0d28gcmVnaXN0ZXJzIiwKK3sKKyAgICAgICAgZlNFVFdPUkQo MSxSZGRWLChmQ0FTVDRfNHUoUnNWKT4+dWlWKSk7CisgICAgICAgIGZTRVRXT1JEKDAsUmRkVixm WlhUTih1aVYsMzIsUnNWKSk7Cit9KQorCitRNklOU04oQTRfYml0c3BsaXQsIlJkZDMyPWJpdHNw bGl0KFJzMzIsUnQzMikiLAorQVRUUklCUygpLCAiU3BsaXQgYSBiaXRmaWVsZCBpbnRvIHR3byBy ZWdpc3RlcnMiLAoreworCQlmSElERShzaXplNHVfdCkgc2hhbXQgPSBmWlhUTig1LDMyLFJ0Vik7 CisgICAgICAgIGZTRVRXT1JEKDEsUmRkViwoZkNBU1Q0XzR1KFJzVik+PnNoYW10KSk7CisgICAg ICAgIGZTRVRXT1JEKDAsUmRkVixmWlhUTihzaGFtdCwzMixSc1YpKTsKK30pCisKKworCisKK1E2 SU5TTihTNF9leHRyYWN0LCJSZDMyPWV4dHJhY3QoUnMzMiwjdTUsI1U1KSIsCitBVFRSSUJTKCks ICJFeHRyYWN0IHNpZ25lZCBiaXRmaWVsZCIsCit7CisgICAgICAgIGZISURFKGludCkgd2lkdGg9 dWlWOworICAgICAgICBmSElERShpbnQpIG9mZnNldD1VaVY7CisJCVJkViA9IGZTWFROKHdpZHRo LDMyLChmQ0FTVDRfNHUoUnNWKSA+PiBvZmZzZXQpKTsKK30pCisKKworUTZJTlNOKFMyX2V4dHJh Y3R1LCJSZDMyPWV4dHJhY3R1KFJzMzIsI3U1LCNVNSkiLAorQVRUUklCUygpLCAiRXh0cmFjdCB1 bnNpZ25lZCBiaXRmaWVsZCIsCit7CisgICAgICAgIGZISURFKGludCkgd2lkdGg9dWlWOworICAg ICAgICBmSElERShpbnQpIG9mZnNldD1VaVY7CisJCVJkViA9IGZaWFROKHdpZHRoLDMyLChmQ0FT VDRfNHUoUnNWKSA+PiBvZmZzZXQpKTsKK30pCisKK1E2SU5TTihTMl9pbnNlcnRwLCJSeHgzMj1p bnNlcnQoUnNzMzIsI3U2LCNVNikiLAorQVRUUklCUygpLCAiSW5zZXJ0IGJpdHMiLAoreworICAg ICAgICBmSElERShpbnQpIHdpZHRoPXVpVjsKKyAgICAgIAlmSElERShpbnQpIG9mZnNldD1VaVY7 CisJCS8qIGNsZWFyIGJpdHMgaW4gUnh4IHdoZXJlIG5ldyBiaXRzIGdvICovCisJCVJ4eFYgJj0g figoKGZDT05TVExMKDEpPDx3aWR0aCktMSk8PG9mZnNldCk7CisJCS8qIE9SIGluIG5ldyBiaXRz ICovCisJCVJ4eFYgfD0gKChSc3NWICYgKChmQ09OU1RMTCgxKTw8d2lkdGgpLTEpKSA8PCBvZmZz ZXQpOworfSkKKworCitRNklOU04oUzRfZXh0cmFjdHAsIlJkZDMyPWV4dHJhY3QoUnNzMzIsI3U2 LCNVNikiLAorQVRUUklCUygpLCAiRXh0cmFjdCBzaWduZWQgYml0ZmllbGQiLAoreworICAgICAg ICBmSElERShpbnQpIHdpZHRoPXVpVjsKKyAgICAgICAgZkhJREUoaW50KSBvZmZzZXQ9VWlWOwor CVJkZFYgPSBmU1hUTih3aWR0aCw2NCwoZkNBU1Q4Xzh1KFJzc1YpID4+IG9mZnNldCkpOworfSkK KworCitRNklOU04oUzJfZXh0cmFjdHVwLCJSZGQzMj1leHRyYWN0dShSc3MzMiwjdTYsI1U2KSIs CitBVFRSSUJTKCksICJFeHRyYWN0IHVuc2lnbmVkIGJpdGZpZWxkIiwKK3sKKyAgICAgICAgZkhJ REUoaW50KSB3aWR0aD11aVY7CisgICAgICAgIGZISURFKGludCkgb2Zmc2V0PVVpVjsKKwlSZGRW ID0gZlpYVE4od2lkdGgsNjQsKGZDQVNUOF84dShSc3NWKSA+PiBvZmZzZXQpKTsKK30pCisKKwor CisKK1E2SU5TTihTMl9tYXNrLCJSZDMyPW1hc2soI3U1LCNVNSkiLAorQVRUUklCUygpLCAiRm9y bSBtYXNrIGZyb20gaW1tZWRpYXRlIiwKK3sKKyAgICBSZFYgPSAoKDE8PHVpViktMSkgPDwgVWlW OworfSkKKworCisKKworCitRNklOU04oUzJfaW5zZXJ0X3JwLCJSeDMyPWluc2VydChSczMyLFJ0 dDMyKSIsCitBVFRSSUJTKCksICJJbnNlcnQgYml0cyIsCit7CisgICAgICAgIGZISURFKGludCkg d2lkdGg9ZlpYVE4oNiwzMiwoZkdFVFdPUkQoMSxSdHRWKSkpOworICAgICAgICBmSElERShpbnQp IG9mZnNldD1mU1hUTig3LDMyLChmR0VUV09SRCgwLFJ0dFYpKSk7CisJZkhJREUoc2l6ZTh1X3Qp IG1hc2sgPSAoKGZDT05TVExMKDEpPDx3aWR0aCktMSk7CisJaWYgKG9mZnNldCA8IDApIHsKKwkJ UnhWID0gMDsKKwl9IGVsc2UgeworCQkvKiBjbGVhciBiaXRzIGluIFJ4eCB3aGVyZSBuZXcgYml0 cyBnbyAqLworCQlSeFYgJj0gfihtYXNrPDxvZmZzZXQpOworCQkvKiBPUiBpbiBuZXcgYml0cyAq LworCQlSeFYgfD0gKChSc1YgJiBtYXNrKSA8PCBvZmZzZXQpOworCX0KK30pCisKKworUTZJTlNO KFM0X2V4dHJhY3RfcnAsIlJkMzI9ZXh0cmFjdChSczMyLFJ0dDMyKSIsCitBVFRSSUJTKCksICJF eHRyYWN0IHNpZ25lZCBiaXRmaWVsZCIsCit7CisgICAgICAgIGZISURFKGludCkgd2lkdGg9ZlpY VE4oNiwzMiwoZkdFVFdPUkQoMSxSdHRWKSkpOworICAgICAgICBmSElERShpbnQpIG9mZnNldD1m U1hUTig3LDMyLChmR0VUV09SRCgwLFJ0dFYpKSk7CisJUmRWID0gZlNYVE4od2lkdGgsNjQsZkJJ RElSX0xTSElGVFIoZkNBU1Q0Xzh1KFJzViksb2Zmc2V0LDRfOCkpOworfSkKKworCisKK1E2SU5T TihTMl9leHRyYWN0dV9ycCwiUmQzMj1leHRyYWN0dShSczMyLFJ0dDMyKSIsCitBVFRSSUJTKCks ICJFeHRyYWN0IHVuc2lnbmVkIGJpdGZpZWxkIiwKK3sKKyAgICAgICAgZkhJREUoaW50KSB3aWR0 aD1mWlhUTig2LDMyLChmR0VUV09SRCgxLFJ0dFYpKSk7CisgICAgICAgIGZISURFKGludCkgb2Zm c2V0PWZTWFROKDcsMzIsKGZHRVRXT1JEKDAsUnR0VikpKTsKKwlSZFYgPSBmWlhUTih3aWR0aCw2 NCxmQklESVJfTFNISUZUUihmQ0FTVDRfOHUoUnNWKSxvZmZzZXQsNF84KSk7Cit9KQorCitRNklO U04oUzJfaW5zZXJ0cF9ycCwiUnh4MzI9aW5zZXJ0KFJzczMyLFJ0dDMyKSIsCitBVFRSSUJTKCks ICJJbnNlcnQgYml0cyIsCit7CisgICAgICAgIGZISURFKGludCkgd2lkdGg9ZlpYVE4oNiwzMiwo ZkdFVFdPUkQoMSxSdHRWKSkpOworICAgICAgICBmSElERShpbnQpIG9mZnNldD1mU1hUTig3LDMy LChmR0VUV09SRCgwLFJ0dFYpKSk7CisJZkhJREUoc2l6ZTh1X3QpIG1hc2sgPSAoKGZDT05TVExM KDEpPDx3aWR0aCktMSk7CisJaWYgKG9mZnNldCA8IDApIHsKKwkJUnh4ViA9IDA7CisJfSBlbHNl IHsKKwkJLyogY2xlYXIgYml0cyBpbiBSeHggd2hlcmUgbmV3IGJpdHMgZ28gKi8KKwkJUnh4ViAm PSB+KG1hc2s8PG9mZnNldCk7CisJCS8qIE9SIGluIG5ldyBiaXRzICovCisJCVJ4eFYgfD0gKChS c3NWICYgbWFzaykgPDwgb2Zmc2V0KTsKKwl9Cit9KQorCisKK1E2SU5TTihTNF9leHRyYWN0cF9y cCwiUmRkMzI9ZXh0cmFjdChSc3MzMixSdHQzMikiLAorQVRUUklCUygpLCAiRXh0cmFjdCBzaWdu ZWQgYml0ZmllbGQiLAoreworICAgICAgICBmSElERShpbnQpIHdpZHRoPWZaWFROKDYsMzIsKGZH RVRXT1JEKDEsUnR0VikpKTsKKyAgICAgICAgZkhJREUoaW50KSBvZmZzZXQ9ZlNYVE4oNywzMiwo ZkdFVFdPUkQoMCxSdHRWKSkpOworCVJkZFYgPSBmU1hUTih3aWR0aCw2NCxmQklESVJfTFNISUZU UihmQ0FTVDhfOHUoUnNzViksb2Zmc2V0LDhfOCkpOworfSkKKworCitRNklOU04oUzJfZXh0cmFj dHVwX3JwLCJSZGQzMj1leHRyYWN0dShSc3MzMixSdHQzMikiLAorQVRUUklCUygpLCAiRXh0cmFj dCB1bnNpZ25lZCBiaXRmaWVsZCIsCit7CisgICAgICAgIGZISURFKGludCkgd2lkdGg9ZlpYVE4o NiwzMiwoZkdFVFdPUkQoMSxSdHRWKSkpOworICAgICAgICBmSElERShpbnQpIG9mZnNldD1mU1hU Tig3LDMyLChmR0VUV09SRCgwLFJ0dFYpKSk7CisJUmRkViA9IGZaWFROKHdpZHRoLDY0LGZCSURJ Ul9MU0hJRlRSKGZDQVNUOF84dShSc3NWKSxvZmZzZXQsOF84KSk7Cit9KQorCisvKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIHRzdGJpdC9zZXRiaXQv Y2xyYml0ICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKiovCisKK1E2SU5TTihTMl90c3RiaXRfaSwiUGQ0PXRzdGJp dChSczMyLCN1NSkiLAorQVRUUklCUygpLCAiVGVzdCBhIGJpdCIsCit7CisJUGRWID0gZjhCSVRT T0YoKFJzViAmICgxPDx1aVYpKSAhPSAwKTsKK30pCisKK1E2SU5TTihTNF9udHN0Yml0X2ksIlBk ND0hdHN0Yml0KFJzMzIsI3U1KSIsCitBVFRSSUJTKCksICJUZXN0IGEgYml0IiwKK3sKKwlQZFYg PSBmOEJJVFNPRigoUnNWICYgKDE8PHVpVikpID09IDApOworfSkKKworUTZJTlNOKFMyX3NldGJp dF9pLCJSZDMyPXNldGJpdChSczMyLCN1NSkiLAorQVRUUklCUygpLCAiU2V0IGEgYml0IiwKK3sK KwlSZFYgPSAoUnNWIHwgKDE8PHVpVikpOworfSkKKworUTZJTlNOKFMyX3RvZ2dsZWJpdF9pLCJS ZDMyPXRvZ2dsZWJpdChSczMyLCN1NSkiLAorQVRUUklCUygpLCAiVG9nZ2xlIGEgYml0IiwKK3sK KwlSZFYgPSAoUnNWIF4gKDE8PHVpVikpOworfSkKKworUTZJTlNOKFMyX2NscmJpdF9pLCJSZDMy PWNscmJpdChSczMyLCN1NSkiLAorQVRUUklCUygpLCAiQ2xlYXIgYSBiaXQiLAoreworCVJkViA9 IChSc1YgJiAofigxPDx1aVYpKSk7Cit9KQorCisKKworLyogdXNpbmcgYSByZWdpc3RlciAqLwor UTZJTlNOKFMyX3RzdGJpdF9yLCJQZDQ9dHN0Yml0KFJzMzIsUnQzMikiLAorQVRUUklCUygpLCAi VGVzdCBhIGJpdCIsCit7CisJUGRWID0gZjhCSVRTT0YoKGZDQVNUNF84dShSc1YpICYgZkJJRElS X0xTSElGVEwoMSxmU1hUTig3LDMyLFJ0ViksNF84KSkgIT0gMCk7Cit9KQorCitRNklOU04oUzRf bnRzdGJpdF9yLCJQZDQ9IXRzdGJpdChSczMyLFJ0MzIpIiwKK0FUVFJJQlMoKSwgIlRlc3QgYSBi aXQiLAoreworCVBkViA9IGY4QklUU09GKChmQ0FTVDRfOHUoUnNWKSAmIGZCSURJUl9MU0hJRlRM KDEsZlNYVE4oNywzMixSdFYpLDRfOCkpID09IDApOworfSkKKworUTZJTlNOKFMyX3NldGJpdF9y LCJSZDMyPXNldGJpdChSczMyLFJ0MzIpIiwKK0FUVFJJQlMoKSwgIlNldCBhIGJpdCIsCit7CisJ UmRWID0gKFJzViB8IGZCSURJUl9MU0hJRlRMKDEsZlNYVE4oNywzMixSdFYpLDRfOCkpOworfSkK KworUTZJTlNOKFMyX3RvZ2dsZWJpdF9yLCJSZDMyPXRvZ2dsZWJpdChSczMyLFJ0MzIpIiwKK0FU VFJJQlMoKSwgIlRvZ2dsZSBhIGJpdCIsCit7CisJUmRWID0gKFJzViBeIGZCSURJUl9MU0hJRlRM KDEsZlNYVE4oNywzMixSdFYpLDRfOCkpOworfSkKKworUTZJTlNOKFMyX2NscmJpdF9yLCJSZDMy PWNscmJpdChSczMyLFJ0MzIpIiwKK0FUVFJJQlMoKSwgIkNsZWFyIGEgYml0IiwKK3sKKwlSZFYg PSAoUnNWICYgKH4oZkJJRElSX0xTSElGVEwoMSxmU1hUTig3LDMyLFJ0ViksNF84KSkpKTsKK30p CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisv KiB2ZWN0b3Igc2hpZnRpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKiBIYWxmIFZlY3Rv ciBJbW1lZGlhdGUgU2hpZnRzICovCisKK1E2SU5TTihTMl9hc3JfaV92aCwiUmRkMzI9dmFzcmgo UnNzMzIsI3U0KSIsQVRUUklCUygpLAorCSJWZWN0b3IgQXJpdGhtZXRpYyBTaGlmdCBSaWdodCBi eSBJbW1lZGlhdGUiLAoreworICAgICAgICBmSElERShpbnQgaTspCisgICAgICAgIGZvciAoaT0w O2k8NDtpKyspIHsKKwkgIGZTRVRIQUxGKGksUmRkViwgKGZHRVRIQUxGKGksUnNzVik+PnVpVikp OworICAgICAgICB9Cit9KQorCisKK1E2SU5TTihTMl9sc3JfaV92aCwiUmRkMzI9dmxzcmgoUnNz MzIsI3U0KSIsQVRUUklCUygpLAorCSJWZWN0b3IgTG9naWNhbCBTaGlmdCBSaWdodCBieSBJbW1l ZGlhdGUiLAoreworICAgICAgICBmSElERShpbnQgaTspCisgICAgICAgIGZvciAoaT0wO2k8NDtp KyspIHsKKwkgIGZTRVRIQUxGKGksUmRkViwgKGZHRVRVSEFMRihpLFJzc1YpPj51aVYpKTsKKyAg ICAgICAgfQorfSkKKworUTZJTlNOKFMyX2FzbF9pX3ZoLCJSZGQzMj12YXNsaChSc3MzMiwjdTQp IixBVFRSSUJTKCksCisJIlZlY3RvciBBcml0aG1ldGljIFNoaWZ0IExlZnQgYnkgSW1tZWRpYXRl IiwKK3sKKyAgICAgICAgZkhJREUoaW50IGk7KQorICAgICAgICBmb3IgKGk9MDtpPDQ7aSsrKSB7 CisJICBmU0VUSEFMRihpLFJkZFYsIChmR0VUSEFMRihpLFJzc1YpPDx1aVYpKTsKKyAgICAgICAg fQorfSkKKworLyogSGFsZiBWZWN0b3IgUmVnaXN0ZXIgU2hpZnRzICovCisKK1E2SU5TTihTMl9h c3Jfcl92aCwiUmRkMzI9dmFzcmgoUnNzMzIsUnQzMikiLEFUVFJJQlMoQV9OT1RFX09PQlZTSElG VCksCisJIlZlY3RvciBBcml0aG1ldGljIFNoaWZ0IFJpZ2h0IGJ5IFJlZ2lzdGVyIiwKK3sKKyAg ICAgICAgZkhJREUoaW50IGk7KQorICAgICAgICBmb3IgKGk9MDtpPDQ7aSsrKSB7CisJICBmU0VU SEFMRihpLFJkZFYsIGZCSURJUl9BU0hJRlRSKGZHRVRIQUxGKGksUnNzViksZlNYVE4oNywzMixS dFYpLDJfOCkpOworICAgICAgICB9Cit9KQorCitRNklOU04oUzVfYXNyaHViX3JuZF9zYXQsIlJk MzI9dmFzcmh1YihSc3MzMiwjdTQpOnJhdyIsLAorCSJWZWN0b3IgQXJpdGhtZXRpYyBTaGlmdCBS aWdodCBieSBJbW1lZGlhdGUgd2l0aCBSb3VuZCwgU2F0dXJhdGUsIGFuZCBQYWNrIiwKK3sKKyAg ICAgICAgZkhJREUoaW50IGk7KQorICAgICAgICBmb3IgKGk9MDtpPDQ7aSsrKSB7CisJCQlmU0VU QllURShpLFJkViwgZlNBVFVCKCAoKGZHRVRIQUxGKGksUnNzVikgPj4gdWlWICkrMSk+PjEgICkp OworICAgICAgICB9Cit9KQorCitERUZfVjVfQ09ORF9NQVBQSU5HKFM1X2Fzcmh1Yl9ybmRfc2F0 X2dvb2RzeW50YXgsIlJkMzI9dmFzcmh1YihSc3MzMiwjdTQpOnJuZDpzYXQiLCIjdTQ9PTAiLCJS ZDMyPXZzYXRodWIoUnNzMzIpIiwiUmQzMj12YXNyaHViKFJzczMyLCN1NC0xKTpyYXciKQorCitR NklOU04oUzVfYXNyaHViX3NhdCwiUmQzMj12YXNyaHViKFJzczMyLCN1NCk6c2F0IiwsCisJIlZl Y3RvciBBcml0aG1ldGljIFNoaWZ0IFJpZ2h0IGJ5IEltbWVkaWF0ZSB3aXRoIFNhdHVyYXRlIGFu ZCBQYWNrIiwKK3sKKyAgICAgICAgZkhJREUoaW50IGk7KQorICAgICAgICBmb3IgKGk9MDtpPDQ7 aSsrKSB7CisJCQlmU0VUQllURShpLFJkViwgZlNBVFVCKCBmR0VUSEFMRihpLFJzc1YpID4+IHVp ViApKTsKKyAgICAgICAgfQorfSkKKworCisKK1E2SU5TTihTNV92YXNyaHJuZCwiUmRkMzI9dmFz cmgoUnNzMzIsI3U0KTpyYXciLCwKKwkiVmVjdG9yIEFyaXRobWV0aWMgU2hpZnQgUmlnaHQgYnkg SW1tZWRpYXRlIHdpdGggUm91bmQiLAoreworICAgICAgICBmSElERShpbnQgaTspCisgICAgICAg IGZvciAoaT0wO2k8NDtpKyspIHsKKwkJCWZTRVRIQUxGKGksUmRkViwgKCAoKGZHRVRIQUxGKGks UnNzVikgPj4gdWlWKSsxKT4+MSAgKSk7CisgICAgICAgIH0KK30pCisKK0RFRl9WNV9DT05EX01B UFBJTkcoUzVfdmFzcmhybmRfZ29vZHN5bnRheCwiUmRkMzI9dmFzcmgoUnNzMzIsI3U0KTpybmQi LCIjdTQ9PTAiLCJSZGQzMj1Sc3MzMiIsIlJkZDMyPXZhc3JoKFJzczMyLCN1NC0xKTpyYXciKQor CisKKworUTZJTlNOKFMyX2FzbF9yX3ZoLCJSZGQzMj12YXNsaChSc3MzMixSdDMyKSIsQVRUUklC UyhBX05PVEVfT09CVlNISUZUKSwKKwkiVmVjdG9yIEFyaXRobWV0aWMgU2hpZnQgTGVmdCBieSBS ZWdpc3RlciIsCit7CisgICAgICAgIGZISURFKGludCBpOykKKyAgICAgICAgZm9yIChpPTA7aTw0 O2krKykgeworCSAgZlNFVEhBTEYoaSxSZGRWLCBmQklESVJfQVNISUZUTChmR0VUSEFMRihpLFJz c1YpLGZTWFROKDcsMzIsUnRWKSwyXzgpKTsKKyAgICAgICAgfQorfSkKKworCisKK1E2SU5TTihT Ml9sc3Jfcl92aCwiUmRkMzI9dmxzcmgoUnNzMzIsUnQzMikiLEFUVFJJQlMoQV9OT1RFX09PQlZT SElGVCksCisJIlZlY3RvciBMb2dpY2FsIFNoaWZ0IFJpZ2h0IGJ5IFJlZ2lzdGVyIiwKK3sKKyAg ICAgICAgZkhJREUoaW50IGk7KQorICAgICAgICBmb3IgKGk9MDtpPDQ7aSsrKSB7CisJICBmU0VU SEFMRihpLFJkZFYsIGZCSURJUl9MU0hJRlRSKGZHRVRVSEFMRihpLFJzc1YpLGZTWFROKDcsMzIs UnRWKSwyXzgpKTsKKyAgICAgICAgfQorfSkKKworCitRNklOU04oUzJfbHNsX3JfdmgsIlJkZDMy PXZsc2xoKFJzczMyLFJ0MzIpIixBVFRSSUJTKEFfTk9URV9PT0JWU0hJRlQpLAorCSJWZWN0b3Ig TG9naWNhbCBTaGlmdCBMZWZ0IGJ5IFJlZ2lzdGVyIiwKK3sKKyAgICAgICAgZkhJREUoaW50IGk7 KQorICAgICAgICBmb3IgKGk9MDtpPDQ7aSsrKSB7CisJICBmU0VUSEFMRihpLFJkZFYsIGZCSURJ Ul9MU0hJRlRMKGZHRVRVSEFMRihpLFJzc1YpLGZTWFROKDcsMzIsUnRWKSwyXzgpKTsKKyAgICAg ICAgfQorfSkKKworCisKKworLyogV29yZCBWZWN0b3IgSW1tZWRpYXRlIFNoaWZ0cyAqLworCitR NklOU04oUzJfYXNyX2lfdncsIlJkZDMyPXZhc3J3KFJzczMyLCN1NSkiLEFUVFJJQlMoKSwKKwki VmVjdG9yIEFyaXRobWV0aWMgU2hpZnQgUmlnaHQgYnkgSW1tZWRpYXRlIiwKK3sKKyAgICAgICAg ZkhJREUoaW50IGk7KQorICAgICAgICBmb3IgKGk9MDtpPDI7aSsrKSB7CisJICBmU0VUV09SRChp LFJkZFYsKGZHRVRXT1JEKGksUnNzVik+PnVpVikpOworICAgICAgICB9Cit9KQorCisKKworUTZJ TlNOKFMyX2Fzcl9pX3N2d190cnVuLCJSZDMyPXZhc3J3KFJzczMyLCN1NSkiLEFUVFJJQlMoQV9B UkNIVjIpLAorCSJWZWN0b3IgQXJpdGhtZXRpYyBTaGlmdCBSaWdodCBieSBJbW1lZGlhdGUgd2l0 aCBUcnVuY2F0ZSBhbmQgUGFjayIsCit7CisgICAgICAgIGZISURFKGludCBpOykKKyAgICAgICAg Zm9yIChpPTA7aTwyO2krKykgeworCSAgZlNFVEhBTEYoaSxSZFYsZkdFVEhBTEYoMCwoZkdFVFdP UkQoaSxSc3NWKT4+dWlWKSkpOworICAgICAgICB9Cit9KQorCitRNklOU04oUzJfYXNyX3Jfc3Z3 X3RydW4sIlJkMzI9dmFzcncoUnNzMzIsUnQzMikiLEFUVFJJQlMoQV9BUkNIVjIpLAorCSJWZWN0 b3IgQXJpdGhtZXRpYyBTaGlmdCBSaWdodCB0cnVuY2F0ZSBhbmQgUGFjayIsCit7CisgICAgICAg IGZISURFKGludCBpOykKKyAgICAgICAgZm9yIChpPTA7aTwyO2krKykgeworIAkgIGZTRVRIQUxG KGksUmRWLGZHRVRIQUxGKDAsZkJJRElSX0FTSElGVFIoZkdFVFdPUkQoaSxSc3NWKSxmU1hUTig3 LDMyLFJ0ViksNF84KSkpOworICAgICAgICB9Cit9KQorCisKK1E2SU5TTihTMl9sc3JfaV92dywi UmRkMzI9dmxzcncoUnNzMzIsI3U1KSIsQVRUUklCUygpLAorCSJWZWN0b3IgTG9naWNhbCBTaGlm dCBSaWdodCBieSBJbW1lZGlhdGUiLAoreworICAgICAgICBmSElERShpbnQgaTspCisgICAgICAg IGZvciAoaT0wO2k8MjtpKyspIHsKKwkgIGZTRVRXT1JEKGksUmRkViwoZkdFVFVXT1JEKGksUnNz Vik+PnVpVikpOworICAgICAgICB9Cit9KQorCitRNklOU04oUzJfYXNsX2lfdncsIlJkZDMyPXZh c2x3KFJzczMyLCN1NSkiLEFUVFJJQlMoKSwKKwkiVmVjdG9yIEFyaXRobWV0aWMgU2hpZnQgTGVm dCBieSBJbW1lZGlhdGUiLAoreworICAgICAgICBmSElERShpbnQgaTspCisgICAgICAgIGZvciAo aT0wO2k8MjtpKyspIHsKKwkgIGZTRVRXT1JEKGksUmRkViwoZkdFVFdPUkQoaSxSc3NWKTw8dWlW KSk7CisgICAgICAgIH0KK30pCisKKy8qIFdvcmQgVmVjdG9yIFJlZ2lzdGVyIFNoaWZ0cyAqLwor CitRNklOU04oUzJfYXNyX3JfdncsIlJkZDMyPXZhc3J3KFJzczMyLFJ0MzIpIixBVFRSSUJTKEFf Tk9URV9PT0JWU0hJRlQpLAorCSJWZWN0b3IgQXJpdGhtZXRpYyBTaGlmdCBSaWdodCBieSBSZWdp c3RlciIsCit7CisgICAgICAgIGZISURFKGludCBpOykKKyAgICAgICAgZm9yIChpPTA7aTwyO2kr KykgeworIAkgIGZTRVRXT1JEKGksUmRkViwgZkJJRElSX0FTSElGVFIoZkdFVFdPUkQoaSxSc3NW KSxmU1hUTig3LDMyLFJ0ViksNF84KSk7CisgICAgICAgIH0KK30pCisKKworCitRNklOU04oUzJf YXNsX3JfdncsIlJkZDMyPXZhc2x3KFJzczMyLFJ0MzIpIixBVFRSSUJTKEFfTk9URV9PT0JWU0hJ RlQpLAorCSJWZWN0b3IgQXJpdGhtZXRpYyBTaGlmdCBMZWZ0IGJ5IFJlZ2lzdGVyIiwKK3sKKyAg ICAgICAgZkhJREUoaW50IGk7KQorICAgICAgICBmb3IgKGk9MDtpPDI7aSsrKSB7CisgCSAgZlNF VFdPUkQoaSxSZGRWLCBmQklESVJfQVNISUZUTChmR0VUV09SRChpLFJzc1YpLGZTWFROKDcsMzIs UnRWKSw0XzgpKTsKKyAgICAgICAgfQorfSkKKworCitRNklOU04oUzJfbHNyX3JfdncsIlJkZDMy PXZsc3J3KFJzczMyLFJ0MzIpIixBVFRSSUJTKEFfTk9URV9PT0JWU0hJRlQpLAorCSJWZWN0b3Ig TG9naWNhbCBTaGlmdCBSaWdodCBieSBSZWdpc3RlciIsCit7CisgICAgICAgIGZISURFKGludCBp OykKKyAgICAgICAgZm9yIChpPTA7aTwyO2krKykgeworIAkgIGZTRVRXT1JEKGksUmRkViwgZkJJ RElSX0xTSElGVFIoZkdFVFVXT1JEKGksUnNzViksZlNYVE4oNywzMixSdFYpLDRfOCkpOworICAg ICAgICB9Cit9KQorCisKKworUTZJTlNOKFMyX2xzbF9yX3Z3LCJSZGQzMj12bHNsdyhSc3MzMixS dDMyKSIsQVRUUklCUyhBX05PVEVfT09CVlNISUZUKSwKKwkiVmVjdG9yIExvZ2ljYWwgU2hpZnQg TGVmdCBieSBSZWdpc3RlciIsCit7CisgICAgICAgIGZISURFKGludCBpOykKKyAgICAgICAgZm9y IChpPTA7aTwyO2krKykgeworIAkgIGZTRVRXT1JEKGksUmRkViwgZkJJRElSX0xTSElGVEwoZkdF VFVXT1JEKGksUnNzViksZlNYVE4oNywzMixSdFYpLDRfOCkpOworICAgICAgICB9Cit9KQorCisK KworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwor LyogVmVjdG9yIFNYVC9aWFQvU0FUL1RSVU4vUk5EUEFDSyAgICAgICAgICAgICovCisvKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCitRNklOU04oUzJf dnJuZHBhY2t3aCwiUmQzMj12cm5kd2goUnNzMzIpIixBVFRSSUJTKCksCisiUm91bmQgYW5kIFBh Y2sgdmVjdG9yIG9mIHdvcmRzIHRvIEhhbGZ3b3JkcyIsCit7CisgICAgICAgIGZISURFKGludCBp OykKKyAgICAgICAgZm9yIChpPTA7aTwyO2krKykgeworCSAgZlNFVEhBTEYoaSxSZFYsZkdFVEhB TEYoMSwoZkdFVFdPUkQoaSxSc3NWKSsweDA4MDAwKSkpOworICAgICAgICB9Cit9KQorCitRNklO U04oUzJfdnJuZHBhY2t3aHMsIlJkMzI9dnJuZHdoKFJzczMyKTpzYXQiLEFUVFJJQlMoKSwKKyJS b3VuZCBhbmQgUGFjayB2ZWN0b3Igb2Ygd29yZHMgdG8gSGFsZndvcmRzIiwKK3sKKyAgICAgICAg ZkhJREUoaW50IGk7KQorICAgICAgICBmb3IgKGk9MDtpPDI7aSsrKSB7CisJICBmU0VUSEFMRihp LFJkVixmR0VUSEFMRigxLGZTQVQoZkdFVFdPUkQoaSxSc3NWKSsweDA4MDAwKSkpOworICAgICAg ICB9Cit9KQorCitRNklOU04oUzJfdnN4dGJoLCJSZGQzMj12c3h0YmgoUnMzMikiLEFUVFJJQlMo QV9BUkNIVjIpLAorIlZlY3RvciBzaWduIGV4dGVuZCBieXRlIHRvIGhhbGYiLAoreworICAgICAg ICBmSElERShpbnQgaTspCisgICAgICAgIGZvciAoaT0wO2k8NDtpKyspIHsKKyAgCSAgZlNFVEhB TEYoaSxSZGRWLGZHRVRCWVRFKGksUnNWKSk7CisgICAgICAgIH0KK30pCisKK1E2SU5TTihTMl92 enh0YmgsIlJkZDMyPXZ6eHRiaChSczMyKSIsQVRUUklCUygpLAorIlZlY3RvciB6ZXJvIGV4dGVu ZCBieXRlIHRvIGhhbGYiLAoreworICAgICAgICBmSElERShpbnQgaTspCisgICAgICAgIGZvciAo aT0wO2k8NDtpKyspIHsKKyAgCSAgZlNFVEhBTEYoaSxSZGRWLGZHRVRVQllURShpLFJzVikpOwor ICAgICAgICB9Cit9KQorCitRNklOU04oUzJfdnNhdGh1YiwiUmQzMj12c2F0aHViKFJzczMyKSIs QVRUUklCUygpLAorIlZlY3RvciBzYXR1cmF0ZSBoYWxmIHRvIHVuc2lnbmVkIGJ5dGUiLAorewor ICAgICAgICBmSElERShpbnQgaTspCisgICAgICAgIGZvciAoaT0wO2k8NDtpKyspIHsKKyAgCSAg ZlNFVEJZVEUoaSxSZFYsZlNBVFVOKDgsZkdFVEhBTEYoaSxSc3NWKSkpOworICAgICAgICB9Cit9 KQorCisKKworCisKK1E2SU5TTihTMl9zdnNhdGh1YiwiUmQzMj12c2F0aHViKFJzMzIpIixBVFRS SUJTKEFfQVJDSFYyKSwKKyJWZWN0b3Igc2F0dXJhdGUgaGFsZiB0byB1bnNpZ25lZCBieXRlIiwK K3sKKwlmU0VUQllURSgwLFJkVixmU0FUVU4oOCxmR0VUSEFMRigwLFJzVikpKTsKKyAgCWZTRVRC WVRFKDEsUmRWLGZTQVRVTig4LGZHRVRIQUxGKDEsUnNWKSkpOworICAJZlNFVEJZVEUoMixSZFYs MCk7CisgIAlmU0VUQllURSgzLFJkViwwKTsKK30pCisKK1E2SU5TTihTMl9zdnNhdGhiLCJSZDMy PXZzYXRoYihSczMyKSIsQVRUUklCUyhBX0FSQ0hWMiksCisiVmVjdG9yIHNhdHVyYXRlIGhhbGYg dG8gc2lnbmVkIGJ5dGUiLAoreworCWZTRVRCWVRFKDAsUmRWLGZTQVROKDgsZkdFVEhBTEYoMCxS c1YpKSk7CisgIAlmU0VUQllURSgxLFJkVixmU0FUTig4LGZHRVRIQUxGKDEsUnNWKSkpOworICAJ ZlNFVEJZVEUoMixSZFYsMCk7CisgIAlmU0VUQllURSgzLFJkViwwKTsKK30pCisKKworUTZJTlNO KFMyX3ZzYXRoYiwiUmQzMj12c2F0aGIoUnNzMzIpIixBVFRSSUJTKEFfQVJDSFYyKSwKKyJWZWN0 b3Igc2F0dXJhdGUgaGFsZiB0byBzaWduZWQgYnl0ZSIsCit7CisgICAgICAgIGZISURFKGludCBp OykKKyAgICAgICAgZm9yIChpPTA7aTw0O2krKykgeworICAJICBmU0VUQllURShpLFJkVixmU0FU Tig4LGZHRVRIQUxGKGksUnNzVikpKTsKKyAgICAgICAgfQorfSkKKworUTZJTlNOKFMyX3Z0cnVu b2hiLCJSZDMyPXZ0cnVub2hiKFJzczMyKSIsQVRUUklCUyhBX0FSQ0hWMiksCisiVmVjdG9yIHRy dW5jYXRlIGhhbGYgdG8gYnl0ZTogdGFrZSBoaWdoIiwKK3sKKyAgICAgICAgZkhJREUoaW50IGk7 KQorICAgICAgICBmb3IgKGk9MDtpPDQ7aSsrKSB7CisgIAkgIGZTRVRCWVRFKGksUmRWLGZHRVRC WVRFKGkqMisxLFJzc1YpKTsKKyAgICAgICAgfQorfSkKKworUTZJTlNOKFMyX3Z0cnVuZXdoLCJS ZGQzMj12dHJ1bmV3aChSc3MzMixSdHQzMikiLEFUVFJJQlMoQV9BUkNIVjIpLAorIlZlY3RvciB0 cnVuY2F0ZSB3b3JkIHRvIGhhbGY6IHRha2UgbG93IiwKK3sKKwlmU0VUSEFMRigwLFJkZFYsZkdF VEhBTEYoMCxSdHRWKSk7CisJZlNFVEhBTEYoMSxSZGRWLGZHRVRIQUxGKDIsUnR0VikpOworCWZT RVRIQUxGKDIsUmRkVixmR0VUSEFMRigwLFJzc1YpKTsKKwlmU0VUSEFMRigzLFJkZFYsZkdFVEhB TEYoMixSc3NWKSk7Cit9KQorCitRNklOU04oUzJfdnRydW5vd2gsIlJkZDMyPXZ0cnVub3doKFJz czMyLFJ0dDMyKSIsQVRUUklCUyhBX0FSQ0hWMiksCisiVmVjdG9yIHRydW5jYXRlIHdvcmQgdG8g aGFsZjogdGFrZSBoaWdoIiwKK3sKKwlmU0VUSEFMRigwLFJkZFYsZkdFVEhBTEYoMSxSdHRWKSk7 CisJZlNFVEhBTEYoMSxSZGRWLGZHRVRIQUxGKDMsUnR0VikpOworCWZTRVRIQUxGKDIsUmRkVixm R0VUSEFMRigxLFJzc1YpKTsKKwlmU0VUSEFMRigzLFJkZFYsZkdFVEhBTEYoMyxSc3NWKSk7Cit9 KQorCisKK1E2SU5TTihTMl92dHJ1bmVoYiwiUmQzMj12dHJ1bmVoYihSc3MzMikiLEFUVFJJQlMo KSwKKyJWZWN0b3IgdHJ1bmNhdGUgaGFsZiB0byBieXRlOiB0YWtlIGxvdyIsCit7CisgICAgICAg IGZISURFKGludCBpOykKKyAgICAgICAgZm9yIChpPTA7aTw0O2krKykgeworICAJICBmU0VUQllU RShpLFJkVixmR0VUQllURShpKjIsUnNzVikpOworICAgICAgICB9Cit9KQorCitRNklOU04oUzZf dnRydW5laGJfcHBwLCJSZGQzMj12dHJ1bmVoYihSc3MzMixSdHQzMikiLEFUVFJJQlMoKSwKKyJW ZWN0b3IgdHJ1bmNhdGUgaGFsZiB0byBieXRlOiB0YWtlIGxvdyIsCit7CisgICAgICAgIGZISURF KGludCBpOykKKyAgICAgICAgZm9yIChpPTA7aTw0O2krKykgeworICAJICAJCWZTRVRCWVRFKGks UmRkVixmR0VUQllURShpKjIsUnR0VikpOworCQkJZlNFVEJZVEUoaSs0LFJkZFYsZkdFVEJZVEUo aSoyLFJzc1YpKTsKKyAgICAgICAgfQorfSkKKworUTZJTlNOKFM2X3Z0cnVub2hiX3BwcCwiUmRk MzI9dnRydW5vaGIoUnNzMzIsUnR0MzIpIixBVFRSSUJTKCksCisiVmVjdG9yIHRydW5jYXRlIGhh bGYgdG8gYnl0ZTogdGFrZSBoaWdoIiwKK3sKKyAgICAgICAgZkhJREUoaW50IGk7KQorICAgICAg ICBmb3IgKGk9MDtpPDQ7aSsrKSB7CisgIAkgIAkJZlNFVEJZVEUoaSxSZGRWLGZHRVRCWVRFKGkq MisxLFJ0dFYpKTsKKyAgCSAgCQlmU0VUQllURShpKzQsUmRkVixmR0VUQllURShpKjIrMSxSc3NW KSk7CisgICAgICAgIH0KK30pCisKK1E2SU5TTihTMl92c3h0aHcsIlJkZDMyPXZzeHRodyhSczMy KSIsQVRUUklCUygpLAorIlZlY3RvciBzaWduIGV4dGVuZCBoYWxmIHRvIHdvcmQiLAoreworICAg ICAgICBmSElERShpbnQgaTspCisgICAgICAgIGZvciAoaT0wO2k8MjtpKyspIHsKKyAgCSAgZlNF VFdPUkQoaSxSZGRWLGZHRVRIQUxGKGksUnNWKSk7CisgICAgICAgIH0KK30pCisKK1E2SU5TTihT Ml92enh0aHcsIlJkZDMyPXZ6eHRodyhSczMyKSIsQVRUUklCUygpLAorIlZlY3RvciB6ZXJvIGV4 dGVuZCBoYWxmIHRvIHdvcmQiLAoreworICAgICAgICBmSElERShpbnQgaTspCisgICAgICAgIGZv ciAoaT0wO2k8MjtpKyspIHsKKyAgCSAgZlNFVFdPUkQoaSxSZGRWLGZHRVRVSEFMRihpLFJzVikp OworICAgICAgICB9Cit9KQorCisKK1E2SU5TTihTMl92c2F0d2gsIlJkMzI9dnNhdHdoKFJzczMy KSIsQVRUUklCUygpLAorIlZlY3RvciBzYXR1cmF0ZSB3b3JkIHRvIHNpZ25lZCBoYWxmIiwKK3sK KyAgICAgICAgZkhJREUoaW50IGk7KQorICAgICAgICBmb3IgKGk9MDtpPDI7aSsrKSB7CisgIAkg IGZTRVRIQUxGKGksUmRWLGZTQVROKDE2LGZHRVRXT1JEKGksUnNzVikpKTsKKyAgICAgICAgfQor fSkKKworUTZJTlNOKFMyX3ZzYXR3dWgsIlJkMzI9dnNhdHd1aChSc3MzMikiLEFUVFJJQlMoKSwK KyJWZWN0b3Igc2F0dXJhdGUgd29yZCB0byB1bnNpZ25lZCBoYWxmIiwKK3sKKyAgICAgICAgZkhJ REUoaW50IGk7KQorICAgICAgICBmb3IgKGk9MDtpPDI7aSsrKSB7CisgIAkgIGZTRVRIQUxGKGks UmRWLGZTQVRVTigxNixmR0VUV09SRChpLFJzc1YpKSk7CisgICAgICAgIH0KK30pCisKKy8qIE90 aGVyIG1pc2MgaW5zbnMgb2YgdGhpcyB0eXBlICovCisKK1E2SU5TTihTMl9wYWNraGwsIlJkZDMy PXBhY2tobChSczMyLFJ0MzIpIixBVFRSSUJTKCksCisiUGFjayBoaWdoIGhhbGZ3b3JkcyBhbmQg bG93IGhhbGZ3b3JkcyB0b2dldGhlciIsCit7CisgICAgZlNFVEhBTEYoMCxSZGRWLGZHRVRIQUxG KDAsUnRWKSk7CisgICAgZlNFVEhBTEYoMSxSZGRWLGZHRVRIQUxGKDAsUnNWKSk7CisgICAgZlNF VEhBTEYoMixSZGRWLGZHRVRIQUxGKDEsUnRWKSk7CisgICAgZlNFVEhBTEYoMyxSZGRWLGZHRVRI QUxGKDEsUnNWKSk7Cit9KQorCitRNklOU04oQTJfc3dpeiwiUmQzMj1zd2l6KFJzMzIpIixBVFRS SUJTKEFfQVJDSFYyKSwKKyJFbmRpYW4gc3dhcCB0aGUgYnl0ZXMgb2YgUnMiLAoreworICAgIGZT RVRCWVRFKDAsUmRWLGZHRVRCWVRFKDMsUnNWKSk7CisgICAgZlNFVEJZVEUoMSxSZFYsZkdFVEJZ VEUoMixSc1YpKTsKKyAgICBmU0VUQllURSgyLFJkVixmR0VUQllURSgxLFJzVikpOworICAgIGZT RVRCWVRFKDMsUmRWLGZHRVRCWVRFKDAsUnNWKSk7Cit9KQorCisKKworLyogVmVjdG9yIFNhdCB3 aXRob3V0IFBhY2tpbmcgKi8KK1E2SU5TTihTMl92c2F0aHViX25vcGFjaywiUmRkMzI9dnNhdGh1 YihSc3MzMikiLEFUVFJJQlMoKSwKKyJWZWN0b3Igc2F0dXJhdGUgaGFsZiB0byB1bnNpZ25lZCBi eXRlIiwKK3sKKyAgICAgICAgZkhJREUoaW50IGk7KQorICAgICAgICBmb3IgKGk9MDtpPDQ7aSsr KSB7CisgIAkgIGZTRVRIQUxGKGksUmRkVixmU0FUVU4oOCxmR0VUSEFMRihpLFJzc1YpKSk7Cisg ICAgICAgIH0KK30pCisKK1E2SU5TTihTMl92c2F0aGJfbm9wYWNrLCJSZGQzMj12c2F0aGIoUnNz MzIpIixBVFRSSUJTKEFfQVJDSFYyKSwKKyJWZWN0b3Igc2F0dXJhdGUgaGFsZiB0byBzaWduZWQg Ynl0ZSB3aXRob3V0IHBhY2siLAoreworICAgICAgICBmSElERShpbnQgaTspCisgICAgICAgIGZv ciAoaT0wO2k8NDtpKyspIHsKKyAgCSAgZlNFVEhBTEYoaSxSZGRWLGZTQVROKDgsZkdFVEhBTEYo aSxSc3NWKSkpOworICAgICAgICB9Cit9KQorCitRNklOU04oUzJfdnNhdHdoX25vcGFjaywiUmRk MzI9dnNhdHdoKFJzczMyKSIsQVRUUklCUygpLAorIlZlY3RvciBzYXR1cmF0ZSB3b3JkIHRvIHNp Z25lZCBoYWxmIiwKK3sKKyAgICAgICAgZkhJREUoaW50IGk7KQorICAgICAgICBmb3IgKGk9MDtp PDI7aSsrKSB7CisgIAkgIGZTRVRXT1JEKGksUmRkVixmU0FUTigxNixmR0VUV09SRChpLFJzc1Yp KSk7CisgICAgICAgIH0KK30pCisKK1E2SU5TTihTMl92c2F0d3VoX25vcGFjaywiUmRkMzI9dnNh dHd1aChSc3MzMikiLEFUVFJJQlMoKSwKKyJWZWN0b3Igc2F0dXJhdGUgd29yZCB0byB1bnNpZ25l ZCBoYWxmIiwKK3sKKyAgICAgICAgZkhJREUoaW50IGk7KQorICAgICAgICBmb3IgKGk9MDtpPDI7 aSsrKSB7CisgIAkgIGZTRVRXT1JEKGksUmRkVixmU0FUVU4oMTYsZkdFVFdPUkQoaSxSc3NWKSkp OworICAgICAgICB9Cit9KQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqLworLyogU2h1ZmZsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8K KworCitRNklOU04oUzJfc2h1ZmZvYiwiUmRkMzI9c2h1ZmZvYihSdHQzMixSc3MzMikiLEFUVFJJ QlMoKSwKKyJTaHVmZmxlIGhpZ2ggYnl0ZXMgdG9nZXRoZXIiLAoreworICAgICAgICBmSElERShp bnQgaTspCisgICAgICAgIGZvciAoaT0wO2k8NDtpKyspIHsKKwkgIGZTRVRCWVRFKGkqMiAgLFJk ZFYsZkdFVEJZVEUoaSoyKzEsUnNzVikpOworCSAgZlNFVEJZVEUoaSoyKzEsUmRkVixmR0VUQllU RShpKjIrMSxSdHRWKSk7CisgICAgICAgIH0KK30pCisKK1E2SU5TTihTMl9zaHVmZmViLCJSZGQz Mj1zaHVmZmViKFJzczMyLFJ0dDMyKSIsQVRUUklCUygpLAorIlNodWZmbGUgbG93IGJ5dGVzIHRv Z2V0aGVyIiwKK3sKKyAgICAgICAgZkhJREUoaW50IGk7KQorICAgICAgICBmb3IgKGk9MDtpPDQ7 aSsrKSB7CisJICBmU0VUQllURShpKjIgICxSZGRWLGZHRVRCWVRFKGkqMixSdHRWKSk7CisJICBm U0VUQllURShpKjIrMSxSZGRWLGZHRVRCWVRFKGkqMixSc3NWKSk7CisgICAgICAgIH0KK30pCisK K1E2SU5TTihTMl9zaHVmZm9oLCJSZGQzMj1zaHVmZm9oKFJ0dDMyLFJzczMyKSIsQVRUUklCUygp LAorIlNodWZmbGUgaGlnaCBoYWx2ZXMgdG9nZXRoZXIiLAoreworICAgICAgICBmSElERShpbnQg aTspCisgICAgICAgIGZvciAoaT0wO2k8MjtpKyspIHsKKwkgIGZTRVRIQUxGKGkqMiAgLFJkZFYs ZkdFVEhBTEYoaSoyKzEsUnNzVikpOworCSAgZlNFVEhBTEYoaSoyKzEsUmRkVixmR0VUSEFMRihp KjIrMSxSdHRWKSk7CisgICAgICAgIH0KK30pCisKK1E2SU5TTihTMl9zaHVmZmVoLCJSZGQzMj1z aHVmZmVoKFJzczMyLFJ0dDMyKSIsQVRUUklCUygpLAorIlNodWZmbGUgbG93IGhhbHZlcyB0b2dl dGhlciIsCit7CisgICAgICAgIGZISURFKGludCBpOykKKyAgICAgICAgZm9yIChpPTA7aTwyO2kr KykgeworCSAgZlNFVEhBTEYoaSoyICAsUmRkVixmR0VUSEFMRihpKjIsUnR0VikpOworCSAgZlNF VEhBTEYoaSoyKzEsUmRkVixmR0VUSEFMRihpKjIsUnNzVikpOworICAgICAgICB9Cit9KQorCisK Ky8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogU3Ry YW5nZSBiaXQgaW5zdHJ1Y3Rpb25zICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworUTZJTlNOKFM1X3BvcGNvdW50 cCwiUmQzMj1wb3Bjb3VudChSc3MzMikiLEFUVFJJQlMoKSwKKyJQb3B1bGF0aW9uIENvdW50Iiwg eyBSZFYgPSBmQ09VTlRPTkVTXzgoUnNzVik7IH0pCisKK1E2SU5TTihTNF9wYXJpdHksIlJkMzI9 cGFyaXR5KFJzMzIsUnQzMikiLCwKKyJQYXJpdHkgb2YgTWFza2VkIFZhbHVlIiwgeyBSZFYgPSAx JmZDT1VOVE9ORVNfNChSc1YgJiBSdFYpOyB9KQorCitRNklOU04oUzJfcGFyaXR5cCwiUmQzMj1w YXJpdHkoUnNzMzIsUnR0MzIpIixBVFRSSUJTKEFfQVJDSFYyKSwKKyJQYXJpdHkgb2YgTWFza2Vk IFZhbHVlIiwgeyBSZFYgPSAxJmZDT1VOVE9ORVNfOChSc3NWICYgUnR0Vik7IH0pCisKK1E2SU5T TihTMl9sZnNwLCJSZGQzMj1sZnMoUnNzMzIsUnR0MzIpIixBVFRSSUJTKEFfQVJDSFYyKSwKKyJQ YXJpdHkgb2YgTWFza2VkIFZhbHVlIiwgeyBSZGRWID0gKGZDQVNUOHUoUnNzVikgPj4gMSkgfCAo ZkNBU1Q4dSgoMSZmQ09VTlRPTkVTXzgoUnNzViAmIFJ0dFYpKSk8PDYzKSA7IH0pCisKK1E2SU5T TihTMl9jbGJub3JtLCJSZDMyPW5vcm1hbXQoUnMzMikiLEFUVFJJQlMoQV9BUkNIVjIpLAorIkNv dW50IGxlYWRpbmcgc2lnbiBiaXRzIC0gMSIsIHsgaWYgKFJzViA9PSAwKSB7IFJkViA9IDA7IH0g ZWxzZSB7IFJkViA9IChmTUFYKGZDTDFfNChSc1YpLGZDTDFfNCh+UnNWKSkpLTE7fSB9KQorCitR NklOU04oUzRfY2xiYWRkaSwiUmQzMj1hZGQoY2xiKFJzMzIpLCNzNikiLEFUVFJJQlMoQV9BUkNI VjIpLAorIkNvdW50IGxlYWRpbmcgc2lnbiBiaXRzIHRoZW4gYWRkIHNpZ25lZCBudW1iZXIiLAor eyBSZFYgPSAoZk1BWChmQ0wxXzQoUnNWKSxmQ0wxXzQoflJzVikpKStzaVY7fSApCisKK1E2SU5T TihTNF9jbGJwbm9ybSwiUmQzMj1ub3JtYW10KFJzczMyKSIsQVRUUklCUyhBX0FSQ0hWMiksCisi Q291bnQgbGVhZGluZyBzaWduIGJpdHMgLSAxIiwgeyBpZiAoUnNzViA9PSAwKSB7IFJkViA9IDA7 IH0KK2Vsc2UgeyBSZFYgPSAoZk1BWChmQ0wxXzgoUnNzViksZkNMMV84KH5Sc3NWKSkpLTE7fX0p CisKK1E2SU5TTihTNF9jbGJwYWRkaSwiUmQzMj1hZGQoY2xiKFJzczMyKSwjczYpIixBVFRSSUJT KEFfQVJDSFYyKSwKKyJDb3VudCBsZWFkaW5nIHNpZ24gYml0cyB0aGVuIGFkZCBzaWduZWQgbnVt YmVyIiwKK3sgUmRWID0gKGZNQVgoZkNMMV84KFJzc1YpLGZDTDFfOCh+UnNzVikpKStzaVY7fSkK KworCisKK1E2SU5TTihTMl9jYWJhY2RlY2JpbiwiUmRkMzI9ZGVjYmluKFJzczMyLFJ0dDMyKSIs QVRUUklCUyhBX0FSQ0hWMyxBX05PVEVfTEFURVBSRUQsQV9SRVNUUklDVF9MQVRFUFJFRCksIkNB QkFDIGRlY29kZSBiaW4iLAoreworCWZISURFKHNpemU0dV90IHN0YXRlOykKKwlmSElERShzaXpl NHVfdCB2YWxNUFM7KQorCWZISURFKHNpemU0dV90IGJpdHBvczspCisJZkhJREUoc2l6ZTR1X3Qg cmFuZ2U7KQorCWZISURFKHNpemU0dV90IG9mZnNldDspCisJZkhJREUoc2l6ZTR1X3QgckxQUzsp CisJZkhJREUoc2l6ZTR1X3Qgck1QUzspCisKKwlzdGF0ZSA9ICBmRVhUUkFDVFVfUkFOR0UoIGZH RVRXT1JEKDEsUnR0VikgLDUsMCk7CisJdmFsTVBTID0gZkVYVFJBQ1RVX1JBTkdFKCBmR0VUV09S RCgxLFJ0dFYpICw4LDgpOworCWJpdHBvcyA9IGZFWFRSQUNUVV9SQU5HRSggZkdFVFdPUkQoMCxS dHRWKSAsNCwwKTsKKyAgICAgICAgcmFuZ2UgPSAgZkdFVFdPUkQoMCxSc3NWKTsKKyAgICAgICAg b2Zmc2V0ID0gZkdFVFdPUkQoMSxSc3NWKTsKKworICAgICAgICAvKiBjYWxjdWxhdGUgckxQUyAq LworICAgICAgICByYW5nZSA8PD0gYml0cG9zOworICAgICAgICBvZmZzZXQgPDw9IGJpdHBvczsK KyAgICAgICAgckxQUyA9IHJMUFNfdGFibGVfNjR4NFtzdGF0ZV1bIChyYW5nZSA+PjI5KSYzXTsK KyAgICAgICAgckxQUyAgPSByTFBTIDw8IDIzOyAgIC8qIGxlZnQgYWxpZ25lZCAqLworCisgICAg ICAgIC8qIGNhbGN1bGF0ZSByTVBTICovCisgICAgICAgIHJNUFM9IChyYW5nZSYweGZmODAwMDAw KSAtIHJMUFM7CisKKyAgICAgICAgLyogbW9zdCBwcm9iYWJsZSByZWdpb24gKi8KKyAgICAgICAg aWYgKG9mZnNldCA8IHJNUFMpIHsKKyAgICAgICAgICAgIFJkZFYgPSBBQ19uZXh0X3N0YXRlX01Q U182NFtzdGF0ZV07CisgICAgICAgICAgICBmSU5TRVJUX1JBTkdFKFJkZFYsOCw4LHZhbE1QUyk7 CisgICAgICAgICAgICBmSU5TRVJUX1JBTkdFKFJkZFYsMzEsMjMsKHJNUFM+PjIzKSk7CisgICAg ICAgICAgICBmU0VUV09SRCgxLFJkZFYsb2Zmc2V0KTsKKyAgICAgICAgICAgIGZXUklURV9QMCh2 YWxNUFMpOworCisKKyAgICAgICAgfQorICAgICAgICAvKiBsZWFzdCBwcm9iYWJsZSByZWdpb24g Ki8KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBSZGRWID0gQUNfbmV4dF9zdGF0ZV9MUFNf NjRbc3RhdGVdOworICAgICAgICAgICAgZklOU0VSVF9SQU5HRShSZGRWLDgsOCwoKCFzdGF0ZSk/ KDEtdmFsTVBTKToodmFsTVBTKSkpOworICAgICAgICAgICAgZklOU0VSVF9SQU5HRShSZGRWLDMx LDIzLChyTFBTPj4yMykpOworICAgICAgICAgICAgZlNFVFdPUkQoMSxSZGRWLChvZmZzZXQtck1Q UykpOworICAgICAgICAgICAgZldSSVRFX1AwKCh2YWxNUFNeMSkpOworICAgICAgICB9CisgICAg ICAgIGZISURFKE1BUktfTEFURV9QUkVEX1dSSVRFKDApKQorfSkKKworCisKKworUTZJTlNOKFMy X2NhYmFjZW5jYmluLCJSZGQzMj1lbmNiaW4oUnNzMzIsUnR0MzIsUHU0KSIsQVRUUklCUyhBX0ZB S0VJTlNOKSwiQ0FCQUMgZW5jb2RlIGJpbiIsCit7CisgICAgZlBSRURVU0VfVElNSU5HKCk7CisJ ZkhJREUoc2l6ZTR1X3Qgc3RhdGU7KQorCWZISURFKHNpemU0dV90IHZhbE1QUzspCisJZkhJREUo c2l6ZTR1X3QgYml0cG9zOykKKwlmSElERShzaXplNHVfdCByYW5nZTspCisJZkhJREUoc2l6ZTR1 X3QgbG93OykKKwlmSElERShzaXplNHVfdCByTFBTOykKKwlmSElERShzaXplNHVfdCByTVBTOykK KwlmSElERShzaXplNHVfdCBiaW47KQorCisJc3RhdGUgPSAgZkVYVFJBQ1RVX1JBTkdFKCBmR0VU V09SRCgxLFJ0dFYpICw1LDApOworCXZhbE1QUyA9IGZFWFRSQUNUVV9SQU5HRSggZkdFVFdPUkQo MSxSdHRWKSAsOCw4KTsKKwliaXRwb3MgPSBmRVhUUkFDVFVfUkFOR0UoIGZHRVRXT1JEKDAsUnR0 VikgLDQsMCk7CisJcmFuZ2UgPSAgZkdFVFdPUkQoMCxSc3NWKTsKKwlsb3cgPSBmR0VUV09SRCgx LFJzc1YpOworCWJpbiA9IGZMU0JPTEQoUHVWKTsKKworCS8qIFN0cmlwIG9mIE1TQiB6ZXJvcyAq LworCXJhbmdlIDw8PSBiaXRwb3M7CisJLyogTWFzayBvZmYgbG93IGJpdHMgKi8KKwlyYW5nZSAm PSAweEZGODAwMDAwVTsKKworICAgICAgICAvKiBjYWxjdWxhdGUgckxQUyAqLworICAgICAgICBy TFBTID0gckxQU190YWJsZV82NHg0W3N0YXRlXVsocmFuZ2U+PjI5KSYzXTsKKyAgICAgICAgckxQ UyAgPSByTFBTIDw8IDIzOyAgIC8qIGxlZnQgYWxpZ25lZCAqLworCisJLyogQ2FsY3VsYXRlIHJN UFMgKi8KKwlyTVBTID0gcmFuZ2UgLSByTFBTOworCisgICAgICAgIC8qIG1vc3QgcHJvYmFibGUg cmVnaW9uICovCisgICAgICAgIGlmIChiaW4gPT0gdmFsTVBTKSB7CisgICAgICAgICAgICBSZGRW ID0gQUNfbmV4dF9zdGF0ZV9NUFNfNjRbc3RhdGVdOworICAgICAgICAgICAgZklOU0VSVF9SQU5H RShSZGRWLDgsOCx2YWxNUFMpOworICAgICAgICAgICAgZklOU0VSVF9SQU5HRShSZGRWLDMxLDIz LChyTVBTPj4yMykpOworICAgICAgICAgICAgZlNFVFdPUkQoMSxSZGRWLGxvdyk7CisgICAgICAg IH0KKyAgICAgICAgLyogbGVhc3QgcHJvYmFibGUgcmVnaW9uICovCisgICAgICAgIGVsc2Ugewor ICAgICAgICAgICAgUmRkViA9IEFDX25leHRfc3RhdGVfTFBTXzY0W3N0YXRlXTsKKyAgICAgICAg ICAgIGZJTlNFUlRfUkFOR0UoUmRkViw4LDgsKCghc3RhdGUpPygxLXZhbE1QUyk6KHZhbE1QUykp KTsKKyAgICAgICAgICAgIGZJTlNFUlRfUkFOR0UoUmRkViwzMSwyMywockxQUz4+MjMpKTsKKyAg ICAgICAgICAgIGZTRVRXT1JEKDEsUmRkViwobG93KyhyTVBTID4+IGJpdHBvcykpKTsKKyAgICAg ICAgfQorfSkKKworCisKKworUTZJTlNOKFMyX2NsYiwiUmQzMj1jbGIoUnMzMikiLEFUVFJJQlMo KSwKKyJDb3VudCBsZWFkaW5nIGJpdHMiLCB7UmRWID0gZk1BWChmQ0wxXzQoUnNWKSxmQ0wxXzQo flJzVikpO30pCisKKworUTZJTlNOKFMyX2NsMCwiUmQzMj1jbDAoUnMzMikiLEFUVFJJQlMoKSwK KyJDb3VudCBsZWFkaW5nIGJpdHMiLCB7UmRWID0gZkNMMV80KH5Sc1YpO30pCisKK1E2SU5TTihT Ml9jbDEsIlJkMzI9Y2wxKFJzMzIpIixBVFRSSUJTKCksCisiQ291bnQgbGVhZGluZyBiaXRzIiwg e1JkViA9IGZDTDFfNChSc1YpO30pCisKK1E2SU5TTihTMl9jbGJwLCJSZDMyPWNsYihSc3MzMiki LEFUVFJJQlMoKSwKKyJDb3VudCBsZWFkaW5nIGJpdHMiLCB7UmRWID0gZk1BWChmQ0wxXzgoUnNz ViksZkNMMV84KH5Sc3NWKSk7fSkKKworUTZJTlNOKFMyX2NsMHAsIlJkMzI9Y2wwKFJzczMyKSIs QVRUUklCUygpLAorIkNvdW50IGxlYWRpbmcgYml0cyIsIHtSZFYgPSBmQ0wxXzgoflJzc1YpO30p CisKK1E2SU5TTihTMl9jbDFwLCJSZDMyPWNsMShSc3MzMikiLEFUVFJJQlMoKSwKKyJDb3VudCBs ZWFkaW5nIGJpdHMiLCB7UmRWID0gZkNMMV84KFJzc1YpO30pCisKKworCisKK1E2SU5TTihTMl9i cmV2LAkiUmQzMj1icmV2KFJzMzIpIiwgICBBVFRSSUJTKEFfQVJDSFYyKSwgIkJpdCBSZXZlcnNl Iix7UmRWID0gZkJSRVZfNChSc1YpO30pCitRNklOU04oUzJfYnJldnAsIlJkZDMyPWJyZXYoUnNz MzIpIiwgQVRUUklCUygpLCAiQml0IFJldmVyc2UiLHtSZGRWID0gZkJSRVZfOChSc3NWKTt9KQor UTZJTlNOKFMyX2N0MCwgICJSZDMyPWN0MChSczMyKSIsICAgIEFUVFJJQlMoQV9BUkNIVjIpLCAi Q291bnQgVHJhaWxpbmciLHtSZFYgPSBmQ0wxXzQofmZCUkVWXzQoUnNWKSk7fSkKK1E2SU5TTihT Ml9jdDEsICAiUmQzMj1jdDEoUnMzMikiLCAgICBBVFRSSUJTKEFfQVJDSFYyKSwgIkNvdW50IFRy YWlsaW5nIix7UmRWID0gZkNMMV80KGZCUkVWXzQoUnNWKSk7fSkKK1E2SU5TTihTMl9jdDBwLCAi UmQzMj1jdDAoUnNzMzIpIiwgICBBVFRSSUJTKCksICJDb3VudCBUcmFpbGluZyIse1JkViA9IGZD TDFfOCh+ZkJSRVZfOChSc3NWKSk7fSkKK1E2SU5TTihTMl9jdDFwLCAiUmQzMj1jdDEoUnNzMzIp IiwgICBBVFRSSUJTKCksICJDb3VudCBUcmFpbGluZyIse1JkViA9IGZDTDFfOChmQlJFVl84KFJz c1YpKTt9KQorCisKK1E2SU5TTihTMl9pbnRlcmxlYXZlLCJSZGQzMj1pbnRlcmxlYXZlKFJzczMy KSIsQVRUUklCUyhBX0FSQ0hWMiksIkludGVybGVhdmUgYml0cyIsCit7UmRkViA9IGZJTlRFUkxF QVZFKGZHRVRXT1JEKDEsUnNzViksZkdFVFdPUkQoMCxSc3NWKSk7fSkKKworUTZJTlNOKFMyX2Rl aW50ZXJsZWF2ZSwiUmRkMzI9ZGVpbnRlcmxlYXZlKFJzczMyKSIsQVRUUklCUyhBX0FSQ0hWMiks IkludGVybGVhdmUgYml0cyIsCit7UmRkViA9IGZERUlOVEVSTEVBVkUoUnNzVik7fSkKKworCisK KworUTZJTlNOKFM2X3VzZXJpbnNuLCJSeHgzMj11c2VyaW5zbihSc3MzMixSdHQzMiwjdTcpIixB VFRSSUJTKEFfRkFLRUlOU04pLAorIlVzZXIgRGVmaW5lZCBJbnN0cnVjdGlvbiIsCit7CisJaWYg KHRocmVhZC0+cHJvY2Vzc29yX3B0ci0+b3B0aW9ucy0+dXNlcmluc25fY2FsbGJhY2spIHsKKyAg ICAgIFJ4eFYgPSB0aHJlYWQtPnByb2Nlc3Nvcl9wdHItPm9wdGlvbnMtPnVzZXJpbnNuX2NhbGxi YWNrKAorCSAgICAgIHRocmVhZC0+c3lzdGVtX3B0cix0aHJlYWQtPnByb2Nlc3Nvcl9wdHIsCisJ ICAgICAgdGhyZWFkLT50aHJlYWRJZCxSc3NWLFJ0dFYsUnh4Vix1aVYpOworICAgIH0gZWxzZSB7 CisJCXdhcm4oIlVzZXIgaW5zdHJ1Y3Rpb24gZW5jb3VudGVyZWQgYnV0IG5vIGNhbGxiYWNrISIp OworCX0KKworfSkKKworCisKKworCisKKwpkaWZmIC0tZ2l0IGEvdGFyZ2V0L2hleGFnb24vaW1w b3J0ZWQvc3ViaW5zbnMuaWRlZiBiL3RhcmdldC9oZXhhZ29uL2ltcG9ydGVkL3N1Ymluc25zLmlk ZWYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDg2NThkZgotLS0gL2Rldi9u dWxsCisrKyBiL3RhcmdldC9oZXhhZ29uL2ltcG9ydGVkL3N1Ymluc25zLmlkZWYKQEAgLTAsMCAr MSwxNTIgQEAKKy8qCisgKiAgQ29weXJpZ2h0KGMpIDIwMTktMjAyMCBRdWFsY29tbSBJbm5vdmF0 aW9uIENlbnRlciwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBUaGlzIHByb2dy YW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlm eQorICogIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5CisgKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0 aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqICAoYXQgeW91ciBvcHRpb24pIGFu eSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4g dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5U QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAq ICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZ b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZQorICogIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHNlZSA8aHR0cDov L3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKi8KKworLyoKKyAqIHN1Yi1pbnN0cnVjdGlvbnMK KyAqLworCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAg ICAgIEEtdHlwZSBzdWJpbnNucyAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAq LworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqLworCitRNklOU04oU0ExX2FkZGksICAgICAiUngxNj1hZGQoUngxNiwjczcp IiwgICAgQVRUUklCUyhBX1NVQklOU04pLCJBZGQiLCAgICAgICAgeyBmSU1NRVhUKHNpVik7IFJ4 Vj1SeFYrc2lWO30pCitRNklOU04oU0ExX3RmciwgICAgICAiUmQxNj1SczE2IiwgICAgICAgICAg ICAgQVRUUklCUyhBX1NVQklOU04pLCJUZnIiLCAgICAgICAgeyBSZFY9UnNWO30pCitRNklOU04o U0ExX3NldGksICAgICAiUmQxNj0jdTYiLCAgICAgICAgICAgICAgQVRUUklCUyhBX1NVQklOU04p LCJTZXQgaW1tZWQiLCAgeyBmSU1NRVhUKHVpVik7IFJkVj11aVY7fSkKK1E2SU5TTihTQTFfc2V0 aW4xLCAgICJSZDE2PSMtMSIsICAgICAgICAgICAgICBBVFRSSUJTKEFfU1VCSU5TTiksIlNldCB0 byAtMSIsICB7IFJkVj0tMTt9KQorUTZJTlNOKFNBMV9jbHJ0bmV3LCAgImlmIChwMC5uZXcpIFJk MTY9IzAiLCAgIEFUVFJJQlMoQV9TVUJJTlNOKSwiY2xlYXIgaWYgdHJ1ZSIsIHsgaWYgKGZMU0JO RVcwKSB7UmRWPTA7fSBlbHNlIHtDQU5DRUw7fSB9KQorUTZJTlNOKFNBMV9jbHJmbmV3LCAgImlm ICghcDAubmV3KSBSZDE2PSMwIiwgIEFUVFJJQlMoQV9TVUJJTlNOKSwiY2xlYXIgaWYgZmFsc2Ui LHsgaWYgKGZMU0JORVcwTk9UKSB7UmRWPTA7fSBlbHNlIHtDQU5DRUw7fSB9KQorUTZJTlNOKFNB MV9jbHJ0LCAgICAgImlmIChwMCkgUmQxNj0jMCIsICAgICAgIEFUVFJJQlMoQV9TVUJJTlNOKSwi Y2xlYXIgaWYgdHJ1ZSIsIHsgaWYgKGZMU0JPTEQoZlJFQURfUDAoKSkpIHtSZFY9MDt9IGVsc2Ug e0NBTkNFTDt9IH0pCitRNklOU04oU0ExX2NscmYsICAgICAiaWYgKCFwMCkgUmQxNj0jMCIsICAg ICAgQVRUUklCUyhBX1NVQklOU04pLCJjbGVhciBpZiBmYWxzZSIseyBpZiAoZkxTQk9MRE5PVChm UkVBRF9QMCgpKSkge1JkVj0wO30gZWxzZSB7Q0FOQ0VMO30gfSkKKworUTZJTlNOKFNBMV9hZGRz cCwgICAgIlJkMTY9YWRkKHIyOSwjdTY6MikiLCAgIEFUVFJJQlMoQV9TVUJJTlNOKSwiQWRkIiwg ICAgICAgIHsgUmRWPWZSRUFEX1NQKCkrdWlWOyB9KQorUTZJTlNOKFNBMV9pbmMsICAgICAgIlJk MTY9YWRkKFJzMTYsIzEpIiwgICAgIEFUVFJJQlMoQV9TVUJJTlNOKSwiSW5jIiwgICAgICAgIHsg UmRWPVJzVisxO30pCitRNklOU04oU0ExX2RlYywgICAgICAiUmQxNj1hZGQoUnMxNiwjLTEpIiwg ICAgQVRUUklCUyhBX1NVQklOU04pLCJEZWMiLCAgICAgICAgeyBSZFY9UnNWLTE7fSkKK1E2SU5T TihTQTFfYWRkcngsICAgICJSeDE2PWFkZChSeDE2LFJzMTYpIiwgICBBVFRSSUJTKEFfU1VCSU5T TixBX0NPTU1VVEVTKSwiQWRkIiwgICAgICAgIHsgUnhWPVJ4VitSc1Y7IH0pCitRNklOU04oU0Ex X3p4dGIsICAgICAiUmQxNj1hbmQoUnMxNiwjMjU1KSIsICAgQVRUUklCUyhBX1NVQklOU04pLCJa eHRiIiwgICAgICAgeyBSZFY9IGZaWFROKDgsMzIsUnNWKTt9KQorUTZJTlNOKFNBMV9hbmQxLCAg ICAgIlJkMTY9YW5kKFJzMTYsIzEpIiwgICAgIEFUVFJJQlMoQV9TVUJJTlNOKSwiQW5kICMxIiwg ICAgIHsgUmRWPSBSc1YmMTt9KQorUTZJTlNOKFNBMV9zeHRiLCAgICAgIlJkMTY9c3h0YihSczE2 KSIsICAgICAgIEFUVFJJQlMoQV9TVUJJTlNOKSwiU3h0YiIsICAgICAgIHsgUmRWPSBmU1hUTig4 LDMyLFJzVik7fSkKK1E2SU5TTihTQTFfenh0aCwgICAgICJSZDE2PXp4dGgoUnMxNikiLCAgICAg ICBBVFRSSUJTKEFfU1VCSU5TTiksIlp4dGgiLCAgICAgICB7IFJkVj0gZlpYVE4oMTYsMzIsUnNW KTt9KQorUTZJTlNOKFNBMV9zeHRoLCAgICAgIlJkMTY9c3h0aChSczE2KSIsICAgICAgIEFUVFJJ QlMoQV9TVUJJTlNOKSwiU3h0aCIsICAgICAgIHsgUmRWPSBmU1hUTigxNiwzMixSc1YpO30pCitR NklOU04oU0ExX2NvbWJpbmV6ciwiUmRkOD1jb21iaW5lKCMwLFJzMTYpIiwgQVRUUklCUyhBX1NV QklOU04sQV9ST1BTXzIpLCJDb21iaW5lcyIsICAgeyBmU0VUV09SRCgwLFJkZFYsUnNWKTsgZlNF VFdPUkQoMSxSZGRWLDApOyB9KQorUTZJTlNOKFNBMV9jb21iaW5lcnosIlJkZDg9Y29tYmluZShS czE2LCMwKSIsIEFUVFJJQlMoQV9TVUJJTlNOLEFfUk9QU18yKSwiQ29tYmluZXMiLCAgIHsgZlNF VFdPUkQoMCxSZGRWLDApOyBmU0VUV09SRCgxLFJkZFYsUnNWKTsgfSkKK1E2SU5TTihTQTFfY29t YmluZTBpLCJSZGQ4PWNvbWJpbmUoIzAsI3UyKSIsIEFUVFJJQlMoQV9TVUJJTlNOLEFfUk9QU18y KSwiQ29tYmluZXMiLCAgIHsgZlNFVFdPUkQoMCxSZGRWLHVpVik7IGZTRVRXT1JEKDEsUmRkViww KTsgfSkKK1E2SU5TTihTQTFfY29tYmluZTFpLCJSZGQ4PWNvbWJpbmUoIzEsI3UyKSIsIEFUVFJJ QlMoQV9TVUJJTlNOLEFfUk9QU18yKSwiQ29tYmluZXMiLCAgIHsgZlNFVFdPUkQoMCxSZGRWLHVp Vik7IGZTRVRXT1JEKDEsUmRkViwxKTsgfSkKK1E2SU5TTihTQTFfY29tYmluZTJpLCJSZGQ4PWNv bWJpbmUoIzIsI3UyKSIsIEFUVFJJQlMoQV9TVUJJTlNOLEFfUk9QU18yKSwiQ29tYmluZXMiLCAg IHsgZlNFVFdPUkQoMCxSZGRWLHVpVik7IGZTRVRXT1JEKDEsUmRkViwyKTsgfSkKK1E2SU5TTihT QTFfY29tYmluZTNpLCJSZGQ4PWNvbWJpbmUoIzMsI3UyKSIsIEFUVFJJQlMoQV9TVUJJTlNOLEFf Uk9QU18yKSwiQ29tYmluZXMiLCAgIHsgZlNFVFdPUkQoMCxSZGRWLHVpVik7IGZTRVRXT1JEKDEs UmRkViwzKTsgfSkKK1E2SU5TTihTQTFfY21wZXFpLCAgICJwMD1jbXAuZXEoUnMxNiwjdTIpIiwg ICBBVFRSSUJTKEFfU1VCSU5TTiksIkNvbXBhcmVJbW1lZCIse2ZXUklURV9QMChmOEJJVFNPRihS c1Y9PXVpVikpO30pCisKKworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAg ICAgICAgICAgICAgICBMZDEvMiBzdWJpbnNucyAgICAgICAgICAgICAgICAgICAgICAgICAgKi8K Ky8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKi8KKworUTZJTlNOKFNMMV9sb2FkcmlfaW8sICAiUmQxNj1t ZW13KFJzMTYrI3U0OjIpIiwgQVRUUklCUyhBX01FTVNJWkVfNEIsQV9MT0FELEFfU1VCSU5TTiks ImxvYWQgd29yZCIsIHtmRUFfUkkoUnNWLHVpVik7IGZMT0FEKDEsNCx1LEVBLFJkVik7fSkKK1E2 SU5TTihTTDFfbG9hZHJ1Yl9pbywgIlJkMTY9bWVtdWIoUnMxNisjdTQ6MCkiLEFUVFJJQlMoQV9N RU1TSVpFXzFCLEFfTE9BRCxBX1NVQklOU04pLCJsb2FkIGJ5dGUiLCB7ZkVBX1JJKFJzVix1aVYp OyBmTE9BRCgxLDEsdSxFQSxSZFYpO30pCisKK1E2SU5TTihTTDJfbG9hZHJoX2lvLCAgIlJkMTY9 bWVtaChSczE2KyN1MzoxKSIsIEFUVFJJQlMoQV9NRU1TSVpFXzJCLEFfTE9BRCxBX1NVQklOU04p LCJsb2FkIGhhbGYiLCB7ZkVBX1JJKFJzVix1aVYpOyBmTE9BRCgxLDIscyxFQSxSZFYpO30pCitR NklOU04oU0wyX2xvYWRydWhfaW8sICJSZDE2PW1lbXVoKFJzMTYrI3UzOjEpIixBVFRSSUJTKEFf TUVNU0laRV8yQixBX0xPQUQsQV9TVUJJTlNOKSwibG9hZCBoYWxmIiwge2ZFQV9SSShSc1YsdWlW KTsgZkxPQUQoMSwyLHUsRUEsUmRWKTt9KQorUTZJTlNOKFNMMl9sb2FkcmJfaW8sICAiUmQxNj1t ZW1iKFJzMTYrI3UzOjApIiwgQVRUUklCUyhBX01FTVNJWkVfMUIsQV9MT0FELEFfU1VCSU5TTiks ImxvYWQgYnl0ZSIsIHtmRUFfUkkoUnNWLHVpVik7IGZMT0FEKDEsMSxzLEVBLFJkVik7fSkKK1E2 SU5TTihTTDJfbG9hZHJpX3NwLCAgIlJkMTY9bWVtdyhyMjkrI3U1OjIpIiwgIEFUVFJJQlMoQV9N RU1TSVpFXzRCLEFfTE9BRCxBX1NVQklOU04pLCJsb2FkIHdvcmQiLCB7ZkVBX1JJKGZSRUFEX1NQ KCksdWlWKTsgZkxPQUQoMSw0LHUsRUEsUmRWKTt9KQorUTZJTlNOKFNMMl9sb2FkcmRfc3AsICAi UmRkOD1tZW1kKHIyOSsjdTU6MykiLCBBVFRSSUJTKEFfTUVNU0laRV84QixBX0xPQUQsQV9TVUJJ TlNOKSwibG9hZCBkd29yZCIse2ZFQV9SSShmUkVBRF9TUCgpLHVpVik7IGZMT0FEKDEsOCx1LEVB LFJkZFYpO30pCisKK1E2SU5TTihTTDJfZGVhbGxvY2ZyYW1lLCJkZWFsbG9jZnJhbWUiLCBBVFRS SUJTKEFfU1VCSU5TTixBX01FTVNJWkVfOEIsQV9MT0FELEFfREVBTExPQ0ZSQU1FKSwgIkRlYWxs b2NhdGUgc3RhY2sgZnJhbWUiLAoreyBmSElERShzaXplOHVfdCB0bXA7KSBmRUFfUkVHKGZSRUFE X0ZQKCkpOworCWZMT0FEKDEsOCx1LEVBLHRtcCk7CisJdG1wID0gZkZSQU1FX1VOU0NSQU1CTEUo dG1wKTsKKwlmV1JJVEVfTFIoZkdFVFdPUkQoMSx0bXApKTsKKwlmV1JJVEVfRlAoZkdFVFdPUkQo MCx0bXApKTsKKwlmV1JJVEVfU1AoRUErOCk7IH0pCisKK1E2SU5TTihTTDJfcmV0dXJuLCJkZWFs bG9jX3JldHVybiIsIEFUVFJJQlMoQV9KSU5ESVIsQV9TVUJJTlNOLEFfUk9QU18yLEFfTUVNU0la RV84QixBX0xPQUQsQV9SRVRVUk4sQV9SRVNUUklDVF9TTE9UME9OTFksQV9SRVRfVFlQRSxBX0RF QUxMT0NSRVQpLCAiRGVhbGxvY2F0ZSBzdGFjayBmcmFtZSBhbmQgcmV0dXJuIiwKK3sgZkhJREUo c2l6ZTh1X3QgdG1wOykgZkVBX1JFRyhmUkVBRF9GUCgpKTsKKwlmTE9BRCgxLDgsdSxFQSx0bXAp OworCXRtcCA9IGZGUkFNRV9VTlNDUkFNQkxFKHRtcCk7CisJZldSSVRFX0xSKGZHRVRXT1JEKDEs dG1wKSk7CisJZldSSVRFX0ZQKGZHRVRXT1JEKDAsdG1wKSk7CisJZldSSVRFX1NQKEVBKzgpOwor ICAgIGZKVU1QUihSRUdfTFIsZkdFVFdPUkQoMSx0bXApLENPRl9UWVBFX0pVTVBSKTt9KQorCitR NklOU04oU0wyX3JldHVybl90LCJpZiAocDApIGRlYWxsb2NfcmV0dXJuIiwgQVRUUklCUyhBX0pJ TkRJUk9MRCxBX1NVQklOU04sQV9ST1BTXzIsQV9NRU1TSVpFXzhCLEFfTE9BRCxBX1JFVFVSTixB X1JFU1RSSUNUX1NMT1QwT05MWSxBX1JFVF9UWVBFLEFfUFJFRF9CSVRfNCksICJEZWFsbG9jYXRl IHN0YWNrIGZyYW1lIGFuZCByZXR1cm4iLAoreyBmSElERShzaXplOHVfdCB0bXA7KTsgZkJSQU5D SF9TUEVDVUxBVEVfU1RBTEwoZkxTQk9MRChmUkVBRF9QMCgpKSwsIFNQRUNVTEFURV9OT1RfVEFL RU4sNCwwKTsgZkVBX1JFRyhmUkVBRF9GUCgpKTsgaWYgKGZMU0JPTEQoZlJFQURfUDAoKSkpIHsg ZkxPQUQoMSw4LHUsRUEsdG1wKTsgdG1wID0gZkZSQU1FX1VOU0NSQU1CTEUodG1wKTsgZldSSVRF X0xSKGZHRVRXT1JEKDEsdG1wKSk7IGZXUklURV9GUChmR0VUV09SRCgwLHRtcCkpOyBmV1JJVEVf U1AoRUErOCk7CisgIGZKVU1QUihSRUdfTFIsZkdFVFdPUkQoMSx0bXApLENPRl9UWVBFX0pVTVBS KTt9IGVsc2Uge0xPQURfQ0FOQ0VMKEVBKTt9IH0pCisKK1E2SU5TTihTTDJfcmV0dXJuX2YsImlm ICghcDApIGRlYWxsb2NfcmV0dXJuIiwgQVRUUklCUyhBX0pJTkRJUk9MRCxBX1NVQklOU04sQV9S T1BTXzIsQV9NRU1TSVpFXzhCLEFfTE9BRCxBX1JFVFVSTixBX1JFU1RSSUNUX1NMT1QwT05MWSxB X1JFVF9UWVBFLEFfUFJFRF9CSVRfNCksICJEZWFsbG9jYXRlIHN0YWNrIGZyYW1lIGFuZCByZXR1 cm4iLAoreyBmSElERShzaXplOHVfdCB0bXA7KTtmQlJBTkNIX1NQRUNVTEFURV9TVEFMTChmTFNC T0xETk9UKGZSRUFEX1AwKCkpLCwgU1BFQ1VMQVRFX05PVF9UQUtFTiw0LDApOyBmRUFfUkVHKGZS RUFEX0ZQKCkpOyBpZiAoZkxTQk9MRE5PVChmUkVBRF9QMCgpKSkgeyBmTE9BRCgxLDgsdSxFQSx0 bXApOyB0bXAgPSBmRlJBTUVfVU5TQ1JBTUJMRSh0bXApOyBmV1JJVEVfTFIoZkdFVFdPUkQoMSx0 bXApKTsgZldSSVRFX0ZQKGZHRVRXT1JEKDAsdG1wKSk7IGZXUklURV9TUChFQSs4KTsKKyAgZkpV TVBSKFJFR19MUixmR0VUV09SRCgxLHRtcCksQ09GX1RZUEVfSlVNUFIpO30gZWxzZSB7TE9BRF9D QU5DRUwoRUEpO30gfSkKKworCisKK1E2SU5TTihTTDJfcmV0dXJuX3RuZXcsImlmIChwMC5uZXcp IGRlYWxsb2NfcmV0dXJuOm50IiwgQVRUUklCUyhBX0pJTkRJUk5FVyxBX1NVQklOU04sQV9ST1BT XzIsQV9NRU1TSVpFXzhCLEFfTE9BRCxBX1JFVFVSTixBX1JFU1RSSUNUX1NMT1QwT05MWSxBX1JF VF9UWVBFLEFfUFJFRF9CSVRfNCksICJEZWFsbG9jYXRlIHN0YWNrIGZyYW1lIGFuZCByZXR1cm4i LAoreyBmSElERShzaXplOHVfdCB0bXA7KSBmQlJBTkNIX1NQRUNVTEFURV9TVEFMTChmTFNCTkVX MCwsIFNQRUNVTEFURV9OT1RfVEFLRU4gLCA0LDMpOyBmRUFfUkVHKGZSRUFEX0ZQKCkpOyBpZiAo ZkxTQk5FVzApIHsgZkxPQUQoMSw4LHUsRUEsdG1wKTsgdG1wID0gZkZSQU1FX1VOU0NSQU1CTEUo dG1wKTsgZldSSVRFX0xSKGZHRVRXT1JEKDEsdG1wKSk7IGZXUklURV9GUChmR0VUV09SRCgwLHRt cCkpOyBmV1JJVEVfU1AoRUErOCk7CisgIGZKVU1QUihSRUdfTFIsZkdFVFdPUkQoMSx0bXApLENP Rl9UWVBFX0pVTVBSKTt9IGVsc2Uge0xPQURfQ0FOQ0VMKEVBKTt9IH0pCisKK1E2SU5TTihTTDJf cmV0dXJuX2ZuZXcsImlmICghcDAubmV3KSBkZWFsbG9jX3JldHVybjpudCIsIEFUVFJJQlMoQV9K SU5ESVJORVcsQV9TVUJJTlNOLEFfUk9QU18yLEFfTUVNU0laRV84QixBX0xPQUQsQV9SRVRVUk4s QV9SRVNUUklDVF9TTE9UME9OTFksQV9SRVRfVFlQRSxBX1BSRURfQklUXzQpLCAiRGVhbGxvY2F0 ZSBzdGFjayBmcmFtZSBhbmQgcmV0dXJuIiwKK3sgZkhJREUoc2l6ZTh1X3QgdG1wOykgZkJSQU5D SF9TUEVDVUxBVEVfU1RBTEwoZkxTQk5FVzBOT1QsLCBTUEVDVUxBVEVfTk9UX1RBS0VOICwgNCwz KTsgZkVBX1JFRyhmUkVBRF9GUCgpKTsgaWYgKGZMU0JORVcwTk9UKSB7IGZMT0FEKDEsOCx1LEVB LHRtcCk7IHRtcCA9IGZGUkFNRV9VTlNDUkFNQkxFKHRtcCk7IGZXUklURV9MUihmR0VUV09SRCgx LHRtcCkpOyBmV1JJVEVfRlAoZkdFVFdPUkQoMCx0bXApKTsgZldSSVRFX1NQKEVBKzgpOworICBm SlVNUFIoUkVHX0xSLGZHRVRXT1JEKDEsdG1wKSxDT0ZfVFlQRV9KVU1QUik7fSBlbHNlIHtMT0FE X0NBTkNFTChFQSk7fSB9KQorCisKK1E2SU5TTihTTDJfanVtcHIzMSwianVtcHIgcjMxIixBVFRS SUJTKEFfU1VCSU5TTixBX0pJTkRJUixBX1JFU1RSSUNUX1NMT1QwT05MWSxBX1JFVF9UWVBFKSwi aW5kaXJlY3QgdW5jb25kaXRpb25hbCBqdW1wIiwKK3sgZkpVTVBSKFJFR19MUixmUkVBRF9MUigp LENPRl9UWVBFX0pVTVBSKTt9KQorCitRNklOU04oU0wyX2p1bXByMzFfdCwiaWYgKHAwKSBqdW1w ciByMzEiLEFUVFJJQlMoQV9TVUJJTlNOLEFfSklORElST0xELEFfTk9URV9DT05ESVRJT05BTCxB X1JFU1RSSUNUX1NMT1QwT05MWSxBX1JFVF9UWVBFLEFfUFJFRF9CSVRfNCksImluZGlyZWN0IGNv bmRpdGlvbmFsIGp1bXAgaWYgdHJ1ZSIsCit7ZkJSQU5DSF9TUEVDVUxBVEVfU1RBTEwoZkxTQk9M RChmUkVBRF9QMCgpKSwsIFNQRUNVTEFURV9UQUtFTiw0LDApOyBpZiAoZkxTQk9MRChmUkVBRF9Q MCgpKSkge2ZKVU1QUihSRUdfTFIsZlJFQURfTFIoKSxDT0ZfVFlQRV9KVU1QUik7fX0pCisKK1E2 SU5TTihTTDJfanVtcHIzMV9mLCJpZiAoIXAwKSBqdW1wciByMzEiLEFUVFJJQlMoQV9TVUJJTlNO LEFfSklORElST0xELEFfTk9URV9DT05ESVRJT05BTCxBX1JFU1RSSUNUX1NMT1QwT05MWSxBX1JF VF9UWVBFLEFfUFJFRF9CSVRfNCksImluZGlyZWN0IGNvbmRpdGlvbmFsIGp1bXAgaWYgZmFsc2Ui LAore2ZCUkFOQ0hfU1BFQ1VMQVRFX1NUQUxMKGZMU0JPTEROT1QoZlJFQURfUDAoKSksLCBTUEVD VUxBVEVfVEFLRU4sNCwwKTsgaWYgKGZMU0JPTEROT1QoZlJFQURfUDAoKSkpIHtmSlVNUFIoUkVH X0xSLGZSRUFEX0xSKCksQ09GX1RZUEVfSlVNUFIpO319KQorCisKKworUTZJTlNOKFNMMl9qdW1w cjMxX3RuZXcsImlmIChwMC5uZXcpIGp1bXByOm50IHIzMSIsQVRUUklCUyhBX1NVQklOU04sQV9K SU5ESVJORVcsQV9OT1RFX0NPTkRJVElPTkFMLEFfUkVTVFJJQ1RfU0xPVDBPTkxZLEFfUkVUX1RZ UEUsQV9QUkVEX0JJVF80KSwiaW5kaXJlY3QgY29uZGl0aW9uYWwganVtcCBpZiB0cnVlIiwKK3tm QlJBTkNIX1NQRUNVTEFURV9TVEFMTChmTFNCTkVXMCwsIFNQRUNVTEFURV9OT1RfVEFLRU4gLCA0 LDMpOyBpZiAoZkxTQk5FVzApIHtmSlVNUFIoUkVHX0xSLGZSRUFEX0xSKCksQ09GX1RZUEVfSlVN UFIpO319KQorCitRNklOU04oU0wyX2p1bXByMzFfZm5ldywiaWYgKCFwMC5uZXcpIGp1bXByOm50 IHIzMSIsQVRUUklCUyhBX1NVQklOU04sQV9KSU5ESVJORVcsQV9OT1RFX0NPTkRJVElPTkFMLEFf UkVTVFJJQ1RfU0xPVDBPTkxZLEFfUkVUX1RZUEUsQV9QUkVEX0JJVF80KSwiaW5kaXJlY3QgY29u ZGl0aW9uYWwganVtcCBpZiBmYWxzZSIsCit7ZkJSQU5DSF9TUEVDVUxBVEVfU1RBTEwoZkxTQk5F VzBOT1QsLCBTUEVDVUxBVEVfTk9UX1RBS0VOICwgNCwzKTsgaWYgKGZMU0JORVcwTk9UKSB7ZkpV TVBSKFJFR19MUixmUkVBRF9MUigpLENPRl9UWVBFX0pVTVBSKTt9fSkKKworCisKKworCisvKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgU3QxLzIgc3ViaW5z bnMgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisK K1E2SU5TTihTUzFfc3RvcmV3X2lvLCAgIm1lbXcoUnMxNisjdTQ6Mik9UnQxNiIsIEFUVFJJQlMo QV9NRU1TSVpFXzRCLEFfU1RPUkUsQV9TVUJJTlNOKSwgInN0b3JlIHdvcmQiLCB7ZkVBX1JJKFJz Vix1aVYpOyBmU1RPUkUoMSw0LEVBLFJ0Vik7fSkKK1E2SU5TTihTUzFfc3RvcmViX2lvLCAgIm1l bWIoUnMxNisjdTQ6MCk9UnQxNiIsIEFUVFJJQlMoQV9NRU1TSVpFXzFCLEFfU1RPUkUsQV9TVUJJ TlNOKSwgInN0b3JlIGJ5dGUiLCB7ZkVBX1JJKFJzVix1aVYpOyBmU1RPUkUoMSwxLEVBLGZHRVRC WVRFKDAsUnRWKSk7fSkKK1E2SU5TTihTUzJfc3RvcmVoX2lvLCAgIm1lbWgoUnMxNisjdTM6MSk9 UnQxNiIsIEFUVFJJQlMoQV9NRU1TSVpFXzJCLEFfU1RPUkUsQV9TVUJJTlNOKSwgInN0b3JlIGhh bGYiLCB7ZkVBX1JJKFJzVix1aVYpOyBmU1RPUkUoMSwyLEVBLGZHRVRIQUxGKDAsUnRWKSk7fSkK K1E2SU5TTihTUzJfc3RvcmVkX3NwLCAgIm1lbWQocjI5KyNzNjozKT1SdHQ4IiwgQVRUUklCUyhB X01FTVNJWkVfOEIsQV9TVE9SRSxBX1NVQklOU04pLCAic3RvcmUgZHdvcmQiLHtmRUFfUkkoZlJF QURfU1AoKSxzaVYpOyBmU1RPUkUoMSw4LEVBLFJ0dFYpO30pCitRNklOU04oU1MyX3N0b3Jld19z cCwgICJtZW13KHIyOSsjdTU6Mik9UnQxNiIsICBBVFRSSUJTKEFfTUVNU0laRV80QixBX1NUT1JF LEFfU1VCSU5TTiksICJzdG9yZSB3b3JkIiwge2ZFQV9SSShmUkVBRF9TUCgpLHVpVik7IGZTVE9S RSgxLDQsRUEsUnRWKTt9KQorUTZJTlNOKFNTMl9zdG9yZXdpMCwgICAibWVtdyhSczE2KyN1NDoy KT0jMCIsIEFUVFJJQlMoQV9NRU1TSVpFXzRCLEFfU1RPUkUsQV9TVUJJTlNOLEFfUk9QU18yKSwg InN0b3JlIHdvcmQiLCB7ZkVBX1JJKFJzVix1aVYpOyBmU1RPUkUoMSw0LEVBLDApO30pCitRNklO U04oU1MyX3N0b3JlYmkwLCAgICJtZW1iKFJzMTYrI3U0OjApPSMwIiwgQVRUUklCUyhBX01FTVNJ WkVfMUIsQV9TVE9SRSxBX1NVQklOU04sQV9ST1BTXzIpLCAic3RvcmUgYnl0ZSIsIHtmRUFfUkko UnNWLHVpVik7IGZTVE9SRSgxLDEsRUEsMCk7fSkKK1E2SU5TTihTUzJfc3RvcmV3aTEsICAgIm1l bXcoUnMxNisjdTQ6Mik9IzEiLCBBVFRSSUJTKEFfTUVNU0laRV80QixBX1NUT1JFLEFfU1VCSU5T TixBX1JPUFNfMiksICJzdG9yZSB3b3JkIiwge2ZFQV9SSShSc1YsdWlWKTsgZlNUT1JFKDEsNCxF QSwxKTt9KQorUTZJTlNOKFNTMl9zdG9yZWJpMSwgICAibWVtYihSczE2KyN1NDowKT0jMSIsIEFU VFJJQlMoQV9NRU1TSVpFXzFCLEFfU1RPUkUsQV9TVUJJTlNOLEFfUk9QU18yKSwgInN0b3JlIGJ5 dGUiLCB7ZkVBX1JJKFJzVix1aVYpOyBmU1RPUkUoMSwxLEVBLDEpO30pCisKKworUTZJTlNOKFNT Ml9hbGxvY2ZyYW1lLCJhbGxvY2ZyYW1lKCN1NTozKSIsIEFUVFJJQlMoQV9TVUJJTlNOLEFfTUVN U0laRV84QixBX1NUT1JFLEFfUkVTVFJJQ1RfU0xPVDBPTkxZKSwgIkFsbG9jYXRlIHN0YWNrIGZy YW1lIiwKK3sgZkVBX1JJKGZSRUFEX1NQKCksLTgpOyAgZlNUT1JFKDEsOCxFQSxmRlJBTUVfU0NS QU1CTEUoKGZDQVNUOF84dShmUkVBRF9MUigpKSA8PCAzMikgfCBmQ0FTVDRfNHUoZlJFQURfRlAo KSkpKTsgZldSSVRFX0ZQKEVBKTsgZkZSQU1FQ0hFQ0soRUEtdWlWLEVBKTsgZldSSVRFX1NQKEVB LXVpVik7IH0pCisKKworCmRpZmYgLS1naXQgYS90YXJnZXQvaGV4YWdvbi9pbXBvcnRlZC9zeXN0 ZW0uaWRlZiBiL3RhcmdldC9oZXhhZ29uL2ltcG9ydGVkL3N5c3RlbS5pZGVmCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2NjYwYzUKLS0tIC9kZXYvbnVsbAorKysgYi90YXJn ZXQvaGV4YWdvbi9pbXBvcnRlZC9zeXN0ZW0uaWRlZgpAQCAtMCwwICsxLDMwMiBAQAorLyoKKyAq ICBDb3B5cmlnaHQoYykgMjAxOS0yMDIwIFF1YWxjb21tIElubm92YXRpb24gQ2VudGVyLCBJbmMu IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiAgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQg YnkKKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9m IHRoZSBMaWNlbnNlLCBvcgorICogIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u CisgKgorICogIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0 IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSBy ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiAgYWxv bmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGlj ZW5zZXMvPi4KKyAqLworCisvKgorICogU3lzdGVtIEludGVyZmFjZSBJbnN0cnVjdGlvbnMKKyAq LworCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwor LyogVXNlci0+T1MgaW50ZXJmYWNlICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitRNklOU04oSjJfdHJhcDAs InRyYXAwKCN1OCkiLEFUVFJJQlMoQV9DT0YsQV9OT1RFX05PUEFDS0VULEFfUkVTVFJJQ1RfTk9Q QUNLRVQpLAorIlRyYXAgdG8gT3BlcmF0aW5nIFN5c3RlbSIsCisJZlRSQVAoMCx1aVYpOworKQor CitRNklOU04oSjJfdHJhcDEsInRyYXAxKFJ4MzIsI3U4KSIsQVRUUklCUyhBX0NPRixBX05PVEVf Tk9QQUNLRVQsQV9SRVNUUklDVF9OT1BBQ0tFVCksCisiVHJhcCB0byBPcGVyYXRpbmcgU3lzdGVt IiwKKwkvKgorCSAqIE5vdGU6IGlmIFJ4ViBpcyBub3Qgd3JpdHRlbiwgd2UgZ2V0IHRoZSBzYW1l IGFzIHRoZSBpbnB1dC4KKwkgKiBTaW5jZSB0cmFwMSBpcyBTT0xPLCB0aGlzIG1lYW5zIHRoZSBy ZWdpc3RlciB3aWxsIGVmZmVjdGl2ZWx5IG5vdCBiZSB1cGRhdGVkCisJICovCisJaWYgKCFmVFJB UDFfVklSVElOU04odWlWKSkgeworCQlmVFJBUCgxLHVpVik7CisJfSBlbHNlIGlmICh1aVYgPT0g MSkgeworCQlmVklSVElOU05fUlRFKHVpVixSeFYpOworCX0gZWxzZSBpZiAodWlWID09IDMpIHsK KwkJZlZJUlRJTlNOX1NFVElFKHVpVixSeFYpOworCX0gZWxzZSBpZiAodWlWID09IDQpIHsKKwkJ ZlZJUlRJTlNOX0dFVElFKHVpVixSeFYpOworCX0gZWxzZSBpZiAodWlWID09IDYpIHsKKwkJZlZJ UlRJTlNOX1NQU1dBUCh1aVYsUnhWKTsKKwl9KQorCitERUZfTUFQUElORyhKMl90cmFwMV9ub3Jl Z21hcCwidHJhcDEoI3U4KSIsInRyYXAxKFIwLCN1OCkiKQorCitRNklOU04oSjJfcGF1c2UsInBh dXNlKCN1OCkiLEFUVFJJQlMoQV9DT0YsQV9OT1RFX05PUEFDS0VULEFfUkVTVFJJQ1RfTk9QQUNL RVQpLAorIkVudGVyIGxvdy1wb3dlciBzdGF0ZSBmb3IgI3U4IGN5Y2xlcyIse2ZQQVVTRSh1aVYp O30pCisKK1E2SU5TTihKMl9ydGUsICAicnRlIiwgQVRUUklCUyhBX1BSSVYsQV9OT1RFX1BSSVYs QV9OT19USU1JTkdfTE9HKSwKKyJSZXR1cm4gZnJvbSBFeGNlcHRpb24iLAoreworZkhJREUoaWYo KHRocmVhZC0+dGltaW5nX29uKSAmJiAodGhyZWFkLT5zdGF0dXMgJiBFWEVDX1NUQVRVU19SRVBM QVkpKSB7IHJldHVybjsgfSkKK2ZISURFKENBTExCQUNLKHRocmVhZC0+cHJvY2Vzc29yX3B0ci0+ b3B0aW9ucy0+cnRlX2NhbGxiYWNrLAorICAgICAgdGhyZWFkLT5zeXN0ZW1fcHRyLHRocmVhZC0+ cHJvY2Vzc29yX3B0ciwKKyAgICAgIHRocmVhZC0+dGhyZWFkSWQsMCk7KQorZkNMRUFSX1JURV9F WCgpOworZkJSQU5DSChmUkVBRF9FTFIoKSxDT0ZfVFlQRV9SVEUpO30pCisKKworLyoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogSW50ZXJydXB0IE1hbmFn ZW1lbnQgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqLworCitRNklOU04oWTJfc3dpLCJzd2koUnMzMikiLEFUVFJJQlMo QV9QUklWLEFfTk9URV9QUklWLEFfTk9URV9BWE9LLEFfUkVTVFJJQ1RfUEFDS0VUX0FYT0spLCJT b2Z0d2FyZSBJbnRlcnJ1cHQiLHtET19TV0koUnNWKTt9KQorUTZJTlNOKFkyX2Nzd2ksImNzd2ko UnMzMikiLEFUVFJJQlMoQV9QUklWLEFfTk9URV9QUklWLEFfTk9URV9BWE9LLEFfUkVTVFJJQ1Rf UEFDS0VUX0FYT0spLCJDYW5jZWwgU29mdHdhcmUgSW50ZXJydXB0Iix7RE9fQ1NXSShSc1YpO30p CitRNklOU04oWTJfY2lhZCwiY2lhZChSczMyKSIsQVRUUklCUyhBX1BSSVYsQV9OT1RFX1BSSVYs QV9OT1RFX0FYT0ssQV9SRVNUUklDVF9QQUNLRVRfQVhPSyksIlJlLWVuYWJsZSBpbnRlcnJ1cHQg aW4gSUFEIix7RE9fQ0lBRChSc1YpO30pCitRNklOU04oWTRfc2lhZCwic2lhZChSczMyKSIsQVRU UklCUyhBX1BSSVYsQV9OT1RFX1BSSVYsQV9OT1RFX0FYT0ssQV9SRVNUUklDVF9QQUNLRVRfQVhP SyksIkRpc2FibGUgaW50ZXJydXB0IGluIElBRCIse0RPX1NJQUQoUnNWKTt9KQorUTZJTlNOKFky X2lhc3NpZ25yLCJSZDMyPWlhc3NpZ25yKFJzMzIpIixBVFRSSUJTKEFfUFJJVixBX05PVEVfUFJJ VixBX05PVEVfQVhPSyxBX1JFU1RSSUNUX1BBQ0tFVF9BWE9LKSwiUmVhZCBpbnRlcnJ1cHQgdG8g dGhyZWFkIGFzc2lnbm1lbnRzIix7RE9fSUFTU0lHTlIoUnNWLFJkVik7fSkKK1E2SU5TTihZMl9p YXNzaWdudywiaWFzc2lnbncoUnMzMikiLEFUVFJJQlMoQV9QUklWLEFfTk9URV9QUklWLEFfTk9U RV9BWE9LLEFfUkVTVFJJQ1RfUEFDS0VUX0FYT0spLCJXcml0ZSBpbnRlcnJ1cHQgdG8gdGhyZWFk IGFzc2lnbm1lbnRzIix7RE9fSUFTU0lHTlcoUnNWKTt9KQorCisKK1E2SU5TTihZMl9nZXRpbWFz aywiUmQzMj1nZXRpbWFzayhSczMyKSIsQVRUUklCUyhBX1BSSVYsQV9OT1RFX1BSSVYsQV9OT1RF X0FYT0ssQV9SRVNUUklDVF9QQUNLRVRfQVhPSyksIlJlYWQgaW1hc2sgcmVnaXN0ZXIgb2YgYW5v dGhlciB0aHJlYWQiLAore1JkViA9IFJFQURfSU1BU0soUnNWICYgdGhyZWFkLT5wcm9jZXNzb3Jf cHRyLT50aHJlYWRfc3lzdGVtX21hc2spOyB9KQorCitRNklOU04oWTJfc2V0aW1hc2ssInNldGlt YXNrKFB0NCxSczMyKSIsQVRUUklCUyhBX1BSSVYsQV9OT1RFX1BSSVYsQV9OT1RFX0FYT0ssQV9S RVNUUklDVF9QQUNLRVRfQVhPSyksIkNoYW5nZSBpbWFzayByZWdpc3RlciBvZiBhbm90aGVyIHRo cmVhZCIsCit7ZlBSRURVU0VfVElNSU5HKCk7V1JJVEVfSU1BU0soUHRWICYgdGhyZWFkLT5wcm9j ZXNzb3JfcHRyLT50aHJlYWRfc3lzdGVtX21hc2ssUnNWKTsgfSkKKworCisKKy8qKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIFRMQiBtYW5hZ2VtZW50ICAg ICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKi8KKworUTZJTlNOKFkyX3RsYncsInRsYncoUnNzMzIsUnQzMikiLCBB VFRSSUJTKEFfUFJJVixBX05PVEVfUFJJVixBX05PVEVfTk9QQUNLRVQsQV9SRVNUUklDVF9OT1BB Q0tFVCksCisiV3JpdGUgVExCIGVudHJ5Iiwge2ZUTEJXKFJ0VixSc3NWKTt9KQorCitRNklOU04o WTVfY3RsYncsIlJkMzI9Y3RsYncoUnNzMzIsUnQzMikiLCBBVFRSSUJTKEFfUFJJVixBX05PVEVf UFJJVixBX05PVEVfTk9QQUNLRVQsQV9SRVNUUklDVF9OT1BBQ0tFVCksCisiQ29uZGl0aW9uYWwg V3JpdGUgVExCIGVudHJ5IiwKK3sKKyAgaWYgKGZUTEJfRU5UUllfT1ZFUkxBUCggKDFMTDw8NjMp IHwgUnNzViApKSB7CisgICAgICAgIFJkVj1mVExCX0VOVFJZX09WRVJMQVBfSURYKCAoMUxMPDw2 MykgfCBSc3NWKTsKKyAgICAgfSBlbHNlIHsKKyAgICAgICAgZlRMQlcoUnRWLFJzc1YpOworICAg ICAgICBSZFY9MHg4MDAwMDAwMDsKKyAgICAgfQorfSkKKworUTZJTlNOKFk1X3RsYm9jLCJSZDMy PXRsYm9jKFJzczMyKSIsIEFUVFJJQlMoQV9QUklWLEFfTk9URV9QUklWLEFfTk9URV9OT1BBQ0tF VCxBX1JFU1RSSUNUX05PUEFDS0VUKSwKKyJUTEIgb3ZlcmxhcCBjaGVjayIsCit7CisgIGlmIChm VExCX0VOVFJZX09WRVJMQVAoICgxTEw8PDYzKSB8IFJzc1YgKSkgeworICAgICAgICBSZFY9ZlRM Ql9FTlRSWV9PVkVSTEFQX0lEWCggKDFMTDw8NjMpIHwgUnNzVik7CisgICAgIH0gZWxzZSB7Cisg ICAgICAgIFJkVj0weDgwMDAwMDAwOworICAgICB9Cit9KQorCitRNklOU04oWTJfdGxiciwiUmRk MzI9dGxicihSczMyKSIsIEFUVFJJQlMoQV9QUklWLEFfTk9URV9QUklWLEFfTk9URV9OT1BBQ0tF VCxBX1JFU1RSSUNUX05PUEFDS0VUKSwgIlJlYWQgVExCIGVudHJ5IiwKK3tSZGRWID0gZlRMQlIo UnNWKTt9KQorCitRNklOU04oWTJfdGxicCwiUmQzMj10bGJwKFJzMzIpIiwgQVRUUklCUyhBX1BS SVYsQV9OT1RFX1BSSVYsQV9OT1RFX05PUEFDS0VULEFfUkVTVFJJQ1RfTk9QQUNLRVQpLCAiUHJv YmUgVExCIiwge1JkVj1mVExCUChSc1YpO30pCisKK1E2SU5TTihZNV90bGJhc2lkaSwidGxiaW52 YXNpZChSczMyKSIsQVRUUklCUyhBX1BSSVYsQV9OT1RFX1BSSVYsQV9OT1RFX05PUEFDS0VULEFf UkVTVFJJQ1RfTk9QQUNLRVQpLCAiSW52YWxpZGF0ZSBBU0lEIiwKK3sKKwlmSElERShpbnQgaTsp CisgICAgZkhJREUodW5zaWduZWQgaW50IE5VTV9UTEJfRU5UUklFUyA9IE5VTV9UTEJfUkVHUyh0 aHJlYWQtPnByb2Nlc3Nvcl9wdHIpOykKKwlmb3IgKGkgPSAwOyBpIDwgTlVNX1RMQl9FTlRSSUVT OyBpKyspIHsKKwkJaWYgKChmR0VUX0ZJRUxEKGZUTEJSKGkpLFBURV9HKSA9PSAwKSAmJgorCQkJ KGZHRVRfRklFTEQoZlRMQlIoaSksUFRFX0FTSUQpID09IGZFWFRSQUNUVV9SQU5HRShSc1YsMjYs MjApKSkgeworCQkJZlRMQlcoaSxmVExCUihpKSAmIH4oMVVMTCA8PCA2MykpOworCQl9CisJfQor fSkKKworUTZJTlNOKFkyX3RsYmxvY2ssInRsYmxvY2siLCBBVFRSSUJTKEFfUFJJVixBX05PVEVf UFJJVixBX05PVEVfTk9QQUNLRVQsQV9SRVNUUklDVF9OT1BBQ0tFVCxBX05PX1RJTUlOR19MT0cp LCAiTG9jayBUTEIiLAore2ZTRVRfVExCX0xPQ0soKX0pCisKK1E2SU5TTihZMl90bGJ1bmxvY2ss InRsYnVubG9jayIsIEFUVFJJQlMoQV9QUklWLEFfTk9URV9QUklWLEFfTk9URV9OT1BBQ0tFVCxB X1JFU1RSSUNUX05PUEFDS0VUKSwgIlVubG9jayBUTEIiLAore2ZDTEVBUl9UTEJfTE9DSygpO30p CisKK0RFRl9NQVBQSU5HKFkyX2sxbG9ja19tYXAsImsxbG9jayIsInRsYmxvY2siKQorREVGX01B UFBJTkcoWTJfazF1bmxvY2tfbWFwLCJrMXVubG9jayIsInRsYnVubG9jayIpCisKK1E2SU5TTihZ Ml9rMGxvY2ssImswbG9jayIsIEFUVFJJQlMoQV9QUklWLEFfTk9URV9QUklWLEFfTk9URV9OT1BB Q0tFVCxBX1JFU1RSSUNUX05PUEFDS0VULEFfTk9fVElNSU5HX0xPRyksICJMb2NrIEswIiwKK3tm U0VUX0swX0xPQ0soKX0pCisKK1E2SU5TTihZMl9rMHVubG9jaywiazB1bmxvY2siLCBBVFRSSUJT KEFfUFJJVixBX05PVEVfUFJJVixBX05PVEVfTk9QQUNLRVQsQV9SRVNUUklDVF9OT1BBQ0tFVCks ICJVbmxvY2sgSzAiLAore2ZDTEVBUl9LMF9MT0NLKCk7fSkKKworLyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogU3VwZXJ2aXNvciBSZWcgTWFuYWdlbWVu dCAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqLworCitERUZfVjRfTUFQUElORyhZMl9jcnN3YXBfb2xkLCJjcnN3YXAoUngzMixz Z3ApIiwiY3Jzd2FwKFJ4MzIsc2dwMCkiKQorCitRNklOU04oWTJfY3Jzd2FwMCwiY3Jzd2FwKFJ4 MzIsc2dwMCkiLEFUVFJJQlMoQV9QUklWLEFfTk9URV9QUklWKSwgIlN3YXAgc3lzdGVtIGdlbmVy YWwgcG9pbnRlciAwIHdpdGggR1BSIiwKK3tmSElERShzaXplNHNfdCB0bXA7KSB0bXAgPSBSeFY7 IFJ4ViA9IFJFQURfU0dQMCgpOyBXUklURV9TR1AwKHRtcCk7fSkKK1E2SU5TTihZNF9jcnN3YXAx LCJjcnN3YXAoUngzMixzZ3AxKSIsQVRUUklCUyhBX1BSSVYsQV9OT1RFX1BSSVYpLCAiU3dhcCBz eXN0ZW0gZ2VuZXJhbCBwb2ludGVyIDEgd2l0aCBHUFIiLAore2ZISURFKHNpemU0c190IHRtcDsp IHRtcCA9IFJ4VjsgUnhWID0gUkVBRF9TR1AxKCk7IFdSSVRFX1NHUDEodG1wKTt9KQorCitRNklO U04oWTRfY3Jzd2FwMTAsImNyc3dhcChSeHgzMixzZ3AxOjApIixBVFRSSUJTKEFfUFJJVixBX05P VEVfUFJJViksICJTd2FwIHN5c3RlbSBnZW5lcmFsIHB1cnBvc2UgMC8xIHdpdGggR1BSIFBhaXIi LAore2ZISURFKHNpemU4c190IHRtcDspIHRtcCA9IFJ4eFY7IFJ4eFY9UkVBRF9TR1AxMCgpOyBX UklURV9TR1AxMCh0bXApO30pCisKK1E2SU5TTihZMl90ZnJzY3JyLCJSZDMyPVNzMTI4IixBVFRS SUJTKEFfUFJJVixBX05PVEVfUFJJViksIlRyYW5zZmVyIFN1cGVydmlzb3IgUmVnIHRvIEdQUiIs IHtSZFY9U3NWO30pCitRNklOU04oWTJfdGZyc3JjciwiU2QxMjg9UnMzMiIsQVRUUklCUyhBX1BS SVYsQV9OT1RFX1BSSVYpLCJUcmFuc2ZlciBHUFIgdG8gU3VwZXJ2aXNvciBSZWciLCB7U2RWPVJz Vjt9KQorUTZJTlNOKFk0X3RmcnNjcHAsIlJkZDMyPVNzczEyOCIsQVRUUklCUyhBX1BSSVYsQV9O T1RFX1BSSVYpLCJUcmFuc2ZlciBTdXBlcnZpc29yIFJlZyB0byBHUFIiLCB7UmRkVj1Tc3NWO30p CitRNklOU04oWTRfdGZyc3BjcCwiU2RkMTI4PVJzczMyIixBVFRSSUJTKEFfUFJJVixBX05PVEVf UFJJViksIlRyYW5zZmVyIEdQUiB0byBTdXBlcnZpc29yIFJlZyIsIHtTZGRWPVJzc1Y7fSkKKwor I2lmZGVmIFBUV0FMSworUTZJTlNOKFk2X3RmcmFjcnIsIlJkMzI9QXM2NCIsQVRUUklCUyhBX1BS SVYsQV9OT1RFX1BSSVYpLCJUcmFuc2ZlciBBZGRyZXNzIFJlZyB0byBHUFIiLCB7UmRWPUFzVjt9 KQorUTZJTlNOKFk2X3RmcmFyY3IsIkFkNjQ9UnMzMiIsQVRUUklCUyhBX1BSSVYsQV9OT1RFX1BS SVYpLCJUcmFuc2ZlciBHUFIgdG8gQWRkcmVzcyBSZWciLCB7QWRWPVJzVjt9KQorUTZJTlNOKFk2 X3RmcmFjcHAsIlJkZDMyPUFzczY0IixBVFRSSUJTKEFfUFJJVixBX05PVEVfUFJJViksIlRyYW5z ZmVyIEFkZHJlc3MgUmVnIHRvIEdQUiIsIHtSZGRWPUFzc1Y7fSkKK1E2SU5TTihZNl90ZnJhcGNw LCJBZGQ2ND1Sc3MzMiIsQVRUUklCUyhBX1BSSVYsQV9OT1RFX1BSSVYpLCJUcmFuc2ZlciBHUFIg dG8gQWRkcmVzcyBSZWciLCB7QWRkVj1Sc3NWO30pCisjZW5kaWYKKworUTZJTlNOKEc0X3Rmcmdj cnIsIlJkMzI9R3MzMiIsQVRUUklCUyhBX0dVRVNULEFfTk9URV9HVUVTVCksIlRyYW5zZmVyIEd1 ZXN0IFJlZyB0byBHUFIiLCB7UmRWPUdzVjt9KQorUTZJTlNOKEc0X3RmcmdyY3IsIkdkMzI9UnMz MiIsQVRUUklCUyhBX0dVRVNULEFfTk9URV9HVUVTVCksIlRyYW5zZmVyIEdQUiB0byBHdWVzdCBS ZWciLCB7R2RWPVJzVjt9KQorUTZJTlNOKEc0X3RmcmdjcHAsIlJkZDMyPUdzczMyIixBVFRSSUJT KEFfR1VFU1QsQV9OT1RFX0dVRVNUKSwiVHJhbnNmZXIgR3Vlc3QgUmVnIHRvIEdQUiIsIHtSZGRW PUdzc1Y7fSkKK1E2SU5TTihHNF90ZnJncGNwLCJHZGQzMj1Sc3MzMiIsQVRUUklCUyhBX0dVRVNU LEFfTk9URV9HVUVTVCksIlRyYW5zZmVyIEdQUiB0byBHdWVzdCBSZWciLCB7R2RkVj1Sc3NWO30p CisKKworCitRNklOU04oWTJfc2V0cHJpbywic2V0cHJpbyhQdDQsUnMzMikiLEFUVFJJQlMoQV9Q UklWLEFfTk9URV9QUklWKSwiQ2hhbmdlIFRJRCBQcmlvIG9mIGFub3RoZXIgdGhyZWFkIiwKK3tm UFJFRFVTRV9USU1JTkcoKTtXUklURV9QUklPKFB0ViAmIHRocmVhZC0+cHJvY2Vzc29yX3B0ci0+ dGhyZWFkX3N5c3RlbV9tYXNrLFJzVik7IH0pCisKKworCisKKy8qKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIFBvd2VyIE1hbmFnZW1lbnQgLyBUaHJlYWQg b24vb2ZmICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKi8KK1E2SU5TTihZNl9kaWFnLCJkaWFnKFJzMzIpIixBVFRSSUJTKCksIlNlbmQgdmFs dWUgdG8gRGlhZyB0cmFjZSBtb2R1bGUiLHsKK30pCitRNklOU04oWTZfZGlhZzAsImRpYWcwKFJz czMyLFJ0dDMyKSIsQVRUUklCUygpLCJTZW5kIHZhbHVlcyBvZiB0d28gcmVnaXN0ZXIgdG8gRElB RyBUcmFjZS4gU2V0IFg9MCIseworfSkKK1E2SU5TTihZNl9kaWFnMSwiZGlhZzEoUnNzMzIsUnR0 MzIpIixBVFRSSUJTKCksIlNlbmQgdmFsdWVzIG9mIHR3byByZWdpc3RlciB0byBESUFHIFRyYWNl LiAgU2V0IFg9MSIseworfSkKKworCitRNklOU04oWTRfdHJhY2UsInRyYWNlKFJzMzIpIixBVFRS SUJTKEFfTk9URV9BWE9LLEFfUkVTVFJJQ1RfUEFDS0VUX0FYT0spLCJTZW5kIHZhbHVlIHRvIEVU TSB0cmFjZSIseworICAgIGZET19UUkFDRShSc1YpOworfSkKKworUTZJTlNOKFkyX3N0b3AsInN0 b3AoUnMzMikiLEFUVFJJQlMoQV9QUklWLEFfTk9URV9QUklWLEFfTk9URV9OT1BBQ0tFVCxBX1JF U1RSSUNUX05PUEFDS0VUKSwiU3RvcCB0aHJlYWQocykiLHsKKyAgICBmSElERShSc1Y9UnNWOykK KyAgICBpZiAoIWZJTl9ERUJVR19NT0RFX05PX0lTREIoZkdFVF9UTlVNKCkpKSBmQ0xFQVJfUlVO X01PREUoZkdFVF9UTlVNKCkpOworfSkKKworUTZJTlNOKFk0X25taSwibm1pKFJzMzIpIixBVFRS SUJTKEFfUFJJVixBX05PVEVfUFJJVixBX05PVEVfTk9QQUNLRVQsQV9SRVNUUklDVF9OT1BBQ0tF VCxBX05PX1RJTUlOR19MT0cpLCJSYWlzZSBOTUkgb24gdGhyZWFkKHMpIix7CisgICAgZkRPX05N SShSc1YpOworfSkKKworUTZJTlNOKFkyX3N0YXJ0LCJzdGFydChSczMyKSIsQVRUUklCUyhBX1BS SVYsQV9OT1RFX1BSSVYsQV9OT1RFX05PUEFDS0VULEFfUkVTVFJJQ1RfTk9QQUNLRVQpLCJTdGFy dCB0aHJlYWQocykiLGZTVEFSVChSc1YpOykKKworUTZJTlNOKFkyX3dhaXQsIndhaXQoUnMzMiki LEFUVFJJQlMoQV9QUklWLEFfTk9URV9QUklWLEFfTk9URV9OT1BBQ0tFVCxBX1JFU1RSSUNUX05P UEFDS0VULEFfTk9fVElNSU5HX0xPRyksIk1ha2UgdGhyZWFkKHMpIHdhaXQiLHsKKyAgICBmSElE RShSc1Y9UnNWOykKKyAgICBpZiAoIWZJTl9ERUJVR19NT0RFKGZHRVRfVE5VTSgpKSkgZlNFVF9X QUlUX01PREUoZkdFVF9UTlVNKCkpOworCWZJTl9ERUJVR19NT0RFX1dBUk4oZkdFVF9UTlVNKCkp OworfSkKKworUTZJTlNOKFkyX3Jlc3VtZSwicmVzdW1lKFJzMzIpIixBVFRSSUJTKEFfUFJJVixB X05PVEVfUFJJVixBX05PVEVfTk9QQUNLRVQsQV9SRVNUUklDVF9OT1BBQ0tFVCksIk1ha2UgdGhy ZWFkKHMpIHN0b3Agd2FpdGluZyIsZlJFU1VNRShSc1YpOykKKworUTZJTlNOKFkyX2JyZWFrLCJi cmtwdCIsQVRUUklCUyhBX05PVEVfTk9QQUNLRVQsQV9SRVNUUklDVF9OT1BBQ0tFVCksIkJyZWFr cG9pbnQiLHtmQlJFQUsoKTt9KQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKi8KKy8qIENhY2hlIE1hbmFnZW1lbnQgICAgICAgICAgICAgICAgICAgICAg ICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKwor UTZJTlNOKFkyX2ljdGFnciwiUmQzMj1pY3RhZ3IoUnMzMikiLEFUVFJJQlMoQV9JQ09QLEFfUFJJ VixBX05PVEVfUFJJVixBX05PVEVfTk9QQUNLRVQsQV9SRVNUUklDVF9OT1BBQ0tFVCxBX0NBQ0hF T1AsQV9DT1BCWUlEWCxBX0lDVEFHT1ApLCJJbnN0cnVjdGlvbiBDYWNoZSBUYWcgUmVhZCIse2ZJ Q1RBR1IoUnNWLFJkVixSZE4pO30pCitRNklOU04oWTJfaWN0YWd3LCJpY3RhZ3coUnMzMixSdDMy KSIsQVRUUklCUyhBX0lDT1AsQV9QUklWLEFfTk9URV9QUklWLEFfTk9URV9OT1BBQ0tFVCxBX1JF U1RSSUNUX05PUEFDS0VULEFfQ0FDSEVPUCxBX0NPUEJZSURYLEFfSUNUQUdPUCksIkluc3RydWN0 aW9uIENhY2hlIFRhZyBXcml0ZSIse2ZJQ1RBR1coUnNWLFJ0Vik7fSkKK1E2SU5TTihZMl9pY2Rh dGF3LCJpY2RhdGF3KFJzMzIsUnQzMikiLEFUVFJJQlMoQV9JQ09QLEFfUFJJVixBX05PVEVfUFJJ VixBX05PVEVfTk9QQUNLRVQsQV9SRVNUUklDVF9OT1BBQ0tFVCxBX0NBQ0hFT1AsQV9DT1BCWUlE WCxBX0lDVEFHT1ApLCJJbnN0cnVjdGlvbiBDYWNoZSBEYXRhIFdyaXRlIix7ZklDREFUQVcoUnNW LFJ0Vik7fSkKK1E2SU5TTihZMl9pY2RhdGFyLCJSZDMyPWljZGF0YXIoUnMzMikiLEFUVFJJQlMo QV9JQ09QLEFfUFJJVixBX05PVEVfUFJJVixBX05PVEVfTk9QQUNLRVQsQV9SRVNUUklDVF9OT1BB Q0tFVCxBX0NBQ0hFT1AsQV9DT1BCWUlEWCxBX0lDVEFHT1ApLCJJbnN0cnVjdGlvbiBDYWNoZSBE YXRhIFJlYWQiLHtmSUNEQVRBUihSc1YsIFJkVik7fSkKK1E2SU5TTihZMl9pY2ludmEsImljaW52 YShSczMyKSIsQVRUUklCUyhBX0lDT1AsQV9OT1RFX05PUEFDS0VULEFfUkVTVFJJQ1RfTk9QQUNL RVQsQV9DQUNIRU9QLEFfQ09QQllBRERSRVNTLEFfSUNGTFVTSE9QKSwiSW5zdHJ1Y3Rpb24gQ2Fj aGUgSW52YWxpZGF0ZSBBZGRyZXNzIix7ZkVBX1JFRyhSc1YpOyBmSUNJTlZBKEVBKTt9KQorUTZJ TlNOKFkyX2ljaW52aWR4LCJpY2ludmlkeChSczMyKSIsQVRUUklCUyhBX0lDT1AsQV9QUklWLEFf Tk9URV9QUklWLEFfTk9URV9OT1BBQ0tFVCxBX1JFU1RSSUNUX05PUEFDS0VULEFfQ0FDSEVPUCxB X0NPUEJZSURYLEFfSUNGTFVTSE9QKSwiSW5zdHJ1Y3Rpb24gQ2FjaGUgSW52YWxpZGF0ZSBJbmRl eCIse2ZJQ0lOVklEWChSc1YpO30pCitRNklOU04oWTJfaWNraWxsLCJpY2tpbGwiLEFUVFJJQlMo QV9JQ09QLEFfUFJJVixBX05PVEVfUFJJVixBX05PVEVfTk9QQUNLRVQsQV9SRVNUUklDVF9OT1BB Q0tFVCxBX0NBQ0hFT1AsQV9JQ0ZMVVNIT1ApLCJJbnN0cnVjdGlvbiBDYWNoZSBJbnZhbGlkYXRl Iix7ZklDS0lMTCgpO30pCisKK1E2SU5TTihZMl9pc3luYywiaXN5bmMiLEFUVFJJQlMoQV9OT1RF X05PUEFDS0VULEFfUkVTVFJJQ1RfTk9QQUNLRVQpLCJNZW1vcnkgU3luY2hyb25pemF0aW9uIix7 ZklTWU5DKCk7fSkKK1E2SU5TTihZMl9iYXJyaWVyLCJiYXJyaWVyIixBVFRSSUJTKEFfTk9URV9O T1BBQ0tFVCxBX1JFU1RSSUNUX1NMT1QwT05MWSxBX1JFU1RSSUNUX1BBQ0tFVF9BWE9LKSwiTWVt b3J5IEJhcnJpZXIiLHtmQkFSUklFUigpO30pCitRNklOU04oWTJfc3luY2h0LCJzeW5jaHQiLEFU VFJJQlMoQV9OT1RFX05PUEFDS0VULEFfUkVTVFJJQ1RfU0xPVDBPTkxZLEFfUkVTVFJJQ1RfTk9Q QUNLRVQpLCJNZW1vcnkgU3luY2hyb25pemF0aW9uIix7ZlNZTkNIKCk7fSkKKworCitRNklOU04o WTJfZGNmZXRjaGJvLCJkY2ZldGNoKFJzMzIrI3UxMTozKSIsQVRUUklCUyhBX1JFU1RSSUNUX1BS RUZFUlNMT1QwLEFfRENGRVRDSCxBX1JFU1RSSUNUX05PU0xPVDFfU1RPUkUpLCJEYXRhIENhY2hl IFByZWZldGNoIix7ZkVBX1JJKFJzVix1aVYpOyBmRENGRVRDSChFQSk7fSkKK0RFRl9NQVBQSU5H KFkyX2RjZmV0Y2gsICAiZGNmZXRjaChSczMyKSIsImRjZmV0Y2goUnMzMisjMCkiKQorUTZJTlNO KFkyX2Rja2lsbCwiZGNraWxsIixBVFRSSUJTKEFfUFJJVixBX05PVEVfUFJJVixBX05PVEVfTk9Q QUNLRVQsQV9SRVNUUklDVF9TTE9UME9OTFksQV9SRVNUUklDVF9OT1BBQ0tFVCxBX0NBQ0hFT1As QV9EQ0ZMVVNIT1ApLCJEYXRhIENhY2hlIEludmFsaWRhdGUiLHtmRENLSUxMKCk7fSkKKworCitR NklOU04oWTJfZGN6ZXJvYSwiZGN6ZXJvYShSczMyKSIsQVRUUklCUyhBX1NUT1JFLEFfUkVTVFJJ Q1RfU0xPVDFfQU9LLEFfTk9URV9TTE9UMV9BT0ssQV9SRVNUUklDVF9TTE9UME9OTFksQV9DQUNI RU9QLEFfQ09QQllBRERSRVNTLEFfRENaRVJPQSksIlplcm8gYW4gYWxpZ25lZCAzMi1ieXRlIGNh Y2hlbGluZSIse2ZFQV9SRUcoUnNWKTsgZkRDWkVST0EoRUEpO30pCitRNklOU04oWTJfZGNjbGVh bmEsImRjY2xlYW5hKFJzMzIpIixBVFRSSUJTKEFfUkVTVFJJQ1RfU0xPVDFfQU9LLEFfTk9URV9T TE9UMV9BT0ssQV9SRVNUUklDVF9TTE9UME9OTFksQV9DQUNIRU9QLEFfQ09QQllBRERSRVNTLEFf RENGTFVTSE9QKSwiRGF0YSBDYWNoZSBDbGVhbiBBZGRyZXNzIix7ZkVBX1JFRyhSc1YpOyBmREND TEVBTkEoRUEpO30pCitRNklOU04oWTJfZGNjbGVhbmlkeCwiZGNjbGVhbmlkeChSczMyKSIsQVRU UklCUyhBX1BSSVYsQV9OT1RFX1BSSVYsQV9SRVNUUklDVF9QQUNLRVRfQVhPSyxBX05PVEVfQVhP SyxBX1JFU1RSSUNUX1NMT1QwT05MWSxBX0NBQ0hFT1AsQV9DT1BCWUlEWCxBX0RDRkxVU0hPUCks IkRhdGEgQ2FjaGUgQ2xlYW4gSW5kZXgiLHtmRENDTEVBTklEWChSc1YpO30pCitRNklOU04oWTJf ZGNjbGVhbmludmEsImRjY2xlYW5pbnZhKFJzMzIpIixBVFRSSUJTKEFfUkVTVFJJQ1RfU0xPVDFf QU9LLEFfTk9URV9TTE9UMV9BT0ssQV9SRVNUUklDVF9TTE9UME9OTFksQV9DQUNIRU9QLEFfQ09Q QllBRERSRVNTLEFfRENGTFVTSE9QKSwiRGF0YSBDYWNoZSBDbGVhbiBhbmQgSW52YWxpZGF0ZSBB ZGRyZXNzIix7ZkVBX1JFRyhSc1YpOyBmRENDTEVBTklOVkEoRUEpO30pCitRNklOU04oWTJfZGNj bGVhbmludmlkeCwiZGNjbGVhbmludmlkeChSczMyKSIsQVRUUklCUyhBX1BSSVYsQV9OT1RFX1BS SVYsQV9SRVNUUklDVF9QQUNLRVRfQVhPSyxBX05PVEVfQVhPSyxBX1JFU1RSSUNUX1NMT1QwT05M WSxBX0NBQ0hFT1AsQV9DT1BCWUlEWCxBX0RDRkxVU0hPUCksIkRhdGEgQ2FjaGUgQ2xlYW4gYW5k IEludmFsaWRhdGUgSW5kZXgiLHtmRENDTEVBTklOVklEWChSc1YpO30pCitRNklOU04oWTJfZGNp bnZhLCJkY2ludmEoUnMzMikiLEFUVFJJQlMoQV9SRVNUUklDVF9TTE9UMV9BT0ssQV9OT1RFX1NM T1QxX0FPSyxBX1JFU1RSSUNUX1NMT1QwT05MWSxBX0NBQ0hFT1AsQV9DT1BCWUFERFJFU1MsQV9E Q0ZMVVNIT1ApLCJEYXRhIENhY2hlIEludmFsaWRhdGUgQWRkcmVzcyIse2ZFQV9SRUcoUnNWKTsg ZkRDQ0xFQU5JTlZBKEVBKTt9KQorUTZJTlNOKFkyX2RjaW52aWR4LCJkY2ludmlkeChSczMyKSIs QVRUUklCUyhBX1BSSVYsQV9OT1RFX1BSSVYsQV9SRVNUUklDVF9QQUNLRVRfQVhPSyxBX05PVEVf QVhPSyxBX1JFU1RSSUNUX1NMT1QwT05MWSxBX0NBQ0hFT1AsQV9DT1BCWUlEWCxBX0RDRkxVU0hP UCksIkRhdGEgQ2FjaGUgSW52YWxpZGF0ZSBJbmRleCIse2ZEQ0lOVklEWChSc1YpO30pCitRNklO U04oWTJfZGN0YWdyLCJSZDMyPWRjdGFncihSczMyKSIsQVRUUklCUyhBX1BSSVYsQV9OT1RFX1BS SVYsQV9SRVNUUklDVF9QQUNLRVRfQVhPSyxBX05PVEVfQVhPSyxBX1JFU1RSSUNUX1NMT1QwT05M WSxBX0NBQ0hFT1AsQV9DT1BCWUlEWCxBX0RDVEFHT1ApLCJEYXRhIENhY2hlIFRhZyBSZWFkIix7 ZkRDVEFHUihSc1YsUmRWLFJkTik7fSkKK1E2SU5TTihZMl9kY3RhZ3csImRjdGFndyhSczMyLFJ0 MzIpIixBVFRSSUJTKEFfUFJJVixBX05PVEVfUFJJVixBX1JFU1RSSUNUX1NMT1QwT05MWSxBX05P VEVfTk9QQUNLRVQsQV9SRVNUUklDVF9OT1BBQ0tFVCxBX0NBQ0hFT1AsQV9DT1BCWUlEWCxBX0RD VEFHT1ApLCJEYXRhIENhY2hlIFRhZyBXcml0ZSIse2ZEQ1RBR1coUnNWLFJ0Vik7fSkKKworCitR NklOU04oWTJfbDJraWxsLCJsMmtpbGwiLEFUVFJJQlMoQV9QUklWLEFfTk9URV9QUklWLEFfTk9U RV9OT1BBQ0tFVCxBX1JFU1RSSUNUX1NMT1QwT05MWSxBX1JFU1RSSUNUX05PUEFDS0VULEFfQ0FD SEVPUCxBX0wyRkxVU0hPUCksIkwyIENhY2hlIEludmFsaWRhdGUiLHtmTDJLSUxMKCk7fSkKK1E2 SU5TTihZNF9sMnRhZ3csImwydGFndyhSczMyLFJ0MzIpIixBVFRSSUJTKEFfUFJJVixBX05PVEVf QkFEVEFHX1VOREVGLEFfTk9URV9QUklWLEFfUkVTVFJJQ1RfU0xPVDBPTkxZLEFfTk9URV9OT1BB Q0tFVCxBX1JFU1RSSUNUX05PUEFDS0VULEFfQ0FDSEVPUCxBX0NPUEJZSURYLEFfTDJUQUdPUCks IkwyIENhY2hlIFRhZyBXcml0ZSIse2ZMMlRBR1coUnNWLFJ0Vik7fSkKK1E2SU5TTihZNF9sMnRh Z3IsIlJkMzI9bDJ0YWdyKFJzMzIpIixBVFRSSUJTKEFfUFJJVixBX05PVEVfQkFEVEFHX1VOREVG LEFfTk9URV9QUklWLEFfTk9URV9BWE9LLEFfUkVTVFJJQ1RfUEFDS0VUX0FYT0ssQV9SRVNUUklD VF9TTE9UME9OTFksQV9DQUNIRU9QLEFfQ09QQllJRFgsQV9MMlRBR09QKSwiTDIgQ2FjaGUgVGFn IFJlYWQiLHtmTDJUQUdSKFJzVixSZFYsUmROKTt9KQorCitRNklOU04oWTJfbDJjbGVhbmludmlk eCwibDJjbGVhbmludmlkeChSczMyKSIsQVRUUklCUyhBX1BSSVYsQV9OT1RFX1BSSVYsQV9OT1RF X0FYT0ssQV9SRVNUUklDVF9QQUNLRVRfQVhPSyxBX1JFU1RSSUNUX1NMT1QwT05MWSxBX0NBQ0hF T1AsQV9DT1BCWUlEWCxBX0wyRkxVU0hPUCksIkwyIENhY2hlIENsZWFuIGFuZCBJbnZhbGlkYXRl IEluZGV4Iix7ZkwyQ0xFQU5JTlZJRFgoUnNWKTsgfSkKK1E2SU5TTihZNV9sMmNsZWFuaWR4LCJs MmNsZWFuaWR4KFJzMzIpIixBVFRSSUJTKEFfUFJJVixBX05PVEVfUFJJVixBX05PVEVfQVhPSyxB X1JFU1RSSUNUX1BBQ0tFVF9BWE9LLEFfUkVTVFJJQ1RfU0xPVDBPTkxZLEFfQ0FDSEVPUCxBX0NP UEJZSURYLEFfTDJGTFVTSE9QKSwiTDIgQ2FjaGUgQ2xlYW4gYnkgSW5kZXgiLHtmTDJDTEVBTklE WChSc1YpOyB9KQorUTZJTlNOKFk1X2wyaW52aWR4LCJsMmludmlkeChSczMyKSIsQVRUUklCUyhB X1BSSVYsQV9OT1RFX1BSSVYsQV9OT1RFX0FYT0ssQV9SRVNUUklDVF9QQUNLRVRfQVhPSyxBX1JF U1RSSUNUX1NMT1QwT05MWSxBX0NBQ0hFT1AsQV9DT1BCWUlEWCxBX0wyRkxVU0hPUCksIkwyIENh Y2hlIEludmFsaWRhdGUgYnkgSW5kZXgiLHtmTDJJTlZJRFgoUnNWKTsgfSkKKworCisKK1E2SU5T TihZNF9sMmZldGNoLCJsMmZldGNoKFJzMzIsUnQzMikiLEFUVFJJQlMoQV9SRVNUUklDVF9TTE9U ME9OTFksQV9SRVNUUklDVF9QQUNLRVRfQVhPSyxBX05PVEVfQVhPSyksIkwyIENhY2hlIFByZWZl dGNoIiwKK3sgZkwyRkVUQ0goUnNWLAorCShSdFYmMHhmZiksIC8qaGVpZ2h0Ki8KKwkoKFJ0Vj4+ OCkmMHhmZiksIC8qd2lkdGgqLworCSgoUnRWPj4xNikmMHhmZmZmKSwgLypzdHJpZGUqLworCTAp OyAvKmV4dHJhIGF0dHJpYiBmbGFncyovCit9KQorCisKKworUTZJTlNOKFk1X2wyZmV0Y2gsImwy ZmV0Y2goUnMzMixSdHQzMikiLEFUVFJJQlMoQV9SRVNUUklDVF9TTE9UME9OTFksQV9SRVNUUklD VF9QQUNLRVRfQVhPSyxBX05PVEVfQVhPSyksIkwyIENhY2hlIFByZWZldGNoIiwKK3sgZkwyRkVU Q0goUnNWLAorCWZHRVRVSEFMRigwLFJ0dFYpLCAvKmhlaWdodCovCisJZkdFVFVIQUxGKDEsUnR0 ViksIC8qd2lkdGgqLworCWZHRVRVSEFMRigyLFJ0dFYpLCAvKnN0cmlkZSovCisJZkdFVFVIQUxG KDMsUnR0VikpOyAvKmZsYWdzKi8KK30pCisKK1E2SU5TTihZNV9sMmxvY2thLCJQZDQ9bDJsb2Nr YShSczMyKSIsIEFUVFJJQlMoQV9QUklWLEFfTk9URV9QUklWLEFfQ0FDSEVPUCxBX0NPUEJZQURE UkVTUyxBX1JFU1RSSUNUX1NMT1QwT05MWSxBX1JFU1RSSUNUX1BBQ0tFVF9BWE9LLEFfTk9URV9B WE9LLEFfUkVTVFJJQ1RfTEFURVBSRUQsQV9OT1RFX0xBVEVQUkVEKSwKKyJMb2NrIEwyIGNhY2hl IGxpbmUgYnkgYWRkcmVzcyIsIHsgZkVBX1JFRyhSc1YpOyBmTDJMT0NLQShFQSxQZFYsUGROKTsg ZkhJREUoTUFSS19MQVRFX1BSRURfV1JJVEUoUGROKSkgfSk7CisKKworUTZJTlNOKFk1X2wydW5s b2NrYSwibDJ1bmxvY2thKFJzMzIpIiwgQVRUUklCUyhBX1BSSVYsQV9OT1RFX1BSSVYsQV9DQUNI RU9QLEFfQ09QQllBRERSRVNTLEFfUkVTVFJJQ1RfU0xPVDBPTkxZLEFfUkVTVFJJQ1RfUEFDS0VU X0FYT0ssQV9OT1RFX0FYT0spLCAiVW5Mb2NrIEwyIGNhY2hlIGxpbmUgYnkgYWRkcmVzcyIsIHsg ZkVBX1JFRyhSc1YpOyBmTDJVTkxPQ0tBKEVBKTsgfSkKKworCisKK1E2SU5TTihZNV9sMmd1bmxv Y2ssImwyZ3VubG9jayIsQVRUUklCUyhBX1BSSVYsQV9OT1RFX1BSSVYsQV9OT1RFX05PUEFDS0VU LEFfUkVTVFJJQ1RfU0xPVDBPTkxZLEFfUkVTVFJJQ1RfTk9QQUNLRVQsQV9DQUNIRU9QLEFfTDJG TFVTSE9QKSwiTDIgR2xvYmFsIFVubG9jayIse2ZMMlVOTE9DSygpO30pCisKK1E2SU5TTihZNV9s MmdjbGVhbiwibDJnY2xlYW4iLEFUVFJJQlMoQV9QUklWLEFfTk9URV9QUklWLEFfTk9URV9OT1BB Q0tFVCxBX1JFU1RSSUNUX1NMT1QwT05MWSxBX1JFU1RSSUNUX05PUEFDS0VULEFfQ0FDSEVPUCxB X0wyRkxVU0hPUCksIkwyIEdsb2JhbCBDbGVhbiIse2ZMMkNMRUFOKCk7fSkKKworUTZJTlNOKFk1 X2wyZ2NsZWFuaW52LCJsMmdjbGVhbmludiIsQVRUUklCUyhBX1BSSVYsQV9OT1RFX1BSSVYsQV9O T1RFX05PUEFDS0VULEFfUkVTVFJJQ1RfU0xPVDBPTkxZLEFfUkVTVFJJQ1RfTk9QQUNLRVQsQV9D QUNIRU9QLEFfTDJGTFVTSE9QKSwiTDIgR2xvYmFsIENsZWFuIGFuZCBJbnZhbGlkYXRlIix7Zkwy Q0xFQU5JTlYoKTt9KQorCitRNklOU04oWTZfbDJnY2xlYW5wYSwibDJnY2xlYW4oUnR0MzIpIixB VFRSSUJTKEFfUFJJVixBX05PVEVfUFJJVixBX05PVEVfTk9QQUNLRVQsQV9SRVNUUklDVF9TTE9U ME9OTFksQV9SRVNUUklDVF9OT1BBQ0tFVCxBX0NBQ0hFT1AsQV9MMkZMVVNIT1ApLCJMMiBHbG9i YWwgQ2xlYW4gYnkgUEEgUmFuZ2UiLHtmTDJDTEVBTlBBKFJ0dFYpO30pCisKK1E2SU5TTihZNl9s MmdjbGVhbmludnBhLCJsMmdjbGVhbmludihSdHQzMikiLEFUVFJJQlMoQV9QUklWLEFfTk9URV9Q UklWLEFfTk9URV9OT1BBQ0tFVCxBX1JFU1RSSUNUX1NMT1QwT05MWSxBX1JFU1RSSUNUX05PUEFD S0VULEFfQ0FDSEVPUCxBX0wyRkxVU0hPUCksIkwyIEdsb2JhbCBDbGVhbiBhbmQgSW52YWxpZGF0 ZSBieSBQQSBSYW5nZSIse2ZMMkNMRUFOSU5WUEEoUnR0Vik7fSkKKworCi0tIAoyLjcuNAoK