Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1qFzdp-00078n-Jb for pgsql-hackers@arkaria.postgresql.org; Sun, 02 Jul 2023 16:09:38 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1qFzdm-0007qk-Q9 for pgsql-hackers@arkaria.postgresql.org; Sun, 02 Jul 2023 16:09:34 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1qFzdl-0007pe-KD for pgsql-hackers@lists.postgresql.org; Sun, 02 Jul 2023 16:09:34 +0000 Received: from mail-wr1-x42f.google.com ([2a00:1450:4864:20::42f]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1qFzdV-001e6c-PV for pgsql-hackers@lists.postgresql.org; Sun, 02 Jul 2023 16:09:31 +0000 Received: by mail-wr1-x42f.google.com with SMTP id ffacd0b85a97d-31297125334so3030186f8f.0 for ; Sun, 02 Jul 2023 09:09:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb.com; s=google; t=1688314155; x=1690906155; h=in-reply-to:references:to:from:content-language:subject:user-agent :mime-version:date:message-id:from:to:cc:subject:date:message-id :reply-to; bh=ucSCqIW7Dkk5F1syyxsDrCCCZxg3MCb29HKdgcgfrpQ=; b=WeSR3xpe+3Pj4y6rMoYfzX1OfBJhaPAkanZKYQZKvgYkysCpYI3DSz3bHvSy71Quwq PhsNysRu4Am3YEsn5vHYsr20XP0oH3lM4PoeHR5kx/aanG4c28ILBD48sGGZ781HmUUo Y/UzSaMjSv/NO29dG17Q/m/FajKGmmh6B47E1nJpGyysnFbdwbJBHp1LY4cvXUozYtoz 0342Hr79K/nmVxE4qc/Jf8tATw4pWE338pPqn1LxQRgDxvmBlny+Kqi2g7dpi98coROS uJJuejwsMURibSG6MaBWQigHz8LlIc1+kf3LRS58dGx0fCgiX+fua2vVDzN//RBBPdYY jKTg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1688314155; x=1690906155; h=in-reply-to:references:to:from:content-language:subject:user-agent :mime-version:date:message-id:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to; bh=ucSCqIW7Dkk5F1syyxsDrCCCZxg3MCb29HKdgcgfrpQ=; b=NFUjoZBHbmYuM+oc6std2p1h2GngrO8oD+iOeajxUOrETbvDqfjw3q9RcHebOmhdKF PVLCd6Y5DGZu7fJF3P7TUg9Qyg56pZnhKeGV9+CXcPvSTb7O/0ImbTfJjq7yOmA7o8dI Zp/VfItpjlPlZb7myFQJ2yF5bs9lIYn01p/Nr52Af94u1Ho/cokA1YXEB+lPglo9sc2U D4lKTTcALumcgirNSoBVGZwY0zGH9zPg2kaX5Hu3yPdQtnK/tys458R2D6b/pN80ETpg 3OsGS/thkqeh8yxkL76ryS67M/lUZ95JWWlaHTxiAA6OzC9suus9vV1nROQFJVONTl6O 8o6A== X-Gm-Message-State: ABy/qLb8PEuzft9zTV8YSQgQ5TtSyEdvRb+rJw7puDi2Qd2X73dO4hVp +PK5SoR1RmqtnMWTGQDmBBY+2Zy47iGX9JKhgEw= X-Google-Smtp-Source: APBJJlH8CmpODEYg1aWyaMCBMZrzRk0IppbXXEerHP8rsYfzvahgeAJ1ltqxyOCeBTb320pK8QolPA== X-Received: by 2002:adf:ead1:0:b0:314:2f3e:dca5 with SMTP id o17-20020adfead1000000b003142f3edca5mr2817479wrn.28.1688314155082; Sun, 02 Jul 2023 09:09:15 -0700 (PDT) Received: from [10.137.0.17] (ip-86-49-228-220.bb.vodafone.cz. [86.49.228.220]) by smtp.gmail.com with ESMTPSA id z11-20020adfe54b000000b0031128382ed0sm4351257wrm.83.2023.07.02.09.09.13 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 02 Jul 2023 09:09:14 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------K3kYSMhKEHYIXFtmkUtXAdlw" Message-ID: <856edf2c-8e95-0a8f-5a37-c8564a770a82@enterprisedb.com> Date: Sun, 2 Jul 2023 18:09:12 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.12.0 Subject: Re: BRIN indexes vs. SK_SEARCHARRAY (and preprocessing scan keys) Content-Language: en-US From: Tomas Vondra To: Heikki Linnakangas , PostgreSQL Hackers References: <0e1f3350-c9cf-ab62-43a5-5dae314de89c@enterprisedb.com> <57020b2e-d9c9-9bc7-4892-b36d9bb07563@enterprisedb.com> <327064f1-276e-cb45-88c2-1ff498037cf5@enterprisedb.com> <4fa33caf-b5d1-6887-65a9-82ce9d92765c@enterprisedb.com> <1701e986-fa32-f3fa-0ac8-39fae8e5db35@enterprisedb.com> In-Reply-To: <1701e986-fa32-f3fa-0ac8-39fae8e5db35@enterprisedb.com> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------K3kYSMhKEHYIXFtmkUtXAdlw Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Here's an updated version of the patch series. I've polished and pushed the first three patches with cleanup, tests to improve test coverage and so on. I chose not to backpatch those - I planned to do that to make future backpatches simpler, but the changes ended up less disruptive than expected. The remaining patches are just about adding SK_SEARCHARRAY to BRIN. 0001 - adds the optional preprocess procedure, calls it from brinrescan 0002 to 0005 - adds the support to the existing BRIN opclasses The main open question I have is what exactly does it mean that the procedure is optional. In particular, should it be supported to have a BRIN opclass without the "preprocess" procedure but using the other built-in support procedures? For example, imagine you have a custom BRIN opclass in an extension (for a custom data type or something). This does not need to implement any procedures, it can just call the existing built-in ones. Of course, this won't get the "preprocess" procedure automatically. Should we support such opclasses or should we force the extension to be updated by adding a preprocess procedure? I'd say "optional" means we should support (otherwise it'd not really optional). The reason why this matters is that "amsearcharray" is AM-level flag, but the support procedure is defined by the opclass. So the consistent function needs to handle SK_SEARCHARRAY keys both with and without preprocessing. That's mostly what I did for all existing BRIN opclasses (it's a bit confusing that opclass may refer to both the "generic" minmax or the opclass defined for a particular data type). All the opclasses now handle three cases: 1) scalar keys (just like before, with amsearcharray=fase) 2) array keys with preprocessing (sorted array, array of hashes, ...) 3) array keys without preprocessing (for compatibility with old opclasses missing the optional preprocess procedure) The current code is a bit ugly, because it duplicates a bunch of code, because the option (3) mostly does (1) in a loop. I'm confident this can be reduced by refactoring and reusing some of the "shared" code. The question is if my interpretation of what "optional" procedure means is reasonable. Thoughts? The other thing is how to test this "compatibility" code. I assume we want to have the procedure for all built-in opclasses, so that won't exercise it. I did test it by temporarily removing the procedure from a couple pg_amproc.dat entries. I guess creating a custom opclass in the regression test is the right solution. regards -- Tomas Vondra EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company --------------K3kYSMhKEHYIXFtmkUtXAdlw Content-Type: text/x-patch; charset=UTF-8; name="0001-Introduce-BRIN_PROCNUM_PREPROCESS-procedure-20230702.patch" Content-Disposition: attachment; filename*0="0001-Introduce-BRIN_PROCNUM_PREPROCESS-procedure-20230702.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAyZjJmMDExYTMyNTY3MjRhZjY1OGY4N2IwMzBmMWJmZDAxN2EyMzVkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzQDJuZHF1YWRyYW50 LmNvbT4KRGF0ZTogVHVlLCAxNCBGZWIgMjAyMyAyMDoyOTozMyArMDEwMApTdWJqZWN0OiBb UEFUQ0ggMS81XSBJbnRyb2R1Y2UgQlJJTl9QUk9DTlVNX1BSRVBST0NFU1MgcHJvY2VkdXJl CgpBbGxvdyBCUklOIG9wY2xhc3NlcyB0byBkZWZpbmUgYW4gb3B0aW9uYWwgcHJvY2VkdXJl IHRvIHByZXByb2Nlc3Mgc2NhbgprZXlzLCBhbmQgY2FsbCBpdCBmcm9tIGJyaW5yZXNjYW4o KS4gVGhpcyBhbGxvd3MgdGhlIG9wY2xhc3MgdG8gbW9kaWZ5CnRoZSBrZXlzIGluIHZhcmlv dXMgd2F5cyAtIHNvcnQgYXJyYXlzLCBjYWxjdWxhdGUgaGFzaGVzLCAuLi4KCk5vdGU6IFRo ZSBwcm9jZWR1cmUgaXMgb3B0aW9uYWwsIHNvIGV4aXN0aW5nIG9wY2xhc3NlcyBkb24ndCBu ZWVkIHRvIGFkZAppdC4gQnV0IGlmIGl0IHVzZXMgdGhlIGV4aXN0aW5nIEJSSU5fUFJPQ05V TV9DT05TSVNURU5UIGZ1bmN0aW9uLCBpdCdsbApnZXQgYnJva2VuLiBJZiB3ZSB3YW50IHRv IG1ha2UgdGhpcyBiYWNrd2FyZHMtY29tcGF0aWJsZSwgd2UgbWlnaHQgY2hlY2sKaWYgQlJJ Tl9QUk9DTlVNX1BSRVBST0NFU1MgZXhpc3QgZnJvbSBCUklOX1BST0NOVU1fQ09OU0lTVEVO VCwgYW5kCmFkanVzdCBiZWhhdmlvciBiYXNlZCBvbiB0aGF0LgoKVGhlIHRyb3VibGUgaXMg dGhhdCBhbXNlYXJjaGFycmF5PXRydWUgaXMgYXQgdGhlIEFNIGxldmVsLCBzbyBpdCdzIG5v dAplbnRpcmVseSBvcHRpb25hbC4KCkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20v ZjZhYWI1NWMtMzVlYi00MTE4LWE3ZmYtNTcxYzYyZTZjYzM5JTQwZW50ZXJwcmlzZWRiLmNv bQotLS0KIGRvYy9zcmMvc2dtbC94aW5kZXguc2dtbCAgICAgICAgICAgfCAgIDcgKysKIHNy Yy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYyAgICAgfCAxNTQgKysrKysrKysrKysrKysr KysrKysrKysrKysrLS0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9icmluX2ludGVybmFsLmggfCAg IDEgKwogMyBmaWxlcyBjaGFuZ2VkLCAxNTMgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwveGluZGV4LnNnbWwgYi9kb2Mvc3JjL3Nn bWwveGluZGV4LnNnbWwKaW5kZXggYzc1M2Q4MDA1YS4uMTgzYTMwY2ZiNiAxMDA2NDQKLS0t IGEvZG9jL3NyYy9zZ21sL3hpbmRleC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC94aW5kZXgu c2dtbApAQCAtNDY0LDYgKzQ2NCwxMyBAQAogICAgICAgIDwvZW50cnk+CiAgICAgICAgPGVu dHJ5PjU8L2VudHJ5PgogICAgICAgPC9yb3c+CisgICAgICA8cm93PgorICAgICAgIDxlbnRy eT4KKyAgICAgICAgUHJlcHJvY2VzcyBzY2FuIGtleXMgaW4gYSB3YXkgc3BlY2lmaWMgdG8g dGhpcyBvcGVyYXRvciBjbGFzcworICAgICAgICAob3B0aW9uYWwpCisgICAgICAgPC9lbnRy eT4KKyAgICAgICA8ZW50cnk+NjwvZW50cnk+CisgICAgICA8L3Jvdz4KICAgICAgPC90Ym9k eT4KICAgICA8L3Rncm91cD4KICAgIDwvdGFibGU+CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvYnJpbi9icmluLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMK aW5kZXggM2M2YTk1NmVhYS4uMGY3NzNhZDc1ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv YWNjZXNzL2JyaW4vYnJpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4u YwpAQCAtNjAsMTIgKzYwLDI2IEBAIHR5cGVkZWYgc3RydWN0IEJyaW5CdWlsZFN0YXRlCiAK IC8qCiAgKiBTdHJ1Y3QgdXNlZCBhcyAib3BhcXVlIiBkdXJpbmcgaW5kZXggc2NhbnMKKyAq CisgKiBJZiB0aGUgb3BlcmF0b3IgY2xhc3MgcHJlcHJvY2Vzc2VzIHNjYW4ga2V5cywgdGhl IHJlc3VsdHMgYXJlIHN0b3JlZCBpbgorICogYm9fc2NhbktleXMuIEl0J3MgdXAgdG8gdGhl IG9wZXJhdG9yIGNsYXNzIHRvIGRlY2lkZSB3aGljaCBrZXlzIGFyZSB3b3J0aAorICogcHJl cHJvY2Vzc2luZyBhbmQgd2hpY2ggYXJlIHNpbXBseSBjb3BpZWQuCisgKgorICogRWl0aGVy IG5vIGtleXMgYXJlIHByZXByb2Nlc3NlZCAoYW5kIHRlbiBib19zY2FuS2V5cyBpcyBOVUxM KSwgb3IgYWxsIGtleXMKKyAqIGhhdmUgYSBtYXRjaGluZyBlbnRyeSBpbiBib19zY2FuS2V5 cyAoZWl0aGVyIHByZXByb2Nlc3NlZCBvciBhIHBvaW50ZXIgdG8KKyAqIHRoZSBvcmlnaW5h bCBrZXkpLgogICovCiB0eXBlZGVmIHN0cnVjdCBCcmluT3BhcXVlCiB7CiAJQmxvY2tOdW1i ZXIgYm9fcGFnZXNQZXJSYW5nZTsKIAlCcmluUmV2bWFwICpib19ybUFjY2VzczsKIAlCcmlu RGVzYyAgICpib19iZGVzYzsKKworCS8qIHByZXByb2Nlc3NlZCBzY2FuIGtleXMgKi8KKwlp bnQJCQlib19udW1TY2FuS2V5czsJCS8qIG51bWJlciBvZiAocHJlcHJvY2Vzc2VkKSBzY2Fu IGtleXMgKi8KKwlTY2FuS2V5CSAgICpib19zY2FuS2V5czsJCS8qIG1vZGlmaWVkIGNvcHkg b2Ygc2Nhbi0+a2V5RGF0YSAqLworCU1lbW9yeUNvbnRleHQgYm9fc2NhbktleXNDeHQ7CS8q IHNjYW4tbGlmZXNwYW4gY29udGV4dCBmb3Iga2V5IGRhdGEgKi8KKwogfSBCcmluT3BhcXVl OwogCiAjZGVmaW5lIEJSSU5fQUxMX0JMT0NLUkFOR0VTCUludmFsaWRCbG9ja051bWJlcgpA QCAtMzM1LDYgKzM0OSwxMiBAQCBicmluYmVnaW5zY2FuKFJlbGF0aW9uIHIsIGludCBua2V5 cywgaW50IG5vcmRlcmJ5cykKIAlvcGFxdWUtPmJvX3JtQWNjZXNzID0gYnJpblJldm1hcElu aXRpYWxpemUociwgJm9wYXF1ZS0+Ym9fcGFnZXNQZXJSYW5nZSwKIAkJCQkJCQkJCQkJICAg c2Nhbi0+eHNfc25hcHNob3QpOwogCW9wYXF1ZS0+Ym9fYmRlc2MgPSBicmluX2J1aWxkX2Rl c2Mocik7CisKKwkvKiBubyBrZXlzIGFyZSBwcmVwcm9jZXNzZWQgYnkgZGVmYXVsdCAqLwor CW9wYXF1ZS0+Ym9fbnVtU2NhbktleXMgPSAwOworCW9wYXF1ZS0+Ym9fc2NhbktleXMgPSBO VUxMOworCW9wYXF1ZS0+Ym9fc2NhbktleXNDeHQgPSBOVUxMOworCiAJc2Nhbi0+b3BhcXVl ID0gb3BhcXVlOwogCiAJcmV0dXJuIHNjYW47CkBAIC0zNzcsNiArMzk3LDcgQEAgYnJpbmdl dGJpdG1hcChJbmRleFNjYW5EZXNjIHNjYW4sIFRJREJpdG1hcCAqdGJtKQogCWNoYXIJICAg KnB0cjsKIAlTaXplCQlsZW47CiAJY2hhcgkgICAqdG1wIFBHX1VTRURfRk9SX0FTU0VSVFNf T05MWTsKKwlTY2FuS2V5CSAgICpzY2Fua2V5czsKIAogCW9wYXF1ZSA9IChCcmluT3BhcXVl ICopIHNjYW4tPm9wYXF1ZTsKIAliZGVzYyA9IG9wYXF1ZS0+Ym9fYmRlc2M7CkBAIC00NTQs MTAgKzQ3NSwxOCBAQCBicmluZ2V0Yml0bWFwKEluZGV4U2NhbkRlc2Mgc2NhbiwgVElEQml0 bWFwICp0Ym0pCiAJbWVtc2V0KG5rZXlzLCAwLCBzaXplb2YoaW50KSAqIGJkZXNjLT5iZF90 dXBkZXNjLT5uYXR0cyk7CiAJbWVtc2V0KG5udWxsa2V5cywgMCwgc2l6ZW9mKGludCkgKiBi ZGVzYy0+YmRfdHVwZGVzYy0+bmF0dHMpOwogCi0JLyogUHJlcHJvY2VzcyB0aGUgc2NhbiBr ZXlzIC0gc3BsaXQgdGhlbSBpbnRvIHBlci1hdHRyaWJ1dGUgYXJyYXlzLiAqLworCS8qIGdl dCB0aGUgcHJlcHJvY2Vzc2VkIHNjYW4ga2V5cyAoaWYgcHJlc2VudCkgKi8KKwlzY2Fua2V5 cyA9IChvcGFxdWUtPmJvX3NjYW5LZXlzKSA/IG9wYXF1ZS0+Ym9fc2NhbktleXMgOiAmc2Nh bi0+a2V5RGF0YTsKKworCS8qCisJICogUHJlcHJvY2VzcyB0aGUgc2NhbiBrZXlzIC0gc3Bs aXQgdGhlbSBpbnRvIHBlci1hdHRyaWJ1dGUgYXJyYXlzLgorCSAqCisJICogWFhYIEEgYml0 IG1pc2xlYWRpbmcsIGFzIHRoaXMgaXMgYSBkaWZmZXJlbnQga2luZCBvZiBwcmVwcm9jZXNz aW5nIG9mIHRoZQorCSAqIHNjYW4ga2V5cy4KKwkgKi8KIAlmb3IgKGludCBrZXlubyA9IDA7 IGtleW5vIDwgc2Nhbi0+bnVtYmVyT2ZLZXlzOyBrZXlubysrKQogCXsKLQkJU2NhbktleQkJ a2V5ID0gJnNjYW4tPmtleURhdGFba2V5bm9dOworCQlTY2FuS2V5CQlrZXkgPSBzY2Fua2V5 c1trZXlub107CiAJCUF0dHJOdW1iZXIJa2V5YXR0bm8gPSBrZXktPnNrX2F0dG5vOwogCiAJ CS8qCkBAIC03NDcsMTcgKzc3NiwxMjQgQEAgdm9pZAogYnJpbnJlc2NhbihJbmRleFNjYW5E ZXNjIHNjYW4sIFNjYW5LZXkgc2NhbmtleSwgaW50IG5zY2Fua2V5cywKIAkJICAgU2Nhbktl eSBvcmRlcmJ5cywgaW50IG5vcmRlcmJ5cykKIHsKLQkvKgotCSAqIE90aGVyIGluZGV4IEFN cyBwcmVwcm9jZXNzIHRoZSBzY2FuIGtleXMgYXQgdGhpcyBwb2ludCwgb3Igc29tZXRpbWUK LQkgKiBlYXJseSBkdXJpbmcgdGhlIHNjYW47IHRoaXMgbGV0cyB0aGVtIG9wdGltaXplIGJ5 IHJlbW92aW5nIHJlZHVuZGFudAotCSAqIGtleXMsIG9yIGRvaW5nIGVhcmx5IHJldHVybnMg d2hlbiB0aGV5IGFyZSBpbXBvc3NpYmxlIHRvIHNhdGlzZnk7IHNlZQotCSAqIF9idF9wcmVw cm9jZXNzX2tleXMgZm9yIGFuIGV4YW1wbGUuICBTb21ldGhpbmcgbGlrZSB0aGF0IGNvdWxk IGJlIGFkZGVkCi0JICogaGVyZSBzb21lZGF5LCB0b28uCi0JICovCisJQnJpbk9wYXF1ZSAq Ym8gPSAoQnJpbk9wYXF1ZSAqKSBzY2FuLT5vcGFxdWU7CisJUmVsYXRpb24JaWR4UmVsID0g c2Nhbi0+aW5kZXhSZWxhdGlvbjsKKwlNZW1vcnlDb250ZXh0CW9sZGN4dDsKKwlib29sCQkJ cHJlcHJvY2VzcyA9IGZhbHNlOwogCiAJaWYgKHNjYW5rZXkgJiYgc2Nhbi0+bnVtYmVyT2ZL ZXlzID4gMCkKIAkJbWVtbW92ZShzY2FuLT5rZXlEYXRhLCBzY2Fua2V5LAogCQkJCXNjYW4t Pm51bWJlck9mS2V5cyAqIHNpemVvZihTY2FuS2V5RGF0YSkpOworCisJLyoKKwkgKiBVc2Ug dGhlIEJSSU5fUFJPQ05VTV9QUkVQUk9DRVNTIHByb2NlZHVyZSAoaWYgZGVmaW5lZCkgdG8g cHJlcHJvY2VzcworCSAqIHRoZSBzY2FuIGtleXMuIFRoZSBwcm9jZWR1cmUgbWF5IGRvIGFu eXRoaW5nLCBhcyBsb25nIGFzIHRoZSByZXN1bHQKKwkgKiBsb29rcyBsaWtlIGEgU2Nhbktl eS4gSWYgdGhlcmUncyBubyBwcm9jZWR1cmUsIHdlIGtlZXAgdGhlIG9yaWdpbmFsCisJICog c2NhbiBrZXlzLgorCSAqCisJICogV2Ugb25seSBkbyB0aGlzIGlmIHRoZSBvcGNsYXNzIChv ciBhdCBsZWFzdCBvbmUgb2YgdGhlbSwgZm9yIG11bHRpCisJICogY29sdW1uIGluZGV4ZXMp IGRlZmluZXMgQlJJTl9QUk9DTlVNX1BSRVBST0NFU1MgcHJvY2VkdXJlLiBJZiBub25lCisJ ICogb2YgdGhlbSBkb2VzLCBpdCdzIHBvaW50bGVzcyB0byBjcmVhdGUgdGhlIG1lbW9yeSBj b250ZXh0IGV0Yy4KKwkgKgorCSAqIEZJWE1FIFByb2JhYmx5IG5lZWRzIGZpeGVzIHRvIGhh bmRsZSBOVUxMcyBjb3JyZWN0bHkuCisJICoKKwkgKiBYWFggTWF5YmUgd2Ugc2hvdWxkIG5v dCBpZ25vcmUgSVMgTlVMTCBzY2FuIGtleXM/IENvdWxkIGl0IG1ha2Ugc2Vuc2UKKwkgKiB0 byBwcmVwcm9jZXNzIHRob3NlIGluIHNvbWUgd2F5PworCSAqLworCisJLyoKKwkgKiBJbnNw ZWN0IGlmIGF0IGxlYXN0IG9uZSBzY2Fua2V5IGhhcyBCUklOX1BST0NOVU1fUFJFUFJPQ0VT Uy4KKwkgKgorCSAqIE1pZ2h0IHNlZW0gd2FzdGVmdWwsIGFzIHRoaXMgbWF5IHJlcXVpcmUg d2Fsa2luZyB0aGUgc2NhbiBrZXlzIHR3aWNlCisJICogKG5vdyBhbmQgdGhlbiBhbHNvIHRv IGRvIHRoZSBwcmVwcm9jZXNzaW5nKS4gQnV0IHdlIHN0b3Agb24gdGhlIGZpcnN0CisJICog bWF0Y2ggYW5kIHRoZSBudW1iZXIgb2Yga2V5cyBzaG91bGQgYmUgc21hbGwuIFNlZW1zIHdv cnRoIGl0IGlmIHdlCisJICogY2FuIHNraXAgYWxsb2NhdGluZyB0aGUgY29udGV4dC4KKwkg Ki8KKwlmb3IgKGludCBpID0gMDsgaSA8IG5zY2Fua2V5czsgaSsrKQorCXsKKwkJU2Nhbktl eQkJa2V5ID0gJnNjYW4tPmtleURhdGFbaV07CisJCU9pZAkJCXByb2NpZDsKKworCQkvKiBz a2lwIElTIE5VTEwga2V5cyAtIHRoZXJlJ3Mgbm90aGluZyB0byBwcmVwcm9jZXNzICovCisJ CWlmIChrZXktPnNrX2ZsYWdzICYgU0tfSVNOVUxMKQorCQkJY29udGludWU7CisKKwkJLyog ZmV0Y2gga2V5IHByZXByb2Nlc3Mgc3VwcG9ydCBwcm9jZWR1cmUgaWYgc3BlY2lmaWVkICov CisJCXByb2NpZCA9IGluZGV4X2dldHByb2NpZChpZHhSZWwsIGtleS0+c2tfYXR0bm8sCisJ CQkJCQkJCSBCUklOX1BST0NOVU1fUFJFUFJPQ0VTUyk7CisKKwkJLyogZG9uJ3QgbG9vayBm dXJ0aGVyIGlmIHdlIGZvdW5kIGEgcHJlcHJvY2VzcyBwcm9jZWR1cmUgKi8KKwkJaWYgKE9p ZElzVmFsaWQocHJvY2lkKSkKKwkJeworCQkJcHJlcHJvY2VzcyA9IHRydWU7CisJCQlicmVh azsKKwkJfQorCX0KKworCS8qIE5vIGluZGV4IGF0dHJpYnV0ZSBoYXMgcHJlcHJvY2VzcyBw cm9jZWR1cmUgdGhhdCB3ZSBjb3VsZCB1c2UuICovCisJaWYgKCFwcmVwcm9jZXNzKQorCQly ZXR1cm47CisKKwkvKgorCSAqIERvIHRoZSBhY3R1YWwgc2NhbiBrZXkgcHJlcHJvY2Vzc2lu Zy4gSWYgdGhpcyBpcyB0aGUgZmlyc3QgdGltZQorCSAqIHRocm91Z2gsIHdlIG5lZWQgdG8g Y3JlYXRlIHRoZSBtZW1vcnkgY29udGV4dC4gT3RoZXJ3aXNlIHdlIG5lZWQKKwkgKiB0byBy ZXNldCBpdCwgd2hpY2ggdGhyb3dzIGF3YXkgcHJldmlvdXNseSBwcmVwcm9jZXNzZWQga2V5 cy4KKwkgKi8KKwlpZiAoYm8tPmJvX3NjYW5LZXlzQ3h0ID09IE5VTEwpCisJCWJvLT5ib19z Y2FuS2V5c0N4dCA9IEFsbG9jU2V0Q29udGV4dENyZWF0ZShDdXJyZW50TWVtb3J5Q29udGV4 dCwKKwkJCQkJCQkJCQkJCSAgICJCUklOIHNjYW4ga2V5cyBjb250ZXh0IiwKKwkJCQkJCQkJ CQkJCSAgIEFMTE9DU0VUX1NNQUxMX1NJWkVTKTsKKwllbHNlCisJCU1lbW9yeUNvbnRleHRS ZXNldChiby0+Ym9fc2NhbktleXNDeHQpOworCisJb2xkY3h0ID0gTWVtb3J5Q29udGV4dFN3 aXRjaFRvKGJvLT5ib19zY2FuS2V5c0N4dCk7CisKKwliby0+Ym9fc2NhbktleXMgPSBwYWxs b2MwKHNpemVvZihTY2FuS2V5KSAqIG5zY2Fua2V5cyk7CisKKwlmb3IgKGludCBpID0gMDsg aSA8IG5zY2Fua2V5czsgaSsrKQorCXsKKwkJRm1nckluZm8gICAqZmluZm87CisJCVNjYW5L ZXkJCWtleSA9ICZzY2FuLT5rZXlEYXRhW2ldOworCQlPaWQJCQlwcm9jaWQ7CisJCURhdHVt CQlyZXQ7CisKKwkJLyoKKwkJICogSWYgdGhlIHNjYW4gYXJndW1lbnQgaXMgTlVMTCwgbm90 aGluZyB0byBwcmVwcm9jZXNzLgorCQkgKgorCQkgKiBYWFggTWF5YmUgd2Ugc2hvdWxkIGxl YXZlIHRoZXNlIGNoZWNrcyB1cCB0byB0aGUgX3ByZXByb2Nlc3MKKwkJICogcHJvY2VkdXJl cywgaW4gY2FzZSB0aGVyZSdzIHNvbWV0aGluZyBzbWFydCB0aGV5IHdhbiB0byBkbz8KKwkJ ICogQnV0IFNLX0lTTlVMTCBpcyBoYW5kbGVkIGJ5IGJyaW5nZXRiaXRtYXAoKSBzbyBkb2lu ZyBpdCBoZXJlCisJCSAqIHNlZW1zIHJlYXNvbmFibGUuCisJCSAqLworCQlpZiAoa2V5LT5z a19mbGFncyAmIFNLX0lTTlVMTCkKKwkJeworCQkJYm8tPmJvX3NjYW5LZXlzW2ldID0ga2V5 OworCQkJY29udGludWU7CisJCX0KKworCQkvKiBmZXRjaCBrZXkgcHJlcHJvY2VzcyBzdXBw b3J0IHByb2NlZHVyZSBpZiBzcGVjaWZpZWQgKi8KKwkJcHJvY2lkID0gaW5kZXhfZ2V0cHJv Y2lkKGlkeFJlbCwga2V5LT5za19hdHRubywKKwkJCQkJCQkJIEJSSU5fUFJPQ05VTV9QUkVQ Uk9DRVNTKTsKKworCQkvKiBub3Qgc3BlY2lmaWVkLCBqdXN0IHBvaW50IHRvIHRoZSBvcmln aW5hbCBrZXkgKi8KKwkJaWYgKCFPaWRJc1ZhbGlkKHByb2NpZCkpCisJCXsKKwkJCWJvLT5i b19zY2FuS2V5c1tpXSA9IGtleTsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJLyogcHJlcHJv Y2VzcyB0aGUgc2NhbiBrZXkgYW5kIHN0b3JlIHRoZSByZXN1bHQgKi8KKwkJZmluZm8gPSBp bmRleF9nZXRwcm9jaW5mbyhpZHhSZWwsIGtleS0+c2tfYXR0bm8sCisJCQkJCQkJCSAgQlJJ Tl9QUk9DTlVNX1BSRVBST0NFU1MpOworCisJCXJldCA9IEZ1bmN0aW9uQ2FsbDIoZmluZm8s CisJCQkJCQkJUG9pbnRlckdldERhdHVtKGJvLT5ib19iZGVzYyksCisJCQkJCQkJUG9pbnRl ckdldERhdHVtKGtleSkpOworCisJCWJvLT5ib19zY2FuS2V5c1tpXSA9IChTY2FuS2V5KSBE YXR1bUdldFBvaW50ZXIocmV0KTsKKwl9CisKKwlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xk Y3h0KTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9icmluX2lu dGVybmFsLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvYnJpbl9pbnRlcm5hbC5oCmluZGV4IDk3 ZGRjOTI1YjIuLmQ2YTUxZjJiYzQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9i cmluX2ludGVybmFsLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2JyaW5faW50ZXJuYWwu aApAQCAtNzMsNiArNzMsNyBAQCB0eXBlZGVmIHN0cnVjdCBCcmluRGVzYwogI2RlZmluZSBC UklOX1BST0NOVU1fVU5JT04JCQk0CiAjZGVmaW5lIEJSSU5fTUFOREFUT1JZX05QUk9DUwkJ NAogI2RlZmluZSBCUklOX1BST0NOVU1fT1BUSU9OUyAJCTUJLyogb3B0aW9uYWwgKi8KKyNk ZWZpbmUgQlJJTl9QUk9DTlVNX1BSRVBST0NFU1MJCTYJLyogb3B0aW9uYWwgKi8KIC8qIHBy b2NlZHVyZSBudW1iZXJzIHVwIHRvIDEwIGFyZSByZXNlcnZlZCBmb3IgQlJJTiBmdXR1cmUg ZXhwYW5zaW9uICovCiAjZGVmaW5lIEJSSU5fRklSU1RfT1BUSU9OQUxfUFJPQ05VTSAxMQog I2RlZmluZSBCUklOX0xBU1RfT1BUSU9OQUxfUFJPQ05VTQkxNQotLSAKMi40MS4wCgo= --------------K3kYSMhKEHYIXFtmkUtXAdlw Content-Type: text/x-patch; charset=UTF-8; name="0002-Support-SK_SEARCHARRAY-in-BRIN-minmax-20230702.patch" Content-Disposition: attachment; filename*0="0002-Support-SK_SEARCHARRAY-in-BRIN-minmax-20230702.patch" Content-Transfer-Encoding: base64 RnJvbSBmMzUxNDhiNWNhOTE1OGFkMzYxZTBhOWZhMDJmZTBjZDAzZGIyNzlkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRyYUBwb3N0 Z3Jlc3FsLm9yZz4KRGF0ZTogRnJpLCAxMCBGZWIgMjAyMyAxNjowNzo1NyArMDEwMApTdWJq ZWN0OiBbUEFUQ0ggMi81XSBTdXBwb3J0IFNLX1NFQVJDSEFSUkFZIGluIEJSSU4gbWlubWF4 CgpTZXQgImFtc2VhcmNoYXJyYXk9dHJ1ZSIgZm9yIEJSSU4sIGFuZCBleHRlbmQgdGhlIG1p bm1heCBvcGNsYXNzIHRvCmhhbmRsZSBib3RoIHNjYWxhciB2YWx1ZXMgYW5kIGFycmF5cy4g VGhpcyBhbGxvd3MgaGFuZGxpbmcgY29uZGl0aW9ucwoKICAgIC4uLiBXSEVSRSBhIElOICgx LCAyLCA0MywgMjEzMiwgMTM0KQoKICAgIC4uLiBXSEVSRSBhID0gQU5ZKEFSUkFZWzM0LCA0 NSwgLTEsIDIzNF0pCgogICAgLi4uIFdIRVJFIGEgPD0gQU5ZKEFSUkFZWzQ5MzgsIDI4Miwg MjkzNF0pCgptb3JlIGVmZmljaWVudGx5LiBVbnRpbCBub3cgd2Ugc2ltcGx5IGJ1aWx0IHRo ZSBiaXRtYXAgZm9yIGVhY2ggZWxlbWVudApvZiB0aGUgYXJyYXkgYXMgaWYgaXQgd2FzIGEg c2VwYXJhdGUgc2NhbGFyIGtleXMgY29tYmluZWQgYnkgT1IuIFRoaXMKd2Fsa2VkIHRoZSBC UklOIGluZGV4IG1hbnkgdGltZXMsIG1ha2luZyBpdCBxdWl0ZSBleHBlbnNpdmUsIGVzcGVj aWFsbHkKZm9yIGluZGV4ZXMgd2l0aCBtYW55IHJhbmdlcyAobGFyZ2UgdGFibGVzIGFuZC9v ciBsb3cgcGFnZXNfcGVyX3JhbmdlKS4KClRoZSBhcnJheSBpcyBzb3J0ZWQgaW4gQlJJTl9Q Uk9DTlVNX1BSRVBST0NFU1MgcHJvY2VkdXJlLCBjYWxsZWQgZnJvbQpicmlucmVzY2FuLiBU aGUgcHJvY2VkdXJlIGlzIHBlciBvcGNsYXNzIGFuZCBvcHRpb25hbCwgc28gdGhlcmUgbWF5 IGJlCm9wY2xhc3NlcyB3aXRob3V0IGl0LiBUbyBoYW5kbGUgdGhhdCwgdGhlIGNvbnNpc3Rl bnQgZnVuY3Rpb24gaGFuZGxlcwpTS19TRUFSQ0hBUlJBWSB3aXRob3V0IHByZXByb2Nlc3Np bmcgYnkgd2Fsa2luZyB0aGUgYXJyYXkgKHRoZSBhcnJheQpuZWVkcyB0byBiZSBkZWNvbnN0 cnVjdGVkIGZvciBlYWNoIHBhZ2UgcmFuZ2UsIHRob3VnaCkuCgpUT0RPIC8gb3BlbiBpc3N1 ZXMKCi0gVGhlIG90aGVyIEJSSU4gb3BjbGFzc2VzIGRvbid0IGhhbmRsZSBTS19TRUFSQ0hB UlJBWSB5ZXQsIGJ1dCB0aGUKICBhbXNlYXJjaGFycmF5PXRydWUgYWZmZWN0cyB0aGVtLiBU aGUgdGVzdHMgZG9uJ3QgZmFpbCBtb3N0IGxpa2VseQogIGJlY2F1c2UgdGhlcmUgYXJlIG5v IHF1ZXJpZXMgd2l0aCBCUklOIGluZGV4ZXMgYW5kIGFycmF5cy4gV2lsbCBiZQogIHNlcGFy YXRlIHBhdGNoZXMsIGJ1dCB0aGVuIHByb2JhYmx5IG5lZWQgdG8gYmUgc3F1YXNoZWQgZm9y IGNvbW1pdC4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMgICAgICAgICAg fCAgIDMgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW5fbWlubWF4LmMgICB8IDUy OSArKysrKysrKysrKysrLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW5fdmFsaWRh dGUuYyB8ICAgNCArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2FtcHJvYy5kYXQgICAgICAg fCAgNjQgKysKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgICAgICAgICB8ICAg MyArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2FtdXRpbHMub3V0ICAgfCAgIDIgKy0K IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvYnJpbi5vdXQgICAgICB8IDg1OCArKysrKysr KysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2JyaW4uc3FsICAgICAg ICAgICB8IDI4MyArKysrKysrKwogOCBmaWxlcyBjaGFuZ2VkLCAxNzA2IGluc2VydGlvbnMo KyksIDQwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9i cmluL2JyaW4uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYwppbmRleCAwZjc3 M2FkNzVkLi5iYzIxNWQ0NTUyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvYnJp bi9icmluLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jCkBAIC0zOCw2 ICszOCw3IEBACiAjaW5jbHVkZSAidXRpbHMvZGF0dW0uaCIKICNpbmNsdWRlICJ1dGlscy9n dWMuaCIKICNpbmNsdWRlICJ1dGlscy9pbmRleF9zZWxmdW5jcy5oIgorI2luY2x1ZGUgInV0 aWxzL2xzeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVk ZSAidXRpbHMvcmVsLmgiCiAKQEAgLTExNSw3ICsxMTYsNyBAQCBicmluaGFuZGxlcihQR19G VU5DVElPTl9BUkdTKQogCWFtcm91dGluZS0+YW1jYW51bmlxdWUgPSBmYWxzZTsKIAlhbXJv dXRpbmUtPmFtY2FubXVsdGljb2wgPSB0cnVlOwogCWFtcm91dGluZS0+YW1vcHRpb25hbGtl eSA9IHRydWU7Ci0JYW1yb3V0aW5lLT5hbXNlYXJjaGFycmF5ID0gZmFsc2U7CisJYW1yb3V0 aW5lLT5hbXNlYXJjaGFycmF5ID0gdHJ1ZTsKIAlhbXJvdXRpbmUtPmFtc2VhcmNobnVsbHMg PSB0cnVlOwogCWFtcm91dGluZS0+YW1zdG9yYWdlID0gdHJ1ZTsKIAlhbXJvdXRpbmUtPmFt Y2x1c3RlcmFibGUgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9i cmluL2JyaW5fbWlubWF4LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluX21pbm1h eC5jCmluZGV4IDgyMjk0OTNjODQuLmQyNDZiZDBkNWEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9icmluL2JyaW5fbWlubWF4LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2JyaW4vYnJpbl9taW5tYXguYwpAQCAtMTYsMTEgKzE2LDIxIEBACiAjaW5jbHVkZSAiYWNj ZXNzL3N0cmF0bnVtLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19hbW9wLmgiCiAjaW5jbHVk ZSAiY2F0YWxvZy9wZ190eXBlLmgiCisjaW5jbHVkZSAidXRpbHMvYXJyYXkuaCIKICNpbmNs dWRlICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxzL2RhdHVtLmgiCiAjaW5j bHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCiAjaW5j bHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKKyNpbmNsdWRlICJ1dGlscy9zb3J0c3VwcG9ydC5o IgorCisvKgorICogV2UgdXNlIHNvbWUgcHJpdmF0ZSBza19mbGFncyBiaXRzIGluIHByZXBy b2Nlc3NlZCBzY2FuIGtleXMuICBXZSdyZSBhbGxvd2VkCisgKiB0byB1c2UgYml0cyAxNi0z MSAoc2VlIHNrZXkuaCkuICBUaGUgdXBwZXJtb3N0IGJpdHMgYXJlIGNvcGllZCBmcm9tIHRo ZQorICogaW5kZXgncyBpbmRvcHRpb25bXSBhcnJheSBlbnRyeSBmb3IgdGhlIGluZGV4IGF0 dHJpYnV0ZS4KKyAqLworI2RlZmluZSBTS19CUklOX1NPUlRFRAkweDAwMDEwMDAwCS8qIGRl Y29uc3RydWN0ZWQgYW5kIHNvcnRlZCBhcnJheSAqLworCiAKIHR5cGVkZWYgc3RydWN0IE1p bm1heE9wYXF1ZQogewpAQCAtMTI2LDYgKzEzNiwxOTUgQEAgYnJpbl9taW5tYXhfYWRkX3Zh bHVlKFBHX0ZVTkNUSU9OX0FSR1MpCiAJUEdfUkVUVVJOX0JPT0wodXBkYXRlZCk7CiB9CiAK Ky8qCisgKiBwcmVwcm9jZXNzaW5nIG9mIHNjYW4ga2V5cyBmb3IgdGhlIG1pbm1heCBvcGNs YXNzCisgKgorICogRm9yIG5vdyB3ZSBjYXJlIG9ubHkgYWJvdXQgYXJyYXkga2V5cyAtIGlu c3RlYWQgb2Ygc2ltcGxlIGxpbmVhciBzZWFyY2gKKyAqIGluIHRoZSBhcnJheSAoZm9yIGVh Y2ggcmFuZ2UpLCB3ZSBzb3J0IHRoZSBhcnJheXMgZHVyaW5nIHByZXByb2Nlc3NpbmcKKyAq IGFuZCB0aGVuIHVzZSB0aGF0IGZvciBiaW5hcnkgc29ydCBpbiBjb25zaXN0ZW50IGZ1bmN0 aW9uLgorICovCisKKy8qIHFzb3J0IGNvbXBhcmF0b3IgdXNlZCB0byBzb3J0IGFycmF5IGVs ZW1lbnRzICovCitzdGF0aWMgaW50CittaW5tYXhfY29tcGFyZV92YWx1ZXMoY29uc3Qgdm9p ZCAqYSwgY29uc3Qgdm9pZCAqYiwgdm9pZCAqYXJnKQoreworCURhdHVtCWRhID0gKiAoRGF0 dW0gKikgYTsKKwlEYXR1bQlkYiA9ICogKERhdHVtICopIGI7CisJU29ydFN1cHBvcnQJc3N1 cCA9IChTb3J0U3VwcG9ydCkgYXJnOworCisJcmV0dXJuIEFwcGx5U29ydENvbXBhcmF0b3Io ZGEsIGZhbHNlLCBkYiwgZmFsc2UsIHNzdXApOworfQorCisvKgorICogRGVjb25zdHJ1Y3Rl ZCBhbmQgc29ydGVkIHNjYW4ga2V5IGFycmF5ICh3ZSBtaWdodCBidWlsZCBBcnJheVR5cGUs IGJ1dCB0aGVuCisgKiB3ZSdkIGhhdmUgdG8gZGVjb25zdHJ1Y3QgaXQgb3ZlciBhbmQgb3Zl ciBmb3IgZWFjaCBwYWdlIHJhbmdlKS4gU28gd2UganVzdAorICogZG8gaXQgb25jZSBkdXJp bmcgcHJlcHJvY2Vzc2luZy4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgU2NhbktleUFycmF5IHsK KwlPaWQJCXR5cGVpZDsKKwlpbnQJCW5lbGVtZW50czsKKwlEYXR1bSAgKmVsZW1lbnRzOwor fSBTY2FuS2V5QXJyYXk7CisKKy8qCisgKiBtaW5tYXhfbG93ZXJfYm91bmRhcnkKKyAqCQlH aXZlbiBhIHZhbHVlLCBkZXRlcm1pbmUgdGhlIG1pbmltdW0gaW5kZXggc28gdGhhdCAoYXJy YXlbaW5kZXhdID49IHZhbHVlKQorICoKKyAqIFdlIHVzZSB0aGlzIHRvIGNoZWNrIGlmIGEg bWlubWF4IHJhbmdlIFttaW52YWx1ZSwgbWF4dmFsdWVdIGludGVyc2VjdHMgd2l0aAorICog dGhlIGFycmF5IGluIHRoZSBzY2FuIGtleSAod2hpY2ggaXMgZXhwZWN0ZWQgdG8gYmUgc29y dGVkKS4gV2UgY2FsY3VsYXRlCisgKiB0aGUgbG93ZXIgYm91bmRhcnkgZm9yIFttaW52YWx1 ZV0gYW5kIHRoZW4gY2hlY2sgaWYgaXQgYWN0dWFsbHkgZmFsbHMgdW5kZXIKKyAqIHRoZSBt YXh2YWx1ZSB0b28uIElmIHllcywgd2UgZm91bmQgYW4gZWxlbWVudCBjb25zaXN0ZW50IHdp dGggdGhlIHBhZ2UgcmFuZ2UuCisgKgorICogSWYgYWxsIGFycmF5IGVsZW1lbnRzIG1hdGNo IChpLmUuIGFsbCBlbGVtZW50cyA+PSB2YWx1ZSksIHJldHVybnMgMC4gSWYgbm8KKyAqIGVs ZW1lbnRzIG1hdGNoIChpLmUuIGFsbCBlbGVtZW50cyA8IDApLCByZXR1cm5zIG52YWx1ZXMu CisgKi8KK3N0YXRpYyBpbnQKK21pbm1heF9sb3dlcl9ib3VuZGFyeShEYXR1bSAqdmFsdWVz LCBpbnQgbnZhbHVlcywgRGF0dW0gbWludmFsdWUsIFNvcnRTdXBwb3J0IHNzdXApCit7CisJ aW50CQlzdGFydCA9IDAsCisJCQllbmQgPSAobnZhbHVlcyAtIDEpOworCisJLyogZXZlcnl0 aGluZyBleGNlZWRzIG1pbnZhbCBhbmQgbWlnaHQgbWF0Y2ggKi8KKwlpZiAobWlubWF4X2Nv bXBhcmVfdmFsdWVzKCZtaW52YWx1ZSwgJnZhbHVlc1tzdGFydF0sIHNzdXApIDw9IDApCisJ CXJldHVybiAwOworCisJLyogbm90aGluZyBjb3VsZCBtYXRjaCAqLworCWlmIChtaW5tYXhf Y29tcGFyZV92YWx1ZXMoJm1pbnZhbHVlLCAmdmFsdWVzW2VuZF0sIHNzdXApID4gMCkKKwkJ cmV0dXJuIG52YWx1ZXM7CisKKwl3aGlsZSAoKGVuZCAtIHN0YXJ0KSA+IDApCisJeworCQlp bnQgbWlkcG9pbnQ7CisJCWludCByOworCisJCW1pZHBvaW50ID0gc3RhcnQgKyAoZW5kIC0g c3RhcnQpIC8gMjsKKworCQlyID0gbWlubWF4X2NvbXBhcmVfdmFsdWVzKCZtaW52YWx1ZSwg JnZhbHVlc1ttaWRwb2ludF0sIHNzdXApOworCisJCWlmIChyID4gMCkKKwkJCXN0YXJ0ID0g TWF4KG1pZHBvaW50LCBzdGFydCArIDEpOworCQllbHNlCisJCQllbmQgPSBtaWRwb2ludDsK Kwl9CisKKwkvKiB0aGUgdmFsdWUgc2hvdWxkIG1lZXQgdGhlICh2ID49bWludmFsdWUpIHJl cXVpcmVtZW50ICovCisJQXNzZXJ0KG1pbm1heF9jb21wYXJlX3ZhbHVlcygmdmFsdWVzW3N0 YXJ0XSwgJm1pbnZhbHVlLCBzc3VwKSA+PSAwKTsKKworCS8qIHdlIGtub3cgc3RhcnQgY2Fu J3QgYmUgMCwgc28gaXQncyBsZWdhbCB0byBzdWJ0cmFjdCAxICovCisJQXNzZXJ0KG1pbm1h eF9jb21wYXJlX3ZhbHVlcygmdmFsdWVzW3N0YXJ0LTFdLCAmbWludmFsdWUsIHNzdXApIDwg MCk7CisKKwlyZXR1cm4gc3RhcnQ7Cit9CisKKy8qCisgKiBicmluX21pbm1heF9wcmVwcm9j ZXNzCisgKgkJcHJlcHJvY2VzcyBzY2FuIGtleXMgZm9yIHRoZSBtaW5tYXggb3BjbGFzcwor ICoKKyAqIEZvciBub3cgd2UganVzdCBjYXJlIGFib3V0IFNLX1NFQVJDSEFSUkFZIGtleXMs IHdoaWNoIHdlIHNvcnQgYW5kIGtlZXAgdGhlCisgKiBkZWNvbnN0cnVjdGVkIGFycmF5LiBB bGwgb3RoZXIgc2NhbiBrZXlzIGFyZSBpZ25vcmVkIChyZXR1cm5lZCBhcyBpcykuCisgKgor ICogWFhYIERvIHdlIG5lZWQgdG8gcmVtZW1iZXIgaWYgdGhlIGFycmF5IGNvbnRhaW5lZCBO VUxMIHZhbHVlcz8KKyAqLworRGF0dW0KK2JyaW5fbWlubWF4X3ByZXByb2Nlc3MoUEdfRlVO Q1RJT05fQVJHUykKK3sKKwlTY2FuS2V5CQlrZXkgPSAoU2NhbktleSkgUEdfR0VUQVJHX1BP SU5URVIoMSk7CisJU2NhbktleQkJbmV3a2V5OworCVNjYW5LZXlBcnJheSAqc2NhbmFycmF5 OworCisJQXJyYXlUeXBlICAqYXJyYXl2YWw7CisJaW50MTYJCWVsbWxlbjsKKwlib29sCQll bG1ieXZhbDsKKwljaGFyCQllbG1hbGlnbjsKKwlpbnQJCQludW1fZWxlbXM7CisJRGF0dW0J ICAgKmVsZW1fdmFsdWVzOworCWJvb2wJICAgKmVsZW1fbnVsbHM7CisJVHlwZUNhY2hlRW50 cnkgKnR5cGU7CisJU29ydFN1cHBvcnREYXRhIHNzdXA7CisKKwkvKiBudW1iZXIgb2Ygbm9u LW51bGwgZWxlbWVudHMgaW4gdGhlIGFycmF5ICovCisJaW50CQkJbnVtX25vbm51bGxzOwor CisJLyoKKwkgKiBpZ25vcmUgc2NhbGFyIGtleXMgKGp1c3QgcmV0dXJuIHRoZSBvcmlnaW5h bCBzY2FuIGtleSkKKwkgKgorCSAqIFhYWCBNYXliZSB3ZSBzaG91bGQgcHJlcHJvY2VzcyBz Y2FsYXIga2V5cyB0b28sIGFuZCB0cmVhdCB0aGVtIGFzIGFycmF5cworCSAqIHdpdGggYSBz aW5nbGUgZWxlbWVudC4gSXQnZCBtYWtlIHRoZSBjb25zaXN0ZW50IGZ1bmN0aW9uIHNpbXBs ZXIgYnkgbm90CisJICogaGF2aW5nIHRvIGRvIGJyYW5jaGluZy4KKwkgKi8KKwlpZiAoIShr ZXktPnNrX2ZsYWdzICYgU0tfU0VBUkNIQVJSQVkpKQorCQlQR19SRVRVUk5fUE9JTlRFUihr ZXkpOworCisJYXJyYXl2YWwgPSBEYXR1bUdldEFycmF5VHlwZVAoa2V5LT5za19hcmd1bWVu dCk7CisKKwlnZXRfdHlwbGVuYnl2YWxhbGlnbihBUlJfRUxFTVRZUEUoYXJyYXl2YWwpLAor CQkJCQkJICZlbG1sZW4sICZlbG1ieXZhbCwgJmVsbWFsaWduKTsKKworCWRlY29uc3RydWN0 X2FycmF5KGFycmF5dmFsLAorCQkJCQkgIEFSUl9FTEVNVFlQRShhcnJheXZhbCksCisJCQkJ CSAgZWxtbGVuLCBlbG1ieXZhbCwgZWxtYWxpZ24sCisJCQkJCSAgJmVsZW1fdmFsdWVzLCAm ZWxlbV9udWxscywgJm51bV9lbGVtcyk7CisKKwkvKiBlbGltaW5hdGUgTlVMTCBlbGVtZW50 cyAqLworCW51bV9ub25udWxscyA9IDA7CisJZm9yIChpbnQgaSA9IDA7IGkgPCBudW1fZWxl bXM7IGkrKykKKwl7CisJCS8qIHNraXAgTlVMTCBlbGVtZW50cyAqLworCQlpZiAoZWxlbV9u dWxsc1tpXSkKKwkJCWNvbnRpbnVlOworCisJCS8qIGlmIG5lZWRlZCwgbW92ZSB0aGUgbm9u LU5VTEwgb25lcyAqLworCQlpZiAobnVtX25vbm51bGxzICE9IGkpCisJCQllbGVtX3ZhbHVl c1tudW1fbm9ubnVsbHNdID0gZWxlbV92YWx1ZXNbaV07CisKKwkJbnVtX25vbm51bGxzKys7 CisJfQorCisJbnVtX2VsZW1zID0gbnVtX25vbm51bGxzOworCisJLyogRklYTUUgV2hhdCBp ZiBudW1fbm9ubnVsbHMgaXMgMD8gQ2FuIGl0IGV2ZW4gaGFwcGVuIC8gZ2V0IGhlcmU/ICov CisKKwkvKgorCSAqIHNvcnQgdGhlIGFycmF5CisJICoKKwkgKiBYWFggU2hvdWxkIHdlIHdh bGsgdGhlIHNvcnRlZCBhcnJheSBhZ2FpbiBhbmQgZWxpbWluYXRlIGR1cGxpY2F0ZSB2YWx1 ZXM/CisJICogU2VlbXMgdW5uZWNlc3NhcnkgLSB3ZSdyZSBub3QgZ29pbmcgdG8gcmVwYWxs b2MvcmVsZWFzZSB0aGUgbWVtb3J5IGFueXdheQorCSAqIGFuZCBpdCdzIHVubGlrZWx5IHRv IHNwZWVkIHVwIHRoZSBiaW5zZWFyY2ggKHVubGVzcyB0aGVyZSdzIGEgbG90IG9mCisJICog ZHVwbGljYXRlIHZhbHVlcywgd2hpY2ggZG9lcyBub3Qgc2VlbSBwbGF1c2libGUvY29tbW9u KS4KKwkgKi8KKwl0eXBlID0gbG9va3VwX3R5cGVfY2FjaGUoQVJSX0VMRU1UWVBFKGFycmF5 dmFsKSwgVFlQRUNBQ0hFX0xUX09QUik7CisKKwltZW1zZXQoJnNzdXAsIDAsIHNpemVvZihT b3J0U3VwcG9ydERhdGEpKTsKKworCXNzdXAuc3N1cF9jb2xsYXRpb24gPSBrZXktPnNrX2Nv bGxhdGlvbjsKKwlzc3VwLnNzdXBfY3h0ID0gQ3VycmVudE1lbW9yeUNvbnRleHQ7CisKKwlQ cmVwYXJlU29ydFN1cHBvcnRGcm9tT3JkZXJpbmdPcCh0eXBlLT5sdF9vcHIsICZzc3VwKTsK KworCXFzb3J0X2ludGVycnVwdGlibGUoZWxlbV92YWx1ZXMsIG51bV9lbGVtcywgc2l6ZW9m KERhdHVtKSwKKwkJCQkJCW1pbm1heF9jb21wYXJlX3ZhbHVlcywgJnNzdXApOworCisJLyog Q29uc3RydWN0IHRoZSBuZXcgc2NhbiBrZXksIHdpdGggc29ydGVkIGFycmF5IGFzIFNjYW5L ZXlBcnJheS4gKi8KKwlzY2FuYXJyYXkgPSBwYWxsb2MwKHNpemVvZihTY2FuS2V5QXJyYXkp KTsKKwlzY2FuYXJyYXktPnR5cGVpZCA9IEFSUl9FTEVNVFlQRShhcnJheXZhbCk7CisJc2Nh bmFycmF5LT5uZWxlbWVudHMgPSBudW1fZWxlbXM7CisJc2NhbmFycmF5LT5lbGVtZW50cyA9 IGVsZW1fdmFsdWVzOworCisJbmV3a2V5ID0gcGFsbG9jMChzaXplb2YoU2NhbktleURhdGEp KTsKKworCVNjYW5LZXlFbnRyeUluaXRpYWxpemVXaXRoSW5mbyhuZXdrZXksCisJCQkJCQkJ CSAgIChrZXktPnNrX2ZsYWdzIHwgU0tfQlJJTl9TT1JURUQpLAorCQkJCQkJCQkgICBrZXkt PnNrX2F0dG5vLAorCQkJCQkJCQkgICBrZXktPnNrX3N0cmF0ZWd5LAorCQkJCQkJCQkgICBr ZXktPnNrX3N1YnR5cGUsCisJCQkJCQkJCSAgIGtleS0+c2tfY29sbGF0aW9uLAorCQkJCQkJ CQkgICAma2V5LT5za19mdW5jLAorCQkJCQkJCQkgICBQb2ludGVyR2V0RGF0dW0oc2NhbmFy cmF5KSk7CisKKwlQR19SRVRVUk5fUE9JTlRFUihuZXdrZXkpOworfQorCisKIC8qCiAgKiBH aXZlbiBhbiBpbmRleCB0dXBsZSBjb3JyZXNwb25kaW5nIHRvIGEgY2VydGFpbiBwYWdlIHJh bmdlIGFuZCBhIHNjYW4ga2V5LAogICogcmV0dXJuIHdoZXRoZXIgdGhlIHNjYW4ga2V5IGlz IGNvbnNpc3RlbnQgd2l0aCB0aGUgaW5kZXggdHVwbGUncyBtaW4vbWF4CkBAIC0xNTcsNDYg KzM1NiwzMDAgQEAgYnJpbl9taW5tYXhfY29uc2lzdGVudChQR19GVU5DVElPTl9BUkdTKQog CWF0dG5vID0ga2V5LT5za19hdHRubzsKIAlzdWJ0eXBlID0ga2V5LT5za19zdWJ0eXBlOwog CXZhbHVlID0ga2V5LT5za19hcmd1bWVudDsKLQlzd2l0Y2ggKGtleS0+c2tfc3RyYXRlZ3kp CisKKwkvKgorCSAqIEZvciByZWd1bGFyIChzY2FsYXIpIHNjYW4ga2V5cywgd2Ugc2ltcGx5 IGNvbXBhcmUgdGhlIHZhbHVlIHRvIHRoZQorCSAqIHJhbmdlIG1pbi9tYXggdmFsdWVzLCBh bmQgd2UncmUgZG9uZS4gRm9yIHByZXByb2Nlc3NlZCBTS19TRUFSQ0hBUlJBWQorCSAqIGtl eXMgd2UgY2FuIGRvIGEgYmluYXJ5IHNlYXJjaCBpbiB0aGUgc29ydGVkIGFycmF5LgorCSAq CisJICogRklYTUUgVGhpcyBzaG91bGQgYWxzbyBoYW5kbGUgdGhlICJhcnJheSBidXQgbm90 IHByZXByb2Nlc3NlZCIgY2FzZQorCSAqIHRvbywgZm9yIG9wY2xhc3NlcyBub3QgZGVmaW5p bmcgdGhlIG9wdGlvbmFsIHByZXByb2Nlc3MgcHJvY2VkdXJlLgorCSAqIE90aGVyd2lzZSB3 ZSdkIGhhdmUgaXNzdWVzIHdpdGggc3VjaCBvcGNsYXNzZXMgYmVjYXVzZSBhbXNlYXJjaGFy cmF5CisJICogaXMgZGVmaW5lZCBhdCB0aGUgQU0gbGV2ZWwuCisJICovCisJaWYgKGtleS0+ c2tfZmxhZ3MgJiBTS19CUklOX1NPUlRFRCkJCQkvKiBwcmVwcm9jZXNzZWQgYXJyYXkqLwor CXsKKwkJU2NhbktleUFycmF5ICphcnJheSA9IChTY2FuS2V5QXJyYXkgKikgdmFsdWU7CisK KwkJLyogY2FuIGhhcHBlbiBpZiB0aGUgSU4gbGlzdCBjb250YWluZWQganVzdCBOVUxMcyAq LworCQlpZiAoYXJyYXktPm5lbGVtZW50cyA9PSAwKQorCQkJUEdfUkVUVVJOX0JPT0woZmFs c2UpOworCisJCXN3aXRjaCAoa2V5LT5za19zdHJhdGVneSkKKwkJeworCQkJY2FzZSBCVExl c3NTdHJhdGVneU51bWJlcjoKKwkJCWNhc2UgQlRMZXNzRXF1YWxTdHJhdGVneU51bWJlcjoK KwkJCQkvKgorCQkJCSAqIENoZWNrIHRoZSBsYXN0IChsYXJnZXN0KSB2YWx1ZSBpbiB0aGUg YXJyYXkgLSBhdCBsZWFzdCB0aGlzCisJCQkJICogdmFsdWUgaGFzIHRvIGV4Y2VlZCB0aGUg cmFuZ2UgbWludmFsLgorCQkJCSAqLworCQkJCWZpbmZvID0gbWlubWF4X2dldF9zdHJhdGVn eV9wcm9jaW5mbyhiZGVzYywgYXR0bm8sIHN1YnR5cGUsCisJCQkJCQkJCQkJCQkJIGtleS0+ c2tfc3RyYXRlZ3kpOworCQkJCW1hdGNoZXMgPSBGdW5jdGlvbkNhbGwyQ29sbChmaW5mbywg Y29sbG9pZCwgY29sdW1uLT5idl92YWx1ZXNbMF0sCisJCQkJCQkJCQkJCWFycmF5LT5lbGVt ZW50c1thcnJheS0+bmVsZW1lbnRzLTFdKTsKKwkJCQlicmVhazsKKwkJCWNhc2UgQlRFcXVh bFN0cmF0ZWd5TnVtYmVyOgorCisJCQkJLyoKKwkJCQkgKiBJbiB0aGUgZXF1YWxpdHkgY2Fz ZSAoV0hFUkUgY29sID0gc29tZXZhbCksIHdlIHdhbnQgdG8gcmV0dXJuCisJCQkJICogdGhl IGN1cnJlbnQgcGFnZSByYW5nZSBpZiB0aGUgbWluaW11bSB2YWx1ZSBpbiB0aGUgcmFuZ2Ug PD0KKwkJCQkgKiBzY2FuIGtleSwgYW5kIHRoZSBtYXhpbXVtIHZhbHVlID49IHNjYW4ga2V5 LgorCQkJCSAqCisJCQkJICogV2UgZG8gdGhpcyBpbiB0d28gcGhhc2VzLiBXZSBjaGVjayB0 aGUgYXJyYXkgbWluL21heCB2YWx1ZXMgdG8gc2VlCisJCQkJICogaWYgdGhlcmUgZXZlbiBj YW4gYmUgYSBtYXRjaGluZyB2YWx1ZSwgYW5kIGlmIHllcyB3ZSBkbyBhIGJpbmFyeQorCQkJ CSAqIHNlYXJjaCB0byBmaW5kIHRoZSBmaXJzdCB2YWx1ZSB0aGF0IGV4Y2VlZHMgcmFuZ2Ug bWludmFsLiBBbmQgdGhlbgorCQkJCSAqIHdlIGNoZWNrIGlmIGl0IGFjdHVhbGx5IG1hdGNo ZXMgdGhlIHJhbmdlLgorCQkJCSAqCisJCQkJICogWFhYIFRoZSBmaXJzdCBwaGFzZSBpcyBw cm9iYWJseSB1bm5lY2Vzc2FyeSwgYmVjYXVzZSBsb3dlcl9ib3VuZCgpCisJCQkJICogZG9l cyBwcmV0dHkgbXVjaCBleGFjdGx5IHRoYXQgdG9vLgorCQkJCSAqLworCQkJCXsKKwkJCQkJ VHlwZUNhY2hlRW50cnkgKnR5cGU7CisJCQkJCVNvcnRTdXBwb3J0RGF0YQlzc3VwOworCisJ CQkJCURhdHVtIAkJZWxlbWVudCwKKwkJCQkJCQkJbWludmFsdWUsCisJCQkJCQkJCW1heHZh bHVlOworCQkJCQlpbnQJCQlsb3dlcjsKKworCQkJCQkvKiBmb3IgcmVhZGFiaWxpdHkgKi8K KwkJCQkJbWludmFsdWUgPSBjb2x1bW4tPmJ2X3ZhbHVlc1swXTsKKwkJCQkJbWF4dmFsdWUg PSBjb2x1bW4tPmJ2X3ZhbHVlc1sxXTsKKworCQkJCQkvKgorCQkJCQkgKiBCZWZvcmUgZG9p bmcgdGhlIGJpbmFyeSBzZWFyY2ggb24gc29ydGVkIGFycmF5LCBkbyBhIHF1aWNrIHNlYXJj aAorCQkJCQkgKiBpZiB0aGUgcmFuZ2UgY2FuIG1hdGNoIGF0IGFsbC4gSWYgdGhlIHdob2xl IGFycmF5IGlzIG91dHNpZGUgdGhlCisJCQkJCSAqIHBhZ2UgcmFuZ2UsIHdlJ3JlIGRvbmUu IFRoaXMgaXMgbXVjaCBjaGVhcGVyIHRoYW4gdGhlIGJpbnNlYXJjaCwKKwkJCQkJICogYW5k IHdlIGFzc3VtZSBtb3N0IHJhbmdlcyBkbyBub3QgbWF0Y2guCisJCQkJCSAqLworCisJCQkJ CS8qIElzIHRoZSBmaXJzdCAoc21hbGxlc3QpIGFycmF5IGVsZW1lbnQgYWZ0ZXIgdGhlIEJS SU4gcmFuZ2U/ICovCisJCQkJCWVsZW1lbnQgPSBhcnJheS0+ZWxlbWVudHNbMF07CisKKwkJ CQkJZmluZm8gPSBtaW5tYXhfZ2V0X3N0cmF0ZWd5X3Byb2NpbmZvKGJkZXNjLCBhdHRubywg c3VidHlwZSwKKwkJCQkJCQkJCQkJCQkJIEJUTGVzc0VxdWFsU3RyYXRlZ3lOdW1iZXIpOwor CQkJCQltYXRjaGVzID0gRnVuY3Rpb25DYWxsMkNvbGwoZmluZm8sIGNvbGxvaWQsIGVsZW1l bnQsIG1heHZhbHVlKTsKKworCQkJCQkvKiBmaXJzdCBlbGVtZW50ID4gcmFuZ2UgbWF4dmFs dWUgKi8KKwkJCQkJaWYgKCFEYXR1bUdldEJvb2wobWF0Y2hlcykpCisJCQkJCQlicmVhazsK KworCQkJCQkvKiBJcyB0aGUgbGFzdCAobGFyZ2VzdCkgYXJyYXkgZWxlbWVudCBiZWZvcmUg dGhlIEJSSU4gcmFuZ2U/ICovCisJCQkJCWVsZW1lbnQgPSBhcnJheS0+ZWxlbWVudHNbYXJy YXktPm5lbGVtZW50cy0xXTsKKworCQkJCQlmaW5mbyA9IG1pbm1heF9nZXRfc3RyYXRlZ3lf cHJvY2luZm8oYmRlc2MsIGF0dG5vLCBzdWJ0eXBlLAorCQkJCQkJCQkJCQkJCQkgQlRHcmVh dGVyRXF1YWxTdHJhdGVneU51bWJlcik7CisJCQkJCW1hdGNoZXMgPSBGdW5jdGlvbkNhbGwy Q29sbChmaW5mbywgY29sbG9pZCwgZWxlbWVudCwgbWludmFsdWUpOworCisJCQkJCS8qIGxh c3QgZWxlbWVudCA8IHJhbmdlIG1pbnZhbHVlICovCisJCQkJCWlmICghRGF0dW1HZXRCb29s KG1hdGNoZXMpKQorCQkJCQkJYnJlYWs7CisKKwkJCQkJLyoKKwkJCQkJICogSXQgc2VlbXMg dGhlcmUgbWlnaHQgYmUgc29tZSBhcnJheSBlbGVtZW50cyBjb25zaXN0ZW50IHdpdGgKKwkJ CQkJICogdGhlIHBhZ2UgcmFuZ2UuIFdlIGZpbmQgdGhlIGZpcnN0IGVsZW1lbnQgYWJvdmUg dGhlIHJhbmdlCisJCQkJCSAqIG1pbnZhbHVlIGFuZCBjaGVjayBpZiBpdCdzIHNtYWxsZXIg dGhhbiBtYXh2YWx1ZS4gSWYgeWVzLAorCQkJCQkgKiB3ZSBoYXZlIGEgbWF0Y2guIElmIG5v dCwgb3RoZXIgZWxlbWVudHMgY2FuJ3QgYmUgY29uc2lzdGVudAorCQkJCQkgKiBlaXRoZXIg KHdpbGwgZXhjZWVkIG1heHZhbCB0b28sIHRoYW5rcyB0byBzb3J0KS4KKwkJCQkJICovCisJ CQkJCXR5cGUgPSBsb29rdXBfdHlwZV9jYWNoZShhcnJheS0+dHlwZWlkLCBUWVBFQ0FDSEVf TFRfT1BSKTsKKworCQkJCQltZW1zZXQoJnNzdXAsIDAsIHNpemVvZihTb3J0U3VwcG9ydERh dGEpKTsKKworCQkJCQlzc3VwLnNzdXBfY29sbGF0aW9uID0ga2V5LT5za19jb2xsYXRpb247 CisJCQkJCXNzdXAuc3N1cF9jeHQgPSBDdXJyZW50TWVtb3J5Q29udGV4dDsKKworCQkJCQlQ cmVwYXJlU29ydFN1cHBvcnRGcm9tT3JkZXJpbmdPcCh0eXBlLT5sdF9vcHIsICZzc3VwKTsK KworCQkJCQlsb3dlciA9IG1pbm1heF9sb3dlcl9ib3VuZGFyeShhcnJheS0+ZWxlbWVudHMs IGFycmF5LT5uZWxlbWVudHMsCisJCQkJCQkJCQkJCQkgIG1pbnZhbHVlLCAmc3N1cCk7CisK KwkJCQkJLyoKKwkJCQkJICogSWYgdGhlIGxvd2VyIGJvdW5kYXJ5IGlzIG5lbGVtZW50cywg dGhlbiBubyBhcnJheSBlbGVtZW50cworCQkJCQkgKiBjYW4gcG9zc2libHkgbWF0Y2ggdGhp cyBwYWdlIHJhbmdlLgorCQkJCQkgKgorCQkJCQkgKiBYWFggVGhpcyBpcyBwcm9iYWJseSBp bXBvc3NpYmxlIGR1ZSB0byB0aGUgZWFybGllciBjaGVjay4KKwkJCQkJICogVGhpcyB3b3Vs ZCBtZWFuIGFsbCBlbGVtZW50cyBhcmUgPCBtaW52YWx1ZSwgYnV0IHdlIGRpZAorCQkJCQkg KiBjaGVjayBmb3IgdGhhdC4KKwkJCQkJICovCisJCQkJCWlmIChsb3dlciA9PSBhcnJheS0+ bmVsZW1lbnRzKQorCQkJCQl7CisJCQkJCQltYXRjaGVzID0gQm9vbEdldERhdHVtKGZhbHNl KTsKKwkJCQkJCWJyZWFrOworCQkJCQl9CisKKwkJCQkJLyoKKwkJCQkJICogV2UgaGF2ZSBh biBlbGVtZW50IHRoYXQgbWlnaHQgYmUgY29uc2lzdGVudCB3aXRoIHRoZSBwYWdlCisJCQkJ CSAqIHJhbmdlLCBzbyBsZXQncyBjaGVjayB0aGUgbWF4dmFsdWUgdG9vIChpZiBpdCBleGNl ZWRzIGl0LAorCQkJCQkgKiBubyBmb2xsb3dpbmcgZWxlbWVudHMgd2lsbCB0b28pLgorCQkJ CQkgKi8KKwkJCQkJZWxlbWVudCA9IGFycmF5LT5lbGVtZW50c1tsb3dlcl07CisKKwkJCQkJ LyoKKwkJCQkJICogSW4gdGhlIGVxdWFsaXR5IGNhc2UgKFdIRVJFIGNvbCA9IHNvbWV2YWwp LCB3ZSB3YW50IHRvIHJldHVybgorCQkJCQkgKiB0aGUgY3VycmVudCBwYWdlIHJhbmdlIGlm IHRoZSBtaW5pbXVtIHZhbHVlIGluIHRoZSByYW5nZSA8PQorCQkJCQkgKiBzY2FuIGtleSwg YW5kIHRoZSBtYXhpbXVtIHZhbHVlID49IHNjYW4ga2V5LgorCQkJCQkgKgorCQkJCQkgKiBY WFggVGhpcyBtaW52YWx1ZSBjaGVjayBpcyBsaWtlbHkgdW5uZWNlc3NhcnksIHRoYW5rcyB0 byB0aGUKKwkJCQkJICogbG93ZXIgYm91bmRhcnkgZ3VhcmFudGVlaW5nIHRoaXMgdG8gYmUg dHJ1ZS4KKwkJCQkJICovCisJCQkJCWZpbmZvID0gbWlubWF4X2dldF9zdHJhdGVneV9wcm9j aW5mbyhiZGVzYywgYXR0bm8sIHN1YnR5cGUsCisJCQkJCQkJCQkJCQkJCSBCVExlc3NFcXVh bFN0cmF0ZWd5TnVtYmVyKTsKKwkJCQkJbWF0Y2hlcyA9IEZ1bmN0aW9uQ2FsbDJDb2xsKGZp bmZvLCBjb2xsb2lkLAorCQkJCQkJCQkJCQkJbWludmFsdWUsIGVsZW1lbnQpOworCQkJCQlp ZiAoIURhdHVtR2V0Qm9vbChtYXRjaGVzKSkKKwkJCQkJCWJyZWFrOworCisJCQkJCS8qIG1h eHZhbHVlID49IGVsZW1lbnQgKi8KKwkJCQkJZmluZm8gPSBtaW5tYXhfZ2V0X3N0cmF0ZWd5 X3Byb2NpbmZvKGJkZXNjLCBhdHRubywgc3VidHlwZSwKKwkJCQkJCQkJCQkJCQkJIEJUR3Jl YXRlckVxdWFsU3RyYXRlZ3lOdW1iZXIpOworCQkJCQltYXRjaGVzID0gRnVuY3Rpb25DYWxs MkNvbGwoZmluZm8sIGNvbGxvaWQsCisJCQkJCQkJCQkJCQltYXh2YWx1ZSwgZWxlbWVudCk7 CisJCQkJCWJyZWFrOworCQkJCX0KKwkJCWNhc2UgQlRHcmVhdGVyRXF1YWxTdHJhdGVneU51 bWJlcjoKKwkJCWNhc2UgQlRHcmVhdGVyU3RyYXRlZ3lOdW1iZXI6CisJCQkJLyoKKwkJCQkg KiBDaGVjayB0aGUgZmlyc3QgKHNtYWxsZXN0KSB2YWx1ZSBpbiB0aGUgYXJyYXkgLSBhdCBs ZWFzdCB0aGlzCisJCQkJICogdmFsdWUgaGFzIHRvIGJlIHNtYWxsZXIgdGhhbiB0aGUgcmFu Z2UgbWF4dmFsLgorCQkJCSAqLworCQkJCWZpbmZvID0gbWlubWF4X2dldF9zdHJhdGVneV9w cm9jaW5mbyhiZGVzYywgYXR0bm8sIHN1YnR5cGUsCisJCQkJCQkJCQkJCQkJIGtleS0+c2tf c3RyYXRlZ3kpOworCQkJCW1hdGNoZXMgPSBGdW5jdGlvbkNhbGwyQ29sbChmaW5mbywgY29s bG9pZCwgY29sdW1uLT5idl92YWx1ZXNbMV0sCisJCQkJCQkJCQkJCWFycmF5LT5lbGVtZW50 c1swXSk7CisJCQkJYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCS8qIHNob3VsZG4ndCBoYXBw ZW4gKi8KKwkJCQllbG9nKEVSUk9SLCAiaW52YWxpZCBzdHJhdGVneSBudW1iZXIgJWQiLCBr ZXktPnNrX3N0cmF0ZWd5KTsKKwkJCQltYXRjaGVzID0gMDsKKwkJCQlicmVhazsKKwkJfQor CX0KKwllbHNlIGlmIChrZXktPnNrX2ZsYWdzICYgU0tfU0VBUkNIQVJSQVkpCS8qIGFycmF5 IHdpdGhvdXQgcHJlcHJvY2Vzc2luZyAqLworCXsKKwkJQXJyYXlUeXBlICAqYXJyYXl2YWw7 CisJCWludDE2CQllbG1sZW47CisJCWJvb2wJCWVsbWJ5dmFsOworCQljaGFyCQllbG1hbGln bjsKKwkJaW50CQkJbnVtX2VsZW1zOworCQlEYXR1bQkgICAqZWxlbV92YWx1ZXM7CisJCWJv b2wJICAgKmVsZW1fbnVsbHM7CisKKwkJYXJyYXl2YWwgPSBEYXR1bUdldEFycmF5VHlwZVAo a2V5LT5za19hcmd1bWVudCk7CisKKwkJZ2V0X3R5cGxlbmJ5dmFsYWxpZ24oQVJSX0VMRU1U WVBFKGFycmF5dmFsKSwKKwkJCQkJCQkgJmVsbWxlbiwgJmVsbWJ5dmFsLCAmZWxtYWxpZ24p OworCisJCWRlY29uc3RydWN0X2FycmF5KGFycmF5dmFsLAorCQkJCQkJICBBUlJfRUxFTVRZ UEUoYXJyYXl2YWwpLAorCQkJCQkJICBlbG1sZW4sIGVsbWJ5dmFsLCBlbG1hbGlnbiwKKwkJ CQkJCSAgJmVsZW1fdmFsdWVzLCAmZWxlbV9udWxscywgJm51bV9lbGVtcyk7CisKKwkJLyog d2UnbGwgc2tpcCBOVUxMIGVsZW1lbnRzICovCisJCWZvciAoaW50IGkgPSAwOyBpIDwgbnVt X2VsZW1zOyBpKyspCisJCXsKKwkJCS8qIHNraXAgTlVMTCBlbGVtZW50cyAqLworCQkJaWYg KGVsZW1fbnVsbHNbaV0pCisJCQkJY29udGludWU7CisKKwkJCXN3aXRjaCAoa2V5LT5za19z dHJhdGVneSkKKwkJCXsKKwkJCQljYXNlIEJUTGVzc1N0cmF0ZWd5TnVtYmVyOgorCQkJCWNh c2UgQlRMZXNzRXF1YWxTdHJhdGVneU51bWJlcjoKKwkJCQkJZmluZm8gPSBtaW5tYXhfZ2V0 X3N0cmF0ZWd5X3Byb2NpbmZvKGJkZXNjLCBhdHRubywgc3VidHlwZSwKKwkJCQkJCQkJCQkJ CQkJIGtleS0+c2tfc3RyYXRlZ3kpOworCQkJCQltYXRjaGVzID0gRnVuY3Rpb25DYWxsMkNv bGwoZmluZm8sIGNvbGxvaWQsIGNvbHVtbi0+YnZfdmFsdWVzWzBdLAorCQkJCQkJCQkJCQkJ ZWxlbV92YWx1ZXNbaV0pOworCQkJCQlicmVhazsKKwkJCQljYXNlIEJURXF1YWxTdHJhdGVn eU51bWJlcjoKKworCQkJCQkvKgorCQkJCQkgKiBJbiB0aGUgZXF1YWxpdHkgY2FzZSAoV0hF UkUgY29sID0gc29tZXZhbCksIHdlIHdhbnQgdG8gcmV0dXJuCisJCQkJCSAqIHRoZSBjdXJy ZW50IHBhZ2UgcmFuZ2UgaWYgdGhlIG1pbmltdW0gdmFsdWUgaW4gdGhlIHJhbmdlIDw9CisJ CQkJCSAqIHNjYW4ga2V5LCBhbmQgdGhlIG1heGltdW0gdmFsdWUgPj0gc2NhbiBrZXkuCisJ CQkJCSAqLworCQkJCQlmaW5mbyA9IG1pbm1heF9nZXRfc3RyYXRlZ3lfcHJvY2luZm8oYmRl c2MsIGF0dG5vLCBzdWJ0eXBlLAorCQkJCQkJCQkJCQkJCQkgQlRMZXNzRXF1YWxTdHJhdGVn eU51bWJlcik7CisJCQkJCW1hdGNoZXMgPSBGdW5jdGlvbkNhbGwyQ29sbChmaW5mbywgY29s bG9pZCwgY29sdW1uLT5idl92YWx1ZXNbMF0sCisJCQkJCQkJCQkJCQllbGVtX3ZhbHVlc1tp XSk7CisJCQkJCWlmICghRGF0dW1HZXRCb29sKG1hdGNoZXMpKQorCQkJCQkJYnJlYWs7CisJ CQkJCS8qIG1heCgpID49IHNjYW5rZXkgKi8KKwkJCQkJZmluZm8gPSBtaW5tYXhfZ2V0X3N0 cmF0ZWd5X3Byb2NpbmZvKGJkZXNjLCBhdHRubywgc3VidHlwZSwKKwkJCQkJCQkJCQkJCQkJ IEJUR3JlYXRlckVxdWFsU3RyYXRlZ3lOdW1iZXIpOworCQkJCQltYXRjaGVzID0gRnVuY3Rp b25DYWxsMkNvbGwoZmluZm8sIGNvbGxvaWQsIGNvbHVtbi0+YnZfdmFsdWVzWzFdLAorCQkJ CQkJCQkJCQkJZWxlbV92YWx1ZXNbaV0pOworCQkJCQlicmVhazsKKwkJCQljYXNlIEJUR3Jl YXRlckVxdWFsU3RyYXRlZ3lOdW1iZXI6CisJCQkJY2FzZSBCVEdyZWF0ZXJTdHJhdGVneU51 bWJlcjoKKwkJCQkJZmluZm8gPSBtaW5tYXhfZ2V0X3N0cmF0ZWd5X3Byb2NpbmZvKGJkZXNj LCBhdHRubywgc3VidHlwZSwKKwkJCQkJCQkJCQkJCQkJIGtleS0+c2tfc3RyYXRlZ3kpOwor CQkJCQltYXRjaGVzID0gRnVuY3Rpb25DYWxsMkNvbGwoZmluZm8sIGNvbGxvaWQsIGNvbHVt bi0+YnZfdmFsdWVzWzFdLAorCQkJCQkJCQkJCQkJZWxlbV92YWx1ZXNbaV0pOworCQkJCQli cmVhazsKKwkJCQlkZWZhdWx0OgorCQkJCQkvKiBzaG91bGRuJ3QgaGFwcGVuICovCisJCQkJ CWVsb2coRVJST1IsICJpbnZhbGlkIHN0cmF0ZWd5IG51bWJlciAlZCIsIGtleS0+c2tfc3Ry YXRlZ3kpOworCQkJCQltYXRjaGVzID0gMDsKKwkJCQkJYnJlYWs7CisJCQl9CisKKwkJCS8q IGZvdW5kIGEgY29uc2lzdGVudCB2YWx1ZSwgd2UncmUgZG9uZSAqLworCQkJaWYgKERhdHVt R2V0Qm9vbChtYXRjaGVzKSkKKwkJCQlicmVhazsKKwkJfQorCisJCS8qCisJCSAqIGZyZWUg dGhlIGFycmF5cworCQkgKgorCQkgKiBYWFggaXMgdGhpcyBuZWNlc3Nhcnk/CisJCSAqLwor CQlwZnJlZShlbGVtX3ZhbHVlcyk7CisJCXBmcmVlKGVsZW1fbnVsbHMpOworCX0KKwllbHNl CQkJCQkJCQkJCS8qIHNjYWxhciBzY2FuIGtleSAqLwogCXsKLQkJY2FzZSBCVExlc3NTdHJh dGVneU51bWJlcjoKLQkJY2FzZSBCVExlc3NFcXVhbFN0cmF0ZWd5TnVtYmVyOgotCQkJZmlu Zm8gPSBtaW5tYXhfZ2V0X3N0cmF0ZWd5X3Byb2NpbmZvKGJkZXNjLCBhdHRubywgc3VidHlw ZSwKLQkJCQkJCQkJCQkJCSBrZXktPnNrX3N0cmF0ZWd5KTsKLQkJCW1hdGNoZXMgPSBGdW5j dGlvbkNhbGwyQ29sbChmaW5mbywgY29sbG9pZCwgY29sdW1uLT5idl92YWx1ZXNbMF0sCi0J CQkJCQkJCQkJdmFsdWUpOwotCQkJYnJlYWs7Ci0JCWNhc2UgQlRFcXVhbFN0cmF0ZWd5TnVt YmVyOgotCi0JCQkvKgotCQkJICogSW4gdGhlIGVxdWFsaXR5IGNhc2UgKFdIRVJFIGNvbCA9 IHNvbWV2YWwpLCB3ZSB3YW50IHRvIHJldHVybgotCQkJICogdGhlIGN1cnJlbnQgcGFnZSBy YW5nZSBpZiB0aGUgbWluaW11bSB2YWx1ZSBpbiB0aGUgcmFuZ2UgPD0KLQkJCSAqIHNjYW4g a2V5LCBhbmQgdGhlIG1heGltdW0gdmFsdWUgPj0gc2NhbiBrZXkuCi0JCQkgKi8KLQkJCWZp bmZvID0gbWlubWF4X2dldF9zdHJhdGVneV9wcm9jaW5mbyhiZGVzYywgYXR0bm8sIHN1YnR5 cGUsCi0JCQkJCQkJCQkJCQkgQlRMZXNzRXF1YWxTdHJhdGVneU51bWJlcik7Ci0JCQltYXRj aGVzID0gRnVuY3Rpb25DYWxsMkNvbGwoZmluZm8sIGNvbGxvaWQsIGNvbHVtbi0+YnZfdmFs dWVzWzBdLAotCQkJCQkJCQkJCXZhbHVlKTsKLQkJCWlmICghRGF0dW1HZXRCb29sKG1hdGNo ZXMpKQorCQlzd2l0Y2ggKGtleS0+c2tfc3RyYXRlZ3kpCisJCXsKKwkJCWNhc2UgQlRMZXNz U3RyYXRlZ3lOdW1iZXI6CisJCQljYXNlIEJUTGVzc0VxdWFsU3RyYXRlZ3lOdW1iZXI6CisJ CQkJZmluZm8gPSBtaW5tYXhfZ2V0X3N0cmF0ZWd5X3Byb2NpbmZvKGJkZXNjLCBhdHRubywg c3VidHlwZSwKKwkJCQkJCQkJCQkJCQkga2V5LT5za19zdHJhdGVneSk7CisJCQkJbWF0Y2hl cyA9IEZ1bmN0aW9uQ2FsbDJDb2xsKGZpbmZvLCBjb2xsb2lkLCBjb2x1bW4tPmJ2X3ZhbHVl c1swXSwKKwkJCQkJCQkJCQkJdmFsdWUpOworCQkJCWJyZWFrOworCQkJY2FzZSBCVEVxdWFs U3RyYXRlZ3lOdW1iZXI6CisKKwkJCQkvKgorCQkJCSAqIEluIHRoZSBlcXVhbGl0eSBjYXNl IChXSEVSRSBjb2wgPSBzb21ldmFsKSwgd2Ugd2FudCB0byByZXR1cm4KKwkJCQkgKiB0aGUg Y3VycmVudCBwYWdlIHJhbmdlIGlmIHRoZSBtaW5pbXVtIHZhbHVlIGluIHRoZSByYW5nZSA8 PQorCQkJCSAqIHNjYW4ga2V5LCBhbmQgdGhlIG1heGltdW0gdmFsdWUgPj0gc2NhbiBrZXku CisJCQkJICovCisJCQkJZmluZm8gPSBtaW5tYXhfZ2V0X3N0cmF0ZWd5X3Byb2NpbmZvKGJk ZXNjLCBhdHRubywgc3VidHlwZSwKKwkJCQkJCQkJCQkJCQkgQlRMZXNzRXF1YWxTdHJhdGVn eU51bWJlcik7CisJCQkJbWF0Y2hlcyA9IEZ1bmN0aW9uQ2FsbDJDb2xsKGZpbmZvLCBjb2xs b2lkLCBjb2x1bW4tPmJ2X3ZhbHVlc1swXSwKKwkJCQkJCQkJCQkJdmFsdWUpOworCQkJCWlm ICghRGF0dW1HZXRCb29sKG1hdGNoZXMpKQorCQkJCQlicmVhazsKKwkJCQkvKiBtYXgoKSA+ PSBzY2Fua2V5ICovCisJCQkJZmluZm8gPSBtaW5tYXhfZ2V0X3N0cmF0ZWd5X3Byb2NpbmZv KGJkZXNjLCBhdHRubywgc3VidHlwZSwKKwkJCQkJCQkJCQkJCQkgQlRHcmVhdGVyRXF1YWxT dHJhdGVneU51bWJlcik7CisJCQkJbWF0Y2hlcyA9IEZ1bmN0aW9uQ2FsbDJDb2xsKGZpbmZv LCBjb2xsb2lkLCBjb2x1bW4tPmJ2X3ZhbHVlc1sxXSwKKwkJCQkJCQkJCQkJdmFsdWUpOwor CQkJCWJyZWFrOworCQkJY2FzZSBCVEdyZWF0ZXJFcXVhbFN0cmF0ZWd5TnVtYmVyOgorCQkJ Y2FzZSBCVEdyZWF0ZXJTdHJhdGVneU51bWJlcjoKKwkJCQlmaW5mbyA9IG1pbm1heF9nZXRf c3RyYXRlZ3lfcHJvY2luZm8oYmRlc2MsIGF0dG5vLCBzdWJ0eXBlLAorCQkJCQkJCQkJCQkJ CSBrZXktPnNrX3N0cmF0ZWd5KTsKKwkJCQltYXRjaGVzID0gRnVuY3Rpb25DYWxsMkNvbGwo ZmluZm8sIGNvbGxvaWQsIGNvbHVtbi0+YnZfdmFsdWVzWzFdLAorCQkJCQkJCQkJCQl2YWx1 ZSk7CisJCQkJYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCS8qIHNob3VsZG4ndCBoYXBwZW4g Ki8KKwkJCQllbG9nKEVSUk9SLCAiaW52YWxpZCBzdHJhdGVneSBudW1iZXIgJWQiLCBrZXkt PnNrX3N0cmF0ZWd5KTsKKwkJCQltYXRjaGVzID0gMDsKIAkJCQlicmVhazsKLQkJCS8qIG1h eCgpID49IHNjYW5rZXkgKi8KLQkJCWZpbmZvID0gbWlubWF4X2dldF9zdHJhdGVneV9wcm9j aW5mbyhiZGVzYywgYXR0bm8sIHN1YnR5cGUsCi0JCQkJCQkJCQkJCQkgQlRHcmVhdGVyRXF1 YWxTdHJhdGVneU51bWJlcik7Ci0JCQltYXRjaGVzID0gRnVuY3Rpb25DYWxsMkNvbGwoZmlu Zm8sIGNvbGxvaWQsIGNvbHVtbi0+YnZfdmFsdWVzWzFdLAotCQkJCQkJCQkJCXZhbHVlKTsK LQkJCWJyZWFrOwotCQljYXNlIEJUR3JlYXRlckVxdWFsU3RyYXRlZ3lOdW1iZXI6Ci0JCWNh c2UgQlRHcmVhdGVyU3RyYXRlZ3lOdW1iZXI6Ci0JCQlmaW5mbyA9IG1pbm1heF9nZXRfc3Ry YXRlZ3lfcHJvY2luZm8oYmRlc2MsIGF0dG5vLCBzdWJ0eXBlLAotCQkJCQkJCQkJCQkJIGtl eS0+c2tfc3RyYXRlZ3kpOwotCQkJbWF0Y2hlcyA9IEZ1bmN0aW9uQ2FsbDJDb2xsKGZpbmZv LCBjb2xsb2lkLCBjb2x1bW4tPmJ2X3ZhbHVlc1sxXSwKLQkJCQkJCQkJCQl2YWx1ZSk7Ci0J CQlicmVhazsKLQkJZGVmYXVsdDoKLQkJCS8qIHNob3VsZG4ndCBoYXBwZW4gKi8KLQkJCWVs b2coRVJST1IsICJpbnZhbGlkIHN0cmF0ZWd5IG51bWJlciAlZCIsIGtleS0+c2tfc3RyYXRl Z3kpOwotCQkJbWF0Y2hlcyA9IDA7Ci0JCQlicmVhazsKKwkJfQogCX0KIAogCVBHX1JFVFVS Tl9EQVRVTShtYXRjaGVzKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmlu L2JyaW5fdmFsaWRhdGUuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW5fdmFsaWRh dGUuYwppbmRleCBjOGVkZmIzNzU5Li4wODg5ZTI0YmMwIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9hY2Nlc3MvYnJpbi9icmluX3ZhbGlkYXRlLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2JyaW4vYnJpbl92YWxpZGF0ZS5jCkBAIC0xMDgsNiArMTA4LDEwIEBAIGJyaW52YWxp ZGF0ZShPaWQgb3BjbGFzc29pZCkKIAkJCWNhc2UgQlJJTl9QUk9DTlVNX09QVElPTlM6CiAJ CQkJb2sgPSBjaGVja19hbW9wdHNwcm9jX3NpZ25hdHVyZShwcm9jZm9ybS0+YW1wcm9jKTsK IAkJCQlicmVhazsKKwkJCWNhc2UgQlJJTl9QUk9DTlVNX1BSRVBST0NFU1M6CisJCQkJb2sg PSBjaGVja19hbXByb2Nfc2lnbmF0dXJlKHByb2Nmb3JtLT5hbXByb2MsIElOVEVSTkFMT0lE LCB0cnVlLAorCQkJCQkJCQkJCQkyLCAyLCBJTlRFUk5BTE9JRCwgSU5URVJOQUxPSUQpOwor CQkJCWJyZWFrOwogCQkJZGVmYXVsdDoKIAkJCQkvKiBDb21wbGFpbiBpZiBpdCdzIG5vdCBh IHZhbGlkIG9wdGlvbmFsIHByb2MgbnVtYmVyICovCiAJCQkJaWYgKHByb2Nmb3JtLT5hbXBy b2NudW0gPCBCUklOX0ZJUlNUX09QVElPTkFMX1BST0NOVU0gfHwKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfYW1wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cv cGdfYW1wcm9jLmRhdAppbmRleCA1Yjk1MDEyOWRlLi4xNjY2ODFjMzFlIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2FtcHJvYy5kYXQKKysrIGIvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19hbXByb2MuZGF0CkBAIC04MDQsNiArODA0LDggQEAKICAgYW1wcm9jID0+ ICdicmluX21pbm1heF9jb25zaXN0ZW50JyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4v Ynl0ZWFfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdieXRlYScsCiAgIGFtcHJv Y3JpZ2h0dHlwZSA9PiAnYnl0ZWEnLCBhbXByb2NudW0gPT4gJzQnLCBhbXByb2MgPT4gJ2Jy aW5fbWlubWF4X3VuaW9uJyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vYnl0ZWFfbWlu bWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdieXRlYScsCisgIGFtcHJvY3JpZ2h0dHlw ZSA9PiAnYnl0ZWEnLCBhbXByb2NudW0gPT4gJzYnLCBhbXByb2MgPT4gJ2JyaW5fbWlubWF4 X3ByZXByb2Nlc3MnIH0sCiAKICMgYmxvb20gYnl0ZWEKIHsgYW1wcm9jZmFtaWx5ID0+ICdi cmluL2J5dGVhX2Jsb29tX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdieXRlYScsCkBAIC04 MzUsNiArODM3LDggQEAKICAgYW1wcm9jID0+ICdicmluX21pbm1heF9jb25zaXN0ZW50JyB9 LAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vY2hhcl9taW5tYXhfb3BzJywgYW1wcm9jbGVm dHR5cGUgPT4gJ2NoYXInLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2NoYXInLCBhbXByb2Nu dW0gPT4gJzQnLCBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3VuaW9uJyB9LAoreyBhbXByb2Nm YW1pbHkgPT4gJ2JyaW4vY2hhcl9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2No YXInLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ2NoYXInLCBhbXByb2NudW0gPT4gJzYnLCBh bXByb2MgPT4gJ2JyaW5fbWlubWF4X3ByZXByb2Nlc3MnIH0sCiAKICMgYmxvb20gImNoYXIi CiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9jaGFyX2Jsb29tX29wcycsIGFtcHJvY2xlZnR0 eXBlID0+ICdjaGFyJywKQEAgLTg2NCw2ICs4NjgsOCBAQAogICBhbXByb2MgPT4gJ2JyaW5f bWlubWF4X2NvbnNpc3RlbnQnIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9uYW1lX21p bm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnbmFtZScsCiAgIGFtcHJvY3JpZ2h0dHlw ZSA9PiAnbmFtZScsIGFtcHJvY251bSA9PiAnNCcsIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhf dW5pb24nIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9uYW1lX21pbm1heF9vcHMnLCBh bXByb2NsZWZ0dHlwZSA9PiAnbmFtZScsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnbmFtZScs IGFtcHJvY251bSA9PiAnNicsIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfcHJlcHJvY2Vzcycg fSwKIAogIyBibG9vbSBuYW1lCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9uYW1lX2Jsb29t X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICduYW1lJywKQEAgLTg5Myw2ICs4OTksOCBAQAog ICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X2NvbnNpc3RlbnQnIH0sCiB7IGFtcHJvY2ZhbWls eSA9PiAnYnJpbi9pbnRlZ2VyX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnaW50 OCcsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnaW50OCcsIGFtcHJvY251bSA9PiAnNCcsIGFt cHJvYyA9PiAnYnJpbl9taW5tYXhfdW5pb24nIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJp bi9pbnRlZ2VyX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnaW50OCcsCisgIGFt cHJvY3JpZ2h0dHlwZSA9PiAnaW50OCcsIGFtcHJvY251bSA9PiAnNicsIGFtcHJvYyA9PiAn YnJpbl9taW5tYXhfcHJlcHJvY2VzcycgfSwKIAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4v aW50ZWdlcl9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2ludDInLAogICBhbXBy b2NyaWdodHR5cGUgPT4gJ2ludDInLCBhbXByb2NudW0gPT4gJzEnLApAQCAtOTA1LDYgKzkx Myw4IEBACiAgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfY29uc2lzdGVudCcgfSwKIHsgYW1w cm9jZmFtaWx5ID0+ICdicmluL2ludGVnZXJfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBl ID0+ICdpbnQyJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdpbnQyJywgYW1wcm9jbnVtID0+ ICc0JywgYW1wcm9jID0+ICdicmluX21pbm1heF91bmlvbicgfSwKK3sgYW1wcm9jZmFtaWx5 ID0+ICdicmluL2ludGVnZXJfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdpbnQy JywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICdpbnQyJywgYW1wcm9jbnVtID0+ICc2JywgYW1w cm9jID0+ICdicmluX21pbm1heF9wcmVwcm9jZXNzJyB9LAogCiB7IGFtcHJvY2ZhbWlseSA9 PiAnYnJpbi9pbnRlZ2VyX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnaW50NCcs CiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnaW50NCcsIGFtcHJvY251bSA9PiAnMScsCkBAIC05 MTcsNiArOTI3LDggQEAKICAgYW1wcm9jID0+ICdicmluX21pbm1heF9jb25zaXN0ZW50JyB9 LAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vaW50ZWdlcl9taW5tYXhfb3BzJywgYW1wcm9j bGVmdHR5cGUgPT4gJ2ludDQnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2ludDQnLCBhbXBy b2NudW0gPT4gJzQnLCBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3VuaW9uJyB9LAoreyBhbXBy b2NmYW1pbHkgPT4gJ2JyaW4vaW50ZWdlcl9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUg PT4gJ2ludDQnLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ2ludDQnLCBhbXByb2NudW0gPT4g JzYnLCBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3ByZXByb2Nlc3MnIH0sCiAKICMgbWlubWF4 IG11bHRpIGludGVnZXI6IGludDIsIGludDQsIGludDgKIHsgYW1wcm9jZmFtaWx5ID0+ICdi cmluL2ludGVnZXJfbWlubWF4X211bHRpX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdpbnQy JywKQEAgLTEwMzQsNiArMTA0Niw4IEBACiAgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfY29u c2lzdGVudCcgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL3RleHRfbWlubWF4X29wcycs IGFtcHJvY2xlZnR0eXBlID0+ICd0ZXh0JywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICd0ZXh0 JywgYW1wcm9jbnVtID0+ICc0JywgYW1wcm9jID0+ICdicmluX21pbm1heF91bmlvbicgfSwK K3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL3RleHRfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0 eXBlID0+ICd0ZXh0JywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICd0ZXh0JywgYW1wcm9jbnVt ID0+ICc2JywgYW1wcm9jID0+ICdicmluX21pbm1heF9wcmVwcm9jZXNzJyB9LAogCiAjIGJs b29tIHRleHQKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL3RleHRfYmxvb21fb3BzJywgYW1w cm9jbGVmdHR5cGUgPT4gJ3RleHQnLApAQCAtMTA2Miw2ICsxMDc2LDggQEAKICAgYW1wcm9j ID0+ICdicmluX21pbm1heF9jb25zaXN0ZW50JyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2Jy aW4vb2lkX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnb2lkJywKICAgYW1wcm9j cmlnaHR0eXBlID0+ICdvaWQnLCBhbXByb2NudW0gPT4gJzQnLCBhbXByb2MgPT4gJ2JyaW5f bWlubWF4X3VuaW9uJyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vb2lkX21pbm1heF9v cHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnb2lkJywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICdv aWQnLCBhbXByb2NudW0gPT4gJzYnLCBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3ByZXByb2Nl c3MnIH0sCiAKICMgbWlubWF4IG11bHRpIG9pZAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4v b2lkX21pbm1heF9tdWx0aV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnb2lkJywKQEAgLTEx MTAsNiArMTEyNiw4IEBACiAgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfY29uc2lzdGVudCcg fSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL3RpZF9taW5tYXhfb3BzJywgYW1wcm9jbGVm dHR5cGUgPT4gJ3RpZCcsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAndGlkJywgYW1wcm9jbnVt ID0+ICc0JywgYW1wcm9jID0+ICdicmluX21pbm1heF91bmlvbicgfSwKK3sgYW1wcm9jZmFt aWx5ID0+ICdicmluL3RpZF9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3RpZCcs CisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAndGlkJywgYW1wcm9jbnVtID0+ICc2JywgYW1wcm9j ID0+ICdicmluX21pbm1heF9wcmVwcm9jZXNzJyB9LAogCiAjIGJsb29tIHRpZAogeyBhbXBy b2NmYW1pbHkgPT4gJ2JyaW4vdGlkX2Jsb29tX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICd0 aWQnLApAQCAtMTE2MCw2ICsxMTc4LDkgQEAKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL2Zs b2F0X21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnZmxvYXQ0JywKICAgYW1wcm9j cmlnaHR0eXBlID0+ICdmbG9hdDQnLCBhbXByb2NudW0gPT4gJzQnLAogICBhbXByb2MgPT4g J2JyaW5fbWlubWF4X3VuaW9uJyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vZmxvYXRf bWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdmbG9hdDQnLAorICBhbXByb2NyaWdo dHR5cGUgPT4gJ2Zsb2F0NCcsIGFtcHJvY251bSA9PiAnNicsCisgIGFtcHJvYyA9PiAnYnJp bl9taW5tYXhfcHJlcHJvY2VzcycgfSwKIAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vZmxv YXRfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdmbG9hdDgnLAogICBhbXByb2Ny aWdodHR5cGUgPT4gJ2Zsb2F0OCcsIGFtcHJvY251bSA9PiAnMScsCkBAIC0xMTczLDYgKzEx OTQsOSBAQAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vZmxvYXRfbWlubWF4X29wcycsIGFt cHJvY2xlZnR0eXBlID0+ICdmbG9hdDgnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2Zsb2F0 OCcsIGFtcHJvY251bSA9PiAnNCcsCiAgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfdW5pb24n IH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9mbG9hdF9taW5tYXhfb3BzJywgYW1wcm9j bGVmdHR5cGUgPT4gJ2Zsb2F0OCcsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnZmxvYXQ4Jywg YW1wcm9jbnVtID0+ICc2JywKKyAgYW1wcm9jID0+ICdicmluX21pbm1heF9wcmVwcm9jZXNz JyB9LAogCiAjIG1pbm1heCBtdWx0aSBmbG9hdAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4v ZmxvYXRfbWlubWF4X211bHRpX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdmbG9hdDQnLApA QCAtMTI2MSw2ICsxMjg1LDkgQEAKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL21hY2FkZHJf bWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdtYWNhZGRyJywKICAgYW1wcm9jcmln aHR0eXBlID0+ICdtYWNhZGRyJywgYW1wcm9jbnVtID0+ICc0JywKICAgYW1wcm9jID0+ICdi cmluX21pbm1heF91bmlvbicgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL21hY2FkZHJf bWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdtYWNhZGRyJywKKyAgYW1wcm9jcmln aHR0eXBlID0+ICdtYWNhZGRyJywgYW1wcm9jbnVtID0+ICc2JywKKyAgYW1wcm9jID0+ICdi cmluX21pbm1heF9wcmVwcm9jZXNzJyB9LAogCiAjIG1pbm1heCBtdWx0aSBtYWNhZGRyCiB7 IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9tYWNhZGRyX21pbm1heF9tdWx0aV9vcHMnLCBhbXBy b2NsZWZ0dHlwZSA9PiAnbWFjYWRkcicsCkBAIC0xMzE0LDYgKzEzNDEsOSBAQAogeyBhbXBy b2NmYW1pbHkgPT4gJ2JyaW4vbWFjYWRkcjhfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBl ID0+ICdtYWNhZGRyOCcsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnbWFjYWRkcjgnLCBhbXBy b2NudW0gPT4gJzQnLAogICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3VuaW9uJyB9LAoreyBh bXByb2NmYW1pbHkgPT4gJ2JyaW4vbWFjYWRkcjhfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0 eXBlID0+ICdtYWNhZGRyOCcsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnbWFjYWRkcjgnLCBh bXByb2NudW0gPT4gJzYnLAorICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3ByZXByb2Nlc3Mn IH0sCiAKICMgbWlubWF4IG11bHRpIG1hY2FkZHI4CiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJp bi9tYWNhZGRyOF9taW5tYXhfbXVsdGlfb3BzJywKQEAgLTEzNjYsNiArMTM5Niw4IEBACiAg IGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfY29uc2lzdGVudCcgfSwKIHsgYW1wcm9jZmFtaWx5 ID0+ICdicmluL25ldHdvcmtfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdpbmV0 JywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdpbmV0JywgYW1wcm9jbnVtID0+ICc0JywgYW1w cm9jID0+ICdicmluX21pbm1heF91bmlvbicgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmlu L25ldHdvcmtfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdpbmV0JywKKyAgYW1w cm9jcmlnaHR0eXBlID0+ICdpbmV0JywgYW1wcm9jbnVtID0+ICc2JywgYW1wcm9jID0+ICdi cmluX21pbm1heF9wcmVwcm9jZXNzJyB9LAogCiAjIG1pbm1heCBtdWx0aSBpbmV0CiB7IGFt cHJvY2ZhbWlseSA9PiAnYnJpbi9uZXR3b3JrX21pbm1heF9tdWx0aV9vcHMnLCBhbXByb2Ns ZWZ0dHlwZSA9PiAnaW5ldCcsCkBAIC0xNDM2LDYgKzE0NjgsOSBAQAogeyBhbXByb2NmYW1p bHkgPT4gJ2JyaW4vYnBjaGFyX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnYnBj aGFyJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdicGNoYXInLCBhbXByb2NudW0gPT4gJzQn LAogICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3VuaW9uJyB9LAoreyBhbXByb2NmYW1pbHkg PT4gJ2JyaW4vYnBjaGFyX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnYnBjaGFy JywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICdicGNoYXInLCBhbXByb2NudW0gPT4gJzYnLAor ICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3ByZXByb2Nlc3MnIH0sCiAKICMgYmxvb20gY2hh cmFjdGVyCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9icGNoYXJfYmxvb21fb3BzJywgYW1w cm9jbGVmdHR5cGUgPT4gJ2JwY2hhcicsCkBAIC0xNDY3LDYgKzE1MDIsOCBAQAogICBhbXBy b2MgPT4gJ2JyaW5fbWlubWF4X2NvbnNpc3RlbnQnIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAn YnJpbi90aW1lX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAndGltZScsCiAgIGFt cHJvY3JpZ2h0dHlwZSA9PiAndGltZScsIGFtcHJvY251bSA9PiAnNCcsIGFtcHJvYyA9PiAn YnJpbl9taW5tYXhfdW5pb24nIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi90aW1lX21p bm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAndGltZScsCisgIGFtcHJvY3JpZ2h0dHlw ZSA9PiAndGltZScsIGFtcHJvY251bSA9PiAnNicsIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhf cHJlcHJvY2VzcycgfSwKIAogIyBtaW5tYXggbXVsdGkgdGltZSB3aXRob3V0IHRpbWUgem9u ZQogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vdGltZV9taW5tYXhfbXVsdGlfb3BzJywgYW1w cm9jbGVmdHR5cGUgPT4gJ3RpbWUnLApAQCAtMTUxNyw2ICsxNTU0LDkgQEAKIHsgYW1wcm9j ZmFtaWx5ID0+ICdicmluL2RhdGV0aW1lX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9 PiAndGltZXN0YW1wJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICd0aW1lc3RhbXAnLCBhbXBy b2NudW0gPT4gJzQnLAogICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3VuaW9uJyB9LAoreyBh bXByb2NmYW1pbHkgPT4gJ2JyaW4vZGF0ZXRpbWVfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0 eXBlID0+ICd0aW1lc3RhbXAnLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ3RpbWVzdGFtcCcs IGFtcHJvY251bSA9PiAnNicsCisgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfcHJlcHJvY2Vz cycgfSwKIAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vZGF0ZXRpbWVfbWlubWF4X29wcycs IGFtcHJvY2xlZnR0eXBlID0+ICd0aW1lc3RhbXB0eicsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9 PiAndGltZXN0YW1wdHonLCBhbXByb2NudW0gPT4gJzEnLApAQCAtMTUzMCw2ICsxNTcwLDkg QEAKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL2RhdGV0aW1lX21pbm1heF9vcHMnLCBhbXBy b2NsZWZ0dHlwZSA9PiAndGltZXN0YW1wdHonLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ3Rp bWVzdGFtcHR6JywgYW1wcm9jbnVtID0+ICc0JywKICAgYW1wcm9jID0+ICdicmluX21pbm1h eF91bmlvbicgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL2RhdGV0aW1lX21pbm1heF9v cHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAndGltZXN0YW1wdHonLAorICBhbXByb2NyaWdodHR5 cGUgPT4gJ3RpbWVzdGFtcHR6JywgYW1wcm9jbnVtID0+ICc2JywKKyAgYW1wcm9jID0+ICdi cmluX21pbm1heF9wcmVwcm9jZXNzJyB9LAogCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9k YXRldGltZV9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2RhdGUnLAogICBhbXBy b2NyaWdodHR5cGUgPT4gJ2RhdGUnLCBhbXByb2NudW0gPT4gJzEnLApAQCAtMTU0Miw2ICsx NTg1LDggQEAKICAgYW1wcm9jID0+ICdicmluX21pbm1heF9jb25zaXN0ZW50JyB9LAogeyBh bXByb2NmYW1pbHkgPT4gJ2JyaW4vZGF0ZXRpbWVfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0 eXBlID0+ICdkYXRlJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdkYXRlJywgYW1wcm9jbnVt ID0+ICc0JywgYW1wcm9jID0+ICdicmluX21pbm1heF91bmlvbicgfSwKK3sgYW1wcm9jZmFt aWx5ID0+ICdicmluL2RhdGV0aW1lX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAn ZGF0ZScsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnZGF0ZScsIGFtcHJvY251bSA9PiAnNics IGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfcHJlcHJvY2VzcycgfSwKIAogIyBtaW5tYXggbXVs dGkgZGF0ZXRpbWUgKGRhdGUsIHRpbWVzdGFtcCwgdGltZXN0YW1wdHopCiB7IGFtcHJvY2Zh bWlseSA9PiAnYnJpbi9kYXRldGltZV9taW5tYXhfbXVsdGlfb3BzJywKQEAgLTE2NjgsNiAr MTcxMyw5IEBACiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9pbnRlcnZhbF9taW5tYXhfb3Bz JywgYW1wcm9jbGVmdHR5cGUgPT4gJ2ludGVydmFsJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ ICdpbnRlcnZhbCcsIGFtcHJvY251bSA9PiAnNCcsCiAgIGFtcHJvYyA9PiAnYnJpbl9taW5t YXhfdW5pb24nIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9pbnRlcnZhbF9taW5tYXhf b3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2ludGVydmFsJywKKyAgYW1wcm9jcmlnaHR0eXBl ID0+ICdpbnRlcnZhbCcsIGFtcHJvY251bSA9PiAnNicsCisgIGFtcHJvYyA9PiAnYnJpbl9t aW5tYXhfcHJlcHJvY2VzcycgfSwKIAogIyBtaW5tYXggbXVsdGkgaW50ZXJ2YWwKIHsgYW1w cm9jZmFtaWx5ID0+ICdicmluL2ludGVydmFsX21pbm1heF9tdWx0aV9vcHMnLApAQCAtMTcy MSw2ICsxNzY5LDkgQEAKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL3RpbWV0el9taW5tYXhf b3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3RpbWV0eicsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9 PiAndGltZXR6JywgYW1wcm9jbnVtID0+ICc0JywKICAgYW1wcm9jID0+ICdicmluX21pbm1h eF91bmlvbicgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL3RpbWV0el9taW5tYXhfb3Bz JywgYW1wcm9jbGVmdHR5cGUgPT4gJ3RpbWV0eicsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAn dGltZXR6JywgYW1wcm9jbnVtID0+ICc2JywKKyAgYW1wcm9jID0+ICdicmluX21pbm1heF9w cmVwcm9jZXNzJyB9LAogCiAjIG1pbm1heCBtdWx0aSB0aW1lIHdpdGggdGltZSB6b25lCiB7 IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi90aW1ldHpfbWlubWF4X211bHRpX29wcycsIGFtcHJv Y2xlZnR0eXBlID0+ICd0aW1ldHonLApAQCAtMTc3MSw2ICsxODIyLDggQEAKICAgYW1wcm9j ID0+ICdicmluX21pbm1heF9jb25zaXN0ZW50JyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2Jy aW4vYml0X21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnYml0JywKICAgYW1wcm9j cmlnaHR0eXBlID0+ICdiaXQnLCBhbXByb2NudW0gPT4gJzQnLCBhbXByb2MgPT4gJ2JyaW5f bWlubWF4X3VuaW9uJyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vYml0X21pbm1heF9v cHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnYml0JywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICdi aXQnLCBhbXByb2NudW0gPT4gJzYnLCBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3ByZXByb2Nl c3MnIH0sCiAKICMgbWlubWF4IGJpdCB2YXJ5aW5nCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJp bi92YXJiaXRfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICd2YXJiaXQnLApAQCAt MTc4NSw2ICsxODM4LDkgQEAKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL3ZhcmJpdF9taW5t YXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3ZhcmJpdCcsCiAgIGFtcHJvY3JpZ2h0dHlw ZSA9PiAndmFyYml0JywgYW1wcm9jbnVtID0+ICc0JywKICAgYW1wcm9jID0+ICdicmluX21p bm1heF91bmlvbicgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL3ZhcmJpdF9taW5tYXhf b3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3ZhcmJpdCcsCisgIGFtcHJvY3JpZ2h0dHlwZSA9 PiAndmFyYml0JywgYW1wcm9jbnVtID0+ICc2JywKKyAgYW1wcm9jID0+ICdicmluX21pbm1h eF9wcmVwcm9jZXNzJyB9LAogCiAjIG1pbm1heCBudW1lcmljCiB7IGFtcHJvY2ZhbWlseSA9 PiAnYnJpbi9udW1lcmljX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnbnVtZXJp YycsCkBAIC0xNzk5LDYgKzE4NTUsOSBAQAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vbnVt ZXJpY19taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ251bWVyaWMnLAogICBhbXBy b2NyaWdodHR5cGUgPT4gJ251bWVyaWMnLCBhbXByb2NudW0gPT4gJzQnLAogICBhbXByb2Mg PT4gJ2JyaW5fbWlubWF4X3VuaW9uJyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vbnVt ZXJpY19taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ251bWVyaWMnLAorICBhbXBy b2NyaWdodHR5cGUgPT4gJ251bWVyaWMnLCBhbXByb2NudW0gPT4gJzYnLAorICBhbXByb2Mg PT4gJ2JyaW5fbWlubWF4X3ByZXByb2Nlc3MnIH0sCiAKICMgbWlubWF4IG11bHRpIG51bWVy aWMKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL251bWVyaWNfbWlubWF4X211bHRpX29wcycs IGFtcHJvY2xlZnR0eXBlID0+ICdudW1lcmljJywKQEAgLTE4NTEsNiArMTkxMCw4IEBACiAg IGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfY29uc2lzdGVudCcgfSwKIHsgYW1wcm9jZmFtaWx5 ID0+ICdicmluL3V1aWRfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICd1dWlkJywK ICAgYW1wcm9jcmlnaHR0eXBlID0+ICd1dWlkJywgYW1wcm9jbnVtID0+ICc0JywgYW1wcm9j ID0+ICdicmluX21pbm1heF91bmlvbicgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL3V1 aWRfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICd1dWlkJywKKyAgYW1wcm9jcmln aHR0eXBlID0+ICd1dWlkJywgYW1wcm9jbnVtID0+ICc2JywgYW1wcm9jID0+ICdicmluX21p bm1heF9wcmVwcm9jZXNzJyB9LAogCiAjIG1pbm1heCBtdWx0aSB1dWlkCiB7IGFtcHJvY2Zh bWlseSA9PiAnYnJpbi91dWlkX21pbm1heF9tdWx0aV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9 PiAndXVpZCcsCkBAIC0xOTI0LDYgKzE5ODUsOSBAQAogeyBhbXByb2NmYW1pbHkgPT4gJ2Jy aW4vcGdfbHNuX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAncGdfbHNuJywKICAg YW1wcm9jcmlnaHR0eXBlID0+ICdwZ19sc24nLCBhbXByb2NudW0gPT4gJzQnLAogICBhbXBy b2MgPT4gJ2JyaW5fbWlubWF4X3VuaW9uJyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4v cGdfbHNuX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAncGdfbHNuJywKKyAgYW1w cm9jcmlnaHR0eXBlID0+ICdwZ19sc24nLCBhbXByb2NudW0gPT4gJzYnLAorICBhbXByb2Mg PT4gJ2JyaW5fbWlubWF4X3ByZXByb2Nlc3MnIH0sCiAKICMgbWlubWF4IG11bHRpIHBnX2xz bgogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vcGdfbHNuX21pbm1heF9tdWx0aV9vcHMnLCBh bXByb2NsZWZ0dHlwZSA9PiAncGdfbHNuJywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2Nh dGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0Cmlu ZGV4IDY5OTYwNzM5ODkuLjhmMTc1MzIwOTQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2Nh dGFsb2cvcGdfcHJvYy5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRh dApAQCAtODUyNyw2ICs4NTI3LDkgQEAKIHsgb2lkID0+ICczMzg2JywgZGVzY3IgPT4gJ0JS SU4gbWlubWF4IHN1cHBvcnQnLAogICBwcm9uYW1lID0+ICdicmluX21pbm1heF91bmlvbics IHByb3JldHR5cGUgPT4gJ2Jvb2wnLAogICBwcm9hcmd0eXBlcyA9PiAnaW50ZXJuYWwgaW50 ZXJuYWwgaW50ZXJuYWwnLCBwcm9zcmMgPT4gJ2JyaW5fbWlubWF4X3VuaW9uJyB9LAoreyBv aWQgPT4gJzkzMjcnLCBkZXNjciA9PiAnQlJJTiBtaW5tYXggc3VwcG9ydCcsCisgIHByb25h bWUgPT4gJ2JyaW5fbWlubWF4X3ByZXByb2Nlc3MnLCBwcm9yZXR0eXBlID0+ICdpbnRlcm5h bCcsCisgIHByb2FyZ3R5cGVzID0+ICdpbnRlcm5hbCBpbnRlcm5hbCcsIHByb3NyYyA9PiAn YnJpbl9taW5tYXhfcHJlcHJvY2VzcycgfSwKIAogIyBCUklOIG1pbm1heCBtdWx0aQogeyBv aWQgPT4gJzQ2MTYnLCBkZXNjciA9PiAnQlJJTiBtdWx0aSBtaW5tYXggc3VwcG9ydCcsCmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2FtdXRpbHMub3V0IGIvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9hbXV0aWxzLm91dAppbmRleCA3YWI2MTEzYzYxLi5m M2UxZmJkMmFlIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2FtdXRp bHMub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvYW11dGlscy5vdXQKQEAg LTEwMiw3ICsxMDIsNyBAQCBzZWxlY3QgcHJvcCwKICBvcmRlcmFibGUgICAgICAgICAgfCB0 ICAgICB8IGYgICAgfCBmICAgIHwgZiAgICAgICAgICAgIHwgZiAgICAgICAgICAgfCBmICAg fCBmCiAgZGlzdGFuY2Vfb3JkZXJhYmxlIHwgZiAgICAgfCBmICAgIHwgdCAgICB8IGYgICAg ICAgICAgICB8IHQgICAgICAgICAgIHwgZiAgIHwgZgogIHJldHVybmFibGUgICAgICAgICB8 IHQgICAgIHwgZiAgICB8IGYgICAgfCB0ICAgICAgICAgICAgfCB0ICAgICAgICAgICB8IGYg ICB8IGYKLSBzZWFyY2hfYXJyYXkgICAgICAgfCB0ICAgICB8IGYgICAgfCBmICAgIHwgZiAg ICAgICAgICAgIHwgZiAgICAgICAgICAgfCBmICAgfCBmCisgc2VhcmNoX2FycmF5ICAgICAg IHwgdCAgICAgfCBmICAgIHwgZiAgICB8IGYgICAgICAgICAgICB8IGYgICAgICAgICAgIHwg ZiAgIHwgdAogIHNlYXJjaF9udWxscyAgICAgICB8IHQgICAgIHwgZiAgICB8IHQgICAgfCB0 ICAgICAgICAgICAgfCB0ICAgICAgICAgICB8IGYgICB8IHQKICBib2d1cyAgICAgICAgICAg ICAgfCAgICAgICB8ICAgICAgfCAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgICAgICAg fCAgICAgfCAKICgxMCByb3dzKQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9icmluLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvYnJpbi5vdXQKaW5k ZXggZjBiN2RlNWJmNy4uMjQzNjFiOTBlYiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9icmluLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Jy aW4ub3V0CkBAIC01NzIsMyArNTcyLDg2MSBAQCBDUkVBVEUgVU5MT0dHRUQgVEFCTEUgYnJp bnRlc3RfdW5sb2dnZWQgKG4gbnVtcmFuZ2UpOwogQ1JFQVRFIElOREVYIGJyaW5pZHhfdW5s b2dnZWQgT04gYnJpbnRlc3RfdW5sb2dnZWQgVVNJTkcgYnJpbiAobik7CiBJTlNFUlQgSU5U TyBicmludGVzdF91bmxvZ2dlZCBWQUxVRVMgKG51bXJhbmdlKDAsIDJeMTAwMDo6bnVtZXJp YykpOwogRFJPUCBUQUJMRSBicmludGVzdF91bmxvZ2dlZDsKKy0tIGRvIHNvbWUgdGVzdHMg b24gSU4gY2xhdXNlcyBmb3Igc2ltcGxlIGRhdGEgdHlwZXMKK0NSRUFURSBUQUJMRSBicmlu X2luX3Rlc3RfMSAoYSBJTlQsIGIgQklHSU5UKSBXSVRIIChmaWxsZmFjdG9yPTEwKTsKK0lO U0VSVCBJTlRPIGJyaW5faW5fdGVzdF8xCitTRUxFQ1QgaS81ICsgbW9kKDk5MSAqIGkgKyA2 MTcsIDIwKSwKKyAgICAgICBpLzEwICsgbW9kKDg1MyAqIGkgKyA0OTEsIDMwKQorICBGUk9N IGdlbmVyYXRlX3NlcmllcygxLDEwMDApIHMoaSk7CitDUkVBVEUgSU5ERVggYnJpbl9pbl90 ZXN0XzFfaWR4XzEgT04gYnJpbl9pbl90ZXN0XzEgVVNJTkcgYnJpbiAoYSBpbnQ0X21pbm1h eF9vcHMpIFdJVEggKHBhZ2VzX3Blcl9yYW5nZT0xKTsKK0NSRUFURSBJTkRFWCBicmluX2lu X3Rlc3RfMV9pZHhfMiBPTiBicmluX2luX3Rlc3RfMSBVU0lORyBicmluIChiIGludDhfbWlu bWF4X29wcykgV0lUSCAocGFnZXNfcGVyX3JhbmdlPTEpOworU0VUIGVuYWJsZV9zZXFzY2Fu PW9mZjsKKy0tIGludDogZXF1YWxpdGllcworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNU IENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0XzEgV0hFUkUgYSBJTiAoMTEzKTsKKyAgICAg ICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyBBZ2dyZWdhdGUKKyAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIGJyaW5faW5fdGVzdF8x CisgICAgICAgICBSZWNoZWNrIENvbmQ6IChhID0gMTEzKQorICAgICAgICAgLT4gIEJpdG1h cCBJbmRleCBTY2FuIG9uIGJyaW5faW5fdGVzdF8xX2lkeF8xCisgICAgICAgICAgICAgICBJ bmRleCBDb25kOiAoYSA9IDExMykKKyg1IHJvd3MpCisKK1NFTEVDVCBDT1VOVCgqKSBGUk9N IGJyaW5faW5fdGVzdF8xIFdIRVJFIGEgSU4gKDExMyk7CisgY291bnQgCistLS0tLS0tCisg ICAgIDgKKygxIHJvdykKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCop IEZST00gYnJpbl9pbl90ZXN0XzEgV0hFUkUgYSBJTiAoMTEzLCBOVUxMKTsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiBi cmluX2luX3Rlc3RfMQorICAgICAgICAgUmVjaGVjayBDb25kOiAoYSA9IEFOWSAoJ3sxMTMs TlVMTH0nOjppbnRlZ2VyW10pKQorICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9u IGJyaW5faW5fdGVzdF8xX2lkeF8xCisgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoYSA9 IEFOWSAoJ3sxMTMsTlVMTH0nOjppbnRlZ2VyW10pKQorKDUgcm93cykKKworU0VMRUNUIENP VU5UKCopIEZST00gYnJpbl9pbl90ZXN0XzEgV0hFUkUgYSBJTiAoMTEzLCBOVUxMKTsKKyBj b3VudCAKKy0tLS0tLS0KKyAgICAgOAorKDEgcm93KQorCitFWFBMQUlOIChDT1NUUyBPRkYp CitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfMSBXSEVSRSBhIElOIChOVUxM LCBOVUxMKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAg ICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBC aXRtYXAgSGVhcCBTY2FuIG9uIGJyaW5faW5fdGVzdF8xCisgICAgICAgICBSZWNoZWNrIENv bmQ6IChhID0gQU5ZICgne05VTEwsTlVMTH0nOjppbnRlZ2VyW10pKQorICAgICAgICAgLT4g IEJpdG1hcCBJbmRleCBTY2FuIG9uIGJyaW5faW5fdGVzdF8xX2lkeF8xCisgICAgICAgICAg ICAgICBJbmRleCBDb25kOiAoYSA9IEFOWSAoJ3tOVUxMLE5VTEx9Jzo6aW50ZWdlcltdKSkK Kyg1IHJvd3MpCisKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF8xIFdIRVJF IGEgSU4gKE5VTEwsIE5VTEwpOworIGNvdW50IAorLS0tLS0tLQorICAgICAwCisoMSByb3cp CisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5f dGVzdF8xIFdIRVJFIGEgSU4gKDExMywgMTc3KTsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFn Z3JlZ2F0ZQorICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gYnJpbl9pbl90ZXN0XzEKKyAg ICAgICAgIFJlY2hlY2sgQ29uZDogKGEgPSBBTlkgKCd7MTEzLDE3N30nOjppbnRlZ2VyW10p KQorICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIGJyaW5faW5fdGVzdF8xX2lk eF8xCisgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoYSA9IEFOWSAoJ3sxMTMsMTc3fSc6 OmludGVnZXJbXSkpCisoNSByb3dzKQorCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2lu X3Rlc3RfMSBXSEVSRSBhIElOICgxMTMsIDE3Nyk7CisgY291bnQgCistLS0tLS0tCisgICAg MTYKKygxIHJvdykKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIEZS T00gYnJpbl9pbl90ZXN0XzEgV0hFUkUgYSBJTiAoMTEzLCAxNzcsIE5VTEwpOworICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEJpdG1hcCBIZWFw IFNjYW4gb24gYnJpbl9pbl90ZXN0XzEKKyAgICAgICAgIFJlY2hlY2sgQ29uZDogKGEgPSBB TlkgKCd7MTEzLDE3NyxOVUxMfSc6OmludGVnZXJbXSkpCisgICAgICAgICAtPiAgQml0bWFw IEluZGV4IFNjYW4gb24gYnJpbl9pbl90ZXN0XzFfaWR4XzEKKyAgICAgICAgICAgICAgIElu ZGV4IENvbmQ6IChhID0gQU5ZICgnezExMywxNzcsTlVMTH0nOjppbnRlZ2VyW10pKQorKDUg cm93cykKKworU0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0XzEgV0hFUkUgYSBJ TiAoMTEzLCAxNzcsIE5VTEwpOworIGNvdW50IAorLS0tLS0tLQorICAgIDE2CisoMSByb3cp CisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5f dGVzdF8xIFdIRVJFIGEgSU4gKDExMywgMTc3LCAyNSk7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIGJyaW5faW5f dGVzdF8xCisgICAgICAgICBSZWNoZWNrIENvbmQ6IChhID0gQU5ZICgnezExMywxNzcsMjV9 Jzo6aW50ZWdlcltdKSkKKyAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBicmlu X2luX3Rlc3RfMV9pZHhfMQorICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKGEgPSBBTlkg KCd7MTEzLDE3NywyNX0nOjppbnRlZ2VyW10pKQorKDUgcm93cykKKworU0VMRUNUIENPVU5U KCopIEZST00gYnJpbl9pbl90ZXN0XzEgV0hFUkUgYSBJTiAoMTEzLCAxNzcsIDI1KTsKKyBj b3VudCAKKy0tLS0tLS0KKyAgICAyNAorKDEgcm93KQorCitFWFBMQUlOIChDT1NUUyBPRkYp CitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfMSBXSEVSRSBhIElOIChOVUxM LCAxMTMsIDE3NywgMjUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkg UExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IEFnZ3JlZ2F0ZQorICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gYnJpbl9pbl90ZXN0XzEK KyAgICAgICAgIFJlY2hlY2sgQ29uZDogKGEgPSBBTlkgKCd7TlVMTCwxMTMsMTc3LDI1fSc6 OmludGVnZXJbXSkpCisgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gYnJpbl9p bl90ZXN0XzFfaWR4XzEKKyAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChhID0gQU5ZICgn e05VTEwsMTEzLDE3NywyNX0nOjppbnRlZ2VyW10pKQorKDUgcm93cykKKworU0VMRUNUIENP VU5UKCopIEZST00gYnJpbl9pbl90ZXN0XzEgV0hFUkUgYSBJTiAoTlVMTCwgMTEzLCAxNzcs IDI1KTsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICAyNAorKDEgcm93KQorCistLSBpbnQ6IGxl c3MgdGhhbgorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIEZST00gYnJp bl9pbl90ZXN0XzEgV0hFUkUgYSA8IEFOWSAoQVJSQVlbMzBdKTsKKyAgICAgICAgICAgICAg ICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdn cmVnYXRlCisgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiBicmluX2luX3Rlc3RfMQorICAg ICAgICAgUmVjaGVjayBDb25kOiAoYSA8IEFOWSAoJ3szMH0nOjppbnRlZ2VyW10pKQorICAg ICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIGJyaW5faW5fdGVzdF8xX2lkeF8xCisg ICAgICAgICAgICAgICBJbmRleCBDb25kOiAoYSA8IEFOWSAoJ3szMH0nOjppbnRlZ2VyW10p KQorKDUgcm93cykKKworU0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0XzEgV0hF UkUgYSA8IEFOWSAoQVJSQVlbMzBdKTsKKyBjb3VudCAKKy0tLS0tLS0KKyAgIDEwMworKDEg cm93KQorCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmlu X2luX3Rlc3RfMSBXSEVSRSBhIDwgQU5ZIChBUlJBWVsyMCwgTlVMTF0pOworICAgICAgICAg ICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiBicmlu X2luX3Rlc3RfMQorICAgICAgICAgUmVjaGVjayBDb25kOiAoYSA8IEFOWSAoJ3syMCxOVUxM fSc6OmludGVnZXJbXSkpCisgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gYnJp bl9pbl90ZXN0XzFfaWR4XzEKKyAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChhIDwgQU5Z ICgnezIwLE5VTEx9Jzo6aW50ZWdlcltdKSkKKyg1IHJvd3MpCisKK1NFTEVDVCBDT1VOVCgq KSBGUk9NIGJyaW5faW5fdGVzdF8xIFdIRVJFIGEgPCBBTlkgKEFSUkFZWzIwLCBOVUxMXSk7 CisgY291bnQgCistLS0tLS0tCisgICAgNTEKKygxIHJvdykKKworRVhQTEFJTiAoQ09TVFMg T0ZGKQorU0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0XzEgV0hFUkUgYSA8IEFO WSAoQVJSQVlbTlVMTCwgTlVMTF06OmludFtdKTsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyBBZ2dyZWdhdGUKKyAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIGJyaW5faW5fdGVzdF8x CisgICAgICAgICBSZWNoZWNrIENvbmQ6IChhIDwgQU5ZICgne05VTEwsTlVMTH0nOjppbnRl Z2VyW10pKQorICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIGJyaW5faW5fdGVz dF8xX2lkeF8xCisgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoYSA8IEFOWSAoJ3tOVUxM LE5VTEx9Jzo6aW50ZWdlcltdKSkKKyg1IHJvd3MpCisKK1NFTEVDVCBDT1VOVCgqKSBGUk9N IGJyaW5faW5fdGVzdF8xIFdIRVJFIGEgPCBBTlkgKEFSUkFZW05VTEwsIE5VTExdOjppbnRb XSk7CisgY291bnQgCistLS0tLS0tCisgICAgIDAKKygxIHJvdykKKworRVhQTEFJTiAoQ09T VFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0XzEgV0hFUkUgYSA8 IEFOWSAoQVJSQVlbMzUsIDI5XSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkg UExBTiAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAg LT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gYnJpbl9pbl90ZXN0XzEKKyAgICAgICAgIFJlY2hl Y2sgQ29uZDogKGEgPCBBTlkgKCd7MzUsMjl9Jzo6aW50ZWdlcltdKSkKKyAgICAgICAgIC0+ ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBicmluX2luX3Rlc3RfMV9pZHhfMQorICAgICAgICAg ICAgICAgSW5kZXggQ29uZDogKGEgPCBBTlkgKCd7MzUsMjl9Jzo6aW50ZWdlcltdKSkKKyg1 IHJvd3MpCisKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF8xIFdIRVJFIGEg PCBBTlkgKEFSUkFZWzM1LCAyOV0pOworIGNvdW50IAorLS0tLS0tLQorICAgMTI3CisoMSBy b3cpCisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5f aW5fdGVzdF8xIFdIRVJFIGEgPD0gQU5ZIChBUlJBWVs0NSwgNjAsIE5VTExdKTsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgQml0bWFwIEhlYXAg U2NhbiBvbiBicmluX2luX3Rlc3RfMQorICAgICAgICAgUmVjaGVjayBDb25kOiAoYSA8PSBB TlkgKCd7NDUsNjAsTlVMTH0nOjppbnRlZ2VyW10pKQorICAgICAgICAgLT4gIEJpdG1hcCBJ bmRleCBTY2FuIG9uIGJyaW5faW5fdGVzdF8xX2lkeF8xCisgICAgICAgICAgICAgICBJbmRl eCBDb25kOiAoYSA8PSBBTlkgKCd7NDUsNjAsTlVMTH0nOjppbnRlZ2VyW10pKQorKDUgcm93 cykKKworU0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0XzEgV0hFUkUgYSA8PSBB TlkgKEFSUkFZWzQ1LCA2MCwgTlVMTF0pOworIGNvdW50IAorLS0tLS0tLQorICAgMjU1Ciso MSByb3cpCisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJy aW5faW5fdGVzdF8xIFdIRVJFIGEgPCBBTlkgKEFSUkFZWzQxLCAzNywgNTVdKTsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBv biBicmluX2luX3Rlc3RfMQorICAgICAgICAgUmVjaGVjayBDb25kOiAoYSA8IEFOWSAoJ3s0 MSwzNyw1NX0nOjppbnRlZ2VyW10pKQorICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2Fu IG9uIGJyaW5faW5fdGVzdF8xX2lkeF8xCisgICAgICAgICAgICAgICBJbmRleCBDb25kOiAo YSA8IEFOWSAoJ3s0MSwzNyw1NX0nOjppbnRlZ2VyW10pKQorKDUgcm93cykKKworU0VMRUNU IENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0XzEgV0hFUkUgYSA8IEFOWSAoQVJSQVlbNDEs IDM3LCA1NV0pOworIGNvdW50IAorLS0tLS0tLQorICAgMjI3CisoMSByb3cpCisKK0VYUExB SU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF8xIFdI RVJFIGEgPD0gQU5ZIChBUlJBWVtOVUxMLCA2MCwgNDMsIDk0XSk7CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEJpdG1hcCBIZWFwIFNj YW4gb24gYnJpbl9pbl90ZXN0XzEKKyAgICAgICAgIFJlY2hlY2sgQ29uZDogKGEgPD0gQU5Z ICgne05VTEwsNjAsNDMsOTR9Jzo6aW50ZWdlcltdKSkKKyAgICAgICAgIC0+ICBCaXRtYXAg SW5kZXggU2NhbiBvbiBicmluX2luX3Rlc3RfMV9pZHhfMQorICAgICAgICAgICAgICAgSW5k ZXggQ29uZDogKGEgPD0gQU5ZICgne05VTEwsNjAsNDMsOTR9Jzo6aW50ZWdlcltdKSkKKyg1 IHJvd3MpCisKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF8xIFdIRVJFIGEg PD0gQU5ZIChBUlJBWVtOVUxMLCA2MCwgNDMsIDk0XSk7CisgY291bnQgCistLS0tLS0tCisg ICA0MjcKKygxIHJvdykKKworLS0gaW50OiBncmVhdGVyIHRoYW4KK0VYUExBSU4gKENPU1RT IE9GRikKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF8xIFdIRVJFIGEgPiBB TlkgKEFSUkFZWzIwMF0pOworICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAg ICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEJpdG1h cCBIZWFwIFNjYW4gb24gYnJpbl9pbl90ZXN0XzEKKyAgICAgICAgIFJlY2hlY2sgQ29uZDog KGEgPiBBTlkgKCd7MjAwfSc6OmludGVnZXJbXSkpCisgICAgICAgICAtPiAgQml0bWFwIElu ZGV4IFNjYW4gb24gYnJpbl9pbl90ZXN0XzFfaWR4XzEKKyAgICAgICAgICAgICAgIEluZGV4 IENvbmQ6IChhID4gQU5ZICgnezIwMH0nOjppbnRlZ2VyW10pKQorKDUgcm93cykKKworU0VM RUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0XzEgV0hFUkUgYSA+IEFOWSAoQVJSQVlb MjAwXSk7CisgY291bnQgCistLS0tLS0tCisgICAgNDUKKygxIHJvdykKKworRVhQTEFJTiAo Q09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0XzEgV0hFUkUg YSA+IEFOWSAoQVJSQVlbMTc3LCBOVUxMXSk7CisgICAgICAgICAgICAgICAgICAgICAgICAg IFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFn Z3JlZ2F0ZQorICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gYnJpbl9pbl90ZXN0XzEKKyAg ICAgICAgIFJlY2hlY2sgQ29uZDogKGEgPiBBTlkgKCd7MTc3LE5VTEx9Jzo6aW50ZWdlcltd KSkKKyAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBicmluX2luX3Rlc3RfMV9p ZHhfMQorICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKGEgPiBBTlkgKCd7MTc3LE5VTEx9 Jzo6aW50ZWdlcltdKSkKKyg1IHJvd3MpCisKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5f aW5fdGVzdF8xIFdIRVJFIGEgPiBBTlkgKEFSUkFZWzE3NywgTlVMTF0pOworIGNvdW50IAor LS0tLS0tLQorICAgMTU3CisoMSByb3cpCisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVD VCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF8xIFdIRVJFIGEgPiBBTlkgKEFSUkFZW05V TEwsIE5VTExdOjppbnRbXSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQ TEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRl CisgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiBicmluX2luX3Rlc3RfMQorICAgICAgICAg UmVjaGVjayBDb25kOiAoYSA+IEFOWSAoJ3tOVUxMLE5VTEx9Jzo6aW50ZWdlcltdKSkKKyAg ICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBicmluX2luX3Rlc3RfMV9pZHhfMQor ICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKGEgPiBBTlkgKCd7TlVMTCxOVUxMfSc6Omlu dGVnZXJbXSkpCisoNSByb3dzKQorCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rl c3RfMSBXSEVSRSBhID4gQU5ZIChBUlJBWVtOVUxMLCBOVUxMXTo6aW50W10pOworIGNvdW50 IAorLS0tLS0tLQorICAgICAwCisoMSByb3cpCisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NF TEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF8xIFdIRVJFIGEgPiBBTlkgKEFSUkFZ WzE1MywgMTQwXSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAg ICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBC aXRtYXAgSGVhcCBTY2FuIG9uIGJyaW5faW5fdGVzdF8xCisgICAgICAgICBSZWNoZWNrIENv bmQ6IChhID4gQU5ZICgnezE1MywxNDB9Jzo6aW50ZWdlcltdKSkKKyAgICAgICAgIC0+ICBC aXRtYXAgSW5kZXggU2NhbiBvbiBicmluX2luX3Rlc3RfMV9pZHhfMQorICAgICAgICAgICAg ICAgSW5kZXggQ29uZDogKGEgPiBBTlkgKCd7MTUzLDE0MH0nOjppbnRlZ2VyW10pKQorKDUg cm93cykKKworU0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0XzEgV0hFUkUgYSA+ IEFOWSAoQVJSQVlbMTUzLCAxNDBdKTsKKyBjb3VudCAKKy0tLS0tLS0KKyAgIDM0NQorKDEg cm93KQorCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmlu X2luX3Rlc3RfMSBXSEVSRSBhID49IEFOWSAoQVJSQVlbMTczLCAxOTEsIE5VTExdKTsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEJpdG1h cCBIZWFwIFNjYW4gb24gYnJpbl9pbl90ZXN0XzEKKyAgICAgICAgIFJlY2hlY2sgQ29uZDog KGEgPj0gQU5ZICgnezE3MywxOTEsTlVMTH0nOjppbnRlZ2VyW10pKQorICAgICAgICAgLT4g IEJpdG1hcCBJbmRleCBTY2FuIG9uIGJyaW5faW5fdGVzdF8xX2lkeF8xCisgICAgICAgICAg ICAgICBJbmRleCBDb25kOiAoYSA+PSBBTlkgKCd7MTczLDE5MSxOVUxMfSc6OmludGVnZXJb XSkpCisoNSByb3dzKQorCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfMSBX SEVSRSBhID49IEFOWSAoQVJSQVlbMTczLCAxOTEsIE5VTExdKTsKKyBjb3VudCAKKy0tLS0t LS0KKyAgIDE4NQorKDEgcm93KQorCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09V TlQoKikgRlJPTSBicmluX2luX3Rlc3RfMSBXSEVSRSBhID4gQU5ZIChBUlJBWVsxMjAsIDE4 NCwgMTY0XSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAg LT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gYnJpbl9pbl90ZXN0XzEKKyAgICAgICAgIFJlY2hl Y2sgQ29uZDogKGEgPiBBTlkgKCd7MTIwLDE4NCwxNjR9Jzo6aW50ZWdlcltdKSkKKyAgICAg ICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBicmluX2luX3Rlc3RfMV9pZHhfMQorICAg ICAgICAgICAgICAgSW5kZXggQ29uZDogKGEgPiBBTlkgKCd7MTIwLDE4NCwxNjR9Jzo6aW50 ZWdlcltdKSkKKyg1IHJvd3MpCisKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVz dF8xIFdIRVJFIGEgPiBBTlkgKEFSUkFZWzEyMCwgMTg0LCAxNjRdKTsKKyBjb3VudCAKKy0t LS0tLS0KKyAgIDQ0NQorKDEgcm93KQorCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1Qg Q09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfMSBXSEVSRSBhID49IEFOWSAoQVJSQVlbTlVM TCwgMTMwLCAxODEsIDE2OV0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFV RVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIGJyaW5faW5f dGVzdF8xCisgICAgICAgICBSZWNoZWNrIENvbmQ6IChhID49IEFOWSAoJ3tOVUxMLDEzMCwx ODEsMTY5fSc6OmludGVnZXJbXSkpCisgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4g b24gYnJpbl9pbl90ZXN0XzFfaWR4XzEKKyAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChh ID49IEFOWSAoJ3tOVUxMLDEzMCwxODEsMTY5fSc6OmludGVnZXJbXSkpCisoNSByb3dzKQor CitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfMSBXSEVSRSBhID49IEFOWSAo QVJSQVlbTlVMTCwgMTMwLCAxODEsIDE2OV0pOworIGNvdW50IAorLS0tLS0tLQorICAgMzk3 CisoMSByb3cpCisKKy0tIGJpZ2ludDogZXFhbGl0aWVzCitFWFBMQUlOIChDT1NUUyBPRkYp CitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfMSBXSEVSRSBiIElOICg4Mik7 CisgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiBicmluX2lu X3Rlc3RfMQorICAgICAgICAgUmVjaGVjayBDb25kOiAoYiA9IDgyKQorICAgICAgICAgLT4g IEJpdG1hcCBJbmRleCBTY2FuIG9uIGJyaW5faW5fdGVzdF8xX2lkeF8yCisgICAgICAgICAg ICAgICBJbmRleCBDb25kOiAoYiA9IDgyKQorKDUgcm93cykKKworU0VMRUNUIENPVU5UKCop IEZST00gYnJpbl9pbl90ZXN0XzEgV0hFUkUgYiBJTiAoODIpOworIGNvdW50IAorLS0tLS0t LQorICAgIDEwCisoMSByb3cpCisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VO VCgqKSBGUk9NIGJyaW5faW5fdGVzdF8xIFdIRVJFIGIgSU4gKDgyLCBOVUxMKTsKKyAgICAg ICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIGJy aW5faW5fdGVzdF8xCisgICAgICAgICBSZWNoZWNrIENvbmQ6IChiID0gQU5ZICgnezgyLE5V TEx9Jzo6YmlnaW50W10pKQorICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIGJy aW5faW5fdGVzdF8xX2lkeF8yCisgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoYiA9IEFO WSAoJ3s4MixOVUxMfSc6OmJpZ2ludFtdKSkKKyg1IHJvd3MpCisKK1NFTEVDVCBDT1VOVCgq KSBGUk9NIGJyaW5faW5fdGVzdF8xIFdIRVJFIGIgSU4gKDgyLCBOVUxMKTsKKyBjb3VudCAK Ky0tLS0tLS0KKyAgICAxMAorKDEgcm93KQorCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxF Q1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfMSBXSEVSRSBiIElOIChOVUxMLCBOVUxM KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAg ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgQml0bWFwIEhl YXAgU2NhbiBvbiBicmluX2luX3Rlc3RfMQorICAgICAgICAgUmVjaGVjayBDb25kOiAoYiA9 IEFOWSAoJ3tOVUxMLE5VTEx9Jzo6YmlnaW50W10pKQorICAgICAgICAgLT4gIEJpdG1hcCBJ bmRleCBTY2FuIG9uIGJyaW5faW5fdGVzdF8xX2lkeF8yCisgICAgICAgICAgICAgICBJbmRl eCBDb25kOiAoYiA9IEFOWSAoJ3tOVUxMLE5VTEx9Jzo6YmlnaW50W10pKQorKDUgcm93cykK KworU0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0XzEgV0hFUkUgYiBJTiAoTlVM TCwgTlVMTCk7CisgY291bnQgCistLS0tLS0tCisgICAgIDAKKygxIHJvdykKKworRVhQTEFJ TiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0XzEgV0hF UkUgYiBJTiAoODIsIDQxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4g ICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEJp dG1hcCBIZWFwIFNjYW4gb24gYnJpbl9pbl90ZXN0XzEKKyAgICAgICAgIFJlY2hlY2sgQ29u ZDogKGIgPSBBTlkgKCd7ODIsNDF9Jzo6YmlnaW50W10pKQorICAgICAgICAgLT4gIEJpdG1h cCBJbmRleCBTY2FuIG9uIGJyaW5faW5fdGVzdF8xX2lkeF8yCisgICAgICAgICAgICAgICBJ bmRleCBDb25kOiAoYiA9IEFOWSAoJ3s4Miw0MX0nOjpiaWdpbnRbXSkpCisoNSByb3dzKQor CitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfMSBXSEVSRSBiIElOICg4Miwg NDEpOworIGNvdW50IAorLS0tLS0tLQorICAgIDIwCisoMSByb3cpCisKK0VYUExBSU4gKENP U1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF8xIFdIRVJFIGIg SU4gKDgyLCA0MSwgTlVMTCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQ TEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRl CisgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiBicmluX2luX3Rlc3RfMQorICAgICAgICAg UmVjaGVjayBDb25kOiAoYiA9IEFOWSAoJ3s4Miw0MSxOVUxMfSc6OmJpZ2ludFtdKSkKKyAg ICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBicmluX2luX3Rlc3RfMV9pZHhfMgor ICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKGIgPSBBTlkgKCd7ODIsNDEsTlVMTH0nOjpi aWdpbnRbXSkpCisoNSByb3dzKQorCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rl c3RfMSBXSEVSRSBiIElOICg4MiwgNDEsIE5VTEwpOworIGNvdW50IAorLS0tLS0tLQorICAg IDIwCisoMSByb3cpCisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBG Uk9NIGJyaW5faW5fdGVzdF8xIFdIRVJFIGIgSU4gKDgyLCA0MSwgMTUpOworICAgICAgICAg ICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiBicmlu X2luX3Rlc3RfMQorICAgICAgICAgUmVjaGVjayBDb25kOiAoYiA9IEFOWSAoJ3s4Miw0MSwx NX0nOjpiaWdpbnRbXSkpCisgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gYnJp bl9pbl90ZXN0XzFfaWR4XzIKKyAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChiID0gQU5Z ICgnezgyLDQxLDE1fSc6OmJpZ2ludFtdKSkKKyg1IHJvd3MpCisKK1NFTEVDVCBDT1VOVCgq KSBGUk9NIGJyaW5faW5fdGVzdF8xIFdIRVJFIGIgSU4gKDgyLCA0MSwgMTUpOworIGNvdW50 IAorLS0tLS0tLQorICAgIDI1CisoMSByb3cpCisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NF TEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF8xIFdIRVJFIGIgSU4gKE5VTEwsIDgy LCA0MSwgMTUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQor ICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gYnJpbl9pbl90ZXN0XzEKKyAgICAgICAgIFJl Y2hlY2sgQ29uZDogKGIgPSBBTlkgKCd7TlVMTCw4Miw0MSwxNX0nOjpiaWdpbnRbXSkpCisg ICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gYnJpbl9pbl90ZXN0XzFfaWR4XzIK KyAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChiID0gQU5ZICgne05VTEwsODIsNDEsMTV9 Jzo6YmlnaW50W10pKQorKDUgcm93cykKKworU0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9p bl90ZXN0XzEgV0hFUkUgYiBJTiAoTlVMTCwgODIsIDQxLCAxNSk7CisgY291bnQgCistLS0t LS0tCisgICAgMjUKKygxIHJvdykKKworLS0gYmlnaW50OiBsZXNzIHRoYW4KK0VYUExBSU4g KENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF8xIFdIRVJF IGIgPCBBTlkgKEFSUkFZWzMxXSk7CisgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBM QU4gICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEJp dG1hcCBIZWFwIFNjYW4gb24gYnJpbl9pbl90ZXN0XzEKKyAgICAgICAgIFJlY2hlY2sgQ29u ZDogKGIgPCBBTlkgKCd7MzF9Jzo6aW50ZWdlcltdKSkKKyAgICAgICAgIC0+ICBCaXRtYXAg SW5kZXggU2NhbiBvbiBicmluX2luX3Rlc3RfMV9pZHhfMgorICAgICAgICAgICAgICAgSW5k ZXggQ29uZDogKGIgPCBBTlkgKCd7MzF9Jzo6aW50ZWdlcltdKSkKKyg1IHJvd3MpCisKK1NF TEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF8xIFdIRVJFIGIgPCBBTlkgKEFSUkFZ WzMxXSk7CisgY291bnQgCistLS0tLS0tCisgICAxNjQKKygxIHJvdykKKworRVhQTEFJTiAo Q09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0XzEgV0hFUkUg YiA8IEFOWSAoQVJSQVlbNTUsIE5VTExdKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg UVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3Jl Z2F0ZQorICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gYnJpbl9pbl90ZXN0XzEKKyAgICAg ICAgIFJlY2hlY2sgQ29uZDogKGIgPCBBTlkgKCd7NTUsTlVMTH0nOjppbnRlZ2VyW10pKQor ICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIGJyaW5faW5fdGVzdF8xX2lkeF8y CisgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoYiA8IEFOWSAoJ3s1NSxOVUxMfSc6Omlu dGVnZXJbXSkpCisoNSByb3dzKQorCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rl c3RfMSBXSEVSRSBiIDwgQU5ZIChBUlJBWVs1NSwgTlVMTF0pOworIGNvdW50IAorLS0tLS0t LQorICAgNDA0CisoMSByb3cpCisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VO VCgqKSBGUk9NIGJyaW5faW5fdGVzdF8xIFdIRVJFIGIgPCBBTlkgKEFSUkFZW05VTEwsIE5V TExdOjpiaWdpbnRbXSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4g ICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAg LT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gYnJpbl9pbl90ZXN0XzEKKyAgICAgICAgIFJlY2hl Y2sgQ29uZDogKGIgPCBBTlkgKCd7TlVMTCxOVUxMfSc6OmJpZ2ludFtdKSkKKyAgICAgICAg IC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBicmluX2luX3Rlc3RfMV9pZHhfMgorICAgICAg ICAgICAgICAgSW5kZXggQ29uZDogKGIgPCBBTlkgKCd7TlVMTCxOVUxMfSc6OmJpZ2ludFtd KSkKKyg1IHJvd3MpCisKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF8xIFdI RVJFIGIgPCBBTlkgKEFSUkFZW05VTEwsIE5VTExdOjpiaWdpbnRbXSk7CisgY291bnQgCist LS0tLS0tCisgICAgIDAKKygxIHJvdykKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNU IENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0XzEgV0hFUkUgYiA8PSBBTlkgKEFSUkFZWzcz LCA1MV0pOworICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEJpdG1hcCBI ZWFwIFNjYW4gb24gYnJpbl9pbl90ZXN0XzEKKyAgICAgICAgIFJlY2hlY2sgQ29uZDogKGIg PD0gQU5ZICgnezczLDUxfSc6OmludGVnZXJbXSkpCisgICAgICAgICAtPiAgQml0bWFwIElu ZGV4IFNjYW4gb24gYnJpbl9pbl90ZXN0XzFfaWR4XzIKKyAgICAgICAgICAgICAgIEluZGV4 IENvbmQ6IChiIDw9IEFOWSAoJ3s3Myw1MX0nOjppbnRlZ2VyW10pKQorKDUgcm93cykKKwor U0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0XzEgV0hFUkUgYiA8PSBBTlkgKEFS UkFZWzczLCA1MV0pOworIGNvdW50IAorLS0tLS0tLQorICAgNTk0CisoMSByb3cpCisKK0VY UExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF8x IFdIRVJFIGIgPCBBTlkgKEFSUkFZWzY5LCA4NywgTlVMTF0pOworICAgICAgICAgICAgICAg ICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiBicmlu X2luX3Rlc3RfMQorICAgICAgICAgUmVjaGVjayBDb25kOiAoYiA8IEFOWSAoJ3s2OSw4NyxO VUxMfSc6OmludGVnZXJbXSkpCisgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24g YnJpbl9pbl90ZXN0XzFfaWR4XzIKKyAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChiIDwg QU5ZICgnezY5LDg3LE5VTEx9Jzo6aW50ZWdlcltdKSkKKyg1IHJvd3MpCisKK1NFTEVDVCBD T1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF8xIFdIRVJFIGIgPCBBTlkgKEFSUkFZWzY5LCA4 NywgTlVMTF0pOworIGNvdW50IAorLS0tLS0tLQorICAgNzI0CisoMSByb3cpCisKK0VYUExB SU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF8xIFdI RVJFIGIgPD0gQU5ZIChBUlJBWVs4MiwgOTEsIDM1XSk7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgQWdncmVnYXRlCisgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiBicmluX2luX3Rl c3RfMQorICAgICAgICAgUmVjaGVjayBDb25kOiAoYiA8PSBBTlkgKCd7ODIsOTEsMzV9Jzo6 aW50ZWdlcltdKSkKKyAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBicmluX2lu X3Rlc3RfMV9pZHhfMgorICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKGIgPD0gQU5ZICgn ezgyLDkxLDM1fSc6OmludGVnZXJbXSkpCisoNSByb3dzKQorCitTRUxFQ1QgQ09VTlQoKikg RlJPTSBicmluX2luX3Rlc3RfMSBXSEVSRSBiIDw9IEFOWSAoQVJSQVlbODIsIDkxLCAzNV0p OworIGNvdW50IAorLS0tLS0tLQorICAgNzc0CisoMSByb3cpCisKK0VYUExBSU4gKENPU1RT IE9GRikKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF8xIFdIRVJFIGIgPCBB TlkgKEFSUkFZW05VTEwsIDYzLCAyMSwgODVdKTsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gYnJpbl9p bl90ZXN0XzEKKyAgICAgICAgIFJlY2hlY2sgQ29uZDogKGIgPCBBTlkgKCd7TlVMTCw2Mywy MSw4NX0nOjppbnRlZ2VyW10pKQorICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9u IGJyaW5faW5fdGVzdF8xX2lkeF8yCisgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoYiA8 IEFOWSAoJ3tOVUxMLDYzLDIxLDg1fSc6OmludGVnZXJbXSkpCisoNSByb3dzKQorCitTRUxF Q1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfMSBXSEVSRSBiIDwgQU5ZIChBUlJBWVtO VUxMLCA2MywgMjEsIDg1XSk7CisgY291bnQgCistLS0tLS0tCisgICA3MDQKKygxIHJvdykK KworLS0gYmlnaW50OiBncmVhdGVyIHRoYW4KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVD VCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF8xIFdIRVJFIGIgPiBBTlkgKEFSUkFZWzk0 XSk7CisgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAg ICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24g YnJpbl9pbl90ZXN0XzEKKyAgICAgICAgIFJlY2hlY2sgQ29uZDogKGIgPiBBTlkgKCd7OTR9 Jzo6aW50ZWdlcltdKSkKKyAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBicmlu X2luX3Rlc3RfMV9pZHhfMgorICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKGIgPiBBTlkg KCd7OTR9Jzo6aW50ZWdlcltdKSkKKyg1IHJvd3MpCisKK1NFTEVDVCBDT1VOVCgqKSBGUk9N IGJyaW5faW5fdGVzdF8xIFdIRVJFIGIgPiBBTlkgKEFSUkFZWzk0XSk7CisgY291bnQgCist LS0tLS0tCisgICAxOTYKKygxIHJvdykKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNU IENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0XzEgV0hFUkUgYiA+IEFOWSAoQVJSQVlbODAs IE5VTExdKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAg ICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEJpdG1h cCBIZWFwIFNjYW4gb24gYnJpbl9pbl90ZXN0XzEKKyAgICAgICAgIFJlY2hlY2sgQ29uZDog KGIgPiBBTlkgKCd7ODAsTlVMTH0nOjppbnRlZ2VyW10pKQorICAgICAgICAgLT4gIEJpdG1h cCBJbmRleCBTY2FuIG9uIGJyaW5faW5fdGVzdF8xX2lkeF8yCisgICAgICAgICAgICAgICBJ bmRleCBDb25kOiAoYiA+IEFOWSAoJ3s4MCxOVUxMfSc6OmludGVnZXJbXSkpCisoNSByb3dz KQorCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfMSBXSEVSRSBiID4gQU5Z IChBUlJBWVs4MCwgTlVMTF0pOworIGNvdW50IAorLS0tLS0tLQorICAgMzM2CisoMSByb3cp CisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5f dGVzdF8xIFdIRVJFIGIgPiBBTlkgKEFSUkFZW05VTEwsIE5VTExdOjpiaWdpbnRbXSk7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAg ICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEJpdG1hcCBIZWFwIFNj YW4gb24gYnJpbl9pbl90ZXN0XzEKKyAgICAgICAgIFJlY2hlY2sgQ29uZDogKGIgPiBBTlkg KCd7TlVMTCxOVUxMfSc6OmJpZ2ludFtdKSkKKyAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXgg U2NhbiBvbiBicmluX2luX3Rlc3RfMV9pZHhfMgorICAgICAgICAgICAgICAgSW5kZXggQ29u ZDogKGIgPiBBTlkgKCd7TlVMTCxOVUxMfSc6OmJpZ2ludFtdKSkKKyg1IHJvd3MpCisKK1NF TEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF8xIFdIRVJFIGIgPiBBTlkgKEFSUkFZ W05VTEwsIE5VTExdOjpiaWdpbnRbXSk7CisgY291bnQgCistLS0tLS0tCisgICAgIDAKKygx IHJvdykKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIEZST00gYnJp bl9pbl90ZXN0XzEgV0hFUkUgYiA+IEFOWSAoQVJSQVlbMTk5LCAxMDddKTsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gYnJp bl9pbl90ZXN0XzEKKyAgICAgICAgIFJlY2hlY2sgQ29uZDogKGIgPiBBTlkgKCd7MTk5LDEw N30nOjppbnRlZ2VyW10pKQorICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIGJy aW5faW5fdGVzdF8xX2lkeF8yCisgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoYiA+IEFO WSAoJ3sxOTksMTA3fSc6OmludGVnZXJbXSkpCisoNSByb3dzKQorCitTRUxFQ1QgQ09VTlQo KikgRlJPTSBicmluX2luX3Rlc3RfMSBXSEVSRSBiID4gQU5ZIChBUlJBWVsxOTksIDEwN10p OworIGNvdW50IAorLS0tLS0tLQorICAgIDc4CisoMSByb3cpCisKK0VYUExBSU4gKENPU1RT IE9GRikKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF8xIFdIRVJFIGIgPj0g QU5ZIChBUlJBWVsxODIsIDEwMSwgTlVMTF0pOworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiBicmluX2lu X3Rlc3RfMQorICAgICAgICAgUmVjaGVjayBDb25kOiAoYiA+PSBBTlkgKCd7MTgyLDEwMSxO VUxMfSc6OmludGVnZXJbXSkpCisgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24g YnJpbl9pbl90ZXN0XzFfaWR4XzIKKyAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChiID49 IEFOWSAoJ3sxODIsMTAxLE5VTEx9Jzo6aW50ZWdlcltdKSkKKyg1IHJvd3MpCisKK1NFTEVD VCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF8xIFdIRVJFIGIgPj0gQU5ZIChBUlJBWVsx ODIsIDEwMSwgTlVMTF0pOworIGNvdW50IAorLS0tLS0tLQorICAgMTM3CisoMSByb3cpCisK K0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVz dF8xIFdIRVJFIGIgPiBBTlkgKEFSUkFZWzMwMCwgMTA2LCAyNTFdKTsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBv biBicmluX2luX3Rlc3RfMQorICAgICAgICAgUmVjaGVjayBDb25kOiAoYiA+IEFOWSAoJ3sz MDAsMTA2LDI1MX0nOjppbnRlZ2VyW10pKQorICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBT Y2FuIG9uIGJyaW5faW5fdGVzdF8xX2lkeF8yCisgICAgICAgICAgICAgICBJbmRleCBDb25k OiAoYiA+IEFOWSAoJ3szMDAsMTA2LDI1MX0nOjppbnRlZ2VyW10pKQorKDUgcm93cykKKwor U0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0XzEgV0hFUkUgYiA+IEFOWSAoQVJS QVlbMzAwLCAxMDYsIDI1MV0pOworIGNvdW50IAorLS0tLS0tLQorICAgIDg2CisoMSByb3cp CisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5f dGVzdF8xIFdIRVJFIGIgPiBBTlkgKEFSUkFZW05VTEwsIDE4MiwgMTAxLCAxNTVdKTsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4g IEJpdG1hcCBIZWFwIFNjYW4gb24gYnJpbl9pbl90ZXN0XzEKKyAgICAgICAgIFJlY2hlY2sg Q29uZDogKGIgPiBBTlkgKCd7TlVMTCwxODIsMTAxLDE1NX0nOjppbnRlZ2VyW10pKQorICAg ICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIGJyaW5faW5fdGVzdF8xX2lkeF8yCisg ICAgICAgICAgICAgICBJbmRleCBDb25kOiAoYiA+IEFOWSAoJ3tOVUxMLDE4MiwxMDEsMTU1 fSc6OmludGVnZXJbXSkpCisoNSByb3dzKQorCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmlu X2luX3Rlc3RfMSBXSEVSRSBiID4gQU5ZIChBUlJBWVtOVUxMLCAxODIsIDEwMSwgMTU1XSk7 CisgY291bnQgCistLS0tLS0tCisgICAxMjcKKygxIHJvdykKKworRFJPUCBUQUJMRSBicmlu X2luX3Rlc3RfMTsKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworLS0gZG8gc29tZSB0ZXN0cyBv biBJTiBjbGF1c2VzIGZvciB2YXJsZW5hIGRhdGEgdHlwZXMKK0NSRUFURSBUQUJMRSBicmlu X2luX3Rlc3RfMiAoYSBURVhUKSBXSVRIIChmaWxsZmFjdG9yPTEwKTsKK0lOU0VSVCBJTlRP IGJyaW5faW5fdGVzdF8yCitTRUxFQ1QgdiBGUk9NIChTRUxFQ1Qgcm93X251bWJlcigpIE9W RVIgKE9SREVSIEJZIHYpIGMsIHYgRlJPTSAoU0VMRUNUIG1kNSgoaS8xMyk6OnRleHQpIEFT IHYgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDAwKSBzKGkpKSBmb28pIGJhciBPUkRFUiBC WSBjICsgMjUgKiByYW5kb20oKTsKK0NSRUFURSBJTkRFWCBicmluX2luX3Rlc3RfMl9pZHgg T04gYnJpbl9pbl90ZXN0XzIgVVNJTkcgYnJpbiAoYSB0ZXh0X21pbm1heF9vcHMpIFdJVEgg KHBhZ2VzX3Blcl9yYW5nZT0xKTsKK1NFVCBlbmFibGVfc2Vxc2Nhbj1vZmY7CitFWFBMQUlO IChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfMiBXSEVS RSBhIElOICgnMzNlNzVmZjA5ZGQ2MDFiYmU2OWYzNTEwMzkxNTIxODknKTsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4g IEJpdG1hcCBIZWFwIFNjYW4gb24gYnJpbl9pbl90ZXN0XzIKKyAgICAgICAgIFJlY2hlY2sg Q29uZDogKGEgPSAnMzNlNzVmZjA5ZGQ2MDFiYmU2OWYzNTEwMzkxNTIxODknOjp0ZXh0KQor ICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIGJyaW5faW5fdGVzdF8yX2lkeAor ICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKGEgPSAnMzNlNzVmZjA5ZGQ2MDFiYmU2OWYz NTEwMzkxNTIxODknOjp0ZXh0KQorKDUgcm93cykKKworU0VMRUNUIENPVU5UKCopIEZST00g YnJpbl9pbl90ZXN0XzIgV0hFUkUgYSBJTiAoJzMzZTc1ZmYwOWRkNjAxYmJlNjlmMzUxMDM5 MTUyMTg5Jyk7CisgY291bnQgCistLS0tLS0tCisgICAgMTMKKygxIHJvdykKKworRVhQTEFJ TiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0XzIgV0hF UkUgYSBJTiAoJzMzZTc1ZmYwOWRkNjAxYmJlNjlmMzUxMDM5MTUyMTg5JywgTlVMTCk7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBCaXRtYXAgSGVhcCBTY2Fu IG9uIGJyaW5faW5fdGVzdF8yCisgICAgICAgICBSZWNoZWNrIENvbmQ6IChhID0gQU5ZICgn ezMzZTc1ZmYwOWRkNjAxYmJlNjlmMzUxMDM5MTUyMTg5LE5VTEx9Jzo6dGV4dFtdKSkKKyAg ICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBicmluX2luX3Rlc3RfMl9pZHgKKyAg ICAgICAgICAgICAgIEluZGV4IENvbmQ6IChhID0gQU5ZICgnezMzZTc1ZmYwOWRkNjAxYmJl NjlmMzUxMDM5MTUyMTg5LE5VTEx9Jzo6dGV4dFtdKSkKKyg1IHJvd3MpCisKK1NFTEVDVCBD T1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF8yIFdIRVJFIGEgSU4gKCczM2U3NWZmMDlkZDYw MWJiZTY5ZjM1MTAzOTE1MjE4OScsIE5VTEwpOworIGNvdW50IAorLS0tLS0tLQorICAgIDEz CisoMSByb3cpCisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBGUk9N IGJyaW5faW5fdGVzdF8yIFdIRVJFIGEgSU4gKE5VTEwsIE5VTEwpOworICAgICAgICAgICAg ICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gYnJpbl9pbl90 ZXN0XzIKKyAgICAgICAgIFJlY2hlY2sgQ29uZDogKGEgPSBBTlkgKCd7TlVMTCxOVUxMfSc6 OnRleHRbXSkpCisgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gYnJpbl9pbl90 ZXN0XzJfaWR4CisgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoYSA9IEFOWSAoJ3tOVUxM LE5VTEx9Jzo6dGV4dFtdKSkKKyg1IHJvd3MpCisKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJy aW5faW5fdGVzdF8yIFdIRVJFIGEgSU4gKE5VTEwsIE5VTEwpOworIGNvdW50IAorLS0tLS0t LQorICAgICAwCisoMSByb3cpCisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VO VCgqKSBGUk9NIGJyaW5faW5fdGVzdF8yIFdIRVJFIGEgSU4gKCczM2U3NWZmMDlkZDYwMWJi ZTY5ZjM1MTAzOTE1MjE4OScsICdmNDU3YzU0NWE5ZGVkODhmMThlY2VlNDcxNDVhNzJjMCcp OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBCaXRtYXAgSGVh cCBTY2FuIG9uIGJyaW5faW5fdGVzdF8yCisgICAgICAgICBSZWNoZWNrIENvbmQ6IChhID0g QU5ZICgnezMzZTc1ZmYwOWRkNjAxYmJlNjlmMzUxMDM5MTUyMTg5LGY0NTdjNTQ1YTlkZWQ4 OGYxOGVjZWU0NzE0NWE3MmMwfSc6OnRleHRbXSkpCisgICAgICAgICAtPiAgQml0bWFwIElu ZGV4IFNjYW4gb24gYnJpbl9pbl90ZXN0XzJfaWR4CisgICAgICAgICAgICAgICBJbmRleCBD b25kOiAoYSA9IEFOWSAoJ3szM2U3NWZmMDlkZDYwMWJiZTY5ZjM1MTAzOTE1MjE4OSxmNDU3 YzU0NWE5ZGVkODhmMThlY2VlNDcxNDVhNzJjMH0nOjp0ZXh0W10pKQorKDUgcm93cykKKwor U0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0XzIgV0hFUkUgYSBJTiAoJzMzZTc1 ZmYwOWRkNjAxYmJlNjlmMzUxMDM5MTUyMTg5JywgJ2Y0NTdjNTQ1YTlkZWQ4OGYxOGVjZWU0 NzE0NWE3MmMwJyk7CisgY291bnQgCistLS0tLS0tCisgICAgMjYKKygxIHJvdykKKworRVhQ TEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0XzIg V0hFUkUgYSBJTiAoJzMzZTc1ZmYwOWRkNjAxYmJlNjlmMzUxMDM5MTUyMTg5JywgJ2Y0NTdj NTQ1YTlkZWQ4OGYxOGVjZWU0NzE0NWE3MmMwJywgTlVMTCk7CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9u IGJyaW5faW5fdGVzdF8yCisgICAgICAgICBSZWNoZWNrIENvbmQ6IChhID0gQU5ZICgnezMz ZTc1ZmYwOWRkNjAxYmJlNjlmMzUxMDM5MTUyMTg5LGY0NTdjNTQ1YTlkZWQ4OGYxOGVjZWU0 NzE0NWE3MmMwLE5VTEx9Jzo6dGV4dFtdKSkKKyAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXgg U2NhbiBvbiBicmluX2luX3Rlc3RfMl9pZHgKKyAgICAgICAgICAgICAgIEluZGV4IENvbmQ6 IChhID0gQU5ZICgnezMzZTc1ZmYwOWRkNjAxYmJlNjlmMzUxMDM5MTUyMTg5LGY0NTdjNTQ1 YTlkZWQ4OGYxOGVjZWU0NzE0NWE3MmMwLE5VTEx9Jzo6dGV4dFtdKSkKKyg1IHJvd3MpCisK K1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF8yIFdIRVJFIGEgSU4gKCczM2U3 NWZmMDlkZDYwMWJiZTY5ZjM1MTAzOTE1MjE4OScsICdmNDU3YzU0NWE5ZGVkODhmMThlY2Vl NDcxNDVhNzJjMCcsIE5VTEwpOworIGNvdW50IAorLS0tLS0tLQorICAgIDI2CisoMSByb3cp CisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5f dGVzdF8yIFdIRVJFIGEgSU4gKCczM2U3NWZmMDlkZDYwMWJiZTY5ZjM1MTAzOTE1MjE4OScs ICdmNDU3YzU0NWE5ZGVkODhmMThlY2VlNDcxNDVhNzJjMCcsICdjNTFjZTQxMGMxMjRhMTBl MGRiNWU0Yjk3ZmMyYWYzOScpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyBBZ2dyZWdhdGUKKyAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIGJyaW5faW5fdGVzdF8y CisgICAgICAgICBSZWNoZWNrIENvbmQ6IChhID0gQU5ZICgnezMzZTc1ZmYwOWRkNjAxYmJl NjlmMzUxMDM5MTUyMTg5LGY0NTdjNTQ1YTlkZWQ4OGYxOGVjZWU0NzE0NWE3MmMwLGM1MWNl NDEwYzEyNGExMGUwZGI1ZTRiOTdmYzJhZjM5fSc6OnRleHRbXSkpCisgICAgICAgICAtPiAg Qml0bWFwIEluZGV4IFNjYW4gb24gYnJpbl9pbl90ZXN0XzJfaWR4CisgICAgICAgICAgICAg ICBJbmRleCBDb25kOiAoYSA9IEFOWSAoJ3szM2U3NWZmMDlkZDYwMWJiZTY5ZjM1MTAzOTE1 MjE4OSxmNDU3YzU0NWE5ZGVkODhmMThlY2VlNDcxNDVhNzJjMCxjNTFjZTQxMGMxMjRhMTBl MGRiNWU0Yjk3ZmMyYWYzOX0nOjp0ZXh0W10pKQorKDUgcm93cykKKworU0VMRUNUIENPVU5U KCopIEZST00gYnJpbl9pbl90ZXN0XzIgV0hFUkUgYSBJTiAoJzMzZTc1ZmYwOWRkNjAxYmJl NjlmMzUxMDM5MTUyMTg5JywgJ2Y0NTdjNTQ1YTlkZWQ4OGYxOGVjZWU0NzE0NWE3MmMwJywg J2M1MWNlNDEwYzEyNGExMGUwZGI1ZTRiOTdmYzJhZjM5Jyk7CisgY291bnQgCistLS0tLS0t CisgICAgMzkKKygxIHJvdykKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5U KCopIEZST00gYnJpbl9pbl90ZXN0XzIgV0hFUkUgYSBJTiAoTlVMTCwgJzMzZTc1ZmYwOWRk NjAxYmJlNjlmMzUxMDM5MTUyMTg5JywgJ2Y0NTdjNTQ1YTlkZWQ4OGYxOGVjZWU0NzE0NWE3 MmMwJywgJ2M1MWNlNDEwYzEyNGExMGUwZGI1ZTRiOTdmYzJhZjM5Jyk7CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBC aXRtYXAgSGVhcCBTY2FuIG9uIGJyaW5faW5fdGVzdF8yCisgICAgICAgICBSZWNoZWNrIENv bmQ6IChhID0gQU5ZICgne05VTEwsMzNlNzVmZjA5ZGQ2MDFiYmU2OWYzNTEwMzkxNTIxODks ZjQ1N2M1NDVhOWRlZDg4ZjE4ZWNlZTQ3MTQ1YTcyYzAsYzUxY2U0MTBjMTI0YTEwZTBkYjVl NGI5N2ZjMmFmMzl9Jzo6dGV4dFtdKSkKKyAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2Nh biBvbiBicmluX2luX3Rlc3RfMl9pZHgKKyAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChh ID0gQU5ZICgne05VTEwsMzNlNzVmZjA5ZGQ2MDFiYmU2OWYzNTEwMzkxNTIxODksZjQ1N2M1 NDVhOWRlZDg4ZjE4ZWNlZTQ3MTQ1YTcyYzAsYzUxY2U0MTBjMTI0YTEwZTBkYjVlNGI5N2Zj MmFmMzl9Jzo6dGV4dFtdKSkKKyg1IHJvd3MpCisKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJy aW5faW5fdGVzdF8yIFdIRVJFIGEgSU4gKE5VTEwsICczM2U3NWZmMDlkZDYwMWJiZTY5ZjM1 MTAzOTE1MjE4OScsICdmNDU3YzU0NWE5ZGVkODhmMThlY2VlNDcxNDVhNzJjMCcsICdjNTFj ZTQxMGMxMjRhMTBlMGRiNWU0Yjk3ZmMyYWYzOScpOworIGNvdW50IAorLS0tLS0tLQorICAg IDM5CisoMSByb3cpCisKK0RST1AgVEFCTEUgYnJpbl9pbl90ZXN0XzI7CitSRVNFVCBlbmFi bGVfc2Vxc2NhbjsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2JyaW4uc3Fs IGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvYnJpbi5zcWwKaW5kZXggOTI5YTA4N2EyNS4uNzE5 OWM5MTA4YiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvYnJpbi5zcWwKKysr IGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvYnJpbi5zcWwKQEAgLTUxNSwzICs1MTUsMjg2IEBA IENSRUFURSBVTkxPR0dFRCBUQUJMRSBicmludGVzdF91bmxvZ2dlZCAobiBudW1yYW5nZSk7 CiBDUkVBVEUgSU5ERVggYnJpbmlkeF91bmxvZ2dlZCBPTiBicmludGVzdF91bmxvZ2dlZCBV U0lORyBicmluIChuKTsKIElOU0VSVCBJTlRPIGJyaW50ZXN0X3VubG9nZ2VkIFZBTFVFUyAo bnVtcmFuZ2UoMCwgMl4xMDAwOjpudW1lcmljKSk7CiBEUk9QIFRBQkxFIGJyaW50ZXN0X3Vu bG9nZ2VkOworCistLSBkbyBzb21lIHRlc3RzIG9uIElOIGNsYXVzZXMgZm9yIHNpbXBsZSBk YXRhIHR5cGVzCitDUkVBVEUgVEFCTEUgYnJpbl9pbl90ZXN0XzEgKGEgSU5ULCBiIEJJR0lO VCkgV0lUSCAoZmlsbGZhY3Rvcj0xMCk7CitJTlNFUlQgSU5UTyBicmluX2luX3Rlc3RfMQor U0VMRUNUIGkvNSArIG1vZCg5OTEgKiBpICsgNjE3LCAyMCksCisgICAgICAgaS8xMCArIG1v ZCg4NTMgKiBpICsgNDkxLCAzMCkKKyAgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDAwKSBz KGkpOworCitDUkVBVEUgSU5ERVggYnJpbl9pbl90ZXN0XzFfaWR4XzEgT04gYnJpbl9pbl90 ZXN0XzEgVVNJTkcgYnJpbiAoYSBpbnQ0X21pbm1heF9vcHMpIFdJVEggKHBhZ2VzX3Blcl9y YW5nZT0xKTsKK0NSRUFURSBJTkRFWCBicmluX2luX3Rlc3RfMV9pZHhfMiBPTiBicmluX2lu X3Rlc3RfMSBVU0lORyBicmluIChiIGludDhfbWlubWF4X29wcykgV0lUSCAocGFnZXNfcGVy X3JhbmdlPTEpOworCitTRVQgZW5hYmxlX3NlcXNjYW49b2ZmOworCistLSBpbnQ6IGVxdWFs aXRpZXMKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5f aW5fdGVzdF8xIFdIRVJFIGEgSU4gKDExMyk7CisKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJy aW5faW5fdGVzdF8xIFdIRVJFIGEgSU4gKDExMyk7CisKK0VYUExBSU4gKENPU1RTIE9GRikK K1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF8xIFdIRVJFIGEgSU4gKDExMywg TlVMTCk7CisKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF8xIFdIRVJFIGEg SU4gKDExMywgTlVMTCk7CisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgq KSBGUk9NIGJyaW5faW5fdGVzdF8xIFdIRVJFIGEgSU4gKE5VTEwsIE5VTEwpOworCitTRUxF Q1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfMSBXSEVSRSBhIElOIChOVUxMLCBOVUxM KTsKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9p bl90ZXN0XzEgV0hFUkUgYSBJTiAoMTEzLCAxNzcpOworCitTRUxFQ1QgQ09VTlQoKikgRlJP TSBicmluX2luX3Rlc3RfMSBXSEVSRSBhIElOICgxMTMsIDE3Nyk7CisKK0VYUExBSU4gKENP U1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF8xIFdIRVJFIGEg SU4gKDExMywgMTc3LCBOVUxMKTsKKworU0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90 ZXN0XzEgV0hFUkUgYSBJTiAoMTEzLCAxNzcsIE5VTEwpOworCitFWFBMQUlOIChDT1NUUyBP RkYpCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfMSBXSEVSRSBhIElOICgx MTMsIDE3NywgMjUpOworCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfMSBX SEVSRSBhIElOICgxMTMsIDE3NywgMjUpOworCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxF Q1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfMSBXSEVSRSBhIElOIChOVUxMLCAxMTMs IDE3NywgMjUpOworCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfMSBXSEVS RSBhIElOIChOVUxMLCAxMTMsIDE3NywgMjUpOworCistLSBpbnQ6IGxlc3MgdGhhbgorRVhQ TEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0XzEg V0hFUkUgYSA8IEFOWSAoQVJSQVlbMzBdKTsKKworU0VMRUNUIENPVU5UKCopIEZST00gYnJp bl9pbl90ZXN0XzEgV0hFUkUgYSA8IEFOWSAoQVJSQVlbMzBdKTsKKworRVhQTEFJTiAoQ09T VFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0XzEgV0hFUkUgYSA8 IEFOWSAoQVJSQVlbMjAsIE5VTExdKTsKKworU0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9p bl90ZXN0XzEgV0hFUkUgYSA8IEFOWSAoQVJSQVlbMjAsIE5VTExdKTsKKworRVhQTEFJTiAo Q09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0XzEgV0hFUkUg YSA8IEFOWSAoQVJSQVlbTlVMTCwgTlVMTF06OmludFtdKTsKKworU0VMRUNUIENPVU5UKCop IEZST00gYnJpbl9pbl90ZXN0XzEgV0hFUkUgYSA8IEFOWSAoQVJSQVlbTlVMTCwgTlVMTF06 OmludFtdKTsKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIEZST00g YnJpbl9pbl90ZXN0XzEgV0hFUkUgYSA8IEFOWSAoQVJSQVlbMzUsIDI5XSk7CisKK1NFTEVD VCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF8xIFdIRVJFIGEgPCBBTlkgKEFSUkFZWzM1 LCAyOV0pOworCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBi cmluX2luX3Rlc3RfMSBXSEVSRSBhIDw9IEFOWSAoQVJSQVlbNDUsIDYwLCBOVUxMXSk7CisK K1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF8xIFdIRVJFIGEgPD0gQU5ZIChB UlJBWVs0NSwgNjAsIE5VTExdKTsKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENP VU5UKCopIEZST00gYnJpbl9pbl90ZXN0XzEgV0hFUkUgYSA8IEFOWSAoQVJSQVlbNDEsIDM3 LCA1NV0pOworCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfMSBXSEVSRSBh IDwgQU5ZIChBUlJBWVs0MSwgMzcsIDU1XSk7CisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NF TEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF8xIFdIRVJFIGEgPD0gQU5ZIChBUlJB WVtOVUxMLCA2MCwgNDMsIDk0XSk7CisKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5f dGVzdF8xIFdIRVJFIGEgPD0gQU5ZIChBUlJBWVtOVUxMLCA2MCwgNDMsIDk0XSk7CisKKwor LS0gaW50OiBncmVhdGVyIHRoYW4KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VO VCgqKSBGUk9NIGJyaW5faW5fdGVzdF8xIFdIRVJFIGEgPiBBTlkgKEFSUkFZWzIwMF0pOwor CitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfMSBXSEVSRSBhID4gQU5ZIChB UlJBWVsyMDBdKTsKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIEZS T00gYnJpbl9pbl90ZXN0XzEgV0hFUkUgYSA+IEFOWSAoQVJSQVlbMTc3LCBOVUxMXSk7CisK K1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF8xIFdIRVJFIGEgPiBBTlkgKEFS UkFZWzE3NywgTlVMTF0pOworCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQo KikgRlJPTSBicmluX2luX3Rlc3RfMSBXSEVSRSBhID4gQU5ZIChBUlJBWVtOVUxMLCBOVUxM XTo6aW50W10pOworCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfMSBXSEVS RSBhID4gQU5ZIChBUlJBWVtOVUxMLCBOVUxMXTo6aW50W10pOworCitFWFBMQUlOIChDT1NU UyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfMSBXSEVSRSBhID4g QU5ZIChBUlJBWVsxNTMsIDE0MF0pOworCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2lu X3Rlc3RfMSBXSEVSRSBhID4gQU5ZIChBUlJBWVsxNTMsIDE0MF0pOworCitFWFBMQUlOIChD T1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfMSBXSEVSRSBh ID49IEFOWSAoQVJSQVlbMTczLCAxOTEsIE5VTExdKTsKKworU0VMRUNUIENPVU5UKCopIEZS T00gYnJpbl9pbl90ZXN0XzEgV0hFUkUgYSA+PSBBTlkgKEFSUkFZWzE3MywgMTkxLCBOVUxM XSk7CisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5f aW5fdGVzdF8xIFdIRVJFIGEgPiBBTlkgKEFSUkFZWzEyMCwgMTg0LCAxNjRdKTsKKworU0VM RUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0XzEgV0hFUkUgYSA+IEFOWSAoQVJSQVlb MTIwLCAxODQsIDE2NF0pOworCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQo KikgRlJPTSBicmluX2luX3Rlc3RfMSBXSEVSRSBhID49IEFOWSAoQVJSQVlbTlVMTCwgMTMw LCAxODEsIDE2OV0pOworCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfMSBX SEVSRSBhID49IEFOWSAoQVJSQVlbTlVMTCwgMTMwLCAxODEsIDE2OV0pOworCisKKy0tIGJp Z2ludDogZXFhbGl0aWVzCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikg RlJPTSBicmluX2luX3Rlc3RfMSBXSEVSRSBiIElOICg4Mik7CisKK1NFTEVDVCBDT1VOVCgq KSBGUk9NIGJyaW5faW5fdGVzdF8xIFdIRVJFIGIgSU4gKDgyKTsKKworRVhQTEFJTiAoQ09T VFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0XzEgV0hFUkUgYiBJ TiAoODIsIE5VTEwpOworCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfMSBX SEVSRSBiIElOICg4MiwgTlVMTCk7CisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBD T1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF8xIFdIRVJFIGIgSU4gKE5VTEwsIE5VTEwpOwor CitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfMSBXSEVSRSBiIElOIChOVUxM LCBOVUxMKTsKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIEZST00g YnJpbl9pbl90ZXN0XzEgV0hFUkUgYiBJTiAoODIsIDQxKTsKKworU0VMRUNUIENPVU5UKCop IEZST00gYnJpbl9pbl90ZXN0XzEgV0hFUkUgYiBJTiAoODIsIDQxKTsKKworRVhQTEFJTiAo Q09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0XzEgV0hFUkUg YiBJTiAoODIsIDQxLCBOVUxMKTsKKworU0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90 ZXN0XzEgV0hFUkUgYiBJTiAoODIsIDQxLCBOVUxMKTsKKworRVhQTEFJTiAoQ09TVFMgT0ZG KQorU0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0XzEgV0hFUkUgYiBJTiAoODIs IDQxLCAxNSk7CisKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF8xIFdIRVJF IGIgSU4gKDgyLCA0MSwgMTUpOworCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09V TlQoKikgRlJPTSBicmluX2luX3Rlc3RfMSBXSEVSRSBiIElOIChOVUxMLCA4MiwgNDEsIDE1 KTsKKworU0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0XzEgV0hFUkUgYiBJTiAo TlVMTCwgODIsIDQxLCAxNSk7CisKKworLS0gYmlnaW50OiBsZXNzIHRoYW4KK0VYUExBSU4g KENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF8xIFdIRVJF IGIgPCBBTlkgKEFSUkFZWzMxXSk7CisKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5f dGVzdF8xIFdIRVJFIGIgPCBBTlkgKEFSUkFZWzMxXSk7CisKK0VYUExBSU4gKENPU1RTIE9G RikKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF8xIFdIRVJFIGIgPCBBTlkg KEFSUkFZWzU1LCBOVUxMXSk7CisKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVz dF8xIFdIRVJFIGIgPCBBTlkgKEFSUkFZWzU1LCBOVUxMXSk7CisKK0VYUExBSU4gKENPU1RT IE9GRikKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF8xIFdIRVJFIGIgPCBB TlkgKEFSUkFZW05VTEwsIE5VTExdOjpiaWdpbnRbXSk7CisKK1NFTEVDVCBDT1VOVCgqKSBG Uk9NIGJyaW5faW5fdGVzdF8xIFdIRVJFIGIgPCBBTlkgKEFSUkFZW05VTEwsIE5VTExdOjpi aWdpbnRbXSk7CisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBGUk9N IGJyaW5faW5fdGVzdF8xIFdIRVJFIGIgPD0gQU5ZIChBUlJBWVs3MywgNTFdKTsKKworU0VM RUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0XzEgV0hFUkUgYiA8PSBBTlkgKEFSUkFZ WzczLCA1MV0pOworCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgRlJP TSBicmluX2luX3Rlc3RfMSBXSEVSRSBiIDwgQU5ZIChBUlJBWVs2OSwgODcsIE5VTExdKTsK KworU0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0XzEgV0hFUkUgYiA8IEFOWSAo QVJSQVlbNjksIDg3LCBOVUxMXSk7CisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBD T1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF8xIFdIRVJFIGIgPD0gQU5ZIChBUlJBWVs4Miwg OTEsIDM1XSk7CisKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF8xIFdIRVJF IGIgPD0gQU5ZIChBUlJBWVs4MiwgOTEsIDM1XSk7CisKK0VYUExBSU4gKENPU1RTIE9GRikK K1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF8xIFdIRVJFIGIgPCBBTlkgKEFS UkFZW05VTEwsIDYzLCAyMSwgODVdKTsKKworU0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9p bl90ZXN0XzEgV0hFUkUgYiA8IEFOWSAoQVJSQVlbTlVMTCwgNjMsIDIxLCA4NV0pOworCisK Ky0tIGJpZ2ludDogZ3JlYXRlciB0aGFuCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1Qg Q09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfMSBXSEVSRSBiID4gQU5ZIChBUlJBWVs5NF0p OworCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfMSBXSEVSRSBiID4gQU5Z IChBUlJBWVs5NF0pOworCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikg RlJPTSBicmluX2luX3Rlc3RfMSBXSEVSRSBiID4gQU5ZIChBUlJBWVs4MCwgTlVMTF0pOwor CitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfMSBXSEVSRSBiID4gQU5ZIChB UlJBWVs4MCwgTlVMTF0pOworCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQo KikgRlJPTSBicmluX2luX3Rlc3RfMSBXSEVSRSBiID4gQU5ZIChBUlJBWVtOVUxMLCBOVUxM XTo6YmlnaW50W10pOworCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfMSBX SEVSRSBiID4gQU5ZIChBUlJBWVtOVUxMLCBOVUxMXTo6YmlnaW50W10pOworCitFWFBMQUlO IChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfMSBXSEVS RSBiID4gQU5ZIChBUlJBWVsxOTksIDEwN10pOworCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBi cmluX2luX3Rlc3RfMSBXSEVSRSBiID4gQU5ZIChBUlJBWVsxOTksIDEwN10pOworCitFWFBM QUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfMSBX SEVSRSBiID49IEFOWSAoQVJSQVlbMTgyLCAxMDEsIE5VTExdKTsKKworU0VMRUNUIENPVU5U KCopIEZST00gYnJpbl9pbl90ZXN0XzEgV0hFUkUgYiA+PSBBTlkgKEFSUkFZWzE4MiwgMTAx LCBOVUxMXSk7CisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBGUk9N IGJyaW5faW5fdGVzdF8xIFdIRVJFIGIgPiBBTlkgKEFSUkFZWzMwMCwgMTA2LCAyNTFdKTsK KworU0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0XzEgV0hFUkUgYiA+IEFOWSAo QVJSQVlbMzAwLCAxMDYsIDI1MV0pOworCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1Qg Q09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfMSBXSEVSRSBiID4gQU5ZIChBUlJBWVtOVUxM LCAxODIsIDEwMSwgMTU1XSk7CisKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVz dF8xIFdIRVJFIGIgPiBBTlkgKEFSUkFZW05VTEwsIDE4MiwgMTAxLCAxNTVdKTsKKworCitE Uk9QIFRBQkxFIGJyaW5faW5fdGVzdF8xOworUkVTRVQgZW5hYmxlX3NlcXNjYW47CisKKy0t IGRvIHNvbWUgdGVzdHMgb24gSU4gY2xhdXNlcyBmb3IgdmFybGVuYSBkYXRhIHR5cGVzCitD UkVBVEUgVEFCTEUgYnJpbl9pbl90ZXN0XzIgKGEgVEVYVCkgV0lUSCAoZmlsbGZhY3Rvcj0x MCk7CitJTlNFUlQgSU5UTyBicmluX2luX3Rlc3RfMgorU0VMRUNUIHYgRlJPTSAoU0VMRUNU IHJvd19udW1iZXIoKSBPVkVSIChPUkRFUiBCWSB2KSBjLCB2IEZST00gKFNFTEVDVCBtZDUo KGkvMTMpOjp0ZXh0KSBBUyB2IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTAwMCkgcyhpKSkg Zm9vKSBiYXIgT1JERVIgQlkgYyArIDI1ICogcmFuZG9tKCk7CisKK0NSRUFURSBJTkRFWCBi cmluX2luX3Rlc3RfMl9pZHggT04gYnJpbl9pbl90ZXN0XzIgVVNJTkcgYnJpbiAoYSB0ZXh0 X21pbm1heF9vcHMpIFdJVEggKHBhZ2VzX3Blcl9yYW5nZT0xKTsKKworU0VUIGVuYWJsZV9z ZXFzY2FuPW9mZjsKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIEZS T00gYnJpbl9pbl90ZXN0XzIgV0hFUkUgYSBJTiAoJzMzZTc1ZmYwOWRkNjAxYmJlNjlmMzUx MDM5MTUyMTg5Jyk7CisKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF8yIFdI RVJFIGEgSU4gKCczM2U3NWZmMDlkZDYwMWJiZTY5ZjM1MTAzOTE1MjE4OScpOworCitFWFBM QUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfMiBX SEVSRSBhIElOICgnMzNlNzVmZjA5ZGQ2MDFiYmU2OWYzNTEwMzkxNTIxODknLCBOVUxMKTsK KworU0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0XzIgV0hFUkUgYSBJTiAoJzMz ZTc1ZmYwOWRkNjAxYmJlNjlmMzUxMDM5MTUyMTg5JywgTlVMTCk7CisKK0VYUExBSU4gKENP U1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF8yIFdIRVJFIGEg SU4gKE5VTEwsIE5VTEwpOworCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3Rf MiBXSEVSRSBhIElOIChOVUxMLCBOVUxMKTsKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VM RUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0XzIgV0hFUkUgYSBJTiAoJzMzZTc1ZmYw OWRkNjAxYmJlNjlmMzUxMDM5MTUyMTg5JywgJ2Y0NTdjNTQ1YTlkZWQ4OGYxOGVjZWU0NzE0 NWE3MmMwJyk7CisKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF8yIFdIRVJF IGEgSU4gKCczM2U3NWZmMDlkZDYwMWJiZTY5ZjM1MTAzOTE1MjE4OScsICdmNDU3YzU0NWE5 ZGVkODhmMThlY2VlNDcxNDVhNzJjMCcpOworCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxF Q1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfMiBXSEVSRSBhIElOICgnMzNlNzVmZjA5 ZGQ2MDFiYmU2OWYzNTEwMzkxNTIxODknLCAnZjQ1N2M1NDVhOWRlZDg4ZjE4ZWNlZTQ3MTQ1 YTcyYzAnLCBOVUxMKTsKKworU0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0XzIg V0hFUkUgYSBJTiAoJzMzZTc1ZmYwOWRkNjAxYmJlNjlmMzUxMDM5MTUyMTg5JywgJ2Y0NTdj NTQ1YTlkZWQ4OGYxOGVjZWU0NzE0NWE3MmMwJywgTlVMTCk7CisKK0VYUExBSU4gKENPU1RT IE9GRikKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF8yIFdIRVJFIGEgSU4g KCczM2U3NWZmMDlkZDYwMWJiZTY5ZjM1MTAzOTE1MjE4OScsICdmNDU3YzU0NWE5ZGVkODhm MThlY2VlNDcxNDVhNzJjMCcsICdjNTFjZTQxMGMxMjRhMTBlMGRiNWU0Yjk3ZmMyYWYzOScp OworCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfMiBXSEVSRSBhIElOICgn MzNlNzVmZjA5ZGQ2MDFiYmU2OWYzNTEwMzkxNTIxODknLCAnZjQ1N2M1NDVhOWRlZDg4ZjE4 ZWNlZTQ3MTQ1YTcyYzAnLCAnYzUxY2U0MTBjMTI0YTEwZTBkYjVlNGI5N2ZjMmFmMzknKTsK KworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90 ZXN0XzIgV0hFUkUgYSBJTiAoTlVMTCwgJzMzZTc1ZmYwOWRkNjAxYmJlNjlmMzUxMDM5MTUy MTg5JywgJ2Y0NTdjNTQ1YTlkZWQ4OGYxOGVjZWU0NzE0NWE3MmMwJywgJ2M1MWNlNDEwYzEy NGExMGUwZGI1ZTRiOTdmYzJhZjM5Jyk7CisKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5f aW5fdGVzdF8yIFdIRVJFIGEgSU4gKE5VTEwsICczM2U3NWZmMDlkZDYwMWJiZTY5ZjM1MTAz OTE1MjE4OScsICdmNDU3YzU0NWE5ZGVkODhmMThlY2VlNDcxNDVhNzJjMCcsICdjNTFjZTQx MGMxMjRhMTBlMGRiNWU0Yjk3ZmMyYWYzOScpOworCitEUk9QIFRBQkxFIGJyaW5faW5fdGVz dF8yOworUkVTRVQgZW5hYmxlX3NlcXNjYW47Ci0tIAoyLjQxLjAKCg== --------------K3kYSMhKEHYIXFtmkUtXAdlw Content-Type: text/x-patch; charset=UTF-8; name="0003-Support-SK_SEARCHARRAY-in-BRIN-minmax-multi-20230702.patch" Content-Disposition: attachment; filename*0="0003-Support-SK_SEARCHARRAY-in-BRIN-minmax-multi-20230702.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA0OTYwNjc2MGNhOGQxMTlmMjc5NDYyNjYyMGE2N2RkNTY4Nzk1MDE1IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRyYUBwb3N0 Z3Jlc3FsLm9yZz4KRGF0ZTogRnJpLCAxNyBGZWIgMjAyMyAwMjo0NToxNCArMDEwMApTdWJq ZWN0OiBbUEFUQ0ggMy81XSBTdXBwb3J0IFNLX1NFQVJDSEFSUkFZIGluIEJSSU4gbWlubWF4 LW11bHRpCgpTaW1pbGFyIGFwcHJvYWNoIHRvIG1pbm1heCwgYnV0IHRoZSBpc3N1ZXMgd2l0 aCBkZWNvbnN0cnVjdGluZyB0aGUgYXJyYXkKb3ZlciBhbmQgb3ZlciBhcmUgZXZlbiBtb3Jl IHNlcmlvdXMuCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbl9taW5tYXhfbXVs dGkuYyB8IDc3MCArKysrKysrKysrKysrKy0tCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2Ft cHJvYy5kYXQgICAgICAgICAgIHwgIDU3ICsrCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3By b2MuZGF0ICAgICAgICAgICAgIHwgICA0ICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv YnJpbl9tdWx0aS5vdXQgICAgfCA5MjYgKysrKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL2JyaW5fbXVsdGkuc3FsICAgICAgICAgfCAzMDEgKysrKysrKwogNSBm aWxlcyBjaGFuZ2VkLCAxOTk0IGluc2VydGlvbnMoKyksIDY0IGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW5fbWlubWF4X211bHRpLmMg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluX21pbm1heF9tdWx0aS5jCmluZGV4IGY4 YjJhM2Y5YmMuLmE4YzY1YmZjMjAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9i cmluL2JyaW5fbWlubWF4X211bHRpLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4v YnJpbl9taW5tYXhfbXVsdGkuYwpAQCAtMTA5LDYgKzEwOSwxNCBAQAogI2RlZmluZQkJTUlO TUFYX0JVRkZFUl9NQVgJCQkJODE5MgogI2RlZmluZQkJTUlOTUFYX0JVRkZFUl9MT0FEX0ZB Q1RPUgkJMC41CiAKKy8qCisgKiBXZSB1c2Ugc29tZSBwcml2YXRlIHNrX2ZsYWdzIGJpdHMg aW4gcHJlcHJvY2Vzc2VkIHNjYW4ga2V5cy4gIFdlJ3JlIGFsbG93ZWQKKyAqIHRvIHVzZSBi aXRzIDE2LTMxIChzZWUgc2tleS5oKS4gIFRoZSB1cHBlcm1vc3QgYml0cyBhcmUgY29waWVk IGZyb20gdGhlCisgKiBpbmRleCdzIGluZG9wdGlvbltdIGFycmF5IGVudHJ5IGZvciB0aGUg aW5kZXggYXR0cmlidXRlLgorICovCisjZGVmaW5lIFNLX0JSSU5fU09SVEVECTB4MDAwMTAw MDAJLyogZGVjb25zdHJ1Y3RlZCBhbmQgc29ydGVkIGFycmF5ICovCisKKwogdHlwZWRlZiBz dHJ1Y3QgTWlubWF4TXVsdGlPcGFxdWUKIHsKIAlGbWdySW5mbwlleHRyYV9wcm9jaW5mb3Nb TUlOTUFYX01BWF9QUk9DTlVNU107CkBAIC0yNTY4LDYgKzI1NzYsMTk3IEBAIGJyaW5fbWlu bWF4X211bHRpX2FkZF92YWx1ZShQR19GVU5DVElPTl9BUkdTKQogCVBHX1JFVFVSTl9CT09M KG1vZGlmaWVkKTsKIH0KIAorLyoKKyAqIHByZXByb2Nlc3Npbmcgb2Ygc2NhbiBrZXlzIGZv ciB0aGUgbWlubWF4IG11bHRpIG9wY2xhc3MKKyAqCisgKiBGb3Igbm93IHdlIGNhcmUgb25s eSBhYm91dCBhcnJheSBrZXlzIC0gaW5zdGVhZCBvZiBzaW1wbGUgbGluZWFyIHNlYXJjaAor ICogaW4gdGhlIGFycmF5IChmb3IgZWFjaCByYW5nZSksIHdlIHNvcnQgdGhlIGFycmF5cyBk dXJpbmcgcHJlcHJvY2Vzc2luZworICogYW5kIHRoZW4gdXNlIHRoYXQgZm9yIGJpbmFyeSBz b3J0IGluIGNvbnNpc3RlbnQgZnVuY3Rpb24uCisgKgorICogRklYTUUgQSBsb3Qgb2YgdGhp cyBpcyBleGFjdGx5IHRoZSBzYW1lIGFzIGZvciBwbGFpbiBtaW5tYXgsIG1heWJlIHdlCisg KiBjYW4gc2hhcmUgdGhhdCBzb21laG93LgorICovCisKKy8qIHFzb3J0IGNvbXBhcmF0b3Ig dXNlZCB0byBzb3J0IGFycmF5IGVsZW1lbnRzICovCitzdGF0aWMgaW50CittaW5tYXhfbXVs dGlfY29tcGFyZV92YWx1ZXMoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYiwgdm9pZCAq YXJnKQoreworCURhdHVtCWRhID0gKiAoRGF0dW0gKikgYTsKKwlEYXR1bQlkYiA9ICogKERh dHVtICopIGI7CisJU29ydFN1cHBvcnQJc3N1cCA9IChTb3J0U3VwcG9ydCkgYXJnOworCisJ cmV0dXJuIEFwcGx5U29ydENvbXBhcmF0b3IoZGEsIGZhbHNlLCBkYiwgZmFsc2UsIHNzdXAp OworfQorCisvKgorICogRGVjb25zdHJ1Y3RlZCBhbmQgc29ydGVkIHNjYW4ga2V5IGFycmF5 ICh3ZSBtaWdodCBidWlsZCBBcnJheVR5cGUsIGJ1dCB0aGVuCisgKiB3ZSdkIGhhdmUgdG8g ZGVjb25zdHJ1Y3QgaXQgb3ZlciBhbmQgb3ZlciBmb3IgZWFjaCBwYWdlIHJhbmdlKS4gU28g d2UganVzdAorICogZG8gaXQgb25jZSBkdXJpbmcgcHJlcHJvY2Vzc2luZy4KKyAqLwordHlw ZWRlZiBzdHJ1Y3QgU2NhbktleUFycmF5IHsKKwlPaWQJCXR5cGVpZDsKKwlpbnQJCW5lbGVt ZW50czsKKwlEYXR1bSAgKmVsZW1lbnRzOworfSBTY2FuS2V5QXJyYXk7CisKKy8qCisgKiBt aW5tYXhfbXVsdGlfbG93ZXJfYm91bmRhcnkKKyAqCQlHaXZlbiBhIHZhbHVlLCBkZXRlcm1p bmUgdGhlIG1pbmltdW0gaW5kZXggc28gdGhhdCAoYXJyYXlbaW5kZXhdID49IHZhbHVlKQor ICoKKyAqIFdlIHVzZSB0aGlzIHRvIGNoZWNrIGlmIGEgbWlubWF4IHJhbmdlIFttaW52YWx1 ZSwgbWF4dmFsdWVdIGludGVyc2VjdHMgd2l0aAorICogdGhlIGFycmF5IGluIHRoZSBzY2Fu IGtleSAod2hpY2ggaXMgZXhwZWN0ZWQgdG8gYmUgc29ydGVkKS4gV2UgY2FsY3VsYXRlCisg KiB0aGUgbG93ZXIgYm91bmRhcnkgZm9yIFttaW52YWx1ZV0gYW5kIHRoZW4gY2hlY2sgaWYg aXQgYWN0dWFsbHkgZmFsbHMgdW5kZXIKKyAqIHRoZSBtYXh2YWx1ZSB0b28uIElmIHllcywg d2UgZm91bmQgYW4gZWxlbWVudCBjb25zaXN0ZW50IHdpdGggdGhlIHBhZ2UgcmFuZ2UuCisg KgorICogSWYgYWxsIGFycmF5IGVsZW1lbnRzIG1hdGNoIChpLmUuIGFsbCBlbGVtZW50cyA+ PSB2YWx1ZSksIHJldHVybnMgMC4gSWYgbm8KKyAqIGVsZW1lbnRzIG1hdGNoIChpLmUuIGFs bCBlbGVtZW50cyA8IDApLCByZXR1cm5zIG52YWx1ZXMuCisgKi8KK3N0YXRpYyBpbnQKK21p bm1heF9tdWx0aV9sb3dlcl9ib3VuZGFyeShEYXR1bSAqdmFsdWVzLCBpbnQgbnZhbHVlcywg RGF0dW0gbWludmFsdWUsIFNvcnRTdXBwb3J0IHNzdXApCit7CisJaW50CQlzdGFydCA9IDAs CisJCQllbmQgPSAobnZhbHVlcyAtIDEpOworCisJLyogZXZlcnl0aGluZyBleGNlZWRzIG1p bnZhbCBhbmQgbWlnaHQgbWF0Y2ggKi8KKwlpZiAobWlubWF4X211bHRpX2NvbXBhcmVfdmFs dWVzKCZtaW52YWx1ZSwgJnZhbHVlc1tzdGFydF0sIHNzdXApIDw9IDApCisJCXJldHVybiAw OworCisJLyogbm90aGluZyBjb3VsZCBtYXRjaCAqLworCWlmIChtaW5tYXhfbXVsdGlfY29t cGFyZV92YWx1ZXMoJm1pbnZhbHVlLCAmdmFsdWVzW2VuZF0sIHNzdXApID4gMCkKKwkJcmV0 dXJuIG52YWx1ZXM7CisKKwl3aGlsZSAoKGVuZCAtIHN0YXJ0KSA+IDApCisJeworCQlpbnQg bWlkcG9pbnQ7CisJCWludCByOworCisJCW1pZHBvaW50ID0gc3RhcnQgKyAoZW5kIC0gc3Rh cnQpIC8gMjsKKworCQlyID0gbWlubWF4X211bHRpX2NvbXBhcmVfdmFsdWVzKCZtaW52YWx1 ZSwgJnZhbHVlc1ttaWRwb2ludF0sIHNzdXApOworCisJCWlmIChyID4gMCkKKwkJCXN0YXJ0 ID0gTWF4KG1pZHBvaW50LCBzdGFydCArIDEpOworCQllbHNlCisJCQllbmQgPSBtaWRwb2lu dDsKKwl9CisKKwkvKiB0aGUgdmFsdWUgc2hvdWxkIG1lZXQgdGhlICh2ID49bWludmFsdWUp IHJlcXVpcmVtZW50ICovCisJQXNzZXJ0KG1pbm1heF9tdWx0aV9jb21wYXJlX3ZhbHVlcygm dmFsdWVzW3N0YXJ0XSwgJm1pbnZhbHVlLCBzc3VwKSA+PSAwKTsKKworCS8qIHdlIGtub3cg c3RhcnQgY2FuJ3QgYmUgMCwgc28gaXQncyBsZWdhbCB0byBzdWJ0cmFjdCAxICovCisJQXNz ZXJ0KG1pbm1heF9tdWx0aV9jb21wYXJlX3ZhbHVlcygmdmFsdWVzW3N0YXJ0LTFdLCAmbWlu dmFsdWUsIHNzdXApIDwgMCk7CisKKwlyZXR1cm4gc3RhcnQ7Cit9CisKKy8qCisgKiBicmlu X211bHRpX21pbm1heF9wcmVwcm9jZXNzCisgKgkJcHJlcHJvY2VzcyBzY2FuIGtleXMgZm9y IHRoZSBtaW5tYXggbXVsdGkgb3BjbGFzcworICoKKyAqIEZvciBub3cgd2UganVzdCBjYXJl IGFib3V0IFNLX1NFQVJDSEFSUkFZIGtleXMsIHdoaWNoIHdlIHNvcnQgYW5kIGtlZXAgdGhl CisgKiBkZWNvbnN0cnVjdGVkIGFycmF5LiBBbGwgb3RoZXIgc2NhbiBrZXlzIGFyZSBpZ25v cmVkIChyZXR1cm5lZCBhcyBpcykuCisgKgorICogWFhYIERvIHdlIG5lZWQgdG8gcmVtZW1i ZXIgaWYgdGhlIGFycmF5IGNvbnRhaW5lZCBOVUxMIHZhbHVlcz8KKyAqLworRGF0dW0KK2Jy aW5fbWlubWF4X211bHRpX3ByZXByb2Nlc3MoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlTY2Fu S2V5CQlrZXkgPSAoU2NhbktleSkgUEdfR0VUQVJHX1BPSU5URVIoMSk7CisJU2NhbktleQkJ bmV3a2V5OworCVNjYW5LZXlBcnJheSAqc2NhbmFycmF5OworCisJQXJyYXlUeXBlICAqYXJy YXl2YWw7CisJaW50MTYJCWVsbWxlbjsKKwlib29sCQllbG1ieXZhbDsKKwljaGFyCQllbG1h bGlnbjsKKwlpbnQJCQludW1fZWxlbXM7CisJRGF0dW0JICAgKmVsZW1fdmFsdWVzOworCWJv b2wJICAgKmVsZW1fbnVsbHM7CisJVHlwZUNhY2hlRW50cnkgKnR5cGU7CisJU29ydFN1cHBv cnREYXRhIHNzdXA7CisKKwkvKiBudW1iZXIgb2Ygbm9uLW51bGwgZWxlbWVudHMgaW4gdGhl IGFycmF5ICovCisJaW50CQkJbnVtX25vbm51bGxzOworCisJLyoKKwkgKiBpZ25vcmUgc2Nh bGFyIGtleXMgKGp1c3QgcmV0dXJuIHRoZSBvcmlnaW5hbCBzY2FuIGtleSkKKwkgKgorCSAq IFhYWCBNYXliZSB3ZSBzaG91bGQgcHJlcHJvY2VzcyBzY2FsYXIga2V5cyB0b28sIGFuZCB0 cmVhdCB0aGVtIGFzIGFycmF5cworCSAqIHdpdGggYSBzaW5nbGUgZWxlbWVudC4gSXQnZCBt YWtlIHRoZSBjb25zaXN0ZW50IGZ1bmN0aW9uIHNpbXBsZXIgYnkgbm90CisJICogaGF2aW5n IHRvIGRvIGJyYW5jaGluZy4KKwkgKi8KKwlpZiAoIShrZXktPnNrX2ZsYWdzICYgU0tfU0VB UkNIQVJSQVkpKQorCQlQR19SRVRVUk5fUE9JTlRFUihrZXkpOworCisJYXJyYXl2YWwgPSBE YXR1bUdldEFycmF5VHlwZVAoa2V5LT5za19hcmd1bWVudCk7CisKKwlnZXRfdHlwbGVuYnl2 YWxhbGlnbihBUlJfRUxFTVRZUEUoYXJyYXl2YWwpLAorCQkJCQkJICZlbG1sZW4sICZlbG1i eXZhbCwgJmVsbWFsaWduKTsKKworCWRlY29uc3RydWN0X2FycmF5KGFycmF5dmFsLAorCQkJ CQkgIEFSUl9FTEVNVFlQRShhcnJheXZhbCksCisJCQkJCSAgZWxtbGVuLCBlbG1ieXZhbCwg ZWxtYWxpZ24sCisJCQkJCSAgJmVsZW1fdmFsdWVzLCAmZWxlbV9udWxscywgJm51bV9lbGVt cyk7CisKKwkvKiBlbGltaW5hdGUgTlVMTCBlbGVtZW50cyAqLworCW51bV9ub25udWxscyA9 IDA7CisJZm9yIChpbnQgaSA9IDA7IGkgPCBudW1fZWxlbXM7IGkrKykKKwl7CisJCS8qIHNr aXAgTlVMTCBlbGVtZW50cyAqLworCQlpZiAoZWxlbV9udWxsc1tpXSkKKwkJCWNvbnRpbnVl OworCisJCS8qIGlmIG5lZWRlZCwgbW92ZSB0aGUgbm9uLU5VTEwgb25lcyAqLworCQlpZiAo bnVtX25vbm51bGxzICE9IGkpCisJCQllbGVtX3ZhbHVlc1tudW1fbm9ubnVsbHNdID0gZWxl bV92YWx1ZXNbaV07CisKKwkJbnVtX25vbm51bGxzKys7CisJfQorCisJbnVtX2VsZW1zID0g bnVtX25vbm51bGxzOworCisJLyogRklYTUUgV2hhdCBpZiBudW1fbm9ubnVsbHMgaXMgMD8g Q2FuIGl0IGV2ZW4gaGFwcGVuIC8gZ2V0IGhlcmU/ICovCisKKwkvKgorCSAqIHNvcnQgdGhl IGFycmF5CisJICoKKwkgKiBYWFggU2hvdWxkIHdlIHdhbGsgdGhlIHNvcnRlZCBhcnJheSBh Z2FpbiBhbmQgZWxpbWluYXRlIGR1cGxpY2F0ZSB2YWx1ZXM/CisJICogU2VlbXMgdW5uZWNl c3NhcnkgLSB3ZSdyZSBub3QgZ29pbmcgdG8gcmVwYWxsb2MvcmVsZWFzZSB0aGUgbWVtb3J5 IGFueXdheQorCSAqIGFuZCBpdCdzIHVubGlrZWx5IHRvIHNwZWVkIHVwIHRoZSBiaW5zZWFy Y2ggKHVubGVzcyB0aGVyZSdzIGEgbG90IG9mCisJICogZHVwbGljYXRlIHZhbHVlcywgd2hp Y2ggZG9lcyBub3Qgc2VlbSBwbGF1c2libGUvY29tbW9uKS4KKwkgKi8KKwl0eXBlID0gbG9v a3VwX3R5cGVfY2FjaGUoQVJSX0VMRU1UWVBFKGFycmF5dmFsKSwgVFlQRUNBQ0hFX0xUX09Q Uik7CisKKwltZW1zZXQoJnNzdXAsIDAsIHNpemVvZihTb3J0U3VwcG9ydERhdGEpKTsKKwor CXNzdXAuc3N1cF9jb2xsYXRpb24gPSBrZXktPnNrX2NvbGxhdGlvbjsKKwlzc3VwLnNzdXBf Y3h0ID0gQ3VycmVudE1lbW9yeUNvbnRleHQ7CisKKwlQcmVwYXJlU29ydFN1cHBvcnRGcm9t T3JkZXJpbmdPcCh0eXBlLT5sdF9vcHIsICZzc3VwKTsKKworCXFzb3J0X2ludGVycnVwdGli bGUoZWxlbV92YWx1ZXMsIG51bV9lbGVtcywgc2l6ZW9mKERhdHVtKSwKKwkJCQkJCW1pbm1h eF9tdWx0aV9jb21wYXJlX3ZhbHVlcywgJnNzdXApOworCisJLyogQ29uc3RydWN0IHRoZSBu ZXcgc2NhbiBrZXksIHdpdGggc29ydGVkIGFycmF5IGFzIFNjYW5LZXlBcnJheS4gKi8KKwlz Y2FuYXJyYXkgPSBwYWxsb2MwKHNpemVvZihTY2FuS2V5QXJyYXkpKTsKKwlzY2FuYXJyYXkt PnR5cGVpZCA9IEFSUl9FTEVNVFlQRShhcnJheXZhbCk7CisJc2NhbmFycmF5LT5uZWxlbWVu dHMgPSBudW1fZWxlbXM7CisJc2NhbmFycmF5LT5lbGVtZW50cyA9IGVsZW1fdmFsdWVzOwor CisJbmV3a2V5ID0gcGFsbG9jMChzaXplb2YoU2NhbktleURhdGEpKTsKKworCVNjYW5LZXlF bnRyeUluaXRpYWxpemVXaXRoSW5mbyhuZXdrZXksCisJCQkJCQkJCSAgIChrZXktPnNrX2Zs YWdzIHwgU0tfQlJJTl9TT1JURUQpLAorCQkJCQkJCQkgICBrZXktPnNrX2F0dG5vLAorCQkJ CQkJCQkgICBrZXktPnNrX3N0cmF0ZWd5LAorCQkJCQkJCQkgICBrZXktPnNrX3N1YnR5cGUs CisJCQkJCQkJCSAgIGtleS0+c2tfY29sbGF0aW9uLAorCQkJCQkJCQkgICAma2V5LT5za19m dW5jLAorCQkJCQkJCQkgICBQb2ludGVyR2V0RGF0dW0oc2NhbmFycmF5KSk7CisKKwlQR19S RVRVUk5fUE9JTlRFUihuZXdrZXkpOworfQorCiAvKgogICogR2l2ZW4gYW4gaW5kZXggdHVw bGUgY29ycmVzcG9uZGluZyB0byBhIGNlcnRhaW4gcGFnZSByYW5nZSBhbmQgYSBzY2FuIGtl eSwKICAqIHJldHVybiB3aGV0aGVyIHRoZSBzY2FuIGtleSBpcyBjb25zaXN0ZW50IHdpdGgg dGhlIGluZGV4IHR1cGxlJ3MgbWluL21heApAQCAtMjU5MCwxMyArMjc4OSwyMSBAQCBicmlu X21pbm1heF9tdWx0aV9jb25zaXN0ZW50KFBHX0ZVTkNUSU9OX0FSR1MpCiAJUmFuZ2VzCSAg ICpyYW5nZXM7CiAJaW50CQkJa2V5bm87CiAJaW50CQkJcmFuZ2VubzsKLQlpbnQJCQlpOwog CiAJYXR0bm8gPSBjb2x1bW4tPmJ2X2F0dG5vOwogCiAJc2VyaWFsaXplZCA9IChTZXJpYWxp emVkUmFuZ2VzICopIFBHX0RFVE9BU1RfREFUVU0oY29sdW1uLT5idl92YWx1ZXNbMF0pOwog CXJhbmdlcyA9IGJyaW5fcmFuZ2VfZGVzZXJpYWxpemUoc2VyaWFsaXplZC0+bWF4dmFsdWVz LCBzZXJpYWxpemVkKTsKIAorCS8qCisJICogWFhYIFdvdWxkIGl0IG1ha2Ugc2Vuc2UgdG8g aGF2ZSBhIHF1aWNrIGluaXRpYWwgY2hlY2sgb24gdGhlIHdob2xlCisJICogc3VtbWFyeT8g V2Uga25vdyBtb3N0IHBhZ2UgcmFuZ2VzIGFyZSBub3QgZXhwZWN0ZWQgdG8gbWF0Y2gsIGFu ZCB3ZQorCSAqIGtub3cgdGhlIHJhbmdlcy92YWx1ZXMgYXJlIHNvcnRlZCBzbyB3ZSBjb3Vs ZCBjaGVjayBnbG9iYWwgbWluL21heAorCSAqIChlc3NlbnRpYWxseSB3aGF0IHJlZ3VsYXIg bWlubWF4IGlzIGRvaW5nKSBhbmQgYmFpbCBpZiBubyBtYXRjaCBpcworCSAqIHBvc3NpYmxl LiBUaGF0IHNob3VsZCBiZSBjaGVhcCBhbmQgbWlnaHQgc2F2ZSBhIGxvdCBvbiBpbnNwZWN0 aW5nCisJICogdGhlIGluZGl2aWR1YWwgcmFuZ2VzL3ZhbHVlcy4KKwkgKi8KKwogCS8qIGlu c3BlY3QgdGhlIHJhbmdlcywgYW5kIGZvciBlYWNoIG9uZSBldmFsdWF0ZSB0aGUgc2NhbiBr ZXlzICovCiAJZm9yIChyYW5nZW5vID0gMDsgcmFuZ2VubyA8IHJhbmdlcy0+bnJhbmdlczsg cmFuZ2VubysrKQogCXsKQEAgLTI2MTcsNjcgKzI4MjQsMzQ5IEBAIGJyaW5fbWlubWF4X211 bHRpX2NvbnNpc3RlbnQoUEdfRlVOQ1RJT05fQVJHUykKIAkJCWF0dG5vID0ga2V5LT5za19h dHRubzsKIAkJCXN1YnR5cGUgPSBrZXktPnNrX3N1YnR5cGU7CiAJCQl2YWx1ZSA9IGtleS0+ c2tfYXJndW1lbnQ7Ci0JCQlzd2l0Y2ggKGtleS0+c2tfc3RyYXRlZ3kpCisKKwkJCS8qCisJ CQkgKiBGb3IgcmVndWxhciAoc2NhbGFyKSBzY2FuIGtleXMsIHdlIHNpbXBseSBjb21wYXJl IHRoZSB2YWx1ZSB0byB0aGUKKwkJCSAqIHJhbmdlIG1pbi9tYXggdmFsdWVzLCBhbmQgd2Un cmUgZG9uZS4gRm9yIHByZXByb2Nlc3NlZCBTS19TRUFSQ0hBUlJBWQorCQkJICoga2V5cyB3 ZSBjYW4gZG8gYSBiaW5hcnkgc2VhcmNoIGluIHRoZSBzb3J0ZWQgYXJyYXkuCisJCQkgKgor CQkJICogRklYTUUgVGhpcyBzaG91bGQgYWxzbyBoYW5kbGUgdGhlICJhcnJheSBidXQgbm90 IHByZXByb2Nlc3NlZCIgY2FzZQorCQkJICogdG9vLCBmb3Igb3BjbGFzc2VzIG5vdCBkZWZp bmluZyB0aGUgb3B0aW9uYWwgcHJlcHJvY2VzcyBwcm9jZWR1cmUuCisJCQkgKiBPdGhlcndp c2Ugd2UnZCBoYXZlIGlzc3VlcyB3aXRoIHN1Y2ggb3BjbGFzc2VzIGJlY2F1c2UgYW1zZWFy Y2hhcnJheQorCQkJICogaXMgZGVmaW5lZCBhdCB0aGUgQU0gbGV2ZWwuCisJCQkgKi8KKwkJ CWlmIChrZXktPnNrX2ZsYWdzICYgU0tfQlJJTl9TT1JURUQpCQkJLyogcHJlcHJvY2Vzc2Vk IGFycmF5Ki8KIAkJCXsKLQkJCQljYXNlIEJUTGVzc1N0cmF0ZWd5TnVtYmVyOgotCQkJCWNh c2UgQlRMZXNzRXF1YWxTdHJhdGVneU51bWJlcjoKLQkJCQkJZmluZm8gPSBtaW5tYXhfbXVs dGlfZ2V0X3N0cmF0ZWd5X3Byb2NpbmZvKGJkZXNjLCBhdHRubywgc3VidHlwZSwKLQkJCQkJ CQkJCQkJCQkJCSAgIGtleS0+c2tfc3RyYXRlZ3kpOwotCQkJCQkvKiBmaXJzdCB2YWx1ZSBm cm9tIHRoZSBhcnJheSAqLwotCQkJCQltYXRjaGVzID0gRGF0dW1HZXRCb29sKEZ1bmN0aW9u Q2FsbDJDb2xsKGZpbmZvLCBjb2xsb2lkLCBtaW52YWwsIHZhbHVlKSk7Ci0JCQkJCWJyZWFr OworCQkJCVNjYW5LZXlBcnJheSAqYXJyYXkgPSAoU2NhbktleUFycmF5ICopIHZhbHVlOwog Ci0JCQkJY2FzZSBCVEVxdWFsU3RyYXRlZ3lOdW1iZXI6Ci0JCQkJCXsKLQkJCQkJCURhdHVt CQljb21wYXI7Ci0JCQkJCQlGbWdySW5mbyAgICpjbXBGbjsKKwkJCQkvKiBjYW4gaGFwcGVu IGlmIHRoZSBJTiBsaXN0IGNvbnRhaW5lZCBqdXN0IE5VTExzICovCisJCQkJaWYgKGFycmF5 LT5uZWxlbWVudHMgPT0gMCkKKwkJCQkJUEdfUkVUVVJOX0JPT0woZmFsc2UpOwogCi0JCQkJ CQkvKiBieSBkZWZhdWx0IHRoaXMgcmFuZ2UgZG9lcyBub3QgbWF0Y2ggKi8KLQkJCQkJCW1h dGNoZXMgPSBmYWxzZTsKKwkJCQlzd2l0Y2ggKGtleS0+c2tfc3RyYXRlZ3kpCisJCQkJewor CQkJCQljYXNlIEJUTGVzc1N0cmF0ZWd5TnVtYmVyOgorCQkJCQljYXNlIEJUTGVzc0VxdWFs U3RyYXRlZ3lOdW1iZXI6CisJCQkJCQlmaW5mbyA9IG1pbm1heF9tdWx0aV9nZXRfc3RyYXRl Z3lfcHJvY2luZm8oYmRlc2MsIGF0dG5vLCBzdWJ0eXBlLAorCQkJCQkJCQkJCQkJCQkJCSAg IGtleS0+c2tfc3RyYXRlZ3kpOworCQkJCQkJLyogZmlyc3QgdmFsdWUgZnJvbSB0aGUgYXJy YXkgKi8KKwkJCQkJCW1hdGNoZXMgPSBEYXR1bUdldEJvb2woRnVuY3Rpb25DYWxsMkNvbGwo ZmluZm8sIGNvbGxvaWQsIG1pbnZhbCwKKwkJCQkJCQkJCQkJCQkJCQkgYXJyYXktPmVsZW1l bnRzW2FycmF5LT5uZWxlbWVudHMtMV0pKTsKKwkJCQkJCWJyZWFrOworCisJCQkJCWNhc2Ug QlRFcXVhbFN0cmF0ZWd5TnVtYmVyOgogCiAJCQkJCQkvKgotCQkJCQkJICogT3RoZXJ3aXNl LCBuZWVkIHRvIGNvbXBhcmUgdGhlIG5ldyB2YWx1ZSB3aXRoCi0JCQkJCQkgKiBib3VuZGFy aWVzIG9mIGFsbCB0aGUgcmFuZ2VzLiBGaXJzdCBjaGVjayBpZiBpdCdzCi0JCQkJCQkgKiBs ZXNzIHRoYW4gdGhlIGFic29sdXRlIG1pbmltdW0sIHdoaWNoIGlzIHRoZSBmaXJzdAotCQkJ CQkJICogdmFsdWUgaW4gdGhlIGFycmF5LgorCQkJCQkJICogSW4gdGhlIGVxdWFsaXR5IGNh c2UgKFdIRVJFIGNvbCA9IHNvbWV2YWwpLCB3ZSB3YW50IHRvCisJCQkJCQkgKiByZXR1cm4g dGhlIGN1cnJlbnQgcGFnZSByYW5nZSBpZiB0aGUgbWluaW11bSB2YWx1ZSBpbgorCQkJCQkJ ICogdGhlIHJhbmdlIDw9IGtleSwgYW5kIHRoZSBtYXhpbXVtIHZhbHVlID49IGtleS4KKwkJ CQkJCSAqCisJCQkJCQkgKiBXZSBkbyB0aGlzIGluIHR3byBwaGFzZXMuIFdlIGNoZWNrIHRo ZSBhcnJheSBtaW4vbWF4CisJCQkJCQkgKiB2YWx1ZXMgdG8gc2VlIGlmIHRoZXJlIGV2ZW4g Y2FuIGJlIGEgbWF0Y2hpbmcgdmFsdWUsCisJCQkJCQkgKiBhbmQgaWYgeWVzIHdlIGRvIGEg YmluYXJ5IHNlYXJjaCB0byBmaW5kIHRoZSBmaXJzdAorCQkJCQkJICogdmFsdWUgdGhhdCBl eGNlZWRzIHJhbmdlIG1pbnZhbC4gQW5kIHRoZW4gd2UgY2hlY2sgaWYKKwkJCQkJCSAqIGl0 IGFjdHVhbGx5IG1hdGNoZXMgdGhlIHJhbmdlLgorCQkJCQkJICoKKwkJCQkJCSAqIFhYWCBU aGUgZmlyc3QgcGhhc2UgaXMgcHJvYmFibHkgdW5uZWNlc3NhcnksIGJlY2F1c2UKKwkJCQkJ CSAqIGxvd2VyX2JvdW5kKCkgZG9lcyBwcmV0dHkgbXVjaCBleGFjdGx5IHRoYXQgdG9vLgog CQkJCQkJICovCi0JCQkJCQljbXBGbiA9IG1pbm1heF9tdWx0aV9nZXRfc3RyYXRlZ3lfcHJv Y2luZm8oYmRlc2MsIGF0dG5vLCBzdWJ0eXBlLAotCQkJCQkJCQkJCQkJCQkJCSAgIEJUR3Jl YXRlclN0cmF0ZWd5TnVtYmVyKTsKLQkJCQkJCWNvbXBhciA9IEZ1bmN0aW9uQ2FsbDJDb2xs KGNtcEZuLCBjb2xsb2lkLCBtaW52YWwsIHZhbHVlKTsKKwkJCQkJCXsKKwkJCQkJCQlUeXBl Q2FjaGVFbnRyeSAqdHlwZTsKKwkJCQkJCQlTb3J0U3VwcG9ydERhdGEJc3N1cDsKKworCQkJ CQkJCURhdHVtIAkJZWxlbWVudDsKKwkJCQkJCQlpbnQJCQlsb3dlcjsKKworCQkJCQkJCS8q CisJCQkJCQkJICogQmVmb3JlIGRvaW5nIHRoZSBiaW5hcnkgc2VhcmNoIG9uIHNvcnRlZCBh cnJheSwgZG8KKwkJCQkJCQkgKiBhIHF1aWNrIHNlYXJjaCBpZiB0aGUgcmFuZ2UgY2FuIG1h dGNoIGF0IGFsbC4gSWYKKwkJCQkJCQkgKiB0aGUgd2hvbGUgYXJyYXkgaXMgb3V0c2lkZSB0 aGUgcGFnZSByYW5nZSwgd2UncmUKKwkJCQkJCQkgKiBkb25lLiBUaGlzIGlzIG11Y2ggY2hl YXBlciB0aGFuIHRoZSBiaW5zZWFyY2gsIGFuZAorCQkJCQkJCSAqIHdlIGFzc3VtZSBtb3N0 IHJhbmdlcyBkbyBub3QgbWF0Y2guCisJCQkJCQkJICovCisKKwkJCQkJCQkvKgorCQkJCQkJ CSAqIElzIHRoZSBmaXJzdCAoc21hbGxlc3QpIGFycmF5IGVsZW1lbnQgYWZ0ZXIgdGhlIEJS SU4KKwkJCQkJCQkgKiBwYWdlIHJhbmdlPworCQkJCQkJCSAqLworCQkJCQkJCWVsZW1lbnQg PSBhcnJheS0+ZWxlbWVudHNbMF07CisKKwkJCQkJCQlmaW5mbyA9IG1pbm1heF9tdWx0aV9n ZXRfc3RyYXRlZ3lfcHJvY2luZm8oYmRlc2MsIGF0dG5vLCBzdWJ0eXBlLAorCQkJCQkJCQkJ CQkJCQkJCQkgICBCVExlc3NFcXVhbFN0cmF0ZWd5TnVtYmVyKTsKKwkJCQkJCQltYXRjaGVz ID0gRGF0dW1HZXRCb29sKEZ1bmN0aW9uQ2FsbDJDb2xsKGZpbmZvLCBjb2xsb2lkLAorCQkJ CQkJCQkJCQkJCQkJCQkgZWxlbWVudCwgbWF4dmFsKSk7CisKKwkJCQkJCQkvKiBmaXJzdCBl bGVtZW50ID4gcmFuZ2UgbWF4dmFsdWUgKi8KKwkJCQkJCQlpZiAoIW1hdGNoZXMpCisJCQkJ CQkJCWJyZWFrOworCisJCQkJCQkJLyoKKwkJCQkJCQkgKiBJcyB0aGUgbGFzdCAobGFyZ2Vz dCkgYXJyYXkgZWxlbWVudCBiZWZvcmUgdGhlIEJSSU4KKwkJCQkJCQkgKiBwYWdlIHJhbmdl PworCQkJCQkJCSAqLworCQkJCQkJCWVsZW1lbnQgPSBhcnJheS0+ZWxlbWVudHNbYXJyYXkt Pm5lbGVtZW50cy0xXTsKKworCQkJCQkJCWZpbmZvID0gbWlubWF4X211bHRpX2dldF9zdHJh dGVneV9wcm9jaW5mbyhiZGVzYywgYXR0bm8sIHN1YnR5cGUsCisJCQkJCQkJCQkJCQkJCQkJ CSAgIEJUR3JlYXRlckVxdWFsU3RyYXRlZ3lOdW1iZXIpOworCQkJCQkJCW1hdGNoZXMgPSBE YXR1bUdldEJvb2woRnVuY3Rpb25DYWxsMkNvbGwoZmluZm8sIGNvbGxvaWQsCisJCQkJCQkJ CQkJCQkJCQkJCSBlbGVtZW50LCBtaW52YWwpKTsKKworCQkJCQkJCS8qIGxhc3QgZWxlbWVu dCA8IHJhbmdlIG1pbnZhbHVlICovCisJCQkJCQkJaWYgKCFtYXRjaGVzKQorCQkJCQkJCQli cmVhazsKKworCQkJCQkJCS8qCisJCQkJCQkJICogSXQgc2VlbXMgdGhlcmUgbWlnaHQgYmUg c29tZSBhcnJheSBlbGVtZW50cworCQkJCQkJCSAqIGNvbnNpc3RlbnQgd2l0aCB0aGUgcGFn ZSByYW5nZS4gV2UgZmluZCB0aGUgZmlyc3QKKwkJCQkJCQkgKiBlbGVtZW50IGFib3ZlIHRo ZSByYW5nZSBtaW52YWx1ZSBhbmQgY2hlY2sgaWYgaXQncworCQkJCQkJCSAqIHNtYWxsZXIg dGhhbiBtYXh2YWx1ZS4gSWYgeWVzLCB3ZSBoYXZlIGEgbWF0Y2guIElmCisJCQkJCQkJICog bm90LCBvdGhlciBlbGVtZW50cyBjYW4ndCBiZSBjb25zaXN0ZW50IGVpdGhlcgorCQkJCQkJ CSAqICh3aWxsIGV4Y2VlZCBtYXh2YWwgdG9vLCB0aGFua3MgdG8gc29ydCkuCisJCQkJCQkJ ICovCisJCQkJCQkJdHlwZSA9IGxvb2t1cF90eXBlX2NhY2hlKGFycmF5LT50eXBlaWQsIFRZ UEVDQUNIRV9MVF9PUFIpOworCisJCQkJCQkJbWVtc2V0KCZzc3VwLCAwLCBzaXplb2YoU29y dFN1cHBvcnREYXRhKSk7CisKKwkJCQkJCQlzc3VwLnNzdXBfY29sbGF0aW9uID0ga2V5LT5z a19jb2xsYXRpb247CisJCQkJCQkJc3N1cC5zc3VwX2N4dCA9IEN1cnJlbnRNZW1vcnlDb250 ZXh0OworCisJCQkJCQkJUHJlcGFyZVNvcnRTdXBwb3J0RnJvbU9yZGVyaW5nT3AodHlwZS0+ bHRfb3ByLCAmc3N1cCk7CisKKwkJCQkJCQlsb3dlciA9IG1pbm1heF9tdWx0aV9sb3dlcl9i b3VuZGFyeShhcnJheS0+ZWxlbWVudHMsIGFycmF5LT5uZWxlbWVudHMsCisJCQkJCQkJCQkJ CQkJCQkJbWludmFsLCAmc3N1cCk7CisKKwkJCQkJCQkvKgorCQkJCQkJCSAqIElmIHRoZSBs b3dlciBib3VuZGFyeSBpcyBuZWxlbWVudHMsIHRoZW4gbm8gYXJyYXkKKwkJCQkJCQkgKiBl bGVtZW50cyBjYW4gcG9zc2libHkgbWF0Y2ggdGhpcyBwYWdlIHJhbmdlLgorCQkJCQkJCSAq CisJCQkJCQkJICogWFhYIFRoaXMgaXMgcHJvYmFibHkgaW1wb3NzaWJsZSBkdWUgdG8gdGhl IGVhcmxpZXIKKwkJCQkJCQkgKiBjaGVjay4gVGhpcyB3b3VsZCBtZWFuIGFsbCBlbGVtZW50 cyBhcmUgPCBtaW52YWx1ZSwKKwkJCQkJCQkgKiBidXQgd2UgZGlkIGNoZWNrIGZvciB0aGF0 LgorCQkJCQkJCSAqLworCQkJCQkJCWlmIChsb3dlciA9PSBhcnJheS0+bmVsZW1lbnRzKQor CQkJCQkJCXsKKwkJCQkJCQkJbWF0Y2hlcyA9IGZhbHNlOworCQkJCQkJCQlicmVhazsKKwkJ CQkJCQl9CisKKwkJCQkJCQkvKgorCQkJCQkJCSAqIFdlIGhhdmUgYW4gZWxlbWVudCB0aGF0 IG1pZ2h0IGJlIGNvbnNpc3RlbnQgd2l0aAorCQkJCQkJCSAqIHRoZSBwYWdlIHJhbmdlLCBz byBsZXQncyBjaGVjayB0aGUgbWF4dmFsdWUgdG9vCisJCQkJCQkJICogKGlmIGl0IGV4Y2Vl ZHMgaXQsIG5vIGZvbGxvd2luZyBlbGVtZW50cyB3aWxsIHRvbykuCisJCQkJCQkJICovCisJ CQkJCQkJZWxlbWVudCA9IGFycmF5LT5lbGVtZW50c1tsb3dlcl07CisKKwkJCQkJCQkvKgor CQkJCQkJCSAqIEluIHRoZSBlcXVhbGl0eSBjYXNlIChXSEVSRSBjb2wgPSBzb21ldmFsKSwg d2UKKwkJCQkJCQkgKiB3YW50IHRvIHJldHVybiB0aGUgY3VycmVudCBwYWdlIHJhbmdlIGlm IHRoZQorCQkJCQkJCSAqIG1pbmltdW0gdmFsdWUgaW4gdGhlIHJhbmdlIDw9IHNjYW4ga2V5 LCBhbmQgdGhlCisJCQkJCQkJICogbWF4aW11bSB2YWx1ZSA+PSBzY2FuIGtleS4KKwkJCQkJ CQkgKgorCQkJCQkJCSAqIFhYWCBUaGlzIG1pbnZhbHVlIGNoZWNrIGlzIGxpa2VseSB1bm5l Y2Vzc2FyeSwKKwkJCQkJCQkgKiB0aGFua3MgdG8gdGhlIGxvd2VyIGJvdW5kYXJ5IGd1YXJh bnRlZWluZyB0aGlzIHRvCisJCQkJCQkJICogYmUgdHJ1ZS4KKwkJCQkJCQkgKi8KKwkJCQkJ CQlmaW5mbyA9IG1pbm1heF9tdWx0aV9nZXRfc3RyYXRlZ3lfcHJvY2luZm8oYmRlc2MsIGF0 dG5vLCBzdWJ0eXBlLAorCQkJCQkJCQkJCQkJCQkJCQkgICBCVExlc3NFcXVhbFN0cmF0ZWd5 TnVtYmVyKTsKKwkJCQkJCQltYXRjaGVzID0gRGF0dW1HZXRCb29sKEZ1bmN0aW9uQ2FsbDJD b2xsKGZpbmZvLCBjb2xsb2lkLAorCQkJCQkJCQkJCQkJCQkJCQkgbWludmFsLCBlbGVtZW50 KSk7CisJCQkJCQkJaWYgKCFtYXRjaGVzKQorCQkJCQkJCQlicmVhazsKKworCQkJCQkJCS8q IG1heHZhbHVlID49IGVsZW1lbnQgKi8KKwkJCQkJCQlmaW5mbyA9IG1pbm1heF9tdWx0aV9n ZXRfc3RyYXRlZ3lfcHJvY2luZm8oYmRlc2MsIGF0dG5vLCBzdWJ0eXBlLAorCQkJCQkJCQkJ CQkJCQkJCQkgICBCVEdyZWF0ZXJFcXVhbFN0cmF0ZWd5TnVtYmVyKTsKKwkJCQkJCQltYXRj aGVzID0gRGF0dW1HZXRCb29sKEZ1bmN0aW9uQ2FsbDJDb2xsKGZpbmZvLCBjb2xsb2lkLAor CQkJCQkJCQkJCQkJCQkJCQkgbWF4dmFsLCBlbGVtZW50KSk7CisJCQkJCQkJYnJlYWs7CisJ CQkJCQl9CisJCQkJCWNhc2UgQlRHcmVhdGVyRXF1YWxTdHJhdGVneU51bWJlcjoKKwkJCQkJ Y2FzZSBCVEdyZWF0ZXJTdHJhdGVneU51bWJlcjoKKwkJCQkJCWZpbmZvID0gbWlubWF4X211 bHRpX2dldF9zdHJhdGVneV9wcm9jaW5mbyhiZGVzYywgYXR0bm8sIHN1YnR5cGUsCisJCQkJ CQkJCQkJCQkJCQkJICAga2V5LT5za19zdHJhdGVneSk7CisJCQkJCQkvKiBsYXN0IHZhbHVl IGZyb20gdGhlIGFycmF5ICovCisJCQkJCQltYXRjaGVzID0gRGF0dW1HZXRCb29sKEZ1bmN0 aW9uQ2FsbDJDb2xsKGZpbmZvLCBjb2xsb2lkLCBtYXh2YWwsCisJCQkJCQkJCQkJCQkJCQkJ IGFycmF5LT5lbGVtZW50c1swXSkpOworCQkJCQkJYnJlYWs7CisKKwkJCQkJZGVmYXVsdDoK KwkJCQkJCS8qIHNob3VsZG4ndCBoYXBwZW4gKi8KKwkJCQkJCWVsb2coRVJST1IsICJpbnZh bGlkIHN0cmF0ZWd5IG51bWJlciAlZCIsIGtleS0+c2tfc3RyYXRlZ3kpOworCQkJCQkJbWF0 Y2hlcyA9IGZhbHNlOworCQkJCQkJYnJlYWs7CisJCQkJfQorCQkJfQorCQkJZWxzZSBpZiAo a2V5LT5za19mbGFncyAmIFNLX1NFQVJDSEFSUkFZKQkvKiBhcnJheSB3aXRob3V0IHByZXBy b2Nlc3NpbmcgKi8KKwkJCXsKKwkJCQlBcnJheVR5cGUgICphcnJheXZhbDsKKwkJCQlpbnQx NgkJZWxtbGVuOworCQkJCWJvb2wJCWVsbWJ5dmFsOworCQkJCWNoYXIJCWVsbWFsaWduOwor CQkJCWludAkJCW51bV9lbGVtczsKKwkJCQlEYXR1bQkgICAqZWxlbV92YWx1ZXM7CisJCQkJ Ym9vbAkgICAqZWxlbV9udWxsczsKKworCQkJCWFycmF5dmFsID0gRGF0dW1HZXRBcnJheVR5 cGVQKGtleS0+c2tfYXJndW1lbnQpOworCisJCQkJZ2V0X3R5cGxlbmJ5dmFsYWxpZ24oQVJS X0VMRU1UWVBFKGFycmF5dmFsKSwKKwkJCQkJCQkJCSAmZWxtbGVuLCAmZWxtYnl2YWwsICZl bG1hbGlnbik7CisKKwkJCQlkZWNvbnN0cnVjdF9hcnJheShhcnJheXZhbCwKKwkJCQkJCQkJ ICBBUlJfRUxFTVRZUEUoYXJyYXl2YWwpLAorCQkJCQkJCQkgIGVsbWxlbiwgZWxtYnl2YWws IGVsbWFsaWduLAorCQkJCQkJCQkgICZlbGVtX3ZhbHVlcywgJmVsZW1fbnVsbHMsICZudW1f ZWxlbXMpOworCisJCQkJLyogd2UnbGwgc2tpcCBOVUxMIGVsZW1lbnRzICovCisJCQkJZm9y IChpbnQgaSA9IDA7IGkgPCBudW1fZWxlbXM7IGkrKykKKwkJCQl7CisJCQkJCS8qIHNraXAg TlVMTCBlbGVtZW50cyAqLworCQkJCQlpZiAoZWxlbV9udWxsc1tpXSkKKwkJCQkJCWNvbnRp bnVlOwogCi0JCQkJCQkvKiBzbWFsbGVyIHRoYW4gdGhlIHNtYWxsZXN0IHZhbHVlIGluIHRo aXMgcmFuZ2UgKi8KLQkJCQkJCWlmIChEYXR1bUdldEJvb2woY29tcGFyKSkKKwkJCQkJc3dp dGNoIChrZXktPnNrX3N0cmF0ZWd5KQorCQkJCQl7CisJCQkJCQljYXNlIEJUTGVzc1N0cmF0 ZWd5TnVtYmVyOgorCQkJCQkJY2FzZSBCVExlc3NFcXVhbFN0cmF0ZWd5TnVtYmVyOgorCQkJ CQkJCWZpbmZvID0gbWlubWF4X211bHRpX2dldF9zdHJhdGVneV9wcm9jaW5mbyhiZGVzYywg YXR0bm8sIHN1YnR5cGUsCisJCQkJCQkJCQkJCQkJCQkJCSAgIGtleS0+c2tfc3RyYXRlZ3kp OworCQkJCQkJCS8qIGZpcnN0IHZhbHVlIGZyb20gdGhlIGFycmF5ICovCisJCQkJCQkJbWF0 Y2hlcyA9IERhdHVtR2V0Qm9vbChGdW5jdGlvbkNhbGwyQ29sbChmaW5mbywgY29sbG9pZCwg bWludmFsLAorCQkJCQkJCQkJCQkJCQkJCQkgZWxlbV92YWx1ZXNbaV0pKTsKIAkJCQkJCQli cmVhazsKIAotCQkJCQkJY21wRm4gPSBtaW5tYXhfbXVsdGlfZ2V0X3N0cmF0ZWd5X3Byb2Np bmZvKGJkZXNjLCBhdHRubywgc3VidHlwZSwKLQkJCQkJCQkJCQkJCQkJCQkgICBCVExlc3NT dHJhdGVneU51bWJlcik7Ci0JCQkJCQljb21wYXIgPSBGdW5jdGlvbkNhbGwyQ29sbChjbXBG biwgY29sbG9pZCwgbWF4dmFsLCB2YWx1ZSk7CisJCQkJCQljYXNlIEJURXF1YWxTdHJhdGVn eU51bWJlcjoKKwkJCQkJCQl7CisJCQkJCQkJCURhdHVtCQljb21wYXI7CisJCQkJCQkJCUZt Z3JJbmZvICAgKmNtcEZuOworCisJCQkJCQkJCS8qIGJ5IGRlZmF1bHQgdGhpcyByYW5nZSBk b2VzIG5vdCBtYXRjaCAqLworCQkJCQkJCQltYXRjaGVzID0gZmFsc2U7CisKKwkJCQkJCQkJ LyoKKwkJCQkJCQkJICogT3RoZXJ3aXNlLCBuZWVkIHRvIGNvbXBhcmUgdGhlIG5ldyB2YWx1 ZSB3aXRoCisJCQkJCQkJCSAqIGJvdW5kYXJpZXMgb2YgYWxsIHRoZSByYW5nZXMuIEZpcnN0 IGNoZWNrIGlmIGl0J3MKKwkJCQkJCQkJICogbGVzcyB0aGFuIHRoZSBhYnNvbHV0ZSBtaW5p bXVtLCB3aGljaCBpcyB0aGUgZmlyc3QKKwkJCQkJCQkJICogdmFsdWUgaW4gdGhlIGFycmF5 LgorCQkJCQkJCQkgKi8KKwkJCQkJCQkJY21wRm4gPSBtaW5tYXhfbXVsdGlfZ2V0X3N0cmF0 ZWd5X3Byb2NpbmZvKGJkZXNjLCBhdHRubywgc3VidHlwZSwKKwkJCQkJCQkJCQkJCQkJCQkJ CSAgIEJUR3JlYXRlclN0cmF0ZWd5TnVtYmVyKTsKKwkJCQkJCQkJY29tcGFyID0gRnVuY3Rp b25DYWxsMkNvbGwoY21wRm4sIGNvbGxvaWQsIG1pbnZhbCwKKwkJCQkJCQkJCQkJCQkJICAg ZWxlbV92YWx1ZXNbaV0pOworCisJCQkJCQkJCS8qIHNtYWxsZXIgdGhhbiB0aGUgc21hbGxl c3QgdmFsdWUgaW4gdGhpcyByYW5nZSAqLworCQkJCQkJCQlpZiAoRGF0dW1HZXRCb29sKGNv bXBhcikpCisJCQkJCQkJCQlicmVhazsKKworCQkJCQkJCQljbXBGbiA9IG1pbm1heF9tdWx0 aV9nZXRfc3RyYXRlZ3lfcHJvY2luZm8oYmRlc2MsIGF0dG5vLCBzdWJ0eXBlLAorCQkJCQkJ CQkJCQkJCQkJCQkJICAgQlRMZXNzU3RyYXRlZ3lOdW1iZXIpOworCQkJCQkJCQljb21wYXIg PSBGdW5jdGlvbkNhbGwyQ29sbChjbXBGbiwgY29sbG9pZCwgbWF4dmFsLAorCQkJCQkJCQkJ CQkJCQkgICBlbGVtX3ZhbHVlc1tpXSk7CisKKwkJCQkJCQkJLyogbGFyZ2VyIHRoYW4gdGhl IGxhcmdlc3QgdmFsdWUgaW4gdGhpcyByYW5nZSAqLworCQkJCQkJCQlpZiAoRGF0dW1HZXRC b29sKGNvbXBhcikpCisJCQkJCQkJCQlicmVhazsKKworCQkJCQkJCQkvKgorCQkJCQkJCQkg KiBXZSBoYXZlbid0IG1hbmFnZWQgdG8gZWxpbWluYXRlIHRoaXMgcmFuZ2UsIHNvCisJCQkJ CQkJCSAqIGNvbnNpZGVyIGl0IG1hdGNoaW5nLgorCQkJCQkJCQkgKi8KKwkJCQkJCQkJbWF0 Y2hlcyA9IHRydWU7CisKKwkJCQkJCQkJYnJlYWs7CisJCQkJCQkJfQorCQkJCQkJY2FzZSBC VEdyZWF0ZXJFcXVhbFN0cmF0ZWd5TnVtYmVyOgorCQkJCQkJY2FzZSBCVEdyZWF0ZXJTdHJh dGVneU51bWJlcjoKKwkJCQkJCQlmaW5mbyA9IG1pbm1heF9tdWx0aV9nZXRfc3RyYXRlZ3lf cHJvY2luZm8oYmRlc2MsIGF0dG5vLCBzdWJ0eXBlLAorCQkJCQkJCQkJCQkJCQkJCQkgICBr ZXktPnNrX3N0cmF0ZWd5KTsKKwkJCQkJCQkvKiBsYXN0IHZhbHVlIGZyb20gdGhlIGFycmF5 ICovCisJCQkJCQkJbWF0Y2hlcyA9IERhdHVtR2V0Qm9vbChGdW5jdGlvbkNhbGwyQ29sbChm aW5mbywgY29sbG9pZCwgbWF4dmFsLAorCQkJCQkJCQkJCQkJCQkJCQkgZWxlbV92YWx1ZXNb aV0pKTsKKwkJCQkJCQlicmVhazsKIAotCQkJCQkJLyogbGFyZ2VyIHRoYW4gdGhlIGxhcmdl c3QgdmFsdWUgaW4gdGhpcyByYW5nZSAqLwotCQkJCQkJaWYgKERhdHVtR2V0Qm9vbChjb21w YXIpKQorCQkJCQkJZGVmYXVsdDoKKwkJCQkJCQkvKiBzaG91bGRuJ3QgaGFwcGVuICovCisJ CQkJCQkJZWxvZyhFUlJPUiwgImludmFsaWQgc3RyYXRlZ3kgbnVtYmVyICVkIiwga2V5LT5z a19zdHJhdGVneSk7CisJCQkJCQkJbWF0Y2hlcyA9IGZhbHNlOwogCQkJCQkJCWJyZWFrOwor CQkJCQl9CiAKLQkJCQkJCS8qCi0JCQkJCQkgKiBXZSBoYXZlbid0IG1hbmFnZWQgdG8gZWxp bWluYXRlIHRoaXMgcmFuZ2UsIHNvCi0JCQkJCQkgKiBjb25zaWRlciBpdCBtYXRjaGluZy4K LQkJCQkJCSAqLwotCQkJCQkJbWF0Y2hlcyA9IHRydWU7CisJCQkJCS8qIGZvdW5kIGEgY29u c2lzdGVudCB2YWx1ZSwgd2UncmUgZG9uZSAqLworCQkJCQlpZiAoRGF0dW1HZXRCb29sKG1h dGNoZXMpKQorCQkJCQkJYnJlYWs7CisJCQkJfQogCisJCQkJLyoKKwkJCQkgKiBmcmVlIHRo ZSBhcnJheXMKKwkJCQkgKgorCQkJCSAqIFhYWCBpcyB0aGlzIG5lY2Vzc2FyeT8KKwkJCQkg Ki8KKwkJCQlwZnJlZShlbGVtX3ZhbHVlcyk7CisJCQkJcGZyZWUoZWxlbV9udWxscyk7CisJ CQl9CisJCQllbHNlCQkJCQkJCQkJCS8qIHNjYWxhciBzY2FuIGtleSAqLworCQkJeworCQkJ CXN3aXRjaCAoa2V5LT5za19zdHJhdGVneSkKKwkJCQl7CisJCQkJCWNhc2UgQlRMZXNzU3Ry YXRlZ3lOdW1iZXI6CisJCQkJCWNhc2UgQlRMZXNzRXF1YWxTdHJhdGVneU51bWJlcjoKKwkJ CQkJCWZpbmZvID0gbWlubWF4X211bHRpX2dldF9zdHJhdGVneV9wcm9jaW5mbyhiZGVzYywg YXR0bm8sIHN1YnR5cGUsCisJCQkJCQkJCQkJCQkJCQkJICAga2V5LT5za19zdHJhdGVneSk7 CisJCQkJCQkvKiBmaXJzdCB2YWx1ZSBmcm9tIHRoZSBhcnJheSAqLworCQkJCQkJbWF0Y2hl cyA9IERhdHVtR2V0Qm9vbChGdW5jdGlvbkNhbGwyQ29sbChmaW5mbywgY29sbG9pZCwgbWlu dmFsLCB2YWx1ZSkpOwogCQkJCQkJYnJlYWs7Ci0JCQkJCX0KLQkJCQljYXNlIEJUR3JlYXRl ckVxdWFsU3RyYXRlZ3lOdW1iZXI6Ci0JCQkJY2FzZSBCVEdyZWF0ZXJTdHJhdGVneU51bWJl cjoKLQkJCQkJZmluZm8gPSBtaW5tYXhfbXVsdGlfZ2V0X3N0cmF0ZWd5X3Byb2NpbmZvKGJk ZXNjLCBhdHRubywgc3VidHlwZSwKLQkJCQkJCQkJCQkJCQkJCSAgIGtleS0+c2tfc3RyYXRl Z3kpOwotCQkJCQkvKiBsYXN0IHZhbHVlIGZyb20gdGhlIGFycmF5ICovCi0JCQkJCW1hdGNo ZXMgPSBEYXR1bUdldEJvb2woRnVuY3Rpb25DYWxsMkNvbGwoZmluZm8sIGNvbGxvaWQsIG1h eHZhbCwgdmFsdWUpKTsKLQkJCQkJYnJlYWs7CiAKLQkJCQlkZWZhdWx0OgotCQkJCQkvKiBz aG91bGRuJ3QgaGFwcGVuICovCi0JCQkJCWVsb2coRVJST1IsICJpbnZhbGlkIHN0cmF0ZWd5 IG51bWJlciAlZCIsIGtleS0+c2tfc3RyYXRlZ3kpOwotCQkJCQltYXRjaGVzID0gZmFsc2U7 Ci0JCQkJCWJyZWFrOworCQkJCQljYXNlIEJURXF1YWxTdHJhdGVneU51bWJlcjoKKwkJCQkJ CXsKKwkJCQkJCQlEYXR1bQkJY29tcGFyOworCQkJCQkJCUZtZ3JJbmZvICAgKmNtcEZuOwor CisJCQkJCQkJLyogYnkgZGVmYXVsdCB0aGlzIHJhbmdlIGRvZXMgbm90IG1hdGNoICovCisJ CQkJCQkJbWF0Y2hlcyA9IGZhbHNlOworCisJCQkJCQkJLyoKKwkJCQkJCQkgKiBPdGhlcndp c2UsIG5lZWQgdG8gY29tcGFyZSB0aGUgbmV3IHZhbHVlIHdpdGgKKwkJCQkJCQkgKiBib3Vu ZGFyaWVzIG9mIGFsbCB0aGUgcmFuZ2VzLiBGaXJzdCBjaGVjayBpZiBpdCdzCisJCQkJCQkJ ICogbGVzcyB0aGFuIHRoZSBhYnNvbHV0ZSBtaW5pbXVtLCB3aGljaCBpcyB0aGUgZmlyc3QK KwkJCQkJCQkgKiB2YWx1ZSBpbiB0aGUgYXJyYXkuCisJCQkJCQkJICovCisJCQkJCQkJY21w Rm4gPSBtaW5tYXhfbXVsdGlfZ2V0X3N0cmF0ZWd5X3Byb2NpbmZvKGJkZXNjLCBhdHRubywg c3VidHlwZSwKKwkJCQkJCQkJCQkJCQkJCQkJICAgQlRHcmVhdGVyU3RyYXRlZ3lOdW1iZXIp OworCQkJCQkJCWNvbXBhciA9IEZ1bmN0aW9uQ2FsbDJDb2xsKGNtcEZuLCBjb2xsb2lkLCBt aW52YWwsIHZhbHVlKTsKKworCQkJCQkJCS8qIHNtYWxsZXIgdGhhbiB0aGUgc21hbGxlc3Qg dmFsdWUgaW4gdGhpcyByYW5nZSAqLworCQkJCQkJCWlmIChEYXR1bUdldEJvb2woY29tcGFy KSkKKwkJCQkJCQkJYnJlYWs7CisKKwkJCQkJCQljbXBGbiA9IG1pbm1heF9tdWx0aV9nZXRf c3RyYXRlZ3lfcHJvY2luZm8oYmRlc2MsIGF0dG5vLCBzdWJ0eXBlLAorCQkJCQkJCQkJCQkJ CQkJCQkgICBCVExlc3NTdHJhdGVneU51bWJlcik7CisJCQkJCQkJY29tcGFyID0gRnVuY3Rp b25DYWxsMkNvbGwoY21wRm4sIGNvbGxvaWQsIG1heHZhbCwgdmFsdWUpOworCisJCQkJCQkJ LyogbGFyZ2VyIHRoYW4gdGhlIGxhcmdlc3QgdmFsdWUgaW4gdGhpcyByYW5nZSAqLworCQkJ CQkJCWlmIChEYXR1bUdldEJvb2woY29tcGFyKSkKKwkJCQkJCQkJYnJlYWs7CisKKwkJCQkJ CQkvKgorCQkJCQkJCSAqIFdlIGhhdmVuJ3QgbWFuYWdlZCB0byBlbGltaW5hdGUgdGhpcyBy YW5nZSwgc28KKwkJCQkJCQkgKiBjb25zaWRlciBpdCBtYXRjaGluZy4KKwkJCQkJCQkgKi8K KwkJCQkJCQltYXRjaGVzID0gdHJ1ZTsKKworCQkJCQkJCWJyZWFrOworCQkJCQkJfQorCQkJ CQljYXNlIEJUR3JlYXRlckVxdWFsU3RyYXRlZ3lOdW1iZXI6CisJCQkJCWNhc2UgQlRHcmVh dGVyU3RyYXRlZ3lOdW1iZXI6CisJCQkJCQlmaW5mbyA9IG1pbm1heF9tdWx0aV9nZXRfc3Ry YXRlZ3lfcHJvY2luZm8oYmRlc2MsIGF0dG5vLCBzdWJ0eXBlLAorCQkJCQkJCQkJCQkJCQkJ CSAgIGtleS0+c2tfc3RyYXRlZ3kpOworCQkJCQkJLyogbGFzdCB2YWx1ZSBmcm9tIHRoZSBh cnJheSAqLworCQkJCQkJbWF0Y2hlcyA9IERhdHVtR2V0Qm9vbChGdW5jdGlvbkNhbGwyQ29s bChmaW5mbywgY29sbG9pZCwgbWF4dmFsLCB2YWx1ZSkpOworCQkJCQkJYnJlYWs7CisKKwkJ CQkJZGVmYXVsdDoKKwkJCQkJCS8qIHNob3VsZG4ndCBoYXBwZW4gKi8KKwkJCQkJCWVsb2co RVJST1IsICJpbnZhbGlkIHN0cmF0ZWd5IG51bWJlciAlZCIsIGtleS0+c2tfc3RyYXRlZ3kp OworCQkJCQkJbWF0Y2hlcyA9IGZhbHNlOworCQkJCQkJYnJlYWs7CisJCQkJfQogCQkJfQog CiAJCQkvKiB0aGUgcmFuZ2UgaGFzIHRvIG1hdGNoIGFsbCB0aGUgc2NhbiBrZXlzICovCkBA IC0yNzAwLDcgKzMxODksNyBAQCBicmluX21pbm1heF9tdWx0aV9jb25zaXN0ZW50KFBHX0ZV TkNUSU9OX0FSR1MpCiAJICogaGVyZSwgYmVjYXVzZSB3ZSdyZSBkZWFsaW5nIHdpdGggc2Vy aWFsaXplZCAvIGZ1bGx5IGNvbXBhY3RlZCByYW5nZXMsCiAJICogc28gdGhlcmUgc2hvdWxk IGJlIG9ubHkgdmVyeSBmZXcgdmFsdWVzLgogCSAqLwotCWZvciAoaSA9IDA7IGkgPCByYW5n ZXMtPm52YWx1ZXM7IGkrKykKKwlmb3IgKGludCBpID0gMDsgaSA8IHJhbmdlcy0+bnZhbHVl czsgaSsrKQogCXsKIAkJRGF0dW0JCXZhbCA9IHJhbmdlcy0+dmFsdWVzWzIgKiByYW5nZXMt Pm5yYW5nZXMgKyBpXTsKIApAQCAtMjcxOSwyNCArMzIwOCwxNzcgQEAgYnJpbl9taW5tYXhf bXVsdGlfY29uc2lzdGVudChQR19GVU5DVElPTl9BUkdTKQogCQkJYXR0bm8gPSBrZXktPnNr X2F0dG5vOwogCQkJc3VidHlwZSA9IGtleS0+c2tfc3VidHlwZTsKIAkJCXZhbHVlID0ga2V5 LT5za19hcmd1bWVudDsKLQkJCXN3aXRjaCAoa2V5LT5za19zdHJhdGVneSkKKworCQkJaWYg KGtleS0+c2tfZmxhZ3MgJiBTS19CUklOX1NPUlRFRCkJCQkvKiBwcmVwcm9jZXNzZWQgYXJy YXkqLwogCQkJewotCQkJCWNhc2UgQlRMZXNzU3RyYXRlZ3lOdW1iZXI6Ci0JCQkJY2FzZSBC VExlc3NFcXVhbFN0cmF0ZWd5TnVtYmVyOgotCQkJCWNhc2UgQlRFcXVhbFN0cmF0ZWd5TnVt YmVyOgotCQkJCWNhc2UgQlRHcmVhdGVyRXF1YWxTdHJhdGVneU51bWJlcjoKLQkJCQljYXNl IEJUR3JlYXRlclN0cmF0ZWd5TnVtYmVyOgotCi0JCQkJCWZpbmZvID0gbWlubWF4X211bHRp X2dldF9zdHJhdGVneV9wcm9jaW5mbyhiZGVzYywgYXR0bm8sIHN1YnR5cGUsCi0JCQkJCQkJ CQkJCQkJCQkgICBrZXktPnNrX3N0cmF0ZWd5KTsKLQkJCQkJbWF0Y2hlcyA9IERhdHVtR2V0 Qm9vbChGdW5jdGlvbkNhbGwyQ29sbChmaW5mbywgY29sbG9pZCwgdmFsLCB2YWx1ZSkpOwot CQkJCQlicmVhazsKKwkJCQlTY2FuS2V5QXJyYXkgKmFycmF5ID0gKFNjYW5LZXlBcnJheSAq KSB2YWx1ZTsKIAotCQkJCWRlZmF1bHQ6Ci0JCQkJCS8qIHNob3VsZG4ndCBoYXBwZW4gKi8K LQkJCQkJZWxvZyhFUlJPUiwgImludmFsaWQgc3RyYXRlZ3kgbnVtYmVyICVkIiwga2V5LT5z a19zdHJhdGVneSk7Ci0JCQkJCW1hdGNoZXMgPSBmYWxzZTsKLQkJCQkJYnJlYWs7CisJCQkJ LyogY2FuIGhhcHBlbiBpZiB0aGUgSU4gbGlzdCBjb250YWluZWQganVzdCBOVUxMcyAqLwor CQkJCWlmIChhcnJheS0+bmVsZW1lbnRzID09IDApCisJCQkJCVBHX1JFVFVSTl9CT09MKGZh bHNlKTsKKworCQkJCS8qCisJCQkJICogWFhYIFdlIHNob3VsZCBiZSBhYmxlIHRvIGJlIHNt YXJ0ZXIgZm9yIHRoZSBzY2FsYXIgdmFsdWVzLCBhcworCQkJCSAqIHdlIGtlZXAgdGhlbSBz b3J0ZWQgdG9vLiBTbyB3ZSBzaG91bGQgYmUgYWJsZSB0byBxdWlja2x5IGNoZWNrCisJCQkJ ICogaWYgYW55IG9mIHRoZSB2YWx1ZXMgY2FuIG1hdGNoIHRoZSBzb3J0ZWQga2V5IHZhbHVl cy4KKwkJCQkgKi8KKwkJCQlzd2l0Y2ggKGtleS0+c2tfc3RyYXRlZ3kpCisJCQkJeworCQkJ CQljYXNlIEJUTGVzc1N0cmF0ZWd5TnVtYmVyOgorCQkJCQljYXNlIEJUTGVzc0VxdWFsU3Ry YXRlZ3lOdW1iZXI6CisJCQkJCQlmaW5mbyA9IG1pbm1heF9tdWx0aV9nZXRfc3RyYXRlZ3lf cHJvY2luZm8oYmRlc2MsIGF0dG5vLCBzdWJ0eXBlLAorCQkJCQkJCQkJCQkJCQkJCSAgIGtl eS0+c2tfc3RyYXRlZ3kpOworCQkJCQkJLyogZmlyc3QgdmFsdWUgZnJvbSB0aGUgYXJyYXkg Ki8KKwkJCQkJCW1hdGNoZXMgPSBEYXR1bUdldEJvb2woRnVuY3Rpb25DYWxsMkNvbGwoZmlu Zm8sIGNvbGxvaWQsIHZhbCwKKwkJCQkJCQkJCQkJCQkJCQkgYXJyYXktPmVsZW1lbnRzW2Fy cmF5LT5uZWxlbWVudHMtMV0pKTsKKwkJCQkJCWJyZWFrOworCisJCQkJCWNhc2UgQlRFcXVh bFN0cmF0ZWd5TnVtYmVyOgorCisJCQkJCQkvKgorCQkJCQkJICogU2VlIGJyaW5fbWlubWF4 LmMgZm9yIGRlc2NyaXB0aW9uIG9mIHdoYXQgdGhpcyBpcyBkb2luZy4KKwkJCQkJCSAqLwor CQkJCQkJeworCQkJCQkJCVNvcnRTdXBwb3J0RGF0YSBzc3VwOworCQkJCQkJCWludAkJCWxv d2VyOworCQkJCQkJCVR5cGVDYWNoZUVudHJ5ICp0eXBlOworCisJCQkJCQkJLyoKKwkJCQkJ CQkgKiBPSywgdGhlcmUgbWlnaHQgYmUgc29tZSB2YWx1ZXMgbWF0Y2hpbmcgdGhlIHJhbmdl LiBXZSBoYXZlCisJCQkJCQkJICogdG8gc2VhcmNoIHRoZW0gb25lIGJ5IG9uZSwgb3IgcGVy aGFwcyB0cnkgYmluc2VhcmNoLgorCQkJCQkJCSAqLworCQkJCQkJCXR5cGUgPSBsb29rdXBf dHlwZV9jYWNoZShhcnJheS0+dHlwZWlkLCBUWVBFQ0FDSEVfTFRfT1BSKTsKKworCQkJCQkJ CW1lbXNldCgmc3N1cCwgMCwgc2l6ZW9mKFNvcnRTdXBwb3J0RGF0YSkpOworCisJCQkJCQkJ c3N1cC5zc3VwX2NvbGxhdGlvbiA9IGtleS0+c2tfY29sbGF0aW9uOworCQkJCQkJCXNzdXAu c3N1cF9jeHQgPSBDdXJyZW50TWVtb3J5Q29udGV4dDsKKworCQkJCQkJCVByZXBhcmVTb3J0 U3VwcG9ydEZyb21PcmRlcmluZ09wKHR5cGUtPmx0X29wciwgJnNzdXApOworCisJCQkJCQkJ bG93ZXIgPSBtaW5tYXhfbXVsdGlfbG93ZXJfYm91bmRhcnkoYXJyYXktPmVsZW1lbnRzLCBh cnJheS0+bmVsZW1lbnRzLAorCQkJCQkJCQkJCQkJCQkJCXZhbCwgJnNzdXApOworCisJCQkJ CQkJLyogbm8gZWxlbWVudHMgY2FuIHBvc3NpYmx5IG1hdGNoICovCisJCQkJCQkJaWYgKGxv d2VyID09IGFycmF5LT5uZWxlbWVudHMpCisJCQkJCQkJeworCQkJCQkJCQltYXRjaGVzID0g ZmFsc2U7CisJCQkJCQkJCWJyZWFrOworCQkJCQkJCX0KKworCQkJCQkJCS8qCisJCQkJCQkJ ICogT0ssIGNoZWNrIHRoZSBmaXJzdCBlbGVtZW50IG11c3QgbWF0Y2ggdGhlIHVwcGVyIGJv dW5kYXJ5IHRvbworCQkJCQkJCSAqIChpZiBpdCBkb2VzIG5vdCwgbm8gZm9sbG93aW5nIGVs ZW1lbnRzIGNhbikuCisJCQkJCQkJICoKKwkJCQkJCQkgKiBJbiB0aGUgZXF1YWxpdHkgY2Fz ZSAoV0hFUkUgY29sID0gc29tZXZhbCksIHdlIHdhbnQgdG8gcmV0dXJuCisJCQkJCQkJICog dGhlIGN1cnJlbnQgcGFnZSByYW5nZSBpZiB0aGUgbWluaW11bSB2YWx1ZSBpbiB0aGUgcmFu Z2UgPD0KKwkJCQkJCQkgKiBzY2FuIGtleSwgYW5kIHRoZSBtYXhpbXVtIHZhbHVlID49IHNj YW4ga2V5LgorCQkJCQkJCSAqLworCQkJCQkJCWZpbmZvID0gbWlubWF4X211bHRpX2dldF9z dHJhdGVneV9wcm9jaW5mbyhiZGVzYywgYXR0bm8sIHN1YnR5cGUsCisJCQkJCQkJCQkJCQkJ CQkJCSAgIEJURXF1YWxTdHJhdGVneU51bWJlcik7CisJCQkJCQkJbWF0Y2hlcyA9IERhdHVt R2V0Qm9vbChGdW5jdGlvbkNhbGwyQ29sbChmaW5mbywgY29sbG9pZCwgdmFsLAorCQkJCQkJ CQkJCQkJCQkJCQkgYXJyYXktPmVsZW1lbnRzW2xvd2VyXSkpOworCQkJCQkJCWJyZWFrOwor CQkJCQkJfQorCQkJCQljYXNlIEJUR3JlYXRlckVxdWFsU3RyYXRlZ3lOdW1iZXI6CisJCQkJ CWNhc2UgQlRHcmVhdGVyU3RyYXRlZ3lOdW1iZXI6CisJCQkJCQlmaW5mbyA9IG1pbm1heF9t dWx0aV9nZXRfc3RyYXRlZ3lfcHJvY2luZm8oYmRlc2MsIGF0dG5vLCBzdWJ0eXBlLAorCQkJ CQkJCQkJCQkJCQkJCSAgIGtleS0+c2tfc3RyYXRlZ3kpOworCQkJCQkJLyogbGFzdCB2YWx1 ZSBmcm9tIHRoZSBhcnJheSAqLworCQkJCQkJbWF0Y2hlcyA9IERhdHVtR2V0Qm9vbChGdW5j dGlvbkNhbGwyQ29sbChmaW5mbywgY29sbG9pZCwgdmFsLAorCQkJCQkJCQkJCQkJCQkJCSBh cnJheS0+ZWxlbWVudHNbMF0pKTsKKwkJCQkJCWJyZWFrOworCisJCQkJCWRlZmF1bHQ6CisJ CQkJCQkvKiBzaG91bGRuJ3QgaGFwcGVuICovCisJCQkJCQllbG9nKEVSUk9SLCAiaW52YWxp ZCBzdHJhdGVneSBudW1iZXIgJWQiLCBrZXktPnNrX3N0cmF0ZWd5KTsKKwkJCQkJCW1hdGNo ZXMgPSBmYWxzZTsKKwkJCQkJCWJyZWFrOworCQkJCX0KKwkJCX0KKwkJCWVsc2UgaWYgKGtl eS0+c2tfZmxhZ3MgJiBTS19TRUFSQ0hBUlJBWSkJLyogYXJyYXkgd2l0aG91dCBwcmVwcm9j ZXNzaW5nICovCisJCQl7CisJCQkJQXJyYXlUeXBlICAqYXJyYXl2YWw7CisJCQkJaW50MTYJ CWVsbWxlbjsKKwkJCQlib29sCQllbG1ieXZhbDsKKwkJCQljaGFyCQllbG1hbGlnbjsKKwkJ CQlpbnQJCQludW1fZWxlbXM7CisJCQkJRGF0dW0JICAgKmVsZW1fdmFsdWVzOworCQkJCWJv b2wJICAgKmVsZW1fbnVsbHM7CisKKwkJCQlhcnJheXZhbCA9IERhdHVtR2V0QXJyYXlUeXBl UChrZXktPnNrX2FyZ3VtZW50KTsKKworCQkJCWdldF90eXBsZW5ieXZhbGFsaWduKEFSUl9F TEVNVFlQRShhcnJheXZhbCksCisJCQkJCQkJCQkgJmVsbWxlbiwgJmVsbWJ5dmFsLCAmZWxt YWxpZ24pOworCisJCQkJZGVjb25zdHJ1Y3RfYXJyYXkoYXJyYXl2YWwsCisJCQkJCQkJCSAg QVJSX0VMRU1UWVBFKGFycmF5dmFsKSwKKwkJCQkJCQkJICBlbG1sZW4sIGVsbWJ5dmFsLCBl bG1hbGlnbiwKKwkJCQkJCQkJICAmZWxlbV92YWx1ZXMsICZlbGVtX251bGxzLCAmbnVtX2Vs ZW1zKTsKKworCQkJCS8qIHdlJ2xsIHNraXAgTlVMTCBlbGVtZW50cyAqLworCQkJCWZvciAo aW50IGogPSAwOyBqIDwgbnVtX2VsZW1zOyBqKyspCisJCQkJeworCQkJCQkvKiBza2lwIE5V TEwgZWxlbWVudHMgKi8KKwkJCQkJaWYgKGVsZW1fbnVsbHNbal0pCisJCQkJCQljb250aW51 ZTsKKworCQkJCQlzd2l0Y2ggKGtleS0+c2tfc3RyYXRlZ3kpCisJCQkJCXsKKwkJCQkJCWNh c2UgQlRMZXNzU3RyYXRlZ3lOdW1iZXI6CisJCQkJCQljYXNlIEJUTGVzc0VxdWFsU3RyYXRl Z3lOdW1iZXI6CisJCQkJCQljYXNlIEJURXF1YWxTdHJhdGVneU51bWJlcjoKKwkJCQkJCWNh c2UgQlRHcmVhdGVyRXF1YWxTdHJhdGVneU51bWJlcjoKKwkJCQkJCWNhc2UgQlRHcmVhdGVy U3RyYXRlZ3lOdW1iZXI6CisKKwkJCQkJCQlmaW5mbyA9IG1pbm1heF9tdWx0aV9nZXRfc3Ry YXRlZ3lfcHJvY2luZm8oYmRlc2MsIGF0dG5vLCBzdWJ0eXBlLAorCQkJCQkJCQkJCQkJCQkJ CQkgICBrZXktPnNrX3N0cmF0ZWd5KTsKKwkJCQkJCQltYXRjaGVzID0gRGF0dW1HZXRCb29s KEZ1bmN0aW9uQ2FsbDJDb2xsKGZpbmZvLCBjb2xsb2lkLAorCQkJCQkJCQkJCQkJCQkJCQkg dmFsLCBlbGVtX3ZhbHVlc1tqXSkpOworCisJCQkJCQkJYnJlYWs7CisKKwkJCQkJCWRlZmF1 bHQ6CisJCQkJCQkJLyogc2hvdWxkbid0IGhhcHBlbiAqLworCQkJCQkJCWVsb2coRVJST1Is ICJpbnZhbGlkIHN0cmF0ZWd5IG51bWJlciAlZCIsIGtleS0+c2tfc3RyYXRlZ3kpOworCQkJ CQkJCW1hdGNoZXMgPSBmYWxzZTsKKwkJCQkJCQlicmVhazsKKwkJCQkJfQorCisJCQkJCS8q IGZvdW5kIGEgY29uc2lzdGVudCB2YWx1ZSwgd2UncmUgZG9uZSAqLworCQkJCQlpZiAoRGF0 dW1HZXRCb29sKG1hdGNoZXMpKQorCQkJCQkJYnJlYWs7CisJCQkJfQorCisJCQkJLyoKKwkJ CQkgKiBmcmVlIHRoZSBhcnJheXMKKwkJCQkgKgorCQkJCSAqIFhYWCBpcyB0aGlzIG5lY2Vz c2FyeT8KKwkJCQkgKi8KKwkJCQlwZnJlZShlbGVtX3ZhbHVlcyk7CisJCQkJcGZyZWUoZWxl bV9udWxscyk7CisJCQl9CisJCQllbHNlCisJCQl7CisJCQkJc3dpdGNoIChrZXktPnNrX3N0 cmF0ZWd5KQorCQkJCXsKKwkJCQkJY2FzZSBCVExlc3NTdHJhdGVneU51bWJlcjoKKwkJCQkJ Y2FzZSBCVExlc3NFcXVhbFN0cmF0ZWd5TnVtYmVyOgorCQkJCQljYXNlIEJURXF1YWxTdHJh dGVneU51bWJlcjoKKwkJCQkJY2FzZSBCVEdyZWF0ZXJFcXVhbFN0cmF0ZWd5TnVtYmVyOgor CQkJCQljYXNlIEJUR3JlYXRlclN0cmF0ZWd5TnVtYmVyOgorCisJCQkJCQlmaW5mbyA9IG1p bm1heF9tdWx0aV9nZXRfc3RyYXRlZ3lfcHJvY2luZm8oYmRlc2MsIGF0dG5vLCBzdWJ0eXBl LAorCQkJCQkJCQkJCQkJCQkJCSAgIGtleS0+c2tfc3RyYXRlZ3kpOworCQkJCQkJbWF0Y2hl cyA9IERhdHVtR2V0Qm9vbChGdW5jdGlvbkNhbGwyQ29sbChmaW5mbywgY29sbG9pZCwgdmFs LCB2YWx1ZSkpOworCQkJCQkJYnJlYWs7CisKKwkJCQkJZGVmYXVsdDoKKwkJCQkJCS8qIHNo b3VsZG4ndCBoYXBwZW4gKi8KKwkJCQkJCWVsb2coRVJST1IsICJpbnZhbGlkIHN0cmF0ZWd5 IG51bWJlciAlZCIsIGtleS0+c2tfc3RyYXRlZ3kpOworCQkJCQkJbWF0Y2hlcyA9IGZhbHNl OworCQkJCQkJYnJlYWs7CisJCQkJfQogCQkJfQogCiAJCQkvKiB0aGUgcmFuZ2UgaGFzIHRv IG1hdGNoIGFsbCB0aGUgc2NhbiBrZXlzICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9j YXRhbG9nL3BnX2FtcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2FtcHJvYy5k YXQKaW5kZXggMTY2NjgxYzMxZS4uNGYxN2YwZDU4YyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19hbXByb2MuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdf YW1wcm9jLmRhdApAQCAtOTQ2LDYgKzk0Niw5IEBACiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJp bi9pbnRlZ2VyX21pbm1heF9tdWx0aV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnaW50Mics CiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnaW50MicsIGFtcHJvY251bSA9PiAnNScsCiAgIGFt cHJvYyA9PiAnYnJpbl9taW5tYXhfbXVsdGlfb3B0aW9ucycgfSwKK3sgYW1wcm9jZmFtaWx5 ID0+ICdicmluL2ludGVnZXJfbWlubWF4X211bHRpX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ ICdpbnQyJywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICdpbnQyJywgYW1wcm9jbnVtID0+ICc2 JywKKyAgYW1wcm9jID0+ICdicmluX21pbm1heF9tdWx0aV9wcmVwcm9jZXNzJyB9LAogeyBh bXByb2NmYW1pbHkgPT4gJ2JyaW4vaW50ZWdlcl9taW5tYXhfbXVsdGlfb3BzJywgYW1wcm9j bGVmdHR5cGUgPT4gJ2ludDInLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2ludDInLCBhbXBy b2NudW0gPT4gJzExJywKICAgYW1wcm9jID0+ICdicmluX21pbm1heF9tdWx0aV9kaXN0YW5j ZV9pbnQyJyB9LApAQCAtOTY1LDYgKzk2OCw5IEBACiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJp bi9pbnRlZ2VyX21pbm1heF9tdWx0aV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnaW50NCcs CiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnaW50NCcsIGFtcHJvY251bSA9PiAnNScsCiAgIGFt cHJvYyA9PiAnYnJpbl9taW5tYXhfbXVsdGlfb3B0aW9ucycgfSwKK3sgYW1wcm9jZmFtaWx5 ID0+ICdicmluL2ludGVnZXJfbWlubWF4X211bHRpX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ ICdpbnQ0JywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICdpbnQ0JywgYW1wcm9jbnVtID0+ICc2 JywKKyAgYW1wcm9jID0+ICdicmluX21pbm1heF9tdWx0aV9wcmVwcm9jZXNzJyB9LAogeyBh bXByb2NmYW1pbHkgPT4gJ2JyaW4vaW50ZWdlcl9taW5tYXhfbXVsdGlfb3BzJywgYW1wcm9j bGVmdHR5cGUgPT4gJ2ludDQnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2ludDQnLCBhbXBy b2NudW0gPT4gJzExJywKICAgYW1wcm9jID0+ICdicmluX21pbm1heF9tdWx0aV9kaXN0YW5j ZV9pbnQ0JyB9LApAQCAtOTg0LDYgKzk5MCw5IEBACiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJp bi9pbnRlZ2VyX21pbm1heF9tdWx0aV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnaW50OCcs CiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnaW50OCcsIGFtcHJvY251bSA9PiAnNScsCiAgIGFt cHJvYyA9PiAnYnJpbl9taW5tYXhfbXVsdGlfb3B0aW9ucycgfSwKK3sgYW1wcm9jZmFtaWx5 ID0+ICdicmluL2ludGVnZXJfbWlubWF4X211bHRpX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ ICdpbnQ4JywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICdpbnQ4JywgYW1wcm9jbnVtID0+ICc2 JywKKyAgYW1wcm9jID0+ICdicmluX21pbm1heF9tdWx0aV9wcmVwcm9jZXNzJyB9LAogeyBh bXByb2NmYW1pbHkgPT4gJ2JyaW4vaW50ZWdlcl9taW5tYXhfbXVsdGlfb3BzJywgYW1wcm9j bGVmdHR5cGUgPT4gJ2ludDgnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2ludDgnLCBhbXBy b2NudW0gPT4gJzExJywKICAgYW1wcm9jID0+ICdicmluX21pbm1heF9tdWx0aV9kaXN0YW5j ZV9pbnQ4JyB9LApAQCAtMTA5NSw2ICsxMTA0LDkgQEAKIHsgYW1wcm9jZmFtaWx5ID0+ICdi cmluL29pZF9taW5tYXhfbXVsdGlfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ29pZCcsCiAg IGFtcHJvY3JpZ2h0dHlwZSA9PiAnb2lkJywgYW1wcm9jbnVtID0+ICc1JywKICAgYW1wcm9j ID0+ICdicmluX21pbm1heF9tdWx0aV9vcHRpb25zJyB9LAoreyBhbXByb2NmYW1pbHkgPT4g J2JyaW4vb2lkX21pbm1heF9tdWx0aV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnb2lkJywK KyAgYW1wcm9jcmlnaHR0eXBlID0+ICdvaWQnLCBhbXByb2NudW0gPT4gJzYnLAorICBhbXBy b2MgPT4gJ2JyaW5fbWlubWF4X211bHRpX3ByZXByb2Nlc3MnIH0sCiB7IGFtcHJvY2ZhbWls eSA9PiAnYnJpbi9vaWRfbWlubWF4X211bHRpX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdv aWQnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ29pZCcsIGFtcHJvY251bSA9PiAnMTEnLAog ICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X211bHRpX2Rpc3RhbmNlX2ludDQnIH0sCkBAIC0x MTYxLDYgKzExNzMsOSBAQAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vdGlkX21pbm1heF9t dWx0aV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAndGlkJywKICAgYW1wcm9jcmlnaHR0eXBl ID0+ICd0aWQnLCBhbXByb2NudW0gPT4gJzUnLAogICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4 X211bHRpX29wdGlvbnMnIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi90aWRfbWlubWF4 X211bHRpX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICd0aWQnLAorICBhbXByb2NyaWdodHR5 cGUgPT4gJ3RpZCcsIGFtcHJvY251bSA9PiAnNicsCisgIGFtcHJvYyA9PiAnYnJpbl9taW5t YXhfbXVsdGlfcHJlcHJvY2VzcycgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL3RpZF9t aW5tYXhfbXVsdGlfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3RpZCcsCiAgIGFtcHJvY3Jp Z2h0dHlwZSA9PiAndGlkJywgYW1wcm9jbnVtID0+ICcxMScsCiAgIGFtcHJvYyA9PiAnYnJp bl9taW5tYXhfbXVsdGlfZGlzdGFuY2VfdGlkJyB9LApAQCAtMTIxNCw2ICsxMjI5LDkgQEAK IHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL2Zsb2F0X21pbm1heF9tdWx0aV9vcHMnLCBhbXBy b2NsZWZ0dHlwZSA9PiAnZmxvYXQ0JywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdmbG9hdDQn LCBhbXByb2NudW0gPT4gJzUnLAogICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X211bHRpX29w dGlvbnMnIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9mbG9hdF9taW5tYXhfbXVsdGlf b3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2Zsb2F0NCcsCisgIGFtcHJvY3JpZ2h0dHlwZSA9 PiAnZmxvYXQ0JywgYW1wcm9jbnVtID0+ICc2JywKKyAgYW1wcm9jID0+ICdicmluX21pbm1h eF9tdWx0aV9wcmVwcm9jZXNzJyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vZmxvYXRf bWlubWF4X211bHRpX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdmbG9hdDQnLAogICBhbXBy b2NyaWdodHR5cGUgPT4gJ2Zsb2F0NCcsIGFtcHJvY251bSA9PiAnMTEnLAogICBhbXByb2Mg PT4gJ2JyaW5fbWlubWF4X211bHRpX2Rpc3RhbmNlX2Zsb2F0NCcgfSwKQEAgLTEyMzMsNiAr MTI1MSw5IEBACiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9mbG9hdF9taW5tYXhfbXVsdGlf b3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2Zsb2F0OCcsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9 PiAnZmxvYXQ4JywgYW1wcm9jbnVtID0+ICc1JywKICAgYW1wcm9jID0+ICdicmluX21pbm1h eF9tdWx0aV9vcHRpb25zJyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vZmxvYXRfbWlu bWF4X211bHRpX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdmbG9hdDgnLAorICBhbXByb2Ny aWdodHR5cGUgPT4gJ2Zsb2F0OCcsIGFtcHJvY251bSA9PiAnNicsCisgIGFtcHJvYyA9PiAn YnJpbl9taW5tYXhfbXVsdGlfcHJlcHJvY2VzcycgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdi cmluL2Zsb2F0X21pbm1heF9tdWx0aV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnZmxvYXQ4 JywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdmbG9hdDgnLCBhbXByb2NudW0gPT4gJzExJywK ICAgYW1wcm9jID0+ICdicmluX21pbm1heF9tdWx0aV9kaXN0YW5jZV9mbG9hdDgnIH0sCkBA IC0xMzA1LDYgKzEzMjYsOSBAQAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vbWFjYWRkcl9t aW5tYXhfbXVsdGlfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ21hY2FkZHInLAogICBhbXBy b2NyaWdodHR5cGUgPT4gJ21hY2FkZHInLCBhbXByb2NudW0gPT4gJzUnLAogICBhbXByb2Mg PT4gJ2JyaW5fbWlubWF4X211bHRpX29wdGlvbnMnIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAn YnJpbi9tYWNhZGRyX21pbm1heF9tdWx0aV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnbWFj YWRkcicsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnbWFjYWRkcicsIGFtcHJvY251bSA9PiAn NicsCisgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfbXVsdGlfcHJlcHJvY2VzcycgfSwKIHsg YW1wcm9jZmFtaWx5ID0+ICdicmluL21hY2FkZHJfbWlubWF4X211bHRpX29wcycsIGFtcHJv Y2xlZnR0eXBlID0+ICdtYWNhZGRyJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdtYWNhZGRy JywgYW1wcm9jbnVtID0+ICcxMScsCiAgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfbXVsdGlf ZGlzdGFuY2VfbWFjYWRkcicgfSwKQEAgLTEzNjEsNiArMTM4NSw5IEBACiB7IGFtcHJvY2Zh bWlseSA9PiAnYnJpbi9tYWNhZGRyOF9taW5tYXhfbXVsdGlfb3BzJywKICAgYW1wcm9jbGVm dHR5cGUgPT4gJ21hY2FkZHI4JywgYW1wcm9jcmlnaHR0eXBlID0+ICdtYWNhZGRyOCcsIGFt cHJvY251bSA9PiAnNScsCiAgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfbXVsdGlfb3B0aW9u cycgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL21hY2FkZHI4X21pbm1heF9tdWx0aV9v cHMnLAorICBhbXByb2NsZWZ0dHlwZSA9PiAnbWFjYWRkcjgnLCBhbXByb2NyaWdodHR5cGUg PT4gJ21hY2FkZHI4JywgYW1wcm9jbnVtID0+ICc2JywKKyAgYW1wcm9jID0+ICdicmluX21p bm1heF9tdWx0aV9wcmVwcm9jZXNzJyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vbWFj YWRkcjhfbWlubWF4X211bHRpX29wcycsCiAgIGFtcHJvY2xlZnR0eXBlID0+ICdtYWNhZGRy OCcsIGFtcHJvY3JpZ2h0dHlwZSA9PiAnbWFjYWRkcjgnLAogICBhbXByb2NudW0gPT4gJzEx JywgYW1wcm9jID0+ICdicmluX21pbm1heF9tdWx0aV9kaXN0YW5jZV9tYWNhZGRyOCcgfSwK QEAgLTE0MTUsNiArMTQ0Miw5IEBACiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9uZXR3b3Jr X21pbm1heF9tdWx0aV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnaW5ldCcsCiAgIGFtcHJv Y3JpZ2h0dHlwZSA9PiAnaW5ldCcsIGFtcHJvY251bSA9PiAnNScsCiAgIGFtcHJvYyA9PiAn YnJpbl9taW5tYXhfbXVsdGlfb3B0aW9ucycgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmlu L25ldHdvcmtfbWlubWF4X211bHRpX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdpbmV0JywK KyAgYW1wcm9jcmlnaHR0eXBlID0+ICdpbmV0JywgYW1wcm9jbnVtID0+ICc2JywKKyAgYW1w cm9jID0+ICdicmluX21pbm1heF9tdWx0aV9wcmVwcm9jZXNzJyB9LAogeyBhbXByb2NmYW1p bHkgPT4gJ2JyaW4vbmV0d29ya19taW5tYXhfbXVsdGlfb3BzJywgYW1wcm9jbGVmdHR5cGUg PT4gJ2luZXQnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2luZXQnLCBhbXByb2NudW0gPT4g JzExJywKICAgYW1wcm9jID0+ICdicmluX21pbm1heF9tdWx0aV9kaXN0YW5jZV9pbmV0JyB9 LApAQCAtMTUyMSw2ICsxNTUxLDkgQEAKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL3RpbWVf bWlubWF4X211bHRpX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICd0aW1lJywKICAgYW1wcm9j cmlnaHR0eXBlID0+ICd0aW1lJywgYW1wcm9jbnVtID0+ICc1JywKICAgYW1wcm9jID0+ICdi cmluX21pbm1heF9tdWx0aV9vcHRpb25zJyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4v dGltZV9taW5tYXhfbXVsdGlfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3RpbWUnLAorICBh bXByb2NyaWdodHR5cGUgPT4gJ3RpbWUnLCBhbXByb2NudW0gPT4gJzYnLAorICBhbXByb2Mg PT4gJ2JyaW5fbWlubWF4X211bHRpX3ByZXByb2Nlc3MnIH0sCiB7IGFtcHJvY2ZhbWlseSA9 PiAnYnJpbi90aW1lX21pbm1heF9tdWx0aV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAndGlt ZScsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAndGltZScsIGFtcHJvY251bSA9PiAnMTEnLAog ICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X211bHRpX2Rpc3RhbmNlX3RpbWUnIH0sCkBAIC0x NjA0LDYgKzE2MzcsOSBAQAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vZGF0ZXRpbWVfbWlu bWF4X211bHRpX29wcycsCiAgIGFtcHJvY2xlZnR0eXBlID0+ICd0aW1lc3RhbXAnLCBhbXBy b2NyaWdodHR5cGUgPT4gJ3RpbWVzdGFtcCcsCiAgIGFtcHJvY251bSA9PiAnNScsIGFtcHJv YyA9PiAnYnJpbl9taW5tYXhfbXVsdGlfb3B0aW9ucycgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ ICdicmluL2RhdGV0aW1lX21pbm1heF9tdWx0aV9vcHMnLAorICBhbXByb2NsZWZ0dHlwZSA9 PiAndGltZXN0YW1wJywgYW1wcm9jcmlnaHR0eXBlID0+ICd0aW1lc3RhbXAnLAorICBhbXBy b2NudW0gPT4gJzYnLCBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X211bHRpX3ByZXByb2Nlc3Mn IH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9kYXRldGltZV9taW5tYXhfbXVsdGlfb3Bz JywKICAgYW1wcm9jbGVmdHR5cGUgPT4gJ3RpbWVzdGFtcCcsIGFtcHJvY3JpZ2h0dHlwZSA9 PiAndGltZXN0YW1wJywKICAgYW1wcm9jbnVtID0+ICcxMScsIGFtcHJvYyA9PiAnYnJpbl9t aW5tYXhfbXVsdGlfZGlzdGFuY2VfdGltZXN0YW1wJyB9LApAQCAtMTYyMyw2ICsxNjU5LDkg QEAKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL2RhdGV0aW1lX21pbm1heF9tdWx0aV9vcHMn LAogICBhbXByb2NsZWZ0dHlwZSA9PiAndGltZXN0YW1wdHonLCBhbXByb2NyaWdodHR5cGUg PT4gJ3RpbWVzdGFtcHR6JywKICAgYW1wcm9jbnVtID0+ICc1JywgYW1wcm9jID0+ICdicmlu X21pbm1heF9tdWx0aV9vcHRpb25zJyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vZGF0 ZXRpbWVfbWlubWF4X211bHRpX29wcycsCisgIGFtcHJvY2xlZnR0eXBlID0+ICd0aW1lc3Rh bXB0eicsIGFtcHJvY3JpZ2h0dHlwZSA9PiAndGltZXN0YW1wdHonLAorICBhbXByb2NudW0g PT4gJzYnLCBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X211bHRpX3ByZXByb2Nlc3MnIH0sCiB7 IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9kYXRldGltZV9taW5tYXhfbXVsdGlfb3BzJywKICAg YW1wcm9jbGVmdHR5cGUgPT4gJ3RpbWVzdGFtcHR6JywgYW1wcm9jcmlnaHR0eXBlID0+ICd0 aW1lc3RhbXB0eicsCiAgIGFtcHJvY251bSA9PiAnMTEnLCBhbXByb2MgPT4gJ2JyaW5fbWlu bWF4X211bHRpX2Rpc3RhbmNlX3RpbWVzdGFtcCcgfSwKQEAgLTE2NDIsNiArMTY4MSw5IEBA CiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9kYXRldGltZV9taW5tYXhfbXVsdGlfb3BzJywg YW1wcm9jbGVmdHR5cGUgPT4gJ2RhdGUnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2RhdGUn LCBhbXByb2NudW0gPT4gJzUnLAogICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X211bHRpX29w dGlvbnMnIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9kYXRldGltZV9taW5tYXhfbXVs dGlfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2RhdGUnLAorICBhbXByb2NyaWdodHR5cGUg PT4gJ2RhdGUnLCBhbXByb2NudW0gPT4gJzYnLAorICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4 X211bHRpX3ByZXByb2Nlc3MnIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9kYXRldGlt ZV9taW5tYXhfbXVsdGlfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2RhdGUnLAogICBhbXBy b2NyaWdodHR5cGUgPT4gJ2RhdGUnLCBhbXByb2NudW0gPT4gJzExJywKICAgYW1wcm9jID0+ ICdicmluX21pbm1heF9tdWx0aV9kaXN0YW5jZV9kYXRlJyB9LApAQCAtMTczMyw2ICsxNzc1 LDkgQEAKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL2ludGVydmFsX21pbm1heF9tdWx0aV9v cHMnLAogICBhbXByb2NsZWZ0dHlwZSA9PiAnaW50ZXJ2YWwnLCBhbXByb2NyaWdodHR5cGUg PT4gJ2ludGVydmFsJywgYW1wcm9jbnVtID0+ICc1JywKICAgYW1wcm9jID0+ICdicmluX21p bm1heF9tdWx0aV9vcHRpb25zJyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vaW50ZXJ2 YWxfbWlubWF4X211bHRpX29wcycsCisgIGFtcHJvY2xlZnR0eXBlID0+ICdpbnRlcnZhbCcs IGFtcHJvY3JpZ2h0dHlwZSA9PiAnaW50ZXJ2YWwnLCBhbXByb2NudW0gPT4gJzYnLAorICBh bXByb2MgPT4gJ2JyaW5fbWlubWF4X211bHRpX3ByZXByb2Nlc3MnIH0sCiB7IGFtcHJvY2Zh bWlseSA9PiAnYnJpbi9pbnRlcnZhbF9taW5tYXhfbXVsdGlfb3BzJywKICAgYW1wcm9jbGVm dHR5cGUgPT4gJ2ludGVydmFsJywgYW1wcm9jcmlnaHR0eXBlID0+ICdpbnRlcnZhbCcsCiAg IGFtcHJvY251bSA9PiAnMTEnLCBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X211bHRpX2Rpc3Rh bmNlX2ludGVydmFsJyB9LApAQCAtMTc4OSw2ICsxODM0LDkgQEAKIHsgYW1wcm9jZmFtaWx5 ID0+ICdicmluL3RpbWV0el9taW5tYXhfbXVsdGlfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4g J3RpbWV0eicsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAndGltZXR6JywgYW1wcm9jbnVtID0+ ICc1JywKICAgYW1wcm9jID0+ICdicmluX21pbm1heF9tdWx0aV9vcHRpb25zJyB9LAoreyBh bXByb2NmYW1pbHkgPT4gJ2JyaW4vdGltZXR6X21pbm1heF9tdWx0aV9vcHMnLCBhbXByb2Ns ZWZ0dHlwZSA9PiAndGltZXR6JywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICd0aW1ldHonLCBh bXByb2NudW0gPT4gJzYnLAorICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X211bHRpX3ByZXBy b2Nlc3MnIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi90aW1ldHpfbWlubWF4X211bHRp X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICd0aW1ldHonLAogICBhbXByb2NyaWdodHR5cGUg PT4gJ3RpbWV0eicsIGFtcHJvY251bSA9PiAnMTEnLAogICBhbXByb2MgPT4gJ2JyaW5fbWlu bWF4X211bHRpX2Rpc3RhbmNlX3RpbWV0eicgfSwKQEAgLTE4NzUsNiArMTkyMyw5IEBACiB7 IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9udW1lcmljX21pbm1heF9tdWx0aV9vcHMnLCBhbXBy b2NsZWZ0dHlwZSA9PiAnbnVtZXJpYycsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnbnVtZXJp YycsIGFtcHJvY251bSA9PiAnNScsCiAgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfbXVsdGlf b3B0aW9ucycgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL251bWVyaWNfbWlubWF4X211 bHRpX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdudW1lcmljJywKKyAgYW1wcm9jcmlnaHR0 eXBlID0+ICdudW1lcmljJywgYW1wcm9jbnVtID0+ICc2JywKKyAgYW1wcm9jID0+ICdicmlu X21pbm1heF9tdWx0aV9wcmVwcm9jZXNzJyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4v bnVtZXJpY19taW5tYXhfbXVsdGlfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ251bWVyaWMn LAogICBhbXByb2NyaWdodHR5cGUgPT4gJ251bWVyaWMnLCBhbXByb2NudW0gPT4gJzExJywK ICAgYW1wcm9jID0+ICdicmluX21pbm1heF9tdWx0aV9kaXN0YW5jZV9udW1lcmljJyB9LApA QCAtMTkyOSw2ICsxOTgwLDkgQEAKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL3V1aWRfbWlu bWF4X211bHRpX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICd1dWlkJywKICAgYW1wcm9jcmln aHR0eXBlID0+ICd1dWlkJywgYW1wcm9jbnVtID0+ICc1JywKICAgYW1wcm9jID0+ICdicmlu X21pbm1heF9tdWx0aV9vcHRpb25zJyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vdXVp ZF9taW5tYXhfbXVsdGlfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3V1aWQnLAorICBhbXBy b2NyaWdodHR5cGUgPT4gJ3V1aWQnLCBhbXByb2NudW0gPT4gJzYnLAorICBhbXByb2MgPT4g J2JyaW5fbWlubWF4X211bHRpX3ByZXByb2Nlc3MnIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAn YnJpbi91dWlkX21pbm1heF9tdWx0aV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAndXVpZCcs CiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAndXVpZCcsIGFtcHJvY251bSA9PiAnMTEnLAogICBh bXByb2MgPT4gJ2JyaW5fbWlubWF4X211bHRpX2Rpc3RhbmNlX3V1aWQnIH0sCkBAIC0yMDA1 LDYgKzIwNTksOSBAQAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vcGdfbHNuX21pbm1heF9t dWx0aV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAncGdfbHNuJywKICAgYW1wcm9jcmlnaHR0 eXBlID0+ICdwZ19sc24nLCBhbXByb2NudW0gPT4gJzUnLAogICBhbXByb2MgPT4gJ2JyaW5f bWlubWF4X211bHRpX29wdGlvbnMnIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9wZ19s c25fbWlubWF4X211bHRpX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdwZ19sc24nLAorICBh bXByb2NyaWdodHR5cGUgPT4gJ3BnX2xzbicsIGFtcHJvY251bSA9PiAnNicsCisgIGFtcHJv YyA9PiAnYnJpbl9taW5tYXhfbXVsdGlfcHJlcHJvY2VzcycgfSwKIHsgYW1wcm9jZmFtaWx5 ID0+ICdicmluL3BnX2xzbl9taW5tYXhfbXVsdGlfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4g J3BnX2xzbicsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAncGdfbHNuJywgYW1wcm9jbnVtID0+ ICcxMScsCiAgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfbXVsdGlfZGlzdGFuY2VfcGdfbHNu JyB9LApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCBiL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKaW5kZXggOGYxNzUzMjA5NC4uMDQ1NTU3 NDZlNiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAorKysg Yi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CkBAIC04NTUxLDYgKzg1NTEsMTAg QEAKICAgcHJvbmFtZSA9PiAnYnJpbl9taW5tYXhfbXVsdGlfb3B0aW9ucycsIHByb2lzc3Ry aWN0ID0+ICdmJywKICAgcHJvcmV0dHlwZSA9PiAndm9pZCcsIHByb2FyZ3R5cGVzID0+ICdp bnRlcm5hbCcsCiAgIHByb3NyYyA9PiAnYnJpbl9taW5tYXhfbXVsdGlfb3B0aW9ucycgfSwK K3sgb2lkID0+ICc5MzI2JywgZGVzY3IgPT4gJ0JSSU4gbXVsdGkgbWlubWF4IHN1cHBvcnQn LAorICBwcm9uYW1lID0+ICdicmluX21pbm1heF9tdWx0aV9wcmVwcm9jZXNzJywgcHJvaXNz dHJpY3QgPT4gJ2YnLAorICBwcm9yZXR0eXBlID0+ICdpbnRlcm5hbCcsIHByb2FyZ3R5cGVz ID0+ICdpbnRlcm5hbCBpbnRlcm5hbCcsCisgIHByb3NyYyA9PiAnYnJpbl9taW5tYXhfbXVs dGlfcHJlcHJvY2VzcycgfSwKIAogeyBvaWQgPT4gJzQ2MjEnLCBkZXNjciA9PiAnQlJJTiBt dWx0aSBtaW5tYXggaW50MiBkaXN0YW5jZScsCiAgIHByb25hbWUgPT4gJ2JyaW5fbWlubWF4 X211bHRpX2Rpc3RhbmNlX2ludDInLCBwcm9yZXR0eXBlID0+ICdmbG9hdDgnLApkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9icmluX211bHRpLm91dCBiL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvYnJpbl9tdWx0aS5vdXQKaW5kZXggOWY0NjkzNGM5Yi4u ZDc3NGNkOTFhMSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9icmlu X211bHRpLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2JyaW5fbXVsdGku b3V0CkBAIC04MjMsMyArODIzLDkyOSBAQCBTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX3Rl c3RfbXVsdGlfMiBXSEVSRSBhID0gJ2FhYjMyMzg5LTIyYmMtYzI1YS02ZjYwLTZlYjUyNQog CiBEUk9QIFRBQkxFIGJyaW5fdGVzdF9tdWx0aV8yOwogUkVTRVQgZW5hYmxlX3NlcXNjYW47 CistLSBkbyBzb21lIHRlc3RzIG9uIElOIGNsYXVzZXMgZm9yIHNpbXBsZSBkYXRhIHR5cGVz CitDUkVBVEUgVEFCTEUgYnJpbl9pbl90ZXN0X211bHRpXzEgKGEgSU5ULCBiIEJJR0lOVCkg V0lUSCAoZmlsbGZhY3Rvcj0xMCk7CitJTlNFUlQgSU5UTyBicmluX2luX3Rlc3RfbXVsdGlf MQorU0VMRUNUIGkvNSArIG1vZCg5OTEgKiBpICsgNjE3LCAyMCksCisgICAgICAgaS8xMCAr IG1vZCg4NTMgKiBpICsgNDkxLCAzMCkKKyAgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDAw KSBzKGkpOworQ1JFQVRFIElOREVYIGJyaW5faW5fdGVzdF9tdWx0aV8xX2lkeF8xIE9OIGJy aW5faW5fdGVzdF9tdWx0aV8xIFVTSU5HIGJyaW4gKGEgaW50NF9taW5tYXhfbXVsdGlfb3Bz KSBXSVRIIChwYWdlc19wZXJfcmFuZ2U9MSk7CitDUkVBVEUgSU5ERVggYnJpbl9pbl90ZXN0 X211bHRpXzFfaWR4XzIgT04gYnJpbl9pbl90ZXN0X211bHRpXzEgVVNJTkcgYnJpbiAoYiBp bnQ4X21pbm1heF9tdWx0aV9vcHMpIFdJVEggKHBhZ2VzX3Blcl9yYW5nZT0xKTsKK1NFVCBl bmFibGVfc2Vxc2Nhbj1vZmY7CistLSBpbnQ6IGVxdWFsaXR5CitFWFBMQUlOIChDT1NUUyBP RkYpCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfbXVsdGlfMSBXSEVSRSBh IElOICgxMTMpOworICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEJpdG1h cCBIZWFwIFNjYW4gb24gYnJpbl9pbl90ZXN0X211bHRpXzEKKyAgICAgICAgIFJlY2hlY2sg Q29uZDogKGEgPSAxMTMpCisgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gYnJp bl9pbl90ZXN0X211bHRpXzFfaWR4XzEKKyAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChh ID0gMTEzKQorKDUgcm93cykKKworU0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0 X211bHRpXzEgV0hFUkUgYSBJTiAoMTEzKTsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICAgOAor KDEgcm93KQorCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBi cmluX2luX3Rlc3RfbXVsdGlfMSBXSEVSRSBhIElOICgxMTMsIE5VTEwpOworICAgICAgICAg ICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIGJy aW5faW5fdGVzdF9tdWx0aV8xCisgICAgICAgICBSZWNoZWNrIENvbmQ6IChhID0gQU5ZICgn ezExMyxOVUxMfSc6OmludGVnZXJbXSkpCisgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNj YW4gb24gYnJpbl9pbl90ZXN0X211bHRpXzFfaWR4XzEKKyAgICAgICAgICAgICAgIEluZGV4 IENvbmQ6IChhID0gQU5ZICgnezExMyxOVUxMfSc6OmludGVnZXJbXSkpCisoNSByb3dzKQor CitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfbXVsdGlfMSBXSEVSRSBhIElO ICgxMTMsIE5VTEwpOworIGNvdW50IAorLS0tLS0tLQorICAgICA4CisoMSByb3cpCisKK0VY UExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF9t dWx0aV8xIFdIRVJFIGEgSU4gKE5VTEwsIE5VTEwpOworICAgICAgICAgICAgICAgICAgICAg ICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIEFnZ3JlZ2F0ZQorICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gYnJpbl9pbl90ZXN0 X211bHRpXzEKKyAgICAgICAgIFJlY2hlY2sgQ29uZDogKGEgPSBBTlkgKCd7TlVMTCxOVUxM fSc6OmludGVnZXJbXSkpCisgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gYnJp bl9pbl90ZXN0X211bHRpXzFfaWR4XzEKKyAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChh ID0gQU5ZICgne05VTEwsTlVMTH0nOjppbnRlZ2VyW10pKQorKDUgcm93cykKKworU0VMRUNU IENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0X211bHRpXzEgV0hFUkUgYSBJTiAoTlVMTCwg TlVMTCk7CisgY291bnQgCistLS0tLS0tCisgICAgIDAKKygxIHJvdykKKworRVhQTEFJTiAo Q09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0X211bHRpXzEg V0hFUkUgYSBJTiAoMTEzLCAxNzcpOworICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVS WSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRl CisgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiBicmluX2luX3Rlc3RfbXVsdGlfMQorICAg ICAgICAgUmVjaGVjayBDb25kOiAoYSA9IEFOWSAoJ3sxMTMsMTc3fSc6OmludGVnZXJbXSkp CisgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gYnJpbl9pbl90ZXN0X211bHRp XzFfaWR4XzEKKyAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChhID0gQU5ZICgnezExMywx Nzd9Jzo6aW50ZWdlcltdKSkKKyg1IHJvd3MpCisKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJy aW5faW5fdGVzdF9tdWx0aV8xIFdIRVJFIGEgSU4gKDExMywgMTc3KTsKKyBjb3VudCAKKy0t LS0tLS0KKyAgICAxNgorKDEgcm93KQorCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1Qg Q09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfbXVsdGlfMSBXSEVSRSBhIElOICgtMTEzLCAt MTc3KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAg ICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBCaXRt YXAgSGVhcCBTY2FuIG9uIGJyaW5faW5fdGVzdF9tdWx0aV8xCisgICAgICAgICBSZWNoZWNr IENvbmQ6IChhID0gQU5ZICgney0xMTMsLTE3N30nOjppbnRlZ2VyW10pKQorICAgICAgICAg LT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIGJyaW5faW5fdGVzdF9tdWx0aV8xX2lkeF8xCisg ICAgICAgICAgICAgICBJbmRleCBDb25kOiAoYSA9IEFOWSAoJ3stMTEzLC0xNzd9Jzo6aW50 ZWdlcltdKSkKKyg1IHJvd3MpCisKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVz dF9tdWx0aV8xIFdIRVJFIGEgSU4gKC0xMTMsIC0xNzcpOworIGNvdW50IAorLS0tLS0tLQor ICAgICAwCisoMSByb3cpCisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgq KSBGUk9NIGJyaW5faW5fdGVzdF9tdWx0aV8xIFdIRVJFIGEgSU4gKDMxMywgMzc3KTsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4g b24gYnJpbl9pbl90ZXN0X211bHRpXzEKKyAgICAgICAgIFJlY2hlY2sgQ29uZDogKGEgPSBB TlkgKCd7MzEzLDM3N30nOjppbnRlZ2VyW10pKQorICAgICAgICAgLT4gIEJpdG1hcCBJbmRl eCBTY2FuIG9uIGJyaW5faW5fdGVzdF9tdWx0aV8xX2lkeF8xCisgICAgICAgICAgICAgICBJ bmRleCBDb25kOiAoYSA9IEFOWSAoJ3szMTMsMzc3fSc6OmludGVnZXJbXSkpCisoNSByb3dz KQorCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfbXVsdGlfMSBXSEVSRSBh IElOICgzMTMsIDM3Nyk7CisgY291bnQgCistLS0tLS0tCisgICAgIDAKKygxIHJvdykKKwor RVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0 X211bHRpXzEgV0hFUkUgYSBJTiAoMTEzLCAxNzcsIE5VTEwpOworICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24g YnJpbl9pbl90ZXN0X211bHRpXzEKKyAgICAgICAgIFJlY2hlY2sgQ29uZDogKGEgPSBBTlkg KCd7MTEzLDE3NyxOVUxMfSc6OmludGVnZXJbXSkpCisgICAgICAgICAtPiAgQml0bWFwIElu ZGV4IFNjYW4gb24gYnJpbl9pbl90ZXN0X211bHRpXzFfaWR4XzEKKyAgICAgICAgICAgICAg IEluZGV4IENvbmQ6IChhID0gQU5ZICgnezExMywxNzcsTlVMTH0nOjppbnRlZ2VyW10pKQor KDUgcm93cykKKworU0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0X211bHRpXzEg V0hFUkUgYSBJTiAoMTEzLCAxNzcsIE5VTEwpOworIGNvdW50IAorLS0tLS0tLQorICAgIDE2 CisoMSByb3cpCisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBGUk9N IGJyaW5faW5fdGVzdF9tdWx0aV8xIFdIRVJFIGEgSU4gKDExMywgMTc3LCAyNSk7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBCaXRtYXAgSGVhcCBT Y2FuIG9uIGJyaW5faW5fdGVzdF9tdWx0aV8xCisgICAgICAgICBSZWNoZWNrIENvbmQ6IChh ID0gQU5ZICgnezExMywxNzcsMjV9Jzo6aW50ZWdlcltdKSkKKyAgICAgICAgIC0+ICBCaXRt YXAgSW5kZXggU2NhbiBvbiBicmluX2luX3Rlc3RfbXVsdGlfMV9pZHhfMQorICAgICAgICAg ICAgICAgSW5kZXggQ29uZDogKGEgPSBBTlkgKCd7MTEzLDE3NywyNX0nOjppbnRlZ2VyW10p KQorKDUgcm93cykKKworU0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0X211bHRp XzEgV0hFUkUgYSBJTiAoMTEzLCAxNzcsIDI1KTsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICAy NAorKDEgcm93KQorCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgRlJP TSBicmluX2luX3Rlc3RfbXVsdGlfMSBXSEVSRSBhIElOIChOVUxMLCAxMTMsIDE3NywgMjUp OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAg LT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gYnJpbl9pbl90ZXN0X211bHRpXzEKKyAgICAgICAg IFJlY2hlY2sgQ29uZDogKGEgPSBBTlkgKCd7TlVMTCwxMTMsMTc3LDI1fSc6OmludGVnZXJb XSkpCisgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gYnJpbl9pbl90ZXN0X211 bHRpXzFfaWR4XzEKKyAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChhID0gQU5ZICgne05V TEwsMTEzLDE3NywyNX0nOjppbnRlZ2VyW10pKQorKDUgcm93cykKKworU0VMRUNUIENPVU5U KCopIEZST00gYnJpbl9pbl90ZXN0X211bHRpXzEgV0hFUkUgYSBJTiAoTlVMTCwgMTEzLCAx NzcsIDI1KTsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICAyNAorKDEgcm93KQorCistLSBpbnQ6 IGxlc3MgdGhhbgorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIEZST00g YnJpbl9pbl90ZXN0X211bHRpXzEgV0hFUkUgYSA8IEFOWShBUlJBWVsxMTNdKTsKKyAgICAg ICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIGJy aW5faW5fdGVzdF9tdWx0aV8xCisgICAgICAgICBSZWNoZWNrIENvbmQ6IChhIDwgQU5ZICgn ezExM30nOjppbnRlZ2VyW10pKQorICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9u IGJyaW5faW5fdGVzdF9tdWx0aV8xX2lkeF8xCisgICAgICAgICAgICAgICBJbmRleCBDb25k OiAoYSA8IEFOWSAoJ3sxMTN9Jzo6aW50ZWdlcltdKSkKKyg1IHJvd3MpCisKK1NFTEVDVCBD T1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF9tdWx0aV8xIFdIRVJFIGEgPCBBTlkoQVJSQVlb MTEzXSk7CisgY291bnQgCistLS0tLS0tCisgICA1MTUKKygxIHJvdykKKworRVhQTEFJTiAo Q09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0X211bHRpXzEg V0hFUkUgYSA8IEFOWShBUlJBWVsxMTMsIE5VTExdKTsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgQWdncmVnYXRlCisgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiBicmluX2luX3Rlc3Rf bXVsdGlfMQorICAgICAgICAgUmVjaGVjayBDb25kOiAoYSA8IEFOWSAoJ3sxMTMsTlVMTH0n OjppbnRlZ2VyW10pKQorICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIGJyaW5f aW5fdGVzdF9tdWx0aV8xX2lkeF8xCisgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoYSA8 IEFOWSAoJ3sxMTMsTlVMTH0nOjppbnRlZ2VyW10pKQorKDUgcm93cykKKworU0VMRUNUIENP VU5UKCopIEZST00gYnJpbl9pbl90ZXN0X211bHRpXzEgV0hFUkUgYSA8IEFOWShBUlJBWVsx MTMsIE5VTExdKTsKKyBjb3VudCAKKy0tLS0tLS0KKyAgIDUxNQorKDEgcm93KQorCitFWFBM QUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfbXVs dGlfMSBXSEVSRSBhIDwgQU5ZKEFSUkFZW05VTEwsIE5VTExdOjppbnRbXSk7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBv biBicmluX2luX3Rlc3RfbXVsdGlfMQorICAgICAgICAgUmVjaGVjayBDb25kOiAoYSA8IEFO WSAoJ3tOVUxMLE5VTEx9Jzo6aW50ZWdlcltdKSkKKyAgICAgICAgIC0+ICBCaXRtYXAgSW5k ZXggU2NhbiBvbiBicmluX2luX3Rlc3RfbXVsdGlfMV9pZHhfMQorICAgICAgICAgICAgICAg SW5kZXggQ29uZDogKGEgPCBBTlkgKCd7TlVMTCxOVUxMfSc6OmludGVnZXJbXSkpCisoNSBy b3dzKQorCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfbXVsdGlfMSBXSEVS RSBhIDwgQU5ZKEFSUkFZW05VTEwsIE5VTExdOjppbnRbXSk7CisgY291bnQgCistLS0tLS0t CisgICAgIDAKKygxIHJvdykKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5U KCopIEZST00gYnJpbl9pbl90ZXN0X211bHRpXzEgV0hFUkUgYSA8PSBBTlkoQVJSQVlbMTEz LCAxNzddKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgQml0 bWFwIEhlYXAgU2NhbiBvbiBicmluX2luX3Rlc3RfbXVsdGlfMQorICAgICAgICAgUmVjaGVj ayBDb25kOiAoYSA8PSBBTlkgKCd7MTEzLDE3N30nOjppbnRlZ2VyW10pKQorICAgICAgICAg LT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIGJyaW5faW5fdGVzdF9tdWx0aV8xX2lkeF8xCisg ICAgICAgICAgICAgICBJbmRleCBDb25kOiAoYSA8PSBBTlkgKCd7MTEzLDE3N30nOjppbnRl Z2VyW10pKQorKDUgcm93cykKKworU0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0 X211bHRpXzEgV0hFUkUgYSA8PSBBTlkoQVJSQVlbMTEzLCAxNzddKTsKKyBjb3VudCAKKy0t LS0tLS0KKyAgIDg0MworKDEgcm93KQorCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1Qg Q09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfbXVsdGlfMSBXSEVSRSBhIDwgQU5ZKEFSUkFZ WzExMywgMTc3LCBOVUxMXSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkg UExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdn cmVnYXRlCisgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiBicmluX2luX3Rlc3RfbXVsdGlf MQorICAgICAgICAgUmVjaGVjayBDb25kOiAoYSA8IEFOWSAoJ3sxMTMsMTc3LE5VTEx9Jzo6 aW50ZWdlcltdKSkKKyAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBicmluX2lu X3Rlc3RfbXVsdGlfMV9pZHhfMQorICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKGEgPCBB TlkgKCd7MTEzLDE3NyxOVUxMfSc6OmludGVnZXJbXSkpCisoNSByb3dzKQorCitTRUxFQ1Qg Q09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfbXVsdGlfMSBXSEVSRSBhIDwgQU5ZKEFSUkFZ WzExMywgMTc3LCBOVUxMXSk7CisgY291bnQgCistLS0tLS0tCisgICA4MzUKKygxIHJvdykK KworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90 ZXN0X211bHRpXzEgV0hFUkUgYSA8PSBBTlkoQVJSQVlbMTEzLCAxNzcsIDI1XSk7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEJpdG1hcCBIZWFw IFNjYW4gb24gYnJpbl9pbl90ZXN0X211bHRpXzEKKyAgICAgICAgIFJlY2hlY2sgQ29uZDog KGEgPD0gQU5ZICgnezExMywxNzcsMjV9Jzo6aW50ZWdlcltdKSkKKyAgICAgICAgIC0+ICBC aXRtYXAgSW5kZXggU2NhbiBvbiBicmluX2luX3Rlc3RfbXVsdGlfMV9pZHhfMQorICAgICAg ICAgICAgICAgSW5kZXggQ29uZDogKGEgPD0gQU5ZICgnezExMywxNzcsMjV9Jzo6aW50ZWdl cltdKSkKKyg1IHJvd3MpCisKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF9t dWx0aV8xIFdIRVJFIGEgPD0gQU5ZKEFSUkFZWzExMywgMTc3LCAyNV0pOworIGNvdW50IAor LS0tLS0tLQorICAgODQzCisoMSByb3cpCisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVD VCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF9tdWx0aV8xIFdIRVJFIGEgPCBBTlkoQVJS QVlbTlVMTCwgMTEzLCAxNzcsIDI1XSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiBicmluX2lu X3Rlc3RfbXVsdGlfMQorICAgICAgICAgUmVjaGVjayBDb25kOiAoYSA8IEFOWSAoJ3tOVUxM LDExMywxNzcsMjV9Jzo6aW50ZWdlcltdKSkKKyAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXgg U2NhbiBvbiBicmluX2luX3Rlc3RfbXVsdGlfMV9pZHhfMQorICAgICAgICAgICAgICAgSW5k ZXggQ29uZDogKGEgPCBBTlkgKCd7TlVMTCwxMTMsMTc3LDI1fSc6OmludGVnZXJbXSkpCiso NSByb3dzKQorCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfbXVsdGlfMSBX SEVSRSBhIDwgQU5ZKEFSUkFZW05VTEwsIDExMywgMTc3LCAyNV0pOworIGNvdW50IAorLS0t LS0tLQorICAgODM1CisoMSByb3cpCisKKy0tIGludDogZ3JlYXRlciB0aGFuCitFWFBMQUlO IChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfbXVsdGlf MSBXSEVSRSBhID4gQU5ZKEFSUkFZWzExM10pOworICAgICAgICAgICAgICAgICAgICAgICAg IFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3Jl Z2F0ZQorICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gYnJpbl9pbl90ZXN0X211bHRpXzEK KyAgICAgICAgIFJlY2hlY2sgQ29uZDogKGEgPiBBTlkgKCd7MTEzfSc6OmludGVnZXJbXSkp CisgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gYnJpbl9pbl90ZXN0X211bHRp XzFfaWR4XzEKKyAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChhID4gQU5ZICgnezExM30n OjppbnRlZ2VyW10pKQorKDUgcm93cykKKworU0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9p bl90ZXN0X211bHRpXzEgV0hFUkUgYSA+IEFOWShBUlJBWVsxMTNdKTsKKyBjb3VudCAKKy0t LS0tLS0KKyAgIDQ3NworKDEgcm93KQorCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1Qg Q09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfbXVsdGlfMSBXSEVSRSBhID4gQU5ZKEFSUkFZ WzExMywgTlVMTF0pOworICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAg ICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ ICBCaXRtYXAgSGVhcCBTY2FuIG9uIGJyaW5faW5fdGVzdF9tdWx0aV8xCisgICAgICAgICBS ZWNoZWNrIENvbmQ6IChhID4gQU5ZICgnezExMyxOVUxMfSc6OmludGVnZXJbXSkpCisgICAg ICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gYnJpbl9pbl90ZXN0X211bHRpXzFfaWR4 XzEKKyAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChhID4gQU5ZICgnezExMyxOVUxMfSc6 OmludGVnZXJbXSkpCisoNSByb3dzKQorCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2lu X3Rlc3RfbXVsdGlfMSBXSEVSRSBhID4gQU5ZKEFSUkFZWzExMywgTlVMTF0pOworIGNvdW50 IAorLS0tLS0tLQorICAgNDc3CisoMSByb3cpCisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NF TEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF9tdWx0aV8xIFdIRVJFIGEgPiBBTlko QVJSQVlbTlVMTCwgTlVMTF06OmludFtdKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg IFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBB Z2dyZWdhdGUKKyAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIGJyaW5faW5fdGVzdF9tdWx0 aV8xCisgICAgICAgICBSZWNoZWNrIENvbmQ6IChhID4gQU5ZICgne05VTEwsTlVMTH0nOjpp bnRlZ2VyW10pKQorICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIGJyaW5faW5f dGVzdF9tdWx0aV8xX2lkeF8xCisgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoYSA+IEFO WSAoJ3tOVUxMLE5VTEx9Jzo6aW50ZWdlcltdKSkKKyg1IHJvd3MpCisKK1NFTEVDVCBDT1VO VCgqKSBGUk9NIGJyaW5faW5fdGVzdF9tdWx0aV8xIFdIRVJFIGEgPiBBTlkoQVJSQVlbTlVM TCwgTlVMTF06OmludFtdKTsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICAgMAorKDEgcm93KQor CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rl c3RfbXVsdGlfMSBXSEVSRSBhID49IEFOWShBUlJBWVsxMTMsIDE3N10pOworICAgICAgICAg ICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIGJy aW5faW5fdGVzdF9tdWx0aV8xCisgICAgICAgICBSZWNoZWNrIENvbmQ6IChhID49IEFOWSAo J3sxMTMsMTc3fSc6OmludGVnZXJbXSkpCisgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNj YW4gb24gYnJpbl9pbl90ZXN0X211bHRpXzFfaWR4XzEKKyAgICAgICAgICAgICAgIEluZGV4 IENvbmQ6IChhID49IEFOWSAoJ3sxMTMsMTc3fSc6OmludGVnZXJbXSkpCisoNSByb3dzKQor CitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfbXVsdGlfMSBXSEVSRSBhID49 IEFOWShBUlJBWVsxMTMsIDE3N10pOworIGNvdW50IAorLS0tLS0tLQorICAgNDg1CisoMSBy b3cpCisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5f aW5fdGVzdF9tdWx0aV8xIFdIRVJFIGEgPiBBTlkoQVJSQVlbMTEzLCAxNzcsIE5VTExdKTsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBCaXRt YXAgSGVhcCBTY2FuIG9uIGJyaW5faW5fdGVzdF9tdWx0aV8xCisgICAgICAgICBSZWNoZWNr IENvbmQ6IChhID4gQU5ZICgnezExMywxNzcsTlVMTH0nOjppbnRlZ2VyW10pKQorICAgICAg ICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIGJyaW5faW5fdGVzdF9tdWx0aV8xX2lkeF8x CisgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoYSA+IEFOWSAoJ3sxMTMsMTc3LE5VTEx9 Jzo6aW50ZWdlcltdKSkKKyg1IHJvd3MpCisKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5f aW5fdGVzdF9tdWx0aV8xIFdIRVJFIGEgPiBBTlkoQVJSQVlbMTEzLCAxNzcsIE5VTExdKTsK KyBjb3VudCAKKy0tLS0tLS0KKyAgIDQ3NworKDEgcm93KQorCitFWFBMQUlOIChDT1NUUyBP RkYpCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfbXVsdGlfMSBXSEVSRSBh ID4gQU5ZKEFSUkFZWzExMywgMTc3LCAyNV0pOworICAgICAgICAgICAgICAgICAgICAgICAg ICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgQWdncmVnYXRlCisgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiBicmluX2luX3Rlc3Rf bXVsdGlfMQorICAgICAgICAgUmVjaGVjayBDb25kOiAoYSA+IEFOWSAoJ3sxMTMsMTc3LDI1 fSc6OmludGVnZXJbXSkpCisgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gYnJp bl9pbl90ZXN0X211bHRpXzFfaWR4XzEKKyAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChh ID4gQU5ZICgnezExMywxNzcsMjV9Jzo6aW50ZWdlcltdKSkKKyg1IHJvd3MpCisKK1NFTEVD VCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF9tdWx0aV8xIFdIRVJFIGEgPiBBTlkoQVJS QVlbMTEzLCAxNzcsIDI1XSk7CisgY291bnQgCistLS0tLS0tCisgICA5MTcKKygxIHJvdykK KworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90 ZXN0X211bHRpXzEgV0hFUkUgYSA+PSBBTlkoQVJSQVlbTlVMTCwgMTEzLCAxNzcsIDI1XSk7 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAg IC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIGJyaW5faW5fdGVzdF9tdWx0aV8xCisgICAgICAg ICBSZWNoZWNrIENvbmQ6IChhID49IEFOWSAoJ3tOVUxMLDExMywxNzcsMjV9Jzo6aW50ZWdl cltdKSkKKyAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBicmluX2luX3Rlc3Rf bXVsdGlfMV9pZHhfMQorICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKGEgPj0gQU5ZICgn e05VTEwsMTEzLDE3NywyNX0nOjppbnRlZ2VyW10pKQorKDUgcm93cykKKworU0VMRUNUIENP VU5UKCopIEZST00gYnJpbl9pbl90ZXN0X211bHRpXzEgV0hFUkUgYSA+PSBBTlkoQVJSQVlb TlVMTCwgMTEzLCAxNzcsIDI1XSk7CisgY291bnQgCistLS0tLS0tCisgICA5MjUKKygxIHJv dykKKworLS0gYmlnaW50OiBlcXVhbGl0eQorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNU IENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0X211bHRpXzEgV0hFUkUgYiBJTiAoODIpOwor ICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4g b24gYnJpbl9pbl90ZXN0X211bHRpXzEKKyAgICAgICAgIFJlY2hlY2sgQ29uZDogKGIgPSA4 MikKKyAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBicmluX2luX3Rlc3RfbXVs dGlfMV9pZHhfMgorICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKGIgPSA4MikKKyg1IHJv d3MpCisKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF9tdWx0aV8xIFdIRVJF IGIgSU4gKDgyKTsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICAxMAorKDEgcm93KQorCitFWFBM QUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfbXVs dGlfMSBXSEVSRSBiIElOICg4MiwgTlVMTCk7CisgICAgICAgICAgICAgICAgICAgICAgICAg UVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVn YXRlCisgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiBicmluX2luX3Rlc3RfbXVsdGlfMQor ICAgICAgICAgUmVjaGVjayBDb25kOiAoYiA9IEFOWSAoJ3s4MixOVUxMfSc6OmJpZ2ludFtd KSkKKyAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBicmluX2luX3Rlc3RfbXVs dGlfMV9pZHhfMgorICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKGIgPSBBTlkgKCd7ODIs TlVMTH0nOjpiaWdpbnRbXSkpCisoNSByb3dzKQorCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBi cmluX2luX3Rlc3RfbXVsdGlfMSBXSEVSRSBiIElOICg4MiwgTlVMTCk7CisgY291bnQgCist LS0tLS0tCisgICAgMTAKKygxIHJvdykKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNU IENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0X211bHRpXzEgV0hFUkUgYiBJTiAoTlVMTCwg TlVMTCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAg ICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEJpdG1h cCBIZWFwIFNjYW4gb24gYnJpbl9pbl90ZXN0X211bHRpXzEKKyAgICAgICAgIFJlY2hlY2sg Q29uZDogKGIgPSBBTlkgKCd7TlVMTCxOVUxMfSc6OmJpZ2ludFtdKSkKKyAgICAgICAgIC0+ ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBicmluX2luX3Rlc3RfbXVsdGlfMV9pZHhfMgorICAg ICAgICAgICAgICAgSW5kZXggQ29uZDogKGIgPSBBTlkgKCd7TlVMTCxOVUxMfSc6OmJpZ2lu dFtdKSkKKyg1IHJvd3MpCisKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF9t dWx0aV8xIFdIRVJFIGIgSU4gKE5VTEwsIE5VTEwpOworIGNvdW50IAorLS0tLS0tLQorICAg ICAwCisoMSByb3cpCisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBG Uk9NIGJyaW5faW5fdGVzdF9tdWx0aV8xIFdIRVJFIGIgSU4gKDgyLCA0MSk7CisgICAgICAg ICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiBicmlu X2luX3Rlc3RfbXVsdGlfMQorICAgICAgICAgUmVjaGVjayBDb25kOiAoYiA9IEFOWSAoJ3s4 Miw0MX0nOjpiaWdpbnRbXSkpCisgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24g YnJpbl9pbl90ZXN0X211bHRpXzFfaWR4XzIKKyAgICAgICAgICAgICAgIEluZGV4IENvbmQ6 IChiID0gQU5ZICgnezgyLDQxfSc6OmJpZ2ludFtdKSkKKyg1IHJvd3MpCisKK1NFTEVDVCBD T1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF9tdWx0aV8xIFdIRVJFIGIgSU4gKDgyLCA0MSk7 CisgY291bnQgCistLS0tLS0tCisgICAgMjAKKygxIHJvdykKKworRVhQTEFJTiAoQ09TVFMg T0ZGKQorU0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0X211bHRpXzEgV0hFUkUg YiBJTiAoLTgyLCAtMTQxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExB TiAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAg LT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gYnJpbl9pbl90ZXN0X211bHRpXzEKKyAgICAgICAg IFJlY2hlY2sgQ29uZDogKGIgPSBBTlkgKCd7LTgyLC0xNDF9Jzo6YmlnaW50W10pKQorICAg ICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIGJyaW5faW5fdGVzdF9tdWx0aV8xX2lk eF8yCisgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoYiA9IEFOWSAoJ3stODIsLTE0MX0n OjpiaWdpbnRbXSkpCisoNSByb3dzKQorCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2lu X3Rlc3RfbXVsdGlfMSBXSEVSRSBiIElOICgtODIsIC0xNDEpOworIGNvdW50IAorLS0tLS0t LQorICAgICAwCisoMSByb3cpCisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VO VCgqKSBGUk9NIGJyaW5faW5fdGVzdF9tdWx0aV8xIFdIRVJFIGIgSU4gKDM4MiwgNDQxKTsK KyAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAg ICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBCaXRtYXAgSGVhcCBTY2Fu IG9uIGJyaW5faW5fdGVzdF9tdWx0aV8xCisgICAgICAgICBSZWNoZWNrIENvbmQ6IChiID0g QU5ZICgnezM4Miw0NDF9Jzo6YmlnaW50W10pKQorICAgICAgICAgLT4gIEJpdG1hcCBJbmRl eCBTY2FuIG9uIGJyaW5faW5fdGVzdF9tdWx0aV8xX2lkeF8yCisgICAgICAgICAgICAgICBJ bmRleCBDb25kOiAoYiA9IEFOWSAoJ3szODIsNDQxfSc6OmJpZ2ludFtdKSkKKyg1IHJvd3Mp CisKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF9tdWx0aV8xIFdIRVJFIGIg SU4gKDM4MiwgNDQxKTsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICAgMAorKDEgcm93KQorCitF WFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3Rf bXVsdGlfMSBXSEVSRSBiIElOICg4MiwgNDEsIE5VTEwpOworICAgICAgICAgICAgICAgICAg ICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gYnJpbl9pbl90 ZXN0X211bHRpXzEKKyAgICAgICAgIFJlY2hlY2sgQ29uZDogKGIgPSBBTlkgKCd7ODIsNDEs TlVMTH0nOjpiaWdpbnRbXSkpCisgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24g YnJpbl9pbl90ZXN0X211bHRpXzFfaWR4XzIKKyAgICAgICAgICAgICAgIEluZGV4IENvbmQ6 IChiID0gQU5ZICgnezgyLDQxLE5VTEx9Jzo6YmlnaW50W10pKQorKDUgcm93cykKKworU0VM RUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0X211bHRpXzEgV0hFUkUgYiBJTiAoODIs IDQxLCBOVUxMKTsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICAyMAorKDEgcm93KQorCitFWFBM QUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfbXVs dGlfMSBXSEVSRSBiIElOICg4MiwgNDEsIDE1KTsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFn Z3JlZ2F0ZQorICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gYnJpbl9pbl90ZXN0X211bHRp XzEKKyAgICAgICAgIFJlY2hlY2sgQ29uZDogKGIgPSBBTlkgKCd7ODIsNDEsMTV9Jzo6Ymln aW50W10pKQorICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIGJyaW5faW5fdGVz dF9tdWx0aV8xX2lkeF8yCisgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoYiA9IEFOWSAo J3s4Miw0MSwxNX0nOjpiaWdpbnRbXSkpCisoNSByb3dzKQorCitTRUxFQ1QgQ09VTlQoKikg RlJPTSBicmluX2luX3Rlc3RfbXVsdGlfMSBXSEVSRSBiIElOICg4MiwgNDEsIDE1KTsKKyBj b3VudCAKKy0tLS0tLS0KKyAgICAyNQorKDEgcm93KQorCitFWFBMQUlOIChDT1NUUyBPRkYp CitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfbXVsdGlfMSBXSEVSRSBiIElO IChOVUxMLCA4MiwgNDEsIDE1KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVS WSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBB Z2dyZWdhdGUKKyAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIGJyaW5faW5fdGVzdF9tdWx0 aV8xCisgICAgICAgICBSZWNoZWNrIENvbmQ6IChiID0gQU5ZICgne05VTEwsODIsNDEsMTV9 Jzo6YmlnaW50W10pKQorICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIGJyaW5f aW5fdGVzdF9tdWx0aV8xX2lkeF8yCisgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoYiA9 IEFOWSAoJ3tOVUxMLDgyLDQxLDE1fSc6OmJpZ2ludFtdKSkKKyg1IHJvd3MpCisKK1NFTEVD VCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF9tdWx0aV8xIFdIRVJFIGIgSU4gKE5VTEws IDgyLCA0MSwgMTUpOworIGNvdW50IAorLS0tLS0tLQorICAgIDI1CisoMSByb3cpCisKKy0t IGJpZ2ludDogbGVzcyB0aGFuCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQo KikgRlJPTSBicmluX2luX3Rlc3RfbXVsdGlfMSBXSEVSRSBiIDwgQU5ZKEFSUkFZWzgyXSk7 CisgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgQml0bWFwIEhlYXAgU2Nh biBvbiBicmluX2luX3Rlc3RfbXVsdGlfMQorICAgICAgICAgUmVjaGVjayBDb25kOiAoYiA8 IEFOWSAoJ3s4Mn0nOjppbnRlZ2VyW10pKQorICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBT Y2FuIG9uIGJyaW5faW5fdGVzdF9tdWx0aV8xX2lkeF8yCisgICAgICAgICAgICAgICBJbmRl eCBDb25kOiAoYiA8IEFOWSAoJ3s4Mn0nOjppbnRlZ2VyW10pKQorKDUgcm93cykKKworU0VM RUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0X211bHRpXzEgV0hFUkUgYiA8IEFOWShB UlJBWVs4Ml0pOworIGNvdW50IAorLS0tLS0tLQorICAgNjc0CisoMSByb3cpCisKK0VYUExB SU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF9tdWx0 aV8xIFdIRVJFIGIgPCBBTlkoQVJSQVlbODIsIE5VTExdKTsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIEFnZ3JlZ2F0ZQorICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gYnJpbl9pbl90ZXN0 X211bHRpXzEKKyAgICAgICAgIFJlY2hlY2sgQ29uZDogKGIgPCBBTlkgKCd7ODIsTlVMTH0n OjppbnRlZ2VyW10pKQorICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIGJyaW5f aW5fdGVzdF9tdWx0aV8xX2lkeF8yCisgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoYiA8 IEFOWSAoJ3s4MixOVUxMfSc6OmludGVnZXJbXSkpCisoNSByb3dzKQorCitTRUxFQ1QgQ09V TlQoKikgRlJPTSBicmluX2luX3Rlc3RfbXVsdGlfMSBXSEVSRSBiIDwgQU5ZKEFSUkFZWzgy LCBOVUxMXSk7CisgY291bnQgCistLS0tLS0tCisgICA2NzQKKygxIHJvdykKKworRVhQTEFJ TiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0X211bHRp XzEgV0hFUkUgYiA8IEFOWShBUlJBWVtOVUxMLCBOVUxMXTo6YmlnaW50W10pOworICAgICAg ICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9u IGJyaW5faW5fdGVzdF9tdWx0aV8xCisgICAgICAgICBSZWNoZWNrIENvbmQ6IChiIDwgQU5Z ICgne05VTEwsTlVMTH0nOjpiaWdpbnRbXSkpCisgICAgICAgICAtPiAgQml0bWFwIEluZGV4 IFNjYW4gb24gYnJpbl9pbl90ZXN0X211bHRpXzFfaWR4XzIKKyAgICAgICAgICAgICAgIElu ZGV4IENvbmQ6IChiIDwgQU5ZICgne05VTEwsTlVMTH0nOjpiaWdpbnRbXSkpCisoNSByb3dz KQorCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfbXVsdGlfMSBXSEVSRSBi IDwgQU5ZKEFSUkFZW05VTEwsIE5VTExdOjpiaWdpbnRbXSk7CisgY291bnQgCistLS0tLS0t CisgICAgIDAKKygxIHJvdykKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5U KCopIEZST00gYnJpbl9pbl90ZXN0X211bHRpXzEgV0hFUkUgYiA8PSBBTlkoQVJSQVlbODIs IDQxXSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAg ICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgQml0bWFwIEhl YXAgU2NhbiBvbiBicmluX2luX3Rlc3RfbXVsdGlfMQorICAgICAgICAgUmVjaGVjayBDb25k OiAoYiA8PSBBTlkgKCd7ODIsNDF9Jzo6aW50ZWdlcltdKSkKKyAgICAgICAgIC0+ICBCaXRt YXAgSW5kZXggU2NhbiBvbiBicmluX2luX3Rlc3RfbXVsdGlfMV9pZHhfMgorICAgICAgICAg ICAgICAgSW5kZXggQ29uZDogKGIgPD0gQU5ZICgnezgyLDQxfSc6OmludGVnZXJbXSkpCiso NSByb3dzKQorCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfbXVsdGlfMSBX SEVSRSBiIDw9IEFOWShBUlJBWVs4MiwgNDFdKTsKKyBjb3VudCAKKy0tLS0tLS0KKyAgIDY4 NAorKDEgcm93KQorCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgRlJP TSBicmluX2luX3Rlc3RfbXVsdGlfMSBXSEVSRSBiIDwgQU5ZKEFSUkFZWzgyLCA0MSwgTlVM TF0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgQml0 bWFwIEhlYXAgU2NhbiBvbiBicmluX2luX3Rlc3RfbXVsdGlfMQorICAgICAgICAgUmVjaGVj ayBDb25kOiAoYiA8IEFOWSAoJ3s4Miw0MSxOVUxMfSc6OmludGVnZXJbXSkpCisgICAgICAg ICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gYnJpbl9pbl90ZXN0X211bHRpXzFfaWR4XzIK KyAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChiIDwgQU5ZICgnezgyLDQxLE5VTEx9Jzo6 aW50ZWdlcltdKSkKKyg1IHJvd3MpCisKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5f dGVzdF9tdWx0aV8xIFdIRVJFIGIgPCBBTlkoQVJSQVlbODIsIDQxLCBOVUxMXSk7CisgY291 bnQgCistLS0tLS0tCisgICA2NzQKKygxIHJvdykKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQor U0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0X211bHRpXzEgV0hFUkUgYiA8PSBB TlkoQVJSQVlbODIsIDQxLCAxNV0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVF UlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3Jl Z2F0ZQorICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gYnJpbl9pbl90ZXN0X211bHRpXzEK KyAgICAgICAgIFJlY2hlY2sgQ29uZDogKGIgPD0gQU5ZICgnezgyLDQxLDE1fSc6OmludGVn ZXJbXSkpCisgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gYnJpbl9pbl90ZXN0 X211bHRpXzFfaWR4XzIKKyAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChiIDw9IEFOWSAo J3s4Miw0MSwxNX0nOjppbnRlZ2VyW10pKQorKDUgcm93cykKKworU0VMRUNUIENPVU5UKCop IEZST00gYnJpbl9pbl90ZXN0X211bHRpXzEgV0hFUkUgYiA8PSBBTlkoQVJSQVlbODIsIDQx LCAxNV0pOworIGNvdW50IAorLS0tLS0tLQorICAgNjg0CisoMSByb3cpCisKK0VYUExBSU4g KENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF9tdWx0aV8x IFdIRVJFIGIgPCBBTlkoQVJSQVlbTlVMTCwgODIsIDQxLCAxNV0pOworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgQml0bWFwIEhlYXAgU2Nh biBvbiBicmluX2luX3Rlc3RfbXVsdGlfMQorICAgICAgICAgUmVjaGVjayBDb25kOiAoYiA8 IEFOWSAoJ3tOVUxMLDgyLDQxLDE1fSc6OmludGVnZXJbXSkpCisgICAgICAgICAtPiAgQml0 bWFwIEluZGV4IFNjYW4gb24gYnJpbl9pbl90ZXN0X211bHRpXzFfaWR4XzIKKyAgICAgICAg ICAgICAgIEluZGV4IENvbmQ6IChiIDwgQU5ZICgne05VTEwsODIsNDEsMTV9Jzo6aW50ZWdl cltdKSkKKyg1IHJvd3MpCisKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF9t dWx0aV8xIFdIRVJFIGIgPCBBTlkoQVJSQVlbTlVMTCwgODIsIDQxLCAxNV0pOworIGNvdW50 IAorLS0tLS0tLQorICAgNjc0CisoMSByb3cpCisKKy0tIGJpZ2ludDogZ3JlYXRlciB0aGFu CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rl c3RfbXVsdGlfMSBXSEVSRSBiID4gQU5ZKEFSUkFZWzgyXSk7CisgICAgICAgICAgICAgICAg ICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgQWdncmVnYXRlCisgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiBicmluX2luX3Rlc3Rf bXVsdGlfMQorICAgICAgICAgUmVjaGVjayBDb25kOiAoYiA+IEFOWSAoJ3s4Mn0nOjppbnRl Z2VyW10pKQorICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIGJyaW5faW5fdGVz dF9tdWx0aV8xX2lkeF8yCisgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoYiA+IEFOWSAo J3s4Mn0nOjppbnRlZ2VyW10pKQorKDUgcm93cykKKworU0VMRUNUIENPVU5UKCopIEZST00g YnJpbl9pbl90ZXN0X211bHRpXzEgV0hFUkUgYiA+IEFOWShBUlJBWVs4Ml0pOworIGNvdW50 IAorLS0tLS0tLQorICAgMzE2CisoMSByb3cpCisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NF TEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF9tdWx0aV8xIFdIRVJFIGIgPiBBTlko QVJSQVlbODIsIE5VTExdKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExB TiAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAg LT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gYnJpbl9pbl90ZXN0X211bHRpXzEKKyAgICAgICAg IFJlY2hlY2sgQ29uZDogKGIgPiBBTlkgKCd7ODIsTlVMTH0nOjppbnRlZ2VyW10pKQorICAg ICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIGJyaW5faW5fdGVzdF9tdWx0aV8xX2lk eF8yCisgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoYiA+IEFOWSAoJ3s4MixOVUxMfSc6 OmludGVnZXJbXSkpCisoNSByb3dzKQorCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2lu X3Rlc3RfbXVsdGlfMSBXSEVSRSBiID4gQU5ZKEFSUkFZWzgyLCBOVUxMXSk7CisgY291bnQg CistLS0tLS0tCisgICAzMTYKKygxIHJvdykKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VM RUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0X211bHRpXzEgV0hFUkUgYiA+IEFOWShB UlJBWVtOVUxMLCBOVUxMXTo6YmlnaW50W10pOworICAgICAgICAgICAgICAgICAgICAgICAg ICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBB Z2dyZWdhdGUKKyAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIGJyaW5faW5fdGVzdF9tdWx0 aV8xCisgICAgICAgICBSZWNoZWNrIENvbmQ6IChiID4gQU5ZICgne05VTEwsTlVMTH0nOjpi aWdpbnRbXSkpCisgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gYnJpbl9pbl90 ZXN0X211bHRpXzFfaWR4XzIKKyAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChiID4gQU5Z ICgne05VTEwsTlVMTH0nOjpiaWdpbnRbXSkpCisoNSByb3dzKQorCitTRUxFQ1QgQ09VTlQo KikgRlJPTSBicmluX2luX3Rlc3RfbXVsdGlfMSBXSEVSRSBiID4gQU5ZKEFSUkFZW05VTEws IE5VTExdOjpiaWdpbnRbXSk7CisgY291bnQgCistLS0tLS0tCisgICAgIDAKKygxIHJvdykK KworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90 ZXN0X211bHRpXzEgV0hFUkUgYiA+IEFOWShBUlJBWVs4MiwgNDFdKTsKKyAgICAgICAgICAg ICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIGJyaW5faW5f dGVzdF9tdWx0aV8xCisgICAgICAgICBSZWNoZWNrIENvbmQ6IChiID4gQU5ZICgnezgyLDQx fSc6OmludGVnZXJbXSkpCisgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gYnJp bl9pbl90ZXN0X211bHRpXzFfaWR4XzIKKyAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChi ID4gQU5ZICgnezgyLDQxfSc6OmludGVnZXJbXSkpCisoNSByb3dzKQorCitTRUxFQ1QgQ09V TlQoKikgRlJPTSBicmluX2luX3Rlc3RfbXVsdGlfMSBXSEVSRSBiID4gQU5ZKEFSUkFZWzgy LCA0MV0pOworIGNvdW50IAorLS0tLS0tLQorICAgNzI2CisoMSByb3cpCisKK0VYUExBSU4g KENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF9tdWx0aV8x IFdIRVJFIGIgPj0gQU5ZKEFSUkFZWzgyLCA0MSwgTlVMTF0pOworICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIGJy aW5faW5fdGVzdF9tdWx0aV8xCisgICAgICAgICBSZWNoZWNrIENvbmQ6IChiID49IEFOWSAo J3s4Miw0MSxOVUxMfSc6OmludGVnZXJbXSkpCisgICAgICAgICAtPiAgQml0bWFwIEluZGV4 IFNjYW4gb24gYnJpbl9pbl90ZXN0X211bHRpXzFfaWR4XzIKKyAgICAgICAgICAgICAgIElu ZGV4IENvbmQ6IChiID49IEFOWSAoJ3s4Miw0MSxOVUxMfSc6OmludGVnZXJbXSkpCisoNSBy b3dzKQorCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfbXVsdGlfMSBXSEVS RSBiID49IEFOWShBUlJBWVs4MiwgNDEsIE5VTExdKTsKKyBjb3VudCAKKy0tLS0tLS0KKyAg IDczNgorKDEgcm93KQorCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikg RlJPTSBicmluX2luX3Rlc3RfbXVsdGlfMSBXSEVSRSBiID49IEFOWShBUlJBWVs4MiwgNDEs IDE1XSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAg ICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgQml0 bWFwIEhlYXAgU2NhbiBvbiBicmluX2luX3Rlc3RfbXVsdGlfMQorICAgICAgICAgUmVjaGVj ayBDb25kOiAoYiA+PSBBTlkgKCd7ODIsNDEsMTV9Jzo6aW50ZWdlcltdKSkKKyAgICAgICAg IC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBicmluX2luX3Rlc3RfbXVsdGlfMV9pZHhfMgor ICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKGIgPj0gQU5ZICgnezgyLDQxLDE1fSc6Omlu dGVnZXJbXSkpCisoNSByb3dzKQorCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rl c3RfbXVsdGlfMSBXSEVSRSBiID49IEFOWShBUlJBWVs4MiwgNDEsIDE1XSk7CisgY291bnQg CistLS0tLS0tCisgICA5NjEKKygxIHJvdykKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VM RUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0X211bHRpXzEgV0hFUkUgYiA+IEFOWShB UlJBWVtOVUxMLCA4MiwgNDEsIDE1XSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIGJyaW5faW5fdGVz dF9tdWx0aV8xCisgICAgICAgICBSZWNoZWNrIENvbmQ6IChiID4gQU5ZICgne05VTEwsODIs NDEsMTV9Jzo6aW50ZWdlcltdKSkKKyAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBv biBicmluX2luX3Rlc3RfbXVsdGlfMV9pZHhfMgorICAgICAgICAgICAgICAgSW5kZXggQ29u ZDogKGIgPiBBTlkgKCd7TlVMTCw4Miw0MSwxNX0nOjppbnRlZ2VyW10pKQorKDUgcm93cykK KworU0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0X211bHRpXzEgV0hFUkUgYiA+ IEFOWShBUlJBWVtOVUxMLCA4MiwgNDEsIDE1XSk7CisgY291bnQgCistLS0tLS0tCisgICA5 NTYKKygxIHJvdykKKworRFJPUCBUQUJMRSBicmluX2luX3Rlc3RfbXVsdGlfMTsKK1JFU0VU IGVuYWJsZV9zZXFzY2FuOworLS0gZG8gc29tZSB0ZXN0cyBvbiBJTiBjbGF1c2VzIGZvciB2 YXJsZW5hIGRhdGEgdHlwZXMKK0NSRUFURSBUQUJMRSBicmluX2luX3Rlc3RfbXVsdGlfMiAo YSBVVUlEKSBXSVRIIChmaWxsZmFjdG9yPTEwKTsKK0lOU0VSVCBJTlRPIGJyaW5faW5fdGVz dF9tdWx0aV8yCitTRUxFQ1Qgdjo6dXVpZCBGUk9NIChTRUxFQ1Qgcm93X251bWJlcigpIE9W RVIgKE9SREVSIEJZIHYpIGMsIHYgRlJPTSAoU0VMRUNUIG1kNSgoaS8xMyk6OnRleHQpIEFT IHYgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDAwKSBzKGkpKSBmb28pIGJhciBPUkRFUiBC WSBjICsgMjUgKiByYW5kb20oKTsKK0NSRUFURSBJTkRFWCBicmluX2luX3Rlc3RfbXVsdGlf Ml9pZHggT04gYnJpbl9pbl90ZXN0X211bHRpXzIgVVNJTkcgYnJpbiAoYSB1dWlkX21pbm1h eF9tdWx0aV9vcHMpIFdJVEggKHBhZ2VzX3Blcl9yYW5nZT0xKTsKK1NFVCBlbmFibGVfc2Vx c2Nhbj1vZmY7CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBi cmluX2luX3Rlc3RfbXVsdGlfMiBXSEVSRSBhIElOICgnMzNlNzVmZjAtOWRkNi0wMWJiLWU2 OWYtMzUxMDM5MTUyMTg5Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4g b24gYnJpbl9pbl90ZXN0X211bHRpXzIKKyAgICAgICAgIFJlY2hlY2sgQ29uZDogKGEgPSAn MzNlNzVmZjAtOWRkNi0wMWJiLWU2OWYtMzUxMDM5MTUyMTg5Jzo6dXVpZCkKKyAgICAgICAg IC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBicmluX2luX3Rlc3RfbXVsdGlfMl9pZHgKKyAg ICAgICAgICAgICAgIEluZGV4IENvbmQ6IChhID0gJzMzZTc1ZmYwLTlkZDYtMDFiYi1lNjlm LTM1MTAzOTE1MjE4OSc6OnV1aWQpCisoNSByb3dzKQorCitTRUxFQ1QgQ09VTlQoKikgRlJP TSBicmluX2luX3Rlc3RfbXVsdGlfMiBXSEVSRSBhIElOICgnMzNlNzVmZjAtOWRkNi0wMWJi LWU2OWYtMzUxMDM5MTUyMTg5Jyk7CisgY291bnQgCistLS0tLS0tCisgICAgMTMKKygxIHJv dykKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9p bl90ZXN0X211bHRpXzIgV0hFUkUgYSBJTiAoJzMzZTc1ZmYwLTlkZDYtMDFiYi1lNjlmLTM1 MTAzOTE1MjE4OScsIE5VTEwpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBZ2dy ZWdhdGUKKyAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIGJyaW5faW5fdGVzdF9tdWx0aV8y CisgICAgICAgICBSZWNoZWNrIENvbmQ6IChhID0gQU5ZICgnezMzZTc1ZmYwLTlkZDYtMDFi Yi1lNjlmLTM1MTAzOTE1MjE4OSxOVUxMfSc6OnV1aWRbXSkpCisgICAgICAgICAtPiAgQml0 bWFwIEluZGV4IFNjYW4gb24gYnJpbl9pbl90ZXN0X211bHRpXzJfaWR4CisgICAgICAgICAg ICAgICBJbmRleCBDb25kOiAoYSA9IEFOWSAoJ3szM2U3NWZmMC05ZGQ2LTAxYmItZTY5Zi0z NTEwMzkxNTIxODksTlVMTH0nOjp1dWlkW10pKQorKDUgcm93cykKKworU0VMRUNUIENPVU5U KCopIEZST00gYnJpbl9pbl90ZXN0X211bHRpXzIgV0hFUkUgYSBJTiAoJzMzZTc1ZmYwLTlk ZDYtMDFiYi1lNjlmLTM1MTAzOTE1MjE4OScsIE5VTEwpOworIGNvdW50IAorLS0tLS0tLQor ICAgIDEzCisoMSByb3cpCisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgq KSBGUk9NIGJyaW5faW5fdGVzdF9tdWx0aV8yIFdIRVJFIGEgSU4gKE5VTEwsIE5VTEwpOwor ICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4g b24gYnJpbl9pbl90ZXN0X211bHRpXzIKKyAgICAgICAgIFJlY2hlY2sgQ29uZDogKGEgPSBB TlkgKCd7TlVMTCxOVUxMfSc6OnV1aWRbXSkpCisgICAgICAgICAtPiAgQml0bWFwIEluZGV4 IFNjYW4gb24gYnJpbl9pbl90ZXN0X211bHRpXzJfaWR4CisgICAgICAgICAgICAgICBJbmRl eCBDb25kOiAoYSA9IEFOWSAoJ3tOVUxMLE5VTEx9Jzo6dXVpZFtdKSkKKyg1IHJvd3MpCisK K1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF9tdWx0aV8yIFdIRVJFIGEgSU4g KE5VTEwsIE5VTEwpOworIGNvdW50IAorLS0tLS0tLQorICAgICAwCisoMSByb3cpCisKK0VY UExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF9t dWx0aV8yIFdIRVJFIGEgSU4gKCczM2U3NWZmMC05ZGQ2LTAxYmItZTY5Zi0zNTEwMzkxNTIx ODknLCAnZjQ1N2M1NDUtYTlkZS1kODhmLTE4ZWMtZWU0NzE0NWE3MmMwJyk7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVS WSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBCaXRt YXAgSGVhcCBTY2FuIG9uIGJyaW5faW5fdGVzdF9tdWx0aV8yCisgICAgICAgICBSZWNoZWNr IENvbmQ6IChhID0gQU5ZICgnezMzZTc1ZmYwLTlkZDYtMDFiYi1lNjlmLTM1MTAzOTE1MjE4 OSxmNDU3YzU0NS1hOWRlLWQ4OGYtMThlYy1lZTQ3MTQ1YTcyYzB9Jzo6dXVpZFtdKSkKKyAg ICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBicmluX2luX3Rlc3RfbXVsdGlfMl9p ZHgKKyAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChhID0gQU5ZICgnezMzZTc1ZmYwLTlk ZDYtMDFiYi1lNjlmLTM1MTAzOTE1MjE4OSxmNDU3YzU0NS1hOWRlLWQ4OGYtMThlYy1lZTQ3 MTQ1YTcyYzB9Jzo6dXVpZFtdKSkKKyg1IHJvd3MpCisKK1NFTEVDVCBDT1VOVCgqKSBGUk9N IGJyaW5faW5fdGVzdF9tdWx0aV8yIFdIRVJFIGEgSU4gKCczM2U3NWZmMC05ZGQ2LTAxYmIt ZTY5Zi0zNTEwMzkxNTIxODknLCAnZjQ1N2M1NDUtYTlkZS1kODhmLTE4ZWMtZWU0NzE0NWE3 MmMwJyk7CisgY291bnQgCistLS0tLS0tCisgICAgMjYKKygxIHJvdykKKworRVhQTEFJTiAo Q09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0X211bHRpXzIg V0hFUkUgYSBJTiAoJzMzZTc1ZmYwLTlkZDYtMDFiYi1lNjlmLTM1MTAzOTE1MjE4OScsICdm NDU3YzU0NS1hOWRlLWQ4OGYtMThlYy1lZTQ3MTQ1YTcyYzAnLCBOVUxMKTsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFV RVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAg IC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIGJyaW5faW5fdGVzdF9tdWx0aV8yCisgICAgICAg ICBSZWNoZWNrIENvbmQ6IChhID0gQU5ZICgnezMzZTc1ZmYwLTlkZDYtMDFiYi1lNjlmLTM1 MTAzOTE1MjE4OSxmNDU3YzU0NS1hOWRlLWQ4OGYtMThlYy1lZTQ3MTQ1YTcyYzAsTlVMTH0n Ojp1dWlkW10pKQorICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIGJyaW5faW5f dGVzdF9tdWx0aV8yX2lkeAorICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKGEgPSBBTlkg KCd7MzNlNzVmZjAtOWRkNi0wMWJiLWU2OWYtMzUxMDM5MTUyMTg5LGY0NTdjNTQ1LWE5ZGUt ZDg4Zi0xOGVjLWVlNDcxNDVhNzJjMCxOVUxMfSc6OnV1aWRbXSkpCisoNSByb3dzKQorCitT RUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfbXVsdGlfMiBXSEVSRSBhIElOICgn MzNlNzVmZjAtOWRkNi0wMWJiLWU2OWYtMzUxMDM5MTUyMTg5JywgJ2Y0NTdjNTQ1LWE5ZGUt ZDg4Zi0xOGVjLWVlNDcxNDVhNzJjMCcsIE5VTEwpOworIGNvdW50IAorLS0tLS0tLQorICAg IDI2CisoMSByb3cpCisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBG Uk9NIGJyaW5faW5fdGVzdF9tdWx0aV8yIFdIRVJFIGEgSU4gKCczM2U3NWZmMC05ZGQ2LTAx YmItZTY5Zi0zNTEwMzkxNTIxODknLCAnZjQ1N2M1NDUtYTlkZS1kODhmLTE4ZWMtZWU0NzE0 NWE3MmMwJywgJ2M1MWNlNDEwLWMxMjQtYTEwZS0wZGI1LWU0Yjk3ZmMyYWYzOScpOworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyBBZ2dyZWdhdGUKKyAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIGJyaW5faW5fdGVzdF9t dWx0aV8yCisgICAgICAgICBSZWNoZWNrIENvbmQ6IChhID0gQU5ZICgnezMzZTc1ZmYwLTlk ZDYtMDFiYi1lNjlmLTM1MTAzOTE1MjE4OSxmNDU3YzU0NS1hOWRlLWQ4OGYtMThlYy1lZTQ3 MTQ1YTcyYzAsYzUxY2U0MTAtYzEyNC1hMTBlLTBkYjUtZTRiOTdmYzJhZjM5fSc6OnV1aWRb XSkpCisgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gYnJpbl9pbl90ZXN0X211 bHRpXzJfaWR4CisgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoYSA9IEFOWSAoJ3szM2U3 NWZmMC05ZGQ2LTAxYmItZTY5Zi0zNTEwMzkxNTIxODksZjQ1N2M1NDUtYTlkZS1kODhmLTE4 ZWMtZWU0NzE0NWE3MmMwLGM1MWNlNDEwLWMxMjQtYTEwZS0wZGI1LWU0Yjk3ZmMyYWYzOX0n Ojp1dWlkW10pKQorKDUgcm93cykKKworU0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90 ZXN0X211bHRpXzIgV0hFUkUgYSBJTiAoJzMzZTc1ZmYwLTlkZDYtMDFiYi1lNjlmLTM1MTAz OTE1MjE4OScsICdmNDU3YzU0NS1hOWRlLWQ4OGYtMThlYy1lZTQ3MTQ1YTcyYzAnLCAnYzUx Y2U0MTAtYzEyNC1hMTBlLTBkYjUtZTRiOTdmYzJhZjM5Jyk7CisgY291bnQgCistLS0tLS0t CisgICAgMzkKKygxIHJvdykKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5U KCopIEZST00gYnJpbl9pbl90ZXN0X211bHRpXzIgV0hFUkUgYSBJTiAoTlVMTCwgJzMzZTc1 ZmYwLTlkZDYtMDFiYi1lNjlmLTM1MTAzOTE1MjE4OScsICdmNDU3YzU0NS1hOWRlLWQ4OGYt MThlYy1lZTQ3MTQ1YTcyYzAnLCAnYzUxY2U0MTAtYzEyNC1hMTBlLTBkYjUtZTRiOTdmYzJh ZjM5Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBCaXRtYXAgSGVhcCBT Y2FuIG9uIGJyaW5faW5fdGVzdF9tdWx0aV8yCisgICAgICAgICBSZWNoZWNrIENvbmQ6IChh ID0gQU5ZICgne05VTEwsMzNlNzVmZjAtOWRkNi0wMWJiLWU2OWYtMzUxMDM5MTUyMTg5LGY0 NTdjNTQ1LWE5ZGUtZDg4Zi0xOGVjLWVlNDcxNDVhNzJjMCxjNTFjZTQxMC1jMTI0LWExMGUt MGRiNS1lNGI5N2ZjMmFmMzl9Jzo6dXVpZFtdKSkKKyAgICAgICAgIC0+ICBCaXRtYXAgSW5k ZXggU2NhbiBvbiBicmluX2luX3Rlc3RfbXVsdGlfMl9pZHgKKyAgICAgICAgICAgICAgIElu ZGV4IENvbmQ6IChhID0gQU5ZICgne05VTEwsMzNlNzVmZjAtOWRkNi0wMWJiLWU2OWYtMzUx MDM5MTUyMTg5LGY0NTdjNTQ1LWE5ZGUtZDg4Zi0xOGVjLWVlNDcxNDVhNzJjMCxjNTFjZTQx MC1jMTI0LWExMGUtMGRiNS1lNGI5N2ZjMmFmMzl9Jzo6dXVpZFtdKSkKKyg1IHJvd3MpCisK K1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF9tdWx0aV8yIFdIRVJFIGEgSU4g KE5VTEwsICczM2U3NWZmMC05ZGQ2LTAxYmItZTY5Zi0zNTEwMzkxNTIxODknLCAnZjQ1N2M1 NDUtYTlkZS1kODhmLTE4ZWMtZWU0NzE0NWE3MmMwJywgJ2M1MWNlNDEwLWMxMjQtYTEwZS0w ZGI1LWU0Yjk3ZmMyYWYzOScpOworIGNvdW50IAorLS0tLS0tLQorICAgIDM5CisoMSByb3cp CisKK0RST1AgVEFCTEUgYnJpbl9pbl90ZXN0X211bHRpXzI7CitSRVNFVCBlbmFibGVfc2Vx c2NhbjsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2JyaW5fbXVsdGkuc3Fs IGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvYnJpbl9tdWx0aS5zcWwKaW5kZXggZDUwZGJkZWU2 OC4uMGU3MGU0MzgwNyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvYnJpbl9t dWx0aS5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvYnJpbl9tdWx0aS5zcWwKQEAg LTU4NiwzICs1ODYsMzA0IEBAIFNFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5fdGVzdF9tdWx0 aV8yIFdIRVJFIGEgPSAnYWFiMzIzODktMjJiYy1jMjVhLTZmNjAtNmViNTI1CiAKIERST1Ag VEFCTEUgYnJpbl90ZXN0X211bHRpXzI7CiBSRVNFVCBlbmFibGVfc2Vxc2NhbjsKKworCist LSBkbyBzb21lIHRlc3RzIG9uIElOIGNsYXVzZXMgZm9yIHNpbXBsZSBkYXRhIHR5cGVzCitD UkVBVEUgVEFCTEUgYnJpbl9pbl90ZXN0X211bHRpXzEgKGEgSU5ULCBiIEJJR0lOVCkgV0lU SCAoZmlsbGZhY3Rvcj0xMCk7CitJTlNFUlQgSU5UTyBicmluX2luX3Rlc3RfbXVsdGlfMQor U0VMRUNUIGkvNSArIG1vZCg5OTEgKiBpICsgNjE3LCAyMCksCisgICAgICAgaS8xMCArIG1v ZCg4NTMgKiBpICsgNDkxLCAzMCkKKyAgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDAwKSBz KGkpOworCitDUkVBVEUgSU5ERVggYnJpbl9pbl90ZXN0X211bHRpXzFfaWR4XzEgT04gYnJp bl9pbl90ZXN0X211bHRpXzEgVVNJTkcgYnJpbiAoYSBpbnQ0X21pbm1heF9tdWx0aV9vcHMp IFdJVEggKHBhZ2VzX3Blcl9yYW5nZT0xKTsKK0NSRUFURSBJTkRFWCBicmluX2luX3Rlc3Rf bXVsdGlfMV9pZHhfMiBPTiBicmluX2luX3Rlc3RfbXVsdGlfMSBVU0lORyBicmluIChiIGlu dDhfbWlubWF4X211bHRpX29wcykgV0lUSCAocGFnZXNfcGVyX3JhbmdlPTEpOworCitTRVQg ZW5hYmxlX3NlcXNjYW49b2ZmOworCistLSBpbnQ6IGVxdWFsaXR5CitFWFBMQUlOIChDT1NU UyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfbXVsdGlfMSBXSEVS RSBhIElOICgxMTMpOworCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfbXVs dGlfMSBXSEVSRSBhIElOICgxMTMpOworCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1Qg Q09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfbXVsdGlfMSBXSEVSRSBhIElOICgxMTMsIE5V TEwpOworCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfbXVsdGlfMSBXSEVS RSBhIElOICgxMTMsIE5VTEwpOworCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09V TlQoKikgRlJPTSBicmluX2luX3Rlc3RfbXVsdGlfMSBXSEVSRSBhIElOIChOVUxMLCBOVUxM KTsKKworU0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0X211bHRpXzEgV0hFUkUg YSBJTiAoTlVMTCwgTlVMTCk7CisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VO VCgqKSBGUk9NIGJyaW5faW5fdGVzdF9tdWx0aV8xIFdIRVJFIGEgSU4gKDExMywgMTc3KTsK KworU0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0X211bHRpXzEgV0hFUkUgYSBJ TiAoMTEzLCAxNzcpOworCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikg RlJPTSBicmluX2luX3Rlc3RfbXVsdGlfMSBXSEVSRSBhIElOICgtMTEzLCAtMTc3KTsKKwor U0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0X211bHRpXzEgV0hFUkUgYSBJTiAo LTExMywgLTE3Nyk7CisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBG Uk9NIGJyaW5faW5fdGVzdF9tdWx0aV8xIFdIRVJFIGEgSU4gKDMxMywgMzc3KTsKKworU0VM RUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0X211bHRpXzEgV0hFUkUgYSBJTiAoMzEz LCAzNzcpOworCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBi cmluX2luX3Rlc3RfbXVsdGlfMSBXSEVSRSBhIElOICgxMTMsIDE3NywgTlVMTCk7CisKK1NF TEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF9tdWx0aV8xIFdIRVJFIGEgSU4gKDEx MywgMTc3LCBOVUxMKTsKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCop IEZST00gYnJpbl9pbl90ZXN0X211bHRpXzEgV0hFUkUgYSBJTiAoMTEzLCAxNzcsIDI1KTsK KworU0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0X211bHRpXzEgV0hFUkUgYSBJ TiAoMTEzLCAxNzcsIDI1KTsKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5U KCopIEZST00gYnJpbl9pbl90ZXN0X211bHRpXzEgV0hFUkUgYSBJTiAoTlVMTCwgMTEzLCAx NzcsIDI1KTsKKworU0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0X211bHRpXzEg V0hFUkUgYSBJTiAoTlVMTCwgMTEzLCAxNzcsIDI1KTsKKworLS0gaW50OiBsZXNzIHRoYW4K K0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVz dF9tdWx0aV8xIFdIRVJFIGEgPCBBTlkoQVJSQVlbMTEzXSk7CisKK1NFTEVDVCBDT1VOVCgq KSBGUk9NIGJyaW5faW5fdGVzdF9tdWx0aV8xIFdIRVJFIGEgPCBBTlkoQVJSQVlbMTEzXSk7 CisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5f dGVzdF9tdWx0aV8xIFdIRVJFIGEgPCBBTlkoQVJSQVlbMTEzLCBOVUxMXSk7CisKK1NFTEVD VCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF9tdWx0aV8xIFdIRVJFIGEgPCBBTlkoQVJS QVlbMTEzLCBOVUxMXSk7CisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgq KSBGUk9NIGJyaW5faW5fdGVzdF9tdWx0aV8xIFdIRVJFIGEgPCBBTlkoQVJSQVlbTlVMTCwg TlVMTF06OmludFtdKTsKKworU0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0X211 bHRpXzEgV0hFUkUgYSA8IEFOWShBUlJBWVtOVUxMLCBOVUxMXTo6aW50W10pOworCitFWFBM QUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfbXVs dGlfMSBXSEVSRSBhIDw9IEFOWShBUlJBWVsxMTMsIDE3N10pOworCitTRUxFQ1QgQ09VTlQo KikgRlJPTSBicmluX2luX3Rlc3RfbXVsdGlfMSBXSEVSRSBhIDw9IEFOWShBUlJBWVsxMTMs IDE3N10pOworCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBi cmluX2luX3Rlc3RfbXVsdGlfMSBXSEVSRSBhIDwgQU5ZKEFSUkFZWzExMywgMTc3LCBOVUxM XSk7CisKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF9tdWx0aV8xIFdIRVJF IGEgPCBBTlkoQVJSQVlbMTEzLCAxNzcsIE5VTExdKTsKKworRVhQTEFJTiAoQ09TVFMgT0ZG KQorU0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0X211bHRpXzEgV0hFUkUgYSA8 PSBBTlkoQVJSQVlbMTEzLCAxNzcsIDI1XSk7CisKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJy aW5faW5fdGVzdF9tdWx0aV8xIFdIRVJFIGEgPD0gQU5ZKEFSUkFZWzExMywgMTc3LCAyNV0p OworCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2lu X3Rlc3RfbXVsdGlfMSBXSEVSRSBhIDwgQU5ZKEFSUkFZW05VTEwsIDExMywgMTc3LCAyNV0p OworCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfbXVsdGlfMSBXSEVSRSBh IDwgQU5ZKEFSUkFZW05VTEwsIDExMywgMTc3LCAyNV0pOworCistLSBpbnQ6IGdyZWF0ZXIg dGhhbgorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9p bl90ZXN0X211bHRpXzEgV0hFUkUgYSA+IEFOWShBUlJBWVsxMTNdKTsKKworU0VMRUNUIENP VU5UKCopIEZST00gYnJpbl9pbl90ZXN0X211bHRpXzEgV0hFUkUgYSA+IEFOWShBUlJBWVsx MTNdKTsKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIEZST00gYnJp bl9pbl90ZXN0X211bHRpXzEgV0hFUkUgYSA+IEFOWShBUlJBWVsxMTMsIE5VTExdKTsKKwor U0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0X211bHRpXzEgV0hFUkUgYSA+IEFO WShBUlJBWVsxMTMsIE5VTExdKTsKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENP VU5UKCopIEZST00gYnJpbl9pbl90ZXN0X211bHRpXzEgV0hFUkUgYSA+IEFOWShBUlJBWVtO VUxMLCBOVUxMXTo6aW50W10pOworCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rl c3RfbXVsdGlfMSBXSEVSRSBhID4gQU5ZKEFSUkFZW05VTEwsIE5VTExdOjppbnRbXSk7CisK K0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVz dF9tdWx0aV8xIFdIRVJFIGEgPj0gQU5ZKEFSUkFZWzExMywgMTc3XSk7CisKK1NFTEVDVCBD T1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF9tdWx0aV8xIFdIRVJFIGEgPj0gQU5ZKEFSUkFZ WzExMywgMTc3XSk7CisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBG Uk9NIGJyaW5faW5fdGVzdF9tdWx0aV8xIFdIRVJFIGEgPiBBTlkoQVJSQVlbMTEzLCAxNzcs IE5VTExdKTsKKworU0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0X211bHRpXzEg V0hFUkUgYSA+IEFOWShBUlJBWVsxMTMsIDE3NywgTlVMTF0pOworCitFWFBMQUlOIChDT1NU UyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfbXVsdGlfMSBXSEVS RSBhID4gQU5ZKEFSUkFZWzExMywgMTc3LCAyNV0pOworCitTRUxFQ1QgQ09VTlQoKikgRlJP TSBicmluX2luX3Rlc3RfbXVsdGlfMSBXSEVSRSBhID4gQU5ZKEFSUkFZWzExMywgMTc3LCAy NV0pOworCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmlu X2luX3Rlc3RfbXVsdGlfMSBXSEVSRSBhID49IEFOWShBUlJBWVtOVUxMLCAxMTMsIDE3Nywg MjVdKTsKKworU0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0X211bHRpXzEgV0hF UkUgYSA+PSBBTlkoQVJSQVlbTlVMTCwgMTEzLCAxNzcsIDI1XSk7CisKKy0tIGJpZ2ludDog ZXF1YWxpdHkKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJy aW5faW5fdGVzdF9tdWx0aV8xIFdIRVJFIGIgSU4gKDgyKTsKKworU0VMRUNUIENPVU5UKCop IEZST00gYnJpbl9pbl90ZXN0X211bHRpXzEgV0hFUkUgYiBJTiAoODIpOworCitFWFBMQUlO IChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfbXVsdGlf MSBXSEVSRSBiIElOICg4MiwgTlVMTCk7CisKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5f aW5fdGVzdF9tdWx0aV8xIFdIRVJFIGIgSU4gKDgyLCBOVUxMKTsKKworRVhQTEFJTiAoQ09T VFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0X211bHRpXzEgV0hF UkUgYiBJTiAoTlVMTCwgTlVMTCk7CisKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5f dGVzdF9tdWx0aV8xIFdIRVJFIGIgSU4gKE5VTEwsIE5VTEwpOworCitFWFBMQUlOIChDT1NU UyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfbXVsdGlfMSBXSEVS RSBiIElOICg4MiwgNDEpOworCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3Rf bXVsdGlfMSBXSEVSRSBiIElOICg4MiwgNDEpOworCitFWFBMQUlOIChDT1NUUyBPRkYpCitT RUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfbXVsdGlfMSBXSEVSRSBiIElOICgt ODIsIC0xNDEpOworCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfbXVsdGlf MSBXSEVSRSBiIElOICgtODIsIC0xNDEpOworCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxF Q1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfbXVsdGlfMSBXSEVSRSBiIElOICgzODIs IDQ0MSk7CisKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF9tdWx0aV8xIFdI RVJFIGIgSU4gKDM4MiwgNDQxKTsKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENP VU5UKCopIEZST00gYnJpbl9pbl90ZXN0X211bHRpXzEgV0hFUkUgYiBJTiAoODIsIDQxLCBO VUxMKTsKKworU0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0X211bHRpXzEgV0hF UkUgYiBJTiAoODIsIDQxLCBOVUxMKTsKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNU IENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0X211bHRpXzEgV0hFUkUgYiBJTiAoODIsIDQx LCAxNSk7CisKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF9tdWx0aV8xIFdI RVJFIGIgSU4gKDgyLCA0MSwgMTUpOworCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1Qg Q09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfbXVsdGlfMSBXSEVSRSBiIElOIChOVUxMLCA4 MiwgNDEsIDE1KTsKKworU0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0X211bHRp XzEgV0hFUkUgYiBJTiAoTlVMTCwgODIsIDQxLCAxNSk7CisKKy0tIGJpZ2ludDogbGVzcyB0 aGFuCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2lu X3Rlc3RfbXVsdGlfMSBXSEVSRSBiIDwgQU5ZKEFSUkFZWzgyXSk7CisKK1NFTEVDVCBDT1VO VCgqKSBGUk9NIGJyaW5faW5fdGVzdF9tdWx0aV8xIFdIRVJFIGIgPCBBTlkoQVJSQVlbODJd KTsKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9p bl90ZXN0X211bHRpXzEgV0hFUkUgYiA8IEFOWShBUlJBWVs4MiwgTlVMTF0pOworCitTRUxF Q1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfbXVsdGlfMSBXSEVSRSBiIDwgQU5ZKEFS UkFZWzgyLCBOVUxMXSk7CisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgq KSBGUk9NIGJyaW5faW5fdGVzdF9tdWx0aV8xIFdIRVJFIGIgPCBBTlkoQVJSQVlbTlVMTCwg TlVMTF06OmJpZ2ludFtdKTsKKworU0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0 X211bHRpXzEgV0hFUkUgYiA8IEFOWShBUlJBWVtOVUxMLCBOVUxMXTo6YmlnaW50W10pOwor CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rl c3RfbXVsdGlfMSBXSEVSRSBiIDw9IEFOWShBUlJBWVs4MiwgNDFdKTsKKworU0VMRUNUIENP VU5UKCopIEZST00gYnJpbl9pbl90ZXN0X211bHRpXzEgV0hFUkUgYiA8PSBBTlkoQVJSQVlb ODIsIDQxXSk7CisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBGUk9N IGJyaW5faW5fdGVzdF9tdWx0aV8xIFdIRVJFIGIgPCBBTlkoQVJSQVlbODIsIDQxLCBOVUxM XSk7CisKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF9tdWx0aV8xIFdIRVJF IGIgPCBBTlkoQVJSQVlbODIsIDQxLCBOVUxMXSk7CisKK0VYUExBSU4gKENPU1RTIE9GRikK K1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF9tdWx0aV8xIFdIRVJFIGIgPD0g QU5ZKEFSUkFZWzgyLCA0MSwgMTVdKTsKKworU0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9p bl90ZXN0X211bHRpXzEgV0hFUkUgYiA8PSBBTlkoQVJSQVlbODIsIDQxLCAxNV0pOworCitF WFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3Rf bXVsdGlfMSBXSEVSRSBiIDwgQU5ZKEFSUkFZW05VTEwsIDgyLCA0MSwgMTVdKTsKKworU0VM RUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0X211bHRpXzEgV0hFUkUgYiA8IEFOWShB UlJBWVtOVUxMLCA4MiwgNDEsIDE1XSk7CisKKy0tIGJpZ2ludDogZ3JlYXRlciB0aGFuCitF WFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3Rf bXVsdGlfMSBXSEVSRSBiID4gQU5ZKEFSUkFZWzgyXSk7CisKK1NFTEVDVCBDT1VOVCgqKSBG Uk9NIGJyaW5faW5fdGVzdF9tdWx0aV8xIFdIRVJFIGIgPiBBTlkoQVJSQVlbODJdKTsKKwor RVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0 X211bHRpXzEgV0hFUkUgYiA+IEFOWShBUlJBWVs4MiwgTlVMTF0pOworCitTRUxFQ1QgQ09V TlQoKikgRlJPTSBicmluX2luX3Rlc3RfbXVsdGlfMSBXSEVSRSBiID4gQU5ZKEFSUkFZWzgy LCBOVUxMXSk7CisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBGUk9N IGJyaW5faW5fdGVzdF9tdWx0aV8xIFdIRVJFIGIgPiBBTlkoQVJSQVlbTlVMTCwgTlVMTF06 OmJpZ2ludFtdKTsKKworU0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0X211bHRp XzEgV0hFUkUgYiA+IEFOWShBUlJBWVtOVUxMLCBOVUxMXTo6YmlnaW50W10pOworCitFWFBM QUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfbXVs dGlfMSBXSEVSRSBiID4gQU5ZKEFSUkFZWzgyLCA0MV0pOworCitTRUxFQ1QgQ09VTlQoKikg RlJPTSBicmluX2luX3Rlc3RfbXVsdGlfMSBXSEVSRSBiID4gQU5ZKEFSUkFZWzgyLCA0MV0p OworCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2lu X3Rlc3RfbXVsdGlfMSBXSEVSRSBiID49IEFOWShBUlJBWVs4MiwgNDEsIE5VTExdKTsKKwor U0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0X211bHRpXzEgV0hFUkUgYiA+PSBB TlkoQVJSQVlbODIsIDQxLCBOVUxMXSk7CisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVD VCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF9tdWx0aV8xIFdIRVJFIGIgPj0gQU5ZKEFS UkFZWzgyLCA0MSwgMTVdKTsKKworU0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0 X211bHRpXzEgV0hFUkUgYiA+PSBBTlkoQVJSQVlbODIsIDQxLCAxNV0pOworCitFWFBMQUlO IChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfbXVsdGlf MSBXSEVSRSBiID4gQU5ZKEFSUkFZW05VTEwsIDgyLCA0MSwgMTVdKTsKKworU0VMRUNUIENP VU5UKCopIEZST00gYnJpbl9pbl90ZXN0X211bHRpXzEgV0hFUkUgYiA+IEFOWShBUlJBWVtO VUxMLCA4MiwgNDEsIDE1XSk7CisKKworRFJPUCBUQUJMRSBicmluX2luX3Rlc3RfbXVsdGlf MTsKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworCisKKy0tIGRvIHNvbWUgdGVzdHMgb24gSU4g Y2xhdXNlcyBmb3IgdmFybGVuYSBkYXRhIHR5cGVzCitDUkVBVEUgVEFCTEUgYnJpbl9pbl90 ZXN0X211bHRpXzIgKGEgVVVJRCkgV0lUSCAoZmlsbGZhY3Rvcj0xMCk7CitJTlNFUlQgSU5U TyBicmluX2luX3Rlc3RfbXVsdGlfMgorU0VMRUNUIHY6OnV1aWQgRlJPTSAoU0VMRUNUIHJv d19udW1iZXIoKSBPVkVSIChPUkRFUiBCWSB2KSBjLCB2IEZST00gKFNFTEVDVCBtZDUoKGkv MTMpOjp0ZXh0KSBBUyB2IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTAwMCkgcyhpKSkgZm9v KSBiYXIgT1JERVIgQlkgYyArIDI1ICogcmFuZG9tKCk7CisKK0NSRUFURSBJTkRFWCBicmlu X2luX3Rlc3RfbXVsdGlfMl9pZHggT04gYnJpbl9pbl90ZXN0X211bHRpXzIgVVNJTkcgYnJp biAoYSB1dWlkX21pbm1heF9tdWx0aV9vcHMpIFdJVEggKHBhZ2VzX3Blcl9yYW5nZT0xKTsK KworU0VUIGVuYWJsZV9zZXFzY2FuPW9mZjsKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VM RUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0X211bHRpXzIgV0hFUkUgYSBJTiAoJzMz ZTc1ZmYwLTlkZDYtMDFiYi1lNjlmLTM1MTAzOTE1MjE4OScpOworCitTRUxFQ1QgQ09VTlQo KikgRlJPTSBicmluX2luX3Rlc3RfbXVsdGlfMiBXSEVSRSBhIElOICgnMzNlNzVmZjAtOWRk Ni0wMWJiLWU2OWYtMzUxMDM5MTUyMTg5Jyk7CisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NF TEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF9tdWx0aV8yIFdIRVJFIGEgSU4gKCcz M2U3NWZmMC05ZGQ2LTAxYmItZTY5Zi0zNTEwMzkxNTIxODknLCBOVUxMKTsKKworU0VMRUNU IENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0X211bHRpXzIgV0hFUkUgYSBJTiAoJzMzZTc1 ZmYwLTlkZDYtMDFiYi1lNjlmLTM1MTAzOTE1MjE4OScsIE5VTEwpOworCitFWFBMQUlOIChD T1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfbXVsdGlfMiBX SEVSRSBhIElOIChOVUxMLCBOVUxMKTsKKworU0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9p bl90ZXN0X211bHRpXzIgV0hFUkUgYSBJTiAoTlVMTCwgTlVMTCk7CisKK0VYUExBSU4gKENP U1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF9tdWx0aV8yIFdI RVJFIGEgSU4gKCczM2U3NWZmMC05ZGQ2LTAxYmItZTY5Zi0zNTEwMzkxNTIxODknLCAnZjQ1 N2M1NDUtYTlkZS1kODhmLTE4ZWMtZWU0NzE0NWE3MmMwJyk7CisKK1NFTEVDVCBDT1VOVCgq KSBGUk9NIGJyaW5faW5fdGVzdF9tdWx0aV8yIFdIRVJFIGEgSU4gKCczM2U3NWZmMC05ZGQ2 LTAxYmItZTY5Zi0zNTEwMzkxNTIxODknLCAnZjQ1N2M1NDUtYTlkZS1kODhmLTE4ZWMtZWU0 NzE0NWE3MmMwJyk7CisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBG Uk9NIGJyaW5faW5fdGVzdF9tdWx0aV8yIFdIRVJFIGEgSU4gKCczM2U3NWZmMC05ZGQ2LTAx YmItZTY5Zi0zNTEwMzkxNTIxODknLCAnZjQ1N2M1NDUtYTlkZS1kODhmLTE4ZWMtZWU0NzE0 NWE3MmMwJywgTlVMTCk7CisKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF9t dWx0aV8yIFdIRVJFIGEgSU4gKCczM2U3NWZmMC05ZGQ2LTAxYmItZTY5Zi0zNTEwMzkxNTIx ODknLCAnZjQ1N2M1NDUtYTlkZS1kODhmLTE4ZWMtZWU0NzE0NWE3MmMwJywgTlVMTCk7CisK K0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVz dF9tdWx0aV8yIFdIRVJFIGEgSU4gKCczM2U3NWZmMC05ZGQ2LTAxYmItZTY5Zi0zNTEwMzkx NTIxODknLCAnZjQ1N2M1NDUtYTlkZS1kODhmLTE4ZWMtZWU0NzE0NWE3MmMwJywgJ2M1MWNl NDEwLWMxMjQtYTEwZS0wZGI1LWU0Yjk3ZmMyYWYzOScpOworCitTRUxFQ1QgQ09VTlQoKikg RlJPTSBicmluX2luX3Rlc3RfbXVsdGlfMiBXSEVSRSBhIElOICgnMzNlNzVmZjAtOWRkNi0w MWJiLWU2OWYtMzUxMDM5MTUyMTg5JywgJ2Y0NTdjNTQ1LWE5ZGUtZDg4Zi0xOGVjLWVlNDcx NDVhNzJjMCcsICdjNTFjZTQxMC1jMTI0LWExMGUtMGRiNS1lNGI5N2ZjMmFmMzknKTsKKwor RVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0 X211bHRpXzIgV0hFUkUgYSBJTiAoTlVMTCwgJzMzZTc1ZmYwLTlkZDYtMDFiYi1lNjlmLTM1 MTAzOTE1MjE4OScsICdmNDU3YzU0NS1hOWRlLWQ4OGYtMThlYy1lZTQ3MTQ1YTcyYzAnLCAn YzUxY2U0MTAtYzEyNC1hMTBlLTBkYjUtZTRiOTdmYzJhZjM5Jyk7CisKK1NFTEVDVCBDT1VO VCgqKSBGUk9NIGJyaW5faW5fdGVzdF9tdWx0aV8yIFdIRVJFIGEgSU4gKE5VTEwsICczM2U3 NWZmMC05ZGQ2LTAxYmItZTY5Zi0zNTEwMzkxNTIxODknLCAnZjQ1N2M1NDUtYTlkZS1kODhm LTE4ZWMtZWU0NzE0NWE3MmMwJywgJ2M1MWNlNDEwLWMxMjQtYTEwZS0wZGI1LWU0Yjk3ZmMy YWYzOScpOworCitEUk9QIFRBQkxFIGJyaW5faW5fdGVzdF9tdWx0aV8yOworUkVTRVQgZW5h YmxlX3NlcXNjYW47Ci0tIAoyLjQxLjAKCg== --------------K3kYSMhKEHYIXFtmkUtXAdlw Content-Type: text/x-patch; charset=UTF-8; name="0004-Support-SK_SEARCHARRAY-in-BRIN-inclusion-20230702.patch" Content-Disposition: attachment; filename*0="0004-Support-SK_SEARCHARRAY-in-BRIN-inclusion-20230702.patch" Content-Transfer-Encoding: base64 RnJvbSAwOTlmNGU4Nzk1YmVmMmQ5ZGI3OGYyZWM2OWEyMDljYWE3ZjQxMjdhIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRyYUBwb3N0 Z3Jlc3FsLm9yZz4KRGF0ZTogU2F0LCAxMSBGZWIgMjAyMyAxNToyMzoyNSArMDEwMApTdWJq ZWN0OiBbUEFUQ0ggNC81XSBTdXBwb3J0IFNLX1NFQVJDSEFSUkFZIGluIEJSSU4gaW5jbHVz aW9uCgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW5faW5jbHVzaW9uLmMgfCAz MjMgKysrKysrKysrKysrKysrKysrKy0tLS0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYW1w cm9jLmRhdCAgICAgICAgfCAgIDkgKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRh dCAgICAgICAgICB8ICAgNCArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2JyaW4ub3V0 ICAgICAgIHwgMTMyICsrKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvYnJpbi5zcWwg ICAgICAgICAgICB8ICA1MyArKysrCiA1IGZpbGVzIGNoYW5nZWQsIDQ3MCBpbnNlcnRpb25z KCspLCA1MSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mv YnJpbi9icmluX2luY2x1c2lvbi5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbl9p bmNsdXNpb24uYwppbmRleCAwMmY0ZDBhZTc2Li40YTU4YWFlZWRhIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluX2luY2x1c2lvbi5jCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9icmluL2JyaW5faW5jbHVzaW9uLmMKQEAgLTMwLDYgKzMwLDcgQEAKICNp bmNsdWRlICJhY2Nlc3Mvc2tleS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfYW1vcC5oIgog I2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgorI2luY2x1ZGUgInV0aWxzL2FycmF5Lmgi CiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9kYXR1bS5o IgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgpAQCAtNzIsNiArNzMsMTMgQEAKICNk ZWZpbmUgSU5DTFVTSU9OX1VOTUVSR0VBQkxFCQkxCiAjZGVmaW5lIElOQ0xVU0lPTl9DT05U QUlOU19FTVBUWQkyCiAKKy8qCisgKiBXZSB1c2Ugc29tZSBwcml2YXRlIHNrX2ZsYWdzIGJp dHMgaW4gcHJlcHJvY2Vzc2VkIHNjYW4ga2V5cy4gIFdlJ3JlIGFsbG93ZWQKKyAqIHRvIHVz ZSBiaXRzIDE2LTMxIChzZWUgc2tleS5oKS4gIFRoZSB1cHBlcm1vc3QgYml0cyBhcmUgY29w aWVkIGZyb20gdGhlCisgKiBpbmRleCdzIGluZG9wdGlvbltdIGFycmF5IGVudHJ5IGZvciB0 aGUgaW5kZXggYXR0cmlidXRlLgorICovCisjZGVmaW5lIFNLX0JSSU5fQVJSQVkJMHgwMDAx MDAwMAkvKiBkZWNvbnN0cnVjdGVkIGFycmF5ICovCisKIAogdHlwZWRlZiBzdHJ1Y3QgSW5j bHVzaW9uT3BhcXVlCiB7CkBAIC0yMzksNDMgKzI0NywxMTkgQEAgYnJpbl9pbmNsdXNpb25f YWRkX3ZhbHVlKFBHX0ZVTkNUSU9OX0FSR1MpCiB9CiAKIC8qCi0gKiBCUklOIGluY2x1c2lv biBjb25zaXN0ZW50IGZ1bmN0aW9uCisgKiBwcmVwcm9jZXNzaW5nIG9mIHNjYW4ga2V5cyBm b3IgdGhlIGluY2x1c2lvbiBvcGNsYXNzCiAgKgotICogV2UncmUgbm8gbG9uZ2VyIGRlYWxp bmcgd2l0aCBOVUxMIGtleXMgaW4gdGhlIGNvbnNpc3RlbnQgZnVuY3Rpb24sIHRoYXQgaXMK LSAqIG5vdyBoYW5kbGVkIGJ5IHRoZSBBTSBjb2RlLiBUaGF0IG1lYW5zIHdlIHNob3VsZCBu b3QgZ2V0IGFueSBhbGwtTlVMTCByYW5nZXMKLSAqIGVpdGhlciwgYmVjYXVzZSB0aG9zZSBj YW4ndCBiZSBjb25zaXN0ZW50IHdpdGggcmVndWxhciAobm90IFtJU10gTlVMTCkga2V5cy4K KyAqIERlY29uc3RydWN0ZWQgc2NhbiBrZXkgYXJyYXkgKHdlIG1pZ2h0IGJ1aWxkIEFycmF5 VHlwZSwgYnV0IHRoZW4gd2UnZAorICogaGF2ZSB0byBkZWNvbnN0cnVjdCBpdCBvdmVyIGFu ZCBvdmVyIGZvciBlYWNoIHBhZ2UgcmFuZ2UpLiBTbyB3ZSBqdXN0CisgKiBkbyBpdCBvbmNl IGR1cmluZyBwcmVwcm9jZXNzaW5nLgogICoKLSAqIEFsbCBvZiB0aGUgc3RyYXRlZ2llcyBh cmUgb3B0aW9uYWwuCisgKiBXZSBkb24ndCBzb3J0IHRoZSBhcnJheSwgYmVjYXVzZSBmb3Ig aW5jbHVzaW9uIHRoYXQncyBsaWtlbHkgcG9pbnRsZXNzLgorICovCit0eXBlZGVmIHN0cnVj dCBTY2FuS2V5QXJyYXkgeworCWludAkJbmVsZW1lbnRzOworCURhdHVtICAqZWxlbWVudHM7 Cit9IFNjYW5LZXlBcnJheTsKKworLyoKKyAqIGJyaW5faW5jbHVzaW9uX3ByZXByb2Nlc3MK KyAqCQlwcmVwcm9jZXNzIHNjYW4ga2V5cyBmb3IgdGhlIGluY2x1c2lvbiBvcGNsYXNzCisg KgorICogRm9yIG5vdyB3ZSBqdXN0IGNhcmUgYWJvdXQgU0tfU0VBUkNIQVJSQVkga2V5cywg d2hpY2ggd2UgZGVjb25zdHJ1Y3QKKyAqIGFuZCBrZWVwIGxpa2UgdGhhdC4gQWxsIG90aGVy IHNjYW4ga2V5cyBhcmUgaWdub3JlZCAocmV0dXJuZWQgYXMgaXMpLgorICoKKyAqIFhYWCBE byB3ZSBuZWVkIHRvIHJlbWVtYmVyIGlmIHRoZSBhcnJheSBjb250YWluZWQgTlVMTCB2YWx1 ZXM/CiAgKi8KIERhdHVtCi1icmluX2luY2x1c2lvbl9jb25zaXN0ZW50KFBHX0ZVTkNUSU9O X0FSR1MpCiticmluX2luY2x1c2lvbl9wcmVwcm9jZXNzKFBHX0ZVTkNUSU9OX0FSR1MpCiB7 Ci0JQnJpbkRlc2MgICAqYmRlc2MgPSAoQnJpbkRlc2MgKikgUEdfR0VUQVJHX1BPSU5URVIo MCk7Ci0JQnJpblZhbHVlcyAqY29sdW1uID0gKEJyaW5WYWx1ZXMgKikgUEdfR0VUQVJHX1BP SU5URVIoMSk7Ci0JU2NhbktleQkJa2V5ID0gKFNjYW5LZXkpIFBHX0dFVEFSR19QT0lOVEVS KDIpOwotCU9pZAkJCWNvbGxvaWQgPSBQR19HRVRfQ09MTEFUSU9OKCksCi0JCQkJc3VidHlw ZTsKLQlEYXR1bQkJdW5pb252YWw7Ci0JQXR0ck51bWJlcglhdHRubzsKLQlEYXR1bQkJcXVl cnk7Ci0JRm1nckluZm8gICAqZmluZm87Ci0JRGF0dW0JCXJlc3VsdDsKKwlTY2FuS2V5CQlr ZXkgPSAoU2NhbktleSkgUEdfR0VUQVJHX1BPSU5URVIoMSk7CisJU2NhbktleQkJbmV3a2V5 OworCVNjYW5LZXlBcnJheSAqc2NhbmFycmF5OwogCi0JLyogVGhpcyBvcGNsYXNzIHVzZXMg dGhlIG9sZCBzaWduYXR1cmUgd2l0aCBvbmx5IHRocmVlIGFyZ3VtZW50cy4gKi8KLQlBc3Nl cnQoUEdfTkFSR1MoKSA9PSAzKTsKKwlBcnJheVR5cGUgICphcnJheXZhbDsKKwlpbnQxNgkJ ZWxtbGVuOworCWJvb2wJCWVsbWJ5dmFsOworCWNoYXIJCWVsbWFsaWduOworCWludAkJCW51 bV9lbGVtczsKKwlEYXR1bQkgICAqZWxlbV92YWx1ZXM7CisJYm9vbAkgICAqZWxlbV9udWxs czsKIAotCS8qIFNob3VsZCBub3QgYmUgZGVhbGluZyB3aXRoIGFsbC1OVUxMIHJhbmdlcy4g Ki8KLQlBc3NlcnQoIWNvbHVtbi0+YnZfYWxsbnVsbHMpOworCS8qIG51bWJlciBvZiBub24t bnVsbCBlbGVtZW50cyBpbiB0aGUgYXJyYXkgKi8KKwlpbnQJCQludW1fbm9ubnVsbHM7CiAK LQkvKiBJdCBoYXMgdG8gYmUgY2hlY2tlZCwgaWYgaXQgY29udGFpbnMgZWxlbWVudHMgdGhh dCBhcmUgbm90IG1lcmdlYWJsZS4gKi8KLQlpZiAoRGF0dW1HZXRCb29sKGNvbHVtbi0+YnZf dmFsdWVzW0lOQ0xVU0lPTl9VTk1FUkdFQUJMRV0pKQotCQlQR19SRVRVUk5fQk9PTCh0cnVl KTsKKwkvKgorCSAqIGlnbm9yZSBzY2FsYXIga2V5cyAoanVzdCByZXR1cm4gdGhlIG9yaWdp bmFsIHNjYW4ga2V5KQorCSAqCisJICogWFhYIE1heWJlIHdlIHNob3VsZCBwcmVwcm9jZXNz IHNjYWxhciBrZXlzIHRvbywgYW5kIHRyZWF0IHRoZW0gYXMgYXJyYXlzCisJICogd2l0aCBh IHNpbmdsZSBlbGVtZW50LiBJdCdkIG1ha2UgdGhlIGNvbnNpc3RlbnQgZnVuY3Rpb24gc2lt cGxlciBieSBub3QKKwkgKiBoYXZpbmcgdG8gZG8gYnJhbmNoaW5nLgorCSAqLworCWlmICgh KGtleS0+c2tfZmxhZ3MgJiBTS19TRUFSQ0hBUlJBWSkpCisJCVBHX1JFVFVSTl9QT0lOVEVS KGtleSk7CiAKLQlhdHRubyA9IGtleS0+c2tfYXR0bm87Ci0Jc3VidHlwZSA9IGtleS0+c2tf c3VidHlwZTsKLQlxdWVyeSA9IGtleS0+c2tfYXJndW1lbnQ7Ci0JdW5pb252YWwgPSBjb2x1 bW4tPmJ2X3ZhbHVlc1tJTkNMVVNJT05fVU5JT05dOwotCXN3aXRjaCAoa2V5LT5za19zdHJh dGVneSkKKwlhcnJheXZhbCA9IERhdHVtR2V0QXJyYXlUeXBlUChrZXktPnNrX2FyZ3VtZW50 KTsKKworCWdldF90eXBsZW5ieXZhbGFsaWduKEFSUl9FTEVNVFlQRShhcnJheXZhbCksCisJ CQkJCQkgJmVsbWxlbiwgJmVsbWJ5dmFsLCAmZWxtYWxpZ24pOworCisJZGVjb25zdHJ1Y3Rf YXJyYXkoYXJyYXl2YWwsCisJCQkJCSAgQVJSX0VMRU1UWVBFKGFycmF5dmFsKSwKKwkJCQkJ ICBlbG1sZW4sIGVsbWJ5dmFsLCBlbG1hbGlnbiwKKwkJCQkJICAmZWxlbV92YWx1ZXMsICZl bGVtX251bGxzLCAmbnVtX2VsZW1zKTsKKworCS8qIGVsaW1pbmF0ZSBOVUxMIGVsZW1lbnRz ICovCisJbnVtX25vbm51bGxzID0gMDsKKwlmb3IgKGludCBpID0gMDsgaSA8IG51bV9lbGVt czsgaSsrKQorCXsKKwkJLyogc2tpcCBOVUxMIGVsZW1lbnRzICovCisJCWlmIChlbGVtX251 bGxzW2ldKQorCQkJY29udGludWU7CisKKwkJLyogaWYgbmVlZGVkLCBtb3ZlIHRoZSBub24t TlVMTCBvbmVzICovCisJCWlmIChudW1fbm9ubnVsbHMgIT0gaSkKKwkJCWVsZW1fdmFsdWVz W251bV9ub25udWxsc10gPSBlbGVtX3ZhbHVlc1tpXTsKKworCQludW1fbm9ubnVsbHMrKzsK Kwl9CisKKwludW1fZWxlbXMgPSBudW1fbm9ubnVsbHM7CisKKwkvKiBGSVhNRSBXaGF0IGlm IG51bV9ub25udWxscyBpcyAwPyBDYW4gaXQgZXZlbiBoYXBwZW4gLyBnZXQgaGVyZT8gKi8K KworCXNjYW5hcnJheSA9IHBhbGxvYzAoc2l6ZW9mKFNjYW5LZXlBcnJheSkpOworCXNjYW5h cnJheS0+bmVsZW1lbnRzID0gbnVtX2VsZW1zOworCXNjYW5hcnJheS0+ZWxlbWVudHMgPSBl bGVtX3ZhbHVlczsKKworCS8qIENvbnN0cnVjdCB0aGUgbmV3IHNjYW4ga2V5LCB3aXRoIHNv cnRlZCBhcnJheSBhcyBTY2FuS2V5QXJyYXkuICovCisJbmV3a2V5ID0gcGFsbG9jMChzaXpl b2YoU2NhbktleURhdGEpKTsKKworCVNjYW5LZXlFbnRyeUluaXRpYWxpemVXaXRoSW5mbyhu ZXdrZXksCisJCQkJCQkJCSAgIChrZXktPnNrX2ZsYWdzIHwgU0tfQlJJTl9BUlJBWSksCisJ CQkJCQkJCSAgIGtleS0+c2tfYXR0bm8sCisJCQkJCQkJCSAgIGtleS0+c2tfc3RyYXRlZ3ks CisJCQkJCQkJCSAgIGtleS0+c2tfc3VidHlwZSwKKwkJCQkJCQkJICAga2V5LT5za19jb2xs YXRpb24sCisJCQkJCQkJCSAgICZrZXktPnNrX2Z1bmMsCisJCQkJCQkJCSAgIFBvaW50ZXJH ZXREYXR1bShzY2FuYXJyYXkpKTsKKworCVBHX1JFVFVSTl9QT0lOVEVSKG5ld2tleSk7Cit9 CisKKy8qCisgKiBDaGVjayBjb25zaXN0ZW5jeSBvZiBhIHNpbmdsZSBzY2FsYXIgdmFsdWUg d2l0aCB0aGUgQlJJTiByYW5nZS4KKyAqCisgKiBDYWxsZWQgZm9yIGJvdGggc2NhbGFyIHNj YW5rZXlzIGFuZCBmb3IgZWFjaCB2YWx1ZSBpbiBTS19TRUFSQ0hBUlJBWS4KKyAqLworc3Rh dGljIGJvb2wKK2JyaW5faW5jbHVzaW9uX2NvbnNpc3RlbnRfdmFsdWUoQnJpbkRlc2MgKmJk ZXNjLCBCcmluVmFsdWVzICpjb2x1bW4sCisJCQkJCQkJCUF0dHJOdW1iZXIgYXR0bm8sCisJ CQkJCQkJCVN0cmF0ZWd5TnVtYmVyIHN0cmF0ZWd5LCBPaWQgc3VidHlwZSwKKwkJCQkJCQkJ T2lkIGNvbGxvaWQsIERhdHVtIHVuaW9udmFsLCBEYXR1bSBxdWVyeSkKK3sKKwlGbWdySW5m byAgICpmaW5mbzsKKwlEYXR1bQkJcmVzdWx0OworCisJc3dpdGNoIChzdHJhdGVneSkKIAl7 CiAJCQkvKgogCQkJICogUGxhY2VtZW50IHN0cmF0ZWdpZXMKQEAgLTI5NCw0OSArMzc4LDQ5 IEBAIGJyaW5faW5jbHVzaW9uX2NvbnNpc3RlbnQoUEdfRlVOQ1RJT05fQVJHUykKIAkJCWZp bmZvID0gaW5jbHVzaW9uX2dldF9zdHJhdGVneV9wcm9jaW5mbyhiZGVzYywgYXR0bm8sIHN1 YnR5cGUsCiAJCQkJCQkJCQkJCQkJUlRPdmVyUmlnaHRTdHJhdGVneU51bWJlcik7CiAJCQly ZXN1bHQgPSBGdW5jdGlvbkNhbGwyQ29sbChmaW5mbywgY29sbG9pZCwgdW5pb252YWwsIHF1 ZXJ5KTsKLQkJCVBHX1JFVFVSTl9CT09MKCFEYXR1bUdldEJvb2wocmVzdWx0KSk7CisJCQly ZXR1cm4gKCFEYXR1bUdldEJvb2wocmVzdWx0KSk7CiAKIAkJY2FzZSBSVE92ZXJMZWZ0U3Ry YXRlZ3lOdW1iZXI6CiAJCQlmaW5mbyA9IGluY2x1c2lvbl9nZXRfc3RyYXRlZ3lfcHJvY2lu Zm8oYmRlc2MsIGF0dG5vLCBzdWJ0eXBlLAogCQkJCQkJCQkJCQkJCVJUUmlnaHRTdHJhdGVn eU51bWJlcik7CiAJCQlyZXN1bHQgPSBGdW5jdGlvbkNhbGwyQ29sbChmaW5mbywgY29sbG9p ZCwgdW5pb252YWwsIHF1ZXJ5KTsKLQkJCVBHX1JFVFVSTl9CT09MKCFEYXR1bUdldEJvb2wo cmVzdWx0KSk7CisJCQlyZXR1cm4gKCFEYXR1bUdldEJvb2wocmVzdWx0KSk7CiAKIAkJY2Fz ZSBSVE92ZXJSaWdodFN0cmF0ZWd5TnVtYmVyOgogCQkJZmluZm8gPSBpbmNsdXNpb25fZ2V0 X3N0cmF0ZWd5X3Byb2NpbmZvKGJkZXNjLCBhdHRubywgc3VidHlwZSwKIAkJCQkJCQkJCQkJ CQlSVExlZnRTdHJhdGVneU51bWJlcik7CiAJCQlyZXN1bHQgPSBGdW5jdGlvbkNhbGwyQ29s bChmaW5mbywgY29sbG9pZCwgdW5pb252YWwsIHF1ZXJ5KTsKLQkJCVBHX1JFVFVSTl9CT09M KCFEYXR1bUdldEJvb2wocmVzdWx0KSk7CisJCQlyZXR1cm4gKCFEYXR1bUdldEJvb2wocmVz dWx0KSk7CiAKIAkJY2FzZSBSVFJpZ2h0U3RyYXRlZ3lOdW1iZXI6CiAJCQlmaW5mbyA9IGlu Y2x1c2lvbl9nZXRfc3RyYXRlZ3lfcHJvY2luZm8oYmRlc2MsIGF0dG5vLCBzdWJ0eXBlLAog CQkJCQkJCQkJCQkJCVJUT3ZlckxlZnRTdHJhdGVneU51bWJlcik7CiAJCQlyZXN1bHQgPSBG dW5jdGlvbkNhbGwyQ29sbChmaW5mbywgY29sbG9pZCwgdW5pb252YWwsIHF1ZXJ5KTsKLQkJ CVBHX1JFVFVSTl9CT09MKCFEYXR1bUdldEJvb2wocmVzdWx0KSk7CisJCQlyZXR1cm4gKCFE YXR1bUdldEJvb2wocmVzdWx0KSk7CiAKIAkJY2FzZSBSVEJlbG93U3RyYXRlZ3lOdW1iZXI6 CiAJCQlmaW5mbyA9IGluY2x1c2lvbl9nZXRfc3RyYXRlZ3lfcHJvY2luZm8oYmRlc2MsIGF0 dG5vLCBzdWJ0eXBlLAogCQkJCQkJCQkJCQkJCVJUT3ZlckFib3ZlU3RyYXRlZ3lOdW1iZXIp OwogCQkJcmVzdWx0ID0gRnVuY3Rpb25DYWxsMkNvbGwoZmluZm8sIGNvbGxvaWQsIHVuaW9u dmFsLCBxdWVyeSk7Ci0JCQlQR19SRVRVUk5fQk9PTCghRGF0dW1HZXRCb29sKHJlc3VsdCkp OworCQkJcmV0dXJuICghRGF0dW1HZXRCb29sKHJlc3VsdCkpOwogCiAJCWNhc2UgUlRPdmVy QmVsb3dTdHJhdGVneU51bWJlcjoKIAkJCWZpbmZvID0gaW5jbHVzaW9uX2dldF9zdHJhdGVn eV9wcm9jaW5mbyhiZGVzYywgYXR0bm8sIHN1YnR5cGUsCiAJCQkJCQkJCQkJCQkJUlRBYm92 ZVN0cmF0ZWd5TnVtYmVyKTsKIAkJCXJlc3VsdCA9IEZ1bmN0aW9uQ2FsbDJDb2xsKGZpbmZv LCBjb2xsb2lkLCB1bmlvbnZhbCwgcXVlcnkpOwotCQkJUEdfUkVUVVJOX0JPT0woIURhdHVt R2V0Qm9vbChyZXN1bHQpKTsKKwkJCXJldHVybiAoIURhdHVtR2V0Qm9vbChyZXN1bHQpKTsK IAogCQljYXNlIFJUT3ZlckFib3ZlU3RyYXRlZ3lOdW1iZXI6CiAJCQlmaW5mbyA9IGluY2x1 c2lvbl9nZXRfc3RyYXRlZ3lfcHJvY2luZm8oYmRlc2MsIGF0dG5vLCBzdWJ0eXBlLAogCQkJ CQkJCQkJCQkJCVJUQmVsb3dTdHJhdGVneU51bWJlcik7CiAJCQlyZXN1bHQgPSBGdW5jdGlv bkNhbGwyQ29sbChmaW5mbywgY29sbG9pZCwgdW5pb252YWwsIHF1ZXJ5KTsKLQkJCVBHX1JF VFVSTl9CT09MKCFEYXR1bUdldEJvb2wocmVzdWx0KSk7CisJCQlyZXR1cm4gKCFEYXR1bUdl dEJvb2wocmVzdWx0KSk7CiAKIAkJY2FzZSBSVEFib3ZlU3RyYXRlZ3lOdW1iZXI6CiAJCQlm aW5mbyA9IGluY2x1c2lvbl9nZXRfc3RyYXRlZ3lfcHJvY2luZm8oYmRlc2MsIGF0dG5vLCBz dWJ0eXBlLAogCQkJCQkJCQkJCQkJCVJUT3ZlckJlbG93U3RyYXRlZ3lOdW1iZXIpOwogCQkJ cmVzdWx0ID0gRnVuY3Rpb25DYWxsMkNvbGwoZmluZm8sIGNvbGxvaWQsIHVuaW9udmFsLCBx dWVyeSk7Ci0JCQlQR19SRVRVUk5fQk9PTCghRGF0dW1HZXRCb29sKHJlc3VsdCkpOworCQkJ cmV0dXJuICghRGF0dW1HZXRCb29sKHJlc3VsdCkpOwogCiAJCQkvKgogCQkJICogT3Zlcmxh cCBhbmQgY29udGFpbnMgc3RyYXRlZ2llcwpAQCAtMzUyLDkgKzQzNiw5IEBAIGJyaW5faW5j bHVzaW9uX2NvbnNpc3RlbnQoUEdfRlVOQ1RJT05fQVJHUykKIAkJY2FzZSBSVFN1YlN0cmF0 ZWd5TnVtYmVyOgogCQljYXNlIFJUU3ViRXF1YWxTdHJhdGVneU51bWJlcjoKIAkJCWZpbmZv ID0gaW5jbHVzaW9uX2dldF9zdHJhdGVneV9wcm9jaW5mbyhiZGVzYywgYXR0bm8sIHN1YnR5 cGUsCi0JCQkJCQkJCQkJCQkJa2V5LT5za19zdHJhdGVneSk7CisJCQkJCQkJCQkJCQkJc3Ry YXRlZ3kpOwogCQkJcmVzdWx0ID0gRnVuY3Rpb25DYWxsMkNvbGwoZmluZm8sIGNvbGxvaWQs IHVuaW9udmFsLCBxdWVyeSk7Ci0JCQlQR19SRVRVUk5fREFUVU0ocmVzdWx0KTsKKwkJCXJl dHVybiAoRGF0dW1HZXRCb29sKHJlc3VsdCkpOwogCiAJCQkvKgogCQkJICogQ29udGFpbmVk IGJ5IHN0cmF0ZWdpZXMKQEAgLTM3NCw5ICs0NTgsOSBAQCBicmluX2luY2x1c2lvbl9jb25z aXN0ZW50KFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQkJCQkJCQkJCQkJUlRPdmVybGFwU3RyYXRl Z3lOdW1iZXIpOwogCQkJcmVzdWx0ID0gRnVuY3Rpb25DYWxsMkNvbGwoZmluZm8sIGNvbGxv aWQsIHVuaW9udmFsLCBxdWVyeSk7CiAJCQlpZiAoRGF0dW1HZXRCb29sKHJlc3VsdCkpCi0J CQkJUEdfUkVUVVJOX0JPT0wodHJ1ZSk7CisJCQkJcmV0dXJuICh0cnVlKTsKIAotCQkJUEdf UkVUVVJOX0RBVFVNKGNvbHVtbi0+YnZfdmFsdWVzW0lOQ0xVU0lPTl9DT05UQUlOU19FTVBU WV0pOworCQkJcmV0dXJuIChjb2x1bW4tPmJ2X3ZhbHVlc1tJTkNMVVNJT05fQ09OVEFJTlNf RU1QVFldKTsKIAogCQkJLyoKIAkJCSAqIEFkamFjZW50IHN0cmF0ZWd5CkBAIC0zOTMsMTIg KzQ3NywxMiBAQCBicmluX2luY2x1c2lvbl9jb25zaXN0ZW50KFBHX0ZVTkNUSU9OX0FSR1Mp CiAJCQkJCQkJCQkJCQkJUlRPdmVybGFwU3RyYXRlZ3lOdW1iZXIpOwogCQkJcmVzdWx0ID0g RnVuY3Rpb25DYWxsMkNvbGwoZmluZm8sIGNvbGxvaWQsIHVuaW9udmFsLCBxdWVyeSk7CiAJ CQlpZiAoRGF0dW1HZXRCb29sKHJlc3VsdCkpCi0JCQkJUEdfUkVUVVJOX0JPT0wodHJ1ZSk7 CisJCQkJcmV0dXJuICh0cnVlKTsKIAogCQkJZmluZm8gPSBpbmNsdXNpb25fZ2V0X3N0cmF0 ZWd5X3Byb2NpbmZvKGJkZXNjLCBhdHRubywgc3VidHlwZSwKIAkJCQkJCQkJCQkJCQlSVEFk amFjZW50U3RyYXRlZ3lOdW1iZXIpOwogCQkJcmVzdWx0ID0gRnVuY3Rpb25DYWxsMkNvbGwo ZmluZm8sIGNvbGxvaWQsIHVuaW9udmFsLCBxdWVyeSk7Ci0JCQlQR19SRVRVUk5fREFUVU0o cmVzdWx0KTsKKwkJCXJldHVybiAoRGF0dW1HZXRCb29sKHJlc3VsdCkpOwogCiAJCQkvKgog CQkJICogQmFzaWMgY29tcGFyaXNvbiBzdHJhdGVnaWVzCkBAIC00MjgsOSArNTEyLDkgQEAg YnJpbl9pbmNsdXNpb25fY29uc2lzdGVudChQR19GVU5DVElPTl9BUkdTKQogCQkJCQkJCQkJ CQkJCVJUUmlnaHRTdHJhdGVneU51bWJlcik7CiAJCQlyZXN1bHQgPSBGdW5jdGlvbkNhbGwy Q29sbChmaW5mbywgY29sbG9pZCwgdW5pb252YWwsIHF1ZXJ5KTsKIAkJCWlmICghRGF0dW1H ZXRCb29sKHJlc3VsdCkpCi0JCQkJUEdfUkVUVVJOX0JPT0wodHJ1ZSk7CisJCQkJcmV0dXJu ICh0cnVlKTsKIAotCQkJUEdfUkVUVVJOX0RBVFVNKGNvbHVtbi0+YnZfdmFsdWVzW0lOQ0xV U0lPTl9DT05UQUlOU19FTVBUWV0pOworCQkJcmV0dXJuIChjb2x1bW4tPmJ2X3ZhbHVlc1tJ TkNMVVNJT05fQ09OVEFJTlNfRU1QVFldKTsKIAogCQljYXNlIFJUU2FtZVN0cmF0ZWd5TnVt YmVyOgogCQljYXNlIFJURXF1YWxTdHJhdGVneU51bWJlcjoKQEAgLTQzOCwzMCArNTIyLDE2 NyBAQCBicmluX2luY2x1c2lvbl9jb25zaXN0ZW50KFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQkJ CQkJCQkJCQkJUlRDb250YWluc1N0cmF0ZWd5TnVtYmVyKTsKIAkJCXJlc3VsdCA9IEZ1bmN0 aW9uQ2FsbDJDb2xsKGZpbmZvLCBjb2xsb2lkLCB1bmlvbnZhbCwgcXVlcnkpOwogCQkJaWYg KERhdHVtR2V0Qm9vbChyZXN1bHQpKQotCQkJCVBHX1JFVFVSTl9CT09MKHRydWUpOworCQkJ CXJldHVybiAodHJ1ZSk7CiAKLQkJCVBHX1JFVFVSTl9EQVRVTShjb2x1bW4tPmJ2X3ZhbHVl c1tJTkNMVVNJT05fQ09OVEFJTlNfRU1QVFldKTsKKwkJCXJldHVybiAoY29sdW1uLT5idl92 YWx1ZXNbSU5DTFVTSU9OX0NPTlRBSU5TX0VNUFRZXSk7CiAKIAkJY2FzZSBSVEdyZWF0ZXJF cXVhbFN0cmF0ZWd5TnVtYmVyOgogCQkJZmluZm8gPSBpbmNsdXNpb25fZ2V0X3N0cmF0ZWd5 X3Byb2NpbmZvKGJkZXNjLCBhdHRubywgc3VidHlwZSwKIAkJCQkJCQkJCQkJCQlSVExlZnRT dHJhdGVneU51bWJlcik7CiAJCQlyZXN1bHQgPSBGdW5jdGlvbkNhbGwyQ29sbChmaW5mbywg Y29sbG9pZCwgdW5pb252YWwsIHF1ZXJ5KTsKIAkJCWlmICghRGF0dW1HZXRCb29sKHJlc3Vs dCkpCi0JCQkJUEdfUkVUVVJOX0JPT0wodHJ1ZSk7CisJCQkJcmV0dXJuICh0cnVlKTsKIAot CQkJUEdfUkVUVVJOX0RBVFVNKGNvbHVtbi0+YnZfdmFsdWVzW0lOQ0xVU0lPTl9DT05UQUlO U19FTVBUWV0pOworCQkJcmV0dXJuIChjb2x1bW4tPmJ2X3ZhbHVlc1tJTkNMVVNJT05fQ09O VEFJTlNfRU1QVFldKTsKIAogCQljYXNlIFJUR3JlYXRlclN0cmF0ZWd5TnVtYmVyOgogCQkJ Lyogbm8gbmVlZCB0byBjaGVjayBmb3IgZW1wdHkgZWxlbWVudHMgKi8KIAkJCWZpbmZvID0g aW5jbHVzaW9uX2dldF9zdHJhdGVneV9wcm9jaW5mbyhiZGVzYywgYXR0bm8sIHN1YnR5cGUs CiAJCQkJCQkJCQkJCQkJUlRMZWZ0U3RyYXRlZ3lOdW1iZXIpOwogCQkJcmVzdWx0ID0gRnVu Y3Rpb25DYWxsMkNvbGwoZmluZm8sIGNvbGxvaWQsIHVuaW9udmFsLCBxdWVyeSk7Ci0JCQlQ R19SRVRVUk5fQk9PTCghRGF0dW1HZXRCb29sKHJlc3VsdCkpOworCQkJcmV0dXJuICghRGF0 dW1HZXRCb29sKHJlc3VsdCkpOwogCiAJCWRlZmF1bHQ6CiAJCQkvKiBzaG91bGRuJ3QgaGFw cGVuICovCi0JCQllbG9nKEVSUk9SLCAiaW52YWxpZCBzdHJhdGVneSBudW1iZXIgJWQiLCBr ZXktPnNrX3N0cmF0ZWd5KTsKLQkJCVBHX1JFVFVSTl9CT09MKGZhbHNlKTsKKwkJCWVsb2co RVJST1IsICJpbnZhbGlkIHN0cmF0ZWd5IG51bWJlciAlZCIsIHN0cmF0ZWd5KTsKKwkJCXJl dHVybiAoZmFsc2UpOworCX0KK30KKworLyoKKyAqIEJSSU4gaW5jbHVzaW9uIGNvbnNpc3Rl bnQgZnVuY3Rpb24KKyAqCisgKiBXZSdyZSBubyBsb25nZXIgZGVhbGluZyB3aXRoIE5VTEwg a2V5cyBpbiB0aGUgY29uc2lzdGVudCBmdW5jdGlvbiwgdGhhdCBpcworICogbm93IGhhbmRs ZWQgYnkgdGhlIEFNIGNvZGUuIFRoYXQgbWVhbnMgd2Ugc2hvdWxkIG5vdCBnZXQgYW55IGFs bC1OVUxMIHJhbmdlcworICogZWl0aGVyLCBiZWNhdXNlIHRob3NlIGNhbid0IGJlIGNvbnNp c3RlbnQgd2l0aCByZWd1bGFyIChub3QgW0lTXSBOVUxMKSBrZXlzLgorICoKKyAqIEFsbCBv ZiB0aGUgc3RyYXRlZ2llcyBhcmUgb3B0aW9uYWwuCisgKi8KK0RhdHVtCiticmluX2luY2x1 c2lvbl9jb25zaXN0ZW50KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJQnJpbkRlc2MgICAqYmRl c2MgPSAoQnJpbkRlc2MgKikgUEdfR0VUQVJHX1BPSU5URVIoMCk7CisJQnJpblZhbHVlcyAq Y29sdW1uID0gKEJyaW5WYWx1ZXMgKikgUEdfR0VUQVJHX1BPSU5URVIoMSk7CisJU2Nhbktl eQkJa2V5ID0gKFNjYW5LZXkpIFBHX0dFVEFSR19QT0lOVEVSKDIpOworCU9pZAkJCWNvbGxv aWQgPSBQR19HRVRfQ09MTEFUSU9OKCksCisJCQkJc3VidHlwZTsKKwlEYXR1bQkJdW5pb252 YWw7CisJQXR0ck51bWJlcglhdHRubzsKKwlEYXR1bQkJcXVlcnk7CisKKwkvKiBUaGlzIG9w Y2xhc3MgdXNlcyB0aGUgb2xkIHNpZ25hdHVyZSB3aXRoIG9ubHkgdGhyZWUgYXJndW1lbnRz LiAqLworCUFzc2VydChQR19OQVJHUygpID09IDMpOworCisJLyogU2hvdWxkIG5vdCBiZSBk ZWFsaW5nIHdpdGggYWxsLU5VTEwgcmFuZ2VzLiAqLworCUFzc2VydCghY29sdW1uLT5idl9h bGxudWxscyk7CisKKwkvKiBJdCBoYXMgdG8gYmUgY2hlY2tlZCwgaWYgaXQgY29udGFpbnMg ZWxlbWVudHMgdGhhdCBhcmUgbm90IG1lcmdlYWJsZS4gKi8KKwlpZiAoRGF0dW1HZXRCb29s KGNvbHVtbi0+YnZfdmFsdWVzW0lOQ0xVU0lPTl9VTk1FUkdFQUJMRV0pKQorCQlQR19SRVRV Uk5fQk9PTCh0cnVlKTsKKworCWF0dG5vID0ga2V5LT5za19hdHRubzsKKwlzdWJ0eXBlID0g a2V5LT5za19zdWJ0eXBlOworCXF1ZXJ5ID0ga2V5LT5za19hcmd1bWVudDsKKwl1bmlvbnZh bCA9IGNvbHVtbi0+YnZfdmFsdWVzW0lOQ0xVU0lPTl9VTklPTl07CisKKwkvKgorCSAqIEZv ciByZWd1bGFyIChzY2FsYXIpIHNjYW4ga2V5cywgd2Ugc2ltcGx5IGNvbXBhcmUgdGhlIHZh bHVlIHRvIHRoZQorCSAqIHJhbmdlIG1pbi9tYXggdmFsdWVzLCBhbmQgd2UncmUgZG9uZS4g Rm9yIHByZXByb2Nlc3NlZCBhcnJheSBrZXlzCisJICogKFNLX0JSSU5fQVJSQVkpIHdlIHNp bXBseSB3YWxrIHRoZSBkZWNvbnN0cnVjdGVkIGFycmF5LiBGb3IgcmF3CisJICogU0tfU0VB UkNIQVJSQVkga2V5cyB3ZSBuZWVkIHRvIGRlcGFyc2UgdGhlIGFycmF5IGFuZCBsb29wIHRo cm91Z2gKKwkgKiB0aGUgdmFsdWVzLgorCSAqLworCWlmIChrZXktPnNrX2ZsYWdzICYgU0tf QlJJTl9BUlJBWSkKKwl7CisJCVNjYW5LZXlBcnJheSAqYXJyYXkgPSAoU2NhbktleUFycmF5 ICopIHF1ZXJ5OworCQlib29sCQltYXRjaGVzID0gZmFsc2U7CisKKwkJLyoKKwkJICogTG9v cCB0aHJvdWdoIGFsbCBkZWNvbnN0cnVjdGVkIGFycmF5LCBjaGVjayB0aGUgaW5jbHVzaW9u IGZvcgorCQkgKiBlYWNoIGVsZW1lbnQuCisJCSAqCisJCSAqIFhYWCBXaXRoIGVtcHR5IGFy cmF5ICh3aGljaCBjYW4gaGFwcGVuIGZvciBJTiBjbGF1c2Ugd2l0aCBvbmx5CisJCSAqIE5V TEwgdmFsdWVzKSwgd2UgbGVhdmUgdGhlIG1hdGNoZXMgZmxhZyBzZXQgdG8gZmFsc2UuCisJ CSAqLworCQlmb3IgKGludCBpID0gMDsgaSA8IGFycmF5LT5uZWxlbWVudHM7IGkrKykKKwkJ eworCQkJRGF0dW0gCXF1ZXJ5X2VsZW1lbnQgPSBhcnJheS0+ZWxlbWVudHNbaV07CisKKwkJ CW1hdGNoZXMgPSBicmluX2luY2x1c2lvbl9jb25zaXN0ZW50X3ZhbHVlKGJkZXNjLCBjb2x1 bW4sIGF0dG5vLAorCQkJCQkJCQkJCQkJCSAga2V5LT5za19zdHJhdGVneSwKKwkJCQkJCQkJ CQkJCQkgIHN1YnR5cGUsIGNvbGxvaWQsCisJCQkJCQkJCQkJCQkJICB1bmlvbnZhbCwgcXVl cnlfZWxlbWVudCk7CisKKwkJCWlmIChtYXRjaGVzKQorCQkJCWJyZWFrOworCQl9CisKKwkJ Lyogd2UgY291bGQgZ2V0IGhlcmUgZm9yIGVtcHR5IGFycmF5LCBlLmcuIHdpdGggIkA+ICd7 fSc6OnBvaW50W10iICovCisJCVBHX1JFVFVSTl9CT09MKG1hdGNoZXMpOworCX0KKwllbHNl IGlmIChrZXktPnNrX2ZsYWdzICYgU0tfU0VBUkNIQVJSQVkpCisJeworCQlBcnJheVR5cGUg ICphcnJheXZhbDsKKwkJaW50MTYJCWVsbWxlbjsKKwkJYm9vbAkJZWxtYnl2YWw7CisJCWNo YXIJCWVsbWFsaWduOworCQlpbnQJCQludW1fZWxlbXM7CisJCURhdHVtCSAgICplbGVtX3Zh bHVlczsKKwkJYm9vbAkgICAqZWxlbV9udWxsczsKKwkJYm9vbAkJbWF0Y2hlcyA9IGZhbHNl OworCisJCWFycmF5dmFsID0gRGF0dW1HZXRBcnJheVR5cGVQKGtleS0+c2tfYXJndW1lbnQp OworCisJCWdldF90eXBsZW5ieXZhbGFsaWduKEFSUl9FTEVNVFlQRShhcnJheXZhbCksCisJ CQkJCQkJICZlbG1sZW4sICZlbG1ieXZhbCwgJmVsbWFsaWduKTsKKworCQlkZWNvbnN0cnVj dF9hcnJheShhcnJheXZhbCwKKwkJCQkJCSAgQVJSX0VMRU1UWVBFKGFycmF5dmFsKSwKKwkJ CQkJCSAgZWxtbGVuLCBlbG1ieXZhbCwgZWxtYWxpZ24sCisJCQkJCQkgICZlbGVtX3ZhbHVl cywgJmVsZW1fbnVsbHMsICZudW1fZWxlbXMpOworCisJCS8qCisJCSAqIExvb3AgdGhyb3Vn aCBhbGwgZGVjb25zdHJ1Y3RlZCBhcnJheSwgY2hlY2sgdGhlIGluY2x1c2lvbiBmb3IKKwkJ ICogZWFjaCBlbGVtZW50LgorCQkgKgorCQkgKiBYWFggV2l0aCBlbXB0eSBhcnJheSAod2hp Y2ggY2FuIGhhcHBlbiBmb3IgSU4gY2xhdXNlIHdpdGggb25seQorCQkgKiBOVUxMIHZhbHVl cyksIHdlIGxlYXZlIHRoZSBtYXRjaGVzIGZsYWcgc2V0IHRvIGZhbHNlLgorCQkgKi8KKwkJ Zm9yIChpbnQgaSA9IDA7IGkgPCBudW1fZWxlbXM7IGkrKykKKwkJeworCQkJLyogc2tpcCBO VUxMIGVsZW1lbnRzICovCisJCQlpZiAoZWxlbV9udWxsc1tpXSkKKwkJCQljb250aW51ZTsK KworCQkJbWF0Y2hlcyA9IGJyaW5faW5jbHVzaW9uX2NvbnNpc3RlbnRfdmFsdWUoYmRlc2Ms IGNvbHVtbiwgYXR0bm8sCisJCQkJCQkJCQkJCQkJICBrZXktPnNrX3N0cmF0ZWd5LAorCQkJ CQkJCQkJCQkJCSAgc3VidHlwZSwgY29sbG9pZCwKKwkJCQkJCQkJCQkJCQkgIHVuaW9udmFs LCBlbGVtX3ZhbHVlc1tpXSk7CisKKwkJCWlmIChtYXRjaGVzKQorCQkJCWJyZWFrOworCQl9 CisKKwkJLyoKKwkJICogZnJlZSB0aGUgYXJyYXlzCisJCSAqCisJCSAqIFhYWCBpcyB0aGlz IG5lY2Vzc2FyeT8KKwkJICovCisJCXBmcmVlKGVsZW1fdmFsdWVzKTsKKwkJcGZyZWUoZWxl bV9udWxscyk7CisKKwkJLyogd2UgY291bGQgZ2V0IGhlcmUgZm9yIGVtcHR5IGFycmF5LCBl LmcuIHdpdGggIkA+ICd7fSc6OnBvaW50W10iICovCisJCVBHX1JFVFVSTl9CT09MKG1hdGNo ZXMpOworCX0KKwllbHNlCisJeworCQlib29sIHRtcDsKKworCQl0bXAgPSBicmluX2luY2x1 c2lvbl9jb25zaXN0ZW50X3ZhbHVlKGJkZXNjLCBjb2x1bW4sIGF0dG5vLAorCQkJCQkJCQkJ CQkgIGtleS0+c2tfc3RyYXRlZ3ksCisJCQkJCQkJCQkJCSAgc3VidHlwZSwgY29sbG9pZCwK KwkJCQkJCQkJCQkJICB1bmlvbnZhbCwgcXVlcnkpOworCQlQR19SRVRVUk5fQk9PTCh0bXAp OwogCX0KIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19hbXByb2Mu ZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19hbXByb2MuZGF0CmluZGV4IDRmMTdmMGQ1 OGMuLmVkNWIyMWU3ZjkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYW1w cm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2FtcHJvYy5kYXQKQEAgLTE0 NzgsNiArMTQ3OCw5IEBACiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9uZXR3b3JrX2luY2x1 c2lvbl9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnaW5ldCcsCiAgIGFtcHJvY3JpZ2h0dHlw ZSA9PiAnaW5ldCcsIGFtcHJvY251bSA9PiAnNCcsCiAgIGFtcHJvYyA9PiAnYnJpbl9pbmNs dXNpb25fdW5pb24nIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9uZXR3b3JrX2luY2x1 c2lvbl9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnaW5ldCcsCisgIGFtcHJvY3JpZ2h0dHlw ZSA9PiAnaW5ldCcsIGFtcHJvY251bSA9PiAnNicsCisgIGFtcHJvYyA9PiAnYnJpbl9pbmNs dXNpb25fcHJlcHJvY2VzcycgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL25ldHdvcmtf aW5jbHVzaW9uX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdpbmV0JywKICAgYW1wcm9jcmln aHR0eXBlID0+ICdpbmV0JywgYW1wcm9jbnVtID0+ICcxMScsIGFtcHJvYyA9PiAnaW5ldF9t ZXJnZScgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL25ldHdvcmtfaW5jbHVzaW9uX29w cycsIGFtcHJvY2xlZnR0eXBlID0+ICdpbmV0JywKQEAgLTIwMTYsNiArMjAxOSw5IEBACiB7 IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9yYW5nZV9pbmNsdXNpb25fb3BzJywgYW1wcm9jbGVm dHR5cGUgPT4gJ2FueXJhbmdlJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdhbnlyYW5nZScs IGFtcHJvY251bSA9PiAnNCcsCiAgIGFtcHJvYyA9PiAnYnJpbl9pbmNsdXNpb25fdW5pb24n IH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9yYW5nZV9pbmNsdXNpb25fb3BzJywgYW1w cm9jbGVmdHR5cGUgPT4gJ2FueXJhbmdlJywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICdhbnly YW5nZScsIGFtcHJvY251bSA9PiAnNicsCisgIGFtcHJvYyA9PiAnYnJpbl9pbmNsdXNpb25f cHJlcHJvY2VzcycgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL3JhbmdlX2luY2x1c2lv bl9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnYW55cmFuZ2UnLAogICBhbXByb2NyaWdodHR5 cGUgPT4gJ2FueXJhbmdlJywgYW1wcm9jbnVtID0+ICcxMScsCiAgIGFtcHJvYyA9PiAncmFu Z2VfbWVyZ2UoYW55cmFuZ2UsYW55cmFuZ2UpJyB9LApAQCAtMjA5Nyw2ICsyMTAzLDkgQEAK IHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL2JveF9pbmNsdXNpb25fb3BzJywgYW1wcm9jbGVm dHR5cGUgPT4gJ2JveCcsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnYm94JywgYW1wcm9jbnVt ID0+ICc0JywKICAgYW1wcm9jID0+ICdicmluX2luY2x1c2lvbl91bmlvbicgfSwKK3sgYW1w cm9jZmFtaWx5ID0+ICdicmluL2JveF9pbmNsdXNpb25fb3BzJywgYW1wcm9jbGVmdHR5cGUg PT4gJ2JveCcsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnYm94JywgYW1wcm9jbnVtID0+ICc2 JywKKyAgYW1wcm9jID0+ICdicmluX2luY2x1c2lvbl9wcmVwcm9jZXNzJyB9LAogeyBhbXBy b2NmYW1pbHkgPT4gJ2JyaW4vYm94X2luY2x1c2lvbl9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9 PiAnYm94JywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdib3gnLCBhbXByb2NudW0gPT4gJzEx JywgYW1wcm9jID0+ICdib3VuZF9ib3gnIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9i b3hfaW5jbHVzaW9uX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdib3gnLApkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFs b2cvcGdfcHJvYy5kYXQKaW5kZXggMDQ1NTU3NDZlNi4uZDgyMjUwODc1ZiAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9j YXRhbG9nL3BnX3Byb2MuZGF0CkBAIC04NjQxLDYgKzg2NDEsMTAgQEAKICAgcHJvbmFtZSA9 PiAnYnJpbl9pbmNsdXNpb25fdW5pb24nLCBwcm9yZXR0eXBlID0+ICdib29sJywKICAgcHJv YXJndHlwZXMgPT4gJ2ludGVybmFsIGludGVybmFsIGludGVybmFsJywKICAgcHJvc3JjID0+ ICdicmluX2luY2x1c2lvbl91bmlvbicgfSwKK3sgb2lkID0+ICc5MzI0JywgZGVzY3IgPT4g J0JSSU4gaW5jbHVzaW9uIHN1cHBvcnQnLAorICBwcm9uYW1lID0+ICdicmluX2luY2x1c2lv bl9wcmVwcm9jZXNzJywgcHJvaXNzdHJpY3QgPT4gJ2YnLAorICBwcm9yZXR0eXBlID0+ICdp bnRlcm5hbCcsIHByb2FyZ3R5cGVzID0+ICdpbnRlcm5hbCBpbnRlcm5hbCcsCisgIHByb3Ny YyA9PiAnYnJpbl9pbmNsdXNpb25fcHJlcHJvY2VzcycgfSwKIAogIyBCUklOIGJsb29tCiB7 IG9pZCA9PiAnNDU5MScsIGRlc2NyID0+ICdCUklOIGJsb29tIHN1cHBvcnQnLApkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9icmluLm91dCBiL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvYnJpbi5vdXQKaW5kZXggMjQzNjFiOTBlYi4uYmVkMjVmYjE5OCAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9icmluLm91dAorKysgYi9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2JyaW4ub3V0CkBAIC0xNDMwLDMgKzE0MzAsMTM1 IEBAIFNFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF8yIFdIRVJFIGEgSU4gKE5V TEwsICczM2U3NWZmMDlkZDYwMWJiZTY5ZjM1MTAzCiAKIERST1AgVEFCTEUgYnJpbl9pbl90 ZXN0XzI7CiBSRVNFVCBlbmFibGVfc2Vxc2NhbjsKKy0tIGRvIHNvbWUgdGVzdHMgb24gSU4g Y2xhdXNlcyBmb3IgYm94ZXMgYW5kIHBvaW50cworQ1JFQVRFIFRBQkxFIGJyaW5faW5fdGVz dF8zIChhIEJPWCkgV0lUSCAoZmlsbGZhY3Rvcj0xMCk7CitJTlNFUlQgSU5UTyBicmluX2lu X3Rlc3RfMworU0VMRUNUIGZvcm1hdCgnKCglcywlcyksICglcywlcykpJywgeCAtIG1vZChp LDE3KSwgeSAtIG1vZChpLDEzKSwgeCArIG1vZChpLDE5KSwgeSArIG1vZChpLDExKSk6OmJv eCBGUk9NICgKKyAgU0VMRUNUIGksCisgICAgICAgICBpLzEwICsgbW9kKDk5MSAqIGkgKyA2 MTcsIDIwKSBBUyB4LAorICAgICAgICAgaS8xMCArIG1vZCg4NTMgKiBpICsgNDkxLCAzMCkg QVMgeQorICAgIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTAwMCkgcyhpKQorKSBmb287CitD UkVBVEUgSU5ERVggYnJpbl9pbl90ZXN0XzNfaWR4IE9OIGJyaW5faW5fdGVzdF8zIFVTSU5H IGJyaW4gKGEgYm94X2luY2x1c2lvbl9vcHMpIFdJVEggKHBhZ2VzX3Blcl9yYW5nZT0xKTsK K1NFVCBlbmFibGVfc2Vxc2Nhbj1vZmY7CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1Qg Q09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfMyBXSEVSRSBhIEA+IEFOWSAoQVJSQVlbJygx MCwxMCknOjpwb2ludF0pOworICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFO ICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAg IC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIGJyaW5faW5fdGVzdF8zCisgICAgICAgICBSZWNo ZWNrIENvbmQ6IChhIEA+IEFOWSAoJ3siKDEwLDEwKSJ9Jzo6cG9pbnRbXSkpCisgICAgICAg ICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gYnJpbl9pbl90ZXN0XzNfaWR4CisgICAgICAg ICAgICAgICBJbmRleCBDb25kOiAoYSBAPiBBTlkgKCd7IigxMCwxMCkifSc6OnBvaW50W10p KQorKDUgcm93cykKKworU0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0XzMgV0hF UkUgYSBAPiBBTlkgKEFSUkFZWycoMTAsMTApJzo6cG9pbnRdKTsKKyBjb3VudCAKKy0tLS0t LS0KKyAgICAyNgorKDEgcm93KQorCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09V TlQoKikgRlJPTSBicmluX2luX3Rlc3RfMyBXSEVSRSBhIEA+IEFOWSAoQVJSQVlbJygxMCwx MCknOjpwb2ludCwgTlVMTF0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVS WSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg QWdncmVnYXRlCisgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiBicmluX2luX3Rlc3RfMwor ICAgICAgICAgUmVjaGVjayBDb25kOiAoYSBAPiBBTlkgKCd7IigxMCwxMCkiLE5VTEx9Jzo6 cG9pbnRbXSkpCisgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gYnJpbl9pbl90 ZXN0XzNfaWR4CisgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoYSBAPiBBTlkgKCd7Iigx MCwxMCkiLE5VTEx9Jzo6cG9pbnRbXSkpCisoNSByb3dzKQorCitTRUxFQ1QgQ09VTlQoKikg RlJPTSBicmluX2luX3Rlc3RfMyBXSEVSRSBhIEA+IEFOWSAoQVJSQVlbJygxMCwxMCknOjpw b2ludCwgTlVMTF0pOworIGNvdW50IAorLS0tLS0tLQorICAgIDI2CisoMSByb3cpCisKK0VY UExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF8z IFdIRVJFIGEgQD4gQU5ZIChBUlJBWVtOVUxMOjpwb2ludCwgTlVMTDo6cG9pbnRdKTsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgQml0bWFwIEhlYXAgU2Nh biBvbiBicmluX2luX3Rlc3RfMworICAgICAgICAgUmVjaGVjayBDb25kOiAoYSBAPiBBTlkg KCd7TlVMTCxOVUxMfSc6OnBvaW50W10pKQorICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBT Y2FuIG9uIGJyaW5faW5fdGVzdF8zX2lkeAorICAgICAgICAgICAgICAgSW5kZXggQ29uZDog KGEgQD4gQU5ZICgne05VTEwsTlVMTH0nOjpwb2ludFtdKSkKKyg1IHJvd3MpCisKK1NFTEVD VCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF8zIFdIRVJFIGEgQD4gQU5ZIChBUlJBWVtO VUxMOjpwb2ludCwgTlVMTDo6cG9pbnRdKTsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICAgMAor KDEgcm93KQorCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBi cmluX2luX3Rlc3RfMyBXSEVSRSBhIEA+IEFOWSAoQVJSQVlbJygxMCwxMCknOjpwb2ludCwg Jyg1MCw1MCknOjpwb2ludF0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFV RVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gYnJpbl9p bl90ZXN0XzMKKyAgICAgICAgIFJlY2hlY2sgQ29uZDogKGEgQD4gQU5ZICgneyIoMTAsMTAp IiwiKDUwLDUwKSJ9Jzo6cG9pbnRbXSkpCisgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNj YW4gb24gYnJpbl9pbl90ZXN0XzNfaWR4CisgICAgICAgICAgICAgICBJbmRleCBDb25kOiAo YSBAPiBBTlkgKCd7IigxMCwxMCkiLCIoNTAsNTApIn0nOjpwb2ludFtdKSkKKyg1IHJvd3Mp CisKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF8zIFdIRVJFIGEgQD4gQU5Z IChBUlJBWVsnKDEwLDEwKSc6OnBvaW50LCAnKDUwLDUwKSc6OnBvaW50XSk7CisgY291bnQg CistLS0tLS0tCisgICAgODAKKygxIHJvdykKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VM RUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0XzMgV0hFUkUgYSBAPiBBTlkgKEFSUkFZ WycoMTAsMTApJzo6cG9pbnQsICcoNTAsNTApJzo6cG9pbnQsIE5VTExdKTsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRl CisgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiBicmluX2luX3Rlc3RfMworICAgICAgICAg UmVjaGVjayBDb25kOiAoYSBAPiBBTlkgKCd7IigxMCwxMCkiLCIoNTAsNTApIixOVUxMfSc6 OnBvaW50W10pKQorICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIGJyaW5faW5f dGVzdF8zX2lkeAorICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKGEgQD4gQU5ZICgneyIo MTAsMTApIiwiKDUwLDUwKSIsTlVMTH0nOjpwb2ludFtdKSkKKyg1IHJvd3MpCisKK1NFTEVD VCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF8zIFdIRVJFIGEgQD4gQU5ZIChBUlJBWVsn KDEwLDEwKSc6OnBvaW50LCAnKDUwLDUwKSc6OnBvaW50LCBOVUxMXSk7CisgY291bnQgCist LS0tLS0tCisgICAgODAKKygxIHJvdykKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNU IENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0XzMgV0hFUkUgYSBAPiBBTlkgKEFSUkFZWyco MTAsMTApJzo6cG9pbnQsICcoNTAsNTApJzo6cG9pbnQsICcoMjUsMjUpJzo6cG9pbnRdKTsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gYnJpbl9p bl90ZXN0XzMKKyAgICAgICAgIFJlY2hlY2sgQ29uZDogKGEgQD4gQU5ZICgneyIoMTAsMTAp IiwiKDUwLDUwKSIsIigyNSwyNSkifSc6OnBvaW50W10pKQorICAgICAgICAgLT4gIEJpdG1h cCBJbmRleCBTY2FuIG9uIGJyaW5faW5fdGVzdF8zX2lkeAorICAgICAgICAgICAgICAgSW5k ZXggQ29uZDogKGEgQD4gQU5ZICgneyIoMTAsMTApIiwiKDUwLDUwKSIsIigyNSwyNSkifSc6 OnBvaW50W10pKQorKDUgcm93cykKKworU0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90 ZXN0XzMgV0hFUkUgYSBAPiBBTlkgKEFSUkFZWycoMTAsMTApJzo6cG9pbnQsICcoNTAsNTAp Jzo6cG9pbnQsICcoMjUsMjUpJzo6cG9pbnRdKTsKKyBjb3VudCAKKy0tLS0tLS0KKyAgIDEy OQorKDEgcm93KQorCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgRlJP TSBicmluX2luX3Rlc3RfMyBXSEVSRSBhIEA+IEFOWSAoQVJSQVlbTlVMTCwgJygxMCwxMCkn Ojpwb2ludCwgJyg1MCw1MCknOjpwb2ludCwgJygyNSwyNSknOjpwb2ludF0pOworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gYnJp bl9pbl90ZXN0XzMKKyAgICAgICAgIFJlY2hlY2sgQ29uZDogKGEgQD4gQU5ZICgne05VTEws IigxMCwxMCkiLCIoNTAsNTApIiwiKDI1LDI1KSJ9Jzo6cG9pbnRbXSkpCisgICAgICAgICAt PiAgQml0bWFwIEluZGV4IFNjYW4gb24gYnJpbl9pbl90ZXN0XzNfaWR4CisgICAgICAgICAg ICAgICBJbmRleCBDb25kOiAoYSBAPiBBTlkgKCd7TlVMTCwiKDEwLDEwKSIsIig1MCw1MCki LCIoMjUsMjUpIn0nOjpwb2ludFtdKSkKKyg1IHJvd3MpCisKK1NFTEVDVCBDT1VOVCgqKSBG Uk9NIGJyaW5faW5fdGVzdF8zIFdIRVJFIGEgQD4gQU5ZIChBUlJBWVtOVUxMLCAnKDEwLDEw KSc6OnBvaW50LCAnKDUwLDUwKSc6OnBvaW50LCAnKDI1LDI1KSc6OnBvaW50XSk7CisgY291 bnQgCistLS0tLS0tCisgICAxMjkKKygxIHJvdykKKworRFJPUCBUQUJMRSBicmluX2luX3Rl c3RfMzsKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvYnJpbi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9icmluLnNxbAppbmRl eCA3MTk5YzkxMDhiLi44NmM3NTQ1ZWQ1IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNz L3NxbC9icmluLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9icmluLnNxbApAQCAt Nzk4LDMgKzc5OCw1NiBAQCBTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfMiBX SEVSRSBhIElOIChOVUxMLCAnMzNlNzVmZjA5ZGQ2MDFiYmU2OWYzNTEwMwogCiBEUk9QIFRB QkxFIGJyaW5faW5fdGVzdF8yOwogUkVTRVQgZW5hYmxlX3NlcXNjYW47CisKKworLS0gZG8g c29tZSB0ZXN0cyBvbiBJTiBjbGF1c2VzIGZvciBib3hlcyBhbmQgcG9pbnRzCitDUkVBVEUg VEFCTEUgYnJpbl9pbl90ZXN0XzMgKGEgQk9YKSBXSVRIIChmaWxsZmFjdG9yPTEwKTsKK0lO U0VSVCBJTlRPIGJyaW5faW5fdGVzdF8zCitTRUxFQ1QgZm9ybWF0KCcoKCVzLCVzKSwgKCVz LCVzKSknLCB4IC0gbW9kKGksMTcpLCB5IC0gbW9kKGksMTMpLCB4ICsgbW9kKGksMTkpLCB5 ICsgbW9kKGksMTEpKTo6Ym94IEZST00gKAorICBTRUxFQ1QgaSwKKyAgICAgICAgIGkvMTAg KyBtb2QoOTkxICogaSArIDYxNywgMjApIEFTIHgsCisgICAgICAgICBpLzEwICsgbW9kKDg1 MyAqIGkgKyA0OTEsIDMwKSBBUyB5CisgICAgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDAw KSBzKGkpCispIGZvbzsKKworQ1JFQVRFIElOREVYIGJyaW5faW5fdGVzdF8zX2lkeCBPTiBi cmluX2luX3Rlc3RfMyBVU0lORyBicmluIChhIGJveF9pbmNsdXNpb25fb3BzKSBXSVRIIChw YWdlc19wZXJfcmFuZ2U9MSk7CisKK1NFVCBlbmFibGVfc2Vxc2Nhbj1vZmY7CisKK0VYUExB SU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF8zIFdI RVJFIGEgQD4gQU5ZIChBUlJBWVsnKDEwLDEwKSc6OnBvaW50XSk7CisKK1NFTEVDVCBDT1VO VCgqKSBGUk9NIGJyaW5faW5fdGVzdF8zIFdIRVJFIGEgQD4gQU5ZIChBUlJBWVsnKDEwLDEw KSc6OnBvaW50XSk7CisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBG Uk9NIGJyaW5faW5fdGVzdF8zIFdIRVJFIGEgQD4gQU5ZIChBUlJBWVsnKDEwLDEwKSc6OnBv aW50LCBOVUxMXSk7CisKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF8zIFdI RVJFIGEgQD4gQU5ZIChBUlJBWVsnKDEwLDEwKSc6OnBvaW50LCBOVUxMXSk7CisKK0VYUExB SU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF8zIFdI RVJFIGEgQD4gQU5ZIChBUlJBWVtOVUxMOjpwb2ludCwgTlVMTDo6cG9pbnRdKTsKKworU0VM RUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0XzMgV0hFUkUgYSBAPiBBTlkgKEFSUkFZ W05VTEw6OnBvaW50LCBOVUxMOjpwb2ludF0pOworCitFWFBMQUlOIChDT1NUUyBPRkYpCitT RUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfMyBXSEVSRSBhIEA+IEFOWSAoQVJS QVlbJygxMCwxMCknOjpwb2ludCwgJyg1MCw1MCknOjpwb2ludF0pOworCitTRUxFQ1QgQ09V TlQoKikgRlJPTSBicmluX2luX3Rlc3RfMyBXSEVSRSBhIEA+IEFOWSAoQVJSQVlbJygxMCwx MCknOjpwb2ludCwgJyg1MCw1MCknOjpwb2ludF0pOworCitFWFBMQUlOIChDT1NUUyBPRkYp CitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfMyBXSEVSRSBhIEA+IEFOWSAo QVJSQVlbJygxMCwxMCknOjpwb2ludCwgJyg1MCw1MCknOjpwb2ludCwgTlVMTF0pOworCitT RUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfMyBXSEVSRSBhIEA+IEFOWSAoQVJS QVlbJygxMCwxMCknOjpwb2ludCwgJyg1MCw1MCknOjpwb2ludCwgTlVMTF0pOworCitFWFBM QUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfMyBX SEVSRSBhIEA+IEFOWSAoQVJSQVlbJygxMCwxMCknOjpwb2ludCwgJyg1MCw1MCknOjpwb2lu dCwgJygyNSwyNSknOjpwb2ludF0pOworCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2lu X3Rlc3RfMyBXSEVSRSBhIEA+IEFOWSAoQVJSQVlbJygxMCwxMCknOjpwb2ludCwgJyg1MCw1 MCknOjpwb2ludCwgJygyNSwyNSknOjpwb2ludF0pOworCitFWFBMQUlOIChDT1NUUyBPRkYp CitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfMyBXSEVSRSBhIEA+IEFOWSAo QVJSQVlbTlVMTCwgJygxMCwxMCknOjpwb2ludCwgJyg1MCw1MCknOjpwb2ludCwgJygyNSwy NSknOjpwb2ludF0pOworCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfMyBX SEVSRSBhIEA+IEFOWSAoQVJSQVlbTlVMTCwgJygxMCwxMCknOjpwb2ludCwgJyg1MCw1MCkn Ojpwb2ludCwgJygyNSwyNSknOjpwb2ludF0pOworCitEUk9QIFRBQkxFIGJyaW5faW5fdGVz dF8zOworUkVTRVQgZW5hYmxlX3NlcXNjYW47Ci0tIAoyLjQxLjAKCg== --------------K3kYSMhKEHYIXFtmkUtXAdlw Content-Type: text/x-patch; charset=UTF-8; name="0005-Support-SK_SEARCHARRAY-in-BRIN-bloom-20230702.patch" Content-Disposition: attachment; filename="0005-Support-SK_SEARCHARRAY-in-BRIN-bloom-20230702.patch" Content-Transfer-Encoding: base64 RnJvbSA5ZDZmNjg0OGQ4NzgzYmMwY2RjOTU4MjUzNTYzZDg4OThhZjljNDM5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRyYUBwb3N0 Z3Jlc3FsLm9yZz4KRGF0ZTogU2F0LCAxMSBGZWIgMjAyMyAyMDo1MDowMyArMDEwMApTdWJq ZWN0OiBbUEFUQ0ggNS81XSBTdXBwb3J0IFNLX1NFQVJDSEFSUkFZIGluIEJSSU4gYmxvb20K Ci0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbl9ibG9vbS5jICAgICB8IDI1NiAr KysrKysrKysrKysrKy0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYW1wcm9jLmRhdCAgICAg ICAgfCAgNjAgKysrKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCAgICAgICAg ICB8ICAgMyArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2JyaW5fYmxvb20ub3V0IHwg Mzc3ICsrKysrKysrKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9icmlu X2Jsb29tLnNxbCAgICAgIHwgMTM1ICsrKysrKysrCiA1IGZpbGVzIGNoYW5nZWQsIDgxNCBp bnNlcnRpb25zKCspLCAxNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvYnJpbi9icmluX2Jsb29tLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9i cmluX2Jsb29tLmMKaW5kZXggZjQ3ZWI4MTAxMi4uNmU1OGJmMmMxZCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbl9ibG9vbS5jCisrKyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9icmluL2JyaW5fYmxvb20uYwpAQCAtMTI1LDkgKzEyNSwxMSBAQAogI2luY2x1 ZGUgImFjY2Vzcy9zdHJhdG51bS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgog I2luY2x1ZGUgImNhdGFsb2cvcGdfYW1vcC5oIgorI2luY2x1ZGUgInV0aWxzL2FycmF5Lmgi CiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9kYXR1bS5o IgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgorI2luY2x1ZGUgInV0aWxzL21lbXV0 aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCiAjaW5jbHVkZSAidXRpbHMvc3lzY2Fj aGUuaCIKIApAQCAtMTUxLDYgKzE1MywxMyBAQAogICovCiAjZGVmaW5lCQlQUk9DTlVNX0JB U0UJCQkxMQogCisvKgorICogV2UgdXNlIHNvbWUgcHJpdmF0ZSBza19mbGFncyBiaXRzIGlu IHByZXByb2Nlc3NlZCBzY2FuIGtleXMuICBXZSdyZSBhbGxvd2VkCisgKiB0byB1c2UgYml0 cyAxNi0zMSAoc2VlIHNrZXkuaCkuICBUaGUgdXBwZXJtb3N0IGJpdHMgYXJlIGNvcGllZCBm cm9tIHRoZQorICogaW5kZXgncyBpbmRvcHRpb25bXSBhcnJheSBlbnRyeSBmb3IgdGhlIGlu ZGV4IGF0dHJpYnV0ZS4KKyAqLworI2RlZmluZSBTS19CUklOX0hBU0hFUwkweDAwMDEwMDAw CS8qIGRlY29uc3RydWN0ZWQgYXJyYXksIGNhbGN1bGF0ZWQgaGFzaGVzICovCisKIC8qCiAg KiBTdG9yYWdlIHR5cGUgZm9yIEJSSU4ncyByZWxvcHRpb25zLgogICovCkBAIC00MDQsMTkg KzQxMywxMyBAQCBibG9vbV9hZGRfdmFsdWUoQmxvb21GaWx0ZXIgKmZpbHRlciwgdWludDMy IHZhbHVlLCBib29sICp1cGRhdGVkKQogCiAKIC8qCi0gKiBibG9vbV9jb250YWluc192YWx1 ZQotICogCQlDaGVjayBpZiB0aGUgYmxvb20gZmlsdGVyIGNvbnRhaW5zIGEgcGFydGljdWxh ciB2YWx1ZS4KKyAqIGJsb29tX2NvbnRhaW5zX2hhc2hlcworICogCQlDaGVjayBpZiB0aGUg Ymxvb20gZmlsdGVyIGNvbnRhaW5zIGEgcGFydGljdWxhciBwYWlyIG9mIGhhc2ggdmFsdWVz LgogICovCiBzdGF0aWMgYm9vbAotYmxvb21fY29udGFpbnNfdmFsdWUoQmxvb21GaWx0ZXIg KmZpbHRlciwgdWludDMyIHZhbHVlKQorYmxvb21fY29udGFpbnNfaGFzaGVzKEJsb29tRmls dGVyICpmaWx0ZXIsIHVpbnQ2NCBoMSwgdWludDY0IGgyKQogewogCWludAkJCWk7Ci0JdWlu dDY0CQloMSwKLQkJCQloMjsKLQotCS8qIGNhbGN1bGF0ZSB0aGUgdHdvIGhhc2hlcyAqLwot CWgxID0gaGFzaF9ieXRlc191aW50MzJfZXh0ZW5kZWQodmFsdWUsIEJMT09NX1NFRURfMSkg JSBmaWx0ZXItPm5iaXRzOwotCWgyID0gaGFzaF9ieXRlc191aW50MzJfZXh0ZW5kZWQodmFs dWUsIEJMT09NX1NFRURfMikgJSBmaWx0ZXItPm5iaXRzOwogCiAJLyogY29tcHV0ZSB0aGUg cmVxdWVzdGVkIG51bWJlciBvZiBoYXNoZXMgKi8KIAlmb3IgKGkgPSAwOyBpIDwgZmlsdGVy LT5uaGFzaGVzOyBpKyspCkBAIC00MzUsNiArNDM4LDIzIEBAIGJsb29tX2NvbnRhaW5zX3Zh bHVlKEJsb29tRmlsdGVyICpmaWx0ZXIsIHVpbnQzMiB2YWx1ZSkKIAlyZXR1cm4gdHJ1ZTsK IH0KIAorLyoKKyAqIGJsb29tX2NvbnRhaW5zX3ZhbHVlCisgKiAJCUNoZWNrIGlmIHRoZSBi bG9vbSBmaWx0ZXIgY29udGFpbnMgYSBwYXJ0aWN1bGFyIHZhbHVlLgorICovCitzdGF0aWMg Ym9vbAorYmxvb21fY29udGFpbnNfdmFsdWUoQmxvb21GaWx0ZXIgKmZpbHRlciwgdWludDMy IHZhbHVlKQoreworCXVpbnQ2NAkJaDEsCisJCQkJaDI7CisKKwkvKiBjYWxjdWxhdGUgdGhl IHR3byBoYXNoZXMgKi8KKwloMSA9IGhhc2hfYnl0ZXNfdWludDMyX2V4dGVuZGVkKHZhbHVl LCBCTE9PTV9TRUVEXzEpICUgZmlsdGVyLT5uYml0czsKKwloMiA9IGhhc2hfYnl0ZXNfdWlu dDMyX2V4dGVuZGVkKHZhbHVlLCBCTE9PTV9TRUVEXzIpICUgZmlsdGVyLT5uYml0czsKKwor CXJldHVybiBibG9vbV9jb250YWluc19oYXNoZXMoZmlsdGVyLCBoMSwgaDIpOworfQorCiB0 eXBlZGVmIHN0cnVjdCBCbG9vbU9wYXF1ZQogewogCS8qCkBAIC01OTAsNiArNjEwLDEyNCBA QCBicmluX2Jsb29tX2FkZF92YWx1ZShQR19GVU5DVElPTl9BUkdTKQogCVBHX1JFVFVSTl9C T09MKHVwZGF0ZWQpOwogfQogCisvKgorICogcHJlcHJvY2Vzc2luZyBvZiBzY2FuIGtleXMg Zm9yIHRoZSBtaW5tYXggb3BjbGFzcworICoKKyAqIENhY2hlIG9mIHByZWNhbGN1bGF0ZWQg aGFzaGVzIGZvciB2YWx1ZXMgKGVpdGhlciBhIHNpbmdsZSB2YWx1ZSBvciBhbiBhcnJheQor ICogb2YgdGhlbSkuCisgKi8KK3R5cGVkZWYgc3RydWN0IEhhc2hDYWNoZSB7CisJaW50CQlu ZWxlbWVudHM7CisJdWludDY0ICpoMTsKKwl1aW50NjQgKmgyOworfSBIYXNoQ2FjaGU7CisK Ky8qCisgKiBicmluX2Jsb29tX3ByZXByb2Nlc3MKKyAqCQlwcmVwcm9jZXNzIHNjYW4ga2V5 cyBmb3IgdGhlIGJsb29tIG9wY2xhc3MKKyAqCisgKiBGb3Igbm93IHdlIGp1c3QgY2FyZSBh Ym91dCBTS19TRUFSQ0hBUlJBWSBrZXlzLCBmb3Igd2hpY2ggd2UgcHJlY2FsY3VsYXRlCisg KiBoYXNoIHZhbHVlcyBzbyB0aGF0IHdlIGRvbid0IG5lZWQgdG8gZG8gdGhhdCBmb3IgZWFj aCBwYWdlIHJhbmdlLgorICoKKyAqIFhYWCBEbyB3ZSBuZWVkIHRvIHJlbWVtYmVyIGlmIHRo ZSBhcnJheSBjb250YWluZWQgTlVMTCB2YWx1ZXM/CisgKi8KK0RhdHVtCiticmluX2Jsb29t X3ByZXByb2Nlc3MoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlCcmluRGVzYyAgICpiZGVzYyA9 IChCcmluRGVzYyAqKSBQR19HRVRBUkdfUE9JTlRFUigwKTsKKwlTY2FuS2V5CQlrZXkgPSAo U2NhbktleSkgUEdfR0VUQVJHX1BPSU5URVIoMSk7CisJQmxvb21PcHRpb25zICpvcHRzID0g KEJsb29tT3B0aW9ucyAqKSBQR19HRVRfT1BDTEFTU19PUFRJT05TKCk7CisJU2NhbktleQkJ bmV3a2V5OworCUhhc2hDYWNoZSAgKmNhY2hlID0gcGFsbG9jMChzaXplb2YoSGFzaENhY2hl KSk7CisKKwlpbnQJCQluYml0czsKKwlGbWdySW5mbyAgICpmaW5mbzsKKwl1aW50MzIJCWhh c2hWYWx1ZTsKKworCS8qIHdlJ2xsIG5lZWQgdG8gY2FsY3VsYXRlIGhhc2hlcywgc28gZ2V0 IHRoZSBoYXNoIHByb2MgKi8KKwlmaW5mbyA9IGJsb29tX2dldF9wcm9jaW5mbyhiZGVzYywg a2V5LT5za19hdHRubywgUFJPQ05VTV9IQVNIKTsKKworCS8qCisJICogV2UgZG9uJ3QgaGF2 ZSBhIGZpbHRlciBmcm9tIGFueSByYW5nZSB5ZXQsIHNvIHdlIGp1c3QgcmUtY2FsY3VsYXRl CisJICogdGhlIHNpemUgKG51bWJlciBvZiBiaXRzKSBqdXN0IGxpa2UgYmxvb21faW5pdC4K KwkgKi8KKwlibG9vbV9maWx0ZXJfc2l6ZShicmluX2Jsb29tX2dldF9uZGlzdGluY3QoYmRl c2MsIG9wdHMpLAorCQkJCQkgIEJsb29tR2V0RmFsc2VQb3NpdGl2ZVJhdGUob3B0cyksCisJ CQkJCSAgTlVMTCwgJm5iaXRzLCBOVUxMKTsKKworCS8qIHByZWNhbGN1bGF0ZSB0aGUgaGFz aCBldmVuIGZvciBzY2FsYXIgc2NhbiBrZXlzICovCisJaWYgKCEoa2V5LT5za19mbGFncyAm IFNLX1NFQVJDSEFSUkFZKSkKKwl7CisJCURhdHVtIHZhbHVlID0ga2V5LT5za19hcmd1bWVu dDsKKworCQljYWNoZS0+bmVsZW1lbnRzID0gMTsKKwkJY2FjaGUtPmgxID0gKHVpbnQ2NCAq KSBwYWxsb2MwKHNpemVvZih1aW50NjQpKTsKKwkJY2FjaGUtPmgyID0gKHVpbnQ2NCAqKSBw YWxsb2MwKHNpemVvZih1aW50NjQpKTsKKworCQloYXNoVmFsdWUgPSBEYXR1bUdldFVJbnQz MihGdW5jdGlvbkNhbGwxQ29sbChmaW5mbywga2V5LT5za19jb2xsYXRpb24sIHZhbHVlKSk7 CisKKwkJY2FjaGUtPmgxWzBdID0gaGFzaF9ieXRlc191aW50MzJfZXh0ZW5kZWQoaGFzaFZh bHVlLCBCTE9PTV9TRUVEXzEpICUgbmJpdHM7CisJCWNhY2hlLT5oMlswXSA9IGhhc2hfYnl0 ZXNfdWludDMyX2V4dGVuZGVkKGhhc2hWYWx1ZSwgQkxPT01fU0VFRF8yKSAlIG5iaXRzOwor CX0KKwllbHNlCisJeworCQlBcnJheVR5cGUgICphcnJheXZhbDsKKwkJaW50MTYJCWVsbWxl bjsKKwkJYm9vbAkJZWxtYnl2YWw7CisJCWNoYXIJCWVsbWFsaWduOworCQlpbnQJCQludW1f ZWxlbXM7CisJCURhdHVtCSAgICplbGVtX3ZhbHVlczsKKwkJYm9vbAkgICAqZWxlbV9udWxs czsKKworCQlhcnJheXZhbCA9IERhdHVtR2V0QXJyYXlUeXBlUChrZXktPnNrX2FyZ3VtZW50 KTsKKworCQlnZXRfdHlwbGVuYnl2YWxhbGlnbihBUlJfRUxFTVRZUEUoYXJyYXl2YWwpLAor CQkJCQkJCSAmZWxtbGVuLCAmZWxtYnl2YWwsICZlbG1hbGlnbik7CisKKwkJZGVjb25zdHJ1 Y3RfYXJyYXkoYXJyYXl2YWwsCisJCQkJCQkgIEFSUl9FTEVNVFlQRShhcnJheXZhbCksCisJ CQkJCQkgIGVsbWxlbiwgZWxtYnl2YWwsIGVsbWFsaWduLAorCQkJCQkJICAmZWxlbV92YWx1 ZXMsICZlbGVtX251bGxzLCAmbnVtX2VsZW1zKTsKKworCQljYWNoZS0+aDEgPSAodWludDY0 ICopIHBhbGxvYzAoc2l6ZW9mKHVpbnQ2NCkgKiBudW1fZWxlbXMpOworCQljYWNoZS0+aDIg PSAodWludDY0ICopIHBhbGxvYzAoc2l6ZW9mKHVpbnQ2NCkgKiBudW1fZWxlbXMpOworCisJ CWZvciAoaW50IGkgPSAwOyBpIDwgbnVtX2VsZW1zOyBpKyspCisJCXsKKwkJCURhdHVtCWVs ZW1lbnQgPSBlbGVtX3ZhbHVlc1tpXTsKKworCQkJLyogaWdub3JlIE5VTEwgZWxlbWVudHMg Ki8KKwkJCWlmIChlbGVtX251bGxzW2ldKQorCQkJCWNvbnRpbnVlOworCisJCQloYXNoVmFs dWUgPSBEYXR1bUdldFVJbnQzMihGdW5jdGlvbkNhbGwxQ29sbChmaW5mbywga2V5LT5za19j b2xsYXRpb24sIGVsZW1lbnQpKTsKKworCQkJY2FjaGUtPmgxW2NhY2hlLT5uZWxlbWVudHNd ID0gaGFzaF9ieXRlc191aW50MzJfZXh0ZW5kZWQoaGFzaFZhbHVlLCBCTE9PTV9TRUVEXzEp ICUgbmJpdHM7CisJCQljYWNoZS0+aDJbY2FjaGUtPm5lbGVtZW50c10gPSBoYXNoX2J5dGVz X3VpbnQzMl9leHRlbmRlZChoYXNoVmFsdWUsIEJMT09NX1NFRURfMikgJSBuYml0czsKKwor CQkJY2FjaGUtPm5lbGVtZW50cysrOworCQl9CisKKwkJLyogZnJlZSB0aGUgZGVjb25zdHJ1 Y3RlZCBhcnJheSByZXByZXNlbnRhdGlvbiAqLworCQlwZnJlZShlbGVtX3ZhbHVlcyk7CisJ CXBmcmVlKGVsZW1fbnVsbHMpOworCX0KKworCS8qIENvbnN0cnVjdCB0aGUgbmV3IHNjYW4g a2V5LCB3aXRoIHRoZSBhcnJheSBvZiBoYXNoZXMgaW4gSGFzaENhY2hlLiAqLworCW5ld2tl eSA9IHBhbGxvYzAoc2l6ZW9mKFNjYW5LZXlEYXRhKSk7CisKKwlTY2FuS2V5RW50cnlJbml0 aWFsaXplV2l0aEluZm8obmV3a2V5LAorCQkJCQkJCQkgICAoa2V5LT5za19mbGFncyB8IFNL X0JSSU5fSEFTSEVTKSwKKwkJCQkJCQkJICAga2V5LT5za19hdHRubywKKwkJCQkJCQkJICAg a2V5LT5za19zdHJhdGVneSwKKwkJCQkJCQkJICAga2V5LT5za19zdWJ0eXBlLAorCQkJCQkJ CQkgICBrZXktPnNrX2NvbGxhdGlvbiwKKwkJCQkJCQkJICAgJmtleS0+c2tfZnVuYywKKwkJ CQkJCQkJICAgUG9pbnRlckdldERhdHVtKGNhY2hlKSk7CisKKwlQR19SRVRVUk5fUE9JTlRF UihuZXdrZXkpOworfQorCiAvKgogICogR2l2ZW4gYW4gaW5kZXggdHVwbGUgY29ycmVzcG9u ZGluZyB0byBhIGNlcnRhaW4gcGFnZSByYW5nZSBhbmQgYSBzY2FuIGtleSwKICAqIHJldHVy biB3aGV0aGVyIHRoZSBzY2FuIGtleSBpcyBjb25zaXN0ZW50IHdpdGggdGhlIGluZGV4IHR1 cGxlJ3MgYmxvb20KQEAgLTYzMSwxOCArNzY5LDEwMiBAQCBicmluX2Jsb29tX2NvbnNpc3Rl bnQoUEdfRlVOQ1RJT05fQVJHUykKIAkJYXR0bm8gPSBrZXktPnNrX2F0dG5vOwogCQl2YWx1 ZSA9IGtleS0+c2tfYXJndW1lbnQ7CiAKKwkJLyoKKwkJICogVGhlIG9wY2xhc3MgbWF5IG5v dCB1c2UgdGhlIG9wdGlvbmFsIHByZXByb2Nlc3MgcHJvY2VkdXJlLCBpbiB3aGljaAorCQkg KiBjYXNlIHdlIG5lZWQgdG8gY2FsY3VsYXRlIHRoZSBoYXNoIGhlcmUgYXMgYmVmb3JlLgor CQkgKgorCQkgKiBXaXRoIHByZXByb2Nlc3NlZCBrZXlzIHdlIGp1c3QgdXNlIHRoZSBoYXNo IGNhY2hlIChldmVuIGZvciBzY2FsYXIKKwkJICoga2V5cywgbm90IGp1c3QgZm9yIFNLX1NF QVJDSEFSUkFZIG9uZXMpLgorCQkgKi8KIAkJc3dpdGNoIChrZXktPnNrX3N0cmF0ZWd5KQog CQl7CiAJCQljYXNlIEJsb29tRXF1YWxTdHJhdGVneU51bWJlcjoKIAotCQkJCS8qCi0JCQkJ ICogV2Ugd2FudCB0byByZXR1cm4gdGhlIGN1cnJlbnQgcGFnZSByYW5nZSBpZiB0aGUgYmxv b20gZmlsdGVyCi0JCQkJICogc2VlbXMgdG8gY29udGFpbiB0aGUgdmFsdWUuCi0JCQkJICov Ci0JCQkJZmluZm8gPSBibG9vbV9nZXRfcHJvY2luZm8oYmRlc2MsIGF0dG5vLCBQUk9DTlVN X0hBU0gpOwotCi0JCQkJaGFzaFZhbHVlID0gRGF0dW1HZXRVSW50MzIoRnVuY3Rpb25DYWxs MUNvbGwoZmluZm8sIGNvbGxvaWQsIHZhbHVlKSk7Ci0JCQkJbWF0Y2hlcyAmPSBibG9vbV9j b250YWluc192YWx1ZShmaWx0ZXIsIGhhc2hWYWx1ZSk7CisJCQkJaWYgKGtleS0+c2tfZmxh Z3MgJiBTS19CUklOX0hBU0hFUykJCS8qIHByZXByb2Nlc3NlZCBrZXlzICovCisJCQkJewor CQkJCQlIYXNoQ2FjaGUgICpjYWNoZSA9IChIYXNoQ2FjaGUgKikgdmFsdWU7CisKKwkJCQkJ LyogYXNzdW1lIG5vIG1hdGNoICovCisJCQkJCW1hdGNoZXMgPSBmYWxzZTsKKworCQkJCQkv KgorCQkJCQkgKiBXZSB3YW50IHRvIHJldHVybiB0aGUgY3VycmVudCBwYWdlIHJhbmdlIGlm IHRoZSBibG9vbSBmaWx0ZXIKKwkJCQkJICogc2VlbXMgdG8gY29udGFpbiBhbnkgb2YgdGhl IHZhbHVlcyAob3IgYSBzaW5nbGUgdmFsdWUpLgorCQkJCQkgKgorCQkJCQkgKiBYWFggV2l0 aCBlbXB0eSBjYWNoZSAod2hpY2ggY2FuIGhhcHBlbiBmb3IgSU4gY2xhdXNlIHdpdGgKKwkJ CQkJICogb25seSBOVUxMIHZhbHVlcyksIHdlIGxlYXZlIHRoZSBtYXRjaGVzIGZsYWcgc2V0 IHRvIGZhbHNlLgorCQkJCQkgKi8KKwkJCQkJZm9yIChpbnQgaSA9IDA7IGkgPCBjYWNoZS0+ bmVsZW1lbnRzOyBpKyspCisJCQkJCXsKKwkJCQkJCWJvb2wJdG1wID0gZmFsc2U7CisKKwkJ CQkJCXRtcCA9IGJsb29tX2NvbnRhaW5zX2hhc2hlcyhmaWx0ZXIsIGNhY2hlLT5oMVtpXSwg Y2FjaGUtPmgyW2ldKTsKKworCQkJCQkJLyogaWYgd2UgZm91bmQgYSBtYXRjaGluZyB2YWx1 ZSwgd2UgaGF2ZSBhIG1hdGNoICovCisJCQkJCQlpZiAoRGF0dW1HZXRCb29sKHRtcCkpCisJ CQkJCQl7CisJCQkJCQkJbWF0Y2hlcyA9IEJvb2xHZXREYXR1bSh0cnVlKTsKKwkJCQkJCQli cmVhazsKKwkJCQkJCX0KKwkJCQkJfQorCQkJCX0KKwkJCQllbHNlIGlmIChrZXktPnNrX2Zs YWdzICYgU0tfU0VBUkNIQVJSQVkpCS8qIGFycmF5IHdpdGhvdXQgcHJlcHJvY2Vzc2luZyAq LworCQkJCXsKKwkJCQkJQXJyYXlUeXBlICAqYXJyYXl2YWw7CisJCQkJCWludDE2CQllbG1s ZW47CisJCQkJCWJvb2wJCWVsbWJ5dmFsOworCQkJCQljaGFyCQllbG1hbGlnbjsKKwkJCQkJ aW50CQkJbnVtX2VsZW1zOworCQkJCQlEYXR1bQkgICAqZWxlbV92YWx1ZXM7CisJCQkJCWJv b2wJICAgKmVsZW1fbnVsbHM7CisJCQkJCWJvb2wJCW1hdGNoID0gZmFsc2U7CisKKwkJCQkJ LyogZGVjb25zdHJ1Y3QgdGhlIGFycmF5ICovCisJCQkJCWFycmF5dmFsID0gRGF0dW1HZXRB cnJheVR5cGVQKHZhbHVlKTsKKworCQkJCQlnZXRfdHlwbGVuYnl2YWxhbGlnbihBUlJfRUxF TVRZUEUoYXJyYXl2YWwpLAorCQkJCQkJCQkJCSAmZWxtbGVuLCAmZWxtYnl2YWwsICZlbG1h bGlnbik7CisKKwkJCQkJZGVjb25zdHJ1Y3RfYXJyYXkoYXJyYXl2YWwsCisJCQkJCQkJCQkg IEFSUl9FTEVNVFlQRShhcnJheXZhbCksCisJCQkJCQkJCQkgIGVsbWxlbiwgZWxtYnl2YWws IGVsbWFsaWduLAorCQkJCQkJCQkJICAmZWxlbV92YWx1ZXMsICZlbGVtX251bGxzLCAmbnVt X2VsZW1zKTsKKworCQkJCQkvKgorCQkJCQkgKiBXZSB3YW50IHRvIHJldHVybiB0aGUgY3Vy cmVudCBwYWdlIHJhbmdlIGlmIHRoZSBibG9vbSBmaWx0ZXIKKwkJCQkJICogc2VlbXMgdG8g Y29udGFpbiB0aGUgdmFsdWUuCisJCQkJCSAqLworCQkJCQlmaW5mbyA9IGJsb29tX2dldF9w cm9jaW5mbyhiZGVzYywgYXR0bm8sIFBST0NOVU1fSEFTSCk7CisKKwkJCQkJLyogd2UnbGwg c2tpcCBOVUxMIGVsZW1lbnRzICovCisJCQkJCWZvciAoaW50IGkgPSAwOyBpIDwgbnVtX2Vs ZW1zOyBpKyspCisJCQkJCXsKKwkJCQkJCS8qIHNraXAgTlVMTCBlbGVtZW50cyAqLworCQkJ CQkJaWYgKGVsZW1fbnVsbHNbaV0pCisJCQkJCQkJY29udGludWU7CisKKwkJCQkJCWhhc2hW YWx1ZSA9IERhdHVtR2V0VUludDMyKEZ1bmN0aW9uQ2FsbDFDb2xsKGZpbmZvLCBjb2xsb2lk LCBlbGVtX3ZhbHVlc1tpXSkpOworCQkJCQkJbWF0Y2ggPSBibG9vbV9jb250YWluc192YWx1 ZShmaWx0ZXIsIGhhc2hWYWx1ZSk7CisKKwkJCQkJCS8qIGRpZCB3ZSBmaW5kIGEgbWF0Y2gg aW4gdGhlIGFycmF5PyAqLworCQkJCQkJaWYgKG1hdGNoKQorCQkJCQkJCWJyZWFrOworCQkJ CQl9CisKKwkJCQkJbWF0Y2hlcyAmPSBtYXRjaDsKKworCQkJCX0KKwkJCQllbHNlCS8qIHNj YWxhciB2YWx1ZSB3aXRob3V0IHByZXByb2Nlc3NpbmcgKi8KKwkJCQl7CisJCQkJCS8qCisJ CQkJCSAqIFdlIHdhbnQgdG8gcmV0dXJuIHRoZSBjdXJyZW50IHBhZ2UgcmFuZ2UgaWYgdGhl IGJsb29tIGZpbHRlcgorCQkJCQkgKiBzZWVtcyB0byBjb250YWluIHRoZSB2YWx1ZS4KKwkJ CQkJICovCisJCQkJCWZpbmZvID0gYmxvb21fZ2V0X3Byb2NpbmZvKGJkZXNjLCBhdHRubywg UFJPQ05VTV9IQVNIKTsKKworCQkJCQloYXNoVmFsdWUgPSBEYXR1bUdldFVJbnQzMihGdW5j dGlvbkNhbGwxQ29sbChmaW5mbywgY29sbG9pZCwgdmFsdWUpKTsKKwkJCQkJbWF0Y2hlcyAm PSBibG9vbV9jb250YWluc192YWx1ZShmaWx0ZXIsIGhhc2hWYWx1ZSk7CisJCQkJfQogCiAJ CQkJYnJlYWs7CiAJCQlkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19hbXByb2MuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19hbXByb2MuZGF0Cmlu ZGV4IGVkNWIyMWU3ZjkuLmQ5NTFmY2QxYTAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2Nh dGFsb2cvcGdfYW1wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2FtcHJv Yy5kYXQKQEAgLTgyMiw2ICs4MjIsOSBAQAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vYnl0 ZWFfYmxvb21fb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2J5dGVhJywKICAgYW1wcm9jcmln aHR0eXBlID0+ICdieXRlYScsIGFtcHJvY251bSA9PiAnNScsCiAgIGFtcHJvYyA9PiAnYnJp bl9ibG9vbV9vcHRpb25zJyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vYnl0ZWFfYmxv b21fb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2J5dGVhJywKKyAgYW1wcm9jcmlnaHR0eXBl ID0+ICdieXRlYScsIGFtcHJvY251bSA9PiAnNicsCisgIGFtcHJvYyA9PiAnYnJpbl9ibG9v bV9wcmVwcm9jZXNzJyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vYnl0ZWFfYmxvb21f b3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2J5dGVhJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ ICdieXRlYScsIGFtcHJvY251bSA9PiAnMTEnLCBhbXByb2MgPT4gJ2hhc2h2YXJsZW5hJyB9 LAogCkBAIC04NTMsNiArODU2LDggQEAKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdjaGFyJywg YW1wcm9jbnVtID0+ICc0JywgYW1wcm9jID0+ICdicmluX2Jsb29tX3VuaW9uJyB9LAogeyBh bXByb2NmYW1pbHkgPT4gJ2JyaW4vY2hhcl9ibG9vbV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9 PiAnY2hhcicsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnY2hhcicsIGFtcHJvY251bSA9PiAn NScsIGFtcHJvYyA9PiAnYnJpbl9ibG9vbV9vcHRpb25zJyB9LAoreyBhbXByb2NmYW1pbHkg PT4gJ2JyaW4vY2hhcl9ibG9vbV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnY2hhcicsCisg IGFtcHJvY3JpZ2h0dHlwZSA9PiAnY2hhcicsIGFtcHJvY251bSA9PiAnNicsIGFtcHJvYyA9 PiAnYnJpbl9ibG9vbV9wcmVwcm9jZXNzJyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4v Y2hhcl9ibG9vbV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnY2hhcicsCiAgIGFtcHJvY3Jp Z2h0dHlwZSA9PiAnY2hhcicsIGFtcHJvY251bSA9PiAnMTEnLCBhbXByb2MgPT4gJ2hhc2hj aGFyJyB9LAogCkBAIC04ODQsNiArODg5LDggQEAKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdu YW1lJywgYW1wcm9jbnVtID0+ICc0JywgYW1wcm9jID0+ICdicmluX2Jsb29tX3VuaW9uJyB9 LAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vbmFtZV9ibG9vbV9vcHMnLCBhbXByb2NsZWZ0 dHlwZSA9PiAnbmFtZScsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnbmFtZScsIGFtcHJvY251 bSA9PiAnNScsIGFtcHJvYyA9PiAnYnJpbl9ibG9vbV9vcHRpb25zJyB9LAoreyBhbXByb2Nm YW1pbHkgPT4gJ2JyaW4vbmFtZV9ibG9vbV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnbmFt ZScsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnbmFtZScsIGFtcHJvY251bSA9PiAnNicsIGFt cHJvYyA9PiAnYnJpbl9ibG9vbV9wcmVwcm9jZXNzJyB9LAogeyBhbXByb2NmYW1pbHkgPT4g J2JyaW4vbmFtZV9ibG9vbV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnbmFtZScsCiAgIGFt cHJvY3JpZ2h0dHlwZSA9PiAnbmFtZScsIGFtcHJvY251bSA9PiAnMTEnLCBhbXByb2MgPT4g J2hhc2huYW1lJyB9LAogCkBAIC0xMDEwLDYgKzEwMTcsOCBAQAogICBhbXByb2NyaWdodHR5 cGUgPT4gJ2ludDgnLCBhbXByb2NudW0gPT4gJzQnLCBhbXByb2MgPT4gJ2JyaW5fYmxvb21f dW5pb24nIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9pbnRlZ2VyX2Jsb29tX29wcycs IGFtcHJvY2xlZnR0eXBlID0+ICdpbnQ4JywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdpbnQ4 JywgYW1wcm9jbnVtID0+ICc1JywgYW1wcm9jID0+ICdicmluX2Jsb29tX29wdGlvbnMnIH0s Cit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9pbnRlZ2VyX2Jsb29tX29wcycsIGFtcHJvY2xl ZnR0eXBlID0+ICdpbnQ4JywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICdpbnQ4JywgYW1wcm9j bnVtID0+ICc2JywgYW1wcm9jID0+ICdicmluX2Jsb29tX3ByZXByb2Nlc3MnIH0sCiB7IGFt cHJvY2ZhbWlseSA9PiAnYnJpbi9pbnRlZ2VyX2Jsb29tX29wcycsIGFtcHJvY2xlZnR0eXBl ID0+ICdpbnQ4JywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdpbnQ4JywgYW1wcm9jbnVtID0+ ICcxMScsIGFtcHJvYyA9PiAnaGFzaGludDgnIH0sCiAKQEAgLTEwMjUsNiArMTAzNCw4IEBA CiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnaW50MicsIGFtcHJvY251bSA9PiAnNCcsIGFtcHJv YyA9PiAnYnJpbl9ibG9vbV91bmlvbicgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL2lu dGVnZXJfYmxvb21fb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2ludDInLAogICBhbXByb2Ny aWdodHR5cGUgPT4gJ2ludDInLCBhbXByb2NudW0gPT4gJzUnLCBhbXByb2MgPT4gJ2JyaW5f Ymxvb21fb3B0aW9ucycgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL2ludGVnZXJfYmxv b21fb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2ludDInLAorICBhbXByb2NyaWdodHR5cGUg PT4gJ2ludDInLCBhbXByb2NudW0gPT4gJzYnLCBhbXByb2MgPT4gJ2JyaW5fYmxvb21fcHJl cHJvY2VzcycgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL2ludGVnZXJfYmxvb21fb3Bz JywgYW1wcm9jbGVmdHR5cGUgPT4gJ2ludDInLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2lu dDInLCBhbXByb2NudW0gPT4gJzExJywgYW1wcm9jID0+ICdoYXNoaW50MicgfSwKIApAQCAt MTA0MCw2ICsxMDUxLDggQEAKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdpbnQ0JywgYW1wcm9j bnVtID0+ICc0JywgYW1wcm9jID0+ICdicmluX2Jsb29tX3VuaW9uJyB9LAogeyBhbXByb2Nm YW1pbHkgPT4gJ2JyaW4vaW50ZWdlcl9ibG9vbV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAn aW50NCcsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnaW50NCcsIGFtcHJvY251bSA9PiAnNScs IGFtcHJvYyA9PiAnYnJpbl9ibG9vbV9vcHRpb25zJyB9LAoreyBhbXByb2NmYW1pbHkgPT4g J2JyaW4vaW50ZWdlcl9ibG9vbV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnaW50NCcsCisg IGFtcHJvY3JpZ2h0dHlwZSA9PiAnaW50NCcsIGFtcHJvY251bSA9PiAnNicsIGFtcHJvYyA9 PiAnYnJpbl9ibG9vbV9wcmVwcm9jZXNzJyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4v aW50ZWdlcl9ibG9vbV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnaW50NCcsCiAgIGFtcHJv Y3JpZ2h0dHlwZSA9PiAnaW50NCcsIGFtcHJvY251bSA9PiAnMTEnLCBhbXByb2MgPT4gJ2hh c2hpbnQ0JyB9LAogCkBAIC0xMDcxLDYgKzEwODQsOCBAQAogICBhbXByb2NyaWdodHR5cGUg PT4gJ3RleHQnLCBhbXByb2NudW0gPT4gJzQnLCBhbXByb2MgPT4gJ2JyaW5fYmxvb21fdW5p b24nIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi90ZXh0X2Jsb29tX29wcycsIGFtcHJv Y2xlZnR0eXBlID0+ICd0ZXh0JywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICd0ZXh0JywgYW1w cm9jbnVtID0+ICc1JywgYW1wcm9jID0+ICdicmluX2Jsb29tX29wdGlvbnMnIH0sCit7IGFt cHJvY2ZhbWlseSA9PiAnYnJpbi90ZXh0X2Jsb29tX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ ICd0ZXh0JywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICd0ZXh0JywgYW1wcm9jbnVtID0+ICc2 JywgYW1wcm9jID0+ICdicmluX2Jsb29tX3ByZXByb2Nlc3MnIH0sCiB7IGFtcHJvY2ZhbWls eSA9PiAnYnJpbi90ZXh0X2Jsb29tX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICd0ZXh0JywK ICAgYW1wcm9jcmlnaHR0eXBlID0+ICd0ZXh0JywgYW1wcm9jbnVtID0+ICcxMScsIGFtcHJv YyA9PiAnaGFzaHRleHQnIH0sCiAKQEAgLTExMjQsNiArMTEzOSw4IEBACiAgIGFtcHJvY3Jp Z2h0dHlwZSA9PiAnb2lkJywgYW1wcm9jbnVtID0+ICc0JywgYW1wcm9jID0+ICdicmluX2Js b29tX3VuaW9uJyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vb2lkX2Jsb29tX29wcycs IGFtcHJvY2xlZnR0eXBlID0+ICdvaWQnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ29pZCcs IGFtcHJvY251bSA9PiAnNScsIGFtcHJvYyA9PiAnYnJpbl9ibG9vbV9vcHRpb25zJyB9LAor eyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vb2lkX2Jsb29tX29wcycsIGFtcHJvY2xlZnR0eXBl ID0+ICdvaWQnLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ29pZCcsIGFtcHJvY251bSA9PiAn NicsIGFtcHJvYyA9PiAnYnJpbl9ibG9vbV9wcmVwcm9jZXNzJyB9LAogeyBhbXByb2NmYW1p bHkgPT4gJ2JyaW4vb2lkX2Jsb29tX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdvaWQnLAog ICBhbXByb2NyaWdodHR5cGUgPT4gJ29pZCcsIGFtcHJvY251bSA9PiAnMTEnLCBhbXByb2Mg PT4gJ2hhc2hvaWQnIH0sCiAKQEAgLTExNTQsNiArMTE3MSw4IEBACiAgIGFtcHJvY3JpZ2h0 dHlwZSA9PiAndGlkJywgYW1wcm9jbnVtID0+ICc0JywgYW1wcm9jID0+ICdicmluX2Jsb29t X3VuaW9uJyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vdGlkX2Jsb29tX29wcycsIGFt cHJvY2xlZnR0eXBlID0+ICd0aWQnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ3RpZCcsIGFt cHJvY251bSA9PiAnNScsIGFtcHJvYyA9PiAnYnJpbl9ibG9vbV9vcHRpb25zJyB9LAoreyBh bXByb2NmYW1pbHkgPT4gJ2JyaW4vdGlkX2Jsb29tX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ ICd0aWQnLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ3RpZCcsIGFtcHJvY251bSA9PiAnNics IGFtcHJvYyA9PiAnYnJpbl9ibG9vbV9wcmVwcm9jZXNzJyB9LAogeyBhbXByb2NmYW1pbHkg PT4gJ2JyaW4vdGlkX2Jsb29tX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICd0aWQnLAogICBh bXByb2NyaWdodHR5cGUgPT4gJ3RpZCcsIGFtcHJvY251bSA9PiAnMTEnLCBhbXByb2MgPT4g J2hhc2h0aWQnIH0sCiAKQEAgLTEyNzMsNiArMTI5Miw5IEBACiB7IGFtcHJvY2ZhbWlseSA9 PiAnYnJpbi9mbG9hdF9ibG9vbV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnZmxvYXQ0JywK ICAgYW1wcm9jcmlnaHR0eXBlID0+ICdmbG9hdDQnLCBhbXByb2NudW0gPT4gJzUnLAogICBh bXByb2MgPT4gJ2JyaW5fYmxvb21fb3B0aW9ucycgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdi cmluL2Zsb2F0X2Jsb29tX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdmbG9hdDQnLAorICBh bXByb2NyaWdodHR5cGUgPT4gJ2Zsb2F0NCcsIGFtcHJvY251bSA9PiAnNicsCisgIGFtcHJv YyA9PiAnYnJpbl9ibG9vbV9wcmVwcm9jZXNzJyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2Jy aW4vZmxvYXRfYmxvb21fb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2Zsb2F0NCcsCiAgIGFt cHJvY3JpZ2h0dHlwZSA9PiAnZmxvYXQ0JywgYW1wcm9jbnVtID0+ICcxMScsIGFtcHJvYyA9 PiAnaGFzaGZsb2F0NCcgfSwKIApAQCAtMTI5MCw2ICsxMzEyLDkgQEAKIHsgYW1wcm9jZmFt aWx5ID0+ICdicmluL2Zsb2F0X2Jsb29tX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdmbG9h dDgnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2Zsb2F0OCcsIGFtcHJvY251bSA9PiAnNScs CiAgIGFtcHJvYyA9PiAnYnJpbl9ibG9vbV9vcHRpb25zJyB9LAoreyBhbXByb2NmYW1pbHkg PT4gJ2JyaW4vZmxvYXRfYmxvb21fb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2Zsb2F0OCcs CisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnZmxvYXQ4JywgYW1wcm9jbnVtID0+ICc2JywKKyAg YW1wcm9jID0+ICdicmluX2Jsb29tX3ByZXByb2Nlc3MnIH0sCiB7IGFtcHJvY2ZhbWlseSA9 PiAnYnJpbi9mbG9hdF9ibG9vbV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnZmxvYXQ4JywK ICAgYW1wcm9jcmlnaHR0eXBlID0+ICdmbG9hdDgnLCBhbXByb2NudW0gPT4gJzExJywgYW1w cm9jID0+ICdoYXNoZmxvYXQ4JyB9LAogCkBAIC0xMzQ5LDYgKzEzNzQsOSBAQAogeyBhbXBy b2NmYW1pbHkgPT4gJ2JyaW4vbWFjYWRkcl9ibG9vbV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9 PiAnbWFjYWRkcicsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnbWFjYWRkcicsIGFtcHJvY251 bSA9PiAnNScsCiAgIGFtcHJvYyA9PiAnYnJpbl9ibG9vbV9vcHRpb25zJyB9LAoreyBhbXBy b2NmYW1pbHkgPT4gJ2JyaW4vbWFjYWRkcl9ibG9vbV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9 PiAnbWFjYWRkcicsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnbWFjYWRkcicsIGFtcHJvY251 bSA9PiAnNicsCisgIGFtcHJvYyA9PiAnYnJpbl9ibG9vbV9wcmVwcm9jZXNzJyB9LAogeyBh bXByb2NmYW1pbHkgPT4gJ2JyaW4vbWFjYWRkcl9ibG9vbV9vcHMnLCBhbXByb2NsZWZ0dHlw ZSA9PiAnbWFjYWRkcicsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnbWFjYWRkcicsIGFtcHJv Y251bSA9PiAnMTEnLCBhbXByb2MgPT4gJ2hhc2htYWNhZGRyJyB9LAogCkBAIC0xNDA4LDYg KzE0MzYsOSBAQAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vbWFjYWRkcjhfYmxvb21fb3Bz JywgYW1wcm9jbGVmdHR5cGUgPT4gJ21hY2FkZHI4JywKICAgYW1wcm9jcmlnaHR0eXBlID0+ ICdtYWNhZGRyOCcsIGFtcHJvY251bSA9PiAnNScsCiAgIGFtcHJvYyA9PiAnYnJpbl9ibG9v bV9vcHRpb25zJyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vbWFjYWRkcjhfYmxvb21f b3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ21hY2FkZHI4JywKKyAgYW1wcm9jcmlnaHR0eXBl ID0+ICdtYWNhZGRyOCcsIGFtcHJvY251bSA9PiAnNicsCisgIGFtcHJvYyA9PiAnYnJpbl9i bG9vbV9wcmVwcm9jZXNzJyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vbWFjYWRkcjhf Ymxvb21fb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ21hY2FkZHI4JywKICAgYW1wcm9jcmln aHR0eXBlID0+ICdtYWNhZGRyOCcsIGFtcHJvY251bSA9PiAnMTEnLCBhbXByb2MgPT4gJ2hh c2htYWNhZGRyOCcgfSwKIApAQCAtMTQ2Miw2ICsxNDkzLDggQEAKICAgYW1wcm9jcmlnaHR0 eXBlID0+ICdpbmV0JywgYW1wcm9jbnVtID0+ICc0JywgYW1wcm9jID0+ICdicmluX2Jsb29t X3VuaW9uJyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vbmV0d29ya19ibG9vbV9vcHMn LCBhbXByb2NsZWZ0dHlwZSA9PiAnaW5ldCcsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnaW5l dCcsIGFtcHJvY251bSA9PiAnNScsIGFtcHJvYyA9PiAnYnJpbl9ibG9vbV9vcHRpb25zJyB9 LAoreyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vbmV0d29ya19ibG9vbV9vcHMnLCBhbXByb2Ns ZWZ0dHlwZSA9PiAnaW5ldCcsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnaW5ldCcsIGFtcHJv Y251bSA9PiAnNicsIGFtcHJvYyA9PiAnYnJpbl9ibG9vbV9wcmVwcm9jZXNzJyB9LAogeyBh bXByb2NmYW1pbHkgPT4gJ2JyaW4vbmV0d29ya19ibG9vbV9vcHMnLCBhbXByb2NsZWZ0dHlw ZSA9PiAnaW5ldCcsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnaW5ldCcsIGFtcHJvY251bSA9 PiAnMTEnLCBhbXByb2MgPT4gJ2hhc2hpbmV0JyB9LAogCkBAIC0xNTIwLDYgKzE1NTMsOSBA QAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vYnBjaGFyX2Jsb29tX29wcycsIGFtcHJvY2xl ZnR0eXBlID0+ICdicGNoYXInLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2JwY2hhcicsIGFt cHJvY251bSA9PiAnNScsCiAgIGFtcHJvYyA9PiAnYnJpbl9ibG9vbV9vcHRpb25zJyB9LAor eyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vYnBjaGFyX2Jsb29tX29wcycsIGFtcHJvY2xlZnR0 eXBlID0+ICdicGNoYXInLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ2JwY2hhcicsIGFtcHJv Y251bSA9PiAnNicsCisgIGFtcHJvYyA9PiAnYnJpbl9ibG9vbV9wcmVwcm9jZXNzJyB9LAog eyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vYnBjaGFyX2Jsb29tX29wcycsIGFtcHJvY2xlZnR0 eXBlID0+ICdicGNoYXInLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2JwY2hhcicsIGFtcHJv Y251bSA9PiAnMTEnLCBhbXByb2MgPT4gJ2hhc2hicGNoYXInIH0sCiAKQEAgLTE1NzQsNiAr MTYxMCw4IEBACiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAndGltZScsIGFtcHJvY251bSA9PiAn NCcsIGFtcHJvYyA9PiAnYnJpbl9ibG9vbV91bmlvbicgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ ICdicmluL3RpbWVfYmxvb21fb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3RpbWUnLAogICBh bXByb2NyaWdodHR5cGUgPT4gJ3RpbWUnLCBhbXByb2NudW0gPT4gJzUnLCBhbXByb2MgPT4g J2JyaW5fYmxvb21fb3B0aW9ucycgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL3RpbWVf Ymxvb21fb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3RpbWUnLAorICBhbXByb2NyaWdodHR5 cGUgPT4gJ3RpbWUnLCBhbXByb2NudW0gPT4gJzYnLCBhbXByb2MgPT4gJ2JyaW5fYmxvb21f cHJlcHJvY2VzcycgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL3RpbWVfYmxvb21fb3Bz JywgYW1wcm9jbGVmdHR5cGUgPT4gJ3RpbWUnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ3Rp bWUnLCBhbXByb2NudW0gPT4gJzExJywgYW1wcm9jID0+ICd0aW1lX2hhc2gnIH0sCiAKQEAg LTE3MDcsNiArMTc0NSw5IEBACiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9kYXRldGltZV9i bG9vbV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAndGltZXN0YW1wJywKICAgYW1wcm9jcmln aHR0eXBlID0+ICd0aW1lc3RhbXAnLCBhbXByb2NudW0gPT4gJzUnLAogICBhbXByb2MgPT4g J2JyaW5fYmxvb21fb3B0aW9ucycgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL2RhdGV0 aW1lX2Jsb29tX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICd0aW1lc3RhbXAnLAorICBhbXBy b2NyaWdodHR5cGUgPT4gJ3RpbWVzdGFtcCcsIGFtcHJvY251bSA9PiAnNicsCisgIGFtcHJv YyA9PiAnYnJpbl9ibG9vbV9wcmVwcm9jZXNzJyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2Jy aW4vZGF0ZXRpbWVfYmxvb21fb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3RpbWVzdGFtcCcs CiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAndGltZXN0YW1wJywgYW1wcm9jbnVtID0+ICcxMScs CiAgIGFtcHJvYyA9PiAndGltZXN0YW1wX2hhc2gnIH0sCkBAIC0xNzI2LDYgKzE3NjcsOSBA QAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vZGF0ZXRpbWVfYmxvb21fb3BzJywgYW1wcm9j bGVmdHR5cGUgPT4gJ3RpbWVzdGFtcHR6JywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICd0aW1l c3RhbXB0eicsIGFtcHJvY251bSA9PiAnNScsCiAgIGFtcHJvYyA9PiAnYnJpbl9ibG9vbV9v cHRpb25zJyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vZGF0ZXRpbWVfYmxvb21fb3Bz JywgYW1wcm9jbGVmdHR5cGUgPT4gJ3RpbWVzdGFtcHR6JywKKyAgYW1wcm9jcmlnaHR0eXBl ID0+ICd0aW1lc3RhbXB0eicsIGFtcHJvY251bSA9PiAnNicsCisgIGFtcHJvYyA9PiAnYnJp bl9ibG9vbV9wcmVwcm9jZXNzJyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vZGF0ZXRp bWVfYmxvb21fb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3RpbWVzdGFtcHR6JywKICAgYW1w cm9jcmlnaHR0eXBlID0+ICd0aW1lc3RhbXB0eicsIGFtcHJvY251bSA9PiAnMTEnLAogICBh bXByb2MgPT4gJ3RpbWVzdGFtcF9oYXNoJyB9LApAQCAtMTc0Miw2ICsxNzg2LDggQEAKICAg YW1wcm9jcmlnaHR0eXBlID0+ICdkYXRlJywgYW1wcm9jbnVtID0+ICc0JywgYW1wcm9jID0+ ICdicmluX2Jsb29tX3VuaW9uJyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vZGF0ZXRp bWVfYmxvb21fb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2RhdGUnLAogICBhbXByb2NyaWdo dHR5cGUgPT4gJ2RhdGUnLCBhbXByb2NudW0gPT4gJzUnLCBhbXByb2MgPT4gJ2JyaW5fYmxv b21fb3B0aW9ucycgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL2RhdGV0aW1lX2Jsb29t X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdkYXRlJywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ ICdkYXRlJywgYW1wcm9jbnVtID0+ICc2JywgYW1wcm9jID0+ICdicmluX2Jsb29tX3ByZXBy b2Nlc3MnIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9kYXRldGltZV9ibG9vbV9vcHMn LCBhbXByb2NsZWZ0dHlwZSA9PiAnZGF0ZScsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnZGF0 ZScsIGFtcHJvY251bSA9PiAnMTEnLCBhbXByb2MgPT4gJ2hhc2hpbnQ0JyB9LAogCkBAIC0x ODAxLDYgKzE4NDcsOSBAQAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vaW50ZXJ2YWxfYmxv b21fb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2ludGVydmFsJywKICAgYW1wcm9jcmlnaHR0 eXBlID0+ICdpbnRlcnZhbCcsIGFtcHJvY251bSA9PiAnNScsCiAgIGFtcHJvYyA9PiAnYnJp bl9ibG9vbV9vcHRpb25zJyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vaW50ZXJ2YWxf Ymxvb21fb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2ludGVydmFsJywKKyAgYW1wcm9jcmln aHR0eXBlID0+ICdpbnRlcnZhbCcsIGFtcHJvY251bSA9PiAnNicsCisgIGFtcHJvYyA9PiAn YnJpbl9ibG9vbV9wcmVwcm9jZXNzJyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vaW50 ZXJ2YWxfYmxvb21fb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2ludGVydmFsJywKICAgYW1w cm9jcmlnaHR0eXBlID0+ICdpbnRlcnZhbCcsIGFtcHJvY251bSA9PiAnMTEnLCBhbXByb2Mg PT4gJ2ludGVydmFsX2hhc2gnIH0sCiAKQEAgLTE4NTksNiArMTkwOCw5IEBACiB7IGFtcHJv Y2ZhbWlseSA9PiAnYnJpbi90aW1ldHpfYmxvb21fb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4g J3RpbWV0eicsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAndGltZXR6JywgYW1wcm9jbnVtID0+ ICc1JywKICAgYW1wcm9jID0+ICdicmluX2Jsb29tX29wdGlvbnMnIH0sCit7IGFtcHJvY2Zh bWlseSA9PiAnYnJpbi90aW1ldHpfYmxvb21fb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3Rp bWV0eicsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAndGltZXR6JywgYW1wcm9jbnVtID0+ICc2 JywKKyAgYW1wcm9jID0+ICdicmluX2Jsb29tX3ByZXByb2Nlc3MnIH0sCiB7IGFtcHJvY2Zh bWlseSA9PiAnYnJpbi90aW1ldHpfYmxvb21fb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3Rp bWV0eicsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAndGltZXR6JywgYW1wcm9jbnVtID0+ICcx MScsIGFtcHJvYyA9PiAndGltZXR6X2hhc2gnIH0sCiAKQEAgLTE5NDksNiArMjAwMSw5IEBA CiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9udW1lcmljX2Jsb29tX29wcycsIGFtcHJvY2xl ZnR0eXBlID0+ICdudW1lcmljJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdudW1lcmljJywg YW1wcm9jbnVtID0+ICc1JywKICAgYW1wcm9jID0+ICdicmluX2Jsb29tX29wdGlvbnMnIH0s Cit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9udW1lcmljX2Jsb29tX29wcycsIGFtcHJvY2xl ZnR0eXBlID0+ICdudW1lcmljJywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICdudW1lcmljJywg YW1wcm9jbnVtID0+ICc2JywKKyAgYW1wcm9jID0+ICdicmluX2Jsb29tX3ByZXByb2Nlc3Mn IH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9udW1lcmljX2Jsb29tX29wcycsIGFtcHJv Y2xlZnR0eXBlID0+ICdudW1lcmljJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdudW1lcmlj JywgYW1wcm9jbnVtID0+ICcxMScsIGFtcHJvYyA9PiAnaGFzaF9udW1lcmljJyB9LAogCkBA IC0yMDAzLDYgKzIwNTgsOCBAQAogICBhbXByb2NyaWdodHR5cGUgPT4gJ3V1aWQnLCBhbXBy b2NudW0gPT4gJzQnLCBhbXByb2MgPT4gJ2JyaW5fYmxvb21fdW5pb24nIH0sCiB7IGFtcHJv Y2ZhbWlseSA9PiAnYnJpbi91dWlkX2Jsb29tX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICd1 dWlkJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICd1dWlkJywgYW1wcm9jbnVtID0+ICc1Jywg YW1wcm9jID0+ICdicmluX2Jsb29tX29wdGlvbnMnIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAn YnJpbi91dWlkX2Jsb29tX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICd1dWlkJywKKyAgYW1w cm9jcmlnaHR0eXBlID0+ICd1dWlkJywgYW1wcm9jbnVtID0+ICc2JywgYW1wcm9jID0+ICdi cmluX2Jsb29tX3ByZXByb2Nlc3MnIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi91dWlk X2Jsb29tX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICd1dWlkJywKICAgYW1wcm9jcmlnaHR0 eXBlID0+ICd1dWlkJywgYW1wcm9jbnVtID0+ICcxMScsIGFtcHJvYyA9PiAndXVpZF9oYXNo JyB9LAogCkBAIC0yMDg3LDYgKzIxNDQsOSBAQAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4v cGdfbHNuX2Jsb29tX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdwZ19sc24nLAogICBhbXBy b2NyaWdodHR5cGUgPT4gJ3BnX2xzbicsIGFtcHJvY251bSA9PiAnNScsCiAgIGFtcHJvYyA9 PiAnYnJpbl9ibG9vbV9vcHRpb25zJyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vcGdf bHNuX2Jsb29tX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdwZ19sc24nLAorICBhbXByb2Ny aWdodHR5cGUgPT4gJ3BnX2xzbicsIGFtcHJvY251bSA9PiAnNicsCisgIGFtcHJvYyA9PiAn YnJpbl9ibG9vbV9wcmVwcm9jZXNzJyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vcGdf bHNuX2Jsb29tX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdwZ19sc24nLAogICBhbXByb2Ny aWdodHR5cGUgPT4gJ3BnX2xzbicsIGFtcHJvY251bSA9PiAnMTEnLCBhbXByb2MgPT4gJ3Bn X2xzbl9oYXNoJyB9LAogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3By b2MuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAppbmRleCBkODIyNTA4 NzVmLi5hZTEzZDA3Njc4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3By b2MuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKQEAgLTg2NjQs NiArODY2NCw5IEBACiB7IG9pZCA9PiAnNDU5NScsIGRlc2NyID0+ICdCUklOIGJsb29tIHN1 cHBvcnQnLAogICBwcm9uYW1lID0+ICdicmluX2Jsb29tX29wdGlvbnMnLCBwcm9pc3N0cmlj dCA9PiAnZicsIHByb3JldHR5cGUgPT4gJ3ZvaWQnLAogICBwcm9hcmd0eXBlcyA9PiAnaW50 ZXJuYWwnLCBwcm9zcmMgPT4gJ2JyaW5fYmxvb21fb3B0aW9ucycgfSwKK3sgb2lkID0+ICc5 MzI1JywgZGVzY3IgPT4gJ0JSSU4gYmxvb20gc3VwcG9ydCcsCisgIHByb25hbWUgPT4gJ2Jy aW5fYmxvb21fcHJlcHJvY2VzcycsIHByb2lzc3RyaWN0ID0+ICdmJywgcHJvcmV0dHlwZSA9 PiAnaW50ZXJuYWwnLAorICBwcm9hcmd0eXBlcyA9PiAnaW50ZXJuYWwgaW50ZXJuYWwnLCBw cm9zcmMgPT4gJ2JyaW5fYmxvb21fcHJlcHJvY2VzcycgfSwKIAogIyB1c2VybG9jayByZXBs YWNlbWVudHMKIHsgb2lkID0+ICcyODgwJywgZGVzY3IgPT4gJ29idGFpbiBleGNsdXNpdmUg YWR2aXNvcnkgbG9jaycsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L2JyaW5fYmxvb20ub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9icmluX2Jsb29t Lm91dAppbmRleCAzMmM1NmE5OTZhLi5iODNiMmJhZTE2IDEwMDY0NAotLS0gYS9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL2JyaW5fYmxvb20ub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvYnJpbl9ibG9vbS5vdXQKQEAgLTQyNiwzICs0MjYsMzgwIEBAIEVYUExB SU4gKENPU1RTIE9GRikgU0VMRUNUICogRlJPTSBicmluX3Rlc3RfYmxvb20gV0hFUkUgYiA9 IDE7CiAgICBGaWx0ZXI6IChiID0gMSkKICgyIHJvd3MpCiAKKy0tIGRvIHNvbWUgdGVzdHMg b24gSU4gY2xhdXNlcyBmb3Igc2ltcGxlIGRhdGEgdHlwZXMKK0NSRUFURSBUQUJMRSBicmlu X2luX3Rlc3RfYmxvb21fMSAoYSBJTlQsIGIgQklHSU5UKSBXSVRIIChmaWxsZmFjdG9yPTEw KTsKK0lOU0VSVCBJTlRPIGJyaW5faW5fdGVzdF9ibG9vbV8xCitTRUxFQ1QgaS81ICsgbW9k KDk5MSAqIGkgKyA2MTcsIDIwKSwKKyAgICAgICBpLzEwICsgbW9kKDg1MyAqIGkgKyA0OTEs IDMwKQorICBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwMDApIHMoaSk7CitDUkVBVEUgSU5E RVggYnJpbl9pbl90ZXN0X2Jsb29tXzFfaWR4XzEgT04gYnJpbl9pbl90ZXN0X2Jsb29tXzEg VVNJTkcgYnJpbiAoYSBpbnQ0X2Jsb29tX29wcyhuX2Rpc3RpbmN0X3Blcl9yYW5nZT01MCkp IFdJVEggKHBhZ2VzX3Blcl9yYW5nZT0xKTsKK0NSRUFURSBJTkRFWCBicmluX2luX3Rlc3Rf Ymxvb21fMV9pZHhfMiBPTiBicmluX2luX3Rlc3RfYmxvb21fMSBVU0lORyBicmluIChiIGlu dDhfYmxvb21fb3BzKG5fZGlzdGluY3RfcGVyX3JhbmdlPTUwKSkgV0lUSCAocGFnZXNfcGVy X3JhbmdlPTEpOworU0VUIGVuYWJsZV9zZXFzY2FuPW9mZjsKK0VYUExBSU4gKENPU1RTIE9G RikKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF9ibG9vbV8xIFdIRVJFIGEg SU4gKDExMyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAg ICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgQml0bWFw IEhlYXAgU2NhbiBvbiBicmluX2luX3Rlc3RfYmxvb21fMQorICAgICAgICAgUmVjaGVjayBD b25kOiAoYSA9IDExMykKKyAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBicmlu X2luX3Rlc3RfYmxvb21fMV9pZHhfMQorICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKGEg PSAxMTMpCisoNSByb3dzKQorCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3Rf Ymxvb21fMSBXSEVSRSBhIElOICgxMTMpOworIGNvdW50IAorLS0tLS0tLQorICAgICA4Ciso MSByb3cpCisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJy aW5faW5fdGVzdF9ibG9vbV8xIFdIRVJFIGEgSU4gKDExMywgTlVMTCk7CisgICAgICAgICAg ICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gYnJp bl9pbl90ZXN0X2Jsb29tXzEKKyAgICAgICAgIFJlY2hlY2sgQ29uZDogKGEgPSBBTlkgKCd7 MTEzLE5VTEx9Jzo6aW50ZWdlcltdKSkKKyAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2Nh biBvbiBicmluX2luX3Rlc3RfYmxvb21fMV9pZHhfMQorICAgICAgICAgICAgICAgSW5kZXgg Q29uZDogKGEgPSBBTlkgKCd7MTEzLE5VTEx9Jzo6aW50ZWdlcltdKSkKKyg1IHJvd3MpCisK K1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF9ibG9vbV8xIFdIRVJFIGEgSU4g KDExMywgTlVMTCk7CisgY291bnQgCistLS0tLS0tCisgICAgIDgKKygxIHJvdykKKworRVhQ TEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0X2Js b29tXzEgV0hFUkUgYSBJTiAoTlVMTCwgTlVMTCk7CisgICAgICAgICAgICAgICAgICAgICAg ICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgQWdncmVnYXRlCisgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiBicmluX2luX3Rlc3Rf Ymxvb21fMQorICAgICAgICAgUmVjaGVjayBDb25kOiAoYSA9IEFOWSAoJ3tOVUxMLE5VTEx9 Jzo6aW50ZWdlcltdKSkKKyAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBicmlu X2luX3Rlc3RfYmxvb21fMV9pZHhfMQorICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKGEg PSBBTlkgKCd7TlVMTCxOVUxMfSc6OmludGVnZXJbXSkpCisoNSByb3dzKQorCitTRUxFQ1Qg Q09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfYmxvb21fMSBXSEVSRSBhIElOIChOVUxMLCBO VUxMKTsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICAgMAorKDEgcm93KQorCitFWFBMQUlOIChD T1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfYmxvb21fMSBX SEVSRSBhIElOICgxMTMsIDE3Nyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZ IFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUK KyAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIGJyaW5faW5fdGVzdF9ibG9vbV8xCisgICAg ICAgICBSZWNoZWNrIENvbmQ6IChhID0gQU5ZICgnezExMywxNzd9Jzo6aW50ZWdlcltdKSkK KyAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBicmluX2luX3Rlc3RfYmxvb21f MV9pZHhfMQorICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKGEgPSBBTlkgKCd7MTEzLDE3 N30nOjppbnRlZ2VyW10pKQorKDUgcm93cykKKworU0VMRUNUIENPVU5UKCopIEZST00gYnJp bl9pbl90ZXN0X2Jsb29tXzEgV0hFUkUgYSBJTiAoMTEzLCAxNzcpOworIGNvdW50IAorLS0t LS0tLQorICAgIDE2CisoMSByb3cpCisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBD T1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF9ibG9vbV8xIFdIRVJFIGEgSU4gKDExMywgMTc3 LCBOVUxMKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAg IC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIGJyaW5faW5fdGVzdF9ibG9vbV8xCisgICAgICAg ICBSZWNoZWNrIENvbmQ6IChhID0gQU5ZICgnezExMywxNzcsTlVMTH0nOjppbnRlZ2VyW10p KQorICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIGJyaW5faW5fdGVzdF9ibG9v bV8xX2lkeF8xCisgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoYSA9IEFOWSAoJ3sxMTMs MTc3LE5VTEx9Jzo6aW50ZWdlcltdKSkKKyg1IHJvd3MpCisKK1NFTEVDVCBDT1VOVCgqKSBG Uk9NIGJyaW5faW5fdGVzdF9ibG9vbV8xIFdIRVJFIGEgSU4gKDExMywgMTc3LCBOVUxMKTsK KyBjb3VudCAKKy0tLS0tLS0KKyAgICAxNgorKDEgcm93KQorCitFWFBMQUlOIChDT1NUUyBP RkYpCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfYmxvb21fMSBXSEVSRSBh IElOICgxMTMsIDE3NywgMjUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkg UExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVn YXRlCisgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiBicmluX2luX3Rlc3RfYmxvb21fMQor ICAgICAgICAgUmVjaGVjayBDb25kOiAoYSA9IEFOWSAoJ3sxMTMsMTc3LDI1fSc6OmludGVn ZXJbXSkpCisgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gYnJpbl9pbl90ZXN0 X2Jsb29tXzFfaWR4XzEKKyAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChhID0gQU5ZICgn ezExMywxNzcsMjV9Jzo6aW50ZWdlcltdKSkKKyg1IHJvd3MpCisKK1NFTEVDVCBDT1VOVCgq KSBGUk9NIGJyaW5faW5fdGVzdF9ibG9vbV8xIFdIRVJFIGEgSU4gKDExMywgMTc3LCAyNSk7 CisgY291bnQgCistLS0tLS0tCisgICAgMjQKKygxIHJvdykKKworRVhQTEFJTiAoQ09TVFMg T0ZGKQorU0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0X2Jsb29tXzEgV0hFUkUg YSBJTiAoTlVMTCwgMTEzLCAxNzcsIDI1KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIGJyaW5f aW5fdGVzdF9ibG9vbV8xCisgICAgICAgICBSZWNoZWNrIENvbmQ6IChhID0gQU5ZICgne05V TEwsMTEzLDE3NywyNX0nOjppbnRlZ2VyW10pKQorICAgICAgICAgLT4gIEJpdG1hcCBJbmRl eCBTY2FuIG9uIGJyaW5faW5fdGVzdF9ibG9vbV8xX2lkeF8xCisgICAgICAgICAgICAgICBJ bmRleCBDb25kOiAoYSA9IEFOWSAoJ3tOVUxMLDExMywxNzcsMjV9Jzo6aW50ZWdlcltdKSkK Kyg1IHJvd3MpCisKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF9ibG9vbV8x IFdIRVJFIGEgSU4gKE5VTEwsIDExMywgMTc3LCAyNSk7CisgY291bnQgCistLS0tLS0tCisg ICAgMjQKKygxIHJvdykKKworLS0gYSBiaXQgd2VpcmQgdGhpcyByZXF1aXJlcyBhIGNhc3Qg dG8gYmlnaW50LCB1bmxpa2UgbXVsdGktdmFsdWUgSU4gY2xhdXNlCitFWFBMQUlOIChDT1NU UyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfYmxvb21fMSBXSEVS RSBiIElOICg4Mjo6YmlnaW50KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQ TEFOICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAg IC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIGJyaW5faW5fdGVzdF9ibG9vbV8xCisgICAgICAg ICBSZWNoZWNrIENvbmQ6IChiID0gJzgyJzo6YmlnaW50KQorICAgICAgICAgLT4gIEJpdG1h cCBJbmRleCBTY2FuIG9uIGJyaW5faW5fdGVzdF9ibG9vbV8xX2lkeF8yCisgICAgICAgICAg ICAgICBJbmRleCBDb25kOiAoYiA9ICc4Mic6OmJpZ2ludCkKKyg1IHJvd3MpCisKK1NFTEVD VCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF9ibG9vbV8xIFdIRVJFIGIgSU4gKDgyOjpi aWdpbnQpOworIGNvdW50IAorLS0tLS0tLQorICAgIDEwCisoMSByb3cpCisKK0VYUExBSU4g KENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF9ibG9vbV8x IFdIRVJFIGIgSU4gKDgyLCBOVUxMKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBRVUVS WSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUK KyAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIGJyaW5faW5fdGVzdF9ibG9vbV8xCisgICAg ICAgICBSZWNoZWNrIENvbmQ6IChiID0gQU5ZICgnezgyLE5VTEx9Jzo6YmlnaW50W10pKQor ICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIGJyaW5faW5fdGVzdF9ibG9vbV8x X2lkeF8yCisgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoYiA9IEFOWSAoJ3s4MixOVUxM fSc6OmJpZ2ludFtdKSkKKyg1IHJvd3MpCisKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5f aW5fdGVzdF9ibG9vbV8xIFdIRVJFIGIgSU4gKDgyLCBOVUxMKTsKKyBjb3VudCAKKy0tLS0t LS0KKyAgICAxMAorKDEgcm93KQorCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09V TlQoKikgRlJPTSBicmluX2luX3Rlc3RfYmxvb21fMSBXSEVSRSBiIElOIChOVUxMLCBOVUxM KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAg ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgQml0bWFwIEhl YXAgU2NhbiBvbiBicmluX2luX3Rlc3RfYmxvb21fMQorICAgICAgICAgUmVjaGVjayBDb25k OiAoYiA9IEFOWSAoJ3tOVUxMLE5VTEx9Jzo6YmlnaW50W10pKQorICAgICAgICAgLT4gIEJp dG1hcCBJbmRleCBTY2FuIG9uIGJyaW5faW5fdGVzdF9ibG9vbV8xX2lkeF8yCisgICAgICAg ICAgICAgICBJbmRleCBDb25kOiAoYiA9IEFOWSAoJ3tOVUxMLE5VTEx9Jzo6YmlnaW50W10p KQorKDUgcm93cykKKworU0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0X2Jsb29t XzEgV0hFUkUgYiBJTiAoTlVMTCwgTlVMTCk7CisgY291bnQgCistLS0tLS0tCisgICAgIDAK KygxIHJvdykKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIEZST00g YnJpbl9pbl90ZXN0X2Jsb29tXzEgV0hFUkUgYiBJTiAoODIsIDQxKTsKKyAgICAgICAgICAg ICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIGJyaW5faW5f dGVzdF9ibG9vbV8xCisgICAgICAgICBSZWNoZWNrIENvbmQ6IChiID0gQU5ZICgnezgyLDQx fSc6OmJpZ2ludFtdKSkKKyAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBicmlu X2luX3Rlc3RfYmxvb21fMV9pZHhfMgorICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKGIg PSBBTlkgKCd7ODIsNDF9Jzo6YmlnaW50W10pKQorKDUgcm93cykKKworU0VMRUNUIENPVU5U KCopIEZST00gYnJpbl9pbl90ZXN0X2Jsb29tXzEgV0hFUkUgYiBJTiAoODIsIDQxKTsKKyBj b3VudCAKKy0tLS0tLS0KKyAgICAyMAorKDEgcm93KQorCitFWFBMQUlOIChDT1NUUyBPRkYp CitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfYmxvb21fMSBXSEVSRSBiIElO ICg4MiwgNDEsIE5VTEwpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExB TiAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQor ICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gYnJpbl9pbl90ZXN0X2Jsb29tXzEKKyAgICAg ICAgIFJlY2hlY2sgQ29uZDogKGIgPSBBTlkgKCd7ODIsNDEsTlVMTH0nOjpiaWdpbnRbXSkp CisgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gYnJpbl9pbl90ZXN0X2Jsb29t XzFfaWR4XzIKKyAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChiID0gQU5ZICgnezgyLDQx LE5VTEx9Jzo6YmlnaW50W10pKQorKDUgcm93cykKKworU0VMRUNUIENPVU5UKCopIEZST00g YnJpbl9pbl90ZXN0X2Jsb29tXzEgV0hFUkUgYiBJTiAoODIsIDQxLCBOVUxMKTsKKyBjb3Vu dCAKKy0tLS0tLS0KKyAgICAyMAorKDEgcm93KQorCitFWFBMQUlOIChDT1NUUyBPRkYpCitT RUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfYmxvb21fMSBXSEVSRSBiIElOICg4 MiwgNDEsIDE1KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAg ICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEJp dG1hcCBIZWFwIFNjYW4gb24gYnJpbl9pbl90ZXN0X2Jsb29tXzEKKyAgICAgICAgIFJlY2hl Y2sgQ29uZDogKGIgPSBBTlkgKCd7ODIsNDEsMTV9Jzo6YmlnaW50W10pKQorICAgICAgICAg LT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIGJyaW5faW5fdGVzdF9ibG9vbV8xX2lkeF8yCisg ICAgICAgICAgICAgICBJbmRleCBDb25kOiAoYiA9IEFOWSAoJ3s4Miw0MSwxNX0nOjpiaWdp bnRbXSkpCisoNSByb3dzKQorCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3Rf Ymxvb21fMSBXSEVSRSBiIElOICg4MiwgNDEsIDE1KTsKKyBjb3VudCAKKy0tLS0tLS0KKyAg ICAyNQorKDEgcm93KQorCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikg RlJPTSBicmluX2luX3Rlc3RfYmxvb21fMSBXSEVSRSBiIElOIChOVUxMLCA4MiwgNDEsIDE1 KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBC aXRtYXAgSGVhcCBTY2FuIG9uIGJyaW5faW5fdGVzdF9ibG9vbV8xCisgICAgICAgICBSZWNo ZWNrIENvbmQ6IChiID0gQU5ZICgne05VTEwsODIsNDEsMTV9Jzo6YmlnaW50W10pKQorICAg ICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIGJyaW5faW5fdGVzdF9ibG9vbV8xX2lk eF8yCisgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoYiA9IEFOWSAoJ3tOVUxMLDgyLDQx LDE1fSc6OmJpZ2ludFtdKSkKKyg1IHJvd3MpCisKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJy aW5faW5fdGVzdF9ibG9vbV8xIFdIRVJFIGIgSU4gKE5VTEwsIDgyLCA0MSwgMTUpOworIGNv dW50IAorLS0tLS0tLQorICAgIDI1CisoMSByb3cpCisKK0RST1AgVEFCTEUgYnJpbl9pbl90 ZXN0X2Jsb29tXzE7CitSRVNFVCBlbmFibGVfc2Vxc2NhbjsKKy0tIGRvIHNvbWUgdGVzdHMg b24gSU4gY2xhdXNlcyBmb3IgdmFybGVuYSBkYXRhIHR5cGVzCitDUkVBVEUgVEFCTEUgYnJp bl9pbl90ZXN0X2Jsb29tXzIgKGEgVEVYVCkgV0lUSCAoZmlsbGZhY3Rvcj0xMCk7CitJTlNF UlQgSU5UTyBicmluX2luX3Rlc3RfYmxvb21fMgorU0VMRUNUIHYgRlJPTSAoU0VMRUNUIHJv d19udW1iZXIoKSBPVkVSIChPUkRFUiBCWSB2KSBjLCB2IEZST00gKFNFTEVDVCBtZDUoKGkv MTMpOjp0ZXh0KSBBUyB2IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTAwMCkgcyhpKSkgZm9v KSBiYXIgT1JERVIgQlkgYyArIDI1ICogcmFuZG9tKCk7CitDUkVBVEUgSU5ERVggYnJpbl9p bl90ZXN0X2Jsb29tXzJfaWR4IE9OIGJyaW5faW5fdGVzdF9ibG9vbV8yIFVTSU5HIGJyaW4g KGEgdGV4dF9ibG9vbV9vcHMobl9kaXN0aW5jdF9wZXJfcmFuZ2U9NTApKSBXSVRIIChwYWdl c19wZXJfcmFuZ2U9MSk7CitTRVQgZW5hYmxlX3NlcXNjYW49b2ZmOworRVhQTEFJTiAoQ09T VFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0X2Jsb29tXzIgV0hF UkUgYSBJTiAoJzMzZTc1ZmYwOWRkNjAxYmJlNjlmMzUxMDM5MTUyMTg5Jyk7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ ICBCaXRtYXAgSGVhcCBTY2FuIG9uIGJyaW5faW5fdGVzdF9ibG9vbV8yCisgICAgICAgICBS ZWNoZWNrIENvbmQ6IChhID0gJzMzZTc1ZmYwOWRkNjAxYmJlNjlmMzUxMDM5MTUyMTg5Jzo6 dGV4dCkKKyAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBicmluX2luX3Rlc3Rf Ymxvb21fMl9pZHgKKyAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChhID0gJzMzZTc1ZmYw OWRkNjAxYmJlNjlmMzUxMDM5MTUyMTg5Jzo6dGV4dCkKKyg1IHJvd3MpCisKK1NFTEVDVCBD T1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF9ibG9vbV8yIFdIRVJFIGEgSU4gKCczM2U3NWZm MDlkZDYwMWJiZTY5ZjM1MTAzOTE1MjE4OScpOworIGNvdW50IAorLS0tLS0tLQorICAgIDEz CisoMSByb3cpCisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBGUk9N IGJyaW5faW5fdGVzdF9ibG9vbV8yIFdIRVJFIGEgSU4gKCczM2U3NWZmMDlkZDYwMWJiZTY5 ZjM1MTAzOTE1MjE4OScsIE5VTEwpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRl CisgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiBicmluX2luX3Rlc3RfYmxvb21fMgorICAg ICAgICAgUmVjaGVjayBDb25kOiAoYSA9IEFOWSAoJ3szM2U3NWZmMDlkZDYwMWJiZTY5ZjM1 MTAzOTE1MjE4OSxOVUxMfSc6OnRleHRbXSkpCisgICAgICAgICAtPiAgQml0bWFwIEluZGV4 IFNjYW4gb24gYnJpbl9pbl90ZXN0X2Jsb29tXzJfaWR4CisgICAgICAgICAgICAgICBJbmRl eCBDb25kOiAoYSA9IEFOWSAoJ3szM2U3NWZmMDlkZDYwMWJiZTY5ZjM1MTAzOTE1MjE4OSxO VUxMfSc6OnRleHRbXSkpCisoNSByb3dzKQorCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmlu X2luX3Rlc3RfYmxvb21fMiBXSEVSRSBhIElOICgnMzNlNzVmZjA5ZGQ2MDFiYmU2OWYzNTEw MzkxNTIxODknLCBOVUxMKTsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICAxMworKDEgcm93KQor CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rl c3RfYmxvb21fMiBXSEVSRSBhIElOIChOVUxMLCBOVUxMKTsKKyAgICAgICAgICAgICAgICAg ICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyBBZ2dyZWdhdGUKKyAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIGJyaW5faW5fdGVzdF9i bG9vbV8yCisgICAgICAgICBSZWNoZWNrIENvbmQ6IChhID0gQU5ZICgne05VTEwsTlVMTH0n Ojp0ZXh0W10pKQorICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIGJyaW5faW5f dGVzdF9ibG9vbV8yX2lkeAorICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKGEgPSBBTlkg KCd7TlVMTCxOVUxMfSc6OnRleHRbXSkpCisoNSByb3dzKQorCitTRUxFQ1QgQ09VTlQoKikg RlJPTSBicmluX2luX3Rlc3RfYmxvb21fMiBXSEVSRSBhIElOIChOVUxMLCBOVUxMKTsKKyBj b3VudCAKKy0tLS0tLS0KKyAgICAgMAorKDEgcm93KQorCitFWFBMQUlOIChDT1NUUyBPRkYp CitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfYmxvb21fMiBXSEVSRSBhIElO ICgnMzNlNzVmZjA5ZGQ2MDFiYmU2OWYzNTEwMzkxNTIxODknLCAnZjQ1N2M1NDVhOWRlZDg4 ZjE4ZWNlZTQ3MTQ1YTcyYzAnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRl CisgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiBicmluX2luX3Rlc3RfYmxvb21fMgorICAg ICAgICAgUmVjaGVjayBDb25kOiAoYSA9IEFOWSAoJ3szM2U3NWZmMDlkZDYwMWJiZTY5ZjM1 MTAzOTE1MjE4OSxmNDU3YzU0NWE5ZGVkODhmMThlY2VlNDcxNDVhNzJjMH0nOjp0ZXh0W10p KQorICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIGJyaW5faW5fdGVzdF9ibG9v bV8yX2lkeAorICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKGEgPSBBTlkgKCd7MzNlNzVm ZjA5ZGQ2MDFiYmU2OWYzNTEwMzkxNTIxODksZjQ1N2M1NDVhOWRlZDg4ZjE4ZWNlZTQ3MTQ1 YTcyYzB9Jzo6dGV4dFtdKSkKKyg1IHJvd3MpCisKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJy aW5faW5fdGVzdF9ibG9vbV8yIFdIRVJFIGEgSU4gKCczM2U3NWZmMDlkZDYwMWJiZTY5ZjM1 MTAzOTE1MjE4OScsICdmNDU3YzU0NWE5ZGVkODhmMThlY2VlNDcxNDVhNzJjMCcpOworIGNv dW50IAorLS0tLS0tLQorICAgIDI2CisoMSByb3cpCisKK0VYUExBSU4gKENPU1RTIE9GRikK K1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF9ibG9vbV8yIFdIRVJFIGEgSU4g KCczM2U3NWZmMDlkZDYwMWJiZTY5ZjM1MTAzOTE1MjE4OScsICdmNDU3YzU0NWE5ZGVkODhm MThlY2VlNDcxNDVhNzJjMCcsIE5VTEwpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgQWdncmVnYXRlCisgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiBicmluX2luX3Rl c3RfYmxvb21fMgorICAgICAgICAgUmVjaGVjayBDb25kOiAoYSA9IEFOWSAoJ3szM2U3NWZm MDlkZDYwMWJiZTY5ZjM1MTAzOTE1MjE4OSxmNDU3YzU0NWE5ZGVkODhmMThlY2VlNDcxNDVh NzJjMCxOVUxMfSc6OnRleHRbXSkpCisgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4g b24gYnJpbl9pbl90ZXN0X2Jsb29tXzJfaWR4CisgICAgICAgICAgICAgICBJbmRleCBDb25k OiAoYSA9IEFOWSAoJ3szM2U3NWZmMDlkZDYwMWJiZTY5ZjM1MTAzOTE1MjE4OSxmNDU3YzU0 NWE5ZGVkODhmMThlY2VlNDcxNDVhNzJjMCxOVUxMfSc6OnRleHRbXSkpCisoNSByb3dzKQor CitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfYmxvb21fMiBXSEVSRSBhIElO ICgnMzNlNzVmZjA5ZGQ2MDFiYmU2OWYzNTEwMzkxNTIxODknLCAnZjQ1N2M1NDVhOWRlZDg4 ZjE4ZWNlZTQ3MTQ1YTcyYzAnLCBOVUxMKTsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICAyNgor KDEgcm93KQorCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBi cmluX2luX3Rlc3RfYmxvb21fMiBXSEVSRSBhIElOICgnMzNlNzVmZjA5ZGQ2MDFiYmU2OWYz NTEwMzkxNTIxODknLCAnZjQ1N2M1NDVhOWRlZDg4ZjE4ZWNlZTQ3MTQ1YTcyYzAnLCAnYzUx Y2U0MTBjMTI0YTEwZTBkYjVlNGI5N2ZjMmFmMzknKTsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVS WSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiBi cmluX2luX3Rlc3RfYmxvb21fMgorICAgICAgICAgUmVjaGVjayBDb25kOiAoYSA9IEFOWSAo J3szM2U3NWZmMDlkZDYwMWJiZTY5ZjM1MTAzOTE1MjE4OSxmNDU3YzU0NWE5ZGVkODhmMThl Y2VlNDcxNDVhNzJjMCxjNTFjZTQxMGMxMjRhMTBlMGRiNWU0Yjk3ZmMyYWYzOX0nOjp0ZXh0 W10pKQorICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIGJyaW5faW5fdGVzdF9i bG9vbV8yX2lkeAorICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKGEgPSBBTlkgKCd7MzNl NzVmZjA5ZGQ2MDFiYmU2OWYzNTEwMzkxNTIxODksZjQ1N2M1NDVhOWRlZDg4ZjE4ZWNlZTQ3 MTQ1YTcyYzAsYzUxY2U0MTBjMTI0YTEwZTBkYjVlNGI5N2ZjMmFmMzl9Jzo6dGV4dFtdKSkK Kyg1IHJvd3MpCisKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF9ibG9vbV8y IFdIRVJFIGEgSU4gKCczM2U3NWZmMDlkZDYwMWJiZTY5ZjM1MTAzOTE1MjE4OScsICdmNDU3 YzU0NWE5ZGVkODhmMThlY2VlNDcxNDVhNzJjMCcsICdjNTFjZTQxMGMxMjRhMTBlMGRiNWU0 Yjk3ZmMyYWYzOScpOworIGNvdW50IAorLS0tLS0tLQorICAgIDM5CisoMSByb3cpCisKK0VY UExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF9i bG9vbV8yIFdIRVJFIGEgSU4gKE5VTEwsICczM2U3NWZmMDlkZDYwMWJiZTY5ZjM1MTAzOTE1 MjE4OScsICdmNDU3YzU0NWE5ZGVkODhmMThlY2VlNDcxNDVhNzJjMCcsICdjNTFjZTQxMGMx MjRhMTBlMGRiNWU0Yjk3ZmMyYWYzOScpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExB TiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBv biBicmluX2luX3Rlc3RfYmxvb21fMgorICAgICAgICAgUmVjaGVjayBDb25kOiAoYSA9IEFO WSAoJ3tOVUxMLDMzZTc1ZmYwOWRkNjAxYmJlNjlmMzUxMDM5MTUyMTg5LGY0NTdjNTQ1YTlk ZWQ4OGYxOGVjZWU0NzE0NWE3MmMwLGM1MWNlNDEwYzEyNGExMGUwZGI1ZTRiOTdmYzJhZjM5 fSc6OnRleHRbXSkpCisgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gYnJpbl9p bl90ZXN0X2Jsb29tXzJfaWR4CisgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoYSA9IEFO WSAoJ3tOVUxMLDMzZTc1ZmYwOWRkNjAxYmJlNjlmMzUxMDM5MTUyMTg5LGY0NTdjNTQ1YTlk ZWQ4OGYxOGVjZWU0NzE0NWE3MmMwLGM1MWNlNDEwYzEyNGExMGUwZGI1ZTRiOTdmYzJhZjM5 fSc6OnRleHRbXSkpCisoNSByb3dzKQorCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2lu X3Rlc3RfYmxvb21fMiBXSEVSRSBhIElOIChOVUxMLCAnMzNlNzVmZjA5ZGQ2MDFiYmU2OWYz NTEwMzkxNTIxODknLCAnZjQ1N2M1NDVhOWRlZDg4ZjE4ZWNlZTQ3MTQ1YTcyYzAnLCAnYzUx Y2U0MTBjMTI0YTEwZTBkYjVlNGI5N2ZjMmFmMzknKTsKKyBjb3VudCAKKy0tLS0tLS0KKyAg ICAzOQorKDEgcm93KQorCitEUk9QIFRBQkxFIGJyaW5faW5fdGVzdF9ibG9vbV8yOworUkVT RVQgZW5hYmxlX3NlcXNjYW47CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9i cmluX2Jsb29tLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2JyaW5fYmxvb20uc3FsCmlu ZGV4IDVkNDk5MjA4ZTMuLmQxODdlODlhNjAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL2JyaW5fYmxvb20uc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2JyaW5f Ymxvb20uc3FsCkBAIC0zNzQsMyArMzc0LDEzOCBAQCBWQUNVVU0gQU5BTFlaRSBicmluX3Rl c3RfYmxvb207CiBFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00gYnJpbl90ZXN0 X2Jsb29tIFdIRVJFIGEgPSAxOwogLS0gRW5zdXJlIGJyaW4gaW5kZXggaXMgbm90IHVzZWQg d2hlbiB2YWx1ZXMgYXJlIG5vdCBjb3JyZWxhdGVkCiBFWFBMQUlOIChDT1NUUyBPRkYpIFNF TEVDVCAqIEZST00gYnJpbl90ZXN0X2Jsb29tIFdIRVJFIGIgPSAxOworCisKKy0tIGRvIHNv bWUgdGVzdHMgb24gSU4gY2xhdXNlcyBmb3Igc2ltcGxlIGRhdGEgdHlwZXMKK0NSRUFURSBU QUJMRSBicmluX2luX3Rlc3RfYmxvb21fMSAoYSBJTlQsIGIgQklHSU5UKSBXSVRIIChmaWxs ZmFjdG9yPTEwKTsKK0lOU0VSVCBJTlRPIGJyaW5faW5fdGVzdF9ibG9vbV8xCitTRUxFQ1Qg aS81ICsgbW9kKDk5MSAqIGkgKyA2MTcsIDIwKSwKKyAgICAgICBpLzEwICsgbW9kKDg1MyAq IGkgKyA0OTEsIDMwKQorICBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwMDApIHMoaSk7CisK K0NSRUFURSBJTkRFWCBicmluX2luX3Rlc3RfYmxvb21fMV9pZHhfMSBPTiBicmluX2luX3Rl c3RfYmxvb21fMSBVU0lORyBicmluIChhIGludDRfYmxvb21fb3BzKG5fZGlzdGluY3RfcGVy X3JhbmdlPTUwKSkgV0lUSCAocGFnZXNfcGVyX3JhbmdlPTEpOworQ1JFQVRFIElOREVYIGJy aW5faW5fdGVzdF9ibG9vbV8xX2lkeF8yIE9OIGJyaW5faW5fdGVzdF9ibG9vbV8xIFVTSU5H IGJyaW4gKGIgaW50OF9ibG9vbV9vcHMobl9kaXN0aW5jdF9wZXJfcmFuZ2U9NTApKSBXSVRI IChwYWdlc19wZXJfcmFuZ2U9MSk7CisKK1NFVCBlbmFibGVfc2Vxc2Nhbj1vZmY7CisKK0VY UExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF9i bG9vbV8xIFdIRVJFIGEgSU4gKDExMyk7CisKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5f aW5fdGVzdF9ibG9vbV8xIFdIRVJFIGEgSU4gKDExMyk7CisKK0VYUExBSU4gKENPU1RTIE9G RikKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF9ibG9vbV8xIFdIRVJFIGEg SU4gKDExMywgTlVMTCk7CisKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF9i bG9vbV8xIFdIRVJFIGEgSU4gKDExMywgTlVMTCk7CisKK0VYUExBSU4gKENPU1RTIE9GRikK K1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF9ibG9vbV8xIFdIRVJFIGEgSU4g KE5VTEwsIE5VTEwpOworCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfYmxv b21fMSBXSEVSRSBhIElOIChOVUxMLCBOVUxMKTsKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQor U0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0X2Jsb29tXzEgV0hFUkUgYSBJTiAo MTEzLCAxNzcpOworCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfYmxvb21f MSBXSEVSRSBhIElOICgxMTMsIDE3Nyk7CisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVD VCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF9ibG9vbV8xIFdIRVJFIGEgSU4gKDExMywg MTc3LCBOVUxMKTsKKworU0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0X2Jsb29t XzEgV0hFUkUgYSBJTiAoMTEzLCAxNzcsIE5VTEwpOworCitFWFBMQUlOIChDT1NUUyBPRkYp CitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfYmxvb21fMSBXSEVSRSBhIElO ICgxMTMsIDE3NywgMjUpOworCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3Rf Ymxvb21fMSBXSEVSRSBhIElOICgxMTMsIDE3NywgMjUpOworCitFWFBMQUlOIChDT1NUUyBP RkYpCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfYmxvb21fMSBXSEVSRSBh IElOIChOVUxMLCAxMTMsIDE3NywgMjUpOworCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmlu X2luX3Rlc3RfYmxvb21fMSBXSEVSRSBhIElOIChOVUxMLCAxMTMsIDE3NywgMjUpOworCist LSBhIGJpdCB3ZWlyZCB0aGlzIHJlcXVpcmVzIGEgY2FzdCB0byBiaWdpbnQsIHVubGlrZSBt dWx0aS12YWx1ZSBJTiBjbGF1c2UKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VO VCgqKSBGUk9NIGJyaW5faW5fdGVzdF9ibG9vbV8xIFdIRVJFIGIgSU4gKDgyOjpiaWdpbnQp OworCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfYmxvb21fMSBXSEVSRSBi IElOICg4Mjo6YmlnaW50KTsKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5U KCopIEZST00gYnJpbl9pbl90ZXN0X2Jsb29tXzEgV0hFUkUgYiBJTiAoODIsIE5VTEwpOwor CitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfYmxvb21fMSBXSEVSRSBiIElO ICg4MiwgTlVMTCk7CisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBG Uk9NIGJyaW5faW5fdGVzdF9ibG9vbV8xIFdIRVJFIGIgSU4gKE5VTEwsIE5VTEwpOworCitT RUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfYmxvb21fMSBXSEVSRSBiIElOIChO VUxMLCBOVUxMKTsKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIEZS T00gYnJpbl9pbl90ZXN0X2Jsb29tXzEgV0hFUkUgYiBJTiAoODIsIDQxKTsKKworU0VMRUNU IENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0X2Jsb29tXzEgV0hFUkUgYiBJTiAoODIsIDQx KTsKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9p bl90ZXN0X2Jsb29tXzEgV0hFUkUgYiBJTiAoODIsIDQxLCBOVUxMKTsKKworU0VMRUNUIENP VU5UKCopIEZST00gYnJpbl9pbl90ZXN0X2Jsb29tXzEgV0hFUkUgYiBJTiAoODIsIDQxLCBO VUxMKTsKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIEZST00gYnJp bl9pbl90ZXN0X2Jsb29tXzEgV0hFUkUgYiBJTiAoODIsIDQxLCAxNSk7CisKK1NFTEVDVCBD T1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF9ibG9vbV8xIFdIRVJFIGIgSU4gKDgyLCA0MSwg MTUpOworCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmlu X2luX3Rlc3RfYmxvb21fMSBXSEVSRSBiIElOIChOVUxMLCA4MiwgNDEsIDE1KTsKKworU0VM RUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0X2Jsb29tXzEgV0hFUkUgYiBJTiAoTlVM TCwgODIsIDQxLCAxNSk7CisKK0RST1AgVEFCTEUgYnJpbl9pbl90ZXN0X2Jsb29tXzE7CitS RVNFVCBlbmFibGVfc2Vxc2NhbjsKKworCistLSBkbyBzb21lIHRlc3RzIG9uIElOIGNsYXVz ZXMgZm9yIHZhcmxlbmEgZGF0YSB0eXBlcworQ1JFQVRFIFRBQkxFIGJyaW5faW5fdGVzdF9i bG9vbV8yIChhIFRFWFQpIFdJVEggKGZpbGxmYWN0b3I9MTApOworSU5TRVJUIElOVE8gYnJp bl9pbl90ZXN0X2Jsb29tXzIKK1NFTEVDVCB2IEZST00gKFNFTEVDVCByb3dfbnVtYmVyKCkg T1ZFUiAoT1JERVIgQlkgdikgYywgdiBGUk9NIChTRUxFQ1QgbWQ1KChpLzEzKTo6dGV4dCkg QVMgdiBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwMDApIHMoaSkpIGZvbykgYmFyIE9SREVS IEJZIGMgKyAyNSAqIHJhbmRvbSgpOworCitDUkVBVEUgSU5ERVggYnJpbl9pbl90ZXN0X2Js b29tXzJfaWR4IE9OIGJyaW5faW5fdGVzdF9ibG9vbV8yIFVTSU5HIGJyaW4gKGEgdGV4dF9i bG9vbV9vcHMobl9kaXN0aW5jdF9wZXJfcmFuZ2U9NTApKSBXSVRIIChwYWdlc19wZXJfcmFu Z2U9MSk7CisKK1NFVCBlbmFibGVfc2Vxc2Nhbj1vZmY7CisKK0VYUExBSU4gKENPU1RTIE9G RikKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF9ibG9vbV8yIFdIRVJFIGEg SU4gKCczM2U3NWZmMDlkZDYwMWJiZTY5ZjM1MTAzOTE1MjE4OScpOworCitTRUxFQ1QgQ09V TlQoKikgRlJPTSBicmluX2luX3Rlc3RfYmxvb21fMiBXSEVSRSBhIElOICgnMzNlNzVmZjA5 ZGQ2MDFiYmU2OWYzNTEwMzkxNTIxODknKTsKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VM RUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0X2Jsb29tXzIgV0hFUkUgYSBJTiAoJzMz ZTc1ZmYwOWRkNjAxYmJlNjlmMzUxMDM5MTUyMTg5JywgTlVMTCk7CisKK1NFTEVDVCBDT1VO VCgqKSBGUk9NIGJyaW5faW5fdGVzdF9ibG9vbV8yIFdIRVJFIGEgSU4gKCczM2U3NWZmMDlk ZDYwMWJiZTY5ZjM1MTAzOTE1MjE4OScsIE5VTEwpOworCitFWFBMQUlOIChDT1NUUyBPRkYp CitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3RfYmxvb21fMiBXSEVSRSBhIElO IChOVUxMLCBOVUxMKTsKKworU0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0X2Js b29tXzIgV0hFUkUgYSBJTiAoTlVMTCwgTlVMTCk7CisKK0VYUExBSU4gKENPU1RTIE9GRikK K1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF9ibG9vbV8yIFdIRVJFIGEgSU4g KCczM2U3NWZmMDlkZDYwMWJiZTY5ZjM1MTAzOTE1MjE4OScsICdmNDU3YzU0NWE5ZGVkODhm MThlY2VlNDcxNDVhNzJjMCcpOworCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rl c3RfYmxvb21fMiBXSEVSRSBhIElOICgnMzNlNzVmZjA5ZGQ2MDFiYmU2OWYzNTEwMzkxNTIx ODknLCAnZjQ1N2M1NDVhOWRlZDg4ZjE4ZWNlZTQ3MTQ1YTcyYzAnKTsKKworRVhQTEFJTiAo Q09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIEZST00gYnJpbl9pbl90ZXN0X2Jsb29tXzIg V0hFUkUgYSBJTiAoJzMzZTc1ZmYwOWRkNjAxYmJlNjlmMzUxMDM5MTUyMTg5JywgJ2Y0NTdj NTQ1YTlkZWQ4OGYxOGVjZWU0NzE0NWE3MmMwJywgTlVMTCk7CisKK1NFTEVDVCBDT1VOVCgq KSBGUk9NIGJyaW5faW5fdGVzdF9ibG9vbV8yIFdIRVJFIGEgSU4gKCczM2U3NWZmMDlkZDYw MWJiZTY5ZjM1MTAzOTE1MjE4OScsICdmNDU3YzU0NWE5ZGVkODhmMThlY2VlNDcxNDVhNzJj MCcsIE5VTEwpOworCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgRlJP TSBicmluX2luX3Rlc3RfYmxvb21fMiBXSEVSRSBhIElOICgnMzNlNzVmZjA5ZGQ2MDFiYmU2 OWYzNTEwMzkxNTIxODknLCAnZjQ1N2M1NDVhOWRlZDg4ZjE4ZWNlZTQ3MTQ1YTcyYzAnLCAn YzUxY2U0MTBjMTI0YTEwZTBkYjVlNGI5N2ZjMmFmMzknKTsKKworU0VMRUNUIENPVU5UKCop IEZST00gYnJpbl9pbl90ZXN0X2Jsb29tXzIgV0hFUkUgYSBJTiAoJzMzZTc1ZmYwOWRkNjAx YmJlNjlmMzUxMDM5MTUyMTg5JywgJ2Y0NTdjNTQ1YTlkZWQ4OGYxOGVjZWU0NzE0NWE3MmMw JywgJ2M1MWNlNDEwYzEyNGExMGUwZGI1ZTRiOTdmYzJhZjM5Jyk7CisKK0VYUExBSU4gKENP U1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGJyaW5faW5fdGVzdF9ibG9vbV8yIFdI RVJFIGEgSU4gKE5VTEwsICczM2U3NWZmMDlkZDYwMWJiZTY5ZjM1MTAzOTE1MjE4OScsICdm NDU3YzU0NWE5ZGVkODhmMThlY2VlNDcxNDVhNzJjMCcsICdjNTFjZTQxMGMxMjRhMTBlMGRi NWU0Yjk3ZmMyYWYzOScpOworCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBicmluX2luX3Rlc3Rf Ymxvb21fMiBXSEVSRSBhIElOIChOVUxMLCAnMzNlNzVmZjA5ZGQ2MDFiYmU2OWYzNTEwMzkx NTIxODknLCAnZjQ1N2M1NDVhOWRlZDg4ZjE4ZWNlZTQ3MTQ1YTcyYzAnLCAnYzUxY2U0MTBj MTI0YTEwZTBkYjVlNGI5N2ZjMmFmMzknKTsKKworRFJPUCBUQUJMRSBicmluX2luX3Rlc3Rf Ymxvb21fMjsKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOwotLSAKMi40MS4wCgo= --------------K3kYSMhKEHYIXFtmkUtXAdlw--