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 1sy6Bk-00EJyp-RS for pgsql-hackers@arkaria.postgresql.org; Tue, 08 Oct 2024 09:07:29 +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 1sy6Bj-005i47-61 for pgsql-hackers@arkaria.postgresql.org; Tue, 08 Oct 2024 09:07:27 +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 1sy6Bi-005i2z-JB for pgsql-hackers@lists.postgresql.org; Tue, 08 Oct 2024 09:07:26 +0000 Received: from mail-pg1-x534.google.com ([2607:f8b0:4864:20::534]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1sy6Bf-003AOa-3S for pgsql-hackers@postgresql.org; Tue, 08 Oct 2024 09:07:26 +0000 Received: by mail-pg1-x534.google.com with SMTP id 41be03b00d2f7-7d4f85766f0so4354099a12.2 for ; Tue, 08 Oct 2024 02:07:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1728378440; x=1728983240; darn=postgresql.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=0lUhlI7VxvkQfXdM7sSFGrX4nRTbTO+RLIXQies9OcY=; b=cmQ4R84ayTPLnkTKpwCJIlAeqZpTk6THy5jaA8GSNAlIjwNskPIhxTGJhob3aY/c1B W1WpSBoTpHPpo68NUE85bG/2feJwh+d2eP/JI6RZG8BU/hwCNcjd4ddRVUmLgh0ieUJL foOP1DfDzmS/BUL+nuaJMC98V2zQ1hYBtc99AwXGU+jRg/s65/v5aL/m4hulf/rbVsIC ZaCnLIYfu+Ur86q43J9cQWtgJ2P4ozAVfKEH+nEqbOXo6Jy1SeJNsNFl6NkqSGDdHR4I XwHFlhAFsxqHbdtdqdxl2tIY/s6vf09xn5ONZtThf7ROnvBelAqAgFb/hgUNe6wcSFTU 5crA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1728378440; x=1728983240; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=0lUhlI7VxvkQfXdM7sSFGrX4nRTbTO+RLIXQies9OcY=; b=O4J8LrW9MAO+35lv6qC4MGso5yUmsmsKbbCRmsK29AMm7r5Lgjz/44crak6gdDC21V oXKvVmOtl8VJhU169HrCqiR+h4xDSXVmiVQjQVGvojlUpoMOj1Fdy/cjEG7dYKb1QVtF Uxxm3FVhg5Clqcu3KFekJojTVBKpBrCGaIp4MBxU/PcahRAPlPxEgFZKRhcBgFHgHU01 QzWlkFZo4tdhDM3QQPHWE145Ss/99efHDrfvpclDh83CzpqKIFFaatTk9RkqFl7SKwXt vN6vn8+THl54TqmJju4ya9Uu8KmBg4UsY/JKskhOppn/IYbT21/y02hJviKU21i2zqEx IpIw== X-Gm-Message-State: AOJu0Yx5wKv+ahA2p3rUaBGqxFF4lSjwf0hvmBfzjdX9lZGl9O+yP0nF NkS6IZWWr8xa5tVWCokPANk8+OHB1qEc2EfJWfcvcchZHT5s7uGwVLWFtdQwbd5rW41Y5V75vMh 5x1HbBqH7SGRUzOPRlbmtJ9fZnrF25Q== X-Google-Smtp-Source: AGHT+IEzezA7P4Qkf4jXlL/Q521ceUcjpp65tQhiS5B/u6/kIIRchO3f07PjZC2AjX9y6X7Wsap2xQ5AJzkl8O07jq4= X-Received: by 2002:a17:90b:4d06:b0:2da:802d:1f95 with SMTP id 98e67ed59e1d1-2e1e620dca2mr20475506a91.5.1728378439716; Tue, 08 Oct 2024 02:07:19 -0700 (PDT) MIME-Version: 1.0 From: Amul Sul Date: Tue, 8 Oct 2024 14:36:42 +0530 Message-ID: Subject: NOT ENFORCED constraint feature To: PostgreSQL-development Content-Type: multipart/mixed; boundary="000000000000effd7c0623f376c1" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000effd7c0623f376c1 Content-Type: text/plain; charset="UTF-8" Hi, In SQL Standard 2023, a table's check or referential constraint can be either ENFORCED or NOT ENFORCED. Currently, when a DML statement is executed, all enforced constraints are validated. If any constraint is violated, an exception is raised, and the SQL transaction is rolled back. These are referred to as ENFORCED constraints. On the other hand, a NOT ENFORCED constraint is a rule defined in the database but not checked when data is inserted or updated. This can help speed up large data imports, improve performance when strict validation isn't required, or handle cases where constraints are enforced externally (e.g., by application logic). It also allows the rule to be documented without enforcing it during normal operations. The attached patch proposes adding the ability to define CHECK and FOREIGN KEY constraints as NOT ENFORCED. If neither ENFORCED nor NOT ENFORCED is explicitly specified when defining a constraint, the default setting is that the constraint is ENFORCED. Note that this addition differs from the properties of NOT VALID and DEFERRABLE constraints, which skip checks only for existing data and determine when to perform checks, respectively. In contrast, NOT ENFORCED completely skips the checks altogether. Adding NOT ENFORCED to CHECK constraints is simple, see 0001 patch, but implementing it for FOREIGN KEY constraints requires more code due to triggers, see 0002 - 0005 patches. There are various approaches for implementing NOT ENFORCED foreign keys, what I thought of: 1. When defining a NOT ENFORCED foreign key, skip the creation of triggers used for referential integrity check, while defining an ENFORCED foreign key, remain the same as the current behaviour. If an existing foreign key is changed to NOT ENFORCED, the triggers are dropped, and when switching it back to ENFORCED, the triggers are recreated. 2. Another approach could be to create the NOT ENFORCED constraint with the triggers as usual, but disable those triggers by updating the pg_trigger catalog so that they are never executed for the check. And enable them when the constraint is changed back to ENFORCED. 3. Similarly, a final approach would involve updating the logic where trigger execution is decided and skipping the execution if the constraint is not enforced, rather than modifying the pg_trigger catalog. In the attached patch, the first approach has been implemented. This requires more code changes but prevents unused triggers from being left in the database and avoids the need for changes all over the place to skip trigger execution, which could be missed in future code additions. The ALTER CONSTRAINT operation in the patch added code to handle dropping and recreating triggers. An alternative approach would be to simplify the process by dropping and recreating the FK constraint, which would automatically handle skipping or creating triggers for NOT ENFORCED or ENFORCED FK constraints. However, I wasn't sure if this was the right approach, as I couldn't find any existing ALTER operations that follow this pattern. Also note that the existing CHECK constraints currently do not support ALTER operations. This functionality may be essential for modifying a constraint's enforcement status; otherwise, users must drop and recreate the CHECK constraint to change its enforceability. I have not yet begun work on this, as it would involve significant code refactoring and updates to the documentation. I plan to start this once we finalise the design and reach a common understanding regarding this proposal. Any comments, suggestions, or assistance would be greatly appreciated. Thank you. -- Regards, Amul Sul EDB: http://www.enterprisedb.com --000000000000effd7c0623f376c1 Content-Type: application/x-patch; name="v1-0001-Add-support-for-NOT-ENFORCED-in-CHECK-constraints.patch" Content-Disposition: attachment; filename="v1-0001-Add-support-for-NOT-ENFORCED-in-CHECK-constraints.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m207d1vi0 RnJvbSA3NWQyNWM2M2QwYjEwZDY0MzlhZGU3OTI4OTlkNmFkYjhmOTlkNjYwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8YW11bC5zdWxAZW50ZXJwcmlzZWRiLmNvbT4K RGF0ZTogRnJpLCA0IE9jdCAyMDI0IDE4OjIyOjQyICswNTMwClN1YmplY3Q6IFtQQVRDSCB2MSAx LzVdIEFkZCBzdXBwb3J0IGZvciBOT1QgRU5GT1JDRUQgaW4gQ0hFQ0sgY29uc3RyYWludHMuCgpU aGlzIGFkZGVkIGJhc2ljIGluZnJhc3RydWN0dXJlIGZvciB0aGUgTk9UIEVORk9SQ0VEL0VORk9S Q0VECmNvbnN0cmFpbnQgc3VwcG9ydHMgd2hlcmUgaW5jbHVpbmcgZ3JhbW1hciBhbmQgY2F0YWxv ZyBmbGFncy4KCk5vdGUgdGhhdCBDSEVDSyBjb25zdHJhaW50cyBkbyBub3QgY3VycmVudGx5IHN1 cHBvcnQgQUxURVIgb3BlcmF0aW9ucywKc28gY2hhbmdpbmcgdGhlIGVuZm9yY2VhYmlsaXR5IG9m IGFuIGV4aXN0aW5nIGNvbnN0cmFpbnQgaXNuJ3QKcG9zc2libGUgd2l0aG91dCBkcm9wcGluZyBh bmQgcmVjcmVhdGluZyBpdC4gV2UgY291bGQgY29uc2lkZXIKYWRkaW5nIHN1cHBvcnQgZm9yIGFs dGVyaW5nIENIRUNLIGNvbnN0cmFpbnRzIGVpdGhlciBpbiB0aGlzCnBhdGNoIHNlcmllcyBvciBh cyBhIHNlcGFyYXRseS4KLS0tCiBkb2Mvc3JjL3NnbWwvZGRsLnNnbWwgICAgICAgICAgICAgICAg ICAgICB8ICA4ICsrLQogZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl90YWJsZS5zZ21sICAgICAgICAg fCAxNCArKystLQogZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUuc2dtbCAgICAgICAgfCAx OCArKysrKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vdHVwZGVzYy5jICAgICAgIHwgIDQg Ky0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvaGVhcC5jICAgICAgICAgICAgICAgIHwgMTMgKystLQog c3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jICAgICAgICAgICAgICAgfCAgMSArCiBzcmMvYmFj a2VuZC9jYXRhbG9nL3BnX2NvbnN0cmFpbnQuYyAgICAgICB8ICA1ICsrCiBzcmMvYmFja2VuZC9j b21tYW5kcy90YWJsZWNtZHMuYyAgICAgICAgICB8IDU2ICsrKysrKysrKysrKy0tLS0tLQogc3Jj L2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dlci5jICAgICAgICAgICAgfCAgMSArCiBzcmMvYmFja2Vu ZC9jb21tYW5kcy90eXBlY21kcy5jICAgICAgICAgICB8IDE0ICsrKysrCiBzcmMvYmFja2VuZC9l eGVjdXRvci9leGVjTWFpbi5jICAgICAgICAgICB8ICA4ICsrLQogc3JjL2JhY2tlbmQvcGFyc2Vy L2dyYW0ueSAgICAgICAgICAgICAgICAgfCA3MiArKysrKysrKysrKysrKysrKystLS0tLQogc3Jj L2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYyAgICAgICAgfCAzOSArKysrKysrKysrKysK IHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYyAgICAgICAgIHwgIDcgKysrCiBzcmMv YmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jICAgICAgICB8ICAxICsKIHNyYy9pbmNsdWRl L2FjY2Vzcy90dXBkZXNjLmggICAgICAgICAgICAgIHwgIDEgKwogc3JjL2luY2x1ZGUvY2F0YWxv Zy9oZWFwLmggICAgICAgICAgICAgICAgfCAgMSArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2Nv bnN0cmFpbnQuaCAgICAgICB8ICAyICsKIHNyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCAg ICAgICAgICAgIHwgIDMgKwogc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oICAgICAgICAgICAg ICAgfCAgMSArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvbnN0cmFpbnRzLm91dCB8IDIy ICsrKysrKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvbnN0cmFpbnRzLnNxbCAgICAgIHwgMTUg KysrKy0KIDIyIGZpbGVzIGNoYW5nZWQsIDI1MyBpbnNlcnRpb25zKCspLCA1MyBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvZGRsLnNnbWwgYi9kb2Mvc3JjL3NnbWwvZGRs LnNnbWwKaW5kZXggOGFiMGRkYjExMmYuLjg5MmE3NDM0NmNhIDEwMDY0NAotLS0gYS9kb2Mvc3Jj L3NnbWwvZGRsLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2RkbC5zZ21sCkBAIC01ODEsNyArNTgx LDEwIEBAIENSRUFURSBUQUJMRSBwcm9kdWN0cyAoCiAgICAgY29uc2lzdHMgb2YgdGhlIGtleSB3 b3JkIDxsaXRlcmFsPkNIRUNLPC9saXRlcmFsPiBmb2xsb3dlZCBieSBhbgogICAgIGV4cHJlc3Np b24gaW4gcGFyZW50aGVzZXMuICBUaGUgY2hlY2sgY29uc3RyYWludCBleHByZXNzaW9uIHNob3Vs ZAogICAgIGludm9sdmUgdGhlIGNvbHVtbiB0aHVzIGNvbnN0cmFpbmVkLCBvdGhlcndpc2UgdGhl IGNvbnN0cmFpbnQKLSAgICB3b3VsZCBub3QgbWFrZSB0b28gbXVjaCBzZW5zZS4KKyAgICB3b3Vs ZCBub3QgbWFrZSB0b28gbXVjaCBzZW5zZS4gVGhlIGNoZWNrIGNvbnN0cmFpbnQgZXhwcmVzc2lv biBjYW4gYmUKKyAgICBmb2xsb3dlZCBieSB0aGUgPGxpdGVyYWw+RU5GT1JDRUQ8L2xpdGVyYWw+ LCB3aGljaCBpcyB0aGUgZGVmYXVsdCwgb3IKKyAgICA8bGl0ZXJhbD5OT1QgRU5GT1JDRUQ8L2xp dGVyYWw+IGtleXdvcmQsIGRldGVybWluaW5nIHdoZXRoZXIgdGhlCisgICAgY29uc3RyYWludCBj aGVjayBpcyBwZXJmb3JtZWQgb3Igc2tpcHBlZCBhZnRlciBlYWNoIHN0YXRlbWVudC4KICAgIDwv cGFyYT4KIAogICAgPGluZGV4dGVybT4KQEAgLTcxNyw3ICs3MjAsOCBAQCBDUkVBVEUgVEFCTEUg cHJvZHVjdHMgKAogICAgICB0byBpbXBsZW1lbnQgdGhhdC4gIChUaGlzIGFwcHJvYWNoIGF2b2lk cyB0aGUgZHVtcC9yZXN0b3JlIHByb2JsZW0gYmVjYXVzZQogICAgICA8YXBwbGljYXRpb24+cGdf ZHVtcDwvYXBwbGljYXRpb24+IGRvZXMgbm90IHJlaW5zdGFsbCB0cmlnZ2VycyB1bnRpbCBhZnRl cgogICAgICByZXN0b3JpbmcgZGF0YSwgc28gdGhhdCB0aGUgY2hlY2sgd2lsbCBub3QgYmUgZW5m b3JjZWQgZHVyaW5nIGEKLSAgICAgZHVtcC9yZXN0b3JlLikKKyAgICAgZHVtcC9yZXN0b3JlLikg IFlvdSBjYW4gYWRkIHRoYXQgQ0hFQ0sgY29uc3RyYWludCB3aXRoIDxsaXRlcmFsPk5PVCBFTkZP UkNFRDwvbGl0ZXJhbD4sCisgICAgIGFsbG93aW5nIHRoZSB1bmRlcmx5aW5nIGNvbnN0cmFpbnQg cnVsZSB0byBiZSByZXByZXNlbnRlZCB3aXRob3V0IGJlaW5nIGVuZm9yY2VkLgogICAgIDwvcGFy YT4KICAgIDwvbm90ZT4KIApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl90YWJs ZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl90YWJsZS5zZ21sCmluZGV4IDM2NzcwYzAx MmE2Li4yNTdmODcxZDk5ZSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl90YWJs ZS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfdGFibGUuc2dtbApAQCAtNTgsNyAr NTgsNyBAQCBBTFRFUiBUQUJMRSBbIElGIEVYSVNUUyBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4KICAgICBBTFRFUiBbIENPTFVNTiBdIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFNFVCBDT01Q UkVTU0lPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29tcHJlc3Npb25fbWV0aG9k PC9yZXBsYWNlYWJsZT4KICAgICBBREQgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRh YmxlX2NvbnN0cmFpbnQ8L3JlcGxhY2VhYmxlPiBbIE5PVCBWQUxJRCBdCiAgICAgQUREIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9jb25zdHJhaW50X3VzaW5nX2luZGV4PC9y ZXBsYWNlYWJsZT4KLSAgICBBTFRFUiBDT05TVFJBSU5UIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5jb25zdHJhaW50X25hbWU8L3JlcGxhY2VhYmxlPiBbIERFRkVSUkFCTEUgfCBOT1Qg REVGRVJSQUJMRSBdIFsgSU5JVElBTExZIERFRkVSUkVEIHwgSU5JVElBTExZIElNTUVESUFURSBd CisgICAgQUxURVIgQ09OU1RSQUlOVCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29u c3RyYWludF9uYW1lPC9yZXBsYWNlYWJsZT4gWyBERUZFUlJBQkxFIHwgTk9UIERFRkVSUkFCTEUg XSBbIElOSVRJQUxMWSBERUZFUlJFRCB8IElOSVRJQUxMWSBJTU1FRElBVEUgXSBbIEVORk9SQ0VE IHwgTk9UIEVORk9SQ0VEIF0KICAgICBWQUxJREFURSBDT05TVFJBSU5UIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5jb25zdHJhaW50X25hbWU8L3JlcGxhY2VhYmxlPgogICAgIERST1Ag Q09OU1RSQUlOVCBbIElGIEVYSVNUUyBdICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ Y29uc3RyYWludF9uYW1lPC9yZXBsYWNlYWJsZT4gWyBSRVNUUklDVCB8IENBU0NBREUgXQogICAg IERJU0FCTEUgVFJJR0dFUiBbIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50cmlnZ2Vy X25hbWU8L3JlcGxhY2VhYmxlPiB8IEFMTCB8IFVTRVIgXQpAQCAtMTA4LDcgKzEwOCw3IEBAIFdJ VEggKCBNT0RVTFVTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVy YWw8L3JlcGxhY2VhYmxlPiwgUkVNCiAgIFBSSU1BUlkgS0VZIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5pbmRleF9wYXJhbWV0ZXJzPC9yZXBsYWNlYWJsZT4gfAogICBSRUZFUkVOQ0VT IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yZWZ0YWJsZTwvcmVwbGFjZWFibGU+IFsg KCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmY29sdW1uPC9yZXBsYWNlYWJsZT4g KSBdIFsgTUFUQ0ggRlVMTCB8IE1BVENIIFBBUlRJQUwgfCBNQVRDSCBTSU1QTEUgXQogICAgIFsg T04gREVMRVRFIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yZWZlcmVudGlhbF9hY3Rp b248L3JlcGxhY2VhYmxlPiBdIFsgT04gVVBEQVRFIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5yZWZlcmVudGlhbF9hY3Rpb248L3JlcGxhY2VhYmxlPiBdIH0KLVsgREVGRVJSQUJMRSB8 IE5PVCBERUZFUlJBQkxFIF0gWyBJTklUSUFMTFkgREVGRVJSRUQgfCBJTklUSUFMTFkgSU1NRURJ QVRFIF0KK1sgREVGRVJSQUJMRSB8IE5PVCBERUZFUlJBQkxFIF0gWyBJTklUSUFMTFkgREVGRVJS RUQgfCBJTklUSUFMTFkgSU1NRURJQVRFIF0gWyBFTkZPUkNFRCB8IE5PVCBFTkZPUkNFRCBdCiAK IDxwaHJhc2U+YW5kIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9jb25zdHJh aW50PC9yZXBsYWNlYWJsZT4gaXM6PC9waHJhc2U+CiAKQEAgLTExOSw3ICsxMTksNyBAQCBXSVRI ICggTU9EVUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtZXJpY19saXRlcmFs PC9yZXBsYWNlYWJsZT4sIFJFTQogICBFWENMVURFIFsgVVNJTkcgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPmluZGV4X21ldGhvZDwvcmVwbGFjZWFibGU+IF0gKCA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+ZXhjbHVkZV9lbGVtZW50PC9yZXBsYWNlYWJsZT4gV0lUSCA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b3BlcmF0b3I8L3JlcGxhY2VhYmxlPiBbLCAuLi4g XSApIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5pbmRleF9wYXJhbWV0ZXJzPC9yZXBs YWNlYWJsZT4gWyBXSEVSRSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wcmVkaWNh dGU8L3JlcGxhY2VhYmxlPiApIF0gfAogICBGT1JFSUdOIEtFWSAoIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLiBdICkgUkVGRVJF TkNFUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmdGFibGU8L3JlcGxhY2VhYmxl PiBbICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJlZmNvbHVtbjwvcmVwbGFjZWFi bGU+IFssIC4uLiBdICkgXQogICAgIFsgTUFUQ0ggRlVMTCB8IE1BVENIIFBBUlRJQUwgfCBNQVRD SCBTSU1QTEUgXSBbIE9OIERFTEVURSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVm ZXJlbnRpYWxfYWN0aW9uPC9yZXBsYWNlYWJsZT4gXSBbIE9OIFVQREFURSA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+cmVmZXJlbnRpYWxfYWN0aW9uPC9yZXBsYWNlYWJsZT4gXSB9Ci1b IERFRkVSUkFCTEUgfCBOT1QgREVGRVJSQUJMRSBdIFsgSU5JVElBTExZIERFRkVSUkVEIHwgSU5J VElBTExZIElNTUVESUFURSBdCitbIERFRkVSUkFCTEUgfCBOT1QgREVGRVJSQUJMRSBdIFsgSU5J VElBTExZIERFRkVSUkVEIHwgSU5JVElBTExZIElNTUVESUFURSBdIFsgRU5GT1JDRUQgfCBOT1Qg RU5GT1JDRUQgXQogCiA8cGhyYXNlPmFuZCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ dGFibGVfY29uc3RyYWludF91c2luZ19pbmRleDwvcmVwbGFjZWFibGU+IGlzOjwvcGhyYXNlPgog CkBAIC0xNDI3LDkgKzE0MjcsMTEgQEAgV0lUSCAoIE1PRFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPm51bWVyaWNfbGl0ZXJhbDwvcmVwbGFjZWFibGU+LCBSRU0KICAgIDwvcGFy YT4KIAogICAgPHBhcmE+Ci0gICAgQWRkaW5nIGEgPGxpdGVyYWw+Q0hFQ0s8L2xpdGVyYWw+IG9y IDxsaXRlcmFsPk5PVCBOVUxMPC9saXRlcmFsPiBjb25zdHJhaW50IHJlcXVpcmVzCi0gICAgc2Nh bm5pbmcgdGhlIHRhYmxlIHRvIHZlcmlmeSB0aGF0IGV4aXN0aW5nIHJvd3MgbWVldCB0aGUgY29u c3RyYWludCwKLSAgICBidXQgZG9lcyBub3QgcmVxdWlyZSBhIHRhYmxlIHJld3JpdGUuCisgICAg QWRkaW5nIGEgZW5mb3JjZWQgPGxpdGVyYWw+Q0hFQ0s8L2xpdGVyYWw+IG9yIDxsaXRlcmFsPk5P VCBOVUxMPC9saXRlcmFsPgorICAgIGNvbnN0cmFpbnQgcmVxdWlyZXMgc2Nhbm5pbmcgdGhlIHRh YmxlIHRvIHZlcmlmeSB0aGF0IGV4aXN0aW5nIHJvd3MgbWVldCB0aGUKKyAgICBjb25zdHJhaW50 LCBidXQgZG9lcyBub3QgcmVxdWlyZSBhIHRhYmxlIHJld3JpdGUuICBJZiBhIDxsaXRlcmFsPkNI RUNLPC9saXRlcmFsPgorICAgIGNvbnN0cmFpbnQgaXMgYWRkZWQgYXMgPGxpdGVyYWw+Tk9UIEVO Rk9SQ0VEPC9saXRlcmFsPiwgdGhlIHZhbGlkYXRpb24gd2lsbAorICAgIG5vdCBiZSBwZXJmb3Jt ZWQuCiAgICA8L3BhcmE+CiAKICAgIDxwYXJhPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3Jl Zi9jcmVhdGVfdGFibGUuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3RhYmxlLnNnbWwK aW5kZXggODM4NTliYWM3NmYuLjU1YjUxNjAyMTM2IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwv cmVmL2NyZWF0ZV90YWJsZS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3RhYmxl LnNnbWwKQEAgLTcxLDcgKzcxLDcgQEAgQ1JFQVRFIFsgWyBHTE9CQUwgfCBMT0NBTCBdIHsgVEVN UE9SQVJZIHwgVEVNUCB9IHwgVU5MT0dHRUQgXSBUQUJMRSBbIElGIE5PVCBFWEkKICAgUFJJTUFS WSBLRVkgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmluZGV4X3BhcmFtZXRlcnM8L3Jl cGxhY2VhYmxlPiB8CiAgIFJFRkVSRU5DRVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PnJlZnRhYmxlPC9yZXBsYWNlYWJsZT4gWyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5yZWZjb2x1bW48L3JlcGxhY2VhYmxlPiApIF0gWyBNQVRDSCBGVUxMIHwgTUFUQ0ggUEFSVElB TCB8IE1BVENIIFNJTVBMRSBdCiAgICAgWyBPTiBERUxFVEUgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnJlZmVyZW50aWFsX2FjdGlvbjwvcmVwbGFjZWFibGU+IF0gWyBPTiBVUERBVEUg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJlZmVyZW50aWFsX2FjdGlvbjwvcmVwbGFj ZWFibGU+IF0gfQotWyBERUZFUlJBQkxFIHwgTk9UIERFRkVSUkFCTEUgXSBbIElOSVRJQUxMWSBE RUZFUlJFRCB8IElOSVRJQUxMWSBJTU1FRElBVEUgXQorWyBERUZFUlJBQkxFIHwgTk9UIERFRkVS UkFCTEUgXSBbIElOSVRJQUxMWSBERUZFUlJFRCB8IElOSVRJQUxMWSBJTU1FRElBVEUgXSBbIEVO Rk9SQ0VEIHwgTk9UIEVORk9SQ0VEIF0KIAogPHBocmFzZT5hbmQgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnRhYmxlX2NvbnN0cmFpbnQ8L3JlcGxhY2VhYmxlPiBpczo8L3BocmFzZT4K IApAQCAtODMsNyArODMsNyBAQCBDUkVBVEUgWyBbIEdMT0JBTCB8IExPQ0FMIF0geyBURU1QT1JB UlkgfCBURU1QIH0gfCBVTkxPR0dFRCBdIFRBQkxFIFsgSUYgTk9UIEVYSQogICBGT1JFSUdOIEtF WSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFi bGU+IFssIC4uLiBdIFssIFBFUklPRCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29s dW1uX25hbWU8L3JlcGxhY2VhYmxlPiBdICkgUkVGRVJFTkNFUyA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+cmVmdGFibGU8L3JlcGxhY2VhYmxlPiBbICggPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnJlZmNvbHVtbjwvcmVwbGFjZWFibGU+IFssIC4uLiBdIFssIFBFUklPRCA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBd ICkgXQogICAgIFsgTUFUQ0ggRlVMTCB8IE1BVENIIFBBUlRJQUwgfCBNQVRDSCBTSU1QTEUgXSBb IE9OIERFTEVURSA8cmVwbGFjZWFibGUKIGNsYXNzPSJwYXJhbWV0ZXIiPnJlZmVyZW50aWFsX2Fj dGlvbjwvcmVwbGFjZWFibGU+IF0gWyBPTiBVUERBVEUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnJlZmVyZW50aWFsX2FjdGlvbjwvcmVwbGFjZWFibGU+IF0gfQotWyBERUZFUlJBQkxF IHwgTk9UIERFRkVSUkFCTEUgXSBbIElOSVRJQUxMWSBERUZFUlJFRCB8IElOSVRJQUxMWSBJTU1F RElBVEUgXQorWyBERUZFUlJBQkxFIHwgTk9UIERFRkVSUkFCTEUgXSBbIElOSVRJQUxMWSBERUZF UlJFRCB8IElOSVRJQUxMWSBJTU1FRElBVEUgXSBbIEVORk9SQ0VEIHwgTk9UIEVORk9SQ0VEIF0K IAogPHBocmFzZT5hbmQgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmxpa2Vfb3B0aW9u PC9yZXBsYWNlYWJsZT4gaXM6PC9waHJhc2U+CiAKQEAgLTEzNjIsNiArMTM2MiwyMCBAQCBXSVRI ICggTU9EVUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtZXJpY19saXRlcmFs PC9yZXBsYWNlYWJsZT4sIFJFTQogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4K IAorICAgPHZhcmxpc3RlbnRyeSBpZD0ic3FsLWNyZWF0ZXRhYmxlLXBhcm1zLWVuZm9yY2UiPgor ICAgIDx0ZXJtPjxsaXRlcmFsPkVORk9SQ0VEPC9saXRlcmFsPjwvdGVybT4KKyAgICA8dGVybT48 bGl0ZXJhbD5OT1QgRU5GT1JDRUQ8L2xpdGVyYWw+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAg ICAgPHBhcmE+CisgICAgICBUaGlzIGlzIGN1cnJlbnRseSBvbmx5IGFsbG93ZWQgZm9yIDxsaXRl cmFsPkNIRUNLPC9saXRlcmFsPiBjb25zdHJhaW50cy4KKyAgICAgIElmIHRoZSBjb25zdHJhaW50 IGlzIDxsaXRlcmFsPk5PVCBFTkZPUkNFRDwvbGl0ZXJhbD4sIHRoaXMgY2xhdXNlCisgICAgICBz cGVjaWZpZXMgdGhhdCB0aGUgY29uc3RyYWludCBjaGVjayB3aWxsIGJlIHNraXBwZWQuICBXaGVu IHRoZSBjb25zdHJhaW50CisgICAgICBpcyA8bGl0ZXJhbD5FTkZPUkNFRDwvbGl0ZXJhbD4sIGNo ZWNrIGlzIHBlcmZvcm1lZCBhZnRlciBlYWNoIHN0YXRlbWVudC4KKyAgICAgIFRoaXMgaXMgdGhl IGRlZmF1bHQuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50 cnk+CisKICAgIDx2YXJsaXN0ZW50cnkgaWQ9InNxbC1jcmVhdGV0YWJsZS1tZXRob2QiPgogICAg IDx0ZXJtPjxsaXRlcmFsPlVTSU5HIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5tZXRo b2Q8L3JlcGxhY2VhYmxlPjwvbGl0ZXJhbD48L3Rlcm0+CiAgICAgPGxpc3RpdGVtPgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi90dXBkZXNjLmMgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvY29tbW9uL3R1cGRlc2MuYwppbmRleCA0NzM3OWZlZjIyMC4uNDFkZDAwZTU1NDcgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vdHVwZGVzYy5jCisrKyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9jb21tb24vdHVwZGVzYy5jCkBAIC0yMjYsNiArMjI2LDcgQEAgQ3JlYXRl VHVwbGVEZXNjQ29weUNvbnN0cihUdXBsZURlc2MgdHVwZGVzYykKIAkJCQljcHktPmNoZWNrW2ld LmNjYmluID0gcHN0cmR1cChjb25zdHItPmNoZWNrW2ldLmNjYmluKTsKIAkJCQljcHktPmNoZWNr W2ldLmNjdmFsaWQgPSBjb25zdHItPmNoZWNrW2ldLmNjdmFsaWQ7CiAJCQkJY3B5LT5jaGVja1tp XS5jY25vaW5oZXJpdCA9IGNvbnN0ci0+Y2hlY2tbaV0uY2Nub2luaGVyaXQ7CisJCQkJY3B5LT5j aGVja1tpXS5jY2VuZm9yY2VkID0gY29uc3RyLT5jaGVja1tpXS5jY2VuZm9yY2VkOwogCQkJfQog CQl9CiAKQEAgLTU0OCw3ICs1NDksOCBAQCBlcXVhbFR1cGxlRGVzY3MoVHVwbGVEZXNjIHR1cGRl c2MxLCBUdXBsZURlc2MgdHVwZGVzYzIpCiAJCQlpZiAoIShzdHJjbXAoY2hlY2sxLT5jY25hbWUs IGNoZWNrMi0+Y2NuYW1lKSA9PSAwICYmCiAJCQkJICBzdHJjbXAoY2hlY2sxLT5jY2JpbiwgY2hl Y2syLT5jY2JpbikgPT0gMCAmJgogCQkJCSAgY2hlY2sxLT5jY3ZhbGlkID09IGNoZWNrMi0+Y2N2 YWxpZCAmJgotCQkJCSAgY2hlY2sxLT5jY25vaW5oZXJpdCA9PSBjaGVjazItPmNjbm9pbmhlcml0 KSkKKwkJCQkgIGNoZWNrMS0+Y2Nub2luaGVyaXQgPT0gY2hlY2syLT5jY25vaW5oZXJpdCAmJgor CQkJCSAgY2hlY2sxLT5jY2VuZm9yY2VkID09IGNoZWNrMi0+Y2NlbmZvcmNlZCkpCiAJCQkJcmV0 dXJuIGZhbHNlOwogCQl9CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFw LmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2hlYXAuYwppbmRleCA3OGU1OTM4NGQxYy4uN2FhOGNi ODA1NWEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaGVhcC5jCisrKyBiL3NyYy9i YWNrZW5kL2NhdGFsb2cvaGVhcC5jCkBAIC0xMDMsNyArMTAzLDggQEAgc3RhdGljIE9iamVjdEFk ZHJlc3MgQWRkTmV3UmVsYXRpb25UeXBlKGNvbnN0IGNoYXIgKnR5cGVOYW1lLAogc3RhdGljIHZv aWQgUmVsYXRpb25SZW1vdmVJbmhlcml0YW5jZShPaWQgcmVsaWQpOwogc3RhdGljIE9pZAlTdG9y ZVJlbENoZWNrKFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqY2NuYW1lLCBOb2RlICpleHByLAog CQkJCQkJICBib29sIGlzX3ZhbGlkYXRlZCwgYm9vbCBpc19sb2NhbCwgaW50IGluaGNvdW50LAot CQkJCQkJICBib29sIGlzX25vX2luaGVyaXQsIGJvb2wgaXNfaW50ZXJuYWwpOworCQkJCQkJICBi b29sIGlzX25vX2luaGVyaXQsIGJvb2wgaXNfZW5mb3JjZWQsCisJCQkJCQkgIGJvb2wgaXNfaW50 ZXJuYWwpOwogc3RhdGljIHZvaWQgU3RvcmVDb25zdHJhaW50cyhSZWxhdGlvbiByZWwsIExpc3Qg KmNvb2tlZF9jb25zdHJhaW50cywKIAkJCQkJCQkgYm9vbCBpc19pbnRlcm5hbCk7CiBzdGF0aWMg Ym9vbCBNZXJnZVdpdGhFeGlzdGluZ0NvbnN0cmFpbnQoUmVsYXRpb24gcmVsLCBjb25zdCBjaGFy ICpjY25hbWUsIE5vZGUgKmV4cHIsCkBAIC0yMDczLDcgKzIwNzQsNyBAQCBTZXRBdHRyTWlzc2lu ZyhPaWQgcmVsaWQsIGNoYXIgKmF0dG5hbWUsIGNoYXIgKnZhbHVlKQogc3RhdGljIE9pZAogU3Rv cmVSZWxDaGVjayhSZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIgKmNjbmFtZSwgTm9kZSAqZXhwciwK IAkJCSAgYm9vbCBpc192YWxpZGF0ZWQsIGJvb2wgaXNfbG9jYWwsIGludCBpbmhjb3VudCwKLQkJ CSAgYm9vbCBpc19ub19pbmhlcml0LCBib29sIGlzX2ludGVybmFsKQorCQkJICBib29sIGlzX25v X2luaGVyaXQsIGJvb2wgaXNfZW5mb3JjZWQsIGJvb2wgaXNfaW50ZXJuYWwpCiB7CiAJY2hhcgkg ICAqY2NiaW47CiAJTGlzdAkgICAqdmFyTGlzdDsKQEAgLTIxMzksNiArMjE0MCw3IEBAIFN0b3Jl UmVsQ2hlY2soUmVsYXRpb24gcmVsLCBjb25zdCBjaGFyICpjY25hbWUsIE5vZGUgKmV4cHIsCiAJ CQkJCQkJICBmYWxzZSwJLyogSXMgRGVmZXJyYWJsZSAqLwogCQkJCQkJCSAgZmFsc2UsCS8qIElz IERlZmVycmVkICovCiAJCQkJCQkJICBpc192YWxpZGF0ZWQsCisJCQkJCQkJICBpc19lbmZvcmNl ZCwJLyogSXMgZW5mb3JjZWQgKi8KIAkJCQkJCQkgIEludmFsaWRPaWQsCS8qIG5vIHBhcmVudCBj b25zdHJhaW50ICovCiAJCQkJCQkJICBSZWxhdGlvbkdldFJlbGlkKHJlbCksCS8qIHJlbGF0aW9u ICovCiAJCQkJCQkJICBhdHROb3MsCS8qIGF0dHJzIGluIHRoZSBjb25zdHJhaW50ICovCkBAIC0y MjEyLDcgKzIyMTQsNyBAQCBTdG9yZUNvbnN0cmFpbnRzKFJlbGF0aW9uIHJlbCwgTGlzdCAqY29v a2VkX2NvbnN0cmFpbnRzLCBib29sIGlzX2ludGVybmFsKQogCQkJCQlTdG9yZVJlbENoZWNrKHJl bCwgY29uLT5uYW1lLCBjb24tPmV4cHIsCiAJCQkJCQkJCSAgIWNvbi0+c2tpcF92YWxpZGF0aW9u LCBjb24tPmlzX2xvY2FsLAogCQkJCQkJCQkgIGNvbi0+aW5oY291bnQsIGNvbi0+aXNfbm9faW5o ZXJpdCwKLQkJCQkJCQkJICBpc19pbnRlcm5hbCk7CisJCQkJCQkJCSAgY29uLT5pc19lbmZvcmNl ZCwgaXNfaW50ZXJuYWwpOwogCQkJCW51bWNoZWNrcysrOwogCQkJCWJyZWFrOwogCQkJZGVmYXVs dDoKQEAgLTIzNDUsNiArMjM0Nyw3IEBAIEFkZFJlbGF0aW9uTmV3Q29uc3RyYWludHMoUmVsYXRp b24gcmVsLAogCQljb29rZWQtPmF0dG51bSA9IGNvbERlZi0+YXR0bnVtOwogCQljb29rZWQtPmV4 cHIgPSBleHByOwogCQljb29rZWQtPnNraXBfdmFsaWRhdGlvbiA9IGZhbHNlOworCQljb29rZWQt PmlzX2VuZm9yY2VkID0gdHJ1ZTsKIAkJY29va2VkLT5pc19sb2NhbCA9IGlzX2xvY2FsOwogCQlj b29rZWQtPmluaGNvdW50ID0gaXNfbG9jYWwgPyAwIDogMTsKIAkJY29va2VkLT5pc19ub19pbmhl cml0ID0gZmFsc2U7CkBAIC0yNDYzLDcgKzI0NjYsOCBAQCBBZGRSZWxhdGlvbk5ld0NvbnN0cmFp bnRzKFJlbGF0aW9uIHJlbCwKIAkJCSAqLwogCQkJY29uc3RyT2lkID0KIAkJCQlTdG9yZVJlbENo ZWNrKHJlbCwgY2NuYW1lLCBleHByLCBjZGVmLT5pbml0aWFsbHlfdmFsaWQsIGlzX2xvY2FsLAot CQkJCQkJCSAgaXNfbG9jYWwgPyAwIDogMSwgY2RlZi0+aXNfbm9faW5oZXJpdCwgaXNfaW50ZXJu YWwpOworCQkJCQkJCSAgaXNfbG9jYWwgPyAwIDogMSwgY2RlZi0+aXNfbm9faW5oZXJpdCwKKwkJ CQkJCQkgIGNkZWYtPmlzX2VuZm9yY2VkLCBpc19pbnRlcm5hbCk7CiAKIAkJCW51bWNoZWNrcysr OwogCkBAIC0yNDc0LDYgKzI0NzgsNyBAQCBBZGRSZWxhdGlvbk5ld0NvbnN0cmFpbnRzKFJlbGF0 aW9uIHJlbCwKIAkJCWNvb2tlZC0+YXR0bnVtID0gMDsKIAkJCWNvb2tlZC0+ZXhwciA9IGV4cHI7 CiAJCQljb29rZWQtPnNraXBfdmFsaWRhdGlvbiA9IGNkZWYtPnNraXBfdmFsaWRhdGlvbjsKKwkJ CWNvb2tlZC0+aXNfZW5mb3JjZWQgPSBjZGVmLT5pc19lbmZvcmNlZDsKIAkJCWNvb2tlZC0+aXNf bG9jYWwgPSBpc19sb2NhbDsKIAkJCWNvb2tlZC0+aW5oY291bnQgPSBpc19sb2NhbCA/IDAgOiAx OwogCQkJY29va2VkLT5pc19ub19pbmhlcml0ID0gY2RlZi0+aXNfbm9faW5oZXJpdDsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cv aW5kZXguYwppbmRleCA2MDg0ZGZhOTdjYi4uZWRlZjIxZTg4YWIgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2NhdGFsb2cvaW5kZXguYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMK QEAgLTE5NTgsNiArMTk1OCw3IEBAIGluZGV4X2NvbnN0cmFpbnRfY3JlYXRlKFJlbGF0aW9uIGhl YXBSZWxhdGlvbiwKIAkJCQkJCQkJICAgZGVmZXJyYWJsZSwKIAkJCQkJCQkJICAgaW5pdGRlZmVy cmVkLAogCQkJCQkJCQkgICB0cnVlLAorCQkJCQkJCQkgICB0cnVlLAkvKiBJcyBlbmZvcmNlZCAq LwogCQkJCQkJCQkgICBwYXJlbnRDb25zdHJhaW50SWQsCiAJCQkJCQkJCSAgIFJlbGF0aW9uR2V0 UmVsaWQoaGVhcFJlbGF0aW9uKSwKIAkJCQkJCQkJICAgaW5kZXhJbmZvLT5paV9JbmRleEF0dHJO dW1iZXJzLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19jb25zdHJhaW50LmMg Yi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX2NvbnN0cmFpbnQuYwppbmRleCAxZTJkZjAzMWE4NC4u MTQ0NjhiMmI3ZDAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfY29uc3RyYWlu dC5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfY29uc3RyYWludC5jCkBAIC01Miw2ICs1 Miw3IEBAIENyZWF0ZUNvbnN0cmFpbnRFbnRyeShjb25zdCBjaGFyICpjb25zdHJhaW50TmFtZSwK IAkJCQkJICBib29sIGlzRGVmZXJyYWJsZSwKIAkJCQkJICBib29sIGlzRGVmZXJyZWQsCiAJCQkJ CSAgYm9vbCBpc1ZhbGlkYXRlZCwKKwkJCQkJICBib29sIGlzRW5mb3JjZWQsCiAJCQkJCSAgT2lk IHBhcmVudENvbnN0cklkLAogCQkJCQkgIE9pZCByZWxJZCwKIAkJCQkJICBjb25zdCBpbnQxNiAq Y29uc3RyYWludEtleSwKQEAgLTk3LDYgKzk4LDkgQEAgQ3JlYXRlQ29uc3RyYWludEVudHJ5KGNv bnN0IGNoYXIgKmNvbnN0cmFpbnROYW1lLAogCU9iamVjdEFkZHJlc3NlcyAqYWRkcnNfYXV0bzsK IAlPYmplY3RBZGRyZXNzZXMgKmFkZHJzX25vcm1hbDsKIAorCS8qIE9ubHkgQ0hFQ0sgY29uc3Ry YWludCBjYW4gYmUgbm90IGVuZm9yY2VkICovCisJQXNzZXJ0KGlzRW5mb3JjZWQgfHwgY29uc3Ry YWludFR5cGUgPT0gQ09OU1RSQUlOVF9DSEVDSyk7CisKIAljb25EZXNjID0gdGFibGVfb3BlbihD b25zdHJhaW50UmVsYXRpb25JZCwgUm93RXhjbHVzaXZlTG9jayk7CiAKIAlBc3NlcnQoY29uc3Ry YWludE5hbWUpOwpAQCAtMTgxLDYgKzE4NSw3IEBAIENyZWF0ZUNvbnN0cmFpbnRFbnRyeShjb25z dCBjaGFyICpjb25zdHJhaW50TmFtZSwKIAl2YWx1ZXNbQW51bV9wZ19jb25zdHJhaW50X2NvbmRl ZmVycmFibGUgLSAxXSA9IEJvb2xHZXREYXR1bShpc0RlZmVycmFibGUpOwogCXZhbHVlc1tBbnVt X3BnX2NvbnN0cmFpbnRfY29uZGVmZXJyZWQgLSAxXSA9IEJvb2xHZXREYXR1bShpc0RlZmVycmVk KTsKIAl2YWx1ZXNbQW51bV9wZ19jb25zdHJhaW50X2NvbnZhbGlkYXRlZCAtIDFdID0gQm9vbEdl dERhdHVtKGlzVmFsaWRhdGVkKTsKKwl2YWx1ZXNbQW51bV9wZ19jb25zdHJhaW50X2NvbmVuZm9y Y2VkIC0gMV0gPSBCb29sR2V0RGF0dW0oaXNFbmZvcmNlZCk7CiAJdmFsdWVzW0FudW1fcGdfY29u c3RyYWludF9jb25yZWxpZCAtIDFdID0gT2JqZWN0SWRHZXREYXR1bShyZWxJZCk7CiAJdmFsdWVz W0FudW1fcGdfY29uc3RyYWludF9jb250eXBpZCAtIDFdID0gT2JqZWN0SWRHZXREYXR1bShkb21h aW5JZCk7CiAJdmFsdWVzW0FudW1fcGdfY29uc3RyYWludF9jb25pbmRpZCAtIDFdID0gT2JqZWN0 SWRHZXREYXR1bShpbmRleFJlbElkKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L3RhYmxlY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKaW5kZXggYWY4 YzA1YjkxZjEuLjZmNzEyM2U1ZjcxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90 YWJsZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwpAQCAtMzYz LDcgKzM2Myw3IEBAIHN0YXRpYyB2b2lkIFJhbmdlVmFyQ2FsbGJhY2tGb3JUcnVuY2F0ZShjb25z dCBSYW5nZVZhciAqcmVsYXRpb24sCiAJCQkJCQkJCQkJT2lkIHJlbElkLCBPaWQgb2xkUmVsSWQs IHZvaWQgKmFyZyk7CiBzdGF0aWMgTGlzdCAqTWVyZ2VBdHRyaWJ1dGVzKExpc3QgKmNvbHVtbnMs IGNvbnN0IExpc3QgKnN1cGVycywgY2hhciByZWxwZXJzaXN0ZW5jZSwKIAkJCQkJCQkgYm9vbCBp c19wYXJ0aXRpb24sIExpc3QgKipzdXBjb25zdHIpOwotc3RhdGljIExpc3QgKk1lcmdlQ2hlY2tD b25zdHJhaW50KExpc3QgKmNvbnN0cmFpbnRzLCBjb25zdCBjaGFyICpuYW1lLCBOb2RlICpleHBy KTsKK3N0YXRpYyBMaXN0ICpNZXJnZUNoZWNrQ29uc3RyYWludChMaXN0ICpjb25zdHJhaW50cywg Y29uc3QgY2hhciAqbmFtZSwgTm9kZSAqZXhwciwgYm9vbCBpc19lbmZvcmNlZCk7CiBzdGF0aWMg dm9pZCBNZXJnZUNoaWxkQXR0cmlidXRlKExpc3QgKmluaF9jb2x1bW5zLCBpbnQgZXhpc3RfYXR0 bm8sIGludCBuZXdjb2xfYXR0bm8sIGNvbnN0IENvbHVtbkRlZiAqbmV3ZGVmKTsKIHN0YXRpYyBD b2x1bW5EZWYgKk1lcmdlSW5oZXJpdGVkQXR0cmlidXRlKExpc3QgKmluaF9jb2x1bW5zLCBpbnQg ZXhpc3RfYXR0bm8sIGNvbnN0IENvbHVtbkRlZiAqbmV3ZGVmKTsKIHN0YXRpYyB2b2lkIE1lcmdl QXR0cmlidXRlc0ludG9FeGlzdGluZyhSZWxhdGlvbiBjaGlsZF9yZWwsIFJlbGF0aW9uIHBhcmVu dF9yZWwsIGJvb2wgaXNwYXJ0aXRpb24pOwpAQCAtOTQ2LDYgKzk0Niw3IEBAIERlZmluZVJlbGF0 aW9uKENyZWF0ZVN0bXQgKnN0bXQsIGNoYXIgcmVsa2luZCwgT2lkIG93bmVySWQsCiAJCQljb29r ZWQtPmF0dG51bSA9IGF0dG51bTsKIAkJCWNvb2tlZC0+ZXhwciA9IGNvbERlZi0+Y29va2VkX2Rl ZmF1bHQ7CiAJCQljb29rZWQtPnNraXBfdmFsaWRhdGlvbiA9IGZhbHNlOworCQkJY29va2VkLT5p c19lbmZvcmNlZCA9IHRydWU7CiAJCQljb29rZWQtPmlzX2xvY2FsID0gdHJ1ZTsJLyogbm90IHVz ZWQgZm9yIGRlZmF1bHRzICovCiAJCQljb29rZWQtPmluaGNvdW50ID0gMDsJLyogZGl0dG8gKi8K IAkJCWNvb2tlZC0+aXNfbm9faW5oZXJpdCA9IGZhbHNlOwpAQCAtMjgyNCw3ICsyODI1LDggQEAg TWVyZ2VBdHRyaWJ1dGVzKExpc3QgKmNvbHVtbnMsIGNvbnN0IExpc3QgKnN1cGVycywgY2hhciBy ZWxwZXJzaXN0ZW5jZSwKIAkJCQkJCQkJCSAgIG5hbWUsCiAJCQkJCQkJCQkgICBSZWxhdGlvbkdl dFJlbGF0aW9uTmFtZShyZWxhdGlvbikpKSk7CiAKLQkJCQljb25zdHJhaW50cyA9IE1lcmdlQ2hl Y2tDb25zdHJhaW50KGNvbnN0cmFpbnRzLCBuYW1lLCBleHByKTsKKwkJCQljb25zdHJhaW50cyA9 IE1lcmdlQ2hlY2tDb25zdHJhaW50KGNvbnN0cmFpbnRzLCBuYW1lLCBleHByLAorCQkJCQkJCQkJ CQkJICAgY2hlY2tbaV0uY2NlbmZvcmNlZCk7CiAJCQl9CiAJCX0KIApAQCAtMzAyNiw3ICszMDI4 LDcgQEAgTWVyZ2VBdHRyaWJ1dGVzKExpc3QgKmNvbHVtbnMsIGNvbnN0IExpc3QgKnN1cGVycywg Y2hhciByZWxwZXJzaXN0ZW5jZSwKICAqIHRoZSBsaXN0LgogICovCiBzdGF0aWMgTGlzdCAqCi1N ZXJnZUNoZWNrQ29uc3RyYWludChMaXN0ICpjb25zdHJhaW50cywgY29uc3QgY2hhciAqbmFtZSwg Tm9kZSAqZXhwcikKK01lcmdlQ2hlY2tDb25zdHJhaW50KExpc3QgKmNvbnN0cmFpbnRzLCBjb25z dCBjaGFyICpuYW1lLCBOb2RlICpleHByLCBib29sIGlzX2VuZm9yY2VkKQogewogCUxpc3RDZWxs ICAgKmxjOwogCUNvb2tlZENvbnN0cmFpbnQgKm5ld2NvbjsKQEAgLTMwNjcsNiArMzA2OSw3IEBA IE1lcmdlQ2hlY2tDb25zdHJhaW50KExpc3QgKmNvbnN0cmFpbnRzLCBjb25zdCBjaGFyICpuYW1l LCBOb2RlICpleHByKQogCW5ld2Nvbi0+bmFtZSA9IHBzdHJkdXAobmFtZSk7CiAJbmV3Y29uLT5l eHByID0gZXhwcjsKIAluZXdjb24tPmluaGNvdW50ID0gMTsKKwluZXdjb24tPmlzX2VuZm9yY2Vk ID0gaXNfZW5mb3JjZWQ7CiAJcmV0dXJuIGxhcHBlbmQoY29uc3RyYWludHMsIG5ld2Nvbik7CiB9 CiAKQEAgLTk0NjMsNiArOTQ2Niw5IEBAIEFUQWRkQ2hlY2tDb25zdHJhaW50KExpc3QgKip3cXVl dWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLAogCXsKIAkJQ29va2VkQ29u c3RyYWludCAqY2NvbiA9IChDb29rZWRDb25zdHJhaW50ICopIGxmaXJzdChsY29uKTsKIAorCQkv KiBPbmx5IENIRUNLIGNvbnN0cmFpbnQgY2FuIGJlIG5vdCBlbmZvcmNlZCAqLworCQlBc3NlcnQo Y2Nvbi0+aXNfZW5mb3JjZWQgfHwgY2Nvbi0+Y29udHlwZSA9PSBDT05TVFJBSU5UX0NIRUNLKTsK KwogCQlpZiAoIWNjb24tPnNraXBfdmFsaWRhdGlvbikKIAkJewogCQkJTmV3Q29uc3RyYWludCAq bmV3Y29uOwpAQCAtMTAyMjYsNiArMTAyMzIsNyBAQCBhZGRGa1JlY3Vyc2VSZWZlcmVuY2VkKExp c3QgKip3cXVldWUsIENvbnN0cmFpbnQgKmZrY29uc3RyYWludCwgUmVsYXRpb24gcmVsLAogCQkJ CQkJCQkJICBma2NvbnN0cmFpbnQtPmRlZmVycmFibGUsCiAJCQkJCQkJCQkgIGZrY29uc3RyYWlu dC0+aW5pdGRlZmVycmVkLAogCQkJCQkJCQkJICBma2NvbnN0cmFpbnQtPmluaXRpYWxseV92YWxp ZCwKKwkJCQkJCQkJCSAgdHJ1ZSwJLyogSXMgZW5mb3JjZWQgKi8KIAkJCQkJCQkJCSAgcGFyZW50 Q29uc3RyLAogCQkJCQkJCQkJICBSZWxhdGlvbkdldFJlbGlkKHJlbCksCiAJCQkJCQkJCQkgIGZr YXR0bnVtLApAQCAtMTA1MjgsNiArMTA1MzUsNyBAQCBhZGRGa1JlY3Vyc2VSZWZlcmVuY2luZyhM aXN0ICoqd3F1ZXVlLCBDb25zdHJhaW50ICpma2NvbnN0cmFpbnQsIFJlbGF0aW9uIHJlbCwKIAkJ CQkJCQkJCSAgZmtjb25zdHJhaW50LT5kZWZlcnJhYmxlLAogCQkJCQkJCQkJICBma2NvbnN0cmFp bnQtPmluaXRkZWZlcnJlZCwKIAkJCQkJCQkJCSAgZmtjb25zdHJhaW50LT5pbml0aWFsbHlfdmFs aWQsCisJCQkJCQkJCQkgIHRydWUsCS8qIElzIGVuZm9yY2VkICovCiAJCQkJCQkJCQkgIHBhcmVu dENvbnN0ciwKIAkJCQkJCQkJCSAgcGFydGl0aW9uSWQsCiAJCQkJCQkJCQkgIG1hcHBlZF9ma2F0 dG51bSwKQEAgLTExMDU1LDYgKzExMDYzLDcgQEAgQ2xvbmVGa1JlZmVyZW5jaW5nKExpc3QgKip3 cXVldWUsIFJlbGF0aW9uIHBhcmVudFJlbCwgUmVsYXRpb24gcGFydFJlbCkKIAkJCQkJCQkJICBm a2NvbnN0cmFpbnQtPmRlZmVycmFibGUsCiAJCQkJCQkJCSAgZmtjb25zdHJhaW50LT5pbml0ZGVm ZXJyZWQsCiAJCQkJCQkJCSAgY29uc3RyRm9ybS0+Y29udmFsaWRhdGVkLAorCQkJCQkJCQkgIHRy dWUsCS8qIElzIGVuZm9yY2VkICovCiAJCQkJCQkJCSAgcGFyZW50Q29uc3RyT2lkLAogCQkJCQkJ CQkgIFJlbGF0aW9uR2V0UmVsaWQocGFydFJlbCksCiAJCQkJCQkJCSAgbWFwcGVkX2NvbmtleSwK QEAgLTExODIxLDIyICsxMTgzMCwyOSBAQCBBVEV4ZWNWYWxpZGF0ZUNvbnN0cmFpbnQoTGlzdCAq KndxdWV1ZSwgUmVsYXRpb24gcmVsLCBjaGFyICpjb25zdHJOYW1lLAogCQkJCXRhYmxlX2Nsb3Nl KGNoaWxkcmVsLCBOb0xvY2spOwogCQkJfQogCi0JCQkvKiBRdWV1ZSB2YWxpZGF0aW9uIGZvciBw aGFzZSAzICovCi0JCQluZXdjb24gPSAoTmV3Q29uc3RyYWludCAqKSBwYWxsb2MwKHNpemVvZihO ZXdDb25zdHJhaW50KSk7Ci0JCQluZXdjb24tPm5hbWUgPSBjb25zdHJOYW1lOwotCQkJbmV3Y29u LT5jb250eXBlID0gQ09OU1RSX0NIRUNLOwotCQkJbmV3Y29uLT5yZWZyZWxpZCA9IEludmFsaWRP aWQ7Ci0JCQluZXdjb24tPnJlZmluZGlkID0gSW52YWxpZE9pZDsKLQkJCW5ld2Nvbi0+Y29uaWQg PSBjb24tPm9pZDsKKwkJCS8qCisJCQkgKiBRdWV1ZSB2YWxpZGF0aW9uIGZvciBwaGFzZSAzIG9u bHkgaWYgY29uc3RyYWludCBpcyBlbmZvcmNlZDsKKwkJCSAqIG90aGVyd2lzZSwgYWRkaW5nIGl0 IHRvIHRoZSB2YWxpZGF0aW9uIHF1ZXVlIHdvbid0IGJlIHZlcnkKKwkJCSAqIGVmZmVjdGl2ZSwg YXMgdGhlIHZlcmlmaWNhdGlvbiB3aWxsIGJlIHNraXBwZWQuCisJCQkgKi8KKwkJCWlmIChjb24t PmNvbmVuZm9yY2VkKQorCQkJeworCQkJCW5ld2NvbiA9IChOZXdDb25zdHJhaW50ICopIHBhbGxv YzAoc2l6ZW9mKE5ld0NvbnN0cmFpbnQpKTsKKwkJCQluZXdjb24tPm5hbWUgPSBjb25zdHJOYW1l OworCQkJCW5ld2Nvbi0+Y29udHlwZSA9IENPTlNUUl9DSEVDSzsKKwkJCQluZXdjb24tPnJlZnJl bGlkID0gSW52YWxpZE9pZDsKKwkJCQluZXdjb24tPnJlZmluZGlkID0gSW52YWxpZE9pZDsKKwkJ CQluZXdjb24tPmNvbmlkID0gY29uLT5vaWQ7CiAKLQkJCXZhbCA9IFN5c0NhY2hlR2V0QXR0ck5v dE51bGwoQ09OU1RST0lELCB0dXBsZSwKLQkJCQkJCQkJCQkgQW51bV9wZ19jb25zdHJhaW50X2Nv bmJpbik7Ci0JCQljb25iaW4gPSBUZXh0RGF0dW1HZXRDU3RyaW5nKHZhbCk7Ci0JCQluZXdjb24t PnF1YWwgPSAoTm9kZSAqKSBzdHJpbmdUb05vZGUoY29uYmluKTsKKwkJCQl2YWwgPSBTeXNDYWNo ZUdldEF0dHJOb3ROdWxsKENPTlNUUk9JRCwgdHVwbGUsCisJCQkJCQkJCQkJCSBBbnVtX3BnX2Nv bnN0cmFpbnRfY29uYmluKTsKKwkJCQljb25iaW4gPSBUZXh0RGF0dW1HZXRDU3RyaW5nKHZhbCk7 CisJCQkJbmV3Y29uLT5xdWFsID0gKE5vZGUgKikgc3RyaW5nVG9Ob2RlKGNvbmJpbik7CiAKLQkJ CS8qIEZpbmQgb3IgY3JlYXRlIHdvcmsgcXVldWUgZW50cnkgZm9yIHRoaXMgdGFibGUgKi8KLQkJ CXRhYiA9IEFUR2V0UXVldWVFbnRyeSh3cXVldWUsIHJlbCk7Ci0JCQl0YWItPmNvbnN0cmFpbnRz ID0gbGFwcGVuZCh0YWItPmNvbnN0cmFpbnRzLCBuZXdjb24pOworCQkJCS8qIEZpbmQgb3IgY3Jl YXRlIHdvcmsgcXVldWUgZW50cnkgZm9yIHRoaXMgdGFibGUgKi8KKwkJCQl0YWIgPSBBVEdldFF1 ZXVlRW50cnkod3F1ZXVlLCByZWwpOworCQkJCXRhYi0+Y29uc3RyYWludHMgPSBsYXBwZW5kKHRh Yi0+Y29uc3RyYWludHMsIG5ld2Nvbik7CisJCQl9CiAKIAkJCS8qCiAJCQkgKiBJbnZhbGlkYXRl IHJlbGNhY2hlIHNvIHRoYXQgb3RoZXJzIHNlZSB0aGUgbmV3IHZhbGlkYXRlZApAQCAtMTE4NDYs NyArMTE4NjIsOSBAQCBBVEV4ZWNWYWxpZGF0ZUNvbnN0cmFpbnQoTGlzdCAqKndxdWV1ZSwgUmVs YXRpb24gcmVsLCBjaGFyICpjb25zdHJOYW1lLAogCQl9CiAKIAkJLyoKLQkJICogTm93IHVwZGF0 ZSB0aGUgY2F0YWxvZywgd2hpbGUgd2UgaGF2ZSB0aGUgZG9vciBvcGVuLgorCQkgKiBOb3cgdXBk YXRlIHRoZSBjYXRhbG9nIHJlZ2FyZGxlc3Mgb2YgZW5mb3JjZW1lbnQ7IHRoZSB2YWxpZGF0ZWQK KwkJICogZmxhZyB3aWxsIG5vdCB0YWtlIGVmZmVjdCB1bnRpbCB0aGUgY29uc3RyYWludCBpcyBt YXJrZWQgYXMKKwkJICogZW5mb3JjZWQuCiAJCSAqLwogCQljb3B5VHVwbGUgPSBoZWFwX2NvcHl0 dXBsZSh0dXBsZSk7CiAJCWNvcHlfY29uID0gKEZvcm1fcGdfY29uc3RyYWludCkgR0VUU1RSVUNU KGNvcHlUdXBsZSk7CkBAIC0xNTg1MSw2ICsxNTg2OSw3IEBAIGNvbnN0cmFpbnRzX2VxdWl2YWxl bnQoSGVhcFR1cGxlIGEsIEhlYXBUdXBsZSBiLCBUdXBsZURlc2MgdHVwbGVEZXNjKQogCiAJaWYg KGFjb24tPmNvbmRlZmVycmFibGUgIT0gYmNvbi0+Y29uZGVmZXJyYWJsZSB8fAogCQlhY29uLT5j b25kZWZlcnJlZCAhPSBiY29uLT5jb25kZWZlcnJlZCB8fAorCQlhY29uLT5jb25lbmZvcmNlZCAh PSBiY29uLT5jb25lbmZvcmNlZCB8fAogCQlzdHJjbXAoZGVjb21waWxlX2NvbmJpbihhLCB0dXBs ZURlc2MpLAogCQkJICAgZGVjb21waWxlX2NvbmJpbihiLCB0dXBsZURlc2MpKSAhPSAwKQogCQly ZXR1cm4gZmFsc2U7CkBAIC0xOTYxMCw2ICsxOTYyOSw3IEBAIERldGFjaEFkZENvbnN0cmFpbnRJ Zk5lZWRlZChMaXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiBwYXJ0UmVsKQogCQluLT5jb29rZWRfZXhw ciA9IG5vZGVUb1N0cmluZyhtYWtlX2FuZHNfZXhwbGljaXQoY29uc3RyYWludEV4cHIpKTsKIAkJ bi0+aW5pdGlhbGx5X3ZhbGlkID0gdHJ1ZTsKIAkJbi0+c2tpcF92YWxpZGF0aW9uID0gdHJ1ZTsK KwkJbi0+aXNfZW5mb3JjZWQgPSB0cnVlOwogCQkvKiBJdCdzIGEgcmUtYWRkLCBzaW5jZSBpdCBu b21pbmFsbHkgYWxyZWFkeSBleGlzdHMgKi8KIAkJQVRBZGRDaGVja0NvbnN0cmFpbnQod3F1ZXVl LCB0YWIsIHBhcnRSZWwsIG4sCiAJCQkJCQkJIHRydWUsIGZhbHNlLCB0cnVlLCBTaGFyZVVwZGF0 ZUV4Y2x1c2l2ZUxvY2spOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dl ci5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dlci5jCmluZGV4IDM2NzFlODI1MzVlLi5i Y2UwMjNlNTMyOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dlci5jCisr KyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIuYwpAQCAtODEwLDYgKzgxMCw3IEBAIENy ZWF0ZVRyaWdnZXJGaXJpbmdPbihDcmVhdGVUcmlnU3RtdCAqc3RtdCwgY29uc3QgY2hhciAqcXVl cnlTdHJpbmcsCiAJCQkJCQkJCQkJCSAgc3RtdC0+ZGVmZXJyYWJsZSwKIAkJCQkJCQkJCQkJICBz dG10LT5pbml0ZGVmZXJyZWQsCiAJCQkJCQkJCQkJCSAgdHJ1ZSwKKwkJCQkJCQkJCQkJICB0cnVl LAkvKiBJcyBlbmZvcmNlZCAqLwogCQkJCQkJCQkJCQkgIEludmFsaWRPaWQsCS8qIG5vIHBhcmVu dCAqLwogCQkJCQkJCQkJCQkgIFJlbGF0aW9uR2V0UmVsaWQocmVsKSwKIAkJCQkJCQkJCQkJICBO VUxMLCAvKiBubyBjb25rZXkgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3R5 cGVjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90eXBlY21kcy5jCmluZGV4IDJhNjU1MGRl OTA3Li5lNzdmZDJmMTQwYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHlwZWNt ZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90eXBlY21kcy5jCkBAIC0xMDA3LDYgKzEw MDcsMTIgQEAgRGVmaW5lRG9tYWluKENyZWF0ZURvbWFpblN0bXQgKnN0bXQpCiAJCQkJCQkgZXJy bXNnKCJzcGVjaWZ5aW5nIGNvbnN0cmFpbnQgZGVmZXJyYWJpbGl0eSBub3Qgc3VwcG9ydGVkIGZv ciBkb21haW5zIikpKTsKIAkJCQlicmVhazsKIAorCQkJY2FzZSBDT05TVFJfQVRUUl9OT1RfRU5G T1JDRUQ6CisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVS RV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJCSBlcnJtc2coInNwZWNpZnlpbmcgbm90IGVuZm9yY2Vk IGNvbnN0cmFpbnQgbm90IHN1cHBvcnRlZCBmb3IgZG9tYWlucyIpKSk7CisJCQkJYnJlYWs7CisK IAkJCWRlZmF1bHQ6CiAJCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBjb25zdHJhaW50IHN1 YnR5cGU6ICVkIiwKIAkJCQkJIChpbnQpIGNvbnN0ci0+Y29udHlwZSk7CkBAIC0yOTY3LDYgKzI5 NzMsMTIgQEAgQWx0ZXJEb21haW5BZGRDb25zdHJhaW50KExpc3QgKm5hbWVzLCBOb2RlICpuZXdD b25zdHJhaW50LAogCQkJCQkgZXJybXNnKCJzcGVjaWZ5aW5nIGNvbnN0cmFpbnQgZGVmZXJyYWJp bGl0eSBub3Qgc3VwcG9ydGVkIGZvciBkb21haW5zIikpKTsKIAkJCWJyZWFrOwogCisJCWNhc2Ug Q09OU1RSX0FUVFJfTk9UX0VORk9SQ0VEOgorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNv ZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQkgZXJybXNnKCJzcGVjaWZ5 aW5nIG5vdCBlbmZvcmNlZCBjb25zdHJhaW50IG5vdCBzdXBwb3J0ZWQgZm9yIGRvbWFpbnMiKSkp OworCQkJYnJlYWs7CisKIAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQg Y29uc3RyYWludCBzdWJ0eXBlOiAlZCIsCiAJCQkJIChpbnQpIGNvbnN0ci0+Y29udHlwZSk7CkBA IC0zNTk3LDYgKzM2MDksNyBAQCBkb21haW5BZGRDaGVja0NvbnN0cmFpbnQoT2lkIGRvbWFpbk9p ZCwgT2lkIGRvbWFpbk5hbWVzcGFjZSwgT2lkIGJhc2VUeXBlT2lkLAogCQkJCQkJCSAgZmFsc2Us CS8qIElzIERlZmVycmFibGUgKi8KIAkJCQkJCQkgIGZhbHNlLAkvKiBJcyBEZWZlcnJlZCAqLwog CQkJCQkJCSAgIWNvbnN0ci0+c2tpcF92YWxpZGF0aW9uLCAvKiBJcyBWYWxpZGF0ZWQgKi8KKwkJ CQkJCQkgIHRydWUsCQkvKiBJcyBlbmZvcmNlZCAqLwogCQkJCQkJCSAgSW52YWxpZE9pZCwJLyog bm8gcGFyZW50IGNvbnN0cmFpbnQgKi8KIAkJCQkJCQkgIEludmFsaWRPaWQsCS8qIG5vdCBhIHJl bGF0aW9uIGNvbnN0cmFpbnQgKi8KIAkJCQkJCQkgIE5VTEwsCkBAIC0zNzA0LDYgKzM3MTcsNyBA QCBkb21haW5BZGROb3ROdWxsQ29uc3RyYWludChPaWQgZG9tYWluT2lkLCBPaWQgZG9tYWluTmFt ZXNwYWNlLCBPaWQgYmFzZVR5cGVPaWQsCiAJCQkJCQkJICBmYWxzZSwJLyogSXMgRGVmZXJyYWJs ZSAqLwogCQkJCQkJCSAgZmFsc2UsCS8qIElzIERlZmVycmVkICovCiAJCQkJCQkJICAhY29uc3Ry LT5za2lwX3ZhbGlkYXRpb24sIC8qIElzIFZhbGlkYXRlZCAqLworCQkJCQkJCSAgdHJ1ZSwJCS8q IElzIGVuZm9yY2VkICovCiAJCQkJCQkJICBJbnZhbGlkT2lkLAkvKiBubyBwYXJlbnQgY29uc3Ry YWludCAqLwogCQkJCQkJCSAgSW52YWxpZE9pZCwJLyogbm90IGEgcmVsYXRpb24gY29uc3RyYWlu dCAqLwogCQkJCQkJCSAgTlVMTCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNNYWluLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCmluZGV4IGNjOWE1OTRj YmE1Li5jZWM2OWFmZTE4OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01h aW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCkBAIC0xNzQ2LDExICsx NzQ2LDE1IEBAIEV4ZWNSZWxDaGVjayhSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAogCXsK IAkJb2xkQ29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhlc3RhdGUtPmVzX3F1ZXJ5X2N4 dCk7CiAJCXJlc3VsdFJlbEluZm8tPnJpX0NvbnN0cmFpbnRFeHBycyA9Ci0JCQkoRXhwclN0YXRl ICoqKSBwYWxsb2MobmNoZWNrICogc2l6ZW9mKEV4cHJTdGF0ZSAqKSk7CisJCQkoRXhwclN0YXRl ICoqKSBwYWxsb2MwKG5jaGVjayAqIHNpemVvZihFeHByU3RhdGUgKikpOwogCQlmb3IgKGkgPSAw OyBpIDwgbmNoZWNrOyBpKyspCiAJCXsKIAkJCUV4cHIJICAgKmNoZWNrY29uc3RyOwogCisJCQkv KiBTa2lwIG5vdCBlbmZvcmNlZCBjb25zdHJhaW50ICovCisJCQlpZiAoIWNoZWNrW2ldLmNjZW5m b3JjZWQpCisJCQkJY29udGludWU7CisKIAkJCWNoZWNrY29uc3RyID0gc3RyaW5nVG9Ob2RlKGNo ZWNrW2ldLmNjYmluKTsKIAkJCXJlc3VsdFJlbEluZm8tPnJpX0NvbnN0cmFpbnRFeHByc1tpXSA9 CiAJCQkJRXhlY1ByZXBhcmVFeHByKGNoZWNrY29uc3RyLCBlc3RhdGUpOwpAQCAtMTc3Nyw3ICsx NzgxLDcgQEAgRXhlY1JlbENoZWNrKFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCiAJCSAq IGlzIG5vdCB0byBiZSB0cmVhdGVkIGFzIGEgZmFpbHVyZS4gIFRoZXJlZm9yZSwgdXNlIEV4ZWND aGVjayBub3QKIAkJICogRXhlY1F1YWwuCiAJCSAqLwotCQlpZiAoIUV4ZWNDaGVjayhjaGVja2Nv bnN0ciwgZWNvbnRleHQpKQorCQlpZiAoY2hlY2tjb25zdHIgJiYgIUV4ZWNDaGVjayhjaGVja2Nv bnN0ciwgZWNvbnRleHQpKQogCQkJcmV0dXJuIGNoZWNrW2ldLmNjbmFtZTsKIAl9CiAKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3Jh bS55CmluZGV4IDRhYTg2NDZhZjdiLi40MzdhMGI5ZjJmMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvcGFyc2VyL2dyYW0ueQorKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CkBAIC0xNTgs NiArMTU4LDggQEAgdHlwZWRlZiBzdHJ1Y3QgS2V5QWN0aW9ucwogI2RlZmluZSBDQVNfSU5JVElB TExZX0RFRkVSUkVECQkweDA4CiAjZGVmaW5lIENBU19OT1RfVkFMSUQJCQkJMHgxMAogI2RlZmlu ZSBDQVNfTk9fSU5IRVJJVAkJCQkweDIwCisjZGVmaW5lIENBU19OT1RfRU5GT1JDRUQJCQkweDQw CisjZGVmaW5lIENBU19FTkZPUkNFRAkJCQkweDgwCiAKIAogI2RlZmluZSBwYXJzZXJfeXllcnJv cihtc2cpICBzY2FubmVyX3l5ZXJyb3IobXNnLCB5eXNjYW5uZXIpCkBAIC0yMTEsNyArMjEzLDcg QEAgc3RhdGljIHZvaWQgU3BsaXRDb2xRdWFsTGlzdChMaXN0ICpxdWFsTGlzdCwKIAkJCQkJCQkg Y29yZV95eXNjYW5fdCB5eXNjYW5uZXIpOwogc3RhdGljIHZvaWQgcHJvY2Vzc0NBU2JpdHMoaW50 IGNhc19iaXRzLCBpbnQgbG9jYXRpb24sIGNvbnN0IGNoYXIgKmNvbnN0clR5cGUsCiAJCQkgICBi b29sICpkZWZlcnJhYmxlLCBib29sICppbml0ZGVmZXJyZWQsIGJvb2wgKm5vdF92YWxpZCwKLQkJ CSAgIGJvb2wgKm5vX2luaGVyaXQsIGNvcmVfeXlzY2FuX3QgeXlzY2FubmVyKTsKKwkJCSAgIGJv b2wgKm5vX2luaGVyaXQsIGJvb2wgKmlzX2VuZm9yY2VkLCBjb3JlX3l5c2Nhbl90IHl5c2Nhbm5l cik7CiBzdGF0aWMgUGFydGl0aW9uU3RyYXRlZ3kgcGFyc2VQYXJ0aXRpb25TdHJhdGVneShjaGFy ICpzdHJhdGVneSk7CiBzdGF0aWMgdm9pZCBwcmVwcm9jZXNzX3B1Ym9ial9saXN0KExpc3QgKnB1 Ym9ianNwZWNfbGlzdCwKIAkJCQkJCQkJICAgY29yZV95eXNjYW5fdCB5eXNjYW5uZXIpOwpAQCAt NzI0LDkgKzcyNiw5IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFy ICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJREVUQUNIIERJQ1RJT05B UlkgRElTQUJMRV9QIERJU0NBUkQgRElTVElOQ1QgRE8gRE9DVU1FTlRfUCBET01BSU5fUAogCURP VUJMRV9QIERST1AKIAotCUVBQ0ggRUxTRSBFTVBUWV9QIEVOQUJMRV9QIEVOQ09ESU5HIEVOQ1JZ UFRFRCBFTkRfUCBFTlVNX1AgRVJST1JfUCBFU0NBUEUKLQlFVkVOVCBFWENFUFQgRVhDTFVERSBF WENMVURJTkcgRVhDTFVTSVZFIEVYRUNVVEUgRVhJU1RTIEVYUExBSU4gRVhQUkVTU0lPTgotCUVY VEVOU0lPTiBFWFRFUk5BTCBFWFRSQUNUCisJRUFDSCBFTFNFIEVNUFRZX1AgRU5BQkxFX1AgRU5D T0RJTkcgRU5DUllQVEVEIEVORF9QIEVORk9SQ0VEIEVOVU1fUCBFUlJPUl9QCisJRVNDQVBFIEVW RU5UIEVYQ0VQVCBFWENMVURFIEVYQ0xVRElORyBFWENMVVNJVkUgRVhFQ1VURSBFWElTVFMgRVhQ TEFJTgorCUVYUFJFU1NJT04gRVhURU5TSU9OIEVYVEVSTkFMIEVYVFJBQ1QKIAogCUZBTFNFX1Ag RkFNSUxZIEZFVENIIEZJTFRFUiBGSU5BTElaRSBGSVJTVF9QIEZMT0FUX1AgRk9MTE9XSU5HIEZP UgogCUZPUkNFIEZPUkVJR04gRk9STUFUIEZPUldBUkQgRlJFRVpFIEZST00gRlVMTCBGVU5DVElP TiBGVU5DVElPTlMKQEAgLTI2NzcsNyArMjY3OSw3IEBAIGFsdGVyX3RhYmxlX2NtZDoKIAkJCQkJ cHJvY2Vzc0NBU2JpdHMoJDQsIEA0LCAiQUxURVIgQ09OU1RSQUlOVCBzdGF0ZW1lbnQiLAogCQkJ CQkJCQkJJmMtPmRlZmVycmFibGUsCiAJCQkJCQkJCQkmYy0+aW5pdGRlZmVycmVkLAotCQkJCQkJ CQkJTlVMTCwgTlVMTCwgeXlzY2FubmVyKTsKKwkJCQkJCQkJCU5VTEwsIE5VTEwsICZjLT5pc19l bmZvcmNlZCwgeXlzY2FubmVyKTsKIAkJCQkJJCQgPSAoTm9kZSAqKSBuOwogCQkJCX0KIAkJCS8q IEFMVEVSIFRBQkxFIDxuYW1lPiBWQUxJREFURSBDT05TVFJBSU5UIC4uLiAqLwpAQCAtMzk3Niw2 ICszOTc4LDcgQEAgQ29sQ29uc3RyYWludEVsZW06CiAJCQkJCW4tPmNvb2tlZF9leHByID0gTlVM TDsKIAkJCQkJbi0+c2tpcF92YWxpZGF0aW9uID0gZmFsc2U7CiAJCQkJCW4tPmluaXRpYWxseV92 YWxpZCA9IHRydWU7CisJCQkJCW4tPmlzX2VuZm9yY2VkID0gdHJ1ZTsKIAkJCQkJJCQgPSAoTm9k ZSAqKSBuOwogCQkJCX0KIAkJCXwgREVGQVVMVCBiX2V4cHIKQEAgLTQxMDAsNiArNDEwMywyMiBA QCBDb25zdHJhaW50QXR0cjoKIAkJCQkJbi0+bG9jYXRpb24gPSBAMTsKIAkJCQkJJCQgPSAoTm9k ZSAqKSBuOwogCQkJCX0KKwkJCXwgRU5GT1JDRUQKKwkJCQl7CisJCQkJCUNvbnN0cmFpbnQgKm4g PSBtYWtlTm9kZShDb25zdHJhaW50KTsKKworCQkJCQluLT5jb250eXBlID0gQ09OU1RSX0FUVFJf RU5GT1JDRUQ7CisJCQkJCW4tPmxvY2F0aW9uID0gQDE7CisJCQkJCSQkID0gKE5vZGUgKikgbjsK KwkJCQl9CisJCQl8IE5PVCBFTkZPUkNFRAorCQkJCXsKKwkJCQkJQ29uc3RyYWludCAqbiA9IG1h a2VOb2RlKENvbnN0cmFpbnQpOworCisJCQkJCW4tPmNvbnR5cGUgPSBDT05TVFJfQVRUUl9OT1Rf RU5GT1JDRUQ7CisJCQkJCW4tPmxvY2F0aW9uID0gQDE7CisJCQkJCSQkID0gKE5vZGUgKikgbjsK KwkJCQl9CiAJCTsKIAogCkBAIC00MTYyLDcgKzQxODEsNyBAQCBDb25zdHJhaW50RWxlbToKIAkJ CQkJbi0+Y29va2VkX2V4cHIgPSBOVUxMOwogCQkJCQlwcm9jZXNzQ0FTYml0cygkNSwgQDUsICJD SEVDSyIsCiAJCQkJCQkJCSAgIE5VTEwsIE5VTEwsICZuLT5za2lwX3ZhbGlkYXRpb24sCi0JCQkJ CQkJCSAgICZuLT5pc19ub19pbmhlcml0LCB5eXNjYW5uZXIpOworCQkJCQkJCQkgICAmbi0+aXNf bm9faW5oZXJpdCwgJm4tPmlzX2VuZm9yY2VkLCB5eXNjYW5uZXIpOwogCQkJCQluLT5pbml0aWFs bHlfdmFsaWQgPSAhbi0+c2tpcF92YWxpZGF0aW9uOwogCQkJCQkkJCA9IChOb2RlICopIG47CiAJ CQkJfQpAQCAtNDE4Miw3ICs0MjAxLDcgQEAgQ29uc3RyYWludEVsZW06CiAJCQkJCW4tPmluZGV4 c3BhY2UgPSAkOTsKIAkJCQkJcHJvY2Vzc0NBU2JpdHMoJDEwLCBAMTAsICJVTklRVUUiLAogCQkJ CQkJCQkgICAmbi0+ZGVmZXJyYWJsZSwgJm4tPmluaXRkZWZlcnJlZCwgTlVMTCwKLQkJCQkJCQkJ ICAgTlVMTCwgeXlzY2FubmVyKTsKKwkJCQkJCQkJICAgTlVMTCwgTlVMTCwgeXlzY2FubmVyKTsK IAkJCQkJJCQgPSAoTm9kZSAqKSBuOwogCQkJCX0KIAkJCXwgVU5JUVVFIEV4aXN0aW5nSW5kZXgg Q29uc3RyYWludEF0dHJpYnV0ZVNwZWMKQEAgLTQxOTgsNyArNDIxNyw3IEBAIENvbnN0cmFpbnRF bGVtOgogCQkJCQluLT5pbmRleHNwYWNlID0gTlVMTDsKIAkJCQkJcHJvY2Vzc0NBU2JpdHMoJDMs IEAzLCAiVU5JUVVFIiwKIAkJCQkJCQkJICAgJm4tPmRlZmVycmFibGUsICZuLT5pbml0ZGVmZXJy ZWQsIE5VTEwsCi0JCQkJCQkJCSAgIE5VTEwsIHl5c2Nhbm5lcik7CisJCQkJCQkJCSAgIE5VTEws IE5VTEwsIHl5c2Nhbm5lcik7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKIAkJCQl9CiAJCQl8IFBS SU1BUlkgS0VZICcoJyBjb2x1bW5MaXN0IG9wdF93aXRob3V0X292ZXJsYXBzICcpJyBvcHRfY19p bmNsdWRlIG9wdF9kZWZpbml0aW9uIE9wdENvbnNUYWJsZVNwYWNlCkBAIC00MjE2LDcgKzQyMzUs NyBAQCBDb25zdHJhaW50RWxlbToKIAkJCQkJbi0+aW5kZXhzcGFjZSA9ICQ5OwogCQkJCQlwcm9j ZXNzQ0FTYml0cygkMTAsIEAxMCwgIlBSSU1BUlkgS0VZIiwKIAkJCQkJCQkJICAgJm4tPmRlZmVy cmFibGUsICZuLT5pbml0ZGVmZXJyZWQsIE5VTEwsCi0JCQkJCQkJCSAgIE5VTEwsIHl5c2Nhbm5l cik7CisJCQkJCQkJCSAgIE5VTEwsIE5VTEwsIHl5c2Nhbm5lcik7CiAJCQkJCSQkID0gKE5vZGUg KikgbjsKIAkJCQl9CiAJCQl8IFBSSU1BUlkgS0VZIEV4aXN0aW5nSW5kZXggQ29uc3RyYWludEF0 dHJpYnV0ZVNwZWMKQEAgLTQyMzIsNyArNDI1MSw3IEBAIENvbnN0cmFpbnRFbGVtOgogCQkJCQlu LT5pbmRleHNwYWNlID0gTlVMTDsKIAkJCQkJcHJvY2Vzc0NBU2JpdHMoJDQsIEA0LCAiUFJJTUFS WSBLRVkiLAogCQkJCQkJCQkgICAmbi0+ZGVmZXJyYWJsZSwgJm4tPmluaXRkZWZlcnJlZCwgTlVM TCwKLQkJCQkJCQkJICAgTlVMTCwgeXlzY2FubmVyKTsKKwkJCQkJCQkJICAgTlVMTCwgTlVMTCwg eXlzY2FubmVyKTsKIAkJCQkJJCQgPSAoTm9kZSAqKSBuOwogCQkJCX0KIAkJCXwgRVhDTFVERSBh Y2Nlc3NfbWV0aG9kX2NsYXVzZSAnKCcgRXhjbHVzaW9uQ29uc3RyYWludExpc3QgJyknCkBAIC00 MjUyLDcgKzQyNzEsNyBAQCBDb25zdHJhaW50RWxlbToKIAkJCQkJbi0+d2hlcmVfY2xhdXNlID0g JDk7CiAJCQkJCXByb2Nlc3NDQVNiaXRzKCQxMCwgQDEwLCAiRVhDTFVERSIsCiAJCQkJCQkJCSAg ICZuLT5kZWZlcnJhYmxlLCAmbi0+aW5pdGRlZmVycmVkLCBOVUxMLAotCQkJCQkJCQkgICBOVUxM LCB5eXNjYW5uZXIpOworCQkJCQkJCQkgICBOVUxMLCBOVUxMLCB5eXNjYW5uZXIpOwogCQkJCQkk JCA9IChOb2RlICopIG47CiAJCQkJfQogCQkJfCBGT1JFSUdOIEtFWSAnKCcgY29sdW1uTGlzdCBv cHRpb25hbFBlcmlvZE5hbWUgJyknIFJFRkVSRU5DRVMgcXVhbGlmaWVkX25hbWUKQEAgLTQyODIs NiArNDMwMSw3IEBAIENvbnN0cmFpbnRFbGVtOgogCQkJCQlwcm9jZXNzQ0FTYml0cygkMTIsIEAx MiwgIkZPUkVJR04gS0VZIiwKIAkJCQkJCQkJICAgJm4tPmRlZmVycmFibGUsICZuLT5pbml0ZGVm ZXJyZWQsCiAJCQkJCQkJCSAgICZuLT5za2lwX3ZhbGlkYXRpb24sIE5VTEwsCisJCQkJCQkJCSAg IE5VTEwsCiAJCQkJCQkJCSAgIHl5c2Nhbm5lcik7CiAJCQkJCW4tPmluaXRpYWxseV92YWxpZCA9 ICFuLT5za2lwX3ZhbGlkYXRpb247CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKQEAgLTQzMjIsNyAr NDM0Miw3IEBAIERvbWFpbkNvbnN0cmFpbnRFbGVtOgogCQkJCQluLT5jb29rZWRfZXhwciA9IE5V TEw7CiAJCQkJCXByb2Nlc3NDQVNiaXRzKCQ1LCBANSwgIkNIRUNLIiwKIAkJCQkJCQkJICAgTlVM TCwgTlVMTCwgJm4tPnNraXBfdmFsaWRhdGlvbiwKLQkJCQkJCQkJICAgJm4tPmlzX25vX2luaGVy aXQsIHl5c2Nhbm5lcik7CisJCQkJCQkJCSAgICZuLT5pc19ub19pbmhlcml0LCBOVUxMLCB5eXNj YW5uZXIpOwogCQkJCQluLT5pbml0aWFsbHlfdmFsaWQgPSAhbi0+c2tpcF92YWxpZGF0aW9uOwog CQkJCQkkJCA9IChOb2RlICopIG47CiAJCQkJfQpAQCAtNDMzNiw3ICs0MzU2LDcgQEAgRG9tYWlu Q29uc3RyYWludEVsZW06CiAJCQkJCS8qIG5vIE5PVCBWQUxJRCBzdXBwb3J0IHlldCAqLwogCQkJ CQlwcm9jZXNzQ0FTYml0cygkMywgQDMsICJOT1QgTlVMTCIsCiAJCQkJCQkJCSAgIE5VTEwsIE5V TEwsIE5VTEwsCi0JCQkJCQkJCSAgICZuLT5pc19ub19pbmhlcml0LCB5eXNjYW5uZXIpOworCQkJ CQkJCQkgICAmbi0+aXNfbm9faW5oZXJpdCwgTlVMTCwgeXlzY2FubmVyKTsKIAkJCQkJbi0+aW5p dGlhbGx5X3ZhbGlkID0gdHJ1ZTsKIAkJCQkJJCQgPSAoTm9kZSAqKSBuOwogCQkJCX0KQEAgLTU5 OTgsNyArNjAxOCw3IEBAIENyZWF0ZVRyaWdTdG10OgogCQkJCQluLT50cmFuc2l0aW9uUmVscyA9 IE5JTDsKIAkJCQkJcHJvY2Vzc0NBU2JpdHMoJDExLCBAMTEsICJUUklHR0VSIiwKIAkJCQkJCQkJ ICAgJm4tPmRlZmVycmFibGUsICZuLT5pbml0ZGVmZXJyZWQsIE5VTEwsCi0JCQkJCQkJCSAgIE5V TEwsIHl5c2Nhbm5lcik7CisJCQkJCQkJCSAgIE5VTEwsIE5VTEwsIHl5c2Nhbm5lcik7CiAJCQkJ CW4tPmNvbnN0cnJlbCA9ICQxMDsKIAkJCQkJJCQgPSAoTm9kZSAqKSBuOwogCQkJCX0KQEAgLTYx NjcsNyArNjE4Nyw4IEBAIENvbnN0cmFpbnRBdHRyaWJ1dGVTcGVjOgogCQkJCQkJCQkgcGFyc2Vy X2VycnBvc2l0aW9uKEAyKSkpOwogCQkJCQkvKiBnZW5lcmljIG1lc3NhZ2UgZm9yIG90aGVyIGNv bmZsaWN0cyAqLwogCQkJCQlpZiAoKG5ld3NwZWMgJiAoQ0FTX05PVF9ERUZFUlJBQkxFIHwgQ0FT X0RFRkVSUkFCTEUpKSA9PSAoQ0FTX05PVF9ERUZFUlJBQkxFIHwgQ0FTX0RFRkVSUkFCTEUpIHx8 Ci0JCQkJCQkobmV3c3BlYyAmIChDQVNfSU5JVElBTExZX0lNTUVESUFURSB8IENBU19JTklUSUFM TFlfREVGRVJSRUQpKSA9PSAoQ0FTX0lOSVRJQUxMWV9JTU1FRElBVEUgfCBDQVNfSU5JVElBTExZ X0RFRkVSUkVEKSkKKwkJCQkJCShuZXdzcGVjICYgKENBU19JTklUSUFMTFlfSU1NRURJQVRFIHwg Q0FTX0lOSVRJQUxMWV9ERUZFUlJFRCkpID09IChDQVNfSU5JVElBTExZX0lNTUVESUFURSB8IENB U19JTklUSUFMTFlfREVGRVJSRUQpIHx8CisJCQkJCQkobmV3c3BlYyAmIChDQVNfTk9UX0VORk9S Q0VEIHwgQ0FTX0VORk9SQ0VEKSkgPT0gKENBU19OT1RfRU5GT1JDRUQgfCBDQVNfRU5GT1JDRUQp KQogCQkJCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhf RVJST1IpLAogCQkJCQkJCQkgZXJybXNnKCJjb25mbGljdGluZyBjb25zdHJhaW50IHByb3BlcnRp ZXMiKSwKQEAgLTYxODMsNiArNjIwNCw4IEBAIENvbnN0cmFpbnRBdHRyaWJ1dGVFbGVtOgogCQkJ fCBJTklUSUFMTFkgREVGRVJSRUQJCQl7ICQkID0gQ0FTX0lOSVRJQUxMWV9ERUZFUlJFRDsgfQog CQkJfCBOT1QgVkFMSUQJCQkJCQl7ICQkID0gQ0FTX05PVF9WQUxJRDsgfQogCQkJfCBOTyBJTkhF UklUCQkJCQl7ICQkID0gQ0FTX05PX0lOSEVSSVQ7IH0KKwkJCXwgTk9UIEVORk9SQ0VECQkJCQl7 ICQkID0gQ0FTX05PVF9FTkZPUkNFRDsgfQorCQkJfCBFTkZPUkNFRAkJCQkJCXsgJCQgPSBDQVNf RU5GT1JDRUQ7IH0KIAkJOwogCiAKQEAgLTE3NjM2LDYgKzE3NjU5LDcgQEAgdW5yZXNlcnZlZF9r ZXl3b3JkOgogCQkJfCBFTkFCTEVfUAogCQkJfCBFTkNPRElORwogCQkJfCBFTkNSWVBURUQKKwkJ CXwgRU5GT1JDRUQKIAkJCXwgRU5VTV9QCiAJCQl8IEVSUk9SX1AKIAkJCXwgRVNDQVBFCkBAIC0x ODIxMyw2ICsxODIzNyw3IEBAIGJhcmVfbGFiZWxfa2V5d29yZDoKIAkJCXwgRU5DT0RJTkcKIAkJ CXwgRU5DUllQVEVECiAJCQl8IEVORF9QCisJCQl8IEVORk9SQ0VECiAJCQl8IEVOVU1fUAogCQkJ fCBFUlJPUl9QCiAJCQl8IEVTQ0FQRQpAQCAtMTkzMDYsNyArMTkzMzEsNyBAQCBTcGxpdENvbFF1 YWxMaXN0KExpc3QgKnF1YWxMaXN0LAogc3RhdGljIHZvaWQKIHByb2Nlc3NDQVNiaXRzKGludCBj YXNfYml0cywgaW50IGxvY2F0aW9uLCBjb25zdCBjaGFyICpjb25zdHJUeXBlLAogCQkJICAgYm9v bCAqZGVmZXJyYWJsZSwgYm9vbCAqaW5pdGRlZmVycmVkLCBib29sICpub3RfdmFsaWQsCi0JCQkg ICBib29sICpub19pbmhlcml0LCBjb3JlX3l5c2Nhbl90IHl5c2Nhbm5lcikKKwkJCSAgIGJvb2wg Km5vX2luaGVyaXQsIGJvb2wgKmlzX2VuZm9yY2VkLCBjb3JlX3l5c2Nhbl90IHl5c2Nhbm5lcikK IHsKIAkvKiBkZWZhdWx0cyAqLwogCWlmIChkZWZlcnJhYmxlKQpAQCAtMTkzMTUsNiArMTkzNDAs OCBAQCBwcm9jZXNzQ0FTYml0cyhpbnQgY2FzX2JpdHMsIGludCBsb2NhdGlvbiwgY29uc3QgY2hh ciAqY29uc3RyVHlwZSwKIAkJKmluaXRkZWZlcnJlZCA9IGZhbHNlOwogCWlmIChub3RfdmFsaWQp CiAJCSpub3RfdmFsaWQgPSBmYWxzZTsKKwlpZiAoaXNfZW5mb3JjZWQpCisJCSppc19lbmZvcmNl ZCA9IHRydWU7CiAKIAlpZiAoY2FzX2JpdHMgJiAoQ0FTX0RFRkVSUkFCTEUgfCBDQVNfSU5JVElB TExZX0RFRkVSUkVEKSkKIAl7CkBAIC0xOTM2Nyw2ICsxOTM5NCwxOSBAQCBwcm9jZXNzQ0FTYml0 cyhpbnQgY2FzX2JpdHMsIGludCBsb2NhdGlvbiwgY29uc3QgY2hhciAqY29uc3RyVHlwZSwKIAkJ CQkJCQljb25zdHJUeXBlKSwKIAkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihsb2NhdGlvbikpKTsK IAl9CisKKwlpZiAoY2FzX2JpdHMgJiBDQVNfTk9UX0VORk9SQ0VEKQorCXsKKwkJaWYgKGlzX2Vu Zm9yY2VkKQorCQkJKmlzX2VuZm9yY2VkID0gZmFsc2U7CisJCWVsc2UKKwkJCWVyZXBvcnQoRVJS T1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJ IC8qIHRyYW5zbGF0b3I6ICVzIGlzIENIRUNLLCBVTklRVUUsIG9yIHNpbWlsYXIgKi8KKwkJCQkJ IGVycm1zZygiJXMgY29uc3RyYWludHMgY2Fubm90IGJlIG1hcmtlZCBOT1QgRU5GT1JDRUQiLAor CQkJCQkJCWNvbnN0clR5cGUpLAorCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKGxvY2F0aW9uKSkp OworCX0KIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGls Y21kLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jCmluZGV4IDFlMTVjZTEw YjQ4Li4wMjRjYzI1NmI3ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0 aWxjbWQuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jCkBAIC04MzUs NiArODM1LDggQEAgdHJhbnNmb3JtQ29sdW1uRGVmaW5pdGlvbihDcmVhdGVTdG10Q29udGV4dCAq Y3h0LCBDb2x1bW5EZWYgKmNvbHVtbikKIAkJCWNhc2UgQ09OU1RSX0FUVFJfTk9UX0RFRkVSUkFC TEU6CiAJCQljYXNlIENPTlNUUl9BVFRSX0RFRkVSUkVEOgogCQkJY2FzZSBDT05TVFJfQVRUUl9J TU1FRElBVEU6CisJCQljYXNlIENPTlNUUl9BVFRSX0VORk9SQ0VEOgorCQkJY2FzZSBDT05TVFJf QVRUUl9OT1RfRU5GT1JDRUQ6CiAJCQkJLyogdHJhbnNmb3JtQ29uc3RyYWludEF0dHJzIHRvb2sg Y2FyZSBvZiB0aGVzZSAqLwogCQkJCWJyZWFrOwogCkBAIC05NTUsNiArOTU3LDggQEAgdHJhbnNm b3JtVGFibGVDb25zdHJhaW50KENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsIENvbnN0cmFpbnQgKmNv bnN0cmFpbnQpCiAJCWNhc2UgQ09OU1RSX0FUVFJfTk9UX0RFRkVSUkFCTEU6CiAJCWNhc2UgQ09O U1RSX0FUVFJfREVGRVJSRUQ6CiAJCWNhc2UgQ09OU1RSX0FUVFJfSU1NRURJQVRFOgorCQljYXNl IENPTlNUUl9BVFRSX0VORk9SQ0VEOgorCQljYXNlIENPTlNUUl9BVFRSX05PVF9FTkZPUkNFRDoK IAkJCWVsb2coRVJST1IsICJpbnZhbGlkIGNvbnRleHQgZm9yIGNvbnN0cmFpbnQgdHlwZSAlZCIs CiAJCQkJIGNvbnN0cmFpbnQtPmNvbnR5cGUpOwogCQkJYnJlYWs7CkBAIC0xMzE3LDYgKzEzMjEs NyBAQCBleHBhbmRUYWJsZUxpa2VDbGF1c2UoUmFuZ2VWYXIgKmhlYXBSZWwsIFRhYmxlTGlrZUNs YXVzZSAqdGFibGVfbGlrZV9jbGF1c2UpCiAJCQluLT5pc19ub19pbmhlcml0ID0gY2Nub2luaGVy aXQ7CiAJCQluLT5yYXdfZXhwciA9IE5VTEw7CiAJCQluLT5jb29rZWRfZXhwciA9IG5vZGVUb1N0 cmluZyhjY2Jpbl9ub2RlKTsKKwkJCW4tPmlzX2VuZm9yY2VkID0gdHJ1ZTsKIAogCQkJLyogV2Ug Y2FuIHNraXAgdmFsaWRhdGlvbiwgc2luY2UgdGhlIG5ldyB0YWJsZSBzaG91bGQgYmUgZW1wdHku ICovCiAJCQluLT5za2lwX3ZhbGlkYXRpb24gPSB0cnVlOwpAQCAtMzcxNSw2ICszNzIwLDcgQEAg dHJhbnNmb3JtQ29uc3RyYWludEF0dHJzKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsIExpc3QgKmNv bnN0cmFpbnRMaXN0KQogCUNvbnN0cmFpbnQgKmxhc3RwcmltYXJ5Y29uID0gTlVMTDsKIAlib29s CQlzYXdfZGVmZXJyYWJpbGl0eSA9IGZhbHNlOwogCWJvb2wJCXNhd19pbml0aWFsbHkgPSBmYWxz ZTsKKwlib29sCQlzYXdfZW5mb3JjZWQgPSBmYWxzZTsKIAlMaXN0Q2VsbCAgICpjbGlzdDsKIAog I2RlZmluZSBTVVBQT1JUU19BVFRSUyhub2RlKQkJCQlcCkBAIC0zODEwLDEyICszODE2LDQ1IEBA IHRyYW5zZm9ybUNvbnN0cmFpbnRBdHRycyhDcmVhdGVTdG10Q29udGV4dCAqY3h0LCBMaXN0ICpj b25zdHJhaW50TGlzdCkKIAkJCQlsYXN0cHJpbWFyeWNvbi0+aW5pdGRlZmVycmVkID0gZmFsc2U7 CiAJCQkJYnJlYWs7CiAKKwkJCWNhc2UgQ09OU1RSX0FUVFJfRU5GT1JDRUQ6CisJCQkJaWYgKGxh c3RwcmltYXJ5Y29uICYmCisJCQkJCWxhc3RwcmltYXJ5Y29uLT5jb250eXBlICE9IENPTlNUUl9D SEVDSykKKwkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRB WF9FUlJPUiksCisJCQkJCQkJIGVycm1zZygibWlzcGxhY2VkIEVORk9SQ0VEIGNsYXVzZSIpLAor CQkJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24oY3h0LT5wc3RhdGUsIGNvbi0+bG9jYXRpb24pKSk7 CisJCQkJaWYgKHNhd19lbmZvcmNlZCkKKwkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkoZXJy Y29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCQkJIGVycm1zZygibXVsdGlwbGUgRU5G T1JDRUQvTk9UIEVORk9SQ0VEIGNsYXVzZXMgbm90IGFsbG93ZWQiKSwKKwkJCQkJCQkgcGFyc2Vy X2VycnBvc2l0aW9uKGN4dC0+cHN0YXRlLCBjb24tPmxvY2F0aW9uKSkpOworCQkJCXNhd19lbmZv cmNlZCA9IHRydWU7CisJCQkJbGFzdHByaW1hcnljb24tPmlzX2VuZm9yY2VkID0gdHJ1ZTsKKwkJ CQlicmVhazsKKworCQkJY2FzZSBDT05TVFJfQVRUUl9OT1RfRU5GT1JDRUQ6CisJCQkJaWYgKGxh c3RwcmltYXJ5Y29uICYmCisJCQkJCWxhc3RwcmltYXJ5Y29uLT5jb250eXBlICE9IENPTlNUUl9D SEVDSykKKwkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRB WF9FUlJPUiksCisJCQkJCQkJIGVycm1zZygibWlzcGxhY2VkIE5PVCBFTkZPUkNFRCBjbGF1c2Ui KSwKKwkJCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKGN4dC0+cHN0YXRlLCBjb24tPmxvY2F0aW9u KSkpOworCQkJCWlmIChzYXdfZW5mb3JjZWQpCisJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJ KGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkJCSBlcnJtc2coIm11bHRpcGxl IEVORk9SQ0VEL05PVCBFTkZPUkNFRCBjbGF1c2VzIG5vdCBhbGxvd2VkIiksCisJCQkJCQkJIHBh cnNlcl9lcnJwb3NpdGlvbihjeHQtPnBzdGF0ZSwgY29uLT5sb2NhdGlvbikpKTsKKwkJCQlzYXdf ZW5mb3JjZWQgPSB0cnVlOworCQkJCWxhc3RwcmltYXJ5Y29uLT5pc19lbmZvcmNlZCA9IGZhbHNl OworCQkJCWJyZWFrOworCiAJCQlkZWZhdWx0OgogCQkJCS8qIE90aGVyd2lzZSBpdCdzIG5vdCBh biBhdHRyaWJ1dGUgKi8KIAkJCQlsYXN0cHJpbWFyeWNvbiA9IGNvbjsKIAkJCQkvKiByZXNldCBm bGFncyBmb3IgbmV3IHByaW1hcnkgbm9kZSAqLwogCQkJCXNhd19kZWZlcnJhYmlsaXR5ID0gZmFs c2U7CiAJCQkJc2F3X2luaXRpYWxseSA9IGZhbHNlOworCQkJCXNhd19lbmZvcmNlZCA9IGZhbHNl OwogCQkJCWJyZWFrOwogCQl9CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L3J1bGV1dGlscy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCmluZGV4IDIx NzdkMTdlMjc4Li5jZmRjNGUzMWNkNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L3J1bGV1dGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYwpAQCAt MjM3Miw2ICsyMzcyLDkgQEAgcGdfZ2V0X2NvbnN0cmFpbnRkZWZfd29ya2VyKE9pZCBjb25zdHJh aW50SWQsIGJvb2wgZnVsbENvbW1hbmQsCiAJCQkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKCZidWYs ICcpJyk7CiAJCQkJfQogCisJCQkJaWYgKCFjb25Gb3JtLT5jb25lbmZvcmNlZCkKKwkJCQkJYXBw ZW5kU3RyaW5nSW5mb1N0cmluZygmYnVmLCAiIE5PVCBFTkZPUkNFRCIpOworCiAJCQkJYnJlYWs7 CiAJCQl9CiAJCWNhc2UgQ09OU1RSQUlOVF9QUklNQVJZOgpAQCAtMjUxNCw2ICsyNTE3LDEwIEBA IHBnX2dldF9jb25zdHJhaW50ZGVmX3dvcmtlcihPaWQgY29uc3RyYWludElkLCBib29sIGZ1bGxD b21tYW5kLAogCQkJCWFwcGVuZFN0cmluZ0luZm8oJmJ1ZiwgIkNIRUNLICglcyklcyIsCiAJCQkJ CQkJCSBjb25zcmMsCiAJCQkJCQkJCSBjb25Gb3JtLT5jb25ub2luaGVyaXQgPyAiIE5PIElOSEVS SVQiIDogIiIpOworCisJCQkJaWYgKCFjb25Gb3JtLT5jb25lbmZvcmNlZCkKKwkJCQkJYXBwZW5k U3RyaW5nSW5mb1N0cmluZygmYnVmLCAiIE5PVCBFTkZPUkNFRCIpOworCiAJCQkJYnJlYWs7CiAJ CQl9CiAJCWNhc2UgQ09OU1RSQUlOVF9UUklHR0VSOgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv dXRpbHMvY2FjaGUvcmVsY2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hl LmMKaW5kZXggYzMyNmY2ODdlYjQuLmE2MDNiNzRjNzc4IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3Jl bGNhY2hlLmMKQEAgLTQ2MjQsNiArNDYyNCw3IEBAIENoZWNrQ29uc3RyYWludEZldGNoKFJlbGF0 aW9uIHJlbGF0aW9uKQogCQl9CiAKIAkJY2hlY2tbZm91bmRdLmNjdmFsaWQgPSBjb25mb3JtLT5j b252YWxpZGF0ZWQ7CisJCWNoZWNrW2ZvdW5kXS5jY2VuZm9yY2VkID0gY29uZm9ybS0+Y29uZW5m b3JjZWQ7CiAJCWNoZWNrW2ZvdW5kXS5jY25vaW5oZXJpdCA9IGNvbmZvcm0tPmNvbm5vaW5oZXJp dDsKIAkJY2hlY2tbZm91bmRdLmNjbmFtZSA9IE1lbW9yeUNvbnRleHRTdHJkdXAoQ2FjaGVNZW1v cnlDb250ZXh0LAogCQkJCQkJCQkJCQkJICBOYW1lU3RyKGNvbmZvcm0tPmNvbm5hbWUpKTsKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90dXBkZXNjLmggYi9zcmMvaW5jbHVkZS9hY2Nl c3MvdHVwZGVzYy5oCmluZGV4IDg5MzBhMjhkNjYwLi45NmJhYzAxODA4MyAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvYWNjZXNzL3R1cGRlc2MuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvdHVw ZGVzYy5oCkBAIC0zMCw2ICszMCw3IEBAIHR5cGVkZWYgc3RydWN0IENvbnN0ckNoZWNrCiAJY2hh cgkgICAqY2NuYW1lOwogCWNoYXIJICAgKmNjYmluOwkJCS8qIG5vZGVUb1N0cmluZyByZXByZXNl bnRhdGlvbiBvZiBleHByICovCiAJYm9vbAkJY2N2YWxpZDsKKwlib29sCQljY2VuZm9yY2VkOwog CWJvb2wJCWNjbm9pbmhlcml0OwkvKiB0aGlzIGlzIGEgbm9uLWluaGVyaXRhYmxlIGNvbnN0cmFp bnQgKi8KIH0gQ29uc3RyQ2hlY2s7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cv aGVhcC5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9oZWFwLmgKaW5kZXggYzUxMjgyNGNkMWMuLjk2 YjIyYjRmODZjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL2hlYXAuaAorKysgYi9z cmMvaW5jbHVkZS9jYXRhbG9nL2hlYXAuaApAQCAtNDAsNiArNDAsNyBAQCB0eXBlZGVmIHN0cnVj dCBDb29rZWRDb25zdHJhaW50CiAJQXR0ck51bWJlcglhdHRudW07CQkJLyogd2hpY2ggYXR0ciAo b25seSBmb3IgREVGQVVMVCkgKi8KIAlOb2RlCSAgICpleHByOwkJCS8qIHRyYW5zZm9ybWVkIGRl ZmF1bHQgb3IgY2hlY2sgZXhwciAqLwogCWJvb2wJCXNraXBfdmFsaWRhdGlvbjsJLyogc2tpcCB2 YWxpZGF0aW9uPyAob25seSBmb3IgQ0hFQ0spICovCisJYm9vbAkJaXNfZW5mb3JjZWQ7CS8qIGlz IGVuZm9yY2VkPyAob25seSBmb3IgQ0hFQ0spICovCiAJYm9vbAkJaXNfbG9jYWw7CQkvKiBjb25z dHJhaW50IGhhcyBsb2NhbCAobm9uLWluaGVyaXRlZCkgZGVmICovCiAJaW50CQkJaW5oY291bnQ7 CQkvKiBudW1iZXIgb2YgdGltZXMgY29uc3RyYWludCBpcyBpbmhlcml0ZWQgKi8KIAlib29sCQlp c19ub19pbmhlcml0OwkvKiBjb25zdHJhaW50IGhhcyBsb2NhbCBkZWYgYW5kIGNhbm5vdCBiZQpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19jb25zdHJhaW50LmggYi9zcmMvaW5j bHVkZS9jYXRhbG9nL3BnX2NvbnN0cmFpbnQuaAppbmRleCAxMTUyMTdhNjE2Mi4uMjIwNzRjZDll OGEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY29uc3RyYWludC5oCisrKyBi L3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY29uc3RyYWludC5oCkBAIC01Miw2ICs1Miw3IEBAIENB VEFMT0cocGdfY29uc3RyYWludCwyNjA2LENvbnN0cmFpbnRSZWxhdGlvbklkKQogCWJvb2wJCWNv bmRlZmVycmFibGU7CS8qIGRlZmVycmFibGUgY29uc3RyYWludD8gKi8KIAlib29sCQljb25kZWZl cnJlZDsJLyogZGVmZXJyZWQgYnkgZGVmYXVsdD8gKi8KIAlib29sCQljb252YWxpZGF0ZWQ7CS8q IGNvbnN0cmFpbnQgaGFzIGJlZW4gdmFsaWRhdGVkPyAqLworCWJvb2wJCWNvbmVuZm9yY2VkOwkv KiBlbmZvcmNlZCBjb25zdHJhaW50PyAqLwogCiAJLyoKIAkgKiBjb25yZWxpZCBhbmQgY29ua2V5 IGFyZSBvbmx5IG1lYW5pbmdmdWwgaWYgdGhlIGNvbnN0cmFpbnQgYXBwbGllcyB0byBhCkBAIC0y MjMsNiArMjI0LDcgQEAgZXh0ZXJuIE9pZAlDcmVhdGVDb25zdHJhaW50RW50cnkoY29uc3QgY2hh ciAqY29uc3RyYWludE5hbWUsCiAJCQkJCQkJCSAgYm9vbCBpc0RlZmVycmFibGUsCiAJCQkJCQkJ CSAgYm9vbCBpc0RlZmVycmVkLAogCQkJCQkJCQkgIGJvb2wgaXNWYWxpZGF0ZWQsCisJCQkJCQkJ CSAgYm9vbCBpc0VuZm9yY2VkLAogCQkJCQkJCQkgIE9pZCBwYXJlbnRDb25zdHJJZCwKIAkJCQkJ CQkJICBPaWQgcmVsSWQsCiAJCQkJCQkJCSAgY29uc3QgaW50MTYgKmNvbnN0cmFpbnRLZXksCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggYi9zcmMvaW5jbHVkZS9u b2Rlcy9wYXJzZW5vZGVzLmgKaW5kZXggMWMzMTRjZDkwNzQuLmMyOTAwMmVkYjI0IDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9k ZXMvcGFyc2Vub2Rlcy5oCkBAIC0yNzI1LDYgKzI3MjUsOCBAQCB0eXBlZGVmIGVudW0gQ29uc3Ry VHlwZQkJCS8qIHR5cGVzIG9mIGNvbnN0cmFpbnRzICovCiAJQ09OU1RSX0FUVFJfTk9UX0RFRkVS UkFCTEUsCiAJQ09OU1RSX0FUVFJfREVGRVJSRUQsCiAJQ09OU1RSX0FUVFJfSU1NRURJQVRFLAor CUNPTlNUUl9BVFRSX0VORk9SQ0VELAorCUNPTlNUUl9BVFRSX05PVF9FTkZPUkNFRCwKIH0gQ29u c3RyVHlwZTsKIAogLyogRm9yZWlnbiBrZXkgYWN0aW9uIGNvZGVzICovCkBAIC0yNzQ4LDYgKzI3 NTAsNyBAQCB0eXBlZGVmIHN0cnVjdCBDb25zdHJhaW50CiAJYm9vbAkJaW5pdGRlZmVycmVkOwkv KiBJTklUSUFMTFkgREVGRVJSRUQ/ICovCiAJYm9vbAkJc2tpcF92YWxpZGF0aW9uOwkvKiBza2lw IHZhbGlkYXRpb24gb2YgZXhpc3Rpbmcgcm93cz8gKi8KIAlib29sCQlpbml0aWFsbHlfdmFsaWQ7 CS8qIG1hcmsgdGhlIG5ldyBjb25zdHJhaW50IGFzIHZhbGlkPyAqLworCWJvb2wJCWlzX2VuZm9y Y2VkOwkJLyogZW5mb3JjZWQgY29uc3RyYWludD8gKi8KIAlib29sCQlpc19ub19pbmhlcml0Owkv KiBpcyBjb25zdHJhaW50IG5vbi1pbmhlcml0YWJsZT8gKi8KIAlOb2RlCSAgICpyYXdfZXhwcjsJ CS8qIENIRUNLIG9yIERFRkFVTFQgZXhwcmVzc2lvbiwgYXMKIAkJCQkJCQkJICogdW50cmFuc2Zv cm1lZCBwYXJzZSB0cmVlICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0 LmggYi9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgKaW5kZXggODk5ZDY0YWQ1NWYuLmYyYmMz NzgzOTRlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgKKysrIGIvc3Jj L2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCkBAIC0xNTMsNiArMTUzLDcgQEAgUEdfS0VZV09SRCgi ZW5hYmxlIiwgRU5BQkxFX1AsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tF WVdPUkQoImVuY29kaW5nIiwgRU5DT0RJTkcsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJF TCkKIFBHX0tFWVdPUkQoImVuY3J5cHRlZCIsIEVOQ1JZUFRFRCwgVU5SRVNFUlZFRF9LRVlXT1JE LCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgiZW5kIiwgRU5EX1AsIFJFU0VSVkVEX0tFWVdPUkQs IEJBUkVfTEFCRUwpCitQR19LRVlXT1JEKCJlbmZvcmNlZCIsIEVORk9SQ0VELCBVTlJFU0VSVkVE X0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJlbnVtIiwgRU5VTV9QLCBVTlJFU0VS VkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJlcnJvciIsIEVSUk9SX1AsIFVO UkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoImVzY2FwZSIsIEVTQ0FQ RSwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9jb25zdHJhaW50cy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL2NvbnN0cmFpbnRzLm91dAppbmRleCBjZjBiODBkNjE2OS4uN2ZjMWNlZDdlZmMgMTAwNjQ0 Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29uc3RyYWludHMub3V0CisrKyBiL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29uc3RyYWludHMub3V0CkBAIC04Niw2ICs4NiwyNSBA QCBTRUxFQ1QgKiBGUk9NIENIRUNLX1RCTDsKICA2CiAoMyByb3dzKQogCitDUkVBVEUgVEFCTEUg TkVfQ0hFQ0tfVEJMICh4IGludCwKKwlDT05TVFJBSU5UIENIRUNLX0NPTiBDSEVDSyAoeCA+IDMp IE5PVCBFTkZPUkNFRCk7CitJTlNFUlQgSU5UTyBORV9DSEVDS19UQkwgVkFMVUVTICg1KTsKK0lO U0VSVCBJTlRPIE5FX0NIRUNLX1RCTCBWQUxVRVMgKDQpOworSU5TRVJUIElOVE8gTkVfQ0hFQ0tf VEJMIFZBTFVFUyAoMyk7CitJTlNFUlQgSU5UTyBORV9DSEVDS19UQkwgVkFMVUVTICgyKTsKK0lO U0VSVCBJTlRPIE5FX0NIRUNLX1RCTCBWQUxVRVMgKDYpOworSU5TRVJUIElOVE8gTkVfQ0hFQ0tf VEJMIFZBTFVFUyAoMSk7CitTRUxFQ1QgKiBGUk9NIE5FX0NIRUNLX1RCTDsKKyB4IAorLS0tCisg NQorIDQKKyAzCisgMgorIDYKKyAxCisoNiByb3dzKQorCiBDUkVBVEUgU0VRVUVOQ0UgQ0hFQ0tf U0VROwogQ1JFQVRFIFRBQkxFIENIRUNLMl9UQkwgKHggaW50LCB5IHRleHQsIHogaW50LAogCUNP TlNUUkFJTlQgU0VRVUVOQ0VfQ09OCkBAIC0xMTksNyArMTM4LDggQEAgQ1JFQVRFIFRBQkxFIElO U0VSVF9UQkwgKHggSU5UIERFRkFVTFQgbmV4dHZhbCgnaW5zZXJ0X3NlcScpLAogCXkgVEVYVCBE RUZBVUxUICctTlVMTC0nLAogCXogSU5UIERFRkFVTFQgLTEgKiBjdXJydmFsKCdpbnNlcnRfc2Vx JyksCiAJQ09OU1RSQUlOVCBJTlNFUlRfVEJMX0NPTiBDSEVDSyAoeCA+PSAzIEFORCB5IDw+ICdj aGVjayBmYWlsZWQnIEFORCB4IDwgOCksCi0JQ0hFQ0sgKHggKyB6ID0gMCkpOworCUNIRUNLICh4 ICsgeiA9IDApIEVORk9SQ0VELCAvKiBubyBjaGFuZ2UgaXQgaXMgYSBkZWZhdWx0ICovCisJQ09O U1RSQUlOVCBORV9JTlNFUlRfVEJMX0NPTiBDSEVDSyAoeCArIHogPSAxKSBOT1QgRU5GT1JDRUQp OwogSU5TRVJUIElOVE8gSU5TRVJUX1RCTCh4LHopIFZBTFVFUyAoMiwgLTIpOwogRVJST1I6ICBu ZXcgcm93IGZvciByZWxhdGlvbiAiaW5zZXJ0X3RibCIgdmlvbGF0ZXMgY2hlY2sgY29uc3RyYWlu dCAiaW5zZXJ0X3RibF9jb24iCiBERVRBSUw6ICBGYWlsaW5nIHJvdyBjb250YWlucyAoMiwgLU5V TEwtLCAtMikuCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jb25zdHJhaW50cy5z cWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jb25zdHJhaW50cy5zcWwKaW5kZXggZTNlM2JlYTcw OTEuLmRhYzRmMDNiZDcxIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jb25zdHJh aW50cy5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29uc3RyYWludHMuc3FsCkBAIC02 Niw2ICs2NiwxOCBAQCBJTlNFUlQgSU5UTyBDSEVDS19UQkwgVkFMVUVTICgxKTsKIAogU0VMRUNU ICogRlJPTSBDSEVDS19UQkw7CiAKK0NSRUFURSBUQUJMRSBORV9DSEVDS19UQkwgKHggaW50LAor CUNPTlNUUkFJTlQgQ0hFQ0tfQ09OIENIRUNLICh4ID4gMykgTk9UIEVORk9SQ0VEKTsKKworSU5T RVJUIElOVE8gTkVfQ0hFQ0tfVEJMIFZBTFVFUyAoNSk7CitJTlNFUlQgSU5UTyBORV9DSEVDS19U QkwgVkFMVUVTICg0KTsKK0lOU0VSVCBJTlRPIE5FX0NIRUNLX1RCTCBWQUxVRVMgKDMpOworSU5T RVJUIElOVE8gTkVfQ0hFQ0tfVEJMIFZBTFVFUyAoMik7CitJTlNFUlQgSU5UTyBORV9DSEVDS19U QkwgVkFMVUVTICg2KTsKK0lOU0VSVCBJTlRPIE5FX0NIRUNLX1RCTCBWQUxVRVMgKDEpOworCitT RUxFQ1QgKiBGUk9NIE5FX0NIRUNLX1RCTDsKKwogQ1JFQVRFIFNFUVVFTkNFIENIRUNLX1NFUTsK IAogQ1JFQVRFIFRBQkxFIENIRUNLMl9UQkwgKHggaW50LCB5IHRleHQsIHogaW50LApAQCAtOTEs NyArMTAzLDggQEAgQ1JFQVRFIFRBQkxFIElOU0VSVF9UQkwgKHggSU5UIERFRkFVTFQgbmV4dHZh bCgnaW5zZXJ0X3NlcScpLAogCXkgVEVYVCBERUZBVUxUICctTlVMTC0nLAogCXogSU5UIERFRkFV TFQgLTEgKiBjdXJydmFsKCdpbnNlcnRfc2VxJyksCiAJQ09OU1RSQUlOVCBJTlNFUlRfVEJMX0NP TiBDSEVDSyAoeCA+PSAzIEFORCB5IDw+ICdjaGVjayBmYWlsZWQnIEFORCB4IDwgOCksCi0JQ0hF Q0sgKHggKyB6ID0gMCkpOworCUNIRUNLICh4ICsgeiA9IDApIEVORk9SQ0VELCAvKiBubyBjaGFu Z2UgaXQgaXMgYSBkZWZhdWx0ICovCisJQ09OU1RSQUlOVCBORV9JTlNFUlRfVEJMX0NPTiBDSEVD SyAoeCArIHogPSAxKSBOT1QgRU5GT1JDRUQpOwogCiBJTlNFUlQgSU5UTyBJTlNFUlRfVEJMKHgs eikgVkFMVUVTICgyLCAtMik7CiAKLS0gCjIuMTguMAoK --000000000000effd7c0623f376c1 Content-Type: application/x-patch; name="v1-0002-refactor-split-ATExecAlterConstrRecurse.patch" Content-Disposition: attachment; filename="v1-0002-refactor-split-ATExecAlterConstrRecurse.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m207d93k1 RnJvbSBlNzFkYzE1MzgxYTNlNzg3NmRlNmZiMzlhOGMzYWI2N2YwOTBkODliIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8YW11bC5zdWxAZW50ZXJwcmlzZWRiLmNvbT4K RGF0ZTogTW9uLCAyMyBTZXAgMjAyNCAxMjozMTowNyArMDUzMApTdWJqZWN0OiBbUEFUQ0ggdjEg Mi81XSByZWZhY3Rvcjogc3BsaXQgQVRFeGVjQWx0ZXJDb25zdHJSZWN1cnNlKCkKCldoZW4gY2hh bmdpbmcgYSBOT1QgRU5GT1JDRUQgZm9yZWlnbiBrZXkgY29uc3RyYWludCB0byBFTkZPUkNFRCwg d2UKbmVlZCB0byBjcmVhdGUgdGhlIG5lY2Vzc2FyeSB0cmlnZ2VycyBmb3IgZW5mb3JjaW5nIHRo ZSBjb25zdHJhaW50LiBXZQpjYW4gc2V0IHRoZSBkZWZlcnJhYmlsaXR5IGF0IHRoZSB0aW1lIG9m IGNyZWF0aW9uIGFuZCBza2lwIHRoZSBjb2RlCnVzZWQgZm9yIG90aGVyIGNvbnN0cmFpbnQgYWx0 ZXJhdGlvbiBvcGVyYXRpb25zLgoKQWRkaXRpb25hbGx5LCBtb3ZlIHRoZSBjb2RlIHRoYXQgaXRl cmF0ZXMgb3ZlciBlYWNoIGNoaWxkIGNvbnN0cmFpbnQKb2YgdGhlIGNvbnN0cmFpbnQgYmVpbmcg YWx0ZXJlZCBpbnRvIGEgc2VwYXJhdGUgZnVuY3Rpb24uCi0tLQogc3JjL2JhY2tlbmQvY29tbWFu ZHMvdGFibGVjbWRzLmMgfCAxOTQgKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQogMSBm aWxlIGNoYW5nZWQsIDExOCBpbnNlcnRpb25zKCspLCA3NiBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1h bmRzL3RhYmxlY21kcy5jCmluZGV4IDZmNzEyM2U1ZjcxLi5mZTc4NmYwMjMwNCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvdGFibGVjbWRzLmMKQEAgLTM4NCw2ICszODQsMTIgQEAgc3RhdGljIE9iamVjdEFkZHJl c3MgQVRFeGVjQWx0ZXJDb25zdHJhaW50KFJlbGF0aW9uIHJlbCwgQWx0ZXJUYWJsZUNtZCAqY21k LAogc3RhdGljIGJvb2wgQVRFeGVjQWx0ZXJDb25zdHJSZWN1cnNlKENvbnN0cmFpbnQgKmNtZGNv biwgUmVsYXRpb24gY29ucmVsLCBSZWxhdGlvbiB0Z3JlbCwKIAkJCQkJCQkJCSBSZWxhdGlvbiBy ZWwsIEhlYXBUdXBsZSBjb250dXBsZSwgTGlzdCAqKm90aGVycmVsaWRzLAogCQkJCQkJCQkJIExP Q0tNT0RFIGxvY2ttb2RlKTsKK3N0YXRpYyB2b2lkIEFsdGVyQ29uc3RyVHJpZ2dlckRlZmVycmFi aWxpdHkoT2lkIGNvbm9pZCwgUmVsYXRpb24gdGdyZWwsIFJlbGF0aW9uIHJlbCwKKwkJCQkJCQkJ CQkJYm9vbCBkZWZlcnJhYmxlLCBib29sIGluaXRkZWZlcnJlZCwKKwkJCQkJCQkJCQkJTGlzdCAq Km90aGVycmVsaWRzKTsKK3N0YXRpYyB2b2lkIEFURXhlY0FsdGVyQ2hpbGRDb25zdHIoQ29uc3Ry YWludCAqY21kY29uLCBSZWxhdGlvbiBjb25yZWwsIFJlbGF0aW9uIHRncmVsLAorCQkJCQkJCQkg ICBSZWxhdGlvbiByZWwsIEhlYXBUdXBsZSBjb250dXBsZSwgTGlzdCAqKm90aGVycmVsaWRzLAor CQkJCQkJCQkgICBMT0NLTU9ERSBsb2NrbW9kZSk7CiBzdGF0aWMgT2JqZWN0QWRkcmVzcyBBVEV4 ZWNWYWxpZGF0ZUNvbnN0cmFpbnQoTGlzdCAqKndxdWV1ZSwKIAkJCQkJCQkJCQkJICBSZWxhdGlv biByZWwsIGNoYXIgKmNvbnN0ck5hbWUsCiAJCQkJCQkJCQkJCSAgYm9vbCByZWN1cnNlLCBib29s IHJlY3Vyc2luZywgTE9DS01PREUgbG9ja21vZGUpOwpAQCAtMTE1NzcsOSArMTE1ODMsNiBAQCBB VEV4ZWNBbHRlckNvbnN0clJlY3Vyc2UoQ29uc3RyYWludCAqY21kY29uLCBSZWxhdGlvbiBjb25y ZWwsIFJlbGF0aW9uIHRncmVsLAogCXsKIAkJSGVhcFR1cGxlCWNvcHlUdXBsZTsKIAkJRm9ybV9w Z19jb25zdHJhaW50IGNvcHlfY29uOwotCQlIZWFwVHVwbGUJdGd0dXBsZTsKLQkJU2NhbktleURh dGEgdGdrZXk7Ci0JCVN5c1NjYW5EZXNjIHRnc2NhbjsKIAogCQljb3B5VHVwbGUgPSBoZWFwX2Nv cHl0dXBsZShjb250dXBsZSk7CiAJCWNvcHlfY29uID0gKEZvcm1fcGdfY29uc3RyYWludCkgR0VU U1RSVUNUKGNvcHlUdXBsZSk7CkBAIC0xMTYwMCw1MyArMTE2MDMsOCBAQCBBVEV4ZWNBbHRlckNv bnN0clJlY3Vyc2UoQ29uc3RyYWludCAqY21kY29uLCBSZWxhdGlvbiBjb25yZWwsIFJlbGF0aW9u IHRncmVsLAogCQkgKiBOb3cgd2UgbmVlZCB0byB1cGRhdGUgdGhlIG11bHRpcGxlIGVudHJpZXMg aW4gcGdfdHJpZ2dlciB0aGF0CiAJCSAqIGltcGxlbWVudCB0aGUgY29uc3RyYWludC4KIAkJICov Ci0JCVNjYW5LZXlJbml0KCZ0Z2tleSwKLQkJCQkJQW51bV9wZ190cmlnZ2VyX3RnY29uc3RyYWlu dCwKLQkJCQkJQlRFcXVhbFN0cmF0ZWd5TnVtYmVyLCBGX09JREVRLAotCQkJCQlPYmplY3RJZEdl dERhdHVtKGNvbm9pZCkpOwotCQl0Z3NjYW4gPSBzeXN0YWJsZV9iZWdpbnNjYW4odGdyZWwsIFRy aWdnZXJDb25zdHJhaW50SW5kZXhJZCwgdHJ1ZSwKLQkJCQkJCQkJCU5VTEwsIDEsICZ0Z2tleSk7 Ci0JCXdoaWxlIChIZWFwVHVwbGVJc1ZhbGlkKHRndHVwbGUgPSBzeXN0YWJsZV9nZXRuZXh0KHRn c2NhbikpKQotCQl7Ci0JCQlGb3JtX3BnX3RyaWdnZXIgdGdmb3JtID0gKEZvcm1fcGdfdHJpZ2dl cikgR0VUU1RSVUNUKHRndHVwbGUpOwotCQkJRm9ybV9wZ190cmlnZ2VyIGNvcHlfdGc7Ci0JCQlI ZWFwVHVwbGUJdGdDb3B5VHVwbGU7Ci0KLQkJCS8qCi0JCQkgKiBSZW1lbWJlciBPSURzIG9mIG90 aGVyIHJlbGF0aW9uKHMpIGludm9sdmVkIGluIEZLIGNvbnN0cmFpbnQuCi0JCQkgKiAoTm90ZTog aXQncyBsaWtlbHkgdGhhdCB3ZSBjb3VsZCBza2lwIGZvcmNpbmcgYSByZWxjYWNoZSBpbnZhbAot CQkJICogZm9yIG90aGVyIHJlbHMgdGhhdCBkb24ndCBoYXZlIGEgdHJpZ2dlciB3aG9zZSBwcm9w ZXJ0aWVzCi0JCQkgKiBjaGFuZ2UsIGJ1dCBsZXQncyBiZSBjb25zZXJ2YXRpdmUuKQotCQkJICov Ci0JCQlpZiAodGdmb3JtLT50Z3JlbGlkICE9IFJlbGF0aW9uR2V0UmVsaWQocmVsKSkKLQkJCQkq b3RoZXJyZWxpZHMgPSBsaXN0X2FwcGVuZF91bmlxdWVfb2lkKCpvdGhlcnJlbGlkcywKLQkJCQkJ CQkJCQkJCQkgIHRnZm9ybS0+dGdyZWxpZCk7Ci0KLQkJCS8qCi0JCQkgKiBVcGRhdGUgZGVmZXJy YWJpbGl0eSBvZiBSSV9GS2V5X25vYWN0aW9uX2RlbCwKLQkJCSAqIFJJX0ZLZXlfbm9hY3Rpb25f dXBkLCBSSV9GS2V5X2NoZWNrX2lucyBhbmQgUklfRktleV9jaGVja191cGQKLQkJCSAqIHRyaWdn ZXJzLCBidXQgbm90IG90aGVyczsgc2VlIGNyZWF0ZUZvcmVpZ25LZXlBY3Rpb25UcmlnZ2Vycwot CQkJICogYW5kIENyZWF0ZUZLQ2hlY2tUcmlnZ2VyLgotCQkJICovCi0JCQlpZiAodGdmb3JtLT50 Z2ZvaWQgIT0gRl9SSV9GS0VZX05PQUNUSU9OX0RFTCAmJgotCQkJCXRnZm9ybS0+dGdmb2lkICE9 IEZfUklfRktFWV9OT0FDVElPTl9VUEQgJiYKLQkJCQl0Z2Zvcm0tPnRnZm9pZCAhPSBGX1JJX0ZL RVlfQ0hFQ0tfSU5TICYmCi0JCQkJdGdmb3JtLT50Z2ZvaWQgIT0gRl9SSV9GS0VZX0NIRUNLX1VQ RCkKLQkJCQljb250aW51ZTsKLQotCQkJdGdDb3B5VHVwbGUgPSBoZWFwX2NvcHl0dXBsZSh0Z3R1 cGxlKTsKLQkJCWNvcHlfdGcgPSAoRm9ybV9wZ190cmlnZ2VyKSBHRVRTVFJVQ1QodGdDb3B5VHVw bGUpOwotCi0JCQljb3B5X3RnLT50Z2RlZmVycmFibGUgPSBjbWRjb24tPmRlZmVycmFibGU7Ci0J CQljb3B5X3RnLT50Z2luaXRkZWZlcnJlZCA9IGNtZGNvbi0+aW5pdGRlZmVycmVkOwotCQkJQ2F0 YWxvZ1R1cGxlVXBkYXRlKHRncmVsLCAmdGdDb3B5VHVwbGUtPnRfc2VsZiwgdGdDb3B5VHVwbGUp OwotCi0JCQlJbnZva2VPYmplY3RQb3N0QWx0ZXJIb29rKFRyaWdnZXJSZWxhdGlvbklkLCB0Z2Zv cm0tPm9pZCwgMCk7Ci0KLQkJCWhlYXBfZnJlZXR1cGxlKHRnQ29weVR1cGxlKTsKLQkJfQotCi0J CXN5c3RhYmxlX2VuZHNjYW4odGdzY2FuKTsKKwkJQWx0ZXJDb25zdHJUcmlnZ2VyRGVmZXJyYWJp bGl0eShjb25vaWQsIHRncmVsLCByZWwsIGNtZGNvbi0+ZGVmZXJyYWJsZSwKKwkJCQkJCQkJCQlj bWRjb24tPmluaXRkZWZlcnJlZCwgb3RoZXJyZWxpZHMpOwogCX0KIAogCS8qCkBAIC0xMTY1OSwz NiArMTE2MTcsMTIwIEBAIEFURXhlY0FsdGVyQ29uc3RyUmVjdXJzZShDb25zdHJhaW50ICpjbWRj b24sIFJlbGF0aW9uIGNvbnJlbCwgUmVsYXRpb24gdGdyZWwsCiAJICovCiAJaWYgKHJlbC0+cmRf cmVsLT5yZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUgfHwKIAkJZ2V0X3JlbF9y ZWxraW5kKHJlZnJlbGlkKSA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFKQotCXsKLQkJU2Nh bktleURhdGEgcGtleTsKLQkJU3lzU2NhbkRlc2MgcHNjYW47Ci0JCUhlYXBUdXBsZQljaGlsZHR1 cDsKLQotCQlTY2FuS2V5SW5pdCgmcGtleSwKLQkJCQkJQW51bV9wZ19jb25zdHJhaW50X2NvbnBh cmVudGlkLAotCQkJCQlCVEVxdWFsU3RyYXRlZ3lOdW1iZXIsIEZfT0lERVEsCi0JCQkJCU9iamVj dElkR2V0RGF0dW0oY29ub2lkKSk7Ci0KLQkJcHNjYW4gPSBzeXN0YWJsZV9iZWdpbnNjYW4oY29u cmVsLCBDb25zdHJhaW50UGFyZW50SW5kZXhJZCwKLQkJCQkJCQkJICAgdHJ1ZSwgTlVMTCwgMSwg JnBrZXkpOwotCi0JCXdoaWxlIChIZWFwVHVwbGVJc1ZhbGlkKGNoaWxkdHVwID0gc3lzdGFibGVf Z2V0bmV4dChwc2NhbikpKQotCQl7Ci0JCQlGb3JtX3BnX2NvbnN0cmFpbnQgY2hpbGRjb24gPSAo Rm9ybV9wZ19jb25zdHJhaW50KSBHRVRTVFJVQ1QoY2hpbGR0dXApOwotCQkJUmVsYXRpb24JY2hp bGRyZWw7Ci0KLQkJCWNoaWxkcmVsID0gdGFibGVfb3BlbihjaGlsZGNvbi0+Y29ucmVsaWQsIGxv Y2ttb2RlKTsKLQkJCUFURXhlY0FsdGVyQ29uc3RyUmVjdXJzZShjbWRjb24sIGNvbnJlbCwgdGdy ZWwsIGNoaWxkcmVsLCBjaGlsZHR1cCwKLQkJCQkJCQkJCSBvdGhlcnJlbGlkcywgbG9ja21vZGUp OwotCQkJdGFibGVfY2xvc2UoY2hpbGRyZWwsIE5vTG9jayk7Ci0JCX0KLQotCQlzeXN0YWJsZV9l bmRzY2FuKHBzY2FuKTsKLQl9CisJCUFURXhlY0FsdGVyQ2hpbGRDb25zdHIoY21kY29uLCBjb25y ZWwsIHRncmVsLCByZWwsIGNvbnR1cGxlLAorCQkJCQkJCSAgIG90aGVycmVsaWRzLCBsb2NrbW9k ZSk7CiAKIAlyZXR1cm4gY2hhbmdlZDsKIH0KIAorLyoKKyAqIEEgc3Vicm91dGluZSBvZiBBVEV4 ZWNBbHRlckNvbnN0clJlY3Vyc2UgdGhhdCB1cGRhdGVkIGNvbnN0cmFpbnQgdHJpZ2dlcidzCisg KiBkZWZlcnJhYmlsaXR5LgorICoKKyAqIFRoZSBhcmd1bWVudHMgdG8gdGhpcyBmdW5jdGlvbiBo YXZlIHRoZSBzYW1lIG1lYW5pbmcgYXMgdGhlIGFyZ3VtZW50cyB0bworICogQVRFeGVjQWx0ZXJD b25zdHJSZWN1cnNlLgorICovCitzdGF0aWMgdm9pZAorQWx0ZXJDb25zdHJUcmlnZ2VyRGVmZXJy YWJpbGl0eShPaWQgY29ub2lkLCBSZWxhdGlvbiB0Z3JlbCwgUmVsYXRpb24gcmVsLAorCQkJCQkJ CQlib29sIGRlZmVycmFibGUsIGJvb2wgaW5pdGRlZmVycmVkLAorCQkJCQkJCQlMaXN0ICoqb3Ro ZXJyZWxpZHMpCit7CisJSGVhcFR1cGxlCXRndHVwbGU7CisJU2NhbktleURhdGEgdGdrZXk7CisJ U3lzU2NhbkRlc2MgdGdzY2FuOworCisJU2NhbktleUluaXQoJnRna2V5LAorCQkJCUFudW1fcGdf dHJpZ2dlcl90Z2NvbnN0cmFpbnQsCisJCQkJQlRFcXVhbFN0cmF0ZWd5TnVtYmVyLCBGX09JREVR LAorCQkJCU9iamVjdElkR2V0RGF0dW0oY29ub2lkKSk7CisJdGdzY2FuID0gc3lzdGFibGVfYmVn aW5zY2FuKHRncmVsLCBUcmlnZ2VyQ29uc3RyYWludEluZGV4SWQsIHRydWUsCisJCQkJCQkJCU5V TEwsIDEsICZ0Z2tleSk7CisJd2hpbGUgKEhlYXBUdXBsZUlzVmFsaWQodGd0dXBsZSA9IHN5c3Rh YmxlX2dldG5leHQodGdzY2FuKSkpCisJeworCQlGb3JtX3BnX3RyaWdnZXIgdGdmb3JtID0gKEZv cm1fcGdfdHJpZ2dlcikgR0VUU1RSVUNUKHRndHVwbGUpOworCQlGb3JtX3BnX3RyaWdnZXIgY29w eV90ZzsKKwkJSGVhcFR1cGxlCXRnQ29weVR1cGxlOworCisJCS8qCisJCSAqIFJlbWVtYmVyIE9J RHMgb2Ygb3RoZXIgcmVsYXRpb24ocykgaW52b2x2ZWQgaW4gRksgY29uc3RyYWludC4KKwkJICog KE5vdGU6IGl0J3MgbGlrZWx5IHRoYXQgd2UgY291bGQgc2tpcCBmb3JjaW5nIGEgcmVsY2FjaGUg aW52YWwgZm9yCisJCSAqIG90aGVyIHJlbHMgdGhhdCBkb24ndCBoYXZlIGEgdHJpZ2dlciB3aG9z ZSBwcm9wZXJ0aWVzIGNoYW5nZSwgYnV0CisJCSAqIGxldCdzIGJlIGNvbnNlcnZhdGl2ZS4pCisJ CSAqLworCQlpZiAodGdmb3JtLT50Z3JlbGlkICE9IFJlbGF0aW9uR2V0UmVsaWQocmVsKSkKKwkJ CSpvdGhlcnJlbGlkcyA9IGxpc3RfYXBwZW5kX3VuaXF1ZV9vaWQoKm90aGVycmVsaWRzLAorCQkJ CQkJCQkJCQkJICB0Z2Zvcm0tPnRncmVsaWQpOworCisJCS8qCisJCSAqIFVwZGF0ZSBlbmFibGUg c3RhdHVzIGFuZCBkZWZlcnJhYmlsaXR5IG9mIFJJX0ZLZXlfbm9hY3Rpb25fZGVsLAorCQkgKiBS SV9GS2V5X25vYWN0aW9uX3VwZCwgUklfRktleV9jaGVja19pbnMgYW5kIFJJX0ZLZXlfY2hlY2tf dXBkCisJCSAqIHRyaWdnZXJzLCBidXQgbm90IG90aGVyczsgc2VlIGNyZWF0ZUZvcmVpZ25LZXlB Y3Rpb25UcmlnZ2VycyBhbmQKKwkJICogQ3JlYXRlRktDaGVja1RyaWdnZXIuCisJCSAqLworCQlp ZiAodGdmb3JtLT50Z2ZvaWQgIT0gRl9SSV9GS0VZX05PQUNUSU9OX0RFTCAmJgorCQkJdGdmb3Jt LT50Z2ZvaWQgIT0gRl9SSV9GS0VZX05PQUNUSU9OX1VQRCAmJgorCQkJdGdmb3JtLT50Z2ZvaWQg IT0gRl9SSV9GS0VZX0NIRUNLX0lOUyAmJgorCQkJdGdmb3JtLT50Z2ZvaWQgIT0gRl9SSV9GS0VZ X0NIRUNLX1VQRCkKKwkJCWNvbnRpbnVlOworCisJCXRnQ29weVR1cGxlID0gaGVhcF9jb3B5dHVw bGUodGd0dXBsZSk7CisJCWNvcHlfdGcgPSAoRm9ybV9wZ190cmlnZ2VyKSBHRVRTVFJVQ1QodGdD b3B5VHVwbGUpOworCisJCWNvcHlfdGctPnRnZGVmZXJyYWJsZSA9IGRlZmVycmFibGU7CisJCWNv cHlfdGctPnRnaW5pdGRlZmVycmVkID0gaW5pdGRlZmVycmVkOworCQlDYXRhbG9nVHVwbGVVcGRh dGUodGdyZWwsICZ0Z0NvcHlUdXBsZS0+dF9zZWxmLCB0Z0NvcHlUdXBsZSk7CisKKwkJSW52b2tl T2JqZWN0UG9zdEFsdGVySG9vayhUcmlnZ2VyUmVsYXRpb25JZCwgdGdmb3JtLT5vaWQsIDApOwor CisJCWhlYXBfZnJlZXR1cGxlKHRnQ29weVR1cGxlKTsKKwl9CisKKwlzeXN0YWJsZV9lbmRzY2Fu KHRnc2Nhbik7Cit9CisKKy8qCisgKiBJbnZva2VzIEFURXhlY0FsdGVyQ29uc3RyUmVjdXJzZSBm b3IgZWFjaCBjb25zdHJhaW50IHRoYXQgaXMgYSBjaGlsZCBvZiB0aGUKKyAqIHNwZWNpZmllZCBj b25zdHJhaW50LgorICoKKyAqIFRoZSBhcmd1bWVudHMgdG8gdGhpcyBmdW5jdGlvbiBoYXZlIHRo ZSBzYW1lIG1lYW5pbmcgYXMgdGhlIGFyZ3VtZW50cyB0bworICogQVRFeGVjQWx0ZXJDb25zdHJS ZWN1cnNlLgorICovCitzdGF0aWMgdm9pZAorQVRFeGVjQWx0ZXJDaGlsZENvbnN0cihDb25zdHJh aW50ICpjbWRjb24sIFJlbGF0aW9uIGNvbnJlbCwgUmVsYXRpb24gdGdyZWwsCisJCQkJCSAgIFJl bGF0aW9uIHJlbCwgSGVhcFR1cGxlIGNvbnR1cGxlLCBMaXN0ICoqb3RoZXJyZWxpZHMsCisJCQkJ CSAgIExPQ0tNT0RFIGxvY2ttb2RlKQoreworCUZvcm1fcGdfY29uc3RyYWludCBjdXJyY29uOwor CU9pZAkJCWNvbm9pZDsKKwlTY2FuS2V5RGF0YSBwa2V5OworCVN5c1NjYW5EZXNjIHBzY2FuOwor CUhlYXBUdXBsZQljaGlsZHR1cDsKKworCWN1cnJjb24gPSAoRm9ybV9wZ19jb25zdHJhaW50KSBH RVRTVFJVQ1QoY29udHVwbGUpOworCWNvbm9pZCA9IGN1cnJjb24tPm9pZDsKKworCVNjYW5LZXlJ bml0KCZwa2V5LAorCQkJCUFudW1fcGdfY29uc3RyYWludF9jb25wYXJlbnRpZCwKKwkJCQlCVEVx dWFsU3RyYXRlZ3lOdW1iZXIsIEZfT0lERVEsCisJCQkJT2JqZWN0SWRHZXREYXR1bShjb25vaWQp KTsKKworCXBzY2FuID0gc3lzdGFibGVfYmVnaW5zY2FuKGNvbnJlbCwgQ29uc3RyYWludFBhcmVu dEluZGV4SWQsCisJCQkJCQkJICAgdHJ1ZSwgTlVMTCwgMSwgJnBrZXkpOworCisJd2hpbGUgKEhl YXBUdXBsZUlzVmFsaWQoY2hpbGR0dXAgPSBzeXN0YWJsZV9nZXRuZXh0KHBzY2FuKSkpCisJewor CQlGb3JtX3BnX2NvbnN0cmFpbnQgY2hpbGRjb24gPSAoRm9ybV9wZ19jb25zdHJhaW50KSBHRVRT VFJVQ1QoY2hpbGR0dXApOworCQlSZWxhdGlvbgljaGlsZHJlbDsKKworCQljaGlsZHJlbCA9IHRh YmxlX29wZW4oY2hpbGRjb24tPmNvbnJlbGlkLCBsb2NrbW9kZSk7CisJCUFURXhlY0FsdGVyQ29u c3RyUmVjdXJzZShjbWRjb24sIGNvbnJlbCwgdGdyZWwsIGNoaWxkcmVsLCBjaGlsZHR1cCwKKwkJ CQkJCQkJIG90aGVycmVsaWRzLCBsb2NrbW9kZSk7CisJCXRhYmxlX2Nsb3NlKGNoaWxkcmVsLCBO b0xvY2spOworCX0KKworCXN5c3RhYmxlX2VuZHNjYW4ocHNjYW4pOworfQorCiAvKgogICogQUxU RVIgVEFCTEUgVkFMSURBVEUgQ09OU1RSQUlOVAogICoKLS0gCjIuMTguMAoK --000000000000effd7c0623f376c1 Content-Type: application/x-patch; name="v1-0003-refactor-Change-ATExecAlterConstrRecurse-argument.patch" Content-Disposition: attachment; filename="v1-0003-refactor-Change-ATExecAlterConstrRecurse-argument.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m207deee2 RnJvbSBkY2EzNmFiMzU3ZDU3YzkwOGQ1YjZjMjYzZDAzOTExMGI0N2JlMjEyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8YW11bC5zdWxAZW50ZXJwcmlzZWRiLmNvbT4K RGF0ZTogTW9uLCAyMyBTZXAgMjAyNCAxMjozNzowNSArMDUzMApTdWJqZWN0OiBbUEFUQ0ggdjEg My81XSByZWZhY3RvcjogQ2hhbmdlIEFURXhlY0FsdGVyQ29uc3RyUmVjdXJzZSgpIGFyZ3VtZW50 LgoKSW5zdGVhZCBvZiBwYXNzaW5nIHRoZSBSZWxhdGlvbiBvZiB0aGUgcmVmZXJlbmNpbmcgcmVs YXRpb24sIHdlIHdpbGwKcGFzcyBhIHJlbGlkLiBPcGVuaW5nIHRoZSByZWxhdGlvbiB1c2luZyB0 aGUgcmVsaWQgYWdhaW4gc2hvdWxkIG5vdApjYXVzZSBzaWduaWZpY2FudCBpc3N1ZXMuIEhvd2V2 ZXIsIHRoaXMgYXBwcm9hY2ggbWFrZXMgcmVjdXJzaW9uIG1vcmUKZWZmaWNpZW50LCBlc3BlY2lh bGx5IGluIHRoZSBsYXRlciBwYXRjaCB3aGVyZSB3ZSB3aWxsIGJlIHJlY3JlYXRpbmcKdGhlIHJl ZmVyZW5jaW5nIGFuZCByZWZlcnJlZCB0cmlnZ2Vycy4gSW4gYWRkaXRpb24gdG8gdGhhdCBwYXNz aW5nCnJlbGlkIG9mIHRoZSByZWZlcnJlZCByZWxhdGlvbiB0b28gYW5kIE9pZHMgb2YgdHJpZ2dl cnMuCgotLS0tCk5PVEU6IFRoaXMgcGF0Y2ggaXMgbm90IG1lYW50IHRvIGJlIGNvbW1pdHRlZCBz ZXBhcmF0ZWx5LiBJdCBzaG91bGQKYmUgc3F1YXNoZWQgd2l0aCB0aGUgbWFpbiBwYXRjaCB0aGF0 IGFkZHMgRU5GT1JDRUQvTk9UIEVORk9SQ0VELgotLS0tCi0tLQogc3JjL2JhY2tlbmQvY29tbWFu ZHMvdGFibGVjbWRzLmMgfCA2NiArKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLQogMSBm aWxlIGNoYW5nZWQsIDQ1IGluc2VydGlvbnMoKyksIDIxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvdGFibGVjbWRzLmMKaW5kZXggZmU3ODZmMDIzMDQuLmY2ZTUyN2IwYTY5IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21t YW5kcy90YWJsZWNtZHMuYwpAQCAtMzgyLDE0ICszODIsMjIgQEAgc3RhdGljIHZvaWQgQWx0ZXJT ZXFOYW1lc3BhY2VzKFJlbGF0aW9uIGNsYXNzUmVsLCBSZWxhdGlvbiByZWwsCiBzdGF0aWMgT2Jq ZWN0QWRkcmVzcyBBVEV4ZWNBbHRlckNvbnN0cmFpbnQoUmVsYXRpb24gcmVsLCBBbHRlclRhYmxl Q21kICpjbWQsCiAJCQkJCQkJCQkJICAgYm9vbCByZWN1cnNlLCBib29sIHJlY3Vyc2luZywgTE9D S01PREUgbG9ja21vZGUpOwogc3RhdGljIGJvb2wgQVRFeGVjQWx0ZXJDb25zdHJSZWN1cnNlKENv bnN0cmFpbnQgKmNtZGNvbiwgUmVsYXRpb24gY29ucmVsLCBSZWxhdGlvbiB0Z3JlbCwKLQkJCQkJ CQkJCSBSZWxhdGlvbiByZWwsIEhlYXBUdXBsZSBjb250dXBsZSwgTGlzdCAqKm90aGVycmVsaWRz LAotCQkJCQkJCQkJIExPQ0tNT0RFIGxvY2ttb2RlKTsKKwkJCQkJCQkJCSBjb25zdCBPaWQgZmty ZWxpZCwgY29uc3QgT2lkIHBrcmVsaWQsCisJCQkJCQkJCQkgSGVhcFR1cGxlIGNvbnR1cGxlLCBM aXN0ICoqb3RoZXJyZWxpZHMsCisJCQkJCQkJCQkgTE9DS01PREUgbG9ja21vZGUsIE9pZCBSZWZl cmVuY2VkUGFyZW50RGVsVHJpZ2dlciwKKwkJCQkJCQkJCSBPaWQgUmVmZXJlbmNlZFBhcmVudFVw ZFRyaWdnZXIsCisJCQkJCQkJCQkgT2lkIFJlZmVyZW5jaW5nUGFyZW50SW5zVHJpZ2dlciwKKwkJ CQkJCQkJCSBPaWQgUmVmZXJlbmNpbmdQYXJlbnRVcGRUcmlnZ2VyKTsKIHN0YXRpYyB2b2lkIEFs dGVyQ29uc3RyVHJpZ2dlckRlZmVycmFiaWxpdHkoT2lkIGNvbm9pZCwgUmVsYXRpb24gdGdyZWws IFJlbGF0aW9uIHJlbCwKIAkJCQkJCQkJCQkJYm9vbCBkZWZlcnJhYmxlLCBib29sIGluaXRkZWZl cnJlZCwKIAkJCQkJCQkJCQkJTGlzdCAqKm90aGVycmVsaWRzKTsKIHN0YXRpYyB2b2lkIEFURXhl Y0FsdGVyQ2hpbGRDb25zdHIoQ29uc3RyYWludCAqY21kY29uLCBSZWxhdGlvbiBjb25yZWwsIFJl bGF0aW9uIHRncmVsLAotCQkJCQkJCQkgICBSZWxhdGlvbiByZWwsIEhlYXBUdXBsZSBjb250dXBs ZSwgTGlzdCAqKm90aGVycmVsaWRzLAotCQkJCQkJCQkgICBMT0NLTU9ERSBsb2NrbW9kZSk7CisJ CQkJCQkJCSAgIGNvbnN0IE9pZCBma3JlbGlkLCBjb25zdCBPaWQgcGtyZWxpZCwKKwkJCQkJCQkJ ICAgSGVhcFR1cGxlIGNvbnR1cGxlLCBMaXN0ICoqb3RoZXJyZWxpZHMsCisJCQkJCQkJCSAgIExP Q0tNT0RFIGxvY2ttb2RlLCBPaWQgUmVmZXJlbmNlZFBhcmVudERlbFRyaWdnZXIsCisJCQkJCQkJ CSAgIE9pZCBSZWZlcmVuY2VkUGFyZW50VXBkVHJpZ2dlciwKKwkJCQkJCQkJICAgT2lkIFJlZmVy ZW5jaW5nUGFyZW50SW5zVHJpZ2dlciwKKwkJCQkJCQkJICAgT2lkIFJlZmVyZW5jaW5nUGFyZW50 VXBkVHJpZ2dlcik7CiBzdGF0aWMgT2JqZWN0QWRkcmVzcyBBVEV4ZWNWYWxpZGF0ZUNvbnN0cmFp bnQoTGlzdCAqKndxdWV1ZSwKIAkJCQkJCQkJCQkJICBSZWxhdGlvbiByZWwsIGNoYXIgKmNvbnN0 ck5hbWUsCiAJCQkJCQkJCQkJCSAgYm9vbCByZWN1cnNlLCBib29sIHJlY3Vyc2luZywgTE9DS01P REUgbG9ja21vZGUpOwpAQCAtMTE1MjMsOCArMTE1MzEsMTAgQEAgQVRFeGVjQWx0ZXJDb25zdHJh aW50KFJlbGF0aW9uIHJlbCwgQWx0ZXJUYWJsZUNtZCAqY21kLCBib29sIHJlY3Vyc2UsCiAJCWN1 cnJjb24tPmNvbmRlZmVycmVkICE9IGNtZGNvbi0+aW5pdGRlZmVycmVkIHx8CiAJCXJlbC0+cmRf cmVsLT5yZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUpCiAJewotCQlpZiAoQVRF eGVjQWx0ZXJDb25zdHJSZWN1cnNlKGNtZGNvbiwgY29ucmVsLCB0Z3JlbCwgcmVsLCBjb250dXBs ZSwKLQkJCQkJCQkJCSAmb3RoZXJyZWxpZHMsIGxvY2ttb2RlKSkKKwkJaWYgKEFURXhlY0FsdGVy Q29uc3RyUmVjdXJzZShjbWRjb24sIGNvbnJlbCwgdGdyZWwsIGN1cnJjb24tPmNvbnJlbGlkLAor CQkJCQkJCQkJIGN1cnJjb24tPmNvbmZyZWxpZCwgY29udHVwbGUsICZvdGhlcnJlbGlkcywKKwkJ CQkJCQkJCSBsb2NrbW9kZSwgSW52YWxpZE9pZCwgSW52YWxpZE9pZCwKKwkJCQkJCQkJCSBJbnZh bGlkT2lkLCBJbnZhbGlkT2lkKSkKIAkJCU9iamVjdEFkZHJlc3NTZXQoYWRkcmVzcywgQ29uc3Ry YWludFJlbGF0aW9uSWQsIGN1cnJjb24tPm9pZCk7CiAJfQogCkBAIC0xMTU1NywxMyArMTE1Njcs MTggQEAgQVRFeGVjQWx0ZXJDb25zdHJhaW50KFJlbGF0aW9uIHJlbCwgQWx0ZXJUYWJsZUNtZCAq Y21kLCBib29sIHJlY3Vyc2UsCiAgKi8KIHN0YXRpYyBib29sCiBBVEV4ZWNBbHRlckNvbnN0clJl Y3Vyc2UoQ29uc3RyYWludCAqY21kY29uLCBSZWxhdGlvbiBjb25yZWwsIFJlbGF0aW9uIHRncmVs LAotCQkJCQkJIFJlbGF0aW9uIHJlbCwgSGVhcFR1cGxlIGNvbnR1cGxlLCBMaXN0ICoqb3RoZXJy ZWxpZHMsCi0JCQkJCQkgTE9DS01PREUgbG9ja21vZGUpCisJCQkJCQkgY29uc3QgT2lkIGZrcmVs aWQsIGNvbnN0IE9pZCBwa3JlbGlkLAorCQkJCQkJIEhlYXBUdXBsZSBjb250dXBsZSwgTGlzdCAq Km90aGVycmVsaWRzLAorCQkJCQkJIExPQ0tNT0RFIGxvY2ttb2RlLCBPaWQgUmVmZXJlbmNlZFBh cmVudERlbFRyaWdnZXIsCisJCQkJCQkgT2lkIFJlZmVyZW5jZWRQYXJlbnRVcGRUcmlnZ2VyLAor CQkJCQkJIE9pZCBSZWZlcmVuY2luZ1BhcmVudEluc1RyaWdnZXIsCisJCQkJCQkgT2lkIFJlZmVy ZW5jaW5nUGFyZW50VXBkVHJpZ2dlcikKIHsKIAlGb3JtX3BnX2NvbnN0cmFpbnQgY3VycmNvbjsK IAlPaWQJCQljb25vaWQ7CiAJT2lkCQkJcmVmcmVsaWQ7CiAJYm9vbAkJY2hhbmdlZCA9IGZhbHNl OworCVJlbGF0aW9uCXJlbDsKIAogCS8qIHNpbmNlIHRoaXMgZnVuY3Rpb24gcmVjdXJzZXMsIGl0 IGNvdWxkIGJlIGRyaXZlbiB0byBzdGFjayBvdmVyZmxvdyAqLwogCWNoZWNrX3N0YWNrX2RlcHRo KCk7CkBAIC0xMTU3Miw2ICsxMTU4Nyw4IEBAIEFURXhlY0FsdGVyQ29uc3RyUmVjdXJzZShDb25z dHJhaW50ICpjbWRjb24sIFJlbGF0aW9uIGNvbnJlbCwgUmVsYXRpb24gdGdyZWwsCiAJY29ub2lk ID0gY3VycmNvbi0+b2lkOwogCXJlZnJlbGlkID0gY3VycmNvbi0+Y29uZnJlbGlkOwogCisJcmVs ID0gdGFibGVfb3BlbihjdXJyY29uLT5jb25yZWxpZCwgbG9ja21vZGUpOworCiAJLyoKIAkgKiBV cGRhdGUgcGdfY29uc3RyYWludCB3aXRoIHRoZSBmbGFncyBmcm9tIGNtZGNvbi4KIAkgKgpAQCAt MTE2MTcsOCArMTE2MzQsMTQgQEAgQVRFeGVjQWx0ZXJDb25zdHJSZWN1cnNlKENvbnN0cmFpbnQg KmNtZGNvbiwgUmVsYXRpb24gY29ucmVsLCBSZWxhdGlvbiB0Z3JlbCwKIAkgKi8KIAlpZiAocmVs LT5yZF9yZWwtPnJlbGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSB8fAogCQlnZXRf cmVsX3JlbGtpbmQocmVmcmVsaWQpID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUpCi0JCUFU RXhlY0FsdGVyQ2hpbGRDb25zdHIoY21kY29uLCBjb25yZWwsIHRncmVsLCByZWwsIGNvbnR1cGxl LAotCQkJCQkJCSAgIG90aGVycmVsaWRzLCBsb2NrbW9kZSk7CisJCUFURXhlY0FsdGVyQ2hpbGRD b25zdHIoY21kY29uLCBjb25yZWwsIHRncmVsLCBma3JlbGlkLCBwa3JlbGlkLAorCQkJCQkJCSAg IGNvbnR1cGxlLCBvdGhlcnJlbGlkcywgbG9ja21vZGUsCisJCQkJCQkJICAgUmVmZXJlbmNlZFBh cmVudERlbFRyaWdnZXIsCisJCQkJCQkJICAgUmVmZXJlbmNlZFBhcmVudFVwZFRyaWdnZXIsCisJ CQkJCQkJICAgUmVmZXJlbmNpbmdQYXJlbnRJbnNUcmlnZ2VyLAorCQkJCQkJCSAgIFJlZmVyZW5j aW5nUGFyZW50VXBkVHJpZ2dlcik7CisKKwl0YWJsZV9jbG9zZShyZWwsIE5vTG9jayk7CiAKIAly ZXR1cm4gY2hhbmdlZDsKIH0KQEAgLTExNjk3LDggKzExNzIwLDEyIEBAIEFsdGVyQ29uc3RyVHJp Z2dlckRlZmVycmFiaWxpdHkoT2lkIGNvbm9pZCwgUmVsYXRpb24gdGdyZWwsIFJlbGF0aW9uIHJl bCwKICAqLwogc3RhdGljIHZvaWQKIEFURXhlY0FsdGVyQ2hpbGRDb25zdHIoQ29uc3RyYWludCAq Y21kY29uLCBSZWxhdGlvbiBjb25yZWwsIFJlbGF0aW9uIHRncmVsLAotCQkJCQkgICBSZWxhdGlv biByZWwsIEhlYXBUdXBsZSBjb250dXBsZSwgTGlzdCAqKm90aGVycmVsaWRzLAotCQkJCQkgICBM T0NLTU9ERSBsb2NrbW9kZSkKKwkJCQkJICAgY29uc3QgT2lkIGZrcmVsaWQsIGNvbnN0IE9pZCBw a3JlbGlkLAorCQkJCQkgICBIZWFwVHVwbGUgY29udHVwbGUsIExpc3QgKipvdGhlcnJlbGlkcywK KwkJCQkJICAgTE9DS01PREUgbG9ja21vZGUsIE9pZCBSZWZlcmVuY2VkUGFyZW50RGVsVHJpZ2dl ciwKKwkJCQkJICAgT2lkIFJlZmVyZW5jZWRQYXJlbnRVcGRUcmlnZ2VyLAorCQkJCQkgICBPaWQg UmVmZXJlbmNpbmdQYXJlbnRJbnNUcmlnZ2VyLAorCQkJCQkgICBPaWQgUmVmZXJlbmNpbmdQYXJl bnRVcGRUcmlnZ2VyKQogewogCUZvcm1fcGdfY29uc3RyYWludCBjdXJyY29uOwogCU9pZAkJCWNv bm9pZDsKQEAgLTExNzE4LDE1ICsxMTc0NSwxMiBAQCBBVEV4ZWNBbHRlckNoaWxkQ29uc3RyKENv bnN0cmFpbnQgKmNtZGNvbiwgUmVsYXRpb24gY29ucmVsLCBSZWxhdGlvbiB0Z3JlbCwKIAkJCQkJ CQkgICB0cnVlLCBOVUxMLCAxLCAmcGtleSk7CiAKIAl3aGlsZSAoSGVhcFR1cGxlSXNWYWxpZChj aGlsZHR1cCA9IHN5c3RhYmxlX2dldG5leHQocHNjYW4pKSkKLQl7Ci0JCUZvcm1fcGdfY29uc3Ry YWludCBjaGlsZGNvbiA9IChGb3JtX3BnX2NvbnN0cmFpbnQpIEdFVFNUUlVDVChjaGlsZHR1cCk7 Ci0JCVJlbGF0aW9uCWNoaWxkcmVsOwotCi0JCWNoaWxkcmVsID0gdGFibGVfb3BlbihjaGlsZGNv bi0+Y29ucmVsaWQsIGxvY2ttb2RlKTsKLQkJQVRFeGVjQWx0ZXJDb25zdHJSZWN1cnNlKGNtZGNv biwgY29ucmVsLCB0Z3JlbCwgY2hpbGRyZWwsIGNoaWxkdHVwLAotCQkJCQkJCQkgb3RoZXJyZWxp ZHMsIGxvY2ttb2RlKTsKLQkJdGFibGVfY2xvc2UoY2hpbGRyZWwsIE5vTG9jayk7Ci0JfQorCQlB VEV4ZWNBbHRlckNvbnN0clJlY3Vyc2UoY21kY29uLCBjb25yZWwsIHRncmVsLCBma3JlbGlkLCBw a3JlbGlkLAorCQkJCQkJCQkgY2hpbGR0dXAsIG90aGVycmVsaWRzLCBsb2NrbW9kZSwKKwkJCQkJ CQkJIFJlZmVyZW5jZWRQYXJlbnREZWxUcmlnZ2VyLAorCQkJCQkJCQkgUmVmZXJlbmNlZFBhcmVu dFVwZFRyaWdnZXIsCisJCQkJCQkJCSBSZWZlcmVuY2luZ1BhcmVudEluc1RyaWdnZXIsCisJCQkJ CQkJCSBSZWZlcmVuY2luZ1BhcmVudFVwZFRyaWdnZXIpOwogCiAJc3lzdGFibGVfZW5kc2Nhbihw c2Nhbik7CiB9Ci0tIAoyLjE4LjAKCg== --000000000000effd7c0623f376c1 Content-Type: application/x-patch; name="v1-0004-Remove-hastriggers-flag-check-before-fetching-FK-.patch" Content-Disposition: attachment; filename="v1-0004-Remove-hastriggers-flag-check-before-fetching-FK-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m207dj7f3 RnJvbSBmMmQ3NjJmYzg0NmM2YzNkZmQwNDI1OGMxYTZmNjRkN2E3OGE3NDdhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8YW11bC5zdWxAZW50ZXJwcmlzZWRiLmNvbT4K RGF0ZTogTW9uLCA3IE9jdCAyMDI0IDEyOjQwOjA3ICswNTMwClN1YmplY3Q6IFtQQVRDSCB2MSA0 LzVdIFJlbW92ZSBoYXN0cmlnZ2VycyBmbGFnIGNoZWNrIGJlZm9yZSBmZXRjaGluZyBGSwogY29u c3RyYWludHMuCgpXaXRoIE5PVCBFTkZPUkNFRCwgZm9yZWlnbiBrZXkgY29uc3RyYWludHMgd2ls bCBiZSBjcmVhdGVkIHdpdGhvdXQKdHJpZ2dlcnMuIFRoZXJlZm9yZSwgdGhlIGNyaXRlcmlhIGZv ciBmZXRjaGluZyBmb3JlaWduIGtleXMgYmFzZWQgb24KdGhlIHByZXNlbmNlIG9mIHRyaWdnZXJz IG5vIGxvbmdlciBhcHBseS4KCi0tLS0KTk9URTogVGhpcyBwYXRjaCBpcyBpbnRlbmRlZCB0byBy ZWR1Y2UgdGhlIGRpZmYgbm9pc2UgZnJvbSB0aGUgbWFpbgpwYXRjaCBhbmQgaXMgbm90IG1lYW50 IHRvIGJlIGNvbW1pdHRlZCBzZXBhcmF0ZWx5LiBJdCBzaG91bGQgYmUKc3F1YXNoZWQgd2l0aCB0 aGUgbWFpbiBwYXRjaCB0aGF0IGFkZHMgRU5GT1JDRUQvTk9UIEVORk9SQ0VELgotLS0tCi0tLQog c3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYyB8ICAgNSAtCiBzcmMvYmluL3BnX2R1 bXAvcGdfZHVtcC5jICAgICAgICAgIHwgICA4ICstCiBzcmMvYmluL3BzcWwvZGVzY3JpYmUuYyAg ICAgICAgICAgIHwgMjIzICsrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tCiAzIGZpbGVzIGNo YW5nZWQsIDEwNyBpbnNlcnRpb25zKCspLCAxMjkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Nh Y2hlL3JlbGNhY2hlLmMKaW5kZXggYTYwM2I3NGM3NzguLjcxMWE1MjkwNzI5IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2NhY2hlL3JlbGNhY2hlLmMKQEAgLTQ3MDcsMTEgKzQ3MDcsNiBAQCBSZWxhdGlvbkdldEZL ZXlMaXN0KFJlbGF0aW9uIHJlbGF0aW9uKQogCWlmIChyZWxhdGlvbi0+cmRfZmtleXZhbGlkKQog CQlyZXR1cm4gcmVsYXRpb24tPnJkX2ZrZXlsaXN0OwogCi0JLyogRmFzdCBwYXRoOiBub24tcGFy dGl0aW9uZWQgdGFibGVzIHdpdGhvdXQgdHJpZ2dlcnMgY2FuJ3QgaGF2ZSBGS3MgKi8KLQlpZiAo IXJlbGF0aW9uLT5yZF9yZWwtPnJlbGhhc3RyaWdnZXJzICYmCi0JCXJlbGF0aW9uLT5yZF9yZWwt PnJlbGtpbmQgIT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSkKLQkJcmV0dXJuIE5JTDsKLQog CS8qCiAJICogV2UgYnVpbGQgdGhlIGxpc3Qgd2UgaW50ZW5kIHRvIHJldHVybiAoaW4gdGhlIGNh bGxlcidzIGNvbnRleHQpIHdoaWxlCiAJICogZG9pbmcgdGhlIHNjYW4uICBBZnRlciBzdWNjZXNz ZnVsbHkgY29tcGxldGluZyB0aGUgc2Nhbiwgd2UgY29weSB0aGF0CmRpZmYgLS1naXQgYS9zcmMv YmluL3BnX2R1bXAvcGdfZHVtcC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwppbmRleCAx YjQ3YzM4OGNlZC4uNzIyNWJiM2M0NjYgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19k dW1wLmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwpAQCAtNzgyMywxMyArNzgyMyw3 IEBAIGdldENvbnN0cmFpbnRzKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5mbyB0YmxpbmZvW10sIGlu dCBudW1UYWJsZXMpCiAJewogCQlUYWJsZUluZm8gICp0aW5mbyA9ICZ0YmxpbmZvW2ldOwogCi0J CS8qCi0JCSAqIEZvciBwYXJ0aXRpb25lZCB0YWJsZXMsIGZvcmVpZ24ga2V5cyBoYXZlIG5vIHRy aWdnZXJzIHNvIHRoZXkgbXVzdAotCQkgKiBiZSBpbmNsdWRlZCBhbnl3YXkgaW4gY2FzZSBzb21l IGZvcmVpZ24ga2V5cyBhcmUgZGVmaW5lZC4KLQkJICovCi0JCWlmICgoIXRpbmZvLT5oYXN0cmln Z2VycyAmJgotCQkJIHRpbmZvLT5yZWxraW5kICE9IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUp IHx8Ci0JCQkhKHRpbmZvLT5kb2JqLmR1bXAgJiBEVU1QX0NPTVBPTkVOVF9ERUZJTklUSU9OKSkK KwkJaWYgKCEodGluZm8tPmRvYmouZHVtcCAmIERVTVBfQ09NUE9ORU5UX0RFRklOSVRJT04pKQog CQkJY29udGludWU7CiAKIAkJLyogT0ssIHdlIG5lZWQgaW5mbyBmb3IgdGhpcyB0YWJsZSAqLwpk aWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMgYi9zcmMvYmluL3BzcWwvZGVzY3Jp YmUuYwppbmRleCA2YTM2YzkxMDgzMy4uNDc4ZmMzNDc2ZjkgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4v cHNxbC9kZXNjcmliZS5jCisrKyBiL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCkBAIC0yNTAzLDEz NSArMjUwMywxMjQgQEAgZGVzY3JpYmVPbmVUYWJsZURldGFpbHMoY29uc3QgY2hhciAqc2NoZW1h bmFtZSwKIAkJfQogCiAJCS8qCi0JCSAqIFByaW50IGZvcmVpZ24ta2V5IGNvbnN0cmFpbnRzICh0 aGVyZSBhcmUgbm9uZSBpZiBubyB0cmlnZ2VycywKLQkJICogZXhjZXB0IGlmIHRoZSB0YWJsZSBp cyBwYXJ0aXRpb25lZCwgaW4gd2hpY2ggY2FzZSB0aGUgdHJpZ2dlcnMKLQkJICogYXBwZWFyIGlu IHRoZSBwYXJ0aXRpb25zKQorCQkgKiBQcmludCBmb3JlaWduLWtleSBjb25zdHJhaW50cwogCQkg Ki8KLQkJaWYgKHRhYmxlaW5mby5oYXN0cmlnZ2VycyB8fAotCQkJdGFibGVpbmZvLnJlbGtpbmQg PT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSkKKwkJaWYgKHBzZXQuc3ZlcnNpb24gPj0gMTIw MDAwICYmCisJCQkodGFibGVpbmZvLmlzcGFydGl0aW9uIHx8IHRhYmxlaW5mby5yZWxraW5kID09 IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUpKQogCQl7Ci0JCQlpZiAocHNldC5zdmVyc2lvbiA+ PSAxMjAwMDAgJiYKLQkJCQkodGFibGVpbmZvLmlzcGFydGl0aW9uIHx8IHRhYmxlaW5mby5yZWxr aW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUpKQorCQkJLyoKKwkJCSAqIFB1dCB0aGUg Y29uc3RyYWludHMgZGVmaW5lZCBpbiB0aGlzIHRhYmxlIGZpcnN0LCBmb2xsb3dlZAorCQkJICog YnkgdGhlIGNvbnN0cmFpbnRzIGRlZmluZWQgaW4gYW5jZXN0b3IgcGFydGl0aW9uZWQgdGFibGVz LgorCQkJICovCisJCQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLAorCQkJCQkJCSAgIlNFTEVDVCBj b25yZWxpZCA9ICclcyc6OnBnX2NhdGFsb2cucmVnY2xhc3MgQVMgc2FtZXRhYmxlLFxuIgorCQkJ CQkJCSAgIiAgICAgICBjb25uYW1lLFxuIgorCQkJCQkJCSAgIiAgICAgICBwZ19jYXRhbG9nLnBn X2dldF9jb25zdHJhaW50ZGVmKG9pZCwgdHJ1ZSkgQVMgY29uZGVmLFxuIgorCQkJCQkJCSAgIiAg ICAgICBjb25yZWxpZDo6cGdfY2F0YWxvZy5yZWdjbGFzcyBBUyBvbnRhYmxlXG4iCisJCQkJCQkJ ICAiICBGUk9NIHBnX2NhdGFsb2cucGdfY29uc3RyYWludCxcbiIKKwkJCQkJCQkgICIgICAgICAg cGdfY2F0YWxvZy5wZ19wYXJ0aXRpb25fYW5jZXN0b3JzKCclcycpXG4iCisJCQkJCQkJICAiIFdI RVJFIGNvbnJlbGlkID0gcmVsaWQgQU5EIGNvbnR5cGUgPSAnZicgQU5EIGNvbnBhcmVudGlkID0g MFxuIgorCQkJCQkJCSAgIk9SREVSIEJZIHNhbWV0YWJsZSBERVNDLCBjb25uYW1lOyIsCisJCQkJ CQkJICBvaWQsIG9pZCk7CisJCX0KKwkJZWxzZQorCQl7CisJCQlwcmludGZQUUV4cEJ1ZmZlcigm YnVmLAorCQkJCQkJCSAgIlNFTEVDVCB0cnVlIGFzIHNhbWV0YWJsZSwgY29ubmFtZSxcbiIKKwkJ CQkJCQkgICIgIHBnX2NhdGFsb2cucGdfZ2V0X2NvbnN0cmFpbnRkZWYoci5vaWQsIHRydWUpIGFz IGNvbmRlZixcbiIKKwkJCQkJCQkgICIgIGNvbnJlbGlkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzIEFT IG9udGFibGVcbiIKKwkJCQkJCQkgICJGUk9NIHBnX2NhdGFsb2cucGdfY29uc3RyYWludCByXG4i CisJCQkJCQkJICAiV0hFUkUgci5jb25yZWxpZCA9ICclcycgQU5EIHIuY29udHlwZSA9ICdmJ1xu IiwKKwkJCQkJCQkgIG9pZCk7CisKKwkJCWlmIChwc2V0LnN2ZXJzaW9uID49IDEyMDAwMCkKKwkJ CQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLCAiICAgICBBTkQgY29ucGFyZW50aWQgPSAwXG4i KTsKKwkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZidWYsICJPUkRFUiBCWSBjb25uYW1lIik7CisJ CX0KKworCQlyZXN1bHQgPSBQU1FMZXhlYyhidWYuZGF0YSk7CisJCWlmICghcmVzdWx0KQorCQkJ Z290byBlcnJvcl9yZXR1cm47CisJCWVsc2UKKwkJCXR1cGxlcyA9IFBRbnR1cGxlcyhyZXN1bHQp OworCisJCWlmICh0dXBsZXMgPiAwKQorCQl7CisJCQlpbnQJCQlpX3NhbWV0YWJsZSA9IFBRZm51 bWJlcihyZXN1bHQsICJzYW1ldGFibGUiKSwKKwkJCQkJCWlfY29ubmFtZSA9IFBRZm51bWJlcihy ZXN1bHQsICJjb25uYW1lIiksCisJCQkJCQlpX2NvbmRlZiA9IFBRZm51bWJlcihyZXN1bHQsICJj b25kZWYiKSwKKwkJCQkJCWlfb250YWJsZSA9IFBRZm51bWJlcihyZXN1bHQsICJvbnRhYmxlIik7 CisKKwkJCXByaW50VGFibGVBZGRGb290ZXIoJmNvbnQsIF8oIkZvcmVpZ24ta2V5IGNvbnN0cmFp bnRzOiIpKTsKKwkJCWZvciAoaSA9IDA7IGkgPCB0dXBsZXM7IGkrKykKIAkJCXsKIAkJCQkvKgot CQkJCSAqIFB1dCB0aGUgY29uc3RyYWludHMgZGVmaW5lZCBpbiB0aGlzIHRhYmxlIGZpcnN0LCBm b2xsb3dlZAotCQkJCSAqIGJ5IHRoZSBjb25zdHJhaW50cyBkZWZpbmVkIGluIGFuY2VzdG9yIHBh cnRpdGlvbmVkIHRhYmxlcy4KKwkJCQkgKiBQcmludCB1bnRyYW5zbGF0ZWQgY29uc3RyYWludCBu YW1lIGFuZCBkZWZpbml0aW9uLiBVc2UKKwkJCQkgKiBhICJUQUJMRSB0YWIiIHByZWZpeCB3aGVu IHRoZSBjb25zdHJhaW50IGlzIGRlZmluZWQgaW4KKwkJCQkgKiBhIHBhcmVudCBwYXJ0aXRpb25l ZCB0YWJsZS4KIAkJCQkgKi8KLQkJCQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLAotCQkJCQkJCQkg ICJTRUxFQ1QgY29ucmVsaWQgPSAnJXMnOjpwZ19jYXRhbG9nLnJlZ2NsYXNzIEFTIHNhbWV0YWJs ZSxcbiIKLQkJCQkJCQkJICAiICAgICAgIGNvbm5hbWUsXG4iCi0JCQkJCQkJCSAgIiAgICAgICBw Z19jYXRhbG9nLnBnX2dldF9jb25zdHJhaW50ZGVmKG9pZCwgdHJ1ZSkgQVMgY29uZGVmLFxuIgot CQkJCQkJCQkgICIgICAgICAgY29ucmVsaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3MgQVMgb250YWJs ZVxuIgotCQkJCQkJCQkgICIgIEZST00gcGdfY2F0YWxvZy5wZ19jb25zdHJhaW50LFxuIgotCQkJ CQkJCQkgICIgICAgICAgcGdfY2F0YWxvZy5wZ19wYXJ0aXRpb25fYW5jZXN0b3JzKCclcycpXG4i Ci0JCQkJCQkJCSAgIiBXSEVSRSBjb25yZWxpZCA9IHJlbGlkIEFORCBjb250eXBlID0gJ2YnIEFO RCBjb25wYXJlbnRpZCA9IDBcbiIKLQkJCQkJCQkJICAiT1JERVIgQlkgc2FtZXRhYmxlIERFU0Ms IGNvbm5hbWU7IiwKLQkJCQkJCQkJICBvaWQsIG9pZCk7Ci0JCQl9Ci0JCQllbHNlCi0JCQl7Ci0J CQkJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwKLQkJCQkJCQkJICAiU0VMRUNUIHRydWUgYXMgc2Ft ZXRhYmxlLCBjb25uYW1lLFxuIgotCQkJCQkJCQkgICIgIHBnX2NhdGFsb2cucGdfZ2V0X2NvbnN0 cmFpbnRkZWYoci5vaWQsIHRydWUpIGFzIGNvbmRlZixcbiIKLQkJCQkJCQkJICAiICBjb25yZWxp ZDo6cGdfY2F0YWxvZy5yZWdjbGFzcyBBUyBvbnRhYmxlXG4iCi0JCQkJCQkJCSAgIkZST00gcGdf Y2F0YWxvZy5wZ19jb25zdHJhaW50IHJcbiIKLQkJCQkJCQkJICAiV0hFUkUgci5jb25yZWxpZCA9 ICclcycgQU5EIHIuY29udHlwZSA9ICdmJ1xuIiwKLQkJCQkJCQkJICBvaWQpOwotCi0JCQkJaWYg KHBzZXQuc3ZlcnNpb24gPj0gMTIwMDAwKQotCQkJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVm LCAiICAgICBBTkQgY29ucGFyZW50aWQgPSAwXG4iKTsKLQkJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0 cigmYnVmLCAiT1JERVIgQlkgY29ubmFtZSIpOwotCQkJfQotCi0JCQlyZXN1bHQgPSBQU1FMZXhl YyhidWYuZGF0YSk7Ci0JCQlpZiAoIXJlc3VsdCkKLQkJCQlnb3RvIGVycm9yX3JldHVybjsKLQkJ CWVsc2UKLQkJCQl0dXBsZXMgPSBQUW50dXBsZXMocmVzdWx0KTsKLQotCQkJaWYgKHR1cGxlcyA+ IDApCi0JCQl7Ci0JCQkJaW50CQkJaV9zYW1ldGFibGUgPSBQUWZudW1iZXIocmVzdWx0LCAic2Ft ZXRhYmxlIiksCi0JCQkJCQkJaV9jb25uYW1lID0gUFFmbnVtYmVyKHJlc3VsdCwgImNvbm5hbWUi KSwKLQkJCQkJCQlpX2NvbmRlZiA9IFBRZm51bWJlcihyZXN1bHQsICJjb25kZWYiKSwKLQkJCQkJ CQlpX29udGFibGUgPSBQUWZudW1iZXIocmVzdWx0LCAib250YWJsZSIpOwotCi0JCQkJcHJpbnRU YWJsZUFkZEZvb3RlcigmY29udCwgXygiRm9yZWlnbi1rZXkgY29uc3RyYWludHM6IikpOwotCQkJ CWZvciAoaSA9IDA7IGkgPCB0dXBsZXM7IGkrKykKLQkJCQl7Ci0JCQkJCS8qCi0JCQkJCSAqIFBy aW50IHVudHJhbnNsYXRlZCBjb25zdHJhaW50IG5hbWUgYW5kIGRlZmluaXRpb24uIFVzZQotCQkJ CQkgKiBhICJUQUJMRSB0YWIiIHByZWZpeCB3aGVuIHRoZSBjb25zdHJhaW50IGlzIGRlZmluZWQg aW4KLQkJCQkJICogYSBwYXJlbnQgcGFydGl0aW9uZWQgdGFibGUuCi0JCQkJCSAqLwotCQkJCQlp ZiAoc3RyY21wKFBRZ2V0dmFsdWUocmVzdWx0LCBpLCBpX3NhbWV0YWJsZSksICJmIikgPT0gMCkK LQkJCQkJCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsICIgICAgVEFCTEUgXCIlc1wiIENPTlNUUkFJ TlQgXCIlc1wiICVzIiwKLQkJCQkJCQkJCQkgIFBRZ2V0dmFsdWUocmVzdWx0LCBpLCBpX29udGFi bGUpLAotCQkJCQkJCQkJCSAgUFFnZXR2YWx1ZShyZXN1bHQsIGksIGlfY29ubmFtZSksCi0JCQkJ CQkJCQkJICBQUWdldHZhbHVlKHJlc3VsdCwgaSwgaV9jb25kZWYpKTsKLQkJCQkJZWxzZQotCQkJ CQkJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwgIiAgICBcIiVzXCIgJXMiLAotCQkJCQkJCQkJCSAg UFFnZXR2YWx1ZShyZXN1bHQsIGksIGlfY29ubmFtZSksCi0JCQkJCQkJCQkJICBQUWdldHZhbHVl KHJlc3VsdCwgaSwgaV9jb25kZWYpKTsKLQotCQkJCQlwcmludFRhYmxlQWRkRm9vdGVyKCZjb250 LCBidWYuZGF0YSk7Ci0JCQkJfQotCQkJfQotCQkJUFFjbGVhcihyZXN1bHQpOwotCQl9Ci0KLQkJ LyogcHJpbnQgaW5jb21pbmcgZm9yZWlnbi1rZXkgcmVmZXJlbmNlcyAqLwotCQlpZiAodGFibGVp bmZvLmhhc3RyaWdnZXJzIHx8Ci0JCQl0YWJsZWluZm8ucmVsa2luZCA9PSBSRUxLSU5EX1BBUlRJ VElPTkVEX1RBQkxFKQotCQl7Ci0JCQlpZiAocHNldC5zdmVyc2lvbiA+PSAxMjAwMDApCi0JCQl7 Ci0JCQkJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwKLQkJCQkJCQkJICAiU0VMRUNUIGNvbm5hbWUs IGNvbnJlbGlkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzIEFTIG9udGFibGUsXG4iCi0JCQkJCQkJCSAg IiAgICAgICBwZ19jYXRhbG9nLnBnX2dldF9jb25zdHJhaW50ZGVmKG9pZCwgdHJ1ZSkgQVMgY29u ZGVmXG4iCi0JCQkJCQkJCSAgIiAgRlJPTSBwZ19jYXRhbG9nLnBnX2NvbnN0cmFpbnQgY1xuIgot CQkJCQkJCQkgICIgV0hFUkUgY29uZnJlbGlkIElOIChTRUxFQ1QgcGdfY2F0YWxvZy5wZ19wYXJ0 aXRpb25fYW5jZXN0b3JzKCclcycpXG4iCi0JCQkJCQkJCSAgIiAgICAgICAgICAgICAgICAgICAg IFVOSU9OIEFMTCBWQUxVRVMgKCclcyc6OnBnX2NhdGFsb2cucmVnY2xhc3MpKVxuIgotCQkJCQkJ CQkgICIgICAgICAgQU5EIGNvbnR5cGUgPSAnZicgQU5EIGNvbnBhcmVudGlkID0gMFxuIgotCQkJ CQkJCQkgICJPUkRFUiBCWSBjb25uYW1lOyIsCi0JCQkJCQkJCSAgb2lkLCBvaWQpOwotCQkJfQot CQkJZWxzZQotCQkJewotCQkJCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsCi0JCQkJCQkJCSAgIlNF TEVDVCBjb25uYW1lLCBjb25yZWxpZDo6cGdfY2F0YWxvZy5yZWdjbGFzcyBBUyBvbnRhYmxlLFxu IgotCQkJCQkJCQkgICIgICAgICAgcGdfY2F0YWxvZy5wZ19nZXRfY29uc3RyYWludGRlZihvaWQs IHRydWUpIEFTIGNvbmRlZlxuIgotCQkJCQkJCQkgICIgIEZST00gcGdfY2F0YWxvZy5wZ19jb25z dHJhaW50XG4iCi0JCQkJCQkJCSAgIiBXSEVSRSBjb25mcmVsaWQgPSAlcyBBTkQgY29udHlwZSA9 ICdmJ1xuIgotCQkJCQkJCQkgICJPUkRFUiBCWSBjb25uYW1lOyIsCi0JCQkJCQkJCSAgb2lkKTsK LQkJCX0KLQotCQkJcmVzdWx0ID0gUFNRTGV4ZWMoYnVmLmRhdGEpOwotCQkJaWYgKCFyZXN1bHQp Ci0JCQkJZ290byBlcnJvcl9yZXR1cm47Ci0JCQllbHNlCi0JCQkJdHVwbGVzID0gUFFudHVwbGVz KHJlc3VsdCk7Ci0KLQkJCWlmICh0dXBsZXMgPiAwKQotCQkJewotCQkJCWludAkJCWlfY29ubmFt ZSA9IFBRZm51bWJlcihyZXN1bHQsICJjb25uYW1lIiksCi0JCQkJCQkJaV9vbnRhYmxlID0gUFFm bnVtYmVyKHJlc3VsdCwgIm9udGFibGUiKSwKLQkJCQkJCQlpX2NvbmRlZiA9IFBRZm51bWJlcihy ZXN1bHQsICJjb25kZWYiKTsKLQotCQkJCXByaW50VGFibGVBZGRGb290ZXIoJmNvbnQsIF8oIlJl ZmVyZW5jZWQgYnk6IikpOwotCQkJCWZvciAoaSA9IDA7IGkgPCB0dXBsZXM7IGkrKykKLQkJCQl7 CisJCQkJaWYgKHN0cmNtcChQUWdldHZhbHVlKHJlc3VsdCwgaSwgaV9zYW1ldGFibGUpLCAiZiIp ID09IDApCiAJCQkJCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsICIgICAgVEFCTEUgXCIlc1wiIENP TlNUUkFJTlQgXCIlc1wiICVzIiwKIAkJCQkJCQkJCSAgUFFnZXR2YWx1ZShyZXN1bHQsIGksIGlf b250YWJsZSksCiAJCQkJCQkJCQkgIFBRZ2V0dmFsdWUocmVzdWx0LCBpLCBpX2Nvbm5hbWUpLAog CQkJCQkJCQkJICBQUWdldHZhbHVlKHJlc3VsdCwgaSwgaV9jb25kZWYpKTsKKwkJCQllbHNlCisJ CQkJCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsICIgICAgXCIlc1wiICVzIiwKKwkJCQkJCQkJCSAg UFFnZXR2YWx1ZShyZXN1bHQsIGksIGlfY29ubmFtZSksCisJCQkJCQkJCQkgIFBRZ2V0dmFsdWUo cmVzdWx0LCBpLCBpX2NvbmRlZikpOwogCi0JCQkJCXByaW50VGFibGVBZGRGb290ZXIoJmNvbnQs IGJ1Zi5kYXRhKTsKLQkJCQl9CisJCQkJcHJpbnRUYWJsZUFkZEZvb3RlcigmY29udCwgYnVmLmRh dGEpOwogCQkJfQotCQkJUFFjbGVhcihyZXN1bHQpOwogCQl9CisJCVBRY2xlYXIocmVzdWx0KTsK KworCQlpZiAocHNldC5zdmVyc2lvbiA+PSAxMjAwMDApCisJCXsKKwkJCXByaW50ZlBRRXhwQnVm ZmVyKCZidWYsCisJCQkJCQkJICAiU0VMRUNUIGNvbm5hbWUsIGNvbnJlbGlkOjpwZ19jYXRhbG9n LnJlZ2NsYXNzIEFTIG9udGFibGUsXG4iCisJCQkJCQkJICAiICAgICAgIHBnX2NhdGFsb2cucGdf Z2V0X2NvbnN0cmFpbnRkZWYob2lkLCB0cnVlKSBBUyBjb25kZWZcbiIKKwkJCQkJCQkgICIgIEZS T00gcGdfY2F0YWxvZy5wZ19jb25zdHJhaW50IGNcbiIKKwkJCQkJCQkgICIgV0hFUkUgY29uZnJl bGlkIElOIChTRUxFQ1QgcGdfY2F0YWxvZy5wZ19wYXJ0aXRpb25fYW5jZXN0b3JzKCclcycpXG4i CisJCQkJCQkJICAiICAgICAgICAgICAgICAgICAgICAgVU5JT04gQUxMIFZBTFVFUyAoJyVzJzo6 cGdfY2F0YWxvZy5yZWdjbGFzcykpXG4iCisJCQkJCQkJICAiICAgICAgIEFORCBjb250eXBlID0g J2YnIEFORCBjb25wYXJlbnRpZCA9IDBcbiIKKwkJCQkJCQkgICJPUkRFUiBCWSBjb25uYW1lOyIs CisJCQkJCQkJICBvaWQsIG9pZCk7CisJCX0KKwkJZWxzZQorCQl7CisJCQlwcmludGZQUUV4cEJ1 ZmZlcigmYnVmLAorCQkJCQkJCSAgIlNFTEVDVCBjb25uYW1lLCBjb25yZWxpZDo6cGdfY2F0YWxv Zy5yZWdjbGFzcyBBUyBvbnRhYmxlLFxuIgorCQkJCQkJCSAgIiAgICAgICBwZ19jYXRhbG9nLnBn X2dldF9jb25zdHJhaW50ZGVmKG9pZCwgdHJ1ZSkgQVMgY29uZGVmXG4iCisJCQkJCQkJICAiICBG Uk9NIHBnX2NhdGFsb2cucGdfY29uc3RyYWludFxuIgorCQkJCQkJCSAgIiBXSEVSRSBjb25mcmVs aWQgPSAlcyBBTkQgY29udHlwZSA9ICdmJ1xuIgorCQkJCQkJCSAgIk9SREVSIEJZIGNvbm5hbWU7 IiwKKwkJCQkJCQkgIG9pZCk7CisJCX0KKworCQlyZXN1bHQgPSBQU1FMZXhlYyhidWYuZGF0YSk7 CisJCWlmICghcmVzdWx0KQorCQkJZ290byBlcnJvcl9yZXR1cm47CisJCWVsc2UKKwkJCXR1cGxl cyA9IFBRbnR1cGxlcyhyZXN1bHQpOworCisJCWlmICh0dXBsZXMgPiAwKQorCQl7CisJCQlpbnQJ CQlpX2Nvbm5hbWUgPSBQUWZudW1iZXIocmVzdWx0LCAiY29ubmFtZSIpLAorCQkJCQkJaV9vbnRh YmxlID0gUFFmbnVtYmVyKHJlc3VsdCwgIm9udGFibGUiKSwKKwkJCQkJCWlfY29uZGVmID0gUFFm bnVtYmVyKHJlc3VsdCwgImNvbmRlZiIpOworCisJCQlwcmludFRhYmxlQWRkRm9vdGVyKCZjb250 LCBfKCJSZWZlcmVuY2VkIGJ5OiIpKTsKKwkJCWZvciAoaSA9IDA7IGkgPCB0dXBsZXM7IGkrKykK KwkJCXsKKwkJCQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLCAiICAgIFRBQkxFIFwiJXNcIiBDT05T VFJBSU5UIFwiJXNcIiAlcyIsCisJCQkJCQkJCSAgUFFnZXR2YWx1ZShyZXN1bHQsIGksIGlfb250 YWJsZSksCisJCQkJCQkJCSAgUFFnZXR2YWx1ZShyZXN1bHQsIGksIGlfY29ubmFtZSksCisJCQkJ CQkJCSAgUFFnZXR2YWx1ZShyZXN1bHQsIGksIGlfY29uZGVmKSk7CisKKwkJCQlwcmludFRhYmxl QWRkRm9vdGVyKCZjb250LCBidWYuZGF0YSk7CisJCQl9CisJCX0KKwkJUFFjbGVhcihyZXN1bHQp OwogCiAJCS8qIHByaW50IGFueSByb3ctbGV2ZWwgcG9saWNpZXMgKi8KIAkJaWYgKHBzZXQuc3Zl cnNpb24gPj0gOTA1MDApCi0tIAoyLjE4LjAKCg== --000000000000effd7c0623f376c1 Content-Type: application/x-patch; name="v1-0005-Add-support-for-NOT-ENFORCED-in-foreign-key-const.patch" Content-Disposition: attachment; filename="v1-0005-Add-support-for-NOT-ENFORCED-in-foreign-key-const.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m207do0t4 RnJvbSA3MGE1ZmZhODZmYzgxMzM3NzhmY2RjOWU4MTc4ZGIwZWVjNTc5NWQxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8YW11bC5zdWxAZW50ZXJwcmlzZWRiLmNvbT4K RGF0ZTogVHVlLCA4IE9jdCAyMDI0IDExOjM1OjE3ICswNTMwClN1YmplY3Q6IFtQQVRDSCB2MSA1 LzVdIEFkZCBzdXBwb3J0IGZvciBOT1QgRU5GT1JDRUQgaW4gZm9yZWlnbiBrZXkKIGNvbnN0cmFp bnRzLgoKTm9ybWFsbHksIHdoZW4gYSBmb3JlaWduIGtleSAoRkspIGNvbnN0cmFpbnQgaXMgY3Jl YXRlZCBvbiBhIHRhYmxlLAphY3Rpb24vY2hlY2sgdHJpZ2dlcnMgYXJlIGFzc29jaWF0ZWQgd2l0 aCB0aGUgY29uc3RyYWludCB0byBlbnN1cmUgZGF0YQppbnRlZ3JpdHkuIFdpdGggdGhpcyBwYXRj aCwgd2hlbiBjb25zdHJhaW50cyBhcmUgbWFya2VkIGFzIE5PVApFTkZPUkNFRCwgaW50ZWdyaXR5 IGNoZWNrcyBhcmUgbm90IHJlcXVpcmVkLCBhbmQgdGh1cywgdGhlc2UgdHJpZ2dlcnMKYXJlIHVu bmVjZXNzYXJ5LiBBcyBhIHJlc3VsdCwgd2hlbiBjcmVhdGluZyBhIE5PVCBFTkZPUkNFRCBGSwpj b25zdHJhaW50IG9yIGNoYW5naW5nIGFuIGV4aXN0aW5nIEZLIGNvbnN0cmFpbnQgdG8gTk9UIEVO Rk9SQ0VELCB0aGUKY3JlYXRpb24gb2YgdHJpZ2dlcnMgd2lsbCBiZSBza2lwcGVkLCBvciBleGlz dGluZyB0cmlnZ2VycyB3aWxsIGJlCmRyb3BwZWQsIHJlc3BlY3RpdmVseS4gQW5kIHdoZW4gY2hh bmdpbmcgYW4gZXhpc3RpbmcgTk9UIEVORk9SQ0VEIEZLCmNvbnN0cmFpbnQgdG8gRU5GT1JDRUQs IHRob3NlIHRyaWdnZXJzIHdpbGwgYmUgY3JlYXRlZC4KLS0tCiBkb2Mvc3JjL3NnbWwvYWR2YW5j ZWQuc2dtbCAgICAgICAgICAgICAgICB8ICAxMyArCiBkb2Mvc3JjL3NnbWwvZGRsLnNnbWwgICAg ICAgICAgICAgICAgICAgICB8ICAxMiArLQogZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl90YWJsZS5z Z21sICAgICAgICAgfCAgIDUgKwogZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUuc2dtbCAg ICAgICAgfCAgMTAgKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvcGdfY29uc3RyYWludC5jICAgICAg IHwgICA1ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyAgICAgICAgICB8IDUz OCArKysrKysrKysrKysrKystLS0tLS0tCiBzcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55ICAgICAg ICAgICAgICAgICB8ICAgMyArLQogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYyAg ICAgICAgfCAgIDYgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMgICAgICAg IHwgICAxICsKIHNyYy9pbmNsdWRlL3V0aWxzL3JlbC5oICAgICAgICAgICAgICAgICAgIHwgICAz ICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZm9yZWlnbl9rZXkub3V0IHwgMTE4ICsrKyst CiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9mb3JlaWduX2tleS5zcWwgICAgICB8ICA4NyArKystCiAx MiBmaWxlcyBjaGFuZ2VkLCA2MjAgaW5zZXJ0aW9ucygrKSwgMTgxIGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9hZHZhbmNlZC5zZ21sIGIvZG9jL3NyYy9zZ21sL2FkdmFu Y2VkLnNnbWwKaW5kZXggNzU1YzlmMTQ4NTAuLmI3ZDkwZGU2OWQ3IDEwMDY0NAotLS0gYS9kb2Mv c3JjL3NnbWwvYWR2YW5jZWQuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvYWR2YW5jZWQuc2dtbApA QCAtMTI1LDYgKzEyNSwxOSBAQCBFUlJPUjogIGluc2VydCBvciB1cGRhdGUgb24gdGFibGUgIndl YXRoZXIiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgIndlYQogREVUQUlMOiAgS2V5 IChjaXR5KT0oQmVya2VsZXkpIGlzIG5vdCBwcmVzZW50IGluIHRhYmxlICJjaXRpZXMiLgogPC9z Y3JlZW4+CiAgICA8L3BhcmE+CisgICA8cGFyYT4KKyAgICBJZiwgZm9yIHNvbWUgcmVhc29uLCB5 b3UgZG8gbm90IHdhbnQgdG8gZW5mb3JjZSB0aGlzIGNvbnN0cmFpbnQgYW5kIHdpc2ggdG8KKyAg ICBhdm9pZCB0aGUgZXJyb3IsIHlvdSBjYW4gbW9kaWZ5IHRoZSBmb3JlaWduIGtleSBjb25zdHJh aW50IHRvIDxsaXRlcmFsPk5PVCBFTkZPUkNFRDwvbGl0ZXJhbD4sCisgICAgb3Igc3BlY2lmeSBp dCBpbiB0aGUgPGxpbmsgbGlua2VuZD0ic3FsLWNyZWF0ZXRhYmxlIj48Y29tbWFuZD5DUkVBVEUg VEFCTEU8L2NvbW1hbmQ+PC9saW5rPi4KKyAgIDwvcGFyYT4KKyAgIDxwYXJhPgorICAgIExldCdz IGNoYW5nZSB0aGUgY29uc3RyYWludCB0byA8bGl0ZXJhbD5OT1QgRU5GT1JDRUQ8L2xpdGVyYWw+ LCBhbmQgd2hlbiB5b3UKKyAgICBhdHRlbXB0IHRvIHJlaW5zZXJ0IHRoZSBzYW1lIHJlY29yZCwg aXQgd2lsbCBub3QgcmVzdWx0IGluIGFueSBlcnJvci4KKzxwcm9ncmFtbGlzdGluZz4KK0FMVEVS IFRBQkxFIHdlYXRoZXIgQUxURVIgQ09OU1RSQUlOVCB3ZWF0aGVyX2NpdHlfZmtleSBOT1QgRU5G T1JDRUQ7CitJTlNFUlQgSU5UTyB3ZWF0aGVyIFZBTFVFUyAoJ0JlcmtlbGV5JywgNDUsIDUzLCAw LjAsICcxOTk0LTExLTI4Jyk7Cis8L3Byb2dyYW1saXN0aW5nPgorICAgPC9wYXJhPgogCiAgICA8 cGFyYT4KICAgICBUaGUgYmVoYXZpb3Igb2YgZm9yZWlnbiBrZXlzIGNhbiBiZSBmaW5lbHkgdHVu ZWQgdG8geW91cgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2RkbC5zZ21sIGIvZG9jL3NyYy9z Z21sL2RkbC5zZ21sCmluZGV4IDg5MmE3NDM0NmNhLi5jNzE4ZTJkOGYwZCAxMDA2NDQKLS0tIGEv ZG9jL3NyYy9zZ21sL2RkbC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9kZGwuc2dtbApAQCAtMTAz MCwxMSArMTAzMCwxMyBAQCBDUkVBVEUgVEFCTEUgZXhhbXBsZSAoCiAgICA8L2luZGV4dGVybT4K IAogICAgPHBhcmE+Ci0gICAgQSBmb3JlaWduIGtleSBjb25zdHJhaW50IHNwZWNpZmllcyB0aGF0 IHRoZSB2YWx1ZXMgaW4gYSBjb2x1bW4gKG9yCi0gICAgYSBncm91cCBvZiBjb2x1bW5zKSBtdXN0 IG1hdGNoIHRoZSB2YWx1ZXMgYXBwZWFyaW5nIGluIHNvbWUgcm93Ci0gICAgb2YgYW5vdGhlciB0 YWJsZS4KLSAgICBXZSBzYXkgdGhpcyBtYWludGFpbnMgdGhlIDxmaXJzdHRlcm0+cmVmZXJlbnRp YWwKLSAgICBpbnRlZ3JpdHk8L2ZpcnN0dGVybT4gYmV0d2VlbiB0d28gcmVsYXRlZCB0YWJsZXMu CisgICAgQSBmb3JlaWduIGtleSBjb25zdHJhaW50IHdpdGggPGxpdGVyYWw+RU5GT1JDRUQ8L2xp dGVyYWw+LCB0aGUgZGVmYXVsdAorICAgIHNldHRpbmcsIHNwZWNpZmllcyB0aGF0IHRoZSB2YWx1 ZXMgaW4gYSBjb2x1bW4gKG9yIGEgZ3JvdXAgb2YgY29sdW1ucykKKyAgICBtdXN0IG1hdGNoIHRo ZSB2YWx1ZXMgYXBwZWFyaW5nIGluIHNvbWUgcm93IG9mIGFub3RoZXIgdGFibGUuICBXZSBzYXkg dGhpcworICAgIG1haW50YWlucyB0aGUgPGZpcnN0dGVybT5yZWZlcmVudGlhbCBpbnRlZ3JpdHk8 L2ZpcnN0dGVybT4gYmV0d2VlbiB0d28KKyAgICByZWxhdGVkIHRhYmxlcy4gIElmIGEgZm9yZWln biBrZXkgY29uc3RyYWludCBpcyBjcmVhdGVkIHdpdGggPGxpdGVyYWw+Tk9UIEVORk9SQ0VEPC9s aXRlcmFsPiwKKyAgICB0aGUgY2hlY2sgZm9yIGFmb3JlbWVudGlvbmVkIDxmaXJzdHRlcm0+cmVm ZXJlbnRpYWwgaW50ZWdyaXR5PC9maXJzdHRlcm0+CisgICAgd2lsbCBub3QgYmUgcGVyZm9ybWVk LgogICAgPC9wYXJhPgogCiAgICA8cGFyYT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYv YWx0ZXJfdGFibGUuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfdGFibGUuc2dtbAppbmRl eCAyNTdmODcxZDk5ZS4uMjZlZjk2N2E2NmIgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYv YWx0ZXJfdGFibGUuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3RhYmxlLnNnbWwK QEAgLTU1NCw2ICs1NTQsMTEgQEAgV0lUSCAoIE1PRFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPm51bWVyaWNfbGl0ZXJhbDwvcmVwbGFjZWFibGU+LCBSRU0KICAgICAgIFRoaXMg Zm9ybSBhbHRlcnMgdGhlIGF0dHJpYnV0ZXMgb2YgYSBjb25zdHJhaW50IHRoYXQgd2FzIHByZXZp b3VzbHkKICAgICAgIGNyZWF0ZWQuIEN1cnJlbnRseSBvbmx5IGZvcmVpZ24ga2V5IGNvbnN0cmFp bnRzIG1heSBiZSBhbHRlcmVkLgogICAgICA8L3BhcmE+CisgICAgIDxwYXJhPgorICAgICAgTm90 ZSB0aGF0IGNoYW5naW5nIGNvbnN0cmFpbnRzIHRvIDxsaXRlcmFsPkVORk9SQ0VEPC9saXRlcmFs Piwgd2hpY2ggd2VyZQorICAgICAgcHJldmlvdXNseSBtYXJrZWQgYXMgdmFsaWQgYW5kIDxsaXRl cmFsPk5PVCBFTkZPUkNFRDwvbGl0ZXJhbD4sIHdpbGwKKyAgICAgIHRyaWdnZXIgdmFsaWRhdGlv biwgc2ltaWxhciB0byA8bGl0ZXJhbD5WQUxJREFURSBDT05TVFJBSU5UPC9saXRlcmFsPi4KKyAg ICAgPC9wYXJhPgogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KIApkaWZmIC0t Z2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUuc2dtbCBiL2RvYy9zcmMvc2dtbC9y ZWYvY3JlYXRlX3RhYmxlLnNnbWwKaW5kZXggNTViNTE2MDIxMzYuLjc3NDUyZWZlNzQwIDEwMDY0 NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJsZS5zZ21sCisrKyBiL2RvYy9zcmMv c2dtbC9yZWYvY3JlYXRlX3RhYmxlLnNnbWwKQEAgLTEzNjcsMTEgKzEzNjcsMTEgQEAgV0lUSCAo IE1PRFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVyaWNfbGl0ZXJhbDwv cmVwbGFjZWFibGU+LCBSRU0KICAgICA8dGVybT48bGl0ZXJhbD5OT1QgRU5GT1JDRUQ8L2xpdGVy YWw+PC90ZXJtPgogICAgIDxsaXN0aXRlbT4KICAgICAgPHBhcmE+Ci0gICAgICBUaGlzIGlzIGN1 cnJlbnRseSBvbmx5IGFsbG93ZWQgZm9yIDxsaXRlcmFsPkNIRUNLPC9saXRlcmFsPiBjb25zdHJh aW50cy4KLSAgICAgIElmIHRoZSBjb25zdHJhaW50IGlzIDxsaXRlcmFsPk5PVCBFTkZPUkNFRDwv bGl0ZXJhbD4sIHRoaXMgY2xhdXNlCi0gICAgICBzcGVjaWZpZXMgdGhhdCB0aGUgY29uc3RyYWlu dCBjaGVjayB3aWxsIGJlIHNraXBwZWQuICBXaGVuIHRoZSBjb25zdHJhaW50Ci0gICAgICBpcyA8 bGl0ZXJhbD5FTkZPUkNFRDwvbGl0ZXJhbD4sIGNoZWNrIGlzIHBlcmZvcm1lZCBhZnRlciBlYWNo IHN0YXRlbWVudC4KLSAgICAgIFRoaXMgaXMgdGhlIGRlZmF1bHQuCisgICAgICBUaGlzIGlzIGN1 cnJlbnRseSBvbmx5IGFsbG93ZWQgZm9yIGZvcmVpZ24ga2V5IGFuZCA8bGl0ZXJhbD5DSEVDSzwv bGl0ZXJhbD4KKyAgICAgIGNvbnN0cmFpbnRzLiAgSWYgdGhlIGNvbnN0cmFpbnQgaXMgPGxpdGVy YWw+Tk9UIEVORk9SQ0VEPC9saXRlcmFsPiwgdGhpcworICAgICAgY2xhdXNlIHNwZWNpZmllcyB0 aGF0IHRoZSBjb25zdHJhaW50IGNoZWNrIHdpbGwgYmUgc2tpcHBlZC4gIFdoZW4gdGhlCisgICAg ICBjb25zdHJhaW50IGlzIDxsaXRlcmFsPkVORk9SQ0VEPC9saXRlcmFsPiwgY2hlY2sgaXMgcGVy Zm9ybWVkIGFmdGVyIGVhY2gKKyAgICAgIHN0YXRlbWVudC4gIFRoaXMgaXMgdGhlIGRlZmF1bHQu CiAgICAgIDwvcGFyYT4KICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX2NvbnN0cmFpbnQuYyBiL3NyYy9iYWNrZW5k L2NhdGFsb2cvcGdfY29uc3RyYWludC5jCmluZGV4IDE0NDY4YjJiN2QwLi42OWQ2NDU3NjFkNyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19jb25zdHJhaW50LmMKKysrIGIvc3Jj L2JhY2tlbmQvY2F0YWxvZy9wZ19jb25zdHJhaW50LmMKQEAgLTk4LDggKzk4LDkgQEAgQ3JlYXRl Q29uc3RyYWludEVudHJ5KGNvbnN0IGNoYXIgKmNvbnN0cmFpbnROYW1lLAogCU9iamVjdEFkZHJl c3NlcyAqYWRkcnNfYXV0bzsKIAlPYmplY3RBZGRyZXNzZXMgKmFkZHJzX25vcm1hbDsKIAotCS8q IE9ubHkgQ0hFQ0sgY29uc3RyYWludCBjYW4gYmUgbm90IGVuZm9yY2VkICovCi0JQXNzZXJ0KGlz RW5mb3JjZWQgfHwgY29uc3RyYWludFR5cGUgPT0gQ09OU1RSQUlOVF9DSEVDSyk7CisJLyogT25s eSBDSEVDSyBvciBGT1JFSUdOIEtFWSBjb25zdHJhaW50IGNhbiBiZSBub3QgZW5mb3JjZWQgKi8K KwlBc3NlcnQoaXNFbmZvcmNlZCB8fCBjb25zdHJhaW50VHlwZSA9PSBDT05TVFJBSU5UX0NIRUNL IHx8CisJCSAgIGNvbnN0cmFpbnRUeXBlID09IENPTlNUUkFJTlRfRk9SRUlHTik7CiAKIAljb25E ZXNjID0gdGFibGVfb3BlbihDb25zdHJhaW50UmVsYXRpb25JZCwgUm93RXhjbHVzaXZlTG9jayk7 CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKaW5kZXggZjZlNTI3YjBhNjkuLmQ3ZjZlYjUzYTFk IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYworKysgYi9zcmMv YmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwpAQCAtMzc5LDE5ICszNzksMjkgQEAgc3RhdGlj IHZvaWQgQWx0ZXJJbmRleE5hbWVzcGFjZXMoUmVsYXRpb24gY2xhc3NSZWwsIFJlbGF0aW9uIHJl bCwKIHN0YXRpYyB2b2lkIEFsdGVyU2VxTmFtZXNwYWNlcyhSZWxhdGlvbiBjbGFzc1JlbCwgUmVs YXRpb24gcmVsLAogCQkJCQkJCSAgIE9pZCBvbGROc3BPaWQsIE9pZCBuZXdOc3BPaWQsIE9iamVj dEFkZHJlc3NlcyAqb2Jqc01vdmVkLAogCQkJCQkJCSAgIExPQ0tNT0RFIGxvY2ttb2RlKTsKLXN0 YXRpYyBPYmplY3RBZGRyZXNzIEFURXhlY0FsdGVyQ29uc3RyYWludChSZWxhdGlvbiByZWwsIEFs dGVyVGFibGVDbWQgKmNtZCwKK3N0YXRpYyBPYmplY3RBZGRyZXNzIEFURXhlY0FsdGVyQ29uc3Ry YWludChMaXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiByZWwsIEFsdGVyVGFibGVDbWQgKmNtZCwKIAkJ CQkJCQkJCQkgICBib29sIHJlY3Vyc2UsIGJvb2wgcmVjdXJzaW5nLCBMT0NLTU9ERSBsb2NrbW9k ZSk7Ci1zdGF0aWMgYm9vbCBBVEV4ZWNBbHRlckNvbnN0clJlY3Vyc2UoQ29uc3RyYWludCAqY21k Y29uLCBSZWxhdGlvbiBjb25yZWwsIFJlbGF0aW9uIHRncmVsLAorc3RhdGljIGJvb2wgQVRFeGVj QWx0ZXJDb25zdHJSZWN1cnNlKExpc3QgKip3cXVldWUsIENvbnN0cmFpbnQgKmNtZGNvbiwKKwkJ CQkJCQkJCSBSZWxhdGlvbiBjb25yZWwsIFJlbGF0aW9uIHRncmVsLAogCQkJCQkJCQkJIGNvbnN0 IE9pZCBma3JlbGlkLCBjb25zdCBPaWQgcGtyZWxpZCwKIAkJCQkJCQkJCSBIZWFwVHVwbGUgY29u dHVwbGUsIExpc3QgKipvdGhlcnJlbGlkcywKIAkJCQkJCQkJCSBMT0NLTU9ERSBsb2NrbW9kZSwg T2lkIFJlZmVyZW5jZWRQYXJlbnREZWxUcmlnZ2VyLAogCQkJCQkJCQkJIE9pZCBSZWZlcmVuY2Vk UGFyZW50VXBkVHJpZ2dlciwKIAkJCQkJCQkJCSBPaWQgUmVmZXJlbmNpbmdQYXJlbnRJbnNUcmln Z2VyLAogCQkJCQkJCQkJIE9pZCBSZWZlcmVuY2luZ1BhcmVudFVwZFRyaWdnZXIpOwotc3RhdGlj IHZvaWQgQWx0ZXJDb25zdHJUcmlnZ2VyRGVmZXJyYWJpbGl0eShPaWQgY29ub2lkLCBSZWxhdGlv biB0Z3JlbCwgUmVsYXRpb24gcmVsLAorc3RhdGljIHZvaWQgQVRFeGVjQWx0ZXJDb25zdHJFbmZv cmNlYWJpbGl0eShMaXN0ICoqd3F1ZXVlLCBDb25zdHJhaW50ICpjbWRjb24sCisJCQkJCQkJCQkJ CVJlbGF0aW9uIGNvbnJlbCwgUmVsYXRpb24gdGdyZWwsCisJCQkJCQkJCQkJCWNvbnN0IE9pZCBm a3JlbGlkLCBjb25zdCBPaWQgcGtyZWxpZCwKKwkJCQkJCQkJCQkJSGVhcFR1cGxlIGNvbnR1cGxl LCBMaXN0ICoqb3RoZXJyZWxpZHMsCisJCQkJCQkJCQkJCUxPQ0tNT0RFIGxvY2ttb2RlLCBPaWQg UmVmZXJlbmNlZFBhcmVudERlbFRyaWdnZXIsCisJCQkJCQkJCQkJCU9pZCBSZWZlcmVuY2VkUGFy ZW50VXBkVHJpZ2dlciwKKwkJCQkJCQkJCQkJT2lkIFJlZmVyZW5jaW5nUGFyZW50SW5zVHJpZ2dl ciwKKwkJCQkJCQkJCQkJT2lkIFJlZmVyZW5jaW5nUGFyZW50VXBkVHJpZ2dlcik7CitzdGF0aWMg dm9pZCBBbHRlckNvbnN0clRyaWdnZXJEZWZlcnJhYmlsaXR5KE9pZCBjb25vaWQsIFJlbGF0aW9u IHRncmVsLCBPaWQgZmtyZWwsCiAJCQkJCQkJCQkJCWJvb2wgZGVmZXJyYWJsZSwgYm9vbCBpbml0 ZGVmZXJyZWQsCiAJCQkJCQkJCQkJCUxpc3QgKipvdGhlcnJlbGlkcyk7Ci1zdGF0aWMgdm9pZCBB VEV4ZWNBbHRlckNoaWxkQ29uc3RyKENvbnN0cmFpbnQgKmNtZGNvbiwgUmVsYXRpb24gY29ucmVs LCBSZWxhdGlvbiB0Z3JlbCwKK3N0YXRpYyB2b2lkIEFURXhlY0FsdGVyQ2hpbGRDb25zdHIoTGlz dCAqKndxdWV1ZSwgQ29uc3RyYWludCAqY21kY29uLAorCQkJCQkJCQkgICBSZWxhdGlvbiBjb25y ZWwsIFJlbGF0aW9uIHRncmVsLAogCQkJCQkJCQkgICBjb25zdCBPaWQgZmtyZWxpZCwgY29uc3Qg T2lkIHBrcmVsaWQsCiAJCQkJCQkJCSAgIEhlYXBUdXBsZSBjb250dXBsZSwgTGlzdCAqKm90aGVy cmVsaWRzLAogCQkJCQkJCQkgICBMT0NLTU9ERSBsb2NrbW9kZSwgT2lkIFJlZmVyZW5jZWRQYXJl bnREZWxUcmlnZ2VyLApAQCAtNTM1OSw3ICs1MzY5LDcgQEAgQVRFeGVjQ21kKExpc3QgKip3cXVl dWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwKIAkJCQkJCQkJCQkJICAgbG9ja21vZGUpOwogCQkJ YnJlYWs7CiAJCWNhc2UgQVRfQWx0ZXJDb25zdHJhaW50OgkvKiBBTFRFUiBDT05TVFJBSU5UICov Ci0JCQlhZGRyZXNzID0gQVRFeGVjQWx0ZXJDb25zdHJhaW50KHJlbCwgY21kLCBmYWxzZSwgZmFs c2UsIGxvY2ttb2RlKTsKKwkJCWFkZHJlc3MgPSBBVEV4ZWNBbHRlckNvbnN0cmFpbnQod3F1ZXVl LCByZWwsIGNtZCwgZmFsc2UsIGZhbHNlLCBsb2NrbW9kZSk7CiAJCQlicmVhazsKIAkJY2FzZSBB VF9WYWxpZGF0ZUNvbnN0cmFpbnQ6IC8qIFZBTElEQVRFIENPTlNUUkFJTlQgKi8KIAkJCWFkZHJl c3MgPSBBVEV4ZWNWYWxpZGF0ZUNvbnN0cmFpbnQod3F1ZXVlLCByZWwsIGNtZC0+bmFtZSwgY21k LT5yZWN1cnNlLApAQCAtOTQ4MCw4ICs5NDkwLDkgQEAgQVRBZGRDaGVja0NvbnN0cmFpbnQoTGlz dCAqKndxdWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsCiAJewogCQlD b29rZWRDb25zdHJhaW50ICpjY29uID0gKENvb2tlZENvbnN0cmFpbnQgKikgbGZpcnN0KGxjb24p OwogCi0JCS8qIE9ubHkgQ0hFQ0sgY29uc3RyYWludCBjYW4gYmUgbm90IGVuZm9yY2VkICovCi0J CUFzc2VydChjY29uLT5pc19lbmZvcmNlZCB8fCBjY29uLT5jb250eXBlID09IENPTlNUUkFJTlRf Q0hFQ0spOworCQkvKiBPbmx5IENIRUNLIG9yIEZPUkVJR04gS0VZIGNvbnN0cmFpbnQgY2FuIGJl IG5vdCBlbmZvcmNlZCAqLworCQlBc3NlcnQoY2Nvbi0+aXNfZW5mb3JjZWQgfHwgY2Nvbi0+Y29u dHlwZSA9PSBDT05TVFJBSU5UX0NIRUNLIHx8CisJCQkgICBjY29uLT5jb250eXBlID09IENPTlNU UkFJTlRfRk9SRUlHTik7CiAKIAkJaWYgKCFjY29uLT5za2lwX3ZhbGlkYXRpb24pCiAJCXsKQEAg LTEwMTkyLDggKzEwMjAzLDggQEAgYWRkRmtSZWN1cnNlUmVmZXJlbmNlZChMaXN0ICoqd3F1ZXVl LCBDb25zdHJhaW50ICpma2NvbnN0cmFpbnQsIFJlbGF0aW9uIHJlbCwKIAlib29sCQljb25pc2xv Y2FsOwogCWludAkJCWNvbmluaGNvdW50OwogCWJvb2wJCWNvbm5vaW5oZXJpdDsKLQlPaWQJCQlk ZWxldGVUcmlnZ2VyT2lkLAotCQkJCXVwZGF0ZVRyaWdnZXJPaWQ7CisJT2lkCQkJZGVsZXRlVHJp Z2dlck9pZCA9IEludmFsaWRPaWQsCisJCQkJdXBkYXRlVHJpZ2dlck9pZCA9IEludmFsaWRPaWQ7 CiAKIAkvKgogCSAqIFZlcmlmeSByZWxraW5kIGZvciBlYWNoIHJlZmVyZW5jZWQgcGFydGl0aW9u LiAgQXQgdGhlIHRvcCBsZXZlbCwgdGhpcwpAQCAtMTAyNDYsNyArMTAyNTcsNyBAQCBhZGRGa1Jl Y3Vyc2VSZWZlcmVuY2VkKExpc3QgKip3cXVldWUsIENvbnN0cmFpbnQgKmZrY29uc3RyYWludCwg UmVsYXRpb24gcmVsLAogCQkJCQkJCQkJICBma2NvbnN0cmFpbnQtPmRlZmVycmFibGUsCiAJCQkJ CQkJCQkgIGZrY29uc3RyYWludC0+aW5pdGRlZmVycmVkLAogCQkJCQkJCQkJICBma2NvbnN0cmFp bnQtPmluaXRpYWxseV92YWxpZCwKLQkJCQkJCQkJCSAgdHJ1ZSwJLyogSXMgZW5mb3JjZWQgKi8K KwkJCQkJCQkJCSAgZmtjb25zdHJhaW50LT5pc19lbmZvcmNlZCwKIAkJCQkJCQkJCSAgcGFyZW50 Q29uc3RyLAogCQkJCQkJCQkJICBSZWxhdGlvbkdldFJlbGlkKHJlbCksCiAJCQkJCQkJCQkgIGZr YXR0bnVtLApAQCAtMTAyOTQsMTMgKzEwMzA1LDE1IEBAIGFkZEZrUmVjdXJzZVJlZmVyZW5jZWQo TGlzdCAqKndxdWV1ZSwgQ29uc3RyYWludCAqZmtjb25zdHJhaW50LCBSZWxhdGlvbiByZWwsCiAJ Q29tbWFuZENvdW50ZXJJbmNyZW1lbnQoKTsKIAogCS8qCi0JICogQ3JlYXRlIHRoZSBhY3Rpb24g dHJpZ2dlcnMgdGhhdCBlbmZvcmNlIHRoZSBjb25zdHJhaW50LgorCSAqIENyZWF0ZSBhY3Rpb24g dHJpZ2dlcnMgdG8gZW5mb3JjZSB0aGUgY29uc3RyYWludCwgb3Igc2tpcCB0aGVtIGlmIHRoZQor CSAqIGNvbnN0cmFpbnQgaXMgbm90IGVuZm9yY2VkLgogCSAqLwotCWNyZWF0ZUZvcmVpZ25LZXlB Y3Rpb25UcmlnZ2VycyhyZWwsIFJlbGF0aW9uR2V0UmVsaWQocGtyZWwpLAotCQkJCQkJCQkgICBm a2NvbnN0cmFpbnQsCi0JCQkJCQkJCSAgIGNvbnN0ck9pZCwgaW5kZXhPaWQsCi0JCQkJCQkJCSAg IHBhcmVudERlbFRyaWdnZXIsIHBhcmVudFVwZFRyaWdnZXIsCi0JCQkJCQkJCSAgICZkZWxldGVU cmlnZ2VyT2lkLCAmdXBkYXRlVHJpZ2dlck9pZCk7CisJaWYgKGZrY29uc3RyYWludC0+aXNfZW5m b3JjZWQpCisJCWNyZWF0ZUZvcmVpZ25LZXlBY3Rpb25UcmlnZ2VycyhyZWwsIFJlbGF0aW9uR2V0 UmVsaWQocGtyZWwpLAorCQkJCQkJCQkJICAgZmtjb25zdHJhaW50LAorCQkJCQkJCQkJICAgY29u c3RyT2lkLCBpbmRleE9pZCwKKwkJCQkJCQkJCSAgIHBhcmVudERlbFRyaWdnZXIsIHBhcmVudFVw ZFRyaWdnZXIsCisJCQkJCQkJCQkgICAmZGVsZXRlVHJpZ2dlck9pZCwgJnVwZGF0ZVRyaWdnZXJP aWQpOwogCiAJLyoKIAkgKiBJZiB0aGUgcmVmZXJlbmNlZCB0YWJsZSBpcyBwYXJ0aXRpb25lZCwg cmVjdXJzZSBvbiBvdXJzZWx2ZXMgdG8gaGFuZGxlCkBAIC0xMDQwOSw4ICsxMDQyMiw4IEBAIGFk ZEZrUmVjdXJzZVJlZmVyZW5jaW5nKExpc3QgKip3cXVldWUsIENvbnN0cmFpbnQgKmZrY29uc3Ry YWludCwgUmVsYXRpb24gcmVsLAogCQkJCQkJT2lkIHBhcmVudEluc1RyaWdnZXIsIE9pZCBwYXJl bnRVcGRUcmlnZ2VyLAogCQkJCQkJYm9vbCB3aXRoX3BlcmlvZCkKIHsKLQlPaWQJCQlpbnNlcnRU cmlnZ2VyT2lkLAotCQkJCXVwZGF0ZVRyaWdnZXJPaWQ7CisJT2lkCQkJaW5zZXJ0VHJpZ2dlck9p ZCA9IEludmFsaWRPaWQsCisJCQkJdXBkYXRlVHJpZ2dlck9pZCA9IEludmFsaWRPaWQ7CiAKIAlB c3NlcnQoT2lkSXNWYWxpZChwYXJlbnRDb25zdHIpKTsKIApAQCAtMTA0MjAsMjkgKzEwNDMzLDMy IEBAIGFkZEZrUmVjdXJzZVJlZmVyZW5jaW5nKExpc3QgKip3cXVldWUsIENvbnN0cmFpbnQgKmZr Y29uc3RyYWludCwgUmVsYXRpb24gcmVsLAogCQkJCSBlcnJtc2coImZvcmVpZ24ga2V5IGNvbnN0 cmFpbnRzIGFyZSBub3Qgc3VwcG9ydGVkIG9uIGZvcmVpZ24gdGFibGVzIikpKTsKIAogCS8qCi0J ICogQWRkIHRoZSBjaGVjayB0cmlnZ2VycyB0byBpdCBhbmQsIGlmIG5lY2Vzc2FyeSwgc2NoZWR1 bGUgaXQgdG8gYmUKLQkgKiBjaGVja2VkIGluIFBoYXNlIDMuCisJICogQWRkIGNoZWNrIHRyaWdn ZXJzIGlmIHRoZSBjb25zdHJhaW50IGlzIGVuZm9yY2VkLCBhbmQgaWYgbmVlZGVkLAorCSAqIHNj aGVkdWxlIHRoZW0gdG8gYmUgY2hlY2tlZCBpbiBQaGFzZSAzLgogCSAqCiAJICogSWYgdGhlIHJl bGF0aW9uIGlzIHBhcnRpdGlvbmVkLCBkcmlsbCBkb3duIHRvIGRvIGl0IHRvIGl0cyBwYXJ0aXRp b25zLgogCSAqLwotCWNyZWF0ZUZvcmVpZ25LZXlDaGVja1RyaWdnZXJzKFJlbGF0aW9uR2V0UmVs aWQocmVsKSwKLQkJCQkJCQkJICBSZWxhdGlvbkdldFJlbGlkKHBrcmVsKSwKLQkJCQkJCQkJICBm a2NvbnN0cmFpbnQsCi0JCQkJCQkJCSAgcGFyZW50Q29uc3RyLAotCQkJCQkJCQkgIGluZGV4T2lk LAotCQkJCQkJCQkgIHBhcmVudEluc1RyaWdnZXIsIHBhcmVudFVwZFRyaWdnZXIsCi0JCQkJCQkJ CSAgJmluc2VydFRyaWdnZXJPaWQsICZ1cGRhdGVUcmlnZ2VyT2lkKTsKKwlpZiAoZmtjb25zdHJh aW50LT5pc19lbmZvcmNlZCkKKwkJY3JlYXRlRm9yZWlnbktleUNoZWNrVHJpZ2dlcnMoUmVsYXRp b25HZXRSZWxpZChyZWwpLAorCQkJCQkJCQkJICBSZWxhdGlvbkdldFJlbGlkKHBrcmVsKSwKKwkJ CQkJCQkJCSAgZmtjb25zdHJhaW50LAorCQkJCQkJCQkJICBwYXJlbnRDb25zdHIsCisJCQkJCQkJ CQkgIGluZGV4T2lkLAorCQkJCQkJCQkJICBwYXJlbnRJbnNUcmlnZ2VyLCBwYXJlbnRVcGRUcmln Z2VyLAorCQkJCQkJCQkJICAmaW5zZXJ0VHJpZ2dlck9pZCwgJnVwZGF0ZVRyaWdnZXJPaWQpOwog CiAJaWYgKHJlbC0+cmRfcmVsLT5yZWxraW5kID09IFJFTEtJTkRfUkVMQVRJT04pCiAJewogCQkv KgogCQkgKiBUZWxsIFBoYXNlIDMgdG8gY2hlY2sgdGhhdCB0aGUgY29uc3RyYWludCBpcyBzYXRp c2ZpZWQgYnkgZXhpc3RpbmcKLQkJICogcm93cy4gV2UgY2FuIHNraXAgdGhpcyBkdXJpbmcgdGFi bGUgY3JlYXRpb24sIHdoZW4gcmVxdWVzdGVkCi0JCSAqIGV4cGxpY2l0bHkgYnkgc3BlY2lmeWlu ZyBOT1QgVkFMSUQgaW4gYW4gQUREIEZPUkVJR04gS0VZIGNvbW1hbmQsCi0JCSAqIGFuZCB3aGVu IHdlJ3JlIHJlY3JlYXRpbmcgYSBjb25zdHJhaW50IGZvbGxvd2luZyBhIFNFVCBEQVRBIFRZUEUK LQkJICogb3BlcmF0aW9uIHRoYXQgZGlkIG5vdCBpbXB1Z24gaXRzIHZhbGlkaXR5LgorCQkgKiBy b3dzLiBXZSBjYW4gc2tpcCB0aGlzIGR1cmluZyB0YWJsZSBjcmVhdGlvbiwgd2hlbiBjb25zdHJh aW50IGlzCisJCSAqIHNwZWNpZmllZCBhcyBOT1QgRU5GT1JDRUQsIHdoZW4gcmVxdWVzdGVkIGV4 cGxpY2l0bHkgYnkgc3BlY2lmeWluZworCQkgKiBOT1QgVkFMSUQgaW4gYW4gQUREIEZPUkVJR04g S0VZIGNvbW1hbmQsIGFuZCB3aGVuIHdlJ3JlIHJlY3JlYXRpbmcKKwkJICogYSBjb25zdHJhaW50 IGZvbGxvd2luZyBhIFNFVCBEQVRBIFRZUEUgb3BlcmF0aW9uIHRoYXQgZGlkIG5vdAorCQkgKiBp bXB1Z24gaXRzIHZhbGlkaXR5LgogCQkgKi8KLQkJaWYgKHdxdWV1ZSAmJiAhb2xkX2NoZWNrX29r ICYmICFma2NvbnN0cmFpbnQtPnNraXBfdmFsaWRhdGlvbikKKwkJaWYgKHdxdWV1ZSAmJiAhb2xk X2NoZWNrX29rICYmICFma2NvbnN0cmFpbnQtPnNraXBfdmFsaWRhdGlvbiAmJgorCQkJZmtjb25z dHJhaW50LT5pc19lbmZvcmNlZCkKIAkJewogCQkJTmV3Q29uc3RyYWludCAqbmV3Y29uOwogCQkJ QWx0ZXJlZFRhYmxlSW5mbyAqdGFiOwpAQCAtMTA1NDksNyArMTA1NjUsNyBAQCBhZGRGa1JlY3Vy c2VSZWZlcmVuY2luZyhMaXN0ICoqd3F1ZXVlLCBDb25zdHJhaW50ICpma2NvbnN0cmFpbnQsIFJl bGF0aW9uIHJlbCwKIAkJCQkJCQkJCSAgZmtjb25zdHJhaW50LT5kZWZlcnJhYmxlLAogCQkJCQkJ CQkJICBma2NvbnN0cmFpbnQtPmluaXRkZWZlcnJlZCwKIAkJCQkJCQkJCSAgZmtjb25zdHJhaW50 LT5pbml0aWFsbHlfdmFsaWQsCi0JCQkJCQkJCQkgIHRydWUsCS8qIElzIGVuZm9yY2VkICovCisJ CQkJCQkJCQkgIGZrY29uc3RyYWludC0+aXNfZW5mb3JjZWQsCiAJCQkJCQkJCQkgIHBhcmVudENv bnN0ciwKIAkJCQkJCQkJCSAgcGFydGl0aW9uSWQsCiAJCQkJCQkJCQkgIG1hcHBlZF9ma2F0dG51 bSwKQEAgLTEwNzI3LDggKzEwNzQzLDggQEAgQ2xvbmVGa1JlZmVyZW5jZWQoUmVsYXRpb24gcGFy ZW50UmVsLCBSZWxhdGlvbiBwYXJ0aXRpb25SZWwpCiAJCWludAkJCW51bWZrZGVsc2V0Y29sczsK IAkJQXR0ck51bWJlcgljb25mZGVsc2V0Y29sc1tJTkRFWF9NQVhfS0VZU107CiAJCUNvbnN0cmFp bnQgKmZrY29uc3RyYWludDsKLQkJT2lkCQkJZGVsZXRlVHJpZ2dlck9pZCwKLQkJCQkJdXBkYXRl VHJpZ2dlck9pZDsKKwkJT2lkCQkJZGVsZXRlVHJpZ2dlck9pZCA9IEludmFsaWRPaWQsCisJCQkJ CXVwZGF0ZVRyaWdnZXJPaWQgPSBJbnZhbGlkT2lkOwogCiAJCXR1cGxlID0gU2VhcmNoU3lzQ2Fj aGUxKENPTlNUUk9JRCwgT2JqZWN0SWRHZXREYXR1bShjb25zdHJPaWQpKTsKIAkJaWYgKCFIZWFw VHVwbGVJc1ZhbGlkKHR1cGxlKSkKQEAgLTEwNzgzLDYgKzEwNzk5LDcgQEAgQ2xvbmVGa1JlZmVy ZW5jZWQoUmVsYXRpb24gcGFyZW50UmVsLCBSZWxhdGlvbiBwYXJ0aXRpb25SZWwpCiAJCWZrY29u c3RyYWludC0+Y29ubmFtZSA9IE5hbWVTdHIoY29uc3RyRm9ybS0+Y29ubmFtZSk7CiAJCWZrY29u c3RyYWludC0+ZGVmZXJyYWJsZSA9IGNvbnN0ckZvcm0tPmNvbmRlZmVycmFibGU7CiAJCWZrY29u c3RyYWludC0+aW5pdGRlZmVycmVkID0gY29uc3RyRm9ybS0+Y29uZGVmZXJyZWQ7CisJCWZrY29u c3RyYWludC0+aXNfZW5mb3JjZWQgPSBjb25zdHJGb3JtLT5jb25lbmZvcmNlZDsKIAkJZmtjb25z dHJhaW50LT5sb2NhdGlvbiA9IC0xOwogCQlma2NvbnN0cmFpbnQtPnBrdGFibGUgPSBOVUxMOwog CQkvKiAtPmZrX2F0dHJzIGRldGVybWluZWQgYmVsb3cgKi8KQEAgLTEwODIyLDkgKzEwODM5LDEx IEBAIENsb25lRmtSZWZlcmVuY2VkKFJlbGF0aW9uIHBhcmVudFJlbCwgUmVsYXRpb24gcGFydGl0 aW9uUmVsKQogCQkgKiBwYXJlbnQgT0lEcyBmb3Igc2ltaWxhciB0cmlnZ2VycyB0aGF0IHdpbGwg YmUgY3JlYXRlZCBvbiB0aGUKIAkJICogcGFydGl0aW9uIGluIGFkZEZrUmVjdXJzZVJlZmVyZW5j ZWQoKS4KIAkJICovCi0JCUdldEZvcmVpZ25LZXlBY3Rpb25UcmlnZ2Vycyh0cmlncmVsLCBjb25z dHJPaWQsCi0JCQkJCQkJCQljb25zdHJGb3JtLT5jb25mcmVsaWQsIGNvbnN0ckZvcm0tPmNvbnJl bGlkLAotCQkJCQkJCQkJJmRlbGV0ZVRyaWdnZXJPaWQsICZ1cGRhdGVUcmlnZ2VyT2lkKTsKKwkJ aWYgKGNvbnN0ckZvcm0tPmNvbmVuZm9yY2VkKQorCQkJR2V0Rm9yZWlnbktleUFjdGlvblRyaWdn ZXJzKHRyaWdyZWwsIGNvbnN0ck9pZCwKKwkJCQkJCQkJCQljb25zdHJGb3JtLT5jb25mcmVsaWQs CisJCQkJCQkJCQkJY29uc3RyRm9ybS0+Y29ucmVsaWQsCisJCQkJCQkJCQkJJmRlbGV0ZVRyaWdn ZXJPaWQsICZ1cGRhdGVUcmlnZ2VyT2lkKTsKIAogCQlhZGRGa1JlY3Vyc2VSZWZlcmVuY2VkKE5V TEwsCiAJCQkJCQkJICAgZmtjb25zdHJhaW50LApAQCAtMTA5ODQsMTcgKzExMDAzLDE4IEBAIENs b25lRmtSZWZlcmVuY2luZyhMaXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiBwYXJlbnRSZWwsIFJlbGF0 aW9uIHBhcnRSZWwpCiAJCQltYXBwZWRfY29ua2V5W2ldID0gYXR0bWFwLT5hdHRudW1zW2Nvbmtl eVtpXSAtIDFdOwogCiAJCS8qCi0JCSAqIEdldCB0aGUgImNoZWNrIiB0cmlnZ2VycyBiZWxvbmdp bmcgdG8gdGhlIGNvbnN0cmFpbnQgdG8gcGFzcyBhcwotCQkgKiBwYXJlbnQgT0lEcyBmb3Igc2lt aWxhciB0cmlnZ2VycyB0aGF0IHdpbGwgYmUgY3JlYXRlZCBvbiB0aGUKLQkJICogcGFydGl0aW9u IGluIGFkZEZrUmVjdXJzZVJlZmVyZW5jaW5nKCkuICBUaGV5IGFyZSBhbHNvIHBhc3NlZCB0bwot CQkgKiB0cnlBdHRhY2hQYXJ0aXRpb25Gb3JlaWduS2V5KCkgYmVsb3cgdG8gc2ltcGx5IGFzc2ln biBhcyBwYXJlbnRzIHRvCi0JCSAqIHRoZSBwYXJ0aXRpb24ncyBleGlzdGluZyAiY2hlY2siIHRy aWdnZXJzLCB0aGF0IGlzLCBpZiB0aGUKLQkJICogY29ycmVzcG9uZGluZyBjb25zdHJhaW50cyBp cyBkZWVtZWQgYXR0YWNoYWJsZSB0byB0aGUgcGFyZW50Ci0JCSAqIGNvbnN0cmFpbnQuCisJCSAq IEdldCB0aGUgImNoZWNrIiB0cmlnZ2VycyBiZWxvbmdpbmcgdG8gdGhlIGNvbnN0cmFpbnQsIGlm IGl0IGlzCisJCSAqIGVuZm9yY2VkLCB0byBwYXNzIGFzIHBhcmVudCBPSURzIGZvciBzaW1pbGFy IHRyaWdnZXJzIHRoYXQgd2lsbCBiZQorCQkgKiBjcmVhdGVkIG9uIHRoZSBwYXJ0aXRpb24gaW4g YWRkRmtSZWN1cnNlUmVmZXJlbmNpbmcoKS4gIFRoZXkgYXJlCisJCSAqIGFsc28gcGFzc2VkIHRv IHRyeUF0dGFjaFBhcnRpdGlvbkZvcmVpZ25LZXkoKSBiZWxvdyB0byBzaW1wbHkKKwkJICogYXNz aWduIGFzIHBhcmVudHMgdG8gdGhlIHBhcnRpdGlvbidzIGV4aXN0aW5nICJjaGVjayIgdHJpZ2dl cnMsCisJCSAqIHRoYXQgaXMsIGlmIHRoZSBjb3JyZXNwb25kaW5nIGNvbnN0cmFpbnRzIGlzIGRl ZW1lZCBhdHRhY2hhYmxlIHRvCisJCSAqIHRoZSBwYXJlbnQgY29uc3RyYWludC4KIAkJICovCi0J CUdldEZvcmVpZ25LZXlDaGVja1RyaWdnZXJzKHRyaWdyZWwsIGNvbnN0ckZvcm0tPm9pZCwKLQkJ CQkJCQkJICAgY29uc3RyRm9ybS0+Y29uZnJlbGlkLCBjb25zdHJGb3JtLT5jb25yZWxpZCwKLQkJ CQkJCQkJICAgJmluc2VydFRyaWdnZXJPaWQsICZ1cGRhdGVUcmlnZ2VyT2lkKTsKKwkJaWYgKGNv bnN0ckZvcm0tPmNvbmVuZm9yY2VkKQorCQkJR2V0Rm9yZWlnbktleUNoZWNrVHJpZ2dlcnModHJp Z3JlbCwgY29uc3RyRm9ybS0+b2lkLAorCQkJCQkJCQkJICAgY29uc3RyRm9ybS0+Y29uZnJlbGlk LCBjb25zdHJGb3JtLT5jb25yZWxpZCwKKwkJCQkJCQkJCSAgICZpbnNlcnRUcmlnZ2VyT2lkLCAm dXBkYXRlVHJpZ2dlck9pZCk7CiAKIAkJLyoKIAkJICogQmVmb3JlIGNyZWF0aW5nIGEgbmV3IGNv bnN0cmFpbnQsIHNlZSB3aGV0aGVyIGFueSBleGlzdGluZyBGS3MgYXJlCkBAIC0xMTAzNiw2ICsx MTA1Niw3IEBAIENsb25lRmtSZWZlcmVuY2luZyhMaXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiBwYXJl bnRSZWwsIFJlbGF0aW9uIHBhcnRSZWwpCiAJCS8qIC0+Y29ubmFtZSBkZXRlcm1pbmVkIGJlbG93 ICovCiAJCWZrY29uc3RyYWludC0+ZGVmZXJyYWJsZSA9IGNvbnN0ckZvcm0tPmNvbmRlZmVycmFi bGU7CiAJCWZrY29uc3RyYWludC0+aW5pdGRlZmVycmVkID0gY29uc3RyRm9ybS0+Y29uZGVmZXJy ZWQ7CisJCWZrY29uc3RyYWludC0+aXNfZW5mb3JjZWQgPSBjb25zdHJGb3JtLT5jb25lbmZvcmNl ZDsKIAkJZmtjb25zdHJhaW50LT5sb2NhdGlvbiA9IC0xOwogCQlma2NvbnN0cmFpbnQtPnBrdGFi bGUgPSBOVUxMOwogCQkvKiAtPmZrX2F0dHJzIGRldGVybWluZWQgYmVsb3cgKi8KQEAgLTExMDc3 LDcgKzExMDk4LDcgQEAgQ2xvbmVGa1JlZmVyZW5jaW5nKExpc3QgKip3cXVldWUsIFJlbGF0aW9u IHBhcmVudFJlbCwgUmVsYXRpb24gcGFydFJlbCkKIAkJCQkJCQkJICBma2NvbnN0cmFpbnQtPmRl ZmVycmFibGUsCiAJCQkJCQkJCSAgZmtjb25zdHJhaW50LT5pbml0ZGVmZXJyZWQsCiAJCQkJCQkJ CSAgY29uc3RyRm9ybS0+Y29udmFsaWRhdGVkLAotCQkJCQkJCQkgIHRydWUsCS8qIElzIGVuZm9y Y2VkICovCisJCQkJCQkJCSAgZmtjb25zdHJhaW50LT5pc19lbmZvcmNlZCwKIAkJCQkJCQkJICBw YXJlbnRDb25zdHJPaWQsCiAJCQkJCQkJCSAgUmVsYXRpb25HZXRSZWxpZChwYXJ0UmVsKSwKIAkJ CQkJCQkJICBtYXBwZWRfY29ua2V5LApAQCAtMTEyMTcsNiArMTEyMzgsNyBAQCB0cnlBdHRhY2hQ YXJ0aXRpb25Gb3JlaWduS2V5KEZvcmVpZ25LZXlDYWNoZUluZm8gKmZrLAogCQkhcGFydENvbnN0 ci0+Y29udmFsaWRhdGVkIHx8CiAJCXBhcnRDb25zdHItPmNvbmRlZmVycmFibGUgIT0gcGFyZW50 Q29uc3RyLT5jb25kZWZlcnJhYmxlIHx8CiAJCXBhcnRDb25zdHItPmNvbmRlZmVycmVkICE9IHBh cmVudENvbnN0ci0+Y29uZGVmZXJyZWQgfHwKKwkJcGFydENvbnN0ci0+Y29uZW5mb3JjZWQgIT0g cGFyZW50Q29uc3RyLT5jb25lbmZvcmNlZCB8fAogCQlwYXJ0Q29uc3RyLT5jb25mdXBkdHlwZSAh PSBwYXJlbnRDb25zdHItPmNvbmZ1cGR0eXBlIHx8CiAJCXBhcnRDb25zdHItPmNvbmZkZWx0eXBl ICE9IHBhcmVudENvbnN0ci0+Y29uZmRlbHR5cGUgfHwKIAkJcGFydENvbnN0ci0+Y29uZm1hdGNo dHlwZSAhPSBwYXJlbnRDb25zdHItPmNvbmZtYXRjaHR5cGUpCkBAIC0xMTI3NiwxOCArMTEyOTgs MjIgQEAgdHJ5QXR0YWNoUGFydGl0aW9uRm9yZWlnbktleShGb3JlaWduS2V5Q2FjaGVJbmZvICpm aywKIAlDb25zdHJhaW50U2V0UGFyZW50Q29uc3RyYWludChmay0+Y29ub2lkLCBwYXJlbnRDb25z dHJPaWQsIHBhcnRSZWxpZCk7CiAKIAkvKgotCSAqIExpa2UgdGhlIGNvbnN0cmFpbnQsIGF0dGFj aCBwYXJ0aXRpb24ncyAiY2hlY2siIHRyaWdnZXJzIHRvIHRoZQotCSAqIGNvcnJlc3BvbmRpbmcg cGFyZW50IHRyaWdnZXJzLgorCSAqIFNpbWlsYXIgdG8gdGhlIGNvbnN0cmFpbnQsIGF0dGFjaCB0 aGUgcGFydGl0aW9uJ3MgImNoZWNrIiB0cmlnZ2VycyB0bworCSAqIHRoZSBjb3JyZXNwb25kaW5n IHBhcmVudCB0cmlnZ2VycyBpZiB0aGUgY29uc3RyYWludCBpcyBlbmZvcmNlZC4KKwkgKiBOb24t ZW5mb3JjZWQgY29uc3RyYWludHMgZG8gbm90IGhhdmUgdGhlc2UgdHJpZ2dlcnMuCiAJICovCi0J R2V0Rm9yZWlnbktleUNoZWNrVHJpZ2dlcnModHJpZ3JlbCwKLQkJCQkJCQkgICBmay0+Y29ub2lk LCBmay0+Y29uZnJlbGlkLCBmay0+Y29ucmVsaWQsCi0JCQkJCQkJICAgJmluc2VydFRyaWdnZXJP aWQsICZ1cGRhdGVUcmlnZ2VyT2lkKTsKLQlBc3NlcnQoT2lkSXNWYWxpZChpbnNlcnRUcmlnZ2Vy T2lkKSAmJiBPaWRJc1ZhbGlkKHBhcmVudEluc1RyaWdnZXIpKTsKLQlUcmlnZ2VyU2V0UGFyZW50 VHJpZ2dlcih0cmlncmVsLCBpbnNlcnRUcmlnZ2VyT2lkLCBwYXJlbnRJbnNUcmlnZ2VyLAotCQkJ CQkJCXBhcnRSZWxpZCk7Ci0JQXNzZXJ0KE9pZElzVmFsaWQodXBkYXRlVHJpZ2dlck9pZCkgJiYg T2lkSXNWYWxpZChwYXJlbnRVcGRUcmlnZ2VyKSk7Ci0JVHJpZ2dlclNldFBhcmVudFRyaWdnZXIo dHJpZ3JlbCwgdXBkYXRlVHJpZ2dlck9pZCwgcGFyZW50VXBkVHJpZ2dlciwKLQkJCQkJCQlwYXJ0 UmVsaWQpOworCWlmIChmay0+Y29uZW5mb3JjZWQpCisJeworCQlHZXRGb3JlaWduS2V5Q2hlY2tU cmlnZ2Vycyh0cmlncmVsLAorCQkJCQkJCQkgICBmay0+Y29ub2lkLCBmay0+Y29uZnJlbGlkLCBm ay0+Y29ucmVsaWQsCisJCQkJCQkJCSAgICZpbnNlcnRUcmlnZ2VyT2lkLCAmdXBkYXRlVHJpZ2dl ck9pZCk7CisJCUFzc2VydChPaWRJc1ZhbGlkKGluc2VydFRyaWdnZXJPaWQpICYmIE9pZElzVmFs aWQocGFyZW50SW5zVHJpZ2dlcikpOworCQlUcmlnZ2VyU2V0UGFyZW50VHJpZ2dlcih0cmlncmVs LCBpbnNlcnRUcmlnZ2VyT2lkLCBwYXJlbnRJbnNUcmlnZ2VyLAorCQkJCQkJCQlwYXJ0UmVsaWQp OworCQlBc3NlcnQoT2lkSXNWYWxpZCh1cGRhdGVUcmlnZ2VyT2lkKSAmJiBPaWRJc1ZhbGlkKHBh cmVudFVwZFRyaWdnZXIpKTsKKwkJVHJpZ2dlclNldFBhcmVudFRyaWdnZXIodHJpZ3JlbCwgdXBk YXRlVHJpZ2dlck9pZCwgcGFyZW50VXBkVHJpZ2dlciwKKwkJCQkJCQkJcGFydFJlbGlkKTsKKwl9 CiAKIAlDb21tYW5kQ291bnRlckluY3JlbWVudCgpOwogCXJldHVybiB0cnVlOwpAQCAtMTE0MjYs OCArMTE0NTIsOCBAQCBHZXRGb3JlaWduS2V5Q2hlY2tUcmlnZ2VycyhSZWxhdGlvbiB0cmlncmVs LAogICogSW52YWxpZE9iamVjdEFkZHJlc3MuCiAgKi8KIHN0YXRpYyBPYmplY3RBZGRyZXNzCi1B VEV4ZWNBbHRlckNvbnN0cmFpbnQoUmVsYXRpb24gcmVsLCBBbHRlclRhYmxlQ21kICpjbWQsIGJv b2wgcmVjdXJzZSwKLQkJCQkJICBib29sIHJlY3Vyc2luZywgTE9DS01PREUgbG9ja21vZGUpCitB VEV4ZWNBbHRlckNvbnN0cmFpbnQoTGlzdCAqKndxdWV1ZSwgUmVsYXRpb24gcmVsLCBBbHRlclRh YmxlQ21kICpjbWQsCisJCQkJCSAgYm9vbCByZWN1cnNlLCBib29sIHJlY3Vyc2luZywgTE9DS01P REUgbG9ja21vZGUpCiB7CiAJQ29uc3RyYWludCAqY21kY29uOwogCVJlbGF0aW9uCWNvbnJlbDsK QEAgLTExNTI5LDEyICsxMTU1NSwxNCBAQCBBVEV4ZWNBbHRlckNvbnN0cmFpbnQoUmVsYXRpb24g cmVsLCBBbHRlclRhYmxlQ21kICpjbWQsIGJvb2wgcmVjdXJzZSwKIAlhZGRyZXNzID0gSW52YWxp ZE9iamVjdEFkZHJlc3M7CiAJaWYgKGN1cnJjb24tPmNvbmRlZmVycmFibGUgIT0gY21kY29uLT5k ZWZlcnJhYmxlIHx8CiAJCWN1cnJjb24tPmNvbmRlZmVycmVkICE9IGNtZGNvbi0+aW5pdGRlZmVy cmVkIHx8CisJCWN1cnJjb24tPmNvbmVuZm9yY2VkICE9IGNtZGNvbi0+aXNfZW5mb3JjZWQgfHwK IAkJcmVsLT5yZF9yZWwtPnJlbGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSkKIAl7 Ci0JCWlmIChBVEV4ZWNBbHRlckNvbnN0clJlY3Vyc2UoY21kY29uLCBjb25yZWwsIHRncmVsLCBj dXJyY29uLT5jb25yZWxpZCwKLQkJCQkJCQkJCSBjdXJyY29uLT5jb25mcmVsaWQsIGNvbnR1cGxl LCAmb3RoZXJyZWxpZHMsCi0JCQkJCQkJCQkgbG9ja21vZGUsIEludmFsaWRPaWQsIEludmFsaWRP aWQsCi0JCQkJCQkJCQkgSW52YWxpZE9pZCwgSW52YWxpZE9pZCkpCisJCWlmIChBVEV4ZWNBbHRl ckNvbnN0clJlY3Vyc2Uod3F1ZXVlLCBjbWRjb24sIGNvbnJlbCwgdGdyZWwsCisJCQkJCQkJCQkg Y3VycmNvbi0+Y29ucmVsaWQsIGN1cnJjb24tPmNvbmZyZWxpZCwKKwkJCQkJCQkJCSBjb250dXBs ZSwgJm90aGVycmVsaWRzLCBsb2NrbW9kZSwKKwkJCQkJCQkJCSBJbnZhbGlkT2lkLCBJbnZhbGlk T2lkLCBJbnZhbGlkT2lkLAorCQkJCQkJCQkJIEludmFsaWRPaWQpKQogCQkJT2JqZWN0QWRkcmVz c1NldChhZGRyZXNzLCBDb25zdHJhaW50UmVsYXRpb25JZCwgY3VycmNvbi0+b2lkKTsKIAl9CiAK QEAgLTExNTY2LDggKzExNTk0LDggQEAgQVRFeGVjQWx0ZXJDb25zdHJhaW50KFJlbGF0aW9uIHJl bCwgQWx0ZXJUYWJsZUNtZCAqY21kLCBib29sIHJlY3Vyc2UsCiAgKiBidXQgZXhpc3RpbmcgcmVs ZWFzZXMgZG9uJ3QgZG8gdGhhdC4pCiAgKi8KIHN0YXRpYyBib29sCi1BVEV4ZWNBbHRlckNvbnN0 clJlY3Vyc2UoQ29uc3RyYWludCAqY21kY29uLCBSZWxhdGlvbiBjb25yZWwsIFJlbGF0aW9uIHRn cmVsLAotCQkJCQkJIGNvbnN0IE9pZCBma3JlbGlkLCBjb25zdCBPaWQgcGtyZWxpZCwKK0FURXhl Y0FsdGVyQ29uc3RyUmVjdXJzZShMaXN0ICoqd3F1ZXVlLCBDb25zdHJhaW50ICpjbWRjb24sIFJl bGF0aW9uIGNvbnJlbCwKKwkJCQkJCSBSZWxhdGlvbiB0Z3JlbCwgY29uc3QgT2lkIGZrcmVsaWQs IGNvbnN0IE9pZCBwa3JlbGlkLAogCQkJCQkJIEhlYXBUdXBsZSBjb250dXBsZSwgTGlzdCAqKm90 aGVycmVsaWRzLAogCQkJCQkJIExPQ0tNT0RFIGxvY2ttb2RlLCBPaWQgUmVmZXJlbmNlZFBhcmVu dERlbFRyaWdnZXIsCiAJCQkJCQkgT2lkIFJlZmVyZW5jZWRQYXJlbnRVcGRUcmlnZ2VyLApAQCAt MTE1NzYsMTkgKzExNjA0LDE4IEBAIEFURXhlY0FsdGVyQ29uc3RyUmVjdXJzZShDb25zdHJhaW50 ICpjbWRjb24sIFJlbGF0aW9uIGNvbnJlbCwgUmVsYXRpb24gdGdyZWwsCiB7CiAJRm9ybV9wZ19j b25zdHJhaW50IGN1cnJjb247CiAJT2lkCQkJY29ub2lkOworCU9pZAkJCWNvbnJlbGlkOwogCU9p ZAkJCXJlZnJlbGlkOwogCWJvb2wJCWNoYW5nZWQgPSBmYWxzZTsKLQlSZWxhdGlvbglyZWw7CiAK IAkvKiBzaW5jZSB0aGlzIGZ1bmN0aW9uIHJlY3Vyc2VzLCBpdCBjb3VsZCBiZSBkcml2ZW4gdG8g c3RhY2sgb3ZlcmZsb3cgKi8KIAljaGVja19zdGFja19kZXB0aCgpOwogCiAJY3VycmNvbiA9IChG b3JtX3BnX2NvbnN0cmFpbnQpIEdFVFNUUlVDVChjb250dXBsZSk7CiAJY29ub2lkID0gY3VycmNv bi0+b2lkOworCWNvbnJlbGlkID0gY3VycmNvbi0+Y29ucmVsaWQ7CiAJcmVmcmVsaWQgPSBjdXJy Y29uLT5jb25mcmVsaWQ7CiAKLQlyZWwgPSB0YWJsZV9vcGVuKGN1cnJjb24tPmNvbnJlbGlkLCBs b2NrbW9kZSk7Ci0KIAkvKgogCSAqIFVwZGF0ZSBwZ19jb25zdHJhaW50IHdpdGggdGhlIGZsYWdz IGZyb20gY21kY29uLgogCSAqCkBAIC0xMTU5Niw3ICsxMTYyMyw4IEBAIEFURXhlY0FsdGVyQ29u c3RyUmVjdXJzZShDb25zdHJhaW50ICpjbWRjb24sIFJlbGF0aW9uIGNvbnJlbCwgUmVsYXRpb24g dGdyZWwsCiAJICogc2lsZW50bHkgZG8gbm90aGluZy4KIAkgKi8KIAlpZiAoY3VycmNvbi0+Y29u ZGVmZXJyYWJsZSAhPSBjbWRjb24tPmRlZmVycmFibGUgfHwKLQkJY3VycmNvbi0+Y29uZGVmZXJy ZWQgIT0gY21kY29uLT5pbml0ZGVmZXJyZWQpCisJCWN1cnJjb24tPmNvbmRlZmVycmVkICE9IGNt ZGNvbi0+aW5pdGRlZmVycmVkIHx8CisJCWN1cnJjb24tPmNvbmVuZm9yY2VkICE9IGNtZGNvbi0+ aXNfZW5mb3JjZWQpCiAJewogCQlIZWFwVHVwbGUJY29weVR1cGxlOwogCQlGb3JtX3BnX2NvbnN0 cmFpbnQgY29weV9jb247CkBAIC0xMTYwNSw2ICsxMTYzMyw3IEBAIEFURXhlY0FsdGVyQ29uc3Ry UmVjdXJzZShDb25zdHJhaW50ICpjbWRjb24sIFJlbGF0aW9uIGNvbnJlbCwgUmVsYXRpb24gdGdy ZWwsCiAJCWNvcHlfY29uID0gKEZvcm1fcGdfY29uc3RyYWludCkgR0VUU1RSVUNUKGNvcHlUdXBs ZSk7CiAJCWNvcHlfY29uLT5jb25kZWZlcnJhYmxlID0gY21kY29uLT5kZWZlcnJhYmxlOwogCQlj b3B5X2Nvbi0+Y29uZGVmZXJyZWQgPSBjbWRjb24tPmluaXRkZWZlcnJlZDsKKwkJY29weV9jb24t PmNvbmVuZm9yY2VkID0gY21kY29uLT5pc19lbmZvcmNlZDsKIAkJQ2F0YWxvZ1R1cGxlVXBkYXRl KGNvbnJlbCwgJmNvcHlUdXBsZS0+dF9zZWxmLCBjb3B5VHVwbGUpOwogCiAJCUludm9rZU9iamVj dFBvc3RBbHRlckhvb2soQ29uc3RyYWludFJlbGF0aW9uSWQsCkBAIC0xMTYxNCwzOCArMTE2NDMs MjE0IEBAIEFURXhlY0FsdGVyQ29uc3RyUmVjdXJzZShDb25zdHJhaW50ICpjbWRjb24sIFJlbGF0 aW9uIGNvbnJlbCwgUmVsYXRpb24gdGdyZWwsCiAJCWNoYW5nZWQgPSB0cnVlOwogCiAJCS8qIE1h a2UgbmV3IGNvbnN0cmFpbnQgZmxhZ3MgdmlzaWJsZSB0byBvdGhlcnMgKi8KLQkJQ2FjaGVJbnZh bGlkYXRlUmVsY2FjaGUocmVsKTsKKwkJQ2FjaGVJbnZhbGlkYXRlUmVsY2FjaGVCeVJlbGlkKGNv bnJlbGlkKTsKKwl9CiAKKwlpZiAoY3VycmNvbi0+Y29uZW5mb3JjZWQgIT0gY21kY29uLT5pc19l bmZvcmNlZCkKKwl7CisJCUFURXhlY0FsdGVyQ29uc3RyRW5mb3JjZWFiaWxpdHkod3F1ZXVlLCBj bWRjb24sIGNvbnJlbCwgdGdyZWwsIGZrcmVsaWQsCisJCQkJCQkJCQkJcGtyZWxpZCwgY29udHVw bGUsIG90aGVycmVsaWRzLCBsb2NrbW9kZSwKKwkJCQkJCQkJCQlSZWZlcmVuY2VkUGFyZW50RGVs VHJpZ2dlciwKKwkJCQkJCQkJCQlSZWZlcmVuY2VkUGFyZW50VXBkVHJpZ2dlciwKKwkJCQkJCQkJ CQlSZWZlcmVuY2luZ1BhcmVudEluc1RyaWdnZXIsCisJCQkJCQkJCQkJUmVmZXJlbmNpbmdQYXJl bnRVcGRUcmlnZ2VyKTsKKwl9CisJZWxzZQorCXsKIAkJLyoKIAkJICogTm93IHdlIG5lZWQgdG8g dXBkYXRlIHRoZSBtdWx0aXBsZSBlbnRyaWVzIGluIHBnX3RyaWdnZXIgdGhhdAogCQkgKiBpbXBs ZW1lbnQgdGhlIGNvbnN0cmFpbnQuCiAJCSAqLwotCQlBbHRlckNvbnN0clRyaWdnZXJEZWZlcnJh YmlsaXR5KGNvbm9pZCwgdGdyZWwsIHJlbCwgY21kY29uLT5kZWZlcnJhYmxlLAotCQkJCQkJCQkJ CWNtZGNvbi0+aW5pdGRlZmVycmVkLCBvdGhlcnJlbGlkcyk7CisJCUFsdGVyQ29uc3RyVHJpZ2dl ckRlZmVycmFiaWxpdHkoY29ub2lkLCB0Z3JlbCwgY29ucmVsaWQsCisJCQkJCQkJCQkJY21kY29u LT5kZWZlcnJhYmxlLAorCQkJCQkJCQkJCWNtZGNvbi0+aW5pdGRlZmVycmVkLAorCQkJCQkJCQkJ CW90aGVycmVsaWRzKTsKKworCQkvKgorCQkgKiBJZiB0aGUgdGFibGUgYXQgZWl0aGVyIGVuZCBv ZiB0aGUgY29uc3RyYWludCBpcyBwYXJ0aXRpb25lZCwgd2UKKwkJICogbmVlZCB0byByZWN1cnNl IGFuZCBoYW5kbGUgZXZlcnkgY29uc3RyYWludCB0aGF0IGlzIGEgY2hpbGQgb2YgdGhpcworCQkg KiBvbmUuCisJCSAqCisJCSAqIChUaGlzIGFzc3VtZXMgdGhhdCB0aGUgcmVjdXJzZSBmbGFnIGlz IGZvcmNpYmx5IHNldCBmb3IgcGFydGl0aW9uZWQKKwkJICogdGFibGVzLCBhbmQgbm90IHNldCBm b3IgbGVnYWN5IGluaGVyaXRhbmNlLCB0aG91Z2ggd2UgZG9uJ3QgY2hlY2sKKwkJICogZm9yIHRo YXQgaGVyZS4pCisJCSAqLworCQlpZiAoZ2V0X3JlbF9yZWxraW5kKGNvbnJlbGlkKSA9PSBSRUxL SU5EX1BBUlRJVElPTkVEX1RBQkxFIHx8CisJCQlnZXRfcmVsX3JlbGtpbmQocmVmcmVsaWQpID09 IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUpCisJCQlBVEV4ZWNBbHRlckNoaWxkQ29uc3RyKHdx dWV1ZSwgY21kY29uLCBjb25yZWwsIHRncmVsLCBma3JlbGlkLAorCQkJCQkJCQkgICBwa3JlbGlk LCBjb250dXBsZSwgb3RoZXJyZWxpZHMsIGxvY2ttb2RlLAorCQkJCQkJCQkgICBSZWZlcmVuY2Vk UGFyZW50RGVsVHJpZ2dlciwKKwkJCQkJCQkJICAgUmVmZXJlbmNlZFBhcmVudFVwZFRyaWdnZXIs CisJCQkJCQkJCSAgIFJlZmVyZW5jaW5nUGFyZW50SW5zVHJpZ2dlciwKKwkJCQkJCQkJICAgUmVm ZXJlbmNpbmdQYXJlbnRVcGRUcmlnZ2VyKTsKIAl9CiAKLQkvKgotCSAqIElmIHRoZSB0YWJsZSBh dCBlaXRoZXIgZW5kIG9mIHRoZSBjb25zdHJhaW50IGlzIHBhcnRpdGlvbmVkLCB3ZSBuZWVkIHRv Ci0JICogcmVjdXJzZSBhbmQgaGFuZGxlIGV2ZXJ5IGNvbnN0cmFpbnQgdGhhdCBpcyBhIGNoaWxk IG9mIHRoaXMgb25lLgotCSAqCi0JICogKFRoaXMgYXNzdW1lcyB0aGF0IHRoZSByZWN1cnNlIGZs YWcgaXMgZm9yY2libHkgc2V0IGZvciBwYXJ0aXRpb25lZAotCSAqIHRhYmxlcywgYW5kIG5vdCBz ZXQgZm9yIGxlZ2FjeSBpbmhlcml0YW5jZSwgdGhvdWdoIHdlIGRvbid0IGNoZWNrIGZvcgotCSAq IHRoYXQgaGVyZS4pCi0JICovCi0JaWYgKHJlbC0+cmRfcmVsLT5yZWxraW5kID09IFJFTEtJTkRf UEFSVElUSU9ORURfVEFCTEUgfHwKLQkJZ2V0X3JlbF9yZWxraW5kKHJlZnJlbGlkKSA9PSBSRUxL SU5EX1BBUlRJVElPTkVEX1RBQkxFKQotCQlBVEV4ZWNBbHRlckNoaWxkQ29uc3RyKGNtZGNvbiwg Y29ucmVsLCB0Z3JlbCwgZmtyZWxpZCwgcGtyZWxpZCwKLQkJCQkJCQkgICBjb250dXBsZSwgb3Ro ZXJyZWxpZHMsIGxvY2ttb2RlLAotCQkJCQkJCSAgIFJlZmVyZW5jZWRQYXJlbnREZWxUcmlnZ2Vy LAotCQkJCQkJCSAgIFJlZmVyZW5jZWRQYXJlbnRVcGRUcmlnZ2VyLAotCQkJCQkJCSAgIFJlZmVy ZW5jaW5nUGFyZW50SW5zVHJpZ2dlciwKLQkJCQkJCQkgICBSZWZlcmVuY2luZ1BhcmVudFVwZFRy aWdnZXIpOwotCi0JdGFibGVfY2xvc2UocmVsLCBOb0xvY2spOwotCiAJcmV0dXJuIGNoYW5nZWQ7 CiB9CiAKKy8qCisgKiBBIHN1YnJvdXRpbmUgb2YgQVRFeGVjQWx0ZXJDb25zdHJSZWN1cnNlIHRo YXQgdXBkYXRlcyB0aGUgZW5mb3JjZWFiaWxpdHkgb2YKKyAqIGEgZm9yZWlnbiBrZXkgY29uc3Ry YWludC4gRGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlIGNvbnN0cmFpbnQgaXMgYmVpbmcgc2V0Cisg KiB0byBlbmZvcmNlZCBvciBub3QgZW5mb3JjZWQsIGl0IGNyZWF0ZXMgb3IgZHJvcHMgdGhlIHRy aWdnZXIgYWNjb3JkaW5nbHkuCisgKgorICogVGhlIGFyZ3VtZW50cyB0byB0aGlzIGZ1bmN0aW9u IGhhdmUgdGhlIHNhbWUgbWVhbmluZyBhcyB0aGUgYXJndW1lbnRzIHRvCisgKiBBVEV4ZWNBbHRl ckNvbnN0clJlY3Vyc2UuCisgKi8KK3N0YXRpYyB2b2lkCitBVEV4ZWNBbHRlckNvbnN0ckVuZm9y Y2VhYmlsaXR5KExpc3QgKip3cXVldWUsIENvbnN0cmFpbnQgKmNtZGNvbiwKKwkJCQkJCQkJUmVs YXRpb24gY29ucmVsLCBSZWxhdGlvbiB0Z3JlbCwKKwkJCQkJCQkJY29uc3QgT2lkIGZrcmVsaWQs IGNvbnN0IE9pZCBwa3JlbGlkLAorCQkJCQkJCQlIZWFwVHVwbGUgY29udHVwbGUsIExpc3QgKipv dGhlcnJlbGlkcywKKwkJCQkJCQkJTE9DS01PREUgbG9ja21vZGUsIE9pZCBSZWZlcmVuY2VkUGFy ZW50RGVsVHJpZ2dlciwKKwkJCQkJCQkJT2lkIFJlZmVyZW5jZWRQYXJlbnRVcGRUcmlnZ2VyLAor CQkJCQkJCQlPaWQgUmVmZXJlbmNpbmdQYXJlbnRJbnNUcmlnZ2VyLAorCQkJCQkJCQlPaWQgUmVm ZXJlbmNpbmdQYXJlbnRVcGRUcmlnZ2VyKQoreworCUZvcm1fcGdfY29uc3RyYWludCBjdXJyY29u OworCU9pZAkJCWNvbm9pZDsKKworCWN1cnJjb24gPSAoRm9ybV9wZ19jb25zdHJhaW50KSBHRVRT VFJVQ1QoY29udHVwbGUpOworCWNvbm9pZCA9IGN1cnJjb24tPm9pZDsKKworCS8qIERyb3AgdHJp Z2dlcnMgKi8KKwlpZiAoIWNtZGNvbi0+aXNfZW5mb3JjZWQpCisJeworCQlIZWFwVHVwbGUJdGd0 dXBsZTsKKwkJU2NhbktleURhdGEgdGdrZXk7CisJCVN5c1NjYW5EZXNjIHRnc2NhbjsKKworCQkv KgorCQkgKiBXaGVuIHNldHRpbmcgYSBjb25zdHJhaW50IHRvIE5PVCBFTkZPUkNFRCwgdGhlIGNv bnN0cmFpbnQgdHJpZ2dlcnMKKwkJICogbmVlZCB0byBiZSBkcm9wcGVkLiBUaGVyZWZvcmUsIHdl IG11c3QgcHJvY2VzcyB0aGUgY2hpbGQgcmVsYXRpb25zCisJCSAqIGZpcnN0LCBmb2xsb3dlZCBi eSB0aGUgcGFyZW50LCB0byBhY2NvdW50IGZvciBkZXBlbmRlbmNpZXMuCisJCSAqLworCQlpZiAo Z2V0X3JlbF9yZWxraW5kKGN1cnJjb24tPmNvbnJlbGlkKSA9PSBSRUxLSU5EX1BBUlRJVElPTkVE X1RBQkxFIHx8CisJCQlnZXRfcmVsX3JlbGtpbmQoY3VycmNvbi0+Y29uZnJlbGlkKSA9PSBSRUxL SU5EX1BBUlRJVElPTkVEX1RBQkxFKQorCQkJQVRFeGVjQWx0ZXJDaGlsZENvbnN0cih3cXVldWUs IGNtZGNvbiwgY29ucmVsLCB0Z3JlbCwgZmtyZWxpZCwKKwkJCQkJCQkJICAgcGtyZWxpZCwgY29u dHVwbGUsIG90aGVycmVsaWRzLCBsb2NrbW9kZSwKKwkJCQkJCQkJICAgUmVmZXJlbmNlZFBhcmVu dERlbFRyaWdnZXIsCisJCQkJCQkJCSAgIFJlZmVyZW5jZWRQYXJlbnRVcGRUcmlnZ2VyLAorCQkJ CQkJCQkgICBSZWZlcmVuY2luZ1BhcmVudEluc1RyaWdnZXIsCisJCQkJCQkJCSAgIFJlZmVyZW5j aW5nUGFyZW50VXBkVHJpZ2dlcik7CisKKwkJU2NhbktleUluaXQoJnRna2V5LAorCQkJCQlBbnVt X3BnX3RyaWdnZXJfdGdjb25zdHJhaW50LAorCQkJCQlCVEVxdWFsU3RyYXRlZ3lOdW1iZXIsIEZf T0lERVEsCisJCQkJCU9iamVjdElkR2V0RGF0dW0oY29ub2lkKSk7CisJCXRnc2NhbiA9IHN5c3Rh YmxlX2JlZ2luc2Nhbih0Z3JlbCwgVHJpZ2dlckNvbnN0cmFpbnRJbmRleElkLCB0cnVlLAorCQkJ CQkJCQkJTlVMTCwgMSwgJnRna2V5KTsKKwkJd2hpbGUgKEhlYXBUdXBsZUlzVmFsaWQodGd0dXBs ZSA9IHN5c3RhYmxlX2dldG5leHQodGdzY2FuKSkpCisJCXsKKwkJCUZvcm1fcGdfdHJpZ2dlciB0 Z2Zvcm0gPSAoRm9ybV9wZ190cmlnZ2VyKSBHRVRTVFJVQ1QodGd0dXBsZSk7CisJCQlPYmplY3RB ZGRyZXNzIHRyaWdnZXI7CisKKwkJCS8qCisJCQkgKiBEZWxldGUgb25seSBSSV9GS2V5X25vYWN0 aW9uX2RlbCwgUklfRktleV9ub2FjdGlvbl91cGQsCisJCQkgKiBSSV9GS2V5X2NoZWNrX2lucyBh bmQgUklfRktleV9jaGVja191cGQgdHJpZ2dlcnMsIGJ1dCBub3QKKwkJCSAqIG90aGVyczsgc2Vl IGNyZWF0ZUZvcmVpZ25LZXlBY3Rpb25UcmlnZ2VycyBhbmQKKwkJCSAqIENyZWF0ZUZLQ2hlY2tU cmlnZ2VyLgorCQkJICovCisJCQlpZiAodGdmb3JtLT50Z2ZvaWQgIT0gRl9SSV9GS0VZX05PQUNU SU9OX0RFTCAmJgorCQkJCXRnZm9ybS0+dGdmb2lkICE9IEZfUklfRktFWV9OT0FDVElPTl9VUEQg JiYKKwkJCQl0Z2Zvcm0tPnRnZm9pZCAhPSBGX1JJX0ZLRVlfQ0hFQ0tfSU5TICYmCisJCQkJdGdm b3JtLT50Z2ZvaWQgIT0gRl9SSV9GS0VZX0NIRUNLX1VQRCkKKwkJCQljb250aW51ZTsKKworCQkJ ZGVsZXRlRGVwZW5kZW5jeVJlY29yZHNGb3IoVHJpZ2dlclJlbGF0aW9uSWQsIHRnZm9ybS0+b2lk LAorCQkJCQkJCQkJICAgZmFsc2UpOworCQkJLyogbWFrZSBkZXBlbmRlbmN5IGRlbGV0aW9uIHZp c2libGUgdG8gcGVyZm9ybURlbGV0aW9uICovCisJCQlDb21tYW5kQ291bnRlckluY3JlbWVudCgp OworCQkJT2JqZWN0QWRkcmVzc1NldCh0cmlnZ2VyLCBUcmlnZ2VyUmVsYXRpb25JZCwgdGdmb3Jt LT5vaWQpOworCQkJcGVyZm9ybURlbGV0aW9uKCZ0cmlnZ2VyLCBEUk9QX1JFU1RSSUNULCAwKTsK KwkJCS8qIG1ha2UgdHJpZ2dlciBkcm9wIHZpc2libGUsIGluIGNhc2UgdGhlIGxvb3AgaXRlcmF0 ZXMgKi8KKwkJCUNvbW1hbmRDb3VudGVySW5jcmVtZW50KCk7CisJCX0KKworCQlzeXN0YWJsZV9l bmRzY2FuKHRnc2Nhbik7CisJfQorCWVsc2UJCQkJCQkvKiBDcmVhdGUgdHJpZ2dlcnMgKi8KKwl7 CisJCVJlbGF0aW9uCXJlbDsKKwkJT2lkCQkJUmVmZXJlbmNlZERlbFRyaWdnZXJPaWQgPSBJbnZh bGlkT2lkLAorCQkJCQlSZWZlcmVuY2VkVXBkVHJpZ2dlck9pZCA9IEludmFsaWRPaWQsCisJCQkJ CVJlZmVyZW5jaW5nSW5zVHJpZ2dlck9pZCA9IEludmFsaWRPaWQsCisJCQkJCVJlZmVyZW5jaW5n VXBkVHJpZ2dlck9pZCA9IEludmFsaWRPaWQ7CisKKwkJLyogVXBkYXRlIHRoZSBmb3JlaWduIGtl eSBhY3Rpb24gcmVxdWlyZWQgZm9yIHRyaWdnZXIgY3JlYXRpb24uICovCisJCWNtZGNvbi0+Zmtf bWF0Y2h0eXBlID0gY3VycmNvbi0+Y29uZm1hdGNodHlwZTsKKwkJY21kY29uLT5ma191cGRfYWN0 aW9uID0gY3VycmNvbi0+Y29uZnVwZHR5cGU7CisJCWNtZGNvbi0+ZmtfZGVsX2FjdGlvbiA9IGN1 cnJjb24tPmNvbmZkZWx0eXBlOworCisJCXJlbCA9IHRhYmxlX29wZW4oY3VycmNvbi0+Y29ucmVs aWQsIGxvY2ttb2RlKTsKKworCQkvKiBDcmVhdGUgcmVmZXJlbmNlZCB0cmlnZ2VycyAqLworCQlp ZiAoY3VycmNvbi0+Y29ucmVsaWQgPT0gZmtyZWxpZCkKKwkJCWNyZWF0ZUZvcmVpZ25LZXlBY3Rp b25UcmlnZ2VycyhyZWwsCisJCQkJCQkJCQkJICAgY3VycmNvbi0+Y29uZnJlbGlkLAorCQkJCQkJ CQkJCSAgIGNtZGNvbiwKKwkJCQkJCQkJCQkgICBjb25vaWQsCisJCQkJCQkJCQkJICAgY3VycmNv bi0+Y29uaW5kaWQsCisJCQkJCQkJCQkJICAgUmVmZXJlbmNlZFBhcmVudERlbFRyaWdnZXIsCisJ CQkJCQkJCQkJICAgUmVmZXJlbmNlZFBhcmVudFVwZFRyaWdnZXIsCisJCQkJCQkJCQkJICAgJlJl ZmVyZW5jZWREZWxUcmlnZ2VyT2lkLAorCQkJCQkJCQkJCSAgICZSZWZlcmVuY2VkVXBkVHJpZ2dl ck9pZCk7CisKKwkJLyogQ3JlYXRlIHJlZmVyZW5jaW5nIHRyaWdnZXJzICovCisJCWlmIChjdXJy Y29uLT5jb25mcmVsaWQgPT0gcGtyZWxpZCkKKwkJeworCQkJY3JlYXRlRm9yZWlnbktleUNoZWNr VHJpZ2dlcnMoY3VycmNvbi0+Y29ucmVsaWQsCisJCQkJCQkJCQkJICBwa3JlbGlkLAorCQkJCQkJ CQkJCSAgY21kY29uLAorCQkJCQkJCQkJCSAgY29ub2lkLAorCQkJCQkJCQkJCSAgY3VycmNvbi0+ Y29uaW5kaWQsCisJCQkJCQkJCQkJICBSZWZlcmVuY2luZ1BhcmVudEluc1RyaWdnZXIsCisJCQkJ CQkJCQkJICBSZWZlcmVuY2luZ1BhcmVudFVwZFRyaWdnZXIsCisJCQkJCQkJCQkJICAmUmVmZXJl bmNpbmdJbnNUcmlnZ2VyT2lkLAorCQkJCQkJCQkJCSAgJlJlZmVyZW5jaW5nVXBkVHJpZ2dlck9p ZCk7CisKKwkJCS8qCisJCQkgKiBUZWxsIFBoYXNlIDMgdG8gY2hlY2sgdGhhdCB0aGUgY29uc3Ry YWludCBpcyBzYXRpc2ZpZWQgYnkKKwkJCSAqIGV4aXN0aW5nIHJvd3MsIGJ1dCBza2lwIHRoaXMg c3RlcCBpZiB0aGUgcm93cyBoYXZlIG5vdCBiZWVuCisJCQkgKiB2YWxpZGF0ZWQgcHJldmlvdXNs eS4KKwkJCSAqLworCQkJaWYgKHJlbC0+cmRfcmVsLT5yZWxraW5kID09IFJFTEtJTkRfUkVMQVRJ T04gJiYKKwkJCQl3cXVldWUgJiYgY3VycmNvbi0+Y29udmFsaWRhdGVkKQorCQkJeworCQkJCU5l d0NvbnN0cmFpbnQgKm5ld2NvbjsKKwkJCQlBbHRlcmVkVGFibGVJbmZvICp0YWI7CisKKwkJCQl0 YWIgPSBBVEdldFF1ZXVlRW50cnkod3F1ZXVlLCByZWwpOworCisJCQkJbmV3Y29uID0gKE5ld0Nv bnN0cmFpbnQgKikgcGFsbG9jMChzaXplb2YoTmV3Q29uc3RyYWludCkpOworCQkJCW5ld2Nvbi0+ bmFtZSA9IHBzdHJkdXAoTmFtZVN0cihjdXJyY29uLT5jb25uYW1lKSk7CisJCQkJbmV3Y29uLT5j b25pZCA9IGN1cnJjb24tPm9pZDsKKwkJCQluZXdjb24tPmNvbnR5cGUgPSBDT05TVFJfRk9SRUlH TjsKKwkJCQluZXdjb24tPnJlZnJlbGlkID0gcGtyZWxpZDsKKwkJCQluZXdjb24tPnJlZmluZGlk ID0gY3VycmNvbi0+Y29uaW5kaWQ7CisJCQkJbmV3Y29uLT5jb253aXRocGVyaW9kID0gY3VycmNv bi0+Y29ucGVyaW9kOworCQkJCW5ld2Nvbi0+cXVhbCA9IChOb2RlICopIGNtZGNvbjsKKworCQkJ CXRhYi0+Y29uc3RyYWludHMgPSBsYXBwZW5kKHRhYi0+Y29uc3RyYWludHMsIG5ld2Nvbik7CisJ CQl9CisJCX0KKworCQkvKgorCQkgKiBJZiB0aGUgdGFibGUgYXQgZWl0aGVyIGVuZCBvZiB0aGUg Y29uc3RyYWludCBpcyBwYXJ0aXRpb25lZCwgd2UKKwkJICogbmVlZCB0byByZWN1cnNlIGFuZCBj cmVhdGUgdHJpZ2dlcnMgZm9yIGVhY2ggY29uc3RyYWludCB0aGF0IGlzIGEKKwkJICogY2hpbGQg b2YgdGhpcyBvbmUuCisJCSAqLworCQlpZiAocmVsLT5yZF9yZWwtPnJlbGtpbmQgPT0gUkVMS0lO RF9QQVJUSVRJT05FRF9UQUJMRSB8fAorCQkJZ2V0X3JlbF9yZWxraW5kKGN1cnJjb24tPmNvbmZy ZWxpZCkgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSkKKwkJCUFURXhlY0FsdGVyQ2hpbGRD b25zdHIod3F1ZXVlLCBjbWRjb24sIGNvbnJlbCwgdGdyZWwsIGZrcmVsaWQsCisJCQkJCQkJCSAg IHBrcmVsaWQsIGNvbnR1cGxlLCBvdGhlcnJlbGlkcywgbG9ja21vZGUsCisJCQkJCQkJCSAgIFJl ZmVyZW5jZWREZWxUcmlnZ2VyT2lkLAorCQkJCQkJCQkgICBSZWZlcmVuY2VkVXBkVHJpZ2dlck9p ZCwKKwkJCQkJCQkJICAgUmVmZXJlbmNpbmdJbnNUcmlnZ2VyT2lkLAorCQkJCQkJCQkgICBSZWZl cmVuY2luZ1VwZFRyaWdnZXJPaWQpOworCQl0YWJsZV9jbG9zZShyZWwsIE5vTG9jayk7CisJfQor fQorCiAvKgogICogQSBzdWJyb3V0aW5lIG9mIEFURXhlY0FsdGVyQ29uc3RyUmVjdXJzZSB0aGF0 IHVwZGF0ZWQgY29uc3RyYWludCB0cmlnZ2VyJ3MKICAqIGRlZmVycmFiaWxpdHkuCkBAIC0xMTY1 NCw3ICsxMTg1OSw3IEBAIEFURXhlY0FsdGVyQ29uc3RyUmVjdXJzZShDb25zdHJhaW50ICpjbWRj b24sIFJlbGF0aW9uIGNvbnJlbCwgUmVsYXRpb24gdGdyZWwsCiAgKiBBVEV4ZWNBbHRlckNvbnN0 clJlY3Vyc2UuCiAgKi8KIHN0YXRpYyB2b2lkCi1BbHRlckNvbnN0clRyaWdnZXJEZWZlcnJhYmls aXR5KE9pZCBjb25vaWQsIFJlbGF0aW9uIHRncmVsLCBSZWxhdGlvbiByZWwsCitBbHRlckNvbnN0 clRyaWdnZXJEZWZlcnJhYmlsaXR5KE9pZCBjb25vaWQsIFJlbGF0aW9uIHRncmVsLCBPaWQgZmty ZWwsCiAJCQkJCQkJCWJvb2wgZGVmZXJyYWJsZSwgYm9vbCBpbml0ZGVmZXJyZWQsCiAJCQkJCQkJ CUxpc3QgKipvdGhlcnJlbGlkcykKIHsKQEAgLTExNjgwLDcgKzExODg1LDcgQEAgQWx0ZXJDb25z dHJUcmlnZ2VyRGVmZXJyYWJpbGl0eShPaWQgY29ub2lkLCBSZWxhdGlvbiB0Z3JlbCwgUmVsYXRp b24gcmVsLAogCQkgKiBvdGhlciByZWxzIHRoYXQgZG9uJ3QgaGF2ZSBhIHRyaWdnZXIgd2hvc2Ug cHJvcGVydGllcyBjaGFuZ2UsIGJ1dAogCQkgKiBsZXQncyBiZSBjb25zZXJ2YXRpdmUuKQogCQkg Ki8KLQkJaWYgKHRnZm9ybS0+dGdyZWxpZCAhPSBSZWxhdGlvbkdldFJlbGlkKHJlbCkpCisJCWlm ICh0Z2Zvcm0tPnRncmVsaWQgIT0gZmtyZWwpCiAJCQkqb3RoZXJyZWxpZHMgPSBsaXN0X2FwcGVu ZF91bmlxdWVfb2lkKCpvdGhlcnJlbGlkcywKIAkJCQkJCQkJCQkJCSAgdGdmb3JtLT50Z3JlbGlk KTsKIApAQCAtMTE3MTksOCArMTE5MjQsOCBAQCBBbHRlckNvbnN0clRyaWdnZXJEZWZlcnJhYmls aXR5KE9pZCBjb25vaWQsIFJlbGF0aW9uIHRncmVsLCBSZWxhdGlvbiByZWwsCiAgKiBBVEV4ZWNB bHRlckNvbnN0clJlY3Vyc2UuCiAgKi8KIHN0YXRpYyB2b2lkCi1BVEV4ZWNBbHRlckNoaWxkQ29u c3RyKENvbnN0cmFpbnQgKmNtZGNvbiwgUmVsYXRpb24gY29ucmVsLCBSZWxhdGlvbiB0Z3JlbCwK LQkJCQkJICAgY29uc3QgT2lkIGZrcmVsaWQsIGNvbnN0IE9pZCBwa3JlbGlkLAorQVRFeGVjQWx0 ZXJDaGlsZENvbnN0cihMaXN0ICoqd3F1ZXVlLCBDb25zdHJhaW50ICpjbWRjb24sIFJlbGF0aW9u IGNvbnJlbCwKKwkJCQkJICAgUmVsYXRpb24gdGdyZWwsIGNvbnN0IE9pZCBma3JlbGlkLCBjb25z dCBPaWQgcGtyZWxpZCwKIAkJCQkJICAgSGVhcFR1cGxlIGNvbnR1cGxlLCBMaXN0ICoqb3RoZXJy ZWxpZHMsCiAJCQkJCSAgIExPQ0tNT0RFIGxvY2ttb2RlLCBPaWQgUmVmZXJlbmNlZFBhcmVudERl bFRyaWdnZXIsCiAJCQkJCSAgIE9pZCBSZWZlcmVuY2VkUGFyZW50VXBkVHJpZ2dlciwKQEAgLTEx NzQ1LDkgKzExOTUwLDkgQEAgQVRFeGVjQWx0ZXJDaGlsZENvbnN0cihDb25zdHJhaW50ICpjbWRj b24sIFJlbGF0aW9uIGNvbnJlbCwgUmVsYXRpb24gdGdyZWwsCiAJCQkJCQkJICAgdHJ1ZSwgTlVM TCwgMSwgJnBrZXkpOwogCiAJd2hpbGUgKEhlYXBUdXBsZUlzVmFsaWQoY2hpbGR0dXAgPSBzeXN0 YWJsZV9nZXRuZXh0KHBzY2FuKSkpCi0JCUFURXhlY0FsdGVyQ29uc3RyUmVjdXJzZShjbWRjb24s IGNvbnJlbCwgdGdyZWwsIGZrcmVsaWQsIHBrcmVsaWQsCi0JCQkJCQkJCSBjaGlsZHR1cCwgb3Ro ZXJyZWxpZHMsIGxvY2ttb2RlLAotCQkJCQkJCQkgUmVmZXJlbmNlZFBhcmVudERlbFRyaWdnZXIs CisJCUFURXhlY0FsdGVyQ29uc3RyUmVjdXJzZSh3cXVldWUsIGNtZGNvbiwgY29ucmVsLCB0Z3Jl bCwKKwkJCQkJCQkJIGZrcmVsaWQsIHBrcmVsaWQsIGNoaWxkdHVwLCBvdGhlcnJlbGlkcywKKwkJ CQkJCQkJIGxvY2ttb2RlLCBSZWZlcmVuY2VkUGFyZW50RGVsVHJpZ2dlciwKIAkJCQkJCQkJIFJl ZmVyZW5jZWRQYXJlbnRVcGRUcmlnZ2VyLAogCQkJCQkJCQkgUmVmZXJlbmNpbmdQYXJlbnRJbnNU cmlnZ2VyLAogCQkJCQkJCQkgUmVmZXJlbmNpbmdQYXJlbnRVcGRUcmlnZ2VyKTsKQEAgLTExODIw LDI1ICsxMjAyNSwzMyBAQCBBVEV4ZWNWYWxpZGF0ZUNvbnN0cmFpbnQoTGlzdCAqKndxdWV1ZSwg UmVsYXRpb24gcmVsLCBjaGFyICpjb25zdHJOYW1lLAogCiAJCWlmIChjb24tPmNvbnR5cGUgPT0g Q09OU1RSQUlOVF9GT1JFSUdOKQogCQl7Ci0JCQlOZXdDb25zdHJhaW50ICpuZXdjb247Ci0JCQlD b25zdHJhaW50ICpma2NvbnN0cmFpbnQ7CisJCQkvKgorCQkJICogUXVldWUgdmFsaWRhdGlvbiBm b3IgcGhhc2UgMyBvbmx5IGlmIGNvbnN0cmFpbnQgaXMgZW5mb3JjZWQ7CisJCQkgKiBvdGhlcndp c2UsIGFkZGluZyBpdCB0byB0aGUgdmFsaWRhdGlvbiBxdWV1ZSB3b24ndCBiZSB2ZXJ5CisJCQkg KiBlZmZlY3RpdmUsIGFzIHRoZSB2ZXJpZmljYXRpb24gd2lsbCBiZSBza2lwcGVkLgorCQkJICov CisJCQlpZiAoY29uLT5jb25lbmZvcmNlZCkKKwkJCXsKKwkJCQlOZXdDb25zdHJhaW50ICpuZXdj b247CisJCQkJQ29uc3RyYWludCAqZmtjb25zdHJhaW50OwogCi0JCQkvKiBRdWV1ZSB2YWxpZGF0 aW9uIGZvciBwaGFzZSAzICovCi0JCQlma2NvbnN0cmFpbnQgPSBtYWtlTm9kZShDb25zdHJhaW50 KTsKLQkJCS8qIGZvciBub3cgdGhpcyBpcyBhbGwgd2UgbmVlZCAqLwotCQkJZmtjb25zdHJhaW50 LT5jb25uYW1lID0gY29uc3RyTmFtZTsKKwkJCQkvKiBRdWV1ZSB2YWxpZGF0aW9uIGZvciBwaGFz ZSAzICovCisJCQkJZmtjb25zdHJhaW50ID0gbWFrZU5vZGUoQ29uc3RyYWludCk7CisJCQkJLyog Zm9yIG5vdyB0aGlzIGlzIGFsbCB3ZSBuZWVkICovCisJCQkJZmtjb25zdHJhaW50LT5jb25uYW1l ID0gY29uc3RyTmFtZTsKIAotCQkJbmV3Y29uID0gKE5ld0NvbnN0cmFpbnQgKikgcGFsbG9jMChz aXplb2YoTmV3Q29uc3RyYWludCkpOwotCQkJbmV3Y29uLT5uYW1lID0gY29uc3RyTmFtZTsKLQkJ CW5ld2Nvbi0+Y29udHlwZSA9IENPTlNUUl9GT1JFSUdOOwotCQkJbmV3Y29uLT5yZWZyZWxpZCA9 IGNvbi0+Y29uZnJlbGlkOwotCQkJbmV3Y29uLT5yZWZpbmRpZCA9IGNvbi0+Y29uaW5kaWQ7Ci0J CQluZXdjb24tPmNvbmlkID0gY29uLT5vaWQ7Ci0JCQluZXdjb24tPnF1YWwgPSAoTm9kZSAqKSBm a2NvbnN0cmFpbnQ7CisJCQkJbmV3Y29uID0gKE5ld0NvbnN0cmFpbnQgKikgcGFsbG9jMChzaXpl b2YoTmV3Q29uc3RyYWludCkpOworCQkJCW5ld2Nvbi0+bmFtZSA9IGNvbnN0ck5hbWU7CisJCQkJ bmV3Y29uLT5jb250eXBlID0gQ09OU1RSX0ZPUkVJR047CisJCQkJbmV3Y29uLT5yZWZyZWxpZCA9 IGNvbi0+Y29uZnJlbGlkOworCQkJCW5ld2Nvbi0+cmVmaW5kaWQgPSBjb24tPmNvbmluZGlkOwor CQkJCW5ld2Nvbi0+Y29uaWQgPSBjb24tPm9pZDsKKwkJCQluZXdjb24tPnF1YWwgPSAoTm9kZSAq KSBma2NvbnN0cmFpbnQ7CiAKLQkJCS8qIEZpbmQgb3IgY3JlYXRlIHdvcmsgcXVldWUgZW50cnkg Zm9yIHRoaXMgdGFibGUgKi8KLQkJCXRhYiA9IEFUR2V0UXVldWVFbnRyeSh3cXVldWUsIHJlbCk7 Ci0JCQl0YWItPmNvbnN0cmFpbnRzID0gbGFwcGVuZCh0YWItPmNvbnN0cmFpbnRzLCBuZXdjb24p OworCQkJCS8qIEZpbmQgb3IgY3JlYXRlIHdvcmsgcXVldWUgZW50cnkgZm9yIHRoaXMgdGFibGUg Ki8KKwkJCQl0YWIgPSBBVEdldFF1ZXVlRW50cnkod3F1ZXVlLCByZWwpOworCQkJCXRhYi0+Y29u c3RyYWludHMgPSBsYXBwZW5kKHRhYi0+Y29uc3RyYWludHMsIG5ld2Nvbik7CisJCQl9CiAKIAkJ CS8qCiAJCQkgKiBXZSBkaXNhbGxvdyBjcmVhdGluZyBpbnZhbGlkIGZvcmVpZ24ga2V5cyB0byBv ciBmcm9tCkBAIC0xMTg5Nyw5ICsxMjExMCw5IEBAIEFURXhlY1ZhbGlkYXRlQ29uc3RyYWludChM aXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiByZWwsIGNoYXIgKmNvbnN0ck5hbWUsCiAJCQl9CiAKIAkJ CS8qCi0JCQkgKiBRdWV1ZSB2YWxpZGF0aW9uIGZvciBwaGFzZSAzIG9ubHkgaWYgY29uc3RyYWlu dCBpcyBlbmZvcmNlZDsKLQkJCSAqIG90aGVyd2lzZSwgYWRkaW5nIGl0IHRvIHRoZSB2YWxpZGF0 aW9uIHF1ZXVlIHdvbid0IGJlIHZlcnkKLQkJCSAqIGVmZmVjdGl2ZSwgYXMgdGhlIHZlcmlmaWNh dGlvbiB3aWxsIGJlIHNraXBwZWQuCisJCQkgKiBRdWV1ZSB2YWxpZGF0aW9uIGZvciBwaGFzZSAz IG9ubHkgaWYgdGhlIGNvbnN0cmFpbnQgaXMKKwkJCSAqIGVuZm9yY2VkLCBmb3IgdGhlIHNhbWUg cmVhc29uIG91dGxpbmVkIGZvciB0aGUgZm9yZWlnbiBrZXkKKwkJCSAqIGNvbnN0cmFpbnQuCiAJ CQkgKi8KIAkJCWlmIChjb24tPmNvbmVuZm9yY2VkKQogCQkJewpAQCAtMTE5MzAsNyArMTIxNDMs MTAgQEAgQVRFeGVjVmFsaWRhdGVDb25zdHJhaW50KExpc3QgKip3cXVldWUsIFJlbGF0aW9uIHJl bCwgY2hhciAqY29uc3RyTmFtZSwKIAkJLyoKIAkJICogTm93IHVwZGF0ZSB0aGUgY2F0YWxvZyBy ZWdhcmRsZXNzIG9mIGVuZm9yY2VtZW50OyB0aGUgdmFsaWRhdGVkCiAJCSAqIGZsYWcgd2lsbCBu b3QgdGFrZSBlZmZlY3QgdW50aWwgdGhlIGNvbnN0cmFpbnQgaXMgbWFya2VkIGFzCi0JCSAqIGVu Zm9yY2VkLgorCQkgKiBlbmZvcmNlZC4gV2hlbiBjaGFuZ2luZyBhIG5vbi1lbmZvcmNlZCBjb25z dHJhaW50IHRvIGVuZm9yY2VkLCB0aGUKKwkJICogdmFsaWRhdGlvbiB3aWxsIG9ubHkgb2NjdXIg aWYgdGhlIHZhbGlkYXRpb24gZmxhZyBpcyB0cnVlLgorCQkgKiBPdGhlcndpc2UsIHRoZSB1c2Vy IHdpbGwgbmVlZCB0byBleHBsaWNpdGx5IHBlcmZvcm0gY29uc3RyYWludAorCQkgKiB2YWxpZGF0 aW9uLgogCQkgKi8KIAkJY29weVR1cGxlID0gaGVhcF9jb3B5dHVwbGUodHVwbGUpOwogCQljb3B5 X2NvbiA9IChGb3JtX3BnX2NvbnN0cmFpbnQpIEdFVFNUUlVDVChjb3B5VHVwbGUpOwpAQCAtMTk0 NDQsNDYgKzE5NjYwLDUyIEBAIERldGFjaFBhcnRpdGlvbkZpbmFsaXplKFJlbGF0aW9uIHJlbCwg UmVsYXRpb24gcGFydFJlbCwgYm9vbCBjb25jdXJyZW50LAogCiAJCS8qCiAJCSAqIEFsc28sIGxv b2sgdXAgdGhlIHBhcnRpdGlvbidzICJjaGVjayIgdHJpZ2dlcnMgY29ycmVzcG9uZGluZyB0byB0 aGUKLQkJICogY29uc3RyYWludCBiZWluZyBkZXRhY2hlZCBhbmQgZGV0YWNoIHRoZW0gZnJvbSB0 aGUgcGFyZW50IHRyaWdnZXJzLgorCQkgKiBlbmZvcmNlZCBjb25zdHJhaW50IGJlaW5nIGRldGFj aGVkIGFuZCBkZXRhY2ggdGhlbSBmcm9tIHRoZSBwYXJlbnQKKwkJICogdHJpZ2dlcnMuIE5vbi1l bmZvcmNlZCBjb25zdHJhaW50cyBkbyBub3QgaGF2ZSB0aGVzZSB0cmlnZ2VyczsKKwkJICogdGhl cmVmb3JlLCB0aGlzIHN0ZXAgaXMgbm90IG5lZWRlZC4KIAkJICovCi0JCUdldEZvcmVpZ25LZXlD aGVja1RyaWdnZXJzKHRyaWdyZWwsCi0JCQkJCQkJCSAgIGZrLT5jb25vaWQsIGZrLT5jb25mcmVs aWQsIGZrLT5jb25yZWxpZCwKLQkJCQkJCQkJICAgJmluc2VydFRyaWdnZXJPaWQsICZ1cGRhdGVU cmlnZ2VyT2lkKTsKLQkJQXNzZXJ0KE9pZElzVmFsaWQoaW5zZXJ0VHJpZ2dlck9pZCkpOwotCQlU cmlnZ2VyU2V0UGFyZW50VHJpZ2dlcih0cmlncmVsLCBpbnNlcnRUcmlnZ2VyT2lkLCBJbnZhbGlk T2lkLAotCQkJCQkJCQlSZWxhdGlvbkdldFJlbGlkKHBhcnRSZWwpKTsKLQkJQXNzZXJ0KE9pZElz VmFsaWQodXBkYXRlVHJpZ2dlck9pZCkpOwotCQlUcmlnZ2VyU2V0UGFyZW50VHJpZ2dlcih0cmln cmVsLCB1cGRhdGVUcmlnZ2VyT2lkLCBJbnZhbGlkT2lkLAotCQkJCQkJCQlSZWxhdGlvbkdldFJl bGlkKHBhcnRSZWwpKTsKKwkJaWYgKGZrLT5jb25lbmZvcmNlZCkKKwkJeworCQkJR2V0Rm9yZWln bktleUNoZWNrVHJpZ2dlcnModHJpZ3JlbCwKKwkJCQkJCQkJCSAgIGZrLT5jb25vaWQsIGZrLT5j b25mcmVsaWQsIGZrLT5jb25yZWxpZCwKKwkJCQkJCQkJCSAgICZpbnNlcnRUcmlnZ2VyT2lkLCAm dXBkYXRlVHJpZ2dlck9pZCk7CisJCQlBc3NlcnQoT2lkSXNWYWxpZChpbnNlcnRUcmlnZ2VyT2lk KSk7CisJCQlUcmlnZ2VyU2V0UGFyZW50VHJpZ2dlcih0cmlncmVsLCBpbnNlcnRUcmlnZ2VyT2lk LCBJbnZhbGlkT2lkLAorCQkJCQkJCQkJUmVsYXRpb25HZXRSZWxpZChwYXJ0UmVsKSk7CisJCQlB c3NlcnQoT2lkSXNWYWxpZCh1cGRhdGVUcmlnZ2VyT2lkKSk7CisJCQlUcmlnZ2VyU2V0UGFyZW50 VHJpZ2dlcih0cmlncmVsLCB1cGRhdGVUcmlnZ2VyT2lkLCBJbnZhbGlkT2lkLAorCQkJCQkJCQkJ UmVsYXRpb25HZXRSZWxpZChwYXJ0UmVsKSk7CiAKLQkJLyoKLQkJICogTWFrZSB0aGUgYWN0aW9u IHRyaWdnZXJzIG9uIHRoZSByZWZlcmVuY2VkIHJlbGF0aW9uLiAgV2hlbiB0aGlzIHdhcwotCQkg KiBhIHBhcnRpdGlvbiB0aGUgYWN0aW9uIHRyaWdnZXJzIHBvaW50ZWQgdG8gdGhlIHBhcmVudCBy ZWwgKHRoZXkKLQkJICogc3RpbGwgZG8pLCBidXQgbm93IHdlIG5lZWQgc2VwYXJhdGUgb25lcyBv ZiBvdXIgb3duLgotCQkgKi8KLQkJZmtjb25zdHJhaW50ID0gbWFrZU5vZGUoQ29uc3RyYWludCk7 Ci0JCWZrY29uc3RyYWludC0+Y29udHlwZSA9IENPTlNUUkFJTlRfRk9SRUlHTjsKLQkJZmtjb25z dHJhaW50LT5jb25uYW1lID0gcHN0cmR1cChOYW1lU3RyKGNvbmZvcm0tPmNvbm5hbWUpKTsKLQkJ Zmtjb25zdHJhaW50LT5kZWZlcnJhYmxlID0gY29uZm9ybS0+Y29uZGVmZXJyYWJsZTsKLQkJZmtj b25zdHJhaW50LT5pbml0ZGVmZXJyZWQgPSBjb25mb3JtLT5jb25kZWZlcnJlZDsKLQkJZmtjb25z dHJhaW50LT5sb2NhdGlvbiA9IC0xOwotCQlma2NvbnN0cmFpbnQtPnBrdGFibGUgPSBOVUxMOwot CQlma2NvbnN0cmFpbnQtPmZrX2F0dHJzID0gTklMOwotCQlma2NvbnN0cmFpbnQtPnBrX2F0dHJz ID0gTklMOwotCQlma2NvbnN0cmFpbnQtPmZrX21hdGNodHlwZSA9IGNvbmZvcm0tPmNvbmZtYXRj aHR5cGU7Ci0JCWZrY29uc3RyYWludC0+ZmtfdXBkX2FjdGlvbiA9IGNvbmZvcm0tPmNvbmZ1cGR0 eXBlOwotCQlma2NvbnN0cmFpbnQtPmZrX2RlbF9hY3Rpb24gPSBjb25mb3JtLT5jb25mZGVsdHlw ZTsKLQkJZmtjb25zdHJhaW50LT5ma19kZWxfc2V0X2NvbHMgPSBOSUw7Ci0JCWZrY29uc3RyYWlu dC0+b2xkX2NvbnBmZXFvcCA9IE5JTDsKLQkJZmtjb25zdHJhaW50LT5vbGRfcGt0YWJsZV9vaWQg PSBJbnZhbGlkT2lkOwotCQlma2NvbnN0cmFpbnQtPnNraXBfdmFsaWRhdGlvbiA9IGZhbHNlOwot CQlma2NvbnN0cmFpbnQtPmluaXRpYWxseV92YWxpZCA9IHRydWU7CisJCQkvKgorCQkJICogTWFr ZSB0aGUgYWN0aW9uIHRyaWdnZXJzIG9uIHRoZSByZWZlcmVuY2VkIHJlbGF0aW9uLiAgV2hlbiB0 aGlzCisJCQkgKiB3YXMgYSBwYXJ0aXRpb24gdGhlIGFjdGlvbiB0cmlnZ2VycyBwb2ludGVkIHRv IHRoZSBwYXJlbnQgcmVsCisJCQkgKiAodGhleSBzdGlsbCBkbyksIGJ1dCBub3cgd2UgbmVlZCBz ZXBhcmF0ZSBvbmVzIG9mIG91ciBvd24uCisJCQkgKi8KKwkJCWZrY29uc3RyYWludCA9IG1ha2VO b2RlKENvbnN0cmFpbnQpOworCQkJZmtjb25zdHJhaW50LT5jb250eXBlID0gQ09OU1RSQUlOVF9G T1JFSUdOOworCQkJZmtjb25zdHJhaW50LT5jb25uYW1lID0gcHN0cmR1cChOYW1lU3RyKGNvbmZv cm0tPmNvbm5hbWUpKTsKKwkJCWZrY29uc3RyYWludC0+ZGVmZXJyYWJsZSA9IGNvbmZvcm0tPmNv bmRlZmVycmFibGU7CisJCQlma2NvbnN0cmFpbnQtPmluaXRkZWZlcnJlZCA9IGNvbmZvcm0tPmNv bmRlZmVycmVkOworCQkJZmtjb25zdHJhaW50LT5pc19lbmZvcmNlZCA9IGNvbmZvcm0tPmNvbmVu Zm9yY2VkOworCQkJZmtjb25zdHJhaW50LT5sb2NhdGlvbiA9IC0xOworCQkJZmtjb25zdHJhaW50 LT5wa3RhYmxlID0gTlVMTDsKKwkJCWZrY29uc3RyYWludC0+ZmtfYXR0cnMgPSBOSUw7CisJCQlm a2NvbnN0cmFpbnQtPnBrX2F0dHJzID0gTklMOworCQkJZmtjb25zdHJhaW50LT5ma19tYXRjaHR5 cGUgPSBjb25mb3JtLT5jb25mbWF0Y2h0eXBlOworCQkJZmtjb25zdHJhaW50LT5ma191cGRfYWN0 aW9uID0gY29uZm9ybS0+Y29uZnVwZHR5cGU7CisJCQlma2NvbnN0cmFpbnQtPmZrX2RlbF9hY3Rp b24gPSBjb25mb3JtLT5jb25mZGVsdHlwZTsKKwkJCWZrY29uc3RyYWludC0+ZmtfZGVsX3NldF9j b2xzID0gTklMOworCQkJZmtjb25zdHJhaW50LT5vbGRfY29ucGZlcW9wID0gTklMOworCQkJZmtj b25zdHJhaW50LT5vbGRfcGt0YWJsZV9vaWQgPSBJbnZhbGlkT2lkOworCQkJZmtjb25zdHJhaW50 LT5za2lwX3ZhbGlkYXRpb24gPSBmYWxzZTsKKwkJCWZrY29uc3RyYWludC0+aW5pdGlhbGx5X3Zh bGlkID0gdHJ1ZTsKIAotCQljcmVhdGVGb3JlaWduS2V5QWN0aW9uVHJpZ2dlcnMocGFydFJlbCwg Y29uZm9ybS0+Y29uZnJlbGlkLAotCQkJCQkJCQkJICAgZmtjb25zdHJhaW50LCBmay0+Y29ub2lk LAotCQkJCQkJCQkJICAgY29uZm9ybS0+Y29uaW5kaWQsCi0JCQkJCQkJCQkgICBJbnZhbGlkT2lk LCBJbnZhbGlkT2lkLAotCQkJCQkJCQkJICAgTlVMTCwgTlVMTCk7CisJCQljcmVhdGVGb3JlaWdu S2V5QWN0aW9uVHJpZ2dlcnMocGFydFJlbCwgY29uZm9ybS0+Y29uZnJlbGlkLAorCQkJCQkJCQkJ CSAgIGZrY29uc3RyYWludCwgZmstPmNvbm9pZCwKKwkJCQkJCQkJCQkgICBjb25mb3JtLT5jb25p bmRpZCwKKwkJCQkJCQkJCQkgICBJbnZhbGlkT2lkLCBJbnZhbGlkT2lkLAorCQkJCQkJCQkJCSAg IE5VTEwsIE5VTEwpOworCQl9CiAKIAkJUmVsZWFzZVN5c0NhY2hlKGNvbnR1cCk7CiAJfQpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSBiL3NyYy9iYWNrZW5kL3BhcnNlci9n cmFtLnkKaW5kZXggNDM3YTBiOWYyZjAuLjZhNjhlMzJkNjIzIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9wYXJzZXIvZ3JhbS55CisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKQEAgLTQw NDAsNiArNDA0MCw3IEBAIENvbENvbnN0cmFpbnRFbGVtOgogCQkJCQluLT5ma19kZWxfc2V0X2Nv bHMgPSAoJDUpLT5kZWxldGVBY3Rpb24tPmNvbHM7CiAJCQkJCW4tPnNraXBfdmFsaWRhdGlvbiA9 IGZhbHNlOwogCQkJCQluLT5pbml0aWFsbHlfdmFsaWQgPSB0cnVlOworCQkJCQluLT5pc19lbmZv cmNlZCA9IHRydWU7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKIAkJCQl9CiAJCTsKQEAgLTQzMDEs NyArNDMwMiw3IEBAIENvbnN0cmFpbnRFbGVtOgogCQkJCQlwcm9jZXNzQ0FTYml0cygkMTIsIEAx MiwgIkZPUkVJR04gS0VZIiwKIAkJCQkJCQkJICAgJm4tPmRlZmVycmFibGUsICZuLT5pbml0ZGVm ZXJyZWQsCiAJCQkJCQkJCSAgICZuLT5za2lwX3ZhbGlkYXRpb24sIE5VTEwsCi0JCQkJCQkJCSAg IE5VTEwsCisJCQkJCQkJCSAgICZuLT5pc19lbmZvcmNlZCwKIAkJCQkJCQkJICAgeXlzY2FubmVy KTsKIAkJCQkJbi0+aW5pdGlhbGx5X3ZhbGlkID0gIW4tPnNraXBfdmFsaWRhdGlvbjsKIAkJCQkJ JCQgPSAoTm9kZSAqKSBuOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0 aWxjbWQuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMKaW5kZXggMDI0Y2My NTZiN2QuLjhkYWQ2YmZhY2I5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vf dXRpbGNtZC5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMKQEAgLTM4 MTgsNyArMzgxOCw4IEBAIHRyYW5zZm9ybUNvbnN0cmFpbnRBdHRycyhDcmVhdGVTdG10Q29udGV4 dCAqY3h0LCBMaXN0ICpjb25zdHJhaW50TGlzdCkKIAogCQkJY2FzZSBDT05TVFJfQVRUUl9FTkZP UkNFRDoKIAkJCQlpZiAobGFzdHByaW1hcnljb24gJiYKLQkJCQkJbGFzdHByaW1hcnljb24tPmNv bnR5cGUgIT0gQ09OU1RSX0NIRUNLKQorCQkJCQlsYXN0cHJpbWFyeWNvbi0+Y29udHlwZSAhPSBD T05TVFJfQ0hFQ0sgJiYKKwkJCQkJbGFzdHByaW1hcnljb24tPmNvbnR5cGUgIT0gQ09OU1RSX0ZP UkVJR04pCiAJCQkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5U QVhfRVJST1IpLAogCQkJCQkJCSBlcnJtc2coIm1pc3BsYWNlZCBFTkZPUkNFRCBjbGF1c2UiKSwK QEAgLTM4MzQsNyArMzgzNSw4IEBAIHRyYW5zZm9ybUNvbnN0cmFpbnRBdHRycyhDcmVhdGVTdG10 Q29udGV4dCAqY3h0LCBMaXN0ICpjb25zdHJhaW50TGlzdCkKIAogCQkJY2FzZSBDT05TVFJfQVRU Ul9OT1RfRU5GT1JDRUQ6CiAJCQkJaWYgKGxhc3RwcmltYXJ5Y29uICYmCi0JCQkJCWxhc3Rwcmlt YXJ5Y29uLT5jb250eXBlICE9IENPTlNUUl9DSEVDSykKKwkJCQkJbGFzdHByaW1hcnljb24tPmNv bnR5cGUgIT0gQ09OU1RSX0NIRUNLICYmCisJCQkJCWxhc3RwcmltYXJ5Y29uLT5jb250eXBlICE9 IENPTlNUUl9GT1JFSUdOKQogCQkJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkJCShlcnJjb2RlKEVS UkNPREVfU1lOVEFYX0VSUk9SKSwKIAkJCQkJCQkgZXJybXNnKCJtaXNwbGFjZWQgTk9UIEVORk9S Q0VEIGNsYXVzZSIpLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2Fj aGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMKaW5kZXggNzExYTUyOTA3 MjkuLjAyOTY3NmUwMjI3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxj YWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMKQEAgLTQ3Mzgs NiArNDczOCw3IEBAIFJlbGF0aW9uR2V0RktleUxpc3QoUmVsYXRpb24gcmVsYXRpb24pCiAJCWlu Zm8tPmNvbm9pZCA9IGNvbnN0cmFpbnQtPm9pZDsKIAkJaW5mby0+Y29ucmVsaWQgPSBjb25zdHJh aW50LT5jb25yZWxpZDsKIAkJaW5mby0+Y29uZnJlbGlkID0gY29uc3RyYWludC0+Y29uZnJlbGlk OworCQlpbmZvLT5jb25lbmZvcmNlZCA9IGNvbnN0cmFpbnQtPmNvbmVuZm9yY2VkOwogCiAJCURl Y29uc3RydWN0RmtDb25zdHJhaW50Um93KGh0dXAsICZpbmZvLT5ua2V5cywKIAkJCQkJCQkJICAg aW5mby0+Y29ua2V5LApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmggYi9zcmMv aW5jbHVkZS91dGlscy9yZWwuaAppbmRleCA4NzAwMjA0OTUzOC4uMmRiMDExZGRmYjcgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3JlbC5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3Jl bC5oCkBAIC0yODQsNiArMjg0LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgRm9yZWlnbktleUNhY2hlSW5m bwogCS8qIG51bWJlciBvZiBjb2x1bW5zIGluIHRoZSBmb3JlaWduIGtleSAqLwogCWludAkJCW5r ZXlzOwogCisJLyogSXMgZW5mb3JjZWQgPyAqLworCWJvb2wJCWNvbmVuZm9yY2VkOworCiAJLyoK IAkgKiB0aGVzZSBhcnJheXMgZWFjaCBoYXZlIG5rZXlzIHZhbGlkIGVudHJpZXM6CiAJICovCmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2ZvcmVpZ25fa2V5Lm91dCBiL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZm9yZWlnbl9rZXkub3V0CmluZGV4IDhjMDRhMjRiMzdk Li4zNmQzZmRkZGFhNSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9mb3Jl aWduX2tleS5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9mb3JlaWduX2tleS5v dXQKQEAgLTEsMTIgKzEsNDMgQEAKIC0tCiAtLSBGT1JFSUdOIEtFWQogLS0KLS0tIE1BVENIIEZV TEwKKy0tIE5PVCBFTkZPUkNFRAogLS0KIC0tIEZpcnN0IHRlc3QsIGNoZWNrIGFuZCBjYXNjYWRl CiAtLQogQ1JFQVRFIFRBQkxFIFBLVEFCTEUgKCBwdGVzdDEgaW50IFBSSU1BUlkgS0VZLCBwdGVz dDIgdGV4dCApOwotQ1JFQVRFIFRBQkxFIEZLVEFCTEUgKCBmdGVzdDEgaW50IFJFRkVSRU5DRVMg UEtUQUJMRSBNQVRDSCBGVUxMIE9OIERFTEVURSBDQVNDQURFIE9OIFVQREFURSBDQVNDQURFLCBm dGVzdDIgaW50ICk7CitDUkVBVEUgVEFCTEUgRktUQUJMRSAoIGZ0ZXN0MSBpbnQgUkVGRVJFTkNF UyBQS1RBQkxFIE1BVENIIEZVTEwgT04gREVMRVRFIENBU0NBREUgT04gVVBEQVRFIENBU0NBREUg Tk9UIEVORk9SQ0VELAorCQkJCQkgICBmdGVzdDIgaW50ICk7CistLSBJbnNlcnRpbmcgaW50byB0 aGUgZm9yZWlnbiBrZXkgdGFibGUgd2lsbCBub3QgcmVzdWx0IGluIGFuIGVycm9yLCBldmVuIGlm CistLSB0aGVyZSBpcyBubyBtYXRjaGluZyBrZXkgaW4gdGhlIHJlZmVyZW5jZWQgdGFibGUuCitJ TlNFUlQgSU5UTyBGS1RBQkxFIFZBTFVFUyAoMSwgMik7CitJTlNFUlQgSU5UTyBGS1RBQkxFIFZB TFVFUyAoMiwgMyk7CistLSBDaGVjayBGS1RBQkxFCitTRUxFQ1QgKiBGUk9NIEZLVEFCTEU7Cisg ZnRlc3QxIHwgZnRlc3QyIAorLS0tLS0tLS0rLS0tLS0tLS0KKyAgICAgIDEgfCAgICAgIDIKKyAg ICAgIDIgfCAgICAgIDMKKygyIHJvd3MpCisKKy0tIENoYW5naW5nIGl0IGJhY2sgdG8gRU5GT1JD RUQgd2lsbCByZXN1bHQgaW4gYW4gZXJyb3IgZHVlIHRvIHZhbGlkYXRpb24gb2YKKy0tIGV4aXN0 aW5nIHJvd3MuCitBTFRFUiBUQUJMRSBGS1RBQkxFIEFMVEVSIENPTlNUUkFJTlQgZmt0YWJsZV9m dGVzdDFfZmtleSBFTkZPUkNFRDsKK0VSUk9SOiAgaW5zZXJ0IG9yIHVwZGF0ZSBvbiB0YWJsZSAi Zmt0YWJsZSIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAiZmt0YWJsZV9mdGVzdDFf ZmtleSIKK0RFVEFJTDogIEtleSAoZnRlc3QxKT0oMSkgaXMgbm90IHByZXNlbnQgaW4gdGFibGUg InBrdGFibGUiLgorLS0gUmVtb3ZlIGFueSBleGlzdGluZyByb3dzIHRoYXQgdmlvbGF0ZSB0aGUg Y29uc3RyYWludCwgdGhlbiBhdHRlbXB0IHRvIGNoYW5nZQorLS0gaXQuCitUUlVOQ0FURSBGS1RB QkxFOworQUxURVIgVEFCTEUgRktUQUJMRSBBTFRFUiBDT05TVFJBSU5UIGZrdGFibGVfZnRlc3Qx X2ZrZXkgRU5GT1JDRUQ7CistLSBBbnkgZnVydGhlciBpbnNlcnRzIHdpbGwgZmFpbCBkdWUgdG8g dGhlIGVuZm9yY2VtZW50LgorSU5TRVJUIElOVE8gRktUQUJMRSBWQUxVRVMgKDMsIDQpOworRVJS T1I6ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxlICJma3RhYmxlIiB2aW9sYXRlcyBmb3JlaWdu IGtleSBjb25zdHJhaW50ICJma3RhYmxlX2Z0ZXN0MV9ma2V5IgorREVUQUlMOiAgS2V5IChmdGVz dDEpPSgzKSBpcyBub3QgcHJlc2VudCBpbiB0YWJsZSAicGt0YWJsZSIuCistLQorLS0gTUFUQ0gg RlVMTAorLS0KKy0tIEZpcnN0IHRlc3QsIGNoZWNrIGFuZCBjYXNjYWRlCistLQogLS0gSW5zZXJ0 IHRlc3QgZGF0YSBpbnRvIFBLVEFCTEUKIElOU0VSVCBJTlRPIFBLVEFCTEUgVkFMVUVTICgxLCAn VGVzdDEnKTsKIElOU0VSVCBJTlRPIFBLVEFCTEUgVkFMVUVTICgyLCAnVGVzdDInKTsKQEAgLTM1 MSw2ICszODIsOCBAQCBJTlNFUlQgSU5UTyBGS1RBQkxFIFZBTFVFUyAoMSwgTlVMTCk7CiBBTFRF UiBUQUJMRSBGS1RBQkxFIEFERCBGT1JFSUdOIEtFWShmdGVzdDEsIGZ0ZXN0MikgUkVGRVJFTkNF UyBQS1RBQkxFIE1BVENIIEZVTEw7CiBFUlJPUjogIGluc2VydCBvciB1cGRhdGUgb24gdGFibGUg ImZrdGFibGUiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgImZrdGFibGVfZnRlc3Qx X2Z0ZXN0Ml9ma2V5IgogREVUQUlMOiAgTUFUQ0ggRlVMTCBkb2VzIG5vdCBhbGxvdyBtaXhpbmcg b2YgbnVsbCBhbmQgbm9ubnVsbCBrZXkgdmFsdWVzLgorLS0gTk9UIEVORk9SQ0VEIHdpbGwgYnlw YXNzIHRoZSBpbml0aWFsIGNoZWNrLgorQUxURVIgVEFCTEUgRktUQUJMRSBBREQgRk9SRUlHTiBL RVkoZnRlc3QxLCBmdGVzdDIpIFJFRkVSRU5DRVMgUEtUQUJMRSBNQVRDSCBGVUxMIE5PVCBFTkZP UkNFRDsKIERST1AgVEFCTEUgRktUQUJMRTsKIERST1AgVEFCTEUgUEtUQUJMRTsKIC0tIE1BVENI IFNJTVBMRQpAQCAtMTI3NiwxMyArMTMwOSwyNCBAQCBJTlNFUlQgSU5UTyBma3RhYmxlIFZBTFVF UyAoMCwgMjApOwogRVJST1I6ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxlICJma3RhYmxlIiB2 aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJma3RhYmxlX2ZrX2ZrZXkiCiBERVRBSUw6 ICBLZXkgKGZrKT0oMjApIGlzIG5vdCBwcmVzZW50IGluIHRhYmxlICJwa3RhYmxlIi4KIENPTU1J VDsKK0FMVEVSIFRBQkxFIGZrdGFibGUgQUxURVIgQ09OU1RSQUlOVCBma3RhYmxlX2ZrX2ZrZXkg Tk9UIEVORk9SQ0VEOworQkVHSU47CistLSBkb2Vzbid0IG1hdGNoIEZLLCBubyBlcnJvci4KK1VQ REFURSBwa3RhYmxlIFNFVCBpZCA9IDEwIFdIRVJFIGlkID0gNTsKKy0tIGRvZXNuJ3QgbWF0Y2gg UEssIG5vIGVycm9yLgorSU5TRVJUIElOVE8gZmt0YWJsZSBWQUxVRVMgKDAsIDIwKTsKK1JPTExC QUNLOwogLS0gdHJ5IGFkZGl0aW9uYWwgc3ludGF4Ci1BTFRFUiBUQUJMRSBma3RhYmxlIEFMVEVS IENPTlNUUkFJTlQgZmt0YWJsZV9ma19ma2V5IE5PVCBERUZFUlJBQkxFOworQUxURVIgVEFCTEUg Zmt0YWJsZSBBTFRFUiBDT05TVFJBSU5UIGZrdGFibGVfZmtfZmtleSBOT1QgREVGRVJSQUJMRSBF TkZPUkNFRDsKIC0tIGlsbGVnYWwgb3B0aW9uCiBBTFRFUiBUQUJMRSBma3RhYmxlIEFMVEVSIENP TlNUUkFJTlQgZmt0YWJsZV9ma19ma2V5IE5PVCBERUZFUlJBQkxFIElOSVRJQUxMWSBERUZFUlJF RDsKIEVSUk9SOiAgY29uc3RyYWludCBkZWNsYXJlZCBJTklUSUFMTFkgREVGRVJSRUQgbXVzdCBi ZSBERUZFUlJBQkxFCiBMSU5FIDE6IC4uLmUgQUxURVIgQ09OU1RSQUlOVCBma3RhYmxlX2ZrX2Zr ZXkgTk9UIERFRkVSUkFCTEUgSU5JVElBTExZIC4uLgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK0FMVEVSIFRBQkxFIGZrdGFi bGUgQUxURVIgQ09OU1RSQUlOVCBma3RhYmxlX2ZrX2ZrZXkgRU5GT1JDRUQgTk9UIEVORk9SQ0VE OworRVJST1I6ICBjb25mbGljdGluZyBjb25zdHJhaW50IHByb3BlcnRpZXMKK0xJTkUgMTogLi4u Zmt0YWJsZSBBTFRFUiBDT05TVFJBSU5UIGZrdGFibGVfZmtfZmtleSBFTkZPUkNFRCBOT1QgRU5G T1JDLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXgogLS0gdGVzdCBvcmRlciBvZiBmaXJpbmcgb2YgRksgdHJpZ2dlcnMgd2hl biBzZXZlcmFsIFJJLWluZHVjZWQgY2hhbmdlcyBuZWVkIHRvCiAtLSBiZSBtYWRlIHRvIHRoZSBz YW1lIHJvdy4gIFRoaXMgd2FzIGJyb2tlbiBieSBzdWJ0cmFuc2FjdGlvbi1yZWxhdGVkCiAtLSBj aGFuZ2VzIGluIDguMC4KQEAgLTE1ODAsNyArMTYyNCw4IEBAIEFMVEVSIFRBQkxFIGZrX3BhcnRp dGlvbmVkX2ZrIERST1AgQ09MVU1OIGZkcm9wMTsKIENSRUFURSBUQUJMRSBma19wYXJ0aXRpb25l ZF9ma18xIChmZHJvcDEgaW50LCBmZHJvcDIgaW50LCBhIGludCwgZmRyb3AzIGludCwgYiBpbnQp OwogQUxURVIgVEFCTEUgZmtfcGFydGl0aW9uZWRfZmtfMSBEUk9QIENPTFVNTiBmZHJvcDEsIERS T1AgQ09MVU1OIGZkcm9wMiwgRFJPUCBDT0xVTU4gZmRyb3AzOwogQUxURVIgVEFCTEUgZmtfcGFy dGl0aW9uZWRfZmsgQVRUQUNIIFBBUlRJVElPTiBma19wYXJ0aXRpb25lZF9ma18xIEZPUiBWQUxV RVMgRlJPTSAoMCwwKSBUTyAoMTAwMCwxMDAwKTsKLUFMVEVSIFRBQkxFIGZrX3BhcnRpdGlvbmVk X2ZrIEFERCBGT1JFSUdOIEtFWSAoYSwgYikgUkVGRVJFTkNFUyBma19ub3RwYXJ0aXRpb25lZF9w azsKK0FMVEVSIFRBQkxFIGZrX3BhcnRpdGlvbmVkX2ZrIEFERCBGT1JFSUdOIEtFWSAoYSwgYikg UkVGRVJFTkNFUyBma19ub3RwYXJ0aXRpb25lZF9wayBOT1QgRU5GT1JDRUQ7CitBTFRFUiBUQUJM RSBma19wYXJ0aXRpb25lZF9mayBBTFRFUiBDT05TVFJBSU5UIGZrX3BhcnRpdGlvbmVkX2ZrX2Ff Yl9ma2V5IEVORk9SQ0VEOwogQ1JFQVRFIFRBQkxFIGZrX3BhcnRpdGlvbmVkX2ZrXzIgKGIgaW50 LCBmZHJvcDEgaW50LCBmZHJvcDIgaW50LCBhIGludCk7CiBBTFRFUiBUQUJMRSBma19wYXJ0aXRp b25lZF9ma18yIERST1AgQ09MVU1OIGZkcm9wMSwgRFJPUCBDT0xVTU4gZmRyb3AyOwogQUxURVIg VEFCTEUgZmtfcGFydGl0aW9uZWRfZmsgQVRUQUNIIFBBUlRJVElPTiBma19wYXJ0aXRpb25lZF9m a18yIEZPUiBWQUxVRVMgRlJPTSAoMTAwMCwxMDAwKSBUTyAoMjAwMCwyMDAwKTsKQEAgLTE2NjUs NiArMTcxMCwzNyBAQCBJbmRleGVzOgogUmVmZXJlbmNlZCBieToKICAgICBUQUJMRSAiZmtfcGFy dGl0aW9uZWRfZmsiIENPTlNUUkFJTlQgImZrX3BhcnRpdGlvbmVkX2ZrX2FfYl9ma2V5IiBGT1JF SUdOIEtFWSAoYSwgYikgUkVGRVJFTkNFUyBma19ub3RwYXJ0aXRpb25lZF9wayhhLCBiKQogCist LSBDaGVjayB0aGUgZXhzdGluZyBGSyB0cmlnZ2VyCitDUkVBVEUgVEVNUCBUQUJMRSB0bXBfdHJn X2luZm8gQVMgU0VMRUNUIHRndHlwZSwgdGdyZWxpZDo6cmVnY2xhc3MsIHRnY29uc3RyYWludAor RlJPTSBwZ190cmlnZ2VyCitXSEVSRSB0Z3JlbGlkIElOIChTRUxFQ1QgcmVsaWQgRlJPTSBwZ19w YXJ0aXRpb25fdHJlZSgnZmtfcGFydGl0aW9uZWRfZmsnOjpyZWdjbGFzcykKKwkJCQkJVU5JT04g QUxMIFNFTEVDVCAnZmtfbm90cGFydGl0aW9uZWRfcGsnOjpyZWdjbGFzcyk7CitTRUxFQ1QgY291 bnQoMSkgRlJPTSB0bXBfdHJnX2luZm87CisgY291bnQgCistLS0tLS0tCisgICAgMTQKKygxIHJv dykKKworQUxURVIgVEFCTEUgZmtfcGFydGl0aW9uZWRfZmsgQUxURVIgQ09OU1RSQUlOVCBma19w YXJ0aXRpb25lZF9ma19hX2JfZmtleSBOT1QgRU5GT1JDRUQ7CistLSBObyB0cmlnZ2VycworU0VM RUNUIGNvdW50KDEpIEZST00gcGdfdHJpZ2dlcgorV0hFUkUgdGdyZWxpZCBJTiAoU0VMRUNUIHJl bGlkIEZST00gcGdfcGFydGl0aW9uX3RyZWUoJ2ZrX3BhcnRpdGlvbmVkX2ZrJzo6cmVnY2xhc3Mp CisJCQkJCVVOSU9OIEFMTCBTRUxFQ1QgJ2ZrX25vdHBhcnRpdGlvbmVkX3BrJzo6cmVnY2xhc3Mp OworIGNvdW50IAorLS0tLS0tLQorICAgICAwCisoMSByb3cpCisKKy0tIENoYW5naW5nIGl0IGJh Y2sgdG8gRU5GT1JDRUQgd2lsbCByZWNyZWF0ZSB0aGUgbmVjZXNzYXJ5IHRyaWdnZXJzLgorQUxU RVIgVEFCTEUgZmtfcGFydGl0aW9uZWRfZmsgQUxURVIgQ09OU1RSQUlOVCBma19wYXJ0aXRpb25l ZF9ma19hX2JfZmtleSBFTkZPUkNFRDsKKy0tIFNob3VsZCBiZSBleGFjdGx5IHRoZSBzYW1lIG51 bWJlciBvZiB0cmlnZ2VycyBmb3VuZCBhcyBiZWZvcmUKK1NFTEVDVCBDT1VOVCgxKSBGUk9NIHBn X3RyaWdnZXIgcGd0IEpPSU4gdG1wX3RyZ19pbmZvIHR0CitPTiAocGd0LnRndHlwZSA9IHR0LnRn dHlwZSBBTkQgcGd0LnRncmVsaWQgPSB0dC50Z3JlbGlkIEFORCBwZ3QudGdjb25zdHJhaW50ID0g dHQudGdjb25zdHJhaW50KTsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICAxNAorKDEgcm93KQorCiBB TFRFUiBUQUJMRSBma19wYXJ0aXRpb25lZF9mayBEUk9QIENPTlNUUkFJTlQgZmtfcGFydGl0aW9u ZWRfZmtfYV9iX2ZrZXk7CiAtLSBkb25lLgogRFJPUCBUQUJMRSBma19ub3RwYXJ0aXRpb25lZF9w aywgZmtfcGFydGl0aW9uZWRfZms7CkBAIC0xODY4LDYgKzE5NDQsNDAgQEAgUGFydGl0aW9uIG9m OiBma19wYXJ0aXRpb25lZF9mayBGT1IgVkFMVUVTIElOICgxNTAwLCAxNTAyKQogRm9yZWlnbi1r ZXkgY29uc3RyYWludHM6CiAgICAgVEFCTEUgImZrX3BhcnRpdGlvbmVkX2ZrIiBDT05TVFJBSU5U ICJma19wYXJ0aXRpb25lZF9ma19hX2JfZmtleSIgRk9SRUlHTiBLRVkgKGEsIGIpIFJFRkVSRU5D RVMgZmtfbm90cGFydGl0aW9uZWRfcGsoYSwgYikgT04gVVBEQVRFIENBU0NBREUgT04gREVMRVRF IENBU0NBREUKIAorRFJPUCBUQUJMRSBma19wYXJ0aXRpb25lZF9ma18yOworQ1JFQVRFIFRBQkxF IGZrX3BhcnRpdGlvbmVkX2ZrXzIgKGIgaW50LCBhIGludCwKKwlGT1JFSUdOIEtFWSAoYSwgYikg UkVGRVJFTkNFUyBma19ub3RwYXJ0aXRpb25lZF9wayBPTiBVUERBVEUgQ0FTQ0FERSBPTiBERUxF VEUgQ0FTQ0FERSBOT1QgRU5GT1JDRUQpOworQkVHSU47CitBTFRFUiBUQUJMRSBma19wYXJ0aXRp b25lZF9mayBBVFRBQ0ggUEFSVElUSU9OIGZrX3BhcnRpdGlvbmVkX2ZrXzIgRk9SIFZBTFVFUyBJ TiAoMTUwMCwxNTAyKTsKKy0tIHNob3VsZCBoYXZlIHR3byBjb25zdHJhaW50cworXGQgZmtfcGFy dGl0aW9uZWRfZmtfMgorICAgICAgICBUYWJsZSAicHVibGljLmZrX3BhcnRpdGlvbmVkX2ZrXzIi CisgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCAKKy0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQorIGIgICAg ICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorIGEgICAgICB8IGludGVnZXIg fCAgICAgICAgICAgfCAgICAgICAgICB8IAorUGFydGl0aW9uIG9mOiBma19wYXJ0aXRpb25lZF9m ayBGT1IgVkFMVUVTIElOICgxNTAwLCAxNTAyKQorRm9yZWlnbi1rZXkgY29uc3RyYWludHM6Cisg ICAgImZrX3BhcnRpdGlvbmVkX2ZrXzJfYV9iX2ZrZXkiIEZPUkVJR04gS0VZIChhLCBiKSBSRUZF UkVOQ0VTIGZrX25vdHBhcnRpdGlvbmVkX3BrKGEsIGIpIE9OIFVQREFURSBDQVNDQURFIE9OIERF TEVURSBDQVNDQURFIE5PVCBFTkZPUkNFRAorICAgIFRBQkxFICJma19wYXJ0aXRpb25lZF9mayIg Q09OU1RSQUlOVCAiZmtfcGFydGl0aW9uZWRfZmtfYV9iX2ZrZXkiIEZPUkVJR04gS0VZIChhLCBi KSBSRUZFUkVOQ0VTIGZrX25vdHBhcnRpdGlvbmVkX3BrKGEsIGIpIE9OIFVQREFURSBDQVNDQURF IE9OIERFTEVURSBDQVNDQURFCisKK0RST1AgVEFCTEUgZmtfcGFydGl0aW9uZWRfZmtfMjsKK1JP TExCQUNLOworQkVHSU47CitBTFRFUiBUQUJMRSBma19wYXJ0aXRpb25lZF9mayBBTFRFUiBDT05T VFJBSU5UIGZrX3BhcnRpdGlvbmVkX2ZrX2FfYl9ma2V5IE5PVCBFTkZPUkNFRDsKK0FMVEVSIFRB QkxFIGZrX3BhcnRpdGlvbmVkX2ZrIEFUVEFDSCBQQVJUSVRJT04gZmtfcGFydGl0aW9uZWRfZmtf MiBGT1IgVkFMVUVTIElOICgxNTAwLDE1MDIpOworLS0gc2hvdWxkIGhhdmUgb25seSBvbmUgY29u c3RyYWludAorXGQgZmtfcGFydGl0aW9uZWRfZmtfMgorICAgICAgICBUYWJsZSAicHVibGljLmZr X3BhcnRpdGlvbmVkX2ZrXzIiCisgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxh YmxlIHwgRGVmYXVsdCAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t Ky0tLS0tLS0tLQorIGIgICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IAor IGEgICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorUGFydGl0aW9uIG9m OiBma19wYXJ0aXRpb25lZF9mayBGT1IgVkFMVUVTIElOICgxNTAwLCAxNTAyKQorRm9yZWlnbi1r ZXkgY29uc3RyYWludHM6CisgICAgVEFCTEUgImZrX3BhcnRpdGlvbmVkX2ZrIiBDT05TVFJBSU5U ICJma19wYXJ0aXRpb25lZF9ma19hX2JfZmtleSIgRk9SRUlHTiBLRVkgKGEsIGIpIFJFRkVSRU5D RVMgZmtfbm90cGFydGl0aW9uZWRfcGsoYSwgYikgT04gVVBEQVRFIENBU0NBREUgT04gREVMRVRF IENBU0NBREUgTk9UIEVORk9SQ0VECisKK1JPTExCQUNLOwogRFJPUCBUQUJMRSBma19wYXJ0aXRp b25lZF9ma18yOwogQ1JFQVRFIFRBQkxFIGZrX3BhcnRpdGlvbmVkX2ZrXzQgKGEgaW50LCBiIGlu dCwgRk9SRUlHTiBLRVkgKGEsIGIpIFJFRkVSRU5DRVMgZmtfbm90cGFydGl0aW9uZWRfcGsoYSwg YikgT04gVVBEQVRFIENBU0NBREUgT04gREVMRVRFIENBU0NBREUpIFBBUlRJVElPTiBCWSBSQU5H RSAoYiwgYSk7CiBDUkVBVEUgVEFCTEUgZmtfcGFydGl0aW9uZWRfZmtfNF8xIFBBUlRJVElPTiBP RiBma19wYXJ0aXRpb25lZF9ma180IEZPUiBWQUxVRVMgRlJPTSAoMSwxKSBUTyAoMTAwLDEwMCk7 CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9mb3JlaWduX2tleS5zcWwgYi9zcmMv dGVzdC9yZWdyZXNzL3NxbC9mb3JlaWduX2tleS5zcWwKaW5kZXggZDFhYWM1MzU3ZjAuLjk2ODEz MzMxZmMyIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9mb3JlaWduX2tleS5zcWwK KysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZm9yZWlnbl9rZXkuc3FsCkBAIC0yLDEzICsyLDM5 IEBACiAtLSBGT1JFSUdOIEtFWQogLS0KIAotLS0gTUFUQ0ggRlVMTAorLS0gTk9UIEVORk9SQ0VE CiAtLQogLS0gRmlyc3QgdGVzdCwgY2hlY2sgYW5kIGNhc2NhZGUKIC0tCiBDUkVBVEUgVEFCTEUg UEtUQUJMRSAoIHB0ZXN0MSBpbnQgUFJJTUFSWSBLRVksIHB0ZXN0MiB0ZXh0ICk7Ci1DUkVBVEUg VEFCTEUgRktUQUJMRSAoIGZ0ZXN0MSBpbnQgUkVGRVJFTkNFUyBQS1RBQkxFIE1BVENIIEZVTEwg T04gREVMRVRFIENBU0NBREUgT04gVVBEQVRFIENBU0NBREUsIGZ0ZXN0MiBpbnQgKTsKK0NSRUFU RSBUQUJMRSBGS1RBQkxFICggZnRlc3QxIGludCBSRUZFUkVOQ0VTIFBLVEFCTEUgTUFUQ0ggRlVM TCBPTiBERUxFVEUgQ0FTQ0FERSBPTiBVUERBVEUgQ0FTQ0FERSBOT1QgRU5GT1JDRUQsCisJCQkJ CSAgIGZ0ZXN0MiBpbnQgKTsKIAorLS0gSW5zZXJ0aW5nIGludG8gdGhlIGZvcmVpZ24ga2V5IHRh YmxlIHdpbGwgbm90IHJlc3VsdCBpbiBhbiBlcnJvciwgZXZlbiBpZgorLS0gdGhlcmUgaXMgbm8g bWF0Y2hpbmcga2V5IGluIHRoZSByZWZlcmVuY2VkIHRhYmxlLgorSU5TRVJUIElOVE8gRktUQUJM RSBWQUxVRVMgKDEsIDIpOworSU5TRVJUIElOVE8gRktUQUJMRSBWQUxVRVMgKDIsIDMpOworCist LSBDaGVjayBGS1RBQkxFCitTRUxFQ1QgKiBGUk9NIEZLVEFCTEU7CisKKy0tIENoYW5naW5nIGl0 IGJhY2sgdG8gRU5GT1JDRUQgd2lsbCByZXN1bHQgaW4gYW4gZXJyb3IgZHVlIHRvIHZhbGlkYXRp b24gb2YKKy0tIGV4aXN0aW5nIHJvd3MuCitBTFRFUiBUQUJMRSBGS1RBQkxFIEFMVEVSIENPTlNU UkFJTlQgZmt0YWJsZV9mdGVzdDFfZmtleSBFTkZPUkNFRDsKKworLS0gUmVtb3ZlIGFueSBleGlz dGluZyByb3dzIHRoYXQgdmlvbGF0ZSB0aGUgY29uc3RyYWludCwgdGhlbiBhdHRlbXB0IHRvIGNo YW5nZQorLS0gaXQuCitUUlVOQ0FURSBGS1RBQkxFOworQUxURVIgVEFCTEUgRktUQUJMRSBBTFRF UiBDT05TVFJBSU5UIGZrdGFibGVfZnRlc3QxX2ZrZXkgRU5GT1JDRUQ7CisKKy0tIEFueSBmdXJ0 aGVyIGluc2VydHMgd2lsbCBmYWlsIGR1ZSB0byB0aGUgZW5mb3JjZW1lbnQuCitJTlNFUlQgSU5U TyBGS1RBQkxFIFZBTFVFUyAoMywgNCk7CisKKy0tCistLSBNQVRDSCBGVUxMCistLQorLS0gRmly c3QgdGVzdCwgY2hlY2sgYW5kIGNhc2NhZGUKKy0tCiAtLSBJbnNlcnQgdGVzdCBkYXRhIGludG8g UEtUQUJMRQogSU5TRVJUIElOVE8gUEtUQUJMRSBWQUxVRVMgKDEsICdUZXN0MScpOwogSU5TRVJU IElOVE8gUEtUQUJMRSBWQUxVRVMgKDIsICdUZXN0MicpOwpAQCAtMjMwLDYgKzI1Niw5IEBAIElO U0VSVCBJTlRPIEZLVEFCTEUgVkFMVUVTICgxLCBOVUxMKTsKIAogQUxURVIgVEFCTEUgRktUQUJM RSBBREQgRk9SRUlHTiBLRVkoZnRlc3QxLCBmdGVzdDIpIFJFRkVSRU5DRVMgUEtUQUJMRSBNQVRD SCBGVUxMOwogCistLSBOT1QgRU5GT1JDRUQgd2lsbCBieXBhc3MgdGhlIGluaXRpYWwgY2hlY2su CitBTFRFUiBUQUJMRSBGS1RBQkxFIEFERCBGT1JFSUdOIEtFWShmdGVzdDEsIGZ0ZXN0MikgUkVG RVJFTkNFUyBQS1RBQkxFIE1BVENIIEZVTEwgTk9UIEVORk9SQ0VEOworCiBEUk9QIFRBQkxFIEZL VEFCTEU7CiBEUk9QIFRBQkxFIFBLVEFCTEU7CiAKQEAgLTk2OCwxMCArOTk3LDIyIEBAIElOU0VS VCBJTlRPIGZrdGFibGUgVkFMVUVTICgwLCAyMCk7CiAKIENPTU1JVDsKIAorQUxURVIgVEFCTEUg Zmt0YWJsZSBBTFRFUiBDT05TVFJBSU5UIGZrdGFibGVfZmtfZmtleSBOT1QgRU5GT1JDRUQ7CisK K0JFR0lOOworCistLSBkb2Vzbid0IG1hdGNoIEZLLCBubyBlcnJvci4KK1VQREFURSBwa3RhYmxl IFNFVCBpZCA9IDEwIFdIRVJFIGlkID0gNTsKKy0tIGRvZXNuJ3QgbWF0Y2ggUEssIG5vIGVycm9y LgorSU5TRVJUIElOVE8gZmt0YWJsZSBWQUxVRVMgKDAsIDIwKTsKKworUk9MTEJBQ0s7CisKIC0t IHRyeSBhZGRpdGlvbmFsIHN5bnRheAotQUxURVIgVEFCTEUgZmt0YWJsZSBBTFRFUiBDT05TVFJB SU5UIGZrdGFibGVfZmtfZmtleSBOT1QgREVGRVJSQUJMRTsKK0FMVEVSIFRBQkxFIGZrdGFibGUg QUxURVIgQ09OU1RSQUlOVCBma3RhYmxlX2ZrX2ZrZXkgTk9UIERFRkVSUkFCTEUgRU5GT1JDRUQ7 CiAtLSBpbGxlZ2FsIG9wdGlvbgogQUxURVIgVEFCTEUgZmt0YWJsZSBBTFRFUiBDT05TVFJBSU5U IGZrdGFibGVfZmtfZmtleSBOT1QgREVGRVJSQUJMRSBJTklUSUFMTFkgREVGRVJSRUQ7CitBTFRF UiBUQUJMRSBma3RhYmxlIEFMVEVSIENPTlNUUkFJTlQgZmt0YWJsZV9ma19ma2V5IEVORk9SQ0VE IE5PVCBFTkZPUkNFRDsKIAogLS0gdGVzdCBvcmRlciBvZiBmaXJpbmcgb2YgRksgdHJpZ2dlcnMg d2hlbiBzZXZlcmFsIFJJLWluZHVjZWQgY2hhbmdlcyBuZWVkIHRvCiAtLSBiZSBtYWRlIHRvIHRo ZSBzYW1lIHJvdy4gIFRoaXMgd2FzIGJyb2tlbiBieSBzdWJ0cmFuc2FjdGlvbi1yZWxhdGVkCkBA IC0xMTgyLDcgKzEyMjMsOCBAQCBBTFRFUiBUQUJMRSBma19wYXJ0aXRpb25lZF9mayBEUk9QIENP TFVNTiBmZHJvcDE7CiBDUkVBVEUgVEFCTEUgZmtfcGFydGl0aW9uZWRfZmtfMSAoZmRyb3AxIGlu dCwgZmRyb3AyIGludCwgYSBpbnQsIGZkcm9wMyBpbnQsIGIgaW50KTsKIEFMVEVSIFRBQkxFIGZr X3BhcnRpdGlvbmVkX2ZrXzEgRFJPUCBDT0xVTU4gZmRyb3AxLCBEUk9QIENPTFVNTiBmZHJvcDIs IERST1AgQ09MVU1OIGZkcm9wMzsKIEFMVEVSIFRBQkxFIGZrX3BhcnRpdGlvbmVkX2ZrIEFUVEFD SCBQQVJUSVRJT04gZmtfcGFydGl0aW9uZWRfZmtfMSBGT1IgVkFMVUVTIEZST00gKDAsMCkgVE8g KDEwMDAsMTAwMCk7Ci1BTFRFUiBUQUJMRSBma19wYXJ0aXRpb25lZF9mayBBREQgRk9SRUlHTiBL RVkgKGEsIGIpIFJFRkVSRU5DRVMgZmtfbm90cGFydGl0aW9uZWRfcGs7CitBTFRFUiBUQUJMRSBm a19wYXJ0aXRpb25lZF9mayBBREQgRk9SRUlHTiBLRVkgKGEsIGIpIFJFRkVSRU5DRVMgZmtfbm90 cGFydGl0aW9uZWRfcGsgTk9UIEVORk9SQ0VEOworQUxURVIgVEFCTEUgZmtfcGFydGl0aW9uZWRf ZmsgQUxURVIgQ09OU1RSQUlOVCBma19wYXJ0aXRpb25lZF9ma19hX2JfZmtleSBFTkZPUkNFRDsK IENSRUFURSBUQUJMRSBma19wYXJ0aXRpb25lZF9ma18yIChiIGludCwgZmRyb3AxIGludCwgZmRy b3AyIGludCwgYSBpbnQpOwogQUxURVIgVEFCTEUgZmtfcGFydGl0aW9uZWRfZmtfMiBEUk9QIENP TFVNTiBmZHJvcDEsIERST1AgQ09MVU1OIGZkcm9wMjsKIEFMVEVSIFRBQkxFIGZrX3BhcnRpdGlv bmVkX2ZrIEFUVEFDSCBQQVJUSVRJT04gZmtfcGFydGl0aW9uZWRfZmtfMiBGT1IgVkFMVUVTIEZS T00gKDEwMDAsMTAwMCkgVE8gKDIwMDAsMjAwMCk7CkBAIC0xMjM2LDYgKzEyNzgsMjcgQEAgVVBE QVRFIGZrX25vdHBhcnRpdGlvbmVkX3BrIFNFVCBiID0gMTUwMiBXSEVSRSBhID0gMTUwMDsKIFVQ REFURSBma19ub3RwYXJ0aXRpb25lZF9wayBTRVQgYiA9IDI1MDQgV0hFUkUgYSA9IDI1MDA7CiAt LSBjaGVjayBwc3FsIGJlaGF2aW9yCiBcZCBma19ub3RwYXJ0aXRpb25lZF9waworCistLSBDaGVj ayB0aGUgZXhzdGluZyBGSyB0cmlnZ2VyCitDUkVBVEUgVEVNUCBUQUJMRSB0bXBfdHJnX2luZm8g QVMgU0VMRUNUIHRndHlwZSwgdGdyZWxpZDo6cmVnY2xhc3MsIHRnY29uc3RyYWludAorRlJPTSBw Z190cmlnZ2VyCitXSEVSRSB0Z3JlbGlkIElOIChTRUxFQ1QgcmVsaWQgRlJPTSBwZ19wYXJ0aXRp b25fdHJlZSgnZmtfcGFydGl0aW9uZWRfZmsnOjpyZWdjbGFzcykKKwkJCQkJVU5JT04gQUxMIFNF TEVDVCAnZmtfbm90cGFydGl0aW9uZWRfcGsnOjpyZWdjbGFzcyk7CitTRUxFQ1QgY291bnQoMSkg RlJPTSB0bXBfdHJnX2luZm87CisKK0FMVEVSIFRBQkxFIGZrX3BhcnRpdGlvbmVkX2ZrIEFMVEVS IENPTlNUUkFJTlQgZmtfcGFydGl0aW9uZWRfZmtfYV9iX2ZrZXkgTk9UIEVORk9SQ0VEOworLS0g Tm8gdHJpZ2dlcnMKK1NFTEVDVCBjb3VudCgxKSBGUk9NIHBnX3RyaWdnZXIKK1dIRVJFIHRncmVs aWQgSU4gKFNFTEVDVCByZWxpZCBGUk9NIHBnX3BhcnRpdGlvbl90cmVlKCdma19wYXJ0aXRpb25l ZF9mayc6OnJlZ2NsYXNzKQorCQkJCQlVTklPTiBBTEwgU0VMRUNUICdma19ub3RwYXJ0aXRpb25l ZF9wayc6OnJlZ2NsYXNzKTsKKworLS0gQ2hhbmdpbmcgaXQgYmFjayB0byBFTkZPUkNFRCB3aWxs IHJlY3JlYXRlIHRoZSBuZWNlc3NhcnkgdHJpZ2dlcnMuCitBTFRFUiBUQUJMRSBma19wYXJ0aXRp b25lZF9mayBBTFRFUiBDT05TVFJBSU5UIGZrX3BhcnRpdGlvbmVkX2ZrX2FfYl9ma2V5IEVORk9S Q0VEOworCistLSBTaG91bGQgYmUgZXhhY3RseSB0aGUgc2FtZSBudW1iZXIgb2YgdHJpZ2dlcnMg Zm91bmQgYXMgYmVmb3JlCitTRUxFQ1QgQ09VTlQoMSkgRlJPTSBwZ190cmlnZ2VyIHBndCBKT0lO IHRtcF90cmdfaW5mbyB0dAorT04gKHBndC50Z3R5cGUgPSB0dC50Z3R5cGUgQU5EIHBndC50Z3Jl bGlkID0gdHQudGdyZWxpZCBBTkQgcGd0LnRnY29uc3RyYWludCA9IHR0LnRnY29uc3RyYWludCk7 CisKIEFMVEVSIFRBQkxFIGZrX3BhcnRpdGlvbmVkX2ZrIERST1AgQ09OU1RSQUlOVCBma19wYXJ0 aXRpb25lZF9ma19hX2JfZmtleTsKIC0tIGRvbmUuCiBEUk9QIFRBQkxFIGZrX25vdHBhcnRpdGlv bmVkX3BrLCBma19wYXJ0aXRpb25lZF9mazsKQEAgLTEzNzIsNiArMTQzNSwyMiBAQCBBTFRFUiBU QUJMRSBma19wYXJ0aXRpb25lZF9mayBBVFRBQ0ggUEFSVElUSU9OIGZrX3BhcnRpdGlvbmVkX2Zr XzIgRk9SIFZBTFVFUyBJTgogXGQgZmtfcGFydGl0aW9uZWRfZmtfMgogRFJPUCBUQUJMRSBma19w YXJ0aXRpb25lZF9ma18yOwogCitDUkVBVEUgVEFCTEUgZmtfcGFydGl0aW9uZWRfZmtfMiAoYiBp bnQsIGEgaW50LAorCUZPUkVJR04gS0VZIChhLCBiKSBSRUZFUkVOQ0VTIGZrX25vdHBhcnRpdGlv bmVkX3BrIE9OIFVQREFURSBDQVNDQURFIE9OIERFTEVURSBDQVNDQURFIE5PVCBFTkZPUkNFRCk7 CitCRUdJTjsKK0FMVEVSIFRBQkxFIGZrX3BhcnRpdGlvbmVkX2ZrIEFUVEFDSCBQQVJUSVRJT04g ZmtfcGFydGl0aW9uZWRfZmtfMiBGT1IgVkFMVUVTIElOICgxNTAwLDE1MDIpOworLS0gc2hvdWxk IGhhdmUgdHdvIGNvbnN0cmFpbnRzCitcZCBma19wYXJ0aXRpb25lZF9ma18yCitEUk9QIFRBQkxF IGZrX3BhcnRpdGlvbmVkX2ZrXzI7CitST0xMQkFDSzsKK0JFR0lOOworQUxURVIgVEFCTEUgZmtf cGFydGl0aW9uZWRfZmsgQUxURVIgQ09OU1RSQUlOVCBma19wYXJ0aXRpb25lZF9ma19hX2JfZmtl eSBOT1QgRU5GT1JDRUQ7CitBTFRFUiBUQUJMRSBma19wYXJ0aXRpb25lZF9mayBBVFRBQ0ggUEFS VElUSU9OIGZrX3BhcnRpdGlvbmVkX2ZrXzIgRk9SIFZBTFVFUyBJTiAoMTUwMCwxNTAyKTsKKy0t IHNob3VsZCBoYXZlIG9ubHkgb25lIGNvbnN0cmFpbnQKK1xkIGZrX3BhcnRpdGlvbmVkX2ZrXzIK K1JPTExCQUNLOworRFJPUCBUQUJMRSBma19wYXJ0aXRpb25lZF9ma18yOworCiBDUkVBVEUgVEFC TEUgZmtfcGFydGl0aW9uZWRfZmtfNCAoYSBpbnQsIGIgaW50LCBGT1JFSUdOIEtFWSAoYSwgYikg UkVGRVJFTkNFUyBma19ub3RwYXJ0aXRpb25lZF9wayhhLCBiKSBPTiBVUERBVEUgQ0FTQ0FERSBP TiBERUxFVEUgQ0FTQ0FERSkgUEFSVElUSU9OIEJZIFJBTkdFIChiLCBhKTsKIENSRUFURSBUQUJM RSBma19wYXJ0aXRpb25lZF9ma180XzEgUEFSVElUSU9OIE9GIGZrX3BhcnRpdGlvbmVkX2ZrXzQg Rk9SIFZBTFVFUyBGUk9NICgxLDEpIFRPICgxMDAsMTAwKTsKIENSRUFURSBUQUJMRSBma19wYXJ0 aXRpb25lZF9ma180XzIgKGEgaW50LCBiIGludCwgRk9SRUlHTiBLRVkgKGEsIGIpIFJFRkVSRU5D RVMgZmtfbm90cGFydGl0aW9uZWRfcGsoYSwgYikgT04gVVBEQVRFIFNFVCBOVUxMKTsKLS0gCjIu MTguMAoK --000000000000effd7c0623f376c1--