Received: by 2002:a05:6602:18e:0:0:0:0 with SMTP id m14csp5782222ioo; Wed, 1 Jun 2022 12:29:05 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwCicpnBr7UQy8wOc8kVuAr9h6bXCAkuvg9lP2BE4tQgjpukzKosl7nY5eE4K1/Bq2gFkn+ X-Received: by 2002:a17:902:eccd:b0:166:3e34:4d05 with SMTP id a13-20020a170902eccd00b001663e344d05mr59074plh.75.1654111745797; Wed, 01 Jun 2022 12:29:05 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1654111745; cv=none; d=google.com; s=arc-20160816; b=ZRq0ISN5iB743Fo+u8MzIILmuTGW/JGr1QisrfNEpFl2lVK7SlvhSXx+lommMS5DB1 HI5maXDtNvtyWwTyK4nrZGgFxMo2iUea1Qw/EWTTQT0ORurKWbfv9Q6Y4qFP8StD8V4W dd9uJGbY408hMx/uExgK3OxEqJxo8ekk+z32lnxnPDyaD652Co0aW42s/6ft471ykQlM EFagefin/jO5zOYbhdIYtqFqTNMpVIXcHRMAvg/cbu95nLhctXqPwADjmKJLFyKl8Nj0 kmN+U9Dgy0li/7WjVq+3oS0LuvSq4kDniik7dEp0me0ZtT3vxmA32qGihe+Ejeu0LNQn j9tw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:message-id:mime-version :content-transfer-encoding:references:in-reply-to:subject:cc:to:from :date; bh=wZY5smyikdTqwNzG/YqpF7XPKRcQontcz1/uafzXfCE=; b=ti++z4PxD/OYIAb3+KZpBb9hq9cpzyMsTqc1fFIYIr/pIXW4FBgTldjct680v7mVTE 4BMMtVkVXeXadF2w/M30OLzurhNylpHYov9IRYNIbcZtwxznEVtC/rkUL44u9Hp3Wuuv owxa0v2oM3Jbrqa4i0zHULZfl25kofOU6vv1iMLYZ3G2QFdv1rbwa+UOq0fB9CjKzK2U lXqv4oFUHsC96MT8AJyV2JNSoscinZKIRagLQyD+/yaiE4EW6mnq2HPtE47Qc075Rw8e xT/XssEnZloAb8ADDVX8OXUmpC4yn5oda44pGPVOQZHYDj/pP+A1MELSataAp1TkcZ4s vr8Q== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [2620:137:e000::1:18]) by mx.google.com with ESMTPS id b11-20020a63d80b000000b003ab9d95852bsi3393168pgh.260.2022.06.01.12.29.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 01 Jun 2022 12:29:05 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) client-ip=2620:137:e000::1:18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id CDC2F17EF6A; Wed, 1 Jun 2022 12:01:00 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1343670AbiEaLBX (ORCPT + 99 others); Tue, 31 May 2022 07:01:23 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52668 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1343664AbiEaLBV (ORCPT ); Tue, 31 May 2022 07:01:21 -0400 Received: from loongson.cn (mail.loongson.cn [114.242.206.163]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 675B99AE55 for ; Tue, 31 May 2022 04:01:17 -0700 (PDT) Received: by ajax-webmail-mail.loongson.cn (Coremail) ; Tue, 31 May 2022 19:01:09 +0800 (GMT+08:00) X-Originating-IP: [58.119.4.74] Date: Tue, 31 May 2022 19:01:09 +0800 (GMT+08:00) X-CM-HeaderCharset: UTF-8 From: =?UTF-8?B?5ZCV5bu65rCR?= To: "Marc Zyngier" Cc: "Thomas Gleixner" , linux-kernel@vger.kernel.org, "Xuefeng Li" , "Huacai Chen" , "Jiaxun Yang" , "Huacai Chen" Subject: Re: Re: [PATCH RFC V2 02/10] irqchip: Add LoongArch CPU interrupt controller support X-Priority: 3 X-Mailer: Coremail Webmail Server Version XT5.0.10a build 20191018(4c4f6d15) Copyright (c) 2002-2022 www.mailtech.cn .loongson.cn In-Reply-To: <87bkvf56wg.wl-maz@kernel.org> References: <1653649335-11998-1-git-send-email-lvjianmin@loongson.cn> <1653649335-11998-3-git-send-email-lvjianmin@loongson.cn> <87bkvf56wg.wl-maz@kernel.org> Content-Transfer-Encoding: base64 X-CM-CTRLDATA: NUAZLmZvb3Rlcl90eHQ9MjE1MzY6NjEy Content-Type: text/plain; charset=UTF-8 MIME-Version: 1.0 Message-ID: <64990891.8322.18119c6d212.Coremail.lvjianmin@loongson.cn> X-Coremail-Locale: en_US X-CM-TRANSID: AQAAf9BxKeR29ZVik7cJAA--.1334W X-CM-SenderInfo: 5oymxthqpl0qxorr0wxvrqhubq/1tbiAQADDF3QvPd8+AABsN X-Coremail-Antispam: 1Ur529EdanIXcx71UUUUU7IcSsGvfJ3iIAIbVAYjsxI4VWxJw CS07vEb4IE77IF4wCS07vE1I0E4x80FVAKz4kxMIAIbVAFxVCaYxvI4VCIwcAKzIAtYxBI daVFxhVjvjDU= X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RDNS_NONE, SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org CgoKJmd0OyAtLS0tLU9yaWdpbmFsIE1lc3NhZ2VzLS0tLS0KJmd0OyBGcm9tOiAiTWFyYyBaeW5n aWVyIiA8bWF6QGtlcm5lbC5vcmc+CiZndDsgU2VudCBUaW1lOiAyMDIyLTA1LTMxIDAwOjIwOjMx IChUdWVzZGF5KQomZ3Q7IFRvOiAiSmlhbm1pbiBMdiIgPGx2amlhbm1pbkBsb29uZ3Nvbi5jbj4K Jmd0OyBDYzogIlRob21hcyBHbGVpeG5lciIgPHRnbHhAbGludXRyb25peC5kZT4sIGxpbnV4LWtl cm5lbEB2Z2VyLmtlcm5lbC5vcmcsICJYdWVmZW5nIExpIiA8bGl4dWVmZW5nQGxvb25nc29uLmNu PiwgIkh1YWNhaSBDaGVuIiA8Y2hlbmh1YWNhaUBnbWFpbC5jb20+LCAiSmlheHVuIFlhbmciIDxq aWF4dW4ueWFuZ0BmbHlnb2F0LmNvbT4sICJIdWFjYWkgQ2hlbiIgPGNoZW5odWFjYWlAbG9vbmdz b24uY24+CiZndDsgU3ViamVjdDogUmU6IFtQQVRDSCBSRkMgVjIgMDIvMTBdIGlycWNoaXA6IEFk ZCBMb29uZ0FyY2ggQ1BVIGludGVycnVwdCBjb250cm9sbGVyIHN1cHBvcnQKJmd0OyAKJmd0OyBP biBGcmksIDI3IE1heSAyMDIyIDEyOjAyOjEyICswMTAwLAomZ3Q7IEppYW5taW4gTHYgPGx2amlh bm1pbkBsb29uZ3Nvbi5jbj4gd3JvdGU6CiZndDsgJmd0OyAKJmd0OyAmZ3Q7IFdlIGFyZSBwcmVw YXJpbmcgdG8gYWRkIG5ldyBMb29uZ3NvbiAoYmFzZWQgb24gTG9vbmdBcmNoLCBub3QgY29tcGF0 aWJsZQomZ3Q7ICZndDsgd2l0aCBvbGQgTUlQUy1iYXNlZCBMb29uZ3Nvbikgc3VwcG9ydC4gVGhp cyBwYXRjaCBhZGQgdGhlIExvb25nQXJjaCBDUFUKJmd0OyAmZ3Q7IGludGVycnVwdCBjb250cm9s bGVyIHN1cHBvcnQuCiZndDsgCiZndDsgUGxlYXNlIGRyb3AgdGhpcyBwYXJhZ3JhcGgsIGFzIGl0 IGRvZXNuJ3QgaGVscCBhdCBhbGwuCiZndDsgCk9rLHRoYW5rcywgSSdsbCBkcm9wIGl0LgoKJmd0 OyAmZ3Q7IAomZ3Q7ICZndDsgTG9vbmdBcmNoIENQVUlOVEMgc3RhbmRzIGZvciBDU1IuRUNGRy9D U1IuRVNUQVQgYW5kIHJlbGF0ZWQgaW50ZXJydXB0CiZndDsgJmd0OyBjb250cm9sbGVyIHRoYXQg ZGVzY3JpYmVkIGluIFNlY3Rpb24gNy40IG9mICJMb29uZ0FyY2ggUmVmZXJlbmNlIE1hbnVhbCwK Jmd0OyAmZ3Q7IFZvbCAxIi4gRm9yIG1vcmUgaW5mb3JtYXRpb24gcGxlYXNlIHJlZmVyIERvY3Vt ZW50YXRpb24vbG9vbmdhcmNoL2lycS0KJmd0OyAmZ3Q7IGNoaXAtbW9kZWwucnN0LgomZ3Q7IAom Z3Q7IFdoZXJlIGlzIHRoaXMgdGhlIHBhdGNoIGFkZGluZyB0aGlzIGRvY3VtZW50PwomZ3Q7IApT ZWUgaHR0cHM6Ly9sb29uZ3Nvbi5naXRodWIuaW8vTG9vbmdBcmNoLURvY3VtZW50YXRpb24vTG9v bmdBcmNoLVZvbDEtRU4uaHRtbAoKJmd0OyAmZ3Q7IAomZ3Q7ICZndDsgTG9vbmdBcmNoIENQVUlO VEMgaGFzIDEzIGludGVycnVwdCBzb3VyY2VzOiBTV0kwfjEsIEhXSTB+NywgSVBJLCBUSQomZ3Q7 ICZndDsgKFRpbWVyKSBhbmQgUENPViAoUE1DKS4gSVJRIG1hcHBpbmdzIG9mIEhXSTB+NyBhcmUg Y29uZmlndXJhYmxlIChjYW4gYmUKJmd0OyAmZ3Q7IGNyZWF0ZWQgZnJvbSBEVC9BQ1BJKSwgYnV0 IElQSSwgVEkgKFRpbWVyKSBhbmQgUENPViAoUE1DKSBhcmUgaGFyZGNvZGVkCiZndDsgJmd0OyBi aXRzLCBzbyB3ZSBkZWZpbmUgZ2V0X3h4eF9pcnEoKSBmb3IgdGhlbS4KJmd0OyAKJmd0OyBXaGVy ZSBhcmUgdGhlc2UgZnVuY3Rpb25zPyBIb3cgYXJlIHRoZXkgdXNlZD8KJmd0OyAKU29ycnksIHRo ZXNlIGZ1bmN0aW9ucyBhcmUgaW1wbGVtZW50ZWQgaW4gcHJldmlvdXJzIHZlcnNpb24sIGFuZCB0 aGV5IGFyZSBkZWxldGVkIGluIGN1cnJlbnQgdmVyc2lvbiBiZWNhdXNlIEkgY2hhbmdlZCB0byB1 c2UgbGVnYWN5IGlycWRvbWFpbiBpbiB0aGlzIHZlcnNpb24gc28gdGhhdCB3ZSBkb24ndCBoYXZl IHRvIHVzZSB0aGVzZSBmdW5jdGlvbnMgdG8gY3JlYXRlIGlycSBtYXBwaW5nIGZvciBJUEksIFBN QyBhbmQgVElNRVIuIE9mIGNhdXNlLCBpZiB5b3Ugc3VnZ3Vlc3QgdXMgdG8gdXNlIGxpbmVhciBp cnFkb21haW4sIEknbGwgcmVzdG9yZSB0aGVtIHRvIGJlIHdoYXQgbGlrZSBhcyBsYXN0IHZlcnNp b24uCgomZ3Q7ICZndDsgCiZndDsgJmd0OyBTaWduZWQtb2ZmLWJ5OiBIdWFjYWkgQ2hlbiA8Y2hl bmh1YWNhaUBsb29uZ3Nvbi5jbj4KJmd0OyAmZ3Q7IFNpZ25lZC1vZmYtYnk6IEppYW5taW4gTHYg PGx2amlhbm1pbkBsb29uZ3Nvbi5jbj4KJmd0OyAmZ3Q7IC0tLQomZ3Q7ICZndDsgIGRyaXZlcnMv aXJxY2hpcC9LY29uZmlnICAgICAgICAgICAgICAgICAgICB8ICAxMCArKwomZ3Q7ICZndDsgIGRy aXZlcnMvaXJxY2hpcC9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICB8ICAgMSArCiZndDsgJmd0 OyAgZHJpdmVycy9pcnFjaGlwL2lycS1sb29uZ2FyY2gtY3B1LmMgICAgICAgIHwgMTE1ICsrKysr KysrKysrKysrKysrCiZndDsgJmd0OyAgZHJpdmVycy9pcnFjaGlwL2lycS1sb29uZ2FyY2gtcGlj LWNvbW1vbi5jIHwgMjAxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiZndDsgCiZndDsg T25lIHBhdGNoIHBlciBkcml2ZXIsIHBsZWFzZS4KJmd0OyAKT2ssIEknbGwgc3BsaXQgdGhlbSB0 byBiZSBzZXBlcmF0ZSBwYXRjaC4KCiZndDsgJmd0OyAgZHJpdmVycy9pcnFjaGlwL2lycS1sb29u Z2FyY2gtcGljLWNvbW1vbi5oIHwgIDQ0ICsrKysrKysKJmd0OyAmZ3Q7ICA1IGZpbGVzIGNoYW5n ZWQsIDM3MSBpbnNlcnRpb25zKCspCiZndDsgJmd0OyAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZl cnMvaXJxY2hpcC9pcnEtbG9vbmdhcmNoLWNwdS5jCiZndDsgJmd0OyAgY3JlYXRlIG1vZGUgMTAw NjQ0IGRyaXZlcnMvaXJxY2hpcC9pcnEtbG9vbmdhcmNoLXBpYy1jb21tb24uYwomZ3Q7ICZndDsg IGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2lycWNoaXAvaXJxLWxvb25nYXJjaC1waWMtY29t bW9uLmgKJmd0OyAmZ3Q7IAomZ3Q7ICZndDsgZGlmZiAtLWdpdCBhL2RyaXZlcnMvaXJxY2hpcC9L Y29uZmlnIGIvZHJpdmVycy9pcnFjaGlwL0tjb25maWcKJmd0OyAmZ3Q7IGluZGV4IDM5ZDZiZTIu LmE1OTZlZTcgMTAwNjQ0CiZndDsgJmd0OyAtLS0gYS9kcml2ZXJzL2lycWNoaXAvS2NvbmZpZwom Z3Q7ICZndDsgKysrIGIvZHJpdmVycy9pcnFjaGlwL0tjb25maWcKJmd0OyAmZ3Q7IEBAIC01NDUs NiArNTQ1LDE2IEBAIGNvbmZpZyBFWFlOT1NfSVJRX0NPTUJJTkVSCiZndDsgJmd0OyAgCSAgU2F5 IHllcyBoZXJlIHRvIGFkZCBzdXBwb3J0IGZvciB0aGUgSVJRIGNvbWJpbmVyIGRldmljZXMgZW1i ZWRkZWQKJmd0OyAmZ3Q7ICAJICBpbiBTYW1zdW5nIEV4eW5vcyBjaGlwcy4KJmd0OyAmZ3Q7ICAK Jmd0OyAmZ3Q7ICtjb25maWcgSVJRX0xPT05HQVJDSF9DUFUKJmd0OyAmZ3Q7ICsJYm9vbAomZ3Q7 ICZndDsgKwlzZWxlY3QgR0VORVJJQ19JUlFfQ0hJUAomZ3Q7ICZndDsgKwlzZWxlY3QgSVJRX0RP TUFJTgomZ3Q7ICZndDsgKwlzZWxlY3QgR0VORVJJQ19JUlFfRUZGRUNUSVZFX0FGRl9NQVNLCiZn dDsgJmd0OyArCWhlbHAKJmd0OyAmZ3Q7ICsJICBTdXBwb3J0IGZvciB0aGUgTG9vbmdBcmNoIENQ VSBJbnRlcnJ1cHQgQ29udHJvbGxlci4gRm9yIGRldGFpbHMgb2YKJmd0OyAmZ3Q7ICsJICBpcnEg Y2hpcCBoaWVyYXJjaHkgb24gTG9vbmdBcmNoIHBsYXRmb3JtcyBwbGVhc2UgcmVhZCB0aGUgZG9j dW1lbnQKJmd0OyAmZ3Q7ICsJICBEb2N1bWVudGF0aW9uL2xvb25nYXJjaC9pcnEtY2hpcC1tb2Rl bC5yc3QuCiZndDsgJmd0OyArCiZndDsgJmd0OyAgY29uZmlnIExPT05HU09OX0xJT0lOVEMKJmd0 OyAmZ3Q7ICAJYm9vbCAiTG9vbmdzb24gTG9jYWwgSS9PIEludGVycnVwdCBDb250cm9sbGVyIgom Z3Q7ICZndDsgIAlkZXBlbmRzIG9uIE1BQ0hfTE9PTkdTT042NAomZ3Q7ICZndDsgZGlmZiAtLWdp dCBhL2RyaXZlcnMvaXJxY2hpcC9NYWtlZmlsZSBiL2RyaXZlcnMvaXJxY2hpcC9NYWtlZmlsZQom Z3Q7ICZndDsgaW5kZXggMTYwYTFkOC4uNzM2ZjAzMCAxMDA2NDQKJmd0OyAmZ3Q7IC0tLSBhL2Ry aXZlcnMvaXJxY2hpcC9NYWtlZmlsZQomZ3Q7ICZndDsgKysrIGIvZHJpdmVycy9pcnFjaGlwL01h a2VmaWxlCiZndDsgJmd0OyBAQCAtMTA1LDYgKzEwNSw3IEBAIG9iai0kKENPTkZJR19MUzFYX0lS USkJCQkrPSBpcnEtbHMxeC5vCiZndDsgJmd0OyAgb2JqLSQoQ09ORklHX1RJX1NDSV9JTlRSX0lS UUNISVApCSs9IGlycS10aS1zY2ktaW50ci5vCiZndDsgJmd0OyAgb2JqLSQoQ09ORklHX1RJX1ND SV9JTlRBX0lSUUNISVApCSs9IGlycS10aS1zY2ktaW50YS5vCiZndDsgJmd0OyAgb2JqLSQoQ09O RklHX1RJX1BSVVNTX0lOVEMpCQkrPSBpcnEtcHJ1c3MtaW50Yy5vCiZndDsgJmd0OyArb2JqLSQo Q09ORklHX0lSUV9MT09OR0FSQ0hfQ1BVKQkJKz0gaXJxLWxvb25nYXJjaC1jcHUubyBpcnEtbG9v bmdhcmNoLXBpYy1jb21tb24ubwomZ3Q7ICZndDsgIG9iai0kKENPTkZJR19MT09OR1NPTl9MSU9J TlRDKQkJKz0gaXJxLWxvb25nc29uLWxpb2ludGMubwomZ3Q7ICZndDsgIG9iai0kKENPTkZJR19M T09OR1NPTl9IVFBJQykJCSs9IGlycS1sb29uZ3Nvbi1odHBpYy5vCiZndDsgJmd0OyAgb2JqLSQo Q09ORklHX0xPT05HU09OX0hUVkVDKQkJKz0gaXJxLWxvb25nc29uLWh0dmVjLm8KJmd0OyAmZ3Q7 IGRpZmYgLS1naXQgYS9kcml2ZXJzL2lycWNoaXAvaXJxLWxvb25nYXJjaC1jcHUuYyBiL2RyaXZl cnMvaXJxY2hpcC9pcnEtbG9vbmdhcmNoLWNwdS5jCiZndDsgJmd0OyBuZXcgZmlsZSBtb2RlIDEw MDY0NAomZ3Q7ICZndDsgaW5kZXggMDAwMDAwMC4uMjZmOTQ4ZgomZ3Q7ICZndDsgLS0tIC9kZXYv bnVsbAomZ3Q7ICZndDsgKysrIGIvZHJpdmVycy9pcnFjaGlwL2lycS1sb29uZ2FyY2gtY3B1LmMK Jmd0OyAmZ3Q7IEBAIC0wLDAgKzEsMTE1IEBACiZndDsgJmd0OyArLy8gU1BEWC1MaWNlbnNlLUlk ZW50aWZpZXI6IEdQTC0yLjAKJmd0OyAmZ3Q7ICsvKgomZ3Q7ICZndDsgKyAqIENvcHlyaWdodCAo QykgMjAyMC0yMDIyIExvb25nc29uIFRlY2hub2xvZ3kgQ29ycG9yYXRpb24gTGltaXRlZAomZ3Q7 ICZndDsgKyAqLwomZ3Q7ICZndDsgKwomZ3Q7ICZndDsgKyNpbmNsdWRlIDxsaW51eCBpbml0Lmg9 IiI+CiZndDsgJmd0OyArI2luY2x1ZGUgPGxpbnV4IGtlcm5lbC5oPSIiPgomZ3Q7ICZndDsgKyNp bmNsdWRlIDxsaW51eCBpbnRlcnJ1cHQuaD0iIj4KJmd0OyAmZ3Q7ICsjaW5jbHVkZSA8bGludXgg aXJxLmg9IiI+CiZndDsgJmd0OyArI2luY2x1ZGUgPGxpbnV4IGlycWNoaXAuaD0iIj4KJmd0OyAm Z3Q7ICsjaW5jbHVkZSA8bGludXggaXJxZG9tYWluLmg9IiI+CiZndDsgJmd0OyArCiZndDsgJmd0 OyArI2luY2x1ZGUgPGFzbSBsb29uZ2FyY2guaD0iIj4KJmd0OyAmZ3Q7ICsjaW5jbHVkZSA8YXNt IHNldHVwLmg9IiI+CiZndDsgJmd0OyArI2luY2x1ZGUgImlycS1sb29uZ2FyY2gtcGljLWNvbW1v bi5oIgomZ3Q7ICZndDsgKwomZ3Q7ICZndDsgK3N0YXRpYyBzdHJ1Y3QgaXJxX2RvbWFpbiAqaXJx X2RvbWFpbjsKJmd0OyAmZ3Q7ICsKJmd0OyAmZ3Q7ICtzdGF0aWMgdm9pZCBtYXNrX2xvb25nYXJj aF9pcnEoc3RydWN0IGlycV9kYXRhICpkKQomZ3Q7ICZndDsgK3sKJmd0OyAmZ3Q7ICsJY2xlYXJf Y3NyX2VjZmcoRUNGR0YoZC0mZ3Q7aHdpcnEpKTsKJmd0OyAmZ3Q7ICt9CiZndDsgJmd0OyArCiZn dDsgJmd0OyArc3RhdGljIHZvaWQgdW5tYXNrX2xvb25nYXJjaF9pcnEoc3RydWN0IGlycV9kYXRh ICpkKQomZ3Q7ICZndDsgK3sKJmd0OyAmZ3Q7ICsJc2V0X2Nzcl9lY2ZnKEVDRkdGKGQtJmd0O2h3 aXJxKSk7CiZndDsgJmd0OyArfQomZ3Q7ICZndDsgKwomZ3Q7ICZndDsgK3N0YXRpYyBzdHJ1Y3Qg aXJxX2NoaXAgY3B1X2lycV9jb250cm9sbGVyID0gewomZ3Q7ICZndDsgKwkubmFtZQkJPSAiTG9v bmdBcmNoIiwKJmd0OyAmZ3Q7ICsJLmlycV9tYXNrCT0gbWFza19sb29uZ2FyY2hfaXJxLAomZ3Q7 ICZndDsgKwkuaXJxX3VubWFzawk9IHVubWFza19sb29uZ2FyY2hfaXJxLAomZ3Q7ICZndDsgK307 CiZndDsgJmd0OyArCiZndDsgJmd0OyArc3RhdGljIHZvaWQgaGFuZGxlX2NwdV9pcnEoc3RydWN0 IHB0X3JlZ3MgKnJlZ3MpCiZndDsgJmd0OyArewomZ3Q7ICZndDsgKwlpbnQgaHdpcnE7CiZndDsg Jmd0OyArCXVuc2lnbmVkIGludCBlc3RhdCA9IHJlYWRfY3NyX2VzdGF0KCkgJmFtcDsgQ1NSX0VT VEFUX0lTOwomZ3Q7ICZndDsgKwomZ3Q7ICZndDsgKwl3aGlsZSAoKGh3aXJxID0gZmZzKGVzdGF0 KSkpIHsKJmd0OyAmZ3Q7ICsJCWVzdGF0ICZhbXA7PSB+QklUKGh3aXJxIC0gMSk7CiZndDsgJmd0 OyArCQlnZW5lcmljX2hhbmRsZV9kb21haW5faXJxKGlycV9kb21haW4sIGh3aXJxIC0gMSk7CiZn dDsgJmd0OyArCX0KJmd0OyAmZ3Q7ICt9CiZndDsgJmd0OyArCiZndDsgJmd0OyArc3RhdGljIGlu dCBsb29uZ2FyY2hfY3B1X2ludGNfbWFwKHN0cnVjdCBpcnFfZG9tYWluICpkLCB1bnNpZ25lZCBp bnQgaXJxLAomZ3Q7ICZndDsgKwkJCSAgICAgaXJxX2h3X251bWJlcl90IGh3aXJxKQomZ3Q7ICZn dDsgK3sKJmd0OyAmZ3Q7ICsJaXJxX3NldF9ub3Byb2JlKGlycSk7CiZndDsgJmd0OyArCWlycV9z ZXRfY2hpcF9hbmRfaGFuZGxlcihpcnEsICZhbXA7Y3B1X2lycV9jb250cm9sbGVyLCBoYW5kbGVf cGVyY3B1X2lycSk7CiZndDsgJmd0OyArCiZndDsgJmd0OyArCXJldHVybiAwOwomZ3Q7ICZndDsg K30KJmd0OyAmZ3Q7ICsKJmd0OyAmZ3Q7ICtzdGF0aWMgY29uc3Qgc3RydWN0IGlycV9kb21haW5f b3BzIGxvb25nYXJjaF9jcHVfaW50Y19pcnFfZG9tYWluX29wcyA9IHsKJmd0OyAmZ3Q7ICsJLm1h cCA9IGxvb25nYXJjaF9jcHVfaW50Y19tYXAsCiZndDsgJmd0OyArCS54bGF0ZSA9IGlycV9kb21h aW5feGxhdGVfb25lY2VsbCwKJmd0OyAmZ3Q7ICt9OwomZ3Q7ICZndDsgKwomZ3Q7ICZndDsgK3N0 cnVjdCBpcnFfZG9tYWluICogX19pbml0IGxvb25nYXJjaF9jcHVfaXJxX2luaXQodm9pZCkKJmd0 OyAmZ3Q7ICt7CiZndDsgJmd0OyArCS8qIE1hc2sgaW50ZXJydXB0cy4gKi8KJmd0OyAmZ3Q7ICsJ Y2xlYXJfY3NyX2VjZmcoRUNGRzBfSU0pOwomZ3Q7ICZndDsgKwljbGVhcl9jc3JfZXN0YXQoRVNU QVRGX0lQKTsKJmd0OyAmZ3Q7ICsKJmd0OyAmZ3Q7ICsJaXJxX2RvbWFpbiA9IGlycV9kb21haW5f YWRkX2xlZ2FjeShOVUxMLCBFWENDT0RFX0lOVF9OVU0sIDAsIDAsCiZndDsgJmd0OyArCQkJCQkJ JmFtcDtsb29uZ2FyY2hfY3B1X2ludGNfaXJxX2RvbWFpbl9vcHMsIE5VTEwpOwomZ3Q7IAomZ3Q7 IEkgYWxyZWFkeSBjb21tZW50ZWQgb24gdGhpcyBpbiB0aGUgcGFzdCwgYW5kIG15IHBvc2l0aW9u IGlzIHN0aWxsIHRoZQomZ3Q7IHNhbWU6IHRoaXMgaXNuJ3QgYSBsZWdhY3kgYXJjaGl0ZWN0dXJl LCB5b3UgYXJlIG5vdCBjb252ZXJ0aW5nCiZndDsgYW55dGhpbmcgZnJvbSBhIGJvYXJkIGZpbGUs IHNvIHRoZXJlIGlzIG5vIHJlYXNvbiB3aHkgeW91IGdldCB0byB1c2UgYQomZ3Q7IGxlZ2FjeSBk b21haW4uCiZndDsgCiZndDsgU2luY2UgeW91IGFyZSB1c2luZyBBQ1BJLCBpcnFfZG9tYWluX2Fk ZF8qKCkgcmVhbGx5IGlzIHRoZSB3cm9uZyBBUEksCiZndDsgYXMgdGhleSB0YWtlIGFuIG9mX25v ZGUuIFVzZSBpcnFfZG9tYWluX2NyZWF0ZV9saW5lYXIoKSwgYW5kIHBhc3MgYW4KJmd0OyBhY3R1 YWwgZndub2RlIHRoZXJlICh0aGVyZSBhcmUgcGxlbnR5IG9mIGV4YW1wbGVzIGluIHRoZSB0cmVl KS4KJmd0OyAKU29ycnksIGFzIEkgbWVudGlvbmVkIGFib3ZlLCB0aGUgb25seSByZWFzb24gdGhh dCBJIHVzZSBsZWdhY3kgaXJxZG9tYWluIGhlcmUgaXMgdG8gYXZvaWQgdG8gZXhwb3J0IGdldF94 eHhfaXJxIGZ1bmN0aW9ucyBmb3Igb3RoZXJzKGxpa2UgYXJjaCBmaWxlcykuIEFzIHlvdSByZWNv bW1lbmQgaGVyZSwgSSdsbCByZWNvdmVyIHRoZW0gaW4gbmV4dCB2ZXJzaW9uLgoKJmd0OyAmZ3Q7 ICsJaWYgKCFpcnFfZG9tYWluKQomZ3Q7ICZndDsgKwkJcGFuaWMoIkZhaWxlZCB0byBhZGQgaXJx ZG9tYWluIGZvciBMb29uZ0FyY2ggQ1BVIik7CiZndDsgJmd0OyArCiZndDsgJmd0OyArCXNldF9o YW5kbGVfaXJxKCZhbXA7aGFuZGxlX2NwdV9pcnEpOwomZ3Q7ICZndDsgKwomZ3Q7ICZndDsgKwly ZXR1cm4gaXJxX2RvbWFpbjsKJmd0OyAKJmd0OyBXaGF0IHVzZXMgdGhpcyBpcnFfZG9tYWluIGlu IHRoZSBhcmNoIGNvZGU/CiZndDsgClRoYW5rcywgc3VyZSwgdGhlcmUgaXMgbm8gbmVlZCB0byBy ZXR1cm4gaXJxX2RvbWFpbu+8jCBhbmQgSSdsbCBjaGFuZ2UgaXQgaW4gbmV4dCB2ZXJzaW9uLgoK Jmd0OyAmZ3Q7ICt9CiZndDsgJmd0OyArI2lmZGVmIENPTkZJR19BQ1BJCiZndDsgCiZndDsgV2h5 IHRoZSAjaWZkZWY/IElzbid0IHRoaXMgc3lzdGVtIHN1cHBvc2VkIHRvIGJlIEFDUEkgb25seT8g VGhlcmUgaXMKJmd0OyBubyBEVCBzdXBwb3J0IGFueXdheSwgc28geW91IHNob3VsZCBtYWtlIHRo ZSBkcml2ZXIgZGVwZW5kIG9uIEFDUEkgYW5kCiZndDsgdGhhdCdzIGFib3V0IGl0LgomZ3Q7IApZ ZXMsIHdlJ2xsIHN1cHBvcnQgRFQgaW4gZnV0dXJlKGluIGZhdGN0LCBEVCBmb3IgdGhlIGRyaXZl ciBoYXMgYmVlbiBzdXBwb3J0ZWQgaW4gb3VyIGludGVybmVsIHJlcG8gZm9yIFNPQyBwcm9kdWN0 cykgZm9yIHRoZSBkcml2ZXIgYXMgb3RoZXIgaXJxY2hpcCBkcml2ZXJzLiBTaG91bGQgd2UgZGVs ZXRlIGl0IG5vdyBhbmQgdGFrZSBpdCBpbnRvIGNvdW50IGxhdGVyIHdoZW4gYWRkaW5nIERUIHN1 cHBvcnRpbmc/CgomZ3Q7ICZndDsgK3N0YXRpYyBpbnQgX19pbml0CiZndDsgJmd0OyArbGlvaW50 Y19wYXJzZV9tYWR0KHVuaW9uIGFjcGlfc3VidGFibGVfaGVhZGVycyAqaGVhZGVyLAomZ3Q7ICZn dDsgKwkJICAgICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgZW5kKQomZ3Q7ICZndDsgK3sKJmd0OyAm Z3Q7ICsJc3RydWN0IGFjcGlfbWFkdF9saW9fcGljICpsaW9pbnRjX2VudHJ5ID0gKHN0cnVjdCBh Y3BpX21hZHRfbGlvX3BpYyAqKWhlYWRlcjsKJmd0OyAmZ3Q7ICsKJmd0OyAmZ3Q7ICsJcmV0dXJu IGxpb2ludGNfYWNwaV9pbml0KGlycV9kb21haW4sIGxpb2ludGNfZW50cnkpOwomZ3Q7ICZndDsg K30KJmd0OyAmZ3Q7ICsKJmd0OyAmZ3Q7ICtzdGF0aWMgaW50IF9faW5pdAomZ3Q7ICZndDsgK2Vp b2ludGNfcGFyc2VfbWFkdCh1bmlvbiBhY3BpX3N1YnRhYmxlX2hlYWRlcnMgKmhlYWRlciwKJmd0 OyAmZ3Q7ICsJCSAgICAgICBjb25zdCB1bnNpZ25lZCBsb25nIGVuZCkKJmd0OyAmZ3Q7ICt7CiZn dDsgJmd0OyArCXN0cnVjdCBhY3BpX21hZHRfZWlvX3BpYyAqZWlvaW50Y19lbnRyeSA9IChzdHJ1 Y3QgYWNwaV9tYWR0X2Vpb19waWMgKiloZWFkZXI7CiZndDsgJmd0OyArCiZndDsgJmd0OyArCXJl dHVybiBlaW9pbnRjX2FjcGlfaW5pdChpcnFfZG9tYWluLCBlaW9pbnRjX2VudHJ5KTsKJmd0OyAm Z3Q7ICt9CiZndDsgJmd0OyArc3RhdGljIGludCBfX2luaXQgYWNwaV9jYXNjYWRlX2lycWRvbWFp bl9pbml0KHZvaWQpCiZndDsgJmd0OyArewomZ3Q7ICZndDsgKwlhY3BpX3RhYmxlX3BhcnNlX21h ZHQoQUNQSV9NQURUX1RZUEVfTElPX1BJQywKJmd0OyAmZ3Q7ICsJCQkgICAgICBsaW9pbnRjX3Bh cnNlX21hZHQsIDApOwomZ3Q7ICZndDsgKwlhY3BpX3RhYmxlX3BhcnNlX21hZHQoQUNQSV9NQURU X1RZUEVfRUlPX1BJQywKJmd0OyAmZ3Q7ICsJCQkgICAgICBlaW9pbnRjX3BhcnNlX21hZHQsIDAp OwomZ3Q7ICZndDsgKwlyZXR1cm4gMDsKJmd0OyAmZ3Q7ICt9CiZndDsgJmd0OyArc3RhdGljIGlu dCBfX2luaXQgY29yZWludGNfYWNwaV9pbml0X3YxKHVuaW9uIGFjcGlfc3VidGFibGVfaGVhZGVy cyAqaGVhZGVyLAomZ3Q7ICZndDsgKwkJCQkgICBjb25zdCB1bnNpZ25lZCBsb25nIGVuZCkKJmd0 OyAmZ3Q7ICt7CiZndDsgJmd0OyArCWlmIChpcnFfZG9tYWluKQomZ3Q7ICZndDsgKwkJcmV0dXJu IDA7CiZndDsgJmd0OyArCiZndDsgJmd0OyArCWluaXRfdmVjdG9yX3BhcmVudF9ncm91cCgpOwom Z3Q7ICZndDsgKwlsb29uZ2FyY2hfY3B1X2lycV9pbml0KCk7CiZndDsgJmd0OyArCWFjcGlfY2Fz Y2FkZV9pcnFkb21haW5faW5pdCgpOwomZ3Q7ICZndDsgKwlyZXR1cm4gMDsKJmd0OyAmZ3Q7ICt9 CiZndDsgJmd0OyArSVJRQ0hJUF9BQ1BJX0RFQ0xBUkUoY29yZWludGNfdjEsIEFDUElfTUFEVF9U WVBFX0NPUkVfUElDLAomZ3Q7ICZndDsgKwkJTlVMTCwgQUNQSV9NQURUX0NPUkVfUElDX1ZFUlNJ T05fVjEsCiZndDsgJmd0OyArCQljb3JlaW50Y19hY3BpX2luaXRfdjEpOwomZ3Q7ICZndDsgKyNl bmRpZgomZ3Q7ICZndDsgZGlmZiAtLWdpdCBhL2RyaXZlcnMvaXJxY2hpcC9pcnEtbG9vbmdhcmNo LXBpYy1jb21tb24uYyBiL2RyaXZlcnMvaXJxY2hpcC9pcnEtbG9vbmdhcmNoLXBpYy1jb21tb24u YwomZ3Q7ICZndDsgbmV3IGZpbGUgbW9kZSAxMDA2NDQKJmd0OyAmZ3Q7IGluZGV4IDAwMDAwMDAu Ljk0NDM3ZTQKJmd0OyAmZ3Q7IC0tLSAvZGV2L251bGwKJmd0OyAmZ3Q7ICsrKyBiL2RyaXZlcnMv aXJxY2hpcC9pcnEtbG9vbmdhcmNoLXBpYy1jb21tb24uYwomZ3Q7ICZndDsgQEAgLTAsMCArMSwy MDEgQEAKJmd0OyAmZ3Q7ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5 CiZndDsgJmd0OyArLyoKJmd0OyAmZ3Q7ICsgKiBDb3B5cmlnaHQgKEMpIDIwMjIgTG9vbmdzb24g TGltaXRlZCwgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KJmd0OyAmZ3Q7ICsgKi8KJmd0OyAmZ3Q7ICsK Jmd0OyAmZ3Q7ICsjaW5jbHVkZSA8bGludXggaXJxLmg9IiI+CiZndDsgJmd0OyArI2luY2x1ZGUg PGxpbnV4IGFjcGkuaD0iIj4KJmd0OyAmZ3Q7ICsjaW5jbHVkZSA8bGludXggcGNpLmg9IiI+CiZn dDsgJmd0OyArI2luY2x1ZGUgImlycS1sb29uZ2FyY2gtcGljLWNvbW1vbi5oIgomZ3Q7ICZndDsg KwomZ3Q7ICZndDsgK3N0YXRpYyBzdHJ1Y3QgYWNwaV92ZWN0b3JfZ3JvdXAgdmVjdG9yX2dyb3Vw W01BWF9JT19QSUNTXTsKJmd0OyAmZ3Q7ICtzdHJ1Y3QgYWNwaV9tYWR0X2Jpb19waWMgKmFjcGlf cGNocGljW01BWF9JT19QSUNTXTsKJmd0OyAmZ3Q7ICsKJmd0OyAmZ3Q7ICtzdHJ1Y3QgaXJxX2Rv bWFpbiAqbGlvaW50Y19kb21haW47CiZndDsgJmd0OyArc3RydWN0IGlycV9kb21haW4gKnBjaF9s cGNfZG9tYWluOwomZ3Q7ICZndDsgK3N0cnVjdCBpcnFfZG9tYWluICpwY2hfbXNpX2RvbWFpbltN QVhfSU9fUElDU107CiZndDsgJmd0OyArc3RydWN0IGlycV9kb21haW4gKnBjaF9waWNfZG9tYWlu W01BWF9JT19QSUNTXTsKJmd0OyAKJmd0OyBXaHkgaXNuJ3QgdGhpcyBzdGF0aWM/IElmIHNvbWVv bmUgbmVlZHMgdG8ga25vdywgd2h5IGlzbid0IHRoZXJlIGFuCiZndDsgYWNjZXNzb3I/CiZndDsg ClRoZXNlIGlycV9kb21haW5zIHdpbGwgYmUgaW5pdGlhbGl6ZWQgaW4gb3RoZXIgaXJxY2hpcCBk cml2ZXJzKGUuZy4gbGlvaW50Y19kb21haW4gaXMgc2V0IGluIGxpb2ludGMgZHJpdmVyKS4KCiZn dDsgCiZndDsgJmd0OyArCiZndDsgJmd0OyArc3RhdGljIGludCBmaW5kX3BjaF9waWModTMyIGdz aSkKJmd0OyAmZ3Q7ICt7CiZndDsgJmd0OyArCWludCBpLCBzdGFydCwgZW5kOwomZ3Q7ICZndDsg KwomZ3Q7ICZndDsgKwkvKiBGaW5kIHRoZSBQQ0hfUElDIHRoYXQgbWFuYWdlcyB0aGlzIEdTSS4g Ki8KJmd0OyAmZ3Q7ICsJZm9yIChpID0gMDsgaSAmbHQ7IE1BWF9JT19QSUNTOyBpKyspIHsKJmd0 OyAmZ3Q7ICsJCXN0cnVjdCBhY3BpX21hZHRfYmlvX3BpYyAqaXJxX2NmZyA9IGFjcGlfcGNocGlj W2ldOwomZ3Q7ICZndDsgKwomZ3Q7ICZndDsgKwkJaWYgKCFpcnFfY2ZnKQomZ3Q7ICZndDsgKwkJ CXJldHVybiAtMTsKJmd0OyAmZ3Q7ICsKJmd0OyAmZ3Q7ICsJCXN0YXJ0ID0gaXJxX2NmZy0mZ3Q7 Z3NpX2Jhc2U7CiZndDsgJmd0OyArCQllbmQgICA9IGlycV9jZmctJmd0O2dzaV9iYXNlICsgaXJx X2NmZy0mZ3Q7c2l6ZTsKJmd0OyAmZ3Q7ICsJCWlmIChnc2kgJmd0Oz0gc3RhcnQgJmFtcDsmYW1w OyBnc2kgJmx0OyBlbmQpCiZndDsgJmd0OyArCQkJcmV0dXJuIGk7CiZndDsgJmd0OyArCX0KJmd0 OyAmZ3Q7ICsKJmd0OyAmZ3Q7ICsJcHJfZXJyKCJFUlJPUjogVW5hYmxlIHRvIGxvY2F0ZSBQQ0hf UElDIGZvciBHU0kgJWRcbiIsIGdzaSk7CiZndDsgJmd0OyArCXJldHVybiAtMTsKJmd0OyAmZ3Q7 ICt9CiZndDsgJmd0OyArCiZndDsgJmd0OyAraW50IHBjaWJpb3NfZGV2aWNlX2FkZChzdHJ1Y3Qg cGNpX2RldiAqZGV2KQomZ3Q7ICZndDsgK3sKJmd0OyAmZ3Q7ICsJaW50IGlkID0gcGNpX2RvbWFp bl9ucihkZXYtJmd0O2J1cyk7CiZndDsgJmd0OyArCiZndDsgJmd0OyArCWRldl9zZXRfbXNpX2Rv bWFpbigmYW1wO2Rldi0mZ3Q7ZGV2LCBwY2hfbXNpX2RvbWFpbltpZF0pOwomZ3Q7ICZndDsgKwom Z3Q7ICZndDsgKwlyZXR1cm4gMDsKJmd0OyAmZ3Q7ICt9CiZndDsgCiZndDsgVGhpcyBkb2Vzbid0 IGJlbG9uZyBoZXJlIGF0IGFsbC4gUGxlYXNlIG1vdmUgaXQgdG8gdGhlIFBDSSBjb2RlLgomZ3Q7 IApPaywgSSdsbCBwdXQgdGhlbSBpbnRvIFBDSSBjb2RlIG9mIGFyY2ggZGlyZWN0b3J5LgoKJmd0 OyAmZ3Q7ICsKJmd0OyAmZ3Q7ICtpbnQgYWNwaV9nc2lfdG9faXJxKHUzMiBnc2ksIHVuc2lnbmVk IGludCAqaXJxcCkKJmd0OyAmZ3Q7ICt7CiZndDsgJmd0OyArCWlmIChpcnFwICE9IE5VTEwpCiZn dDsgJmd0OyArCQkqaXJxcCA9IGFjcGlfcmVnaXN0ZXJfZ3NpKE5VTEwsIGdzaSwgLTEsIC0xKTsK Jmd0OyAmZ3Q7ICsJcmV0dXJuICgqaXJxcCAmZ3Q7PSAwKSA/IDAgOiAtRUlOVkFMOwomZ3Q7ICZn dDsgK30KJmd0OyAmZ3Q7ICtFWFBPUlRfU1lNQk9MX0dQTChhY3BpX2dzaV90b19pcnEpOwomZ3Q7 ICZndDsgKwomZ3Q7ICZndDsgK2ludCBhY3BpX2lzYV9pcnFfdG9fZ3NpKHVuc2lnbmVkIGludCBp c2FfaXJxLCB1MzIgKmdzaSkKJmd0OyAmZ3Q7ICt7CiZndDsgJmd0OyArCWlmIChnc2kpCiZndDsg Jmd0OyArCQkqZ3NpID0gaXNhX2lycTsKJmd0OyAmZ3Q7ICsJcmV0dXJuIDA7CiZndDsgJmd0OyAr fQomZ3Q7ICZndDsgKwomZ3Q7ICZndDsgKy8qCiZndDsgJmd0OyArICogc3VjY2VzczogcmV0dXJu IElSUSBudW1iZXIgKCZndDs9MCkKJmd0OyAmZ3Q7ICsgKiBmYWlsdXJlOiByZXR1cm4gJmx0OyAw CiZndDsgJmd0OyArICovCiZndDsgJmd0OyAraW50IGFjcGlfcmVnaXN0ZXJfZ3NpKHN0cnVjdCBk ZXZpY2UgKmRldiwgdTMyIGdzaSwgaW50IHRyaWdnZXIsIGludCBwb2xhcml0eSkKJmd0OyAmZ3Q7 ICt7CiZndDsgJmd0OyArCWludCBpZDsKJmd0OyAmZ3Q7ICsJc3RydWN0IGlycV9md3NwZWMgZndz cGVjOwomZ3Q7ICZndDsgKwomZ3Q7ICZndDsgKwlzd2l0Y2ggKGdzaSkgewomZ3Q7ICZndDsgKwlj YXNlIEdTSV9NSU5fQ1BVX0lSUSAuLi4gR1NJX01BWF9DUFVfSVJROgomZ3Q7ICZndDsgKwkJZndz cGVjLmZ3bm9kZSA9IGxpb2ludGNfZG9tYWluLSZndDtmd25vZGU7CiZndDsgJmd0OyArCQlmd3Nw ZWMucGFyYW1bMF0gPSBnc2kgLSBHU0lfTUlOX0NQVV9JUlE7CiZndDsgJmd0OyArCQlmd3NwZWMu cGFyYW1fY291bnQgPSAxOwomZ3Q7ICZndDsgKwomZ3Q7ICZndDsgKwkJcmV0dXJuIGlycV9jcmVh dGVfZndzcGVjX21hcHBpbmcoJmFtcDtmd3NwZWMpOwomZ3Q7ICZndDsgKwomZ3Q7ICZndDsgKwlj YXNlIEdTSV9NSU5fTFBDX0lSUSAuLi4gR1NJX01BWF9MUENfSVJROgomZ3Q7ICZndDsgKwkJaWYg KCFwY2hfbHBjX2RvbWFpbikKJmd0OyAmZ3Q7ICsJCQlyZXR1cm4gLUVJTlZBTDsKJmd0OyAmZ3Q7 ICsKJmd0OyAmZ3Q7ICsJCWZ3c3BlYy5md25vZGUgPSBwY2hfbHBjX2RvbWFpbi0mZ3Q7Zndub2Rl OwomZ3Q7ICZndDsgKwkJZndzcGVjLnBhcmFtWzBdID0gZ3NpIC0gR1NJX01JTl9MUENfSVJROwom Z3Q7ICZndDsgKwkJZndzcGVjLnBhcmFtWzFdID0gYWNwaV9kZXZfZ2V0X2lycV90eXBlKHRyaWdn ZXIsIHBvbGFyaXR5KTsKJmd0OyAmZ3Q7ICsJCWZ3c3BlYy5wYXJhbV9jb3VudCA9IDI7CiZndDsg Jmd0OyArCiZndDsgJmd0OyArCQlyZXR1cm4gaXJxX2NyZWF0ZV9md3NwZWNfbWFwcGluZygmYW1w O2Z3c3BlYyk7CiZndDsgJmd0OyArCiZndDsgJmd0OyArCWNhc2UgR1NJX01JTl9QQ0hfSVJRIC4u LiBHU0lfTUFYX1BDSF9JUlE6CiZndDsgJmd0OyArCQlpZCA9IGZpbmRfcGNoX3BpYyhnc2kpOwom Z3Q7ICZndDsgKwkJaWYgKGlkICZsdDsgMCkKJmd0OyAmZ3Q7ICsJCQlyZXR1cm4gLUVJTlZBTDsK Jmd0OyAmZ3Q7ICsKJmd0OyAmZ3Q7ICsJCWZ3c3BlYy5md25vZGUgPSBwY2hfcGljX2RvbWFpbltp ZF0tJmd0O2Z3bm9kZTsKJmd0OyAmZ3Q7ICsJCWZ3c3BlYy5wYXJhbVswXSA9IGdzaSAtIGFjcGlf cGNocGljW2lkXS0mZ3Q7Z3NpX2Jhc2U7CiZndDsgJmd0OyArCQlmd3NwZWMucGFyYW1bMV0gPSBJ UlFfVFlQRV9MRVZFTF9ISUdIOwomZ3Q7ICZndDsgKwkJZndzcGVjLnBhcmFtX2NvdW50ID0gMjsK Jmd0OyAmZ3Q7ICsKJmd0OyAmZ3Q7ICsJCXJldHVybiBpcnFfY3JlYXRlX2Z3c3BlY19tYXBwaW5n KCZhbXA7ZndzcGVjKTsKJmd0OyAmZ3Q7ICsJfQomZ3Q7IAomZ3Q7IFNvIGFsbCB0aGUgY29tcGxl eGl0eSBoZXJlIHNlZW1zIHRvIHN0ZW0gZnJvbSB0aGUgZmFjdCB0aGF0IHlvdSBkZWFsCiZndDsg d2l0aCB0aHJlZSByYW5nZXMgb2YgaW50ZXJydXB0cywgbWFuYWdlZCBieSB0aHJlZSBkaWZmZXJl bnQgcGllY2VzIG9mCiZndDsgY29kZT8KJmd0OyAKWWVzLgoKJmd0OyBPdGhlciBhcmNoaXRlY3R1 cmVzIGhhdmUgc2ltaWxhciByZXF1aXJlbWVudHMsIGFuZCBkb24ndCByZXF1aXJlIHRvCiZndDsg cmUtaW1wbGVtZW50IGEgcHJpdmF0ZSB2ZXJzaW9uIG9mIHRoZSBBQ1BJIEFQSS4gSW5zdGVhZCwg dGhleSBleHBvc2UgYQomZ3Q7IHNpbmdsZSBpcnFkb21haW4sIGFuZCBkZWFsIHdpdGggdGhlIHZh cmlvdXMgcmFuZ2VzIGludGVybmFsbHkuCiZndDsgCiZndDsgQ2xlYXJseSwgbm90IGJlaW5nIGFi bGUgdG8gcmV1c2UgZHJpdmVycy9hY3BpL2lycS5jICppcyogYW4gaXNzdWUuCiZndDsgClRoYW5r cywgSSBhZ3JlZSwgdGhhdCBzb3VuZHMgYSBnb29kIGFuZCByZWFzb25hYmxlIHN1Z2dlc3Rpb24s IGFuZCBJJ2xsIHJlc2VyYWNoIGl0IGZ1cnRoZXIgYW5kIHJldXNlIGNvZGUgZnJvbSBkcml2ZXJz L2FjcGkvaXJxLmMgYXMgY2FuIGFzIHBvc3NpYmxlLgoKJmd0OyAmZ3Q7ICsKJmd0OyAmZ3Q7ICsJ cmV0dXJuIC1FSU5WQUw7CiZndDsgJmd0OyArfQomZ3Q7ICZndDsgK0VYUE9SVF9TWU1CT0xfR1BM KGFjcGlfcmVnaXN0ZXJfZ3NpKTsKJmd0OyAmZ3Q7ICsKJmd0OyAmZ3Q7ICt2b2lkIGFjcGlfdW5y ZWdpc3Rlcl9nc2kodTMyIGdzaSkKJmd0OyAmZ3Q7ICt7CiZndDsgJmd0OyArCWludCBpZCwgaXJx LCBod19pcnE7CiZndDsgJmd0OyArCXN0cnVjdCBpcnFfZG9tYWluICpkOwomZ3Q7ICZndDsgKwom Z3Q7ICZndDsgKwlzd2l0Y2ggKGdzaSkgewomZ3Q7ICZndDsgKwljYXNlIEdTSV9NSU5fQ1BVX0lS USAuLi4gR1NJX01BWF9DUFVfSVJROgomZ3Q7ICZndDsgKwkJaWYgKCFsaW9pbnRjX2RvbWFpbikK Jmd0OyAmZ3Q7ICsJCQlyZXR1cm47CiZndDsgJmd0OyArCQlkID0gbGlvaW50Y19kb21haW47CiZn dDsgJmd0OyArCQlod19pcnEgPSBnc2kgLSBHU0lfTUlOX0NQVV9JUlE7CiZndDsgJmd0OyArCQli cmVhazsKJmd0OyAmZ3Q7ICsKJmd0OyAmZ3Q7ICsJY2FzZSBHU0lfTUlOX0xQQ19JUlEgLi4uIEdT SV9NQVhfTFBDX0lSUToKJmd0OyAmZ3Q7ICsJCWlmICghcGNoX2xwY19kb21haW4pCiZndDsgJmd0 OyArCQkJcmV0dXJuOwomZ3Q7ICZndDsgKwkJZCA9IHBjaF9scGNfZG9tYWluOwomZ3Q7ICZndDsg KwkJaHdfaXJxID0gZ3NpIC0gR1NJX01JTl9MUENfSVJROwomZ3Q7ICZndDsgKwkJYnJlYWs7CiZn dDsgJmd0OyArCiZndDsgJmd0OyArCWNhc2UgR1NJX01JTl9QQ0hfSVJRIC4uLiBHU0lfTUFYX1BD SF9JUlE6CiZndDsgJmd0OyArCQlpZCA9IGZpbmRfcGNoX3BpYyhnc2kpOwomZ3Q7ICZndDsgKwkJ aWYgKGlkICZsdDsgMCkKJmd0OyAmZ3Q7ICsJCQlyZXR1cm47CiZndDsgJmd0OyArCQlpZiAoIXBj aF9waWNfZG9tYWluW2lkXSkKJmd0OyAmZ3Q7ICsJCQlyZXR1cm47CiZndDsgJmd0OyArCQlkID0g cGNoX3BpY19kb21haW5baWRdOwomZ3Q7ICZndDsgKwomZ3Q7ICZndDsgKwkJaHdfaXJxID0gZ3Np IC0gYWNwaV9wY2hwaWNbaWRdLSZndDtnc2lfYmFzZTsKJmd0OyAmZ3Q7ICsJCWJyZWFrOwomZ3Q7 ICZndDsgKwl9CiZndDsgJmd0OyArCWlycSA9IGlycV9maW5kX21hcHBpbmcoZCwgaHdfaXJxKTsK Jmd0OyAmZ3Q7ICsJaXJxX2Rpc3Bvc2VfbWFwcGluZyhpcnEpOwomZ3Q7ICZndDsgKwomZ3Q7ICZn dDsgKwlyZXR1cm47CiZndDsgJmd0OyArfQomZ3Q7ICZndDsgK0VYUE9SVF9TWU1CT0xfR1BMKGFj cGlfdW5yZWdpc3Rlcl9nc2kpOwomZ3Q7ICZndDsgKwomZ3Q7ICZndDsgK3N0YXRpYyBpbnQgcGNp X21jZmdfcGFyc2Uoc3RydWN0IGFjcGlfdGFibGVfaGVhZGVyICpoZWFkZXIpCiZndDsgJmd0OyAr ewomZ3Q7ICZndDsgKwlzdHJ1Y3QgYWNwaV90YWJsZV9tY2ZnICptY2ZnOwomZ3Q7ICZndDsgKwlz dHJ1Y3QgYWNwaV9tY2ZnX2FsbG9jYXRpb24gKm1wdHI7CiZndDsgJmd0OyArCWludCBpLCBuOwom Z3Q7ICZndDsgKwomZ3Q7ICZndDsgKwlpZiAoaGVhZGVyLSZndDtsZW5ndGggJmx0OyBzaXplb2Yo c3RydWN0IGFjcGlfdGFibGVfbWNmZykpCiZndDsgJmd0OyArCQlyZXR1cm4gLUVJTlZBTDsKJmd0 OyAmZ3Q7ICsKJmd0OyAmZ3Q7ICsJbiA9IChoZWFkZXItJmd0O2xlbmd0aCAtIHNpemVvZihzdHJ1 Y3QgYWNwaV90YWJsZV9tY2ZnKSkgLwomZ3Q7ICZndDsgKwkJCQkJc2l6ZW9mKHN0cnVjdCBhY3Bp X21jZmdfYWxsb2NhdGlvbik7CiZndDsgJmd0OyArCW1jZmcgPSAoc3RydWN0IGFjcGlfdGFibGVf bWNmZyAqKWhlYWRlcjsKJmd0OyAmZ3Q7ICsJbXB0ciA9IChzdHJ1Y3QgYWNwaV9tY2ZnX2FsbG9j YXRpb24gKikgJmFtcDttY2ZnWzFdOwomZ3Q7ICZndDsgKwomZ3Q7ICZndDsgKwlmb3IgKGkgPSAw OyBpICZsdDsgbjsgaSsrLCBtcHRyKyspCiZndDsgJmd0OyArCQl2ZWN0b3JfZ3JvdXBbbXB0ci0m Z3Q7cGNpX3NlZ21lbnRdLm5vZGUgPSAobXB0ci0mZ3Q7YWRkcmVzcyAmZ3Q7Jmd0OyA0NCkgJmFt cDsgMHhmOwomZ3Q7ICZndDsgKwomZ3Q7ICZndDsgKwlyZXR1cm4gMDsKJmd0OyAmZ3Q7ICt9CiZn dDsgCiZndDsgQWdhaW4sIHdoeSBjYW4ndCB5b3UgcmV1c2UgZHJpdmVycy9hY3BpL3BjaV9tY2Zn LmM/CiZndDsgClllcywgSSByZWFsbHkgd2FudCB0byByZXVzZSBjb2RlIGZyb20gcGNpX21jZmcu YywgYnV0IEkgZm91bmQgdGhhdCBwY2lfbW1jZmdfbGF0ZV9pbml0KCkgaXMgY2FsbGVkIGZyb20g YWNwaV9pbml0IGR1cmluZyBzdWJzeXNfaW5pdGNhbGwuIHZlY3Rvcl9ncm91cCBlbnRyaWVzIGhl cmUgYXJlCm5lZWRlZCBpbml0aWFsemVkIGR1cmluZyBpcnFjaGlwX2luaXQgZmxvdyBiZWZvcmUg RUlPSU5UQywgUENIIFBJQyBhbmQgUENIIE1TSSBpbml0aWFsaXphdGlvbiBhcyBJIGRlc2NyaXB0 ZWQgaW5mbyAnRXhhbXBsZSBvZiBpcnFjaGlwIHRvcG9sb2d5IGluIGEgc3lzdGVtIHdpdGggIHR3 byBjaGlwc2V0cycgaW4gW1BBVENIIFJGQyBWMiAwMC8xMF0uCgomZ3Q7ICZndDsgKwomZ3Q7ICZn dDsgK3ZvaWQgX19pbml0IGluaXRfdmVjdG9yX3BhcmVudF9ncm91cCh2b2lkKQomZ3Q7ICZndDsg K3sKJmd0OyAmZ3Q7ICsJYWNwaV90YWJsZV9wYXJzZShBQ1BJX1NJR19NQ0ZHLCBwY2lfbWNmZ19w YXJzZSk7CiZndDsgJmd0OyArfQomZ3Q7ICZndDsgKwomZ3Q7ICZndDsgK3ZvaWQgYWNwaV9zZXRf dmVjdG9yX3BhcmVudChpbnQgbm9kZSwgc3RydWN0IGlycV9kb21haW4gKnBhcmVudCkKJmd0OyAm Z3Q7ICt7CiZndDsgJmd0OyArCWludCBpOwomZ3Q7ICZndDsgKwomZ3Q7ICZndDsgKwlpZiAoY3B1 X2hhc19mbGF0bW9kZSkKJmd0OyAmZ3Q7ICsJCW5vZGUgPSBjcHVfdG9fbm9kZShub2RlICogQ09S RVNfUEVSX0VJT19OT0RFKTsKJmd0OyAmZ3Q7ICsKJmd0OyAmZ3Q7ICsJZm9yIChpID0gMDsgaSAm bHQ7IE1BWF9JT19QSUNTOyBpKyspIHsKJmd0OyAmZ3Q7ICsJCWlmIChub2RlID09IHZlY3Rvcl9n cm91cFtpXS5ub2RlKSB7CiZndDsgJmd0OyArCQkJdmVjdG9yX2dyb3VwW2ldLnBhcmVudCA9IHBh cmVudDsKJmd0OyAmZ3Q7ICsJCQlyZXR1cm47CiZndDsgJmd0OyArCQl9CiZndDsgJmd0OyArCX0K Jmd0OyAmZ3Q7ICt9CiZndDsgJmd0OyArCiZndDsgJmd0OyArc3RydWN0IGlycV9kb21haW4gKmFj cGlfZ2V0X21zaV9wYXJlbnQoaW50IGluZGV4KQomZ3Q7ICZndDsgK3sKJmd0OyAmZ3Q7ICsJcmV0 dXJuIHZlY3Rvcl9ncm91cFtpbmRleF0ucGFyZW50OwomZ3Q7ICZndDsgK30KJmd0OyAmZ3Q7ICsK Jmd0OyAmZ3Q7ICtzdHJ1Y3QgaXJxX2RvbWFpbiAqYWNwaV9nZXRfcGNoX3BhcmVudChpbnQgbm9k ZSkKJmd0OyAmZ3Q7ICt7CiZndDsgJmd0OyArCWludCBpOwomZ3Q7ICZndDsgKwomZ3Q7ICZndDsg Kwlmb3IgKGkgPSAwOyBpICZsdDsgTUFYX0lPX1BJQ1M7IGkrKykgewomZ3Q7ICZndDsgKwkJaWYg KG5vZGUgPT0gdmVjdG9yX2dyb3VwW2ldLm5vZGUpCiZndDsgJmd0OyArCQkJcmV0dXJuIHZlY3Rv cl9ncm91cFtpXS5wYXJlbnQ7CiZndDsgJmd0OyArCX0KJmd0OyAmZ3Q7ICsJcmV0dXJuIE5VTEw7 CiZndDsgJmd0OyArfQomZ3Q7ICZndDsgZGlmZiAtLWdpdCBhL2RyaXZlcnMvaXJxY2hpcC9pcnEt bG9vbmdhcmNoLXBpYy1jb21tb24uaCBiL2RyaXZlcnMvaXJxY2hpcC9pcnEtbG9vbmdhcmNoLXBp Yy1jb21tb24uaAomZ3Q7ICZndDsgbmV3IGZpbGUgbW9kZSAxMDA2NDQKJmd0OyAmZ3Q7IGluZGV4 IDAwMDAwMDAuLjM4MTVmYzkKJmd0OyAmZ3Q7IC0tLSAvZGV2L251bGwKJmd0OyAmZ3Q7ICsrKyBi L2RyaXZlcnMvaXJxY2hpcC9pcnEtbG9vbmdhcmNoLXBpYy1jb21tb24uaAomZ3Q7ICZndDsgQEAg LTAsMCArMSw0NCBAQAomZ3Q7ICZndDsgKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwt Mi4wLW9ubHkgKi8KJmd0OyAmZ3Q7ICsvKgomZ3Q7ICZndDsgKyAqIENvcHlyaWdodCAoQykgMjAy MiBMb29uZ3NvbiBMaW1pdGVkLCBBbGwgUmlnaHRzIFJlc2VydmVkLgomZ3Q7ICZndDsgKyAqLwom Z3Q7ICZndDsgKwomZ3Q7ICZndDsgKyNpZm5kZWYgX0lSUV9MT09OR0FSQ0hfUElDX0NPTU1PTl9I CiZndDsgJmd0OyArI2RlZmluZSBfSVJRX0xPT05HQVJDSF9QSUNfQ09NTU9OX0gKJmd0OyAmZ3Q7 ICsKJmd0OyAmZ3Q7ICsjaW5jbHVkZSA8bGludXggb2YuaD0iIj4KJmd0OyAmZ3Q7ICsjaW5jbHVk ZSA8bGludXggaXJxZG9tYWluLmg9IiI+CiZndDsgJmd0OyArCiZndDsgJmd0OyArc3RydWN0IGFj cGlfdmVjdG9yX2dyb3VwIHsKJmd0OyAmZ3Q7ICsJaW50IG5vZGU7CiZndDsgJmd0OyArCXN0cnVj dCBpcnFfZG9tYWluICpwYXJlbnQ7CiZndDsgJmd0OyArfTsKJmd0OyAmZ3Q7ICsKJmd0OyAmZ3Q7 ICsvKiBJUlEgbnVtYmVyIGRlZmluaXRpb25zICovCiZndDsgJmd0OyArI2RlZmluZSBMT09OR1NP Tl9MUENfSVJRX0JBU0UJCTAKJmd0OyAmZ3Q7ICsjZGVmaW5lIExPT05HU09OX0NQVV9JUlFfQkFT RQkJMTYKJmd0OyAmZ3Q7ICsjZGVmaW5lIExPT05HU09OX1BDSF9JUlFfQkFTRQkJNjQKJmd0OyAm Z3Q7ICsKJmd0OyAmZ3Q7ICsjZGVmaW5lIEdTSV9NSU5fTFBDX0lSUQkJTE9PTkdTT05fTFBDX0lS UV9CQVNFCiZndDsgJmd0OyArI2RlZmluZSBHU0lfTUFYX0xQQ19JUlEJCShMT09OR1NPTl9MUENf SVJRX0JBU0UgKyAxNiAtIDEpCiZndDsgJmd0OyArI2RlZmluZSBHU0lfTUlOX0NQVV9JUlEJCUxP T05HU09OX0NQVV9JUlFfQkFTRQomZ3Q7ICZndDsgKyNkZWZpbmUgR1NJX01BWF9DUFVfSVJRCQko TE9PTkdTT05fQ1BVX0lSUV9CQVNFICsgNDggLSAxKQomZ3Q7ICZndDsgKyNkZWZpbmUgR1NJX01J Tl9QQ0hfSVJRCQlMT09OR1NPTl9QQ0hfSVJRX0JBU0UKJmd0OyAmZ3Q7ICsjZGVmaW5lIEdTSV9N QVhfUENIX0lSUQkJKExPT05HU09OX1BDSF9JUlFfQkFTRSArIDI1NiAtIDEpCiZndDsgJmd0OyAr CiZndDsgJmd0OyArZXh0ZXJuIHN0cnVjdCBhY3BpX21hZHRfYmlvX3BpYyAqYWNwaV9wY2hwaWNb TUFYX0lPX1BJQ1NdOwomZ3Q7ICZndDsgK2V4dGVybiBzdHJ1Y3QgaXJxX2RvbWFpbiAqbGlvaW50 Y19kb21haW47CiZndDsgJmd0OyArZXh0ZXJuIHN0cnVjdCBpcnFfZG9tYWluICpwY2hfbHBjX2Rv bWFpbjsKJmd0OyAmZ3Q7ICtleHRlcm4gc3RydWN0IGlycV9kb21haW4gKnBjaF9tc2lfZG9tYWlu W01BWF9JT19QSUNTXTsKJmd0OyAmZ3Q7ICtleHRlcm4gc3RydWN0IGlycV9kb21haW4gKnBjaF9w aWNfZG9tYWluW01BWF9JT19QSUNTXTsKJmd0OyAmZ3Q7ICsKJmd0OyAmZ3Q7ICtpbnQgbGlvaW50 Y19hY3BpX2luaXQoc3RydWN0IGlycV9kb21haW4gKnBhcmVudCwgc3RydWN0IGFjcGlfbWFkdF9s aW9fcGljICphY3BpX2xpb2ludGMpOwomZ3Q7ICZndDsgK2ludCBlaW9pbnRjX2FjcGlfaW5pdChz dHJ1Y3QgaXJxX2RvbWFpbiAqcGFyZW50LCBzdHJ1Y3QgYWNwaV9tYWR0X2Vpb19waWMgKmFjcGlf ZWlvaW50Yyk7CiZndDsgJmd0OyAraW50IGh0dmVjX2FjcGlfaW5pdChzdHJ1Y3QgaXJxX2RvbWFp biAqcGFyZW50LCBzdHJ1Y3QgYWNwaV9tYWR0X2h0X3BpYyAqYWNwaV9odHZlYyk7CiZndDsgJmd0 OyAraW50IHBjaF9scGNfYWNwaV9pbml0KHN0cnVjdCBpcnFfZG9tYWluICpwYXJlbnQsIHN0cnVj dCBhY3BpX21hZHRfbHBjX3BpYyAqYWNwaV9wY2hscGMpOwomZ3Q7ICZndDsgK3ZvaWQgaW5pdF92 ZWN0b3JfcGFyZW50X2dyb3VwKHZvaWQpOwomZ3Q7ICZndDsgK3ZvaWQgYWNwaV9zZXRfdmVjdG9y X3BhcmVudChpbnQgbm9kZSwgc3RydWN0IGlycV9kb21haW4gKnBhcmVudCk7CiZndDsgJmd0OyAr c3RydWN0IGlycV9kb21haW4gKmFjcGlfZ2V0X21zaV9wYXJlbnQoaW50IGluZGV4KTsKJmd0OyAm Z3Q7ICtzdHJ1Y3QgaXJxX2RvbWFpbiAqYWNwaV9nZXRfcGNoX3BhcmVudChpbnQgbm9kZSk7CiZn dDsgJmd0OyArCiZndDsgJmd0OyArI2VuZGlmIC8qIF9JUlFfTE9PTkdBUkNIX1BJQ19DT01NT05f SCAqLwomZ3Q7ICZndDsgLS0gCiZndDsgJmd0OyAxLjguMy4xCiZndDsgJmd0OyAKJmd0OyAmZ3Q7 IAomZ3Q7IAomZ3Q7IFRoYW5rcywKJmd0OyAKJmd0OyAJTS4KJmd0OyAKJmd0OyAtLSAKJmd0OyBX aXRob3V0IGRldmlhdGlvbiBmcm9tIHRoZSBub3JtLCBwcm9ncmVzcyBpcyBub3QgcG9zc2libGUu CjwvbGludXg+PC9saW51eD48L2xpbnV4PjwvbGludXg+PC9saW51eD48L2FzbT48L2FzbT48L2xp bnV4PjwvbGludXg+PC9saW51eD48L2xpbnV4PjwvbGludXg+PC9saW51eD48L2x2amlhbm1pbkBs b29uZ3Nvbi5jbj48L2NoZW5odWFjYWlAbG9vbmdzb24uY24+PC9sdmppYW5taW5AbG9vbmdzb24u Y24+PC9jaGVuaHVhY2FpQGxvb25nc29uLmNuPjwvamlheHVuLnlhbmdAZmx5Z29hdC5jb20+PC9j aGVuaHVhY2FpQGdtYWlsLmNvbT48L2xpeHVlZmVuZ0Bsb29uZ3Nvbi5jbj48L3RnbHhAbGludXRy b25peC5kZT48L2x2amlhbm1pbkBsb29uZ3Nvbi5jbj48L21hekBrZXJuZWwub3JnPg0KDQrmnKzp gq7ku7blj4rlhbbpmYTku7blkKvmnInpvpnoiq/kuK3np5HnmoTllYbkuJrnp5jlr4bkv6Hmga/v vIzku4XpmZDkuo7lj5HpgIHnu5nkuIrpnaLlnLDlnYDkuK3liJflh7rnmoTkuKrkurrmiJbnvqTn u4TjgILnpoHmraLku7vkvZXlhbbku5bkurrku6Xku7vkvZXlvaLlvI/kvb/nlKjvvIjljIXmi6zk vYbkuI3pmZDkuo7lhajpg6jmiJbpg6jliIblnLDms4TpnLLjgIHlpI3liLbmiJbmlaPlj5HvvInm nKzpgq7ku7blj4rlhbbpmYTku7bkuK3nmoTkv6Hmga/jgILlpoLmnpzmgqjplJnmlLbmnKzpgq7k u7bvvIzor7fmgqjnq4vljbPnlLXor53miJbpgq7ku7bpgJrnn6Xlj5Hku7bkurrlubbliKDpmaTm nKzpgq7ku7bjgIIgDQpUaGlzIGVtYWlsIGFuZCBpdHMgYXR0YWNobWVudHMgY29udGFpbiBjb25m aWRlbnRpYWwgaW5mb3JtYXRpb24gZnJvbSBMb29uZ3NvbiBUZWNobm9sb2d5ICwgd2hpY2ggaXMg aW50ZW5kZWQgb25seSBmb3IgdGhlIHBlcnNvbiBvciBlbnRpdHkgd2hvc2UgYWRkcmVzcyBpcyBs aXN0ZWQgYWJvdmUuIEFueSB1c2Ugb2YgdGhlIGluZm9ybWF0aW9uIGNvbnRhaW5lZCBoZXJlaW4g aW4gYW55IHdheSAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG8sIHRvdGFsIG9yIHBhcnRp YWwgZGlzY2xvc3VyZSwgcmVwcm9kdWN0aW9uIG9yIGRpc3NlbWluYXRpb24pIGJ5IHBlcnNvbnMg b3RoZXIgdGhhbiB0aGUgaW50ZW5kZWQgcmVjaXBpZW50KHMpIGlzIHByb2hpYml0ZWQuIElmIHlv dSByZWNlaXZlIHRoaXMgZW1haWwgaW4gZXJyb3IsIHBsZWFzZSBub3RpZnkgdGhlIHNlbmRlciBi eSBwaG9uZSBvciBlbWFpbCBpbW1lZGlhdGVseSBhbmQgZGVsZXRlIGl0LiA=