From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 2AEA340D5C for ; Wed, 7 Sep 2022 19:24:44 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id C216168B9D5; Wed, 7 Sep 2022 22:24:41 +0300 (EEST) Received: from mail-ej1-f52.google.com (mail-ej1-f52.google.com [209.85.218.52]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4D03D68B922 for ; Wed, 7 Sep 2022 22:24:35 +0300 (EEST) Received: by mail-ej1-f52.google.com with SMTP id bj12so32577045ejb.13 for ; Wed, 07 Sep 2022 12:24:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date; bh=eQFVxrKi923/en1VJiHO06bSoW99Q4QPZDV1eWtuq34=; b=IeAcSpqfAxRBt2p0mVZER+9KmcHIu3S8uUBabE/z0rfcMiH414q4a40KPXeBDVZXNs 9KhwcNnZVnQJh0fUmzr01davDJjG+eBFSEdwyk/rOG2QwDVq16EJeiLuFUAuDSRO/4i6 p4XBvjgeTRojbOLteQP9gFY0wKpC0JNvCFTER39NBl6besidZBTzlHy6pPDvJmz5XBv0 lxmnJwZ0kUazlY198NA4KeBE/QyEsvlkdbyTxoV50lnXPfP+qoQHhNtExd83N9KgjtD+ 978rGQ6Gd+FUK4YdniPFiYBnw0obWjdrYg9fP5J4SQJyn+sJU1YlWV9i/IgkEIw+CwLl MpsA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date; bh=eQFVxrKi923/en1VJiHO06bSoW99Q4QPZDV1eWtuq34=; b=ZfwGQR0Ucqb2C2N28zGp+uPgUSDQehm9LUES0bODwiz5Vch4RC8Tzjcq+N5rcmHElc 2JR+SbKJkVW+zhngAfAyh+81izUHgCHJU8zzWh8Nuhu2bG5a1klLJ9CbfuHwCKz4Mftk 0Vtqc8UuzikRzknNS+LHOawg6B3ARUNQDpDmWrWilZtNH7anhe6mVj2sJcFBnydAqZJs 3yo3N52XxWrUDvQqa2mmAsGs+5k59vyWcnQ6Cf1c4zbSp7DjSphnklpCEjwyC19ZMWn5 2thV3w3miSTFJ1tHRh2A9jucbCEWzwbBpWwlY/n7uAjlLtrHoj6llA7pOGE3CHHD6Ei7 GRWw== X-Gm-Message-State: ACgBeo3/K7tj3VnupW5UkXjH605tj75FclNzcjvr0+4xMZEddjY5rom2 v6j3F9halDwvd87pB2DOD++QoQ3cIFR0uQ== X-Google-Smtp-Source: AA6agR6BUM2M83ibNEsPJPGDf9dtDbVk7MYE0AWvbOE/h6HA+mrdeKrY5q+AEho6PKLK4SYf+2uzFg== X-Received: by 2002:a17:906:8a6c:b0:772:fe67:f5ea with SMTP id hy12-20020a1709068a6c00b00772fe67f5eamr485834ejc.488.1662578673226; Wed, 07 Sep 2022 12:24:33 -0700 (PDT) Received: from localhost.localdomain ([41.80.113.189]) by smtp.gmail.com with ESMTPSA id a20-20020a1709063a5400b0073d5948855asm161841ejf.1.2022.09.07.12.24.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 07 Sep 2022 12:24:32 -0700 (PDT) From: caleb To: ffmpeg-devel@ffmpeg.org Date: Wed, 7 Sep 2022 22:24:17 +0300 Message-Id: <20220907192417.140381-1-etemesicaleb@gmail.com> X-Mailer: git-send-email 2.37.2 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/1] avcodec/jpeg2000: Add support for High-Throughput JPEG 2000 (HTJ2K) decoding. X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: caleb , pal@sandflow.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: VGhpcyBwYXRjaCBzYXRpc2ZpZXMgdGhlIEdTb0MgMjAyMiBwcm9qZWN0IHdpdGggdGhlIGdvYWwg b2YgYWRkaW5nIGEgbmF0aXZlIGh0ajJrIGRlY29kZXIKdG8gZmZtcGVnLgoKSFRKMksgaXMgc3Bl Y2lmaWVkIGluIFJlYy4gSVRVLVQgODE0IHwgSVNPL0lFQyAxNTQ0NC0xNSAoaHR0cHM6Ly93d3cu aXR1LmludC9yZWMvVC1SRUMtVC44MTQtMjAxOTA2LUkvZW4pCgotLS0KIGxpYmF2Y29kZWMvajJr ZW5jLmMgICAgICAgIHwgICAyOCArLQogbGliYXZjb2RlYy9qcGVnMjAwMC5oICAgICAgfCAgMTE1 ICsrKy0KIGxpYmF2Y29kZWMvanBlZzIwMDBkZWMuYyAgIHwgIDI5NCArKysrKy0tLS0KIGxpYmF2 Y29kZWMvanBlZzIwMDBodGRlYy5jIHwgMTIyOCArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysKIGxpYmF2Y29kZWMvanBlZzIwMDBodGRlYy5oIHwgIDIxMCArKysrKysKIDUgZmls ZXMgY2hhbmdlZCwgMTczMSBpbnNlcnRpb25zKCspLCAxNDQgZGVsZXRpb25zKC0pCiBjcmVhdGUg bW9kZSAxMDA2NDQgbGliYXZjb2RlYy9qcGVnMjAwMGh0ZGVjLmMKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBsaWJhdmNvZGVjL2pwZWcyMDAwaHRkZWMuaAoKZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvajJr ZW5jLmMgYi9saWJhdmNvZGVjL2oya2VuYy5jCmluZGV4IDBiNzYxZDBiMDAuLjcyMThlMGY2OGYg MTAwNjQ0Ci0tLSBhL2xpYmF2Y29kZWMvajJrZW5jLmMKKysrIGIvbGliYXZjb2RlYy9qMmtlbmMu YwpAQCAtMTA2LDcgKzEwNiw3IEBAIHN0YXRpYyBjb25zdCBpbnQgZHd0X25vcm1zWzJdWzRdWzEw XSA9IHsgLy8gW2R3dF90eXBlXVtiYW5kXVtybGV2ZWxdIChtdWx0aXBsaWVkCiB0eXBlZGVmIHN0 cnVjdCB7CiAgICBKcGVnMjAwMENvbXBvbmVudCAqY29tcDsKICAgIGRvdWJsZSAqbGF5ZXJfcmF0 ZXM7Ci19IEpwZWcyMDAwVGlsZTsKK30gSnBlZzIwMDBFbmNUaWxlOwogCiB0eXBlZGVmIHN0cnVj dCB7CiAgICAgQVZDbGFzcyAqY2xhc3M7CkBAIC0xMzEsNyArMTMxLDcgQEAgdHlwZWRlZiBzdHJ1 Y3QgewogICAgIEpwZWcyMDAwQ29kaW5nU3R5bGUgY29kc3R5OwogICAgIEpwZWcyMDAwUXVhbnRT dHlsZSAgcW50c3R5OwogCi0gICAgSnBlZzIwMDBUaWxlICp0aWxlOworICAgIEpwZWcyMDAwRW5j VGlsZSAqdGlsZTsKICAgICBpbnQgbGF5ZXJfcmF0ZXNbMTAwXTsKICAgICB1aW50OF90IGNvbXBy ZXNzaW9uX3JhdGVfZW5jOyAvLy88IElzIGNvbXByZXNzaW9uIGRvbmUgdXNpbmcgY29tcHJlc3Np b24gcmF0aW8/CiAKQEAgLTE3MSw3ICsxNzEsNyBAQCBzdGF0aWMgdm9pZCBkdW1wKEpwZWcyMDAw RW5jb2RlckNvbnRleHQgKnMsIEZJTEUgKmZkKQogICAgICAgICAgICAgcy0+d2lkdGgsIHMtPmhl aWdodCwgcy0+dGlsZV93aWR0aCwgcy0+dGlsZV9oZWlnaHQsCiAgICAgICAgICAgICBzLT5udW1Y dGlsZXMsIHMtPm51bVl0aWxlcywgcy0+bmNvbXBvbmVudHMpOwogICAgIGZvciAodGlsZW5vID0g MDsgdGlsZW5vIDwgcy0+bnVtWHRpbGVzICogcy0+bnVtWXRpbGVzOyB0aWxlbm8rKyl7Ci0gICAg ICAgIEpwZWcyMDAwVGlsZSAqdGlsZSA9IHMtPnRpbGUgKyB0aWxlbm87CisgICAgICAgIEpwZWcy MDAwRW5jVGlsZSAqdGlsZSA9IHMtPnRpbGUgKyB0aWxlbm87CiAgICAgICAgIG5zcGFjZXMoZmQs IDIpOwogICAgICAgICBmcHJpbnRmKGZkLCAidGlsZSAlZDpcbiIsIHRpbGVubyk7CiAgICAgICAg IGZvcihjb21wbm8gPSAwOyBjb21wbm8gPCBzLT5uY29tcG9uZW50czsgY29tcG5vKyspewpAQCAt NDI5LDcgKzQyOSw3IEBAIHN0YXRpYyB2b2lkIGNvbXB1dGVfcmF0ZXMoSnBlZzIwMDBFbmNvZGVy Q29udGV4dCogcykKICAgICBpbnQgbGF5bm8sIGNvbXBubzsKICAgICBmb3IgKGkgPSAwOyBpIDwg cy0+bnVtWXRpbGVzOyBpKyspIHsKICAgICAgICAgZm9yIChqID0gMDsgaiA8IHMtPm51bVh0aWxl czsgaisrKSB7Ci0gICAgICAgICAgICBKcGVnMjAwMFRpbGUgKnRpbGUgPSAmcy0+dGlsZVtzLT5u dW1YdGlsZXMgKiBpICsgal07CisgICAgICAgICAgICBKcGVnMjAwMEVuY1RpbGUgKnRpbGUgPSAm cy0+dGlsZVtzLT5udW1YdGlsZXMgKiBpICsgal07CiAgICAgICAgICAgICBmb3IgKGNvbXBubyA9 IDA7IGNvbXBubyA8IHMtPm5jb21wb25lbnRzOyBjb21wbm8rKykgewogICAgICAgICAgICAgICAg IGludCB0aWxldyA9IHRpbGUtPmNvbXBbY29tcG5vXS5jb29yZFswXVsxXSAtIHRpbGUtPmNvbXBb Y29tcG5vXS5jb29yZFswXVswXTsKICAgICAgICAgICAgICAgICBpbnQgdGlsZWggPSB0aWxlLT5j b21wW2NvbXBub10uY29vcmRbMV1bMV0gLSB0aWxlLT5jb21wW2NvbXBub10uY29vcmRbMV1bMF07 CkBAIC00NjIsMTIgKzQ2MiwxMiBAQCBzdGF0aWMgaW50IGluaXRfdGlsZXMoSnBlZzIwMDBFbmNv ZGVyQ29udGV4dCAqcykKICAgICBzLT5udW1YdGlsZXMgPSBmZl9qcGVnMjAwMF9jZWlsZGl2KHMt PndpZHRoLCBzLT50aWxlX3dpZHRoKTsKICAgICBzLT5udW1ZdGlsZXMgPSBmZl9qcGVnMjAwMF9j ZWlsZGl2KHMtPmhlaWdodCwgcy0+dGlsZV9oZWlnaHQpOwogCi0gICAgcy0+dGlsZSA9IGF2X2Nh bGxvYyhzLT5udW1YdGlsZXMsIHMtPm51bVl0aWxlcyAqIHNpemVvZihKcGVnMjAwMFRpbGUpKTsK KyAgICBzLT50aWxlID0gYXZfY2FsbG9jKHMtPm51bVh0aWxlcywgcy0+bnVtWXRpbGVzICogc2l6 ZW9mKEpwZWcyMDAwRW5jVGlsZSkpOwogICAgIGlmICghcy0+dGlsZSkKICAgICAgICAgcmV0dXJu IEFWRVJST1IoRU5PTUVNKTsKICAgICBmb3IgKHRpbGVubyA9IDAsIHRpbGV5ID0gMDsgdGlsZXkg PCBzLT5udW1ZdGlsZXM7IHRpbGV5KyspCiAgICAgICAgIGZvciAodGlsZXggPSAwOyB0aWxleCA8 IHMtPm51bVh0aWxlczsgdGlsZXgrKywgdGlsZW5vKyspewotICAgICAgICAgICAgSnBlZzIwMDBU aWxlICp0aWxlID0gcy0+dGlsZSArIHRpbGVubzsKKyAgICAgICAgICAgIEpwZWcyMDAwRW5jVGls ZSAqdGlsZSA9IHMtPnRpbGUgKyB0aWxlbm87CiAKICAgICAgICAgICAgIHRpbGUtPmNvbXAgPSBh dl9jYWxsb2Mocy0+bmNvbXBvbmVudHMsIHNpemVvZigqdGlsZS0+Y29tcCkpOwogICAgICAgICAg ICAgaWYgKCF0aWxlLT5jb21wKQpAQCAtNTExLDcgKzUxMSw3IEBAIHN0YXRpYyBpbnQgaW5pdF90 aWxlcyhKcGVnMjAwMEVuY29kZXJDb250ZXh0ICpzKQogICAgICAgICBpbnQgdGlsZW5vLCBjb21w bm8sIGksIHksIHg7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgUElY RUwgKmxpbmU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc CiAgICAgICAgIGZvciAodGlsZW5vID0gMDsgdGlsZW5vIDwgcy0+bnVtWHRpbGVzICogcy0+bnVt WXRpbGVzOyB0aWxlbm8rKyl7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAotICAgICAgICAgICAgSnBlZzIwMDBUaWxlICp0aWxlID0gcy0+dGlsZSAr IHRpbGVubzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIEpwZWcyMDAwRW5jVGlsZSAq dGlsZSA9IHMtPnRpbGUgKyB0aWxlbm87ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICBp ZiAocy0+cGxhbmFyKXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAog ICAgICAgICAgICAgICAgIGZvciAoY29tcG5vID0gMDsgY29tcG5vIDwgcy0+bmNvbXBvbmVudHM7 IGNvbXBubysrKXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgSnBlZzIwMDBDb21wb25lbnQgKmNvbXAg PSB0aWxlLT5jb21wICsgY29tcG5vOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC03MDMsNyArNzAzLDcgQEAgc3RhdGljIHZvaWQg ZW5jb2RlX2NsbnBhc3MoSnBlZzIwMDBUMUNvbnRleHQgKnQxLCBpbnQgd2lkdGgsIGludCBoZWln aHQsIGludCBiYW4KICAgICAgICAgfQogfQogCi1zdGF0aWMgdm9pZCBlbmNvZGVfY2JsayhKcGVn MjAwMEVuY29kZXJDb250ZXh0ICpzLCBKcGVnMjAwMFQxQ29udGV4dCAqdDEsIEpwZWcyMDAwQ2Js ayAqY2JsaywgSnBlZzIwMDBUaWxlICp0aWxlLAorc3RhdGljIHZvaWQgZW5jb2RlX2NibGsoSnBl ZzIwMDBFbmNvZGVyQ29udGV4dCAqcywgSnBlZzIwMDBUMUNvbnRleHQgKnQxLCBKcGVnMjAwMENi bGsgKmNibGssIEpwZWcyMDAwRW5jVGlsZSAqdGlsZSwKICAgICAgICAgICAgICAgICAgICAgICAg IGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50IGJhbmRwb3MsIGludCBsZXYpCiB7CiAgICAgaW50 IHBhc3NfdCA9IDIsIHBhc3NubywgeCwgeSwgbWF4PTAsIG5tc2VkZWMsIGJwbm87CkBAIC05Mzcs NyArOTM3LDcgQEAgc3RhdGljIGludCBlbmNvZGVfcGFja2V0KEpwZWcyMDAwRW5jb2RlckNvbnRl eHQgKnMsIEpwZWcyMDAwUmVzTGV2ZWwgKnJsZXZlbCwgaW4KICAgICByZXR1cm4gMDsKIH0KIAot c3RhdGljIGludCBlbmNvZGVfcGFja2V0cyhKcGVnMjAwMEVuY29kZXJDb250ZXh0ICpzLCBKcGVn MjAwMFRpbGUgKnRpbGUsIGludCB0aWxlbm8sIGludCBubGF5ZXJzKQorc3RhdGljIGludCBlbmNv ZGVfcGFja2V0cyhKcGVnMjAwMEVuY29kZXJDb250ZXh0ICpzLCBKcGVnMjAwMEVuY1RpbGUgKnRp bGUsIGludCB0aWxlbm8sIGludCBubGF5ZXJzKQogewogICAgIGludCBjb21wbm8sIHJlc2xldmVs bm8sIGxheW5vLCByZXQ7CiAgICAgSnBlZzIwMDBDb2RpbmdTdHlsZSAqY29kc3R5ID0gJnMtPmNv ZHN0eTsKQEAgLTExODMsNyArMTE4Myw3IEBAIHN0YXRpYyBpbnQgZW5jb2RlX3BhY2tldHMoSnBl ZzIwMDBFbmNvZGVyQ29udGV4dCAqcywgSnBlZzIwMDBUaWxlICp0aWxlLCBpbnQgdGlsCiAgICAg cmV0dXJuIDA7CiB9CiAKLXN0YXRpYyB2b2lkIG1ha2VsYXllcihKcGVnMjAwMEVuY29kZXJDb250 ZXh0ICpzLCBpbnQgbGF5bm8sIGRvdWJsZSB0aHJlc2gsIEpwZWcyMDAwVGlsZSogdGlsZSwgaW50 IGZpbmFsKQorc3RhdGljIHZvaWQgbWFrZWxheWVyKEpwZWcyMDAwRW5jb2RlckNvbnRleHQgKnMs IGludCBsYXlubywgZG91YmxlIHRocmVzaCwgSnBlZzIwMDBFbmNUaWxlKiB0aWxlLCBpbnQgZmlu YWwpCiB7CiAgICAgaW50IGNvbXBubywgcmVzbm8sIGJhbmRubywgcHJlY25vLCBjYmxrbm87CiAg ICAgaW50IHBhc3NubzsKQEAgLTEyNjYsNyArMTI2Niw3IEBAIHN0YXRpYyB2b2lkIG1ha2VsYXll cihKcGVnMjAwMEVuY29kZXJDb250ZXh0ICpzLCBpbnQgbGF5bm8sIGRvdWJsZSB0aHJlc2gsIEpw ZWcyCiAgICAgfQogfQogCi1zdGF0aWMgdm9pZCBtYWtlbGF5ZXJzKEpwZWcyMDAwRW5jb2RlckNv bnRleHQgKnMsIEpwZWcyMDAwVGlsZSAqdGlsZSkKK3N0YXRpYyB2b2lkIG1ha2VsYXllcnMoSnBl ZzIwMDBFbmNvZGVyQ29udGV4dCAqcywgSnBlZzIwMDBFbmNUaWxlICp0aWxlKQogewogICAgIGlu dCBwcmVjbm8sIGNvbXBubywgcmVzbGV2ZWxubywgYmFuZG5vLCBjYmxrbm8sIGxldiwgcGFzc25v LCBsYXlubzsKICAgICBpbnQgaTsKQEAgLTEzNjcsNyArMTM2Nyw3IEBAIHN0YXRpYyBpbnQgZ2V0 Y3V0KEpwZWcyMDAwQ2JsayAqY2JsaywgaW50NjRfdCBsYW1iZGEsIGludCBkd3Rfbm9ybSkKICAg ICByZXR1cm4gcmVzOwogfQogCi1zdGF0aWMgdm9pZCB0cnVuY3Bhc3NlcyhKcGVnMjAwMEVuY29k ZXJDb250ZXh0ICpzLCBKcGVnMjAwMFRpbGUgKnRpbGUpCitzdGF0aWMgdm9pZCB0cnVuY3Bhc3Nl cyhKcGVnMjAwMEVuY29kZXJDb250ZXh0ICpzLCBKcGVnMjAwMEVuY1RpbGUgKnRpbGUpCiB7CiAg ICAgaW50IHByZWNubywgY29tcG5vLCByZXNsZXZlbG5vLCBiYW5kbm8sIGNibGtubywgbGV2Owog ICAgIEpwZWcyMDAwQ29kaW5nU3R5bGUgKmNvZHN0eSA9ICZzLT5jb2RzdHk7CkBAIC0xNDAxLDcg KzE0MDEsNyBAQCBzdGF0aWMgdm9pZCB0cnVuY3Bhc3NlcyhKcGVnMjAwMEVuY29kZXJDb250ZXh0 ICpzLCBKcGVnMjAwMFRpbGUgKnRpbGUpCiAgICAgfQogfQogCi1zdGF0aWMgaW50IGVuY29kZV90 aWxlKEpwZWcyMDAwRW5jb2RlckNvbnRleHQgKnMsIEpwZWcyMDAwVGlsZSAqdGlsZSwgaW50IHRp bGVubykKK3N0YXRpYyBpbnQgZW5jb2RlX3RpbGUoSnBlZzIwMDBFbmNvZGVyQ29udGV4dCAqcywg SnBlZzIwMDBFbmNUaWxlICp0aWxlLCBpbnQgdGlsZW5vKQogewogICAgIGludCBjb21wbm8sIHJl c2xldmVsbm8sIGJhbmRubywgcmV0OwogICAgIEpwZWcyMDAwVDFDb250ZXh0IHQxOwpAQCAtMTUx Niw3ICsxNTE2LDcgQEAgc3RhdGljIHZvaWQgcmVpbml0KEpwZWcyMDAwRW5jb2RlckNvbnRleHQg KnMpCiB7CiAgICAgaW50IHRpbGVubywgY29tcG5vOwogICAgIGZvciAodGlsZW5vID0gMDsgdGls ZW5vIDwgcy0+bnVtWHRpbGVzICogcy0+bnVtWXRpbGVzOyB0aWxlbm8rKyl7Ci0gICAgICAgIEpw ZWcyMDAwVGlsZSAqdGlsZSA9IHMtPnRpbGUgKyB0aWxlbm87CisgICAgICAgIEpwZWcyMDAwRW5j VGlsZSAqdGlsZSA9IHMtPnRpbGUgKyB0aWxlbm87CiAgICAgICAgIGZvciAoY29tcG5vID0gMDsg Y29tcG5vIDwgcy0+bmNvbXBvbmVudHM7IGNvbXBubysrKQogICAgICAgICAgICAgZmZfanBlZzIw MDBfcmVpbml0KHRpbGUtPmNvbXAgKyBjb21wbm8sICZzLT5jb2RzdHkpOwogICAgIH0KZGlmZiAt LWdpdCBhL2xpYmF2Y29kZWMvanBlZzIwMDAuaCBiL2xpYmF2Y29kZWMvanBlZzIwMDAuaAppbmRl eCAxMGI5YzRiOWIzLi44OGM5YzI4NjlmIDEwMDY0NAotLS0gYS9saWJhdmNvZGVjL2pwZWcyMDAw LmgKKysrIGIvbGliYXZjb2RlYy9qcGVnMjAwMC5oCkBAIC0zNCw2ICszNCw4IEBACiAjaW5jbHVk ZSAiYXZjb2RlYy5oIgogI2luY2x1ZGUgIm1xYy5oIgogI2luY2x1ZGUgImpwZWcyMDAwZHd0Lmgi CisjaW5jbHVkZSAianBlZzIwMDBkc3AuaCIKKyNpbmNsdWRlICJieXRlc3RyZWFtLmgiCiAKIGVu dW0gSnBlZzIwMDBNYXJrZXJzIHsKICAgSlBFRzIwMDBfU09DID0gMHhmZjRmLCAvLyBzdGFydCBv ZiBjb2Rlc3RyZWFtCkBAIC0xMTIsNyArMTE0LDggQEAgZW51bSBKcGVnMjAwMFF1YW50c3R5IHsg Ly8gcXVhbnRpemF0aW9uIHN0eWxlCiAjZGVmaW5lIEpQRUcyMDAwX0NTVFlfUFJFQyAgICAgIDB4 MDEgLy8gUHJlY2luY3RzIGRlZmluZWQgaW4gY29kaW5nIHN0eWxlCiAjZGVmaW5lIEpQRUcyMDAw X0NTVFlfU09QICAgICAgIDB4MDIgLy8gU09QIG1hcmtlciBwcmVzZW50CiAjZGVmaW5lIEpQRUcy MDAwX0NTVFlfRVBIICAgICAgIDB4MDQgLy8gRVBIIG1hcmtlciBwcmVzZW50Ci0KKyNkZWZpbmUg SlBFRzIwMDBfQ1RTWV9IVEoyS19GICAgMHg0MCAvLyBPbmx5IEhUIGNvZGUtYmxvY2tzIChSZWMu IElUVS1UIFQuODE0IHwgSVNPL0lFQyAxNTQ0NC0xNSkgYXJlIHByZXNlbnQKKyNkZWZpbmUgSlBF RzIwMDBfQ1RTWV9IVEoyS19NICAgMHhDMCAvLyBIVCBjb2RlIGJsb2NrcyAoUmVjLiBJVFUtVCBU LjgxNCB8IElTTy9JRUMgMTU0NDQtMTUpIGNhbiBiZSBwcmVzZW50CiAvLyBQcm9ncmVzc2lvbiBv cmRlcnMKICNkZWZpbmUgSlBFRzIwMDBfUEdPRF9MUkNQICAgICAgMHgwMCAgLy8gTGF5ZXItcmVz b2x1dGlvbiBsZXZlbC1jb21wb25lbnQtcG9zaXRpb24gcHJvZ3Jlc3Npb24KICNkZWZpbmUgSlBF RzIwMDBfUEdPRF9STENQICAgICAgMHgwMSAgLy8gUmVzb2x1dGlvbiBsZXZlbC1sYXllci1jb21w b25lbnQtcG9zaXRpb24gcHJvZ3Jlc3Npb24KQEAgLTEyMCw2ICsxMjMsMTkgQEAgZW51bSBKcGVn MjAwMFF1YW50c3R5IHsgLy8gcXVhbnRpemF0aW9uIHN0eWxlCiAjZGVmaW5lIEpQRUcyMDAwX1BH T0RfUENSTCAgICAgIDB4MDMgIC8vIFBvc2l0aW9uLWNvbXBvbmVudC1yZXNvbHV0aW9uIGxldmVs LWxheWVyIHByb2dyZXNzaW9uCiAjZGVmaW5lIEpQRUcyMDAwX1BHT0RfQ1BSTCAgICAgIDB4MDQg IC8vIENvbXBvbmVudC1wb3NpdGlvbi1yZXNvbHV0aW9uIGxldmVsLWxheWVyIHByb2dyZXNzaW9u CiAKKyNkZWZpbmUgSlAyX1NJR19UWVBFICAgIDB4NkE1MDIwMjAKKyNkZWZpbmUgSlAyX1NJR19W QUxVRSAgIDB4MEQwQTg3MEEKKyNkZWZpbmUgSlAyX0NPREVTVFJFQU0gIDB4NkE3MDMyNjMKKyNk ZWZpbmUgSlAyX0hFQURFUiAgICAgIDB4NkE3MDMyNjgKKworI2RlZmluZSBIQURfQ09DIDB4MDEK KyNkZWZpbmUgSEFEX1FDQyAweDAyCisKKyNkZWZpbmUgTUFYX1BPQ1MgMzIKKworLy8gbWlzYyBj b25zdGFudHMKKyNkZWZpbmUgSlBFRzIwMDBfUlNJWl9CSVQgICgxPDwxNCkKKwogdHlwZWRlZiBz dHJ1Y3QgSnBlZzIwMDBUMUNvbnRleHQgewogICAgIGludCBkYXRhWzYxNDRdOwogICAgIHVpbnQx Nl90IGZsYWdzWzYxNTZdOwpAQCAtMTgxLDYgKzE5Nyw3IEBAIHR5cGVkZWYgc3RydWN0IEpwZWcy MDAwQ2JsayB7CiAgICAgdWludDE2X3QgKmxlbmd0aGluYzsKICAgICB1aW50OF90IG5iX2xlbmd0 aGluYzsKICAgICB1aW50OF90IGxibG9jazsKKyAgICB1aW50OF90IHpicDsgICAgICAgIC8vIFpl cm8gYml0IHBsYW5lcy4KICAgICB1aW50OF90ICpkYXRhOwogICAgIHNpemVfdCBkYXRhX2FsbG9j YXRlZDsKICAgICBpbnQgbmJfdGVybWluYXRpb25zOwpAQCAtMTg4LDcgKzIwNSw4IEBAIHR5cGVk ZWYgc3RydWN0IEpwZWcyMDAwQ2JsayB7CiAgICAgaW50ICpkYXRhX3N0YXJ0OwogICAgIEpwZWcy MDAwUGFzcyAqcGFzc2VzOwogICAgIEpwZWcyMDAwTGF5ZXIgKmxheWVyczsKLSAgICBpbnQgY29v cmRbMl1bMl07IC8vIGJvcmRlciBjb29yZGluYXRlcyB7e3gwLCB4MX0sIHt5MCwgeTF9fQorICAg IGludCBjb29yZFsyXVsyXTsgICAgICAgLy8gYm9yZGVyIGNvb3JkaW5hdGVzIHt7eDAsIHgxfSwg e3kwLCB5MX19CisgICAgaW50IHBhc3NfbGVuZ3Roc1syXTsgICAvLyBMZW5ndGggb2YgZWFjaCBw YXNzCiB9IEpwZWcyMDAwQ2JsazsgLy8gY29kZSBibG9jawogCiB0eXBlZGVmIHN0cnVjdCBKcGVn MjAwMFByZWMgewpAQCAtMjI3LDYgKzI0NSw5OSBAQCB0eXBlZGVmIHN0cnVjdCBKcGVnMjAwMENv bXBvbmVudCB7CiAgICAgdWludDhfdCByb2lfc2hpZnQ7IC8vIFJPSSBzY2FsaW5nIHZhbHVlIGZv ciB0aGUgY29tcG9uZW50CiB9IEpwZWcyMDAwQ29tcG9uZW50OwogCit0eXBlZGVmIHN0cnVjdCBK cGVnMjAwMFBPQ0VudHJ5IHsKKyAgICB1aW50MTZfdCBMWUVwb2M7CisgICAgdWludDE2X3QgQ1Nw b2M7CisgICAgdWludDE2X3QgQ0Vwb2M7CisgICAgdWludDhfdCBSU3BvYzsKKyAgICB1aW50OF90 IFJFcG9jOworICAgIHVpbnQ4X3QgUHBvYzsKK30gSnBlZzIwMDBQT0NFbnRyeTsKKwordHlwZWRl ZiBzdHJ1Y3QgSnBlZzIwMDBQT0MgeworICAgIEpwZWcyMDAwUE9DRW50cnkgcG9jW01BWF9QT0NT XTsKKyAgICBpbnQgbmJfcG9jOworICAgIGludCBpc19kZWZhdWx0OworfSBKcGVnMjAwMFBPQzsK KwordHlwZWRlZiBzdHJ1Y3QgSnBlZzIwMDBUaWxlUGFydCB7CisgICAgdWludDhfdCB0aWxlX2lu ZGV4OyAgICAgICAgICAgICAgICAgLy8gVGlsZSBpbmRleCB3aG8gcmVmZXJzIHRoZSB0aWxlLXBh cnQKKyAgICBjb25zdCB1aW50OF90ICp0cF9lbmQ7CisgICAgR2V0Qnl0ZUNvbnRleHQgaGVhZGVy X3RwZzsgICAgICAgICAgLy8gYml0IHN0cmVhbSBvZiBoZWFkZXIgaWYgUFBNIGhlYWRlciBpcyB1 c2VkCisgICAgR2V0Qnl0ZUNvbnRleHQgdHBnOyAgICAgICAgICAgICAgICAgLy8gYml0IHN0cmVh bSBpbiB0aWxlLXBhcnQKK30gSnBlZzIwMDBUaWxlUGFydDsKKworLyogUk1LOiBGb3IgSlBFRzIw MDAgRENJTkVNQSAzIHRpbGUtcGFydHMgaW4gYSB0aWxlCisgKiBvbmUgcGVyIGNvbXBvbmVudCwg c28gdGlsZV9wYXJ0IGVsZW1lbnRzIGhhdmUgYSBzaXplIG9mIDMgKi8KK3R5cGVkZWYgc3RydWN0 IEpwZWcyMDAwVGlsZSB7CisgICAgSnBlZzIwMDBDb21wb25lbnQgICAqY29tcDsKKyAgICB1aW50 OF90ICAgICAgICAgICAgIHByb3BlcnRpZXNbNF07CisgICAgSnBlZzIwMDBDb2RpbmdTdHlsZSBj b2RzdHlbNF07CisgICAgSnBlZzIwMDBRdWFudFN0eWxlICBxbnRzdHlbNF07CisgICAgSnBlZzIw MDBQT0MgICAgICAgICBwb2M7CisgICAgSnBlZzIwMDBUaWxlUGFydCAgICB0aWxlX3BhcnRbMzJd OworICAgIHVpbnQ4X3QgICAgICAgICAgICAgaGFzX3BwdDsgICAgICAgICAgICAgICAgLy8gd2hl dGhlciB0aGlzIHRpbGUgaGFzIGEgcHB0IG1hcmtlcgorICAgIHVpbnQ4X3QgICAgICAgICAgICAg KnBhY2tlZF9oZWFkZXJzOyAgICAgICAgLy8gY29udGFpbnMgcGFja2VkIGhlYWRlcnMuIFVzZWQg b25seSBhbG9uZyB3aXRoIFBQVCBtYXJrZXIKKyAgICBpbnQgICAgICAgICAgICAgICAgIHBhY2tl ZF9oZWFkZXJzX3NpemU7ICAgIC8vIHNpemUgaW4gYnl0ZXMgb2YgdGhlIHBhY2tlZCBoZWFkZXJz CisgICAgR2V0Qnl0ZUNvbnRleHQgICAgICBwYWNrZWRfaGVhZGVyc19zdHJlYW07ICAvLyBieXRl IGNvbnRleHQgY29ycmVzcG9uZGluZyB0byBwYWNrZWQgaGVhZGVycworICAgIHVpbnQxNl90IHRw X2lkeDsgICAgICAgICAgICAgICAgICAgIC8vIFRpbGUtcGFydCBpbmRleAorICAgIGludCBjb29y ZFsyXVsyXTsgICAgICAgICAgICAgICAgICAgIC8vIGJvcmRlciBjb29yZGluYXRlcyB7e3gwLCB4 MX0sIHt5MCwgeTF9fQorfSBKcGVnMjAwMERlY1RpbGU7CisKK3R5cGVkZWYgc3RydWN0IEpwZWcy MDAwRGVjb2RlckNvbnRleHQgeworICAgIEFWQ2xhc3MgICAgICAgICAqY2xhc3M7CisgICAgQVZD b2RlY0NvbnRleHQgICphdmN0eDsKKyAgICBHZXRCeXRlQ29udGV4dCAgZzsKKworICAgIGludCAg ICAgICAgICAgICB3aWR0aCwgaGVpZ2h0OworICAgIGludCAgICAgICAgICAgICBpbWFnZV9vZmZz ZXRfeCwgaW1hZ2Vfb2Zmc2V0X3k7CisgICAgaW50ICAgICAgICAgICAgIHRpbGVfb2Zmc2V0X3gs IHRpbGVfb2Zmc2V0X3k7CisgICAgdWludDhfdCAgICAgICAgIGNicHNbNF07ICAgIC8vIGJpdHMg cGVyIHNhbXBsZSBpbiBwYXJ0aWN1bGFyIGNvbXBvbmVudHMKKyAgICB1aW50OF90ICAgICAgICAg c2duZFs0XTsgICAgLy8gaWYgYSBjb21wb25lbnQgaXMgc2lnbmVkCisgICAgdWludDhfdCAgICAg ICAgIHByb3BlcnRpZXNbNF07CisKKyAgICB1aW50OF90ICAgICAgICAgaGFzX3BwbTsKKyAgICB1 aW50OF90ICAgICAgICAgKnBhY2tlZF9oZWFkZXJzOyAvLyBjb250YWlucyBwYWNrZWQgaGVhZGVy cy4gVXNlZCBvbmx5IGFsb25nIHdpdGggUFBNIG1hcmtlcgorICAgIGludCAgICAgICAgICAgICBw YWNrZWRfaGVhZGVyc19zaXplOworICAgIEdldEJ5dGVDb250ZXh0ICBwYWNrZWRfaGVhZGVyc19z dHJlYW07CisgICAgdWludDhfdCAgICAgICAgIGluX3RpbGVfaGVhZGVyczsKKworICAgIGludCAg ICAgICAgICAgICBjZHhbNF0sIGNkeVs0XTsKKyAgICBpbnQgICAgICAgICAgICAgcHJlY2lzaW9u OworICAgIGludCAgICAgICAgICAgICBuY29tcG9uZW50czsKKyAgICBpbnQgICAgICAgICAgICAg Y29sb3VyX3NwYWNlOworICAgIHVpbnQzMl90ICAgICAgICBwYWxldHRlWzI1Nl07CisgICAgaW50 OF90ICAgICAgICAgIHBhbDg7CisgICAgaW50ICAgICAgICAgICAgIGNkZWZbNF07CisgICAgaW50 ICAgICAgICAgICAgIHRpbGVfd2lkdGgsIHRpbGVfaGVpZ2h0OworICAgIHVuc2lnbmVkICAgICAg ICBudW1YdGlsZXMsIG51bVl0aWxlczsKKyAgICBpbnQgICAgICAgICAgICAgbWF4dGlsZWxlbjsK KyAgICBBVlJhdGlvbmFsICAgICAgc2FyOworCisgICAgSnBlZzIwMDBDb2RpbmdTdHlsZSBjb2Rz dHlbNF07CisgICAgSnBlZzIwMDBRdWFudFN0eWxlICBxbnRzdHlbNF07CisgICAgSnBlZzIwMDBQ T0MgICAgICAgICBwb2M7CisgICAgdWludDhfdCAgICAgICAgICAgICByb2lfc2hpZnRbNF07CisK KyAgICBpbnQgICAgICAgICAgICAgYml0X2luZGV4OworCisgICAgaW50ICAgICAgICAgICAgIGN1 cnRpbGVubzsKKworICAgIEpwZWcyMDAwRGVjVGlsZSAgICAqdGlsZTsKKyAgICBKcGVnMjAwMERT UENvbnRleHQgZHNwOworCisgICAgLypvcHRpb25zIHBhcmFtZXRlcnMqLworICAgIGludCAgICAg ICAgICAgICByZWR1Y3Rpb25fZmFjdG9yOworCisgICAgLypFeHRlbmRlZCBjYXBhYmlsaXRpZXMg Ki8KKyAgICB1aW50OF90ICBpc19odGoyazsgLy8gc2V0IHRvIDEgdG8gaW5kaWNhdGUgaW1hZ2Ug dXNlcyBIVEoySyBiaXRzdHJlYW0sIDAgb3RoZXJ3aXNlCisKKyAgICB1aW50MzJfdCBwY2FwOwor ICAgIHVpbnQxNl90IGNjYXBbMzJdOworCisgICAgdWludDE2X3QgKnBjcGY7IC8vUGNwZl9pICwg Zm91bmQgaW4gQ1BGIG1hcmtlciAsIHNlZSBzZWN0aW9uIEEuNiBvZiBIVEoySyBzcGVjCisKK30g SnBlZzIwMDBEZWNvZGVyQ29udGV4dDsKIC8qIG1pc2MgdG9vbHMgKi8KIHN0YXRpYyBpbmxpbmUg aW50IGZmX2pwZWcyMDAwX2NlaWxkaXZwb3cyKGludCBhLCBpbnQgYikKIHsKZGlmZiAtLWdpdCBh L2xpYmF2Y29kZWMvanBlZzIwMDBkZWMuYyBiL2xpYmF2Y29kZWMvanBlZzIwMDBkZWMuYwppbmRl eCA5Mjk2NmIxMWY1Li5jZjQ5MmMzOGU5IDEwMDY0NAotLS0gYS9saWJhdmNvZGVjL2pwZWcyMDAw ZGVjLmMKKysrIGIvbGliYXZjb2RlYy9qcGVnMjAwMGRlYy5jCkBAIC00MiwxMDEgKzQyLDggQEAK ICNpbmNsdWRlICJqcGVnMjAwMC5oIgogI2luY2x1ZGUgImpwZWcyMDAwZHNwLmgiCiAjaW5jbHVk ZSAicHJvZmlsZXMuaCIKKyNpbmNsdWRlICJqcGVnMjAwMGh0ZGVjLmgiCiAKLSNkZWZpbmUgSlAy X1NJR19UWVBFICAgIDB4NkE1MDIwMjAKLSNkZWZpbmUgSlAyX1NJR19WQUxVRSAgIDB4MEQwQTg3 MEEKLSNkZWZpbmUgSlAyX0NPREVTVFJFQU0gIDB4NkE3MDMyNjMKLSNkZWZpbmUgSlAyX0hFQURF UiAgICAgIDB4NkE3MDMyNjgKLQotI2RlZmluZSBIQURfQ09DIDB4MDEKLSNkZWZpbmUgSEFEX1FD QyAweDAyCi0KLSNkZWZpbmUgTUFYX1BPQ1MgMzIKLQotdHlwZWRlZiBzdHJ1Y3QgSnBlZzIwMDBQ T0NFbnRyeSB7Ci0gICAgdWludDE2X3QgTFlFcG9jOwotICAgIHVpbnQxNl90IENTcG9jOwotICAg IHVpbnQxNl90IENFcG9jOwotICAgIHVpbnQ4X3QgUlNwb2M7Ci0gICAgdWludDhfdCBSRXBvYzsK LSAgICB1aW50OF90IFBwb2M7Ci19IEpwZWcyMDAwUE9DRW50cnk7Ci0KLXR5cGVkZWYgc3RydWN0 IEpwZWcyMDAwUE9DIHsKLSAgICBKcGVnMjAwMFBPQ0VudHJ5IHBvY1tNQVhfUE9DU107Ci0gICAg aW50IG5iX3BvYzsKLSAgICBpbnQgaXNfZGVmYXVsdDsKLX0gSnBlZzIwMDBQT0M7Ci0KLXR5cGVk ZWYgc3RydWN0IEpwZWcyMDAwVGlsZVBhcnQgewotICAgIHVpbnQ4X3QgdGlsZV9pbmRleDsgICAg ICAgICAgICAgICAgIC8vIFRpbGUgaW5kZXggd2hvIHJlZmVycyB0aGUgdGlsZS1wYXJ0Ci0gICAg Y29uc3QgdWludDhfdCAqdHBfZW5kOwotICAgIEdldEJ5dGVDb250ZXh0IGhlYWRlcl90cGc7ICAg ICAgICAgIC8vIGJpdCBzdHJlYW0gb2YgaGVhZGVyIGlmIFBQTSBoZWFkZXIgaXMgdXNlZAotICAg IEdldEJ5dGVDb250ZXh0IHRwZzsgICAgICAgICAgICAgICAgIC8vIGJpdCBzdHJlYW0gaW4gdGls ZS1wYXJ0Ci19IEpwZWcyMDAwVGlsZVBhcnQ7Ci0KLS8qIFJNSzogRm9yIEpQRUcyMDAwIERDSU5F TUEgMyB0aWxlLXBhcnRzIGluIGEgdGlsZQotICogb25lIHBlciBjb21wb25lbnQsIHNvIHRpbGVf cGFydCBlbGVtZW50cyBoYXZlIGEgc2l6ZSBvZiAzICovCi10eXBlZGVmIHN0cnVjdCBKcGVnMjAw MFRpbGUgewotICAgIEpwZWcyMDAwQ29tcG9uZW50ICAgKmNvbXA7Ci0gICAgdWludDhfdCAgICAg ICAgICAgICBwcm9wZXJ0aWVzWzRdOwotICAgIEpwZWcyMDAwQ29kaW5nU3R5bGUgY29kc3R5WzRd OwotICAgIEpwZWcyMDAwUXVhbnRTdHlsZSAgcW50c3R5WzRdOwotICAgIEpwZWcyMDAwUE9DICAg ICAgICAgcG9jOwotICAgIEpwZWcyMDAwVGlsZVBhcnQgICAgdGlsZV9wYXJ0WzMyXTsKLSAgICB1 aW50OF90ICAgICAgICAgICAgIGhhc19wcHQ7ICAgICAgICAgICAgICAgIC8vIHdoZXRoZXIgdGhp cyB0aWxlIGhhcyBhIHBwdCBtYXJrZXIKLSAgICB1aW50OF90ICAgICAgICAgICAgICpwYWNrZWRf aGVhZGVyczsgICAgICAgIC8vIGNvbnRhaW5zIHBhY2tlZCBoZWFkZXJzLiBVc2VkIG9ubHkgYWxv bmcgd2l0aCBQUFQgbWFya2VyCi0gICAgaW50ICAgICAgICAgICAgICAgICBwYWNrZWRfaGVhZGVy c19zaXplOyAgICAvLyBzaXplIGluIGJ5dGVzIG9mIHRoZSBwYWNrZWQgaGVhZGVycwotICAgIEdl dEJ5dGVDb250ZXh0ICAgICAgcGFja2VkX2hlYWRlcnNfc3RyZWFtOyAgLy8gYnl0ZSBjb250ZXh0 IGNvcnJlc3BvbmRpbmcgdG8gcGFja2VkIGhlYWRlcnMKLSAgICB1aW50MTZfdCB0cF9pZHg7ICAg ICAgICAgICAgICAgICAgICAvLyBUaWxlLXBhcnQgaW5kZXgKLSAgICBpbnQgY29vcmRbMl1bMl07 ICAgICAgICAgICAgICAgICAgICAvLyBib3JkZXIgY29vcmRpbmF0ZXMge3t4MCwgeDF9LCB7eTAs IHkxfX0KLX0gSnBlZzIwMDBUaWxlOwotCi10eXBlZGVmIHN0cnVjdCBKcGVnMjAwMERlY29kZXJD b250ZXh0IHsKLSAgICBBVkNsYXNzICAgICAgICAgKmNsYXNzOwotICAgIEFWQ29kZWNDb250ZXh0 ICAqYXZjdHg7Ci0gICAgR2V0Qnl0ZUNvbnRleHQgIGc7Ci0KLSAgICBpbnQgICAgICAgICAgICAg d2lkdGgsIGhlaWdodDsKLSAgICBpbnQgICAgICAgICAgICAgaW1hZ2Vfb2Zmc2V0X3gsIGltYWdl X29mZnNldF95OwotICAgIGludCAgICAgICAgICAgICB0aWxlX29mZnNldF94LCB0aWxlX29mZnNl dF95OwotICAgIHVpbnQ4X3QgICAgICAgICBjYnBzWzRdOyAgICAvLyBiaXRzIHBlciBzYW1wbGUg aW4gcGFydGljdWxhciBjb21wb25lbnRzCi0gICAgdWludDhfdCAgICAgICAgIHNnbmRbNF07ICAg IC8vIGlmIGEgY29tcG9uZW50IGlzIHNpZ25lZAotICAgIHVpbnQ4X3QgICAgICAgICBwcm9wZXJ0 aWVzWzRdOwotCi0gICAgdWludDhfdCAgICAgICAgIGhhc19wcG07Ci0gICAgdWludDhfdCAgICAg ICAgICpwYWNrZWRfaGVhZGVyczsgLy8gY29udGFpbnMgcGFja2VkIGhlYWRlcnMuIFVzZWQgb25s eSBhbG9uZyB3aXRoIFBQTSBtYXJrZXIKLSAgICBpbnQgICAgICAgICAgICAgcGFja2VkX2hlYWRl cnNfc2l6ZTsKLSAgICBHZXRCeXRlQ29udGV4dCAgcGFja2VkX2hlYWRlcnNfc3RyZWFtOwotICAg IHVpbnQ4X3QgICAgICAgICBpbl90aWxlX2hlYWRlcnM7Ci0KLSAgICBpbnQgICAgICAgICAgICAg Y2R4WzRdLCBjZHlbNF07Ci0gICAgaW50ICAgICAgICAgICAgIHByZWNpc2lvbjsKLSAgICBpbnQg ICAgICAgICAgICAgbmNvbXBvbmVudHM7Ci0gICAgaW50ICAgICAgICAgICAgIGNvbG91cl9zcGFj ZTsKLSAgICB1aW50MzJfdCAgICAgICAgcGFsZXR0ZVsyNTZdOwotICAgIGludDhfdCAgICAgICAg ICBwYWw4OwotICAgIGludCAgICAgICAgICAgICBjZGVmWzRdOwotICAgIGludCAgICAgICAgICAg ICB0aWxlX3dpZHRoLCB0aWxlX2hlaWdodDsKLSAgICB1bnNpZ25lZCAgICAgICAgbnVtWHRpbGVz LCBudW1ZdGlsZXM7Ci0gICAgaW50ICAgICAgICAgICAgIG1heHRpbGVsZW47Ci0gICAgQVZSYXRp b25hbCAgICAgIHNhcjsKLQotICAgIEpwZWcyMDAwQ29kaW5nU3R5bGUgY29kc3R5WzRdOwotICAg IEpwZWcyMDAwUXVhbnRTdHlsZSAgcW50c3R5WzRdOwotICAgIEpwZWcyMDAwUE9DICAgICAgICAg cG9jOwotICAgIHVpbnQ4X3QgICAgICAgICAgICAgcm9pX3NoaWZ0WzRdOwotCi0gICAgaW50ICAg ICAgICAgICAgIGJpdF9pbmRleDsKLQotICAgIGludCAgICAgICAgICAgICBjdXJ0aWxlbm87Ci0K LSAgICBKcGVnMjAwMFRpbGUgICAgKnRpbGU7Ci0gICAgSnBlZzIwMDBEU1BDb250ZXh0IGRzcDsK LQotICAgIC8qb3B0aW9ucyBwYXJhbWV0ZXJzKi8KLSAgICBpbnQgICAgICAgICAgICAgcmVkdWN0 aW9uX2ZhY3RvcjsKLX0gSnBlZzIwMDBEZWNvZGVyQ29udGV4dDsKIAogLyogZ2V0X2JpdHMgZnVu Y3Rpb25zIGZvciBKUEVHMjAwMCBwYWNrZXQgYml0c3RyZWFtCiAgKiBJdCBpcyBhIGdldF9iaXQg ZnVuY3Rpb24gd2l0aCBhIGJpdC1zdHVmZmluZyByb3V0aW5lLiBJZiB0aGUgdmFsdWUgb2YgdGhl CkBAIC0zNjksNyArMjc2LDcgQEAgc3RhdGljIGludCBnZXRfc2l6KEpwZWcyMDAwRGVjb2RlckNv bnRleHQgKnMpCiAgICAgfQogCiAgICAgZm9yIChpID0gMDsgaSA8IHMtPm51bVh0aWxlcyAqIHMt Pm51bVl0aWxlczsgaSsrKSB7Ci0gICAgICAgIEpwZWcyMDAwVGlsZSAqdGlsZSA9IHMtPnRpbGUg KyBpOworICAgICAgICBKcGVnMjAwMERlY1RpbGUgKnRpbGUgPSBzLT50aWxlICsgaTsKIAogICAg ICAgICB0aWxlLT5jb21wID0gYXZfbWFsbG9jeihzLT5uY29tcG9uZW50cyAqIHNpemVvZigqdGls ZS0+Y29tcCkpOwogICAgICAgICBpZiAoIXRpbGUtPmNvbXApCkBAIC01MjAsNyArNDI3LDExIEBA IHN0YXRpYyBpbnQgZ2V0X2NveChKcGVnMjAwMERlY29kZXJDb250ZXh0ICpzLCBKcGVnMjAwMENv ZGluZ1N0eWxlICpjKQogICAgIH0KIAogICAgIGMtPmNibGtfc3R5bGUgPSBieXRlc3RyZWFtMl9n ZXRfYnl0ZXUoJnMtPmcpOwotICAgIGlmIChjLT5jYmxrX3N0eWxlICE9IDApIHsgLy8gY2JsayBz dHlsZQorICAgIGlmIChjLT5jYmxrX3N0eWxlICYgSlBFRzIwMDBfQ1RTWV9IVEoyS19NIHx8IGMt PmNibGtfc3R5bGUgJiBKUEVHMjAwMF9DVFNZX0hUSjJLX0YpeworICAgICAgICBhdl9sb2cocy0+ YXZjdHgsQVZfTE9HX1RSQUNFLCJIaWdoIFRocm91Z2hwdXQganBlZyAyMDAwIGNvZGVzdHJlYW0u XG4iKTsKKyAgICAgICAgcy0+aXNfaHRqMmsgPSAxOworICAgIH0KKyAgICBpZiAoYy0+Y2Jsa19z dHlsZSAhPSAwICYmICEoYy0+Y2Jsa19zdHlsZSAmIEpQRUcyMDAwX0NUU1lfSFRKMktfRikgLypD b3ZlcnMgYm90aCBwYXJ0aWFsIGFuZCBmdWxsIGh0ajJrIHN0cmVhbSAqLykgeyAvLyBjYmxrIHN0 eWxlCiAgICAgICAgIGF2X2xvZyhzLT5hdmN0eCwgQVZfTE9HX1dBUk5JTkcsICJleHRyYSBjYmxr IHN0eWxlcyAlWFxuIiwgYy0+Y2Jsa19zdHlsZSk7CiAgICAgICAgIGlmIChjLT5jYmxrX3N0eWxl ICYgSlBFRzIwMDBfQ0JMS19CWVBBU1MpCiAgICAgICAgICAgICBhdl9sb2cocy0+YXZjdHgsIEFW X0xPR19XQVJOSU5HLCAiU2VsZWN0aXZlIGFyaXRobWV0aWMgY29kaW5nIGJ5cGFzc1xuIik7CkBA IC02MjYsNyArNTM3LDYzIEBAIHN0YXRpYyBpbnQgZ2V0X2NvYyhKcGVnMjAwMERlY29kZXJDb250 ZXh0ICpzLCBKcGVnMjAwMENvZGluZ1N0eWxlICpjLAogICAgIGMtPmluaXQgPSAxOwogICAgIHJl dHVybiAwOwogfQorLyogUGFyc2UgZXh0ZW5kZWQgY2FwYWJpbGl0aWVzIG1hcmtlciAqLworc3Rh dGljIGludCBnZXRfY2FwKEpwZWcyMDAwRGVjb2RlckNvbnRleHQgKnMsIGludCBsZW4pCit7Cisg ICAgaW50IHBjYXBfb25lczsgLy8gY29udGFpbnMgbnVtYmVyIG9mIHNldCBiaXRzIGluIHBjYXAg dGhhdCBhcmUgZXF1YWwgdG8gMS4KKyAgICBpbnQgbGNhcDsKKworICAgIGlmIChsZW4gPCA4IHx8 IGxlbiA+IDcwKSB7CisgICAgICAgIC8vIHNwZWMgcmVxdWlyZXMgY2FwIGxlbmd0aCB0byBiZSBi ZXR3ZWVuIDgtNzAKKyAgICAgICAgYXZfbG9nKHMtPmF2Y3R4LCBBVl9MT0dfRVJST1IsICJJbnZh bGlkIENBUCBsZW5ndGggJyVkJy4gTGVuZ3RoIHNob3VsZCBiZSBiZXR3ZWVuIDgtNzBcbiIsIGxl bik7CisgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOworICAgIH0KKworICAgIHMt PnBjYXAgPSBieXRlc3RyZWFtMl9nZXRfYmUzMnUoJihzLT5nKSk7CisKKyAgICBsY2FwID0gKGxl biAtIDYpIC8gMjsKKyAgICBwY2FwX29uZXMgPSBhdl9wb3Bjb3VudF9jKHMtPnBjYXApOworCisg ICAgaWYgKGxjYXAgIT0gcGNhcF9vbmVzKSB7CisgICAgICAgIC8vIGFjY29yZGluZyB0byB0aGUg c3BlYyAsbGVuZ3RoIGlzIHRoZSBzYW1lIGFzIG51bWJlciBvZiBzZXQgYml0cyBpbiBwY2FwIGhl YWRlci4KKyAgICAgICAgYXZfbG9nKHMtPmF2Y3R4LCBBVl9MT0dfRVJST1IsCisgICAgICAgICAg ICAgICAiTGVuZ3RoIG9mIG1hcmtlcmAlZGAgbm90IGVxdWFsIHRvIHNldCBiaXRzIGluIFBjYXAg c2VnbWVudChiaXRzIHNldCB0byAxIGluIFBjYXAgYXJlICVkKS5cbiIsIGxjYXAsIHBjYXBfb25l cyk7CisgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOworICAgIH0KKyAgICAvKiAg QWNjb3JkaW5nIHRvIHRoZSBzcGVjIGFnYWluIENjYXDigbEgZXhpc3RzIGlmIGFuZCBvbmx5IGlm IHRoZSBpdGggYml0IG9mIFBjYXAgaXMgc2V0LgorICAgICAqICBTaW5jZSBwY2FwIGNhbiBoYXZl IDMyIGJpdHMsIHdlIGxvb3AgdW50aWwgd2UgcmVhZCBhbGwgQ2NhcHMnICBvZiBzZXQgYml0cwor ICAgICAqCisgICAgICogIEFsc28gc2luY2UgdGhlIHNwZWMgYWRkcmVzc2VzIFBjYXDCuSBhcyB0 aGUgbW9zdCBzaWduaWZpY2FudCBiaXQgb2YgMSgzMXN0IGJpdCksdGhlCisgICAgICogIGFycmF5 IGFsc28gdGFrZXMgdGhhdCBpbnRvIGFjY291bnQsIHN0b3JpbmcgYXQgY2NhcFsxXSBpZiAoUGNh cCAmIDE8PDMxKSA9PSAxCisgICAgICovCisgICAgZm9yIChpbnQgaSA9IDE7IGkgPCAzMjsgaSsr KQorICAgICAgICBpZiAocy0+cGNhcCAmICgxIDw8ICgzMiAtIGkpKSkKKyAgICAgICAgICAgIHMt PmNjYXBbaV0gPSBieXRlc3RyZWFtMl9nZXRfYmUxNnUoJihzLT5nKSk7CisKKyAgICByZXR1cm4g MDsKK30KK3N0YXRpYyBpbnQgZ2V0X2NwZihKcGVnMjAwMERlY29kZXJDb250ZXh0ICpzLCBpbnQg bGVuKQoreworICAgIGludCBuOworCisgICAgaWYgKChsZW4gPCA0KSB8fCAobGVuID4gNjU1MzQp KSB7CisgICAgICAgIGF2X2xvZyhzLT5hdmN0eCwgQVZfTE9HX0VSUk9SLCAiQ1BGIG1hcmtlciBs ZW5ndGggJWQgbm90IGluIHJhbmdlIDQtNjU1MzQiLCBsZW4pOworICAgICAgICByZXR1cm4gQVZF UlJPUl9JTlZBTElEREFUQTsKKyAgICB9CiAKKyAgICBuID0gKGxlbiAtIDIpIC8gMjsKKworICAg IHMtPnBjcGYgPSBhdl9jYWxsb2Mobiwgc2l6ZW9mKHVpbnQxNl90KSk7CisKKyAgICBpZiAoIXMt PnBjcGYpIHsKKyAgICAgICAgYXZfbG9nKHMtPmF2Y3R4LCBBVl9MT0dfRkFUQUwsICJPdXQgb2Yg bWVtb3J5LiBDYW5ub3QgcmVzZXJ2ZSBzcGFjZSBvZiBzaXplICVkIGZvciBQY3BmIiwgbik7Cisg ICAgICAgIHJldHVybiBBVkVSUk9SX0JVRzsKKyAgICB9CisgICAgZm9yIChpbnQgaSA9IDA7IGkg PCBuOyBpKyspCisgICAgICAgIHMtPnBjcGZbaV0gPSBieXRlc3RyZWFtMl9nZXRfYmUxNnUoJihz LT5nKSk7CisKKyAgICByZXR1cm4gMDsKK30KIHN0YXRpYyBpbnQgZ2V0X3JnbihKcGVnMjAwMERl Y29kZXJDb250ZXh0ICpzLCBpbnQgbikKIHsKICAgICB1aW50MTZfdCBjb21wbm87CkBAIC04MDQs NyArNzcxLDYgQEAgc3RhdGljIGludCBnZXRfcG9jKEpwZWcyMDAwRGVjb2RlckNvbnRleHQgKnMs IGludCBzaXplLCBKcGVnMjAwMFBPQyAqcCkKICAgICByZXR1cm4gMDsKIH0KIAotCiAvKiBHZXQg c3RhcnQgb2YgdGlsZSBzZWdtZW50LiAqLwogc3RhdGljIGludCBnZXRfc290KEpwZWcyMDAwRGVj b2RlckNvbnRleHQgKnMsIGludCBuKQogewpAQCAtODQ3LDcgKzgxMyw3IEBAIHN0YXRpYyBpbnQg Z2V0X3NvdChKcGVnMjAwMERlY29kZXJDb250ZXh0ICpzLCBpbnQgbikKICAgICB0cC0+dHBfZW5k ICAgICA9IHMtPmcuYnVmZmVyICsgUHNvdCAtIG4gLSAyOwogCiAgICAgaWYgKCFUUHNvdCkgewot ICAgICAgICBKcGVnMjAwMFRpbGUgKnRpbGUgPSBzLT50aWxlICsgcy0+Y3VydGlsZW5vOworICAg ICAgICBKcGVnMjAwMERlY1RpbGUgKnRpbGUgPSBzLT50aWxlICsgcy0+Y3VydGlsZW5vOwogCiAg ICAgICAgIC8qIGNvcHkgZGVmYXVsdHMgKi8KICAgICAgICAgbWVtY3B5KHRpbGUtPmNvZHN0eSwg cy0+Y29kc3R5LCBzLT5uY29tcG9uZW50cyAqIHNpemVvZihKcGVnMjAwMENvZGluZ1N0eWxlKSk7 CkBAIC05NjIsNyArOTI4LDcgQEAgc3RhdGljIGludCBnZXRfcHBtKEpwZWcyMDAwRGVjb2RlckNv bnRleHQgKnMsIGludCBuKQogCiBzdGF0aWMgaW50IGdldF9wcHQoSnBlZzIwMDBEZWNvZGVyQ29u dGV4dCAqcywgaW50IG4pCiB7Ci0gICAgSnBlZzIwMDBUaWxlICp0aWxlOworICAgIEpwZWcyMDAw RGVjVGlsZSAqdGlsZTsKICAgICB2b2lkICpuZXc7CiAKICAgICBpZiAobiA8IDMpIHsKQEAgLTEw MDEsNyArOTY3LDcgQEAgc3RhdGljIGludCBpbml0X3RpbGUoSnBlZzIwMDBEZWNvZGVyQ29udGV4 dCAqcywgaW50IHRpbGVubykKICAgICBpbnQgY29tcG5vOwogICAgIGludCB0aWxleCA9IHRpbGVu byAlIHMtPm51bVh0aWxlczsKICAgICBpbnQgdGlsZXkgPSB0aWxlbm8gLyBzLT5udW1YdGlsZXM7 Ci0gICAgSnBlZzIwMDBUaWxlICp0aWxlID0gcy0+dGlsZSArIHRpbGVubzsKKyAgICBKcGVnMjAw MERlY1RpbGUgKnRpbGUgPSBzLT50aWxlICsgdGlsZW5vOwogCiAgICAgaWYgKCF0aWxlLT5jb21w KQogICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOwpAQCAtMTAzNiw5ICsxMDAyLDkgQEAg c3RhdGljIGludCBpbml0X3RpbGUoSnBlZzIwMDBEZWNvZGVyQ29udGV4dCAqcywgaW50IHRpbGVu bykKICAgICAgICAgICAgIGNvbXAtPnJvaV9zaGlmdCA9IHMtPnJvaV9zaGlmdFtjb21wbm9dOwog ICAgICAgICBpZiAoIWNvZHN0eS0+aW5pdCkKICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lO VkFMSUREQVRBOwotICAgICAgICBpZiAocmV0ID0gZmZfanBlZzIwMDBfaW5pdF9jb21wb25lbnQo Y29tcCwgY29kc3R5LCBxbnRzdHksCisgICAgICAgIGlmICgocmV0ID0gZmZfanBlZzIwMDBfaW5p dF9jb21wb25lbnQoY29tcCwgY29kc3R5LCBxbnRzdHksCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzLT5jYnBzW2NvbXBub10sIHMtPmNkeFtjb21wbm9dLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+Y2R5W2NvbXBu b10sIHMtPmF2Y3R4KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHMtPmNkeVtjb21wbm9dLCBzLT5hdmN0eCkpKQogICAgICAgICAgICAgcmV0dXJuIHJldDsK ICAgICB9CiAgICAgcmV0dXJuIDA7CkBAIC0xMDcxLDcgKzEwMzcsNyBAQCBzdGF0aWMgaW50IGdl dGxibG9ja2luYyhKcGVnMjAwMERlY29kZXJDb250ZXh0ICpzKQogICAgIHJldHVybiByZXM7CiB9 CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBzZWxlY3RfaGVhZGVyKEpwZWcyMDAwRGVjb2RlckNvbnRl eHQgKnMsIEpwZWcyMDAwVGlsZSAqdGlsZSwKK3N0YXRpYyBpbmxpbmUgdm9pZCBzZWxlY3RfaGVh ZGVyKEpwZWcyMDAwRGVjb2RlckNvbnRleHQgKnMsIEpwZWcyMDAwRGVjVGlsZSAqdGlsZSwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqdHBfaW5kZXgpCiB7CiAgICAgcy0+ ZyA9IHRpbGUtPnRpbGVfcGFydFsqdHBfaW5kZXhdLmhlYWRlcl90cGc7CkBAIC0xMDgyLDcgKzEw NDgsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgc2VsZWN0X2hlYWRlcihKcGVnMjAwMERlY29kZXJD b250ZXh0ICpzLCBKcGVnMjAwMFRpbGUgKnRpbGUsCiAgICAgfQogfQogCi1zdGF0aWMgaW5saW5l IHZvaWQgc2VsZWN0X3N0cmVhbShKcGVnMjAwMERlY29kZXJDb250ZXh0ICpzLCBKcGVnMjAwMFRp bGUgKnRpbGUsCitzdGF0aWMgaW5saW5lIHZvaWQgc2VsZWN0X3N0cmVhbShKcGVnMjAwMERlY29k ZXJDb250ZXh0ICpzLCBKcGVnMjAwMERlY1RpbGUgKnRpbGUsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpbnQgKnRwX2luZGV4LCBKcGVnMjAwMENvZGluZ1N0eWxlICpjb2RzdHkp CiB7CiAgICAgcy0+ZyA9IHRpbGUtPnRpbGVfcGFydFsqdHBfaW5kZXhdLnRwZzsKQEAgLTEwOTks NyArMTA2NSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBzZWxlY3Rfc3RyZWFtKEpwZWcyMDAwRGVj b2RlckNvbnRleHQgKnMsIEpwZWcyMDAwVGlsZSAqdGlsZSwKICAgICB9CiB9CiAKLXN0YXRpYyBp bnQganBlZzIwMDBfZGVjb2RlX3BhY2tldChKcGVnMjAwMERlY29kZXJDb250ZXh0ICpzLCBKcGVn MjAwMFRpbGUgKnRpbGUsIGludCAqdHBfaW5kZXgsCitzdGF0aWMgaW50IGpwZWcyMDAwX2RlY29k ZV9wYWNrZXQoSnBlZzIwMDBEZWNvZGVyQ29udGV4dCAqcywgSnBlZzIwMDBEZWNUaWxlICp0aWxl LCBpbnQgKnRwX2luZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpwZWcy MDAwQ29kaW5nU3R5bGUgKmNvZHN0eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBKcGVnMjAwMFJlc0xldmVsICpybGV2ZWwsIGludCBwcmVjbm8sCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaW50IGxheW5vLCB1aW50OF90ICpleHBuLCBpbnQgbnVtZ2JpdHMp CkBAIC0xMTQ4LDkgKzExMTQsMTAgQEAgc3RhdGljIGludCBqcGVnMjAwMF9kZWNvZGVfcGFja2V0 KEpwZWcyMDAwRGVjb2RlckNvbnRleHQgKnMsIEpwZWcyMDAwVGlsZSAqdGlsZSwKICAgICAgICAg ICAgICAgICByZXR1cm4gaW5jbDsKIAogICAgICAgICAgICAgaWYgKCFjYmxrLT5ucGFzc2VzKSB7 Ci0gICAgICAgICAgICAgICAgaW50IHYgPSBleHBuW2JhbmRub10gKyBudW1nYml0cyAtIDEgLQot ICAgICAgICAgICAgICAgICAgICAgICAgdGFnX3RyZWVfZGVjb2RlKHMsIHByZWMtPnplcm9iaXRz ICsgY2Jsa25vLCAxMDApOwotICAgICAgICAgICAgICAgIGlmICh2IDwgMCB8fCB2ID4gMzApIHsK KyAgICAgICAgICAgICAgICBpbnQgemJwID0gdGFnX3RyZWVfZGVjb2RlKHMsIHByZWMtPnplcm9i aXRzICsgY2Jsa25vLCAxMDApOworICAgICAgICAgICAgICAgIGludCB2ID0gZXhwbltiYW5kbm9d ICsgbnVtZ2JpdHMgLSAxIC0gemJwOworICAgICAgICAgICAgICAgIGNibGstPnpicCA9IHpicDsK KyAgICAgICAgICAgICAgICBpZiAoLyp2IDwgMCB8fCovIHYgPiAzMCkgewogICAgICAgICAgICAg ICAgICAgICBhdl9sb2cocy0+YXZjdHgsIEFWX0xPR19FUlJPUiwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICJub256ZXJvYml0cyAlZCBpbnZhbGlkIG9yIHVuc3VwcG9ydGVkXG4iLCB2KTsK ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7CkBAIC0xMTk0 LDkgKzExNjEsMjIgQEAgc3RhdGljIGludCBqcGVnMjAwMF9kZWNvZGVfcGFja2V0KEpwZWcyMDAw RGVjb2RlckNvbnRleHQgKnMsIEpwZWcyMDAwVGlsZSAqdGlsZSwKICAgICAgICAgICAgICAgICAg ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQot Ci0gICAgICAgICAgICAgICAgaWYgKChyZXQgPSBnZXRfYml0cyhzLCBhdl9sb2cyKG5ld3Bhc3Nl czEpICsgY2Jsay0+bGJsb2NrKSkgPCAwKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0 OworICAgICAgICAgICAgICAgIGlmIChuZXdwYXNzZXMgPiAxICYmIHMtPmlzX2h0ajJrKSB7Cisg ICAgICAgICAgICAgICAgICAgIC8vIHJldHJpZXZlIHBhc3MgbGVuZ3RocyBmb3IgZWFjaCBwYXNz CisgICAgICAgICAgICAgICAgICAgIC8vIGZvciBodGoyayBpbWFnZXMKKyAgICAgICAgICAgICAg ICAgICAgaW50IGV4dHJhX2JpdCA9IG5ld3Bhc3NlcyA+IDIgPyAxIDogMDsKKyAgICAgICAgICAg ICAgICAgICAgaWYgKChyZXQgPSBnZXRfYml0cyhzLCBsbGVuICsgMykpIDwgMCkKKyAgICAgICAg ICAgICAgICAgICAgICAgIHJldHVybiByZXQ7CisgICAgICAgICAgICAgICAgICAgIGNibGstPnBh c3NfbGVuZ3Roc1swXSA9IHJldDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKChyZXQgPSBnZXRf Yml0cyhzLCBsbGVuICsgMyArIGV4dHJhX2JpdCkpIDwgMCkKKyAgICAgICAgICAgICAgICAgICAg ICAgIHJldHVybiByZXQ7CisgICAgICAgICAgICAgICAgICAgIGNibGstPnBhc3NfbGVuZ3Roc1sx XSA9IHJldDsKKyAgICAgICAgICAgICAgICAgICAgcmV0ID0gY2Jsay0+cGFzc19sZW5ndGhzWzBd ICsgY2Jsay0+cGFzc19sZW5ndGhzWzFdOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAg ICAgICAgICAgICAgICAgIGlmICgocmV0ID0gZ2V0X2JpdHMocywgYXZfbG9nMihuZXdwYXNzZXMx KSArIGNibGstPmxibG9jaykpIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBy ZXQ7CisgICAgICAgICAgICAgICAgICAgIGNibGstPnBhc3NfbGVuZ3Roc1swXSA9IHJldDsKKyAg ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKHJldCA+IGNibGstPmRhdGFfYWxs b2NhdGVkKSB7CiAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBuZXdfc2l6ZSA9IEZGTUFYKDIq Y2Jsay0+ZGF0YV9hbGxvY2F0ZWQsIHJldCk7CiAgICAgICAgICAgICAgICAgICAgIHZvaWQgKm5l dyA9IGF2X3JlYWxsb2MoY2Jsay0+ZGF0YSwgbmV3X3NpemUpOwpAQCAtMTI5Nyw3ICsxMjc3LDcg QEAgc2tpcF9kYXRhOgogICAgIHJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IGpwZWcyMDAwX2Rl Y29kZV9wYWNrZXRzX3BvX2l0ZXJhdGlvbihKcGVnMjAwMERlY29kZXJDb250ZXh0ICpzLCBKcGVn MjAwMFRpbGUgKnRpbGUsCitzdGF0aWMgaW50IGpwZWcyMDAwX2RlY29kZV9wYWNrZXRzX3BvX2l0 ZXJhdGlvbihKcGVnMjAwMERlY29kZXJDb250ZXh0ICpzLCBKcGVnMjAwMERlY1RpbGUgKnRpbGUs CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgUlNwb2Ms IGludCBDU3BvYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGludCBMWUVwb2MsIGludCBSRXBvYywgaW50IENFcG9jLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaW50IFBwb2MsIGludCAqdHBfaW5kZXgpCkBAIC0xNTg4 LDcgKzE1NjgsNyBAQCBzdGF0aWMgaW50IGpwZWcyMDAwX2RlY29kZV9wYWNrZXRzX3BvX2l0ZXJh dGlvbihKcGVnMjAwMERlY29kZXJDb250ZXh0ICpzLCBKcGVnMgogICAgIHJldHVybiByZXQ7CiB9 CiAKLXN0YXRpYyBpbnQganBlZzIwMDBfZGVjb2RlX3BhY2tldHMoSnBlZzIwMDBEZWNvZGVyQ29u dGV4dCAqcywgSnBlZzIwMDBUaWxlICp0aWxlKQorc3RhdGljIGludCBqcGVnMjAwMF9kZWNvZGVf cGFja2V0cyhKcGVnMjAwMERlY29kZXJDb250ZXh0ICpzLCBKcGVnMjAwMERlY1RpbGUgKnRpbGUp CiB7CiAgICAgaW50IHJldCA9IEFWRVJST1JfQlVHOwogICAgIGludCBpOwpAQCAtMTg5Niw3ICsx ODc2LDcgQEAgc3RhdGljIHZvaWQgZGVxdWFudGl6YXRpb25faW50Xzk3KGludCB4LCBpbnQgeSwg SnBlZzIwMDBDYmxrICpjYmxrLAogICAgIH0KIH0KIAotc3RhdGljIGlubGluZSB2b2lkIG1jdF9k ZWNvZGUoSnBlZzIwMDBEZWNvZGVyQ29udGV4dCAqcywgSnBlZzIwMDBUaWxlICp0aWxlKQorc3Rh dGljIGlubGluZSB2b2lkIG1jdF9kZWNvZGUoSnBlZzIwMDBEZWNvZGVyQ29udGV4dCAqcywgSnBl ZzIwMDBEZWNUaWxlICp0aWxlKQogewogICAgIGludCBpLCBjc2l6ZSA9IDE7CiAgICAgdm9pZCAq c3JjWzNdOwpAQCAtMTkzNywyMCArMTkxNywyMiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcm9pX3Nj YWxlX2NibGsoSnBlZzIwMDBDYmxrICpjYmxrLAogICAgIH0KIH0KIAotc3RhdGljIGlubGluZSB2 b2lkIHRpbGVfY29kZWJsb2NrcyhKcGVnMjAwMERlY29kZXJDb250ZXh0ICpzLCBKcGVnMjAwMFRp bGUgKnRpbGUpCitzdGF0aWMgaW5saW5lIHZvaWQgdGlsZV9jb2RlYmxvY2tzKEpwZWcyMDAwRGVj b2RlckNvbnRleHQgKnMsIEpwZWcyMDAwRGVjVGlsZSAqdGlsZSkKIHsKICAgICBKcGVnMjAwMFQx Q29udGV4dCB0MTsKIAogICAgIGludCBjb21wbm8sIHJlc2xldmVsbm8sIGJhbmRubzsKKyAgICBp bnQgc3ViYmFuZG5vOwogCiAgICAgLyogTG9vcCBvbiB0aWxlIGNvbXBvbmVudHMgKi8KICAgICBm b3IgKGNvbXBubyA9IDA7IGNvbXBubyA8IHMtPm5jb21wb25lbnRzOyBjb21wbm8rKykgewotICAg ICAgICBKcGVnMjAwMENvbXBvbmVudCAqY29tcCAgICAgPSB0aWxlLT5jb21wICsgY29tcG5vOwot ICAgICAgICBKcGVnMjAwMENvZGluZ1N0eWxlICpjb2RzdHkgPSB0aWxlLT5jb2RzdHkgKyBjb21w bm87CisgICAgICAgIEpwZWcyMDAwQ29tcG9uZW50ICpjb21wICAgICAgICA9IHRpbGUtPmNvbXAg KyBjb21wbm87CisgICAgICAgIEpwZWcyMDAwQ29kaW5nU3R5bGUgKmNvZHN0eSAgICA9IHRpbGUt PmNvZHN0eSArIGNvbXBubzsKKyAgICAgICAgSnBlZzIwMDBRdWFudFN0eWxlICpxdWFudHN0eSAg ID0gdGlsZS0+cW50c3R5ICsgY29tcG5vOwogICAgICAgICBpbnQgY29kZWQgPSAwOworICAgICAg ICBzdWJiYW5kbm8gPSAwOwogCi0gICAgICAgIHQxLnN0cmlkZSA9ICgxPDxjb2RzdHktPmxvZzJf Y2Jsa193aWR0aCkgKyAyOwotCisgICAgICAgIHQxLnN0cmlkZSA9ICgxIDw8IGNvZHN0eS0+bG9n Ml9jYmxrX3dpZHRoKSArIDI7CiAgICAgICAgIC8qIExvb3Agb24gcmVzb2x1dGlvbiBsZXZlbHMg Ki8KICAgICAgICAgZm9yIChyZXNsZXZlbG5vID0gMDsgcmVzbGV2ZWxubyA8IGNvZHN0eS0+bnJl c2xldmVsczJkZWNvZGU7IHJlc2xldmVsbm8rKykgewogICAgICAgICAgICAgSnBlZzIwMDBSZXNM ZXZlbCAqcmxldmVsID0gY29tcC0+cmVzbGV2ZWwgKyByZXNsZXZlbG5vOwpAQCAtMTk3NSwxMiAr MTk1NywyMSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgdGlsZV9jb2RlYmxvY2tzKEpwZWcyMDAwRGVj b2RlckNvbnRleHQgKnMsIEpwZWcyMDAwVGlsZSAqdGlsZQogICAgICAgICAgICAgICAgICAgICBm b3IgKGNibGtubyA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgY2Jsa25vIDwgcHJlYy0+ bmJfY29kZWJsb2Nrc193aWR0aCAqIHByZWMtPm5iX2NvZGVibG9ja3NfaGVpZ2h0OwogICAgICAg ICAgICAgICAgICAgICAgICAgIGNibGtubysrKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBp bnQgeCwgeTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCB4LCB5LCByZXQsIG1hZ3A7CiAg ICAgICAgICAgICAgICAgICAgICAgICBKcGVnMjAwMENibGsgKmNibGsgPSBwcmVjLT5jYmxrICsg Y2Jsa25vOwotICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJldCA9IGRlY29kZV9jYmxrKHMs IGNvZHN0eSwgJnQxLCBjYmxrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y2Jsay0+Y29vcmRbMF1bMV0gLSBjYmxrLT5jb29yZFswXVswXSwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNibGstPmNvb3JkWzFdWzFdIC0gY2Jsay0+Y29vcmRbMV1bMF0s Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYW5kcG9zLCBjb21wLT5yb2lf c2hpZnQpOworICAgICAgICAgICAgICAgICAgICAgICAgLy8gQW5uZXggRSAoRXF1YXRpb24gRS0y KSBJU08vSUVDIDE1NDQ0LTE6MjAxOQorICAgICAgICAgICAgICAgICAgICAgICAgbWFncCA9IHF1 YW50c3R5LT5leHBuW3N1YmJhbmRub10gKyBxdWFudHN0eS0+bmd1YXJkYml0cyAtIDE7CisKKyAg ICAgICAgICAgICAgICAgICAgICAgIGlmIChzLT5pc19odGoyaykKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICByZXQgPSBkZWNvZGVfaHRqMmsocywgY29kc3R5LCAmdDEsIGNibGssCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNibGstPmNvb3JkWzBd WzFdIC0gY2Jsay0+Y29vcmRbMF1bMF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNibGstPmNvb3JkWzFdWzFdIC0gY2Jsay0+Y29vcmRbMV1bMF0sCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hZ3AsIGNvbXAt PnJvaV9zaGlmdCk7CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcmV0ID0gZGVjb2RlX2NibGsocywgY29kc3R5LCAmdDEsIGNibGssCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2Jsay0+Y29vcmRb MF1bMV0gLSBjYmxrLT5jb29yZFswXVswXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjYmxrLT5jb29yZFsxXVsxXSAtIGNibGstPmNvb3JkWzFdWzBdLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhbmRwb3MsIGNv bXAtPnJvaV9zaGlmdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmV0KQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvZGVkID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAg IGVsc2UKQEAgLTE5OTgsNiArMTk4OSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCB0aWxlX2NvZGVi bG9ja3MoSnBlZzIwMDBEZWNvZGVyQ29udGV4dCAqcywgSnBlZzIwMDBUaWxlICp0aWxlCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZGVxdWFudGl6YXRpb25faW50KHgsIHksIGNibGssIGNv bXAsICZ0MSwgYmFuZCk7CiAgICAgICAgICAgICAgICAgICAgfSAvKiBlbmQgY2JsayAqLwogICAg ICAgICAgICAgICAgIH0gLyplbmQgcHJlYyAqLworICAgICAgICAgICAgICAgIHN1YmJhbmRubys9 MTsKICAgICAgICAgICAgIH0gLyogZW5kIGJhbmQgKi8KICAgICAgICAgfSAvKiBlbmQgcmVzbGV2 ZWwgKi8KIApAQCAtMjAwOSw3ICsyMDAxLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIHRpbGVfY29k ZWJsb2NrcyhKcGVnMjAwMERlY29kZXJDb250ZXh0ICpzLCBKcGVnMjAwMFRpbGUgKnRpbGUKIH0K IAogI2RlZmluZSBXUklURV9GUkFNRShELCBQSVhFTCkgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgc3RhdGlj IGlubGluZSB2b2lkIHdyaXRlX2ZyYW1lXyAjIyBEKEpwZWcyMDAwRGVjb2RlckNvbnRleHQgKiBz LCBKcGVnMjAwMFRpbGUgKiB0aWxlLCAgICAgICAgIFwKKyAgICBzdGF0aWMgaW5saW5lIHZvaWQg d3JpdGVfZnJhbWVfICMjIEQoSnBlZzIwMDBEZWNvZGVyQ29udGV4dCAqIHMsIEpwZWcyMDAwRGVj VGlsZSAqIHRpbGUsICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBBVkZyYW1lICogcGljdHVyZSwgaW50IHByZWNpc2lvbikgICAgICAgICAgICAgICAg ICAgICAgICBcCiAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAg ICAgICAgY29uc3QgQVZQaXhGbXREZXNjcmlwdG9yICpwaXhkZXNjID0gYXZfcGl4X2ZtdF9kZXNj X2dldChzLT5hdmN0eC0+cGl4X2ZtdCk7ICAgICAgICAgICAgICAgXApAQCAtMjA4MCw3ICsyMDcy LDcgQEAgc3RhdGljIGludCBqcGVnMjAwMF9kZWNvZGVfdGlsZShBVkNvZGVjQ29udGV4dCAqYXZj dHgsIHZvaWQgKnRkLAogewogICAgIEpwZWcyMDAwRGVjb2RlckNvbnRleHQgKnMgPSBhdmN0eC0+ cHJpdl9kYXRhOwogICAgIEFWRnJhbWUgKnBpY3R1cmUgPSB0ZDsKLSAgICBKcGVnMjAwMFRpbGUg KnRpbGUgPSBzLT50aWxlICsgam9ibnI7CisgICAgSnBlZzIwMDBEZWNUaWxlICp0aWxlID0gcy0+ dGlsZSArIGpvYm5yOwogCiAgICAgdGlsZV9jb2RlYmxvY2tzKHMsIHRpbGUpOwogCkBAIC0yMTUy LDkgKzIxNDQsMzAgQEAgc3RhdGljIGludCBqcGVnMjAwMF9yZWFkX21haW5faGVhZGVycyhKcGVn MjAwMERlY29kZXJDb250ZXh0ICpzKQogICAgICAgICBpZiAobWFya2VyID49IDB4RkYzMCAmJiBt YXJrZXIgPD0gMHhGRjNGKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmIChtYXJr ZXIgPT0gSlBFRzIwMDBfU09EKSB7Ci0gICAgICAgICAgICBKcGVnMjAwMFRpbGUgKnRpbGU7Cisg ICAgICAgICAgICBKcGVnMjAwMERlY1RpbGUgKnRpbGU7CiAgICAgICAgICAgICBKcGVnMjAwMFRp bGVQYXJ0ICp0cDsKIAorICAgICAgICAgICAgaWYgKGNvZHN0eS0+Y2Jsa19zdHlsZSAmIEpQRUcy MDAwX0NUU1lfSFRKMktfRikgeworICAgICAgICAgICAgICAgIC8qIENvbmZpcm0gTWFya2VyIGNv bnN0cmFpbnMgYWNjb3JkaW5nIHRvIEFubmV4IEEgb2YgUmVjLiBJVFUtVCBULjgxNCB8IElTTy9J RUMgMTU0NDQtMTUgKi8KKyAgICAgICAgICAgICAgICAvLyBBLjIKKyAgICAgICAgICAgICAgICBp ZiAoIShzLT5hdmN0eC0+cHJvZmlsZSAmIEpQRUcyMDAwX1JTSVpfQklUKSkgeworICAgICAgICAg ICAgICAgICAgICBhdl9sb2cocy0+YXZjdHgsIEFWX0xPR19FUlJPUiwgIkJpdCAxNCBvZiBSc2l6 IGlzIG5vdCBlcXVhbCB0byAxXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFWRVJS T1JfSU5WQUxJRERBVEE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIC8vIEEu NQorICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNDsgaSsrKSB7CisgICAgICAg ICAgICAgICAgICAgIGlmIChzLT5yb2lfc2hpZnRbaV0gPiAzNykgeworICAgICAgICAgICAgICAg ICAgICAgICAgYXZfbG9nKHMtPmF2Y3R4LCBBVl9MT0dfRVJST1IsICJST0kgY29lZmZpY2llbnQg JWQgaXMgZ3JlYXRlciB0aGFuIDM3LlxuIiwgcy0+cm9pX3NoaWZ0W2ldKTsKKyAgICAgICAgICAg ICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOworICAgICAgICAgICAgICAg ICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIC8vIEEuMy4xCisgICAg ICAgICAgICAgICAgaWYgKCEocy0+cGNhcCAmICgxIDw8ICgxNykpKSkgeyAvLyAxNXRoIE1TQiBv ZiBQY2FwCisgICAgICAgICAgICAgICAgICAgIGF2X2xvZyhzLT5hdmN0eCwgQVZfTE9HX0VSUk9S LCAiQml0IDE1IG9mIFBjYXAgaXMgbm90IGVxdWFsIHRvIDFcbiIpOworICAgICAgICAgICAgICAg ICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKKyAgICAgICAgICAgICAgICB9CisgICAg ICAgICAgICB9CisKICAgICAgICAgICAgIGlmICghcy0+dGlsZSkgewogICAgICAgICAgICAgICAg IGF2X2xvZyhzLT5hdmN0eCwgQVZfTE9HX0VSUk9SLCAiTWlzc2luZyBTSVpcbiIpOwogICAgICAg ICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwpAQCAtMjIxMCw2ICsyMjIzLDMx IEBAIHN0YXRpYyBpbnQganBlZzIwMDBfcmVhZF9tYWluX2hlYWRlcnMoSnBlZzIwMDBEZWNvZGVy Q29udGV4dCAqcykKICAgICAgICAgICAgIGlmICghcy0+dGlsZSkKICAgICAgICAgICAgICAgICBz LT5udW1YdGlsZXMgPSBzLT5udW1ZdGlsZXMgPSAwOwogICAgICAgICAgICAgYnJlYWs7CisgICAg ICAgIGNhc2UgSlBFRzIwMDBfQ0FQOgorICAgICAgICAgICAgaWYgKCEocy0+bmNvbXBvbmVudHMp KSB7CisgICAgICAgICAgICAgICAgYXZfbG9nKHMtPmF2Y3R4LCBBVl9MT0dfRVJST1IsCisgICAg ICAgICAgICAgICAgICAgICAgICJDYW5ub3QgZGVjb2RlIGEgQ0FQIG1hcmtlciB3aXRob3V0IHBy ZXZpb3VzbHkgZGVjb2RpbmcgYSBTSVogbWFya2VyXG4iKTsKKyAgICAgICAgICAgICAgICByZXR1 cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8qCisg ICAgICAgICAgICAgKiBBY2NvcmRpbmcgdG8gdGhlIHNwZWMgZGVjb2RpbmcgYSBDQVAgbWFya2Vy IGlzIG1hbmRhdG9yeSBvbmx5IGlmIHRoZSAxNHRoIGJpdCBvZiBSc2l6IGlzIHNldCB0byAxLgor ICAgICAgICAgICAgICogVG8gaW5kaWNhdGUgdGhlIGRlY29kZXIgbmVlZHMgdG8gaW1wbGVtZW50 IGV4dGVuZGVkIGNhcGFiaWxpdGllcyB0byBkZWNvZGUgdGhlIGltYWdlLgorICAgICAgICAgICAg ICogSWYgdGhlIGJpdCBpcyBub3Qgc2V0LCB3ZSBza2lwIG92ZXIgcGFyc2luZyB0aGUgQ0FQIHNl Z21lbnQuCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIGlmIChzLT5hdmN0eC0+cHJvZmls ZSAmIEpQRUcyMDAwX1JTSVpfQklUKSB7CisgICAgICAgICAgICAgICAgaWYgKHMtPmluX3RpbGVf aGVhZGVycykgeworICAgICAgICAgICAgICAgICAgICBhdl9sb2cocy0+YXZjdHgsIEFWX0xPR19F UlJPUiwgIkNBUCBtYXJrZXIgY2FuIG9ubHkgYmUgaW4gbWFpbiBoZWFkZXIiKTsKKyAgICAgICAg ICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7CisgICAgICAgICAgICAgICAg fQorICAgICAgICAgICAgICAgIHJldCA9IGdldF9jYXAocywgbGVuKTsKKyAgICAgICAgICAgIH0g ZWxzZSB7CisgICAgICAgICAgICAgICAgYXZfbG9nKHMtPmF2Y3R4LCBBVl9MT0dfSU5GTywgIlNr aXBwaW5nIHBhcnNpbmcgb2YgdGhlIENBUCBzZWdtZW50Iik7CisgICAgICAgICAgICAgICAgYnl0 ZXN0cmVhbTJfc2tpcCgmKHMtPmcpLCBsZW4gLSAyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg ICAgIGJyZWFrOworICAgICAgICBjYXNlIEpQRUcyMDAwX0NQRjoKKyAgICAgICAgICAgIHJldCA9 IGdldF9jcGYocywgbGVuKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEpQRUcy MDAwX0NPQzoKICAgICAgICAgICAgIHJldCA9IGdldF9jb2MocywgY29kc3R5LCBwcm9wZXJ0aWVz KTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjMwMiw3ICsyMzQwLDcgQEAgc3RhdGljIGludCBq cGVnMjAwMF9yZWFkX2JpdHN0cmVhbV9wYWNrZXRzKEpwZWcyMDAwRGVjb2RlckNvbnRleHQgKnMp CiAgICAgaW50IHRpbGVubzsKIAogICAgIGZvciAodGlsZW5vID0gMDsgdGlsZW5vIDwgcy0+bnVt WHRpbGVzICogcy0+bnVtWXRpbGVzOyB0aWxlbm8rKykgewotICAgICAgICBKcGVnMjAwMFRpbGUg KnRpbGUgPSBzLT50aWxlICsgdGlsZW5vOworICAgICAgICBKcGVnMjAwMERlY1RpbGUgKnRpbGUg PSBzLT50aWxlICsgdGlsZW5vOwogCiAgICAgICAgIGlmICgocmV0ID0gaW5pdF90aWxlKHMsIHRp bGVubykpIDwgMCkKICAgICAgICAgICAgIHJldHVybiByZXQ7CmRpZmYgLS1naXQgYS9saWJhdmNv ZGVjL2pwZWcyMDAwaHRkZWMuYyBiL2xpYmF2Y29kZWMvanBlZzIwMDBodGRlYy5jCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmE5MjZlOWU5MzMKLS0tIC9kZXYvbnVsbAor KysgYi9saWJhdmNvZGVjL2pwZWcyMDAwaHRkZWMuYwpAQCAtMCwwICsxLDEyMjggQEAKKy8qCisg KiBKUEVHMjAwMCBIaWdoIFRocm91Z2hwdXQgYmxvY2sgZGVjb2RlcgorICogQ29weXJpZ2h0IChj KSAyMDIyIENhbGViIEV0ZW1lc2k8ZXRlbWVzaWNhbGViQGdtYWlsLmNvbT4KKyAqCisgKiBUaGlz IGZpbGUgaXMgcGFydCBvZiBGRm1wZWcuCisgKgorICogRkZtcGVnIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJs aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9u IDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv bi4KKyAqCisgKiBGRm1wZWcgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs IGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNl IGFsb25nIHdpdGggRkZtcGVnOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisg KiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0 b24sIE1BIDAyMTEwLTEzMDEgVVNBCisgKi8KKyNpbmNsdWRlICJqcGVnMjAwMGh0ZGVjLmgiCisj aW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisKKyNpbmNsdWRlICJieXRl c3RyZWFtLmgiCisKKyNkZWZpbmUgSjJLX1ExIDAKKworI2RlZmluZSBKMktfUTIgMQorCisjZGVm aW5lIEhUX1NISUZUX1NJR01BIDAKKyNkZWZpbmUgSFRfU0hJRlRfU0NBTiA0CisjZGVmaW5lIEhU X1NISUZUX1JFRiAzCisjZGVmaW5lIEhUX1NISUZUX1JFRl9JTkQgMgorLyoqCisgKiBAYnJpZWYg VGFibGUgMiBpbiBjbGF1c2UgNy4zLjMKKyAqLworY29uc3Qgc3RhdGljIHVpbnQ4X3QgTUVMX0Vb MTNdID0gezAsIDAsIDAsIDEsIDEsIDEsIDIsIDIsIDIsIDMsIDMsIDQsIDV9OworCisvKioKKyAq ICBHaXZlbiBhIHByZWNvbXB1dGVkIGMsIGNoZWNrcyB3aGV0aGVyIG4gJSBkID09IDAKKyAqLwor c3RhdGljIGF2X2Fsd2F5c19pbmxpbmUgdWludDMyX3QgaXNfZGl2aXNpYmxlKHVpbnQzMl90IG4s IHVpbnQ2NF90IGMpCit7CisgICAgcmV0dXJuIG4gKiBjIDw9IGMgLSAxOworfQorCisvKiBJbml0 aWFsaXplcnMgKi8KKworc3RhdGljIHZvaWQganBlZzIwMDBfaW5pdF96ZXJvKFN0YXRlVmFycyAq cykKK3sKKyAgICBzLT5iaXRzX2xlZnQgPSAwOworICAgIHMtPmJpdF9idWYgPSAwOworICAgIHMt PnRtcCA9IDA7CisgICAgcy0+Yml0cyA9IDA7CisgICAgcy0+cG9zID0gMDsKKyAgICBzLT5sYXN0 ID0gMDsKK30KKworc3RhdGljIHZvaWQganBlZzIwMDBfaW5pdF9tZWwoU3RhdGVWYXJzICpzLCB1 aW50MzJfdCBQY3VwKQoreworICAgIGpwZWcyMDAwX2luaXRfemVybyhzKTsKKyAgICBzLT5wb3Mg PSBQY3VwOworfQorCitzdGF0aWMgdm9pZCBqcGVnMjAwMF9pbml0X21hZ19yZWYoU3RhdGVWYXJz ICpzLCB1aW50MzJfdCBMcmVmKQoreworICAgIHMtPnBvcyA9IExyZWYgLSAyOworICAgIHMtPmJp dHMgPSAwOworICAgIHMtPmxhc3QgPSAweEZGOworICAgIHMtPnRtcCA9IDA7CisgICAgcy0+Yml0 c19sZWZ0ID0gMDsKKyAgICBzLT5iaXRfYnVmID0gMDsKK30KKworc3RhdGljIHZvaWQganBlZzIw MDBfaW5pdF9tZWxfZGVjb2RlcihNZWxEZWNvZGVyU3RhdGUgKm1lbF9zdGF0ZSkKK3sKKyAgICBt ZWxfc3RhdGUtPmsgPSAwOworICAgIG1lbF9zdGF0ZS0+cnVuID0gMDsKKyAgICBtZWxfc3RhdGUt Pm9uZSA9IDA7Cit9CisvKioKKyAqIEBicmllZiBSZWZpbGwgdGhlIGJ1ZmZlciBiYWNrd2FyZHMg aW4gbGl0dGxlIEVuZGlhbiB3aGlsZSBza2lwcGluZworICogb3ZlciBzdHVmZmluZyBiaXRzCisg KgorICogU3R1ZmZpbmcgYml0cyBhcmUgdGhvc2UgdGhhdCBhcHBlYXIgaW4gdGhlIHBvc2l0aW9u IG9mIGFueSBieXRlIHdob3NlCisgKiBMU0JzIGFyZSBhbGwgMSdzIGlmIHRoZSBsYXN0IGNvbnN1 bWVkIGJ5dGUgd2FzIGxhcmdlciB0aGFuIDB4OEYKKyAqLworc3RhdGljIGludCBqcGVnMjAwMF9i aXRidWZfcmVmaWxsX2JhY2t3YXJkcyhTdGF0ZVZhcnMgKmJ1ZmZlciwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqYXJyYXkpCit7Cisg ICAgdWludDY0X3QgdG1wID0gMDsKKyAgICBpbnQzMl90IHBvc2l0aW9uID0gYnVmZmVyLT5wb3M7 CisgICAgdWludDMyX3QgbmV3X2JpdHMgPSAzMjsKKyAgICB1aW50MzJfdCBtYXNrOworCisgICAg aWYgKGJ1ZmZlci0+Yml0c19sZWZ0ID4gMzIpCisgICAgICAgIHJldHVybiAwOyAvLyBlbm91Z2gg ZGF0YSwgbm8gbmVlZCB0byBwdWxsIGluIG1vcmUgYml0cworCisgICAgLyoKKyAgICAgKiBXZSBh cmUgcmVhZGluZyBiaXRzIGZyb20gZW5kIHRvIHN0YXJ0LCBhbmQgd2UgbmVlZCB0byBoYW5kbGUg dGhlbSBpbiBMRS4KKyAgICAgKiB0aGVyZWZvcmUsIGlmIHdlIHJlYWQgYnl0ZXMgQUJDRCwgd2Ug bmVlZCB0byBjb252ZXJ0CisgICAgICogdGhlbSB0byBEQ0JBLCBidXQgdGhlIGJpdHN0cmVhbSBp cyBjb25zdHJ1Y3RlZCBpbiBzdWNoIGEgd2F5IHRoYXQgaXQgaXMKKyAgICAgKiBCRSB3aGVuIHJl YWRpbmcgZnJvbSBiYWNrIHRvIGZyb250LHNvIHdlIG5lZWQgdG8gc3dhcCBieXRlcworICAgICAq IGJ1dCB0aGlzIGRvZXNuJ3Qgd29yayB3aGVuIHBvc2l0aW9uIGlzIGxlc3MgdGhhbiAzLAorICAg ICAqIHdlIGVuZCB1cCByZWFkaW5nIGJpdHMgZnJvbSB0aGUgTUVMIGJ5dGUtc3RyZWFtIHdoaWNo CisgICAgICogaXMgYSByZWNpcGUgZm9yIHNsZWVwbGVzcyBuaWdodHMuCisgICAgICoKKyAgICAg KiBTbyB0aGUgdHJpY2sgaXMgdG8gYnJhbmNobGVzc2x5IHJlYWQgYW5kIG1hc2sKKyAgICAgKiBk ZXBlbmRpbmcgb24gd2hhdGV2ZXIgd2FzIHRoZSBpbml0aWFsIHBvc2l0aW9uLAorICAgICAqIHRo ZSBtYXNrIGlzIHNpbXBseSBlaXRoZXIgMzIgYml0cywgMjQgYml0cyAsOCBiaXRzIG9yIDAgYml0 cy4KKyAgICAgKiBkZXBlbmRpbmcgb24gaG93IG1hbnkgYnl0ZXMgYXJlIGF2YWlsYWJsZSwgd2l0 aCB0aGlzLCB3ZSBkb24ndAorICAgICAqIHJlYWQgcGFzdCB0aGUgZW5kIG9mIHRoZSBidWZmZXIs d2UgbWFzaworICAgICAqIGJpdHMgd2UgYWxyZWFkeSByZWFkIGVuc3VyaW5nIHdlIGRvbid0IHJl YWQgdHdpY2UuCisgICAgICogYW5kIHdlIGNhbiBkbyBpdCBicmFuY2hsZXNzbHkgd2l0aG91dCBj aGVja2luZyBmb3IgcG9zaXRpb25zLgorICAgICAqCisgICAgICogV2UgbmVlZCB0byB3YXRjaCBv dXQgZm9yIG5lZ2F0aXZlIHNoaWZ0IHZhbHVlcyB3aGljaCBhcmUgVUIgaW4gQyBoZW5jZQorICAg ICAqIHRoZSBNQVggZGVjbGFyYXRpdmUuCisgICAgICovCisKKyAgICBwb3NpdGlvbiAtPSA0Owor ICAgIG1hc2sgPSAoVUlOVDY0X0MoMSkgPDwgKEZGTUlOKDQsIEZGTUFYKGJ1ZmZlci0+cG9zLCAw KSkpICogOCkgLSAxOworICAgIHRtcCA9IChhcnJheVtwb3NpdGlvbiArIDFdIDw8IDI0KSArIChh cnJheVtwb3NpdGlvbiArIDJdIDw8IDE2KSArIChhcnJheVtwb3NpdGlvbiArIDNdIDw8IDgpICsg YXJyYXlbcG9zaXRpb24gKyA0XTsKKyAgICB0bXAgJj0gbWFzazsKKworICAgIC8vIEJyYW5jaGxl c3NseSB1bnN0dWZmICBiaXRzCisKKyAgICAvLyBsb2FkIHRlbXBvcmFyeSBieXRlLCB3aGljaCBw cmVjZWVkcyB0aGUgcG9zaXRpb24gd2UKKyAgICAvLyBjdXJyZW50bHkgYXQsIHRvIGVuc3VyZSB0 aGF0IHdlIGNhbiBhbHNvIHVuLXN0dWZmIGlmIHRoZQorICAgIC8vIHN0dWZmZWQgYml0IGlzIHRo ZSBib3R0b20gbW9zdCBiaXRzCisgICAgdG1wIDw8PSA4OworICAgIHRtcCB8PSBhcnJheVtidWZm ZXItPnBvcyArIDFdOworCisgICAgaWYgKCh0bXAgJiAweDdGRkYwMDAwMDApID4gMHg3RjhGMDAw MDAwKSB7CisgICAgICAgIHRtcCAmPSAweDdGRkZGRkZGRkY7CisgICAgICAgIG5ld19iaXRzLS07 CisgICAgfQorICAgIGlmICgodG1wICYgMHgwMDdGRkYwMDAwKSA+IDB4MDA3RjhGMDAwMCkgewor ICAgICAgICB0bXAgPSAodG1wICYgMHgwMDdGRkZGRkZGKSArICgodG1wICYgMHhGRjAwMDAwMDAw KSA+PiAxKTsKKyAgICAgICAgbmV3X2JpdHMtLTsKKyAgICB9CisgICAgaWYgKCh0bXAgJiAweDAw MDA3RkZGMDApID4gMHgwMDAwN0Y4RjAwKSB7CisgICAgICAgIHRtcCA9ICh0bXAgJiAweDAwMDA3 RkZGRkYpICsgKCh0bXAgJiAweEZGRkYwMDAwMDApID4+IDEpOworICAgICAgICBuZXdfYml0cy0t OworICAgIH0KKyAgICBpZiAoKHRtcCAmIDB4MDAwMDAwN0ZGRikgPiAweDAwMDAwMDdGOEYpIHsK KyAgICAgICAgdG1wID0gKHRtcCAmIDB4MDAwMDAwN0ZGRikgKyAoKHRtcCAmIDB4RkZGRkZGMDAw MCkgPj4gMSk7CisgICAgICAgIG5ld19iaXRzLS07CisgICAgfQorICAgIC8vIHJlbW92ZSB0ZW1w b3JhcnkgYnl0ZSBsb2FkZWQuCisgICAgdG1wID4+PSA4OworCisgICAgLy8gQWRkIGJpdHMgdG8g dGhlIE1TQiBvZiB0aGUgYml0IGJ1ZmZlcgorICAgIGJ1ZmZlci0+Yml0X2J1ZiB8PSB0bXAgPDwg YnVmZmVyLT5iaXRzX2xlZnQ7CisgICAgYnVmZmVyLT5iaXRzX2xlZnQgKz0gbmV3X2JpdHM7Cisg ICAgYnVmZmVyLT5wb3MgPSBGRk1BWCgwLCBwb3NpdGlvbik7CisgICAgcmV0dXJuIDA7Cit9Cisv KioKKyAqIEBicmllZiBSZWZpbGwgdGhlIGJpdC1idWZmZXIgcmVhZGluZyBuZXcgYml0cyBnb2lu ZyBmb3J3YXJkCisgKiBpbiB0aGUgc3RyZWFtIHdoaWxlIHNraXBwaW5nIG92ZXIgc3R1ZmZlZCBi aXRzLgorICovCitzdGF0aWMgdm9pZCBqcGVnMjAwMF9iaXRidWZfcmVmaWxsX2ZvcndhcmQoU3Rh dGVWYXJzICpidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IHVpbnQ4X3QgKmFycmF5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB1aW50MzJfdCBsZW5ndGgpCit7CisgICAgd2hpbGUgKGJ1ZmZlci0+Yml0 c19sZWZ0IDwgMzIpIHsKKyAgICAgICAgYnVmZmVyLT50bXAgPSAweEZGOworICAgICAgICBidWZm ZXItPmJpdHMgPSAoYnVmZmVyLT5sYXN0ID09IDB4RkYpID8gNyA6IDg7CisgICAgICAgIGlmIChi dWZmZXItPnBvcyA8IGxlbmd0aCkgeworICAgICAgICAgICAgYnVmZmVyLT50bXAgPSBhcnJheVti dWZmZXItPnBvc107CisgICAgICAgICAgICBidWZmZXItPnBvcyArPSAxOworICAgICAgICAgICAg YnVmZmVyLT5sYXN0ID0gYnVmZmVyLT50bXA7CisgICAgICAgIH0KKyAgICAgICAgYnVmZmVyLT5i aXRfYnVmIHw9ICgodWludDY0X3QpYnVmZmVyLT50bXApIDw8IGJ1ZmZlci0+Yml0c19sZWZ0Owor ICAgICAgICBidWZmZXItPmJpdHNfbGVmdCArPSBidWZmZXItPmJpdHM7CisgICAgfQorfQorCisv KioKKyAqIEBicmllZiBEcm9wcyBiaXRzIGZyb20gbG93ZXIgYml0cyBpbiB0aGUgYml0IGJ1ZmZl cgorICoKKyAqIEBwYXJhbSBidWY6IFN0cnVjdCBjb250YWluaW5nIGJpdCBidWZmZXJzCisgKiBA cGFyYW0gbmJpdHM6IE51bWJlciBvZiBiaXRzIHRvIHJlbW92ZS4KKyAqLworc3RhdGljIGF2X2Fs d2F5c19pbmxpbmUgdm9pZCBqcGVnMjAwMF9iaXRidWZfZHJvcF9iaXRzX2xzYihTdGF0ZVZhcnMg KmJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdWludDhfdCBuYml0cykKK3sKKyAgICBpZiAoYnVmLT5iaXRzX2xlZnQgPCBuYml0 cykgeworICAgICAgICBhdl9sb2coTlVMTCwgQVZfTE9HX0VSUk9SLCAiSW52YWxpZCBiaXQgcmVh ZCBvZiAlZCwgYml0cyBpbiBidWZmZXIgYXJlICVkXG4iLCBuYml0cywgYnVmLT5iaXRzX2xlZnQp OworICAgICAgICBhdl9hc3NlcnQwKDApOworICAgIH0KKyAgICBidWYtPmJpdF9idWYgPj49IG5i aXRzOworICAgIGJ1Zi0+Yml0c19sZWZ0IC09IG5iaXRzOworfQorLyoqCisgKiBAYnJpZWYgIEdl dCBiaXRzIGZyb20gdGhlIGJpdCBidWZmZXIgcmVhZGluZyB0aGVtCisgKiBmcm9tIHRoZSBsZWFz dCBzaWduaWZpY2FudCBiaXRzIG1vdmluZyB0byB0aGUgbW9zdCBzaWduaWZpY2FudCBiaXRzLgor ICoKKyAqIEluIGNhc2UgdGhlcmUgYXJlIGZld2VyIGJpdHMsIHJlZmlsbCBmcm9tIGBidWZgIG1v dmluZyBiYWNrd2FyZHMuCisgKi8KK3N0YXRpYyBhdl9hbHdheXNfaW5saW5lIHVpbnQ2NF90IGpw ZWcyMDAwX2JpdGJ1Zl9nZXRfYml0c19sc2IoCisgICAgU3RhdGVWYXJzICpiaXRfc3RyZWFtLCB1 aW50OF90IG5iaXRzLCBjb25zdCB1aW50OF90ICpidWYpCit7CisgICAgdWludDY0X3QgYml0czsK KyAgICB1aW50NjRfdCBtYXNrID0gKDF1bGwgPDwgbmJpdHMpIC0gMTsKKyAgICBpZiAoYml0X3N0 cmVhbS0+Yml0c19sZWZ0IDwgbmJpdHMpCisgICAgICAgIGpwZWcyMDAwX2JpdGJ1Zl9yZWZpbGxf YmFja3dhcmRzKGJpdF9zdHJlYW0sIGJ1Zik7CisgICAgYml0cyA9IGJpdF9zdHJlYW0tPmJpdF9i dWYgJiBtYXNrOworICAgIGpwZWcyMDAwX2JpdGJ1Zl9kcm9wX2JpdHNfbHNiKGJpdF9zdHJlYW0s IG5iaXRzKTsKKyAgICByZXR1cm4gYml0czsKK30KKy8qKgorICogQGJyaWVmIEdldCBiaXRzIGZy b20gdGhlIGJpdCBidWZmZXIgcmVhZGluZyB0aGVtCisgKiBmcm9tIHRoZSBsZWFzdCBzaWduaWZp Y2FudCBiaXRzIG1vdmluZyB0byB0aGUgbW9zdCBzaWduaWZpY2FudCBiaXRzCisgKgorICogSW4g Y2FzZSB0aGVyZSBhcmUgZmV3ZXIgYml0cywgcmVmaWxsIGZyb20gYGJ1ZmAgbW92aW5nIGZvcndh cmQKKyAqLworc3RhdGljIGF2X2Fsd2F5c19pbmxpbmUgdWludDY0X3QganBlZzIwMDBfYml0YnVm X2dldF9iaXRzX2xzYl9mb3J3YXJkKAorICAgIFN0YXRlVmFycyAqYml0X3N0cmVhbSwgdWludDhf dCBuYml0cywgY29uc3QgdWludDhfdCAqYnVmLCB1aW50MzJfdCBsZW5ndGgpCit7CisgICAgdWlu dDY0X3QgYml0czsKKyAgICB1aW50NjRfdCBtYXNrID0gKDF1bGwgPDwgbmJpdHMpIC0gMTsKKyAg ICBpZiAoYml0X3N0cmVhbS0+Yml0c19sZWZ0IDw9IG5iaXRzKQorICAgICAgICBqcGVnMjAwMF9i aXRidWZfcmVmaWxsX2ZvcndhcmQoYml0X3N0cmVhbSwgYnVmLCBsZW5ndGgpOworICAgIGJpdHMg PSBiaXRfc3RyZWFtLT5iaXRfYnVmICYgbWFzazsKKyAgICBqcGVnMjAwMF9iaXRidWZfZHJvcF9i aXRzX2xzYihiaXRfc3RyZWFtLCBuYml0cyk7CisgICAgcmV0dXJuIGJpdHM7Cit9CisvKioKKyAq IEBicmllZiBMb29rIGFoZWFkIGJpdCBidWZmZXIgd2l0aG91dCBkaXNjYXJkaW5nIGJpdHMKKyAq Lworc3RhdGljIGF2X2Fsd2F5c19pbmxpbmUgdWludDY0X3QKK2pwZWcyMDAwX2JpdGJ1Zl9wZWVr X2JpdHNfbHNiKFN0YXRlVmFycyAqc3RyZWFtLCB1aW50OF90IG5iaXRzKQoreworICAgIHVpbnQ2 NF90IG1hc2sgPSAoMXVsbCA8PCBuYml0cykgLSAxOworCisgICAgcmV0dXJuIHN0cmVhbS0+Yml0 X2J1ZiAmIG1hc2s7Cit9CisKKy8qKgorICogVmFyaWFibGUgTGVuZ3RoIERlY29kaW5nIFJvdXRp bmVzCisgKi8KK3N0YXRpYyB2b2lkIGpwZWcyMDAwX2luaXRfdmxjKFN0YXRlVmFycyAqcywgdWlu dDMyX3QgTGN1cCwgdWludDMyX3QgUGN1cCwgY29uc3QgdWludDhfdCAqRGN1cCkKK3sKKyAgICBz LT5iaXRzX2xlZnQgPSAwOworICAgIHMtPmJpdF9idWYgPSAwOworICAgIHMtPnBvcyA9IExjdXAg LSAyIC0gUGN1cDsKKyAgICBzLT5sYXN0ID0gRGN1cFtMY3VwIC0gMl07CisgICAgcy0+dG1wID0g KHMtPmxhc3QpID4+IDQ7CisgICAgcy0+Yml0cyA9ICgocy0+dG1wICYgNykgPCA3KSA/IDQgOiAz OworICAgIGpwZWcyMDAwX2JpdGJ1Zl9yZWZpbGxfYmFja3dhcmRzKHMsIERjdXAgKyBQY3VwKTsK KyAgICBqcGVnMjAwMF9iaXRidWZfZHJvcF9iaXRzX2xzYihzLCA0KTsKK30KKy8qKgorICogRGVj b2RlIHByZWZpeCBjb2RlcyBmb3IgVkxDIHNlZ21lbnQuCisgKi8KK3N0YXRpYyBpbnQganBlZzIw MDBfZGVjb2RlX2N0eF92bGMoSnBlZzIwMDBEZWNvZGVyQ29udGV4dCAqcywKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgU3RhdGVWYXJzICp2bGNfc3RyZWFtLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50MTZfdCAqdGFibGUsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKkRjdXAsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKnNpZ19wYXQsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKnJlc19vZmYsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKmVtYl9wYXRfaywKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqZW1iX3BhdF8xLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB1aW50OF90IHBvcywKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdWludDMyX3QgUGN1cCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdWludDE2X3QgY29udGV4dCkKK3sKKyAgICAvLyBEZXNjcmliZWQgaW4gY2xhdXNlIDcu My41CisgICAgdWludDMyX3QgdmFsdWU7CisgICAgdWludDhfdCBsZW47CisgICAgdWludDY0X3Qg aW5kZXg7CisgICAgdWludDY0X3QgY29kZV93b3JkOworCisgICAganBlZzIwMDBfYml0YnVmX3Jl ZmlsbF9iYWNrd2FyZHModmxjX3N0cmVhbSwgRGN1cCArIFBjdXApOworCisgICAgY29kZV93b3Jk ID0gdmxjX3N0cmVhbS0+Yml0X2J1ZiAmIDB4N2Y7CisgICAgaW5kZXggPSBjb2RlX3dvcmQgKyAo Y29udGV4dCA8PCA3KTsKKworICAgIC8vIGRlY29kZSB0YWJsZSBoYXMgMTAyNCBlbnRyaWVzIHNv IGVuc3VyZSBhcnJheSBhY2Nlc3MgaXMgaW4gYm91bmRzCisgICAgYXZfYXNzZXJ0MChpbmRleCA8 IDEwMjQpOworCisgICAgdmFsdWUgPSB0YWJsZVtpbmRleF07CisKKyAgICBsZW4gPSAodmFsdWUg JiAweDAwMEYpID4+IDE7CisKKyAgICByZXNfb2ZmW3Bvc10gPSAodWludDhfdCkodmFsdWUgJiAx KTsKKyAgICBzaWdfcGF0W3Bvc10gPSAodWludDhfdCkoKHZhbHVlICYgMHgwMEYwKSA+PiA0KTsK KyAgICBlbWJfcGF0X2tbcG9zXSA9ICh1aW50OF90KSgodmFsdWUgJiAweDBGMDApID4+IDgpOwor ICAgIGVtYl9wYXRfMVtwb3NdID0gKHVpbnQ4X3QpKCh2YWx1ZSAmIDB4RjAwMCkgPj4gMTIpOwor ICAgIGpwZWcyMDAwX2JpdGJ1Zl9kcm9wX2JpdHNfbHNiKHZsY19zdHJlYW0sIGxlbik7CisgICAg cmV0dXJuIDA7Cit9CisvKioKKyAqIEBicmllZiBEZWNvZGUgdmFyaWFibGUgbGVuZ3RoIHUtdmxj IHByZWZpeAorICovCitzdGF0aWMgYXZfYWx3YXlzX2lubGluZSB1aW50OF90Cit2bGNfZGVjb2Rl X3VfcHJlZml4KFN0YXRlVmFycyAqdmxjX3N0cmVhbSwgY29uc3QgdWludDhfdCAqcmVmaWxsX2Fy cmF5KQoreworICAgIC8vIGNsYXVzZSA3LjMuNgorICAgIC8vIHByb2NlZHVyZSA6IGRlY29kZVVQ cmVmaXguCisKKyAgICB1aW50OF90IGJpdHM7CisgICAgaWYgKHZsY19zdHJlYW0tPmJpdHNfbGVm dCA8IDMpCisgICAgICAgIGpwZWcyMDAwX2JpdGJ1Zl9yZWZpbGxfYmFja3dhcmRzKHZsY19zdHJl YW0sIHJlZmlsbF9hcnJheSk7CisKKyAgICBiaXRzID0ganBlZzIwMDBfYml0YnVmX3BlZWtfYml0 c19sc2IodmxjX3N0cmVhbSwgMyk7CisKKyAgICBpZiAoYml0cyAmIDBiMSkgeworICAgICAgICBq cGVnMjAwMF9iaXRidWZfZHJvcF9iaXRzX2xzYih2bGNfc3RyZWFtLCAxKTsKKyAgICAgICAgcmV0 dXJuIDE7CisgICAgfQorICAgIGlmIChiaXRzICYgMGIxMCkgeworICAgICAgICBqcGVnMjAwMF9i aXRidWZfZHJvcF9iaXRzX2xzYih2bGNfc3RyZWFtLCAyKTsKKyAgICAgICAgcmV0dXJuIDI7Cisg ICAgfQorICAgIGpwZWcyMDAwX2JpdGJ1Zl9kcm9wX2JpdHNfbHNiKHZsY19zdHJlYW0sIDMpOwor CisgICAgaWYgKGJpdHMgJiAwYjEwMCkKKyAgICAgICAgcmV0dXJuIDM7CisgICAgcmV0dXJuIDU7 Cit9CisvKioKKyAqIEBicmllZiBEZWNvZGUgdmFyaWFibGUgbGVuZ3RoIHUtdmxjIHN1ZmZpeAor ICovCitzdGF0aWMgYXZfYWx3YXlzX2lubGluZSB1aW50OF90IHZsY19kZWNvZGVfdV9zdWZmaXgo CisgICAgU3RhdGVWYXJzICp2bGNfc3RyZWFtLCB1aW50OF90IHN1ZmZpeCwgY29uc3QgdWludDhf dCAqcmVmaWxsX2FycmF5KQoreworICAgIC8vIGNsYXVzZSA3LjMuNgorICAgIC8vIHByb2NlZHVy ZTogZGVjb2RlVVN1ZmZpeAorCisgICAgdWludDhfdCBiaXRzOworICAgIGlmIChzdWZmaXggPCAz KQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmICh2bGNfc3RyZWFtLT5iaXRzX2xlZnQgPCA1 KQorICAgICAgICBqcGVnMjAwMF9iaXRidWZfcmVmaWxsX2JhY2t3YXJkcyh2bGNfc3RyZWFtLCBy ZWZpbGxfYXJyYXkpOworCisgICAgYml0cyA9IGpwZWcyMDAwX2JpdGJ1Zl9wZWVrX2JpdHNfbHNi KHZsY19zdHJlYW0sIDUpOworCisgICAgaWYgKHN1ZmZpeCA9PSAzKSB7CisgICAgICAgIGpwZWcy MDAwX2JpdGJ1Zl9kcm9wX2JpdHNfbHNiKHZsY19zdHJlYW0sIDEpOworICAgICAgICByZXR1cm4g Yml0cyAmIDE7CisgICAgfQorICAgIGpwZWcyMDAwX2JpdGJ1Zl9kcm9wX2JpdHNfbHNiKHZsY19z dHJlYW0sIDUpOworCisgICAgcmV0dXJuIGJpdHM7Cit9CisKKy8qKgorICogQGJyaWVmIERlY29k ZSB2YXJpYWJsZSBsZW5ndGggdS12bGMgc3VmZml4CisgKi8KK3N0YXRpYyBhdl9hbHdheXNfaW5s aW5lIHVpbnQ4X3QgdmxjX2RlY29kZV91X2V4dGVuc2lvbigKKyAgICBTdGF0ZVZhcnMgKnZsY19z dHJlYW0sIHVpbnQ4X3Qgc3VmZml4LCBjb25zdCB1aW50OF90ICpyZWZpbGxfYXJyYXkpCit7Cisg ICAgLy8gY2xhdXNlIDcuMy42CisgICAgLy8gcHJvY2VkdXJlIGRlY29kZVVFeHRlbnNpb24uCisg ICAgaWYgKHN1ZmZpeCA8IDI4KQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4ganBlZzIw MDBfYml0YnVmX2dldF9iaXRzX2xzYih2bGNfc3RyZWFtLCA0LCByZWZpbGxfYXJyYXkpOworfQor CisvKioKKyAqIE1hZ25pdHVkZSBhbmQgU2lnbiBkZWNvZGUgcHJvY2VkdXJlcworKi8KKworc3Rh dGljIGludDMyX3QganBlZzIwMDBfZGVjb2RlX21hZ19zZ24oU3RhdGVWYXJzICptYWdfc2duX3N0 cmVhbSwgaW50MzJfdCBtX24sIGludDMyX3QgaV9uLCBjb25zdCB1aW50OF90ICpidWYsIHVpbnQz Ml90IGxlbmd0aCkKK3sKKyAgICAvLyBjbGF1c2UgNy4zLjgKKyAgICAvLyBwcm9jZWR1cmU6IGRl Y29kZU1hZ1NnblZhbHVlCisKKyAgICBpbnQzMl90IHZhbCA9IDA7CisgICAgaWYgKG1fbiA+IDAp IHsKKyAgICAgICAgdmFsID0ganBlZzIwMDBfYml0YnVmX2dldF9iaXRzX2xzYl9mb3J3YXJkKG1h Z19zZ25fc3RyZWFtLCBtX24sIGJ1ZiwgbGVuZ3RoKTsKKyAgICAgICAgdmFsICs9IChpX24gPDwg bV9uKTsKKyAgICB9CisgICAgcmV0dXJuIHZhbDsKK30KKworc3RhdGljIGF2X2Fsd2F5c19pbmxp bmUgdm9pZAorcmVjb3Zlcl9tYWdfc2duKFN0YXRlVmFycyAqbWFnX3NnbiwgdWludDhfdCBwb3Ms IHVpbnQxNl90IHEsIGludDMyX3QgbV9uWzJdLCBpbnQzMl90IGtub3duXzFbMl0sIGNvbnN0IHVp bnQ4X3QgZW1iX3BhdF8xWzJdLCBpbnQzMl90IHZbMl1bNF0sIGludDMyX3QgbVsyXVs0XSwgdWlu dDhfdCAqRSwgdWludDMyX3QgKm11X24sIGNvbnN0IHVpbnQ4X3QgKkRjdXAsIHVpbnQzMl90IFBj dXAsIHVpbnQzMl90IHBMU0IpCit7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA0OyBpKyspIHsK KyAgICAgICAgaW50MzJfdCBuID0gNCAqIHEgKyBpOworICAgICAgICBtX25bcG9zXSA9IG1bcG9z XVtpXTsKKyAgICAgICAga25vd25fMVtwb3NdID0gKGVtYl9wYXRfMVtwb3NdID4+IGkpICYgMTsK KyAgICAgICAgdltwb3NdW2ldID0ganBlZzIwMDBfZGVjb2RlX21hZ19zZ24obWFnX3NnbiwgbV9u W3Bvc10sIGtub3duXzFbcG9zXSwgRGN1cCwgUGN1cCk7CisgICAgICAgIGlmIChtX25bcG9zXSAh PSAwKSB7CisgICAgICAgICAgICBFW25dID0gMzIgLSBmZl9jbHoodltwb3NdW2ldIHwgMSk7Cisg ICAgICAgICAgICBtdV9uW25dID0gKHZbcG9zXVtpXSA+PiAxKSArIDE7CisgICAgICAgICAgICBt dV9uW25dIDw8PSBwTFNCOworICAgICAgICAgICAgbXVfbltuXSB8PSAoKHVpbnQzMl90KSh2W3Bv c11baV0gJiAxKSkgPDwgMzE7IC8vIHNpZ24gYml0LgorICAgICAgICB9CisgICAgfQorfQorCisv Kk1FTCBzdHJlYW0gZGVjb2RpbmcgcHJvY2VkdXJlKi8KK3N0YXRpYyBpbnQganBlZzIwMDBfaW1w b3J0X2JpdChTdGF0ZVZhcnMgKnN0cmVhbSwgY29uc3QgdWludDhfdCAqYXJyYXksIHVpbnQzMl90 IGxlbmd0aCkKK3sKKyAgICBpZiAoc3RyZWFtLT5iaXRzID09IDApIHsKKyAgICAgICAgc3RyZWFt LT5iaXRzID0gKHN0cmVhbS0+dG1wID09IDB4RkYpID8gNyA6IDg7CisgICAgICAgIGlmIChzdHJl YW0tPnBvcyA8IGxlbmd0aCkgeworICAgICAgICAgICAgc3RyZWFtLT50bXAgPSBhcnJheVtzdHJl YW0tPnBvc107CisgICAgICAgICAgICBzdHJlYW0tPnBvcyArPSAxOworICAgICAgICB9IGVsc2UK KyAgICAgICAgICAgIHN0cmVhbS0+dG1wID0gMHhGRjsKKyAgICB9CisgICAgc3RyZWFtLT5iaXRz IC09IDE7CisgICAgcmV0dXJuIChzdHJlYW0tPnRtcCA+PiBzdHJlYW0tPmJpdHMpICYgMTsKK30K Kworc3RhdGljIGludCBqcGVnMjAwMF9kZWNvZGVfbWVsX3N5bShNZWxEZWNvZGVyU3RhdGUgKm1l bF9zdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdGVWYXJzICpt ZWxfc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50 OF90ICpEY3VwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBM Y3VwKQoreworCisgICAgaWYgKG1lbF9zdGF0ZS0+cnVuID09IDAgJiYgbWVsX3N0YXRlLT5vbmUg PT0gMCkgeworICAgICAgICB1aW50OF90IGV2YWw7CisgICAgICAgIHVpbnQ4X3QgYml0OworCisg ICAgICAgIGV2YWwgPSBNRUxfRVttZWxfc3RhdGUtPmtdOworICAgICAgICBiaXQgPSBqcGVnMjAw MF9pbXBvcnRfYml0KG1lbF9zdHJlYW0sIERjdXAsIExjdXApOworICAgICAgICBpZiAoYml0ID09 IDEpIHsKKyAgICAgICAgICAgIG1lbF9zdGF0ZS0+cnVuID0gMSA8PCBldmFsOworICAgICAgICAg ICAgbWVsX3N0YXRlLT5rID0gRkZNSU4oMTIsIG1lbF9zdGF0ZS0+ayArIDEpOworICAgICAgICB9 IGVsc2UgeworICAgICAgICAgICAgbWVsX3N0YXRlLT5ydW4gPSAwOworICAgICAgICAgICAgd2hp bGUgKGV2YWwgPiAwKSB7CisgICAgICAgICAgICAgICAgYml0ID0ganBlZzIwMDBfaW1wb3J0X2Jp dChtZWxfc3RyZWFtLCBEY3VwLCBMY3VwKTsKKyAgICAgICAgICAgICAgICBtZWxfc3RhdGUtPnJ1 biA9ICgyICogKG1lbF9zdGF0ZS0+cnVuKSkgKyBiaXQ7CisgICAgICAgICAgICAgICAgZXZhbCAt PSAxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbWVsX3N0YXRlLT5rID0gRkZNQVgoMCwg bWVsX3N0YXRlLT5rIC0gMSk7CisgICAgICAgICAgICBtZWxfc3RhdGUtPm9uZSA9IDE7CisgICAg ICAgIH0KKyAgICB9CisgICAgaWYgKG1lbF9zdGF0ZS0+cnVuID4gMCkgeworICAgICAgICBtZWxf c3RhdGUtPnJ1biAtPSAxOworICAgICAgICByZXR1cm4gMDsKKyAgICB9IGVsc2UgeworICAgICAg ICBtZWxfc3RhdGUtPm9uZSA9IDA7CisgICAgICAgIHJldHVybiAxOworICAgIH0KK30KKy8qKiBN YWdyZWYgZGVjb2RpbmcgcHJvY2VkdXJlcyAqLworc3RhdGljIGF2X2Fsd2F5c19pbmxpbmUgaW50 IGpwZWcyMDAwX2ltcG9ydF9tYWdyZWZfYml0KFN0YXRlVmFycyAqc3RyZWFtLCBjb25zdCB1aW50 OF90ICphcnJheSwgdWludDMyX3QgbGVuZ3RoKQoreworICAgIHJldHVybiBqcGVnMjAwMF9iaXRi dWZfZ2V0X2JpdHNfbHNiKHN0cmVhbSwgMSwgYXJyYXkpOworfQorCisvKiBTaWduYWwgRU1CIGRl Y29kZSAqLworc3RhdGljIGludAoranBlZzIwMDBfZGVjb2RlX3NpZ19lbWIoSnBlZzIwMDBEZWNv ZGVyQ29udGV4dCAqcywgTWVsRGVjb2RlclN0YXRlICptZWxfc3RhdGUsIFN0YXRlVmFycyAqbWVs X3N0cmVhbSwgU3RhdGVWYXJzICp2bGNfc3RyZWFtLCBjb25zdCB1aW50MTZfdCAqdmxjX3RhYmxl LCBjb25zdCB1aW50OF90ICpEY3VwLCB1aW50OF90ICpzaWdfcGF0LCB1aW50OF90ICpyZXNfb2Zm LCB1aW50OF90ICplbWJfcGF0X2ssIHVpbnQ4X3QgKmVtYl9wYXRfMSwgdWludDhfdCBwb3MsIHVp bnQxNl90IGNvbnRleHQsIHVpbnQzMl90IExjdXAsIHVpbnQzMl90IFBjdXApCit7CisgICAgaWYg KGNvbnRleHQgPT0gMCkgeworICAgICAgICB1aW50OF90IHN5bTsKKyAgICAgICAgc3ltID0ganBl ZzIwMDBfZGVjb2RlX21lbF9zeW0obWVsX3N0YXRlLCBtZWxfc3RyZWFtLCBEY3VwLCBMY3VwKTsK KyAgICAgICAgaWYgKHN5bSA9PSAwKSB7CisgICAgICAgICAgICBzaWdfcGF0W3Bvc10gPSAwOwor ICAgICAgICAgICAgcmVzX29mZltwb3NdID0gMDsKKyAgICAgICAgICAgIGVtYl9wYXRfa1twb3Nd ID0gMDsKKyAgICAgICAgICAgIGVtYl9wYXRfMVtwb3NdID0gMDsKKyAgICAgICAgICAgIHJldHVy biAwOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBqcGVnMjAwMF9kZWNvZGVfY3R4X3Zs YyhzLCB2bGNfc3RyZWFtLCB2bGNfdGFibGUsIERjdXAsIHNpZ19wYXQsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHJlc19vZmYsIGVtYl9wYXRfaywgZW1iX3BhdF8xLCBwb3Ms IFBjdXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQpOworfQor CitzdGF0aWMgYXZfYWx3YXlzX2lubGluZSBpbnQganBlZzIwMDBfZ2V0X3N0YXRlKGludCB4MSwg aW50IHgyLCBpbnQgd2lkdGgsIGludCBzaGlmdF9ieSwgY29uc3QgdWludDhfdCAqYmxvY2tfc3Rh dGVzKQoreworICAgIHJldHVybiAoYmxvY2tfc3RhdGVzWyh4MSArIDEpICogKHdpZHRoICsgMikg KyAoeDIgKyAxKV0gPj4gc2hpZnRfYnkpICYgMTsKK30KK3N0YXRpYyBhdl9hbHdheXNfaW5saW5l IHZvaWQganBlZzIwMDBfbW9kaWZ5X3N0YXRlKGludCB4MSwgaW50IHgyLCBpbnQgd2lkdGgsIGlu dCB2YWx1ZSwgdWludDhfdCAqYmxvY2tfc3RhdGVzKQoreworICAgIGJsb2NrX3N0YXRlc1soeDEg KyAxKSAqICh3aWR0aCArIDIpICsgKHgyICsgMSldIHw9IHZhbHVlOworfQorCitzdGF0aWMgaW50 IGpwZWcyMDAwX2RlY29kZV9odF9jbGVhbnVwKAorICAgIEpwZWcyMDAwRGVjb2RlckNvbnRleHQg KnMsIEpwZWcyMDAwQ2JsayAqY2JsaywgSnBlZzIwMDBUMUNvbnRleHQgKnQxLCBNZWxEZWNvZGVy U3RhdGUgKm1lbF9zdGF0ZSwgU3RhdGVWYXJzICptZWxfc3RyZWFtLCBTdGF0ZVZhcnMgKnZsY19z dHJlYW0sIFN0YXRlVmFycyAqbWFnX3Nnbl9zdHJlYW0sIGNvbnN0IHVpbnQ4X3QgKkRjdXAsIHVp bnQzMl90IExjdXAsIHVpbnQzMl90IFBjdXAsIHVpbnQ4X3QgcExTQiwgaW50IHdpZHRoLCBpbnQg aGVpZ2h0LCBpbnQzMl90ICpzYW1wbGVfYnVmLCB1aW50OF90ICpibG9ja19zdGF0ZXMpCit7Cisg ICAgdWludDE2X3QgcSA9IDA7IC8vIFJlcHJlc2VudHMgY3VycmVudCBxdWFkIHBvc2l0aW9uLgor ICAgIHVpbnQxNl90IHExLCBxMjsKKyAgICB1aW50MTZfdCBjb250ZXh0MSwgY29udGV4dDI7Cisg ICAgdWludDE2X3QgY29udGV4dCA9IDA7CisKKyAgICB1aW50OF90IHNpZ19wYXRbMl0gPSB7MH07 ICAgLy8gc2lnbmlmaWNhbmNlIHBhdHRlcm4KKyAgICB1aW50OF90IHJlc19vZmZbMl0gPSB7MH07 ICAgLy8gcmVzaWR1YWwgb2Zmc2V0CisgICAgdWludDhfdCBlbWJfcGF0X2tbMl0gPSB7MH07IC8v IEV4cG9uZW50IE1heCBCb3VuZCBwYXR0ZXJuIEsKKyAgICB1aW50OF90IGVtYl9wYXRfMVsyXSA9 IHswfTsgLy8gRXhwb25lbnQgTWF4IEJvdW5kIHBhdHRlcm4gMS4KKyAgICB1aW50OF90IGdhbW1h WzJdID0gezB9OworCisgICAgdWludDhfdCBFX25bMl0gPSB7MH07CisgICAgdWludDhfdCBFX25l WzJdID0gezB9OworICAgIHVpbnQ4X3QgRV9ud1syXSA9IHswfTsKKyAgICB1aW50OF90IEVfbmZb Ml0gPSB7MH07CisKKyAgICB1aW50OF90IG1heF9lWzJdID0gezB9OworCisgICAgdWludDhfdCB1 X3BmeFsyXSA9IHswfTsKKyAgICB1aW50OF90IHVfc2Z4WzJdID0gezB9OworICAgIHVpbnQ4X3Qg dV9leHRbMl0gPSB7MH07CisKKyAgICBpbnQzMl90IHVbMl0gPSB7MH07CisgICAgaW50MzJfdCBV WzJdID0gezB9OyAvLyBFeHBvbmVudCBib3VuZCAoNy4zLjcpCisgICAgaW50MzJfdCBtX25bMl0g PSB7MH07CisgICAgaW50MzJfdCBrbm93bl8xWzJdID0gezB9OworCisgICAgaW50MzJfdCBtWzJd WzRdID0gezB9OworICAgIGludDMyX3QgdlsyXVs0XSA9IHswfTsKKworICAgIHVpbnQ4X3Qga2Fw cGFbMl0gPSB7MSwgMX07CisgICAgaW50IHJldCA9IDA7CisKKyAgICBpbnQgc3A7CisKKyAgICB1 aW50NjRfdCBjOworCisgICAgdWludDhfdCAqc2lnbWE7CisgICAgdWludDMyX3QgKm11OworCisg ICAgY29uc3QgdWludDhfdCAqdmxjX2J1ZiA9IERjdXAgKyBQY3VwOworICAgIC8vIGNvbnZlcnQg dG8gcmFzdGVyLXNjYW4KKyAgICBjb25zdCB1aW50MTZfdCBpc19ib3JkZXJfeCA9IHdpZHRoICUg MjsKKyAgICBjb25zdCB1aW50MTZfdCBpc19ib3JkZXJfeSA9IGhlaWdodCAlIDI7CisKKyAgICBp bnQgajEsIGoyOworCisgICAgY29uc3QgdWludDE2X3QgcXVhZF93aWR0aCA9IGZmX2pwZWcyMDAw X2NlaWxkaXZwb3cyKHdpZHRoLCAxKTsKKyAgICBjb25zdCB1aW50MTZfdCBxdWFkX2hlaWdodCA9 IGZmX2pwZWcyMDAwX2NlaWxkaXZwb3cyKGhlaWdodCwgMSk7CisKKyAgICBzaXplX3QgYnVmX3Np emUgPSA0ICogcXVhZF93aWR0aCAqIHF1YWRfaGVpZ2h0OworCisgICAgdWludDhfdCAqc2lnbWFf biA9IGF2X2NhbGxvYyhidWZfc2l6ZSwgc2l6ZW9mKHVpbnQ4X3QpKTsKKyAgICB1aW50OF90ICpF ID0gYXZfY2FsbG9jKGJ1Zl9zaXplLCBzaXplb2YodWludDhfdCkpOworICAgIHVpbnQzMl90ICpt dV9uID0gYXZfY2FsbG9jKGJ1Zl9zaXplLCBzaXplb2YodWludDMyX3QpKTsKKworICAgIGlmICgh c2lnbWFfbiB8fCAhRSB8fCAhbXVfbikgeworICAgICAgICByZXQgPSBBVkVSUk9SKEVOT01FTSk7 CisgICAgICAgIGdvdG8gZnJlZTsKKyAgICB9CisKKyAgICBzaWdtYSA9IHNpZ21hX247CisgICAg bXUgPSBtdV9uOworCisgICAgd2hpbGUgKHEgPCBxdWFkX3dpZHRoIC0gMSkgeworICAgICAgICBx MSA9IHE7CisgICAgICAgIHEyID0gcTEgKyAxOworCisgICAgICAgIGlmICgocmV0ID0ganBlZzIw MDBfZGVjb2RlX3NpZ19lbWIocywgbWVsX3N0YXRlLCBtZWxfc3RyZWFtLCB2bGNfc3RyZWFtLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY19DeHRWTENfdGFi bGUwLCBEY3VwLCBzaWdfcGF0LCByZXNfb2ZmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGVtYl9wYXRfaywgZW1iX3BhdF8xLCBKMktfUTEsIGNvbnRleHQsIExj dXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGN1cCkpCisg ICAgICAgICAgICA8IDApCisgICAgICAgICAgICBnb3RvIGZyZWU7CisgICAgICAgIGZvciAoaW50 IGkgPSAwOyBpIDwgNDsgaSsrKQorICAgICAgICAgICAgc2lnbWFfbls0ICogcTEgKyBpXSA9IChz aWdfcGF0W0oyS19RMV0gPj4gaSkgJiAxOworCisgICAgICAgIC8vIGNhbGN1bGF0ZSBjb250ZXh0 CisgICAgICAgIGNvbnRleHQgPSBzaWdtYV9uWzQgKiBxMV07ICAgICAgICAgICAvLyBmCisgICAg ICAgIGNvbnRleHQgfD0gc2lnbWFfbls0ICogcTEgKyAxXTsgICAgICAvLyBzZgorICAgICAgICBj b250ZXh0ICs9IHNpZ21hX25bNCAqIHExICsgMl0gPDwgMTsgLy8gdyA8PCAxCisgICAgICAgIGNv bnRleHQgKz0gc2lnbWFfbls0ICogcTEgKyAzXSA8PCAyOworCisgICAgICAgIGlmICgocmV0ID0g anBlZzIwMDBfZGVjb2RlX3NpZ19lbWIocywgbWVsX3N0YXRlLCBtZWxfc3RyZWFtLCB2bGNfc3Ry ZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY19DeHRW TENfdGFibGUwLCBEY3VwLCBzaWdfcGF0LCByZXNfb2ZmLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGVtYl9wYXRfaywgZW1iX3BhdF8xLCBKMktfUTIsIGNvbnRl eHQsIExjdXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGN1 cCkpCisgICAgICAgICAgICA8IDApCisgICAgICAgICAgICBnb3RvIGZyZWU7CisKKyAgICAgICAg Zm9yIChpbnQgaSA9IDA7IGkgPCA0OyBpKyspCisgICAgICAgICAgICBzaWdtYV9uWzQgKiBxMiAr IGldID0gKHNpZ19wYXRbSjJLX1EyXSA+PiBpKSAmIDE7CisKKyAgICAgICAgLy8gY2FsY3VsYXRl IGNvbnRleHQgZm9yIHRoZSBuZXh0IHF1YWQKKyAgICAgICAgY29udGV4dCA9IHNpZ21hX25bNCAq IHEyXTsgICAgICAgICAgIC8vIGYKKyAgICAgICAgY29udGV4dCB8PSBzaWdtYV9uWzQgKiBxMiAr IDFdOyAgICAgIC8vIHNmCisgICAgICAgIGNvbnRleHQgKz0gc2lnbWFfbls0ICogcTIgKyAyXSA8 PCAxOyAvLyB3IDw8IDEKKyAgICAgICAgY29udGV4dCArPSBzaWdtYV9uWzQgKiBxMiArIDNdIDw8 IDI7IC8vIHN3IDw8IDIKKworICAgICAgICB1WzBdID0gMDsKKyAgICAgICAgdVsxXSA9IDA7CisK KyAgICAgICAganBlZzIwMDBfYml0YnVmX3JlZmlsbF9iYWNrd2FyZHModmxjX3N0cmVhbSwgdmxj X2J1Zik7CisKKyAgICAgICAgaWYgKHJlc19vZmZbSjJLX1ExXSA9PSAxICYmIHJlc19vZmZbSjJL X1EyXSA9PSAxKSB7CisKKyAgICAgICAgICAgIGlmIChqcGVnMjAwMF9kZWNvZGVfbWVsX3N5bSht ZWxfc3RhdGUsIG1lbF9zdHJlYW0sIERjdXAsIExjdXApID09IDEpIHsKKworICAgICAgICAgICAg ICAgIHVfcGZ4W0oyS19RMV0gPSB2bGNfZGVjb2RlX3VfcHJlZml4KHZsY19zdHJlYW0sIHZsY19i dWYpOworICAgICAgICAgICAgICAgIHVfcGZ4W0oyS19RMl0gPSB2bGNfZGVjb2RlX3VfcHJlZml4 KHZsY19zdHJlYW0sIHZsY19idWYpOworCisgICAgICAgICAgICAgICAgdV9zZnhbSjJLX1ExXSA9 IHZsY19kZWNvZGVfdV9zdWZmaXgodmxjX3N0cmVhbSwgdV9wZnhbSjJLX1ExXSwgdmxjX2J1Zik7 CisgICAgICAgICAgICAgICAgdV9zZnhbSjJLX1EyXSA9IHZsY19kZWNvZGVfdV9zdWZmaXgodmxj X3N0cmVhbSwgdV9wZnhbSjJLX1EyXSwgdmxjX2J1Zik7CisKKyAgICAgICAgICAgICAgICB1X2V4 dFtKMktfUTFdID0gdmxjX2RlY29kZV91X2V4dGVuc2lvbih2bGNfc3RyZWFtLCB1X3NmeFtKMktf UTFdLCB2bGNfYnVmKTsKKyAgICAgICAgICAgICAgICB1X2V4dFtKMktfUTJdID0gdmxjX2RlY29k ZV91X2V4dGVuc2lvbih2bGNfc3RyZWFtLCB1X3NmeFtKMktfUTJdLCB2bGNfYnVmKTsKKworICAg ICAgICAgICAgICAgIHVbSjJLX1ExXSA9IDIgKyB1X3BmeFtKMktfUTFdICsgdV9zZnhbSjJLX1Ex XSArICh1X2V4dFtKMktfUTFdICogNCk7CisgICAgICAgICAgICAgICAgdVtKMktfUTJdID0gMiAr IHVfcGZ4W0oyS19RMl0gKyB1X3NmeFtKMktfUTJdICsgKHVfZXh0W0oyS19RMl0gKiA0KTsKKwor ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB1X3BmeFtKMktfUTFdID0gdmxj X2RlY29kZV91X3ByZWZpeCh2bGNfc3RyZWFtLCB2bGNfYnVmKTsKKworICAgICAgICAgICAgICAg IGlmICh1X3BmeFtKMktfUTFdID4gMikgeworICAgICAgICAgICAgICAgICAgICB1W0oyS19RMl0g PSBqcGVnMjAwMF9iaXRidWZfZ2V0X2JpdHNfbHNiKHZsY19zdHJlYW0sIDEsIHZsY19idWYpICsg MTsKKworICAgICAgICAgICAgICAgICAgICB1X3NmeFtKMktfUTFdID0gdmxjX2RlY29kZV91X3N1 ZmZpeCh2bGNfc3RyZWFtLCB1X3BmeFtKMktfUTFdLCB2bGNfYnVmKTsKKworICAgICAgICAgICAg ICAgICAgICB1X2V4dFtKMktfUTFdID0gdmxjX2RlY29kZV91X2V4dGVuc2lvbih2bGNfc3RyZWFt LCB1X3NmeFtKMktfUTFdLCB2bGNfYnVmKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAg ICAgICAgICAgICAgICAgICB1X3BmeFtKMktfUTJdID0gdmxjX2RlY29kZV91X3ByZWZpeCh2bGNf c3RyZWFtLCB2bGNfYnVmKTsKKworICAgICAgICAgICAgICAgICAgICB1X3NmeFtKMktfUTFdID0g dmxjX2RlY29kZV91X3N1ZmZpeCh2bGNfc3RyZWFtLCB1X3BmeFtKMktfUTFdLCB2bGNfYnVmKTsK KyAgICAgICAgICAgICAgICAgICAgdV9zZnhbSjJLX1EyXSA9IHZsY19kZWNvZGVfdV9zdWZmaXgo dmxjX3N0cmVhbSwgdV9wZnhbSjJLX1EyXSwgdmxjX2J1Zik7CisKKyAgICAgICAgICAgICAgICAg ICAgdV9leHRbSjJLX1ExXSA9IHZsY19kZWNvZGVfdV9leHRlbnNpb24odmxjX3N0cmVhbSwgdV9z ZnhbSjJLX1ExXSwgdmxjX2J1Zik7CisgICAgICAgICAgICAgICAgICAgIHVfZXh0W0oyS19RMl0g PSB2bGNfZGVjb2RlX3VfZXh0ZW5zaW9uKHZsY19zdHJlYW0sIHVfc2Z4W0oyS19RMl0sIHZsY19i dWYpOworCisgICAgICAgICAgICAgICAgICAgIHVbSjJLX1EyXSA9IHVfcGZ4W0oyS19RMl0gKyB1 X3NmeFtKMktfUTJdICsgKHVfZXh0W0oyS19RMl0gKiA0KTsKKyAgICAgICAgICAgICAgICB9Cisg ICAgICAgICAgICAgICAgLy8gY2xhdXNlIDcuMy42ICgzKQorICAgICAgICAgICAgICAgIHVbSjJL X1ExXSA9IHVfcGZ4W0oyS19RMV0gKyB1X3NmeFtKMktfUTFdICsgKHVfZXh0W0oyS19RMV0gKiA0 KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICB9IGVsc2UgaWYgKHJlc19vZmZbSjJLX1ExXSA9 PSAxIHx8IHJlc19vZmZbSjJLX1EyXSA9PSAxKSB7CisgICAgICAgICAgICB1aW50OF90IHBvcyA9 IHJlc19vZmZbSjJLX1ExXSA9PSAxID8gMCA6IDE7CisKKyAgICAgICAgICAgIHVfcGZ4W3Bvc10g PSB2bGNfZGVjb2RlX3VfcHJlZml4KHZsY19zdHJlYW0sIHZsY19idWYpOworCisgICAgICAgICAg ICB1X3NmeFtwb3NdID0gdmxjX2RlY29kZV91X3N1ZmZpeCh2bGNfc3RyZWFtLCB1X3BmeFtwb3Nd LCB2bGNfYnVmKTsKKworICAgICAgICAgICAgdV9leHRbcG9zXSA9IHZsY19kZWNvZGVfdV9leHRl bnNpb24odmxjX3N0cmVhbSwgdV9zZnhbcG9zXSwgdmxjX2J1Zik7CisKKyAgICAgICAgICAgIHVb cG9zXSA9IHVfcGZ4W3Bvc10gKyB1X3NmeFtwb3NdICsgKHVfZXh0W3Bvc10gKiA0KTsKKyAgICAg ICAgfQorICAgICAgICBVW0oyS19RMV0gPSBrYXBwYVtKMktfUTFdICsgdVtKMktfUTFdOworICAg ICAgICBVW0oyS19RMl0gPSBrYXBwYVtKMktfUTJdICsgdVtKMktfUTJdOworCisgICAgICAgIGZv ciAoaW50IGkgPSAwOyBpIDwgNDsgaSsrKSB7CisgICAgICAgICAgICBtW0oyS19RMV1baV0gPSBz aWdtYV9uWzQgKiBxMSArIGldICogVVtKMktfUTFdIC0gKChlbWJfcGF0X2tbSjJLX1ExXSA+PiBp KSAmIDEpOworICAgICAgICAgICAgbVtKMktfUTJdW2ldID0gc2lnbWFfbls0ICogcTIgKyBpXSAq IFVbSjJLX1EyXSAtICgoZW1iX3BhdF9rW0oyS19RMl0gPj4gaSkgJiAxKTsKKyAgICAgICAgfQor CisgICAgICAgIHJlY292ZXJfbWFnX3NnbihtYWdfc2duX3N0cmVhbSwgSjJLX1ExLCBxMSwgbV9u LCBrbm93bl8xLCBlbWJfcGF0XzEsIHYsIG0sCisgICAgICAgICAgICAgICAgICAgICAgICBFLCBt dV9uLCBEY3VwLCBQY3VwLCBwTFNCKTsKKworICAgICAgICByZWNvdmVyX21hZ19zZ24obWFnX3Nn bl9zdHJlYW0sIEoyS19RMiwgcTIsIG1fbiwga25vd25fMSwgZW1iX3BhdF8xLCB2LCBtLAorICAg ICAgICAgICAgICAgICAgICAgICAgRSwgbXVfbiwgRGN1cCwgUGN1cCwgcExTQik7CisKKyAgICAg ICAgLy8gcHJlcGFyZSBjb250ZXh0IGZvciB0aGUgbmV4dCBxdWFkCisKKyAgICAgICAgLy8gbW92 ZSB0byB0aGUgbmV4dCBxdWFkIHBhaXIKKyAgICAgICAgcSArPSAyOworICAgIH0KKyAgICBpZiAo cXVhZF93aWR0aCAlIDIgPT0gMSkgeworICAgICAgICBxMSA9IHE7CisKKyAgICAgICAgaWYgKChy ZXQgPSBqcGVnMjAwMF9kZWNvZGVfc2lnX2VtYihzLCBtZWxfc3RhdGUsIG1lbF9zdHJlYW0sIHZs Y19zdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVj X0N4dFZMQ190YWJsZTAsIERjdXAsIHNpZ19wYXQsIHJlc19vZmYsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1iX3BhdF9rLCBlbWJfcGF0XzEsIEoyS19RMSwg Y29udGV4dCwgTGN1cCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBQY3VwKSkKKyAgICAgICAgICAgIDwgMCkKKyAgICAgICAgICAgIGdvdG8gZnJlZTsKKworICAg ICAgICBmb3IgKGludCBpID0gMDsgaSA8IDQ7IGkrKykKKyAgICAgICAgICAgIHNpZ21hX25bNCAq IHExICsgaV0gPSAoc2lnX3BhdFtKMktfUTFdID4+IGkpICYgMTsKKworICAgICAgICB1W0oyS19R MV0gPSAwOworCisgICAgICAgIGlmIChyZXNfb2ZmW0oyS19RMV0gPT0gMSkgeworICAgICAgICAg ICAgdV9wZnhbSjJLX1ExXSA9IHZsY19kZWNvZGVfdV9wcmVmaXgodmxjX3N0cmVhbSwgdmxjX2J1 Zik7CisgICAgICAgICAgICB1X3NmeFtKMktfUTFdID0gdmxjX2RlY29kZV91X3N1ZmZpeCh2bGNf c3RyZWFtLCB1X3BmeFtKMktfUTFdLCB2bGNfYnVmKTsKKyAgICAgICAgICAgIHVfZXh0W0oyS19R MV0gPSB2bGNfZGVjb2RlX3VfZXh0ZW5zaW9uKHZsY19zdHJlYW0sIHVfc2Z4W0oyS19RMV0sIHZs Y19idWYpOworICAgICAgICAgICAgdVtKMktfUTFdID0gdV9wZnhbSjJLX1ExXSArIHVfc2Z4W0oy S19RMV0gKyAodV9leHRbSjJLX1ExXSAqIDQpOworICAgICAgICB9CisKKyAgICAgICAgVVtKMktf UTFdID0ga2FwcGFbSjJLX1ExXSArIHVbSjJLX1ExXTsKKworICAgICAgICBmb3IgKGludCBpID0g MDsgaSA8IDQ7IGkrKykKKyAgICAgICAgICAgIG1bSjJLX1ExXVtpXSA9IHNpZ21hX25bNCAqIHEx ICsgaV0gKiBVW0oyS19RMV0gLSAoKGVtYl9wYXRfa1tKMktfUTFdID4+IGkpICYgMSk7CisKKyAg ICAgICAgcmVjb3Zlcl9tYWdfc2duKG1hZ19zZ25fc3RyZWFtLCBKMktfUTEsIHExLCBtX24sIGtu b3duXzEsIGVtYl9wYXRfMSwgdiwgbSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEUsIG11X24s IERjdXAsIFBjdXAsIHBMU0IpOworCisgICAgICAgIHErKzsgLy8gbW92ZSB0byBuZXh0IHF1YWQg cGFpcgorICAgIH0KKyAgICAvLyBpbml0aWFsIGxpbmUgcGFpciBlbmQuCisKKyAgICAvKgorICAg ICAqIEFzIGFuIG9wdGltaXphdGlvbiwgd2UgY2FuIHJlcGxhY2UgbW9kdWxvIG9wZXJhdGlvbnMg d2l0aAorICAgICAqIGNoZWNraW5nIGlmIGEgbnVtYmVyIGlzIGRpdmlzaWJsZSAsIHNpbmNlIHRo YXQncyB0aGUgb25seSB0aGluZyB3ZSBuZWVkLgorICAgICAqIHRoaXMgaXMgcGFpcmVkIHdpdGgg aXNfZGl2aXNpYmxlLgorICAgICAqIENyZWRpdHMgdG8gRGFuaWVsIExlbWlyZSBibG9nIHBvc3Q6 CisgICAgICogaHR0cHM6Ly9sZW1pcmUubWUvYmxvZy8yMDE5LzAyLzA4L2Zhc3Rlci1yZW1haW5k ZXJzLXdoZW4tdGhlLWRpdmlzb3ItaXMtYS1jb25zdGFudC1iZWF0aW5nLWNvbXBpbGVycy1hbmQt bGliZGl2aWRlLworICAgICAqIEl0J3MgVUIgb24gemVybywgYnV0IHdlIGNhbid0IGhhdmUgYSBx dWFkIGJlaW5nIHplcm8sIHRoZSBzcGVjIGRvZXNuJ3QgYWxsb3csCisgICAgICogc28gd2UgZXJy b3Igb3V0IGVhcmx5IGluIGNhc2UgdGhhdCdzIHRoZSBjYXNlLgorICAgICAqLworCisgICAgYyA9 IDEgKyBVSU5UNjRfQygweGZmZmZmZmZmZmZmZmZmZmYpIC8gcXVhZF93aWR0aDsKKworICAgIGZv ciAoaW50IHJvdyA9IDE7IHJvdyA8IHF1YWRfaGVpZ2h0OyByb3crKykgeworICAgICAgICB3aGls ZSAoKHEgLSAocm93ICogcXVhZF93aWR0aCkpIDwgcXVhZF93aWR0aCAtIDEgJiYgcSA8IChxdWFk X2hlaWdodCAqIHF1YWRfd2lkdGgpKSB7CisgICAgICAgICAgICBxMSA9IHE7CisgICAgICAgICAg ICBxMiA9IHEgKyAxOworICAgICAgICAgICAgY29udGV4dDEgPSBzaWdtYV9uWzQgKiAocTEgLSBx dWFkX3dpZHRoKSArIDFdOworICAgICAgICAgICAgY29udGV4dDEgKz0gc2lnbWFfbls0ICogKHEx IC0gcXVhZF93aWR0aCkgKyAzXSA8PCAyOyAvLyBuZQorCisgICAgICAgICAgICBpZiAoIWlzX2Rp dmlzaWJsZShxMSwgYykpIHsKKyAgICAgICAgICAgICAgICBjb250ZXh0MSB8PSBzaWdtYV9uWzQg KiAocTEgLSBxdWFkX3dpZHRoKSAtIDFdOyAgICAgICAgICAgICAgIC8vIG53CisgICAgICAgICAg ICAgICAgY29udGV4dDEgKz0gKHNpZ21hX25bNCAqIHExIC0gMV0gfCBzaWdtYV9uWzQgKiBxMSAt IDJdKSA8PCAxOyAvLyBzd3wgcQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFpc19k aXZpc2libGUocTEgKyAxLCBjKSkKKyAgICAgICAgICAgICAgICBjb250ZXh0MSB8PSBzaWdtYV9u WzQgKiAocTEgLSBxdWFkX3dpZHRoKSArIDVdIDw8IDI7CisKKyAgICAgICAgICAgIGlmICgocmV0 ID0ganBlZzIwMDBfZGVjb2RlX3NpZ19lbWIocywgbWVsX3N0YXRlLCBtZWxfc3RyZWFtLCB2bGNf c3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk ZWNfQ3h0VkxDX3RhYmxlMSwgRGN1cCwgc2lnX3BhdCwgcmVzX29mZiwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1iX3BhdF9rLCBlbWJfcGF0XzEsIEoy S19RMSwgY29udGV4dDEsIExjdXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFBjdXApKQorICAgICAgICAgICAgICAgIDwgMCkKKyAgICAgICAgICAgICAg ICBnb3RvIGZyZWU7CisKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNDsgaSsrKQor ICAgICAgICAgICAgICAgIHNpZ21hX25bNCAqIHExICsgaV0gPSAoc2lnX3BhdFtKMktfUTFdID4+ IGkpICYgMTsKKworICAgICAgICAgICAgY29udGV4dDIgPSBzaWdtYV9uWzQgKiAocTIgLSBxdWFk X3dpZHRoKSArIDFdOworICAgICAgICAgICAgY29udGV4dDIgKz0gc2lnbWFfbls0ICogKHEyIC0g cXVhZF93aWR0aCkgKyAzXSA8PCAyOworCisgICAgICAgICAgICBpZiAoIWlzX2RpdmlzaWJsZShx MiwgYykpIHsKKyAgICAgICAgICAgICAgICBjb250ZXh0MiB8PSBzaWdtYV9uWzQgKiAocTIgLSBx dWFkX3dpZHRoKSAtIDFdOworICAgICAgICAgICAgICAgIGNvbnRleHQyICs9IChzaWdtYV9uWzQg KiBxMiAtIDFdIHwgc2lnbWFfbls0ICogcTIgLSAyXSkgPDwgMTsKKyAgICAgICAgICAgIH0KKyAg ICAgICAgICAgIGlmICghaXNfZGl2aXNpYmxlKHEyICsgMSwgYykpCisgICAgICAgICAgICAgICAg Y29udGV4dDIgfD0gc2lnbWFfbls0ICogKHEyIC0gcXVhZF93aWR0aCkgKyA1XSA8PCAyOworCisg ICAgICAgICAgICBpZiAoKHJldCA9IGpwZWcyMDAwX2RlY29kZV9zaWdfZW1iKHMsIG1lbF9zdGF0 ZSwgbWVsX3N0cmVhbSwgdmxjX3N0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZGVjX0N4dFZMQ190YWJsZTEsIERjdXAsIHNpZ19wYXQsIHJlc19v ZmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtYl9w YXRfaywgZW1iX3BhdF8xLCBKMktfUTIsIGNvbnRleHQyLCBMY3VwLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQY3VwKSkKKyAgICAgICAgICAgICAgICA8 IDApCisgICAgICAgICAgICAgICAgZ290byBmcmVlOworCisgICAgICAgICAgICBmb3IgKGludCBp ID0gMDsgaSA8IDQ7IGkrKykKKyAgICAgICAgICAgICAgICBzaWdtYV9uWzQgKiBxMiArIGldID0g KHNpZ19wYXRbSjJLX1EyXSA+PiBpKSAmIDE7CisKKyAgICAgICAgICAgIHVbSjJLX1ExXSA9IDA7 CisgICAgICAgICAgICB1W0oyS19RMl0gPSAwOworCisgICAgICAgICAgICBqcGVnMjAwMF9iaXRi dWZfcmVmaWxsX2JhY2t3YXJkcyh2bGNfc3RyZWFtLCB2bGNfYnVmKTsKKworICAgICAgICAgICAg aWYgKHJlc19vZmZbSjJLX1ExXSA9PSAxICYmIHJlc19vZmZbSjJLX1EyXSA9PSAxKSB7CisgICAg ICAgICAgICAgICAgdV9wZnhbSjJLX1ExXSA9IHZsY19kZWNvZGVfdV9wcmVmaXgodmxjX3N0cmVh bSwgdmxjX2J1Zik7CisgICAgICAgICAgICAgICAgdV9wZnhbSjJLX1EyXSA9IHZsY19kZWNvZGVf dV9wcmVmaXgodmxjX3N0cmVhbSwgdmxjX2J1Zik7CisKKyAgICAgICAgICAgICAgICB1X3NmeFtK MktfUTFdID0gdmxjX2RlY29kZV91X3N1ZmZpeCh2bGNfc3RyZWFtLCB1X3BmeFtKMktfUTFdLCB2 bGNfYnVmKTsKKyAgICAgICAgICAgICAgICB1X3NmeFtKMktfUTJdID0gdmxjX2RlY29kZV91X3N1 ZmZpeCh2bGNfc3RyZWFtLCB1X3BmeFtKMktfUTJdLCB2bGNfYnVmKTsKKworICAgICAgICAgICAg ICAgIHVfZXh0W0oyS19RMV0gPSB2bGNfZGVjb2RlX3VfZXh0ZW5zaW9uKHZsY19zdHJlYW0sIHVf c2Z4W0oyS19RMV0sIHZsY19idWYpOworICAgICAgICAgICAgICAgIHVfZXh0W0oyS19RMl0gPSB2 bGNfZGVjb2RlX3VfZXh0ZW5zaW9uKHZsY19zdHJlYW0sIHVfc2Z4W0oyS19RMl0sIHZsY19idWYp OworCisgICAgICAgICAgICAgICAgdVtKMktfUTFdID0gdV9wZnhbSjJLX1ExXSArIHVfc2Z4W0oy S19RMV0gKyAodV9leHRbSjJLX1ExXSA8PCAyKTsKKyAgICAgICAgICAgICAgICB1W0oyS19RMl0g PSB1X3BmeFtKMktfUTJdICsgdV9zZnhbSjJLX1EyXSArICh1X2V4dFtKMktfUTJdIDw8IDIpOwor CisgICAgICAgICAgICB9IGVsc2UgaWYgKHJlc19vZmZbSjJLX1ExXSA9PSAxIHx8IHJlc19vZmZb SjJLX1EyXSA9PSAxKSB7CisgICAgICAgICAgICAgICAgdWludDhfdCBwb3MgPSByZXNfb2ZmW0oy S19RMV0gPT0gMSA/IDAgOiAxOworCisgICAgICAgICAgICAgICAgdV9wZnhbcG9zXSA9IHZsY19k ZWNvZGVfdV9wcmVmaXgodmxjX3N0cmVhbSwgdmxjX2J1Zik7CisKKyAgICAgICAgICAgICAgICB1 X3NmeFtwb3NdID0gdmxjX2RlY29kZV91X3N1ZmZpeCh2bGNfc3RyZWFtLCB1X3BmeFtwb3NdLCB2 bGNfYnVmKTsKKworICAgICAgICAgICAgICAgIHVfZXh0W3Bvc10gPSB2bGNfZGVjb2RlX3VfZXh0 ZW5zaW9uKHZsY19zdHJlYW0sIHVfc2Z4W3Bvc10sIHZsY19idWYpOworCisgICAgICAgICAgICAg ICAgdVtwb3NdID0gdV9wZnhbcG9zXSArIHVfc2Z4W3Bvc10gKyAodV9leHRbcG9zXSA8PCAyKTsK KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHNwID0gc2lnX3BhdFtKMktfUTFdOworCisgICAg ICAgICAgICBnYW1tYVtKMktfUTFdID0gMTsKKworICAgICAgICAgICAgaWYgKHNwID09IDAgfHwg c3AgPT0gMSB8fCBzcCA9PSAyIHx8IHNwID09IDQgfHwgc3AgPT0gOCkKKyAgICAgICAgICAgICAg ICBnYW1tYVtKMktfUTFdID0gMDsKKworICAgICAgICAgICAgc3AgPSBzaWdfcGF0W0oyS19RMl07 CisKKyAgICAgICAgICAgIGdhbW1hW0oyS19RMl0gPSAxOworCisgICAgICAgICAgICBpZiAoc3Ag PT0gMCB8fCBzcCA9PSAxIHx8IHNwID09IDIgfHwgc3AgPT0gNCB8fCBzcCA9PSA4KQorICAgICAg ICAgICAgICAgIGdhbW1hW0oyS19RMl0gPSAwOworCisgICAgICAgICAgICBFX25bSjJLX1ExXSA9 IEVbNCAqIChxMSAtIHF1YWRfd2lkdGgpICsgMV07CisgICAgICAgICAgICBFX25bSjJLX1EyXSA9 IEVbNCAqIChxMiAtIHF1YWRfd2lkdGgpICsgMV07CisKKyAgICAgICAgICAgIEVfbmVbSjJLX1Ex XSA9IEVbNCAqIChxMSAtIHF1YWRfd2lkdGgpICsgM107CisgICAgICAgICAgICBFX25lW0oyS19R Ml0gPSBFWzQgKiAocTIgLSBxdWFkX3dpZHRoKSArIDNdOworCisgICAgICAgICAgICBFX253W0oy S19RMV0gPSAwOworICAgICAgICAgICAgRV9ud1tKMktfUTJdID0gMDsKKworICAgICAgICAgICAg RV9uZltKMktfUTFdID0gMDsKKyAgICAgICAgICAgIEVfbmZbSjJLX1EyXSA9IDA7CisKKyAgICAg ICAgICAgIGlmICghaXNfZGl2aXNpYmxlKHExLCBjKSkKKyAgICAgICAgICAgICAgICBFX253W0oy S19RMV0gPSBFWzQgKiAocTEgLSBxdWFkX3dpZHRoKSAtIDFdOworICAgICAgICAgICAgaWYgKCFp c19kaXZpc2libGUocTIsIGMpKQorICAgICAgICAgICAgICAgIEVfbndbSjJLX1EyXSA9IEVbNCAq IChxMiAtIHF1YWRfd2lkdGgpIC0gMV07CisKKyAgICAgICAgICAgIGlmICghaXNfZGl2aXNpYmxl KHExICsgMSwgYykpCisgICAgICAgICAgICAgICAgRV9uZltKMktfUTFdID0gRVs0ICogKHExIC0g cXVhZF93aWR0aCkgKyA1XTsKKyAgICAgICAgICAgIGlmICghaXNfZGl2aXNpYmxlKHEyICsgMSwg YykpCisgICAgICAgICAgICAgICAgRV9uZltKMktfUTJdID0gRVs0ICogKHEyIC0gcXVhZF93aWR0 aCkgKyA1XTsKKworICAgICAgICAgICAgbWF4X2VbSjJLX1ExXSA9IEZGTUFYKEVfbndbSjJLX1Ex XSwgRkZNQVgzKEVfbltKMktfUTFdLCBFX25lW0oyS19RMV0sIEVfbmZbSjJLX1ExXSkpOworICAg ICAgICAgICAgbWF4X2VbSjJLX1EyXSA9IEZGTUFYKEVfbndbSjJLX1EyXSwgRkZNQVgzKEVfbltK MktfUTJdLCBFX25lW0oyS19RMl0sIEVfbmZbSjJLX1EyXSkpOworCisgICAgICAgICAgICBrYXBw YVtKMktfUTFdID0gRkZNQVgoMSwgZ2FtbWFbSjJLX1ExXSAqIChtYXhfZVtKMktfUTFdIC0gMSkp OworICAgICAgICAgICAga2FwcGFbSjJLX1EyXSA9IEZGTUFYKDEsIGdhbW1hW0oyS19RMl0gKiAo bWF4X2VbSjJLX1EyXSAtIDEpKTsKKworICAgICAgICAgICAgVVtKMktfUTFdID0ga2FwcGFbSjJL X1ExXSArIHVbSjJLX1ExXTsKKyAgICAgICAgICAgIFVbSjJLX1EyXSA9IGthcHBhW0oyS19RMl0g KyB1W0oyS19RMl07CisKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNDsgaSsrKSB7 CisgICAgICAgICAgICAgICAgbVtKMktfUTFdW2ldID0gc2lnbWFfbls0ICogcTEgKyBpXSAqIFVb SjJLX1ExXSAtICgoZW1iX3BhdF9rW0oyS19RMV0gPj4gaSkgJiAxKTsKKyAgICAgICAgICAgICAg ICBtW0oyS19RMl1baV0gPSBzaWdtYV9uWzQgKiBxMiArIGldICogVVtKMktfUTJdIC0gKChlbWJf cGF0X2tbSjJLX1EyXSA+PiBpKSAmIDEpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmVj b3Zlcl9tYWdfc2duKG1hZ19zZ25fc3RyZWFtLCBKMktfUTEsIHExLCBtX24sIGtub3duXzEsIGVt Yl9wYXRfMSwgdiwgbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBFLCBtdV9uLCBEY3Vw LCBQY3VwLCBwTFNCKTsKKworICAgICAgICAgICAgcmVjb3Zlcl9tYWdfc2duKG1hZ19zZ25fc3Ry ZWFtLCBKMktfUTIsIHEyLCBtX24sIGtub3duXzEsIGVtYl9wYXRfMSwgdiwgbSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICBFLCBtdV9uLCBEY3VwLCBQY3VwLCBwTFNCKTsKKworICAgICAg ICAgICAgLy8gbW92ZSB0byB0aGUgbmV4dCBxdWFkIHBhaXIKKyAgICAgICAgICAgIHEgKz0gMjsK KyAgICAgICAgfQorICAgICAgICBpZiAoKHF1YWRfd2lkdGggJSAyKSA9PSAxKSB7CisgICAgICAg ICAgICBxMSA9IHE7CisgICAgICAgICAgICAvLyBjYWxjdWxhdGUgY29udGV4dCBmb3IgY3VycmVu dCBxdWFkCisgICAgICAgICAgICBjb250ZXh0MSA9IHNpZ21hX25bNCAqIChxMSAtIHF1YWRfd2lk dGgpICsgMV07ICAgICAgICAgLy8gbgorICAgICAgICAgICAgY29udGV4dDEgKz0gKHNpZ21hX25b NCAqIChxMSAtIHF1YWRfd2lkdGgpICsgM10gPDwgMik7IC8vIG5lCisKKyAgICAgICAgICAgIGlm ICghaXNfZGl2aXNpYmxlKHExLCBjKSkgeworICAgICAgICAgICAgICAgIGNvbnRleHQxIHw9IHNp Z21hX25bNCAqIChxMSAtIHF1YWRfd2lkdGgpIC0gMV07IC8vIG53CisgICAgICAgICAgICAgICAg Y29udGV4dDEgKz0gKHNpZ21hX25bNCAqIHExIC0gMV0gfCBzaWdtYV9uWzQgKiBxMSAtIDJdKQor ICAgICAgICAgICAgICAgICAgICA8PCAxOyAvLyAoc3d8IHcpIDw8IDE7CisgICAgICAgICAgICB9 CisgICAgICAgICAgICBpZiAoIWlzX2RpdmlzaWJsZShxMSArIDEsIGMpKQorICAgICAgICAgICAg ICAgIGNvbnRleHQxIHw9IHNpZ21hX25bNCAqIChxMSAtIHF1YWRfd2lkdGgpICsgNV0gPDwgMjsK KworICAgICAgICAgICAgaWYgKChyZXQgPSBqcGVnMjAwMF9kZWNvZGVfc2lnX2VtYihzLCBtZWxf c3RhdGUsIG1lbF9zdHJlYW0sIHZsY19zdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGRlY19DeHRWTENfdGFibGUxLCBEY3VwLCBzaWdfcGF0LCBy ZXNfb2ZmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl bWJfcGF0X2ssIGVtYl9wYXRfMSwgSjJLX1ExLCBjb250ZXh0MSwgTGN1cCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGN1cCkpCisgICAgICAgICAgICAg ICAgPCAwKQorICAgICAgICAgICAgICAgIGdvdG8gZnJlZTsKKworICAgICAgICAgICAgZm9yIChp bnQgaSA9IDA7IGkgPCA0OyBpKyspCisgICAgICAgICAgICAgICAgc2lnbWFfbls0ICogcTEgKyBp XSA9IChzaWdfcGF0W0oyS19RMV0gPj4gaSkgJiAxOworCisgICAgICAgICAgICB1W0oyS19RMV0g PSAwOworCisgICAgICAgICAgICAvLyBSZWNvdmVyIG1hZ19zZ24gdmFsdWUKKyAgICAgICAgICAg IGlmIChyZXNfb2ZmW0oyS19RMV0gPT0gMSkgeworICAgICAgICAgICAgICAgIHVfcGZ4W0oyS19R MV0gPSB2bGNfZGVjb2RlX3VfcHJlZml4KHZsY19zdHJlYW0sIHZsY19idWYpOworICAgICAgICAg ICAgICAgIHVfc2Z4W0oyS19RMV0gPSB2bGNfZGVjb2RlX3Vfc3VmZml4KHZsY19zdHJlYW0sIHVf cGZ4W0oyS19RMV0sIHZsY19idWYpOworICAgICAgICAgICAgICAgIHVfZXh0W0oyS19RMV0gPSB2 bGNfZGVjb2RlX3VfZXh0ZW5zaW9uKHZsY19zdHJlYW0sIHVfc2Z4W0oyS19RMV0sIHZsY19idWYp OworICAgICAgICAgICAgICAgIHVbSjJLX1ExXSA9IHVfcGZ4W0oyS19RMV0gKyB1X3NmeFtKMktf UTFdICsgKHVfZXh0W0oyS19RMV0gPDwgMik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg IHNwID0gc2lnX3BhdFtKMktfUTFdOworCisgICAgICAgICAgICBnYW1tYVtKMktfUTFdID0gMTsK KworICAgICAgICAgICAgaWYgKHNwID09IDAgfHwgc3AgPT0gMSB8fCBzcCA9PSAyIHx8IHNwID09 IDQgfHwgc3AgPT0gOCkKKyAgICAgICAgICAgICAgICBnYW1tYVtKMktfUTFdID0gMDsKKworICAg ICAgICAgICAgRV9uW0oyS19RMV0gPSBFWzQgKiAocTEgLSBxdWFkX3dpZHRoKSArIDFdOworCisg ICAgICAgICAgICBFX25lW0oyS19RMV0gPSBFWzQgKiAocTEgLSBxdWFkX3dpZHRoKSArIDNdOwor CisgICAgICAgICAgICBFX253W0oyS19RMV0gPSAwOworCisgICAgICAgICAgICBFX25mW0oyS19R MV0gPSAwOworCisgICAgICAgICAgICBpZiAoIWlzX2RpdmlzaWJsZShxMSwgYykpCisgICAgICAg ICAgICAgICAgRV9ud1tKMktfUTFdID0gRVs0ICogKHExIC0gcXVhZF93aWR0aCkgLSAxXTsKKwor ICAgICAgICAgICAgaWYgKCFpc19kaXZpc2libGUocTEgKyAxLCBjKSkKKyAgICAgICAgICAgICAg ICBFX25mW0oyS19RMV0gPSBFWzQgKiAocTEgLSBxdWFkX3dpZHRoKSArIDVdOworCisgICAgICAg ICAgICBtYXhfZVtKMktfUTFdID0gRkZNQVgoRV9ud1tKMktfUTFdLCBGRk1BWDMoRV9uW0oyS19R MV0sIEVfbmVbSjJLX1ExXSwgRV9uZltKMktfUTFdKSk7CisKKyAgICAgICAgICAgIGthcHBhW0oy S19RMV0gPSBGRk1BWCgxLCBnYW1tYVtKMktfUTFdICogKG1heF9lW0oyS19RMV0gLSAxKSk7CisK KyAgICAgICAgICAgIFVbSjJLX1ExXSA9IGthcHBhW0oyS19RMV0gKyB1W0oyS19RMV07CisKKyAg ICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNDsgaSsrKQorICAgICAgICAgICAgICAgIG1b SjJLX1ExXVtpXSA9IHNpZ21hX25bNCAqIHExICsgaV0gKiBVW0oyS19RMV0gLSAoKGVtYl9wYXRf a1tKMktfUTFdID4+IGkpICYgMSk7CisKKyAgICAgICAgICAgIHJlY292ZXJfbWFnX3NnbihtYWdf c2duX3N0cmVhbSwgSjJLX1ExLCBxMSwgbV9uLCBrbm93bl8xLCBlbWJfcGF0XzEsIHYsIG0sCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgRSwgbXVfbiwgRGN1cCwgUGN1cCwgcExTQik7Cisg ICAgICAgICAgICAvLyBtb3ZlIHRvIHRoZSBuZXh0IHF1YWQKKyAgICAgICAgICAgIHEgKz0gMTsK KyAgICAgICAgfQorICAgIH0KKyAgICAvLyBjb252ZXJ0IHRvIHJhc3Rlci1zY2FuCisgICAgZm9y IChpbnQgeSA9IDA7IHkgPCBxdWFkX2hlaWdodDsgeSsrKSB7CisgICAgICAgIGZvciAoaW50IHgg PSAwOyB4IDwgcXVhZF93aWR0aDsgeCsrKSB7CisgICAgICAgICAgICBqMSA9IDIgKiB5OworICAg ICAgICAgICAgajIgPSAyICogeDsKKworICAgICAgICAgICAgLy8gc2V0IHNhbXBsZQorICAgICAg ICAgICAgc2FtcGxlX2J1ZltqMiArIChqMSAqIHdpZHRoKV0gPSAoaW50MzJfdCkqbXU7CisgICAg ICAgICAgICBqcGVnMjAwMF9tb2RpZnlfc3RhdGUoajEsIGoyLCB3aWR0aCwgKnNpZ21hLCBibG9j a19zdGF0ZXMpOworCisgICAgICAgICAgICBzaWdtYSArPSAxOworICAgICAgICAgICAgbXUgKz0g MTsKKworICAgICAgICAgICAgaWYgKHkgIT0gcXVhZF9oZWlnaHQgLSAxIHx8IGlzX2JvcmRlcl95 ID09IDApIHsKKyAgICAgICAgICAgICAgICBzYW1wbGVfYnVmW2oyICsgKChqMSArIDEpICogd2lk dGgpXSA9IChpbnQzMl90KSptdTsKKyAgICAgICAgICAgICAgICBqcGVnMjAwMF9tb2RpZnlfc3Rh dGUoajEgKyAxLCBqMiwgd2lkdGgsICpzaWdtYSwgYmxvY2tfc3RhdGVzKTsKKyAgICAgICAgICAg IH0KKworICAgICAgICAgICAgc2lnbWEgKz0gMTsKKyAgICAgICAgICAgIG11ICs9IDE7CisKKyAg ICAgICAgICAgIGlmICh4ICE9IHF1YWRfd2lkdGggLSAxIHx8IGlzX2JvcmRlcl94ID09IDApIHsK KyAgICAgICAgICAgICAgICBzYW1wbGVfYnVmWyhqMiArIDEpICsgKGoxICogd2lkdGgpXSA9IChp bnQzMl90KSptdTsKKyAgICAgICAgICAgICAgICBqcGVnMjAwMF9tb2RpZnlfc3RhdGUoajEsIGoy ICsgMSwgd2lkdGgsICpzaWdtYSwgYmxvY2tfc3RhdGVzKTsKKyAgICAgICAgICAgIH0KKworICAg ICAgICAgICAgc2lnbWEgKz0gMTsKKyAgICAgICAgICAgIG11ICs9IDE7CisKKyAgICAgICAgICAg IGlmICgoeSAhPSBxdWFkX2hlaWdodCAtIDEgfHwgaXNfYm9yZGVyX3kgPT0gMCkgJiYgKHggIT0g cXVhZF93aWR0aCAtIDEgfHwgaXNfYm9yZGVyX3ggPT0gMCkpIHsKKyAgICAgICAgICAgICAgICBz YW1wbGVfYnVmWyhqMiArIDEpICsgKGoxICsgMSkgKiB3aWR0aF0gPSAoaW50MzJfdCkqbXU7Cisg ICAgICAgICAgICAgICAganBlZzIwMDBfbW9kaWZ5X3N0YXRlKGoxICsgMSwgajIgKyAxLCB3aWR0 aCwgKnNpZ21hLCBibG9ja19zdGF0ZXMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc2ln bWEgKz0gMTsKKyAgICAgICAgICAgIG11ICs9IDE7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0 ID0gMTsKK2ZyZWU6CisgICAgYXZfZnJlZXAoJnNpZ21hX24pOworICAgIGF2X2ZyZWVwKCZFKTsK KyAgICBhdl9mcmVlcCgmbXVfbik7CisgICAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIHZvaWQg anBlZzIwMDBfY2FsY19tYnIodWludDhfdCAqbWJyLCBjb25zdCB1aW50MTZfdCBpLCBjb25zdCB1 aW50MTZfdCBqLCBjb25zdCB1aW50MzJfdCBtYnJfaW5mbywgdWludDhfdCBjYXVzYWxfY29uZCwg dWludDhfdCAqYmxvY2tfc3RhdGVzLCBpbnQgd2lkdGgpCit7CisKKyAgICBpbnQgbG9jYWxfbWJy ID0gMDsKKyAgICBsb2NhbF9tYnIgfD0ganBlZzIwMDBfZ2V0X3N0YXRlKGkgLSAxLCBqIC0gMSwg d2lkdGgsIEhUX1NISUZUX1NJR01BLCBibG9ja19zdGF0ZXMpOworICAgIGxvY2FsX21iciB8PSBq cGVnMjAwMF9nZXRfc3RhdGUoaSAtIDEsIGogKyAwLCB3aWR0aCwgSFRfU0hJRlRfU0lHTUEsIGJs b2NrX3N0YXRlcyk7CisgICAgbG9jYWxfbWJyIHw9IGpwZWcyMDAwX2dldF9zdGF0ZShpIC0gMSwg aiArIDEsIHdpZHRoLCBIVF9TSElGVF9TSUdNQSwgYmxvY2tfc3RhdGVzKTsKKworICAgIGxvY2Fs X21iciB8PSBqcGVnMjAwMF9nZXRfc3RhdGUoaSArIDAsIGogLSAxLCB3aWR0aCwgSFRfU0hJRlRf U0lHTUEsIGJsb2NrX3N0YXRlcyk7CisgICAgbG9jYWxfbWJyIHw9IGpwZWcyMDAwX2dldF9zdGF0 ZShpICsgMCwgaiArIDEsIHdpZHRoLCBIVF9TSElGVF9TSUdNQSwgYmxvY2tfc3RhdGVzKTsKKwor ICAgIGxvY2FsX21iciB8PSBqcGVnMjAwMF9nZXRfc3RhdGUoaSArIDEsIGogLSAxLCB3aWR0aCwg SFRfU0hJRlRfU0lHTUEsIGJsb2NrX3N0YXRlcykgKiBjYXVzYWxfY29uZDsKKyAgICBsb2NhbF9t YnIgfD0ganBlZzIwMDBfZ2V0X3N0YXRlKGkgKyAxLCBqICsgMCwgd2lkdGgsIEhUX1NISUZUX1NJ R01BLCBibG9ja19zdGF0ZXMpICogY2F1c2FsX2NvbmQ7CisgICAgbG9jYWxfbWJyIHw9IGpwZWcy MDAwX2dldF9zdGF0ZShpICsgMSwgaiArIDEsIHdpZHRoLCBIVF9TSElGVF9TSUdNQSwgYmxvY2tf c3RhdGVzKSAqIGNhdXNhbF9jb25kOworCisgICAgbG9jYWxfbWJyIHw9IGpwZWcyMDAwX2dldF9z dGF0ZShpIC0gMSwgaiAtIDEsIHdpZHRoLCBIVF9TSElGVF9SRUYsIGJsb2NrX3N0YXRlcykgKiBq cGVnMjAwMF9nZXRfc3RhdGUoaSAtIDEsIGogLSAxLCB3aWR0aCwgSFRfU0hJRlRfU0NBTiwgYmxv Y2tfc3RhdGVzKTsKKyAgICBsb2NhbF9tYnIgfD0ganBlZzIwMDBfZ2V0X3N0YXRlKGkgLSAxLCBq ICsgMCwgd2lkdGgsIEhUX1NISUZUX1JFRiwgYmxvY2tfc3RhdGVzKSAqIGpwZWcyMDAwX2dldF9z dGF0ZShpIC0gMSwgaiAtIDEsIHdpZHRoLCBIVF9TSElGVF9TQ0FOLCBibG9ja19zdGF0ZXMpOwor ICAgIGxvY2FsX21iciB8PSBqcGVnMjAwMF9nZXRfc3RhdGUoaSAtIDEsIGogKyAxLCB3aWR0aCwg SFRfU0hJRlRfUkVGLCBibG9ja19zdGF0ZXMpICoganBlZzIwMDBfZ2V0X3N0YXRlKGkgLSAxLCBq ICsgMSwgd2lkdGgsIEhUX1NISUZUX1NDQU4sIGJsb2NrX3N0YXRlcyk7CisKKyAgICBsb2NhbF9t YnIgfD0ganBlZzIwMDBfZ2V0X3N0YXRlKGkgKyAwLCBqIC0gMSwgd2lkdGgsIEhUX1NISUZUX1JF RiwgYmxvY2tfc3RhdGVzKSAqIGpwZWcyMDAwX2dldF9zdGF0ZShpICsgMCwgaiAtIDEsIHdpZHRo LCBIVF9TSElGVF9TQ0FOLCBibG9ja19zdGF0ZXMpOworICAgIGxvY2FsX21iciB8PSBqcGVnMjAw MF9nZXRfc3RhdGUoaSArIDAsIGogKyAxLCB3aWR0aCwgSFRfU0hJRlRfUkVGLCBibG9ja19zdGF0 ZXMpICoganBlZzIwMDBfZ2V0X3N0YXRlKGkgKyAwLCBqICsgMSwgd2lkdGgsIEhUX1NISUZUX1ND QU4sIGJsb2NrX3N0YXRlcyk7CisKKyAgICBsb2NhbF9tYnIgfD0ganBlZzIwMDBfZ2V0X3N0YXRl KGkgKyAxLCBqIC0gMSwgd2lkdGgsIEhUX1NISUZUX1JFRiwgYmxvY2tfc3RhdGVzKSAqIGpwZWcy MDAwX2dldF9zdGF0ZShpICsgMSwgaiAtIDEsIHdpZHRoLCBIVF9TSElGVF9TQ0FOLCBibG9ja19z dGF0ZXMpICogY2F1c2FsX2NvbmQ7CisgICAgbG9jYWxfbWJyIHw9IGpwZWcyMDAwX2dldF9zdGF0 ZShpICsgMSwgaiArIDAsIHdpZHRoLCBIVF9TSElGVF9SRUYsIGJsb2NrX3N0YXRlcykgKiBqcGVn MjAwMF9nZXRfc3RhdGUoaSArIDEsIGogKyAwLCB3aWR0aCwgSFRfU0hJRlRfU0NBTiwgYmxvY2tf c3RhdGVzKSAqIGNhdXNhbF9jb25kOworICAgIGxvY2FsX21iciB8PSBqcGVnMjAwMF9nZXRfc3Rh dGUoaSArIDEsIGogKyAxLCB3aWR0aCwgSFRfU0hJRlRfUkVGLCBibG9ja19zdGF0ZXMpICoganBl ZzIwMDBfZ2V0X3N0YXRlKGkgKyAxLCBqICsgMSwgd2lkdGgsIEhUX1NISUZUX1NDQU4sIGJsb2Nr X3N0YXRlcykgKiBjYXVzYWxfY29uZDsKKworICAgICptYnIgfD0gbG9jYWxfbWJyOworfQorc3Rh dGljIHZvaWQganBlZzIwMDBfcHJvY2Vzc19zdHJpcGVzX2Jsb2NrKFN0YXRlVmFycyAqc2lnX3By b3AsIGludCBpX3MsIGludCBqX3MsIGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50IHN0cmlkZSwg aW50IHBMU0IsIGludDMyX3QgKnNhbXBsZV9idWYsIHVpbnQ4X3QgKmJsb2NrX3N0YXRlcywgdWlu dDhfdCAqbWFncmVmX3NlZ21lbnQsIHVpbnQzMl90IG1hZ3JlZl9sZW5ndGgpCit7CisgICAgaW50 MzJfdCAqc3A7CisgICAgdWludDhfdCBjYXVzYWxfY29uZCA9IDA7CisgICAgdWludDhfdCBiaXQ7 CisgICAgdWludDhfdCBtYnI7CisgICAgdWludDMyX3QgbWJyX2luZm87CisKKyAgICBmb3IgKGlu dCBqID0gal9zOyBqIDwgal9zICsgd2lkdGg7IGorKykgeworICAgICAgICBtYnJfaW5mbyA9IDA7 CisgICAgICAgIGZvciAoaW50IGkgPSBpX3M7IGkgPCBpX3MgKyBoZWlnaHQ7IGkrKykgeworICAg ICAgICAgICAgc3AgPSAmc2FtcGxlX2J1ZltqICsgKGkgKiAoc3RyaWRlIC0gMikpXTsKKyAgICAg ICAgICAgIG1iciA9IDA7CisgICAgICAgICAgICBjYXVzYWxfY29uZCA9IGkgIT0gKGlfcyArIGhl aWdodCAtIDEpOworICAgICAgICAgICAgaWYgKGpwZWcyMDAwX2dldF9zdGF0ZShpLCBqLCBzdHJp ZGUgLSAyLCBIVF9TSElGVF9TSUdNQSwgYmxvY2tfc3RhdGVzKSA9PSAwKQorICAgICAgICAgICAg ICAgIGpwZWcyMDAwX2NhbGNfbWJyKCZtYnIsIGksIGosIG1icl9pbmZvICYgMHgxRUYsIGNhdXNh bF9jb25kLCBibG9ja19zdGF0ZXMsIHN0cmlkZSAtIDIpOworICAgICAgICAgICAgbWJyX2luZm8g Pj49IDM7CisgICAgICAgICAgICBpZiAobWJyICE9IDApIHsKKyAgICAgICAgICAgICAgICBqcGVn MjAwMF9tb2RpZnlfc3RhdGUoaSwgaiwgc3RyaWRlIC0gMiwgMSA8PCBIVF9TSElGVF9SRUZfSU5E LCBibG9ja19zdGF0ZXMpOworICAgICAgICAgICAgICAgIGJpdCA9IGpwZWcyMDAwX2ltcG9ydF9i aXQoc2lnX3Byb3AsIG1hZ3JlZl9zZWdtZW50LCBtYWdyZWZfbGVuZ3RoKTsKKyAgICAgICAgICAg ICAgICBqcGVnMjAwMF9tb2RpZnlfc3RhdGUoaSwgaiwgc3RyaWRlIC0gMiwgMSA8PCBIVF9TSElG VF9SRUYsIGJsb2NrX3N0YXRlcyk7CisgICAgICAgICAgICAgICAgKnNwIHw9IGJpdCA8PCBwTFNC OworICAgICAgICAgICAgfQorICAgICAgICAgICAganBlZzIwMDBfbW9kaWZ5X3N0YXRlKGksIGos IHN0cmlkZSAtIDIsIDEgPDwgSFRfU0hJRlRfU0NBTiwgYmxvY2tfc3RhdGVzKTsKKyAgICAgICAg fQorICAgIH0KKyAgICBmb3IgKGludCBqID0gMDsgaiA8IGpfcyArIHdpZHRoOyBqKyspIHsKKyAg ICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBpX3MgKyBoZWlnaHQ7IGkrKykgeworICAgICAgICAg ICAgc3AgPSAmc2FtcGxlX2J1ZltqICsgKGkgKiAoc3RyaWRlIC0gMikpXTsKKyAgICAgICAgICAg IGlmICgoKnNwICYgKDEgPDwgcExTQikpICE9IDApCisgICAgICAgICAgICAgICAgKnNwID0gKCpz cCAmIDB4N0ZGRkZGRkYpIHwgKGpwZWcyMDAwX2ltcG9ydF9iaXQoc2lnX3Byb3AsIG1hZ3JlZl9z ZWdtZW50LCBtYWdyZWZfbGVuZ3RoKSA8PCAzMSk7CisKKyAgICAgICAgfQorICAgIH0KK30KKwor c3RhdGljIHZvaWQganBlZzIwMDBfZGVjb2RlX3NpZ3Byb3AoSnBlZzIwMDBDYmxrICpjYmxrLCB1 aW50MTZfdCB3aWR0aCwgdWludDE2X3QgaGVpZ2h0LCB1aW50OF90ICptYWdyZWZfc2VnbWVudCwg dWludDMyX3QgbWFncmVmX2xlbmd0aCwgdWludDhfdCBwTFNCLCBpbnQzMl90ICpzYW1wbGVfYnVm LCB1aW50OF90ICpibG9ja19zdGF0ZXMpCit7CisgICAgLy8gRGVzY3JpYmVkIGluIGNsYXVzZSA3 LjQKKyAgICAvLyBwcm9jZWR1cmU6IGRlY29kZVNpZ1Byb3BNYWcKKworICAgIFN0YXRlVmFycyBz cF9kZWM7CisgICAgY29uc3QgdWludDE2X3QgbnVtX3Zfc3RyaXBlID0gaGVpZ2h0IC8gNDsKKyAg ICBjb25zdCB1aW50MTZfdCBudW1faF9zdHJpcGUgPSB3aWR0aCAvIDQ7CisgICAgaW50IGJfd2lk dGggPSA0OworICAgIGludCBiX2hlaWdodCA9IDQ7CisgICAgaW50IHN0cmlkZSA9IHdpZHRoICsg MjsKKyAgICBpbnQgbGFzdF93aWR0aDsKKyAgICB1aW50MTZfdCBpID0gMCwgaiA9IDA7CisKKyAg ICBqcGVnMjAwMF9pbml0X3plcm8oJnNwX2RlYyk7CisKKyAgICBmb3IgKGludCBuMSA9IDA7IG4x IDwgbnVtX3Zfc3RyaXBlOyBuMSsrKSB7CisgICAgICAgIGogPSAwOworICAgICAgICBmb3IgKGlu dCBuMiA9IDA7IG4yIDwgbnVtX2hfc3RyaXBlOyBuMisrKSB7CisgICAgICAgICAgICBqcGVnMjAw MF9wcm9jZXNzX3N0cmlwZXNfYmxvY2soJnNwX2RlYywgaSwgaiwgYl93aWR0aCwgYl9oZWlnaHQs IHN0cmlkZSwgcExTQiwgc2FtcGxlX2J1ZiwgYmxvY2tfc3RhdGVzLCBtYWdyZWZfc2VnbWVudCwg bWFncmVmX2xlbmd0aCk7CisgICAgICAgICAgICBqICs9IDQ7CisgICAgICAgIH0KKyAgICAgICAg bGFzdF93aWR0aCA9IHdpZHRoICUgNDsKKyAgICAgICAgaWYgKGxhc3Rfd2lkdGgpCisgICAgICAg ICAgICBqcGVnMjAwMF9wcm9jZXNzX3N0cmlwZXNfYmxvY2soJnNwX2RlYywgaSwgaiwgbGFzdF93 aWR0aCwgYl9oZWlnaHQsIHN0cmlkZSwgcExTQiwgc2FtcGxlX2J1ZiwgYmxvY2tfc3RhdGVzLCBt YWdyZWZfc2VnbWVudCwgbWFncmVmX2xlbmd0aCk7CisgICAgICAgIGkgKz0gNDsKKyAgICB9Cisg ICAgLy8gZGVjb2RlIHJlbWFpbmluZyBoZWlnaHQgc3RyaXBlcworICAgIGJfaGVpZ2h0ID0gaGVp Z2h0ICUgNDsKKyAgICBqID0gMDsKKyAgICBmb3IgKGludCBuMiA9IDA7IG4yIDwgbnVtX2hfc3Ry aXBlOyBuMisrKSB7CisgICAgICAgIGpwZWcyMDAwX3Byb2Nlc3Nfc3RyaXBlc19ibG9jaygmc3Bf ZGVjLCBpLCBqLCBiX3dpZHRoLCBiX2hlaWdodCwgc3RyaWRlLCBwTFNCLCBzYW1wbGVfYnVmLCBi bG9ja19zdGF0ZXMsIG1hZ3JlZl9zZWdtZW50LCBtYWdyZWZfbGVuZ3RoKTsKKyAgICAgICAgaiAr PSA0OworICAgIH0KKyAgICBsYXN0X3dpZHRoID0gd2lkdGggJSA0OworICAgIGlmIChsYXN0X3dp ZHRoKQorICAgICAgICBqcGVnMjAwMF9wcm9jZXNzX3N0cmlwZXNfYmxvY2soJnNwX2RlYywgaSwg aiwgbGFzdF93aWR0aCwgYl9oZWlnaHQsIHN0cmlkZSwgcExTQiwgc2FtcGxlX2J1ZiwgYmxvY2tf c3RhdGVzLCBtYWdyZWZfc2VnbWVudCwgbWFncmVmX2xlbmd0aCk7Cit9CisKK3N0YXRpYyBpbnQg anBlZzIwMDBfZGVjb2RlX21hZ3JlZihKcGVnMjAwMENibGsgKmNibGssIHVpbnQxNl90IHdpZHRo LCB1aW50MTZfdCBibG9ja19oZWlnaHQsIHVpbnQ4X3QgKm1hZ3JlZl9zZWdtZW50LCB1aW50MzJf dCBtYWdyZWZfbGVuZ3RoLCB1aW50OF90IHBMU0IsIGludDMyX3QgKnNhbXBsZV9idWYsIHVpbnQ4 X3QgKmJsb2NrX3N0YXRlcykKK3sKKyAgICAvLyBEZXNjcmliZWQgaW4gY2xhdXNlIDcuNQorICAg IC8vIHByb2NlZHVyZTogZGVjb2RlU2lnUHJvcE1hZworCisgICAgU3RhdGVWYXJzIG1hZ19yZWYg PSB7MH07CisgICAgY29uc3QgdWludDE2X3QgbnVtX3Zfc3RyaXBlID0gYmxvY2tfaGVpZ2h0IC8g NDsKKyAgICB1aW50MTZfdCBoZWlnaHQgPSA0OworICAgIHVpbnQxNl90IGlfc3RhcnQgPSAwOwor ICAgIGludDMyX3QgKnNwOworCisgICAganBlZzIwMDBfaW5pdF9tYWdfcmVmKCZtYWdfcmVmLCBt YWdyZWZfbGVuZ3RoKTsKKworICAgIGZvciAoaW50IG4xID0gMDsgbjEgPCBudW1fdl9zdHJpcGU7 IG4xKyspIHsKKyAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCB3aWR0aDsgaisrKSB7CisgICAg ICAgICAgICBmb3IgKGludCBpID0gaV9zdGFydDsgaSA8IGlfc3RhcnQgKyBoZWlnaHQ7IGkrKykg eworICAgICAgICAgICAgICAgIC8vIHdlIG1vdmUgY29sdW1uIHdpc2UsIGdvaW5nIGZyb20gb25l IHF1YWQgdG8gYW5vdGhlcgorICAgICAgICAgICAgICAgIC8vIHNlZSBmaWd1cmUgNy4KKyAgICAg ICAgICAgICAgICBzcCA9ICZzYW1wbGVfYnVmW2ogKyBpICogd2lkdGhdOworICAgICAgICAgICAg ICAgIGlmIChqcGVnMjAwMF9nZXRfc3RhdGUoaSwgaiwgd2lkdGgsIEhUX1NISUZUX1NJR01BLCBi bG9ja19zdGF0ZXMpICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAganBlZzIwMDBfbW9kaWZ5 X3N0YXRlKGksIGosIHdpZHRoLCAxIDw8IEhUX1NISUZUX1JFRl9JTkQsIGJsb2NrX3N0YXRlcyk7 CisgICAgICAgICAgICAgICAgICAgICpzcCB8PSBqcGVnMjAwMF9pbXBvcnRfbWFncmVmX2JpdCgm bWFnX3JlZiwgbWFncmVmX3NlZ21lbnQsIG1hZ3JlZl9sZW5ndGgpIDw8IHBMU0I7CisgICAgICAg ICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlfc3RhcnQgKz0g NDsKKyAgICB9CisgICAgaGVpZ2h0ID0gYmxvY2tfaGVpZ2h0ICUgNDsKKyAgICBmb3IgKGludCBq ID0gMDsgaiA8IHdpZHRoOyBqKyspIHsKKyAgICAgICAgZm9yIChpbnQgaSA9IGlfc3RhcnQ7IGkg PCBpX3N0YXJ0ICsgaGVpZ2h0OyBpKyspIHsKKyAgICAgICAgICAgIHNwID0gJnNhbXBsZV9idWZb aiArIGkgKiB3aWR0aF07CisgICAgICAgICAgICBpZiAoanBlZzIwMDBfZ2V0X3N0YXRlKGksIGos IHdpZHRoLCBIVF9TSElGVF9TSUdNQSwgYmxvY2tfc3RhdGVzKSAhPSAwKSB7CisgICAgICAgICAg ICAgICAganBlZzIwMDBfbW9kaWZ5X3N0YXRlKGksIGosIHdpZHRoLCAxIDw8IEhUX1NISUZUX1JF Rl9JTkQsIGJsb2NrX3N0YXRlcyk7CisgICAgICAgICAgICAgICAgKnNwIHw9IGpwZWcyMDAwX2lt cG9ydF9tYWdyZWZfYml0KCZtYWdfcmVmLCBtYWdyZWZfc2VnbWVudCwgbWFncmVmX2xlbmd0aCkg PDwgcExTQjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gMTsK K30KKworaW50IGRlY29kZV9odGoyayhKcGVnMjAwMERlY29kZXJDb250ZXh0ICpzLCBKcGVnMjAw MENvZGluZ1N0eWxlICpjb2RzdHksIEpwZWcyMDAwVDFDb250ZXh0ICp0MSwgSnBlZzIwMDBDYmxr ICpjYmxrLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGludCBtYWdwLCB1aW50OF90IHJvaV9zaGlm dCkKK3sKKyAgICB1aW50OF90IHAwID0gMDsgICAgIC8vIE51bWJlciBvZiBwbGFjZWhvbGRlciBw YXNzZXMuCisgICAgdWludDMyX3QgTGN1cDsgICAgICAvLyBMZW5ndGggb2YgSFQgY2xlYW51cCBz ZWdtZW50LgorICAgIHVpbnQzMl90IExyZWY7ICAgICAgLy8gTGVuZ3RoIG9mIFJlZmluZW1lbnQg c2VnbWVudC4KKyAgICB1aW50MzJfdCBTY3VwOyAgICAgIC8vIEhUIGNsZWFudXAgc2VnbWVudCBz dWZmaXggbGVuZ3RoLgorICAgIHVpbnQzMl90IFBjdXA7ICAgICAgLy8gSFQgY2xlYW51cCBzZWdt ZW50IHByZWZpeCBsZW5ndGguCisKKyAgICB1aW50OF90IFNfYmxrOyAgICAgIC8vIE51bWJlciBv ZiBza2lwcGVkIG1hZ25pdHVkZSBiaXRwbGFuZXM7CisgICAgdWludDhfdCBwTFNCOworCisgICAg dWludDhfdCAqRGN1cDsgICAgICAvLyBCeXRlIG9mIGFuIEhUIGNsZWFudXAgc2VnbWVudC4KKyAg ICB1aW50OF90ICpEcmVmOyAgICAgIC8vIEJ5dGUgb2YgYW4gSFQgcmVmaW5lbWVudCBzZWdtZW50 LgorCisgICAgaW50IHpfYmxrOyAgICAgICAgICAvLyBOdW1iZXIgb2YgaHQgY29kaW5nIHBhc3MK KworICAgIHVpbnQ4X3QgZW1wdHlfcGFzc2VzOworCisgICAgU3RhdGVWYXJzIG1hZ19zZ247ICAv LyBNYWduaXR1ZGUgYW5kIFNpZ24KKyAgICBTdGF0ZVZhcnMgbWVsOyAgICAgIC8vIEFkYXB0aXZl IHJ1bi1sZW5ndGggY29kaW5nCisgICAgU3RhdGVWYXJzIHZsYzsgICAgICAvLyBWYXJpYWJsZSBM ZW5ndGggY29kaW5nCisgICAgU3RhdGVWYXJzIHNpZ19wcm9wOyAvLyBTaWduaWZpY2FuY2UgcHJv cGFnYXRpb24KKworICAgIE1lbERlY29kZXJTdGF0ZSBtZWxfc3RhdGU7CisKKyAgICBpbnQgcmV0 OworCisgICAgLy8gVGVtcG9yYXJ5IGJ1ZmZlcnMKKyAgICBpbnQzMl90ICpzYW1wbGVfYnVmOwor ICAgIHVpbnQ4X3QgKmJsb2NrX3N0YXRlczsKKworICAgIC8vIFBvc3QtcHJvY2Vzc2luZworICAg IGludDMyX3QgbiwgdmFsLCBzaWduOworCisgICAgaW50MzJfdCBNX2IgPSBtYWdwOworICAgIGF2 X2Fzc2VydDAod2lkdGggPD0gMTAyNFUgJiYgaGVpZ2h0IDw9IDEwMjRVKTsKKyAgICBhdl9hc3Nl cnQwKHdpZHRoICogaGVpZ2h0IDw9IDQwOTYpOworICAgIGF2X2Fzc2VydDAod2lkdGggKiBoZWln aHQgPiAwKTsKKworICAgIG1lbXNldCh0MS0+ZGF0YSwgMCwgdDEtPnN0cmlkZSAqIGhlaWdodCAq IHNpemVvZigqdDEtPmRhdGEpKTsKKyAgICBtZW1zZXQodDEtPmZsYWdzLCAwLCB0MS0+c3RyaWRl ICogKGhlaWdodCArIDIpICogc2l6ZW9mKCp0MS0+ZmxhZ3MpKTsKKworICAgIGlmIChjYmxrLT5u cGFzc2VzID09IDApCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKGNibGstPm5wYXNzZXMg PiAzKQorICAgICAgICAvLyBDdXJyZW50bHkgdXNlIHRoaXMgYXMgYSBkdW1teSBidXQgc2hvdWxk IGJlIGZpeGVkIHNvb24KKyAgICAgICAgcDAgPSAwOworICAgIGVsc2UgaWYgKGNibGstPmxlbmd0 aCA9PSAwKQorICAgICAgICBwMCA9IDE7CisKKyAgICBlbXB0eV9wYXNzZXMgPSBwMCAqIDM7Cisg ICAgel9ibGsgPSBjYmxrLT5ucGFzc2VzIC0gZW1wdHlfcGFzc2VzOworCisgICAgaWYgKHpfYmxr IDw9IDApCisgICAgICAgIC8vIG5vIHBhc3NlcyB3aXRoaW4gdGhpcyBzZXQsIGNvbnRpbnVlCisg ICAgICAgIHJldHVybiAwOworCisgICAgTGN1cCA9IGNibGstPnBhc3NfbGVuZ3Roc1swXTsKKyAg ICBMcmVmID0gY2Jsay0+cGFzc19sZW5ndGhzWzFdOworCisgICAgaWYgKExjdXAgPCAyKSB7Cisg ICAgICAgIGF2X2xvZyhzLT5hdmN0eCwgQVZfTE9HX0VSUk9SLAorICAgICAgICAgICAgICAgIkNs ZWFudXAgcGFzcyBsZW5ndGggbXVzdCBiZSBhdCBsZWFzdCAyIGJ5dGVzIGluIGxlbmd0aFxuIik7 CisgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOworICAgIH0KKyAgICBEY3VwID0g Y2Jsay0+ZGF0YTsKKyAgICAvLyBEcmVmIGNvbWVzIGFmdGVyIHRoZSByZWZpbmVtZW50IHNlZ21l bnQuCisgICAgRHJlZiA9IGNibGstPmRhdGEgKyBMY3VwOworICAgIFNfYmxrID0gcDAgKyBjYmxr LT56YnA7CisKKyAgICBwTFNCID0gMzAgLSBTX2JsazsKKworICAgIFNjdXAgPSAoRGN1cFtMY3Vw IC0gMV0gPDwgNCkgKyAoRGN1cFtMY3VwIC0gMl0gJiAweDBGKTsKKworICAgIGlmIChTY3VwIDwg MiB8fCBTY3VwID4gTGN1cCB8fCBTY3VwID4gNDA3OSkgeworICAgICAgICBhdl9sb2cocy0+YXZj dHgsIEFWX0xPR19FUlJPUiwgIkNsZWFudXAgcGFzcyBzdWZmaXggbGVuZ3RoIGlzIGludmFsaWQg JWRcbiIsCisgICAgICAgICAgICAgICBTY3VwKTsKKyAgICAgICAgcmV0ID0gQVZFUlJPUl9JTlZB TElEREFUQTsKKyAgICAgICAgZ290byBmcmVlOworICAgIH0KKyAgICBQY3VwID0gTGN1cCAtIFNj dXA7CisKKyAgICAvLyBtb2REY3VwIHNoYWxsIGJlIGRvbmUgYmVmb3JlIHRoZSBjcmVhdGlvbiBv ZiB2bGMgaW5zdGFuY2UuCisgICAgRGN1cFtMY3VwIC0gMV0gPSAweEZGOworICAgIERjdXBbTGN1 cCAtIDJdIHw9IDB4MEY7CisgICAgLy8gTWFnbml0dWRlIGFuZCByZWZpbmVtZW50CisgICAganBl ZzIwMDBfaW5pdF96ZXJvKCZtYWdfc2duKTsKKyAgICBqcGVnMjAwMF9iaXRidWZfcmVmaWxsX2Zv cndhcmQoJm1hZ19zZ24sIERjdXAsIFBjdXApOworICAgIC8vIFNpZ25pZmljYW5jZSBwcm9wYWdh dGlvbgorICAgIGpwZWcyMDAwX2luaXRfemVybygmc2lnX3Byb3ApOworICAgIC8vIEFkYXB0aXZl IHJ1biBsZW5ndGgKKyAgICBqcGVnMjAwMF9pbml0X21lbCgmbWVsLCBQY3VwKTsKKyAgICAvLyBW YXJpYWJsZSBMZW5ndGggY29kaW5nLgorICAgIGpwZWcyMDAwX2luaXRfdmxjKCZ2bGMsIExjdXAs IFBjdXAsIERjdXApOworCisgICAganBlZzIwMDBfaW5pdF9tZWxfZGVjb2RlcigmbWVsX3N0YXRl KTsKKworICAgIHNhbXBsZV9idWYgPSBhdl9jYWxsb2Mod2lkdGggKiBoZWlnaHQsIHNpemVvZihp bnQzMl90KSk7CisgICAgYmxvY2tfc3RhdGVzID0gYXZfY2FsbG9jKCh3aWR0aCArIDQpICogKGhl aWdodCArIDQpLCBzaXplb2YodWludDhfdCkpOworCisgICAgaWYgKCFzYW1wbGVfYnVmIHx8ICFi bG9ja19zdGF0ZXMpIHsKKyAgICAgICAgcmV0ID0gQVZFUlJPUihFTk9NRU0pOworICAgICAgICBn b3RvIGZyZWU7CisgICAgfQorICAgIGlmICgocmV0ID0ganBlZzIwMDBfZGVjb2RlX2h0X2NsZWFu dXAocywgY2JsaywgdDEsICZtZWxfc3RhdGUsICZtZWwsICZ2bGMsICZtYWdfc2duLCBEY3VwLCBM Y3VwLCBQY3VwLCBwTFNCLCB3aWR0aCwgaGVpZ2h0LCBzYW1wbGVfYnVmLCBibG9ja19zdGF0ZXMp KSA8IDApCisgICAgICAgIGdvdG8gZnJlZTsKKworICAgIGlmIChjYmxrLT5ucGFzc2VzID4gMSkK KyAgICAgICAganBlZzIwMDBfZGVjb2RlX3NpZ3Byb3AoY2Jsaywgd2lkdGgsIGhlaWdodCwgRHJl ZiwgTHJlZiwgcExTQiAtIDEsIHNhbXBsZV9idWYsIGJsb2NrX3N0YXRlcyk7CisKKyAgICBpZiAo Y2Jsay0+bnBhc3NlcyA+IDIpCisgICAgICAgIGlmICgocmV0ID0ganBlZzIwMDBfZGVjb2RlX21h Z3JlZihjYmxrLCB3aWR0aCwgaGVpZ2h0LCBEcmVmLCBMcmVmLCBwTFNCIC0gMSwgc2FtcGxlX2J1 ZiwgYmxvY2tfc3RhdGVzKSkgPCAwKQorICAgICAgICAgICAgZ290byBmcmVlOworCisgICAgcExT QiA9IDMxIC0gTV9iOworICAgIC8vIFJlY29uc3RydWN0IHRoZSB2YWx1ZXMuCisgICAgZm9yIChp bnQgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykgeworICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8 IHdpZHRoOyB4KyspIHsKKyAgICAgICAgICAgIG4gPSB4ICsgKHkgKiB0MS0+c3RyaWRlKTsKKyAg ICAgICAgICAgIHZhbCA9IHNhbXBsZV9idWZbeCArICh5ICogd2lkdGgpXTsKKyAgICAgICAgICAg IHNpZ24gPSB2YWwgJiAweDgwMDAwMDAwOworICAgICAgICAgICAgdmFsICY9IDB4N2ZmZmZmZmY7 CisgICAgICAgICAgICAvLyBjb252ZXJ0IHNpZ24tbWFnbml0dWRlIHRvIHR3b3MgY29tcGxlbWVu dCBmb3JtCisgICAgICAgICAgICBpZiAoc2lnbikKKyAgICAgICAgICAgICAgICB2YWwgPSAtdmFs OworICAgICAgICAgICAgdmFsID4+PSAocExTQiAtIDEpOworICAgICAgICAgICAgdDEtPmRhdGFb bl0gPSB2YWw7CisgICAgICAgIH0KKyAgICB9CitmcmVlOgorICAgIGF2X2ZyZWVwKCZzYW1wbGVf YnVmKTsKKyAgICBhdl9mcmVlcCgmYmxvY2tfc3RhdGVzKTsKKyAgICByZXR1cm4gcmV0OworfQpk aWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9qcGVnMjAwMGh0ZGVjLmggYi9saWJhdmNvZGVjL2pwZWcy MDAwaHRkZWMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi45ZTU2OTI4 MTBhCi0tLSAvZGV2L251bGwKKysrIGIvbGliYXZjb2RlYy9qcGVnMjAwMGh0ZGVjLmgKQEAgLTAs MCArMSwyMTAgQEAKKy8qCisqIEpQRUcyMDAwIEhpZ2ggVGhyb3VnaHB1dCBibG9jayBkZWNvZGVy CisqIENvcHlyaWdodCAoYykgMjAyMiBDYWxlYiBFdGVtZXNpPGV0ZW1lc2ljYWxlYkBnbWFpbC5j b20+CisqCisqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4KKyoKKyogRkZtcGVnIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorKiBtb2RpZnkgaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisqIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor KiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0 ZXIgdmVyc2lvbi4KKyoKKyogRkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsCisqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisqIExlc3NlciBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisqCisqIFlvdSBzaG91bGQgaGF2ZSBy ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyogTGljZW5z ZSBhbG9uZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQor KiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0 b24sIE1BIDAyMTEwLTEzMDEgVVNBCisqLworI2lmbmRlZiBBVkNPREVDX0pQRUcyMDAwSFRERUNf SAorI2RlZmluZSBBVkNPREVDX0pQRUcyMDAwSFRERUNfSAorCisjaW5jbHVkZSA8c3RkaW50Lmg+ CisjaW5jbHVkZSAianBlZzIwMDAuaCIKKwordHlwZWRlZiBzdHJ1Y3QgU3RhdGVWYXJzIHsKKyAg aW50MzJfdCBwb3M7CisgIHVpbnQzMl90IGJpdHM7CisgIHVpbnQzMl90IHRtcDsKKyAgdWludDMy X3QgbGFzdDsKKyAgdWludDhfdCBiaXRzX2xlZnQ7CisgIHVpbnQ2NF90IGJpdF9idWY7Cit9IFN0 YXRlVmFyczsKKwordHlwZWRlZiBzdHJ1Y3QgTWVsRGVjb2RlclN0YXRlIHsKKyAgdWludDhfdCBr OworICB1aW50OF90IHJ1bjsKKyAgdWludDhfdCBvbmU7Cit9IE1lbERlY29kZXJTdGF0ZTsKKwor CisKK2ludCBkZWNvZGVfaHRqMmsoSnBlZzIwMDBEZWNvZGVyQ29udGV4dCAqcywgSnBlZzIwMDBD b2RpbmdTdHlsZSAqY29kc3R5LCBKcGVnMjAwMFQxQ29udGV4dCAqdDEsIEpwZWcyMDAwQ2JsayAq Y2JsaywgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQgbWFncCwgdWludDhfdCByb2lfc2hpZnQp OworCisvKioKKyAqIEBicmllZiAgQ3R4VkxDIHRhYmxlcywgYm9ycm93ZWQgZnJvbSBvcGVuaHRq MmsgKGh0dHBzOi8vZ2l0aHViLmNvbS9vc2FtdTYyMC9PcGVuSFRKMkspIChjcmVkaXRzIHRvIE9z YW11IFdhdGFuYWJlKQorICovCitzdGF0aWMgY29uc3QgdWludDE2X3QgZGVjX0N4dFZMQ190YWJs ZTFbMTAyNF0gPSB7CisgICAgMHgwMDE2LCAweDAwNkEsIDB4MDA0NiwgMHgwMERELCAweDAwODYs IDB4ODg4QiwgMHgwMDI2LCAweDQ0NEQsIDB4MDAxNiwgMHgwMEFBLCAweDAwNDYsIDB4ODhBRCwg MHgwMDg2LAorICAgIDB4MDAzQSwgMHgwMDI2LCAweDAwREUsIDB4MDAxNiwgMHgwMENBLCAweDAw NDYsIDB4MDA5RCwgMHgwMDg2LCAweDAwNUEsIDB4MDAyNiwgMHgyMjJELCAweDAwMTYsIDB4MDA5 QSwKKyAgICAweDAwNDYsIDB4MDA3RCwgMHgwMDg2LCAweDAxRkQsIDB4MDAyNiwgMHgwMDdFLCAw eDAwMTYsIDB4MDA2QSwgMHgwMDQ2LCAweDg4Q0QsIDB4MDA4NiwgMHg4ODhCLCAweDAwMjYsCisg ICAgMHgxMTFELCAweDAwMTYsIDB4MDBBQSwgMHgwMDQ2LCAweDAwNUQsIDB4MDA4NiwgMHgwMDNB LCAweDAwMjYsIDB4MDBFRSwgMHgwMDE2LCAweDAwQ0EsIDB4MDA0NiwgMHgwMEJELAorICAgIDB4 MDA4NiwgMHgwMDVBLCAweDAwMjYsIDB4MTFGRiwgMHgwMDE2LCAweDAwOUEsIDB4MDA0NiwgMHgw MDNELCAweDAwODYsIDB4MDRFRCwgMHgwMDI2LCAweDJBQUYsIDB4MDAxNiwKKyAgICAweDAwNkEs IDB4MDA0NiwgMHgwMERELCAweDAwODYsIDB4ODg4QiwgMHgwMDI2LCAweDQ0NEQsIDB4MDAxNiwg MHgwMEFBLCAweDAwNDYsIDB4ODhBRCwgMHgwMDg2LCAweDAwM0EsCisgICAgMHgwMDI2LCAweDQ0 RUYsIDB4MDAxNiwgMHgwMENBLCAweDAwNDYsIDB4MDA5RCwgMHgwMDg2LCAweDAwNUEsIDB4MDAy NiwgMHgyMjJELCAweDAwMTYsIDB4MDA5QSwgMHgwMDQ2LAorICAgIDB4MDA3RCwgMHgwMDg2LCAw eDAxRkQsIDB4MDAyNiwgMHgwMEJFLCAweDAwMTYsIDB4MDA2QSwgMHgwMDQ2LCAweDg4Q0QsIDB4 MDA4NiwgMHg4ODhCLCAweDAwMjYsIDB4MTExRCwKKyAgICAweDAwMTYsIDB4MDBBQSwgMHgwMDQ2 LCAweDAwNUQsIDB4MDA4NiwgMHgwMDNBLCAweDAwMjYsIDB4NENDRiwgMHgwMDE2LCAweDAwQ0Es IDB4MDA0NiwgMHgwMEJELCAweDAwODYsCisgICAgMHgwMDVBLCAweDAwMjYsIDB4MDBGRSwgMHgw MDE2LCAweDAwOUEsIDB4MDA0NiwgMHgwMDNELCAweDAwODYsIDB4MDRFRCwgMHgwMDI2LCAweDAw NkYsIDB4MDAwMiwgMHgwMDg4LAorICAgIDB4MDAwMiwgMHgwMDVDLCAweDAwMDIsIDB4MDAxOCwg MHgwMDAyLCAweDAwREUsIDB4MDAwMiwgMHgwMDI4LCAweDAwMDIsIDB4MDA5QywgMHgwMDAyLCAw eDAwNEEsIDB4MDAwMiwKKyAgICAweDAwN0UsIDB4MDAwMiwgMHgwMDg4LCAweDAwMDIsIDB4MDBD QywgMHgwMDAyLCAweDAwMTgsIDB4MDAwMiwgMHg4ODhGLCAweDAwMDIsIDB4MDAyOCwgMHgwMDAy LCAweDAwRkUsCisgICAgMHgwMDAyLCAweDAwM0EsIDB4MDAwMiwgMHgyMjJGLCAweDAwMDIsIDB4 MDA4OCwgMHgwMDAyLCAweDA0RkQsIDB4MDAwMiwgMHgwMDE4LCAweDAwMDIsIDB4MDBCRSwgMHgw MDAyLAorICAgIDB4MDAyOCwgMHgwMDAyLCAweDAwQkYsIDB4MDAwMiwgMHgwMDRBLCAweDAwMDIs IDB4MDA2RSwgMHgwMDAyLCAweDAwODgsIDB4MDAwMiwgMHgwMEFDLCAweDAwMDIsIDB4MDAxOCwK KyAgICAweDAwMDIsIDB4NDQ0RiwgMHgwMDAyLCAweDAwMjgsIDB4MDAwMiwgMHgwMEVFLCAweDAw MDIsIDB4MDAzQSwgMHgwMDAyLCAweDExM0YsIDB4MDAwMiwgMHgwMDg4LCAweDAwMDIsCisgICAg MHgwMDVDLCAweDAwMDIsIDB4MDAxOCwgMHgwMDAyLCAweDAwQ0YsIDB4MDAwMiwgMHgwMDI4LCAw eDAwMDIsIDB4MDA5QywgMHgwMDAyLCAweDAwNEEsIDB4MDAwMiwgMHgwMDZGLAorICAgIDB4MDAw MiwgMHgwMDg4LCAweDAwMDIsIDB4MDBDQywgMHgwMDAyLCAweDAwMTgsIDB4MDAwMiwgMHgwMDlG LCAweDAwMDIsIDB4MDAyOCwgMHgwMDAyLCAweDAwRUYsIDB4MDAwMiwKKyAgICAweDAwM0EsIDB4 MDAwMiwgMHgyMzNGLCAweDAwMDIsIDB4MDA4OCwgMHgwMDAyLCAweDA0RkQsIDB4MDAwMiwgMHgw MDE4LCAweDAwMDIsIDB4MDBBRiwgMHgwMDAyLCAweDAwMjgsCisgICAgMHgwMDAyLCAweDQ0RkYs IDB4MDAwMiwgMHgwMDRBLCAweDAwMDIsIDB4MDA1RiwgMHgwMDAyLCAweDAwODgsIDB4MDAwMiwg MHgwMEFDLCAweDAwMDIsIDB4MDAxOCwgMHgwMDAyLAorICAgIDB4MDA3RiwgMHgwMDAyLCAweDAw MjgsIDB4MDAwMiwgMHgwMERGLCAweDAwMDIsIDB4MDAzQSwgMHgwMDAyLCAweDExMUYsIDB4MDAw MiwgMHgwMDI4LCAweDAwMDIsIDB4MDA1QywKKyAgICAweDAwMDIsIDB4MDA4QSwgMHgwMDAyLCAw eDAwQkYsIDB4MDAwMiwgMHgwMDE4LCAweDAwMDIsIDB4MDBGRSwgMHgwMDAyLCAweDAwQ0MsIDB4 MDAwMiwgMHgwMDdFLCAweDAwMDIsCisgICAgMHgwMDI4LCAweDAwMDIsIDB4OEZGRiwgMHgwMDAy LCAweDAwNEEsIDB4MDAwMiwgMHgwMDdGLCAweDAwMDIsIDB4MDAxOCwgMHgwMDAyLCAweDAwREYs IDB4MDAwMiwgMHgwMEFDLAorICAgIDB4MDAwMiwgMHgxMzNGLCAweDAwMDIsIDB4MDAyOCwgMHgw MDAyLCAweDIyMkQsIDB4MDAwMiwgMHgwMDhBLCAweDAwMDIsIDB4MDBCRSwgMHgwMDAyLCAweDAw MTgsIDB4MDAwMiwKKyAgICAweDQ0RUYsIDB4MDAwMiwgMHgyQUFELCAweDAwMDIsIDB4MDA2RSwg MHgwMDAyLCAweDAwMjgsIDB4MDAwMiwgMHgxNUZGLCAweDAwMDIsIDB4MDA0QSwgMHgwMDAyLCAw eDAwOUUsCisgICAgMHgwMDAyLCAweDAwMTgsIDB4MDAwMiwgMHgwMENGLCAweDAwMDIsIDB4MDAz QywgMHgwMDAyLCAweDIyM0YsIDB4MDAwMiwgMHgwMDI4LCAweDAwMDIsIDB4MDA1QywgMHgwMDAy LAorICAgIDB4MDA4QSwgMHgwMDAyLCAweDJCQkYsIDB4MDAwMiwgMHgwMDE4LCAweDAwMDIsIDB4 MDRFRiwgMHgwMDAyLCAweDAwQ0MsIDB4MDAwMiwgMHgwMDZGLCAweDAwMDIsIDB4MDAyOCwKKyAg ICAweDAwMDIsIDB4MjdGRiwgMHgwMDAyLCAweDAwNEEsIDB4MDAwMiwgMHgwMDlGLCAweDAwMDIs IDB4MDAxOCwgMHgwMDAyLCAweDAwREUsIDB4MDAwMiwgMHgwMEFDLCAweDAwMDIsCisgICAgMHg0 NDRGLCAweDAwMDIsIDB4MDAyOCwgMHgwMDAyLCAweDIyMkQsIDB4MDAwMiwgMHgwMDhBLCAweDAw MDIsIDB4OEFBRiwgMHgwMDAyLCAweDAwMTgsIDB4MDAwMiwgMHgwMEVFLAorICAgIDB4MDAwMiwg MHgyQUFELCAweDAwMDIsIDB4MDA1RiwgMHgwMDAyLCAweDAwMjgsIDB4MDAwMiwgMHg0NEZGLCAw eDAwMDIsIDB4MDA0QSwgMHgwMDAyLCAweDg4OEYsIDB4MDAwMiwKKyAgICAweDAwMTgsIDB4MDAw MiwgMHhBQUFGLCAweDAwMDIsIDB4MDAzQywgMHgwMDAyLCAweDExMUYsIDB4MDAwNCwgMHg4RkZE LCAweDAwMjgsIDB4MDA1QywgMHgwMDA0LCAweDAwQkMsCisgICAgMHgwMDhBLCAweDY2RkYsIDB4 MDAwNCwgMHgwMENELCAweDAwMTgsIDB4MTExRCwgMHgwMDA0LCAweDAwOUMsIDB4MDAzQSwgMHg4 QUFGLCAweDAwMDQsIDB4MDBGQywgMHgwMDI4LAorICAgIDB4MTMzRCwgMHgwMDA0LCAweDAwQUMs IDB4MDA0QSwgMHgzQkJGLCAweDAwMDQsIDB4MkJCRCwgMHgwMDE4LCAweDVGRkYsIDB4MDAwNCwg MHgwMDZDLCAweDE1N0QsIDB4NDU1RiwKKyAgICAweDAwMDQsIDB4MkZGRCwgMHgwMDI4LCAweDIy MkQsIDB4MDAwNCwgMHgyMkFELCAweDAwOEEsIDB4NDRFRiwgMHgwMDA0LCAweDAwQ0MsIDB4MDAx OCwgMHg0RkZGLCAweDAwMDQsCisgICAgMHgwMDdDLCAweDAwM0EsIDB4NDQ3RiwgMHgwMDA0LCAw eDA0REQsIDB4MDAyOCwgMHgyMzNELCAweDAwMDQsIDB4MDA5RCwgMHgwMDRBLCAweDAwREUsIDB4 MDAwNCwgMHg4OEJELAorICAgIDB4MDAxOCwgMHhBRkZGLCAweDAwMDQsIDB4MTE1RCwgMHgxRkZE LCAweDQ0NEYsIDB4MDAwNCwgMHg4RkZELCAweDAwMjgsIDB4MDA1QywgMHgwMDA0LCAweDAwQkMs IDB4MDA4QSwKKyAgICAweDhDRUYsIDB4MDAwNCwgMHgwMENELCAweDAwMTgsIDB4MTExRCwgMHgw MDA0LCAweDAwOUMsIDB4MDAzQSwgMHg4ODhGLCAweDAwMDQsIDB4MDBGQywgMHgwMDI4LCAweDEz M0QsCisgICAgMHgwMDA0LCAweDAwQUMsIDB4MDA0QSwgMHg0NERGLCAweDAwMDQsIDB4MkJCRCwg MHgwMDE4LCAweDhBRkYsIDB4MDAwNCwgMHgwMDZDLCAweDE1N0QsIDB4MDA2RiwgMHgwMDA0LAor ICAgIDB4MkZGRCwgMHgwMDI4LCAweDIyMkQsIDB4MDAwNCwgMHgyMkFELCAweDAwOEEsIDB4MDBF RSwgMHgwMDA0LCAweDAwQ0MsIDB4MDAxOCwgMHgyRUVGLCAweDAwMDQsIDB4MDA3QywKKyAgICAw eDAwM0EsIDB4Mjc3RiwgMHgwMDA0LCAweDA0REQsIDB4MDAyOCwgMHgyMzNELCAweDAwMDQsIDB4 MDA5RCwgMHgwMDRBLCAweDFCQkYsIDB4MDAwNCwgMHg4OEJELCAweDAwMTgsCisgICAgMHgzN0ZG LCAweDAwMDQsIDB4MTE1RCwgMHgxRkZELCAweDMzM0YsIDB4MDAwMiwgMHgwMDg4LCAweDAwMDIs IDB4MDJFRCwgMHgwMDAyLCAweDAwQ0EsIDB4MDAwMiwgMHg0Q0NGLAorICAgIDB4MDAwMiwgMHgw MDQ4LCAweDAwMDIsIDB4MjNGRiwgMHgwMDAyLCAweDAwMUEsIDB4MDAwMiwgMHg4ODhGLCAweDAw MDIsIDB4MDA4OCwgMHgwMDAyLCAweDAwNkMsIDB4MDAwMiwKKyAgICAweDAwMkEsIDB4MDAwMiwg MHgwMEFGLCAweDAwMDIsIDB4MDA0OCwgMHgwMDAyLCAweDIyRUYsIDB4MDAwMiwgMHgwMEFDLCAw eDAwMDIsIDB4MDA1RiwgMHgwMDAyLCAweDAwODgsCisgICAgMHgwMDAyLCAweDQ0NEQsIDB4MDAw MiwgMHgwMENBLCAweDAwMDIsIDB4Q0NDRiwgMHgwMDAyLCAweDAwNDgsIDB4MDAwMiwgMHgwMEZF LCAweDAwMDIsIDB4MDAxQSwgMHgwMDAyLAorICAgIDB4MDA2RiwgMHgwMDAyLCAweDAwODgsIDB4 MDAwMiwgMHgwMDVDLCAweDAwMDIsIDB4MDAyQSwgMHgwMDAyLCAweDAwOUYsIDB4MDAwMiwgMHgw MDQ4LCAweDAwMDIsIDB4MDBERiwKKyAgICAweDAwMDIsIDB4MDNGRCwgMHgwMDAyLCAweDIyMkYs IDB4MDAwMiwgMHgwMDg4LCAweDAwMDIsIDB4MDJFRCwgMHgwMDAyLCAweDAwQ0EsIDB4MDAwMiwg MHg4Q0NGLCAweDAwMDIsCisgICAgMHgwMDQ4LCAweDAwMDIsIDB4MTFGRiwgMHgwMDAyLCAweDAw MUEsIDB4MDAwMiwgMHgwMDdFLCAweDAwMDIsIDB4MDA4OCwgMHgwMDAyLCAweDAwNkMsIDB4MDAw MiwgMHgwMDJBLAorICAgIDB4MDAwMiwgMHgwMDdGLCAweDAwMDIsIDB4MDA0OCwgMHgwMDAyLCAw eDAwRUUsIDB4MDAwMiwgMHgwMEFDLCAweDAwMDIsIDB4MDAzRSwgMHgwMDAyLCAweDAwODgsIDB4 MDAwMiwKKyAgICAweDQ0NEQsIDB4MDAwMiwgMHgwMENBLCAweDAwMDIsIDB4MDBCRSwgMHgwMDAy LCAweDAwNDgsIDB4MDAwMiwgMHgwMEJGLCAweDAwMDIsIDB4MDAxQSwgMHgwMDAyLCAweDAwM0Ys CisgICAgMHgwMDAyLCAweDAwODgsIDB4MDAwMiwgMHgwMDVDLCAweDAwMDIsIDB4MDAyQSwgMHgw MDAyLCAweDAwOUUsIDB4MDAwMiwgMHgwMDQ4LCAweDAwMDIsIDB4MDBERSwgMHgwMDAyLAorICAg IDB4MDNGRCwgMHgwMDAyLCAweDExMUYsIDB4MDAwNCwgMHg4QUVELCAweDAwNDgsIDB4ODg4RCwg MHgwMDA0LCAweDAwREMsIDB4MDBDQSwgMHgzRkZGLCAweDAwMDQsIDB4Q0ZGRCwKKyAgICAweDAw MkEsIDB4MDAzRCwgMHgwMDA0LCAweDAwQkMsIDB4MDA1QSwgMHg4RERGLCAweDAwMDQsIDB4OEZG RCwgMHgwMDQ4LCAweDAwNkMsIDB4MDAwNCwgMHgwMjdELCAweDAwOEEsCisgICAgMHg5OUZGLCAw eDAwMDQsIDB4MDBFQywgMHgwMEZBLCAweDAwM0MsIDB4MDAwNCwgMHgwMEFDLCAweDAwMUEsIDB4 MDA5RiwgMHgwMDA0LCAweDJGRkQsIDB4MDA0OCwgMHgwMDdDLAorICAgIDB4MDAwNCwgMHg0NENE LCAweDAwQ0EsIDB4NjdGRiwgMHgwMDA0LCAweDFGRkQsIDB4MDAyQSwgMHg0NDRELCAweDAwMDQs IDB4MDBBRCwgMHgwMDVBLCAweDhDQ0YsIDB4MDAwNCwKKyAgICAweDRGRkQsIDB4MDA0OCwgMHg0 NDVELCAweDAwMDQsIDB4MDFCRCwgMHgwMDhBLCAweDRFRUYsIDB4MDAwNCwgMHg0NURELCAweDAw RkEsIDB4MTExRCwgMHgwMDA0LCAweDAwOUMsCisgICAgMHgwMDFBLCAweDIyMkYsIDB4MDAwNCwg MHg4QUVELCAweDAwNDgsIDB4ODg4RCwgMHgwMDA0LCAweDAwREMsIDB4MDBDQSwgMHhBRkZGLCAw eDAwMDQsIDB4Q0ZGRCwgMHgwMDJBLAorICAgIDB4MDAzRCwgMHgwMDA0LCAweDAwQkMsIDB4MDA1 QSwgMHgxMUJGLCAweDAwMDQsIDB4OEZGRCwgMHgwMDQ4LCAweDAwNkMsIDB4MDAwNCwgMHgwMjdE LCAweDAwOEEsIDB4MjJFRiwKKyAgICAweDAwMDQsIDB4MDBFQywgMHgwMEZBLCAweDAwM0MsIDB4 MDAwNCwgMHgwMEFDLCAweDAwMUEsIDB4MjI3RiwgMHgwMDA0LCAweDJGRkQsIDB4MDA0OCwgMHgw MDdDLCAweDAwMDQsCisgICAgMHg0NENELCAweDAwQ0EsIDB4NURGRiwgMHgwMDA0LCAweDFGRkQs IDB4MDAyQSwgMHg0NDRELCAweDAwMDQsIDB4MDBBRCwgMHgwMDVBLCAweDAwNkYsIDB4MDAwNCwg MHg0RkZELAorICAgIDB4MDA0OCwgMHg0NDVELCAweDAwMDQsIDB4MDFCRCwgMHgwMDhBLCAweDEx REYsIDB4MDAwNCwgMHg0NURELCAweDAwRkEsIDB4MTExRCwgMHgwMDA0LCAweDAwOUMsIDB4MDAx QSwKKyAgICAweDE1NUYsIDB4MDAwNiwgMHgwMEZDLCAweDAwMTgsIDB4MTExRCwgMHgwMDQ4LCAw eDg4OEQsIDB4MDBBQSwgMHg0RERGLCAweDAwMDYsIDB4MkFBRCwgMHgwMDVBLCAweDY3RkYsCisg ICAgMHgwMDI4LCAweDIyM0QsIDB4MDBCQywgMHhBQUFGLCAweDAwMDYsIDB4MDBFQywgMHgwMDE4 LCAweDVGRkYsIDB4MDA0OCwgMHgwMDZDLCAweDAwOEEsIDB4Q0NDRiwgMHgwMDA2LAorICAgIDB4 MDA5RCwgMHgwMENBLCAweDQ0RUYsIDB4MDAyOCwgMHgwMDNDLCAweDhGRkQsIDB4MTM3RiwgMHgw MDA2LCAweDhFRUQsIDB4MDAxOCwgMHgxRkZGLCAweDAwNDgsIDB4MDA3QywKKyAgICAweDAwQUEs IDB4NENDRiwgMHgwMDA2LCAweDIyN0QsIDB4MDA1QSwgMHgxRERGLCAweDAwMjgsIDB4NDQ0RCwg MHg0RkZELCAweDE1NUYsIDB4MDAwNiwgMHgwMERDLCAweDAwMTgsCisgICAgMHgyRUVGLCAweDAw NDgsIDB4NDQ1RCwgMHgwMDhBLCAweDIyQkYsIDB4MDAwNiwgMHgwMDlDLCAweDAwQ0EsIDB4OENE RiwgMHgwMDI4LCAweDIyMkQsIDB4MkZGRCwgMHgyMjZGLAorICAgIDB4MDAwNiwgMHgwMEZDLCAw eDAwMTgsIDB4MTExRCwgMHgwMDQ4LCAweDg4OEQsIDB4MDBBQSwgMHgxQkJGLCAweDAwMDYsIDB4 MkFBRCwgMHgwMDVBLCAweDMzRkYsIDB4MDAyOCwKKyAgICAweDIyM0QsIDB4MDBCQywgMHg4QUFG LCAweDAwMDYsIDB4MDBFQywgMHgwMDE4LCAweDlCRkYsIDB4MDA0OCwgMHgwMDZDLCAweDAwOEEs IDB4OEFCRiwgMHgwMDA2LCAweDAwOUQsCisgICAgMHgwMENBLCAweDRFRUYsIDB4MDAyOCwgMHgw MDNDLCAweDhGRkQsIDB4NDY2RiwgMHgwMDA2LCAweDhFRUQsIDB4MDAxOCwgMHhDRkZGLCAweDAw NDgsIDB4MDA3QywgMHgwMEFBLAorICAgIDB4OENDRiwgMHgwMDA2LCAweDIyN0QsIDB4MDA1QSwg MHhBRUVGLCAweDAwMjgsIDB4NDQ0RCwgMHg0RkZELCAweDQ3N0YsIDB4MDAwNiwgMHgwMERDLCAw eDAwMTgsIDB4QUZGRiwKKyAgICAweDAwNDgsIDB4NDQ1RCwgMHgwMDhBLCAweDJCQkYsIDB4MDAw NiwgMHgwMDlDLCAweDAwQ0EsIDB4NDRERiwgMHgwMDI4LCAweDIyMkQsIDB4MkZGRCwgMHgxMzNG LCAweDAwRjYsCisgICAgMHhBRkZELCAweDFGRkIsIDB4MDAzQywgMHgwMDA4LCAweDIzQkQsIDB4 MDA3QSwgMHgxMURGLCAweDAwRjYsIDB4NDVERCwgMHgyRkZCLCAweDRFRUYsIDB4MDBEQSwgMHgx NzdELAorICAgIDB4Q0ZGRCwgMHgzNzdGLCAweDAwRjYsIDB4M0ZGRCwgMHg4RkZCLCAweDExMUQs IDB4MDAwOCwgMHgwMDlDLCAweDAwNUEsIDB4MUJCRiwgMHgwMEY2LCAweDAwQ0QsIDB4MDBCQSwK KyAgICAweDhEREYsIDB4NEZGQiwgMHgwMDZDLCAweDlCRkQsIDB4NDU1RiwgMHgwMEY2LCAweDY3 RkQsIDB4MUZGQiwgMHgwMDJDLCAweDAwMDgsIDB4MDBBQywgMHgwMDdBLCAweDAwOUYsCisgICAg MHgwMEY2LCAweDAwQUQsIDB4MkZGQiwgMHg3RkZGLCAweDAwREEsIDB4MDA0QywgMHg1RkZELCAw eDQ3N0YsIDB4MDBGNiwgMHgwMEVDLCAweDhGRkIsIDB4MDAxQywgMHgwMDA4LAorICAgIDB4MDA4 QywgMHgwMDVBLCAweDg4OEYsIDB4MDBGNiwgMHgwMENDLCAweDAwQkEsIDB4MkVFRiwgMHg0RkZC LCAweDExNUQsIDB4OEFFRCwgMHgxMTNGLCAweDAwRjYsIDB4QUZGRCwKKyAgICAweDFGRkIsIDB4 MDAzQywgMHgwMDA4LCAweDIzQkQsIDB4MDA3QSwgMHgxRERGLCAweDAwRjYsIDB4NDVERCwgMHgy RkZCLCAweEJGRkYsIDB4MDBEQSwgMHgxNzdELCAweENGRkQsCisgICAgMHg0NDdGLCAweDAwRjYs IDB4M0ZGRCwgMHg4RkZCLCAweDExMUQsIDB4MDAwOCwgMHgwMDlDLCAweDAwNUEsIDB4Mjc3Riwg MHgwMEY2LCAweDAwQ0QsIDB4MDBCQSwgMHgyMkVGLAorICAgIDB4NEZGQiwgMHgwMDZDLCAweDlC RkQsIDB4NDQ0RiwgMHgwMEY2LCAweDY3RkQsIDB4MUZGQiwgMHgwMDJDLCAweDAwMDgsIDB4MDBB QywgMHgwMDdBLCAweDExQkYsIDB4MDBGNiwKKyAgICAweDAwQUQsIDB4MkZGQiwgMHhGRkZGLCAw eDAwREEsIDB4MDA0QywgMHg1RkZELCAweDIzM0YsIDB4MDBGNiwgMHgwMEVDLCAweDhGRkIsIDB4 MDAxQywgMHgwMDA4LCAweDAwOEMsCisgICAgMHgwMDVBLCAweDAwNkYsIDB4MDBGNiwgMHgwMEND LCAweDAwQkEsIDB4OEJCRiwgMHg0RkZCLCAweDExNUQsIDB4OEFFRCwgMHgyMjJGfTsKKworc3Rh dGljIGNvbnN0IHVpbnQxNl90IGRlY19DeHRWTENfdGFibGUwWzEwMjRdID0geworICAgIDB4MDAy NiwgMHgwMEFBLCAweDAwNDYsIDB4MDA2QywgMHgwMDg2LCAweDhBRUQsIDB4MDAxOCwgMHg4RERG LCAweDAwMjYsIDB4MDFCRCwgMHgwMDQ2LCAweDVGRkYsIDB4MDA4NiwKKyAgICAweDAyN0QsIDB4 MDA1QSwgMHgxNTVGLCAweDAwMjYsIDB4MDAzQSwgMHgwMDQ2LCAweDQ0NEQsIDB4MDA4NiwgMHg0 Q0NELCAweDAwMTgsIDB4Q0NDRiwgMHgwMDI2LCAweDJFRkQsCisgICAgMHgwMDQ2LCAweDk5RkYs IDB4MDA4NiwgMHgwMDlDLCAweDAwQ0EsIDB4MTMzRiwgMHgwMDI2LCAweDAwQUEsIDB4MDA0Niwg MHg0NDVELCAweDAwODYsIDB4OENDRCwgMHgwMDE4LAorICAgIDB4MTFERiwgMHgwMDI2LCAweDRG RkQsIDB4MDA0NiwgMHhDRkZGLCAweDAwODYsIDB4MDA5RCwgMHgwMDVBLCAweDAwN0UsIDB4MDAy NiwgMHgwMDNBLCAweDAwNDYsIDB4MUZGRiwKKyAgICAweDAwODYsIDB4ODhBRCwgMHgwMDE4LCAw eDAwQkUsIDB4MDAyNiwgMHg4RkZELCAweDAwNDYsIDB4NEVFRiwgMHgwMDg2LCAweDg4OEQsIDB4 MDBDQSwgMHgxMTFGLCAweDAwMjYsCisgICAgMHgwMEFBLCAweDAwNDYsIDB4MDA2QywgMHgwMDg2 LCAweDhBRUQsIDB4MDAxOCwgMHg0NURGLCAweDAwMjYsIDB4MDFCRCwgMHgwMDQ2LCAweDIyRUYs IDB4MDA4NiwgMHgwMjdELAorICAgIDB4MDA1QSwgMHgyMjdGLCAweDAwMjYsIDB4MDAzQSwgMHgw MDQ2LCAweDQ0NEQsIDB4MDA4NiwgMHg0Q0NELCAweDAwMTgsIDB4MTFCRiwgMHgwMDI2LCAweDJF RkQsIDB4MDA0NiwKKyAgICAweDAwRkUsIDB4MDA4NiwgMHgwMDlDLCAweDAwQ0EsIDB4MjIzRiwg MHgwMDI2LCAweDAwQUEsIDB4MDA0NiwgMHg0NDVELCAweDAwODYsIDB4OENDRCwgMHgwMDE4LCAw eDAwREUsCisgICAgMHgwMDI2LCAweDRGRkQsIDB4MDA0NiwgMHhBQkZGLCAweDAwODYsIDB4MDA5 RCwgMHgwMDVBLCAweDAwNkYsIDB4MDAyNiwgMHgwMDNBLCAweDAwNDYsIDB4NkVGRiwgMHgwMDg2 LAorICAgIDB4ODhBRCwgMHgwMDE4LCAweDJBQUYsIDB4MDAyNiwgMHg4RkZELCAweDAwNDYsIDB4 MDBFRSwgMHgwMDg2LCAweDg4OEQsIDB4MDBDQSwgMHgyMjJGLCAweDAwMDQsIDB4MDBDQSwKKyAg ICAweDAwODgsIDB4MDI3RCwgMHgwMDA0LCAweDRDQ0QsIDB4MDAyOCwgMHgwMEZFLCAweDAwMDQs IDB4MkFGRCwgMHgwMDQ4LCAweDAwNUMsIDB4MDAwNCwgMHgwMDlELCAweDAwMTgsCisgICAgMHgw MERFLCAweDAwMDQsIDB4MDFCRCwgMHgwMDg4LCAweDAwNkMsIDB4MDAwNCwgMHg4OEFELCAweDAw MjgsIDB4MTFERiwgMHgwMDA0LCAweDhBRUQsIDB4MDA0OCwgMHgwMDNDLAorICAgIDB4MDAwNCwg MHg4ODhELCAweDAwMTgsIDB4MTExRiwgMHgwMDA0LCAweDAwQ0EsIDB4MDA4OCwgMHgwMDZELCAw eDAwMDQsIDB4ODhDRCwgMHgwMDI4LCAweDg4RkYsIDB4MDAwNCwKKyAgICAweDhCRkQsIDB4MDA0 OCwgMHg0NDRELCAweDAwMDQsIDB4MDA5QywgMHgwMDE4LCAweDAwQkUsIDB4MDAwNCwgMHg0RUZE LCAweDAwODgsIDB4NDQ1RCwgMHgwMDA0LCAweDAwQUMsCisgICAgMHgwMDI4LCAweDAwRUUsIDB4 MDAwNCwgMHg0NURELCAweDAwNDgsIDB4MjIyRCwgMHgwMDA0LCAweDAwM0QsIDB4MDAxOCwgMHgw MDdFLCAweDAwMDQsIDB4MDBDQSwgMHgwMDg4LAorICAgIDB4MDI3RCwgMHgwMDA0LCAweDRDQ0Qs IDB4MDAyOCwgMHgxRkZGLCAweDAwMDQsIDB4MkFGRCwgMHgwMDQ4LCAweDAwNUMsIDB4MDAwNCwg MHgwMDlELCAweDAwMTgsIDB4MTFCRiwKKyAgICAweDAwMDQsIDB4MDFCRCwgMHgwMDg4LCAweDAw NkMsIDB4MDAwNCwgMHg4OEFELCAweDAwMjgsIDB4MjJFRiwgMHgwMDA0LCAweDhBRUQsIDB4MDA0 OCwgMHgwMDNDLCAweDAwMDQsCisgICAgMHg4ODhELCAweDAwMTgsIDB4MjI3RiwgMHgwMDA0LCAw eDAwQ0EsIDB4MDA4OCwgMHgwMDZELCAweDAwMDQsIDB4ODhDRCwgMHgwMDI4LCAweDRFRUYsIDB4 MDAwNCwgMHg4QkZELAorICAgIDB4MDA0OCwgMHg0NDRELCAweDAwMDQsIDB4MDA5QywgMHgwMDE4 LCAweDJBQUYsIDB4MDAwNCwgMHg0RUZELCAweDAwODgsIDB4NDQ1RCwgMHgwMDA0LCAweDAwQUMs IDB4MDAyOCwKKyAgICAweDhEREYsIDB4MDAwNCwgMHg0NURELCAweDAwNDgsIDB4MjIyRCwgMHgw MDA0LCAweDAwM0QsIDB4MDAxOCwgMHgxNTVGLCAweDAwMDQsIDB4MDA1QSwgMHgwMDg4LCAweDAw NkMsCisgICAgMHgwMDA0LCAweDg4REQsIDB4MDAyOCwgMHgyM0ZGLCAweDAwMDQsIDB4MTFGRCwg MHgwMDQ4LCAweDQ0NEQsIDB4MDAwNCwgMHgwMEFELCAweDAwMTgsIDB4MDBCRSwgMHgwMDA0LAor ICAgIDB4MTM3RCwgMHgwMDg4LCAweDE1NUQsIDB4MDAwNCwgMHgwMENDLCAweDAwMjgsIDB4MDBE RSwgMHgwMDA0LCAweDAyRUQsIDB4MDA0OCwgMHgxMTFELCAweDAwMDQsIDB4MDA5RCwKKyAgICAw eDAwMTgsIDB4MDA3RSwgMHgwMDA0LCAweDAwNUEsIDB4MDA4OCwgMHg0NTVELCAweDAwMDQsIDB4 NDRDRCwgMHgwMDI4LCAweDAwRUUsIDB4MDAwNCwgMHgxRkZELCAweDAwNDgsCisgICAgMHgwMDND LCAweDAwMDQsIDB4MDBBQywgMHgwMDE4LCAweDU1NUYsIDB4MDAwNCwgMHg0N0ZELCAweDAwODgs IDB4MTEzRCwgMHgwMDA0LCAweDAyQkQsIDB4MDAyOCwgMHg0NzdGLAorICAgIDB4MDAwNCwgMHg0 Q0RELCAweDAwNDgsIDB4OEZGRiwgMHgwMDA0LCAweDAwOUMsIDB4MDAxOCwgMHgyMjJGLCAweDAw MDQsIDB4MDA1QSwgMHgwMDg4LCAweDAwNkMsIDB4MDAwNCwKKyAgICAweDg4REQsIDB4MDAyOCwg MHgwMEZFLCAweDAwMDQsIDB4MTFGRCwgMHgwMDQ4LCAweDQ0NEQsIDB4MDAwNCwgMHgwMEFELCAw eDAwMTgsIDB4ODg4RiwgMHgwMDA0LCAweDEzN0QsCisgICAgMHgwMDg4LCAweDE1NUQsIDB4MDAw NCwgMHgwMENDLCAweDAwMjgsIDB4OENDRiwgMHgwMDA0LCAweDAyRUQsIDB4MDA0OCwgMHgxMTFE LCAweDAwMDQsIDB4MDA5RCwgMHgwMDE4LAorICAgIDB4MDA2RiwgMHgwMDA0LCAweDAwNUEsIDB4 MDA4OCwgMHg0NTVELCAweDAwMDQsIDB4NDRDRCwgMHgwMDI4LCAweDFEREYsIDB4MDAwNCwgMHgx RkZELCAweDAwNDgsIDB4MDAzQywKKyAgICAweDAwMDQsIDB4MDBBQywgMHgwMDE4LCAweDIyN0Ys IDB4MDAwNCwgMHg0N0ZELCAweDAwODgsIDB4MTEzRCwgMHgwMDA0LCAweDAyQkQsIDB4MDAyOCwg MHgyMkJGLCAweDAwMDQsCisgICAgMHg0Q0RELCAweDAwNDgsIDB4MjJFRiwgMHgwMDA0LCAweDAw OUMsIDB4MDAxOCwgMHgyMzNGLCAweDAwMDYsIDB4NERERCwgMHg0RkZCLCAweENGRkYsIDB4MDAx OCwgMHgxMTNELAorICAgIDB4MDA1QSwgMHg4ODhGLCAweDAwMDYsIDB4MjNCRCwgMHgwMDhBLCAw eDAwRUUsIDB4MDAyQSwgMHgxNTVELCAweEFBRkQsIDB4Mjc3RiwgMHgwMDA2LCAweDQ0Q0QsIDB4 OEZGQiwKKyAgICAweDQ0RUYsIDB4MDAxOCwgMHg0NjdELCAweDAwNEEsIDB4MkFBRiwgMHgwMDA2 LCAweDAwQUMsIDB4NTU1QiwgMHg5OURGLCAweDFGRkIsIDB4MDAzQywgMHg1RkZELCAweDI2NkYs CisgICAgMHgwMDA2LCAweDFEREQsIDB4NEZGQiwgMHg2RUZGLCAweDAwMTgsIDB4MTc3RCwgMHgw MDVBLCAweDFCQkYsIDB4MDAwNiwgMHg4OEFELCAweDAwOEEsIDB4NURERiwgMHgwMDJBLAorICAg IDB4NDQ0RCwgMHgyRkZELCAweDY2N0YsIDB4MDAwNiwgMHgwMENDLCAweDhGRkIsIDB4MkVFRiwg MHgwMDE4LCAweDQ1NUQsIDB4MDA0QSwgMHgxMTlGLCAweDAwMDYsIDB4MDA5QywKKyAgICAweDU1 NUIsIDB4OENDRiwgMHgxRkZCLCAweDExMUQsIDB4OENFRCwgMHgwMDZFLCAweDAwMDYsIDB4NERE RCwgMHg0RkZCLCAweDNGRkYsIDB4MDAxOCwgMHgxMTNELCAweDAwNUEsCisgICAgMHgxMUJGLCAw eDAwMDYsIDB4MjNCRCwgMHgwMDhBLCAweDhEREYsIDB4MDAyQSwgMHgxNTVELCAweEFBRkQsIDB4 MjIyRiwgMHgwMDA2LCAweDQ0Q0QsIDB4OEZGQiwgMHgwMEZFLAorICAgIDB4MDAxOCwgMHg0NjdE LCAweDAwNEEsIDB4ODk5RiwgMHgwMDA2LCAweDAwQUMsIDB4NTU1QiwgMHgwMERFLCAweDFGRkIs IDB4MDAzQywgMHg1RkZELCAweDQ0NkYsIDB4MDAwNiwKKyAgICAweDFEREQsIDB4NEZGQiwgMHg5 QkZGLCAweDAwMTgsIDB4MTc3RCwgMHgwMDVBLCAweDAwQkUsIDB4MDAwNiwgMHg4OEFELCAweDAw OEEsIDB4Q0RERiwgMHgwMDJBLCAweDQ0NEQsCisgICAgMHgyRkZELCAweDAwN0UsIDB4MDAwNiwg MHgwMENDLCAweDhGRkIsIDB4NEVFRiwgMHgwMDE4LCAweDQ1NUQsIDB4MDA0QSwgMHgzNzdGLCAw eDAwMDYsIDB4MDA5QywgMHg1NTVCLAorICAgIDB4OEJCRiwgMHgxRkZCLCAweDExMUQsIDB4OENF RCwgMHgyMzNGLCAweDAwMDQsIDB4MDBBQSwgMHgwMDg4LCAweDA0N0QsIDB4MDAwNCwgMHgwMURE LCAweDAwMjgsIDB4MTFERiwKKyAgICAweDAwMDQsIDB4MjdGRCwgMHgwMDQ4LCAweDAwNUMsIDB4 MDAwNCwgMHg4QUFELCAweDAwMTgsIDB4MkJCRiwgMHgwMDA0LCAweDAwOUMsIDB4MDA4OCwgMHgw MDZDLCAweDAwMDQsCisgICAgMHgwMENDLCAweDAwMjgsIDB4MDBFRSwgMHgwMDA0LCAweDhDRUQs IDB4MDA0OCwgMHgyMjJELCAweDAwMDQsIDB4ODg4RCwgMHgwMDE4LCAweDAwN0UsIDB4MDAwNCwg MHgwMEFBLAorICAgIDB4MDA4OCwgMHgwMDZELCAweDAwMDQsIDB4ODhDRCwgMHgwMDI4LCAweDAw RkUsIDB4MDAwNCwgMHgxOUZELCAweDAwNDgsIDB4MDAzQywgMHgwMDA0LCAweDJBQUQsIDB4MDAx OCwKKyAgICAweEFBQUYsIDB4MDAwNCwgMHg4QkZELCAweDAwODgsIDB4MDA1RCwgMHgwMDA0LCAw eDAwQkQsIDB4MDAyOCwgMHg0Q0NGLCAweDAwMDQsIDB4NDRFRCwgMHgwMDQ4LCAweDRGRkYsCisg ICAgMHgwMDA0LCAweDIyM0QsIDB4MDAxOCwgMHgxMTFGLCAweDAwMDQsIDB4MDBBQSwgMHgwMDg4 LCAweDA0N0QsIDB4MDAwNCwgMHgwMURELCAweDAwMjgsIDB4OTlGRiwgMHgwMDA0LAorICAgIDB4 MjdGRCwgMHgwMDQ4LCAweDAwNUMsIDB4MDAwNCwgMHg4QUFELCAweDAwMTgsIDB4MDBCRSwgMHgw MDA0LCAweDAwOUMsIDB4MDA4OCwgMHgwMDZDLCAweDAwMDQsIDB4MDBDQywKKyAgICAweDAwMjgs IDB4MDBERSwgMHgwMDA0LCAweDhDRUQsIDB4MDA0OCwgMHgyMjJELCAweDAwMDQsIDB4ODg4RCwg MHgwMDE4LCAweDQ0NEYsIDB4MDAwNCwgMHgwMEFBLCAweDAwODgsCisgICAgMHgwMDZELCAweDAw MDQsIDB4ODhDRCwgMHgwMDI4LCAweDJFRUYsIDB4MDAwNCwgMHgxOUZELCAweDAwNDgsIDB4MDAz QywgMHgwMDA0LCAweDJBQUQsIDB4MDAxOCwgMHg0NDdGLAorICAgIDB4MDAwNCwgMHg4QkZELCAw eDAwODgsIDB4MDA1RCwgMHgwMDA0LCAweDAwQkQsIDB4MDAyOCwgMHgwMDlGLCAweDAwMDQsIDB4 NDRFRCwgMHgwMDQ4LCAweDY3RkYsIDB4MDAwNCwKKyAgICAweDIyM0QsIDB4MDAxOCwgMHgxMzNG LCAweDAwMDYsIDB4MDBDQywgMHgwMDhBLCAweDlERkYsIDB4MkZGQiwgMHg0NjdELCAweDFGRkQs IDB4OTlCRiwgMHgwMDA2LCAweDJBQUQsCisgICAgMHgwMDJBLCAweDY2RUYsIDB4NEZGQiwgMHgw MDVDLCAweDJFRUQsIDB4Mzc3RiwgMHgwMDA2LCAweDg5QkQsIDB4MDA0QSwgMHgwMEZFLCAweDhG RkIsIDB4MDA2QywgMHg2N0ZELAorICAgIDB4ODg5RiwgMHgwMDA2LCAweDg4OEQsIDB4MDAxQSwg MHg1RERGLCAweDAwQUEsIDB4MjIyRCwgMHg4OURELCAweDQ0NEYsIDB4MDAwNiwgMHgyQkJELCAw eDAwOEEsIDB4Q0ZGRiwKKyAgICAweDJGRkIsIDB4MjI2RCwgMHgwMDlDLCAweDAwQkUsIDB4MDAw NiwgMHhBQUFELCAweDAwMkEsIDB4MURERiwgMHg0RkZCLCAweDAwM0MsIDB4NERERCwgMHg0NjZG LCAweDAwMDYsCisgICAgMHg4QUFELCAweDAwNEEsIDB4QUVFRiwgMHg4RkZCLCAweDQ0NUQsIDB4 OEVFRCwgMHgxNzdGLCAweDAwMDYsIDB4MjMzRCwgMHgwMDFBLCAweDRDQ0YsIDB4MDBBQSwgMHhB RkZGLAorICAgIDB4ODhDRCwgMHgxMzNGLCAweDAwMDYsIDB4MDBDQywgMHgwMDhBLCAweDc3RkYs IDB4MkZGQiwgMHg0NjdELCAweDFGRkQsIDB4M0JCRiwgMHgwMDA2LCAweDJBQUQsIDB4MDAyQSwK KyAgICAweDAwRUUsIDB4NEZGQiwgMHgwMDVDLCAweDJFRUQsIDB4MDA3RSwgMHgwMDA2LCAweDg5 QkQsIDB4MDA0QSwgMHg0RUVGLCAweDhGRkIsIDB4MDA2QywgMHg2N0ZELCAweDY2N0YsCisgICAg MHgwMDA2LCAweDg4OEQsIDB4MDAxQSwgMHgwMERFLCAweDAwQUEsIDB4MjIyRCwgMHg4OURELCAw eDMzM0YsIDB4MDAwNiwgMHgyQkJELCAweDAwOEEsIDB4NTdGRiwgMHgyRkZCLAorICAgIDB4MjI2 RCwgMHgwMDlDLCAweDE5OUYsIDB4MDAwNiwgMHhBQUFELCAweDAwMkEsIDB4OTlERiwgMHg0RkZC LCAweDAwM0MsIDB4NERERCwgMHgxNTVGLCAweDAwMDYsIDB4OEFBRCwKKyAgICAweDAwNEEsIDB4 Q0VFRiwgMHg4RkZCLCAweDQ0NUQsIDB4OEVFRCwgMHgyNzdGLCAweDAwMDYsIDB4MjMzRCwgMHgw MDFBLCAweDFCQkYsIDB4MDBBQSwgMHgzRkZGLCAweDg4Q0QsCisgICAgMHgxMTFGLCAweDAwMDYs IDB4NDVERCwgMHgyRkZCLCAweDExMUQsIDB4MDAxOCwgMHg0NjdELCAweDhGRkQsIDB4Q0NDRiwg MHgwMDA2LCAweDE5QkQsIDB4MDA0QSwgMHgyMkVGLAorICAgIDB4MDAyQSwgMHgyMjJELCAweDNG RkQsIDB4ODg4RiwgMHgwMDA2LCAweDAwQ0MsIDB4MDA4QSwgMHgwMEZFLCAweDAwMTgsIDB4MTE1 RCwgMHhDRkZELCAweDhBQUYsIDB4MDAwNiwKKyAgICAweDAwQUMsIDB4MDAzQSwgMHg4Q0RGLCAw eDFGRkIsIDB4MTMzRCwgMHg2NkZELCAweDQ2NkYsIDB4MDAwNiwgMHg4Q0NELCAweDJGRkIsIDB4 NUZGRiwgMHgwMDE4LCAweDAwNkMsCisgICAgMHg0RkZELCAweEFCQkYsIDB4MDAwNiwgMHgyMkFE LCAweDAwNEEsIDB4MDBFRSwgMHgwMDJBLCAweDIzM0QsIDB4QUVGRCwgMHgzNzdGLCAweDAwMDYs IDB4MkJCRCwgMHgwMDhBLAorICAgIDB4NTVERiwgMHgwMDE4LCAweDAwNUMsIDB4MTc3RCwgMHgx MTlGLCAweDAwMDYsIDB4MDA5QywgMHgwMDNBLCAweDRDQ0YsIDB4MUZGQiwgMHgzMzNELCAweDhF RUQsIDB4NDQ0RiwKKyAgICAweDAwMDYsIDB4NDVERCwgMHgyRkZCLCAweDExMUQsIDB4MDAxOCwg MHg0NjdELCAweDhGRkQsIDB4OTlCRiwgMHgwMDA2LCAweDE5QkQsIDB4MDA0QSwgMHgyRUVGLCAw eDAwMkEsCisgICAgMHgyMjJELCAweDNGRkQsIDB4NjY3RiwgMHgwMDA2LCAweDAwQ0MsIDB4MDA4 QSwgMHg0RUVGLCAweDAwMTgsIDB4MTE1RCwgMHhDRkZELCAweDg5OUYsIDB4MDAwNiwgMHgwMEFD LAorICAgIDB4MDAzQSwgMHgwMERFLCAweDFGRkIsIDB4MTMzRCwgMHg2NkZELCAweDIyNkYsIDB4 MDAwNiwgMHg4Q0NELCAweDJGRkIsIDB4OUJGRiwgMHgwMDE4LCAweDAwNkMsIDB4NEZGRCwKKyAg ICAweDAwQkUsIDB4MDAwNiwgMHgyMkFELCAweDAwNEEsIDB4MURERiwgMHgwMDJBLCAweDIzM0Qs IDB4QUVGRCwgMHgwMDdFLCAweDAwMDYsIDB4MkJCRCwgMHgwMDhBLCAweENFRUYsCisgICAgMHgw MDE4LCAweDAwNUMsIDB4MTc3RCwgMHgyNzdGLCAweDAwMDYsIDB4MDA5QywgMHgwMDNBLCAweDhC QkYsIDB4MUZGQiwgMHgzMzNELCAweDhFRUQsIDB4NDU1RiwgMHgxRkY5LAorICAgIDB4MURERCwg MHhBRkZCLCAweDAwREUsIDB4OEZGOSwgMHgwMDFDLCAweEZGRkIsIDB4NDc3RiwgMHg0RkY5LCAw eDE3N0QsIDB4M0ZGQiwgMHgzQkJGLCAweDJGRjksIDB4QUVFRiwKKyAgICAweDhFRUQsIDB4NDQ0 RiwgMHgxRkY5LCAweDIyQUQsIDB4MDAwQSwgMHg4QkJGLCAweDhGRjksIDB4MDBGRSwgMHhDRkZE LCAweDAwN0UsIDB4NEZGOSwgMHgxMTVELCAweDVGRkIsCisgICAgMHg1NzdGLCAweDJGRjksIDB4 OERERiwgMHgyRUVELCAweDMzM0YsIDB4MUZGOSwgMHgyQkJELCAweEFGRkIsIDB4ODhDRiwgMHg4 RkY5LCAweEJGRkYsIDB4RkZGQiwgMHgzNzdGLAorICAgIDB4NEZGOSwgMHgwMDZELCAweDNGRkIs IDB4MDBCRSwgMHgyRkY5LCAweDY2RUYsIDB4OUZGRCwgMHgxMzNGLCAweDFGRjksIDB4MDA5RCwg MHgwMDBBLCAweEFCQkYsIDB4OEZGOSwKKyAgICAweERGRkYsIDB4NkZGRCwgMHgwMDZFLCAweDRG RjksIDB4MDAyQywgMHg1RkZCLCAweDg4OEYsIDB4MkZGOSwgMHhDRERGLCAweDREREQsIDB4MjIy RiwgMHgxRkY5LCAweDFEREQsCisgICAgMHhBRkZCLCAweDRDQ0YsIDB4OEZGOSwgMHgwMDFDLCAw eEZGRkIsIDB4Mjc3RiwgMHg0RkY5LCAweDE3N0QsIDB4M0ZGQiwgMHg5OUJGLCAweDJGRjksIDB4 Q0VFRiwgMHg4RUVELAorICAgIDB4MDA0RSwgMHgxRkY5LCAweDIyQUQsIDB4MDAwQSwgMHgwMEFF LCAweDhGRjksIDB4N0ZGRiwgMHhDRkZELCAweDAwNUUsIDB4NEZGOSwgMHgxMTVELCAweDVGRkIs IDB4MDA5RSwKKyAgICAweDJGRjksIDB4NURERiwgMHgyRUVELCAweDAwM0UsIDB4MUZGOSwgMHgy QkJELCAweEFGRkIsIDB4MDBDRSwgMHg4RkY5LCAweEVGRkYsIDB4RkZGQiwgMHg2NjdGLCAweDRG RjksCisgICAgMHgwMDZELCAweDNGRkIsIDB4OEFBRiwgMHgyRkY5LCAweDAwRUUsIDB4OUZGRCwg MHgyMzNGLCAweDFGRjksIDB4MDA5RCwgMHgwMDBBLCAweDFCQkYsIDB4OEZGOSwgMHg0RUVGLAor ICAgIDB4NkZGRCwgMHg0NTVGLCAweDRGRjksIDB4MDAyQywgMHg1RkZCLCAweDAwOEUsIDB4MkZG OSwgMHg5OURGLCAweDREREQsIDB4MTExRn07CisjZW5kaWYgLyogQVZDT0RFQ19KUEVHMjAwMEhU REVDX0ggKi8KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCi0tIAoyLjM3LjIKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmZmbXBlZy1kZXZlbCBtYWls aW5nIGxpc3QKZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKaHR0cHM6Ly9mZm1wZWcub3JnL21haWxt YW4vbGlzdGluZm8vZmZtcGVnLWRldmVsCgpUbyB1bnN1YnNjcmliZSwgdmlzaXQgbGluayBhYm92 ZSwgb3IgZW1haWwKZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVnLm9yZyB3aXRoIHN1YmplY3Qg InVuc3Vic2NyaWJlIi4K