Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tSepC-000ZHl-RH for pgsql-hackers@arkaria.postgresql.org; Tue, 31 Dec 2024 16:10:31 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1tSepC-003YVD-26 for pgsql-hackers@arkaria.postgresql.org; Tue, 31 Dec 2024 16:10:29 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tSepB-003YV5-K8 for pgsql-hackers@lists.postgresql.org; Tue, 31 Dec 2024 16:10:29 +0000 Received: from mail-ua1-x933.google.com ([2607:f8b0:4864:20::933]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1tSep3-002WrH-9y for pgsql-hackers@lists.postgresql.org; Tue, 31 Dec 2024 16:10:28 +0000 Received: by mail-ua1-x933.google.com with SMTP id a1e0cc1a2514c-85bad7be09dso5189767241.0 for ; Tue, 31 Dec 2024 08:10:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1735661419; x=1736266219; darn=lists.postgresql.org; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=krJYG0JAVfT1db2Pmkhsq4f4oxgwpHZ0KoPXk3BTDr4=; b=g1nDjKZEDrJ+4qLF7yVdyTGjmlymaPfk/7gUg7UAp9D7qonTevCiB/ZxxvauEZQMwQ dKcZoub4WT4yt1zUkMY6fQCcu7C3igvFx8xsix2LyDinG4LM0KKcwFjwpYtAMdFhS9rj eOKDSlDyYu/lDIIvEZmYVzsYhyrIOl0MkBbUvRjlE3ZGewsKbg6UtlB671zLRCERhg+O KY6gcn3WMiHNs5XATrFtaSMjZA9zy5ZALu5MVKSLVru0jVzK0UeIJKCcO8rmH1AxqIs4 QhfCFM4aI2Eh1vVEdgwNS7ZneIdej49pvGm38/gz8Ub55RY7OYGiAczDWUa+j7FxUK/L q9SQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1735661419; x=1736266219; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=krJYG0JAVfT1db2Pmkhsq4f4oxgwpHZ0KoPXk3BTDr4=; b=izxiEOHOCF2AZ7O5JD15gx1X9TkCEvLDbEoY6xWh1NVYRyamv6wEkmEQO/0ZnF5yQu /JPMuNy+76vB7FSLwNyJAGW+lAMHmn4Ii1a6T+ezYng1Qyggggu8xKLTi3dCTMuBmfyC lnK94VYfi99SNto3OggSqS5aVD16oqcQwhuQKf/87m2pjfCNOW6mtynpnySPxACgTweB cRsriPK9FvK7FOWmcqaX+/hB/yhaqJLzH8b6sp+hPRPfB4brPDvQ41meqn/2CUjr7sc2 XMnBIsUQN2r5JJ9oimGk5FsX3OVShBe3EJTkJJKFt4WDneciMJyZMOJ9zFBuchwd6Q+I 4+sQ== X-Gm-Message-State: AOJu0YxvHia0KZRAGhLbKQ7msI7vmxQOE8VxE4AjWrwf7+KP7GSNnMnp 8yEkmPFJwbKf5GdaQljGVOJGZYjGVln35QXVmef9cJ9zFC+er6zalPGYYgxYsXU/HgBRH7hHACT q6MnlebyMCGjWr8qvyNa1V698BNVsxJHfM1Y= X-Gm-Gg: ASbGncssZfdtg9y0lfVXyO57ZTsOx0kPg+I9Fi7lTKIwBtU6hHoeFzPH6awXBQMk+O/ AsrE7/uPH9ngZfzwiWFWraQ1ZWmkwK9860Eo957s= X-Google-Smtp-Source: AGHT+IHlOERl+A5933r605iibtovksT1haJbhojyoS73s7yS36FZOeLNVRk0I61nwM0QOh93ArRuFabB2E89GB3f7OA= X-Received: by 2002:a05:6122:2519:b0:516:1106:4c1a with SMTP id 71dfb90a1353d-51b75d6b15emr24896902e0c.12.1735661418931; Tue, 31 Dec 2024 08:10:18 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: jian he Date: Wed, 1 Jan 2025 00:09:42 +0800 Message-ID: Subject: Re: using index to speedup add not null constraints to a table To: PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000538e23062a932a06" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000538e23062a932a06 Content-Type: text/plain; charset="UTF-8" hi. In v1 I didn't do the `git add` for newly created isolation test related files. so the cfbot for isolation tests failed. v1 with index: create index t_idx_ab on t(a,b); we cannot fast add a not-null constraint for column b. with the attached v2 patch, now we can do that. v2, isolation test also adds other session drop index scarenio. --000000000000538e23062a932a06 Content-Type: text/x-patch; charset="US-ASCII"; name="v2-0001-using-index-to-speedup-add-not-null-constraint-to.patch" Content-Disposition: attachment; filename="v2-0001-using-index-to-speedup-add-not-null-constraint-to.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m5cnyay10 RnJvbSBhYzFlYzc4Mzk1NDc5YzYxODQ0ZTEyMmM5MGVmMjZkNTQ1ZDM1ZjY5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFR1ZSwgMzEgRGVjIDIwMjQgMjM6MzI6NDkgKzA4MDAKU3ViamVjdDogW1BBVENIIHYy IDEvMV0gdXNpbmcgaW5kZXggdG8gc3BlZWR1cCBhZGQgbm90IG51bGwgY29uc3RyYWludCB0bwog ZXhpc3RpbmcgdGFibGUKClRoaXMgcGF0Y2ggdHJpZXMgdG8gdXNlIGluZGV4X2JlZ2luc2Nhbigp IC8gaW5kZXhfZ2V0bmV4dCgpIC8gaW5kZXhfZW5kc2NhbigpCm1lbnRpb25lZCBpbiBbMV0gdG8g c3BlZWR1cCBhZGRpbmcgbm90LW51bGwgY29uc3RyYWludHMgdG8gdGhlIGV4aXN0aW5nIHRhYmxl LgoKVGhlcmUgYXJlIHR3byB3YXlzIHRvIGFkZCBub3QtbnVsbCBjb25zdHJhaW50cyB0byBhbiBl eGlzdGluZyB0YWJsZS4KMS4gQVRFeGVjQWRkQ29uc3RyYWludC0+QVRBZGRDaGVja05OQ29uc3Ry YWludC0+QWRkUmVsYXRpb25OZXdDb25zdHJhaW50cwoyLiBBVEV4ZWNTZXROb3ROdWxsLT5BZGRS ZWxhdGlvbk5ld0NvbnN0cmFpbnRzCgpUaGUgbG9naWMgaXM6CjEuIEluIEFkZFJlbGF0aW9uTmV3 Q29uc3RyYWludHMsIGlmIGNvbmRpdGlvbiBtZWV0IChzZWUgZ2V0X2luZGV4X2Zvcl92YWxpZGF0 ZV9ub3RudWxsKQogICB0aGVuIGF0dGVtcHQgdG8gdXNlIGluZGV4c2NhbiB0byBwcmUgY2hlY2sg d2hldGhlciB0aGUgY29sdW1uIGlzIE5PVCBOVUxMLgoyLiBBZGRSZWxhdGlvbk5ld0NvbnN0cmFp bnRzIHJldHVybmVkIGEgbGlzdCBvZiBDb29rZWRDb25zdHJhaW50IG5vZGVzLgogICBwYXNzIG5v dC1udWxsIGNvb2tlZCBjb25zdHJhaW50IHRvIHRhYi0+Y29uc3RyYWludHMgKGEgbGlzdCBvZiBO ZXdDb25zdHJhaW50KS4KICAgY29kZSBzbmlwcGV0OgogICAgaWYgKCFjY29uLT5za2lwX3ZhbGlk YXRpb24pCiAgICB7CiAgICAgICAgbmV3Y29uID0gKE5ld0NvbnN0cmFpbnQgKikgcGFsbG9jMChz aXplb2YoTmV3Q29uc3RyYWludCkpOwogICAgICAgIGlmIChjY29uLT5wcmVfdmFsaWRhdGVkKQog ICAgICAgICAgICBuZXdjb24tPm5uX2F0dG51bSA9IGNjb24tPmF0dG51bTsKICAgICAgICB0YWIt PmNvbnN0cmFpbnRzID0gbGFwcGVuZCh0YWItPmNvbnN0cmFpbnRzLCBuZXdjb24pOwogICAgfQoz LiBJbiBBVFJld3JpdGVUYWJsZSwgaWYgYWxsIGF0dG51bXMgYXNzb2NpYXRlZCB3aXRoIG5vdC1u dWxsIGNvbnN0cmFpbnQgaGF2ZQphbHJlYWR5IGJlZW4gcHJldmFsaWRhdGVkLCB0aGVuIG5vIG5l ZWQgdG8gbmVlZHNjYW4uCgpDQVVUSU9OOgpBTFRFUiBUQUJMRSBTRVQgREFUQSBUWVBFIGFuZCBB TFRFUiBUQUJMRSBTRVQgRVhQUkVTU0lPTiB0cmlnZ2VyIGFuIGluZGV4CnJlYnVpbGQgKHJlZmVy IHRvIFJlbWVtYmVyQWxsRGVwZW5kZW50Rm9yUmVidWlsZGluZykuICBXaGlsZSB0aGUgZm9ybWVy IGNhbm5vdApiZSBhcHBsaWVkIHRvIHBhcnRpdGlvbmVkIHRhYmxlcywgdGhlIGxhdHRlciBjYW4u ICBJZiBhbiBpbmRleCByZWJ1aWxkIG9jY3VycywKdGhlbiBpbmRleHNjYW4gY2Fubm90IGJlIHVz ZWQgdG8gcHJldmFsaWRhdGUgd2hldGhlciBhIGNvbHVtbiBjb250YWlucyBudWxsCnZhbHVlcy4g IENvbnNlcXVlbnRseSwgcHJlLXZhbGlkYXRpbmcgYSBOT1QgTlVMTCBjb25zdHJhaW50IGlzIGN1 cnJlbnRseSBub3QKc3VwcG9ydGVkIGZvciBwYXJ0aXRpb25lZCB0YWJsZXMuCgpjb25jdXJyZW5j eSBjb25jZXJuOgpBTFRFUiBUQUJMRSBTRVQgTk9UIE5VTEwgd2lsbCB0YWtlIGFuIEFDQ0VTUyBF WENMVVNJVkUgbG9jaywgc28gdGhlcmUgaXMgbGVzcwp2YXJpYW50IG9mIHJhY2luZyBpc3N1ZSBj YW4gb2NjdXI/ICB0byBwcm92ZSBhY2N1cmF0ZSwgSSB3cm90ZSBzb21lIGlzb2xhdGlvbgp0ZXN0 cy4gc2VlWzJdCgpwZXJmb3JtYW5jZSBjb25jZXJuOgppdCB3aWxsIGJlIHNsb3dlciB0aGFuIG5v cm1hbCBhZGRpbmcgbm90LW51bGwgY29uc3RyYWludCBPTkxZIElGIHlvdXIgaW5kZXggaXMKYmxv YXQgYW5kIGEgbGFyZ2UgcGVyY2VudCBvZiBibG9hdCBpcyByZWxhdGVkIHRvIG51bGwgdmFsdWUg ZGF0YS4KZGVtbzoKCjEwMCUgYmxvYXQgYW5kIHplcm8gcGVyY2VudCBudWxsIHZhbHVlOgpkcm9w IHRhYmxlIGlmIGV4aXN0cyB0IFw7IGNyZWF0ZSB1bmxvZ2dlZCB0YWJsZSB0KGEgaW50LCBiIGlu dCwgYyBpbnQpOwppbnNlcnQgaW50byB0IHNlbGVjdCBnLCBnKzEgZnJvbSBnZW5lcmF0ZV9zZXJp ZXMoMSwxXzAwMF8wMDApIGc7CmNyZWF0ZSBpbmRleCB0X2lkeF9hIG9uIHQoYSk7CmRlbGV0ZSBm cm9tIHQ7CmFsdGVyIHRhYmxlIHQgYWRkIGNvbnN0cmFpbnQgdDEgbm90IG51bGwgYTsKCnBhdGNo IFRpbWU6ICAxLjg3MyBtcwptYXN0ZXIgVGltZTogNjQ4LjMxMiBtcwotLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tLS0gJTIwIHBlcmNlbnQgY29s dW1uIHZhbHVlIGlzIG51bGwgYW5kIGRlbGV0ZWQgZnJvbSBoZWFwIHN0aWxsIG9uIHRoZSBpbmRl eC4KZHJvcCB0YWJsZSBpZiBleGlzdHMgdCBcOyBjcmVhdGUgdW5sb2dnZWQgdGFibGUgdChhIGlu dCwgYiBpbnQpOwppbnNlcnQgaW50byB0IHNlbGVjdCBjYXNlIHdoZW4gZyAlIDUgPSAwIHRoZW4g bnVsbCBlbHNlIGcgZW5kLCBnKzEKZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSwxXzAwMF8wMDApIGc7 CgpjcmVhdGUgaW5kZXggdF9pZHhfYSBvbiB0KGEpOwpkZWxldGUgZnJvbSB0IHdoZXJlIGEgaXMg bnVsbDsKCmFsdGVyIHRhYmxlIHQgYWRkIGNvbnN0cmFpbnQgdDEgbm90IG51bGwgYTsKcGF0Y2gg VGltZTo6IDEwODAuNDA3IG1zICgwMDowMS4wODApCm1hc3RlciBUaW1lOiA5NzAuNjcxIG1zCgpy ZWZlcmVuY2VzOgpbMV0gaHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQSUyQlRnbW9hNU5LejhpR1dfOXY3 d3olM0QtJTJCelFGdSUzREU0U1pvYVRhVTF6bkxhRVhSWXAtUSU0MG1haWwuZ21haWwuY29tClsy XSBodHRwczovL3Bvc3Rnci5lcy9tLzkwMDA1NkQxLTMyREYtNDkyNy04MjUxLTNFMEMwREM0MDdG RCU0MGFuYXJhemVsLmRlCgpkaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBQ0p1ZnhG aVc9NGsxaXM9RjFKPXItQ3gxUnVCeVhRUFVyV0IzMzFVNDdyU25Heitod0BtYWlsLmdtYWlsLmNv bQotLS0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvaGVhcC5jICAgICAgICAgICAgICAgICAgICB8ICA4 OCArKysrKysrKysrKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvcGdfY29uc3RyYWludC5jICAgICAg ICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyAgICAgICAgICAg ICAgfCAgODAgKysrKysrKysrLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5j ICAgICAgICAgICB8ICA5MyArKysrKysrKysrKysKIHNyYy9pbmNsdWRlL2NhdGFsb2cvaGVhcC5o ICAgICAgICAgICAgICAgICAgICB8ICAgMiArCiBzcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRv ci5oICAgICAgICAgICAgICAgfCAgIDEgKwogLi4uL2lzb2xhdGlvbi9leHBlY3RlZC9mYXN0LXNl dC1ub3RudWxsLm91dCAgIHwgMTMzICsrKysrKysrKysrKysrKysrKwogc3JjL3Rlc3QvaXNvbGF0 aW9uL2lzb2xhdGlvbl9zY2hlZHVsZSAgICAgICAgIHwgICAxICsKIC4uLi9pc29sYXRpb24vc3Bl Y3MvZmFzdC1zZXQtbm90bnVsbC5zcGVjICAgICB8ICA0NiArKysrKysKIHNyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvYWx0ZXJfdGFibGUub3V0ICAgICB8ICAzOCArKysrKwogc3JjL3Rlc3QvcmVn cmVzcy9zcWwvYWx0ZXJfdGFibGUuc3FsICAgICAgICAgIHwgIDQzICsrKysrKwogMTEgZmlsZXMg Y2hhbmdlZCwgNTE2IGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyYy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9mYXN0LXNldC1ub3RudWxsLm91dAog Y3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L2lzb2xhdGlvbi9zcGVjcy9mYXN0LXNldC1ub3Ru dWxsLnNwZWMKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2hlYXAuYyBiL3NyYy9i YWNrZW5kL2NhdGFsb2cvaGVhcC5jCmluZGV4IGQ3Yjg4YjYxZGMuLjc5OTRiMGM0ODAgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFs b2cvaGVhcC5jCkBAIC01Nyw2ICs1Nyw3IEBACiAjaW5jbHVkZSAiY29tbWFuZHMvdGFibGVjbWRz LmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvdHlwZWNtZHMuaCIKICNpbmNsdWRlICJjb21tb24vaW50 LmgiCisjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY3V0b3IuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4u aCIKICNpbmNsdWRlICJub2Rlcy9ub2RlRnVuY3MuaCIKICNpbmNsdWRlICJvcHRpbWl6ZXIvb3B0 aW1pemVyLmgiCkBAIC0xMTYsNiArMTE3LDcgQEAgc3RhdGljIE5vZGUgKmNvb2tDb25zdHJhaW50 KFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJCQljaGFyICpyZWxuYW1lKTsKIAogCitzdGF0aWMg T2lkIGdldF9pbmRleF9mb3JfdmFsaWRhdGVfbm90bnVsbChSZWxhdGlvbiByZWwsIGludCBjb2xu dW0pOwogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQogICoJCQkJWFhYIFVHTFkgSEFSRCBDT0RFRCBCQURORVNTIEZPTExP V1MgWFhYCiAgKgpAQCAtMjI5OCw2ICsyMzAwLDggQEAgU3RvcmVDb25zdHJhaW50cyhSZWxhdGlv biByZWwsIExpc3QgKmNvb2tlZF9jb25zdHJhaW50cywgYm9vbCBpc19pbnRlcm5hbCkKICAqIG5l d0NvbnN0cmFpbnRzOiBsaXN0IG9mIENvbnN0cmFpbnQgbm9kZXMKICAqIGFsbG93X21lcmdlOiB0 cnVlIGlmIGNoZWNrIGNvbnN0cmFpbnRzIG1heSBiZSBtZXJnZWQgd2l0aCBleGlzdGluZyBvbmVz CiAgKiBpc19sb2NhbDogdHJ1ZSBpZiBkZWZpbml0aW9uIGlzIGxvY2FsLCBmYWxzZSBpZiBpdCdz IGluaGVyaXRlZAorICogaW5kZXhfcmVidWlsZDogdHJ1ZSBpZiB0aGUgQUxURVIgVEFCTEUgY29t bWFuZCBhbmQgaXQncyBzdWJjb21tYW5kcworICogd2lsbCBkbyBhbnkgaW5kZXggcmVidWlsZCBp biB0aGUgZnV0dXJlLgogICogaXNfaW50ZXJuYWw6IHRydWUgaWYgcmVzdWx0IG9mIHNvbWUgaW50 ZXJuYWwgcHJvY2Vzcywgbm90IGEgdXNlciByZXF1ZXN0CiAgKiBxdWVyeVN0cmluZzogdXNlZCBk dXJpbmcgZXhwcmVzc2lvbiB0cmFuc2Zvcm1hdGlvbiBvZiBkZWZhdWx0IHZhbHVlcyBhbmQKICAq CQljb29rZWQgQ0hFQ0sgY29uc3RyYWludHMKQEAgLTIzMjIsNiArMjMyNiw3IEBAIEFkZFJlbGF0 aW9uTmV3Q29uc3RyYWludHMoUmVsYXRpb24gcmVsLAogCQkJCQkJICBib29sIGFsbG93X21lcmdl LAogCQkJCQkJICBib29sIGlzX2xvY2FsLAogCQkJCQkJICBib29sIGlzX2ludGVybmFsLAorCQkJ CQkJICBib29sIGluZGV4X3JlYnVpbGQsCiAJCQkJCQkgIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5n KQogewogCUxpc3QJICAgKmNvb2tlZENvbnN0cmFpbnRzID0gTklMOwpAQCAtMjQwOSw2ICsyNDE0 LDcgQEAgQWRkUmVsYXRpb25OZXdDb25zdHJhaW50cyhSZWxhdGlvbiByZWwsCiAJCWNvb2tlZC0+ aXNfbG9jYWwgPSBpc19sb2NhbDsKIAkJY29va2VkLT5pbmhjb3VudCA9IGlzX2xvY2FsID8gMCA6 IDE7CiAJCWNvb2tlZC0+aXNfbm9faW5oZXJpdCA9IGZhbHNlOworCQljb29rZWQtPnByZV92YWxp ZGF0ZWQgPSBmYWxzZTsKIAkJY29va2VkQ29uc3RyYWludHMgPSBsYXBwZW5kKGNvb2tlZENvbnN0 cmFpbnRzLCBjb29rZWQpOwogCX0KIApAQCAtMjUzOSw2ICsyNTQ1LDcgQEAgQWRkUmVsYXRpb25O ZXdDb25zdHJhaW50cyhSZWxhdGlvbiByZWwsCiAJCQljb29rZWQtPmlzX2xvY2FsID0gaXNfbG9j YWw7CiAJCQljb29rZWQtPmluaGNvdW50ID0gaXNfbG9jYWwgPyAwIDogMTsKIAkJCWNvb2tlZC0+ aXNfbm9faW5oZXJpdCA9IGNkZWYtPmlzX25vX2luaGVyaXQ7CisJCQljb29rZWQtPnByZV92YWxp ZGF0ZWQgPSBmYWxzZTsKIAkJCWNvb2tlZENvbnN0cmFpbnRzID0gbGFwcGVuZChjb29rZWRDb25z dHJhaW50cywgY29va2VkKTsKIAkJfQogCQllbHNlIGlmIChjZGVmLT5jb250eXBlID09IENPTlNU Ul9OT1ROVUxMKQpAQCAtMjU0Nyw2ICsyNTU0LDcgQEAgQWRkUmVsYXRpb25OZXdDb25zdHJhaW50 cyhSZWxhdGlvbiByZWwsCiAJCQlBdHRyTnVtYmVyCWNvbG51bTsKIAkJCWludDE2CQlpbmhjb3Vu dCA9IGlzX2xvY2FsID8gMCA6IDE7CiAJCQljaGFyCSAgICpubm5hbWU7CisJCQlPaWQJCQlpbmRl eG9pZCA9IEludmFsaWRPaWQ7CiAKIAkJCS8qIERldGVybWluZSB3aGljaCBjb2x1bW4gdG8gbW9k aWZ5ICovCiAJCQljb2xudW0gPSBnZXRfYXR0bnVtKFJlbGF0aW9uR2V0UmVsaWQocmVsKSwgc3Ry VmFsKGxpbml0aWFsKGNkZWYtPmtleXMpKSk7CkBAIC0yNTk5LDYgKzI2MDcsMTYgQEAgQWRkUmVs YXRpb25OZXdDb25zdHJhaW50cyhSZWxhdGlvbiByZWwsCiAJCQkJCQkJCWluaGNvdW50LAogCQkJ CQkJCQljZGVmLT5pc19ub19pbmhlcml0KTsKIAorCQkJLyoKKwkJCSAqIGlmIHRoZXJlIGlzIGFu eSBpbmRleCB0byBiZSByZWJ1aWxkLCB0aGVuIHdlIGNhbm5vdCBkbyBpbmRleHNjYW4KKwkJCSAq IGluIGluZGV4X2NoZWNrX25vdG51bGw7IGZvciByZV9hZGRlZCAoaXNfaW50ZXJuYWwgaXMgdHJ1 ZSkKKwkJCSAqIG5vdC1udWxsIGNvbnN0cmFpbnQgYWxzbyBjYW5ub3QgdXNlIGluZGV4c2NhbiB0 byBjaGVjayBudWxsCisJCQkgKiBleGlzdGVuY2UuCisJCQkqLworCQkJaWYgKHJlbC0+cmRfcmVs LT5yZWxraW5kID09IFJFTEtJTkRfUkVMQVRJT04gJiYKKwkJCQkhaXNfaW50ZXJuYWwgJiYKKwkJ CQkhaW5kZXhfcmVidWlsZCkKKwkJCQlpbmRleG9pZCA9IGdldF9pbmRleF9mb3JfdmFsaWRhdGVf bm90bnVsbChyZWwsIGNvbG51bSk7CiAJCQlubmNvb2tlZCA9IChDb29rZWRDb25zdHJhaW50ICop IHBhbGxvYyhzaXplb2YoQ29va2VkQ29uc3RyYWludCkpOwogCQkJbm5jb29rZWQtPmNvbnR5cGUg PSBDT05TVFJfTk9UTlVMTDsKIAkJCW5uY29va2VkLT5jb25vaWQgPSBjb25zdHJPaWQ7CkBAIC0y NjA5LDcgKzI2MjcsMTcgQEAgQWRkUmVsYXRpb25OZXdDb25zdHJhaW50cyhSZWxhdGlvbiByZWws CiAJCQlubmNvb2tlZC0+aXNfbG9jYWwgPSBpc19sb2NhbDsKIAkJCW5uY29va2VkLT5pbmhjb3Vu dCA9IGluaGNvdW50OwogCQkJbm5jb29rZWQtPmlzX25vX2luaGVyaXQgPSBjZGVmLT5pc19ub19p bmhlcml0OwotCisJCQlubmNvb2tlZC0+cHJlX3ZhbGlkYXRlZCA9IGZhbHNlOworCQkJaWYgKE9p ZElzVmFsaWQoaW5kZXhvaWQpKQorCQkJeworCQkJCW5uY29va2VkLT5wcmVfdmFsaWRhdGVkID0K KwkJCQkJCWluZGV4X2NoZWNrX25vdG51bGwoUmVsYXRpb25HZXRSZWxpZChyZWwpLAorCQkJCQkJ CQkJCQlpbmRleG9pZCwKKwkJCQkJCQkJCQkJY29sbnVtKTsKKwkJCX0KKwkJCWlmIChubmNvb2tl ZC0+cHJlX3ZhbGlkYXRlZCkKKwkJCQllbG9nKERFQlVHMSwgImFscmVhZHkgdXNpbmcgaW5kZXgg KCVkKSB2ZXJ0aWZpZWQgdGhhdCByZWxhdGlvbiBcIiVzXCIgY29sdW1uIG51bWJlciAoJWQpIGRv bid0IGhhdmUgbnVsbCB2YWx1ZXMiLAorCQkJCQkJCSAgaW5kZXhvaWQsIFJlbGF0aW9uR2V0UmVs YXRpb25OYW1lKHJlbCksIGNvbG51bSk7CiAJCQljb29rZWRDb25zdHJhaW50cyA9IGxhcHBlbmQo Y29va2VkQ29uc3RyYWludHMsIG5uY29va2VkKTsKIAkJfQogCX0KQEAgLTI2MjYsNiArMjY1NCw2 NCBAQCBBZGRSZWxhdGlvbk5ld0NvbnN0cmFpbnRzKFJlbGF0aW9uIHJlbCwKIAlyZXR1cm4gY29v a2VkQ29uc3RyYWludHM7CiB9CiAKK3N0YXRpYyBPaWQKK2dldF9pbmRleF9mb3JfdmFsaWRhdGVf bm90bnVsbChSZWxhdGlvbiByZWxhdGlvbiwgaW50IGNvbG51bSkKK3sKKwlSZWxhdGlvbglpbmRy ZWw7CisJU3lzU2NhbkRlc2MgaW5kc2NhbjsKKwlTY2FuS2V5RGF0YSBza2V5OworCUhlYXBUdXBs ZQlodHVwOworCVR1cGxlRGVzYwl0dXBkZXNjOworCUZvcm1fcGdfYXR0cmlidXRlIGF0dHI7CisJ TGlzdAkgICAqcmVzdWx0ID0gTklMOworCisJdHVwZGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IocmVs YXRpb24pOworCisJLyogUHJlcGFyZSB0byBzY2FuIHBnX2luZGV4IGZvciBlbnRyaWVzIGhhdmlu ZyBpbmRyZWxpZCA9IHRoaXMgcmVsLiAqLworCVNjYW5LZXlJbml0KCZza2V5LAorCQkJCUFudW1f cGdfaW5kZXhfaW5kcmVsaWQsCisJCQkJQlRFcXVhbFN0cmF0ZWd5TnVtYmVyLCBGX09JREVRLAor CQkJCU9iamVjdElkR2V0RGF0dW0oUmVsYXRpb25HZXRSZWxpZChyZWxhdGlvbikpKTsKKworCWlu ZHJlbCA9IHRhYmxlX29wZW4oSW5kZXhSZWxhdGlvbklkLCBBY2Nlc3NTaGFyZUxvY2spOworCWlu ZHNjYW4gPSBzeXN0YWJsZV9iZWdpbnNjYW4oaW5kcmVsLCBJbmRleEluZHJlbGlkSW5kZXhJZCwg dHJ1ZSwKKwkJCQkJCQkJIE5VTEwsIDEsICZza2V5KTsKKworCXdoaWxlIChIZWFwVHVwbGVJc1Zh bGlkKGh0dXAgPSBzeXN0YWJsZV9nZXRuZXh0KGluZHNjYW4pKSkKKwl7CisJCUZvcm1fcGdfaW5k ZXggaW5kZXggPSAoRm9ybV9wZ19pbmRleCkgR0VUU1RSVUNUKGh0dXApOworCisJCWlmICghaW5k ZXgtPmluZGltbWVkaWF0ZSB8fCAhaW5kZXgtPmluZGlzdmFsaWQgfHwgIWluZGV4LT5pbmRpc2xp dmUpCisJCQljb250aW51ZTsKKworCQlpZiAoIWhlYXBfYXR0aXNudWxsKGh0dXAsIEFudW1fcGdf aW5kZXhfaW5kZXhwcnMsIE5VTEwpIHx8CisJCQkhaGVhcF9hdHRpc251bGwoaHR1cCwgQW51bV9w Z19pbmRleF9pbmRwcmVkLCBOVUxMKSkKKwkJCWNvbnRpbnVlOworCisJCWZvciAoaW50IGkgPSAw OyBpIDwgaW5kZXgtPmluZG5rZXlhdHRzOyBpKyspCisJCXsKKwkJCWF0dHIgPSBUdXBsZURlc2NB dHRyKHR1cGRlc2MsIChpbmRleC0+aW5ka2V5LnZhbHVlc1tpXSkgLSAxKTsKKwkJCWlmIChhdHRy LT5hdHRudW0gPT0gY29sbnVtKQorCQkJeworCQkJCUFzc2VydChPaWRJc1ZhbGlkKGluZGV4LT5p bmRleHJlbGlkKSk7CisJCQkJcmVzdWx0ID0gbGFwcGVuZF9vaWQocmVzdWx0LCBpbmRleC0+aW5k ZXhyZWxpZCk7CisJCQkJYnJlYWs7CisJCQl9CisJCX0KKwl9CisJc3lzdGFibGVfZW5kc2Nhbihp bmRzY2FuKTsKKwl0YWJsZV9jbG9zZShpbmRyZWwsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwlpZihs aXN0X2xlbmd0aChyZXN1bHQpID09IDApCisJCXJldHVybiBJbnZhbGlkT2lkOworCWVsc2UKKwl7 CisJCS8qIFNvcnQgdGhlIHJlc3VsdCBsaXN0IGludG8gT0lEIG9yZGVyLCBtYWtlIHRoZSByZXN1 bHQgc3RhYmxlLiAqLworCQlsaXN0X3NvcnQocmVzdWx0LCBsaXN0X29pZF9jbXApOworCQlyZXR1 cm4gbGlzdF9udGhfb2lkKHJlc3VsdCwgMCk7CisJfQorfQorCiAvKgogICogQ2hlY2sgZm9yIGEg cHJlLWV4aXN0aW5nIGNoZWNrIGNvbnN0cmFpbnQgdGhhdCBjb25mbGljdHMgd2l0aCBhIHByb3Bv c2VkCiAgKiBuZXcgb25lLCBhbmQgZWl0aGVyIGFkanVzdCBpdHMgY29uaXNsb2NhbC9jb25pbmhj b3VudCBzZXR0aW5ncyBvciB0aHJvdwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9w Z19jb25zdHJhaW50LmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX2NvbnN0cmFpbnQuYwppbmRl eCA5YzA1YTk4ZDI4Li42NjM4ZjFmYmUyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9n L3BnX2NvbnN0cmFpbnQuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX2NvbnN0cmFpbnQu YwpAQCAtODI2LDYgKzgyNiw3IEBAIFJlbGF0aW9uR2V0Tm90TnVsbENvbnN0cmFpbnRzKE9pZCBy ZWxpZCwgYm9vbCBjb29rZWQsIGJvb2wgaW5jbHVkZV9ub2luaCkKIAkJCWNvb2tlZC0+aXNfbG9j YWwgPSB0cnVlOwogCQkJY29va2VkLT5pbmhjb3VudCA9IDA7CiAJCQljb29rZWQtPmlzX25vX2lu aGVyaXQgPSBjb25Gb3JtLT5jb25ub2luaGVyaXQ7CisJCQljb29rZWQtPnByZV92YWxpZGF0ZWQg PSBmYWxzZTsKIAogCQkJbm90bnVsbHMgPSBsYXBwZW5kKG5vdG51bGxzLCBjb29rZWQpOwogCQl9 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCmluZGV4IDZjY2FlNGNiNGEuLmVkYWE0ZGFjYTYgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCisrKyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCkBAIC0yMTksNiArMjE5LDggQEAgdHlwZWRlZiBzdHJ1 Y3QgTmV3Q29uc3RyYWludAogCU9pZAkJCXJlZmluZGlkOwkJLyogT0lEIG9mIFBLJ3MgaW5kZXgs IGlmIEZPUkVJR04gKi8KIAlib29sCQljb253aXRocGVyaW9kOwkvKiBXaGV0aGVyIHRoZSBuZXcg Rk9SRUlHTiBLRVkgdXNlcyBQRVJJT0QgKi8KIAlPaWQJCQljb25pZDsJCQkvKiBPSUQgb2YgcGdf Y29uc3RyYWludCBlbnRyeSwgaWYgRk9SRUlHTiAqLworCWludAkJCW5uX2F0dG51bTsJCS8qIGFs cmVhZHkgdmFsaWRhdGVkIE5PVC1OVUxMIGNvbnN0cmFpbnQgYXR0bnVtLgorCQkJCQkJCQkJLTEg bWVhbnMgbm90IGFwcGxpY2FibGUgKi8KIAlOb2RlCSAgICpxdWFsOwkJCS8qIENoZWNrIGV4cHIg b3IgQ09OU1RSX0ZPUkVJR04gQ29uc3RyYWludCAqLwogCUV4cHJTdGF0ZSAgKnF1YWxzdGF0ZTsJ CS8qIEV4ZWN1dGlvbiBzdGF0ZSBmb3IgQ0hFQ0sgZXhwciAqLwogfSBOZXdDb25zdHJhaW50OwpA QCAtOTc3LDYgKzk3OSw3IEBAIERlZmluZVJlbGF0aW9uKENyZWF0ZVN0bXQgKnN0bXQsIGNoYXIg cmVsa2luZCwgT2lkIG93bmVySWQsCiAJCQljb29rZWQtPmlzX2xvY2FsID0gdHJ1ZTsJLyogbm90 IHVzZWQgZm9yIGRlZmF1bHRzICovCiAJCQljb29rZWQtPmluaGNvdW50ID0gMDsJLyogZGl0dG8g Ki8KIAkJCWNvb2tlZC0+aXNfbm9faW5oZXJpdCA9IGZhbHNlOworCQkJY29va2VkLT5wcmVfdmFs aWRhdGVkID0gZmFsc2U7CiAJCQljb29rZWREZWZhdWx0cyA9IGxhcHBlbmQoY29va2VkRGVmYXVs dHMsIGNvb2tlZCk7CiAJCQlhdHRyLT5hdHRoYXNkZWYgPSB0cnVlOwogCQl9CkBAIC0xMDYwLDcg KzEwNjMsNyBAQCBEZWZpbmVSZWxhdGlvbihDcmVhdGVTdG10ICpzdG10LCBjaGFyIHJlbGtpbmQs IE9pZCBvd25lcklkLAogCSAqLwogCWlmIChyYXdEZWZhdWx0cykKIAkJQWRkUmVsYXRpb25OZXdD b25zdHJhaW50cyhyZWwsIHJhd0RlZmF1bHRzLCBOSUwsCi0JCQkJCQkJCSAgdHJ1ZSwgdHJ1ZSwg ZmFsc2UsIHF1ZXJ5U3RyaW5nKTsKKwkJCQkJCQkJICB0cnVlLCB0cnVlLCBmYWxzZSwgZmFsc2Us IHF1ZXJ5U3RyaW5nKTsKIAogCS8qCiAJICogTWFrZSBjb2x1bW4gZ2VuZXJhdGlvbiBleHByZXNz aW9ucyB2aXNpYmxlIGZvciB1c2UgYnkgcGFydGl0aW9uaW5nLgpAQCAtMTI5MSw3ICsxMjk0LDcg QEAgRGVmaW5lUmVsYXRpb24oQ3JlYXRlU3RtdCAqc3RtdCwgY2hhciByZWxraW5kLCBPaWQgb3du ZXJJZCwKIAkgKi8KIAlpZiAoc3RtdC0+Y29uc3RyYWludHMpCiAJCUFkZFJlbGF0aW9uTmV3Q29u c3RyYWludHMocmVsLCBOSUwsIHN0bXQtPmNvbnN0cmFpbnRzLAotCQkJCQkJCQkgIHRydWUsIHRy dWUsIGZhbHNlLCBxdWVyeVN0cmluZyk7CisJCQkJCQkJCSAgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIGZh bHNlLCBxdWVyeVN0cmluZyk7CiAKIAkvKgogCSAqIEZpbmFsbHksIG1lcmdlIHRoZSBub3QtbnVs bCBjb25zdHJhaW50cyB0aGF0IGFyZSBkZWNsYXJlZCBkaXJlY3RseSB3aXRoCkBAIC02MDM4LDYg KzYwNDEsNyBAQCBBVFJld3JpdGVUYWJsZShBbHRlcmVkVGFibGVJbmZvICp0YWIsIE9pZCBPSURO ZXdIZWFwLCBMT0NLTU9ERSBsb2NrbW9kZSkKIAlUdXBsZURlc2MJb2xkVHVwRGVzYzsKIAlUdXBs ZURlc2MJbmV3VHVwRGVzYzsKIAlib29sCQluZWVkc2NhbiA9IGZhbHNlOworCWJvb2wJCXByZXZh bGlkYXRlZCA9IHRydWU7CiAJTGlzdAkgICAqbm90bnVsbF9hdHRyczsKIAlpbnQJCQlpOwogCUxp c3RDZWxsICAgKmw7CkBAIC02MDk1LDYgKzYwOTksMTEgQEAgQVRSZXdyaXRlVGFibGUoQWx0ZXJl ZFRhYmxlSW5mbyAqdGFiLCBPaWQgT0lETmV3SGVhcCwgTE9DS01PREUgbG9ja21vZGUpCiAJCQkJ bmVlZHNjYW4gPSB0cnVlOwogCQkJCWNvbi0+cXVhbHN0YXRlID0gRXhlY1ByZXBhcmVFeHByKChF eHByICopIGNvbi0+cXVhbCwgZXN0YXRlKTsKIAkJCQlicmVhazsKKworCQkJY2FzZSBDT05TVFJf Tk9UTlVMTDoKKwkJCQlpZihjb24tPm5uX2F0dG51bSA9PSAtMSkKKwkJCQkJcHJldmFsaWRhdGVk ID0gZmFsc2U7CisJCQkJYnJlYWs7CiAJCQljYXNlIENPTlNUUl9GT1JFSUdOOgogCQkJCS8qIE5v dGhpbmcgdG8gZG8gaGVyZSAqLwogCQkJCWJyZWFrOwpAQCAtNjEzNCw3ICs2MTQzLDEyIEBAIEFU UmV3cml0ZVRhYmxlKEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgT2lkIE9JRE5ld0hlYXAsIExPQ0tN T0RFIGxvY2ttb2RlKQogCQkJaWYgKGF0dHItPmF0dG5vdG51bGwgJiYgIWF0dHItPmF0dGlzZHJv cHBlZCkKIAkJCQlub3RudWxsX2F0dHJzID0gbGFwcGVuZF9pbnQobm90bnVsbF9hdHRycywgaSk7 CiAJCX0KLQkJaWYgKG5vdG51bGxfYXR0cnMpCisKKwkJLyoKKwkJICogd2UgZGlkIHNvbWUgcHJl dmFsaWRhdGlvbiBhdCBwaGFzZSAyLCBzbyB3ZSBjYW4gc2FmZWx5IGJlIHN1cmUgbm8KKwkJICog bmVlZCB0byBzY2FuLiBzZWUgQWRkUmVsYXRpb25OZXdDb25zdHJhaW50cyBhbmQgaW5kZXhfY2hl Y2tfbm90bnVsbAorCQkqLworCQlpZiAobm90bnVsbF9hdHRycyAmJiAhcHJldmFsaWRhdGVkKQog CQkJbmVlZHNjYW4gPSB0cnVlOwogCX0KIApAQCAtNzI4MCw3ICs3Mjk0LDcgQEAgQVRFeGVjQWRk Q29sdW1uKExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVs LAogCQkgKiBfbGlzdF8gb2YgZGVmYXVsdHMsIGJ1dCB3ZSBqdXN0IGRvIG9uZS4KIAkJICovCiAJ CUFkZFJlbGF0aW9uTmV3Q29uc3RyYWludHMocmVsLCBsaXN0X21ha2UxKHJhd0VudCksIE5JTCwK LQkJCQkJCQkJICBmYWxzZSwgdHJ1ZSwgZmFsc2UsIE5VTEwpOworCQkJCQkJCQkgIGZhbHNlLCB0 cnVlLCBmYWxzZSwgZmFsc2UsIE5VTEwpOwogCiAJCS8qIE1ha2UgdGhlIGFkZGl0aW9uYWwgY2F0 YWxvZyBjaGFuZ2VzIHZpc2libGUgKi8KIAkJQ29tbWFuZENvdW50ZXJJbmNyZW1lbnQoKTsKQEAg LTc3MjIsNiArNzczNiw4IEBAIEFURXhlY1NldE5vdE51bGwoTGlzdCAqKndxdWV1ZSwgUmVsYXRp b24gcmVsLCBjaGFyICpjb25OYW1lLCBjaGFyICpjb2xOYW1lLAogCUNvb2tlZENvbnN0cmFpbnQg KmNjb247CiAJTGlzdAkgICAqY29va2VkOwogCWJvb2wJCWlzX25vX2luaGVyaXQgPSBmYWxzZTsK Kwlib29sCQlpbmRleF9yZWJ1aWxkID0gZmFsc2U7CisJQWx0ZXJlZFRhYmxlSW5mbyAqdGFiID0g TlVMTDsKIAogCS8qIEd1YXJkIGFnYWluc3Qgc3RhY2sgb3ZlcmZsb3cgZHVlIHRvIG92ZXJseSBk ZWVwIGluaGVyaXRhbmNlIHRyZWUuICovCiAJY2hlY2tfc3RhY2tfZGVwdGgoKTsKQEAgLTc4Mzcs MTAgKzc4NTMsNDQgQEAgQVRFeGVjU2V0Tm90TnVsbChMaXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiBy ZWwsIGNoYXIgKmNvbk5hbWUsIGNoYXIgKmNvbE5hbWUsCiAJY29uc3RyYWludC0+aXNfbm9faW5o ZXJpdCA9IGlzX25vX2luaGVyaXQ7CiAJY29uc3RyYWludC0+Y29ubmFtZSA9IGNvbk5hbWU7CiAK KwkvKgorCSAqIGZvciBBTFRFUiBUQUJMRSBBTFRFUiBDT0xVTU4gU0VUIEVYUFJFU1NJT04sIFJl bWVtYmVySW5kZXhGb3JSZWJ1aWxkaW5nCisJICogY2FuIG9ubHkgcmVtZW1iZXIgdGhlIHBhcnRp dGlvbmVkIGluZGV4IGVudHJ5CisJICogKFJFTEtJTkRfUEFSVElUSU9ORURfSU5ERVgpLCBub3Qg dGhlIHJlZ3VsYXIgaW5kZXgKKwkgKiAoUkVMS0lORF9QQVJUSVRJT05FRF9JTkRFWCkuIFNvIHdl IGNhbiBub3QgdXNlIGluZGV4X2NoZWNrX25vdG51bGwgdG8KKwkgKiBmYXN0IGNoZWNrIHRoZSBj b2x1bW4gbm90LW51bGwgc3RhdHVzIGZvciB0aGUgcGFydGl0aW9uZWQgdGFibGUgbm93LgorCSAq IHRoYXQgaXMgd2h5IGlmIHJlY3Vyc2luZyBpcyB0cnVlLCB3ZSBibGluZGx5IGFzc3VtZSBpbmRl eF9yZWJ1aWxkIGlzCisJICogdHJ1ZS4gIGluIGZ1dHVyZSwgd2UgY2FuIGl0ZXJhdGUgY2hhbmdl ZEluZGV4T2lkcywgZmluZCBvdXQgaWYgdGhlcmUgaXMKKwkgKiBhbnkgaW5kZXggb3ZlciB0aGF0 IG5vdC1udWxsIGNvbHVtbiBvciBub3QuCisJICovCisJdGFiID0gQVRHZXRRdWV1ZUVudHJ5KHdx dWV1ZSwgcmVsKTsKKwlpZiAobGlzdF9sZW5ndGgodGFiLT5jaGFuZ2VkSW5kZXhPaWRzKSA+IDAg fHwgcmVjdXJzaW5nKQorCQlpbmRleF9yZWJ1aWxkID0gdHJ1ZTsKKwogCS8qIGFuZCBkbyBpdCAq LwogCWNvb2tlZCA9IEFkZFJlbGF0aW9uTmV3Q29uc3RyYWludHMocmVsLCBOSUwsIGxpc3RfbWFr ZTEoY29uc3RyYWludCksCi0JCQkJCQkJCQkgICBmYWxzZSwgIXJlY3Vyc2luZywgZmFsc2UsIE5V TEwpOworCQkJCQkJCQkJICAgZmFsc2UsICFyZWN1cnNpbmcsIGZhbHNlLCBpbmRleF9yZWJ1aWxk LCBOVUxMKTsKIAljY29uID0gbGluaXRpYWwoY29va2VkKTsKKworCWlmICghY2Nvbi0+c2tpcF92 YWxpZGF0aW9uKQorCXsKKwkJTmV3Q29uc3RyYWludCAqbmV3Y29uOworCisJCW5ld2NvbiA9IChO ZXdDb25zdHJhaW50ICopIHBhbGxvYzAoc2l6ZW9mKE5ld0NvbnN0cmFpbnQpKTsKKwkJbmV3Y29u LT5uYW1lID0gY2Nvbi0+bmFtZTsKKwkJbmV3Y29uLT5jb250eXBlID0gY2Nvbi0+Y29udHlwZTsK KwkJaWYgKGNjb24tPnByZV92YWxpZGF0ZWQpCisJCXsKKwkJCW5ld2Nvbi0+bm5fYXR0bnVtID0g Y2Nvbi0+YXR0bnVtOworCQkJQXNzZXJ0KGNjb24tPmF0dG51bSA+IDApOworCQl9CisJCWVsc2UK KwkJCW5ld2Nvbi0+bm5fYXR0bnVtID0gLTE7CisJCW5ld2Nvbi0+cXVhbCA9IE5VTEw7CisKKwkJ dGFiLT5jb25zdHJhaW50cyA9IGxhcHBlbmQodGFiLT5jb25zdHJhaW50cywgbmV3Y29uKTsKKwl9 CisKIAlPYmplY3RBZGRyZXNzU2V0KGFkZHJlc3MsIENvbnN0cmFpbnRSZWxhdGlvbklkLCBjY29u LT5jb25vaWQpOwogCiAJSW52b2tlT2JqZWN0UG9zdEFsdGVySG9vayhSZWxhdGlvblJlbGF0aW9u SWQsCkBAIC03OTg4LDcgKzgwMzgsNyBAQCBBVEV4ZWNDb2x1bW5EZWZhdWx0KFJlbGF0aW9uIHJl bCwgY29uc3QgY2hhciAqY29sTmFtZSwKIAkJICogX2xpc3RfIG9mIGRlZmF1bHRzLCBidXQgd2Ug anVzdCBkbyBvbmUuCiAJCSAqLwogCQlBZGRSZWxhdGlvbk5ld0NvbnN0cmFpbnRzKHJlbCwgbGlz dF9tYWtlMShyYXdFbnQpLCBOSUwsCi0JCQkJCQkJCSAgZmFsc2UsIHRydWUsIGZhbHNlLCBOVUxM KTsKKwkJCQkJCQkJICBmYWxzZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCBOVUxMKTsKIAl9CiAKIAlP YmplY3RBZGRyZXNzU3ViU2V0KGFkZHJlc3MsIFJlbGF0aW9uUmVsYXRpb25JZCwKQEAgLTg0NTAs NyArODUwMCw3IEBAIEFURXhlY1NldEV4cHJlc3Npb24oQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBS ZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIgKmNvbE5hbWUsCiAKIAkvKiBTdG9yZSB0aGUgZ2VuZXJh dGVkIGV4cHJlc3Npb24gKi8KIAlBZGRSZWxhdGlvbk5ld0NvbnN0cmFpbnRzKHJlbCwgbGlzdF9t YWtlMShyYXdFbnQpLCBOSUwsCi0JCQkJCQkJICBmYWxzZSwgdHJ1ZSwgZmFsc2UsIE5VTEwpOwor CQkJCQkJCSAgZmFsc2UsIHRydWUsIGZhbHNlLCBmYWxzZSwgTlVMTCk7CiAKIAkvKiBNYWtlIGFi b3ZlIG5ldyBleHByZXNzaW9uIHZpc2libGUgKi8KIAlDb21tYW5kQ291bnRlckluY3JlbWVudCgp OwpAQCAtOTU1NCw2ICs5NjA0LDEwIEBAIEFUQWRkQ2hlY2tOTkNvbnN0cmFpbnQoTGlzdCAqKndx dWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsCiAJTGlzdAkgICAqY2hp bGRyZW47CiAJTGlzdENlbGwgICAqY2hpbGQ7CiAJT2JqZWN0QWRkcmVzcyBhZGRyZXNzID0gSW52 YWxpZE9iamVjdEFkZHJlc3M7CisJYm9vbAkJaW5kZXhfcmVidWlsZCA9IGZhbHNlOworCisJaWYg KGxpc3RfbGVuZ3RoKHRhYi0+Y2hhbmdlZEluZGV4T2lkcykgPiAwIHx8IHJlY3Vyc2luZykKKwkJ aW5kZXhfcmVidWlsZCA9IHRydWU7CiAKIAkvKiBHdWFyZCBhZ2FpbnN0IHN0YWNrIG92ZXJmbG93 IGR1ZSB0byBvdmVybHkgZGVlcCBpbmhlcml0YW5jZSB0cmVlLiAqLwogCWNoZWNrX3N0YWNrX2Rl cHRoKCk7CkBAIC05NTc4LDYgKzk2MzIsNyBAQCBBVEFkZENoZWNrTk5Db25zdHJhaW50KExpc3Qg Kip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLAogCQkJCQkJCQkJ CXJlY3Vyc2luZyB8fCBpc19yZWFkZCwJLyogYWxsb3dfbWVyZ2UgKi8KIAkJCQkJCQkJCQkhcmVj dXJzaW5nLCAvKiBpc19sb2NhbCAqLwogCQkJCQkJCQkJCWlzX3JlYWRkLAkvKiBpc19pbnRlcm5h bCAqLworCQkJCQkJCQkJCWluZGV4X3JlYnVpbGQsCiAJCQkJCQkJCQkJTlVMTCk7CS8qIHF1ZXJ5 U3RyaW5nIG5vdCBhdmFpbGFibGUKIAkJCQkJCQkJCQkJCSAqIGhlcmUgKi8KIApAQCAtOTU4OSwx NSArOTY0NCwxOSBAQCBBVEFkZENoZWNrTk5Db25zdHJhaW50KExpc3QgKip3cXVldWUsIEFsdGVy ZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLAogCXsKIAkJQ29va2VkQ29uc3RyYWludCAq Y2NvbiA9IChDb29rZWRDb25zdHJhaW50ICopIGxmaXJzdChsY29uKTsKIAotCQlpZiAoIWNjb24t PnNraXBfdmFsaWRhdGlvbiAmJiBjY29uLT5jb250eXBlICE9IENPTlNUUl9OT1ROVUxMKQorCQlp ZiAoIWNjb24tPnNraXBfdmFsaWRhdGlvbikKIAkJewogCQkJTmV3Q29uc3RyYWludCAqbmV3Y29u OwogCiAJCQluZXdjb24gPSAoTmV3Q29uc3RyYWludCAqKSBwYWxsb2MwKHNpemVvZihOZXdDb25z dHJhaW50KSk7CiAJCQluZXdjb24tPm5hbWUgPSBjY29uLT5uYW1lOwogCQkJbmV3Y29uLT5jb250 eXBlID0gY2Nvbi0+Y29udHlwZTsKKwkJCWlmIChjY29uLT5wcmVfdmFsaWRhdGVkICYmIGNjb24t PmNvbnR5cGUgPT0gQ09OU1RSX05PVE5VTEwpCisJCQkJbmV3Y29uLT5ubl9hdHRudW0gPSBjY29u LT5hdHRudW07CisJCQllbHNlCisJCQkJbmV3Y29uLT5ubl9hdHRudW0gPSAtMTsKKwogCQkJbmV3 Y29uLT5xdWFsID0gY2Nvbi0+ZXhwcjsKLQogCQkJdGFiLT5jb25zdHJhaW50cyA9IGxhcHBlbmQo dGFiLT5jb25zdHJhaW50cywgbmV3Y29uKTsKIAkJfQogCkBAIC0xMDcxOCw2ICsxMDc3Nyw3IEBA IGFkZEZrUmVjdXJzZVJlZmVyZW5jaW5nKExpc3QgKip3cXVldWUsIENvbnN0cmFpbnQgKmZrY29u c3RyYWludCwgUmVsYXRpb24gcmVsLAogCQkJbmV3Y29uLT5yZWZpbmRpZCA9IGluZGV4T2lkOwog CQkJbmV3Y29uLT5jb25pZCA9IHBhcmVudENvbnN0cjsKIAkJCW5ld2Nvbi0+Y29ud2l0aHBlcmlv ZCA9IGZrY29uc3RyYWludC0+Zmtfd2l0aF9wZXJpb2Q7CisJCQluZXdjb24tPm5uX2F0dG51bSA9 IC0xOwogCQkJbmV3Y29uLT5xdWFsID0gKE5vZGUgKikgZmtjb25zdHJhaW50OwogCiAJCQl0YWIt PmNvbnN0cmFpbnRzID0gbGFwcGVuZCh0YWItPmNvbnN0cmFpbnRzLCBuZXdjb24pOwpAQCAtMTIw MjYsNiArMTIwODYsNyBAQCBBVEV4ZWNWYWxpZGF0ZUNvbnN0cmFpbnQoTGlzdCAqKndxdWV1ZSwg UmVsYXRpb24gcmVsLCBjaGFyICpjb25zdHJOYW1lLAogCQkJbmV3Y29uLT5yZWZyZWxpZCA9IGNv bi0+Y29uZnJlbGlkOwogCQkJbmV3Y29uLT5yZWZpbmRpZCA9IGNvbi0+Y29uaW5kaWQ7CiAJCQlu ZXdjb24tPmNvbmlkID0gY29uLT5vaWQ7CisJCQluZXdjb24tPm5uX2F0dG51bSA9IC0xOwogCQkJ bmV3Y29uLT5xdWFsID0gKE5vZGUgKikgZmtjb25zdHJhaW50OwogCiAJCQkvKiBGaW5kIG9yIGNy ZWF0ZSB3b3JrIHF1ZXVlIGVudHJ5IGZvciB0aGlzIHRhYmxlICovCkBAIC0xMjA5OCw2ICsxMjE1 OSw3IEBAIEFURXhlY1ZhbGlkYXRlQ29uc3RyYWludChMaXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiBy ZWwsIGNoYXIgKmNvbnN0ck5hbWUsCiAKIAkJCXZhbCA9IFN5c0NhY2hlR2V0QXR0ck5vdE51bGwo Q09OU1RST0lELCB0dXBsZSwKIAkJCQkJCQkJCQkgQW51bV9wZ19jb25zdHJhaW50X2NvbmJpbik7 CisJCQluZXdjb24tPm5uX2F0dG51bSA9IC0xOwogCQkJY29uYmluID0gVGV4dERhdHVtR2V0Q1N0 cmluZyh2YWwpOwogCQkJbmV3Y29uLT5xdWFsID0gKE5vZGUgKikgc3RyaW5nVG9Ob2RlKGNvbmJp bik7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5jIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5nLmMKaW5kZXggZjBhNWY4ODc5YS4uMzdh N2QzYTk2ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5nLmMK KysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5nLmMKQEAgLTEwOCw2ICsxMDgs NyBAQAogCiAjaW5jbHVkZSAiYWNjZXNzL2dlbmFtLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3JlbHNj YW4uaCIKKyNpbmNsdWRlICJhY2Nlc3MvdGFibGUuaCIKICNpbmNsdWRlICJhY2Nlc3MvdGFibGVh bS5oIgogI2luY2x1ZGUgImFjY2Vzcy94YWN0LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9pbmRleC5o IgpAQCAtMTE2NiwzICsxMTY3LDk1IEBAIEV4ZWNXaXRob3V0T3ZlcmxhcHNOb3RFbXB0eShSZWxh dGlvbiByZWwsIE5hbWVEYXRhIGF0dG5hbWUsIERhdHVtIGF0dHZhbCwgY2hhciB0CiAJCQkJIGVy cm1zZygiZW1wdHkgV0lUSE9VVCBPVkVSTEFQUyB2YWx1ZSBmb3VuZCBpbiBjb2x1bW4gXCIlc1wi IGluIHJlbGF0aW9uIFwiJXNcIiIsCiAJCQkJCQlOYW1lU3RyKGF0dG5hbWUpLCBSZWxhdGlvbkdl dFJlbGF0aW9uTmFtZShyZWwpKSkpOwogfQorCitib29sCitpbmRleF9jaGVja19ub3RudWxsKE9p ZCB0YWJsZV9vaWQsIE9pZCBpbmRleG9pZCwgQXR0ck51bWJlciBjb2xudW0pCit7CisJUmVsYXRp b24gaW5kZXg7CisJUmVsYXRpb24gaGVhcDsKKworCVNuYXBzaG90RGF0YSBEaXJ0eVNuYXBzaG90 OworCUluZGV4U2NhbkRlc2MgaW5kZXhfc2NhbjsKKwlTY2FuS2V5RGF0YSBzY2Fua2V5c1tJTkRF WF9NQVhfS0VZU107CisJVHVwbGVUYWJsZVNsb3QgKmV4aXN0aW5nX3Nsb3Q7CisJSW5kZXhJbmZv ICAqaW5kZXhJbmZvOworCUVTdGF0ZQkgICAqZXN0YXRlOworCWludAkJCWluZG5rZXlhdHRzOwor CUV4cHJDb250ZXh0ICplY29udGV4dDsKKwlib29sIGFsbF9ub3RfbnVsbCA9IHRydWU7CisJQXR0 ck51bWJlcglza19hdHRubyA9IC0xOworCisJaGVhcCA9IHRhYmxlX29wZW4odGFibGVfb2lkLCBO b0xvY2spOworCWluZGV4ID0gaW5kZXhfb3BlbihpbmRleG9pZCwgQWNjZXNzU2hhcmVMb2NrKTsK KwkvKgorCSAqIE5lZWQgYW4gRVN0YXRlIGZvciBzbG90IHRvIGhvbGQgdGhlIGN1cnJlbnQgdHVw bGUuCisJICoKKwkgKi8KKwllc3RhdGUgPSBDcmVhdGVFeGVjdXRvclN0YXRlKCk7CisJZWNvbnRl eHQgPSBHZXRQZXJUdXBsZUV4cHJDb250ZXh0KGVzdGF0ZSk7CisJZXhpc3Rpbmdfc2xvdCA9IHRh YmxlX3Nsb3RfY3JlYXRlKGhlYXAsIE5VTEwpOworCisJLyogQXJyYW5nZSBmb3IgZWNvbnRleHQn cyBzY2FuIHR1cGxlIHRvIGJlIHRoZSB0dXBsZSB1bmRlciB0ZXN0ICovCisJZWNvbnRleHQtPmVj eHRfc2NhbnR1cGxlID0gZXhpc3Rpbmdfc2xvdDsKKworCWluZGV4SW5mbyA9IEJ1aWxkSW5kZXhJ bmZvKGluZGV4KTsKKwlpbmRua2V5YXR0cyA9IEluZGV4UmVsYXRpb25HZXROdW1iZXJPZktleUF0 dHJpYnV0ZXMoaW5kZXgpOworCisJLyoKKwkgKiBTZWFyY2ggdGhlIHR1cGxlcyB0aGF0IGFyZSBp biB0aGUgaW5kZXggZm9yIGFueSB2aW9sYXRpb25zLCBpbmNsdWRpbmcKKwkgKiB0dXBsZXMgdGhh dCBhcmVuJ3QgdmlzaWJsZSB5ZXQuCisJICovCisJSW5pdERpcnR5U25hcHNob3QoRGlydHlTbmFw c2hvdCk7CisKKwlmb3IgKGludCBpID0gMDsgaSA8IGluZG5rZXlhdHRzOyBpKyspCisJeworCQlp ZiAoaW5kZXhJbmZvLT5paV9JbmRleEF0dHJOdW1iZXJzW2ldID09IGNvbG51bSkKKwkJeworCQkJ c2tfYXR0bm8gPSBpKzE7CisJCQlicmVhazsKKwkJfQorCX0KKworCWlmIChza19hdHRubyA9PSAt MSkKKwkJZWxvZyhFUlJPUiwgImluZGV4ICV1IHNob3VsZCBlZmZlY3Qgb24gY29sdW1uIG51bWJl ciAlZCIsIGluZGV4b2lkLCBjb2xudW0pOworCisJZm9yIChpbnQgaSA9IDA7IGkgPCBpbmRua2V5 YXR0czsgaSsrKQorCXsKKwkJLyogc2V0IHVwIGFuIElTIE5VTEwgc2NhbiBrZXkgc28gdGhhdCB3 ZSBpZ25vcmUgbm90IG51bGxzICovCisJCVNjYW5LZXlFbnRyeUluaXRpYWxpemUoJnNjYW5rZXlz W2ldLAorCQkJCQkJCQlTS19JU05VTEwgfCBTS19TRUFSQ0hOVUxMLAorCQkJCQkJCQlza19hdHRu bywJCS8qIGluZGV4IGNvbCB0byBzY2FuICovCisJCQkJCQkJCUludmFsaWRTdHJhdGVneSwvKiBu byBzdHJhdGVneSAqLworCQkJCQkJCQlJbnZhbGlkT2lkLAkJLyogbm8gc3RyYXRlZ3kgc3VidHlw ZSAqLworCQkJCQkJCQlJbnZhbGlkT2lkLAkJLyogbm8gY29sbGF0aW9uICovCisJCQkJCQkJCUlu dmFsaWRPaWQsCQkvKiBubyByZWcgcHJvYyBmb3IgdGhpcyAqLworCQkJCQkJCQkoRGF0dW0pIDAp OwkJLyogY29uc3RhbnQgKi8KKwl9CisKKwlpbmRleF9zY2FuID0gaW5kZXhfYmVnaW5zY2FuKGhl YXAsIGluZGV4LCAmRGlydHlTbmFwc2hvdCwgaW5kbmtleWF0dHMsIDApOworCWluZGV4X3Jlc2Nh bihpbmRleF9zY2FuLCBzY2Fua2V5cywgaW5kbmtleWF0dHMsIE5VTEwsIDApOworCXdoaWxlIChp bmRleF9nZXRuZXh0X3Nsb3QoaW5kZXhfc2NhbiwgRm9yd2FyZFNjYW5EaXJlY3Rpb24sIGV4aXN0 aW5nX3Nsb3QpKQorCXsKKwkJRGF0dW0JCXZhbHVlc1tJTkRFWF9NQVhfS0VZU107CisJCWJvb2wJ CW51bGxzW0lOREVYX01BWF9LRVlTXTsKKworCQkvKgorCQkgKiBFeHRyYWN0IHRoZSBpbmRleCBj b2x1bW4gdmFsdWVzIGFuZCBpc251bGwgZmxhZ3MgZnJvbSB0aGUgZXhpc3RpbmcKKwkJICogdHVw bGUuCisJCSAqLworCQlGb3JtSW5kZXhEYXR1bShpbmRleEluZm8sIGV4aXN0aW5nX3Nsb3QsIGVz dGF0ZSwgdmFsdWVzLCBudWxscyk7CisKKwkJaWYgKG51bGxzW3NrX2F0dG5vIC0gMV0pCisJCXsK KwkJCWFsbF9ub3RfbnVsbCA9IGZhbHNlOworCQkJYnJlYWs7CisJCX0KKwl9CisJaW5kZXhfZW5k c2NhbihpbmRleF9zY2FuKTsKKwl0YWJsZV9jbG9zZShoZWFwLCBOb0xvY2spOworCWluZGV4X2Ns b3NlKGluZGV4LCBBY2Nlc3NTaGFyZUxvY2spOworCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNs b3QoZXhpc3Rpbmdfc2xvdCk7CisJRnJlZUV4ZWN1dG9yU3RhdGUoZXN0YXRlKTsKKworCXJldHVy biBhbGxfbm90X251bGw7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9oZWFwLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2hlYXAu aAppbmRleCA4YzI3OGYyMDJiLi40NWUyZGQxY2ZhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9j YXRhbG9nL2hlYXAuaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2hlYXAuaApAQCAtNDUsNiAr NDUsNyBAQCB0eXBlZGVmIHN0cnVjdCBDb29rZWRDb25zdHJhaW50CiAJaW50MTYJCWluaGNvdW50 OwkJLyogbnVtYmVyIG9mIHRpbWVzIGNvbnN0cmFpbnQgaXMgaW5oZXJpdGVkICovCiAJYm9vbAkJ aXNfbm9faW5oZXJpdDsJLyogY29uc3RyYWludCBoYXMgbG9jYWwgZGVmIGFuZCBjYW5ub3QgYmUK IAkJCQkJCQkJICogaW5oZXJpdGVkICovCisJYm9vbAkJcHJlX3ZhbGlkYXRlZDsgIC8qIHRoZSBj b25zdHJhaW50IGFscmVhZHkgdmFsaWRhdGVkPyBvbmx5IGZvciBDT05TVFJfTk9UTlVMTCAqLwog fSBDb29rZWRDb25zdHJhaW50OwogCiBleHRlcm4gUmVsYXRpb24gaGVhcF9jcmVhdGUoY29uc3Qg Y2hhciAqcmVsbmFtZSwKQEAgLTExMyw2ICsxMTQsNyBAQCBleHRlcm4gTGlzdCAqQWRkUmVsYXRp b25OZXdDb25zdHJhaW50cyhSZWxhdGlvbiByZWwsCiAJCQkJCQkJCQkgICBib29sIGFsbG93X21l cmdlLAogCQkJCQkJCQkJICAgYm9vbCBpc19sb2NhbCwKIAkJCQkJCQkJCSAgIGJvb2wgaXNfaW50 ZXJuYWwsCisJCQkJCQkJCQkgICBib29sIGluZGV4X3JlYnVpbGQsCiAJCQkJCQkJCQkgICBjb25z dCBjaGFyICpxdWVyeVN0cmluZyk7CiBleHRlcm4gTGlzdCAqQWRkUmVsYXRpb25Ob3ROdWxsQ29u c3RyYWludHMoUmVsYXRpb24gcmVsLAogCQkJCQkJCQkJCSAgIExpc3QgKmNvbnN0cmFpbnRzLApk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaCBiL3NyYy9pbmNsdWRl L2V4ZWN1dG9yL2V4ZWN1dG9yLmgKaW5kZXggNDk0ZWM0ZjJlNS4uMzU1YzNjMTkyZCAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaAorKysgYi9zcmMvaW5jbHVkZS9l eGVjdXRvci9leGVjdXRvci5oCkBAIC02NjIsNiArNjYyLDcgQEAgZXh0ZXJuIHZvaWQgY2hlY2tf ZXhjbHVzaW9uX2NvbnN0cmFpbnQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJCQkJ CQkJCQkgICBjb25zdCBEYXR1bSAqdmFsdWVzLCBjb25zdCBib29sICppc251bGwsCiAJCQkJCQkJ CQkgICBFU3RhdGUgKmVzdGF0ZSwgYm9vbCBuZXdJbmRleCk7CiAKK2V4dGVybiBib29sIGluZGV4 X2NoZWNrX25vdG51bGwoT2lkIGhlYXAsIE9pZCBpbmRleG9pZCwgQXR0ck51bWJlciBjb2xudW0p OwogLyoKICAqIHByb3RvdHlwZXMgZnJvbSBmdW5jdGlvbnMgaW4gZXhlY1JlcGxpY2F0aW9uLmMK ICAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvaXNvbGF0aW9uL2V4cGVjdGVkL2Zhc3Qtc2V0LW5v dG51bGwub3V0IGIvc3JjL3Rlc3QvaXNvbGF0aW9uL2V4cGVjdGVkL2Zhc3Qtc2V0LW5vdG51bGwu b3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjgyNmYxZGJlNTEKLS0t IC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0ZWQvZmFzdC1zZXQtbm90 bnVsbC5vdXQKQEAgLTAsMCArMSwxMzMgQEAKK1BhcnNlZCB0ZXN0IHNwZWMgd2l0aCAyIHNlc3Np b25zCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBiMSBtMSBzMCBzMSBzMiByMSBzMgorc3RlcCBi MTogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFJFQUQgQ09NTUlUVEVEOworc3RlcCBtMTogREVMRVRF IEZST00gdDsKK3N0ZXAgczA6IHNhdmVwb2ludCBzMDsKK3N0ZXAgczE6IEFMVEVSIFRBQkxFIHQg QUREIENPTlNUUkFJTlQgdDFfbm4gTk9UIE5VTEwgYTsKK3N0ZXAgczI6IFNFTEVDVCBjb25uYW1l LCBjb25yZWxpZDo6cmVnY2xhc3MsIGNvbnR5cGUsIGNvbnZhbGlkYXRlZAorICAgICAgICAgICBG Uk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ubmFtZSA9ICd0MV9ubic7CisKK2Nvbm5hbWV8Y29u cmVsaWR8Y29udHlwZXxjb252YWxpZGF0ZWQKKy0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLSstLS0t LS0tLS0tLS0KK3QxX25uICB8dCAgICAgICB8biAgICAgIHx0ICAgICAgICAgICAKKygxIHJvdykK Kworc3RlcCByMTogUk9MTEJBQ0s7CitzdGVwIHMyOiBTRUxFQ1QgY29ubmFtZSwgY29ucmVsaWQ6 OnJlZ2NsYXNzLCBjb250eXBlLCBjb252YWxpZGF0ZWQKKyAgICAgICAgICAgRlJPTSBwZ19jb25z dHJhaW50IFdIRVJFIGNvbm5hbWUgPSAndDFfbm4nOworCitjb25uYW1lfGNvbnJlbGlkfGNvbnR5 cGV8Y29udmFsaWRhdGVkCistLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tCiso MCByb3dzKQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBiMSBtMSBzMCBzMSBzMiBjMSBzMgor c3RlcCBiMTogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFJFQUQgQ09NTUlUVEVEOworc3RlcCBtMTog REVMRVRFIEZST00gdDsKK3N0ZXAgczA6IHNhdmVwb2ludCBzMDsKK3N0ZXAgczE6IEFMVEVSIFRB QkxFIHQgQUREIENPTlNUUkFJTlQgdDFfbm4gTk9UIE5VTEwgYTsKK3N0ZXAgczI6IFNFTEVDVCBj b25uYW1lLCBjb25yZWxpZDo6cmVnY2xhc3MsIGNvbnR5cGUsIGNvbnZhbGlkYXRlZAorICAgICAg ICAgICBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ubmFtZSA9ICd0MV9ubic7CisKK2Nvbm5h bWV8Y29ucmVsaWR8Y29udHlwZXxjb252YWxpZGF0ZWQKKy0tLS0tLS0rLS0tLS0tLS0rLS0tLS0t LSstLS0tLS0tLS0tLS0KK3QxX25uICB8dCAgICAgICB8biAgICAgIHx0ICAgICAgICAgICAKKygx IHJvdykKKworc3RlcCBjMTogQ09NTUlUOworc3RlcCBzMjogU0VMRUNUIGNvbm5hbWUsIGNvbnJl bGlkOjpyZWdjbGFzcywgY29udHlwZSwgY29udmFsaWRhdGVkCisgICAgICAgICAgIEZST00gcGdf Y29uc3RyYWludCBXSEVSRSBjb25uYW1lID0gJ3QxX25uJzsKKworY29ubmFtZXxjb25yZWxpZHxj b250eXBlfGNvbnZhbGlkYXRlZAorLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0t LQordDFfbm4gIHx0ICAgICAgIHxuICAgICAgfHQgICAgICAgICAgIAorKDEgcm93KQorCisKK3N0 YXJ0aW5nIHBlcm11dGF0aW9uOiBiMSBiMyBtMSBoaiBjMSBjMyBzMgorc3RlcCBiMTogQkVHSU4g SVNPTEFUSU9OIExFVkVMIFJFQUQgQ09NTUlUVEVEOworc3RlcCBiMzogQkVHSU4gSVNPTEFUSU9O IExFVkVMIFJFQUQgQ09NTUlUVEVEOworc3RlcCBtMTogREVMRVRFIEZST00gdDsKK3N0ZXAgaGo6 IEFMVEVSIFRBQkxFIHQgQUREIENPTlNUUkFJTlQgdDFfbm4gTk9UIE5VTEwgYTsgPHdhaXRpbmcg Li4uPgorc3RlcCBjMTogQ09NTUlUOworc3RlcCBoajogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIGMz OiBDT01NSVQ7CitzdGVwIHMyOiBTRUxFQ1QgY29ubmFtZSwgY29ucmVsaWQ6OnJlZ2NsYXNzLCBj b250eXBlLCBjb252YWxpZGF0ZWQKKyAgICAgICAgICAgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJF IGNvbm5hbWUgPSAndDFfbm4nOworCitjb25uYW1lfGNvbnJlbGlkfGNvbnR5cGV8Y29udmFsaWRh dGVkCistLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tCit0MV9ubiAgfHQgICAg ICAgfG4gICAgICB8dCAgICAgICAgICAgCisoMSByb3cpCisKKworc3RhcnRpbmcgcGVybXV0YXRp b246IGIyIGI0IG0xIGhqIGMxIGMzIHMyCitzdGVwIGIyOiBCRUdJTjsKK3N0ZXAgYjQ6IEJFR0lO Oworc3RlcCBtMTogREVMRVRFIEZST00gdDsKK3N0ZXAgaGo6IEFMVEVSIFRBQkxFIHQgQUREIENP TlNUUkFJTlQgdDFfbm4gTk9UIE5VTEwgYTsgPHdhaXRpbmcgLi4uPgorc3RlcCBjMTogQ09NTUlU Oworc3RlcCBoajogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIGMzOiBDT01NSVQ7CitzdGVwIHMyOiBT RUxFQ1QgY29ubmFtZSwgY29ucmVsaWQ6OnJlZ2NsYXNzLCBjb250eXBlLCBjb252YWxpZGF0ZWQK KyAgICAgICAgICAgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbm5hbWUgPSAndDFfbm4nOwor Citjb25uYW1lfGNvbnJlbGlkfGNvbnR5cGV8Y29udmFsaWRhdGVkCistLS0tLS0tKy0tLS0tLS0t Ky0tLS0tLS0rLS0tLS0tLS0tLS0tCit0MV9ubiAgfHQgICAgICAgfG4gICAgICB8dCAgICAgICAg ICAgCisoMSByb3cpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IGIxIGIzIG0yIHMxIGMzIGMx IHMyCitzdGVwIGIxOiBCRUdJTiBJU09MQVRJT04gTEVWRUwgUkVBRCBDT01NSVRURUQ7CitzdGVw IGIzOiBCRUdJTiBJU09MQVRJT04gTEVWRUwgUkVBRCBDT01NSVRURUQ7CitzdGVwIG0yOiBERUxF VEUgRlJPTSB0Oworc3RlcCBzMTogQUxURVIgVEFCTEUgdCBBREQgQ09OU1RSQUlOVCB0MV9ubiBO T1QgTlVMTCBhOyA8d2FpdGluZyAuLi4+CitzdGVwIGMzOiBDT01NSVQ7CitzdGVwIHMxOiA8Li4u IGNvbXBsZXRlZD4KK3N0ZXAgYzE6IENPTU1JVDsKK3N0ZXAgczI6IFNFTEVDVCBjb25uYW1lLCBj b25yZWxpZDo6cmVnY2xhc3MsIGNvbnR5cGUsIGNvbnZhbGlkYXRlZAorICAgICAgICAgICBGUk9N IHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ubmFtZSA9ICd0MV9ubic7CisKK2Nvbm5hbWV8Y29ucmVs aWR8Y29udHlwZXxjb252YWxpZGF0ZWQKKy0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0t LS0tLS0KK3QxX25uICB8dCAgICAgICB8biAgICAgIHx0ICAgICAgICAgICAKKygxIHJvdykKKwor CitzdGFydGluZyBwZXJtdXRhdGlvbjogYjEgYjQgZDEgbTEgYzIgczEgczIgcjEKK3N0ZXAgYjE6 IEJFR0lOIElTT0xBVElPTiBMRVZFTCBSRUFEIENPTU1JVFRFRDsKK3N0ZXAgYjQ6IEJFR0lOOwor c3RlcCBkMTogRFJPUCBJTkRFWCB0X2FiX2lkeDsKK3N0ZXAgbTE6IERFTEVURSBGUk9NIHQ7IDx3 YWl0aW5nIC4uLj4KK3N0ZXAgYzI6IFJPTExCQUNLOworc3RlcCBtMTogPC4uLiBjb21wbGV0ZWQ+ CitzdGVwIHMxOiBBTFRFUiBUQUJMRSB0IEFERCBDT05TVFJBSU5UIHQxX25uIE5PVCBOVUxMIGE7 CitzdGVwIHMyOiBTRUxFQ1QgY29ubmFtZSwgY29ucmVsaWQ6OnJlZ2NsYXNzLCBjb250eXBlLCBj b252YWxpZGF0ZWQKKyAgICAgICAgICAgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbm5hbWUg PSAndDFfbm4nOworCitjb25uYW1lfGNvbnJlbGlkfGNvbnR5cGV8Y29udmFsaWRhdGVkCistLS0t LS0tKy0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tCit0MV9ubiAgfHQgICAgICAgfG4gICAg ICB8dCAgICAgICAgICAgCisoMSByb3cpCisKK3N0ZXAgcjE6IFJPTExCQUNLOworCitzdGFydGlu ZyBwZXJtdXRhdGlvbjogYjEgYjQgZDEgbTEgYzMgczEgczIgYzEKK3N0ZXAgYjE6IEJFR0lOIElT T0xBVElPTiBMRVZFTCBSRUFEIENPTU1JVFRFRDsKK3N0ZXAgYjQ6IEJFR0lOOworc3RlcCBkMTog RFJPUCBJTkRFWCB0X2FiX2lkeDsKK3N0ZXAgbTE6IERFTEVURSBGUk9NIHQ7IDx3YWl0aW5nIC4u Lj4KK3N0ZXAgYzM6IENPTU1JVDsKK3N0ZXAgbTE6IDwuLi4gY29tcGxldGVkPgorc3RlcCBzMTog QUxURVIgVEFCTEUgdCBBREQgQ09OU1RSQUlOVCB0MV9ubiBOT1QgTlVMTCBhOworc3RlcCBzMjog U0VMRUNUIGNvbm5hbWUsIGNvbnJlbGlkOjpyZWdjbGFzcywgY29udHlwZSwgY29udmFsaWRhdGVk CisgICAgICAgICAgIEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25uYW1lID0gJ3QxX25uJzsK KworY29ubmFtZXxjb25yZWxpZHxjb250eXBlfGNvbnZhbGlkYXRlZAorLS0tLS0tLSstLS0tLS0t LSstLS0tLS0tKy0tLS0tLS0tLS0tLQordDFfbm4gIHx0ICAgICAgIHxuICAgICAgfHQgICAgICAg ICAgIAorKDEgcm93KQorCitzdGVwIGMxOiBDT01NSVQ7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9p c29sYXRpb24vaXNvbGF0aW9uX3NjaGVkdWxlIGIvc3JjL3Rlc3QvaXNvbGF0aW9uL2lzb2xhdGlv bl9zY2hlZHVsZQppbmRleCAxNDMxMDlhYTRkLi4zMmQ3ZTUxYWE5IDEwMDY0NAotLS0gYS9zcmMv dGVzdC9pc29sYXRpb24vaXNvbGF0aW9uX3NjaGVkdWxlCisrKyBiL3NyYy90ZXN0L2lzb2xhdGlv bi9pc29sYXRpb25fc2NoZWR1bGUKQEAgLTU1LDYgKzU1LDcgQEAgdGVzdDogbWVyZ2UtZGVsZXRl CiB0ZXN0OiBtZXJnZS11cGRhdGUKIHRlc3Q6IG1lcmdlLW1hdGNoLXJlY2hlY2sKIHRlc3Q6IG1l cmdlLWpvaW4KK3Rlc3Q6IGZhc3Qtc2V0LW5vdG51bGwKIHRlc3Q6IGRlbGV0ZS1hYm9ydC1zYXZl cHQKIHRlc3Q6IGRlbGV0ZS1hYm9ydC1zYXZlcHQtMgogdGVzdDogYWJvcnRlZC1rZXlyZXZva2UK ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2lzb2xhdGlvbi9zcGVjcy9mYXN0LXNldC1ub3RudWxsLnNw ZWMgYi9zcmMvdGVzdC9pc29sYXRpb24vc3BlY3MvZmFzdC1zZXQtbm90bnVsbC5zcGVjCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmQ4MTk4Yzg2OWEKLS0tIC9kZXYvbnVs bAorKysgYi9zcmMvdGVzdC9pc29sYXRpb24vc3BlY3MvZmFzdC1zZXQtbm90bnVsbC5zcGVjCkBA IC0wLDAgKzEsNDYgQEAKKyMKKyMgZmFzdCBub3QtbnVsbCB0ZXN0cworIworCitzZXR1cAorewor ICBDUkVBVEUgVEFCTEUgdCAoYSBpbnQsIGIgaW50KTsKKyAgQ1JFQVRFIElOREVYIHRfYWJfaWR4 IG9uIHQoYSxiKTsKKyAgSU5TRVJUIElOVE8gdCB2YWx1ZXMgKG51bGwsIDEpOworICBJTlNFUlQg SU5UTyB0IFNFTEVDVCB4LCB4KjEwIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMykgZyh4KTsKK30K KwordGVhcmRvd24KK3sKKyAgRFJPUCBUQUJMRSB0OworfQorCitzZXNzaW9uIHMxCitzdGVwIGIx ICB7IEJFR0lOIElTT0xBVElPTiBMRVZFTCBSRUFEIENPTU1JVFRFRDsgfQorc3RlcCBiMiAgeyBC RUdJTjsgfQorc3RlcCBtMSAgeyBERUxFVEUgRlJPTSB0O30KK3N0ZXAgczAgIHsgc2F2ZXBvaW50 IHMwO30KK3N0ZXAgczEgIHsgQUxURVIgVEFCTEUgdCBBREQgQ09OU1RSQUlOVCB0MV9ubiBOT1Qg TlVMTCBhO30KK3N0ZXAgczIgIHsgU0VMRUNUIGNvbm5hbWUsIGNvbnJlbGlkOjpyZWdjbGFzcywg Y29udHlwZSwgY29udmFsaWRhdGVkCisgICAgICAgICAgIEZST00gcGdfY29uc3RyYWludCBXSEVS RSBjb25uYW1lID0gJ3QxX25uJzsKKyAgICAgICAgIH0KK3N0ZXAgcjEgIHsgUk9MTEJBQ0s7IH0K K3N0ZXAgYzEgIHsgQ09NTUlUOyB9CisKK3Nlc3Npb24gczIKK3N0ZXAgYjMgIHsgQkVHSU4gSVNP TEFUSU9OIExFVkVMIFJFQUQgQ09NTUlUVEVEOyB9CitzdGVwIGI0ICB7IEJFR0lOOyB9CitzdGVw IGhqICB7IEFMVEVSIFRBQkxFIHQgQUREIENPTlNUUkFJTlQgdDFfbm4gTk9UIE5VTEwgYTt9Citz dGVwIG0yICB7IERFTEVURSBGUk9NIHQ7fQorc3RlcCBkMSAgeyBEUk9QIElOREVYIHRfYWJfaWR4 O30KK3N0ZXAgYzIgIHsgUk9MTEJBQ0s7IH0KK3N0ZXAgYzMgIHsgQ09NTUlUOyB9CisKK3Blcm11 dGF0aW9uIGIxIG0xIHMwIHMxIHMyIHIxIHMyCitwZXJtdXRhdGlvbiBiMSBtMSBzMCBzMSBzMiBj MSBzMgorcGVybXV0YXRpb24gYjEgYjMgbTEgaGogYzEgYzMgczIKK3Blcm11dGF0aW9uIGIyIGI0 IG0xIGhqIGMxIGMzIHMyCitwZXJtdXRhdGlvbiBiMSBiMyBtMiBzMSBjMyBjMSBzMgorcGVybXV0 YXRpb24gYjEgYjQgZDEgbTEgYzIgczEgczIgcjEKK3Blcm11dGF0aW9uIGIxIGI0IGQxIG0xIGMz IHMxIHMyIGMxCisKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvYWx0ZXJf dGFibGUub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9hbHRlcl90YWJsZS5vdXQKaW5k ZXggMTI4NTJhYTYxMi4uMzViODBiNDllNiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9hbHRlcl90YWJsZS5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9h bHRlcl90YWJsZS5vdXQKQEAgLTQ3MzgsMyArNDczOCw0MSBAQCBkcm9wIHB1YmxpY2F0aW9uIHB1 YjE7CiBkcm9wIHNjaGVtYSBhbHRlcjEgY2FzY2FkZTsKIGRyb3Agc2NoZW1hIGFsdGVyMiBjYXNj YWRlOwogTk9USUNFOiAgZHJvcCBjYXNjYWRlcyB0byB0YWJsZSBhbHRlcjIudDEKKy0tLS0tZmFz dCBhZGQgbm90LW51bGwgY29uc3RyYWludCB0ZXN0cy4KK0NSRUFURSBUQUJMRSB0cCAoYSBpbnQs IGIgaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgKDIyKSBzdG9yZWQpIFBBUlRJVElPTiBCWSByYW5n ZShhKTsKK0NSRUFURSBUQUJMRSB0cHAxKGEgaW50LCBiIGludCBHRU5FUkFURUQgQUxXQVlTIEFT IChhKzEpIHN0b3JlZCk7CitDUkVBVEUgVEFCTEUgdHBwMihhIGludCwgYiBpbnQgR0VORVJBVEVE IEFMV0FZUyBBUyAoYSsxMCkgc3RvcmVkKTsKK0FMVEVSIFRBQkxFIHRwIEFUVEFDSCBQQVJUSVRJ T04gdHBwMSBGT1IgdmFsdWVzIGZyb20gKCAxICkgdG8gKDEwMCk7CitBTFRFUiBUQUJMRSB0cCBB VFRBQ0ggUEFSVElUSU9OIHRwcDIgZGVmYXVsdDsKK0NSRUFURSBJTkRFWCBPTiB0cChiKTsKK2lu c2VydCBpbnRvIHRwIHNlbGVjdCBnIGZyb20gZ2VuZXJhdGVfc2VyaWVzKDEwMCwxMjApIGc7Cist LWNhbm5vdCBmYXN0IEFMVEVSIFRBQkxFIFNFVCBOT1QgTlVMTCBvciBBTFRFUiBUQUJMRSBBREQg Q09OU1RSQUlOVCBOT1QgTlVMTAorLS1zbyB3b24ndCBpbnRlcmZlcmUgd2l0aCB0aGUgaW5kZXgg cmVidWlsZC4KK0FMVEVSIFRBQkxFIHRwIGFsdGVyIGNvbHVtbiBiIHNldCBub3QgbnVsbCwgQUxU RVIgQ09MVU1OIGIgU0VUIEVYUFJFU1NJT04gQVMgKGEgKiAzKTsKK0FMVEVSIFRBQkxFIHRwIGFs dGVyIGNvbHVtbiBiIGRyb3Agbm90IG51bGw7CitBTFRFUiBUQUJMRSB0cCBhZGQgY29uc3RyYWlu dCBubiBub3QgbnVsbCBiLCBBTFRFUiBDT0xVTU4gYiBTRVQgRVhQUkVTU0lPTiBBUyAoYSAqIDEx KTsKKy0tLS0tLXRlc3Qgbm9uLXBhcnRpdGlvbmVkIHRhYmxlCitDUkVBVEUgVEFCTEUgdDEoZjEg SU5ULCBmMiBpbnQsIGYzIGludCxmNCBpbnQpOworSU5TRVJUIElOVE8gdDEgc2VsZWN0IGcsIGcr MSwgZysyLCBnKzMgZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjApIGc7CitDUkVBVEUgSU5ERVgg dDFfZjFfZjJfaWR4IE9OIHQxKGYxLGYyKTsKK0NSRUFURSBVTklRVUUgSU5ERVggdDFfZjNpZHgg T04gdDEoZjMpOworQ1JFQVRFIElOREVYIHQxX2YzZjRpZHggT04gdDEoZjMpIGluY2x1ZGUoZjQp OworLS1jYW5ub3QgZmFzdCBBTFRFUiBUQUJMRSBTRVQgTk9UIE5VTEwgb3IgQUxURVIgVEFCTEUg QUREIENPTlNUUkFJTlQgTk9UIE5VTEwKKy0tc28gd29uJ3QgaW50ZXJmZXJlIHdpdGggdGhlIGlu ZGV4IHJlYnVpbGQuCitBTFRFUiBUQUJMRSB0MSBhbHRlciBjb2x1bW4gZjEgc2V0IG5vdCBudWxs LCBBTFRFUiBmMSBUWVBFIEJJR0lOVDsKK0FMVEVSIFRBQkxFIHQxIGFsdGVyIGNvbHVtbiBmMSBk cm9wIG5vdCBudWxsOworQUxURVIgVEFCTEUgdDEgYWRkIGNvbnN0cmFpbnQgbm4gbm90IG51bGwg ZjEsIEFMVEVSIGYxIFRZUEUgYmlnaW50OworLS1vay4gd2l0aCBBTFRFUiBDT0xVTU4gU0VUIE5P VCBOVUxMIHZhcmlhbnQKK0FMVEVSIFRBQkxFIHQxIGFsdGVyIGNvbHVtbiBmMSBkcm9wIG5vdCBu dWxsLCBhbHRlciBjb2x1bW4gZjIgZHJvcCBub3QgbnVsbDsKK0FMVEVSIFRBQkxFIHQxIGFsdGVy IGNvbHVtbiBmMiBzZXQgbm90IG51bGwsIGFsdGVyIGNvbHVtbiBmMSBzZXQgbm90IG51bGw7Cist LW9rLiB3aXRoIGFkZCBjb25zdHJhaW50IHZhcmlhbnRzCitBTFRFUiBUQUJMRSB0MSBhbHRlciBj b2x1bW4gZjEgZHJvcCBub3QgbnVsbCwgYWx0ZXIgY29sdW1uIGYyIGRyb3Agbm90IG51bGw7CitB TFRFUiBUQUJMRSB0MSBhZGQgY29uc3RyYWludCBubiBub3QgbnVsbCBmMiwgYWRkIGNvbnN0cmFp bnQgbm5mMSBub3QgbnVsbCBmMTsKKy0tb2suCitBTFRFUiBUQUJMRSB0MSBhZGQgY29uc3RyYWlu dCB0X2YzX3BrIHByaW1hcnkga2V5IHVzaW5nIGluZGV4IHQxX2YzaWR4OworTk9USUNFOiAgQUxU RVIgVEFCTEUgLyBBREQgQ09OU1RSQUlOVCBVU0lORyBJTkRFWCB3aWxsIHJlbmFtZSBpbmRleCAi dDFfZjNpZHgiIHRvICJ0X2YzX3BrIgorLS1jYW5ub3QgZmFzdCBBTFRFUiBUQUJMRSBTRVQgTk9U IE5VTEwgb3IgQUxURVIgVEFCTEUgQUREIENPTlNUUkFJTlQgTk9UIE5VTEwKKy0tZm9yIGNvbHVt biBmNCBub3csIGNhbiBvbmx5IGZvciBrZXljb2x1bW4sIG5vdCBpbmNsdWRlIGNvbHVtbi4KK0FM VEVSIFRBQkxFIHQxIGFkZCBjb25zdHJhaW50IG5uZjQgbm90IG51bGwgZjQ7Citkcm9wIHRhYmxl IHQxOworZHJvcCB0YWJsZSB0cHAxLCB0cHAyLCB0cDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL2FsdGVyX3RhYmxlLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2FsdGVyX3Rh YmxlLnNxbAppbmRleCBjODhmOWVhYWIwLi5hOTJjZGRjZGNjIDEwMDY0NAotLS0gYS9zcmMvdGVz dC9yZWdyZXNzL3NxbC9hbHRlcl90YWJsZS5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwv YWx0ZXJfdGFibGUuc3FsCkBAIC0zMTAyLDMgKzMxMDIsNDYgQEAgYWx0ZXIgdGFibGUgYWx0ZXIx LnQxIHNldCBzY2hlbWEgYWx0ZXIyOwogZHJvcCBwdWJsaWNhdGlvbiBwdWIxOwogZHJvcCBzY2hl bWEgYWx0ZXIxIGNhc2NhZGU7CiBkcm9wIHNjaGVtYSBhbHRlcjIgY2FzY2FkZTsKKworLS0tLS1m YXN0IGFkZCBub3QtbnVsbCBjb25zdHJhaW50IHRlc3RzLgorQ1JFQVRFIFRBQkxFIHRwIChhIGlu dCwgYiBpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAoMjIpIHN0b3JlZCkgUEFSVElUSU9OIEJZIHJh bmdlKGEpOworQ1JFQVRFIFRBQkxFIHRwcDEoYSBpbnQsIGIgaW50IEdFTkVSQVRFRCBBTFdBWVMg QVMgKGErMSkgc3RvcmVkKTsKK0NSRUFURSBUQUJMRSB0cHAyKGEgaW50LCBiIGludCBHRU5FUkFU RUQgQUxXQVlTIEFTIChhKzEwKSBzdG9yZWQpOworQUxURVIgVEFCTEUgdHAgQVRUQUNIIFBBUlRJ VElPTiB0cHAxIEZPUiB2YWx1ZXMgZnJvbSAoIDEgKSB0byAoMTAwKTsKK0FMVEVSIFRBQkxFIHRw IEFUVEFDSCBQQVJUSVRJT04gdHBwMiBkZWZhdWx0OworQ1JFQVRFIElOREVYIE9OIHRwKGIpOwor aW5zZXJ0IGludG8gdHAgc2VsZWN0IGcgZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMTAwLDEyMCkgZzsK KworLS1jYW5ub3QgZmFzdCBBTFRFUiBUQUJMRSBTRVQgTk9UIE5VTEwgb3IgQUxURVIgVEFCTEUg QUREIENPTlNUUkFJTlQgTk9UIE5VTEwKKy0tc28gd29uJ3QgaW50ZXJmZXJlIHdpdGggdGhlIGlu ZGV4IHJlYnVpbGQuCitBTFRFUiBUQUJMRSB0cCBhbHRlciBjb2x1bW4gYiBzZXQgbm90IG51bGws IEFMVEVSIENPTFVNTiBiIFNFVCBFWFBSRVNTSU9OIEFTIChhICogMyk7CitBTFRFUiBUQUJMRSB0 cCBhbHRlciBjb2x1bW4gYiBkcm9wIG5vdCBudWxsOworQUxURVIgVEFCTEUgdHAgYWRkIGNvbnN0 cmFpbnQgbm4gbm90IG51bGwgYiwgQUxURVIgQ09MVU1OIGIgU0VUIEVYUFJFU1NJT04gQVMgKGEg KiAxMSk7CisKKy0tLS0tLXRlc3Qgbm9uLXBhcnRpdGlvbmVkIHRhYmxlCitDUkVBVEUgVEFCTEUg dDEoZjEgSU5ULCBmMiBpbnQsIGYzIGludCxmNCBpbnQpOworSU5TRVJUIElOVE8gdDEgc2VsZWN0 IGcsIGcrMSwgZysyLCBnKzMgZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjApIGc7CitDUkVBVEUg SU5ERVggdDFfZjFfZjJfaWR4IE9OIHQxKGYxLGYyKTsKK0NSRUFURSBVTklRVUUgSU5ERVggdDFf ZjNpZHggT04gdDEoZjMpOworQ1JFQVRFIElOREVYIHQxX2YzZjRpZHggT04gdDEoZjMpIGluY2x1 ZGUoZjQpOworCistLWNhbm5vdCBmYXN0IEFMVEVSIFRBQkxFIFNFVCBOT1QgTlVMTCBvciBBTFRF UiBUQUJMRSBBREQgQ09OU1RSQUlOVCBOT1QgTlVMTAorLS1zbyB3b24ndCBpbnRlcmZlcmUgd2l0 aCB0aGUgaW5kZXggcmVidWlsZC4KK0FMVEVSIFRBQkxFIHQxIGFsdGVyIGNvbHVtbiBmMSBzZXQg bm90IG51bGwsIEFMVEVSIGYxIFRZUEUgQklHSU5UOworQUxURVIgVEFCTEUgdDEgYWx0ZXIgY29s dW1uIGYxIGRyb3Agbm90IG51bGw7CitBTFRFUiBUQUJMRSB0MSBhZGQgY29uc3RyYWludCBubiBu b3QgbnVsbCBmMSwgQUxURVIgZjEgVFlQRSBiaWdpbnQ7CisKKy0tb2suIHdpdGggQUxURVIgQ09M VU1OIFNFVCBOT1QgTlVMTCB2YXJpYW50CitBTFRFUiBUQUJMRSB0MSBhbHRlciBjb2x1bW4gZjEg ZHJvcCBub3QgbnVsbCwgYWx0ZXIgY29sdW1uIGYyIGRyb3Agbm90IG51bGw7CitBTFRFUiBUQUJM RSB0MSBhbHRlciBjb2x1bW4gZjIgc2V0IG5vdCBudWxsLCBhbHRlciBjb2x1bW4gZjEgc2V0IG5v dCBudWxsOworLS1vay4gd2l0aCBhZGQgY29uc3RyYWludCB2YXJpYW50cworQUxURVIgVEFCTEUg dDEgYWx0ZXIgY29sdW1uIGYxIGRyb3Agbm90IG51bGwsIGFsdGVyIGNvbHVtbiBmMiBkcm9wIG5v dCBudWxsOworQUxURVIgVEFCTEUgdDEgYWRkIGNvbnN0cmFpbnQgbm4gbm90IG51bGwgZjIsIGFk ZCBjb25zdHJhaW50IG5uZjEgbm90IG51bGwgZjE7CistLW9rLgorQUxURVIgVEFCTEUgdDEgYWRk IGNvbnN0cmFpbnQgdF9mM19wayBwcmltYXJ5IGtleSB1c2luZyBpbmRleCB0MV9mM2lkeDsKKwor LS1jYW5ub3QgZmFzdCBBTFRFUiBUQUJMRSBTRVQgTk9UIE5VTEwgb3IgQUxURVIgVEFCTEUgQURE IENPTlNUUkFJTlQgTk9UIE5VTEwKKy0tZm9yIGNvbHVtbiBmNCBub3csIGNhbiBvbmx5IGZvciBr ZXljb2x1bW4sIG5vdCBpbmNsdWRlIGNvbHVtbi4KK0FMVEVSIFRBQkxFIHQxIGFkZCBjb25zdHJh aW50IG5uZjQgbm90IG51bGwgZjQ7Citkcm9wIHRhYmxlIHQxOworZHJvcCB0YWJsZSB0cHAxLCB0 cHAyLCB0cDsKLS0gCjIuMzQuMQoK --000000000000538e23062a932a06--