Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1vDo5o-00GdN8-En for pgsql-hackers@arkaria.postgresql.org; Tue, 28 Oct 2025 18:06:48 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1vDo5n-00EUR9-4I for pgsql-hackers@arkaria.postgresql.org; Tue, 28 Oct 2025 18:06:46 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1vDo5m-00EUQz-DT for pgsql-hackers@lists.postgresql.org; Tue, 28 Oct 2025 18:06:45 +0000 Received: from mail-lf1-x136.google.com ([2a00:1450:4864:20::136]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vDo5i-004FOL-08 for pgsql-hackers@postgresql.org; Tue, 28 Oct 2025 18:06:44 +0000 Received: by mail-lf1-x136.google.com with SMTP id 2adb3069b0e04-592fcf7a1ceso5700347e87.1 for ; Tue, 28 Oct 2025 11:06:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1761674800; x=1762279600; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=hqWwU6TwUtdVxfa7fSQ9v5PGy6MbDkfZEDh8FkqwIK4=; b=Zn7EZY5HyBSshiiuXrQod5Dl2cIqJtLQ+7Gt1JtROgpKDxuRG2ThTmAvOvaDsD+v2D UYuPmv/ko3wvCn60XCRHjk/IwIXJ8DtAb3gaDyipbg96U9XayTgIVys0oodZFDyjNdaJ OzTT3A872bLJGLMqtzGz6Tcg7V8rRRy/QeC8fgLgcKbEKAwPQz+NcKrmJ6wbVW5CZNc/ aw8g+EDM4PhUQ/SHnTtSE8+6wIaZFPDsPxBuMfYzEgS54xSRtdI7wRmH1zoMb3o0mRDg F0ygib+0cXNtU/O35cq5p13WuFpQ5fuHHXMQHT/kVlTFHM/MPsVIj+WOajIna2wvW+pA Anxg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1761674800; x=1762279600; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=hqWwU6TwUtdVxfa7fSQ9v5PGy6MbDkfZEDh8FkqwIK4=; b=Ipa+e4LTEHt5CugDWINoMG/JQVmQPEJ2GHYwSC73g68GSvnBkc48wRnMxbqm0hGjFD cr+mKhUwF8HWowdcNMdUxJ8b2xZrnsJ2qc9R3/NmkXuuT3VEBo6+K50crHoCKar0anRc ps6RvMua580SxkXO2xCt2C/NuWz+igPCGAoxRDNaQaVS7MKxjH5vYQNVoOaTjeYQzGZ0 tvuSq6utM+lFeBFpdEmFgCnp7pSb/QV+PW/BakgoDHxv/U7MCWxK139ZuD0jRn6i+A7m zXyTgMfN6by07bi7G5IojazLg0HG35cK8hEnKYw92uQZUjVAh2EPes+nSXIxW3LV1b9v p/fg== X-Forwarded-Encrypted: i=1; AJvYcCVJ3KmFzrVjUXSmN/woDb6mVgehvKhhDW/q62DrLeLELIVJSVUORsiLK102qX6Gowxg1qUMQnNGkmdZb5zS@postgresql.org X-Gm-Message-State: AOJu0YzjlwT8qqKbAI0sRcxyO1SOdFTRZ33jYv7KX7Mt+yC7OKBRBtiB Juwz4Q5DMioZSVjjRAa5FsTalURjD09oNk93yB9qosr36zdRw8FiWJs7WjbK+CmTS1i51ZHWGJ8 Pywd2SAs8l/dgXQRpi78X+uTitE/cr5E= X-Gm-Gg: ASbGncsZH6eAgVLOohYKLCmoHjf3nE6D6Abyfrxw1toOtohluDTOtMbflXin2v35EBj nqQf6wJ0FrYX+4AQsJ9UQ8u2e1IB+83Wq/L1MOLob+fnEK6oi25mLpQVQThZxy/xd6TZ6k4xIfN +EEyI7cQMHSVQrT7caLwz4BUm230iAX5qIOrMwVOl3G3EVG/+WjEiS5r1pfHpyqZv6EMmNyW/s1 BJQMr5F6BOhxnwsVj2D7oSTG9UnISskIVklev4Ztwm4iKUt5uaj0AC/f19F0g== X-Google-Smtp-Source: AGHT+IFtYmxfzhMDBqdetNm7pchTc7MOsprMX9R0R89RESa3oMaD77HbZOF34iQ74mzTV/OgNpeD1dRlB55Ew7WCZoA= X-Received: by 2002:a05:6512:10c2:b0:592:f3ad:cb83 with SMTP id 2adb3069b0e04-59412865700mr102447e87.9.1761674800002; Tue, 28 Oct 2025 11:06:40 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Mihail Nikalayeu Date: Tue, 28 Oct 2025 19:06:00 +0100 X-Gm-Features: AWmQ_blS0K5qAfvd7bxCutY2iCq29rF8cH86SK4YN2L5UsZ2j6mPr8UUX5RTYEI Message-ID: Subject: Re: [BUG?] check_exclusion_or_unique_constraint false negative To: Amit Kapila Cc: "Zhijie Hou (Fujitsu)" , Peter Geoghegan , "Hayato Kuroda (Fujitsu)" , PostgreSQL Hackers , Andres Freund , peter@eisentraut.org Content-Type: multipart/mixed; boundary="000000000000aa181206423be005" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000aa181206423be005 Content-Type: text/plain; charset="UTF-8" Fixed race in tests caused https://cirrus-ci.com/task/5815107659235328?logs=test_world#L324 to fail. --000000000000aa181206423be005 Content-Type: text/x-patch; charset="US-ASCII"; name="v14-0002-Fix-logical-replication-conflict-detection-durin.patch" Content-Disposition: attachment; filename="v14-0002-Fix-logical-replication-conflict-detection-durin.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mhatjccb0 RnJvbSAyYTZhMTIxYzdjZmU0ODIzZGIwZjhhZWM5MzFjNWRiY2FiNjcyNjE2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxua2V5QHRvbG9rYS5haT4KRGF0ZTogV2VkLCAzIFNl cCAyMDI1IDE5OjA4OjU1ICswMjAwClN1YmplY3Q6IFtQQVRDSCB2MTQgMi8yXSBGaXggbG9naWNh bCByZXBsaWNhdGlvbiBjb25mbGljdCBkZXRlY3Rpb24gZHVyaW5nCiB0dXBsZSBsb29rdXAKClNO QVBTSE9UX0RJUlRZIHNjYW5zIGNvdWxkIG1pc3MgY29uZmxpY3QgZGV0ZWN0aW9uIHdpdGggY29u Y3VycmVudCB0cmFuc2FjdGlvbnMgZHVyaW5nIGxvZ2ljYWwgcmVwbGljYXRpb24uClJlcGxhY2Ug U05BUFNIT1RfRElSVFkgc2NhbiB3aXRoIHRoZSBHZXRMYXRlc3RTbmFwc2hvdCBpbiBSZWxhdGlv bkZpbmRSZXBsVHVwbGVCeUluZGV4IGFuZCBSZWxhdGlvbkZpbmRSZXBsVHVwbGVTZXEuCi0tLQog c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9uLmMgfCA2MyArKysrKysrKy0tLS0t LS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDE4IGluc2VydGlvbnMoKyksIDQ1IGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSZXBsaWNhdGlv bi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9uLmMKaW5kZXggYjQwOWQ0 ZWNiZjUuLjBkZTQwYWVjNzMzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj UmVwbGljYXRpb24uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUmVwbGljYXRpb24u YwpAQCAtMTg2LDggKzE4Niw2IEBAIFJlbGF0aW9uRmluZFJlcGxUdXBsZUJ5SW5kZXgoUmVsYXRp b24gcmVsLCBPaWQgaWR4b2lkLAogCVNjYW5LZXlEYXRhIHNrZXlbSU5ERVhfTUFYX0tFWVNdOwog CWludAkJCXNrZXlfYXR0b2ZmOwogCUluZGV4U2NhbkRlc2Mgc2NhbjsKLQlTbmFwc2hvdERhdGEg c25hcDsKLQlUcmFuc2FjdGlvbklkIHh3YWl0OwogCVJlbGF0aW9uCWlkeHJlbDsKIAlib29sCQlm b3VuZDsKIAlUeXBlQ2FjaGVFbnRyeSAqKmVxID0gTlVMTDsKQEAgLTE5OCwxNyArMTk2LDE3IEBA IFJlbGF0aW9uRmluZFJlcGxUdXBsZUJ5SW5kZXgoUmVsYXRpb24gcmVsLCBPaWQgaWR4b2lkLAog CiAJaXNJZHhTYWZlVG9Ta2lwRHVwbGljYXRlcyA9IChHZXRSZWxhdGlvbklkZW50aXR5T3JQSyhy ZWwpID09IGlkeG9pZCk7CiAKLQlJbml0RGlydHlTbmFwc2hvdChzbmFwKTsKLQogCS8qIEJ1aWxk IHNjYW4ga2V5LiAqLwogCXNrZXlfYXR0b2ZmID0gYnVpbGRfcmVwbGluZGV4X3NjYW5fa2V5KHNr ZXksIHJlbCwgaWR4cmVsLCBzZWFyY2hzbG90KTsKIAotCS8qIFN0YXJ0IGFuIGluZGV4IHNjYW4u ICovCi0Jc2NhbiA9IGluZGV4X2JlZ2luc2NhbihyZWwsIGlkeHJlbCwgJnNuYXAsIE5VTEwsIHNr ZXlfYXR0b2ZmLCAwKTsKKwkvKiBTdGFydCBhbiBpbmRleCBzY2FuLiBTbmFwc2hvdEFueSB3aWxs IGJlIHJlcGxhY2VkIGJlbG93LiAqLworCXNjYW4gPSBpbmRleF9iZWdpbnNjYW4ocmVsLCBpZHhy ZWwsIFNuYXBzaG90QW55LCBOVUxMLCBza2V5X2F0dG9mZiwgMCk7CiAKIHJldHJ5OgogCWZvdW5k ID0gZmFsc2U7Ci0KKwlQdXNoQWN0aXZlU25hcHNob3QoR2V0TGF0ZXN0U25hcHNob3QoKSk7CisJ LyogVXBkYXRlIHRoZSBhY3R1YWwgc2NhbiBzbmFwc2hvdCBlYWNoIHJldHJ5ICovCisJc2Nhbi0+ eHNfc25hcHNob3QgPSBHZXRBY3RpdmVTbmFwc2hvdCgpOwogCWluZGV4X3Jlc2NhbihzY2FuLCBz a2V5LCBza2V5X2F0dG9mZiwgTlVMTCwgMCk7CiAKIAkvKiBUcnkgdG8gZmluZCB0aGUgdHVwbGUg Ki8KQEAgLTIyOSwxOSArMjI3LDYgQEAgcmV0cnk6CiAKIAkJRXhlY01hdGVyaWFsaXplU2xvdChv dXRzbG90KTsKIAotCQl4d2FpdCA9IFRyYW5zYWN0aW9uSWRJc1ZhbGlkKHNuYXAueG1pbikgPwot CQkJc25hcC54bWluIDogc25hcC54bWF4OwotCi0JCS8qCi0JCSAqIElmIHRoZSB0dXBsZSBpcyBs b2NrZWQsIHdhaXQgZm9yIGxvY2tpbmcgdHJhbnNhY3Rpb24gdG8gZmluaXNoIGFuZAotCQkgKiBy ZXRyeS4KLQkJICovCi0JCWlmIChUcmFuc2FjdGlvbklkSXNWYWxpZCh4d2FpdCkpCi0JCXsKLQkJ CVhhY3RMb2NrVGFibGVXYWl0KHh3YWl0LCBOVUxMLCBOVUxMLCBYTFRXX05vbmUpOwotCQkJZ290 byByZXRyeTsKLQkJfQotCiAJCS8qIEZvdW5kIG91ciB0dXBsZSBhbmQgaXQncyBub3QgbG9ja2Vk ICovCiAJCWZvdW5kID0gdHJ1ZTsKIAkJYnJlYWs7CkBAIC0yNTMsOCArMjM4LDYgQEAgcmV0cnk6 CiAJCVRNX0ZhaWx1cmVEYXRhIHRtZmQ7CiAJCVRNX1Jlc3VsdAlyZXM7CiAKLQkJUHVzaEFjdGl2 ZVNuYXBzaG90KEdldExhdGVzdFNuYXBzaG90KCkpOwotCiAJCXJlcyA9IHRhYmxlX3R1cGxlX2xv Y2socmVsLCAmKG91dHNsb3QtPnR0c190aWQpLCBHZXRBY3RpdmVTbmFwc2hvdCgpLAogCQkJCQkJ CSAgIG91dHNsb3QsCiAJCQkJCQkJICAgR2V0Q3VycmVudENvbW1hbmRJZChmYWxzZSksCkBAIC0y NjMsMTMgKzI0NiwxNSBAQCByZXRyeToKIAkJCQkJCQkgICAwIC8qIGRvbid0IGZvbGxvdyB1cGRh dGVzICovICwKIAkJCQkJCQkgICAmdG1mZCk7CiAKLQkJUG9wQWN0aXZlU25hcHNob3QoKTsKLQog CQlpZiAoc2hvdWxkX3JlZmV0Y2hfdHVwbGUocmVzLCAmdG1mZCkpCisJCXsKKwkJCVBvcEFjdGl2 ZVNuYXBzaG90KCk7CiAJCQlnb3RvIHJldHJ5OworCQl9CiAJfQogCiAJaW5kZXhfZW5kc2Nhbihz Y2FuKTsKKwlQb3BBY3RpdmVTbmFwc2hvdCgpOwogCiAJLyogRG9uJ3QgcmVsZWFzZSBsb2NrIHVu dGlsIGNvbW1pdC4gKi8KIAlpbmRleF9jbG9zZShpZHhyZWwsIE5vTG9jayk7CkBAIC0zNzAsOSAr MzU1LDcgQEAgUmVsYXRpb25GaW5kUmVwbFR1cGxlU2VxKFJlbGF0aW9uIHJlbCwgTG9ja1R1cGxl TW9kZSBsb2NrbW9kZSwKIHsKIAlUdXBsZVRhYmxlU2xvdCAqc2NhbnNsb3Q7CiAJVGFibGVTY2Fu RGVzYyBzY2FuOwotCVNuYXBzaG90RGF0YSBzbmFwOwogCVR5cGVDYWNoZUVudHJ5ICoqZXE7Ci0J VHJhbnNhY3Rpb25JZCB4d2FpdDsKIAlib29sCQlmb3VuZDsKIAlUdXBsZURlc2MJZGVzYyBQR19V U0VEX0ZPUl9BU1NFUlRTX09OTFkgPSBSZWxhdGlvbkdldERlc2NyKHJlbCk7CiAKQEAgLTM4MCwx MyArMzYzLDE1IEBAIFJlbGF0aW9uRmluZFJlcGxUdXBsZVNlcShSZWxhdGlvbiByZWwsIExvY2tU dXBsZU1vZGUgbG9ja21vZGUsCiAKIAllcSA9IHBhbGxvYzAoc2l6ZW9mKCplcSkgKiBvdXRzbG90 LT50dHNfdHVwbGVEZXNjcmlwdG9yLT5uYXR0cyk7CiAKLQkvKiBTdGFydCBhIGhlYXAgc2Nhbi4g Ki8KLQlJbml0RGlydHlTbmFwc2hvdChzbmFwKTsKLQlzY2FuID0gdGFibGVfYmVnaW5zY2FuKHJl bCwgJnNuYXAsIDAsIE5VTEwpOworCS8qIFN0YXJ0IGEgaGVhcCBzY2FuLiBTbmFwc2hvdEFueSB3 aWxsIGJlIHJlcGxhY2VkIGJlbG93LiAqLworCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW4ocmVsLCBT bmFwc2hvdEFueSwgMCwgTlVMTCk7CiAJc2NhbnNsb3QgPSB0YWJsZV9zbG90X2NyZWF0ZShyZWws IE5VTEwpOwogCiByZXRyeToKIAlmb3VuZCA9IGZhbHNlOworCVB1c2hBY3RpdmVTbmFwc2hvdChH ZXRMYXRlc3RTbmFwc2hvdCgpKTsKKwkvKiBVcGRhdGUgdGhlIGFjdHVhbCBzY2FuIHNuYXBzaG90 IGVhY2ggcmV0cnkgKi8KKwlzY2FuLT5yc19zbmFwc2hvdCA9IEdldEFjdGl2ZVNuYXBzaG90KCk7 CiAKIAl0YWJsZV9yZXNjYW4oc2NhbiwgTlVMTCk7CiAKQEAgLTM5OSwxOSArMzg0LDYgQEAgcmV0 cnk6CiAJCWZvdW5kID0gdHJ1ZTsKIAkJRXhlY0NvcHlTbG90KG91dHNsb3QsIHNjYW5zbG90KTsK IAotCQl4d2FpdCA9IFRyYW5zYWN0aW9uSWRJc1ZhbGlkKHNuYXAueG1pbikgPwotCQkJc25hcC54 bWluIDogc25hcC54bWF4OwotCi0JCS8qCi0JCSAqIElmIHRoZSB0dXBsZSBpcyBsb2NrZWQsIHdh aXQgZm9yIGxvY2tpbmcgdHJhbnNhY3Rpb24gdG8gZmluaXNoIGFuZAotCQkgKiByZXRyeS4KLQkJ ICovCi0JCWlmIChUcmFuc2FjdGlvbklkSXNWYWxpZCh4d2FpdCkpCi0JCXsKLQkJCVhhY3RMb2Nr VGFibGVXYWl0KHh3YWl0LCBOVUxMLCBOVUxMLCBYTFRXX05vbmUpOwotCQkJZ290byByZXRyeTsK LQkJfQotCiAJCS8qIEZvdW5kIG91ciB0dXBsZSBhbmQgaXQncyBub3QgbG9ja2VkICovCiAJCWJy ZWFrOwogCX0KQEAgLTQyMiw4ICszOTQsNiBAQCByZXRyeToKIAkJVE1fRmFpbHVyZURhdGEgdG1m ZDsKIAkJVE1fUmVzdWx0CXJlczsKIAotCQlQdXNoQWN0aXZlU25hcHNob3QoR2V0TGF0ZXN0U25h cHNob3QoKSk7Ci0KIAkJcmVzID0gdGFibGVfdHVwbGVfbG9jayhyZWwsICYob3V0c2xvdC0+dHRz X3RpZCksIEdldEFjdGl2ZVNuYXBzaG90KCksCiAJCQkJCQkJICAgb3V0c2xvdCwKIAkJCQkJCQkg ICBHZXRDdXJyZW50Q29tbWFuZElkKGZhbHNlKSwKQEAgLTQzMiwxMyArNDAyLDE2IEBAIHJldHJ5 OgogCQkJCQkJCSAgIDAgLyogZG9uJ3QgZm9sbG93IHVwZGF0ZXMgKi8gLAogCQkJCQkJCSAgICZ0 bWZkKTsKIAotCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwogCiAJCWlmIChzaG91bGRfcmVmZXRjaF90 dXBsZShyZXMsICZ0bWZkKSkKKwkJeworCQkJUG9wQWN0aXZlU25hcHNob3QoKTsKIAkJCWdvdG8g cmV0cnk7CisJCX0KIAl9CiAKIAl0YWJsZV9lbmRzY2FuKHNjYW4pOworCVBvcEFjdGl2ZVNuYXBz aG90KCk7CiAJRXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChzY2Fuc2xvdCk7CiAKIAlyZXR1 cm4gZm91bmQ7Ci0tIAoyLjQ4LjEKCg== --000000000000aa181206423be005 Content-Type: text/x-patch; charset="US-ASCII"; name="v14-0001-This-patch-introduces-new-injection-points-and-T.patch" Content-Disposition: attachment; filename="v14-0001-This-patch-introduces-new-injection-points-and-T.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mhatjcck1 RnJvbSA2NmVkZTBmOTAwMWQ5ZTg0MWU5MjQ5MDkxODY5ZGJkZTU4ZGY0ZDVjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogU2F0LCAyMyBOb3YgMjAyNCAxMzoyNToxMSArMDEwMApTdWJqZWN0OiBbUEFUQ0ggdjE0IDEv Ml0gVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIG5ldyBpbmplY3Rpb24gcG9pbnRzIGFuZCBUQVAKIHRl c3RzIHRvIHJlcHJvZHVjZSBhbmQgdmVyaWZ5IGNvbmZsaWN0IGRldGVjdGlvbiBpc3N1ZXMgdGhh dCBhcmlzZSBkdXJpbmcKIFNOQVBTSE9UX0RJUlRZIGluZGV4IHNjYW5zIGluIGxvZ2ljYWwgcmVw bGljYXRpb24uCgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9pbmRleGFtLmMgICAgICAg ICAgICB8ICAgOSArKwogc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9SRUFETUUgICAgICAgICAg ICAgIHwgICA5ICsrCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjSW5kZXhpbmcuYyAgICAgICAg ICAgfCAgIDcgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgICAg ICB8ICAgNCArCiBzcmMvaW5jbHVkZS91dGlscy9zbmFwc2hvdC5oICAgICAgICAgICAgICAgICAg fCAgMTQgKysKIHNyYy90ZXN0L3N1YnNjcmlwdGlvbi9tZXNvbi5idWlsZCAgICAgICAgICAgICB8 ICAgNCArCiAuLi4vc3Vic2NyaXB0aW9uL3QvMDM2X2RlbGV0ZV9taXNzaW5nX3JhY2UucGwgfCAx MzkgKysrKysrKysrKysrKysrKysKIC4uLi9zdWJzY3JpcHRpb24vdC8wMzdfdXBkYXRlX21pc3Np bmdfcmFjZS5wbCB8IDE0MSArKysrKysrKysrKysrKysrKwogLi4uL3QvMDM4X3VwZGF0ZV9taXNz aW5nX3dpdGhfcmV0YWluLnBsICAgICAgIHwgMTQzICsrKysrKysrKysrKysrKysrKwogLi4uL3Qv MDM5X3VwZGF0ZV9taXNzaW5nX3NpbXVsYXRpb24ucGwgICAgICAgIHwgMTI1ICsrKysrKysrKysr KysrKwogMTAgZmlsZXMgY2hhbmdlZCwgNTk0IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkK IGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzZfZGVsZXRlX21p c3NpbmdfcmFjZS5wbAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90 LzAzN191cGRhdGVfbWlzc2luZ19yYWNlLnBsCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3Qv c3Vic2NyaXB0aW9uL3QvMDM4X3VwZGF0ZV9taXNzaW5nX3dpdGhfcmV0YWluLnBsCiBjcmVhdGUg bW9kZSAxMDA2NDQgc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM5X3VwZGF0ZV9taXNzaW5nX3Np bXVsYXRpb24ucGwKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvaW5kZXhh bS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2luZGV4YW0uYwppbmRleCA4NmQxMWY0ZWM3 OS4uYTUwM2ZhMDJhYzUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9pbmRl eGFtLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2luZGV4YW0uYwpAQCAtNTIsMTEg KzUyLDEzIEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgiCiAjaW5jbHVkZSAibm9kZXMv ZXhlY25vZGVzLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24v bG9naWNhbHdvcmtlci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIgogI2luY2x1ZGUgInN0 b3JhZ2UvcHJlZGljYXRlLmgiCiAjaW5jbHVkZSAidXRpbHMvcnVsZXV0aWxzLmgiCiAjaW5jbHVk ZSAidXRpbHMvc25hcG1nci5oIgogI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCisjaW5jbHVk ZSAidXRpbHMvaW5qZWN0aW9uX3BvaW50LmgiCiAKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNzUxLDYgKzc1 MywxMyBAQCBpbmRleF9nZXRuZXh0X3Nsb3QoSW5kZXhTY2FuRGVzYyBzY2FuLCBTY2FuRGlyZWN0 aW9uIGRpcmVjdGlvbiwgVHVwbGVUYWJsZVNsb3QgKgogCQkgKiB0aGUgaW5kZXguCiAJCSAqLwog CQlBc3NlcnQoSXRlbVBvaW50ZXJJc1ZhbGlkKCZzY2FuLT54c19oZWFwdGlkKSk7CisjaWZkZWYg VVNFX0lOSkVDVElPTl9QT0lOVFMKKwkJaWYgKCFJc0NhdGFsb2dSZWxhdGlvbihzY2FuLT5oZWFw UmVsYXRpb24pICYmIElzTG9naWNhbFdvcmtlcigpKQorCQl7CisJCQlJTkpFQ1RJT05fUE9JTlQo ImluZGV4X2dldG5leHRfc2xvdF9iZWZvcmVfZmV0Y2hfYXBwbHlfZGlydHkiLCBOVUxMKTsKKwkJ fQorI2VuZGlmCisKIAkJaWYgKGluZGV4X2ZldGNoX2hlYXAoc2Nhbiwgc2xvdCkpCiAJCQlyZXR1 cm4gdHJ1ZTsKIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL1JFQURN RSBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvUkVBRE1FCmluZGV4IDUzZDRhNjFkYzNmLi42 MzRhM2QxMGJiMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9SRUFETUUK KysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9SRUFETUUKQEAgLTEwMyw2ICsxMDMsMTUg QEAgV2UgYWxzbyByZW1lbWJlciB0aGUgbGVmdC1saW5rLCBhbmQgZm9sbG93IGl0IHdoZW4gdGhl IHNjYW4gbW92ZXMgYmFja3dhcmRzCiAodGhvdWdoIHRoaXMgcmVxdWlyZXMgZXh0cmEgaGFuZGxp bmcgdG8gYWNjb3VudCBmb3IgY29uY3VycmVudCBzcGxpdHMgb2YKIHRoZSBsZWZ0IHNpYmxpbmc7 IHNlZSBkZXRhaWxlZCBtb3ZlLWxlZnQgYWxnb3JpdGhtIGJlbG93KS4KIAorRGVzcGl0ZSB0aGUg ZGVzY3JpYmVkIG1lY2hhbmljcyBpbiBwbGFjZSwgaW5jb25zaXN0ZW50IHJlc3VsdHMgbWF5IHN0 aWxsIG9jY3VyCitkdXJpbmcgbm9uLU1WQ0Mgc2NhbnMgKFNuYXBzaG90RGlydHkgYW5kIFNuYXBz aG90U2VsZikuIFRoaXMgaXNzdWUgY2FuIG9jY3VyIGlmIGEgCitjb25jdXJyZW50IHRyYW5zYWN0 aW9uIGRlbGV0ZXMgYSB0dXBsZSBhbmQgaW5zZXJ0cyBhIG5ldyB0dXBsZSB3aXRoIGEgbmV3IFRJ RCBpbiB0aGUgCitzYW1lIHBhZ2Ugb3IgdG8gdGhlIGxlZnQvcmlnaHQgKGRlcGVuZGluZyBvbiBz Y2FuIGRpcmVjdGlvbikgb2YgY3VycmVudCBzY2FuIHBvc2l0aW9uLgorSWYgdGhlIHNjYW4gaGFz IGFscmVhZHkgdmlzaXRlZCB0aGUgcGFnZSBhbmQgY2FjaGVkIGl0cyBjb250ZW50IGluIHRoZQor YmFja2VuZC1sb2NhbCBzdG9yYWdlLCBpdCBtaWdodCBza2lwIHRoZSBvbGQgdHVwbGUgZHVlIHRv IGRlbGV0aW9uIGFuZCBtaXNzIHRoZSBuZXcgCit0dXBsZSBiZWNhdXNlIHRoZSBzY2FuIGRvZXMg bm90IHJlLXJlYWQgdGhlIHBhZ2UuIE5vdGUgaXQgYWZmZWN0cyBub3Qgb25seSBidHJlZQorc2Nh biBidXQgYWxzbyBhIGhlYXAgc2Nhbi4KKwogSW4gbW9zdCBjYXNlcyB3ZSByZWxlYXNlIG91ciBs b2NrIGFuZCBwaW4gb24gYSBwYWdlIGJlZm9yZSBhdHRlbXB0aW5nCiB0byBhY3F1aXJlIHBpbiBh bmQgbG9jayBvbiB0aGUgcGFnZSB3ZSBhcmUgbW92aW5nIHRvLiAgSW4gYSBmZXcgcGxhY2VzCiBp dCBpcyBuZWNlc3NhcnkgdG8gbG9jayB0aGUgbmV4dCBwYWdlIGJlZm9yZSByZWxlYXNpbmcgdGhl IGN1cnJlbnQgb25lLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4 aW5nLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjSW5kZXhpbmcuYwppbmRleCBjYTMzYTg1 NDI3OC4uNjFhNTA5N2Y3ODkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJ bmRleGluZy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5jCkBAIC0x MTcsNiArMTE3LDcgQEAKICNpbmNsdWRlICJ1dGlscy9tdWx0aXJhbmdldHlwZXMuaCIKICNpbmNs dWRlICJ1dGlscy9yYW5nZXR5cGVzLmgiCiAjaW5jbHVkZSAidXRpbHMvc25hcG1nci5oIgorI2lu Y2x1ZGUgInV0aWxzL2luamVjdGlvbl9wb2ludC5oIgogCiAvKiB3YWl0TW9kZSBhcmd1bWVudCB0 byBjaGVja19leGNsdXNpb25fb3JfdW5pcXVlX2NvbnN0cmFpbnQoKSAqLwogdHlwZWRlZiBlbnVt CkBAIC03ODAsNyArNzgxLDkgQEAgY2hlY2tfZXhjbHVzaW9uX29yX3VuaXF1ZV9jb25zdHJhaW50 KFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCS8qCiAJICogU2VhcmNoIHRoZSB0dXBs ZXMgdGhhdCBhcmUgaW4gdGhlIGluZGV4IGZvciBhbnkgdmlvbGF0aW9ucywgaW5jbHVkaW5nCiAJ ICogdHVwbGVzIHRoYXQgYXJlbid0IHZpc2libGUgeWV0LgotCSAqLworCSAqIFNuYXBzaG90IGRp cnR5IG1heSBtaXNzIHNvbWUgdHVwbGVzIGluIHRoZSBjYXNlIG9mIHBhcmFsbGVsIHVwZGF0ZXMs CisJICogYnV0IGl0IGlzIGFjY2VwdGFibGUgaGVyZS4KKwkqLwogCUluaXREaXJ0eVNuYXBzaG90 KERpcnR5U25hcHNob3QpOwogCiAJZm9yIChpID0gMDsgaSA8IGluZG5rZXlhdHRzOyBpKyspCkBA IC05NDMsNiArOTQ2LDggQEAgcmV0cnk6CiAKIAlFeGVjRHJvcFNpbmdsZVR1cGxlVGFibGVTbG90 KGV4aXN0aW5nX3Nsb3QpOwogCisJaWYgKCFjb25mbGljdCkKKwkJSU5KRUNUSU9OX1BPSU5UKCJj aGVja19leGNsdXNpb25fb3JfdW5pcXVlX2NvbnN0cmFpbnRfbm9fY29uZmxpY3QiLCBOVUxMKTsK IAlyZXR1cm4gIWNvbmZsaWN0OwogfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL3dvcmtlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93 b3JrZXIuYwppbmRleCBlZTZhYzIyMzI5Zi4uY2NjYmFlZWRmZDcgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC93b3JrZXIuYwpAQCAtMjc3LDYgKzI3Nyw3IEBACiAjaW5jbHVkZSAi dGNvcC90Y29wcHJvdC5oIgogI2luY2x1ZGUgInV0aWxzL2FjbC5oIgogI2luY2x1ZGUgInV0aWxz L2d1Yy5oIgorI2luY2x1ZGUgInV0aWxzL2luamVjdGlvbl9wb2ludC5oIgogI2luY2x1ZGUgInV0 aWxzL2ludmFsLmgiCiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRp bHMvbWVtdXRpbHMuaCIKQEAgLTI5NDYsNyArMjk0NywxMCBAQCBhcHBseV9oYW5kbGVfdXBkYXRl X2ludGVybmFsKEFwcGx5RXhlY3V0aW9uRGF0YSAqZWRhdGEsCiAJCQljb25mbGljdHR1cGxlLm9y aWdpbiAhPSByZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luKQogCQkJdHlwZSA9IENUX1VQREFURV9E RUxFVEVEOwogCQllbHNlCisJCXsKKwkJCUlOSkVDVElPTl9QT0lOVCgiYXBwbHlfaGFuZGxlX3Vw ZGF0ZV9pbnRlcm5hbF91cGRhdGVfbWlzc2luZyIsIE5VTEwpOwogCQkJdHlwZSA9IENUX1VQREFU RV9NSVNTSU5HOworCQl9CiAKIAkJLyogU3RvcmUgdGhlIG5ldyB0dXBsZSBmb3IgY29uZmxpY3Qg cmVwb3J0aW5nICovCiAJCXNsb3Rfc3RvcmVfZGF0YShuZXdzbG90LCByZWxtYXBlbnRyeSwgbmV3 dHVwKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3NuYXBzaG90LmggYi9zcmMvaW5j bHVkZS91dGlscy9zbmFwc2hvdC5oCmluZGV4IDBlNTQ2ZWMxNDk3Li4xODlkZmQ3MTEwMyAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvc25hcHNob3QuaAorKysgYi9zcmMvaW5jbHVkZS91 dGlscy9zbmFwc2hvdC5oCkBAIC01Myw2ICs1MywxMyBAQCB0eXBlZGVmIGVudW0gU25hcHNob3RU eXBlCiAJICogLSBwcmV2aW91cyBjb21tYW5kcyBvZiB0aGlzIHRyYW5zYWN0aW9uCiAJICogLSBj aGFuZ2VzIG1hZGUgYnkgdGhlIGN1cnJlbnQgY29tbWFuZAogCSAqCisJICogTm90ZTogc3VjaCBh IHNuYXBzaG90IG1heSBtaXNzIGFuIGV4aXN0aW5nIGxvZ2ljYWwgdHVwbGUgaW4gY2FzZSBvZgor CSAqIHBhcmFsbGVsIHVwZGF0ZS4KKwkgKiBJZiBhIG5ldyB2ZXJzaW9uIG9mIGEgdHVwbGUgaXMg aW5zZXJ0ZWQgaW50byBhbiBhbHJlYWR5IHByb2Nlc3NlZCBwYWdlCisJICogYnV0IHRoZSBvbGQg b25lIG1hcmtlZCB3aXRoIGNvbW1pdHRlZCB4bWF4IC0gc25hcHNob3Qgd2lsbCBza2lwIHRoZSBv bGQKKwkgKiBvbmUgYW5kIG5ldmVyIG1lZXQgdGhlIG5ldyBvbmUgZHVyaW5nIHRoYXQgc2NhbiAt IHJlc3VsdGluZyBpbiBza2lwcGluZworCSAqIHRoYXQgdHVwbGUgYXQgYWxsLgorCSAqCiAJICog RG9lcyBfbm90XyBpbmNsdWRlOgogCSAqIC0gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zIChhcyBv ZiB0aGUgY3VycmVudCBpbnN0YW50KQogCSAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTgyLDYgKzg5 LDEzIEBAIHR5cGVkZWYgZW51bSBTbmFwc2hvdFR5cGUKIAkgKiB0cmFuc2FjdGlvbiBhbmQgY29t bWl0dGVkL2Fib3J0ZWQgeGFjdHMgYXJlIGNvbmNlcm5lZC4gIEhvd2V2ZXIsIGl0CiAJICogYWxz byBpbmNsdWRlcyB0aGUgZWZmZWN0cyBvZiBvdGhlciB4YWN0cyBzdGlsbCBpbiBwcm9ncmVzcy4K IAkgKgorCSAqIE5vdGU6IHN1Y2ggYSBzbmFwc2hvdCBtYXkgbWlzcyBhbiBleGlzdGluZyBsb2dp Y2FsIHR1cGxlIGluIGNhc2Ugb2YKKwkgKiBwYXJhbGxlbCB1cGRhdGUuCisJICogSWYgYSBuZXcg dmVyc2lvbiBvZiBhIHR1cGxlIGlzIGluc2VydGVkIGludG8gYW4gYWxyZWFkeSBwcm9jZXNzZWQg cGFnZSBidXQgdGhlCisJICogb2xkIG9uZSBtYXJrZWQgd2l0aCBjb21taXR0ZWQvaW4tcHJvZ3Jl c3MgeG1heCAtIHNuYXBzaG90IHdpbGwgc2tpcCB0aGUgb2xkIG9uZQorCSAqIGFuZCBuZXZlciBt ZWV0IHRoZSBuZXcgb25lIGR1cmluZyB0aGF0IHNjYW4gLSByZXN1bHRpbmcgaW4gc2tpcHBpbmcg dGhhdCB0dXBsZQorCSAqIGF0IGFsbC4KKwkgKgogCSAqIEEgc3BlY2lhbCBoYWNrIGlzIHRoYXQg d2hlbiBhIHNuYXBzaG90IG9mIHRoaXMgdHlwZSBpcyB1c2VkIHRvCiAJICogZGV0ZXJtaW5lIHR1 cGxlIHZpc2liaWxpdHksIHRoZSBwYXNzZWQtaW4gc25hcHNob3Qgc3RydWN0IGlzIHVzZWQgYXMg YW4KIAkgKiBvdXRwdXQgYXJndW1lbnQgdG8gcmV0dXJuIHRoZSB4aWRzIG9mIGNvbmN1cnJlbnQg eGFjdHMgdGhhdCBhZmZlY3RlZApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL21l c29uLmJ1aWxkIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL21lc29uLmJ1aWxkCmluZGV4IDIwYjRl NTIzZDkzLi40ZjlhNWM5MjA5ZCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL21l c29uLmJ1aWxkCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi9tZXNvbi5idWlsZApAQCAtNDUs NiArNDUsMTAgQEAgdGVzdHMgKz0gewogICAgICAgJ3QvMDMzX3J1bl9hc190YWJsZV9vd25lci5w bCcsCiAgICAgICAndC8wMzRfdGVtcG9yYWwucGwnLAogICAgICAgJ3QvMDM1X2NvbmZsaWN0cy5w bCcsCisgICAgICAndC8wMzZfZGVsZXRlX21pc3NpbmdfcmFjZS5wbCcsCisgICAgICAndC8wMzdf dXBkYXRlX21pc3NpbmdfcmFjZS5wbCcsCisgICAgICAndC8wMzhfdXBkYXRlX21pc3Npbmdfd2l0 aF9yZXRhaW4ucGwnLAorICAgICAgJ3QvMDM5X3VwZGF0ZV9taXNzaW5nX3NpbXVsYXRpb24ucGwn LAogICAgICAgJ3QvMTAwX2J1Z3MucGwnLAogICAgIF0sCiAgIH0sCmRpZmYgLS1naXQgYS9zcmMv dGVzdC9zdWJzY3JpcHRpb24vdC8wMzZfZGVsZXRlX21pc3NpbmdfcmFjZS5wbCBiL3NyYy90ZXN0 L3N1YnNjcmlwdGlvbi90LzAzNl9kZWxldGVfbWlzc2luZ19yYWNlLnBsCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi41MWRkMzUxZGMxMAotLS0gL2Rldi9udWxsCisrKyBi L3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzNl9kZWxldGVfbWlzc2luZ19yYWNlLnBsCkBAIC0w LDAgKzEsMTM5IEBACisjIENvcHlyaWdodCAoYykgMjAyNSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2 ZWxvcG1lbnQgR3JvdXAKKworIyBUZXN0IHRoZSBjb25mbGljdCBkZXRlY3Rpb24gYW5kIHJlc29s dXRpb24gaW4gbG9naWNhbCByZXBsaWNhdGlvbgordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5ncyBG QVRBTCA9PiAnYWxsJzsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3Rn cmVTUUw6OlRlc3Q6OlV0aWxzOwordXNlIFRlc3Q6Ok1vcmU7CisKK2lmICgkRU5We2VuYWJsZV9p bmplY3Rpb25fcG9pbnRzfSBuZSAneWVzJykKK3sKKwlwbGFuIHNraXBfYWxsID0+ICdJbmplY3Rp b24gcG9pbnRzIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBidWlsZCc7Cit9CisKKyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyBTZXQgaXQgdG8gMCB0byBtYWtlIHNldCBzdWNjZXNzOyBUT0RP OiBkZWxldGUgdGhhdCBmb3IgY29tbWl0CitteSAkc2ltdWxhdGVfcmFjZV9jb25kaXRpb24gPSAx OworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKKyMgU2V0dXAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwor IyBJbml0aWFsaXplIHB1Ymxpc2hlciBub2RlCitteSAkbm9kZV9wdWJsaXNoZXIgPSBQb3N0Z3Jl U1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3B1Ymxpc2hlcicpOworJG5vZGVfcHVibGlzaGVyLT5p bml0KGFsbG93c19zdHJlYW1pbmcgPT4gJ2xvZ2ljYWwnKTsKKyRub2RlX3B1Ymxpc2hlci0+YXBw ZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJcXEodHJhY2tfY29tbWl0X3RpbWVzdGFtcCA9 IG9uKSk7Ciskbm9kZV9wdWJsaXNoZXItPnN0YXJ0OworCisKKyMgQ3JlYXRlIHN1YnNjcmliZXIg bm9kZSB3aXRoIHRyYWNrX2NvbW1pdF90aW1lc3RhbXAgZW5hYmxlZAorbXkgJG5vZGVfc3Vic2Ny aWJlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnc3Vic2NyaWJlcicpOworJG5v ZGVfc3Vic2NyaWJlci0+aW5pdDsKKyRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0 Z3Jlc3FsLmNvbmYnLAorCXFxKHRyYWNrX2NvbW1pdF90aW1lc3RhbXAgPSBvbikpOworJG5vZGVf c3Vic2NyaWJlci0+c3RhcnQ7CisKKworIyBDaGVjayBpZiB0aGUgZXh0ZW5zaW9uIGluamVjdGlv bl9wb2ludHMgaXMgYXZhaWxhYmxlLCBhcyBpdCBtYXkgYmUKKyMgcG9zc2libGUgdGhhdCB0aGlz IHNjcmlwdCBpcyBydW4gd2l0aCBpbnN0YWxsY2hlY2ssIHdoZXJlIHRoZSBtb2R1bGUKKyMgd291 bGQgbm90IGJlIGluc3RhbGxlZCBieSBkZWZhdWx0LgoraWYgKCEkbm9kZV9zdWJzY3JpYmVyLT5j aGVja19leHRlbnNpb24oJ2luamVjdGlvbl9wb2ludHMnKSkKK3sKKwlwbGFuIHNraXBfYWxsID0+ ICdFeHRlbnNpb24gaW5qZWN0aW9uX3BvaW50cyBub3QgaW5zdGFsbGVkJzsKK30KKworIyBDcmVh dGUgdGFibGUgb24gcHVibGlzaGVyCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9z dGdyZXMnLAorCSJDUkVBVEUgVEFCTEUgY29uZl90YWIoYSBpbnQgUFJJTUFSWSBrZXksIGRhdGEg dGV4dCk7Iik7CisKKyMgQ3JlYXRlIHNpbWlsYXIgdGFibGUgb24gc3Vic2NyaWJlciB3aXRoIGFk ZGl0aW9uYWwgaW5kZXggdG8gZGlzYWJsZSBIT1QgdXBkYXRlcworJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsCisJIkNSRUFURSBUQUJMRSBjb25mX3RhYihhIGludCBQ UklNQVJZIGtleSwgZGF0YSB0ZXh0KTsKKwkgQ1JFQVRFIElOREVYIGRhdGFfaW5kZXggT04gY29u Zl90YWIoZGF0YSk7Iik7CisKKyMgU2V0IHVwIGV4dGVuc2lvbiB0byBzaW11bGF0ZSByYWNlIGNv bmRpdGlvbgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdDUkVBVEUg RVhURU5TSU9OIGluamVjdGlvbl9wb2ludHM7Jyk7CisKKyMgU2V0dXAgbG9naWNhbCByZXBsaWNh dGlvbgorbXkgJHB1Ymxpc2hlcl9jb25uc3RyID0gJG5vZGVfcHVibGlzaGVyLT5jb25uc3RyIC4g JyBkYm5hbWU9cG9zdGdyZXMnOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkiQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWIgRk9SIFRBQkxFIGNvbmZfdGFiIik7CisK KyMgSW5zZXJ0IHJvdyB0byBiZSB1cGRhdGVkIGxhdGVyCiskbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyBjb25mX3RhYihhLCBkYXRhKSBWQUxVRVMg KDEsJ2Zyb21wdWInKSIpOworCisjIENyZWF0ZSB0aGUgc3Vic2NyaXB0aW9uCitteSAkYXBwbmFt ZSA9ICd0YXBfc3ViJzsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMn LAorCSJDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWIKKwkgQ09OTkVDVElPTiAnJHB1Ymxpc2hl cl9jb25uc3RyIGFwcGxpY2F0aW9uX25hbWU9JGFwcG5hbWUnCisJIFBVQkxJQ0FUSU9OIHRhcF9w dWIiKTsKKworIyBXYWl0IGZvciBpbml0aWFsIHRhYmxlIHN5bmMgdG8gZmluaXNoCiskbm9kZV9z dWJzY3JpYmVyLT53YWl0X2Zvcl9zdWJzY3JpcHRpb25fc3luYygkbm9kZV9wdWJsaXNoZXIsICRh cHBuYW1lKTsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK KyMgUmFjZSBjb25kaXRpb24gYmVjYXVzZSBvZiBEaXJ0eVNuYXBzaG90CisjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitteSAkcHNxbF9zZXNzaW9uX3N1YnNj cmliZXIgPSAkbm9kZV9zdWJzY3JpYmVyLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJyk7Citp ZiAoJHNpbXVsYXRlX3JhY2VfY29uZGl0aW9uKQoreworCSRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdpbmRl eF9nZXRuZXh0X3Nsb3RfYmVmb3JlX2ZldGNoX2FwcGx5X2RpcnR5JywgJ3dhaXQnKSIpOworfQor CitteSAkbG9nX29mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKyMgRGVs ZXRlIHR1cGxlIG9uIHB1Ymxpc2hlcgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgIkRFTEVURSBGUk9NIGNvbmZfdGFiIFdIRVJFIGE9MTsiKTsKKworaWYgKCRzaW11bGF0 ZV9yYWNlX2NvbmRpdGlvbikKK3sKKwkjIFdhaXQgYXBwbHkgd29ya2VyIHRvIHN0YXJ0IHRoZSBz ZWFyY2ggZm9yIHRoZSB0dXBsZSB1c2luZyBpbmRleAorCSRub2RlX3N1YnNjcmliZXItPndhaXRf Zm9yX2V2ZW50KCdsb2dpY2FsIHJlcGxpY2F0aW9uIGFwcGx5IHdvcmtlcicsCisJCSdpbmRleF9n ZXRuZXh0X3Nsb3RfYmVmb3JlX2ZldGNoX2FwcGx5X2RpcnR5Jyk7Cit9CisKKyMgVXBkYXRlciB0 dXBsZSBvbiBzdWJzY3JpYmVyCiskcHNxbF9zZXNzaW9uX3N1YnNjcmliZXItPnF1ZXJ5X3VudGls KAorCXFyL3N0YXJ0LywgcXFbCisJXFxlY2hvIHN0YXJ0CisJVVBEQVRFIGNvbmZfdGFiIFNFVCBk YXRhID0gJ2Zyb21zdWJuZXcnIFdIRVJFIChhPTEpOworXSk7CisKKworaWYgKCRzaW11bGF0ZV9y YWNlX2NvbmRpdGlvbikKK3sKKwkjIFdha2UgdXAgYXBwbHkgd29ya2VyCisJJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIgorCQlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19k ZXRhY2goJ2luZGV4X2dldG5leHRfc2xvdF9iZWZvcmVfZmV0Y2hfYXBwbHlfZGlydHknKTsKKwkJ U0VMRUNUIGluamVjdGlvbl9wb2ludHNfd2FrZXVwKCdpbmRleF9nZXRuZXh0X3Nsb3RfYmVmb3Jl X2ZldGNoX2FwcGx5X2RpcnR5Jyk7CisJCSIpOworfQorCisjIFR1cGxlIHdhcyB1cGRhdGVkIC0g c28sIHdlIGhhdmUgY29uZmxpY3QKKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwlx ci9jb25mbGljdCBkZXRlY3RlZCBvbiByZWxhdGlvbiBcInB1YmxpYy5jb25mX3RhYlwiLywKKwkk bG9nX29mZnNldCk7CisKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFt ZSk7CisKKyMgQnV0IHR1cGxlIHNob3VsZCBiZSBkZWxldGVkIG9uIHN1YnNjcmliZXIgYW55IHdh eQoraXMoJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdTRUxFQ1QgY291 bnQoKikgZnJvbSBjb25mX3RhYicpLCAwLCAncmVjb3JkIGRlbGV0ZWQgb24gc3Vic2NyaWJlcicp OworCitvayghJG5vZGVfc3Vic2NyaWJlci0+bG9nX2NvbnRhaW5zKAorCQlxci9MT0c6ICBjb25m bGljdCBkZXRlY3RlZCBvbiByZWxhdGlvbiBcInB1YmxpYy5jb25mX3RhYlwiOiBjb25mbGljdD1k ZWxldGVfbWlzc2luZy8sCisJCSRsb2dfb2Zmc2V0KSwgJ2ludmFsaWQgY29uZmxpY3QgZGV0ZWN0 ZWQnKTsKKworb2soJG5vZGVfc3Vic2NyaWJlci0+bG9nX2NvbnRhaW5zKAorCQlxci9MT0c6ICBj b25mbGljdCBkZXRlY3RlZCBvbiByZWxhdGlvbiBcInB1YmxpYy5jb25mX3RhYlwiOiBjb25mbGlj dD1kZWxldGVfb3JpZ2luX2RpZmZlcnMvLAorCQkkbG9nX29mZnNldCksICdjb3JyZWN0IGNvbmZs aWN0IGRldGVjdGVkJyk7CisKK2RvbmVfdGVzdGluZygpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv c3Vic2NyaXB0aW9uL3QvMDM3X3VwZGF0ZV9taXNzaW5nX3JhY2UucGwgYi9zcmMvdGVzdC9zdWJz Y3JpcHRpb24vdC8wMzdfdXBkYXRlX21pc3NpbmdfcmFjZS5wbApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMC4uMWUxMjBmNzRiYmQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMv dGVzdC9zdWJzY3JpcHRpb24vdC8wMzdfdXBkYXRlX21pc3NpbmdfcmFjZS5wbApAQCAtMCwwICsx LDE0MSBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMjUsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3Bt ZW50IEdyb3VwCisKKyMgVGVzdCB0aGUgY29uZmxpY3QgZGV0ZWN0aW9uIGFuZCByZXNvbHV0aW9u IGluIGxvZ2ljYWwgcmVwbGljYXRpb24KK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3MgRkFUQUwg PT4gJ2FsbCc7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FM OjpUZXN0OjpVdGlsczsKK3VzZSBUZXN0OjpNb3JlOworCitpZiAoJEVOVntlbmFibGVfaW5qZWN0 aW9uX3BvaW50c30gbmUgJ3llcycpCit7CisJcGxhbiBza2lwX2FsbCA9PiAnSW5qZWN0aW9uIHBv aW50cyBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgYnVpbGQnOworfQorCisjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMgU2V0IGl0IHRvIDAgdG8gbWFrZSBzZXQgc3VjY2VzczsgVE9ETzogZGVs ZXRlIHRoYXQgZm9yIGNvbW1pdAorbXkgJHNpbXVsYXRlX3JhY2VfY29uZGl0aW9uID0gMTsKKyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjCisjIFNldHVwCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMgSW5p dGlhbGl6ZSBwdWJsaXNoZXIgbm9kZQorbXkgJG5vZGVfcHVibGlzaGVyID0gUG9zdGdyZVNRTDo6 VGVzdDo6Q2x1c3Rlci0+bmV3KCdwdWJsaXNoZXInKTsKKyRub2RlX3B1Ymxpc2hlci0+aW5pdChh bGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7Ciskbm9kZV9wdWJsaXNoZXItPmFwcGVuZF9j b25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCXFxKHRyYWNrX2NvbW1pdF90aW1lc3RhbXAgPSBvbikp OworJG5vZGVfcHVibGlzaGVyLT5zdGFydDsKKworCisjIENyZWF0ZSBzdWJzY3JpYmVyIG5vZGUg d2l0aCB0cmFja19jb21taXRfdGltZXN0YW1wIGVuYWJsZWQKK215ICRub2RlX3N1YnNjcmliZXIg PSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3N1YnNjcmliZXInKTsKKyRub2RlX3N1 YnNjcmliZXItPmluaXQ7Ciskbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNx bC5jb25mJywKKwlxcSh0cmFja19jb21taXRfdGltZXN0YW1wID0gb24pKTsKKyRub2RlX3N1YnNj cmliZXItPnN0YXJ0OworCisKKyMgQ2hlY2sgaWYgdGhlIGV4dGVuc2lvbiBpbmplY3Rpb25fcG9p bnRzIGlzIGF2YWlsYWJsZSwgYXMgaXQgbWF5IGJlCisjIHBvc3NpYmxlIHRoYXQgdGhpcyBzY3Jp cHQgaXMgcnVuIHdpdGggaW5zdGFsbGNoZWNrLCB3aGVyZSB0aGUgbW9kdWxlCisjIHdvdWxkIG5v dCBiZSBpbnN0YWxsZWQgYnkgZGVmYXVsdC4KK2lmICghJG5vZGVfc3Vic2NyaWJlci0+Y2hlY2tf ZXh0ZW5zaW9uKCdpbmplY3Rpb25fcG9pbnRzJykpCit7CisJcGxhbiBza2lwX2FsbCA9PiAnRXh0 ZW5zaW9uIGluamVjdGlvbl9wb2ludHMgbm90IGluc3RhbGxlZCc7Cit9CisKKyMgQ3JlYXRlIHRh YmxlIG9uIHB1Ymxpc2hlcgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVz JywKKwkiQ1JFQVRFIFRBQkxFIGNvbmZfdGFiKGEgaW50IFBSSU1BUlkga2V5LCBkYXRhIHRleHQp OyIpOworCisjIENyZWF0ZSBzaW1pbGFyIHRhYmxlIG9uIHN1YnNjcmliZXIgd2l0aCBhZGRpdGlv bmFsIGluZGV4IHRvIGRpc2FibGUgSE9UIHVwZGF0ZXMgYW5kIGFkZGl0aW9uYWwgY29sdW1uCisk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFRBQkxF IGNvbmZfdGFiKGEgaW50IFBSSU1BUlkga2V5LCBkYXRhIHRleHQsIGkgaW50IERFRkFVTFQgMCk7 CisJIENSRUFURSBJTkRFWCBpX2luZGV4IE9OIGNvbmZfdGFiKGkpOyIpOworCisjIFNldCB1cCBl eHRlbnNpb24gdG8gc2ltdWxhdGUgcmFjZSBjb25kaXRpb24KKyRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCAnQ1JFQVRFIEVYVEVOU0lPTiBpbmplY3Rpb25fcG9pbnRzOycp OworCisjIFNldHVwIGxvZ2ljYWwgcmVwbGljYXRpb24KK215ICRwdWJsaXNoZXJfY29ubnN0ciA9 ICRub2RlX3B1Ymxpc2hlci0+Y29ubnN0ciAuICcgZGJuYW1lPXBvc3RncmVzJzsKKyRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBQVUJMSUNBVElPTiB0YXBf cHViIEZPUiBUQUJMRSBjb25mX3RhYiIpOworCisjIEluc2VydCByb3cgdG8gYmUgdXBkYXRlZCBs YXRlcgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiSU5TRVJUIElO VE8gY29uZl90YWIoYSwgZGF0YSkgVkFMVUVTICgxLCdmcm9tcHViJykiKTsKKworIyBDcmVhdGUg dGhlIHN1YnNjcmlwdGlvbgorbXkgJGFwcG5hbWUgPSAndGFwX3N1Yic7Ciskbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFNVQlNDUklQVElPTiB0YXBf c3ViCisJIENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0ciBhcHBsaWNhdGlvbl9uYW1lPSRh cHBuYW1lJworCSBQVUJMSUNBVElPTiB0YXBfcHViIik7CisKKyMgV2FpdCBmb3IgaW5pdGlhbCB0 YWJsZSBzeW5jIHRvIGZpbmlzaAorJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3Jfc3Vic2NyaXB0 aW9uX3N5bmMoJG5vZGVfcHVibGlzaGVyLCAkYXBwbmFtZSk7CisKKyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFJhY2UgY29uZGl0aW9uIGJlY2F1c2Ugb2Yg RGlydHlTbmFwc2hvdAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKKworbXkgJHBzcWxfc2Vzc2lvbl9zdWJzY3JpYmVyID0gJG5vZGVfc3Vic2NyaWJlci0+YmFj a2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycpOworaWYgKCRzaW11bGF0ZV9yYWNlX2NvbmRpdGlvbikK K3sKKwkkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBpbmpl Y3Rpb25fcG9pbnRzX2F0dGFjaCgnaW5kZXhfZ2V0bmV4dF9zbG90X2JlZm9yZV9mZXRjaF9hcHBs eV9kaXJ0eScsICd3YWl0JykiKTsKK30KKworbXkgJGxvZ19vZmZzZXQgPSAtcyAkbm9kZV9zdWJz Y3JpYmVyLT5sb2dmaWxlOworCisjIFVwZGF0ZSB0dXBsZSBvbiBwdWJsaXNoZXIKKyRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlVQREFURSBjb25mX3RhYiBTRVQgZGF0 YSA9ICdmcm9tcHVibmV3JyBXSEVSRSAoYT0xKTsiKTsKKworCitpZiAoJHNpbXVsYXRlX3JhY2Vf Y29uZGl0aW9uKQoreworCSMgV2FpdCBhcHBseSB3b3JrZXIgdG8gc3RhcnQgdGhlIHNlYXJjaCBm b3IgdGhlIHR1cGxlIHVzaW5nIGluZGV4CisJJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfZXZl bnQoJ2xvZ2ljYWwgcmVwbGljYXRpb24gYXBwbHkgd29ya2VyJywgJ2luZGV4X2dldG5leHRfc2xv dF9iZWZvcmVfZmV0Y2hfYXBwbHlfZGlydHknKTsKK30KKworIyBVcGRhdGUgYWRkaXRpb25hbCgh KSBjb2x1bW4gb24gdGhlIHN1YnNjcmliZXIKKyRwc3FsX3Nlc3Npb25fc3Vic2NyaWJlci0+cXVl cnlfdW50aWwoCisJcXIvc3RhcnQvLCBxcVsKKwlcXGVjaG8gc3RhcnQKKwlVUERBVEUgY29uZl90 YWIgU0VUIGkgPSAxIFdIRVJFIChhPTEpOworXSk7CisKKworaWYgKCRzaW11bGF0ZV9yYWNlX2Nv bmRpdGlvbikKK3sKKwkjIFdha2UgdXAgYXBwbHkgd29ya2VyCisJJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsIgorCQlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19kZXRhY2go J2luZGV4X2dldG5leHRfc2xvdF9iZWZvcmVfZmV0Y2hfYXBwbHlfZGlydHknKTsKKwkJU0VMRUNU IGluamVjdGlvbl9wb2ludHNfd2FrZXVwKCdpbmRleF9nZXRuZXh0X3Nsb3RfYmVmb3JlX2ZldGNo X2FwcGx5X2RpcnR5Jyk7CisJCSIpOworfQorCisjIFR1cGxlIHdhcyB1cGRhdGVkIC0gc28sIHdl IGhhdmUgY29uZmxpY3QKKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwlxci9jb25m bGljdCBkZXRlY3RlZCBvbiByZWxhdGlvbiBcInB1YmxpYy5jb25mX3RhYlwiLywKKwkkbG9nX29m ZnNldCk7CisKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisK KyMgV2UgbmVlZCBuZXcgY29sdW1uIHZhbHVlIGJlIHN5bmNlZCB3aXRoIHN1YnNjcmliZXIKK2lz KCRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnU0VMRUNUIGRhdGEgZnJv bSBjb25mX3RhYiBXSEVSRSBhID0gMScpLCAnZnJvbXB1Ym5ldycsICdyZWNvcmQgdXBkYXRlZCBv biBzdWJzY3JpYmVyJyk7CisjIEFuZCBhZGRpdGlvbmFsIGNvbHVtbiBtYWludGFpbiB1cGRhdGVk IHZhbHVlCitpcygkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ1NFTEVD VCBpIGZyb20gY29uZl90YWIgV0hFUkUgYSA9IDEnKSwgMSwgJ2NvbHVtbiByZWNvcmQgdXBkYXRl ZCBvbiBzdWJzY3JpYmVyJyk7CisKK29rKCEkbm9kZV9zdWJzY3JpYmVyLT5sb2dfY29udGFpbnMo CisJCXFyL0xPRzogIGNvbmZsaWN0IGRldGVjdGVkIG9uIHJlbGF0aW9uIFwicHVibGljLmNvbmZf dGFiXCI6IGNvbmZsaWN0PXVwZGF0ZV9taXNzaW5nLywKKwkJJGxvZ19vZmZzZXQpLCAnaW52YWxp ZCBjb25mbGljdCBkZXRlY3RlZCcpOworCitvaygkbm9kZV9zdWJzY3JpYmVyLT5sb2dfY29udGFp bnMoCisJCXFyL0xPRzogIGNvbmZsaWN0IGRldGVjdGVkIG9uIHJlbGF0aW9uIFwicHVibGljLmNv bmZfdGFiXCI6IGNvbmZsaWN0PXVwZGF0ZV9vcmlnaW5fZGlmZmVycy8sCisJCSRsb2dfb2Zmc2V0 KSwgJ2NvcnJlY3QgY29uZmxpY3QgZGV0ZWN0ZWQnKTsKKworZG9uZV90ZXN0aW5nKCk7CmRpZmYg LS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzhfdXBkYXRlX21pc3Npbmdfd2l0aF9y ZXRhaW4ucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzhfdXBkYXRlX21pc3Npbmdfd2l0 aF9yZXRhaW4ucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjdiMjI1 ZDQ1ZjdmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM4X3Vw ZGF0ZV9taXNzaW5nX3dpdGhfcmV0YWluLnBsCkBAIC0wLDAgKzEsMTQzIEBACisjIENvcHlyaWdo dCAoYykgMjAyNSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworIyBUZXN0 IHRoZSBjb25mbGljdCBkZXRlY3Rpb24gYW5kIHJlc29sdXRpb24gaW4gbG9naWNhbCByZXBsaWNh dGlvbgordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5ncyBGQVRBTCA9PiAnYWxsJzsKK3VzZSBQb3N0 Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwordXNl IFRlc3Q6Ok1vcmU7CisKK2lmICgkRU5We2VuYWJsZV9pbmplY3Rpb25fcG9pbnRzfSBuZSAneWVz JykKK3sKKwlwbGFuIHNraXBfYWxsID0+ICdJbmplY3Rpb24gcG9pbnRzIG5vdCBzdXBwb3J0ZWQg YnkgdGhpcyBidWlsZCc7Cit9CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyBTZXQg aXQgdG8gMCB0byBtYWtlIHNldCBzdWNjZXNzOyBUT0RPOiBkZWxldGUgdGhhdCBmb3IgY29tbWl0 CitteSAkc2ltdWxhdGVfcmFjZV9jb25kaXRpb24gPSAxOworIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgU2V0dXAKKyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyBJbml0aWFsaXplIHB1Ymxpc2hlciBu b2RlCitteSAkbm9kZV9wdWJsaXNoZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXco J3B1Ymxpc2hlcicpOworJG5vZGVfcHVibGlzaGVyLT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4g J2xvZ2ljYWwnKTsKKyRub2RlX3B1Ymxpc2hlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29u ZicsCisJcXEodHJhY2tfY29tbWl0X3RpbWVzdGFtcCA9IG9uKSk7Ciskbm9kZV9wdWJsaXNoZXIt PnN0YXJ0OworCisKKyMgQ3JlYXRlIHN1YnNjcmliZXIgbm9kZSB3aXRoIHRyYWNrX2NvbW1pdF90 aW1lc3RhbXAgZW5hYmxlZAorbXkgJG5vZGVfc3Vic2NyaWJlciA9IFBvc3RncmVTUUw6OlRlc3Q6 OkNsdXN0ZXItPm5ldygnc3Vic2NyaWJlcicpOworJG5vZGVfc3Vic2NyaWJlci0+aW5pdDsKKyRu b2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCXFxKHRyYWNr X2NvbW1pdF90aW1lc3RhbXAgPSBvbikpOworJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYo J3Bvc3RncmVzcWwuY29uZicsCisJcXEod2FsX2xldmVsID0gJ3JlcGxpY2EnKSk7Ciskbm9kZV9z dWJzY3JpYmVyLT5zdGFydDsKKworCisjIENoZWNrIGlmIHRoZSBleHRlbnNpb24gaW5qZWN0aW9u X3BvaW50cyBpcyBhdmFpbGFibGUsIGFzIGl0IG1heSBiZQorIyBwb3NzaWJsZSB0aGF0IHRoaXMg c2NyaXB0IGlzIHJ1biB3aXRoIGluc3RhbGxjaGVjaywgd2hlcmUgdGhlIG1vZHVsZQorIyB3b3Vs ZCBub3QgYmUgaW5zdGFsbGVkIGJ5IGRlZmF1bHQuCitpZiAoISRub2RlX3N1YnNjcmliZXItPmNo ZWNrX2V4dGVuc2lvbignaW5qZWN0aW9uX3BvaW50cycpKQoreworCXBsYW4gc2tpcF9hbGwgPT4g J0V4dGVuc2lvbiBpbmplY3Rpb25fcG9pbnRzIG5vdCBpbnN0YWxsZWQnOworfQorCisjIENyZWF0 ZSB0YWJsZSBvbiBwdWJsaXNoZXIKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0 Z3JlcycsCisJIkNSRUFURSBUQUJMRSBjb25mX3RhYihhIGludCBQUklNQVJZIGtleSwgZGF0YSB0 ZXh0KTsiKTsKKworIyBDcmVhdGUgc2ltaWxhciB0YWJsZSBvbiBzdWJzY3JpYmVyIHdpdGggYWRk aXRpb25hbCBpbmRleCB0byBkaXNhYmxlIEhPVCB1cGRhdGVzIGFuZCBhZGRpdGlvbmFsIGNvbHVt bgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsCisJIkNSRUFURSBU QUJMRSBjb25mX3RhYihhIGludCBQUklNQVJZIGtleSwgZGF0YSB0ZXh0LCBpIGludCBERUZBVUxU IDApOworCSBDUkVBVEUgSU5ERVggaV9pbmRleCBPTiBjb25mX3RhYihpKTsiKTsKKworIyBTZXQg dXAgZXh0ZW5zaW9uIHRvIHNpbXVsYXRlIHJhY2UgY29uZGl0aW9uCiskbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0NSRUFURSBFWFRFTlNJT04gaW5qZWN0aW9uX3BvaW50 czsnKTsKKworIyBTZXR1cCBsb2dpY2FsIHJlcGxpY2F0aW9uCitteSAkcHVibGlzaGVyX2Nvbm5z dHIgPSAkbm9kZV9wdWJsaXNoZXItPmNvbm5zdHIgLiAnIGRibmFtZT1wb3N0Z3Jlcyc7Ciskbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgUFVCTElDQVRJT04g dGFwX3B1YiBGT1IgVEFCTEUgY29uZl90YWIiKTsKKworIyBJbnNlcnQgcm93IHRvIGJlIHVwZGF0 ZWQgbGF0ZXIKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VS VCBJTlRPIGNvbmZfdGFiKGEsIGRhdGEpIFZBTFVFUyAoMSwnZnJvbXB1YicpIik7CisKKyMgQ3Jl YXRlIHRoZSBzdWJzY3JpcHRpb24KK215ICRhcHBuYW1lID0gJ3RhcF9zdWInOworJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsCisJIkNSRUFURSBTVUJTQ1JJUFRJT04g dGFwX3N1YgorCSBDT05ORUNUSU9OICckcHVibGlzaGVyX2Nvbm5zdHIgYXBwbGljYXRpb25fbmFt ZT0kYXBwbmFtZScKKwkgUFVCTElDQVRJT04gdGFwX3B1YiBXSVRIIChyZXRhaW5fZGVhZF90dXBs ZXMgPSB0cnVlKSIpOworCisjIFdhaXQgZm9yIGluaXRpYWwgdGFibGUgc3luYyB0byBmaW5pc2gK KyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX3N1YnNjcmlwdGlvbl9zeW5jKCRub2RlX3B1Ymxp c2hlciwgJGFwcG5hbWUpOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIworIyBSYWNlIGNvbmRpdGlvbiBiZWNhdXNlIG9mIERpcnR5U25hcHNob3QKKyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK215ICRwc3FsX3Nlc3Np b25fc3Vic2NyaWJlciA9ICRub2RlX3N1YnNjcmliZXItPmJhY2tncm91bmRfcHNxbCgncG9zdGdy ZXMnKTsKK2lmICgkc2ltdWxhdGVfcmFjZV9jb25kaXRpb24pCit7CisJJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2go J2luZGV4X2dldG5leHRfc2xvdF9iZWZvcmVfZmV0Y2hfYXBwbHlfZGlydHknLCAnd2FpdCcpIik7 Cit9CisKK215ICRsb2dfb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKwor IyBVcGRhdGUgdHVwbGUgb24gcHVibGlzaGVyCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCSJVUERBVEUgY29uZl90YWIgU0VUIGRhdGEgPSAnZnJvbXB1Ym5ldycgV0hF UkUgKGE9MSk7Iik7CisKKworaWYgKCRzaW11bGF0ZV9yYWNlX2NvbmRpdGlvbikKK3sKKwkjIFdh aXQgYXBwbHkgd29ya2VyIHRvIHN0YXJ0IHRoZSBzZWFyY2ggZm9yIHRoZSB0dXBsZSB1c2luZyBp bmRleAorCSRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2V2ZW50KCdsb2dpY2FsIHJlcGxpY2F0 aW9uIGFwcGx5IHdvcmtlcicsICdpbmRleF9nZXRuZXh0X3Nsb3RfYmVmb3JlX2ZldGNoX2FwcGx5 X2RpcnR5Jyk7Cit9CisKKyMgVXBkYXRlIGFkZGl0aW9uYWwoISkgY29sdW1uIG9uIHRoZSBzdWJz Y3JpYmVyCiskcHNxbF9zZXNzaW9uX3N1YnNjcmliZXItPnF1ZXJ5X3VudGlsKAorCXFyL3N0YXJ0 LywgcXFbCisJXFxlY2hvIHN0YXJ0CisJVVBEQVRFIGNvbmZfdGFiIFNFVCBpID0gMSBXSEVSRSAo YT0xKTsKK10pOworCisKK2lmICgkc2ltdWxhdGVfcmFjZV9jb25kaXRpb24pCit7CisJIyBXYWtl IHVwIGFwcGx5IHdvcmtlcgorCSRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LCIKKwkJU0VMRUNUIGluamVjdGlvbl9wb2ludHNfZGV0YWNoKCdpbmRleF9nZXRuZXh0X3Nsb3Rf YmVmb3JlX2ZldGNoX2FwcGx5X2RpcnR5Jyk7CisJCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3dh a2V1cCgnaW5kZXhfZ2V0bmV4dF9zbG90X2JlZm9yZV9mZXRjaF9hcHBseV9kaXJ0eScpOworCQki KTsKK30KKworIyBUdXBsZSB3YXMgdXBkYXRlZCAtIHNvLCB3ZSBoYXZlIGNvbmZsaWN0Ciskbm9k ZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJcXIvY29uZmxpY3QgZGV0ZWN0ZWQgb24gcmVs YXRpb24gXCJwdWJsaWMuY29uZl90YWJcIi8sCisJJGxvZ19vZmZzZXQpOworCiskbm9kZV9wdWJs aXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisjIFdlIG5lZWQgbmV3IGNvbHVt biB2YWx1ZSBiZSBzeW5jZWQgd2l0aCBzdWJzY3JpYmVyCitpcygkbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgJ1NFTEVDVCBkYXRhIGZyb20gY29uZl90YWIgV0hFUkUgYSA9 IDEnKSwgJ2Zyb21wdWJuZXcnLCAncmVjb3JkIHVwZGF0ZWQgb24gc3Vic2NyaWJlcicpOworIyBB bmQgYWRkaXRpb25hbCBjb2x1bW4gbWFpbnRhaW4gdXBkYXRlZCB2YWx1ZQoraXMoJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdTRUxFQ1QgaSBmcm9tIGNvbmZfdGFiIFdI RVJFIGEgPSAxJyksIDEsICdjb2x1bW4gcmVjb3JkIHVwZGF0ZWQgb24gc3Vic2NyaWJlcicpOwor CitvayghJG5vZGVfc3Vic2NyaWJlci0+bG9nX2NvbnRhaW5zKAorCQlxci9MT0c6ICBjb25mbGlj dCBkZXRlY3RlZCBvbiByZWxhdGlvbiBcInB1YmxpYy5jb25mX3RhYlwiOiBjb25mbGljdD11cGRh dGVfZGVsZXRlZC8sCisJCSRsb2dfb2Zmc2V0KSwgJ2ludmFsaWQgY29uZmxpY3QgZGV0ZWN0ZWQn KTsKKworb2soJG5vZGVfc3Vic2NyaWJlci0+bG9nX2NvbnRhaW5zKAorCQlxci9MT0c6ICBjb25m bGljdCBkZXRlY3RlZCBvbiByZWxhdGlvbiBcInB1YmxpYy5jb25mX3RhYlwiOiBjb25mbGljdD11 cGRhdGVfb3JpZ2luX2RpZmZlcnMvLAorCQkkbG9nX29mZnNldCksICdjb3JyZWN0IGNvbmZsaWN0 IGRldGVjdGVkJyk7CisKK2RvbmVfdGVzdGluZygpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vi c2NyaXB0aW9uL3QvMDM5X3VwZGF0ZV9taXNzaW5nX3NpbXVsYXRpb24ucGwgYi9zcmMvdGVzdC9z dWJzY3JpcHRpb24vdC8wMzlfdXBkYXRlX21pc3Npbmdfc2ltdWxhdGlvbi5wbApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMjFmY2QxY2ViNTMKLS0tIC9kZXYvbnVsbAor KysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzlfdXBkYXRlX21pc3Npbmdfc2ltdWxhdGlv bi5wbApAQCAtMCwwICsxLDEyNSBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMjUsIFBvc3RncmVTUUwg R2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKKyMgVGVzdCB0aGUgY29uZmxpY3QgZGV0ZWN0aW9u IGFuZCByZXNvbHV0aW9uIGluIGxvZ2ljYWwgcmVwbGljYXRpb24KKyMgTm90IGludGVuZGVkIHRv IGJlIGNvbW1pdHRlZCBiZWNhdXNlIHF1aXRlIGhlYXZ5CisjIEhlcmUgdG8gZGVtb25zdHJhdGUg cmVwcm9kdWNpYmlsaXR5IHdpdGggcGdiZW5jaAordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5ncyBG QVRBTCA9PiAnYWxsJzsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3Rn cmVTUUw6OlRlc3Q6OlV0aWxzOwordXNlIElQQzo6UnVuIHF3KHN0YXJ0IGZpbmlzaCk7Cit1c2Ug VGVzdDo6TW9yZTsKKworaWYgKCRFTlZ7ZW5hYmxlX2luamVjdGlvbl9wb2ludHN9IG5lICd5ZXMn KQoreworCXBsYW4gc2tpcF9hbGwgPT4gJ0luamVjdGlvbiBwb2ludHMgbm90IHN1cHBvcnRlZCBi eSB0aGlzIGJ1aWxkJzsKK30KKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBT ZXR1cAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisjIEluaXRpYWxpemUgcHVi bGlzaGVyIG5vZGUKK215ICRub2RlX3B1Ymxpc2hlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0 ZXItPm5ldygncHVibGlzaGVyJyk7Ciskbm9kZV9wdWJsaXNoZXItPmluaXQoYWxsb3dzX3N0cmVh bWluZyA9PiAnbG9naWNhbCcpOworJG5vZGVfcHVibGlzaGVyLT5hcHBlbmRfY29uZigncG9zdGdy ZXNxbC5jb25mJywKKwlxcSh0cmFja19jb21taXRfdGltZXN0YW1wID0gb24pKTsKKyRub2RlX3B1 Ymxpc2hlci0+c3RhcnQ7CisKKyMgQ3JlYXRlIHN1YnNjcmliZXIgbm9kZSB3aXRoIHRyYWNrX2Nv bW1pdF90aW1lc3RhbXAgZW5hYmxlZAorbXkgJG5vZGVfc3Vic2NyaWJlciA9IFBvc3RncmVTUUw6 OlRlc3Q6OkNsdXN0ZXItPm5ldygnc3Vic2NyaWJlcicpOworJG5vZGVfc3Vic2NyaWJlci0+aW5p dDsKKyRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCXFx KHRyYWNrX2NvbW1pdF90aW1lc3RhbXAgPSBvbikpOworJG5vZGVfc3Vic2NyaWJlci0+c3RhcnQ7 CisKKyMgQ2hlY2sgaWYgdGhlIGV4dGVuc2lvbiBpbmplY3Rpb25fcG9pbnRzIGlzIGF2YWlsYWJs ZSwgYXMgaXQgbWF5IGJlCisjIHBvc3NpYmxlIHRoYXQgdGhpcyBzY3JpcHQgaXMgcnVuIHdpdGgg aW5zdGFsbGNoZWNrLCB3aGVyZSB0aGUgbW9kdWxlCisjIHdvdWxkIG5vdCBiZSBpbnN0YWxsZWQg YnkgZGVmYXVsdC4KK2lmICghJG5vZGVfc3Vic2NyaWJlci0+Y2hlY2tfZXh0ZW5zaW9uKCdpbmpl Y3Rpb25fcG9pbnRzJykpCit7CisJcGxhbiBza2lwX2FsbCA9PiAnRXh0ZW5zaW9uIGluamVjdGlv bl9wb2ludHMgbm90IGluc3RhbGxlZCc7Cit9CisKKyMgQ3JlYXRlIHRhYmxlIG9uIHB1Ymxpc2hl cgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFRB QkxFIHRibChhIGludCBQUklNQVJZIGtleSwgZGF0YV9wdWIgaW50KTsiKTsKKworIyBDcmVhdGUg c2ltaWxhciB0YWJsZSBvbiBzdWJzY3JpYmVyIHdpdGggYWRkaXRpb25hbCBpbmRleCB0byBkaXNh YmxlIEhPVCB1cGRhdGVzCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVz JywKKwkiQ1JFQVRFIFRBQkxFIHRibChhIGludCBQUklNQVJZIGtleSwgZGF0YV9wdWIgaW50LCBk YXRhX3N1YiBpbnQgZGVmYXVsdCAwKTsKKwkgQ1JFQVRFIElOREVYIGRhdGFfaW5kZXggT04gdGJs KGRhdGFfcHViKTsiKTsKKworIyBTZXR1cCBsb2dpY2FsIHJlcGxpY2F0aW9uCitteSAkcHVibGlz aGVyX2Nvbm5zdHIgPSAkbm9kZV9wdWJsaXNoZXItPmNvbm5zdHIgLiAnIGRibmFtZT1wb3N0Z3Jl cyc7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgUFVC TElDQVRJT04gdGFwX3B1YiBGT1IgVEFCTEUgdGJsIik7CisKKyMgQ3JlYXRlIHRoZSBzdWJzY3Jp cHRpb24KK215ICRhcHBuYW1lID0gJ3RhcF9zdWInOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKAorCSdwb3N0Z3JlcycsCisJIkNSRUFURSBTVUJTQ1JJUFRJT04gdGFwX3N1YgorCSBDT05O RUNUSU9OICckcHVibGlzaGVyX2Nvbm5zdHIgYXBwbGljYXRpb25fbmFtZT0kYXBwbmFtZScKKwkg UFVCTElDQVRJT04gdGFwX3B1YiIpOworCitteSAkbnVtX3Jvd3MgPSAxMDsKK215ICRudW1fdXBk YXRlcyA9IDEwMDAwOworbXkgJG51bV9jbGllbnRzID0gMTA7Ciskbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCAiSU5TRVJUIElOVE8gdGJsIFNFTEVDVCBpLCBpICogaSBGUk9N IGdlbmVyYXRlX3NlcmllcygxLCRudW1fcm93cykgaSIpOworCisjIFdhaXQgZm9yIGluaXRpYWwg dGFibGUgc3luYyB0byBmaW5pc2gKKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX3N1YnNjcmlw dGlvbl9zeW5jKCRub2RlX3B1Ymxpc2hlciwgJGFwcG5hbWUpOworCisjIFByZXBhcmUgc21hbGwg cGdiZW5jaCBzY3JpcHRzIGFzIGZpbGVzCitteSAkc3ViX3NxbCA9ICRub2RlX3N1YnNjcmliZXIt PmJhc2VkaXIgLiAnL3N1Yl91cGRhdGUuc3FsJzsKK215ICRwdWJfc3FsID0gJG5vZGVfcHVibGlz aGVyLT5iYXNlZGlyIC4gJy9wdWJfZGVsZXRlLnNxbCc7CisKK29wZW4gbXkgJGZoMSwgJz4nLCAk c3ViX3NxbCBvciBkaWUgJCE7CitwcmludCAkZmgxICJcXHNldCBudW0gcmFuZG9tKDEsJG51bV9y b3dzKVxuVVBEQVRFIHRibCBTRVQgZGF0YV9zdWIgPSBkYXRhX3N1YiArIDEgV0hFUkUgYSA9IDpu dW07XG4iOworY2xvc2UgJGZoMTsKKworb3BlbiBteSAkZmgyLCAnPicsICRwdWJfc3FsIG9yIGRp ZSAkITsKK3ByaW50ICRmaDIgIlxcc2V0IG51bSByYW5kb20oMSwkbnVtX3Jvd3MpXG5VUERBVEUg dGJsIFNFVCBkYXRhX3B1YiA9IGRhdGFfcHViICsgMSBXSEVSRSBhID0gOm51bTtcbiI7CitjbG9z ZSAkZmgyOworCitteSBAc3ViX2NtZCA9ICgKKwkncGdiZW5jaCcsCisJJy0tbm8tdmFjdXVtJywg Ii0tY2xpZW50PSRudW1fY2xpZW50cyIsICctLWpvYnM9NCcsICctLWV4aXQtb24tYWJvcnQnLCAi LS10cmFuc2FjdGlvbnM9JG51bV91cGRhdGVzIiwKKwknLXAnLCAkbm9kZV9zdWJzY3JpYmVyLT5w b3J0LCAnLWgnLCAkbm9kZV9zdWJzY3JpYmVyLT5ob3N0LCAnLWYnLCAkc3ViX3NxbCwgJ3Bvc3Rn cmVzJworKTsKKworbXkgQHB1Yl9jbWQgPSAoCisJJ3BnYmVuY2gnLAorCSctLW5vLXZhY3V1bScs ICItLWNsaWVudD0kbnVtX2NsaWVudHMiLCAnLS1qb2JzPTQnLCAnLS1leGl0LW9uLWFib3J0Jywg Ii0tdHJhbnNhY3Rpb25zPSRudW1fdXBkYXRlcyIsCisJJy1wJywgJG5vZGVfcHVibGlzaGVyLT5w b3J0LCAnLWgnLCAkbm9kZV9wdWJsaXNoZXItPmhvc3QsICctZicsICRwdWJfc3FsLCAncG9zdGdy ZXMnCispOworCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0NSRUFU RSBFWFRFTlNJT04gaW5qZWN0aW9uX3BvaW50czsnKTsKKyMgVGhpcyBzaG91bGQgbmV2ZXIgaGFw cGVuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBp bmplY3Rpb25fcG9pbnRzX2F0dGFjaCgnYXBwbHlfaGFuZGxlX3VwZGF0ZV9pbnRlcm5hbF91cGRh dGVfbWlzc2luZycsICdlcnJvcicpIik7CitteSAkbG9nX29mZnNldCA9IC1zICRub2RlX3N1YnNj cmliZXItPmxvZ2ZpbGU7CisKKyMgU3RhcnQgYm90aCBjb25jdXJyZW50bHkKK215ICgkc3ViX291 dCwgJHN1Yl9lcnIsICRwdWJfb3V0LCAkcHViX2VycikgPSAoJycsICcnLCAnJywgJycpOworbXkg JHN1Yl9oID0gc3RhcnQgXEBzdWJfY21kLCAnPicsIFwkc3ViX291dCwgJzI+JywgXCRzdWJfZXJy OworbXkgJHB1Yl9oID0gc3RhcnQgXEBwdWJfY21kLCAnPicsIFwkcHViX291dCwgJzI+JywgXCRw dWJfZXJyOworCisjIFdhaXQgZm9yIGNvbXBsZXRpb24KK2ZpbmlzaCAkc3ViX2g7CitmaW5pc2gg JHB1Yl9oOworCitsaWtlKCRzdWJfb3V0LCBxci9hY3R1YWxseSBwcm9jZXNzZWQvLCAnc3Vic2Ny aWJlciBwZ2JlbmNoIGNvbXBsZXRlZCcpOworbGlrZSgkcHViX291dCwgcXIvYWN0dWFsbHkgcHJv Y2Vzc2VkLywgJ3B1Ymxpc2hlciBwZ2JlbmNoIGNvbXBsZXRlZCcpOworCisjIExldCBzdWJzY3Jp cHRpb24gY2F0Y2ggdXAsIHRoZW4gY2hlY2sgZXhwZWN0YXRpb25zCiskbm9kZV9zdWJzY3JpYmVy LT53YWl0X2Zvcl9zdWJzY3JpcHRpb25fc3luYygkbm9kZV9wdWJsaXNoZXIsICd0YXBfc3ViJyk7 CisKK29rKCEkbm9kZV9zdWJzY3JpYmVyLT5sb2dfY29udGFpbnMoCisJCXFyL0VSUk9SOiAgZXJy b3IgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgYXBwbHlfaGFuZGxlX3VwZGF0ZV9pbnRl cm5hbF91cGRhdGVfbWlzc2luZy8sCisJCSRsb2dfb2Zmc2V0KSwgJ2ludmFsaWQgY29uZmxpY3Qg ZGV0ZWN0ZWQnKTsKKworZG9uZV90ZXN0aW5nKCk7Ci0tIAoyLjQ4LjEKCg== --000000000000aa181206423be005--