From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-lj1-x230.google.com (mail-lj1-x230.google.com [IPv6:2a00:1450:4864:20::230]) by sourceware.org (Postfix) with ESMTPS id 541FC385DDC3 for ; Fri, 26 Jul 2024 18:07:22 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 541FC385DDC3 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 541FC385DDC3 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::230 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1722017249; cv=none; b=kiidWVLbbt5tUxZu7HRC0i6J6tuZKIqJvA09hDgOjV9PG1f1OeXgF6JuLOSr+Cfp72rueQVHv+juN/xBBLMjVAX/CDLH4CxP4Y3W0qUTyuzM1UsNQnn76+ZW/uj6smi/f9pG9p5pH7+21bEZQtKtrQ3IhnA644gn8rlrMxNv7ig= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1722017249; c=relaxed/simple; bh=6DsfwufdafT20nXAx1O82pjL/WHbW5bBQNJN5Z+QkNM=; h=DKIM-Signature:MIME-Version:From:Date:Message-ID:Subject:To; b=kt9lbMZunkJjRZ1Juw5r+djorUuqbnISVXWKKUPOE8Ebr2MFNGKH5JBnOOr6BZdU8TFZ7lfdpf119UulEU4UmlpeZ+GqDRafYO/Y5Id5QRlBDmDzApnSSk6H6lX20ir8fKTz9nuZrO2GNvStqGo8+1HA8tp2+y0xdiYfK/rbJig= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-lj1-x230.google.com with SMTP id 38308e7fff4ca-2f029e9c9cfso24022511fa.2 for ; Fri, 26 Jul 2024 11:07:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1722017240; x=1722622040; darn=gcc.gnu.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=uDLwiSbNten02j4Tv0MqTChgLZJ4n+EGnvzWBCnbiAo=; b=SOy2lBqCrueoPkKjNIWvPboUJYOAGp8b8WPUM532Cws3K227keAYpT9tmSVFLPO7uf /nJ5cqe814U5A5hCeimtMi4K3CILezAs2geXFPz2SOvfFLnHRU0bOek7+NvhKtgl9uP4 t1ywitHMu1zrADSkmWxIx11hcL61PfDaKRsFmLCOTPxk1Tc9bpjOxIXyJunoaAhQlVNr WPRn2gp6WEKEEwUu4r6nNNq//YAVfh4Z5ORpHHFdOol/7xMm2LafEEz1UtO3S0I12iRA Pgz7s19/xDEVcVzO7wcQLkgkzAoFJ1JYO8UAZLV6sM2xVvtg+DXx6fF8JdFNqjoAUEE+ /5KA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1722017240; x=1722622040; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=uDLwiSbNten02j4Tv0MqTChgLZJ4n+EGnvzWBCnbiAo=; b=okmzuzxQQG1KiKWpsRyv7C0JJdbddqkGZb1VaFMOo0EFdwVxkVZ4tRPRH/jwVFG88e 0dtmk63uYSigwoflX9SvFUhUvzA+EbcLui4+zGwGViU7WhjYgIINJtNe0KN4zg/5T5g9 n3HyF9lDUNIAs8ADtOKHMuenVIVz2bJZ149abMScpZXeMc2WPcI2mVNxeF31CCa5jAc5 STWhhbAnETJBiP+g9oiMEljZ/w8ZkIjV6yE50J5LTDfUhFSu8VY3su1QYFe3GxqyMKzb NW5MexJYPYRrDpQ36zRTA2rzPLYKGClAUWZmVJgT8jELRjC7BAdWiKLHmquu+vYtQYnT l9og== X-Gm-Message-State: AOJu0Yzl3JDAAA5kS7ywr98VjbQNqy5+2JYvZsp40oekTvhEPfK6emLH ngsTVWUpiwGj+y1FxwWDcXC2ZG6OGbOECoid/xEtDbwWxhbLwL2Yxh18WuNLtkKLpQ6tvr6evpb lBmxQNyW9R5AxfneXj7Hc3YXjYaNsWNwN X-Google-Smtp-Source: AGHT+IGqG43P5RdL90bcT4Rf9hQb/PmMcahnILqcqYChl1/QhyvK5/pue+ZorkBg0weHNfKVuQDB3GFW11DCN/K+krY= X-Received: by 2002:a2e:b5b1:0:b0:2ef:2555:e52d with SMTP id 38308e7fff4ca-2f12ee6342bmr3607311fa.45.1722017240340; Fri, 26 Jul 2024 11:07:20 -0700 (PDT) MIME-Version: 1.0 From: Mariam Arutunian Date: Fri, 26 Jul 2024 22:07:09 +0400 Message-ID: Subject: [RFC/RFA][PATCH v2 12/12] Add tests for CRC detection and generation. To: GCC Patches Content-Type: multipart/mixed; boundary="000000000000e87495061e2a618a" X-Spam-Status: No, score=-6.7 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,HTML_MESSAGE,RCVD_IN_DNSWL_NONE,SCC_5_SHORT_WORD_LINES,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --000000000000e87495061e2a618a Content-Type: multipart/alternative; boundary="000000000000e87494061e2a6188" --000000000000e87494061e2a6188 Content-Type: text/plain; charset="UTF-8" gcc/testsuite/gcc.dg/torture/ * crc-(1-29).c: New tests. * crc-CCIT-data16-xorOutside_InsideFor.c: Likewise. * crc-CCIT-data16.c: Likewise. * crc-CCIT-data8.c: Likewise. * crc-coremark16-data16.c: Likewise. * crc-coremark32-data16.c: Likewise. * crc-coremark32-data32.c: Likewise. * crc-coremark32-data8.c: Likewise. * crc-coremark64-data64.c: Likewise. * crc-coremark8-data8.c: Likewise. * crc-crc32-data16.c: Likewise. * crc-crc32-data24.c: Likewise. * crc-crc32-data8.c: Likewise. * crc-crc32.c: Likewise. * crc-crc64-data32.c: Likewise. * crc-crc64-data64.c: Likewise. * crc-crc8-data8-loop-xorInFor.c: Likewise. * crc-crc8-data8-loop-xorOutsideFor.c: Likewise. * crc-crc8-data8-xorOustideFor.c: Likewise. * crc-crc8.c: Likewise. * crc-linux-(1-5).c: Likewise. * crc-not-crc-(1-26).c: Likewise. * crc-side-instr-(1-17).c: Likewise. Signed-off-by: Mariam Arutunian --000000000000e87494061e2a6188-- --000000000000e87495061e2a618a Content-Type: text/x-patch; charset="US-ASCII"; name="0012-Add-tests-for-CRC-detection-and-generation.patch" Content-Disposition: attachment; filename="0012-Add-tests-for-CRC-detection-and-generation.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lz30h80l0 ZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RvcnR1cmUvY3Jj LTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RvcnR1cmUvY3JjLTEuYwpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZDYxYTdj ODAyN2QKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy5k Zy90b3J0dXJlL2NyYy0xLmMKQEAgLTAsMCArMSwxMTQgQEAKKy8qIHsgZGct ZG8gcnVuIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLWZkdW1wLXRyZWUtY3Jj LWRldGFpbHMgLWZkaXNhYmxlLXRyZWUtcGhpb3B0MiAtZmRpc2FibGUtdHJl ZS1waGlvcHQzIiB9ICovCisvKiB7IGRnLXNraXAtaWYgIiIgeyAqLSotKiB9 IHsgIi1PMCIgIi1PMSIgIi1PcyIgIi1mbHRvIn0gfSAqLworCisjaW5jbHVk ZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8 c3RkbGliLmg+CisKKyNkZWZpbmUgQ1JDMTYgMHg4MDA1CisKK19fYXR0cmli dXRlX18gKChub2lubGluZSxvcHRpbWl6ZSgwKSkpCit1aW50MTZfdCBnZW5f Y3JjMTZfTzAgKGNvbnN0IHVpbnQ4X3QgKmRhdGEsIHVpbnQxNl90IHNpemUp IHsKKyAgICB1aW50MTZfdCBvdXQgPSAwOworICAgIGludCBiaXRzX3JlYWQg PSAwLCBiaXRfZmxhZzsKKworICAgIGlmIChkYXRhID09IE5VTEwpCisgICAg ICAgIHJldHVybiAwOworCisgICAgd2hpbGUgKHNpemUgPiAwKSB7CisgICAg ICAgIGJpdF9mbGFnID0gb3V0ID4+IDE1OworCisgICAgICAgIG91dCA8PD0g MTsKKyAgICAgICAgb3V0IHw9ICgqZGF0YSA+PiBiaXRzX3JlYWQpICYgMTsK KworICAgICAgICBiaXRzX3JlYWQrKzsKKyAgICAgICAgaWYgKGJpdHNfcmVh ZCA+IDcpIHsKKyAgICAgICAgICAgIGJpdHNfcmVhZCA9IDA7CisgICAgICAg ICAgICBkYXRhKys7CisgICAgICAgICAgICBzaXplLS07CisgICAgICAgIH0K KworICAgICAgICBpZiAoYml0X2ZsYWcpCisgICAgICAgICAgICBvdXQgXj0g Q1JDMTY7CisgICAgfQorCisgICAgaW50IGk7CisgICAgZm9yIChpID0gMDsg aSA8IDE2OyArK2kpIHsKKyAgICAgICAgYml0X2ZsYWcgPSBvdXQgPj4gMTU7 CisgICAgICAgIG91dCA8PD0gMTsKKyAgICAgICAgaWYgKGJpdF9mbGFnKQor ICAgICAgICAgICAgb3V0IF49IENSQzE2OworICAgIH0KKworICAgIHVpbnQx Nl90IGNyYyA9IDA7CisgICAgaSA9IDB4ODAwMDsKKyAgICBpbnQgaiA9IDB4 MDAwMTsKKyAgICBmb3IgKDsgaSAhPSAwOyBpID4+PSAxLCBqIDw8PSAxKSB7 CisgICAgICAgIGlmIChpICYgb3V0KSBjcmMgfD0gajsKKyAgICB9CisKKyAg ICByZXR1cm4gY3JjOworfQorCit1aW50MTZfdCBnZW5fY3JjMTYgKGNvbnN0 IHVpbnQ4X3QgKmRhdGEsIHVpbnQxNl90IHNpemUpIHsKKyAgdWludDE2X3Qg b3V0ID0gMDsKKyAgaW50IGJpdHNfcmVhZCA9IDAsIGJpdF9mbGFnOworCisg IGlmIChkYXRhID09IE5VTEwpCisgICAgcmV0dXJuIDA7CisKKyAgd2hpbGUg KHNpemUgPiAwKSB7CisgICAgICBiaXRfZmxhZyA9IG91dCA+PiAxNTsKKwor ICAgICAgb3V0IDw8PSAxOworICAgICAgb3V0IHw9ICgqZGF0YSA+PiBiaXRz X3JlYWQpICYgMTsKKworICAgICAgYml0c19yZWFkKys7CisgICAgICBpZiAo Yml0c19yZWFkID4gNykgeworCSAgYml0c19yZWFkID0gMDsKKwkgIGRhdGEr KzsKKwkgIHNpemUtLTsKKwl9CisKKyAgICAgIGlmIChiaXRfZmxhZykKKwlv dXQgXj0gQ1JDMTY7CisgICAgfQorCisgIGludCBpOworICBmb3IgKGkgPSAw OyBpIDwgMTY7ICsraSkgeworICAgICAgYml0X2ZsYWcgPSBvdXQgPj4gMTU7 CisgICAgICBvdXQgPDw9IDE7CisgICAgICBpZiAoYml0X2ZsYWcpCisJb3V0 IF49IENSQzE2OworICAgIH0KKworICB1aW50MTZfdCBjcmMgPSAwOworICBp ID0gMHg4MDAwOworICBpbnQgaiA9IDB4MDAwMTsKKyAgZm9yICg7IGkgIT0g MDsgaSA+Pj0gMSwgaiA8PD0gMSkgeworICAgICAgaWYgKGkgJiBvdXQpIGNy YyB8PSBqOworICAgIH0KKworICByZXR1cm4gY3JjOworfQorCitpbnQgbWFp biAoKQoreworICBpZiAoZ2VuX2NyYzE2ICgiaGVsbG8iLCA1KSAhPSAxMzUy MikKKyAgICBhYm9ydCAoKTsKKworICBmb3IgKHVpbnQ4X3QgaSA9IDA7IGkg PCAyNTU7IGkrKykKKyAgICB7CisgICAgICB1aW50MTZfdCByZXMxID0gZ2Vu X2NyYzE2X08wICgmaSwgMSk7CisgICAgICB1aW50MTZfdCByZXMyID0gZ2Vu X2NyYzE2ICgmaSwgMSk7CisgICAgICBpZiAocmVzMSAhPSByZXMyKQorCWFi b3J0ICgpOworICAgIH0KK30KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUt ZHVtcCAiZnVuY3Rpb24gbWF5YmUgY29udGFpbnMgQ1JDIGNhbGN1bGF0aW9u LiIgImNyYyJ9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVt cCAiTG9vcCBpdGVyYXRpb24gbnVtYmVyIGlzIDE1IiAiY3JjIn0gfSAqLwor LyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJCaXQgZm9yd2FyZCIg ImNyYyJ9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAi UG9seW5vbWlhbCdzIHZhbHVlIGlzIFxcXHtcWzAsIFxdKjEsIDAsIDAsIDAs IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEsIDAsIDFcXFx9IiAiY3Jj IiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAiY2Fs Y3VsYXRlcyBDUkMhIiAiY3JjIn0gfSAqLworLyogeyBkZy1maW5hbCB7IHNj YW4tdHJlZS1kdW1wLXRpbWVzICJDb3VsZG4ndCBnZW5lcmF0ZSBmYXN0ZXIg Q1JDIGNvZGUuIiAwICJjcmMifSB9ICovClwgTm8gbmV3bGluZSBhdCBlbmQg b2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdG9y dHVyZS9jcmMtMTAuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RvcnR1cmUv Y3JjLTEwLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAuLmFiZDYzZGRhODdhCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3Rz dWl0ZS9nY2MuZGcvdG9ydHVyZS9jcmMtMTAuYwpAQCAtMCwwICsxLDQ4IEBA CisvKiB7IGRnLWRvIHJ1biB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1mZHVt cC10cmVlLWNyYy1kZXRhaWxzIiB9ICovCisvKiB7IGRnLXNraXAtaWYgIiIg eyAqLSotKiB9IHsgIi1PMCIgIi1PMSIgIi1PcyIgIi1mbHRvIn0gfSAqLwor CisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisK KyNkZWZpbmUgUE9MWSAoMHgxMDcwVSA8PCAzKQorI2RlZmluZSB1OCB1aW50 OF90CisjZGVmaW5lIHUxNiB1aW50MTZfdAorCisgX19hdHRyaWJ1dGVfXyAo KG5vaW5saW5lLG9wdGltaXplKDApKSkKK3U4IGNyYzhfTzAgKHUxNiBkYXRh KSB7CisgICAgaW50IGk7CisgICAgZm9yIChpID0gMDsgaSA8IDg7IGkrKykg eworICAgICAgICBpZiAoZGF0YSAmIDB4ODAwMCkKKyAgICAgICAgICAgIGRh dGEgPSBkYXRhIF4gUE9MWTsKKyAgICAgICAgZGF0YSA9IGRhdGEgPDwgMTsK KyAgICB9CisgICAgcmV0dXJuICh1OCkoZGF0YSA+PiA4KTsKK30KKwordTgg Y3JjOCAodTE2IGRhdGEpIHsKKyAgICBpbnQgaTsKKyAgICBmb3IgKGkgPSAw OyBpIDwgODsgaSsrKSB7CisgICAgICAgIGlmIChkYXRhICYgMHg4MDAwKQor ICAgICAgICAgICAgZGF0YSA9IGRhdGEgXiBQT0xZOworICAgICAgICBkYXRh ID0gZGF0YSA8PCAxOworICAgIH0KKyAgICByZXR1cm4gKHU4KShkYXRhID4+ IDgpOworfQorCitpbnQgbWFpbiAoKQoreworICBmb3IgKHU4IGkgPSAwOyBp IDwgMjU1OyBpKyspCisgICAgeworICAgICAgdTggcmVzMSA9IGNyYzhfTzAg KGkpOworICAgICAgdTggcmVzMiA9IGNyYzggKGkpOworICAgICAgaWYgKHJl czEgIT0gcmVzMikKKwlhYm9ydCAoKTsKKyAgICB9Cit9CisvKiB7IGRnLWZp bmFsIHsgc2Nhbi10cmVlLWR1bXAgImZ1bmN0aW9uIG1heWJlIGNvbnRhaW5z IENSQyBjYWxjdWxhdGlvbi4iICJjcmMifSB9ICovCisvKiB7IGRnLWZpbmFs IHsgc2Nhbi10cmVlLWR1bXAgIkxvb3AgaXRlcmF0aW9uIG51bWJlciBpcyA3 IiAiY3JjIn0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1w ICJCaXQgZm9yd2FyZCIgImNyYyJ9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBz Y2FuLXRyZWUtZHVtcCAiUG9seW5vbWlhbCdzIHZhbHVlIGlzIFxcXHswLCAw LCAwLCAwLCAwLCAxLCAxLCAxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXFxc fSIgImNyYyIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1 bXAgImNhbGN1bGF0ZXMgQ1JDISIgImNyYyJ9IH0gKi8KKy8qIHsgZGctZmlu YWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAiQ291bGRuJ3QgZ2VuZXJhdGUg ZmFzdGVyIENSQyBjb2RlLiIgMCAiY3JjIn0gfSAqLwpcIE5vIG5ld2xpbmUg YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2Nj LmRnL3RvcnR1cmUvY3JjLTExLmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy90 b3J0dXJlL2NyYy0xMS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwLi5iYWE3NGE3MmVlNwotLS0gL2Rldi9udWxsCisrKyBiL2dj Yy90ZXN0c3VpdGUvZ2NjLmRnL3RvcnR1cmUvY3JjLTExLmMKQEAgLTAsMCAr MSwyMCBAQAorLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0 aW9ucyAiLWZkdW1wLXRyZWUtY3JjLWRldGFpbHMiIH0gKi8KKy8qIHsgZGct c2tpcC1pZiAiIiB7ICotKi0qIH0geyAiLU8wIiAiLU8xIiAiLU9zIiAiLWZs dG8ifSB9ICovCisKKy8vV2UganVzdCBkb24ndCBjaGVjayBjYXNlcyB3aGVu IHRoZSBwb2x5bm9taWFsIGlzIGEgdmFyaWFibGUsIGFzIHdlIGNhbid0IHJl cGxhY2UgaXQuCisjaW5jbHVkZSA8c3RkaW50Lmg+CisKK3VpbnQxNl90IGNy YzE2KHVpbnQxNl90IGNyYywgdWludDhfdCBhLCB1aW50MTZfdCBwb2x5bm9t KSB7CisgIGludCBpOworICBjcmMgXj0gYTsKKyAgZm9yIChpID0gMDsgaSA8 IDg7ICsraSkgeworICAgICAgaWYgKGNyYyAmIDEpCisJY3JjID0gKGNyYyA+ PiAxKSBeIHBvbHlub207CisgICAgICBlbHNlCisJY3JjID0gKGNyYyA+PiAx KTsKKyAgICB9CisgIHJldHVybiBjcmM7Cit9CisKKy8qIHsgZGctZmluYWwg eyBzY2FuLXRyZWUtZHVtcCAiU2Vjb25kIG9wZXJhbmQgb2YgdGhlIHhvciBz dGF0ZW1lbnQgaXNuJ3QgYW4gaW50ZWdlciBjb25zdGFudC5cbiIgImNyYyJ9 IH0gKi8KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg YS9nY2MvdGVzdHN1aXRlL2djYy5kZy90b3J0dXJlL2NyYy0xMi5jIGIvZ2Nj L3Rlc3RzdWl0ZS9nY2MuZGcvdG9ydHVyZS9jcmMtMTIuYwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZDlkYmEzMDQ5ODAKLS0t IC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy90b3J0dXJl L2NyYy0xMi5jCkBAIC0wLDAgKzEsMTEyIEBACisvKiB7IGRnLWRvIHJ1biB9 ICovCisvKiB7IGRnLW9wdGlvbnMgIi1mZHVtcC10cmVlLWNyYyAtZmRpc2Fi bGUtdHJlZS1waGlvcHQyIC1mZGlzYWJsZS10cmVlLXBoaW9wdDMiIH0gKi8K Ky8qIHsgZGctc2tpcC1pZiAiIiB7ICotKi0qIH0geyAiLU8wIiAiLU8xIiAi LU9zIiAiLWZsdG8ifSB9ICovCisKKyNpbmNsdWRlIDxzdGRpby5oPgorI2lu Y2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorCisjZGVm aW5lIENSQzE2IDB4ODAwNQorCitfX2F0dHJpYnV0ZV9fICgobm9pbmxpbmUs b3B0aW1pemUoMCkpKQordWludDE2X3QgZ2VuX2NyYzE2X08wIChjb25zdCB1 aW50OF90ICpkYXRhLCB1aW50MTZfdCBzaXplKSB7CisgICAgdWludDE2X3Qg b3V0ID0gMDsKKyAgICBpbnQgYml0c19yZWFkID0gMCwgYml0X2ZsYWc7CisK KyAgICBpZiAoZGF0YSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gMDsKKwor ICAgIHdoaWxlIChzaXplID4gMCkgeworICAgICAgICBiaXRfZmxhZyA9IG91 dCA+PiAxNTsKKworICAgICAgICBvdXQgPDw9IDE7CisgICAgICAgIG91dCB8 PSAoKmRhdGEgPj4gYml0c19yZWFkKSAmIDE7CisKKyAgICAgICAgYml0c19y ZWFkKys7CisgICAgICAgIGlmIChiaXRzX3JlYWQgPiA3KSB7CisgICAgICAg ICAgICBiaXRzX3JlYWQgPSAwOworICAgICAgICAgICAgZGF0YSsrOworICAg ICAgICAgICAgc2l6ZS0tOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGJp dF9mbGFnKQorICAgICAgICAgICAgb3V0IF49IENSQzE2OworCisgICAgfQor CisgICAgaW50IGk7CisgICAgZm9yIChpID0gMDsgaSA8IDE2OyArK2kpIHsK KyAgICAgICAgYml0X2ZsYWcgPSBvdXQgPj4gMTU7CisgICAgICAgIG91dCA8 PD0gMTsKKyAgICAgICAgaWYgKGJpdF9mbGFnKQorICAgICAgICAgICAgb3V0 IF49IENSQzE2OworICAgIH0KKworICAgIHVpbnQxNl90IGNyYyA9IDA7Cisg ICAgaSA9IDB4ODAwMDsKKyAgICBpbnQgaiA9IDB4MDAwMTsKKyAgICBmb3Ig KDsgaSAhPSAwOyBpID4+PSAxLCBqIDw8PSAxKSB7CisgICAgICAgIGlmIChp ICYgb3V0KSBjcmMgfD0gajsKKyAgICB9CisKKyAgICByZXR1cm4gY3JjOwor fQorCit1aW50MTZfdCBnZW5fY3JjMTYgKGNvbnN0IHVpbnQ4X3QgKmRhdGEs IHVpbnQxNl90IHNpemUpIHsKKyAgdWludDE2X3Qgb3V0ID0gMDsKKyAgaW50 IGJpdHNfcmVhZCA9IDAsIGJpdF9mbGFnOworCisgIGlmIChkYXRhID09IE5V TEwpCisgICAgcmV0dXJuIDA7CisKKyAgd2hpbGUgKHNpemUgPiAwKSB7Cisg ICAgICBiaXRfZmxhZyA9IG91dCA+PiAxNTsKKworICAgICAgb3V0IDw8PSAx OworICAgICAgb3V0IHw9ICgqZGF0YSA+PiBiaXRzX3JlYWQpICYgMTsKKwor ICAgICAgYml0c19yZWFkKys7CisgICAgICBpZiAoYml0c19yZWFkID4gNykg eworCSAgYml0c19yZWFkID0gMDsKKwkgIGRhdGErKzsKKwkgIHNpemUtLTsK Kwl9CisKKyAgICAgIGlmIChiaXRfZmxhZykKKwlvdXQgXj0gQ1JDMTY7CisK KyAgICB9CisKKyAgaW50IGk7CisgIGZvciAoaSA9IDA7IGkgPCAxNjsgKytp KSB7CisgICAgICBiaXRfZmxhZyA9IG91dCA+PiAxNTsKKyAgICAgIG91dCA8 PD0gMTsKKyAgICAgIGlmIChiaXRfZmxhZykKKwlvdXQgXj0gQ1JDMTY7Cisg ICAgfQorCisgIHVpbnQxNl90IGNyYyA9IDA7CisgIGkgPSAweDgwMDA7Cisg IGludCBqID0gMHgwMDAxOworICBmb3IgKDsgaSAhPSAwOyBpID4+PSAxLCBq IDw8PSAxKSB7CisgICAgICBpZiAoaSAmIG91dCkgY3JjIHw9IGo7CisgICAg fQorCisgIHJldHVybiBjcmM7Cit9CisKK2ludCBtYWluICgpCit7CisgIGZv ciAodWludDhfdCBpID0gMDsgaSA8IDI1NTsgaSsrKQorICAgIHsKKyAgICAg IHVpbnQxNl90IHJlczEgPSBnZW5fY3JjMTZfTzAgKCZpLCAxKTsKKyAgICAg IHVpbnQxNl90IHJlczIgPSBnZW5fY3JjMTYgKCZpLCAxKTsKKyAgICAgIGlm IChyZXMxICE9IHJlczIpCisJYWJvcnQgKCk7CisgICAgfQorfQorLyogeyBk Zy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJmdW5jdGlvbiBtYXliZSBjb250 YWlucyBDUkMgY2FsY3VsYXRpb24uIiAiY3JjIn0gfSAqLworLyogeyBkZy1m aW5hbCB7IHNjYW4tdHJlZS1kdW1wICJMb29wIGl0ZXJhdGlvbiBudW1iZXIg aXMgMTUiICJjcmMifSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVl LWR1bXAgIkJpdCBmb3J3YXJkIiAiY3JjIn0gfSAqLworLyogeyBkZy1maW5h bCB7IHNjYW4tdHJlZS1kdW1wICJjYWxjdWxhdGVzIENSQyEiICJjcmMifSB9 ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgIkNv dWxkbid0IGdlbmVyYXRlIGZhc3RlciBDUkMgY29kZS4iIDAgImNyYyJ9IH0g Ki8KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9n Y2MvdGVzdHN1aXRlL2djYy5kZy90b3J0dXJlL2NyYy0xMy5jIGIvZ2NjL3Rl c3RzdWl0ZS9nY2MuZGcvdG9ydHVyZS9jcmMtMTMuYwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMmY3NTE4MWNhMWYKLS0tIC9k ZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy90b3J0dXJlL2Ny Yy0xMy5jCkBAIC0wLDAgKzEsNTggQEAKKy8qIHsgZGctZG8gcnVuIH0gKi8K Ky8qIHsgZGctb3B0aW9ucyAiLWZkdW1wLXRyZWUtY3JjLWRldGFpbHMiIH0g Ki8KKy8qIHsgZGctc2tpcC1pZiAiIiB7ICotKi0qIH0geyAiLU8wIiAiLU8x IiAiLU9zIiAiLWZsdG8ifSB9ICovCisKKyNpbmNsdWRlIDxzdGRsaWIuaD4K KworX19hdHRyaWJ1dGVfXyAoKG5vaW5saW5lLG9wdGltaXplKDApKSkKK3Vu c2lnbmVkIHNob3J0IGNyYzE2X08wICh1bnNpZ25lZCBjaGFyIG5ld0J5dGUs IHVuc2lnbmVkIHNob3J0IGNyY1ZhbHVlKSB7CisgIHVuc2lnbmVkIGNoYXIg aTsKKworICBmb3IgKGkgPSAwOyBpIDwgODsgaSsrKSB7CisKKyAgICAgIGlm ICgoKGNyY1ZhbHVlICYgMHg4MDAwKSA+PiA4KSBeIChuZXdCeXRlICYgMHg4 MCkpIHsKKwkgIGNyY1ZhbHVlID0gKGNyY1ZhbHVlIDw8IDEpIF4gMHgxMDI7 CisJfSBlbHNlIHsKKwkgIGNyY1ZhbHVlID0gKGNyY1ZhbHVlIDw8IDEpOwor CX0KKworICAgICAgbmV3Qnl0ZSA8PD0gMTsKKyAgICB9CisKKyAgcmV0dXJu IGNyY1ZhbHVlOworfQorCit1bnNpZ25lZCBzaG9ydCBjcmMxNiAodW5zaWdu ZWQgY2hhciBuZXdCeXRlLCB1bnNpZ25lZCBzaG9ydCBjcmNWYWx1ZSkgewor ICB1bnNpZ25lZCBjaGFyIGk7CisKKyAgZm9yIChpID0gMDsgaSA8IDg7IGkr KykgeworCisgICAgICBpZiAoKChjcmNWYWx1ZSAmIDB4ODAwMCkgPj4gOCkg XiAobmV3Qnl0ZSAmIDB4ODApKSB7CisJICBjcmNWYWx1ZSA9IChjcmNWYWx1 ZSA8PCAxKSBeIDB4MTAyOworCX0gZWxzZSB7CisJICBjcmNWYWx1ZSA9IChj cmNWYWx1ZSA8PCAxKTsKKwl9CisKKyAgICAgIG5ld0J5dGUgPDw9IDE7Cisg ICAgfQorCisgIHJldHVybiBjcmNWYWx1ZTsKK30KKworaW50IG1haW4gKCkK K3sKKyAgdW5zaWduZWQgc2hvcnQgY3JjID0gMHgwRDgwOworICBmb3IgKHVu c2lnbmVkIGNoYXIgaSA9IDA7IGkgPCAyNTU7IGkrKykKKyAgICB7CisgICAg ICB1bnNpZ25lZCBzaG9ydCByZXMxID0gY3JjMTZfTzAgKGNyYywgaSk7Cisg ICAgICB1bnNpZ25lZCBzaG9ydCByZXMyID0gY3JjMTYgKGNyYywgaSk7Cisg ICAgICBpZiAocmVzMSAhPSByZXMyKQorCWFib3J0ICgpOworICAgICAgY3Jj ID0gcmVzMTsKKyAgICB9Cit9CisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVl LWR1bXAgImZ1bmN0aW9uIG1heWJlIGNvbnRhaW5zIENSQyBjYWxjdWxhdGlv bi4iICJjcmMifSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1 bXAgIkxvb3AgaXRlcmF0aW9uIG51bWJlciBpcyA3IiAiY3JjIn0gfSAqLwor LyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJCaXQgZm9yd2FyZCIg ImNyYyJ9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAi Y2FsY3VsYXRlcyBDUkMhIiAiY3JjIn0gfSAqLworLyogeyBkZy1maW5hbCB7 IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJDb3VsZG4ndCBnZW5lcmF0ZSBmYXN0 ZXIgQ1JDIGNvZGUuIiAwICJjcmMifSB9ICovClwgTm8gbmV3bGluZSBhdCBl bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcv dG9ydHVyZS9jcmMtMTQuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RvcnR1 cmUvY3JjLTE0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAuLmYxMTU4YTA5N2ZkCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rl c3RzdWl0ZS9nY2MuZGcvdG9ydHVyZS9jcmMtMTQuYwpAQCAtMCwwICsxLDU0 IEBACisvKiB7IGRnLWRvIHJ1biB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1m ZHVtcC10cmVlLWNyYy1kZXRhaWxzIiB9ICovCisKKyNpbmNsdWRlIDxzdGRs aWIuaD4KKwordHlwZWRlZiB1bnNpZ25lZCBjaGFyIHVpbnQ4X3Q7CisKK19f YXR0cmlidXRlX18gKChub2lubGluZSxvcHRpbWl6ZSgwKSkpCit1aW50OF90 IGdlbmNyY19PMCAodWludDhfdCAqZGF0YSkKK3sKKyAgdWludDhfdCBjcmMg PSAweGZmOworICBzaXplX3QgajsKKyAgY3JjIF49ICpkYXRhOworICBmb3Ig KGogPSAwOyBqIDwgODsgaisrKQorICAgIHsKKyAgICAgIGlmICgoY3JjICYg MHg4MCkgIT0gMCkKKwljcmMgPSAodWludDhfdCkgKChjcmMgPDwgMSkgXiAw eDMxKTsKKyAgICAgIGVsc2UKKwljcmMgPDw9IDE7CisgICAgfQorICByZXR1 cm4gY3JjOworfQorCit1aW50OF90IGdlbmNyYyAodWludDhfdCAqZGF0YSkK K3sKKyAgdWludDhfdCBjcmMgPSAweGZmOworICBzaXplX3QgajsKKyAgY3Jj IF49ICpkYXRhOworICBmb3IgKGogPSAwOyBqIDwgODsgaisrKQorICAgIHsK KyAgICAgIGlmICgoY3JjICYgMHg4MCkgIT0gMCkKKwljcmMgPSAodWludDhf dCkgKChjcmMgPDwgMSkgXiAweDMxKTsKKyAgICAgIGVsc2UKKwljcmMgPDw9 IDE7CisgICAgfQorICByZXR1cm4gY3JjOworfQorCitpbnQgbWFpbiAoKQor eworICBmb3IgKHVpbnQ4X3QgaSA9IDA7IGkgPCAyNTU7IGkrKykKKyAgICB7 CisgICAgICB1aW50OF90IHJlczEgPSBnZW5jcmNfTzAgKCZpKTsKKyAgICAg IHVpbnQ4X3QgcmVzMiA9IGdlbmNyYyAoJmkpOworICAgICAgaWYgKHJlczEg IT0gcmVzMikKKwlhYm9ydCAoKTsKKyAgICB9Cit9CisKKy8qIHsgZGctZmlu YWwgeyBzY2FuLXRyZWUtZHVtcCAiZ2VuY3JjIGZ1bmN0aW9uIG1heWJlIGNv bnRhaW5zIENSQyBjYWxjdWxhdGlvbi4iICJjcmMifSB9ICovCisvKiB7IGRn LWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgIkxvb3AgaXRlcmF0aW9uIG51bWJl ciBpcyA3IiAiY3JjIn0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJl ZS1kdW1wICJCaXQgZm9yd2FyZCIgImNyYyJ9IH0gKi8KKy8qIHsgZGctZmlu YWwgeyBzY2FuLXRyZWUtZHVtcCAiY2FsY3VsYXRlcyBDUkMhIiAiY3JjIn0g fSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJD b3VsZG4ndCBnZW5lcmF0ZSBmYXN0ZXIgQ1JDIGNvZGUuIiAwICJjcmMifSB9 ICovClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv Z2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdG9ydHVyZS9jcmMtMTUuYyBiL2djYy90 ZXN0c3VpdGUvZ2NjLmRnL3RvcnR1cmUvY3JjLTE1LmMKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjliMTYyNTNlYjBmCi0tLSAv ZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdG9ydHVyZS9j cmMtMTUuYwpAQCAtMCwwICsxLDMyIEBACisvKiB7IGRnLWRvIGNvbXBpbGUg fSAqLworLyogeyBkZy1vcHRpb25zICItdyAtZmR1bXAtdHJlZS1jcmMtZGV0 YWlscyIgfSAqLworLyogeyBkZy1za2lwLWlmICIiIHsgKi0qLSogfSB7ICIt TzAiICItTzEiICItT3MiICItZmx0byJ9IH0gKi8KKworLyogVGVzdCBmcm9t IGJ1c3lib3gsIHdlIGRvbid0IHZlcmlmeSBhcyBpdCBkZXBlbmRzIG9uIGVu ZGlhbiB2YXJpYWJsZS4gICovCisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5j bHVkZSA8c3RkbGliLmg+CisKK3VpbnQzMl90KiBjcmMzMl9maWxsdGFibGUo dWludDMyX3QgKmNyY190YWJsZSwgaW50IGVuZGlhbikKK3sKKyAgdWludDMy X3QgcG9seW5vbWlhbCA9IGVuZGlhbiA/IDB4MDRjMTFkYjcgOiAweGVkYjg4 MzIwOworICB1aW50MzJfdCBjOworICB1bnNpZ25lZCBpLCBqOworCisgIGlm ICghY3JjX3RhYmxlKQorICAgIGNyY190YWJsZSA9IG1hbGxvYyAoMjU2ICog c2l6ZW9mICh1aW50MzJfdCkpOworCisgIGZvciAoaSA9IDA7IGkgPCAyNTY7 IGkrKykKKyAgICB7CisgICAgICBjID0gZW5kaWFuID8gKGkgPDwgMjQpIDog aTsKKyAgICAgIGZvciAoaiA9IDg7IGo7IGotLSkKKwl7CisJICBpZiAoZW5k aWFuKQorCSAgICBjID0gKGMgJiAweDgwMDAwMDAwKSA/ICgoYyA8PCAxKSBe IHBvbHlub21pYWwpIDogKGMgPDwgMSk7CisJICBlbHNlCisJICAgIGMgPSAo YyAmIDEpID8gKChjID4+IDEpIF4gcG9seW5vbWlhbCkgOiAoYyA+PiAxKTsK Kwl9CisgICAgICAqY3JjX3RhYmxlKysgPSBjOworICAgIH0KKworICByZXR1 cm4gY3JjX3RhYmxlIC0gMjU2OworfQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3Rz dWl0ZS9nY2MuZGcvdG9ydHVyZS9jcmMtMTYuYyBiL2djYy90ZXN0c3VpdGUv Z2NjLmRnL3RvcnR1cmUvY3JjLTE2LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAuLjM1ZDU2NTEzNTVkCi0tLSAvZGV2L251bGwK KysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdG9ydHVyZS9jcmMtMTYuYwpA QCAtMCwwICsxLDQwIEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyog eyBkZy1vcHRpb25zICItZmR1bXAtdHJlZS1jcmMtZGV0YWlscyIgfSAqLwor LyogeyBkZy1za2lwLWlmICIiIHsgKi0qLSogfSB7ICItTzAiICItTzEiICIt T3MiICItZmx0byJ9IH0gKi8KKworLyogQSB0ZXN0IGZyb20gYnVzeWJveCAt IHdlIGRvbid0IHZlcmlmeSwgYXMgdW5zaWduZWQgaXMgdXNlZCBmb3IgdGhl CisgICJleHBlY3RlZCIgdmFyaWFibGUsIGJ1dCAxNi1iaXQgQ1JDIGlzIGNh bGN1bGF0ZWQuICBXZSB2ZXJpZnkgb25seSB0aG9zZSBjYXNlcworICB3aGVu IENSQyB2YXJpYWJsZSdzIHNpemUgYW5kIGNhbGN1bGF0ZWQgQ1JDIGFyZSBl cXVhbC4gSW4gdGhlIGFsZ29yaXRobSB3ZSBkb24ndAorICBjaGVjayB3aGV0 aGVyICJleHBlY3RlZCIgdmFyaWFibGUncyBvbmx5IGxvdyBoYWxmIGlzIHVz ZWQuICAqLworaW50IHJlY2VpdmUoLyppbnQgcmVhZF9mZCwgKi9pbnQgZmls ZV9mZCkKK3sKKyAgLyogSW5pdGlhbGl6YXRpb24gaXMgbm90IHRoZSBzYW1l IGFzIGluIEJ1c3lib3guICAqLworICB1bnNpZ25lZCBibG9ja0xlbmd0aCA9 IDEzOworICB1bnNpZ25lZCBjaGFyIGJsb2NrQnVmWzEwMjRdID0gInNnZGZz Z2Rmc2dkZnMiOworICBpbnQgY2tzdW1fb3JfY3JjID0gMHg0NTYxOworCisg IHVuc2lnbmVkIGV4cGVjdGVkOworICBpbnQgaSwgajsKKyAvKiAuLi4gKi8K KyAgZXhwZWN0ZWQgPSAwOworICAgICAgZm9yIChpID0gMDsgaSA8IGJsb2Nr TGVuZ3RoOyBpKyspCisJeworCSAgZXhwZWN0ZWQgPSBleHBlY3RlZCBeIGJs b2NrQnVmW2ldIDw8IDg7CisJICBmb3IgKGogPSAwOyBqIDwgODsgaisrKQor CSAgICB7CisJICAgICAgaWYgKGV4cGVjdGVkICYgMHg4MDAwKQorCQlleHBl Y3RlZCA9IChleHBlY3RlZCA8PCAxKSBeIDB4MTAyMTsKKwkgICAgICBlbHNl CisJCWV4cGVjdGVkID0gKGV4cGVjdGVkIDw8IDEpOworCSAgICB9CisJfQor ICAgICAgZXhwZWN0ZWQgJj0gMHhmZmZmOworCisgIGlmIChja3N1bV9vcl9j cmMgIT0gZXhwZWN0ZWQpIHsKKyAgICAgIC8qIC4uLiAqLworICAgICAgcmV0 dXJuIDE7IC8vIHdhcyAtIGdvdG8gdGltb3V0CisgICAgfQorCisgIC8qIC4u LiAqLworICByZXR1cm4gLTE7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg ZmlsZQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdG9ydHVy ZS9jcmMtMTcuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RvcnR1cmUvY3Jj LTE3LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAu LmQxYjM5ZjUxNzYyCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0 ZS9nY2MuZGcvdG9ydHVyZS9jcmMtMTcuYwpAQCAtMCwwICsxLDcyIEBACisv KiB7IGRnLWRvIHJ1biB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1mZHVtcC10 cmVlLWNyYy1kZXRhaWxzIiB9ICovCisvKiB7IGRnLXNraXAtaWYgIiIgeyAq LSotKiB9IHsgIi1PMCIgIi1PMSIgIi1PcyIgIi1mbHRvIn0gfSAqLworCisj aW5jbHVkZSA8c3RkbGliLmg+CisKK19fYXR0cmlidXRlX18gKChub2lubGlu ZSxvcHRpbWl6ZSgwKSkpCit1bnNpZ25lZCBzaG9ydCBjYWxjX2NyY19PMCAo dW5zaWduZWQgc2hvcnQgY3JjLCB1bnNpZ25lZCBjaGFyIGRhdGEpCit7Cisg dW5zaWduZWQgaW50IGksIGosIG9yZywgZHN0OworIG9yZyA9IGRhdGE7Cisg ZHN0ID0gMDsKKworIGZvciAoaSA9IDA7IGkgPCA4OyBpKyspIHsKKyAgb3Jn IDw8PSAxOworICBkc3QgPj49IDE7CisgIGlmIChvcmcgJiAweDEwMCkKKyAg IGRzdCB8PSAweDgwOworIH0KKyBkYXRhID0gKHVuc2lnbmVkIGNoYXIpIGRz dDsKKyBjcmMgXj0gKHVuc2lnbmVkIGludCkgZGF0YSA8PCAoMTYgLSA4KTsK KyBmb3IgKGogPSAwOyBqIDwgODsgaisrKSB7CisgIGlmIChjcmMgJiAweDgw MDBVKQorICAgY3JjID0gKGNyYyA8PCAxKSBeIDB4MTAyMVUgOworICBlbHNl CisgICBjcmMgPDw9IDEgOworIH0KKyByZXR1cm4gY3JjOworfQorCit1bnNp Z25lZCBzaG9ydCBjYWxjX2NyYyAodW5zaWduZWQgc2hvcnQgY3JjLCB1bnNp Z25lZCBjaGFyIGRhdGEpCit7CisgIHVuc2lnbmVkIGludCBpLCBqLCBvcmcs IGRzdDsKKyAgb3JnID0gZGF0YTsKKyAgZHN0ID0gMDsKKworICBmb3IgKGkg PSAwOyBpIDwgODsgaSsrKSB7CisgICAgICBvcmcgPDw9IDE7CisgICAgICBk c3QgPj49IDE7CisgICAgICBpZiAob3JnICYgMHgxMDApCisJZHN0IHw9IDB4 ODA7CisgICAgfQorICBkYXRhID0gKHVuc2lnbmVkIGNoYXIpIGRzdDsKKyAg Y3JjIF49ICh1bnNpZ25lZCBpbnQpIGRhdGEgPDwgKDE2IC0gOCk7CisgIGZv ciAoaiA9IDA7IGogPCA4OyBqKyspIHsKKyAgICAgIGlmIChjcmMgJiAweDgw MDBVKQorCWNyYyA9IChjcmMgPDwgMSkgXiAweDEwMjFVIDsKKyAgICAgIGVs c2UKKwljcmMgPDw9IDEgOworICAgIH0KKyAgcmV0dXJuIGNyYzsKK30KKwor CitpbnQgbWFpbiAoKQoreworICB1bnNpZ25lZCBzaG9ydCBjcmMgPSAweDBE ODA7CisgIGZvciAodW5zaWduZWQgY2hhciBpID0gMDsgaSA8IDI1NTsgaSsr KQorICAgIHsKKyAgICAgIHVuc2lnbmVkIHNob3J0IHJlczEgPSBjYWxjX2Ny Y19PMCAoY3JjLCBpKTsKKyAgICAgIHVuc2lnbmVkIHNob3J0IHJlczIgPSBj YWxjX2NyYyAoY3JjLCBpKTsKKyAgICAgIGlmIChyZXMxICE9IHJlczIpCisJ YWJvcnQgKCk7CisgICAgICBjcmMgPSByZXMxOworICAgIH0KK30KKy8qIHsg ZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAiY2FsY19jcmMgZnVuY3Rpb24g bWF5YmUgY29udGFpbnMgQ1JDIGNhbGN1bGF0aW9uLiIgImNyYyJ9IH0gKi8K Ky8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAiTG9vcCBpdGVyYXRp b24gbnVtYmVyIGlzIDciICJjcmMifSB9ICovCisvKiB7IGRnLWZpbmFsIHsg c2Nhbi10cmVlLWR1bXAgIkJpdCBmb3J3YXJkIiAiY3JjIn0gfSAqLworLyog eyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJQb2x5bm9taWFs J3MgdmFsdWUgaXMgXFxce1xbMCwgXF0qMSwgMCwgMCwgMCwgMCwgMCwgMCwg MSwgMCwgMCwgMCwgMCwgMVxcXH0iIDEgImNyYyJ9IH0gKi8KKy8qIHsgZGct ZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAiY2FsY3VsYXRlcyBDUkMhIiAiY3Jj In0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVz ICJDb3VsZG4ndCBnZW5lcmF0ZSBmYXN0ZXIgQ1JDIGNvZGUuIiAwICJjcmMi fSB9ICovClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0 IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdG9ydHVyZS9jcmMtMTguYyBiL2dj Yy90ZXN0c3VpdGUvZ2NjLmRnL3RvcnR1cmUvY3JjLTE4LmMKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmQ0MzgzMmY0ZTJmCi0t LSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdG9ydHVy ZS9jcmMtMTguYwpAQCAtMCwwICsxLDQyIEBACisvKiB7IGRnLWRvIHJ1biB9 ICovCisvKiB7IGRnLW9wdGlvbnMgIi1mZHVtcC10cmVlLWNyYy1kZXRhaWxz IiB9ICovCisvKiB7IGRnLXNraXAtaWYgIiIgeyAqLSotKiB9IHsgIi1PMCIg Ii1PMSIgIi1PcyIgIi1mbHRvIn0gfSAqLworCisjaW5jbHVkZSA8c3RkbGli Lmg+CisKK19fYXR0cmlidXRlX18gKChub2lubGluZSxvcHRpbWl6ZSgwKSkp Cit1bnNpZ25lZCBjaGFyIGNyYzhfTzAgKHVuc2lnbmVkIGNoYXIgdmFsdWUp Cit7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA4OyArK2kpIHsKKyAgICAg ICAgdmFsdWUgPSAodmFsdWUgJiAweDgwKSA/ICgodmFsdWUgPDwgMSkgXiAw eDMxKSA6ICh2YWx1ZSA8PCAxKTsKKyAgICB9CisKKyAgICByZXR1cm4gdmFs dWU7Cit9CisKK3Vuc2lnbmVkIGNoYXIgY3JjOCAodW5zaWduZWQgY2hhciB2 YWx1ZSkKK3sKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCA4OyArK2kpIHsKKyAg ICAgIHZhbHVlID0gKHZhbHVlICYgMHg4MCkgPyAoKHZhbHVlIDw8IDEpIF4g MHgzMSkgOiAodmFsdWUgPDwgMSk7CisgICAgfQorCisgIHJldHVybiB2YWx1 ZTsKK30KKworaW50IG1haW4gKCkKK3sKKyAgZm9yICh1bnNpZ25lZCBjaGFy IGkgPSAwOyBpIDwgMjU1OyBpKyspCisgICAgeworICAgICAgdW5zaWduZWQg Y2hhciByZXMxID0gY3JjOF9PMCAoaSk7CisgICAgICB1bnNpZ25lZCBjaGFy IHJlczIgPSBjcmM4IChpKTsKKyAgICAgIGlmIChyZXMxICE9IHJlczIpCisJ YWJvcnQgKCk7CisgICAgfQorfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10 cmVlLWR1bXAgImNyYzggZnVuY3Rpb24gbWF5YmUgY29udGFpbnMgQ1JDIGNh bGN1bGF0aW9uLiIgImNyYyJ9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2Fu LXRyZWUtZHVtcCAiTG9vcCBpdGVyYXRpb24gbnVtYmVyIGlzIDciICJjcmMi fSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgIkJpdCBm b3J3YXJkIiAiY3JjIn0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJl ZS1kdW1wICJQb2x5bm9taWFsJ3MgdmFsdWUgaXMgXFxce1xbMCwgXF0qMCwg MCwgMSwgMSwgMCwgMCwgMCwgMVxcXH0iICJjcmMifSB9ICovCisvKiB7IGRn LWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgImNhbGN1bGF0ZXMgQ1JDISIgImNy YyJ9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1l cyAiQ291bGRuJ3QgZ2VuZXJhdGUgZmFzdGVyIENSQyBjb2RlLiIgMCAiY3Jj In0gfSAqLwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp dCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RvcnR1cmUvY3JjLTE5LmMgYi9n Y2MvdGVzdHN1aXRlL2djYy5kZy90b3J0dXJlL2NyYy0xOS5jCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5mM2Q4NDFjNjJiZgot LS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RvcnR1 cmUvY3JjLTE5LmMKQEAgLTAsMCArMSwzMCBAQAorLyogeyBkZy1kbyBjb21w aWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLWZkdW1wLXRyZWUtY3JjLWRl dGFpbHMiIH0gKi8KKy8qIHsgZGctc2tpcC1pZiAiIiB7ICotKi0qIH0geyAi LU8wIiAiLU8xIiAiLU9zIiAiLU8zIiAiLWZsdG8ifSB9ICovCisKKyAjaW5j bHVkZSA8c3RkaW50Lmg+CisKKyB1aW50MzJfdCBjcmMyNF9yZXZlcnNlKHVp bnQzMl90IGNyYywgY29uc3QgdWludDhfdCAqZGF0YSwgdWludDhfdCBsZW4p CisgeworICAgdWludDMyX3Qgc3RhdGUgPSBjcmM7CisgICB1aW50OF90IGk7 CisKKyAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgeworICAgICAgIHVp bnQ4X3QgbiwgY3VyID0gZGF0YVtsZW4gLSBpIC0gMV07CisKKyAgICAgICBm b3IgKG4gPSAwOyBuIDwgODsgbisrKSB7CisJICAgaW50IHRvcF9iaXQgPSBz dGF0ZSA+PiAyMzsKKworCSAgIHN0YXRlID0gKHN0YXRlIDw8IDEpICYgMHhm ZmZmZmY7CisJICAgc3RhdGUgfD0gdG9wX2JpdCBeICgoY3VyID4+ICg3IC0g bikpICYgMSk7CisJICAgaWYgKHRvcF9iaXQpCisJICAgICBzdGF0ZSBePSAw eGI0YzAwMDsKKwkgfQorICAgICB9CisKKyAgIHJldHVybiBzdGF0ZTsKKyB9 CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAiY3JjMjRfcmV2 ZXJzZSBmdW5jdGlvbiBtYXliZSBjb250YWlucyBDUkMgY2FsY3VsYXRpb24u IiAiY3JjIn0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1w ICJMb29wIGl0ZXJhdGlvbiBudW1iZXIgaXMgNyIgImNyYyJ9IH0gKi8KKy8q IHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAiQml0IGZvcndhcmQiICJj cmMifSB9ICovCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy90 b3J0dXJlL2NyYy0yLmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy90b3J0dXJl L2NyYy0yLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAuLjEzOWZiNDlmYzA1Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3Rz dWl0ZS9nY2MuZGcvdG9ydHVyZS9jcmMtMi5jCkBAIC0wLDAgKzEsMjggQEAK Ky8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1m ZHVtcC10cmVlLWNyYy1kZXRhaWxzIiB9ICovCisvKiB7IGRnLXNraXAtaWYg IiIgeyAqLSotKiB9IHsgIi1PMCIgIi1PMSIgIi1PcyIgIi1mbHRvIn0gfSAq LworCisjZGVmaW5lIENSQzE2X0NDSVRUICAgICAweDEwMgorI2RlZmluZSBQ T0xZTk9NICAgICAgICAgQ1JDMTZfQ0NJVFQKKwordW5zaWduZWQgaW50IGNy YzE2ICh1bnNpZ25lZCBpbnQgY3JjVmFsdWUsIHVuc2lnbmVkIGNoYXIgbmV3 Qnl0ZSkgeworICAgIHVuc2lnbmVkIGNoYXIgaTsKKworICAgIGZvciAoaSA9 IDA7IGkgPCA4OyBpKyspIHsKKworICAgICAgICBpZiAoKChjcmNWYWx1ZSAm IDB4ODAwMCkgPj4gOCkgXiAobmV3Qnl0ZSAmIDB4ODApKSB7CisgICAgICAg ICAgICBjcmNWYWx1ZSA9IChjcmNWYWx1ZSA8PCAxKSBeIFBPTFlOT007Cisg ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBjcmNWYWx1ZSA9IChjcmNW YWx1ZSA8PCAxKTsKKyAgICAgICAgfQorCisgICAgICAgIG5ld0J5dGUgPDw9 IDE7CisgICAgfQorCisgICAgcmV0dXJuIGNyY1ZhbHVlOworfQorCisvKiB7 IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgImZ1bmN0aW9uIG1heWJlIGNv bnRhaW5zIENSQyBjYWxjdWxhdGlvbi4iICJjcmMifSB9ICovCisvKiB7IGRn LWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgIkxvb3AgaXRlcmF0aW9uIG51bWJl ciBpcyA3IiAiY3JjIn0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJl ZS1kdW1wICJCaXQgZm9yd2FyZCIgImNyYyJ9IH0gKi8KKy8qIHsgZGctZmlu YWwgeyBzY2FuLXRyZWUtZHVtcCAiUG9seW5vbWlhbCdzIHZhbHVlIGlzIFxc XHtcWzAsIFxdKjEsIDAsIDAsIDAsIDAsIDAsIDAsIDEsIDBcXFx9IiAiY3Jj IiB9IH0gKi8KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n aXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy90b3J0dXJlL2NyYy0yMC5jIGIv Z2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdG9ydHVyZS9jcmMtMjAuYwpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uOGJkMTA0NDU3NDUK LS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy90b3J0 dXJlL2NyYy0yMC5jCkBAIC0wLDAgKzEsMzkgQEAKKy8qIHsgZGctZG8gY29t cGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1mZHVtcC10cmVlLWNyYyIg fSAqLworLyogeyBkZy1za2lwLWlmICIiIHsgKi0qLSogfSB7ICItTzAiICIt TzEiICItT3MiICItZmx0byJ9IH0gKi8KKworLyogV2UgZG9uJ3QgZGV0ZWN0 IHRoaXMgY2FzZSwgYmVjYXVzZSB0aGVyZSBhcmUgbWFueSBjb25kaXRpb25h bCBicmFuY2hlcy4KKyAgICBFdmVuIGlmIHdlIGRldGVjdGVkIGl0IHdvbid0 IGJlIHZlcmlmaWVkLAorICAgIGJlY2F1c2Ugd2Ugd291bGQgZ2V0IG1vcmUg dGhhbiB0d28gZXhlY3V0aW9uIHBhdGhzIChzdGF0ZXMpLiAgKi8KKworI2lu Y2x1ZGUgPHN0ZGludC5oPgorCit0eXBlZGVmIHVpbnQ4X3QgYnl0ZTsKK2J5 dGUgQ29tcHV0ZV9DUkM4X1NpbXBsZV9PbmVCeXRlX1NoaWZ0UmVnIChieXRl IGJ5dGVWYWwpCit7CisgIGNvbnN0IGJ5dGUgZ2VuZXJhdG9yID0gMHgxRDsK KyAgYnl0ZSBjcmMgPSAwOyAvKiBpbml0IGNyYyByZWdpc3RlciB3aXRoIDAg Ki8KKyAgYnl0ZSBiID0gYnl0ZVZhbDsKKyAgZm9yIChpbnQgaSA9IDc7IGkg Pj0gMDsgaS0tKQorICAgIHsKKyAgICAgIC8qIGNoZWNrIGlmIE1TQiBpcyBz ZXQgKi8KKyAgICAgIGlmICgoY3JjICYgMHg4MCkgIT0gMCkKKwl7ICAgLyog TVNCIHNldCwgc2hpZnQgaXQgb3V0IG9mIHRoZSByZWdpc3RlciAqLworCSAg Y3JjID0gKGJ5dGUpIChjcmMgPDwgMSk7CisJICAvKiBzaGlmdCBpbiBuZXh0 IGJpdCBvZiBpbnB1dCBzdHJlYW06CisJICAgKiBJZiBpdCdzIDEsIHNldCBM U0Igb2YgY3JjIHRvIDEuCisJICAgKiBJZiBpdCdzIDAsIHNldCBMU0Igb2Yg Y3JjIHRvIDAuICovCisJICBjcmMgPSAoKGJ5dGUpIChiICYgKDEgPDwgaSkp ICE9IDApID8gKGJ5dGUpIChjcmMgfCAweDAxKQorCQkJCQkgICAgIDogKGJ5 dGUpIChjcmMgJiAweEZFKTsKKwkgIC8qIFBlcmZvcm0gdGhlICdkaXZpc2lv bicgYnkgWE9SaW5nIHRoZSBjcmMgcmVnaXN0ZXIgd2l0aCB0aGUgZ2VuZXJh dG9yIHBvbHlub21pYWwgKi8KKwkgIGNyYyA9IChieXRlKSAoY3JjIF4gZ2Vu ZXJhdG9yKTsKKwl9CisgICAgICBlbHNlCisJeyAgIC8qIE1TQiBub3Qgc2V0 LCBzaGlmdCBpdCBvdXQgYW5kIHNoaWZ0IGluIG5leHQgYml0IG9mIGlucHV0 IHN0cmVhbS4gU2FtZSBhcyBhYm92ZSwganVzdCBubyBkaXZpc2lvbiAqLwor CSAgY3JjID0gKGJ5dGUpIChjcmMgPDwgMSk7CisJICBjcmMgPSAoKGJ5dGUp IChiICYgKDEgPDwgaSkpICE9IDApID8gKGJ5dGUpIChjcmMgfCAweDAxKQor CQkJCQkgICAgIDogKGJ5dGUpIChjcmMgJiAweEZFKTsKKwl9CisgICAgfQor ICByZXR1cm4gY3JjOworfQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9n Y2MuZGcvdG9ydHVyZS9jcmMtMjEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRn L3RvcnR1cmUvY3JjLTIxLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAuLjI4ZTdlYTZhMzA1Ci0tLSAvZGV2L251bGwKKysrIGIv Z2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdG9ydHVyZS9jcmMtMjEuYwpAQCAtMCww ICsxLDUzIEBACisvKiB7IGRnLWRvIHJ1biB7IHRhcmdldCB7IGxwNjQgfSB9 IH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLWZkdW1wLXRyZWUtY3JjLWRldGFp bHMiIH0gKi8KKy8qIHsgZGctc2tpcC1pZiAiIiB7ICotKi0qIH0geyAiLU8w IiAiLU8xIiAiLU9zIiAiLWZsdG8ifSB9ICovCisKKyNpbmNsdWRlIDxzdGRp bnQuaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKworX19hdHRyaWJ1dGVfXyAo KG5vaW5saW5lLG9wdGltaXplKDApKSkKK3VpbnQzMl90IF9jcmMzMl9PMCAo dWludDMyX3QgY3JjLCB1aW50MzJfdCBkYXRhKSB7CisgIGludCBpOworICBj cmMgPSBjcmMgXiBkYXRhOworCisgIGZvciAoaSA9IDA7IGkgPCAzMjsgaSsr KSB7CisgICAgICBpZiAoY3JjICYgMHg4MDAwMDAwMCkKKwljcmMgPSAoY3Jj IDw8IDEpIF4gMHgwNEMxMURCNzsKKyAgICAgIGVsc2UKKwljcmMgPSAoY3Jj IDw8IDEpOworICAgIH0KKworICByZXR1cm4gY3JjOworfQorCit1aW50MzJf dCBfY3JjMzIgKHVpbnQzMl90IGNyYywgdWludDMyX3QgZGF0YSkgeworICBp bnQgaTsKKyAgY3JjID0gY3JjIF4gZGF0YTsKKworICBmb3IgKGkgPSAwOyBp IDwgMzI7IGkrKykgeworICAgICAgaWYgKGNyYyAmIDB4ODAwMDAwMDApCisJ Y3JjID0gKGNyYyA8PCAxKSBeIDB4MDRDMTFEQjc7CisgICAgICBlbHNlCisJ Y3JjID0gKGNyYyA8PCAxKTsKKyAgICB9CisKKyAgcmV0dXJuIGNyYzsKK30K KworaW50IG1haW4gKCkKK3sKKyAgdWludDMyX3QgY3JjID0gMHgwRDgwMEQ4 MDsKKyAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IDB4ZmY7IGkrKykKKyAg ICB7CisgICAgICB1aW50MzJfdCByZXMxID0gX2NyYzMyX08wIChjcmMsIGkp OworICAgICAgdWludDMyX3QgcmVzMiA9IF9jcmMzMiAoY3JjLCBpKTsKKyAg ICAgIGlmIChyZXMxICE9IHJlczIpCisJYWJvcnQgKCk7CisgICAgICBjcmMg PSByZXMxOworICAgIH0KK30KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUt ZHVtcCAiX2NyYzMyIGZ1bmN0aW9uIG1heWJlIGNvbnRhaW5zIENSQyBjYWxj dWxhdGlvbi4iICJjcmMifSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10 cmVlLWR1bXAgIkxvb3AgaXRlcmF0aW9uIG51bWJlciBpcyAzMSIgImNyYyJ9 IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAiQml0IGZv cndhcmQiICJjcmMifSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVl LWR1bXAgImNhbGN1bGF0ZXMgQ1JDLiIgImNyYyJ9IH0gKi8KKy8qIHsgZGct ZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAiQ291bGRuJ3QgZ2VuZXJh dGUgZmFzdGVyIENSQyBjb2RlLiIgMCAiY3JjIn0gfSAqLwpcIE5vIG5ld2xp bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUv Z2NjLmRnL3RvcnR1cmUvY3JjLTIyLmMgYi9nY2MvdGVzdHN1aXRlL2djYy5k Zy90b3J0dXJlL2NyYy0yMi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwLi5kOTY2NWRmYjI5ZQotLS0gL2Rldi9udWxsCisrKyBi L2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RvcnR1cmUvY3JjLTIyLmMKQEAgLTAs MCArMSw2NiBAQAorLyogeyBkZy1kbyBydW4gfSAqLworLyogeyBkZy1vcHRp b25zICItZmR1bXAtdHJlZS1jcmMtZGV0YWlscyIgfSAqLworLyogeyBkZy1z a2lwLWlmICIiIHsgKi0qLSogfSB7ICItTzAiICItTzEiICItZyIgIi1PcyIg Ii1mbHRvIn0gfSAqLworCisjaW5jbHVkZSA8c3RkbGliLmg+CisKK3R5cGVk ZWYgdW5zaWduZWQgc2hvcnQgZWVfdTE2OwordHlwZWRlZiB1bnNpZ25lZCBj aGFyIGVlX3U4OworCitfX2F0dHJpYnV0ZV9fICgobm9pbmxpbmUsb3B0aW1p emUoMCkpKQorZWVfdTE2IGNyY3UxNl9PMCAoZWVfdTE2IGRhdGEsIGVlX3Ux NiBjcmMpIHsKKyAgZWVfdTggaSA9IDAsIHgxNiA9IDAsIGNhcnJ5ID0gMDsK KyAgZm9yIChpID0gMDsgaSA8IDE2OyBpKyspIHsKKyAgICAgIHgxNiA9IChl ZV91OCkgKChkYXRhICYgMSkgXiAoKGVlX3U4KSBjcmMgJiAxKSk7CisgICAg ICBkYXRhID4+PSAxOworICAgICAgaWYgKHgxNiA9PSAxKSB7CisJICBjcmMg Xj0gMHg0MDAyOworCSAgY2FycnkgPSAxOworCX0gZWxzZQorCWNhcnJ5ID0g MDsKKyAgICAgIGNyYyA+Pj0gMTsKKyAgICAgIGlmIChjYXJyeSkKKwljcmMg fD0gMHg4MDAwOworICAgICAgZWxzZQorCWNyYyAmPSAweDdmZmY7CisgICAg fQorICByZXR1cm4gY3JjOworfQorCitlZV91MTYgY3JjdTE2IChlZV91MTYg ZGF0YSwgZWVfdTE2IGNyYykgeworICBlZV91OCBpID0gMCwgeDE2ID0gMCwg Y2FycnkgPSAwOworICBmb3IgKGkgPSAwOyBpIDwgMTY7IGkrKykgeworICAg ICAgeDE2ID0gKGVlX3U4KSAoKGRhdGEgJiAxKSBeICgoZWVfdTgpIGNyYyAm IDEpKTsKKyAgICAgIGRhdGEgPj49IDE7CisgICAgICBpZiAoeDE2ID09IDEp IHsKKwkgIGNyYyBePSAweDQwMDI7CisJICBjYXJyeSA9IDE7CisJfSBlbHNl CisJY2FycnkgPSAwOworICAgICAgY3JjID4+PSAxOworICAgICAgaWYgKGNh cnJ5KQorCWNyYyB8PSAweDgwMDA7CisgICAgICBlbHNlCisJY3JjICY9IDB4 N2ZmZjsKKyAgICB9CisgIHJldHVybiBjcmM7Cit9CisKK2ludCBtYWluICgp Cit7CisgIGVlX3UxNiBjcmMgPSAweDBEODA7CisgIGZvciAoZWVfdTE2IGkg PSAwOyBpIDwgMjU1OyBpKyspCisgICAgeworICAgICAgZWVfdTE2IHJlczEg PSBjcmN1MTZfTzAgKGksIGNyYyk7CisgICAgICBlZV91MTYgcmVzMiA9IGNy Y3UxNiAoaSwgY3JjKTsKKyAgICAgIGlmIChyZXMxICE9IHJlczIpCisJYWJv cnQgKCk7CisgICAgICBjcmMgPSByZXMxOworICAgIH0KK30KKworLyogeyBk Zy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJmdW5jdGlvbiBtYXliZSBjb250 YWlucyBDUkMgY2FsY3VsYXRpb24uIiAiY3JjIn0gfSAqLworLyogeyBkZy1m aW5hbCB7IHNjYW4tdHJlZS1kdW1wICJMb29wIGl0ZXJhdGlvbiBudW1iZXIg aXMgMTUiICJjcmMifSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVl LWR1bXAgIkJpdCByZXZlcnNlZCIgImNyYyJ9IH0gKi8KKy8qIHsgZGctZmlu YWwgeyBzY2FuLXRyZWUtZHVtcCAiY2FsY3VsYXRlcyBDUkMhIiAiY3JjIn0g fSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJD b3VsZG4ndCBnZW5lcmF0ZSBmYXN0ZXIgQ1JDIGNvZGUuIiAwICJjcmMifSB9 ICovClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv Z2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdG9ydHVyZS9jcmMtMjMuYyBiL2djYy90 ZXN0c3VpdGUvZ2NjLmRnL3RvcnR1cmUvY3JjLTIzLmMKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjRiOTYwZTY0ZjkwCi0tLSAv ZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdG9ydHVyZS9j cmMtMjMuYwpAQCAtMCwwICsxLDc0IEBACisvKiB7IGRnLWRvIHJ1biB9ICov CisvKiB7IGRnLW9wdGlvbnMgIi1mZHVtcC10cmVlLWNyYy1kZXRhaWxzIC1m dHJlZS1jc2VsaW0iIH0gKi8KKy8qIHsgZGctc2tpcC1pZiAiIiB7ICotKi0q IH0geyAiLU8wIiAiLU8xIiAiLWciICItT3MiICItZmx0byJ9IH0gKi8KKwor Ly8gTW9kaWZpZWQgZXhhbXBsZSBmcm9tIGNyYy1mcm9tLWZlZG9yYS1wYWNr YWdlcy0yNC5jCisKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRlIDxz dGRsaWIuaD4KKworX19hdHRyaWJ1dGVfXyAoKG5vaW5saW5lLG9wdGltaXpl KDApKSkKK3ZvaWQgY3JjX2J5dGVfTzAgKGNvbnN0IGNoYXIgZGF0YSwgdWlu dDE2X3QgKmNyYzE2KQoreworICBpbnQgazsKKyAgdWludDE2X3QgYyxkIDsK KworICBjID0gZGF0YSA8PCA4IDsKKyAgZCA9IGM7CisKKyAgZm9yIChrID0g MDsgayA8IDE2OyBrKyspIHsKKyAgICAgICpjcmMxNiA9IChjICYgMHg4MDAw KSBeICpjcmMxNjsKKworICAgICAgaWYgKCpjcmMxNiAmIDB4ODAwMCkgewor CSAgKmNyYzE2ID0gKmNyYzE2IDw8IDE7CisJICAqY3JjMTYgPSAqY3JjMTYg XiAweDgwMDU7CisJfSBlbHNlCisJKmNyYzE2ID0gKmNyYzE2IDw8IDE7CisK KyAgICAgIGQgPSBkIDw8IDE7CisgICAgICBjID0gZDsKKyAgICB9Cit9CisK K3ZvaWQgY3JjX2J5dGUgKGNvbnN0IGNoYXIgZGF0YSwgdWludDE2X3QgKmNy YzE2KQoreworICBpbnQgazsKKyAgdWludDE2X3QgYyxkIDsKKworICBjID0g ZGF0YSA8PCA4IDsKKyAgZCA9IGM7CisKKyAgZm9yIChrID0gMDsgayA8IDE2 OyBrKyspIHsKKyAgICAgICpjcmMxNiA9IChjICYgMHg4MDAwKSBeICpjcmMx NjsKKworICAgICAgaWYgKCpjcmMxNiAmIDB4ODAwMCkgeworCSAgKmNyYzE2 ID0gKmNyYzE2IDw8IDE7CisJICAqY3JjMTYgPSAqY3JjMTYgXiAweDgwMDU7 CisJfSBlbHNlCisJKmNyYzE2ID0gKmNyYzE2IDw8IDE7CisKKyAgICAgIGQg PSBkIDw8IDE7CisgICAgICBjID0gZDsKKyAgICB9Cit9CisKK2ludCBtYWlu ICgpCit7CisgIHVpbnQxNl90IGNyYyA9IDB4MEQ4MDsKKyAgZm9yIChjaGFy IGkgPSAwOyBpIDwgMTI3OyBpKyspCisgICAgeworICAgICAgdWludDE2X3Qg cmVzMSA9IGNyYywgcmVzMiA9IGNyYzsKKyAgICAgIGNyY19ieXRlX08wIChp LCAmcmVzMSk7CisgICAgICBjcmNfYnl0ZSAoaSwgJnJlczIpOworCisgICAg ICBpZiAocmVzMSAhPSByZXMyKQorCWFib3J0ICgpOworICAgICAgY3JjID0g cmVzMTsKKyAgICB9Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUt ZHVtcCAiZnVuY3Rpb24gbWF5YmUgY29udGFpbnMgQ1JDIGNhbGN1bGF0aW9u LiIgImNyYyJ9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVt cCAiTG9vcCBpdGVyYXRpb24gbnVtYmVyIGlzIDE1IiAiY3JjIn0gfSAqLwor LyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJCaXQgZm9yd2FyZCIg ImNyYyJ9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAi Y2FsY3VsYXRlcyBDUkMhIiAiY3JjIn0gfSAqLworLyogeyBkZy1maW5hbCB7 IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJDb3VsZG4ndCBnZW5lcmF0ZSBmYXN0 ZXIgQ1JDIGNvZGUuIiAwICJjcmMifSB9ICovClwgTm8gbmV3bGluZSBhdCBl bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcv dG9ydHVyZS9jcmMtMjQuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RvcnR1 cmUvY3JjLTI0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAuLjI4ODUzNmRmZjdiCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rl c3RzdWl0ZS9nY2MuZGcvdG9ydHVyZS9jcmMtMjQuYwpAQCAtMCwwICsxLDMw IEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25z ICItZmR1bXAtdHJlZS1jcmMiIH0gKi8KKy8qIHsgZGctc2tpcC1pZiAiIiB7 ICotKi0qIH0geyAiLU8wIiAiLU8xIiAiLU9zIiAiLWZsdG8ifSB9ICovCisK Ky8vIE1vZGlmaWVkIENvcmVtYXJrIHRlc3QsIHdlIGRvbid0IGRldGVjdC4K KworI2luY2x1ZGUgPHN0ZGludC5oPgorCit1aW50MTZfdCBub3RfY3JjdTgg KHVpbnQxNl90IGRhdGEsIHVpbnQxNl90IGNyYykKK3sKKyAgdWludDE2X3Qg aSA9IDAsIGNhcnJ5ID0gMDsKKyAgZm9yIChpID0gMDsgaSA8IDE2OyBpKysp CisgICAgeworICAgICAgaWYgKCgoKGNyYyAmIDEpID09IDEpICYmICgoZGF0 YSAmIDEpID09IDApKQorCSAgfHwgKCgoY3JjICYgMSkgPT0gMCkgJiYgKGRh dGEgJiAxKSA9PSAxKSkKKwl7CisJICBjcmMgXj0gMHg0MDAyOworCSAgY2Fy cnkgPSAxOworCX0KKyAgICAgIGVsc2UKKwljYXJyeSA9IDA7CisgICAgICBj cmMgPj49IDE7CisgICAgICBkYXRhID4+PSAxOworICAgICAgaWYgKGNhcnJ5 KQorCWNyYyB8PSAweDgwMDA7CisgICAgICBlbHNlCisJY3JjICY9IDB4N2Zm ZjsKKyAgICB9CisgIHJldHVybiBjcmM7Cit9ClwgTm8gbmV3bGluZSBhdCBl bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcv dG9ydHVyZS9jcmMtMjUuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RvcnR1 cmUvY3JjLTI1LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAuLmU0MWQ5NWU1NGZhCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rl c3RzdWl0ZS9nY2MuZGcvdG9ydHVyZS9jcmMtMjUuYwpAQCAtMCwwICsxLDc4 IEBACisvKiB7IGRnLWRvIHJ1biB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1m ZHVtcC10cmVlLWNyYy1kZXRhaWxzIiB9ICovCisvKiB7IGRnLXNraXAtaWYg IiIgeyAqLSotKiB9IHsgIi1PMCIgIi1PMSIgIi1nIiAiLU9zIiAiLWZ1bnJv bGwtbG9vcHMiICItZnBlZWwtbG9vcHMiICItZmx0byJ9IH0gKi8KKworLy9U ZXN0IGZyb20gcm9tcy91LWJvb3Qtc2FtNDYwZXgvZHJpdmVycy9uZXQvbXBj NTEyeF9mZWMuYyhmc2xfbWNkbWFmZWMuYykKKworI2luY2x1ZGUgPHN0ZGlu dC5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorCit0eXBlZGVmIHVpbnQ4X3Qg dTg7Cit0eXBlZGVmIHVpbnQzMl90IHUzMjsKKworX19hdHRyaWJ1dGVfXyAo KG5vaW5saW5lLG9wdGltaXplKDApKSkKK3UzMiBtcGM1MTJ4X2ZlY19zZXRf aHdhZGRyX08wICh1bnNpZ25lZCBjaGFyICptYWMpCit7CisgIHU4IGN1cnJC eXRlOyAgICAgICAgICAgICAgICAgICAgLyogYnl0ZSBmb3Igd2hpY2ggdG8g Y29tcHV0ZSB0aGUgQ1JDICovCisgIGludCBieXRlOyAgICAgICAgICAgICAg ICAgICAgICAgLyogbG9vcCAtIGNvdW50ZXIgKi8KKyAgaW50IGJpdDsgICAg ICAgICAgICAgICAgICAgICAgICAvKiBsb29wIC0gY291bnRlciAqLworICB1 MzIgY3JjID0gMHhmZmZmZmZmZjsgICAgICAgICAgIC8qIGluaXRpYWwgdmFs dWUgKi8KKworICBmb3IgKGJ5dGUgPSAwOyBieXRlIDwgNjsgYnl0ZSsrKSB7 CisgICAgICBjdXJyQnl0ZSA9IG1hY1tieXRlXTsKKyAgICAgIGZvciAoYml0 ID0gMDsgYml0IDwgODsgYml0KyspIHsKKwkgIGlmICgoY3VyckJ5dGUgJiAw eDAxKSBeIChjcmMgJiAweDAxKSkgeworCSAgICAgIGNyYyA+Pj0gMTsKKwkg ICAgICBjcmMgPSBjcmMgXiAweGVkYjg4MzIwOworCSAgICB9IGVsc2Ugewor CSAgICAgIGNyYyA+Pj0gMTsKKwkgICAgfQorCSAgY3VyckJ5dGUgPj49IDE7 CisJfQorICAgIH0KKworICBjcmMgPSBjcmMgPj4gMjY7CisgIHJldHVybiBj cmM7Cit9CisKK3UzMiBtcGM1MTJ4X2ZlY19zZXRfaHdhZGRyICh1bnNpZ25l ZCBjaGFyICptYWMpCit7CisgIHU4IGN1cnJCeXRlOyAgICAgICAgICAgICAg ICAgICAgLyogYnl0ZSBmb3Igd2hpY2ggdG8gY29tcHV0ZSB0aGUgQ1JDICov CisgIGludCBieXRlOyAgICAgICAgICAgICAgICAgICAgICAgLyogbG9vcCAt IGNvdW50ZXIgKi8KKyAgaW50IGJpdDsgICAgICAgICAgICAgICAgICAgICAg ICAvKiBsb29wIC0gY291bnRlciAqLworICB1MzIgY3JjID0gMHhmZmZmZmZm ZjsgICAgICAgICAgIC8qIGluaXRpYWwgdmFsdWUgKi8KKworICBmb3IgKGJ5 dGUgPSAwOyBieXRlIDwgNjsgYnl0ZSsrKSB7CisgICAgICBjdXJyQnl0ZSA9 IG1hY1tieXRlXTsKKyAgICAgIGZvciAoYml0ID0gMDsgYml0IDwgODsgYml0 KyspIHsKKwkgIGlmICgoY3VyckJ5dGUgJiAweDAxKSBeIChjcmMgJiAweDAx KSkgeworCSAgICAgIGNyYyA+Pj0gMTsKKwkgICAgICBjcmMgPSBjcmMgXiAw eGVkYjg4MzIwOworCSAgICB9IGVsc2UgeworCSAgICAgIGNyYyA+Pj0gMTsK KwkgICAgfQorCSAgY3VyckJ5dGUgPj49IDE7CisJfQorICAgIH0KKworICBj cmMgPSBjcmMgPj4gMjY7CisgIHJldHVybiBjcmM7Cit9CisKK2ludCBtYWlu ICgpCit7CisgIHVuc2lnbmVkIGNoYXIgc3RbNl0gPSAiSGVsbG8iOworICBm b3IgKHVuc2lnbmVkIGNoYXIgaSA9IDA7IGkgPCAyNTU7IGkrKykKKyAgICB7 CisgICAgICBzdFswXSA9IGk7CisgICAgICB1MzIgcmVzMSA9IG1wYzUxMnhf ZmVjX3NldF9od2FkZHJfTzAgKHN0KTsKKyAgICAgIHUzMiByZXMyID0gbXBj NTEyeF9mZWNfc2V0X2h3YWRkciAoc3QpOworICAgICAgaWYgKHJlczEgIT0g cmVzMikKKwlhYm9ydCAoKTsKKyAgICB9Cit9CisvKiB7IGRnLWZpbmFsIHsg c2Nhbi10cmVlLWR1bXAgImZ1bmN0aW9uIG1heWJlIGNvbnRhaW5zIENSQyBj YWxjdWxhdGlvbi4iICJjcmMifSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nh bi10cmVlLWR1bXAgIkxvb3AgaXRlcmF0aW9uIG51bWJlciBpcyA3IiAiY3Jj In0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJCaXQg cmV2ZXJzZWQiICJjcmMifSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10 cmVlLWR1bXAgImNhbGN1bGF0ZXMgQ1JDISIgImNyYyJ9IH0gKi8KKy8qIHsg ZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAiQ291bGRuJ3QgZ2Vu ZXJhdGUgZmFzdGVyIENSQyBjb2RlLiIgMCAiY3JjIn0gfSAqLwpcIE5vIG5l d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3Vp dGUvZ2NjLmRnL3RvcnR1cmUvY3JjLTI2LmMgYi9nY2MvdGVzdHN1aXRlL2dj Yy5kZy90b3J0dXJlL2NyYy0yNi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwLi45YzU0Y2YwOGVkYgotLS0gL2Rldi9udWxsCisr KyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RvcnR1cmUvY3JjLTI2LmMKQEAg LTAsMCArMSw1NSBAQAorLyogeyBkZy1kbyBydW4gfSAqLworLyogeyBkZy1v cHRpb25zICItZmR1bXAtdHJlZS1jcmMtZGV0YWlscyIgfSAqLworLyogeyBk Zy1za2lwLWlmICIiIHsgKi0qLSogfSB7ICItTzAiICItTzEiICItZyIgIi1P cyIgIi1mdW5yb2xsLWxvb3BzIiAiLWZwZWVsLWxvb3BzIiAgIi1mbHRvIn0g fSAqLworCisvL1Rlc3QgZnJvbSByb21zL3UtYm9vdC1zYW00NjBleC9kcml2 ZXJzL210ZC91YmkvY3JjMzIuYworI2luY2x1ZGUgPHN0ZGludC5oPgorI2lu Y2x1ZGUgPHN0ZGxpYi5oPgorCit0eXBlZGVmIHVpbnQ4X3QgdTg7Cit0eXBl ZGVmIHVpbnQzMl90IHUzMjsKKyNkZWZpbmUgQ1JDUE9MWV9MRSAweGVkYjg4 MzIwCisKK19fYXR0cmlidXRlX18gKChub2lubGluZSxvcHRpbWl6ZSgwKSkp Cit1MzIgY3JjMzJfbGVfTzAgKHUzMiBjcmMsIHVuc2lnbmVkIGNoYXIgY29u c3QgKnAsIHNpemVfdCBsZW4pCit7CisgIGludCBpOworICB3aGlsZSAobGVu LS0pIHsKKyAgICAgIGNyYyBePSAqcCsrOworICAgICAgZm9yIChpID0gMDsg aSA8IDg7IGkrKykKKwljcmMgPSAoY3JjID4+IDEpIF4gKChjcmMgJiAxKSA/ IENSQ1BPTFlfTEUgOiAwKTsKKyAgICB9CisgIHJldHVybiBjcmM7Cit9CisK K3UzMiBjcmMzMl9sZSAodTMyIGNyYywgdW5zaWduZWQgY2hhciBjb25zdCAq cCwgc2l6ZV90IGxlbikKK3sKKyAgaW50IGk7CisgIHdoaWxlIChsZW4tLSkg eworICAgICAgY3JjIF49ICpwKys7CisgICAgICBmb3IgKGkgPSAwOyBpIDwg ODsgaSsrKQorCWNyYyA9IChjcmMgPj4gMSkgXiAoKGNyYyAmIDEpID8gQ1JD UE9MWV9MRSA6IDApOworICAgIH0KKyAgcmV0dXJuIGNyYzsKK30KKworCitp bnQgbWFpbiAoKQoreworICB1MzIgY3JjID0gMHgwRDgwMEQ4MDsKKyAgdW5z aWduZWQgY2hhciBzdFsyXSA9IHsnSCcsJ2knfTsKKyAgZm9yICh1bnNpZ25l ZCBjaGFyIGkgPSAwOyBpIDwgMjU1OyBpKyspCisgICAgeworICAgICAgc3Rb MF0gPSBpOworICAgICAgdTMyIHJlczEgPSBjcmMzMl9sZV9PMCAoY3JjLCBz dCwgMik7CisgICAgICB1MzIgcmVzMiA9IGNyYzMyX2xlIChjcmMsIHN0LCAy KTsKKyAgICAgIGlmIChyZXMxICE9IHJlczIpCisJYWJvcnQgKCk7CisgICAg ICBjcmMgPSByZXMxOworICAgIH0KK30KKy8qIHsgZGctZmluYWwgeyBzY2Fu LXRyZWUtZHVtcCAiZnVuY3Rpb24gbWF5YmUgY29udGFpbnMgQ1JDIGNhbGN1 bGF0aW9uLiIgImNyYyJ9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRy ZWUtZHVtcCAiTG9vcCBpdGVyYXRpb24gbnVtYmVyIGlzIDciICJjcmMifSB9 ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgIkJpdCByZXZl cnNlZCIgImNyYyJ9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUt ZHVtcCAiY2FsY3VsYXRlcyBDUkMhIiAiY3JjIn0gfSAqLworLyogeyBkZy1m aW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJDb3VsZG4ndCBnZW5lcmF0 ZSBmYXN0ZXIgQ1JDIGNvZGUuIiAwICJjcmMifSB9ICovClwgTm8gbmV3bGlu ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9n Y2MuZGcvdG9ydHVyZS9jcmMtMjcuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRn L3RvcnR1cmUvY3JjLTI3LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAuLjg2ZjYzM2VlNzA2Ci0tLSAvZGV2L251bGwKKysrIGIv Z2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdG9ydHVyZS9jcmMtMjcuYwpAQCAtMCww ICsxLDI3IEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1v cHRpb25zICItZmR1bXAtdHJlZS1jcmMtZGV0YWlscyIgfSAqLworLyogeyBk Zy1za2lwLWlmICIiIHsgKi0qLSogfSB7ICItTzAiICItTzEiICItT3MiICIt Zmx0byJ9IH0gKi8KKworLy8gVGVzdCBmcm9tIHJvbXMvaXB4ZS9zcmMvdXRp bC96YmluLmMKKy8vIFdlIGRvbid0IGRldGVjdCB0aGlzIGNhc2UsIGFzIHNl Y29uZCBvcGVyYW5kIG9mIHRoZSB4b3IgaXMgYSB2YXJpYWJsZS4KKworI2lu Y2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPHN0ZGRlZi5oPgorCisjZGVm aW5lIENSQ1BPTFkgMHhlZGI4ODMyMAorI2RlZmluZSBDUkNTRUVEIDB4ZmZm ZmZmZmYKKwordWludDMyX3QgY3JjMzJfbGUgKCB1aW50MzJfdCBjcmMsIGNv bnN0IHZvaWQgKmRhdGEsIHNpemVfdCBsZW4gKSB7CisgIGNvbnN0IHVpbnQ4 X3QgKnNyYyA9IGRhdGE7CisgIHVpbnQzMl90IG11bHQ7CisgIHVuc2lnbmVk IGludCBpOworCisgIHdoaWxlICggbGVuLS0gKSB7CisgICAgICBjcmMgXj0g KihzcmMrKyk7CisgICAgICBmb3IgKCBpID0gMCA7IGkgPCA4IDsgaSsrICkg eworCSAgbXVsdCA9ICggKCBjcmMgJiAxICkgPyBDUkNQT0xZIDogMCApOwor CSAgY3JjID0gKCAoIGNyYyA+PiAxICkgXiBtdWx0ICk7CisJfQorICAgIH0K KyAgcmV0dXJuIGNyYzsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy90b3J0dXJlL2Ny Yy0yOC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdG9ydHVyZS9jcmMtMjgu YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZTU0 OWYyNzk5MjYKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2dj Yy5kZy90b3J0dXJlL2NyYy0yOC5jCkBAIC0wLDAgKzEsOTAgQEAKKy8qIHsg ZGctZG8gcnVuIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLWZkdW1wLXRyZWUt Y3JjLWRldGFpbHMiIH0gKi8KKy8qIHsgZGctc2tpcC1pZiAiIiB7ICotKi0q IH0geyAiLU8wIiAiLU8xIiAiLWciICItT3MiICItZnVucm9sbC1sb29wcyIg Ii1mcGVlbC1sb29wcyIgIi1mbHRvIn0gfSAqLworCisvLyBUZXN0IGZyb20g cm9tcy91LWJvb3QvZHJpdmVycy9yYW0vb2N0ZW9uL2RpbW1fc3BkX2VlcHJv bS5jCisKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRlIDxzdGRsaWIu aD4KKwordHlwZWRlZiB1aW50OF90IHU4OwordHlwZWRlZiB1aW50MTZfdCB1 MTY7CisKKy8vIFdlIGRvbid0IHZlcmlmeSBhcyBjcmMgaXMgb2YgdHlwZSBp bnQgKDMyIGJpdCksCisvLyBidXQgdGhlIHBvbHlub21pYWwgZml0cyBpbnRv IDE2IGJpdC4KK3UxNiBkZHIzX2NyYzE2X29yaWcgKHU4ICpwdHIsIGludCBj b3VudCkKK3sKKyAgLyogRnJvbSBERFIzIFNQRCBzcGVjaWZpY2F0aW9uICov CisgIGludCBjcmMsIGk7CisKKyAgY3JjID0gMDsKKyAgd2hpbGUgKC0tY291 bnQgPj0gMCkgeworICAgICAgY3JjID0gY3JjIF4gKGludCkqcHRyKysgPDwg ODsKKyAgICAgIGZvciAoaSA9IDA7IGkgPCA4OyArK2kpIHsKKwkgIGlmIChj cmMgJiAweDgwMDApCisJICAgIGNyYyA9IGNyYyA8PCAxIF4gMHgxMDIxOwor CSAgZWxzZQorCSAgICBjcmMgPSBjcmMgPDwgMTsKKwl9CisgICAgfQorCisg IHJldHVybiAoY3JjICYgMHhGRkZGKTsKK30KKworX19hdHRyaWJ1dGVfXyAo KG5vaW5saW5lLG9wdGltaXplKDApKSkKK3UxNiBkZHIzX2NyYzE2X21vZGlm aWVkX08wICAodTggKnB0ciwgaW50IGNvdW50KQoreworICAvKiBGcm9tIERE UjMgU1BEIHNwZWNpZmljYXRpb24gKi8KKyAgdTE2IGNyYywgaTsKKworICBj cmMgPSAwOworICB3aGlsZSAoLS1jb3VudCA+PSAwKSB7CisgICAgICBjcmMg PSBjcmMgXiAoaW50KSpwdHIrKyA8PCA4OworICAgICAgZm9yIChpID0gMDsg aSA8IDg7ICsraSkgeworCSAgaWYgKGNyYyAmIDB4ODAwMCkKKwkgICAgY3Jj ID0gY3JjIDw8IDEgXiAweDEwMjE7CisJICBlbHNlCisJICAgIGNyYyA9IGNy YyA8PCAxOworCX0KKyAgICB9CisKKyAgcmV0dXJuIChjcmMgJiAweEZGRkYp OworfQorCit1MTYgZGRyM19jcmMxNl9tb2RpZmllZCAgKHU4ICpwdHIsIGlu dCBjb3VudCkKK3sKKyAgLyogRnJvbSBERFIzIFNQRCBzcGVjaWZpY2F0aW9u ICovCisgIHUxNiBjcmMsIGk7CisKKyAgY3JjID0gMDsKKyAgd2hpbGUgKC0t Y291bnQgPj0gMCkgeworICAgICAgY3JjID0gY3JjIF4gKGludCkqcHRyKysg PDwgODsKKyAgICAgIGZvciAoaSA9IDA7IGkgPCA4OyArK2kpIHsKKwkgIGlm IChjcmMgJiAweDgwMDApCisJICAgIGNyYyA9IGNyYyA8PCAxIF4gMHgxMDIx OworCSAgZWxzZQorCSAgICBjcmMgPSBjcmMgPDwgMTsKKwl9CisgICAgfQor CisgIHJldHVybiAoY3JjICYgMHhGRkZGKTsKK30KKworaW50IG1haW4gKCkK K3sKKyAgdTggc3RbMl0gPSB7J0gnLCAnaSd9OworICBmb3IgKHU4IGkgPSAw OyBpIDwgMjU1OyBpKyspCisgICAgeworICAgICAgc3RbMF0gPSBpOworICAg ICAgdTE2IHJlczEgPSBkZHIzX2NyYzE2X21vZGlmaWVkX08wIChzdCwgMik7 CisgICAgICB1MTYgcmVzMiA9IGRkcjNfY3JjMTZfbW9kaWZpZWQgKHN0LCAy KTsKKyAgICAgIGlmIChyZXMxICE9IHJlczIpCisJYWJvcnQgKCk7CisgICAg fQorfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgImZ1bmN0 aW9uIG1heWJlIGNvbnRhaW5zIENSQyBjYWxjdWxhdGlvbi4iICJjcmMifSB9 ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgIkxvb3AgaXRl cmF0aW9uIG51bWJlciBpcyA3IiAiY3JjIn0gfSAqLworLyogeyBkZy1maW5h bCB7IHNjYW4tdHJlZS1kdW1wICJCaXQgZm9yd2FyZCIgImNyYyJ9IH0gKi8K Ky8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAiY2FsY3VsYXRlcyBD UkMhIiAiY3JjIn0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1k dW1wLXRpbWVzICJDb3VsZG4ndCBnZW5lcmF0ZSBmYXN0ZXIgQ1JDIGNvZGUu IiAwICJjcmMifSB9ICovClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk aWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdG9ydHVyZS9jcmMt MjkuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RvcnR1cmUvY3JjLTI5LmMK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjg2YmI2 ODFjMGNlCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2Mu ZGcvdG9ydHVyZS9jcmMtMjkuYwpAQCAtMCwwICsxLDMxIEBACisvKiB7IGRn LWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItZmR1bXAtdHJl ZS1jcmMtZGV0YWlscyIgfSAqLworLyogeyBkZy1za2lwLWlmICIiIHsgKi0q LSogfSB7ICItTzAiICItTzEiICItZyIgIi1PcyIgIi1mbHRvIn0gfSAqLwor CisvKiBUaGlzIGlzIGEgQ1JDLCBldmVuIHRob3VnaCBpdCBtYXkgc2VlbSBp dCdzIG5vdC4KKyAgICdqJyBpcyBpbml0aWFsaXplZCB3aXRoIDQgKDEwMCkg YW5kIGluY3JlYXNlZCBieSAyIGVhY2ggdGltZS4KKyAgIFRodXMsIGZpcnN0 IGJpdCB2YWx1ZSBpcyBuZXZlciAxLiBGb3IgZWFjaCBpdGVyYXRpb24gJ2og JiAxJyB5aWVsZHMgMCwKKyAgIGFuZCBpdCBkb2Vzbid0IGFmZmVjdCB0aGUg Q1JDIHJlc3VsdC4gICovCisKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKwordWlu dDE2X3QgY3JjICh1aW50OF90IGRhdGEsIHVpbnQxNl90IGNyYykgeworICB1 aW50OF90IHgxNiA9IDAsIGNhcnJ5ID0gMDsKKyAgZm9yICh1aW50OF90IGkg PSAwLCBqPTQ7IGkgPCA4OyBpKyssIGorPTIpIHsKKyAgICAgIHgxNiA9ICh1 aW50OF90KSAoKCh1aW50OF90KSBjcmMgJiAxKSAgXiAoaiAmIDEpKTsKKyAg ICAgIGRhdGEgPj49IDE7CisgICAgICBpZiAoeDE2ID09IDEpIHsKKwkgIGNy YyBePSAweDQwMDI7CisJICBjYXJyeSA9IDE7CisJfSBlbHNlCisJY2Fycnkg PSAwOworICAgICAgY3JjID4+PSAxOworICAgICAgaWYgKGNhcnJ5KQorCWNy YyB8PSAweDgwMDA7CisgICAgICBlbHNlCisJY3JjICY9IDB4N2ZmZjsKKyAg ICB9CisgIHJldHVybiBjcmM7Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2Fu LXRyZWUtZHVtcCAiY2FsY3VsYXRlcyBDUkMhIiAiY3JjIn0gfSAqLwpcIE5v IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2djYy90ZXN0 c3VpdGUvZ2NjLmRnL3RvcnR1cmUvY3JjLTMuYyBiL2djYy90ZXN0c3VpdGUv Z2NjLmRnL3RvcnR1cmUvY3JjLTMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMC4uMWVhNGU0MzRkZGYKLS0tIC9kZXYvbnVsbAor KysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy90b3J0dXJlL2NyYy0zLmMKQEAg LTAsMCArMSwzNiBAQAorLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsg ZGctb3B0aW9ucyAiLWZkdW1wLXRyZWUtY3JjLWRldGFpbHMiIH0gKi8KKy8q IHsgZGctc2tpcC1pZiAiIiB7ICotKi0qIH0geyAiLU8wIiAiLU8xIiAiLU9z IiAiLU8zIiAiLWZsdG8ifSB9ICovCisKKy8vV2UgZG9uJ3QgdmVyaWZ5IHRo aXMgY2FzZSBhcyBmb3IgdGhlIENSQyB1bnNpZ25lZCBpbnQgKDMyIGJpdCkg aXMgdXNlZCBhbmQKKy8vIHRoZSBwb2x5bm9taWFsIGZpdHMgaW50byAxNiBi aXQuCisKK3Vuc2lnbmVkIHNob3J0IGNyYzE2IChjaGFyICpkYXRhX3AsIHVu c2lnbmVkIHNob3J0IGxlbmd0aCkgeworICAgIHVuc2lnbmVkIGNoYXIgaTsK KyAgICB1bnNpZ25lZCBpbnQgZGF0YTsKKyAgICB1bnNpZ25lZCBpbnQgY3Jj ID0gMHhmZmZmOworCisgICAgaWYgKGxlbmd0aCA9PSAwKQorICAgICAgICBy ZXR1cm4gKH5jcmMpOworCisgICAgZG8geworICAgICAgICBmb3IgKGkgPSAw LCBkYXRhID0gKHVuc2lnbmVkIGludCkgMHhmZiAmICpkYXRhX3ArKzsKKyAg ICAgICAgICAgICBpIDwgODsKKyAgICAgICAgICAgICBpKyssIGRhdGEgPj49 IDEpIHsKKyAgICAgICAgICAgIGlmICgoY3JjICYgMHgwMDAxKSBeIChkYXRh ICYgMHgwMDAxKSkKKyAgICAgICAgICAgICAgICBjcmMgPSAoY3JjID4+IDEp IF4gMHg4NDA4OworICAgICAgICAgICAgZWxzZSBjcmMgPj49IDE7CisgICAg ICAgIH0KKyAgICB9IHdoaWxlICgtLWxlbmd0aCk7CisKKyAgICBjcmMgPSB+ Y3JjOworICAgIGRhdGEgPSBjcmM7CisgICAgY3JjID0gKGNyYyA8PCA4KSB8 IChkYXRhID4+IDggJiAweGZmKTsKKworICAgIHJldHVybiAoY3JjKTsKK30K KworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJmdW5jdGlvbiBt YXliZSBjb250YWlucyBDUkMgY2FsY3VsYXRpb24uIiAiY3JjIn0gfSAqLwor LyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJMb29wIGl0ZXJhdGlv biBudW1iZXIgaXMgNyIgImNyYyJ9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBz Y2FuLXRyZWUtZHVtcCAiQml0IHJldmVyc2VkIiAiY3JjIn0gfSAqLworLyog eyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJQb2x5bm9taWFsJ3MgdmFs dWUgaXMgXFxce1xbMCwgXF0qMSwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMCwg MCwgMCwgMCwgMSwgMCwgMCwgMFxcXH0iICJjcmMiIH0gfSAqLwpcIE5vIG5l d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3Vp dGUvZ2NjLmRnL3RvcnR1cmUvY3JjLTQuYyBiL2djYy90ZXN0c3VpdGUvZ2Nj LmRnL3RvcnR1cmUvY3JjLTQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMC4uOTRlYTAyMDZjMjQKLS0tIC9kZXYvbnVsbAorKysg Yi9nY2MvdGVzdHN1aXRlL2djYy5kZy90b3J0dXJlL2NyYy00LmMKQEAgLTAs MCArMSw1MSBAQAorLyogeyBkZy1kbyBydW4gfSAqLworLyogeyBkZy1vcHRp b25zICItZmR1bXAtdHJlZS1jcmMtZGV0YWlscyIgfSAqLworLyogeyBkZy1z a2lwLWlmICIiIHsgKi0qLSogfSB7ICItTzAiICItTzEiICItT3MiICItZmx0 byJ9IH0gKi8KKworI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPHN0 ZGxpYi5oPgorCitfX2F0dHJpYnV0ZV9fICgobm9pbmxpbmUsb3B0aW1pemUo MCkpKQordWludDE2X3QgY3JjMTZfdXBkYXRlX08wICh1aW50MTZfdCBjcmMs IHVpbnQ4X3QgYSkgeworICAgIGludCBpOworICAgIGNyYyBePSBhOworICAg IGZvciAoaSA9IDA7IGkgPCA4OyArK2kpIHsKKyAgICAgICAgaWYgKGNyYyAm IDEpCisgICAgICAgICAgICBjcmMgPSAoY3JjID4+IDEpIF4gMHhBMDAxOwor ICAgICAgICBlbHNlCisgICAgICAgICAgICBjcmMgPSAoY3JjID4+IDEpOwor ICAgIH0KKyAgICByZXR1cm4gY3JjOworfQorCit1aW50MTZfdCBjcmMxNl91 cGRhdGUgKHVpbnQxNl90IGNyYywgdWludDhfdCBhKSB7CisgICAgaW50IGk7 CisgICAgY3JjIF49IGE7CisgICAgZm9yIChpID0gMDsgaSA8IDg7ICsraSkg eworICAgICAgICBpZiAoY3JjICYgMSkKKyAgICAgICAgICAgIGNyYyA9IChj cmMgPj4gMSkgXiAweEEwMDE7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg IGNyYyA9IChjcmMgPj4gMSk7CisgICAgfQorICAgIHJldHVybiBjcmM7Cit9 CisKK2ludCBtYWluICgpCit7CisgIHVpbnQxNl90IGNyYyA9IDB4MEQ4MDsK KyAgZm9yICh1aW50OF90IGkgPSAwOyBpIDwgMjU1OyBpKyspCisgICAgewor ICAgICAgdWludDE2X3QgcmVzMSA9IGNyYzE2X3VwZGF0ZSAoY3JjLCBpKTsK KyAgICAgIHVpbnQxNl90IHJlczIgPSBjcmMxNl91cGRhdGVfTzAgKGNyYywg aSk7CisgICAgICBpZiAocmVzMSAhPSByZXMyKQorCWFib3J0ICgpOworICAg ICAgY3JjID0gcmVzMTsKKyAgICB9Cit9CisKKy8qIHsgZGctZmluYWwgeyBz Y2FuLXRyZWUtZHVtcCAiZnVuY3Rpb24gbWF5YmUgY29udGFpbnMgQ1JDIGNh bGN1bGF0aW9uLiIgImNyYyJ9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2Fu LXRyZWUtZHVtcCAiTG9vcCBpdGVyYXRpb24gbnVtYmVyIGlzIDciICJjcmMi fSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgIkJpdCBy ZXZlcnNlZCIgImNyYyJ9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRy ZWUtZHVtcCAiY2FsY3VsYXRlcyBDUkMhIiAiY3JjIn0gfSAqLworLyogeyBk Zy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJQb2x5bm9taWFsJ3MgdmFsdWUg aXMgXFxcezEsIDAsIDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs IDAsIDAsIDFcXFx9IiAiY3JjIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBz Y2FuLXRyZWUtZHVtcC10aW1lcyAiQ291bGRuJ3QgZ2VuZXJhdGUgZmFzdGVy IENSQyBjb2RlLiIgMCAiY3JjIn0gfSAqLwpcIE5vIG5ld2xpbmUgYXQgZW5k IG9mIGZpbGUKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3Rv cnR1cmUvY3JjLTUuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RvcnR1cmUv Y3JjLTUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MC4uN2YwOTVkNTk0MDUKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1 aXRlL2djYy5kZy90b3J0dXJlL2NyYy01LmMKQEAgLTAsMCArMSw2NiBAQAor LyogeyBkZy1kbyBydW4gfSAqLworLyogeyBkZy1vcHRpb25zICItZmR1bXAt dHJlZS1jcmMtZGV0YWlscyAtdyIgfSAqLworLyogeyBkZy1za2lwLWlmICIi IHsgKi0qLSogfSB7ICItTzAiICItTzEiICItT3MiICItZmx0byJ9IH0gKi8K KworI2luY2x1ZGUgPHN0ZGxpYi5oPgorCit0eXBlZGVmIHVuc2lnbmVkIHNo b3J0IGVlX3UxNjsKK3R5cGVkZWYgdW5zaWduZWQgY2hhciBlZV91ODsKKwor X19hdHRyaWJ1dGVfXyAoKG5vaW5saW5lLG9wdGltaXplKDApKSkKK2VlX3Ux NiBjcmN1OF9PMCAoZWVfdTggZGF0YSwgZWVfdTE2IGNyYykgeworICBlZV91 OCBpID0gMCwgeDE2ID0gMCwgY2FycnkgPSAwOworICBmb3IgKGkgPSAwOyBp IDwgODsgaSsrKSB7CisgICAgICB4MTYgPSAoZWVfdTgpICgoZGF0YSAmIDEp IF4gKChlZV91OCkgY3JjICYgMSkpOworICAgICAgZGF0YSA+Pj0gMTsKKyAg ICAgIGlmICh4MTYgPT0gMSkgeworCSAgY3JjIF49IDB4NDAwMjsKKwkgIGNh cnJ5ID0gMTsKKwl9IGVsc2UKKwljYXJyeSA9IDA7CisgICAgICBjcmMgPj49 IDE7CisgICAgICBpZiAoY2FycnkpCisJY3JjIHw9IDB4ODAwMDsKKyAgICAg IGVsc2UKKwljcmMgJj0gMHg3ZmZmOworICAgIH0KKyAgcmV0dXJuIGNyYzsK K30KKworZWVfdTE2IGNyY3U4IChlZV91OCBkYXRhLCBlZV91MTYgY3JjKSB7 CisgIGVlX3U4IGkgPSAwLCB4MTYgPSAwLCBjYXJyeSA9IDA7CisgIGZvciAo aSA9IDA7IGkgPCA4OyBpKyspIHsKKyAgICAgIHgxNiA9IChlZV91OCkgKChk YXRhICYgMSkgXiAoKGVlX3U4KSBjcmMgJiAxKSk7CisgICAgICBkYXRhID4+ PSAxOworICAgICAgaWYgKHgxNiA9PSAxKSB7CisJICBjcmMgXj0gMHg0MDAy OworCSAgY2FycnkgPSAxOworCX0gZWxzZQorCWNhcnJ5ID0gMDsKKyAgICAg IGNyYyA+Pj0gMTsKKyAgICAgIGlmIChjYXJyeSkKKwljcmMgfD0gMHg4MDAw OworICAgICAgZWxzZQorCWNyYyAmPSAweDdmZmY7CisgICAgfQorICByZXR1 cm4gY3JjOworfQorCitpbnQgbWFpbiAoKQoreworICBlZV91MTYgY3JjID0g MHgwRDgwOworICBmb3IgKGVlX3U4IGkgPSAwOyBpIDwgMjU1OyBpKyspCisg ICAgeworICAgICAgZWVfdTE2IHJlczEgPSBjcmN1OF9PMCAoaSwgY3JjKTsK KyAgICAgIGVlX3UxNiByZXMyID0gY3JjdTggKGksIGNyYyk7CisgICAgICBp ZiAocmVzMSAhPSByZXMyKQorCWFib3J0ICgpOworICAgICAgY3JjID0gcmVz MTsKKyAgICB9Cit9CisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAg ImNyY3U4IGZ1bmN0aW9uIG1heWJlIGNvbnRhaW5zIENSQyBjYWxjdWxhdGlv bi4iICJjcmMifSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1 bXAgIkxvb3AgaXRlcmF0aW9uIG51bWJlciBpcyA3IiAiY3JjIn0gfSAqLwor LyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJCaXQgcmV2ZXJzZWQi ICJjcmMifSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAg ImNhbGN1bGF0ZXMgQ1JDISIgImNyYyJ9IH0gKi8KKy8qIHsgZGctZmluYWwg eyBzY2FuLXRyZWUtZHVtcCAiUG9seW5vbWlhbCdzIHZhbHVlIGlzIFxcXHtc WzAsIFxdKjEsIDAsIDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs IDAsIDAsIDFcXFx9IiAiY3JjIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBz Y2FuLXRyZWUtZHVtcC10aW1lcyAiQ291bGRuJ3QgZ2VuZXJhdGUgZmFzdGVy IENSQyBjb2RlLiIgMCAiY3JjIn0gfSAqLwpcIE5vIG5ld2xpbmUgYXQgZW5k IG9mIGZpbGUKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3Rv cnR1cmUvY3JjLTYuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RvcnR1cmUv Y3JjLTYuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MC4uYTM3MDVkNjgzYmMKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1 aXRlL2djYy5kZy90b3J0dXJlL2NyYy02LmMKQEAgLTAsMCArMSw2NCBAQAor LyogeyBkZy1kbyBydW4gfSAqLworLyogeyBkZy1vcHRpb25zICItZmR1bXAt dHJlZS1jcmMtZGV0YWlscyIgfSAqLworLyogeyBkZy1za2lwLWlmICIiIHsg Ki0qLSogfSB7ICItTzAiICItTzEiICItT3MiICItTzMiICItZmx0byJ9IH0g Ki8KKworI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPHN0ZGxpYi5o PgorCit0eXBlZGVmIHVpbnQ4X3QgY3JjOworI2RlZmluZSBXSURUSCAoOCAq IHNpemVvZihjcmMpKQorI2RlZmluZSBUT1BCSVQgKDEgPDwgKFdJRFRIIC0g MSkpCisKK19fYXR0cmlidXRlX18gKChub2lubGluZSxvcHRpbWl6ZSgwKSkp CitjcmMgY3JjU2xvd19PMCAodWludDhfdCBjb25zdCBtZXNzYWdlW10sIGlu dCBuQnl0ZXMpIHsKKyAgICBjcmMgcmVtYWluZGVyID0gMDsKKy8qCisqIFBl cmZvcm0gbW9kdWxvLTIgZGl2aXNpb24sIGEgYnl0ZSBhdCBhIHRpbWUuCisq LworICAgIGZvciAoaW50IGJ5dGUgPSAwOyBieXRlIDwgbkJ5dGVzOyArK2J5 dGUpIHsKKyAgICAgICAgcmVtYWluZGVyIF49IChtZXNzYWdlW2J5dGVdIDw8 IChXSURUSCAtIDgpKTsKKyAgICAgICAgZm9yICh1aW50OF90IGJpdCA9IDg7 IGJpdCA+IDA7IC0tYml0KSB7CisgICAgICAgICAgICBpZiAocmVtYWluZGVy ICYgVE9QQklUKSB7CisgICAgICAgICAgICAgICAgcmVtYWluZGVyID0gKHJl bWFpbmRlciA8PCAxKSBeIDEyMzQ7CisgICAgICAgICAgICB9IGVsc2Ugewor ICAgICAgICAgICAgICAgIHJlbWFpbmRlciA9IChyZW1haW5kZXIgPDwgMSk7 CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJu IChyZW1haW5kZXIpOworfQorCitjcmMgY3JjU2xvdyAodWludDhfdCBjb25z dCBtZXNzYWdlW10sIGludCBuQnl0ZXMpIHsKKyAgY3JjIHJlbWFpbmRlciA9 IDA7CisvKgorKiBQZXJmb3JtIG1vZHVsby0yIGRpdmlzaW9uLCBhIGJ5dGUg YXQgYSB0aW1lLgorKi8KKyAgZm9yIChpbnQgYnl0ZSA9IDA7IGJ5dGUgPCBu Qnl0ZXM7ICsrYnl0ZSkgeworICAgICAgcmVtYWluZGVyIF49IChtZXNzYWdl W2J5dGVdIDw8IChXSURUSCAtIDgpKTsKKyAgICAgIGZvciAodWludDhfdCBi aXQgPSA4OyBiaXQgPiAwOyAtLWJpdCkgeworCSAgaWYgKHJlbWFpbmRlciAm IFRPUEJJVCkgeworCSAgICAgIHJlbWFpbmRlciA9IChyZW1haW5kZXIgPDwg MSkgXiAxMjM0OworCSAgICB9IGVsc2UgeworCSAgICAgIHJlbWFpbmRlciA9 IChyZW1haW5kZXIgPDwgMSk7CisJICAgIH0KKwl9CisgICAgfQorICByZXR1 cm4gKHJlbWFpbmRlcik7Cit9CisKK2ludCBtYWluICgpCit7CisgIGZvciAo Y3JjIGkgPSAwOyBpIDwgMjU1OyBpKyspCisgICAgeworICAgICAgY3JjIHJl czEgPSBjcmNTbG93X08wICgmaSwgMSk7CisgICAgICBjcmMgcmVzMiA9IGNy Y1Nsb3cgKCZpLCAxKTsKKyAgICAgIGlmIChyZXMxICE9IHJlczIpCisJYWJv cnQgKCk7CisgICAgfQorfQorLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1k dW1wICJjcmNTbG93IGZ1bmN0aW9uIG1heWJlIGNvbnRhaW5zIENSQyBjYWxj dWxhdGlvbi4iICJjcmMifSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10 cmVlLWR1bXAgIkxvb3AgaXRlcmF0aW9uIG51bWJlciBpcyA3IiAiY3JjIn0g fSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJCaXQgZm9y d2FyZCIgImNyYyJ9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUt ZHVtcCAiUG9seW5vbWlhbCdzIHZhbHVlIGlzIFxcXHsxLCAxLCAwLCAxLCAw LCAwLCAxLCAwXFxcfSIgImNyYyIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsg c2Nhbi10cmVlLWR1bXAgImNhbGN1bGF0ZXMgQ1JDISIgImNyYyJ9IH0gKi8K Ky8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAiQ291bGRu J3QgZ2VuZXJhdGUgZmFzdGVyIENSQyBjb2RlLiIgMCAiY3JjIn0gfSAqLwpc IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2djYy90 ZXN0c3VpdGUvZ2NjLmRnL3RvcnR1cmUvY3JjLTcuYyBiL2djYy90ZXN0c3Vp dGUvZ2NjLmRnL3RvcnR1cmUvY3JjLTcuYwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMC4uNTNkODhjYjMzMTAKLS0tIC9kZXYvbnVs bAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy90b3J0dXJlL2NyYy03LmMK QEAgLTAsMCArMSw1MCBAQAorLyogeyBkZy1kbyBydW4gfSAqLworLyogeyBk Zy1vcHRpb25zICItZmR1bXAtdHJlZS1jcmMtZGV0YWlscyIgfSAqLworLyog eyBkZy1za2lwLWlmICIiIHsgKi0qLSogfSB7ICItTzAiICItTzEiICItT3Mi ICItZmx0byJ9IH0gKi8KKworI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1 ZGUgPHN0ZGxpYi5oPgorCitfX2F0dHJpYnV0ZV9fICgobm9pbmxpbmUsb3B0 aW1pemUoMCkpKQordWludDE2X3QgY3JjX3htb2RlbV91cGRhdGVfTzAgKHVp bnQxNl90IGNyYywgdWludDhfdCBkYXRhKSB7CisgICAgaW50IGk7CisgICAg Y3JjID0gY3JjIF4gKCh1aW50MTZfdCkgZGF0YSA8PCA4KTsKKyAgICBmb3Ig KGkgPSAwOyBpIDwgODsgaSsrKSB7CisgICAgICAgIGlmIChjcmMgJiAweDgw MDApCisgICAgICAgICAgICBjcmMgPSAoY3JjIDw8IDEpIF4gMHgxMDIxOwor ICAgICAgICBlbHNlCisgICAgICAgICAgICBjcmMgPDw9IDE7CisgICAgfQor ICAgIHJldHVybiBjcmM7Cit9CisKK3VpbnQxNl90IGNyY194bW9kZW1fdXBk YXRlICh1aW50MTZfdCBjcmMsIHVpbnQ4X3QgZGF0YSkgeworICAgIGludCBp OworICAgIGNyYyA9IGNyYyBeICgodWludDE2X3QpIGRhdGEgPDwgOCk7Cisg ICAgZm9yIChpID0gMDsgaSA8IDg7IGkrKykgeworICAgICAgICBpZiAoY3Jj ICYgMHg4MDAwKQorICAgICAgICAgICAgY3JjID0gKGNyYyA8PCAxKSBeIDB4 MTAyMTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY3JjIDw8PSAxOwor ICAgIH0KKyAgICByZXR1cm4gY3JjOworfQorCitpbnQgbWFpbiAoKQorewor ICB1aW50MTZfdCBjcmMgPSAweDBEODA7CisgIGZvciAodWludDhfdCBpID0g MDsgaSA8IDI1NTsgaSsrKQorICAgIHsKKyAgICAgIHVpbnQxNl90IHJlczEg PSBjcmNfeG1vZGVtX3VwZGF0ZV9PMCAoaSwgY3JjKTsKKyAgICAgIHVpbnQx Nl90IHJlczIgPSBjcmNfeG1vZGVtX3VwZGF0ZSAoaSwgY3JjKTsKKyAgICAg IGlmIChyZXMxICE9IHJlczIpCisJYWJvcnQgKCk7CisgICAgICBjcmMgPSBy ZXMxOworICAgIH0KK30KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVt cCAiY3JjX3htb2RlbV91cGRhdGUgZnVuY3Rpb24gbWF5YmUgY29udGFpbnMg Q1JDIGNhbGN1bGF0aW9uLiIgImNyYyJ9IH0gKi8KKy8qIHsgZGctZmluYWwg eyBzY2FuLXRyZWUtZHVtcCAiTG9vcCBpdGVyYXRpb24gbnVtYmVyIGlzIDci ICJjcmMifSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAg IkJpdCBmb3J3YXJkIiAiY3JjIn0gfSAqLworLyogeyBkZy1maW5hbCB7IHNj YW4tdHJlZS1kdW1wICJjYWxjdWxhdGVzIENSQyEiICJjcmMifSB9ICovCisv KiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgIlBvbHlub21pYWwncyB2 YWx1ZSBpcyBcXFx7MCwgMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCwgMCwgMSwg MCwgMCwgMCwgMCwgMVxcXH0iICJjcmMifSB9ICovCisvKiB7IGRnLWZpbmFs IHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgIkNvdWxkbid0IGdlbmVyYXRlIGZh c3RlciBDUkMgY29kZS4iIDAgImNyYyJ9IH0gKi8KXCBObyBuZXdsaW5lIGF0 IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5k Zy90b3J0dXJlL2NyYy04LmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy90b3J0 dXJlL2NyYy04LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAuLjQxZjhmNTc5N2Q1Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rl c3RzdWl0ZS9nY2MuZGcvdG9ydHVyZS9jcmMtOC5jCkBAIC0wLDAgKzEsNTAg QEAKKy8qIHsgZGctZG8gcnVuIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLWZk dW1wLXRyZWUtY3JjLWRldGFpbHMiIH0gKi8KKy8qIHsgZGctc2tpcC1pZiAi IiB7ICotKi0qIH0geyAiLU8wIiAiLU8xIiAiLU9zIiAiLWZsdG8ifSB9ICov CisKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4K KworX19hdHRyaWJ1dGVfXyAoKG5vaW5saW5lLG9wdGltaXplKDApKSkKK3Vp bnQ4X3QgX2NyY19pYnV0dG9uX3VwZGF0ZV9PMCAodWludDhfdCBjcmMsIHVp bnQ4X3QgZGF0YSkgeworICAgIHVpbnQ4X3QgaTsKKyAgICBjcmMgPSBjcmMg XiBkYXRhOworICAgIGZvciAoaSA9IDA7IGkgPCA4OyBpKyspIHsKKyAgICAg ICAgaWYgKGNyYyAmIDB4MDEpCisgICAgICAgICAgICBjcmMgPSAoY3JjID4+ IDEpIF4gMHg4QzsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY3JjID4+ PSAxOworICAgIH0KKyAgICByZXR1cm4gY3JjOworfQorCit1aW50OF90IF9j cmNfaWJ1dHRvbl91cGRhdGUgKHVpbnQ4X3QgY3JjLCB1aW50OF90IGRhdGEp IHsKKyAgICB1aW50OF90IGk7CisgICAgY3JjID0gY3JjIF4gZGF0YTsKKyAg ICBmb3IgKGkgPSAwOyBpIDwgODsgaSsrKSB7CisgICAgICAgIGlmIChjcmMg JiAweDAxKQorICAgICAgICAgICAgY3JjID0gKGNyYyA+PiAxKSBeIDB4OEM7 CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNyYyA+Pj0gMTsKKyAgICB9 CisgICAgcmV0dXJuIGNyYzsKK30KKworaW50IG1haW4gKCkKK3sKKyAgdWlu dDhfdCBjcmMgPSAweDBEOworICBmb3IgKHVpbnQ4X3QgaSA9IDA7IGkgPCAy NTU7IGkrKykKKyAgICB7CisgICAgICB1aW50OF90IHJlczEgPSBfY3JjX2li dXR0b25fdXBkYXRlX08wIChpLCBjcmMpOworICAgICAgdWludDhfdCByZXMy ID0gX2NyY19pYnV0dG9uX3VwZGF0ZSAoaSwgY3JjKTsKKyAgICAgIGlmIChy ZXMxICE9IHJlczIpCisJYWJvcnQgKCk7CisgICAgICBjcmMgPSByZXMxOwor ICAgIH0KK30KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAiX2Ny Y19pYnV0dG9uX3VwZGF0ZSBmdW5jdGlvbiBtYXliZSBjb250YWlucyBDUkMg Y2FsY3VsYXRpb24uIiAiY3JjIn0gfSAqLworLyogeyBkZy1maW5hbCB7IHNj YW4tdHJlZS1kdW1wICJMb29wIGl0ZXJhdGlvbiBudW1iZXIgaXMgNyIgImNy YyJ9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAiQml0 IHJldmVyc2VkIiAiY3JjIn0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4t dHJlZS1kdW1wICJjYWxjdWxhdGVzIENSQyEiICJjcmMifSB9ICovCisvKiB7 IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgIlBvbHlub21pYWwncyB2YWx1 ZSBpcyBcXFx7XFswLCBcXSoxLCAwLCAwLCAwLCAxLCAxLCAwLCAwXFxcfSIg ImNyYyIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAt dGltZXMgIkNvdWxkbid0IGdlbmVyYXRlIGZhc3RlciBDUkMgY29kZS4iIDAg ImNyYyJ9IH0gKi8KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg LS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy90b3J0dXJlL2NyYy05LmMg Yi9nY2MvdGVzdHN1aXRlL2djYy5kZy90b3J0dXJlL2NyYy05LmMKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmFmNzM4NmIxYmQ4 Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdG9y dHVyZS9jcmMtOS5jCkBAIC0wLDAgKzEsNTYgQEAKKy8qIHsgZGctZG8gcnVu IH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLWZkdW1wLXRyZWUtY3JjLWRldGFp bHMiIH0gKi8KKy8qIHsgZGctc2tpcC1pZiAiIiB7ICotKi0qIH0geyAiLU8w IiAiLU8xIiAiLU9zIiAiLU8zIiAiLWZsdG8ifSB9ICovCisKKyNpbmNsdWRl IDxzdGRsaWIuaD4KKwordHlwZWRlZiB1bnNpZ25lZCBjaGFyIHVpbnQ4X3Q7 CisKK19fYXR0cmlidXRlX18gKChub2lubGluZSxvcHRpbWl6ZSgwKSkpCit1 aW50OF90IGdlbmNyY19PMCAodWludDhfdCAqZGF0YSwgc2l6ZV90IGxlbikg eworICAgIHVpbnQ4X3QgY3JjID0gMHhmZjsKKyAgICBzaXplX3QgaSwgajsK KyAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKyAgICAgICAgY3Jj IF49IGRhdGFbaV07CisgICAgICAgIGZvciAoaiA9IDA7IGogPCA4OyBqKysp IHsKKyAgICAgICAgICAgIGlmICgoY3JjICYgMHg4MCkgIT0gMCkKKyAgICAg ICAgICAgICAgICBjcmMgPSAodWludDhfdCkgKChjcmMgPDwgMSkgXiAweDMx KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBjcmMgPDw9 IDE7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGNyYzsKK30KKwor dWludDhfdCBnZW5jcmMgKHVpbnQ4X3QgKmRhdGEsIHNpemVfdCBsZW4pIHsK KyAgICB1aW50OF90IGNyYyA9IDB4ZmY7CisgICAgc2l6ZV90IGksIGo7Cisg ICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7CisgICAgICAgIGNyYyBe PSBkYXRhW2ldOworICAgICAgICBmb3IgKGogPSAwOyBqIDwgODsgaisrKSB7 CisgICAgICAgICAgICBpZiAoKGNyYyAmIDB4ODApICE9IDApCisgICAgICAg ICAgICAgICAgY3JjID0gKHVpbnQ4X3QpICgoY3JjIDw8IDEpIF4gMHgzMSk7 CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgY3JjIDw8PSAx OworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBjcmM7Cit9CisKK2lu dCBtYWluICgpCit7CisgIGZvciAodWludDhfdCBpID0gMDsgaSA8IDI1NTsg aSsrKQorICAgIHsKKyAgICAgIHVpbnQ4X3QgcmVzMSA9IGdlbmNyY19PMCAo JmksIDEpOworICAgICAgdWludDhfdCByZXMyID0gZ2VuY3JjICgmaSwgMSk7 CisgICAgICBpZiAocmVzMSAhPSByZXMyKQorCWFib3J0ICgpOworICAgIH0K K30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJnZW5jcmMg ZnVuY3Rpb24gbWF5YmUgY29udGFpbnMgQ1JDIGNhbGN1bGF0aW9uLiIgImNy YyJ9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAiTG9v cCBpdGVyYXRpb24gbnVtYmVyIGlzIDciICJjcmMifSB9ICovCisvKiB7IGRn LWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgIkJpdCBmb3J3YXJkIiAiY3JjIn0g fSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJQb2x5bm9t aWFsJ3MgdmFsdWUgaXMgXFxce1xbMCwgXF0qMCwgMCwgMSwgMSwgMCwgMCwg MCwgMVxcXH0iICJjcmMiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4t dHJlZS1kdW1wICJjYWxjdWxhdGVzIENSQyEiICJjcmMifSB9ICovCisvKiB7 IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgIkNvdWxkbid0IGdl bmVyYXRlIGZhc3RlciBDUkMgY29kZS4iIDAgImNyYyJ9IH0gKi8KXCBObyBu ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1 aXRlL2djYy5kZy90b3J0dXJlL2NyYy1DQ0lULWRhdGExNi14b3JPdXRzaWRl X0luc2lkZUZvci5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdG9ydHVyZS9j cmMtQ0NJVC1kYXRhMTYteG9yT3V0c2lkZV9JbnNpZGVGb3IuYwpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYzBjNWY3MGFjMzUK LS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy90b3J0 dXJlL2NyYy1DQ0lULWRhdGExNi14b3JPdXRzaWRlX0luc2lkZUZvci5jCkBA IC0wLDAgKzEsNTggQEAKKy8qIHsgZGctZG8gcnVuIH0gKi8KKy8qIHsgZGct b3B0aW9ucyAiLWZkdW1wLXRyZWUtY3JjLWRldGFpbHMiIH0gKi8KKy8qIHsg ZGctc2tpcC1pZiAiIiB7ICotKi0qIH0geyAiLU8wIiAiLU8xIiAiLWciICIt T3MiICItZmx0byJ9IH0gKi8KKworI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2lu Y2x1ZGUgPHN0ZGludC5oPgorCitfX2F0dHJpYnV0ZV9fICgobm9pbmxpbmUp KQordWludDE2X3QgY3JjMTZfeG9yX291dHNpZGUgKHVpbnQxNl90IGRhdGEs IHVpbnQxNl90IGNyYykKK3sKKyAgaW50IGNhcnJ5OworICBjcmMgXj0gZGF0 YTsKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCAxNjsgKytpKSB7CisgICAgICBj YXJyeSA9ICgoY3JjICYgMHg4MDAwKSk7CisgICAgICBjcmMgPDw9IDE7Cisg ICAgICBpZiAoY2FycnkpIGNyYyBePSAweDEwMjE7CisgICAgfQorICByZXR1 cm4gY3JjOworfQorCitfX2F0dHJpYnV0ZV9fICgobm9pbmxpbmUpKQordWlu dDE2X3QgY3JjMTZfeG9yX2luc2lkZSAodWludDE2X3QgZGF0YSwgdWludDE2 X3QgY3JjKQoreworICBpbnQgY2Fycnk7CisgIGZvciAoaW50IGkgPSAwOyBp IDwgMTY7ICsraSkgeworICAgICAgY2FycnkgPSAoKGNyYyAmIDB4ODAwMCkg XiAoZGF0YSAmIDB4ODAwMCkpOworICAgICAgY3JjIDw8PSAxOworICAgICAg ZGF0YSA8PD0gMTsKKyAgICAgIGlmIChjYXJyeSkgY3JjIF49IDB4MTAyMTsK KyAgICB9CisgIHJldHVybiBjcmM7Cit9CisKK2ludCBtYWluICgpCit7Cisg IHVpbnQxNl90IGNyYyA9IDA7CisKKyAgZm9yICh1aW50MTZfdCBpID0gMDsg aSA8IDY1NTsgaSsrKQorICAgIHsKKyAgICAgIHVpbnQxNl90IHJlczEgPSBj cmMxNl94b3Jfb3V0c2lkZSAoaSwgY3JjKTsKKyAgICAgIHVpbnQxNl90IHJl czIgPSBjcmMxNl94b3JfaW5zaWRlIChpLCBjcmMpOworICAgICAgY3JjID0g cmVzMTsKKyAgICAgIGlmIChyZXMxICE9IHJlczIpCisJYWJvcnQgKCk7Cisg ICAgfQorCisgIGlmIChjcmMxNl94b3Jfb3V0c2lkZSAoMHgxMTExLCAweEZG RkYpICE9IDB4MmY1ZCkKKyAgICBhYm9ydCAoKTsKKworICBpZiAoY3JjMTZf eG9yX2luc2lkZSAoMHgxMTExLCAweEZGRkYpICE9IDB4MmY1ZCkKKyAgICBh Ym9ydCAoKTsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1w ICJjcmMxNl94b3Jfb3V0c2lkZSBmdW5jdGlvbiBtYXliZSBjb250YWlucyBD UkMgY2FsY3VsYXRpb24uIiAiY3JjIn0gfSAqLworLyogeyBkZy1maW5hbCB7 IHNjYW4tdHJlZS1kdW1wICJjcmMxNl94b3JfaW5zaWRlIGZ1bmN0aW9uIG1h eWJlIGNvbnRhaW5zIENSQyBjYWxjdWxhdGlvbi4iICJjcmMifSB9ICovCisv KiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgIkxvb3AgaXRlcmF0aW9u IG51bWJlciBpcyAxNSIgImNyYyJ9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBz Y2FuLXRyZWUtZHVtcCAiQml0IGZvcndhcmQiICJjcmMifSB9ICovCisvKiB7 IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgImNhbGN1bGF0ZXMg Q1JDISIgMiAiY3JjIn0gfSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0 ZS9nY2MuZGcvdG9ydHVyZS9jcmMtQ0NJVC1kYXRhMTYuYyBiL2djYy90ZXN0 c3VpdGUvZ2NjLmRnL3RvcnR1cmUvY3JjLUNDSVQtZGF0YTE2LmMKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmMyZjU2NDI3OWM4 Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdG9y dHVyZS9jcmMtQ0NJVC1kYXRhMTYuYwpAQCAtMCwwICsxLDUxIEBACisvKiB7 IGRnLWRvIHJ1biB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1mZHVtcC10cmVl LWNyYy1kZXRhaWxzIC13IiB9ICovCisvKiB7IGRnLXNraXAtaWYgIiIgeyAq LSotKiB9IHsgIi1PMCIgIi1PMSIgIi1nIiAiLU9zIiAiLWZsdG8ifSB9ICov CisKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4K KworX19hdHRyaWJ1dGVfXyAoKG5vaW5saW5lLG9wdGltaXplKDApKSkKK3Vp bnQxNl90IGNyYzE2X08wICh1aW50MTZfdCBkYXRhLCB1aW50MTZfdCBjcmMp Cit7CisgIGludCBjYXJyeTsKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCAxNjsg KytpKSB7CisgICAgICBjYXJyeSA9ICgoY3JjICYgMHg4MDAwKSBeIChkYXRh ICYgMHg4MDAwKSk7CisgICAgICBjcmMgPDw9IDE7CisgICAgICBkYXRhIDw8 PSAxOworICAgICAgaWYgKGNhcnJ5KSBjcmMgXj0gMHgxMDIxOworICAgIH0K KyAgcmV0dXJuIGNyYzsKK30KKwordWludDE2X3QgY3JjMTYgKHVpbnQxNl90 IGRhdGEsIHVpbnQxNl90IGNyYykKK3sKKyAgaW50IGNhcnJ5OworICBmb3Ig KGludCBpID0gMDsgaSA8IDE2OyArK2kpIHsKKyAgICAgIGNhcnJ5ID0gKChj cmMgJiAweDgwMDApIF4gKGRhdGEgJiAweDgwMDApKTsKKyAgICAgIGNyYyA8 PD0gMTsKKyAgICAgIGRhdGEgPDw9IDE7CisgICAgICBpZiAoY2FycnkpIGNy YyBePSAweDEwMjE7CisgICAgfQorICByZXR1cm4gY3JjOworfQorCitpbnQg bWFpbiAoKQoreworICB1aW50MTZfdCBjcmMgPSAwOworCisgIGZvciAodWlu dDE2X3QgaSA9IDA7IGkgPCA2NTU7IGkrKykKKyAgICB7CisgICAgICB1aW50 MTZfdCByZXMxID0gY3JjMTZfTzAgKGksIGNyYyk7CisgICAgICB1aW50MTZf dCByZXMyID0gY3JjMTYgKGksIGNyYyk7CisgICAgICBjcmMgPSByZXMxOwor ICAgICAgaWYgKHJlczEgIT0gcmVzMikKKwlhYm9ydCAoKTsKKyAgICAgIGNy YyA9IHJlczE7CisgICAgfQorfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10 cmVlLWR1bXAgImNyYzE2IGZ1bmN0aW9uIG1heWJlIGNvbnRhaW5zIENSQyBj YWxjdWxhdGlvbi4iICJjcmMifSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nh bi10cmVlLWR1bXAgIkxvb3AgaXRlcmF0aW9uIG51bWJlciBpcyAxNSIgImNy YyJ9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAiQml0 IGZvcndhcmQiICJjcmMifSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10 cmVlLWR1bXAgImNhbGN1bGF0ZXMgQ1JDISIgImNyYyJ9IH0gKi8KZGlmZiAt LWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RvcnR1cmUvY3JjLUNDSVQt ZGF0YTguYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RvcnR1cmUvY3JjLUND SVQtZGF0YTguYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMC4uYTlhODE0OGQzMzAKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVz dHN1aXRlL2djYy5kZy90b3J0dXJlL2NyYy1DQ0lULWRhdGE4LmMKQEAgLTAs MCArMSw0NyBAQAorLyogeyBkZy1kbyBydW4gfSAqLworLyogeyBkZy1vcHRp b25zICItZmR1bXAtdHJlZS1jcmMtZGV0YWlscyIgfSAqLworLyogeyBkZy1z a2lwLWlmICIiIHsgKi0qLSogfSB7ICItTzAiICItTzEiICItZyIgIi1PcyIg Ii1mbHRvIn0gfSAqLworCisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVk ZSA8c3RkbGliLmg+CisKK19fYXR0cmlidXRlX18gKChub2lubGluZSxvcHRp bWl6ZSgwKSkpCit1aW50MTZfdCBjcmMxNl9PMCAodWludDhfdCBkYXRhLCB1 aW50MTZfdCBjcmMpIHsKKyAgaW50IGNhcnJ5OworICBmb3IgKGludCBpID0g MDsgaSA8IDg7ICsraSkgeworICAgICAgY2FycnkgPSAoKGNyYyAmIDB4ODAw MCkgPj4gOCBeIChkYXRhICYgMHg4MCkpOworICAgICAgY3JjIDw8PSAxOwor ICAgICAgZGF0YSA8PD0gMTsKKyAgICAgIGlmIChjYXJyeSkgY3JjIF49IDB4 MTAyMTsKKyAgICB9CisgIHJldHVybiBjcmM7Cit9CisKK3VpbnQxNl90IGNy YzE2ICh1aW50OF90IGRhdGEsIHVpbnQxNl90IGNyYykgeworICBpbnQgY2Fy cnk7CisgIGZvciAoaW50IGkgPSAwOyBpIDwgODsgKytpKSB7CisgICAgICBj YXJyeSA9ICgoY3JjICYgMHg4MDAwKSA+PiA4IF4gKGRhdGEgJiAweDgwKSk7 CisgICAgICBjcmMgPDw9IDE7CisgICAgICBkYXRhIDw8PSAxOworICAgICAg aWYgKGNhcnJ5KSBjcmMgXj0gMHgxMDIxOworICAgIH0KKyAgcmV0dXJuIGNy YzsKK30KKworaW50IG1haW4gKCkKK3sKKyAgdWludDE2X3QgY3JjID0gMHgw RDgwOworICBmb3IgKHVpbnQ4X3QgaSA9IDA7IGkgPCAyNTU7IGkrKykKKyAg ICB7CisgICAgICB1aW50MTZfdCByZXMxID0gY3JjMTZfTzAgKGksIGNyYyk7 CisgICAgICB1aW50MTZfdCByZXMyID0gY3JjMTYgKGksIGNyYyk7CisgICAg ICBpZiAocmVzMSAhPSByZXMyKQorCWFib3J0ICgpOworICAgICAgY3JjID0g cmVzMTsKKyAgICB9Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUt ZHVtcCAiY3JjMTYgZnVuY3Rpb24gbWF5YmUgY29udGFpbnMgQ1JDIGNhbGN1 bGF0aW9uLiIgImNyYyJ9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRy ZWUtZHVtcCAiTG9vcCBpdGVyYXRpb24gbnVtYmVyIGlzIDciICJjcmMifSB9 ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgIkJpdCBmb3J3 YXJkIiAiY3JjIn0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1k dW1wICJjYWxjdWxhdGVzIENSQyEiICJjcmMifSB9ICovCmRpZmYgLS1naXQg YS9nY2MvdGVzdHN1aXRlL2djYy5kZy90b3J0dXJlL2NyYy1jb3JlbWFyazE2 LWRhdGExNi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdG9ydHVyZS9jcmMt Y29yZW1hcmsxNi1kYXRhMTYuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMC4uN2ExY2VlNjcyNDQKLS0tIC9kZXYvbnVsbAorKysg Yi9nY2MvdGVzdHN1aXRlL2djYy5kZy90b3J0dXJlL2NyYy1jb3JlbWFyazE2 LWRhdGExNi5jCkBAIC0wLDAgKzEsNjUgQEAKKy8qIHsgZGctZG8gcnVuIH0g Ki8KKy8qIHsgZGctb3B0aW9ucyAiLWZkdW1wLXRyZWUtY3JjLWRldGFpbHMg LXciIH0gKi8KKy8qIHsgZGctc2tpcC1pZiAiIiB7ICotKi0qIH0geyAiLU8w IiAiLU8xIiAiLWciICItT3MiICItZmx0byJ9IH0gKi8KKworI2luY2x1ZGUg PHN0ZGxpYi5oPgordHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBlZV91MTY7Cit0 eXBlZGVmIHVuc2lnbmVkIGNoYXIgZWVfdTg7CisKK19fYXR0cmlidXRlX18g KChub2lubGluZSxvcHRpbWl6ZSgwKSkpCitlZV91MTYgY3JjdTE2X08wIChl ZV91MTYgZGF0YSwgZWVfdTE2IGNyYykgeworICBlZV91OCBpID0gMCwgeDE2 ID0gMCwgY2FycnkgPSAwOworICBmb3IgKGkgPSAwOyBpIDwgMTY7IGkrKykg eworICAgICAgeDE2ID0gKGVlX3U4KSAoKGRhdGEgJiAxKSBeICgoZWVfdTgp IGNyYyAmIDEpKTsKKyAgICAgIGRhdGEgPj49IDE7CisgICAgICBpZiAoeDE2 ID09IDEpIHsKKwkgIGNyYyBePSAweDQwMDI7CisJICBjYXJyeSA9IDE7CisJ fSBlbHNlCisJY2FycnkgPSAwOworICAgICAgY3JjID4+PSAxOworICAgICAg aWYgKGNhcnJ5KQorCWNyYyB8PSAweDgwMDA7CisgICAgICBlbHNlCisJY3Jj ICY9IDB4N2ZmZjsKKyAgICB9CisgIHJldHVybiBjcmM7Cit9CisKK2VlX3Ux NiBjcmN1MTYgKGVlX3UxNiBkYXRhLCBlZV91MTYgY3JjKSB7CisgIGVlX3U4 IGkgPSAwLCB4MTYgPSAwLCBjYXJyeSA9IDA7CisgIGZvciAoaSA9IDA7IGkg PCAxNjsgaSsrKSB7CisgICAgICB4MTYgPSAoZWVfdTgpICgoZGF0YSAmIDEp IF4gKChlZV91OCkgY3JjICYgMSkpOworICAgICAgZGF0YSA+Pj0gMTsKKyAg ICAgIGlmICh4MTYgPT0gMSkgeworCSAgY3JjIF49IDB4NDAwMjsKKwkgIGNh cnJ5ID0gMTsKKwl9IGVsc2UKKwljYXJyeSA9IDA7CisgICAgICBjcmMgPj49 IDE7CisgICAgICBpZiAoY2FycnkpCisJY3JjIHw9IDB4ODAwMDsKKyAgICAg IGVsc2UKKwljcmMgJj0gMHg3ZmZmOworICAgIH0KKyAgcmV0dXJuIGNyYzsK K30KKworaW50IG1haW4gKCkKK3sKKyAgZWVfdTE2IGNyYyA9IDB4MEQ4MDsK KyAgZm9yIChlZV91MTYgaSA9IDA7IGkgPCA2NTUzNTsgaSsrKQorICAgIHsK KyAgICAgIGVlX3UxNiByZXMxID0gY3JjdTE2X08wIChpLCBjcmMpOworICAg ICAgZWVfdTE2IHJlczIgPSBjcmN1MTYgKGksIGNyYyk7CisgICAgICBpZiAo cmVzMSAhPSByZXMyKQorCWFib3J0ICgpOworICAgICAgY3JjID0gcmVzMTsK KyAgICB9Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAi ZnVuY3Rpb24gbWF5YmUgY29udGFpbnMgQ1JDIGNhbGN1bGF0aW9uLiIgImNy YyJ9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAiTG9v cCBpdGVyYXRpb24gbnVtYmVyIGlzIDE1IiAiY3JjIn0gfSAqLworLyogeyBk Zy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJCaXQgcmV2ZXJzZWQiICJjcmMi fSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgImNhbGN1 bGF0ZXMgQ1JDISIgImNyYyJ9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2Fu LXRyZWUtZHVtcCAiUG9seW5vbWlhbCdzIHZhbHVlIGlzIFxcXHtcWzAsIFxd KjEsIDAsIDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs IDFcXFx9IiAiY3JjIiB9IH0gKi8KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3Vp dGUvZ2NjLmRnL3RvcnR1cmUvY3JjLWNvcmVtYXJrMzItZGF0YTE2LmMgYi9n Y2MvdGVzdHN1aXRlL2djYy5kZy90b3J0dXJlL2NyYy1jb3JlbWFyazMyLWRh dGExNi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw Li4wNjc1Y2RjMWIzNgotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3Vp dGUvZ2NjLmRnL3RvcnR1cmUvY3JjLWNvcmVtYXJrMzItZGF0YTE2LmMKQEAg LTAsMCArMSw2NCBAQAorLyogeyBkZy1kbyBydW4gfSAqLworLyogeyBkZy1v cHRpb25zICItZmR1bXAtdHJlZS1jcmMtZGV0YWlscyAtdyIgfSAqLworLyog eyBkZy1za2lwLWlmICIiIHsgKi0qLSogfSB7ICItTzAiICItTzEiICItZyIg Ii1PcyIgIi1mbHRvIn0gfSAqLworCisjaW5jbHVkZSA8c3RkbGliLmg+CisK K3R5cGVkZWYgdW5zaWduZWQgaW50IGVlX3UzMjsKK3R5cGVkZWYgdW5zaWdu ZWQgc2hvcnQgZWVfdTE2OworCitfX2F0dHJpYnV0ZV9fICgobm9pbmxpbmUs b3B0aW1pemUoMCkpKQorZWVfdTMyIGNyY3UzMl9PMCAoZWVfdTE2IGRhdGEs IGVlX3UzMiBjcmMpIHsKKyAgZWVfdTMyIGkgPSAwLCB4MTYgPSAwLCBjYXJy eSA9IDA7CisgIGZvciAoaSA9IDA7IGkgPCAxNjsgaSsrKSB7CisgICAgICB4 MTYgPSAoKGRhdGEgJiAxKSBeIChjcmMgJiAxKSk7CisgICAgICBkYXRhID4+ PSAxOworICAgICAgaWYgKHgxNiA9PSAxKSB7CisJICBjcmMgXj0gMHg0MDAy MTIzOworCSAgY2FycnkgPSAxOworCX0gZWxzZQorCWNhcnJ5ID0gMDsKKyAg ICAgIGNyYyA+Pj0gMTsKKyAgICAgIGlmIChjYXJyeSkKKwljcmMgfD0gMHg4 MDAwMDAwMDsKKyAgICAgIGVsc2UKKwljcmMgJj0gMHg3ZmZmZmZmZjsKKyAg ICB9CisgIHJldHVybiBjcmM7Cit9CisKK2VlX3UzMiBjcmN1MzIgKGVlX3Ux NiBkYXRhLCBlZV91MzIgY3JjKSB7CisgIGVlX3UzMiBpID0gMCwgeDE2ID0g MCwgY2FycnkgPSAwOworICBmb3IgKGkgPSAwOyBpIDwgMTY7IGkrKykgewor ICAgICAgeDE2ID0gKChkYXRhICYgMSkgXiAoY3JjICYgMSkpOworICAgICAg ZGF0YSA+Pj0gMTsKKyAgICAgIGlmICh4MTYgPT0gMSkgeworCSAgY3JjIF49 IDB4NDAwMjEyMzsKKwkgIGNhcnJ5ID0gMTsKKwl9IGVsc2UKKwljYXJyeSA9 IDA7CisgICAgICBjcmMgPj49IDE7CisgICAgICBpZiAoY2FycnkpCisJY3Jj IHw9IDB4ODAwMDAwMDA7CisgICAgICBlbHNlCisJY3JjICY9IDB4N2ZmZmZm ZmY7CisgICAgfQorICByZXR1cm4gY3JjOworfQorCitpbnQgbWFpbiAoKQor eworICBlZV91MzIgY3JjID0gMDsKKyAgZm9yIChlZV91MTYgaSA9IDA7IGkg PCAweGZmOyBpKyspCisgICAgeworICAgICAgZWVfdTMyIHJlczEgPSBjcmN1 MzJfTzAgKGksIGNyYyk7CisgICAgICBlZV91MzIgcmVzMiA9IGNyY3UzMiAo aSwgY3JjKTsKKyAgICAgIGlmIChyZXMxICE9IHJlczIpCisJYWJvcnQgKCk7 CisgICAgICBjcmMgPSByZXMxOworICAgIH0KK30KKy8qIHsgZGctZmluYWwg eyBzY2FuLXRyZWUtZHVtcCAiZnVuY3Rpb24gbWF5YmUgY29udGFpbnMgQ1JD IGNhbGN1bGF0aW9uLiIgImNyYyJ9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBz Y2FuLXRyZWUtZHVtcCAiTG9vcCBpdGVyYXRpb24gbnVtYmVyIGlzIDE1IiAi Y3JjIn0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJC aXQgcmV2ZXJzZWQiICJjcmMifSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nh bi10cmVlLWR1bXAgImNhbGN1bGF0ZXMgQ1JDISIgImNyYyJ9IH0gKi8KZGlm ZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RvcnR1cmUvY3JjLWNv cmVtYXJrMzItZGF0YTMyLmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy90b3J0 dXJlL2NyYy1jb3JlbWFyazMyLWRhdGEzMi5jCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5mOWJkMTk1MmJhNQotLS0gL2Rldi9u dWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RvcnR1cmUvY3JjLWNv cmVtYXJrMzItZGF0YTMyLmMKQEAgLTAsMCArMSw2MyBAQAorLyogeyBkZy1k byBydW4gfSAqLworLyogeyBkZy1vcHRpb25zICItZmR1bXAtdHJlZS1jcmMt ZGV0YWlscyAtdyIgfSAqLworLyogeyBkZy1za2lwLWlmICIiIHsgKi0qLSog fSB7ICItTzAiICItTzEiICItZyIgIi1PcyIgIi1mbHRvIn0gfSAqLworCisj aW5jbHVkZSA8c3RkbGliLmg+CisKK3R5cGVkZWYgdW5zaWduZWQgaW50IGVl X3UzMjsKKworX19hdHRyaWJ1dGVfXyAoKG5vaW5saW5lLG9wdGltaXplKDAp KSkKK2VlX3UzMiBjcmN1MzJfTzAgKGVlX3UzMiBkYXRhLCBlZV91MzIgY3Jj KSB7CisgIGVlX3UzMiBpID0gMCwgeDE2ID0gMCwgY2FycnkgPSAwOworICBm b3IgKGkgPSAwOyBpIDwgMzI7IGkrKykgeworICAgICAgeDE2ID0gKChkYXRh ICYgMSkgXiAoY3JjICYgMSkpOworICAgICAgZGF0YSA+Pj0gMTsKKyAgICAg IGlmICh4MTYgPT0gMSkgeworCSAgY3JjIF49IDB4NDAwMjEyMzsKKwkgIGNh cnJ5ID0gMTsKKwl9IGVsc2UKKwljYXJyeSA9IDA7CisgICAgICBjcmMgPj49 IDE7CisgICAgICBpZiAoY2FycnkpCisJY3JjIHw9IDB4ODAwMDAwMDA7Cisg ICAgICBlbHNlCisJY3JjICY9IDB4N2ZmZmZmZmY7CisgICAgfQorICByZXR1 cm4gY3JjOworfQorCitlZV91MzIgY3JjdTMyIChlZV91MzIgZGF0YSwgZWVf dTMyIGNyYykgeworICBlZV91MzIgaSA9IDAsIHgxNiA9IDAsIGNhcnJ5ID0g MDsKKyAgZm9yIChpID0gMDsgaSA8IDMyOyBpKyspIHsKKyAgICAgIHgxNiA9 ICgoZGF0YSAmIDEpIF4gKGNyYyAmIDEpKTsKKyAgICAgIGRhdGEgPj49IDE7 CisgICAgICBpZiAoeDE2ID09IDEpIHsKKwkgIGNyYyBePSAweDQwMDIxMjM7 CisJICBjYXJyeSA9IDE7CisJfSBlbHNlCisJY2FycnkgPSAwOworICAgICAg Y3JjID4+PSAxOworICAgICAgaWYgKGNhcnJ5KQorCWNyYyB8PSAweDgwMDAw MDAwOworICAgICAgZWxzZQorCWNyYyAmPSAweDdmZmZmZmZmOworICAgIH0K KyAgcmV0dXJuIGNyYzsKK30KKworaW50IG1haW4gKCkKK3sKKyAgZWVfdTMy IGNyYyA9IDA7CisgIGZvciAoZWVfdTMyIGkgPSAwOyBpIDwgMHhmZjsgaSsr KQorICAgIHsKKyAgICAgIGVlX3UzMiByZXMxID0gY3JjdTMyX08wIChpLCBj cmMpOworICAgICAgZWVfdTMyIHJlczIgPSBjcmN1MzIgKGksIGNyYyk7Cisg ICAgICBpZiAocmVzMSAhPSByZXMyKQorCWFib3J0ICgpOworICAgICAgY3Jj ID0gcmVzMTsKKyAgICB9Cit9CisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVl LWR1bXAgImZ1bmN0aW9uIG1heWJlIGNvbnRhaW5zIENSQyBjYWxjdWxhdGlv bi4iICJjcmMifSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1 bXAgIkxvb3AgaXRlcmF0aW9uIG51bWJlciBpcyAzMSIgImNyYyJ9IH0gKi8K Ky8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAiQml0IHJldmVyc2Vk IiAiY3JjIn0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1w ICJjYWxjdWxhdGVzIENSQyEiICJjcmMifSB9ICovCmRpZmYgLS1naXQgYS9n Y2MvdGVzdHN1aXRlL2djYy5kZy90b3J0dXJlL2NyYy1jb3JlbWFyazMyLWRh dGE4LmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy90b3J0dXJlL2NyYy1jb3Jl bWFyazMyLWRhdGE4LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAuLmI5OTg1MjRlNTk1Ci0tLSAvZGV2L251bGwKKysrIGIvZ2Nj L3Rlc3RzdWl0ZS9nY2MuZGcvdG9ydHVyZS9jcmMtY29yZW1hcmszMi1kYXRh OC5jCkBAIC0wLDAgKzEsNjQgQEAKKy8qIHsgZGctZG8gcnVuIH0gKi8KKy8q IHsgZGctb3B0aW9ucyAiLWZkdW1wLXRyZWUtY3JjLWRldGFpbHMgLXciIH0g Ki8KKy8qIHsgZGctc2tpcC1pZiAiIiB7ICotKi0qIH0geyAiLU8wIiAiLU8x IiAiLWciICItT3MiICItZmx0byJ9IH0gKi8KKworI2luY2x1ZGUgPHN0ZGxp Yi5oPgorCit0eXBlZGVmIHVuc2lnbmVkIGludCBlZV91MzI7Cit0eXBlZGVm IHVuc2lnbmVkIGNoYXIgZWVfdTg7CisKK19fYXR0cmlidXRlX18gKChub2lu bGluZSxvcHRpbWl6ZSgwKSkpCitlZV91MzIgY3JjdTMyX08wIChlZV91OCBk YXRhLCBlZV91MzIgY3JjKSB7CisgIGVlX3UzMiBpID0gMCwgeDE2ID0gMCwg Y2FycnkgPSAwOworICBmb3IgKGkgPSAwOyBpIDwgODsgaSsrKSB7CisgICAg ICB4MTYgPSAoKGRhdGEgJiAxKSBeIChjcmMgJiAxKSk7CisgICAgICBkYXRh ID4+PSAxOworICAgICAgaWYgKHgxNiA9PSAxKSB7CisJICBjcmMgXj0gMHg0 MDAyMTIzOworCSAgY2FycnkgPSAxOworCX0gZWxzZQorCWNhcnJ5ID0gMDsK KyAgICAgIGNyYyA+Pj0gMTsKKyAgICAgIGlmIChjYXJyeSkKKwljcmMgfD0g MHg4MDAwMDAwMDsKKyAgICAgIGVsc2UKKwljcmMgJj0gMHg3ZmZmZmZmZjsK KyAgICB9CisgIHJldHVybiBjcmM7Cit9CisKK2VlX3UzMiBjcmN1MzIgKGVl X3U4IGRhdGEsIGVlX3UzMiBjcmMpIHsKKyAgZWVfdTMyIGkgPSAwLCB4MTYg PSAwLCBjYXJyeSA9IDA7CisgIGZvciAoaSA9IDA7IGkgPCA4OyBpKyspIHsK KyAgICAgIHgxNiA9ICgoZGF0YSAmIDEpIF4gKGNyYyAmIDEpKTsKKyAgICAg IGRhdGEgPj49IDE7CisgICAgICBpZiAoeDE2ID09IDEpIHsKKwkgIGNyYyBe PSAweDQwMDIxMjM7CisJICBjYXJyeSA9IDE7CisJfSBlbHNlCisJY2Fycnkg PSAwOworICAgICAgY3JjID4+PSAxOworICAgICAgaWYgKGNhcnJ5KQorCWNy YyB8PSAweDgwMDAwMDAwOworICAgICAgZWxzZQorCWNyYyAmPSAweDdmZmZm ZmZmOworICAgIH0KKyAgcmV0dXJuIGNyYzsKK30KKworaW50IG1haW4gKCkK K3sKKyAgZWVfdTMyIGNyYyA9IDA7CisgIGZvciAoZWVfdTggaSA9IDA7IGkg PCAweGZmOyBpKyspCisgICAgeworICAgICAgZWVfdTMyIHJlczEgPSBjcmN1 MzJfTzAgKGksIGNyYyk7CisgICAgICBlZV91MzIgcmVzMiA9IGNyY3UzMiAo aSwgY3JjKTsKKyAgICAgIGlmIChyZXMxICE9IHJlczIpCisJYWJvcnQgKCk7 CisgICAgICBjcmMgPSByZXMxOworICAgIH0KK30KKy8qIHsgZGctZmluYWwg eyBzY2FuLXRyZWUtZHVtcCAiZnVuY3Rpb24gbWF5YmUgY29udGFpbnMgQ1JD IGNhbGN1bGF0aW9uLiIgImNyYyJ9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBz Y2FuLXRyZWUtZHVtcCAiTG9vcCBpdGVyYXRpb24gbnVtYmVyIGlzIDciICJj cmMifSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgIkJp dCByZXZlcnNlZCIgImNyYyJ9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2Fu LXRyZWUtZHVtcCAiY2FsY3VsYXRlcyBDUkMhIiAiY3JjIn0gfSAqLwpkaWZm IC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdG9ydHVyZS9jcmMtY29y ZW1hcms2NC1kYXRhNjQuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RvcnR1 cmUvY3JjLWNvcmVtYXJrNjQtZGF0YTY0LmMKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAuLmU1N2U4MjgxM2NmCi0tLSAvZGV2L251 bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdG9ydHVyZS9jcmMtY29y ZW1hcms2NC1kYXRhNjQuYwpAQCAtMCwwICsxLDYzIEBACisvKiB7IGRnLWRv IHJ1biB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1mZHVtcC10cmVlLWNyYy1k ZXRhaWxzIC13IiB9ICovCisvKiB7IGRnLXNraXAtaWYgIiIgeyAqLSotKiB9 IHsgIi1PMCIgIi1PMSIgIi1nIiAiLU9zIiAiLWZsdG8ifSB9ICovCisKKyNp bmNsdWRlIDxzdGRsaWIuaD4KKwordHlwZWRlZiB1bnNpZ25lZCBsb25nIGxv bmcgaW50IGVlX3U2NDsKKworX19hdHRyaWJ1dGVfXyAoKG5vaW5saW5lLG9w dGltaXplKDApKSkKK2VlX3U2NCBjcmN1NjRfTzAgKGVlX3U2NCBkYXRhLCBl ZV91NjQgY3JjKSB7CisgIGVlX3U2NCBpID0gMCwgeDE2ID0gMCwgY2Fycnkg PSAwOworICBmb3IgKGkgPSAwOyBpIDwgNjQ7IGkrKykgeworICAgICAgeDE2 ID0gKChkYXRhICYgMSkgXiAoY3JjICYgMSkpOworICAgICAgZGF0YSA+Pj0g MTsKKyAgICAgIGlmICh4MTYgPT0gMSkgeworCSAgY3JjIF49IDB4NDAwMjEy M2Y0MDAyMTIzZjsKKwkgIGNhcnJ5ID0gMTsKKwl9IGVsc2UKKwljYXJyeSA9 IDA7CisgICAgICBjcmMgPj49IDE7CisgICAgICBpZiAoY2FycnkpCisJY3Jj IHw9IDB4ODAwMDAwMDAwMDAwMDAwMDsKKyAgICAgIGVsc2UKKwljcmMgJj0g MHg3ZmZmZmZmZmZmZmZmZmZmOworICAgIH0KKyAgcmV0dXJuIGNyYzsKK30K KworZWVfdTY0IGNyY3U2NCAoZWVfdTY0IGRhdGEsIGVlX3U2NCBjcmMpIHsK KyAgZWVfdTY0IGkgPSAwLCB4MTYgPSAwLCBjYXJyeSA9IDA7CisgIGZvciAo aSA9IDA7IGkgPCA2NDsgaSsrKSB7CisgICAgICB4MTYgPSAoKGRhdGEgJiAx KSBeIChjcmMgJiAxKSk7CisgICAgICBkYXRhID4+PSAxOworICAgICAgaWYg KHgxNiA9PSAxKSB7CisJICBjcmMgXj0gMHg0MDAyMTIzZjQwMDIxMjNmOwor CSAgY2FycnkgPSAxOworCX0gZWxzZQorCWNhcnJ5ID0gMDsKKyAgICAgIGNy YyA+Pj0gMTsKKyAgICAgIGlmIChjYXJyeSkKKwljcmMgfD0gMHg4MDAwMDAw MDAwMDAwMDAwOworICAgICAgZWxzZQorCWNyYyAmPSAweDdmZmZmZmZmZmZm ZmZmZmY7CisgICAgfQorICByZXR1cm4gY3JjOworfQorCitpbnQgbWFpbiAo KQoreworICBlZV91NjQgY3JjID0gMDsKKyAgZm9yIChlZV91NjQgaSA9IDA7 IGkgPCAweGZmOyBpKyspCisgICAgeworICAgICAgZWVfdTY0IHJlczEgPSBj cmN1NjRfTzAgKGksIGNyYyk7CisgICAgICBlZV91NjQgcmVzMiA9IGNyY3U2 NCAoaSwgY3JjKTsKKyAgICAgIGlmIChyZXMxICE9IHJlczIpCisJYWJvcnQg KCk7CisgICAgICBjcmMgPSByZXMxOworICAgIH0KK30KKy8qIHsgZGctZmlu YWwgeyBzY2FuLXRyZWUtZHVtcCAiZnVuY3Rpb24gbWF5YmUgY29udGFpbnMg Q1JDIGNhbGN1bGF0aW9uLiIgImNyYyJ9IH0gKi8KKy8qIHsgZGctZmluYWwg eyBzY2FuLXRyZWUtZHVtcCAiTG9vcCBpdGVyYXRpb24gbnVtYmVyIGlzIDYz IiAiY3JjIn0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1w ICJCaXQgcmV2ZXJzZWQiICJjcmMifSB9ICovCisvKiB7IGRnLWZpbmFsIHsg c2Nhbi10cmVlLWR1bXAgImNhbGN1bGF0ZXMgQ1JDISIgImNyYyJ9IH0gKi8K ZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RvcnR1cmUvY3Jj LWNvcmVtYXJrOC1kYXRhOC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdG9y dHVyZS9jcmMtY29yZW1hcms4LWRhdGE4LmMKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAuLmIxNmM3MjBiYjU4Ci0tLSAvZGV2L251 bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdG9ydHVyZS9jcmMtY29y ZW1hcms4LWRhdGE4LmMKQEAgLTAsMCArMSw2MyBAQAorLyogeyBkZy1kbyBy dW4gfSAqLworLyogeyBkZy1vcHRpb25zICItZmR1bXAtdHJlZS1jcmMtZGV0 YWlscyAtdyIgfSAqLworLyogeyBkZy1za2lwLWlmICIiIHsgKi0qLSogfSB7 ICItTzAiICItTzEiICItZyIgIi1PcyIgIi1mbHRvIn0gfSAqLworCisjaW5j bHVkZSA8c3RkbGliLmg+CisKK3R5cGVkZWYgdW5zaWduZWQgY2hhciBlZV91 ODsKKworX19hdHRyaWJ1dGVfXyAoKG5vaW5saW5lLG9wdGltaXplKDApKSkK K2VlX3U4IGNyY3U4X08wKGVlX3U4IGRhdGEsIGVlX3U4IGNyYykgeworICBl ZV91OCBpID0gMCwgeDE2ID0gMCwgY2FycnkgPSAwOworICBmb3IgKGkgPSAw OyBpIDwgODsgaSsrKSB7CisgICAgICB4MTYgPSAoKGRhdGEgJiAxKSBeIChj cmMgJiAxKSk7CisgICAgICBkYXRhID4+PSAxOworICAgICAgaWYgKHgxNiA9 PSAxKSB7CisJICBjcmMgXj0gMHg0MDsKKwkgIGNhcnJ5ID0gMTsKKwl9IGVs c2UKKwljYXJyeSA9IDA7CisgICAgICBjcmMgPj49IDE7CisgICAgICBpZiAo Y2FycnkpCisJY3JjIHw9IDB4ODA7CisgICAgICBlbHNlCisJY3JjICY9IDB4 N2Y7CisgICAgfQorICByZXR1cm4gY3JjOworfQorCitlZV91OCBjcmN1OChl ZV91OCBkYXRhLCBlZV91OCBjcmMpIHsKKyAgZWVfdTggaSA9IDAsIHgxNiA9 IDAsIGNhcnJ5ID0gMDsKKyAgZm9yIChpID0gMDsgaSA8IDg7IGkrKykgewor ICAgICAgeDE2ID0gKChkYXRhICYgMSkgXiAoY3JjICYgMSkpOworICAgICAg ZGF0YSA+Pj0gMTsKKyAgICAgIGlmICh4MTYgPT0gMSkgeworCSAgY3JjIF49 IDB4NDA7CisJICBjYXJyeSA9IDE7CisJfSBlbHNlCisJY2FycnkgPSAwOwor ICAgICAgY3JjID4+PSAxOworICAgICAgaWYgKGNhcnJ5KQorCWNyYyB8PSAw eDgwOworICAgICAgZWxzZQorCWNyYyAmPSAweDdmOworICAgIH0KKyAgcmV0 dXJuIGNyYzsKK30KKworaW50IG1haW4gKCkKK3sKKyAgZWVfdTggY3JjID0g MDsKKyAgZm9yIChlZV91OCBpID0gMDsgaSA8IDB4ZmY7IGkrKykKKyAgICB7 CisgICAgICBlZV91OCByZXMxID0gY3JjdThfTzAgKGksIGNyYyk7CisgICAg ICBlZV91OCByZXMyID0gY3JjdTggKGksIGNyYyk7CisgICAgICBpZiAocmVz MSAhPSByZXMyKQorCWFib3J0ICgpOworICAgICAgY3JjID0gcmVzMTsKKyAg ICB9Cit9CisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgImZ1bmN0 aW9uIG1heWJlIGNvbnRhaW5zIENSQyBjYWxjdWxhdGlvbi4iICJjcmMifSB9 ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgIkxvb3AgaXRl cmF0aW9uIG51bWJlciBpcyA3IiAiY3JjIn0gfSAqLworLyogeyBkZy1maW5h bCB7IHNjYW4tdHJlZS1kdW1wICJCaXQgcmV2ZXJzZWQiICJjcmMifSB9ICov CisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgImNhbGN1bGF0ZXMg Q1JDISIgImNyYyJ9IH0gKi8KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUv Z2NjLmRnL3RvcnR1cmUvY3JjLWNyYzMyLWRhdGExNi5jIGIvZ2NjL3Rlc3Rz dWl0ZS9nY2MuZGcvdG9ydHVyZS9jcmMtY3JjMzItZGF0YTE2LmMKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmY2ZDQ3MjVjZTgw Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdG9y dHVyZS9jcmMtY3JjMzItZGF0YTE2LmMKQEAgLTAsMCArMSw1MSBAQAorLyog eyBkZy1kbyBydW4gfSAqLworLyogeyBkZy1vcHRpb25zICItZmR1bXAtdHJl ZS1jcmMtZGV0YWlscyAtdyIgfSAqLworLyogeyBkZy1za2lwLWlmICIiIHsg Ki0qLSogfSB7ICItTzAiICItTzEiICItZyIgIi1PcyIgIi1mbHRvIn0gfSAq LworCisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8c3RkbGliLmg+ CisKK19fYXR0cmlidXRlX18gKChub2lubGluZSxvcHRpbWl6ZSgwKSkpCit1 aW50MzJfdCBfY3JjMzJfTzAgKHVpbnQxNl90IGRhdGEsIHVpbnQzMl90IGNy YykgeworICBpbnQgaTsKKyAgZm9yIChpID0gMDsgaSA8IDE2OyBpKyspIHsK KyAgICAgIGlmICgoY3JjICYgMHg4MDAwMDAwMCkgPj4gMTYgXiAoZGF0YSAm IDB4ODAwMCkpCisJY3JjID0gKGNyYyA8PCAxKSBeIDB4MDRDMTFEQjc7Cisg ICAgICBlbHNlCisJY3JjID0gKGNyYyA8PCAxKTsKKyAgICAgIGRhdGEgPDw9 IDE7CisgICAgfQorICByZXR1cm4gY3JjOworfQorCit1aW50MzJfdCBfY3Jj MzIgKHVpbnQxNl90IGRhdGEsIHVpbnQzMl90IGNyYykgeworICBpbnQgaTsK KyAgZm9yIChpID0gMDsgaSA8IDE2OyBpKyspIHsKKyAgICAgIGlmICgoY3Jj ICYgMHg4MDAwMDAwMCkgPj4gMTYgXiAoZGF0YSAmIDB4ODAwMCkpCisJY3Jj ID0gKGNyYyA8PCAxKSBeIDB4MDRDMTFEQjc7CisgICAgICBlbHNlCisJY3Jj ID0gKGNyYyA8PCAxKTsKKyAgICAgIGRhdGEgPDw9IDE7CisgICAgfQorICBy ZXR1cm4gY3JjOworfQorCitpbnQgbWFpbiAoKQoreworICB1aW50MzJfdCBj cmMgPSAwOworCisgIGZvciAodWludDE2X3QgaSA9IDA7IGkgPCAweGZmOyBp KyspCisgICAgeworICAgICAgdWludDMyX3QgcmVzMSA9IF9jcmMzMl9PMCAo aSwgY3JjKTsKKyAgICAgIHVpbnQzMl90IHJlczIgPSBfY3JjMzIgKGksIGNy Yyk7CisgICAgICBjcmMgPSByZXMyOworICAgICAgaWYgKHJlczEgIT0gcmVz MikKKwlhYm9ydCAoKTsKKyAgICB9Cit9CisKKy8qIHsgZGctZmluYWwgeyBz Y2FuLXRyZWUtZHVtcCAiZnVuY3Rpb24gbWF5YmUgY29udGFpbnMgQ1JDIGNh bGN1bGF0aW9uLiIgImNyYyJ9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2Fu LXRyZWUtZHVtcCAiTG9vcCBpdGVyYXRpb24gbnVtYmVyIGlzIDE1IiAiY3Jj In0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJCaXQg Zm9yd2FyZCIgImNyYyJ9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRy ZWUtZHVtcCAiY2FsY3VsYXRlcyBDUkMuIiAiY3JjIn0gfSAqLworLyogeyBk Zy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJDb3VsZG4ndCBnZW5l cmF0ZSBmYXN0ZXIgQ1JDIGNvZGUuIiAwICJjcmMifSB9ICovClwgTm8gbmV3 bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0 ZS9nY2MuZGcvdG9ydHVyZS9jcmMtY3JjMzItZGF0YTI0LmMgYi9nY2MvdGVz dHN1aXRlL2djYy5kZy90b3J0dXJlL2NyYy1jcmMzMi1kYXRhMjQuYwpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNGQzYWZhMjZj MzgKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy90 b3J0dXJlL2NyYy1jcmMzMi1kYXRhMjQuYwpAQCAtMCwwICsxLDIwIEBACisv KiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItZmR1 bXAtdHJlZS1jcmMtZGV0YWlscyIgfSAqLworLyogeyBkZy1za2lwLWlmICIi IHsgKi0qLSogfSB7ICItTzAiICItTzEiICItT3MiICItZmx0byJ9IH0gKi8K KworI2luY2x1ZGUgPHN0ZGludC5oPgordWludDMyX3QgX2NyYzMyICh1aW50 MzJfdCBkYXRhLCB1aW50MzJfdCBjcmMpIHsKKyAgaW50IGk7CisgIGZvciAo aSA9IDA7IGkgPCAyNDsgaSsrKSB7CisgICAgICBpZiAoKGNyYyAmIDB4ODAw MDAwMDApID4+IDggXiAoZGF0YSAmIDB4ODAwMDAwKSkKKwljcmMgPSAoY3Jj IDw8IDEpIF4gMHgwNEMxMURCNzsKKyAgICAgIGVsc2UKKwljcmMgPSAoY3Jj IDw8IDEpOworICAgICAgZGF0YSA8PD0gMTsKKyAgICB9CisgIHJldHVybiBj cmM7Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAiX2Ny YzMyIGZ1bmN0aW9uIG1heWJlIGNvbnRhaW5zIENSQyBjYWxjdWxhdGlvbi4i ICJjcmMifSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAg Ikxvb3AgaXRlcmF0aW9uIG51bWJlciBpcyAyMyIgImNyYyJ9IH0gKi8KKy8q IHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAiQml0IGZvcndhcmQiICJj cmMifSB9ICovCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy90 b3J0dXJlL2NyYy1jcmMzMi1kYXRhOC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2Mu ZGcvdG9ydHVyZS9jcmMtY3JjMzItZGF0YTguYwpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uOTRjYTdmMmMxMTQKLS0tIC9kZXYv bnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy90b3J0dXJlL2NyYy1j cmMzMi1kYXRhOC5jCkBAIC0wLDAgKzEsNTEgQEAKKy8qIHsgZGctZG8gcnVu IH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLWZkdW1wLXRyZWUtY3JjLWRldGFp bHMgLXciIH0gKi8KKy8qIHsgZGctc2tpcC1pZiAiIiB7ICotKi0qIH0geyAi LU8wIiAiLU8xIiAiLWciICItT3MiICItZmx0byJ9IH0gKi8KKworI2luY2x1 ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorCitfX2F0dHJp YnV0ZV9fICgobm9pbmxpbmUsb3B0aW1pemUoMCkpKQordWludDMyX3QgX2Ny YzMyX08wICh1aW50OF90IGRhdGEsIHVpbnQzMl90IGNyYykgeworICBpbnQg aTsKKyAgZm9yIChpID0gMDsgaSA8IDg7IGkrKykgeworICAgICAgaWYgKChj cmMgJiAweDgwMDAwMDAwKSA+PiAyNCBeIChkYXRhICYgMHg4MCkpCisJY3Jj ID0gKGNyYyA8PCAxKSBeIDB4MDRDMTFEQjc7CisgICAgICBlbHNlCisJY3Jj ID0gKGNyYyA8PCAxKTsKKyAgICAgIGRhdGEgPDw9IDE7CisgICAgfQorICBy ZXR1cm4gY3JjOworfQorCit1aW50MzJfdCBfY3JjMzIgKHVpbnQ4X3QgZGF0 YSwgdWludDMyX3QgY3JjKSB7CisgIGludCBpOworICBmb3IgKGkgPSAwOyBp IDwgODsgaSsrKSB7CisgICAgICBpZiAoKGNyYyAmIDB4ODAwMDAwMDApID4+ IDI0IF4gKGRhdGEgJiAweDgwKSkKKwljcmMgPSAoY3JjIDw8IDEpIF4gMHgw NEMxMURCNzsKKyAgICAgIGVsc2UKKwljcmMgPSAoY3JjIDw8IDEpOworICAg ICAgZGF0YSA8PD0gMTsKKyAgICB9CisgIHJldHVybiBjcmM7Cit9CisKK2lu dCBtYWluICgpCit7CisgIHVpbnQzMl90IGNyYyA9IDA7CisKKyAgZm9yICh1 aW50OF90IGkgPSAwOyBpIDwgMHhmZjsgaSsrKQorICAgIHsKKyAgICAgIHVp bnQzMl90IHJlczEgPSBfY3JjMzJfTzAgKGksIGNyYyk7CisgICAgICB1aW50 MzJfdCByZXMyID0gX2NyYzMyIChpLCBjcmMpOworICAgICAgY3JjID0gcmVz MjsKKyAgICAgIGlmIChyZXMxICE9IHJlczIpCisJYWJvcnQgKCk7CisgICAg fQorfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgImZ1bmN0 aW9uIG1heWJlIGNvbnRhaW5zIENSQyBjYWxjdWxhdGlvbi4iICJjcmMifSB9 ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgIkxvb3AgaXRl cmF0aW9uIG51bWJlciBpcyA3IiAiY3JjIn0gfSAqLworLyogeyBkZy1maW5h bCB7IHNjYW4tdHJlZS1kdW1wICJCaXQgZm9yd2FyZCIgImNyYyJ9IH0gKi8K Ky8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAiY2FsY3VsYXRlcyBD UkMuIiAiY3JjIn0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1k dW1wLXRpbWVzICJDb3VsZG4ndCBnZW5lcmF0ZSBmYXN0ZXIgQ1JDIGNvZGUu IiAwICJjcmMifSB9ICovClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk aWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdG9ydHVyZS9jcmMt Y3JjMzIuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RvcnR1cmUvY3JjLWNy YzMyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAu LmRjOTM2YmE1MTM2Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0 ZS9nY2MuZGcvdG9ydHVyZS9jcmMtY3JjMzIuYwpAQCAtMCwwICsxLDUxIEBA CisvKiB7IGRnLWRvIHJ1biB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1mZHVt cC10cmVlLWNyYy1kZXRhaWxzIC13IiB9ICovCisvKiB7IGRnLXNraXAtaWYg IiIgeyAqLSotKiB9IHsgIi1PMCIgIi1PMSIgIi1nIiAiLU9zIiAiLWZsdG8i fSB9ICovCisKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRlIDxzdGRs aWIuaD4KKworX19hdHRyaWJ1dGVfXyAoKG5vaW5saW5lLG9wdGltaXplKDAp KSkKK3VpbnQzMl90IF9jcmMzMl9PMCAodWludDMyX3QgZGF0YSwgdWludDMy X3QgY3JjKSB7CisgIGludCBpOworICBmb3IgKGkgPSAwOyBpIDwgMzI7IGkr KykgeworICAgICAgaWYgKChjcmMgJiAweDgwMDAwMDAwKSBeIChkYXRhICYg MHg4MDAwMDAwMCkpCisJY3JjID0gKGNyYyA8PCAxKSBeIDB4MDRDMTFEQjc7 CisgICAgICBlbHNlCisJY3JjID0gKGNyYyA8PCAxKTsKKyAgICAgIGRhdGEg PDw9IDE7CisgICAgfQorICByZXR1cm4gY3JjOworfQorCit1aW50MzJfdCBf Y3JjMzIgKHVpbnQzMl90IGRhdGEsIHVpbnQzMl90IGNyYykgeworICBpbnQg aTsKKyAgZm9yIChpID0gMDsgaSA8IDMyOyBpKyspIHsKKyAgICAgIGlmICgo Y3JjICYgMHg4MDAwMDAwMCkgXiAoZGF0YSAmIDB4ODAwMDAwMDApKQorCWNy YyA9IChjcmMgPDwgMSkgXiAweDA0QzExREI3OworICAgICAgZWxzZQorCWNy YyA9IChjcmMgPDwgMSk7CisgICAgICBkYXRhIDw8PSAxOworICAgIH0KKyAg cmV0dXJuIGNyYzsKK30KKworaW50IG1haW4gKCkKK3sKKyAgdWludDMyX3Qg Y3JjID0gMDsKKworICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgMHhmZmZm OyBpKyspCisgICAgeworICAgICAgdWludDMyX3QgcmVzMSA9IF9jcmMzMl9P MCAoaSwgY3JjKTsKKyAgICAgIHVpbnQzMl90IHJlczIgPSBfY3JjMzIgKGks IGNyYyk7CisgICAgICBpZiAocmVzMSAhPSByZXMyKQorCWFib3J0ICgpOwor ICAgICAgY3JjID0gcmVzMjsKKyAgICB9Cit9CisKKy8qIHsgZGctZmluYWwg eyBzY2FuLXRyZWUtZHVtcCAiZnVuY3Rpb24gbWF5YmUgY29udGFpbnMgQ1JD IGNhbGN1bGF0aW9uLiIgImNyYyJ9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBz Y2FuLXRyZWUtZHVtcCAiTG9vcCBpdGVyYXRpb24gbnVtYmVyIGlzIDMxIiAi Y3JjIn0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJC aXQgZm9yd2FyZCIgImNyYyJ9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2Fu LXRyZWUtZHVtcCAiY2FsY3VsYXRlcyBDUkMuIiAiY3JjIn0gfSAqLworLyog eyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJDb3VsZG4ndCBn ZW5lcmF0ZSBmYXN0ZXIgQ1JDIGNvZGUuIiAwICJjcmMifSB9ICovClwgTm8g bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3Rz dWl0ZS9nY2MuZGcvdG9ydHVyZS9jcmMtY3JjNjQtZGF0YTMyLmMgYi9nY2Mv dGVzdHN1aXRlL2djYy5kZy90b3J0dXJlL2NyYy1jcmM2NC1kYXRhMzIuYwpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNTlkODUz YzE1OWYKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy5k Zy90b3J0dXJlL2NyYy1jcmM2NC1kYXRhMzIuYwpAQCAtMCwwICsxLDUyIEBA CisvKiB7IGRnLWRvIHJ1biB7IHRhcmdldCBscDY0IH0gfSAqLworLyogeyBk Zy1vcHRpb25zICItZmR1bXAtdHJlZS1jcmMtZGV0YWlscyAtdyIgfSAqLwor LyogeyBkZy1za2lwLWlmICIiIHsgKi0qLSogfSB7ICItTzAiICItTzEiICIt ZyIgIi1PcyIgIi1mbHRvIn0gfSAqLworCisjaW5jbHVkZSA8c3RkaW50Lmg+ CisjaW5jbHVkZSA8c3RkbGliLmg+CisKKy8vIENSQzY0X0VDTUFfMTgyCitf X2F0dHJpYnV0ZV9fICgobm9pbmxpbmUsb3B0aW1pemUoMCkpKQordWludDY0 X3QgX2NyYzY0X08wICh1aW50MzJfdCBkYXRhLCB1aW50NjRfdCBjcmMpIHsK KyAgaW50IGk7CisgIGZvciAoaSA9IDA7IGkgPCAzMjsgaSsrKSB7CisgICAg ICBpZiAoKChjcmMgJiAweDgwMDAwMDAwMDAwMDAwMDApID4+IDMyIF4gKGRh dGEgJiAweDgwMDAwMDAwKSkpCisJY3JjID0gKGNyYyA8PCAxKSBeIDB4NDJG MEUxRUJBOUVBMzY5MzsKKyAgICAgIGVsc2UKKwljcmMgPSAoY3JjIDw8IDEp OworICAgICAgZGF0YSA8PD0gMTsKKyAgICB9CisgIHJldHVybiBjcmM7Cit9 CisKK3VpbnQ2NF90IF9jcmM2NCAodWludDMyX3QgZGF0YSwgdWludDY0X3Qg Y3JjKSB7CisgIGludCBpOworICBmb3IgKGkgPSAwOyBpIDwgMzI7IGkrKykg eworICAgICAgaWYgKCgoY3JjICYgMHg4MDAwMDAwMDAwMDAwMDAwKSA+PiAz MiBeIChkYXRhICYgMHg4MDAwMDAwMCkpKQorCWNyYyA9IChjcmMgPDwgMSkg XiAweDQyRjBFMUVCQTlFQTM2OTM7CisgICAgICBlbHNlCisJY3JjID0gKGNy YyA8PCAxKTsKKyAgICAgIGRhdGEgPDw9IDE7CisgICAgfQorICByZXR1cm4g Y3JjOworfQorCitpbnQgbWFpbiAoKQoreworICB1aW50NjRfdCBjcmMgPSAw OworCisgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCAweGZmOyBpKyspCisg ICAgeworICAgICAgdWludDY0X3QgcmVzMSA9IF9jcmM2NF9PMCAoaSwgY3Jj KTsKKyAgICAgIHVpbnQ2NF90IHJlczIgPSBfY3JjNjQgKGksIGNyYyk7Cisg ICAgICBjcmMgPSByZXMyOworICAgICAgaWYgKHJlczEgIT0gcmVzMikKKwlh Ym9ydCAoKTsKKyAgICB9Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLXRy ZWUtZHVtcCAiZnVuY3Rpb24gbWF5YmUgY29udGFpbnMgQ1JDIGNhbGN1bGF0 aW9uLiIgImNyYyJ9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUt ZHVtcCAiTG9vcCBpdGVyYXRpb24gbnVtYmVyIGlzIDMxIiAiY3JjIn0gfSAq LworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJCaXQgZm9yd2Fy ZCIgImNyYyJ9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVt cCAiY2FsY3VsYXRlcyBDUkMhIiAiY3JjIn0gfSAqLworLyogeyBkZy1maW5h bCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJDb3VsZG4ndCBnZW5lcmF0ZSBm YXN0ZXIgQ1JDIGNvZGUuIiAwICJjcmMifSB9ICovCmRpZmYgLS1naXQgYS9n Y2MvdGVzdHN1aXRlL2djYy5kZy90b3J0dXJlL2NyYy1jcmM2NC1kYXRhNjQu YyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RvcnR1cmUvY3JjLWNyYzY0LWRh dGE2NC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw Li5jYmY4MjI4YTkxMAotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3Vp dGUvZ2NjLmRnL3RvcnR1cmUvY3JjLWNyYzY0LWRhdGE2NC5jCkBAIC0wLDAg KzEsNTIgQEAKKy8qIHsgZGctZG8gcnVuIHsgdGFyZ2V0IGxwNjQgfSB9ICov CisvKiB7IGRnLW9wdGlvbnMgIi1mZHVtcC10cmVlLWNyYy1kZXRhaWxzIC13 IiB9ICovCisvKiB7IGRnLXNraXAtaWYgIiIgeyAqLSotKiB9IHsgIi1PMCIg Ii1PMSIgIi1nIiAiLU9zIiAiLWZsdG8ifSB9ICovCisKKyNpbmNsdWRlIDxz dGRpbnQuaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKworLy8gQ1JDNjRfRUNN QV8xODIKK19fYXR0cmlidXRlX18gKChub2lubGluZSxvcHRpbWl6ZSgwKSkp Cit1aW50NjRfdCBfY3JjNjRfTzAgKHVpbnQ2NF90IGNyYywgdWludDY0X3Qg ZGF0YSkgeworICBpbnQgaTsKKyAgZm9yIChpID0gMDsgaSA8IDY0OyBpKysp IHsKKyAgICAgIGlmICgoKGNyYyAmIDB4ODAwMDAwMDAwMDAwMDAwMCkgXiAo ZGF0YSAmIDB4ODAwMDAwMDAwMDAwMDAwMCkpKQorCWNyYyA9IChjcmMgPDwg MSkgXiAweDQyRjBFMUVCQTlFQTM2OTM7CisgICAgICBlbHNlCisJY3JjID0g KGNyYyA8PCAxKTsKKyAgICAgIGRhdGEgPDw9IDE7CisgICAgfQorICByZXR1 cm4gY3JjOworfQorCit1aW50NjRfdCBfY3JjNjQgKHVpbnQ2NF90IGNyYywg dWludDY0X3QgZGF0YSkgeworICBpbnQgaTsKKyAgZm9yIChpID0gMDsgaSA8 IDY0OyBpKyspIHsKKyAgICAgIGlmICgoKGNyYyAmIDB4ODAwMDAwMDAwMDAw MDAwMCkgXiAoZGF0YSAmIDB4ODAwMDAwMDAwMDAwMDAwMCkpKQorCWNyYyA9 IChjcmMgPDwgMSkgXiAweDQyRjBFMUVCQTlFQTM2OTM7CisgICAgICBlbHNl CisJY3JjID0gKGNyYyA8PCAxKTsKKyAgICAgIGRhdGEgPDw9IDE7CisgICAg fQorICByZXR1cm4gY3JjOworfQorCitpbnQgbWFpbiAoKQoreworICB1aW50 NjRfdCBjcmMgPSAwOworCisgIGZvciAodWludDY0X3QgaSA9IDA7IGkgPCAw eGZmOyBpKyspCisgICAgeworICAgICAgdWludDY0X3QgcmVzMSA9IF9jcmM2 NF9PMCAoaSwgY3JjKTsKKyAgICAgIHVpbnQ2NF90IHJlczIgPSBfY3JjNjQg KGksIGNyYyk7CisgICAgICBjcmMgPSByZXMyOworICAgICAgaWYgKHJlczEg IT0gcmVzMikKKwlhYm9ydCAoKTsKKyAgICB9Cit9CisKKy8qIHsgZGctZmlu YWwgeyBzY2FuLXRyZWUtZHVtcCAiZnVuY3Rpb24gbWF5YmUgY29udGFpbnMg Q1JDIGNhbGN1bGF0aW9uLiIgImNyYyJ9IH0gKi8KKy8qIHsgZGctZmluYWwg eyBzY2FuLXRyZWUtZHVtcCAiTG9vcCBpdGVyYXRpb24gbnVtYmVyIGlzIDYz IiAiY3JjIn0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1w ICJCaXQgZm9yd2FyZCIgImNyYyJ9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBz Y2FuLXRyZWUtZHVtcCAiY2FsY3VsYXRlcyBDUkMhIiAiY3JjIn0gfSAqLwor LyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJDb3VsZG4n dCBnZW5lcmF0ZSBmYXN0ZXIgQ1JDIGNvZGUuIiAwICJjcmMifSB9ICovClwg Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ2NjL3Rl c3RzdWl0ZS9nY2MuZGcvdG9ydHVyZS9jcmMtY3JjOC1kYXRhOC1sb29wLXhv ckluRm9yLmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy90b3J0dXJlL2NyYy1j cmM4LWRhdGE4LWxvb3AteG9ySW5Gb3IuYwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMC4uOGYwMjNkMzdmYTgKLS0tIC9kZXYvbnVs bAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy90b3J0dXJlL2NyYy1jcmM4 LWRhdGE4LWxvb3AteG9ySW5Gb3IuYwpAQCAtMCwwICsxLDMzIEBACisvKiB7 IGRnLWRvIHJ1biB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1mZHVtcC10cmVl LWNyYy1kZXRhaWxzIiB9ICovCisvKiB7IGRnLXNraXAtaWYgIiIgeyAqLSot KiB9IHsgIi1PMCIgIi1PMSIgIi1nIiAiLU9zIiAiLWZ1bnJvbGwtbG9vcHMi ICItZnBlZWwtbG9vcHMiICItZmx0byJ9IH0gKi8KKworI2luY2x1ZGUgPHN0 ZGRlZi5oPgorI2luY2x1ZGUgPGFzc2VydC5oPgorCit0eXBlZGVmIHVuc2ln bmVkIGNoYXIgdWludDhfdDsKKwordWludDhfdCBnZW5jcmMgKHVpbnQ4X3Qg Km1lc3NhZ2UsIHNpemVfdCBsZW4pIHsKKyAgdWludDhfdCBjcmMgPSAwOwor ICBzaXplX3QgaSwgajsKKyAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7 CisgICAgICB1aW50OF90IGRhdGEgPSBtZXNzYWdlW2ldOworICAgICAgZm9y IChqID0gMDsgaiA8IDg7IGorKykgeworCSAgaWYgKCgoY3JjICYgMHg4MCkg XiAoZGF0YSAmIDB4ODApKSAhPSAwKQorCSAgICBjcmMgPSAodWludDhfdCkg KChjcmMgPDwgMSkgXiAweDMxKTsKKwkgIGVsc2UKKwkgICAgY3JjIDw8PSAx OworCSAgZGF0YSA8PD0xOworCX0KKyAgICB9CisgIHJldHVybiBjcmM7Cit9 CisKK2ludCBtYWluKCkKK3sKKyAgdWludDhfdCBtZXNzYWdlW10gPSAiSGVs bG8gd29ybGQhIjsKKyAgYXNzZXJ0IChnZW5jcmMobWVzc2FnZSwgMTIpID09 IDB4MjQpOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAg ImNhbGN1bGF0ZXMgQ1JDISIgImNyYyJ9IH0gKi8KKy8qIHsgZGctZmluYWwg eyBzY2FuLXRyZWUtZHVtcC10aW1lcyAiQ291bGRuJ3QgZ2VuZXJhdGUgZmFz dGVyIENSQyBjb2RlLiIgMCAiY3JjIn0gfSAqLwpkaWZmIC0tZ2l0IGEvZ2Nj L3Rlc3RzdWl0ZS9nY2MuZGcvdG9ydHVyZS9jcmMtY3JjOC1kYXRhOC1sb29w LXhvck91dHNpZGVGb3IuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RvcnR1 cmUvY3JjLWNyYzgtZGF0YTgtbG9vcC14b3JPdXRzaWRlRm9yLmMKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjEyYTdkNjdlYTZm Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdG9y dHVyZS9jcmMtY3JjOC1kYXRhOC1sb29wLXhvck91dHNpZGVGb3IuYwpAQCAt MCwwICsxLDMzIEBACisvKiB7IGRnLWRvIHJ1biB9ICovCisvKiB7IGRnLW9w dGlvbnMgIi1mZHVtcC10cmVlLWNyYy1kZXRhaWxzIiB9ICovCisvKiB7IGRn LXNraXAtaWYgIiIgeyAqLSotKiB9IHsgIi1PMCIgIi1PMSIgIi1nIiAiLU9z IiAiLWZ1bnJvbGwtbG9vcHMiICItZnBlZWwtbG9vcHMiICItZmx0byJ9IH0g Ki8KKworI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPGFzc2VydC5o PgorCit0eXBlZGVmIHVuc2lnbmVkIGNoYXIgdWludDhfdDsKKwordWludDhf dCBnZW5jcmMgKHVpbnQ4X3QgKm1lc3NhZ2UsIHNpemVfdCBsZW4pIHsKKyAg dWludDhfdCBjcmMgPSAwOworICBzaXplX3QgaSwgajsKKyAgZm9yIChpID0g MDsgaSA8IGxlbjsgaSsrKSB7CisgICAgICB1aW50OF90IGRhdGEgPSBtZXNz YWdlW2ldOworICAgICAgY3JjIF49IGRhdGE7CisgICAgICBmb3IgKGogPSAw OyBqIDwgODsgaisrKSB7CisJICBpZiAoKGNyYyAmIDB4ODApIT0gMCkKKwkg ICAgY3JjID0gKHVpbnQ4X3QpICgoY3JjIDw8IDEpIF4gMHgzMSk7CisJICBl bHNlCisJICAgIGNyYyA8PD0gMTsKKwl9CisgICAgfQorICByZXR1cm4gY3Jj OworfQorCitpbnQgbWFpbigpCit7CisgIHVpbnQ4X3QgbWVzc2FnZVtdID0g IkhlbGxvIHdvcmxkISI7CisgIGFzc2VydCAoZ2VuY3JjKG1lc3NhZ2UsIDEy KSA9PSAweDI0KTsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1k dW1wICJjYWxjdWxhdGVzIENSQyEiICJjcmMifSB9ICovCisvKiB7IGRnLWZp bmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgIkNvdWxkbid0IGdlbmVyYXRl IGZhc3RlciBDUkMgY29kZS4iIDAgImNyYyJ9IH0gKi8KXCBObyBuZXdsaW5l IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2dj Yy5kZy90b3J0dXJlL2NyYy1jcmM4LWRhdGE4LXhvck91c3RpZGVGb3IuYyBi L2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RvcnR1cmUvY3JjLWNyYzgtZGF0YTgt eG9yT3VzdGlkZUZvci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwLi5lM2Y5ZjY5MzAyYgotLS0gL2Rldi9udWxsCisrKyBiL2dj Yy90ZXN0c3VpdGUvZ2NjLmRnL3RvcnR1cmUvY3JjLWNyYzgtZGF0YTgteG9y T3VzdGlkZUZvci5jCkBAIC0wLDAgKzEsNTEgQEAKKy8qIHsgZGctZG8gcnVu IH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLWZkdW1wLXRyZWUtY3JjLWRldGFp bHMiIH0gKi8KKy8qIHsgZGctc2tpcC1pZiAiIiB7ICotKi0qIH0geyAiLU8w IiAiLU8xIiAiLWciICItT3MiICItZmx0byJ9IH0gKi8KKworI2luY2x1ZGUg PHN0ZGludC5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorCitfX2F0dHJpYnV0 ZV9fICgobm9pbmxpbmUsb3B0aW1pemUoMCkpKQordWludDhfdCBnZW5jcmNf TzAgKHVpbnQ4X3QgY3JjLCB1aW50OF90IGRhdGEpCit7CisgIHNpemVfdCBq OworICBjcmMgXj0gZGF0YTsKKyAgZm9yIChqID0gMDsgaiA8IDg7IGorKykK KyAgICB7CisgICAgICBpZiAoKGNyYyAmIDB4ODApICE9IDApCisJY3JjID0g KHVpbnQ4X3QpICgoY3JjIDw8IDEpIF4gMHgzMSk7CisgICAgICBlbHNlCisJ Y3JjIDw8PSAxOworICAgIH0KKyAgcmV0dXJuIGNyYzsKK30KKwordWludDhf dCBnZW5jcmMgKHVpbnQ4X3QgY3JjLCB1aW50OF90IGRhdGEpCit7CisgIHNp emVfdCBqOworICBjcmMgXj0gZGF0YTsKKyAgZm9yIChqID0gMDsgaiA8IDg7 IGorKykKKyAgICB7CisgICAgICBpZiAoKGNyYyAmIDB4ODApICE9IDApCisJ Y3JjID0gKHVpbnQ4X3QpICgoY3JjIDw8IDEpIF4gMHgzMSk7CisgICAgICBl bHNlCisJY3JjIDw8PSAxOworICAgIH0KKyAgcmV0dXJuIGNyYzsKK30KKwor aW50IG1haW4gKCkKK3sKKyAgdWludDhfdCBjcmMgPSAweDBEOworICBmb3Ig KHVpbnQ4X3QgaSA9IDA7IGkgPCAyNTU7IGkrKykKKyAgICB7CisgICAgICB1 aW50OF90IHJlczEgPSBnZW5jcmNfTzAgKGNyYywgaSk7CisgICAgICB1aW50 OF90IHJlczIgPSBnZW5jcmMgKGNyYywgaSk7CisgICAgICBpZiAocmVzMSAh PSByZXMyKQorCWFib3J0ICgpOworICAgICAgY3JjID0gcmVzMTsKKyAgICB9 Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAiY2FsY3Vs YXRlcyBDUkMhIiAiY3JjIn0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4t dHJlZS1kdW1wLXRpbWVzICJDb3VsZG4ndCBnZW5lcmF0ZSBmYXN0ZXIgQ1JD IGNvZGUuIiAwICJjcmMifSB9ICovClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg ZmlsZQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdG9ydHVy ZS9jcmMtY3JjOC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdG9ydHVyZS9j cmMtY3JjOC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwLi43M2FmZTczZTYzNQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0 c3VpdGUvZ2NjLmRnL3RvcnR1cmUvY3JjLWNyYzguYwpAQCAtMCwwICsxLDQ5 IEBACisvKiB7IGRnLWRvIHJ1biB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1m ZHVtcC10cmVlLWNyYy1kZXRhaWxzIC13IiB9ICovCisvKiB7IGRnLXNraXAt aWYgIiIgeyAqLSotKiB9IHsgIi1PMCIgIi1PMSIgIi1nIiAiLU9zIiAiLWZs dG8ifSB9ICovCisKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRlIDxz dGRsaWIuaD4KKworX19hdHRyaWJ1dGVfXyAoKG5vaW5saW5lLG9wdGltaXpl KDApKSkKK3VpbnQ4X3QgY3JjOF9PMCAodWludDhfdCBkYXRhLCB1aW50OF90 IGNyYykKK3sKKyAgaW50IGNhcnJ5OworICBmb3IgKGludCBpID0gMDsgaSA8 IDg7ICsraSkgeworICAgICAgY2FycnkgPSAoKGNyYyAmIDB4ODApIF4gKGRh dGEgJiAweDgwKSk7CisgICAgICBjcmMgPDw9IDE7CisgICAgICBkYXRhIDw8 PSAxOworICAgICAgaWYgKGNhcnJ5KSBjcmMgXj0gMHgyMTsKKyAgICB9Cisg IHJldHVybiBjcmM7Cit9CisKK3VpbnQ4X3QgY3JjOCAodWludDhfdCBkYXRh LCB1aW50OF90IGNyYykKK3sKKyAgaW50IGNhcnJ5OworICBmb3IgKGludCBp ID0gMDsgaSA8IDg7ICsraSkgeworICAgICAgY2FycnkgPSAoKGNyYyAmIDB4 ODApIF4gKGRhdGEgJiAweDgwKSk7CisgICAgICBjcmMgPDw9IDE7CisgICAg ICBkYXRhIDw8PSAxOworICAgICAgaWYgKGNhcnJ5KSBjcmMgXj0gMHgyMTsK KyAgICB9CisgIHJldHVybiBjcmM7Cit9CisKK2ludCBtYWluICgpCit7Cisg IHVpbnQ4X3QgY3JjID0gMHgwRDsKKyAgZm9yICh1aW50OF90IGkgPSAwOyBp IDwgMjU1OyBpKyspCisgICAgeworICAgICAgdWludDhfdCByZXMxID0gY3Jj OF9PMCAoaSwgY3JjKTsKKyAgICAgIHVpbnQ4X3QgcmVzMiA9IGNyYzggKGks IGNyYyk7CisgICAgICBpZiAocmVzMSAhPSByZXMyKQorCWFib3J0ICgpOwor ICAgICAgY3JjID0gcmVzMTsKKyAgICB9Cit9CisKKy8qIHsgZGctZmluYWwg eyBzY2FuLXRyZWUtZHVtcCAiZnVuY3Rpb24gbWF5YmUgY29udGFpbnMgQ1JD IGNhbGN1bGF0aW9uLiIgImNyYyJ9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBz Y2FuLXRyZWUtZHVtcCAiTG9vcCBpdGVyYXRpb24gbnVtYmVyIGlzIDciICJj cmMifSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgIkJp dCBmb3J3YXJkIiAiY3JjIn0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4t dHJlZS1kdW1wICJjYWxjdWxhdGVzIENSQyEiICJjcmMifSB9ICovClwgTm8g bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3Rz dWl0ZS9nY2MuZGcvdG9ydHVyZS9jcmMtZnJvbS1mZWRvcmEtcGFja2FnZXMt MS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdG9ydHVyZS9jcmMtZnJvbS1m ZWRvcmEtcGFja2FnZXMtMS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwLi44NjZjNzhkZjU1YgotLS0gL2Rldi9udWxsCisrKyBi L2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RvcnR1cmUvY3JjLWZyb20tZmVkb3Jh LXBhY2thZ2VzLTEuYwpAQCAtMCwwICsxLDI4IEBACisvKiB7IGRnLWRvIGNv bXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItZmR1bXAtdHJlZS1jcmMt ZGV0YWlscyIgfSAqLworLyogeyBkZy1za2lwLWlmICIiIHsgKi0qLSogfSB7 ICItTzAiICItTzEiICItT3MiICItTzMiICItZmx0byJ9IH0gKi8KKworLy8g RmlsZV9BYzMuY3BwLmlpCisvLyBXZSBkb24ndCBzdXBwb3J0IG5vbi1jb25z dGFudCBwb2x5bm9taWFscy4KKworI2luY2x1ZGUgPHN0ZGRlZi5oPgordHlw ZWRlZiB1bnNpZ25lZCBzaG9ydCBpbnQxNnU7Cit0eXBlZGVmIHVuc2lnbmVk IGNoYXIgaW50OHU7CitpbnQgQ1JDMTZfSW5pdChpbnQxNnUgKlRhYmxlLCBp bnQxNnUgUG9seW5vbWlhbCkKK3sKKyAgICBmb3IgKHNpemVfdCBQb3M9MDsg UG9zPDI1NjsgUG9zKyspCisgICAgeworICAgICAgICBUYWJsZVtQb3NdPShp bnQxNnUpUG9zPDw4OworCisgICAgICAgIGZvcihpbnQ4dSBiaXQ9MDsgYml0 PDg7IGJpdCsrKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoVGFibGVb UG9zXSYweDgwMDApCisgICAgICAgICAgICAgICAgVGFibGVbUG9zXT0oVGFi bGVbUG9zXTw8MSleUG9seW5vbWlhbDsKKyAgICAgICAgICAgIGVsc2UKKyAg ICAgICAgICAgICAgICBUYWJsZVtQb3NdPVRhYmxlW1Bvc108PDE7CisgICAg ICAgIH0KKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKKy8qIHsgZGctZmlu YWwgeyBzY2FuLXRyZWUtZHVtcCAiU2Vjb25kIG9wZXJhbmQgb2YgdGhlIHhv ciBzdGF0ZW1lbnQgaXNuJ3QgYW4gaW50ZWdlciBjb25zdGFudC5cbiIgImNy YyJ9IH0gKi8KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n aXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy90b3J0dXJlL2NyYy1mcm9tLWZl ZG9yYS1wYWNrYWdlcy0xMC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdG9y dHVyZS9jcmMtZnJvbS1mZWRvcmEtcGFja2FnZXMtMTAuYwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNDcxZTg2YmE0ZTUKLS0t IC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy90b3J0dXJl L2NyYy1mcm9tLWZlZG9yYS1wYWNrYWdlcy0xMC5jCkBAIC0wLDAgKzEsMjcg QEAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMg Ii1mZHVtcC10cmVlLWNyYy1kZXRhaWxzIiB9ICovCisvKiB7IGRnLXNraXAt aWYgIiIgeyAqLSotKiB9IHsgIi1PMCIgIi1PMSIgIi1PcyIgIi1PMyIgIi1m bHRvIn0gfSAqLworCisvLyBGaWxlIC0gcHJvdG9jb2wKKyNpbmNsdWRlIDxz dGRpbnQuaD4KKyNpbmNsdWRlIDxzdGRkZWYuaD4KK3VpbnQxNl90IGNyYzE2 X21jcmY0eHgodWludDE2X3QgY3JjLCB1aW50OF90ICpkYXRhLCBzaXplX3Qg bGVuKSB7CisgICAgaW50IGk7CisKKyAgICBpZiAoIWRhdGEgfHwgIWxlbikK KyAgICAgICAgcmV0dXJuIGNyYzsKKworICAgIHdoaWxlIChsZW4tLSkgewor ICAgICAgICBjcmMgXj0gKmRhdGErKzsKKyAgICAgICAgZm9yIChpID0gMDsg aSA8IDg7IGkrKykgeworICAgICAgICAgICAgaWYgKGNyYyAmIDEpCisgICAg ICAgICAgICAgICAgY3JjID0gKGNyYyA+PiAxKSBeIDB4ODQwODsKKyAgICAg ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBjcmMgPSAoY3JjID4+IDEp OworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGNyYzsKK30KKwor LyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJjYWxjdWxhdGVzIENS QyEiICJjcmMifSB9ICovClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk aWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdG9ydHVyZS9jcmMt ZnJvbS1mZWRvcmEtcGFja2FnZXMtMTEuYyBiL2djYy90ZXN0c3VpdGUvZ2Nj LmRnL3RvcnR1cmUvY3JjLWZyb20tZmVkb3JhLXBhY2thZ2VzLTExLmMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmMzZTZkNjQy NzhiCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcv dG9ydHVyZS9jcmMtZnJvbS1mZWRvcmEtcGFja2FnZXMtMTEuYwpAQCAtMCww ICsxLDMyIEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1v cHRpb25zICItZmR1bXAtdHJlZS1jcmMtZGV0YWlscyIgfSAqLworLyogeyBk Zy1za2lwLWlmICIiIHsgKi0qLSogfSB7ICItTzAiICItTzEiICItT3MiICIt TzMiICItZmx0byJ9IH0gKi8KKworLy8gRmlsZSAtIHNsegorI2luY2x1ZGUg PHN0ZGludC5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+Cit1aW50MzJfdCBjcmMz Ml9mYXN0WzRdWzI1Nl07Cit2b2lkIF9fc2x6X21ha2VfY3JjX3RhYmxlKHZv aWQpIHsKKyAgICB1aW50MzJfdCBjOworICAgIGludCBuLCBrOworCisgICAg Zm9yIChuID0gMDsgbiA8IDI1NjsgbisrKSB7CisgICAgICAgIGMgPSAodWlu dDMyX3QpIG4gXiAyNTU7CisgICAgICAgIGZvciAoayA9IDA7IGsgPCA4OyBr KyspIHsKKyAgICAgICAgICAgIGlmIChjICYgMSkgeworICAgICAgICAgICAg ICAgIGMgPSAweGVkYjg4MzIwIF4gKGMgPj4gMSk7CisgICAgICAgICAgICB9 IGVsc2UgeworICAgICAgICAgICAgICAgIGMgPSBjID4+IDE7CisgICAgICAg ICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY3JjMzJfZmFzdFswXVtuXSA9 IGMgXiAweGZmMDAwMDAwOworICAgIH0KK30KKworaW50IG1haW4gKCkKK3sK KyAgICBfX3Nsel9tYWtlX2NyY190YWJsZSgpOworICAgIHByaW50ZiAoIiVk IiwgY3JjMzJfZmFzdFswXVswXSk7Cit9CisKKy8qIHsgZGctZmluYWwgeyBz Y2FuLXRyZWUtZHVtcCAiY2FsY3VsYXRlcyBDUkMhIiAiY3JjIn0gfSAqLwpc IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2djYy90 ZXN0c3VpdGUvZ2NjLmRnL3RvcnR1cmUvY3JjLWZyb20tZmVkb3JhLXBhY2th Z2VzLTEyLmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy90b3J0dXJlL2NyYy1m cm9tLWZlZG9yYS1wYWNrYWdlcy0xMi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwLi44MTI3ZDg3ZGVjNQotLS0gL2Rldi9udWxs CisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RvcnR1cmUvY3JjLWZyb20t ZmVkb3JhLXBhY2thZ2VzLTEyLmMKQEAgLTAsMCArMSw3NSBAQAorLyogeyBk Zy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLWZkdW1wLXRy ZWUtY3JjLWRldGFpbHMgLXciIH0gKi8KKy8qIHsgZGctc2tpcC1pZiAiIiB7 ICotKi0qIH0geyAiLU8wIiAiLU8xIiAiLU9zIiAiLU8zIiAiLWZsdG8ifSB9 ICovCisKKy8vIEZpbGUgLSB3aWZpLiAgU2l6ZW9mIGNoZWNrIGlzIGFkZGVk IGZvciB0aGUgdGVzdC4KKworI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1 ZGUgPHN0ZGJvb2wuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgordHlwZWRlZiB1 bnNpZ25lZCBpbnQgdTMyOwordHlwZWRlZiB1bnNpZ25lZCBjaGFyIHU4Owor dTMyIFdJRklfQ1JDMzJUYWJsZVsyNTZdOworYm9vbCBpbml0aWFsaXplZDsK K3UzMiByZWZsZWN0ICh1MzIgcmVmLCBjaGFyIGNoKQoreworICBpZiAoc2l6 ZW9mICh1MzIpIDwgNCkKKyAgICBleGl0ICgwKTsKKworICB1MzIgdmFsdWUg PSAwOworCisgIGZvciAoaW50IGkgPSAxOyBpIDwgKGNoICsgMSk7IGkrKykK KyAgICB7CisgICAgICBpZiAocmVmICYgMSkKKwl2YWx1ZSB8PSAxIDw8IChj aCAtIGkpOworICAgICAgcmVmID4+PSAxOworICAgIH0KKworICByZXR1cm4g dmFsdWU7Cit9CisKK3UzMiBXSUZJX2NhbGNDUkMzMiAodTggKmRhdGEsIGlu dCBsZW4pCit7CisgIGlmIChzaXplb2YgKHUzMikgPCA0KQorICAgIGV4aXQg KDApOworCisgIHUzMiBjcmMgPSAweEZGRkZGRkZGOworCisgIHdoaWxlIChs ZW4tLSkKKyAgICBjcmMgPSAoY3JjID4+IDgpIF4gV0lGSV9DUkMzMlRhYmxl WyhjcmMgJiAweEZGKSBeICpkYXRhKytdOworCisgIHJldHVybiAoY3JjIF4g MHhGRkZGRkZGRik7Cit9CisKK3ZvaWQgV0lGSV9pbml0Q1JDMzJUYWJsZSAo KQoreworICBpZiAoc2l6ZW9mICh1MzIpIDwgNCkKKyAgICBleGl0ICgwKTsK KworICBpbml0aWFsaXplZCA9IGZhbHNlOworICBpZiAoaW5pdGlhbGl6ZWQp IHJldHVybjsKKyAgaW5pdGlhbGl6ZWQgPSB0cnVlOworCisgIHUzMiBwb2x5 bm9taWFsID0gMHgwNEMxMURCNzsKKworICBmb3IgKGludCBpID0gMDsgaSA8 IDB4MTAwOyBpKyspCisgICAgeworICAgICAgV0lGSV9DUkMzMlRhYmxlW2ld ID0gcmVmbGVjdCAoaSwgOCkgPDwgMjQ7CisgICAgICBmb3IgKGludCBqID0g MDsgaiA8IDg7IGorKykKKwlXSUZJX0NSQzMyVGFibGVbaV0gPSAoV0lGSV9D UkMzMlRhYmxlW2ldIDw8IDEpCisJCQkgICAgIF4gKFdJRklfQ1JDMzJUYWJs ZVtpXSAmICgxIDw8IDMxKSA/IHBvbHlub21pYWwKKwkJCQkJCQkgICAgICAg OiAwKTsKKyAgICAgIFdJRklfQ1JDMzJUYWJsZVtpXSA9IHJlZmxlY3QgKFdJ RklfQ1JDMzJUYWJsZVtpXSwgMzIpOworICAgIH0KK30KKworaW50IG1haW4g KCkKK3sKKyAgaWYgKHNpemVvZiAodTMyKSA8IDQpCisgICAgZXhpdCAoMCk7 CisKKyAgV0lGSV9pbml0Q1JDMzJUYWJsZSAoKTsKKyAgV0lGSV9jYWxjQ1JD MzIgKCJkZnNmIiwgNCk7Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLXRy ZWUtZHVtcCAiY2FsY3VsYXRlcyBDUkMhIiAiY3JjIn0gfSAqLwpcIE5vIG5l d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3Vp dGUvZ2NjLmRnL3RvcnR1cmUvY3JjLWZyb20tZmVkb3JhLXBhY2thZ2VzLTEz LmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy90b3J0dXJlL2NyYy1mcm9tLWZl ZG9yYS1wYWNrYWdlcy0xMy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwLi43OWNhMDUyNzZjNwotLS0gL2Rldi9udWxsCisrKyBi L2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RvcnR1cmUvY3JjLWZyb20tZmVkb3Jh LXBhY2thZ2VzLTEzLmMKQEAgLTAsMCArMSwyNyBAQAorLyogeyBkZy1kbyBj b21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLWZkdW1wLXRyZWUtY3Jj LWRldGFpbHMiIH0gKi8KKy8qIHsgZGctc2tpcC1pZiAiIiB7ICotKi0qIH0g eyAiLU8wIiAiLU8xIiAiLU9zIiAiLU8zIiAiLWZsdG8ifSB9ICovCisKKy8v IGNyYy5paSwgQ1JDMTYKKyNpbmNsdWRlIDxzdGRpby5oPgordHlwZWRlZiB1 bnNpZ25lZCBzaG9ydCB1MTY7CisKK3ZvaWQgR2VuZXJhdGVDUkMzMlRhYmxl KHUxNiBwb2x5bm9taWFsLCB1MTYgKnRhYmxlKQoreworICBmb3IgKHUxNiBp ID0gMDsgaSA8PSAyNTU7IGkrKykgeworICAgICAgdTE2IGNyYyA9IGk7Cisg ICAgICBmb3IgKHUxNiBqID0gMDsgaiA8IDg7IGorKykgeyAvLyBsYXRjaCdz IG5leHQgYmIgaXMgbG9vcCBoZWFkZXIKKwkgIGNyYyA9IChjcmMgPj4gMSkg XiAoKGNyYyAmIDEpID8gMHgyMzQyIDogMCk7CisJfQorICAgICAgdGFibGVb aV0gPSBjcmM7CisgICAgfQorfQorCitpbnQgbWFpbiAoKQoreworICB1MTYg dGFibGUgWzI1Nl07CisgIEdlbmVyYXRlQ1JDMzJUYWJsZSAoMHg0LCB0YWJs ZSk7Cit9CisKKworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJj YWxjdWxhdGVzIENSQyEiICJjcmMifSB9ICovClwgTm8gbmV3bGluZSBhdCBl bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcv dG9ydHVyZS9jcmMtZnJvbS1mZWRvcmEtcGFja2FnZXMtMTQuYyBiL2djYy90 ZXN0c3VpdGUvZ2NjLmRnL3RvcnR1cmUvY3JjLWZyb20tZmVkb3JhLXBhY2th Z2VzLTE0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAuLjdlZDU5Y2YyNzAxCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3Rz dWl0ZS9nY2MuZGcvdG9ydHVyZS9jcmMtZnJvbS1mZWRvcmEtcGFja2FnZXMt MTQuYwpAQCAtMCwwICsxLDM1IEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAq LworLyogeyBkZy1vcHRpb25zICItZmR1bXAtdHJlZS1jcmMtZGV0YWlscyAt dyIgfSAqLworLyogeyBkZy1za2lwLWlmICIiIHsgKi0qLSogfSB7ICItTzAi ICItTzEiICItT3MiICItTzMiICItZmx0byJ9IH0gKi8KKworLy8gRmlsZSAt IGJhc2U2NCwgc2xpZ2h0bHkgbW9kaWZpZWQKKy8vIFdlIGRvbid0IHN1cHBv cnQgdGhlIGNhc2Ugd2hlbiBsZWFkaW5nIGJpdCBvZiB0aGUgcG9seW5vbWlh bCBpcyBrZXB0LgorCisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8 c3RkbGliLmg+CisKK3VpbnQzMl90IGI2NGNyYyAoY29uc3QgdW5zaWduZWQg Y2hhciogZGF0YSwgc2l6ZV90IG5zKQoreworICBpZiAoc2l6ZW9mICh1bnNp Z25lZCBpbnQpIDwgNCkKKyAgICBleGl0ICgwKTsKKworICBjb25zdCB1bnNp Z25lZCBjaGFyICpzID0gZGF0YTsKKyAgdWludDMyX3QgY3JjID0gMHhiNzA0 Y2VMOworCisgIHdoaWxlIChucy0tID4gMCkKKyAgICB7CisgICAgICBpbnQg aTsKKyAgICAgIGNyYyBePSAoKnMrKykgPDwgMTY7CisgICAgICBmb3IgKGkg PSAwOyBpIDwgODsgaSsrKQorCXsKKwkgIGNyYyA8PD0gMTsKKwkgIGlmIChj cmMgJiAweDEwMDAwMDApCisJICAgIGNyYyBePSAweDE4NjRjZmJMOworCX0K KyAgICB9CisgIGNyYyAmPSAweGZmZmZmZjsKKyAgLyogLi4uICovCisgIHJl dHVybiBjcmM7Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVt cCAiUG9seW5vbWlhbCdzIHZhbHVlIGlzIFxcXHtcWzAsIFxdKjBcXFx9IiAi Y3JjIn0gfSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcv dG9ydHVyZS9jcmMtZnJvbS1mZWRvcmEtcGFja2FnZXMtMTUuYyBiL2djYy90 ZXN0c3VpdGUvZ2NjLmRnL3RvcnR1cmUvY3JjLWZyb20tZmVkb3JhLXBhY2th Z2VzLTE1LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAuLmIzNDNkMGZhMTg4Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3Rz dWl0ZS9nY2MuZGcvdG9ydHVyZS9jcmMtZnJvbS1mZWRvcmEtcGFja2FnZXMt MTUuYwpAQCAtMCwwICsxLDMwIEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAq LworLyogeyBkZy1vcHRpb25zICItZmR1bXAtdHJlZS1jcmMtZGV0YWlscyIg fSAqLworLyogeyBkZy1za2lwLWlmICIiIHsgKi0qLSogfSB7ICItTzAiICIt TzEiICItT3MiICItZmx0byJ9IH0gKi8KKworLy8gRmlsZSAtIGNhbGxlcmlk CisKK3Vuc2lnbmVkIHNob3J0IGNhbGNfY3JjKHVuc2lnbmVkIHNob3J0IGNy YywgdW5zaWduZWQgY2hhciBkYXRhKQoreworICB1bnNpZ25lZCBpbnQgaSwg aiwgb3JnLCBkc3Q7CisgIG9yZyA9IGRhdGE7CisgIGRzdCA9IDA7CisKKyAg Zm9yIChpID0gMDsgaSA8IDg7IGkrKykgeworICAgIG9yZyA8PD0gMTsKKyAg ICBkc3QgPj49IDE7CisgICAgaWYgKG9yZyAmIDB4MTAwKQorICAgICAgZHN0 IHw9IDB4ODA7CisgIH0KKyAgZGF0YSA9ICh1bnNpZ25lZCBjaGFyKSBkc3Q7 CisgIGNyYyBePSAodW5zaWduZWQgaW50KSBkYXRhIDw8ICgxNiAtIDgpOwor ICBmb3IgKGogPSAwOyBqIDwgODsgaisrKSB7CisgICAgaWYgKGNyYyAmIDB4 ODAwMFUpCisgICAgICBjcmMgPSAoY3JjIDw8IDEpIF4gMHgxMDIxVSA7Cisg ICAgZWxzZQorICAgICAgY3JjIDw8PSAxIDsKKyAgfQorICByZXR1cm4gY3Jj OworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgImNhbGN1 bGF0ZXMgQ1JDISIgImNyYyJ9IH0gKi8KZGlmZiAtLWdpdCBhL2djYy90ZXN0 c3VpdGUvZ2NjLmRnL3RvcnR1cmUvY3JjLWZyb20tZmVkb3JhLXBhY2thZ2Vz LTE2LmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy90b3J0dXJlL2NyYy1mcm9t LWZlZG9yYS1wYWNrYWdlcy0xNi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwLi4yZTc3Njg0NDVmNAotLS0gL2Rldi9udWxsCisr KyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RvcnR1cmUvY3JjLWZyb20tZmVk b3JhLXBhY2thZ2VzLTE2LmMKQEAgLTAsMCArMSwxNyBAQAorLyogeyBkZy1k byBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLWZkdW1wLXRyZWUt Y3JjLWRldGFpbHMiIH0gKi8KKy8qIHsgZGctc2tpcC1pZiAiIiB7ICotKi0q IH0geyAiLU8wIiAiLU8xIiAiLU9zIiAiLWZsdG8ifSB9ICovCisKKy8vIEZp bGUgLSBjYzE1NDEKKwordW5zaWduZWQgY2hhcgorY3JjOCh1bnNpZ25lZCBj aGFyIHZhbHVlKQoreworICBmb3IgKGludCBpID0gMDsgaSA8IDg7ICsraSkg eworICAgICAgdmFsdWUgPSAodmFsdWUgJiAweDgwKSA/ICgodmFsdWUgPDwg MSkgXiAweDMxKSA6ICh2YWx1ZSA8PCAxKTsKKyAgICB9CisKKyAgcmV0dXJu IHZhbHVlOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAg ImNhbGN1bGF0ZXMgQ1JDISIgImNyYyJ9IH0gKi8KXCBObyBuZXdsaW5lIGF0 IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5k Zy90b3J0dXJlL2NyYy1mcm9tLWZlZG9yYS1wYWNrYWdlcy0xNy5jIGIvZ2Nj L3Rlc3RzdWl0ZS9nY2MuZGcvdG9ydHVyZS9jcmMtZnJvbS1mZWRvcmEtcGFj a2FnZXMtMTcuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMC4uYTc2ZDc3Njc4MDQKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVz dHN1aXRlL2djYy5kZy90b3J0dXJlL2NyYy1mcm9tLWZlZG9yYS1wYWNrYWdl cy0xNy5jCkBAIC0wLDAgKzEsNTIgQEAKKy8qIHsgZGctZG8gY29tcGlsZSB9 ICovCisvKiB7IGRnLW9wdGlvbnMgIi1mZHVtcC10cmVlLWNyYy1kZXRhaWxz IC13IiB9ICovCisvKiB7IGRnLXNraXAtaWYgIiIgeyAqLSotKiB9IHsgIi1P MCIgIi1PMSIgIi1PcyIgIi1mbHRvIn0gfSAqLworCisvLyBGaWxlIC0gY3Jj LmkuCisvLyBXZSBkb24ndCBzdXBwb3J0IHRoaXMgY2FzZS4KKworI2luY2x1 ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgordWludDMyX3Qg Y3JjMjRfY2FsY3VsYXRlKHVpbnQzMl90IHByZXNldCwgY29uc3QgdWludDhf dCAqZGF0YSwgdWludDhfdCBsZW4pCit7CisgIHVpbnQzMl90IHN0YXRlID0g cHJlc2V0OworICB1aW50OF90IGk7CisKKyAgZm9yIChpID0gMDsgaSA8IGxl bjsgaSsrKSB7CisgICAgICB1aW50OF90IG4sIGN1ciA9IGRhdGFbaV07CisK KyAgICAgIGZvciAobiA9IDA7IG4gPCA4OyBuKyspIHsKKwkgIGludCBuZXh0 X2JpdCA9IChzdGF0ZSBeIGN1cikgJiAxOworCisJICBjdXIgPj49IDE7CisJ ICBzdGF0ZSA+Pj0gMTsKKwkgIGlmIChuZXh0X2JpdCkgeworCSAgICAgIHN0 YXRlIHw9IDEgPDwgMjM7CisJICAgICAgc3RhdGUgXj0gMHg1YTYwMDA7CisJ ICAgIH0KKwl9CisgICAgfQorCisgIHJldHVybiBzdGF0ZTsKK30KKwordWlu dDMyX3QgY3JjMjRfcmV2ZXJzZSh1aW50MzJfdCBjcmMsIGNvbnN0IHVpbnQ4 X3QgKmRhdGEsIHVpbnQ4X3QgbGVuKQoreworICB1aW50MzJfdCBzdGF0ZSA9 IGNyYzsKKyAgdWludDhfdCBpOworCisgIGZvciAoaSA9IDA7IGkgPCBsZW47 IGkrKykgeworICAgICAgdWludDhfdCBuLCBjdXIgPSBkYXRhW2xlbiAtIGkg LSAxXTsKKworICAgICAgZm9yIChuID0gMDsgbiA8IDg7IG4rKykgeworCSAg aW50IHRvcF9iaXQgPSBzdGF0ZSA+PiAyMzsKKworCSAgc3RhdGUgPSAoc3Rh dGUgPDwgMSkgJiAweGZmZmZmZjsKKwkgIHN0YXRlIHw9IHRvcF9iaXQgXiAo KGN1ciA+PiAoNyAtIG4pKSAmIDEpOworCSAgaWYgKHRvcF9iaXQpCisJICAg IHN0YXRlIF49IDB4YjRjMDAwOworCX0KKyAgICB9CisKKyAgcmV0dXJuIHN0 YXRlOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp dCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RvcnR1cmUvY3JjLWZyb20tZmVk b3JhLXBhY2thZ2VzLTE4LmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy90b3J0 dXJlL2NyYy1mcm9tLWZlZG9yYS1wYWNrYWdlcy0xOC5jCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5iMTcxZmUxZmU3MQotLS0g L2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RvcnR1cmUv Y3JjLWZyb20tZmVkb3JhLXBhY2thZ2VzLTE4LmMKQEAgLTAsMCArMSwzMSBA QAorLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAi LWZkdW1wLXRyZWUtY3JjLWRldGFpbHMgLXciIH0gKi8KKy8qIHsgZGctc2tp cC1pZiAiIiB7ICotKi0qIH0geyAiLU8wIiAiLU8xIiAiLU9zIiAiLU8zIiAi LWZsdG8ifSB9ICovCisKKy8vIEZpbGUgLSBjcnlwdG9ib25ycnh0ZXJuZC5p CisvLyBXZSBkb24ndCBzdXBwb3J0IHRoaXMgY2FzZS4KKwordW5zaWduZWQg Y2hhciBQR1BfaW5wdXRbMioxMDBdOwordW5zaWduZWQgbG9uZyBjcmMyNChp bnQgbGVuKSB7CisKKyAgaWYgKHNpemVvZiAobG9uZykgPCA0KQorICAgIF9f YnVpbHRpbl9leGl0ICgwKTsKKworICBsb25nIGNyYzsKKyAgY3JjID0gMHhC NzA0Q0U7CisgIGludCBpLGo7CisgIGogPSAwOworICB3aGlsZSAobGVuLS0p IHsKKyAgICAgIGNyYyBePSAoUEdQX2lucHV0W2pdKSA8PCAxNjsKKyAgICAg IGorKzsKKyAgICAgIGZvciAoaSA9IDA7IGkgPCA4OyBpKyspIHsKKwkgIGNy YyA8PD0gMTsKKwkgIGlmIChjcmMgJiAweDEwMDAwMDApeworCSAgICAgIGNy YyBePSAweDE4NjRDRkI7CisJICAgIH0KKwl9CisgICAgfQorICByZXR1cm4g Y3JjICYgMHhGRkZGRkY7Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLXRy ZWUtZHVtcCAiUG9seW5vbWlhbCdzIHZhbHVlIGlzIFxcXHtcWzAsIFxdKjBc XFx9IiAiY3JjIn0gfSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9n Y2MuZGcvdG9ydHVyZS9jcmMtZnJvbS1mZWRvcmEtcGFja2FnZXMtMTkuYyBi L2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RvcnR1cmUvY3JjLWZyb20tZmVkb3Jh LXBhY2thZ2VzLTE5LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAuLmUwM2NmZjFkZTc3Ci0tLSAvZGV2L251bGwKKysrIGIvZ2Nj L3Rlc3RzdWl0ZS9nY2MuZGcvdG9ydHVyZS9jcmMtZnJvbS1mZWRvcmEtcGFj a2FnZXMtMTkuYwpAQCAtMCwwICsxLDU5IEBACisvKiB7IGRnLWRvIGNvbXBp bGUgfSAqLworLyogeyBkZy1vcHRpb25zICItZmR1bXAtdHJlZS1jcmMtZGV0 YWlscyAtdyIgfSAqLworLyogeyBkZy1za2lwLWlmICIiIHsgKi0qLSogfSB7 ICItTzAiICItTzEiICItT3MiICItZmx0byJ9IH0gKi8KKworLy8gRmlsZSAt IGxpYm9jdGFzaWNfbGEtb2N0NjEwMF9jaGlwX29wZW4KKy8vIFdlIGRvbid0 IHN1cHBvcnQgdGhpcyBjYXNlLgorCit0eXBlZGVmIHVuc2lnbmVkIGludCBV SU5UMzI7Cit0eXBlZGVmIFVJTlQzMiAqIFBVSU5UMzI7Cit0eXBlZGVmIHN0 cnVjdCBfT0NUNjEwMF9JTlNUQU5DRV9BUElfCit7CisKKyAgIC8vIHRQT0NU NjEwMF9TSEFSRURfSU5GTyBwU2hhcmVkSW5mbzsKKworICAgIC8vUFZPSUQg cFByb2Nlc3NDb250ZXh0OworCisgICAgLy90T0NUNjEwMF9VU0VSX1NFUklB TF9PQkpFQ1QgdWxBcGlTZXJPYmo7CisKKworfSB0T0NUNjEwMF9JTlNUQU5D RV9BUEksICp0UE9DVDYxMDBfSU5TVEFOQ0VfQVBJOworCitVSU5UMzIgT2N0 NjEwMEFwaVByb2R1Y3Rpb25DcmMoCisgICAgdFBPQ1Q2MTAwX0lOU1RBTkNF X0FQSSBmX3BBcGlJbnN0YW5jZSwKKyAgICBQVUlOVDMyIGZfcHVsTWVzc2Fn ZSwKKyAgICBVSU5UMzIgZl91bE1lc3NhZ2VMZW5ndGgsCisgICAgUFVJTlQz MiBmX3B1bENyY1Jlc3VsdCApCit7CisgIFVJTlQzMiB1bFdpZHRoID0gMzI7 CisgIFVJTlQzMiB1bEtleSwgaSwgajsKKyAgVUlOVDMyIHVsUmVtYWluZGVy ID0gMDsKKworCisgIHVsUmVtYWluZGVyID0gZl9wdWxNZXNzYWdlWyBmX3Vs TWVzc2FnZUxlbmd0aCAtIDEgXTsKKyAgZm9yICggaiA9IGZfdWxNZXNzYWdl TGVuZ3RoIC0gMTsgaiAhPSAweEZGRkZGRkZGIDsgai0tICkKKyAgICB7Cisg ICAgICBmb3IgKCBpID0gMDsgaSA8IHVsV2lkdGg7IGkrKyApCisJeworCSAg aWYgKCAoICggdWxSZW1haW5kZXIgPj4gMHgxRiApICYgMHgxICkgPT0gMHgx ICkKKwkgICAgeworCSAgICAgIHVsS2V5ID0gMHg4NzY1RENCQTsKKwkgICAg fQorCSAgZWxzZQorCSAgICB7CisJICAgICAgdWxLZXkgPSAwOworCSAgICB9 CisJICB1bFJlbWFpbmRlciA9IHVsUmVtYWluZGVyIF4gdWxLZXk7CisKKwkg IHVsUmVtYWluZGVyID0gdWxSZW1haW5kZXIgPDwgMTsKKwkgIGlmICggaiAh PSAwICkKKwkgICAgeworCSAgICAgIHVsUmVtYWluZGVyID0gdWxSZW1haW5k ZXIgfCAoICggZl9wdWxNZXNzYWdlWyBqIC0gMSBdICkgPj4gKCAweDFGIC0g aSApICk7CisJICAgIH0KKwl9CisgICAgfQorCisgICpmX3B1bENyY1Jlc3Vs dCA9IHVsUmVtYWluZGVyOworCisgIHJldHVybiAweDAwMDAwMDAwOworfQpk aWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdG9ydHVyZS9jcmMt ZnJvbS1mZWRvcmEtcGFja2FnZXMtMi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2Mu ZGcvdG9ydHVyZS9jcmMtZnJvbS1mZWRvcmEtcGFja2FnZXMtMi5jCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5hYmM4ZmNmM2Y4 OQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3Rv cnR1cmUvY3JjLWZyb20tZmVkb3JhLXBhY2thZ2VzLTIuYwpAQCAtMCwwICsx LDI2IEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRp b25zICItZmR1bXAtdHJlZS1jcmMtZGV0YWlscyAtZnRyZWUtY3NlbGltIiB9 ICovCisvKiB7IGRnLXNraXAtaWYgIiIgeyAqLSotKiB9IHsgIi1PMCIgIi1P MSIgIi1PcyIgIi1PMyIgIi1mbHRvIn0gfSAqLworCisvL0ZpbGUgLSBBYzMg ZnJvbSBGZWRvcmEsIHBvbHlub21pYWwgbWFkZSBjb25zdC4gT3JpZ2luYWwg Y3JjLXNpZGUtaW5zdHItMjEuYyB0ZXN0CisjaW5jbHVkZSA8c3RkZGVmLmg+ Cit0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludDE2dTsKK3R5cGVkZWYgdW5z aWduZWQgY2hhciBpbnQ4dTsKK2ludCBDUkMxNl9Jbml0KGludDE2dSAqVGFi bGUpCit7CisgICAgZm9yIChzaXplX3QgUG9zPTA7IFBvczwyNTY7IFBvcysr KQorICAgIHsKKyAgICAgICAgVGFibGVbUG9zXT0oaW50MTZ1KVBvczw8ODsK KworICAgICAgICBmb3IoaW50OHUgYml0PTA7IGJpdDw4OyBiaXQrKykKKyAg ICAgICAgeworICAgICAgICAgICAgaWYgKFRhYmxlW1Bvc10mMHg4MDAwKQor ICAgICAgICAgICAgICAgIFRhYmxlW1Bvc109KFRhYmxlW1Bvc108PDEpXjB4 MjEwMTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBUYWJs ZVtQb3NdPVRhYmxlW1Bvc108PDE7CisgICAgICAgIH0KKyAgICB9CisgICAg cmV0dXJuIDA7Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVt cCAiY2FsY3VsYXRlcyBDUkMhIiAiY3JjIn0gfSAqLwpcIE5vIG5ld2xpbmUg YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2Nj LmRnL3RvcnR1cmUvY3JjLWZyb20tZmVkb3JhLXBhY2thZ2VzLTIwLmMgYi9n Y2MvdGVzdHN1aXRlL2djYy5kZy90b3J0dXJlL2NyYy1mcm9tLWZlZG9yYS1w YWNrYWdlcy0yMC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwLi4yZTY2OTE3NjQ1NQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90 ZXN0c3VpdGUvZ2NjLmRnL3RvcnR1cmUvY3JjLWZyb20tZmVkb3JhLXBhY2th Z2VzLTIwLmMKQEAgLTAsMCArMSw0NyBAQAorLyogeyBkZy1kbyBjb21waWxl IH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLWZkdW1wLXRyZWUtY3JjLWRldGFp bHMgLXciIH0gKi8KKy8qIHsgZGctc2tpcC1pZiAiIiB7ICotKi0qIH0geyAi LU8wIiAiLU8xIiAiLU9zIiAiLU8zIiAiLWZsdG8ifSB9ICovCisKKy8vIEZp bGUgLSBzY29yZWxheW91dC5pCisKKyNpbmNsdWRlIDxzdGRsaWIuaD4KK3R5 cGVkZWYgdW5zaWduZWQgY2hhciBndWNoYXI7Cit0eXBlZGVmIHVuc2lnbmVk IGludCBndWludDMyOworZ3VpbnQzMgorYml0X3JldmVyc2UgKGd1aW50MzIg eCkKK3sKKyAgeCA9ICgoeCAmIDB4NTU1NTU1NTUpIDw8IDEpIHwgKCh4ID4+ IDEpICYgMHg1NTU1NTU1NSk7CisgIHggPSAoKHggJiAweDMzMzMzMzMzKSA8 PCAyKSB8ICgoeCA+PiAyKSAmIDB4MzMzMzMzMzMpOworICB4ID0gKCh4ICYg MHgwRjBGMEYwRikgPDwgNCkgfCAoKHggPj4gNCkgJiAweDBGMEYwRjBGKTsK KyAgeCA9ICh4IDw8IDI0KSB8ICgoeCAmIDB4RkYwMCkgPDwgOCkgfCAoKHgg Pj4gOCkgJiAweEZGMDApIHwgKHggPj4gMjQpOworICByZXR1cm4geDsKK30K KworZ3VpbnQzMgorY3JjMzIgKGd1Y2hhciAqIG1lc3NhZ2UpCit7CisgIGlm IChzaXplb2YgKGludCkgPCA0KQorICAgIGV4aXQgKDApOworCisgIGludCBp LCBqOworICBndWludDMyIGJ5dGUsIGNyYzsKKyAgaSA9IDA7CisgIGNyYyA9 IDB4RkZGRkZGRkY7CisgIHdoaWxlIChtZXNzYWdlW2ldICE9IDApCisgICAg eworICAgICAgYnl0ZSA9IG1lc3NhZ2VbaV07CisgICAgICBieXRlID0gYml0 X3JldmVyc2UgKGJ5dGUpOworICAgICAgZm9yIChqID0gMDsgaiA8PSA3OyBq KyspCisJeworCSAgaWYgKChpbnQpIChjcmMgXiBieXRlKSA8IDApCisJICAg IGNyYyA9IChjcmMgPDwgMSkgXiAweDA0QzExREI3OworCSAgZWxzZQorCSAg ICBjcmMgPSBjcmMgPDwgMTsKKwkgIGJ5dGUgPSBieXRlIDw8IDE7CisJfQor ICAgICAgaSA9IGkgKyAxOworICAgIH0KKyAgcmV0dXJuIGJpdF9yZXZlcnNl ICh+Y3JjKTsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1w ICJjYWxjdWxhdGVzIENSQyEiICJjcmMifSB9ICovClwgTm8gbmV3bGluZSBh dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2Mu ZGcvdG9ydHVyZS9jcmMtZnJvbS1mZWRvcmEtcGFja2FnZXMtMjEuYyBiL2dj Yy90ZXN0c3VpdGUvZ2NjLmRnL3RvcnR1cmUvY3JjLWZyb20tZmVkb3JhLXBh Y2thZ2VzLTIxLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAuLmFhNTFhZGY4OTcwCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rl c3RzdWl0ZS9nY2MuZGcvdG9ydHVyZS9jcmMtZnJvbS1mZWRvcmEtcGFja2Fn ZXMtMjEuYwpAQCAtMCwwICsxLDU4IEBACisvKiB7IGRnLWRvIGNvbXBpbGUg fSAqLworLyogeyBkZy1vcHRpb25zICItZmR1bXAtdHJlZS1jcmMtZGV0YWls cyIgfSAqLworLyogeyBkZy1za2lwLWlmICIiIHsgKi0qLSogfSB7ICItTzAi ICItTzEiICItT3MiICItZmx0byJ9IH0gKi8KKworLy8gRmlsZSAtIFVuc2Fm ZV9jcmMxNi5pCisKK2xvbmcgQkdsX2NyY3pkMnZhbHVlemQyenpfX2NyYzE2 ejAwKGxvbmcgQmdMX3ZhbHowMF80LCBsb25nIEJnTF9jcmN6MDBfNSkKK3sK KyAgeworICAgIHsKKyAgICAgIGxvbmcgQmdMX2l6MDBfMTc5NjsKKyAgICAg IGxvbmcgQmdMX3ZhbHVlejAwXzE3OTc7CisgICAgICBsb25nIEJnTF9jcmN6 MDBfMTc5ODsKKworICAgICAgQmdMX2l6MDBfMTc5NiA9ICgobG9uZykgMCk7 CisgICAgICBCZ0xfdmFsdWV6MDBfMTc5NyA9IChCZ0xfdmFsejAwXzQgPDwg KGludCkgKCgobG9uZykgOCkpKTsKKyAgICAgIEJnTF9jcmN6MDBfMTc5OCA9 IEJnTF9jcmN6MDBfNTsKKyAgICAgIEJnTF9sb29wejAwXzE3OTU6CisgICAg ICBpZiAoKEJnTF9pejAwXzE3OTYgPT0gKChsb25nKSA4KSkpCisJeworCSAg cmV0dXJuIEJnTF9jcmN6MDBfMTc5ODsKKwl9CisgICAgICBlbHNlCisJewor CSAgbG9uZyBCZ0xfdmFsdWV6MDBfMTgwMTsKKwkgIGxvbmcgQmdMX2NyY3ow MF8xODAyOworCisJICBCZ0xfdmFsdWV6MDBfMTgwMSA9IChCZ0xfdmFsdWV6 MDBfMTc5NyA8PCAoaW50KSAoKChsb25nKSAxKSkpOworCSAgQmdMX2NyY3ow MF8xODAyID0gKEJnTF9jcmN6MDBfMTc5OCA8PCAoaW50KSAoKChsb25nKSAx KSkpOworCSAgeworCSAgICBsb25nIEJnTF9jcmN6MDBfMjIwOTsKKwkgICAg bG9uZyBCZ0xfdmFsdWV6MDBfMjIwODsKKwkgICAgbG9uZyBCZ0xfaXowMF8y MjA2OworCisJICAgIEJnTF9pejAwXzIyMDYgPSAoQmdMX2l6MDBfMTc5NiAr ICgobG9uZykgMSkpOworCSAgICBCZ0xfdmFsdWV6MDBfMjIwOCA9IEJnTF92 YWx1ZXowMF8xODAxOworCSAgICBpZiAoCisJCSgoKGxvbmcpIDApID09CisJ CSAoKChsb25nKSA2NTUzNikgJiAoQmdMX2NyY3owMF8xODAyIF4gQmdMX3Zh bHVlejAwXzE4MDEpKSkpCisJICAgICAgeworCQlCZ0xfY3JjejAwXzIyMDkg PSBCZ0xfY3JjejAwXzE4MDI7CisJICAgICAgfQorCSAgICBlbHNlCisJICAg ICAgeworCQlCZ0xfY3JjejAwXzIyMDkgPSAoQmdMX2NyY3owMF8xODAyIF4g KChsb25nKSAzMjc3MykpOworCSAgICAgIH0KKwkgICAgQmdMX2NyY3owMF8x Nzk4ID0gQmdMX2NyY3owMF8yMjA5OworCSAgICBCZ0xfdmFsdWV6MDBfMTc5 NyA9IEJnTF92YWx1ZXowMF8yMjA4OworCSAgICBCZ0xfaXowMF8xNzk2ID0g QmdMX2l6MDBfMjIwNjsKKwkgICAgZ290byBCZ0xfbG9vcHowMF8xNzk1Owor CSAgfQorCX0KKyAgICB9CisgIH0KK30KKworLyogeyBkZy1maW5hbCB7IHNj YW4tdHJlZS1kdW1wICJQb2x5bm9taWFsJ3MgdmFsdWUgaXMgXFxcezAsIDAs IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs IDAsIDBcXFx9CisiICJjcmMifSB9ICovCmRpZmYgLS1naXQgYS9nY2MvdGVz dHN1aXRlL2djYy5kZy90b3J0dXJlL2NyYy1mcm9tLWZlZG9yYS1wYWNrYWdl cy0yMi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdG9ydHVyZS9jcmMtZnJv bS1mZWRvcmEtcGFja2FnZXMtMjIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMC4uMDdkNmFmYmYyMTgKLS0tIC9kZXYvbnVsbAor KysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy90b3J0dXJlL2NyYy1mcm9tLWZl ZG9yYS1wYWNrYWdlcy0yMi5jCkBAIC0wLDAgKzEsMjcgQEAKKy8qIHsgZGct ZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1mZHVtcC10cmVl LWNyYy1kZXRhaWxzIiB9ICovCisvKiB7IGRnLXNraXAtaWYgIiIgeyAqLSot KiB9IHsgIi1PMCIgIi1PMSIgIi1PcyIgIi1mbHRvIn0gfSAqLworCisvLyBG aWxlIC0gY3JyY3NpbS1Mb2dnZXJSZWFkZXJfYnl0ZS5paQorLy8gV2UgZG9u J3Qgc3VwcG9ydCB0aGlzIGNhc2UuCisKK2ludCBjcmNSZWc7CitlbnVtIHsg Y3JjUG9seSA9IDQ5IH07Cit2b2lkIGNyY0J5dGVTY2hyaXR0KHVuc2lnbmVk IGNoYXIgZGF0YSkKK3sKKyAgZm9yIChpbnQgaT0wOyBpPDg7IGkrKykKKyAg ICB7CisgICAgICBjcmNSZWcgPDw9IDE7CisKKworICAgICAgaWYgKChkYXRh ICYgMHg4MCkgIT0gMCkKKwljcmNSZWcgfD0gMTsKKworICAgICAgZGF0YSA8 PD0gMTsKKworICAgICAgaWYgKChjcmNSZWcgJiAweDEwMCkgIT0gMCkKKwlj cmNSZWcgPSBjcmNSZWcgXiBjcmNQb2x5OworICAgIH0KKworICBjcmNSZWcg Jj0gMHhGRjsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg LS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy90b3J0dXJlL2NyYy1mcm9t LWZlZG9yYS1wYWNrYWdlcy0yMy5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcv dG9ydHVyZS9jcmMtZnJvbS1mZWRvcmEtcGFja2FnZXMtMjMuYwpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYzJmM2ZlZGM1N2EK LS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy90b3J0 dXJlL2NyYy1mcm9tLWZlZG9yYS1wYWNrYWdlcy0yMy5jCkBAIC0wLDAgKzEs MjggQEAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlv bnMgIi1mZHVtcC10cmVlLWNyYy1kZXRhaWxzIiB9ICovCisvKiB7IGRnLXNr aXAtaWYgIiIgeyAqLSotKiB9IHsgIi1PMCIgIi1PMSIgIi1PcyIgIi1PMyIg Ii1mbHRvIn0gfSAqLworCisvLyBGaWxlIC0gTW9kYnVzQ29tbS5paQorCisj aW5jbHVkZSA8c3RkaW50Lmg+Cit1aW50MTZfdCBNb2RidXNDcmMoY29uc3Qg dWludDhfdCAqZGF0YSwgdW5zaWduZWQgaW50IHN6KQoreworICBzdGF0aWMg Y29uc3QgdWludDE2X3QgTU9EQlVTX0NSQ19QT0xZID0gMHhBMDAxOworICB1 aW50MTZfdCBjcmMgPSAweGZmZmY7CisKKyAgd2hpbGUgKHN6LS0pCisgICAg eworICAgICAgY3JjIF49ICpkYXRhKys7CisgICAgICBmb3IgKHVuc2lnbmVk IGludCBpID0gMDsgaSA8IDg7ICsraSkKKwl7CisJICBpZiAoY3JjICYgMHgx KQorCSAgICBjcmMgPSAoY3JjID4+IDEpIF4gTU9EQlVTX0NSQ19QT0xZOwor CSAgZWxzZQorCSAgICBjcmMgPj49IDE7CisJfQorICAgIH0KKworICByZXR1 cm4gY3JjOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAg ImNhbGN1bGF0ZXMgQ1JDISIgImNyYyJ9IH0gKi8KXCBObyBuZXdsaW5lIGF0 IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5k Zy90b3J0dXJlL2NyYy1mcm9tLWZlZG9yYS1wYWNrYWdlcy0yNC5jIGIvZ2Nj L3Rlc3RzdWl0ZS9nY2MuZGcvdG9ydHVyZS9jcmMtZnJvbS1mZWRvcmEtcGFj a2FnZXMtMjQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMC4uOTZhNzIzMWFkMjQKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVz dHN1aXRlL2djYy5kZy90b3J0dXJlL2NyYy1mcm9tLWZlZG9yYS1wYWNrYWdl cy0yNC5jCkBAIC0wLDAgKzEsMjkgQEAKKy8qIHsgZGctZG8gY29tcGlsZSB9 ICovCisvKiB7IGRnLW9wdGlvbnMgIi1mZHVtcC10cmVlLWNyYy1kZXRhaWxz IC1mdHJlZS1jc2VsaW0iIH0gKi8KKy8qIHsgZGctc2tpcC1pZiAiIiB7ICot Ki0qIH0geyAiLU8wIiAiLU8xIiAiLU9zIiAiLWZsdG8ifSB9ICovCisKKy8v IEZpbGUgLSB1dGlscy5paQorLyogV2UgZG9uJ3Qgc3VwcG9ydCB0aGUgY2Fz ZSB3aGVuIENSQyB2YXJpYWJsZSdzIHNpemUgaXMgZGlmZmVyZW50IGZyb20g dGhlCisgICBjYWxjdWxhdGVkIENSQyAoSS5lLiBpbiB0aGlzIGNhc2UgQ1JD IDE2IGlzIGNhbGN1bGF0ZWQuKSAgKi8KKwordm9pZCBjcmNfYnl0ZShjb25z dCBjaGFyIGRhdGEsIHVuc2lnbmVkIGludCAqY3JjMTYpCit7CisgIGludCBr OworICB1bnNpZ25lZCBjLGQgOworCisgIGMgPSBkYXRhIDw8IDggOworICBk ID0gYzsKKworICBmb3IgKGsgPSAwOyBrIDwgODsgaysrKSB7CisgICAgICAq Y3JjMTYgPSAoYyAmIDB4ODAwMCkgXiAqY3JjMTY7CisKKyAgICAgIGlmICgq Y3JjMTYgJiAweDgwMDApIHsKKwkgICpjcmMxNiA9ICpjcmMxNiA8PCAxOwor CSAgKmNyYzE2ID0gKmNyYzE2IF4gMHg4MDA1OworCX0gZWxzZQorCSpjcmMx NiA9ICpjcmMxNiA8PCAxOworCisgICAgICBkID0gZCA8PCAxOworICAgICAg YyA9IGQ7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK ZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RvcnR1cmUvY3Jj LWZyb20tZmVkb3JhLXBhY2thZ2VzLTMuYyBiL2djYy90ZXN0c3VpdGUvZ2Nj LmRnL3RvcnR1cmUvY3JjLWZyb20tZmVkb3JhLXBhY2thZ2VzLTMuYwpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uY2IyNDU0ZDQ1 OTQKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy90 b3J0dXJlL2NyYy1mcm9tLWZlZG9yYS1wYWNrYWdlcy0zLmMKQEAgLTAsMCAr MSwyMiBAQAorLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0 aW9ucyAiLWZkdW1wLXRyZWUtY3JjLWRldGFpbHMiIH0gKi8KKy8qIHsgZGct c2tpcC1pZiAiIiB7ICotKi0qIH0geyAiLU8wIiAiLU8xIiAiLU9zIiAiLU8z IiAiLWZsdG8ifSB9ICovCisKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKy8vRmls ZSAtIGFzX2Zvcm1hdAordWludDMyX3QgY3JjMzJyKGNvbnN0IHVpbnQ4X3Qg KmRhdGEsIHVpbnQzMl90IHNpemUpCit7CisKKyAgICB1aW50MzJfdCBjcmMg PSAweGZmZmZmZmZmOworICAgIGZvcih1aW50MzJfdCBpPTA7IGkgIT0gc2l6 ZTsgaSsrKSB7CisgICAgICAgIGNyYyA9IGNyYyBeIGRhdGFbaV07CisgICAg ICAgIGZvcihpbnQgaj0wOyBqPDg7IGorKykKKyAgICAgICAgICAgIGlmKGNy YyAmIDEpCisgICAgICAgICAgICAgICAgY3JjID0gKGNyYyA+PiAxKSBeIDB4 ZWRiODgzMjA7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg Y3JjID0gY3JjID4+IDE7CisgICAgfQorICAgIHJldHVybiB+Y3JjOworfQor CisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgImNhbGN1bGF0ZXMg Q1JDISIgImNyYyJ9IH0gKi8KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy90b3J0dXJlL2Ny Yy1mcm9tLWZlZG9yYS1wYWNrYWdlcy00LmMgYi9nY2MvdGVzdHN1aXRlL2dj Yy5kZy90b3J0dXJlL2NyYy1mcm9tLWZlZG9yYS1wYWNrYWdlcy00LmMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjBlMDQxYTE4 N2NkCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcv dG9ydHVyZS9jcmMtZnJvbS1mZWRvcmEtcGFja2FnZXMtNC5jCkBAIC0wLDAg KzEsMjIgQEAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9w dGlvbnMgIi1mZHVtcC10cmVlLWNyYy1kZXRhaWxzIiB9ICovCisvKiB7IGRn LXNraXAtaWYgIiIgeyAqLSotKiB9IHsgIi1PMCIgIi1PMSIgIi1PcyIgIi1P MyIgIi1mbHRvIn0gfSAqLworCisvLyBjcmMuaWkKK3R5cGVkZWYgdW5zaWdu ZWQgaW50IHUzMjsKKwordm9pZCBHZW5lcmF0ZUNSQzMyVGFibGUgKHUzMiBw b2x5bm9taWFsLCB1MzIgKnRhYmxlKQoreworICBmb3IgKHUzMiBpID0gMDsg aSA8PSAyNTU7IGkrKykKKyAgICB7CisgICAgICB1MzIgY3JjID0gaTsKKyAg ICAgIGZvciAodTMyIGogPSAwOyBqIDwgODsgaisrKQorCXsKKwkgIGNyYyA9 IChjcmMgPj4gMSkgXiAoKGNyYyAmIDEpID8gMHgyMzQyODc2NSA6IDApOwor CX0KKyAgICAgIHRhYmxlW2ldID0gY3JjOworICAgIH0KK30KKworCisvKiB7 IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgImNhbGN1bGF0ZXMgQ1JDISIg ImNyYyJ9IH0gKi8KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg LS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy90b3J0dXJlL2NyYy1mcm9t LWZlZG9yYS1wYWNrYWdlcy01LmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy90 b3J0dXJlL2NyYy1mcm9tLWZlZG9yYS1wYWNrYWdlcy01LmMKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjQxYTY0MThlOGMzCi0t LSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdG9ydHVy ZS9jcmMtZnJvbS1mZWRvcmEtcGFja2FnZXMtNS5jCkBAIC0wLDAgKzEsNTQg QEAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMg Ii1mZHVtcC10cmVlLWNyYy1kZXRhaWxzIiB9ICovCisvKiB7IGRnLXNraXAt aWYgIiIgeyAqLSotKiB9IHsgIi1PMCIgIi1PMSIgIi1PcyIgIi1mbHRvIn0g fSAqLworCisvLyBjcmMzMi5pCisvLyBXZSBkb24ndCBzdXBwb3J0IHRoaXMg Y2FzZS4KKworI2luY2x1ZGUgPHN0ZGRlZi5oPgordHlwZWRlZiB1bnNpZ25l ZCBpbnQgdTMyOwordTMyIGdmMl9tdWx0aXBseSh1MzIgeCwgdTMyIHksIHUz MiBtb2R1bHVzKQoreworICAgIHUzMiBwcm9kdWN0ID0geCAmIDEgPyB5IDog MDsKKyAgICBpbnQgaTsKKworICAgIGZvciAoaSA9IDA7IGkgPCAzMTsgaSsr KSB7CisgICAgICAgIHByb2R1Y3QgPSAocHJvZHVjdCA+PiAxKSBeIChwcm9k dWN0ICYgMSA/IG1vZHVsdXMgOiAwKTsKKyAgICAgICAgeCA+Pj0gMTsKKyAg ICAgICAgcHJvZHVjdCBePSB4ICYgMSA/IHkgOiAwOworICAgIH0KKworICAg IHJldHVybiBwcm9kdWN0OworfQorCit1MzIgY3JjMzJfZ2VuZXJpY19zaGlm dCh1MzIgY3JjLCBzaXplX3QgbGVuLAorICAgICAgICAgICAgICAgICAgICAg ICAgdTMyIHBvbHlub21pYWwpCit7CisgICAgdTMyIHBvd2VyID0gMHgyMTAx OworICAgIGludCBpOworCisgICAgZm9yIChpID0gMDsgaSA8IDggKiAoaW50 KShsZW4gJiAzKTsgaSsrKQorICAgICAgICBjcmMgPSAoY3JjID4+IDEpIF4g KGNyYyAmIDEgPyAweDIxMDEgOiAwKTsKKworICAgIGxlbiA+Pj0gMjsKKyAg ICBpZiAoIWxlbikKKyAgICAgICAgcmV0dXJuIGNyYzsKKworICAgIGZvciAo OzspIHsKKworICAgICAgICBpZiAobGVuICYgMSkKKyAgICAgICAgICAgIGNy YyA9IGdmMl9tdWx0aXBseShjcmMsIHBvd2VyLCBwb2x5bm9taWFsKTsKKwor ICAgICAgICBsZW4gPj49IDE7CisgICAgICAgIGlmICghbGVuKQorICAgICAg ICAgICAgYnJlYWs7CisKKworICAgICAgICBwb3dlciA9IGdmMl9tdWx0aXBs eShwb3dlciwgcG93ZXIsIHBvbHlub21pYWwpOworICAgIH0KKworICAgIHJl dHVybiBjcmM7Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVt cCAiTG9vcCBpdGVyYXRpb24gbnVtYmVyIGlzbid0IGEgY29uc3RhbnQuIiAi Y3JjIn0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJM b29wIGl0ZXJhdGlvbiBudW1iZXIgaXMgMzAiICJjcmMifSB9ICovClwgTm8g bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3Rz dWl0ZS9nY2MuZGcvdG9ydHVyZS9jcmMtZnJvbS1mZWRvcmEtcGFja2FnZXMt Ni5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdG9ydHVyZS9jcmMtZnJvbS1m ZWRvcmEtcGFja2FnZXMtNi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwLi43ZDJhOTNkNmI3NQotLS0gL2Rldi9udWxsCisrKyBi L2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RvcnR1cmUvY3JjLWZyb20tZmVkb3Jh LXBhY2thZ2VzLTYuYwpAQCAtMCwwICsxLDQxIEBACisvKiB7IGRnLWRvIGNv bXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItZmR1bXAtdHJlZS1jcmMt ZGV0YWlscyIgfSAqLworLyogeyBkZy1za2lwLWlmICIiIHsgKi0qLSogfSB7 ICItTzAiICItTzEiICItT3MiICItTzMiICItZmx0byJ9IH0gKi8KKworLy8g bGlibW5nX2NodW5rX2lvCit0eXBlZGVmIHVuc2lnbmVkIGludCBtbmdfdWlu dDMyOwordHlwZWRlZiBzaWduZWQgaW50IG1uZ19pbnQzMjsKK3R5cGVkZWYg c2lnbmVkIGNoYXIgbW5nX2ludDg7Cit0eXBlZGVmIG1uZ19pbnQ4IG1uZ19i b29sOwordHlwZWRlZiBzdHJ1Y3QgbW5nX2RhdGFfc3RydWN0IHsKKyAgICAv LyAuLi4KKyAgICBtbmdfdWludDMyIGFDUkN0YWJsZSBbMjU2XTsKKyAgICBt bmdfYm9vbCBiQ1JDY29tcHV0ZWQ7CisgICAgLy8gLi4uCit9IG1uZ19kYXRh OworCit0eXBlZGVmIG1uZ19kYXRhICogbW5nX2RhdGFwOwordm9pZCBtYWtl X2NyY190YWJsZSAobW5nX2RhdGFwIHBEYXRhKQoreworICAgIG1uZ191aW50 MzIgaUM7CisgICAgbW5nX2ludDMyIGlOLCBpSzsKKworICAgIGZvciAoaU4g PSAwOyBpTiA8IDI1NjsgaU4rKykKKyAgICB7CisgICAgICAgIGlDID0gKG1u Z191aW50MzIpIGlOOworCisgICAgICAgIGZvciAoaUsgPSAwOyBpSyA8IDg7 IGlLKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChpQyAmIDEpCisg ICAgICAgICAgICAgICAgaUMgPSAweGVkYjg4MzIwVSBeIChpQyA+PiAxKTsK KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBpQyA9IGlDID4+ IDE7CisgICAgICAgIH0KKworICAgICAgICBwRGF0YS0+YUNSQ3RhYmxlIFtp Tl0gPSBpQzsKKyAgICB9CisKKyAgICBwRGF0YS0+YkNSQ2NvbXB1dGVkID0g MTsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJjYWxj dWxhdGVzIENSQyEiICJjcmMifSB9ICovClwgTm8gbmV3bGluZSBhdCBlbmQg b2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdG9y dHVyZS9jcmMtZnJvbS1mZWRvcmEtcGFja2FnZXMtNy5jIGIvZ2NjL3Rlc3Rz dWl0ZS9nY2MuZGcvdG9ydHVyZS9jcmMtZnJvbS1mZWRvcmEtcGFja2FnZXMt Ny5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5j NGEyMTcwMzk3MwotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUv Z2NjLmRnL3RvcnR1cmUvY3JjLWZyb20tZmVkb3JhLXBhY2thZ2VzLTcuYwpA QCAtMCwwICsxLDE4IEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyog eyBkZy1vcHRpb25zICItZmR1bXAtdHJlZS1jcmMtZGV0YWlscyIgfSAqLwor LyogeyBkZy1za2lwLWlmICIiIHsgKi0qLSogfSB7ICItTzAiICItTzEiICIt T3MiICItZmx0byJ9IH0gKi8KKworLy8gRmlsZSAtIGxzZl9kZWNvZGUsIG1v ZGlmaWVkLgorLy8gV2UgZG9uJ3Qgc3VwcG9ydCB0aGlzIGNhc2UuCisKKyNp bmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KKwordWlu dDE2X3QgY3JjKHVpbnQ4X3QgYnl0ZSwgdWludDE2X3QgcmVnKSB7CisgICAg Zm9yIChzaXplX3QgaSA9IDA7IGkgIT0gODsgKytpKSB7CisgICAgICAgIHVp bnQxNl90IG1zYiA9IHJlZyAmIDB4ODAwMDsKKyAgICAgICAgcmVnID0gKChy ZWcgPDwgMSkgJiAweEZGRkYpIHwgKChieXRlID4+ICg3IC0gaSkpICYgMHgw MDAxKTsKKyAgICAgICAgaWYgKG1zYikgcmVnIF49IDB4NTkzNTsKKyAgICB9 CisgICAgcmV0dXJuIHJlZyAmIDB4RkZGRjsKK30KXCBObyBuZXdsaW5lIGF0 IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5k Zy90b3J0dXJlL2NyYy1mcm9tLWZlZG9yYS1wYWNrYWdlcy04LmMgYi9nY2Mv dGVzdHN1aXRlL2djYy5kZy90b3J0dXJlL2NyYy1mcm9tLWZlZG9yYS1wYWNr YWdlcy04LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAuLjg3NTdjNmM4M2ZhCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3Rz dWl0ZS9nY2MuZGcvdG9ydHVyZS9jcmMtZnJvbS1mZWRvcmEtcGFja2FnZXMt OC5jCkBAIC0wLDAgKzEsMzAgQEAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICov CisvKiB7IGRnLW9wdGlvbnMgIi1mZHVtcC10cmVlLWNyYy1kZXRhaWxzIiB9 ICovCisvKiB7IGRnLXNraXAtaWYgIiIgeyAqLSotKiB9IHsgIi1PMCIgIi1P MSIgIi1PcyIgIi1mbHRvIn0gfSAqLworCisjaW5jbHVkZSA8c3RkaW50Lmg+ CisjaW5jbHVkZSA8c3RkZGVmLmg+CisvLyBGaWxlIC0gbWlzYwordWludDMy X3QgX2NyYzMyKHVpbnQzMl90IGNyYywgdWludDMyX3QgZGF0YSkgeworICAg IGludCBpOworICAgIGNyYyA9IGNyYyBeIGRhdGE7CisKKyAgICBmb3IgKGkg PSAwOyBpIDwgMzI7IGkrKykgeworICAgICAgICBpZiAoY3JjICYgMHg4MDAw MDAwMCkKKyAgICAgICAgICAgIGNyYyA9IChjcmMgPDwgMSkgXiAweDA0QzEx REI3OworICAgICAgICBlbHNlCisgICAgICAgICAgICBjcmMgPSAoY3JjIDw8 IDEpOworICAgIH0KKworICAgIHJldHVybiBjcmM7Cit9CisKK3VpbnQzMl90 IHN0bV9jcmMzMihjb25zdCB1aW50OF90ICpkYXRhLCBzaXplX3Qgc2l6ZSkg eworICAgIHVpbnQzMl90IGNyYyA9IDB4ZmZmZmZmZmY7CisgICAgY29uc3Qg dWludDMyX3QgKnBlbmQgPSAoY29uc3QgdWludDMyX3QgKikgKGRhdGEgKyBz aXplKTsKKyAgICBmb3IgKGNvbnN0IHVpbnQzMl90ICpwID0gKGNvbnN0IHVp bnQzMl90ICopIChkYXRhKTsgcCA8IHBlbmQ7IHArKykKKyAgICAgICAgY3Jj ID0gX2NyYzMyKGNyYywgKnApOworICAgIHJldHVybiBjcmM7Cit9CisKKy8q IHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAiY2FsY3VsYXRl cyBDUkMhIiAyICJjcmMifSB9ICovClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg ZmlsZQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdG9ydHVy ZS9jcmMtZnJvbS1mZWRvcmEtcGFja2FnZXMtOS5jIGIvZ2NjL3Rlc3RzdWl0 ZS9nY2MuZGcvdG9ydHVyZS9jcmMtZnJvbS1mZWRvcmEtcGFja2FnZXMtOS5j Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4xNWJj MDdmMGRlMwotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2Nj LmRnL3RvcnR1cmUvY3JjLWZyb20tZmVkb3JhLXBhY2thZ2VzLTkuYwpAQCAt MCwwICsxLDQ5IEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBk Zy1vcHRpb25zICItZmR1bXAtdHJlZS1jcmMtZGV0YWlscyAtdyIgfSAqLwor LyogeyBkZy1za2lwLWlmICIiIHsgKi0qLSogfSB7ICItTzAiICItTzEiICIt T3MiICItTzMiICItZmx0byJ9IH0gKi8KKworLy8gRmlsZSAtIG52bWVfbWkK KyNpbmNsdWRlIDxzdGRsaWIuaD4KK3R5cGVkZWYgdW5zaWduZWQgaW50IF9f dTMyOwordHlwZWRlZiB1bnNpZ25lZCBjaGFyIF9fdTg7CitzdHJ1Y3QgbnZt ZV9taV9tc2dfaGRyIHsKKyAgICBfX3U4IHR5cGU7CisgICAgX191OCBubXA7 CisgICAgX191OCBtZWI7CisgICAgX191OCByc3ZkMDsKK30gX19hdHRyaWJ1 dGVfXygocGFja2VkKSk7CisKK3N0cnVjdCBudm1lX21pX3JlcSB7CisgICAg c3RydWN0IG52bWVfbWlfbXNnX2hkciAqaGRyOworICAgIHNpemVfdCBoZHJf bGVuOworICAgIHZvaWQgKmRhdGE7CisgICAgc2l6ZV90IGRhdGFfbGVuOwor ICAgIF9fdTMyIG1pYzsKK307CitfX3UzMiBudm1lX21pX2NyYzMyX3VwZGF0 ZSAoX191MzIgY3JjLCB2b2lkICpkYXRhLCBzaXplX3QgbGVuKQoreworICBp bnQgaTsKKworICB3aGlsZSAobGVuLS0pCisgICAgeworICAgICAgY3JjIF49 ICoodW5zaWduZWQgY2hhciAqKSAoZGF0YSsrKTsKKyAgICAgIGZvciAoaSA9 IDA7IGkgPCA4OyBpKyspCisJY3JjID0gKGNyYyA+PiAxKSBeICgoY3JjICYg MSkgPyAweDgyRjYzQjc4IDogMCk7CisgICAgfQorICByZXR1cm4gY3JjOwor fQorCit2b2lkIG52bWVfbWlfY2FsY19yZXFfbWljIChzdHJ1Y3QgbnZtZV9t aV9yZXEgKnJlcSkKK3sKKyAgaWYgKHNpemVvZiAoX191MzIpIDwgNCkKKyAg ICBleGl0ICgwKTsKKworICBfX3UzMiBjcmMgPSAweGZmZmZmZmZmOworCisg IGNyYyA9IG52bWVfbWlfY3JjMzJfdXBkYXRlIChjcmMsIHJlcS0+aGRyLCBy ZXEtPmhkcl9sZW4pOworICBjcmMgPSBudm1lX21pX2NyYzMyX3VwZGF0ZSAo Y3JjLCByZXEtPmRhdGEsIHJlcS0+ZGF0YV9sZW4pOworCisgIHJlcS0+bWlj ID0gfmNyYzsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1w ICJjYWxjdWxhdGVzIENSQyEiICJjcmMifSB9ICovClwgTm8gbmV3bGluZSBh dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2Mu ZGcvdG9ydHVyZS9jcmMtbGludXgtMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2Mu ZGcvdG9ydHVyZS9jcmMtbGludXgtMS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwLi45MTJmZDY0NTlkMgotLS0gL2Rldi9udWxs CisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RvcnR1cmUvY3JjLWxpbnV4 LTEuYwpAQCAtMCwwICsxLDQ1IEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAq LworLyogeyBkZy1vcHRpb25zICItZmR1bXAtdHJlZS1jcmMtZGV0YWlscyAt dyIgfSAqLworLyogeyBkZy1za2lwLWlmICIiIHsgKi0qLSogfSB7ICItTzAi ICItTzEiICItT3MiICItTzMiICItZmx0byJ9IH0gKi8KKworI2luY2x1ZGUg PHN0ZGxpYi5oPgorI2RlZmluZSBDUkMzMl9QT0xZX0JFIDB4MDRjMTFkYjcK KyNkZWZpbmUgUkVUVkFMX09VVF9PRl9NRU1PUlkJCSgtNikKKyNkZWZpbmUg UkVUVkFMX05PVF9CWklQX0RBVEEJCSgtMikKKyNkZWZpbmUgUkVUVkFMX09L CQkJMAorCitzdHJ1Y3QgYnVuemlwX2RhdGEgeworICAgIHVuc2lnbmVkIGlu dCBjcmMzMlRhYmxlWzI1Nl07Cit9OworCisKK2ludCBzdGFydF9idW56aXAo c3RydWN0IGJ1bnppcF9kYXRhICoqYmRwLCB2b2lkICppbmJ1ZiwgbG9uZyBs ZW4sCisJCQkgICAgIGxvbmcgKCpmaWxsKSh2b2lkKiwgdW5zaWduZWQgbG9u ZykpCit7CisgIGlmIChzaXplb2YgKHVuc2lnbmVkIGludCkgPD0gMykKKyAg ICBleGl0ICgwKTsKKworICBzdHJ1Y3QgYnVuemlwX2RhdGEgKmJkOworICB1 bnNpZ25lZCBpbnQgaSwgaiwgYzsKKworICAvKiBGaWd1cmUgb3V0IGhvdyBt dWNoIGRhdGEgdG8gYWxsb2NhdGUgKi8KKyAgaSA9IHNpemVvZihzdHJ1Y3Qg YnVuemlwX2RhdGEpOworCisgIC8qIEFsbG9jYXRlIGJ1bnppcF9kYXRhLiAg TW9zdCBmaWVsZHMgaW5pdGlhbGl6ZSB0byB6ZXJvLiAqLworICBiZCA9ICpi ZHAgPSBtYWxsb2MoaSk7CisKKyAgLyogLi4uICovCisKKyAgLyogSW5pdCB0 aGUgQ1JDMzIgdGFibGUgKGJpZyBlbmRpYW4pICovCisgIGZvciAoaSA9IDA7 IGkgPCAyNTY7IGkrKykgeworICAgICAgYyA9IGkgPDwgMjQ7CisgICAgICBm b3IgKGogPSA4OyBqOyBqLS0pCisJYyA9IGMmMHg4MDAwMDAwMCA/IChjIDw8 IDEpXihDUkMzMl9QT0xZX0JFKSA6IChjIDw8IDEpOworICAgICAgYmQtPmNy YzMyVGFibGVbaV0gPSBjOworICAgIH0KKworICAvKiAuIC4gLiAqLworICBy ZXR1cm4gUkVUVkFMX09LOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10 cmVlLWR1bXAgImNhbGN1bGF0ZXMgQ1JDISIgImNyYyJ9IH0gKi8KZGlmZiAt LWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RvcnR1cmUvY3JjLWxpbnV4 LTIuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RvcnR1cmUvY3JjLWxpbnV4 LTIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u MzY2ZWEwZjgxNGYKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRl L2djYy5kZy90b3J0dXJlL2NyYy1saW51eC0yLmMKQEAgLTAsMCArMSw2NSBA QAorLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAi LWZkdW1wLXRyZWUtY3JjLWRldGFpbHMiIH0gKi8KKy8qIHsgZGctc2tpcC1p ZiAiIiB7ICotKi0qIH0geyAiLU8wIiAiLU8xIiAiLU9zIiAiLWZsdG8ifSB9 ICovCisKKyNpbmNsdWRlIDxzdGRkZWYuaD4KK3R5cGVkZWYgdW5zaWduZWQg Y2hhciAgdTg7Cit0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHUxNjsKK3R5cGVk ZWYgdW5zaWduZWQgY2hhciBfX3U4OwordHlwZWRlZiB1bnNpZ25lZCBzaG9y dCBfX3UxNjsKK3N0cnVjdCBpMmNfbXNnIHsKKyAgICBfX3UxNiBhZGRyOwor ICAgIF9fdTE2IGZsYWdzOworI2RlZmluZSBJMkNfTV9SRCAgICAgICAgICAg ICAgICAweDAwMDEgIC8qIGd1YXJhbnRlZWQgdG8gYmUgMHgwMDAxISAqLwor ICAgIC8qIC4uLiAqLworICAgIF9fdTE2IGxlbjsKKyAgICBfX3U4ICpidWY7 Cit9OworCisjZGVmaW5lIFBPTFkgICAgKDB4MTA3MFUgPDwgMykKK3N0YXRp YyB1OCBjcmM4KHUxNiBkYXRhKQoreworICBpbnQgaTsKKworICBmb3IgKGkg PSAwOyBpIDwgODsgaSsrKSB7CisgICAgICBpZiAoZGF0YSAmIDB4ODAwMCkK KwlkYXRhID0gZGF0YSBeIFBPTFk7CisgICAgICBkYXRhID0gZGF0YSA8PCAx OworICAgIH0KKyAgcmV0dXJuICh1OCkoZGF0YSA+PiA4KTsKK30KKworLyoq CisqIGkyY19zbWJ1c19wZWMgLSBJbmNyZW1lbnRhbCBDUkM4IG92ZXIgdGhl IGdpdmVuIGlucHV0IGRhdGEgYXJyYXkKKyogQGNyYzogcHJldmlvdXMgcmV0 dXJuIGNyYzggdmFsdWUKKyogQHA6IHBvaW50ZXIgdG8gZGF0YSBidWZmZXIu CisqIEBjb3VudDogbnVtYmVyIG9mIGJ5dGVzIGluIGRhdGEgYnVmZmVyLgor KgorKiBJbmNyZW1lbnRhbCBDUkM4IG92ZXIgY291bnQgYnl0ZXMgaW4gdGhl IGFycmF5IHBvaW50ZWQgdG8gYnkgcAorKi8KK3U4IGkyY19zbWJ1c19wZWMo dTggY3JjLCB1OCAqcCwgc2l6ZV90IGNvdW50KQoreworICBpbnQgaTsKKwor ICBmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykKKyAgICBjcmMgPSBjcmM4 KChjcmMgXiBwW2ldKSA8PCA4KTsKKyAgcmV0dXJuIGNyYzsKK30KK3N0YXRp YyBpbmxpbmUgdTggaTJjXzhiaXRfYWRkcl9mcm9tX21zZyhjb25zdCBzdHJ1 Y3QgaTJjX21zZyAqbXNnKQoreworICByZXR1cm4gKG1zZy0+YWRkciA8PCAx KSB8IChtc2ctPmZsYWdzICYgSTJDX01fUkQgPyAxIDogMCk7Cit9CisKKwor LyogQXNzdW1lIGEgNy1iaXQgYWRkcmVzcywgd2hpY2ggaXMgcmVhc29uYWJs ZSBmb3IgU01CdXMgKi8KK3U4IGkyY19zbWJ1c19tc2dfcGVjKHU4IHBlYywg c3RydWN0IGkyY19tc2cgKm1zZykKK3sKKyAgLyogVGhlIGFkZHJlc3Mgd2ls bCBiZSBzZW50IGZpcnN0ICovCisgIHU4IGFkZHIgPSBpMmNfOGJpdF9hZGRy X2Zyb21fbXNnKG1zZyk7CisgIHBlYyA9IGkyY19zbWJ1c19wZWMocGVjLCAm YWRkciwgMSk7CisKKyAgLyogVGhlIGRhdGEgYnVmZmVyIGZvbGxvd3MgKi8K KyAgcmV0dXJuIGkyY19zbWJ1c19wZWMocGVjLCBtc2ctPmJ1ZiwgbXNnLT5s ZW4pOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgImNh bGN1bGF0ZXMgQ1JDISIgImNyYyJ9IH0gKi8KXCBObyBuZXdsaW5lIGF0IGVu ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy90 b3J0dXJlL2NyYy1saW51eC0zLmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy90 b3J0dXJlL2NyYy1saW51eC0zLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAuLjMwMWY2ZDIyYjY1Ci0tLSAvZGV2L251bGwKKysr IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdG9ydHVyZS9jcmMtbGludXgtMy5j CkBAIC0wLDAgKzEsNDkgQEAKKy8qIFdlIGRvbid0IGZpbmQgdGhpcyBjYXNl IGJlY2F1c2UgaW4gImNyYzMyX2dlbmVyaWNfc2hpZnQiIGZ1bmN0aW9uCisg ICBsb29wJ3MgaXRlcmF0aW9uIG51bWJlciBpc24ndCBhIGNvbnN0YW50IChp IDwgOCAqIChpbnQpKGxlbiAmIDMpKS4gICovCisKKyNpbmNsdWRlIDxzdGRk ZWYuaD4KK3R5cGVkZWYgdW5zaWduZWQgaW50IHUzMjsKKyNkZWZpbmUgX19h dHRyaWJ1dGVfY29uc3RfXwlfX2F0dHJpYnV0ZV9fKChfX2NvbnN0X18pKQor c3RhdGljIHUzMiBfX2F0dHJpYnV0ZV9jb25zdF9fIGdmMl9tdWx0aXBseSAo dTMyIHgsIHUzMiB5LCB1MzIgbW9kdWx1cykKK3sKKyAgdTMyIHByb2R1Y3Qg PSB4ICYgMSA/IHkgOiAwOworICBpbnQgaTsKKworICBmb3IgKGkgPSAwOyBp IDwgMzE7IGkrKykKKyAgICB7CisgICAgICBwcm9kdWN0ID0gKHByb2R1Y3Qg Pj4gMSkgXiAocHJvZHVjdCAmIDEgPyBtb2R1bHVzIDogMCk7CisgICAgICB4 ID4+PSAxOworICAgICAgcHJvZHVjdCBePSB4ICYgMSA/IHkgOiAwOworICAg IH0KKyAgcmV0dXJuIHByb2R1Y3Q7Cit9CisKK3UzMiBfX2F0dHJpYnV0ZV9j b25zdF9fIGNyYzMyX2dlbmVyaWNfc2hpZnQodTMyIGNyYywgc2l6ZV90IGxl biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdTMyIHBvbHlub21pYWwpCit7CisgICAgICAgdTMyIHBvd2Vy ID0gcG9seW5vbWlhbDsgLyogQ1JDIG9mIHheMzIgKi8KKyAgICAgICBpbnQg aTsKKworICAgICAgIC8qIFNoaWZ0IHVwIHRvIDMyIGJpdHMgaW4gdGhlIHNp bXBsZSBsaW5lYXIgd2F5ICovCisgICAgICAgZm9yIChpID0gMDsgaSA8IDgg KiAoaW50KShsZW4gJiAzKTsgaSsrKQorICAgICAgICAgICAgICAgY3JjID0g KGNyYyA+PiAxKSBeIChjcmMgJiAxID8gcG9seW5vbWlhbCA6IDApOworCisg ICAgICAgbGVuID4+PSAyOworICAgICAgIGlmICghbGVuKQorICAgICAgICAg ICAgICAgcmV0dXJuIGNyYzsKKworICAgICAgIGZvciAoOzspIHsKKyAgICAg ICAgICAgICAgIC8qICJwb3dlciIgaXMgeF4oMl5pKSwgbW9kdWxvIHRoZSBw b2x5bm9taWFsICovCisgICAgICAgICAgICAgICBpZiAobGVuICYgMSkKKyAg ICAgICAgICAgICAgICAgICAgICAgY3JjID0gZ2YyX211bHRpcGx5KGNyYywg cG93ZXIsIHBvbHlub21pYWwpOworCisgICAgICAgICAgICAgICBsZW4gPj49 IDE7CisgICAgICAgICAgICAgICBpZiAoIWxlbikKKyAgICAgICAgICAgICAg ICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgIC8qIFNxdWFyZSBw b3dlciwgYWR2YW5jaW5nIHRvIHheKDJeKGkrMSkpICovCisgICAgICAgICAg ICAgICBwb3dlciA9IGdmMl9tdWx0aXBseShwb3dlciwgcG93ZXIsIHBvbHlu b21pYWwpOworICAgICAgIH0KKworICAgICAgIHJldHVybiBjcmM7Cit9Clwg Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ2NjL3Rl c3RzdWl0ZS9nY2MuZGcvdG9ydHVyZS9jcmMtbGludXgtNC5jIGIvZ2NjL3Rl c3RzdWl0ZS9nY2MuZGcvdG9ydHVyZS9jcmMtbGludXgtNC5jCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi43ZjViMzRhNDBmMQot LS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RvcnR1 cmUvY3JjLWxpbnV4LTQuYwpAQCAtMCwwICsxLDMwIEBACisvKiB7IGRnLWRv IGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItZmR1bXAtdHJlZS1j cmMtZGV0YWlscyAtdyIgfSAqLworLyogeyBkZy1za2lwLWlmICIiIHsgKi0q LSogfSB7ICItTzAiICItTzEiICItT3MiICItZmx0byJ9IH0gKi8KKworLyog V2UgZG9uJ3QgZGV0ZWN0LCBpdCdzIG9wdGltaXplZCB0byBicmFuY2gtbGVz cyBDUkMuICAqLworI2RlZmluZSBDUkMzMl9QT0xZX0xFIDB4ZWRiODgzMjAK K3R5cGVkZWYgdW5zaWduZWQgaW50IHUzMjsKK3UzMiBjYWxjX2NyYyh1bnNp Z25lZCBjaGFyICpidWYsIGludCBsZW4pCit7CisgIHUzMiByZWc7CisgIHUz MiB0bXA7CisgIGludCBqLCBrOworCisgIHJlZyA9IDB4ZmZmZmZmZmY7CisK KyAgZm9yIChqID0gMDsgaiA8IGxlbjsgaisrKSB7CisgICAgICByZWcgXj0g YnVmW2pdOworCisgICAgICBmb3IgKGsgPSAwOyBrIDwgODsgaysrKSB7CisJ ICB0bXAgPSByZWcgJiAweDAxOworCisJICByZWcgPj49IDE7CisKKwkgIGlm ICh0bXApCisJICAgIHJlZyBePSBDUkMzMl9QT0xZX0xFOworCX0KKyAgICB9 CisKKyAgcmV0dXJuIH5yZWc7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg ZmlsZQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdG9ydHVy ZS9jcmMtbGludXgtNS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdG9ydHVy ZS9jcmMtbGludXgtNS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwLi40MTk2NTljNzhlMQotLS0gL2Rldi9udWxsCisrKyBiL2dj Yy90ZXN0c3VpdGUvZ2NjLmRnL3RvcnR1cmUvY3JjLWxpbnV4LTUuYwpAQCAt MCwwICsxLDgxIEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBk Zy1vcHRpb25zICItZmR1bXAtdHJlZS1jcmMtZGV0YWlscyIgfSAqLworLyog eyBkZy1za2lwLWlmICIiIHsgKi0qLSogfSB7ICItTzAiICItTzEiICItT3Mi ICItZmx0byJ9IH0gKi8KKworI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1 ZGUgPHN0ZGludC5oPgorLyogV2UgZG9uJ3QgZmluZCwgYXMgd2UgY2FuJ3Qg cmVwbGFjZSB0aGUgZmlyc3QgbG9vcCwKKyAgIGFuZCBpbiB0aGUgc2Vjb25k IGxvb3AgcG9seW5vbWlhbHMgbGVhZGluZyAxIGJpdCBpcyBrZXB0IHRvbwor ICAgKHNlY29uZCBmdW5jdGlvbidzIGl0ZXJhdGlvbiBjb3VudCBpcyA0KS4g ICovCit0eXBlZGVmIHVuc2lnbmVkIGNoYXIgIHU4OwordHlwZWRlZiB1bnNp Z25lZCBzaG9ydCB1MTY7Cit1OCBkcm1fZHBfbXNnX2RhdGFfY3JjNChjb25z dCB1aW50OF90ICpkYXRhLCB1OCBudW1iZXJfb2ZfYnl0ZXMpCit7CisgIHU4 IGJpdG1hc2sgPSAweDgwOworICB1OCBiaXRzaGlmdCA9IDc7CisgIHU4IGFy cmF5X2luZGV4ID0gMDsKKyAgaW50IG51bWJlcl9vZl9iaXRzID0gbnVtYmVy X29mX2J5dGVzICogODsKKyAgdTE2IHJlbWFpbmRlciA9IDA7CisKKyAgd2hp bGUgKG51bWJlcl9vZl9iaXRzICE9IDApIHsKKyAgICAgIG51bWJlcl9vZl9i aXRzLS07CisgICAgICByZW1haW5kZXIgPDw9IDE7CisgICAgICByZW1haW5k ZXIgfD0gKGRhdGFbYXJyYXlfaW5kZXhdICYgYml0bWFzaykgPj4gYml0c2hp ZnQ7CisgICAgICBiaXRtYXNrID4+PSAxOworICAgICAgYml0c2hpZnQtLTsK KyAgICAgIGlmIChiaXRtYXNrID09IDApIHsKKwkgIGJpdG1hc2sgPSAweDgw OworCSAgYml0c2hpZnQgPSA3OworCSAgYXJyYXlfaW5kZXgrKzsKKwl9Cisg ICAgICBpZiAoKHJlbWFpbmRlciAmIDB4MTAwKSA9PSAweDEwMCkKKwlyZW1h aW5kZXIgXj0gMHhkNTsKKyAgICB9CisKKyAgbnVtYmVyX29mX2JpdHMgPSA4 OworICB3aGlsZSAobnVtYmVyX29mX2JpdHMgIT0gMCkgeworICAgICAgbnVt YmVyX29mX2JpdHMtLTsKKyAgICAgIHJlbWFpbmRlciA8PD0gMTsKKyAgICAg IGlmICgocmVtYWluZGVyICYgMHgxMDApICE9IDApCisJcmVtYWluZGVyIF49 IDB4ZDU7CisgICAgfQorCisgIHJldHVybiByZW1haW5kZXIgJiAweGZmOwor fQorCisvKiBzaWRlYmFuZCBtc2cgaGFuZGxpbmcgKi8KK3U4IGRybV9kcF9t c2dfaGVhZGVyX2NyYzQoY29uc3QgdWludDhfdCAqZGF0YSwgc2l6ZV90IG51 bV9uaWJibGVzKQoreworICB1OCBiaXRtYXNrID0gMHg4MDsKKyAgdTggYml0 c2hpZnQgPSA3OworICB1OCBhcnJheV9pbmRleCA9IDA7CisgIGludCBudW1i ZXJfb2ZfYml0cyA9IG51bV9uaWJibGVzICogNDsKKyAgdTggcmVtYWluZGVy ID0gMDsKKworICB3aGlsZSAobnVtYmVyX29mX2JpdHMgIT0gMCkgeworICAg ICAgbnVtYmVyX29mX2JpdHMtLTsKKyAgICAgIHJlbWFpbmRlciA8PD0gMTsK KyAgICAgIHJlbWFpbmRlciB8PSAoZGF0YVthcnJheV9pbmRleF0gJiBiaXRt YXNrKSA+PiBiaXRzaGlmdDsKKyAgICAgIGJpdG1hc2sgPj49IDE7CisgICAg ICBiaXRzaGlmdC0tOworICAgICAgaWYgKGJpdG1hc2sgPT0gMCkgeworCSAg Yml0bWFzayA9IDB4ODA7CisJICBiaXRzaGlmdCA9IDc7CisJICBhcnJheV9p bmRleCsrOworCX0KKyAgICAgIGlmICgocmVtYWluZGVyICYgMHgxMCkgPT0g MHgxMCkKKwlyZW1haW5kZXIgXj0gMHgxMzsKKyAgICB9CisKKyAgbnVtYmVy X29mX2JpdHMgPSA0OworICB3aGlsZSAobnVtYmVyX29mX2JpdHMgIT0gMCkg eworICAgICAgbnVtYmVyX29mX2JpdHMtLTsKKyAgICAgIHJlbWFpbmRlciA8 PD0gMTsKKyAgICAgIGlmICgocmVtYWluZGVyICYgMHgxMCkgIT0gMCkKKwly ZW1haW5kZXIgXj0gMHgxMzsKKyAgICB9CisKKyAgcmV0dXJuIHJlbWFpbmRl cjsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJkcm1f ZHBfbXNnX2RhdGFfY3JjNCBmdW5jdGlvbiBtYXliZSBjb250YWlucyBDUkMg Y2FsY3VsYXRpb24uIiAiY3JjIn0gfSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rl c3RzdWl0ZS9nY2MuZGcvdG9ydHVyZS9jcmMtbm90LWNyYy0xLmMgYi9nY2Mv dGVzdHN1aXRlL2djYy5kZy90b3J0dXJlL2NyYy1ub3QtY3JjLTEuYwpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uOWViYzI4ZDVl N2UKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy90 b3J0dXJlL2NyYy1ub3QtY3JjLTEuYwpAQCAtMCwwICsxLDI4IEBACisvKiB7 IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItZmR1bXAt dHJlZS1jcmMiIH0gKi8KKy8qIHsgZGctc2tpcC1pZiAiIiB7ICotKi0qIH0g eyAiLU8wIiAiLU8xIiAiLU9zIiAiLWZsdG8ifSB9ICovCisKK3R5cGVkZWYg dW5zaWduZWQgc2hvcnQgZWVfdTE2OwordHlwZWRlZiB1bnNpZ25lZCBjaGFy IGVlX3U4OworCisvL2xvb3AgaXRlcmF0aW9uIG51bWJlciBpcyA1CitlZV91 MTYgbm90X2NyY3U4IChlZV91OCBkYXRhLCBlZV91MTYgY3JjKSB7CisgICAg ZWVfdTggaSA9IDAsIHgxNiA9IDAsIGNhcnJ5ID0gMDsKKyAgICBmb3IgKGkg PSAwOyBpIDwgNTsgaSsrKSB7CisgICAgICAgIHgxNiA9IChlZV91OCkgKChk YXRhICYgMSkgXiAoKGVlX3U4KSBjcmMgJiAxKSk7CisgICAgICAgIGRhdGEg Pj49IDE7CisgICAgICAgIGlmICh4MTYgPT0gMSkgeworICAgICAgICAgICAg Y3JjIF49IDB4NDAwMjsKKyAgICAgICAgICAgIGNhcnJ5ID0gMTsKKyAgICAg ICAgfSBlbHNlCisgICAgICAgICAgICBjYXJyeSA9IDA7CisgICAgICAgIGNy YyA+Pj0gMTsKKyAgICAgICAgaWYgKGNhcnJ5KQorICAgICAgICAgICAgY3Jj IHw9IDB4ODAwMDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY3JjICY9 IDB4N2ZmZjsKKyAgICB9CisgICAgcmV0dXJuIGNyYzsKK30KKy8qIHsgZGct ZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAiY3JjdTggZnVuY3Rpb24g bWF5YmUgY29udGFpbnMgQ1JDIGNhbGN1bGF0aW9uIiAwICJjcmMifSB9ICov CisKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RvcnR1cmUv Y3JjLW5vdC1jcmMtMTAuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RvcnR1 cmUvY3JjLW5vdC1jcmMtMTAuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMC4uNTQwOTE2NDIzZTYKLS0tIC9kZXYvbnVsbAorKysg Yi9nY2MvdGVzdHN1aXRlL2djYy5kZy90b3J0dXJlL2NyYy1ub3QtY3JjLTEw LmMKQEAgLTAsMCArMSwyMyBAQAorLyogeyBkZy1kbyBjb21waWxlIH0gKi8K Ky8qIHsgZGctb3B0aW9ucyAiLWZkdW1wLXRyZWUtY3JjIiB9ICovCisvKiB7 IGRnLXNraXAtaWYgIiIgeyAqLSotKiB9IHsgIi1PMCIgIi1PMSIgIi1PcyIg Ii1mbHRvIn0gfSAqLworCisjaW5jbHVkZSA8c3RkaW50Lmg+CisKKy8vU3Bv aWxlZCBjcmMgdmFsdWUKK3VpbnQxNl90IG5vdF9jcmModWludDE2X3QgY3Jj LCB1aW50OF90IGEpIHsKKyAgICBpbnQgaTsKKyAgICBjcmMgXj0gYTsKKyAg ICBmb3IgKGkgPSAwOyBpIDwgODsgKytpKSB7CisgICAgICAgIGlmIChjcmMg JiAxKSB7CisgICAgICAgICAgICBjcmMgPSAwOworICAgICAgICAgICAgY3Jj ID0gKGNyYyA8PCAxKSBeIDB4QTAwMTsKKyAgICAgICAgfQorICAgICAgICBl bHNlCisgICAgICAgICAgICBjcmMgPSBjcmMgPj4gMTsKKyAgICB9CisgICAg cmV0dXJuIGNyYzsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1k dW1wLXRpbWVzICJub3RfY3JjIGZ1bmN0aW9uIG1heWJlIGNvbnRhaW5zIENS QyBjYWxjdWxhdGlvbiIgMCAiY3JjIn0gfSAqLworCmRpZmYgLS1naXQgYS9n Y2MvdGVzdHN1aXRlL2djYy5kZy90b3J0dXJlL2NyYy1ub3QtY3JjLTExLmMg Yi9nY2MvdGVzdHN1aXRlL2djYy5kZy90b3J0dXJlL2NyYy1ub3QtY3JjLTEx LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjRi OTU5MmVhOTE5Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9n Y2MuZGcvdG9ydHVyZS9jcmMtbm90LWNyYy0xMS5jCkBAIC0wLDAgKzEsMjYg QEAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMg Ii1mZHVtcC10cmVlLWNyYyIgfSAqLworLyogeyBkZy1za2lwLWlmICIiIHsg Ki0qLSogfSB7ICItTzAiICItTzEiICItT3MiICItZmx0byJ9IH0gKi8KKwor dHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBlZV91MTY7Cit0eXBlZGVmIHVuc2ln bmVkIGNoYXIgZWVfdTg7CisKK2VlX3UxNiBub3RfY3JjKGVlX3U4IGRhdGEs IGVlX3UxNiBjcmMpIHsKKyAgICBlZV91OCBpID0gMCwgY2FycnkgPSAwOwor ICAgIGZvciAoaSA9IDA7IGkgPCA4OyBpKyspIHsKKyAgICAgICAgZGF0YSA+ Pj0gMTsKKyAgICAgICAgaWYgKGRhdGEgPT0gMSkgeworICAgICAgICAgICAg Y3JjIF49IDB4NDAwMjsKKyAgICAgICAgICAgIGNhcnJ5ID0gMTsKKyAgICAg ICAgfSBlbHNlCisgICAgICAgICAgICBjYXJyeSA9IDA7CisgICAgICAgIGNy YyA+Pj0gMTsKKyAgICAgICAgaWYgKGNhcnJ5KQorICAgICAgICAgICAgY3Jj IHw9IDB4ODAwMDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY3JjICY9 IDB4N2ZmZjsKKyAgICB9CisgICAgcmV0dXJuIGNyYzsKK30KKworLyogeyBk Zy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJub3RfY3JjIGZ1bmN0 aW9uIG1heWJlIGNvbnRhaW5zIENSQyBjYWxjdWxhdGlvbiIgMCAiY3JjIn0g fSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdG9ydHVy ZS9jcmMtbm90LWNyYy0xMi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdG9y dHVyZS9jcmMtbm90LWNyYy0xMi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwLi40YjU4NTEzZTJhMwotLS0gL2Rldi9udWxsCisr KyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RvcnR1cmUvY3JjLW5vdC1jcmMt MTIuYwpAQCAtMCwwICsxLDE4IEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAq LworLyogeyBkZy1vcHRpb25zICItZmR1bXAtdHJlZS1jcmMiIH0gKi8KKy8q IHsgZGctc2tpcC1pZiAiIiB7ICotKi0qIH0geyAiLU8wIiAiLU8xIiAiLU9z IiAiLWZsdG8ifSB9ICovCisKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKwordWlu dDhfdCBub3RfY3JjKHVpbnQ4X3QgY3JjLCB1aW50OF90IGRhdGEpIHsKKyAg ICB1aW50OF90IGk7CisgICAgY3JjID0gY3JjIF4gZGF0YTsKKyAgICBmb3Ig KGkgPSAwOyBpIDwgODsgaSsrKSB7CisgICAgICAgIGlmIChkYXRhICYgMHgw MSkKKyAgICAgICAgICAgIGNyYyA9IChjcmMgPj4gMSkgXiAweDhDOworICAg ICAgICBlbHNlCisgICAgICAgICAgICBjcmMgPj49IDE7CisgICAgfQorICAg IHJldHVybiBjcmM7Cit9CisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1 bXAtdGltZXMgIm5vdF9jcmMgZnVuY3Rpb24gbWF5YmUgY29udGFpbnMgQ1JD IGNhbGN1bGF0aW9uIiAwICJjcmMifSB9ICovCmRpZmYgLS1naXQgYS9nY2Mv dGVzdHN1aXRlL2djYy5kZy90b3J0dXJlL2NyYy1ub3QtY3JjLTEzLmMgYi9n Y2MvdGVzdHN1aXRlL2djYy5kZy90b3J0dXJlL2NyYy1ub3QtY3JjLTEzLmMK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmUyYWUx Mjc0ZmY4Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2Mu ZGcvdG9ydHVyZS9jcmMtbm90LWNyYy0xMy5jCkBAIC0wLDAgKzEsMjEgQEAK Ky8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1m ZHVtcC10cmVlLWNyYyIgfSAqLworLyogeyBkZy1za2lwLWlmICIiIHsgKi0q LSogfSB7ICItTzAiICItTzEiICItT3MiICItZmx0byJ9IH0gKi8KKworI2lu Y2x1ZGUgPHN0ZGludC5oPgorCit1aW50OF90IG5vdF9jcmModWludDhfdCBj cmMsIHVpbnQ4X3QgZGF0YSkgeworICB1aW50OF90IGk7CisgIGNyYyA9IGNy YyBeIGRhdGE7CisgIGZvciAoaSA9IDA7IGkgPCA4OyBpKyspIHsKKyAgICAg IGlmIChjcmMgJiAweDAxKQorCWNyYyA9IChjcmMgPj4gMSkgXiAweDhDOwor ICAgICAgZWxzZQorCWNyYyA+Pj0gMTsKKyAgICAgIGlmIChpID4gMSkKKwlj cmMgPSA4OworICAgIH0KKyAgcmV0dXJuIGNyYzsKK30KKworLyogeyBkZy1m aW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJjYWxjdWxhdGVzIENSQyEi IDAgImNyYyJ9IH0gKi8KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp ZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy90b3J0dXJlL2NyYy1u b3QtY3JjLTE0LmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy90b3J0dXJlL2Ny Yy1ub3QtY3JjLTE0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAuLjRlZDhjMTU0YWM3Ci0tLSAvZGV2L251bGwKKysrIGIvZ2Nj L3Rlc3RzdWl0ZS9nY2MuZGcvdG9ydHVyZS9jcmMtbm90LWNyYy0xNC5jCkBA IC0wLDAgKzEsMjEgQEAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7 IGRnLW9wdGlvbnMgIi1mZHVtcC10cmVlLWNyYyIgfSAqLworLyogeyBkZy1z a2lwLWlmICIiIHsgKi0qLSogfSB7ICItTzAiICItTzEiICItT3MiICItZmx0 byJ9IH0gKi8KKworI2luY2x1ZGUgPHN0ZGludC5oPgorCit1aW50OF90IG5v dF9jcmModWludDhfdCBjcmMsIHVpbnQ4X3QgZGF0YSkgeworICBjcmMgPSBj cmMgXiBkYXRhOworCisgIGZvciAodWludDhfdCBpID0gMCwgbiA9IDA7IGkg PCA4OyBpKyssIG4rKykgeworICAgICAgaWYgKGRhdGEgPiBpKQorCWNyYyA9 IDg7CisgICAgICBpZiAoY3JjICYgMHgwMSkKKwljcmMgPSAoY3JjID4+IDEp IF4gMHg4QzsKKyAgICAgIGVsc2UKKwljcmMgPj49IDE7CisgICAgfQorICBy ZXR1cm4gY3JjOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1 bXAtdGltZXMgImNhbGN1bGF0ZXMgQ1JDISIgMCAiY3JjIn0gfSAqLwpcIE5v IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2djYy90ZXN0 c3VpdGUvZ2NjLmRnL3RvcnR1cmUvY3JjLW5vdC1jcmMtMTUuYyBiL2djYy90 ZXN0c3VpdGUvZ2NjLmRnL3RvcnR1cmUvY3JjLW5vdC1jcmMtMTUuYwpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYWU5NTUxN2Qw YTAKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy90 b3J0dXJlL2NyYy1ub3QtY3JjLTE1LmMKQEAgLTAsMCArMSwyMyBAQAorLyog eyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLWZkdW1w LXRyZWUtY3JjIiB9ICovCisvKiB7IGRnLXNraXAtaWYgIiIgeyAqLSotKiB9 IHsgIi1PMCIgIi1PMSIgIi1PcyIgIi1PMyIgIi1mbHRvIn0gfSAqLworCisv KiBXaXRoIC1PMyB0aGUgY3ljbGVzIGlzIHNwbGl0IGludG8gMiwKKyAgIGFu ZCBvbmUgb2YgdGhlbSBjYWxjdWxhdGVzIENSQyAod2hlbiBkYXRhICE9IDAp LgorICAgVGh1cywgd2hlbiBjb21waWxpbmcgd2l0aCAtTzMgdGhlcmUgaXMg Q1JDLiAqLworCisjaW5jbHVkZSA8c3RkaW50Lmg+CisKK3VpbnQ4X3Qgbm90 X2NyYyh1aW50OF90IGNyYywgdWludDhfdCBkYXRhKSB7CisgIGNyYyA9IGNy YyBeIGRhdGE7CisKKyAgZm9yICh1aW50OF90IGkgPSAwLCBuID0gMDsgaSA8 IDg7IGkrKywgbisrKSB7CisgICAgICBpZiAoKGNyYyAmIDB4MDEpICYmIGRh dGEpCisJY3JjID0gKGNyYyA+PiAxKSBeIDB4OEM7CisgICAgICBlbHNlCisJ Y3JjID4+PSAxOworICAgIH0KKyAgcmV0dXJuIGNyYzsKK30KKworLyogeyBk Zy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJjYWxjdWxhdGVzIENS QyEiIDAgImNyYyJ9IH0gKi8KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy90b3J0dXJlL2Ny Yy1ub3QtY3JjLTE2LmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy90b3J0dXJl L2NyYy1ub3QtY3JjLTE2LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAuLmU2NDQ5NTZhNTg2Ci0tLSAvZGV2L251bGwKKysrIGIv Z2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdG9ydHVyZS9jcmMtbm90LWNyYy0xNi5j CkBAIC0wLDAgKzEsMTkgQEAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisv KiB7IGRnLW9wdGlvbnMgIi1mZHVtcC10cmVlLWNyYyIgfSAqLworLyogeyBk Zy1za2lwLWlmICIiIHsgKi0qLSogfSB7ICItTzAiICItTzEiICItT3MiICIt Zmx0byJ9IH0gKi8KKworI2luY2x1ZGUgPHN0ZGludC5oPgorCit1aW50OF90 IG5vdF9jcmModWludDhfdCBjcmMsIHVpbnQ4X3QgZGF0YSkgeworICB1aW50 OF90IGk7CisgIGNyYyA9IGNyYyBeIGRhdGE7CisgIGZvciAoaSA9IDA7IGkg PCA4OyBpKyspIHsKKyAgICAgIGlmICghaSAmJiAoY3JjICYgMHgwMSkpCisJ Y3JjID0gKGNyYyA+PiAxKSBeIDB4OEM7CisgICAgICBlbHNlCisJY3JjID4+ PSAxOworICAgIH0KKyAgcmV0dXJuIGNyYzsKK30KKworLyogeyBkZy1maW5h bCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJjYWxjdWxhdGVzIENSQyEiIDAg ImNyYyJ9IH0gKi8KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg LS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy90b3J0dXJlL2NyYy1ub3Qt Y3JjLTE3LmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy90b3J0dXJlL2NyYy1u b3QtY3JjLTE3LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAuLjM2YzNhZTA1ZTc4Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rl c3RzdWl0ZS9nY2MuZGcvdG9ydHVyZS9jcmMtbm90LWNyYy0xNy5jCkBAIC0w LDAgKzEsMTkgQEAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRn LW9wdGlvbnMgIi1mZHVtcC10cmVlLWNyYyIgfSAqLworLyogeyBkZy1za2lw LWlmICIiIHsgKi0qLSogfSB7ICItTzAiICItTzEiICItT3MiICItZmx0byJ9 IH0gKi8KKworI2luY2x1ZGUgPHN0ZGludC5oPgorCit1aW50OF90IG5vdF9j cmModWludDhfdCBjcmMsIHVpbnQ4X3QgZGF0YSkgeworICB1aW50OF90IGk7 CisgIGNyYyA9IGNyYyBeIGRhdGE7CisgIGZvciAoaSA9IDA7IGkgPCA4OyBp KyspIHsKKyAgICAgIGlmIChpICYmIChjcmMgJiAweDAxKSkKKwljcmMgPSAo Y3JjID4+IDEpIF4gMHg4QzsKKyAgICAgIGVsc2UKKwljcmMgPj49IDE7Cisg ICAgfQorICByZXR1cm4gY3JjOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nh bi10cmVlLWR1bXAtdGltZXMgImNhbGN1bGF0ZXMgQ1JDISIgMCAiY3JjIn0g fSAqLwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh L2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RvcnR1cmUvY3JjLW5vdC1jcmMtMTgu YyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RvcnR1cmUvY3JjLW5vdC1jcmMt MTguYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u NmFjZjkxY2Y4MDYKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRl L2djYy5kZy90b3J0dXJlL2NyYy1ub3QtY3JjLTE4LmMKQEAgLTAsMCArMSwx OSBAQAorLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9u cyAiLWZkdW1wLXRyZWUtY3JjIiB9ICovCisvKiB7IGRnLXNraXAtaWYgIiIg eyAqLSotKiB9IHsgIi1PMCIgIi1PMSIgIi1PcyIgIi1mbHRvIn0gfSAqLwor CisjaW5jbHVkZSA8c3RkaW50Lmg+CisKK3VpbnQ4X3Qgbm90X2NyYyh1aW50 OF90IGNyYywgdWludDhfdCBkYXRhKSB7CisgIHVpbnQ4X3QgaTsKKyAgY3Jj ID0gY3JjIF4gZGF0YTsKKyAgZm9yIChpID0gMDsgaSA8IDg7IGkrKykgewor ICAgICAgaWYgKChjcmMgJiAweDAxKSAmJiBpPT0wKQorCWNyYyA9IChjcmMg Pj4gMSkgXiAweDhDOworICAgICAgZWxzZQorCWNyYyA+Pj0gMTsKKyAgICB9 CisgIHJldHVybiBjcmM7Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLXRy ZWUtZHVtcC10aW1lcyAiY2FsY3VsYXRlcyBDUkMhIiAwICJjcmMifSB9ICov ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ2Nj L3Rlc3RzdWl0ZS9nY2MuZGcvdG9ydHVyZS9jcmMtbm90LWNyYy0xOS5jIGIv Z2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdG9ydHVyZS9jcmMtbm90LWNyYy0xOS5j Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi41MTMx MzU4NzFlYwotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2Nj LmRnL3RvcnR1cmUvY3JjLW5vdC1jcmMtMTkuYwpAQCAtMCwwICsxLDE5IEBA CisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICIt ZmR1bXAtdHJlZS1jcmMiIH0gKi8KKy8qIHsgZGctc2tpcC1pZiAiIiB7ICot Ki0qIH0geyAiLU8wIiAiLU8xIiAiLU9zIiAiLWZsdG8ifSB9ICovCisKKyNp bmNsdWRlIDxzdGRpbnQuaD4KKwordWludDhfdCBub3RfY3JjKHVpbnQ4X3Qg Y3JjLCB1aW50OF90IGRhdGEpIHsKKyAgdWludDhfdCBpOworICBjcmMgPSBj cmMgXiBkYXRhOworICBmb3IgKGkgPSAwOyBpIDwgODsgaSsrKSB7CisgICAg ICBpZiAoKGNyYyAmIDB4MDEpIHx8IGk9PTApCisJY3JjID0gKGNyYyA+PiAx KSBeIDB4OEM7CisgICAgICBlbHNlCisJY3JjID4+PSAxOworICAgIH0KKyAg cmV0dXJuIGNyYzsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1k dW1wLXRpbWVzICJjYWxjdWxhdGVzIENSQyEiIDAgImNyYyJ9IH0gKi8KXCBO byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9nY2MvdGVz dHN1aXRlL2djYy5kZy90b3J0dXJlL2NyYy1ub3QtY3JjLTIuYyBiL2djYy90 ZXN0c3VpdGUvZ2NjLmRnL3RvcnR1cmUvY3JjLW5vdC1jcmMtMi5jCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi42YmVmNmE2ZWY3 NAotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3Rv cnR1cmUvY3JjLW5vdC1jcmMtMi5jCkBAIC0wLDAgKzEsMjggQEAKKy8qIHsg ZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1mZHVtcC10 cmVlLWNyYyIgfSAqLworLyogeyBkZy1za2lwLWlmICIiIHsgKi0qLSogfSB7 ICItTzAiICItTzEiICItT3MiICItZmx0byJ9IH0gKi8KKworI2luY2x1ZGUg PHN0ZGludC5oPgorCit0eXBlZGVmIHVpbnQ4X3QgY3JjOworI2RlZmluZSBU T1BCSVQgKDEgPDwgNykKKworLy9zaGlmdCBub3QgYnkgb25lCitjcmMKK25v dENyYyh1aW50OF90IGNvbnN0IG1lc3NhZ2VbXSwgaW50IG5CeXRlcykgewor ICAgIGNyYyByZW1haW5kZXIgPSAwOworICAgIGZvciAoaW50IGJ5dGUgPSAw OyBieXRlIDwgbkJ5dGVzOyArK2J5dGUpIHsKKyAgICAgICAgcmVtYWluZGVy IF49IG1lc3NhZ2VbYnl0ZV0gOworICAgICAgICBmb3IgKHVpbnQ4X3QgYml0 ID0gODsgYml0ID4gMDsgLS1iaXQpIHsKKyAgICAgICAgICAgIGlmIChyZW1h aW5kZXIgJiBUT1BCSVQpIHsKKyAgICAgICAgICAgICAgICByZW1haW5kZXIg PSAocmVtYWluZGVyIDw8IDMpIF4gMTIzNDsKKyAgICAgICAgICAgIH0gZWxz ZSB7CisgICAgICAgICAgICAgICAgcmVtYWluZGVyID0gKHJlbWFpbmRlciA8 PCA5KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBy ZXR1cm4gKHJlbWFpbmRlcik7Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2Fu LXRyZWUtZHVtcC10aW1lcyAibm90Q3JjIGZ1bmN0aW9uIG1heWJlIGNvbnRh aW5zIENSQyBjYWxjdWxhdGlvbiIgMCAiY3JjIn0gfSAqLworCmRpZmYgLS1n aXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy90b3J0dXJlL2NyYy1ub3QtY3Jj LTIwLmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy90b3J0dXJlL2NyYy1ub3Qt Y3JjLTIwLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAuLjRhMDJhNGRhN2E2Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3Rz dWl0ZS9nY2MuZGcvdG9ydHVyZS9jcmMtbm90LWNyYy0yMC5jCkBAIC0wLDAg KzEsMTkgQEAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9w dGlvbnMgIi1mZHVtcC10cmVlLWNyYyIgfSAqLworLyogeyBkZy1za2lwLWlm ICIiIHsgKi0qLSogfSB7ICItTzAiICItTzEiICItT3MiICItZmx0byJ9IH0g Ki8KKworI2luY2x1ZGUgPHN0ZGludC5oPgorCit1aW50OF90IG5vdF9jcmMo dWludDhfdCBjcmMsIHVpbnQ4X3QgZGF0YSkgeworICB1aW50OF90IGk7Cisg IGNyYyA9IGNyYyBeIGRhdGE7CisgIGZvciAoaSA9IDA7IGkgPCA4OyBpKysp IHsKKyAgICAgIGlmIChpID09IDAgfHwgKGNyYyAmIDB4MDEpKQorCWNyYyA9 IChjcmMgPj4gMSkgXiAweDhDOworICAgICAgZWxzZQorCWNyYyA+Pj0gMTsK KyAgICB9CisgIHJldHVybiBjcmM7Cit9CisKKy8qIHsgZGctZmluYWwgeyBz Y2FuLXRyZWUtZHVtcC10aW1lcyAiY2FsY3VsYXRlcyBDUkMhIiAwICJjcmMi fSB9ICovClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0 IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdG9ydHVyZS9jcmMtbm90LWNyYy0y MS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdG9ydHVyZS9jcmMtbm90LWNy Yy0yMS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw Li5lNDVkZDFiZjJmNAotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3Vp dGUvZ2NjLmRnL3RvcnR1cmUvY3JjLW5vdC1jcmMtMjEuYwpAQCAtMCwwICsx LDI2IEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRp b25zICItZmR1bXAtdHJlZS1jcmMiIH0gKi8KKy8qIHsgZGctc2tpcC1pZiAi IiB7ICotKi0qIH0geyAiLU8wIiAiLU8xIiAiLU9zIiAiLWZsdG8ifSB9ICov CisKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKwordWludDE2X3Qgbm90X2NyY3U4 ICh1aW50OF90IGRhdGEsIHVpbnQxNl90IGNyYykgeworICB1aW50OF90IGkg PSAwLCB4MTYgPSAwLCBjYXJyeSA9IDA7CisgIGZvciAoaSA9IDA7IGkgPCA4 OyBpKyspIHsKKyAgICAgIHgxNiA9ICh1aW50OF90KSgoZGF0YSAmIDEyOCkg XiAoKHVpbnQ4X3QpIGNyYyAmIDEpKTsKKyAgICAgIGRhdGEgPj49IDE7Cisg ICAgICBpZiAoeDE2ID09IDEpIHsKKwkgIGNyYyBePSAweDQwMDI7CisJICBj YXJyeSA9IDE7CisJfSBlbHNlCisJY2FycnkgPSAwOworICAgICAgY3JjID4+ PSAxOworICAgICAgaWYgKGNhcnJ5KQorCWNyYyB8PSAweDgwMDA7CisgICAg ICBlbHNlCisJY3JjICY9IDB4N2ZmZjsKKyAgICB9CisgIHJldHVybiBjcmM7 Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAi Y2FsY3VsYXRlcyBDUkMhIiAwICJjcmMifSB9ICovClwgTm8gbmV3bGluZSBh dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2Mu ZGcvdG9ydHVyZS9jcmMtbm90LWNyYy0yMi5jIGIvZ2NjL3Rlc3RzdWl0ZS9n Y2MuZGcvdG9ydHVyZS9jcmMtbm90LWNyYy0yMi5jCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi40Zjg0NjA2MDdjMQotLS0gL2Rl di9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RvcnR1cmUvY3Jj LW5vdC1jcmMtMjIuYwpAQCAtMCwwICsxLDI2IEBACisvKiB7IGRnLWRvIGNv bXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItZmR1bXAtdHJlZS1jcmMi IH0gKi8KKy8qIHsgZGctc2tpcC1pZiAiIiB7ICotKi0qIH0geyAiLU8wIiAi LU8xIiAiLU9zIiAiLWZsdG8ifSB9ICovCisKKyNpbmNsdWRlIDxzdGRpbnQu aD4KKwordWludDE2X3Qgbm90X2NyY3U4ICh1aW50OF90IGRhdGEsIHVpbnQx Nl90IGNyYykgeworICB1aW50OF90IGkgPSAwLCB4MTYgPSAwLCBjYXJyeSA9 IDA7CisgIGZvciAoaSA9IDA7IGkgPCA4OyBpKyspIHsKKyAgICAgIHgxNiA9 ICh1aW50OF90KSAoKGRhdGEgJiAyKSBeICgodWludDhfdCkgY3JjICYgMikp OworICAgICAgZGF0YSA+Pj0gMTsKKyAgICAgIGlmICh4MTYgPT0gMikgewor CSAgY3JjIF49IDB4NDAwMjsKKwkgIGNhcnJ5ID0gMTsKKwl9IGVsc2UKKwlj YXJyeSA9IDA7CisgICAgICBjcmMgPj49IDE7CisgICAgICBpZiAoY2Fycnkp CisJY3JjIHw9IDB4ODAwMDsKKyAgICAgIGVsc2UKKwljcmMgJj0gMHg3ZmZm OworICAgIH0KKyAgcmV0dXJuIGNyYzsKK30KKworLyogeyBkZy1maW5hbCB7 IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJjYWxjdWxhdGVzIENSQyEiIDAgImNy YyJ9IH0gKi8KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n aXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy90b3J0dXJlL2NyYy1ub3QtY3Jj LTIzLmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy90b3J0dXJlL2NyYy1ub3Qt Y3JjLTIzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAuLjk2NTQ0ZTZhM2VjCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3Rz dWl0ZS9nY2MuZGcvdG9ydHVyZS9jcmMtbm90LWNyYy0yMy5jCkBAIC0wLDAg KzEsMjYgQEAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9w dGlvbnMgIi1mZHVtcC10cmVlLWNyYyIgfSAqLworLyogeyBkZy1za2lwLWlm ICIiIHsgKi0qLSogfSB7ICItTzAiICItTzEiICItT3MiICItZmx0byJ9IH0g Ki8KKworI2luY2x1ZGUgPHN0ZGludC5oPgorCit1aW50MTZfdCBub3RfY3Jj dTggKHVpbnQ4X3QgZGF0YSwgdWludDE2X3QgY3JjKSB7CisgIHVpbnQ4X3Qg aSA9IDAsIHgxNiA9IDAsIGNhcnJ5ID0gMDsKKyAgZm9yIChpID0gMDsgaSA8 IDg7IGkrKykgeworICAgICAgeDE2ID0gKHVpbnQ4X3QpICgoZGF0YSAmIDEp IF4gKCh1aW50OF90KSBjcmMgJiAxKSAgXiAoaSAmIDEpKTsKKyAgICAgIGRh dGEgPj49IDE7CisgICAgICBpZiAoeDE2ID09IDEpIHsKKwkgIGNyYyBePSAw eDQwMDI7CisJICBjYXJyeSA9IDE7CisJfSBlbHNlCisJY2FycnkgPSAwOwor ICAgICAgY3JjID4+PSAxOworICAgICAgaWYgKGNhcnJ5KQorCWNyYyB8PSAw eDgwMDA7CisgICAgICBlbHNlCisJY3JjICY9IDB4N2ZmZjsKKyAgICB9Cisg IHJldHVybiBjcmM7Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUt ZHVtcC10aW1lcyAiY2FsY3VsYXRlcyBDUkMhIiAwICJjcmMifSB9ICovClwg Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ2NjL3Rl c3RzdWl0ZS9nY2MuZGcvdG9ydHVyZS9jcmMtbm90LWNyYy0yNC5jIGIvZ2Nj L3Rlc3RzdWl0ZS9nY2MuZGcvdG9ydHVyZS9jcmMtbm90LWNyYy0yNC5jCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi40OTMyYzY4 YTg1YwotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRn L3RvcnR1cmUvY3JjLW5vdC1jcmMtMjQuYwpAQCAtMCwwICsxLDI2IEBACisv KiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItZmR1 bXAtdHJlZS1jcmMiIH0gKi8KKy8qIHsgZGctc2tpcC1pZiAiIiB7ICotKi0q IH0geyAiLU8wIiAiLU8xIiAiLU9zIiAiLWZsdG8ifSB9ICovCisKKyNpbmNs dWRlIDxzdGRpbnQuaD4KKwordWludDE2X3Qgbm90X2NyY3U4ICh1aW50OF90 IGRhdGEsIHVpbnQxNl90IGNyYykgeworICB1aW50OF90IGkgPSAwLCB4MTYg PSAwLCBjYXJyeSA9IDA7CisgIGZvciAoaSA9IDA7IGkgPCA4OyBpKyspIHsK KyAgICAgIHgxNiA9ICh1aW50OF90KSAoKCh1aW50OF90KSBjcmMgJiAxKSAg XiAoaSAmIDEpKTsKKyAgICAgIGRhdGEgPj49IDE7CisgICAgICBpZiAoeDE2 ID09IDEpIHsKKwkgIGNyYyBePSAweDQwMDI7CisJICBjYXJyeSA9IDE7CisJ fSBlbHNlCisJY2FycnkgPSAwOworICAgICAgY3JjID4+PSAxOworICAgICAg aWYgKGNhcnJ5KQorCWNyYyB8PSAweDgwMDA7CisgICAgICBlbHNlCisJY3Jj ICY9IDB4N2ZmZjsKKyAgICB9CisgIHJldHVybiBjcmM7Cit9CisKKy8qIHsg ZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAiY2FsY3VsYXRlcyBD UkMhIiAwICJjcmMifSB9ICovClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls ZQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdG9ydHVyZS9j cmMtbm90LWNyYy0yNS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdG9ydHVy ZS9jcmMtbm90LWNyYy0yNS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwLi4xOWJhOWFmNTNjMgotLS0gL2Rldi9udWxsCisrKyBi L2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RvcnR1cmUvY3JjLW5vdC1jcmMtMjUu YwpAQCAtMCwwICsxLDI2IEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwor LyogeyBkZy1vcHRpb25zICItZmR1bXAtdHJlZS1jcmMiIH0gKi8KKy8qIHsg ZGctc2tpcC1pZiAiIiB7ICotKi0qIH0geyAiLU8wIiAiLU8xIiAiLU9zIiAi LWZsdG8ifSB9ICovCisKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKwordWludDE2 X3Qgbm90X2NyY3U4ICh1aW50OF90ICpkYXRhLCB1aW50MTZfdCBjcmMpIHsK KyAgdWludDhfdCB4MTYgPSAwLCBjYXJyeSA9IDA7CisgIGZvciAodWludDhf dCBpID0gMCwgaj00OyBpIDwgODsgaSsrLCBqKz0yKSB7CisgICAgICB4MTYg PSAodWludDhfdCkgKCgodWludDhfdCkgY3JjICYgMSkgIF4gKGogJiAxKSk7 CisgICAgICAqZGF0YSA+Pj0gMTsKKyAgICAgIGlmICh4MTYgPT0gMSkgewor CSAgY3JjIF49IDB4NDAwMjsKKwkgIGNhcnJ5ID0gMTsKKwl9IGVsc2UKKwlj YXJyeSA9IDA7CisgICAgICBjcmMgPj49IDE7CisgICAgICBpZiAoY2Fycnkp CisJY3JjIHw9IDB4ODAwMDsKKyAgICAgIGVsc2UKKwljcmMgJj0gMHg3ZmZm OworICAgIH0KKyAgcmV0dXJuIGNyYzsKK30KKworLyogeyBkZy1maW5hbCB7 IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJjYWxjdWxhdGVzIENSQyEiIDAgImNy YyJ9IH0gKi8KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n aXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy90b3J0dXJlL2NyYy1ub3QtY3Jj LTI2LmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy90b3J0dXJlL2NyYy1ub3Qt Y3JjLTI2LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAuLjM3MThhYjNiMzFhCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3Rz dWl0ZS9nY2MuZGcvdG9ydHVyZS9jcmMtbm90LWNyYy0yNi5jCkBAIC0wLDAg KzEsMjYgQEAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9w dGlvbnMgIi1mZHVtcC10cmVlLWNyYyIgfSAqLworLyogeyBkZy1za2lwLWlm ICIiIHsgKi0qLSogfSB7ICItTzAiICItTzEiICItT3MiICItZmx0byJ9IH0g Ki8KKworI2luY2x1ZGUgPHN0ZGludC5oPgorCit1aW50MTZfdCBub3RfY3Jj dTggKHVpbnQ4X3QgZGF0YSwgdWludDE2X3QgY3JjKSB7CisgIHVpbnQ4X3Qg eDE2ID0gMCwgY2FycnkgPSAwOworICBmb3IgKHVpbnQ4X3QgaSA9IDAsIGo9 MzsgaSA8IDg7IGkrKywgais9MikgeworICAgICAgeDE2ID0gKHVpbnQ4X3Qp ICgoKHVpbnQ4X3QpIGNyYyAmIDEpICBeIChqICYgMSkpOworICAgICAgZGF0 YSA+Pj0gMTsKKyAgICAgIGlmICh4MTYgPT0gMSkgeworCSAgY3JjIF49IDB4 NDAwMjsKKwkgIGNhcnJ5ID0gMTsKKwl9IGVsc2UKKwljYXJyeSA9IDA7Cisg ICAgICBjcmMgPj49IDE7CisgICAgICBpZiAoY2FycnkpCisJY3JjIHw9IDB4 ODAwMDsKKyAgICAgIGVsc2UKKwljcmMgJj0gMHg3ZmZmOworICAgIH0KKyAg cmV0dXJuIGNyYzsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1k dW1wLXRpbWVzICJjYWxjdWxhdGVzIENSQyEiIDAgImNyYyJ9IH0gKi8KXCBO byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9nY2MvdGVz dHN1aXRlL2djYy5kZy90b3J0dXJlL2NyYy1ub3QtY3JjLTMuYyBiL2djYy90 ZXN0c3VpdGUvZ2NjLmRnL3RvcnR1cmUvY3JjLW5vdC1jcmMtMy5jCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi44Yjc1MjNlMTZi OQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3Rv cnR1cmUvY3JjLW5vdC1jcmMtMy5jCkBAIC0wLDAgKzEsMjIgQEAKKy8qIHsg ZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1mZHVtcC10 cmVlLWNyYyIgfSAqLworLyogeyBkZy1za2lwLWlmICIiIHsgKi0qLSogfSB7 ICItTzAiICItTzEiICItT3MiICItZmx0byJ9IH0gKi8KKworI2luY2x1ZGUg PHN0ZGludC5oPgorCisvL25vIHNoaWZ0IGluIGNhc2Ugb2YgeG9yCit1aW50 MTZfdCBub3RfY3JjMTZfdXBkYXRlKHVpbnQxNl90IGNyYywgdWludDhfdCBh KSB7CisJCisgICAgaW50IGk7CisgICAgY3JjIF49IGE7CisgICAgZm9yIChp ID0gMDsgaSA8IDg7ICsraSkgeworICAgICAgICBpZiAoY3JjICYgMSkKKyAg ICAgICAgICAgIGNyYyA9IGNyYyBeIDB4QTAwMTsKKyAgICAgICAgZWxzZQor ICAgICAgICAgICAgY3JjID0gKGNyYyA+PiAxKTsKKyAgICB9CisgICAgcmV0 dXJuIGNyYzsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1w LXRpbWVzICJub3RfY3JjMTZfdXBkYXRlIGZ1bmN0aW9uIG1heWJlIGNvbnRh aW5zIENSQyBjYWxjdWxhdGlvbiIgMCAiY3JjIn0gfSAqLworCmRpZmYgLS1n aXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy90b3J0dXJlL2NyYy1ub3QtY3Jj LTQuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RvcnR1cmUvY3JjLW5vdC1j cmMtNC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw Li5jYzZlMmIwODY1MAotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3Vp dGUvZ2NjLmRnL3RvcnR1cmUvY3JjLW5vdC1jcmMtNC5jCkBAIC0wLDAgKzEs MTkgQEAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlv bnMgIi1mZHVtcC10cmVlLWNyYyIgfSAqLworLyogeyBkZy1za2lwLWlmICIi IHsgKi0qLSogfSB7ICItTzAiICItTzEiICItT3MiICItZmx0byJ9IH0gKi8K KworI2luY2x1ZGUgPHN0ZGludC5oPgorCisvL3NoaWZ0IGFuZCB4b3Igb25s eSBpZiBsc2IgaXMgMQordWludDE2X3Qgbm90X2NyYyh1aW50MTZfdCBjcmMs IHVpbnQ4X3QgYSkgeworICAgIGludCBpOworICAgIGNyYyBePSBhOworICAg IGZvciAoaSA9IDA7IGkgPCA4OyArK2kpIHsKKyAgICAgICAgaWYgKGNyYyAm IDEpCisgICAgICAgICAgICBjcmMgPSAoY3JjID4+IDEpIF4gMHhBMDAxOwor ICAgIH0KKyAgICByZXR1cm4gY3JjOworfQorCisvKiB7IGRnLWZpbmFsIHsg c2Nhbi10cmVlLWR1bXAtdGltZXMgIm5vdF9jcmMgZnVuY3Rpb24gbWF5YmUg Y29udGFpbnMgQ1JDIGNhbGN1bGF0aW9uIiAwICJjcmMifSB9ICovCisKZGlm ZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RvcnR1cmUvY3JjLW5v dC1jcmMtNS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdG9ydHVyZS9jcmMt bm90LWNyYy01LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAuLjIzNGEyYTFjZGExCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rl c3RzdWl0ZS9nY2MuZGcvdG9ydHVyZS9jcmMtbm90LWNyYy01LmMKQEAgLTAs MCArMSwyNyBAQAorLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGct b3B0aW9ucyAiLWZkdW1wLXRyZWUtY3JjIiB9ICovCisvKiB7IGRnLXNraXAt aWYgIiIgeyAqLSotKiB9IHsgIi1PMCIgIi1PMSIgIi1PcyIgIi1mbHRvIn0g fSAqLworCisjaW5jbHVkZSA8c3RkaW8uaD4KKwordHlwZWRlZiB1bnNpZ25l ZCBjaGFyIHVpbnQ4X3Q7CisKKy8vbm8geG9yCit1aW50OF90IG5vdF9jcmMo dWludDhfdCAqZGF0YSwgc2l6ZV90IGxlbikgeworICAgIHVpbnQ4X3QgY3Jj ID0gMHhmZjsKKyAgICBzaXplX3QgaSwgajsKKyAgICBmb3IgKGkgPSAwOyBp IDwgbGVuOyBpKyspIHsKKyAgICAgICAgY3JjIF49IGRhdGFbaV07CisgICAg ICAgIGZvciAoaiA9IDA7IGogPCA4OyBqKyspIHsKKyAgICAgICAgICAgIGlm ICgoY3JjICYgMHg4MCkgIT0gMCkKKyAgICAgICAgICAgICAgICBjcmMgPSAo dWludDhfdCkgKChjcmMgPDwgMSkgfCAweDMxKTsKKyAgICAgICAgICAgIGVs c2UKKyAgICAgICAgICAgICAgICBjcmMgPDw9IDE7CisgICAgICAgIH0KKyAg ICB9CisgICAgcmV0dXJuIGNyYzsKK30KKworLyogeyBkZy1maW5hbCB7IHNj YW4tdHJlZS1kdW1wLXRpbWVzICJub3RfY3JjIGZ1bmN0aW9uIG1heWJlIGNv bnRhaW5zIENSQyBjYWxjdWxhdGlvbiIgMCAiY3JjIn0gfSAqLworCisKZGlm ZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RvcnR1cmUvY3JjLW5v dC1jcmMtNi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdG9ydHVyZS9jcmMt bm90LWNyYy02LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAuLmFhNjkyMDE0ZGQ3Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rl c3RzdWl0ZS9nY2MuZGcvdG9ydHVyZS9jcmMtbm90LWNyYy02LmMKQEAgLTAs MCArMSwyNCBAQAorLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGct b3B0aW9ucyAiLWZkdW1wLXRyZWUtY3JjIiB9ICovCisvKiB7IGRnLXNraXAt aWYgIiIgeyAqLSotKiB9IHsgIi1PMCIgIi1PMSIgIi1PcyIgIi1mbHRvIn0g fSAqLworCisjaW5jbHVkZSA8c3RkaW50Lmg+CisKKyNkZWZpbmUgUE9MWSAo MHgxMDcwVSA8PCAzKQorI2RlZmluZSB1OCB1aW50OF90CisjZGVmaW5lIHUx NiB1aW50MTZfdAorCisvL3hvciBpbiBjYXNlIDAKK3U4IG5vdF9jcmModTE2 IGRhdGEpIHsKKyAgICBpbnQgaTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgODsg aSsrKSB7CisgICAgICAgIGlmIChkYXRhICYgMHgwMDAwKQorICAgICAgICAg ICAgZGF0YSA9IGRhdGEgXiBQT0xZOworICAgICAgICBkYXRhID0gZGF0YSA8 PCAxOworICAgIH0KKyAgICByZXR1cm4gKHU4KShkYXRhID4+IDgpOworfQor CisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgIm5vdF9j cmMgZnVuY3Rpb24gbWF5YmUgY29udGFpbnMgQ1JDIGNhbGN1bGF0aW9uIiAw ICJjcmMifSB9ICovCisKKwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9n Y2MuZGcvdG9ydHVyZS9jcmMtbm90LWNyYy03LmMgYi9nY2MvdGVzdHN1aXRl L2djYy5kZy90b3J0dXJlL2NyYy1ub3QtY3JjLTcuYwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNjIyNDMxYTk0YjgKLS0tIC9k ZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy90b3J0dXJlL2Ny Yy1ub3QtY3JjLTcuYwpAQCAtMCwwICsxLDIwIEBACisvKiB7IGRnLWRvIGNv bXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItZmR1bXAtdHJlZS1jcmMi IH0gKi8KKy8qIHsgZGctc2tpcC1pZiAiIiB7ICotKi0qIH0geyAiLU8wIiAi LU8xIiAiLU9zIiAiLWZsdG8ifSB9ICovCisKKyNpbmNsdWRlIDxzdGRpbnQu aD4KKy8vaW4gb25lIGNhc2UgaXMgY2FsbGVkIHNoaWZ0IGxlZnQsIGluIGFu b3RoZXIgc2hpZnQgcmlnaHQKK3VpbnQxNl90IG5vdF9jcmModWludDE2X3Qg Y3JjLCB1aW50OF90IGEpIHsKKyAgICBpbnQgaTsKKyAgICBjcmMgXj0gYTsK KyAgICBmb3IgKGkgPSAwOyBpIDwgODsgKytpKSB7CisgICAgICAgIGlmIChj cmMgJiAxKQorICAgICAgICAgICAgY3JjID0gKGNyYyA8PCAxKSBeIDB4QTAw MTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY3JjID0gY3JjID4+IDE7 CisgICAgfQorICAgIHJldHVybiBjcmM7Cit9CisKKy8qIHsgZGctZmluYWwg eyBzY2FuLXRyZWUtZHVtcC10aW1lcyAibm90X2NyYyBmdW5jdGlvbiBtYXli ZSBjb250YWlucyBDUkMgY2FsY3VsYXRpb24iIDAgImNyYyJ9IH0gKi8KKwpk aWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdG9ydHVyZS9jcmMt bm90LWNyYy04LmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy90b3J0dXJlL2Ny Yy1ub3QtY3JjLTguYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMC4uOTBjMmVhNjFiYjYKLS0tIC9kZXYvbnVsbAorKysgYi9nY2Mv dGVzdHN1aXRlL2djYy5kZy90b3J0dXJlL2NyYy1ub3QtY3JjLTguYwpAQCAt MCwwICsxLDIxIEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBk Zy1vcHRpb25zICItZmR1bXAtdHJlZS1jcmMiIH0gKi8KKy8qIHsgZGctc2tp cC1pZiAiIiB7ICotKi0qIH0geyAiLU8wIiAiLU8xIiAiLU9zIiAiLWZsdG8i fSB9ICovCisKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKworLy94b3IgaXMgZG9u ZSBpbiBjYXNlIGxzYiBpcyAwCitpbnQxNl90IG5vdF9jcmMoaW50MTZfdCBj cmMsIGludDhfdCBhKSB7CisgICAgaW50IGk7CisgICAgY3JjIF49IGE7Cisg ICAgZm9yIChpID0gMDsgaSA8IDg7ICsraSkgeworICAgICAgICBpZiAoY3Jj IDw8IDE1ID09IDApCisgICAgICAgICAgICBjcmMgPSAoY3JjID4+IDEpIF4g MHhBMDAxOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjcmMgPSBjcmMg Pj4gMTsKKyAgICB9CisgICAgcmV0dXJuIGNyYzsKK30KKworLyogeyBkZy1m aW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJub3RfY3JjIGZ1bmN0aW9u IG1heWJlIGNvbnRhaW5zIENSQyBjYWxjdWxhdGlvbiIgMCAiY3JjIn0gfSAq LworCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy90b3J0dXJl L2NyYy1ub3QtY3JjLTkuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RvcnR1 cmUvY3JjLW5vdC1jcmMtOS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwLi4zOGM1NDEyMGIwMQotLS0gL2Rldi9udWxsCisrKyBi L2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RvcnR1cmUvY3JjLW5vdC1jcmMtOS5j CkBAIC0wLDAgKzEsMTcgQEAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisv KiB7IGRnLW9wdGlvbnMgIi1mZHVtcC10cmVlLWNyYyIgfSAqLworLyogeyBk Zy1za2lwLWlmICIiIHsgKi0qLSogfSB7ICItTzAiICItTzEiICItT3MiICIt Zmx0byJ9IH0gKi8KKworI2luY2x1ZGUgPHN0ZGludC5oPgorLy9ubyBjb25k aXRpb25hbCB4b3IKK3VpbnQxNl90IG5vdF9jcmModWludDE2X3QgY3JjLCB1 aW50OF90IGEpIHsKKyAgICBpbnQgaTsKKyAgICBjcmMgXj0gYTsKKyAgICBm b3IgKGkgPSAwOyBpIDwgODsgKytpKSB7CisgICAgICAgICAgICBjcmMgPSAo Y3JjIDw8IDEpIF4gMHhBMDAxOworICAgIH0KKyAgICByZXR1cm4gY3JjOwor fQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgIm5v dF9jcmMgZnVuY3Rpb24gbWF5YmUgY29udGFpbnMgQ1JDIGNhbGN1bGF0aW9u IiAwICJjcmMifSB9ICovCisKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUv Z2NjLmRnL3RvcnR1cmUvY3JjLXNpZGUtaW5zdHItMS5jIGIvZ2NjL3Rlc3Rz dWl0ZS9nY2MuZGcvdG9ydHVyZS9jcmMtc2lkZS1pbnN0ci0xLmMKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjAwMzMyMWJiN2Fi Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdG9y dHVyZS9jcmMtc2lkZS1pbnN0ci0xLmMKQEAgLTAsMCArMSwyNyBAQAorLyog eyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLWZkdW1w LXRyZWUtY3JjLWRldGFpbHMiIH0gKi8KKy8qIHsgZGctc2tpcC1pZiAiIiB7 ICotKi0qIH0geyAiLU8wIiAiLU8xIiAiLU9zIiAiLWZsdG8ifSB9ICovCisK KyNpbmNsdWRlIDxzdGRpbnQuaD4KKwordWludDE2X3QgY3JjMTZfdXBkYXRl ICh1aW50MTZfdCBjcmMsIHVpbnQ4X3QgYSkKK3sKKyAgaW50IGk7CisgIGZv ciAoaSA9IDA7IGkgPCA4OyArK2kpCisgICAgeworICAgICAgaW50IGI7Cisg ICAgICBpZiAoKGNyYyAmIDEpIF4gKGEgJiAxKSkKKwljcmMgPSAoY3JjID4+ IDEpIF4gMHhhMDAxOworICAgICAgZWxzZQorCWNyYyA9IChjcmMgPj4gMSk7 CisgICAgICBhID4+PSAxOworICAgICAgYiA9IGNyYzsgLy8gVW51c2VkIGlu c3RydWN0aW9uLCB0aGlzIGlzIHNhZmUgdG8gcmVtb3ZlLgorICAgIH0KKyAg cmV0dXJuIGNyYzsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1k dW1wICJjcmMxNl91cGRhdGUgZnVuY3Rpb24gbWF5YmUgY29udGFpbnMgQ1JD IGNhbGN1bGF0aW9uLiIgImNyYyJ9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBz Y2FuLXRyZWUtZHVtcCAiTG9vcCBpdGVyYXRpb24gbnVtYmVyIGlzIDciICJj cmMifSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgIkJp dCByZXZlcnNlZCIgImNyYyJ9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2Fu LXRyZWUtZHVtcCAiY2FsY3VsYXRlcyBDUkMhIiAiY3JjIn0gfSAqLworLyog eyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJQb2x5bm9taWFsJ3MgdmFs dWUgaXMgXFxcezEsIDAsIDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs IDAsIDAsIDAsIDFcXFx9IiAiY3JjIiB9IH0gKi8KXCBObyBuZXdsaW5lIGF0 IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5k Zy90b3J0dXJlL2NyYy1zaWRlLWluc3RyLTEwLmMgYi9nY2MvdGVzdHN1aXRl L2djYy5kZy90b3J0dXJlL2NyYy1zaWRlLWluc3RyLTEwLmMKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmYwZWEyZGM0NjdlCi0t LSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdG9ydHVy ZS9jcmMtc2lkZS1pbnN0ci0xMC5jCkBAIC0wLDAgKzEsMzEgQEAKKy8qIHsg ZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1mZHVtcC10 cmVlLWNyYy1kZXRhaWxzIiB9ICovCisvKiB7IGRnLXNraXAtaWYgIiIgeyAq LSotKiB9IHsgIi1PMCIgIi1PMSIgIi1PcyIgIi1mbHRvIn0gfSAqLworCit0 eXBlZGVmIHVuc2lnbmVkIHNob3J0IGVlX3UxNjsKK3R5cGVkZWYgdW5zaWdu ZWQgY2hhciBlZV91ODsKKworZWVfdTE2IGNyY3U4IChlZV91OCBkYXRhLCBl ZV91MTYgY3JjKSB7CisgIGVlX3UxNiBpID0gMCwgeDE2ID0gMCwgY2Fycnkg PSAwOworICBpbnQgYSA9IDE7CisgIGZvciAoaSA9IDA7IGkgPCA4OyBpKysp IHsKKyAgICAgIHgxNiA9IChlZV91OCkgKChkYXRhICYgMSkgXiAoKGVlX3U4 KSBjcmMgJiAxKSk7CisgICAgICBkYXRhID4+PSAxOworICAgICAgaWYgKHgx NiA9PSAxKSB7CisJICBjcmMgXj0gMHg0MDAyOworCSAgY2FycnkgPSAxOwor CX0gZWxzZQorCWNhcnJ5ID0gMDsKKyAgICAgIGNyYyA+Pj0gMTsKKyAgICAg IGEgPSBhICogKGNyYyArIDUpOworICAgICAgaWYgKGNhcnJ5KQorCXsKKwkg IGNyYyB8PSAweDgwMDA7CisJfQorICAgICAgZWxzZQorCWNyYyAmPSAweDdm ZmY7CisgICAgfQorICByZXR1cm4gYTsKK30KKworLyogeyBkZy1maW5hbCB7 IHNjYW4tdHJlZS1kdW1wICJPdXRwdXQgQ1JDIGFuZCBkZXRlcm1pbmVkIGlu cHV0IENSQyBkaWZmZXIuIiAiY3JjIn0gfSAqLwpcIE5vIG5ld2xpbmUgYXQg ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRn L3RvcnR1cmUvY3JjLXNpZGUtaW5zdHItMTEuYyBiL2djYy90ZXN0c3VpdGUv Z2NjLmRnL3RvcnR1cmUvY3JjLXNpZGUtaW5zdHItMTEuYwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNzRjYzYxMzEwZGEKLS0t IC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy90b3J0dXJl L2NyYy1zaWRlLWluc3RyLTExLmMKQEAgLTAsMCArMSwzMSBAQAorLyogeyBk Zy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLWZkdW1wLXRy ZWUtY3JjLWRldGFpbHMiIH0gKi8KKy8qIHsgZGctc2tpcC1pZiAiIiB7ICot Ki0qIH0geyAiLU8wIiAiLU8xIiAiLU9zIiAiLWZsdG8ifSB9ICovCisKK3R5 cGVkZWYgdW5zaWduZWQgc2hvcnQgZWVfdTE2OwordHlwZWRlZiB1bnNpZ25l ZCBjaGFyIGVlX3U4OworCitlZV91MTYgY3JjdTggKGVlX3U4IGRhdGEsIGVl X3UxNiBjcmMpIHsKKyAgZWVfdTE2IGkgPSAwLCB4MTYgPSAwLCBjYXJyeSA9 IDA7CisgIGludCBhID0gMTsKKyAgZm9yIChpID0gMDsgaSA8IDg7IGkrKykg eworICAgICAgeDE2ID0gKGVlX3U4KSAoKGRhdGEgJiAxKSBeICgoZWVfdTgp IGNyYyAmIDEpKTsKKyAgICAgIGRhdGEgPj49IDE7CisgICAgICBpZiAoeDE2 ID09IDEpIHsKKwkgIGNyYyBePSAweDQwMDI7CisJICBjYXJyeSA9IDE7CisJ fSBlbHNlCisJY2FycnkgPSAwOworICAgICAgY3JjID4+PSAxOworICAgICAg YSA9IGEgKiAoY3JjICsgNSk7CisgICAgICBpZiAoY2FycnkpCisJeworCSAg Y3JjIHw9IDB4ODAwMDsKKwl9CisgICAgICBlbHNlCisJY3JjICY9IDB4N2Zm ZjsKKyAgICB9CisgIHJldHVybiBhICsgY3JjOworfQorCisvKiB7IGRnLWZp bmFsIHsgc2Nhbi10cmVlLWR1bXAgIlRoZXJlIGlzIG1vcmUgdGhhbiBvbmUg b3V0cHV0IHBoaS4iICJjcmMifSB9ICovClwgTm8gbmV3bGluZSBhdCBlbmQg b2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdG9y dHVyZS9jcmMtc2lkZS1pbnN0ci0xMi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2Mu ZGcvdG9ydHVyZS9jcmMtc2lkZS1pbnN0ci0xMi5jCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5iOGIwMGU2MmE2YQotLS0gL2Rl di9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RvcnR1cmUvY3Jj LXNpZGUtaW5zdHItMTIuYwpAQCAtMCwwICsxLDMzIEBACisvKiB7IGRnLWRv IGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItZmR1bXAtdHJlZS1j cmMtZGV0YWlscyIgfSAqLworLyogeyBkZy1za2lwLWlmICIiIHsgKi0qLSog fSB7ICItTzAiICItTzEiICItT3MiICItZmx0byJ9IH0gKi8KKwordHlwZWRl ZiB1bnNpZ25lZCBzaG9ydCBlZV91MTY7Cit0eXBlZGVmIHVuc2lnbmVkIGNo YXIgZWVfdTg7CisKK2ludCBhOworZWVfdTE2IGNyY3U4IChlZV91OCBkYXRh LCBlZV91MTYgY3JjKSB7CisgIGVlX3UxNiBpID0gMCwgeDE2ID0gMCwgY2Fy cnkgPSAwOworICBpbnQgYzsKKyAgZm9yIChpID0gMDsgaSA8IDg7IGkrKykg eworICAgICAgYyArPSBpKjI7IC8vIEluIGNvbXBpbGVkIGNvZGUsIGl0IGlz IG1vdmVkIG91dHNpZGUgb2YgdGhlIGxvb3AuCisgICAgICB4MTYgPSAoZWVf dTgpICgoZGF0YSAmIDEpIF4gKChlZV91OCkgY3JjICYgMSkpOworICAgICAg ZGF0YSA+Pj0gMTsKKyAgICAgIGlmICh4MTYgPT0gMSkgeworCSAgY3JjIF49 IDB4NDAwMjsKKwkgIGNhcnJ5ID0gMTsKKwl9IGVsc2UKKwljYXJyeSA9IDA7 CisgICAgICBjcmMgPj49IDE7CisgICAgICBhID0gYzsKKyAgICAgIGlmIChj YXJyeSkKKwl7CisJICBjcmMgfD0gMHg4MDAwOworCX0KKyAgICAgIGVsc2UK KwljcmMgJj0gMHg3ZmZmOworICAgIH0KKyAgcmV0dXJuIGNyYzsKK30KKwor LyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJjYWxjdWxhdGVzIENS QyEiICJjcmMifSB9ICovClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk aWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdG9ydHVyZS9jcmMt c2lkZS1pbnN0ci0xMy5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdG9ydHVy ZS9jcmMtc2lkZS1pbnN0ci0xMy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwLi5lNTlhMTExZWM5MgotLS0gL2Rldi9udWxsCisr KyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RvcnR1cmUvY3JjLXNpZGUtaW5z dHItMTMuYwpAQCAtMCwwICsxLDMxIEBACisvKiB7IGRnLWRvIGNvbXBpbGUg fSAqLworLyogeyBkZy1vcHRpb25zICItZmR1bXAtdHJlZS1jcmMtZGV0YWls cyIgfSAqLworLyogeyBkZy1za2lwLWlmICIiIHsgKi0qLSogfSB7ICItTzAi ICItTzEiICItT3MiICItZmx0byJ9IH0gKi8KKwordHlwZWRlZiB1bnNpZ25l ZCBzaG9ydCBlZV91MTY7Cit0eXBlZGVmIHVuc2lnbmVkIGNoYXIgZWVfdTg7 CisKK2ludCBhOworZWVfdTE2IGNyY3U4IChlZV91OCBkYXRhLCBlZV91MTYg Y3JjKSB7CisgICAgZWVfdTE2IGkgPSAwLCB4MTYgPSAwLCBjYXJyeSA9IDA7 CisgICAgaW50IGM7CisgICAgZm9yIChpID0gMDsgaSA8IDg7IGkrKykgewor ICAgICAgICBjICs9IGNyYyAqIDI7CisgICAgICAgIHgxNiA9IChlZV91OCkg KChkYXRhICYgMSkgXiAoKGVlX3U4KSBjcmMgJiAxKSk7CisgICAgICAgIGRh dGEgPj49IDE7CisgICAgICAgIGlmICh4MTYgPT0gMSkgeworICAgICAgICAg ICAgY3JjIF49IDB4NDAwMjsKKyAgICAgICAgICAgIGNhcnJ5ID0gMTsKKyAg ICAgICAgfSBlbHNlCisgICAgICAgICAgICBjYXJyeSA9IDA7CisgICAgICAg IGNyYyA+Pj0gMTsKKyAgICAgICAgYSA9IGM7CisgICAgICAgIGlmIChjYXJy eSkgeworICAgICAgICAgICAgY3JjIHw9IDB4ODAwMDsKKyAgICAgICAgfSBl bHNlCisgICAgICAgICAgICBjcmMgJj0gMHg3ZmZmOworICAgIH0KKyAgICBy ZXR1cm4gY3JjOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1 bXAgIlRoZXJlIGlzIG1vcmUgdGhhbiBvbmUgb3V0cHV0IHBoaS4iICJjcmMi fSB9ICovClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0 IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdG9ydHVyZS9jcmMtc2lkZS1pbnN0 ci0xNC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdG9ydHVyZS9jcmMtc2lk ZS1pbnN0ci0xNC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwLi41N2Y2MTExMjNkOAotLS0gL2Rldi9udWxsCisrKyBiL2djYy90 ZXN0c3VpdGUvZ2NjLmRnL3RvcnR1cmUvY3JjLXNpZGUtaW5zdHItMTQuYwpA QCAtMCwwICsxLDM1IEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyog eyBkZy1vcHRpb25zICItZmR1bXAtdHJlZS1jcmMtZGV0YWlscyIgfSAqLwor LyogeyBkZy1za2lwLWlmICIiIHsgKi0qLSogfSB7ICItTzAiICItTzEiICIt T3MiICItZmx0byJ9IH0gKi8KKworI2luY2x1ZGUgPHN0ZGlvLmg+Cit0eXBl ZGVmIHVuc2lnbmVkIHNob3J0IGVlX3UxNjsKK3R5cGVkZWYgdW5zaWduZWQg Y2hhciBlZV91ODsKKworaW50IGE7CitlZV91MTYgY3JjdTggKGVlX3U4IGRh dGEsIGVlX3UxNiBjcmMpIHsKKyAgICBlZV91MTYgaSA9IDAsIHgxNiA9IDAs IGNhcnJ5ID0gMDsKKyAgICBpbnQgYzsKKyAgICBmb3IgKGkgPSAwOyBpIDwg ODsgaSsrKSB7CisgICAgICAgIGMgKz0gaSoyOworICAgICAgICBwcmludGYg KCIlZCIsIGMpOworICAgICAgICB4MTYgPSAoZWVfdTgpICgoZGF0YSAmIDEp IF4gKChlZV91OCkgY3JjICYgMSkpOworICAgICAgICBkYXRhID4+PSAxOwor ICAgICAgICBpZiAoeDE2ID09IDEpIHsKKyAgICAgICAgICAgIGNyYyBePSAw eDQwMDI7CisgICAgICAgICAgICBjYXJyeSA9IDE7CisgICAgICAgIH0gZWxz ZQorICAgICAgICAgICAgY2FycnkgPSAwOworICAgICAgICBjcmMgPj49IDE7 CisgICAgICAgIGEgPSBjOworICAgICAgICBpZiAoY2FycnkpCisgICAgICAg IHsKKyAgICAgICAgICAgIGNyYyB8PSAweDgwMDA7CisgICAgICAgIH0KKyAg ICAgICAgZWxzZQorICAgICAgICAgICAgY3JjICY9IDB4N2ZmZjsKKyAgICB9 CisgICAgcmV0dXJuIGNyYzsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4t dHJlZS1kdW1wLXRpbWVzICJjYWxjdWxhdGVzIENSQyEiIDAgImNyYyJ9IH0g Ki8KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9n Y2MvdGVzdHN1aXRlL2djYy5kZy90b3J0dXJlL2NyYy1zaWRlLWluc3RyLTE1 LmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy90b3J0dXJlL2NyYy1zaWRlLWlu c3RyLTE1LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAuLmU2Y2Q3MmVjOWM2Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3Rz dWl0ZS9nY2MuZGcvdG9ydHVyZS9jcmMtc2lkZS1pbnN0ci0xNS5jCkBAIC0w LDAgKzEsMzcgQEAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRn LW9wdGlvbnMgIi1mZHVtcC10cmVlLWNyYy1kZXRhaWxzIiB9ICovCisvKiB7 IGRnLXNraXAtaWYgIiIgeyAqLSotKiB9IHsgIi1PMCIgIi1PMSIgIi1PcyIg Ii1mbHRvIn0gfSAqLworCit0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGVlX3Ux NjsKK3R5cGVkZWYgdW5zaWduZWQgY2hhciBlZV91ODsKKworaW50IGZvbyAo aW50IGMpCit7CisgICAgcmV0dXJuIGMqYzsKK30KKworZWVfdTE2IGNyY3U4 IChlZV91OCBkYXRhLCBlZV91MTYgY3JjKSB7CisgICAgZWVfdTE2IGkgPSAw LCB4MTYgPSAwLCBjYXJyeSA9IDA7CisgICAgaW50IGM7CisgICAgZm9yIChp ID0gMDsgaSA8IDg7IGkrKykgeworICAgICAgICBjICs9IGkqMjsKKyAgICAg ICAgYyA9IGZvbyAoYyk7IC8vIEFsbCBjYWxjdWxhdGlvbnMgcmVsYXRlZCB0 byBjIGFyZSByZW1vdmVkLgorICAgICAgICB4MTYgPSAoZWVfdTgpICgoZGF0 YSAmIDEpIF4gKChlZV91OCkgY3JjICYgMSkpOworICAgICAgICBkYXRhID4+ PSAxOworICAgICAgICBpZiAoeDE2ID09IDEpIHsKKyAgICAgICAgICAgIGNy YyBePSAweDQwMDI7CisgICAgICAgICAgICBjYXJyeSA9IDE7CisgICAgICAg IH0gZWxzZQorICAgICAgICAgICAgY2FycnkgPSAwOworICAgICAgICBjcmMg Pj49IDE7CisgICAgICAgIGlmIChjYXJyeSkKKyAgICAgICAgeworICAgICAg ICAgICAgY3JjIHw9IDB4ODAwMDsKKyAgICAgICAgfQorICAgICAgICBlbHNl CisgICAgICAgICAgICBjcmMgJj0gMHg3ZmZmOworICAgIH0KKyAgICByZXR1 cm4gY3JjOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAg ImNhbGN1bGF0ZXMgQ1JDISIgImNyYyJ9IH0gKi8KXCBObyBuZXdsaW5lIGF0 IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5k Zy90b3J0dXJlL2NyYy1zaWRlLWluc3RyLTE2LmMgYi9nY2MvdGVzdHN1aXRl L2djYy5kZy90b3J0dXJlL2NyYy1zaWRlLWluc3RyLTE2LmMKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmYzNTdmNWVmMTc2Ci0t LSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdG9ydHVy ZS9jcmMtc2lkZS1pbnN0ci0xNi5jCkBAIC0wLDAgKzEsMzggQEAKKy8qIHsg ZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1mZHVtcC10 cmVlLWNyYy1kZXRhaWxzIiB9ICovCisvKiB7IGRnLXNraXAtaWYgIiIgeyAq LSotKiB9IHsgIi1PMCIgIi1PMSIgIi1PcyIgIi1mbHRvIn0gfSAqLworCit0 eXBlZGVmIHVuc2lnbmVkIHNob3J0IGVlX3UxNjsKK3R5cGVkZWYgdW5zaWdu ZWQgY2hhciBlZV91ODsKKworX19hdHRyaWJ1dGVfXyAoKG5vaW5saW5lLG5v aXBhKSkKK2ludCBmb28gKGludCBjKQoreworICAgIHJldHVybiBjKmM7Cit9 CisKK2VlX3UxNiBjcmN1OCAoZWVfdTggZGF0YSwgZWVfdTE2IGNyYykgewor ICAgIGVlX3UxNiBpID0gMCwgeDE2ID0gMCwgY2FycnkgPSAwOworICAgIGlu dCBjOworICAgIGZvciAoaSA9IDA7IGkgPCA4OyBpKyspIHsKKyAgICAgICAg YyArPSBpKjI7CisgICAgICAgIGMgPSBmb28gKGMpOyAvL1dhcm5pbmcsIGVu Y291bnRlcmVkIHVuc3VwcG9ydGVkIHN0YXRlbWVudCwgd2hpbGUgZXhlY3V0 aW5nIGdpbXBsZSBzdGF0ZW1lbnRzIQorICAgICAgICB4MTYgPSAoZWVfdTgp ICgoZGF0YSAmIDEpIF4gKChlZV91OCkgY3JjICYgMSkpOworICAgICAgICBk YXRhID4+PSAxOworICAgICAgICBpZiAoeDE2ID09IDEpIHsKKyAgICAgICAg ICAgIGNyYyBePSAweDQwMDI7CisgICAgICAgICAgICBjYXJyeSA9IDE7Cisg ICAgICAgIH0gZWxzZQorICAgICAgICAgICAgY2FycnkgPSAwOworICAgICAg ICBjcmMgPj49IDE7CisgICAgICAgIGlmIChjYXJyeSkKKyAgICAgICAgewor ICAgICAgICAgICAgY3JjIHw9IDB4ODAwMDsKKyAgICAgICAgfQorICAgICAg ICBlbHNlCisgICAgICAgICAgICBjcmMgJj0gMHg3ZmZmOworICAgIH0KKyAg ICByZXR1cm4gY3JjOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVl LWR1bXAtdGltZXMgImNhbGN1bGF0ZXMgQ1JDISIgMCAiY3JjIn0gfSAqLwpc IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2djYy90 ZXN0c3VpdGUvZ2NjLmRnL3RvcnR1cmUvY3JjLXNpZGUtaW5zdHItMTcuYyBi L2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RvcnR1cmUvY3JjLXNpZGUtaW5zdHIt MTcuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u NjZmMjg3NzcyMmQKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRl L2djYy5kZy90b3J0dXJlL2NyYy1zaWRlLWluc3RyLTE3LmMKQEAgLTAsMCAr MSwzNyBAQAorLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0 aW9ucyAiLWZkdW1wLXRyZWUtY3JjLWRldGFpbHMiIH0gKi8KKy8qIHsgZGct c2tpcC1pZiAiIiB7ICotKi0qIH0geyAiLU8wIiAiLU8xIiAiLU9zIiAiLWZs dG8ifSB9ICovCisKK3R5cGVkZWYgdW5zaWduZWQgc2hvcnQgZWVfdTE2Owor dHlwZWRlZiB1bnNpZ25lZCBjaGFyIGVlX3U4OworCitpbnQgZm9vIChpbnQg YykKK3sKKyAgICByZXR1cm4gYypjOworfQorCitlZV91MTYgY3JjdTggKGVl X3U4IGRhdGEsIGVlX3UxNiBjcmMpIHsKKyAgICBlZV91MTYgaSA9IDAsIHgx NiA9IDAsIGNhcnJ5ID0gMDsKKyAgICBpbnQgYzsKKyAgICBmb3IgKGkgPSAw OyBpIDwgODsgaSsrKSB7CisgICAgICAgIGMgKz0gaSoyOworICAgICAgICBj ID0gZm9vIChjKTsKKyAgICAgICAgeDE2ID0gKGVlX3U4KSAoKGRhdGEgJiAx KSBeICgoZWVfdTgpIGNyYyAmIDEpKTsKKyAgICAgICAgZGF0YSA+Pj0gMTsK KyAgICAgICAgaWYgKHgxNiA9PSAxKSB7CisgICAgICAgICAgICBjcmMgXj0g MHg0MDAyOworICAgICAgICAgICAgY2FycnkgPSAxOworICAgICAgICB9IGVs c2UKKyAgICAgICAgICAgIGNhcnJ5ID0gMDsKKyAgICAgICAgY3JjID4+PSAx OworICAgICAgICBpZiAoY2FycnkpCisgICAgICAgIHsKKyAgICAgICAgICAg IGNyYyB8PSAweDgwMDA7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAg ICAgICAgICAgY3JjICY9IDB4N2ZmZjsKKyAgICB9CisgICAgcmV0dXJuIGNy YyArIGM7Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAi VGhlcmUgaXMgbW9yZSB0aGFuIG9uZSBvdXRwdXQgcGhpLiIgImNyYyJ9IH0g Ki8KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9n Y2MvdGVzdHN1aXRlL2djYy5kZy90b3J0dXJlL2NyYy1zaWRlLWluc3RyLTIu YyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RvcnR1cmUvY3JjLXNpZGUtaW5z dHItMi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw Li4zMjYxMjRlODY5ZQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3Vp dGUvZ2NjLmRnL3RvcnR1cmUvY3JjLXNpZGUtaW5zdHItMi5jCkBAIC0wLDAg KzEsMjcgQEAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9w dGlvbnMgIi1mZHVtcC10cmVlLWNyYy1kZXRhaWxzIiB9ICovCisvKiB7IGRn LXNraXAtaWYgIiIgeyAqLSotKiB9IHsgIi1PMCIgIi1PMSIgIi1PcyIgIi1m bHRvIn0gfSAqLworCisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8 c3RkaW8uaD4KKwordWludDE2X3QgY3JjMTZfdXBkYXRlKHVpbnQxNl90IGNy YywgdWludDhfdCBhKSB7CisgIGludCBpOworICBpbnQgYjsKKyAgZm9yIChp ID0gMDsgaSA8IDg7ICsraSkgeworICAgICAgaWYgKChjcmMgJiAxKSBeIChh ICYgMSkpCisJY3JjID0gKGNyYyA+PiAxKSBeIDB4YTAwMTsKKyAgICAgIGVs c2UKKwljcmMgPSAoY3JjID4+IDEpOworICAgICAgYSA+Pj0gMTsKKyAgICAg IGIgPSBjcmM7IC8vIFVudXNlZCBpbnN0cnVjdGlvbiwgdGhpcyBpcyBzYWZl IHRvIHJlbW92ZS4KKyAgICB9CisgICAgcHJpbnRmICgiJWQiLCBiKTsKKyAg cmV0dXJuIGNyYzsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1k dW1wICJjcmMxNl91cGRhdGUgZnVuY3Rpb24gbWF5YmUgY29udGFpbnMgQ1JD IGNhbGN1bGF0aW9uLiIgImNyYyJ9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBz Y2FuLXRyZWUtZHVtcCAiTG9vcCBpdGVyYXRpb24gbnVtYmVyIGlzIDciICJj cmMifSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgIkJp dCByZXZlcnNlZCIgImNyYyJ9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2Fu LXRyZWUtZHVtcCAiY2FsY3VsYXRlcyBDUkMhIiAiY3JjIn0gfSAqLworLyog eyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJQb2x5bm9taWFsJ3MgdmFs dWUgaXMgXFxcezEsIDAsIDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs IDAsIDAsIDAsIDFcXFx9IiAiY3JjIiB9IH0gKi8KXCBObyBuZXdsaW5lIGF0 IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5k Zy90b3J0dXJlL2NyYy1zaWRlLWluc3RyLTMuYyBiL2djYy90ZXN0c3VpdGUv Z2NjLmRnL3RvcnR1cmUvY3JjLXNpZGUtaW5zdHItMy5jCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi45MDczYzM5NzQwOAotLS0g L2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RvcnR1cmUv Y3JjLXNpZGUtaW5zdHItMy5jCkBAIC0wLDAgKzEsMjYgQEAKKy8qIHsgZGct ZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1mZHVtcC10cmVl LWNyYy1kZXRhaWxzIiB9ICovCisvKiB7IGRnLXNraXAtaWYgIiIgeyAqLSot KiB9IHsgIi1PMCIgIi1PMSIgIi1PcyIgIi1mbHRvIn0gfSAqLworCisjaW5j bHVkZSA8c3RkaW50Lmg+CisKK3VpbnQxNl90IGNyYzE2X3VwZGF0ZSh1aW50 MTZfdCBjcmMsIHVpbnQ4X3QgYSkgeworICBpbnQgaTsKKyAgaW50IGI7Cisg IGZvciAoaSA9IDA7IGkgPCA4OyArK2kpIHsKKyAgICAgIGlmICgoY3JjICYg MSkgXiAoYSAmIDEpKQorCWNyYyA9IChjcmMgPj4gMSkgXiAweGEwMDE7Cisg ICAgICBlbHNlCisJY3JjID0gKGNyYyA+PiAxKTsKKyAgICAgIGEgPj49IDE7 CisgICAgICBiID0gY3JjOworICAgIH0KKyAgaW50IGMgPSBiOyAvLyBUaGlz IGlzIHJlbW92ZWQgZnJvbSB0aGUgY29tcGlsZWQgY29kZS4KKyAgcmV0dXJu IGNyYzsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJj cmMxNl91cGRhdGUgZnVuY3Rpb24gbWF5YmUgY29udGFpbnMgQ1JDIGNhbGN1 bGF0aW9uLiIgImNyYyJ9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRy ZWUtZHVtcCAiTG9vcCBpdGVyYXRpb24gbnVtYmVyIGlzIDciICJjcmMifSB9 ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgIkJpdCByZXZl cnNlZCIgImNyYyJ9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUt ZHVtcCAiY2FsY3VsYXRlcyBDUkMhIiAiY3JjIn0gfSAqLworLyogeyBkZy1m aW5hbCB7IHNjYW4tdHJlZS1kdW1wICJQb2x5bm9taWFsJ3MgdmFsdWUgaXMg XFxcezEsIDAsIDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs IDAsIDFcXFx9IiAiY3JjIiB9IH0gKi8KXCBObyBuZXdsaW5lIGF0IGVuZCBv ZiBmaWxlCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy90b3J0 dXJlL2NyYy1zaWRlLWluc3RyLTQuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRn L3RvcnR1cmUvY3JjLXNpZGUtaW5zdHItNC5jCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4zOGVjMTcwMDFjYQotLS0gL2Rldi9u dWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RvcnR1cmUvY3JjLXNp ZGUtaW5zdHItNC5jCkBAIC0wLDAgKzEsMjYgQEAKKy8qIHsgZGctZG8gY29t cGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1mZHVtcC10cmVlLWNyYy1k ZXRhaWxzIiB9ICovCisvKiB7IGRnLXNraXAtaWYgIiIgeyAqLSotKiB9IHsg Ii1PMCIgIi1PMSIgIi1PcyIgIi1mbHRvIn0gfSAqLworCisjaW5jbHVkZSA8 c3RkaW50Lmg+CisKK3VpbnQxNl90IGNyYzE2X3VwZGF0ZSh1aW50MTZfdCBj cmMsIHVpbnQ4X3QgYSkgeworICBpbnQgaTsKKyAgdWludDE2X3QgYjsKKyAg Zm9yIChpID0gMDsgaSA8IDg7ICsraSkgeworICAgICAgaWYgKChjcmMgJiAx KSBeIChhICYgMSkpCisJY3JjID0gKGNyYyA+PiAxKSBeIDB4YTAwMTsKKyAg ICAgIGVsc2UKKwljcmMgPSAoY3JjID4+IDEpOworICAgICAgYSA+Pj0gMTsK KyAgICAgIGIgPSBjcmM7CisgICAgfQorICB1aW50MTZfdCBjID0gYisrOyAv LyBUaGlzIGlzIHJlbW92ZWQgZnJvbSB0aGUgY29tcGlsZWQgY29kZS4KKyAg cmV0dXJuIGNyYzsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1k dW1wICJjcmMxNl91cGRhdGUgZnVuY3Rpb24gbWF5YmUgY29udGFpbnMgQ1JD IGNhbGN1bGF0aW9uLiIgImNyYyJ9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBz Y2FuLXRyZWUtZHVtcCAiTG9vcCBpdGVyYXRpb24gbnVtYmVyIGlzIDciICJj cmMifSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgIkJp dCByZXZlcnNlZCIgImNyYyJ9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2Fu LXRyZWUtZHVtcCAiY2FsY3VsYXRlcyBDUkMhIiAiY3JjIn0gfSAqLworLyog eyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJQb2x5bm9taWFsJ3MgdmFs dWUgaXMgXFxcezEsIDAsIDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs IDAsIDAsIDAsIDFcXFx9IiAiY3JjIiB9IH0gKi8KXCBObyBuZXdsaW5lIGF0 IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5k Zy90b3J0dXJlL2NyYy1zaWRlLWluc3RyLTUuYyBiL2djYy90ZXN0c3VpdGUv Z2NjLmRnL3RvcnR1cmUvY3JjLXNpZGUtaW5zdHItNS5jCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4xYmZmZGQxNmUzNAotLS0g L2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RvcnR1cmUv Y3JjLXNpZGUtaW5zdHItNS5jCkBAIC0wLDAgKzEsMjYgQEAKKy8qIHsgZGct ZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1mZHVtcC10cmVl LWNyYy1kZXRhaWxzIiB9ICovCisvKiB7IGRnLXNraXAtaWYgIiIgeyAqLSot KiB9IHsgIi1PMCIgIi1PMSIgIi1PcyIgIi1mbHRvIn0gfSAqLworCisjaW5j bHVkZSA8c3RkaW50Lmg+CisKK3VpbnQxNl90IGNyYzE2X3VwZGF0ZSh1aW50 MTZfdCBjcmMsIHVpbnQ4X3QgYSkgeworICBpbnQgaTsKKyAgdWludDE2X3Qg YjsKKyAgZm9yIChpID0gMDsgaSA8IDg7ICsraSkgeworICAgICAgaWYgKChj cmMgJiAxKSBeIChhICYgMSkpCisJY3JjID0gKGNyYyA+PiAxKSBeIDB4YTAw MTsKKyAgICAgIGVsc2UKKwljcmMgPSAoY3JjID4+IDEpOworICAgICAgYSA+ Pj0gMTsKKyAgICAgIGIgPSBjcmM7IC8vIEluIGNvbXBpbGVkIHZlcnNpb24s IGIgaXMgb3V0c2lkZSBvZiB0aGUgbG9vcC4KKyAgICB9CisgIHVpbnQxNl90 IGMgPSArK2I7CisgIHJldHVybiBjOworfQorCisvKiB7IGRnLWZpbmFsIHsg c2Nhbi10cmVlLWR1bXAgImNyYzE2X3VwZGF0ZSBmdW5jdGlvbiBtYXliZSBj b250YWlucyBDUkMgY2FsY3VsYXRpb24uIiAiY3JjIn0gfSAqLworLyogeyBk Zy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJMb29wIGl0ZXJhdGlvbiBudW1i ZXIgaXMgNyIgImNyYyJ9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRy ZWUtZHVtcCAiQml0IHJldmVyc2VkIiAiY3JjIn0gfSAqLworLyogeyBkZy1m aW5hbCB7IHNjYW4tdHJlZS1kdW1wICJjYWxjdWxhdGVzIENSQyEiICJjcmMi fSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgIlBvbHlu b21pYWwncyB2YWx1ZSBpcyBcXFx7MSwgMCwgMSwgMCwgMCwgMCwgMCwgMCwg MCwgMCwgMCwgMCwgMCwgMCwgMCwgMVxcXH0iICJjcmMiIH0gfSAqLwpcIE5v IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2djYy90ZXN0 c3VpdGUvZ2NjLmRnL3RvcnR1cmUvY3JjLXNpZGUtaW5zdHItNi5jIGIvZ2Nj L3Rlc3RzdWl0ZS9nY2MuZGcvdG9ydHVyZS9jcmMtc2lkZS1pbnN0ci02LmMK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjdmZTM5 NWY0OTM0Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2Mu ZGcvdG9ydHVyZS9jcmMtc2lkZS1pbnN0ci02LmMKQEAgLTAsMCArMSw0MiBA QAorLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAi LWZkdW1wLXRyZWUtY3JjLWRldGFpbHMiIH0gKi8KKy8qIHsgZGctc2tpcC1p ZiAiIiB7ICotKi0qIH0geyAiLU8wIiAiLU8xIiAiLU9zIiAiLWZsdG8ifSB9 ICovCisKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRlIDxzdGRpby5o PgordHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBlZV91MTY7Cit0eXBlZGVmIHVu c2lnbmVkIGNoYXIgZWVfdTg7CisKK2ludCBhOworZWVfdTE2IGNyY3U4IChl ZV91OCBkYXRhLCBlZV91MTYgY3JjKSB7CisgIGVlX3U4IGkgPSAwLCB4MTYg PSAwLCBjYXJyeSA9IDA7CisgIGZvciAoaSA9IDA7IGkgPCA4OyBpKyspIHsK KyAgICAgIGErKzsgLy8gdGhpcyBpcyBtb3ZlZCBvdXRzaWRlIG9mIHRoZSBs b29wCisgICAgICB4MTYgPSAoZWVfdTgpICgoZGF0YSAmIDEpIF4gKChlZV91 OCkgY3JjICYgMSkpOworICAgICAgZGF0YSA+Pj0gMTsKKyAgICAgIGlmICh4 MTYgPT0gMSkgeworCSAgY3JjIF49IDB4NDAwMjsKKwkgIGNhcnJ5ID0gMTsK Kwl9IGVsc2UKKwljYXJyeSA9IDA7CisgICAgICBjcmMgPj49IDE7CisgICAg ICBpZiAoY2FycnkpCisJY3JjIHw9IDB4ODAwMDsKKyAgICAgIGVsc2UKKwlj cmMgJj0gMHg3ZmZmOworICAgIH0KKyAgcmV0dXJuIGNyYzsKK30KKworaW50 IG1haW4oKQoreworICBwcmludGYgKCIlMDRYXG4iLCBjcmN1OCAoMCwgMHhh YSkpOworICBwcmludGYgKCIlZCIsIGEpOworfQorCisKKy8qIHsgZGctZmlu YWwgeyBzY2FuLXRyZWUtZHVtcCAiY3JjdTggZnVuY3Rpb24gbWF5YmUgY29u dGFpbnMgQ1JDIGNhbGN1bGF0aW9uLiIgImNyYyJ9IH0gKi8KKy8qIHsgZGct ZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAiTG9vcCBpdGVyYXRpb24gbnVtYmVy IGlzIDciICJjcmMifSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVl LWR1bXAgIkJpdCByZXZlcnNlZCIgImNyYyJ9IH0gKi8KKy8qIHsgZGctZmlu YWwgeyBzY2FuLXRyZWUtZHVtcCAiY2FsY3VsYXRlcyBDUkMhIiAiY3JjIn0g fSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJQb2x5bm9t aWFsJ3MgdmFsdWUgaXMgXFxce1xbMCwgXF0qMSwgMCwgMSwgMCwgMCwgMCwg MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMVxcXH0iICJjcmMiIH0gfSAq LwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dj Yy90ZXN0c3VpdGUvZ2NjLmRnL3RvcnR1cmUvY3JjLXNpZGUtaW5zdHItNy5j IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdG9ydHVyZS9jcmMtc2lkZS1pbnN0 ci03LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAu LjFlZjNhZWE5YWFjCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0 ZS9nY2MuZGcvdG9ydHVyZS9jcmMtc2lkZS1pbnN0ci03LmMKQEAgLTAsMCAr MSw0MCBAQAorLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0 aW9ucyAiLWZkdW1wLXRyZWUtY3JjLWRldGFpbHMiIH0gKi8KKy8qIHsgZGct c2tpcC1pZiAiIiB7ICotKi0qIH0geyAiLU8wIiAiLU8xIiAiLU9zIiAiLWZs dG8ifSB9ICovCisKKyNpbmNsdWRlIDxzdGRpby5oPgordHlwZWRlZiB1bnNp Z25lZCBzaG9ydCBlZV91MTY7Cit0eXBlZGVmIHVuc2lnbmVkIGNoYXIgZWVf dTg7CisKK2ludCBhWzEwXSA9IHt9OworZWVfdTE2IGNyY3U4IChlZV91OCBk YXRhLCBlZV91MTYgY3JjKSB7CisgIGVlX3U4IGkgPSAwLCB4MTYgPSAwLCBj YXJyeSA9IDA7CisgIGZvciAoaSA9IDA7IGkgPCA4OyBpKyspIHsKKyAgICAg IGFbaV0gPSBjcmM7CisgICAgICB4MTYgPSAoZWVfdTgpICgoZGF0YSAmIDEp IF4gKChlZV91OCkgY3JjICYgMSkpOworICAgICAgZGF0YSA+Pj0gMTsKKyAg ICAgIGlmICh4MTYgPT0gMSkgeworCSAgY3JjIF49IDB4NDAwMjsKKwkgIGNh cnJ5ID0gMTsKKwl9IGVsc2UKKwljYXJyeSA9IDA7CisgICAgICBjcmMgPj49 IDE7CisgICAgICBpZiAoY2FycnkpCisJY3JjIHw9IDB4ODAwMDsKKyAgICAg IGVsc2UKKwljcmMgJj0gMHg3ZmZmOworICAgIH0KKyAgcmV0dXJuIGNyYzsK K30KKworaW50IG1haW4oKQoreworICBwcmludGYgKCIlMDRYXG4iLCBjcmN1 OCAoMCwgMHhhYSkpOworICBwcmludGYgKCIlZCIsIGFbMF0pOworfQorCisK Ky8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAiY3JjdTggZnVuY3Rp b24gbWF5YmUgY29udGFpbnMgQ1JDIGNhbGN1bGF0aW9uLiIgImNyYyJ9IH0g Ki8KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAiTG9vcCBpdGVy YXRpb24gbnVtYmVyIGlzIDciICJjcmMifSB9ICovCisvKiB7IGRnLWZpbmFs IHsgc2Nhbi10cmVlLWR1bXAgIkJpdCByZXZlcnNlZCIgImNyYyJ9IH0gKi8K Ky8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAiY2FsY3Vs YXRlcyBDUkMhIiAwICJjcmMifSB9ICovClwgTm8gbmV3bGluZSBhdCBlbmQg b2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdG9y dHVyZS9jcmMtc2lkZS1pbnN0ci04LmMgYi9nY2MvdGVzdHN1aXRlL2djYy5k Zy90b3J0dXJlL2NyYy1zaWRlLWluc3RyLTguYwpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uOTc3N2FhZGVjNzgKLS0tIC9kZXYv bnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy90b3J0dXJlL2NyYy1z aWRlLWluc3RyLTguYwpAQCAtMCwwICsxLDM2IEBACisvKiB7IGRnLWRvIGNv bXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItZmR1bXAtdHJlZS1jcmMt ZGV0YWlscyIgfSAqLworLyogeyBkZy1za2lwLWlmICIiIHsgKi0qLSogfSB7 ICItTzAiICItTzEiICItT3MiICItZmx0byJ9IH0gKi8KKworI2luY2x1ZGUg PHN0ZGlvLmg+Cit0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGVlX3UxNjsKK3R5 cGVkZWYgdW5zaWduZWQgY2hhciBlZV91ODsKKworaW50IGE7CitlZV91MTYg Y3JjdTggKGVlX3U4IGRhdGEsIGVlX3UxNiBjcmMpIHsKKyAgZWVfdTggaSA9 IDAsIHgxNiA9IDAsIGNhcnJ5ID0gMDsKKyAgZm9yIChpID0gMDsgaSA8IDg7 IGkrKykgeworICAgICAgYSArPSBjcmM7IC8vIERlZmluZWQgdmFyaWFibGUg aXMgdXNlZCBvdXRzaWRlIHRoZSBsb29wLgorICAgICAgeDE2ID0gKGVlX3U4 KSAoKGRhdGEgJiAxKSBeICgoZWVfdTgpIGNyYyAmIDEpKTsKKyAgICAgIGRh dGEgPj49IDE7CisgICAgICBpZiAoeDE2ID09IDEpIHsKKwkgIGNyYyBePSAw eDQwMDI7CisJICBjYXJyeSA9IDE7CisJfSBlbHNlCisJY2FycnkgPSAwOwor ICAgICAgY3JjID4+PSAxOworICAgICAgaWYgKGNhcnJ5KQorCWNyYyB8PSAw eDgwMDA7CisgICAgICBlbHNlCisJY3JjICY9IDB4N2ZmZjsKKyAgICB9Cisg IHJldHVybiBjcmM7Cit9CisKK2ludCBtYWluKCkKK3sKKyAgcHJpbnRmICgi JTA0WFxuIiwgY3JjdTggKDAsIDB4YWEpKTsKKyAgcHJpbnRmICgiJWQiLCBh KTsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJUaGVy ZSBpcyBtb3JlIHRoYW4gb25lIG91dHB1dCBwaGkuIiAiY3JjIn0gfSAqLwpc IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2djYy90 ZXN0c3VpdGUvZ2NjLmRnL3RvcnR1cmUvY3JjLXNpZGUtaW5zdHItOS5jIGIv Z2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdG9ydHVyZS9jcmMtc2lkZS1pbnN0ci05 LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjBk MjM1Nzg5ZGJmCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9n Y2MuZGcvdG9ydHVyZS9jcmMtc2lkZS1pbnN0ci05LmMKQEAgLTAsMCArMSwz MSBAQAorLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9u cyAiLWZkdW1wLXRyZWUtY3JjLWRldGFpbHMiIH0gKi8KKy8qIHsgZGctc2tp cC1pZiAiIiB7ICotKi0qIH0geyAiLU8wIiAiLU8xIiAiLU9zIiAiLWZsdG8i fSB9ICovCisKK3R5cGVkZWYgdW5zaWduZWQgc2hvcnQgZWVfdTE2OwordHlw ZWRlZiB1bnNpZ25lZCBjaGFyIGVlX3U4OworCitpbnQgYTsKK2VlX3UxNiBj cmN1OCAoZWVfdTggZGF0YSwgZWVfdTE2IGNyYykgeworICBlZV91OCBpID0g MCwgeDE2ID0gMCwgY2FycnkgPSAwOworICBmb3IgKGkgPSAwOyBpIDwgODsg aSsrKSB7CisgICAgICB4MTYgPSAoZWVfdTgpICgoZGF0YSAmIDEpIF4gKChl ZV91OCkgY3JjICYgMSkpOworICAgICAgZGF0YSA+Pj0gMTsKKyAgICAgIGlm ICh4MTYgPT0gMSkgeworCSAgY3JjIF49IDB4NDAwMjsKKwkgIGNhcnJ5ID0g MTsKKwl9IGVsc2UKKwljYXJyeSA9IDA7CisgICAgICBjcmMgPj49IDE7Cisg ICAgICBpZiAoY2FycnkpCisJeworCSAgYSA9IGNyYzsKKwkgIGNyYyB8PSAw eDgwMDA7CisJfQorICAgICAgZWxzZQorCWNyYyAmPSAweDdmZmY7CisgICAg fQorICByZXR1cm4gY3JjOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10 cmVlLWR1bXAgIlRoZXJlIGlzIG1vcmUgdGhhbiBvbmUgb3V0cHV0IHBoaS4i ICJjcmMifSB9ICovClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQotLSAK Mi4yNS4xCgo= --000000000000e87495061e2a618a--