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 1tLw9B-000WTI-O9 for pgsql-hackers@arkaria.postgresql.org; Fri, 13 Dec 2024 03:15:22 +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 1tLw98-00HQYv-Js for pgsql-hackers@arkaria.postgresql.org; Fri, 13 Dec 2024 03:15:19 +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 1tLw98-00HQYl-3m for pgsql-hackers@lists.postgresql.org; Fri, 13 Dec 2024 03:15:19 +0000 Received: from mail-vs1-xe31.google.com ([2607:f8b0:4864:20::e31]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1tLw95-002ZW9-Br for pgsql-hackers@lists.postgresql.org; Fri, 13 Dec 2024 03:15:18 +0000 Received: by mail-vs1-xe31.google.com with SMTP id ada2fe7eead31-4afed7b7d1bso299588137.2 for ; Thu, 12 Dec 2024 19:15:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1734059714; x=1734664514; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=HWTb8vJt5BoRPT2oiYWrejbXNOH2g0EMOslhY6D9cLY=; b=ACyyES8WcOhRz01OJHBFWska+XwaOsd/tQ+ejzgp4C6gN1VgeYivH7c+lbN8FQhz8M VMv0dSTl2VN4ur20hd5bmFiQcJFZJfF3WvZrkBZu2LpWv8UKzN7DleKHzFlW8o/lyAKn CYhAbpKGd7V5p2QGas0z7hJOs2qvp/vJ+qPEZRlZ5+emY0t0OhWlphf0T7f7VzjTtc8e NW+jCevoaAjl7gBOxNdjZbMp4eMJ56hhLW+Jdurr0QebkVjokRWMXkGocm64H8sDqPKd hVtqZs2B2Bs1bkJ7VFmVPISs++G8LMRSpZHjGnT1+jmk+ORqxLwp9vGRcPj0CnhopXR6 vQNg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1734059714; x=1734664514; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=HWTb8vJt5BoRPT2oiYWrejbXNOH2g0EMOslhY6D9cLY=; b=q6nlXRhqjPNtUL/MZMO5/3XwMeamr1y13mjCgMJtQCSqysgL2GYet1QV//g+bUygCh xg4NZ8G6PfyzIkD+z3QB9/c5I1l7cwSQusIAPdxfecF71v4GoE6jrP2QHaSlkDlBTEDk qOJIKrQrfVywrJz6I5WnkxrqoixZ0AIQtq2eOqb75/nyA3GCc39168kYE1WE4NCK/gay xENFGONE50eAlW/6dOW9ZVBWTTqbmY9wGhQ0wG3FS2+riF5bl/UC/uMn6axbGVv4/aFH ifL78zuAlZosWOrgsD4e0pb9l36/rp1YEALWKR1Y+NX06smCzWQBd/jXPmSuD8qWT6Zj TTww== X-Forwarded-Encrypted: i=1; AJvYcCX8nXze5h+MQOtfLbXmict4u346wIzdNV7upQGtdk8MhNCBaU7MKiyl0Zc6MK9JyYR6TWIMVNwGJNLWv07U@lists.postgresql.org X-Gm-Message-State: AOJu0YytI74SKf6qqSevOklOQ3+8DE8r4Cn2TBH5n0uajz8DIBEeB7aK zyhlcBpv8eGcprkj0ISsF+eeImdifYvtVfM7PIcZn4EPBdJd1Ooo5lDtkcrFCvWLAK1PAH7Tpwu +Q8F3ffNPRM/dNI7WpT1XZwIth+4= X-Gm-Gg: ASbGncsyQHjwVuWNrW6CaQcCn3hO0FBYC7wLAk4qu+iV/gXqy9gAFVZY73B91nfgwuP eSJfE0d3VyfP9YWcWXZxW0TDsjIzAFV6kSzKtWus= X-Google-Smtp-Source: AGHT+IHn8YUFV0tygcgHREXzqt0oPJ0Vn9geKlzEfGRjR5eLuRN1zE2GBP3mSVQ5zQqTSGNDNESaQQWjlOJPVlnX41I= X-Received: by 2002:a05:6102:3051:b0:4b1:340a:ce63 with SMTP id ada2fe7eead31-4b25dc944a9mr1687849137.11.1734059713968; Thu, 12 Dec 2024 19:15:13 -0800 (PST) MIME-Version: 1.0 References: <04bf425ad1b15a4daefe96c478a5253b@oss.nttdata.com> <20240206191937.72eaf0ccc20cfea37944b422@sraoss.co.jp> <76da9fcc-93c5-4053-872e-12932a95356d@uni-muenster.de> <6eac5b45-7f45-4c7a-aae1-e90db8be2e08@uni-muenster.de> <3d6b5885-16a1-475d-b56f-41701c48d9d4@uni-muenster.de> <63595e8f-a245-4335-aa22-7e449a70e210@oss.nttdata.com> <07587c36-18b3-4ccb-b5fb-579bcb04ed37@oss.nttdata.com> In-Reply-To: From: jian he Date: Fri, 13 Dec 2024 11:15:02 +0800 Message-ID: Subject: Re: Change COPY ... ON_ERROR ignore to ON_ERROR ignore_row To: Kirill Reshke Cc: Fujii Masao , Jim Jones , "David G. Johnston" , Yugo NAGATA , torikoshia , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="00000000000045c3f406291e3d62" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000045c3f406291e3d62 Content-Type: text/plain; charset="UTF-8" + /* + * Here we end processing of current COPY row. + * Update copy state counter for number of erroneous rows. + */ + cstate->num_errors++; + cstate->escontext->error_occurred = true; + + /* Only print this NOTICE message, if it will not be followed by ERROR */ + if (cstate->opts.log_verbosity == COPY_LOG_VERBOSITY_VERBOSE && + ( + (cstate->opts.on_error == COPY_ON_ERROR_NULL && cstate->opts.reject_limit > 0 && cstate->num_errors <= cstate->opts.reject_limit) || + (cstate->opts.on_error == COPY_ON_ERROR_IGNORE && (cstate->opts.reject_limit == 0 || cstate->num_errors <= cstate->opts.reject_limit)) + )) { this is kind of hard to comprehend. so attached is a simple version of it based on v8. for copy (on_error set_to_null) 1. not allow specifying reject_limit option 2. ereport ERROR for not-null constraint violation for domain type. for example: CREATE DOMAIN d_int_not_null AS INT NOT NULL CHECK(value > 0); CREATE TABLE t1 (a d_int_not_null); COPY t1 FROM STDIN WITH (on_error set_to_null); these 3 values: \N a -1 will error out, the error message will be: ERROR: domain d_int_not_null does not allow null values --00000000000045c3f406291e3d62 Content-Type: text/x-patch; charset="US-ASCII"; name="v9-0001-new-COPY-on_error-option-set_to_null.patch" Content-Disposition: attachment; filename="v9-0001-new-COPY-on_error-option-set_to_null.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m4m6bsa60 RnJvbSA0N2JkZWRhODkxMTU5Njk1MDQ2M2U3MGUzMzI1M2U3NzNlZjEzMTkyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IEZyaSwgMTMgRGVjIDIwMjQgMTE6MDM6MTYgKzA4MDAKU3ViamVjdDogW1BBVENIIHY5 IDEvMV0gbmV3IENPUFkgb25fZXJyb3Igb3B0aW9uOiBzZXRfdG9fbnVsbAoKZXh0ZW50ICJvbl9l cnJvciBhY3Rpb24iLCBpbnRyb2R1Y2UgbmV3IG9wdGlvbjogb25fZXJyb3Igc2V0X3RvX251bGwu CmR1ZSB0byBjdXJyZW50IGdyYW1tYXIsIHdlIGNhbm5vdCB1c2UgIm9uX2Vycm9yIG51bGwiLCBz byBpIGNob29zZSBvbl9lcnJvciBzZXRfdG9fbnVsbC4KCmFueSBkYXRhIHR5cGUgY29udmVyc2lv biBlcnJvcnMgd2hpbGUgdGhlIENPUFkgRlJPTSBwcm9jZXNzIHdpbGwgc2V0IHRoYXQgY29sdW1u IHZhbHVlIHRvIGJlIE5VTEwuCnRoaXMgd2lsbCBvbmx5IHdvcmsgd2l0aCBDT1BZIEZST00gd2l0 aCBub24tYmluYXJ5IGZvcm1hdC4KCkhvd2V2ZXIgdGhpcyB3aWxsIHJlc3BlY3QgdGhlIG5vdC1u dWxsIGNvbnN0cmFpbnQsIG1lYW5pbmcsIGlmIHlvdSBhY3R1YWxseQpjb252ZXJ0ZWQgZXJyb3Ig dG8gbnVsbCwgYnV0IHRoZSBjb2x1bW4gaGFzIG5vdC1udWxsIGNvbnN0cmFpbnQsIG5vdC1udWxs CmNvbnN0cmFpbnQgdmlvbGF0aW9uIEVSUk9SIHdpbGwgYmUgcmVwb3J0ZWQuCgpyZWdyZXNzIHRl c3QgY29udGFpbnMgY29ybmVyIGNhc2UgZm9yIG5vdC1udWxsIHdpdGggZG9tYWluIGNvbnN0cmFp bnQuCgpkaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBS0ZRdXdhd3kxZTZZUjRTPWor eTdwWHFnX0R3MVdCVnJndmY9QlAzZDFfYVNmZV8rUUBtYWlsLmdtYWlsLmNvbQotLS0KIGRvYy9z cmMvc2dtbC9yZWYvY29weS5zZ21sICAgICAgICAgICAgICAgfCAyNiArKysrKysrKy0tLS0KIHNy Yy9iYWNrZW5kL2NvbW1hbmRzL2NvcHkuYyAgICAgICAgICAgICAgfCAgNiArKy0KIHNyYy9iYWNr ZW5kL2NvbW1hbmRzL2NvcHlmcm9tLmMgICAgICAgICAgfCAzMSArKysrKysrKystLS0tLS0KIHNy Yy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tcGFyc2UuYyAgICAgfCA0NyArKysrKysrKysrKysr KysrKysrKystCiBzcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMgICAgICAgICAgIHwgIDIg Ky0KIHNyYy9pbmNsdWRlL2NvbW1hbmRzL2NvcHkuaCAgICAgICAgICAgICAgfCAgMSArCiBzcmMv aW5jbHVkZS9jb21tYW5kcy9jb3B5ZnJvbV9pbnRlcm5hbC5oIHwgIDQgKy0KIHNyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvY29weTIub3V0ICAgICAgfCA1MCArKysrKysrKysrKysrKysrKysrKysr KysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvcHkyLnNxbCAgICAgICAgICAgfCA0NSArKysrKysr KysrKysrKysrKysrKysKIDkgZmlsZXMgY2hhbmdlZCwgMTg4IGluc2VydGlvbnMoKyksIDI0IGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY29weS5zZ21sIGIvZG9j L3NyYy9zZ21sL3JlZi9jb3B5LnNnbWwKaW5kZXggODM5NDQwMmYwOS4uNGI4NDdjMjVmMyAxMDA2 NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9jb3B5LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3Jl Zi9jb3B5LnNnbWwKQEAgLTM5NCwyMSArMzk0LDMzIEBAIENPUFkgeyA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+IFsgKCA8cmVwbGFjZWFibGUK ICAgICAgIFNwZWNpZmllcyBob3cgdG8gYmVoYXZlIHdoZW4gZW5jb3VudGVyaW5nIGFuIGVycm9y IGNvbnZlcnRpbmcgYSBjb2x1bW4ncwogICAgICAgaW5wdXQgdmFsdWUgaW50byBpdHMgZGF0YSB0 eXBlLgogICAgICAgQW4gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmVycm9yX2FjdGlv bjwvcmVwbGFjZWFibGU+IHZhbHVlIG9mCi0gICAgICA8bGl0ZXJhbD5zdG9wPC9saXRlcmFsPiBt ZWFucyBmYWlsIHRoZSBjb21tYW5kLCB3aGlsZQotICAgICAgPGxpdGVyYWw+aWdub3JlPC9saXRl cmFsPiBtZWFucyBkaXNjYXJkIHRoZSBpbnB1dCByb3cgYW5kIGNvbnRpbnVlIHdpdGggdGhlIG5l eHQgb25lLgorICAgICAgPGxpdGVyYWw+c3RvcDwvbGl0ZXJhbD4gbWVhbnMgZmFpbCB0aGUgY29t bWFuZCwKKyAgICAgIDxsaXRlcmFsPmlnbm9yZTwvbGl0ZXJhbD4gbWVhbnMgZGlzY2FyZCB0aGUg aW5wdXQgcm93IGFuZCBjb250aW51ZSB3aXRoIHRoZSBuZXh0IG9uZSwgYW5kCisgICAgICA8bGl0 ZXJhbD5zZXRfdG9fbnVsbDwvbGl0ZXJhbD4gbWVhbnMgcmVwbGFjZSBjb2x1bW5zIGNvbnRhaW5p bmcgZXJyb25lb3VzIGlucHV0IHZhbHVlcyB3aXRoIDxsaXRlcmFsPm51bGw8L2xpdGVyYWw+IGFu ZCBtb3ZlIHRvIHRoZSBuZXh0IGZpZWxkLgogICAgICAgVGhlIGRlZmF1bHQgaXMgPGxpdGVyYWw+ c3RvcDwvbGl0ZXJhbD4uCiAgICAgIDwvcGFyYT4KICAgICAgPHBhcmE+Ci0gICAgICBUaGUgPGxp dGVyYWw+aWdub3JlPC9saXRlcmFsPiBvcHRpb24gaXMgYXBwbGljYWJsZSBvbmx5IGZvciA8Y29t bWFuZD5DT1BZIEZST008L2NvbW1hbmQ+CisgICAgICBUaGUgPGxpdGVyYWw+aWdub3JlPC9saXRl cmFsPiBhbmQgPGxpdGVyYWw+c2V0X3RvX251bGw8L2xpdGVyYWw+IG9wdGlvbnMgYXJlIGFwcGxp Y2FibGUgb25seSBmb3IgPGNvbW1hbmQ+Q09QWSBGUk9NPC9jb21tYW5kPgogICAgICAgd2hlbiB0 aGUgPGxpdGVyYWw+Rk9STUFUPC9saXRlcmFsPiBpcyA8bGl0ZXJhbD50ZXh0PC9saXRlcmFsPiBv ciA8bGl0ZXJhbD5jc3Y8L2xpdGVyYWw+LgogICAgICA8L3BhcmE+CiAgICAgIDxwYXJhPgotICAg ICAgQSA8bGl0ZXJhbD5OT1RJQ0U8L2xpdGVyYWw+IG1lc3NhZ2UgY29udGFpbmluZyB0aGUgaWdu b3JlZCByb3cgY291bnQgaXMKKyAgICAgIEZvciA8bGl0ZXJhbD5pZ25vcmU8L2xpdGVyYWw+IG9w dGlvbiwKKyAgICAgIGEgPGxpdGVyYWw+Tk9USUNFPC9saXRlcmFsPiBtZXNzYWdlIGNvbnRhaW5p bmcgdGhlIGlnbm9yZWQgcm93IGNvdW50IGlzCiAgICAgICBlbWl0dGVkIGF0IHRoZSBlbmQgb2Yg dGhlIDxjb21tYW5kPkNPUFkgRlJPTTwvY29tbWFuZD4gaWYgYXQgbGVhc3Qgb25lCi0gICAgICBy b3cgd2FzIGRpc2NhcmRlZC4gV2hlbiA8bGl0ZXJhbD5MT0dfVkVSQk9TSVRZPC9saXRlcmFsPiBv cHRpb24gaXMgc2V0IHRvCi0gICAgICA8bGl0ZXJhbD52ZXJib3NlPC9saXRlcmFsPiwgYSA8bGl0 ZXJhbD5OT1RJQ0U8L2xpdGVyYWw+IG1lc3NhZ2UKKyAgICAgIHJvdyB3YXMgZGlzY2FyZGVkLgor ICAgICAgRm9yIDxsaXRlcmFsPnNldF90b19udWxsPC9saXRlcmFsPiBvcHRpb24sCisgICAgICBh IDxsaXRlcmFsPk5PVElDRTwvbGl0ZXJhbD4gbWVzc2FnZSBjb250YWluaW5nIHRoZSByb3cgY291 bnQgdGhhdCBlcnJvbmVvdXMgaW5wdXQgdmFsdWVzIHJlcGxhY2VkIGJ5IHRvIG51bGwgaGFwcGVu ZWQgaXMKKyAgICAgIGVtaXR0ZWQgYXQgdGhlIGVuZCBvZiB0aGUgPGNvbW1hbmQ+Q09QWSBGUk9N PC9jb21tYW5kPiBpZiBhdCBsZWFzdCBvbmUgcm93IHdhcyByZXBsYWNlZC4KKyAgICAgIDwvcGFy YT4KKyAgICAgIDxwYXJhPgorICAgICAgV2hlbiA8bGl0ZXJhbD5MT0dfVkVSQk9TSVRZPC9saXRl cmFsPiBvcHRpb24gaXMgc2V0IHRvCisgICAgICA8bGl0ZXJhbD52ZXJib3NlPC9saXRlcmFsPiwg Zm9yIDxsaXRlcmFsPmlnbm9yZTwvbGl0ZXJhbD4gb3B0aW9uLCBhIDxsaXRlcmFsPk5PVElDRTwv bGl0ZXJhbD4gbWVzc2FnZQogICAgICAgY29udGFpbmluZyB0aGUgbGluZSBvZiB0aGUgaW5wdXQg ZmlsZSBhbmQgdGhlIGNvbHVtbiBuYW1lIHdob3NlIGlucHV0Ci0gICAgICBjb252ZXJzaW9uIGhh cyBmYWlsZWQgaXMgZW1pdHRlZCBmb3IgZWFjaCBkaXNjYXJkZWQgcm93LgorICAgICAgY29udmVy c2lvbiBoYXMgZmFpbGVkIGlzIGVtaXR0ZWQgZm9yIGVhY2ggZGlzY2FyZGVkIHJvdzsKKyAgICAg IGZvciA8bGl0ZXJhbD5zZXRfdG9fbnVsbDwvbGl0ZXJhbD4gb3B0aW9uLAorICAgICAgYSA8bGl0 ZXJhbD5OT1RJQ0U8L2xpdGVyYWw+IG1lc3NhZ2UKKyAgICAgIGNvbnRhaW5pbmcgdGhlIGxpbmUg b2YgdGhlIGlucHV0IGZpbGUgYW5kIHRoZSBjb2x1bW4gbmFtZSB3aG9zZSBpbnB1dCB2YWx1ZSBo YXMgYmVlbiByZXBsYWNlZCBieSBudWxsCisgICAgICBpcyBlbWl0dGVkIGZvciBlYWNoIHJvdyB3 aGVyZSBpbnB1dCBjb252ZXJzaW9uIGhhcyBmYWlsZWQgOwogICAgICAgV2hlbiBpdCBpcyBzZXQg dG8gPGxpdGVyYWw+c2lsZW50PC9saXRlcmFsPiwgbm8gbWVzc2FnZSBpcyBlbWl0dGVkCiAgICAg ICByZWdhcmRpbmcgaWdub3JlZCByb3dzLgogICAgICA8L3BhcmE+CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9jb21tYW5kcy9jb3B5LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMKaW5k ZXggMmQ5OGVjZjNmNC4uZjQ5NGQyZDY0YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvY29weS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHkuYwpAQCAtNDAzLDEyICs0 MDMsMTQgQEAgZGVmR2V0Q29weU9uRXJyb3JDaG9pY2UoRGVmRWxlbSAqZGVmLCBQYXJzZVN0YXRl ICpwc3RhdGUsIGJvb2wgaXNfZnJvbSkKIAkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwg ZGVmLT5sb2NhdGlvbikpKTsKIAogCS8qCi0JICogQWxsb3cgInN0b3AiLCBvciAiaWdub3JlIiB2 YWx1ZXMuCisJICogQWxsb3cgInN0b3AiLCAiaWdub3JlIiwgInNldF90b19udWxsIiB2YWx1ZXMu CiAJICovCiAJaWYgKHBnX3N0cmNhc2VjbXAoc3ZhbCwgInN0b3AiKSA9PSAwKQogCQlyZXR1cm4g Q09QWV9PTl9FUlJPUl9TVE9QOwogCWlmIChwZ19zdHJjYXNlY21wKHN2YWwsICJpZ25vcmUiKSA9 PSAwKQogCQlyZXR1cm4gQ09QWV9PTl9FUlJPUl9JR05PUkU7CisJaWYgKHBnX3N0cmNhc2VjbXAo c3ZhbCwgInNldF90b19udWxsIikgPT0gMCkKKwkJcmV0dXJuIENPUFlfT05fRVJST1JfTlVMTDsK IAogCWVyZXBvcnQoRVJST1IsCiAJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVS X1ZBTFVFKSwKQEAgLTkxOCw3ICs5MjAsNyBAQCBQcm9jZXNzQ29weU9wdGlvbnMoUGFyc2VTdGF0 ZSAqcHN0YXRlLAogCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKIAkJCQkgZXJy bXNnKCJvbmx5IE9OX0VSUk9SIFNUT1AgaXMgYWxsb3dlZCBpbiBCSU5BUlkgbW9kZSIpKSk7CiAK LQlpZiAob3B0c19vdXQtPnJlamVjdF9saW1pdCAmJiAhb3B0c19vdXQtPm9uX2Vycm9yKQorCWlm IChvcHRzX291dC0+cmVqZWN0X2xpbWl0ICYmIG9wdHNfb3V0LT5vbl9lcnJvciAhPSBDT1BZX09O X0VSUk9SX0lHTk9SRSkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX0lO VkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKIAkJLyotIHRyYW5zbGF0b3I6IGZpcnN0IGFuZCBzZWNv bmQgJXMgYXJlIHRoZSBuYW1lcyBvZiBDT1BZIG9wdGlvbiwgZS5nLgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvY29weWZyb20uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlm cm9tLmMKaW5kZXggNGQ1MmM5M2MzMC4uYTllNjFmNWUyNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvY29weWZyb20uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJv bS5jCkBAIC0xMDAzLDcgKzEwMDMsNyBAQCBDb3B5RnJvbShDb3B5RnJvbVN0YXRlIGNzdGF0ZSkK IAkJaWYgKCFOZXh0Q29weUZyb20oY3N0YXRlLCBlY29udGV4dCwgbXlzbG90LT50dHNfdmFsdWVz LCBteXNsb3QtPnR0c19pc251bGwpKQogCQkJYnJlYWs7CiAKLQkJaWYgKGNzdGF0ZS0+b3B0cy5v bl9lcnJvciA9PSBDT1BZX09OX0VSUk9SX0lHTk9SRSAmJgorCQlpZiAoKGNzdGF0ZS0+b3B0cy5v bl9lcnJvciA9PSBDT1BZX09OX0VSUk9SX0lHTk9SRSB8fCBjc3RhdGUtPm9wdHMub25fZXJyb3Ig PT0gQ09QWV9PTl9FUlJPUl9OVUxMKSAmJgogCQkJY3N0YXRlLT5lc2NvbnRleHQtPmVycm9yX29j Y3VycmVkKQogCQl7CiAJCQkvKgpAQCAtMTMyMSwxNCArMTMyMSwyMiBAQCBDb3B5RnJvbShDb3B5 RnJvbVN0YXRlIGNzdGF0ZSkKIAkvKiBEb25lLCBjbGVhbiB1cCAqLwogCWVycm9yX2NvbnRleHRf c3RhY2sgPSBlcnJjYWxsYmFjay5wcmV2aW91czsKIAotCWlmIChjc3RhdGUtPm9wdHMub25fZXJy b3IgIT0gQ09QWV9PTl9FUlJPUl9TVE9QICYmCi0JCWNzdGF0ZS0+bnVtX2Vycm9ycyA+IDAgJiYK KwlpZiAoY3N0YXRlLT5udW1fZXJyb3JzID4gMCAmJgogCQljc3RhdGUtPm9wdHMubG9nX3ZlcmJv c2l0eSA+PSBDT1BZX0xPR19WRVJCT1NJVFlfREVGQVVMVCkKLQkJZXJlcG9ydChOT1RJQ0UsCi0J CQkJZXJybXNnX3BsdXJhbCgiJWxsdSByb3cgd2FzIHNraXBwZWQgZHVlIHRvIGRhdGEgdHlwZSBp bmNvbXBhdGliaWxpdHkiLAotCQkJCQkJCSAgIiVsbHUgcm93cyB3ZXJlIHNraXBwZWQgZHVlIHRv IGRhdGEgdHlwZSBpbmNvbXBhdGliaWxpdHkiLAotCQkJCQkJCSAgKHVuc2lnbmVkIGxvbmcgbG9u ZykgY3N0YXRlLT5udW1fZXJyb3JzLAotCQkJCQkJCSAgKHVuc2lnbmVkIGxvbmcgbG9uZykgY3N0 YXRlLT5udW1fZXJyb3JzKSk7CisJeworCQlpZiAoY3N0YXRlLT5vcHRzLm9uX2Vycm9yID09IENP UFlfT05fRVJST1JfSUdOT1JFKQorCQkJZXJlcG9ydChOT1RJQ0UsCisJCQkJCWVycm1zZ19wbHVy YWwoIiVsbHUgcm93IHdhcyBza2lwcGVkIGR1ZSB0byBkYXRhIHR5cGUgaW5jb21wYXRpYmlsaXR5 IiwKKwkJCQkJCQkJICAiJWxsdSByb3dzIHdlcmUgc2tpcHBlZCBkdWUgdG8gZGF0YSB0eXBlIGlu Y29tcGF0aWJpbGl0eSIsCisJCQkJCQkJCSAgKHVuc2lnbmVkIGxvbmcgbG9uZykgY3N0YXRlLT5u dW1fZXJyb3JzLAorCQkJCQkJCQkgICh1bnNpZ25lZCBsb25nIGxvbmcpIGNzdGF0ZS0+bnVtX2Vy cm9ycykpOworCQllbHNlIGlmIChjc3RhdGUtPm9wdHMub25fZXJyb3IgPT0gQ09QWV9PTl9FUlJP Ul9OVUxMKQorCQkJZXJlcG9ydChOT1RJQ0UsCisJCQkJCWVycm1zZ19wbHVyYWwoIkVycm9uZW91 cyB2YWx1ZXMgaW4gJWxsdSByb3cgd2FzIHJlcGxhY2VkIHdpdGggTlVMTCIsCisJCQkJCQkJCSAg IkVycm9uZW91cyB2YWx1ZXMgaW4gJWxsdSByb3dzIHdlcmUgcmVwbGFjZWQgd2l0aCBOVUxMIiwK KwkJCQkJCQkJICAodW5zaWduZWQgbG9uZyBsb25nKSBjc3RhdGUtPm51bV9lcnJvcnMsCisJCQkJ CQkJCSAgKHVuc2lnbmVkIGxvbmcgbG9uZykgY3N0YXRlLT5udW1fZXJyb3JzKSk7CisJfQogCiAJ aWYgKGJpc3RhdGUgIT0gTlVMTCkKIAkJRnJlZUJ1bGtJbnNlcnRTdGF0ZShiaXN0YXRlKTsKQEAg LTE0NzQsMTAgKzE0ODIsMTEgQEAgQmVnaW5Db3B5RnJvbShQYXJzZVN0YXRlICpwc3RhdGUsCiAJ CWNzdGF0ZS0+ZXNjb250ZXh0LT5lcnJvcl9vY2N1cnJlZCA9IGZhbHNlOwogCiAJCS8qCi0JCSAq IEN1cnJlbnRseSB3ZSBvbmx5IHN1cHBvcnQgQ09QWV9PTl9FUlJPUl9JR05PUkUuIFdlJ2xsIGFk ZCBvdGhlcgotCQkgKiBvcHRpb25zIGxhdGVyCisJCSAqIEN1cnJlbnRseSB3ZSBvbmx5IHN1cHBv cnQgQ09QWV9PTl9FUlJPUl9JR05PUkUsIENPUFlfT05fRVJST1JfTlVMTC4KKwkJICogV2UnbGwg YWRkIG90aGVyIG9wdGlvbnMgbGF0ZXIKIAkJICovCi0JCWlmIChjc3RhdGUtPm9wdHMub25fZXJy b3IgPT0gQ09QWV9PTl9FUlJPUl9JR05PUkUpCisJCWlmIChjc3RhdGUtPm9wdHMub25fZXJyb3Ig PT0gQ09QWV9PTl9FUlJPUl9JR05PUkUgfHwKKwkJCWNzdGF0ZS0+b3B0cy5vbl9lcnJvciA9PSBD T1BZX09OX0VSUk9SX05VTEwpCiAJCQljc3RhdGUtPmVzY29udGV4dC0+ZGV0YWlsc193YW50ZWQg PSBmYWxzZTsKIAl9CiAJZWxzZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29w eWZyb21wYXJzZS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb21wYXJzZS5jCmluZGV4 IGQxZDQzYjUzZDguLjdmOThmNjZlYmUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L2NvcHlmcm9tcGFyc2UuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbXBhcnNl LmMKQEAgLTg3MSw2ICs4NzEsNyBAQCBOZXh0Q29weUZyb20oQ29weUZyb21TdGF0ZSBjc3RhdGUs IEV4cHJDb250ZXh0ICplY29udGV4dCwKIAkJaW50CQkJZmxkY3Q7CiAJCWludAkJCWZpZWxkbm87 CiAJCWNoYXIJICAgKnN0cmluZzsKKwkJYm9vbAkJY3VycmVudF9yb3dfZXJyb25lb3VzID0gZmFs c2U7CiAKIAkJLyogcmVhZCByYXcgZmllbGRzIGluIHRoZSBuZXh0IGxpbmUgKi8KIAkJaWYgKCFO ZXh0Q29weUZyb21SYXdGaWVsZHMoY3N0YXRlLCAmZmllbGRfc3RyaW5ncywgJmZsZGN0KSkKQEAg LTk0OSw3ICs5NTAsOCBAQCBOZXh0Q29weUZyb20oQ29weUZyb21TdGF0ZSBjc3RhdGUsIEV4cHJD b250ZXh0ICplY29udGV4dCwKIAogCQkJLyoKIAkJCSAqIElmIE9OX0VSUk9SIGlzIHNwZWNpZmll ZCB3aXRoIElHTk9SRSwgc2tpcCByb3dzIHdpdGggc29mdAotCQkJICogZXJyb3JzCisJCQkgKiBl cnJvcnMuIElmIE9OX0VSUk9SIGlzIHNwZWNpZmllZCB3aXRoIFNFVF9UT19OVUxMLCB0cnkKKwkJ CSAqIHRvIHJlcGxhY2UgYXR0cmlidXRlIHZhbHVlIHdpdGggTlVMTC4KIAkJCSAqLwogCQkJZWxz ZSBpZiAoIUlucHV0RnVuY3Rpb25DYWxsU2FmZSgmaW5fZnVuY3Rpb25zW21dLAogCQkJCQkJCQkJ CQlzdHJpbmcsCkBAIC05NjAsOSArOTYyLDQ4IEBAIE5leHRDb3B5RnJvbShDb3B5RnJvbVN0YXRl IGNzdGF0ZSwgRXhwckNvbnRleHQgKmVjb250ZXh0LAogCQkJewogCQkJCUFzc2VydChjc3RhdGUt Pm9wdHMub25fZXJyb3IgIT0gQ09QWV9PTl9FUlJPUl9TVE9QKTsKIAorCQkJCS8qCisJCQkJICog d2UgdXNlIGl0IHRvIGNvdW50IHRoZSBudW1iZXIgb2Ygcm93cyAobm90IGZpZWxkcykKKwkJCQkg KiBzdWNjZXNzZnVsbHkgZG9pbmcgb25fZXJyb3Igc2V0X3RvX251bGwuCisJCQkJKi8KKwkJCQlj dXJyZW50X3Jvd19lcnJvbmVvdXMgPSB0cnVlOworCisJCQkJaWYgKGNzdGF0ZS0+b3B0cy5vbl9l cnJvciA9PSBDT1BZX09OX0VSUk9SX05VTEwpCisJCQkJeworCQkJCQkvKgorCQkJCQkgKiB3ZSBu ZWVkIGFub3RoZXIgSW5wdXRGdW5jdGlvbkNhbGxTYWZlIGZvciBkb21haW4gd2l0aCBhCisJCQkJ CSAqIG5vdC1udWxsIGNvbnN0cmFpbnQuIGlmIGRvbWFpbiBkb24ndCBoYXZlIG5vdC1udWxsCisJ CQkJCSAqIHRoZW4gY29udGludWUgdG8gdGhlIG5leHQgZmllbGQsIG90aGVyd2lzZSBlcnJvciBv dXQuCisJCQkJCSovCisJCQkJCWNzdGF0ZS0+ZXNjb250ZXh0LT5lcnJvcl9vY2N1cnJlZCA9IGZh bHNlOworCQkJCQlpZiAoSW5wdXRGdW5jdGlvbkNhbGxTYWZlKCZpbl9mdW5jdGlvbnNbbV0sCisJ CQkJCQkJCQkJCSAgTlVMTCwKKwkJCQkJCQkJCQkJICB0eXBpb3BhcmFtc1ttXSwKKwkJCQkJCQkJ CQkJICBhdHQtPmF0dHR5cG1vZCwKKwkJCQkJCQkJCQkJICAoTm9kZSAqKSBjc3RhdGUtPmVzY29u dGV4dCwKKwkJCQkJCQkJCQkJICAmdmFsdWVzW21dKSkKKwkJCQkJeworCQkJCQkJbnVsbHNbbV0g PSB0cnVlOworCisJCQkJCQlpZiAoY3N0YXRlLT5vcHRzLmxvZ192ZXJib3NpdHkgPT0gQ09QWV9M T0dfVkVSQk9TSVRZX1ZFUkJPU0UpCisJCQkJCQkJZXJlcG9ydChOT1RJQ0UsCisJCQkJCQkJCQll cnJtc2coInJlcGxhY2VkIHJvdyBhdHRyaWJ1dGUgXCIlc1wiIHdpdGggTlVMTCBkdWUgdG8gZGF0 YSB0eXBlIGluY29tcGF0aWJpbGl0eSBhdCBsaW5lICVsbHUiLAorCQkJCQkJCQkJCQljc3RhdGUt PmN1cl9hdHRuYW1lLAorCQkJCQkJCQkJCQkodW5zaWduZWQgbG9uZyBsb25nKSBjc3RhdGUtPmN1 cl9saW5lbm8pKTsKKwkJCQkJCWNvbnRpbnVlOworCQkJCQl9CisJCQkJCWVsc2UKKwkJCQkJCWVy ZXBvcnQoRVJST1IsCisJCQkJCQkJCWVycmNvZGUoRVJSQ09ERV9OT1RfTlVMTF9WSU9MQVRJT04p LAorCQkJCQkJCQllcnJtc2coImRvbWFpbiAlcyBkb2VzIG5vdCBhbGxvdyBudWxsIHZhbHVlcyIs IGZvcm1hdF90eXBlX2JlKHR5cGlvcGFyYW1zW21dKSksCisJCQkJCQkJCWVycmRhdGF0eXBlKHR5 cGlvcGFyYW1zW21dKSk7CisJCQkJfQorCiAJCQkJY3N0YXRlLT5udW1fZXJyb3JzKys7CisJCQkJ Y3N0YXRlLT5lc2NvbnRleHQtPmVycm9yX29jY3VycmVkID0gdHJ1ZTsKIAotCQkJCWlmIChjc3Rh dGUtPm9wdHMubG9nX3ZlcmJvc2l0eSA9PSBDT1BZX0xPR19WRVJCT1NJVFlfVkVSQk9TRSkKKwkJ CQlpZiAoY3N0YXRlLT5vcHRzLmxvZ192ZXJib3NpdHkgPT0gQ09QWV9MT0dfVkVSQk9TSVRZX1ZF UkJPU0UgJiYKKwkJCQkJY3N0YXRlLT5vcHRzLm9uX2Vycm9yICE9IENPUFlfT05fRVJST1JfTlVM TCkKIAkJCQl7CiAJCQkJCS8qCiAJCQkJCSAqIFNpbmNlIHdlIGVtaXQgbGluZSBudW1iZXIgYW5k IGNvbHVtbiBpbmZvIGluIHRoZSBiZWxvdwpAQCAtMTAwMSw2ICsxMDQyLDggQEAgTmV4dENvcHlG cm9tKENvcHlGcm9tU3RhdGUgY3N0YXRlLCBFeHByQ29udGV4dCAqZWNvbnRleHQsCiAJCQljc3Rh dGUtPmN1cl9hdHR2YWwgPSBOVUxMOwogCQl9CiAKKwkJaWYgKGN1cnJlbnRfcm93X2Vycm9uZW91 cykKKwkJCWNzdGF0ZS0+bnVtX2Vycm9ycysrOwogCQlBc3NlcnQoZmllbGRubyA9PSBhdHRyX2Nv dW50KTsKIAl9CiAJZWxzZQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5p bi5jIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCmluZGV4IGJiZDA4NzcwYzMuLmZj MjI2MGI1NDEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYworKysg Yi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKQEAgLTMyMzUsNyArMzIzNSw3IEBAIG1h dGNoX3ByZXZpb3VzX3dvcmRzKGludCBwYXR0ZXJuX2lkLAogCQlDT01QTEVURV9XSVRIKCJGT1JN QVQiLCAiRlJFRVpFIiwgIkRFTElNSVRFUiIsICJOVUxMIiwKIAkJCQkJICAiSEVBREVSIiwgIlFV T1RFIiwgIkVTQ0FQRSIsICJGT1JDRV9RVU9URSIsCiAJCQkJCSAgIkZPUkNFX05PVF9OVUxMIiwg IkZPUkNFX05VTEwiLCAiRU5DT0RJTkciLCAiREVGQVVMVCIsCi0JCQkJCSAgIk9OX0VSUk9SIiwg IkxPR19WRVJCT1NJVFkiKTsKKwkJCQkJICAiT05fRVJST1IiLCAiU0VUX1RPX05VTEwiLCAiTE9H X1ZFUkJPU0lUWSIpOwogCiAJLyogQ29tcGxldGUgQ09QWSA8c3RoPiBGUk9NfFRPIGZpbGVuYW1l IFdJVEggKEZPUk1BVCAqLwogCWVsc2UgaWYgKE1hdGNoZXMoIkNPUFl8XFxjb3B5IiwgTWF0Y2hB bnksICJGUk9NfFRPIiwgTWF0Y2hBbnksICJXSVRIIiwgIigiLCAiRk9STUFUIikpCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5LmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9j b3B5LmgKaW5kZXggNDAwMmE3ZjUzOC4uMDUxY2ExMmQxMCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvY29tbWFuZHMvY29weS5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2NvcHkuaApAQCAt MzgsNiArMzgsNyBAQCB0eXBlZGVmIGVudW0gQ29weU9uRXJyb3JDaG9pY2UKIHsKIAlDT1BZX09O X0VSUk9SX1NUT1AgPSAwLAkJLyogaW1tZWRpYXRlbHkgdGhyb3cgZXJyb3JzLCBkZWZhdWx0ICov CiAJQ09QWV9PTl9FUlJPUl9JR05PUkUsCQkvKiBpZ25vcmUgZXJyb3JzICovCisJQ09QWV9PTl9F UlJPUl9OVUxMLAkJCS8qIHNldCBlcnJvciBmaWVsZCB0byBudWxsICovCiB9IENvcHlPbkVycm9y Q2hvaWNlOwogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvY29weWZyb21f aW50ZXJuYWwuaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2NvcHlmcm9tX2ludGVybmFsLmgKaW5k ZXggY2FkNTJmY2M3OC4uNWVhYWNkOGM2YiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29tbWFu ZHMvY29weWZyb21faW50ZXJuYWwuaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5ZnJv bV9pbnRlcm5hbC5oCkBAIC05OCw3ICs5OCw5IEBAIHR5cGVkZWYgc3RydWN0IENvcHlGcm9tU3Rh dGVEYXRhCiAJRXJyb3JTYXZlQ29udGV4dCAqZXNjb250ZXh0OwkvKiBzb2Z0IGVycm9yIHRyYXBw ZXIgZHVyaW5nIGluX2Z1bmN0aW9ucwogCQkJCQkJCQkJICogZXhlY3V0aW9uICovCiAJdWludDY0 CQludW1fZXJyb3JzOwkJLyogdG90YWwgbnVtYmVyIG9mIHJvd3Mgd2hpY2ggY29udGFpbmVkIHNv ZnQKLQkJCQkJCQkJICogZXJyb3JzICovCisJCQkJCQkJCSAqIGVycm9ycywgZm9yIE9OX0VSUk9S IHNldF90b19udWxsLCBpdCdzIHRoZQorCQkJCQkJCQkgKiBudW1iZXIgb2Ygcm93cyBzdWNjZXNz ZnVsbHkgY29udmVydGVkIHRvIG51bGwKKwkJCQkJCQkJKi8KIAlpbnQJCSAgICpkZWZtYXA7CQkJ LyogYXJyYXkgb2YgZGVmYXVsdCBhdHQgbnVtYmVycyByZWxhdGVkIHRvCiAJCQkJCQkJCSAqIG1p c3NpbmcgYXR0ICovCiAJRXhwclN0YXRlICoqZGVmZXhwcnM7CQkvKiBhcnJheSBvZiBkZWZhdWx0 IGF0dCBleHByZXNzaW9ucyBmb3IgYWxsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL2NvcHkyLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29weTIub3V0Cmlu ZGV4IDY0ZWEzM2FlYWUuLmYwM2RkMjRkNTQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvY29weTIub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29weTIu b3V0CkBAIC04MSw2ICs4MSwxMiBAQCBDT1BZIHggZnJvbSBzdGRpbiAob25fZXJyb3IgaWdub3Jl LCBvbl9lcnJvciBpZ25vcmUpOwogRVJST1I6ICBjb25mbGljdGluZyBvciByZWR1bmRhbnQgb3B0 aW9ucwogTElORSAxOiBDT1BZIHggZnJvbSBzdGRpbiAob25fZXJyb3IgaWdub3JlLCBvbl9lcnJv ciBpZ25vcmUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBe CitDT1BZIHggZnJvbSBzdGRpbiAob25fZXJyb3Igc2V0X3RvX251bGwsIG9uX2Vycm9yIHNldF90 b19udWxsKTsKK0VSUk9SOiAgY29uZmxpY3Rpbmcgb3IgcmVkdW5kYW50IG9wdGlvbnMKK0xJTkUg MTogQ09QWSB4IGZyb20gc3RkaW4gKG9uX2Vycm9yIHNldF90b19udWxsLCBvbl9lcnJvciBzZXRf dG9fbnVsLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXgorQ09QWSB4IEZST00gc3RkaW4gV0lUSCAob25fZXJyb3Igc2V0X3RvX251bGwsIHJlamVj dF9saW1pdCAyKTsKK0VSUk9SOiAgQ09QWSBSRUpFQ1RfTElNSVQgcmVxdWlyZXMgT05fRVJST1Ig dG8gYmUgc2V0IHRvIElHTk9SRQogQ09QWSB4IGZyb20gc3RkaW4gKGxvZ192ZXJib3NpdHkgZGVm YXVsdCwgbG9nX3ZlcmJvc2l0eSB2ZXJib3NlKTsKIEVSUk9SOiAgY29uZmxpY3Rpbmcgb3IgcmVk dW5kYW50IG9wdGlvbnMKIExJTkUgMTogQ09QWSB4IGZyb20gc3RkaW4gKGxvZ192ZXJib3NpdHkg ZGVmYXVsdCwgbG9nX3ZlcmJvc2l0eSB2ZXJiLi4uCkBAIC05Miw2ICs5OCw4IEBAIENPUFkgeCBm cm9tIHN0ZGluIChmb3JtYXQgQklOQVJZLCBudWxsICd4Jyk7CiBFUlJPUjogIGNhbm5vdCBzcGVj aWZ5IE5VTEwgaW4gQklOQVJZIG1vZGUKIENPUFkgeCBmcm9tIHN0ZGluIChmb3JtYXQgQklOQVJZ LCBvbl9lcnJvciBpZ25vcmUpOwogRVJST1I6ICBvbmx5IE9OX0VSUk9SIFNUT1AgaXMgYWxsb3dl ZCBpbiBCSU5BUlkgbW9kZQorQ09QWSB4IGZyb20gc3RkaW4gKGZvcm1hdCBCSU5BUlksIG9uX2Vy cm9yIHNldF90b19udWxsKTsKK0VSUk9SOiAgb25seSBPTl9FUlJPUiBTVE9QIGlzIGFsbG93ZWQg aW4gQklOQVJZIG1vZGUKIENPUFkgeCBmcm9tIHN0ZGluIChvbl9lcnJvciB1bnN1cHBvcnRlZCk7 CiBFUlJPUjogIENPUFkgT05fRVJST1IgInVuc3VwcG9ydGVkIiBub3QgcmVjb2duaXplZAogTElO RSAxOiBDT1BZIHggZnJvbSBzdGRpbiAob25fZXJyb3IgdW5zdXBwb3J0ZWQpOwpAQCAtMTI0LDYg KzEzMiwxMCBAQCBDT1BZIHggdG8gc3Rkb3V0IChmb3JtYXQgQklOQVJZLCBvbl9lcnJvciB1bnN1 cHBvcnRlZCk7CiBFUlJPUjogIENPUFkgT05fRVJST1IgY2Fubm90IGJlIHVzZWQgd2l0aCBDT1BZ IFRPCiBMSU5FIDE6IENPUFkgeCB0byBzdGRvdXQgKGZvcm1hdCBCSU5BUlksIG9uX2Vycm9yIHVu c3VwcG9ydGVkKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgor Q09QWSB4IHRvIHN0ZGluIChvbl9lcnJvciBzZXRfdG9fbnVsbCk7CitFUlJPUjogIENPUFkgT05f RVJST1IgY2Fubm90IGJlIHVzZWQgd2l0aCBDT1BZIFRPCitMSU5FIDE6IENPUFkgeCB0byBzdGRp biAob25fZXJyb3Igc2V0X3RvX251bGwpOworICAgICAgICAgICAgICAgICAgICAgICAgIF4KIENP UFkgeCBmcm9tIHN0ZGluIChsb2dfdmVyYm9zaXR5IHVuc3VwcG9ydGVkKTsKIEVSUk9SOiAgQ09Q WSBMT0dfVkVSQk9TSVRZICJ1bnN1cHBvcnRlZCIgbm90IHJlY29nbml6ZWQKIExJTkUgMTogQ09Q WSB4IGZyb20gc3RkaW4gKGxvZ192ZXJib3NpdHkgdW5zdXBwb3J0ZWQpOwpAQCAtNzY5LDYgKzc4 MSw0MiBAQCBDT05URVhUOiAgQ09QWSBjaGVja19pZ25fZXJyCiBOT1RJQ0U6ICBza2lwcGluZyBy b3cgZHVlIHRvIGRhdGEgdHlwZSBpbmNvbXBhdGliaWxpdHkgYXQgbGluZSA4IGZvciBjb2x1bW4g ImsiOiAiYSIKIENPTlRFWFQ6ICBDT1BZIGNoZWNrX2lnbl9lcnIKIE5PVElDRTogIDYgcm93cyB3 ZXJlIHNraXBwZWQgZHVlIHRvIGRhdGEgdHlwZSBpbmNvbXBhdGliaWxpdHkKK0NSRUFURSBET01B SU4gZF9pbnRfbm90X251bGwgQVMgSU5UIE5PVCBOVUxMIENIRUNLKHZhbHVlID4gMCk7CitDUkVB VEUgRE9NQUlOIGRfaW50X3Bvc2l0aXZlX21heWJlX251bGwgQVMgSU5UIENIRUNLKHZhbHVlID4g MCk7CitDUkVBVEUgVEFCTEUgdF9vbl9lcnJvcl9udWxsIChhIGRfaW50X25vdF9udWxsLCBiIGRf aW50X3Bvc2l0aXZlX21heWJlX251bGwsIGMgSU5UKTsKK1xwc2V0IG51bGwgTlVMTAorLS1mYWls LCBjb2x1bSBhIGNhbm5vdCBzZXQgdG8gTlVMTCB2YWx1ZQorQ09QWSB0X29uX2Vycm9yX251bGwg RlJPTSBTVERJTiBXSVRIIChvbl9lcnJvciBzZXRfdG9fbnVsbCk7CitFUlJPUjogIGRvbWFpbiBk X2ludF9ub3RfbnVsbCBkb2VzIG5vdCBhbGxvdyBudWxsIHZhbHVlcworQ09OVEVYVDogIENPUFkg dF9vbl9lcnJvcl9udWxsLCBsaW5lIDEsIGNvbHVtbiBhOiBudWxsIGlucHV0CistLWZhaWwsIGNv bHVtIGEgaXMgZG9tYWluIHdpdGggbm90LW51bGwgY29uc3RyYWludAorQ09QWSB0X29uX2Vycm9y X251bGwgRlJPTSBTVERJTiBXSVRIIChvbl9lcnJvciBzZXRfdG9fbnVsbCk7CitFUlJPUjogIGRv bWFpbiBkX2ludF9ub3RfbnVsbCBkb2VzIG5vdCBhbGxvdyBudWxsIHZhbHVlcworQ09OVEVYVDog IENPUFkgdF9vbl9lcnJvcl9udWxsLCBsaW5lIDEsIGNvbHVtbiBhOiAiYSIKKy0tZmFpbCwgY29s dW0gYSBjYW5ub3Qgc2V0IHRvIE5VTEwgdmFsdWUKK0NPUFkgdF9vbl9lcnJvcl9udWxsIEZST00g U1RESU4gV0lUSCAob25fZXJyb3Igc2V0X3RvX251bGwpOworRVJST1I6ICBkb21haW4gZF9pbnRf bm90X251bGwgZG9lcyBub3QgYWxsb3cgbnVsbCB2YWx1ZXMKK0NPTlRFWFQ6ICBDT1BZIHRfb25f ZXJyb3JfbnVsbCwgbGluZSAxLCBjb2x1bW4gYTogIi0xIgorLS1mYWlsLiBsZXNzIGRhdGEKK0NP UFkgdF9vbl9lcnJvcl9udWxsIEZST00gU1RESU4gV0lUSCAoZGVsaW1pdGVyICcsJywgb25fZXJy b3Igc2V0X3RvX251bGwpOworRVJST1I6ICBtaXNzaW5nIGRhdGEgZm9yIGNvbHVtbiAiYyIKK0NP TlRFWFQ6ICBDT1BZIHRfb25fZXJyb3JfbnVsbCwgbGluZSAxOiAiMSwxIgorLS1mYWlsLiBleHRy YSBkYXRhCitDT1BZIHRfb25fZXJyb3JfbnVsbCBGUk9NIFNURElOIFdJVEggKGRlbGltaXRlciAn LCcsIG9uX2Vycm9yIHNldF90b19udWxsKTsKK0VSUk9SOiAgZXh0cmEgZGF0YSBhZnRlciBsYXN0 IGV4cGVjdGVkIGNvbHVtbgorQ09OVEVYVDogIENPUFkgdF9vbl9lcnJvcl9udWxsLCBsaW5lIDE6 ICIxLDIsMyw0IgorLS1vaworQ09QWSB0X29uX2Vycm9yX251bGwgRlJPTSBTVERJTiBXSVRIIChv bl9lcnJvciBzZXRfdG9fbnVsbCk7CitOT1RJQ0U6ICBFcnJvbmVvdXMgdmFsdWVzIGluIDMgcm93 cyB3ZXJlIHJlcGxhY2VkIHdpdGggTlVMTAorLS0gY2hlY2sgaW5zZXJ0ZWQgY29udGVudAorc2Vs ZWN0ICogZnJvbSB0X29uX2Vycm9yX251bGw7CisgYSAgfCAgYiAgIHwgIGMgICAKKy0tLS0rLS0t LS0tKy0tLS0tLQorIDEwIHwgTlVMTCB8IE5VTEwKKyAxMSB8IE5VTEwgfCAgIDEyCisgMTMgfCAg IDE0IHwgTlVMTAorKDMgcm93cykKKwogLS0gdGVzdHMgZm9yIG9uX2Vycm9yIG9wdGlvbiB3aXRo IGxvZ192ZXJib3NpdHkgYW5kIG51bGwgY29uc3RyYWludCB2aWEgZG9tYWluCiBDUkVBVEUgRE9N QUlOIGRjaGVja19pZ25fZXJyMiB2YXJjaGFyKDE1KSBOT1QgTlVMTDsKIENSRUFURSBUQUJMRSBj aGVja19pZ25fZXJyMiAobiBpbnQsIG0gaW50W10sIGsgaW50LCBsIGRjaGVja19pZ25fZXJyMik7 CkBAIC04MjgsNiArODc2LDggQEAgRFJPUCBWSUVXIGluc3RlYWRfb2ZfaW5zZXJ0X3RibF92aWV3 OwogRFJPUCBWSUVXIGluc3RlYWRfb2ZfaW5zZXJ0X3RibF92aWV3XzI7CiBEUk9QIEZVTkNUSU9O IGZ1bl9pbnN0ZWFkX29mX2luc2VydF90YmwoKTsKIERST1AgVEFCTEUgY2hlY2tfaWduX2VycjsK K0RST1AgVEFCTEUgdF9vbl9lcnJvcl9udWxsOworRFJPUCBET01BSU4gZF9pbnRfbm90X251bGw7 CiBEUk9QIFRBQkxFIGNoZWNrX2lnbl9lcnIyOwogRFJPUCBET01BSU4gZGNoZWNrX2lnbl9lcnIy OwogRFJPUCBUQUJMRSBoYXJkX2VycjsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L2NvcHkyLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvcHkyLnNxbAppbmRleCA0NTI3MzU1 N2NlLi4yYmJiMWVjY2UxIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jb3B5Mi5z cWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29weTIuc3FsCkBAIC02NywxMiArNjcsMTUg QEAgQ09QWSB4IGZyb20gc3RkaW4gKGZvcmNlX251bGwgKGEpLCBmb3JjZV9udWxsIChiKSk7CiBD T1BZIHggZnJvbSBzdGRpbiAoY29udmVydF9zZWxlY3RpdmVseSAoYSksIGNvbnZlcnRfc2VsZWN0 aXZlbHkgKGIpKTsKIENPUFkgeCBmcm9tIHN0ZGluIChlbmNvZGluZyAnc3FsX2FzY2lpJywgZW5j b2RpbmcgJ3NxbF9hc2NpaScpOwogQ09QWSB4IGZyb20gc3RkaW4gKG9uX2Vycm9yIGlnbm9yZSwg b25fZXJyb3IgaWdub3JlKTsKK0NPUFkgeCBmcm9tIHN0ZGluIChvbl9lcnJvciBzZXRfdG9fbnVs bCwgb25fZXJyb3Igc2V0X3RvX251bGwpOworQ09QWSB4IEZST00gc3RkaW4gV0lUSCAob25fZXJy b3Igc2V0X3RvX251bGwsIHJlamVjdF9saW1pdCAyKTsKIENPUFkgeCBmcm9tIHN0ZGluIChsb2df dmVyYm9zaXR5IGRlZmF1bHQsIGxvZ192ZXJib3NpdHkgdmVyYm9zZSk7CiAKIC0tIGluY29ycmVj dCBvcHRpb25zCiBDT1BZIHggZnJvbSBzdGRpbiAoZm9ybWF0IEJJTkFSWSwgZGVsaW1pdGVyICcs Jyk7CiBDT1BZIHggZnJvbSBzdGRpbiAoZm9ybWF0IEJJTkFSWSwgbnVsbCAneCcpOwogQ09QWSB4 IGZyb20gc3RkaW4gKGZvcm1hdCBCSU5BUlksIG9uX2Vycm9yIGlnbm9yZSk7CitDT1BZIHggZnJv bSBzdGRpbiAoZm9ybWF0IEJJTkFSWSwgb25fZXJyb3Igc2V0X3RvX251bGwpOwogQ09QWSB4IGZy b20gc3RkaW4gKG9uX2Vycm9yIHVuc3VwcG9ydGVkKTsKIENPUFkgeCBmcm9tIHN0ZGluIChmb3Jt YXQgVEVYVCwgZm9yY2VfcXVvdGUoYSkpOwogQ09QWSB4IGZyb20gc3RkaW4gKGZvcm1hdCBURVhU LCBmb3JjZV9xdW90ZSAqKTsKQEAgLTg3LDYgKzkwLDcgQEAgQ09QWSB4IGZyb20gc3RkaW4gKGZv cm1hdCBURVhULCBmb3JjZV9udWxsICopOwogQ09QWSB4IHRvIHN0ZG91dCAoZm9ybWF0IENTViwg Zm9yY2VfbnVsbChhKSk7CiBDT1BZIHggdG8gc3Rkb3V0IChmb3JtYXQgQ1NWLCBmb3JjZV9udWxs ICopOwogQ09QWSB4IHRvIHN0ZG91dCAoZm9ybWF0IEJJTkFSWSwgb25fZXJyb3IgdW5zdXBwb3J0 ZWQpOworQ09QWSB4IHRvIHN0ZGluIChvbl9lcnJvciBzZXRfdG9fbnVsbCk7CiBDT1BZIHggZnJv bSBzdGRpbiAobG9nX3ZlcmJvc2l0eSB1bnN1cHBvcnRlZCk7CiBDT1BZIHggZnJvbSBzdGRpbiB3 aXRoIChyZWplY3RfbGltaXQgMSk7CiBDT1BZIHggZnJvbSBzdGRpbiB3aXRoIChvbl9lcnJvciBp Z25vcmUsIHJlamVjdF9saW1pdCAwKTsKQEAgLTUzNCw2ICs1MzgsNDUgQEAgYQl7Mn0JMgogOAl7 OH0JOAogXC4KIAorQ1JFQVRFIERPTUFJTiBkX2ludF9ub3RfbnVsbCBBUyBJTlQgTk9UIE5VTEwg Q0hFQ0sodmFsdWUgPiAwKTsKK0NSRUFURSBET01BSU4gZF9pbnRfcG9zaXRpdmVfbWF5YmVfbnVs bCBBUyBJTlQgQ0hFQ0sodmFsdWUgPiAwKTsKK0NSRUFURSBUQUJMRSB0X29uX2Vycm9yX251bGwg KGEgZF9pbnRfbm90X251bGwsIGIgZF9pbnRfcG9zaXRpdmVfbWF5YmVfbnVsbCwgYyBJTlQpOwor CitccHNldCBudWxsIE5VTEwKKy0tZmFpbCwgY29sdW0gYSBjYW5ub3Qgc2V0IHRvIE5VTEwgdmFs dWUKK0NPUFkgdF9vbl9lcnJvcl9udWxsIEZST00gU1RESU4gV0lUSCAob25fZXJyb3Igc2V0X3Rv X251bGwpOworXE4JMTEJMTMKK1wuCisKKy0tZmFpbCwgY29sdW0gYSBpcyBkb21haW4gd2l0aCBu b3QtbnVsbCBjb25zdHJhaW50CitDT1BZIHRfb25fZXJyb3JfbnVsbCBGUk9NIFNURElOIFdJVEgg KG9uX2Vycm9yIHNldF90b19udWxsKTsKK2EJMTEJMTQKK1wuCisKKy0tZmFpbCwgY29sdW0gYSBj YW5ub3Qgc2V0IHRvIE5VTEwgdmFsdWUKK0NPUFkgdF9vbl9lcnJvcl9udWxsIEZST00gU1RESU4g V0lUSCAob25fZXJyb3Igc2V0X3RvX251bGwpOworLTEJMTEJMTMKK1wuCisKKy0tZmFpbC4gbGVz cyBkYXRhCitDT1BZIHRfb25fZXJyb3JfbnVsbCBGUk9NIFNURElOIFdJVEggKGRlbGltaXRlciAn LCcsIG9uX2Vycm9yIHNldF90b19udWxsKTsKKzEsMQorXC4KKy0tZmFpbC4gZXh0cmEgZGF0YQor Q09QWSB0X29uX2Vycm9yX251bGwgRlJPTSBTVERJTiBXSVRIIChkZWxpbWl0ZXIgJywnLCBvbl9l cnJvciBzZXRfdG9fbnVsbCk7CisxLDIsMyw0CitcLgorCistLW9rCitDT1BZIHRfb25fZXJyb3Jf bnVsbCBGUk9NIFNURElOIFdJVEggKG9uX2Vycm9yIHNldF90b19udWxsKTsKKzEwCWEJZAorMTEJ YgkxMgorMTMJMTQJZQorXC4KKworLS0gY2hlY2sgaW5zZXJ0ZWQgY29udGVudAorc2VsZWN0ICog ZnJvbSB0X29uX2Vycm9yX251bGw7CisKIC0tIHRlc3RzIGZvciBvbl9lcnJvciBvcHRpb24gd2l0 aCBsb2dfdmVyYm9zaXR5IGFuZCBudWxsIGNvbnN0cmFpbnQgdmlhIGRvbWFpbgogQ1JFQVRFIERP TUFJTiBkY2hlY2tfaWduX2VycjIgdmFyY2hhcigxNSkgTk9UIE5VTEw7CiBDUkVBVEUgVEFCTEUg Y2hlY2tfaWduX2VycjIgKG4gaW50LCBtIGludFtdLCBrIGludCwgbCBkY2hlY2tfaWduX2VycjIp OwpAQCAtNjAzLDYgKzY0Niw4IEBAIERST1AgVklFVyBpbnN0ZWFkX29mX2luc2VydF90Ymxfdmll dzsKIERST1AgVklFVyBpbnN0ZWFkX29mX2luc2VydF90Ymxfdmlld18yOwogRFJPUCBGVU5DVElP TiBmdW5faW5zdGVhZF9vZl9pbnNlcnRfdGJsKCk7CiBEUk9QIFRBQkxFIGNoZWNrX2lnbl9lcnI7 CitEUk9QIFRBQkxFIHRfb25fZXJyb3JfbnVsbDsKK0RST1AgRE9NQUlOIGRfaW50X25vdF9udWxs OwogRFJPUCBUQUJMRSBjaGVja19pZ25fZXJyMjsKIERST1AgRE9NQUlOIGRjaGVja19pZ25fZXJy MjsKIERST1AgVEFCTEUgaGFyZF9lcnI7Ci0tIAoyLjM0LjEKCg== --00000000000045c3f406291e3d62--