From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from esa3.mentor.iphmx.com (esa3.mentor.iphmx.com [68.232.137.180]) by sourceware.org (Postfix) with ESMTPS id E803B3857C44; Sat, 26 Mar 2022 02:03:44 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org E803B3857C44 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=codesourcery.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=mentor.com X-IronPort-AV: E=Sophos;i="5.90,211,1643702400"; d="scan'208";a="73462562" Received: from orw-gwy-01-in.mentorg.com ([192.94.38.165]) by esa3.mentor.iphmx.com with ESMTP; 25 Mar 2022 18:03:45 -0800 IronPort-SDR: lH8XaXHUjaj2VGVbHP2L+ABRZFDZ1u16xgmknHggM6JXoaSA+cItajLTc1Mc/SNsuvM9UwAqIa 951/y0ANi+x330ttj+sgbkeH7aU3BliEpCHF1v2prGWLyavb5gldlz982saE7Fwgv84tX88NjW dlDMMnEPtW+aBk3jh0qyUF2SXUevDZSZ19YXGRcVT4nefmai3jrs6//xa7qWxNrzz3mxnCIfXw 9Ouc+1shxNvbabn6jc59ZKeeIyhHgGB4kCweFCP1OGk7f4aMHqY0lIoFESlgnMEiPGSiz2xqlQ r+o= Content-Type: multipart/mixed; boundary="------------mEOlrcZIASKaXw0MfNyDxKaL" Message-ID: <09c4c519-3121-015c-0f22-894135506e21@codesourcery.com> Date: Fri, 25 Mar 2022 20:03:38 -0600 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.5.0 Content-Language: en-US To: "fortran@gcc.gnu.org" CC: "gcc-patches@gcc.gnu.org" From: Sandra Loosemore Subject: [PATCH, stage 1] Fortran: Add support for OMP non-rectangular loops X-ClientProxiedBy: svr-orw-mbx-02.mgc.mentorg.com (147.34.90.202) To svr-orw-mbx-03.mgc.mentorg.com (147.34.90.203) X-Spam-Status: No, score=-10.0 required=5.0 tests=BAYES_00, GIT_PATCH_0, HEADER_FROM_DIFFERENT_DOMAINS, KAM_DMARC_STATUS, SPF_HELO_PASS, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: fortran@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Fortran mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 26 Mar 2022 02:03:48 -0000 --------------mEOlrcZIASKaXw0MfNyDxKaL Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 7bit This patch adds Fortran support for OMP 5.1 "canonical loop nest form" and non-rectangular loops. The C/C++ and middle-end support is already present except for some missing constraint checks in the gimplifier, which I've added here. There's still a TODO with respect to the not-yet-implemented TILE construct. Is this OK for stage 1 when the time comes? -Sandra --------------mEOlrcZIASKaXw0MfNyDxKaL Content-Type: text/x-patch; charset="UTF-8"; name="nonrectangular.patch" Content-Disposition: attachment; filename="nonrectangular.patch" Content-Transfer-Encoding: base64 Y29tbWl0IGM0NmE3OWE5ODQxYjkwZmIwY2RlNTY0ZTQxNDc5MzIyOTBkOTE4MzIKQXV0aG9y OiBTYW5kcmEgTG9vc2Vtb3JlIDxzYW5kcmFAY29kZXNvdXJjZXJ5LmNvbT4KRGF0ZTogICBG cmkgTWFyIDI1IDE0OjE0OjM3IDIwMjIgLTA3MDAKCiAgICBGb3J0cmFuOiBBZGQgc3VwcG9y dCBmb3IgT01QIG5vbi1yZWN0YW5ndWxhciBsb29wcy4KICAgIAogICAgVGhpcyBwYXRjaCBh ZGRzIHN1cHBvcnQgZm9yIE9NUCA1LjEgImNhbm9uaWNhbCBsb29wIG5lc3QgZm9ybSIgdG8g dGhlCiAgICBGb3J0cmFuIGZyb250IGVuZCwgbWFya3Mgbm9uLXJlY3Rhbmd1bGFyIGxvb3Bz IGZvciBwcm9jZXNzaW5nCiAgICBieSB0aGUgbWlkZGxlIGVuZCwgYW5kIGltcGxlbWVudHMg bWlzc2luZyBjaGVja3MgaW4gdGhlIGdpbXBsaWZpZXIKICAgIGZvciBhZGRpdGlvbmFsIHBy b2hpYml0aW9ucyBvbiBub24tcmVjdGFuZ3VsYXIgbG9vcHMuCiAgICAKICAgIE5vdGUgdGhh dCB0aGUgT01QIHNwZWMgYWxzbyBwcm9oaWJpdHMgbm9uLXJlY3Rhbmd1bGFyIGxvb3BzIHdp dGggdGhlIFRJTEUKICAgIGNvbnN0cnVjdDsgdGhhdCBjb25zdHJ1Y3QgaGFzbid0IGJlZW4g aW1wbGVtZW50ZWQgeWV0LCBzbyB0aGF0IGVycm9yIHdpbGwKICAgIG5lZWQgdG8gYmUgZmls bGVkIGluIGxhdGVyLgogICAgCiAgICAJZ2NjL2ZvcnRyYW4vCiAgICAJKiBnZm9ydHJhbi5o IChzdHJ1Y3QgZ2ZjX29tcF9jbGF1c2VzKTogQWRkIG5vbl9yZWN0YW5ndWxhciBiaXQuCiAg ICAJKiBvcGVubXAuY2MgKGlzX291dGVyX2l0ZXJhdGlvbl92YXJpYWJsZSk6IE5ldyBmdW5j dGlvbi4KICAgIAkoZXhwcl9pc19pbnZhcmlhbnQpOiBOZXcgZnVuY3Rpb24uCiAgICAJKGJv dW5kX2V4cHJfaXNfY2Fub25pY2FsKTogTmV3IGZ1bmN0aW9uLgogICAgCShyZXNvbHZlX29t cF9kbyk6IFJlcGxhY2UgZXhpc3Rpbmcgbm9uLXJlY3Rhbmd1bGFyaXR5IGVycm9yIHdpdGgK ICAgIAljaGVjayBmb3IgY2Fub25pY2FsIGZvcm0gYW5kIHNldHRpbmcgbm9uX3JlY3Rhbmd1 bGFyIGJpdC4KICAgIAkqIHRyYW5zLW9wZW5tcC5jYyAoZ2ZjX3RyYW5zX29tcF9kbyk6IFRy YW5zZmVyIG5vbl9yZWN0YW5ndWxhcgogICAgCWZsYWcgdG8gZ2VuZXJhdGVkIHRyZWUgc3Ry dWN0dXJlLgogICAgCiAgICAJZ2NjLwogICAgCSogZ2ltcGxpZnkuY2MgKGdpbXBsaWZ5X29t cF9mb3IpOiBVcGRhdGUgbWVzc2FnZXMgZm9yIFNDSEVEVUxFRAogICAgCWFuZCBPUkRFUkVE IGNsYXVzZSBjb25mbGljdCBlcnJvcnMuICBBZGQgY2hlY2sgZm9yIEdSQUlOU0laRSBhbmQK ICAgIAlOVU1fVEFTS1Mgb24gVEFTS0xPT1AuCiAgICAKICAgIAlnY2MvdGVzdHN1aXRlLwog ICAgCSogYy1jKystY29tbW9uL2dvbXAvbG9vcC02LmMgKGYzKTogTmV3IGZ1bmN0aW9uIHRv IHRlc3QgVEFTS0xPT1AKICAgIAlkaWFnbm9zdGljcy4KICAgIAkqIGdmb3J0cmFuLmRnL2dv bXAvY29sbGFwc2UxLmY5MDogVXBkYXRlIGV4cGVjdGVkIG1lc3NhZ2VzLgogICAgCSogZ2Zv cnRyYW4uZGcvZ29tcC9wcjg1MzEzLmY5MDogUmVtb3ZlIGRnLWVycm9yIG9uIG5vbi1yZWN0 YW5ndWxhcgogICAgCWxvb3BzIHRoYXQgYXJlIG5vdyBhY2NlcHRlZC4KICAgIAkqIGdmb3J0 cmFuLmRnL2dvbXAvbm9uLXJlY3Rhbmd1bGFyLWxvb3AuZjkwOiBOZXcgZmlsZS4KICAgIAkq IGdmb3J0cmFuLmRnL2dvbXAvY2Fub25pY2FsLWxvb3AtMS5mOTA6IE5ldyBmaWxlLgogICAg CSogZ2ZvcnRyYW4uZGcvZ29tcC9jYW5vbmljYWwtbG9vcC0yLmY5MDogTmV3IGZpbGUuCgpk aWZmIC0tZ2l0IGEvZ2NjL2ZvcnRyYW4vZ2ZvcnRyYW4uaCBiL2djYy9mb3J0cmFuL2dmb3J0 cmFuLmgKaW5kZXggN2JmMWQ1YS4uMWJjZTI4MyAxMDA2NDQKLS0tIGEvZ2NjL2ZvcnRyYW4v Z2ZvcnRyYW4uaAorKysgYi9nY2MvZm9ydHJhbi9nZm9ydHJhbi5oCkBAIC0xNTMzLDYgKzE1 MzMsNyBAQCB0eXBlZGVmIHN0cnVjdCBnZmNfb21wX2NsYXVzZXMKICAgdW5zaWduZWQgc2lt ZDoxLCB0aHJlYWRzOjEsIGRlcGVuZF9zb3VyY2U6MSwgZGVzdHJveToxLCBvcmRlcl9jb25j dXJyZW50OjE7CiAgIHVuc2lnbmVkIG9yZGVyX3VuY29uc3RyYWluZWQ6MSwgb3JkZXJfcmVw cm9kdWNpYmxlOjEsIGNhcHR1cmU6MTsKICAgdW5zaWduZWQgZ3JhaW5zaXplX3N0cmljdDox LCBudW1fdGFza3Nfc3RyaWN0OjEsIGNvbXBhcmU6MSwgd2VhazoxOworICB1bnNpZ25lZCBu b25fcmVjdGFuZ3VsYXI6MTsKICAgRU5VTV9CSVRGSUVMRCAoZ2ZjX29tcF9zY2hlZF9raW5k KSBzY2hlZF9raW5kOjM7CiAgIEVOVU1fQklURklFTEQgKGdmY19vbXBfZGV2aWNlX3R5cGUp IGRldmljZV90eXBlOjI7CiAgIEVOVU1fQklURklFTEQgKGdmY19vbXBfbWVtb3JkZXIpIG1l bW9yZGVyOjM7CmRpZmYgLS1naXQgYS9nY2MvZm9ydHJhbi9vcGVubXAuY2MgYi9nY2MvZm9y dHJhbi9vcGVubXAuY2MKaW5kZXggNzE0MTQ4MS4uNGQzZmNjOCAxMDA2NDQKLS0tIGEvZ2Nj L2ZvcnRyYW4vb3Blbm1wLmNjCisrKyBiL2djYy9mb3J0cmFuL29wZW5tcC5jYwpAQCAtODQ0 Niw2ICs4NDQ2LDEwNSBAQCBnZmNfcmVzb2x2ZV9vbXBfbG9jYWxfdmFycyAoZ2ZjX25hbWVz cGFjZSAqbnMpCiAgICAgZ2ZjX3RyYXZlcnNlX25zIChucywgaGFuZGxlX2xvY2FsX3Zhcik7 CiB9CiAKKy8qIENPREUgaXMgYW4gT01QIGxvb3AgY29uc3RydWN0LiAgUmV0dXJuIHRydWUg aWYgVkFSIG1hdGNoZXMgYW4gaXRlcmF0aW9uCisgICB2YXJpYWJsZSBvdXRlciB0byBsZXZl bCBERVBUSC4gICovCitzdGF0aWMgYm9vbAoraXNfb3V0ZXJfaXRlcmF0aW9uX3ZhcmlhYmxl IChnZmNfY29kZSAqY29kZSwgaW50IGRlcHRoLCBnZmNfc3ltYm9sICp2YXIpCit7CisgIGlu dCBpOworICBnZmNfY29kZSAqZG9fY29kZSA9IGNvZGUtPmJsb2NrLT5uZXh0OworCisgIGZv ciAoaSA9IDE7IGkgPCBkZXB0aDsgaSsrKQorICAgIHsKKyAgICAgIGdmY19zeW1ib2wgKml2 YXIgPSBkb19jb2RlLT5leHQuaXRlcmF0b3ItPnZhci0+c3ltdHJlZS0+bi5zeW07CisgICAg ICBpZiAodmFyID09IGl2YXIpCisJcmV0dXJuIHRydWU7CisgICAgICBkb19jb2RlID0gZG9f Y29kZS0+YmxvY2stPm5leHQ7CisgICAgfQorICByZXR1cm4gZmFsc2U7Cit9CisKKy8qIENP REUgaXMgYW4gT01QIGxvb3AgY29uc3RydWN0LiAgUmV0dXJuIHRydWUgaWYgRVhQUiBkb2Vz IG5vdCByZWZlcmVuY2UKKyAgIGFueSBpdGVyYXRpb24gdmFyaWFibGVzIG91dGVyIHRvIGxl dmVsIERFUFRILiAgKi8KK3N0YXRpYyBib29sCitleHByX2lzX2ludmFyaWFudCAoZ2ZjX2Nv ZGUgKmNvZGUsIGludCBkZXB0aCwgZ2ZjX2V4cHIgKmV4cHIpCit7CisgIGludCBpOworICBn ZmNfY29kZSAqZG9fY29kZSA9IGNvZGUtPmJsb2NrLT5uZXh0OworCisgIGZvciAoaSA9IDE7 IGkgPCBkZXB0aDsgaSsrKQorICAgIHsKKyAgICAgIGdmY19zeW1ib2wgKml2YXIgPSBkb19j b2RlLT5leHQuaXRlcmF0b3ItPnZhci0+c3ltdHJlZS0+bi5zeW07CisgICAgICBpZiAoZ2Zj X2ZpbmRfc3ltX2luX2V4cHIgKGl2YXIsIGV4cHIpKQorCXJldHVybiBmYWxzZTsKKyAgICAg IGRvX2NvZGUgPSBkb19jb2RlLT5ibG9jay0+bmV4dDsKKyAgICB9CisgIHJldHVybiB0cnVl OworfQorCisvKiBDT0RFIGlzIGFuIE9NUCBsb29wIGNvbnN0cnVjdC4gIFJldHVybiB0cnVl IGlmIEVYUFIgbWF0Y2hlcyBvbmUgb2YgdGhlCisgICBjYW5vbmljYWwgZm9ybXMgZm9yIGEg Ym91bmQgZXhwcmVzc2lvbi4gIEl0IG1heSBpbmNsdWRlIHJlZmVyZW5jZXMgdG8KKyAgIGFu IGl0ZXJhdGlvbiB2YXJpYWJsZSBvdXRlciB0byBsZXZlbCBERVBUSDsgc2V0IE9VVEVSX1ZB UlAgaWYgc28uICAqLworc3RhdGljIGJvb2wKK2JvdW5kX2V4cHJfaXNfY2Fub25pY2FsIChn ZmNfY29kZSAqY29kZSwgaW50IGRlcHRoLCBnZmNfZXhwciAqZXhwciwKKwkJCSBnZmNfc3lt Ym9sICoqb3V0ZXJfdmFycCkKK3sKKyAgZ2ZjX2V4cHIgKmV4cHIyID0gTlVMTDsKKworICAv KiBSZWN0YW5ndWxhciBjYXNlLiAgKi8KKyAgaWYgKGRlcHRoID09IDAgfHwgZXhwcl9pc19p bnZhcmlhbnQgKGNvZGUsIGRlcHRoLCBleHByKSkKKyAgICByZXR1cm4gdHJ1ZTsKKworICAv KiBBbnkgc2ltcGxlIHZhcmlhYmxlIHRoYXQgZGlkbid0IHBhc3MgZXhwcl9pc19pbnZhcmlh bnQgbXVzdCBiZQorICAgICBhbiBvdXRlcl92YXIuICAqLworICBpZiAoZXhwci0+ZXhwcl90 eXBlID09IEVYUFJfVkFSSUFCTEUgJiYgZXhwci0+cmFuayA9PSAwKQorICAgIHsKKyAgICAg ICpvdXRlcl92YXJwID0gZXhwci0+c3ltdHJlZS0+bi5zeW07CisgICAgICByZXR1cm4gdHJ1 ZTsKKyAgICB9CisKKyAgLyogQWxsIG90aGVyIHBlcm1pdHRlZCBmb3JtcyBhcmUgYmluYXJ5 IG9wZXJhdG9ycy4gICovCisgIGlmIChleHByLT5leHByX3R5cGUgIT0gRVhQUl9PUCkKKyAg ICByZXR1cm4gZmFsc2U7CisKKyAgLyogQ2hlY2sgZm9yIHBsdXMvbWludXMgYSBsb29wIGlu dmFyaWFudCBleHByLiAgKi8KKyAgaWYgKGV4cHItPnZhbHVlLm9wLm9wID09IElOVFJJTlNJ Q19QTFVTCisgICAgICB8fCBleHByLT52YWx1ZS5vcC5vcCA9PSBJTlRSSU5TSUNfTUlOVVMp CisgICAgeworICAgICAgaWYgKGV4cHJfaXNfaW52YXJpYW50IChjb2RlLCBkZXB0aCwgZXhw ci0+dmFsdWUub3Aub3AxKSkKKwlleHByMiA9IGV4cHItPnZhbHVlLm9wLm9wMjsKKyAgICAg IGVsc2UgaWYgKGV4cHJfaXNfaW52YXJpYW50IChjb2RlLCBkZXB0aCwgZXhwci0+dmFsdWUu b3Aub3AyKSkKKwlleHByMiA9IGV4cHItPnZhbHVlLm9wLm9wMTsKKyAgICAgIGVsc2UKKwly ZXR1cm4gZmFsc2U7CisgICAgfQorICBlbHNlCisgICAgZXhwcjIgPSBleHByOworCisgIC8q IENoZWNrIGZvciBhIHByb2R1Y3Qgd2l0aCBhIGxvb3AtaW52YXJpYW50IGV4cHIuICAqLwor ICBpZiAoZXhwcjItPmV4cHJfdHlwZSA9PSBFWFBSX09QCisgICAgICAmJiBleHByMi0+dmFs dWUub3Aub3AgPT0gSU5UUklOU0lDX1RJTUVTKQorICAgIHsKKyAgICAgIGlmIChleHByX2lz X2ludmFyaWFudCAoY29kZSwgZGVwdGgsIGV4cHIyLT52YWx1ZS5vcC5vcDEpKQorCWV4cHIy ID0gZXhwcjItPnZhbHVlLm9wLm9wMjsKKyAgICAgIGVsc2UgaWYgKGV4cHJfaXNfaW52YXJp YW50IChjb2RlLCBkZXB0aCwgZXhwcjItPnZhbHVlLm9wLm9wMikpCisJZXhwcjIgPSBleHBy Mi0+dmFsdWUub3Aub3AxOworICAgICAgZWxzZQorCXJldHVybiBmYWxzZTsKKyAgICB9CisK KyAgLyogV2hhdCdzIGxlZnQgbXVzdCBiZSBhIHJlZmVyZW5jZSB0byBhbiBvdXRlciBsb29w IHZhcmlhYmxlLiAgKi8KKyAgaWYgKGV4cHIyLT5leHByX3R5cGUgPT0gRVhQUl9WQVJJQUJM RQorICAgICAgJiYgZXhwcjItPnJhbmsgPT0gMAorICAgICAgJiYgaXNfb3V0ZXJfaXRlcmF0 aW9uX3ZhcmlhYmxlIChjb2RlLCBkZXB0aCwgZXhwcjItPnN5bXRyZWUtPm4uc3ltKSkKKyAg ICB7CisgICAgICAqb3V0ZXJfdmFycCA9IGV4cHIyLT5zeW10cmVlLT5uLnN5bTsKKyAgICAg IHJldHVybiB0cnVlOworICAgIH0KKworICByZXR1cm4gZmFsc2U7Cit9CisKIHN0YXRpYyB2 b2lkCiByZXNvbHZlX29tcF9kbyAoZ2ZjX2NvZGUgKmNvZGUpCiB7CkBAIC04NTY0LDggKzg2 NjMsMTUgQEAgcmVzb2x2ZV9vbXBfZG8gKGdmY19jb2RlICpjb2RlKQogICAgICAgaWYgKGNv bGxhcHNlIDw9IDApCiAJY29sbGFwc2UgPSAxOwogICAgIH0KKworICAvKiBXaGlsZSB0aGUg c3BlYyBkZWZpbmVzIHRoZSBsb29wIG5lc3QgZGVwdGggaW5kZXBlbmRlbnRseSBvZiB0aGUg Q09MTEFQU0UKKyAgICAgY2xhdXNlLCBpbiBwcmFjdGljZSB0aGUgbWlkZGxlIGVuZCBvbmx5 IHBheXMgYXR0ZW50aW9uIHRvIHRoZSBDT0xMQVBTRQorICAgICBkZXB0aCBhbmQgdHJlYXRz IGFueSBmdXJ0aGVyIGlubmVyIGxvb3BzIGFzIHRoZSBmaW5hbC1sb29wLWJvZHkuICBTbwor ICAgICBoZXJlIHdlIGFsc28gY2hlY2sgY2Fub25pY2FsIGxvb3AgbmVzdCBmb3JtIG9ubHkg Zm9yIHRoZSBudW1iZXIgb2YKKyAgICAgb3V0ZXIgbG9vcHMgc3BlY2lmaWVkIGJ5IHRoZSBD T0xMQVBTRSBjbGF1c2UgdG9vLiAgKi8KICAgZm9yIChpID0gMTsgaSA8PSBjb2xsYXBzZTsg aSsrKQogICAgIHsKKyAgICAgIGdmY19zeW1ib2wgKnN0YXJ0X3ZhciA9IE5VTEwsICplbmRf dmFyID0gTlVMTDsKICAgICAgIGlmIChkb19jb2RlLT5vcCA9PSBFWEVDX0RPX1dISUxFKQog CXsKIAkgIGdmY19lcnJvciAoIiVzIGNhbm5vdCBiZSBhIERPIFdISUxFIG9yIERPIHdpdGhv dXQgbG9vcCBjb250cm9sICIKQEAgLTg2MDYsMjYgKzg3MTIsNDMgQEAgcmVzb2x2ZV9vbXBf ZG8gKGdmY19jb2RlICpjb2RlKQogCQkJICAgICAgICJMSU5FQVIgYXQgJUwiLCBuYW1lLCAm ZG9fY29kZS0+bG9jKTsKIAkJICBicmVhazsKIAkJfQotICAgICAgaWYgKGkgPiAxKQorICAg ICAgaWYgKGlzX291dGVyX2l0ZXJhdGlvbl92YXJpYWJsZSAoY29kZSwgaSwgZG92YXIpKQog CXsKLQkgIGdmY19jb2RlICpkb19jb2RlMiA9IGNvZGUtPmJsb2NrLT5uZXh0OwotCSAgaW50 IGo7Ci0KLQkgIGZvciAoaiA9IDE7IGogPCBpOyBqKyspCi0JICAgIHsKLQkgICAgICBnZmNf c3ltYm9sICppdmFyID0gZG9fY29kZTItPmV4dC5pdGVyYXRvci0+dmFyLT5zeW10cmVlLT5u LnN5bTsKLQkgICAgICBpZiAoZG92YXIgPT0gaXZhcgotCQkgIHx8IGdmY19maW5kX3N5bV9p bl9leHByIChpdmFyLCBkb19jb2RlLT5leHQuaXRlcmF0b3ItPnN0YXJ0KQotCQkgIHx8IGdm Y19maW5kX3N5bV9pbl9leHByIChpdmFyLCBkb19jb2RlLT5leHQuaXRlcmF0b3ItPmVuZCkK LQkJICB8fCBnZmNfZmluZF9zeW1faW5fZXhwciAoaXZhciwgZG9fY29kZS0+ZXh0Lml0ZXJh dG9yLT5zdGVwKSkKLQkJewotCQkgIGdmY19lcnJvciAoIiVzIGNvbGxhcHNlZCBsb29wcyBk b24ndCBmb3JtIHJlY3Rhbmd1bGFyICIKLQkJCSAgICAgIml0ZXJhdGlvbiBzcGFjZSBhdCAl TCIsIG5hbWUsICZkb19jb2RlLT5sb2MpOwotCQkgIGJyZWFrOwotCQl9Ci0JICAgICAgZG9f Y29kZTIgPSBkb19jb2RlMi0+YmxvY2stPm5leHQ7Ci0JICAgIH0KKwkgIGdmY19lcnJvciAo IiVzIGl0ZXJhdGlvbiB2YXJpYWJsZSB1c2VkIGluIG1vcmUgdGhhbiBvbmUgbG9vcCBhdCAl TCIsCisJCSAgICAgbmFtZSwgJmRvX2NvZGUtPmxvYyk7CisJICBicmVhazsKIAl9CisgICAg ICBlbHNlIGlmICghYm91bmRfZXhwcl9pc19jYW5vbmljYWwgKGNvZGUsIGksCisJCQkJCSBk b19jb2RlLT5leHQuaXRlcmF0b3ItPnN0YXJ0LAorCQkJCQkgJnN0YXJ0X3ZhcikpCisJewor CSAgZ2ZjX2Vycm9yICgiJXMgbG9vcCBzdGFydCBleHByZXNzaW9uIG5vdCBpbiBjYW5vbmlj YWwgZm9ybSBhdCAlTCIsCisJCSAgICAgbmFtZSwgJmRvX2NvZGUtPmxvYyk7CisJICBicmVh azsKKwl9CisgICAgICBlbHNlIGlmICghYm91bmRfZXhwcl9pc19jYW5vbmljYWwgKGNvZGUs IGksCisJCQkJCSBkb19jb2RlLT5leHQuaXRlcmF0b3ItPmVuZCwKKwkJCQkJICZlbmRfdmFy KSkKKwl7CisJICBnZmNfZXJyb3IgKCIlcyBsb29wIGVuZCBleHByZXNzaW9uIG5vdCBpbiBj YW5vbmljYWwgZm9ybSBhdCAlTCIsCisJCSAgICAgbmFtZSwgJmRvX2NvZGUtPmxvYyk7CisJ ICBicmVhazsKKwl9CisgICAgICBlbHNlIGlmIChzdGFydF92YXIgJiYgZW5kX3ZhciAmJiBz dGFydF92YXIgIT0gZW5kX3ZhcikKKwl7CisJICBnZmNfZXJyb3IgKCIlcyBsb29wIGJvdW5k cyByZWZlcmVuY2UgZGlmZmVyZW50ICIKKwkJICAgICAiaXRlcmF0aW9uIHZhcmlhYmxlcyBh dCAlTCIsIG5hbWUsICZkb19jb2RlLT5sb2MpOworCSAgYnJlYWs7CisJfQorICAgICAgZWxz ZSBpZiAoIWV4cHJfaXNfaW52YXJpYW50IChjb2RlLCBpLCBkb19jb2RlLT5leHQuaXRlcmF0 b3ItPnN0ZXApKQorCXsKKwkgIGdmY19lcnJvciAoIiVzIGxvb3AgaW5jcmVtZW50IG5vdCBp biBjYW5vbmljYWwgZm9ybSBhdCAlTCIsCisJCSAgICAgbmFtZSwgJmRvX2NvZGUtPmxvYyk7 CisJICBicmVhazsKKwl9CisgICAgICBpZiAoc3RhcnRfdmFyIHx8IGVuZF92YXIpCisJY29k ZS0+ZXh0Lm9tcF9jbGF1c2VzLT5ub25fcmVjdGFuZ3VsYXIgPSAxOworCiAgICAgICBmb3Ig KGMgPSBkb19jb2RlLT5uZXh0OyBjOyBjID0gYy0+bmV4dCkKIAlpZiAoYy0+b3AgIT0gRVhF Q19OT1AgJiYgYy0+b3AgIT0gRVhFQ19DT05USU5VRSkKIAkgIHsKZGlmZiAtLWdpdCBhL2dj Yy9mb3J0cmFuL3RyYW5zLW9wZW5tcC5jYyBiL2djYy9mb3J0cmFuL3RyYW5zLW9wZW5tcC5j YwppbmRleCBiYTNmZjcxLi5iMjU0NmIzIDEwMDY0NAotLS0gYS9nY2MvZm9ydHJhbi90cmFu cy1vcGVubXAuY2MKKysrIGIvZ2NjL2ZvcnRyYW4vdHJhbnMtb3Blbm1wLmNjCkBAIC01NDA5 LDYgKzU0MDksNyBAQCBnZmNfdHJhbnNfb21wX2RvIChnZmNfY29kZSAqY29kZSwgZ2ZjX2V4 ZWNfb3Agb3AsIHN0bXRibG9ja190ICpwYmxvY2ssCiAgIE9NUF9GT1JfSU5DUiAoc3RtdCkg PSBpbmNyOwogICBpZiAob3JpZ19kZWNscykKICAgICBPTVBfRk9SX09SSUdfREVDTFMgKHN0 bXQpID0gb3JpZ19kZWNsczsKKyAgT01QX0ZPUl9OT05fUkVDVEFOR1VMQVIgKHN0bXQpID0g Y2xhdXNlcy0+bm9uX3JlY3Rhbmd1bGFyOwogICBnZmNfYWRkX2V4cHJfdG9fYmxvY2sgKCZi bG9jaywgc3RtdCk7CiAKICAgdmVjX2ZyZWUgKGRvYWNyb3NzX3N0ZXBzKTsKZGlmZiAtLWdp dCBhL2djYy9naW1wbGlmeS5jYyBiL2djYy9naW1wbGlmeS5jYwppbmRleCBmNjJmMTUwLi41 YzhhMzlmIDEwMDY0NAotLS0gYS9nY2MvZ2ltcGxpZnkuY2MKKysrIGIvZ2NjL2dpbXBsaWZ5 LmNjCkBAIC0xMjQ2OCwxMSArMTI0NjgsMTEgQEAgZ2ltcGxpZnlfb21wX2ZvciAodHJlZSAq ZXhwcl9wLCBnaW1wbGVfc2VxICpwcmVfcCkKIAkJCSAgICAgICBPTVBfQ0xBVVNFX1NDSEVE VUxFKSkKIAkgICAgZXJyb3JfYXQgKEVYUFJfTE9DQVRJT04gKGZvcl9zdG10KSwKIAkJICAg ICAgIiVxcyBjbGF1c2UgbWF5IG5vdCBhcHBlYXIgb24gbm9uLXJlY3Rhbmd1bGFyICVxcyIs Ci0JCSAgICAgICJzY2hlZHVsZSIsICJmb3IiKTsKKwkJICAgICAgInNjaGVkdWxlIiwgKGxh bmdfR05VX0ZvcnRyYW4gKCkgPyAiZG8iIDogImZvciIpKTsKIAkgIGlmIChvbXBfZmluZF9j bGF1c2UgKE9NUF9GT1JfQ0xBVVNFUyAoZm9yX3N0bXQpLCBPTVBfQ0xBVVNFX09SREVSRUQp KQogCSAgICBlcnJvcl9hdCAoRVhQUl9MT0NBVElPTiAoZm9yX3N0bXQpLAogCQkgICAgICAi JXFzIGNsYXVzZSBtYXkgbm90IGFwcGVhciBvbiBub24tcmVjdGFuZ3VsYXIgJXFzIiwKLQkJ ICAgICAgIm9yZGVyZWQiLCAiZm9yIik7CisJCSAgICAgICJvcmRlcmVkIiwgKGxhbmdfR05V X0ZvcnRyYW4gKCkgPyAiZG8iIDogImZvciIpKTsKIAl9CiAgICAgICBicmVhazsKICAgICBj YXNlIE9NUF9ESVNUUklCVVRFOgpAQCAtMTI0ODcsNiArMTI0ODcsMTkgQEAgZ2ltcGxpZnlf b21wX2ZvciAodHJlZSAqZXhwcl9wLCBnaW1wbGVfc2VxICpwcmVfcCkKICAgICAgIG9ydCA9 IE9SVF9BQ0M7CiAgICAgICBicmVhazsKICAgICBjYXNlIE9NUF9UQVNLTE9PUDoKKyAgICAg IGlmIChPTVBfRk9SX05PTl9SRUNUQU5HVUxBUiAoaW5uZXJfZm9yX3N0bXQgPyBpbm5lcl9m b3Jfc3RtdCA6IGZvcl9zdG10KSkKKwl7CisJICBpZiAob21wX2ZpbmRfY2xhdXNlIChPTVBf Rk9SX0NMQVVTRVMgKGZvcl9zdG10KSwKKwkJCSAgICAgICBPTVBfQ0xBVVNFX0dSQUlOU0la RSkpCisJICAgIGVycm9yX2F0IChFWFBSX0xPQ0FUSU9OIChmb3Jfc3RtdCksCisJCSAgICAg ICIlcXMgY2xhdXNlIG1heSBub3QgYXBwZWFyIG9uIG5vbi1yZWN0YW5ndWxhciAlcXMiLAor CQkgICAgICAiZ3JhaW5zaXplIiwgInRhc2tsb29wIik7CisJICBpZiAob21wX2ZpbmRfY2xh dXNlIChPTVBfRk9SX0NMQVVTRVMgKGZvcl9zdG10KSwKKwkJCSAgICAgICBPTVBfQ0xBVVNF X05VTV9UQVNLUykpCisJICAgIGVycm9yX2F0IChFWFBSX0xPQ0FUSU9OIChmb3Jfc3RtdCks CisJCSAgICAgICIlcXMgY2xhdXNlIG1heSBub3QgYXBwZWFyIG9uIG5vbi1yZWN0YW5ndWxh ciAlcXMiLAorCQkgICAgICAibnVtX3Rhc2tzIiwgInRhc2tsb29wIik7CisJfQogICAgICAg aWYgKG9tcF9maW5kX2NsYXVzZSAoT01QX0ZPUl9DTEFVU0VTIChmb3Jfc3RtdCksIE9NUF9D TEFVU0VfVU5USUVEKSkKIAlvcnQgPSBPUlRfVU5USUVEX1RBU0tMT09QOwogICAgICAgZWxz ZQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vZ29tcC9sb29wLTYu YyBiL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2dvbXAvbG9vcC02LmMKaW5kZXggMGQ0 NDc0ZC4uMjQzODNmZiAxMDA2NDQKLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24v Z29tcC9sb29wLTYuYworKysgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9nb21wL2xv b3AtNi5jCkBAIC0xMTEsMyArMTExLDE3IEBAIGYyICh2b2lkKQogICAgIGZvciAoaiA9IGk7 IGogPCA2NDsgaisrKQogICAgICAgOwogfQorCit2b2lkCitmMyAodm9pZCkKK3sKKyAgaW50 IGkgPSAwLCBqID0gMDsKKyAgI3ByYWdtYSBvbXAgdGFza2xvb3AgY29sbGFwc2UoMikgZ3Jh aW5zaXplKDQpCS8qIHsgZGctZXJyb3IgIidncmFpbnNpemUnIGNsYXVzZSBtYXkgbm90IGFw cGVhciBvbiBub24tcmVjdGFuZ3VsYXIgJ3Rhc2tsb29wJyIgfSAqLworICBmb3IgKGkgPSAw OyBpIDwgNjQ7IGkrKykKKyAgICBmb3IgKGogPSBpOyBqIDwgNjQ7IGorKykKKyAgICAgIDsK KyAgI3ByYWdtYSBvbXAgdGFza2xvb3AgY29sbGFwc2UoMikgbnVtX3Rhc2tzKDQpCS8qIHsg ZGctZXJyb3IgIidudW1fdGFza3MnIGNsYXVzZSBtYXkgbm90IGFwcGVhciBvbiBub24tcmVj dGFuZ3VsYXIgJ3Rhc2tsb29wJyIgfSAqLworICBmb3IgKGkgPSAwOyBpIDwgNjQ7IGkrKykK KyAgICBmb3IgKGogPSBpOyBqIDwgNjQ7IGorKykKKyAgICAgIDsKK30KZGlmZiAtLWdpdCBh L2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9jYW5vbmljYWwtbG9vcC0xLmY5MCBi L2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9jYW5vbmljYWwtbG9vcC0xLmY5MApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jM2RlOGM5NgotLS0gL2Rldi9u dWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9jYW5vbmljYWwtbG9v cC0xLmY5MApAQCAtMCwwICsxLDIyNCBAQAorISB7IGRnLWRvIGNvbXBpbGUgfQorISB7IGRn LW9wdGlvbnMgIi1mb3Blbm1wIiB9CisKKyEgVGVzdCB0aGF0IGFsbCBzcGVjaWZpZWQgZm9y bXMgb2YgY2Fub25pY2FsIGxvb3AgYm91bmRzIGFyZSBhY2NlcHRlZCwKKyEgaW5jbHVkaW5n IG5vbi1yZWN0YW5ndWxhciBsb29wcy4KKworc3Vicm91dGluZSBzMSAoYTEsIGEyKQorICBp bnRlZ2VyIDo6IGExLCBhMgorICBpbnRlZ2VyIDo6IGksIGoKKworICAhJG9tcCBkbyBjb2xs YXBzZSgyKQorICBkbyBpID0gMSwgMTYKKyAgICBkbyBqID0gYTIsIDE2CisgICAgZW5kIGRv CisgIGVuZCBkbworCisgICEkb21wIGRvIGNvbGxhcHNlKDIpCisgIGRvIGkgPSAxLCAxNgor ICAgIGRvIGogPSBpLCAxNgorICAgIGVuZCBkbworICBlbmQgZG8KKworICAhJG9tcCBkbyBj b2xsYXBzZSgyKQorICBkbyBpID0gMSwgMTYKKyAgICBkbyBqID0gaSArIGEyLCAxNgorICAg IGVuZCBkbworICBlbmQgZG8KKworICAhJG9tcCBkbyBjb2xsYXBzZSgyKQorICBkbyBpID0g MSwgMTYKKyAgICBkbyBqID0gYTIgKyBpLCAxNgorICAgIGVuZCBkbworICBlbmQgZG8KKwor ICAhJG9tcCBkbyBjb2xsYXBzZSgyKQorICBkbyBpID0gMSwgMTYKKyAgICBkbyBqID0gaSAt IGEyLCAxNgorICAgIGVuZCBkbworICBlbmQgZG8KKworICAhJG9tcCBkbyBjb2xsYXBzZSgy KQorICBkbyBpID0gMSwgMTYKKyAgICBkbyBqID0gYTIgLSBpLCAxNgorICAgIGVuZCBkbwor ICBlbmQgZG8KKworICAhJG9tcCBkbyBjb2xsYXBzZSgyKQorICBkbyBpID0gMSwgMTYKKyAg ICBkbyBqID0gYTEgKiBpLCAxNgorICAgIGVuZCBkbworICBlbmQgZG8KKworICAhJG9tcCBk byBjb2xsYXBzZSgyKQorICBkbyBpID0gMSwgMTYKKyAgICBkbyBqID0gYTEgKiBpICsgYTIs IDE2CisgICAgZW5kIGRvCisgIGVuZCBkbworCisgICEkb21wIGRvIGNvbGxhcHNlKDIpCisg IGRvIGkgPSAxLCAxNgorICAgIGRvIGogPSBhMiArIGExICogaSAsIDE2CisgICAgZW5kIGRv CisgIGVuZCBkbworCisgICEkb21wIGRvIGNvbGxhcHNlKDIpCisgIGRvIGkgPSAxLCAxNgor ICAgIGRvIGogPSBhMSAqIGkgLSBhMiwgMTYKKyAgICBlbmQgZG8KKyAgZW5kIGRvCisKKyAg ISRvbXAgZG8gY29sbGFwc2UoMikKKyAgZG8gaSA9IDEsIDE2CisgICAgZG8gaiA9IGEyIC0g YTEgKiBpLCAxNgorICAgIGVuZCBkbworICBlbmQgZG8KKworICAhJG9tcCBkbyBjb2xsYXBz ZSgyKQorICBkbyBpID0gMSwgMTYKKyAgICBkbyBqID0gaSAqIGExLCAxNgorICAgIGVuZCBk bworICBlbmQgZG8KKworICAhJG9tcCBkbyBjb2xsYXBzZSgyKQorICBkbyBpID0gMSwgMTYK KyAgICBkbyBqID0gaSAqIGExICsgYTIsIDE2CisgICAgZW5kIGRvCisgIGVuZCBkbworCisg ICEkb21wIGRvIGNvbGxhcHNlKDIpCisgIGRvIGkgPSAxLCAxNgorICAgIGRvIGogPSBhMiAr IGkgKiBhMSwgMTYKKyAgICBlbmQgZG8KKyAgZW5kIGRvCisKKyAgISRvbXAgZG8gY29sbGFw c2UoMikKKyAgZG8gaSA9IDEsIDE2CisgICAgZG8gaiA9IGkgKiBhMSAtIGEyLCAxNgorICAg IGVuZCBkbworICBlbmQgZG8KKworICAhJG9tcCBkbyBjb2xsYXBzZSgyKQorICBkbyBpID0g MSwgMTYKKyAgICBkbyBqID0gYTIgLSBpICogYTEsIDE2CisgICAgZW5kIGRvCisgIGVuZCBk bworCitlbmQgc3Vicm91dGluZQorCisKK3N1YnJvdXRpbmUgczIgKGExLCBhMikKKyAgaW50 ZWdlciA6OiBhMSwgYTIKKyAgaW50ZWdlciA6OiBpLCBqCisKKyAgISRvbXAgZG8gY29sbGFw c2UoMikKKyAgZG8gaSA9IDEsIDE2CisgICAgZG8gaiA9IDEsIGEyCisgICAgZW5kIGRvCisg IGVuZCBkbworCisgICEkb21wIGRvIGNvbGxhcHNlKDIpCisgIGRvIGkgPSAxLCAxNgorICAg IGRvIGogPSAxLCBpCisgICAgZW5kIGRvCisgIGVuZCBkbworCisgICEkb21wIGRvIGNvbGxh cHNlKDIpCisgIGRvIGkgPSAxLCAxNgorICAgIGRvIGogPSAxLCBpICsgYTIKKyAgICBlbmQg ZG8KKyAgZW5kIGRvCisKKyAgISRvbXAgZG8gY29sbGFwc2UoMikKKyAgZG8gaSA9IDEsIDE2 CisgICAgZG8gaiA9IDEsIGEyICsgaQorICAgIGVuZCBkbworICBlbmQgZG8KKworICAhJG9t cCBkbyBjb2xsYXBzZSgyKQorICBkbyBpID0gMSwgMTYKKyAgICBkbyBqID0gMSwgaSAtIGEy CisgICAgZW5kIGRvCisgIGVuZCBkbworCisgICEkb21wIGRvIGNvbGxhcHNlKDIpCisgIGRv IGkgPSAxLCAxNgorICAgIGRvIGogPSAxLCBhMiAtIGkKKyAgICBlbmQgZG8KKyAgZW5kIGRv CisKKyAgISRvbXAgZG8gY29sbGFwc2UoMikKKyAgZG8gaSA9IDEsIDE2CisgICAgZG8gaiA9 IDEsIGExICogaQorICAgIGVuZCBkbworICBlbmQgZG8KKworICAhJG9tcCBkbyBjb2xsYXBz ZSgyKQorICBkbyBpID0gMSwgMTYKKyAgICBkbyBqID0gMSwgYTEgKiBpICsgYTIKKyAgICBl bmQgZG8KKyAgZW5kIGRvCisKKyAgISRvbXAgZG8gY29sbGFwc2UoMikKKyAgZG8gaSA9IDEs IDE2CisgICAgZG8gaiA9IDEsIGEyICsgYTEgKiBpIAorICAgIGVuZCBkbworICBlbmQgZG8K KworICAhJG9tcCBkbyBjb2xsYXBzZSgyKQorICBkbyBpID0gMSwgMTYKKyAgICBkbyBqID0g MSwgYTEgKiBpIC0gYTIKKyAgICBlbmQgZG8KKyAgZW5kIGRvCisKKyAgISRvbXAgZG8gY29s bGFwc2UoMikKKyAgZG8gaSA9IDEsIDE2CisgICAgZG8gaiA9IDEsIGEyIC0gYTEgKiBpCisg ICAgZW5kIGRvCisgIGVuZCBkbworCisgICEkb21wIGRvIGNvbGxhcHNlKDIpCisgIGRvIGkg PSAxLCAxNgorICAgIGRvIGogPSAxLCBpICogYTEKKyAgICBlbmQgZG8KKyAgZW5kIGRvCisK KyAgISRvbXAgZG8gY29sbGFwc2UoMikKKyAgZG8gaSA9IDEsIDE2CisgICAgZG8gaiA9IDEs IGkgKiBhMSArIGEyCisgICAgZW5kIGRvCisgIGVuZCBkbworCisgICEkb21wIGRvIGNvbGxh cHNlKDIpCisgIGRvIGkgPSAxLCAxNgorICAgIGRvIGogPSAxLCBhMiArIGkgKiBhMQorICAg IGVuZCBkbworICBlbmQgZG8KKworICAhJG9tcCBkbyBjb2xsYXBzZSgyKQorICBkbyBpID0g MSwgMTYKKyAgICBkbyBqID0gMSwgaSAqIGExIC0gYTIKKyAgICBlbmQgZG8KKyAgZW5kIGRv CisKKyAgISRvbXAgZG8gY29sbGFwc2UoMikKKyAgZG8gaSA9IDEsIDE2CisgICAgZG8gaiA9 IDEsIGEyIC0gaSAqIGExCisgICAgZW5kIGRvCisgIGVuZCBkbworCitlbmQgc3Vicm91dGlu ZQorCitzdWJyb3V0aW5lIHMzIChhMSwgYTIpCisgIGludGVnZXIgOjogYTEsIGEyCisgIGlu dGVnZXIgOjogaSwgaiwgaworCisgICEkb21wIGRvIGNvbGxhcHNlKDMpCisgIGRvIGkgPSAx LCAxNgorICAgIGRvIGogPSAxLCBpCisgICAgICBkbyBrID0gaiwgMTYKKyAgICAgIGVuZCBk bworICAgIGVuZCBkbworICBlbmQgZG8KKworZW5kIHN1YnJvdXRpbmUKZGlmZiAtLWdpdCBh L2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9jYW5vbmljYWwtbG9vcC0yLmY5MCBi L2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9jYW5vbmljYWwtbG9vcC0yLmY5MApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZGYwMDZhCi0tLSAvZGV2L251 bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL2Nhbm9uaWNhbC1sb29w LTIuZjkwCkBAIC0wLDAgKzEsNDQgQEAKKyEgeyBkZy1kbyBjb21waWxlIH0KKyEgeyBkZy1v cHRpb25zICItZm9wZW5tcCIgfQorCishIFRlc3QgdGhhdCB2YXJpb3VzIG5vbi1jYW5vbmlj YWwgbG9vcHMgYXJlIHJlamVjdGVkIHdpdGggYSBkaWFnbm9zdGljLgorCitzdWJyb3V0aW5l IHMxIChhMSwgYTIpCisgIGludGVnZXIgOjogYTEsIGEyCisgIGludGVnZXIgOjogaSwgagor CisgICEkb21wIGRvIGNvbGxhcHNlKDIpCisgIGRvIGkgPSAxLCAxNgorICAgIGRvIGogPSBp ICogaSwgMTYgICAgISB7IGRnLWVycm9yICJub3QgaW4gY2Fub25pY2FsIGZvcm0iIH0KKyAg ICBlbmQgZG8KKyAgZW5kIGRvCisKKyAgISRvbXAgZG8gY29sbGFwc2UoMikKKyAgZG8gaSA9 IDEsIDE2CisgICAgZG8gaiA9IE1BWCAoaSwgOCksIDE2ICAgICEgeyBkZy1lcnJvciAibm90 IGluIGNhbm9uaWNhbCBmb3JtIiB9CisgICAgZW5kIGRvCisgIGVuZCBkbworCisgICEkb21w IGRvIGNvbGxhcHNlKDIpCisgIGRvIGkgPSAxLCAxNgorICAgIGRvIGogPSAxLCAxNiwgaSAg ICAhIHsgZGctZXJyb3IgIm5vdCBpbiBjYW5vbmljYWwgZm9ybSIgfQorICAgIGVuZCBkbwor ICBlbmQgZG8KKworICAhJG9tcCBkbyBjb2xsYXBzZSgzKQorICBkbyBpID0gMSwgMTYKKyAg ICBkbyBqID0gMSwgMTYKKyAgICAgIGRvIGsgPSBpLCBqICAgICEgeyBkZy1lcnJvciAicmVm ZXJlbmNlIGRpZmZlcmVudCBpdGVyYXRpb24gdmFyaWFibGVzIiB9CisgICAgICBlbmQgZG8K KyAgICBlbmQgZG8KKyAgZW5kIGRvCisKKyAgISRvbXAgZG8gY29sbGFwc2UoMykKKyAgZG8g aSA9IDEsIDE2CisgICAgZG8gaiA9IDEsIDE2CisgICAgICBkbyBrID0gMSwgaSArIGogICAg ISAgeyBkZy1lcnJvciAibm90IGluIGNhbm9uaWNhbCBmb3JtIiB9CisgICAgICBlbmQgZG8K KyAgICBlbmQgZG8KKyAgZW5kIGRvCisKK2VuZCBzdWJyb3V0aW5lCmRpZmYgLS1naXQgYS9n Y2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dvbXAvY29sbGFwc2UxLmY5MCBiL2djYy90ZXN0 c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9jb2xsYXBzZTEuZjkwCmluZGV4IDAxY2ZjODIuLjc3 YjJiZGQgMTAwNjQ0Ci0tLSBhL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9jb2xs YXBzZTEuZjkwCisrKyBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9jb2xsYXBz ZTEuZjkwCkBAIC0xOSw3ICsxOSw3IEBAIHN1YnJvdXRpbmUgY29sbGFwc2UxCiAgICAgZW5k IGRvCiAgICEkb21wIHBhcmFsbGVsIGRvIGNvbGxhcHNlKDIpCiAgICAgZG8gaSA9IDEsIDUs IDIKLSAgICAgIGRvIGogPSBpICsgMSwgNywgaQkhIHsgZGctZXJyb3IgImNvbGxhcHNlZCBs b29wcyBkb24udCBmb3JtIHJlY3Rhbmd1bGFyIGl0ZXJhdGlvbiBzcGFjZSIgfQorICAgICAg ZG8gaiA9IGkgKyAxLCA3LCBpCSEgeyBkZy1lcnJvciAibG9vcCBpbmNyZW1lbnQgbm90IGlu IGNhbm9uaWNhbCBmb3JtIiB9CiAgICAgICBlbmQgZG8KICAgICBlbmQgZG8KICAgISRvbXAg cGFyYWxsZWwgZG8gY29sbGFwc2UoMikgc2hhcmVkKGopCkBAIC00OSw3ICs0OSw3IEBAIHN1 YnJvdXRpbmUgY29sbGFwc2UxXzIKICAgaW50ZWdlciA6OiBpCiAgICEkb21wIHBhcmFsbGVs IGRvIGNvbGxhcHNlKDIpCiAgICAgZG8gaSA9IC02LCA2CQkhIHsgZGctZXJyb3IgImNhbm5v dCBiZSByZWRlZmluZWQgaW5zaWRlIGxvb3AgYmVnaW5uaW5nIiB9Ci0gICAgICBkbyBpID0g NCwgNgkJISB7IGRnLWVycm9yICJjb2xsYXBzZWQgbG9vcHMgZG9uLnQgZm9ybSByZWN0YW5n dWxhciBpdGVyYXRpb24gc3BhY2V8Y2Fubm90IGJlIHJlZGVmaW5lZCIgfQorICAgICAgZG8g aSA9IDQsIDYJCSEgeyBkZy1lcnJvciAiaXRlcmF0aW9uIHZhcmlhYmxlIHVzZWQgaW4gbW9y ZSB0aGFuIG9uZSBsb29wfGNhbm5vdCBiZSByZWRlZmluZWQiIH0KICAgICAgIGVuZCBkbwog ICAgIGVuZCBkbwogZW5kIHN1YnJvdXRpbmUgY29sbGFwc2UxXzIKZGlmZiAtLWdpdCBhL2dj Yy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9ub24tcmVjdGFuZ3VsYXItbG9vcC5mOTAg Yi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dvbXAvbm9uLXJlY3Rhbmd1bGFyLWxvb3Au ZjkwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3ZjQxY2IKLS0tIC9k ZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dvbXAvbm9uLXJlY3Rh bmd1bGFyLWxvb3AuZjkwCkBAIC0wLDAgKzEsMjI3IEBACishIHsgZGctZG8gY29tcGlsZSB9 CishIHsgZGctb3B0aW9ucyAiLWZvcGVubXAiIH0KKworISBUZXN0IHRoYXQgZXJyb3JzIGFy ZSBnaXZlbiBmb3IgY2FzZXMgd2hlcmUgdGhlcmUgYXJlIGNvbnN0cmFpbnRzCishIGRpc2Fs bG93aW5nIG5vbnJlY3Rhbmd1bGFyIGxvb3BzLgorCishIFdvcmstc2hhcmluZyBsb29wIGRp c2FsbG93cyAic2NoZWR1bGUiIGFuZCAib3JkZXJlZCIgY2xhdXNlcy4KKworc3Vicm91dGlu ZSBzMSAoYTEsIGEyKQorICBpbnRlZ2VyIDo6IGExLCBhMgorICBpbnRlZ2VyIDo6IGksIGoK KworICAhJG9tcCBkbyBjb2xsYXBzZSgyKSBzY2hlZHVsZShzdGF0aWMpICAhIHsgZGctZXJy b3IgIidzY2hlZHVsZScgY2xhdXNlIG1heSBub3QgYXBwZWFyIG9uIG5vbi1yZWN0YW5ndWxh ciAnZG8nIiB9CisgIGRvIGkgPSAxLCAxNgorICAgIGRvIGogPSAxLCBpCisgICAgZW5kIGRv CisgIGVuZCBkbworCisgICEkb21wIGRvIGNvbGxhcHNlKDIpIHNjaGVkdWxlKHN0YXRpYykg ICEgeyBkZy1lcnJvciAiJ3NjaGVkdWxlJyBjbGF1c2UgbWF5IG5vdCBhcHBlYXIgb24gbm9u LXJlY3Rhbmd1bGFyICdkbyciIH0KKyAgZG8gaSA9IDEsIDE2CisgICAgZG8gaiA9IGksIDE2 CisgICAgZW5kIGRvCisgIGVuZCBkbworCisgICEkb21wIGRvIGNvbGxhcHNlKDIpIG9yZGVy ZWQgICEgeyBkZy1lcnJvciAiJ29yZGVyZWQnIGNsYXVzZSBtYXkgbm90IGFwcGVhciBvbiBu b24tcmVjdGFuZ3VsYXIgJ2RvJyIgfQorICBkbyBpID0gMSwgMTYKKyAgICBkbyBqID0gMSwg aQorICAgIGVuZCBkbworICBlbmQgZG8KKworICAhJG9tcCBkbyBjb2xsYXBzZSgyKSBvcmRl cmVkICAhIHsgZGctZXJyb3IgIidvcmRlcmVkJyBjbGF1c2UgbWF5IG5vdCBhcHBlYXIgb24g bm9uLXJlY3Rhbmd1bGFyICdkbyciIH0KKyAgZG8gaSA9IDEsIDE2CisgICAgZG8gaiA9IGks IDE2CisgICAgZW5kIGRvCisgIGVuZCBkbworCisgICEgRGVyaXZlZCBjb25zdHJ1Y3RzCisK KyAgISRvbXAgZG8gc2ltZCBjb2xsYXBzZSgyKSBzY2hlZHVsZShzdGF0aWMpICAhIHsgZGct ZXJyb3IgIidzY2hlZHVsZScgY2xhdXNlIG1heSBub3QgYXBwZWFyIG9uIG5vbi1yZWN0YW5n dWxhciAnZG8nIiB9CisgIGRvIGkgPSAxLCAxNgorICAgIGRvIGogPSAxLCBpCisgICAgZW5k IGRvCisgIGVuZCBkbworCisgICEkb21wIHBhcmFsbGVsIGRvIGNvbGxhcHNlKDIpIHNjaGVk dWxlKHN0YXRpYykgICEgeyBkZy1lcnJvciAiJ3NjaGVkdWxlJyBjbGF1c2UgbWF5IG5vdCBh cHBlYXIgb24gbm9uLXJlY3Rhbmd1bGFyICdkbyciIH0KKyAgZG8gaSA9IDEsIDE2CisgICAg ZG8gaiA9IDEsIGkKKyAgICBlbmQgZG8KKyAgZW5kIGRvCisKKyAgISRvbXAgcGFyYWxsZWwg ZG8gc2ltZCBjb2xsYXBzZSgyKSBzY2hlZHVsZShzdGF0aWMpICAhIHsgZGctZXJyb3IgIidz Y2hlZHVsZScgY2xhdXNlIG1heSBub3QgYXBwZWFyIG9uIG5vbi1yZWN0YW5ndWxhciAnZG8n IiB9CisgIGRvIGkgPSAxLCAxNgorICAgIGRvIGogPSAxLCBpCisgICAgZW5kIGRvCisgIGVu ZCBkbworCisgICEkb21wIHRhcmdldCBwYXJhbGxlbCBkbyBjb2xsYXBzZSgyKSBzY2hlZHVs ZShzdGF0aWMpICAhIHsgZGctZXJyb3IgIidzY2hlZHVsZScgY2xhdXNlIG1heSBub3QgYXBw ZWFyIG9uIG5vbi1yZWN0YW5ndWxhciAnZG8nIiB9CisgIGRvIGkgPSAxLCAxNgorICAgIGRv IGogPSAxLCBpCisgICAgZW5kIGRvCisgIGVuZCBkbworCisgICEkb21wIHRhcmdldCBwYXJh bGxlbCBkbyBjb2xsYXBzZSgyKSBzY2hlZHVsZShzdGF0aWMpICAhIHsgZGctZXJyb3IgIidz Y2hlZHVsZScgY2xhdXNlIG1heSBub3QgYXBwZWFyIG9uIG5vbi1yZWN0YW5ndWxhciAnZG8n IiB9CisgIGRvIGkgPSAxLCAxNgorICAgIGRvIGogPSAxLCBpCisgICAgZW5kIGRvCisgIGVu ZCBkbworCitlbmQgc3Vicm91dGluZQorCisKKyEgRGlzdHJpYnV0ZSBjb25zdHJ1Y3QgZGlz YWxsb3dzICJkaXN0X3NjaGVkdWxlIiBjbGF1c2UuCisKK3N1YnJvdXRpbmUgczIgKGExLCBh MikKKyAgaW50ZWdlciA6OiBhMSwgYTIKKyAgaW50ZWdlciA6OiBpLCBqCisKKyAgISRvbXAg ZGlzdHJpYnV0ZSBjb2xsYXBzZSgyKSBkaXN0X3NjaGVkdWxlKHN0YXRpYykgICEgeyBkZy1l cnJvciAiJ2Rpc3Rfc2NoZWR1bGUnIGNsYXVzZSBtYXkgbm90IGFwcGVhciBvbiBub24tcmVj dGFuZ3VsYXIgJ2Rpc3RyaWJ1dGUnIiB9CisgIGRvIGkgPSAxLCAxNgorICAgIGRvIGogPSAx LCBpCisgICAgZW5kIGRvCisgIGVuZCBkbworCisgICEkb21wIGRpc3RyaWJ1dGUgY29sbGFw c2UoMikgZGlzdF9zY2hlZHVsZShzdGF0aWMpICAhIHsgZGctZXJyb3IgIidkaXN0X3NjaGVk dWxlJyBjbGF1c2UgbWF5IG5vdCBhcHBlYXIgb24gbm9uLXJlY3Rhbmd1bGFyICdkaXN0cmli dXRlJyIgfQorICBkbyBpID0gMSwgMTYKKyAgICBkbyBqID0gaSwgMTYKKyAgICBlbmQgZG8K KyAgZW5kIGRvCisKKyAgISBEZXJpdmVkIGNvbnN0cnVjdHMKKworICAhJG9tcCBkaXN0cmli dXRlIHNpbWQgY29sbGFwc2UoMikgZGlzdF9zY2hlZHVsZShzdGF0aWMpICAhIHsgZGctZXJy b3IgIidkaXN0X3NjaGVkdWxlJyBjbGF1c2UgbWF5IG5vdCBhcHBlYXIgb24gbm9uLXJlY3Rh bmd1bGFyICdkaXN0cmlidXRlJyIgfQorICBkbyBpID0gMSwgMTYKKyAgICBkbyBqID0gaSwg MTYKKyAgICBlbmQgZG8KKyAgZW5kIGRvCisKKyAgISRvbXAgZGlzdHJpYnV0ZSBwYXJhbGxl bCBkbyBjb2xsYXBzZSgyKSBkaXN0X3NjaGVkdWxlKHN0YXRpYykgICEgeyBkZy1lcnJvciAi J2Rpc3Rfc2NoZWR1bGUnIGNsYXVzZSBtYXkgbm90IGFwcGVhciBvbiBub24tcmVjdGFuZ3Vs YXIgJ2Rpc3RyaWJ1dGUnIiB9CisgIGRvIGkgPSAxLCAxNgorICAgIGRvIGogPSBpLCAxNgor ICAgIGVuZCBkbworICBlbmQgZG8KKworICAhJG9tcCBkaXN0cmlidXRlIHBhcmFsbGVsIGRv IHNpbWQgY29sbGFwc2UoMikgZGlzdF9zY2hlZHVsZShzdGF0aWMpICAhIHsgZGctZXJyb3Ig IidkaXN0X3NjaGVkdWxlJyBjbGF1c2UgbWF5IG5vdCBhcHBlYXIgb24gbm9uLXJlY3Rhbmd1 bGFyICdkaXN0cmlidXRlJyIgfQorICBkbyBpID0gMSwgMTYKKyAgICBkbyBqID0gaSwgMTYK KyAgICBlbmQgZG8KKyAgZW5kIGRvCisKKyAgISRvbXAgdGVhbXMgZGlzdHJpYnV0ZSBjb2xs YXBzZSgyKSBkaXN0X3NjaGVkdWxlKHN0YXRpYykgICEgeyBkZy1lcnJvciAiJ2Rpc3Rfc2No ZWR1bGUnIGNsYXVzZSBtYXkgbm90IGFwcGVhciBvbiBub24tcmVjdGFuZ3VsYXIgJ2Rpc3Ry aWJ1dGUnIiB9CisgIGRvIGkgPSAxLCAxNgorICAgIGRvIGogPSBpLCAxNgorICAgIGVuZCBk bworICBlbmQgZG8KKworICAhJG9tcCB0ZWFtcyBkaXN0cmlidXRlIHNpbWQgY29sbGFwc2Uo MikgZGlzdF9zY2hlZHVsZShzdGF0aWMpICAhIHsgZGctZXJyb3IgIidkaXN0X3NjaGVkdWxl JyBjbGF1c2UgbWF5IG5vdCBhcHBlYXIgb24gbm9uLXJlY3Rhbmd1bGFyICdkaXN0cmlidXRl JyIgfQorICBkbyBpID0gMSwgMTYKKyAgICBkbyBqID0gaSwgMTYKKyAgICBlbmQgZG8KKyAg ZW5kIGRvCisKKyAgISRvbXAgdGVhbXMgZGlzdHJpYnV0ZSBwYXJhbGxlbCBkbyBjb2xsYXBz ZSgyKSBkaXN0X3NjaGVkdWxlKHN0YXRpYykgICEgeyBkZy1lcnJvciAiJ2Rpc3Rfc2NoZWR1 bGUnIGNsYXVzZSBtYXkgbm90IGFwcGVhciBvbiBub24tcmVjdGFuZ3VsYXIgJ2Rpc3RyaWJ1 dGUnIiB9CisgIGRvIGkgPSAxLCAxNgorICAgIGRvIGogPSBpLCAxNgorICAgIGVuZCBkbwor ICBlbmQgZG8KKworICAhJG9tcCB0ZWFtcyBkaXN0cmlidXRlIHBhcmFsbGVsIGRvIHNpbWQg Y29sbGFwc2UoMikgZGlzdF9zY2hlZHVsZShzdGF0aWMpICAhIHsgZGctZXJyb3IgIidkaXN0 X3NjaGVkdWxlJyBjbGF1c2UgbWF5IG5vdCBhcHBlYXIgb24gbm9uLXJlY3Rhbmd1bGFyICdk aXN0cmlidXRlJyIgfQorICBkbyBpID0gMSwgMTYKKyAgICBkbyBqID0gaSwgMTYKKyAgICBl bmQgZG8KKyAgZW5kIGRvCisKKyAgISRvbXAgdGFyZ2V0IHRlYW1zIGRpc3RyaWJ1dGUgY29s bGFwc2UoMikgZGlzdF9zY2hlZHVsZShzdGF0aWMpICAhIHsgZGctZXJyb3IgIidkaXN0X3Nj aGVkdWxlJyBjbGF1c2UgbWF5IG5vdCBhcHBlYXIgb24gbm9uLXJlY3Rhbmd1bGFyICdkaXN0 cmlidXRlJyIgfQorICBkbyBpID0gMSwgMTYKKyAgICBkbyBqID0gaSwgMTYKKyAgICBlbmQg ZG8KKyAgZW5kIGRvCisKKyAgISRvbXAgdGFyZ2V0IHRlYW1zIGRpc3RyaWJ1dGUgc2ltZCBj b2xsYXBzZSgyKSBkaXN0X3NjaGVkdWxlKHN0YXRpYykgICEgeyBkZy1lcnJvciAiJ2Rpc3Rf c2NoZWR1bGUnIGNsYXVzZSBtYXkgbm90IGFwcGVhciBvbiBub24tcmVjdGFuZ3VsYXIgJ2Rp c3RyaWJ1dGUnIiB9CisgIGRvIGkgPSAxLCAxNgorICAgIGRvIGogPSBpLCAxNgorICAgIGVu ZCBkbworICBlbmQgZG8KKworICAhJG9tcCB0YXJnZXQgdGVhbXMgZGlzdHJpYnV0ZSBwYXJh bGxlbCBkbyBjb2xsYXBzZSgyKSBkaXN0X3NjaGVkdWxlKHN0YXRpYykgICEgeyBkZy1lcnJv ciAiJ2Rpc3Rfc2NoZWR1bGUnIGNsYXVzZSBtYXkgbm90IGFwcGVhciBvbiBub24tcmVjdGFu Z3VsYXIgJ2Rpc3RyaWJ1dGUnIiB9CisgIGRvIGkgPSAxLCAxNgorICAgIGRvIGogPSBpLCAx NgorICAgIGVuZCBkbworICBlbmQgZG8KKworICAhJG9tcCB0YXJnZXQgdGVhbXMgZGlzdHJp YnV0ZSBwYXJhbGxlbCBkbyBzaW1kIGNvbGxhcHNlKDIpIGRpc3Rfc2NoZWR1bGUoc3RhdGlj KSAgISB7IGRnLWVycm9yICInZGlzdF9zY2hlZHVsZScgY2xhdXNlIG1heSBub3QgYXBwZWFy IG9uIG5vbi1yZWN0YW5ndWxhciAnZGlzdHJpYnV0ZSciIH0KKyAgZG8gaSA9IDEsIDE2Cisg ICAgZG8gaiA9IGksIDE2CisgICAgZW5kIGRvCisgIGVuZCBkbworCitlbmQgc3Vicm91dGlu ZQorCishIFRhc2tsb29wIGNvbnN0cnVjdCBkaXNhbGxvd3MgImdyYWluc2l6ZSIgYW5kICJu dW1fdGFza3MiIGNsYXVzZXMuCisKK3N1YnJvdXRpbmUgczMgKGExLCBhMikKKyAgaW50ZWdl ciA6OiBhMSwgYTIKKyAgaW50ZWdlciA6OiBpLCBqCisKKyAgISRvbXAgdGFza2xvb3AgY29s bGFwc2UoMikgZ3JhaW5zaXplKDQpICAhIHsgZGctZXJyb3IgIidncmFpbnNpemUnIGNsYXVz ZSBtYXkgbm90IGFwcGVhciBvbiBub24tcmVjdGFuZ3VsYXIgJ3Rhc2tsb29wJyIgfQorICBk byBpID0gMSwgMTYKKyAgICBkbyBqID0gMSwgaQorICAgIGVuZCBkbworICBlbmQgZG8KKwor ICAhJG9tcCB0YXNrbG9vcCBjb2xsYXBzZSgyKSBncmFpbnNpemUoNCkgICEgeyBkZy1lcnJv ciAiJ2dyYWluc2l6ZScgY2xhdXNlIG1heSBub3QgYXBwZWFyIG9uIG5vbi1yZWN0YW5ndWxh ciAndGFza2xvb3AnIiB9CisgIGRvIGkgPSAxLCAxNgorICAgIGRvIGogPSBpLCAxNgorICAg IGVuZCBkbworICBlbmQgZG8KKworICAhJG9tcCB0YXNrbG9vcCBjb2xsYXBzZSgyKSBudW1f dGFza3MoNCkgICEgeyBkZy1lcnJvciAiJ251bV90YXNrcycgY2xhdXNlIG1heSBub3QgYXBw ZWFyIG9uIG5vbi1yZWN0YW5ndWxhciAndGFza2xvb3AnIiB9CisgIGRvIGkgPSAxLCAxNgor ICAgIGRvIGogPSAxLCBpCisgICAgZW5kIGRvCisgIGVuZCBkbworCisgICEkb21wIHRhc2ts b29wIGNvbGxhcHNlKDIpIG51bV90YXNrcyg0KSAgISB7IGRnLWVycm9yICInbnVtX3Rhc2tz JyBjbGF1c2UgbWF5IG5vdCBhcHBlYXIgb24gbm9uLXJlY3Rhbmd1bGFyICd0YXNrbG9vcCci IH0KKyAgZG8gaSA9IDEsIDE2CisgICAgZG8gaiA9IGksIDE2CisgICAgZW5kIGRvCisgIGVu ZCBkbworCisgICEgRGVyaXZlZCBjb25zdHJ1Y3RzCisKKyAgISRvbXAgdGFza2xvb3Agc2lt ZCBjb2xsYXBzZSgyKSBncmFpbnNpemUoNCkgICEgeyBkZy1lcnJvciAiJ2dyYWluc2l6ZScg Y2xhdXNlIG1heSBub3QgYXBwZWFyIG9uIG5vbi1yZWN0YW5ndWxhciAndGFza2xvb3AnIiB9 CisgIGRvIGkgPSAxLCAxNgorICAgIGRvIGogPSAxLCBpCisgICAgZW5kIGRvCisgIGVuZCBk bworCisgICEkb21wIG1hc2tlZCB0YXNrbG9vcCBjb2xsYXBzZSgyKSBncmFpbnNpemUoNCkg ICEgeyBkZy1lcnJvciAiJ2dyYWluc2l6ZScgY2xhdXNlIG1heSBub3QgYXBwZWFyIG9uIG5v bi1yZWN0YW5ndWxhciAndGFza2xvb3AnIiB9CisgIGRvIGkgPSAxLCAxNgorICAgIGRvIGog PSAxLCBpCisgICAgZW5kIGRvCisgIGVuZCBkbworCisgICEkb21wIG1hc2tlZCB0YXNrbG9v cCBzaW1kIGNvbGxhcHNlKDIpIGdyYWluc2l6ZSg0KSAgISB7IGRnLWVycm9yICInZ3JhaW5z aXplJyBjbGF1c2UgbWF5IG5vdCBhcHBlYXIgb24gbm9uLXJlY3Rhbmd1bGFyICd0YXNrbG9v cCciIH0KKyAgZG8gaSA9IDEsIDE2CisgICAgZG8gaiA9IDEsIGkKKyAgICBlbmQgZG8KKyAg ZW5kIGRvCisKKyAgISRvbXAgcGFyYWxsZWwgbWFza2VkIHRhc2tsb29wIGNvbGxhcHNlKDIp IGdyYWluc2l6ZSg0KSAgISB7IGRnLWVycm9yICInZ3JhaW5zaXplJyBjbGF1c2UgbWF5IG5v dCBhcHBlYXIgb24gbm9uLXJlY3Rhbmd1bGFyICd0YXNrbG9vcCciIH0KKyAgZG8gaSA9IDEs IDE2CisgICAgZG8gaiA9IDEsIGkKKyAgICBlbmQgZG8KKyAgZW5kIGRvCisKKyAgISRvbXAg cGFyYWxsZWwgbWFza2VkIHRhc2tsb29wIHNpbWQgY29sbGFwc2UoMikgZ3JhaW5zaXplKDQp ICAhIHsgZGctZXJyb3IgIidncmFpbnNpemUnIGNsYXVzZSBtYXkgbm90IGFwcGVhciBvbiBu b24tcmVjdGFuZ3VsYXIgJ3Rhc2tsb29wJyIgfQorICBkbyBpID0gMSwgMTYKKyAgICBkbyBq ID0gMSwgaQorICAgIGVuZCBkbworICBlbmQgZG8KKworZW5kIHN1YnJvdXRpbmUKKworISBU T0RPOiBub3QgeWV0IGltcGxlbWVudGVkCishIFRoZSB0aWxlIGNvbnN0cnVjdCBkaXNhbGxv d3MgYWxsIG5vbi1yZWN0YW5ndWxhciBsb29wcy4KKworCmRpZmYgLS1naXQgYS9nY2MvdGVz dHN1aXRlL2dmb3J0cmFuLmRnL2dvbXAvcHI4NTMxMy5mOTAgYi9nY2MvdGVzdHN1aXRlL2dm b3J0cmFuLmRnL2dvbXAvcHI4NTMxMy5mOTAKaW5kZXggMDQ1OTk4NC4uZTA0MDFhNSAxMDA2 NDQKLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL3ByODUzMTMuZjkwCisr KyBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9wcjg1MzEzLmY5MApAQCAtMyw3 ICszLDcgQEAKIAogISRvbXAgZG8gY29sbGFwc2UoMykKICAgZG8gaSA9IDEsIDEwCi0gICAg ZG8gaiA9IGksIDIwCSEgeyBkZy1lcnJvciAiZm9ybSByZWN0YW5ndWxhciBpdGVyYXRpb24g c3BhY2UiIH0KKyAgICBkbyBqID0gaSwgMjAKICAgICAgIGRvIGsgPSAxLCAyCiAgICAgICBl bmQgZG8KICAgICBlbmQgZG8KQEAgLTExLDE0ICsxMSwxNCBAQAogISRvbXAgZG8gY29sbGFw c2UoMykKICAgZG8gaSA9IDEsIDEwCiAgICAgZG8gaiA9IDEsIDUKLSAgICAgIGRvIGsgPSBp LCAyMAkhIHsgZGctZXJyb3IgImZvcm0gcmVjdGFuZ3VsYXIgaXRlcmF0aW9uIHNwYWNlIiB9 CisgICAgICBkbyBrID0gaSwgMjAKICAgICAgIGVuZCBkbwogICAgIGVuZCBkbwogICBlbmQg ZG8KICEkb21wIGRvIGNvbGxhcHNlKDMpCiAgIGRvIGkgPSAxLCAxMAogICAgIGRvIGogPSAx LCA1Ci0gICAgICBkbyBrID0gaiwgMjAJISB7IGRnLWVycm9yICJmb3JtIHJlY3Rhbmd1bGFy IGl0ZXJhdGlvbiBzcGFjZSIgfQorICAgICAgZG8gayA9IGosIDIwCiAgICAgICBlbmQgZG8K ICAgICBlbmQgZG8KICAgZW5kIGRvCg== --------------mEOlrcZIASKaXw0MfNyDxKaL--