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=-16.6 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,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 8D51FC433EF for ; Mon, 20 Sep 2021 21:51:52 +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 0BBBC6112D for ; Mon, 20 Sep 2021 21:51:52 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 0BBBC6112D Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=quicinc.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=nongnu.org Received: from localhost ([::1]:49494 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mSRCZ-0004vE-6W for qemu-devel@archiver.kernel.org; Mon, 20 Sep 2021 17:51:51 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:60640) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mSQnN-0003Cw-Bz for qemu-devel@nongnu.org; Mon, 20 Sep 2021 17:25:50 -0400 Received: from alexa-out-sd-02.qualcomm.com ([199.106.114.39]:9868) by eggs.gnu.org with esmtps (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1mSQnH-00028P-3t for qemu-devel@nongnu.org; Mon, 20 Sep 2021 17:25:49 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; i=@quicinc.com; q=dns/txt; s=qcdkim; t=1632173143; x=1663709143; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=+9nRP8G/n/ooVYIBzbb1iy49EUINc8GJpQe4Vyk4gNU=; b=zAjnsqkly7NBRzmc1zvLRpRPIgEW6UV4/r6igTfwHaukx3oZRm8JK/WY 6SYW+yZtXZRkBduKhBd40MfABrOq2PQD2j1rNuylsdbL1gf1+RxRPeby3 QuE2ug+sLBcZ/OoQ6wPAAVzbEWgodX8BGVPvlcHJsK92daeR+M+4yfmjp k=; Received: from unknown (HELO ironmsg02-sd.qualcomm.com) ([10.53.140.142]) by alexa-out-sd-02.qualcomm.com with ESMTP; 20 Sep 2021 14:24:38 -0700 X-QCInternal: smtphost Received: from vu-tsimpson-aus.qualcomm.com (HELO vu-tsimpson1-aus.qualcomm.com) ([10.222.150.1]) by ironmsg02-sd.qualcomm.com with ESMTP; 20 Sep 2021 14:24:37 -0700 Received: by vu-tsimpson1-aus.qualcomm.com (Postfix, from userid 47164) id CB4EB1712; Mon, 20 Sep 2021 16:24:35 -0500 (CDT) From: Taylor Simpson To: qemu-devel@nongnu.org Subject: [PATCH v3 24/30] Hexagon HVX (target/hexagon) import semantics Date: Mon, 20 Sep 2021 16:24:19 -0500 Message-Id: <1632173065-18522-25-git-send-email-tsimpson@quicinc.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1632173065-18522-1-git-send-email-tsimpson@quicinc.com> References: <1632173065-18522-1-git-send-email-tsimpson@quicinc.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Received-SPF: pass client-ip=199.106.114.39; envelope-from=tsimpson@qualcomm.com; helo=alexa-out-sd-02.qualcomm.com X-Spam_score_int: -39 X-Spam_score: -4.0 X-Spam_bar: ---- X-Spam_report: (-4.0 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action 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: ale@rev.ng, bcain@quicinc.com, tsimpson@quicinc.com, richard.henderson@linaro.org, f4bug@amsat.org Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" SW1wb3J0ZWQgZnJvbSB0aGUgSGV4YWdvbiBhcmNoaXRlY3R1cmUgbGlicmFyeQogICAgaW1wb3J0 ZWQvYWxsZXh0LmlkZWYgICAgICAgICAgIFRvcCBsZXZlbCBmaWxlIGZvciBhbGwgZXh0ZW5zaW9u cwogICAgaW1wb3J0ZWQvbW12ZWMvZXh0LmlkZWYgICAgICAgIEhWWCBpbnN0cnVjdGlvbiBkZWZp bml0aW9ucwoKU3VwcG9ydCBmdW5jdGlvbnMgYWRkZWQgdG8gdGFyZ2V0L2hleGFnb24vZ2VucHRy LmMKClNpZ25lZC1vZmYtYnk6IFRheWxvciBTaW1wc29uIDx0c2ltcHNvbkBxdWljaW5jLmNvbT4K LS0tCiB0YXJnZXQvaGV4YWdvbi9nZW5wdHIuYyAgICAgICAgICAgICAgICB8ICAxNzUgKysrCiB0 YXJnZXQvaGV4YWdvbi9pbXBvcnRlZC9hbGxleHQuaWRlZiAgICB8ICAgMjUgKwogdGFyZ2V0L2hl eGFnb24vaW1wb3J0ZWQvYWxsaWRlZnMuZGVmICAgfCAgICAxICsKIHRhcmdldC9oZXhhZ29uL2lt cG9ydGVkL21tdmVjL2V4dC5pZGVmIHwgMjYwNiArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKwogNCBmaWxlcyBjaGFuZ2VkLCAyODA3IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEw MDY0NCB0YXJnZXQvaGV4YWdvbi9pbXBvcnRlZC9hbGxleHQuaWRlZgogY3JlYXRlIG1vZGUgMTAw NjQ0IHRhcmdldC9oZXhhZ29uL2ltcG9ydGVkL21tdmVjL2V4dC5pZGVmCgpkaWZmIC0tZ2l0IGEv dGFyZ2V0L2hleGFnb24vZ2VucHRyLmMgYi90YXJnZXQvaGV4YWdvbi9nZW5wdHIuYwppbmRleCA1 YTlhN2RmLi45ZTU2MzdiIDEwMDY0NAotLS0gYS90YXJnZXQvaGV4YWdvbi9nZW5wdHIuYworKysg Yi90YXJnZXQvaGV4YWdvbi9nZW5wdHIuYwpAQCAtMTksMTEgKzE5LDEzIEBACiAjaW5jbHVkZSAi Y3B1LmgiCiAjaW5jbHVkZSAiaW50ZXJuYWwuaCIKICNpbmNsdWRlICJ0Y2cvdGNnLW9wLmgiCisj aW5jbHVkZSAidGNnL3RjZy1vcC1ndmVjLmgiCiAjaW5jbHVkZSAiaW5zbi5oIgogI2luY2x1ZGUg Im9wY29kZXMuaCIKICNpbmNsdWRlICJ0cmFuc2xhdGUuaCIKICNkZWZpbmUgUUVNVV9HRU5FUkFU RSAgICAgICAvKiBVc2VkIGludGVybmFsbHkgYnkgbWFjcm9zLmggKi8KICNpbmNsdWRlICJtYWNy b3MuaCIKKyNpbmNsdWRlICJtbXZlYy9tYWNyb3MuaCIKICN1bmRlZiBRRU1VX0dFTkVSQVRFCiAj aW5jbHVkZSAiZ2VuX3RjZy5oIgogI2luY2x1ZGUgImdlbl90Y2dfaHZ4LmgiCkBAIC00NzUsNSAr NDc3LDE3OCBAQCBzdGF0aWMgVENHdiBnZW5fOGJpdHNvZihUQ0d2IHJlc3VsdCwgVENHdiB2YWx1 ZSkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCitzdGF0aWMgaW50cHRyX3QgdnJlZ19zcmNfb2Zm KERpc2FzQ29udGV4dCAqY3R4LCBpbnQgbnVtKQoreworICAgIGludHB0cl90IG9mZnNldCA9IG9m ZnNldG9mKENQVUhleGFnb25TdGF0ZSwgVlJlZ3NbbnVtXSk7CisKKyAgICBpZiAodGVzdF9iaXQo bnVtLCBjdHgtPnZyZWdzX3NlbGVjdCkpIHsKKyAgICAgICAgb2Zmc2V0ID0gY3R4X2Z1dHVyZV92 cmVnX29mZihjdHgsIG51bSwgMSwgZmFsc2UpOworICAgIH0KKyAgICBpZiAodGVzdF9iaXQobnVt LCBjdHgtPnZyZWdzX3VwZGF0ZWRfdG1wKSkgeworICAgICAgICBvZmZzZXQgPSBjdHhfdG1wX3Zy ZWdfb2ZmKGN0eCwgbnVtLCAxLCBmYWxzZSk7CisgICAgfQorICAgIHJldHVybiBvZmZzZXQ7Cit9 CisKK3N0YXRpYyB2b2lkIGdlbl9sb2dfdnJlZ193cml0ZShEaXNhc0NvbnRleHQgKmN0eCwgaW50 cHRyX3Qgc3Jjb2ZmLCBpbnQgbnVtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZS ZWdXcml0ZVR5cGUgdHlwZSwgaW50IHNsb3RfbnVtLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGJvb2wgaXNfcHJlZGljYXRlZCkKK3sKKyAgICBUQ0dMYWJlbCAqbGFiZWxfZW5kID0g TlVMTDsKKyAgICBpbnRwdHJfdCBkc3RvZmY7CisKKyAgICBpZiAoaXNfcHJlZGljYXRlZCkgewor ICAgICAgICBUQ0d2IGNhbmNlbGxlZCA9IHRjZ190ZW1wX2xvY2FsX25ldygpOworICAgICAgICBs YWJlbF9lbmQgPSBnZW5fbmV3X2xhYmVsKCk7CisKKyAgICAgICAgLyogRG9uJ3QgZG8gYW55dGhp bmcgaWYgdGhlIHNsb3Qgd2FzIGNhbmNlbGxlZCAqLworICAgICAgICB0Y2dfZ2VuX2V4dHJhY3Rf dGwoY2FuY2VsbGVkLCBoZXhfc2xvdF9jYW5jZWxsZWQsIHNsb3RfbnVtLCAxKTsKKyAgICAgICAg dGNnX2dlbl9icmNvbmRpX3RsKFRDR19DT05EX05FLCBjYW5jZWxsZWQsIDAsIGxhYmVsX2VuZCk7 CisgICAgICAgIHRjZ190ZW1wX2ZyZWUoY2FuY2VsbGVkKTsKKyAgICB9CisKKyAgICBpZiAodHlw ZSAhPSBFWFRfVE1QKSB7CisgICAgICAgIGRzdG9mZiA9IGN0eF9mdXR1cmVfdnJlZ19vZmYoY3R4 LCBudW0sIDEsIHRydWUpOworICAgICAgICB0Y2dfZ2VuX2d2ZWNfbW92KE1PXzY0LCBkc3RvZmYs IHNyY29mZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoTU1WZWN0b3IpLCBzaXpl b2YoTU1WZWN0b3IpKTsKKyAgICAgICAgdGNnX2dlbl9vcmlfdGwoaGV4X1ZSZWdzX3VwZGF0ZWQs IGhleF9WUmVnc191cGRhdGVkLCAxIDw8IG51bSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZHN0 b2ZmID0gY3R4X3RtcF92cmVnX29mZihjdHgsIG51bSwgMSwgZmFsc2UpOworICAgICAgICB0Y2df Z2VuX2d2ZWNfbW92KE1PXzY0LCBkc3RvZmYsIHNyY29mZiwKKyAgICAgICAgICAgICAgICAgICAg ICAgICBzaXplb2YoTU1WZWN0b3IpLCBzaXplb2YoTU1WZWN0b3IpKTsKKyAgICB9CisKKyAgICBp ZiAoaXNfcHJlZGljYXRlZCkgeworICAgICAgICBnZW5fc2V0X2xhYmVsKGxhYmVsX2VuZCk7Cisg ICAgfQorfQorCitzdGF0aWMgdm9pZCBnZW5fbG9nX3ZyZWdfd3JpdGVfcGFpcihEaXNhc0NvbnRl eHQgKmN0eCwgaW50cHRyX3Qgc3Jjb2ZmLCBpbnQgbnVtLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgVlJlZ1dyaXRlVHlwZSB0eXBlLCBpbnQgc2xvdF9udW0sCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzX3ByZWRpY2F0ZWQpCit7CisgICAg Z2VuX2xvZ192cmVnX3dyaXRlKGN0eCwgc3Jjb2ZmLCBudW0gXiAwLCB0eXBlLCBzbG90X251bSwg aXNfcHJlZGljYXRlZCk7CisgICAgc3Jjb2ZmICs9IHNpemVvZihNTVZlY3Rvcik7CisgICAgZ2Vu X2xvZ192cmVnX3dyaXRlKGN0eCwgc3Jjb2ZmLCBudW0gXiAxLCB0eXBlLCBzbG90X251bSwgaXNf cHJlZGljYXRlZCk7Cit9CisKK3N0YXRpYyB2b2lkIGdlbl9sb2dfcXJlZ193cml0ZShpbnRwdHJf dCBzcmNvZmYsIGludCBudW0sIGludCB2bmV3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGludCBzbG90X251bSwgYm9vbCBpc19wcmVkaWNhdGVkKQoreworICAgIFRDR0xhYmVsICps YWJlbF9lbmQgPSBOVUxMOworICAgIGludHB0cl90IGRzdG9mZjsKKworICAgIGlmIChpc19wcmVk aWNhdGVkKSB7CisgICAgICAgIFRDR3YgY2FuY2VsbGVkID0gdGNnX3RlbXBfbG9jYWxfbmV3KCk7 CisgICAgICAgIGxhYmVsX2VuZCA9IGdlbl9uZXdfbGFiZWwoKTsKKworICAgICAgICAvKiBEb24n dCBkbyBhbnl0aGluZyBpZiB0aGUgc2xvdCB3YXMgY2FuY2VsbGVkICovCisgICAgICAgIHRjZ19n ZW5fZXh0cmFjdF90bChjYW5jZWxsZWQsIGhleF9zbG90X2NhbmNlbGxlZCwgc2xvdF9udW0sIDEp OworICAgICAgICB0Y2dfZ2VuX2JyY29uZGlfdGwoVENHX0NPTkRfTkUsIGNhbmNlbGxlZCwgMCwg bGFiZWxfZW5kKTsKKyAgICAgICAgdGNnX3RlbXBfZnJlZShjYW5jZWxsZWQpOworICAgIH0KKwor ICAgIGRzdG9mZiA9IG9mZnNldG9mKENQVUhleGFnb25TdGF0ZSwgZnV0dXJlX1FSZWdzW251bV0p OworICAgIHRjZ19nZW5fZ3ZlY19tb3YoTU9fNjQsIGRzdG9mZiwgc3Jjb2ZmLCBzaXplb2YoTU1R UmVnKSwgc2l6ZW9mKE1NUVJlZykpOworCisgICAgaWYgKGlzX3ByZWRpY2F0ZWQpIHsKKyAgICAg ICAgdGNnX2dlbl9vcmlfdGwoaGV4X1FSZWdzX3VwZGF0ZWQsIGhleF9RUmVnc191cGRhdGVkLCAx IDw8IG51bSk7CisgICAgICAgIGdlbl9zZXRfbGFiZWwobGFiZWxfZW5kKTsKKyAgICB9Cit9CisK K3N0YXRpYyB2b2lkIGdlbl92cmVnX2xvYWQoRGlzYXNDb250ZXh0ICpjdHgsIGludHB0cl90IGRz dG9mZiwgVENHdiBzcmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgYWxpZ25lZCkK K3sKKyAgICBUQ0d2X2k2NCB0bXAgPSB0Y2dfdGVtcF9uZXdfaTY0KCk7CisgICAgaWYgKGFsaWdu ZWQpIHsKKyAgICAgICAgdGNnX2dlbl9hbmRpX3RsKHNyYywgc3JjLCB+KChpbnQzMl90KXNpemVv ZihNTVZlY3RvcikgLSAxKSk7CisgICAgfQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZW9m KE1NVmVjdG9yKSAvIDg7IGkrKykgeworICAgICAgICB0Y2dfZ2VuX3FlbXVfbGQ2NCh0bXAsIHNy YywgY3R4LT5tZW1faWR4KTsKKyAgICAgICAgdGNnX2dlbl9hZGRpX3RsKHNyYywgc3JjLCA4KTsK KyAgICAgICAgdGNnX2dlbl9zdF9pNjQodG1wLCBjcHVfZW52LCBkc3RvZmYgKyBpICogOCk7Cisg ICAgfQorICAgIHRjZ190ZW1wX2ZyZWVfaTY0KHRtcCk7Cit9CisKK3N0YXRpYyB2b2lkIGdlbl92 cmVnX3N0b3JlKERpc2FzQ29udGV4dCAqY3R4LCBJbnNuICppbnNuLCBQYWNrZXQgKnBrdCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIFRDR3YgRUEsIGludHB0cl90IHNyY29mZiwgaW50IHNs b3QsIGJvb2wgYWxpZ25lZCkKK3sKKyAgICBpbnRwdHJfdCBkc3RvZmYgPSBvZmZzZXRvZihDUFVI ZXhhZ29uU3RhdGUsIHZzdG9yZVtzbG90XS5kYXRhKTsKKyAgICBpbnRwdHJfdCBtYXNrb2ZmID0g b2Zmc2V0b2YoQ1BVSGV4YWdvblN0YXRlLCB2c3RvcmVbc2xvdF0ubWFzayk7CisKKyAgICBpZiAo aXNfZ2F0aGVyX3N0b3JlX2luc24oaW5zbiwgcGt0KSkgeworICAgICAgICBUQ0d2IHNsID0gdGNn X2NvbnN0X3RsKHNsb3QpOworICAgICAgICBnZW5faGVscGVyX2dhdGhlcl9zdG9yZShjcHVfZW52 LCBFQSwgc2wpOworICAgICAgICB0Y2dfdGVtcF9mcmVlKHNsKTsKKyAgICAgICAgcmV0dXJuOwor ICAgIH0KKworICAgIHRjZ19nZW5fbW92aV90bChoZXhfdnN0b3JlX3BlbmRpbmdbc2xvdF0sIDEp OworICAgIGlmIChhbGlnbmVkKSB7CisgICAgICAgIHRjZ19nZW5fYW5kaV90bChoZXhfdnN0b3Jl X2FkZHJbc2xvdF0sIEVBLAorICAgICAgICAgICAgICAgICAgICAgICAgfigoaW50MzJfdClzaXpl b2YoTU1WZWN0b3IpIC0gMSkpOworICAgIH0gZWxzZSB7CisgICAgICAgIHRjZ19nZW5fbW92X3Rs KGhleF92c3RvcmVfYWRkcltzbG90XSwgRUEpOworICAgIH0KKyAgICB0Y2dfZ2VuX21vdmlfdGwo aGV4X3ZzdG9yZV9zaXplW3Nsb3RdLCBzaXplb2YoTU1WZWN0b3IpKTsKKworICAgIC8qIENvcHkg dGhlIGRhdGEgdG8gdGhlIHZzdG9yZSBidWZmZXIgKi8KKyAgICB0Y2dfZ2VuX2d2ZWNfbW92KE1P XzY0LCBkc3RvZmYsIHNyY29mZiwgc2l6ZW9mKE1NVmVjdG9yKSwgc2l6ZW9mKE1NVmVjdG9yKSk7 CisgICAgLyogU2V0IHRoZSBtYXNrIHRvIGFsbCAxJ3MgKi8KKyAgICB0Y2dfZ2VuX2d2ZWNfZHVw X2ltbShNT182NCwgbWFza29mZiwgc2l6ZW9mKE1NUVJlZyksIHNpemVvZihNTVFSZWcpLCB+MExM KTsKK30KKworc3RhdGljIHZvaWQgZ2VuX3ZyZWdfbWFza2VkX3N0b3JlKERpc2FzQ29udGV4dCAq Y3R4LCBUQ0d2IEVBLCBpbnRwdHJfdCBzcmNvZmYsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaW50cHRyX3QgYml0c29mZiwgaW50IHNsb3QsIGJvb2wgaW52ZXJ0KQoreworICAg IGludHB0cl90IGRzdG9mZiA9IG9mZnNldG9mKENQVUhleGFnb25TdGF0ZSwgdnN0b3JlW3Nsb3Rd LmRhdGEpOworICAgIGludHB0cl90IG1hc2tvZmYgPSBvZmZzZXRvZihDUFVIZXhhZ29uU3RhdGUs IHZzdG9yZVtzbG90XS5tYXNrKTsKKworICAgIHRjZ19nZW5fbW92aV90bChoZXhfdnN0b3JlX3Bl bmRpbmdbc2xvdF0sIDEpOworICAgIHRjZ19nZW5fYW5kaV90bChoZXhfdnN0b3JlX2FkZHJbc2xv dF0sIEVBLAorICAgICAgICAgICAgICAgICAgICB+KChpbnQzMl90KXNpemVvZihNTVZlY3Rvcikg LSAxKSk7CisgICAgdGNnX2dlbl9tb3ZpX3RsKGhleF92c3RvcmVfc2l6ZVtzbG90XSwgc2l6ZW9m KE1NVmVjdG9yKSk7CisKKyAgICAvKiBDb3B5IHRoZSBkYXRhIHRvIHRoZSB2c3RvcmUgYnVmZmVy ICovCisgICAgdGNnX2dlbl9ndmVjX21vdihNT182NCwgZHN0b2ZmLCBzcmNvZmYsIHNpemVvZihN TVZlY3RvciksIHNpemVvZihNTVZlY3RvcikpOworICAgIC8qIENvcHkgdGhlIG1hc2sgKi8KKyAg ICB0Y2dfZ2VuX2d2ZWNfbW92KE1PXzY0LCBtYXNrb2ZmLCBiaXRzb2ZmLCBzaXplb2YoTU1RUmVn KSwgc2l6ZW9mKE1NUVJlZykpOworICAgIGlmIChpbnZlcnQpIHsKKyAgICAgICAgdGNnX2dlbl9n dmVjX25vdChNT182NCwgbWFza29mZiwgbWFza29mZiwKKyAgICAgICAgICAgICAgICAgICAgICAg ICBzaXplb2YoTU1RUmVnKSwgc2l6ZW9mKE1NUVJlZykpOworICAgIH0KK30KKworc3RhdGljIHZv aWQgdmVjX3RvX3F2ZWMoc2l6ZV90IHNpemUsIGludHB0cl90IGRzdG9mZiwgaW50cHRyX3Qgc3Jj b2ZmKQoreworICAgIFRDR3ZfaTY0IHRtcCA9IHRjZ190ZW1wX25ld19pNjQoKTsKKyAgICBUQ0d2 X2k2NCB3b3JkID0gdGNnX3RlbXBfbmV3X2k2NCgpOworICAgIFRDR3ZfaTY0IGJpdHMgPSB0Y2df dGVtcF9uZXdfaTY0KCk7CisgICAgVENHdl9pNjQgbWFzayA9IHRjZ190ZW1wX25ld19pNjQoKTsK KyAgICBUQ0d2X2k2NCB6ZXJvID0gdGNnX2NvbnN0X2k2NCgwKTsKKyAgICBUQ0d2X2k2NCBvbmVz ID0gdGNnX2NvbnN0X2k2NCh+MCk7CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemVvZihN TVZlY3RvcikgLyA4OyBpKyspIHsKKyAgICAgICAgdGNnX2dlbl9sZF9pNjQodG1wLCBjcHVfZW52 LCBzcmNvZmYgKyBpICogOCk7CisgICAgICAgIHRjZ19nZW5fbW92aV9pNjQobWFzaywgMCk7CisK KyAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCA4OyBqICs9IHNpemUpIHsKKyAgICAgICAgICAg IHRjZ19nZW5fZXh0cmFjdF9pNjQod29yZCwgdG1wLCBqICogOCwgc2l6ZSAqIDgpOworICAgICAg ICAgICAgdGNnX2dlbl9tb3Zjb25kX2k2NChUQ0dfQ09ORF9ORSwgYml0cywgd29yZCwgemVybywg b25lcywgemVybyk7CisgICAgICAgICAgICB0Y2dfZ2VuX2RlcG9zaXRfaTY0KG1hc2ssIG1hc2ss IGJpdHMsIGosIHNpemUpOworICAgICAgICB9CisKKyAgICAgICAgdGNnX2dlbl9zdDhfaTY0KG1h c2ssIGNwdV9lbnYsIGRzdG9mZiArIGkpOworICAgIH0KKyAgICB0Y2dfdGVtcF9mcmVlX2k2NCh0 bXApOworICAgIHRjZ190ZW1wX2ZyZWVfaTY0KHdvcmQpOworICAgIHRjZ190ZW1wX2ZyZWVfaTY0 KGJpdHMpOworICAgIHRjZ190ZW1wX2ZyZWVfaTY0KG1hc2spOworICAgIHRjZ190ZW1wX2ZyZWVf aTY0KHplcm8pOworICAgIHRjZ190ZW1wX2ZyZWVfaTY0KG9uZXMpOworfQorCiAjaW5jbHVkZSAi dGNnX2Z1bmNzX2dlbmVyYXRlZC5jLmluYyIKICNpbmNsdWRlICJ0Y2dfZnVuY190YWJsZV9nZW5l cmF0ZWQuYy5pbmMiCmRpZmYgLS1naXQgYS90YXJnZXQvaGV4YWdvbi9pbXBvcnRlZC9hbGxleHQu aWRlZiBiL3RhcmdldC9oZXhhZ29uL2ltcG9ydGVkL2FsbGV4dC5pZGVmCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkNGIyM2UKLS0tIC9kZXYvbnVsbAorKysgYi90YXJnZXQv aGV4YWdvbi9pbXBvcnRlZC9hbGxleHQuaWRlZgpAQCAtMCwwICsxLDI1IEBACisvKgorICogIENv cHlyaWdodChjKSAyMDE5LTIwMjEgUXVhbGNvbW0gSW5ub3ZhdGlvbiBDZW50ZXIsIEluYy4gQWxs IFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqICBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQor ICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhl IExpY2Vuc2UsIG9yCisgKiAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAq CisgKiAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiAgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2Vp dmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3 aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNl cy8+LgorICovCisKKy8qCisgKiBUb3AgbGV2ZWwgZmlsZSBmb3IgYWxsIGluc3RydWN0aW9uIHNl dCBleHRlbnNpb25zCisgKi8KKyNkZWZpbmUgRVhUTkFNRSBtbXZlYworI2RlZmluZSBFWFRTVFIg Im1tdmVjIgorI2luY2x1ZGUgIm1tdmVjL2V4dC5pZGVmIgorI3VuZGVmIEVYVE5BTUUKKyN1bmRl ZiBFWFRTVFIKZGlmZiAtLWdpdCBhL3RhcmdldC9oZXhhZ29uL2ltcG9ydGVkL2FsbGlkZWZzLmRl ZiBiL3RhcmdldC9oZXhhZ29uL2ltcG9ydGVkL2FsbGlkZWZzLmRlZgppbmRleCAyYWFjZTI5Li5l ZTI1M2I4IDEwMDY0NAotLS0gYS90YXJnZXQvaGV4YWdvbi9pbXBvcnRlZC9hbGxpZGVmcy5kZWYK KysrIGIvdGFyZ2V0L2hleGFnb24vaW1wb3J0ZWQvYWxsaWRlZnMuZGVmCkBAIC0yOCwzICsyOCw0 IEBACiAjaW5jbHVkZSAic2hpZnQuaWRlZiIKICNpbmNsdWRlICJzeXN0ZW0uaWRlZiIKICNpbmNs dWRlICJzdWJpbnNucy5pZGVmIgorI2luY2x1ZGUgImFsbGV4dC5pZGVmIgpkaWZmIC0tZ2l0IGEv dGFyZ2V0L2hleGFnb24vaW1wb3J0ZWQvbW12ZWMvZXh0LmlkZWYgYi90YXJnZXQvaGV4YWdvbi9p bXBvcnRlZC9tbXZlYy9leHQuaWRlZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li44Y2E1YTYwCi0tLSAvZGV2L251bGwKKysrIGIvdGFyZ2V0L2hleGFnb24vaW1wb3J0ZWQvbW12 ZWMvZXh0LmlkZWYKQEAgLTAsMCArMSwyNjA2IEBACisvKgorICogIENvcHlyaWdodChjKSAyMDE5 LTIwMjEgUXVhbGNvbW0gSW5ub3ZhdGlvbiBDZW50ZXIsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZl ZC4KKyAqCisgKiAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogIHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisg KiAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBwcm9n cmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg KiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy cmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlCisgKiAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v cmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3Jh bTsgaWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICovCisKKy8q KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAgICAgSE9ZQTogTVVMVEkgTUVESUEgSU5TVFJV Q0lUT05TCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmbmRlZiBFWFRJTlNOCisj ZGVmaW5lIEVYVElOU04gUTZJTlNOCisjZGVmaW5lIF9fU0VMRl9ERUZfRVhUSU5TTiAxCisjZW5k aWYKKworI2lmbmRlZiBOT19NTVZFQworCisjZGVmaW5lIERPX0ZPUl9FQUNIX0NPREUoV0lEVEgs IENPREUpIFwKK3sgXAorICAgIGZISURFKGludCBpOykgXAorICAgIGZWRk9SRUFDSChXSURUSCwg aSkge1wKKyAgICAgICAgQ09ERSA7XAorICAgIH0gXAorfQorCisKKworCisjZGVmaW5lIElURVJB VE9SX0lOU05fQU5ZX1NMT1QoV0lEVEgsVEFHLFNZTlRBWCxERVNDUixDT0RFKSBcCitFWFRJTlNO KFY2XyMjVEFHLCBTWU5UQVgsIEFUVFJJQlMoQV9FWFRFTlNJT04sQV9DVkksQV9DVklfVkEpLCAg XAorREVTQ1IsIERPX0ZPUl9FQUNIX0NPREUoV0lEVEgsIENPREUpKQorCisKKworI2RlZmluZSBJ VEVSQVRPUl9JTlNOMl9BTllfU0xPVChXSURUSCxUQUcsU1lOVEFYLFNZTlRBWDIsREVTQ1IsQ09E RSkgXAorSVRFUkFUT1JfSU5TTl9BTllfU0xPVChXSURUSCxUQUcsU1lOVEFYMixERVNDUixDT0RF KQorCisjZGVmaW5lIElURVJBVE9SX0lOU05fQU5ZX1NMT1RfRE9VQkxFX1ZFQyhXSURUSCxUQUcs U1lOVEFYLERFU0NSLENPREUpIFwKK0VYVElOU04oVjZfIyNUQUcsIFNZTlRBWCwgQVRUUklCUyhB X0VYVEVOU0lPTixBX0NWSSxBX0NWSV9WQV9EViksICBcCitERVNDUiwgRE9fRk9SX0VBQ0hfQ09E RShXSURUSCwgQ09ERSkpCisKKworI2RlZmluZSBJVEVSQVRPUl9JTlNOMl9BTllfU0xPVF9ET1VC TEVfVkVDKFdJRFRILFRBRyxTWU5UQVgsU1lOVEFYMixERVNDUixDT0RFKSBcCitJVEVSQVRPUl9J TlNOX0FOWV9TTE9UX0RPVUJMRV9WRUMoV0lEVEgsVEFHLFNZTlRBWDIsREVTQ1IsQ09ERSkKKwor CisjZGVmaW5lIElURVJBVE9SX0lOU05fU0hJRlRfU0xPVChXSURUSCxUQUcsU1lOVEFYLERFU0NS LENPREUpIFwKK0VYVElOU04oVjZfIyNUQUcsIFNZTlRBWCwgQVRUUklCUyhBX0VYVEVOU0lPTixB X0NWSSxBX0NWSV9WUyksICBcCitERVNDUiwgRE9fRk9SX0VBQ0hfQ09ERShXSURUSCwgQ09ERSkp CisKKworCisjZGVmaW5lIElURVJBVE9SX0lOU05fU0hJRlRfU0xPVF9WVl9MQVRFKFdJRFRILFRB RyxTWU5UQVgsREVTQ1IsQ09ERSkgXAorRVhUSU5TTihWNl8jI1RBRywgU1lOVEFYLCBBVFRSSUJT KEFfRVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJX1ZTKSwgIFwKK0RFU0NSLCBET19GT1JfRUFDSF9DT0RF KFdJRFRILCBDT0RFKSkKKworI2RlZmluZSBJVEVSQVRPUl9JTlNOMl9TSElGVF9TTE9UKFdJRFRI LFRBRyxTWU5UQVgsU1lOVEFYMixERVNDUixDT0RFKSBcCitJVEVSQVRPUl9JTlNOX1NISUZUX1NM T1QoV0lEVEgsVEFHLFNZTlRBWDIsREVTQ1IsQ09ERSkKKworI2RlZmluZSBJVEVSQVRPUl9JTlNO X1BFUk1VVEVfU0xPVChXSURUSCxUQUcsU1lOVEFYLERFU0NSLENPREUpIFwKK0VYVElOU04oVjZf IyNUQUcsIFNZTlRBWCwgQVRUUklCUyhBX0VYVEVOU0lPTixBX0NWSSxBX0NWSV9WUCksICBcCitE RVNDUiwgRE9fRk9SX0VBQ0hfQ09ERShXSURUSCwgQ09ERSkpCisKKyNkZWZpbmUgSVRFUkFUT1Jf SU5TTjJfUEVSTVVURV9TTE9UKFdJRFRILFRBRyxTWU5UQVgsU1lOVEFYMixERVNDUixDT0RFKSBc CitJVEVSQVRPUl9JTlNOX1BFUk1VVEVfU0xPVChXSURUSCxUQUcsU1lOVEFYMixERVNDUixDT0RF KQorCisjZGVmaW5lIElURVJBVE9SX0lOU05fUEVSTVVURV9TTE9UX0RFUChXSURUSCxUQUcsU1lO VEFYLERFU0NSLENPREUpIFwKK0VYVElOU04oVjZfIyNUQUcsIFNZTlRBWCwgQVRUUklCUyhBX0VY VEVOU0lPTixBX0NWSSxBX0NWSV9WUCksCisKKworI2RlZmluZSBJVEVSQVRPUl9JTlNOMl9QRVJN VVRFX1NMT1RfREVQKFdJRFRILFRBRyxTWU5UQVgsU1lOVEFYMixERVNDUixDT0RFKSBcCitJVEVS QVRPUl9JTlNOX1BFUk1VVEVfU0xPVF9ERVAoV0lEVEgsVEFHLFNZTlRBWDIsREVTQ1IsQ09ERSkK KworI2RlZmluZSBJVEVSQVRPUl9JTlNOX1BFUk1VVEVfU0xPVF9ET1VCTEVfVkVDKFdJRFRILFRB RyxTWU5UQVgsREVTQ1IsQ09ERSkgXAorRVhUSU5TTihWNl8jI1RBRywgU1lOVEFYLCBBVFRSSUJT KEFfRVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJX1ZQX1ZTKSwgIFwKK0RFU0NSLCBET19GT1JfRUFDSF9D T0RFKFdJRFRILCBDT0RFKSkKKworI2RlZmluZSBJVEVSQVRPUl9JTlNOX1BFUk1VVEVfU0xPVF9E T1VCTEVfVkVDX0RFUChXSURUSCxUQUcsU1lOVEFYLERFU0NSLENPREUpIFwKK0VYVElOU04oVjZf IyNUQUcsIFNZTlRBWCwgQVRUUklCUyhBX0VYVEVOU0lPTixBX0NWSSxBX0NWSV9WUF9WUyksICBc CitERVNDUiwgRE9fRk9SX0VBQ0hfQ09ERShXSURUSCwgQ09ERSkpCisKKyNkZWZpbmUgSVRFUkFU T1JfSU5TTjJfUEVSTVVURV9TTE9UX0RPVUJMRV9WRUMoV0lEVEgsVEFHLFNZTlRBWCxTWU5UQVgy LERFU0NSLENPREUpIFwKK0lURVJBVE9SX0lOU05fUEVSTVVURV9TTE9UX0RPVUJMRV9WRUMoV0lE VEgsVEFHLFNZTlRBWDIsREVTQ1IsQ09ERSkKKworI2RlZmluZSBJVEVSQVRPUl9JTlNOX01QWV9T TE9UKFdJRFRILFRBRywgU1lOVEFYLERFU0NSLENPREUpIFwKK0VYVElOU04oVjZfIyNUQUcsIFNZ TlRBWCwgXAorQVRUUklCUyhBX0VYVEVOU0lPTixBX0NWSSxBX0NWSV9WWCksICBcCitERVNDUiwg RE9fRk9SX0VBQ0hfQ09ERShXSURUSCwgQ09ERSkpCisKKyNkZWZpbmUgSVRFUkFUT1JfSU5TTl9N UFlfU0xPVF9MQVRFKFdJRFRILFRBRywgU1lOVEFYLERFU0NSLENPREUpIFwKK0VYVElOU04oVjZf IyNUQUcsIFNZTlRBWCwgXAorQVRUUklCUyhBX0VYVEVOU0lPTixBX0NWSSxBX0NWSV9WWCksICBc CitERVNDUiwgRE9fRk9SX0VBQ0hfQ09ERShXSURUSCwgQ09ERSkpCisKKyNkZWZpbmUgSVRFUkFU T1JfSU5TTjJfTVBZX1NMT1QoV0lEVEgsVEFHLFNZTlRBWCxTWU5UQVgyLERFU0NSLENPREUpIFwK K0lURVJBVE9SX0lOU05fTVBZX1NMT1QoV0lEVEgsVEFHLFNZTlRBWDIsREVTQ1IsQ09ERSkKKwor I2RlZmluZSBJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9MQVRFKFdJRFRILFRBRywgU1lOVEFYLFNZ TlRBWDIsREVTQ1IsQ09ERSkgXAorSVRFUkFUT1JfSU5TTl9NUFlfU0xPVF9MQVRFKFdJRFRILFRB RywgU1lOVEFYMixERVNDUixDT0RFKQorCisKKyNkZWZpbmUgSVRFUkFUT1JfSU5TTl9NUFlfU0xP VF9ET1VCTEVfVkVDKFdJRFRILFRBRyxTWU5UQVgsREVTQ1IsQ09ERSkgXAorRVhUSU5TTihWNl8j I1RBRywgU1lOVEFYLCBBVFRSSUJTKEFfRVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJX1ZYX0RWKSwgIFwK K0RFU0NSLCBET19GT1JfRUFDSF9DT0RFKFdJRFRILCBDT0RFKSkKKworI2RlZmluZSBJVEVSQVRP Ul9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDKFdJRFRILFRBRyxTWU5UQVgsU1lOVEFYMixERVND UixDT0RFKSBcCitJVEVSQVRPUl9JTlNOX01QWV9TTE9UX0RPVUJMRV9WRUMoV0lEVEgsVEFHLFNZ TlRBWDIsREVTQ1IsQ09ERSkKKworCisKKworI2RlZmluZSBJVEVSQVRPUl9JTlNOMl9NUFlfU0xP VF9ET1VCTEVfVkVDMihXSURUSCxUQUcsU1lOVEFYLFNZTlRBWDIsREVTQ1IsQ09ERSkgXAorRVhU SU5TTihWNl8jI1RBRywgU1lOVEFYLCBBVFRSSUJTKEFfRVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJX1ZY X0RWLEFfQ1ZJX1ZYX1ZTUkMwX0lTX0RTVCksIERFU0NSLCBET19GT1JfRUFDSF9DT0RFKFdJRFRI LCBDT0RFKSkKKworI2RlZmluZSBJVEVSQVRPUl9JTlNOX1NMT1QyX0RPVUJMRV9WRUMoV0lEVEgs VEFHLFNZTlRBWCxERVNDUixDT0RFKSBcCitFWFRJTlNOKFY2XyMjVEFHLCBTWU5UQVgsIEFUVFJJ QlMoQV9FWFRFTlNJT04sQV9DVkksQV9DVklfVlhfRFYsQV9SRVNUUklDVF9TTE9UMk9OTFkpLCBE RVNDUiwgRE9fRk9SX0VBQ0hfQ09ERShXSURUSCwgQ09ERSkpCisKKyNkZWZpbmUgSVRFUkFUT1Jf SU5TTl9WSElTVExJS0UoV0lEVEgsVEFHLFNZTlRBWCxERVNDUixDT0RFKSBcCitFWFRJTlNOKFY2 XyMjVEFHLCBTWU5UQVgsIEFUVFJJQlMoQV9FWFRFTlNJT04sQV9DVkksQV9DVklfNFNMT1QpLCAg XAorREVTQ1IsIGZISURFKG1tdmVjdG9yX3QgaW5wdXQ7KSBpbnB1dCA9IGZUTVBWREFUQSgpOyBE T19GT1JfRUFDSF9DT0RFKFdJRFRILCBDT0RFKSkKKworCisKKworCisvKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqCisqCisqIE1NVkVDVE9SIE1FTU9SWSBPUEVSQVRJT05TIC0gTk8g TkFQQUxJIFYxCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKwor I2RlZmluZSBJVEVSQVRPUl9JTlNOX01QWV9TTE9UX0RPVUJMRV9WRUNfTk9WMShXSURUSCxUQUcs U1lOVEFYLERFU0NSLENPREUpIFwKK0VYVElOU04oVjZfIyNUQUcsIFNZTlRBWCwgQVRUUklCUyhB X0VYVEVOU0lPTixBX0NWSSxBX0NWSV9WWF9EViksICBcCitERVNDUiwgRE9fRk9SX0VBQ0hfQ09E RShXSURUSCwgQ09ERSkpCisKKyNkZWZpbmUgSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxF X1ZFQ19OT1YxKFdJRFRILFRBRyxTWU5UQVgsU1lOVEFYMixERVNDUixDT0RFKSBcCitJVEVSQVRP Ul9JTlNOX01QWV9TTE9UX0RPVUJMRV9WRUNfTk9WMShXSURUSCxUQUcsU1lOVEFYMixERVNDUixD T0RFKQorCisKKworI2RlZmluZSBJVEVSQVRPUl9JTlNOX1NISUZUX1NMT1RfTk9WMShXSURUSCxU QUcsU1lOVEFYLERFU0NSLENPREUpIFwKK0VYVElOU04oVjZfIyNUQUcsIFNZTlRBWCwgQVRUUklC UyhBX0VYVEVOU0lPTixBX0NWSSxBX0NWSV9WUyksICBcCitERVNDUiwgRE9fRk9SX0VBQ0hfQ09E RShXSURUSCwgQ09ERSkpCisKKyNkZWZpbmUgSVRFUkFUT1JfSU5TTjJfU0hJRlRfU0xPVF9OT1Yx KFdJRFRILFRBRyxTWU5UQVgsU1lOVEFYMixERVNDUixDT0RFKSBcCitJVEVSQVRPUl9JTlNOX1NI SUZUX1NMT1RfTk9WMShXSURUSCxUQUcsU1lOVEFYMixERVNDUixDT0RFKQorCisKKyNkZWZpbmUg SVRFUkFUT1JfSU5TTl9BTllfU0xPVF9OT1YxKFdJRFRILFRBRyxTWU5UQVgsREVTQ1IsQ09ERSkg XAorRVhUSU5TTihWNl8jI1RBRywgU1lOVEFYLCBBVFRSSUJTKEFfRVhURU5TSU9OLEFfQ1ZJLEFf Q1ZJX1ZBKSwgIFwKK0RFU0NSLCBET19GT1JfRUFDSF9DT0RFKFdJRFRILCBDT0RFKSkKKworI2Rl ZmluZSBJVEVSQVRPUl9JTlNOMl9BTllfU0xPVF9OT1YxKFdJRFRILFRBRyxTWU5UQVgsU1lOVEFY MixERVNDUixDT0RFKSBcCitJVEVSQVRPUl9JTlNOX0FOWV9TTE9UX05PVjEoV0lEVEgsVEFHLFNZ TlRBWDIsREVTQ1IsQ09ERSkKKworCisjZGVmaW5lIElURVJBVE9SX0lOU05fTVBZX1NMT1RfTk9W MShXSURUSCxUQUcsIFNZTlRBWCxERVNDUixDT0RFKSBcCitFWFRJTlNOKFY2XyMjVEFHLCBTWU5U QVgsIFwKK0FUVFJJQlMoQV9FWFRFTlNJT04sQV9DVkksQV9DVklfVlgpLCAgXAorREVTQ1IsIERP X0ZPUl9FQUNIX0NPREUoV0lEVEgsIENPREUpKQorCisjZGVmaW5lIElURVJBVE9SX0lOU05fUEVS TVVURV9TTE9UX05PVjEoV0lEVEgsVEFHLFNZTlRBWCxERVNDUixDT0RFKSBcCitFWFRJTlNOKFY2 XyMjVEFHLCBTWU5UQVgsIEFUVFJJQlMoQV9FWFRFTlNJT04sQV9DVkksQV9DVklfVlApLCAgXAor REVTQ1IsIERPX0ZPUl9FQUNIX0NPREUoV0lEVEgsIENPREUpKQorCisjZGVmaW5lIElURVJBVE9S X0lOU04yX1BFUk1VVEVfU0xPVFRfTk9WMShXSURUSCxUQUcsU1lOVEFYLFNZTlRBWDIsREVTQ1Is Q09ERSkgXAorSVRFUkFUT1JfSU5TTl9QRVJNVVRFX1NMT1QoV0lEVEgsVEFHLFNZTlRBWDIsREVT Q1IsQ09ERSkKKworI2RlZmluZSBJVEVSQVRPUl9JTlNOX1BFUk1VVEVfU0xPVF9ERVBUX05PVjEo V0lEVEgsVEFHLFNZTlRBWCxERVNDUixDT0RFKSBcCitFWFRJTlNOKFY2XyMjVEFHLCBTWU5UQVgs IEFUVFJJQlMoQV9FWFRFTlNJT04sQV9DVkksQV9DVklfVlApLAorCisKKyNkZWZpbmUgSVRFUkFU T1JfSU5TTjJfUEVSTVVURV9TTE9UX0RFUFRfTk9WMShXSURUSCxUQUcsU1lOVEFYLFNZTlRBWDIs REVTQ1IsQ09ERSkgXAorSVRFUkFUT1JfSU5TTl9QRVJNVVRFX1NMT1RfREVQX05PVjEoV0lEVEgs VEFHLFNZTlRBWDIsREVTQ1IsQ09ERSkKKworI2RlZmluZSBJVEVSQVRPUl9JTlNOX1BFUk1VVEVf U0xPVF9ET1VCTEVfVkVDX05PVjEoV0lEVEgsVEFHLFNZTlRBWCxERVNDUixDT0RFKSBcCitFWFRJ TlNOKFY2XyMjVEFHLCBTWU5UQVgsIEFUVFJJQlMoQV9FWFRFTlNJT04sQV9DVkksQV9DVklfVlBf VlMpLCAgXAorREVTQ1IsIERPX0ZPUl9FQUNIX0NPREUoV0lEVEgsIENPREUpKQorCisjZGVmaW5l IElURVJBVE9SX0lOU05fUEVSTVVURV9TTE9UX0RPVUJMRV9WRUNfREVQVF9OT1YxKFdJRFRILFRB RyxTWU5UQVgsREVTQ1IsQ09ERSkgXAorRVhUSU5TTihWNl8jI1RBRywgU1lOVEFYLCBBVFRSSUJT KEFfRVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJX1ZQX1ZTKSwgIFwKK0RFU0NSLCBET19GT1JfRUFDSF9D T0RFKFdJRFRILCBDT0RFKSkKKworI2RlZmluZSBJVEVSQVRPUl9JTlNOMl9QRVJNVVRFX1NMT1Rf RE9VQkxFX1ZFQ19OT1YxKFdJRFRILFRBRyxTWU5UQVgsU1lOVEFYMixERVNDUixDT0RFKSBcCitJ VEVSQVRPUl9JTlNOX1BFUk1VVEVfU0xPVF9ET1VCTEVfVkVDX05PVjEoV0lEVEgsVEFHLFNZTlRB WDIsREVTQ1IsQ09ERSkKKworI2RlZmluZSBOQVJST1dJTkdfU0hJRlRfTk9WMShJVEVSU0laRSxU QUcsRFNUTSxEU1RUWVBFLFNSQ1RZUEUsU1lOT1BUUyxTQVRGVU5DLFJOREZVTkMsU0hBTVRNQVNL KSBcCitJVEVSQVRPUl9JTlNOX1NISUZUX1NMT1RfTk9WMShJVEVSU0laRSxUQUcsIFwKKyJWZDMy LiIgI0RTVFRZUEUgIj12YXNyKFZ1MzIuIiAjU1JDVFlQRSAiLFZ2MzIuIiAjU1JDVFlQRSAiLFJ0 OCkiICNTWU5PUFRTLCBcCisiVmVjdG9yIHNoaWZ0IHJpZ2h0IGFuZCBzaHVmZmxlIiwgXAorICAg IGZISURFKGludCApc2hhbXQgPSBSdFYgJiBTSEFNVE1BU0s7IFwKKyAgICBEU1RNKDAsVmRWLlNS Q1RZUEVbaV0sU0FURlVOQyhSTkRGVU5DKFZ2Vi5TUkNUWVBFW2ldLHNoYW10KSA+PiBzaGFtdCkp OyBcCisgICAgRFNUTSgxLFZkVi5TUkNUWVBFW2ldLFNBVEZVTkMoUk5ERlVOQyhWdVYuU1JDVFlQ RVtpXSxzaGFtdCkgPj4gc2hhbXQpKSkKKworI2RlZmluZSBNTVZFQ19BVkdTX05PVjEoVFlQRSxU WVBFMixERVNDUiwgV0lEVEgsIERFU1QsU1JDKVwKK0lURVJBVE9SX0lOU04yX0FOWV9TTE9UX05P VjEoV0lEVEgsdmF2ZyMjVFlQRSwgICAgICAgICAgICAgICAgICAgICAgICAiVmQzMj12YXZnIlRZ UEUyIihWdTMyLFZ2MzIpIiwgICAgICAgICAgIlZkMzIuIiNERVNUIj12YXZnKFZ1MzIuIiNTUkMi LFZ2MzIuIiNTUkMiKSIsICAgICAgICAgICJWZWN0b3IgQXZlcmFnZSAiREVTQ1IsICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZFYuREVTVFtpXSAgPSBmVkFWR1MoICAgICAg IFdJRFRILCAgVnVWLlNSQ1tpXSwgVnZWLlNSQ1tpXSkpIFwKK0lURVJBVE9SX0lOU04yX0FOWV9T TE9UX05PVjEoV0lEVEgsdmF2ZyMjVFlQRSMjcm5kLCAgICAgICAgICAgICAgICAgICAiVmQzMj12 YXZnIlRZUEUyIihWdTMyLFZ2MzIpOnJuZCIsICAgICAgIlZkMzIuIiNERVNUIj12YXZnKFZ1MzIu IiNTUkMiLFZ2MzIuIiNTUkMiKTpybmQiLCAgICAgICJWZWN0b3IgQXZlcmFnZSAlIFJvdW5kIkRF U0NSLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZFYuREVTVFtpXSAgPSBmVkFWR1NS TkQoICAgIFdJRFRILCAgVnVWLlNSQ1tpXSwgVnZWLlNSQ1tpXSkpIFwKK0lURVJBVE9SX0lOU04y X0FOWV9TTE9UX05PVjEoV0lEVEgsdm5hdmcjI1RZUEUsICAgICAgICAgICAgICAgICAgICAgICAi VmQzMj12bmF2ZyJUWVBFMiIoVnUzMixWdjMyKSIsICAgICAgICAgIlZkMzIuIiNERVNUIj12bmF2 ZyhWdTMyLiIjU1JDIixWdjMyLiIjU1JDIikiLCAgICAgICAgICJWZWN0b3IgTmVnYXRpdmUgQXZl cmFnZSAiREVTQ1IsICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZFYuREVTVFtpXSAgPSBm Vk5BVkdTKCAgICAgIFdJRFRILCAgVnVWLlNSQ1tpXSwgVnZWLlNSQ1tpXSkpCisKKyAgI2RlZmlu ZSBNTVZFQ19BVkdVX05PVjEoVFlQRSxUWVBFMixERVNDUiwgV0lEVEgsIERFU1QsU1JDKVwKK0lU RVJBVE9SX0lOU04yX0FOWV9TTE9UX05PVjEoV0lEVEgsdmF2ZyMjVFlQRSwgICAgICAgICAgICAg ICAgICAgICAgICAiVmQzMj12YXZnIlRZUEUyIihWdTMyLFZ2MzIpIiwgICAgICAgICAiVmQzMi4i I0RFU1QiPXZhdmcoVnUzMi4iI1NSQyIsVnYzMi4iI1NSQyIpIiwgICAgICAgICJWZWN0b3IgQXZl cmFnZSAiREVTQ1IsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZFYuREVT VFtpXSA9IGZWQVZHVSggICBXSURUSCwgIFZ1Vi5TUkNbaV0sIFZ2Vi5TUkNbaV0pKSBcCitJVEVS QVRPUl9JTlNOMl9BTllfU0xPVF9OT1YxKFdJRFRILHZhdmcjI1RZUEUjI3JuZCwgICAgICAgICAg ICAgICAgICAgIlZkMzI9dmF2ZyJUWVBFMiIoVnUzMixWdjMyKTpybmQiLCAgICAgIlZkMzIuIiNE RVNUIj12YXZnKFZ1MzIuIiNTUkMiLFZ2MzIuIiNTUkMiKTpybmQiLCAgICAiVmVjdG9yIEF2ZXJh Z2UgJSBSb3VuZCJERVNDUiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmRWLkRFU1Rb aV0gPSBmVkFWR1VSTkQoV0lEVEgsICBWdVYuU1JDW2ldLCBWdlYuU1JDW2ldKSkKKworCisKKy8q KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogTU1WRUNUT1IgTUVNT1JZIE9Q RVJBVElPTlMKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNkZWZp bmUgTU1WRUNfRUFDSF9FQShUQUcsREVTQ1IsQVRUUklCLE5ULFNZTlRBWEEsU1lOVEFYQixCRUgp IFwKK0VYVElOU04oVjZfIyNUQUcjI19waSwgICAgICBTWU5UQVhBICIoUngzMisrI3MzKSIgTlQg U1lOVEFYQixBVFRSSUIsREVTQ1IseyBmRUFfUkVHKFJ4Vik7IEJFSDsgZlBNX0koUnhWLFZFQ19T Q0FMRShzaVYpKTsgfSkgXAorRVhUSU5TTihWNl8jI1RBRyMjX2FpLCAgICAgIFNZTlRBWEEgIihS dDMyKyNzNCkiIE5UIFNZTlRBWEIsQVRUUklCLERFU0NSLHsgZkVBX1JJKFJ0VixWRUNfU0NBTEUo c2lWKSk7IEJFSDt9KSBcCitFWFRJTlNOKFY2XyMjVEFHIyNfcHB1LCAgICAgIFNZTlRBWEEgIihS eDMyKytNdTIpIiBOVCBTWU5UQVhCLEFUVFJJQixERVNDUix7IGZFQV9SRUcoUnhWKTsgQkVIOyBm UE1fTShSeFYsTXVWKTsgfSkgXAorCisKKyNkZWZpbmUgTU1WRUNfQ09ORF9FQUNIX0VBX1RSVUUo VEFHLERFU0NSLEFUVFJJQixOVCxTWU5UQVhBLFNZTlRBWEIsU1lOVEFYUCxCRUgpIFwKK0VYVElO U04oVjZfIyNUQUcjI19wcmVkX3BpLCAgICAgICJpZiAoIiAjU1lOVEFYUCAiNCkgIiBTWU5UQVhB ICIoUngzMisrI3MzKSIgTlQgU1lOVEFYQiwgQVRUUklCLERFU0NSLCB7IGlmIChmTFNCT0xEKFNZ TlRBWFAjI1YpKSB7IGZFQV9SRUcoUnhWKTsgQkVIOyBmUE1fSShSeFYsc2lWKmZWRUNTSVpFKCkp OyB9IGVsc2Uge0NBTkNFTDt9fSkgXAorRVhUSU5TTihWNl8jI1RBRyMjX3ByZWRfYWksICAgICAg ImlmICgiICNTWU5UQVhQICI0KSAiIFNZTlRBWEEgIihSdDMyKyNzNCkiIE5UIFNZTlRBWEIsIEFU VFJJQixERVNDUiwgIHsgaWYgKGZMU0JPTEQoU1lOVEFYUCMjVikpIHsgZkVBX1JJKFJ0VixzaVYq ZlZFQ1NJWkUoKSk7IEJFSDt9IGVsc2Uge0NBTkNFTDt9fSkgXAorRVhUSU5TTihWNl8jI1RBRyMj X3ByZWRfcHB1LCAgICAgImlmICgiICNTWU5UQVhQICI0KSAiIFNZTlRBWEEgIihSeDMyKytNdTIp IiBOVCBTWU5UQVhCLEFUVFJJQixERVNDUiwgIHsgaWYgKGZMU0JPTEQoU1lOVEFYUCMjVikpIHsg ZkVBX1JFRyhSeFYpOyBCRUg7IGZQTV9NKFJ4VixNdVYpOyB9IGVsc2Uge0NBTkNFTDt9fSkgXAor CisjZGVmaW5lIE1NVkVDX0NPTkRfRUFDSF9FQV9GQUxTRShUQUcsREVTQ1IsQVRUUklCLE5ULFNZ TlRBWEEsU1lOVEFYQixTWU5UQVhQLEJFSCkgXAorRVhUSU5TTihWNl8jI1RBRyMjX25wcmVkX3Bp LCAgICAgImlmICghIiAjU1lOVEFYUCAiNCkgIiBTWU5UQVhBICIoUngzMisrI3MzKSIgTlQgU1lO VEFYQixBVFRSSUIsREVTQ1IseyBpZiAoZkxTQk9MRE5PVChTWU5UQVhQIyNWKSkgeyBmRUFfUkVH KFJ4Vik7IEJFSDsgZlBNX0koUnhWLHNpVipmVkVDU0laRSgpKTsgfSBlbHNlIHtDQU5DRUw7fX0p IFwKK0VYVElOU04oVjZfIyNUQUcjI19ucHJlZF9haSwgICAgICJpZiAoISIgI1NZTlRBWFAgIjQp ICIgU1lOVEFYQSAiKFJ0MzIrI3M0KSIgTlQgU1lOVEFYQixBVFRSSUIsREVTQ1IsIHsgaWYgKGZM U0JPTEROT1QoU1lOVEFYUCMjVikpIHsgZkVBX1JJKFJ0VixzaVYqZlZFQ1NJWkUoKSk7IEJFSDt9 IGVsc2Uge0NBTkNFTDt9fSkgXAorRVhUSU5TTihWNl8jI1RBRyMjX25wcmVkX3BwdSwgICAgImlm ICghIiAjU1lOVEFYUCAiNCkgIiBTWU5UQVhBICIoUngzMisrTXUyKSIgTlQgU1lOVEFYQixBVFRS SUIsREVTQ1IseyBpZiAoZkxTQk9MRE5PVChTWU5UQVhQIyNWKSkgeyBmRUFfUkVHKFJ4Vik7IEJF SDsgZlBNX00oUnhWLE11Vik7IH0gZWxzZSB7Q0FOQ0VMO319KQorCisjZGVmaW5lIE1NVkVDX0NP TkRfRUFDSF9FQShUQUcsREVTQ1IsQVRUUklCLE5ULFNZTlRBWEEsU1lOVEFYQixTWU5UQVhQLEJF SCkgXAorTU1WRUNfQ09ORF9FQUNIX0VBX1RSVUUoVEFHLERFU0NSLEFUVFJJQixOVCxTWU5UQVhB LFNZTlRBWEIsU1lOVEFYUCxCRUgpIFwKK01NVkVDX0NPTkRfRUFDSF9FQV9GQUxTRShUQUcsREVT Q1IsQVRUUklCLE5ULFNZTlRBWEEsU1lOVEFYQixTWU5UQVhQLEJFSCkKKworCisjZGVmaW5lIFZF Q19TQ0FMRShYKSBYKmZWRUNTSVpFKCkKKworCisjZGVmaW5lIE1NVkVDX0xEKFRBRyxERVNDUixB VFRSSUIsTlQpIE1NVkVDX0VBQ0hfRUEoVEFHLERFU0NSLEFUVFJJQixOVCwiVmQzMj12bWVtIiwi IixmTE9BRE1NVihFQSxWZFYpKQorI2RlZmluZSBNTVZFQ19MREMoVEFHLERFU0NSLEFUVFJJQixO VCkgTU1WRUNfRUFDSF9FQShUQUcjI19jdXIsREVTQ1IsQVRUUklCLE5ULCJWZDMyLmN1cj12bWVt IiwiIixmTE9BRE1NVihFQSxWZFYpKQorI2RlZmluZSBNTVZFQ19MRFQoVEFHLERFU0NSLEFUVFJJ QixOVCkgTU1WRUNfRUFDSF9FQShUQUcjI190bXAsREVTQ1IsQVRUUklCLE5ULCJWZDMyLnRtcD12 bWVtIiwiIixmTE9BRE1NVihFQSxWZFYpKQorI2RlZmluZSBNTVZFQ19MRFUoVEFHLERFU0NSLEFU VFJJQixOVCkgTU1WRUNfRUFDSF9FQShUQUcsREVTQ1IsQVRUUklCLE5ULCJWZDMyPXZtZW11Iiwi IixmTE9BRE1NVlUoRUEsVmRWKSkKKworCisjZGVmaW5lIE1NVkVDX1NUUShUQUcsREVTQ1IsQVRU UklCLE5UKSBcCitNTVZFQ19FQUNIX0VBKFRBRyMjX3FwcmVkLERFU0NSLEFUVFJJQixOVCwiaWYg KFF2NCkgdm1lbSIsIj1WczMyIixmU1RPUkVNTVZRKEVBLFZzVixRdlYpKSBcCitNTVZFQ19FQUNI X0VBKFRBRyMjX25xcHJlZCxERVNDUixBVFRSSUIsTlQsImlmICghUXY0KSB2bWVtIiwiPVZzMzIi LGZTVE9SRU1NVk5RKEVBLFZzVixRdlYpKQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiBNQVBQSU5HIEZPUiBWTUVN cworKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKi8KKworI2RlZmluZSBBVFRSX1ZNRU0gQV9FWFRFTlNJT04sQV9DVkksQV9DVklf Vk0KKyNkZWZpbmUgQVRUUl9WTUVNVSBBX0VYVEVOU0lPTixBX0NWSSxBX0NWSV9WTSxBX0NWSV9W UAorCisKK01NVkVDX0xEKHZMMzJiLCAgIkFsaWduZWQgVmVjdG9yIExvYWQiLCAgICAgICAgQVRU UklCUyhBVFRSX1ZNRU0sQV9MT0FELEFfQ1ZJX1ZBKSwpCitNTVZFQ19MREModkwzMmIsICAiQWxp Z25lZCBWZWN0b3IgTG9hZCBDdXIiLAlBVFRSSUJTKEFUVFJfVk1FTSxBX0xPQUQsQV9DVklfTkVX LEFfQ1ZJX1ZBKSwpCitNTVZFQ19MRFQodkwzMmIsICAiQWxpZ25lZCBWZWN0b3IgTG9hZCBUbXAi LAlBVFRSSUJTKEFUVFJfVk1FTSxBX0xPQUQsQV9DVklfVE1QKSwpCisKK01NVkVDX0NPTkRfRUFD SF9FQSh2TDMyYiwiQ29uZGl0aW9uYWwgQWxpZ25lZCBWZWN0b3IgTG9hZCIsQVRUUklCUyhBVFRS X1ZNRU0sQV9MT0FELEFfQ1ZJX1ZBKSwsIlZkMzI9dm1lbSIsLFB2LGZMT0FETU1WKEVBLFZkVik7 KQorTU1WRUNfQ09ORF9FQUNIX0VBKHZMMzJiX2N1ciwiQ29uZGl0aW9uYWwgQWxpZ25lZCBWZWN0 b3IgTG9hZCBDdXIiLEFUVFJJQlMoQVRUUl9WTUVNLEFfTE9BRCxBX0NWSV9WQSxBX0NWSV9ORVcp LCwiVmQzMi5jdXI9dm1lbSIsLFB2LGZMT0FETU1WKEVBLFZkVik7KQorTU1WRUNfQ09ORF9FQUNI X0VBKHZMMzJiX3RtcCwiQ29uZGl0aW9uYWwgQWxpZ25lZCBWZWN0b3IgTG9hZCBUbXAiLEFUVFJJ QlMoQVRUUl9WTUVNLEFfTE9BRCxBX0NWSV9UTVApLCwiVmQzMi50bXA9dm1lbSIsLFB2LGZMT0FE TU1WKEVBLFZkVik7KQorCitNTVZFQ19FQUNIX0VBKHZTMzJiLCJBbGlnbmVkIFZlY3RvciBTdG9y ZSIsQVRUUklCUyhBVFRSX1ZNRU0sQV9TVE9SRSxBX1JFU1RSSUNUX1NMT1QwT05MWSxBX0NWSV9W QSksLCJ2bWVtIiwiPVZzMzIiLGZTVE9SRU1NVihFQSxWc1YpKQorTU1WRUNfQ09ORF9FQUNIX0VB KHZTMzJiLCJBbGlnbmVkIFZlY3RvciBTdG9yZSIsQVRUUklCUyhBVFRSX1ZNRU0sQV9TVE9SRSxB X1JFU1RSSUNUX1NMT1QwT05MWSxBX0NWSV9WQSksLCJ2bWVtIiwiPVZzMzIiLFB2LGZTVE9SRU1N VihFQSxWc1YpKQorCisKK01NVkVDX1NUUSh2UzMyYiwgICJBbGlnbmVkIFZlY3RvciBTdG9yZSIs ICAgICAgQVRUUklCUyhBVFRSX1ZNRU0sQV9TVE9SRSxBX1JFU1RSSUNUX1NMT1QwT05MWSxBX0NW SV9WQSksKQorCitNTVZFQ19MRFUodkwzMlViLCAiVW5hbGlnbmVkIFZlY3RvciBMb2FkIiwgICAg IEFUVFJJQlMoQVRUUl9WTUVNVSxBX0xPQUQsQV9SRVNUUklDVF9OT1NMT1QxKSwpCisKK01NVkVD X0VBQ0hfRUEodlMzMlViLCJVbmFsaWduZWQgVmVjdG9yIFN0b3JlIixBVFRSSUJTKEFUVFJfVk1F TVUsQV9TVE9SRSxBX1JFU1RSSUNUX05PU0xPVDEpLCwidm1lbXUiLCI9VnMzMiIsZlNUT1JFTU1W VShFQSxWc1YpKQorCitNTVZFQ19DT05EX0VBQ0hfRUEodlMzMlViLCJVbmFsaWduZWQgVmVjdG9y IFN0b3JlIixBVFRSSUJTKEFUVFJfVk1FTVUsQV9TVE9SRSxBX1JFU1RSSUNUX05PU0xPVDEpLCwi dm1lbXUiLCI9VnMzMiIsUHYsZlNUT1JFTU1WVShFQSxWc1YpKQorCitNTVZFQ19FQUNIX0VBKHZT MzJiX25ldywiQWxpZ25lZCBWZWN0b3IgU3RvcmUgTmV3IixBVFRSSUJTKEFUVFJfVk1FTSxBX1NU T1JFLEFfQ1ZJX05FVyxBX0RPVE5FV1ZBTFVFLEFfUkVTVFJJQ1RfU0xPVDBPTkxZKSwsInZtZW0i LCI9T3M4Lm5ldyIsZlNUT1JFTU1WKEVBLGZORVdWUkVHKE9zTikpKQorCisvLyBWNjUgc3RvcmUg cmVsYXNlLCB6ZXJvIGJ5dGUgc3RvcmUKK01NVkVDX0VBQ0hfRUEodlMzMmJfc3JscywiQWxpZ25l ZCBWZWN0b3IgU2NhdHRlciBSZWxlYXNlIixBVFRSSUJTKEFUVFJfVk1FTSxBX1NUT1JFLEFfQ1ZJ X1NDQVRURVJfUkVMRUFTRSxBX0NWSV9ORVcsQV9SRVNUUklDVF9TTE9UME9OTFkpLCwidm1lbSIs IjpzY2F0dGVyX3JlbGVhc2UiLGZTVE9SRVJFTEVBU0UoRUEsMCkpCisKKworCitNTVZFQ19DT05E X0VBQ0hfRUEodlMzMmJfbmV3LCJBbGlnbmVkIFZlY3RvciBTdG9yZSBOZXciLEFUVFJJQlMoQVRU Ul9WTUVNLEFfU1RPUkUsQV9DVklfTkVXLEFfRE9UTkVXVkFMVUUsQV9SRVNUUklDVF9TTE9UME9O TFkpLCwidm1lbSIsIj1PczgubmV3IixQdixmU1RPUkVNTVYoRUEsZk5FV1ZSRUcoT3NOKSkpCisK KworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBNTVZFQ1RPUiBNRU1P UlkgT1BFUkFUSU9OUyAtIE5PTiBURU1QT1JBTAorKgorKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKi8KKworI2RlZmluZSBBVFRSX1ZNRU1fTlQgQV9FWFRFTlNJT04sQV9DVkksQV9D VklfVk0KKworTU1WRUNfRUFDSF9FQSh2UzMyYl9udCwiQWxpZ25lZCBWZWN0b3IgU3RvcmUgLSBO b24gdGVtcG9yYWwiLEFUVFJJQlMoQVRUUl9WTUVNX05ULEFfU1RPUkUsQV9SRVNUUklDVF9TTE9U ME9OTFksQV9DVklfVkEpLCI6bnQiLCJ2bWVtIiwiPVZzMzIiLGZTVE9SRU1NVihFQSxWc1YpKQor TU1WRUNfQ09ORF9FQUNIX0VBKHZTMzJiX250LCJBbGlnbmVkIFZlY3RvciBTdG9yZSAtIE5vbiB0 ZW1wb3JhbCIsQVRUUklCUyhBVFRSX1ZNRU1fTlQsQV9TVE9SRSxBX1JFU1RSSUNUX1NMT1QwT05M WSxBX0NWSV9WQSksIjpudCIsInZtZW0iLCI9VnMzMiIsUHYsZlNUT1JFTU1WKEVBLFZzVikpCisK K01NVkVDX0VBQ0hfRUEodlMzMmJfbnRfbmV3LCJBbGlnbmVkIFZlY3RvciBTdG9yZSBOZXcgLSBO b24gdGVtcG9yYWwiLEFUVFJJQlMoQVRUUl9WTUVNX05ULEFfU1RPUkUsQV9DVklfTkVXLEFfRE9U TkVXVkFMVUUsQV9SRVNUUklDVF9TTE9UME9OTFkpLCI6bnQiLCJ2bWVtIiwiPU9zOC5uZXciLGZT VE9SRU1NVihFQSxmTkVXVlJFRyhPc04pKSkKK01NVkVDX0NPTkRfRUFDSF9FQSh2UzMyYl9udF9u ZXcsIkFsaWduZWQgVmVjdG9yIFN0b3JlIE5ldyAtIE5vbiB0ZW1wb3JhbCIsQVRUUklCUyhBVFRS X1ZNRU1fTlQsQV9TVE9SRSxBX0NWSV9ORVcsQV9ET1RORVdWQUxVRSxBX1JFU1RSSUNUX1NMT1Qw T05MWSksIjpudCIsInZtZW0iLCI9T3M4Lm5ldyIsUHYsZlNUT1JFTU1WKEVBLGZORVdWUkVHKE9z TikpKQorCisKK01NVkVDX1NUUSh2UzMyYl9udCwgICJBbGlnbmVkIFZlY3RvciBTdG9yZSAtIE5v biB0ZW1wb3JhbCIsICAgICAgQVRUUklCUyhBVFRSX1ZNRU1fTlQsQV9TVE9SRSxBX1JFU1RSSUNU X1NMT1QwT05MWSxBX0NWSV9WQSksIjpudCIpCisKK01NVkVDX0xEKHZMMzJiX250LCAgIkFsaWdu ZWQgVmVjdG9yIExvYWQgLSBOb24gdGVtcG9yYWwiLCAgICAgICBBVFRSSUJTKEFUVFJfVk1FTV9O VCxBX0xPQUQsQV9DVklfVkEpLCI6bnQiKQorTU1WRUNfTERDKHZMMzJiX250LCAgIkFsaWduZWQg VmVjdG9yIExvYWQgQ3VyIC0gTm9uIHRlbXBvcmFsIiwJQVRUUklCUyhBVFRSX1ZNRU1fTlQsQV9M T0FELEFfQ1ZJX05FVyxBX0NWSV9WQSksIjpudCIpCitNTVZFQ19MRFQodkwzMmJfbnQsICAiQWxp Z25lZCBWZWN0b3IgTG9hZCBUbXAgLSBOb24gdGVtcG9yYWwiLAlBVFRSSUJTKEFUVFJfVk1FTV9O VCxBX0xPQUQsQV9DVklfVE1QKSwiOm50IikKKworTU1WRUNfQ09ORF9FQUNIX0VBKHZMMzJiX250 LCJDb25kaXRpb25hbCBBbGlnbmVkIFZlY3RvciBMb2FkIixBVFRSSUJTKEFUVFJfVk1FTV9OVCxB X0NWSV9WQSksLCJWZDMyPXZtZW0iLCI6bnQiLFB2LGZMT0FETU1WKEVBLFZkVik7KQorTU1WRUNf Q09ORF9FQUNIX0VBKHZMMzJiX250X2N1ciwiQ29uZGl0aW9uYWwgQWxpZ25lZCBWZWN0b3IgTG9h ZCBDdXIiLEFUVFJJQlMoQVRUUl9WTUVNX05ULEFfQ1ZJX1ZBLEFfQ1ZJX05FVyksLCJWZDMyLmN1 cj12bWVtIiwiOm50IixQdixmTE9BRE1NVihFQSxWZFYpOykKK01NVkVDX0NPTkRfRUFDSF9FQSh2 TDMyYl9udF90bXAsIkNvbmRpdGlvbmFsIEFsaWduZWQgVmVjdG9yIExvYWQgVG1wIixBVFRSSUJT KEFUVFJfVk1FTV9OVCxBX0NWSV9UTVApLCwiVmQzMi50bXA9dm1lbSIsIjpudCIsUHYsZkxPQURN TVYoRUEsVmRWKTspCisKKworI3VuZGVmIFZFQ19TQ0FMRQorCisKKy8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIFZlY3RvciBBbGlnbm1lbnQK KyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNk ZWZpbmUgVkFMSUdOQihTSElGVCkgIFwKKyAgICBmSElERShpbnQgaTspIFwKKyAgICBmb3IoaSA9 IDA7IGkgPCBmVkJZVEVTKCk7IGkrKykge1wKKyAgICAgICAgVmRWLnViW2ldID0gKGkrU0hJRlQ+ PWZWQllURVMoKSkgPyBWdVYudWJbaStTSElGVC1mVkJZVEVTKCldIDogVnZWLnViW2krU0hJRlRd O1wKKwl9CisKK0VYVElOU04oVjZfdmFsaWduYiwgICJWZDMyPXZhbGlnbihWdTMyLFZ2MzIsUnQ4 KSIsICBBVFRSSUJTKEFfRVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJX1ZQKSwiQWxpZ24gVHdvIHZlY3Rv cnMgYnkgUnQ4IGFzIGNvbnRyb2wiLAoreworCXVuc2lnbmVkIHNoaWZ0ID0gUnRWICYgKGZWQllU RVMoKS0xKTsKKwlWQUxJR05CKHNoaWZ0KQorfSkKK0VYVElOU04oVjZfdmxhbGlnbmIsICJWZDMy PXZsYWxpZ24oVnUzMixWdjMyLFJ0OCkiLCBBVFRSSUJTKEFfRVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJ X1ZQKSwiQWxpZ24gVHdvIHZlY3RvcnMgYnkgUnQ4IGFzIGNvbnRyb2wiLAoreworCXVuc2lnbmVk IHNoaWZ0ID0gZlZCWVRFUygpIC0gKFJ0ViAmIChmVkJZVEVTKCktMSkpOworCVZBTElHTkIoc2hp ZnQpCit9KQorRVhUSU5TTihWNl92YWxpZ25iaSwgIlZkMzI9dmFsaWduKFZ1MzIsVnYzMiwjdTMp IiwgCUFUVFJJQlMoQV9FWFRFTlNJT04sQV9DVkksQV9DVklfVlApLCJBbGlnbiBUd28gdmVjdG9y cyBieSAjdTMgYXMgY29udHJvbCIsCit7CisJVkFMSUdOQih1aVYpCit9KQorRVhUSU5TTihWNl92 bGFsaWduYmksIlZkMzI9dmxhbGlnbihWdTMyLFZ2MzIsI3UzKSIsIEFUVFJJQlMoQV9FWFRFTlNJ T04sQV9DVkksQV9DVklfVlApLCJBbGlnbiBUd28gdmVjdG9ycyBieSAjdTMgYXMgY29udHJvbCIs Cit7CisJdW5zaWduZWQgc2hpZnQgPSBmVkJZVEVTKCkgLSB1aVY7CisJVkFMSUdOQihzaGlmdCkK K30pCisKK0VYVElOU04oVjZfdnJvciwgIlZkMzI9dnJvcihWdTMyLFJ0MzIpIiwgQVRUUklCUyhB X0VYVEVOU0lPTixBX0NWSSxBX0NWSV9WUCksCisiQWxpZ24gVHdvIHZlY3RvcnMgYnkgUnQzMiBh cyBjb250cm9sIiwKK3sKKwlmSElERShpbnQgazspCisJZm9yIChrPTA7azxmVkJZVEVTKCk7aysr KSB7CisJCVZkVi51YltrXSA9IFZ1Vi51YlsoaytSdFYpJihmVkJZVEVTKCktMSldOworCX0KKwl9 KQorCisKKworCisKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioKKyogVW5wYWNrIGVsZW1lbnRzIHdpdGggemVyby9zaWdu IGV4dGVuZCBhbmQgY3Jvc3MgbGFuZSBwZXJtdXRlCisqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK0lURVJBVE9SX0lOU04y X1BFUk1VVEVfU0xPVF9ET1VCTEVfVkVDKDgsdnVucGFja3ViLCAgIlZkZDMyPXZ1bnBhY2t1YihW dTMyKSIsICJWZGQzMi51aD12dW5wYWNrKFZ1MzIudWIpIiwgIlVucGFjayBieXRlIHdpdGggemVy by1leHRlbmQiLCAgICAgZlZBUlJBWV9FTEVNRU5UX0FDQ0VTUyhWZGRWLCB1aCwgaSkgID0gZlpF OF8xNiggVnVWLnViW2ldKSkKK0lURVJBVE9SX0lOU04yX1BFUk1VVEVfU0xPVF9ET1VCTEVfVkVD KDgsdnVucGFja2IsICAgIlZkZDMyPXZ1bnBhY2tiKFZ1MzIpIiwgICJWZGQzMi5oPXZ1bnBhY2so VnUzMi5iKSIsICAgIlVucGFjayBieXRlcyB3aXRoIHNpZ24tZXh0ZW5kIiwgICAgZlZBUlJBWV9F TEVNRU5UX0FDQ0VTUyhWZGRWLCBoLCAgaSkgID0gZlNFOF8xNiggVnVWLmJbaV0gKSkKK0lURVJB VE9SX0lOU04yX1BFUk1VVEVfU0xPVF9ET1VCTEVfVkVDKDE2LHZ1bnBhY2t1aCwgIlZkZDMyPXZ1 bnBhY2t1aChWdTMyKSIsICJWZGQzMi51dz12dW5wYWNrKFZ1MzIudWgpIiwgIlVucGFjayBoYWx2 ZXMgd2l0aCB6ZXJvLWV4dGVuZCIsICAgZlZBUlJBWV9FTEVNRU5UX0FDQ0VTUyhWZGRWLCB1dywg aSkgID0gZlpFMTZfMzIoVnVWLnVoW2ldKSkKK0lURVJBVE9SX0lOU04yX1BFUk1VVEVfU0xPVF9E T1VCTEVfVkVDKDE2LHZ1bnBhY2toLCAgIlZkZDMyPXZ1bnBhY2toKFZ1MzIpIiwgICJWZGQzMi53 PXZ1bnBhY2soVnUzMi5oKSIsICAgIlVucGFjayBoYWx2ZXMgd2l0aCBzaWduLWV4dGVuZCIsICAg ZlZBUlJBWV9FTEVNRU5UX0FDQ0VTUyhWZGRWLCB3LCAgaSkgID0gZlNFMTZfMzIoVnVWLmhbaV0g KSkKKworSVRFUkFUT1JfSU5TTjJfUEVSTVVURV9TTE9UX0RPVUJMRV9WRUMoOCwgdnVucGFja29i LCAiVnh4MzJ8PXZ1bnBhY2tvYihWdTMyKSIsICJWeHgzMi5ofD12dW5wYWNrbyhWdTMyLmIpIiwg IlVucGFjayBieXRlIHRvIG9kZCBieXRlcyAiLCAgICAgICBmVkFSUkFZX0VMRU1FTlRfQUNDRVNT KFZ4eFYsIHVoLCBpKSB8PSBmWkU4XzE2KCBWdVYudWJbaV0pPDw4KQorSVRFUkFUT1JfSU5TTjJf UEVSTVVURV9TTE9UX0RPVUJMRV9WRUMoMTYsdnVucGFja29oLCAiVnh4MzJ8PXZ1bnBhY2tvaChW dTMyKSIsICJWeHgzMi53fD12dW5wYWNrbyhWdTMyLmgpIiwgIlVucGFjayBoYWx2ZXMgdG8gb2Rk IGhhbHZlcyIsICAgICBmVkFSUkFZX0VMRU1FTlRfQUNDRVNTKFZ4eFYsIHV3LCBpKSB8PSBmWkUx Nl8zMihWdVYudWhbaV0pPDwxNikKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogUGFjayBlbGVtZW50cyBhbmQgY3Jv c3MgbGFuZSBwZXJtdXRlCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKiovCisKKyBJVEVSQVRPUl9JTlNOMl9QRVJNVVRFX1NMT1Qo MTYsIHZwYWNrZWIsICAiVmQzMj12cGFja2ViKFZ1MzIsVnYzMikiLCAiVmQzMi5iPXZwYWNrZShW dTMyLmgsVnYzMi5oKSIsCisgIlBhY2sgIGJ5dGVzIiwKKyAgICBWZFYudWJbaV0gICAgICAgICAg ICAgICA9IGZHRVRVQllURSgwLCBWdlYudWhbaV0pOworICAgIFZkVi51YltpK2ZWRUxFTSgxNild ICAgID0gZkdFVFVCWVRFKDAsIFZ1Vi51aFtpXSkpCisKKyBJVEVSQVRPUl9JTlNOMl9QRVJNVVRF X1NMT1QoMzIsIHZwYWNrZWgsICAiVmQzMj12cGFja2VoKFZ1MzIsVnYzMikiLCAiVmQzMi5oPXZw YWNrZShWdTMyLncsVnYzMi53KSIsCisgIlBhY2sgIGhhbGZ3b3JkcyIsCisgICAgVmRWLnVoW2ld ICAgICAgICAgICAgICAgPSBmR0VUVUhBTEYoMCwgVnZWLnV3W2ldKTsKKyAgICBWZFYudWhbaStm VkVMRU0oMzIpXSAgICA9IGZHRVRVSEFMRigwLCBWdVYudXdbaV0pKQorCisgIElURVJBVE9SX0lO U04yX1BFUk1VVEVfU0xPVCgxNiwgdnBhY2tvYiwgICJWZDMyPXZwYWNrb2IoVnUzMixWdjMyKSIs ICJWZDMyLmI9dnBhY2tvKFZ1MzIuaCxWdjMyLmgpIiwKKyAiUGFjayAgYnl0ZXMiLAorICAgIFZk Vi51YltpXSAgICAgICAgICAgICAgID0gZkdFVFVCWVRFKDEsIFZ2Vi51aFtpXSk7CisgICAgVmRW LnViW2krZlZFTEVNKDE2KV0gICAgPSBmR0VUVUJZVEUoMSwgVnVWLnVoW2ldKSkKKworIElURVJB VE9SX0lOU04yX1BFUk1VVEVfU0xPVCgzMiwgdnBhY2tvaCwgICJWZDMyPXZwYWNrb2goVnUzMixW djMyKSIsICJWZDMyLmg9dnBhY2tvKFZ1MzIudyxWdjMyLncpIiwKKyAiUGFjayAgaGFsZndvcmRz IiwKKyAgICBWZFYudWhbaV0gICAgICAgICAgICAgICA9IGZHRVRVSEFMRigxLCBWdlYudXdbaV0p OworICAgIFZkVi51aFtpK2ZWRUxFTSgzMildICAgID0gZkdFVFVIQUxGKDEsIFZ1Vi51d1tpXSkp CisKKworCitJVEVSQVRPUl9JTlNOMl9QRVJNVVRFX1NMT1QoMTYsIHZwYWNraHViX3NhdCwgICJW ZDMyPXZwYWNraHViKFZ1MzIsVnYzMik6c2F0IiwgIlZkMzIudWI9dnBhY2soVnUzMi5oLFZ2MzIu aCk6c2F0IiwKKyAiUGFjayB1Ynl0ZXMgd2l0aCBzYXR1cmF0aW9uIiwKKyAgICBWZFYudWJbaV0g ICAgICAgICAgICAgICA9IGZWU0FUVUIoVnZWLmhbaV0pOworICAgIFZkVi51YltpK2ZWRUxFTSgx NildICAgID0gZlZTQVRVQihWdVYuaFtpXSkpCisKKworSVRFUkFUT1JfSU5TTjJfUEVSTVVURV9T TE9UKDE2LCB2cGFja2hiX3NhdCwgICJWZDMyPXZwYWNraGIoVnUzMixWdjMyKTpzYXQiLCAiVmQz Mi5iPXZwYWNrKFZ1MzIuaCxWdjMyLmgpOnNhdCIsCisgIlBhY2sgYnl0ZXMgd2l0aCBzYXR1cmF0 aW9uIiwKKyAgICBWZFYuYltpXSAgICAgICAgICAgICAgID0gZlZTQVRCKFZ2Vi5oW2ldKTsKKyAg ICBWZFYuYltpK2ZWRUxFTSgxNildICAgID0gZlZTQVRCKFZ1Vi5oW2ldKSkKKworCitJVEVSQVRP Ul9JTlNOMl9QRVJNVVRFX1NMT1QoMzIsIHZwYWNrd3VoX3NhdCwgICJWZDMyPXZwYWNrd3VoKFZ1 MzIsVnYzMik6c2F0IiwgIlZkMzIudWg9dnBhY2soVnUzMi53LFZ2MzIudyk6c2F0IiwKKyAiUGFj ayB1Ynl0ZXMgd2l0aCBzYXR1cmF0aW9uIiwKKyAgICBWZFYudWhbaV0gICAgICAgICAgICAgICA9 IGZWU0FUVUgoVnZWLndbaV0pOworICAgIFZkVi51aFtpK2ZWRUxFTSgzMildICAgID0gZlZTQVRV SChWdVYud1tpXSkpCisKK0lURVJBVE9SX0lOU04yX1BFUk1VVEVfU0xPVCgzMiwgdnBhY2t3aF9z YXQsICAiVmQzMj12cGFja3doKFZ1MzIsVnYzMik6c2F0IiwgIlZkMzIuaD12cGFjayhWdTMyLncs VnYzMi53KTpzYXQiLAorICJQYWNrIGJ5dGVzIHdpdGggc2F0dXJhdGlvbiIsCisgICAgVmRWLmhb aV0gICAgICAgICAgICAgICA9IGZWU0FUSChWdlYud1tpXSk7CisgICAgVmRWLmhbaStmVkVMRU0o MzIpXSAgICA9IGZWU0FUSChWdVYud1tpXSkpCisKKworCisKKworLyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqIFplcm8vU2ln biBFeHRlbmQgd2l0aCBpbi1sYW5lIHBlcm11dGUKKyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworSVRFUkFUT1JfSU5TTjJf QU5ZX1NMT1RfRE9VQkxFX1ZFQygxNix2emIsIlZkZDMyPXZ6eHRiKFZ1MzIpIiwiVmRkMzIudWg9 dnp4dChWdTMyLnViKSIsCisiVmVjdG9yIFplcm8gRXh0ZW5kIEJ5dGVzIiwKKyAgICBWZGRWLnZb MF0udWhbaV0gPSBmWkU4XzE2KGZHRVRVQllURSgwLCBWdVYudWhbaV0pKTsKKyAgICBWZGRWLnZb MV0udWhbaV0gPSBmWkU4XzE2KGZHRVRVQllURSgxLCBWdVYudWhbaV0pKSkKKworSVRFUkFUT1Jf SU5TTjJfQU5ZX1NMT1RfRE9VQkxFX1ZFQygxNix2c2IsIlZkZDMyPXZzeHRiKFZ1MzIpIiwiVmRk MzIuaD12c3h0KFZ1MzIuYikiLAorIlZlY3RvciBTaWduIEV4dGVuZCBCeXRlcyIsCisgICAgVmRk Vi52WzBdLmhbaV0gPSBmU0U4XzE2KGZHRVRCWVRFKDAsIFZ1Vi5oW2ldKSk7CisgICAgVmRkVi52 WzFdLmhbaV0gPSBmU0U4XzE2KGZHRVRCWVRFKDEsIFZ1Vi5oW2ldKSkpCisKK0lURVJBVE9SX0lO U04yX0FOWV9TTE9UX0RPVUJMRV9WRUMoMzIsdnpoLCJWZGQzMj12enh0aChWdTMyKSIsIlZkZDMy LnV3PXZ6eHQoVnUzMi51aCkiLAorIlZlY3RvciBaZXJvIEV4dGVuZCBoYWxmd29yZHMiLAorICAg IFZkZFYudlswXS51d1tpXSA9IGZaRTE2XzMyKGZHRVRVSEFMRigwLCBWdVYudXdbaV0pKTsKKyAg ICBWZGRWLnZbMV0udXdbaV0gPSBmWkUxNl8zMihmR0VUVUhBTEYoMSwgVnVWLnV3W2ldKSkpCisK K0lURVJBVE9SX0lOU04yX0FOWV9TTE9UX0RPVUJMRV9WRUMoMzIsdnNoLCJWZGQzMj12c3h0aChW dTMyKSIsIlZkZDMyLnc9dnN4dChWdTMyLmgpIiwKKyJWZWN0b3IgU2lnbiBFeHRlbmQgaGFsZndv cmRzIiwKKyAgICBWZGRWLnZbMF0ud1tpXSA9IGZTRTE2XzMyKGZHRVRIQUxGKDAsIFZ1Vi53W2ld KSk7CisgICAgVmRkVi52WzFdLndbaV0gPSBmU0UxNl8zMihmR0VUSEFMRigxLCBWdVYud1tpXSkp KQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqCisqCisqCisqCisqICAgICAgICAgICAgICAgTU1WRUNUT1Ig UkVEVUNUSU9OCisqCisqCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioKKyogIDItV0FZIFJFRFVDVElPTiAtIFVOU0lHTkVE IEJZVEUgQlkgQllURQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KiovCisKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1QoMTYsdmRtcHlidXMsIlZkMzI9dmRtcHli dXMoVnUzMixSdDMyKSIsIlZkMzIuaD12ZG1weShWdTMyLnViLFJ0MzIuYikiLAorIlZlY3RvciBE dWFsIE11bHRpcGx5LUFjY3VtdWxhdGVzIHVuc2lnbmVkIGJ5dGVzIGJ5IGJ5dGVzIiwKKyAgICBW ZFYuaFtpXSAgID0gZk1QWThVUyggZkdFVFVCWVRFKDAsIFZ1Vi51aFtpXSksIGZHRVRCWVRFKCgy KmkpICUgNCwgUnRWKSk7CisgICAgVmRWLmhbaV0gICs9IGZNUFk4VVMoIGZHRVRVQllURSgxLCBW dVYudWhbaV0pLCBmR0VUQllURSgoMippKzEpJTQsIFJ0VikpKQorCitJVEVSQVRPUl9JTlNOMl9N UFlfU0xPVCgxNix2ZG1weWJ1c19hY2MsIlZ4MzIrPXZkbXB5YnVzKFZ1MzIsUnQzMikiLCJWeDMy LmgrPXZkbXB5KFZ1MzIudWIsUnQzMi5iKSIsCisiVmVjdG9yIER1YWwgTXVsdGlwbHktQWNjdW11 bGF0ZXMgdW5zaWduZWQgYnl0ZXMgYnkgIGJ5dGVzLCBhbmQgYWNjdW11bGF0ZSIsCisgICAgVnhW LmhbaV0gKz0gZk1QWThVUyggZkdFVFVCWVRFKDAsIFZ1Vi51aFtpXSksIGZHRVRCWVRFKCgyKmkp ICUgNCwgUnRWKSk7CisgICAgVnhWLmhbaV0gKz0gZk1QWThVUyggZkdFVFVCWVRFKDEsIFZ1Vi51 aFtpXSksIGZHRVRCWVRFKCgyKmkrMSklNCwgUnRWKSkpCisKKworCitJVEVSQVRPUl9JTlNOMl9N UFlfU0xPVF9ET1VCTEVfVkVDKDE2LHZkbXB5YnVzX2R2LCJWZGQzMj12ZG1weWJ1cyhWdXUzMixS dDMyKSIsIlZkZDMyLmg9dmRtcHkoVnV1MzIudWIsUnQzMi5iKSIsCisiVmVjdG9yIER1YWwgTXVs dGlwbHktQWNjdW11bGF0ZXMgdW5zaWduZWQgYnl0ZXMgYnkgIGJ5dGVzLCBhbmQgYWNjdW11bGF0 ZSBTbGlkaW5nIFdpbmRvdyBSZWR1Y3Rpb24iLAorICAgIFZkZFYudlswXS5oW2ldICA9IGZNUFk4 VVMoZkdFVFVCWVRFKDAsIFZ1dVYudlswXS51aFtpXSksZkdFVEJZVEUoKDIqaSkgJSA0LCBSdFYp KTsKKyAgICBWZGRWLnZbMF0uaFtpXSArPSBmTVBZOFVTKGZHRVRVQllURSgxLCBWdXVWLnZbMF0u dWhbaV0pLGZHRVRCWVRFKCgyKmkrMSklNCwgUnRWKSk7CisKKyAgICBWZGRWLnZbMV0uaFtpXSAg PSBmTVBZOFVTKGZHRVRVQllURSgxLCBWdXVWLnZbMF0udWhbaV0pLGZHRVRCWVRFKCgyKmkpICUg NCwgUnRWKSk7CisgICAgVmRkVi52WzFdLmhbaV0gKz0gZk1QWThVUyhmR0VUVUJZVEUoMCwgVnV1 Vi52WzFdLnVoW2ldKSxmR0VUQllURSgoMippKzEpJTQsIFJ0VikpKQorCitJVEVSQVRPUl9JTlNO Ml9NUFlfU0xPVF9ET1VCTEVfVkVDKDE2LHZkbXB5YnVzX2R2X2FjYywiVnh4MzIrPXZkbXB5YnVz KFZ1dTMyLFJ0MzIpIiwiVnh4MzIuaCs9dmRtcHkoVnV1MzIudWIsUnQzMi5iKSIsCisiVmVjdG9y IER1YWwgTXVsdGlwbHktQWNjdW11bGF0ZXMgdW5zaWduZWQgYnl0ZXMgYnkgIGJ5dGVzLCBhbmQg YWNjdW11bGF0ZSBTbGlkaW5nIFdpbmRvdyBSZWR1Y3Rpb24iLAorICAgIFZ4eFYudlswXS5oW2ld ICs9IGZNUFk4VVMoZkdFVFVCWVRFKDAsIFZ1dVYudlswXS51aFtpXSksZkdFVEJZVEUoKDIqaSkg JSA0LCBSdFYpKTsKKyAgICBWeHhWLnZbMF0uaFtpXSArPSBmTVBZOFVTKGZHRVRVQllURSgxLCBW dXVWLnZbMF0udWhbaV0pLGZHRVRCWVRFKCgyKmkrMSklNCwgUnRWKSk7CisKKyAgICBWeHhWLnZb MV0uaFtpXSArPSBmTVBZOFVTKGZHRVRVQllURSgxLCBWdXVWLnZbMF0udWhbaV0pLGZHRVRCWVRF KCgyKmkpICUgNCwgUnRWKSk7CisgICAgVnh4Vi52WzFdLmhbaV0gKz0gZk1QWThVUyhmR0VUVUJZ VEUoMCwgVnV1Vi52WzFdLnVoW2ldKSxmR0VUQllURSgoMippKzEpJTQsIFJ0VikpKQorCisKKwor LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICAyLVdBWSBS RURVQ1RJT04gLSBIQUxGIEJZIEJZVEUKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqLworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1QoMzIsdmRtcHloYiwiVmQzMj12 ZG1weWhiKFZ1MzIsUnQzMikiLCJWZDMyLnc9dmRtcHkoVnUzMi5oLFJ0MzIuYikiLAorIkR1YWwt VmVjdG9yIDItRWxlbWVudCBIYWxmIHggQnl0ZSBSZWR1Y3Rpb24gd2l0aCBTbGlkaW5nIFdpbmRv dyBPdmVybGFwIiwKKyAgICBWZFYud1tpXSAgPSBmTVBZMTZTUyhmR0VUSEFMRigwLCBWdVYud1tp XSksZkdFVEJZVEUoKDIqaSswKSU0LCBSdFYpKTsKKyAgICBWZFYud1tpXSArPSBmTVBZMTZTUyhm R0VUSEFMRigxLCBWdVYud1tpXSksZkdFVEJZVEUoKDIqaSsxKSU0LCBSdFYpKSkKKworSVRFUkFU T1JfSU5TTjJfTVBZX1NMT1QoMzIsdmRtcHloYl9hY2MsIlZ4MzIrPXZkbXB5aGIoVnUzMixSdDMy KSIsIlZ4MzIudys9dmRtcHkoVnUzMi5oLFJ0MzIuYikiLAorIkR1YWwtVmVjdG9yIDItRWxlbWVu dCBIYWxmIHggQnl0ZSBSZWR1Y3Rpb24gd2l0aCBTbGlkaW5nIFdpbmRvdyBPdmVybGFwIiwKKyAg ICBWeFYud1tpXSArPSBmTVBZMTZTUyhmR0VUSEFMRigwLCBWdVYud1tpXSksZkdFVEJZVEUoKDIq aSswKSU0LCBSdFYpKTsKKyAgICBWeFYud1tpXSArPSBmTVBZMTZTUyhmR0VUSEFMRigxLCBWdVYu d1tpXSksZkdFVEJZVEUoKDIqaSsxKSU0LCBSdFYpKSkKKworCisKK0lURVJBVE9SX0lOU04yX01Q WV9TTE9UX0RPVUJMRV9WRUMoMzIsdmRtcHloYl9kdiwiVmRkMzI9dmRtcHloYihWdXUzMixSdDMy KSIsIlZkZDMyLnc9dmRtcHkoVnV1MzIuaCxSdDMyLmIpIiwKKyJEdWFsLVZlY3RvciAyLUVsZW1l bnQgSGFsZiB4IEJ5dGUgUmVkdWN0aW9uIHdpdGggU2xpZGluZyBXaW5kb3cgT3ZlcmxhcCIsCisg ICAgVmRkVi52WzBdLndbaV0gID0gZk1QWTE2U1MoZkdFVEhBTEYoMCwgVnV1Vi52WzBdLndbaV0p LGZHRVRCWVRFKCgyKmkrMCklNCwgUnRWKSk7CisgICAgVmRkVi52WzBdLndbaV0gKz0gZk1QWTE2 U1MoZkdFVEhBTEYoMSwgVnV1Vi52WzBdLndbaV0pLGZHRVRCWVRFKCgyKmkrMSklNCwgUnRWKSk7 CisKKyAgICBWZGRWLnZbMV0ud1tpXSAgPSBmTVBZMTZTUyhmR0VUSEFMRigxLCBWdXVWLnZbMF0u d1tpXSksZkdFVEJZVEUoKDIqaSswKSU0LCBSdFYpKTsKKyAgICBWZGRWLnZbMV0ud1tpXSArPSBm TVBZMTZTUyhmR0VUSEFMRigwLCBWdXVWLnZbMV0ud1tpXSksZkdFVEJZVEUoKDIqaSsxKSU0LCBS dFYpKSkKKworCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDKDMyLHZkbXB5aGJf ZHZfYWNjLCJWeHgzMis9dmRtcHloYihWdXUzMixSdDMyKSIsIlZ4eDMyLncrPXZkbXB5KFZ1dTMy LmgsUnQzMi5iKSIsCisiRHVhbC1WZWN0b3IgMi1FbGVtZW50IEhhbGYgeCBCeXRlIFJlZHVjdGlv biB3aXRoIFNsaWRpbmcgV2luZG93IE92ZXJsYXAiLAorICAgIFZ4eFYudlswXS53W2ldICs9IGZN UFkxNlNTKGZHRVRIQUxGKDAsIFZ1dVYudlswXS53W2ldKSxmR0VUQllURSgoMippKzApJTQsIFJ0 VikpOworICAgIFZ4eFYudlswXS53W2ldICs9IGZNUFkxNlNTKGZHRVRIQUxGKDEsIFZ1dVYudlsw XS53W2ldKSxmR0VUQllURSgoMippKzEpJTQsIFJ0VikpOworCisgICAgVnh4Vi52WzFdLndbaV0g Kz0gZk1QWTE2U1MoZkdFVEhBTEYoMSwgVnV1Vi52WzBdLndbaV0pLGZHRVRCWVRFKCgyKmkrMCkl NCwgUnRWKSk7CisgICAgVnh4Vi52WzFdLndbaV0gKz0gZk1QWTE2U1MoZkdFVEhBTEYoMCwgVnV1 Vi52WzFdLndbaV0pLGZHRVRCWVRFKCgyKmkrMSklNCwgUnRWKSkpCisKKworCisKKworLyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICAyLVdBWSBSRURVQ1RJ T04gLSBIQUxGIEJZIEhBTEYKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqLworCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDKDMyLHZkbXB5aHZz YXQsIlZkMzI9dmRtcHloKFZ1MzIsVnYzMik6c2F0IiwiVmQzMi53PXZkbXB5KFZ1MzIuaCxWdjMy LmgpOnNhdCIsCisiVmVjdG9yIGhhbGZ3b3JkIG11bHRpcGx5LCBhY2N1bXVsYXRlIHBhaXJzLCBz YXQgdG8gd29yZCIsCisgICAgZkhJREUoc2l6ZThzX3QgYWNjdW07KQorICAgIGFjY3VtICAgID0g Zk1QWTE2U1MoZkdFVEhBTEYoMCxWdVYud1tpXSksZkdFVEhBTEYoMCwgVnZWLndbaV0pKTsKKyAg ICBhY2N1bSAgICs9IGZNUFkxNlNTKGZHRVRIQUxGKDEsVnVWLndbaV0pLGZHRVRIQUxGKDEsIFZ2 Vi53W2ldKSk7CisgICAgVmRWLndbaV0gPSBmVlNBVFcoYWNjdW0pKQorCitJVEVSQVRPUl9JTlNO Ml9NUFlfU0xPVF9ET1VCTEVfVkVDKDMyLHZkbXB5aHZzYXRfYWNjLCJWeDMyKz12ZG1weWgoVnUz MixWdjMyKTpzYXQiLCJWeDMyLncrPXZkbXB5KFZ1MzIuaCxWdjMyLmgpOnNhdCIsCisiVmVjdG9y IGhhbGZ3b3JkIG11bHRpcGx5LCBhY2N1bXVsYXRlIHBhaXJzLCBzYXQgdG8gd29yZCIsCisgICAg ZkhJREUoc2l6ZThzX3QgYWNjdW07KQorICAgIGFjY3VtICAgID0gZk1QWTE2U1MoZkdFVEhBTEYo MCxWdVYud1tpXSksZkdFVEhBTEYoMCwgVnZWLndbaV0pKTsKKyAgICBhY2N1bSAgICs9IGZNUFkx NlNTKGZHRVRIQUxGKDEsVnVWLndbaV0pLGZHRVRIQUxGKDEsIFZ2Vi53W2ldKSk7CisgICAgVnhW LndbaV0gPSBmVlNBVFcoVnhWLndbaV0rYWNjdW0pKQorCisKKy8qIFZETVBZSCAqLworCitJVEVS QVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDKDMyLHZkbXB5aHNhdCwiVmQzMj12ZG1weWgo VnUzMixSdDMyKTpzYXQiLCJWZDMyLnc9dmRtcHkoVnUzMi5oLFJ0MzIuaCk6c2F0IiwKKyJWZWN0 b3IgaGFsZndvcmQgbXVsdGlwbHksIGFjY3VtdWxhdGUgcGFpcnMsIHNhdHVyYXRlIHRvIHdvcmQi LAorICAgIGZISURFKHNpemU4c190IGFjY3VtOykKKyAgICBhY2N1bSAgICA9IGZNUFkxNlNTKGZH RVRIQUxGKDAsIFZ1Vi53W2ldKSxmR0VUSEFMRigwLCBSdFYpKTsKKyAgICBhY2N1bSAgICs9IGZN UFkxNlNTKGZHRVRIQUxGKDEsIFZ1Vi53W2ldKSxmR0VUSEFMRigxLCBSdFYpKTsKKyAgICBWZFYu d1tpXSA9IGZWU0FUVyhhY2N1bSkpCisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0RPVUJMRV9W RUMoMzIsdmRtcHloc2F0X2FjYywiVngzMis9dmRtcHloKFZ1MzIsUnQzMik6c2F0IiwiVngzMi53 Kz12ZG1weShWdTMyLmgsUnQzMi5oKTpzYXQiLAorIlZlY3RvciBoYWxmd29yZCBtdWx0aXBseSwg YWNjdW11bGF0ZSBwYWlycywgc2F0dXJhdGUgdG8gd29yZCIsCisgICAgZkhJREUoc2l6ZThzX3Qp IGFjY3VtID0gVnhWLndbaV07CisgICAgYWNjdW0gICArPSBmTVBZMTZTUyhmR0VUSEFMRigwLCBW dVYud1tpXSksZkdFVEhBTEYoMCwgUnRWKSk7CisgICAgYWNjdW0gICArPSBmTVBZMTZTUyhmR0VU SEFMRigxLCBWdVYud1tpXSksZkdFVEhBTEYoMSwgUnRWKSk7CisgICAgVnhWLndbaV0gPSBmVlNB VFcoYWNjdW0pKQorCisKKworCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDKDMy LHZkbXB5aGlzYXQsIlZkMzI9dmRtcHloKFZ1dTMyLFJ0MzIpOnNhdCIsIlZkMzIudz12ZG1weShW dXUzMi5oLFJ0MzIuaCk6c2F0IiwKKyJEdWFsIFZlY3RvciBTaWduZWQgSGFsZndvcmQgYnkgU2ln bmVkIEhhbGZ3b3JkIDItV2F5IFJlZHVjdGlvbiB0byBIYWxmd29yZCB3aXRoIHNhdHVyYXRpb24i LAorICAgIGZISURFKHNpemU4c190IGFjY3VtOykKKyAgICBhY2N1bSAgICA9IGZNUFkxNlNTKGZH RVRIQUxGKDEsVnV1Vi52WzBdLndbaV0pLGZHRVRIQUxGKDAsUnRWKSk7CisgICAgYWNjdW0gICAr PSBmTVBZMTZTUyhmR0VUSEFMRigwLFZ1dVYudlsxXS53W2ldKSxmR0VUSEFMRigxLFJ0VikpOwor ICAgIFZkVi53W2ldID0gZlZTQVRXKGFjY3VtKSkKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1Rf RE9VQkxFX1ZFQygzMix2ZG1weWhpc2F0X2FjYywiVngzMis9dmRtcHloKFZ1dTMyLFJ0MzIpOnNh dCIsIlZ4MzIudys9dmRtcHkoVnV1MzIuaCxSdDMyLmgpOnNhdCIsCisiRHVhbCBWZWN0b3IgU2ln bmVkIEhhbGZ3b3JkIGJ5IFNpZ25lZCBIYWxmd29yZCAyLVdheSBSZWR1Y3Rpb24gdG8gSGFsZndv cmQgd2l0aCBhY2N1bXVsYXRpb24gYW5kIHNhdHVyYXRpb24iLAorICAgIGZISURFKHNpemU4c190 KSBhY2N1bSA9IFZ4Vi53W2ldOworICAgIGFjY3VtICAgKz0gZk1QWTE2U1MoZkdFVEhBTEYoMSxW dXVWLnZbMF0ud1tpXSksZkdFVEhBTEYoMCxSdFYpKTsKKyAgICBhY2N1bSAgICs9IGZNUFkxNlNT KGZHRVRIQUxGKDAsVnV1Vi52WzFdLndbaV0pLGZHRVRIQUxGKDEsUnRWKSk7CisgICAgVnhWLndb aV0gPSBmVlNBVFcoYWNjdW0pKQorCisKKworCisKKworCisvKiBWRE1QWUhTVSAqLworSVRFUkFU T1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygzMix2ZG1weWhzdXNhdCwiVmQzMj12ZG1weWhz dShWdTMyLFJ0MzIpOnNhdCIsIlZkMzIudz12ZG1weShWdTMyLmgsUnQzMi51aCk6c2F0IiwKKyJW ZWN0b3IgaGFsZndvcmQgbXVsdGlwbHksIGFjY3VtdWxhdGUgcGFpcnMsIHNhdHVyYXRlIHRvIHdv cmQiLAorICAgIGZISURFKHNpemU4c190IGFjY3VtOykKKyAgICBhY2N1bSAgICA9IGZNUFkxNlNV KGZHRVRIQUxGKDAsIFZ1Vi53W2ldKSxmR0VUVUhBTEYoMCwgUnRWKSk7CisgICAgYWNjdW0gICAr PSBmTVBZMTZTVShmR0VUSEFMRigxLCBWdVYud1tpXSksZkdFVFVIQUxGKDEsIFJ0VikpOworICAg IFZkVi53W2ldID0gZlZTQVRXKGFjY3VtKSkKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9V QkxFX1ZFQygzMix2ZG1weWhzdXNhdF9hY2MsIlZ4MzIrPXZkbXB5aHN1KFZ1MzIsUnQzMik6c2F0 IiwiVngzMi53Kz12ZG1weShWdTMyLmgsUnQzMi51aCk6c2F0IiwKKyJWZWN0b3IgaGFsZndvcmQg bXVsdGlwbHksIGFjY3VtdWxhdGUgcGFpcnMsIHNhdHVyYXRlIHRvIHdvcmQiLAorICAgIGZISURF KHNpemU4c190KSBhY2N1bT1WeFYud1tpXTsKKyAgICBhY2N1bSAgICs9IGZNUFkxNlNVKGZHRVRI QUxGKDAsIFZ1Vi53W2ldKSxmR0VUVUhBTEYoMCwgUnRWKSk7CisgICAgYWNjdW0gICArPSBmTVBZ MTZTVShmR0VUSEFMRigxLCBWdVYud1tpXSksZkdFVFVIQUxGKDEsIFJ0VikpOworICAgIFZ4Vi53 W2ldID0gZlZTQVRXKGFjY3VtKSkKKworCisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0RPVUJM RV9WRUMoMzIsdmRtcHloc3Vpc2F0LCJWZDMyPXZkbXB5aHN1KFZ1dTMyLFJ0MzIsIzEpOnNhdCIs IlZkMzIudz12ZG1weShWdXUzMi5oLFJ0MzIudWgsIzEpOnNhdCIsCisiRHVhbCBWZWN0b3IgU2ln bmVkIEhhbGZ3b3JkIGJ5IFNpZ25lZCBIYWxmd29yZCAyLVdheSBSZWR1Y3Rpb24gdG8gSGFsZndv cmQgd2l0aCBzYXR1cmF0aW9uIiwKKyAgICBmSElERShzaXplOHNfdCBhY2N1bTspCisgICAgYWNj dW0gICAgPSBmTVBZMTZTVShmR0VUSEFMRigxLFZ1dVYudlswXS53W2ldKSxmR0VUVUhBTEYoMCxS dFYpKTsKKyAgICBhY2N1bSAgICs9IGZNUFkxNlNVKGZHRVRIQUxGKDAsVnV1Vi52WzFdLndbaV0p LGZHRVRVSEFMRigxLFJ0VikpOworICAgIFZkVi53W2ldID0gZlZTQVRXKGFjY3VtKSkKKworSVRF UkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygzMix2ZG1weWhzdWlzYXRfYWNjLCJWeDMy Kz12ZG1weWhzdShWdXUzMixSdDMyLCMxKTpzYXQiLCJWeDMyLncrPXZkbXB5KFZ1dTMyLmgsUnQz Mi51aCwjMSk6c2F0IiwKKyJEdWFsIFZlY3RvciBTaWduZWQgSGFsZndvcmQgYnkgU2lnbmVkIEhh bGZ3b3JkIDItV2F5IFJlZHVjdGlvbiB0byBIYWxmd29yZCB3aXRoIGFjY3VtdWxhdGlvbiBhbmQg c2F0dXJhdGlvbiIsCisgICAgZkhJREUoc2l6ZThzX3QpIGFjY3VtPVZ4Vi53W2ldOworICAgIGFj Y3VtICAgKz0gZk1QWTE2U1UoZkdFVEhBTEYoMSwgVnV1Vi52WzBdLndbaV0pLGZHRVRVSEFMRigw LFJ0VikpOworICAgIGFjY3VtICAgKz0gZk1QWTE2U1UoZkdFVEhBTEYoMCwgVnV1Vi52WzFdLndb aV0pLGZHRVRVSEFMRigxLFJ0VikpOworICAgIFZ4Vi53W2ldID0gZlZTQVRXKGFjY3VtKSkKKwor CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgMy1X QVkgUkVEVUNUSU9OIC0gVU5TSUdORUQgQllURSBCWSAgQllURQorKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyBJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9E T1VCTEVfVkVDKDE2LHZ0bXB5YiwgIlZkZDMyPXZ0bXB5YihWdXUzMixSdDMyKSIsICJWZGQzMi5o PXZ0bXB5KFZ1dTMyLmIsUnQzMi5iKSIsCisiRHVhbCBWZWN0b3IgM3gxIFJlZHVjdGlvbiIsCisg ICAgVmRkVi52WzBdLmhbaV0gID0gZk1QWThTUyhmR0VUQllURSgwLFZ1dVYudlswXS5oW2ldKSwg ZkdFVEJZVEUoKDIqaSAgKSU0LCBSdFYpKTsKKyAgICBWZGRWLnZbMF0uaFtpXSArPSBmTVBZOFNT KGZHRVRCWVRFKDEsVnV1Vi52WzBdLmhbaV0pLCBmR0VUQllURSgoMippKzEpJTQsIFJ0VikpOwor ICAgIFZkZFYudlswXS5oW2ldICs9IGZHRVRCWVRFKDAsVnV1Vi52WzFdLmhbaV0pOworCisgICAg VmRkVi52WzFdLmhbaV0gID0gZk1QWThTUyhmR0VUQllURSgxLFZ1dVYudlswXS5oW2ldKSwgZkdF VEJZVEUoKDIqaSAgKSU0LCBSdFYpKTsKKyAgICBWZGRWLnZbMV0uaFtpXSArPSBmTVBZOFNTKGZH RVRCWVRFKDAsVnV1Vi52WzFdLmhbaV0pLCBmR0VUQllURSgoMippKzEpJTQsIFJ0VikpOworICAg IFZkZFYudlsxXS5oW2ldICs9IGZHRVRCWVRFKDEsVnV1Vi52WzFdLmhbaV0pKQorCisKK0lURVJB VE9SX0lOU04yX01QWV9TTE9UX0RPVUJMRV9WRUMoMTYsdnRtcHliX2FjYywgIlZ4eDMyKz12dG1w eWIoVnV1MzIsUnQzMikiLCAiVnh4MzIuaCs9dnRtcHkoVnV1MzIuYixSdDMyLmIpIiwKKyJEdWFs IFZlY3RvciAzeDEgUmVkdWN0aW9uIiwKKyAgICBWeHhWLnZbMF0uaFtpXSArPSBmTVBZOFNTKGZH RVRCWVRFKDAsVnV1Vi52WzBdLmhbaV0pLCBmR0VUQllURSgoMippICApJTQsIFJ0VikpOworICAg IFZ4eFYudlswXS5oW2ldICs9IGZNUFk4U1MoZkdFVEJZVEUoMSxWdXVWLnZbMF0uaFtpXSksIGZH RVRCWVRFKCgyKmkrMSklNCwgUnRWKSk7CisgICAgVnh4Vi52WzBdLmhbaV0gKz0gZkdFVEJZVEUo MCxWdXVWLnZbMV0uaFtpXSk7CisKKyAgICBWeHhWLnZbMV0uaFtpXSArPSBmTVBZOFNTKGZHRVRC WVRFKDEsVnV1Vi52WzBdLmhbaV0pLCBmR0VUQllURSgoMippICApJTQsIFJ0VikpOworICAgIFZ4 eFYudlsxXS5oW2ldICs9IGZNUFk4U1MoZkdFVEJZVEUoMCxWdXVWLnZbMV0uaFtpXSksIGZHRVRC WVRFKCgyKmkrMSklNCwgUnRWKSk7CisgICAgVnh4Vi52WzFdLmhbaV0gKz0gZkdFVEJZVEUoMSxW dXVWLnZbMV0uaFtpXSkpCisKKworCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVD KDE2LHZ0bXB5YnVzLCAiVmRkMzI9dnRtcHlidXMoVnV1MzIsUnQzMikiLCAiVmRkMzIuaD12dG1w eShWdXUzMi51YixSdDMyLmIpIiwKKyJEdWFsIFZlY3RvciAzeDEgUmVkdWN0aW9uIiwKKyAgICBW ZGRWLnZbMF0uaFtpXSAgPSBmTVBZOFVTKGZHRVRVQllURSgwLFZ1dVYudlswXS51aFtpXSksIGZH RVRCWVRFKCgyKmkgICklNCwgUnRWKSk7CisgICAgVmRkVi52WzBdLmhbaV0gKz0gZk1QWThVUyhm R0VUVUJZVEUoMSxWdXVWLnZbMF0udWhbaV0pLCBmR0VUQllURSgoMippKzEpJTQsIFJ0VikpOwor ICAgIFZkZFYudlswXS5oW2ldICs9IGZHRVRVQllURSgwLFZ1dVYudlsxXS51aFtpXSk7CisKKyAg ICBWZGRWLnZbMV0uaFtpXSAgPSBmTVBZOFVTKGZHRVRVQllURSgxLFZ1dVYudlswXS51aFtpXSks IGZHRVRCWVRFKCgyKmkgICklNCwgUnRWKSk7CisgICAgVmRkVi52WzFdLmhbaV0gKz0gZk1QWThV UyhmR0VUVUJZVEUoMCxWdXVWLnZbMV0udWhbaV0pLCBmR0VUQllURSgoMippKzEpJTQsIFJ0Vikp OworICAgIFZkZFYudlsxXS5oW2ldICs9IGZHRVRVQllURSgxLFZ1dVYudlsxXS51aFtpXSkpCisK K0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0RPVUJMRV9WRUMoMTYsdnRtcHlidXNfYWNjLCAiVnh4 MzIrPXZ0bXB5YnVzKFZ1dTMyLFJ0MzIpIiwgIlZ4eDMyLmgrPXZ0bXB5KFZ1dTMyLnViLFJ0MzIu YikiLAorIkR1YWwgVmVjdG9yIDN4MSBSZWR1Y3Rpb24iLAorICAgIFZ4eFYudlswXS5oW2ldICs9 IGZNUFk4VVMoZkdFVFVCWVRFKDAsVnV1Vi52WzBdLnVoW2ldKSwgZkdFVEJZVEUoKDIqaSAgKSU0 LCBSdFYpKTsKKyAgICBWeHhWLnZbMF0uaFtpXSArPSBmTVBZOFVTKGZHRVRVQllURSgxLFZ1dVYu dlswXS51aFtpXSksIGZHRVRCWVRFKCgyKmkrMSklNCwgUnRWKSk7CisgICAgVnh4Vi52WzBdLmhb aV0gKz0gZkdFVFVCWVRFKDAsVnV1Vi52WzFdLnVoW2ldKTsKKworICAgIFZ4eFYudlsxXS5oW2ld ICs9IGZNUFk4VVMoZkdFVFVCWVRFKDEsVnV1Vi52WzBdLnVoW2ldKSwgZkdFVEJZVEUoKDIqaSAg KSU0LCBSdFYpKTsKKyAgICBWeHhWLnZbMV0uaFtpXSArPSBmTVBZOFVTKGZHRVRVQllURSgwLFZ1 dVYudlsxXS51aFtpXSksIGZHRVRCWVRFKCgyKmkrMSklNCwgUnRWKSk7CisgICAgVnh4Vi52WzFd LmhbaV0gKz0gZkdFVFVCWVRFKDEsVnV1Vi52WzFdLnVoW2ldKSkKKworCitJVEVSQVRPUl9JTlNO Ml9NUFlfU0xPVF9ET1VCTEVfVkVDKDMyLHZ0bXB5aGIsICJWZGQzMj12dG1weWhiKFZ1dTMyLFJ0 MzIpIiwgIlZkZDMyLnc9dnRtcHkoVnV1MzIuaCxSdDMyLmIpIiwKKyJEdWFsIFZlY3RvciAzeDEg UmVkdWN0aW9uIiwKKyAgICBWZGRWLnZbMF0ud1tpXSA9IGZNUFkxNlNTKGZHRVRIQUxGKDAsVnV1 Vi52WzBdLndbaV0pLCBmU0U4XzE2KGZHRVRCWVRFKCgyKmkrMCklNCwgUnRWKSkpOworICAgIFZk ZFYudlswXS53W2ldKz0gZk1QWTE2U1MoZkdFVEhBTEYoMSxWdXVWLnZbMF0ud1tpXSksIGZTRThf MTYoZkdFVEJZVEUoKDIqaSsxKSU0LCBSdFYpKSk7CisgICAgVmRkVi52WzBdLndbaV0rPSBmR0VU SEFMRigwLFZ1dVYudlsxXS53W2ldKTsKKworICAgIFZkZFYudlsxXS53W2ldID0gZk1QWTE2U1Mo ZkdFVEhBTEYoMSxWdXVWLnZbMF0ud1tpXSksIGZTRThfMTYoZkdFVEJZVEUoKDIqaSswKSU0LCBS dFYpKSk7CisgICAgVmRkVi52WzFdLndbaV0rPSBmTVBZMTZTUyhmR0VUSEFMRigwLFZ1dVYudlsx XS53W2ldKSwgZlNFOF8xNihmR0VUQllURSgoMippKzEpJTQsIFJ0VikpKTsKKyAgICBWZGRWLnZb MV0ud1tpXSs9IGZHRVRIQUxGKDEsVnV1Vi52WzFdLndbaV0pKQorCitJVEVSQVRPUl9JTlNOMl9N UFlfU0xPVF9ET1VCTEVfVkVDKDMyLHZ0bXB5aGJfYWNjLCAiVnh4MzIrPXZ0bXB5aGIoVnV1MzIs UnQzMikiLCAiVnh4MzIudys9dnRtcHkoVnV1MzIuaCxSdDMyLmIpIiwKKyJEdWFsIFZlY3RvciAz eDEgUmVkdWN0aW9uIiwKKyAgICBWeHhWLnZbMF0ud1tpXSs9IGZNUFkxNlNTKGZHRVRIQUxGKDAs VnV1Vi52WzBdLndbaV0pLCBmU0U4XzE2KGZHRVRCWVRFKCgyKmkrMCklNCwgUnRWKSkpOworICAg IFZ4eFYudlswXS53W2ldKz0gZk1QWTE2U1MoZkdFVEhBTEYoMSxWdXVWLnZbMF0ud1tpXSksIGZT RThfMTYoZkdFVEJZVEUoKDIqaSsxKSU0LCBSdFYpKSk7CisgICAgVnh4Vi52WzBdLndbaV0rPSBm R0VUSEFMRigwLFZ1dVYudlsxXS53W2ldKTsKKworICAgIFZ4eFYudlsxXS53W2ldKz0gZk1QWTE2 U1MoZkdFVEhBTEYoMSxWdXVWLnZbMF0ud1tpXSksIGZTRThfMTYoZkdFVEJZVEUoKDIqaSswKSU0 LCBSdFYpKSk7CisgICAgVnh4Vi52WzFdLndbaV0rPSBmTVBZMTZTUyhmR0VUSEFMRigwLFZ1dVYu dlsxXS53W2ldKSwgZlNFOF8xNihmR0VUQllURSgoMippKzEpJTQsIFJ0VikpKTsKKyAgICBWeHhW LnZbMV0ud1tpXSs9IGZHRVRIQUxGKDEsVnV1Vi52WzFdLndbaV0pKQorCisKKy8qKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgNC1XQVkgUkVEVUNUSU9OIC0g VU5TSUdORUQgQllURSBCWSBVTlNJR05FRCBCWVRFCisqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKi8KKworCisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9UKDMyLHZy bXB5dWIsIlZkMzI9dnJtcHl1YihWdTMyLFJ0MzIpIiwiVmQzMi51dz12cm1weShWdTMyLnViLFJ0 MzIudWIpIiwKKyJWZWN0b3IgTXVsdGlwbHktQWNjdW11bGF0ZSBSZWR1Y2Ugd2l0aCA0IGJ5dGUg Y29lZmZpY2llbnRzIiwKKyAgICBWZFYudXdbaV0gID0gZk1QWThVVShmR0VUVUJZVEUoMCxWdVYu dXdbaV0pLCBmR0VUVUJZVEUoMCxSdFYpKTsKKyAgICBWZFYudXdbaV0gKz0gZk1QWThVVShmR0VU VUJZVEUoMSxWdVYudXdbaV0pLCBmR0VUVUJZVEUoMSxSdFYpKTsKKyAgICBWZFYudXdbaV0gKz0g Zk1QWThVVShmR0VUVUJZVEUoMixWdVYudXdbaV0pLCBmR0VUVUJZVEUoMixSdFYpKTsKKyAgICBW ZFYudXdbaV0gKz0gZk1QWThVVShmR0VUVUJZVEUoMyxWdVYudXdbaV0pLCBmR0VUVUJZVEUoMyxS dFYpKSkKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1QoMzIsdnJtcHl1Yl9hY2MsIlZ4MzIrPXZy bXB5dWIoVnUzMixSdDMyKSIsIlZ4MzIudXcrPXZybXB5KFZ1MzIudWIsUnQzMi51YikiLAorIlZl Y3RvciBNdWx0aXBseS1BY2N1bXVsYXRlIFJlZHVjZSB3aXRoIDQgYnl0ZSBjb2VmZmljaWVudHMg QWNjdW11bGF0ZSIsCisgICAgVnhWLnV3W2ldICs9IGZNUFk4VVUoZkdFVFVCWVRFKDAsVnVWLnV3 W2ldKSwgZkdFVFVCWVRFKDAsUnRWKSk7CisgICAgVnhWLnV3W2ldICs9IGZNUFk4VVUoZkdFVFVC WVRFKDEsVnVWLnV3W2ldKSwgZkdFVFVCWVRFKDEsUnRWKSk7CisgICAgVnhWLnV3W2ldICs9IGZN UFk4VVUoZkdFVFVCWVRFKDIsVnVWLnV3W2ldKSwgZkdFVFVCWVRFKDIsUnRWKSk7CisgICAgVnhW LnV3W2ldICs9IGZNUFk4VVUoZkdFVFVCWVRFKDMsVnVWLnV3W2ldKSwgZkdFVFVCWVRFKDMsUnRW KSkpCisKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1QoMzIsdnJtcHl1YnYsIlZkMzI9dnJtcHl1 YihWdTMyLFZ2MzIpIiwiVmQzMi51dz12cm1weShWdTMyLnViLFZ2MzIudWIpIiwKKyJWZWN0b3Ig TXVsdGlwbHktQWNjdW11bGF0ZSBSZWR1Y2Ugd2l0aCA0IGJ5dGUgY29lZmZpY2llbnRzIiwKKyAg ICBWZFYudXdbaV0gID0gZk1QWThVVShmR0VUVUJZVEUoMCxWdVYudXdbaV0pLCBmR0VUVUJZVEUo MCxWdlYudXdbaV0pKTsKKyAgICBWZFYudXdbaV0gKz0gZk1QWThVVShmR0VUVUJZVEUoMSxWdVYu dXdbaV0pLCBmR0VUVUJZVEUoMSxWdlYudXdbaV0pKTsKKyAgICBWZFYudXdbaV0gKz0gZk1QWThV VShmR0VUVUJZVEUoMixWdVYudXdbaV0pLCBmR0VUVUJZVEUoMixWdlYudXdbaV0pKTsKKyAgICBW ZFYudXdbaV0gKz0gZk1QWThVVShmR0VUVUJZVEUoMyxWdVYudXdbaV0pLCBmR0VUVUJZVEUoMyxW dlYudXdbaV0pKSkKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygzMix2cm1w eXVidl9hY2MsIlZ4MzIrPXZybXB5dWIoVnUzMixWdjMyKSIsIlZ4MzIudXcrPXZybXB5KFZ1MzIu dWIsVnYzMi51YikiLAorIlZlY3RvciBNdWx0aXBseS1BY2N1bXVsYXRlIFJlZHVjZSB3aXRoIDQg Ynl0ZSBjb2VmZmljaWVudHMgQWNjdW11bGF0ZSIsCisgICAgVnhWLnV3W2ldICs9IGZNUFk4VVUo ZkdFVFVCWVRFKDAsVnVWLnV3W2ldKSwgZkdFVFVCWVRFKDAsVnZWLnV3W2ldKSk7CisgICAgVnhW LnV3W2ldICs9IGZNUFk4VVUoZkdFVFVCWVRFKDEsVnVWLnV3W2ldKSwgZkdFVFVCWVRFKDEsVnZW LnV3W2ldKSk7CisgICAgVnhWLnV3W2ldICs9IGZNUFk4VVUoZkdFVFVCWVRFKDIsVnVWLnV3W2ld KSwgZkdFVFVCWVRFKDIsVnZWLnV3W2ldKSk7CisgICAgVnhWLnV3W2ldICs9IGZNUFk4VVUoZkdF VFVCWVRFKDMsVnVWLnV3W2ldKSwgZkdFVFVCWVRFKDMsVnZWLnV3W2ldKSkpCisKK0lURVJBVE9S X0lOU04yX01QWV9TTE9UKDMyLHZybXB5YnYsIlZkMzI9dnJtcHliKFZ1MzIsVnYzMikiLCJWZDMy Lnc9dnJtcHkoVnUzMi5iLFZ2MzIuYikiLAorIlZlY3RvciBNdWx0aXBseS1BY2N1bXVsYXRlIFJl ZHVjZSB3aXRoIDQgYnl0ZSBjb2VmZmljaWVudHMiLAorICAgIFZkVi53W2ldICA9IGZNUFk4U1Mo ZkdFVEJZVEUoMCwgVnVWLndbaV0pLCBmR0VUQllURSgwLCBWdlYud1tpXSkpOworICAgIFZkVi53 W2ldICs9IGZNUFk4U1MoZkdFVEJZVEUoMSwgVnVWLndbaV0pLCBmR0VUQllURSgxLCBWdlYud1tp XSkpOworICAgIFZkVi53W2ldICs9IGZNUFk4U1MoZkdFVEJZVEUoMiwgVnVWLndbaV0pLCBmR0VU QllURSgyLCBWdlYud1tpXSkpOworICAgIFZkVi53W2ldICs9IGZNUFk4U1MoZkdFVEJZVEUoMywg VnVWLndbaV0pLCBmR0VUQllURSgzLCBWdlYud1tpXSkpKQorCisKK0lURVJBVE9SX0lOU04yX01Q WV9TTE9UX0RPVUJMRV9WRUMoMzIsdnJtcHlidl9hY2MsIlZ4MzIrPXZybXB5YihWdTMyLFZ2MzIp IiwiVngzMi53Kz12cm1weShWdTMyLmIsVnYzMi5iKSIsCisiVmVjdG9yIE11bHRpcGx5LUFjY3Vt dWxhdGUgUmVkdWNlIHdpdGggNCBieXRlIGNvZWZmaWNpZW50cyIsCisgICAgVnhWLndbaV0gKz0g Zk1QWThTUyhmR0VUQllURSgwLCBWdVYud1tpXSksIGZHRVRCWVRFKDAsIFZ2Vi53W2ldKSk7Cisg ICAgVnhWLndbaV0gKz0gZk1QWThTUyhmR0VUQllURSgxLCBWdVYud1tpXSksIGZHRVRCWVRFKDEs IFZ2Vi53W2ldKSk7CisgICAgVnhWLndbaV0gKz0gZk1QWThTUyhmR0VUQllURSgyLCBWdVYud1tp XSksIGZHRVRCWVRFKDIsIFZ2Vi53W2ldKSk7CisgICAgVnhWLndbaV0gKz0gZk1QWThTUyhmR0VU QllURSgzLCBWdVYud1tpXSksIGZHRVRCWVRFKDMsIFZ2Vi53W2ldKSkpCisKKworSVRFUkFUT1Jf SU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygzMix2cm1weXViaSwiVmRkMzI9dnJtcHl1YihWdXUz MixSdDMyLCN1MSkiLCJWZGQzMi51dz12cm1weShWdXUzMi51YixSdDMyLnViLCN1MSkiLAorIkR1 YWwgVmVjdG9yIFVuc2lnbmVkIEJ5dGUgQnkgU2lnbmVkIEJ5dGUgNC13YXkgUmVkdWN0aW9uIHRv IFdvcmQiLAorICAgIFZkZFYudlswXS51d1tpXSAgPSBmTVBZOFVVKGZHRVRVQllURSgwLCBWdXVW LnZbdWlWID8gMTowXS51d1tpXSksZkdFVFVCWVRFKCgwLXVpVikgJiAweDMsUnRWKSk7CisgICAg VmRkVi52WzBdLnV3W2ldICs9IGZNUFk4VVUoZkdFVFVCWVRFKDEsIFZ1dVYudlswICAgICAgICBd LnV3W2ldKSxmR0VUVUJZVEUoKDEtdWlWKSAmIDB4MyxSdFYpKTsKKyAgICBWZGRWLnZbMF0udXdb aV0gKz0gZk1QWThVVShmR0VUVUJZVEUoMiwgVnV1Vi52WzAgICAgICAgIF0udXdbaV0pLGZHRVRV QllURSgoMi11aVYpICYgMHgzLFJ0VikpOworICAgIFZkZFYudlswXS51d1tpXSArPSBmTVBZOFVV KGZHRVRVQllURSgzLCBWdXVWLnZbMCAgICAgICAgXS51d1tpXSksZkdFVFVCWVRFKCgzLXVpVikg JiAweDMsUnRWKSk7CisKKyAgICBWZGRWLnZbMV0udXdbaV0gID0gZk1QWThVVShmR0VUVUJZVEUo MCwgVnV1Vi52WzEgICAgICAgIF0udXdbaV0pLGZHRVRVQllURSgoMi11aVYpICYgMHgzLFJ0Vikp OworICAgIFZkZFYudlsxXS51d1tpXSArPSBmTVBZOFVVKGZHRVRVQllURSgxLCBWdXVWLnZbMSAg ICAgICAgXS51d1tpXSksZkdFVFVCWVRFKCgzLXVpVikgJiAweDMsUnRWKSk7CisgICAgVmRkVi52 WzFdLnV3W2ldICs9IGZNUFk4VVUoZkdFVFVCWVRFKDIsIFZ1dVYudlt1aVYgPyAxOjBdLnV3W2ld KSxmR0VUVUJZVEUoKDAtdWlWKSAmIDB4MyxSdFYpKTsKKyAgICBWZGRWLnZbMV0udXdbaV0gKz0g Zk1QWThVVShmR0VUVUJZVEUoMywgVnV1Vi52WzAgICAgICAgIF0udXdbaV0pLGZHRVRVQllURSgo MS11aVYpICYgMHgzLFJ0VikpKQorCisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0RPVUJMRV9W RUMoMzIsdnJtcHl1YmlfYWNjLCJWeHgzMis9dnJtcHl1YihWdXUzMixSdDMyLCN1MSkiLCJWeHgz Mi51dys9dnJtcHkoVnV1MzIudWIsUnQzMi51YiwjdTEpIiwKKyJEdWFsIFZlY3RvciBVbnNpZ25l ZCBCeXRlIEJ5IFNpZ25lZCBCeXRlIDQtd2F5IFJlZHVjdGlvbiB3aXRoIGFjY3VtdWxhdGUgYW5k IHNhdHVyYXRpb24gdG8gV29yZCIsCisgICAgVnh4Vi52WzBdLnV3W2ldICs9IGZNUFk4VVUoZkdF VFVCWVRFKDAsIFZ1dVYudlt1aVYgPyAxOjBdLnV3W2ldKSxmR0VUVUJZVEUoKDAtdWlWKSAmIDB4 MyxSdFYpKTsKKyAgICBWeHhWLnZbMF0udXdbaV0gKz0gZk1QWThVVShmR0VUVUJZVEUoMSwgVnV1 Vi52WzAgICAgICAgIF0udXdbaV0pLGZHRVRVQllURSgoMS11aVYpICYgMHgzLFJ0VikpOworICAg IFZ4eFYudlswXS51d1tpXSArPSBmTVBZOFVVKGZHRVRVQllURSgyLCBWdXVWLnZbMCAgICAgICAg XS51d1tpXSksZkdFVFVCWVRFKCgyLXVpVikgJiAweDMsUnRWKSk7CisgICAgVnh4Vi52WzBdLnV3 W2ldICs9IGZNUFk4VVUoZkdFVFVCWVRFKDMsIFZ1dVYudlswICAgICAgICBdLnV3W2ldKSxmR0VU VUJZVEUoKDMtdWlWKSAmIDB4MyxSdFYpKTsKKworICAgIFZ4eFYudlsxXS51d1tpXSArPSBmTVBZ OFVVKGZHRVRVQllURSgwLCBWdXVWLnZbMSAgICAgICAgXS51d1tpXSksZkdFVFVCWVRFKCgyLXVp VikgJiAweDMsUnRWKSk7CisgICAgVnh4Vi52WzFdLnV3W2ldICs9IGZNUFk4VVUoZkdFVFVCWVRF KDEsIFZ1dVYudlsxICAgICAgICBdLnV3W2ldKSxmR0VUVUJZVEUoKDMtdWlWKSAmIDB4MyxSdFYp KTsKKyAgICBWeHhWLnZbMV0udXdbaV0gKz0gZk1QWThVVShmR0VUVUJZVEUoMiwgVnV1Vi52W3Vp ViA/IDE6MF0udXdbaV0pLGZHRVRVQllURSgoMC11aVYpICYgMHgzLFJ0VikpOworICAgIFZ4eFYu dlsxXS51d1tpXSArPSBmTVBZOFVVKGZHRVRVQllURSgzLCBWdXVWLnZbMCAgICAgICAgXS51d1tp XSksZkdFVFVCWVRFKCgxLXVpVikgJiAweDMsUnRWKSkpCisKKworCisKKy8qKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgNC1XQVkgUkVEVUNUSU9OIC0gVU5T SUdORUQgQllURSBCWSAgQllURQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKiovCisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9UKDMyLHZybXB5YnVzLCJWZDMyPXZy bXB5YnVzKFZ1MzIsUnQzMikiLCJWZDMyLnc9dnJtcHkoVnUzMi51YixSdDMyLmIpIiwKKyJWZWN0 b3IgTXVsdGlwbHktQWNjdW11bGF0ZSBSZWR1Y2Ugd2l0aCA0IGJ5dGUgY29lZmZpY2llbnRzIiwK KyAgICBWZFYud1tpXSAgPSBmTVBZOFVTKGZHRVRVQllURSgwLFZ1Vi51d1tpXSksIGZHRVRCWVRF KDAsUnRWKSk7CisgICAgVmRWLndbaV0gKz0gZk1QWThVUyhmR0VUVUJZVEUoMSxWdVYudXdbaV0p LCBmR0VUQllURSgxLFJ0VikpOworICAgIFZkVi53W2ldICs9IGZNUFk4VVMoZkdFVFVCWVRFKDIs VnVWLnV3W2ldKSwgZkdFVEJZVEUoMixSdFYpKTsKKyAgICBWZFYud1tpXSArPSBmTVBZOFVTKGZH RVRVQllURSgzLFZ1Vi51d1tpXSksIGZHRVRCWVRFKDMsUnRWKSkpCisKKworSVRFUkFUT1JfSU5T TjJfTVBZX1NMT1QoMzIsdnJtcHlidXNfYWNjLCJWeDMyKz12cm1weWJ1cyhWdTMyLFJ0MzIpIiwi VngzMi53Kz12cm1weShWdTMyLnViLFJ0MzIuYikiLAorIlZlY3RvciBNdWx0aXBseS1BY2N1bXVs YXRlIFJlZHVjZSB3aXRoIDQgYnl0ZSBjb2VmZmljaWVudHMiLAorICAgIFZ4Vi53W2ldICs9IGZN UFk4VVMoZkdFVFVCWVRFKDAsVnVWLnV3W2ldKSwgZkdFVEJZVEUoMCxSdFYpKTsKKyAgICBWeFYu d1tpXSArPSBmTVBZOFVTKGZHRVRVQllURSgxLFZ1Vi51d1tpXSksIGZHRVRCWVRFKDEsUnRWKSk7 CisgICAgVnhWLndbaV0gKz0gZk1QWThVUyhmR0VUVUJZVEUoMixWdVYudXdbaV0pLCBmR0VUQllU RSgyLFJ0VikpOworICAgIFZ4Vi53W2ldICs9IGZNUFk4VVMoZkdFVFVCWVRFKDMsVnVWLnV3W2ld KSwgZkdFVEJZVEUoMyxSdFYpKSkKKworCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVf VkVDKDMyLHZybXB5YnVzaSwiVmRkMzI9dnJtcHlidXMoVnV1MzIsUnQzMiwjdTEpIiwiVmRkMzIu dz12cm1weShWdXUzMi51YixSdDMyLmIsI3UxKSIsCisiRHVhbCBWZWN0b3IgVW5zaWduZWQgQnl0 ZSBCeSBTaWduZWQgQnl0ZSA0LXdheSBSZWR1Y3Rpb24gdG8gV29yZCIsCisgICAgVmRkVi52WzBd LndbaV0gID0gZk1QWThVUyhmR0VUVUJZVEUoMCwgVnV1Vi52W3VpViA/IDE6MF0udXdbaV0pLGZH RVRCWVRFKCgwLXVpVikgJiAweDMsUnRWKSk7CisgICAgVmRkVi52WzBdLndbaV0gKz0gZk1QWThV UyhmR0VUVUJZVEUoMSwgVnV1Vi52WzAgICAgICAgIF0udXdbaV0pLGZHRVRCWVRFKCgxLXVpVikg JiAweDMsUnRWKSk7CisgICAgVmRkVi52WzBdLndbaV0gKz0gZk1QWThVUyhmR0VUVUJZVEUoMiwg VnV1Vi52WzAgICAgICAgIF0udXdbaV0pLGZHRVRCWVRFKCgyLXVpVikgJiAweDMsUnRWKSk7Cisg ICAgVmRkVi52WzBdLndbaV0gKz0gZk1QWThVUyhmR0VUVUJZVEUoMywgVnV1Vi52WzAgICAgICAg IF0udXdbaV0pLGZHRVRCWVRFKCgzLXVpVikgJiAweDMsUnRWKSk7CisKKyAgICBWZGRWLnZbMV0u d1tpXSAgPSBmTVBZOFVTKGZHRVRVQllURSgwLCBWdXVWLnZbMSAgICAgICAgXS51d1tpXSksZkdF VEJZVEUoKDItdWlWKSAmIDB4MyxSdFYpKTsKKyAgICBWZGRWLnZbMV0ud1tpXSArPSBmTVBZOFVT KGZHRVRVQllURSgxLCBWdXVWLnZbMSAgICAgICAgXS51d1tpXSksZkdFVEJZVEUoKDMtdWlWKSAm IDB4MyxSdFYpKTsKKyAgICBWZGRWLnZbMV0ud1tpXSArPSBmTVBZOFVTKGZHRVRVQllURSgyLCBW dXVWLnZbdWlWID8gMTowXS51d1tpXSksZkdFVEJZVEUoKDAtdWlWKSAmIDB4MyxSdFYpKTsKKyAg ICBWZGRWLnZbMV0ud1tpXSArPSBmTVBZOFVTKGZHRVRVQllURSgzLCBWdXVWLnZbMCAgICAgICAg XS51d1tpXSksZkdFVEJZVEUoKDEtdWlWKSAmIDB4MyxSdFYpKSkKKworCitJVEVSQVRPUl9JTlNO Ml9NUFlfU0xPVF9ET1VCTEVfVkVDKDMyLHZybXB5YnVzaV9hY2MsIlZ4eDMyKz12cm1weWJ1cyhW dXUzMixSdDMyLCN1MSkiLCJWeHgzMi53Kz12cm1weShWdXUzMi51YixSdDMyLmIsI3UxKSIsCisi RHVhbCBWZWN0b3IgVW5zaWduZWQgQnl0ZSBCeSBTaWduZWQgQnl0ZSA0LXdheSBSZWR1Y3Rpb24g d2l0aCBhY2N1bXVsYXRlIGFuZCBzYXR1cmF0aW9uIHRvIFdvcmQiLAorICAgIFZ4eFYudlswXS53 W2ldICs9IGZNUFk4VVMoZkdFVFVCWVRFKDAsIFZ1dVYudlt1aVYgPyAxOjBdLnV3W2ldKSxmR0VU QllURSgoMC11aVYpICYgMHgzLFJ0VikpOworICAgIFZ4eFYudlswXS53W2ldICs9IGZNUFk4VVMo ZkdFVFVCWVRFKDEsIFZ1dVYudlswICAgICAgICBdLnV3W2ldKSxmR0VUQllURSgoMS11aVYpICYg MHgzLFJ0VikpOworICAgIFZ4eFYudlswXS53W2ldICs9IGZNUFk4VVMoZkdFVFVCWVRFKDIsIFZ1 dVYudlswICAgICAgICBdLnV3W2ldKSxmR0VUQllURSgoMi11aVYpICYgMHgzLFJ0VikpOworICAg IFZ4eFYudlswXS53W2ldICs9IGZNUFk4VVMoZkdFVFVCWVRFKDMsIFZ1dVYudlswICAgICAgICBd LnV3W2ldKSxmR0VUQllURSgoMy11aVYpICYgMHgzLFJ0VikpOworCisgICAgVnh4Vi52WzFdLndb aV0gKz0gZk1QWThVUyhmR0VUVUJZVEUoMCwgVnV1Vi52WzEgICAgICAgIF0udXdbaV0pLGZHRVRC WVRFKCgyLXVpVikgJiAweDMsUnRWKSk7CisgICAgVnh4Vi52WzFdLndbaV0gKz0gZk1QWThVUyhm R0VUVUJZVEUoMSwgVnV1Vi52WzEgICAgICAgIF0udXdbaV0pLGZHRVRCWVRFKCgzLXVpVikgJiAw eDMsUnRWKSk7CisgICAgVnh4Vi52WzFdLndbaV0gKz0gZk1QWThVUyhmR0VUVUJZVEUoMiwgVnV1 Vi52W3VpViA/IDE6MF0udXdbaV0pLGZHRVRCWVRFKCgwLXVpVikgJiAweDMsUnRWKSk7CisgICAg Vnh4Vi52WzFdLndbaV0gKz0gZk1QWThVUyhmR0VUVUJZVEUoMywgVnV1Vi52WzAgICAgICAgIF0u dXdbaV0pLGZHRVRCWVRFKCgxLXVpVikgJiAweDMsUnRWKSkpCisKKworCisKK0lURVJBVE9SX0lO U04yX01QWV9TTE9UKDMyLHZybXB5YnVzdiwiVmQzMj12cm1weWJ1cyhWdTMyLFZ2MzIpIiwiVmQz Mi53PXZybXB5KFZ1MzIudWIsVnYzMi5iKSIsCisiVmVjdG9yIE11bHRpcGx5LUFjY3VtdWxhdGUg UmVkdWNlIHdpdGggNCBieXRlIGNvZWZmaWNpZW50cyIsCisgICAgVmRWLndbaV0gID0gZk1QWThV UyhmR0VUVUJZVEUoMCxWdVYudXdbaV0pLCBmR0VUQllURSgwLFZ2Vi53W2ldKSk7CisgICAgVmRW LndbaV0gKz0gZk1QWThVUyhmR0VUVUJZVEUoMSxWdVYudXdbaV0pLCBmR0VUQllURSgxLFZ2Vi53 W2ldKSk7CisgICAgVmRWLndbaV0gKz0gZk1QWThVUyhmR0VUVUJZVEUoMixWdVYudXdbaV0pLCBm R0VUQllURSgyLFZ2Vi53W2ldKSk7CisgICAgVmRWLndbaV0gKz0gZk1QWThVUyhmR0VUVUJZVEUo MyxWdVYudXdbaV0pLCBmR0VUQllURSgzLFZ2Vi53W2ldKSkpCisKKworSVRFUkFUT1JfSU5TTjJf TVBZX1NMT1RfRE9VQkxFX1ZFQygzMix2cm1weWJ1c3ZfYWNjLCJWeDMyKz12cm1weWJ1cyhWdTMy LFZ2MzIpIiwiVngzMi53Kz12cm1weShWdTMyLnViLFZ2MzIuYikiLAorIlZlY3RvciBNdWx0aXBs eS1BY2N1bXVsYXRlIFJlZHVjZSB3aXRoIDQgYnl0ZSBjb2VmZmljaWVudHMiLAorICAgIFZ4Vi53 W2ldICs9IGZNUFk4VVMoZkdFVFVCWVRFKDAsVnVWLnV3W2ldKSwgZkdFVEJZVEUoMCxWdlYud1tp XSkpOworICAgIFZ4Vi53W2ldICs9IGZNUFk4VVMoZkdFVFVCWVRFKDEsVnVWLnV3W2ldKSwgZkdF VEJZVEUoMSxWdlYud1tpXSkpOworICAgIFZ4Vi53W2ldICs9IGZNUFk4VVMoZkdFVFVCWVRFKDIs VnVWLnV3W2ldKSwgZkdFVEJZVEUoMixWdlYud1tpXSkpOworICAgIFZ4Vi53W2ldICs9IGZNUFk4 VVMoZkdFVFVCWVRFKDMsVnVWLnV3W2ldKSwgZkdFVEJZVEUoMyxWdlYud1tpXSkpKQorCisKKwor CisKKworCisKKworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKgorKiAgMi1XQVkgUkVEVUNUSU9OIC0gU0FECisqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKi8KKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZF QygzMix2ZHNhZHVoLCJWZGQzMj12ZHNhZHVoKFZ1dTMyLFJ0MzIpIiwiVmRkMzIudXc9dmRzYWQo VnV1MzIudWgsUnQzMi51aCkiLAorIkR1YWwgVmVjdG9yIEhhbGZ3b3JkIGJ5IEJ5dGUgNC1XYXkg UmVkdWN0aW9uIHRvIFdvcmQiLAorICAgIFZkZFYudlswXS51d1tpXSAgPSBmQUJTKGZHRVRVSEFM RigwLCBWdXVWLnZbMF0udXdbaV0pIC0gZkdFVFVIQUxGKDAsUnRWKSk7CisgICAgVmRkVi52WzBd LnV3W2ldICs9IGZBQlMoZkdFVFVIQUxGKDEsIFZ1dVYudlswXS51d1tpXSkgLSBmR0VUVUhBTEYo MSxSdFYpKTsKKyAgICBWZGRWLnZbMV0udXdbaV0gID0gZkFCUyhmR0VUVUhBTEYoMSwgVnV1Vi52 WzBdLnV3W2ldKSAtIGZHRVRVSEFMRigwLFJ0VikpOworICAgIFZkZFYudlsxXS51d1tpXSArPSBm QUJTKGZHRVRVSEFMRigwLCBWdXVWLnZbMV0udXdbaV0pIC0gZkdFVFVIQUxGKDEsUnRWKSkpCisK K0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0RPVUJMRV9WRUMoMzIsdmRzYWR1aF9hY2MsIlZ4eDMy Kz12ZHNhZHVoKFZ1dTMyLFJ0MzIpIiwiVnh4MzIudXcrPXZkc2FkKFZ1dTMyLnVoLFJ0MzIudWgp IiwKKyJEdWFsIFZlY3RvciBIYWxmd29yZCBieSBCeXRlIDQtV2F5IFJlZHVjdGlvbiB0byBXb3Jk IiwKKyAgICBWeHhWLnZbMF0udXdbaV0gKz0gZkFCUyhmR0VUVUhBTEYoMCwgVnV1Vi52WzBdLnV3 W2ldKSAtIGZHRVRVSEFMRigwLFJ0VikpOworICAgIFZ4eFYudlswXS51d1tpXSArPSBmQUJTKGZH RVRVSEFMRigxLCBWdXVWLnZbMF0udXdbaV0pIC0gZkdFVFVIQUxGKDEsUnRWKSk7CisgICAgVnh4 Vi52WzFdLnV3W2ldICs9IGZBQlMoZkdFVFVIQUxGKDEsIFZ1dVYudlswXS51d1tpXSkgLSBmR0VU VUhBTEYoMCxSdFYpKTsKKyAgICBWeHhWLnZbMV0udXdbaV0gKz0gZkFCUyhmR0VUVUhBTEYoMCwg VnV1Vi52WzFdLnV3W2ldKSAtIGZHRVRVSEFMRigxLFJ0VikpKQorCisKKworCisvKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogIDQtV0FZIFJFRFVDVElPTiAt IFNBRAorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKwor CitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDKDMyLHZyc2FkdWJpLCJWZGQzMj12 cnNhZHViKFZ1dTMyLFJ0MzIsI3UxKSIsIlZkZDMyLnV3PXZyc2FkKFZ1dTMyLnViLFJ0MzIudWIs I3UxKSIsCisiRHVhbCBWZWN0b3IgSGFsZndvcmQgYnkgQnl0ZSA0LVdheSBSZWR1Y3Rpb24gdG8g V29yZCIsCisgICAgVmRkVi52WzBdLnV3W2ldICA9IGZBQlMoZlpFOF8xNihmR0VUVUJZVEUoMCwg VnV1Vi52W3VpVj8xOjBdLnV3W2ldKSkgLSBmWkU4XzE2KGZHRVRVQllURSgoMC11aVYpJjMsUnRW KSkpOworICAgIFZkZFYudlswXS51d1tpXSArPSBmQUJTKGZaRThfMTYoZkdFVFVCWVRFKDEsIFZ1 dVYudlswICAgICAgXS51d1tpXSkpIC0gZlpFOF8xNihmR0VUVUJZVEUoKDEtdWlWKSYzLFJ0Vikp KTsKKyAgICBWZGRWLnZbMF0udXdbaV0gKz0gZkFCUyhmWkU4XzE2KGZHRVRVQllURSgyLCBWdXVW LnZbMCAgICAgIF0udXdbaV0pKSAtIGZaRThfMTYoZkdFVFVCWVRFKCgyLXVpVikmMyxSdFYpKSk7 CisgICAgVmRkVi52WzBdLnV3W2ldICs9IGZBQlMoZlpFOF8xNihmR0VUVUJZVEUoMywgVnV1Vi52 WzAgICAgICBdLnV3W2ldKSkgLSBmWkU4XzE2KGZHRVRVQllURSgoMy11aVYpJjMsUnRWKSkpOwor CisgICAgVmRkVi52WzFdLnV3W2ldICA9IGZBQlMoZlpFOF8xNihmR0VUVUJZVEUoMCwgVnV1Vi52 WzEgICAgICBdLnV3W2ldKSkgLSBmWkU4XzE2KGZHRVRVQllURSgoMi11aVYpJjMsUnRWKSkpOwor ICAgIFZkZFYudlsxXS51d1tpXSArPSBmQUJTKGZaRThfMTYoZkdFVFVCWVRFKDEsIFZ1dVYudlsx ICAgICAgXS51d1tpXSkpIC0gZlpFOF8xNihmR0VUVUJZVEUoKDMtdWlWKSYzLFJ0VikpKTsKKyAg ICBWZGRWLnZbMV0udXdbaV0gKz0gZkFCUyhmWkU4XzE2KGZHRVRVQllURSgyLCBWdXVWLnZbdWlW PzE6MF0udXdbaV0pKSAtIGZaRThfMTYoZkdFVFVCWVRFKCgwLXVpVikmMyxSdFYpKSk7CisgICAg VmRkVi52WzFdLnV3W2ldICs9IGZBQlMoZlpFOF8xNihmR0VUVUJZVEUoMywgVnV1Vi52WzAgICAg ICBdLnV3W2ldKSkgLSBmWkU4XzE2KGZHRVRVQllURSgoMS11aVYpJjMsUnRWKSkpKQorCitJVEVS QVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDKDMyLHZyc2FkdWJpX2FjYywiVnh4MzIrPXZy c2FkdWIoVnV1MzIsUnQzMiwjdTEpIiwiVnh4MzIudXcrPXZyc2FkKFZ1dTMyLnViLFJ0MzIudWIs I3UxKSIsCisiRHVhbCBWZWN0b3IgSGFsZndvcmQgYnkgQnl0ZSA0LVdheSBSZWR1Y3Rpb24gdG8g V29yZCIsCisgICAgVnh4Vi52WzBdLnV3W2ldICs9IGZBQlMoZlpFOF8xNihmR0VUVUJZVEUoMCwg VnV1Vi52W3VpVj8xOjBdLnV3W2ldKSkgLSBmWkU4XzE2KGZHRVRVQllURSgoMC11aVYpJjMsUnRW KSkpOworICAgIFZ4eFYudlswXS51d1tpXSArPSBmQUJTKGZaRThfMTYoZkdFVFVCWVRFKDEsIFZ1 dVYudlswICAgICAgXS51d1tpXSkpIC0gZlpFOF8xNihmR0VUVUJZVEUoKDEtdWlWKSYzLFJ0Vikp KTsKKyAgICBWeHhWLnZbMF0udXdbaV0gKz0gZkFCUyhmWkU4XzE2KGZHRVRVQllURSgyLCBWdXVW LnZbMCAgICAgIF0udXdbaV0pKSAtIGZaRThfMTYoZkdFVFVCWVRFKCgyLXVpVikmMyxSdFYpKSk7 CisgICAgVnh4Vi52WzBdLnV3W2ldICs9IGZBQlMoZlpFOF8xNihmR0VUVUJZVEUoMywgVnV1Vi52 WzAgICAgICBdLnV3W2ldKSkgLSBmWkU4XzE2KGZHRVRVQllURSgoMy11aVYpJjMsUnRWKSkpOwor CisgICAgVnh4Vi52WzFdLnV3W2ldICs9IGZBQlMoZlpFOF8xNihmR0VUVUJZVEUoMCwgVnV1Vi52 WzEgICAgICBdLnV3W2ldKSkgLSBmWkU4XzE2KGZHRVRVQllURSgoMi11aVYpJjMsUnRWKSkpOwor ICAgIFZ4eFYudlsxXS51d1tpXSArPSBmQUJTKGZaRThfMTYoZkdFVFVCWVRFKDEsIFZ1dVYudlsx ICAgICAgXS51d1tpXSkpIC0gZlpFOF8xNihmR0VUVUJZVEUoKDMtdWlWKSYzLFJ0VikpKTsKKyAg ICBWeHhWLnZbMV0udXdbaV0gKz0gZkFCUyhmWkU4XzE2KGZHRVRVQllURSgyLCBWdXVWLnZbdWlW PzE6MF0udXdbaV0pKSAtIGZaRThfMTYoZkdFVFVCWVRFKCgwLXVpVikmMyxSdFYpKSk7CisgICAg Vnh4Vi52WzFdLnV3W2ldICs9IGZBQlMoZlpFOF8xNihmR0VUVUJZVEUoMywgVnV1Vi52WzAgICAg ICBdLnV3W2ldKSkgLSBmWkU4XzE2KGZHRVRVQllURSgoMS11aVYpJjMsUnRWKSkpKQorCisKKwor CisKKworCisKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBNTVZFQ1RPUiBTSElGVElORworICogKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqLworLy8gTWFjcm8gdG8gc2hpZnQgYXJpdGhtZXRpY2FsbHkgbGVmdC9yaWdodCBhbmQg YnkgZWl0aGVyIFJUIG9yIFZ2CisKKyNkZWZpbmUgVl9TSElGVChUWVBFLCBERVNDLCBTSVpFLCBM T0dTSVpFLCBDQVNUVFlQRSkgICBcCitJVEVSQVRPUl9JTlNOMl9TSElGVF9TTE9UKFNJWkUsdmFz ciMjVFlQRSwgICAiVmQzMj12YXNyIiAjVFlQRSAiKFZ1MzIsUnQzMikiLCJWZDMyLiIjVFlQRSI9 dmFzcihWdTMyLiIjVFlQRSIsUnQzMikiLCAgICAgICAgICJWZWN0b3IgYXJpdGhtZXRpYyBzaGlm dCByaWdodCAiIERFU0MsICAgIFZkVi5UWVBFW2ldICAgICA9IChWdVYuVFlQRVtpXSAgICA+PiAo UnRWICYgKFNJWkUtMSkpKSkgXAorSVRFUkFUT1JfSU5TTjJfU0hJRlRfU0xPVChTSVpFLHZhc2wj I1RZUEUsICAgIlZkMzI9dmFzbCIgI1RZUEUgIihWdTMyLFJ0MzIpIiwiVmQzMi4iI1RZUEUiPXZh c2woVnUzMi4iI1RZUEUiLFJ0MzIpIiwgICAgICAgICAiVmVjdG9yIGFyaXRobWV0aWMgc2hpZnQg bGVmdCAgIiBERVNDLCAgICBWZFYuVFlQRVtpXSAgICAgPSAoVnVWLlRZUEVbaV0gICAgPDwgKFJ0 ViAmIChTSVpFLTEpKSkpIFwKK0lURVJBVE9SX0lOU04yX1NISUZUX1NMT1QoU0laRSx2bHNyIyNU WVBFLCAgICJWZDMyPXZsc3IiICNUWVBFICIoVnUzMixSdDMyKSIsIlZkMzIudSIjVFlQRSI9dmxz cihWdTMyLnUiI1RZUEUiLFJ0MzIpIiwgICAgICAgIlZlY3RvciBsb2dpY2FsIHNoaWZ0IHJpZ2h0 ICIgICAgREVTQywgICAgVmRWLnUjI1RZUEVbaV0gID0gKFZ1Vi51IyNUWVBFW2ldID4+IChSdFYg JiAoU0laRS0xKSkpKSBcCitJVEVSQVRPUl9JTlNOMl9TSElGVF9TTE9UKFNJWkUsdmFzciMjVFlQ RSMjdiwiVmQzMj12YXNyIiAjVFlQRSAiKFZ1MzIsVnYzMikiLCJWZDMyLiIjVFlQRSI9dmFzcihW dTMyLiIjVFlQRSIsVnYzMi4iI1RZUEUiKSIsICJWZWN0b3IgYXJpdGhtZXRpYyBzaGlmdCByaWdo dCAiIERFU0MsICAgIFZkVi5UWVBFW2ldICAgICA9IGZCSURJUl9BU0hJRlRSKFZ1Vi5UWVBFW2ld LCBmU1hUTigoTE9HU0laRSsxKSxTSVpFLFZ2Vi5UWVBFW2ldKSxDQVNUVFlQRSkpIFwKK0lURVJB VE9SX0lOU04yX1NISUZUX1NMT1QoU0laRSx2YXNsIyNUWVBFIyN2LCJWZDMyPXZhc2wiICNUWVBF ICIoVnUzMixWdjMyKSIsIlZkMzIuIiNUWVBFIj12YXNsKFZ1MzIuIiNUWVBFIixWdjMyLiIjVFlQ RSIpIiwgIlZlY3RvciBhcml0aG1ldGljIHNoaWZ0IGxlZnQgICIgREVTQywgICAgVmRWLlRZUEVb aV0gICAgID0gZkJJRElSX0FTSElGVEwoVnVWLlRZUEVbaV0sICBmU1hUTigoTE9HU0laRSsxKSxT SVpFLFZ2Vi5UWVBFW2ldKSxDQVNUVFlQRSkpIFwKK0lURVJBVE9SX0lOU04yX1NISUZUX1NMT1Qo U0laRSx2bHNyIyNUWVBFIyN2LCJWZDMyPXZsc3IiICNUWVBFICIoVnUzMixWdjMyKSIsIlZkMzIu IiNUWVBFIj12bHNyKFZ1MzIuIiNUWVBFIixWdjMyLiIjVFlQRSIpIiwgIlZlY3RvciBsb2dpY2Fs IHNoaWZ0IHJpZ2h0ICIgICAgREVTQywgICAgVmRWLnUjI1RZUEVbaV0gID0gZkJJRElSX0xTSElG VFIoVnVWLnUjI1RZUEVbaV0sIGZTWFROKChMT0dTSVpFKzEpLFNJWkUsVnZWLlRZUEVbaV0pLENB U1RUWVBFKSkgXAorCitWX1NISUZUKHcsICJ3b3JkIiwgICAzMiw1LDRfNCkKK1ZfU0hJRlQoaCwg ImhhbGZ3b3JkIiwgMTYsNCwyXzIpCisKK0lURVJBVE9SX0lOU05fU0hJRlRfU0xPVCg4LHZsc3Ji LCJWZDMyLnViPXZsc3IoVnUzMi51YixSdDMyKSIsInZlYyBsb2cgc2hpZnQgcmlnaHQgYnl0ZXMi LCBWZFYuYltpXSA9IFZ1Vi51YltpXSA+PiAoUnRWICYgMHg3KSkKKworSVRFUkFUT1JfSU5TTjJf U0hJRlRfU0xPVCgzMix2cm90ciwiVmQzMj12cm90cihWdTMyLFZ2MzIpIiwiVmQzMi51dz12cm90 cihWdTMyLnV3LFZ2MzIudXcpIiwiVmVjdG9yIHdvcmQgcm90YXRlIHJpZ2h0IiwgVmRWLnV3W2ld ID0gKChWdVYudXdbaV0gPj4gKFZ2Vi51d1tpXSAmIDB4MWYpKSB8IChWdVYudXdbaV0gPDwgKDMy IC0gKFZ2Vi51d1tpXSAmIDB4MWYpKSkpKQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBNTVZFQ1RPUiBT SElGVCBBTkQgUEVSTVVURQorICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitJVEVSQVRPUl9JTlNOMl9QRVJNVVRF X1NMT1RfRE9VQkxFX1ZFQygzMix2YXNyX2ludG8sIlZ4eDMyPXZhc3JpbnRvKFZ1MzIsVnYzMiki LCJWeHgzMi53PXZhc3JpbnRvKFZ1MzIudyxWdjMyLncpIiwiQVNSIHZlY3RvciAxIGVsZW1lbnRz IGFuZCBvdmVybGF5IGRyb3BwaW5nIGJpdHMgdG8gTVNCIG9mIHZlY3RvciAyIGVsZW1lbnRzIiwK KyAgICBmSElERShpbnQ2NF90ICkgc2hpZnQgPSAoZlNFMzJfNjQoVnVWLndbaV0pIDw8IDMyKTsK KyAgICBmSElERShpbnQ2NF90ICkgbWFzayAgPSAoKChmU0UzMl82NChWeHhWLnZbMF0ud1tpXSkp IDw8IDMyKSB8IGZaRTMyXzY0KFZ4eFYudlswXS53W2ldKSk7CisgICAgZkhJREUoaW50NjRfdCkg bG9tYXNrID0gKCgoZlNFMzJfNjQoMSkpIDw8IDMyKSAtIDEpOworICAgIGZISURFKGludCApIGNv dW50ID0gLSgweDQwICYgVnZWLndbaV0pICsgKFZ2Vi53W2ldICYgMHgzZik7CisgICAgZkhJREUo aW50NjRfdCApIHJlc3VsdCA9IChjb3VudCA9PSAtMHg0MCkgPyAwIDogKCgoY291bnQgPCAwKSA/ ICgoc2hpZnQgPDwgLShjb3VudCkpIHwgKG1hc2sgJiAobG9tYXNrIDw8IC0oY291bnQpKSkpIDog KChzaGlmdCA+PiBjb3VudCkgfCAobWFzayAmIChsb21hc2sgPj4gY291bnQpKSkpKTsKKyAgICBW eHhWLnZbMV0ud1tpXSA9ICgocmVzdWx0ID4+IDMyKSAmIDB4ZmZmZmZmZmYpOworICAgIFZ4eFYu dlswXS53W2ldID0gKHJlc3VsdCAmIDB4ZmZmZmZmZmYpKQorCisjZGVmaW5lIE5FV19OQVJST1dJ TkdfU0hJRlQgMQorCisjaWYgTkVXX05BUlJPV0lOR19TSElGVAorI2RlZmluZSBOQVJST1dJTkdf U0hJRlQoSVRFUlNJWkUsVEFHLERTVE0sRFNUVFlQRSxTUkNUWVBFLFNZTk9QVFMsU0FURlVOQyxS TkRGVU5DLFNIQU1UTUFTSykgXAorSVRFUkFUT1JfSU5TTl9TSElGVF9TTE9UKElURVJTSVpFLFRB RywgXAorIlZkMzIuIiAjRFNUVFlQRSAiPXZhc3IoVnUzMi4iICNTUkNUWVBFICIsVnYzMi4iICNT UkNUWVBFICIsUnQ4KSIgI1NZTk9QVFMsIFwKKyJWZWN0b3Igc2hpZnQgcmlnaHQgYW5kIHNodWZm bGUiLCBcCisgICAgZkhJREUoaW50IClzaGFtdCA9IFJ0ViAmIFNIQU1UTUFTSzsgXAorICAgIERT VE0oMCxWZFYuU1JDVFlQRVtpXSxTQVRGVU5DKFJOREZVTkMoVnZWLlNSQ1RZUEVbaV0sc2hhbXQp ID4+IHNoYW10KSk7IFwKKyAgICBEU1RNKDEsVmRWLlNSQ1RZUEVbaV0sU0FURlVOQyhSTkRGVU5D KFZ1Vi5TUkNUWVBFW2ldLHNoYW10KSA+PiBzaGFtdCkpKQorCisKKworCisKKy8qIFdPUkQgVE8g SEFMRiovCisKK05BUlJPV0lOR19TSElGVCgzMix2YXNyd2gsZlNFVEhBTEYsaCx3LCxmRUNITyxm Vk5PUk9VTkQsMHhGKQorTkFSUk9XSU5HX1NISUZUKDMyLHZhc3J3aHNhdCxmU0VUSEFMRixoLHcs OnNhdCxmVlNBVEgsZlZOT1JPVU5ELDB4RikKK05BUlJPV0lOR19TSElGVCgzMix2YXNyd2hybmRz YXQsZlNFVEhBTEYsaCx3LDpybmQ6c2F0LGZWU0FUSCxmVlJPVU5ELDB4RikKK05BUlJPV0lOR19T SElGVCgzMix2YXNyd3Vocm5kc2F0LGZTRVRIQUxGLHVoLHcsOnJuZDpzYXQsZlZTQVRVSCxmVlJP VU5ELDB4RikKK05BUlJPV0lOR19TSElGVCgzMix2YXNyd3Voc2F0LGZTRVRIQUxGLHVoLHcsOnNh dCxmVlNBVFVILGZWTk9ST1VORCwweEYpCitOQVJST1dJTkdfU0hJRlQoMzIsdmFzcnV3dWhybmRz YXQsZlNFVEhBTEYsdWgsdXcsOnJuZDpzYXQsZlZTQVRVSCxmVlJPVU5ELDB4RikKKworTkFSUk9X SU5HX1NISUZUX05PVjEoMzIsdmFzcnV3dWhzYXQsZlNFVEhBTEYsdWgsdXcsOnNhdCxmVlNBVFVI LGZWTk9ST1VORCwweEYpCitOQVJST1dJTkdfU0hJRlQoMTYsdmFzcmh1YnNhdCxmU0VUQllURSx1 YixoLDpzYXQsZlZTQVRVQixmVk5PUk9VTkQsMHg3KQorTkFSUk9XSU5HX1NISUZUKDE2LHZhc3Jo dWJybmRzYXQsZlNFVEJZVEUsdWIsaCw6cm5kOnNhdCxmVlNBVFVCLGZWUk9VTkQsMHg3KQorTkFS Uk9XSU5HX1NISUZUKDE2LHZhc3JoYnNhdCxmU0VUQllURSxiLGgsOnNhdCxmVlNBVEIsZlZOT1JP VU5ELDB4NykKK05BUlJPV0lOR19TSElGVCgxNix2YXNyaGJybmRzYXQsZlNFVEJZVEUsYixoLDpy bmQ6c2F0LGZWU0FUQixmVlJPVU5ELDB4NykKKworTkFSUk9XSU5HX1NISUZUX05PVjEoMTYsdmFz cnVodWJzYXQsZlNFVEJZVEUsdWIsdWgsOnNhdCxmVlNBVFVCLGZWTk9ST1VORCwweDcpCitOQVJS T1dJTkdfU0hJRlRfTk9WMSgxNix2YXNydWh1YnJuZHNhdCxmU0VUQllURSx1Yix1aCw6cm5kOnNh dCxmVlNBVFVCLGZWUk9VTkQsMHg3KQorCisjZWxzZQorSVRFUkFUT1JfSU5TTjJfU0hJRlRfU0xP VCgzMix2YXNyd2gsIlZkMzI9dmFzcndoKFZ1MzIsVnYzMixSdDgpIiwiVmQzMi5oPXZhc3IoVnUz Mi53LFZ2MzIudyxSdDgpIiwKKyJWZWN0b3IgYXJpdGhtZXRpYyBzaGlmdCByaWdodCB3b3Jkcywg c2h1ZmZsZSBldmVuIGhhbGZ3b3JkcyIsCisgICAgZlNFVEhBTEYoMCxWZFYud1tpXSwgKFZ2Vi53 W2ldID4+IChSdFYgJiAweEYpKSk7CisgICAgZlNFVEhBTEYoMSxWZFYud1tpXSwgKFZ1Vi53W2ld ID4+IChSdFYgJiAweEYpKSkpCisKKworSVRFUkFUT1JfSU5TTjJfU0hJRlRfU0xPVCgzMix2YXNy d2hzYXQsIlZkMzI9dmFzcndoKFZ1MzIsVnYzMixSdDgpOnNhdCIsIlZkMzIuaD12YXNyKFZ1MzIu dyxWdjMyLncsUnQ4KTpzYXQiLAorIlZlY3RvciBhcml0aG1ldGljIHNoaWZ0IHJpZ2h0IHdvcmRz LCBzaHVmZmxlIGV2ZW4gaGFsZndvcmRzIiwKKyAgICBmU0VUSEFMRigwLFZkVi53W2ldLCBmVlNB VEgoVnZWLndbaV0gPj4gKFJ0ViAmIDB4RikpKTsKKyAgICBmU0VUSEFMRigxLFZkVi53W2ldLCBm VlNBVEgoVnVWLndbaV0gPj4gKFJ0ViAmIDB4RikpKSkKKworSVRFUkFUT1JfSU5TTjJfU0hJRlRf U0xPVCgzMix2YXNyd2hybmRzYXQsIlZkMzI9dmFzcndoKFZ1MzIsVnYzMixSdDgpOnJuZDpzYXQi LCJWZDMyLmg9dmFzcihWdTMyLncsVnYzMi53LFJ0OCk6cm5kOnNhdCIsCisiVmVjdG9yIGFyaXRo bWV0aWMgc2hpZnQgcmlnaHQgd29yZHMsIHNodWZmbGUgZXZlbiBoYWxmd29yZHMiLAorICAgIGZI SURFKGludCApIHNoYW10ID0gUnRWICYgMHhGOworICAgIGZTRVRIQUxGKDAsVmRWLndbaV0sIGZW U0FUSCggIChWdlYud1tpXSArIGZCSURJUl9BU0hJRlRMKDEsKHNoYW10LTEpLDRfOCkgKSA+PiBz aGFtdCkpOworICAgIGZTRVRIQUxGKDEsVmRWLndbaV0sIGZWU0FUSCggIChWdVYud1tpXSArIGZC SURJUl9BU0hJRlRMKDEsKHNoYW10LTEpLDRfOCkgKSA+PiBzaGFtdCkpKQorCitJVEVSQVRPUl9J TlNOMl9TSElGVF9TTE9UKDMyLHZhc3J3dWhybmRzYXQsIlZkMzI9dmFzcnd1aChWdTMyLFZ2MzIs UnQ4KTpybmQ6c2F0IiwiVmQzMi51aD12YXNyKFZ1MzIudyxWdjMyLncsUnQ4KTpybmQ6c2F0IiwK KyJWZWN0b3IgYXJpdGhtZXRpYyBzaGlmdCByaWdodCB3b3Jkcywgc2h1ZmZsZSBldmVuIGhhbGZ3 b3JkcyIsCisgICAgZkhJREUoaW50ICkgc2hhbXQgPSBSdFYgJiAweEY7CisgICAgZlNFVEhBTEYo MCxWZFYud1tpXSwgZlZTQVRVSCggIChWdlYud1tpXSArIGZCSURJUl9BU0hJRlRMKDEsKHNoYW10 LTEpLDRfOCkgKSA+PiBzaGFtdCkpOworICAgIGZTRVRIQUxGKDEsVmRWLndbaV0sIGZWU0FUVUgo ICAoVnVWLndbaV0gKyBmQklESVJfQVNISUZUTCgxLChzaGFtdC0xKSw0XzgpICkgPj4gc2hhbXQp KSkKKworSVRFUkFUT1JfSU5TTjJfU0hJRlRfU0xPVCgzMix2YXNyd3Voc2F0LCJWZDMyPXZhc3J3 dWgoVnUzMixWdjMyLFJ0OCk6c2F0IiwiVmQzMi51aD12YXNyKFZ1MzIudyxWdjMyLncsUnQ4KTpz YXQiLAorIlZlY3RvciBhcml0aG1ldGljIHNoaWZ0IHJpZ2h0IHdvcmRzLCBzaHVmZmxlIGV2ZW4g aGFsZndvcmRzIiwKKyAgICBmU0VUSEFMRigwLCBWZFYudXdbaV0sIGZWU0FUVUgoVnZWLndbaV0g Pj4gKFJ0ViAmIDB4RikpKTsKKyAgICBmU0VUSEFMRigxLCBWZFYudXdbaV0sIGZWU0FUVUgoVnVW LndbaV0gPj4gKFJ0ViAmIDB4RikpKSkKKworSVRFUkFUT1JfSU5TTjJfU0hJRlRfU0xPVCgzMix2 YXNydXd1aHJuZHNhdCwiVmQzMj12YXNydXd1aChWdTMyLFZ2MzIsUnQ4KTpybmQ6c2F0IiwiVmQz Mi51aD12YXNyKFZ1MzIudXcsVnYzMi51dyxSdDgpOnJuZDpzYXQiLAorIlZlY3RvciBhcml0aG1l dGljIHNoaWZ0IHJpZ2h0IHdvcmRzLCBzaHVmZmxlIGV2ZW4gaGFsZndvcmRzIiwKKyAgICBmSElE RShpbnQgKSBzaGFtdCA9IFJ0ViAmIDB4RjsKKyAgICBmU0VUSEFMRigwLFZkVi53W2ldLCBmVlNB VFVIKCAgKFZ2Vi51d1tpXSArIGZCSURJUl9BU0hJRlRMKDEsKHNoYW10LTEpLDRfOCkgKSA+PiBz aGFtdCkpOworICAgIGZTRVRIQUxGKDEsVmRWLndbaV0sIGZWU0FUVUgoICAoVnVWLnV3W2ldICsg ZkJJRElSX0FTSElGVEwoMSwoc2hhbXQtMSksNF84KSApID4+IHNoYW10KSkpCisjZW5kaWYKKwor CisKK0lURVJBVE9SX0lOU04yX1NISUZUX1NMT1QoMzIsdnJvdW5kd2gsIlZkMzI9dnJvdW5kd2go VnUzMixWdjMyKTpzYXQiLCJWZDMyLmg9dnJvdW5kKFZ1MzIudyxWdjMyLncpOnNhdCIsCisiVmVj dG9yIHJvdW5kIHdvcmRzIHRvIGhhbHZlcywgc2h1ZmZsZSByZXN1bHRhbnQgaGFsZndvcmRzIiwK KyAgICBmU0VUSEFMRigwLCBWZFYudXdbaV0sIGZWU0FUSCgoVnZWLndbaV0gKyBmQ09OU1RMTCgw eDgwMDApKSA+PiAxNikpOworICAgIGZTRVRIQUxGKDEsIFZkVi51d1tpXSwgZlZTQVRIKChWdVYu d1tpXSArIGZDT05TVExMKDB4ODAwMCkpID4+IDE2KSkpCisKK0lURVJBVE9SX0lOU04yX1NISUZU X1NMT1QoMzIsdnJvdW5kd3VoLCJWZDMyPXZyb3VuZHd1aChWdTMyLFZ2MzIpOnNhdCIsIlZkMzIu dWg9dnJvdW5kKFZ1MzIudyxWdjMyLncpOnNhdCIsCisiVmVjdG9yIHJvdW5kIHdvcmRzIHRvIGhh bHZlcywgc2h1ZmZsZSByZXN1bHRhbnQgaGFsZndvcmRzIiwKKyAgICBmU0VUSEFMRigwLCBWZFYu dXdbaV0sIGZWU0FUVUgoKFZ2Vi53W2ldICsgZkNPTlNUTEwoMHg4MDAwKSkgPj4gMTYpKTsKKyAg ICBmU0VUSEFMRigxLCBWZFYudXdbaV0sIGZWU0FUVUgoKFZ1Vi53W2ldICsgZkNPTlNUTEwoMHg4 MDAwKSkgPj4gMTYpKSkKKworSVRFUkFUT1JfSU5TTjJfU0hJRlRfU0xPVCgzMix2cm91bmR1d3Vo LCJWZDMyPXZyb3VuZHV3dWgoVnUzMixWdjMyKTpzYXQiLCJWZDMyLnVoPXZyb3VuZChWdTMyLnV3 LFZ2MzIudXcpOnNhdCIsCisiVmVjdG9yIHJvdW5kIHdvcmRzIHRvIGhhbHZlcywgc2h1ZmZsZSBy ZXN1bHRhbnQgaGFsZndvcmRzIiwKKyAgICBmU0VUSEFMRigwLCBWZFYudXdbaV0sIGZWU0FUVUgo KFZ2Vi51d1tpXSArIGZDT05TVExMKDB4ODAwMCkpID4+IDE2KSk7CisgICAgZlNFVEhBTEYoMSwg VmRWLnV3W2ldLCBmVlNBVFVIKChWdVYudXdbaV0gKyBmQ09OU1RMTCgweDgwMDApKSA+PiAxNikp KQorCisKKworCisKKy8qIEhBTEYgVE8gQllURSovCisKK0lURVJBVE9SX0lOU04yX1NISUZUX1NM T1QoMTYsdnJvdW5kaGIsIlZkMzI9dnJvdW5kaGIoVnUzMixWdjMyKTpzYXQiLCJWZDMyLmI9dnJv dW5kKFZ1MzIuaCxWdjMyLmgpOnNhdCIsCisiVmVjdG9yIHJvdW5kIHdvcmRzIHRvIGhhbHZlcywg c2h1ZmZsZSByZXN1bHRhbnQgaGFsZndvcmRzIiwKKyAgICBmU0VUQllURSgwLCBWZFYudWhbaV0s IGZWU0FUQigoVnZWLmhbaV0gKyAweDgwKSA+PiA4KSk7CisgICAgZlNFVEJZVEUoMSwgVmRWLnVo W2ldLCBmVlNBVEIoKFZ1Vi5oW2ldICsgMHg4MCkgPj4gOCkpKQorCitJVEVSQVRPUl9JTlNOMl9T SElGVF9TTE9UKDE2LHZyb3VuZGh1YiwiVmQzMj12cm91bmRodWIoVnUzMixWdjMyKTpzYXQiLCJW ZDMyLnViPXZyb3VuZChWdTMyLmgsVnYzMi5oKTpzYXQiLAorIlZlY3RvciByb3VuZCB3b3JkcyB0 byBoYWx2ZXMsIHNodWZmbGUgcmVzdWx0YW50IGhhbGZ3b3JkcyIsCisgICAgZlNFVEJZVEUoMCwg VmRWLnVoW2ldLCBmVlNBVFVCKChWdlYuaFtpXSArIDB4ODApID4+IDgpKTsKKyAgICBmU0VUQllU RSgxLCBWZFYudWhbaV0sIGZWU0FUVUIoKFZ1Vi5oW2ldICsgMHg4MCkgPj4gOCkpKQorCitJVEVS QVRPUl9JTlNOMl9TSElGVF9TTE9UKDE2LHZyb3VuZHVodWIsIlZkMzI9dnJvdW5kdWh1YihWdTMy LFZ2MzIpOnNhdCIsIlZkMzIudWI9dnJvdW5kKFZ1MzIudWgsVnYzMi51aCk6c2F0IiwKKyJWZWN0 b3Igcm91bmQgd29yZHMgdG8gaGFsdmVzLCBzaHVmZmxlIHJlc3VsdGFudCBoYWxmd29yZHMiLAor ICAgIGZTRVRCWVRFKDAsIFZkVi51aFtpXSwgZlZTQVRVQigoVnZWLnVoW2ldICsgMHg4MCkgPj4g OCkpOworICAgIGZTRVRCWVRFKDEsIFZkVi51aFtpXSwgZlZTQVRVQigoVnVWLnVoW2ldICsgMHg4 MCkgPj4gOCkpKQorCisKK0lURVJBVE9SX0lOU04yX1NISUZUX1NMT1QoMzIsdmFzbHdfYWNjLCJW eDMyKz12YXNsdyhWdTMyLFJ0MzIpIiwiVngzMi53Kz12YXNsKFZ1MzIudyxSdDMyKSIsCisiVmVj dG9yIHNoaWZ0IGFkZCB3b3JkIiwKKyAgICBWeFYud1tpXSAgKz0gIChWdVYud1tpXSA8PCAoUnRW ICYgKDMyLTEpKSkpCisKK0lURVJBVE9SX0lOU04yX1NISUZUX1NMT1QoMzIsdmFzcndfYWNjLCJW eDMyKz12YXNydyhWdTMyLFJ0MzIpIiwiVngzMi53Kz12YXNyKFZ1MzIudyxSdDMyKSIsCisiVmVj dG9yIHNoaWZ0IGFkZCB3b3JkIiwKKyAgICBWeFYud1tpXSAgKz0gIChWdVYud1tpXSA+PiAoUnRW ICYgKDMyLTEpKSkpCisKK0lURVJBVE9SX0lOU04yX1NISUZUX1NMT1RfTk9WMSgxNix2YXNsaF9h Y2MsIlZ4MzIrPXZhc2xoKFZ1MzIsUnQzMikiLCJWeDMyLmgrPXZhc2woVnUzMi5oLFJ0MzIpIiwK KyJWZWN0b3Igc2hpZnQgYWRkIGhhbGZ3b3JkIiwKKyAgICBWeFYuaFtpXSAgKz0gIChWdVYuaFtp XSA8PCAoUnRWICYgKDE2LTEpKSkpCisKK0lURVJBVE9SX0lOU04yX1NISUZUX1NMT1RfTk9WMSgx Nix2YXNyaF9hY2MsIlZ4MzIrPXZhc3JoKFZ1MzIsUnQzMikiLCJWeDMyLmgrPXZhc3IoVnUzMi5o LFJ0MzIpIiwKKyJWZWN0b3Igc2hpZnQgYWRkIGhhbGZ3b3JkIiwKKyAgICBWeFYuaFtpXSAgKz0g IChWdVYuaFtpXSA+PiAoUnRWICYgKDE2LTEpKSkpCisKKy8qKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgor KiBNTVZFQ1RPUiBFTEVNRU5ULVdJU0UgQVJJVEhNRVRJQworKgorKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKgorKiBNQUNST1MgR08gSU4gTUFDUk9TLkRFRiBOT1QgSEVS RSEhIQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2RlZmluZSBNTVZFQ19BQlNESUZGKFRZUEUs VFlQRTIsREVTQ1IsIFdJRFRILCBERVNULFNSQylcCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVChX SURUSCwgdmFic2RpZmYjI1RZUEUsICAgICAgICAgICAgICAgICAgICJWZDMyPXZhYnNkaWZmIlRZ UEUyIihWdTMyLFZ2MzIpIiAsIlZkMzIuIiNERVNUIj12YWJzZGlmZihWdTMyLiIjU1JDIixWdjMy LiIjU1JDIikiICwgICAgICJWZWN0b3IgQWJzb2x1dGUgb2YgRGlmZmVyZW5jZSAiREVTQ1IsICAg VmRWLkRFU1RbaV0gPSAoVnVWLlNSQ1tpXSA+IFZ2Vi5TUkNbaV0pID8gKFZ1Vi5TUkNbaV0gLSBW dlYuU1JDW2ldKSA6IChWdlYuU1JDW2ldIC0gVnVWLlNSQ1tpXSkpCisKKyNkZWZpbmUgTU1WRUNf QUREVV9TQVQoVFlQRSxUWVBFMixERVNDUiwgV0lEVEgsIERFU1QsU1JDKVwKK0lURVJBVE9SX0lO U04yX0FOWV9TTE9UKFdJRFRILCB2YWRkIyNUWVBFIyNzYXQsICAgICAgICAgICAgICAgICAgIlZk MzI9dmFkZCJUWVBFMiIoVnUzMixWdjMyKTpzYXQiICwgICAgIlZkMzIuIiNERVNUIj12YWRkKFZ1 MzIuIiNTUkMiLFZ2MzIuIiNTUkMiKTpzYXQiLCAgICAiVmVjdG9yIEFkZCAmIFNhdHVyYXRlICJE RVNDUiwgICAgICAgICAgICBWZFYuREVTVFtpXSA9IGZWVUFERFNBVChXSURUSCwgIFZ1Vi5TUkNb aV0sIFZ2Vi5TUkNbaV0pKVwKK0lURVJBVE9SX0lOU04yX0FOWV9TTE9UX0RPVUJMRV9WRUMoV0lE VEgsIHZhZGQjI1RZUEUjI3NhdF9kdiwgICAgIlZkZDMyPXZhZGQiVFlQRTIiKFZ1dTMyLFZ2djMy KTpzYXQiLCAgIlZkZDMyLiIjREVTVCI9dmFkZChWdXUzMi4iI1NSQyIsVnZ2MzIuIiNTUkMiKTpz YXQiLCAiRG91YmxlIFZlY3RvciBBZGQgJiBTYXR1cmF0ZSAiREVTQ1IsICAgIFZkZFYudlswXS5E RVNUW2ldID0gZlZVQUREU0FUKFdJRFRILCBWdXVWLnZbMF0uU1JDW2ldLFZ2dlYudlswXS5TUkNb aV0pOyBWZGRWLnZbMV0uREVTVFtpXSA9IGZWVUFERFNBVChXSURUSCwgVnV1Vi52WzFdLlNSQ1tp XSxWdnZWLnZbMV0uU1JDW2ldKSlcCitJVEVSQVRPUl9JTlNOMl9BTllfU0xPVChXSURUSCwgdnN1 YiMjVFlQRSMjc2F0LCAgICAgICAgICAgICAgICAgICJWZDMyPXZzdWIiVFlQRTIiKFZ1MzIsVnYz Mik6c2F0IiwgICAgICJWZDMyLiIjREVTVCI9dnN1YihWdTMyLiIjU1JDIixWdjMyLiIjU1JDIik6 c2F0IiwgICAgIlZlY3RvciBBZGQgJiBTYXR1cmF0ZSAiREVTQ1IsICAgICAgICAgICAgVmRWLkRF U1RbaV0gPSBmVlVTVUJTQVQoV0lEVEgsICBWdVYuU1JDW2ldLCBWdlYuU1JDW2ldKSlcCitJVEVS QVRPUl9JTlNOMl9BTllfU0xPVF9ET1VCTEVfVkVDKFdJRFRILCB2c3ViIyNUWVBFIyNzYXRfZHYs ICAgICJWZGQzMj12c3ViIlRZUEUyIihWdXUzMixWdnYzMik6c2F0IiwgICJWZGQzMi4iI0RFU1Qi PXZzdWIoVnV1MzIuIiNTUkMiLFZ2djMyLiIjU1JDIik6c2F0IiwgIkRvdWJsZSBWZWN0b3IgQWRk ICYgU2F0dXJhdGUgIkRFU0NSLCAgICBWZGRWLnZbMF0uREVTVFtpXSA9IGZWVVNVQlNBVChXSURU SCwgVnV1Vi52WzBdLlNSQ1tpXSxWdnZWLnZbMF0uU1JDW2ldKTsgVmRkVi52WzFdLkRFU1RbaV0g PSBmVlVTVUJTQVQoV0lEVEgsIFZ1dVYudlsxXS5TUkNbaV0sVnZ2Vi52WzFdLlNSQ1tpXSkpXAor CisjZGVmaW5lIE1NVkVDX0FERFNfU0FUKFRZUEUsVFlQRTIsREVTQ1IsIFdJRFRILERFU1QsU1JD KVwKK0lURVJBVE9SX0lOU04yX0FOWV9TTE9UKFdJRFRILCB2YWRkIyNUWVBFIyNzYXQsICAgICAg ICAgICAgICAgICAgIlZkMzI9dmFkZCJUWVBFMiIoVnUzMixWdjMyKTpzYXQiICwgICAgIlZkMzIu IiNERVNUIj12YWRkKFZ1MzIuIiNTUkMiLFZ2MzIuIiNTUkMiKTpzYXQiLCAgICAiVmVjdG9yIEFk ZCAmIFNhdHVyYXRlICJERVNDUiwgICAgICAgICAgICBWZFYuREVTVFtpXSA9IGZWU0FERFNBVChX SURUSCwgIFZ1Vi5TUkNbaV0sICBWdlYuU1JDW2ldKSlcCitJVEVSQVRPUl9JTlNOMl9BTllfU0xP VF9ET1VCTEVfVkVDKFdJRFRILCB2YWRkIyNUWVBFIyNzYXRfZHYsICAgICJWZGQzMj12YWRkIlRZ UEUyIihWdXUzMixWdnYzMik6c2F0IiwgICJWZGQzMi4iI0RFU1QiPXZhZGQoVnV1MzIuIiNTUkMi LFZ2djMyLiIjU1JDIik6c2F0IiwgIkRvdWJsZSBWZWN0b3IgQWRkICYgU2F0dXJhdGUgIkRFU0NS LCAgICBWZGRWLnZbMF0uREVTVFtpXSA9IGZWU0FERFNBVChXSURUSCwgVnV1Vi52WzBdLlNSQ1tp XSwgVnZ2Vi52WzBdLlNSQ1tpXSk7IFZkZFYudlsxXS5ERVNUW2ldID0gZlZTQUREU0FUKFdJRFRI LCBWdXVWLnZbMV0uU1JDW2ldLCBWdnZWLnZbMV0uU1JDW2ldKSlcCitJVEVSQVRPUl9JTlNOMl9B TllfU0xPVChXSURUSCwgdnN1YiMjVFlQRSMjc2F0LCAgICAgICAgICAgICAgICAgICJWZDMyPXZz dWIiVFlQRTIiKFZ1MzIsVnYzMik6c2F0IiwgICAgICJWZDMyLiIjREVTVCI9dnN1YihWdTMyLiIj U1JDIixWdjMyLiIjU1JDIik6c2F0IiwgICAgIlZlY3RvciBBZGQgJiBTYXR1cmF0ZSAiREVTQ1Is ICAgICAgICAgICAgVmRWLkRFU1RbaV0gPSBmVlNTVUJTQVQoV0lEVEgsICBWdVYuU1JDW2ldLCAg VnZWLlNSQ1tpXSkpXAorSVRFUkFUT1JfSU5TTjJfQU5ZX1NMT1RfRE9VQkxFX1ZFQyhXSURUSCwg dnN1YiMjVFlQRSMjc2F0X2R2LCAgICAiVmRkMzI9dnN1YiJUWVBFMiIoVnV1MzIsVnZ2MzIpOnNh dCIsICAiVmRkMzIuIiNERVNUIj12c3ViKFZ1dTMyLiIjU1JDIixWdnYzMi4iI1NSQyIpOnNhdCIs ICJEb3VibGUgVmVjdG9yIEFkZCAmIFNhdHVyYXRlICJERVNDUiwgICAgVmRkVi52WzBdLkRFU1Rb aV0gPSBmVlNTVUJTQVQoV0lEVEgsIFZ1dVYudlswXS5TUkNbaV0sIFZ2dlYudlswXS5TUkNbaV0p OyBWZGRWLnZbMV0uREVTVFtpXSA9IGZWU1NVQlNBVChXSURUSCwgVnV1Vi52WzFdLlNSQ1tpXSwg VnZ2Vi52WzFdLlNSQ1tpXSkpXAorCisjZGVmaW5lIE1NVkVDX0FWR1UoVFlQRSxUWVBFMixERVND UiwgV0lEVEgsIERFU1QsU1JDKVwKK0lURVJBVE9SX0lOU04yX0FOWV9TTE9UKFdJRFRILHZhdmcj I1RZUEUsICAgICAgICAgICAgICAgICAgICAgICAgIlZkMzI9dmF2ZyJUWVBFMiIoVnUzMixWdjMy KSIsICAgICAgICAgIlZkMzIuIiNERVNUIj12YXZnKFZ1MzIuIiNTUkMiLFZ2MzIuIiNTUkMiKSIs ICAgICAgICAiVmVjdG9yIEF2ZXJhZ2UgIkRFU0NSLCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgVmRWLkRFU1RbaV0gPSBmVkFWR1UoICAgV0lEVEgsICBWdVYuU1JDW2ldLCBW dlYuU1JDW2ldKSkgXAorSVRFUkFUT1JfSU5TTjJfQU5ZX1NMT1QoV0lEVEgsdmF2ZyMjVFlQRSMj cm5kLCAgICAgICAgICAgICAgICAgICAiVmQzMj12YXZnIlRZUEUyIihWdTMyLFZ2MzIpOnJuZCIs ICAgICAiVmQzMi4iI0RFU1QiPXZhdmcoVnUzMi4iI1NSQyIsVnYzMi4iI1NSQyIpOnJuZCIsICAg ICJWZWN0b3IgQXZlcmFnZSAlIFJvdW5kIkRFU0NSLCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBWZFYuREVTVFtpXSA9IGZWQVZHVVJORChXSURUSCwgIFZ1Vi5TUkNbaV0sIFZ2Vi5TUkNb aV0pKQorCisKKworI2RlZmluZSBNTVZFQ19BVkdTKFRZUEUsVFlQRTIsREVTQ1IsIFdJRFRILCBE RVNULFNSQylcCitJVEVSQVRPUl9JTlNOMl9BTllfU0xPVChXSURUSCx2YXZnIyNUWVBFLCAgICAg ICAgICAgICAgICAgICAgICAgICJWZDMyPXZhdmciVFlQRTIiKFZ1MzIsVnYzMikiLCAgICAgICAg ICAiVmQzMi4iI0RFU1QiPXZhdmcoVnUzMi4iI1NSQyIsVnYzMi4iI1NSQyIpIiwgICAgICAgICAg IlZlY3RvciBBdmVyYWdlICJERVNDUiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFZkVi5ERVNUW2ldICA9IGZWQVZHUyggICAgICAgV0lEVEgsICBWdVYuU1JDW2ldLCBWdlYu U1JDW2ldKSkgXAorSVRFUkFUT1JfSU5TTjJfQU5ZX1NMT1QoV0lEVEgsdmF2ZyMjVFlQRSMjcm5k LCAgICAgICAgICAgICAgICAgICAiVmQzMj12YXZnIlRZUEUyIihWdTMyLFZ2MzIpOnJuZCIsICAg ICAgIlZkMzIuIiNERVNUIj12YXZnKFZ1MzIuIiNTUkMiLFZ2MzIuIiNTUkMiKTpybmQiLCAgICAg ICJWZWN0b3IgQXZlcmFnZSAlIFJvdW5kIkRFU0NSLCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBWZFYuREVTVFtpXSAgPSBmVkFWR1NSTkQoICAgIFdJRFRILCAgVnVWLlNSQ1tpXSwgVnZW LlNSQ1tpXSkpIFwKK0lURVJBVE9SX0lOU04yX0FOWV9TTE9UKFdJRFRILHZuYXZnIyNUWVBFLCAg ICAgICAgICAgICAgICAgICAgICAgIlZkMzI9dm5hdmciVFlQRTIiKFZ1MzIsVnYzMikiLCAgICAg ICAgICJWZDMyLiIjREVTVCI9dm5hdmcoVnUzMi4iI1NSQyIsVnYzMi4iI1NSQyIpIiwgICAgICAg ICAiVmVjdG9yIE5lZ2F0aXZlIEF2ZXJhZ2UgIkRFU0NSLCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgVmRWLkRFU1RbaV0gID0gZlZOQVZHUyggICAgICBXSURUSCwgIFZ1Vi5TUkNbaV0sIFZ2 Vi5TUkNbaV0pKQorCisKKworCisKKworCisjZGVmaW5lIE1NVkVDX0FERFdSQVAoVFlQRSxUWVBF MiwgREVTQ1IsIFdJRFRIICwgREVTVCxTUkMpXAorSVRFUkFUT1JfSU5TTjJfQU5ZX1NMT1QoV0lE VEgsIHZhZGQjI1RZUEUsICAgICAgICAgICAgICAgICAgIlZkMzI9dmFkZCJUWVBFMiIoVnUzMixW djMyKSIgLCAgICAgIlZkMzIuIiNERVNUIj12YWRkKFZ1MzIuIiNTUkMiLFZ2MzIuIiNTUkMiKSIs ICAgICJWZWN0b3IgQWRkICJERVNDUiwgICAgICAgICAgVmRWLkRFU1RbaV0gPSAgVnVWLlNSQ1tp XSArICBWdlYuU1JDW2ldKVwKK0lURVJBVE9SX0lOU04yX0FOWV9TTE9UKFdJRFRILCB2c3ViIyNU WVBFLCAgICAgICAgICAgICAgICAgICJWZDMyPXZzdWIiVFlQRTIiKFZ1MzIsVnYzMikiICwgICAg ICJWZDMyLiIjREVTVCI9dnN1YihWdTMyLiIjU1JDIixWdjMyLiIjU1JDIikiLCAgICAiVmVjdG9y IFN1YiAiREVTQ1IsICAgICAgICAgIFZkVi5ERVNUW2ldID0gIFZ1Vi5TUkNbaV0gLSAgVnZWLlNS Q1tpXSlcCitJVEVSQVRPUl9JTlNOMl9BTllfU0xPVF9ET1VCTEVfVkVDKFdJRFRILCB2YWRkIyNU WVBFIyNfZHYsICAiVmRkMzI9dmFkZCJUWVBFMiIoVnV1MzIsVnZ2MzIpIiAsICAiVmRkMzIuIiNE RVNUIj12YWRkKFZ1dTMyLiIjU1JDIixWdnYzMi4iI1NSQyIpIiwgIkRvdWJsZSBWZWN0b3IgQWRk ICJERVNDUiwgICBWZGRWLnZbMF0uREVTVFtpXSA9IFZ1dVYudlswXS5TUkNbaV0gKyBWdnZWLnZb MF0uU1JDW2ldOyBWZGRWLnZbMV0uREVTVFtpXSA9IFZ1dVYudlsxXS5TUkNbaV0gKyBWdnZWLnZb MV0uU1JDW2ldKVwKK0lURVJBVE9SX0lOU04yX0FOWV9TTE9UX0RPVUJMRV9WRUMoV0lEVEgsIHZz dWIjI1RZUEUjI19kdiwgICJWZGQzMj12c3ViIlRZUEUyIihWdXUzMixWdnYzMikiICwgICJWZGQz Mi4iI0RFU1QiPXZzdWIoVnV1MzIuIiNTUkMiLFZ2djMyLiIjU1JDIikiLCAiRG91YmxlIFZlY3Rv ciBTdWIgIkRFU0NSLCAgIFZkZFYudlswXS5ERVNUW2ldID0gVnV1Vi52WzBdLlNSQ1tpXSAtIFZ2 dlYudlswXS5TUkNbaV07IFZkZFYudlsxXS5ERVNUW2ldID0gVnV1Vi52WzFdLlNSQ1tpXSAtIFZ2 dlYudlsxXS5TUkNbaV0pIFwKKworCisKKworCisvKiBXcmFwcGluZyBBZGRzICovCitNTVZFQ19B RERXUkFQKGIsICAgICJiIiwgICAgIkJ5dGUiLCAgICAgICAgIDgsICAgYiwgYikKK01NVkVDX0FE RFdSQVAoaCwgICAgImgiLCAgICAiSGFsZndvcmQiLCAgICAgMTYsICBoLCBoKQorTU1WRUNfQURE V1JBUCh3LCAgICAidyIsICAgICJXb3JkIiwgICAgICAgICAzMiwgICB3LCAgICB3KQorCisvKiBT YXR1cmF0aW5nIEFkZHMgKi8KK01NVkVDX0FERFVfU0FUKHViLCAidWIiLCAgICAiVW5zaWduZWQg Qnl0ZSIsICAgICAgICA4LCAgIHViLCAgICB1YikKK01NVkVDX0FERFVfU0FUKHVoLCAidWgiLCAg ICAiVW5zaWduZWQgSGFsZndvcmQiLCAgICAxNiwgIHVoLCAgICB1aCkKK01NVkVDX0FERFVfU0FU KHV3LCAidXciLCAgICAiVW5zaWduZWQgd29yZCIsICAgIDMyLCAgdXcsICAgIHV3KQorTU1WRUNf QUREU19TQVQoYiwgICJiIiwgICAgICJieXRlIiwgICAgICAgICAgICAgOCwgIGIsICAgICBiKQor TU1WRUNfQUREU19TQVQoaCwgICJoIiwgICAgICJIYWxmd29yZCIsICAgICAgICAgICAgIDE2LCAg aCwgICAgIGgpCitNTVZFQ19BRERTX1NBVCh3LCAgInciLCAgICAgIldvcmQiLCAgICAgICAgICAg ICAgICAgMzIsICB3LCAgICAgdykKKworCisvKiBBdmVyYWdpbmcgSW5zdHJ1Y3Rpb25zICovCitN TVZFQ19BVkdVKHViLCJ1YiIsICAgICAiVW5zaWduZWQgQnl0ZSIsICAgICA4LCAgIHViLCAgIHVi KQorTU1WRUNfQVZHVSh1aCwidWgiLCAgICAgIlVuc2lnbmVkIEhhbGZ3b3JkIiwgMTYsICB1aCwg ICB1aCkKK01NVkVDX0FWR1VfTk9WMSh1dywidXciLCAgICAgIlVuc2lnbmVkIFdvcmQiLCAgICAg MzIsICB1dywgICB1dykKK01NVkVDX0FWR1NfTk9WMShiLCAgICJiIiwgICAgIkJ5dGUiLCAgICAg ICAgICAgICAgIDgsICAgYiwgICBiKQorTU1WRUNfQVZHUyhoLCAgICJoIiwgICAgIkhhbGZ3b3Jk IiwgICAgICAgICAgMTYsICAgaCwgICBoKQorTU1WRUNfQVZHUyh3LCAgICJ3IiwgICAgIldvcmQi LCAgICAgICAgICAgICAgMzIsICAgdywgICB3KQorCisKKy8qIEFic29sdXRlIERpZmZlcmVuY2Ug Ki8KK01NVkVDX0FCU0RJRkYodWIsInViIiwgICJVbnNpZ25lZCBCeXRlIiwgICAgICAgIDgsICAg dWIsICAgIHViKQorTU1WRUNfQUJTRElGRih1aCwidWgiLCAgIlVuc2lnbmVkIEhhbGZ3b3JkIiwg ICAgMTYsICB1aCwgICAgdWgpCitNTVZFQ19BQlNESUZGKGgsImgiLCAgICAgICAgIkhhbGZ3b3Jk IiwgICAgICAgICAgICAgMTYsICB1aCwgICAgaCkKK01NVkVDX0FCU0RJRkYodywidyIsICAgICAg ICAiV29yZCIsICAgICAgICAgICAgICAgICAzMiwgIHV3LCAgICB3KQorCitJVEVSQVRPUl9JTlNO Ml9BTllfU0xPVCg4LHZuYXZndWIsICJWZDMyPXZuYXZndWIoVnUzMixWdjMyKSIsICJWZDMyLmI9 dm5hdmcoVnUzMi51YixWdjMyLnViKSIsCisiVmVjdG9yIE5lZ2F0aXZlIEF2ZXJhZ2UgVW5zaWdu ZWQgQnl0ZSIsIFZkVi5iW2ldICAgPSBmVk5BVkdVKDgsIFZ1Vi51YltpXSwgVnZWLnViW2ldKSkK KworSVRFUkFUT1JfSU5TTl9BTllfU0xPVCgzMix2YWRkY2FycnlzYXQsIlZkMzIudz12YWRkKFZ1 MzIudyxWdjMyLncsUXM0KTpjYXJyeTpzYXQiLCJhZGQgdy9jYXJyeSBhbmQgc2F0dXJhdGUiLAor VmRWLndbaV0gPSBmVlNBVFcoVnVWLndbaV0rVnZWLndbaV0rZkdFVFFCSVQoUXNWLGkqNCkpKQor CitJVEVSQVRPUl9JTlNOX0FOWV9TTE9UKDMyLHZhZGRjYXJyeSwiVmQzMi53PXZhZGQoVnUzMi53 LFZ2MzIudyxReDQpOmNhcnJ5IiwiYWRkIHcvY2FycnkiLAorVmRWLndbaV0gPSBWdVYud1tpXStW dlYud1tpXStmR0VUUUJJVChReFYsaSo0KTsKK2ZTRVRRQklUUyhReFYsNCwweEYsNCppLC1mQ0FS UllfRlJPTV9BREQzMihWdVYud1tpXSxWdlYud1tpXSxmR0VUUUJJVChReFYsaSo0KSkpKQorCitJ VEVSQVRPUl9JTlNOX0FOWV9TTE9UKDMyLHZzdWJjYXJyeSwiVmQzMi53PXZzdWIoVnUzMi53LFZ2 MzIudyxReDQpOmNhcnJ5IiwiYWRkIHcvY2FycnkiLAorVmRWLndbaV0gPSBWdVYud1tpXSt+VnZW LndbaV0rZkdFVFFCSVQoUXhWLGkqNCk7CitmU0VUUUJJVFMoUXhWLDQsMHhGLDQqaSwtZkNBUlJZ X0ZST01fQUREMzIoVnVWLndbaV0sflZ2Vi53W2ldLGZHRVRRQklUKFF4VixpKjQpKSkpCisKK0lU RVJBVE9SX0lOU05fQU5ZX1NMT1QoMzIsdmFkZGNhcnJ5bywiVmQzMi53LFFlND12YWRkKFZ1MzIu dyxWdjMyLncpOmNhcnJ5IiwiYWRkIHcvY2Fycnkgb3V0LW9ubHkiLAorVmRWLndbaV0gPSBWdVYu d1tpXStWdlYud1tpXTsKK2ZTRVRRQklUUyhRZVYsNCwweEYsNCppLC1mQ0FSUllfRlJPTV9BREQz MihWdVYud1tpXSxWdlYud1tpXSwwKSkpCisKK0lURVJBVE9SX0lOU05fQU5ZX1NMT1QoMzIsdnN1 YmNhcnJ5bywiVmQzMi53LFFlND12c3ViKFZ1MzIudyxWdjMyLncpOmNhcnJ5Iiwic3VidHJhY3Qg dy9jYXJyeSBvdXQtb25seSIsCitWZFYud1tpXSA9IFZ1Vi53W2ldK35WdlYud1tpXSsxOworZlNF VFFCSVRTKFFlViw0LDB4Riw0KmksLWZDQVJSWV9GUk9NX0FERDMyKFZ1Vi53W2ldLH5WdlYud1tp XSwxKSkpCisKKworSVRFUkFUT1JfSU5TTl9BTllfU0xPVCgzMix2c2F0ZHcsIlZkMzIudz12c2F0 ZHcoVnUzMi53LFZ2MzIudykiLCJTYXR1cmF0ZSBmcm9tIDY0LWJpdHMgKGhpZ2hlciAzMi1iaXRz IGNvbWUgZnJvbSBmaXJzdCB2ZWN0b3IpIHRvIDMyLWJpdHMiLFZkVi53W2ldID0gZlZTQVREVyhW dVYud1tpXSxWdlYud1tpXSkpCisKKworI2RlZmluZSBNTVZFQ19BRERTQVRfTUlYKFRBR0VORCxT QVRGLFdJRFRILERFU1QsU1JDMSxTUkMyKVwKK0lURVJBVE9SX0lOU05fQU5ZX1NMT1QoV0lEVEgs IHZhZGQjI1RBR0VORCwiVmQzMi4iI0RFU1QiPXZhZGQoVnUzMi4iI1NSQzEiLFZ2MzIuIiNTUkMy Iik6c2F0IiwgICAgIlZlY3RvciBBZGQgbWl4ZWQiLCBWZFYuREVTVFtpXSA9ICBTQVRGKFZ1Vi5T UkMxW2ldICsgIFZ2Vi5TUkMyW2ldKSlcCitJVEVSQVRPUl9JTlNOX0FOWV9TTE9UKFdJRFRILCB2 c3ViIyNUQUdFTkQsIlZkMzIuIiNERVNUIj12c3ViKFZ1MzIuIiNTUkMxIixWdjMyLiIjU1JDMiIp OnNhdCIsICAgICJWZWN0b3IgU3ViIG1peGVkIiwgVmRWLkRFU1RbaV0gPSAgU0FURihWdVYuU1JD MVtpXSAtICBWdlYuU1JDMltpXSkpXAorCitNTVZFQ19BRERTQVRfTUlYKHVidWJiX3NhdCxmVlNB VFVCLDgsdWIsdWIsYikKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogICBXSURF TklORworKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisKKworSVRFUkFUT1JfSU5T TjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygxNix2YWRkdWJoLCJWZGQzMj12YWRkdWIoVnUzMixWdjMy KSIsIlZkZDMyLmg9dmFkZChWdTMyLnViLFZ2MzIudWIpIiwKKyJWZWN0b3IgYWRkaXRpb24gd2l0 aCB3aWRlbiBpbnRvIHR3byB2ZWN0b3JzIiwKKyAgICBWZGRWLnZbMF0uaFtpXSA9IGZaRThfMTYo ZkdFVFVCWVRFKDAsIFZ1Vi51aFtpXSkpICsgZlpFOF8xNihmR0VUVUJZVEUoMCwgVnZWLnVoW2ld KSk7CisgICAgVmRkVi52WzFdLmhbaV0gPSBmWkU4XzE2KGZHRVRVQllURSgxLCBWdVYudWhbaV0p KSArIGZaRThfMTYoZkdFVFVCWVRFKDEsIFZ2Vi51aFtpXSkpKQorCitJVEVSQVRPUl9JTlNOMl9N UFlfU0xPVF9ET1VCTEVfVkVDKDE2LHZzdWJ1YmgsIlZkZDMyPXZzdWJ1YihWdTMyLFZ2MzIpIiwi VmRkMzIuaD12c3ViKFZ1MzIudWIsVnYzMi51YikiLAorIlZlY3RvciBzdWJ0cmFjdGlvbiB3aXRo IHdpZGVuIGludG8gdHdvIHZlY3RvcnMiLAorICAgIFZkZFYudlswXS5oW2ldID0gZlpFOF8xNihm R0VUVUJZVEUoMCwgVnVWLnVoW2ldKSkgLSBmWkU4XzE2KGZHRVRVQllURSgwLCBWdlYudWhbaV0p KTsKKyAgICBWZGRWLnZbMV0uaFtpXSA9IGZaRThfMTYoZkdFVFVCWVRFKDEsIFZ1Vi51aFtpXSkp IC0gZlpFOF8xNihmR0VUVUJZVEUoMSwgVnZWLnVoW2ldKSkpCisKKworCitJVEVSQVRPUl9JTlNO Ml9NUFlfU0xPVF9ET1VCTEVfVkVDKDMyLHZhZGRodywiVmRkMzI9dmFkZGgoVnUzMixWdjMyKSIs IlZkZDMyLnc9dmFkZChWdTMyLmgsVnYzMi5oKSIsCisiVmVjdG9yIGFkZGl0aW9uIHdpdGggd2lk ZW4gaW50byB0d28gdmVjdG9ycyIsCisgICAgVmRkVi52WzBdLndbaV0gPSBmR0VUSEFMRigwLCBW dVYud1tpXSkgKyBmR0VUSEFMRigwLCBWdlYud1tpXSk7CisgICAgVmRkVi52WzFdLndbaV0gPSBm R0VUSEFMRigxLCBWdVYud1tpXSkgKyBmR0VUSEFMRigxLCBWdlYud1tpXSkpCisKK0lURVJBVE9S X0lOU04yX01QWV9TTE9UX0RPVUJMRV9WRUMoMzIsdnN1Ymh3LCJWZGQzMj12c3ViaChWdTMyLFZ2 MzIpIiwiVmRkMzIudz12c3ViKFZ1MzIuaCxWdjMyLmgpIiwKKyJWZWN0b3Igc3VidHJhY3Rpb24g d2l0aCB3aWRlbiBpbnRvIHR3byB2ZWN0b3JzIiwKKyAgICBWZGRWLnZbMF0ud1tpXSA9IGZHRVRI QUxGKDAsIFZ1Vi53W2ldKSAtIGZHRVRIQUxGKDAsIFZ2Vi53W2ldKTsKKyAgICBWZGRWLnZbMV0u d1tpXSA9IGZHRVRIQUxGKDEsIFZ1Vi53W2ldKSAtIGZHRVRIQUxGKDEsIFZ2Vi53W2ldKSkKKwor CitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDKDMyLHZhZGR1aHcsIlZkZDMyPXZh ZGR1aChWdTMyLFZ2MzIpIiwiVmRkMzIudz12YWRkKFZ1MzIudWgsVnYzMi51aCkiLAorIlZlY3Rv ciBhZGRpdGlvbiB3aXRoIHdpZGVuIGludG8gdHdvIHZlY3RvcnMiLAorICAgIFZkZFYudlswXS53 W2ldID0gZlpFMTZfMzIoZkdFVFVIQUxGKDAsIFZ1Vi51d1tpXSkpICsgZlpFMTZfMzIoZkdFVFVI QUxGKDAsIFZ2Vi51d1tpXSkpOworICAgIFZkZFYudlsxXS53W2ldID0gZlpFMTZfMzIoZkdFVFVI QUxGKDEsIFZ1Vi51d1tpXSkpICsgZlpFMTZfMzIoZkdFVFVIQUxGKDEsIFZ2Vi51d1tpXSkpKQor CitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDKDMyLHZzdWJ1aHcsIlZkZDMyPXZz dWJ1aChWdTMyLFZ2MzIpIiwiVmRkMzIudz12c3ViKFZ1MzIudWgsVnYzMi51aCkiLAorIlZlY3Rv ciBzdWJ0cmFjdGlvbiB3aXRoIHdpZGVuIGludG8gdHdvIHZlY3RvcnMiLAorICAgIFZkZFYudlsw XS53W2ldID0gZlpFMTZfMzIoZkdFVFVIQUxGKDAsIFZ1Vi51d1tpXSkpIC0gZlpFMTZfMzIoZkdF VFVIQUxGKDAsIFZ2Vi51d1tpXSkpOworICAgIFZkZFYudlsxXS53W2ldID0gZlpFMTZfMzIoZkdF VFVIQUxGKDEsIFZ1Vi51d1tpXSkpIC0gZlpFMTZfMzIoZkdFVFVIQUxGKDEsIFZ2Vi51d1tpXSkp KQorCisKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygzMix2YWRkaHdfYWNj LCJWeHgzMis9dmFkZGgoVnUzMixWdjMyKSIsIlZ4eDMyLncrPXZhZGQoVnUzMi5oLFZ2MzIuaCki LAorIlZlY3RvciBhZGRpdGlvbiB3aXRoIHdpZGVuIGludG8gdHdvIHZlY3RvcnMiLAorICAgIFZ4 eFYudlswXS53W2ldICs9IGZHRVRIQUxGKDAsIFZ1Vi53W2ldKSArIGZHRVRIQUxGKDAsIFZ2Vi53 W2ldKTsKKyAgICBWeHhWLnZbMV0ud1tpXSArPSBmR0VUSEFMRigxLCBWdVYud1tpXSkgKyBmR0VU SEFMRigxLCBWdlYud1tpXSkpCisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0RPVUJMRV9WRUMo MzIsdmFkZHVod19hY2MsIlZ4eDMyKz12YWRkdWgoVnUzMixWdjMyKSIsIlZ4eDMyLncrPXZhZGQo VnUzMi51aCxWdjMyLnVoKSIsCisiVmVjdG9yIGFkZGl0aW9uIHdpdGggd2lkZW4gaW50byB0d28g dmVjdG9ycyIsCisgICAgVnh4Vi52WzBdLndbaV0gKz0gZkdFVFVIQUxGKDAsIFZ1Vi53W2ldKSAr IGZHRVRVSEFMRigwLCBWdlYud1tpXSk7CisgICAgVnh4Vi52WzFdLndbaV0gKz0gZkdFVFVIQUxG KDEsIFZ1Vi53W2ldKSArIGZHRVRVSEFMRigxLCBWdlYud1tpXSkpCisKK0lURVJBVE9SX0lOU04y X01QWV9TTE9UX0RPVUJMRV9WRUMoMTYsdmFkZHViaF9hY2MsIlZ4eDMyKz12YWRkdWIoVnUzMixW djMyKSIsIlZ4eDMyLmgrPXZhZGQoVnUzMi51YixWdjMyLnViKSIsCisiVmVjdG9yIGFkZGl0aW9u IHdpdGggd2lkZW4gaW50byB0d28gdmVjdG9ycyIsCisgICAgVnh4Vi52WzBdLmhbaV0gKz0gZkdF VFVCWVRFKDAsIFZ1Vi5oW2ldKSArIGZHRVRVQllURSgwLCBWdlYuaFtpXSk7CisgICAgVnh4Vi52 WzFdLmhbaV0gKz0gZkdFVFVCWVRFKDEsIFZ1Vi5oW2ldKSArIGZHRVRVQllURSgxLCBWdlYuaFtp XSkpCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogICBDb25kaXRpb25hbAor KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2RlZmluZSBDT05EQUREU1VCKFdJRFRI LFRBR0VORCxMSFNZTixSSFNZTixERVNDUixMSEJFSCxSSEJFSCkgXAorSVRFUkFUT1JfSU5TTjJf QU5ZX1NMT1QoV0lEVEgsdmFkZCMjVEFHRU5EIyNxLCJpZiAoUXY0LiIjVEFHRU5EIikgIkxIU1lO Iis9IlJIU1lOLCJpZiAoUXY0KSAiTEhTWU4iKz0iUkhTWU4sREVTQ1IsTEhCRUg9ZkNPTkRNQVNL IyNXSURUSChRdlYsaSxMSEJFSCtSSEJFSCxMSEJFSCkpIFwKK0lURVJBVE9SX0lOU04yX0FOWV9T TE9UKFdJRFRILHZzdWIjI1RBR0VORCMjcSwiaWYgKFF2NC4iI1RBR0VORCIpICJMSFNZTiItPSJS SFNZTiwiaWYgKFF2NCkgIkxIU1lOIi09IlJIU1lOLERFU0NSLExIQkVIPWZDT05ETUFTSyMjV0lE VEgoUXZWLGksTEhCRUgtUkhCRUgsTEhCRUgpKSBcCitJVEVSQVRPUl9JTlNOMl9BTllfU0xPVChX SURUSCx2YWRkIyNUQUdFTkQjI25xLCJpZiAoIVF2NC4iI1RBR0VORCIpICJMSFNZTiIrPSJSSFNZ TiwiaWYgKCFRdjQpICJMSFNZTiIrPSJSSFNZTixERVNDUixMSEJFSD1mQ09ORE1BU0sjI1dJRFRI KFF2VixpLExIQkVILExIQkVIK1JIQkVIKSkgXAorSVRFUkFUT1JfSU5TTjJfQU5ZX1NMT1QoV0lE VEgsdnN1YiMjVEFHRU5EIyNucSwiaWYgKCFRdjQuIiNUQUdFTkQiKSAiTEhTWU4iLT0iUkhTWU4s ImlmICghUXY0KSAiTEhTWU4iLT0iUkhTWU4sREVTQ1IsTEhCRUg9ZkNPTkRNQVNLIyNXSURUSChR dlYsaSxMSEJFSCxMSEJFSC1SSEJFSCkpIFwKKworQ09OREFERFNVQig4LGIsIlZ4MzIuYiIsIlZ1 MzIuYiIsIkNvbmRpdGlvbmFsIGFkZC9zdWIgQnl0ZSIsVnhWLnViW2ldLFZ1Vi51YltpXSkKK0NP TkRBRERTVUIoMTYsaCwiVngzMi5oIiwiVnUzMi5oIiwiQ29uZGl0aW9uYWwgYWRkL3N1YiBIYWxm IixWeFYuaFtpXSxWdVYuaFtpXSkKK0NPTkRBRERTVUIoMzIsdywiVngzMi53IiwiVnUzMi53Iiwi Q29uZGl0aW9uYWwgYWRkL3N1YiBXb3JkIixWeFYud1tpXSxWdVYud1tpXSkKKworLyoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgQUJTT0xVVEUg VkFMVUVTCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKi8KKy8vIFY2NQorSVRFUkFUT1JfSU5TTjJfQU5ZX1NMT1RfTk9WMSg4LHZhYnNiLCAgICAg ICAgIlZkMzI9dmFic2IoVnUzMikiLCAgICAgIlZkMzIuYj12YWJzKFZ1MzIuYikiLCAgICAgIlZl Y3RvciBhYnNvbHV0ZSB2YWx1ZSBvZiBieXRlcyIsICAgIFZkVi5iW2ldICA9ICBmQUJTKFZ1Vi5i W2ldKSkKK0lURVJBVE9SX0lOU04yX0FOWV9TTE9UX05PVjEoOCx2YWJzYl9zYXQsICAgICJWZDMy PXZhYnNiKFZ1MzIpOnNhdCIsICJWZDMyLmI9dmFicyhWdTMyLmIpOnNhdCIsICJWZWN0b3IgYWJz b2x1dGUgdmFsdWUgb2YgYnl0ZXMiLCAgICBWZFYuYltpXSAgPSAgZlZTQVRCKGZBQlMoZlNFOF8x NihWdVYuYltpXSkpKSkKKworCitJVEVSQVRPUl9JTlNOMl9BTllfU0xPVCgxNix2YWJzaCwgICAg ICAgICJWZDMyPXZhYnNoKFZ1MzIpIiwgICAgICJWZDMyLmg9dmFicyhWdTMyLmgpIiwgICAgICJW ZWN0b3IgYWJzb2x1dGUgdmFsdWUgb2YgaGFsZndvcmRzIiwgICAgVmRWLmhbaV0gID0gIGZBQlMo VnVWLmhbaV0pKQorSVRFUkFUT1JfSU5TTjJfQU5ZX1NMT1QoMTYsdmFic2hfc2F0LCAgICAiVmQz Mj12YWJzaChWdTMyKTpzYXQiLCAiVmQzMi5oPXZhYnMoVnUzMi5oKTpzYXQiLCAiVmVjdG9yIGFi c29sdXRlIHZhbHVlIG9mIGhhbGZ3b3JkcyIsICAgIFZkVi5oW2ldICA9ICBmVlNBVEgoZkFCUyhm U0UxNl8zMihWdVYuaFtpXSkpKSkKK0lURVJBVE9SX0lOU04yX0FOWV9TTE9UKDMyLHZhYnN3LCAg ICAgICAgIlZkMzI9dmFic3coVnUzMikiLCAgICAgIlZkMzIudz12YWJzKFZ1MzIudykiLCAgICAg IlZlY3RvciBhYnNvbHV0ZSB2YWx1ZSBvZiB3b3JkcyIsICAgICAgICBWZFYud1tpXSAgPSAgZkFC UyhWdVYud1tpXSkpCitJVEVSQVRPUl9JTlNOMl9BTllfU0xPVCgzMix2YWJzd19zYXQsICAgICJW ZDMyPXZhYnN3KFZ1MzIpOnNhdCIsICJWZDMyLnc9dmFicyhWdTMyLncpOnNhdCIsICJWZWN0b3Ig YWJzb2x1dGUgdmFsdWUgb2Ygd29yZHMiLCAgICAgICAgVmRWLndbaV0gID0gIGZWU0FUVyhmQUJT KGZTRTMyXzY0KFZ1Vi53W2ldKSkpKQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogTU1WRUNU T1IgTVVMVElQTElDQVRJT05TCisgKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworLyogQnl0ZSBieSBC eXRlICovCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDKDE2LHZtcHlidiwiVmRk MzI9dm1weWIoVnUzMixWdjMyKSIsIlZkZDMyLmg9dm1weShWdTMyLmIsVnYzMi5iKSIsCisiVmVj dG9yIGFic29sdXRlIHZhbHVlIG9mIHdvcmRzIiwKKyAgICBWZGRWLnZbMF0uaFtpXSA9ICBmTVBZ OFNTKGZHRVRCWVRFKDAsIFZ1Vi5oW2ldKSwgZkdFVEJZVEUoMCwgVnZWLmhbaV0pKTsKKyAgICBW ZGRWLnZbMV0uaFtpXSA9ICBmTVBZOFNTKGZHRVRCWVRFKDEsIFZ1Vi5oW2ldKSwgZkdFVEJZVEUo MSwgVnZWLmhbaV0pKSkKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygxNix2 bXB5YnZfYWNjLCJWeHgzMis9dm1weWIoVnUzMixWdjMyKSIsIlZ4eDMyLmgrPXZtcHkoVnUzMi5i LFZ2MzIuYikiLAorIlZlY3RvciBhYnNvbHV0ZSB2YWx1ZSBvZiB3b3JkcyIsCisgICAgVnh4Vi52 WzBdLmhbaV0gKz0gIGZNUFk4U1MoZkdFVEJZVEUoMCwgVnVWLmhbaV0pLCBmR0VUQllURSgwLCBW dlYuaFtpXSkpOworICAgIFZ4eFYudlsxXS5oW2ldICs9ICBmTVBZOFNTKGZHRVRCWVRFKDEsIFZ1 Vi5oW2ldKSwgZkdFVEJZVEUoMSwgVnZWLmhbaV0pKSkKKworCitJVEVSQVRPUl9JTlNOMl9NUFlf U0xPVF9ET1VCTEVfVkVDKDE2LHZtcHl1YnYsIlZkZDMyPXZtcHl1YihWdTMyLFZ2MzIpIiwiVmRk MzIudWg9dm1weShWdTMyLnViLFZ2MzIudWIpIiwKKyJWZWN0b3IgYWJzb2x1dGUgdmFsdWUgb2Yg d29yZHMiLAorICAgIFZkZFYudlswXS51aFtpXSA9ICBmTVBZOFVVKGZHRVRVQllURSgwLCBWdVYu dWhbaV0pLCBmR0VUVUJZVEUoMCwgVnZWLnVoW2ldKSApOworICAgIFZkZFYudlsxXS51aFtpXSA9 ICBmTVBZOFVVKGZHRVRVQllURSgxLCBWdVYudWhbaV0pLCBmR0VUVUJZVEUoMSwgVnZWLnVoW2ld KSApKQorCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDKDE2LHZtcHl1YnZfYWNj LCJWeHgzMis9dm1weXViKFZ1MzIsVnYzMikiLCJWeHgzMi51aCs9dm1weShWdTMyLnViLFZ2MzIu dWIpIiwKKyJWZWN0b3IgYWJzb2x1dGUgdmFsdWUgb2Ygd29yZHMiLAorICAgIFZ4eFYudlswXS51 aFtpXSArPSAgZk1QWThVVShmR0VUVUJZVEUoMCwgVnVWLnVoW2ldKSwgZkdFVFVCWVRFKDAsIFZ2 Vi51aFtpXSkgKTsKKyAgICBWeHhWLnZbMV0udWhbaV0gKz0gIGZNUFk4VVUoZkdFVFVCWVRFKDEs IFZ1Vi51aFtpXSksIGZHRVRVQllURSgxLCBWdlYudWhbaV0pICkpCisKKworCisKKworCitJVEVS QVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDKDE2LHZtcHlidXN2LCJWZGQzMj12bXB5YnVz KFZ1MzIsVnYzMikiLCJWZGQzMi5oPXZtcHkoVnUzMi51YixWdjMyLmIpIiwKKyJWZWN0b3IgYWJz b2x1dGUgdmFsdWUgb2Ygd29yZHMiLAorICAgIFZkZFYudlswXS5oW2ldICA9IGZNUFk4VVMoZkdF VFVCWVRFKDAsIFZ1Vi51aFtpXSksIGZHRVRCWVRFKDAsIFZ2Vi5oW2ldKSk7CisgICAgVmRkVi52 WzFdLmhbaV0gID0gZk1QWThVUyhmR0VUVUJZVEUoMSwgVnVWLnVoW2ldKSwgZkdFVEJZVEUoMSwg VnZWLmhbaV0pKSkKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygxNix2bXB5 YnVzdl9hY2MsIlZ4eDMyKz12bXB5YnVzKFZ1MzIsVnYzMikiLCJWeHgzMi5oKz12bXB5KFZ1MzIu dWIsVnYzMi5iKSIsCisiVmVjdG9yIGFic29sdXRlIHZhbHVlIG9mIHdvcmRzIiwKKyAgICBWeHhW LnZbMF0uaFtpXSAgKz0gZk1QWThVUyhmR0VUVUJZVEUoMCwgVnVWLnVoW2ldKSwgZkdFVEJZVEUo MCwgVnZWLmhbaV0pKTsKKyAgICBWeHhWLnZbMV0uaFtpXSAgKz0gZk1QWThVUyhmR0VUVUJZVEUo MSwgVnVWLnVoW2ldKSwgZkdFVEJZVEUoMSwgVnZWLmhbaV0pKSkKKworCisKKworSVRFUkFUT1Jf SU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygxNix2bXBhYnVzdiwiVmRkMzI9dm1wYWJ1cyhWdXUz MixWdnYzMikiLCJWZGQzMi5oPXZtcGEoVnV1MzIudWIsVnZ2MzIuYikiLAorIlZlcnRpY2FsIEJ5 dGUgTXVsdGlwbHkiLAorICAgIFZkZFYudlswXS5oW2ldID0gZk1QWThVUyhmR0VUVUJZVEUoMCwg VnV1Vi52WzBdLnVoW2ldKSwgZkdFVEJZVEUoMCwgVnZ2Vi52WzBdLnVoW2ldKSkgKyBmTVBZOFVT KGZHRVRVQllURSgwLCBWdXVWLnZbMV0udWhbaV0pLCBmR0VUQllURSgwLCBWdnZWLnZbMV0udWhb aV0pKTsKKyAgICBWZGRWLnZbMV0uaFtpXSA9IGZNUFk4VVMoZkdFVFVCWVRFKDEsIFZ1dVYudlsw XS51aFtpXSksIGZHRVRCWVRFKDEsIFZ2dlYudlswXS51aFtpXSkpICsgZk1QWThVUyhmR0VUVUJZ VEUoMSwgVnV1Vi52WzFdLnVoW2ldKSwgZkdFVEJZVEUoMSwgVnZ2Vi52WzFdLnVoW2ldKSkpCisK K0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0RPVUJMRV9WRUMoMTYsdm1wYWJ1dXYsIlZkZDMyPXZt cGFidXUoVnV1MzIsVnZ2MzIpIiwiVmRkMzIuaD12bXBhKFZ1dTMyLnViLFZ2djMyLnViKSIsCisi VmVydGljYWwgQnl0ZSBNdWx0aXBseSIsCisgICAgVmRkVi52WzBdLmhbaV0gPSBmTVBZOFVVKGZH RVRVQllURSgwLCBWdXVWLnZbMF0udWhbaV0pLCBmR0VUVUJZVEUoMCwgVnZ2Vi52WzBdLnVoW2ld KSkgKyBmTVBZOFVVKGZHRVRVQllURSgwLCBWdXVWLnZbMV0udWhbaV0pLCBmR0VUVUJZVEUoMCwg VnZ2Vi52WzFdLnVoW2ldKSk7CisgICAgVmRkVi52WzFdLmhbaV0gPSBmTVBZOFVVKGZHRVRVQllU RSgxLCBWdXVWLnZbMF0udWhbaV0pLCBmR0VUVUJZVEUoMSwgVnZ2Vi52WzBdLnVoW2ldKSkgKyBm TVBZOFVVKGZHRVRVQllURSgxLCBWdXVWLnZbMV0udWhbaV0pLCBmR0VUVUJZVEUoMSwgVnZ2Vi52 WzFdLnVoW2ldKSkpCisKKworCisKKworCisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0RPVUJM RV9WRUMoMzIsdm1weWh2LCJWZGQzMj12bXB5aChWdTMyLFZ2MzIpIiwiVmRkMzIudz12bXB5KFZ1 MzIuaCxWdjMyLmgpIiwKKyJWZWN0b3IgYnkgVmVjdG9yIEhhbGZ3b3JkIE11bHRpcGx5IiwKKyAg ICBWZGRWLnZbMF0ud1tpXSA9IGZNUFkxNlNTKGZHRVRIQUxGKDAsIFZ1Vi53W2ldKSwgZkdFVEhB TEYoMCwgVnZWLndbaV0pKTsKKyAgICBWZGRWLnZbMV0ud1tpXSA9IGZNUFkxNlNTKGZHRVRIQUxG KDEsIFZ1Vi53W2ldKSwgZkdFVEhBTEYoMSwgVnZWLndbaV0pKSkKKworSVRFUkFUT1JfSU5TTjJf TVBZX1NMT1RfRE9VQkxFX1ZFQygzMix2bXB5aHZfYWNjLCJWeHgzMis9dm1weWgoVnUzMixWdjMy KSIsIlZ4eDMyLncrPXZtcHkoVnUzMi5oLFZ2MzIuaCkiLAorIlZlY3RvciBieSBWZWN0b3IgSGFs ZndvcmQgTXVsdGlwbHkiLAorICAgIFZ4eFYudlswXS53W2ldICs9IGZNUFkxNlNTKGZHRVRIQUxG KDAsIFZ1Vi53W2ldKSwgZkdFVEhBTEYoMCwgVnZWLndbaV0pKTsKKyAgICBWeHhWLnZbMV0ud1tp XSArPSBmTVBZMTZTUyhmR0VUSEFMRigxLCBWdVYud1tpXSksIGZHRVRIQUxGKDEsIFZ2Vi53W2ld KSkpCisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0RPVUJMRV9WRUMoMzIsdm1weXVodiwiVmRk MzI9dm1weXVoKFZ1MzIsVnYzMikiLCJWZGQzMi51dz12bXB5KFZ1MzIudWgsVnYzMi51aCkiLAor IlZlY3RvciBieSBWZWN0b3IgVW5zaWduZWQgSGFsZndvcmQgTXVsdGlwbHkiLAorICAgIFZkZFYu dlswXS51d1tpXSA9IGZNUFkxNlVVKGZHRVRVSEFMRigwLCBWdVYudXdbaV0pLCBmR0VUVUhBTEYo MCwgVnZWLnV3W2ldKSk7CisgICAgVmRkVi52WzFdLnV3W2ldID0gZk1QWTE2VVUoZkdFVFVIQUxG KDEsIFZ1Vi51d1tpXSksIGZHRVRVSEFMRigxLCBWdlYudXdbaV0pKSkKKworSVRFUkFUT1JfSU5T TjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygzMix2bXB5dWh2X2FjYywiVnh4MzIrPXZtcHl1aChWdTMy LFZ2MzIpIiwiVnh4MzIudXcrPXZtcHkoVnUzMi51aCxWdjMyLnVoKSIsCisiVmVjdG9yIGJ5IFZl Y3RvciBVbnNpZ25lZCBIYWxmd29yZCBNdWx0aXBseSIsCisgICAgVnh4Vi52WzBdLnV3W2ldICs9 IGZNUFkxNlVVKGZHRVRVSEFMRigwLCBWdVYudXdbaV0pLCBmR0VUVUhBTEYoMCwgVnZWLnV3W2ld KSk7CisgICAgVnh4Vi52WzFdLnV3W2ldICs9IGZNUFkxNlVVKGZHRVRVSEFMRigxLCBWdVYudXdb aV0pLCBmR0VUVUhBTEYoMSwgVnZWLnV3W2ldKSkpCisKKworCisvKiBWZWN0b3IgYnkgVmVjdG9y ICovCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDKDE2LHZtcHlodnNycywiVmQz Mj12bXB5aChWdTMyLFZ2MzIpOjw8MTpybmQ6c2F0IiwiVmQzMi5oPXZtcHkoVnUzMi5oLFZ2MzIu aCk6PDwxOnJuZDpzYXQiLAorIlZlY3RvciBoYWxmd29yZCBtdWx0aXBseSB3aXRoIHJvdW5kLCBz aGlmdCwgYW5kIHNhdDE2IiwKKyAgICBWZFYuaFtpXSA9IGZWU0FUSChmR0VUSEFMRigxLGZWU0FU KGZST1VORCgoZk1QWTE2U1MoVnVWLmhbaV0sVnZWLmhbaV0gICAgKTw8MSkpKSkpKQorCisKKwor CisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0RPVUJMRV9WRUMoMzIsdm1weWh1cywgIlZkZDMy PXZtcHlodXMoVnUzMixWdjMyKSIsIlZkZDMyLnc9dm1weShWdTMyLmgsVnYzMi51aCkiLAorIlZl Y3RvciBieSBWZWN0b3IgSGFsZndvcmQgTXVsdGlwbHkiLAorICAgIFZkZFYudlswXS53W2ldID0g Zk1QWTE2U1UoZkdFVEhBTEYoMCwgVnVWLndbaV0pLCBmR0VUVUhBTEYoMCwgVnZWLnV3W2ldKSk7 CisgICAgVmRkVi52WzFdLndbaV0gPSBmTVBZMTZTVShmR0VUSEFMRigxLCBWdVYud1tpXSksIGZH RVRVSEFMRigxLCBWdlYudXdbaV0pKSkKKworCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VC TEVfVkVDKDMyLHZtcHlodXNfYWNjLCAiVnh4MzIrPXZtcHlodXMoVnUzMixWdjMyKSIsIlZ4eDMy LncrPXZtcHkoVnUzMi5oLFZ2MzIudWgpIiwKKyJWZWN0b3IgYnkgVmVjdG9yIEhhbGZ3b3JkIE11 bHRpcGx5IiwKKyAgICBWeHhWLnZbMF0ud1tpXSArPSBmTVBZMTZTVShmR0VUSEFMRigwLCBWdVYu d1tpXSksIGZHRVRVSEFMRigwLCBWdlYudXdbaV0pKTsKKyAgICBWeHhWLnZbMV0ud1tpXSArPSBm TVBZMTZTVShmR0VUSEFMRigxLCBWdVYud1tpXSksIGZHRVRVSEFMRigxLCBWdlYudXdbaV0pKSkK KworCisKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygxNix2bXB5aWgsIlZk MzI9dm1weWloKFZ1MzIsVnYzMikiLCJWZDMyLmg9dm1weWkoVnUzMi5oLFZ2MzIuaCkiLAorIlZl Y3RvciBieSBWZWN0b3IgSGFsZndvcmQgTXVsdGlwbHkiLAorICAgIFZkVi5oW2ldID0gZk1QWTE2 U1MoVnVWLmhbaV0sIFZ2Vi5oW2ldKSkKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxF X1ZFQygxNix2bXB5aWhfYWNjLCJWeDMyKz12bXB5aWgoVnUzMixWdjMyKSIsIlZ4MzIuaCs9dm1w eWkoVnUzMi5oLFZ2MzIuaCkiLAorIlZlY3RvciBieSBWZWN0b3IgSGFsZndvcmQgTXVsdGlwbHki LAorICAgIFZ4Vi5oW2ldICs9IGZNUFkxNlNTKFZ1Vi5oW2ldLCBWdlYuaFtpXSkpCisKKworCisv KiAzMngzMiBoaWdoIGhhbGYgLyBmcmFjICovCisKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1Rf RE9VQkxFX1ZFQygzMix2bXB5ZXd1aCwiVmQzMj12bXB5ZXd1aChWdTMyLFZ2MzIpIiwiVmQzMi53 PXZtcHllKFZ1MzIudyxWdjMyLnVoKSIsCisiVmVjdG9yIGJ5IFZlY3RvciBIYWxmd29yZCBNdWx0 aXBseSIsCitWZFYud1tpXSA9IGZNUFkzMjE2U1UoVnVWLndbaV0sIGZHRVRVSEFMRigwLCBWdlYu d1tpXSkpID4+IDE2KQorCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDKDMyLHZt cHlvd2gsIlZkMzI9dm1weW93aChWdTMyLFZ2MzIpOjw8MTpzYXQiLCJWZDMyLnc9dm1weW8oVnUz Mi53LFZ2MzIuaCk6PDwxOnNhdCIsCisiVmVjdG9yIGJ5IFZlY3RvciBIYWxmd29yZCBNdWx0aXBs eSIsCitWZFYud1tpXSA9IGZWU0FUVygoKChmTVBZMzIxNlNTKFZ1Vi53W2ldLCBmR0VUSEFMRigx LCBWdlYud1tpXSkpID4+IDE0KSArIDApID4+IDEpKSkKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NM T1RfRE9VQkxFX1ZFQygzMix2bXB5b3doX3JuZCwiVmQzMj12bXB5b3doKFZ1MzIsVnYzMik6PDwx OnJuZDpzYXQiLCJWZDMyLnc9dm1weW8oVnUzMi53LFZ2MzIuaCk6PDwxOnJuZDpzYXQiLAorIlZl Y3RvciBieSBWZWN0b3IgSGFsZndvcmQgTXVsdGlwbHkiLAorVmRWLndbaV0gPSBmVlNBVFcoKCgo Zk1QWTMyMTZTUyhWdVYud1tpXSwgZkdFVEhBTEYoMSwgVnZWLndbaV0pKSA+PiAxNCkgKyAxKSA+ PiAxKSkpCisKK0lURVJBVE9SX0lOU05fTVBZX1NMT1RfRE9VQkxFX1ZFQygzMix2bXB5ZXd1aF82 NCwiVmRkMzI9dm1weWUoVnUzMi53LFZ2MzIudWgpIiwKKyJXb3JkIHRpbWVzIEhhbGZ3b3JkIE11 bHRpcGx5LCA2NC1iaXQgcmVzdWx0IiwKKwlmSElERShzaXplOHNfdCBwcm9kOykKKwlwcm9kID0g Zk1QWTMyU1UoVnVWLndbaV0sZkdFVFVIQUxGKDAsVnZWLndbaV0pKTsKKwlWZGRWLnZbMV0ud1tp XSA9IHByb2QgPj4gMTY7CisJVmRkVi52WzBdLndbaV0gPSBwcm9kIDw8IDE2KQorCitJVEVSQVRP Ul9JTlNOX01QWV9TTE9UX0RPVUJMRV9WRUMoMzIsdm1weW93aF82NF9hY2MsIlZ4eDMyKz12bXB5 byhWdTMyLncsVnYzMi5oKSIsCisiV29yZCB0aW1lcyBIYWxmd29yZCBNdWx0aXBseSwgNjQtYml0 IHJlc3VsdCIsCisJZkhJREUoc2l6ZThzX3QgcHJvZDspCisJcHJvZCA9IGZNUFkzMlNTKFZ1Vi53 W2ldLGZHRVRIQUxGKDEsVnZWLndbaV0pKSAgKyBmU0UzMl82NChWeHhWLnZbMV0ud1tpXSk7CisJ Vnh4Vi52WzFdLndbaV0gPSBwcm9kID4+IDE2OworCWZTRVRIQUxGKDAsIFZ4eFYudlswXS53W2ld LCBWeHhWLnZbMF0ud1tpXSA+PiAxNik7CisJZlNFVEhBTEYoMSwgVnh4Vi52WzBdLndbaV0sIHBy b2QgJiAweDAwMDBmZmZmKSkKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygz Mix2bXB5b3doX3NhY2MsIlZ4MzIrPXZtcHlvd2goVnUzMixWdjMyKTo8PDE6c2F0OnNoaWZ0Iiwi VngzMi53Kz12bXB5byhWdTMyLncsVnYzMi5oKTo8PDE6c2F0OnNoaWZ0IiwKKyJWZWN0b3IgYnkg VmVjdG9yIEhhbGZ3b3JkIE11bHRpcGx5IiwKK0lWMURFQUQoKSBWeFYud1tpXSA9IGZWU0FUVygo KCgoVnhWLndbaV0gKyBmTVBZMzIxNlNTKFZ1Vi53W2ldLCBmR0VUSEFMRigxLCBWdlYud1tpXSkp KSA+PiAxNCkgKyAwKSA+PiAxKSkpCisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0RPVUJMRV9W RUMoMzIsdm1weW93aF9ybmRfc2FjYywiVngzMis9dm1weW93aChWdTMyLFZ2MzIpOjw8MTpybmQ6 c2F0OnNoaWZ0IiwiVngzMi53Kz12bXB5byhWdTMyLncsVnYzMi5oKTo8PDE6cm5kOnNhdDpzaGlm dCIsCisiVmVjdG9yIGJ5IFZlY3RvciBIYWxmd29yZCBNdWx0aXBseSIsCitJVjFERUFEKCkgVnhW LndbaV0gPSBmVlNBVFcoKCgoKFZ4Vi53W2ldICsgZk1QWTMyMTZTUyhWdVYud1tpXSwgZkdFVEhB TEYoMSwgVnZWLndbaV0pKSkgPj4gMTQpICsgMSkgPj4gMSkpKQorCisvKiBGb3IgMzJ4MzIgaW50 ZWdlciAvIGxvdyBoYWxmICovCisKK0lURVJBVE9SX0lOU05fTVBZX1NMT1QoMzIsdm1weWllb2gs IlZkMzIudz12bXB5aWVvKFZ1MzIuaCxWdjMyLmgpIiwiT2RkL0V2ZW4gbXVsdGlwbHkgZm9yIDMy eDMyIGxvdyBoYWxmIiwKKwlWZFYud1tpXSA9IChmR0VUSEFMRigwLFZ1Vi53W2ldKSpmR0VUSEFM RigxLFZ2Vi53W2ldKSkgPDwgMTYpCisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0RPVUJMRV9W RUMoMzIsdm1weWlld3VoLCJWZDMyPXZtcHlpZXd1aChWdTMyLFZ2MzIpIiwiVmQzMi53PXZtcHlp ZShWdTMyLncsVnYzMi51aCkiLAorIlZlY3RvciBieSBWZWN0b3IgV29yZCBieSBIYWxmd29yZCBN dWx0aXBseSIsCitJVjFERUFEKCkgICAgVmRWLndbaV0gPSBmTVBZMzIxNlNVKFZ1Vi53W2ldLCBm R0VUVUhBTEYoMCwgVnZWLndbaV0pKSApCisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0RPVUJM RV9WRUMoMzIsdm1weWlvd2gsIlZkMzI9dm1weWlvd2goVnUzMixWdjMyKSIsIlZkMzIudz12bXB5 aW8oVnUzMi53LFZ2MzIuaCkiLAorIlZlY3RvciBieSBWZWN0b3IgV29yZCBieSBIYWxmd29yZCBN dWx0aXBseSIsCitJVjFERUFEKCkgICAgVmRWLndbaV0gPSBmTVBZMzIxNlNTKFZ1Vi53W2ldLCBm R0VUSEFMRigxLCBWdlYud1tpXSkpICkKKworLyogQWRkIGJhY2sgdGhlc2UuLi4gKi8KKworSVRF UkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygzMix2bXB5aWV3aF9hY2MsIlZ4MzIrPXZt cHlpZXdoKFZ1MzIsVnYzMikiLCJWeDMyLncrPXZtcHlpZShWdTMyLncsVnYzMi5oKSIsCisiVmVj dG9yIGJ5IFZlY3RvciBXb3JkIGJ5IEhhbGZ3b3JkIE11bHRpcGx5IiwKK1Z4Vi53W2ldID0gVnhW LndbaV0gKyBmTVBZMzIxNlNTKFZ1Vi53W2ldLCBmR0VUSEFMRigwLCBWdlYud1tpXSkpICkKKwor SVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygzMix2bXB5aWV3dWhfYWNjLCJWeDMy Kz12bXB5aWV3dWgoVnUzMixWdjMyKSIsIlZ4MzIudys9dm1weWllKFZ1MzIudyxWdjMyLnVoKSIs CisiVmVjdG9yIGJ5IFZlY3RvciBXb3JkIGJ5IEhhbGZ3b3JkIE11bHRpcGx5IiwKK1Z4Vi53W2ld ID0gVnhWLndbaV0gKyBmTVBZMzIxNlNVKFZ1Vi53W2ldLCBmR0VUVUhBTEYoMCwgVnZWLndbaV0p KSApCisKKworCisKKworCisKKy8qIFZlY3RvciBieSBTY2FsYXIgKi8KK0lURVJBVE9SX0lOU04y X01QWV9TTE9UX0RPVUJMRV9WRUMoMTYsdm1weXViLCJWZGQzMj12bXB5dWIoVnUzMixSdDMyKSIs IlZkZDMyLnVoPXZtcHkoVnUzMi51YixSdDMyLnViKSIsCisiVmVjdG9yIGFic29sdXRlIHZhbHVl IG9mIHdvcmRzIiwKKyAgICBWZGRWLnZbMF0udWhbaV0gID0gZk1QWThVVShmR0VUVUJZVEUoMCwg VnVWLnVoW2ldKSwgZkdFVFVCWVRFKCgyKmkrMCklNCwgUnRWKSk7CisgICAgVmRkVi52WzFdLnVo W2ldICA9IGZNUFk4VVUoZkdFVFVCWVRFKDEsIFZ1Vi51aFtpXSksIGZHRVRVQllURSgoMippKzEp JTQsIFJ0VikpKQorCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDKDE2LHZtcHl1 Yl9hY2MsIlZ4eDMyKz12bXB5dWIoVnUzMixSdDMyKSIsIlZ4eDMyLnVoKz12bXB5KFZ1MzIudWIs UnQzMi51YikiLAorIlZlY3RvciBhYnNvbHV0ZSB2YWx1ZSBvZiB3b3JkcyIsCisgICAgVnh4Vi52 WzBdLnVoW2ldICs9IGZNUFk4VVUoZkdFVFVCWVRFKDAsIFZ1Vi51aFtpXSksIGZHRVRVQllURSgo MippKzApJTQsIFJ0VikpOworICAgIFZ4eFYudlsxXS51aFtpXSArPSBmTVBZOFVVKGZHRVRVQllU RSgxLCBWdVYudWhbaV0pLCBmR0VUVUJZVEUoKDIqaSsxKSU0LCBSdFYpKSkKKworCitJVEVSQVRP Ul9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDKDE2LHZtcHlidXMsIlZkZDMyPXZtcHlidXMoVnUz MixSdDMyKSIsIlZkZDMyLmg9dm1weShWdTMyLnViLFJ0MzIuYikiLAorIlZlY3RvciBhYnNvbHV0 ZSB2YWx1ZSBvZiB3b3JkcyIsCisgICAgVmRkVi52WzBdLmhbaV0gID0gZk1QWThVUyhmR0VUVUJZ VEUoMCwgVnVWLnVoW2ldKSwgZkdFVEJZVEUoKDIqaSswKSU0LCBSdFYpKTsKKyAgICBWZGRWLnZb MV0uaFtpXSAgPSBmTVBZOFVTKGZHRVRVQllURSgxLCBWdVYudWhbaV0pLCBmR0VUQllURSgoMipp KzEpJTQsIFJ0VikpKQorCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDKDE2LHZt cHlidXNfYWNjLCJWeHgzMis9dm1weWJ1cyhWdTMyLFJ0MzIpIiwiVnh4MzIuaCs9dm1weShWdTMy LnViLFJ0MzIuYikiLAorIlZlY3RvciBhYnNvbHV0ZSB2YWx1ZSBvZiB3b3JkcyIsCisgICAgVnh4 Vi52WzBdLmhbaV0gKz0gZk1QWThVUyhmR0VUVUJZVEUoMCwgVnVWLnVoW2ldKSwgZkdFVEJZVEUo KDIqaSswKSU0LCBSdFYpKTsKKyAgICBWeHhWLnZbMV0uaFtpXSArPSBmTVBZOFVTKGZHRVRVQllU RSgxLCBWdVYudWhbaV0pLCBmR0VUQllURSgoMippKzEpJTQsIFJ0VikpKQorCisKK0lURVJBVE9S X0lOU04yX01QWV9TTE9UX0RPVUJMRV9WRUMoMTYsdm1wYWJ1cywiVmRkMzI9dm1wYWJ1cyhWdXUz MixSdDMyKSIsIlZkZDMyLmg9dm1wYShWdXUzMi51YixSdDMyLmIpIiwKKyJWZXJ0aWNhbCBCeXRl IE11bHRpcGx5IiwKKyAgICBWZGRWLnZbMF0uaFtpXSA9IGZNUFk4VVMoZkdFVFVCWVRFKDAsIFZ1 dVYudlswXS51aFtpXSksIGZHRVRCWVRFKDAsIFJ0VikpICsgZk1QWTE2U1MoZkdFVFVCWVRFKDAs IFZ1dVYudlsxXS51aFtpXSksIGZHRVRCWVRFKDEsIFJ0VikpOworICAgIFZkZFYudlsxXS5oW2ld ID0gZk1QWThVUyhmR0VUVUJZVEUoMSwgVnV1Vi52WzBdLnVoW2ldKSwgZkdFVEJZVEUoMiwgUnRW KSkgKyBmTVBZMTZTUyhmR0VUVUJZVEUoMSwgVnV1Vi52WzFdLnVoW2ldKSwgZkdFVEJZVEUoMywg UnRWKSkpCisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0RPVUJMRV9WRUMoMTYsdm1wYWJ1c19h Y2MsIlZ4eDMyKz12bXBhYnVzKFZ1dTMyLFJ0MzIpIiwiVnh4MzIuaCs9dm1wYShWdXUzMi51YixS dDMyLmIpIiwKKyJWZXJ0aWNhbCBCeXRlIE11bHRpcGx5IiwKKyAgICBWeHhWLnZbMF0uaFtpXSAr PSBmTVBZOFVTKGZHRVRVQllURSgwLCBWdXVWLnZbMF0udWhbaV0pLCBmR0VUQllURSgwLCBSdFYp KSArIGZNUFkxNlNTKGZHRVRVQllURSgwLCBWdXVWLnZbMV0udWhbaV0pLCBmR0VUQllURSgxLCBS dFYpKTsKKyAgICBWeHhWLnZbMV0uaFtpXSArPSBmTVBZOFVTKGZHRVRVQllURSgxLCBWdXVWLnZb MF0udWhbaV0pLCBmR0VUQllURSgyLCBSdFYpKSArIGZNUFkxNlNTKGZHRVRVQllURSgxLCBWdXVW LnZbMV0udWhbaV0pLCBmR0VUQllURSgzLCBSdFYpKSkKKworLy8gVjY1CisKK0lURVJBVE9SX0lO U04yX01QWV9TTE9UX0RPVUJMRV9WRUNfTk9WMSgxNix2bXBhYnV1LCJWZGQzMj12bXBhYnV1KFZ1 dTMyLFJ0MzIpIiwiVmRkMzIuaD12bXBhKFZ1dTMyLnViLFJ0MzIudWIpIiwKKyJWZXJ0aWNhbCBC eXRlIE11bHRpcGx5IiwKKyAgICBWZGRWLnZbMF0udWhbaV0gPSBmTVBZOFVVKGZHRVRVQllURSgw LCBWdXVWLnZbMF0udWhbaV0pLCBmR0VUVUJZVEUoMCwgUnRWKSkgKyBmTVBZOFVVKGZHRVRVQllU RSgwLCBWdXVWLnZbMV0udWhbaV0pLCBmR0VUVUJZVEUoMSwgUnRWKSk7CisgICAgVmRkVi52WzFd LnVoW2ldID0gZk1QWThVVShmR0VUVUJZVEUoMSwgVnV1Vi52WzBdLnVoW2ldKSwgZkdFVFVCWVRF KDIsIFJ0VikpICsgZk1QWThVVShmR0VUVUJZVEUoMSwgVnV1Vi52WzFdLnVoW2ldKSwgZkdFVFVC WVRFKDMsIFJ0VikpKQorCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDX05PVjEo MTYsdm1wYWJ1dV9hY2MsIlZ4eDMyKz12bXBhYnV1KFZ1dTMyLFJ0MzIpIiwiVnh4MzIuaCs9dm1w YShWdXUzMi51YixSdDMyLnViKSIsCisiVmVydGljYWwgQnl0ZSBNdWx0aXBseSIsCisgICAgVnh4 Vi52WzBdLnVoW2ldICs9IGZNUFk4VVUoZkdFVFVCWVRFKDAsIFZ1dVYudlswXS51aFtpXSksIGZH RVRVQllURSgwLCBSdFYpKSArIGZNUFk4VVUoZkdFVFVCWVRFKDAsIFZ1dVYudlsxXS51aFtpXSks IGZHRVRVQllURSgxLCBSdFYpKTsKKyAgICBWeHhWLnZbMV0udWhbaV0gKz0gZk1QWThVVShmR0VU VUJZVEUoMSwgVnV1Vi52WzBdLnVoW2ldKSwgZkdFVFVCWVRFKDIsIFJ0VikpICsgZk1QWThVVShm R0VUVUJZVEUoMSwgVnV1Vi52WzFdLnVoW2ldKSwgZkdFVFVCWVRFKDMsIFJ0VikpKQorCisKKwor CisvKiBIYWxmIGJ5IEJ5dGUgKi8KK0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0RPVUJMRV9WRUMo MzIsdm1wYWhiLCJWZGQzMj12bXBhaGIoVnV1MzIsUnQzMikiLCJWZGQzMi53PXZtcGEoVnV1MzIu aCxSdDMyLmIpIiwKKyJWZXJ0aWNhbCBCeXRlIE11bHRpcGx5IiwKKyAgICBWZGRWLnZbMF0ud1tp XSA9IGZNUFkxNlNTKGZHRVRIQUxGKDAsIFZ1dVYudlswXS53W2ldKSwgZlNFOF8xNihmR0VUQllU RSgwLCBSdFYpKSkgKyBmTVBZMTZTUyhmR0VUSEFMRigwLCBWdXVWLnZbMV0ud1tpXSksIGZTRThf MTYoZkdFVEJZVEUoMSwgUnRWKSkpOworICAgIFZkZFYudlsxXS53W2ldID0gZk1QWTE2U1MoZkdF VEhBTEYoMSwgVnV1Vi52WzBdLndbaV0pLCBmU0U4XzE2KGZHRVRCWVRFKDIsIFJ0VikpKSArIGZN UFkxNlNTKGZHRVRIQUxGKDEsIFZ1dVYudlsxXS53W2ldKSwgZlNFOF8xNihmR0VUQllURSgzLCBS dFYpKSkpCisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0RPVUJMRV9WRUMoMzIsdm1wYWhiX2Fj YywiVnh4MzIrPXZtcGFoYihWdXUzMixSdDMyKSIsIlZ4eDMyLncrPXZtcGEoVnV1MzIuaCxSdDMy LmIpIiwKKyJWZXJ0aWNhbCBCeXRlIE11bHRpcGx5IiwKKyAgICBWeHhWLnZbMF0ud1tpXSArPSBm TVBZMTZTUyhmR0VUSEFMRigwLCBWdXVWLnZbMF0ud1tpXSksIGZTRThfMTYoZkdFVEJZVEUoMCwg UnRWKSkpICsgZk1QWTE2U1MoZkdFVEhBTEYoMCwgVnV1Vi52WzFdLndbaV0pLCBmU0U4XzE2KGZH RVRCWVRFKDEsIFJ0VikpKTsKKyAgICBWeHhWLnZbMV0ud1tpXSArPSBmTVBZMTZTUyhmR0VUSEFM RigxLCBWdXVWLnZbMF0ud1tpXSksIGZTRThfMTYoZkdFVEJZVEUoMiwgUnRWKSkpICsgZk1QWTE2 U1MoZkdFVEhBTEYoMSwgVnV1Vi52WzFdLndbaV0pLCBmU0U4XzE2KGZHRVRCWVRFKDMsIFJ0Vikp KSkKKworLyogSGFsZiBieSBCeXRlICovCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVf VkVDKDMyLHZtcGF1aGIsIlZkZDMyPXZtcGF1aGIoVnV1MzIsUnQzMikiLCJWZGQzMi53PXZtcGEo VnV1MzIudWgsUnQzMi5iKSIsCisiVmVydGljYWwgQnl0ZSBNdWx0aXBseSIsCisgICAgVmRkVi52 WzBdLndbaV0gPSBmTVBZMTZVUyhmR0VUVUhBTEYoMCwgVnV1Vi52WzBdLndbaV0pLCBmU0U4XzE2 KGZHRVRCWVRFKDAsIFJ0VikpKSArIGZNUFkxNlVTKGZHRVRVSEFMRigwLCBWdXVWLnZbMV0ud1tp XSksIGZTRThfMTYoZkdFVEJZVEUoMSwgUnRWKSkpOworICAgIFZkZFYudlsxXS53W2ldID0gZk1Q WTE2VVMoZkdFVFVIQUxGKDEsIFZ1dVYudlswXS53W2ldKSwgZlNFOF8xNihmR0VUQllURSgyLCBS dFYpKSkgKyBmTVBZMTZVUyhmR0VUVUhBTEYoMSwgVnV1Vi52WzFdLndbaV0pLCBmU0U4XzE2KGZH RVRCWVRFKDMsIFJ0VikpKSkKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygz Mix2bXBhdWhiX2FjYywiVnh4MzIrPXZtcGF1aGIoVnV1MzIsUnQzMikiLCJWeHgzMi53Kz12bXBh KFZ1dTMyLnVoLFJ0MzIuYikiLAorIlZlcnRpY2FsIEJ5dGUgTXVsdGlwbHkiLAorICAgIFZ4eFYu dlswXS53W2ldICs9IGZNUFkxNlVTKGZHRVRVSEFMRigwLCBWdXVWLnZbMF0ud1tpXSksIGZTRThf MTYoZkdFVEJZVEUoMCwgUnRWKSkpICsgZk1QWTE2VVMoZkdFVFVIQUxGKDAsIFZ1dVYudlsxXS53 W2ldKSwgZlNFOF8xNihmR0VUQllURSgxLCBSdFYpKSk7CisgICAgVnh4Vi52WzFdLndbaV0gKz0g Zk1QWTE2VVMoZkdFVFVIQUxGKDEsIFZ1dVYudlswXS53W2ldKSwgZlNFOF8xNihmR0VUQllURSgy LCBSdFYpKSkgKyBmTVBZMTZVUyhmR0VUVUhBTEYoMSwgVnV1Vi52WzFdLndbaV0pLCBmU0U4XzE2 KGZHRVRCWVRFKDMsIFJ0VikpKSkKKworCisKKworCisKKworLyogSGFsZiBieSBIYWxmICovCitJ VEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDKDMyLHZtcHloLCJWZGQzMj12bXB5aChW dTMyLFJ0MzIpIiwiVmRkMzIudz12bXB5KFZ1MzIuaCxSdDMyLmgpIiwKKyJWZWN0b3IgYWJzb2x1 dGUgdmFsdWUgb2Ygd29yZHMiLAorICAgIFZkZFYudlswXS53W2ldID0gIGZNUFkxNlNTKGZHRVRI QUxGKDAsIFZ1Vi53W2ldKSwgZkdFVEhBTEYoMCwgUnRWKSk7CisgICAgVmRkVi52WzFdLndbaV0g PSAgZk1QWTE2U1MoZkdFVEhBTEYoMSwgVnVWLndbaV0pLCBmR0VUSEFMRigxLCBSdFYpKSkKKwor SVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQ19OT1YxKDMyLHZtcHloX2FjYywiVnh4 MzIrPXZtcHloKFZ1MzIsUnQzMikiLCJWeHgzMi53Kz12bXB5KFZ1MzIuaCxSdDMyLmgpIiwKKyJW ZWN0b3IgZXZlbiBoYWxmd29yZHMgd2l0aCBzY2FsYXIgbG93ZXIgaGFsZndvcmQgbXVsdGlwbHkg d2l0aCBzaGlmdCBhbmQgc2F0MzIiLAorICAgIFZ4eFYudlswXS53W2ldID0gIGZDQVNUOHMoVnh4 Vi52WzBdLndbaV0pICsgZk1QWTE2U1MoZkdFVEhBTEYoMCwgVnVWLndbaV0pLCBmR0VUSEFMRigw LCBSdFYpKTsKKyAgICBWeHhWLnZbMV0ud1tpXSA9ICBmQ0FTVDhzKFZ4eFYudlsxXS53W2ldKSAr IGZNUFkxNlNTKGZHRVRIQUxGKDEsIFZ1Vi53W2ldKSwgZkdFVEhBTEYoMSwgUnRWKSkpCisKKwor SVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygzMix2bXB5aHNhdF9hY2MsIlZ4eDMy Kz12bXB5aChWdTMyLFJ0MzIpOnNhdCIsIlZ4eDMyLncrPXZtcHkoVnUzMi5oLFJ0MzIuaCk6c2F0 IiwKKyJWZWN0b3IgZXZlbiBoYWxmd29yZHMgd2l0aCBzY2FsYXIgbG93ZXIgaGFsZndvcmQgbXVs dGlwbHkgd2l0aCBzaGlmdCBhbmQgc2F0MzIiLAorICAgIFZ4eFYudlswXS53W2ldID0gIGZWU0FU VyhmQ0FTVDhzKFZ4eFYudlswXS53W2ldKSArIGZNUFkxNlNTKGZHRVRIQUxGKDAsIFZ1Vi53W2ld KSwgZkdFVEhBTEYoMCwgUnRWKSkpOworICAgIFZ4eFYudlsxXS53W2ldID0gIGZWU0FUVyhmQ0FT VDhzKFZ4eFYudlsxXS53W2ldKSArIGZNUFkxNlNTKGZHRVRIQUxGKDEsIFZ1Vi53W2ldKSwgZkdF VEhBTEYoMSwgUnRWKSkpKQorCisKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZF QygzMix2bXB5aHNzLCJWZDMyPXZtcHloKFZ1MzIsUnQzMik6PDwxOnNhdCIsIlZkMzIuaD12bXB5 KFZ1MzIuaCxSdDMyLmgpOjw8MTpzYXQiLAorIlZlY3RvciBoYWxmd29yZCBieSBoYWxmd29yZCBt dWx0aXBseSwgc2hpZnQgYnkgMSwgYW5kIHRha2UgdXBwZXIgMTYgbXNiIiwKKyAgICAgICAgICBm U0VUSEFMRigwLFZkVi53W2ldLGZWU0FUSChmR0VUSEFMRigxLGZWU0FUKChmTVBZMTZTUyhmR0VU SEFMRigwLFZ1Vi53W2ldKSxmR0VUSEFMRigwLFJ0VikpPDwxKSkpKSk7CisgICAgICAgICAgZlNF VEhBTEYoMSxWZFYud1tpXSxmVlNBVEgoZkdFVEhBTEYoMSxmVlNBVCgoZk1QWTE2U1MoZkdFVEhB TEYoMSxWdVYud1tpXSksZkdFVEhBTEYoMSxSdFYpKTw8MSkpKSkpOworKQorCitJVEVSQVRPUl9J TlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDKDMyLHZtcHloc3JzLCJWZDMyPXZtcHloKFZ1MzIsUnQz Mik6PDwxOnJuZDpzYXQiLCJWZDMyLmg9dm1weShWdTMyLmgsUnQzMi5oKTo8PDE6cm5kOnNhdCIs CisiVmVjdG9yIGhhbGZ3b3JkIHdpdGggc2NhbGFyIGhhbGZ3b3JkIG11bHRpcGx5IHdpdGggcm91 bmQsIHNoaWZ0LCBhbmQgc2F0MTYiLAorICAgICAgIGZTRVRIQUxGKDAsVmRWLndbaV0sZlZTQVRI KGZHRVRIQUxGKDEsZlZTQVQoZlJPVU5EKChmTVBZMTZTUyhmR0VUSEFMRigwLFZ1Vi53W2ldKSxm R0VUSEFMRigwLFJ0VikpPDwxKSkpKSkpOworICAgICAgIGZTRVRIQUxGKDEsVmRWLndbaV0sZlZT QVRIKGZHRVRIQUxGKDEsZlZTQVQoZlJPVU5EKChmTVBZMTZTUyhmR0VUSEFMRigxLFZ1Vi53W2ld KSxmR0VUSEFMRigxLFJ0VikpPDwxKSkpKSkpOworKQorCisKK0lURVJBVE9SX0lOU04yX01QWV9T TE9UX0RPVUJMRV9WRUMoMzIsdm1weXVoLCJWZGQzMj12bXB5dWgoVnUzMixSdDMyKSIsIlZkZDMy LnV3PXZtcHkoVnUzMi51aCxSdDMyLnVoKSIsCisiVmVjdG9yIGV2ZW4gaGFsZndvcmQgdW5zaWdu ZWQgbXVsdGlwbHkgYnkgc2NhbGFyIiwKKyAgICBWZGRWLnZbMF0udXdbaV0gPSBmTVBZMTZVVShm R0VUVUhBTEYoMCwgVnVWLnV3W2ldKSxmR0VUVUhBTEYoMCxSdFYpKTsKKyAgICBWZGRWLnZbMV0u dXdbaV0gPSBmTVBZMTZVVShmR0VUVUhBTEYoMSwgVnVWLnV3W2ldKSxmR0VUVUhBTEYoMSxSdFYp KSkKKworCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDKDMyLHZtcHl1aF9hY2Ms IlZ4eDMyKz12bXB5dWgoVnUzMixSdDMyKSIsIlZ4eDMyLnV3Kz12bXB5KFZ1MzIudWgsUnQzMi51 aCkiLAorIlZlY3RvciBldmVuIGhhbGZ3b3JkIHVuc2lnbmVkIG11bHRpcGx5IGJ5IHNjYWxhciIs CisgICAgVnh4Vi52WzBdLnV3W2ldICs9IGZNUFkxNlVVKGZHRVRVSEFMRigwLCBWdVYudXdbaV0p LGZHRVRVSEFMRigwLFJ0VikpOworICAgIFZ4eFYudlsxXS51d1tpXSArPSBmTVBZMTZVVShmR0VU VUhBTEYoMSwgVnVWLnV3W2ldKSxmR0VUVUhBTEYoMSxSdFYpKSkKKworCisKKworLyoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICBIQUxGIEJZIEJZVEUKKyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworSVRFUkFUT1JfSU5T TjJfTVBZX1NMT1QoMTYsdm1weWloYiwiVmQzMj12bXB5aWhiKFZ1MzIsUnQzMikiLCJWZDMyLmg9 dm1weWkoVnUzMi5oLFJ0MzIuYikiLAorIlZlY3RvciB3b3JkIGJ5IGJ5dGUgbXVsdGlwbHksIGtl ZXAgbG93ZXIgcmVzdWx0IiwKK1ZkVi5oW2ldICA9IGZNUFkxNlNTKFZ1Vi5oW2ldLCBmR0VUQllU RShpICUgNCwgUnRWKSApKQorCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVCgxNix2bXB5aWhiX2Fj YywiVngzMis9dm1weWloYihWdTMyLFJ0MzIpIiwiVngzMi5oKz12bXB5aShWdTMyLmgsUnQzMi5i KSIsCisiVmVjdG9yIHdvcmQgYnkgYnl0ZSBtdWx0aXBseSwga2VlcCBsb3dlciByZXN1bHQiLAor VnhWLmhbaV0gKz0gZk1QWTE2U1MoVnVWLmhbaV0sIGZHRVRCWVRFKGkgJSA0LCBSdFYpICkpCisK KworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICBXT1JE IEJZIEJZVEUKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwor SVRFUkFUT1JfSU5TTjJfTVBZX1NMT1QoMzIsdm1weWl3YiwiVmQzMj12bXB5aXdiKFZ1MzIsUnQz MikiLCJWZDMyLnc9dm1weWkoVnUzMi53LFJ0MzIuYikiLAorIlZlY3RvciB3b3JkIGJ5IGJ5dGUg bXVsdGlwbHksIGtlZXAgbG93ZXIgcmVzdWx0IiwKK1ZkVi53W2ldICA9IGZNUFkzMlNTKFZ1Vi53 W2ldLCBmR0VUQllURShpICUgNCwgUnRWKSApKQorCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVCgz Mix2bXB5aXdiX2FjYywiVngzMis9dm1weWl3YihWdTMyLFJ0MzIpIiwiVngzMi53Kz12bXB5aShW dTMyLncsUnQzMi5iKSIsCisiVmVjdG9yIHdvcmQgYnkgYnl0ZSBtdWx0aXBseSwga2VlcCBsb3dl ciByZXN1bHQiLAorVnhWLndbaV0gKz0gZk1QWTMyU1MoVnVWLndbaV0sIGZHRVRCWVRFKGkgJSA0 LCBSdFYpICkpCisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9UKDMyLHZtcHlpd3ViLCJWZDMyPXZt cHlpd3ViKFZ1MzIsUnQzMikiLCJWZDMyLnc9dm1weWkoVnUzMi53LFJ0MzIudWIpIiwKKyJWZWN0 b3Igd29yZCBieSBieXRlIG11bHRpcGx5LCBrZWVwIGxvd2VyIHJlc3VsdCIsCitWZFYud1tpXSAg PSBmTVBZMzJTUyhWdVYud1tpXSwgZkdFVFVCWVRFKGkgJSA0LCBSdFYpICkpCisKK0lURVJBVE9S X0lOU04yX01QWV9TTE9UKDMyLHZtcHlpd3ViX2FjYywiVngzMis9dm1weWl3dWIoVnUzMixSdDMy KSIsIlZ4MzIudys9dm1weWkoVnUzMi53LFJ0MzIudWIpIiwKKyJWZWN0b3Igd29yZCBieSBieXRl IG11bHRpcGx5LCBrZWVwIGxvd2VyIHJlc3VsdCIsCitWeFYud1tpXSArPSBmTVBZMzJTUyhWdVYu d1tpXSwgZkdFVFVCWVRFKGkgJSA0LCBSdFYpICkpCisKKworLyoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqCisqICBXT1JEIEJZIEhBTEYKKyoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1Rf RE9VQkxFX1ZFQygzMix2bXB5aXdoLCJWZDMyPXZtcHlpd2goVnUzMixSdDMyKSIsIlZkMzIudz12 bXB5aShWdTMyLncsUnQzMi5oKSIsCisiVmVjdG9yIHdvcmQgYnkgYnl0ZSBtdWx0aXBseSwga2Vl cCBsb3dlciByZXN1bHQiLAorVmRWLndbaV0gID0gZk1QWTMyU1MoVnVWLndbaV0sIGZHRVRIQUxG KGkgJSAyLCBSdFYpKSkKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygzMix2 bXB5aXdoX2FjYywiVngzMis9dm1weWl3aChWdTMyLFJ0MzIpIiwiVngzMi53Kz12bXB5aShWdTMy LncsUnQzMi5oKSIsCisiVmVjdG9yIHdvcmQgYnkgYnl0ZSBtdWx0aXBseSwga2VlcCBsb3dlciBy ZXN1bHQiLAorVnhWLndbaV0gKz0gZk1QWTMyU1MoVnVWLndbaV0sIGZHRVRIQUxGKGkgJSAyLCBS dFYpKSkKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworLyoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqCisgKiBNTVZFQ1RPUiBMT0dJQ0FMIE9QRVJBVElPTlMKKyAqICoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ki8KK0lURVJBVE9SX0lOU05fQU5ZX1NMT1QoMTYsdmFuZCwiVmQzMj12YW5kKFZ1MzIsVnYzMiki LCAiVmVjdG9yIExvZ2ljYWwgQW5kIiwgVmRWLnVoW2ldID0gVnVWLnVoW2ldICYgVnZWLmhbaV0p CitJVEVSQVRPUl9JTlNOX0FOWV9TTE9UKDE2LHZvciwgIlZkMzI9dm9yKFZ1MzIsVnYzMikiLCAg IlZlY3RvciBMb2dpY2FsIE9yIiwgVmRWLnVoW2ldID0gVnVWLnVoW2ldIHwgVnZWLmhbaV0pCitJ VEVSQVRPUl9JTlNOX0FOWV9TTE9UKDE2LHZ4b3IsIlZkMzI9dnhvcihWdTMyLFZ2MzIpIiwgIlZl Y3RvciBMb2dpY2FsIFhPUiIsICAgIFZkVi51aFtpXSA9IFZ1Vi51aFtpXSBeIFZ2Vi5oW2ldKQor SVRFUkFUT1JfSU5TTl9BTllfU0xPVCgxNix2bm90LCJWZDMyPXZub3QoVnUzMikiLCAgICAgIlZl Y3RvciBMb2dpY2FsIE5PVCIsIFZkVi51aFtpXSA9IH5WdVYudWhbaV0pCisKKworCisKKworSVRF UkFUT1JfSU5TTjJfTVBZX1NMT1RfTEFURSg4LCB2YW5kcXJ0LAorIlZkMzIudWI9dmFuZChRdTQu dWIsUnQzMi51YikiLCAiVmQzMj12YW5kKFF1NCxSdDMyKSIsICJJbnNlcnQgUHJlZGljYXRlIGlu dG8gVmVjdG9yIiwKKyAgICBWZFYudWJbaV0gPSBmR0VUUUJJVChRdVYsaSkgPyBmR0VUVUJZVEUo aSAlIDQsIFJ0VikgOiAwKQorCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9MQVRFKDgsIHZhbmRx cnRfYWNjLAorIlZ4MzIudWJ8PXZhbmQoUXU0LnViLFJ0MzIudWIpIiwgIlZ4MzJ8PXZhbmQoUXU0 LFJ0MzIpIiwgICJJbnNlcnQgUHJlZGljYXRlIGludG8gVmVjdG9yIiwKKyAgICBWeFYudWJbaV0g fD0gKGZHRVRRQklUKFF1VixpKSkgPyBmR0VUVUJZVEUoaSAlIDQsIFJ0VikgOiAwKQorCitJVEVS QVRPUl9JTlNOMl9NUFlfU0xPVF9MQVRFKDgsIHZhbmRucXJ0LAorIlZkMzIudWI9dmFuZCghUXU0 LnViLFJ0MzIudWIpIiwgIlZkMzI9dmFuZCghUXU0LFJ0MzIpIiwgIkluc2VydCBQcmVkaWNhdGUg aW50byBWZWN0b3IiLAorICAgIFZkVi51YltpXSA9ICFmR0VUUUJJVChRdVYsaSkgPyBmR0VUVUJZ VEUoaSAlIDQsIFJ0VikgOiAwKQorCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9MQVRFKDgsIHZh bmRucXJ0X2FjYywKKyJWeDMyLnVifD12YW5kKCFRdTQudWIsUnQzMi51YikiLCAiVngzMnw9dmFu ZCghUXU0LFJ0MzIpIiwgICJJbnNlcnQgUHJlZGljYXRlIGludG8gVmVjdG9yIiwKKyAgICBWeFYu dWJbaV0gfD0gIShmR0VUUUJJVChRdVYsaSkpID8gZkdFVFVCWVRFKGkgJSA0LCBSdFYpIDogMCkK KworCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9MQVRFKDgsIHZhbmR2cnQsCisiUWQ0LnViPXZh bmQoVnUzMi51YixSdDMyLnViKSIsICJRZDQ9dmFuZChWdTMyLFJ0MzIpIiwgIkluc2VydCBpbnRv IFByZWRpY2F0ZSIsCisgICAgZlNFVFFCSVQoUWRWLGksKChWdVYudWJbaV0gJiBmR0VUVUJZVEUo aSAlIDQsIFJ0VikpICE9IDApID8gMSA6IDApKQorCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9M QVRFKDgsIHZhbmR2cnRfYWNjLAorIlF4NC51Ynw9dmFuZChWdTMyLnViLFJ0MzIudWIpIiwgIlF4 NHw9dmFuZChWdTMyLFJ0MzIpIiwgIkluc2VydCBpbnRvIFByZWRpY2F0ZSAiLAorICAgIGZTRVRR QklUKFF4VixpLGZHRVRRQklUKFF4VixpKXwoKChWdVYudWJbaV0gJiBmR0VUVUJZVEUoaSAlIDQs IFJ0VikpICE9IDApID8gMSA6IDApKSkKKworSVRFUkFUT1JfSU5TTl9BTllfU0xPVCg4LHZhbmR2 cXYsIlZkMzI9dmFuZChRdjQsVnUzMikiLCJNYXNrIG9mZiBieXRlcyIsCitWZFYuYltpXSA9IGZH RVRRQklUKFF2VixpKSA/IFZ1Vi5iW2ldIDogMCkKK0lURVJBVE9SX0lOU05fQU5ZX1NMT1QoOCx2 YW5kdm5xdiwiVmQzMj12YW5kKCFRdjQsVnUzMikiLCJNYXNrIG9mZiBieXRlcyIsCitWZFYuYltp XSA9ICFmR0VUUUJJVChRdlYsaSkgPyBWdVYuYltpXSA6IDApCisKKworIC8qKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvbXBhcmUgVmVjdG9y IHdpdGggVmVjdG9yCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqLworI2RlZmluZSBWQ01QKERFU1QsIEFTUkMsIEFTUkNPUCwgQ01QLCBOLCBTUkMs IE1BU0ssIFdJRFRIKSAgICAgICAgXAoreyBcCisgICAgICAgZm9yKGZISURFKGludCkgaSA9IDA7 IGkgPCBmVkJZVEVTKCk7IGkgKz0gV0lEVEgpIHsgXAorCQlmU0VUUUJJVFMoREVTVCxXSURUSCxN QVNLLGksQVNSQyBBU1JDT1AgKChWdVYuU1JDW2kvV0lEVEhdIENNUCBWdlYuU1JDW2kvV0lEVEhd KSA/IE1BU0sgOiAwKSk7IFwKKyAgICB9IFwKKyAgICAgICB9CisKKworI2RlZmluZSBNTVZFQ19D TVBHVChUWVBFLFRZUEUyLFRZUEUzLERFU0NSLE4sTUFTSyxXSURUSCxTUkMpIFwKK0VYVElOU04o VjZfdmd0IyNUWVBFLCAgICAgICAiUWQ0PXZjbXAuZ3QoVnUzMi4iIFRZUEUyICIsVnYzMi4iIFRZ UEUyICIpIiwgIEFUVFJJQlMoQV9FWFRFTlNJT04sQV9DVkksQV9DVklfVkEpLCBERVNDUiIgZ3Jl YXRlciB0aGFuIiwgXAorCVZDTVAoUWRWLCAsICwgPiwgTiwgU1JDLCBNQVNLLCBXSURUSCkpIFwK K0VYVElOU04oVjZfdmd0IyNUWVBFIyNfYW5kLCAiUXg0Jj12Y21wLmd0KFZ1MzIuIiBUWVBFMiAi LFZ2MzIuIiBUWVBFMiAiKSIsIEFUVFJJQlMoQV9FWFRFTlNJT04sQV9DVkksQV9DVklfVkEpLCBE RVNDUiIgZ3JlYXRlciB0aGFuIHdpdGggcHJlZGljYXRlLWFuZCIsIFwKKwlWQ01QKFF4ViwgZkdF VFFCSVRTKFF4VixXSURUSCxNQVNLLGkpLCAmLCA+LCBOLCBTUkMsIE1BU0ssIFdJRFRIKSkgXAor RVhUSU5TTihWNl92Z3QjI1RZUEUjI19vciwgICJReDR8PXZjbXAuZ3QoVnUzMi4iIFRZUEUyICIs VnYzMi4iIFRZUEUyICIpIiwgQVRUUklCUyhBX0VYVEVOU0lPTixBX0NWSSxBX0NWSV9WQSksIERF U0NSIiBncmVhdGVyIHRoYW4gd2l0aCBwcmVkaWNhdGUtb3IiLCBcCisJVkNNUChReFYsIGZHRVRR QklUUyhReFYsV0lEVEgsTUFTSyxpKSwgfCwgPiwgTiwgU1JDLCBNQVNLLCBXSURUSCkpIFwKK0VY VElOU04oVjZfdmd0IyNUWVBFIyNfeG9yLCAiUXg0Xj12Y21wLmd0KFZ1MzIuIiBUWVBFMiAiLFZ2 MzIuIiBUWVBFMiAiKSIsIEFUVFJJQlMoQV9FWFRFTlNJT04sQV9DVkksQV9DVklfVkEpLCBERVND UiIgZ3JlYXRlciB0aGFuIHdpdGggcHJlZGljYXRlLXhvciIsIFwKKwlWQ01QKFF4ViwgZkdFVFFC SVRTKFF4VixXSURUSCxNQVNLLGkpLCBeLCA+LCBOLCBTUkMsIE1BU0ssIFdJRFRIKSkKKworI2Rl ZmluZSBNTVZFQ19DTVAoVFlQRSxUWVBFMixUWVBFMyxERVNDUixOLE1BU0ssIFdJRFRILCBTUkMp XAorTU1WRUNfQ01QR1QoVFlQRSxUWVBFMixUWVBFMyxERVNDUixOLE1BU0ssV0lEVEgsU1JDKSBc CitFWFRJTlNOKFY2X3ZlcSMjVFlQRSwgICAgICAgIlFkND12Y21wLmVxKFZ1MzIuIiBUWVBFMiAi LFZ2MzIuIiBUWVBFMiAiKSIsICBBVFRSSUJTKEFfRVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJX1ZBKSwg REVTQ1IiIGVxdWFsIHRvIiwgXAorCVZDTVAoUWRWLCAsICwgPT0sIE4sIFNSQywgTUFTSywgV0lE VEgpKSBcCitFWFRJTlNOKFY2X3ZlcSMjVFlQRSMjX2FuZCwgIlF4NCY9dmNtcC5lcShWdTMyLiIg VFlQRTIgIixWdjMyLiIgVFlQRTIgIikiLCBBVFRSSUJTKEFfRVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJ X1ZBKSwgREVTQ1IiIGVxdWFsdG8gd2l0aCBwcmVkaWNhdGUtYW5kIiwgXAorCVZDTVAoUXhWLCBm R0VUUUJJVFMoUXhWLFdJRFRILE1BU0ssaSksICYsID09LCBOLCBTUkMsIE1BU0ssIFdJRFRIKSkg XAorRVhUSU5TTihWNl92ZXEjI1RZUEUjI19vciwgICJReDR8PXZjbXAuZXEoVnUzMi4iIFRZUEUy ICIsVnYzMi4iIFRZUEUyICIpIiwgQVRUUklCUyhBX0VYVEVOU0lPTixBX0NWSSxBX0NWSV9WQSks IERFU0NSIiBlcXVhbHRvIHdpdGggcHJlZGljYXRlLW9yIiwgXAorCVZDTVAoUXhWLCBmR0VUUUJJ VFMoUXhWLFdJRFRILE1BU0ssaSksIHwsID09LCBOLCBTUkMsIE1BU0ssIFdJRFRIKSkgXAorRVhU SU5TTihWNl92ZXEjI1RZUEUjI194b3IsICJReDRePXZjbXAuZXEoVnUzMi4iIFRZUEUyICIsVnYz Mi4iIFRZUEUyICIpIiwgQVRUUklCUyhBX0VYVEVOU0lPTixBX0NWSSxBX0NWSV9WQSksIERFU0NS IiBlcXVhbHRvIHdpdGggcHJlZGljYXRlLXhvciIsIFwKKwlWQ01QKFF4ViwgZkdFVFFCSVRTKFF4 VixXSURUSCxNQVNLLGkpLCBeLCA9PSwgTiwgU1JDLCBNQVNLLCBXSURUSCkpCisKKworTU1WRUNf Q01QKHcsInciLCIiLCJWZWN0b3IgV29yZCBDb21wYXJlICIsIGZWRUxFTSgzMiksIDB4RiwgNCwg dykKK01NVkVDX0NNUChoLCJoIiwiIiwiVmVjdG9yIEhhbGYgQ29tcGFyZSAiLCBmVkVMRU0oMTYp LCAweDMsIDIsIGgpCitNTVZFQ19DTVAoYiwiYiIsIiIsIlZlY3RvciBIYWxmIENvbXBhcmUgIiwg ZlZFTEVNKDgpLCAgMHgxLCAxLCBiKQorTU1WRUNfQ01QR1QodXcsInV3IiwiIiwiVmVjdG9yIFVu c2lnbmVkIEhhbGYgQ29tcGFyZSAiLCBmVkVMRU0oMzIpLCAweEYsIDQsdXcpCitNTVZFQ19DTVBH VCh1aCwidWgiLCIiLCJWZWN0b3IgVW5zaWduZWQgSGFsZiBDb21wYXJlICIsIGZWRUxFTSgxNiks IDB4MywgMix1aCkKK01NVkVDX0NNUEdUKHViLCJ1YiIsIiIsIlZlY3RvciBVbnNpZ25lZCBCeXRl IENvbXBhcmUgIiwgZlZFTEVNKDgpLCAgMHgxLCAxLHViKQorCisvKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqIFByZWRpY2F0ZSBPcGVyYXRpb25z CisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisK K0VYVElOU04oVjZfcHJlZF9zY2FsYXIyLCAiUWQ0PXZzZXRxKFJ0MzIpIiwgICAgICAgICBBVFRS SUJTKEFfRVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJX1ZQKSwgICAiU2V0IFZlY3RvciBQcmVkaWNhdGUg IiwKK3sKKyAgICBmSElERShpbnQgaTspCisgICAgZm9yKGkgPSAwOyBpIDwgZlZCWVRFUygpOyBp KyspIGZTRVRRQklUKFFkVixpLChpIDwgKFJ0ViAmIChmVkJZVEVTKCktMSkpKSA/IDEgOiAwKTsK K30pCisKK0VYVElOU04oVjZfcHJlZF9zY2FsYXIydjIsICJRZDQ9dnNldHEyKFJ0MzIpIiwgICAg ICAgICBBVFRSSUJTKEFfRVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJX1ZQKSwgICAiU2V0IFZlY3RvciBQ cmVkaWNhdGUgIiwKK3sKKyAgICBmSElERShpbnQgaTspCisgICAgZm9yKGkgPSAwOyBpIDwgZlZC WVRFUygpOyBpKyspIGZTRVRRQklUKFFkVixpLChpIDw9ICgoUnRWLTEpICYgKGZWQllURVMoKS0x KSkpID8gMSA6IDApOworfSkKKworCitJVEVSQVRPUl9JTlNOX0FOWV9TTE9UX0RPVUJMRV9WRUMo OCwgc2h1ZmZlcXcsICJRZDQuaD12c2h1ZmZlKFFzNC53LFF0NC53KSIsIlNocmluayBQcmVkaWNh dGUiLCBmU0VUUUJJVChRZFYsaSwgKGkgJiAyKSA/IGZHRVRRQklUKFFzVixpLTIpIDogZkdFVFFC SVQoUXRWLGkpICkgKQorSVRFUkFUT1JfSU5TTl9BTllfU0xPVF9ET1VCTEVfVkVDKDgsIHNodWZm ZXFoLCAiUWQ0LmI9dnNodWZmZShRczQuaCxRdDQuaCkiLCJTaHJpbmsgUHJlZGljYXRlIiwgZlNF VFFCSVQoUWRWLGksIChpICYgMSkgPyBmR0VUUUJJVChRc1YsaS0xKSA6IGZHRVRRQklUKFF0Vixp KSApICkKK0lURVJBVE9SX0lOU05fQU5ZX1NMT1RfRE9VQkxFX1ZFQyg4LCBwcmVkX29yLCAiUWQ0 PW9yKFFzNCxRdDQpIiwiVmVjdG9yIFByZWRpY2F0ZSBPciIsIGZTRVRRQklUKFFkVixpLGZHRVRR QklUKFFzVixpKSB8fCBmR0VUUUJJVChRdFYsaSkgKSApCitJVEVSQVRPUl9JTlNOX0FOWV9TTE9U X0RPVUJMRV9WRUMoOCwgcHJlZF9hbmQsICJRZDQ9YW5kKFFzNCxRdDQpIiwiVmVjdG9yIFByZWRp Y2F0ZSBBbmQiLCBmU0VUUUJJVChRZFYsaSxmR0VUUUJJVChRc1YsaSkgJiYgZkdFVFFCSVQoUXRW LGkpICkgKQorSVRFUkFUT1JfSU5TTl9BTllfU0xPVF9ET1VCTEVfVkVDKDgsIHByZWRfeG9yLCAi UWQ0PXhvcihRczQsUXQ0KSIsIlZlY3RvciBQcmVkaWNhdGUgWG9yIiwgZlNFVFFCSVQoUWRWLGks ZkdFVFFCSVQoUXNWLGkpIF4gZkdFVFFCSVQoUXRWLGkpICkgKQorSVRFUkFUT1JfSU5TTl9BTllf U0xPVF9ET1VCTEVfVkVDKDgsIHByZWRfb3JfbiwgIlFkND1vcihRczQsIVF0NCkiLCJWZWN0b3Ig UHJlZGljYXRlIE9yIHdpdGggbm90IiwgZlNFVFFCSVQoUWRWLGksZkdFVFFCSVQoUXNWLGkpIHx8 ICFmR0VUUUJJVChRdFYsaSkgKSApCitJVEVSQVRPUl9JTlNOX0FOWV9TTE9UX0RPVUJMRV9WRUMo OCwgcHJlZF9hbmRfbiwgIlFkND1hbmQoUXM0LCFRdDQpIiwiVmVjdG9yIFByZWRpY2F0ZSBBbmQg IHdpdGggbm90IiwgZlNFVFFCSVQoUWRWLGksZkdFVFFCSVQoUXNWLGkpICYmICFmR0VUUUJJVChR dFYsaSkgKSApCitJVEVSQVRPUl9JTlNOX0FOWV9TTE9UKDgsIHByZWRfbm90LCAiUWQ0PW5vdChR czQpIiwiVmVjdG9yIFByZWRpY2F0ZSBOb3QiLCBmU0VUUUJJVChRZFYsaSwhZkdFVFFCSVQoUXNW LGkpICkgKQorCisKKworRVhUSU5TTihWNl92Y21vdiwgICJpZiAoUHM0KSBWZDMyPVZ1MzIiLCAg QVRUUklCUyhBX0VYVEVOU0lPTixBX0NWSSxBX0NWSV9WQSksICAgIkNvbmRpdGlvbmFsIE1vdiIs Cit7CitpZiAoZkxTQk9MRChQc1YpKQl7CisJZkhJREUoaW50IGk7KQorCWZWRk9SRUFDSCg4LCBp KSB7CisJCVZkVi51YltpXSA9IFZ1Vi51YltpXTsKKwl9CisJfSBlbHNlIHtDQU5DRUw7fQorfSkK KworRVhUSU5TTihWNl92bmNtb3YsICAiaWYgKCFQczQpIFZkMzI9VnUzMiIsICBBVFRSSUJTKEFf RVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJX1ZBKSwgICAiQ29uZGl0aW9uYWwgTW92IiwKK3sKK2lmIChm TFNCT0xETk9UKFBzVikpCXsKKwlmSElERShpbnQgaTspCisJZlZGT1JFQUNIKDgsIGkpIHsKKwkJ VmRWLnViW2ldID0gVnVWLnViW2ldOworCX0KKwl9IGVsc2Uge0NBTkNFTDt9Cit9KQorCitFWFRJ TlNOKFY2X3ZjY29tYmluZSwgICJpZiAoUHM0KSBWZGQzMj12Y29tYmluZShWdTMyLFZ2MzIpIiwJ QVRUUklCUyhBX0VYVEVOU0lPTixBX0NWSSxBX0NWSV9WQV9EViksICAgIkNvbmRpdGlvbmFsIENv bWJpbmUiLAoreworaWYgKGZMU0JPTEQoUHNWKSkJeworCWZISURFKGludCBpOykKKwlmVkZPUkVB Q0goOCwgaSkgeworCQlWZGRWLnZbMF0udWJbaV0gPSBWdlYudWJbaV07CisJCVZkZFYudlsxXS51 YltpXSA9IFZ1Vi51YltpXTsKKwl9CisJfSBlbHNlIHtDQU5DRUw7fQorfSkKKworRVhUSU5TTihW Nl92bmNjb21iaW5lLCAgImlmICghUHM0KSBWZGQzMj12Y29tYmluZShWdTMyLFZ2MzIpIiwJQVRU UklCUyhBX0VYVEVOU0lPTixBX0NWSSxBX0NWSV9WQV9EViksICAgIkNvbmRpdGlvbmFsIENvbWJp bmUiLAoreworaWYgKGZMU0JPTEROT1QoUHNWKSkJeworCWZISURFKGludCBpOykKKwlmVkZPUkVB Q0goOCwgaSkgeworCQlWZGRWLnZbMF0udWJbaV0gPSBWdlYudWJbaV07CisJCVZkZFYudlsxXS51 YltpXSA9IFZ1Vi51YltpXTsKKwl9CisJfSBlbHNlIHtDQU5DRUw7fQorfSkKKworCisKK0lURVJB VE9SX0lOU05fQU5ZX1NMT1QoOCx2bXV4LCJWZDMyPXZtdXgoUXQ0LFZ1MzIsVnYzMikiLAorIlZl Y3RvciBTZWxlY3QgRWxlbWVudCA4LWJpdCIsCisgICAgVmRWLnViW2ldID0gZkdFVFFCSVQoUXRW LGkpID8gVnVWLnViW2ldIDogVnZWLnViW2ldKQorCitJVEVSQVRPUl9JTlNOX0FOWV9TTE9UX0RP VUJMRV9WRUMoOCx2c3dhcCwiVmRkMzI9dnN3YXAoUXQ0LFZ1MzIsVnYzMikiLAorIlZlY3RvciBT d2FwIEVsZW1lbnQgOC1iaXQiLAorICAgIFZkZFYudlswXS51YltpXSA9ICBmR0VUUUJJVChRdFYs aSkgPyBWdVYudWJbaV0gOiBWdlYudWJbaV07CisJVmRkVi52WzFdLnViW2ldID0gIWZHRVRRQklU KFF0VixpKSA/IFZ1Vi51YltpXSA6IFZ2Vi51YltpXSkKKworCisvKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq CisqCisqICAgTU1WRUNUT1IgU09SVElORworKgorKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2Rl ZmluZSBNTVZFQ19TT1JUKFRZUEUsVFlQRTIsREVTQ1IsRUxFTUVOVFNJWkUsU1JDKVwKK0lURVJB VE9SX0lOU04yX0FOWV9TTE9UKEVMRU1FTlRTSVpFLHZtYXgjI1RZUEUsICJWZDMyPXZtYXgiIFRZ UEUyICIoVnUzMixWdjMyKSIsICJWZDMyLiIjU1JDIj12bWF4KFZ1MzIuIiNTUkMiLFZ2MzIuIiNT UkMiKSIsICJWZWN0b3IgIiBERVNDUiAiIG1heCIsIFZkVi5TUkNbaV0gPSAoVnVWLlNSQ1tpXSA+ IFZ2Vi5TUkNbaV0pID8gVnVWLlNSQ1tpXSA6ICBWdlYuU1JDW2ldKSAgXAorSVRFUkFUT1JfSU5T TjJfQU5ZX1NMT1QoRUxFTUVOVFNJWkUsdm1pbiMjVFlQRSwgIlZkMzI9dm1pbiIgVFlQRTIgIihW dTMyLFZ2MzIpIiwgIlZkMzIuIiNTUkMiPXZtaW4oVnUzMi4iI1NSQyIsVnYzMi4iI1NSQyIpIiwg IlZlY3RvciAiIERFU0NSICIgbWluIiwgVmRWLlNSQ1tpXSA9IChWdVYuU1JDW2ldIDwgVnZWLlNS Q1tpXSkgPyBWdVYuU1JDW2ldIDogIFZ2Vi5TUkNbaV0pCisKK01NVkVDX1NPUlQoYiwiYiIsICJz aWduZWQgYnl0ZSIsICAgIDgsICBiKQorTU1WRUNfU09SVCh1YiwidWIiLCAidW5zaWduZWQgYnl0 ZSIsICAgIDgsICB1YikKK01NVkVDX1NPUlQodWgsInVoIiwgInVuc2lnbmVkIGhhbGZ3b3JkIiwx NiwgdWgpCitNTVZFQ19TT1JUKGgsICAgImgiLCAgICAiaGFsZndvcmQiLCAgICAgICAgIDE2LCBo KQorTU1WRUNfU09SVCh3LCAgICJ3IiwgICAgIndvcmQiLCAgICAgICAgICAgICAzMiwgdykKKwor CisKKworCisKKworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqCisqIFNIVUZGTEVTCisqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitJVEVSQVRPUl9J TlNOMl9BTllfU0xPVCgxNix2c2F0aHViLCJWZDMyPXZzYXRodWIoVnUzMixWdjMyKSIsIlZkMzIu dWI9dnNhdChWdTMyLmgsVnYzMi5oKSIsCisiU2F0dXJhdGUgYW5kIHBhY2sgMzIgaGFsZndvcmRz IHRvIDMyIHVuc2lnbmVkIGJ5dGVzLCBhbmQgaW50ZXJsZWF2ZSB0aGVtIiwKKyAgICBmU0VUQllU RSgwLCBWZFYudWhbaV0sIGZWU0FUVUIoVnZWLmhbaV0pKTsKKyAgICBmU0VUQllURSgxLCBWZFYu dWhbaV0sIGZWU0FUVUIoVnVWLmhbaV0pKSkKKworSVRFUkFUT1JfSU5TTjJfQU5ZX1NMT1QoMzIs dnNhdHdoLCJWZDMyPXZzYXR3aChWdTMyLFZ2MzIpIiwiVmQzMi5oPXZzYXQoVnUzMi53LFZ2MzIu dykiLAorIlNhdHVyYXRlIGFuZCBwYWNrIDE2IHdvcmRzIHRvIDE2IGhhbGZ3b3JkcywgYW5kIGlu dGVybGVhdmUgdGhlbSIsCisgICAgZlNFVEhBTEYoMCwgVmRWLndbaV0sIGZWU0FUSChWdlYud1tp XSkpOworICAgIGZTRVRIQUxGKDEsIFZkVi53W2ldLCBmVlNBVEgoVnVWLndbaV0pKSkKKworSVRF UkFUT1JfSU5TTjJfQU5ZX1NMT1QoMzIsdnNhdHV3dWgsIlZkMzI9dnNhdHV3dWgoVnUzMixWdjMy KSIsIlZkMzIudWg9dnNhdChWdTMyLnV3LFZ2MzIudXcpIiwKKyJTYXR1cmF0ZSBhbmQgcGFjayAx NiB3b3JkcyB0byAxNiBoYWxmd29yZHMsIGFuZCBpbnRlcmxlYXZlIHRoZW0iLAorICAgIGZTRVRI QUxGKDAsIFZkVi53W2ldLCBmVlNBVFVIKFZ2Vi51d1tpXSkpOworICAgIGZTRVRIQUxGKDEsIFZk Vi53W2ldLCBmVlNBVFVIKFZ1Vi51d1tpXSkpKQorCitJVEVSQVRPUl9JTlNOMl9BTllfU0xPVCgx Nix2c2h1ZmZlYiwiVmQzMj12c2h1ZmZlYihWdTMyLFZ2MzIpIiwiVmQzMi5iPXZzaHVmZmUoVnUz Mi5iLFZ2MzIuYikiLAorIlNodWZmbGUgaGFsZiB3b3JkcyB3aXRoIGluIGEgbGFuZSIsCisgICAg ZlNFVEJZVEUoMCwgVmRWLnVoW2ldLCBmR0VUVUJZVEUoMCwgVnZWLnVoW2ldKSk7CisgICAgZlNF VEJZVEUoMSwgVmRWLnVoW2ldLCBmR0VUVUJZVEUoMCwgVnVWLnVoW2ldKSkpCisKK0lURVJBVE9S X0lOU04yX0FOWV9TTE9UKDE2LHZzaHVmZm9iLCJWZDMyPXZzaHVmZm9iKFZ1MzIsVnYzMikiLCJW ZDMyLmI9dnNodWZmbyhWdTMyLmIsVnYzMi5iKSIsCisiU2h1ZmZsZSBoYWxmIHdvcmRzIHdpdGgg aW4gYSBsYW5lIiwKKyAgICBmU0VUQllURSgwLCBWZFYudWhbaV0sIGZHRVRVQllURSgxLCBWdlYu dWhbaV0pKTsKKyAgICBmU0VUQllURSgxLCBWZFYudWhbaV0sIGZHRVRVQllURSgxLCBWdVYudWhb aV0pKSkKKworSVRFUkFUT1JfSU5TTjJfQU5ZX1NMT1QoMzIsdnNodWZlaCwiVmQzMj12c2h1ZmZl aChWdTMyLFZ2MzIpIiwiVmQzMi5oPXZzaHVmZmUoVnUzMi5oLFZ2MzIuaCkiLAorIlNodWZmbGUg aGFsZiB3b3JkcyB3aXRoIGluIGEgbGFuZSIsCisgICAgZlNFVEhBTEYoMCwgVmRWLnV3W2ldLCBm R0VUVUhBTEYoMCwgVnZWLnV3W2ldKSk7CisgICAgZlNFVEhBTEYoMSwgVmRWLnV3W2ldLCBmR0VU VUhBTEYoMCwgVnVWLnV3W2ldKSkpCisKK0lURVJBVE9SX0lOU04yX0FOWV9TTE9UKDMyLHZzaHVm b2gsIlZkMzI9dnNodWZmb2goVnUzMixWdjMyKSIsIlZkMzIuaD12c2h1ZmZvKFZ1MzIuaCxWdjMy LmgpIiwKKyJTaHVmZmxlIGhhbGYgd29yZHMgd2l0aCBpbiBhIGxhbmUiLAorICAgIGZTRVRIQUxG KDAsIFZkVi51d1tpXSwgZkdFVFVIQUxGKDEsIFZ2Vi51d1tpXSkpOworICAgIGZTRVRIQUxGKDEs IFZkVi51d1tpXSwgZkdFVFVIQUxGKDEsIFZ1Vi51d1tpXSkpKQorCisKKworCisvKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioKKyogRG91YmxlIFZlY3RvciBTaHVmZmxlcworKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisK K0VYVElOU04oVjZfdnNodWZmLCAidnNodWZmKFZ5MzIsVngzMixSdDMyKSIsCitBVFRSSUJTKEFf RVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJX1ZQX1ZTKSwKKyIyeDItPjJ4MiB0cmFuc3Bvc2UsIGZvciBt dWx0aXBsZSBkYXRhIHNpemVzLCBpbnBsYWNlIiwKK3sKKwlmSElERShpbnQgb2Zmc2V0OykKKwlm b3IgKG9mZnNldD0xOyBvZmZzZXQ8ZlZCWVRFUygpOyBvZmZzZXQ8PD0xKSB7CisJCWlmICggUnRW ICYgb2Zmc2V0KSB7CisJCQkgICAgZkhJREUoaW50IGs7KSBcCisJCQkJZlZGT1JFQUNIKDgsIGsp IHtcCisJCQkJaWYgKCEoIGsgJiBvZmZzZXQpKSB7CisJCQkJCWZTV0FQQihWeVYudWJba10sIFZ4 Vi51YltrK29mZnNldF0pOworCQkJCX0KKwkJCX0KKwkJfQorCX0KKwl9KQorCitFWFRJTlNOKFY2 X3ZzaHVmZnZkZCwgIlZkZDMyPXZzaHVmZihWdTMyLFZ2MzIsUnQ4KSIsCitBVFRSSUJTKEFfRVhU RU5TSU9OLEFfQ1ZJLEFfQ1ZJX1ZQX1ZTKSwKKyIyeDItPjJ4MiB0cmFuc3Bvc2UgZm9yIG11bHRp cGxlIGRhdGEgc2l6ZXMiLAoreworCWZISURFKGludCBvZmZzZXQ7KQorCVZkZFYudlswXSA9IFZ2 VjsKKwlWZGRWLnZbMV0gPSBWdVY7CisJZm9yIChvZmZzZXQ9MTsgb2Zmc2V0PGZWQllURVMoKTsg b2Zmc2V0PDw9MSkgeworCQlpZiAoIFJ0ViAmIG9mZnNldCkgeworCQkJICAgIGZISURFKGludCBr OykgXAorCQkJCWZWRk9SRUFDSCg4LCBrKSB7XAorCQkJCWlmICghKCBrICYgb2Zmc2V0KSkgewor CQkJCQlmU1dBUEIoVmRkVi52WzFdLnViW2tdLCBWZGRWLnZbMF0udWJbaytvZmZzZXRdKTsKKwkJ CQl9CisJCQl9CisJCX0KKwl9CisJfSkKKworRVhUSU5TTihWNl92ZGVhbCwgInZkZWFsKFZ5MzIs VngzMixSdDMyKSIsCitBVFRSSUJTKEFfRVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJX1ZQX1ZTKSwKKyIg dmVjdG9yIC0gdmVjdG9yIGRlYWwgLSBvciBkZWludGVybGVhdmUsIGZvciBtdWx0aXBsZSBkYXRh IHNpemVzLCBpbnBsYWNlIiwKK3sKKwlmSElERShpbnQgb2Zmc2V0OykKKwlmb3IgKG9mZnNldD1m VkJZVEVTKCk+PjE7IG9mZnNldD4wOyBvZmZzZXQ+Pj0xKSB7CisJCWlmICggUnRWICYgb2Zmc2V0 KSB7CisJCQkgICAgZkhJREUoaW50IGs7KSBcCisJCQkJZlZGT1JFQUNIKDgsIGspIHtcCisJCQkJ aWYgKCEoIGsgJiBvZmZzZXQpKSB7CisJCQkJCWZTV0FQQihWeVYudWJba10sIFZ4Vi51YltrK29m ZnNldF0pOworCQkJCX0KKwkJCX0KKwkJfQorCX0KKwl9KQorCitFWFRJTlNOKFY2X3ZkZWFsdmRk LCAiVmRkMzI9dmRlYWwoVnUzMixWdjMyLFJ0OCkiLAorQVRUUklCUyhBX0VYVEVOU0lPTixBX0NW SSxBX0NWSV9WUF9WUyksCisiIHZlY3RvciAtIHZlY3RvciBkZWFsIC0gb3IgZGVpbnRlcmxlYXZl LCBmb3IgbXVsdGlwbGUgZGF0YSBzaXplcyIsCit7CisJZkhJREUoaW50IG9mZnNldDspCisJVmRk Vi52WzBdID0gVnZWOworCVZkZFYudlsxXSA9IFZ1VjsKKwlmb3IgKG9mZnNldD1mVkJZVEVTKCk+ PjE7IG9mZnNldD4wOyBvZmZzZXQ+Pj0xKSB7CisJCWlmICggUnRWICYgb2Zmc2V0KSB7CisJCQkg ICAgZkhJREUoaW50IGs7KSBcCisJCQkJZlZGT1JFQUNIKDgsIGspIHtcCisJCQkJaWYgKCEoIGsg JiBvZmZzZXQpKSB7CisJCQkJCWZTV0FQQihWZGRWLnZbMV0udWJba10sIFZkZFYudlswXS51Yltr K29mZnNldF0pOworCQkJCX0KKwkJCX0KKwkJfQorCX0KKwl9KQorCisvKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KiovCisKKworCitJVEVSQVRPUl9JTlNOMl9BTllfU0xPVF9ET1VCTEVfVkVDKDMyLHZzaHVmb2Vo LCJWZGQzMj12c2h1ZmZvZWgoVnUzMixWdjMyKSIsIlZkZDMyLmg9dnNodWZmb2UoVnUzMi5oLFZ2 MzIuaCkiLAorIlZlY3RvciBTaHVmZmxlIGhhbGYgd29yZHMiLAorICAgIGZTRVRIQUxGKDAsIFZk ZFYudlswXS51d1tpXSwgZkdFVFVIQUxGKDAsIFZ2Vi51d1tpXSkpOworICAgIGZTRVRIQUxGKDEs IFZkZFYudlswXS51d1tpXSwgZkdFVFVIQUxGKDAsIFZ1Vi51d1tpXSkpOworICAgIGZTRVRIQUxG KDAsIFZkZFYudlsxXS51d1tpXSwgZkdFVFVIQUxGKDEsIFZ2Vi51d1tpXSkpOworICAgIGZTRVRI QUxGKDEsIFZkZFYudlsxXS51d1tpXSwgZkdFVFVIQUxGKDEsIFZ1Vi51d1tpXSkpKQorCitJVEVS QVRPUl9JTlNOMl9BTllfU0xPVF9ET1VCTEVfVkVDKDE2LHZzaHVmb2ViLCJWZGQzMj12c2h1ZmZv ZWIoVnUzMixWdjMyKSIsIlZkZDMyLmI9dnNodWZmb2UoVnUzMi5iLFZ2MzIuYikiLAorIlZlY3Rv ciBTaHVmZmxlIGJ5dGVzIiwKKyAgICBmU0VUQllURSgwLCBWZGRWLnZbMF0udWhbaV0sIGZHRVRV QllURSgwLCBWdlYudWhbaV0pKTsKKyAgICBmU0VUQllURSgxLCBWZGRWLnZbMF0udWhbaV0sIGZH RVRVQllURSgwLCBWdVYudWhbaV0pKTsKKyAgICBmU0VUQllURSgwLCBWZGRWLnZbMV0udWhbaV0s IGZHRVRVQllURSgxLCBWdlYudWhbaV0pKTsKKyAgICBmU0VUQllURSgxLCBWZGRWLnZbMV0udWhb aV0sIGZHRVRVQllURSgxLCBWdVYudWhbaV0pKSkKKworCisvKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqIERlYWwKKyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ki8KKworSVRFUkFUT1JfSU5TTjJfUEVSTVVURV9TTE9UKDMyLCB2ZGVhbGgsICJWZDMyPXZkZWFs aChWdTMyKSIsICJWZDMyLmg9dmRlYWwoVnUzMi5oKSIsCisiRGVhbCBIYWxmd29yZHMiLAorICAg IFZkVi51aFtpICBdID0gZkdFVFVIQUxGKDAsIFZ1Vi51d1tpXSk7CisgICAgVmRWLnVoW2krZlZF TEVNKDMyKV0gPSBmR0VUVUhBTEYoMSwgVnVWLnV3W2ldKSkKKworSVRFUkFUT1JfSU5TTjJfUEVS TVVURV9TTE9UKDE2LCB2ZGVhbGIsICJWZDMyPXZkZWFsYihWdTMyKSIsICJWZDMyLmI9dmRlYWwo VnUzMi5iKSIsCisiRGVhbCBIYWxmd29yZHMiLAorICAgIFZkVi51YltpICAgXSA9IGZHRVRVQllU RSgwLCBWdVYudWhbaV0pOworICAgIFZkVi51YltpK2ZWRUxFTSgxNildID0gZkdFVFVCWVRFKDEs IFZ1Vi51aFtpXSkpCisKK0lURVJBVE9SX0lOU04yX1BFUk1VVEVfU0xPVCgzMiwgdmRlYWxiNHcs ICAiVmQzMj12ZGVhbGI0dyhWdTMyLFZ2MzIpIiwgIlZkMzIuYj12ZGVhbGUoVnUzMi5iLFZ2MzIu YikiLAorIkRlYWwgVHdvIFZlY3RvcnMgQnl0ZXMiLAorICAgIFZkVi51YlswK2kgXSA9IGZHRVRV QllURSgwLCBWdlYudXdbaV0pOworICAgIFZkVi51YltmVkVMRU0oMzIpK2kgXSA9IGZHRVRVQllU RSgyLCBWdlYudXdbaV0pOworICAgIFZkVi51YlsyKmZWRUxFTSgzMikraV0gPSBmR0VUVUJZVEUo MCwgVnVWLnV3W2ldKTsKKyAgICBWZFYudWJbMypmVkVMRU0oMzIpK2ldID0gZkdFVFVCWVRFKDIs IFZ1Vi51d1tpXSkpCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioKKyogc2h1ZmZsZQorKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitJVEVSQVRPUl9J TlNOMl9QRVJNVVRFX1NMT1QoMzIsIHZzaHVmZmgsICJWZDMyPXZzaHVmZmgoVnUzMikiLCAiVmQz Mi5oPXZzaHVmZihWdTMyLmgpIiwKKyJEZWFsIEhhbGZ3b3JkcyIsCisgICAgZlNFVEhBTEYoMCwg VmRWLnV3W2ldLCBWdVYudWhbaV0pOworICAgIGZTRVRIQUxGKDEsIFZkVi51d1tpXSwgVnVWLnVo W2krZlZFTEVNKDMyKV0pKQorCitJVEVSQVRPUl9JTlNOMl9QRVJNVVRFX1NMT1QoMTYsIHZzaHVm ZmIsICJWZDMyPXZzaHVmZmIoVnUzMikiLCAiVmQzMi5iPXZzaHVmZihWdTMyLmIpIiwKKyJEZWFs IEhhbGZ3b3JkcyIsCisgICAgZlNFVEJZVEUoMCwgVmRWLnVoW2ldLCBWdVYudWJbaV0pOworICAg IGZTRVRCWVRFKDEsIFZkVi51aFtpXSwgVnVWLnViW2krZlZFTEVNKDE2KV0pKQorCisKKworCisK Ky8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKgorKiBJTlNFUlQgQU5EIEVYVFJBQ1QKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK0VYVElOU04oVjZfZXh0cmFjdHcsICJSZDMy PXZleHRyYWN0KFZ1MzIsUnMzMikiLAorQVRUUklCUyhBX0VYVEVOU0lPTixBX0NWSSxBX0NWSV9W QSxBX01FTUxJS0UsQV9SRVNUUklDVF9TTE9UME9OTFkpLAorIkV4dHJhY3QgYW4gZWxlbWVudCBm cm9tIGEgdmVjdG9yIHRvIHNjYWxhciIsCitmSElERSh3YXJuKCJSZE49JWQgVnVOPSVkIFJzTj0l ZCBSc1Y9MHglMDh4IHdpZHg9JWQiLFJkTixWdU4sUnNOLFJzViwoKFJzViAmIChmVkJZVEVTKCkt MSkpID4+IDIpKTspCitSZFYgPSBWdVYudXdbIChSc1YgJiAoZlZCWVRFUygpLTEpKSA+PiAyXTsK K2ZISURFKHdhcm4oIlJkVj0weCUwOHgiLFJkVik7KSkKKworRVhUSU5TTihWNl92aW5zZXJ0d3Is ICJWeDMyLnc9dmluc2VydChSdDMyKSIsCitBVFRSSUJTKEFfRVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJ X1ZYKSwKKyJJbnNlcnQgV29yZCBTY2FsYXIgaW50byBWZWN0b3IiLAorVnhWLnV3WzBdID0gUnRW OykKKworCisKKworSVRFUkFUT1JfSU5TTl9NUFlfU0xPVF9MQVRFKDMyLGx2c3BsYXR3LCAiVmQz Mj12c3BsYXQoUnQzMikiLCAiUmVwbGljYXRlcyBzY2FsYXIgYWNjcm9zcyB3b3JkcyBpbiB2ZWN0 b3IiLCBWZFYudXdbaV0gPSBSdFYpCisKK0lURVJBVE9SX0lOU05fTVBZX1NMT1RfTEFURSgxNixs dnNwbGF0aCwgIlZkMzIuaD12c3BsYXQoUnQzMikiLCAiUmVwbGljYXRlcyBzY2FsYXIgYWNjcm9z cyBoYWx2ZXMgaW4gdmVjdG9yIiwgVmRWLnVoW2ldID0gUnRWKQorCitJVEVSQVRPUl9JTlNOX01Q WV9TTE9UX0xBVEUoOCxsdnNwbGF0YiwgIlZkMzIuYj12c3BsYXQoUnQzMikiLCAiUmVwbGljYXRl cyBzY2FsYXIgYWNjcm9zcyBieXRlcyBpbiB2ZWN0b3IiLCBWZFYudWJbaV0gPSBSdFYpCisKKwor SVRFUkFUT1JfSU5TTl9BTllfU0xPVCgzMix2YXNzaWduLCJWZDMyPVZ1MzIiLCJDb3B5IGEgdmVj dG9yIixWZFYud1tpXT1WdVYud1tpXSkKKworCitJVEVSQVRPUl9JTlNOX0FOWV9TTE9UX0RPVUJM RV9WRUMoOCx2Y29tYmluZSwiVmRkMzI9dmNvbWJpbmUoVnUzMixWdjMyKSIsCisiVmVjdG9yIGFz c2lnbiwgQW55IHR3byB0byBWZWN0b3IgUGFpciIsCisgICAgVmRkVi52WzBdLnViW2ldID0gVnZW LnViW2ldOworICAgIFZkZFYudlsxXS51YltpXSA9IFZ1Vi51YltpXSkKKworCisKKy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioKKyogR0VORVJBTCBQRVJNVVRFIE5FVFdPUktTCisqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworRVhU SU5TTihWNl92ZGVsdGEsICJWZDMyPXZkZWx0YShWdTMyLFZ2MzIpIiwgICAgQVRUUklCUyhBX0VY VEVOU0lPTixBX0NWSSxBX0NWSV9WUCksCisiUmV2ZXJzZSBCZW5lcyBCdXR0ZXJmbHkgbmV0d29y ayAiLAoreworICAgIGZISURFKGludCBvZmZzZXQ7KQorICAgIGZISURFKGludCBrOykKKyAgICBm SElERShtbXZlY3Rvcl90IHRtcDspCisgICAgdG1wID0gVnVWOworICAgIGZvciAob2Zmc2V0PWZW QllURVMoKTsgKG9mZnNldD4+PTEpPjA7ICkgeworICAgICAgICBmb3IgKGsgPSAwOyBrPGZWQllU RVMoKTsgaysrKSB7CisgICAgICAgICAgICBWZFYudWJba10gPSAoVnZWLnViW2tdJm9mZnNldCkg PyB0bXAudWJba15vZmZzZXRdIDogdG1wLnViW2tdOworICAgICAgICB9CisgICAgICAgIGZvciAo ayA9IDA7IGs8ZlZCWVRFUygpOyBrKyspIHsKKyAgICAgICAgICAgIHRtcC51YltrXSA9IFZkVi51 YltrXTsKKyAgICAgICAgfQorICAgIH0KK30pCisKKworRVhUSU5TTihWNl92cmRlbHRhLCAiVmQz Mj12cmRlbHRhKFZ1MzIsVnYzMikiLCAgQVRUUklCUyhBX0VYVEVOU0lPTixBX0NWSSxBX0NWSV9W UCksCisiRm9yd2FyZCBCZW5lcyBCdXR0ZXJmbHkgbmV0d29yayAiLAoreworCWZISURFKGludCBv ZmZzZXQ7KQorICAgIGZISURFKGludCBrOykKKyAgICBmSElERShtbXZlY3Rvcl90IHRtcDspCisg ICAgdG1wID0gVnVWOworICAgIGZvciAob2Zmc2V0PTE7IG9mZnNldDxmVkJZVEVTKCk7IG9mZnNl dDw8PTEpeworICAgICAgICBmb3IgKGsgPSAwOyBrPGZWQllURVMoKTsgaysrKSB7CisgICAgICAg ICAgICBWZFYudWJba10gPSAoVnZWLnViW2tdJm9mZnNldCkgPyB0bXAudWJba15vZmZzZXRdIDog dG1wLnViW2tdOworICAgICAgICB9CisgICAgICAgIGZvciAoayA9IDA7IGs8ZlZCWVRFUygpOyBr KyspIHsKKyAgICAgICAgICAgIHRtcC51YltrXSA9IFZkVi51YltrXTsKKyAgICAgICAgfQorICAg IH0KK30pCisKKworCisKKworSVRFUkFUT1JfSU5TTjJfU0hJRlRfU0xPVCgzMix2Y2wwdywiVmQz Mj12Y2wwdyhWdTMyKSIsIlZkMzIudXc9dmNsMChWdTMyLnV3KSIsICAgICAgICAgIkNvdW50IExl YWRpbmcgWmVyb3MgaW4gV29yZCIsICAgICBWZFYudXdbaV09ZkNMMV80KH5WdVYudXdbaV0pKQor SVRFUkFUT1JfSU5TTjJfU0hJRlRfU0xPVCgxNix2Y2wwaCwiVmQzMj12Y2wwaChWdTMyKSIsIlZk MzIudWg9dmNsMChWdTMyLnVoKSIsICAgICAgICAgIkNvdW50IExlYWRpbmcgWmVyb3MgaW4gV29y ZCIsICAgIFZkVi51aFtpXT1mQ0wxXzIoflZ1Vi51aFtpXSkpCisKK0lURVJBVE9SX0lOU04yX1NI SUZUX1NMT1QoMzIsdm5vcm1hbXR3LCJWZDMyPXZub3JtYW10dyhWdTMyKSIsIlZkMzIudz12bm9y bWFtdChWdTMyLncpIiwiTm9ybSBBbW91bnQgV29yZCIsCitWZFYud1tpXT1mTUFYKGZDTDFfNCh+ VnVWLndbaV0pLGZDTDFfNChWdVYud1tpXSkpLTE7IGZISURFKElWMURFQUQoKTspKQorSVRFUkFU T1JfSU5TTjJfU0hJRlRfU0xPVCgxNix2bm9ybWFtdGgsIlZkMzI9dm5vcm1hbXRoKFZ1MzIpIiwi VmQzMi5oPXZub3JtYW10KFZ1MzIuaCkiLCJOb3JtIEFtb3VudCBIYWxmd29yZCIsCitWZFYuaFtp XT1mTUFYKGZDTDFfMih+VnVWLmhbaV0pLGZDTDFfMihWdVYuaFtpXSkpLTE7IGZISURFKElWMURF QUQoKTspKQorCitJVEVSQVRPUl9JTlNOX1NISUZUX1NMT1RfVlZfTEFURSgzMix2YWRkY2xidywi VmQzMi53PXZhZGQodmNsYihWdTMyLncpLFZ2MzIudykiLAorIkNvdW50IGxlYWRpbmcgYml0cyBh bmQgYWRkIiwKK1ZkVi53W2ldID0gZk1BWChmQ0wxXzQoflZ1Vi53W2ldKSxmQ0wxXzQoVnVWLndb aV0pKSArIFZ2Vi53W2ldKQorCitJVEVSQVRPUl9JTlNOX1NISUZUX1NMT1RfVlZfTEFURSgxNix2 YWRkY2xiaCwiVmQzMi5oPXZhZGQodmNsYihWdTMyLmgpLFZ2MzIuaCkiLAorIkNvdW50IGxlYWRp bmcgYml0cyBhbmQgYWRkIiwKK1ZkVi5oW2ldID0gZk1BWChmQ0wxXzIoflZ1Vi5oW2ldKSxmQ0wx XzIoVnVWLmhbaV0pKSArIFZ2Vi5oW2ldKQorCisKK0lURVJBVE9SX0lOU04yX1NISUZUX1NMT1Qo MTYsdnBvcGNvdW50aCwiVmQzMj12cG9wY291bnRoKFZ1MzIpIiwiVmQzMi5oPXZwb3Bjb3VudChW dTMyLmgpIiwgICAiQ291bnQgTGVhZGluZyBaZXJvcyBpbiBXb3JkIiwgIFZkVi51aFtpXT1mQ09V TlRPTkVTXzIoVnVWLnVoW2ldKSkKKworCisjZGVmaW5lIGZISVNUKElOUFVUVkVDKSBcCisJZlVB UkNIX05PVEVfUFVNUF80WCgpOyBcCisJZkhJREUoaW50IGxhbmU7KSBcCisJZkhJREUobW12ZWN0 b3JfdCB0bXA7KSBcCisJZlZGT1JFQUNIKDEyOCwgbGFuZSkgeyBcCisJCWZvciAoZkhJREUoaW50 IClpPTA7IGk8MTI4Lzg7ICsraSkgeyBcCisJCQl1bnNpZ25lZCBjaGFyIHZhbHVlID0gSU5QVVRW RUMudWJbKDEyOC84KSpsYW5lK2ldOyBcCisJCQl1bnNpZ25lZCBjaGFyIHJlZ25vID0gdmFsdWU+ PjM7IFwKKwkJCXVuc2lnbmVkIGNoYXIgZWxlbWVudCA9IHZhbHVlICYgNzsgXAorCQkJUkVBRF9F WFRfVlJFRyhyZWdubyx0bXAsMCk7IFwKKwkJCXRtcC51aFsoMTI4LzE2KSpsYW5lKyhlbGVtZW50 KV0rKzsgXAorCQkJV1JJVEVfRVhUX1ZSRUcocmVnbm8sdG1wLEVYVF9ORVcpOyBcCisJCX0gXAor CX0KKworI2RlZmluZSBmSElTVFEoSU5QVVRWRUMsUVZBTCkgXAorCWZVQVJDSF9OT1RFX1BVTVBf NFgoKTsgXAorCWZISURFKGludCBsYW5lOykgXAorCWZISURFKG1tdmVjdG9yX3QgdG1wOykgXAor CWZWRk9SRUFDSCgxMjgsIGxhbmUpIHsgXAorCQlmb3IgKGZISURFKGludCApaT0wOyBpPDEyOC84 OyArK2kpIHsgXAorCQkJdW5zaWduZWQgY2hhciB2YWx1ZSA9IElOUFVUVkVDLnViWygxMjgvOCkq bGFuZStpXTsgXAorCQkJdW5zaWduZWQgY2hhciByZWdubyA9IHZhbHVlPj4zOyBcCisJCQl1bnNp Z25lZCBjaGFyIGVsZW1lbnQgPSB2YWx1ZSAmIDc7IFwKKwkJCVJFQURfRVhUX1ZSRUcocmVnbm8s dG1wLDApOyBcCisJCQlpZiAoZkdFVFFCSVQoUVZBTCwxMjgvOCpsYW5lK2kpKSB0bXAudWhbKDEy OC8xNikqbGFuZSsoZWxlbWVudCldKys7IFwKKwkJCVdSSVRFX0VYVF9WUkVHKHJlZ25vLHRtcCxF WFRfTkVXKTsgXAorCQl9IFwKKwl9CisKKworCitFWFRJTlNOKFY2X3ZoaXN0LCAidmhpc3QiLEFU VFJJQlMoQV9FWFRFTlNJT04sQV9DVkksQV9DVklfNFNMT1QpLCAidmhpc3QgaW5zdHJ1Y3Rpb24i LHsgZkhJREUobW12ZWN0b3JfdCBpbnB1dFZlYzspIGlucHV0VmVjPWZUTVBWREFUQSgpOyBmSElT VChpbnB1dFZlYyk7IH0pCitFWFRJTlNOKFY2X3ZoaXN0cSwgInZoaXN0KFF2NCkiLEFUVFJJQlMo QV9FWFRFTlNJT04sQV9DVkksQV9DVklfNFNMT1QpLCAidmhpc3QgaW5zdHJ1Y3Rpb24iLHsgZkhJ REUobW12ZWN0b3JfdCBpbnB1dFZlYzspIGlucHV0VmVjPWZUTVBWREFUQSgpOyBmSElTVFEoaW5w dXRWZWMsUXZWKTsgfSkKKworI3VuZGVmIGZISVNUCisjdW5kZWYgZkhJU1RRCisKKworLyogKioq KiBXRUlHSFRFRCBISVNUT0dSQU0gKioqKiAqLworCisKKyNpZiAxCisjZGVmaW5lIFdISVNUKEVM LE1BU0ssQlNISUZULENPTkQsU0FURikgXAorCWZISURFKHVuc2lnbmVkIGludCkgYnVja2V0ID0g ZkdFVFVCWVRFKDAsaW5wdXQuaFtpXSk7IFwKKwlmSElERSh1bnNpZ25lZCBpbnQpIHdlaWdodCA9 IGZHRVRVQllURSgxLGlucHV0LmhbaV0pOyBcCisJZkhJREUodW5zaWduZWQgaW50KSB2aW5kZXgg PSAoYnVja2V0ID4+IDMpICYgMHgxRjsgXAorCWZISURFKHVuc2lnbmVkIGludCkgZWxpbmRleCA9 ICgoaT4+QlNISUZUKSAmICh+TUFTSykpIHwgKChidWNrZXQ+PkJTSElGVCkgJiBNQVNLKTsgXAor CWZISURFKG1tdmVjdG9yX3QgdG1wOykgXAorCVJFQURfRVhUX1ZSRUcodmluZGV4LHRtcCwwKTsg XAorCUNPTkQgdG1wLkVMW2VsaW5kZXhdID0gU0FURih0bXAuRUxbZWxpbmRleF0gKyB3ZWlnaHQp OyBcCisJV1JJVEVfRVhUX1ZSRUcodmluZGV4LHRtcCxFWFRfTkVXKTsgXAorCWZVQVJDSF9OT1RF X1BVTVBfMlgoKTsKKworSVRFUkFUT1JfSU5TTl9WSElTVExJS0UoMTYsdndoaXN0MjU2LCJ2d2hp c3QyNTYiLCJ2ZWN0b3Igd2VpZ2h0ZWQgaGlzdG9ncmFtIGhhbGZ3b3JkIGNvdW50ZXJzIiwgV0hJ U1QodWgsNywwLCwpKQorSVRFUkFUT1JfSU5TTl9WSElTVExJS0UoMTYsdndoaXN0MjU2cSwidndo aXN0MjU2KFF2NCkiLCJ2ZWN0b3Igd2VpZ2h0ZWQgaGlzdG9ncmFtIGhhbGZ3b3JkIGNvdW50ZXJz IiwgV0hJU1QodWgsNywwLGlmIChmR0VUUUJJVChRdlYsMippKSksKSkKK0lURVJBVE9SX0lOU05f VkhJU1RMSUtFKDE2LHZ3aGlzdDI1Nl9zYXQsInZ3aGlzdDI1NjpzYXQiLCJ2ZWN0b3Igd2VpZ2h0 ZWQgaGlzdG9ncmFtIGhhbGZ3b3JkIGNvdW50ZXJzIiwgV0hJU1QodWgsNywwLCxmVlNBVFVIKSkK K0lURVJBVE9SX0lOU05fVkhJU1RMSUtFKDE2LHZ3aGlzdDI1NnFfc2F0LCJ2d2hpc3QyNTYoUXY0 KTpzYXQiLCJ2ZWN0b3Igd2VpZ2h0ZWQgaGlzdG9ncmFtIGhhbGZ3b3JkIGNvdW50ZXJzIiwgV0hJ U1QodWgsNywwLGlmIChmR0VUUUJJVChRdlYsMippKSksZlZTQVRVSCkpCitJVEVSQVRPUl9JTlNO X1ZISVNUTElLRSgxNix2d2hpc3QxMjgsInZ3aGlzdDEyOCIsInZlY3RvciB3ZWlnaHRlZCBoaXN0 b2dyYW0gd29yZCBjb3VudGVycyIsIFdISVNUKHV3LDMsMSwsKSkKK0lURVJBVE9SX0lOU05fVkhJ U1RMSUtFKDE2LHZ3aGlzdDEyOHEsInZ3aGlzdDEyOChRdjQpIiwidmVjdG9yIHdlaWdodGVkIGhp c3RvZ3JhbSB3b3JkIGNvdW50ZXJzIiwgV0hJU1QodXcsMywxLGlmIChmR0VUUUJJVChRdlYsMipp KSksKSkKK0lURVJBVE9SX0lOU05fVkhJU1RMSUtFKDE2LHZ3aGlzdDEyOG0sInZ3aGlzdDEyOCgj dTEpIiwidmVjdG9yIHdlaWdodGVkIGhpc3RvZ3JhbSB3b3JkIGNvdW50ZXJzIiwgV0hJU1QodXcs MywxLGlmICgoYnVja2V0ICYgMSkgPT0gdWlWKSwpKQorSVRFUkFUT1JfSU5TTl9WSElTVExJS0Uo MTYsdndoaXN0MTI4cW0sInZ3aGlzdDEyOChRdjQsI3UxKSIsInZlY3RvciB3ZWlnaHRlZCBoaXN0 b2dyYW0gd29yZCBjb3VudGVycyIsIFdISVNUKHV3LDMsMSxpZiAoKChidWNrZXQgJiAxKSA9PSB1 aVYpICYmIGZHRVRRQklUKFF2ViwyKmkpKSwpKQorCisKKyNlbmRpZgorCisKKworLyogKioqKioq ICAgbG9va3VwIHRhYmxlIGluc3RydWN0aW9ucyAgICAgICAgICAgICAgICAgICAgICAgICAgKioq KioqKioqKiogICovCisKKy8qIFVzZSBsb3cgYml0cyBmcm9tIGlkeCB0byBjaG9vc2UgbmV4dC1i aWdnZXIgZWxlbWVudHMgZnJvbSB2ZWN0b3IsIHRoZW4gdXNlIExTQiBmcm9tIGlkeCB0byBjaG9v c2Ugb2RkIG9yIGV2ZW4gZWxlbWVudCAqLworCitJVEVSQVRPUl9JTlNOX1BFUk1VVEVfU0xPVCg4 LHZsdXR2dmIsIlZkMzIuYj12bHV0MzIoVnUzMi5iLFZ2MzIuYixSdDgpIiwidmVjdG9yLXZlY3Rv ciB0YWJsZSBsb29rdXAiLAorZkhJREUodW5zaWduZWQgaW50IGlkeDspIGZISURFKGludCBtYXRj aHZhbDspIGZISURFKGludCBvZGRoYWxmOykKK21hdGNodmFsID0gUnRWICYgMHg3Oworb2RkaGFs ZiA9IChSdFYgPj4gKGZWRUNMT0dTSVpFKCktNikpICYgMHgxOworaWR4ID0gVnVWLnViW2ldOwor VmRWLmJbaV0gPSAoKGlkeCAmIDB4RTApID09IChtYXRjaHZhbCA8PCA1KSkgPyBmR0VUQllURShv ZGRoYWxmLFZ2Vi5oW2lkeCAlIGZWRUxFTSgxNildKSA6IDApCisKKworSVRFUkFUT1JfSU5TTl9Q RVJNVVRFX1NMT1RfRE9VQkxFX1ZFQyg4LHZsdXR2dmJfb3JhY2MsIlZ4MzIuYnw9dmx1dDMyKFZ1 MzIuYixWdjMyLmIsUnQ4KSIsInZlY3Rvci12ZWN0b3IgdGFibGUgbG9va3VwIiwKK2ZISURFKHVu c2lnbmVkIGludCBpZHg7KSBmSElERShpbnQgbWF0Y2h2YWw7KSBmSElERShpbnQgb2RkaGFsZjsp CittYXRjaHZhbCA9IFJ0ViAmIDB4NzsKK29kZGhhbGYgPSAoUnRWID4+IChmVkVDTE9HU0laRSgp LTYpKSAmIDB4MTsKK2lkeCA9IFZ1Vi51YltpXTsKK1Z4Vi5iW2ldIHw9ICgoaWR4ICYgMHhFMCkg PT0gKG1hdGNodmFsIDw8IDUpKSA/IGZHRVRCWVRFKG9kZGhhbGYsVnZWLmhbaWR4ICUgZlZFTEVN KDE2KV0pIDogMCkKKworSVRFUkFUT1JfSU5TTl9QRVJNVVRFX1NMT1RfRE9VQkxFX1ZFQygxNix2 bHV0dndoLCJWZGQzMi5oPXZsdXQxNihWdTMyLmIsVnYzMi5oLFJ0OCkiLCJ2ZWN0b3ItdmVjdG9y IHRhYmxlIGxvb2t1cCIsCitmSElERSh1bnNpZ25lZCBpbnQgaWR4OykgZkhJREUoaW50IG1hdGNo dmFsOykgZkhJREUoaW50IG9kZGhhbGY7KQorbWF0Y2h2YWwgPSBSdFYgJiAweEY7CitvZGRoYWxm ID0gKFJ0ViA+PiAoZlZFQ0xPR1NJWkUoKS02KSkgJiAweDE7CitpZHggPSBmR0VUVUJZVEUoMCxW dVYudWhbaV0pOworVmRkVi52WzBdLmhbaV0gPSAoKGlkeCAmIDB4RjApID09IChtYXRjaHZhbCA8 PCA0KSkgPyBmR0VUSEFMRihvZGRoYWxmLFZ2Vi53W2lkeCAlIGZWRUxFTSgzMildKSA6IDA7Citp ZHggPSBmR0VUVUJZVEUoMSxWdVYudWhbaV0pOworVmRkVi52WzFdLmhbaV0gPSAoKGlkeCAmIDB4 RjApID09IChtYXRjaHZhbCA8PCA0KSkgPyBmR0VUSEFMRihvZGRoYWxmLFZ2Vi53W2lkeCAlIGZW RUxFTSgzMildKSA6IDApCisKK0lURVJBVE9SX0lOU05fUEVSTVVURV9TTE9UX0RPVUJMRV9WRUMo MTYsdmx1dHZ3aF9vcmFjYywiVnh4MzIuaHw9dmx1dDE2KFZ1MzIuYixWdjMyLmgsUnQ4KSIsInZl Y3Rvci12ZWN0b3IgdGFibGUgbG9va3VwIiwKK2ZISURFKHVuc2lnbmVkIGludCBpZHg7KSBmSElE RShpbnQgbWF0Y2h2YWw7KSBmSElERShpbnQgb2RkaGFsZjspCittYXRjaHZhbCA9IGZHRVRVQllU RSgwLFJ0VikgJiAweEY7CitvZGRoYWxmID0gKFJ0ViA+PiAoZlZFQ0xPR1NJWkUoKS02KSkgJiAw eDE7CitpZHggPSBmR0VUVUJZVEUoMCxWdVYudWhbaV0pOworVnh4Vi52WzBdLmhbaV0gfD0gKChp ZHggJiAweEYwKSA9PSAobWF0Y2h2YWwgPDwgNCkpID8gZkdFVEhBTEYob2RkaGFsZixWdlYud1tp ZHggJSBmVkVMRU0oMzIpXSkgOiAwOworaWR4ID0gZkdFVFVCWVRFKDEsVnVWLnVoW2ldKTsKK1Z4 eFYudlsxXS5oW2ldIHw9ICgoaWR4ICYgMHhGMCkgPT0gKG1hdGNodmFsIDw8IDQpKSA/IGZHRVRI QUxGKG9kZGhhbGYsVnZWLndbaWR4ICUgZlZFTEVNKDMyKV0pIDogMCkKKworSVRFUkFUT1JfSU5T Tl9QRVJNVVRFX1NMT1QoOCx2bHV0dnZiaSwiVmQzMi5iPXZsdXQzMihWdTMyLmIsVnYzMi5iLCN1 MykiLCJ2ZWN0b3ItdmVjdG9yIHRhYmxlIGxvb2t1cCIsCitmSElERSh1bnNpZ25lZCBpbnQgaWR4 OykgZkhJREUoaW50IG1hdGNodmFsOykgZkhJREUoaW50IG9kZGhhbGY7KQorbWF0Y2h2YWwgPSB1 aVYgJiAweDc7CitvZGRoYWxmID0gKHVpViA+PiAoZlZFQ0xPR1NJWkUoKS02KSkgJiAweDE7Citp ZHggPSBWdVYudWJbaV07CitWZFYuYltpXSA9ICgoaWR4ICYgMHhFMCkgPT0gKG1hdGNodmFsIDw8 IDUpKSA/IGZHRVRCWVRFKG9kZGhhbGYsVnZWLmhbaWR4ICUgZlZFTEVNKDE2KV0pIDogMCkKKwor CitJVEVSQVRPUl9JTlNOX1BFUk1VVEVfU0xPVF9ET1VCTEVfVkVDKDgsdmx1dHZ2Yl9vcmFjY2ks IlZ4MzIuYnw9dmx1dDMyKFZ1MzIuYixWdjMyLmIsI3UzKSIsInZlY3Rvci12ZWN0b3IgdGFibGUg bG9va3VwIiwKK2ZISURFKHVuc2lnbmVkIGludCBpZHg7KSBmSElERShpbnQgbWF0Y2h2YWw7KSBm SElERShpbnQgb2RkaGFsZjspCittYXRjaHZhbCA9IHVpViAmIDB4NzsKK29kZGhhbGYgPSAodWlW ID4+IChmVkVDTE9HU0laRSgpLTYpKSAmIDB4MTsKK2lkeCA9IFZ1Vi51YltpXTsKK1Z4Vi5iW2ld IHw9ICgoaWR4ICYgMHhFMCkgPT0gKG1hdGNodmFsIDw8IDUpKSA/IGZHRVRCWVRFKG9kZGhhbGYs VnZWLmhbaWR4ICUgZlZFTEVNKDE2KV0pIDogMCkKKworSVRFUkFUT1JfSU5TTl9QRVJNVVRFX1NM T1RfRE9VQkxFX1ZFQygxNix2bHV0dndoaSwiVmRkMzIuaD12bHV0MTYoVnUzMi5iLFZ2MzIuaCwj dTMpIiwidmVjdG9yLXZlY3RvciB0YWJsZSBsb29rdXAiLAorZkhJREUodW5zaWduZWQgaW50IGlk eDspIGZISURFKGludCBtYXRjaHZhbDspIGZISURFKGludCBvZGRoYWxmOykKK21hdGNodmFsID0g dWlWICYgMHhGOworb2RkaGFsZiA9ICh1aVYgPj4gKGZWRUNMT0dTSVpFKCktNikpICYgMHgxOwor aWR4ID0gZkdFVFVCWVRFKDAsVnVWLnVoW2ldKTsKK1ZkZFYudlswXS5oW2ldID0gKChpZHggJiAw eEYwKSA9PSAobWF0Y2h2YWwgPDwgNCkpID8gZkdFVEhBTEYob2RkaGFsZixWdlYud1tpZHggJSBm VkVMRU0oMzIpXSkgOiAwOworaWR4ID0gZkdFVFVCWVRFKDEsVnVWLnVoW2ldKTsKK1ZkZFYudlsx XS5oW2ldID0gKChpZHggJiAweEYwKSA9PSAobWF0Y2h2YWwgPDwgNCkpID8gZkdFVEhBTEYob2Rk aGFsZixWdlYud1tpZHggJSBmVkVMRU0oMzIpXSkgOiAwKQorCitJVEVSQVRPUl9JTlNOX1BFUk1V VEVfU0xPVF9ET1VCTEVfVkVDKDE2LHZsdXR2d2hfb3JhY2NpLCJWeHgzMi5ofD12bHV0MTYoVnUz Mi5iLFZ2MzIuaCwjdTMpIiwidmVjdG9yLXZlY3RvciB0YWJsZSBsb29rdXAiLAorZkhJREUodW5z aWduZWQgaW50IGlkeDspIGZISURFKGludCBtYXRjaHZhbDspIGZISURFKGludCBvZGRoYWxmOykK K21hdGNodmFsID0gdWlWICYgMHhGOworb2RkaGFsZiA9ICh1aVYgPj4gKGZWRUNMT0dTSVpFKCkt NikpICYgMHgxOworaWR4ID0gZkdFVFVCWVRFKDAsVnVWLnVoW2ldKTsKK1Z4eFYudlswXS5oW2ld IHw9ICgoaWR4ICYgMHhGMCkgPT0gKG1hdGNodmFsIDw8IDQpKSA/IGZHRVRIQUxGKG9kZGhhbGYs VnZWLndbaWR4ICUgZlZFTEVNKDMyKV0pIDogMDsKK2lkeCA9IGZHRVRVQllURSgxLFZ1Vi51aFtp XSk7CitWeHhWLnZbMV0uaFtpXSB8PSAoKGlkeCAmIDB4RjApID09IChtYXRjaHZhbCA8PCA0KSkg PyBmR0VUSEFMRihvZGRoYWxmLFZ2Vi53W2lkeCAlIGZWRUxFTSgzMildKSA6IDApCisKK0lURVJB VE9SX0lOU05fUEVSTVVURV9TTE9UKDgsdmx1dHZ2Yl9ubSwiVmQzMi5iPXZsdXQzMihWdTMyLmIs VnYzMi5iLFJ0OCk6bm9tYXRjaCIsInZlY3Rvci12ZWN0b3IgdGFibGUgbG9va3VwIiwKK2ZISURF KHVuc2lnbmVkIGludCBpZHg7KSBmSElERShpbnQgb2RkaGFsZjspIGZISURFKGludCBtYXRjaHZh bDspCisgICAgbWF0Y2h2YWwgPSBSdFYgJiAweDc7CisgICAgb2RkaGFsZiA9IChSdFYgPj4gKGZW RUNMT0dTSVpFKCktNikpICYgMHgxOworICAgIGlkeCA9IFZ1Vi51YltpXTsKKyAgICBpZHggPSAo aWR4JjB4MUYpIHwgKG1hdGNodmFsPDw1KTsKKyAgICBWZFYuYltpXSA9IGZHRVRCWVRFKG9kZGhh bGYsVnZWLmhbaWR4ICUgZlZFTEVNKDE2KV0pKQorCitJVEVSQVRPUl9JTlNOX1BFUk1VVEVfU0xP VF9ET1VCTEVfVkVDKDE2LHZsdXR2d2hfbm0sIlZkZDMyLmg9dmx1dDE2KFZ1MzIuYixWdjMyLmgs UnQ4KTpub21hdGNoIiwidmVjdG9yLXZlY3RvciB0YWJsZSBsb29rdXAiLAorZkhJREUodW5zaWdu ZWQgaW50IGlkeDspIGZISURFKGludCBvZGRoYWxmOykgZkhJREUoaW50IG1hdGNodmFsOykKKyAg ICBtYXRjaHZhbCA9IFJ0ViAmIDB4RjsKKyAgICBvZGRoYWxmID0gKFJ0ViA+PiAoZlZFQ0xPR1NJ WkUoKS02KSkgJiAweDE7CisgICAgaWR4ID0gZkdFVFVCWVRFKDAsVnVWLnVoW2ldKTsKKyAgICBp ZHggPSAoaWR4JjB4MEYpIHwgKG1hdGNodmFsPDw0KTsKKyAgICBWZGRWLnZbMF0uaFtpXSA9IGZH RVRIQUxGKG9kZGhhbGYsVnZWLndbaWR4ICUgZlZFTEVNKDMyKV0pOworICAgIGlkeCA9IGZHRVRV QllURSgxLFZ1Vi51aFtpXSk7CisgICAgaWR4ID0gKGlkeCYweDBGKSB8IChtYXRjaHZhbDw8NCk7 CisgICAgVmRkVi52WzFdLmhbaV0gPSBmR0VUSEFMRihvZGRoYWxmLFZ2Vi53W2lkeCAlIGZWRUxF TSgzMildKSkKKworCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorTk9OIExJTkVBUiAtIFY2 NQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKi8KKworSVRFUkFUT1JfSU5TTl9TTE9UMl9ET1VCTEVf VkVDKDE2LHZtcGFoaHNhdCwiVngzMi5oPXZtcGEoVngzMi5oLFZ1MzIuaCxSdHQzMi5oKTpzYXQi LCJwaWVjZXdpc2UgbGluZWFyIGFwcHJveGltYXRpb24iLAorICAgIFZ4Vi5oW2ldPSBmVlNBVEgo ICggKCBmTVBZMTZTUyhWeFYuaFtpXSxWdVYuaFtpXSk8PDEpICsgKGZHRVRIQUxGKCggKFZ1Vi5o W2ldPj4xNCkmMHgzKSwgUnR0ViApPDwxNSkpPj4xNikpCisKKworSVRFUkFUT1JfSU5TTl9TTE9U Ml9ET1VCTEVfVkVDKDE2LHZtcGF1aHVoc2F0LCJWeDMyLmg9dm1wYShWeDMyLmgsVnUzMi51aCxS dHQzMi51aCk6c2F0IiwicGllY2V3aXNlIGxpbmVhciBhcHByb3hpbWF0aW9uIiwKKyAgICBWeFYu aFtpXT0gZlZTQVRIKCAoICBmTVBZMTZTVShWeFYuaFtpXSxWdVYudWhbaV0pICsgKGZHRVRVSEFM RigoKFZ1Vi51aFtpXT4+MTQpJjB4MyksIFJ0dFYgKTw8MTUpKT4+MTYpKQorCitJVEVSQVRPUl9J TlNOX1NMT1QyX0RPVUJMRV9WRUMoMTYsdm1wc3VodWhzYXQsIlZ4MzIuaD12bXBzKFZ4MzIuaCxW dTMyLnVoLFJ0dDMyLnVoKTpzYXQiLCJwaWVjZXdpc2UgbGluZWFyIGFwcHJveGltYXRpb24iLAor ICAgIFZ4Vi5oW2ldPSBmVlNBVEgoICggIGZNUFkxNlNVKFZ4Vi5oW2ldLFZ1Vi51aFtpXSkgLSAo ZkdFVFVIQUxGKCgoVnVWLnVoW2ldPj4xNCkmMHgzKSwgUnR0ViApPDwxNSkpPj4xNikpCisKKwor SVRFUkFUT1JfSU5TTl9TTE9UMl9ET1VCTEVfVkVDKDE2LHZsdXQ0LCJWZDMyLmg9dmx1dDQoVnUz Mi51aCxSdHQzMi5oKSIsIjQgZW50cnkgbG9va3VwIHRhYmxlIiwKKyAgICBWZFYuaFtpXT0gZkdF VEhBTEYoICAoKFZ1Vi5oW2ldPj4xNCkmMHgzKSwgUnR0ViApKQorCisKKworLyoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKgorVjY1CisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitJVEVSQVRPUl9JTlNO X01QWV9TTE9UX05PVjEoMzIsdm1weXVoZSwiVmQzMi51dz12bXB5ZShWdTMyLnVoLFJ0MzIudWgp IiwKKyJWZWN0b3IgZXZlbiBoYWxmd29yZCB1bnNpZ25lZCBtdWx0aXBseSBieSBzY2FsYXIiLAor ICAgIFZkVi51d1tpXSA9IGZNUFkxNlVVKGZHRVRVSEFMRigwLCBWdVYudXdbaV0pLGZHRVRVSEFM RigwLFJ0VikpKQorCisKK0lURVJBVE9SX0lOU05fTVBZX1NMT1RfTk9WMSgzMix2bXB5dWhlX2Fj YywiVngzMi51dys9dm1weWUoVnUzMi51aCxSdDMyLnVoKSIsCisiVmVjdG9yIGV2ZW4gaGFsZndv cmQgdW5zaWduZWQgbXVsdGlwbHkgYnkgc2NhbGFyIiwKKyAgICBWeFYudXdbaV0gKz0gZk1QWTE2 VVUoZkdFVFVIQUxGKDAsIFZ1Vi51d1tpXSksZkdFVFVIQUxGKDAsUnRWKSkpCisKKworCisKK0VY VElOU04oVjZfdmdhdGhlcm13LCAgInZ0bXAudz12Z2F0aGVyKFJ0MzIsTXUyLFZ2MzIudykudyIs IEFUVFJJQlMoQV9FWFRFTlNJT04sQV9DVkksQV9DVklfR0FUSEVSLEFfQ1ZJX1ZBLEFfQ1ZJX1ZN LEFfQ1ZJX1RNUF9EU1QsQV9NRU1MSUtFKSwgIkdhdGhlciBXb3JkcyIsCit7CisgICAgZkhJREUo aW50IGk7KQorCWZISURFKGludCBlbGVtZW50X3NpemUgPSA0OykKKyAgICBmSElERShmR0FUSEVS X0lOSVQoIFJ0ViwgTXVWLCBlbGVtZW50X3NpemUpOykKKyAgICBmVkxBU1RCWVRFKE11ViwgZWxl bWVudF9zaXplKTsKKyAgICBmVkFMSUdOKFJ0ViwgZWxlbWVudF9zaXplKTsKKyAgICBmVkZPUkVB Q0goMzIsIGkpIHsKKyAgICAgICAgRUEgPSBSdFYrVnZWLnV3W2ldOworICAgICAgICBmVkxPR19W VENNX0dBVEhFUl9XT1JEKEVBLCBWdlYudXdbaV0sIGksTXVWKTsKKyAgICB9CisgICAgZkdBVEhF Ul9GSU5JU0goKQorfSkKK0VYVElOU04oVjZfdmdhdGhlcm1oLCAgInZ0bXAuaD12Z2F0aGVyKFJ0 MzIsTXUyLFZ2MzIuaCkuaCIsIEFUVFJJQlMoQV9FWFRFTlNJT04sQV9DVkksQV9DVklfR0FUSEVS LEFfQ1ZJX1ZBLEFfQ1ZJX1ZNLEFfQ1ZJX1RNUF9EU1QsQV9NRU1MSUtFKSwgIkdhdGhlciBoYWxm d29yZHMiLAoreworICAgIGZISURFKGludCBpOykKKwlmSElERShpbnQgZWxlbWVudF9zaXplID0g MjspCisgICAgZkhJREUoZkdBVEhFUl9JTklUKCBSdFYsIE11ViwgZWxlbWVudF9zaXplKTspCisg ICAgZlZMQVNUQllURShNdVYsIGVsZW1lbnRfc2l6ZSk7CisgICAgZlZBTElHTihSdFYsIGVsZW1l bnRfc2l6ZSk7CisgICAgZlZGT1JFQUNIKDE2LCBpKSB7CisgICAgICAgIEVBID0gUnRWK1Z2Vi51 aFtpXTsKKyAgICAgICAgZlZMT0dfVlRDTV9HQVRIRVJfSEFMRldPUkQoRUEsIFZ2Vi51aFtpXSwg aSxNdVYpOworICAgIH0KKyAgICBmR0FUSEVSX0ZJTklTSCgpCit9KQorCisKKworRVhUSU5TTihW Nl92Z2F0aGVybWh3LCAgInZ0bXAuaD12Z2F0aGVyKFJ0MzIsTXUyLFZ2djMyLncpLmgiLCBBVFRS SUJTKEFfRVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJX0dBVEhFUixBX0NWSV9WQV9EVixBX0NWSV9WTSxB X0NWSV9UTVBfRFNULEFfTUVNTElLRSksICJHYXRoZXIgaGFsZndvcmRzIiwKK3sKKyAgICBmSElE RShpbnQgaTspCisgICAgZkhJREUoaW50IGo7KQorCWZISURFKGludCBlbGVtZW50X3NpemUgPSAy OykKKyAgICBmSElERShmR0FUSEVSX0lOSVQoIFJ0ViwgTXVWLCBlbGVtZW50X3NpemUpOykKKyAg ICBmVkxBU1RCWVRFKE11ViwgZWxlbWVudF9zaXplKTsKKyAgICBmVkFMSUdOKFJ0ViwgZWxlbWVu dF9zaXplKTsKKyAgICBmVkZPUkVBQ0goMzIsIGkpIHsKKyAgICAgICBmb3IoaiA9IDA7IGogPCAy OyBqKyspIHsKKyAgICAgICAgICAgIEVBID0gUnRWK1Z2dlYudltqXS51d1tpXTsKKyAgICAgICAg ICAgIGZWTE9HX1ZUQ01fR0FUSEVSX0hBTEZXT1JEX0RWKEVBLCBWdnZWLnZbal0udXdbaV0sICgy KmkraiksaSxqLE11Vik7CisgICAgICAgIH0KKyAgICB9CisgICAgIGZHQVRIRVJfRklOSVNIKCkK K30pCisKKworRVhUSU5TTihWNl92Z2F0aGVybXdxLCAgImlmIChRczQpIHZ0bXAudz12Z2F0aGVy KFJ0MzIsTXUyLFZ2MzIudykudyIsIEFUVFJJQlMoQV9FWFRFTlNJT04sQV9DVkksQV9DVklfR0FU SEVSLEFfQ1ZJX1ZBLEFfQ1ZJX1ZNLEFfQ1ZJX1RNUF9EU1QsQV9NRU1MSUtFKSwgIkdhdGhlciBX b3JkcyIsCit7CisgICAgZkhJREUoaW50IGk7KQorCWZISURFKGludCBlbGVtZW50X3NpemUgPSA0 OykKKyAgICBmSElERShmR0FUSEVSX0lOSVQoIFJ0ViwgTXVWLCBlbGVtZW50X3NpemUpOykKKyAg ICBmVkxBU1RCWVRFKE11ViwgZWxlbWVudF9zaXplKTsKKyAgICBmVkFMSUdOKFJ0ViwgZWxlbWVu dF9zaXplKTsKKyAgICBmVkZPUkVBQ0goMzIsIGkpIHsKKyAgICAgICAgRUEgPSBSdFYrVnZWLnV3 W2ldOworICAgICAgICBmVkxPR19WVENNX0dBVEhFUl9XT1JEUShFQSwgVnZWLnV3W2ldLCBpLFFz VixNdVYpOworICAgIH0KKyAgICBmR0FUSEVSX0ZJTklTSCgpCit9KQorRVhUSU5TTihWNl92Z2F0 aGVybWhxLCAgImlmIChRczQpIHZ0bXAuaD12Z2F0aGVyKFJ0MzIsTXUyLFZ2MzIuaCkuaCIsIEFU VFJJQlMoQV9FWFRFTlNJT04sQV9DVkksQV9DVklfR0FUSEVSLEFfQ1ZJX1ZBLEFfQ1ZJX1ZNLEFf Q1ZJX1RNUF9EU1QsQV9NRU1MSUtFKSwgIkdhdGhlciBoYWxmd29yZHMiLAoreworICAgIGZISURF KGludCBpOykKKwlmSElERShpbnQgZWxlbWVudF9zaXplID0gMjspCisgICAgZkhJREUoZkdBVEhF Ul9JTklUKCBSdFYsIE11ViwgZWxlbWVudF9zaXplKTspCisgICAgZlZMQVNUQllURShNdVYsIGVs ZW1lbnRfc2l6ZSk7CisgICAgZlZBTElHTihSdFYsIGVsZW1lbnRfc2l6ZSk7CisgICAgZlZGT1JF QUNIKDE2LCBpKSB7CisgICAgICAgIEVBID0gUnRWK1Z2Vi51aFtpXTsKKyAgICAgICAgZlZMT0df VlRDTV9HQVRIRVJfSEFMRldPUkRRKEVBLCBWdlYudWhbaV0sIGksUXNWLE11Vik7CisgICAgfQor ICAgIGZHQVRIRVJfRklOSVNIKCkKK30pCisKKworCitFWFRJTlNOKFY2X3ZnYXRoZXJtaHdxLCAg ImlmIChRczQpIHZ0bXAuaD12Z2F0aGVyKFJ0MzIsTXUyLFZ2djMyLncpLmgiLCBBVFRSSUJTKEFf RVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJX0dBVEhFUixBX0NWSV9WQV9EVixBX0NWSV9WTSxBX0NWSV9U TVBfRFNULEFfTUVNTElLRSksICJHYXRoZXIgaGFsZndvcmRzIiwKK3sKKyAgICBmSElERShpbnQg aTspCisgICAgZkhJREUoaW50IGo7KQorCWZISURFKGludCBlbGVtZW50X3NpemUgPSAyOykKKyAg ICBmSElERShmR0FUSEVSX0lOSVQoIFJ0ViwgTXVWLCBlbGVtZW50X3NpemUpOykKKyAgICBmVkxB U1RCWVRFKE11ViwgZWxlbWVudF9zaXplKTsKKyAgICBmVkFMSUdOKFJ0ViwgZWxlbWVudF9zaXpl KTsKKyAgICBmVkZPUkVBQ0goMzIsIGkpIHsKKyAgICAgICBmb3IoaiA9IDA7IGogPCAyOyBqKysp IHsKKyAgICAgICAgICAgIEVBID0gUnRWK1Z2dlYudltqXS51d1tpXTsKKyAgICAgICAgICAgIGZW TE9HX1ZUQ01fR0FUSEVSX0hBTEZXT1JEUV9EVihFQSwgVnZ2Vi52W2pdLnV3W2ldLCAoMippK2op LGksaixRc1YsTXVWKTsKKyAgICAgICB9CisgICAgfQorICAgIGZHQVRIRVJfRklOSVNIKCkKK30p CisKKworCitFWFRJTlNOKFY2X3ZzY2F0dGVybXcgLCAidnNjYXR0ZXIoUnQzMixNdTIsVnYzMi53 KS53PVZ3MzIiLCBBVFRSSUJTKEFfRVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJX1NDQVRURVIsQV9DVklf VkEsQV9DVklfVk0sQV9NRU1MSUtFKSwgIlNjYXR0ZXIgV29yZHMiLAoreworICAgIGZISURFKGlu dCBpOykKKwlmSElERShpbnQgZWxlbWVudF9zaXplID0gNDspCisgICAgZkhJREUoZlNDQVRURVJf SU5JVCggUnRWLCBNdVYsIGVsZW1lbnRfc2l6ZSk7KQorICAgIGZWTEFTVEJZVEUoTXVWLCBlbGVt ZW50X3NpemUpOworICAgIGZWQUxJR04oUnRWLCBlbGVtZW50X3NpemUpOworICAgIGZWRk9SRUFD SCgzMiwgaSkgeworICAgICAgICBFQSA9IFJ0VitWdlYudXdbaV07CisgICAgICAgIGZWTE9HX1ZU Q01fV09SRChFQSwgVnZWLnV3W2ldLCBWd1YsaSxNdVYpOworICAgIH0KKyAgICBmU0NBVFRFUl9G SU5JU0goMCkKK30pCisKKworCitFWFRJTlNOKFY2X3ZzY2F0dGVybWggLCAidnNjYXR0ZXIoUnQz MixNdTIsVnYzMi5oKS5oPVZ3MzIiLCBBVFRSSUJTKEFfRVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJX1ND QVRURVIsQV9DVklfVkEsQV9DVklfVk0sQV9NRU1MSUtFKSwgIlNjYXR0ZXIgaGFsZldvcmRzIiwK K3sKKyAgICBmSElERShpbnQgaTspCisJZkhJREUoaW50IGVsZW1lbnRfc2l6ZSA9IDI7KQorICAg IGZISURFKGZTQ0FUVEVSX0lOSVQoIFJ0ViwgTXVWLCBlbGVtZW50X3NpemUpOykKKyAgICBmVkxB U1RCWVRFKE11ViwgZWxlbWVudF9zaXplKTsKKyAgICBmVkFMSUdOKFJ0ViwgZWxlbWVudF9zaXpl KTsKKyAgICBmVkZPUkVBQ0goMTYsIGkpIHsKKyAgICAgICAgRUEgPSBSdFYrVnZWLnVoW2ldOwor ICAgICAgICBmVkxPR19WVENNX0hBTEZXT1JEKEVBLFZ2Vi51aFtpXSxWd1YsaSxNdVYpOworICAg IH0KKyAgICBmU0NBVFRFUl9GSU5JU0goMCkKK30pCisKKworRVhUSU5TTihWNl92c2NhdHRlcm13 X2FkZCwgICJ2c2NhdHRlcihSdDMyLE11MixWdjMyLncpLncrPVZ3MzIiLCBBVFRSSUJTKEFfRVhU RU5TSU9OLEFfQ1ZJLEFfQ1ZJX1NDQVRURVIsQV9DVklfVkEsQV9DVklfVk0sQV9NRU1MSUtFKSwg IlNjYXR0ZXIgV29yZHMtQWRkIiwKK3sKKyAgICBmSElERShpbnQgaTspCisgICAgZkhJREUoaW50 IEFMSUdOTUVOVD00OykKKwlmSElERShpbnQgZWxlbWVudF9zaXplID0gNDspCisgICAgZkhJREUo ZlNDQVRURVJfSU5JVCggUnRWLCBNdVYsIGVsZW1lbnRfc2l6ZSk7KQorICAgIGZWTEFTVEJZVEUo TXVWLCBlbGVtZW50X3NpemUpOworICAgIGZWQUxJR04oUnRWLCBlbGVtZW50X3NpemUpOworICAg IGZWRk9SRUFDSCgzMiwgaSkgeworICAgICAgICBFQSA9IChSdFYrZlZBTElHTihWdlYudXdbaV0s QUxJR05NRU5UKSk7CisgICAgICAgIGZWTE9HX1ZUQ01fV09SRF9JTkNSRU1FTlQoRUEsVnZWLnV3 W2ldLFZ3VixpLEFMSUdOTUVOVCxNdVYpOworICAgIH0KKyAgICBmSElERShmTE9HX1NDQVRURVJf T1AoNCk7KQorICAgIGZTQ0FUVEVSX0ZJTklTSCgxKQorfSkKKworRVhUSU5TTihWNl92c2NhdHRl cm1oX2FkZCwgICJ2c2NhdHRlcihSdDMyLE11MixWdjMyLmgpLmgrPVZ3MzIiLCBBVFRSSUJTKEFf RVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJX1NDQVRURVIsQV9DVklfVkEsQV9DVklfVk0sQV9NRU1MSUtF KSwgIlNjYXR0ZXIgaGFsZndvcmQtQWRkIiwKK3sKKyAgICBmSElERShpbnQgaTspCisgICAgZkhJ REUoaW50IEFMSUdOTUVOVD0yOykKKwlmSElERShpbnQgZWxlbWVudF9zaXplID0gMjspCisgICAg ZkhJREUoZlNDQVRURVJfSU5JVCggUnRWLCBNdVYsIGVsZW1lbnRfc2l6ZSk7KQorICAgIGZWTEFT VEJZVEUoTXVWLCBlbGVtZW50X3NpemUpOworICAgIGZWQUxJR04oUnRWLCBlbGVtZW50X3NpemUp OworICAgIGZWRk9SRUFDSCgxNiwgaSkgeworICAgICAgICBFQSA9IChSdFYrZlZBTElHTihWdlYu dWhbaV0sQUxJR05NRU5UKSk7CisgICAgICAgIGZWTE9HX1ZUQ01fSEFMRldPUkRfSU5DUkVNRU5U KEVBLFZ2Vi51aFtpXSxWd1YsaSxBTElHTk1FTlQsTXVWKTsKKyAgICB9CisgICAgZkhJREUoZkxP R19TQ0FUVEVSX09QKDIpOykKKyAgICBmU0NBVFRFUl9GSU5JU0goMSkKK30pCisKKworRVhUSU5T TihWNl92c2NhdHRlcm13cSwgICJpZiAoUXM0KSB2c2NhdHRlcihSdDMyLE11MixWdjMyLncpLnc9 VnczMiIsIEFUVFJJQlMoQV9FWFRFTlNJT04sQV9DVkksQV9DVklfU0NBVFRFUixBX0NWSV9WQSxB X0NWSV9WTSxBX01FTUxJS0UpLCAiU2NhdHRlciBXb3JkcyBjb25kaXRpb25hbCIsCit7CisgICAg ZkhJREUoaW50IGk7KQorCWZISURFKGludCBlbGVtZW50X3NpemUgPSA0OykKKyAgICBmSElERShm U0NBVFRFUl9JTklUKCBSdFYsIE11ViwgZWxlbWVudF9zaXplKTspCisgICAgZlZMQVNUQllURShN dVYsIGVsZW1lbnRfc2l6ZSk7CisgICAgZlZBTElHTihSdFYsIGVsZW1lbnRfc2l6ZSk7CisgICAg ZlZGT1JFQUNIKDMyLCBpKSB7CisgICAgICAgIEVBID0gUnRWK1Z2Vi51d1tpXTsKKyAgICAgICAg ZlZMT0dfVlRDTV9XT1JEUShFQSxWdlYudXdbaV0sIFZ3VixpLFFzVixNdVYpOworICAgIH0KKyAg ICBmU0NBVFRFUl9GSU5JU0goMCkKK30pCisKK0VYVElOU04oVjZfdnNjYXR0ZXJtaHEsICAiaWYg KFFzNCkgdnNjYXR0ZXIoUnQzMixNdTIsVnYzMi5oKS5oPVZ3MzIiLCBBVFRSSUJTKEFfRVhURU5T SU9OLEFfQ1ZJLEFfQ1ZJX1NDQVRURVIsQV9DVklfVkEsQV9DVklfVk0sQV9NRU1MSUtFKSwgIlNj YXR0ZXIgSGFsZldvcmRzIGNvbmRpdGlvbmFsIiwKK3sKKyAgICBmSElERShpbnQgaTspCisJZkhJ REUoaW50IGVsZW1lbnRfc2l6ZSA9IDI7KQorICAgIGZISURFKGZTQ0FUVEVSX0lOSVQoIFJ0Viwg TXVWLCBlbGVtZW50X3NpemUpOykKKyAgICBmVkxBU1RCWVRFKE11ViwgZWxlbWVudF9zaXplKTsK KyAgICBmVkFMSUdOKFJ0ViwgZWxlbWVudF9zaXplKTsKKyAgICBmVkZPUkVBQ0goMTYsIGkpIHsK KyAgICAgICAgRUEgPSBSdFYrVnZWLnVoW2ldOworICAgICAgICBmVkxPR19WVENNX0hBTEZXT1JE UShFQSxWdlYudWhbaV0sVndWLGksUXNWLE11Vik7CisgICAgfQorICAgIGZTQ0FUVEVSX0ZJTklT SCgwKQorfSkKKworCisKKworRVhUSU5TTihWNl92c2NhdHRlcm1odyAsICJ2c2NhdHRlcihSdDMy LE11MixWdnYzMi53KS5oPVZ3MzIiLCBBVFRSSUJTKEFfRVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJX1ND QVRURVIsQV9DVklfVkFfRFYsQV9DVklfVk0sQV9NRU1MSUtFKSwgIlNjYXR0ZXIgV29yZHMiLAor eworICAgIGZISURFKGludCBpOykKKyAgICBmSElERShpbnQgajspCisJZkhJREUoaW50IGVsZW1l bnRfc2l6ZSA9IDI7KQorICAgIGZISURFKGZTQ0FUVEVSX0lOSVQoIFJ0ViwgTXVWLCBlbGVtZW50 X3NpemUpOykKKyAgICBmVkxBU1RCWVRFKE11ViwgZWxlbWVudF9zaXplKTsKKyAgICBmVkFMSUdO KFJ0ViwgZWxlbWVudF9zaXplKTsKKyAgICBmVkZPUkVBQ0goMzIsIGkpIHsKKyAgICAgICAgZm9y KGogPSAwOyBqIDwgMjsgaisrKSB7CisgICAgICAgICAgICBFQSA9IFJ0VitWdnZWLnZbal0udXdb aV07CisgICAgICAgICAgICBmVkxPR19WVENNX0hBTEZXT1JEX0RWKEVBLFZ2dlYudltqXS51d1tp XSxWd1YsKDIqaStqKSxpLGosTXVWKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBmU0NBVFRFUl9G SU5JU0goMCkKK30pCisKKworCitFWFRJTlNOKFY2X3ZzY2F0dGVybWh3cSwgICJpZiAoUXM0KSB2 c2NhdHRlcihSdDMyLE11MixWdnYzMi53KS5oPVZ3MzIiLCBBVFRSSUJTKEFfRVhURU5TSU9OLEFf Q1ZJLEFfQ1ZJX1NDQVRURVIsQV9DVklfVkFfRFYsQV9DVklfVk0sQV9NRU1MSUtFKSwgIlNjYXR0 ZXIgaGFsZndvcmRzIGNvbmRpdGlvbmFsIiwKK3sKKyAgICBmSElERShpbnQgaTspCisgICAgZkhJ REUoaW50IGo7KQorCWZISURFKGludCBlbGVtZW50X3NpemUgPSAyOykKKyAgICBmSElERShmU0NB VFRFUl9JTklUKCBSdFYsIE11ViwgZWxlbWVudF9zaXplKTspCisgICAgZlZMQVNUQllURShNdVYs IGVsZW1lbnRfc2l6ZSk7CisgICAgZlZBTElHTihSdFYsIGVsZW1lbnRfc2l6ZSk7CisgICAgZlZG T1JFQUNIKDMyLCBpKSB7CisgICAgICAgIGZvcihqID0gMDsgaiA8IDI7IGorKykgeworICAgICAg ICAgICAgRUEgPSBSdFYrVnZ2Vi52W2pdLnV3W2ldOworICAgICAgICAgICAgZlZMT0dfVlRDTV9I QUxGV09SRFFfRFYoRUEsVnZ2Vi52W2pdLnV3W2ldLFZ3ViwoMippK2opLFFzVixpLGosTXVWKTsK KyAgICAgICAgfQorICAgIH0KKyAgICBmU0NBVFRFUl9GSU5JU0goMCkKK30pCisKK0VYVElOU04o VjZfdnNjYXR0ZXJtaHdfYWRkLCAgInZzY2F0dGVyKFJ0MzIsTXUyLFZ2djMyLncpLmgrPVZ3MzIi LCBBVFRSSUJTKEFfRVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJX1NDQVRURVIsQV9DVklfVkFfRFYsQV9D VklfVk0sQV9NRU1MSUtFKSwgIlNjYXR0ZXIgaGFsZndvcmRzLWFkZCIsCit7CisgICAgZkhJREUo aW50IGk7KQorICAgIGZISURFKGludCBqOykKKyAgICBmSElERShpbnQgQUxJR05NRU5UPTI7KQor CWZISURFKGludCBlbGVtZW50X3NpemUgPSAyOykKKyAgICBmSElERShmU0NBVFRFUl9JTklUKCBS dFYsIE11ViwgZWxlbWVudF9zaXplKTspCisgICAgZlZMQVNUQllURShNdVYsIGVsZW1lbnRfc2l6 ZSk7CisgICAgZlZBTElHTihSdFYsIGVsZW1lbnRfc2l6ZSk7CisgICAgZlZGT1JFQUNIKDMyLCBp KSB7CisgICAgICAgIGZvcihqID0gMDsgaiA8IDI7IGorKykgeworICAgICAgICAgICAgIEVBID0g IFJ0ViArIGZWQUxJR04oVnZ2Vi52W2pdLnV3W2ldLEFMSUdOTUVOVCk7OworICAgICAgICAgICAg IGZWTE9HX1ZUQ01fSEFMRldPUkRfSU5DUkVNRU5UX0RWKEVBLFZ2dlYudltqXS51d1tpXSxWd1Ys KDIqaStqKSxpLGosQUxJR05NRU5ULE11Vik7CisgICAgICAgIH0KKyAgICB9CisgICAgZkhJREUo ZkxPR19TQ0FUVEVSX09QKDIpOykKKyAgICBmU0NBVFRFUl9GSU5JU0goMSkKK30pCisKK0VYVElO U04oVjZfdnByZWZpeHFiLCJWZDMyLmI9cHJlZml4c3VtKFF2NCkiLCAgIEFUVFJJQlMoQV9FWFRF TlNJT04sQV9DVkksQV9DVklfVlMpLCAgInBhcmFsbGVsIHByZWZpeCBzdW0gb2YgUSBpbnRvIGJ5 dGUiLAoreworICAgIGZISURFKGludCBpOykKKyAgICBmSElERShzaXplMXVfdCBhY2MgPSAwOykK KyAgICBmVkZPUkVBQ0goOCwgaSkgeworICAgICAgICBhY2MgKz0gZkdFVFFCSVQoUXZWLGkpOwor ICAgICAgICBWZFYudWJbaV0gPSBhY2M7CisgICAgfQorICAgIH0gKQorRVhUSU5TTihWNl92cHJl Zml4cWgsIlZkMzIuaD1wcmVmaXhzdW0oUXY0KSIsICAgQVRUUklCUyhBX0VYVEVOU0lPTixBX0NW SSxBX0NWSV9WUyksICAicGFyYWxsZWwgcHJlZml4IHN1bSBvZiBRIGludG8gaGFsZndvcmRzIiwK K3sKKyAgICBmSElERShpbnQgaTspCisgICAgZkhJREUoc2l6ZTJ1X3QgYWNjID0gMDspCisgICAg ZlZGT1JFQUNIKDE2LCBpKSB7CisgICAgICAgIGFjYyArPSBmR0VUUUJJVChRdlYsaSoyKzApOwor ICAgICAgICBhY2MgKz0gZkdFVFFCSVQoUXZWLGkqMisxKTsKKyAgICAgICAgVmRWLnVoW2ldID0g YWNjOworICAgIH0KKyAgICB9ICkKK0VYVElOU04oVjZfdnByZWZpeHF3LCJWZDMyLnc9cHJlZml4 c3VtKFF2NCkiLCAgIEFUVFJJQlMoQV9FWFRFTlNJT04sQV9DVkksQV9DVklfVlMpLCAgInBhcmFs bGVsIHByZWZpeCBzdW0gb2YgUSBpbnRvIHdvcmRzIiwKK3sKKyAgICBmSElERShpbnQgaTspCisg ICAgZkhJREUoc2l6ZTR1X3QgYWNjID0gMDspCisgICAgZlZGT1JFQUNIKDMyLCBpKSB7CisgICAg ICAgIGFjYyArPSBmR0VUUUJJVChRdlYsaSo0KzApOworICAgICAgICBhY2MgKz0gZkdFVFFCSVQo UXZWLGkqNCsxKTsKKyAgICAgICAgYWNjICs9IGZHRVRRQklUKFF2VixpKjQrMik7CisgICAgICAg IGFjYyArPSBmR0VUUUJJVChRdlYsaSo0KzMpOworICAgICAgICBWZFYudXdbaV0gPSBhY2M7Cisg ICAgfQorICAgIH0gKQorCisKKworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyBERUJVRyBW ZWN0b3IvUmVnaXN0ZXIgUHJpbnRpbmcKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNkZWZp bmUgUFJJTlRfVlUoVFlQRSwgVFlQRTIsIENPVU5UKVwKKyAgICBpbnQgaTsgIFwKKyAgICBzaXpl NHVfdCB2ZWNfbGVuID0gZlZCWVRFUygpO1wKKyAgICBmcHJpbnRmKHN0ZG91dCwiViUyZDogIixW dU4pOyAgXAorICAgIGZvciAoaT0wO2k8dmVjX2xlbj4+Q09VTlQ7aSsrKSB7ICAgICAgICAgXAor ICAgICAgICBmcHJpbnRmKHN0ZG91dCxUWVBFMiAiICIsIFZ1Vi5UWVBFW2ldKTsgXAorICAgIH07 ICBcCisgICAgZnByaW50ZihzdGRvdXQsIlxcbiIpOyAgXAorCWZmbHVzaChzdGRvdXQpO1wKKwor I3VuZGVmIEFUVFJfVk1FTQorI3VuZGVmIEFUVFJfVk1FTVUKKyN1bmRlZiBBVFRSX1ZNRU1fTlQK KworI2VuZGlmIC8qIE5PX01NVkVDICovCisKKyNpZmRlZiBfX1NFTEZfREVGX0VYVElOU04KKyN1 bmRlZiBFWFRJTlNOCisjdW5kZWYgX19TRUxGX0RFRl9FWFRJTlNOCisjZW5kaWYKLS0gCjIuNy40 Cgo=