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 Received: from picard.linux.it (picard.linux.it [213.254.12.146]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 2CDA9C04FFE for ; Mon, 29 Apr 2024 09:14:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=lists.linux.it; i=@lists.linux.it; q=dns/txt; s=picard; t=1714382038; h=message-id : date : mime-version : to : references : in-reply-to : subject : list-id : list-unsubscribe : list-archive : list-post : list-help : list-subscribe : from : reply-to : cc : content-transfer-encoding : content-type : sender : from; bh=8/qhl34vggSibBkO7Tw/+SvBXwu8TnUZISuJ776K8wY=; b=B4/Gv8/zYjkfOgGLIASQn2/8AxwI63FJRdxwK+0kXn28KDNTs3F+dFAHzk+xxK1VGSJ9L gLcX6az0DgN9Bp4Vx4HFhtH5qGOGFzczkh9PFKD7fVDJke405PTjKKy6oONZe6SgMp7j4Re b2QbLP8iWMqwiQEm0iXCJ8IVNJ8BbOA= Received: from picard.linux.it (localhost [IPv6:::1]) by picard.linux.it (Postfix) with ESMTP id B2C4A3D03F3 for ; Mon, 29 Apr 2024 11:13:58 +0200 (CEST) Received: from in-2.smtp.seeweb.it (in-2.smtp.seeweb.it [217.194.8.2]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1)) (No client certificate requested) by picard.linux.it (Postfix) with ESMTPS id AAF293C62EE for ; Mon, 29 Apr 2024 11:13:39 +0200 (CEST) Received: from mail-wm1-x341.google.com (mail-wm1-x341.google.com [IPv6:2a00:1450:4864:20::341]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by in-2.smtp.seeweb.it (Postfix) with ESMTPS id C1EE0600054 for ; Mon, 29 Apr 2024 11:13:35 +0200 (CEST) Received: by mail-wm1-x341.google.com with SMTP id 5b1f17b1804b1-41a72f3a20dso29667125e9.0 for ; Mon, 29 Apr 2024 02:13:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1714382015; x=1714986815; darn=lists.linux.it; h=in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=7/vq+QiIOH/fAr/FruP3PAVSMdIaZ2MocAHJRLJY7+s=; b=UkeML+ar0YKrRH49SZz7r3fJc9SH5s7NULXH4Iq27kEZovdgB6v5JhSrvBKw3WvBrO NPtXeuuSoLfSd9GwGJyH62nX8+HGsVp+qYyMnYsd5O9dUur7rBhb4HpQ5OzpFEgFy3KP 1Ic4ig7COe926eTsA6ZYMikqebOb28nib1/Ri/9M5SSFRFHna+NPy20AsHG5ORewXs1v 2m5DOTsw0jCSGLxOI+zDC1rp++xO7jD24ZqT2x/kV8vhPIMiDzqoo8J/LiRq8IULrKnb fInmh9K2D3vBUbvnsP0yH8ex8h5MrTwuNcBt62hXdphkJgDnXCKubJ+Tp5MuDRFKflqn l7yw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1714382015; x=1714986815; h=in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=7/vq+QiIOH/fAr/FruP3PAVSMdIaZ2MocAHJRLJY7+s=; b=LNinf38ONcmJIP/kMy42Hi0CnDSzUXAgpLQzdscWl5PsVDtka0PEfAWj6rKKyMtiVV blBL7VfSv2MXj4x00QoKduWCw7WFzKS1fcM6J+yw1VfouTA526xZTp6YvAm05X9sIAVR NKPZjBetrAPhWFiv6I2fRrw4IeMu6TLh9ARCT6bpKSmBKTy89ZRFD+Aw5rR42OYl3pKU 94ouQ4JG/tekGw0jLas4jaim16mLv6rtfW+xIUr1+pcuVG4wQlVEblDXOTQYyQmdpQuO u+Mz2jnrlsx7P3Y+2a4PBD9AX+zAdDOaCBQclmVHZMnXIaMRYIrDqMvDkEwX5zZ1RjRO ex/Q== X-Gm-Message-State: AOJu0Yy6w6UhCU0JPkLeuPDJrdvV4jndq98UFyWFuXFO8sKxu/TfWx5y Kn/3065hmdQLzBXu4pkW8Dnk9v/37GBPejodV/gvmLE/ZFzUHjF11EcwVXla5Pg= X-Google-Smtp-Source: AGHT+IFezSX3fmR5jrIihV0+Ls87ou3iIWZZTdqJ2lWT6axdlCssN6GwvBhq3KeJwPrFUQ7zqA2P2A== X-Received: by 2002:a05:600c:358e:b0:418:d91b:f1a3 with SMTP id p14-20020a05600c358e00b00418d91bf1a3mr7470231wmq.38.1714382014775; Mon, 29 Apr 2024 02:13:34 -0700 (PDT) Received: from [10.232.133.119] ([88.128.88.32]) by smtp.gmail.com with ESMTPSA id je4-20020a05600c1f8400b0041c7ac6b0ffsm286567wmb.37.2024.04.29.02.13.33 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 29 Apr 2024 02:13:34 -0700 (PDT) Message-ID: Date: Mon, 29 Apr 2024 11:13:33 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird To: Li Wang , Andrea Cervesato References: <20240126101108.21994-1-andrea.cervesato@suse.de> Content-Language: en-US In-Reply-To: X-Virus-Scanned: clamav-milter 1.0.3 at in-2.smtp.seeweb.it X-Virus-Status: Clean X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: Re: [LTP] [PATCH v1] Rewrite fcnt14 test X-BeenThere: ltp@lists.linux.it X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux Test Project List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Andrea Cervesato via ltp Reply-To: Andrea Cervesato Cc: ltp@lists.linux.it Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: ltp-bounces+ltp=archiver.kernel.org@lists.linux.it Sender: "ltp" SGkhCgpPbiA0LzI5LzI0IDEwOjEyLCBMaSBXYW5nIHdyb3RlOgo+IEhpIEFuZHJlYSwKPgo+IE9u IEZyaSwgSmFuIDI2LCAyMDI0IGF0IDY6MTHigK9QTSBBbmRyZWEgQ2VydmVzYXRvIAo+IDxhbmRy ZWEuY2VydmVzYXRvQHN1c2UuZGU+IHdyb3RlOgo+Cj4gICAgIEZyb206IEFuZHJlYSBDZXJ2ZXNh dG8gPGFuZHJlYS5jZXJ2ZXNhdG9Ac3VzZS5jb20+Cj4KPiAgICAgVGhpcyB0ZXN0IGhhcyBiZWVu IGNoYW5nZWQgaW4gb3JkZXIgdG8gZ2VuZXJhdGUgdGVzdGNhc2VzIGF0IHJ1bnRpbWUuCj4KPiAg ICAgVGhlIG5ldyBhbGdvcml0aG0gc2V0cyBhIHJhbmRvbSBzdGFydGluZyBwb3NpdGlvbiBvbiBm aWxlIHVzaW5nCj4gICAgIGxzZWVrKCksIGl0IHJhbmRvbWx5IGdlbmVyYXRlcyBmY250bCgpIHBh cmFtZXRlcnMgZm9yIHBhcmVudCBhbmQKPiAgICAgY2hpbGQgYW5kIGl0IHZlcmlmaWVzIHRoYXQg ZmNudGwoKSB3aWxsIHJhaXNlIGEgYmxvY2tpbmcgZXJyb3Igb24KPiAgICAgY2hpbGQgd2hlbiBp dCdzIHN1cHBvc2VkIHRvLgo+Cj4gICAgIFRoZSBydW50ZXN0IGZpbGUgaGFzIGJlZW4gbW9kaWZp ZWQgc28gd2UgY2FuIHJ1biB0ZXN0IHdpdGggb3Igd2l0aG91dAo+ICAgICBtYW5kYXRvcnkgbG9j a2luZyB1c2luZyB0aGUgbmV3IC1sIGZsYWcuCj4KPiAgICAgU2lnbmVkLW9mZi1ieTogQW5kcmVh IENlcnZlc2F0byA8YW5kcmVhLmNlcnZlc2F0b0BzdXNlLmNvbT4KPiAgICAgLS0tCj4gICAgIMKg cnVudGVzdC9zeXNjYWxsc8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHzC oCDCoCA2ICstCj4gICAgIMKgdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9mY250bC9mY250bDE0 LmMgfCAxMjc5Cj4gICAgICsrKy0tLS0tLS0tLS0tLS0tLS0tLQo+ICAgICDCoDIgZmlsZXMgY2hh bmdlZCwgMTk1IGluc2VydGlvbnMoKyksIDEwOTAgZGVsZXRpb25zKC0pCj4KPiAgICAgZGlmZiAt LWdpdCBhL3J1bnRlc3Qvc3lzY2FsbHMgYi9ydW50ZXN0L3N5c2NhbGxzCj4gICAgIGluZGV4IDZl MjQwNzg3OS4uNTliOGFjNGYyIDEwMDY0NAo+ICAgICAtLS0gYS9ydW50ZXN0L3N5c2NhbGxzCj4g ICAgICsrKyBiL3J1bnRlc3Qvc3lzY2FsbHMKPiAgICAgQEAgLTMwMSw4ICszMDEsMTAgQEAgZmNu dGwxMiBmY250bDEyCj4gICAgIMKgZmNudGwxMl82NCBmY250bDEyXzY0Cj4gICAgIMKgZmNudGwx MyBmY250bDEzCj4gICAgIMKgZmNudGwxM182NCBmY250bDEzXzY0Cj4gICAgIC1mY250bDE0IGZj bnRsMTQKPiAgICAgLWZjbnRsMTRfNjQgZmNudGwxNF82NAo+ICAgICArZmNudGwxNF8wMSBmY250 bDE0Cj4gICAgICtmY250bDE0XzAxXzY0IGZjbnRsMTRfNjQKPiAgICAgK2ZjbnRsMTRfMDIgZmNu dGwxNCAtbAo+ICAgICArZmNudGwxNF8wMl82NCBmY250bDE0XzY0IC1sCj4gICAgIMKgZmNudGwx NSBmY250bDE1Cj4gICAgIMKgZmNudGwxNV82NCBmY250bDE1XzY0Cj4gICAgIMKgZmNudGwxNiBm Y250bDE2Cj4gICAgIGRpZmYgLS1naXQgYS90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2ZjbnRs L2ZjbnRsMTQuYwo+ICAgICBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZmNudGwvZmNudGwx NC5jCj4gICAgIGluZGV4IGNhNjhkMGY5OC4uMjkyY2NhZjJhIDEwMDY0NAo+ICAgICAtLS0gYS90 ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2ZjbnRsL2ZjbnRsMTQuYwo+ICAgICArKysgYi90ZXN0 Y2FzZXMva2VybmVsL3N5c2NhbGxzL2ZjbnRsL2ZjbnRsMTQuYwo+ICAgICBAQCAtMSwxMTU3ICsx LDI2MCBAQAo+ICAgICArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb3ItbGF0 ZXIKPiAgICAgwqAvKgo+ICAgICAtICoKPiAgICAgLSAqwqAgwqBDb3B5cmlnaHQgKGMpIEludGVy bmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXPCoCBDb3JwLiwgMjAwMQo+ICAgICAtICoKPiAgICAg LSAqwqAgwqBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTvCoCB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdAo+ICAgICBhbmQvb3IgbW9kaWZ5Cj4gICAgIC0gKsKgIMKgaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcwo+ICAgICBwdWJsaXNoZWQg YnkKPiAgICAgLSAqwqAgwqB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVy c2lvbiAyIG9mIHRoZQo+ICAgICBMaWNlbnNlLCBvcgo+ICAgICAtICrCoCDCoChhdCB5b3VyIG9w dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCj4gICAgIC0gKgo+ICAgICAtICrCoCDCoFRoaXMgcHJv Z3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAo+ ICAgICAtICrCoCDCoGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTvCoCB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YKPiAgICAgLSAqwqAgwqBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZQo+ICAgICAtICrCoCDCoHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgo+ICAgICAtICoKPiAgICAg LSAqwqAgwqBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMKPiAgICAgTGljZW5zZQo+ICAgICAtICrCoCDCoGFsb25nIHdpdGggdGhpcyBwcm9n cmFtO8KgIGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKPiAgICAgLSAqwqAgwqBG b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24s Cj4gICAgIE1BIDAyMTEwLTEzMDEgVVNBCj4gICAgICsgKiBDb3B5cmlnaHQgKGMpIEludGVybmF0 aW9uYWwgQnVzaW5lc3MgTWFjaGluZXPCoCBDb3JwLiwgMjAwMQo+ICAgICArICrCoCDCoCDCoDA3 LzIwMDEgUG9ydGVkIGJ5IFdheW5lIEJveWVyCj4gICAgICsgKiBDb3B5cmlnaHQgKEMpIDIwMjQg QW5kcmVhIENlcnZlc2F0byBhbmRyZWEuY2VydmVzYXRvQHN1c2UuY29tCj4gICAgIMKgICovCj4K PiAgICAgLS8qCj4gICAgIC0gKiBOQU1FCj4gICAgIC0gKsKgIMKgIMKgZmNudGwxNC5jCj4gICAg ICsvKlwKPiAgICAgKyAqIFtEZXNjcmlwdGlvbl0KPiAgICAgwqAgKgo+ICAgICAtICogREVTQ1JJ UFRJT04KPiAgICAgLSAqwqAgwqAgwqBGaWxlIGxvY2tpbmcgdGVzdCBjYXNlcyBmb3IgZmNudGwu IEluIExpbnV4LCBTX0VORk1UIGlzCj4gICAgIG5vdCBpbXBsZW1lbnRlZAo+ICAgICAtICrCoCDC oCDCoGluIHRoZSBrZXJuZWwuIEhvd2V2ZXIgYWxsIHN0YW5kYXJkIFVuaXgga2VybmVscyBkZWZp bmUKPiAgICAgU19FTkZNVCBhcwo+ICAgICAtICrCoCDCoCDCoFNfSVNHSUQuIFNvIHRoaXMgdGVz dCBkZWZpbmVzIFNfRU5GTVQgYXMgU19JU0dJRC4KPiAgICAgLSAqCj4gICAgIC0gKiBBTEdPUklU SE0KPiAgICAgLSAqwqAgwqAgwqBWYXJpb3VzIHRlc3QgY2FzZXMgYXJlIHVzZWQgdG8gbG9jayBh IGZpbGUgb3BlbmVkIHdpdGhvdXQKPiAgICAgbWFuZGF0b3J5Cj4gICAgIC0gKsKgIMKgIMKgbG9j a2luZywgd2l0aCBtYW5kYXRvcnkgbG9ja2luZyBhbmQgbWFuZGF0b3J5IGxvY2tpbmcgd2l0aAo+ ICAgICBOT0JMT0NLCj4gICAgIC0gKgo+ICAgICAtICogVVNBR0UKPiAgICAgLSAqwqAgwqAgwqBm Y250bDE0Cj4gICAgIC0gKgo+ICAgICAtICogSElTVE9SWQo+ICAgICAtICrCoCDCoCDCoDA3LzIw MDEgUG9ydGVkIGJ5IFdheW5lIEJveWVyCj4gICAgIC0gKgo+ICAgICAtICogUkVTVFJJQ1RJT05T Cj4gICAgIC0gKsKgIMKgIMKgTm9uZQo+ICAgICArICogVGhpcyB0ZXN0IGlzIGNoZWNraW5nIGZj bnRsKCkgc3lzY2FsbCBsb2NraW5nIG1lY2hhbmlzbQo+ICAgICBiZXR3ZWVuIHR3bwo+ICAgICAr ICogcHJvY2Vzc2VzLgo+ICAgICArICogVGhlIHRlc3Qgc2V0cyBhIHJhbmRvbSBzdGFydGluZyBw b3NpdGlvbiBvbiBmaWxlIHVzaW5nCj4gICAgIGxzZWVrKCksIGl0IHJhbmRvbWx5Cj4gICAgICsg KiBnZW5lcmF0ZXMgZmNudGwoKSBwYXJhbWV0ZXJzIGZvciBwYXJlbnQgYW5kIGNoaWxkIGFuZCBp dAo+ICAgICB2ZXJpZmllcyB0aGF0Cj4gICAgICsgKiBmY250bCgpIHdpbGwgcmFpc2UgYSBibG9j a2luZyBlcnJvciBvbiBjaGlsZCB3aGVuIGl0J3MKPiAgICAgc3VwcG9zZWQgdG8uCj4gICAgIMKg ICovCj4gICAgIC0jZGVmaW5lIF9HTlVfU09VUkNFIDEKPiAgICAgKwo+ICAgICDCoCNpbmNsdWRl IDxmY250bC5oPgo+ICAgICAtI2luY2x1ZGUgPHN5cy90eXBlcy5oPgo+ICAgICAtI2luY2x1ZGUg PHN5cy9zdGF0Lmg+Cj4gICAgIC0jaW5jbHVkZSA8c2lnbmFsLmg+Cj4gICAgIC0jaW5jbHVkZSA8 ZXJybm8uaD4KPiAgICAgLSNpbmNsdWRlIDxzeXMvd2FpdC5oPgo+ICAgICAtI2luY2x1ZGUgPGlu dHR5cGVzLmg+Cj4gICAgIC0jaW5jbHVkZSAidGVzdC5oIgo+ICAgICAtI2luY2x1ZGUgInNhZmVf bWFjcm9zLmgiCj4gICAgICsjaW5jbHVkZSA8c3RkbGliLmg+Cj4gICAgICsjaW5jbHVkZSAidHN0 X3Rlc3QuaCIKPgo+ICAgICAtI2RlZmluZSBTS0lQIDB4MGMwMAo+ICAgICAtI2lmIFNLSVAgPT0g Rl9SRExDSyB8fCBTS0lQPT0gRl9XUkxDSwo+ICAgICAtI2Vycm9yIGludmFsaWQgdmFsdWUgZm9y IFNLSVAsIG11c3QgYmUgZGlzdGluY3QgZnJvbSBGX1JETENLIGFuZAo+ICAgICBGX1dSTENLCj4g ICAgIC0jZW5kaWYKPiAgICAgwqAjaWZuZGVmIFNfRU5GTVQKPiAgICAgLSNkZWZpbmUgU19FTkZN VCBTX0lTR0lECj4gICAgICsjIGRlZmluZSBTX0VORk1UIFNfSVNHSUQKPiAgICAgwqAjZW5kaWYK Pgo+ICAgICAtLyogTk9CTE9DSyAtIGltbWVkaWF0ZSBzdWNjZXNzICovCj4gICAgIC0jZGVmaW5l IE5PQkxPQ0sgMgo+ICAgICAtCj4gICAgIC0vKiBXSUxMQkxPQ0sgLSBibG9ja3MsIHRoZW4gc3Vj Y2VlZHMgKHBhcmVudCBtdXN0IHVubG9jayByZWNvcmRzKSAqLwo+ICAgICAtI2RlZmluZSBXSUxM QkxPQ0sgMwo+ICAgICAtCj4gICAgIC0jZGVmaW5lIFRJTUVfT1VUIDYwCj4gICAgIC0KPiAgICAg LXR5cGVkZWYgc3RydWN0IHsKPiAgICAgLcKgIMKgIMKgIMKgc2hvcnQgYV90eXBlOwo+ICAgICAt wqAgwqAgwqAgwqBzaG9ydCBhX3doZW5jZTsKPiAgICAgLcKgIMKgIMKgIMKgbG9uZyBhX3N0YXJ0 Owo+ICAgICAtwqAgwqAgwqAgwqBsb25nIGFfbGVuOwo+ICAgICAtwqAgwqAgwqAgwqBzaG9ydCBi X3R5cGU7wqAgwqAgwqAgwqAgwqAgwqAvKiBTS0lQIG1lYW5zIHN1cHByZXNzIGZjbnRsIGNhbGwg Ki8KPiAgICAgLcKgIMKgIMKgIMKgc2hvcnQgYl93aGVuY2U7Cj4gICAgIC3CoCDCoCDCoCDCoGxv bmcgYl9zdGFydDsKPiAgICAgLcKgIMKgIMKgIMKgbG9uZyBiX2xlbjsKPiAgICAgLcKgIMKgIMKg IMKgc2hvcnQgY190eXBlOwo+ICAgICAtwqAgwqAgwqAgwqBpbnQgY193aGVuY2U7Cj4gICAgIC3C oCDCoCDCoCDCoGxvbmcgY19zdGFydDsKPiAgICAgLcKgIMKgIMKgIMKgbG9uZyBjX2xlbjsKPiAg ICAgLcKgIMKgIMKgIMKgc2hvcnQgY19mbGFnOwo+ICAgICAtfSB0ZXN0Y2FzZTsKPiAgICAgLQo+ ICAgICAtc3RhdGljIHRlc3RjYXNlIHRlc3RjYXNlc1tdID0gewo+ICAgICAtwqAgwqAgwqAgwqAv KiBUZXN0IGNhc2VzOiBlbnRpcmUgYm91bmRhcnkgKi8KPiAgICAgLcKgIMKgIMKgIMKgLyogIzEg UGFyZW50IG1ha2luZyBhIHdyaXRlIGxvY2sgb24gZW50aXJlIGZpbGUgKi8KPiAgICAgLcKgIMKg IMKgIMKge0ZfV1JMQ0ssIDAsIDBMLCAwTCwgU0tJUCwgMCwgMEwsIDBMLAo+ICAgICAtwqAgwqAg wqAgwqAgLyogQ2hpbGQgYXR0ZW1wdGluZyBhIHJlYWQgbG9jayBvbiBlbnRpcmUgZmlsZSAqLwo+ ICAgICAtwqAgwqAgwqAgwqAgRl9SRExDSywgMCwgMEwsIDBMLCBXSUxMQkxPQ0t9LAo+ICAgICAt Cj4gICAgIC3CoCDCoCDCoCDCoC8qICMyIFBhcmVudCBtYWtpbmcgYSB3cml0ZSBsb2NrIG9uIGVu dGlyZSBmaWxlICovCj4gICAgIC3CoCDCoCDCoCDCoHtGX1dSTENLLCAwLCAwTCwgMEwsIFNLSVAs IDAsIDBMLCAwTCwKPiAgICAgLcKgIMKgIMKgIMKgIC8qIENoaWxkIGF0dGVtcHRpbmcgYSB3cml0 ZSBsb2NrIG9uIGVudGlyZSBmaWxlICovCj4gICAgIC3CoCDCoCDCoCDCoCBGX1dSTENLLCAwLCAw TCwgMEwsIFdJTExCTE9DS30sCj4gICAgIC0KPiAgICAgLcKgIMKgIMKgIMKgLyogIzMgUGFyZW50 IG1ha2luZyBhIHJlYWQgbG9jayBvbiBlbnRpcmUgZmlsZSAqLwo+ICAgICAtwqAgwqAgwqAgwqB7 Rl9SRExDSywgMCwgMEwsIDBMLCBTS0lQLCAwLCAwTCwgMEwsCj4gICAgIC3CoCDCoCDCoCDCoCAv KiBDaGlsZCBhdHRlbXB0aW5nIGEgcmVhZCBsb2NrIG9uIGVudGlyZSBmaWxlICovCj4gICAgIC3C oCDCoCDCoCDCoCBGX1JETENLLCAwLCAwTCwgMEwsIE5PQkxPQ0t9LAo+ICAgICAtCj4gICAgIC3C oCDCoCDCoCDCoC8qICM0IFBhcmVudCBtYWtpbmcgYSByZWFkIGxvY2sgb24gZW50aXJlIGZpbGUg Ki8KPiAgICAgLcKgIMKgIMKgIMKge0ZfUkRMQ0ssIDAsIDBMLCAwTCwgU0tJUCwgMCwgMEwsIDBM LAo+ICAgICAtwqAgwqAgwqAgwqAgLyogQ2hpbGQgYXR0ZW1wdGluZyBhIHdyaXRlIGxvY2sgb24g ZW50aXJlIGZpbGUgKi8KPiAgICAgLcKgIMKgIMKgIMKgIEZfV1JMQ0ssIDAsIDBMLCAwTCwgV0lM TEJMT0NLfSwKPiAgICAgLQo+ICAgICAtwqAgwqAgwqAgwqAvKiBUZXN0IGNhc2U6IHN0YXJ0IGJv dW5kYXJ5ICovCj4gICAgIC3CoCDCoCDCoCDCoC8qICM1IFBhcmVudCBtYWtpbmcgYSB3cml0ZSBs b2NrIG9uIGVudGlyZSBmaWxlICovCj4gICAgIC3CoCDCoCDCoCDCoHtGX1dSTENLLCAwLCAwTCwg MEwsIFNLSVAsIDAsIDBMLCAwTCwKPiAgICAgLcKgIMKgIMKgIMKgIC8qCj4gICAgIC3CoCDCoCDC oCDCoCDCoCogQ2hpbGQgYXR0ZW1wdGluZyBhIHJlYWQgbG9jayBmcm9tIGJlZ2lubmluZyBvZgo+ ICAgICAtwqAgwqAgwqAgwqAgwqAqIGZpbGUgZm9yIDUgYnl0ZXMKPiAgICAgLcKgIMKgIMKgIMKg IMKgKi8KPiAgICAgLcKgIMKgIMKgIMKgIEZfUkRMQ0ssIDAsIDBMLCA1TCwgV0lMTEJMT0NLfSwK PiAgICAgLQo+ICAgICAtwqAgwqAgwqAgwqAvKiAjNiBQYXJlbnQgbWFraW5nIGEgd3JpdGUgbG9j ayBvbiBlbnRpcmUgZmlsZSAqLwo+ICAgICAtwqAgwqAgwqAgwqB7Rl9XUkxDSywgMCwgMEwsIDBM LCBTS0lQLCAwLCAwTCwgMEwsCj4gICAgIC3CoCDCoCDCoCDCoCAvKgo+ICAgICAtwqAgwqAgwqAg wqAgwqAqIENoaWxkIGF0dGVtcHRpbmcgYSB3cml0ZSBsb2NrIGZyb20gYmVnaW5uaW5nIG9mCj4g ICAgIC3CoCDCoCDCoCDCoCDCoCogZmlsZSBmb3IgNSBieXRlcwo+ICAgICAtwqAgwqAgwqAgwqAg wqAqLwo+ICAgICAtwqAgwqAgwqAgwqAgRl9XUkxDSywgMCwgMEwsIDVMLCBXSUxMQkxPQ0t9LAo+ ICAgICAtCj4gICAgIC3CoCDCoCDCoCDCoC8qICM3IFBhcmVudCBtYWtpbmcgYSByZWFkIGxvY2sg b24gZW50aXJlIGZpbGUgKi8KPiAgICAgLcKgIMKgIMKgIMKge0ZfUkRMQ0ssIDAsIDBMLCAwTCwg U0tJUCwgMCwgMEwsIDBMLAo+ICAgICAtwqAgwqAgwqAgwqAgLyoKPiAgICAgLcKgIMKgIMKgIMKg IMKgKiBDaGlsZCBhdHRlbXB0aW5nIGEgcmVhZCBsb2NrIGZyb20gYmVnaW5uaW5nIG9mCj4gICAg IC3CoCDCoCDCoCDCoCDCoCogZmlsZSBmb3IgNSBieXRlcwo+ICAgICAtwqAgwqAgwqAgwqAgwqAq Lwo+ICAgICAtwqAgwqAgwqAgwqAgRl9SRExDSywgMCwgMEwsIDVMLCBOT0JMT0NLfSwKPiAgICAg LQo+ICAgICAtwqAgwqAgwqAgwqAvKiAjOCBQYXJlbnQgbWFraW5nIGEgcmVhZCBsb2NrIG9uIGVu dGlyZSBmaWxlICovCj4gICAgIC3CoCDCoCDCoCDCoHtGX1JETENLLCAwLCAwTCwgMEwsIFNLSVAs IDAsIDBMLCAwTCwKPiAgICAgLcKgIMKgIMKgIMKgIC8qCj4gICAgIC3CoCDCoCDCoCDCoCDCoCog Q2hpbGQgYXR0ZW1wdGluZyBhIHdyaXRlIGxvY2sgZnJvbSBiZWdpbm5pbmcgb2YKPiAgICAgLcKg IMKgIMKgIMKgIMKgKiBmaWxlIGZvciA1IGJ5dGVzCj4gICAgIC3CoCDCoCDCoCDCoCDCoCovCj4g ICAgIC3CoCDCoCDCoCDCoCBGX1dSTENLLCAwLCAwTCwgNUwsIFdJTExCTE9DS30sCj4gICAgIC0K PiAgICAgLcKgIMKgIMKgIMKgLyogVGVzdCBjYXNlczogZW5kIGJvdW5kYXJ5ICovCj4gICAgIC3C oCDCoCDCoCDCoC8qICM5IFBhcmVudCBtYWtpbmcgYSB3cml0ZSBsb2NrIG9uIGVudGlyZSBmaWxl ICovCj4gICAgIC3CoCDCoCDCoCDCoHtGX1dSTENLLCAwLCAwTCwgMEwsIFNLSVAsIDAsIDBMLCAw TCwKPiAgICAgLcKgIMKgIMKgIMKgIC8qIENoaWxkIGF0dGVtcHRpbmcgYSByZWFkIGxvY2sgZnJv bSBieXRlIDcgdG8gZW5kIG9mIGZpbGUgKi8KPiAgICAgLcKgIMKgIMKgIMKgIEZfUkRMQ0ssIDAs IDdMLCAwTCwgV0lMTEJMT0NLfSwKPiAgICAgLQo+ICAgICAtwqAgwqAgwqAgwqAvKiAjMTAgUGFy ZW50IG1ha2luZyBhIHdyaXRlIGxvY2sgb24gZW50aXJlIGZpbGUgKi8KPiAgICAgLcKgIMKgIMKg IMKge0ZfV1JMQ0ssIDAsIDBMLCAwTCwgU0tJUCwgMCwgMEwsIDBMLAo+ICAgICAtwqAgwqAgwqAg wqAgLyogQ2hpbGQgYXR0ZW1wdGluZyBhIHdyaXRlIGxvY2sgZnJvbSBieXRlIDcgdG8gZW5kIG9m Cj4gICAgIGZpbGUgKi8KPiAgICAgLcKgIMKgIMKgIMKgIEZfV1JMQ0ssIDAsIDdMLCAwTCwgV0lM TEJMT0NLfSwKPiAgICAgLQo+ICAgICAtwqAgwqAgwqAgwqAvKiAjMTEgUGFyZW50IG1ha2luZyBh IHJlYWQgbG9jayBvbiBlbnRpcmUgZmlsZSAqLwo+ICAgICAtwqAgwqAgwqAgwqB7Rl9SRExDSywg MCwgMEwsIDBMLCBTS0lQLCAwLCAwTCwgMEwsCj4gICAgIC3CoCDCoCDCoCDCoCAvKiBDaGlsZCBh dHRlbXB0aW5nIGEgcmVhZCBsb2NrIGZyb20gYnl0ZSA3IHRvIGVuZCBvZiBmaWxlICovCj4gICAg IC3CoCDCoCDCoCDCoCBGX1JETENLLCAwLCA3TCwgMEwsIE5PQkxPQ0t9LAo+ICAgICAtCj4gICAg IC3CoCDCoCDCoCDCoC8qICMxMiBQYXJlbnQgbWFraW5nIGEgcmVhZCBsb2NrIG9uIGVudGlyZSBm aWxlICovCj4gICAgIC3CoCDCoCDCoCDCoHtGX1JETENLLCAwLCAwTCwgMEwsIFNLSVAsIDAsIDBM LCAwTCwKPiAgICAgLcKgIMKgIMKgIMKgIC8qIENoaWxkIGF0dGVtcHRpbmcgYSB3cml0ZSBsb2Nr IGZyb20gYnl0ZSA3IHRvIGVuZCBvZgo+ICAgICBmaWxlICovCj4gICAgIC3CoCDCoCDCoCDCoCBG X1dSTENLLCAwLCA3TCwgMEwsIFdJTExCTE9DS30sCj4gICAgIC0KPiAgICAgLcKgIMKgIMKgIMKg LyogVGVzdCBjYXNlczogZW50aXJlIGJvdW5kYXJ5ICggbGVzcyB0aGFuIGVudGlyZSBmaWxlKSAq Lwo+ICAgICAtwqAgwqAgwqAgwqAvKgo+ICAgICAtwqAgwqAgwqAgwqAgKiAjMTMgUGFyZW50IG1h a2luZyBhIHdyaXRlIGxvY2sgZnJvbSBiZWdpbm5pbmcgb2YKPiAgICAgLcKgIMKgIMKgIMKgICog ZmlsZSBmb3IgNSBieXRlcwo+ICAgICAtwqAgwqAgwqAgwqAgKi8KPiAgICAgLcKgIMKgIMKgIMKg e0ZfV1JMQ0ssIDAsIDBMLCA1TCwgU0tJUCwgMCwgMEwsIDBMLAo+ICAgICAtwqAgwqAgwqAgwqAg LyoKPiAgICAgLcKgIMKgIMKgIMKgIMKgKiBDaGlsZCBhdHRlbXB0aW5nIGEgcmVhZCBsb2NrIGZy b20gYmVnaW5uaW5nIG9mCj4gICAgIC3CoCDCoCDCoCDCoCDCoCogZmlsZSBmb3IgNSBieXRlcwo+ ICAgICAtwqAgwqAgwqAgwqAgwqAqLwo+ICAgICAtwqAgwqAgwqAgwqAgRl9SRExDSywgMCwgMEws IDVMLCBXSUxMQkxPQ0t9LAo+ICAgICAtCj4gICAgIC3CoCDCoCDCoCDCoC8qCj4gICAgIC3CoCDC oCDCoCDCoCAqICMxNCBQYXJlbnQgbWFraW5nIGEgd3JpdGUgbG9jayBmcm9tIGJlZ2lubmluZyBv ZiBmaWxlCj4gICAgIC3CoCDCoCDCoCDCoCAqIGZvciA1IGJ5dGVzCj4gICAgIC3CoCDCoCDCoCDC oCAqLwo+ICAgICAtwqAgwqAgwqAgwqB7Rl9XUkxDSywgMCwgMEwsIDVMLCBTS0lQLCAwLCAwTCwg MEwsCj4gICAgIC3CoCDCoCDCoCDCoCAvKgo+ICAgICAtwqAgwqAgwqAgwqAgwqAqIENoaWxkIGF0 dGVtcHRpbmcgYSB3cml0ZSBsb2NrIGZyb20gYmVnaW5uaW5nIG9mCj4gICAgIC3CoCDCoCDCoCDC oCDCoCogZmlsZSBmb3IgNSBieXRlcwo+ICAgICAtwqAgwqAgwqAgwqAgwqAqLwo+ICAgICAtwqAg wqAgwqAgwqAgRl9XUkxDSywgMCwgMEwsIDVMLCBXSUxMQkxPQ0t9LAo+ICAgICAtCj4gICAgIC3C oCDCoCDCoCDCoC8qCj4gICAgIC3CoCDCoCDCoCDCoCAqICMxNSBQYXJlbnQgbWFraW5nIGEgcmVh ZCBsb2NrIGZyb20gYmVnaW5uaW5nIG9mCj4gICAgIC3CoCDCoCDCoCDCoCAqIGZpbGUgZm9yIDUg Ynl0ZXMKPiAgICAgLcKgIMKgIMKgIMKgICovCj4gICAgIC3CoCDCoCDCoCDCoHtGX1JETENLLCAw LCAwTCwgNUwsIFNLSVAsIDAsIDBMLCAwTCwKPiAgICAgLcKgIMKgIMKgIMKgIC8qCj4gICAgIC3C oCDCoCDCoCDCoCDCoCogQ2hpbGQgYXR0ZW1wdGluZyBhIHJlYWQgbG9jayBmcm9tIGJlZ2lubmlu ZyBvZgo+ICAgICAtwqAgwqAgwqAgwqAgwqAqIGZpbGUgZm9yIDUgYnl0ZXMKPiAgICAgLcKgIMKg IMKgIMKgIMKgKi8KPiAgICAgLcKgIMKgIMKgIMKgIEZfUkRMQ0ssIDAsIDBMLCA1TCwgTk9CTE9D S30sCj4gICAgIC0KPiAgICAgLcKgIMKgIMKgIMKgLyoKPiAgICAgLcKgIMKgIMKgIMKgICogIzE2 IFBhcmVudCBtYWtpbmcgYSByZWFkIGxvY2sgZnJvbSBiZWdpbm5pbmcgb2YKPiAgICAgLcKgIMKg IMKgIMKgICogZmlsZSBmb3IgNSBieXRlcwo+ICAgICAtwqAgwqAgwqAgwqAgKi8KPiAgICAgLcKg IMKgIMKgIMKge0ZfUkRMQ0ssIDAsIDBMLCA1TCwgU0tJUCwgMCwgMEwsIDBMLAo+ICAgICAtwqAg wqAgwqAgwqAgLyoKPiAgICAgLcKgIMKgIMKgIMKgIMKgKiBDaGlsZCBhdHRlbXB0aW5nIGEgd3Jp dGUgbG9jayBmcm9tIGJlZ2lubmluZwo+ICAgICAtwqAgwqAgwqAgwqAgwqAqIG9mIGZpbGUgZm9y IDUgYnl0ZXMKPiAgICAgLcKgIMKgIMKgIMKgIMKgKi8KPiAgICAgLcKgIMKgIMKgIMKgIEZfV1JM Q0ssIDAsIDBMLCA1TCwgV0lMTEJMT0NLfSwKPiAgICAgLQo+ICAgICAtwqAgwqAgwqAgwqAvKiBU ZXN0IGNhc2VzOiBpbnNpZGUgYm91bmRhcnkgKi8KPiAgICAgLcKgIMKgIMKgIMKgLyoKPiAgICAg LcKgIMKgIMKgIMKgICogIzE3IFBhcmVudCBtYWtpbmcgYSB3cml0ZSBsb2NrIGZyb20gYmVnaW5u aW5nCj4gICAgIC3CoCDCoCDCoCDCoCAqIG9mIGZpbGUgZm9yIDUgYnl0ZXMKPiAgICAgLcKgIMKg IMKgIMKgICovCj4gICAgIC3CoCDCoCDCoCDCoHtGX1dSTENLLCAwLCAwTCwgNUwsIFNLSVAsIDAs IDBMLCAwTCwKPiAgICAgLcKgIMKgIMKgIMKgIC8qIENoaWxkIGF0dGVtcHRpbmcgYSByZWFkIGxv Y2sgZnJvbSBieXRlIDIgdG8gYnl0ZSA0ICovCj4gICAgIC3CoCDCoCDCoCDCoCBGX1JETENLLCAw LCAxTCwgM0wsIFdJTExCTE9DS30sCj4gICAgIC0KPiAgICAgLcKgIMKgIMKgIMKgLyoKPiAgICAg LcKgIMKgIMKgIMKgICogIzE4IFBhcmVudCBtYWtpbmcgYSB3cml0ZSBsb2NrIGZyb20gYmVnaW5u aW5nIG9mCj4gICAgIC3CoCDCoCDCoCDCoCAqIGZpbGUgZm9yIDUgYnl0ZXMKPiAgICAgLcKgIMKg IMKgIMKgICovCj4gICAgIC3CoCDCoCDCoCDCoHtGX1dSTENLLCAwLCAwTCwgNUwsIFNLSVAsIDAs IDBMLCAwTCwKPiAgICAgLcKgIMKgIMKgIMKgIC8qIENoaWxkIGF0dGVtcHRpbmcgYSB3cml0ZSBs b2NrIGZyb20gYnl0ZSAyIHRvIGJ5dGUgNCAqLwo+ICAgICAtwqAgwqAgwqAgwqAgRl9XUkxDSywg MCwgMUwsIDNMLCBXSUxMQkxPQ0t9LAo+ICAgICAtCj4gICAgIC3CoCDCoCDCoCDCoC8qCj4gICAg IC3CoCDCoCDCoCDCoCAqICMxOSBQYXJlbnQgbWFraW5nIGEgcmVhZCBsb2NrIGZyb20gYmVnaW5u aW5nIG9mCj4gICAgIC3CoCDCoCDCoCDCoCAqIGZpbGUgZm9yIDUgYnl0ZXMKPiAgICAgLcKgIMKg IMKgIMKgICovCj4gICAgIC3CoCDCoCDCoCDCoHtGX1JETENLLCAwLCAwTCwgNUwsIFNLSVAsIDAs IDBMLCAwTCwKPiAgICAgLcKgIMKgIMKgIMKgIC8qIENoaWxkIGF0dGVtcHRpbmcgYSByZWFkIGxv Y2sgZnJvbSBieXRlIDIgdG8gYnl0ZSA0ICovCj4gICAgIC3CoCDCoCDCoCDCoCBGX1JETENLLCAw LCAxTCwgM0wsIE5PQkxPQ0t9LAo+ICAgICAtCj4gICAgIC3CoCDCoCDCoCDCoC8qCj4gICAgIC3C oCDCoCDCoCDCoCAqICMyMCBQYXJlbnQgbWFraW5nIGEgcmVhZCBsb2NrIGZyb20gYmVnaW5uaW5n IG9mCj4gICAgIC3CoCDCoCDCoCDCoCAqIGZpbGUgZm9yIDUgYnl0ZXMKPiAgICAgLcKgIMKgIMKg IMKgICovCj4gICAgIC3CoCDCoCDCoCDCoHtGX1JETENLLCAwLCAwTCwgNUwsIFNLSVAsIDAsIDBM LCAwTCwKPiAgICAgLcKgIMKgIMKgIMKgIC8qIENoaWxkIGF0dGVtcHRpbmcgYSB3cml0ZSBsb2Nr IGZyb20gYnl0ZSAyIHRvIGJ5dGUgNCAqLwo+ICAgICAtwqAgwqAgwqAgwqAgRl9XUkxDSywgMCwg MUwsIDNMLCBXSUxMQkxPQ0t9LAo+ICAgICAtCj4gICAgIC3CoCDCoCDCoCDCoC8qIFRlc3QgY2Fz ZXM6IGNyb3NzIGJvdW5kYXJ5IChpbnNpZGUgdG8gYWZ0ZXIpICovCj4gICAgIC3CoCDCoCDCoCDC oC8qCj4gICAgIC3CoCDCoCDCoCDCoCAqICMyMSBQYXJlbnQgbWFraW5nIGEgd3JpdGUgbG9jayBm cm9tIGJlZ2lubmluZyBvZgo+ICAgICAtwqAgwqAgwqAgwqAgKiBmaWxlIGZvciA1IGJ5dGVzCj4g ICAgIC3CoCDCoCDCoCDCoCAqLwo+ICAgICAtwqAgwqAgwqAgwqB7Rl9XUkxDSywgMCwgMEwsIDVM LCBTS0lQLCAwLCAwTCwgMEwsCj4gICAgIC3CoCDCoCDCoCDCoCAvKiBDaGlsZCBhdHRlbXB0aW5n IGEgcmVhZCBsb2NrIGZyb20gYnl0ZSAzIHRvIGJ5dGUgNyAqLwo+ICAgICAtwqAgwqAgwqAgwqAg Rl9SRExDSywgMCwgMkwsIDVMLCBXSUxMQkxPQ0t9LAo+ICAgICAtCj4gICAgIC3CoCDCoCDCoCDC oC8qCj4gICAgIC3CoCDCoCDCoCDCoCAqICMyMiBQYXJlbnQgbWFraW5nIGEgd3JpdGUgbG9jayBm cm9tIGJlZ2lubmluZwo+ICAgICAtwqAgwqAgwqAgwqAgKiBvZiBmaWxlIGZvciA1IGJ5dGVzCj4g ICAgIC3CoCDCoCDCoCDCoCAqLwo+ICAgICAtwqAgwqAgwqAgwqB7Rl9XUkxDSywgMCwgMEwsIDVM LCBTS0lQLCAwLCAwTCwgMEwsCj4gICAgIC3CoCDCoCDCoCDCoCAvKiBDaGlsZCBhdHRlbXB0aW5n IGEgd3JpdGUgbG9jayBmcm9tIGJ5dGUgMyB0byBieXRlIDcgKi8KPiAgICAgLcKgIMKgIMKgIMKg IEZfV1JMQ0ssIDAsIDJMLCA1TCwgV0lMTEJMT0NLfSwKPiAgICAgLQo+ICAgICAtwqAgwqAgwqAg wqAvKgo+ICAgICAtwqAgwqAgwqAgwqAgKiAjMjMgUGFyZW50IG1ha2luZyBhIHJlYWQgbG9jayBm cm9tIGJlZ2lubmluZyBvZgo+ICAgICAtwqAgwqAgwqAgwqAgKiBmaWxlIGZvciA1IGJ5dGVzCj4g ICAgIC3CoCDCoCDCoCDCoCAqLwo+ICAgICAtwqAgwqAgwqAgwqB7Rl9SRExDSywgMCwgMEwsIDVM LCBTS0lQLCAwLCAwTCwgMEwsCj4gICAgIC3CoCDCoCDCoCDCoCAvKiBDaGlsZCBhdHRlbXB0aW5n IGEgcmVhZCBsb2NrIGZyb20gYnl0ZSAzIHRvIGJ5dGUgNyAqLwo+ICAgICAtwqAgwqAgwqAgwqAg Rl9SRExDSywgMCwgMkwsIDVMLCBOT0JMT0NLfSwKPiAgICAgLQo+ICAgICAtwqAgwqAgwqAgwqAv Kgo+ICAgICAtwqAgwqAgwqAgwqAgKiAjMjQgUGFyZW50IG1ha2luZyBhIHJlYWQgbG9jayBmcm9t IGJlZ2lubmluZyBvZgo+ICAgICAtwqAgwqAgwqAgwqAgKiBmaWxlIGZvciA1IGJ5dGVzCj4gICAg IC3CoCDCoCDCoCDCoCAqLwo+ICAgICAtwqAgwqAgwqAgwqB7Rl9SRExDSywgMCwgMEwsIDVMLCBT S0lQLCAwLCAwTCwgMEwsCj4gICAgIC3CoCDCoCDCoCDCoCAvKiBDaGlsZCBhdHRlbXB0aW5nIGEg d3JpdGUgbG9jayBmcm9tIGJ5dGUgMyB0byBieXRlIDcgKi8KPiAgICAgLcKgIMKgIMKgIMKgIEZf V1JMQ0ssIDAsIDJMLCA1TCwgV0lMTEJMT0NLfSwKPiAgICAgLQo+ICAgICAtwqAgwqAgwqAgwqAv KiBUZXN0IGNhc2VzOiBvdXRzaWRlIGJvdW5kYXJ5IChhZnRlcikgKi8KPiAgICAgLQo+ICAgICAt wqAgwqAgwqAgwqAvKgo+ICAgICAtwqAgwqAgwqAgwqAgKiAjMjUgUGFyZW50IG1ha2luZyBhIHdy aXRlIGxvY2sgZnJvbSBiZWdpbm5pbmcgb2YKPiAgICAgLcKgIMKgIMKgIMKgICogZmlsZSBmb3Ig NSBieXRlcwo+ICAgICAtwqAgwqAgwqAgwqAgKi8KPiAgICAgLcKgIMKgIMKgIMKge0ZfV1JMQ0ss IDAsIDBMLCA1TCwgU0tJUCwgMCwgMEwsIDBMLAo+ICAgICAtwqAgwqAgwqAgwqAgLyrCoCBDaGls ZCBhdHRlbXB0aW5nIGEgcmVhZCBsb2NrIGZyb20gYnl0ZSA3IHRvIGVuZCBvZgo+ICAgICBmaWxl ICovCj4gICAgIC3CoCDCoCDCoCDCoCBGX1JETENLLCAwLCA2TCwgMEwsIE5PQkxPQ0t9LAo+ICAg ICAtCj4gICAgIC3CoCDCoCDCoCDCoC8qCj4gICAgIC3CoCDCoCDCoCDCoCAqICMyNiBQYXJlbnQg bWFraW5nIGEgd3JpdGUgbG9jayBmcm9tIGJlZ2lubmluZyBvZgo+ICAgICAtwqAgwqAgwqAgwqAg KiBmaWxlIGZvciA1IGJ5dGVzCj4gICAgIC3CoCDCoCDCoCDCoCAqLwo+ICAgICAtwqAgwqAgwqAg wqB7Rl9XUkxDSywgMCwgMEwsIDVMLCBTS0lQLCAwLCAwTCwgMEwsCj4gICAgIC3CoCDCoCDCoCDC oCAvKiBDaGlsZCBhdHRlbXB0aW5nIGEgd3JpdGUgbG9jayBmcm9tIGJ5dGUgNyB0byBlbmQgb2YK PiAgICAgZmlsZSAqLwo+ICAgICAtwqAgwqAgwqAgwqAgRl9XUkxDSywgMCwgNkwsIDBMLCBOT0JM T0NLfSwKPiAgICAgLQo+ICAgICAtwqAgwqAgwqAgwqAvKgo+ICAgICAtwqAgwqAgwqAgwqAgKiAj MjcgUGFyZW50IG1ha2luZyBhIHJlYWQgbG9jayBmcm9tIGJlZ2lubmluZyBvZgo+ICAgICAtwqAg wqAgwqAgwqAgKiBmaWxlIGZvciA1IGJ5dGVzCj4gICAgIC3CoCDCoCDCoCDCoCAqLwo+ICAgICAt wqAgwqAgwqAgwqB7Rl9SRExDSywgMCwgMEwsIDVMLCBTS0lQLCAwLCAwTCwgMEwsCj4gICAgIC3C oCDCoCDCoCDCoCAvKiBDaGlsZCBhdHRlbXB0aW5nIGEgcmVhZCBsb2NrIGZyb20gYnl0ZSA3IHRv IGVuZCBvZiBmaWxlICovCj4gICAgIC3CoCDCoCDCoCDCoCBGX1JETENLLCAwLCA2TCwgMEwsIE5P QkxPQ0t9LAo+ICAgICAtCj4gICAgIC3CoCDCoCDCoCDCoC8qCj4gICAgIC3CoCDCoCDCoCDCoCAq ICMyOCBQYXJlbnQgbWFraW5nIGEgcmVhZCBsb2NrIGZyb20gYmVnaW5uaW5nIG9mCj4gICAgIC3C oCDCoCDCoCDCoCAqIGZpbGUgZm9yIDUgYnl0ZXMKPiAgICAgLcKgIMKgIMKgIMKgICovCj4gICAg IC3CoCDCoCDCoCDCoHtGX1JETENLLCAwLCAwTCwgNUwsIFNLSVAsIDAsIDBMLCAwTCwKPiAgICAg LcKgIMKgIMKgIMKgIC8qIENoaWxkIGF0dGVtcHRpbmcgYSB3cml0ZSBsb2NrIGZyb20gYnl0ZSA3 IHRvIGVuZCBvZgo+ICAgICBmaWxlICovCj4gICAgIC3CoCDCoCDCoCDCoCBGX1dSTENLLCAwLCA2 TCwgMEwsIE5PQkxPQ0t9LAo+ICAgICAtCj4gICAgIC3CoCDCoCDCoCDCoC8qIFRlc3QgY2FzZXM6 IG91dHNpZGUgYm91bmRhcnkgKGJlZm9yZSkgKi8KPiAgICAgLQo+ICAgICAtwqAgwqAgwqAgwqAv KiAjMjkgUGFyZW50IG1ha2luZyBhIHdyaXRlIGxvY2sgZnJvbSBieXRlIDMgdG8gYnl0ZSA3ICov Cj4gICAgIC3CoCDCoCDCoCDCoHtGX1dSTENLLCAwLCAyTCwgNUwsIFNLSVAsIDAsIDBMLCAwTCwK PiAgICAgLcKgIMKgIMKgIMKgIC8qIENoaWxkIGF0dGVtcHRpbmcgYSByZWFkIGxvY2sgZnJvbSBi ZWdpbm5pbmcgb2YgZmlsZSB0bwo+ICAgICBieXRlIDIgKi8KPiAgICAgLcKgIMKgIMKgIMKgIEZf UkRMQ0ssIDAsIDBMLCAyTCwgTk9CTE9DS30sCj4gICAgIC0KPiAgICAgLcKgIMKgIMKgIMKgLyog IzMwIFBhcmVudCBtYWtpbmcgYSB3cml0ZSBsb2NrIGZyb20gYnl0ZSAzIHRvIGJ5dGUgNyAqLwo+ ICAgICAtwqAgwqAgwqAgwqB7Rl9XUkxDSywgMCwgMkwsIDVMLCBTS0lQLCAwLCAwTCwgMEwsCj4g ICAgIC3CoCDCoCDCoCDCoCAvKiBDaGlsZCBhdHRlbXB0aW5nIGEgd3JpdGUgbG9jayBmcm9tIGJl Z2lubmluZyBvZiBmaWxlCj4gICAgIHRvIGJ5dGUgMiAqLwo+ICAgICAtwqAgwqAgwqAgwqAgRl9X UkxDSywgMCwgMEwsIDJMLCBOT0JMT0NLfSwKPiAgICAgLQo+ICAgICAtwqAgwqAgwqAgwqAvKiAj MzEgUGFyZW50IG1ha2luZyBhIHdyaXRlIGxvY2sgZnJvbSBieXRlIDMgdG8gYnl0ZSA3ICovCj4g ICAgIC3CoCDCoCDCoCDCoHtGX1JETENLLCAwLCAyTCwgNUwsIFNLSVAsIDAsIDBMLCAwTCwKPiAg ICAgLcKgIMKgIMKgIMKgIC8qIENoaWxkIGF0dGVtcHRpbmcgYSByZWFkIGxvY2sgZnJvbSBiZWdp bm5pbmcgb2YgZmlsZSB0bwo+ICAgICBieXRlIDIgKi8KPiAgICAgLcKgIMKgIMKgIMKgIEZfUkRM Q0ssIDAsIDBMLCAyTCwgTk9CTE9DS30sCj4gICAgIC0KPiAgICAgLcKgIMKgIMKgIMKgLyogIzMy IFBhcmVudCBtYWtpbmcgYSB3cml0ZSBsb2NrIGZyb20gYnl0ZSAzIHRvIGJ5dGUgNyAqLwo+ICAg ICAtwqAgwqAgwqAgwqB7Rl9SRExDSywgMCwgMkwsIDVMLCBTS0lQLCAwLCAwTCwgMEwsCj4gICAg IC3CoCDCoCDCoCDCoCAvKiBDaGlsZCBhdHRlbXB0aW5nIGEgd3JpdGUgbG9jayBmcm9tIGJlZ2lu bmluZyBvZiBmaWxlCj4gICAgIHRvIGJ5dGUgMiAqLwo+ICAgICAtwqAgwqAgwqAgwqAgRl9XUkxD SywgMCwgMEwsIDJMLCBOT0JMT0NLfSwKPiAgICAgLQo+ICAgICAtwqAgwqAgwqAgwqAvKiBUZXN0 IGNhc2VzOiBjcm9zcyBib3VuZGFyeSAoYmVmb3JlIHRvIGluc2lkZSkgKi8KPiAgICAgLcKgIMKg IMKgIMKgLyogIzMzIFBhcmVudCBtYWtpbmcgYSB3cml0ZSBsb2NrIGZyb20gYnl0ZSA1IHRvIGVu ZCBvZgo+ICAgICBmaWxlICovCj4gICAgIC3CoCDCoCDCoCDCoHtGX1dSTENLLCAwLCA0TCwgMEws IFNLSVAsIDAsIDBMLCAwTCwKPiAgICAgLcKgIMKgIMKgIMKgIC8qIENoaWxkIGF0dGVtcHRpbmcg YSByZWFkIGxvY2sgZnJvbSBieXRlIDMgdG8gYnl0ZSA3ICovCj4gICAgIC3CoCDCoCDCoCDCoCBG X1JETENLLCAwLCAyTCwgNUwsIFdJTExCTE9DS30sCj4gICAgIC0KPiAgICAgLcKgIMKgIMKgIMKg LyogIzM0IFBhcmVudCBtYWtpbmcgYSB3cml0ZSBsb2NrIGZyb20gYnl0ZSA1IHRvIGVuZCBvZgo+ ICAgICBmaWxlICovCj4gICAgIC3CoCDCoCDCoCDCoHtGX1dSTENLLCAwLCA0TCwgMEwsIFNLSVAs IDAsIDBMLCAwTCwKPiAgICAgLcKgIMKgIMKgIMKgIC8qIENoaWxkIGF0dGVtcHRpbmcgYSB3cml0 ZSBsb2NrIGZyb20gYnl0ZSAzIHRvIGJ5dGUgNyAqLwo+ICAgICAtwqAgwqAgwqAgwqAgRl9XUkxD SywgMCwgMkwsIDVMLCBXSUxMQkxPQ0t9LAo+ICAgICAtCj4gICAgIC3CoCDCoCDCoCDCoC8qICMz NSBQYXJlbnQgbWFraW5nIGEgcmVhZCBsb2NrIGZyb20gYnl0ZSA1IHRvIGVuZCBvZiBmaWxlICov Cj4gICAgIC3CoCDCoCDCoCDCoHtGX1JETENLLCAwLCA0TCwgMEwsIFNLSVAsIDAsIDBMLCAwTCwK PiAgICAgLcKgIMKgIMKgIMKgIC8qIENoaWxkIGF0dGVtcHRpbmcgYSByZWFkIGxvY2sgZnJvbSBi eXRlIDMgdG8gYnl0ZSA3ICovCj4gICAgIC3CoCDCoCDCoCDCoCBGX1JETENLLCAwLCAyTCwgNUws IE5PQkxPQ0t9LAo+ICAgICAtCj4gICAgIC3CoCDCoCDCoCDCoC8qICMzNiBQYXJlbnQgbWFraW5n IGEgcmVhZCBsb2NrIGZyb20gYnl0ZSA1IHRvIGVuZCBvZiBmaWxlICovCj4gICAgIC3CoCDCoCDC oCDCoHtGX1JETENLLCAwLCA0TCwgMEwsIFNLSVAsIDAsIDBMLCAwTCwKPiAgICAgLcKgIMKgIMKg IMKgIC8qIENoaWxkIGF0dGVtcHRpbmcgYSB3cml0ZSBsb2NrIGZyb20gYnl0ZSAzIHRvIGJ5dGUg NyAqLwo+ICAgICAtwqAgwqAgwqAgwqAgRl9XUkxDSywgMCwgMkwsIDVMLCBXSUxMQkxPQ0t9LAo+ ICAgICAtCj4gICAgIC3CoCDCoCDCoCDCoC8qIFN0YXJ0IG9mIG5lZ2F0aXZlIExfc3RhcnQgYW5k IExfbGVuIHRlc3QgY2FzZXMgKi8KPiAgICAgLcKgIMKgIMKgIMKgLyoKPiAgICAgLcKgIMKgIMKg IMKgICogIzM3IFBhcmVudCBtYWtpbmcgd3JpdGUgbG9jayBmcm9tIGJ5dGUgMiB0byBieXRlIDMK PiAgICAgLcKgIMKgIMKgIMKgICogd2l0aCBMX3N0YXJ0ID0gLTMKPiAgICAgLcKgIMKgIMKgIMKg ICovCj4gICAgIC3CoCDCoCDCoCDCoHtGX1dSTENLLCAxLCAtM0wsIDJMLCBTS0lQLCAwLCAwTCwg MEwsCj4gICAgIC3CoCDCoCDCoCDCoCAvKiBDaGlsZCBhdHRlbXB0aW5nIHdyaXRlIGxvY2sgb24g Ynl0ZSAxICovCj4gICAgIC3CoCDCoCDCoCDCoCBGX1dSTENLLCAwLCAxTCwgMUwsIE5PQkxPQ0t9 LAo+ICAgICAtCj4gICAgIC3CoCDCoCDCoCDCoC8qCj4gICAgIC3CoCDCoCDCoCDCoCAqICMzOCBQ YXJlbnQgbWFraW5nIHdyaXRlIGxvY2sgZnJvbSBieXRlIDIgdG8gYnl0ZSAzCj4gICAgIC3CoCDC oCDCoCDCoCAqIHdpdGggTF9zdGFydCA9IC0zCj4gICAgIC3CoCDCoCDCoCDCoCAqLwo+ICAgICAt wqAgwqAgwqAgwqB7Rl9XUkxDSywgMSwgLTNMLCAyTCwgU0tJUCwgMCwgMEwsIDBMLAo+ICAgICAt wqAgwqAgwqAgwqAgLyogQ2hpbGQgYXR0ZW1wdGluZyB3cml0ZSBsb2NrIG9uIGJ5dGUgNCAqLwo+ ICAgICAtwqAgwqAgwqAgwqAgRl9XUkxDSywgMCwgNEwsIDFMLCBOT0JMT0NLfSwKPiAgICAgLQo+ ICAgICAtwqAgwqAgwqAgwqAvKgo+ICAgICAtwqAgwqAgwqAgwqAgKiAjMzkgUGFyZW50IG1ha2lu ZyB3cml0ZSBsb2NrIGZyb20gYnl0ZSAyIHRvIGJ5dGUgMwo+ICAgICAtwqAgwqAgwqAgwqAgKiB3 aXRoIExfc3RhcnQgPSAtMwo+ICAgICAtwqAgwqAgwqAgwqAgKi8KPiAgICAgLcKgIMKgIMKgIMKg e0ZfV1JMQ0ssIDEsIC0zTCwgMkwsIFNLSVAsIDAsIDBMLCAwTCwKPiAgICAgLcKgIMKgIMKgIMKg IC8qIENoaWxkIGF0dGVtcHRpbmcgd3JpdGUgbG9jayBvbiBieXRlIDIgKi8KPiAgICAgLcKgIMKg IMKgIMKgIEZfV1JMQ0ssIDAsIDJMLCAxTCwgV0lMTEJMT0NLfSwKPiAgICAgLQo+ICAgICAtwqAg wqAgwqAgwqAvKgo+ICAgICAtwqAgwqAgwqAgwqAgKiAjNDAgUGFyZW50IG1ha2luZyB3cml0ZSBs b2NrIGZyb20gYnl0ZSAyIHRvIGJ5dGUgMwo+ICAgICAtwqAgwqAgwqAgwqAgKiB3aXRoIExfc3Rh cnQgPSAtMwo+ICAgICAtwqAgwqAgwqAgwqAgKi8KPiAgICAgLcKgIMKgIMKgIMKge0ZfV1JMQ0ss IDEsIC0zTCwgMkwsIFNLSVAsIDAsIDBMLCAwTCwKPiAgICAgLcKgIMKgIMKgIMKgIC8qIENoaWxk IGF0dGVtcHRpbmcgd3JpdGUgbG9jayBvbiBieXRlIDMgKi8KPiAgICAgLcKgIMKgIMKgIMKgIEZf V1JMQ0ssIDAsIDNMLCAxTCwgV0lMTEJMT0NLfSwKPiAgICAgLQo+ICAgICAtwqAgwqAgwqAgwqAv Kgo+ICAgICAtwqAgwqAgwqAgwqAgKiAjNDEgUGFyZW50IG1ha2luZyB3cml0ZSBsb2NrIGZyb20g Ynl0ZSAyIHRvIGJ5dGUgNgo+ICAgICAtwqAgwqAgwqAgwqAgKiB3aXRoIExfc3RhcnQgPSAtMwo+ ICAgICAtwqAgwqAgwqAgwqAgKi8KPiAgICAgLcKgIMKgIMKgIMKge0ZfV1JMQ0ssIDEsIC0zTCwg NUwsIFNLSVAsIDAsIDBMLCAwTCwKPiAgICAgLcKgIMKgIMKgIMKgIC8qIENoaWxkIGF0dGVtcHRp bmcgd3JpdGUgbG9jayBvbiBieXRlIDEgKi8KPiAgICAgLcKgIMKgIMKgIMKgIEZfV1JMQ0ssIDAs IDFMLCAxTCwgTk9CTE9DS30sCj4gICAgIC0KPiAgICAgLcKgIMKgIMKgIMKgLyoKPiAgICAgLcKg IMKgIMKgIMKgICogIzQyIFBhcmVudCBtYWtpbmcgd3JpdGUgbG9jayBmcm9tIGJ5dGUgMiB0byBi eXRlIDYKPiAgICAgLcKgIMKgIMKgIMKgICogd2l0aCBMX3N0YXJ0ID0gLTMKPiAgICAgLcKgIMKg IMKgIMKgICovCj4gICAgIC3CoCDCoCDCoCDCoHtGX1dSTENLLCAxLCAtM0wsIDVMLCBTS0lQLCAw LCAwTCwgMEwsCj4gICAgIC3CoCDCoCDCoCDCoCAvKiBDaGlsZCBhdHRlbXB0aW5nIHdyaXRlIGxv Y2sgb24gYnl0ZSA3ICovCj4gICAgIC3CoCDCoCDCoCDCoCBGX1dSTENLLCAwLCAxTCwgMUwsIE5P QkxPQ0t9LAo+ICAgICAtCj4gICAgIC3CoCDCoCDCoCDCoC8qCj4gICAgIC3CoCDCoCDCoCDCoCAq ICM0MyBQYXJlbnQgbWFraW5nIHdyaXRlIGxvY2sgZnJvbSBieXRlIDIgdG8gYnl0ZSA2Cj4gICAg IC3CoCDCoCDCoCDCoCAqIHdpdGggTF9zdGFydCA9IC0zCj4gICAgIC3CoCDCoCDCoCDCoCAqLwo+ ICAgICAtwqAgwqAgwqAgwqB7Rl9XUkxDSywgMSwgLTNMLCA1TCwgU0tJUCwgMCwgMEwsIDBMLAo+ ICAgICAtwqAgwqAgwqAgwqAgLyogQ2hpbGQgYXR0ZW1wdGluZyB3cml0ZSBsb2NrIG9uIGJ5dGUg MiAqLwo+ICAgICAtwqAgwqAgwqAgwqAgRl9XUkxDSywgMCwgMkwsIDFMLCBXSUxMQkxPQ0t9LAo+ ICAgICAtCj4gICAgIC3CoCDCoCDCoCDCoC8qCj4gICAgIC3CoCDCoCDCoCDCoCAqICM0NCBQYXJl bnQgbWFraW5nIHdyaXRlIGxvY2sgZnJvbSBieXRlIDIgdG8gYnl0ZSA2Cj4gICAgIC3CoCDCoCDC oCDCoCAqIHdpdGggTF9zdGFydCA9IC0zCj4gICAgIC3CoCDCoCDCoCDCoCAqLwo+ICAgICAtwqAg wqAgwqAgwqB7Rl9XUkxDSywgMSwgLTNMLCA1TCwgU0tJUCwgMCwgMEwsIDBMLAo+ICAgICAtwqAg wqAgwqAgwqAgLyogQ2hpbGQgYXR0ZW1wdGluZyB3cml0ZSBsb2NrIG9uIGJ5dGUgNSAqLwo+ICAg ICAtwqAgwqAgwqAgwqAgRl9XUkxDSywgMCwgNUwsIDFMLCBXSUxMQkxPQ0t9LAo+ICAgICAtCj4g ICAgIC3CoCDCoCDCoCDCoC8qCj4gICAgIC3CoCDCoCDCoCDCoCAqICM0NSBQYXJlbnQgbWFraW5n IHdyaXRlIGxvY2sgZnJvbSBieXRlIDIgdG8gYnl0ZSA2Cj4gICAgIC3CoCDCoCDCoCDCoCAqIHdp dGggTF9zdGFydCA9IC0zCj4gICAgIC3CoCDCoCDCoCDCoCAqLwo+ICAgICAtwqAgwqAgwqAgwqB7 Rl9XUkxDSywgMSwgLTNMLCA1TCwgU0tJUCwgMCwgMEwsIDBMLAo+ICAgICAtwqAgwqAgwqAgwqAg LyogQ2hpbGQgYXR0ZW1wdGluZyB3cml0ZSBsb2NrIG9uIGJ5dGUgNiAqLwo+ICAgICAtwqAgwqAg wqAgwqAgRl9XUkxDSywgMCwgNkwsIDFMLCBXSUxMQkxPQ0t9LAo+ICAgICAtCj4gICAgIC3CoCDC oCDCoCDCoC8qCj4gICAgIC3CoCDCoCDCoCDCoCAqICM0NiBQYXJlbnQgbWFraW5nIHdyaXRlIGxv Y2sgZnJvbSBieXRlIDIgdG8gYnl0ZSAzIHdpdGgKPiAgICAgLcKgIMKgIMKgIMKgICogTF9zdGFy dCA9IC0yIGFuZCBMX2xlbiA9IC0yCj4gICAgIC3CoCDCoCDCoCDCoCAqLwo+ICAgICAtwqAgwqAg wqAgwqB7Rl9XUkxDSywgMSwgMkwsIC0yTCwgU0tJUCwgMCwgMEwsIDBMLAo+ICAgICAtwqAgwqAg wqAgwqAgLyogQ2hpbGQgYXR0ZW1wdGluZyB3cml0ZSBsb2NrIG9uIGJ5dGUgMSAqLwo+ICAgICAt wqAgwqAgwqAgwqAgRl9XUkxDSywgMCwgMUwsIDFMLCBOT0JMT0NLfSwKPiAgICAgLQo+ICAgICAt wqAgwqAgwqAgwqAvKgo+ICAgICAtwqAgwqAgwqAgwqAgKiAjNDcgUGFyZW50IG1ha2luZyB3cml0 ZSBsb2NrIGZyb20gYnl0ZSAyIHRvIGJ5dGUgMyB3aXRoCj4gICAgIC3CoCDCoCDCoCDCoCAqIExf c3RhcnQgPSAtMiBhbmQgTF9sZW4gPSAtMgo+ICAgICAtwqAgwqAgwqAgwqAgKi8KPiAgICAgLcKg IMKgIMKgIMKge0ZfV1JMQ0ssIDEsIC0yTCwgLTJMLCBTS0lQLCAwLCAwTCwgMEwsCj4gICAgIC3C oCDCoCDCoCDCoCAvKiBDaGlsZCBhdHRlbXB0aW5nIHdyaXRlIGxvY2sgb24gYnl0ZSA0ICovCj4g ICAgIC3CoCDCoCDCoCDCoCBGX1dSTENLLCAwLCA0TCwgMUwsIE5PQkxPQ0t9LAo+ICAgICAtCj4g ICAgIC3CoCDCoCDCoCDCoC8qCj4gICAgIC3CoCDCoCDCoCDCoCAqICM0OCBQYXJlbnQgbWFraW5n IHdyaXRlIGxvY2sgZnJvbSBieXRlIDIgdG8gYnl0ZSAzIHdpdGgKPiAgICAgLcKgIMKgIMKgIMKg ICogTF9zdGFydCA9IC0yIGFuZCBMX2xlbiA9IC0yCj4gICAgIC3CoCDCoCDCoCDCoCAqLwo+ICAg ICAtwqAgwqAgwqAgwqB7Rl9XUkxDSywgMSwgLTJMLCAtMkwsIFNLSVAsIDAsIDBMLCAwTCwKPiAg ICAgLcKgIMKgIMKgIMKgIC8qIENoaWxkIGF0dGVtcHRpbmcgd3JpdGUgbG9jayBvbiBieXRlIDIg Ki8KPiAgICAgLcKgIMKgIMKgIMKgIEZfV1JMQ0ssIDAsIDJMLCAxTCwgV0lMTEJMT0NLfSwKPiAg ICAgLQo+ICAgICAtwqAgwqAgwqAgwqAvKgo+ICAgICAtwqAgwqAgwqAgwqAgKiAjNDkgUGFyZW50 IG1ha2luZyB3cml0ZSBsb2NrIGZyb20gYnl0ZSAyIHRvIGJ5dGUgMyB3aXRoCj4gICAgIC3CoCDC oCDCoCDCoCAqIExfc3RhcnQgPSAtMiBhbmQgTF9sZW4gPSAtMgo+ICAgICAtwqAgwqAgwqAgwqAg Ki8KPiAgICAgLcKgIMKgIMKgIMKge0ZfV1JMQ0ssIDEsIC0yTCwgLTJMLCBTS0lQLCAwLCAwTCwg MEwsCj4gICAgIC3CoCDCoCDCoCDCoCAvKiBDaGlsZCBhdHRlbXB0aW5nIHdyaXRlIGxvY2sgb24g Ynl0ZSAzICovCj4gICAgIC3CoCDCoCDCoCDCoCBGX1dSTENLLCAwLCAzTCwgMUwsIFdJTExCTE9D S30sCj4gICAgIC0KPiAgICAgLcKgIMKgIMKgIMKgLyoKPiAgICAgLcKgIMKgIMKgIMKgICogIzUw IFBhcmVudCBtYWtpbmcgd3JpdGUgbG9jayBmcm9tIGJ5dGUgNiB0byBieXRlIDcgd2l0aAo+ICAg ICAtwqAgwqAgwqAgwqAgKiBMX3N0YXJ0ID0gMiBhbmQgTF9sZW4gPSAtMgo+ICAgICAtwqAgwqAg wqAgwqAgKi8KPiAgICAgLcKgIMKgIMKgIMKge0ZfV1JMQ0ssIDEsIDJMLCAtMkwsIFNLSVAsIDAs IDBMLCAwTCwKPiAgICAgLcKgIMKgIMKgIMKgIC8qIENoaWxkIGF0dGVtcHRpbmcgd3JpdGUgbG9j ayBvbiBieXRlIDUgKi8KPiAgICAgLcKgIMKgIMKgIMKgIEZfV1JMQ0ssIDAsIDVMLCAxTCwgTk9C TE9DS30sCj4gICAgIC0KPiAgICAgLcKgIMKgIMKgIMKgLyoKPiAgICAgLcKgIMKgIMKgIMKgICog IzUxIFBhcmVudCBtYWtpbmcgd3JpdGUgbG9jayBmcm9tIGJ5dGUgNiB0byBieXRlIDcgd2l0aAo+ ICAgICAtwqAgwqAgwqAgwqAgKiBMX3N0YXJ0ID0gMiBhbmQgTF9sZW4gPSAtMgo+ICAgICAtwqAg wqAgwqAgwqAgKi8KPiAgICAgLcKgIMKgIMKgIMKge0ZfV1JMQ0ssIDEsIDJMLCAtMkwsIFNLSVAs IDAsIDBMLCAwTCwKPiAgICAgLcKgIMKgIMKgIMKgIC8qIENoaWxkIGF0dGVtcHRpbmcgd3JpdGUg bG9jayBvbiBieXRlIDggKi8KPiAgICAgLcKgIMKgIMKgIMKgIEZfV1JMQ0ssIDAsIDhMLCAxTCwg Tk9CTE9DS30sCj4gICAgIC0KPiAgICAgLcKgIMKgIMKgIMKgLyoKPiAgICAgLcKgIMKgIMKgIMKg ICogIzUyIFBhcmVudCBtYWtpbmcgd3JpdGUgbG9jayBmcm9tIGJ5dGUgNiB0byBieXRlIDcgd2l0 aAo+ICAgICAtwqAgwqAgwqAgwqAgKiBMX3N0YXJ0ID0gMiBhbmQgTF9sZW4gPSAtMgo+ICAgICAt wqAgwqAgwqAgwqAgKi8KPiAgICAgLcKgIMKgIMKgIMKge0ZfV1JMQ0ssIDEsIDJMLCAtMkwsIFNL SVAsIDAsIDBMLCAwTCwKPiAgICAgLcKgIMKgIMKgIMKgIC8qIENoaWxkIGF0dGVtcHRpbmcgd3Jp dGUgbG9jayBvbiBieXRlIDYgKi8KPiAgICAgLcKgIMKgIMKgIMKgIEZfV1JMQ0ssIDAsIDZMLCAx TCwgV0lMTEJMT0NLfSwKPiAgICAgLQo+ICAgICAtwqAgwqAgwqAgwqAvKgo+ICAgICAtwqAgwqAg wqAgwqAgKiAjNTMgUGFyZW50IG1ha2luZyB3cml0ZSBsb2NrIGZyb20gYnl0ZSA2IHRvIGJ5dGUg NyB3aXRoCj4gICAgIC3CoCDCoCDCoCDCoCAqIExfc3RhcnQgPSAyIGFuZCBMX2xlbiA9IC0yCj4g ICAgIC3CoCDCoCDCoCDCoCAqLwo+ICAgICAtwqAgwqAgwqAgwqB7Rl9XUkxDSywgMSwgMkwsIC0y TCwgU0tJUCwgMCwgMEwsIDBMLAo+ICAgICAtwqAgwqAgwqAgwqAgLyogQ2hpbGQgYXR0ZW1wdGlu ZyB3cml0ZSBsb2NrIG9uIGJ5dGUgNyAqLwo+ICAgICAtwqAgwqAgwqAgwqAgRl9XUkxDSywgMCwg N0wsIDFMLCBXSUxMQkxPQ0t9LAo+ICAgICAtCj4gICAgIC3CoCDCoCDCoCDCoC8qCj4gICAgIC3C oCDCoCDCoCDCoCAqICM1NCBQYXJlbnQgbWFraW5nIHdyaXRlIGxvY2sgZnJvbSBieXRlIDMgdG8g Ynl0ZSA3IHdpdGgKPiAgICAgLcKgIMKgIMKgIMKgICogTF9zdGFydCA9IDIgYW5kIExfbGVuID0g LTUKPiAgICAgLcKgIMKgIMKgIMKgICovCj4gICAgIC3CoCDCoCDCoCDCoHtGX1dSTENLLCAxLCAy TCwgLTVMLCBTS0lQLCAwLCAwTCwgMEwsCj4gICAgIC3CoCDCoCDCoCDCoCAvKiBDaGlsZCBhdHRl bXB0aW5nIHdyaXRlIGxvY2sgb24gYnl0ZSAyICovCj4gICAgIC3CoCDCoCDCoCDCoCBGX1dSTENL LCAwLCAyTCwgMUwsIE5PQkxPQ0t9LAo+ICAgICAtCj4gICAgIC3CoCDCoCDCoCDCoC8qCj4gICAg IC3CoCDCoCDCoCDCoCAqICM1NSBQYXJlbnQgbWFraW5nIHdyaXRlIGxvY2sgZnJvbSBieXRlIDMg dG8gYnl0ZSA3IHdpdGgKPiAgICAgLcKgIMKgIMKgIMKgICogTF9zdGFydCA9IDIgYW5kIExfbGVu ID0gLTUKPiAgICAgLcKgIMKgIMKgIMKgICovCj4gICAgIC3CoCDCoCDCoCDCoHtGX1dSTENLLCAx LCAyTCwgLTVMLCBTS0lQLCAwLCAwTCwgMEwsCj4gICAgIC3CoCDCoCDCoCDCoCAvKiBDaGlsZCBh dHRlbXB0aW5nIHdyaXRlIGxvY2sgb24gYnl0ZSA4ICovCj4gICAgIC3CoCDCoCDCoCDCoCBGX1dS TENLLCAwLCA4TCwgMUwsIE5PQkxPQ0t9LAo+ICAgICAtCj4gICAgIC3CoCDCoCDCoCDCoC8qCj4g ICAgIC3CoCDCoCDCoCDCoCAqICM1NiBQYXJlbnQgbWFraW5nIHdyaXRlIGxvY2sgZnJvbSBieXRl IDMgdG8gYnl0ZSA3IHdpdGgKPiAgICAgLcKgIMKgIMKgIMKgICogTF9zdGFydCA9IDIgYW5kIExf bGVuID0gLTUKPiAgICAgLcKgIMKgIMKgIMKgICovCj4gICAgIC3CoCDCoCDCoCDCoHtGX1dSTENL LCAxLCAyTCwgLTVMLCBTS0lQLCAwLCAwTCwgMEwsCj4gICAgIC3CoCDCoCDCoCDCoCAvKiBDaGls ZCBhdHRlbXB0aW5nIHdyaXRlIGxvY2sgb24gYnl0ZSAzICovCj4gICAgIC3CoCDCoCDCoCDCoCBG X1dSTENLLCAwLCAzTCwgMUwsIFdJTExCTE9DS30sCj4gICAgIC0KPiAgICAgLcKgIMKgIMKgIMKg LyoKPiAgICAgLcKgIMKgIMKgIMKgICogIzU3IFBhcmVudCBtYWtpbmcgd3JpdGUgbG9jayBmcm9t IGJ5dGUgMyB0byBieXRlIDcgd2l0aAo+ICAgICAtwqAgwqAgwqAgwqAgKiBMX3N0YXJ0ID0gMiBh bmQgTF9sZW4gPSAtNQo+ICAgICAtwqAgwqAgwqAgwqAgKi8KPiAgICAgLcKgIMKgIMKgIMKge0Zf V1JMQ0ssIDEsIDJMLCAtNUwsIFNLSVAsIDAsIDBMLCAwTCwKPiAgICAgLcKgIMKgIMKgIMKgIC8q IENoaWxkIGF0dGVtcHRpbmcgd3JpdGUgbG9jayBvbiBieXRlIDUgKi8KPiAgICAgLcKgIMKgIMKg IMKgIEZfV1JMQ0ssIDAsIDVMLCAxTCwgV0lMTEJMT0NLfSwKPiAgICAgLQo+ICAgICAtwqAgwqAg wqAgwqAvKgo+ICAgICAtwqAgwqAgwqAgwqAgKiAjNTggUGFyZW50IG1ha2luZyB3cml0ZSBsb2Nr IGZyb20gYnl0ZSAzIHRvIGJ5dGUgNyB3aXRoCj4gICAgIC3CoCDCoCDCoCDCoCAqIExfc3RhcnQg PSAyIGFuZCBMX2xlbiA9IC01Cj4gICAgIC3CoCDCoCDCoCDCoCAqLwo+ICAgICAtwqAgwqAgwqAg wqB7Rl9XUkxDSywgMSwgMkwsIC01TCwgU0tJUCwgMCwgMEwsIDBMLAo+ICAgICAtwqAgwqAgwqAg wqAgLyogQ2hpbGQgYXR0ZW1wdGluZyB3cml0ZSBsb2NrIG9uIGJ5dGUgNyAqLwo+ICAgICAtwqAg wqAgwqAgwqAgRl9XUkxDSywgMCwgN0wsIDFMLCBXSUxMQkxPQ0t9LAo+ICAgICArc3RydWN0IGZp bGVfY29uZiB7Cj4gICAgICvCoCDCoCDCoCDCoHNob3J0IHR5cGU7Cj4gICAgICvCoCDCoCDCoCDC oHNob3J0IHdoZW5jZTsKPiAgICAgK8KgIMKgIMKgIMKgbG9uZyBzdGFydDsKPiAgICAgK8KgIMKg IMKgIMKgbG9uZyBsZW47Cj4gICAgICt9Owo+Cj4gICAgIC3CoCDCoCDCoCDCoC8qIFRlc3QgY2Fz ZSBmb3IgYmxvY2sgNCAqLwo+ICAgICAtwqAgwqAgwqAgwqAvKiAjNTkgUGFyZW50IG1ha2luZyB3 cml0ZSBsb2NrIG9uIGVudGlyZSBmaWxlICovCj4gICAgIC3CoCDCoCDCoCDCoHtGX1dSTENLLCAw LCAwTCwgMEwsIFNLSVAsIDAsIDBMLCAwTCwKPiAgICAgLcKgIMKgIMKgIMKgIC8qIENoaWxkIGF0 dGVtcHRpbmcgd3JpdGUgbG9jayBvbiBieXRlIDE1IHRvIGVuZCBvZiBmaWxlICovCj4gICAgIC3C oCDCoCDCoCDCoCBGX1dSTENLLCAwLCAxNUwsIDBMLCBXSUxMQkxPQ0t9LAo+ICAgICArc3RydWN0 IHRlc3RjYXNlIHsKPiAgICAgK8KgIMKgIMKgIMKgc3RydWN0IGZpbGVfY29uZiBwYXJlbnQ7IC8q IHBhcmVudCBwYXJhbWV0ZXJzIGZvciBmY250bCgpICovCj4gICAgICvCoCDCoCDCoCDCoHN0cnVj dCBmaWxlX2NvbmYgY2hpbGQ7wqAgLyogY2hpbGQgcGFyYW1ldGVycyBmb3IgZmNudGwoKSAqLwo+ ICAgICArwqAgwqAgwqAgwqBzaG9ydCBibG9ja2luZzvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCAvKiBibG9ja2luZy9ub24tYmxvY2tpbmcKPiAgICAgZmxhZyAqLwo+ICAgICArwqAgwqAgwqAg wqBsb25nIHBvczvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCAvKiBzdGFydGluZyBmaWxlCj4gICAgIHBvc2l0aW9uICovCj4KPgo+IE1vcmUgZXh0cmEgVGFi cyBoZXJlLCB3ZSdkIGJldHRlcsKga2VlcMKgY29kZcKgY29tbWVudHPCoGFsaWduZWQuCj4KPiAg ICAgwqB9Owo+Cj4gICAgIC1zdGF0aWMgdGVzdGNhc2UgKnRoaXNjYXNlOwo+ICAgICArc3RhdGlj IGNvbnN0IGNoYXIgZmlsZXBhdGhbXSA9ICJ1bmxvY2tlZC50eHQiOwo+ICAgICArc3RhdGljIGNv bnN0IGNoYXIgZmlsZWRhdGFbXSA9ICJIZXJlIHNvbWUgYnl0ZXMhIjsKPiAgICAgwqBzdGF0aWMg c3RydWN0IGZsb2NrIGZsb2NrOwo+ICAgICAtc3RhdGljIGludCBwYXJlbnQsIGNoaWxkLCBzdGF0 dXMsIGZhaWwgPSAwOwo+ICAgICAtc3RhdGljIGludCBnb3QxID0gMDsKPiAgICAgLXN0YXRpYyBp bnQgZmQ7Cj4gICAgIC1zdGF0aWMgaW50IHRlc3Q7Cj4gICAgIC1zdGF0aWMgY2hhciB0bXBuYW1l WzQwXTsKPiAgICAgLQo+ICAgICAtI2RlZmluZSBGSUxFREFUQcKgIMKgIMKgIMKgInRlbiBieXRl cyEiCj4gICAgICtzdGF0aWMgY2hhciAqc3RyX29wX251bXM7Cj4gICAgICtzdGF0aWMgY2hhciAq bG9ja2luZ19maWxlOwo+ICAgICArc3RhdGljIGNoYXIgKnZlcmJvc2U7Cj4gICAgICtzdGF0aWMg aW50IG9wX251bXMgPSAxMDA7Cj4KPgo+IENhbiB3ZSBqdXN0IHJlZHVjZSB0aGUgcmVwcyB0byAx MCwgdG8gYXZvaWQgdG9vIGxvbmfCoGxvZ3MgcHJpbnRzIG91dD8KPgpJIGRvbid0IGtub3cgaWYg dGhlIGdvb2QgYXBwcm9hY2ggaXMgdG8gcmVkdWNlIHRoZSBhbW91bnQgb2Ygb3BlcmF0aW9ucyAK YmVjYXVzZSBvZiBzdGRvdXQuCm1heWJlIHdlIGNhbiBqdXN0IHJlZHVjZSB0aGUgYW1vdW50IG9m IHN0ZG91dCBieSB1c2luZyBUREVCVUcgaW5zdGVhZCBvZiAKVElORk8sIGJ1dCB0aGlzIGlzIGFs c28Kc29tZXRoaW5nIHRoYXQgaXQncyBub3Qgc28gZWFzeSB0byBkby4gVGhlIHJlYXNvbiBpcyB0 aGF0IFRTVF9FWFBfRVFfTEkgCmFuZCBUU1RfRVhQX1BBU1MvRkFJTCB3bGwKZXZlbnR1YWxseSBw cmludCBzb21lIG1lc3NhZ2VzLgoKSSB3aWxsIHRyeSB0byBkbyBteSBiZXN0IGluIHRoaXMgY2Fz ZSwgYnV0IGl0IG1pZ2h0IGJlIHRyaWNreS4KPiBPdGhlcndpc2UgdGhlIHJld3JpdHRlbiBsb29r cyBwcmV0dHkgZ29vZC4KPgo+Cj4gICAgICtzdGF0aWMgaW50IGZpbGVfbW9kZSA9IDA3Nzc7Cj4K PiAgICAgLXZvaWQgY2F0Y2gxKGludCBzaWcpOwo+ICAgICAtdm9pZCBjYXRjaF9hbGFybShpbnQg c2lnKTsKPiAgICAgLQo+ICAgICAtY2hhciAqVENJRCA9ICJmY250bDE0IjsKPiAgICAgLWludCBU U1RfVE9UQUwgPSAxOwo+ICAgICAtaW50IE5PX05GUyA9IDE7Cj4gICAgICtzdGF0aWMgdm9pZCBk b2NoaWxkKHN0cnVjdCB0ZXN0Y2FzZSAqdGMsIGNvbnN0IGludCBmZCwgY29uc3QKPiAgICAgcGlk X3QgcGFyZW50X3BpZCkKPiAgICAgK3sKPiAgICAgK8KgIMKgIMKgIMKgZmxvY2subF90eXBlID0g dGMtPmNoaWxkLnR5cGU7Cj4gICAgICvCoCDCoCDCoCDCoGZsb2NrLmxfd2hlbmNlID0gdGMtPmNo aWxkLndoZW5jZTsKPiAgICAgK8KgIMKgIMKgIMKgZmxvY2subF9zdGFydCA9IHRjLT5jaGlsZC5z dGFydDsKPiAgICAgK8KgIMKgIMKgIMKgZmxvY2subF9sZW4gPSB0Yy0+Y2hpbGQubGVuOwo+ICAg ICArwqAgwqAgwqAgwqBmbG9jay5sX3BpZCA9IDA7Cj4KPiAgICAgLSNpZmRlZiBVQ0xJTlVYCj4g ICAgIC1zdGF0aWMgY2hhciAqYXJndjA7Cj4gICAgIC0jZW5kaWYKPiAgICAgK8KgIMKgIMKgIMKg U0FGRV9GQ05UTChmZCwgRl9HRVRMSywgJmZsb2NrKTsKPgo+ICAgICAtdm9pZCBjbGVhbnVwKHZv aWQpCj4gICAgIC17Cj4gICAgIC3CoCDCoCDCoCDCoHRzdF9ybWRpcigpOwo+ICAgICAtfQo+ICAg ICArwqAgwqAgwqAgwqBpZiAodGMtPmJsb2NraW5nKSB7Cj4gICAgICvCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoHRzdF9yZXMoVElORk8sICJDaGlsZDogZXhwZWN0aW5nIGJsb2NrZWQgZmlsZSBieQo+ ICAgICBwYXJlbnQiKTsKPgo+ICAgICAtdm9pZCBzZXR1cCh2b2lkKQo+ICAgICAtewo+ICAgICAt wqAgwqAgwqAgwqBzdHJ1Y3Qgc2lnYWN0aW9uIGFjdDsKPiAgICAgK8KgIMKgIMKgIMKgIMKgIMKg IMKgIMKgVFNUX0VYUF9FUV9MSShmbG9jay5sX3BpZCwgcGFyZW50X3BpZCk7Cj4gICAgICvCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoFRTVF9FWFBfRVFfTEkoZmxvY2subF90eXBlLCB0Yy0+cGFyZW50 LnR5cGUpOwo+Cj4gICAgIC3CoCDCoCDCoCDCoHRzdF9zaWcoRk9SSywgREVGX0hBTkRMRVIsIGNs ZWFudXApOwo+ICAgICAtwqAgwqAgwqAgwqBzaWduYWwoU0lHSFVQLCBTSUdfSUdOKTsKPiAgICAg LcKgIMKgIMKgIMKgdW1hc2soMCk7Cj4gICAgIC3CoCDCoCDCoCDCoFRFU1RfUEFVU0U7Cj4gICAg IC3CoCDCoCDCoCDCoHRzdF90bXBkaXIoKTsKPiAgICAgLcKgIMKgIMKgIMKgcGFyZW50ID0gZ2V0 cGlkKCk7Cj4gICAgICvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGZsb2NrLmxfdHlwZSA9IHRjLT5j aGlsZC50eXBlOwo+ICAgICArwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBmbG9jay5sX3doZW5jZSA9 IHRjLT5jaGlsZC53aGVuY2U7Cj4gICAgICvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGZsb2NrLmxf c3RhcnQgPSB0Yy0+Y2hpbGQuc3RhcnQ7Cj4gICAgICvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGZs b2NrLmxfbGVuID0gdGMtPmNoaWxkLmxlbjsKPiAgICAgK8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKg ZmxvY2subF9waWQgPSAwOwo+Cj4gICAgIC3CoCDCoCDCoCDCoHNwcmludGYodG1wbmFtZSwgImZj bnRsMi4lZCIsIHBhcmVudCk7Cj4gICAgICvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoFRTVF9FWFBf RkFJTChmY250bChmZCwgRl9TRVRMSywgJmZsb2NrKSwgRVdPVUxEQkxPQ0spOwo+ICAgICArwqAg wqAgwqAgwqB9IGVsc2Ugewo+ICAgICArwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB0c3RfcmVzKFRJ TkZPLCAiQ2hpbGQ6IGV4cGVjdGluZyBubyBibG9ja2luZyBlcnJvcnMiKTsKPgo+ICAgICAtwqAg wqAgwqAgwqAvKiBzZXR1cCBzaWduYWwgaGFuZGxlciBmb3Igc2lnbmFsIGZyb20gY2hpbGQgKi8K PiAgICAgLcKgIMKgIMKgIMKgbWVtc2V0KCZhY3QsIDAsIHNpemVvZihhY3QpKTsKPiAgICAgLcKg IMKgIMKgIMKgYWN0LnNhX2hhbmRsZXIgPSBjYXRjaDE7Cj4gICAgIC3CoCDCoCDCoCDCoHNpZ2Vt cHR5c2V0KCZhY3Quc2FfbWFzayk7Cj4gICAgIC3CoCDCoCDCoCDCoHNpZ2FkZHNldCgmYWN0LnNh X21hc2ssIFNJR1VTUjEpOwo+ICAgICAtwqAgwqAgwqAgwqBpZiAoKHNpZ2FjdGlvbihTSUdVU1Ix LCAmYWN0LCBOVUxMKSkgPCAwKSB7Cj4gICAgIC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHRzdF9y ZXNtKFRGQUlMLCAiU0lHVVNSMSBzaWduYWwgc2V0dXAgZmFpbGVkLAo+ICAgICBlcnJubyA9ICVk IiwKPiAgICAgLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGVycm5vKTsKPiAg ICAgLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgY2xlYW51cCgpOwo+ICAgICAtwqAgwqAgwqAgwqB9 Cj4gICAgICvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoFRTVF9FWFBfRVFfTEkoZmxvY2subF90eXBl LCBGX1VOTENLKTsKPiAgICAgK8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgVFNUX0VYUF9FUV9MSShm bG9jay5sX3doZW5jZSwgdGMtPmNoaWxkLndoZW5jZSk7Cj4gICAgICvCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoFRTVF9FWFBfRVFfTEkoZmxvY2subF9zdGFydCwgdGMtPmNoaWxkLnN0YXJ0KTsKPiAg ICAgK8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgVFNUX0VYUF9FUV9MSShmbG9jay5sX2xlbiwgdGMt PmNoaWxkLmxlbik7Cj4gICAgICvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoFRTVF9FWFBfRVFfTEko ZmxvY2subF9waWQsIDApOwo+Cj4gICAgIC3CoCDCoCDCoCDCoG1lbXNldCgmYWN0LCAwLCBzaXpl b2YoYWN0KSk7Cj4gICAgIC3CoCDCoCDCoCDCoGFjdC5zYV9oYW5kbGVyID0gY2F0Y2hfYWxhcm07 Cj4gICAgIC3CoCDCoCDCoCDCoHNpZ2VtcHR5c2V0KCZhY3Quc2FfbWFzayk7Cj4gICAgIC3CoCDC oCDCoCDCoHNpZ2FkZHNldCgmYWN0LnNhX21hc2ssIFNJR0FMUk0pOwo+ICAgICAtwqAgwqAgwqAg wqBpZiAoKHNpZ2FjdGlvbihTSUdBTFJNLCAmYWN0LCBOVUxMKSkgPCAwKSB7Cj4gICAgIC3CoCDC oCDCoCDCoCDCoCDCoCDCoCDCoHRzdF9yZXNtKFRGQUlMLCAiU0lHQUxSTSBzaWduYWwgc2V0dXAg ZmFpbGVkIik7Cj4gICAgIC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGNsZWFudXAoKTsKPiAgICAg K8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgVFNUX0VYUF9QQVNTKGZjbnRsKGZkLCBGX1NFVExLLCAm ZmxvY2spKTsKPiAgICAgwqAgwqAgwqAgwqAgfQo+ICAgICDCoH0KPgo+ICAgICAtdm9pZCB3YWtl X3BhcmVudCh2b2lkKQo+ICAgICArc3RhdGljIHZvaWQgcnVuX3Rlc3RjYXNlKHN0cnVjdCB0ZXN0 Y2FzZSAqdGMsIGNvbnN0IGludCBmaWxlX21vZGUpCj4gICAgIMKgewo+ICAgICAtwqAgwqAgwqAg wqBpZiAoKGtpbGwocGFyZW50LCBTSUdVU1IxKSkgPCAwKSB7Cj4gICAgIC3CoCDCoCDCoCDCoCDC oCDCoCDCoCDCoHRzdF9yZXNtKFRGQUlMLCAiQXR0ZW1wdCB0byBzZW5kIHNpZ25hbCB0byBwYXJl bnQKPiAgICAgIiAiZmFpbGVkIik7Cj4gICAgIC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHRzdF9y ZXNtKFRGQUlMLCAiVGVzdCBjYXNlICVkLCBlcnJubyA9ICVkIiwgdGVzdCArCj4gICAgIDEsIGVy cm5vKTsKPiAgICAgLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgZmFpbCA9IDE7Cj4gICAgIC3CoCDC oCDCoCDCoH0KPiAgICAgLX0KPiAgICAgK8KgIMKgIMKgIMKgcGlkX3QgcGFyZW50X3BpZDsKPiAg ICAgK8KgIMKgIMKgIMKgcGlkX3QgY2hpbGRfcGlkOwo+ICAgICArwqAgwqAgwqAgwqBpbnQgZmQ7 Cj4KPiAgICAgLXZvaWQgZG9fdXNsZWVwX2NoaWxkKHZvaWQpCj4gICAgIC17Cj4gICAgIC3CoCDC oCDCoCDCoHVzbGVlcCgxMDAwMDApO8KgIMKgIMKgIMKgIMKgLyogWFhYIGhvdyBsb25nIGlzIGxv bmcgZW5vdWdoPyAqLwo+ICAgICAtwqAgwqAgwqAgwqB3YWtlX3BhcmVudCgpOwo+ICAgICAtwqAg wqAgwqAgwqBleGl0KDApOwo+ICAgICAtfQo+ICAgICArwqAgwqAgwqAgwqB0c3RfcmVzKFRJTkZP LCAiUGFyZW50OiBsb2NraW5nIGZpbGUiKTsKPgo+ICAgICAtdm9pZCBkb2NoaWxkKHZvaWQpCj4g ICAgIC17Cj4gICAgIC3CoCDCoCDCoCDCoGludCByYzsKPiAgICAgLcKgIMKgIMKgIMKgcGlkX3Qg cGlkOwo+ICAgICArwqAgwqAgwqAgwqAvKiBvcGVuIGZpbGUgYW5kIG1vdmUgY3Vyc29yIGFjY29y ZGluZyB3aXRoIHRoZSB0ZXN0ICovCj4gICAgICvCoCDCoCDCoCDCoGZkID0gU0FGRV9PUEVOKGZp bGVwYXRoLCBPX1JEV1IsIGZpbGVfbW9kZSk7Cj4gICAgICvCoCDCoCDCoCDCoFNBRkVfTFNFRUso ZmQsIHRjLT5wb3MsIDApOwo+Cj4gICAgIC3CoCDCoCDCoCDCoGZsb2NrLmxfdHlwZSA9IHRoaXNj YXNlLT5jX3R5cGU7Cj4gICAgIC3CoCDCoCDCoCDCoGZsb2NrLmxfd2hlbmNlID0gdGhpc2Nhc2Ut PmNfd2hlbmNlOwo+ICAgICAtwqAgwqAgwqAgwqBmbG9jay5sX3N0YXJ0ID0gdGhpc2Nhc2UtPmNf c3RhcnQ7Cj4gICAgIC3CoCDCoCDCoCDCoGZsb2NrLmxfbGVuID0gdGhpc2Nhc2UtPmNfbGVuOwo+ ICAgICArwqAgwqAgwqAgwqAvKiBzZXQgdGhlIGluaXRpYWwgcGFyZW50IGxvY2sgb24gdGhlIGZp bGUgKi8KPiAgICAgK8KgIMKgIMKgIMKgZmxvY2subF90eXBlID0gdGMtPnBhcmVudC50eXBlOwo+ ICAgICArwqAgwqAgwqAgwqBmbG9jay5sX3doZW5jZSA9IHRjLT5wYXJlbnQud2hlbmNlOwo+ICAg ICArwqAgwqAgwqAgwqBmbG9jay5sX3N0YXJ0ID0gdGMtPnBhcmVudC5zdGFydDsKPiAgICAgK8Kg IMKgIMKgIMKgZmxvY2subF9sZW4gPSB0Yy0+cGFyZW50LmxlbjsKPiAgICAgwqAgwqAgwqAgwqAg ZmxvY2subF9waWQgPSAwOwo+ICAgICAtwqAgwqAgwqAgwqBmYWlsID0gMDsKPiAgICAgLQo+ICAg ICAtwqAgwqAgwqAgwqAvKgo+ICAgICAtwqAgwqAgwqAgwqAgKiBDaGVjayB0byBzZWUgaWYgY2hp bGQgbG9jayB3aWxsIHN1Y2NlZWQuIElmIGl0IHdpbGwsIEZMT0NLCj4gICAgIC3CoCDCoCDCoCDC oCAqIHN0cnVjdHVyZSB3aWxsIHJldHVybiB3aXRoIGxfdHlwZSBjaGFuZ2VkIHRvIEZfVU5MQ0su Cj4gICAgIElmIGl0IHdpbGwKPiAgICAgLcKgIMKgIMKgIMKgICogbm90LCB0aGUgcGFyZW50IHBp ZCB3aWxsIGJlIHJldHVybmVkIGluIGxfcGlkIGFuZCB0aGUKPiAgICAgdHlwZSBvZgo+ICAgICAt wqAgwqAgwqAgwqAgKiBsb2NrIHRoYXQgd2lsbCBibG9jayBpdCBpbiBsX3R5cGUuCj4gICAgIC3C oCDCoCDCoCDCoCAqLwo+ICAgICAtwqAgwqAgwqAgwqBpZiAoKHJjID0gZmNudGwoZmQsIEZfR0VU TEssICZmbG9jaykpIDwgMCkgewo+ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB0c3RfcmVz bShURkFJTCwgIkF0dGVtcHQgdG8gY2hlY2sgbG9jayBzdGF0dXMKPiAgICAgZmFpbGVkIik7Cj4g ICAgIC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHRzdF9yZXNtKFRGQUlMLCAiVGVzdCBjYXNlICVk LCBlcnJubyA9ICVkIiwgdGVzdCArCj4gICAgIDEsIGVycm5vKTsKPiAgICAgLcKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgZmFpbCA9IDE7Cj4gICAgIC3CoCDCoCDCoCDCoH0gZWxzZSB7Cj4gICAgIC0K PiAgICAgLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgaWYgKCh0aGlzY2FzZS0+Y19mbGFnKSA9PSBO T0JMT0NLKSB7Cj4gICAgIC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGlmIChm bG9jay5sX3R5cGUgIT0gRl9VTkxDSykgewo+ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB0c3RfcmVzbShURkFJTCwKPiAgICAgLcKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgICJUZXN0IGNh c2UgJWQsIEdFVExLOgo+ICAgICB0eXBlID0gJWQsICIKPiAgICAgLcKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgICIlZCB3YXMgZXhwZWN0 ZWQiLCB0ZXN0ICsgMSwKPiAgICAgLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGZsb2NrLmxfdHlwZSwgRl9VTkxDSyk7Cj4gICAgIC3C oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGZhaWwgPSAxOwo+ ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB9Cj4KPiAgICAgLcKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgaWYgKGZsb2NrLmxfd2hlbmNlICE9IHRoaXNj YXNlLT5jX3doZW5jZSkgewo+ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqB0c3RfcmVzbShURkFJTCwKPiAgICAgLcKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgICJUZXN0IGNhc2UgJWQsIEdF VExLOgo+ICAgICB3aGVuY2UgPSAlZCwgIgo+ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgInNob3VsZCBoYXZlIHJlbWFpbmVk Cj4gICAgICVkIiwgdGVzdCArIDEsCj4gICAgIC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBmbG9jay5sX3doZW5jZSwKPiAgICAgdGhp c2Nhc2UtPmNfd2hlbmNlKTsKPiAgICAgLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgZmFpbCA9IDE7Cj4gICAgIC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoH0KPiAgICAgK8KgIMKgIMKgIMKgU0FGRV9GQ05UTChmZCwgRl9TRVRMSywgJmZs b2NrKTsKPgo+ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBpZiAoZmxv Y2subF9zdGFydCAhPSB0aGlzY2FzZS0+Y19zdGFydCkgewo+ICAgICAtwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB0c3RfcmVzbShURkFJTCwKPiAgICAgLcKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg ICJUZXN0IGNhc2UgJWQsIEdFVExLOgo+ICAgICBzdGFydCA9ICUiIFBSSWQ2NAo+ICAgICAtwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg IiwgIiAic2hvdWxkIGhhdmUKPiAgICAgcmVtYWluZWQgJSIgUFJJZDY0LAo+ICAgICAtwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdGVz dCArIDEsIChpbnQ2NF90KQo+ICAgICBmbG9jay5sX3N0YXJ0LAo+ICAgICAtwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgKGludDY0X3Qp IHRoaXNjYXNlLT5jX3N0YXJ0KTsKPiAgICAgLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgZmFpbCA9IDE7Cj4gICAgIC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoH0KPiAgICAgK8KgIMKgIMKgIMKgLyogc2V0IHRoZSBjaGlsZCBsb2NrIG9u IHRoZSBmaWxlICovCj4gICAgICvCoCDCoCDCoCDCoHBhcmVudF9waWQgPSBnZXRwaWQoKTsKPiAg ICAgK8KgIMKgIMKgIMKgY2hpbGRfcGlkID0gU0FGRV9GT1JLKCk7Cj4KPiAgICAgLcKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgaWYgKGZsb2NrLmxfbGVuICE9IHRoaXNjYXNlLT5j X2xlbikgewo+ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqB0c3RfcmVzbShURkFJTCwKPiAgICAgLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgICJUZXN0IGNhc2UgJWQsIEdFVExLOiBsZW4K PiAgICAgPSAlIiBQUklkNjQKPiAgICAgLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgICIsICIgInNob3VsZCBoYXZlCj4gICAgIHJlbWFp bmVkICUiIFBSSWQ2NCwKPiAgICAgLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHRlc3QgKyAxLCAoaW50NjRfdCkKPiAgICAgZmxvY2su bF9sZW4sCj4gICAgIC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCAoaW50NjRfdCkgdGhpc2Nhc2UtPmNfbGVuKTsKPiAgICAgLcKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgZmFpbCA9IDE7Cj4gICAg IC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoH0KPiAgICAgLQo+ICAgICAtwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBpZiAoZmxvY2subF9waWQgIT0gMCkgewo+ ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB0c3Rf cmVzbShURkFJTCwKPiAgICAgLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgICJUZXN0IGNhc2UgJWQsIEdFVExLOiBwaWQKPiAgICAgPSAl ZCwgIgo+ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgInNob3VsZCBoYXZlIHJlbWFpbmVkIDAiLAo+ICAgICB0ZXN0ICsgMSwK PiAgICAgLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIGZsb2NrLmxfcGlkKTsKPiAgICAgLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgZmFpbCA9IDE7Cj4gICAgIC3CoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoH0KPiAgICAgLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgfSBlbHNlIHsK PiAgICAgLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgaWYgKGZsb2NrLmxfcGlk ICE9IHBhcmVudCkgewo+ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqB0c3RfcmVzbShURkFJTCwKPiAgICAgLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgICJUZXN0IGNhc2UgJWQsIEdFVExL OiBwaWQKPiAgICAgPSAlZCwgIgo+ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgInNob3VsZCBiZSBwYXJlbnQncyBpZCBvZgo+ ICAgICAlZCIsCj4gICAgIC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCB0ZXN0ICsgMSwgZmxvY2subF9waWQsCj4gICAgIHBhcmVudCk7 Cj4gICAgIC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGZh aWwgPSAxOwo+ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB9Cj4gICAg IC0KPiAgICAgLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgaWYgKGZsb2NrLmxf dHlwZSAhPSB0aGlzY2FzZS0+YV90eXBlKSB7Cj4gICAgIC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHRzdF9yZXNtKFRGQUlMLAo+ICAgICAtwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgIlRlc3Qg Y2FzZSAlZCwgR0VUTEs6Cj4gICAgIHR5cGUgPSAlZCwgIgo+ICAgICAtwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgInNob3VsZCBiZSBw YXJlbnQncyBmaXJzdAo+ICAgICBsb2NrIHR5cGUgb2YgJWQiLAo+ICAgICAtwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdGVzdCArIDEs IGZsb2NrLmxfdHlwZSwKPiAgICAgLSB0aGlzY2FzZS0+YV90eXBlKTsKPiAgICAgLcKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgZmFpbCA9IDE7Cj4gICAgIC3C oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoH0KPiAgICAgLcKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgfQo+ICAgICArwqAgwqAgwqAgwqBpZiAoIWNoaWxkX3BpZCkgewo+ICAgICArwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqBkb2NoaWxkKHRjLCBmZCwgcGFyZW50X3BpZCk7Cj4gICAgICvC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoGV4aXQoMCk7Cj4gICAgIMKgIMKgIMKgIMKgIH0KPgo+ICAg ICAtwqAgwqAgwqAgwqAvKgo+ICAgICAtwqAgwqAgwqAgwqAgKiBub3cgdHJ5IHRvIHNldCB0aGUg bG9jaywgbm9uYmxvY2tpbmcKPiAgICAgLcKgIMKgIMKgIMKgICogVGhpcyB3aWxsIHN1Y2NlZWQg Zm9yIE5PQkxPQ0ssCj4gICAgIC3CoCDCoCDCoCDCoCAqIGZhaWwgZm9yIFdJTExCTE9DSwo+ICAg ICAtwqAgwqAgwqAgwqAgKi8KPiAgICAgLcKgIMKgIMKgIMKgZmxvY2subF90eXBlID0gdGhpc2Nh c2UtPmNfdHlwZTsKPiAgICAgLcKgIMKgIMKgIMKgZmxvY2subF93aGVuY2UgPSB0aGlzY2FzZS0+ Y193aGVuY2U7Cj4gICAgIC3CoCDCoCDCoCDCoGZsb2NrLmxfc3RhcnQgPSB0aGlzY2FzZS0+Y19z dGFydDsKPiAgICAgLcKgIMKgIMKgIMKgZmxvY2subF9sZW4gPSB0aGlzY2FzZS0+Y19sZW47Cj4g ICAgICvCoCDCoCDCoCDCoHRzdF9yZWFwX2NoaWxkcmVuKCk7Cj4gICAgICsKPiAgICAgK8KgIMKg IMKgIMKgZmxvY2subF90eXBlID0gRl9VTkxDSzsKPiAgICAgK8KgIMKgIMKgIMKgZmxvY2subF93 aGVuY2UgPSAwOwo+ICAgICArwqAgwqAgwqAgwqBmbG9jay5sX3N0YXJ0ID0gMDsKPiAgICAgK8Kg IMKgIMKgIMKgZmxvY2subF9sZW4gPSAwOwo+ICAgICDCoCDCoCDCoCDCoCBmbG9jay5sX3BpZCA9 IDA7Cj4KPiAgICAgLcKgIMKgIMKgIMKgaWYgKChyYyA9IGZjbnRsKGZkLCBGX1NFVExLLCAmZmxv Y2spKSA8IDApIHsKPiAgICAgLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgaWYgKCh0aGlzY2FzZS0+ Y19mbGFnKSA9PSBOT0JMT0NLKSB7Cj4gICAgIC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoHRzdF9yZXNtKFRGQUlMLCAiQXR0ZW1wdCB0byBzZXQgY2hpbGQKPiAgICAgTk9OQkxP Q0tJTkcgIgo+ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgImxvY2sgZmFpbGVkIik7Cj4gICAgIC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoHRzdF9yZXNtKFRGQUlMLCAiVGVzdCBjYXNlICVkLCBlcnJubyA9ICVkIiwKPiAgICAg LcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHRlc3QgKyAx LCBlcnJubyk7Cj4gICAgIC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGZhaWwg PSAxOwo+ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB9Cj4gICAgIC3CoCDCoCDCoCDCoH0K PiAgICAgK8KgIMKgIMKgIMKgU0FGRV9GQ05UTChmZCwgRl9TRVRMSywgJmZsb2NrKTsKPiAgICAg K8KgIMKgIMKgIMKgU0FGRV9DTE9TRShmZCk7Cj4gICAgICt9Cj4KPiAgICAgLcKgIMKgIMKgIMKg aWYgKCh0aGlzY2FzZS0+Y19mbGFnKSA9PSBXSUxMQkxPQ0spIHsKPiAgICAgLcKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgaWYgKHJjICE9IC0xIHx8IChlcnJubyAhPSBFQUNDRVMgJiYgZXJybm8gIT0K PiAgICAgRUFHQUlOKSkgewo+ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqB0c3RfcmVzbShURkFJTCwKPiAgICAgLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgICJTRVRMSzogcmMgPSAlZCwgZXJybm8gPSAlZCwKPiAgICAgLTEvRUFH QUlOIG9yIEVBQ0NFUyAiCj4gICAgIC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCAid2FzIGV4cGVjdGVkIiwgcmMsIGVycm5vKTsKPiAgICAgLcKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgZmFpbCA9IDE7Cj4gICAgIC3CoCDCoCDCoCDCoCDC oCDCoCDCoCDCoH0KPiAgICAgLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgaWYgKHJjID09IDApIHsK PiAgICAgLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgLyogYWNjaWRlbnRhbGx5 IGdvdCB0aGUgbG9jayAqLwo+ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAvKiBYWFggaG93IHRvIGNsZWFuIHVwPyAqLwo+ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAodm9pZClmY250bChmZCwgRl9VTkxDSywgJmZsb2NrKTsKPiAgICAgLcKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgfQo+ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAvKgo+ ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgKiBMb2NrIHNob3VsZCBzdWNjZWVkIGFmdGVy IGJsb2NraW5nIGFuZCBwYXJlbnQKPiAgICAgcmVsZWFzZXMKPiAgICAgLcKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgICogbG9jaywgdGVsbCB0aGUgcGFyZW50IHRvIHJlbGVhc2UgdGhlIGxvY2tzLgo+ ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgKiBEbyB0aGUgbG9jayBpbiB0aGlzIHByb2Nl c3MsIHNlbmQgdGhlIHNpZ25hbCBpbgo+ICAgICBhIGNoaWxkCj4gICAgIC3CoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCAqIHByb2Nlc3MsIHNvIHRoYXQgdGhlIFNFVExLVyBhY3R1YWxseSB1c2VzIHRo ZQo+ICAgICBibG9ja2luZwo+ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgKiBtZWNoYW5p c20gaW4gdGhlIGtlcm5lbC4KPiAgICAgLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgICoKPiAgICAg LcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgICogWFhYIGluaGVyZW50IHJhY2U6IHdlIHdhbnQgdG8g d2FpdCB1bnRpbCB0aGUKPiAgICAgLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgICogRl9TRVRMS1cg aGFzIHN0YXJ0ZWQsIGJ1dCB3ZSBkb24ndCBoYXZlIGEgd2F5IHRvCj4gICAgIC3CoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCAqIGNoZWNrIHRoYXQgcmVsaWFibHkgaW4gdGhlIGNoaWxkLsKgIChXZSdk Cj4gICAgIC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAqIG5lZWQgc29tZSB3YXkgdG8gaGF2ZSBm Y250bCgpIGF0b21pY2FsbHkgdW5ibG9jayBhCj4gICAgIC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCAqIHNpZ25hbCBhbmQgd2FpdCBmb3IgdGhlIGxvY2suKQo+ICAgICAtwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgKi8KPiAgICAgLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgcGlkID0gRk9SS19PUl9W Rk9SSygpOwo+ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBzd2l0Y2ggKHBpZCkgewo+ICAg ICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBjYXNlIC0xOgo+ICAgICAtwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqB0c3RfcmVzbShURkFJTCwgIkZvcmsgZmFpbGVkIik7Cj4gICAg IC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGZhaWwgPSAxOwo+ICAgICAtwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBicmVhazsKPiAgICAgLcKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgY2FzZSAwOgo+ICAgICAtI2lmZGVmIFVDTElOVVgKPiAgICAgLcKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgaWYgKHNlbGZfZXhlYyhhcmd2MCwgIm5kIiwgMSwg cGFyZW50KSA8IDApIHsKPiAgICAgLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgdHN0X3Jlc20oVEZBSUwsICJzZWxmX2V4ZWMgZmFpbGVkIik7Cj4gICAgIC3C oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGJyZWFrOwo+ICAg ICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB9Cj4gICAgIC0jZWxzZQo+ICAg ICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBkb191c2xlZXBfY2hpbGQoKTsK PiAgICAgLSNlbmRpZgo+ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBi cmVhazsKPiAgICAgK3N0YXRpYyB2b2lkIGdlbmNvbmYoc3RydWN0IGZpbGVfY29uZiAqY29uZiwg Y29uc3QgaW50IHNpemUsIGNvbnN0Cj4gICAgIGxvbmcgcG9zKQo+ICAgICArewo+ICAgICArwqAg wqAgwqAgwqBjb25mLT50eXBlID0gcmFuZCgpICUgMiA/IEZfUkRMQ0sgOiBGX1dSTENLOwo+ICAg ICArwqAgwqAgwqAgwqBjb25mLT53aGVuY2UgPSBTRUVLX0NVUjsKPgo+ICAgICAtwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqBkZWZhdWx0Ogo+ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqBpZiAoKHJjID0gZmNudGwoZmQsIEZfU0VUTEtXLCAmZmxvY2spKSA8IDApIHsKPiAg ICAgLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgdHN0X3Jl c20oVEZBSUwsICJBdHRlbXB0IHRvIHNldAo+ICAgICBjaGlsZCBCTE9DS0lORyAiCj4gICAgIC3C oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCAibG9jayBmYWlsZWQiKTsKPiAgICAgLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgdHN0X3Jlc20oVEZBSUwsICJUZXN0IGNhc2UgJWQsCj4gICAgIGVycm5v ID0gJWQiLAo+ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgdGVzdCArIDEsIGVycm5vKTsKPiAgICAgLcKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgZmFpbCA9IDE7Cj4gICAgIC3CoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoH0KPiAgICAgLcKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgd2FpdHBpZChwaWQsICZzdGF0dXMsIDApOwo+ICAgICAtwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBicmVhazsKPiAgICAgLcKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgfQo+ICAgICAtwqAgwqAgwqAgwqB9Cj4gICAgIC3CoCDCoCDCoCDCoGlmIChmYWlsKSB7 Cj4gICAgIC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGV4aXQoMSk7Cj4gICAgICvCoCDCoCDCoCDC oGlmIChwb3MgPiAwICYmIChyYW5kKCkgJSAyKSkgewo+ICAgICArwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqBjb25mLT5zdGFydCA9IC0ocmFuZCgpICUgcG9zKTsKPiAgICAgK8KgIMKgIMKgIMKgIMKg IMKgIMKgIMKgY29uZi0+bGVuID0gcmFuZCgpICUgKHNpemUgKyBjb25mLT5zdGFydCAtIDEpICsg MTsKPiAgICAgwqAgwqAgwqAgwqAgfSBlbHNlIHsKPiAgICAgLcKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgZXhpdCgwKTsKPiAgICAgK8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgY29uZi0+c3RhcnQgPSBy YW5kKCkgJSAoc2l6ZSAtIDEpOwo+ICAgICArwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBjb25mLT5s ZW4gPSByYW5kKCkgJSAoc2l6ZSAtIGNvbmYtPnN0YXJ0IC0gMSkgKyAxOwo+ICAgICDCoCDCoCDC oCDCoCB9Cj4gICAgIMKgfQo+Cj4gICAgIC12b2lkIHJ1bl90ZXN0KGludCBmaWxlX2ZsYWcsIGlu dCBmaWxlX21vZGUsIGludCBzZWVrLCBpbnQgc3RhcnQsCj4gICAgIGludCBlbmQpCj4gICAgICtz dGF0aWMgc2hvcnQgZmNudGxfb3ZlcmxhcCgKPiAgICAgK8KgIMKgIMKgIMKgc3RydWN0IGZpbGVf Y29uZiAqcGFyZW50LAo+ICAgICArwqAgwqAgwqAgwqBzdHJ1Y3QgZmlsZV9jb25mICpjaGlsZCwK PiAgICAgK8KgIMKgIMKgIMKgY29uc3QgbG9uZyBwb3MpCj4gICAgIMKgewo+ICAgICAtwqAgwqAg wqAgwqBmYWlsID0gMDsKPiAgICAgLQo+ICAgICAtwqAgwqAgwqAgwqBmb3IgKHRlc3QgPSBzdGFy dDsgdGVzdCA8IGVuZDsgdGVzdCsrKSB7Cj4gICAgIC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGZk ID0gU0FGRV9PUEVOKGNsZWFudXAsIHRtcG5hbWUsIGZpbGVfZmxhZywKPiAgICAgZmlsZV9tb2Rl KTsKPiAgICAgLQo+ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBpZiAod3JpdGUoZmQsIEZJ TEVEQVRBLCAxMCkgPCAwKQo+ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqB0c3RfYnJrbShUQlJPSywgY2xlYW51cCwgIndyaXRlKCkgZmFpbGVkIik7Cj4gICAgIC0KPiAg ICAgLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgaWYgKHNlZWspIHsKPiAgICAgLcKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgU0FGRV9MU0VFSyhjbGVhbnVwLCBmZCwgc2VlaywgMCk7 Cj4gICAgIC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoH0KPiAgICAgLQo+ICAgICAtwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqB0aGlzY2FzZSA9ICZ0ZXN0Y2FzZXNbdGVzdF07Cj4gICAgIC3CoCDCoCDC oCDCoCDCoCDCoCDCoCDCoGZsb2NrLmxfdHlwZSA9IHRoaXNjYXNlLT5hX3R5cGU7Cj4gICAgIC3C oCDCoCDCoCDCoCDCoCDCoCDCoCDCoGZsb2NrLmxfd2hlbmNlID0gdGhpc2Nhc2UtPmFfd2hlbmNl Owo+ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBmbG9jay5sX3N0YXJ0ID0gdGhpc2Nhc2Ut PmFfc3RhcnQ7Cj4gICAgIC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGZsb2NrLmxfbGVuID0gdGhp c2Nhc2UtPmFfbGVuOwo+ICAgICAtCj4gICAgIC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoC8qIHNl dCB0aGUgaW5pdGlhbCBwYXJlbnQgbG9jayBvbiB0aGUgZmlsZSAqLwo+ICAgICAtwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqBpZiAoKGZjbnRsKGZkLCBGX1NFVExLLCAmZmxvY2spKSA8IDApIHsKPiAg ICAgLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgdHN0X3Jlc20oVEZBSUwsICJG aXJzdCBwYXJlbnQgbG9jayBmYWlsZWQiKTsKPiAgICAgLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgdHN0X3Jlc20oVEZBSUwsICJUZXN0IGNhc2UgJWQsIGVycm5vID0gJWQiLAo+ ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdGVz dCArIDEsIGVycm5vKTsKPiAgICAgLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg ZmFpbCA9IDE7Cj4gICAgIC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoH0KPiAgICAgLQo+ICAgICAt wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBpZiAoKHRoaXNjYXNlLT5iX3R5cGUpICE9IFNLSVApIHsK PiAgICAgLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgZmxvY2subF90eXBlID0g dGhpc2Nhc2UtPmJfdHlwZTsKPiAgICAgLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgZmxvY2subF93aGVuY2UgPSB0aGlzY2FzZS0+Yl93aGVuY2U7Cj4gICAgIC3CoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGZsb2NrLmxfc3RhcnQgPSB0aGlzY2FzZS0+Yl9zdGFy dDsKPiAgICAgLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgZmxvY2subF9sZW4g PSB0aGlzY2FzZS0+Yl9sZW47Cj4gICAgICvCoCDCoCDCoCDCoGxvbmcgc3RhcnRbMl07Cj4gICAg ICvCoCDCoCDCoCDCoGxvbmcgbGVuZ3RoWzJdOwo+ICAgICArwqAgwqAgwqAgwqBzaG9ydCBvdmVy bGFwID0gMDsKPiAgICAgKwo+ICAgICArwqAgwqAgwqAgwqBpZiAocGFyZW50LT5zdGFydCA+IGNo aWxkLT5zdGFydCkgewo+ICAgICArwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBzdGFydFswXSA9IHBv cyArIGNoaWxkLT5zdGFydDsKPiAgICAgK8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgc3RhcnRbMV0g PSBwb3MgKyBwYXJlbnQtPnN0YXJ0Owo+ICAgICArwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBsZW5n dGhbMF0gPSBjaGlsZC0+bGVuOwo+ICAgICArwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBsZW5ndGhb MV0gPSBwYXJlbnQtPmxlbjsKPiAgICAgK8KgIMKgIMKgIMKgfSBlbHNlIHsKPiAgICAgK8KgIMKg IMKgIMKgIMKgIMKgIMKgIMKgc3RhcnRbMF0gPSBwb3MgKyBwYXJlbnQtPnN0YXJ0Owo+ICAgICAr wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBzdGFydFsxXSA9IHBvcyArIGNoaWxkLT5zdGFydDsKPiAg ICAgK8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgbGVuZ3RoWzBdID0gcGFyZW50LT5sZW47Cj4gICAg ICvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGxlbmd0aFsxXSA9IGNoaWxkLT5sZW47Cj4gICAgICvC oCDCoCDCoCDCoH0KPgo+ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAv KiBzZXQgdGhlIHNlY29uZCBwYXJlbnQgbG9jayAqLwo+ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqBpZiAoKGZjbnRsKGZkLCBGX1NFVExLLCAmZmxvY2spKSA8IDApIHsK PiAgICAgLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgdHN0 X3Jlc20oVEZBSUwsICJTZWNvbmQgcGFyZW50Cj4gICAgIGxvY2sgZmFpbGVkIik7Cj4gICAgIC3C oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHRzdF9yZXNtKFRG QUlMLCAiVGVzdCBjYXNlICVkLAo+ICAgICBlcnJubyA9ICVkIiwKPiAgICAgLcKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHRlc3QgKyAx LCBlcnJubyk7Cj4gICAgIC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoGZhaWwgPSAxOwo+ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqB9Cj4gICAgIC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoH0KPiAgICAgLcKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgaWYgKCh0aGlzY2FzZS0+Y190eXBlKSA9PSBTS0lQKSB7Cj4gICAgIC3CoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGNsb3NlKGZkKTsKPiAgICAgLcKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgdHN0X3Jlc20oVElORk8sICJza2lwcGluZyB0ZXN0ICVk IiwgdGVzdCArIDEpOwo+ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBj b250aW51ZTsKPiAgICAgLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgfQo+ICAgICArwqAgwqAgwqAg wqBvdmVybGFwID0gc3RhcnRbMF0gPD0gc3RhcnRbMV0gJiYgc3RhcnRbMV0gPCAoc3RhcnRbMF0g Kwo+ICAgICBsZW5ndGhbMF0pOwo+Cj4gICAgIC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoC8qIE1h c2sgU0lHX1VTUjEgYmVmb3JlIGZvcmtpbmcgY2hpbGQsIHRvIGF2b2lkCj4gICAgIHJhY2UgKi8K PiAgICAgLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgKHZvaWQpc2lnaG9sZChTSUdVU1IxKTsKPiAg ICAgK8KgIMKgIMKgIMKgaWYgKHZlcmJvc2UgJiYgb3ZlcmxhcCkKPiAgICAgK8KgIMKgIMKgIMKg IMKgIMKgIMKgIMKgdHN0X3JlcyhUSU5GTywgImNoaWxkL3BhcmVudCBmY250bCgpCj4gICAgIGNv bmZpZ3VyYXRpb25zIG92ZXJsYXAiKTsKPgo+ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAv KiBmbHVzaCB0aGUgc3Rkb3V0IHRvIGF2b2lkIGdhcmJsZWQgb3V0cHV0ICovCj4gICAgIC3CoCDC oCDCoCDCoCDCoCDCoCDCoCDCoGZmbHVzaChzdGRvdXQpOwo+ICAgICArwqAgwqAgwqAgwqByZXR1 cm4gb3ZlcmxhcDsKPiAgICAgK30KPgo+ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBpZiAo KGNoaWxkID0gRk9SS19PUl9WRk9SSygpKSA9PSAwKSB7Cj4gICAgIC0jaWZkZWYgVUNMSU5VWAo+ ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBpZiAoc2VsZl9leGVjKGFy Z3YwLCAibmRkZGRkZGRkZCIsIDIsCj4gICAgIHRoaXNjYXNlLT5jX3R5cGUsCj4gICAgIC3CoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHRoaXNj YXNlLT5jX3doZW5jZSwKPiAgICAgdGhpc2Nhc2UtPmNfc3RhcnQsCj4gICAgIC3CoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHRoaXNjYXNlLT5j X2xlbiwKPiAgICAgdGhpc2Nhc2UtPmNfZmxhZywKPiAgICAgLcKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgdGhpc2Nhc2UtPmFfdHlwZSwgZmQs IHRlc3QsCj4gICAgIHBhcmVudCkgPCAwKSB7Cj4gICAgIC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHRzdF9yZXNtKFRGQUlMLCAic2VsZl9leGVjIGZhaWxl ZCIpOwo+ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqBjbGVhbnVwKCk7Cj4gICAgIC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoH0K PiAgICAgLSNlbHNlCj4gICAgIC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGRv Y2hpbGQoKTsKPiAgICAgLSNlbmRpZgo+ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB9Cj4g ICAgIC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGlmIChjaGlsZCA8IDApCj4gICAgIC3CoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHRzdF9icmttKFRCUk9LfFRFUlJOTywgY2xlYW51 cCwgIkZvcmsKPiAgICAgZmFpbGVkIik7Cj4gICAgICtzdGF0aWMgdm9pZCBnZW50ZXN0Y2FzZShz dHJ1Y3QgdGVzdGNhc2UgKnRjKQo+ICAgICArewo+ICAgICArwqAgwqAgwqAgwqBzdHJ1Y3QgZmls ZV9jb25mICpwYXJlbnQgPSAmdGMtPnBhcmVudDsKPiAgICAgK8KgIMKgIMKgIMKgc3RydWN0IGZp bGVfY29uZiAqY2hpbGQgPSAmdGMtPmNoaWxkOwo+ICAgICArwqAgwqAgwqAgwqBpbnQgc2l6ZTsK Pgo+ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBpZiAoKHRoaXNjYXNlLT5jX2ZsYWcpID09 IFdJTExCTE9DSykgewo+ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAv Kgo+ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgKiBXYWl0IGZvciBh IHNpZ25hbCBmcm9tIHRoZSBjaGlsZCB0aGVuCj4gICAgIHJlbW92ZQo+ICAgICAtwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgKiBibG9ja2luZyBsb2NrLiBTZXQgYSA2MCBzZWNv bmQgYWxhcm0gdG8KPiAgICAgYnJlYWsgdGhlCj4gICAgIC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCAqIHBhdXNlIGp1c3QgaW4gY2FzZSB0aGUgY2hpbGQgbmV2ZXIKPiAgICAg c2lnbmFscyB1cy4KPiAgICAgLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgICov Cj4gICAgIC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGFsYXJtKFRJTUVfT1VU KTsKPiAgICAgLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgc2lncGF1c2UoU0lH VVNSMSk7Cj4gICAgICvCoCDCoCDCoCDCoHNpemUgPSBzdHJsZW4oZmlsZWRhdGEpOwo+ICAgICAr wqAgwqAgwqAgwqB0Yy0+cG9zID0gcmFuZCgpICUgc2l6ZTsKPgo+ICAgICAtwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAvKiB0dXJuIG9mZiB0aGUgYWxhcm0gdGltZXIgKi8KPiAg ICAgLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgYWxhcm0oKHVuc2lnbmVkKTAp Owo+ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBpZiAoZ290MSAhPSAx KQo+ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB0 c3RfcmVzbShUSU5GTywgIlBhdXNlIHRlcm1pbmF0ZWQKPiAgICAgd2l0aG91dCAiCj4gICAgIC3C oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCAic2lnbmFsIFNJR1VTUjEgZnJvbSBjaGlsZCIpOwo+ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqBnb3QxID0gMDsKPiAgICAgK8KgIMKgIMKgIMKgZ2VuY29uZihwYXJl bnQsIHNpemUsIHRjLT5wb3MpOwo+ICAgICArwqAgwqAgwqAgwqBnZW5jb25mKGNoaWxkLCBzaXpl LCB0Yy0+cG9zKTsKPgo+ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAv Kgo+ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgKiBzZXR1cCBsb2Nr IHN0cnVjdHVyZSBmb3IgcGFyZW50IHRvIGRlbGV0ZQo+ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgKiBibG9ja2luZyBsb2NrIHRoZW4gd2FpdCBmb3IgY2hpbGQgdG8g ZXhpdAo+ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgKi8KPiAgICAg LcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgZmxvY2subF90eXBlID0gRl9VTkxD SzsKPiAgICAgLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgZmxvY2subF93aGVu Y2UgPSAwOwo+ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBmbG9jay5s X3N0YXJ0ID0gMEw7Cj4gICAgIC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGZs b2NrLmxfbGVuID0gMEw7Cj4gICAgIC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oGlmICgoZmNudGwoZmQsIEZfU0VUTEssICZmbG9jaykpIDwgMCkgewo+ICAgICAtwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB0c3RfcmVzbShURkFJTCwgIkF0 dGVtcHQgdG8KPiAgICAgcmVsZWFzZSBwYXJlbnQgIgo+ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgImxvY2sgZmFpbGVkIik7 Cj4gICAgIC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHRz dF9yZXNtKFRGQUlMLCAiVGVzdCBjYXNlICVkLAo+ICAgICBlcnJubyA9ICVkIiwKPiAgICAgLcKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IHRlc3QgKyAxLCBlcnJubyk7Cj4gICAgIC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoGZhaWwgPSAxOwo+ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqB9Cj4gICAgIC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoH0KPiAgICAgLcKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgLyoKPiAgICAgLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgICogc2V0 IGEgNjAgc2Vjb25kIGFsYXJtIHRvIGJyZWFrIHRoZSB3YWl0IGp1c3QgaW4KPiAgICAgY2FzZSB0 aGUKPiAgICAgLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgICogY2hpbGQgZG9lc24ndCB0ZXJtaW5h dGUgb24gaXRzIG93biBhY2NvcmQKPiAgICAgLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgICovCj4g ICAgIC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGFsYXJtKFRJTUVfT1VUKTsKPiAgICAgK8KgIMKg IMKgIMKgdGMtPmJsb2NraW5nID0gZmNudGxfb3ZlcmxhcChwYXJlbnQsIGNoaWxkLCB0Yy0+cG9z KTsKPgo+ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAvKiB3YWl0IGZvciB0aGUgY2hpbGQg dG8gdGVybWluYXRlIGFuZCBjbG9zZSB0aGUKPiAgICAgZmlsZSAqLwo+ICAgICAtwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqB3YWl0cGlkKGNoaWxkLCAmc3RhdHVzLCAwKTsKPiAgICAgLcKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgLyogdHVybiBvZmYgdGhlIGFsYXJtIGNsb2NrICovCj4gICAgIC3CoCDC oCDCoCDCoCDCoCDCoCDCoCDCoGFsYXJtKCh1bnNpZ25lZCkwKTsKPiAgICAgLcKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgaWYgKHN0YXR1cyAhPSAwKSB7Cj4gICAgIC3CoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoHRzdF9yZXNtKFRGQUlMLCAidGNoaWxkIHJldHVybmVkIHN0YXR1cwo+ ICAgICAweCV4Iiwgc3RhdHVzKTsKPiAgICAgLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgZmFpbCA9IDE7Cj4gICAgIC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoH0KPiAgICAgLcKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgY2xvc2UoZmQpOwo+ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqBpZiAoZmFpbCkKPiAgICAgLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg dHN0X3Jlc20oVEZBSUwsICJ0ZXN0Y2FzZTolZCBGQUlMRUQiLCB0ZXN0Cj4gICAgICsgMSk7Cj4g ICAgIC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGVsc2UKPiAgICAgLcKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgdHN0X3Jlc20oVFBBU1MsICJ0ZXN0Y2FzZTolZCBQQVNTRUQiLCB0 ZXN0Cj4gICAgICsgMSk7Cj4gICAgIC3CoCDCoCDCoCDCoH0KPiAgICAgLcKgIMKgIMKgIMKgdW5s aW5rKHRtcG5hbWUpOwo+ICAgICArwqAgwqAgwqAgwqBpZiAocGFyZW50LT50eXBlID09IEZfUkRM Q0sgJiYgY2hpbGQtPnR5cGUgPT0gRl9SRExDSykKPiAgICAgK8KgIMKgIMKgIMKgIMKgIMKgIMKg IMKgdGMtPmJsb2NraW5nID0gMDsKPiAgICAgwqB9Cj4KPiAgICAgLXZvaWQgY2F0Y2hfYWxhcm0o aW50IHNpZykKPiAgICAgK3N0YXRpYyB2b2lkIHByaW50X3Rlc3RjYXNlKHN0cnVjdCB0ZXN0Y2Fz ZSAqdGMpCj4gICAgIMKgewo+ICAgICAtwqAgwqAgwqAgwqAvKgo+ICAgICAtwqAgwqAgwqAgwqAg KiBUaW1lciBoYXMgcnVub3V0IGFuZCBjaGlsZCBoYXMgbm90IHNpZ25hbGVkLCBuZWVkCj4gICAg IC3CoCDCoCDCoCDCoCAqIHRvIGtpbGwgb2ZmIHRoZSBjaGlsZCBhcyBpdCBhcHBlYXJzIGl0IHdp bGwgbm90Cj4gICAgIC3CoCDCoCDCoCDCoCAqIG9uIGl0cyBvd24gYWNjb3JkLiBDaGVjayB0aGF0 IGl0IGlzIHN0aWxsIGFyb3VuZAo+ICAgICAtwqAgwqAgwqAgwqAgKiBhcyBpdCBtYXkgaGF2ZSB0 ZXJtaW5hdGVkIGFibm9ybWFsbHkgd2hpbGUgcGFyZW50Cj4gICAgIC3CoCDCoCDCoCDCoCAqIHdh cyB3YWl0aW5nIGZvciBTSUdVU1IxIHNpZ25hbCBmcm9tIGl0Lgo+ICAgICAtwqAgwqAgwqAgwqAg Ki8KPiAgICAgLcKgIMKgIMKgIMKgaWYgKGtpbGwoY2hpbGQsIDApID09IDApIHsKPiAgICAgLcKg IMKgIMKgIMKgIMKgIMKgIMKgIMKga2lsbChjaGlsZCwgU0lHS0lMTCk7Cj4gICAgIC3CoCDCoCDC oCDCoCDCoCDCoCDCoCDCoHBlcnJvcigiVGhlIGNoaWxkIGRpZG5vdCB0ZXJtaW5hdGUgb24gaXRz IG93bgo+ICAgICBhY2NvcmQiKTsKPiAgICAgLcKgIMKgIMKgIMKgfQo+ICAgICArwqAgwqAgwqAg wqB0c3RfcmVzKFRJTkZPLCAiU3RhcnRpbmcgcmVhZC93cml0ZSBwb3NpdGlvbjogJWxkIiwgdGMt PnBvcyk7Cj4gICAgICsKPiAgICAgK8KgIMKgIMKgIMKgdHN0X3JlcyhUSU5GTywKPiAgICAgK8Kg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIlBhcmVudDogdHlwZT0lcyB3aGVuY2U9JXMgc3RhcnQ9JWxk IGxlbj0lbGQiLAo+ICAgICArwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB0Yy0+cGFyZW50LnR5cGUg PT0gRl9SRExDSyA/ICJGX1JETENLIiA6ICJGX1dSTENLIiwKPiAgICAgK8KgIMKgIMKgIMKgIMKg IMKgIMKgIMKgdGMtPnBhcmVudC53aGVuY2UgPT0gU0VFS19TRVQgPyAiU0VFS19TRVQiIDoKPiAg ICAgIlNFRUtfQ1VSIiwKPiAgICAgK8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgdGMtPnBhcmVudC5z dGFydCwKPiAgICAgK8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgdGMtPnBhcmVudC5sZW4pOwo+ICAg ICArCj4gICAgICvCoCDCoCDCoCDCoHRzdF9yZXMoVElORk8sCj4gICAgICvCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCJDaGlsZDogdHlwZT0lcyB3aGVuY2U9JXMgc3RhcnQ9JWxkIGxlbj0lbGQiLAo+ ICAgICArwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB0Yy0+Y2hpbGQudHlwZSA9PSBGX1JETENLID8g IkZfUkRMQ0siIDogIkZfV1JMQ0siLAo+ICAgICArwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB0Yy0+ Y2hpbGQud2hlbmNlID09IFNFRUtfU0VUID8gIlNFRUtfU0VUIiA6Cj4gICAgICJTRUVLX0NVUiIs Cj4gICAgICvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHRjLT5jaGlsZC5zdGFydCwKPiAgICAgK8Kg IMKgIMKgIMKgIMKgIMKgIMKgIMKgdGMtPmNoaWxkLmxlbik7Cj4gICAgICsKPiAgICAgK8KgIMKg IMKgIMKgdHN0X3JlcyhUSU5GTywgIkV4cGVuY3RlZCAlcyB0ZXN0IiwKPiAgICAgK8KgIMKgIMKg IMKgIMKgIMKgIMKgIMKgdGMtPmJsb2NraW5nID8gImJsb2NraW5nIiA6ICJub24tYmxvY2tpbmci KTsKPiAgICAgwqB9Cj4KPiAgICAgLXZvaWQgY2F0Y2gxKGludCBzaWcpCj4gICAgICtzdGF0aWMg dm9pZCBydW4odm9pZCkKPiAgICAgwqB7Cj4gICAgIC3CoCDCoCDCoCDCoHN0cnVjdCBzaWdhY3Rp b24gYWN0Owo+ICAgICArwqAgwqAgwqAgwqBzdHJ1Y3QgdGVzdGNhc2UgdGM7Cj4KPiAgICAgLcKg IMKgIMKgIMKgLyoKPiAgICAgLcKgIMKgIMKgIMKgICogU2V0IGZsYWcgdG8gbGV0IHBhcmVudCBr bm93IHRoYXQgY2hpbGQgaXMgcmVhZHkgdG8gaGF2ZQo+ICAgICBsb2NrCj4gICAgIC3CoCDCoCDC oCDCoCAqIHJlbW92ZWQKPiAgICAgLcKgIMKgIMKgIMKgICovCj4gICAgIC3CoCDCoCDCoCDCoG1l bXNldCgmYWN0LCAwLCBzaXplb2YoYWN0KSk7Cj4gICAgIC3CoCDCoCDCoCDCoGFjdC5zYV9oYW5k bGVyID0gY2F0Y2gxOwo+ICAgICAtwqAgwqAgwqAgwqBzaWdlbXB0eXNldCgmYWN0LnNhX21hc2sp Owo+ICAgICAtwqAgwqAgwqAgwqBzaWdhZGRzZXQoJmFjdC5zYV9tYXNrLCBTSUdVU1IxKTsKPiAg ICAgLcKgIMKgIMKgIMKgc2lnYWN0aW9uKFNJR1VTUjEsICZhY3QsIE5VTEwpOwo+ICAgICAtwqAg wqAgwqAgwqBnb3QxKys7Cj4gICAgIC19Cj4gICAgICvCoCDCoCDCoCDCoGZvciAoaW50IGkgPSAw OyBpIDwgb3BfbnVtczsgaSsrKSB7Cj4gICAgICvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGdlbnRl c3RjYXNlKCZ0Yyk7Cj4KPiAgICAgLXN0YXRpYyB2b2lkIHRlc3RjaGVja19lbmQoaW50IGNoZWNr X2ZhaWwsIGNoYXIgKm1zZykKPiAgICAgLXsKPiAgICAgLcKgIMKgIMKgIMKgaWYgKGNoZWNrX2Zh aWwpCj4gICAgIC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHRzdF9yZXNtKFRGQUlMLCAiJXMgRkFJ TEVEIiwgbXNnKTsKPiAgICAgLcKgIMKgIMKgIMKgZWxzZQo+ICAgICAtwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqB0c3RfcmVzbShUUEFTUywgIiVzIFBBU1NFRCIsIG1zZyk7Cj4gICAgICvCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoGlmICh2ZXJib3NlKQo+ICAgICArwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqBwcmludF90ZXN0Y2FzZSgmdGMpOwo+ICAgICArCj4gICAgICvCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoHRzdF9yZXMoVElORk8sICJSdW5uaW5nIHRlc3QgIyV1IiwgaSk7Cj4g ICAgICvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHJ1bl90ZXN0Y2FzZSgmdGMsIGZpbGVfbW9kZSk7 Cj4gICAgICvCoCDCoCDCoCDCoH0KPiAgICAgwqB9Cj4KPiAgICAgLWludCBtYWluKGludCBhYywg Y2hhciAqKmF2KQo+ICAgICArc3RhdGljIHZvaWQgc2V0dXAodm9pZCkKPiAgICAgwqB7Cj4gICAg IC3CoCDCoCDCoCDCoGludCBsYzsKPiAgICAgLQo+ICAgICAtwqAgwqAgwqAgwqB0c3RfcGFyc2Vf b3B0cyhhYywgYXYsIE5VTEwsIE5VTEwpOwo+ICAgICAtI2lmZGVmIFVDTElOVVgKPiAgICAgLcKg IMKgIMKgIMKgYXJndjAgPSBhdlswXTsKPiAgICAgLQo+ICAgICAtwqAgwqAgwqAgwqBtYXliZV9y dW5fY2hpbGQoJmRvX3VzbGVlcF9jaGlsZCwgIm5kIiwgMSwgJnBhcmVudCk7Cj4gICAgIC3CoCDC oCDCoCDCoHRoaXNjYXNlID0gbWFsbG9jKHNpemVvZih0ZXN0Y2FzZSkpOwo+ICAgICAtCj4gICAg IC3CoCDCoCDCoCDCoG1heWJlX3J1bl9jaGlsZCgmZG9jaGlsZCwgIm5kZGRkZGRkZGQiLCAyLCAm dGhpc2Nhc2UtPmNfdHlwZSwKPiAgICAgLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgJnRoaXNjYXNlLT5jX3doZW5jZSwgJnRoaXNjYXNlLT5jX3N0YXJ0LAo+ICAgICAtwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAmdGhpc2Nhc2UtPmNfbGVuLCAmdGhpc2Nhc2Ut PmNfZmxhZywKPiAgICAgJnRoaXNjYXNlLT5hX3R5cGUsCj4gICAgIC3CoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCZmZCwgJnRlc3QsICZwYXJlbnQpOwo+ICAgICAtI2VuZGlmCj4g ICAgIC0KPiAgICAgLcKgIMKgIMKgIMKgc2V0dXAoKTsKPiAgICAgLQo+ICAgICAtwqAgwqAgwqAg wqBpZiAodHN0X2ZzX3R5cGUoY2xlYW51cCwgIi4iKSA9PSBUU1RfTkZTX01BR0lDKQo+ICAgICAt wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBOT19ORlMgPSAwOwo+ICAgICAtCj4gICAgIC3CoCDCoCDC oCDCoGZvciAobGMgPSAwOyBURVNUX0xPT1BJTkcobGMpOyBsYysrKSB7Cj4gICAgIC3CoCDCoCDC oCDCoCDCoCDCoCDCoCDCoHRzdF9jb3VudCA9IDA7Cj4gICAgIC0KPiAgICAgLS8qIC8vYmxvY2sx OiAqLwo+ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB0c3RfcmVzbShUSU5GTywgIkVudGVy IGJsb2NrIDE6IHdpdGhvdXQgbWFuZGF0b3J5Cj4gICAgIGxvY2tpbmciKTsKPiAgICAgLcKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgZmFpbCA9IDA7Cj4gICAgIC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDC oC8qCj4gICAgIC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAqIHRyeSB2YXJpb3VzIGZpbGUgbG9j a3Mgb24gYW4gb3JkaW5hcnkgZmlsZSB3aXRob3V0Cj4gICAgIC3CoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCAqIG1hbmRhdG9yeSBsb2NraW5nCj4gICAgIC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAq Lwo+ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAodm9pZClydW5fdGVzdChPX0NSRUFUIHwg T19SRFdSIHwgT19UUlVOQywgMDc3NywKPiAgICAgMCwgMCwgMzYpOwo+ICAgICAtwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqB0ZXN0Y2hlY2tfZW5kKGZhaWwsICJCbG9jayAxLCB0ZXN0IDEiKTsKPiAg ICAgLQo+ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAvKiBOb3cgdHJ5IHdpdGggbmVnYXRp dmUgdmFsdWVzIGZvciBMX3N0YXJ0IGFuZAo+ICAgICBMX2xlbiAqLwo+ICAgICAtwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAodm9pZClydW5fdGVzdChPX0NSRUFUIHwgT19SRFdSIHwgT19UUlVOQywg MDc3NywKPiAgICAgNSwgMzYsIDQ1KTsKPiAgICAgLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgdGVz dGNoZWNrX2VuZChmYWlsLCAiQmxvY2sgMSwgdGVzdCAyIik7Cj4gICAgIC0KPiAgICAgLcKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgdHN0X3Jlc20oVElORk8sICJFeGl0IGJsb2NrIDEiKTsKPiAgICAg LQo+ICAgICAtLyogLy9ibG9jazI6ICovCj4gICAgIC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoC8q Cj4gICAgIC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAqIFNraXAgYmxvY2syIGlmIHRlc3Qgb24g TkZTLCBzaW5jZSBORlMgZG9lcyBub3QKPiAgICAgc3VwcG9ydAo+ICAgICAtwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgKiBtYW5kYXRvcnkgbG9ja2luZwo+ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgKi8KPiAgICAgLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgdHN0X3Jlc20oVElORk8sICJF bnRlciBibG9jayAyOiB3aXRoIG1hbmRhdG9yeQo+ICAgICBsb2NraW5nIik7Cj4gICAgIC3CoCDC oCDCoCDCoCDCoCDCoCDCoCDCoGlmIChOT19ORlMpIHsKPiAgICAgLcKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgZmFpbCA9IDA7Cj4gICAgIC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoC8qCj4gICAgIC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCAqIFRyeSB2YXJpb3VzIGxvY2tzIG9uIGEgZmlsZSB3aXRoIG1hbmRhdG9yeQo+ICAgICAtwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgKiByZWNvcmQgbG9ja2luZyB0aGlzIHNo b3VsZCBiZWhhdmUgdGhlIHNhbWUKPiAgICAgLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgICogYXMgYW4gb3JkaW5hcnkgZmlsZQo+ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgKi8KPiAgICAgLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgKHZvaWQpcnVuX3Rlc3QoT19DUkVBVCB8IE9fUkRXUiB8IE9fVFJVTkMsCj4gICAgIC3CoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoFNfRU5GTVQgfCBTX0lS VVNSIHwgU19JV1VTUiwgMCwgMCwKPiAgICAgMzYpOwo+ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqB0ZXN0Y2hlY2tfZW5kKGZhaWwsICJCbG9jayAyLCB0ZXN0IDEiKTsK PiAgICAgLQo+ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAvKiBOb3cg dHJ5IG5lZ2F0aXZlIHZhbHVlcyBmb3IgTF9zdGFydCBhbmQKPiAgICAgTF9sZW4gKi8KPiAgICAg LcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgKHZvaWQpcnVuX3Rlc3QoT19DUkVB VCB8IE9fUkRXUiB8IE9fVFJVTkMsCj4gICAgIC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoFNfRU5GTVQgfCBTX0lSVVNSIHwgU19JV1VTUiwgNSwKPiAgICAg MzYsIDQ1KTsKPiAgICAgLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgdGVzdGNo ZWNrX2VuZChmYWlsLCAiQmxvY2sgMiwgdGVzdCAyIik7Cj4gICAgIC3CoCDCoCDCoCDCoCDCoCDC oCDCoCDCoH0gZWxzZSB7Cj4gICAgIC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oHRzdF9yZXNtKFRDT05GLCAiU2tpcCBibG9jayAyIGFzIE5GUyBkb2VzIG5vdCIKPiAgICAgLcKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIiBzdXBwb3J0IG1h bmRhdG9yeSBsb2NraW5nIik7Cj4gICAgIC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoH0KPiAgICAg LQo+ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB0c3RfcmVzbShUSU5GTywgIkV4aXQgYmxv Y2sgMiIpOwo+ICAgICAtCj4gICAgIC0vKiAvL2Jsb2NrMzogKi8KPiAgICAgLcKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgdHN0X3Jlc20oVElORk8sICJFbnRlciBibG9jayAzIik7Cj4gICAgIC3CoCDC oCDCoCDCoCDCoCDCoCDCoCDCoGZhaWwgPSAwOwo+ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAvKgo+ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgKiBDaGVjayB0aGF0IHByb3BlciBl cnJvciBzdGF0dXMgaXMgcmV0dXJuZWQgd2hlbgo+ICAgICBpbnZhbGlkCj4gICAgIC3CoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCAqIGFyZ3VtZW50IHVzZWQgZm9yIFdIRU5DRSAobmVnYXRpdmUgdmFs dWUpCj4gICAgIC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAqLwo+ICAgICAtCj4gICAgIC3CoCDC oCDCoCDCoCDCoCDCoCDCoCDCoGZkID0gU0FGRV9PUEVOKGNsZWFudXAsIHRtcG5hbWUsIE9fQ1JF QVQgfCBPX1JEV1IKPiAgICAgfCBPX1RSVU5DLAo+ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgMDc3Nyk7Cj4gICAgIC0KPiAgICAgLcKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgaWYgKHdyaXRlKGZkLCBGSUxFREFUQSwgMTApIDwgMCkKPiAgICAgLcKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgdHN0X2Jya20oVEJST0ssIGNsZWFudXAsICJ3 cml0ZSBmYWlsZWQiKTsKPiAgICAgK8KgIMKgIMKgIMKgaW50IGZkOwo+Cj4gICAgIC3CoCDCoCDC oCDCoCDCoCDCoCDCoCDCoGZsb2NrLmxfdHlwZSA9IEZfV1JMQ0s7Cj4gICAgIC3CoCDCoCDCoCDC oCDCoCDCoCDCoCDCoGZsb2NrLmxfd2hlbmNlID0gLTE7Cj4gICAgIC3CoCDCoCDCoCDCoCDCoCDC oCDCoCDCoGZsb2NrLmxfc3RhcnQgPSAwTDsKPiAgICAgLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg ZmxvY2subF9sZW4gPSAwTDsKPiAgICAgK8KgIMKgIMKgIMKgaWYgKHRzdF9wYXJzZV9pbnQoc3Ry X29wX251bXMsICZvcF9udW1zLCAxLCBJTlRfTUFYKSkKPiAgICAgK8KgIMKgIMKgIMKgIMKgIMKg IMKgIMKgdHN0X2JyayhUQlJPSywgIkludmFsaWQgbnVtYmVyIG9mIG9wZXJhdGlvbnMKPiAgICAg JyVzJyIsIHN0cl9vcF9udW1zKTsKPgo+ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBpZiAo KGZjbnRsKGZkLCBGX1NFVExLLCAmZmxvY2spKSA8IDApIHsKPiAgICAgLcKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgaWYgKGVycm5vICE9IEVJTlZBTCkgewo+ICAgICAtwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB0c3RfcmVzbShURkFJTCwg IkV4cGVjdGVkICVkIGdvdCAlZCIsCj4gICAgIC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBFSU5WQUwsIGVycm5vKTsKPiAgICAgLcKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgZmFpbCA9IDE7Cj4g ICAgIC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoH0KPiAgICAgLcKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgfSBlbHNlIHsKPiAgICAgLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgdHN0X3Jlc20oVEZBSUwsICJMb2NrIHN1Y2NlZWRlZCB3aGVuIGl0Cj4gICAgIHNo b3VsZCBoYXZlICIKPiAgICAgLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgICJmYWlsZWQiKTsKPiAgICAgLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgZmFpbCA9IDE7Cj4gICAgIC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoH0KPiAgICAgK8Kg IMKgIMKgIMKgaWYgKGxvY2tpbmdfZmlsZSkgewo+ICAgICArwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqB0c3RfcmVzKFRJTkZPLCAiUmVxdWVzdGVkIG1hbmRhdG9yeSBsb2NraW5nIik7Cj4KPiAgICAg LcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgY2xvc2UoZmQpOwo+ICAgICAtwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqB1bmxpbmsodG1wbmFtZSk7Cj4gICAgIC0KPiAgICAgLcKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgdGVzdGNoZWNrX2VuZChmYWlsLCAiVGVzdCB3aXRoIG5lZ2F0aXZlIHdoZW5jZQo+ICAg ICBsb2NraW5nIik7Cj4gICAgIC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHRzdF9yZXNtKFRJTkZP LCAiRXhpdCBibG9jayAzIik7Cj4gICAgIC0KPiAgICAgLS8qIC8vYmxvY2s0OiAqLwo+ICAgICAt wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB0c3RfcmVzbShUSU5GTywgIkVudGVyIGJsb2NrIDQiKTsK PiAgICAgLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgZmFpbCA9IDA7Cj4gICAgIC3CoCDCoCDCoCDC oCDCoCDCoCDCoCDCoC8qCj4gICAgIC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAqIENoZWNrIHRo YXQgYSBsb2NrIG9uIGVuZCBvZiBmaWxlIGlzIHN0aWxsIHZhbGlkCj4gICAgIHdoZW4KPiAgICAg LcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgICogYWRkaXRpb25hbCBkYXRhIGlzIGFwcGVuZGVkIHRv IGVuZCBvZiBmaWxlIGFuZAo+ICAgICBhIG5ldwo+ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgKiBwcm9jZXNzIGF0dGVtcHRzIHRvIGxvY2sgbmV3IGRhdGEKPiAgICAgLcKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgICovCj4gICAgIC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGZkID0gU0FGRV9P UEVOKGNsZWFudXAsIHRtcG5hbWUsIE9fQ1JFQVQgfCBPX1JEV1IKPiAgICAgfCBPX1RSVU5DLAo+ ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgMDc3Nyk7 Cj4gICAgIC0KPiAgICAgLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgaWYgKHdyaXRlKGZkLCBGSUxF REFUQSwgMTApIDwgMCkKPiAgICAgLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg dHN0X2Jya20oVEJST0ssIGNsZWFudXAsICJ3cml0ZSBmYWlsZWQiKTsKPiAgICAgLQo+ICAgICAt wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB0aGlzY2FzZSA9ICZ0ZXN0Y2FzZXNbNThdOwo+ICAgICAt wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBmbG9jay5sX3R5cGUgPSB0aGlzY2FzZS0+YV90eXBlOwo+ ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBmbG9jay5sX3doZW5jZSA9IHRoaXNjYXNlLT5h X3doZW5jZTsKPiAgICAgLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgZmxvY2subF9zdGFydCA9IHRo aXNjYXNlLT5hX3N0YXJ0Owo+ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBmbG9jay5sX2xl biA9IHRoaXNjYXNlLT5hX2xlbjsKPiAgICAgLQo+ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAvKiBTZXQgdGhlIGluaXRpYWwgcGFyZW50IGxvY2sgb24gdGhlIGZpbGUgKi8KPiAgICAgLcKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgaWYgKChmY250bChmZCwgRl9TRVRMSywgJmZsb2NrKSkgPCAw KSB7Cj4gICAgIC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHRzdF9yZXNtKFRG QUlMLCAiRmlyc3QgcGFyZW50IGxvY2sgZmFpbGVkIik7Cj4gICAgIC3CoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoHRzdF9yZXNtKFRGQUlMLCAiVGVzdCBjYXNlICVkLCBlcnJubyA9 Cj4gICAgICVkIiwgNTgsIGVycm5vKTsKPiAgICAgLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgZmFpbCA9IDE7Cj4gICAgIC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoH0KPiAgICAg LQo+ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAvKiBXcml0ZSBzb21lIGFkZGl0aW9uYWwg ZGF0YSB0byBlbmQgb2YgZmlsZSAqLwo+ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBpZiAo d3JpdGUoZmQsIEZJTEVEQVRBLCAxMCkgPCAwKQo+ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqB0c3RfYnJrbShUQlJPSywgY2xlYW51cCwgIndyaXRlIGZhaWxlZCIpOwo+ ICAgICAtCj4gICAgIC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoC8qIE1hc2sgc2lnbmFsIHRvIGF2 b2lkIHJhY2UgKi8KPiAgICAgLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgaWYgKHNpZ2hvbGQoU0lH VVNSMSkgPCAwKQo+ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB0c3Rf YnJrbShUQlJPSywgY2xlYW51cCwgInNpZ2hvbGQgZmFpbGVkIik7Cj4gICAgIC0KPiAgICAgLcKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgaWYgKChjaGlsZCA9IEZPUktfT1JfVkZPUksoKSkgPT0gMCkg ewo+ICAgICAtI2lmZGVmIFVDTElOVVgKPiAgICAgLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgaWYgKHNlbGZfZXhlYyhhcmd2MCwgIm5kZGRkZGRkZGQiLCAyLAo+ICAgICB0aGlz Y2FzZS0+Y190eXBlLAo+ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqB0aGlzY2FzZS0+Y193aGVuY2UsCj4gICAgIHRoaXNjYXNlLT5j X3N0YXJ0LAo+ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqB0aGlzY2FzZS0+Y19sZW4sCj4gICAgIHRoaXNjYXNlLT5jX2ZsYWcsCj4g ICAgIC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoHRoaXNjYXNlLT5hX3R5cGUsIGZkLCB0ZXN0LAo+ICAgICBwYXJlbnQpIDwgMCkgewo+ICAg ICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB0c3RfcmVz bShURkFJTCwgInNlbGZfZXhlYyBmYWlsZWQiKTsKPiAgICAgLcKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgY2xlYW51cCgpOwo+ICAgICAtwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB9Cj4gICAgIC0jZWxzZQo+ICAgICAtwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBkb2NoaWxkKCk7Cj4gICAgIC0jZW5kaWYKPiAgICAgLcKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgfQo+ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBpZiAo Y2hpbGQgPCAwKQo+ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB0c3Rf YnJrbShUQlJPS3xURVJSTk8sIGNsZWFudXAsICJGb3JrCj4gICAgIGZhaWxlZCIpOwo+ICAgICAt Cj4gICAgIC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoC8qCj4gICAgIC3CoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCAqIFdhaXQgZm9yIGEgc2lnbmFsIGZyb20gdGhlIGNoaWxkIHRoZW4gcmVtb3ZlCj4g ICAgIGJsb2NraW5nIGxvY2suCj4gICAgIC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAqIFNldCBh IDYwIHNlYyBhbGFybSB0byBicmVhayB0aGUgcGF1c2UganVzdCBpbgo+ICAgICBjYXNlIHRoZQo+ ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgKiBjaGlsZCBkb2Vzbid0IHRlcm1pbmF0ZSBv biBpdHMgb3duIGFjY29yZAo+ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgKi8KPiAgICAg LcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgKHZvaWQpYWxhcm0oVElNRV9PVVQpOwo+ICAgICAtCj4g ICAgIC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCh2b2lkKXNpZ3BhdXNlKFNJR1VTUjEpOwo+ICAg ICAtCj4gICAgIC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoC8qIHR1cm4gb2ZmIHRoZSBhbGFybSB0 aW1lciAqLwo+ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAodm9pZClhbGFybSgodW5zaWdu ZWQpMCk7Cj4gICAgIC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGlmIChnb3QxICE9IDEpIHsKPiAg ICAgLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgdHN0X3Jlc20oVElORk8sICJQ YXVzZSB0ZXJtaW5hdGVkIHdpdGhvdXQKPiAgICAgc2lnbmFsICIKPiAgICAgLcKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgICJTSUdVU1IxIGZyb20gY2hpbGQi KTsKPiAgICAgLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgfQo+ICAgICAtwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqBnb3QxID0gMDsKPiAgICAgLQo+ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAv Kgo+ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgKiBTZXQgdXAgbG9jayBzdHJ1Y3R1cmUg Zm9yIHBhcmVudCB0byBkZWxldGUKPiAgICAgLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgICogYmxv Y2tpbmcgbG9jayB0aGVuIHdhaXQgZm9yIGNoaWxkIHRvIGV4aXQKPiAgICAgLcKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgICovCj4gICAgIC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGZsb2NrLmxfdHlw ZSA9IEZfVU5MQ0s7Cj4gICAgIC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGZsb2NrLmxfd2hlbmNl ID0gMDsKPiAgICAgLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgZmxvY2subF9zdGFydCA9IDBMOwo+ ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBmbG9jay5sX2xlbiA9IDBMOwo+ICAgICAtwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqBpZiAoKGZjbnRsKGZkLCBGX1NFVExLLCAmZmxvY2spKSA8IDAp IHsKPiAgICAgLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgdHN0X3Jlc20oVEZB SUwsICJBdHRlbXB0IHRvIHJlbGVhc2UgcGFyZW50Cj4gICAgIGxvY2sgIgo+ICAgICAtwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgImZhaWxlZCIpOwo+ICAg ICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB0c3RfcmVzbShURkFJTCwgIlRl c3QgY2FzZSAlZCwgZXJybm8gPQo+ICAgICAlZCIsIHRlc3QgKyAxLAo+ICAgICAtwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZXJybm8pOwo+ICAgICAtwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBmYWlsID0gMTsKPiAgICAgLcKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgfQo+ICAgICAtCj4gICAgIC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoC8q Cj4gICAgIC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAqIHNldCBhIDYwIHNlYyBhbGFybSB0byBi cmVhayB0aGUgd2FpdCBqdXN0IGluCj4gICAgIGNhc2UgdGhlCj4gICAgIC3CoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCAqIGNoaWxkIGRvZXNuJ3QgdGVybWluYXRlIG9uIGl0cyBvd24gYWNjb3JkCj4g ICAgIC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAqLwo+ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAodm9pZClhbGFybShUSU1FX09VVCk7Cj4gICAgIC0KPiAgICAgLcKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgd2FpdHBpZChjaGlsZCwgJnN0YXR1cywgMCk7Cj4gICAgIC3CoCDCoCDCoCDCoCDC oCDCoCDCoCDCoGlmIChXRVhJVFNUQVRVUyhzdGF0dXMpICE9IDApIHsKPiAgICAgLcKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgZmFpbCA9IDE7Cj4gICAgIC3CoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoHRzdF9yZXNtKFRGQUlMLCAiY2hpbGQgcmV0dXJuZWQgYmFk IGV4aXQKPiAgICAgc3RhdHVzIik7Cj4gICAgIC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoH0KPiAg ICAgK8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgZmlsZV9tb2RlID0gU19FTkZNVCB8IDA2MDA7Cj4g ICAgICvCoCDCoCDCoCDCoH0KPgo+ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAvKiB0dXJu IG9mZiB0aGUgYWxhcm0gY2xvY2sgKi8KPiAgICAgLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgKHZv aWQpYWxhcm0oKHVuc2lnbmVkKTApOwo+ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBpZiAo c3RhdHVzICE9IDApIHsKPiAgICAgLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg dHN0X3Jlc20oVEZBSUwsICJjaGlsZCByZXR1cm5lZCBzdGF0dXMKPiAgICAgMHgleCIsIHN0YXR1 cyk7Cj4gICAgIC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGZhaWwgPSAxOwo+ ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB9Cj4gICAgIC3CoCDCoCDCoCDCoCDCoCDCoCDC oCDCoGNsb3NlKGZkKTsKPiAgICAgLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgdW5saW5rKHRtcG5h bWUpOwo+ICAgICArwqAgwqAgwqAgwqBmZCA9IFNBRkVfT1BFTihmaWxlcGF0aCwgT19DUkVBVCB8 IE9fUkRXUiB8IE9fVFJVTkMsIDA3NzcpOwo+ICAgICArwqAgwqAgwqAgwqBTQUZFX1dSSVRFKFNB RkVfV1JJVEVfQUxMLCBmZCwgZmlsZWRhdGEsIHN0cmxlbihmaWxlZGF0YSkpOwo+ICAgICArwqAg wqAgwqAgwqBTQUZFX0NMT1NFKGZkKTsKPgo+ICAgICAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB0 ZXN0Y2hlY2tfZW5kKGZhaWwsICJUZXN0IG9mIGxvY2tzIG9uIGZpbGUiKTsKPiAgICAgLcKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgdHN0X3Jlc20oVElORk8sICJFeGl0IGJsb2NrIDQiKTsKPiAgICAg LcKgIMKgIMKgIMKgfQo+ICAgICAtwqAgwqAgwqAgwqBjbGVhbnVwKCk7Cj4gICAgIC3CoCDCoCDC oCDCoHRzdF9leGl0KCk7Cj4gICAgICvCoCDCoCDCoCDCoHNyYW5kKHRpbWUoMCkpOwo+ICAgICDC oH0KPiAgICAgKwo+ICAgICArc3RhdGljIHN0cnVjdCB0c3RfdGVzdCB0ZXN0ID0gewo+ICAgICAr wqAgwqAgwqAgwqAudGVzdF9hbGwgPSBydW4sCj4gICAgICvCoCDCoCDCoCDCoC5zZXR1cCA9IHNl dHVwLAo+ICAgICArwqAgwqAgwqAgwqAuZm9ya3NfY2hpbGQgPSAxLAo+ICAgICArwqAgwqAgwqAg wqAubmVlZHNfdG1wZGlyID0gMSwKPiAgICAgK8KgIMKgIMKgIMKgLm9wdGlvbnMgPSAoc3RydWN0 IHRzdF9vcHRpb25bXSkgewo+ICAgICArwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB7ICJuOiIsICZz dHJfb3BfbnVtcywgIlRvdGFsICMgb3BlcmF0aW9ucyB0byBkbwo+ICAgICAoZGVmYXVsdCAxMDAp IiB9LAo+ICAgICArwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB7ICJsIiwgJmxvY2tpbmdfZmlsZSwg IlNldCBsb2NraW5nIGZsYWcgb24gZmlsZSIgfSwKPiAgICAgK8KgIMKgIMKgIMKgIMKgIMKgIMKg IMKgeyAidiIsICZ2ZXJib3NlLCAiVmVyYm9zZSBtb2RlIHNob3dpbmcgZGVidWcKPiAgICAgbWVz c2FnZXMiIH0sCj4gICAgICvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHt9LAo+ICAgICArwqAgwqAg wqAgwqB9LAo+ICAgICArwqAgwqAgwqAgwqAuc2tpcF9maWxlc3lzdGVtcyA9IChjb25zdCBjaGFy ICpjb25zdCBbXSkgewo+ICAgICArwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAibmZzIiwKPiAgICAg K8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgTlVMTAo+ICAgICArwqAgwqAgwqAgwqB9LAo+ICAgICAr fTsKPiAgICAgLS0gCj4gICAgIDIuMzUuMwo+Cj4KPiAgICAgLS0gCj4gICAgIE1haWxpbmcgbGlz dCBpbmZvOiBodHRwczovL2xpc3RzLmxpbnV4Lml0L2xpc3RpbmZvL2x0cAo+Cj4KPgo+IC0tIAo+ IFJlZ2FyZHMsCj4gTGkgV2FuZwoKQW5kcmVhCgotLSAKTWFpbGluZyBsaXN0IGluZm86IGh0dHBz Oi8vbGlzdHMubGludXguaXQvbGlzdGluZm8vbHRwCg==