Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1puJcx-0006yO-9q for pgsql-hackers@arkaria.postgresql.org; Wed, 03 May 2023 21:03:08 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1puJcw-0007y9-40 for pgsql-hackers@arkaria.postgresql.org; Wed, 03 May 2023 21:03:06 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1puJcv-0007y0-4C for pgsql-hackers@lists.postgresql.org; Wed, 03 May 2023 21:03:05 +0000 Received: from mail-pl1-x631.google.com ([2607:f8b0:4864:20::631]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1puJcl-000PRO-5f for pgsql-hackers@lists.postgresql.org; Wed, 03 May 2023 21:03:04 +0000 Received: by mail-pl1-x631.google.com with SMTP id d9443c01a7336-1aaea43def7so34238445ad.2 for ; Wed, 03 May 2023 14:02:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=illuminatedcomputing-com.20221208.gappssmtp.com; s=20221208; t=1683147773; x=1685739773; h=in-reply-to:from:references:cc:to:content-language:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=OVG+1qnRHUynYrJM0pqpnVzLjv/D5dwVNPWn2U7VBN4=; b=0lo91uKGPN2ecSrl9AhGIRR7bZrSUGfBqYbflBigS4IfAFj/XnSTn07BEMzLPe5pdY BeYKkjpZKDfUjqx+QVP6+jaxzWR6lyPK30xi5YJ/dDIACLaKHhPeYVad4ixzYVagwlAJ mUmkX16Ny9Gv+Orkkqj3Yfhjb91SeAlzEQ9T+Nejz4W0sG6VYcTwL51ZcGNxKbRfydKW AUFVjeymsvzDrgxLx46E5+P+f372E1pUDQZO6P/IsHXIDGtWmZZt2+GQykpFdyeUW6ow 27Ov3DXnNCdWY+unfhU6mAsBE46R5s+bu2iMCIju9LYuAf6hh7E7m/jF+RgdwQDFAhs+ I/tw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1683147773; x=1685739773; h=in-reply-to:from:references:cc:to:content-language:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=OVG+1qnRHUynYrJM0pqpnVzLjv/D5dwVNPWn2U7VBN4=; b=MOLyxj3N5ir8kYrzTRoOmv07frAmxcWRF2rxcqLANTMtRj0yriAQozJRdFi8T1KuS0 sbTNe/B2ktgbZ5450+XY7hGg1aZZZBuPRLLTI9FrgyYPyVqKoVEyD027P1UcodwHlKcm 3ypZ0F45WnuH/w7If0zxapUfH791l0IzuWc92v3eDSEVxj2Ysz2C157PB0FefhvU6+hv uCoM4aobY1gGvEfRcpw7SFlpP04cc7Wrzj8Ymo5OYCt+u/4bkTaETxPZi3551oLhlA6O 5+fd/1HIffv8nlG5eQGW0T1fQVMY/iRC1D2tkAmma9yeVZGs2BhzSto55Hptu+YaJhwC 9gXg== X-Gm-Message-State: AC+VfDyb1MP0QMhbQgEj9pVvpHKxvWS1uS4jScnaN1kKphmJx9uHjwn+ XraqkIc03duv0OrTmQsNaJjsfg== X-Google-Smtp-Source: ACHHUZ5poJfxiGT/8eRRiox6tBMUKdkhHAePA/NmucTU1itvngYa4JUIU1KpAn6vg5LubiPnHoVAEA== X-Received: by 2002:a17:902:ab95:b0:1a9:7bf4:17c0 with SMTP id f21-20020a170902ab9500b001a97bf417c0mr1267373plr.4.1683147771967; Wed, 03 May 2023 14:02:51 -0700 (PDT) Received: from [192.168.2.139] ([50.53.98.191]) by smtp.googlemail.com with ESMTPSA id a7-20020a170902ecc700b00194c90ca320sm5543175plh.204.2023.05.03.14.02.47 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 03 May 2023 14:02:49 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------xLmCyd89q18NiaElblWAsYVm" Message-ID: <27361388-f5ab-ea36-ea35-41d68a90e60d@illuminatedcomputing.com> Date: Wed, 3 May 2023 14:02:47 -0700 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.10.0 Subject: Re: SQL:2011 application time Content-Language: en-US To: Peter Eisentraut Cc: Corey Huinker , PostgreSQL Hackers , Jaime Casanova References: <20210904195556.GA10553@ahch-to> <20210911015017.GA8837@ahch-to> <5650d77a-1d73-fd8d-4410-8e97dbeff572@illuminatedcomputing.com> <21964319-46e5-3e47-217b-6ac4169bdf13@enterprisedb.com> From: Paul Jungwirth In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------xLmCyd89q18NiaElblWAsYVm Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Hello, Thank you again for the review. Here is a patch with most of your feedback addressed. Sorry it has taken so long! These patches are rebased up to 1ab763fc22adc88e5d779817e7b42b25a9dd7c9e (May 3). The big change is switching from implementing FOR PORTION OF with triggers back to an executor node implementation. I think this is a lot simpler and means we don't have to be so "premeditated" (for example you just need a PERIOD/range, not a temporal PK). I've also made some progress on partitioning temporal tables. It still needs some work though, and also it depends on my separate commitfest entry (https://commitfest.postgresql.org/43/4065/). So I've left it out of the patches attached here. A few more details below: Back in January 2022, Peter Eisentraut wrote: > make_period_not_backward(): Hardcoding the name of the operator as "<" > is not good. You should perhaps lookup the less-than operator in the > type cache. Look around for TYPECACHE_LT_OPR for how this is usually done. > ... > transformIndexConstraint(): As above, we can't look up the && operator > by name. In this case, I suppose we should look it up through the > index AM support operators. I've changed most locations to look up the operators we need using strategy number. But in some places I need the range intersects operator (`*`) and we don't have a strategy number for that. I don't really understand the purpose of not hardcoding operator names here. Can you give me the reasons for that? Do you have any suggestions what I can do to use `*`? Also, when I'm doing these operator lookups, do I need permission checks similar to what I see in ComputeIndexAttrs? > Further, the additions to this function are very complicated and not > fully explained. I'm suspicious about things like > findNewOrOldColumn() -- generally we should look up columns by number > not name. Perhaps you can add a header comment or split out the code > further into smaller functions. I still have some work to do on this. I agree it's very complicated, so I'm going to see what kind of refactoring I can do. >>> I didn't follow why indexes would have periods, for example, the new >>> period field in IndexStmt. Is that explained anywhere? >> >> When you create a primary key or a unique constraint (which are backed >> by a unique index), you can give a period name to make it a temporal >> constraint. We create the index first and then create the constraint >> as a side-effect of that (e.g. index_create calls >> index_constraint_create). The analysis phase generates an IndexStmt. >> So I think this was mostly a way to pass the period info down to the >> constraint. It probably doesn't actually need to be stored on pg_index >> though. Maybe it does for index_concurrently_create_copy. I'll add >> some comments, but if you think it's the wrong approach let me know. > > This seems backwards. Currently, when you create a constraint, the index is created as a side effect and is owned, so to speak, by the constraint. What you are describing here sounds like the index owns the constraint. This needs to be reconsidered, I think. After looking at this again I do think to reference the period from the index, not vice versa. The period is basically one of the index elements (e.g. `PRIMARY KEY (id, valid_at WITHOUT OVERLAPS)`). You can define a `PERIOD` without an index, but you can't define a WITHOUT OVERLAPS index without a period. In addition you could have multiple indexes using the same period (though this is probably unusual and technically disallowed by the standard, although in principal you could do it), but not multiple periods within the same index. I understand what you're saying about how constraints cause indexes as a by-product, but here the constraint isn't the PERIOD; it's the PRIMARY KEY or UNIQUE constraint. The PERIOD is just something the constraint & index refer to (like an expression indexElem). The dependency direction also suggests the period should be referenced by the index: you can drop the index without dropping the period, but dropping the period would cascade to dropping the index (or fail). I hope that makes sense. But let me know if you still disagree. > Do we really need different trigger names depending on whether the > foreign key is temporal? They don't have to be different. I used separate C functions because I didn't want standard FKs to be slowed/complicated by the temporal ones, and also I wanted to avoid merge conflicts with the work on avoiding SPI in RI checks. But you're just asking about the trigger names, right? I haven't changed those yet but it shouldn't take long. > IMO, if this temporal feature is to happen, btree_gist needs to be moved > into core first.  Having to install an extension in order to use an > in-core feature like this isn't going to be an acceptable experience. As far as I can tell the conversation about moving this into core hasn't gone anywhere. Do you still think this is a prerequisite to this patch? Is there anything I can do to help move `btree_gist` forward? It seems like a large backwards compatibility challenge. I imagine that getting agreement on how to approach it is actually more work than doing the development. I'd be very happy for any suggestions here! Yours, -- Paul ~{:-) pj@illuminatedcomputing.com --------------xLmCyd89q18NiaElblWAsYVm Content-Type: text/x-patch; charset=UTF-8; name="v11-0004-Add-temporal-FOREIGN-KEYs.patch" Content-Disposition: attachment; filename="v11-0004-Add-temporal-FOREIGN-KEYs.patch" Content-Transfer-Encoding: base64 RnJvbSBkODUxYmY4ZDI0ZmI4M2Q2YWY5NWIwOWVjY2VkYTMyYjUyYWRlMDZkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IFN1biwgMjcgSnVuIDIwMjEgMTI6NTg6NTEgLTA3 MDAKU3ViamVjdDogW1BBVENIIHYxMSA0LzRdIEFkZCB0ZW1wb3JhbCBGT1JFSUdOIEtFWXMK Ci0gQWRkZWQgYmlzb24gc3VwcG9ydCBmb3IgdGVtcG9yYWwgRk9SRUlHTiBLRVlzLiBMaWtl IHByaW1hcnkga2V5cywgdGhleQogIGNhbiBoYXZlIGVpdGhlciBhIFBFUklPRCBvciBhIHJh bmdlIGNvbHVtbiBmb3IgdGhlIHRlbXBvcmFsIGNvbXBvbmVudC4KLSBBZGRlZCB0ZW1wb3Jh bCB0cmlnZ2VyIGZ1bmN0aW9ucyBha2luIHRvIGV4aXN0aW5nIFJJIHRyaWdnZXIKICBmdW5j dGlvbnMuCi0gQWRkZWQgc3VwcG9ydCBmb3IgT04ge1VQREFURSxERUxFVEV9IHtDQVNDQURF LFNFVCBOVUxMLFNFVCBERUZBVUxUfS4KLSBBZGRlZCBwZ19jb25zdHJhaW50LmNvbmZwZXJp b2QgdG8gcmVjb3JkIHRoZSBvaWQgb2YgYSBQRVJJT0QgdXNlZCBpbgogIHRoZSBvdGhlciB0 YWJsZS4gSWYgYW4gRksgdXNlcyBhIHJhbmdlIGNvbHVtbiBpbnN0ZWFkLCB3ZSBqdXN0IHJl Y29yZAogIGl0cyBhdHRudW0gd2l0aCB0aGUgb3RoZXIgYXR0bnVtcyB1c2VkIGJ5IHRoZSBj b25zdHJhaW50LgotIFdlIHN1cHBvcnQgZm9yZWlnbiBrZXlzIHdoZXJlIG9uZSB0YWJsZSB1 c2VzIGEgUEVSSU9EIGFuZCB0aGUgb3RoZXIgYQogIHJhbmdlOiB5b3UgZG9uJ3QgaGF2ZSB0 byBjaG9vc2Ugb25lIG9yIHRoZSBvdGhlciBmb3IgeW91ciB3aG9sZQogIGRhdGFiYXNlLgot IEFkZGVkIHBnX2R1bXAgc3VwcG9ydC4KLSBTaG93IHRoZSBjb3JyZWN0IHN5bnRheCBpbiBw c3FsIFxkIG91dHB1dCBmb3IgZm9yZWlnbiBrZXlzLgotIEFkZGVkIHRlc3RzIGFuZCBkb2N1 bWVudGF0aW9uLgotLS0KIGRvYy9zcmMvc2dtbC9kZGwuc2dtbCAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAgIDQgKwogZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUuc2dtbCAg ICAgICAgICAgIHwgICA0MiArLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMgICAgICAg ICAgICAgICAgICAgIHwgICAgMSArCiBzcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMgICAg ICAgICAgICAgICAgICAgfCAgICAxICsKIHNyYy9iYWNrZW5kL2NhdGFsb2cvcGdfY29uc3Ry YWludC5jICAgICAgICAgICB8ICAgMTIgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxl Y21kcy5jICAgICAgICAgICAgICB8ICA4OTQgKysrKystLS0KIHNyYy9iYWNrZW5kL2NvbW1h bmRzL3RyaWdnZXIuYyAgICAgICAgICAgICAgICB8ICAgIDIgKwogc3JjL2JhY2tlbmQvY29t bWFuZHMvdHlwZWNtZHMuYyAgICAgICAgICAgICAgIHwgICAgMSArCiBzcmMvYmFja2VuZC9w YXJzZXIvZ3JhbS55ICAgICAgICAgICAgICAgICAgICAgfCAgIDMzICstCiBzcmMvYmFja2Vu ZC91dGlscy9hZHQvcmlfdHJpZ2dlcnMuYyAgICAgICAgICAgfCAxNDQ5ICsrKysrKysrKysr LS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYyAgICAgICAgICAgICB8ICAg MTkgKy0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY29uc3RyYWludC5oICAgICAgICAgICB8 ICAgMTAgKy0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgICAgICAgICAgICAg ICB8ICAgNDQgKwogc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oICAgICAgICAgICAg ICAgIHwgICAgMiArCiAuLi4vcmVncmVzcy9leHBlY3RlZC93aXRob3V0X292ZXJsYXBzLm91 dCAgICAgfCAxODIzICsrKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC93 aXRob3V0X292ZXJsYXBzLnNxbCAgICAgfCAxMzgxICsrKysrKysrKysrKysKIDE2IGZpbGVz IGNoYW5nZWQsIDUyNjAgaW5zZXJ0aW9ucygrKSwgNDU4IGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL2RvYy9zcmMvc2dtbC9kZGwuc2dtbCBiL2RvYy9zcmMvc2dtbC9kZGwuc2dtbApp bmRleCAzNDNlOTFiOTc1Li44YmI5NjZiNDc2IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwv ZGRsLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2RkbC5zZ21sCkBAIC0xMjkwLDYgKzEyOTAs MTAgQEAgQ1JFQVRFIFRBQkxFIGJpbGxpbmdfYWRkcmVzc2VzICgKICAgIDxwYXJhPgogICAg IEFueSB0YWJsZSB3aXRoIGEgdGVtcG9yYWwgcHJpbWFyeSBrZXkgc3VwcG9ydHMgdGVtcG9y YWwgPGxpdGVyYWw+VVBEQVRFPC9saXRlcmFsPiBhbmQgPGxpdGVyYWw+REVMRVRFPC9saXRl cmFsPiB1c2luZyA8bGl0ZXJhbD5GT1IgUE9SVElPTiBPRjwvbGl0ZXJhbD4gc3ludGF4LiBT ZWUgPHhyZWYgbGlua2VuZD0ic3FsLXVwZGF0ZSIvPiBhbmQgPHhyZWYgbGlua2VuZD0ic3Fs LWRlbGV0ZSIvPiBmb3IgZGV0YWlscy4KICAgIDwvcGFyYT4KKworICAgPHBhcmE+CisgICAg VGVtcG9yYWwgZm9yZWlnbiBrZXlzIGhhdmUgdGhlIHNhbWUgc3RydWN0dXJlIGFzIHRlbXBv cmFsIHByaW1hcnkga2V5cyBhbmQgbXVzdCByZWZlcmVuY2UgdGVtcG9yYWwgcHJpbWFyeSBr ZXlzLiBUaGUgcmVmZXJlbmNlZCBlbnRpdHkgc3BlY2lmaWVkIGJ5IHRoZSBvcmRpbmFyeSBr ZXkgcGFydHMgbXVzdCBleGlzdCBmb3IgYXQgbGVhc3QgYXMgbG9uZyBhcyB0aGUgdmFsdWUg aW4gdGhlIHJlZmVyZW5jaW5nIHJvdy4gTm90ZSB0aGF0IHNldmVyYWwgcm93cyBpbiB0aGUg cmVmZXJlbmNlZCB0YWJsZSBtYXkgYmUgcmVxdWlyZWQgdG8gY29tcGxldGVseSBzYXRpc2Z5 IGEgcmVmZXJlbmNpbmcgdmFsdWUuCisgICA8L3BhcmE+CiAgIDwvc2VjdDI+CiAKICAgPHNl Y3QyIGlkPSJkZGwtcGVyaW9kcy1zeXN0ZW0tcGVyaW9kcyI+CmRpZmYgLS1naXQgYS9kb2Mv c3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJsZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVh dGVfdGFibGUuc2dtbAppbmRleCBiMDI0ODZiOTQwLi44NDdjM2NhMDJhIDEwMDY0NAotLS0g YS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJsZS5zZ21sCisrKyBiL2RvYy9zcmMvc2dt bC9yZWYvY3JlYXRlX3RhYmxlLnNnbWwKQEAgLTg4LDcgKzg4LDcgQEAgUEVSSU9EIEZPUiB7 IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wZXJpb2RfbmFtZTwvcmVwbGFjZWFi bGU+IHwgU1lTVEVNX1QKICAgVU5JUVVFIFsgTlVMTFMgWyBOT1QgXSBESVNUSU5DVCBdICgg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJs ZT4gWywgLi4uIF0gWywgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRlbXBvcmFs X2ludGVydmFsPC9yZXBsYWNlYWJsZT4gV0lUSE9VVCBPVkVSTEFQUyBdICkgPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmluZGV4X3BhcmFtZXRlcnM8L3JlcGxhY2VhYmxlPiB8 CiAgIFBSSU1BUlkgS0VZICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVt bl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gWywgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnRlbXBvcmFsX2ludGVydmFsPC9yZXBsYWNlYWJsZT4gV0lUSE9VVCBPVkVS TEFQUyBdICkgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmluZGV4X3BhcmFtZXRl cnM8L3JlcGxhY2VhYmxlPiB8CiAgIEVYQ0xVREUgWyBVU0lORyA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+aW5kZXhfbWV0aG9kPC9yZXBsYWNlYWJsZT4gXSAoIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5leGNsdWRlX2VsZW1lbnQ8L3JlcGxhY2VhYmxlPiBX SVRIIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5vcGVyYXRvcjwvcmVwbGFjZWFi bGU+IFssIC4uLiBdICkgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmluZGV4X3Bh cmFtZXRlcnM8L3JlcGxhY2VhYmxlPiBbIFdIRVJFICggPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnByZWRpY2F0ZTwvcmVwbGFjZWFibGU+ICkgXSB8Ci0gIEZPUkVJR04gS0VZ ICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNl YWJsZT4gWywgLi4uIF0gKSBSRUZFUkVOQ0VTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5yZWZ0YWJsZTwvcmVwbGFjZWFibGU+IFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+cmVmY29sdW1uPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gKSBdCisgIEZPUkVJ R04gS0VZICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9y ZXBsYWNlYWJsZT4gWywgLi4uIF0gWywgUEVSSU9EIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj50ZW1wb3JhbF9pbnRlcnZhbDwvcmVwbGFjZWFibGU+IF0gKSBSRUZFUkVOQ0VT IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yZWZ0YWJsZTwvcmVwbGFjZWFibGU+ IFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmY29sdW1uPC9yZXBsYWNl YWJsZT4gWywgLi4uIF0gWywgUEVSSU9EIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij50ZW1wb3JhbF9pbnRlcnZhbDwvcmVwbGFjZWFibGU+IF0gKSBdCiAgICAgWyBNQVRDSCBG VUxMIHwgTUFUQ0ggUEFSVElBTCB8IE1BVENIIFNJTVBMRSBdIFsgT04gREVMRVRFIDxyZXBs YWNlYWJsZQogY2xhc3M9InBhcmFtZXRlciI+cmVmZXJlbnRpYWxfYWN0aW9uPC9yZXBsYWNl YWJsZT4gXSBbIE9OIFVQREFURSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVm ZXJlbnRpYWxfYWN0aW9uPC9yZXBsYWNlYWJsZT4gXSB9CiBbIERFRkVSUkFCTEUgfCBOT1Qg REVGRVJSQUJMRSBdIFsgSU5JVElBTExZIERFRkVSUkVEIHwgSU5JVElBTExZIElNTUVESUFU RSBdCkBAIC0xMTg4LDggKzExODgsOCBAQCBXSVRIICggTU9EVUxVUyA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+bnVtZXJpY19saXRlcmFsPC9yZXBsYWNlYWJsZT4sIFJFTQog ICAgPHZhcmxpc3RlbnRyeSBpZD0ic3FsLWNyZWF0ZXRhYmxlLXBhcm1zLXJlZmVyZW5jZXMi PgogICAgIDx0ZXJtPjxsaXRlcmFsPlJFRkVSRU5DRVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnJlZnRhYmxlPC9yZXBsYWNlYWJsZT4gWyAoIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5yZWZjb2x1bW48L3JlcGxhY2VhYmxlPiApIF0gWyBNQVRDSCA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bWF0Y2h0eXBlPC9yZXBsYWNlYWJsZT4gXSBb IE9OIERFTEVURSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmZXJlbnRpYWxf YWN0aW9uPC9yZXBsYWNlYWJsZT4gXSBbIE9OIFVQREFURSA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+cmVmZXJlbnRpYWxfYWN0aW9uPC9yZXBsYWNlYWJsZT4gXTwvbGl0ZXJh bD4gKGNvbHVtbiBjb25zdHJhaW50KTwvdGVybT4KIAotICAgPHRlcm0+PGxpdGVyYWw+Rk9S RUlHTiBLRVkgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8 L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSApCi0gICAgUkVGRVJFTkNFUyA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+cmVmdGFibGU8L3JlcGxhY2VhYmxlPiBbICggPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJlZmNvbHVtbjwvcmVwbGFjZWFibGU+IFssIC4uLiBd ICkgXQorICAgPHRlcm0+PGxpdGVyYWw+Rk9SRUlHTiBLRVkgKCA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSBbLCBQ RVJJT0QgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRlbXBvcmFsX2ludGVydmFs PC9yZXBsYWNlYWJsZT4gXSApCisgICAgUkVGRVJFTkNFUyA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+cmVmdGFibGU8L3JlcGxhY2VhYmxlPiBbICggPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPnJlZmNvbHVtbjwvcmVwbGFjZWFibGU+IFssIC4uLiBdIFssIFBF UklPRCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGVtcG9yYWxfaW50ZXJ2YWw8 L3JlcGxhY2VhYmxlPiBdICkgXQogICAgIFsgTUFUQ0ggPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPm1hdGNodHlwZTwvcmVwbGFjZWFibGU+IF0KICAgICBbIE9OIERFTEVURSA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmZXJlbnRpYWxfYWN0aW9uPC9yZXBs YWNlYWJsZT4gXQogICAgIFsgT04gVVBEQVRFIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5yZWZlcmVudGlhbF9hY3Rpb248L3JlcGxhY2VhYmxlPiBdPC9saXRlcmFsPgpAQCAt MTIwMCwxMSArMTIwMCwyOSBAQCBXSVRIICggTU9EVUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+bnVtZXJpY19saXRlcmFsPC9yZXBsYWNlYWJsZT4sIFJFTQogICAgICAg VGhlc2UgY2xhdXNlcyBzcGVjaWZ5IGEgZm9yZWlnbiBrZXkgY29uc3RyYWludCwgd2hpY2gg cmVxdWlyZXMKICAgICAgIHRoYXQgYSBncm91cCBvZiBvbmUgb3IgbW9yZSBjb2x1bW5zIG9m IHRoZSBuZXcgdGFibGUgbXVzdCBvbmx5CiAgICAgICBjb250YWluIHZhbHVlcyB0aGF0IG1h dGNoIHZhbHVlcyBpbiB0aGUgcmVmZXJlbmNlZAotICAgICAgY29sdW1uKHMpIG9mIHNvbWUg cm93IG9mIHRoZSByZWZlcmVuY2VkIHRhYmxlLiAgSWYgdGhlIDxyZXBsYWNlYWJsZQorICAg ICAgY29sdW1uKHMpIG9mIHNvbWUgcm93IG9mIHRoZSByZWZlcmVuY2VkIHRhYmxlLgorICAg ICAgSWYgdGhlIDxyZXBsYWNlYWJsZQogICAgICAgY2xhc3M9InBhcmFtZXRlciI+cmVmY29s dW1uPC9yZXBsYWNlYWJsZT4gbGlzdCBpcyBvbWl0dGVkLCB0aGUKICAgICAgIHByaW1hcnkg a2V5IG9mIHRoZSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmdGFibGU8L3Jl cGxhY2VhYmxlPgogICAgICAgaXMgdXNlZC4gIFRoZSByZWZlcmVuY2VkIGNvbHVtbnMgbXVz dCBiZSB0aGUgY29sdW1ucyBvZiBhIG5vbi1kZWZlcnJhYmxlCi0gICAgICB1bmlxdWUgb3Ig cHJpbWFyeSBrZXkgY29uc3RyYWludCBpbiB0aGUgcmVmZXJlbmNlZCB0YWJsZS4gIFRoZSB1 c2VyCisgICAgICB1bmlxdWUgb3IgcHJpbWFyeSBrZXkgY29uc3RyYWludCBpbiB0aGUgcmVm ZXJlbmNlZCB0YWJsZS4KKyAgICAgPC9wYXJhPgorCisgICAgIDxwYXJhPgorICAgICAgSWYg dGhlIGxhc3QgY29sdW1uIGlzIG1hcmtlZCB3aXRoIDxsaXRlcmFsPlBFUklPRDwvbGl0ZXJh bD4sCisgICAgICBpdCBtdXN0IGJlIGEgcGVyaW9kIG9yIHJhbmdlIGNvbHVtbiwgYW5kIHRo ZSByZWZlcmVuY2VkIHRhYmxlCisgICAgICBtdXN0IGhhdmUgYSB0ZW1wb3JhbCBwcmltYXJ5 IGtleS4KKyAgICAgIFRoZSBub24tPGxpdGVyYWw+UEVSSU9EPC9saXRlcmFsPiBjb2x1bW5z IGFyZSB0cmVhdGVkIG5vcm1hbGx5CisgICAgICAoYW5kIHRoZXJlIG11c3QgYmUgYXQgbGVh c3Qgb25lIG9mIHRoZW0pLAorICAgICAgYnV0IHRoZSA8bGl0ZXJhbD5QRVJJT0Q8L2xpdGVy YWw+IGNvbHVtbiBpcyBub3QgY29tcGFyZWQgZm9yIGVxdWFsaXR5LgorICAgICAgSW5zdGVh ZCB0aGUgY29uc3RyYWludCBpcyBjb25zaWRlcmVkIHNhdGlzZmllZAorICAgICAgaWYgdGhl IHJlZmVyZW5jZWQgdGFibGUgaGFzIG1hdGNoaW5nIHJlY29yZHMgd2hvc2UgY29tYmluZWQg cmFuZ2VzIGNvbXBsZXRlbHkgY292ZXIKKyAgICAgIHRoZSByZWZlcmVuY2luZyByZWNvcmQu CisgICAgICBJbiBvdGhlciB3b3JkcywgdGhlIHJlZmVyZW5jZSBtdXN0IGhhdmUgYSByZWZl cmVudCBmb3IgaXRzIGVudGlyZSBkdXJhdGlvbi4KKyAgICAgPC9wYXJhPgorCisgICAgIDxw YXJhPgorICAgICAgVGhlIHVzZXIKICAgICAgIG11c3QgaGF2ZSA8bGl0ZXJhbD5SRUZFUkVO Q0VTPC9saXRlcmFsPiBwZXJtaXNzaW9uIG9uIHRoZSByZWZlcmVuY2VkIHRhYmxlCiAgICAg ICAoZWl0aGVyIHRoZSB3aG9sZSB0YWJsZSwgb3IgdGhlIHNwZWNpZmljIHJlZmVyZW5jZWQg Y29sdW1ucykuICBUaGUKICAgICAgIGFkZGl0aW9uIG9mIGEgZm9yZWlnbiBrZXkgY29uc3Ry YWludCByZXF1aXJlcyBhCkBAIC0xMjc2LDcgKzEyOTQsMTAgQEAgV0lUSCAoIE1PRFVMVVMg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVyaWNfbGl0ZXJhbDwvcmVwbGFj ZWFibGU+LCBSRU0KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgIERlbGV0ZSBhbnkgcm93 cyByZWZlcmVuY2luZyB0aGUgZGVsZXRlZCByb3csIG9yIHVwZGF0ZSB0aGUKICAgICAgICAg ICB2YWx1ZXMgb2YgdGhlIHJlZmVyZW5jaW5nIGNvbHVtbihzKSB0byB0aGUgbmV3IHZhbHVl cyBvZiB0aGUKLSAgICAgICAgICByZWZlcmVuY2VkIGNvbHVtbnMsIHJlc3BlY3RpdmVseS4K KyAgICAgICAgICByZWZlcmVuY2VkIGNvbHVtbnMsIHJlc3BlY3RpdmVseS4gSW4gYSB0ZW1w b3JhbCBmb3JlaWduIGtleSwKKyAgICAgICAgICB0aGUgZGVsZXRlIHdpbGwgdXNlIDxsaXRl cmFsPkZPUiBQT1JUSU9OIE9GPC9saXRlcmFsPiBzZW1hbnRpY3MKKyAgICAgICAgICB0byBj b25zdHJhaW4gdGhlIGVmZmVjdCB0byB0aGUgYm91bmRzIG9mIHRoZSByZWZlcmVuY2VkIHJv dworICAgICAgICAgIGJlaW5nIGRlbGV0ZWQuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAg IDwvbGlzdGl0ZW0+CiAgICAgICAgPC92YXJsaXN0ZW50cnk+CkBAIC0xMjg5LDYgKzEzMTAs MTIgQEAgV0lUSCAoIE1PRFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51 bWVyaWNfbGl0ZXJhbDwvcmVwbGFjZWFibGU+LCBSRU0KICAgICAgICAgICByZWZlcmVuY2lu ZyBjb2x1bW5zLCB0byBudWxsLiBBIHN1YnNldCBvZiBjb2x1bW5zIGNhbiBvbmx5IGJlCiAg ICAgICAgICAgc3BlY2lmaWVkIGZvciA8bGl0ZXJhbD5PTiBERUxFVEU8L2xpdGVyYWw+IGFj dGlvbnMuCiAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgIDxwYXJhPgorICAgICAgICAg IEluIGEgdGVtcG9yYWwgZm9yZWlnbiBrZXksIHRoZSBjaGFuZ2Ugd2lsbCB1c2UgPGxpdGVy YWw+Rk9SCisgICAgICAgICAgUE9SVElPTiBPRjwvbGl0ZXJhbD4gc2VtYW50aWNzIHRvIGNv bnN0cmFpbiB0aGUgZWZmZWN0IHRvIHRoZSBib3VuZHMKKyAgICAgICAgICBvZiB0aGUgcmVm ZXJlbmNlZCByb3cuCisgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvbGlzdGl0ZW0+CiAg ICAgICAgPC92YXJsaXN0ZW50cnk+CiAKQEAgLTEzMDEsNiArMTMyOCw5IEBAIFdJVEggKCBN T0RVTFVTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVyYWw8 L3JlcGxhY2VhYmxlPiwgUkVNCiAgICAgICAgICAgY2FuIG9ubHkgYmUgc3BlY2lmaWVkIGZv ciA8bGl0ZXJhbD5PTiBERUxFVEU8L2xpdGVyYWw+IGFjdGlvbnMuCiAgICAgICAgICAgKFRo ZXJlIG11c3QgYmUgYSByb3cgaW4gdGhlIHJlZmVyZW5jZWQgdGFibGUgbWF0Y2hpbmcgdGhl IGRlZmF1bHQKICAgICAgICAgICB2YWx1ZXMsIGlmIHRoZXkgYXJlIG5vdCBudWxsLCBvciB0 aGUgb3BlcmF0aW9uIHdpbGwgZmFpbC4pCisgICAgICAgICAgSW4gYSB0ZW1wb3JhbCBmb3Jl aWduIGtleSwgdGhlIGNoYW5nZSB3aWxsIHVzZSA8bGl0ZXJhbD5GT1IgUE9SVElPTgorICAg ICAgICAgIE9GPC9saXRlcmFsPiBzZW1hbnRpY3MgdG8gY29uc3RyYWluIHRoZSBlZmZlY3Qg dG8gdGhlIGJvdW5kcyBvZiB0aGUKKyAgICAgICAgICByZWZlcmVuY2VkIHJvdy4KICAgICAg ICAgIDwvcGFyYT4KICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICA8L3Zhcmxpc3RlbnRy eT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaGVhcC5jIGIvc3JjL2JhY2tl bmQvY2F0YWxvZy9oZWFwLmMKaW5kZXggY2YzNjE5MjFiNC4uNmFiMmJiOWY3OCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0 YWxvZy9oZWFwLmMKQEAgLTIyMjAsNiArMjIyMCw3IEBAIFN0b3JlUmVsQ2hlY2soUmVsYXRp b24gcmVsLCBjb25zdCBjaGFyICpjY25hbWUsIE5vZGUgKmV4cHIsCiAJCQkJCQkJICBpc19u b19pbmhlcml0LAkvKiBjb25ub2luaGVyaXQgKi8KIAkJCQkJCQkgIGZhbHNlLAkvKiBjb250 ZW1wb3JhbCAqLwogCQkJCQkJCSAgSW52YWxpZE9pZCwJLyogY29ucGVyaW9kICovCisJCQkJ CQkJICBJbnZhbGlkT2lkLAkvKiBjb25mcGVyaW9kICovCiAJCQkJCQkJICBpc19pbnRlcm5h bCk7IC8qIGludGVybmFsbHkgY29uc3RydWN0ZWQ/ICovCiAKIAlwZnJlZShjY2Jpbik7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMgYi9zcmMvYmFja2VuZC9j YXRhbG9nL2luZGV4LmMKaW5kZXggZTY0OGJmNzNkMy4uOWY1ZDYyODk3MSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFs b2cvaW5kZXguYwpAQCAtMjAzOCw2ICsyMDM4LDcgQEAgaW5kZXhfY29uc3RyYWludF9jcmVh dGUoUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCQkJCQkJCQkgICBub2luaGVyaXQsCiAJCQkJ CQkJCSAgIGlzX3RlbXBvcmFsLAkvKiBjb250ZW1wb3JhbCAqLwogCQkJCQkJCQkgICBwZXJp b2RpZCwgLyogY29ucGVyaW9kICovCisJCQkJCQkJCSAgIEludmFsaWRPaWQsIC8qIGNvbmZw ZXJpb2QgKi8KIAkJCQkJCQkJICAgaXNfaW50ZXJuYWwpOwogCiAJLyoKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfY29uc3RyYWludC5jIGIvc3JjL2JhY2tlbmQvY2F0 YWxvZy9wZ19jb25zdHJhaW50LmMKaW5kZXggM2I1ZThjZjUzMy4uYzQ4OTk4YTM3ZCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19jb25zdHJhaW50LmMKKysrIGIvc3Jj L2JhY2tlbmQvY2F0YWxvZy9wZ19jb25zdHJhaW50LmMKQEAgLTgwLDYgKzgwLDcgQEAgQ3Jl YXRlQ29uc3RyYWludEVudHJ5KGNvbnN0IGNoYXIgKmNvbnN0cmFpbnROYW1lLAogCQkJCQkg IGJvb2wgY29uTm9Jbmhlcml0LAogCQkJCQkgIGJvb2wgY29uVGVtcG9yYWwsCiAJCQkJCSAg T2lkIHBlcmlvZCwKKwkJCQkJICBPaWQgZnBlcmlvZCwKIAkJCQkJICBib29sIGlzX2ludGVy bmFsKQogewogCVJlbGF0aW9uCWNvbkRlc2M7CkBAIC0xOTcsNiArMTk4LDcgQEAgQ3JlYXRl Q29uc3RyYWludEVudHJ5KGNvbnN0IGNoYXIgKmNvbnN0cmFpbnROYW1lLAogCXZhbHVlc1tB bnVtX3BnX2NvbnN0cmFpbnRfY29ubm9pbmhlcml0IC0gMV0gPSBCb29sR2V0RGF0dW0oY29u Tm9Jbmhlcml0KTsKIAl2YWx1ZXNbQW51bV9wZ19jb25zdHJhaW50X2NvbnRlbXBvcmFsIC0g MV0gPSBCb29sR2V0RGF0dW0oY29uVGVtcG9yYWwpOwogCXZhbHVlc1tBbnVtX3BnX2NvbnN0 cmFpbnRfY29ucGVyaW9kIC0gMV0gPSBPYmplY3RJZEdldERhdHVtKHBlcmlvZCk7CisJdmFs dWVzW0FudW1fcGdfY29uc3RyYWludF9jb25mcGVyaW9kIC0gMV0gPSBPYmplY3RJZEdldERh dHVtKGZwZXJpb2QpOwogCiAJaWYgKGNvbmtleUFycmF5KQogCQl2YWx1ZXNbQW51bV9wZ19j b25zdHJhaW50X2NvbmtleSAtIDFdID0gUG9pbnRlckdldERhdHVtKGNvbmtleUFycmF5KTsK QEAgLTMwMyw3ICszMDUsNyBAQCBDcmVhdGVDb25zdHJhaW50RW50cnkoY29uc3QgY2hhciAq Y29uc3RyYWludE5hbWUsCiAJewogCQkvKgogCQkgKiBSZWdpc3RlciBub3JtYWwgZGVwZW5k ZW5jeSBmcm9tIGNvbnN0cmFpbnQgdG8gZm9yZWlnbiByZWxhdGlvbiwgb3IKLQkJICogdG8g c3BlY2lmaWMgY29sdW1uKHMpIGlmIGFueSBhcmUgbWVudGlvbmVkLgorCQkgKiB0byBzcGVj aWZpYyBjb2x1bW4ocykgYW5kIHBlcmlvZCBpZiBhbnkgYXJlIG1lbnRpb25lZC4KIAkJICov CiAJCU9iamVjdEFkZHJlc3MgcmVsb2JqZWN0OwogCkBAIC0zMjEsNiArMzIzLDE0IEBAIENy ZWF0ZUNvbnN0cmFpbnRFbnRyeShjb25zdCBjaGFyICpjb25zdHJhaW50TmFtZSwKIAkJCU9i amVjdEFkZHJlc3NTZXQocmVsb2JqZWN0LCBSZWxhdGlvblJlbGF0aW9uSWQsIGZvcmVpZ25S ZWxJZCk7CiAJCQlhZGRfZXhhY3Rfb2JqZWN0X2FkZHJlc3MoJnJlbG9iamVjdCwgYWRkcnNf bm9ybWFsKTsKIAkJfQorCisJCWlmIChPaWRJc1ZhbGlkKGZwZXJpb2QpKQorCQl7CisJCQlP YmplY3RBZGRyZXNzIHBlcmlvZG9iamVjdDsKKworCQkJT2JqZWN0QWRkcmVzc1NldChwZXJp b2RvYmplY3QsIFBlcmlvZFJlbGF0aW9uSWQsIGZwZXJpb2QpOworCQkJYWRkX2V4YWN0X29i amVjdF9hZGRyZXNzKCZwZXJpb2RvYmplY3QsIGFkZHJzX25vcm1hbCk7CisJCX0KIAl9CiAK IAlpZiAoT2lkSXNWYWxpZChpbmRleFJlbElkKSAmJiBjb25zdHJhaW50VHlwZSA9PSBDT05T VFJBSU5UX0ZPUkVJR04pCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJs ZWNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCmluZGV4IDYxMTdl ZGM2ODQuLmY2MGViNDdjZWEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3Rh YmxlY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCkBAIC0z ODMsMTkgKzM4MywyNCBAQCBzdGF0aWMgT2JqZWN0QWRkcmVzcyBBVEV4ZWNWYWxpZGF0ZUNv bnN0cmFpbnQoTGlzdCAqKndxdWV1ZSwKIAkJCQkJCQkJCQkJICBib29sIHJlY3Vyc2UsIGJv b2wgcmVjdXJzaW5nLCBMT0NLTU9ERSBsb2NrbW9kZSk7CiBzdGF0aWMgaW50CXRyYW5zZm9y bUNvbHVtbk5hbWVMaXN0KE9pZCByZWxJZCwgTGlzdCAqY29sTGlzdCwKIAkJCQkJCQkJCWlu dDE2ICphdHRudW1zLCBPaWQgKmF0dHR5cGlkcyk7CitzdGF0aWMgdm9pZAl0cmFuc2Zvcm1Q ZXJpb2ROYW1lKE9pZCByZWxJZCwgTm9kZSAqcGVyaW9kTmFtZSwKKwkJCQkJCQkJaW50MTYg KmF0dG51bXMsIE9pZCAqYXR0dHlwaWRzLCBPaWQgKnBlcmlvZGlkKTsKIHN0YXRpYyBpbnQJ dHJhbnNmb3JtRmtleUdldFByaW1hcnlLZXkoUmVsYXRpb24gcGtyZWwsIE9pZCAqaW5kZXhP aWQsCiAJCQkJCQkJCQkgICBMaXN0ICoqYXR0bmFtZWxpc3QsCiAJCQkJCQkJCQkgICBpbnQx NiAqYXR0bnVtcywgT2lkICphdHR0eXBpZHMsCisJCQkJCQkJCQkJIE5vZGUgKipwZXJpb2Rh dHRuYW1lLCBPaWQgKnBlcmlvZGlkLAorCQkJCQkJCQkJCSBpbnQxNiAqcGVyaW9kYXR0bnVt cywgT2lkICpwZXJpb2RhdHR0eXBpZHMsCiAJCQkJCQkJCQkgICBPaWQgKm9wY2xhc3Nlcyk7 CiBzdGF0aWMgT2lkCXRyYW5zZm9ybUZrZXlDaGVja0F0dHJzKFJlbGF0aW9uIHBrcmVsLAog CQkJCQkJCQkJaW50IG51bWF0dHJzLCBpbnQxNiAqYXR0bnVtcywKLQkJCQkJCQkJCU9pZCAq b3BjbGFzc2VzKTsKKwkJCQkJCQkJCWJvb2wgaXNfdGVtcG9yYWwsIGludDE2ICpwZXJpb2Rh dHRudW1zLAorCQkJCQkJCQkJT2lkIHBlcmlvZGlkLCBPaWQgKm9wY2xhc3Nlcyk7CiBzdGF0 aWMgdm9pZCBjaGVja0ZrZXlQZXJtaXNzaW9ucyhSZWxhdGlvbiByZWwsIGludDE2ICphdHRu dW1zLCBpbnQgbmF0dHMpOwogc3RhdGljIENvZXJjaW9uUGF0aFR5cGUgZmluZEZrZXlDYXN0 KE9pZCB0YXJnZXRUeXBlSWQsIE9pZCBzb3VyY2VUeXBlSWQsCiAJCQkJCQkJCQkgT2lkICpm dW5jaWQpOwogc3RhdGljIHZvaWQgdmFsaWRhdGVGb3JlaWduS2V5Q29uc3RyYWludChjaGFy ICpjb25uYW1lLAogCQkJCQkJCQkJCSBSZWxhdGlvbiByZWwsIFJlbGF0aW9uIHBrcmVsLAot CQkJCQkJCQkJCSBPaWQgcGtpbmRPaWQsIE9pZCBjb25zdHJhaW50T2lkKTsKKwkJCQkJCQkJ CQkgT2lkIHBraW5kT2lkLCBPaWQgY29uc3RyYWludE9pZCwgYm9vbCB0ZW1wb3JhbCk7CiBz dGF0aWMgdm9pZCBBVENvbnRyb2xsZXIoQWx0ZXJUYWJsZVN0bXQgKnBhcnNldHJlZSwKIAkJ CQkJCSBSZWxhdGlvbiByZWwsIExpc3QgKmNtZHMsIGJvb2wgcmVjdXJzZSwgTE9DS01PREUg bG9ja21vZGUsCiAJCQkJCQkgQWx0ZXJUYWJsZVV0aWxpdHlDb250ZXh0ICpjb250ZXh0KTsK QEAgLTUxMSw3ICs1MTYsOCBAQCBzdGF0aWMgT2JqZWN0QWRkcmVzcyBhZGRGa1JlY3Vyc2VS ZWZlcmVuY2VkKExpc3QgKip3cXVldWUsIENvbnN0cmFpbnQgKmZrY29uc3RyYQogCQkJCQkJ CQkJCQlPaWQgKnBmZXFvcGVyYXRvcnMsIE9pZCAqcHBlcW9wZXJhdG9ycywgT2lkICpmZmVx b3BlcmF0b3JzLAogCQkJCQkJCQkJCQlpbnQgbnVtZmtkZWxzZXRjb2xzLCBpbnQxNiAqZmtk ZWxzZXRjb2xzLAogCQkJCQkJCQkJCQlib29sIG9sZF9jaGVja19vaywKLQkJCQkJCQkJCQkJ T2lkIHBhcmVudERlbFRyaWdnZXIsIE9pZCBwYXJlbnRVcGRUcmlnZ2VyKTsKKwkJCQkJCQkJ CQkJT2lkIHBhcmVudERlbFRyaWdnZXIsIE9pZCBwYXJlbnRVcGRUcmlnZ2VyLAorCQkJCQkJ CQkJCQlib29sIGlzX3RlbXBvcmFsLCBPaWQgcGtwZXJpb2QsIE9pZCBma3BlcmlvZCk7CiBz dGF0aWMgdm9pZCB2YWxpZGF0ZUZrT25EZWxldGVTZXRDb2x1bW5zKGludCBudW1ma3MsIGNv bnN0IGludDE2ICpma2F0dG51bXMsCiAJCQkJCQkJCQkJIGludCBudW1ma3NldGNvbHMsIGNv bnN0IGludDE2ICpma3NldGNvbHNhdHRudW1zLAogCQkJCQkJCQkJCSBMaXN0ICpma3NldGNv bHMpOwpAQCAtNTIxLDcgKzUyNyw5IEBAIHN0YXRpYyB2b2lkIGFkZEZrUmVjdXJzZVJlZmVy ZW5jaW5nKExpc3QgKip3cXVldWUsIENvbnN0cmFpbnQgKmZrY29uc3RyYWludCwKIAkJCQkJ CQkJCU9pZCAqcGZlcW9wZXJhdG9ycywgT2lkICpwcGVxb3BlcmF0b3JzLCBPaWQgKmZmZXFv cGVyYXRvcnMsCiAJCQkJCQkJCQlpbnQgbnVtZmtkZWxzZXRjb2xzLCBpbnQxNiAqZmtkZWxz ZXRjb2xzLAogCQkJCQkJCQkJYm9vbCBvbGRfY2hlY2tfb2ssIExPQ0tNT0RFIGxvY2ttb2Rl LAotCQkJCQkJCQkJT2lkIHBhcmVudEluc1RyaWdnZXIsIE9pZCBwYXJlbnRVcGRUcmlnZ2Vy KTsKKwkJCQkJCQkJCU9pZCBwYXJlbnRJbnNUcmlnZ2VyLCBPaWQgcGFyZW50VXBkVHJpZ2dl ciwKKwkJCQkJCQkJCWJvb2wgaXNfdGVtcG9yYWwsIE9pZCBwa3BlcmlvZCwgT2lkIGZrcGVy aW9kKTsKKwogc3RhdGljIHZvaWQgQ2xvbmVGb3JlaWduS2V5Q29uc3RyYWludHMoTGlzdCAq KndxdWV1ZSwgUmVsYXRpb24gcGFyZW50UmVsLAogCQkJCQkJCQkJICAgUmVsYXRpb24gcGFy dGl0aW9uUmVsKTsKIHN0YXRpYyB2b2lkIENsb25lRmtSZWZlcmVuY2VkKFJlbGF0aW9uIHBh cmVudFJlbCwgUmVsYXRpb24gcGFydGl0aW9uUmVsKTsKQEAgLTU1Myw2ICs1NjEsMTIgQEAg c3RhdGljIHZvaWQgR2V0Rm9yZWlnbktleUNoZWNrVHJpZ2dlcnMoUmVsYXRpb24gdHJpZ3Jl bCwKIAkJCQkJCQkJCSAgIE9pZCBjb25vaWQsIE9pZCBjb25mcmVsaWQsIE9pZCBjb25yZWxp ZCwKIAkJCQkJCQkJCSAgIE9pZCAqaW5zZXJ0VHJpZ2dlck9pZCwKIAkJCQkJCQkJCSAgIE9p ZCAqdXBkYXRlVHJpZ2dlck9pZCk7CitzdGF0aWMgdm9pZCBGaW5kRktDb21wYXJpc29uT3Bl cmF0b3JzKENvbnN0cmFpbnQgKmZrY29uc3RyYWludCwKKwkJCQkJQWx0ZXJlZFRhYmxlSW5m byAqdGFiLCBpbnQgaSwgaW50MTYgKmZrYXR0bnVtLAorCQkJCQlib29sICpvbGRfY2hlY2tf b2ssIExpc3RDZWxsICoqb2xkX3BmZXFvcF9pdGVtLAorCQkJCQlPaWQgcGt0eXBlLCBPaWQg Zmt0eXBlLCBPaWQgb3BjbGFzcywKKwkJCQkJYm9vbCBpc190ZW1wb3JhbCwgYm9vbCBmb3Jf b3ZlcmxhcHMsCisJCQkJCU9pZCAqcGZlcW9wT3V0LCBPaWQgKnBwZXFvcE91dCwgT2lkICpm ZmVxb3BPdXQpOwogc3RhdGljIHZvaWQgQVRFeGVjRHJvcENvbnN0cmFpbnQoUmVsYXRpb24g cmVsLCBjb25zdCBjaGFyICpjb25zdHJOYW1lLAogCQkJCQkJCQkgRHJvcEJlaGF2aW9yIGJl aGF2aW9yLAogCQkJCQkJCQkgYm9vbCByZWN1cnNlLCBib29sIHJlY3Vyc2luZywKQEAgLTYw NDEsNyArNjA1NSw4IEBAIEFUUmV3cml0ZVRhYmxlcyhBbHRlclRhYmxlU3RtdCAqcGFyc2V0 cmVlLCBMaXN0ICoqd3F1ZXVlLCBMT0NLTU9ERSBsb2NrbW9kZSwKIAogCQkJCXZhbGlkYXRl Rm9yZWlnbktleUNvbnN0cmFpbnQoZmtjb25zdHJhaW50LT5jb25uYW1lLCByZWwsIHJlZnJl bCwKIAkJCQkJCQkJCQkJIGNvbi0+cmVmaW5kaWQsCi0JCQkJCQkJCQkJCSBjb24tPmNvbmlk KTsKKwkJCQkJCQkJCQkJIGNvbi0+Y29uaWQsCisJCQkJCQkJCQkJCSBjb24tPmNvbnRlbXBv cmFsKTsKIAogCQkJCS8qCiAJCQkJICogTm8gbmVlZCB0byBtYXJrIHRoZSBjb25zdHJhaW50 IHJvdyBhcyB2YWxpZGF0ZWQsIHdlIGRpZApAQCAtOTY4MywxMiArOTY5OCwxOSBAQCBBVEFk ZEZvcmVpZ25LZXlDb25zdHJhaW50KExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8g KnRhYiwgUmVsYXRpb24gcmVsLAogCU9pZAkJCXBwZXFvcGVyYXRvcnNbSU5ERVhfTUFYX0tF WVNdID0gezB9OwogCU9pZAkJCWZmZXFvcGVyYXRvcnNbSU5ERVhfTUFYX0tFWVNdID0gezB9 OwogCWludDE2CQlma2RlbHNldGNvbHNbSU5ERVhfTUFYX0tFWVNdID0gezB9OworCWJvb2wJ CWlzX3RlbXBvcmFsID0gKGZrY29uc3RyYWludC0+ZmtfcGVyaW9kICE9IE5VTEwpOworCWlu dDE2CQlwa3BlcmlvZGF0dG51bXNbMl0gPSB7MH07CisJaW50MTYJCWZrcGVyaW9kYXR0bnVt c1syXSA9IHswfTsKKwlPaWQJCQlwa3BlcmlvZHR5cG9pZHNbMl0gPSB7MH07CisJT2lkCQkJ ZmtwZXJpb2R0eXBvaWRzWzJdID0gezB9OwogCWludAkJCWk7CiAJaW50CQkJbnVtZmtzLAog CQkJCW51bXBrcywKIAkJCQludW1ma2RlbHNldGNvbHM7CiAJT2lkCQkJaW5kZXhPaWQ7CiAJ Ym9vbAkJb2xkX2NoZWNrX29rOworCU9pZAkJCWZrcGVyaW9kID0gSW52YWxpZE9pZDsKKwlP aWQJCQlwa3BlcmlvZCA9IEludmFsaWRPaWQ7CiAJT2JqZWN0QWRkcmVzcyBhZGRyZXNzOwog CUxpc3RDZWxsICAgKm9sZF9wZmVxb3BfaXRlbSA9IGxpc3RfaGVhZChma2NvbnN0cmFpbnQt Pm9sZF9jb25wZmVxb3ApOwogCkBAIC05Nzc3LDYgKzk3OTksMjEgQEAgQVRBZGRGb3JlaWdu S2V5Q29uc3RyYWludChMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJl bGF0aW9uIHJlbCwKIAludW1ma3MgPSB0cmFuc2Zvcm1Db2x1bW5OYW1lTGlzdChSZWxhdGlv bkdldFJlbGlkKHJlbCksCiAJCQkJCQkJCQkgZmtjb25zdHJhaW50LT5ma19hdHRycywKIAkJ CQkJCQkJCSBma2F0dG51bSwgZmt0eXBvaWQpOworCWlmIChpc190ZW1wb3JhbCkKKwl7CisJ CS8qCisJCSAqIEZpcnN0IHNlZSBpZiB3ZSBoYXZlIGEgcGVyaW9kIG5hbWUsIG90aGVyd2lz ZSBsb29rIGZvciBhIHJhbmdlIGNvbHVtbi4KKwkJICogSWYgaXQncyBhIHBlcmlvZCwgZ2V0 IHRoZSBhdHRudW1zIG9mIGJvdGggc3RhcnQgJiBlbmQgY29sdW1ucywKKwkJICogYnV0IGlu c3RlYWQgb2YgdGhlaXIgdHlwZXMgZ2V0IHBlcmlvZCdzIHJhbmdldHlwZS4KKwkJICovCisJ CXRyYW5zZm9ybVBlcmlvZE5hbWUoUmVsYXRpb25HZXRSZWxpZChyZWwpLAorCQkJCWZrY29u c3RyYWludC0+ZmtfcGVyaW9kLCBma3BlcmlvZGF0dG51bXMsIGZrcGVyaW9kdHlwb2lkcywg JmZrcGVyaW9kKTsKKworCQlpZiAoZmtwZXJpb2QgPT0gSW52YWxpZE9pZCkKKwkJCXRyYW5z Zm9ybUNvbHVtbk5hbWVMaXN0KFJlbGF0aW9uR2V0UmVsaWQocmVsKSwKKwkJCQkJCQkJICBs aXN0X21ha2UxKGZrY29uc3RyYWludC0+ZmtfcGVyaW9kKSwKKwkJCQkJCQkJICBma3Blcmlv ZGF0dG51bXMsIGZrcGVyaW9kdHlwb2lkcyk7CisJfQogCiAJbnVtZmtkZWxzZXRjb2xzID0g dHJhbnNmb3JtQ29sdW1uTmFtZUxpc3QoUmVsYXRpb25HZXRSZWxpZChyZWwpLAogCQkJCQkJ CQkJCQkgIGZrY29uc3RyYWludC0+ZmtfZGVsX3NldF9jb2xzLApAQCAtOTc5Niw2ICs5ODMz LDkgQEAgQVRBZGRGb3JlaWduS2V5Q29uc3RyYWludChMaXN0ICoqd3F1ZXVlLCBBbHRlcmVk VGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIAkJbnVtcGtzID0gdHJhbnNmb3JtRmtl eUdldFByaW1hcnlLZXkocGtyZWwsICZpbmRleE9pZCwKIAkJCQkJCQkJCQkJJmZrY29uc3Ry YWludC0+cGtfYXR0cnMsCiAJCQkJCQkJCQkJCXBrYXR0bnVtLCBwa3R5cG9pZCwKKwkJCQkJ CQkJCQkJJmZrY29uc3RyYWludC0+cGtfcGVyaW9kLAorCQkJCQkJCQkJCQkmcGtwZXJpb2Qs CisJCQkJCQkJCQkJCXBrcGVyaW9kYXR0bnVtcywgcGtwZXJpb2R0eXBvaWRzLAogCQkJCQkJ CQkJCQlvcGNsYXNzZXMpOwogCX0KIAllbHNlCkBAIC05ODAzLDggKzk4NDMsMTkgQEAgQVRB ZGRGb3JlaWduS2V5Q29uc3RyYWludChMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZv ICp0YWIsIFJlbGF0aW9uIHJlbCwKIAkJbnVtcGtzID0gdHJhbnNmb3JtQ29sdW1uTmFtZUxp c3QoUmVsYXRpb25HZXRSZWxpZChwa3JlbCksCiAJCQkJCQkJCQkJIGZrY29uc3RyYWludC0+ cGtfYXR0cnMsCiAJCQkJCQkJCQkJIHBrYXR0bnVtLCBwa3R5cG9pZCk7CisJCWlmIChpc190 ZW1wb3JhbCkgeworCQkJdHJhbnNmb3JtUGVyaW9kTmFtZShSZWxhdGlvbkdldFJlbGlkKHBr cmVsKSwKKwkJCQkJZmtjb25zdHJhaW50LT5wa19wZXJpb2QsIHBrcGVyaW9kYXR0bnVtcywg cGtwZXJpb2R0eXBvaWRzLCAmcGtwZXJpb2QpOworCisJCQlpZiAocGtwZXJpb2QgPT0gSW52 YWxpZE9pZCkKKwkJCQl0cmFuc2Zvcm1Db2x1bW5OYW1lTGlzdChSZWxhdGlvbkdldFJlbGlk KHBrcmVsKSwKKwkJCQkJCQkJCQlsaXN0X21ha2UxKGZrY29uc3RyYWludC0+cGtfcGVyaW9k KSwKKwkJCQkJCQkJCQlwa3BlcmlvZGF0dG51bXMsIHBrcGVyaW9kdHlwb2lkcyk7CisJCX0K IAkJLyogTG9vayBmb3IgYW4gaW5kZXggbWF0Y2hpbmcgdGhlIGNvbHVtbiBsaXN0ICovCiAJ CWluZGV4T2lkID0gdHJhbnNmb3JtRmtleUNoZWNrQXR0cnMocGtyZWwsIG51bXBrcywgcGth dHRudW0sCisJCQkJCQkJCQkJICAgaXNfdGVtcG9yYWwsIHBrcGVyaW9kYXR0bnVtcywKKwkJ CQkJCQkJCQkgICBwa3BlcmlvZCwKIAkJCQkJCQkJCQkgICBvcGNsYXNzZXMpOwogCX0KIApA QCAtOTg2MywxODcgKzk5MTQsNDMgQEAgQVRBZGRGb3JlaWduS2V5Q29uc3RyYWludChMaXN0 ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIAogCWZv ciAoaSA9IDA7IGkgPCBudW1wa3M7IGkrKykKIAl7Ci0JCU9pZAkJCXBrdHlwZSA9IHBrdHlw b2lkW2ldOwotCQlPaWQJCQlma3R5cGUgPSBma3R5cG9pZFtpXTsKLQkJT2lkCQkJZmt0eXBl ZDsKLQkJSGVhcFR1cGxlCWNsYV9odDsKLQkJRm9ybV9wZ19vcGNsYXNzIGNsYV90dXA7Ci0J CU9pZAkJCWFtaWQ7Ci0JCU9pZAkJCW9wZmFtaWx5OwotCQlPaWQJCQlvcGNpbnR5cGU7Ci0J CU9pZAkJCXBmZXFvcDsKLQkJT2lkCQkJcHBlcW9wOwotCQlPaWQJCQlmZmVxb3A7Ci0JCWlu dDE2CQllcXN0cmF0ZWd5OwotCQlPaWQJCQlwZmVxb3BfcmlnaHQ7Ci0KLQkJLyogV2UgbmVl ZCBzZXZlcmFsIGZpZWxkcyBvdXQgb2YgdGhlIHBnX29wY2xhc3MgZW50cnkgKi8KLQkJY2xh X2h0ID0gU2VhcmNoU3lzQ2FjaGUxKENMQU9JRCwgT2JqZWN0SWRHZXREYXR1bShvcGNsYXNz ZXNbaV0pKTsKLQkJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKGNsYV9odCkpCi0JCQllbG9nKEVS Uk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3Igb3BjbGFzcyAldSIsIG9wY2xhc3Nlc1tp XSk7Ci0JCWNsYV90dXAgPSAoRm9ybV9wZ19vcGNsYXNzKSBHRVRTVFJVQ1QoY2xhX2h0KTsK LQkJYW1pZCA9IGNsYV90dXAtPm9wY21ldGhvZDsKLQkJb3BmYW1pbHkgPSBjbGFfdHVwLT5v cGNmYW1pbHk7Ci0JCW9wY2ludHlwZSA9IGNsYV90dXAtPm9wY2ludHlwZTsKLQkJUmVsZWFz ZVN5c0NhY2hlKGNsYV9odCk7Ci0KLQkJLyoKLQkJICogQ2hlY2sgaXQncyBhIGJ0cmVlOyBj dXJyZW50bHkgdGhpcyBjYW4gbmV2ZXIgZmFpbCBzaW5jZSBubyBvdGhlcgotCQkgKiBpbmRl eCBBTXMgc3VwcG9ydCB1bmlxdWUgaW5kZXhlcy4gIElmIHdlIGV2ZXIgZGlkIGhhdmUgb3Ro ZXIgdHlwZXMKLQkJICogb2YgdW5pcXVlIGluZGV4ZXMsIHdlJ2QgbmVlZCBhIHdheSB0byBk ZXRlcm1pbmUgd2hpY2ggb3BlcmF0b3IKLQkJICogc3RyYXRlZ3kgbnVtYmVyIGlzIGVxdWFs aXR5LiAgKElzIGl0IHJlYXNvbmFibGUgdG8gaW5zaXN0IHRoYXQKLQkJICogZXZlcnkgc3Vj aCBpbmRleCBBTSB1c2UgYnRyZWUncyBudW1iZXIgZm9yIGVxdWFsaXR5PykKLQkJICovCi0J CWlmIChhbWlkICE9IEJUUkVFX0FNX09JRCkKLQkJCWVsb2coRVJST1IsICJvbmx5IGItdHJl ZSBpbmRleGVzIGFyZSBzdXBwb3J0ZWQgZm9yIGZvcmVpZ24ga2V5cyIpOwotCQllcXN0cmF0 ZWd5ID0gQlRFcXVhbFN0cmF0ZWd5TnVtYmVyOwotCi0JCS8qCi0JCSAqIFRoZXJlIGhhZCBi ZXR0ZXIgYmUgYSBwcmltYXJ5IGVxdWFsaXR5IG9wZXJhdG9yIGZvciB0aGUgaW5kZXguCi0J CSAqIFdlJ2xsIHVzZSBpdCBmb3IgUEsgPSBQSyBjb21wYXJpc29ucy4KLQkJICovCi0JCXBw ZXFvcCA9IGdldF9vcGZhbWlseV9tZW1iZXIob3BmYW1pbHksIG9wY2ludHlwZSwgb3BjaW50 eXBlLAotCQkJCQkJCQkJIGVxc3RyYXRlZ3kpOwotCi0JCWlmICghT2lkSXNWYWxpZChwcGVx b3ApKQotCQkJZWxvZyhFUlJPUiwgIm1pc3Npbmcgb3BlcmF0b3IgJWQoJXUsJXUpIGluIG9w ZmFtaWx5ICV1IiwKLQkJCQkgZXFzdHJhdGVneSwgb3BjaW50eXBlLCBvcGNpbnR5cGUsIG9w ZmFtaWx5KTsKLQotCQkvKgotCQkgKiBBcmUgdGhlcmUgZXF1YWxpdHkgb3BlcmF0b3JzIHRo YXQgdGFrZSBleGFjdGx5IHRoZSBGSyB0eXBlPyBBc3N1bWUKLQkJICogd2Ugc2hvdWxkIGxv b2sgdGhyb3VnaCBhbnkgZG9tYWluIGhlcmUuCi0JCSAqLwotCQlma3R5cGVkID0gZ2V0QmFz ZVR5cGUoZmt0eXBlKTsKLQotCQlwZmVxb3AgPSBnZXRfb3BmYW1pbHlfbWVtYmVyKG9wZmFt aWx5LCBvcGNpbnR5cGUsIGZrdHlwZWQsCi0JCQkJCQkJCQkgZXFzdHJhdGVneSk7Ci0JCWlm IChPaWRJc1ZhbGlkKHBmZXFvcCkpCisJCUZpbmRGS0NvbXBhcmlzb25PcGVyYXRvcnMoCisJ CQkJZmtjb25zdHJhaW50LCB0YWIsIGksIGZrYXR0bnVtLAorCQkJCSZvbGRfY2hlY2tfb2ss ICZvbGRfcGZlcW9wX2l0ZW0sCisJCQkJcGt0eXBvaWRbaV0sIGZrdHlwb2lkW2ldLCBvcGNs YXNzZXNbaV0sCisJCQkJaXNfdGVtcG9yYWwsIGZhbHNlLAorCQkJCSZwZmVxb3BlcmF0b3Jz W2ldLCAmcHBlcW9wZXJhdG9yc1tpXSwgJmZmZXFvcGVyYXRvcnNbaV0pOworCX0KKwlpZiAo aXNfdGVtcG9yYWwpIHsKKwkJaWYgKHBrcGVyaW9kID09IEludmFsaWRPaWQpCiAJCXsKLQkJ CXBmZXFvcF9yaWdodCA9IGZrdHlwZWQ7Ci0JCQlmZmVxb3AgPSBnZXRfb3BmYW1pbHlfbWVt YmVyKG9wZmFtaWx5LCBma3R5cGVkLCBma3R5cGVkLAotCQkJCQkJCQkJCSBlcXN0cmF0ZWd5 KTsKKwkJCXBrYXR0bnVtW251bXBrc10gPSBwa3BlcmlvZGF0dG51bXNbMF07CisJCQlwa3R5 cG9pZFtudW1wa3NdID0gcGtwZXJpb2R0eXBvaWRzWzBdOwogCQl9CiAJCWVsc2UKIAkJewot CQkJLyoga2VlcCBjb21waWxlciBxdWlldCAqLwotCQkJcGZlcW9wX3JpZ2h0ID0gSW52YWxp ZE9pZDsKLQkJCWZmZXFvcCA9IEludmFsaWRPaWQ7Ci0JCX0KLQotCQlpZiAoIShPaWRJc1Zh bGlkKHBmZXFvcCkgJiYgT2lkSXNWYWxpZChmZmVxb3ApKSkKLQkJewotCQkJLyoKLQkJCSAq IE90aGVyd2lzZSwgbG9vayBmb3IgYW4gaW1wbGljaXQgY2FzdCBmcm9tIHRoZSBGSyB0eXBl IHRvIHRoZQotCQkJICogb3BjaW50eXBlLCBhbmQgaWYgZm91bmQsIHVzZSB0aGUgcHJpbWFy eSBlcXVhbGl0eSBvcGVyYXRvci4KLQkJCSAqIFRoaXMgaXMgYSBiaXQgdHJpY2t5IGJlY2F1 c2Ugb3BjaW50eXBlIG1pZ2h0IGJlIGEgcG9seW1vcnBoaWMKLQkJCSAqIHR5cGUgc3VjaCBh cyBBTllBUlJBWSBvciBBTllFTlVNOyBzbyB3aGF0IHdlIGhhdmUgdG8gdGVzdCBpcwotCQkJ ICogd2hldGhlciB0aGUgdHdvIGFjdHVhbCBjb2x1bW4gdHlwZXMgY2FuIGJlIGNvbmN1cnJl bnRseSBjYXN0IHRvCi0JCQkgKiB0aGF0IHR5cGUuICAoT3RoZXJ3aXNlLCB3ZSdkIGZhaWwg dG8gcmVqZWN0IGNvbWJpbmF0aW9ucyBzdWNoCi0JCQkgKiBhcyBpbnRbXSBhbmQgcG9pbnRb XS4pCi0JCQkgKi8KLQkJCU9pZAkJCWlucHV0X3R5cGVpZHNbMl07Ci0JCQlPaWQJCQl0YXJn ZXRfdHlwZWlkc1syXTsKLQotCQkJaW5wdXRfdHlwZWlkc1swXSA9IHBrdHlwZTsKLQkJCWlu cHV0X3R5cGVpZHNbMV0gPSBma3R5cGU7Ci0JCQl0YXJnZXRfdHlwZWlkc1swXSA9IG9wY2lu dHlwZTsKLQkJCXRhcmdldF90eXBlaWRzWzFdID0gb3BjaW50eXBlOwotCQkJaWYgKGNhbl9j b2VyY2VfdHlwZSgyLCBpbnB1dF90eXBlaWRzLCB0YXJnZXRfdHlwZWlkcywKLQkJCQkJCQkJ Q09FUkNJT05fSU1QTElDSVQpKQotCQkJewotCQkJCXBmZXFvcCA9IGZmZXFvcCA9IHBwZXFv cDsKLQkJCQlwZmVxb3BfcmlnaHQgPSBvcGNpbnR5cGU7Ci0JCQl9CisJCQlwa2F0dG51bVtu dW1wa3NdID0gSW52YWxpZE9pZDsKKwkJCXBrdHlwb2lkW251bXBrc10gPSBJbnZhbGlkT2lk OwogCQl9Ci0KLQkJaWYgKCEoT2lkSXNWYWxpZChwZmVxb3ApICYmIE9pZElzVmFsaWQoZmZl cW9wKSkpCi0JCQllcmVwb3J0KEVSUk9SLAotCQkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFU WVBFX01JU01BVENIKSwKLQkJCQkJIGVycm1zZygiZm9yZWlnbiBrZXkgY29uc3RyYWludCBc IiVzXCIgY2Fubm90IGJlIGltcGxlbWVudGVkIiwKLQkJCQkJCQlma2NvbnN0cmFpbnQtPmNv bm5hbWUpLAotCQkJCQkgZXJyZGV0YWlsKCJLZXkgY29sdW1ucyBcIiVzXCIgYW5kIFwiJXNc IiAiCi0JCQkJCQkJICAgImFyZSBvZiBpbmNvbXBhdGlibGUgdHlwZXM6ICVzIGFuZCAlcy4i LAotCQkJCQkJCSAgIHN0clZhbChsaXN0X250aChma2NvbnN0cmFpbnQtPmZrX2F0dHJzLCBp KSksCi0JCQkJCQkJICAgc3RyVmFsKGxpc3RfbnRoKGZrY29uc3RyYWludC0+cGtfYXR0cnMs IGkpKSwKLQkJCQkJCQkgICBmb3JtYXRfdHlwZV9iZShma3R5cGUpLAotCQkJCQkJCSAgIGZv cm1hdF90eXBlX2JlKHBrdHlwZSkpKSk7Ci0KLQkJaWYgKG9sZF9jaGVja19vaykKKwkJaWYg KGZrcGVyaW9kID09IEludmFsaWRPaWQpCiAJCXsKLQkJCS8qCi0JCQkgKiBXaGVuIGEgcGZl cW9wIGNoYW5nZXMsIHJldmFsaWRhdGUgdGhlIGNvbnN0cmFpbnQuICBXZSBjb3VsZAotCQkJ ICogcGVybWl0IGludHJhLW9wZmFtaWx5IGNoYW5nZXMsIGJ1dCB0aGF0IGFkZHMgc3VidGxl IGNvbXBsZXhpdHkKLQkJCSAqIHdpdGhvdXQgYW55IGNvbmNyZXRlIGJlbmVmaXQgZm9yIGNv cmUgdHlwZXMuICBXZSBuZWVkIG5vdAotCQkJICogYXNzZXNzIHBwZXFvcCBvciBmZmVxb3As IHdoaWNoIFJJX0luaXRpYWxfQ2hlY2soKSBkb2VzIG5vdCB1c2UuCi0JCQkgKi8KLQkJCW9s ZF9jaGVja19vayA9IChwZmVxb3AgPT0gbGZpcnN0X29pZChvbGRfcGZlcW9wX2l0ZW0pKTsK LQkJCW9sZF9wZmVxb3BfaXRlbSA9IGxuZXh0KGZrY29uc3RyYWludC0+b2xkX2NvbnBmZXFv cCwKLQkJCQkJCQkJCW9sZF9wZmVxb3BfaXRlbSk7CisJCQlma2F0dG51bVtudW1wa3NdID0g ZmtwZXJpb2RhdHRudW1zWzBdOworCQkJZmt0eXBvaWRbbnVtcGtzXSA9IGZrcGVyaW9kdHlw b2lkc1swXTsKIAkJfQotCQlpZiAob2xkX2NoZWNrX29rKQorCQllbHNlCiAJCXsKLQkJCU9p ZAkJCW9sZF9ma3R5cGU7Ci0JCQlPaWQJCQluZXdfZmt0eXBlOwotCQkJQ29lcmNpb25QYXRo VHlwZSBvbGRfcGF0aHR5cGU7Ci0JCQlDb2VyY2lvblBhdGhUeXBlIG5ld19wYXRodHlwZTsK LQkJCU9pZAkJCW9sZF9jYXN0ZnVuYzsKLQkJCU9pZAkJCW5ld19jYXN0ZnVuYzsKLQkJCUZv cm1fcGdfYXR0cmlidXRlIGF0dHIgPSBUdXBsZURlc2NBdHRyKHRhYi0+b2xkRGVzYywKLQkJ CQkJCQkJCQkJCSAgIGZrYXR0bnVtW2ldIC0gMSk7Ci0KLQkJCS8qCi0JCQkgKiBJZGVudGlm eSBjb2VyY2lvbiBwYXRod2F5cyBmcm9tIGVhY2ggb2YgdGhlIG9sZCBhbmQgbmV3IEZLLXNp ZGUKLQkJCSAqIGNvbHVtbiB0eXBlcyB0byB0aGUgcmlnaHQgKGZvcmVpZ24pIG9wZXJhbmQg dHlwZSBvZiB0aGUgcGZlcW9wLgotCQkJICogV2UgbWF5IGFzc3VtZSB0aGF0IHBnX2NvbnN0 cmFpbnQuY29ua2V5IGlzIG5vdCBjaGFuZ2luZy4KLQkJCSAqLwotCQkJb2xkX2ZrdHlwZSA9 IGF0dHItPmF0dHR5cGlkOwotCQkJbmV3X2ZrdHlwZSA9IGZrdHlwZTsKLQkJCW9sZF9wYXRo dHlwZSA9IGZpbmRGa2V5Q2FzdChwZmVxb3BfcmlnaHQsIG9sZF9ma3R5cGUsCi0JCQkJCQkJ CQkJJm9sZF9jYXN0ZnVuYyk7Ci0JCQluZXdfcGF0aHR5cGUgPSBmaW5kRmtleUNhc3QocGZl cW9wX3JpZ2h0LCBuZXdfZmt0eXBlLAotCQkJCQkJCQkJCSZuZXdfY2FzdGZ1bmMpOwotCi0J CQkvKgotCQkJICogVXBvbiBhIGNoYW5nZSB0byB0aGUgY2FzdCBmcm9tIHRoZSBGSyBjb2x1 bW4gdG8gaXRzIHBmZXFvcAotCQkJICogb3BlcmFuZCwgcmV2YWxpZGF0ZSB0aGUgY29uc3Ry YWludC4gIEZvciB0aGlzIGV2YWx1YXRpb24sIGEKLQkJCSAqIGJpbmFyeSBjb2VyY2lvbiBj YXN0IGlzIGVxdWl2YWxlbnQgdG8gbm8gY2FzdCBhdCBhbGwuICBXaGlsZQotCQkJICogdHlw ZSBpbXBsZW1lbnRvcnMgc2hvdWxkIGRlc2lnbiBpbXBsaWNpdCBjYXN0cyB3aXRoIGFuIGV5 ZQotCQkJICogdG93YXJkIGNvbnNpc3RlbmN5IG9mIG9wZXJhdGlvbnMgbGlrZSBlcXVhbGl0 eSwgd2UgY2Fubm90Ci0JCQkgKiBhc3N1bWUgaGVyZSB0aGF0IHRoZXkgaGF2ZSBkb25lIHNv LgotCQkJICoKLQkJCSAqIEEgZnVuY3Rpb24gd2l0aCBhIHBvbHltb3JwaGljIGFyZ3VtZW50 IGNvdWxkIGNoYW5nZSBiZWhhdmlvcgotCQkJICogYXJiaXRyYXJpbHkgaW4gcmVzcG9uc2Ug dG8gZ2V0X2ZuX2V4cHJfYXJndHlwZSgpLiAgVGhlcmVmb3JlLAotCQkJICogd2hlbiB0aGUg Y2FzdCBkZXN0aW5hdGlvbiBpcyBwb2x5bW9ycGhpYywgd2Ugb25seSBhdm9pZAotCQkJICog cmV2YWxpZGF0aW9uIGlmIHRoZSBpbnB1dCB0eXBlIGhhcyBub3QgY2hhbmdlZCBhdCBhbGwu ICBHaXZlbgotCQkJICoganVzdCB0aGUgY29yZSBkYXRhIHR5cGVzIGFuZCBvcGVyYXRvciBj bGFzc2VzLCB0aGlzIHJlcXVpcmVtZW50Ci0JCQkgKiBwcmV2ZW50cyBubyB3b3VsZC1iZSBv cHRpbWl6YXRpb25zLgotCQkJICoKLQkJCSAqIElmIHRoZSBjYXN0IGNvbnZlcnRzIGZyb20g YSBiYXNlIHR5cGUgdG8gYSBkb21haW4gdGhlcmVvbiwgdGhlbgotCQkJICogdGhhdCBkb21h aW4gdHlwZSBtdXN0IGJlIHRoZSBvcGNpbnR5cGUgb2YgdGhlIHVuaXF1ZSBpbmRleC4KLQkJ CSAqIE5lY2Vzc2FyaWx5LCB0aGUgcHJpbWFyeSBrZXkgY29sdW1uIG11c3QgdGhlbiBiZSBv ZiB0aGUgZG9tYWluCi0JCQkgKiB0eXBlLiAgU2luY2UgdGhlIGNvbnN0cmFpbnQgd2FzIHBy ZXZpb3VzbHkgdmFsaWQsIGFsbCB2YWx1ZXMgb24KLQkJCSAqIHRoZSBmb3JlaWduIHNpZGUg bmVjZXNzYXJpbHkgZXhpc3Qgb24gdGhlIHByaW1hcnkgc2lkZSBhbmQgaW4KLQkJCSAqIHR1 cm4gY29uZm9ybSB0byB0aGUgZG9tYWluLiAgQ29uc2VxdWVudGx5LCB3ZSBuZWVkIG5vdCB0 cmVhdAotCQkJICogZG9tYWlucyBzcGVjaWFsbHkgaGVyZS4KLQkJCSAqCi0JCQkgKiBTaW5j ZSB3ZSByZXF1aXJlIHRoYXQgYWxsIGNvbGxhdGlvbnMgc2hhcmUgdGhlIHNhbWUgbm90aW9u IG9mCi0JCQkgKiBlcXVhbGl0eSAod2hpY2ggdGhleSBkbywgYmVjYXVzZSB0ZXh0ZXEgcmVk dWNlcyB0byBiaXR3aXNlCi0JCQkgKiBlcXVhbGl0eSksIHdlIGRvbid0IGNvbXBhcmUgY29s bGF0aW9uIGhlcmUuCi0JCQkgKgotCQkJICogV2UgbmVlZCBub3QgZGlyZWN0bHkgY29uc2lk ZXIgdGhlIFBLIHR5cGUuICBJdCdzIG5lY2Vzc2FyaWx5Ci0JCQkgKiBiaW5hcnkgY29lcmNp YmxlIHRvIHRoZSBvcGNpbnR5cGUgb2YgdGhlIHVuaXF1ZSBpbmRleCBjb2x1bW4sCi0JCQkg KiBhbmQgcmlfdHJpZ2dlcnMuYyB3aWxsIG9ubHkgZGVhbCB3aXRoIFBLIGRhdHVtcyBpbiB0 ZXJtcyBvZgotCQkJICogdGhhdCBvcGNpbnR5cGUuICBDaGFuZ2luZyB0aGUgb3BjaW50eXBl IGFsc28gY2hhbmdlcyBwZmVxb3AuCi0JCQkgKi8KLQkJCW9sZF9jaGVja19vayA9IChuZXdf cGF0aHR5cGUgPT0gb2xkX3BhdGh0eXBlICYmCi0JCQkJCQkJbmV3X2Nhc3RmdW5jID09IG9s ZF9jYXN0ZnVuYyAmJgotCQkJCQkJCSghSXNQb2x5bW9ycGhpY1R5cGUocGZlcW9wX3JpZ2h0 KSB8fAotCQkJCQkJCSBuZXdfZmt0eXBlID09IG9sZF9ma3R5cGUpKTsKKwkJCWZrYXR0bnVt W251bXBrc10gPSBJbnZhbGlkT2lkOworCQkJZmt0eXBvaWRbbnVtcGtzXSA9IEludmFsaWRP aWQ7CiAJCX0KIAotCQlwZmVxb3BlcmF0b3JzW2ldID0gcGZlcW9wOwotCQlwcGVxb3BlcmF0 b3JzW2ldID0gcHBlcW9wOwotCQlmZmVxb3BlcmF0b3JzW2ldID0gZmZlcW9wOworCQlGaW5k RktDb21wYXJpc29uT3BlcmF0b3JzKAorCQkJCWZrY29uc3RyYWludCwgdGFiLCBudW1wa3Ms IGZrYXR0bnVtLAorCQkJCSZvbGRfY2hlY2tfb2ssICZvbGRfcGZlcW9wX2l0ZW0sCisJCQkJ cGtwZXJpb2R0eXBvaWRzWzBdLCBma3BlcmlvZHR5cG9pZHNbMF0sIG9wY2xhc3Nlc1tudW1w a3NdLAorCQkJCWlzX3RlbXBvcmFsLCB0cnVlLAorCQkJCSZwZmVxb3BlcmF0b3JzW251bXBr c10sICZwcGVxb3BlcmF0b3JzW251bXBrc10sICZmZmVxb3BlcmF0b3JzW251bXBrc10pOwor CQludW1ma3MgKz0gMTsKKwkJbnVtcGtzICs9IDE7CiAJfQogCiAJLyoKQEAgLTEwMDYyLDcg Kzk5NjksOCBAQCBBVEFkZEZvcmVpZ25LZXlDb25zdHJhaW50KExpc3QgKip3cXVldWUsIEFs dGVyZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLAogCQkJCQkJCQkJIG51bWZrZGVs c2V0Y29scywKIAkJCQkJCQkJCSBma2RlbHNldGNvbHMsCiAJCQkJCQkJCQkgb2xkX2NoZWNr X29rLAotCQkJCQkJCQkJIEludmFsaWRPaWQsIEludmFsaWRPaWQpOworCQkJCQkJCQkJIElu dmFsaWRPaWQsIEludmFsaWRPaWQsCisJCQkJCQkJCQkgaXNfdGVtcG9yYWwsIHBrcGVyaW9k LCBma3BlcmlvZCk7CiAKIAkvKiBOb3cgaGFuZGxlIHRoZSByZWZlcmVuY2luZyBzaWRlLiAq LwogCWFkZEZrUmVjdXJzZVJlZmVyZW5jaW5nKHdxdWV1ZSwgZmtjb25zdHJhaW50LCByZWws IHBrcmVsLApAQCAtMTAwNzgsNyArOTk4Niw4IEBAIEFUQWRkRm9yZWlnbktleUNvbnN0cmFp bnQoTGlzdCAqKndxdWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBSZWxhdGlvbiByZWws CiAJCQkJCQkJZmtkZWxzZXRjb2xzLAogCQkJCQkJCW9sZF9jaGVja19vaywKIAkJCQkJCQls b2NrbW9kZSwKLQkJCQkJCQlJbnZhbGlkT2lkLCBJbnZhbGlkT2lkKTsKKwkJCQkJCQlJbnZh bGlkT2lkLCBJbnZhbGlkT2lkLAorCQkJCQkJCWlzX3RlbXBvcmFsLCBwa3BlcmlvZCwgZmtw ZXJpb2QpOwogCiAJLyoKIAkgKiBEb25lLiAgQ2xvc2UgcGsgdGFibGUsIGJ1dCBrZWVwIGxv Y2sgdW50aWwgd2UndmUgY29tbWl0dGVkLgpAQCAtMTAxNjMsNyArMTAwNzIsOCBAQCBhZGRG a1JlY3Vyc2VSZWZlcmVuY2VkKExpc3QgKip3cXVldWUsIENvbnN0cmFpbnQgKmZrY29uc3Ry YWludCwgUmVsYXRpb24gcmVsLAogCQkJCQkgICBPaWQgKnBwZXFvcGVyYXRvcnMsIE9pZCAq ZmZlcW9wZXJhdG9ycywKIAkJCQkJICAgaW50IG51bWZrZGVsc2V0Y29scywgaW50MTYgKmZr ZGVsc2V0Y29scywKIAkJCQkJICAgYm9vbCBvbGRfY2hlY2tfb2ssCi0JCQkJCSAgIE9pZCBw YXJlbnREZWxUcmlnZ2VyLCBPaWQgcGFyZW50VXBkVHJpZ2dlcikKKwkJCQkJICAgT2lkIHBh cmVudERlbFRyaWdnZXIsIE9pZCBwYXJlbnRVcGRUcmlnZ2VyLAorCQkJCQkgICBib29sIGlz X3RlbXBvcmFsLCBPaWQgcGtwZXJpb2QsIE9pZCBma3BlcmlvZCkKIHsKIAlPYmplY3RBZGRy ZXNzIGFkZHJlc3M7CiAJT2lkCQkJY29uc3RyT2lkOwpAQCAtMTAyNDksOCArMTAxNTksOSBA QCBhZGRGa1JlY3Vyc2VSZWZlcmVuY2VkKExpc3QgKip3cXVldWUsIENvbnN0cmFpbnQgKmZr Y29uc3RyYWludCwgUmVsYXRpb24gcmVsLAogCQkJCQkJCQkJICBjb25pc2xvY2FsLAkvKiBp c2xvY2FsICovCiAJCQkJCQkJCQkgIGNvbmluaGNvdW50LAkvKiBpbmhjb3VudCAqLwogCQkJ CQkJCQkJICBjb25ub2luaGVyaXQsIC8qIGNvbk5vSW5oZXJpdCAqLwotCQkJCQkJCQkJICBm YWxzZSwJLyogY29uVGVtcG9yYWwgKi8KLQkJCQkJCQkJCSAgSW52YWxpZE9pZCwKKwkJCQkJ CQkJCSAgaXNfdGVtcG9yYWwsCS8qIGNvblRlbXBvcmFsICovCisJCQkJCQkJCQkgIGZrcGVy aW9kLAorCQkJCQkJCQkJICBwa3BlcmlvZCwKIAkJCQkJCQkJCSAgZmFsc2UpOwkvKiBpc19p bnRlcm5hbCAqLwogCiAJT2JqZWN0QWRkcmVzc1NldChhZGRyZXNzLCBDb25zdHJhaW50UmVs YXRpb25JZCwgY29uc3RyT2lkKTsKQEAgLTEwMzI2LDcgKzEwMjM3LDggQEAgYWRkRmtSZWN1 cnNlUmVmZXJlbmNlZChMaXN0ICoqd3F1ZXVlLCBDb25zdHJhaW50ICpma2NvbnN0cmFpbnQs IFJlbGF0aW9uIHJlbCwKIAkJCQkJCQkJICAgcGZlcW9wZXJhdG9ycywgcHBlcW9wZXJhdG9y cywgZmZlcW9wZXJhdG9ycywKIAkJCQkJCQkJICAgbnVtZmtkZWxzZXRjb2xzLCBma2RlbHNl dGNvbHMsCiAJCQkJCQkJCSAgIG9sZF9jaGVja19vaywKLQkJCQkJCQkJICAgZGVsZXRlVHJp Z2dlck9pZCwgdXBkYXRlVHJpZ2dlck9pZCk7CisJCQkJCQkJCSAgIGRlbGV0ZVRyaWdnZXJP aWQsIHVwZGF0ZVRyaWdnZXJPaWQsCisJCQkJCQkJCSAgIGlzX3RlbXBvcmFsLCBwa3Blcmlv ZCwgZmtwZXJpb2QpOwogCiAJCQkvKiBEb25lIC0tIGNsZWFuIHVwIChidXQga2VlcCB0aGUg bG9jaykgKi8KIAkJCXRhYmxlX2Nsb3NlKHBhcnRSZWwsIE5vTG9jayk7CkBAIC0xMDM4NCw3 ICsxMDI5Niw4IEBAIGFkZEZrUmVjdXJzZVJlZmVyZW5jaW5nKExpc3QgKip3cXVldWUsIENv bnN0cmFpbnQgKmZrY29uc3RyYWludCwgUmVsYXRpb24gcmVsLAogCQkJCQkJT2lkICpwZmVx b3BlcmF0b3JzLCBPaWQgKnBwZXFvcGVyYXRvcnMsIE9pZCAqZmZlcW9wZXJhdG9ycywKIAkJ CQkJCWludCBudW1ma2RlbHNldGNvbHMsIGludDE2ICpma2RlbHNldGNvbHMsCiAJCQkJCQli b29sIG9sZF9jaGVja19vaywgTE9DS01PREUgbG9ja21vZGUsCi0JCQkJCQlPaWQgcGFyZW50 SW5zVHJpZ2dlciwgT2lkIHBhcmVudFVwZFRyaWdnZXIpCisJCQkJCQlPaWQgcGFyZW50SW5z VHJpZ2dlciwgT2lkIHBhcmVudFVwZFRyaWdnZXIsCisJCQkJCQlib29sIGlzX3RlbXBvcmFs LCBPaWQgcGtwZXJpb2QsIE9pZCBma3BlcmlvZCkKIHsKIAlPaWQJCQlpbnNlcnRUcmlnZ2Vy T2lkLAogCQkJCXVwZGF0ZVRyaWdnZXJPaWQ7CkBAIC0xMDQzMiw2ICsxMDM0NSw3IEBAIGFk ZEZrUmVjdXJzZVJlZmVyZW5jaW5nKExpc3QgKip3cXVldWUsIENvbnN0cmFpbnQgKmZrY29u c3RyYWludCwgUmVsYXRpb24gcmVsLAogCQkJbmV3Y29uLT5yZWZyZWxpZCA9IFJlbGF0aW9u R2V0UmVsaWQocGtyZWwpOwogCQkJbmV3Y29uLT5yZWZpbmRpZCA9IGluZGV4T2lkOwogCQkJ bmV3Y29uLT5jb25pZCA9IHBhcmVudENvbnN0cjsKKwkJCW5ld2Nvbi0+Y29udGVtcG9yYWwg PSBma2NvbnN0cmFpbnQtPmZrX3BlcmlvZCAhPSBOVUxMOwogCQkJbmV3Y29uLT5xdWFsID0g KE5vZGUgKikgZmtjb25zdHJhaW50OwogCiAJCQl0YWItPmNvbnN0cmFpbnRzID0gbGFwcGVu ZCh0YWItPmNvbnN0cmFpbnRzLCBuZXdjb24pOwpAQCAtMTA1NDksOCArMTA0NjMsOSBAQCBh ZGRGa1JlY3Vyc2VSZWZlcmVuY2luZyhMaXN0ICoqd3F1ZXVlLCBDb25zdHJhaW50ICpma2Nv bnN0cmFpbnQsIFJlbGF0aW9uIHJlbCwKIAkJCQkJCQkJCSAgZmFsc2UsCiAJCQkJCQkJCQkg IDEsCiAJCQkJCQkJCQkgIGZhbHNlLAotCQkJCQkJCQkJICBmYWxzZSwJLyogY29uVGVtcG9y YWwgKi8KLQkJCQkJCQkJCSAgSW52YWxpZE9pZCwKKwkJCQkJCQkJCSAgaXNfdGVtcG9yYWws CS8qIGNvblRlbXBvcmFsICovCisJCQkJCQkJCQkgIGZrcGVyaW9kLAorCQkJCQkJCQkJICBw a3BlcmlvZCwKIAkJCQkJCQkJCSAgZmFsc2UpOwogCiAJCQkvKgpAQCAtMTA1ODEsNyArMTA0 OTYsMTAgQEAgYWRkRmtSZWN1cnNlUmVmZXJlbmNpbmcoTGlzdCAqKndxdWV1ZSwgQ29uc3Ry YWludCAqZmtjb25zdHJhaW50LCBSZWxhdGlvbiByZWwsCiAJCQkJCQkJCQlvbGRfY2hlY2tf b2ssCiAJCQkJCQkJCQlsb2NrbW9kZSwKIAkJCQkJCQkJCWluc2VydFRyaWdnZXJPaWQsCi0J CQkJCQkJCQl1cGRhdGVUcmlnZ2VyT2lkKTsKKwkJCQkJCQkJCXVwZGF0ZVRyaWdnZXJPaWQs CisJCQkJCQkJCQlpc190ZW1wb3JhbCwKKwkJCQkJCQkJCXBrcGVyaW9kLAorCQkJCQkJCQkJ ZmtwZXJpb2QpOwogCiAJCQl0YWJsZV9jbG9zZShwYXJ0aXRpb24sIE5vTG9jayk7CiAJCX0K QEAgLTEwODE3LDcgKzEwNzM1LDEwIEBAIENsb25lRmtSZWZlcmVuY2VkKFJlbGF0aW9uIHBh cmVudFJlbCwgUmVsYXRpb24gcGFydGl0aW9uUmVsKQogCQkJCQkJCSAgIGNvbmZkZWxzZXRj b2xzLAogCQkJCQkJCSAgIHRydWUsCiAJCQkJCQkJICAgZGVsZXRlVHJpZ2dlck9pZCwKLQkJ CQkJCQkgICB1cGRhdGVUcmlnZ2VyT2lkKTsKKwkJCQkJCQkgICB1cGRhdGVUcmlnZ2VyT2lk LAorCQkJCQkJCSAgIGNvbnN0ckZvcm0tPmNvbnRlbXBvcmFsLAorCQkJCQkJCSAgIGNvbnN0 ckZvcm0tPmNvbmZwZXJpb2QsCisJCQkJCQkJICAgY29uc3RyRm9ybS0+Y29ucGVyaW9kKTsK IAogCQl0YWJsZV9jbG9zZShma1JlbCwgTm9Mb2NrKTsKIAkJUmVsZWFzZVN5c0NhY2hlKHR1 cGxlKTsKQEAgLTExMDU2LDggKzEwOTc3LDkgQEAgQ2xvbmVGa1JlZmVyZW5jaW5nKExpc3Qg Kip3cXVldWUsIFJlbGF0aW9uIHBhcmVudFJlbCwgUmVsYXRpb24gcGFydFJlbCkKIAkJCQkJ CQkJICBmYWxzZSwJLyogaXNsb2NhbCAqLwogCQkJCQkJCQkgIDEsCS8qIGluaGNvdW50ICov CiAJCQkJCQkJCSAgZmFsc2UsCS8qIGNvbk5vSW5oZXJpdCAqLwotCQkJCQkJCQkgIGZhbHNl LAkvKiBjb25UZW1wb3JhbCAqLwotCQkJCQkJCQkgIEludmFsaWRPaWQsCisJCQkJCQkJCSAg Y29uc3RyRm9ybS0+Y29udGVtcG9yYWwsCS8qIGNvblRlbXBvcmFsICovCisJCQkJCQkJCSAg Y29uc3RyRm9ybS0+Y29ucGVyaW9kLAorCQkJCQkJCQkgIGNvbnN0ckZvcm0tPmNvbmZwZXJp b2QsCiAJCQkJCQkJCSAgdHJ1ZSk7CiAKIAkJLyogU2V0IHVwIHBhcnRpdGlvbiBkZXBlbmRl bmNpZXMgZm9yIHRoZSBuZXcgY29uc3RyYWludCAqLwpAQCAtMTEwOTEsMTMgKzExMDEzLDIz NCBAQCBDbG9uZUZrUmVmZXJlbmNpbmcoTGlzdCAqKndxdWV1ZSwgUmVsYXRpb24gcGFyZW50 UmVsLCBSZWxhdGlvbiBwYXJ0UmVsKQogCQkJCQkJCQlmYWxzZSwJLyogbm8gb2xkIGNoZWNr IGV4aXN0cyAqLwogCQkJCQkJCQlBY2Nlc3NFeGNsdXNpdmVMb2NrLAogCQkJCQkJCQlpbnNl cnRUcmlnZ2VyT2lkLAotCQkJCQkJCQl1cGRhdGVUcmlnZ2VyT2lkKTsKKwkJCQkJCQkJdXBk YXRlVHJpZ2dlck9pZCwKKwkJCQkJCQkJY29uc3RyRm9ybS0+Y29udGVtcG9yYWwsCisJCQkJ CQkJCWNvbnN0ckZvcm0tPmNvbnBlcmlvZCwKKwkJCQkJCQkJY29uc3RyRm9ybS0+Y29uZnBl cmlvZCk7CiAJCXRhYmxlX2Nsb3NlKHBrcmVsLCBOb0xvY2spOwogCX0KIAogCXRhYmxlX2Ns b3NlKHRyaWdyZWwsIFJvd0V4Y2x1c2l2ZUxvY2spOwogfQogCitzdGF0aWMgdm9pZAorRmlu ZEZLQ29tcGFyaXNvbk9wZXJhdG9ycyhDb25zdHJhaW50ICpma2NvbnN0cmFpbnQsCisJCUFs dGVyZWRUYWJsZUluZm8gKnRhYiwKKwkJaW50IGksCisJCWludDE2ICpma2F0dG51bSwKKwkJ Ym9vbCAqb2xkX2NoZWNrX29rLAorCQlMaXN0Q2VsbCAqKm9sZF9wZmVxb3BfaXRlbSwKKwkJ T2lkIHBrdHlwZSwgT2lkIGZrdHlwZSwgT2lkIG9wY2xhc3MsCisJCWJvb2wgaXNfdGVtcG9y YWwsIGJvb2wgZm9yX292ZXJsYXBzLAorCQlPaWQgKnBmZXFvcE91dCwgT2lkICpwcGVxb3BP dXQsIE9pZCAqZmZlcW9wT3V0KQoreworCU9pZAkJCWZrdHlwZWQ7CisJSGVhcFR1cGxlCWNs YV9odDsKKwlGb3JtX3BnX29wY2xhc3MgY2xhX3R1cDsKKwlPaWQJCQlhbWlkOworCU9pZAkJ CW9wZmFtaWx5OworCU9pZAkJCW9wY2ludHlwZTsKKwlPaWQJCQlwZmVxb3A7CisJT2lkCQkJ cHBlcW9wOworCU9pZAkJCWZmZXFvcDsKKwlpbnQxNgkJZXFzdHJhdGVneTsKKwlPaWQJCQlw ZmVxb3BfcmlnaHQ7CisKKwkvKiBXZSBuZWVkIHNldmVyYWwgZmllbGRzIG91dCBvZiB0aGUg cGdfb3BjbGFzcyBlbnRyeSAqLworCWNsYV9odCA9IFNlYXJjaFN5c0NhY2hlMShDTEFPSUQs IE9iamVjdElkR2V0RGF0dW0ob3BjbGFzcykpOworCWlmICghSGVhcFR1cGxlSXNWYWxpZChj bGFfaHQpKQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3Igb3BjbGFz cyAldSIsIG9wY2xhc3MpOworCWNsYV90dXAgPSAoRm9ybV9wZ19vcGNsYXNzKSBHRVRTVFJV Q1QoY2xhX2h0KTsKKwlhbWlkID0gY2xhX3R1cC0+b3BjbWV0aG9kOworCW9wZmFtaWx5ID0g Y2xhX3R1cC0+b3BjZmFtaWx5OworCW9wY2ludHlwZSA9IGNsYV90dXAtPm9wY2ludHlwZTsK KwlSZWxlYXNlU3lzQ2FjaGUoY2xhX2h0KTsKKworCWlmIChpc190ZW1wb3JhbCkKKwl7CisJ CWlmIChhbWlkICE9IEdJU1RfQU1fT0lEKQorCQkJZWxvZyhFUlJPUiwgIm9ubHkgR2lTVCBp bmRleGVzIGFyZSBzdXBwb3J0ZWQgZm9yIHRlbXBvcmFsIGZvcmVpZ24ga2V5cyIpOworCQll cXN0cmF0ZWd5ID0gZm9yX292ZXJsYXBzID8gUlRPdmVybGFwU3RyYXRlZ3lOdW1iZXIgOiBS VEVxdWFsU3RyYXRlZ3lOdW1iZXI7CisJfQorCWVsc2UKKwl7CisJCS8qCisJCSAqIENoZWNr IGl0J3MgYSBidHJlZTsgY3VycmVudGx5IHRoaXMgY2FuIG5ldmVyIGZhaWwgc2luY2Ugbm8g b3RoZXIKKwkJICogaW5kZXggQU1zIHN1cHBvcnQgdW5pcXVlIGluZGV4ZXMuICBJZiB3ZSBl dmVyIGRpZCBoYXZlIG90aGVyIHR5cGVzCisJCSAqIG9mIHVuaXF1ZSBpbmRleGVzLCB3ZSdk IG5lZWQgYSB3YXkgdG8gZGV0ZXJtaW5lIHdoaWNoIG9wZXJhdG9yCisJCSAqIHN0cmF0ZWd5 IG51bWJlciBpcyBlcXVhbGl0eS4gIChJcyBpdCByZWFzb25hYmxlIHRvIGluc2lzdCB0aGF0 CisJCSAqIGV2ZXJ5IHN1Y2ggaW5kZXggQU0gdXNlIGJ0cmVlJ3MgbnVtYmVyIGZvciBlcXVh bGl0eT8pCisJCSAqLworCQlpZiAoYW1pZCAhPSBCVFJFRV9BTV9PSUQpCisJCQllbG9nKEVS Uk9SLCAib25seSBiLXRyZWUgaW5kZXhlcyBhcmUgc3VwcG9ydGVkIGZvciBmb3JlaWduIGtl eXMiKTsKKwkJZXFzdHJhdGVneSA9IEJURXF1YWxTdHJhdGVneU51bWJlcjsKKwl9CisKKwkv KgorCSAqIFRoZXJlIGhhZCBiZXR0ZXIgYmUgYSBwcmltYXJ5IGVxdWFsaXR5IG9wZXJhdG9y IGZvciB0aGUgaW5kZXguCisJICogV2UnbGwgdXNlIGl0IGZvciBQSyA9IFBLIGNvbXBhcmlz b25zLgorCSAqLworCXBwZXFvcCA9IGdldF9vcGZhbWlseV9tZW1iZXIob3BmYW1pbHksIG9w Y2ludHlwZSwgb3BjaW50eXBlLAorCQkJCQkJCQkgZXFzdHJhdGVneSk7CisKKwlpZiAoIU9p ZElzVmFsaWQocHBlcW9wKSkKKwkJZWxvZyhFUlJPUiwgIm1pc3Npbmcgb3BlcmF0b3IgJWQo JXUsJXUpIGluIG9wZmFtaWx5ICV1IiwKKwkJCSBlcXN0cmF0ZWd5LCBvcGNpbnR5cGUsIG9w Y2ludHlwZSwgb3BmYW1pbHkpOworCisJLyoKKwkgKiBBcmUgdGhlcmUgZXF1YWxpdHkgb3Bl cmF0b3JzIHRoYXQgdGFrZSBleGFjdGx5IHRoZSBGSyB0eXBlPyBBc3N1bWUKKwkgKiB3ZSBz aG91bGQgbG9vayB0aHJvdWdoIGFueSBkb21haW4gaGVyZS4KKwkgKi8KKwlma3R5cGVkID0g Z2V0QmFzZVR5cGUoZmt0eXBlKTsKKworCXBmZXFvcCA9IGdldF9vcGZhbWlseV9tZW1iZXIo b3BmYW1pbHksIG9wY2ludHlwZSwgZmt0eXBlZCwKKwkJCQkJCQkJIGVxc3RyYXRlZ3kpOwor CWlmIChPaWRJc1ZhbGlkKHBmZXFvcCkpCisJeworCQlwZmVxb3BfcmlnaHQgPSBma3R5cGVk OworCQlmZmVxb3AgPSBnZXRfb3BmYW1pbHlfbWVtYmVyKG9wZmFtaWx5LCBma3R5cGVkLCBm a3R5cGVkLAorCQkJCQkJCQkJIGVxc3RyYXRlZ3kpOworCX0KKwllbHNlCisJeworCQkvKiBr ZWVwIGNvbXBpbGVyIHF1aWV0ICovCisJCXBmZXFvcF9yaWdodCA9IEludmFsaWRPaWQ7CisJ CWZmZXFvcCA9IEludmFsaWRPaWQ7CisJfQorCisJaWYgKCEoT2lkSXNWYWxpZChwZmVxb3Ap ICYmIE9pZElzVmFsaWQoZmZlcW9wKSkpCisJeworCQkvKgorCQkgKiBPdGhlcndpc2UsIGxv b2sgZm9yIGFuIGltcGxpY2l0IGNhc3QgZnJvbSB0aGUgRksgdHlwZSB0byB0aGUKKwkJICog b3BjaW50eXBlLCBhbmQgaWYgZm91bmQsIHVzZSB0aGUgcHJpbWFyeSBlcXVhbGl0eSBvcGVy YXRvci4KKwkJICogVGhpcyBpcyBhIGJpdCB0cmlja3kgYmVjYXVzZSBvcGNpbnR5cGUgbWln aHQgYmUgYSBwb2x5bW9ycGhpYworCQkgKiB0eXBlIHN1Y2ggYXMgQU5ZQVJSQVkgb3IgQU5Z RU5VTTsgc28gd2hhdCB3ZSBoYXZlIHRvIHRlc3QgaXMKKwkJICogd2hldGhlciB0aGUgdHdv IGFjdHVhbCBjb2x1bW4gdHlwZXMgY2FuIGJlIGNvbmN1cnJlbnRseSBjYXN0IHRvCisJCSAq IHRoYXQgdHlwZS4gIChPdGhlcndpc2UsIHdlJ2QgZmFpbCB0byByZWplY3QgY29tYmluYXRp b25zIHN1Y2gKKwkJICogYXMgaW50W10gYW5kIHBvaW50W10uKQorCQkgKi8KKwkJT2lkCQkJ aW5wdXRfdHlwZWlkc1syXTsKKwkJT2lkCQkJdGFyZ2V0X3R5cGVpZHNbMl07CisKKwkJaW5w dXRfdHlwZWlkc1swXSA9IHBrdHlwZTsKKwkJaW5wdXRfdHlwZWlkc1sxXSA9IGZrdHlwZTsK KwkJdGFyZ2V0X3R5cGVpZHNbMF0gPSBvcGNpbnR5cGU7CisJCXRhcmdldF90eXBlaWRzWzFd ID0gb3BjaW50eXBlOworCQlpZiAoY2FuX2NvZXJjZV90eXBlKDIsIGlucHV0X3R5cGVpZHMs IHRhcmdldF90eXBlaWRzLAorCQkJCQkJCUNPRVJDSU9OX0lNUExJQ0lUKSkKKwkJeworCQkJ cGZlcW9wID0gZmZlcW9wID0gcHBlcW9wOworCQkJcGZlcW9wX3JpZ2h0ID0gb3BjaW50eXBl OworCQl9CisJfQorCisJaWYgKCEoT2lkSXNWYWxpZChwZmVxb3ApICYmIE9pZElzVmFsaWQo ZmZlcW9wKSkpCisJeworCQljaGFyICpma2F0dHJfbmFtZTsKKwkJY2hhciAqcGthdHRyX25h bWU7CisKKwkJaWYgKGZvcl9vdmVybGFwcykKKwkJeworCQkJZmthdHRyX25hbWUgPSBzdHJW YWwoZmtjb25zdHJhaW50LT5ma19wZXJpb2QpOworCQkJcGthdHRyX25hbWUgPSBzdHJWYWwo Zmtjb25zdHJhaW50LT5wa19wZXJpb2QpOworCQl9CisJCWVsc2UKKwkJeworCQkJZmthdHRy X25hbWUgPSBzdHJWYWwobGlzdF9udGgoZmtjb25zdHJhaW50LT5ma19hdHRycywgaSkpOwor CQkJcGthdHRyX25hbWUgPSBzdHJWYWwobGlzdF9udGgoZmtjb25zdHJhaW50LT5wa19hdHRy cywgaSkpOworCQl9CisKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RF X0RBVEFUWVBFX01JU01BVENIKSwKKwkJCQkgZXJybXNnKCJmb3JlaWduIGtleSBjb25zdHJh aW50IFwiJXNcIiBjYW5ub3QgYmUgaW1wbGVtZW50ZWQiLAorCQkJCQkJZmtjb25zdHJhaW50 LT5jb25uYW1lKSwKKwkJCQkgZXJyZGV0YWlsKCJLZXkgY29sdW1ucyBcIiVzXCIgYW5kIFwi JXNcIiAiCisJCQkJCQkgICAiYXJlIG9mIGluY29tcGF0aWJsZSB0eXBlczogJXMgYW5kICVz LiIsCisJCQkJCQkgICBma2F0dHJfbmFtZSwKKwkJCQkJCSAgIHBrYXR0cl9uYW1lLAorCQkJ CQkJICAgZm9ybWF0X3R5cGVfYmUoZmt0eXBlKSwKKwkJCQkJCSAgIGZvcm1hdF90eXBlX2Jl KHBrdHlwZSkpKSk7CisJfQorCisJaWYgKCpvbGRfY2hlY2tfb2spCisJeworCQkvKgorCQkg KiBXaGVuIGEgcGZlcW9wIGNoYW5nZXMsIHJldmFsaWRhdGUgdGhlIGNvbnN0cmFpbnQuICBX ZSBjb3VsZAorCQkgKiBwZXJtaXQgaW50cmEtb3BmYW1pbHkgY2hhbmdlcywgYnV0IHRoYXQg YWRkcyBzdWJ0bGUgY29tcGxleGl0eQorCQkgKiB3aXRob3V0IGFueSBjb25jcmV0ZSBiZW5l Zml0IGZvciBjb3JlIHR5cGVzLiAgV2UgbmVlZCBub3QKKwkJICogYXNzZXNzIHBwZXFvcCBv ciBmZmVxb3AsIHdoaWNoIFJJX0luaXRpYWxfQ2hlY2soKSBkb2VzIG5vdCB1c2UuCisJCSAq LworCQkqb2xkX2NoZWNrX29rID0gKHBmZXFvcCA9PSBsZmlyc3Rfb2lkKCpvbGRfcGZlcW9w X2l0ZW0pKTsKKwkJKm9sZF9wZmVxb3BfaXRlbSA9IGxuZXh0KGZrY29uc3RyYWludC0+b2xk X2NvbnBmZXFvcCwKKwkJCQkJCQkJKm9sZF9wZmVxb3BfaXRlbSk7CisJfQorCWlmICgqb2xk X2NoZWNrX29rKQorCXsKKwkJT2lkCQkJb2xkX2ZrdHlwZTsKKwkJT2lkCQkJbmV3X2ZrdHlw ZTsKKwkJQ29lcmNpb25QYXRoVHlwZSBvbGRfcGF0aHR5cGU7CisJCUNvZXJjaW9uUGF0aFR5 cGUgbmV3X3BhdGh0eXBlOworCQlPaWQJCQlvbGRfY2FzdGZ1bmM7CisJCU9pZAkJCW5ld19j YXN0ZnVuYzsKKwkJRm9ybV9wZ19hdHRyaWJ1dGUgYXR0ciA9IFR1cGxlRGVzY0F0dHIodGFi LT5vbGREZXNjLAorCQkJCQkJCQkJCQkgICBma2F0dG51bVtpXSAtIDEpOworCisJCS8qCisJ CSAqIElkZW50aWZ5IGNvZXJjaW9uIHBhdGh3YXlzIGZyb20gZWFjaCBvZiB0aGUgb2xkIGFu ZCBuZXcgRkstc2lkZQorCQkgKiBjb2x1bW4gdHlwZXMgdG8gdGhlIHJpZ2h0IChmb3JlaWdu KSBvcGVyYW5kIHR5cGUgb2YgdGhlIHBmZXFvcC4KKwkJICogV2UgbWF5IGFzc3VtZSB0aGF0 IHBnX2NvbnN0cmFpbnQuY29ua2V5IGlzIG5vdCBjaGFuZ2luZy4KKwkJICovCisJCW9sZF9m a3R5cGUgPSBhdHRyLT5hdHR0eXBpZDsKKwkJbmV3X2ZrdHlwZSA9IGZrdHlwZTsKKwkJb2xk X3BhdGh0eXBlID0gZmluZEZrZXlDYXN0KHBmZXFvcF9yaWdodCwgb2xkX2ZrdHlwZSwKKwkJ CQkJCQkJCSZvbGRfY2FzdGZ1bmMpOworCQluZXdfcGF0aHR5cGUgPSBmaW5kRmtleUNhc3Qo cGZlcW9wX3JpZ2h0LCBuZXdfZmt0eXBlLAorCQkJCQkJCQkJJm5ld19jYXN0ZnVuYyk7CisK KwkJLyoKKwkJICogVXBvbiBhIGNoYW5nZSB0byB0aGUgY2FzdCBmcm9tIHRoZSBGSyBjb2x1 bW4gdG8gaXRzIHBmZXFvcAorCQkgKiBvcGVyYW5kLCByZXZhbGlkYXRlIHRoZSBjb25zdHJh aW50LiAgRm9yIHRoaXMgZXZhbHVhdGlvbiwgYQorCQkgKiBiaW5hcnkgY29lcmNpb24gY2Fz dCBpcyBlcXVpdmFsZW50IHRvIG5vIGNhc3QgYXQgYWxsLiAgV2hpbGUKKwkJICogdHlwZSBp bXBsZW1lbnRvcnMgc2hvdWxkIGRlc2lnbiBpbXBsaWNpdCBjYXN0cyB3aXRoIGFuIGV5ZQor CQkgKiB0b3dhcmQgY29uc2lzdGVuY3kgb2Ygb3BlcmF0aW9ucyBsaWtlIGVxdWFsaXR5LCB3 ZSBjYW5ub3QKKwkJICogYXNzdW1lIGhlcmUgdGhhdCB0aGV5IGhhdmUgZG9uZSBzby4KKwkJ ICoKKwkJICogQSBmdW5jdGlvbiB3aXRoIGEgcG9seW1vcnBoaWMgYXJndW1lbnQgY291bGQg Y2hhbmdlIGJlaGF2aW9yCisJCSAqIGFyYml0cmFyaWx5IGluIHJlc3BvbnNlIHRvIGdldF9m bl9leHByX2FyZ3R5cGUoKS4gIFRoZXJlZm9yZSwKKwkJICogd2hlbiB0aGUgY2FzdCBkZXN0 aW5hdGlvbiBpcyBwb2x5bW9ycGhpYywgd2Ugb25seSBhdm9pZAorCQkgKiByZXZhbGlkYXRp b24gaWYgdGhlIGlucHV0IHR5cGUgaGFzIG5vdCBjaGFuZ2VkIGF0IGFsbC4gIEdpdmVuCisJ CSAqIGp1c3QgdGhlIGNvcmUgZGF0YSB0eXBlcyBhbmQgb3BlcmF0b3IgY2xhc3NlcywgdGhp cyByZXF1aXJlbWVudAorCQkgKiBwcmV2ZW50cyBubyB3b3VsZC1iZSBvcHRpbWl6YXRpb25z LgorCQkgKgorCQkgKiBJZiB0aGUgY2FzdCBjb252ZXJ0cyBmcm9tIGEgYmFzZSB0eXBlIHRv IGEgZG9tYWluIHRoZXJlb24sIHRoZW4KKwkJICogdGhhdCBkb21haW4gdHlwZSBtdXN0IGJl IHRoZSBvcGNpbnR5cGUgb2YgdGhlIHVuaXF1ZSBpbmRleC4KKwkJICogTmVjZXNzYXJpbHks IHRoZSBwcmltYXJ5IGtleSBjb2x1bW4gbXVzdCB0aGVuIGJlIG9mIHRoZSBkb21haW4KKwkJ ICogdHlwZS4gIFNpbmNlIHRoZSBjb25zdHJhaW50IHdhcyBwcmV2aW91c2x5IHZhbGlkLCBh bGwgdmFsdWVzIG9uCisJCSAqIHRoZSBmb3JlaWduIHNpZGUgbmVjZXNzYXJpbHkgZXhpc3Qg b24gdGhlIHByaW1hcnkgc2lkZSBhbmQgaW4KKwkJICogdHVybiBjb25mb3JtIHRvIHRoZSBk b21haW4uICBDb25zZXF1ZW50bHksIHdlIG5lZWQgbm90IHRyZWF0CisJCSAqIGRvbWFpbnMg c3BlY2lhbGx5IGhlcmUuCisJCSAqCisJCSAqIFNpbmNlIHdlIHJlcXVpcmUgdGhhdCBhbGwg Y29sbGF0aW9ucyBzaGFyZSB0aGUgc2FtZSBub3Rpb24gb2YKKwkJICogZXF1YWxpdHkgKHdo aWNoIHRoZXkgZG8sIGJlY2F1c2UgdGV4dGVxIHJlZHVjZXMgdG8gYml0d2lzZQorCQkgKiBl cXVhbGl0eSksIHdlIGRvbid0IGNvbXBhcmUgY29sbGF0aW9uIGhlcmUuCisJCSAqCisJCSAq IFdlIG5lZWQgbm90IGRpcmVjdGx5IGNvbnNpZGVyIHRoZSBQSyB0eXBlLiAgSXQncyBuZWNl c3NhcmlseQorCQkgKiBiaW5hcnkgY29lcmNpYmxlIHRvIHRoZSBvcGNpbnR5cGUgb2YgdGhl IHVuaXF1ZSBpbmRleCBjb2x1bW4sCisJCSAqIGFuZCByaV90cmlnZ2Vycy5jIHdpbGwgb25s eSBkZWFsIHdpdGggUEsgZGF0dW1zIGluIHRlcm1zIG9mCisJCSAqIHRoYXQgb3BjaW50eXBl LiAgQ2hhbmdpbmcgdGhlIG9wY2ludHlwZSBhbHNvIGNoYW5nZXMgcGZlcW9wLgorCQkgKi8K KwkJKm9sZF9jaGVja19vayA9IChuZXdfcGF0aHR5cGUgPT0gb2xkX3BhdGh0eXBlICYmCisJ CQkJCQluZXdfY2FzdGZ1bmMgPT0gb2xkX2Nhc3RmdW5jICYmCisJCQkJCQkoIUlzUG9seW1v cnBoaWNUeXBlKHBmZXFvcF9yaWdodCkgfHwKKwkJCQkJCSBuZXdfZmt0eXBlID09IG9sZF9m a3R5cGUpKTsKKworCX0KKworCSpwZmVxb3BPdXQgPSBwZmVxb3A7CisJKnBwZXFvcE91dCA9 IHBwZXFvcDsKKwkqZmZlcW9wT3V0ID0gZmZlcW9wOworfQorCiAvKgogICogV2hlbiB0aGUg cGFyZW50IG9mIGEgcGFydGl0aW9uIHJlY2VpdmVzIFt0aGUgcmVmZXJlbmNpbmcgc2lkZSBv Zl0gYSBmb3JlaWduCiAgKiBrZXksIHdlIG11c3QgcHJvcGFnYXRlIHRoYXQgZm9yZWlnbiBr ZXkgdG8gdGhlIHBhcnRpdGlvbi4gIEhvd2V2ZXIsIHRoZQpAQCAtMTE4NDMsNiArMTE5ODYs MzggQEAgQVRFeGVjVmFsaWRhdGVDb25zdHJhaW50KExpc3QgKip3cXVldWUsIFJlbGF0aW9u IHJlbCwgY2hhciAqY29uc3RyTmFtZSwKIAlyZXR1cm4gYWRkcmVzczsKIH0KIAorLyoKKyAq IHRyYW5zZm9ybVBlcmlvZE5hbWUgLSB0cmFuc2Zvcm0gcGVyaW9kIG5hbWUgdG8gaXRzIGJh c2UgY29sdW1ucworICoKKyAqIExvb2t1cCB0aGUgbmFtZSBhbmQgcmV0dXJuIHplcm8gYXMg dGhlIGNvbHVtbiBhdHRudW0uIFNldAorICogdGhlIHBlcmlvZCdzIHJhbmdldHlwZSAobm90 IHRoZSBjb2x1bW5zJyB0eXBlIE9JRHMpLgorICovCitzdGF0aWMgdm9pZAordHJhbnNmb3Jt UGVyaW9kTmFtZShPaWQgcmVsSWQsIE5vZGUgKnBlcmlvZE5hbWUsCisJCQkJCWludDE2ICph dHRudW1zLCBPaWQgKmF0dHR5cGlkcywgT2lkICpwZXJpb2RpZCkKK3sKKwljb25zdCBjaGFy ICpwZXJpb2RTdHIgPSBzdHJWYWwocGVyaW9kTmFtZSk7CisJSGVhcFR1cGxlIHBlcnR1cGxl ID0gU2VhcmNoU3lzQ2FjaGUyKFBFUklPRE5BTUUsCisJCQkJCSAgIE9iamVjdElkR2V0RGF0 dW0ocmVsSWQpLAorCQkJCQkgICBQb2ludGVyR2V0RGF0dW0ocGVyaW9kU3RyKSk7CisJRm9y bV9wZ19wZXJpb2QgcGVyaW9kOworCisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHBlcnR1cGxl KSkKKwl7CisJCWF0dG51bXNbMF0gPSBJbnZhbGlkT2lkOworCQlhdHR0eXBpZHNbMF0gPSBJ bnZhbGlkT2lkOworCQkqcGVyaW9kaWQgPSBJbnZhbGlkT2lkOworCQlyZXR1cm47CisJfQor CisJcGVyaW9kID0gKEZvcm1fcGdfcGVyaW9kKSBHRVRTVFJVQ1QocGVydHVwbGUpOworCisJ YXR0bnVtc1swXSA9IEludmFsaWRPaWQ7CisJYXR0dHlwaWRzWzBdID0gcGVyaW9kLT5wZXJy bmd0eXBlOworCSpwZXJpb2RpZCA9IHBlcmlvZC0+b2lkOworCisJUmVsZWFzZVN5c0NhY2hl KHBlcnR1cGxlKTsKK30KIAogLyoKICAqIHRyYW5zZm9ybUNvbHVtbk5hbWVMaXN0IC0gdHJh bnNmb3JtIGxpc3Qgb2YgY29sdW1uIG5hbWVzCkBAIC0xMTkwMSw2ICsxMjA3Niw5IEBAIHRy YW5zZm9ybUNvbHVtbk5hbWVMaXN0KE9pZCByZWxJZCwgTGlzdCAqY29sTGlzdCwKICAqCWZv ciB0aGUgcGtyZWwuICBBbHNvIHJldHVybiB0aGUgaW5kZXggT0lEIGFuZCBpbmRleCBvcGNs YXNzZXMgb2YgdGhlCiAgKglpbmRleCBzdXBwb3J0aW5nIHRoZSBwcmltYXJ5IGtleS4gIElm IHRoaXMgaXMgYSB0ZW1wb3JhbCBwcmltYXJ5IGtleSwKICAqCWFsc28gc2V0IHRoZSBXSVRI T1VUIE9WRVJMQVBTIGF0dHJpYnV0ZSBuYW1lLCBhdHRudW0sIGFuZCBhdHR0eXBpZC4KKyAq CUZvciByYW5nZXMgd2Ugb25seSBzZXQgb25lIHRoaW5nIGZvciBlYWNoIG9mIHRob3NlLiBG b3IgcGVyaW9kcyB3ZSBzZXQKKyAqCXRoZSBzdGFydC9lbmQgY29sdW1uIG5hbWVzIGFuZCBh dHRudW1zLCBidXQgdGhlIHR5cGlkcyB3ZSBzZXQgdG8gdGhlCisgKglwZXJpb2QncyByYW5n ZSB0eXBlLgogICoKICAqCUFsbCBwYXJhbWV0ZXJzIGV4Y2VwdCBwa3JlbCBhcmUgb3V0cHV0 IHBhcmFtZXRlcnMuICBBbHNvLCB0aGUgZnVuY3Rpb24KICAqCXJldHVybiB2YWx1ZSBpcyB0 aGUgbnVtYmVyIG9mIGF0dHJpYnV0ZXMgaW4gdGhlIHByaW1hcnkga2V5LApAQCAtMTE5MTIs NiArMTIwOTAsOCBAQCBzdGF0aWMgaW50CiB0cmFuc2Zvcm1Ga2V5R2V0UHJpbWFyeUtleShS ZWxhdGlvbiBwa3JlbCwgT2lkICppbmRleE9pZCwKIAkJCQkJCSAgIExpc3QgKiphdHRuYW1l bGlzdCwKIAkJCQkJCSAgIGludDE2ICphdHRudW1zLCBPaWQgKmF0dHR5cGlkcywKKwkJCQkJ CSAgIE5vZGUgKipwZXJpb2RhdHRuYW1lLCBPaWQgKnBlcmlvZGlkLAorCQkJCQkJICAgaW50 MTYgKnBlcmlvZGF0dG51bXMsIE9pZCAqcGVyaW9kYXR0dHlwaWRzLAogCQkJCQkJICAgT2lk ICpvcGNsYXNzZXMpCiB7CiAJTGlzdAkgICAqaW5kZXhvaWRsaXN0OwpAQCAtMTE5NzYsMzYg KzEyMTU2LDg0IEBAIHRyYW5zZm9ybUZrZXlHZXRQcmltYXJ5S2V5KFJlbGF0aW9uIHBrcmVs LCBPaWQgKmluZGV4T2lkLAogCiAJLyoKIAkgKiBOb3cgYnVpbGQgdGhlIGxpc3Qgb2YgUEsg YXR0cmlidXRlcyBmcm9tIHRoZSBpbmRrZXkgZGVmaW5pdGlvbiAod2UKLQkgKiBhc3N1bWUg YSBwcmltYXJ5IGtleSBjYW5ub3QgaGF2ZSBleHByZXNzaW9uYWwgZWxlbWVudHMpCisJICog YXNzdW1lIGEgcHJpbWFyeSBrZXkgY2Fubm90IGhhdmUgZXhwcmVzc2lvbmFsIGVsZW1lbnRz LCB1bmxlc3MgaXQKKwkgKiBoYXMgYSBQRVJJT0QpCiAJICovCiAJKmF0dG5hbWVsaXN0ID0g TklMOwogCWZvciAoaSA9IDA7IGkgPCBpbmRleFN0cnVjdC0+aW5kbmtleWF0dHM7IGkrKykK IAl7CiAJCWludAkJCXBrYXR0bm8gPSBpbmRleFN0cnVjdC0+aW5ka2V5LnZhbHVlc1tpXTsK IAotCQlhdHRudW1zW2ldID0gcGthdHRubzsKLQkJYXR0dHlwaWRzW2ldID0gYXR0bnVtVHlw ZUlkKHBrcmVsLCBwa2F0dG5vKTsKLQkJb3BjbGFzc2VzW2ldID0gaW5kY2xhc3MtPnZhbHVl c1tpXTsKLQkJKmF0dG5hbWVsaXN0ID0gbGFwcGVuZCgqYXR0bmFtZWxpc3QsCi0JCQkJCQkJ ICAgbWFrZVN0cmluZyhwc3RyZHVwKE5hbWVTdHIoKmF0dG51bUF0dE5hbWUocGtyZWwsIHBr YXR0bm8pKSkpKTsKKwkJaWYgKGkgPT0gaW5kZXhTdHJ1Y3QtPmluZG5rZXlhdHRzIC0gMSAm JiBpbmRleFN0cnVjdC0+aW5kaXNleGNsdXNpb24pCisJCXsKKwkJCWlmIChwa2F0dG5vID09 IEludmFsaWRPaWQpCisJCQl7CisJCQkJLyogd2UgaGF2ZSBhIHBlcmlvZCAqLworCQkJCUhl YXBUdXBsZSBwZXJpb2RUdXBsZSA9IFNlYXJjaFN5c0NhY2hlMShQRVJJT0RPSUQsIE9iamVj dElkR2V0RGF0dW0oaW5kZXhTdHJ1Y3QtPmluZHBlcmlvZCkpOworCQkJCUZvcm1fcGdfcGVy aW9kIHBlcmlvZDsKKworCQkJCWlmICghSGVhcFR1cGxlSXNWYWxpZChwZXJpb2RUdXBsZSkp CisJCQkJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBwZXJpb2QgJXUi LCBpbmRleFN0cnVjdC0+aW5kcGVyaW9kKTsKKworCQkJCXBlcmlvZCA9IChGb3JtX3BnX3Bl cmlvZCkgR0VUU1RSVUNUKHBlcmlvZFR1cGxlKTsKKwkJCQlhdHRudW1zW2ldID0gSW52YWxp ZE9pZDsKKwkJCQlwZXJpb2RhdHRudW1zWzBdID0gcGVyaW9kLT5wZXJzdGFydDsKKwkJCQlw ZXJpb2RhdHRudW1zWzFdID0gcGVyaW9kLT5wZXJlbmQ7CisJCQkJcGVyaW9kYXR0dHlwaWRz WzBdID0gcGVyaW9kLT5wZXJybmd0eXBlOworCQkJCXBlcmlvZGF0dHR5cGlkc1sxXSA9IHBl cmlvZC0+cGVycm5ndHlwZTsKKwkJCQlvcGNsYXNzZXNbaV0gPSBpbmRjbGFzcy0+dmFsdWVz W2ldOworCQkJCSpwZXJpb2RpZCA9IHBlcmlvZC0+b2lkOworCQkJCSpwZXJpb2RhdHRuYW1l ID0gKE5vZGUgKiltYWtlU3RyaW5nKHBzdHJkdXAoTmFtZVN0cihwZXJpb2QtPnBlcm5hbWUp KSk7CisKKwkJCQlSZWxlYXNlU3lzQ2FjaGUocGVyaW9kVHVwbGUpOworCQkJfQorCQkJZWxz ZSB7CisJCQkJLyogd2UgaGF2ZSBhIHJhbmdlICovCisJCQkJLyogVGhlIGNhbGxlciB3aWxs IHNldCBhdHRudW1zW2ldICovCisJCQkJcGVyaW9kYXR0bnVtc1swXSA9IHBrYXR0bm87CisJ CQkJcGVyaW9kYXR0dHlwaWRzWzBdID0gYXR0bnVtVHlwZUlkKHBrcmVsLCBwa2F0dG5vKTsK KwkJCQlvcGNsYXNzZXNbaV0gPSBpbmRjbGFzcy0+dmFsdWVzW2ldOworCQkJCSpwZXJpb2Rp ZCA9IEludmFsaWRPaWQ7CisJCQkJKnBlcmlvZGF0dG5hbWUgPSAoTm9kZSAqKW1ha2VTdHJp bmcocHN0cmR1cChOYW1lU3RyKCphdHRudW1BdHROYW1lKHBrcmVsLCBwa2F0dG5vKSkpKTsK KwkJCX0KKwkJfQorCQllbHNlCisJCXsKKwkJCWF0dG51bXNbaV0gPSBwa2F0dG5vOworCQkJ YXR0dHlwaWRzW2ldID0gYXR0bnVtVHlwZUlkKHBrcmVsLCBwa2F0dG5vKTsKKwkJCW9wY2xh c3Nlc1tpXSA9IGluZGNsYXNzLT52YWx1ZXNbaV07CisJCQkqYXR0bmFtZWxpc3QgPSBsYXBw ZW5kKCphdHRuYW1lbGlzdCwKKwkJCQkJCQkJICBtYWtlU3RyaW5nKHBzdHJkdXAoTmFtZVN0 cigqYXR0bnVtQXR0TmFtZShwa3JlbCwgcGthdHRubykpKSkpOworCQkJKnBlcmlvZGlkID0g SW52YWxpZE9pZDsKKwkJfQogCX0KIAogCVJlbGVhc2VTeXNDYWNoZShpbmRleFR1cGxlKTsK IAotCXJldHVybiBpOworCWlmIChpbmRleFN0cnVjdC0+aW5kaXNleGNsdXNpb24pIHJldHVy biBpIC0gMTsKKwllbHNlIHJldHVybiBpOwogfQogCiAvKgogICogdHJhbnNmb3JtRmtleUNo ZWNrQXR0cnMgLQogICoKICAqCU1ha2Ugc3VyZSB0aGF0IHRoZSBhdHRyaWJ1dGVzIG9mIGEg cmVmZXJlbmNlZCB0YWJsZSBiZWxvbmcgdG8gYSB1bmlxdWUKLSAqCShvciBwcmltYXJ5IGtl eSkgY29uc3RyYWludC4gIFJldHVybiB0aGUgT0lEIG9mIHRoZSBpbmRleCBzdXBwb3J0aW5n Ci0gKgl0aGUgY29uc3RyYWludCwgYXMgd2VsbCBhcyB0aGUgb3BjbGFzc2VzIGFzc29jaWF0 ZWQgd2l0aCB0aGUgaW5kZXgKKyAqCShvciBwcmltYXJ5IGtleSkgY29uc3RyYWludC4gIE9y IGlmIHRoaXMgaXMgYSB0ZW1wb3JhbCBmb3JlaWduIGtleQorICoJdGhlIHByaW1hcnkga2V5 IHNob3VsZCBiZSBhbiBleGNsdXNpb24gY29uc3RyYWludCBpbnN0ZWFkLgorICoJSXQncyBv a2F5IHRvIGhhdmUgYSBQRVJJT0QgcmVmZXJlbmNpbmcgYSByYW5nZSBvciBhIHJhbmdlIHJl ZmVyZW5jaW5nCisgKglhIFBFUklPRCwgYXMgbG9uZyBhcyB0aGUgdHlwZXMgbWF0Y2ggdXAu IElmIHRoZSBQSyB1c2VzIGEgUEVSSU9ELAorICoJdGhlbiBwZXJpb2RpZCBzaG91bGQgYmUg c2V0IGFuZCBwZXJpb2RhdHRudW1zIHNob3VsZCBjb250YWluIHRoZQorICoJc3RhcnQgYW5k IGVuZCBhdHRudW1zLiBPdGhlcndpc2UgcGVyaW9kYXR0bnVtcyBzaG91bGQgY29udGFpbiB0 aGUKKyAqCXJhbmdlIGF0dG51bS4KKyAqCVJldHVybiB0aGUgT0lEIG9mIHRoZSBpbmRleCBz dXBwb3J0aW5nIHRoZSBjb25zdHJhaW50LAorICoJYXMgd2VsbCBhcyB0aGUgb3BjbGFzc2Vz IGFzc29jaWF0ZWQgd2l0aCB0aGUgaW5kZXgKICAqCWNvbHVtbnMuCiAgKi8KIHN0YXRpYyBP aWQKIHRyYW5zZm9ybUZrZXlDaGVja0F0dHJzKFJlbGF0aW9uIHBrcmVsLAogCQkJCQkJaW50 IG51bWF0dHJzLCBpbnQxNiAqYXR0bnVtcywKKwkJCQkJCWJvb2wgaXNfdGVtcG9yYWwsIGlu dDE2ICpwZXJpb2RhdHRudW1zLAorCQkJCQkJT2lkIHBlcmlvZGlkLAogCQkJCQkJT2lkICpv cGNsYXNzZXMpIC8qIG91dHB1dCBwYXJhbWV0ZXIgKi8KIHsKIAlPaWQJCQlpbmRleG9pZCA9 IEludmFsaWRPaWQ7CkBAIC0xMjAxNSw2ICsxMjI0Myw3IEBAIHRyYW5zZm9ybUZrZXlDaGVj a0F0dHJzKFJlbGF0aW9uIHBrcmVsLAogCUxpc3RDZWxsICAgKmluZGV4b2lkc2NhbjsKIAlp bnQJCQlpLAogCQkJCWo7CisJYm9vbAkJaGFzX3BlcmlvZCA9IHBlcmlvZGlkICE9IEludmFs aWRPaWQ7CiAKIAkvKgogCSAqIFJlamVjdCBkdXBsaWNhdGUgYXBwZWFyYW5jZXMgb2YgY29s dW1ucyBpbiB0aGUgcmVmZXJlbmNlZC1jb2x1bW5zIGxpc3QuCkBAIC0xMjAzMiw2ICsxMjI2 MSwxMCBAQCB0cmFuc2Zvcm1Ga2V5Q2hlY2tBdHRycyhSZWxhdGlvbiBwa3JlbCwKIAkJCQkJ CShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9GT1JFSUdOX0tFWSksCiAJCQkJCQkgZXJybXNn KCJmb3JlaWduIGtleSByZWZlcmVuY2VkLWNvbHVtbnMgbGlzdCBtdXN0IG5vdCBjb250YWlu IGR1cGxpY2F0ZXMiKSkpOwogCQl9CisJCWlmIChpc190ZW1wb3JhbCAmJiBhdHRudW1zW2ld ID09IHBlcmlvZGF0dG51bXNbMF0pCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29k ZShFUlJDT0RFX0lOVkFMSURfRk9SRUlHTl9LRVkpLAorCQkJCQkgZXJybXNnKCJmb3JlaWdu IGtleSByZWZlcmVuY2VkLWNvbHVtbnMgbGlzdCBtdXN0IG5vdCBjb250YWluIGR1cGxpY2F0 ZXMiKSkpOwogCX0KIAogCS8qCkBAIC0xMjA1MywxNSArMTIyODYsMTkgQEAgdHJhbnNmb3Jt RmtleUNoZWNrQXR0cnMoUmVsYXRpb24gcGtyZWwsCiAJCWluZGV4U3RydWN0ID0gKEZvcm1f cGdfaW5kZXgpIEdFVFNUUlVDVChpbmRleFR1cGxlKTsKIAogCQkvKgotCQkgKiBNdXN0IGhh dmUgdGhlIHJpZ2h0IG51bWJlciBvZiBjb2x1bW5zOyBtdXN0IGJlIHVuaXF1ZSBhbmQgbm90 IGEKLQkJICogcGFydGlhbCBpbmRleDsgZm9yZ2V0IGl0IGlmIHRoZXJlIGFyZSBhbnkgZXhw cmVzc2lvbnMsIHRvby4gSW52YWxpZAotCQkgKiBpbmRleGVzIGFyZSBvdXQgYXMgd2VsbC4K KwkJICogTXVzdCBoYXZlIHRoZSByaWdodCBudW1iZXIgb2YgY29sdW1uczsgbXVzdCBiZSB1 bmlxdWUKKwkJICogKG9yIGlmIHRlbXBvcmFsIHRoZW4gZXhjbHVzaW9uIGluc3RlYWQpIGFu ZCBub3QgYQorCQkgKiBwYXJ0aWFsIGluZGV4OyBmb3JnZXQgaXQgaWYgdGhlcmUgYXJlIGFu eSBleHByZXNzaW9ucywgdG9vICh1bmxlc3MKKwkJICogaXQgaGFzIGEgUEVSSU9EKS4gSW52 YWxpZCBpbmRleGVzIGFyZSBvdXQgYXMgd2VsbC4KIAkJICovCi0JCWlmIChpbmRleFN0cnVj dC0+aW5kbmtleWF0dHMgPT0gbnVtYXR0cnMgJiYKLQkJCWluZGV4U3RydWN0LT5pbmRpc3Vu aXF1ZSAmJgorCQlpZiAoKGlzX3RlbXBvcmFsCisJCQkgID8gKGluZGV4U3RydWN0LT5pbmRu a2V5YXR0cyA9PSBudW1hdHRycyArIDEgJiYKKwkJCQkgaW5kZXhTdHJ1Y3QtPmluZGlzZXhj bHVzaW9uKQorCQkJICA6IChpbmRleFN0cnVjdC0+aW5kbmtleWF0dHMgPT0gbnVtYXR0cnMg JiYKKwkJCQkgaW5kZXhTdHJ1Y3QtPmluZGlzdW5pcXVlKSkgJiYKIAkJCWluZGV4U3RydWN0 LT5pbmRpc3ZhbGlkICYmCiAJCQloZWFwX2F0dGlzbnVsbChpbmRleFR1cGxlLCBBbnVtX3Bn X2luZGV4X2luZHByZWQsIE5VTEwpICYmCi0JCQloZWFwX2F0dGlzbnVsbChpbmRleFR1cGxl LCBBbnVtX3BnX2luZGV4X2luZGV4cHJzLCBOVUxMKSkKKwkJCShpbmRleFN0cnVjdC0+aW5k cGVyaW9kICE9IEludmFsaWRPaWQgfHwgaGVhcF9hdHRpc251bGwoaW5kZXhUdXBsZSwgQW51 bV9wZ19pbmRleF9pbmRleHBycywgTlVMTCkpKQogCQl7CiAJCQlEYXR1bQkJaW5kY2xhc3NE YXR1bTsKIAkJCW9pZHZlY3RvciAgKmluZGNsYXNzOwpAQCAtMTIwOTYsNiArMTIzMzMsMzIg QEAgdHJhbnNmb3JtRmtleUNoZWNrQXR0cnMoUmVsYXRpb24gcGtyZWwsCiAJCQkJaWYgKCFm b3VuZCkKIAkJCQkJYnJlYWs7CiAJCQl9CisJCQlpZiAoZm91bmQgJiYgaXNfdGVtcG9yYWwp CisJCQl7CisJCQkJaWYgKGhhc19wZXJpb2QpCisJCQkJeworCQkJCQlpZiAocGVyaW9kaWQg PT0gaW5kZXhTdHJ1Y3QtPmluZHBlcmlvZCkKKwkJCQkJeworCQkJCQkJZm91bmQgPSB0cnVl OworCQkJCQkJb3BjbGFzc2VzW251bWF0dHJzXSA9IGluZGNsYXNzLT52YWx1ZXNbbnVtYXR0 cnMgLSAxXTsKKwkJCQkJfQorCQkJCQllbHNlCisJCQkJCQlmb3VuZCA9IGZhbHNlOworCQkJ CX0KKwkJCQllbHNlCisJCQkJeworCQkJCQlmb3VuZCA9IGZhbHNlOworCQkJCQlmb3IgKGog PSAwOyBqIDwgbnVtYXR0cnMgKyAxOyBqKyspCisJCQkJCXsKKwkJCQkJCWlmIChwZXJpb2Rh dHRudW1zWzBdID09IGluZGV4U3RydWN0LT5pbmRrZXkudmFsdWVzW2pdKQorCQkJCQkJewor CQkJCQkJCW9wY2xhc3Nlc1tudW1hdHRyc10gPSBpbmRjbGFzcy0+dmFsdWVzW2pdOworCQkJ CQkJCWZvdW5kID0gdHJ1ZTsKKwkJCQkJCQlicmVhazsKKwkJCQkJCX0KKwkJCQkJfQorCQkJ CX0KKwkJCX0KIAogCQkJLyoKIAkJCSAqIFJlZnVzZSB0byB1c2UgYSBkZWZlcnJhYmxlIHVu aXF1ZS9wcmltYXJ5IGtleS4gIFRoaXMgaXMgcGVyIFNRTApAQCAtMTIyMDUsNyArMTI0Njgs OCBAQCB2YWxpZGF0ZUZvcmVpZ25LZXlDb25zdHJhaW50KGNoYXIgKmNvbm5hbWUsCiAJCQkJ CQkJIFJlbGF0aW9uIHJlbCwKIAkJCQkJCQkgUmVsYXRpb24gcGtyZWwsCiAJCQkJCQkJIE9p ZCBwa2luZE9pZCwKLQkJCQkJCQkgT2lkIGNvbnN0cmFpbnRPaWQpCisJCQkJCQkJIE9pZCBj b25zdHJhaW50T2lkLAorCQkJCQkJCSBib29sIHRlbXBvcmFsKQogewogCVR1cGxlVGFibGVT bG90ICpzbG90OwogCVRhYmxlU2NhbkRlc2Mgc2NhbjsKQEAgLTEyMjM0LDggKzEyNDk4LDEw IEBAIHZhbGlkYXRlRm9yZWlnbktleUNvbnN0cmFpbnQoY2hhciAqY29ubmFtZSwKIAkvKgog CSAqIFNlZSBpZiB3ZSBjYW4gZG8gaXQgd2l0aCBhIHNpbmdsZSBMRUZUIEpPSU4gcXVlcnku ICBBIGZhbHNlIHJlc3VsdAogCSAqIGluZGljYXRlcyB3ZSBtdXN0IHByb2NlZWQgd2l0aCB0 aGUgZmlyZS10aGUtdHJpZ2dlciBtZXRob2QuCisJICogV2UgY2FuJ3QgZG8gYSBMRUZUIEpP SU4gZm9yIHRlbXBvcmFsIEZLcyB5ZXQsCisJICogYnV0IHdlIGNhbiBvbmNlIHdlIHN1cHBv cnQgdGVtcG9yYWwgbGVmdCBqb2lucy4KIAkgKi8KLQlpZiAoUklfSW5pdGlhbF9DaGVjaygm dHJpZywgcmVsLCBwa3JlbCkpCisJaWYgKCF0ZW1wb3JhbCAmJiBSSV9Jbml0aWFsX0NoZWNr KCZ0cmlnLCByZWwsIHBrcmVsKSkKIAkJcmV0dXJuOwogCiAJLyoKQEAgLTEyMzA1LDYgKzEy NTcxLDcgQEAgQ3JlYXRlRktDaGVja1RyaWdnZXIoT2lkIG15UmVsT2lkLCBPaWQgcmVmUmVs T2lkLCBDb25zdHJhaW50ICpma2NvbnN0cmFpbnQsCiB7CiAJT2JqZWN0QWRkcmVzcyB0cmln QWRkcmVzczsKIAlDcmVhdGVUcmlnU3RtdCAqZmtfdHJpZ2dlcjsKKwlib29sIGlzX3RlbXBv cmFsID0gZmtjb25zdHJhaW50LT5ma19wZXJpb2Q7CiAKIAkvKgogCSAqIE5vdGU6IGZvciBh IHNlbGYtcmVmZXJlbnRpYWwgRksgKHJlZmVyZW5jaW5nIGFuZCByZWZlcmVuY2VkIHRhYmxl cyBhcmUKQEAgLTEyMzE4LDE4ICsxMjU4NSwyNyBAQCBDcmVhdGVGS0NoZWNrVHJpZ2dlcihP aWQgbXlSZWxPaWQsIE9pZCByZWZSZWxPaWQsIENvbnN0cmFpbnQgKmZrY29uc3RyYWludCwK IAlma190cmlnZ2VyID0gbWFrZU5vZGUoQ3JlYXRlVHJpZ1N0bXQpOwogCWZrX3RyaWdnZXIt PnJlcGxhY2UgPSBmYWxzZTsKIAlma190cmlnZ2VyLT5pc2NvbnN0cmFpbnQgPSB0cnVlOwot CWZrX3RyaWdnZXItPnRyaWduYW1lID0gIlJJX0NvbnN0cmFpbnRUcmlnZ2VyX2MiOworCWlm IChpc190ZW1wb3JhbCkKKwkJZmtfdHJpZ2dlci0+dHJpZ25hbWUgPSAiVFJJX0NvbnN0cmFp bnRUcmlnZ2VyX2MiOworCWVsc2UKKwkJZmtfdHJpZ2dlci0+dHJpZ25hbWUgPSAiUklfQ29u c3RyYWludFRyaWdnZXJfYyI7CiAJZmtfdHJpZ2dlci0+cmVsYXRpb24gPSBOVUxMOwogCiAJ LyogRWl0aGVyIE9OIElOU0VSVCBvciBPTiBVUERBVEUgKi8KIAlpZiAob25faW5zZXJ0KQog CXsKLQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiUklfRktleV9j aGVja19pbnMiKTsKKwkJaWYgKGlzX3RlbXBvcmFsKQorCQkJZmtfdHJpZ2dlci0+ZnVuY25h bWUgPSBTeXN0ZW1GdW5jTmFtZSgiVFJJX0ZLZXlfY2hlY2tfaW5zIik7CisJCWVsc2UKKwkJ CWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlfY2hlY2tf aW5zIik7CiAJCWZrX3RyaWdnZXItPmV2ZW50cyA9IFRSSUdHRVJfVFlQRV9JTlNFUlQ7CiAJ fQogCWVsc2UKIAl7Ci0JCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUo IlJJX0ZLZXlfY2hlY2tfdXBkIik7CisJCWlmIChpc190ZW1wb3JhbCkKKwkJCWZrX3RyaWdn ZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlRSSV9GS2V5X2NoZWNrX3VwZCIpOwor CQllbHNlCisJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9G S2V5X2NoZWNrX3VwZCIpOwogCQlma190cmlnZ2VyLT5ldmVudHMgPSBUUklHR0VSX1RZUEVf VVBEQVRFOwogCX0KIApAQCAtMTIzODcsMzcgKzEyNjYzLDc2IEBAIGNyZWF0ZUZvcmVpZ25L ZXlBY3Rpb25UcmlnZ2VycyhSZWxhdGlvbiByZWwsIE9pZCByZWZSZWxPaWQsIENvbnN0cmFp bnQgKmZrY29uc3RyCiAJZmtfdHJpZ2dlci0+d2hlbkNsYXVzZSA9IE5VTEw7CiAJZmtfdHJp Z2dlci0+dHJhbnNpdGlvblJlbHMgPSBOSUw7CiAJZmtfdHJpZ2dlci0+Y29uc3RycmVsID0g TlVMTDsKLQlzd2l0Y2ggKGZrY29uc3RyYWludC0+ZmtfZGVsX2FjdGlvbikKKwlpZiAoZmtj b25zdHJhaW50LT5ma19wZXJpb2QgIT0gTlVMTCkKIAl7Ci0JCWNhc2UgRktDT05TVFJfQUNU SU9OX05PQUNUSU9OOgotCQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZrY29uc3RyYWlu dC0+ZGVmZXJyYWJsZTsKLQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZrY29uc3Ry YWludC0+aW5pdGRlZmVycmVkOwotCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1G dW5jTmFtZSgiUklfRktleV9ub2FjdGlvbl9kZWwiKTsKLQkJCWJyZWFrOwotCQljYXNlIEZL Q09OU1RSX0FDVElPTl9SRVNUUklDVDoKLQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBm YWxzZTsKLQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNlOwotCQkJZmtfdHJp Z2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiUklfRktleV9yZXN0cmljdF9kZWwi KTsKLQkJCWJyZWFrOwotCQljYXNlIEZLQ09OU1RSX0FDVElPTl9DQVNDQURFOgotCQkJZmtf dHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNlOwotCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVy cmVkID0gZmFsc2U7Ci0JCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1l KCJSSV9GS2V5X2Nhc2NhZGVfZGVsIik7Ci0JCQlicmVhazsKLQkJY2FzZSBGS0NPTlNUUl9B Q1RJT05fU0VUTlVMTDoKLQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBmYWxzZTsKLQkJ CWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNlOwotCQkJZmtfdHJpZ2dlci0+ZnVu Y25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiUklfRktleV9zZXRudWxsX2RlbCIpOwotCQkJYnJl YWs7Ci0JCWNhc2UgRktDT05TVFJfQUNUSU9OX1NFVERFRkFVTFQ6Ci0JCQlma190cmlnZ2Vy LT5kZWZlcnJhYmxlID0gZmFsc2U7Ci0JCQlma190cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBm YWxzZTsKLQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZL ZXlfc2V0ZGVmYXVsdF9kZWwiKTsKLQkJCWJyZWFrOwotCQlkZWZhdWx0OgotCQkJZWxvZyhF UlJPUiwgInVucmVjb2duaXplZCBGSyBhY3Rpb24gdHlwZTogJWQiLAotCQkJCSAoaW50KSBm a2NvbnN0cmFpbnQtPmZrX2RlbF9hY3Rpb24pOwotCQkJYnJlYWs7CisJCS8qIFRlbXBvcmFs IGZvcmVpZ24ga2V5cyAqLworCQlzd2l0Y2ggKGZrY29uc3RyYWludC0+ZmtfZGVsX2FjdGlv bikKKwkJeworCQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fTk9BQ1RJT046CisJCQkJZmtfdHJp Z2dlci0+ZGVmZXJyYWJsZSA9IGZrY29uc3RyYWludC0+ZGVmZXJyYWJsZTsKKwkJCQlma190 cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBma2NvbnN0cmFpbnQtPmluaXRkZWZlcnJlZDsKKwkJ CQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJUUklfRktleV9ub2Fj dGlvbl9kZWwiKTsKKwkJCQlicmVhazsKKwkJCWNhc2UgRktDT05TVFJfQUNUSU9OX1JFU1RS SUNUOgorCQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBmYWxzZTsKKwkJCQlma190cmln Z2VyLT5pbml0ZGVmZXJyZWQgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9 IFN5c3RlbUZ1bmNOYW1lKCJUUklfRktleV9yZXN0cmljdF9kZWwiKTsKKwkJCQlicmVhazsK KwkJCWNhc2UgRktDT05TVFJfQUNUSU9OX0NBU0NBREU6CisJCQkJZmtfdHJpZ2dlci0+ZGVm ZXJyYWJsZSA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNl OworCQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlRSSV9GS2V5 X2Nhc2NhZGVfZGVsIik7CisJCQkJYnJlYWs7CisJCQljYXNlIEZLQ09OU1RSX0FDVElPTl9T RVROVUxMOgorCQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBmYWxzZTsKKwkJCQlma190 cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5mdW5jbmFt ZSA9IFN5c3RlbUZ1bmNOYW1lKCJUUklfRktleV9zZXRudWxsX2RlbCIpOworCQkJCWJyZWFr OworCQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fU0VUREVGQVVMVDoKKwkJCQlma190cmlnZ2Vy LT5kZWZlcnJhYmxlID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0g ZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiVFJJ X0ZLZXlfc2V0ZGVmYXVsdF9kZWwiKTsKKwkJCQlicmVhazsKKwkJCWRlZmF1bHQ6CisJCQkJ ZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBGSyBhY3Rpb24gdHlwZTogJWQiLAorCQkJCQkg KGludCkgZmtjb25zdHJhaW50LT5ma19kZWxfYWN0aW9uKTsKKwkJCQlicmVhazsKKwkJfQor CX0KKwllbHNlCisJeworCQlzd2l0Y2ggKGZrY29uc3RyYWludC0+ZmtfZGVsX2FjdGlvbikK KwkJeworCQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fTk9BQ1RJT046CisJCQkJZmtfdHJpZ2dl ci0+ZGVmZXJyYWJsZSA9IGZrY29uc3RyYWludC0+ZGVmZXJyYWJsZTsKKwkJCQlma190cmln Z2VyLT5pbml0ZGVmZXJyZWQgPSBma2NvbnN0cmFpbnQtPmluaXRkZWZlcnJlZDsKKwkJCQlm a190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X25vYWN0aW9u X2RlbCIpOworCQkJCWJyZWFrOworCQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fUkVTVFJJQ1Q6 CisJCQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXIt PmluaXRkZWZlcnJlZCA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lz dGVtRnVuY05hbWUoIlJJX0ZLZXlfcmVzdHJpY3RfZGVsIik7CisJCQkJYnJlYWs7CisJCQlj YXNlIEZLQ09OU1RSX0FDVElPTl9DQVNDQURFOgorCQkJCWZrX3RyaWdnZXItPmRlZmVycmFi bGUgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBmYWxzZTsKKwkJ CQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X2Nhc2Nh ZGVfZGVsIik7CisJCQkJYnJlYWs7CisJCQljYXNlIEZLQ09OU1RSX0FDVElPTl9TRVROVUxM OgorCQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBmYWxzZTsKKwkJCQlma190cmlnZ2Vy LT5pbml0ZGVmZXJyZWQgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5 c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X3NldG51bGxfZGVsIik7CisJCQkJYnJlYWs7CisJCQlj YXNlIEZLQ09OU1RSX0FDVElPTl9TRVRERUZBVUxUOgorCQkJCWZrX3RyaWdnZXItPmRlZmVy cmFibGUgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBmYWxzZTsK KwkJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X3Nl dGRlZmF1bHRfZGVsIik7CisJCQkJYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCWVsb2coRVJS T1IsICJ1bnJlY29nbml6ZWQgRksgYWN0aW9uIHR5cGU6ICVkIiwKKwkJCQkJIChpbnQpIGZr Y29uc3RyYWludC0+ZmtfZGVsX2FjdGlvbik7CisJCQkJYnJlYWs7CisJCX0KIAl9CiAKIAl0 cmlnQWRkcmVzcyA9IENyZWF0ZVRyaWdnZXIoZmtfdHJpZ2dlciwgTlVMTCwgcmVmUmVsT2lk LApAQCAtMTI0NDcsMzcgKzEyNzYyLDc2IEBAIGNyZWF0ZUZvcmVpZ25LZXlBY3Rpb25Ucmln Z2VycyhSZWxhdGlvbiByZWwsIE9pZCByZWZSZWxPaWQsIENvbnN0cmFpbnQgKmZrY29uc3Ry CiAJZmtfdHJpZ2dlci0+d2hlbkNsYXVzZSA9IE5VTEw7CiAJZmtfdHJpZ2dlci0+dHJhbnNp dGlvblJlbHMgPSBOSUw7CiAJZmtfdHJpZ2dlci0+Y29uc3RycmVsID0gTlVMTDsKLQlzd2l0 Y2ggKGZrY29uc3RyYWludC0+ZmtfdXBkX2FjdGlvbikKKwlpZiAoZmtjb25zdHJhaW50LT5m a19wZXJpb2QgIT0gTlVMTCkKIAl7Ci0JCWNhc2UgRktDT05TVFJfQUNUSU9OX05PQUNUSU9O OgotCQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZrY29uc3RyYWludC0+ZGVmZXJyYWJs ZTsKLQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZrY29uc3RyYWludC0+aW5pdGRl ZmVycmVkOwotCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiUklf RktleV9ub2FjdGlvbl91cGQiKTsKLQkJCWJyZWFrOwotCQljYXNlIEZLQ09OU1RSX0FDVElP Tl9SRVNUUklDVDoKLQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBmYWxzZTsKLQkJCWZr X3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNlOwotCQkJZmtfdHJpZ2dlci0+ZnVuY25h bWUgPSBTeXN0ZW1GdW5jTmFtZSgiUklfRktleV9yZXN0cmljdF91cGQiKTsKLQkJCWJyZWFr OwotCQljYXNlIEZLQ09OU1RSX0FDVElPTl9DQVNDQURFOgotCQkJZmtfdHJpZ2dlci0+ZGVm ZXJyYWJsZSA9IGZhbHNlOwotCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmFsc2U7 Ci0JCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X2Nh c2NhZGVfdXBkIik7Ci0JCQlicmVhazsKLQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fU0VUTlVM TDoKLQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBmYWxzZTsKLQkJCWZrX3RyaWdnZXIt PmluaXRkZWZlcnJlZCA9IGZhbHNlOwotCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0 ZW1GdW5jTmFtZSgiUklfRktleV9zZXRudWxsX3VwZCIpOwotCQkJYnJlYWs7Ci0JCWNhc2Ug RktDT05TVFJfQUNUSU9OX1NFVERFRkFVTFQ6Ci0JCQlma190cmlnZ2VyLT5kZWZlcnJhYmxl ID0gZmFsc2U7Ci0JCQlma190cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBmYWxzZTsKLQkJCWZr X3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlfc2V0ZGVmYXVs dF91cGQiKTsKLQkJCWJyZWFrOwotCQlkZWZhdWx0OgotCQkJZWxvZyhFUlJPUiwgInVucmVj b2duaXplZCBGSyBhY3Rpb24gdHlwZTogJWQiLAotCQkJCSAoaW50KSBma2NvbnN0cmFpbnQt PmZrX3VwZF9hY3Rpb24pOwotCQkJYnJlYWs7CisJCS8qIFRlbXBvcmFsIGZvcmVpZ24ga2V5 cyAqLworCQlzd2l0Y2ggKGZrY29uc3RyYWludC0+ZmtfdXBkX2FjdGlvbikKKwkJeworCQkJ Y2FzZSBGS0NPTlNUUl9BQ1RJT05fTk9BQ1RJT046CisJCQkJZmtfdHJpZ2dlci0+ZGVmZXJy YWJsZSA9IGZrY29uc3RyYWludC0+ZGVmZXJyYWJsZTsKKwkJCQlma190cmlnZ2VyLT5pbml0 ZGVmZXJyZWQgPSBma2NvbnN0cmFpbnQtPmluaXRkZWZlcnJlZDsKKwkJCQlma190cmlnZ2Vy LT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJUUklfRktleV9ub2FjdGlvbl91cGQiKTsK KwkJCQlicmVhazsKKwkJCWNhc2UgRktDT05TVFJfQUNUSU9OX1JFU1RSSUNUOgorCQkJCWZr X3RyaWdnZXItPmRlZmVycmFibGUgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5pbml0ZGVm ZXJyZWQgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNO YW1lKCJUUklfRktleV9yZXN0cmljdF91cGQiKTsKKwkJCQlicmVhazsKKwkJCWNhc2UgRktD T05TVFJfQUNUSU9OX0NBU0NBREU6CisJCQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZh bHNlOworCQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNlOworCQkJCWZrX3Ry aWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlRSSV9GS2V5X2Nhc2NhZGVfdXBk Iik7CisJCQkJYnJlYWs7CisJCQljYXNlIEZLQ09OU1RSX0FDVElPTl9TRVROVUxMOgorCQkJ CWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5pbml0 ZGVmZXJyZWQgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1 bmNOYW1lKCJUUklfRktleV9zZXRudWxsX3VwZCIpOworCQkJCWJyZWFrOworCQkJY2FzZSBG S0NPTlNUUl9BQ1RJT05fU0VUREVGQVVMVDoKKwkJCQlma190cmlnZ2VyLT5kZWZlcnJhYmxl ID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmFsc2U7CisJCQkJ ZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiVFJJX0ZLZXlfc2V0ZGVm YXVsdF91cGQiKTsKKwkJCQlicmVhazsKKwkJCWRlZmF1bHQ6CisJCQkJZWxvZyhFUlJPUiwg InVucmVjb2duaXplZCBGSyBhY3Rpb24gdHlwZTogJWQiLAorCQkJCQkgKGludCkgZmtjb25z dHJhaW50LT5ma191cGRfYWN0aW9uKTsKKwkJCQlicmVhazsKKwkJfQorCX0KKwllbHNlCisJ eworCQlzd2l0Y2ggKGZrY29uc3RyYWludC0+ZmtfdXBkX2FjdGlvbikKKwkJeworCQkJY2Fz ZSBGS0NPTlNUUl9BQ1RJT05fTk9BQ1RJT046CisJCQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJs ZSA9IGZrY29uc3RyYWludC0+ZGVmZXJyYWJsZTsKKwkJCQlma190cmlnZ2VyLT5pbml0ZGVm ZXJyZWQgPSBma2NvbnN0cmFpbnQtPmluaXRkZWZlcnJlZDsKKwkJCQlma190cmlnZ2VyLT5m dW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X25vYWN0aW9uX3VwZCIpOworCQkJ CWJyZWFrOworCQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fUkVTVFJJQ1Q6CisJCQkJZmtfdHJp Z2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJl ZCA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUo IlJJX0ZLZXlfcmVzdHJpY3RfdXBkIik7CisJCQkJYnJlYWs7CisJCQljYXNlIEZLQ09OU1RS X0FDVElPTl9DQVNDQURFOgorCQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBmYWxzZTsK KwkJCQlma190cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBmYWxzZTsKKwkJCQlma190cmlnZ2Vy LT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X2Nhc2NhZGVfdXBkIik7CisJ CQkJYnJlYWs7CisJCQljYXNlIEZLQ09OU1RSX0FDVElPTl9TRVROVUxMOgorCQkJCWZrX3Ry aWdnZXItPmRlZmVycmFibGUgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5pbml0ZGVmZXJy ZWQgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1l KCJSSV9GS2V5X3NldG51bGxfdXBkIik7CisJCQkJYnJlYWs7CisJCQljYXNlIEZLQ09OU1RS X0FDVElPTl9TRVRERUZBVUxUOgorCQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBmYWxz ZTsKKwkJCQlma190cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBmYWxzZTsKKwkJCQlma190cmln Z2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X3NldGRlZmF1bHRfdXBk Iik7CisJCQkJYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCWVsb2coRVJST1IsICJ1bnJlY29n bml6ZWQgRksgYWN0aW9uIHR5cGU6ICVkIiwKKwkJCQkJIChpbnQpIGZrY29uc3RyYWludC0+ ZmtfdXBkX2FjdGlvbik7CisJCQkJYnJlYWs7CisJCX0KIAl9CiAKIAl0cmlnQWRkcmVzcyA9 IENyZWF0ZVRyaWdnZXIoZmtfdHJpZ2dlciwgTlVMTCwgcmVmUmVsT2lkLApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dlci5jIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvdHJpZ2dlci5jCmluZGV4IGE2MzBjNDYzYTQuLjEzYWJkZTRmZjUgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIuYworKysgYi9zcmMvYmFja2VuZC9jb21t YW5kcy90cmlnZ2VyLmMKQEAgLTg0NCw2ICs4NDQsNyBAQCBDcmVhdGVUcmlnZ2VyRmlyaW5n T24oQ3JlYXRlVHJpZ1N0bXQgKnN0bXQsIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nLAogCQkJ CQkJCQkJCQkgIHRydWUsIC8qIG5vaW5oZXJpdCAqLwogCQkJCQkJCQkJCQkgIGZhbHNlLCAv KiBjb250ZW1wb3JhbCAqLwogCQkJCQkJCQkJCQkgIEludmFsaWRPaWQsIC8qIGNvbnBlcmlv ZCAqLworCQkJCQkJCQkJCQkgIEludmFsaWRPaWQsIC8qIGNvbmZwZXJpb2QgKi8KIAkJCQkJ CQkJCQkJICBpc0ludGVybmFsKTsJLyogaXNfaW50ZXJuYWwgKi8KIAl9CiAKQEAgLTQwODQs NiArNDA4NSw3IEBAIGFmdGVyVHJpZ2dlckFkZEV2ZW50KEFmdGVyVHJpZ2dlckV2ZW50TGlz dCAqZXZlbnRzLAogCQkJbmV3c2hhcmVkLT5hdHNfcmVsaWQgPT0gZXZ0c2hhcmVkLT5hdHNf cmVsaWQgJiYKIAkJCW5ld3NoYXJlZC0+YXRzX2V2ZW50ID09IGV2dHNoYXJlZC0+YXRzX2V2 ZW50ICYmCiAJCQluZXdzaGFyZWQtPmF0c190YWJsZSA9PSBldnRzaGFyZWQtPmF0c190YWJs ZSAmJgorCQkJbmV3c2hhcmVkLT5mb3JfcG9ydGlvbl9vZiA9PSBldnRzaGFyZWQtPmZvcl9w b3J0aW9uX29mICYmCiAJCQluZXdzaGFyZWQtPmF0c19maXJpbmdfaWQgPT0gMCkKIAkJCWJy ZWFrOwogCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3R5cGVjbWRzLmMg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy90eXBlY21kcy5jCmluZGV4IDc5NTExZTJhNmYuLmIz MTU3ZDQ3MGEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3R5cGVjbWRzLmMK KysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHlwZWNtZHMuYwpAQCAtMzU0Niw2ICszNTQ2 LDcgQEAgZG9tYWluQWRkQ29uc3RyYWludChPaWQgZG9tYWluT2lkLCBPaWQgZG9tYWluTmFt ZXNwYWNlLCBPaWQgYmFzZVR5cGVPaWQsCiAJCQkJCQkJICBmYWxzZSwJLyogY29ubm9pbmhl cml0ICovCiAJCQkJCQkJICBmYWxzZSwJLyogY29udGVtcG9yYWwgKi8KIAkJCQkJCQkgIElu dmFsaWRPaWQsIC8qIGNvbnBlcmlvZCAqLworCQkJCQkJCSAgSW52YWxpZE9pZCwgLyogY29u ZnBlcmlvZCAqLwogCQkJCQkJCSAgZmFsc2UpOwkvKiBpc19pbnRlcm5hbCAqLwogCWlmIChj b25zdHJBZGRyKQogCQlPYmplY3RBZGRyZXNzU2V0KCpjb25zdHJBZGRyLCBDb25zdHJhaW50 UmVsYXRpb25JZCwgY2NvaWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dy YW0ueSBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKaW5kZXggYmE2OTI1YWQ4OS4uMGVi MTFhNmZjYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQorKysgYi9z cmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CkBAIC01MjIsMTEgKzUyMiwxMiBAQCBzdGF0aWMg Tm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxp YXNlcywgTm9kZSAqcXVlcnkpOwogJXR5cGUgPG5vZGU+CVRhYmxlRWxlbWVudCBUeXBlZFRh YmxlRWxlbWVudCBDb25zdHJhaW50RWxlbSBUYWJsZUZ1bmNFbGVtZW50CiAldHlwZSA8bm9k ZT4JY29sdW1uRGVmIGNvbHVtbk9wdGlvbnMKICV0eXBlIDxkZWZlbHQ+CWRlZl9lbGVtIHJl bG9wdGlvbl9lbGVtIG9sZF9hZ2dyX2VsZW0gb3BlcmF0b3JfZGVmX2VsZW0KLSV0eXBlIDxu b2RlPglkZWZfYXJnIGNvbHVtbkVsZW0gd2l0aG91dE92ZXJsYXBzQ2xhdXNlCisldHlwZSA8 bm9kZT4JZGVmX2FyZyBjb2x1bW5FbGVtIHdpdGhvdXRPdmVybGFwc0NsYXVzZSBvcHRpb25h bFBlcmlvZE5hbWUKIAkJCQl3aGVyZV9jbGF1c2Ugd2hlcmVfb3JfY3VycmVudF9jbGF1c2UK IAkJCQlhX2V4cHIgYl9leHByIGNfZXhwciBBZXhwckNvbnN0IGluZGlyZWN0aW9uX2VsIG9w dF9zbGljZV9ib3VuZAogCQkJCWNvbHVtbnJlZiBpbl9leHByIGhhdmluZ19jbGF1c2UgZnVu Y190YWJsZSB4bWx0YWJsZSBhcnJheV9leHByCiAJCQkJT3B0V2hlcmVDbGF1c2Ugb3BlcmF0 b3JfZGVmX2FyZworJXR5cGUgPGxpc3Q+CW9wdF9jb2x1bW5fYW5kX3BlcmlvZF9saXN0CiAl dHlwZSA8bGlzdD4Jcm93c2Zyb21faXRlbSByb3dzZnJvbV9saXN0IG9wdF9jb2xfZGVmX2xp c3QKICV0eXBlIDxib29sZWFuPiBvcHRfb3JkaW5hbGl0eQogJXR5cGUgPGxpc3Q+CUV4Y2x1 c2lvbkNvbnN0cmFpbnRMaXN0IEV4Y2x1c2lvbkNvbnN0cmFpbnRFbGVtCkBAIC00MjM2LDIx ICs0MjM3LDIzIEBAIENvbnN0cmFpbnRFbGVtOgogCQkJCQkJCQkgICBOVUxMLCB5eXNjYW5u ZXIpOwogCQkJCQkkJCA9IChOb2RlICopIG47CiAJCQkJfQotCQkJfCBGT1JFSUdOIEtFWSAn KCcgY29sdW1uTGlzdCAnKScgUkVGRVJFTkNFUyBxdWFsaWZpZWRfbmFtZQotCQkJCW9wdF9j b2x1bW5fbGlzdCBrZXlfbWF0Y2gga2V5X2FjdGlvbnMgQ29uc3RyYWludEF0dHJpYnV0ZVNw ZWMKKwkJCXwgRk9SRUlHTiBLRVkgJygnIGNvbHVtbkxpc3Qgb3B0aW9uYWxQZXJpb2ROYW1l ICcpJyBSRUZFUkVOQ0VTIHF1YWxpZmllZF9uYW1lCisJCQkJb3B0X2NvbHVtbl9hbmRfcGVy aW9kX2xpc3Qga2V5X21hdGNoIGtleV9hY3Rpb25zIENvbnN0cmFpbnRBdHRyaWJ1dGVTcGVj CiAJCQkJewogCQkJCQlDb25zdHJhaW50ICpuID0gbWFrZU5vZGUoQ29uc3RyYWludCk7CiAK IAkJCQkJbi0+Y29udHlwZSA9IENPTlNUUl9GT1JFSUdOOwogCQkJCQluLT5sb2NhdGlvbiA9 IEAxOwotCQkJCQluLT5wa3RhYmxlID0gJDc7CisJCQkJCW4tPnBrdGFibGUgPSAkODsKIAkJ CQkJbi0+ZmtfYXR0cnMgPSAkNDsKLQkJCQkJbi0+cGtfYXR0cnMgPSAkODsKLQkJCQkJbi0+ ZmtfbWF0Y2h0eXBlID0gJDk7Ci0JCQkJCW4tPmZrX3VwZF9hY3Rpb24gPSAoJDEwKS0+dXBk YXRlQWN0aW9uLT5hY3Rpb247Ci0JCQkJCW4tPmZrX2RlbF9hY3Rpb24gPSAoJDEwKS0+ZGVs ZXRlQWN0aW9uLT5hY3Rpb247Ci0JCQkJCW4tPmZrX2RlbF9zZXRfY29scyA9ICgkMTApLT5k ZWxldGVBY3Rpb24tPmNvbHM7Ci0JCQkJCXByb2Nlc3NDQVNiaXRzKCQxMSwgQDExLCAiRk9S RUlHTiBLRVkiLAorCQkJCQluLT5ma19wZXJpb2QgPSAkNTsKKwkJCQkJbi0+cGtfYXR0cnMg PSBsaW5pdGlhbCgkOSk7CisJCQkJCW4tPnBrX3BlcmlvZCA9IGxzZWNvbmQoJDkpOworCQkJ CQluLT5ma19tYXRjaHR5cGUgPSAkMTA7CisJCQkJCW4tPmZrX3VwZF9hY3Rpb24gPSAoJDEx KS0+dXBkYXRlQWN0aW9uLT5hY3Rpb247CisJCQkJCW4tPmZrX2RlbF9hY3Rpb24gPSAoJDEx KS0+ZGVsZXRlQWN0aW9uLT5hY3Rpb247CisJCQkJCW4tPmZrX2RlbF9zZXRfY29scyA9ICgk MTEpLT5kZWxldGVBY3Rpb24tPmNvbHM7CisJCQkJCXByb2Nlc3NDQVNiaXRzKCQxMiwgQDEy LCAiRk9SRUlHTiBLRVkiLAogCQkJCQkJCQkgICAmbi0+ZGVmZXJyYWJsZSwgJm4tPmluaXRk ZWZlcnJlZCwKIAkJCQkJCQkJICAgJm4tPnNraXBfdmFsaWRhdGlvbiwgTlVMTCwKIAkJCQkJ CQkJICAgeXlzY2FubmVyKTsKQEAgLTQyNzgsNiArNDI4MSwxNiBAQCB3aXRob3V0T3Zlcmxh cHNDbGF1c2U6CiAJCQl8IC8qRU1QVFkqLyAgICAgICAgICAgICAgIHsgJCQgPSBOVUxMOyB9 CiAJOwogCitvcHRpb25hbFBlcmlvZE5hbWU6CisJCQknLCcgUEVSSU9EIGNvbHVtbkVsZW0g eyAkJCA9ICQzOyB9CisJCQl8IC8qRU1QVFkqLyAgICAgICAgICAgICAgIHsgJCQgPSBOVUxM OyB9CisJOworCitvcHRfY29sdW1uX2FuZF9wZXJpb2RfbGlzdDoKKwkJCScoJyBjb2x1bW5M aXN0IG9wdGlvbmFsUGVyaW9kTmFtZSAnKScJCQl7ICQkID0gbGlzdF9tYWtlMigkMiwgJDMp OyB9CisJCQl8IC8qRU1QVFkqLwkJCQkJCQkJeyAkJCA9IGxpc3RfbWFrZTIoTklMLCBOVUxM KTsgfQorCQk7CisKIGNvbHVtbkVsZW06IENvbElkCiAJCQkJewogCQkJCQkkJCA9IChOb2Rl ICopIG1ha2VTdHJpbmcoJDEpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L3JpX3RyaWdnZXJzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcmlfdHJpZ2dlcnMuYwpp bmRleCBlMjY5NWMwYWE2Li4xNjQxN2U5ZWE0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91 dGlscy9hZHQvcmlfdHJpZ2dlcnMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcmlf dHJpZ2dlcnMuYwpAQCAtMzEsNiArMzEsOCBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfY29s bGF0aW9uLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19jb25zdHJhaW50LmgiCiAjaW5jbHVk ZSAiY2F0YWxvZy9wZ19vcGVyYXRvci5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfcGVyaW9k LmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19yYW5nZS5oIgogI2luY2x1ZGUgImNhdGFsb2cv cGdfdHlwZS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3RyaWdnZXIuaCIKICNpbmNsdWRlICJl eGVjdXRvci9leGVjdXRvci5oIgpAQCAtODIsNiArODQsMTIgQEAKICNkZWZpbmUgUklfUExB Tl9TRVROVUxMX09OVVBEQVRFCQk3CiAjZGVmaW5lIFJJX1BMQU5fU0VUREVGQVVMVF9PTkRF TEVURQkJOAogI2RlZmluZSBSSV9QTEFOX1NFVERFRkFVTFRfT05VUERBVEUJCTkKKyNkZWZp bmUgVFJJX1BMQU5fQ0FTQ0FERV9PTkRFTEVURQkJMTAKKyNkZWZpbmUgVFJJX1BMQU5fQ0FT Q0FERV9PTlVQREFURQkJMTEKKyNkZWZpbmUgVFJJX1BMQU5fU0VUTlVMTF9PTlVQREFURQkJ MTIKKy8vIFRPRE86IE5lZWQgVFJJIFNFVE5VTExfT05ERUxFVEUKKyNkZWZpbmUgVFJJX1BM QU5fU0VUREVGQVVMVF9PTlVQREFURQkxMworLy8gVE9ETzogTmVlZCBUUkkgU0VUREVGQVVM VF9PTkRFTEVURQogCiAjZGVmaW5lIE1BWF9RVU9URURfTkFNRV9MRU4gIChOQU1FREFUQUxF TioyKzMpCiAjZGVmaW5lIE1BWF9RVU9URURfUkVMX05BTUVfTEVOICAoTUFYX1FVT1RFRF9O QU1FX0xFTioyKQpAQCAtMTE5LDcgKzEyNywxOCBAQCB0eXBlZGVmIHN0cnVjdCBSSV9Db25z dHJhaW50SW5mbwogCWludDE2CQljb25mZGVsc2V0Y29sc1tSSV9NQVhfTlVNS0VZU107IC8q IGF0dG51bXMgb2YgY29scyB0byBzZXQgb24KIAkJCQkJCQkJCQkJCSAqIGRlbGV0ZSAqLwog CWNoYXIJCWNvbmZtYXRjaHR5cGU7CS8qIGZvcmVpZ24ga2V5J3MgbWF0Y2ggdHlwZSAqLwor CWJvb2wJCXRlbXBvcmFsOwkJLyogaWYgdGhlIGZvcmVpZ24ga2V5IGlzIHRlbXBvcmFsICov CiAJaW50CQkJbmtleXM7CQkJLyogbnVtYmVyIG9mIGtleSBjb2x1bW5zICovCisJT2lkCQkJ cGtfcGVyaW9kOwkJLyogc2V0IGlmIHRoZSB0ZW1wb3JhbCBwcmltYXJ5IGtleSBoYXMgYSBw ZXJpb2QgKi8KKwlPaWQJCQlma19wZXJpb2Q7CQkvKiBzZXQgaWYgdGhlIHRlbXBvcmFsIGZv cmVpZ24ga2V5IGhhcyBhIHBlcmlvZCAqLworCU9pZAkJCXBrX3BlcmlvZF9yYW5nZXR5cGU7 CQkvKiBzZXQgaWYgdGhlIHRlbXBvcmFsIHByaW1hcnkga2V5IGhhcyBhIHBlcmlvZCAqLwor CU9pZAkJCWZrX3BlcmlvZF9yYW5nZXR5cGU7CQkvKiBzZXQgaWYgdGhlIHRlbXBvcmFsIGZv cmVpZ24ga2V5IGhhcyBhIHBlcmlvZCAqLworCWNoYXIJCXBrX3BlcmlvZF9yYW5nZXR5cGVf bmFtZVtOQU1FREFUQUxFTl07CS8qIHBrIHBlcmlvZCdzIHJhbmdldHlwZSdzIG5hbWUgKi8K KwljaGFyCQlma19wZXJpb2RfcmFuZ2V0eXBlX25hbWVbTkFNRURBVEFMRU5dOwkvKiBmayBw ZXJpb2QncyByYW5nZXR5cGUncyBuYW1lICovCisJT2lkCQkJcGtfcGVyaW9kX2NvbGxhdGlv bjsJCS8qIHBrIHBlcmlvZCdzIHJhbmdldHlwZSdzIGNvbGxhdGlvbiAqLworCU9pZAkJCWZr X3BlcmlvZF9jb2xsYXRpb247CQkvKiBmayBwZXJpb2QncyByYW5nZXR5cGUncyBjb2xsYXRp b24gKi8KKwlpbnQxNgkJcGtfcGVyaW9kX2F0dG51bXNbMl07CQkvKiBhdHRudW1zIG9mIHRo ZSByZWZlcmVuY2VkIHBlcmlvZCBjb2xzICovCisJaW50MTYJCWZrX3BlcmlvZF9hdHRudW1z WzJdOwkJLyogYXR0bnVtcyBvZiB0aGUgcmVmZXJlbmNpbmcgcGVyaW9kIGNvbHMgKi8KIAlp bnQxNgkJcGtfYXR0bnVtc1tSSV9NQVhfTlVNS0VZU107IC8qIGF0dG51bXMgb2YgcmVmZXJl bmNlZCBjb2xzICovCiAJaW50MTYJCWZrX2F0dG51bXNbUklfTUFYX05VTUtFWVNdOyAvKiBh dHRudW1zIG9mIHJlZmVyZW5jaW5nIGNvbHMgKi8KIAlPaWQJCQlwZl9lcV9vcHJzW1JJX01B WF9OVU1LRVlTXTsgLyogZXF1YWxpdHkgb3BlcmF0b3JzIChQSyA9IEZLKSAqLwpAQCAtMTg4 LDYgKzIwNyw4IEBAIHN0YXRpYyBib29sIHJpX0NoZWNrX1BrX01hdGNoKFJlbGF0aW9uIHBr X3JlbCwgUmVsYXRpb24gZmtfcmVsLAogCQkJCQkJCSAgY29uc3QgUklfQ29uc3RyYWludElu Zm8gKnJpaW5mbyk7CiBzdGF0aWMgRGF0dW0gcmlfcmVzdHJpY3QoVHJpZ2dlckRhdGEgKnRy aWdkYXRhLCBib29sIGlzX25vX2FjdGlvbik7CiBzdGF0aWMgRGF0dW0gcmlfc2V0KFRyaWdn ZXJEYXRhICp0cmlnZGF0YSwgYm9vbCBpc19zZXRfbnVsbCwgaW50IHRna2luZCk7CitzdGF0 aWMgRGF0dW0gdHJpX3NldChUcmlnZ2VyRGF0YSAqdHJpZ2RhdGEsIGJvb2wgaXNfc2V0X251 bGwsIGludCB0Z2tpbmQpOworc3RhdGljIERhdHVtIHJlc3RyaWN0X2Nhc2NhZGluZ19yYW5n ZShEYXR1bSBwa1JlY29yZFJhbmdlLCBEYXR1bSB0YXJnZXRlZFJhbmdlKTsKIHN0YXRpYyB2 b2lkIHF1b3RlT25lTmFtZShjaGFyICpidWZmZXIsIGNvbnN0IGNoYXIgKm5hbWUpOwogc3Rh dGljIHZvaWQgcXVvdGVSZWxhdGlvbk5hbWUoY2hhciAqYnVmZmVyLCBSZWxhdGlvbiByZWwp Owogc3RhdGljIHZvaWQgcmlfR2VuZXJhdGVRdWFsKFN0cmluZ0luZm8gYnVmLApAQCAtMjAx LDcgKzIyMiw3IEBAIHN0YXRpYyBpbnQJcmlfTnVsbENoZWNrKFR1cGxlRGVzYyB0dXBEZXNj LCBUdXBsZVRhYmxlU2xvdCAqc2xvdCwKIHN0YXRpYyB2b2lkIHJpX0J1aWxkUXVlcnlLZXko UklfUXVlcnlLZXkgKmtleSwKIAkJCQkJCQkgY29uc3QgUklfQ29uc3RyYWludEluZm8gKnJp aW5mbywKIAkJCQkJCQkgaW50MzIgY29uc3RyX3F1ZXJ5bm8pOwotc3RhdGljIGJvb2wgcmlf S2V5c0VxdWFsKFJlbGF0aW9uIHJlbCwgVHVwbGVUYWJsZVNsb3QgKm9sZHNsb3QsIFR1cGxl VGFibGVTbG90ICpuZXdzbG90LAorc3RhdGljIGJvb2wgcmlfS2V5c1N0YWJsZShSZWxhdGlv biByZWwsIFR1cGxlVGFibGVTbG90ICpvbGRzbG90LCBUdXBsZVRhYmxlU2xvdCAqbmV3c2xv dCwKIAkJCQkJCSBjb25zdCBSSV9Db25zdHJhaW50SW5mbyAqcmlpbmZvLCBib29sIHJlbF9p c19wayk7CiBzdGF0aWMgYm9vbCByaV9BdHRyaWJ1dGVzRXF1YWwoT2lkIGVxX29wciwgT2lk IHR5cGVpZCwKIAkJCQkJCQkgICBEYXR1bSBvbGR2YWx1ZSwgRGF0dW0gbmV3dmFsdWUpOwpA QCAtMjE2LDYgKzIzNyw3IEBAIHN0YXRpYyB2b2lkIHJpX0NoZWNrVHJpZ2dlcihGdW5jdGlv bkNhbGxJbmZvIGZjaW5mbywgY29uc3QgY2hhciAqZnVuY25hbWUsCiAJCQkJCQkJaW50IHRn a2luZCk7CiBzdGF0aWMgY29uc3QgUklfQ29uc3RyYWludEluZm8gKnJpX0ZldGNoQ29uc3Ry YWludEluZm8oVHJpZ2dlciAqdHJpZ2dlciwKIAkJCQkJCQkJCQkJCQkgICBSZWxhdGlvbiB0 cmlnX3JlbCwgYm9vbCByZWxfaXNfcGspOworc3RhdGljIHZvaWQgRGVjb25zdHJ1Y3RGa0Nv bnN0cmFpbnRQZXJpb2QoT2lkIHBlcmlvZGlkLCBPaWQgKnJhbmdldHlwZWlkLCBjaGFyICpy YW5nZXR5cGVuYW1lLCBPaWQgKnJuZ2NvbGxhdGlvbiwgaW50MTYgKmF0dG51bXMpOwogc3Rh dGljIGNvbnN0IFJJX0NvbnN0cmFpbnRJbmZvICpyaV9Mb2FkQ29uc3RyYWludEluZm8oT2lk IGNvbnN0cmFpbnRPaWQpOwogc3RhdGljIE9pZAlnZXRfcmlfY29uc3RyYWludF9yb290KE9p ZCBjb25zdHJPaWQpOwogc3RhdGljIFNQSVBsYW5QdHIgcmlfUGxhbkNoZWNrKGNvbnN0IGNo YXIgKnF1ZXJ5c3RyLCBpbnQgbmFyZ3MsIE9pZCAqYXJndHlwZXMsCkBAIC0yMjQsMTYgKzI0 Niw3MiBAQCBzdGF0aWMgYm9vbCByaV9QZXJmb3JtQ2hlY2soY29uc3QgUklfQ29uc3RyYWlu dEluZm8gKnJpaW5mbywKIAkJCQkJCQlSSV9RdWVyeUtleSAqcWtleSwgU1BJUGxhblB0ciBx cGxhbiwKIAkJCQkJCQlSZWxhdGlvbiBma19yZWwsIFJlbGF0aW9uIHBrX3JlbCwKIAkJCQkJ CQlUdXBsZVRhYmxlU2xvdCAqb2xkc2xvdCwgVHVwbGVUYWJsZVNsb3QgKm5ld3Nsb3QsCisJ CQkJCQkJYm9vbCBoYXNGb3JQb3J0aW9uT2YsIERhdHVtIGZvclBvcnRpb25PZiwKIAkJCQkJ CQlib29sIGRldGVjdE5ld1Jvd3MsIGludCBleHBlY3RfT0spOwogc3RhdGljIHZvaWQgcmlf RXh0cmFjdFZhbHVlcyhSZWxhdGlvbiByZWwsIFR1cGxlVGFibGVTbG90ICpzbG90LAogCQkJ CQkJCSBjb25zdCBSSV9Db25zdHJhaW50SW5mbyAqcmlpbmZvLCBib29sIHJlbF9pc19waywK KwkJCQkJCQkgYm9vbCBoYXNGb3JQb3J0aW9uT2YsIERhdHVtIGZvclBvcnRpb25PZiwKIAkJ CQkJCQkgRGF0dW0gKnZhbHMsIGNoYXIgKm51bGxzKTsKIHN0YXRpYyB2b2lkIHJpX1JlcG9y dFZpb2xhdGlvbihjb25zdCBSSV9Db25zdHJhaW50SW5mbyAqcmlpbmZvLAogCQkJCQkJCSAg IFJlbGF0aW9uIHBrX3JlbCwgUmVsYXRpb24gZmtfcmVsLAogCQkJCQkJCSAgIFR1cGxlVGFi bGVTbG90ICp2aW9sYXRvcnNsb3QsIFR1cGxlRGVzYyB0dXBkZXNjLAogCQkJCQkJCSAgIGlu dCBxdWVyeW5vLCBib29sIHBhcnRnb25lKSBwZ19hdHRyaWJ1dGVfbm9yZXR1cm4oKTsKK3N0 YXRpYyBEYXR1bSB0dXBsZVJhbmdlKFR1cGxlVGFibGVTbG90ICpzbG90LCBjb25zdCBSSV9D b25zdHJhaW50SW5mbyAqcmlpbmZvKTsKK3N0YXRpYyBib29sIHJlZmVyZW5jZXNfcGVyaW9k KGNvbnN0IEZvclBvcnRpb25PZlN0YXRlICp0Z190ZW1wb3JhbCwgY29uc3QgUklfQ29uc3Ry YWludEluZm8gKnJpaW5mbyk7CiAKIAorLyoKKyAqIHF1ZXJ5X3BlcmlvZF9yYW5nZQorICoK KyAqIEJ1aWxkcyBhIFNRTCBzdHJpbmcgdG8gY29uc3RydWN0IGEgcmFuZ2UgZnJvbSBhIHBl cmlvZCdzIHN0YXJ0IGFuZCBlbmQgY29sdW1ucy4KKyAqLworc3RhdGljIGNoYXIgKgorcXVl cnlfcGVyaW9kX3JhbmdlKGNvbnN0IFJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm8sIFJlbGF0 aW9uIHJlbCwgY29uc3QgY2hhciAqdGFibGVfbmFtZSwgYm9vbCByZWxfaXNfcGspCit7CisJ U3RyaW5nSW5mbyBzdHIgPSBtYWtlU3RyaW5nSW5mbygpOworCWNoYXIgYXR0bmFtZVtNQVhf UVVPVEVEX05BTUVfTEVOICsgM107CisJaW50IHRhYmxlX25hbWVfbGVuID0gc3RybGVuKHRh YmxlX25hbWUpOworCisJQXNzZXJ0KHRhYmxlX25hbWVfbGVuIDw9IDMpOworCisJc3RyY3B5 KGF0dG5hbWUsIHRhYmxlX25hbWUpOworCWlmIChyZWxfaXNfcGspCisJeworCQlhcHBlbmRT dHJpbmdJbmZvKHN0ciwgIiVzKCIsIHJpaW5mby0+cGtfcGVyaW9kX3JhbmdldHlwZV9uYW1l KTsKKworCQlxdW90ZU9uZU5hbWUoYXR0bmFtZSArIHRhYmxlX25hbWVfbGVuLAorCQkJCQkg UklBdHROYW1lKHJlbCwgcmlpbmZvLT5wa19wZXJpb2RfYXR0bnVtc1swXSkpOworCQlhcHBl bmRTdHJpbmdJbmZvKHN0ciwgIiVzLCAiLCBhdHRuYW1lKTsKKworCQlxdW90ZU9uZU5hbWUo YXR0bmFtZSArIHRhYmxlX25hbWVfbGVuLAorCQkJCQkgUklBdHROYW1lKHJlbCwgcmlpbmZv LT5wa19wZXJpb2RfYXR0bnVtc1sxXSkpOworCQlhcHBlbmRTdHJpbmdJbmZvKHN0ciwgIiVz KSIsIGF0dG5hbWUpOworCX0KKwllbHNlCisJeworCQlhcHBlbmRTdHJpbmdJbmZvKHN0ciwg IiVzKCIsIHJpaW5mby0+ZmtfcGVyaW9kX3JhbmdldHlwZV9uYW1lKTsKKworCQlxdW90ZU9u ZU5hbWUoYXR0bmFtZSArIHRhYmxlX25hbWVfbGVuLAorCQkJCQkgUklBdHROYW1lKHJlbCwg cmlpbmZvLT5ma19wZXJpb2RfYXR0bnVtc1swXSkpOworCQlhcHBlbmRTdHJpbmdJbmZvKHN0 ciwgIiVzLCAiLCBhdHRuYW1lKTsKKworCQlxdW90ZU9uZU5hbWUoYXR0bmFtZSArIHRhYmxl X25hbWVfbGVuLAorCQkJCQkgUklBdHROYW1lKHJlbCwgcmlpbmZvLT5ma19wZXJpb2RfYXR0 bnVtc1sxXSkpOworCQlhcHBlbmRTdHJpbmdJbmZvKHN0ciwgIiVzKSIsIGF0dG5hbWUpOwor CX0KKworCXJldHVybiBwc3RyZHVwKHN0ci0+ZGF0YSk7Cit9CisKKworc3RhdGljIERhdHVt CitidWlsZF9wZXJpb2RfcmFuZ2UoY29uc3QgUklfQ29uc3RyYWludEluZm8gKnJpaW5mbywg VHVwbGVUYWJsZVNsb3QgKnNsb3QsIGJvb2wgcmVsX2lzX3BrKQoreworCWNvbnN0IGludDE2 ICpwZXJpb2RfYXR0bnVtcyA9IHJlbF9pc19wayA/IHJpaW5mby0+cGtfcGVyaW9kX2F0dG51 bXMgOiByaWluZm8tPmZrX3BlcmlvZF9hdHRudW1zOworCU9pZAlyYW5nZXR5cGUgPSByZWxf aXNfcGsgPyByaWluZm8tPnBrX3BlcmlvZF9yYW5nZXR5cGUgOiByaWluZm8tPmZrX3Blcmlv ZF9yYW5nZXR5cGU7CisJcmV0dXJuIHBlcmlvZF90b19yYW5nZShzbG90LCBwZXJpb2RfYXR0 bnVtc1swXSwgcGVyaW9kX2F0dG51bXNbMV0sIHJhbmdldHlwZSk7Cit9CisKIC8qCiAgKiBS SV9GS2V5X2NoZWNrIC0KICAqCkBAIC0zNTUsNiArNDMzLDcgQEAgUklfRktleV9jaGVjayhU cmlnZ2VyRGF0YSAqdHJpZ2RhdGEpCiAJCVN0cmluZ0luZm9EYXRhIHF1ZXJ5YnVmOwogCQlj aGFyCQlwa3JlbG5hbWVbTUFYX1FVT1RFRF9SRUxfTkFNRV9MRU5dOwogCQljaGFyCQlhdHRu YW1lW01BWF9RVU9URURfTkFNRV9MRU5dOworCQljaGFyCSAgICphdHRzdHI7CiAJCWNoYXIJ CXBhcmFtbmFtZVsxNl07CiAJCWNvbnN0IGNoYXIgKnF1ZXJ5c2VwOwogCQlPaWQJCQlxdWVy eW9pZHNbUklfTUFYX05VTUtFWVNdOwpAQCAtMzYyLDM1ICs0NDEsODYgQEAgUklfRktleV9j aGVjayhUcmlnZ2VyRGF0YSAqdHJpZ2RhdGEpCiAKIAkJLyogLS0tLS0tLS0tLQogCQkgKiBU aGUgcXVlcnkgc3RyaW5nIGJ1aWx0IGlzCi0JCSAqCVNFTEVDVCAxIEZST00gW09OTFldIDxw a3RhYmxlPiB4IFdIRVJFIHBrYXR0MSA9ICQxIFtBTkQgLi4uXQotCQkgKgkJICAgRk9SIEtF WSBTSEFSRSBPRiB4CisJCSAqCVNFTEVDVCAxCisJCSAqCUZST00gW09OTFldIDxwa3RhYmxl PiB4IFdIRVJFIHBrYXR0MSA9ICQxIFtBTkQgLi4uXQorCQkgKglGT1IgS0VZIFNIQVJFIE9G IHgKIAkJICogVGhlIHR5cGUgaWQncyBmb3IgdGhlICQgcGFyYW1ldGVycyBhcmUgdGhvc2Ug b2YgdGhlCiAJCSAqIGNvcnJlc3BvbmRpbmcgRksgYXR0cmlidXRlcy4KKwkJICoKKwkJICog QnV0IGZvciB0ZW1wb3JhbCBGS3Mgd2UgbmVlZCB0byBtYWtlIHN1cmUKKwkJICogdGhlIEZL J3MgcmFuZ2UgaXMgY29tcGxldGVseSBjb3ZlcmVkLgorCQkgKiBTbyB3ZSB1c2UgdGhpcyBx dWVyeSBpbnN0ZWFkOgorCQkgKiAgU0VMRUNUIDEKKwkJICoJRlJPTQkoCisJCSAqCQlTRUxF Q1QgcGtwZXJpb2RhdHQgQVMgcgorCQkgKgkJRlJPTSAgIFtPTkxZXSBwa3RhYmxlIHgKKwkJ ICoJCVdIRVJFICBwa2F0dDEgPSAkMSBbQU5EIC4uLl0KKwkJICoJCUFORCAgICBwa3Blcmlv ZGF0dCAmJiAkbgorCQkgKgkJRk9SIEtFWSBTSEFSRSBPRiB4CisJCSAqCSkgeDEKKwkJICog IEhBVklORyAkbiA8QCByYW5nZV9hZ2coeDEucikKKwkJICogTm90ZSBpZiBGT1IgS0VZIFNI QVJFIGV2ZXIgYWxsb3dzIEdST1VQIEJZIGFuZCBIQVZJTkcKKwkJICogd2UgY2FuIG1ha2Ug dGhpcyBhIGJpdCBzaW1wbGVyLgogCQkgKiAtLS0tLS0tLS0tCiAJCSAqLwogCQlpbml0U3Ry aW5nSW5mbygmcXVlcnlidWYpOwogCQlwa19vbmx5ID0gcGtfcmVsLT5yZF9yZWwtPnJlbGtp bmQgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSA/CiAJCQkiIiA6ICJPTkxZICI7CiAJ CXF1b3RlUmVsYXRpb25OYW1lKHBrcmVsbmFtZSwgcGtfcmVsKTsKLQkJYXBwZW5kU3RyaW5n SW5mbygmcXVlcnlidWYsICJTRUxFQ1QgMSBGUk9NICVzJXMgeCIsCi0JCQkJCQkgcGtfb25s eSwgcGtyZWxuYW1lKTsKKwkJaWYgKHJpaW5mby0+dGVtcG9yYWwpCisJCXsKKwkJCWlmIChy aWluZm8tPnBrX3BlcmlvZCA9PSBJbnZhbGlkT2lkKQorCQkJeworCQkJCXF1b3RlT25lTmFt ZShhdHRuYW1lLAorCQkJCQkJUklBdHROYW1lKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1z W3JpaW5mby0+bmtleXMgLSAxXSkpOworCQkJCWF0dHN0ciA9IGF0dG5hbWU7CisJCQl9CisJ CQllbHNlCisJCQkJYXR0c3RyID0gcXVlcnlfcGVyaW9kX3JhbmdlKHJpaW5mbywgcGtfcmVs LCAieC4iLCB0cnVlKTsKKworCQkJYXBwZW5kU3RyaW5nSW5mbygmcXVlcnlidWYsCisJCQkJ CSJTRUxFQ1QgMSBGUk9NIChTRUxFQ1QgJXMgQVMgciBGUk9NICVzJXMgeCIsCisJCQkJCWF0 dHN0ciwgcGtfb25seSwgcGtyZWxuYW1lKTsKKwkJfQorCQllbHNlIHsKKwkJCWFwcGVuZFN0 cmluZ0luZm8oJnF1ZXJ5YnVmLCAiU0VMRUNUIDEgRlJPTSAlcyVzIHgiLAorCQkJCQkJCSBw a19vbmx5LCBwa3JlbG5hbWUpOworCQl9CiAJCXF1ZXJ5c2VwID0gIldIRVJFIjsKIAkJZm9y IChpbnQgaSA9IDA7IGkgPCByaWluZm8tPm5rZXlzOyBpKyspCiAJCXsKLQkJCU9pZAkJCXBr X3R5cGUgPSBSSUF0dFR5cGUocGtfcmVsLCByaWluZm8tPnBrX2F0dG51bXNbaV0pOwotCQkJ T2lkCQkJZmtfdHlwZSA9IFJJQXR0VHlwZShma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tp XSk7CisJCQlPaWQJcGtfdHlwZTsKKwkJCU9pZAlma190eXBlOworCisJCQlpZiAocmlpbmZv LT5wa19hdHRudW1zW2ldID09IEludmFsaWRPaWQpCisJCQl7CisJCQkJcGtfdHlwZSA9IHJp aW5mby0+cGtfcGVyaW9kX3JhbmdldHlwZTsKKwkJCQlhdHRzdHIgPSBxdWVyeV9wZXJpb2Rf cmFuZ2UocmlpbmZvLCBwa19yZWwsICJ4LiIsIHRydWUpOworCQkJfQorCQkJZWxzZQorCQkJ eworCQkJCXBrX3R5cGUgPSBSSUF0dFR5cGUocGtfcmVsLCByaWluZm8tPnBrX2F0dG51bXNb aV0pOworCQkJCXF1b3RlT25lTmFtZShhdHRuYW1lLAorCQkJCQkJCSBSSUF0dE5hbWUocGtf cmVsLCByaWluZm8tPnBrX2F0dG51bXNbaV0pKTsKKwkJCQlhdHRzdHIgPSBhdHRuYW1lOwor CQkJfQorCisJCQlpZiAocmlpbmZvLT5ma19hdHRudW1zW2ldID09IEludmFsaWRPaWQpCisJ CQkJZmtfdHlwZSA9IHJpaW5mby0+ZmtfcGVyaW9kX3JhbmdldHlwZTsKKwkJCWVsc2UKKwkJ CQlma190eXBlID0gUklBdHRUeXBlKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW2ldKTsK IAotCQkJcXVvdGVPbmVOYW1lKGF0dG5hbWUsCi0JCQkJCQkgUklBdHROYW1lKHBrX3JlbCwg cmlpbmZvLT5wa19hdHRudW1zW2ldKSk7CiAJCQlzcHJpbnRmKHBhcmFtbmFtZSwgIiQlZCIs IGkgKyAxKTsKIAkJCXJpX0dlbmVyYXRlUXVhbCgmcXVlcnlidWYsIHF1ZXJ5c2VwLAotCQkJ CQkJCWF0dG5hbWUsIHBrX3R5cGUsCisJCQkJCQkJYXR0c3RyLCBwa190eXBlLAogCQkJCQkJ CXJpaW5mby0+cGZfZXFfb3Byc1tpXSwKIAkJCQkJCQlwYXJhbW5hbWUsIGZrX3R5cGUpOwog CQkJcXVlcnlzZXAgPSAiQU5EIjsKIAkJCXF1ZXJ5b2lkc1tpXSA9IGZrX3R5cGU7CiAJCX0K IAkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmcXVlcnlidWYsICIgRk9SIEtFWSBTSEFSRSBP RiB4Iik7CisJCWlmIChyaWluZm8tPnRlbXBvcmFsKQorCQkJYXBwZW5kU3RyaW5nSW5mbygm cXVlcnlidWYsICIpIHgxIEhBVklORyAkJWQgPEAgcGdfY2F0YWxvZy5yYW5nZV9hZ2coeDEu cikiLCByaWluZm8tPm5rZXlzKTsKIAogCQkvKiBQcmVwYXJlIGFuZCBzYXZlIHRoZSBwbGFu ICovCiAJCXFwbGFuID0gcmlfUGxhbkNoZWNrKHF1ZXJ5YnVmLmRhdGEsIHJpaW5mby0+bmtl eXMsIHF1ZXJ5b2lkcywKQEAgLTQwNyw2ICs1MzcsNyBAQCBSSV9GS2V5X2NoZWNrKFRyaWdn ZXJEYXRhICp0cmlnZGF0YSkKIAlyaV9QZXJmb3JtQ2hlY2socmlpbmZvLCAmcWtleSwgcXBs YW4sCiAJCQkJCWZrX3JlbCwgcGtfcmVsLAogCQkJCQlOVUxMLCBuZXdzbG90LAorCQkJCQlm YWxzZSwgMCwKIAkJCQkJcGtfcmVsLT5yZF9yZWwtPnJlbGtpbmQgPT0gUkVMS0lORF9QQVJU SVRJT05FRF9UQUJMRSwKIAkJCQkJU1BJX09LX1NFTEVDVCk7CiAKQEAgLTUwOSwxMyArNjQw LDI0IEBAIHJpX0NoZWNrX1BrX01hdGNoKFJlbGF0aW9uIHBrX3JlbCwgUmVsYXRpb24gZmtf cmVsLAogCQlxdWVyeXNlcCA9ICJXSEVSRSI7CiAJCWZvciAoaW50IGkgPSAwOyBpIDwgcmlp bmZvLT5ua2V5czsgaSsrKQogCQl7Ci0JCQlPaWQJCQlwa190eXBlID0gUklBdHRUeXBlKHBr X3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW2ldKTsKKwkJCU9pZAkJcGtfdHlwZTsKKwkJCWNo YXIgICAqYXR0c3RyOworCQkJaWYgKHJpaW5mby0+cGtfYXR0bnVtc1tpXSA9PSBJbnZhbGlk T2lkKQorCQkJeworCQkJCXBrX3R5cGUgPSByaWluZm8tPnBrX3BlcmlvZF9yYW5nZXR5cGU7 CisJCQkJYXR0c3RyID0gcXVlcnlfcGVyaW9kX3JhbmdlKHJpaW5mbywgcGtfcmVsLCAieC4i LCB0cnVlKTsKKwkJCX0KKwkJCWVsc2UKKwkJCXsKKwkJCQlwa190eXBlID0gUklBdHRUeXBl KHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW2ldKTsKKwkJCQlxdW90ZU9uZU5hbWUoYXR0 bmFtZSwKKwkJCQkJCQkgUklBdHROYW1lKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW2ld KSk7CisJCQkJYXR0c3RyID0gYXR0bmFtZTsKKwkJCX0KIAotCQkJcXVvdGVPbmVOYW1lKGF0 dG5hbWUsCi0JCQkJCQkgUklBdHROYW1lKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW2ld KSk7CiAJCQlzcHJpbnRmKHBhcmFtbmFtZSwgIiQlZCIsIGkgKyAxKTsKIAkJCXJpX0dlbmVy YXRlUXVhbCgmcXVlcnlidWYsIHF1ZXJ5c2VwLAotCQkJCQkJCWF0dG5hbWUsIHBrX3R5cGUs CisJCQkJCQkJYXR0c3RyLCBwa190eXBlLAogCQkJCQkJCXJpaW5mby0+cHBfZXFfb3Byc1tp XSwKIAkJCQkJCQlwYXJhbW5hbWUsIHBrX3R5cGUpOwogCQkJcXVlcnlzZXAgPSAiQU5EIjsK QEAgLTUzNCw2ICs2NzYsNyBAQCByaV9DaGVja19Qa19NYXRjaChSZWxhdGlvbiBwa19yZWws IFJlbGF0aW9uIGZrX3JlbCwKIAlyZXN1bHQgPSByaV9QZXJmb3JtQ2hlY2socmlpbmZvLCAm cWtleSwgcXBsYW4sCiAJCQkJCQkJIGZrX3JlbCwgcGtfcmVsLAogCQkJCQkJCSBvbGRzbG90 LCBOVUxMLAorCQkJCQkJCSBmYWxzZSwgMCwKIAkJCQkJCQkgdHJ1ZSwJLyogdHJlYXQgbGlr ZSB1cGRhdGUgKi8KIAkJCQkJCQkgU1BJX09LX1NFTEVDVCk7CiAKQEAgLTY3NCw2ICs4MTcs NyBAQCByaV9yZXN0cmljdChUcmlnZ2VyRGF0YSAqdHJpZ2RhdGEsIGJvb2wgaXNfbm9fYWN0 aW9uKQogCQlTdHJpbmdJbmZvRGF0YSBxdWVyeWJ1ZjsKIAkJY2hhcgkJZmtyZWxuYW1lW01B WF9RVU9URURfUkVMX05BTUVfTEVOXTsKIAkJY2hhcgkJYXR0bmFtZVtNQVhfUVVPVEVEX05B TUVfTEVOXTsKKwkJY2hhcgkgICAqYXR0c3RyOwogCQljaGFyCQlwYXJhbW5hbWVbMTZdOwog CQljb25zdCBjaGFyICpxdWVyeXNlcDsKIAkJT2lkCQkJcXVlcnlvaWRzW1JJX01BWF9OVU1L RVlTXTsKQEAgLTY5NiwxOCArODQwLDQ2IEBAIHJpX3Jlc3RyaWN0KFRyaWdnZXJEYXRhICp0 cmlnZGF0YSwgYm9vbCBpc19ub19hY3Rpb24pCiAJCXF1ZXJ5c2VwID0gIldIRVJFIjsKIAkJ Zm9yIChpbnQgaSA9IDA7IGkgPCByaWluZm8tPm5rZXlzOyBpKyspCiAJCXsKLQkJCU9pZAkJ CXBrX3R5cGUgPSBSSUF0dFR5cGUocGtfcmVsLCByaWluZm8tPnBrX2F0dG51bXNbaV0pOwot CQkJT2lkCQkJZmtfdHlwZSA9IFJJQXR0VHlwZShma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVt c1tpXSk7Ci0JCQlPaWQJCQlwa19jb2xsID0gUklBdHRDb2xsYXRpb24ocGtfcmVsLCByaWlu Zm8tPnBrX2F0dG51bXNbaV0pOwotCQkJT2lkCQkJZmtfY29sbCA9IFJJQXR0Q29sbGF0aW9u KGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW2ldKTsKKwkJCU9pZAkJcGtfdHlwZTsKKwkJ CU9pZAkJZmtfdHlwZTsKKwkJCU9pZAkJcGtfY29sbDsKKwkJCU9pZAkJZmtfY29sbDsKIAot CQkJcXVvdGVPbmVOYW1lKGF0dG5hbWUsCi0JCQkJCQkgUklBdHROYW1lKGZrX3JlbCwgcmlp bmZvLT5ma19hdHRudW1zW2ldKSk7CisJCQlpZiAocmlpbmZvLT5wa19hdHRudW1zW2ldICE9 IEludmFsaWRPaWQpCisJCQl7CisJCQkJcGtfdHlwZSA9IFJJQXR0VHlwZShwa19yZWwsIHJp aW5mby0+cGtfYXR0bnVtc1tpXSk7CisJCQkJcGtfY29sbCA9IFJJQXR0Q29sbGF0aW9uKHBr X3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW2ldKTsKKwkJCX0KKwkJCWVsc2UKKwkJCXsKKwkJ CQlwa190eXBlID0gcmlpbmZvLT5wa19wZXJpb2RfcmFuZ2V0eXBlOworCQkJCXBrX2NvbGwg PSByaWluZm8tPnBrX3BlcmlvZF9jb2xsYXRpb247CisJCQl9CisKKwkJCWlmIChyaWluZm8t PmZrX2F0dG51bXNbaV0gIT0gSW52YWxpZE9pZCkKKwkJCXsKKwkJCQlma190eXBlID0gUklB dHRUeXBlKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW2ldKTsKKwkJCQlma19jb2xsID0g UklBdHRDb2xsYXRpb24oZmtfcmVsLCByaWluZm8tPmZrX2F0dG51bXNbaV0pOworCQkJfQor CQkJZWxzZQorCQkJeworCQkJCWZrX3R5cGUgPSByaWluZm8tPmZrX3BlcmlvZF9yYW5nZXR5 cGU7CisJCQkJZmtfY29sbCA9IHJpaW5mby0+ZmtfcGVyaW9kX2NvbGxhdGlvbjsKKwkJCX0K KworCQkJaWYgKHJpaW5mby0+ZmtfYXR0bnVtc1tpXSA9PSBJbnZhbGlkT2lkKQorCQkJCWF0 dHN0ciA9IHF1ZXJ5X3BlcmlvZF9yYW5nZShyaWluZm8sIGZrX3JlbCwgInguIiwgZmFsc2Up OworCQkJZWxzZQorCQkJeworCQkJCXF1b3RlT25lTmFtZShhdHRuYW1lLAorCQkJCQkJCSBS SUF0dE5hbWUoZmtfcmVsLCByaWluZm8tPmZrX2F0dG51bXNbaV0pKTsKKwkJCQlhdHRzdHIg PSBhdHRuYW1lOworCQkJfQogCQkJc3ByaW50ZihwYXJhbW5hbWUsICIkJWQiLCBpICsgMSk7 CiAJCQlyaV9HZW5lcmF0ZVF1YWwoJnF1ZXJ5YnVmLCBxdWVyeXNlcCwKIAkJCQkJCQlwYXJh bW5hbWUsIHBrX3R5cGUsCiAJCQkJCQkJcmlpbmZvLT5wZl9lcV9vcHJzW2ldLAotCQkJCQkJ CWF0dG5hbWUsIGZrX3R5cGUpOworCQkJCQkJCWF0dHN0ciwgZmtfdHlwZSk7CiAJCQlpZiAo cGtfY29sbCAhPSBma19jb2xsICYmICFnZXRfY29sbGF0aW9uX2lzZGV0ZXJtaW5pc3RpYyhw a19jb2xsKSkKIAkJCQlyaV9HZW5lcmF0ZVF1YWxDb2xsYXRpb24oJnF1ZXJ5YnVmLCBwa19j b2xsKTsKIAkJCXF1ZXJ5c2VwID0gIkFORCI7CkBAIC03MjYsNiArODk4LDcgQEAgcmlfcmVz dHJpY3QoVHJpZ2dlckRhdGEgKnRyaWdkYXRhLCBib29sIGlzX25vX2FjdGlvbikKIAlyaV9Q ZXJmb3JtQ2hlY2socmlpbmZvLCAmcWtleSwgcXBsYW4sCiAJCQkJCWZrX3JlbCwgcGtfcmVs LAogCQkJCQlvbGRzbG90LCBOVUxMLAorCQkJCQlmYWxzZSwgMCwKIAkJCQkJdHJ1ZSwJCS8q IG11c3QgZGV0ZWN0IG5ldyByb3dzICovCiAJCQkJCVNQSV9PS19TRUxFQ1QpOwogCkBAIC04 MzIsNiArMTAwNSw3IEBAIFJJX0ZLZXlfY2FzY2FkZV9kZWwoUEdfRlVOQ1RJT05fQVJHUykK IAlyaV9QZXJmb3JtQ2hlY2socmlpbmZvLCAmcWtleSwgcXBsYW4sCiAJCQkJCWZrX3JlbCwg cGtfcmVsLAogCQkJCQlvbGRzbG90LCBOVUxMLAorCQkJCQlmYWxzZSwgMCwKIAkJCQkJdHJ1 ZSwJCS8qIG11c3QgZGV0ZWN0IG5ldyByb3dzICovCiAJCQkJCVNQSV9PS19ERUxFVEUpOwog CkBAIC05MjMsMTYgKzEwOTcsNzI5IEBAIFJJX0ZLZXlfY2FzY2FkZV91cGQoUEdfRlVOQ1RJ T05fQVJHUykKIAkJCU9pZAkJCXBrX2NvbGwgPSBSSUF0dENvbGxhdGlvbihwa19yZWwsIHJp aW5mby0+cGtfYXR0bnVtc1tpXSk7CiAJCQlPaWQJCQlma19jb2xsID0gUklBdHRDb2xsYXRp b24oZmtfcmVsLCByaWluZm8tPmZrX2F0dG51bXNbaV0pOwogCi0JCQlxdW90ZU9uZU5hbWUo YXR0bmFtZSwKLQkJCQkJCSBSSUF0dE5hbWUoZmtfcmVsLCByaWluZm8tPmZrX2F0dG51bXNb aV0pKTsKLQkJCWFwcGVuZFN0cmluZ0luZm8oJnF1ZXJ5YnVmLAotCQkJCQkJCSAiJXMgJXMg PSAkJWQiLAotCQkJCQkJCSBxdWVyeXNlcCwgYXR0bmFtZSwgaSArIDEpOworCQkJcXVvdGVP bmVOYW1lKGF0dG5hbWUsCisJCQkJCQkgUklBdHROYW1lKGZrX3JlbCwgcmlpbmZvLT5ma19h dHRudW1zW2ldKSk7CisJCQlhcHBlbmRTdHJpbmdJbmZvKCZxdWVyeWJ1ZiwKKwkJCQkJCQkg IiVzICVzID0gJCVkIiwKKwkJCQkJCQkgcXVlcnlzZXAsIGF0dG5hbWUsIGkgKyAxKTsKKwkJ CXNwcmludGYocGFyYW1uYW1lLCAiJCVkIiwgaiArIDEpOworCQkJcmlfR2VuZXJhdGVRdWFs KCZxdWFsYnVmLCBxdWFsc2VwLAorCQkJCQkJCXBhcmFtbmFtZSwgcGtfdHlwZSwKKwkJCQkJ CQlyaWluZm8tPnBmX2VxX29wcnNbaV0sCisJCQkJCQkJYXR0bmFtZSwgZmtfdHlwZSk7CisJ CQlpZiAocGtfY29sbCAhPSBma19jb2xsICYmICFnZXRfY29sbGF0aW9uX2lzZGV0ZXJtaW5p c3RpYyhwa19jb2xsKSkKKwkJCQlyaV9HZW5lcmF0ZVF1YWxDb2xsYXRpb24oJnF1ZXJ5YnVm LCBwa19jb2xsKTsKKwkJCXF1ZXJ5c2VwID0gIiwiOworCQkJcXVhbHNlcCA9ICJBTkQiOwor CQkJcXVlcnlvaWRzW2ldID0gcGtfdHlwZTsKKwkJCXF1ZXJ5b2lkc1tqXSA9IHBrX3R5cGU7 CisJCX0KKwkJYXBwZW5kQmluYXJ5U3RyaW5nSW5mbygmcXVlcnlidWYsIHF1YWxidWYuZGF0 YSwgcXVhbGJ1Zi5sZW4pOworCisJCS8qIFByZXBhcmUgYW5kIHNhdmUgdGhlIHBsYW4gKi8K KwkJcXBsYW4gPSByaV9QbGFuQ2hlY2socXVlcnlidWYuZGF0YSwgcmlpbmZvLT5ua2V5cyAq IDIsIHF1ZXJ5b2lkcywKKwkJCQkJCQkgJnFrZXksIGZrX3JlbCwgcGtfcmVsKTsKKwl9CisK KwkvKgorCSAqIFdlIGhhdmUgYSBwbGFuIG5vdy4gUnVuIGl0IHRvIHVwZGF0ZSB0aGUgZXhp c3RpbmcgcmVmZXJlbmNlcy4KKwkgKi8KKwlyaV9QZXJmb3JtQ2hlY2socmlpbmZvLCAmcWtl eSwgcXBsYW4sCisJCQkJCWZrX3JlbCwgcGtfcmVsLAorCQkJCQlvbGRzbG90LCBuZXdzbG90 LAorCQkJCQlmYWxzZSwgMCwKKwkJCQkJdHJ1ZSwJCS8qIG11c3QgZGV0ZWN0IG5ldyByb3dz ICovCisJCQkJCVNQSV9PS19VUERBVEUpOworCisJaWYgKFNQSV9maW5pc2goKSAhPSBTUElf T0tfRklOSVNIKQorCQllbG9nKEVSUk9SLCAiU1BJX2ZpbmlzaCBmYWlsZWQiKTsKKworCXRh YmxlX2Nsb3NlKGZrX3JlbCwgUm93RXhjbHVzaXZlTG9jayk7CisKKwlyZXR1cm4gUG9pbnRl ckdldERhdHVtKE5VTEwpOworfQorCisKKy8qCisgKiBSSV9GS2V5X3NldG51bGxfZGVsIC0K KyAqCisgKiBTZXQgZm9yZWlnbiBrZXkgcmVmZXJlbmNlcyB0byBOVUxMIHZhbHVlcyBhdCBk ZWxldGUgZXZlbnQgb24gUEsgdGFibGUuCisgKi8KK0RhdHVtCitSSV9GS2V5X3NldG51bGxf ZGVsKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJLyogQ2hlY2sgdGhhdCB0aGlzIGlzIGEgdmFs aWQgdHJpZ2dlciBjYWxsIG9uIHRoZSByaWdodCB0aW1lIGFuZCBldmVudC4gKi8KKwlyaV9D aGVja1RyaWdnZXIoZmNpbmZvLCAiUklfRktleV9zZXRudWxsX2RlbCIsIFJJX1RSSUdUWVBF X0RFTEVURSk7CisKKwkvKiBTaGFyZSBjb2RlIHdpdGggVVBEQVRFIGNhc2UgKi8KKwlyZXR1 cm4gcmlfc2V0KChUcmlnZ2VyRGF0YSAqKSBmY2luZm8tPmNvbnRleHQsIHRydWUsIFJJX1RS SUdUWVBFX0RFTEVURSk7Cit9CisKKy8qCisgKiBSSV9GS2V5X3NldG51bGxfdXBkIC0KKyAq CisgKiBTZXQgZm9yZWlnbiBrZXkgcmVmZXJlbmNlcyB0byBOVUxMIGF0IHVwZGF0ZSBldmVu dCBvbiBQSyB0YWJsZS4KKyAqLworRGF0dW0KK1JJX0ZLZXlfc2V0bnVsbF91cGQoUEdfRlVO Q1RJT05fQVJHUykKK3sKKwkvKiBDaGVjayB0aGF0IHRoaXMgaXMgYSB2YWxpZCB0cmlnZ2Vy IGNhbGwgb24gdGhlIHJpZ2h0IHRpbWUgYW5kIGV2ZW50LiAqLworCXJpX0NoZWNrVHJpZ2dl cihmY2luZm8sICJSSV9GS2V5X3NldG51bGxfdXBkIiwgUklfVFJJR1RZUEVfVVBEQVRFKTsK KworCS8qIFNoYXJlIGNvZGUgd2l0aCBERUxFVEUgY2FzZSAqLworCXJldHVybiByaV9zZXQo KFRyaWdnZXJEYXRhICopIGZjaW5mby0+Y29udGV4dCwgdHJ1ZSwgUklfVFJJR1RZUEVfVVBE QVRFKTsKK30KKworLyoKKyAqIFJJX0ZLZXlfc2V0ZGVmYXVsdF9kZWwgLQorICoKKyAqIFNl dCBmb3JlaWduIGtleSByZWZlcmVuY2VzIHRvIGRlZmF1bHRzIGF0IGRlbGV0ZSBldmVudCBv biBQSyB0YWJsZS4KKyAqLworRGF0dW0KK1JJX0ZLZXlfc2V0ZGVmYXVsdF9kZWwoUEdfRlVO Q1RJT05fQVJHUykKK3sKKwkvKiBDaGVjayB0aGF0IHRoaXMgaXMgYSB2YWxpZCB0cmlnZ2Vy IGNhbGwgb24gdGhlIHJpZ2h0IHRpbWUgYW5kIGV2ZW50LiAqLworCXJpX0NoZWNrVHJpZ2dl cihmY2luZm8sICJSSV9GS2V5X3NldGRlZmF1bHRfZGVsIiwgUklfVFJJR1RZUEVfREVMRVRF KTsKKworCS8qIFNoYXJlIGNvZGUgd2l0aCBVUERBVEUgY2FzZSAqLworCXJldHVybiByaV9z ZXQoKFRyaWdnZXJEYXRhICopIGZjaW5mby0+Y29udGV4dCwgZmFsc2UsIFJJX1RSSUdUWVBF X0RFTEVURSk7Cit9CisKKy8qCisgKiBSSV9GS2V5X3NldGRlZmF1bHRfdXBkIC0KKyAqCisg KiBTZXQgZm9yZWlnbiBrZXkgcmVmZXJlbmNlcyB0byBkZWZhdWx0cyBhdCB1cGRhdGUgZXZl bnQgb24gUEsgdGFibGUuCisgKi8KK0RhdHVtCitSSV9GS2V5X3NldGRlZmF1bHRfdXBkKFBH X0ZVTkNUSU9OX0FSR1MpCit7CisJLyogQ2hlY2sgdGhhdCB0aGlzIGlzIGEgdmFsaWQgdHJp Z2dlciBjYWxsIG9uIHRoZSByaWdodCB0aW1lIGFuZCBldmVudC4gKi8KKwlyaV9DaGVja1Ry aWdnZXIoZmNpbmZvLCAiUklfRktleV9zZXRkZWZhdWx0X3VwZCIsIFJJX1RSSUdUWVBFX1VQ REFURSk7CisKKwkvKiBTaGFyZSBjb2RlIHdpdGggREVMRVRFIGNhc2UgKi8KKwlyZXR1cm4g cmlfc2V0KChUcmlnZ2VyRGF0YSAqKSBmY2luZm8tPmNvbnRleHQsIGZhbHNlLCBSSV9UUklH VFlQRV9VUERBVEUpOworfQorCisvKgorICogcmlfc2V0IC0KKyAqCisgKiBDb21tb24gY29k ZSBmb3IgT04gREVMRVRFIFNFVCBOVUxMLCBPTiBERUxFVEUgU0VUIERFRkFVTFQsIE9OIFVQ REFURSBTRVQKKyAqIE5VTEwsIGFuZCBPTiBVUERBVEUgU0VUIERFRkFVTFQuCisgKi8KK3N0 YXRpYyBEYXR1bQorcmlfc2V0KFRyaWdnZXJEYXRhICp0cmlnZGF0YSwgYm9vbCBpc19zZXRf bnVsbCwgaW50IHRna2luZCkKK3sKKwljb25zdCBSSV9Db25zdHJhaW50SW5mbyAqcmlpbmZv OworCVJlbGF0aW9uCWZrX3JlbDsKKwlSZWxhdGlvbglwa19yZWw7CisJVHVwbGVUYWJsZVNs b3QgKm9sZHNsb3Q7CisJUklfUXVlcnlLZXkgcWtleTsKKwlTUElQbGFuUHRyCXFwbGFuOwor CWludDMyCQlxdWVyeW5vOworCisJcmlpbmZvID0gcmlfRmV0Y2hDb25zdHJhaW50SW5mbyh0 cmlnZGF0YS0+dGdfdHJpZ2dlciwKKwkJCQkJCQkJCXRyaWdkYXRhLT50Z19yZWxhdGlvbiwg dHJ1ZSk7CisKKwkvKgorCSAqIEdldCB0aGUgcmVsYXRpb24gZGVzY3JpcHRvcnMgb2YgdGhl IEZLIGFuZCBQSyB0YWJsZXMgYW5kIHRoZSBvbGQgdHVwbGUuCisJICoKKwkgKiBma19yZWwg aXMgb3BlbmVkIGluIFJvd0V4Y2x1c2l2ZUxvY2sgbW9kZSBzaW5jZSB0aGF0J3Mgd2hhdCBv dXIKKwkgKiBldmVudHVhbCBVUERBVEUgd2lsbCBnZXQgb24gaXQuCisJICovCisJZmtfcmVs ID0gdGFibGVfb3BlbihyaWluZm8tPmZrX3JlbGlkLCBSb3dFeGNsdXNpdmVMb2NrKTsKKwlw a19yZWwgPSB0cmlnZGF0YS0+dGdfcmVsYXRpb247CisJb2xkc2xvdCA9IHRyaWdkYXRhLT50 Z190cmlnc2xvdDsKKworCWlmIChTUElfY29ubmVjdCgpICE9IFNQSV9PS19DT05ORUNUKQor CQllbG9nKEVSUk9SLCAiU1BJX2Nvbm5lY3QgZmFpbGVkIik7CisKKwkvKgorCSAqIEZldGNo IG9yIHByZXBhcmUgYSBzYXZlZCBwbGFuIGZvciB0aGUgdHJpZ2dlci4KKwkgKi8KKwlzd2l0 Y2ggKHRna2luZCkKKwl7CisJCWNhc2UgUklfVFJJR1RZUEVfVVBEQVRFOgorCQkJcXVlcnlu byA9IGlzX3NldF9udWxsCisJCQkJPyBSSV9QTEFOX1NFVE5VTExfT05VUERBVEUKKwkJCQk6 IFJJX1BMQU5fU0VUREVGQVVMVF9PTlVQREFURTsKKwkJCWJyZWFrOworCQljYXNlIFJJX1RS SUdUWVBFX0RFTEVURToKKwkJCXF1ZXJ5bm8gPSBpc19zZXRfbnVsbAorCQkJCT8gUklfUExB Tl9TRVROVUxMX09OREVMRVRFCisJCQkJOiBSSV9QTEFOX1NFVERFRkFVTFRfT05ERUxFVEU7 CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCWVsb2coRVJST1IsICJpbnZhbGlkIHRna2lu ZCBwYXNzZWQgdG8gcmlfc2V0Iik7CisJfQorCisJcmlfQnVpbGRRdWVyeUtleSgmcWtleSwg cmlpbmZvLCBxdWVyeW5vKTsKKworCWlmICgocXBsYW4gPSByaV9GZXRjaFByZXBhcmVkUGxh bigmcWtleSkpID09IE5VTEwpCisJeworCQlTdHJpbmdJbmZvRGF0YSBxdWVyeWJ1ZjsKKwkJ Y2hhcgkJZmtyZWxuYW1lW01BWF9RVU9URURfUkVMX05BTUVfTEVOXTsKKwkJY2hhcgkJYXR0 bmFtZVtNQVhfUVVPVEVEX05BTUVfTEVOXTsKKwkJY2hhcgkJcGFyYW1uYW1lWzE2XTsKKwkJ Y29uc3QgY2hhciAqcXVlcnlzZXA7CisJCWNvbnN0IGNoYXIgKnF1YWxzZXA7CisJCU9pZAkJ CXF1ZXJ5b2lkc1tSSV9NQVhfTlVNS0VZU107CisJCWNvbnN0IGNoYXIgKmZrX29ubHk7CisJ CWludAkJCW51bV9jb2xzX3RvX3NldDsKKwkJY29uc3QgaW50MTYgKnNldF9jb2xzOworCisJ CXN3aXRjaCAodGdraW5kKQorCQl7CisJCQljYXNlIFJJX1RSSUdUWVBFX1VQREFURToKKwkJ CQludW1fY29sc190b19zZXQgPSByaWluZm8tPm5rZXlzOworCQkJCXNldF9jb2xzID0gcmlp bmZvLT5ma19hdHRudW1zOworCQkJCWJyZWFrOworCQkJY2FzZSBSSV9UUklHVFlQRV9ERUxF VEU6CisKKwkJCQkvKgorCQkJCSAqIElmIGNvbmZkZWxzZXRjb2xzIGFyZSBwcmVzZW50LCB0 aGVuIHdlIG9ubHkgdXBkYXRlIHRoZQorCQkJCSAqIGNvbHVtbnMgc3BlY2lmaWVkIGluIHRo YXQgYXJyYXksIG90aGVyd2lzZSB3ZSB1cGRhdGUgYWxsCisJCQkJICogdGhlIHJlZmVyZW5j aW5nIGNvbHVtbnMuCisJCQkJICovCisJCQkJaWYgKHJpaW5mby0+bmRlbHNldGNvbHMgIT0g MCkKKwkJCQl7CisJCQkJCW51bV9jb2xzX3RvX3NldCA9IHJpaW5mby0+bmRlbHNldGNvbHM7 CisJCQkJCXNldF9jb2xzID0gcmlpbmZvLT5jb25mZGVsc2V0Y29sczsKKwkJCQl9CisJCQkJ ZWxzZQorCQkJCXsKKwkJCQkJbnVtX2NvbHNfdG9fc2V0ID0gcmlpbmZvLT5ua2V5czsKKwkJ CQkJc2V0X2NvbHMgPSByaWluZm8tPmZrX2F0dG51bXM7CisJCQkJfQorCQkJCWJyZWFrOwor CQkJZGVmYXVsdDoKKwkJCQllbG9nKEVSUk9SLCAiaW52YWxpZCB0Z2tpbmQgcGFzc2VkIHRv IHJpX3NldCIpOworCQl9CisKKwkJLyogLS0tLS0tLS0tLQorCQkgKiBUaGUgcXVlcnkgc3Ry aW5nIGJ1aWx0IGlzCisJCSAqCVVQREFURSBbT05MWV0gPGZrdGFibGU+IFNFVCBma2F0dDEg PSB7TlVMTHxERUZBVUxUfSBbLCAuLi5dCisJCSAqCQkJV0hFUkUgJDEgPSBma2F0dDEgW0FO RCAuLi5dCisJCSAqIFRoZSB0eXBlIGlkJ3MgZm9yIHRoZSAkIHBhcmFtZXRlcnMgYXJlIHRo b3NlIG9mIHRoZQorCQkgKiBjb3JyZXNwb25kaW5nIFBLIGF0dHJpYnV0ZXMuCisJCSAqIC0t LS0tLS0tLS0KKwkJICovCisJCWluaXRTdHJpbmdJbmZvKCZxdWVyeWJ1Zik7CisJCWZrX29u bHkgPSBma19yZWwtPnJkX3JlbC0+cmVsa2luZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RB QkxFID8KKwkJCSIiIDogIk9OTFkgIjsKKwkJcXVvdGVSZWxhdGlvbk5hbWUoZmtyZWxuYW1l LCBma19yZWwpOworCQlhcHBlbmRTdHJpbmdJbmZvKCZxdWVyeWJ1ZiwgIlVQREFURSAlcyVz IFNFVCIsCisJCQkJCQkgZmtfb25seSwgZmtyZWxuYW1lKTsKKworCQkvKgorCQkgKiBBZGQg YXNzaWdubWVudCBjbGF1c2VzCisJCSAqLworCQlxdWVyeXNlcCA9ICIiOworCQlmb3IgKGlu dCBpID0gMDsgaSA8IG51bV9jb2xzX3RvX3NldDsgaSsrKQorCQl7CisJCQlxdW90ZU9uZU5h bWUoYXR0bmFtZSwgUklBdHROYW1lKGZrX3JlbCwgc2V0X2NvbHNbaV0pKTsKKwkJCWFwcGVu ZFN0cmluZ0luZm8oJnF1ZXJ5YnVmLAorCQkJCQkJCSAiJXMgJXMgPSAlcyIsCisJCQkJCQkJ IHF1ZXJ5c2VwLCBhdHRuYW1lLAorCQkJCQkJCSBpc19zZXRfbnVsbCA/ICJOVUxMIiA6ICJE RUZBVUxUIik7CisJCQlxdWVyeXNlcCA9ICIsIjsKKwkJfQorCisJCS8qCisJCSAqIEFkZCBX SEVSRSBjbGF1c2UKKwkJICovCisJCXF1YWxzZXAgPSAiV0hFUkUiOworCQlmb3IgKGludCBp ID0gMDsgaSA8IHJpaW5mby0+bmtleXM7IGkrKykKKwkJeworCQkJT2lkCQkJcGtfdHlwZSA9 IFJJQXR0VHlwZShwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tpXSk7CisJCQlPaWQJCQlm a190eXBlID0gUklBdHRUeXBlKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW2ldKTsKKwkJ CU9pZAkJCXBrX2NvbGwgPSBSSUF0dENvbGxhdGlvbihwa19yZWwsIHJpaW5mby0+cGtfYXR0 bnVtc1tpXSk7CisJCQlPaWQJCQlma19jb2xsID0gUklBdHRDb2xsYXRpb24oZmtfcmVsLCBy aWluZm8tPmZrX2F0dG51bXNbaV0pOworCisJCQlxdW90ZU9uZU5hbWUoYXR0bmFtZSwKKwkJ CQkJCSBSSUF0dE5hbWUoZmtfcmVsLCByaWluZm8tPmZrX2F0dG51bXNbaV0pKTsKKworCQkJ c3ByaW50ZihwYXJhbW5hbWUsICIkJWQiLCBpICsgMSk7CisJCQlyaV9HZW5lcmF0ZVF1YWwo JnF1ZXJ5YnVmLCBxdWFsc2VwLAorCQkJCQkJCXBhcmFtbmFtZSwgcGtfdHlwZSwKKwkJCQkJ CQlyaWluZm8tPnBmX2VxX29wcnNbaV0sCisJCQkJCQkJYXR0bmFtZSwgZmtfdHlwZSk7CisJ CQlpZiAocGtfY29sbCAhPSBma19jb2xsICYmICFnZXRfY29sbGF0aW9uX2lzZGV0ZXJtaW5p c3RpYyhwa19jb2xsKSkKKwkJCQlyaV9HZW5lcmF0ZVF1YWxDb2xsYXRpb24oJnF1ZXJ5YnVm LCBwa19jb2xsKTsKKwkJCXF1YWxzZXAgPSAiQU5EIjsKKwkJCXF1ZXJ5b2lkc1tpXSA9IHBr X3R5cGU7CisJCX0KKworCQkvKiBQcmVwYXJlIGFuZCBzYXZlIHRoZSBwbGFuICovCisJCXFw bGFuID0gcmlfUGxhbkNoZWNrKHF1ZXJ5YnVmLmRhdGEsIHJpaW5mby0+bmtleXMsIHF1ZXJ5 b2lkcywKKwkJCQkJCQkgJnFrZXksIGZrX3JlbCwgcGtfcmVsKTsKKwl9CisKKwkvKgorCSAq IFdlIGhhdmUgYSBwbGFuIG5vdy4gUnVuIGl0IHRvIHVwZGF0ZSB0aGUgZXhpc3RpbmcgcmVm ZXJlbmNlcy4KKwkgKi8KKwlyaV9QZXJmb3JtQ2hlY2socmlpbmZvLCAmcWtleSwgcXBsYW4s CisJCQkJCWZrX3JlbCwgcGtfcmVsLAorCQkJCQlvbGRzbG90LCBOVUxMLAorCQkJCQlmYWxz ZSwgMCwKKwkJCQkJdHJ1ZSwJCS8qIG11c3QgZGV0ZWN0IG5ldyByb3dzICovCisJCQkJCVNQ SV9PS19VUERBVEUpOworCisJaWYgKFNQSV9maW5pc2goKSAhPSBTUElfT0tfRklOSVNIKQor CQllbG9nKEVSUk9SLCAiU1BJX2ZpbmlzaCBmYWlsZWQiKTsKKworCXRhYmxlX2Nsb3NlKGZr X3JlbCwgUm93RXhjbHVzaXZlTG9jayk7CisKKwlpZiAoaXNfc2V0X251bGwpCisJCXJldHVy biBQb2ludGVyR2V0RGF0dW0oTlVMTCk7CisJZWxzZQorCXsKKwkJLyoKKwkJICogSWYgd2Ug anVzdCBkZWxldGVkIG9yIHVwZGF0ZWQgdGhlIFBLIHJvdyB3aG9zZSBrZXkgd2FzIGVxdWFs IHRvIHRoZQorCQkgKiBGSyBjb2x1bW5zJyBkZWZhdWx0IHZhbHVlcywgYW5kIGEgcmVmZXJl bmNpbmcgcm93IGV4aXN0cyBpbiB0aGUgRksKKwkJICogdGFibGUsIHdlIHdvdWxkIGhhdmUg dXBkYXRlZCB0aGF0IHJvdyB0byB0aGUgc2FtZSB2YWx1ZXMgaXQgYWxyZWFkeQorCQkgKiBo YWQgLS0tIGFuZCBSSV9GS2V5X2ZrX3VwZF9jaGVja19yZXF1aXJlZCB3b3VsZCBoZW5jZSBi ZWxpZXZlIG5vCisJCSAqIGNoZWNrIGlzIG5lY2Vzc2FyeS4gIFNvIHdlIG5lZWQgdG8gZG8g YW5vdGhlciBsb29rdXAgbm93IGFuZCBpbgorCQkgKiBjYXNlIGEgcmVmZXJlbmNlIHN0aWxs IGV4aXN0cywgYWJvcnQgdGhlIG9wZXJhdGlvbi4gIFRoYXQgaXMKKwkJICogYWxyZWFkeSBp bXBsZW1lbnRlZCBpbiB0aGUgTk8gQUNUSU9OIHRyaWdnZXIsIHNvIGp1c3QgcnVuIGl0LiAo VGhpcworCQkgKiByZWNoZWNrIGlzIG9ubHkgbmVlZGVkIGluIHRoZSBTRVQgREVGQVVMVCBj YXNlLCBzaW5jZSBDQVNDQURFIHdvdWxkCisJCSAqIHJlbW92ZSBzdWNoIHJvd3MgaW4gY2Fz ZSBvZiBhIERFTEVURSBvcGVyYXRpb24gb3Igd291bGQgY2hhbmdlIHRoZQorCQkgKiBGSyBr ZXkgdmFsdWVzIGluIGNhc2Ugb2YgYW4gVVBEQVRFLCB3aGlsZSBTRVQgTlVMTCBpcyBjZXJ0 YWluIHRvCisJCSAqIHJlc3VsdCBpbiByb3dzIHRoYXQgc2F0aXNmeSB0aGUgRksgY29uc3Ry YWludC4pCisJCSAqLworCQlyZXR1cm4gcmlfcmVzdHJpY3QodHJpZ2RhdGEsIHRydWUpOwor CX0KK30KKworLyogLS0tLS0tLS0tLQorICogVFJJX0ZLZXlfY2hlY2tfaW5zIC0KKyAqCisg KglDaGVjayB0ZW1wb3JhbCBmb3JlaWduIGtleSBleGlzdGVuY2UgYXQgaW5zZXJ0IGV2ZW50 IG9uIEZLIHRhYmxlLgorICogLS0tLS0tLS0tLQorICovCitEYXR1bQorVFJJX0ZLZXlfY2hl Y2tfaW5zKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJLyoKKwkgKiBDaGVjayB0aGF0IHRoaXMg aXMgYSB2YWxpZCB0cmlnZ2VyIGNhbGwgb24gdGhlIHJpZ2h0IHRpbWUgYW5kIGV2ZW50Lgor CSAqLworCXJpX0NoZWNrVHJpZ2dlcihmY2luZm8sICJSSV9GS2V5X2NoZWNrX2lucyIsIFJJ X1RSSUdUWVBFX0lOU0VSVCk7CisKKwkvKgorCSAqIFNoYXJlIGNvZGUgd2l0aCBVUERBVEUg Y2FzZS4KKwkgKi8KKwlyZXR1cm4gUklfRktleV9jaGVjaygoVHJpZ2dlckRhdGEgKikgZmNp bmZvLT5jb250ZXh0KTsKK30KKworCisvKiAtLS0tLS0tLS0tCisgKiBUUklfRktleV9jaGVj a191cGQgLQorICoKKyAqCUNoZWNrIHRlbXBvcmFsIGZvcmVpZ24ga2V5IGV4aXN0ZW5jZSBh dCB1cGRhdGUgZXZlbnQgb24gRksgdGFibGUuCisgKiAtLS0tLS0tLS0tCisgKi8KK0RhdHVt CitUUklfRktleV9jaGVja191cGQoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwkvKgorCSAqIENo ZWNrIHRoYXQgdGhpcyBpcyBhIHZhbGlkIHRyaWdnZXIgY2FsbCBvbiB0aGUgcmlnaHQgdGlt ZSBhbmQgZXZlbnQuCisJICovCisJcmlfQ2hlY2tUcmlnZ2VyKGZjaW5mbywgIlJJX0ZLZXlf Y2hlY2tfdXBkIiwgUklfVFJJR1RZUEVfVVBEQVRFKTsKKworCS8qCisJICogU2hhcmUgY29k ZSB3aXRoIElOU0VSVCBjYXNlLgorCSAqLworCXJldHVybiBSSV9GS2V5X2NoZWNrKChUcmln Z2VyRGF0YSAqKSBmY2luZm8tPmNvbnRleHQpOworfQorCisKKy8qIC0tLS0tLS0tLS0KKyAq IFRSSV9GS2V5X25vYWN0aW9uX2RlbCAtCisgKgorICoJR2l2ZSBhbiBlcnJvciBhbmQgcm9s bCBiYWNrIHRoZSBjdXJyZW50IHRyYW5zYWN0aW9uIGlmIHRoZQorICoJZGVsZXRlIGhhcyBy ZXN1bHRlZCBpbiBhIHZpb2xhdGlvbiBvZiB0aGUgZ2l2ZW4gdGVtcG9yYWwKKyAqCXJlZmVy ZW50aWFsIGludGVncml0eSBjb25zdHJhaW50LgorICogLS0tLS0tLS0tLQorICovCitEYXR1 bQorVFJJX0ZLZXlfbm9hY3Rpb25fZGVsKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJLyoKKwkg KiBDaGVjayB0aGF0IHRoaXMgaXMgYSB2YWxpZCB0cmlnZ2VyIGNhbGwgb24gdGhlIHJpZ2h0 IHRpbWUgYW5kIGV2ZW50LgorCSAqLworCXJpX0NoZWNrVHJpZ2dlcihmY2luZm8sICJUUklf RktleV9ub2FjdGlvbl9kZWwiLCBSSV9UUklHVFlQRV9ERUxFVEUpOworCisJLyoKKwkgKiBT aGFyZSBjb2RlIHdpdGggUkVTVFJJQ1QvVVBEQVRFIGNhc2VzLgorCSAqLworCXJldHVybiBy aV9yZXN0cmljdCgoVHJpZ2dlckRhdGEgKikgZmNpbmZvLT5jb250ZXh0LCB0cnVlKTsKK30K KworLyoKKyAqIFRSSV9GS2V5X3Jlc3RyaWN0X2RlbCAtCisgKgorICogUmVzdHJpY3QgZGVs ZXRlIGZyb20gUEsgdGFibGUgdG8gcm93cyB1bnJlZmVyZW5jZWQgYnkgZm9yZWlnbiBrZXku CisgKgorICogVGhlIFNRTCBzdGFuZGFyZCBpbnRlbmRzIHRoYXQgdGhpcyByZWZlcmVudGlh bCBhY3Rpb24gb2NjdXIgZXhhY3RseSB3aGVuCisgKiB0aGUgZGVsZXRlIGlzIHBlcmZvcm1l ZCwgcmF0aGVyIHRoYW4gYWZ0ZXIuICBUaGlzIGFwcGVhcnMgdG8gYmUKKyAqIHRoZSBvbmx5 IGRpZmZlcmVuY2UgYmV0d2VlbiAiTk8gQUNUSU9OIiBhbmQgIlJFU1RSSUNUIi4gIEluIFBv c3RncmVzCisgKiB3ZSBzdGlsbCBpbXBsZW1lbnQgdGhpcyBhcyBhbiBBRlRFUiB0cmlnZ2Vy LCBidXQgaXQncyBub24tZGVmZXJyYWJsZS4KKyAqLworRGF0dW0KK1RSSV9GS2V5X3Jlc3Ry aWN0X2RlbChQR19GVU5DVElPTl9BUkdTKQoreworCS8qIENoZWNrIHRoYXQgdGhpcyBpcyBh IHZhbGlkIHRyaWdnZXIgY2FsbCBvbiB0aGUgcmlnaHQgdGltZSBhbmQgZXZlbnQuICovCisJ cmlfQ2hlY2tUcmlnZ2VyKGZjaW5mbywgIlRSSV9GS2V5X3Jlc3RyaWN0X2RlbCIsIFJJX1RS SUdUWVBFX0RFTEVURSk7CisKKwkvKiBTaGFyZSBjb2RlIHdpdGggTk8gQUNUSU9OL1VQREFU RSBjYXNlcy4gKi8KKwlyZXR1cm4gcmlfcmVzdHJpY3QoKFRyaWdnZXJEYXRhICopIGZjaW5m by0+Y29udGV4dCwgZmFsc2UpOworfQorCisvKgorICogVFJJX0ZLZXlfY2FzY2FkZV9kZWwg LQorICoKKyAqIENhc2NhZGVkIGRlbGV0ZSBmb3JlaWduIGtleSByZWZlcmVuY2VzIGF0IGRl bGV0ZSBldmVudCBvbiB0ZW1wb3JhbCBQSyB0YWJsZS4KKyAqLworRGF0dW0KK1RSSV9GS2V5 X2Nhc2NhZGVfZGVsKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJVHJpZ2dlckRhdGEgKnRyaWdk YXRhID0gKFRyaWdnZXJEYXRhICopIGZjaW5mby0+Y29udGV4dDsKKwljb25zdCBSSV9Db25z dHJhaW50SW5mbyAqcmlpbmZvOworCVJlbGF0aW9uCWZrX3JlbDsKKwlSZWxhdGlvbglwa19y ZWw7CisJVHVwbGVUYWJsZVNsb3QgKm9sZHNsb3Q7CisJUklfUXVlcnlLZXkgcWtleTsKKwlT UElQbGFuUHRyCXFwbGFuOworCURhdHVtIHRhcmdldFJhbmdlOworCisJLyogQ2hlY2sgdGhh dCB0aGlzIGlzIGEgdmFsaWQgdHJpZ2dlciBjYWxsIG9uIHRoZSByaWdodCB0aW1lIGFuZCBl dmVudC4gKi8KKwlyaV9DaGVja1RyaWdnZXIoZmNpbmZvLCAiVFJJX0ZLZXlfY2FzY2FkZV9k ZWwiLCBSSV9UUklHVFlQRV9ERUxFVEUpOworCisJcmlpbmZvID0gcmlfRmV0Y2hDb25zdHJh aW50SW5mbyh0cmlnZGF0YS0+dGdfdHJpZ2dlciwKKwkJCQkJCQkJCXRyaWdkYXRhLT50Z19y ZWxhdGlvbiwgdHJ1ZSk7CisKKwkvKgorCSAqIEdldCB0aGUgcmVsYXRpb24gZGVzY3JpcHRv cnMgb2YgdGhlIEZLIGFuZCBQSyB0YWJsZXMgYW5kIHRoZSBvbGQgdHVwbGUuCisJICoKKwkg KiBma19yZWwgaXMgb3BlbmVkIGluIFJvd0V4Y2x1c2l2ZUxvY2sgbW9kZSBzaW5jZSB0aGF0 J3Mgd2hhdCBvdXIKKwkgKiBldmVudHVhbCBERUxFVEUgd2lsbCBnZXQgb24gaXQuCisJICov CisJZmtfcmVsID0gdGFibGVfb3BlbihyaWluZm8tPmZrX3JlbGlkLCBSb3dFeGNsdXNpdmVM b2NrKTsKKwlwa19yZWwgPSB0cmlnZGF0YS0+dGdfcmVsYXRpb247CisJb2xkc2xvdCA9IHRy aWdkYXRhLT50Z190cmlnc2xvdDsKKworCS8qCisJICogSWYgdGhpcyBpcyBhIEZPUiBQT1JU SU9OIE9GIGRlbGV0ZSwKKwkgKiByZXN0cmljdCB0aGUgY2FzYWNkZSB0byBqdXN0IHRoZSB0 YXJnZXRlZCBwb3J0aW9uLgorCSAqLworCXRhcmdldFJhbmdlID0gdHVwbGVSYW5nZShvbGRz bG90LCByaWluZm8pOworCWlmIChyZWZlcmVuY2VzX3BlcmlvZCh0cmlnZGF0YS0+dGdfdGVt cG9yYWwsIHJpaW5mbykpCisJCXRhcmdldFJhbmdlID0gcmVzdHJpY3RfY2FzY2FkaW5nX3Jh bmdlKHRhcmdldFJhbmdlLAorCQkJCQkJCQkJCQkgICB0cmlnZGF0YS0+dGdfdGVtcG9yYWwt PmZwX3RhcmdldFJhbmdlKTsKKworCWlmIChTUElfY29ubmVjdCgpICE9IFNQSV9PS19DT05O RUNUKQorCQllbG9nKEVSUk9SLCAiU1BJX2Nvbm5lY3QgZmFpbGVkIik7CisKKwkvKiBGZXRj aCBvciBwcmVwYXJlIGEgc2F2ZWQgcGxhbiBmb3IgdGhlIGNhc2NhZGVkIGRlbGV0ZSAqLwor CXJpX0J1aWxkUXVlcnlLZXkoJnFrZXksIHJpaW5mbywgVFJJX1BMQU5fQ0FTQ0FERV9PTkRF TEVURSk7CisKKwlpZiAoKHFwbGFuID0gcmlfRmV0Y2hQcmVwYXJlZFBsYW4oJnFrZXkpKSA9 PSBOVUxMKQorCXsKKwkJYm9vbAkJcGtIYXNSYW5nZTsKKwkJYm9vbAkJZmtIYXNSYW5nZTsK KwkJU3RyaW5nSW5mb0RhdGEgcXVlcnlidWY7CisJCWNoYXIJCWZrcmVsbmFtZVtNQVhfUVVP VEVEX1JFTF9OQU1FX0xFTl07CisJCWNoYXIJCWF0dG5hbWVbTUFYX1FVT1RFRF9OQU1FX0xF Tl07CisJCWNoYXIJICAgKmF0dHN0cjsKKwkJY2hhcgkJcGFyYW1uYW1lWzE2XTsKKwkJY29u c3QgY2hhciAqcXVlcnlzZXA7CisJCU9pZAkJCXF1ZXJ5b2lkc1tSSV9NQVhfTlVNS0VZU107 CisJCWNvbnN0IGNoYXIgKmZrX29ubHk7CisKKwkJcGtIYXNSYW5nZSA9IHJpaW5mby0+cGtf cGVyaW9kID09IEludmFsaWRPaWQ7CisJCWZrSGFzUmFuZ2UgPSByaWluZm8tPmZrX3Blcmlv ZCA9PSBJbnZhbGlkT2lkOworCisJCS8qIC0tLS0tLS0tLS0KKwkJICogVGhlIHF1ZXJ5IHN0 cmluZyBidWlsdCBpcworCQkgKglERUxFVEUgRlJPTSBbT05MWV0gPGZrdGFibGU+CisJCSAq CUZPUiBQT1JUSU9OIE9GICRma2F0dCBGUk9NIGxvd2VyKCRuKzEpIFRPIHVwcGVyKCRuKzEp CisJCSAqCVdIRVJFICQxID0gZmthdHQxIFtBTkQgLi4uXQorCQkgKiBUaGUgdHlwZSBpZCdz IGZvciB0aGUgJCBwYXJhbWV0ZXJzIGFyZSB0aG9zZSBvZiB0aGUKKwkJICogY29ycmVzcG9u ZGluZyBQSyBhdHRyaWJ1dGVzLgorCQkgKiAtLS0tLS0tLS0tCisJCSAqLworCQlpbml0U3Ry aW5nSW5mbygmcXVlcnlidWYpOworCQlma19vbmx5ID0gZmtfcmVsLT5yZF9yZWwtPnJlbGtp bmQgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSA/CisJCQkiIiA6ICJPTkxZICI7CisJ CXF1b3RlUmVsYXRpb25OYW1lKGZrcmVsbmFtZSwgZmtfcmVsKTsKKwkJaWYgKGZrSGFzUmFu Z2UpCisJCQlxdW90ZU9uZU5hbWUoYXR0bmFtZSwgUklBdHROYW1lKGZrX3JlbCwgcmlpbmZv LT5ma19hdHRudW1zW3JpaW5mby0+bmtleXMgLSAxXSkpOworCQllbHNlCisJCQlxdW90ZU9u ZU5hbWUoYXR0bmFtZSwgZ2V0X3BlcmlvZG5hbWUocmlpbmZvLT5ma19wZXJpb2QsIGZhbHNl KSk7CisKKwkJYXBwZW5kU3RyaW5nSW5mbygmcXVlcnlidWYsICJERUxFVEUgRlJPTSAlcyVz IEZPUiBQT1JUSU9OIE9GICVzIEZST00gbG93ZXIoJCVkKSBUTyB1cHBlcigkJWQpIiwKKwkJ CQkJCSBma19vbmx5LCBma3JlbG5hbWUsIGF0dG5hbWUsIHJpaW5mby0+bmtleXMgKyAxLCBy aWluZm8tPm5rZXlzICsgMSk7CisJCXF1ZXJ5c2VwID0gIldIRVJFIjsKKwkJZm9yIChpbnQg aSA9IDA7IGkgPCByaWluZm8tPm5rZXlzOyBpKyspCisJCXsKKwkJCU9pZAkJcGtfdHlwZTsK KwkJCU9pZAkJZmtfdHlwZTsKKwkJCU9pZAkJcGtfY29sbDsKKwkJCU9pZAkJZmtfY29sbDsK KworCQkJaWYgKHJpaW5mby0+cGtfYXR0bnVtc1tpXSAhPSBJbnZhbGlkT2lkKQorCQkJewor CQkJCXBrX3R5cGUgPSBSSUF0dFR5cGUocGtfcmVsLCByaWluZm8tPnBrX2F0dG51bXNbaV0p OworCQkJCXBrX2NvbGwgPSBSSUF0dENvbGxhdGlvbihwa19yZWwsIHJpaW5mby0+cGtfYXR0 bnVtc1tpXSk7CisJCQl9CisJCQllbHNlCisJCQl7CisJCQkJcGtfdHlwZSA9IHJpaW5mby0+ cGtfcGVyaW9kX3JhbmdldHlwZTsKKwkJCQlwa19jb2xsID0gcmlpbmZvLT5wa19wZXJpb2Rf Y29sbGF0aW9uOworCQkJfQorCisJCQlpZiAocmlpbmZvLT5ma19hdHRudW1zW2ldICE9IElu dmFsaWRPaWQpCisJCQl7CisJCQkJZmtfdHlwZSA9IFJJQXR0VHlwZShma19yZWwsIHJpaW5m by0+ZmtfYXR0bnVtc1tpXSk7CisJCQkJZmtfY29sbCA9IFJJQXR0Q29sbGF0aW9uKGZrX3Jl bCwgcmlpbmZvLT5ma19hdHRudW1zW2ldKTsKKwkJCX0KKwkJCWVsc2UKKwkJCXsKKwkJCQlm a190eXBlID0gcmlpbmZvLT5ma19wZXJpb2RfcmFuZ2V0eXBlOworCQkJCWZrX2NvbGwgPSBy aWluZm8tPmZrX3BlcmlvZF9jb2xsYXRpb247CisJCQl9CisKKwkJCWlmIChyaWluZm8tPmZr X2F0dG51bXNbaV0gPT0gSW52YWxpZE9pZCkKKwkJCQlhdHRzdHIgPSBxdWVyeV9wZXJpb2Rf cmFuZ2UocmlpbmZvLCBma19yZWwsICIiLCBmYWxzZSk7CisJCQllbHNlCisJCQl7CisJCQkJ cXVvdGVPbmVOYW1lKGF0dG5hbWUsCisJCQkJCQkJIFJJQXR0TmFtZShma19yZWwsIHJpaW5m by0+ZmtfYXR0bnVtc1tpXSkpOworCQkJCWF0dHN0ciA9IGF0dG5hbWU7CisJCQl9CisJCQlz cHJpbnRmKHBhcmFtbmFtZSwgIiQlZCIsIGkgKyAxKTsKKwkJCXJpX0dlbmVyYXRlUXVhbCgm cXVlcnlidWYsIHF1ZXJ5c2VwLAorCQkJCQkJCXBhcmFtbmFtZSwgcGtfdHlwZSwKKwkJCQkJ CQlyaWluZm8tPnBmX2VxX29wcnNbaV0sCisJCQkJCQkJYXR0c3RyLCBma190eXBlKTsKKwkJ CWlmIChwa19jb2xsICE9IGZrX2NvbGwgJiYgIWdldF9jb2xsYXRpb25faXNkZXRlcm1pbmlz dGljKHBrX2NvbGwpKQorCQkJCXJpX0dlbmVyYXRlUXVhbENvbGxhdGlvbigmcXVlcnlidWYs IHBrX2NvbGwpOworCQkJcXVlcnlzZXAgPSAiQU5EIjsKKwkJCXF1ZXJ5b2lkc1tpXSA9IHBr X3R5cGU7CisJCX0KKworCQlpZiAocGtIYXNSYW5nZSkKKwkJCXF1ZXJ5b2lkc1tyaWluZm8t Pm5rZXlzXSA9IFJJQXR0VHlwZShwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tyaWluZm8t Pm5rZXlzIC0gMV0pOworCQllbHNlCisJCQlxdWVyeW9pZHNbcmlpbmZvLT5ua2V5c10gPSBy aWluZm8tPnBrX3BlcmlvZF9yYW5nZXR5cGU7CisKKwkJLyogUHJlcGFyZSBhbmQgc2F2ZSB0 aGUgcGxhbiAqLworCQlxcGxhbiA9IHJpX1BsYW5DaGVjayhxdWVyeWJ1Zi5kYXRhLCByaWlu Zm8tPm5rZXlzICsgMSwgcXVlcnlvaWRzLAorCQkJCQkJCSAmcWtleSwgZmtfcmVsLCBwa19y ZWwpOworCX0KKworCS8qCisJICogV2UgaGF2ZSBhIHBsYW4gbm93LiBCdWlsZCB1cCB0aGUg YXJndW1lbnRzIGZyb20gdGhlIGtleSB2YWx1ZXMgaW4gdGhlCisJICogZGVsZXRlZCBQSyB0 dXBsZSBhbmQgZGVsZXRlIHRoZSByZWZlcmVuY2luZyByb3dzCisJICovCisJcmlfUGVyZm9y bUNoZWNrKHJpaW5mbywgJnFrZXksIHFwbGFuLAorCQkJCQlma19yZWwsIHBrX3JlbCwKKwkJ CQkJb2xkc2xvdCwgTlVMTCwKKwkJCQkJdHJ1ZSwgdGFyZ2V0UmFuZ2UsCisJCQkJCXRydWUs CQkvKiBtdXN0IGRldGVjdCBuZXcgcm93cyAqLworCQkJCQlTUElfT0tfREVMRVRFKTsKKwor CWlmIChTUElfZmluaXNoKCkgIT0gU1BJX09LX0ZJTklTSCkKKwkJZWxvZyhFUlJPUiwgIlNQ SV9maW5pc2ggZmFpbGVkIik7CisKKwl0YWJsZV9jbG9zZShma19yZWwsIFJvd0V4Y2x1c2l2 ZUxvY2spOworCisJcmV0dXJuIFBvaW50ZXJHZXREYXR1bShOVUxMKTsKK30KKworCisvKgor ICogVFJJX0ZLZXlfbm9hY3Rpb25fdXBkIC0KKyAqCisgKiBHaXZlIGFuIGVycm9yIGFuZCBy b2xsIGJhY2sgdGhlIGN1cnJlbnQgdHJhbnNhY3Rpb24gaWYgdGhlCisgKiB1cGRhdGUgaGFz IHJlc3VsdGVkIGluIGEgdmlvbGF0aW9uIG9mIHRoZSBnaXZlbiByZWZlcmVudGlhbAorICog aW50ZWdyaXR5IGNvbnN0cmFpbnQuCisgKi8KK0RhdHVtCitUUklfRktleV9ub2FjdGlvbl91 cGQoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwkvKiBDaGVjayB0aGF0IHRoaXMgaXMgYSB2YWxp ZCB0cmlnZ2VyIGNhbGwgb24gdGhlIHJpZ2h0IHRpbWUgYW5kIGV2ZW50LiAqLworCXJpX0No ZWNrVHJpZ2dlcihmY2luZm8sICJUUklfRktleV9ub2FjdGlvbl91cGQiLCBSSV9UUklHVFlQ RV9VUERBVEUpOworCisJLyogU2hhcmUgY29kZSB3aXRoIFJFU1RSSUNUL0RFTEVURSBjYXNl cy4gKi8KKwlyZXR1cm4gcmlfcmVzdHJpY3QoKFRyaWdnZXJEYXRhICopIGZjaW5mby0+Y29u dGV4dCwgdHJ1ZSk7Cit9CisKKy8qCisgKiBUUklfRktleV9yZXN0cmljdF91cGQgLQorICoK KyAqIFJlc3RyaWN0IHVwZGF0ZSBvZiBQSyB0byByb3dzIHVucmVmZXJlbmNlZCBieSBmb3Jl aWduIGtleS4KKyAqCisgKiBUaGUgU1FMIHN0YW5kYXJkIGludGVuZHMgdGhhdCB0aGlzIHJl ZmVyZW50aWFsIGFjdGlvbiBvY2N1ciBleGFjdGx5IHdoZW4KKyAqIHRoZSB1cGRhdGUgaXMg cGVyZm9ybWVkLCByYXRoZXIgdGhhbiBhZnRlci4gIFRoaXMgYXBwZWFycyB0byBiZQorICog dGhlIG9ubHkgZGlmZmVyZW5jZSBiZXR3ZWVuICJOTyBBQ1RJT04iIGFuZCAiUkVTVFJJQ1Qi LiAgSW4gUG9zdGdyZXMKKyAqIHdlIHN0aWxsIGltcGxlbWVudCB0aGlzIGFzIGFuIEFGVEVS IHRyaWdnZXIsIGJ1dCBpdCdzIG5vbi1kZWZlcnJhYmxlLgorICovCitEYXR1bQorVFJJX0ZL ZXlfcmVzdHJpY3RfdXBkKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJLyogQ2hlY2sgdGhhdCB0 aGlzIGlzIGEgdmFsaWQgdHJpZ2dlciBjYWxsIG9uIHRoZSByaWdodCB0aW1lIGFuZCBldmVu dC4gKi8KKwlyaV9DaGVja1RyaWdnZXIoZmNpbmZvLCAiVFJJX0ZLZXlfcmVzdHJpY3RfdXBk IiwgUklfVFJJR1RZUEVfVVBEQVRFKTsKKworCS8qIFNoYXJlIGNvZGUgd2l0aCBOTyBBQ1RJ T04vREVMRVRFIGNhc2VzLiAqLworCXJldHVybiByaV9yZXN0cmljdCgoVHJpZ2dlckRhdGEg KikgZmNpbmZvLT5jb250ZXh0LCBmYWxzZSk7Cit9CisKKy8qCisgKiBUUklfRktleV9jYXNj YWRlX3VwZCAtCisgKgorICogQ2FzY2FkZWQgdXBkYXRlIGZvcmVpZ24ga2V5IHJlZmVyZW5j ZXMgYXQgdXBkYXRlIGV2ZW50IG9uIHRlbXBvcmFsIFBLIHRhYmxlLgorICovCitEYXR1bQor VFJJX0ZLZXlfY2FzY2FkZV91cGQoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlUcmlnZ2VyRGF0 YSAqdHJpZ2RhdGEgPSAoVHJpZ2dlckRhdGEgKikgZmNpbmZvLT5jb250ZXh0OworCWNvbnN0 IFJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm87CisJUmVsYXRpb24JZmtfcmVsOworCVJlbGF0 aW9uCXBrX3JlbDsKKwlUdXBsZVRhYmxlU2xvdCAqb2xkc2xvdDsKKwlUdXBsZVRhYmxlU2xv dCAqbmV3c2xvdDsKKwlSSV9RdWVyeUtleSBxa2V5OworCVNQSVBsYW5QdHIJcXBsYW47CisJ RGF0dW0gdGFyZ2V0UmFuZ2U7CisKKwkvKiBDaGVjayB0aGF0IHRoaXMgaXMgYSB2YWxpZCB0 cmlnZ2VyIGNhbGwgb24gdGhlIHJpZ2h0IHRpbWUgYW5kIGV2ZW50LiAqLworCXJpX0NoZWNr VHJpZ2dlcihmY2luZm8sICJUUklfRktleV9jYXNjYWRlX3VwZCIsIFJJX1RSSUdUWVBFX1VQ REFURSk7CisKKwlyaWluZm8gPSByaV9GZXRjaENvbnN0cmFpbnRJbmZvKHRyaWdkYXRhLT50 Z190cmlnZ2VyLAorCQkJCQkJCQkJdHJpZ2RhdGEtPnRnX3JlbGF0aW9uLCB0cnVlKTsKKwor CS8qCisJICogR2V0IHRoZSByZWxhdGlvbiBkZXNjcmlwdG9ycyBvZiB0aGUgRksgYW5kIFBL IHRhYmxlcyBhbmQgdGhlIG5ldyBhbmQKKwkgKiBvbGQgdHVwbGUuCisJICoKKwkgKiBma19y ZWwgaXMgb3BlbmVkIGluIFJvd0V4Y2x1c2l2ZUxvY2sgbW9kZSBzaW5jZSB0aGF0J3Mgd2hh dCBvdXIKKwkgKiBldmVudHVhbCBVUERBVEUgd2lsbCBnZXQgb24gaXQuCisJICovCisJZmtf cmVsID0gdGFibGVfb3BlbihyaWluZm8tPmZrX3JlbGlkLCBSb3dFeGNsdXNpdmVMb2NrKTsK Kwlwa19yZWwgPSB0cmlnZGF0YS0+dGdfcmVsYXRpb247CisJbmV3c2xvdCA9IHRyaWdkYXRh LT50Z19uZXdzbG90OworCW9sZHNsb3QgPSB0cmlnZGF0YS0+dGdfdHJpZ3Nsb3Q7CisKKwkv KgorCSAqIElmIHRoaXMgaXMgYSBGT1IgUE9SVElPTiBPRiB1cGRhdGUsCisJICogcmVzdHJp Y3QgdGhlIGNhc2FjZGUgdG8ganVzdCB0aGUgdGFyZ2V0ZWQgcG9ydGlvbi4KKwkgKi8KKwl0 YXJnZXRSYW5nZSA9IHR1cGxlUmFuZ2Uob2xkc2xvdCwgcmlpbmZvKTsKKwlpZiAocmVmZXJl bmNlc19wZXJpb2QodHJpZ2RhdGEtPnRnX3RlbXBvcmFsLCByaWluZm8pKQorCQl0YXJnZXRS YW5nZSA9IHJlc3RyaWN0X2Nhc2NhZGluZ19yYW5nZSh0YXJnZXRSYW5nZSwKKwkJCQkJCQkJ CQkJICAgdHJpZ2RhdGEtPnRnX3RlbXBvcmFsLT5mcF90YXJnZXRSYW5nZSk7CisKKwlpZiAo U1BJX2Nvbm5lY3QoKSAhPSBTUElfT0tfQ09OTkVDVCkKKwkJZWxvZyhFUlJPUiwgIlNQSV9j b25uZWN0IGZhaWxlZCIpOworCisJLyogRmV0Y2ggb3IgcHJlcGFyZSBhIHNhdmVkIHBsYW4g Zm9yIHRoZSBjYXNjYWRlZCB1cGRhdGUgKi8KKwlyaV9CdWlsZFF1ZXJ5S2V5KCZxa2V5LCBy aWluZm8sIFRSSV9QTEFOX0NBU0NBREVfT05VUERBVEUpOworCisJaWYgKChxcGxhbiA9IHJp X0ZldGNoUHJlcGFyZWRQbGFuKCZxa2V5KSkgPT0gTlVMTCkKKwl7CisJCWJvb2wJCXBrSGFz UmFuZ2U7CisJCWJvb2wJCWZrSGFzUmFuZ2U7CisJCVN0cmluZ0luZm9EYXRhIHF1ZXJ5YnVm OworCQlTdHJpbmdJbmZvRGF0YSBxdWFsYnVmOworCQljaGFyCQlma3JlbG5hbWVbTUFYX1FV T1RFRF9SRUxfTkFNRV9MRU5dOworCQljaGFyCQlhdHRuYW1lW01BWF9RVU9URURfTkFNRV9M RU5dOworCQljaGFyCSAgICphdHRzdHI7CisJCWNoYXIJCXBhcmFtbmFtZVsxNl07CisJCWNv bnN0IGNoYXIgKnF1ZXJ5c2VwOworCQljb25zdCBjaGFyICpxdWFsc2VwOworCQlPaWQJCQlx dWVyeW9pZHNbUklfTUFYX05VTUtFWVNdOworCQljb25zdCBjaGFyICpma19vbmx5OworCisJ CXBrSGFzUmFuZ2UgPSByaWluZm8tPnBrX3BlcmlvZCA9PSBJbnZhbGlkT2lkOworCQlma0hh c1JhbmdlID0gcmlpbmZvLT5ma19wZXJpb2QgPT0gSW52YWxpZE9pZDsKKworCQkvKiAtLS0t LS0tLS0tCisJCSAqIFRoZSBxdWVyeSBzdHJpbmcgYnVpbHQgaXMKKwkJICoJVVBEQVRFIFtP TkxZXSA8Zmt0YWJsZT4KKwkJICoJICAgICAgICBGT1IgUE9SVElPTiBPRiAkZmthdHQgRlJP TSBsb3dlcigkbisxKSBUTyB1cHBlcigkbisxKQorCQkgKgkgICAgICAgIFNFVCBma2F0dDEg PSAkMSwgWywgLi4uXQorCQkgKgkgICAgICAgIFdIRVJFICRuID0gZmthdHQxIFtBTkQgLi4u XQorCQkgKiBUaGUgdHlwZSBpZCdzIGZvciB0aGUgJCBwYXJhbWV0ZXJzIGFyZSB0aG9zZSBv ZiB0aGUKKwkJICogY29ycmVzcG9uZGluZyBQSyBhdHRyaWJ1dGVzLiAgTm90ZSB0aGF0IHdl IGFyZSBhc3N1bWluZworCQkgKiB0aGVyZSBpcyBhbiBhc3NpZ25tZW50IGNhc3QgZnJvbSB0 aGUgUEsgdG8gdGhlIEZLIHR5cGU7CisJCSAqIGVsc2UgdGhlIHBhcnNlciB3aWxsIGZhaWwu CisJCSAqIC0tLS0tLS0tLS0KKwkJICovCisJCWluaXRTdHJpbmdJbmZvKCZxdWVyeWJ1Zik7 CisJCWluaXRTdHJpbmdJbmZvKCZxdWFsYnVmKTsKKwkJZmtfb25seSA9IGZrX3JlbC0+cmRf cmVsLT5yZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUgPworCQkJIiIgOiAi T05MWSAiOworCQlxdW90ZVJlbGF0aW9uTmFtZShma3JlbG5hbWUsIGZrX3JlbCk7CisJCWlm IChma0hhc1JhbmdlKQorCQkJcXVvdGVPbmVOYW1lKGF0dG5hbWUsIFJJQXR0TmFtZShma19y ZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tyaWluZm8tPm5rZXlzIC0gMV0pKTsKKwkJZWxzZQor CQkJcXVvdGVPbmVOYW1lKGF0dG5hbWUsIGdldF9wZXJpb2RuYW1lKHJpaW5mby0+ZmtfcGVy aW9kLCBmYWxzZSkpOworCisJCWFwcGVuZFN0cmluZ0luZm8oJnF1ZXJ5YnVmLCAiVVBEQVRF ICVzJXMgRk9SIFBPUlRJT04gT0YgJXMgRlJPTSBsb3dlcigkJWQpIFRPIHVwcGVyKCQlZCkg U0VUIiwKKwkJCQkJCSBma19vbmx5LCBma3JlbG5hbWUsIGF0dG5hbWUsIDIgKiByaWluZm8t Pm5rZXlzICsgMSwgMiAqIHJpaW5mby0+bmtleXMgKyAxKTsKKworCQlxdWVyeXNlcCA9ICIi OworCQlxdWFsc2VwID0gIldIRVJFIjsKKwkJZm9yIChpbnQgaSA9IDAsIGogPSByaWluZm8t Pm5rZXlzOyBpIDwgcmlpbmZvLT5ua2V5czsgaSsrLCBqKyspCisJCXsKKwkJCU9pZAkJcGtf dHlwZTsKKwkJCU9pZAkJZmtfdHlwZTsKKwkJCU9pZAkJcGtfY29sbDsKKwkJCU9pZAkJZmtf Y29sbDsKKworCQkJaWYgKHJpaW5mby0+cGtfYXR0bnVtc1tpXSAhPSBJbnZhbGlkT2lkKQor CQkJeworCQkJCXBrX3R5cGUgPSBSSUF0dFR5cGUocGtfcmVsLCByaWluZm8tPnBrX2F0dG51 bXNbaV0pOworCQkJCXBrX2NvbGwgPSBSSUF0dENvbGxhdGlvbihwa19yZWwsIHJpaW5mby0+ cGtfYXR0bnVtc1tpXSk7CisJCQl9CisJCQllbHNlCisJCQl7CisJCQkJcGtfdHlwZSA9IHJp aW5mby0+cGtfcGVyaW9kX3JhbmdldHlwZTsKKwkJCQlwa19jb2xsID0gcmlpbmZvLT5wa19w ZXJpb2RfY29sbGF0aW9uOworCQkJfQorCisJCQlpZiAocmlpbmZvLT5ma19hdHRudW1zW2ld ICE9IEludmFsaWRPaWQpCisJCQl7CisJCQkJZmtfdHlwZSA9IFJJQXR0VHlwZShma19yZWws IHJpaW5mby0+ZmtfYXR0bnVtc1tpXSk7CisJCQkJZmtfY29sbCA9IFJJQXR0Q29sbGF0aW9u KGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW2ldKTsKKwkJCX0KKwkJCWVsc2UKKwkJCXsK KwkJCQlma190eXBlID0gcmlpbmZvLT5ma19wZXJpb2RfcmFuZ2V0eXBlOworCQkJCWZrX2Nv bGwgPSByaWluZm8tPmZrX3BlcmlvZF9jb2xsYXRpb247CisJCQl9CisKKwkJCWlmIChyaWlu Zm8tPmZrX2F0dG51bXNbaV0gPT0gSW52YWxpZE9pZCkKKwkJCQlhdHRzdHIgPSBxdWVyeV9w ZXJpb2RfcmFuZ2UocmlpbmZvLCBma19yZWwsICIiLCBmYWxzZSk7CisJCQllbHNlCisJCQl7 CisJCQkJcXVvdGVPbmVOYW1lKGF0dG5hbWUsCisJCQkJCQkJIFJJQXR0TmFtZShma19yZWws IHJpaW5mby0+ZmtfYXR0bnVtc1tpXSkpOworCQkJCWF0dHN0ciA9IGF0dG5hbWU7CisJCQl9 CisJCQkvKgorCQkJICogRG9uJ3Qgc2V0IHRoZSB0ZW1wb3JhbCBjb2x1bW4ocykuCisJCQkg KiBGT1IgUE9SVElPTiBPRiB3aWxsIHRha2UgY2FyZSBvZiB0aGF0LgorCQkJICovCisJCQlp ZiAoaSA8IHJpaW5mby0+bmtleXMgLSAxKQorCQkJCWFwcGVuZFN0cmluZ0luZm8oJnF1ZXJ5 YnVmLAorCQkJCQkJCQkgIiVzICVzID0gJCVkIiwKKwkJCQkJCQkJIHF1ZXJ5c2VwLCBhdHRz dHIsIGkgKyAxKTsKIAkJCXNwcmludGYocGFyYW1uYW1lLCAiJCVkIiwgaiArIDEpOwogCQkJ cmlfR2VuZXJhdGVRdWFsKCZxdWFsYnVmLCBxdWFsc2VwLAogCQkJCQkJCXBhcmFtbmFtZSwg cGtfdHlwZSwKIAkJCQkJCQlyaWluZm8tPnBmX2VxX29wcnNbaV0sCi0JCQkJCQkJYXR0bmFt ZSwgZmtfdHlwZSk7CisJCQkJCQkJYXR0c3RyLCBma190eXBlKTsKIAkJCWlmIChwa19jb2xs ICE9IGZrX2NvbGwgJiYgIWdldF9jb2xsYXRpb25faXNkZXRlcm1pbmlzdGljKHBrX2NvbGwp KQogCQkJCXJpX0dlbmVyYXRlUXVhbENvbGxhdGlvbigmcXVlcnlidWYsIHBrX2NvbGwpOwog CQkJcXVlcnlzZXAgPSAiLCI7CkBAIC05NDIsMTcgKzE4MjksMjQgQEAgUklfRktleV9jYXNj YWRlX3VwZChQR19GVU5DVElPTl9BUkdTKQogCQl9CiAJCWFwcGVuZEJpbmFyeVN0cmluZ0lu Zm8oJnF1ZXJ5YnVmLCBxdWFsYnVmLmRhdGEsIHF1YWxidWYubGVuKTsKIAorCQlpZiAocGtI YXNSYW5nZSkKKwkJCXF1ZXJ5b2lkc1syICogcmlpbmZvLT5ua2V5c10gPSBSSUF0dFR5cGUo cGtfcmVsLCByaWluZm8tPnBrX2F0dG51bXNbcmlpbmZvLT5ua2V5cyAtIDFdKTsKKwkJZWxz ZQorCQkJcXVlcnlvaWRzWzIgKiByaWluZm8tPm5rZXlzXSA9IHJpaW5mby0+cGtfcGVyaW9k X3JhbmdldHlwZTsKKwogCQkvKiBQcmVwYXJlIGFuZCBzYXZlIHRoZSBwbGFuICovCi0JCXFw bGFuID0gcmlfUGxhbkNoZWNrKHF1ZXJ5YnVmLmRhdGEsIHJpaW5mby0+bmtleXMgKiAyLCBx dWVyeW9pZHMsCisJCXFwbGFuID0gcmlfUGxhbkNoZWNrKHF1ZXJ5YnVmLmRhdGEsIDIgKiBy aWluZm8tPm5rZXlzICsgMSwgcXVlcnlvaWRzLAogCQkJCQkJCSAmcWtleSwgZmtfcmVsLCBw a19yZWwpOwogCX0KIAogCS8qCi0JICogV2UgaGF2ZSBhIHBsYW4gbm93LiBSdW4gaXQgdG8g dXBkYXRlIHRoZSBleGlzdGluZyByZWZlcmVuY2VzLgorCSAqIFdlIGhhdmUgYSBwbGFuIG5v dy4gQnVpbGQgdXAgdGhlIGFyZ3VtZW50cyBmcm9tIHRoZSBrZXkgdmFsdWVzIGluIHRoZQor CSAqIHVwZGF0ZWQgUEsgdHVwbGUgYW5kIHVwZGF0ZSB0aGUgcmVmZXJlbmNpbmcgcm93cwog CSAqLwogCXJpX1BlcmZvcm1DaGVjayhyaWluZm8sICZxa2V5LCBxcGxhbiwKIAkJCQkJZmtf cmVsLCBwa19yZWwsCiAJCQkJCW9sZHNsb3QsIG5ld3Nsb3QsCisJCQkJCXRydWUsIHRhcmdl dFJhbmdlLAogCQkJCQl0cnVlLAkJLyogbXVzdCBkZXRlY3QgbmV3IHJvd3MgKi8KIAkJCQkJ U1BJX09LX1VQREFURSk7CiAKQEAgLTk2NCw3NSArMTg1OCwxMTggQEAgUklfRktleV9jYXNj YWRlX3VwZChQR19GVU5DVElPTl9BUkdTKQogCXJldHVybiBQb2ludGVyR2V0RGF0dW0oTlVM TCk7CiB9CiAKLQogLyoKLSAqIFJJX0ZLZXlfc2V0bnVsbF9kZWwgLQorICogVFJJX0ZLZXlf c2V0bnVsbF9kZWwgLQogICoKICAqIFNldCBmb3JlaWduIGtleSByZWZlcmVuY2VzIHRvIE5V TEwgdmFsdWVzIGF0IGRlbGV0ZSBldmVudCBvbiBQSyB0YWJsZS4KICAqLwogRGF0dW0KLVJJ X0ZLZXlfc2V0bnVsbF9kZWwoUEdfRlVOQ1RJT05fQVJHUykKK1RSSV9GS2V5X3NldG51bGxf ZGVsKFBHX0ZVTkNUSU9OX0FSR1MpCiB7CiAJLyogQ2hlY2sgdGhhdCB0aGlzIGlzIGEgdmFs aWQgdHJpZ2dlciBjYWxsIG9uIHRoZSByaWdodCB0aW1lIGFuZCBldmVudC4gKi8KLQlyaV9D aGVja1RyaWdnZXIoZmNpbmZvLCAiUklfRktleV9zZXRudWxsX2RlbCIsIFJJX1RSSUdUWVBF X0RFTEVURSk7CisJcmlfQ2hlY2tUcmlnZ2VyKGZjaW5mbywgIlRSSV9GS2V5X3NldG51bGxf ZGVsIiwgUklfVFJJR1RZUEVfREVMRVRFKTsKIAogCS8qIFNoYXJlIGNvZGUgd2l0aCBVUERB VEUgY2FzZSAqLwotCXJldHVybiByaV9zZXQoKFRyaWdnZXJEYXRhICopIGZjaW5mby0+Y29u dGV4dCwgdHJ1ZSwgUklfVFJJR1RZUEVfREVMRVRFKTsKKwlyZXR1cm4gdHJpX3NldCgoVHJp Z2dlckRhdGEgKikgZmNpbmZvLT5jb250ZXh0LCB0cnVlLCBSSV9UUklHVFlQRV9ERUxFVEUp OwogfQogCiAvKgotICogUklfRktleV9zZXRudWxsX3VwZCAtCisgKiBUUklfRktleV9zZXRu dWxsX3VwZCAtCiAgKgogICogU2V0IGZvcmVpZ24ga2V5IHJlZmVyZW5jZXMgdG8gTlVMTCBh dCB1cGRhdGUgZXZlbnQgb24gUEsgdGFibGUuCiAgKi8KIERhdHVtCi1SSV9GS2V5X3NldG51 bGxfdXBkKFBHX0ZVTkNUSU9OX0FSR1MpCitUUklfRktleV9zZXRudWxsX3VwZChQR19GVU5D VElPTl9BUkdTKQogewogCS8qIENoZWNrIHRoYXQgdGhpcyBpcyBhIHZhbGlkIHRyaWdnZXIg Y2FsbCBvbiB0aGUgcmlnaHQgdGltZSBhbmQgZXZlbnQuICovCi0JcmlfQ2hlY2tUcmlnZ2Vy KGZjaW5mbywgIlJJX0ZLZXlfc2V0bnVsbF91cGQiLCBSSV9UUklHVFlQRV9VUERBVEUpOwor CXJpX0NoZWNrVHJpZ2dlcihmY2luZm8sICJUUklfRktleV9zZXRudWxsX3VwZCIsIFJJX1RS SUdUWVBFX1VQREFURSk7CiAKIAkvKiBTaGFyZSBjb2RlIHdpdGggREVMRVRFIGNhc2UgKi8K LQlyZXR1cm4gcmlfc2V0KChUcmlnZ2VyRGF0YSAqKSBmY2luZm8tPmNvbnRleHQsIHRydWUs IFJJX1RSSUdUWVBFX1VQREFURSk7CisJcmV0dXJuIHRyaV9zZXQoKFRyaWdnZXJEYXRhICop IGZjaW5mby0+Y29udGV4dCwgdHJ1ZSwgUklfVFJJR1RZUEVfVVBEQVRFKTsKIH0KIAogLyoK LSAqIFJJX0ZLZXlfc2V0ZGVmYXVsdF9kZWwgLQorICogVFJJX0ZLZXlfc2V0ZGVmYXVsdF9k ZWwgLQogICoKICAqIFNldCBmb3JlaWduIGtleSByZWZlcmVuY2VzIHRvIGRlZmF1bHRzIGF0 IGRlbGV0ZSBldmVudCBvbiBQSyB0YWJsZS4KICAqLwogRGF0dW0KLVJJX0ZLZXlfc2V0ZGVm YXVsdF9kZWwoUEdfRlVOQ1RJT05fQVJHUykKK1RSSV9GS2V5X3NldGRlZmF1bHRfZGVsKFBH X0ZVTkNUSU9OX0FSR1MpCiB7CiAJLyogQ2hlY2sgdGhhdCB0aGlzIGlzIGEgdmFsaWQgdHJp Z2dlciBjYWxsIG9uIHRoZSByaWdodCB0aW1lIGFuZCBldmVudC4gKi8KLQlyaV9DaGVja1Ry aWdnZXIoZmNpbmZvLCAiUklfRktleV9zZXRkZWZhdWx0X2RlbCIsIFJJX1RSSUdUWVBFX0RF TEVURSk7CisJcmlfQ2hlY2tUcmlnZ2VyKGZjaW5mbywgIlRSSV9GS2V5X3NldGRlZmF1bHRf ZGVsIiwgUklfVFJJR1RZUEVfREVMRVRFKTsKIAogCS8qIFNoYXJlIGNvZGUgd2l0aCBVUERB VEUgY2FzZSAqLwotCXJldHVybiByaV9zZXQoKFRyaWdnZXJEYXRhICopIGZjaW5mby0+Y29u dGV4dCwgZmFsc2UsIFJJX1RSSUdUWVBFX0RFTEVURSk7CisJcmV0dXJuIHRyaV9zZXQoKFRy aWdnZXJEYXRhICopIGZjaW5mby0+Y29udGV4dCwgZmFsc2UsIFJJX1RSSUdUWVBFX0RFTEVU RSk7CiB9CiAKIC8qCi0gKiBSSV9GS2V5X3NldGRlZmF1bHRfdXBkIC0KKyAqIFRSSV9GS2V5 X3NldGRlZmF1bHRfdXBkIC0KICAqCiAgKiBTZXQgZm9yZWlnbiBrZXkgcmVmZXJlbmNlcyB0 byBkZWZhdWx0cyBhdCB1cGRhdGUgZXZlbnQgb24gUEsgdGFibGUuCiAgKi8KIERhdHVtCi1S SV9GS2V5X3NldGRlZmF1bHRfdXBkKFBHX0ZVTkNUSU9OX0FSR1MpCitUUklfRktleV9zZXRk ZWZhdWx0X3VwZChQR19GVU5DVElPTl9BUkdTKQogewogCS8qIENoZWNrIHRoYXQgdGhpcyBp cyBhIHZhbGlkIHRyaWdnZXIgY2FsbCBvbiB0aGUgcmlnaHQgdGltZSBhbmQgZXZlbnQuICov Ci0JcmlfQ2hlY2tUcmlnZ2VyKGZjaW5mbywgIlJJX0ZLZXlfc2V0ZGVmYXVsdF91cGQiLCBS SV9UUklHVFlQRV9VUERBVEUpOworCXJpX0NoZWNrVHJpZ2dlcihmY2luZm8sICJUUklfRktl eV9zZXRkZWZhdWx0X3VwZCIsIFJJX1RSSUdUWVBFX1VQREFURSk7CiAKIAkvKiBTaGFyZSBj b2RlIHdpdGggREVMRVRFIGNhc2UgKi8KLQlyZXR1cm4gcmlfc2V0KChUcmlnZ2VyRGF0YSAq KSBmY2luZm8tPmNvbnRleHQsIGZhbHNlLCBSSV9UUklHVFlQRV9VUERBVEUpOworCXJldHVy biB0cmlfc2V0KChUcmlnZ2VyRGF0YSAqKSBmY2luZm8tPmNvbnRleHQsIGZhbHNlLCBSSV9U UklHVFlQRV9VUERBVEUpOwogfQogCisKIC8qCi0gKiByaV9zZXQgLQorICogcmVzdHJpY3Rf Y2FzY2FkaW5nX3JhbmdlIC0KICAqCi0gKiBDb21tb24gY29kZSBmb3IgT04gREVMRVRFIFNF VCBOVUxMLCBPTiBERUxFVEUgU0VUIERFRkFVTFQsIE9OIFVQREFURSBTRVQKLSAqIE5VTEws IGFuZCBPTiBVUERBVEUgU0VUIERFRkFVTFQuCisgKiBXaGVuIHdlIGNhc2NhZGUgYW4gVVBE QVRFIG9yIERFTEVURSBvbiBhIHRlbXBvcmFsIHJlY29yZCwKKyAqIHdlIG9ubHkgdG91Y2gg dGhlIHRlbXBvcmFsIHBvcnRpb24gb2YgdGhlIGNoaWxkIHJlY29yZAorICogdGhhdCBtYXRj aGVzIHRoZSB0ZW1wb3JhbCBzcGFuIG9mIHRoZSB1cGRhdGVkL2RlbGV0ZWQgcGFyZW50IHJl Y29yZC4KKyAqIEJ1dCBpZiB0aGUgb3JpZ2luYWwgVVBEQVRFIG9yIERFTEVURSBhbHNvIGhh ZCBhIEZPUiBQT1JUSU9OIE9GIGNsYXVzZSwKKyAqIHRoZW4gd2Ugc2hvdWxkIGZ1cnRoZXIg cmVzdHJpY3QgdGhlIGNhc2NhZGVkIGVmZmVjdCBhY2NvcmRpbmdseS4KICAqLwogc3RhdGlj IERhdHVtCi1yaV9zZXQoVHJpZ2dlckRhdGEgKnRyaWdkYXRhLCBib29sIGlzX3NldF9udWxs LCBpbnQgdGdraW5kKQorcmVzdHJpY3RfY2FzY2FkaW5nX3JhbmdlKERhdHVtIHBrUmVjb3Jk UmFuZ2UsIERhdHVtIHRhcmdldGVkUmFuZ2UpCit7CisJUmFuZ2VUeXBlICpyMSA9IERhdHVt R2V0UmFuZ2VUeXBlUChwa1JlY29yZFJhbmdlKTsKKwlSYW5nZVR5cGUgKnIyID0gRGF0dW1H ZXRSYW5nZVR5cGVQKHRhcmdldGVkUmFuZ2UpOworCU9pZCBybmd0eXBpZCA9IFJhbmdlVHlw ZUdldE9pZChyMSk7CisJVHlwZUNhY2hlRW50cnkgKnR5cGNhY2hlID0gbG9va3VwX3R5cGVf Y2FjaGUocm5ndHlwaWQsIFRZUEVDQUNIRV9SQU5HRV9JTkZPKTsKKwlyZXR1cm4gUmFuZ2VU eXBlUEdldERhdHVtKHJhbmdlX2ludGVyc2VjdF9pbnRlcm5hbCh0eXBjYWNoZSwgcjEsIHIy KSk7Cit9CisKKy8qCisgKiByZWZlcmVuY2VzX3BlcmlvZAorICoKKyAqIFJldHVybnMgdHJ1 ZSBpZmYgdGhlIHByaW1hcnkga2V5IHJlZmVyZW5jZWQgYnkgcmlpbmZvIGluY2x1ZGVzIHRo ZSByYW5nZQorICogY29sdW1uIG9yIFBFUklPRCB0YXJnZXRlZCBieSB0aGUgRk9SIFBPUlRJ T04gT0YgY2xhdXNlIChhY2NvcmRpbmcgdG8KKyAqIHRnX3RlbXBvcmFsKS4KKyAqLworc3Rh dGljIGJvb2wKK3JlZmVyZW5jZXNfcGVyaW9kKGNvbnN0IEZvclBvcnRpb25PZlN0YXRlICp0 Z190ZW1wb3JhbCwgY29uc3QgUklfQ29uc3RyYWludEluZm8gKnJpaW5mbykKK3sKKwlpZiAo dGdfdGVtcG9yYWwgPT0gTlVMTCkKKwkJcmV0dXJuIGZhbHNlOworCisJaWYgKHRnX3RlbXBv cmFsLT5mcF9oYXNQZXJpb2QpCisJeworCQlyZXR1cm4gcmlpbmZvLT5wa19wZXJpb2QgIT0g SW52YWxpZE9pZCAmJgorCQkJICAgcmlpbmZvLT5wa19wZXJpb2RfYXR0bnVtc1swXSA9PSB0 Z190ZW1wb3JhbC0+ZnBfcGVyaW9kU3RhcnRBdHRubyAmJgorCQkJICAgcmlpbmZvLT5wa19w ZXJpb2RfYXR0bnVtc1sxXSA9PSB0Z190ZW1wb3JhbC0+ZnBfcGVyaW9kRW5kQXR0bm87CisJ fSBlbHNlIHsKKwkJcmV0dXJuIHJpaW5mby0+cGtfcGVyaW9kID09IEludmFsaWRPaWQgJiYK KwkJCSAgIHJpaW5mby0+cGtfYXR0bnVtc1tyaWluZm8tPm5rZXlzIC0gMV0gPT0gdGdfdGVt cG9yYWwtPmZwX3JhbmdlQXR0bm87CisJfQorfQorCisvKgorICogdHJpX3NldCAtCisgKgor ICogQ29tbW9uIGNvZGUgZm9yIHRlbXBvcmFsIE9OIERFTEVURSBTRVQgTlVMTCwgT04gREVM RVRFIFNFVCBERUZBVUxULCBPTgorICogVVBEQVRFIFNFVCBOVUxMLCBhbmQgT04gVVBEQVRF IFNFVCBERUZBVUxULgorICovCitzdGF0aWMgRGF0dW0KK3RyaV9zZXQoVHJpZ2dlckRhdGEg KnRyaWdkYXRhLCBib29sIGlzX3NldF9udWxsLCBpbnQgdGdraW5kKQogewogCWNvbnN0IFJJ X0NvbnN0cmFpbnRJbmZvICpyaWluZm87CiAJUmVsYXRpb24JZmtfcmVsOwpAQCAtMTA0MCw3 ICsxOTc3LDcgQEAgcmlfc2V0KFRyaWdnZXJEYXRhICp0cmlnZGF0YSwgYm9vbCBpc19zZXRf bnVsbCwgaW50IHRna2luZCkKIAlUdXBsZVRhYmxlU2xvdCAqb2xkc2xvdDsKIAlSSV9RdWVy eUtleSBxa2V5OwogCVNQSVBsYW5QdHIJcXBsYW47Ci0JaW50MzIJCXF1ZXJ5bm87CisJRGF0 dW0gdGFyZ2V0UmFuZ2U7CiAKIAlyaWluZm8gPSByaV9GZXRjaENvbnN0cmFpbnRJbmZvKHRy aWdkYXRhLT50Z190cmlnZ2VyLAogCQkJCQkJCQkJdHJpZ2RhdGEtPnRnX3JlbGF0aW9uLCB0 cnVlKTsKQEAgLTEwNTUsMTI3ICsxOTkyLDEzNyBAQCByaV9zZXQoVHJpZ2dlckRhdGEgKnRy aWdkYXRhLCBib29sIGlzX3NldF9udWxsLCBpbnQgdGdraW5kKQogCXBrX3JlbCA9IHRyaWdk YXRhLT50Z19yZWxhdGlvbjsKIAlvbGRzbG90ID0gdHJpZ2RhdGEtPnRnX3RyaWdzbG90Owog CisJLyoKKwkgKiBJZiB0aGlzIGlzIGEgRk9SIFBPUlRJT04gT0YgdXBkYXRlL2RlbGV0ZSwK KwkgKiByZXN0cmljdCB0aGUgY2FzYWNkZSB0byBqdXN0IHRoZSB0YXJnZXRlZCBwb3J0aW9u LgorCSAqLworCXRhcmdldFJhbmdlID0gdHVwbGVSYW5nZShvbGRzbG90LCByaWluZm8pOwor CWlmIChyZWZlcmVuY2VzX3BlcmlvZCh0cmlnZGF0YS0+dGdfdGVtcG9yYWwsIHJpaW5mbykp CisJCXRhcmdldFJhbmdlID0gcmVzdHJpY3RfY2FzY2FkaW5nX3JhbmdlKHRhcmdldFJhbmdl LAorCQkJCQkJCQkJCQkgICB0cmlnZGF0YS0+dGdfdGVtcG9yYWwtPmZwX3RhcmdldFJhbmdl KTsKKwogCWlmIChTUElfY29ubmVjdCgpICE9IFNQSV9PS19DT05ORUNUKQogCQllbG9nKEVS Uk9SLCAiU1BJX2Nvbm5lY3QgZmFpbGVkIik7CiAKIAkvKgotCSAqIEZldGNoIG9yIHByZXBh cmUgYSBzYXZlZCBwbGFuIGZvciB0aGUgdHJpZ2dlci4KKwkgKiBGZXRjaCBvciBwcmVwYXJl IGEgc2F2ZWQgcGxhbiBmb3IgdGhlIHNldCBudWxsL2RlZmF1bHQgb3BlcmF0aW9uIChpdCdz CisJICogdGhlIHNhbWUgcXVlcnkgZm9yIGRlbGV0ZSBhbmQgdXBkYXRlIGNhc2VzKQogCSAq LwotCXN3aXRjaCAodGdraW5kKQotCXsKLQkJY2FzZSBSSV9UUklHVFlQRV9VUERBVEU6Ci0J CQlxdWVyeW5vID0gaXNfc2V0X251bGwKLQkJCQk/IFJJX1BMQU5fU0VUTlVMTF9PTlVQREFU RQotCQkJCTogUklfUExBTl9TRVRERUZBVUxUX09OVVBEQVRFOwotCQkJYnJlYWs7Ci0JCWNh c2UgUklfVFJJR1RZUEVfREVMRVRFOgotCQkJcXVlcnlubyA9IGlzX3NldF9udWxsCi0JCQkJ PyBSSV9QTEFOX1NFVE5VTExfT05ERUxFVEUKLQkJCQk6IFJJX1BMQU5fU0VUREVGQVVMVF9P TkRFTEVURTsKLQkJCWJyZWFrOwotCQlkZWZhdWx0OgotCQkJZWxvZyhFUlJPUiwgImludmFs aWQgdGdraW5kIHBhc3NlZCB0byByaV9zZXQiKTsKLQl9Ci0KLQlyaV9CdWlsZFF1ZXJ5S2V5 KCZxa2V5LCByaWluZm8sIHF1ZXJ5bm8pOworCXJpX0J1aWxkUXVlcnlLZXkoJnFrZXksIHJp aW5mbywKKwkJCQkJICBpc19zZXRfbnVsbAorCQkJCQkJPyBUUklfUExBTl9TRVROVUxMX09O VVBEQVRFCisJCQkJCQk6IFRSSV9QTEFOX1NFVERFRkFVTFRfT05VUERBVEUpOwogCiAJaWYg KChxcGxhbiA9IHJpX0ZldGNoUHJlcGFyZWRQbGFuKCZxa2V5KSkgPT0gTlVMTCkKIAl7CisJ CWJvb2wJCXBrSGFzUmFuZ2U7CisJCWJvb2wJCWZrSGFzUmFuZ2U7CiAJCVN0cmluZ0luZm9E YXRhIHF1ZXJ5YnVmOworCQlTdHJpbmdJbmZvRGF0YSBxdWFsYnVmOwogCQljaGFyCQlma3Jl bG5hbWVbTUFYX1FVT1RFRF9SRUxfTkFNRV9MRU5dOwogCQljaGFyCQlhdHRuYW1lW01BWF9R VU9URURfTkFNRV9MRU5dOworCQljaGFyCSAgICphdHRzdHI7CiAJCWNoYXIJCXBhcmFtbmFt ZVsxNl07CiAJCWNvbnN0IGNoYXIgKnF1ZXJ5c2VwOwogCQljb25zdCBjaGFyICpxdWFsc2Vw OwogCQlPaWQJCQlxdWVyeW9pZHNbUklfTUFYX05VTUtFWVNdOwogCQljb25zdCBjaGFyICpm a19vbmx5OwotCQlpbnQJCQludW1fY29sc190b19zZXQ7Ci0JCWNvbnN0IGludDE2ICpzZXRf Y29sczsKIAotCQlzd2l0Y2ggKHRna2luZCkKLQkJewotCQkJY2FzZSBSSV9UUklHVFlQRV9V UERBVEU6Ci0JCQkJbnVtX2NvbHNfdG9fc2V0ID0gcmlpbmZvLT5ua2V5czsKLQkJCQlzZXRf Y29scyA9IHJpaW5mby0+ZmtfYXR0bnVtczsKLQkJCQlicmVhazsKLQkJCWNhc2UgUklfVFJJ R1RZUEVfREVMRVRFOgorCQlwa0hhc1JhbmdlID0gcmlpbmZvLT5wa19wZXJpb2QgPT0gSW52 YWxpZE9pZDsKKwkJZmtIYXNSYW5nZSA9IHJpaW5mby0+ZmtfcGVyaW9kID09IEludmFsaWRP aWQ7CiAKLQkJCQkvKgotCQkJCSAqIElmIGNvbmZkZWxzZXRjb2xzIGFyZSBwcmVzZW50LCB0 aGVuIHdlIG9ubHkgdXBkYXRlIHRoZQotCQkJCSAqIGNvbHVtbnMgc3BlY2lmaWVkIGluIHRo YXQgYXJyYXksIG90aGVyd2lzZSB3ZSB1cGRhdGUgYWxsCi0JCQkJICogdGhlIHJlZmVyZW5j aW5nIGNvbHVtbnMuCi0JCQkJICovCi0JCQkJaWYgKHJpaW5mby0+bmRlbHNldGNvbHMgIT0g MCkKLQkJCQl7Ci0JCQkJCW51bV9jb2xzX3RvX3NldCA9IHJpaW5mby0+bmRlbHNldGNvbHM7 Ci0JCQkJCXNldF9jb2xzID0gcmlpbmZvLT5jb25mZGVsc2V0Y29sczsKLQkJCQl9Ci0JCQkJ ZWxzZQotCQkJCXsKLQkJCQkJbnVtX2NvbHNfdG9fc2V0ID0gcmlpbmZvLT5ua2V5czsKLQkJ CQkJc2V0X2NvbHMgPSByaWluZm8tPmZrX2F0dG51bXM7Ci0JCQkJfQotCQkJCWJyZWFrOwot CQkJZGVmYXVsdDoKLQkJCQllbG9nKEVSUk9SLCAiaW52YWxpZCB0Z2tpbmQgcGFzc2VkIHRv IHJpX3NldCIpOwotCQl9CisJCS8vIFRPRE86IFVzZSB0Z2tpbmQgdG8gaGFuZGxlIHNldHRp bmcgYSBzcGVjaWZpYyBsaXN0IG9mIGNvbHMgKGxpa2Ugcmlfc2V0KQogCiAJCS8qIC0tLS0t LS0tLS0KIAkJICogVGhlIHF1ZXJ5IHN0cmluZyBidWlsdCBpcwotCQkgKglVUERBVEUgW09O TFldIDxma3RhYmxlPiBTRVQgZmthdHQxID0ge05VTEx8REVGQVVMVH0gWywgLi4uXQorCQkg KglVUERBVEUgW09OTFldIDxma3RhYmxlPgorCQkgKgkJCUZPUiBQT1JUSU9OIE9GICRma2F0 dCBGUk9NIGxvd2VyKCRuKzEpIFRPIHVwcGVyKCRuKzEpCisJCSAqCQkJU0VUIGZrYXR0MSA9 IHtOVUxMfERFRkFVTFR9IFssIC4uLl0KIAkJICoJCQlXSEVSRSAkMSA9IGZrYXR0MSBbQU5E IC4uLl0KIAkJICogVGhlIHR5cGUgaWQncyBmb3IgdGhlICQgcGFyYW1ldGVycyBhcmUgdGhv c2Ugb2YgdGhlCiAJCSAqIGNvcnJlc3BvbmRpbmcgUEsgYXR0cmlidXRlcy4KIAkJICogLS0t LS0tLS0tLQogCQkgKi8KIAkJaW5pdFN0cmluZ0luZm8oJnF1ZXJ5YnVmKTsKKwkJaW5pdFN0 cmluZ0luZm8oJnF1YWxidWYpOwogCQlma19vbmx5ID0gZmtfcmVsLT5yZF9yZWwtPnJlbGtp bmQgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSA/CiAJCQkiIiA6ICJPTkxZICI7CiAJ CXF1b3RlUmVsYXRpb25OYW1lKGZrcmVsbmFtZSwgZmtfcmVsKTsKLQkJYXBwZW5kU3RyaW5n SW5mbygmcXVlcnlidWYsICJVUERBVEUgJXMlcyBTRVQiLAotCQkJCQkJIGZrX29ubHksIGZr cmVsbmFtZSk7CisJCWlmIChma0hhc1JhbmdlKQorCQkJcXVvdGVPbmVOYW1lKGF0dG5hbWUs IFJJQXR0TmFtZShma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tyaWluZm8tPm5rZXlzIC0g MV0pKTsKKwkJZWxzZQorCQkJcXVvdGVPbmVOYW1lKGF0dG5hbWUsIGdldF9wZXJpb2RuYW1l KHJpaW5mby0+ZmtfcGVyaW9kLCBmYWxzZSkpOwogCi0JCS8qCi0JCSAqIEFkZCBhc3NpZ25t ZW50IGNsYXVzZXMKLQkJICovCi0JCXF1ZXJ5c2VwID0gIiI7Ci0JCWZvciAoaW50IGkgPSAw OyBpIDwgbnVtX2NvbHNfdG9fc2V0OyBpKyspCi0JCXsKLQkJCXF1b3RlT25lTmFtZShhdHRu YW1lLCBSSUF0dE5hbWUoZmtfcmVsLCBzZXRfY29sc1tpXSkpOwotCQkJYXBwZW5kU3RyaW5n SW5mbygmcXVlcnlidWYsCi0JCQkJCQkJICIlcyAlcyA9ICVzIiwKLQkJCQkJCQkgcXVlcnlz ZXAsIGF0dG5hbWUsCi0JCQkJCQkJIGlzX3NldF9udWxsID8gIk5VTEwiIDogIkRFRkFVTFQi KTsKLQkJCXF1ZXJ5c2VwID0gIiwiOwotCQl9CisJCWFwcGVuZFN0cmluZ0luZm8oJnF1ZXJ5 YnVmLCAiVVBEQVRFICVzJXMgRk9SIFBPUlRJT04gT0YgJXMgRlJPTSBsb3dlcigkJWQpIFRP IHVwcGVyKCQlZCkgU0VUIiwKKwkJCQkJCSBma19vbmx5LCBma3JlbG5hbWUsIGF0dG5hbWUs IHJpaW5mby0+bmtleXMgKyAxLCByaWluZm8tPm5rZXlzICsgMSk7CiAKLQkJLyoKLQkJICog QWRkIFdIRVJFIGNsYXVzZQotCQkgKi8KKwkJcXVlcnlzZXAgPSAiIjsKIAkJcXVhbHNlcCA9 ICJXSEVSRSI7CiAJCWZvciAoaW50IGkgPSAwOyBpIDwgcmlpbmZvLT5ua2V5czsgaSsrKQog CQl7Ci0JCQlPaWQJCQlwa190eXBlID0gUklBdHRUeXBlKHBrX3JlbCwgcmlpbmZvLT5wa19h dHRudW1zW2ldKTsKLQkJCU9pZAkJCWZrX3R5cGUgPSBSSUF0dFR5cGUoZmtfcmVsLCByaWlu Zm8tPmZrX2F0dG51bXNbaV0pOwotCQkJT2lkCQkJcGtfY29sbCA9IFJJQXR0Q29sbGF0aW9u KHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW2ldKTsKLQkJCU9pZAkJCWZrX2NvbGwgPSBS SUF0dENvbGxhdGlvbihma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSk7CisJCQlPaWQJ CXBrX3R5cGU7CisJCQlPaWQJCWZrX3R5cGU7CisJCQlPaWQJCXBrX2NvbGw7CisJCQlPaWQJ CWZrX2NvbGw7CiAKLQkJCXF1b3RlT25lTmFtZShhdHRuYW1lLAotCQkJCQkJIFJJQXR0TmFt ZShma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSkpOworCQkJaWYgKHJpaW5mby0+cGtf YXR0bnVtc1tpXSAhPSBJbnZhbGlkT2lkKQorCQkJeworCQkJCXBrX3R5cGUgPSBSSUF0dFR5 cGUocGtfcmVsLCByaWluZm8tPnBrX2F0dG51bXNbaV0pOworCQkJCXBrX2NvbGwgPSBSSUF0 dENvbGxhdGlvbihwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tpXSk7CisJCQl9CisJCQll bHNlCisJCQl7CisJCQkJcGtfdHlwZSA9IHJpaW5mby0+cGtfcGVyaW9kX3JhbmdldHlwZTsK KwkJCQlwa19jb2xsID0gcmlpbmZvLT5wa19wZXJpb2RfY29sbGF0aW9uOworCQkJfQorCisJ CQlpZiAocmlpbmZvLT5ma19hdHRudW1zW2ldICE9IEludmFsaWRPaWQpCisJCQl7CisJCQkJ ZmtfdHlwZSA9IFJJQXR0VHlwZShma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSk7CisJ CQkJZmtfY29sbCA9IFJJQXR0Q29sbGF0aW9uKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1z W2ldKTsKKwkJCX0KKwkJCWVsc2UKKwkJCXsKKwkJCQlma190eXBlID0gcmlpbmZvLT5ma19w ZXJpb2RfcmFuZ2V0eXBlOworCQkJCWZrX2NvbGwgPSByaWluZm8tPmZrX3BlcmlvZF9jb2xs YXRpb247CisJCQl9CisKKwkJCWlmIChyaWluZm8tPmZrX2F0dG51bXNbaV0gPT0gSW52YWxp ZE9pZCkKKwkJCQlhdHRzdHIgPSBxdWVyeV9wZXJpb2RfcmFuZ2UocmlpbmZvLCBma19yZWws ICIiLCBmYWxzZSk7CisJCQllbHNlCisJCQl7CisJCQkJcXVvdGVPbmVOYW1lKGF0dG5hbWUs CisJCQkJCQkJIFJJQXR0TmFtZShma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSkpOwor CQkJCWF0dHN0ciA9IGF0dG5hbWU7CisJCQl9CiAKKwkJCS8qCisJCQkgKiBEb24ndCBzZXQg dGhlIHRlbXBvcmFsIGNvbHVtbihzKS4KKwkJCSAqIEZPUiBQT1JUSU9OIE9GIHdpbGwgdGFr ZSBjYXJlIG9mIHRoYXQuCisJCQkgKi8KKwkJCWlmIChpIDwgcmlpbmZvLT5ua2V5cyAtIDEp CisJCQkJYXBwZW5kU3RyaW5nSW5mbygmcXVlcnlidWYsCisJCQkJCQkJCSAiJXMgJXMgPSAl cyIsCisJCQkJCQkJCSBxdWVyeXNlcCwgYXR0c3RyLAorCQkJCQkJCQkgaXNfc2V0X251bGwg PyAiTlVMTCIgOiAiREVGQVVMVCIpOwogCQkJc3ByaW50ZihwYXJhbW5hbWUsICIkJWQiLCBp ICsgMSk7CiAJCQlyaV9HZW5lcmF0ZVF1YWwoJnF1ZXJ5YnVmLCBxdWFsc2VwLAogCQkJCQkJ CXBhcmFtbmFtZSwgcGtfdHlwZSwKIAkJCQkJCQlyaWluZm8tPnBmX2VxX29wcnNbaV0sCi0J CQkJCQkJYXR0bmFtZSwgZmtfdHlwZSk7CisJCQkJCQkJYXR0c3RyLCBma190eXBlKTsKIAkJ CWlmIChwa19jb2xsICE9IGZrX2NvbGwgJiYgIWdldF9jb2xsYXRpb25faXNkZXRlcm1pbmlz dGljKHBrX2NvbGwpKQogCQkJCXJpX0dlbmVyYXRlUXVhbENvbGxhdGlvbigmcXVlcnlidWYs IHBrX2NvbGwpOwogCQkJcXVhbHNlcCA9ICJBTkQiOwogCQkJcXVlcnlvaWRzW2ldID0gcGtf dHlwZTsKIAkJfQogCisJCWlmIChwa0hhc1JhbmdlKQorCQkJcXVlcnlvaWRzW3JpaW5mby0+ bmtleXNdID0gUklBdHRUeXBlKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW3JpaW5mby0+ bmtleXMgLSAxXSk7CisJCWVsc2UKKwkJCXF1ZXJ5b2lkc1tyaWluZm8tPm5rZXlzXSA9IHJp aW5mby0+cGtfcGVyaW9kX3JhbmdldHlwZTsKKwogCQkvKiBQcmVwYXJlIGFuZCBzYXZlIHRo ZSBwbGFuICovCi0JCXFwbGFuID0gcmlfUGxhbkNoZWNrKHF1ZXJ5YnVmLmRhdGEsIHJpaW5m by0+bmtleXMsIHF1ZXJ5b2lkcywKKwkJcXBsYW4gPSByaV9QbGFuQ2hlY2socXVlcnlidWYu ZGF0YSwgcmlpbmZvLT5ua2V5cyArIDEsIHF1ZXJ5b2lkcywKIAkJCQkJCQkgJnFrZXksIGZr X3JlbCwgcGtfcmVsKTsKIAl9CiAKQEAgLTExODUsNiArMjEzMiw3IEBAIHJpX3NldChUcmln Z2VyRGF0YSAqdHJpZ2RhdGEsIGJvb2wgaXNfc2V0X251bGwsIGludCB0Z2tpbmQpCiAJcmlf UGVyZm9ybUNoZWNrKHJpaW5mbywgJnFrZXksIHFwbGFuLAogCQkJCQlma19yZWwsIHBrX3Jl bCwKIAkJCQkJb2xkc2xvdCwgTlVMTCwKKwkJCQkJdHJ1ZSwgdGFyZ2V0UmFuZ2UsCiAJCQkJ CXRydWUsCQkvKiBtdXN0IGRldGVjdCBuZXcgcm93cyAqLwogCQkJCQlTUElfT0tfVVBEQVRF KTsKIApAQCAtMTI0Miw3ICsyMTkwLDcgQEAgUklfRktleV9wa191cGRfY2hlY2tfcmVxdWly ZWQoVHJpZ2dlciAqdHJpZ2dlciwgUmVsYXRpb24gcGtfcmVsLAogCQlyZXR1cm4gZmFsc2U7 CiAKIAkvKiBJZiBhbGwgb2xkIGFuZCBuZXcga2V5IHZhbHVlcyBhcmUgZXF1YWwsIG5vIGNo ZWNrIGlzIG5lZWRlZCAqLwotCWlmIChuZXdzbG90ICYmIHJpX0tleXNFcXVhbChwa19yZWws IG9sZHNsb3QsIG5ld3Nsb3QsIHJpaW5mbywgdHJ1ZSkpCisJaWYgKG5ld3Nsb3QgJiYgcmlf S2V5c1N0YWJsZShwa19yZWwsIG9sZHNsb3QsIG5ld3Nsb3QsIHJpaW5mbywgdHJ1ZSkpCiAJ CXJldHVybiBmYWxzZTsKIAogCS8qIEVsc2Ugd2UgbmVlZCB0byBmaXJlIHRoZSB0cmlnZ2Vy LiAqLwpAQCAtMTM0MSw3ICsyMjg5LDcgQEAgUklfRktleV9ma191cGRfY2hlY2tfcmVxdWly ZWQoVHJpZ2dlciAqdHJpZ2dlciwgUmVsYXRpb24gZmtfcmVsLAogCQlyZXR1cm4gdHJ1ZTsK IAogCS8qIElmIGFsbCBvbGQgYW5kIG5ldyBrZXkgdmFsdWVzIGFyZSBlcXVhbCwgbm8gY2hl Y2sgaXMgbmVlZGVkICovCi0JaWYgKHJpX0tleXNFcXVhbChma19yZWwsIG9sZHNsb3QsIG5l d3Nsb3QsIHJpaW5mbywgZmFsc2UpKQorCWlmIChyaV9LZXlzU3RhYmxlKGZrX3JlbCwgb2xk c2xvdCwgbmV3c2xvdCwgcmlpbmZvLCBmYWxzZSkpCiAJCXJldHVybiBmYWxzZTsKIAogCS8q IEVsc2Ugd2UgbmVlZCB0byBmaXJlIHRoZSB0cmlnZ2VyLiAqLwpAQCAtMTM3Miw2ICsyMzIw LDggQEAgUklfSW5pdGlhbF9DaGVjayhUcmlnZ2VyICp0cmlnZ2VyLCBSZWxhdGlvbiBma19y ZWwsIFJlbGF0aW9uIHBrX3JlbCkKIAlTdHJpbmdJbmZvRGF0YSBxdWVyeWJ1ZjsKIAljaGFy CQlwa3JlbG5hbWVbTUFYX1FVT1RFRF9SRUxfTkFNRV9MRU5dOwogCWNoYXIJCWZrcmVsbmFt ZVtNQVhfUVVPVEVEX1JFTF9OQU1FX0xFTl07CisJY2hhcgkgICAqcGthdHRwYXJ0OworCWNo YXIJICAgKmZrYXR0cGFydDsKIAljaGFyCQlwa2F0dG5hbWVbTUFYX1FVT1RFRF9OQU1FX0xF TiArIDNdOwogCWNoYXIJCWZrYXR0bmFtZVtNQVhfUVVPVEVEX05BTUVfTEVOICsgM107CiAJ UmFuZ2VUYmxFbnRyeSAqcGtydGU7CkBAIC0xNDYyLDEwICsyNDEyLDI0IEBAIFJJX0luaXRp YWxfQ2hlY2soVHJpZ2dlciAqdHJpZ2dlciwgUmVsYXRpb24gZmtfcmVsLCBSZWxhdGlvbiBw a19yZWwpCiAJc2VwID0gIiI7CiAJZm9yIChpbnQgaSA9IDA7IGkgPCByaWluZm8tPm5rZXlz OyBpKyspCiAJewotCQlxdW90ZU9uZU5hbWUoZmthdHRuYW1lLAotCQkJCQkgUklBdHROYW1l KGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW2ldKSk7Ci0JCWFwcGVuZFN0cmluZ0luZm8o JnF1ZXJ5YnVmLCAiJXNmay4lcyIsIHNlcCwgZmthdHRuYW1lKTsKLQkJc2VwID0gIiwgIjsK KwkJaWYgKHJpaW5mby0+ZmtfYXR0bnVtc1tpXSAhPSBJbnZhbGlkT2lkKQorCQl7CisJCQlx dW90ZU9uZU5hbWUoZmthdHRuYW1lLAorCQkJCQkJIFJJQXR0TmFtZShma19yZWwsIHJpaW5m by0+ZmtfYXR0bnVtc1tpXSkpOworCQkJYXBwZW5kU3RyaW5nSW5mbygmcXVlcnlidWYsICIl c2ZrLiVzIiwgc2VwLCBma2F0dG5hbWUpOworCQkJc2VwID0gIiwgIjsKKwkJfQorCQllbHNl CisJCXsKKwkJCXF1b3RlT25lTmFtZShma2F0dG5hbWUsCisJCQkJCQkgUklBdHROYW1lKGZr X3JlbCwgcmlpbmZvLT5ma19wZXJpb2RfYXR0bnVtc1swXSkpOworCQkJYXBwZW5kU3RyaW5n SW5mbygmcXVlcnlidWYsICIlc2ZrLiVzIiwgc2VwLCBma2F0dG5hbWUpOworCQkJc2VwID0g IiwgIjsKKworCQkJcXVvdGVPbmVOYW1lKGZrYXR0bmFtZSwKKwkJCQkJCSBSSUF0dE5hbWUo ZmtfcmVsLCByaWluZm8tPmZrX3BlcmlvZF9hdHRudW1zWzFdKSk7CisJCQlhcHBlbmRTdHJp bmdJbmZvKCZxdWVyeWJ1ZiwgIiVzZmsuJXMiLCBzZXAsIGZrYXR0bmFtZSk7CisJCX0KIAl9 CiAKIAlxdW90ZVJlbGF0aW9uTmFtZShwa3JlbG5hbWUsIHBrX3JlbCk7CkBAIC0xNDgzLDE5 ICsyNDQ3LDQ3IEBAIFJJX0luaXRpYWxfQ2hlY2soVHJpZ2dlciAqdHJpZ2dlciwgUmVsYXRp b24gZmtfcmVsLCBSZWxhdGlvbiBwa19yZWwpCiAJc2VwID0gIigiOwogCWZvciAoaW50IGkg PSAwOyBpIDwgcmlpbmZvLT5ua2V5czsgaSsrKQogCXsKLQkJT2lkCQkJcGtfdHlwZSA9IFJJ QXR0VHlwZShwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tpXSk7Ci0JCU9pZAkJCWZrX3R5 cGUgPSBSSUF0dFR5cGUoZmtfcmVsLCByaWluZm8tPmZrX2F0dG51bXNbaV0pOwotCQlPaWQJ CQlwa19jb2xsID0gUklBdHRDb2xsYXRpb24ocGtfcmVsLCByaWluZm8tPnBrX2F0dG51bXNb aV0pOwotCQlPaWQJCQlma19jb2xsID0gUklBdHRDb2xsYXRpb24oZmtfcmVsLCByaWluZm8t PmZrX2F0dG51bXNbaV0pOworCQlPaWQJCQlwa190eXBlOworCQlPaWQJCQlma190eXBlOwor CQlPaWQJCQlwa19jb2xsOworCQlPaWQJCQlma19jb2xsOworCisJCWlmIChyaWluZm8tPnBr X2F0dG51bXNbaV0gIT0gSW52YWxpZE9pZCkKKwkJeworCQkJcGtfdHlwZSA9IFJJQXR0VHlw ZShwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tpXSk7CisJCQlwa19jb2xsID0gUklBdHRD b2xsYXRpb24ocGtfcmVsLCByaWluZm8tPnBrX2F0dG51bXNbaV0pOworCisJCQlxdW90ZU9u ZU5hbWUocGthdHRuYW1lICsgMywKKwkJCQkJCSBSSUF0dE5hbWUocGtfcmVsLCByaWluZm8t PnBrX2F0dG51bXNbaV0pKTsKKwkJCXBrYXR0cGFydCA9IHBrYXR0bmFtZTsKKwkJfQorCQll bHNlCisJCXsKKwkJCXBrX3R5cGUgPSByaWluZm8tPnBrX3BlcmlvZF9yYW5nZXR5cGU7CisJ CQlwa19jb2xsID0gcmlpbmZvLT5wa19wZXJpb2RfY29sbGF0aW9uOworCQkJcGthdHRwYXJ0 ID0gcXVlcnlfcGVyaW9kX3JhbmdlKHJpaW5mbywgcGtfcmVsLCAicGsuIiwgdHJ1ZSk7CisJ CX0KKworCQlpZiAocmlpbmZvLT5ma19hdHRudW1zW2ldICE9IEludmFsaWRPaWQpCisJCXsK KwkJCWZrX3R5cGUgPSBSSUF0dFR5cGUoZmtfcmVsLCByaWluZm8tPmZrX2F0dG51bXNbaV0p OworCQkJZmtfY29sbCA9IFJJQXR0Q29sbGF0aW9uKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRu dW1zW2ldKTsKKworCQkJcXVvdGVPbmVOYW1lKGZrYXR0bmFtZSArIDMsCisJCQkJCQkgUklB dHROYW1lKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW2ldKSk7CisJCQlma2F0dHBhcnQg PSBma2F0dG5hbWU7CisJCX0KKwkJZWxzZQorCQl7CisJCQlma190eXBlID0gcmlpbmZvLT5m a19wZXJpb2RfcmFuZ2V0eXBlOworCQkJZmtfY29sbCA9IHJpaW5mby0+ZmtfcGVyaW9kX2Nv bGxhdGlvbjsKKwkJCWZrYXR0cGFydCA9IHF1ZXJ5X3BlcmlvZF9yYW5nZShyaWluZm8sIHBr X3JlbCwgImZrLiIsIGZhbHNlKTsKKwkJfQogCi0JCXF1b3RlT25lTmFtZShwa2F0dG5hbWUg KyAzLAotCQkJCQkgUklBdHROYW1lKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW2ldKSk7 Ci0JCXF1b3RlT25lTmFtZShma2F0dG5hbWUgKyAzLAotCQkJCQkgUklBdHROYW1lKGZrX3Jl bCwgcmlpbmZvLT5ma19hdHRudW1zW2ldKSk7CiAJCXJpX0dlbmVyYXRlUXVhbCgmcXVlcnli dWYsIHNlcCwKLQkJCQkJCXBrYXR0bmFtZSwgcGtfdHlwZSwKKwkJCQkJCXBrYXR0cGFydCwg cGtfdHlwZSwKIAkJCQkJCXJpaW5mby0+cGZfZXFfb3Byc1tpXSwKLQkJCQkJCWZrYXR0bmFt ZSwgZmtfdHlwZSk7CisJCQkJCQlma2F0dHBhcnQsIGZrX3R5cGUpOwogCQlpZiAocGtfY29s bCAhPSBma19jb2xsKQogCQkJcmlfR2VuZXJhdGVRdWFsQ29sbGF0aW9uKCZxdWVyeWJ1Ziwg cGtfY29sbCk7CiAJCXNlcCA9ICJBTkQiOwpAQCAtMjEwOSw2ICszMTAxLDQzIEBAIHJpX0Zl dGNoQ29uc3RyYWludEluZm8oVHJpZ2dlciAqdHJpZ2dlciwgUmVsYXRpb24gdHJpZ19yZWws IGJvb2wgcmVsX2lzX3BrKQogCXJldHVybiByaWluZm87CiB9CiAKK3N0YXRpYyB2b2lkIERl Y29uc3RydWN0RmtDb25zdHJhaW50UGVyaW9kKE9pZCBwZXJpb2RpZCwgT2lkICpyYW5nZXR5 cGVpZCwgY2hhciAqcmFuZ2V0eXBlbmFtZSwgT2lkICpybmdjb2xsYXRpb24sIGludDE2ICph dHRudW1zKQoreworCUhlYXBUdXBsZSBwZXJ0dXBsZSA9IFNlYXJjaFN5c0NhY2hlMShQRVJJ T0RPSUQsIHBlcmlvZGlkKTsKKwlGb3JtX3BnX3BlcmlvZCBwZXJpb2Q7CisJRm9ybV9wZ19y YW5nZSByYW5nZXR5cGU7CisJRm9ybV9wZ190eXBlIHR5cGU7CisJSGVhcFR1cGxlIHJuZ3R1 cGxlOworCUhlYXBUdXBsZSB0eXB0dXBsZTsKKworCWlmICghSGVhcFR1cGxlSXNWYWxpZChw ZXJ0dXBsZSkpCisJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBwZXJp b2QgJWQiLCBwZXJpb2RpZCk7CisKKwlwZXJpb2QgPSAoRm9ybV9wZ19wZXJpb2QpIEdFVFNU UlVDVChwZXJ0dXBsZSk7CisKKwkqcmFuZ2V0eXBlaWQgPSBwZXJpb2QtPnBlcnJuZ3R5cGU7 CisJYXR0bnVtc1swXSA9IHBlcmlvZC0+cGVyc3RhcnQ7CisJYXR0bnVtc1sxXSA9IHBlcmlv ZC0+cGVyZW5kOworCVJlbGVhc2VTeXNDYWNoZShwZXJ0dXBsZSk7CisKKwlybmd0dXBsZSA9 IFNlYXJjaFN5c0NhY2hlMShSQU5HRVRZUEUsICpyYW5nZXR5cGVpZCk7CisJaWYgKCFIZWFw VHVwbGVJc1ZhbGlkKHJuZ3R1cGxlKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBm YWlsZWQgZm9yIHJhbmdlICVkIiwgKnJhbmdldHlwZWlkKTsKKworCXJhbmdldHlwZSA9IChG b3JtX3BnX3JhbmdlKSBHRVRTVFJVQ1Qocm5ndHVwbGUpOworCisJKnJuZ2NvbGxhdGlvbiA9 IHJhbmdldHlwZS0+cm5nY29sbGF0aW9uOworCVJlbGVhc2VTeXNDYWNoZShybmd0dXBsZSk7 CisKKwl0eXB0dXBsZSA9IFNlYXJjaFN5c0NhY2hlMShUWVBFT0lELCBPYmplY3RJZEdldERh dHVtKCpyYW5nZXR5cGVpZCkpOworCWlmICghSGVhcFR1cGxlSXNWYWxpZCh0eXB0dXBsZSkp CisJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciB0eXBlICV1IiwgKnJh bmdldHlwZWlkKTsKKworCXR5cGUgPSAoRm9ybV9wZ190eXBlKSBHRVRTVFJVQ1QodHlwdHVw bGUpOworCXN0cmNweShyYW5nZXR5cGVuYW1lLCBOYW1lU3RyKHR5cGUtPnR5cG5hbWUpKTsK KwlSZWxlYXNlU3lzQ2FjaGUodHlwdHVwbGUpOworfQorCiAvKgogICogRmV0Y2ggb3IgY3Jl YXRlIHRoZSBSSV9Db25zdHJhaW50SW5mbyBzdHJ1Y3QgZm9yIGFuIEZLIGNvbnN0cmFpbnQu CiAgKi8KQEAgLTIxMzIsNiArMzE2MSw3IEBAIHJpX0xvYWRDb25zdHJhaW50SW5mbyhPaWQg Y29uc3RyYWludE9pZCkKIAlyaWluZm8gPSAoUklfQ29uc3RyYWludEluZm8gKikgaGFzaF9z ZWFyY2gocmlfY29uc3RyYWludF9jYWNoZSwKIAkJCQkJCQkJCQkJICAgJmNvbnN0cmFpbnRP aWQsCiAJCQkJCQkJCQkJCSAgIEhBU0hfRU5URVIsICZmb3VuZCk7CisKIAlpZiAoIWZvdW5k KQogCQlyaWluZm8tPnZhbGlkID0gZmFsc2U7CiAJZWxzZSBpZiAocmlpbmZvLT52YWxpZCkK QEAgLTIxNjYsNiArMzE5NiwyNCBAQCByaV9Mb2FkQ29uc3RyYWludEluZm8oT2lkIGNvbnN0 cmFpbnRPaWQpCiAJcmlpbmZvLT5jb25mdXBkdHlwZSA9IGNvbkZvcm0tPmNvbmZ1cGR0eXBl OwogCXJpaW5mby0+Y29uZmRlbHR5cGUgPSBjb25Gb3JtLT5jb25mZGVsdHlwZTsKIAlyaWlu Zm8tPmNvbmZtYXRjaHR5cGUgPSBjb25Gb3JtLT5jb25mbWF0Y2h0eXBlOworCXJpaW5mby0+ dGVtcG9yYWwgPSBjb25Gb3JtLT5jb250ZW1wb3JhbDsKKwlyaWluZm8tPnBrX3BlcmlvZCA9 IGNvbkZvcm0tPmNvbmZwZXJpb2Q7CisJcmlpbmZvLT5wa19wZXJpb2RfcmFuZ2V0eXBlID0g SW52YWxpZE9pZDsKKwlyaWluZm8tPnBrX3BlcmlvZF9jb2xsYXRpb24gPSBJbnZhbGlkT2lk OworCXN0cmNweShyaWluZm8tPnBrX3BlcmlvZF9yYW5nZXR5cGVfbmFtZSwgIiIpOworCW1l bXNldChyaWluZm8tPnBrX3BlcmlvZF9hdHRudW1zLCAwLCBzaXplb2YocmlpbmZvLT5wa19w ZXJpb2RfYXR0bnVtcykpOworCXJpaW5mby0+ZmtfcGVyaW9kID0gY29uRm9ybS0+Y29ucGVy aW9kOworCXJpaW5mby0+ZmtfcGVyaW9kX3JhbmdldHlwZSA9IEludmFsaWRPaWQ7CisJcmlp bmZvLT5ma19wZXJpb2RfY29sbGF0aW9uID0gSW52YWxpZE9pZDsKKwlzdHJjcHkocmlpbmZv LT5ma19wZXJpb2RfcmFuZ2V0eXBlX25hbWUsICIiKTsKKwltZW1zZXQocmlpbmZvLT5ma19w ZXJpb2RfYXR0bnVtcywgMCwgc2l6ZW9mKHJpaW5mby0+ZmtfcGVyaW9kX2F0dG51bXMpKTsK KworCWlmIChjb25Gb3JtLT5jb25mcGVyaW9kICE9IEludmFsaWRPaWQpCisJeworCQlEZWNv bnN0cnVjdEZrQ29uc3RyYWludFBlcmlvZChjb25Gb3JtLT5jb25mcGVyaW9kLCAmcmlpbmZv LT5wa19wZXJpb2RfcmFuZ2V0eXBlLCByaWluZm8tPnBrX3BlcmlvZF9yYW5nZXR5cGVfbmFt ZSwgJnJpaW5mby0+cGtfcGVyaW9kX2NvbGxhdGlvbiwgcmlpbmZvLT5wa19wZXJpb2RfYXR0 bnVtcyk7CisJfQorCWlmIChjb25Gb3JtLT5jb25wZXJpb2QgIT0gSW52YWxpZE9pZCkKKwkJ RGVjb25zdHJ1Y3RGa0NvbnN0cmFpbnRQZXJpb2QoY29uRm9ybS0+Y29ucGVyaW9kLCAmcmlp bmZvLT5ma19wZXJpb2RfcmFuZ2V0eXBlLCByaWluZm8tPmZrX3BlcmlvZF9yYW5nZXR5cGVf bmFtZSwgJnJpaW5mby0+ZmtfcGVyaW9kX2NvbGxhdGlvbiwgcmlpbmZvLT5ma19wZXJpb2Rf YXR0bnVtcyk7CiAKIAlEZWNvbnN0cnVjdEZrQ29uc3RyYWludFJvdyh0dXAsCiAJCQkJCQkJ ICAgJnJpaW5mby0+bmtleXMsCkBAIC0yMzE3LDYgKzMzNjUsNyBAQCByaV9QZXJmb3JtQ2hl Y2soY29uc3QgUklfQ29uc3RyYWludEluZm8gKnJpaW5mbywKIAkJCQlSSV9RdWVyeUtleSAq cWtleSwgU1BJUGxhblB0ciBxcGxhbiwKIAkJCQlSZWxhdGlvbiBma19yZWwsIFJlbGF0aW9u IHBrX3JlbCwKIAkJCQlUdXBsZVRhYmxlU2xvdCAqb2xkc2xvdCwgVHVwbGVUYWJsZVNsb3Qg Km5ld3Nsb3QsCisJCQkJYm9vbCBoYXNGb3JQb3J0aW9uT2YsIERhdHVtIGZvclBvcnRpb25P ZiwKIAkJCQlib29sIGRldGVjdE5ld1Jvd3MsIGludCBleHBlY3RfT0spCiB7CiAJUmVsYXRp b24JcXVlcnlfcmVsLApAQCAtMjM2MiwxNSArMzQxMSwxNiBAQCByaV9QZXJmb3JtQ2hlY2so Y29uc3QgUklfQ29uc3RyYWludEluZm8gKnJpaW5mbywKIAlpZiAobmV3c2xvdCkKIAl7CiAJ CXJpX0V4dHJhY3RWYWx1ZXMoc291cmNlX3JlbCwgbmV3c2xvdCwgcmlpbmZvLCBzb3VyY2Vf aXNfcGssCi0JCQkJCQkgdmFscywgbnVsbHMpOworCQkJCQkJIGhhc0ZvclBvcnRpb25PZiwg Zm9yUG9ydGlvbk9mLCB2YWxzLCBudWxscyk7CiAJCWlmIChvbGRzbG90KQogCQkJcmlfRXh0 cmFjdFZhbHVlcyhzb3VyY2VfcmVsLCBvbGRzbG90LCByaWluZm8sIHNvdXJjZV9pc19waywK KwkJCQkJCQkgaGFzRm9yUG9ydGlvbk9mLCBmb3JQb3J0aW9uT2YsCiAJCQkJCQkJIHZhbHMg KyByaWluZm8tPm5rZXlzLCBudWxscyArIHJpaW5mby0+bmtleXMpOwogCX0KIAllbHNlCiAJ ewogCQlyaV9FeHRyYWN0VmFsdWVzKHNvdXJjZV9yZWwsIG9sZHNsb3QsIHJpaW5mbywgc291 cmNlX2lzX3BrLAotCQkJCQkJIHZhbHMsIG51bGxzKTsKKwkJCQkJCSBoYXNGb3JQb3J0aW9u T2YsIGZvclBvcnRpb25PZiwgdmFscywgbnVsbHMpOwogCX0KIAogCS8qCkBAIC0yNDUyLDYg KzM1MDIsNyBAQCByaV9QZXJmb3JtQ2hlY2soY29uc3QgUklfQ29uc3RyYWludEluZm8gKnJp aW5mbywKIHN0YXRpYyB2b2lkCiByaV9FeHRyYWN0VmFsdWVzKFJlbGF0aW9uIHJlbCwgVHVw bGVUYWJsZVNsb3QgKnNsb3QsCiAJCQkJIGNvbnN0IFJJX0NvbnN0cmFpbnRJbmZvICpyaWlu Zm8sIGJvb2wgcmVsX2lzX3BrLAorCQkJCSBib29sIGhhc0ZvclBvcnRpb25PZiwgRGF0dW0g Zm9yUG9ydGlvbk9mLAogCQkJCSBEYXR1bSAqdmFscywgY2hhciAqbnVsbHMpCiB7CiAJY29u c3QgaW50MTYgKmF0dG51bXM7CkBAIC0yNTAyLDYgKzM1NTMsNyBAQCByaV9SZXBvcnRWaW9s YXRpb24oY29uc3QgUklfQ29uc3RyYWludEluZm8gKnJpaW5mbywKIAlTdHJpbmdJbmZvRGF0 YSBrZXlfdmFsdWVzOwogCWJvb2wJCW9uZms7CiAJY29uc3QgaW50MTYgKmF0dG51bXM7CisJ Y29uc3QgaW50MTYgKnBlcmlvZF9hdHRudW1zOwogCU9pZAkJCXJlbF9vaWQ7CiAJQWNsUmVz dWx0CWFjbHJlc3VsdDsKIAlib29sCQloYXNfcGVybSA9IHRydWU7CkBAIC0yNTE0LDYgKzM1 NjYsNyBAQCByaV9SZXBvcnRWaW9sYXRpb24oY29uc3QgUklfQ29uc3RyYWludEluZm8gKnJp aW5mbywKIAlpZiAob25maykKIAl7CiAJCWF0dG51bXMgPSByaWluZm8tPmZrX2F0dG51bXM7 CisJCXBlcmlvZF9hdHRudW1zID0gcmlpbmZvLT5ma19wZXJpb2RfYXR0bnVtczsKIAkJcmVs X29pZCA9IGZrX3JlbC0+cmRfaWQ7CiAJCWlmICh0dXBkZXNjID09IE5VTEwpCiAJCQl0dXBk ZXNjID0gZmtfcmVsLT5yZF9hdHQ7CkBAIC0yNTIxLDYgKzM1NzQsNyBAQCByaV9SZXBvcnRW aW9sYXRpb24oY29uc3QgUklfQ29uc3RyYWludEluZm8gKnJpaW5mbywKIAllbHNlCiAJewog CQlhdHRudW1zID0gcmlpbmZvLT5wa19hdHRudW1zOworCQlwZXJpb2RfYXR0bnVtcyA9IHJp aW5mby0+cGtfcGVyaW9kX2F0dG51bXM7CiAJCXJlbF9vaWQgPSBwa19yZWwtPnJkX2lkOwog CQlpZiAodHVwZGVzYyA9PSBOVUxMKQogCQkJdHVwZGVzYyA9IHBrX3JlbC0+cmRfYXR0OwpA QCAtMjU3MywxMiArMzYyNywxOCBAQCByaV9SZXBvcnRWaW9sYXRpb24oY29uc3QgUklfQ29u c3RyYWludEluZm8gKnJpaW5mbywKIAkJZm9yIChpbnQgaWR4ID0gMDsgaWR4IDwgcmlpbmZv LT5ua2V5czsgaWR4KyspCiAJCXsKIAkJCWludAkJCWZudW0gPSBhdHRudW1zW2lkeF07Ci0J CQlGb3JtX3BnX2F0dHJpYnV0ZSBhdHQgPSBUdXBsZURlc2NBdHRyKHR1cGRlc2MsIGZudW0g LSAxKTsKKwkJCWJvb2wJCWhhc19wZXJpb2QgPSBmbnVtID09IEludmFsaWRPaWQ7CiAJCQlj aGFyCSAgICpuYW1lLAogCQkJCQkgICAqdmFsOworCQkJRm9ybV9wZ19hdHRyaWJ1dGUgYXR0 OwogCQkJRGF0dW0JCWRhdHVtOwogCQkJYm9vbAkJaXNudWxsOwogCisJCQlpZiAoaGFzX3Bl cmlvZCkKKwkJCQlmbnVtID0gcGVyaW9kX2F0dG51bXNbMF07CisKKwkJCWF0dCA9IFR1cGxl RGVzY0F0dHIodHVwZGVzYywgZm51bSAtIDEpOworCiAJCQluYW1lID0gTmFtZVN0cihhdHQt PmF0dG5hbWUpOwogCiAJCQlkYXR1bSA9IHNsb3RfZ2V0YXR0cih2aW9sYXRvcnNsb3QsIGZu dW0sICZpc251bGwpOwpAQCAtMjYwMCw2ICszNjYwLDMyIEBAIHJpX1JlcG9ydFZpb2xhdGlv bihjb25zdCBSSV9Db25zdHJhaW50SW5mbyAqcmlpbmZvLAogCQkJfQogCQkJYXBwZW5kU3Ry aW5nSW5mb1N0cmluZygma2V5X25hbWVzLCBuYW1lKTsKIAkJCWFwcGVuZFN0cmluZ0luZm9T dHJpbmcoJmtleV92YWx1ZXMsIHZhbCk7CisKKwkJCWlmIChoYXNfcGVyaW9kKQorCQkJewor CQkJCWZudW0gPSBwZXJpb2RfYXR0bnVtc1sxXTsKKworCQkJCWF0dCA9IFR1cGxlRGVzY0F0 dHIodHVwZGVzYywgZm51bSAtIDEpOworCisJCQkJbmFtZSA9IE5hbWVTdHIoYXR0LT5hdHRu YW1lKTsKKworCQkJCWRhdHVtID0gc2xvdF9nZXRhdHRyKHZpb2xhdG9yc2xvdCwgZm51bSwg JmlzbnVsbCk7CisJCQkJaWYgKCFpc251bGwpCisJCQkJeworCQkJCQlPaWQJCQlmb3V0b2lk OworCQkJCQlib29sCQl0eXBpc3ZhcmxlbmE7CisKKwkJCQkJZ2V0VHlwZU91dHB1dEluZm8o YXR0LT5hdHR0eXBpZCwgJmZvdXRvaWQsICZ0eXBpc3ZhcmxlbmEpOworCQkJCQl2YWwgPSBP aWRPdXRwdXRGdW5jdGlvbkNhbGwoZm91dG9pZCwgZGF0dW0pOworCQkJCX0KKwkJCQllbHNl CisJCQkJCXZhbCA9ICJudWxsIjsKKworCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmtl eV9uYW1lcywgIiwgIik7CisJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygma2V5X3ZhbHVl cywgIiwgIik7CisJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygma2V5X25hbWVzLCBuYW1l KTsKKwkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZrZXlfdmFsdWVzLCB2YWwpOworCQkJ fQogCQl9CiAJfQogCkBAIC0yNjY2LDEwICszNzUyLDIxIEBAIHJpX051bGxDaGVjayhUdXBs ZURlc2MgdHVwRGVzYywKIAogCWZvciAoaW50IGkgPSAwOyBpIDwgcmlpbmZvLT5ua2V5czsg aSsrKQogCXsKLQkJaWYgKHNsb3RfYXR0aXNudWxsKHNsb3QsIGF0dG51bXNbaV0pKQotCQkJ bm9uZW51bGwgPSBmYWxzZTsKLQkJZWxzZQorCQlpZiAoYXR0bnVtc1tpXSA9PSBJbnZhbGlk T2lkKQorCQl7CisJCQkvKgorCQkJICogTmV2ZXIgdHJlYXQgYSBwZXJpb2QgYXMgbnVsbCwg YmVjYXVzZSBldmVuIGlmIHN0YXJ0IGFuZCBlbmQKKwkJCSAqIGFyZSBib3RoIG51bGwsIHRo YXQganVzdCBzaWduaWZpZXMgYW4gdW5ib3VuZGVkIHJhbmdlLgorCQkJICovCiAJCQlhbGxu dWxsID0gZmFsc2U7CisJCX0KKwkJZWxzZQorCQl7CisJCQlpZiAoc2xvdF9hdHRpc251bGwo c2xvdCwgYXR0bnVtc1tpXSkpCisJCQkJbm9uZW51bGwgPSBmYWxzZTsKKwkJCWVsc2UKKwkJ CQlhbGxudWxsID0gZmFsc2U7CisJCX0KIAl9CiAKIAlpZiAoYWxsbnVsbCkKQEAgLTI4MDAs OSArMzg5NywxMiBAQCByaV9IYXNoUHJlcGFyZWRQbGFuKFJJX1F1ZXJ5S2V5ICprZXksIFNQ SVBsYW5QdHIgcGxhbikKIAogCiAvKgotICogcmlfS2V5c0VxdWFsIC0KKyAqIHJpX0tleXNT dGFibGUgLQogICoKLSAqIENoZWNrIGlmIGFsbCBrZXkgdmFsdWVzIGluIE9MRCBhbmQgTkVX IGFyZSBlcXVhbC4KKyAqIENoZWNrIGlmIGFsbCBrZXkgdmFsdWVzIGluIE9MRCBhbmQgTkVX IGFyZSAiZXF1aXZhbGVudCI6CisgKiBGb3Igbm9ybWFsIEZLcyB3ZSBjaGVjayBmb3IgZXF1 YWxpdHkuCisgKiBGb3IgdGVtcG9yYWwgRktzIHdlIGNoZWNrIHRoYXQgdGhlIFBLIHNpZGUg aXMgYSBzdXBlcnNldCBvZiBpdHMgb2xkIHZhbHVlLAorICogb3IgdGhlIEZLIHNpZGUgaXMg YSBzdWJzZXQuCiAgKgogICogTm90ZTogYXQgc29tZSBwb2ludCB3ZSBtaWdodCB3aXNoIHRv IHJlZGVmaW5lIHRoaXMgYXMgY2hlY2tpbmcgZm9yCiAgKiAiSVMgTk9UIERJU1RJTkNUIiBy YXRoZXIgdGhhbiAiPSIsIHRoYXQgaXMsIGFsbG93IHR3byBudWxscyB0byBiZQpAQCAtMjgx MCw3ICszOTEwLDcgQEAgcmlfSGFzaFByZXBhcmVkUGxhbihSSV9RdWVyeUtleSAqa2V5LCBT UElQbGFuUHRyIHBsYW4pCiAgKiBwcmV2aW91c2x5IGZvdW5kIGF0IGxlYXN0IG9uZSBvZiB0 aGUgcm93cyB0byBjb250YWluIG5vIG51bGxzLgogICovCiBzdGF0aWMgYm9vbAotcmlfS2V5 c0VxdWFsKFJlbGF0aW9uIHJlbCwgVHVwbGVUYWJsZVNsb3QgKm9sZHNsb3QsIFR1cGxlVGFi bGVTbG90ICpuZXdzbG90LAorcmlfS2V5c1N0YWJsZShSZWxhdGlvbiByZWwsIFR1cGxlVGFi bGVTbG90ICpvbGRzbG90LCBUdXBsZVRhYmxlU2xvdCAqbmV3c2xvdCwKIAkJCSBjb25zdCBS SV9Db25zdHJhaW50SW5mbyAqcmlpbmZvLCBib29sIHJlbF9pc19waykKIHsKIAljb25zdCBp bnQxNiAqYXR0bnVtczsKQEAgLTI4MjcsMTkgKzM5MjcsMzIgQEAgcmlfS2V5c0VxdWFsKFJl bGF0aW9uIHJlbCwgVHVwbGVUYWJsZVNsb3QgKm9sZHNsb3QsIFR1cGxlVGFibGVTbG90ICpu ZXdzbG90LAogCQlEYXR1bQkJbmV3dmFsdWU7CiAJCWJvb2wJCWlzbnVsbDsKIAotCQkvKgot CQkgKiBHZXQgb25lIGF0dHJpYnV0ZSdzIG9sZHZhbHVlLiBJZiBpdCBpcyBOVUxMIC0gdGhl eSdyZSBub3QgZXF1YWwuCi0JCSAqLwotCQlvbGR2YWx1ZSA9IHNsb3RfZ2V0YXR0cihvbGRz bG90LCBhdHRudW1zW2ldLCAmaXNudWxsKTsKLQkJaWYgKGlzbnVsbCkKLQkJCXJldHVybiBm YWxzZTsKKwkJaWYgKHJpaW5mby0+dGVtcG9yYWwgJiYgYXR0bnVtc1tpXSA9PSBJbnZhbGlk QXR0ck51bWJlcikKKwkJeworCQkJLyoKKwkJCSAqIFdlIGhhdmUgYSBwZXJpb2QsIHNvIHdl IGhhdmUgdG8gZ2V0IHRoZSBzdGFydC9lbmQgY29sdW1ucworCQkJICogYW5kIGJ1aWxkIGEg cmFuZ2UuCisJCQkgKi8KKwkJCW9sZHZhbHVlID0gYnVpbGRfcGVyaW9kX3JhbmdlKHJpaW5m bywgb2xkc2xvdCwgcmVsX2lzX3BrKTsKKwkJCW5ld3ZhbHVlID0gYnVpbGRfcGVyaW9kX3Jh bmdlKHJpaW5mbywgbmV3c2xvdCwgcmVsX2lzX3BrKTsKKwkJfQorCQllbHNlCisJCXsKKwkJ CS8qCisJCQkgKiBHZXQgb25lIGF0dHJpYnV0ZSdzIG9sZHZhbHVlLiBJZiBpdCBpcyBOVUxM IC0gdGhleSdyZSBub3QgZXF1YWwuCisJCQkgKi8KKwkJCW9sZHZhbHVlID0gc2xvdF9nZXRh dHRyKG9sZHNsb3QsIGF0dG51bXNbaV0sICZpc251bGwpOworCQkJaWYgKGlzbnVsbCkKKwkJ CQlyZXR1cm4gZmFsc2U7CiAKLQkJLyoKLQkJICogR2V0IG9uZSBhdHRyaWJ1dGUncyBuZXd2 YWx1ZS4gSWYgaXQgaXMgTlVMTCAtIHRoZXkncmUgbm90IGVxdWFsLgotCQkgKi8KLQkJbmV3 dmFsdWUgPSBzbG90X2dldGF0dHIobmV3c2xvdCwgYXR0bnVtc1tpXSwgJmlzbnVsbCk7Ci0J CWlmIChpc251bGwpCi0JCQlyZXR1cm4gZmFsc2U7CisJCQkvKgorCQkJICogR2V0IG9uZSBh dHRyaWJ1dGUncyBuZXd2YWx1ZS4gSWYgaXQgaXMgTlVMTCAtIHRoZXkncmUgbm90IGVxdWFs LgorCQkJICovCisJCQluZXd2YWx1ZSA9IHNsb3RfZ2V0YXR0cihuZXdzbG90LCBhdHRudW1z W2ldLCAmaXNudWxsKTsKKwkJCWlmIChpc251bGwpCisJCQkJcmV0dXJuIGZhbHNlOworCisJ CX0KIAogCQlpZiAocmVsX2lzX3BrKQogCQl7CkBAIC0zMDM5LDMgKzQxNTIsMTcgQEAgUklf RktleV90cmlnZ2VyX3R5cGUoT2lkIHRnZm9pZCkKIAogCXJldHVybiBSSV9UUklHR0VSX05P TkU7CiB9CisKK3N0YXRpYyBEYXR1bQordHVwbGVSYW5nZShUdXBsZVRhYmxlU2xvdCAqc2xv dCwgY29uc3QgUklfQ29uc3RyYWludEluZm8gKnJpaW5mbykKK3sKKwlib29sCWlzbnVsbDsK KwlpbnQxNglhdHRudW0gPSByaWluZm8tPnBrX2F0dG51bXNbcmlpbmZvLT5ua2V5cyAtIDFd OworCisJaWYgKGF0dG51bSA9PSBJbnZhbGlkT2lkKQorCQkvKiBCdWlsZCBhIHJhbmdlIGZy b20gdGhlIFBFUklPRCBzdGFydCBhbmQgZW5kIGNvbHVtbnMgKi8KKwkJcmV0dXJuIGJ1aWxk X3BlcmlvZF9yYW5nZShyaWluZm8sIHNsb3QsIHRydWUpOworCWVsc2UKKwkJLyogR2V0IHRo ZSByYW5nZSBmcm9tIHRoZSByYW5nZSBjb2x1bW4gKi8KKwkJcmV0dXJuIHNsb3RfZ2V0YXR0 cihzbG90LCBhdHRudW0sICZpc251bGwpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L3J1bGV1dGlscy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGls cy5jCmluZGV4IDAxY2ViNmJmODEuLjQwZGM1YTlhYjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQv cnVsZXV0aWxzLmMKQEAgLTMzOSw3ICszMzksNyBAQCBzdGF0aWMgY2hhciAqcGdfZ2V0X3Zp ZXdkZWZfd29ya2VyKE9pZCB2aWV3b2lkLAogCQkJCQkJCQkgICBpbnQgcHJldHR5RmxhZ3Ms IGludCB3cmFwQ29sdW1uKTsKIHN0YXRpYyBjaGFyICpwZ19nZXRfdHJpZ2dlcmRlZl93b3Jr ZXIoT2lkIHRyaWdpZCwgYm9vbCBwcmV0dHkpOwogc3RhdGljIGludAlkZWNvbXBpbGVfY29s dW1uX2luZGV4X2FycmF5KERhdHVtIGNvbHVtbl9pbmRleF9hcnJheSwgT2lkIHJlbElkLCBP aWQgaW5kZXhJZCwKLQkJCQkJCQkJCQkgYm9vbCB3aXRob3V0T3ZlcmxhcHMsIE9pZCBwZXJp b2RpZCwgU3RyaW5nSW5mbyBidWYpOworCQkJCQkJCQkJCSBib29sIHdpdGhvdXRPdmVybGFw cywgYm9vbCB3aXRoUGVyaW9kLCBPaWQgcGVyaW9kaWQsIFN0cmluZ0luZm8gYnVmKTsKIHN0 YXRpYyBjaGFyICpwZ19nZXRfcnVsZWRlZl93b3JrZXIoT2lkIHJ1bGVvaWQsIGludCBwcmV0 dHlGbGFncyk7CiBzdGF0aWMgY2hhciAqcGdfZ2V0X2luZGV4ZGVmX3dvcmtlcihPaWQgaW5k ZXhyZWxpZCwgaW50IGNvbG5vLAogCQkJCQkJCQkJY29uc3QgT2lkICpleGNsdWRlT3BzLApA QCAtMjIyOSw3ICsyMjI5LDEyIEBAIHBnX2dldF9jb25zdHJhaW50ZGVmX3dvcmtlcihPaWQg Y29uc3RyYWludElkLCBib29sIGZ1bGxDb21tYW5kLAogCQkJCXZhbCA9IFN5c0NhY2hlR2V0 QXR0ck5vdE51bGwoQ09OU1RST0lELCB0dXAsCiAJCQkJCQkJCQkJCSBBbnVtX3BnX2NvbnN0 cmFpbnRfY29ua2V5KTsKIAotCQkJCWRlY29tcGlsZV9jb2x1bW5faW5kZXhfYXJyYXkodmFs LCBjb25Gb3JtLT5jb25yZWxpZCwgY29uRm9ybS0+Y29uaW5kaWQsIGZhbHNlLCBJbnZhbGlk T2lkLCAmYnVmKTsKKwkJCQkvKgorCQkJCSAqIElmIGl0IGlzIGEgdGVtcG9yYWwgZm9yZWln biBrZXkKKwkJCQkgKiB0aGVuIGl0IHVzZXMgUEVSSU9EICh3aGljaCBtYXkgYmUgYSByZWFs IHJhbmdlIGNvbHVtbgorCQkJCSAqIG9yIG1heSBiZSBhIHBlcmlvZCkuCisJCQkJICovCisJ CQkJZGVjb21waWxlX2NvbHVtbl9pbmRleF9hcnJheSh2YWwsIGNvbkZvcm0tPmNvbnJlbGlk LCBjb25Gb3JtLT5jb25pbmRpZCwgZmFsc2UsIGNvbkZvcm0tPmNvbnRlbXBvcmFsLCBjb25G b3JtLT5jb25wZXJpb2QsICZidWYpOwogCiAJCQkJLyogYWRkIGZvcmVpZ24gcmVsYXRpb24g bmFtZSAqLwogCQkJCWFwcGVuZFN0cmluZ0luZm8oJmJ1ZiwgIikgUkVGRVJFTkNFUyAlcygi LApAQCAtMjI0MCw3ICsyMjQ1LDcgQEAgcGdfZ2V0X2NvbnN0cmFpbnRkZWZfd29ya2VyKE9p ZCBjb25zdHJhaW50SWQsIGJvb2wgZnVsbENvbW1hbmQsCiAJCQkJdmFsID0gU3lzQ2FjaGVH ZXRBdHRyTm90TnVsbChDT05TVFJPSUQsIHR1cCwKIAkJCQkJCQkJCQkJIEFudW1fcGdfY29u c3RyYWludF9jb25ma2V5KTsKIAotCQkJCWRlY29tcGlsZV9jb2x1bW5faW5kZXhfYXJyYXko dmFsLCBjb25Gb3JtLT5jb25mcmVsaWQsIGNvbkZvcm0tPmNvbmluZGlkLCBmYWxzZSwgSW52 YWxpZE9pZCwgJmJ1Zik7CisJCQkJZGVjb21waWxlX2NvbHVtbl9pbmRleF9hcnJheSh2YWws IGNvbkZvcm0tPmNvbmZyZWxpZCwgY29uRm9ybS0+Y29uaW5kaWQsIGZhbHNlLCBjb25Gb3Jt LT5jb250ZW1wb3JhbCwgY29uRm9ybS0+Y29uZnBlcmlvZCwgJmJ1Zik7CiAKIAkJCQlhcHBl bmRTdHJpbmdJbmZvQ2hhcigmYnVmLCAnKScpOwogCkBAIC0yMzI2LDcgKzIzMzEsNyBAQCBw Z19nZXRfY29uc3RyYWludGRlZl93b3JrZXIoT2lkIGNvbnN0cmFpbnRJZCwgYm9vbCBmdWxs Q29tbWFuZCwKIAkJCQlpZiAoIWlzbnVsbCkKIAkJCQl7CiAJCQkJCWFwcGVuZFN0cmluZ0lu Zm9TdHJpbmcoJmJ1ZiwgIiAoIik7Ci0JCQkJCWRlY29tcGlsZV9jb2x1bW5faW5kZXhfYXJy YXkodmFsLCBjb25Gb3JtLT5jb25yZWxpZCwgSW52YWxpZE9pZCwgZmFsc2UsIEludmFsaWRP aWQsICZidWYpOworCQkJCQlkZWNvbXBpbGVfY29sdW1uX2luZGV4X2FycmF5KHZhbCwgY29u Rm9ybS0+Y29ucmVsaWQsIEludmFsaWRPaWQsIGZhbHNlLCBmYWxzZSwgSW52YWxpZE9pZCwg JmJ1Zik7CiAJCQkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKCZidWYsICcpJyk7CiAJCQkJfQog CkBAIC0yMzY5LDcgKzIzNzQsNyBAQCBwZ19nZXRfY29uc3RyYWludGRlZl93b3JrZXIoT2lk IGNvbnN0cmFpbnRJZCwgYm9vbCBmdWxsQ29tbWFuZCwKIAkJCQlpbmRleElkID0gY29uRm9y bS0+Y29uaW5kaWQ7CiAJCQkJU3lzQ2FjaGVHZXRBdHRyKENPTlNUUk9JRCwgdHVwLAogCQkJ CQkJICBBbnVtX3BnX2NvbnN0cmFpbnRfY29uZXhjbG9wLCAmaXNudWxsKTsKLQkJCQlrZXlh dHRzID0gZGVjb21waWxlX2NvbHVtbl9pbmRleF9hcnJheSh2YWwsIGNvbkZvcm0tPmNvbnJl bGlkLCBpbmRleElkLCAhaXNudWxsLCBJbnZhbGlkT2lkLCAmYnVmKTsKKwkJCQlrZXlhdHRz ID0gZGVjb21waWxlX2NvbHVtbl9pbmRleF9hcnJheSh2YWwsIGNvbkZvcm0tPmNvbnJlbGlk LCBpbmRleElkLCAhaXNudWxsLCBmYWxzZSwgSW52YWxpZE9pZCwgJmJ1Zik7CiAKIAkJCQlh cHBlbmRTdHJpbmdJbmZvQ2hhcigmYnVmLCAnKScpOwogCkBAIC0yNTUxLDcgKzI1NTYsNyBA QCBwZ19nZXRfY29uc3RyYWludGRlZl93b3JrZXIoT2lkIGNvbnN0cmFpbnRJZCwgYm9vbCBm dWxsQ29tbWFuZCwKICAqLwogc3RhdGljIGludAogZGVjb21waWxlX2NvbHVtbl9pbmRleF9h cnJheShEYXR1bSBjb2x1bW5faW5kZXhfYXJyYXksIE9pZCByZWxJZCwgT2lkIGluZGV4SWQs Ci0JCQkJCQkJIGJvb2wgd2l0aG91dE92ZXJsYXBzLCBPaWQgcGVyaW9kaWQsIFN0cmluZ0lu Zm8gYnVmKQorCQkJCQkJCSBib29sIHdpdGhvdXRPdmVybGFwcywgYm9vbCB3aXRoUGVyaW9k LCBPaWQgcGVyaW9kaWQsIFN0cmluZ0luZm8gYnVmKQogewogCURhdHVtCSAgICprZXlzOwog CWludAkJCW5LZXlzOwpAQCAtMjU5OSw2ICsyNjA0LDggQEAgZGVjb21waWxlX2NvbHVtbl9p bmRleF9hcnJheShEYXR1bSBjb2x1bW5faW5kZXhfYXJyYXksIE9pZCByZWxJZCwgT2lkIGlu ZGV4SWQsCiAJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgcXVvdGVfaWRlbnRpZmll cihjb2xOYW1lKSk7CiAJCWVsc2UgaWYgKHdpdGhvdXRPdmVybGFwcyAmJiBqID09IG5LZXlz IC0gMSkKIAkJCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiLCAlcyBXSVRIT1VUIE9WRVJMQVBT IiwgcXVvdGVfaWRlbnRpZmllcihjb2xOYW1lKSk7CisJCWVsc2UgaWYgKHdpdGhQZXJpb2Qg JiYgaiA9PSBuS2V5cyAtIDEpCisJCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIiwgUEVSSU9E ICVzIiwgcXVvdGVfaWRlbnRpZmllcihjb2xOYW1lKSk7CiAJCWVsc2UKIAkJCWFwcGVuZFN0 cmluZ0luZm8oYnVmLCAiLCAlcyIsIHF1b3RlX2lkZW50aWZpZXIoY29sTmFtZSkpOwogCX0K ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY29uc3RyYWludC5oIGIvc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19jb25zdHJhaW50LmgKaW5kZXggZGNlOGRhNTBjYS4uYzZm MzliM2Y4ZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19jb25zdHJhaW50 LmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19jb25zdHJhaW50LmgKQEAgLTExNCw2 ICsxMTQsNyBAQCBDQVRBTE9HKHBnX2NvbnN0cmFpbnQsMjYwNixDb25zdHJhaW50UmVsYXRp b25JZCkKIAlib29sCQljb250ZW1wb3JhbDsKIAogCU9pZAkJCWNvbnBlcmlvZDsJCS8qIGxv Y2FsIFBFUklPRCB1c2VkIGluIFBLL0ZLIGNvbnN0cmFpbnQgKi8KKwlPaWQJCQljb25mcGVy aW9kOwkJLyogcmVmZXJlbmNlZCBmb3JlaWduIFBFUklPRCAqLwogCiAjaWZkZWYgQ0FUQUxP R19WQVJMRU4JCQkvKiB2YXJpYWJsZS1sZW5ndGggZmllbGRzIHN0YXJ0IGhlcmUgKi8KIApA QCAtMTI5LDE5ICsxMzAsMTkgQEAgQ0FUQUxPRyhwZ19jb25zdHJhaW50LDI2MDYsQ29uc3Ry YWludFJlbGF0aW9uSWQpCiAJaW50MTYJCWNvbmZrZXlbMV07CiAKIAkvKgotCSAqIElmIGEg Zm9yZWlnbiBrZXksIHRoZSBPSURzIG9mIHRoZSBQSyA9IEZLIGVxdWFsaXR5IG9wZXJhdG9y cyBmb3IgZWFjaAorCSAqIElmIGEgZm9yZWlnbiBrZXksIHRoZSBPSURzIG9mIHRoZSBQSyA9 IEZLIGNvbXBhcmlzb24gb3BlcmF0b3JzIGZvciBlYWNoCiAJICogY29sdW1uIG9mIHRoZSBj b25zdHJhaW50CiAJICovCiAJT2lkCQkJY29ucGZlcW9wWzFdIEJLSV9MT09LVVAocGdfb3Bl cmF0b3IpOwogCiAJLyoKLQkgKiBJZiBhIGZvcmVpZ24ga2V5LCB0aGUgT0lEcyBvZiB0aGUg UEsgPSBQSyBlcXVhbGl0eSBvcGVyYXRvcnMgZm9yIGVhY2gKKwkgKiBJZiBhIGZvcmVpZ24g a2V5LCB0aGUgT0lEcyBvZiB0aGUgUEsgPSBQSyBjb21wYXJpc29uIG9wZXJhdG9ycyBmb3Ig ZWFjaAogCSAqIGNvbHVtbiBvZiB0aGUgY29uc3RyYWludCAoaS5lLiwgZXF1YWxpdHkgZm9y IHRoZSByZWZlcmVuY2VkIGNvbHVtbnMpCiAJICovCiAJT2lkCQkJY29ucHBlcW9wWzFdIEJL SV9MT09LVVAocGdfb3BlcmF0b3IpOwogCiAJLyoKLQkgKiBJZiBhIGZvcmVpZ24ga2V5LCB0 aGUgT0lEcyBvZiB0aGUgRksgPSBGSyBlcXVhbGl0eSBvcGVyYXRvcnMgZm9yIGVhY2gKKwkg KiBJZiBhIGZvcmVpZ24ga2V5LCB0aGUgT0lEcyBvZiB0aGUgRksgPSBGSyBjb21wYXJpc29u IG9wZXJhdG9ycyBmb3IgZWFjaAogCSAqIGNvbHVtbiBvZiB0aGUgY29uc3RyYWludCAoaS5l LiwgZXF1YWxpdHkgZm9yIHRoZSByZWZlcmVuY2luZyBjb2x1bW5zKQogCSAqLwogCU9pZAkJ CWNvbmZmZXFvcFsxXSBCS0lfTE9PS1VQKHBnX29wZXJhdG9yKTsKQEAgLTE4Miw3ICsxODMs NyBAQCBERUNMQVJFX0lOREVYKHBnX2NvbnN0cmFpbnRfY29ucGFyZW50aWRfaW5kZXgsIDI1 NzksIENvbnN0cmFpbnRQYXJlbnRJbmRleElkLCBvbgogCiAvKiBjb25rZXkgY2FuIGNvbnRh aW4gemVybyAoSW52YWxpZEF0dHJOdW1iZXIpIGlmIGEgd2hvbGUtcm93IFZhciBpcyB1c2Vk ICovCiBERUNMQVJFX0FSUkFZX0ZPUkVJR05fS0VZX09QVCgoY29ucmVsaWQsIGNvbmtleSks IHBnX2F0dHJpYnV0ZSwgKGF0dHJlbGlkLCBhdHRudW0pKTsKLURFQ0xBUkVfQVJSQVlfRk9S RUlHTl9LRVkoKGNvbmZyZWxpZCwgY29uZmtleSksIHBnX2F0dHJpYnV0ZSwgKGF0dHJlbGlk LCBhdHRudW0pKTsKK0RFQ0xBUkVfQVJSQVlfRk9SRUlHTl9LRVlfT1BUKChjb25mcmVsaWQs IGNvbmZrZXkpLCBwZ19hdHRyaWJ1dGUsIChhdHRyZWxpZCwgYXR0bnVtKSk7CiAKICNpZmRl ZiBFWFBPU0VfVE9fQ0xJRU5UX0NPREUKIApAQCAtMjQ1LDYgKzI0Niw3IEBAIGV4dGVybiBP aWQJQ3JlYXRlQ29uc3RyYWludEVudHJ5KGNvbnN0IGNoYXIgKmNvbnN0cmFpbnROYW1lLAog CQkJCQkJCQkgIGJvb2wgY29uTm9Jbmhlcml0LAogCQkJCQkJCQkgIGJvb2wgY29uVGVtcG9y YWwsCiAJCQkJCQkJCSAgT2lkIHBlcmlvZCwKKwkJCQkJCQkJICBPaWQgZnBlcmlvZCwKIAkJ CQkJCQkJICBib29sIGlzX2ludGVybmFsKTsKIAogZXh0ZXJuIHZvaWQgUmVtb3ZlQ29uc3Ry YWludEJ5SWQoT2lkIGNvbklkKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cv cGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4IGIy YmM4MWIxNWYuLjM4NDAyYzY0ODcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cv cGdfcHJvYy5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdApAQCAt Mzk1NSw2ICszOTU1LDUwIEBACiAgIHByb3JldHR5cGUgPT4gJ3RyaWdnZXInLCBwcm9hcmd0 eXBlcyA9PiAnJywKICAgcHJvc3JjID0+ICdSSV9GS2V5X25vYWN0aW9uX3VwZCcgfSwKIAor IyBUZW1wb3JhbCByZWZlcmVudGlhbCBpbnRlZ3JpdHkgY29uc3RyYWludCB0cmlnZ2Vycwor eyBvaWQgPT4gJzYxMjInLCBkZXNjciA9PiAndGVtcG9yYWwgcmVmZXJlbnRpYWwgaW50ZWdy aXR5IEZPUkVJR04gS0VZIC4uLiBSRUZFUkVOQ0VTJywKKyAgcHJvbmFtZSA9PiAnVFJJX0ZL ZXlfY2hlY2tfaW5zJywgcHJvdm9sYXRpbGUgPT4gJ3YnLCBwcm9yZXR0eXBlID0+ICd0cmln Z2VyJywKKyAgcHJvYXJndHlwZXMgPT4gJycsIHByb3NyYyA9PiAnVFJJX0ZLZXlfY2hlY2tf aW5zJyB9LAoreyBvaWQgPT4gJzYxMjMnLCBkZXNjciA9PiAndGVtcG9yYWwgcmVmZXJlbnRp YWwgaW50ZWdyaXR5IEZPUkVJR04gS0VZIC4uLiBSRUZFUkVOQ0VTJywKKyAgcHJvbmFtZSA9 PiAnVFJJX0ZLZXlfY2hlY2tfdXBkJywgcHJvdm9sYXRpbGUgPT4gJ3YnLCBwcm9yZXR0eXBl ID0+ICd0cmlnZ2VyJywKKyAgcHJvYXJndHlwZXMgPT4gJycsIHByb3NyYyA9PiAnVFJJX0ZL ZXlfY2hlY2tfdXBkJyB9LAoreyBvaWQgPT4gJzYxMjQnLCBkZXNjciA9PiAndGVtcG9yYWwg cmVmZXJlbnRpYWwgaW50ZWdyaXR5IE9OIERFTEVURSBDQVNDQURFJywKKyAgcHJvbmFtZSA9 PiAnVFJJX0ZLZXlfY2FzY2FkZV9kZWwnLCBwcm92b2xhdGlsZSA9PiAndicsIHByb3JldHR5 cGUgPT4gJ3RyaWdnZXInLAorICBwcm9hcmd0eXBlcyA9PiAnJywgcHJvc3JjID0+ICdUUklf RktleV9jYXNjYWRlX2RlbCcgfSwKK3sgb2lkID0+ICc2MTI1JywgZGVzY3IgPT4gJ3RlbXBv cmFsIHJlZmVyZW50aWFsIGludGVncml0eSBPTiBVUERBVEUgQ0FTQ0FERScsCisgIHByb25h bWUgPT4gJ1RSSV9GS2V5X2Nhc2NhZGVfdXBkJywgcHJvdm9sYXRpbGUgPT4gJ3YnLCBwcm9y ZXR0eXBlID0+ICd0cmlnZ2VyJywKKyAgcHJvYXJndHlwZXMgPT4gJycsIHByb3NyYyA9PiAn VFJJX0ZLZXlfY2FzY2FkZV91cGQnIH0sCit7IG9pZCA9PiAnNjEyNicsIGRlc2NyID0+ICd0 ZW1wb3JhbCByZWZlcmVudGlhbCBpbnRlZ3JpdHkgT04gREVMRVRFIFJFU1RSSUNUJywKKyAg cHJvbmFtZSA9PiAnVFJJX0ZLZXlfcmVzdHJpY3RfZGVsJywgcHJvdm9sYXRpbGUgPT4gJ3Yn LAorICBwcm9yZXR0eXBlID0+ICd0cmlnZ2VyJywgcHJvYXJndHlwZXMgPT4gJycsCisgIHBy b3NyYyA9PiAnVFJJX0ZLZXlfcmVzdHJpY3RfZGVsJyB9LAoreyBvaWQgPT4gJzYxMjcnLCBk ZXNjciA9PiAndGVtcG9yYWwgcmVmZXJlbnRpYWwgaW50ZWdyaXR5IE9OIFVQREFURSBSRVNU UklDVCcsCisgIHByb25hbWUgPT4gJ1RSSV9GS2V5X3Jlc3RyaWN0X3VwZCcsIHByb3ZvbGF0 aWxlID0+ICd2JywKKyAgcHJvcmV0dHlwZSA9PiAndHJpZ2dlcicsIHByb2FyZ3R5cGVzID0+ ICcnLAorICBwcm9zcmMgPT4gJ1RSSV9GS2V5X3Jlc3RyaWN0X3VwZCcgfSwKK3sgb2lkID0+ ICc2MTI4JywgZGVzY3IgPT4gJ3RlbXBvcmFsIHJlZmVyZW50aWFsIGludGVncml0eSBPTiBE RUxFVEUgU0VUIE5VTEwnLAorICBwcm9uYW1lID0+ICdUUklfRktleV9zZXRudWxsX2RlbCcs IHByb3ZvbGF0aWxlID0+ICd2JywgcHJvcmV0dHlwZSA9PiAndHJpZ2dlcicsCisgIHByb2Fy Z3R5cGVzID0+ICcnLCBwcm9zcmMgPT4gJ1RSSV9GS2V5X3NldG51bGxfZGVsJyB9LAoreyBv aWQgPT4gJzYxMjknLCBkZXNjciA9PiAndGVtcG9yYWwgcmVmZXJlbnRpYWwgaW50ZWdyaXR5 IE9OIFVQREFURSBTRVQgTlVMTCcsCisgIHByb25hbWUgPT4gJ1RSSV9GS2V5X3NldG51bGxf dXBkJywgcHJvdm9sYXRpbGUgPT4gJ3YnLCBwcm9yZXR0eXBlID0+ICd0cmlnZ2VyJywKKyAg cHJvYXJndHlwZXMgPT4gJycsIHByb3NyYyA9PiAnVFJJX0ZLZXlfc2V0bnVsbF91cGQnIH0s Cit7IG9pZCA9PiAnNjEzMCcsIGRlc2NyID0+ICd0ZW1wb3JhbCByZWZlcmVudGlhbCBpbnRl Z3JpdHkgT04gREVMRVRFIFNFVCBERUZBVUxUJywKKyAgcHJvbmFtZSA9PiAnVFJJX0ZLZXlf c2V0ZGVmYXVsdF9kZWwnLCBwcm92b2xhdGlsZSA9PiAndicsCisgIHByb3JldHR5cGUgPT4g J3RyaWdnZXInLCBwcm9hcmd0eXBlcyA9PiAnJywKKyAgcHJvc3JjID0+ICdUUklfRktleV9z ZXRkZWZhdWx0X2RlbCcgfSwKK3sgb2lkID0+ICc2MTMxJywgZGVzY3IgPT4gJ3RlbXBvcmFs IHJlZmVyZW50aWFsIGludGVncml0eSBPTiBVUERBVEUgU0VUIERFRkFVTFQnLAorICBwcm9u YW1lID0+ICdUUklfRktleV9zZXRkZWZhdWx0X3VwZCcsIHByb3ZvbGF0aWxlID0+ICd2JywK KyAgcHJvcmV0dHlwZSA9PiAndHJpZ2dlcicsIHByb2FyZ3R5cGVzID0+ICcnLAorICBwcm9z cmMgPT4gJ1RSSV9GS2V5X3NldGRlZmF1bHRfdXBkJyB9LAoreyBvaWQgPT4gJzYxMzInLCBk ZXNjciA9PiAndGVtcG9yYWwgcmVmZXJlbnRpYWwgaW50ZWdyaXR5IE9OIERFTEVURSBOTyBB Q1RJT04nLAorICBwcm9uYW1lID0+ICdUUklfRktleV9ub2FjdGlvbl9kZWwnLCBwcm92b2xh dGlsZSA9PiAndicsCisgIHByb3JldHR5cGUgPT4gJ3RyaWdnZXInLCBwcm9hcmd0eXBlcyA9 PiAnJywKKyAgcHJvc3JjID0+ICdUUklfRktleV9ub2FjdGlvbl9kZWwnIH0sCit7IG9pZCA9 PiAnNjEzMycsIGRlc2NyID0+ICd0ZW1wb3JhbCByZWZlcmVudGlhbCBpbnRlZ3JpdHkgT04g VVBEQVRFIE5PIEFDVElPTicsCisgIHByb25hbWUgPT4gJ1RSSV9GS2V5X25vYWN0aW9uX3Vw ZCcsIHByb3ZvbGF0aWxlID0+ICd2JywKKyAgcHJvcmV0dHlwZSA9PiAndHJpZ2dlcicsIHBy b2FyZ3R5cGVzID0+ICcnLAorICBwcm9zcmMgPT4gJ1RSSV9GS2V5X25vYWN0aW9uX3VwZCcg fSwKKwogeyBvaWQgPT4gJzE2NjYnLAogICBwcm9uYW1lID0+ICd2YXJiaXRlcScsIHByb2xl YWtwcm9vZiA9PiAndCcsIHByb3JldHR5cGUgPT4gJ2Jvb2wnLAogICBwcm9hcmd0eXBlcyA9 PiAndmFyYml0IHZhcmJpdCcsIHByb3NyYyA9PiAnYml0ZXEnIH0sCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJz ZW5vZGVzLmgKaW5kZXggYTQ0NTJkNmQzOS4uMjcxOTFjMGYzZCAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3Bh cnNlbm9kZXMuaApAQCAtMjYzMyw3ICsyNjMzLDkgQEAgdHlwZWRlZiBzdHJ1Y3QgQ29uc3Ry YWludAogCS8qIEZpZWxkcyB1c2VkIGZvciBGT1JFSUdOIEtFWSBjb25zdHJhaW50czogKi8K IAlSYW5nZVZhciAgICpwa3RhYmxlOwkJLyogUHJpbWFyeSBrZXkgdGFibGUgKi8KIAlMaXN0 CSAgICpma19hdHRyczsJCS8qIEF0dHJpYnV0ZXMgb2YgZm9yZWlnbiBrZXkgKi8KKwlOb2Rl CSAgICpma19wZXJpb2Q7CQkvKiBTdHJpbmcgbm9kZSBuYW1pbmcgUGVyaW9kIG9yIHJhbmdl IGNvbHVtbiAqLwogCUxpc3QJICAgKnBrX2F0dHJzOwkJLyogQ29ycmVzcG9uZGluZyBhdHRy cyBpbiBQSyB0YWJsZSAqLworCU5vZGUJICAgKnBrX3BlcmlvZDsJCS8qIFN0cmluZyBub2Rl IG5hbWluZyBQZXJpb2Qgb3IgcmFuZ2UgY29sdW1uICovCiAJY2hhcgkJZmtfbWF0Y2h0eXBl OwkvKiBGVUxMLCBQQVJUSUFMLCBTSU1QTEUgKi8KIAljaGFyCQlma191cGRfYWN0aW9uOwkv KiBPTiBVUERBVEUgYWN0aW9uICovCiAJY2hhcgkJZmtfZGVsX2FjdGlvbjsJLyogT04gREVM RVRFIGFjdGlvbiAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC93 aXRob3V0X292ZXJsYXBzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aG91 dF9vdmVybGFwcy5vdXQKaW5kZXggOThiMjk1MGYzYy4uYTlhNjRiYmY4MSAxMDA2NDQKLS0t IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC93aXRob3V0X292ZXJsYXBzLm91dAorKysg Yi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMub3V0CkBAIC01 ODMsMyArNTgzLDE4MjYgQEAgQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkICgK ICkgUEFSVElUSU9OIEJZIExJU1QgKGlkKTsKIEVSUk9SOiAgY2Fubm90IG1hdGNoIHBhcnRp dGlvbiBrZXkgdG8gYW4gaW5kZXggdXNpbmcgYWNjZXNzIG1ldGhvZCAiZ2lzdCIKIC0tIFRP RE86IGF0dGFjaCBzb21lIHBhcnRpdGlvbnMsIGluc2VydCBpbnRvIHRoZW0sIHVwZGF0ZSB0 aGVtIHdpdGggYW5kIHdpdGhvdXQgRk9SIFBPUlRJT04gT0YsIGRlbGV0ZSB0aGVtIHRoZSBz YW1lIHdheS4KKy0tCistLSB0ZXN0IEZLIGRlcGVuZGVuY2llcworLS0KKy0tIGNhbid0IGRy b3AgYSByYW5nZSByZWZlcmVuY2VkIGJ5IGFuIEZLLCB1bmxlc3Mgd2l0aCBDQVNDQURFCitD UkVBVEUgVEFCTEUgdGVtcG9yYWwzICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNy YW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsM19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlk X2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2ZrX3Ju ZzJybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCXBhcmVudF9p ZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX3BrIFBSSU1B UlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCB0 ZW1wb3JhbF9ma19ybmcycm5nX2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2 YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbDMgKGlkLCBQRVJJT0QgdmFsaWRfYXQp CispOworQUxURVIgVEFCTEUgdGVtcG9yYWwzIERST1AgQ09MVU1OIHZhbGlkX2F0OworRVJS T1I6ICBjYW5ub3QgZHJvcCBjb2x1bW4gdmFsaWRfYXQgb2YgdGFibGUgdGVtcG9yYWwzIGJl Y2F1c2Ugb3RoZXIgb2JqZWN0cyBkZXBlbmQgb24gaXQKK0RFVEFJTDogIGNvbnN0cmFpbnQg dGVtcG9yYWxfZmtfcm5nMnJuZ19mayBvbiB0YWJsZSB0ZW1wb3JhbF9ma19ybmcycm5nIGRl cGVuZHMgb24gY29sdW1uIHZhbGlkX2F0IG9mIHRhYmxlIHRlbXBvcmFsMworSElOVDogIFVz ZSBEUk9QIC4uLiBDQVNDQURFIHRvIGRyb3AgdGhlIGRlcGVuZGVudCBvYmplY3RzIHRvby4K K0FMVEVSIFRBQkxFIHRlbXBvcmFsMyBEUk9QIENPTFVNTiB2YWxpZF9hdCBDQVNDQURFOwor Tk9USUNFOiAgZHJvcCBjYXNjYWRlcyB0byBjb25zdHJhaW50IHRlbXBvcmFsX2ZrX3JuZzJy bmdfZmsgb24gdGFibGUgdGVtcG9yYWxfZmtfcm5nMnJuZworRFJPUCBUQUJMRSB0ZW1wb3Jh bF9ma19ybmcycm5nOworRFJPUCBUQUJMRSB0ZW1wb3JhbDM7CistLSBjYW4ndCBkcm9wIGEg UEVSSU9EIHJlZmVyZW5jZWQgYnkgYW4gRkssIHVubGVzcyB3aXRoIENBU0NBREUKK0NSRUFU RSBUQUJMRSB0ZW1wb3JhbDMgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9mcm9tIHRpbWVz dGFtcCwKKwl2YWxpZF90aWwgdGltZXN0YW1wLAorCVBFUklPRCBGT1IgdmFsaWRfYXQgKHZh bGlkX2Zyb20sIHZhbGlkX3RpbCksCisJQ09OU1RSQUlOVCB0ZW1wb3JhbDNfcGsgUFJJTUFS WSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0NSRUFURSBUQUJM RSB0ZW1wb3JhbF9ma19ybmcycm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNy YW5nZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtf cm5nMnJuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMp LAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mayBGT1JFSUdOIEtFWSAocGFy ZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWwzIChpZCwg UEVSSU9EIHZhbGlkX2F0KQorKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsMyBEUk9QIFBFUklP RCBGT1IgdmFsaWRfYXQ7CitFUlJPUjogIGNhbm5vdCBkcm9wIHBlcmlvZCB2YWxpZF9hdCBv biB0YWJsZSB0ZW1wb3JhbDMgYmVjYXVzZSBvdGhlciBvYmplY3RzIGRlcGVuZCBvbiBpdAor REVUQUlMOiAgY29uc3RyYWludCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIG9uIHRhYmxlIHRl bXBvcmFsX2ZrX3JuZzJybmcgZGVwZW5kcyBvbiBwZXJpb2QgdmFsaWRfYXQgb24gdGFibGUg dGVtcG9yYWwzCitISU5UOiAgVXNlIERST1AgLi4uIENBU0NBREUgdG8gZHJvcCB0aGUgZGVw ZW5kZW50IG9iamVjdHMgdG9vLgorQUxURVIgVEFCTEUgdGVtcG9yYWwzIERST1AgUEVSSU9E IEZPUiB2YWxpZF9hdCBDQVNDQURFOworTk9USUNFOiAgZHJvcCBjYXNjYWRlcyB0byBjb25z dHJhaW50IHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsgb24gdGFibGUgdGVtcG9yYWxfZmtfcm5n MnJuZworRFJPUCBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nOworRFJPUCBUQUJMRSB0ZW1w b3JhbDM7CistLQorLS0gdGVzdCBGT1JFSUdOIEtFWSwgcmFuZ2UgcmVmZXJlbmNlcyByYW5n ZQorLS0KKy0tIENhbid0IGNyZWF0ZSBhIEZLIHdpdGggYSBtaXNtYXRjaGVkIHJhbmdlIHR5 cGUKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nICgKKwlpZCBpbnQ0cmFuZ2Us CisJdmFsaWRfYXQgaW50NHJhbmdlLAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RS QUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX3BrMiBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0 IFdJVEhPVVQgT1ZFUkxBUFMpLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19m azIgRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVO Q0VTIHRlbXBvcmFsX3JuZyAoaWQsIFBFUklPRCB2YWxpZF9hdCkKKyk7CitFUlJPUjogIGZv cmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX2ZrX3JuZzJybmdfZmsyIiBjYW5ub3Qg YmUgaW1wbGVtZW50ZWQKK0RFVEFJTDogIEtleSBjb2x1bW5zICJ2YWxpZF9hdCIgYW5kICJ2 YWxpZF9hdCIgYXJlIG9mIGluY29tcGF0aWJsZSB0eXBlczogaW50NHJhbmdlIGFuZCB0c3Jh bmdlLgorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcgKAorCWlkIGludDRyYW5n ZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RS QUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQg V0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2Zr IEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNF UyB0ZW1wb3JhbF9ybmcgKGlkLCBQRVJJT0QgdmFsaWRfYXQpCispOworRFJPUCBUQUJMRSB0 ZW1wb3JhbF9ma19ybmcycm5nOworLS0gd2l0aCBpbmZlcnJlZCBQSyBvbiB0aGUgcmVmZXJl bmNlZCB0YWJsZToKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nICgKKwlpZCBp bnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5nZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAor CUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZh bGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5n MnJuZ19mayBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJF RkVSRU5DRVMgdGVtcG9yYWxfcm5nCispOworRFJPUCBUQUJMRSB0ZW1wb3JhbF9ma19ybmcy cm5nOworLS0gc2hvdWxkIGZhaWwgYmVjYXVzZSBvZiBkdXBsaWNhdGUgcmVmZXJlbmNlZCBj b2x1bW5zOgorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcgKAorCWlkIGludDRy YW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09O U1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRf YXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5n X2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCBwYXJlbnRfaWQpCisJCVJFRkVS RU5DRVMgdGVtcG9yYWxfcm5nIChpZCwgUEVSSU9EIGlkKQorKTsKK0VSUk9SOiAgZm9yZWln biBrZXkgcmVmZXJlbmNlZC1jb2x1bW5zIGxpc3QgbXVzdCBub3QgY29udGFpbiBkdXBsaWNh dGVzCistLQorLS0gdGVzdCBBTFRFUiBUQUJMRSBBREQgQ09OU1RSQUlOVAorLS0KK0NSRUFU RSBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRf YXQgdHNyYW5nZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9y YWxfZmtfcm5nMnJuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZF UkxBUFMpCispOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCUFERCBDT05T VFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lk LCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcgKGlkLCBQRVJJ T0QgdmFsaWRfYXQpOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCURST1Ag Q09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrOworLS0gd2l0aCBpbmZlcnJlZCBQ SyBvbiB0aGUgcmVmZXJlbmNlZCB0YWJsZToKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3Ju ZzJybmcKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisJRk9SRUlH TiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9y YWxfcm5nOworLS0gc2hvdWxkIGZhaWwgYmVjYXVzZSBvZiBkdXBsaWNhdGUgcmVmZXJlbmNl ZCBjb2x1bW5zOgorQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCUFERCBDT05T VFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsyCisJRk9SRUlHTiBLRVkgKHBhcmVudF9p ZCwgUEVSSU9EIHBhcmVudF9pZCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZyAoaWQsIFBF UklPRCBpZCk7CitFUlJPUjogIGZvcmVpZ24ga2V5IHJlZmVyZW5jZWQtY29sdW1ucyBsaXN0 IG11c3Qgbm90IGNvbnRhaW4gZHVwbGljYXRlcworLS0KKy0tIHRlc3Qgd2l0aCByb3dzIGFs cmVhZHkKKy0tCitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nOworQUxURVIgVEFC TEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19y bmcycm5nX2ZrOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdb MSwxXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDInLCAnMjAxOC0wMi0wMScpLCAnWzEsMV0nKTsK K0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlBREQgQ09OU1RSQUlOVCB0ZW1w b3JhbF9ma19ybmcycm5nX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZh bGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nOworQUxURVIgVEFCTEUgdGVtcG9y YWxfZmtfcm5nMnJuZworCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2Zr OworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMiwyXScsIHRz cmFuZ2UoJzIwMTgtMDEtMDInLCAnMjAxOC0wNC0wMScpLCAnWzEsMV0nKTsKKy0tIHNob3Vs ZCBmYWlsOgorQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCUFERCBDT05TVFJB SU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQ RVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmc7CitFUlJPUjogIGlu c2VydCBvciB1cGRhdGUgb24gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmciIHZpb2xhdGVz IGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX2ZrX3JuZzJybmdfZmsiCitERVRB SUw6ICBLZXkgKHBhcmVudF9pZCwgdmFsaWRfYXQpPShbMSwyKSwgWyJUdWUgSmFuIDAyIDAw OjAwOjAwIDIwMTgiLCJTdW4gQXByIDAxIDAwOjAwOjAwIDIwMTgiKSkgaXMgbm90IHByZXNl bnQgaW4gdGFibGUgInRlbXBvcmFsX3JuZyIuCistLSBva2F5IGFnYWluOgorREVMRVRFIEZS T00gdGVtcG9yYWxfZmtfcm5nMnJuZzsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJy bmcKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisJRk9SRUlHTiBL RVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxf cm5nOworLS0KKy0tIHRlc3QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYKKy0tCitTRUxFQ1QgcGdf Z2V0X2NvbnN0cmFpbnRkZWYob2lkKSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ubmFt ZSA9ICd0ZW1wb3JhbF9ma19ybmcycm5nX2ZrJzsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHBnX2dldF9jb25zdHJhaW50ZGVmICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgRk9SRUlH TiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KSBSRUZFUkVOQ0VTIHRlbXBvcmFs X3JuZyhpZCwgUEVSSU9EIHZhbGlkX2F0KQorKDEgcm93KQorCistLQorLS0gdGVzdCBGSyBj aGlsZCBpbnNlcnRzCistLQorSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxV RVMgKCdbMSwxXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDInLCAnMjAxOC0wMi0wMScpLCAnWzEs MV0nKTsKKy0tIHNob3VsZCBmYWlsOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJu ZyBWQUxVRVMgKCdbMiwyXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDInLCAnMjAxOC0wNC0wMScp LCAnWzEsMV0nKTsKK0VSUk9SOiAgaW5zZXJ0IG9yIHVwZGF0ZSBvbiB0YWJsZSAidGVtcG9y YWxfZmtfcm5nMnJuZyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9y YWxfZmtfcm5nMnJuZ19mayIKK0RFVEFJTDogIEtleSAocGFyZW50X2lkLCB2YWxpZF9hdCk9 KFsxLDIpLCBbIlR1ZSBKYW4gMDIgMDA6MDA6MDAgMjAxOCIsIlN1biBBcHIgMDEgMDA6MDA6 MDAgMjAxOCIpKSBpcyBub3QgcHJlc2VudCBpbiB0YWJsZSAidGVtcG9yYWxfcm5nIi4KKy0t IG5vdyBpdCBzaG91bGQgd29yazoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMg KCdbMSwxXScsIHRzcmFuZ2UoJzIwMTgtMDItMDMnLCAnMjAxOC0wMy0wMycpKTsKK0lOU0VS VCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzIsMl0nLCB0c3JhbmdlKCcy MDE4LTAxLTAyJywgJzIwMTgtMDQtMDEnKSwgJ1sxLDFdJyk7CistLQorLS0gdGVzdCBGSyBj aGlsZCB1cGRhdGVzCistLQorVVBEQVRFIHRlbXBvcmFsX2ZrX3JuZzJybmcgU0VUIHZhbGlk X2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMicsICcyMDE4LTAzLTAxJykgV0hFUkUgaWQgPSAn WzEsMV0nOworLS0gc2hvdWxkIGZhaWw6CitVUERBVEUgdGVtcG9yYWxfZmtfcm5nMnJuZyBT RVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAyJywgJzIwMTgtMDUtMDEnKSBXSEVS RSBpZCA9ICdbMSwxXSc7CitFUlJPUjogIGluc2VydCBvciB1cGRhdGUgb24gdGFibGUgInRl bXBvcmFsX2ZrX3JuZzJybmciIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRl bXBvcmFsX2ZrX3JuZzJybmdfZmsiCitERVRBSUw6ICBLZXkgKHBhcmVudF9pZCwgdmFsaWRf YXQpPShbMSwyKSwgWyJUdWUgSmFuIDAyIDAwOjAwOjAwIDIwMTgiLCJUdWUgTWF5IDAxIDAw OjAwOjAwIDIwMTgiKSkgaXMgbm90IHByZXNlbnQgaW4gdGFibGUgInRlbXBvcmFsX3JuZyIu CitVUERBVEUgdGVtcG9yYWxfZmtfcm5nMnJuZyBTRVQgcGFyZW50X2lkID0gJ1s4LDhdJyBX SEVSRSBpZCA9ICdbMSwxXSc7CitFUlJPUjogIGluc2VydCBvciB1cGRhdGUgb24gdGFibGUg InRlbXBvcmFsX2ZrX3JuZzJybmciIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQg InRlbXBvcmFsX2ZrX3JuZzJybmdfZmsiCitERVRBSUw6ICBLZXkgKHBhcmVudF9pZCwgdmFs aWRfYXQpPShbOCw5KSwgWyJUdWUgSmFuIDAyIDAwOjAwOjAwIDIwMTgiLCJUaHUgTWFyIDAx IDAwOjAwOjAwIDIwMTgiKSkgaXMgbm90IHByZXNlbnQgaW4gdGFibGUgInRlbXBvcmFsX3Ju ZyIuCistLQorLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBOTyBBQ1RJT04KKy0tCistLSBh IFBLIHVwZGF0ZSB0aGF0IHN1Y2NlZWRzIGJlY2F1c2UgdGhlIG51bWVyaWMgaWQgaXNuJ3Qg cmVmZXJlbmNlZDoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNSw1XScs IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK1VQREFURSB0ZW1wb3Jh bF9ybmcgU0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxNi0wMS0wMScsICcyMDE2LTAyLTAx JykgV0hFUkUgaWQgPSAnWzUsNV0nOworLS0gYSBQSyB1cGRhdGUgdGhhdCBzdWNjZWVkcyBl dmVuIHRob3VnaCB0aGUgbnVtZXJpYyBpZCBpcyByZWZlcmVuY2VkIGJlY2F1c2UgdGhlIHJh bmdlIGlzbid0OgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVd JzsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3Ju ZyBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScp KTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzMsM10nLCB0 c3JhbmdlKCcyMDE4LTAxLTA1JywgJzIwMTgtMDEtMTAnKSwgJ1s1LDVdJyk7CitVUERBVEUg dGVtcG9yYWxfcm5nIFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDItMDEnLCAnMjAx Ni0wMy0wMScpCitXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgn MjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJyk7CistLSBhIFBLIHVwZGF0ZSB0aGF0IGZhaWxz IGJlY2F1c2UgYm90aCBhcmUgcmVmZXJlbmNlZDoKK1VQREFURSB0ZW1wb3JhbF9ybmcgU0VU IHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxNi0wMS0wMScsICcyMDE2LTAyLTAxJykKK1dIRVJF IGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIw MTgtMDItMDEnKTsKK0VSUk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAidGVtcG9y YWxfcm5nIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9ma19y bmcycm5nX2ZrIiBvbiB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIKK0RFVEFJTDogIEtl eSAoaWQsIHZhbGlkX2F0KT0oWzUsNiksIFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4Iiwi VGh1IEZlYiAwMSAwMDowMDowMCAyMDE4IikpIGlzIHN0aWxsIHJlZmVyZW5jZWQgZnJvbSB0 YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIuCistLSB0aGVuIGRlbGV0ZSB0aGUgb2JqZWN0 aW5nIEZLIHJlY29yZCBhbmQgdGhlIHNhbWUgUEsgdXBkYXRlIHN1Y2NlZWRzOgorREVMRVRF IEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMywzXSc7CitVUERBVEUg dGVtcG9yYWxfcm5nIFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAx Ni0wMi0wMScpCitXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgn MjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CistLSBjbGVhbiB1cDoKK0RFTEVURSBGUk9N IHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgcGFyZW50X2lkID0gJ1s1LDVdJzsKK0RFTEVU RSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XSc7CistLQorLS0gdGVzdCBG SyBwYXJlbnQgdXBkYXRlcyBSRVNUUklDVAorLS0KK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2Zr X3JuZzJybmcKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mazsKK0FM VEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3Jh bF9ma19ybmcycm5nX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlk X2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nCisJT04gREVMRVRFIFJFU1RSSUNUOwor LS0gYSBQSyB1cGRhdGUgdGhhdCBzdWNjZWVkcyBiZWNhdXNlIHRoZSBudW1lcmljIGlkIGlz bid0IHJlZmVyZW5jZWQ6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzUs NV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSk7CitVUERBVEUgdGVt cG9yYWxfcm5nIFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0w Mi0wMScpIFdIRVJFIGlkID0gJ1s1LDVdJzsKKy0tIGEgUEsgdXBkYXRlIHRoYXQgc3VjY2Vl ZHMgZXZlbiB0aG91Z2ggdGhlIG51bWVyaWMgaWQgaXMgcmVmZXJlbmNlZCBiZWNhdXNlIHRo ZSByYW5nZSBpc24ndDoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdb NSw1XSc7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzUsNV0nLCB0c3Jh bmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9ybmcgVkFMVUVTICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMt MDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1szLDNd JywgdHNyYW5nZSgnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEwJyksICdbNSw1XScpOworVVBE QVRFIHRlbXBvcmFsX3JuZyBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAyLTAxJywg JzIwMTYtMDMtMDEnKQorV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFu Z2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpOworLS0gYSBQSyB1cGRhdGUgdGhhdCBm YWlscyBiZWNhdXNlIGJvdGggYXJlIHJlZmVyZW5jZWQ6CitVUERBVEUgdGVtcG9yYWxfcm5n IFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0wMScpCitX SEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDE4LTAyLTAxJyk7CitFUlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRl bXBvcmFsX3JuZyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxf Zmtfcm5nMnJuZ19mayIgb24gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmciCitERVRBSUw6 ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYpLCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAx OCIsIlRodSBGZWIgMDEgMDA6MDA6MDAgMjAxOCIpKSBpcyBzdGlsbCByZWZlcmVuY2VkIGZy b20gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmciLgorLS0gdGhlbiBkZWxldGUgdGhlIG9i amVjdGluZyBGSyByZWNvcmQgYW5kIHRoZSBzYW1lIFBLIHVwZGF0ZSBzdWNjZWVkczoKK0RF TEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzMsM10nOworVVBE QVRFIHRlbXBvcmFsX3JuZyBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAxLTAxJywg JzIwMTYtMDItMDEnKQorV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFu Z2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworLS0gY2xlYW4gdXA6CitERUxFVEUg RlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIHBhcmVudF9pZCA9ICdbNSw1XSc7CitE RUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nOworLS0KKy0tIHRl c3QgRksgcGFyZW50IGRlbGV0ZXMgTk8gQUNUSU9OCistLQorQUxURVIgVEFCTEUgdGVtcG9y YWxfZmtfcm5nMnJuZworCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2Zr OworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCUFERCBDT05TVFJBSU5UIHRl bXBvcmFsX2ZrX3JuZzJybmdfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0Qg dmFsaWRfYXQpCisJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmc7CistLSBhIFBLIGRlbGV0ZSB0 aGF0IHN1Y2NlZWRzIGJlY2F1c2UgdGhlIG51bWVyaWMgaWQgaXNuJ3QgcmVmZXJlbmNlZDoK K0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBX SEVSRSBpZCA9ICdbNSw1XSc7CistLSBhIFBLIGRlbGV0ZSB0aGF0IHN1Y2NlZWRzIGV2ZW4g dGhvdWdoIHRoZSBudW1lcmljIGlkIGlzIHJlZmVyZW5jZWQgYmVjYXVzZSB0aGUgcmFuZ2Ug aXNuJ3Q6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzUsNV0nLCB0c3Jh bmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9ybmcgVkFMVUVTICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMt MDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1szLDNd JywgdHNyYW5nZSgnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEwJyksICdbNSw1XScpOworREVM RVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQg PSB0c3JhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKTsKKy0tIGEgUEsgZGVsZXRl IHRoYXQgZmFpbHMgYmVjYXVzZSBib3RoIGFyZSByZWZlcmVuY2VkOgorREVMRVRFIEZST00g dGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3Jhbmdl KCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKK0VSUk9SOiAgdXBkYXRlIG9yIGRlbGV0 ZSBvbiB0YWJsZSAidGVtcG9yYWxfcm5nIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJh aW50ICJ0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIiBvbiB0YWJsZSAidGVtcG9yYWxfZmtfcm5n MnJuZyIKK0RFVEFJTDogIEtleSAoaWQsIHZhbGlkX2F0KT0oWzUsNiksIFsiTW9uIEphbiAw MSAwMDowMDowMCAyMDE4IiwiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4IikpIGlzIHN0aWxs IHJlZmVyZW5jZWQgZnJvbSB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIuCistLSB0aGVu IGRlbGV0ZSB0aGUgb2JqZWN0aW5nIEZLIHJlY29yZCBhbmQgdGhlIHNhbWUgUEsgZGVsZXRl IHN1Y2NlZWRzOgorREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9 ICdbMywzXSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0n IEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOwor LS0KKy0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgUkVTVFJJQ1QKKy0tCitBTFRFUiBUQUJM RSB0ZW1wb3JhbF9ma19ybmcycm5nCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3Ju ZzJybmdfZms7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJQUREIENPTlNU UkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQs IFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZworCU9OIERFTEVU RSBSRVNUUklDVDsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNSw1XScs IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK0RFTEVURSBGUk9NIHRl bXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBhIFBLIGRlbGV0ZSB0aGF0IHN1 Y2NlZWRzIGV2ZW4gdGhvdWdoIHRoZSBudW1lcmljIGlkIGlzIHJlZmVyZW5jZWQgYmVjYXVz ZSB0aGUgcmFuZ2UgaXNuJ3Q6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgn WzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSk7CitJTlNFUlQg SU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAyLTAx JywgJzIwMTgtMDMtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZB TFVFUyAoJ1szLDNdJywgdHNyYW5nZSgnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEwJyksICdb NSw1XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBB TkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKTsKKy0t IGEgUEsgZGVsZXRlIHRoYXQgZmFpbHMgYmVjYXVzZSBib3RoIGFyZSByZWZlcmVuY2VkOgor REVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRf YXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKK0VSUk9SOiAgdXBk YXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAidGVtcG9yYWxfcm5nIiB2aW9sYXRlcyBmb3JlaWdu IGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIiBvbiB0YWJsZSAidGVt cG9yYWxfZmtfcm5nMnJuZyIKK0RFVEFJTDogIEtleSAoaWQsIHZhbGlkX2F0KT0oWzUsNiks IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4 IikpIGlzIHN0aWxsIHJlZmVyZW5jZWQgZnJvbSB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJu ZyIuCistLSB0aGVuIGRlbGV0ZSB0aGUgb2JqZWN0aW5nIEZLIHJlY29yZCBhbmQgdGhlIHNh bWUgUEsgZGVsZXRlIHN1Y2NlZWRzOgorREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJu ZyBXSEVSRSBpZCA9ICdbMywzXSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUg aWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAx OC0wMi0wMScpOworLS0KKy0tIHRlc3QgT04gVVBEQVRFL0RFTEVURSBvcHRpb25zCistLQor LS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBDQVNDQURFCitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9ybmcgVkFMVUVTICgnWzYsNl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEt MDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1s0LDRd JywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbNiw2XScpOworQUxU RVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCURST1AgQ09OU1RSQUlOVCB0ZW1wb3Jh bF9ma19ybmcycm5nX2ZrLAorCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdf ZmsKKwkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZF UkVOQ0VTIHRlbXBvcmFsX3JuZworCQlPTiBERUxFVEUgQ0FTQ0FERSBPTiBVUERBVEUgQ0FT Q0FERTsKK1VQREFURSB0ZW1wb3JhbF9ybmcgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJP TSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFNFVCBpZCA9ICdbNyw3XScgV0hFUkUg aWQgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJF IGlkID0gJ1s0LDRdJzsKKyAgaWQgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRf YXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLQorIFs0LDUpIHwgWyJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiLCJXZWQg SmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8IFs3LDgpCisgWzQsNSkgfCBbIk1vbiBKYW4gMDEg MDA6MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgWzYsNykKKyBb NCw1KSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDow MCAyMDIxIikgfCBbNiw3KQorKDMgcm93cykKKworVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQg aWQgPSAnWzcsN10nIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9y YWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbNCw0XSc7CisgIGlkICAgfCAgICAgICAgICAg ICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFyZW50 X2lkIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbNCw1KSB8IFsiVHVlIEphbiAwMSAw MDowMDowMCAyMDE5IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCBbNyw4KQorIFs0 LDUpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUdWUgSmFuIDAxIDAwOjAwOjAw IDIwMTkiKSB8IFs3LDgpCisgWzQsNSkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIs IkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgWzcsOCkKKygzIHJvd3MpCisKK0lOU0VS VCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbMTUsMTVdJywgdHNyYW5nZSgnMjAxOC0w MS0wMScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVF UyAoJ1sxNSwxNV0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1sxMCwxMF0nLCB0c3Jh bmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1sxNSwxNV0nKTsKK1VQREFURSB0 ZW1wb3JhbF9ybmcgU0VUIGlkID0gJ1sxNiwxNl0nIFdIRVJFIGlkID0gJ1sxNSwxNV0nIEFO RCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00g dGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAsMTBdJzsKKyAgIGlkICAgIHwg ICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAg ICB8IHBhcmVudF9pZCAKKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMTAsMTEpIHwg WyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAi KSB8IFsxNiwxNykKKyBbMTAsMTEpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJG cmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFsxNSwxNikKKygyIHJvd3MpCisKKy0tIHRl c3QgRksgcGFyZW50IGRlbGV0ZXMgQ0FTQ0FERQorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5n IFZBTFVFUyAoJ1s4LDhdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykp OworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbNSw1XScsIHRz cmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzgsOF0nKTsKK0RFTEVURSBG Uk9NIHRlbXBvcmFsX3JuZyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAx LTAxJyBUTyAnMjAyMC0wMS0wMScgV0hFUkUgaWQgPSAnWzgsOF0nOworU0VMRUNUICogRlJP TSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKKyAgaWQgICB8ICAg ICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAg fCBwYXJlbnRfaWQgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFs1LDYpIHwgWyJNb24g SmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiKSB8IFs4 LDkpCisgWzUsNikgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEg MDA6MDA6MDAgMjAyMSIpIHwgWzgsOSkKKygyIHJvd3MpCisKK0RFTEVURSBGUk9NIHRlbXBv cmFsX3JuZyBXSEVSRSBpZCA9ICdbOCw4XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2Zr X3JuZzJybmcgV0hFUkUgaWQgPSAnWzUsNV0nOworIGlkIHwgdmFsaWRfYXQgfCBwYXJlbnRf aWQgCistLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKygwIHJvd3MpCisKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbMTcsMTddJywgdHNyYW5nZSgnMjAxOC0wMS0w MScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAo J1sxNywxN10nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNF UlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1sxMSwxMV0nLCB0c3Jhbmdl KCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1sxNywxN10nKTsKK0RFTEVURSBGUk9N IHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbMTcsMTddJyBBTkQgdmFsaWRfYXQgQD4gJzIw MTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJy bmcgV0hFUkUgaWQgPSAnWzExLDExXSc7CisgICBpZCAgICB8ICAgICAgICAgICAgICAgICAg ICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQgCist LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzExLDEyKSB8IFsiV2VkIEphbiAwMSAwMDow MDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBbMTcsMTgpCisoMSBy b3cpCisKKy0tIHRlc3QgRksgcGFyZW50IHVwZGF0ZXMgU0VUIE5VTEwKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbOSw5XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAn MjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVT ICgnWzYsNl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s5LDld Jyk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJRFJPUCBDT05TVFJBSU5U IHRlbXBvcmFsX2ZrX3JuZzJybmdfZmssCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtf cm5nMnJuZ19maworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQp CisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nCisJCU9OIERFTEVURSBTRVQgTlVMTCBPTiBV UERBVEUgU0VUIE5VTEw7CitVUERBVEUgdGVtcG9yYWxfcm5nIEZPUiBQT1JUSU9OIE9GIHZh bGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBTRVQgaWQgPSAnWzEw LDEwXScgV0hFUkUgaWQgPSAnWzksOV0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19y bmcycm5nIFdIRVJFIGlkID0gJ1s2LDZdJzsKKyAgaWQgICB8ICAgICAgICAgICAgICAgICAg ICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQgCist LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFs2LDcpIHwgWyJUdWUgSmFuIDAxIDAwOjAwOjAw IDIwMTkiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8IAorIFs2LDcpIHwgWyJNb24g SmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiKSB8IFs5 LDEwKQorIFs2LDcpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAx IDAwOjAwOjAwIDIwMjEiKSB8IFs5LDEwKQorKDMgcm93cykKKworVVBEQVRFIHRlbXBvcmFs X3JuZyBTRVQgaWQgPSAnWzEwLDEwXScgV0hFUkUgaWQgPSAnWzksOV0nOworU0VMRUNUICog RlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1s2LDZdJzsKKyAgaWQgICB8 ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAg ICAgfCBwYXJlbnRfaWQgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFs2LDcpIHwgWyJU dWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8 IAorIFs2LDcpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUdWUgSmFuIDAxIDAw OjAwOjAwIDIwMTkiKSB8IAorIFs2LDcpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAi LCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IAorKDMgcm93cykKKworSU5TRVJUIElO VE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1sxOCwxOF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAx JywgJzIwMjAtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgn WzE4LDE4XScsIHRzcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VS VCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzEyLDEyXScsIHRzcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzE4LDE4XScpOworVVBEQVRFIHRlbXBv cmFsX3JuZyBTRVQgaWQgPSAnWzE5LDE5XScgV0hFUkUgaWQgPSAnWzE4LDE4XScgQU5EIHZh bGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSB0ZW1w b3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1sxMiwxMl0nOworICAgaWQgICAgfCAgICAg ICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwg cGFyZW50X2lkIAorLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFsxMiwxMykgfCBbIk1v biBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwg CisgWzEyLDEzKSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAw MDowMDowMCAyMDIxIikgfCBbMTgsMTkpCisoMiByb3dzKQorCistLSB0ZXN0IEZLIHBhcmVu dCBkZWxldGVzIFNFVCBOVUxMCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgn WzExLDExXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VS VCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzcsN10nLCB0c3JhbmdlKCcy MDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1sxMSwxMV0nKTsKK0RFTEVURSBGUk9NIHRl bXBvcmFsX3JuZyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBU TyAnMjAyMC0wMS0wMScgV0hFUkUgaWQgPSAnWzExLDExXSc7CitTRUxFQ1QgKiBGUk9NIHRl bXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzcsN10nOworICBpZCAgIHwgICAgICAg ICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBh cmVudF9pZCAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzcsOCkgfCBbIlR1ZSBKYW4g MDEgMDA6MDA6MDAgMjAxOSIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwgCisgWzcs OCkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAg MjAxOSIpIHwgWzExLDEyKQorIFs3LDgpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAi LCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFsxMSwxMikKKygzIHJvd3MpCisKK0RF TEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbMTEsMTFdJzsKK1NFTEVDVCAq IEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbNyw3XSc7CisgIGlkICAg fCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAg ICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbNyw4KSB8IFsi VHVlIEphbiAwMSAwMDowMDowMCAyMDE5IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikg fCAKKyBbNyw4KSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVHVlIEphbiAwMSAw MDowMDowMCAyMDE5IikgfCAKKyBbNyw4KSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIw IiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCAKKygzIHJvd3MpCisKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbMjAsMjBdJywgdHNyYW5nZSgnMjAxOC0wMS0w MScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAo J1syMCwyMF0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNF UlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1sxMywxM10nLCB0c3Jhbmdl KCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1syMCwyMF0nKTsKK0RFTEVURSBGUk9N IHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbMjAsMjBdJyBBTkQgdmFsaWRfYXQgQD4gJzIw MTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJy bmcgV0hFUkUgaWQgPSAnWzEzLDEzXSc7CisgICBpZCAgICB8ICAgICAgICAgICAgICAgICAg ICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQgCist LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzEzLDE0KSB8IFsiTW9uIEphbiAwMSAwMDow MDowMCAyMDE4IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCAKKyBbMTMsMTQpIHwg WyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEi KSB8IFsyMCwyMSkKKygyIHJvd3MpCisKKy0tIHRlc3QgRksgcGFyZW50IHVwZGF0ZXMgU0VU IERFRkFVTFQKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbLTEsLTFdJywg dHNyYW5nZShudWxsLCBudWxsKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVT ICgnWzEyLDEyXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzgsOF0nLCB0c3Jhbmdl KCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1sxMiwxMl0nKTsKK0FMVEVSIFRBQkxF IHRlbXBvcmFsX2ZrX3JuZzJybmcKKyAgQUxURVIgQ09MVU1OIHBhcmVudF9pZCBTRVQgREVG QVVMVCAnWy0xLC0xXScsCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdf ZmssCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maworCQlGT1JFSUdO IEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9y YWxfcm5nCisJCU9OIERFTEVURSBTRVQgREVGQVVMVCBPTiBVUERBVEUgU0VUIERFRkFVTFQ7 CitVUERBVEUgdGVtcG9yYWxfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIw MTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBTRVQgaWQgPSAnWzEzLDEzXScgV0hFUkUgaWQg PSAnWzEyLDEyXSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUg aWQgPSAnWzgsOF0nOworICBpZCAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9h dCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tCisgWzgsOSkgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBK YW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwgWy0xLDApCisgWzgsOSkgfCBbIk1vbiBKYW4gMDEg MDA6MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgWzEyLDEzKQor IFs4LDkpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAw OjAwIDIwMjEiKSB8IFsxMiwxMykKKygzIHJvd3MpCisKK1VQREFURSB0ZW1wb3JhbF9ybmcg U0VUIGlkID0gJ1sxMywxM10nIFdIRVJFIGlkID0gJ1sxMiwxMl0nOworU0VMRUNUICogRlJP TSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1s4LDhdJzsKKyAgaWQgICB8ICAg ICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAg fCBwYXJlbnRfaWQgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFs4LDkpIHwgWyJUdWUg SmFuIDAxIDAwOjAwOjAwIDIwMTkiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8IFst MSwwKQorIFs4LDkpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUdWUgSmFuIDAx IDAwOjAwOjAwIDIwMTkiKSB8IFstMSwwKQorIFs4LDkpIHwgWyJXZWQgSmFuIDAxIDAwOjAw OjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFstMSwwKQorKDMgcm93 cykKKworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1syMiwyMl0nLCB0c3Jh bmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9ybmcgVkFMVUVTICgnWzIyLDIyXScsIHRzcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0w MS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzE0 LDE0XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzIyLDIyXScp OworVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgaWQgPSAnWzIzLDIzXScgV0hFUkUgaWQgPSAn WzIyLDIyXScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VM RUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1sxNCwxNF0nOwor ICAgaWQgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAg ICAgICAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQor IFsxNCwxNSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIldlZCBKYW4gMDEgMDA6 MDA6MDAgMjAyMCIpIHwgWy0xLDApCisgWzE0LDE1KSB8IFsiV2VkIEphbiAwMSAwMDowMDow MCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBbMjIsMjMpCisoMiByb3dz KQorCistLSB0ZXN0IEZLIHBhcmVudCBkZWxldGVzIFNFVCBERUZBVUxUCitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzE0LDE0XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEn LCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFM VUVTICgnWzksOV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1sx NCwxNF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBGT1IgUE9SVElPTiBPRiB2YWxp ZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgV0hFUkUgaWQgPSAnWzE0 LDE0XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAn WzksOV0nOworICAgaWQgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAg ICAgICAgICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0KKyBbOSwxMCkgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBKYW4g MDEgMDA6MDA6MDAgMjAyMCIpIHwgWy0xLDApCisgWzksMTApIHwgWyJNb24gSmFuIDAxIDAw OjAwOjAwIDIwMTgiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiKSB8IFsxNCwxNSkKKyBb OSwxMCkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6 MDAgMjAyMSIpIHwgWzE0LDE1KQorKDMgcm93cykKKworREVMRVRFIEZST00gdGVtcG9yYWxf cm5nIFdIRVJFIGlkID0gJ1sxNCwxNF0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19y bmcycm5nIFdIRVJFIGlkID0gJ1s5LDldJzsKKyAgIGlkICAgfCAgICAgICAgICAgICAgICAg ICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lkIAor LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzksMTApIHwgWyJUdWUgSmFuIDAxIDAwOjAw OjAwIDIwMTkiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8IFstMSwwKQorIFs5LDEw KSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVHVlIEphbiAwMSAwMDowMDowMCAy MDE5IikgfCBbLTEsMCkKKyBbOSwxMCkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIs IkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgWy0xLDApCisoMyByb3dzKQorCitJTlNF UlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzI0LDI0XScsIHRzcmFuZ2UoJzIwMTgt MDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxV RVMgKCdbMjQsMjRdJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOwor SU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMTUsMTVdJywgdHNy YW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMjQsMjRdJyk7CitERUxFVEUg RlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzI0LDI0XScgQU5EIHZhbGlkX2F0IEA+ ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19y bmcycm5nIFdIRVJFIGlkID0gJ1sxNSwxNV0nOworICAgaWQgICAgfCAgICAgICAgICAgICAg ICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lk IAorLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFsxNSwxNikgfCBbIk1vbiBKYW4gMDEg MDA6MDA6MDAgMjAxOCIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwgWy0xLDApCisg WzE1LDE2KSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDow MDowMCAyMDIxIikgfCBbMjQsMjUpCisoMiByb3dzKQorCistLQorLS0gdGVzdCBGT1JFSUdO IEtFWSwgcmFuZ2UgcmVmZXJlbmNlcyBQRVJJT0QKKy0tCitERUxFVEUgRlJPTSB0ZW1wb3Jh bF9wZXI7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wZXIgVkFMVUVTICgnWzEsMV0nLCAnMjAx OC0wMS0wMicsICcyMDE4LTAyLTAzJyk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wZXIgVkFM VUVTICgnWzEsMV0nLCAnMjAxOC0wMy0wMycsICcyMDE4LTA0LTA0Jyk7CitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9wZXIgVkFMVUVTICgnWzIsMl0nLCAnMjAxOC0wMS0wMScsICcyMDE4LTAx LTA1Jyk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wZXIgVkFMVUVTICgnWzMsM10nLCAnMjAx OC0wMS0wMScsIE5VTEwpOworLS0gQ2FuJ3QgY3JlYXRlIGEgRksgd2l0aCBhIG1pc21hdGNo ZWQgcmFuZ2UgdHlwZQorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJwZXIgKAorCWlk IGludDRyYW5nZSwKKwl2YWxpZF9hdCBpbnQ0cmFuZ2UsCisJcGFyZW50X2lkIGludDRyYW5n ZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJwZXJfcGsyIFBSSU1BUlkgS0VZIChp ZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9m a19ybmcycGVyX2ZrMiBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQp CisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcGVyIChpZCwgUEVSSU9EIHZhbGlkX2F0KQorKTsK K0VSUk9SOiAgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfZmtfcm5nMnBlcl9m azIiIGNhbm5vdCBiZSBpbXBsZW1lbnRlZAorREVUQUlMOiAgS2V5IGNvbHVtbnMgInZhbGlk X2F0IiBhbmQgInZhbGlkX2F0IiBhcmUgb2YgaW5jb21wYXRpYmxlIHR5cGVzOiBpbnQ0cmFu Z2UgYW5kIHRzcmFuZ2UuCistLSB3aXRoIGluZmVycmVkIFBLIG9uIHRoZSByZWZlcmVuY2Vk IHRhYmxlOgorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJwZXIgKAorCWlkIGludDRy YW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09O U1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycGVyX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRf YXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycGVy X2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJF TkNFUyB0ZW1wb3JhbF9wZXIKKyk7CitEUk9QIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJwZXI7 CistLSBzaG91bGQgZmFpbCBiZWNhdXNlIG9mIGR1cGxpY2F0ZSByZWZlcmVuY2VkIGNvbHVt bnM6CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnBlciAoCisJaWQgaW50NHJhbmdl LAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJB SU5UIHRlbXBvcmFsX2ZrX3JuZzJwZXJfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBX SVRIT1VUIE9WRVJMQVBTKSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJwZXJfZmsg Rk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHBhcmVudF9pZCkKKwkJUkVGRVJFTkNF UyB0ZW1wb3JhbF9wZXIgKGlkLCBQRVJJT0QgaWQpCispOworRVJST1I6ICBmb3JlaWduIGtl eSByZWZlcmVuY2VkLWNvbHVtbnMgbGlzdCBtdXN0IG5vdCBjb250YWluIGR1cGxpY2F0ZXMK Ky0tCistLSB0ZXN0IEFMVEVSIFRBQkxFIEFERCBDT05TVFJBSU5UCistLQorQ1JFQVRFIFRB QkxFIHRlbXBvcmFsX2ZrX3JuZzJwZXIgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0 c3JhbmdlLAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9m a19ybmcycGVyX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQ UykKKyk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycGVyCisJQUREIENPTlNUUkFJ TlQgdGVtcG9yYWxfZmtfcm5nMnBlcl9maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBF UklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3BlciAoaWQsIFBFUklPRCB2 YWxpZF9hdCk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycGVyCisJRFJPUCBDT05T VFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJwZXJfZms7CistLSB3aXRoIGluZmVycmVkIFBLIG9u IHRoZSByZWZlcmVuY2VkIHRhYmxlOgorQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnBl cgorCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJwZXJfZmsKKwlGT1JFSUdOIEtF WSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNFUyB0ZW1wb3JhbF9w ZXI7CistLSBzaG91bGQgZmFpbCBiZWNhdXNlIG9mIGR1cGxpY2F0ZSByZWZlcmVuY2VkIGNv bHVtbnM6CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycGVyCisJQUREIENPTlNUUkFJ TlQgdGVtcG9yYWxfZmtfcm5nMnBlcl9mazIKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQ RVJJT0QgcGFyZW50X2lkKQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfcGVyIChpZCwgUEVSSU9E IGlkKTsKK0VSUk9SOiAgZm9yZWlnbiBrZXkgcmVmZXJlbmNlZC1jb2x1bW5zIGxpc3QgbXVz dCBub3QgY29udGFpbiBkdXBsaWNhdGVzCistLQorLS0gdGVzdCB3aXRoIHJvd3MgYWxyZWFk eQorLS0KK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJwZXI7CitBTFRFUiBUQUJMRSB0 ZW1wb3JhbF9ma19ybmcycGVyCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJw ZXJfZms7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycGVyIFZBTFVFUyAoJ1sxLDFd JywgdHNyYW5nZSgnMjAxOC0wMS0wMicsICcyMDE4LTAyLTAxJyksICdbMSwxXScpOworQUxU RVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnBlcgorCUFERCBDT05TVFJBSU5UIHRlbXBvcmFs X2ZrX3JuZzJwZXJfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRf YXQpCisJUkVGRVJFTkNFUyB0ZW1wb3JhbF9wZXI7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9m a19ybmcycGVyCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJwZXJfZms7CitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycGVyIFZBTFVFUyAoJ1syLDJdJywgdHNyYW5n ZSgnMjAxOC0wMS0wMicsICcyMDE4LTA0LTAxJyksICdbMSwxXScpOworLS0gc2hvdWxkIGZh aWw6CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycGVyCisJQUREIENPTlNUUkFJTlQg dGVtcG9yYWxfZmtfcm5nMnBlcl9maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklP RCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3BlcjsKK0VSUk9SOiAgaW5zZXJ0 IG9yIHVwZGF0ZSBvbiB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnBlciIgdmlvbGF0ZXMgZm9y ZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfZmtfcm5nMnBlcl9mayIKK0RFVEFJTDog IEtleSAocGFyZW50X2lkLCB2YWxpZF9hdCk9KFsxLDIpLCBbIlR1ZSBKYW4gMDIgMDA6MDA6 MDAgMjAxOCIsIlN1biBBcHIgMDEgMDA6MDA6MDAgMjAxOCIpKSBpcyBub3QgcHJlc2VudCBp biB0YWJsZSAidGVtcG9yYWxfcGVyIi4KKy0tIG9rYXkgYWdhaW46CitERUxFVEUgRlJPTSB0 ZW1wb3JhbF9ma19ybmcycGVyOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnBlcgor CUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJwZXJfZmsKKwlGT1JFSUdOIEtFWSAo cGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNFUyB0ZW1wb3JhbF9wZXI7 CistLQorLS0gdGVzdCBwZ19nZXRfY29uc3RyYWludGRlZgorLS0KK1NFTEVDVCBwZ19nZXRf Y29uc3RyYWludGRlZihvaWQpIEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25uYW1lID0g J3RlbXBvcmFsX2ZrX3JuZzJwZXJfZmsnOworICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcGdfZ2V0X2NvbnN0cmFpbnRkZWYgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBGT1JFSUdOIEtF WSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpIFJFRkVSRU5DRVMgdGVtcG9yYWxfcGVy KGlkLCBQRVJJT0QgdmFsaWRfYXQpCisoMSByb3cpCisKKy0tCistLSB0ZXN0IEZLIGNoaWxk IGluc2VydHMKKy0tCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycGVyIFZBTFVFUyAo J1sxLDFdJywgdHNyYW5nZSgnMjAxOC0wMS0wMicsICcyMDE4LTAyLTAxJyksICdbMSwxXScp OworLS0gc2hvdWxkIGZhaWw6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycGVyIFZB TFVFUyAoJ1syLDJdJywgdHNyYW5nZSgnMjAxOC0wMS0wMicsICcyMDE4LTA0LTAxJyksICdb MSwxXScpOworRVJST1I6ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxlICJ0ZW1wb3JhbF9m a19ybmcycGVyIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9m a19ybmcycGVyX2ZrIgorREVUQUlMOiAgS2V5IChwYXJlbnRfaWQsIHZhbGlkX2F0KT0oWzEs MiksIFsiVHVlIEphbiAwMiAwMDowMDowMCAyMDE4IiwiU3VuIEFwciAwMSAwMDowMDowMCAy MDE4IikpIGlzIG5vdCBwcmVzZW50IGluIHRhYmxlICJ0ZW1wb3JhbF9wZXIiLgorLS0gbm93 IGl0IHNob3VsZCB3b3JrOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcGVyIFZBTFVFUyAoJ1sx LDFdJywgJzIwMTgtMDItMDMnLCAnMjAxOC0wMy0wMycpOworSU5TRVJUIElOVE8gdGVtcG9y YWxfZmtfcm5nMnBlciBWQUxVRVMgKCdbMiwyXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDInLCAn MjAxOC0wNC0wMScpLCAnWzEsMV0nKTsKKy0tCistLSB0ZXN0IEZLIGNoaWxkIHVwZGF0ZXMK Ky0tCitVUERBVEUgdGVtcG9yYWxfZmtfcm5nMnBlciBTRVQgdmFsaWRfYXQgPSB0c3Jhbmdl KCcyMDE4LTAxLTAyJywgJzIwMTgtMDMtMDEnKSBXSEVSRSBpZCA9ICdbMSwxXSc7CistLSBz aG91bGQgZmFpbDoKK1VQREFURSB0ZW1wb3JhbF9ma19ybmcycGVyIFNFVCB2YWxpZF9hdCA9 IHRzcmFuZ2UoJzIwMTgtMDEtMDInLCAnMjAxOC0wNS0wMScpIFdIRVJFIGlkID0gJ1sxLDFd JzsKK0VSUk9SOiAgaW5zZXJ0IG9yIHVwZGF0ZSBvbiB0YWJsZSAidGVtcG9yYWxfZmtfcm5n MnBlciIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfZmtfcm5n MnBlcl9mayIKK0RFVEFJTDogIEtleSAocGFyZW50X2lkLCB2YWxpZF9hdCk9KFsxLDIpLCBb IlR1ZSBKYW4gMDIgMDA6MDA6MDAgMjAxOCIsIlR1ZSBNYXkgMDEgMDA6MDA6MDAgMjAxOCIp KSBpcyBub3QgcHJlc2VudCBpbiB0YWJsZSAidGVtcG9yYWxfcGVyIi4KK1VQREFURSB0ZW1w b3JhbF9ma19ybmcycGVyIFNFVCBwYXJlbnRfaWQgPSAnWzgsOF0nIFdIRVJFIGlkID0gJ1sx LDFdJzsKK0VSUk9SOiAgaW5zZXJ0IG9yIHVwZGF0ZSBvbiB0YWJsZSAidGVtcG9yYWxfZmtf cm5nMnBlciIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfZmtf cm5nMnBlcl9mayIKK0RFVEFJTDogIEtleSAocGFyZW50X2lkLCB2YWxpZF9hdCk9KFs4LDkp LCBbIlR1ZSBKYW4gMDIgMDA6MDA6MDAgMjAxOCIsIlRodSBNYXIgMDEgMDA6MDA6MDAgMjAx OCIpKSBpcyBub3QgcHJlc2VudCBpbiB0YWJsZSAidGVtcG9yYWxfcGVyIi4KKy0tCistLSB0 ZXN0IEZLIHBhcmVudCB1cGRhdGVzIE5PIEFDVElPTgorLS0KKy0tIGEgUEsgdXBkYXRlIHRo YXQgc3VjY2VlZHMgYmVjYXVzZSB0aGUgbnVtZXJpYyBpZCBpc24ndCByZWZlcmVuY2VkOgor SU5TRVJUIElOVE8gdGVtcG9yYWxfcGVyIFZBTFVFUyAoJ1s1LDVdJywgJzIwMTgtMDEtMDEn LCAnMjAxOC0wMi0wMScpOworVVBEQVRFIHRlbXBvcmFsX3BlciBTRVQgdmFsaWRfZnJvbSA9 ICcyMDE2LTAxLTAxJywgdmFsaWRfdGlsID0gJzIwMTYtMDItMDEnIFdIRVJFIGlkID0gJ1s1 LDVdJzsKKy0tIGEgUEsgdXBkYXRlIHRoYXQgc3VjY2VlZHMgZXZlbiB0aG91Z2ggdGhlIG51 bWVyaWMgaWQgaXMgcmVmZXJlbmNlZCBiZWNhdXNlIHRoZSByYW5nZSBpc24ndDoKK0RFTEVU RSBGUk9NIHRlbXBvcmFsX3BlciBXSEVSRSBpZCA9ICdbNSw1XSc7CitJTlNFUlQgSU5UTyB0 ZW1wb3JhbF9wZXIgVkFMVUVTICgnWzUsNV0nLCAnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAx Jyk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wZXIgVkFMVUVTICgnWzUsNV0nLCAnMjAxOC0w Mi0wMScsICcyMDE4LTAzLTAxJyk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycGVy IFZBTFVFUyAoJ1szLDNdJywgdHNyYW5nZSgnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEwJyks ICdbNSw1XScpOworVVBEQVRFIHRlbXBvcmFsX3BlciBTRVQgdmFsaWRfZnJvbSA9ICcyMDE2 LTAyLTAxJywgdmFsaWRfdGlsID0gJzIwMTYtMDMtMDEnCitXSEVSRSBpZCA9ICdbNSw1XScg QU5EIHZhbGlkX2Zyb20gPSAnMjAxOC0wMi0wMScgQU5EIHZhbGlkX3RpbCA9ICcyMDE4LTAz LTAxJzsKKy0tIGEgUEsgdXBkYXRlIHRoYXQgZmFpbHMgYmVjYXVzZSBib3RoIGFyZSByZWZl cmVuY2VkOgorVVBEQVRFIHRlbXBvcmFsX3BlciBTRVQgdmFsaWRfZnJvbSA9ICcyMDE2LTAx LTAxJywgdmFsaWRfdGlsID0gJzIwMTYtMDItMDEnCitXSEVSRSBpZCA9ICdbNSw1XScgQU5E IHZhbGlkX2Zyb20gPSAnMjAxOC0wMS0wMScgQU5EIHZhbGlkX3RpbCA9ICcyMDE4LTAyLTAx JzsKK0VSUk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAidGVtcG9yYWxfcGVyIiB2 aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9ma19ybmcycGVyX2Zr IiBvbiB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnBlciIKK0RFVEFJTDogIEtleSAoaWQsIHZh bGlkX2Zyb20sIHZhbGlkX3RpbCk9KFs1LDYpLCBNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgs IFRodSBGZWIgMDEgMDA6MDA6MDAgMjAxOCkgaXMgc3RpbGwgcmVmZXJlbmNlZCBmcm9tIHRh YmxlICJ0ZW1wb3JhbF9ma19ybmcycGVyIi4KKy0tIHRoZW4gZGVsZXRlIHRoZSBvYmplY3Rp bmcgRksgcmVjb3JkIGFuZCB0aGUgc2FtZSBQSyB1cGRhdGUgc3VjY2VlZHM6CitERUxFVEUg RlJPTSB0ZW1wb3JhbF9ma19ybmcycGVyIFdIRVJFIGlkID0gJ1szLDNdJzsKK1VQREFURSB0 ZW1wb3JhbF9wZXIgU0VUIHZhbGlkX2Zyb20gPSAnMjAxNi0wMS0wMScsIHZhbGlkX3RpbCA9 ICcyMDE2LTAyLTAxJworV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9mcm9tID0gJzIw MTgtMDEtMDEnIEFORCB2YWxpZF90aWwgPSAnMjAxOC0wMi0wMSc7CistLSBjbGVhbiB1cDoK K0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJwZXIgV0hFUkUgcGFyZW50X2lkID0gJ1s1 LDVdJzsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3BlciBXSEVSRSBpZCA9ICdbNSw1XSc7Cist LQorLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBSRVNUUklDVAorLS0KK0FMVEVSIFRBQkxF IHRlbXBvcmFsX2ZrX3JuZzJwZXIKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5n MnBlcl9mazsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJwZXIKKwlBREQgQ09OU1RS QUlOVCB0ZW1wb3JhbF9ma19ybmcycGVyX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwg UEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfcGVyCisJT04gREVMRVRF IFJFU1RSSUNUOworLS0gYSBQSyB1cGRhdGUgdGhhdCBzdWNjZWVkcyBiZWNhdXNlIHRoZSBu dW1lcmljIGlkIGlzbid0IHJlZmVyZW5jZWQ6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wZXIg VkFMVUVTICgnWzUsNV0nLCAnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CitVUERBVEUg dGVtcG9yYWxfcGVyIFNFVCB2YWxpZF9mcm9tID0gJzIwMTYtMDEtMDEnLCB2YWxpZF90aWwg PSAnMjAxNi0wMi0wMScgV0hFUkUgaWQgPSAnWzUsNV0nOworLS0gYSBQSyB1cGRhdGUgdGhh dCBzdWNjZWVkcyBldmVuIHRob3VnaCB0aGUgbnVtZXJpYyBpZCBpcyByZWZlcmVuY2VkIGJl Y2F1c2UgdGhlIHJhbmdlIGlzbid0OgorREVMRVRFIEZST00gdGVtcG9yYWxfcGVyIFdIRVJF IGlkID0gJ1s1LDVdJzsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BlciBWQUxVRVMgKCdbNSw1 XScsICcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X3BlciBWQUxVRVMgKCdbNSw1XScsICcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKTsKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJwZXIgVkFMVUVTICgnWzMsM10nLCB0c3Jhbmdl KCcyMDE4LTAxLTA1JywgJzIwMTgtMDEtMTAnKSwgJ1s1LDVdJyk7CitVUERBVEUgdGVtcG9y YWxfcGVyIFNFVCB2YWxpZF9mcm9tID0gJzIwMTYtMDItMDEnLCB2YWxpZF90aWwgPSAnMjAx Ni0wMy0wMScKK1dIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfZnJvbSA9ICcyMDE4LTAy LTAxJyBBTkQgdmFsaWRfdGlsID0gJzIwMTgtMDMtMDEnOworLS0gYSBQSyB1cGRhdGUgdGhh dCBmYWlscyBiZWNhdXNlIGJvdGggYXJlIHJlZmVyZW5jZWQ6CitVUERBVEUgdGVtcG9yYWxf cGVyIFNFVCB2YWxpZF9mcm9tID0gJzIwMTYtMDEtMDEnLCB2YWxpZF90aWwgPSAnMjAxNi0w Mi0wMScKK1dIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfZnJvbSA9ICcyMDE4LTAxLTAx JyBBTkQgdmFsaWRfdGlsID0gJzIwMTgtMDItMDEnOworRVJST1I6ICB1cGRhdGUgb3IgZGVs ZXRlIG9uIHRhYmxlICJ0ZW1wb3JhbF9wZXIiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0 cmFpbnQgInRlbXBvcmFsX2ZrX3JuZzJwZXJfZmsiIG9uIHRhYmxlICJ0ZW1wb3JhbF9ma19y bmcycGVyIgorREVUQUlMOiAgS2V5IChpZCwgdmFsaWRfZnJvbSwgdmFsaWRfdGlsKT0oWzUs NiksIE1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCwgVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4 KSBpcyBzdGlsbCByZWZlcmVuY2VkIGZyb20gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJwZXIi LgorLS0gdGhlbiBkZWxldGUgdGhlIG9iamVjdGluZyBGSyByZWNvcmQgYW5kIHRoZSBzYW1l IFBLIHVwZGF0ZSBzdWNjZWVkczoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJwZXIg V0hFUkUgaWQgPSAnWzMsM10nOworVVBEQVRFIHRlbXBvcmFsX3BlciBTRVQgdmFsaWRfZnJv bSA9ICcyMDE2LTAxLTAxJywgdmFsaWRfdGlsID0gJzIwMTYtMDItMDEnCitXSEVSRSBpZCA9 ICdbNSw1XScgQU5EIHZhbGlkX2Zyb20gPSAnMjAxOC0wMS0wMScgQU5EIHZhbGlkX3RpbCA9 ICcyMDE4LTAyLTAxJzsKKy0tIGNsZWFuIHVwOgorREVMRVRFIEZST00gdGVtcG9yYWxfZmtf cm5nMnBlciBXSEVSRSBwYXJlbnRfaWQgPSAnWzUsNV0nOworREVMRVRFIEZST00gdGVtcG9y YWxfcGVyIFdIRVJFIGlkID0gJ1s1LDVdJzsKKy0tCistLSB0ZXN0IEZLIHBhcmVudCBkZWxl dGVzIE5PIEFDVElPTgorLS0KK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJwZXIKKwlE Uk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnBlcl9mazsKK0FMVEVSIFRBQkxFIHRl bXBvcmFsX2ZrX3JuZzJwZXIKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycGVy X2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVS RU5DRVMgdGVtcG9yYWxfcGVyOworLS0gYSBQSyBkZWxldGUgdGhhdCBzdWNjZWVkcyBiZWNh dXNlIHRoZSBudW1lcmljIGlkIGlzbid0IHJlZmVyZW5jZWQ6CitJTlNFUlQgSU5UTyB0ZW1w b3JhbF9wZXIgVkFMVUVTICgnWzUsNV0nLCAnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7 CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wZXIgV0hFUkUgaWQgPSAnWzUsNV0nOworLS0gYSBQ SyBkZWxldGUgdGhhdCBzdWNjZWVkcyBldmVuIHRob3VnaCB0aGUgbnVtZXJpYyBpZCBpcyBy ZWZlcmVuY2VkIGJlY2F1c2UgdGhlIHJhbmdlIGlzbid0OgorSU5TRVJUIElOVE8gdGVtcG9y YWxfcGVyIFZBTFVFUyAoJ1s1LDVdJywgJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOwor SU5TRVJUIElOVE8gdGVtcG9yYWxfcGVyIFZBTFVFUyAoJ1s1LDVdJywgJzIwMTgtMDItMDEn LCAnMjAxOC0wMy0wMScpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnBlciBWQUxV RVMgKCdbMywzXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDUnLCAnMjAxOC0wMS0xMCcpLCAnWzUs NV0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3BlciBXSEVSRSBpZCA9ICdbNSw1XScgQU5E IHZhbGlkX2Zyb20gPSAnMjAxOC0wMi0wMScgQU5EIHZhbGlkX3RpbCA9ICcyMDE4LTAzLTAx JzsKKy0tIGEgUEsgZGVsZXRlIHRoYXQgZmFpbHMgYmVjYXVzZSBib3RoIGFyZSByZWZlcmVu Y2VkOgorREVMRVRFIEZST00gdGVtcG9yYWxfcGVyIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQg dmFsaWRfZnJvbSA9ICcyMDE4LTAxLTAxJyBBTkQgdmFsaWRfdGlsID0gJzIwMTgtMDItMDEn OworRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRlIG9uIHRhYmxlICJ0ZW1wb3JhbF9wZXIiIHZp b2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX2ZrX3JuZzJwZXJfZmsi IG9uIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcycGVyIgorREVUQUlMOiAgS2V5IChpZCwgdmFs aWRfZnJvbSwgdmFsaWRfdGlsKT0oWzUsNiksIE1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCwg VGh1IEZlYiAwMSAwMDowMDowMCAyMDE4KSBpcyBzdGlsbCByZWZlcmVuY2VkIGZyb20gdGFi bGUgInRlbXBvcmFsX2ZrX3JuZzJwZXIiLgorLS0gdGhlbiBkZWxldGUgdGhlIG9iamVjdGlu ZyBGSyByZWNvcmQgYW5kIHRoZSBzYW1lIFBLIGRlbGV0ZSBzdWNjZWVkczoKK0RFTEVURSBG Uk9NIHRlbXBvcmFsX2ZrX3JuZzJwZXIgV0hFUkUgaWQgPSAnWzMsM10nOworREVMRVRFIEZS T00gdGVtcG9yYWxfcGVyIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfZnJvbSA9ICcy MDE4LTAxLTAxJyBBTkQgdmFsaWRfdGlsID0gJzIwMTgtMDItMDEnOworLS0KKy0tIHRlc3Qg RksgcGFyZW50IGRlbGV0ZXMgUkVTVFJJQ1QKKy0tCitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9m a19ybmcycGVyCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJwZXJfZms7CitB TFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycGVyCisJQUREIENPTlNUUkFJTlQgdGVtcG9y YWxfZmtfcm5nMnBlcl9maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxp ZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3BlcgorCU9OIERFTEVURSBSRVNUUklDVDsK K0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BlciBWQUxVRVMgKCdbNSw1XScsICcyMDE4LTAxLTAx JywgJzIwMTgtMDItMDEnKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3BlciBXSEVSRSBpZCA9 ICdbNSw1XSc7CistLSBhIFBLIGRlbGV0ZSB0aGF0IHN1Y2NlZWRzIGV2ZW4gdGhvdWdoIHRo ZSBudW1lcmljIGlkIGlzIHJlZmVyZW5jZWQgYmVjYXVzZSB0aGUgcmFuZ2UgaXNuJ3Q6CitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9wZXIgVkFMVUVTICgnWzUsNV0nLCAnMjAxOC0wMS0wMScs ICcyMDE4LTAyLTAxJyk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wZXIgVkFMVUVTICgnWzUs NV0nLCAnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJyk7CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9ma19ybmcycGVyIFZBTFVFUyAoJ1szLDNdJywgdHNyYW5nZSgnMjAxOC0wMS0wNScsICcy MDE4LTAxLTEwJyksICdbNSw1XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcGVyIFdIRVJF IGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfZnJvbSA9ICcyMDE4LTAyLTAxJyBBTkQgdmFsaWRf dGlsID0gJzIwMTgtMDMtMDEnOworLS0gYSBQSyBkZWxldGUgdGhhdCBmYWlscyBiZWNhdXNl IGJvdGggYXJlIHJlZmVyZW5jZWQ6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wZXIgV0hFUkUg aWQgPSAnWzUsNV0nIEFORCB2YWxpZF9mcm9tID0gJzIwMTgtMDEtMDEnIEFORCB2YWxpZF90 aWwgPSAnMjAxOC0wMi0wMSc7CitFUlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUg InRlbXBvcmFsX3BlciIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9y YWxfZmtfcm5nMnBlcl9mayIgb24gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJwZXIiCitERVRB SUw6ICBLZXkgKGlkLCB2YWxpZF9mcm9tLCB2YWxpZF90aWwpPShbNSw2KSwgTW9uIEphbiAw MSAwMDowMDowMCAyMDE4LCBUaHUgRmViIDAxIDAwOjAwOjAwIDIwMTgpIGlzIHN0aWxsIHJl ZmVyZW5jZWQgZnJvbSB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnBlciIuCistLSB0aGVuIGRl bGV0ZSB0aGUgb2JqZWN0aW5nIEZLIHJlY29yZCBhbmQgdGhlIHNhbWUgUEsgZGVsZXRlIHN1 Y2NlZWRzOgorREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnBlciBXSEVSRSBpZCA9ICdb MywzXSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wZXIgV0hFUkUgaWQgPSAnWzUsNV0nIEFO RCB2YWxpZF9mcm9tID0gJzIwMTgtMDEtMDEnIEFORCB2YWxpZF90aWwgPSAnMjAxOC0wMi0w MSc7CistLQorLS0gdGVzdCBPTiBVUERBVEUvREVMRVRFIG9wdGlvbnMKKy0tCistLSB0ZXN0 IEZLIHBhcmVudCB1cGRhdGVzIENBU0NBREUKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BlciBW QUxVRVMgKCdbNiw2XScsICcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKTsKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX2ZrX3JuZzJwZXIgVkFMVUVTICgnWzQsNF0nLCB0c3JhbmdlKCcyMDE4 LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s2LDZdJyk7CitBTFRFUiBUQUJMRSB0ZW1wb3Jh bF9ma19ybmcycGVyCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJwZXJfZmss CisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnBlcl9maworCQlGT1JFSUdOIEtF WSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxf cGVyCisJCU9OIERFTEVURSBDQVNDQURFIE9OIFVQREFURSBDQVNDQURFOworVVBEQVRFIHRl bXBvcmFsX3BlciBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBU TyAnMjAyMC0wMS0wMScgU0VUIGlkID0gJ1s3LDddJyBXSEVSRSBpZCA9ICdbNiw2XSc7CitT RUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJwZXIgV0hFUkUgaWQgPSAnWzQsNF0nOwor ICBpZCAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAg ICAgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzQs NSkgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBKYW4gMDEgMDA6MDA6MDAg MjAyMCIpIHwgWzcsOCkKKyBbNCw1KSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4Iiwi VHVlIEphbiAwMSAwMDowMDowMCAyMDE5IikgfCBbNiw3KQorIFs0LDUpIHwgWyJXZWQgSmFu IDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFs2LDcp CisoMyByb3dzKQorCitVUERBVEUgdGVtcG9yYWxfcGVyIFNFVCBpZCA9ICdbNyw3XScgV0hF UkUgaWQgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycGVyIFdI RVJFIGlkID0gJ1s0LDRdJzsKKyAgaWQgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFs aWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLQorIFs0LDUpIHwgWyJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiLCJX ZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8IFs3LDgpCisgWzQsNSkgfCBbIk1vbiBKYW4g MDEgMDA6MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgWzcsOCkK KyBbNCw1KSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDow MDowMCAyMDIxIikgfCBbNyw4KQorKDMgcm93cykKKworSU5TRVJUIElOVE8gdGVtcG9yYWxf cGVyIFZBTFVFUyAoJ1sxNSwxNV0nLCAnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJyk7CitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9wZXIgVkFMVUVTICgnWzE1LDE1XScsICcyMDIwLTAxLTAx JywgJzIwMjEtMDEtMDEnKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJwZXIgVkFM VUVTICgnWzEwLDEwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAn WzE1LDE1XScpOworVVBEQVRFIHRlbXBvcmFsX3BlciBTRVQgaWQgPSAnWzE2LDE2XScgV0hF UkUgaWQgPSAnWzE1LDE1XScgQU5EIHRzcmFuZ2UodmFsaWRfZnJvbSwgdmFsaWRfdGlsKSBA PiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtf cm5nMnBlciBXSEVSRSBpZCA9ICdbMTAsMTBdJzsKKyAgIGlkICAgIHwgICAgICAgICAgICAg ICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9p ZCAKKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMTAsMTEpIHwgWyJNb24gSmFuIDAx IDAwOjAwOjAwIDIwMTgiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8IFsxNiwxNykK KyBbMTAsMTEpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAw OjAwOjAwIDIwMjEiKSB8IFsxNSwxNikKKygyIHJvd3MpCisKKy0tIHRlc3QgRksgcGFyZW50 IGRlbGV0ZXMgQ0FTQ0FERQorSU5TRVJUIElOVE8gdGVtcG9yYWxfcGVyIFZBTFVFUyAoJ1s4 LDhdJywgJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpOworSU5TRVJUIElOVE8gdGVtcG9y YWxfZmtfcm5nMnBlciBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAn MjAyMS0wMS0wMScpLCAnWzgsOF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3BlciBGT1Ig UE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScg V0hFUkUgaWQgPSAnWzgsOF0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycGVy IFdIRVJFIGlkID0gJ1s1LDVdJzsKKyAgaWQgICB8ICAgICAgICAgICAgICAgICAgICAgICAg dmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLQorIFs1LDYpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgi LCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiKSB8IFs4LDkpCisgWzUsNikgfCBbIldlZCBK YW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgWzgs OSkKKygyIHJvd3MpCisKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3BlciBXSEVSRSBpZCA9ICdb OCw4XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJwZXIgV0hFUkUgaWQgPSAn WzUsNV0nOworIGlkIHwgdmFsaWRfYXQgfCBwYXJlbnRfaWQgCistLS0tKy0tLS0tLS0tLS0r LS0tLS0tLS0tLS0KKygwIHJvd3MpCisKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BlciBWQUxV RVMgKCdbMTcsMTddJywgJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpOworSU5TRVJUIElO VE8gdGVtcG9yYWxfcGVyIFZBTFVFUyAoJ1sxNywxN10nLCAnMjAyMC0wMS0wMScsICcyMDIx LTAxLTAxJyk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycGVyIFZBTFVFUyAoJ1sx MSwxMV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1sxNywxN10n KTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3BlciBXSEVSRSBpZCA9ICdbMTcsMTddJyBBTkQg dHNyYW5nZSh2YWxpZF9mcm9tLCB2YWxpZF90aWwpIEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0 YW1wOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycGVyIFdIRVJFIGlkID0gJ1sx MSwxMV0nOworICAgaWQgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAg ICAgICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLQorIFsxMSwxMikgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBK YW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgWzE3LDE4KQorKDEgcm93KQorCistLSB0ZXN0IEZL IHBhcmVudCB1cGRhdGVzIFNFVCBOVUxMCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wZXIgVkFM VUVTICgnWzksOV0nLCAnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyk7CitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9ma19ybmcycGVyIFZBTFVFUyAoJ1s2LDZdJywgdHNyYW5nZSgnMjAxOC0w MS0wMScsICcyMDIxLTAxLTAxJyksICdbOSw5XScpOworQUxURVIgVEFCTEUgdGVtcG9yYWxf Zmtfcm5nMnBlcgorCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycGVyX2ZrLAor CUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJwZXJfZmsKKwkJRk9SRUlHTiBLRVkg KHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3Bl cgorCQlPTiBERUxFVEUgU0VUIE5VTEwgT04gVVBEQVRFIFNFVCBOVUxMOworVVBEQVRFIHRl bXBvcmFsX3BlciBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBU TyAnMjAyMC0wMS0wMScgU0VUIGlkID0gJ1sxMCwxMF0nIFdIRVJFIGlkID0gJ1s5LDldJzsK K1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnBlciBXSEVSRSBpZCA9ICdbNiw2XSc7 CisgIGlkICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAg ICAgICAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBb Niw3KSB8IFsiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IiwiV2VkIEphbiAwMSAwMDowMDow MCAyMDIwIikgfCAKKyBbNiw3KSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVHVl IEphbiAwMSAwMDowMDowMCAyMDE5IikgfCBbOSwxMCkKKyBbNiw3KSB8IFsiV2VkIEphbiAw MSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBbOSwxMCkK KygzIHJvd3MpCisKK1VQREFURSB0ZW1wb3JhbF9wZXIgU0VUIGlkID0gJ1sxMCwxMF0nIFdI RVJFIGlkID0gJ1s5LDldJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnBlciBX SEVSRSBpZCA9ICdbNiw2XSc7CisgIGlkICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZh bGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0KKyBbNiw3KSB8IFsiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5Iiwi V2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCAKKyBbNiw3KSB8IFsiTW9uIEphbiAwMSAw MDowMDowMCAyMDE4IiwiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IikgfCAKKyBbNiw3KSB8 IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIx IikgfCAKKygzIHJvd3MpCisKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BlciBWQUxVRVMgKCdb MTgsMThdJywgJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpOworSU5TRVJUIElOVE8gdGVt cG9yYWxfcGVyIFZBTFVFUyAoJ1sxOCwxOF0nLCAnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAx Jyk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycGVyIFZBTFVFUyAoJ1sxMiwxMl0n LCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1sxOCwxOF0nKTsKK1VQ REFURSB0ZW1wb3JhbF9wZXIgU0VUIGlkID0gJ1sxOSwxOV0nIFdIRVJFIGlkID0gJ1sxOCwx OF0nIEFORCB0c3JhbmdlKHZhbGlkX2Zyb20sIHZhbGlkX3RpbCkgQD4gJzIwMTktMDEtMDEn Ojp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJwZXIgV0hFUkUg aWQgPSAnWzEyLDEyXSc7CisgICBpZCAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFs aWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tCisgWzEyLDEzKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4 IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCAKKyBbMTIsMTMpIHwgWyJXZWQgSmFu IDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFsxOCwx OSkKKygyIHJvd3MpCisKKy0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgU0VUIE5VTEwKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX3BlciBWQUxVRVMgKCdbMTEsMTFdJywgJzIwMTgtMDEtMDEn LCAnMjAyMS0wMS0wMScpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnBlciBWQUxV RVMgKCdbNyw3XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzEx LDExXScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcGVyIEZPUiBQT1JUSU9OIE9GIHZhbGlk X2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBXSEVSRSBpZCA9ICdbMTEs MTFdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnBlciBXSEVSRSBpZCA9ICdb Nyw3XSc7CisgIGlkICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAg ICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0KKyBbNyw4KSB8IFsiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IiwiV2VkIEphbiAwMSAw MDowMDowMCAyMDIwIikgfCAKKyBbNyw4KSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4 IiwiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IikgfCBbMTEsMTIpCisgWzcsOCkgfCBbIldl ZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwg WzExLDEyKQorKDMgcm93cykKKworREVMRVRFIEZST00gdGVtcG9yYWxfcGVyIFdIRVJFIGlk ID0gJ1sxMSwxMV0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycGVyIFdIRVJF IGlkID0gJ1s3LDddJzsKKyAgaWQgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRf YXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLQorIFs3LDgpIHwgWyJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiLCJXZWQg SmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8IAorIFs3LDgpIHwgWyJNb24gSmFuIDAxIDAwOjAw OjAwIDIwMTgiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiKSB8IAorIFs3LDgpIHwgWyJX ZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8 IAorKDMgcm93cykKKworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGVyIFZBTFVFUyAoJ1syMCwy MF0nLCAnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJyk7CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9wZXIgVkFMVUVTICgnWzIwLDIwXScsICcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKTsK K0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJwZXIgVkFMVUVTICgnWzEzLDEzXScsIHRz cmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzIwLDIwXScpOworREVMRVRF IEZST00gdGVtcG9yYWxfcGVyIFdIRVJFIGlkID0gJ1syMCwyMF0nIEFORCB0c3JhbmdlKHZh bGlkX2Zyb20sIHZhbGlkX3RpbCkgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxF Q1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJwZXIgV0hFUkUgaWQgPSAnWzEzLDEzXSc7Cisg ICBpZCAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAg ICAgICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisg WzEzLDE0KSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiV2VkIEphbiAwMSAwMDow MDowMCAyMDIwIikgfCAKKyBbMTMsMTQpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAi LCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFsyMCwyMSkKKygyIHJvd3MpCisKKy0t IHRlc3QgRksgcGFyZW50IHVwZGF0ZXMgU0VUIERFRkFVTFQKK0lOU0VSVCBJTlRPIHRlbXBv cmFsX3BlciBWQUxVRVMgKCdbLTEsLTFdJywgbnVsbCwgbnVsbCk7CitJTlNFUlQgSU5UTyB0 ZW1wb3JhbF9wZXIgVkFMVUVTICgnWzEyLDEyXScsICcyMDE4LTAxLTAxJywgJzIwMjEtMDEt MDEnKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJwZXIgVkFMVUVTICgnWzgsOF0n LCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1sxMiwxMl0nKTsKK0FM VEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJwZXIKKyAgQUxURVIgQ09MVU1OIHBhcmVudF9p ZCBTRVQgREVGQVVMVCAnWy0xLC0xXScsCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2Zr X3JuZzJwZXJfZmssCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnBlcl9mawor CQlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5D RVMgdGVtcG9yYWxfcGVyCisJCU9OIERFTEVURSBTRVQgREVGQVVMVCBPTiBVUERBVEUgU0VU IERFRkFVTFQ7CitVUERBVEUgdGVtcG9yYWxfcGVyIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0 IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBTRVQgaWQgPSAnWzEzLDEzXScg V0hFUkUgaWQgPSAnWzEyLDEyXSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJw ZXIgV0hFUkUgaWQgPSAnWzgsOF0nOworICBpZCAgIHwgICAgICAgICAgICAgICAgICAgICAg ICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tCisgWzgsOSkgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAx OSIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwgWy0xLDApCisgWzgsOSkgfCBbIk1v biBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwg WzEyLDEzKQorIFs4LDkpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFu IDAxIDAwOjAwOjAwIDIwMjEiKSB8IFsxMiwxMykKKygzIHJvd3MpCisKK1VQREFURSB0ZW1w b3JhbF9wZXIgU0VUIGlkID0gJ1sxMywxM10nIFdIRVJFIGlkID0gJ1sxMiwxMl0nOworU0VM RUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycGVyIFdIRVJFIGlkID0gJ1s4LDhdJzsKKyAg aWQgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAg ICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFs4LDkp IHwgWyJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIw MjAiKSB8IFstMSwwKQorIFs4LDkpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJU dWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiKSB8IFstMSwwKQorIFs4LDkpIHwgWyJXZWQgSmFu IDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFstMSww KQorKDMgcm93cykKKworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGVyIFZBTFVFUyAoJ1syMiwy Ml0nLCAnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJyk7CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9wZXIgVkFMVUVTICgnWzIyLDIyXScsICcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKTsK K0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJwZXIgVkFMVUVTICgnWzE0LDE0XScsIHRz cmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzIyLDIyXScpOworVVBEQVRF IHRlbXBvcmFsX3BlciBTRVQgaWQgPSAnWzIzLDIzXScgV0hFUkUgaWQgPSAnWzIyLDIyXScg QU5EIHRzcmFuZ2UodmFsaWRfZnJvbSwgdmFsaWRfdGlsKSBAPiAnMjAxOS0wMS0wMSc6OnRp bWVzdGFtcDsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnBlciBXSEVSRSBpZCA9 ICdbMTQsMTRdJzsKKyAgIGlkICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9h dCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0KKyBbMTQsMTUpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJX ZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8IFstMSwwKQorIFsxNCwxNSkgfCBbIldlZCBK YW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgWzIy LDIzKQorKDIgcm93cykKKworLS0gdGVzdCBGSyBwYXJlbnQgZGVsZXRlcyBTRVQgREVGQVVM VAorSU5TRVJUIElOVE8gdGVtcG9yYWxfcGVyIFZBTFVFUyAoJ1sxNCwxNF0nLCAnMjAxOC0w MS0wMScsICcyMDIxLTAxLTAxJyk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycGVy IFZBTFVFUyAoJ1s5LDldJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyks ICdbMTQsMTRdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wZXIgRk9SIFBPUlRJT04gT0Yg dmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFdIRVJFIGlkID0g J1sxNCwxNF0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycGVyIFdIRVJFIGlk ID0gJ1s5LDldJzsKKyAgIGlkICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0 ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tCisgWzksMTApIHwgWyJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiLCJXZWQg SmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8IFstMSwwKQorIFs5LDEwKSB8IFsiTW9uIEphbiAw MSAwMDowMDowMCAyMDE4IiwiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IikgfCBbMTQsMTUp CisgWzksMTApIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAw OjAwOjAwIDIwMjEiKSB8IFsxNCwxNSkKKygzIHJvd3MpCisKK0RFTEVURSBGUk9NIHRlbXBv cmFsX3BlciBXSEVSRSBpZCA9ICdbMTQsMTRdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxf Zmtfcm5nMnBlciBXSEVSRSBpZCA9ICdbOSw5XSc7CisgICBpZCAgIHwgICAgICAgICAgICAg ICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9p ZCAKKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFs5LDEwKSB8IFsiVHVlIEphbiAwMSAw MDowMDowMCAyMDE5IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCBbLTEsMCkKKyBb OSwxMCkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEgMDA6MDA6 MDAgMjAxOSIpIHwgWy0xLDApCisgWzksMTApIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIw MjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFstMSwwKQorKDMgcm93cykKKwor SU5TRVJUIElOVE8gdGVtcG9yYWxfcGVyIFZBTFVFUyAoJ1syNCwyNF0nLCAnMjAxOC0wMS0w MScsICcyMDIwLTAxLTAxJyk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wZXIgVkFMVUVTICgn WzI0LDI0XScsICcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKTsKK0lOU0VSVCBJTlRPIHRl bXBvcmFsX2ZrX3JuZzJwZXIgVkFMVUVTICgnWzE1LDE1XScsIHRzcmFuZ2UoJzIwMTgtMDEt MDEnLCAnMjAyMS0wMS0wMScpLCAnWzI0LDI0XScpOworREVMRVRFIEZST00gdGVtcG9yYWxf cGVyIFdIRVJFIGlkID0gJ1syNCwyNF0nIEFORCB0c3JhbmdlKHZhbGlkX2Zyb20sIHZhbGlk X3RpbCkgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHRlbXBv cmFsX2ZrX3JuZzJwZXIgV0hFUkUgaWQgPSAnWzE1LDE1XSc7CisgICBpZCAgICB8ICAgICAg ICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBw YXJlbnRfaWQgCistLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzE1LDE2KSB8IFsiTW9u IEphbiAwMSAwMDowMDowMCAyMDE4IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCBb LTEsMCkKKyBbMTUsMTYpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFu IDAxIDAwOjAwOjAwIDIwMjEiKSB8IFsyNCwyNSkKKygyIHJvd3MpCisKKy0tCistLSB0ZXN0 IEZPUkVJR04gS0VZLCBQRVJJT0QgcmVmZXJlbmNlcyByYW5nZQorLS0KK0RFTEVURSBGUk9N IHRlbXBvcmFsX2ZrX3JuZzJybmc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmc7CitJTlNF UlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzEsMV0nLCB0c3JhbmdlKCcyMDE4LTAx LTAyJywgJzIwMTgtMDItMDMnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVT ICgnWzEsMV0nLCB0c3JhbmdlKCcyMDE4LTAzLTAzJywgJzIwMTgtMDQtMDQnKSk7CitJTlNF UlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzIsMl0nLCB0c3JhbmdlKCcyMDE4LTAx LTAxJywgJzIwMTgtMDEtMDUnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVT ICgnWzMsM10nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgTlVMTCkpOworLS0gQ2FuJ3QgY3Jl YXRlIGEgRksgd2l0aCBhIG1pc21hdGNoZWQgcmFuZ2UgdHlwZQorQ1JFQVRFIFRBQkxFIHRl bXBvcmFsX2ZrX3BlcjJybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9mcm9tIGludDQs CisgIHZhbGlkX3RpbCBpbnQ0LAorCVBFUklPRCBGT1IgdmFsaWRfYXQgKHZhbGlkX2Zyb20s IHZhbGlkX3RpbCksCisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBv cmFsX2ZrX3BlcjJybmdfcGsyIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBP VkVSTEFQUyksCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19wZXIycm5nX2ZrMiBGT1JFSUdO IEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9y YWxfcm5nIChpZCwgUEVSSU9EIHZhbGlkX2F0KQorKTsKK0VSUk9SOiAgZm9yZWlnbiBrZXkg Y29uc3RyYWludCAidGVtcG9yYWxfZmtfcGVyMnJuZ19mazIiIGNhbm5vdCBiZSBpbXBsZW1l bnRlZAorREVUQUlMOiAgS2V5IGNvbHVtbnMgInZhbGlkX2F0IiBhbmQgInZhbGlkX2F0IiBh cmUgb2YgaW5jb21wYXRpYmxlIHR5cGVzOiBpbnQ0cmFuZ2UgYW5kIHRzcmFuZ2UuCistLSB3 aXRoIGluZmVycmVkIFBLIG9uIHRoZSByZWZlcmVuY2VkIHRhYmxlOgorQ1JFQVRFIFRBQkxF IHRlbXBvcmFsX2ZrX3BlcjJybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9mcm9tIHRp bWVzdGFtcCwKKwl2YWxpZF90aWwgdGltZXN0YW1wLAorCVBFUklPRCBGT1IgdmFsaWRfYXQg KHZhbGlkX2Zyb20sIHZhbGlkX3RpbCksCisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05T VFJBSU5UIHRlbXBvcmFsX2ZrX3BlcjJybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9h dCBXSVRIT1VUIE9WRVJMQVBTKSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3BlcjJybmdf ZmsgRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVO Q0VTIHRlbXBvcmFsX3JuZworKTsKK0RST1AgVEFCTEUgdGVtcG9yYWxfZmtfcGVyMnJuZzsK Ky0tIHNob3VsZCBmYWlsIGJlY2F1c2Ugb2YgZHVwbGljYXRlIHJlZmVyZW5jZWQgY29sdW1u czoKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ma19wZXIycm5nICgKKwlpZCBpbnQ0cmFuZ2Us CisJdmFsaWRfZnJvbSB0aW1lc3RhbXAsCisJdmFsaWRfdGlsIHRpbWVzdGFtcCwKKwlQRVJJ T0QgRk9SIHZhbGlkX2F0ICh2YWxpZF9mcm9tLCB2YWxpZF90aWwpLAorCXBhcmVudF9pZCBp bnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19wZXIycm5nX3BrIFBSSU1BUlkg S0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCB0ZW1w b3JhbF9ma19wZXIycm5nX2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCBwYXJl bnRfaWQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nIChpZCwgUEVSSU9EIGlkKQorKTsK K0VSUk9SOiAgZm9yZWlnbiBrZXkgcmVmZXJlbmNlZC1jb2x1bW5zIGxpc3QgbXVzdCBub3Qg Y29udGFpbiBkdXBsaWNhdGVzCistLQorLS0gdGVzdCBBTFRFUiBUQUJMRSBBREQgQ09OU1RS QUlOVAorLS0KK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ma19wZXIycm5nICgKKwlpZCBpbnQ0 cmFuZ2UsCisJdmFsaWRfZnJvbSB0aW1lc3RhbXAsCisJdmFsaWRfdGlsIHRpbWVzdGFtcCwK KwlQRVJJT0QgRk9SIHZhbGlkX2F0ICh2YWxpZF9mcm9tLCB2YWxpZF90aWwpLAorCXBhcmVu dF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19wZXIycm5nX3BrIFBS SU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitBTFRFUiBU QUJMRSB0ZW1wb3JhbF9ma19wZXIycm5nCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtf cGVyMnJuZ19maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkK KwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZyAoaWQsIFBFUklPRCB2YWxpZF9hdCk7CitBTFRF UiBUQUJMRSB0ZW1wb3JhbF9ma19wZXIycm5nCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFs X2ZrX3BlcjJybmdfZms7CistLSB3aXRoIGluZmVycmVkIFBLIG9uIHRoZSByZWZlcmVuY2Vk IHRhYmxlOgorQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcGVyMnJuZworCUFERCBDT05TVFJB SU5UIHRlbXBvcmFsX2ZrX3BlcjJybmdfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQ RVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmc7CistLSBzaG91bGQg ZmFpbCBiZWNhdXNlIG9mIGR1cGxpY2F0ZSByZWZlcmVuY2VkIGNvbHVtbnM6CitBTFRFUiBU QUJMRSB0ZW1wb3JhbF9ma19wZXIycm5nCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtf cGVyMnJuZ19mazIKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgcGFyZW50X2lk KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nIChpZCwgUEVSSU9EIGlkKTsKK0VSUk9SOiAg Zm9yZWlnbiBrZXkgcmVmZXJlbmNlZC1jb2x1bW5zIGxpc3QgbXVzdCBub3QgY29udGFpbiBk dXBsaWNhdGVzCistLQorLS0gdGVzdCB3aXRoIHJvd3MgYWxyZWFkeQorLS0KK0RFTEVURSBG Uk9NIHRlbXBvcmFsX2ZrX3BlcjJybmc7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19wZXIy cm5nCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3BlcjJybmdfZms7CitJTlNFUlQg SU5UTyB0ZW1wb3JhbF9ma19wZXIycm5nIFZBTFVFUyAoJ1sxLDFdJywgJzIwMTgtMDEtMDIn LCAnMjAxOC0wMi0wMScsICdbMSwxXScpOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcGVy MnJuZworCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3BlcjJybmdfZmsKKwlGT1JFSUdO IEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNFUyB0ZW1wb3Jh bF9ybmc7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19wZXIycm5nCisJRFJPUCBDT05TVFJB SU5UIHRlbXBvcmFsX2ZrX3BlcjJybmdfZms7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19w ZXIycm5nIFZBTFVFUyAoJ1syLDJdJywgJzIwMTgtMDEtMDInLCAnMjAxOC0wNC0wMScsICdb MSwxXScpOworLS0gc2hvdWxkIGZhaWw6CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19wZXIy cm5nCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcGVyMnJuZ19maworCUZPUkVJR04g S0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFs X3JuZzsKK0VSUk9SOiAgaW5zZXJ0IG9yIHVwZGF0ZSBvbiB0YWJsZSAidGVtcG9yYWxfZmtf cGVyMnJuZyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfZmtf cGVyMnJuZ19mayIKK0RFVEFJTDogIEtleSAocGFyZW50X2lkLCB2YWxpZF9mcm9tLCB2YWxp ZF90aWwpPShbMSwyKSwgVHVlIEphbiAwMiAwMDowMDowMCAyMDE4LCBTdW4gQXByIDAxIDAw OjAwOjAwIDIwMTgpIGlzIG5vdCBwcmVzZW50IGluIHRhYmxlICJ0ZW1wb3JhbF9ybmciLgor LS0gb2theSBhZ2FpbjoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3BlcjJybmc7CitBTFRF UiBUQUJMRSB0ZW1wb3JhbF9ma19wZXIycm5nCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxf ZmtfcGVyMnJuZ19maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9h dCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzsKKy0tCistLSB0ZXN0IHBnX2dldF9jb25z dHJhaW50ZGVmCistLQorU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVmKG9pZCkgRlJPTSBw Z19jb25zdHJhaW50IFdIRVJFIGNvbm5hbWUgPSAndGVtcG9yYWxfZmtfcGVyMnJuZ19mayc7 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfY29uc3RyYWludGRl ZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxp ZF9hdCkgUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcoaWQsIFBFUklPRCB2YWxpZF9hdCkKKygx IHJvdykKKworLS0KKy0tIHRlc3QgRksgY2hpbGQgaW5zZXJ0cworLS0KK0lOU0VSVCBJTlRP IHRlbXBvcmFsX2ZrX3BlcjJybmcgVkFMVUVTICgnWzEsMV0nLCAnMjAxOC0wMS0wMicsICcy MDE4LTAyLTAxJywgJ1sxLDFdJyk7CistLSBzaG91bGQgZmFpbDoKK0lOU0VSVCBJTlRPIHRl bXBvcmFsX2ZrX3BlcjJybmcgVkFMVUVTICgnWzIsMl0nLCAnMjAxOC0wMS0wMicsICcyMDE4 LTA0LTAxJywgJ1sxLDFdJyk7CitFUlJPUjogIGluc2VydCBvciB1cGRhdGUgb24gdGFibGUg InRlbXBvcmFsX2ZrX3BlcjJybmciIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQg InRlbXBvcmFsX2ZrX3BlcjJybmdfZmsiCitERVRBSUw6ICBLZXkgKHBhcmVudF9pZCwgdmFs aWRfZnJvbSwgdmFsaWRfdGlsKT0oWzEsMiksIFR1ZSBKYW4gMDIgMDA6MDA6MDAgMjAxOCwg U3VuIEFwciAwMSAwMDowMDowMCAyMDE4KSBpcyBub3QgcHJlc2VudCBpbiB0YWJsZSAidGVt cG9yYWxfcm5nIi4KKy0tIG5vdyBpdCBzaG91bGQgd29yazoKK0lOU0VSVCBJTlRPIHRlbXBv cmFsX3JuZyBWQUxVRVMgKCdbMSwxXScsIHRzcmFuZ2UoJzIwMTgtMDItMDMnLCAnMjAxOC0w My0wMycpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3BlcjJybmcgVkFMVUVTICgnWzIs Ml0nLCAnMjAxOC0wMS0wMicsICcyMDE4LTA0LTAxJywgJ1sxLDFdJyk7CistLQorLS0gdGVz dCBGSyBjaGlsZCB1cGRhdGVzCistLQorVVBEQVRFIHRlbXBvcmFsX2ZrX3BlcjJybmcgU0VU IHZhbGlkX2Zyb20gPSAnMjAxOC0wMS0wMicsIHZhbGlkX3RpbCA9ICcyMDE4LTAzLTAxJyBX SEVSRSBpZCA9ICdbMSwxXSc7CistLSBzaG91bGQgZmFpbDoKK1VQREFURSB0ZW1wb3JhbF9m a19wZXIycm5nIFNFVCB2YWxpZF9mcm9tID0gJzIwMTgtMDEtMDInLCB2YWxpZF90aWwgPSAn MjAxOC0wNS0wMScgV0hFUkUgaWQgPSAnWzEsMV0nOworRVJST1I6ICBpbnNlcnQgb3IgdXBk YXRlIG9uIHRhYmxlICJ0ZW1wb3JhbF9ma19wZXIycm5nIiB2aW9sYXRlcyBmb3JlaWduIGtl eSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9ma19wZXIycm5nX2ZrIgorREVUQUlMOiAgS2V5IChw YXJlbnRfaWQsIHZhbGlkX2Zyb20sIHZhbGlkX3RpbCk9KFsxLDIpLCBUdWUgSmFuIDAyIDAw OjAwOjAwIDIwMTgsIFR1ZSBNYXkgMDEgMDA6MDA6MDAgMjAxOCkgaXMgbm90IHByZXNlbnQg aW4gdGFibGUgInRlbXBvcmFsX3JuZyIuCitVUERBVEUgdGVtcG9yYWxfZmtfcGVyMnJuZyBT RVQgcGFyZW50X2lkID0gJ1s4LDhdJyBXSEVSRSBpZCA9ICdbMSwxXSc7CitFUlJPUjogIGlu c2VydCBvciB1cGRhdGUgb24gdGFibGUgInRlbXBvcmFsX2ZrX3BlcjJybmciIHZpb2xhdGVz IGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX2ZrX3BlcjJybmdfZmsiCitERVRB SUw6ICBLZXkgKHBhcmVudF9pZCwgdmFsaWRfZnJvbSwgdmFsaWRfdGlsKT0oWzgsOSksIFR1 ZSBKYW4gMDIgMDA6MDA6MDAgMjAxOCwgVGh1IE1hciAwMSAwMDowMDowMCAyMDE4KSBpcyBu b3QgcHJlc2VudCBpbiB0YWJsZSAidGVtcG9yYWxfcm5nIi4KKy0tCistLSB0ZXN0IEZLIHBh cmVudCB1cGRhdGVzIE5PIEFDVElPTgorLS0KKy0tIGEgUEsgdXBkYXRlIHRoYXQgc3VjY2Vl ZHMgYmVjYXVzZSB0aGUgbnVtZXJpYyBpZCBpc24ndCByZWZlcmVuY2VkOgorSU5TRVJUIElO VE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDE4LTAyLTAxJykpOworVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgdmFsaWRfYXQgPSB0 c3JhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKSBXSEVSRSBpZCA9ICdbNSw1XSc7 CistLSBhIFBLIHVwZGF0ZSB0aGF0IHN1Y2NlZWRzIGV2ZW4gdGhvdWdoIHRoZSBudW1lcmlj IGlkIGlzIHJlZmVyZW5jZWQgYmVjYXVzZSB0aGUgcmFuZ2UgaXNuJ3Q6CitERUxFVEUgRlJP TSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nOworSU5TRVJUIElOVE8gdGVtcG9y YWxfcm5nIFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAy LTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s1LDVdJywgdHNy YW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9y YWxfZmtfcGVyMnJuZyBWQUxVRVMgKCdbMywzXScsICcyMDE4LTAxLTA1JywgJzIwMTgtMDEt MTAnLCAnWzUsNV0nKTsKK1VQREFURSB0ZW1wb3JhbF9ybmcgU0VUIHZhbGlkX2F0ID0gdHNy YW5nZSgnMjAxNi0wMi0wMScsICcyMDE2LTAzLTAxJykKK1dIRVJFIGlkID0gJ1s1LDVdJyBB TkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKTsKKy0t IGEgUEsgdXBkYXRlIHRoYXQgZmFpbHMgYmVjYXVzZSBib3RoIGFyZSByZWZlcmVuY2VkOgor VVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAxLTAx JywgJzIwMTYtMDItMDEnKQorV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRz cmFuZ2UoJzIwMTgtMDEtMDEnLCcyMDE4LTAyLTAxJyk7CitFUlJPUjogIHVwZGF0ZSBvciBk ZWxldGUgb24gdGFibGUgInRlbXBvcmFsX3JuZyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29u c3RyYWludCAidGVtcG9yYWxfZmtfcGVyMnJuZ19mayIgb24gdGFibGUgInRlbXBvcmFsX2Zr X3BlcjJybmciCitERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYpLCBbIk1vbiBK YW4gMDEgMDA6MDA6MDAgMjAxOCIsIlRodSBGZWIgMDEgMDA6MDA6MDAgMjAxOCIpKSBpcyBz dGlsbCByZWZlcmVuY2VkIGZyb20gdGFibGUgInRlbXBvcmFsX2ZrX3BlcjJybmciLgorLS0g dGhlbiBkZWxldGUgdGhlIG9iamVjdGluZyBGSyByZWNvcmQgYW5kIHRoZSBzYW1lIFBLIHVw ZGF0ZSBzdWNjZWVkczoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3BlcjJybmcgV0hFUkUg aWQgPSAnWzMsM10nOworVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgdmFsaWRfYXQgPSB0c3Jh bmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKQorV0hFUkUgaWQgPSAnWzUsNV0nIEFO RCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworLS0g Y2xlYW4gdXA6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19wZXIycm5nIFdIRVJFIHBhcmVu dF9pZCA9ICdbNSw1XSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAn WzUsNV0nOworLS0KKy0tIHRlc3QgRksgcGFyZW50IHVwZGF0ZXMgUkVTVFJJQ1QKKy0tCitB TFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19wZXIycm5nCisJRFJPUCBDT05TVFJBSU5UIHRlbXBv cmFsX2ZrX3BlcjJybmdfZms7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19wZXIycm5nCisJ QUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcGVyMnJuZ19maworCUZPUkVJR04gS0VZIChw YXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZwor CU9OIERFTEVURSBSRVNUUklDVDsKKy0tIGEgUEsgdXBkYXRlIHRoYXQgc3VjY2VlZHMgYmVj YXVzZSB0aGUgbnVtZXJpYyBpZCBpc24ndCByZWZlcmVuY2VkOgorSU5TRVJUIElOVE8gdGVt cG9yYWxfcm5nIFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4 LTAyLTAxJykpOworVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgdmFsaWRfYXQgPSB0c3Jhbmdl KCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKSBXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBh IFBLIHVwZGF0ZSB0aGF0IHN1Y2NlZWRzIGV2ZW4gdGhvdWdoIHRoZSBudW1lcmljIGlkIGlz IHJlZmVyZW5jZWQgYmVjYXVzZSB0aGUgcmFuZ2UgaXNuJ3Q6CitERUxFVEUgRlJPTSB0ZW1w b3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5n IFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykp OworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5nZSgn MjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtf cGVyMnJuZyBWQUxVRVMgKCdbMywzXScsICcyMDE4LTAxLTA1JywgJzIwMTgtMDEtMTAnLCAn WzUsNV0nKTsKK1VQREFURSB0ZW1wb3JhbF9ybmcgU0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgn MjAxNi0wMi0wMScsICcyMDE2LTAzLTAxJykKK1dIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFs aWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKTsKKy0tIGEgUEsg dXBkYXRlIHRoYXQgZmFpbHMgYmVjYXVzZSBib3RoIGFyZSByZWZlcmVuY2VkOgorVVBEQVRF IHRlbXBvcmFsX3JuZyBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAxLTAxJywgJzIw MTYtMDItMDEnKQorV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRl IG9uIHRhYmxlICJ0ZW1wb3JhbF9ybmciIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFp bnQgInRlbXBvcmFsX2ZrX3BlcjJybmdfZmsiIG9uIHRhYmxlICJ0ZW1wb3JhbF9ma19wZXIy cm5nIgorREVUQUlMOiAgS2V5IChpZCwgdmFsaWRfYXQpPShbNSw2KSwgWyJNb24gSmFuIDAx IDAwOjAwOjAwIDIwMTgiLCJUaHUgRmViIDAxIDAwOjAwOjAwIDIwMTgiKSkgaXMgc3RpbGwg cmVmZXJlbmNlZCBmcm9tIHRhYmxlICJ0ZW1wb3JhbF9ma19wZXIycm5nIi4KKy0tIHRoZW4g ZGVsZXRlIHRoZSBvYmplY3RpbmcgRksgcmVjb3JkIGFuZCB0aGUgc2FtZSBQSyB1cGRhdGUg c3VjY2VlZHM6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19wZXIycm5nIFdIRVJFIGlkID0g J1szLDNdJzsKK1VQREFURSB0ZW1wb3JhbF9ybmcgU0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgn MjAxNi0wMS0wMScsICcyMDE2LTAyLTAxJykKK1dIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFs aWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKKy0tIGNsZWFu IHVwOgorREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcGVyMnJuZyBXSEVSRSBwYXJlbnRfaWQg PSAnWzUsNV0nOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVd JzsKKy0tCistLSB0ZXN0IEZLIHBhcmVudCBkZWxldGVzIE5PIEFDVElPTgorLS0KK0FMVEVS IFRBQkxFIHRlbXBvcmFsX2ZrX3BlcjJybmcKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxf ZmtfcGVyMnJuZ19mazsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3BlcjJybmcKKwlBREQg Q09OU1RSQUlOVCB0ZW1wb3JhbF9ma19wZXIycm5nX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVu dF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nOworLS0g YSBQSyBkZWxldGUgdGhhdCBzdWNjZWVkcyBiZWNhdXNlIHRoZSBudW1lcmljIGlkIGlzbid0 IHJlZmVyZW5jZWQ6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzUsNV0n LCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSk7CitERUxFVEUgRlJPTSB0 ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nOworLS0gYSBQSyBkZWxldGUgdGhhdCBz dWNjZWVkcyBldmVuIHRob3VnaCB0aGUgbnVtZXJpYyBpZCBpcyByZWZlcmVuY2VkIGJlY2F1 c2UgdGhlIHJhbmdlIGlzbid0OgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAo J1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpOworSU5TRVJU IElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMi0w MScsICcyMDE4LTAzLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcGVyMnJuZyBW QUxVRVMgKCdbMywzXScsICcyMDE4LTAxLTA1JywgJzIwMTgtMDEtMTAnLCAnWzUsNV0nKTsK K0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlk X2F0ID0gdHNyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJyk7CistLSBhIFBLIGRl bGV0ZSB0aGF0IGZhaWxzIGJlY2F1c2UgYm90aCBhcmUgcmVmZXJlbmNlZDoKK0RFTEVURSBG Uk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNy YW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CitFUlJPUjogIHVwZGF0ZSBvciBk ZWxldGUgb24gdGFibGUgInRlbXBvcmFsX3JuZyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29u c3RyYWludCAidGVtcG9yYWxfZmtfcGVyMnJuZ19mayIgb24gdGFibGUgInRlbXBvcmFsX2Zr X3BlcjJybmciCitERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYpLCBbIk1vbiBK YW4gMDEgMDA6MDA6MDAgMjAxOCIsIlRodSBGZWIgMDEgMDA6MDA6MDAgMjAxOCIpKSBpcyBz dGlsbCByZWZlcmVuY2VkIGZyb20gdGFibGUgInRlbXBvcmFsX2ZrX3BlcjJybmciLgorLS0g dGhlbiBkZWxldGUgdGhlIG9iamVjdGluZyBGSyByZWNvcmQgYW5kIHRoZSBzYW1lIFBLIGRl bGV0ZSBzdWNjZWVkczoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3BlcjJybmcgV0hFUkUg aWQgPSAnWzMsM10nOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1 LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEn KTsKKy0tCistLSB0ZXN0IEZLIHBhcmVudCBkZWxldGVzIFJFU1RSSUNUCistLQorQUxURVIg VEFCTEUgdGVtcG9yYWxfZmtfcGVyMnJuZworCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9m a19wZXIycm5nX2ZrOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcGVyMnJuZworCUFERCBD T05TVFJBSU5UIHRlbXBvcmFsX2ZrX3BlcjJybmdfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50 X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcKKwlPTiBE RUxFVEUgUkVTVFJJQ1Q7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzUs NV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSk7CitERUxFVEUgRlJP TSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nOworLS0gYSBQSyBkZWxldGUgdGhh dCBzdWNjZWVkcyBldmVuIHRob3VnaCB0aGUgbnVtZXJpYyBpZCBpcyByZWZlcmVuY2VkIGJl Y2F1c2UgdGhlIHJhbmdlIGlzbid0OgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVF UyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpOworSU5T RVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0w Mi0wMScsICcyMDE4LTAzLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcGVyMnJu ZyBWQUxVRVMgKCdbMywzXScsICcyMDE4LTAxLTA1JywgJzIwMTgtMDEtMTAnLCAnWzUsNV0n KTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZh bGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJyk7CistLSBhIFBL IGRlbGV0ZSB0aGF0IGZhaWxzIGJlY2F1c2UgYm90aCBhcmUgcmVmZXJlbmNlZDoKK0RFTEVU RSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0g dHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CitFUlJPUjogIHVwZGF0ZSBv ciBkZWxldGUgb24gdGFibGUgInRlbXBvcmFsX3JuZyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkg Y29uc3RyYWludCAidGVtcG9yYWxfZmtfcGVyMnJuZ19mayIgb24gdGFibGUgInRlbXBvcmFs X2ZrX3BlcjJybmciCitERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYpLCBbIk1v biBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlRodSBGZWIgMDEgMDA6MDA6MDAgMjAxOCIpKSBp cyBzdGlsbCByZWZlcmVuY2VkIGZyb20gdGFibGUgInRlbXBvcmFsX2ZrX3BlcjJybmciLgor LS0gdGhlbiBkZWxldGUgdGhlIG9iamVjdGluZyBGSyByZWNvcmQgYW5kIHRoZSBzYW1lIFBL IGRlbGV0ZSBzdWNjZWVkczoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3BlcjJybmcgV0hF UkUgaWQgPSAnWzMsM10nOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0g J1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDIt MDEnKTsKKy0tCistLSB0ZXN0IE9OIFVQREFURS9ERUxFVEUgb3B0aW9ucworLS0KKy0tIHRl c3QgRksgcGFyZW50IHVwZGF0ZXMgQ0FTQ0FERQorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5n IFZBTFVFUyAoJ1s2LDZdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykp OworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcGVyMnJuZyBWQUxVRVMgKCdbNCw0XScsICcy MDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnLCAnWzYsNl0nKTsKK0FMVEVSIFRBQkxFIHRlbXBv cmFsX2ZrX3BlcjJybmcKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcGVyMnJuZ19m aywKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19wZXIycm5nX2ZrCisJCUZPUkVJR04g S0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3Jh bF9ybmcKKwkJT04gREVMRVRFIENBU0NBREUgT04gVVBEQVRFIENBU0NBREU7CitVUERBVEUg dGVtcG9yYWxfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEn IFRPICcyMDIwLTAxLTAxJyBTRVQgaWQgPSAnWzcsN10nIFdIRVJFIGlkID0gJ1s2LDZdJzsK K1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcGVyMnJuZyBXSEVSRSBpZCA9ICdbNCw0XSc7 CisgIGlkICAgfCAgICAgICAgdmFsaWRfZnJvbSAgICAgICAgfCAgICAgICAgdmFsaWRfdGls ICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzQsNSkgfCBU dWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkgfCBXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAgfCBb Nyw4KQorIFs0LDUpIHwgTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IHwgVHVlIEphbiAwMSAw MDowMDowMCAyMDE5IHwgWzYsNykKKyBbNCw1KSB8IFdlZCBKYW4gMDEgMDA6MDA6MDAgMjAy MCB8IEZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSB8IFs2LDcpCisoMyByb3dzKQorCitVUERB VEUgdGVtcG9yYWxfcm5nIFNFVCBpZCA9ICdbNyw3XScgV0hFUkUgaWQgPSAnWzYsNl0nOwor U0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19wZXIycm5nIFdIRVJFIGlkID0gJ1s0LDRdJzsK KyAgaWQgICB8ICAgICAgICB2YWxpZF9mcm9tICAgICAgICB8ICAgICAgICB2YWxpZF90aWwg ICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbNCw1KSB8IFR1 ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSB8IFdlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCB8IFs3 LDgpCisgWzQsNSkgfCBNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTggfCBUdWUgSmFuIDAxIDAw OjAwOjAwIDIwMTkgfCBbNyw4KQorIFs0LDUpIHwgV2VkIEphbiAwMSAwMDowMDowMCAyMDIw IHwgRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIHwgWzcsOCkKKygzIHJvd3MpCisKK0lOU0VS VCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbMTUsMTVdJywgdHNyYW5nZSgnMjAxOC0w MS0wMScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVF UyAoJ1sxNSwxNV0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19wZXIycm5nIFZBTFVFUyAoJ1sxMCwxMF0nLCAnMjAx OC0wMS0wMScsICcyMDIxLTAxLTAxJywgJ1sxNSwxNV0nKTsKK1VQREFURSB0ZW1wb3JhbF9y bmcgU0VUIGlkID0gJ1sxNiwxNl0nIFdIRVJFIGlkID0gJ1sxNSwxNV0nIEFORCB2YWxpZF9h dCBAPiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxf ZmtfcGVyMnJuZyBXSEVSRSBpZCA9ICdbMTAsMTBdJzsKKyAgIGlkICAgIHwgICAgICAgIHZh bGlkX2Zyb20gICAgICAgIHwgICAgICAgIHZhbGlkX3RpbCAgICAgICAgIHwgcGFyZW50X2lk IAorLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzEwLDExKSB8IE1vbiBKYW4gMDEgMDA6MDA6 MDAgMjAxOCB8IFdlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCB8IFsxNiwxNykKKyBbMTAsMTEp IHwgV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIHwgRnJpIEphbiAwMSAwMDowMDowMCAyMDIx IHwgWzE1LDE2KQorKDIgcm93cykKKworLS0gdGVzdCBGSyBwYXJlbnQgZGVsZXRlcyBDQVND QURFCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzgsOF0nLCB0c3Jhbmdl KCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9m a19wZXIycm5nIFZBTFVFUyAoJ1s1LDVdJywgJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScs ICdbOCw4XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIEZPUiBQT1JUSU9OIE9GIHZh bGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBXSEVSRSBpZCA9ICdb OCw4XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3BlcjJybmcgV0hFUkUgaWQgPSAn WzUsNV0nOworICBpZCAgIHwgICAgICAgIHZhbGlkX2Zyb20gICAgICAgIHwgICAgICAgIHZh bGlkX3RpbCAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFs1 LDYpIHwgTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IHwgVHVlIEphbiAwMSAwMDowMDowMCAy MDE5IHwgWzgsOSkKKyBbNSw2KSB8IFdlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCB8IEZyaSBK YW4gMDEgMDA6MDA6MDAgMjAyMSB8IFs4LDkpCisoMiByb3dzKQorCitERUxFVEUgRlJPTSB0 ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzgsOF0nOworU0VMRUNUICogRlJPTSB0ZW1wb3Jh bF9ma19wZXIycm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKKyBpZCB8IHZhbGlkX2Zyb20gfCB2 YWxpZF90aWwgfCBwYXJlbnRfaWQgCistLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tLQorKDAgcm93cykKKworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVF UyAoJ1sxNywxN10nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7CitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzE3LDE3XScsIHRzcmFuZ2UoJzIw MjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3Bl cjJybmcgVkFMVUVTICgnWzExLDExXScsICcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnLCAn WzE3LDE3XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1sxNywx N10nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAq IEZST00gdGVtcG9yYWxfZmtfcGVyMnJuZyBXSEVSRSBpZCA9ICdbMTEsMTFdJzsKKyAgIGlk ICAgIHwgICAgICAgIHZhbGlkX2Zyb20gICAgICAgIHwgICAgICAgIHZhbGlkX3RpbCAgICAg ICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzExLDEyKSB8IFdl ZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCB8IEZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSB8IFsx NywxOCkKKygxIHJvdykKKworLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBTRVQgTlVMTAor SU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s5LDldJywgdHNyYW5nZSgnMjAx OC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcGVy MnJuZyBWQUxVRVMgKCdbNiw2XScsICcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnLCAnWzks OV0nKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3BlcjJybmcKKwlEUk9QIENPTlNUUkFJ TlQgdGVtcG9yYWxfZmtfcGVyMnJuZ19maywKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9m a19wZXIycm5nX2ZrCisJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9h dCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcKKwkJT04gREVMRVRFIFNFVCBOVUxMIE9O IFVQREFURSBTRVQgTlVMTDsKK1VQREFURSB0ZW1wb3JhbF9ybmcgRk9SIFBPUlRJT04gT0Yg dmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFNFVCBpZCA9ICdb MTAsMTBdJyBXSEVSRSBpZCA9ICdbOSw5XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2Zr X3BlcjJybmcgV0hFUkUgaWQgPSAnWzYsNl0nOworICBpZCAgIHwgICAgICAgIHZhbGlkX2Zy b20gICAgICAgIHwgICAgICAgIHZhbGlkX3RpbCAgICAgICAgIHwgcGFyZW50X2lkIAorLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLQorIFs2LDcpIHwgVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IHwg V2VkIEphbiAwMSAwMDowMDowMCAyMDIwIHwgCisgWzYsNykgfCBNb24gSmFuIDAxIDAwOjAw OjAwIDIwMTggfCBUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkgfCBbOSwxMCkKKyBbNiw3KSB8 IFdlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCB8IEZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSB8 IFs5LDEwKQorKDMgcm93cykKKworVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgaWQgPSAnWzEw LDEwXScgV0hFUkUgaWQgPSAnWzksOV0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19w ZXIycm5nIFdIRVJFIGlkID0gJ1s2LDZdJzsKKyAgaWQgICB8ICAgICAgICB2YWxpZF9mcm9t ICAgICAgICB8ICAgICAgICB2YWxpZF90aWwgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0KKyBbNiw3KSB8IFR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSB8IFdl ZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCB8IAorIFs2LDcpIHwgTW9uIEphbiAwMSAwMDowMDow MCAyMDE4IHwgVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IHwgCisgWzYsNykgfCBXZWQgSmFu IDAxIDAwOjAwOjAwIDIwMjAgfCBGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEgfCAKKygzIHJv d3MpCisKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbMTgsMThdJywgdHNy YW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9y YWxfcm5nIFZBTFVFUyAoJ1sxOCwxOF0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEt MDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19wZXIycm5nIFZBTFVFUyAoJ1sx MiwxMl0nLCAnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJywgJ1sxOCwxOF0nKTsKK1VQREFU RSB0ZW1wb3JhbF9ybmcgU0VUIGlkID0gJ1sxOSwxOV0nIFdIRVJFIGlkID0gJ1sxOCwxOF0n IEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZS T00gdGVtcG9yYWxfZmtfcGVyMnJuZyBXSEVSRSBpZCA9ICdbMTIsMTJdJzsKKyAgIGlkICAg IHwgICAgICAgIHZhbGlkX2Zyb20gICAgICAgIHwgICAgICAgIHZhbGlkX3RpbCAgICAgICAg IHwgcGFyZW50X2lkIAorLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzEyLDEzKSB8IE1vbiBK YW4gMDEgMDA6MDA6MDAgMjAxOCB8IFdlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCB8IAorIFsx MiwxMykgfCBXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAgfCBGcmkgSmFuIDAxIDAwOjAwOjAw IDIwMjEgfCBbMTgsMTkpCisoMiByb3dzKQorCistLSB0ZXN0IEZLIHBhcmVudCBkZWxldGVz IFNFVCBOVUxMCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzExLDExXScs IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRl bXBvcmFsX2ZrX3BlcjJybmcgVkFMVUVTICgnWzcsN10nLCAnMjAxOC0wMS0wMScsICcyMDIx LTAxLTAxJywgJ1sxMSwxMV0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBGT1IgUE9S VElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgV0hF UkUgaWQgPSAnWzExLDExXSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3BlcjJybmcg V0hFUkUgaWQgPSAnWzcsN10nOworICBpZCAgIHwgICAgICAgIHZhbGlkX2Zyb20gICAgICAg IHwgICAgICAgIHZhbGlkX3RpbCAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLQorIFs3LDgpIHwgVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IHwgV2VkIEphbiAw MSAwMDowMDowMCAyMDIwIHwgCisgWzcsOCkgfCBNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgg fCBUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkgfCBbMTEsMTIpCisgWzcsOCkgfCBXZWQgSmFu IDAxIDAwOjAwOjAwIDIwMjAgfCBGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEgfCBbMTEsMTIp CisoMyByb3dzKQorCitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzEx LDExXSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3BlcjJybmcgV0hFUkUgaWQgPSAn WzcsN10nOworICBpZCAgIHwgICAgICAgIHZhbGlkX2Zyb20gICAgICAgIHwgICAgICAgIHZh bGlkX3RpbCAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFs3 LDgpIHwgVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IHwgV2VkIEphbiAwMSAwMDowMDowMCAy MDIwIHwgCisgWzcsOCkgfCBNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTggfCBUdWUgSmFuIDAx IDAwOjAwOjAwIDIwMTkgfCAKKyBbNyw4KSB8IFdlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCB8 IEZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSB8IAorKDMgcm93cykKKworSU5TRVJUIElOVE8g dGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1syMCwyMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywg JzIwMjAtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzIw LDIwXScsIHRzcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX2ZrX3BlcjJybmcgVkFMVUVTICgnWzEzLDEzXScsICcyMDE4LTAxLTAx JywgJzIwMjEtMDEtMDEnLCAnWzIwLDIwXScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5n IFdIRVJFIGlkID0gJ1syMCwyMF0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OnRp bWVzdGFtcDsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcGVyMnJuZyBXSEVSRSBpZCA9 ICdbMTMsMTNdJzsKKyAgIGlkICAgIHwgICAgICAgIHZhbGlkX2Zyb20gICAgICAgIHwgICAg ICAgIHZhbGlkX3RpbCAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tCisgWzEzLDE0KSB8IE1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCB8IFdlZCBKYW4gMDEg MDA6MDA6MDAgMjAyMCB8IAorIFsxMywxNCkgfCBXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAg fCBGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEgfCBbMjAsMjEpCisoMiByb3dzKQorCistLSB0 ZXN0IEZLIHBhcmVudCB1cGRhdGVzIFNFVCBERUZBVUxUCitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9ybmcgVkFMVUVTICgnWy0xLC0xXScsIHRzcmFuZ2UobnVsbCwgbnVsbCkpOworSU5TRVJU IElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1sxMiwxMl0nLCB0c3JhbmdlKCcyMDE4LTAx LTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19wZXIycm5n IFZBTFVFUyAoJ1s4LDhdJywgJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScsICdbMTIsMTJd Jyk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19wZXIycm5nCisgIEFMVEVSIENPTFVNTiBw YXJlbnRfaWQgU0VUIERFRkFVTFQgJ1stMSwtMV0nLAorCURST1AgQ09OU1RSQUlOVCB0ZW1w b3JhbF9ma19wZXIycm5nX2ZrLAorCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3BlcjJy bmdfZmsKKwkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlS RUZFUkVOQ0VTIHRlbXBvcmFsX3JuZworCQlPTiBERUxFVEUgU0VUIERFRkFVTFQgT04gVVBE QVRFIFNFVCBERUZBVUxUOworVVBEQVRFIHRlbXBvcmFsX3JuZyBGT1IgUE9SVElPTiBPRiB2 YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgU0VUIGlkID0gJ1sx MywxM10nIFdIRVJFIGlkID0gJ1sxMiwxMl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9m a19wZXIycm5nIFdIRVJFIGlkID0gJ1s4LDhdJzsKKyAgaWQgICB8ICAgICAgICB2YWxpZF9m cm9tICAgICAgICB8ICAgICAgICB2YWxpZF90aWwgICAgICAgICB8IHBhcmVudF9pZCAKKy0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0KKyBbOCw5KSB8IFR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSB8 IFdlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCB8IFstMSwwKQorIFs4LDkpIHwgTW9uIEphbiAw MSAwMDowMDowMCAyMDE4IHwgVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IHwgWzEyLDEzKQor IFs4LDkpIHwgV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIHwgRnJpIEphbiAwMSAwMDowMDow MCAyMDIxIHwgWzEyLDEzKQorKDMgcm93cykKKworVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQg aWQgPSAnWzEzLDEzXScgV0hFUkUgaWQgPSAnWzEyLDEyXSc7CitTRUxFQ1QgKiBGUk9NIHRl bXBvcmFsX2ZrX3BlcjJybmcgV0hFUkUgaWQgPSAnWzgsOF0nOworICBpZCAgIHwgICAgICAg IHZhbGlkX2Zyb20gICAgICAgIHwgICAgICAgIHZhbGlkX3RpbCAgICAgICAgIHwgcGFyZW50 X2lkIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFs4LDkpIHwgVHVlIEphbiAwMSAwMDowMDow MCAyMDE5IHwgV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIHwgWy0xLDApCisgWzgsOSkgfCBN b24gSmFuIDAxIDAwOjAwOjAwIDIwMTggfCBUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkgfCBb LTEsMCkKKyBbOCw5KSB8IFdlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCB8IEZyaSBKYW4gMDEg MDA6MDA6MDAgMjAyMSB8IFstMSwwKQorKDMgcm93cykKKworSU5TRVJUIElOVE8gdGVtcG9y YWxfcm5nIFZBTFVFUyAoJ1syMiwyMl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAt MDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzIyLDIyXScs IHRzcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRl bXBvcmFsX2ZrX3BlcjJybmcgVkFMVUVTICgnWzE0LDE0XScsICcyMDE4LTAxLTAxJywgJzIw MjEtMDEtMDEnLCAnWzIyLDIyXScpOworVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgaWQgPSAn WzIzLDIzXScgV0hFUkUgaWQgPSAnWzIyLDIyXScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAx LTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19wZXIycm5nIFdI RVJFIGlkID0gJ1sxNCwxNF0nOworICAgaWQgICAgfCAgICAgICAgdmFsaWRfZnJvbSAgICAg ICAgfCAgICAgICAgdmFsaWRfdGlsICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0KKyBbMTQsMTUpIHwgTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IHwgV2Vk IEphbiAwMSAwMDowMDowMCAyMDIwIHwgWy0xLDApCisgWzE0LDE1KSB8IFdlZCBKYW4gMDEg MDA6MDA6MDAgMjAyMCB8IEZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSB8IFsyMiwyMykKKygy IHJvd3MpCisKKy0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgU0VUIERFRkFVTFQKK0lOU0VS VCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbMTQsMTRdJywgdHNyYW5nZSgnMjAxOC0w MS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcGVyMnJu ZyBWQUxVRVMgKCdbOSw5XScsICcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnLCAnWzE0LDE0 XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0 IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBXSEVSRSBpZCA9ICdbMTQsMTRd JzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcGVyMnJuZyBXSEVSRSBpZCA9ICdbOSw5 XSc7CisgICBpZCAgIHwgICAgICAgIHZhbGlkX2Zyb20gICAgICAgIHwgICAgICAgIHZhbGlk X3RpbCAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbOSwx MCkgfCBUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkgfCBXZWQgSmFuIDAxIDAwOjAwOjAwIDIw MjAgfCBbLTEsMCkKKyBbOSwxMCkgfCBNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTggfCBUdWUg SmFuIDAxIDAwOjAwOjAwIDIwMTkgfCBbMTQsMTUpCisgWzksMTApIHwgV2VkIEphbiAwMSAw MDowMDowMCAyMDIwIHwgRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIHwgWzE0LDE1KQorKDMg cm93cykKKworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1sxNCwxNF0n OworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19wZXIycm5nIFdIRVJFIGlkID0gJ1s5LDld JzsKKyAgIGlkICAgfCAgICAgICAgdmFsaWRfZnJvbSAgICAgICAgfCAgICAgICAgdmFsaWRf dGlsICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFs5LDEw KSB8IFR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSB8IFdlZCBKYW4gMDEgMDA6MDA6MDAgMjAy MCB8IFstMSwwKQorIFs5LDEwKSB8IE1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCB8IFR1ZSBK YW4gMDEgMDA6MDA6MDAgMjAxOSB8IFstMSwwKQorIFs5LDEwKSB8IFdlZCBKYW4gMDEgMDA6 MDA6MDAgMjAyMCB8IEZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSB8IFstMSwwKQorKDMgcm93 cykKKworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1syNCwyNF0nLCB0c3Jh bmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9ybmcgVkFMVUVTICgnWzI0LDI0XScsIHRzcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0w MS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3BlcjJybmcgVkFMVUVTICgnWzE1 LDE1XScsICcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnLCAnWzI0LDI0XScpOworREVMRVRF IEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1syNCwyNF0nIEFORCB2YWxpZF9hdCBA PiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtf cGVyMnJuZyBXSEVSRSBpZCA9ICdbMTUsMTVdJzsKKyAgIGlkICAgIHwgICAgICAgIHZhbGlk X2Zyb20gICAgICAgIHwgICAgICAgIHZhbGlkX3RpbCAgICAgICAgIHwgcGFyZW50X2lkIAor LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzE1LDE2KSB8IE1vbiBKYW4gMDEgMDA6MDA6MDAg MjAxOCB8IFdlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCB8IFstMSwwKQorIFsxNSwxNikgfCBX ZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAgfCBGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEgfCBb MjQsMjUpCisoMiByb3dzKQorCistLQorLS0gdGVzdCBGT1JFSUdOIEtFWSwgUEVSSU9EIHJl ZmVyZW5jZXMgUEVSSU9ECistLQorREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnBlcjsK K0RFTEVURSBGUk9NIHRlbXBvcmFsX3BlcjsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BlciBW QUxVRVMgKCdbMSwxXScsICcyMDE4LTAxLTAyJywgJzIwMTgtMDItMDMnKTsKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX3BlciBWQUxVRVMgKCdbMSwxXScsICcyMDE4LTAzLTAzJywgJzIwMTgt MDQtMDQnKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BlciBWQUxVRVMgKCdbMiwyXScsICcy MDE4LTAxLTAxJywgJzIwMTgtMDEtMDUnKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BlciBW QUxVRVMgKCdbMywzXScsICcyMDE4LTAxLTAxJywgTlVMTCk7CistLSBDYW4ndCBjcmVhdGUg YSBGSyB3aXRoIGEgbWlzbWF0Y2hlZCByYW5nZSB0eXBlCitDUkVBVEUgVEFCTEUgdGVtcG9y YWxfZmtfcGVyMnBlciAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2Zyb20gaW50NCwKKyAg dmFsaWRfdGlsIGludDQsCisJUEVSSU9EIEZPUiB2YWxpZF9hdCAodmFsaWRfZnJvbSwgdmFs aWRfdGlsKSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxf ZmtfcGVyMnBlcl9wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxB UFMpLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcGVyMnBlcl9mayBGT1JFSUdOIEtFWSAo cGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcGVy IChpZCwgUEVSSU9EIHZhbGlkX2F0KQorKTsKK0VSUk9SOiAgZm9yZWlnbiBrZXkgY29uc3Ry YWludCAidGVtcG9yYWxfZmtfcGVyMnBlcl9mayIgY2Fubm90IGJlIGltcGxlbWVudGVkCitE RVRBSUw6ICBLZXkgY29sdW1ucyAidmFsaWRfYXQiIGFuZCAidmFsaWRfYXQiIGFyZSBvZiBp bmNvbXBhdGlibGUgdHlwZXM6IGludDRyYW5nZSBhbmQgdHNyYW5nZS4KKy0tIHdpdGggaW5m ZXJyZWQgUEsgb24gdGhlIHJlZmVyZW5jZWQgdGFibGU6CitDUkVBVEUgVEFCTEUgdGVtcG9y YWxfZmtfcGVyMnBlciAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2Zyb20gdGltZXN0YW1w LAorCXZhbGlkX3RpbCB0aW1lc3RhbXAsCisJUEVSSU9EIEZPUiB2YWxpZF9hdCAodmFsaWRf ZnJvbSwgdmFsaWRfdGlsKSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQg dGVtcG9yYWxfZmtfcGVyMnBlcl9wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhP VVQgT1ZFUkxBUFMpLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcGVyMnBlcl9mayBGT1JF SUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVt cG9yYWxfcGVyCispOworRFJPUCBUQUJMRSB0ZW1wb3JhbF9ma19wZXIycGVyOworLS0gc2hv dWxkIGZhaWwgYmVjYXVzZSBvZiBkdXBsaWNhdGUgcmVmZXJlbmNlZCBjb2x1bW5zOgorQ1JF QVRFIFRBQkxFIHRlbXBvcmFsX2ZrX3BlcjJwZXIgKAorCWlkIGludDRyYW5nZSwKKwl2YWxp ZF9mcm9tIHRpbWVzdGFtcCwKKwl2YWxpZF90aWwgdGltZXN0YW1wLAorCVBFUklPRCBGT1Ig dmFsaWRfYXQgKHZhbGlkX2Zyb20sIHZhbGlkX3RpbCksCisJcGFyZW50X2lkIGludDRyYW5n ZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3BlcjJwZXJfcGsgUFJJTUFSWSBLRVkgKGlk LCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2Zr X3BlcjJwZXJfZmsgRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHBhcmVudF9pZCkK KwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9wZXIgKGlkLCBQRVJJT0QgaWQpCispOworRVJST1I6 ICBmb3JlaWduIGtleSByZWZlcmVuY2VkLWNvbHVtbnMgbGlzdCBtdXN0IG5vdCBjb250YWlu IGR1cGxpY2F0ZXMKKy0tCistLSB0ZXN0IEFMVEVSIFRBQkxFIEFERCBDT05TVFJBSU5UCist LQorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2ZrX3BlcjJwZXIgKAorCWlkIGludDRyYW5nZSwK Kwl2YWxpZF9mcm9tIHRpbWVzdGFtcCwKKwl2YWxpZF90aWwgdGltZXN0YW1wLAorCVBFUklP RCBGT1IgdmFsaWRfYXQgKHZhbGlkX2Zyb20sIHZhbGlkX3RpbCksCisJcGFyZW50X2lkIGlu dDRyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3BlcjJwZXJfcGsgUFJJTUFSWSBL RVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0FMVEVSIFRBQkxFIHRl bXBvcmFsX2ZrX3BlcjJwZXIKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19wZXIycGVy X2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVS RU5DRVMgdGVtcG9yYWxfcGVyIChpZCwgUEVSSU9EIHZhbGlkX2F0KTsKK0FMVEVSIFRBQkxF IHRlbXBvcmFsX2ZrX3BlcjJwZXIKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcGVy MnBlcl9mazsKKy0tIHdpdGggaW5mZXJyZWQgUEsgb24gdGhlIHJlZmVyZW5jZWQgdGFibGU6 CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19wZXIycGVyCisJQUREIENPTlNUUkFJTlQgdGVt cG9yYWxfZmtfcGVyMnBlcl9maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2 YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3BlcjsKKy0tIHNob3VsZCBmYWlsIGJl Y2F1c2Ugb2YgZHVwbGljYXRlIHJlZmVyZW5jZWQgY29sdW1uczoKK0FMVEVSIFRBQkxFIHRl bXBvcmFsX2ZrX3BlcjJwZXIKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19wZXIycGVy X2ZrMgorCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCBwYXJlbnRfaWQpCisJUkVG RVJFTkNFUyB0ZW1wb3JhbF9wZXIgKGlkLCBQRVJJT0QgaWQpOworRVJST1I6ICBmb3JlaWdu IGtleSByZWZlcmVuY2VkLWNvbHVtbnMgbGlzdCBtdXN0IG5vdCBjb250YWluIGR1cGxpY2F0 ZXMKKy0tCistLSB0ZXN0IHdpdGggcm93cyBhbHJlYWR5CistLQorREVMRVRFIEZST00gdGVt cG9yYWxfZmtfcGVyMnBlcjsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3BlcjJwZXIKKwlE Uk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcGVyMnBlcl9mazsKK0lOU0VSVCBJTlRPIHRl bXBvcmFsX2ZrX3BlcjJwZXIgVkFMVUVTICgnWzEsMV0nLCAnMjAxOC0wMS0wMicsICcyMDE4 LTAyLTAxJywgJ1sxLDFdJyk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19wZXIycGVyCisJ QUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcGVyMnBlcl9maworCUZPUkVJR04gS0VZIChw YXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3BlcjsK K0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3BlcjJwZXIKKwlEUk9QIENPTlNUUkFJTlQgdGVt cG9yYWxfZmtfcGVyMnBlcl9mazsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3BlcjJwZXIg VkFMVUVTICgnWzIsMl0nLCAnMjAxOC0wMS0wMicsICcyMDE4LTA0LTAxJywgJ1sxLDFdJyk7 CistLSBzaG91bGQgZmFpbDoKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3BlcjJwZXIKKwlB REQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19wZXIycGVyX2ZrCisJRk9SRUlHTiBLRVkgKHBh cmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfcGVyOwor RVJST1I6ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxlICJ0ZW1wb3JhbF9ma19wZXIycGVy IiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9ma19wZXIycGVy X2ZrIgorREVUQUlMOiAgS2V5IChwYXJlbnRfaWQsIHZhbGlkX2Zyb20sIHZhbGlkX3RpbCk9 KFsxLDIpLCBUdWUgSmFuIDAyIDAwOjAwOjAwIDIwMTgsIFN1biBBcHIgMDEgMDA6MDA6MDAg MjAxOCkgaXMgbm90IHByZXNlbnQgaW4gdGFibGUgInRlbXBvcmFsX3BlciIuCistLSBva2F5 IGFnYWluOgorREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcGVyMnBlcjsKK0FMVEVSIFRBQkxF IHRlbXBvcmFsX2ZrX3BlcjJwZXIKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19wZXIy cGVyX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJF RkVSRU5DRVMgdGVtcG9yYWxfcGVyOworLS0KKy0tIHRlc3QgcGdfZ2V0X2NvbnN0cmFpbnRk ZWYKKy0tCitTRUxFQ1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lkKSBGUk9NIHBnX2NvbnN0 cmFpbnQgV0hFUkUgY29ubmFtZSA9ICd0ZW1wb3JhbF9ma19wZXIycGVyX2ZrJzsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9jb25zdHJhaW50ZGVmICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KSBS RUZFUkVOQ0VTIHRlbXBvcmFsX3BlcihpZCwgUEVSSU9EIHZhbGlkX2F0KQorKDEgcm93KQor CistLQorLS0gdGVzdCBGSyBjaGlsZCBpbnNlcnRzCistLQorSU5TRVJUIElOVE8gdGVtcG9y YWxfZmtfcGVyMnBlciBWQUxVRVMgKCdbMSwxXScsICcyMDE4LTAxLTAyJywgJzIwMTgtMDIt MDEnLCAnWzEsMV0nKTsKKy0tIHNob3VsZCBmYWlsOgorSU5TRVJUIElOVE8gdGVtcG9yYWxf ZmtfcGVyMnBlciBWQUxVRVMgKCdbMiwyXScsICcyMDE4LTAxLTAyJywgJzIwMTgtMDQtMDEn LCAnWzEsMV0nKTsKK0VSUk9SOiAgaW5zZXJ0IG9yIHVwZGF0ZSBvbiB0YWJsZSAidGVtcG9y YWxfZmtfcGVyMnBlciIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9y YWxfZmtfcGVyMnBlcl9mayIKK0RFVEFJTDogIEtleSAocGFyZW50X2lkLCB2YWxpZF9mcm9t LCB2YWxpZF90aWwpPShbMSwyKSwgVHVlIEphbiAwMiAwMDowMDowMCAyMDE4LCBTdW4gQXBy IDAxIDAwOjAwOjAwIDIwMTgpIGlzIG5vdCBwcmVzZW50IGluIHRhYmxlICJ0ZW1wb3JhbF9w ZXIiLgorLS0gbm93IGl0IHNob3VsZCB3b3JrOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcGVy IFZBTFVFUyAoJ1sxLDFdJywgJzIwMTgtMDItMDMnLCAnMjAxOC0wMy0wMycpOworSU5TRVJU IElOVE8gdGVtcG9yYWxfZmtfcGVyMnBlciBWQUxVRVMgKCdbMiwyXScsICcyMDE4LTAxLTAy JywgJzIwMTgtMDQtMDEnLCAnWzEsMV0nKTsKKy0tCistLSB0ZXN0IEZLIGNoaWxkIHVwZGF0 ZXMKKy0tCitVUERBVEUgdGVtcG9yYWxfZmtfcGVyMnBlciBTRVQgdmFsaWRfZnJvbSA9ICcy MDE4LTAxLTAyJywgdmFsaWRfdGlsID0gJzIwMTgtMDMtMDEnIFdIRVJFIGlkID0gJ1sxLDFd JzsKKy0tIHNob3VsZCBmYWlsOgorVVBEQVRFIHRlbXBvcmFsX2ZrX3BlcjJwZXIgU0VUIHZh bGlkX2Zyb20gPSAnMjAxOC0wMS0wMicsIHZhbGlkX3RpbCA9ICcyMDE4LTA1LTAxJyBXSEVS RSBpZCA9ICdbMSwxXSc7CitFUlJPUjogIGluc2VydCBvciB1cGRhdGUgb24gdGFibGUgInRl bXBvcmFsX2ZrX3BlcjJwZXIiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRl bXBvcmFsX2ZrX3BlcjJwZXJfZmsiCitERVRBSUw6ICBLZXkgKHBhcmVudF9pZCwgdmFsaWRf ZnJvbSwgdmFsaWRfdGlsKT0oWzEsMiksIFR1ZSBKYW4gMDIgMDA6MDA6MDAgMjAxOCwgVHVl IE1heSAwMSAwMDowMDowMCAyMDE4KSBpcyBub3QgcHJlc2VudCBpbiB0YWJsZSAidGVtcG9y YWxfcGVyIi4KK1VQREFURSB0ZW1wb3JhbF9ma19wZXIycGVyIFNFVCBwYXJlbnRfaWQgPSAn WzgsOF0nIFdIRVJFIGlkID0gJ1sxLDFdJzsKK0VSUk9SOiAgaW5zZXJ0IG9yIHVwZGF0ZSBv biB0YWJsZSAidGVtcG9yYWxfZmtfcGVyMnBlciIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29u c3RyYWludCAidGVtcG9yYWxfZmtfcGVyMnBlcl9mayIKK0RFVEFJTDogIEtleSAocGFyZW50 X2lkLCB2YWxpZF9mcm9tLCB2YWxpZF90aWwpPShbOCw5KSwgVHVlIEphbiAwMiAwMDowMDow MCAyMDE4LCBUaHUgTWFyIDAxIDAwOjAwOjAwIDIwMTgpIGlzIG5vdCBwcmVzZW50IGluIHRh YmxlICJ0ZW1wb3JhbF9wZXIiLgorLS0KKy0tIHRlc3QgRksgcGFyZW50IHVwZGF0ZXMgTk8g QUNUSU9OCistLQorLS0gYSBQSyB1cGRhdGUgdGhhdCBzdWNjZWVkcyBiZWNhdXNlIHRoZSBu dW1lcmljIGlkIGlzbid0IHJlZmVyZW5jZWQ6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wZXIg VkFMVUVTICgnWzUsNV0nLCAnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CitVUERBVEUg dGVtcG9yYWxfcGVyIFNFVCB2YWxpZF9mcm9tID0gJzIwMTYtMDEtMDEnLCB2YWxpZF90aWwg PSAnMjAxNi0wMi0wMScgV0hFUkUgaWQgPSAnWzUsNV0nOworLS0gYSBQSyB1cGRhdGUgdGhh dCBzdWNjZWVkcyBldmVuIHRob3VnaCB0aGUgbnVtZXJpYyBpZCBpcyByZWZlcmVuY2VkIGJl Y2F1c2UgdGhlIHJhbmdlIGlzbid0OgorREVMRVRFIEZST00gdGVtcG9yYWxfcGVyIFdIRVJF IGlkID0gJ1s1LDVdJzsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BlciBWQUxVRVMgKCdbNSw1 XScsICcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X3BlciBWQUxVRVMgKCdbNSw1XScsICcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKTsKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3BlcjJwZXIgVkFMVUVTICgnWzMsM10nLCAnMjAxOC0w MS0wNScsICcyMDE4LTAxLTEwJywgJ1s1LDVdJyk7CitVUERBVEUgdGVtcG9yYWxfcGVyIFNF VCB2YWxpZF9mcm9tID0gJzIwMTYtMDItMDEnLCB2YWxpZF90aWwgPSAnMjAxNi0wMy0wMScK K1dIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfZnJvbSA9ICcyMDE4LTAyLTAxJyBBTkQg dmFsaWRfdGlsID0gJzIwMTgtMDMtMDEnOworLS0gYSBQSyB1cGRhdGUgdGhhdCBmYWlscyBi ZWNhdXNlIGJvdGggYXJlIHJlZmVyZW5jZWQ6CitVUERBVEUgdGVtcG9yYWxfcGVyIFNFVCB2 YWxpZF9mcm9tID0gJzIwMTYtMDEtMDEnLCB2YWxpZF90aWwgPSAnMjAxNi0wMi0wMScKK1dI RVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfZnJvbSA9ICcyMDE4LTAxLTAxJyBBTkQgdmFs aWRfdGlsID0gJzIwMTgtMDItMDEnOworRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRlIG9uIHRh YmxlICJ0ZW1wb3JhbF9wZXIiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRl bXBvcmFsX2ZrX3BlcjJwZXJfZmsiIG9uIHRhYmxlICJ0ZW1wb3JhbF9ma19wZXIycGVyIgor REVUQUlMOiAgS2V5IChpZCwgdmFsaWRfZnJvbSwgdmFsaWRfdGlsKT0oWzUsNiksIE1vbiBK YW4gMDEgMDA6MDA6MDAgMjAxOCwgVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4KSBpcyBzdGls bCByZWZlcmVuY2VkIGZyb20gdGFibGUgInRlbXBvcmFsX2ZrX3BlcjJwZXIiLgorLS0gdGhl biBkZWxldGUgdGhlIG9iamVjdGluZyBGSyByZWNvcmQgYW5kIHRoZSBzYW1lIFBLIHVwZGF0 ZSBzdWNjZWVkczoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3BlcjJwZXIgV0hFUkUgaWQg PSAnWzMsM10nOworVVBEQVRFIHRlbXBvcmFsX3BlciBTRVQgdmFsaWRfZnJvbSA9ICcyMDE2 LTAxLTAxJywgdmFsaWRfdGlsID0gJzIwMTYtMDItMDEnCitXSEVSRSBpZCA9ICdbNSw1XScg QU5EIHZhbGlkX2Zyb20gPSAnMjAxOC0wMS0wMScgQU5EIHZhbGlkX3RpbCA9ICcyMDE4LTAy LTAxJzsKKy0tIGNsZWFuIHVwOgorREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcGVyMnBlciBX SEVSRSBwYXJlbnRfaWQgPSAnWzUsNV0nOworREVMRVRFIEZST00gdGVtcG9yYWxfcGVyIFdI RVJFIGlkID0gJ1s1LDVdJzsKKy0tCistLSB0ZXN0IEZLIHBhcmVudCB1cGRhdGVzIFJFU1RS SUNUCistLQorQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcGVyMnBlcgorCURST1AgQ09OU1RS QUlOVCB0ZW1wb3JhbF9ma19wZXIycGVyX2ZrOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtf cGVyMnBlcgorCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3BlcjJwZXJfZmsKKwlGT1JF SUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNFUyB0ZW1w b3JhbF9wZXIKKwlPTiBERUxFVEUgUkVTVFJJQ1Q7CistLSBhIFBLIHVwZGF0ZSB0aGF0IHN1 Y2NlZWRzIGJlY2F1c2UgdGhlIG51bWVyaWMgaWQgaXNuJ3QgcmVmZXJlbmNlZDoKK0lOU0VS VCBJTlRPIHRlbXBvcmFsX3BlciBWQUxVRVMgKCdbNSw1XScsICcyMDE4LTAxLTAxJywgJzIw MTgtMDItMDEnKTsKK1VQREFURSB0ZW1wb3JhbF9wZXIgU0VUIHZhbGlkX2Zyb20gPSAnMjAx Ni0wMS0wMScsIHZhbGlkX3RpbCA9ICcyMDE2LTAyLTAxJyBXSEVSRSBpZCA9ICdbNSw1XSc7 CistLSBhIFBLIHVwZGF0ZSB0aGF0IHN1Y2NlZWRzIGV2ZW4gdGhvdWdoIHRoZSBudW1lcmlj IGlkIGlzIHJlZmVyZW5jZWQgYmVjYXVzZSB0aGUgcmFuZ2UgaXNuJ3Q6CitERUxFVEUgRlJP TSB0ZW1wb3JhbF9wZXIgV0hFUkUgaWQgPSAnWzUsNV0nOworSU5TRVJUIElOVE8gdGVtcG9y YWxfcGVyIFZBTFVFUyAoJ1s1LDVdJywgJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOwor SU5TRVJUIElOVE8gdGVtcG9yYWxfcGVyIFZBTFVFUyAoJ1s1LDVdJywgJzIwMTgtMDItMDEn LCAnMjAxOC0wMy0wMScpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcGVyMnBlciBWQUxV RVMgKCdbMywzXScsICcyMDE4LTAxLTA1JywgJzIwMTgtMDEtMTAnLCAnWzUsNV0nKTsKK1VQ REFURSB0ZW1wb3JhbF9wZXIgU0VUIHZhbGlkX2Zyb20gPSAnMjAxNi0wMi0wMScsIHZhbGlk X3RpbCA9ICcyMDE2LTAzLTAxJworV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9mcm9t ID0gJzIwMTgtMDItMDEnIEFORCB2YWxpZF90aWwgPSAnMjAxOC0wMy0wMSc7CistLSBhIFBL IHVwZGF0ZSB0aGF0IGZhaWxzIGJlY2F1c2UgYm90aCBhcmUgcmVmZXJlbmNlZDoKK1VQREFU RSB0ZW1wb3JhbF9wZXIgU0VUIHZhbGlkX2Zyb20gPSAnMjAxNi0wMS0wMScsIHZhbGlkX3Rp bCA9ICcyMDE2LTAyLTAxJworV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9mcm9tID0g JzIwMTgtMDEtMDEnIEFORCB2YWxpZF90aWwgPSAnMjAxOC0wMi0wMSc7CitFUlJPUjogIHVw ZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRlbXBvcmFsX3BlciIgdmlvbGF0ZXMgZm9yZWln biBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfZmtfcGVyMnBlcl9mayIgb24gdGFibGUgInRl bXBvcmFsX2ZrX3BlcjJwZXIiCitERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9mcm9tLCB2YWxp ZF90aWwpPShbNSw2KSwgTW9uIEphbiAwMSAwMDowMDowMCAyMDE4LCBUaHUgRmViIDAxIDAw OjAwOjAwIDIwMTgpIGlzIHN0aWxsIHJlZmVyZW5jZWQgZnJvbSB0YWJsZSAidGVtcG9yYWxf ZmtfcGVyMnBlciIuCistLSB0aGVuIGRlbGV0ZSB0aGUgb2JqZWN0aW5nIEZLIHJlY29yZCBh bmQgdGhlIHNhbWUgUEsgdXBkYXRlIHN1Y2NlZWRzOgorREVMRVRFIEZST00gdGVtcG9yYWxf ZmtfcGVyMnBlciBXSEVSRSBpZCA9ICdbMywzXSc7CitVUERBVEUgdGVtcG9yYWxfcGVyIFNF VCB2YWxpZF9mcm9tID0gJzIwMTYtMDEtMDEnLCB2YWxpZF90aWwgPSAnMjAxNi0wMi0wMScK K1dIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfZnJvbSA9ICcyMDE4LTAxLTAxJyBBTkQg dmFsaWRfdGlsID0gJzIwMTgtMDItMDEnOworLS0gY2xlYW4gdXA6CitERUxFVEUgRlJPTSB0 ZW1wb3JhbF9ma19wZXIycGVyIFdIRVJFIHBhcmVudF9pZCA9ICdbNSw1XSc7CitERUxFVEUg RlJPTSB0ZW1wb3JhbF9wZXIgV0hFUkUgaWQgPSAnWzUsNV0nOworLS0KKy0tIHRlc3QgRksg cGFyZW50IGRlbGV0ZXMgTk8gQUNUSU9OCistLQorQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtf cGVyMnBlcgorCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19wZXIycGVyX2ZrOworQUxU RVIgVEFCTEUgdGVtcG9yYWxfZmtfcGVyMnBlcgorCUFERCBDT05TVFJBSU5UIHRlbXBvcmFs X2ZrX3BlcjJwZXJfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRf YXQpCisJUkVGRVJFTkNFUyB0ZW1wb3JhbF9wZXI7CistLSBhIFBLIGRlbGV0ZSB0aGF0IHN1 Y2NlZWRzIGJlY2F1c2UgdGhlIG51bWVyaWMgaWQgaXNuJ3QgcmVmZXJlbmNlZDoKK0lOU0VS VCBJTlRPIHRlbXBvcmFsX3BlciBWQUxVRVMgKCdbNSw1XScsICcyMDE4LTAxLTAxJywgJzIw MTgtMDItMDEnKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3BlciBXSEVSRSBpZCA9ICdbNSw1 XSc7CistLSBhIFBLIGRlbGV0ZSB0aGF0IHN1Y2NlZWRzIGV2ZW4gdGhvdWdoIHRoZSBudW1l cmljIGlkIGlzIHJlZmVyZW5jZWQgYmVjYXVzZSB0aGUgcmFuZ2UgaXNuJ3Q6CitJTlNFUlQg SU5UTyB0ZW1wb3JhbF9wZXIgVkFMVUVTICgnWzUsNV0nLCAnMjAxOC0wMS0wMScsICcyMDE4 LTAyLTAxJyk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wZXIgVkFMVUVTICgnWzUsNV0nLCAn MjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJyk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19w ZXIycGVyIFZBTFVFUyAoJ1szLDNdJywgJzIwMTgtMDEtMDUnLCAnMjAxOC0wMS0xMCcsICdb NSw1XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcGVyIFdIRVJFIGlkID0gJ1s1LDVdJyBB TkQgdmFsaWRfZnJvbSA9ICcyMDE4LTAyLTAxJyBBTkQgdmFsaWRfdGlsID0gJzIwMTgtMDMt MDEnOworLS0gYSBQSyBkZWxldGUgdGhhdCBmYWlscyBiZWNhdXNlIGJvdGggYXJlIHJlZmVy ZW5jZWQ6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wZXIgV0hFUkUgaWQgPSAnWzUsNV0nIEFO RCB2YWxpZF9mcm9tID0gJzIwMTgtMDEtMDEnIEFORCB2YWxpZF90aWwgPSAnMjAxOC0wMi0w MSc7CitFUlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRlbXBvcmFsX3BlciIg dmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfZmtfcGVyMnBlcl9m ayIgb24gdGFibGUgInRlbXBvcmFsX2ZrX3BlcjJwZXIiCitERVRBSUw6ICBLZXkgKGlkLCB2 YWxpZF9mcm9tLCB2YWxpZF90aWwpPShbNSw2KSwgTW9uIEphbiAwMSAwMDowMDowMCAyMDE4 LCBUaHUgRmViIDAxIDAwOjAwOjAwIDIwMTgpIGlzIHN0aWxsIHJlZmVyZW5jZWQgZnJvbSB0 YWJsZSAidGVtcG9yYWxfZmtfcGVyMnBlciIuCistLSB0aGVuIGRlbGV0ZSB0aGUgb2JqZWN0 aW5nIEZLIHJlY29yZCBhbmQgdGhlIHNhbWUgUEsgZGVsZXRlIHN1Y2NlZWRzOgorREVMRVRF IEZST00gdGVtcG9yYWxfZmtfcGVyMnBlciBXSEVSRSBpZCA9ICdbMywzXSc7CitERUxFVEUg RlJPTSB0ZW1wb3JhbF9wZXIgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9mcm9tID0g JzIwMTgtMDEtMDEnIEFORCB2YWxpZF90aWwgPSAnMjAxOC0wMi0wMSc7CistLQorLS0gdGVz dCBGSyBwYXJlbnQgZGVsZXRlcyBSRVNUUklDVAorLS0KK0FMVEVSIFRBQkxFIHRlbXBvcmFs X2ZrX3BlcjJwZXIKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcGVyMnBlcl9mazsK K0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3BlcjJwZXIKKwlBREQgQ09OU1RSQUlOVCB0ZW1w b3JhbF9ma19wZXIycGVyX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZh bGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfcGVyCisJT04gREVMRVRFIFJFU1RSSUNU OworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGVyIFZBTFVFUyAoJ1s1LDVdJywgJzIwMTgtMDEt MDEnLCAnMjAxOC0wMi0wMScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcGVyIFdIRVJFIGlk ID0gJ1s1LDVdJzsKKy0tIGEgUEsgZGVsZXRlIHRoYXQgc3VjY2VlZHMgZXZlbiB0aG91Z2gg dGhlIG51bWVyaWMgaWQgaXMgcmVmZXJlbmNlZCBiZWNhdXNlIHRoZSByYW5nZSBpc24ndDoK K0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BlciBWQUxVRVMgKCdbNSw1XScsICcyMDE4LTAxLTAx JywgJzIwMTgtMDItMDEnKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BlciBWQUxVRVMgKCdb NSw1XScsICcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKTsKK0lOU0VSVCBJTlRPIHRlbXBv cmFsX2ZrX3BlcjJwZXIgVkFMVUVTICgnWzMsM10nLCAnMjAxOC0wMS0wNScsICcyMDE4LTAx LTEwJywgJ1s1LDVdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wZXIgV0hFUkUgaWQgPSAn WzUsNV0nIEFORCB2YWxpZF9mcm9tID0gJzIwMTgtMDItMDEnIEFORCB2YWxpZF90aWwgPSAn MjAxOC0wMy0wMSc7CistLSBhIFBLIGRlbGV0ZSB0aGF0IGZhaWxzIGJlY2F1c2UgYm90aCBh cmUgcmVmZXJlbmNlZDoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3BlciBXSEVSRSBpZCA9ICdb NSw1XScgQU5EIHZhbGlkX2Zyb20gPSAnMjAxOC0wMS0wMScgQU5EIHZhbGlkX3RpbCA9ICcy MDE4LTAyLTAxJzsKK0VSUk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAidGVtcG9y YWxfcGVyIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9ma19w ZXIycGVyX2ZrIiBvbiB0YWJsZSAidGVtcG9yYWxfZmtfcGVyMnBlciIKK0RFVEFJTDogIEtl eSAoaWQsIHZhbGlkX2Zyb20sIHZhbGlkX3RpbCk9KFs1LDYpLCBNb24gSmFuIDAxIDAwOjAw OjAwIDIwMTgsIFRodSBGZWIgMDEgMDA6MDA6MDAgMjAxOCkgaXMgc3RpbGwgcmVmZXJlbmNl ZCBmcm9tIHRhYmxlICJ0ZW1wb3JhbF9ma19wZXIycGVyIi4KKy0tIHRoZW4gZGVsZXRlIHRo ZSBvYmplY3RpbmcgRksgcmVjb3JkIGFuZCB0aGUgc2FtZSBQSyBkZWxldGUgc3VjY2VlZHM6 CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19wZXIycGVyIFdIRVJFIGlkID0gJ1szLDNdJzsK K0RFTEVURSBGUk9NIHRlbXBvcmFsX3BlciBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlk X2Zyb20gPSAnMjAxOC0wMS0wMScgQU5EIHZhbGlkX3RpbCA9ICcyMDE4LTAyLTAxJzsKKy0t CistLSB0ZXN0IE9OIFVQREFURS9ERUxFVEUgb3B0aW9ucworLS0KKy0tIHRlc3QgRksgcGFy ZW50IHVwZGF0ZXMgQ0FTQ0FERQorSU5TRVJUIElOVE8gdGVtcG9yYWxfcGVyIFZBTFVFUyAo J1s2LDZdJywgJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpOworSU5TRVJUIElOVE8gdGVt cG9yYWxfZmtfcGVyMnBlciBWQUxVRVMgKCdbNCw0XScsICcyMDE4LTAxLTAxJywgJzIwMjEt MDEtMDEnLCAnWzYsNl0nKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3BlcjJwZXIKKwlE Uk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcGVyMnBlcl9maywKKwlBREQgQ09OU1RSQUlO VCB0ZW1wb3JhbF9ma19wZXIycGVyX2ZrCisJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBF UklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9wZXIKKwkJT04gREVMRVRF IENBU0NBREUgT04gVVBEQVRFIENBU0NBREU7CitVUERBVEUgdGVtcG9yYWxfcGVyIEZPUiBQ T1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBT RVQgaWQgPSAnWzcsN10nIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVt cG9yYWxfZmtfcGVyMnBlciBXSEVSRSBpZCA9ICdbNCw0XSc7CisgIGlkICAgfCAgICAgICAg dmFsaWRfZnJvbSAgICAgICAgfCAgICAgICAgdmFsaWRfdGlsICAgICAgICAgfCBwYXJlbnRf aWQgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzQsNSkgfCBUdWUgSmFuIDAxIDAwOjAwOjAw IDIwMTkgfCBXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAgfCBbNyw4KQorIFs0LDUpIHwgTW9u IEphbiAwMSAwMDowMDowMCAyMDE4IHwgVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IHwgWzYs NykKKyBbNCw1KSB8IFdlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCB8IEZyaSBKYW4gMDEgMDA6 MDA6MDAgMjAyMSB8IFs2LDcpCisoMyByb3dzKQorCitVUERBVEUgdGVtcG9yYWxfcGVyIFNF VCBpZCA9ICdbNyw3XScgV0hFUkUgaWQgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1w b3JhbF9ma19wZXIycGVyIFdIRVJFIGlkID0gJ1s0LDRdJzsKKyAgaWQgICB8ICAgICAgICB2 YWxpZF9mcm9tICAgICAgICB8ICAgICAgICB2YWxpZF90aWwgICAgICAgICB8IHBhcmVudF9p ZCAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbNCw1KSB8IFR1ZSBKYW4gMDEgMDA6MDA6MDAg MjAxOSB8IFdlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCB8IFs3LDgpCisgWzQsNSkgfCBNb24g SmFuIDAxIDAwOjAwOjAwIDIwMTggfCBUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkgfCBbNyw4 KQorIFs0LDUpIHwgV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIHwgRnJpIEphbiAwMSAwMDow MDowMCAyMDIxIHwgWzcsOCkKKygzIHJvd3MpCisKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3Bl ciBWQUxVRVMgKCdbMTUsMTVdJywgJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpOworSU5T RVJUIElOVE8gdGVtcG9yYWxfcGVyIFZBTFVFUyAoJ1sxNSwxNV0nLCAnMjAyMC0wMS0wMScs ICcyMDIxLTAxLTAxJyk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19wZXIycGVyIFZBTFVF UyAoJ1sxMCwxMF0nLCAnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJywgJ1sxNSwxNV0nKTsK K1VQREFURSB0ZW1wb3JhbF9wZXIgU0VUIGlkID0gJ1sxNiwxNl0nIFdIRVJFIGlkID0gJ1sx NSwxNV0nIEFORCB0c3JhbmdlKHZhbGlkX2Zyb20sIHZhbGlkX3RpbCkgQD4gJzIwMTktMDEt MDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3BlcjJwZXIgV0hF UkUgaWQgPSAnWzEwLDEwXSc7CisgICBpZCAgICB8ICAgICAgICB2YWxpZF9mcm9tICAgICAg ICB8ICAgICAgICB2YWxpZF90aWwgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLQorIFsxMCwxMSkgfCBNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTggfCBXZWQg SmFuIDAxIDAwOjAwOjAwIDIwMjAgfCBbMTYsMTcpCisgWzEwLDExKSB8IFdlZCBKYW4gMDEg MDA6MDA6MDAgMjAyMCB8IEZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSB8IFsxNSwxNikKKygy IHJvd3MpCisKKy0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgQ0FTQ0FERQorSU5TRVJUIElO VE8gdGVtcG9yYWxfcGVyIFZBTFVFUyAoJ1s4LDhdJywgJzIwMTgtMDEtMDEnLCAnMjAyMS0w MS0wMScpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcGVyMnBlciBWQUxVRVMgKCdbNSw1 XScsICcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnLCAnWzgsOF0nKTsKK0RFTEVURSBGUk9N IHRlbXBvcmFsX3BlciBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAx JyBUTyAnMjAyMC0wMS0wMScgV0hFUkUgaWQgPSAnWzgsOF0nOworU0VMRUNUICogRlJPTSB0 ZW1wb3JhbF9ma19wZXIycGVyIFdIRVJFIGlkID0gJ1s1LDVdJzsKKyAgaWQgICB8ICAgICAg ICB2YWxpZF9mcm9tICAgICAgICB8ICAgICAgICB2YWxpZF90aWwgICAgICAgICB8IHBhcmVu dF9pZCAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbNSw2KSB8IE1vbiBKYW4gMDEgMDA6MDA6 MDAgMjAxOCB8IFR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSB8IFs4LDkpCisgWzUsNikgfCBX ZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAgfCBGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEgfCBb OCw5KQorKDIgcm93cykKKworREVMRVRFIEZST00gdGVtcG9yYWxfcGVyIFdIRVJFIGlkID0g J1s4LDhdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcGVyMnBlciBXSEVSRSBpZCA9 ICdbNSw1XSc7CisgaWQgfCB2YWxpZF9mcm9tIHwgdmFsaWRfdGlsIHwgcGFyZW50X2lkIAor LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKygwIHJvd3MpCisK K0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BlciBWQUxVRVMgKCdbMTcsMTddJywgJzIwMTgtMDEt MDEnLCAnMjAyMC0wMS0wMScpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGVyIFZBTFVFUyAo J1sxNywxN10nLCAnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJyk7CitJTlNFUlQgSU5UTyB0 ZW1wb3JhbF9ma19wZXIycGVyIFZBTFVFUyAoJ1sxMSwxMV0nLCAnMjAxOC0wMS0wMScsICcy MDIxLTAxLTAxJywgJ1sxNywxN10nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3BlciBXSEVS RSBpZCA9ICdbMTcsMTddJyBBTkQgdHNyYW5nZSh2YWxpZF9mcm9tLCB2YWxpZF90aWwpIEA+ ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19w ZXIycGVyIFdIRVJFIGlkID0gJ1sxMSwxMV0nOworICAgaWQgICAgfCAgICAgICAgdmFsaWRf ZnJvbSAgICAgICAgfCAgICAgICAgdmFsaWRfdGlsICAgICAgICAgfCBwYXJlbnRfaWQgCist LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMTEsMTIpIHwgV2VkIEphbiAwMSAwMDowMDowMCAy MDIwIHwgRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIHwgWzE3LDE4KQorKDEgcm93KQorCist LSB0ZXN0IEZLIHBhcmVudCB1cGRhdGVzIFNFVCBOVUxMCitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9wZXIgVkFMVUVTICgnWzksOV0nLCAnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyk7CitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19wZXIycGVyIFZBTFVFUyAoJ1s2LDZdJywgJzIwMTgt MDEtMDEnLCAnMjAyMS0wMS0wMScsICdbOSw5XScpOworQUxURVIgVEFCTEUgdGVtcG9yYWxf ZmtfcGVyMnBlcgorCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19wZXIycGVyX2ZrLAor CUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3BlcjJwZXJfZmsKKwkJRk9SRUlHTiBLRVkg KHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3Bl cgorCQlPTiBERUxFVEUgU0VUIE5VTEwgT04gVVBEQVRFIFNFVCBOVUxMOworVVBEQVRFIHRl bXBvcmFsX3BlciBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBU TyAnMjAyMC0wMS0wMScgU0VUIGlkID0gJ1sxMCwxMF0nIFdIRVJFIGlkID0gJ1s5LDldJzsK K1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcGVyMnBlciBXSEVSRSBpZCA9ICdbNiw2XSc7 CisgIGlkICAgfCAgICAgICAgdmFsaWRfZnJvbSAgICAgICAgfCAgICAgICAgdmFsaWRfdGls ICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzYsNykgfCBU dWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkgfCBXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAgfCAK KyBbNiw3KSB8IE1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCB8IFR1ZSBKYW4gMDEgMDA6MDA6 MDAgMjAxOSB8IFs5LDEwKQorIFs2LDcpIHwgV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIHwg RnJpIEphbiAwMSAwMDowMDowMCAyMDIxIHwgWzksMTApCisoMyByb3dzKQorCitVUERBVEUg dGVtcG9yYWxfcGVyIFNFVCBpZCA9ICdbMTAsMTBdJyBXSEVSRSBpZCA9ICdbOSw5XSc7CitT RUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3BlcjJwZXIgV0hFUkUgaWQgPSAnWzYsNl0nOwor ICBpZCAgIHwgICAgICAgIHZhbGlkX2Zyb20gICAgICAgIHwgICAgICAgIHZhbGlkX3RpbCAg ICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFs2LDcpIHwgVHVl IEphbiAwMSAwMDowMDowMCAyMDE5IHwgV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIHwgCisg WzYsNykgfCBNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTggfCBUdWUgSmFuIDAxIDAwOjAwOjAw IDIwMTkgfCAKKyBbNiw3KSB8IFdlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCB8IEZyaSBKYW4g MDEgMDA6MDA6MDAgMjAyMSB8IAorKDMgcm93cykKKworSU5TRVJUIElOVE8gdGVtcG9yYWxf cGVyIFZBTFVFUyAoJ1sxOCwxOF0nLCAnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJyk7CitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9wZXIgVkFMVUVTICgnWzE4LDE4XScsICcyMDIwLTAxLTAx JywgJzIwMjEtMDEtMDEnKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3BlcjJwZXIgVkFM VUVTICgnWzEyLDEyXScsICcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnLCAnWzE4LDE4XScp OworVVBEQVRFIHRlbXBvcmFsX3BlciBTRVQgaWQgPSAnWzE5LDE5XScgV0hFUkUgaWQgPSAn WzE4LDE4XScgQU5EIHRzcmFuZ2UodmFsaWRfZnJvbSwgdmFsaWRfdGlsKSBAPiAnMjAxOS0w MS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcGVyMnBlciBX SEVSRSBpZCA9ICdbMTIsMTJdJzsKKyAgIGlkICAgIHwgICAgICAgIHZhbGlkX2Zyb20gICAg ICAgIHwgICAgICAgIHZhbGlkX3RpbCAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tCisgWzEyLDEzKSB8IE1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCB8IFdl ZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCB8IAorIFsxMiwxMykgfCBXZWQgSmFuIDAxIDAwOjAw OjAwIDIwMjAgfCBGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEgfCBbMTgsMTkpCisoMiByb3dz KQorCistLSB0ZXN0IEZLIHBhcmVudCBkZWxldGVzIFNFVCBOVUxMCitJTlNFUlQgSU5UTyB0 ZW1wb3JhbF9wZXIgVkFMVUVTICgnWzExLDExXScsICcyMDE4LTAxLTAxJywgJzIwMjEtMDEt MDEnKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3BlcjJwZXIgVkFMVUVTICgnWzcsN10n LCAnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJywgJ1sxMSwxMV0nKTsKK0RFTEVURSBGUk9N IHRlbXBvcmFsX3BlciBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAx JyBUTyAnMjAyMC0wMS0wMScgV0hFUkUgaWQgPSAnWzExLDExXSc7CitTRUxFQ1QgKiBGUk9N IHRlbXBvcmFsX2ZrX3BlcjJwZXIgV0hFUkUgaWQgPSAnWzcsN10nOworICBpZCAgIHwgICAg ICAgIHZhbGlkX2Zyb20gICAgICAgIHwgICAgICAgIHZhbGlkX3RpbCAgICAgICAgIHwgcGFy ZW50X2lkIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFs3LDgpIHwgVHVlIEphbiAwMSAwMDow MDowMCAyMDE5IHwgV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIHwgCisgWzcsOCkgfCBNb24g SmFuIDAxIDAwOjAwOjAwIDIwMTggfCBUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkgfCBbMTEs MTIpCisgWzcsOCkgfCBXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAgfCBGcmkgSmFuIDAxIDAw OjAwOjAwIDIwMjEgfCBbMTEsMTIpCisoMyByb3dzKQorCitERUxFVEUgRlJPTSB0ZW1wb3Jh bF9wZXIgV0hFUkUgaWQgPSAnWzExLDExXSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2Zr X3BlcjJwZXIgV0hFUkUgaWQgPSAnWzcsN10nOworICBpZCAgIHwgICAgICAgIHZhbGlkX2Zy b20gICAgICAgIHwgICAgICAgIHZhbGlkX3RpbCAgICAgICAgIHwgcGFyZW50X2lkIAorLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLQorIFs3LDgpIHwgVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IHwg V2VkIEphbiAwMSAwMDowMDowMCAyMDIwIHwgCisgWzcsOCkgfCBNb24gSmFuIDAxIDAwOjAw OjAwIDIwMTggfCBUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkgfCAKKyBbNyw4KSB8IFdlZCBK YW4gMDEgMDA6MDA6MDAgMjAyMCB8IEZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSB8IAorKDMg cm93cykKKworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGVyIFZBTFVFUyAoJ1syMCwyMF0nLCAn MjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJyk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wZXIg VkFMVUVTICgnWzIwLDIwXScsICcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKTsKK0lOU0VS VCBJTlRPIHRlbXBvcmFsX2ZrX3BlcjJwZXIgVkFMVUVTICgnWzEzLDEzXScsICcyMDE4LTAx LTAxJywgJzIwMjEtMDEtMDEnLCAnWzIwLDIwXScpOworREVMRVRFIEZST00gdGVtcG9yYWxf cGVyIFdIRVJFIGlkID0gJ1syMCwyMF0nIEFORCB0c3JhbmdlKHZhbGlkX2Zyb20sIHZhbGlk X3RpbCkgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHRlbXBv cmFsX2ZrX3BlcjJwZXIgV0hFUkUgaWQgPSAnWzEzLDEzXSc7CisgICBpZCAgICB8ICAgICAg ICB2YWxpZF9mcm9tICAgICAgICB8ICAgICAgICB2YWxpZF90aWwgICAgICAgICB8IHBhcmVu dF9pZCAKKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFsxMywxNCkgfCBNb24gSmFuIDAxIDAw OjAwOjAwIDIwMTggfCBXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAgfCAKKyBbMTMsMTQpIHwg V2VkIEphbiAwMSAwMDowMDowMCAyMDIwIHwgRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIHwg WzIwLDIxKQorKDIgcm93cykKKworLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBTRVQgREVG QVVMVAorSU5TRVJUIElOVE8gdGVtcG9yYWxfcGVyIFZBTFVFUyAoJ1stMSwtMV0nLCBudWxs LCBudWxsKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BlciBWQUxVRVMgKCdbMTIsMTJdJywg JzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtf cGVyMnBlciBWQUxVRVMgKCdbOCw4XScsICcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnLCAn WzEyLDEyXScpOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcGVyMnBlcgorICBBTFRFUiBD T0xVTU4gcGFyZW50X2lkIFNFVCBERUZBVUxUICdbLTEsLTFdJywKKwlEUk9QIENPTlNUUkFJ TlQgdGVtcG9yYWxfZmtfcGVyMnBlcl9maywKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9m a19wZXIycGVyX2ZrCisJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9h dCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9wZXIKKwkJT04gREVMRVRFIFNFVCBERUZBVUxU IE9OIFVQREFURSBTRVQgREVGQVVMVDsKK1VQREFURSB0ZW1wb3JhbF9wZXIgRk9SIFBPUlRJ T04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFNFVCBp ZCA9ICdbMTMsMTNdJyBXSEVSRSBpZCA9ICdbMTIsMTJdJzsKK1NFTEVDVCAqIEZST00gdGVt cG9yYWxfZmtfcGVyMnBlciBXSEVSRSBpZCA9ICdbOCw4XSc7CisgIGlkICAgfCAgICAgICAg dmFsaWRfZnJvbSAgICAgICAgfCAgICAgICAgdmFsaWRfdGlsICAgICAgICAgfCBwYXJlbnRf aWQgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzgsOSkgfCBUdWUgSmFuIDAxIDAwOjAwOjAw IDIwMTkgfCBXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAgfCBbLTEsMCkKKyBbOCw5KSB8IE1v biBKYW4gMDEgMDA6MDA6MDAgMjAxOCB8IFR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSB8IFsx MiwxMykKKyBbOCw5KSB8IFdlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCB8IEZyaSBKYW4gMDEg MDA6MDA6MDAgMjAyMSB8IFsxMiwxMykKKygzIHJvd3MpCisKK1VQREFURSB0ZW1wb3JhbF9w ZXIgU0VUIGlkID0gJ1sxMywxM10nIFdIRVJFIGlkID0gJ1sxMiwxMl0nOworU0VMRUNUICog RlJPTSB0ZW1wb3JhbF9ma19wZXIycGVyIFdIRVJFIGlkID0gJ1s4LDhdJzsKKyAgaWQgICB8 ICAgICAgICB2YWxpZF9mcm9tICAgICAgICB8ICAgICAgICB2YWxpZF90aWwgICAgICAgICB8 IHBhcmVudF9pZCAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbOCw5KSB8IFR1ZSBKYW4gMDEg MDA6MDA6MDAgMjAxOSB8IFdlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCB8IFstMSwwKQorIFs4 LDkpIHwgTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IHwgVHVlIEphbiAwMSAwMDowMDowMCAy MDE5IHwgWy0xLDApCisgWzgsOSkgfCBXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAgfCBGcmkg SmFuIDAxIDAwOjAwOjAwIDIwMjEgfCBbLTEsMCkKKygzIHJvd3MpCisKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX3BlciBWQUxVRVMgKCdbMjIsMjJdJywgJzIwMTgtMDEtMDEnLCAnMjAyMC0w MS0wMScpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGVyIFZBTFVFUyAoJ1syMiwyMl0nLCAn MjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJyk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19w ZXIycGVyIFZBTFVFUyAoJ1sxNCwxNF0nLCAnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJywg J1syMiwyMl0nKTsKK1VQREFURSB0ZW1wb3JhbF9wZXIgU0VUIGlkID0gJ1syMywyM10nIFdI RVJFIGlkID0gJ1syMiwyMl0nIEFORCB0c3JhbmdlKHZhbGlkX2Zyb20sIHZhbGlkX3RpbCkg QD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2Zr X3BlcjJwZXIgV0hFUkUgaWQgPSAnWzE0LDE0XSc7CisgICBpZCAgICB8ICAgICAgICB2YWxp ZF9mcm9tICAgICAgICB8ICAgICAgICB2YWxpZF90aWwgICAgICAgICB8IHBhcmVudF9pZCAK Ky0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFsxNCwxNSkgfCBNb24gSmFuIDAxIDAwOjAwOjAw IDIwMTggfCBXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAgfCBbLTEsMCkKKyBbMTQsMTUpIHwg V2VkIEphbiAwMSAwMDowMDowMCAyMDIwIHwgRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIHwg WzIyLDIzKQorKDIgcm93cykKKworLS0gdGVzdCBGSyBwYXJlbnQgZGVsZXRlcyBTRVQgREVG QVVMVAorSU5TRVJUIElOVE8gdGVtcG9yYWxfcGVyIFZBTFVFUyAoJ1sxNCwxNF0nLCAnMjAx OC0wMS0wMScsICcyMDIxLTAxLTAxJyk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19wZXIy cGVyIFZBTFVFUyAoJ1s5LDldJywgJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScsICdbMTQs MTRdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wZXIgRk9SIFBPUlRJT04gT0YgdmFsaWRf YXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFdIRVJFIGlkID0gJ1sxNCwx NF0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19wZXIycGVyIFdIRVJFIGlkID0gJ1s5 LDldJzsKKyAgIGlkICAgfCAgICAgICAgdmFsaWRfZnJvbSAgICAgICAgfCAgICAgICAgdmFs aWRfdGlsICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFs5 LDEwKSB8IFR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSB8IFdlZCBKYW4gMDEgMDA6MDA6MDAg MjAyMCB8IFstMSwwKQorIFs5LDEwKSB8IE1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCB8IFR1 ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSB8IFsxNCwxNSkKKyBbOSwxMCkgfCBXZWQgSmFuIDAx IDAwOjAwOjAwIDIwMjAgfCBGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEgfCBbMTQsMTUpCiso MyByb3dzKQorCitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wZXIgV0hFUkUgaWQgPSAnWzE0LDE0 XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3BlcjJwZXIgV0hFUkUgaWQgPSAnWzks OV0nOworICAgaWQgICB8ICAgICAgICB2YWxpZF9mcm9tICAgICAgICB8ICAgICAgICB2YWxp ZF90aWwgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzks MTApIHwgVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IHwgV2VkIEphbiAwMSAwMDowMDowMCAy MDIwIHwgWy0xLDApCisgWzksMTApIHwgTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IHwgVHVl IEphbiAwMSAwMDowMDowMCAyMDE5IHwgWy0xLDApCisgWzksMTApIHwgV2VkIEphbiAwMSAw MDowMDowMCAyMDIwIHwgRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIHwgWy0xLDApCisoMyBy b3dzKQorCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wZXIgVkFMVUVTICgnWzI0LDI0XScsICcy MDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BlciBW QUxVRVMgKCdbMjQsMjRdJywgJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpOworSU5TRVJU IElOVE8gdGVtcG9yYWxfZmtfcGVyMnBlciBWQUxVRVMgKCdbMTUsMTVdJywgJzIwMTgtMDEt MDEnLCAnMjAyMS0wMS0wMScsICdbMjQsMjRdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9w ZXIgV0hFUkUgaWQgPSAnWzI0LDI0XScgQU5EIHRzcmFuZ2UodmFsaWRfZnJvbSwgdmFsaWRf dGlsKSBAPiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gdGVtcG9y YWxfZmtfcGVyMnBlciBXSEVSRSBpZCA9ICdbMTUsMTVdJzsKKyAgIGlkICAgIHwgICAgICAg IHZhbGlkX2Zyb20gICAgICAgIHwgICAgICAgIHZhbGlkX3RpbCAgICAgICAgIHwgcGFyZW50 X2lkIAorLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzE1LDE2KSB8IE1vbiBKYW4gMDEgMDA6 MDA6MDAgMjAxOCB8IFdlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCB8IFstMSwwKQorIFsxNSwx NikgfCBXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAgfCBGcmkgSmFuIDAxIDAwOjAwOjAwIDIw MjEgfCBbMjQsMjUpCisoMiByb3dzKQorCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNz L3NxbC93aXRob3V0X292ZXJsYXBzLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3dpdGhv dXRfb3ZlcmxhcHMuc3FsCmluZGV4IDQ2MzRhNWVjYzkuLmQ3OWY2MDdhOTQgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3dpdGhvdXRfb3ZlcmxhcHMuc3FsCisrKyBiL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL3dpdGhvdXRfb3ZlcmxhcHMuc3FsCkBAIC00MDYsMyArNDA2 LDEzODQgQEAgQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkICgKIAlDT05TVFJB SU5UIHRlbXBvcmFsX3Bhcml0aW9uZWRfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBX SVRIT1VUIE9WRVJMQVBTKQogKSBQQVJUSVRJT04gQlkgTElTVCAoaWQpOwogLS0gVE9ETzog YXR0YWNoIHNvbWUgcGFydGl0aW9ucywgaW5zZXJ0IGludG8gdGhlbSwgdXBkYXRlIHRoZW0g d2l0aCBhbmQgd2l0aG91dCBGT1IgUE9SVElPTiBPRiwgZGVsZXRlIHRoZW0gdGhlIHNhbWUg d2F5LgorLS0KKy0tIHRlc3QgRksgZGVwZW5kZW5jaWVzCistLQorCistLSBjYW4ndCBkcm9w IGEgcmFuZ2UgcmVmZXJlbmNlZCBieSBhbiBGSywgdW5sZXNzIHdpdGggQ0FTQ0FERQorQ1JF QVRFIFRBQkxFIHRlbXBvcmFsMyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFu Z2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbDNfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9h dCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ma19ybmcy cm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5nZSwKKwlwYXJlbnRfaWQg aW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19wayBQUklNQVJZ IEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAorCUNPTlNUUkFJTlQgdGVt cG9yYWxfZmtfcm5nMnJuZ19mayBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFs aWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWwzIChpZCwgUEVSSU9EIHZhbGlkX2F0KQor KTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsMyBEUk9QIENPTFVNTiB2YWxpZF9hdDsKK0FMVEVS IFRBQkxFIHRlbXBvcmFsMyBEUk9QIENPTFVNTiB2YWxpZF9hdCBDQVNDQURFOworRFJPUCBU QUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nOworRFJPUCBUQUJMRSB0ZW1wb3JhbDM7CisKKy0t IGNhbid0IGRyb3AgYSBQRVJJT0QgcmVmZXJlbmNlZCBieSBhbiBGSywgdW5sZXNzIHdpdGgg Q0FTQ0FERQorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsMyAoCisJaWQgaW50NHJhbmdlLAorCXZh bGlkX2Zyb20gdGltZXN0YW1wLAorCXZhbGlkX3RpbCB0aW1lc3RhbXAsCisJUEVSSU9EIEZP UiB2YWxpZF9hdCAodmFsaWRfZnJvbSwgdmFsaWRfdGlsKSwKKwlDT05TVFJBSU5UIHRlbXBv cmFsM19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCisp OworQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcgKAorCWlkIGludDRyYW5nZSwK Kwl2YWxpZF9hdCB0c3JhbmdlLAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlO VCB0ZW1wb3JhbF9ma19ybmcycm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lU SE9VVCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIEZP UkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0 ZW1wb3JhbDMgKGlkLCBQRVJJT0QgdmFsaWRfYXQpCispOworQUxURVIgVEFCTEUgdGVtcG9y YWwzIERST1AgUEVSSU9EIEZPUiB2YWxpZF9hdDsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsMyBE Uk9QIFBFUklPRCBGT1IgdmFsaWRfYXQgQ0FTQ0FERTsKK0RST1AgVEFCTEUgdGVtcG9yYWxf Zmtfcm5nMnJuZzsKK0RST1AgVEFCTEUgdGVtcG9yYWwzOworCistLQorLS0gdGVzdCBGT1JF SUdOIEtFWSwgcmFuZ2UgcmVmZXJlbmNlcyByYW5nZQorLS0KKworLS0gQ2FuJ3QgY3JlYXRl IGEgRksgd2l0aCBhIG1pc21hdGNoZWQgcmFuZ2UgdHlwZQorQ1JFQVRFIFRBQkxFIHRlbXBv cmFsX2ZrX3JuZzJybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCBpbnQ0cmFuZ2Us CisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJy bmdfcGsyIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJ Q09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrMiBGT1JFSUdOIEtFWSAocGFyZW50 X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nIChpZCwg UEVSSU9EIHZhbGlkX2F0KQorKTsKKworQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJy bmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCXBhcmVudF9pZCBp bnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX3BrIFBSSU1BUlkg S0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCB0ZW1w b3JhbF9ma19ybmcycm5nX2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxp ZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcgKGlkLCBQRVJJT0QgdmFsaWRfYXQp CispOworRFJPUCBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nOworCistLSB3aXRoIGluZmVy cmVkIFBLIG9uIHRoZSByZWZlcmVuY2VkIHRhYmxlOgorQ1JFQVRFIFRBQkxFIHRlbXBvcmFs X2ZrX3JuZzJybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCXBh cmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX3Br IFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RS QUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBF UklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcKKyk7CitEUk9QIFRB QkxFIHRlbXBvcmFsX2ZrX3JuZzJybmc7CisKKy0tIHNob3VsZCBmYWlsIGJlY2F1c2Ugb2Yg ZHVwbGljYXRlIHJlZmVyZW5jZWQgY29sdW1uczoKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9m a19ybmcycm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5nZSwKKwlwYXJl bnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19wayBQ UklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAorCUNPTlNUUkFJ TlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mayBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJ T0QgcGFyZW50X2lkKQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZyAoaWQsIFBFUklPRCBp ZCkKKyk7CisKKy0tCistLSB0ZXN0IEFMVEVSIFRBQkxFIEFERCBDT05TVFJBSU5UCistLQor CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZyAoCisJaWQgaW50NHJhbmdlLAor CXZhbGlkX2F0IHRzcmFuZ2UsCisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5U IHRlbXBvcmFsX2ZrX3JuZzJybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRI T1VUIE9WRVJMQVBTKQorKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlB REQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisJRk9SRUlHTiBLRVkgKHBh cmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nIChp ZCwgUEVSSU9EIHZhbGlkX2F0KTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcK KwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mazsKKy0tIHdpdGggaW5m ZXJyZWQgUEsgb24gdGhlIHJlZmVyZW5jZWQgdGFibGU6CitBTFRFUiBUQUJMRSB0ZW1wb3Jh bF9ma19ybmcycm5nCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mawor CUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VT IHRlbXBvcmFsX3JuZzsKKworLS0gc2hvdWxkIGZhaWwgYmVjYXVzZSBvZiBkdXBsaWNhdGUg cmVmZXJlbmNlZCBjb2x1bW5zOgorQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZwor CUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsyCisJRk9SRUlHTiBLRVkg KHBhcmVudF9pZCwgUEVSSU9EIHBhcmVudF9pZCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3Ju ZyAoaWQsIFBFUklPRCBpZCk7CisKKy0tCistLSB0ZXN0IHdpdGggcm93cyBhbHJlYWR5Cist LQorCitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nOworQUxURVIgVEFCTEUgdGVt cG9yYWxfZmtfcm5nMnJuZworCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5n X2ZrOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMSwxXScs IHRzcmFuZ2UoJzIwMTgtMDEtMDInLCAnMjAxOC0wMi0wMScpLCAnWzEsMV0nKTsKK0FMVEVS IFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9m a19ybmcycm5nX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0 KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtf cm5nMnJuZworCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrOworSU5T RVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMiwyXScsIHRzcmFuZ2Uo JzIwMTgtMDEtMDInLCAnMjAxOC0wNC0wMScpLCAnWzEsMV0nKTsKKy0tIHNob3VsZCBmYWls OgorQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCUFERCBDT05TVFJBSU5UIHRl bXBvcmFsX2ZrX3JuZzJybmdfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0Qg dmFsaWRfYXQpCisJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmc7CistLSBva2F5IGFnYWluOgor REVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZzsKK0FMVEVSIFRBQkxFIHRlbXBvcmFs X2ZrX3JuZzJybmcKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisJ Rk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMg dGVtcG9yYWxfcm5nOworCistLQorLS0gdGVzdCBwZ19nZXRfY29uc3RyYWludGRlZgorLS0K KworU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVmKG9pZCkgRlJPTSBwZ19jb25zdHJhaW50 IFdIRVJFIGNvbm5hbWUgPSAndGVtcG9yYWxfZmtfcm5nMnJuZ19mayc7CisKKy0tCistLSB0 ZXN0IEZLIGNoaWxkIGluc2VydHMKKy0tCisKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3Ju ZzJybmcgVkFMVUVTICgnWzEsMV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAyJywgJzIwMTgtMDIt MDEnKSwgJ1sxLDFdJyk7CistLSBzaG91bGQgZmFpbDoKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X2ZrX3JuZzJybmcgVkFMVUVTICgnWzIsMl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAyJywgJzIw MTgtMDQtMDEnKSwgJ1sxLDFdJyk7CistLSBub3cgaXQgc2hvdWxkIHdvcms6CitJTlNFUlQg SU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzEsMV0nLCB0c3JhbmdlKCcyMDE4LTAyLTAz JywgJzIwMTgtMDMtMDMnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZB TFVFUyAoJ1syLDJdJywgdHNyYW5nZSgnMjAxOC0wMS0wMicsICcyMDE4LTA0LTAxJyksICdb MSwxXScpOworCistLQorLS0gdGVzdCBGSyBjaGlsZCB1cGRhdGVzCistLQorCitVUERBVEUg dGVtcG9yYWxfZmtfcm5nMnJuZyBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAy JywgJzIwMTgtMDMtMDEnKSBXSEVSRSBpZCA9ICdbMSwxXSc7CistLSBzaG91bGQgZmFpbDoK K1VQREFURSB0ZW1wb3JhbF9ma19ybmcycm5nIFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIw MTgtMDEtMDInLCAnMjAxOC0wNS0wMScpIFdIRVJFIGlkID0gJ1sxLDFdJzsKK1VQREFURSB0 ZW1wb3JhbF9ma19ybmcycm5nIFNFVCBwYXJlbnRfaWQgPSAnWzgsOF0nIFdIRVJFIGlkID0g J1sxLDFdJzsKKworLS0KKy0tIHRlc3QgRksgcGFyZW50IHVwZGF0ZXMgTk8gQUNUSU9OCist LQorCistLSBhIFBLIHVwZGF0ZSB0aGF0IHN1Y2NlZWRzIGJlY2F1c2UgdGhlIG51bWVyaWMg aWQgaXNuJ3QgcmVmZXJlbmNlZDoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMg KCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK1VQREFU RSB0ZW1wb3JhbF9ybmcgU0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxNi0wMS0wMScsICcy MDE2LTAyLTAxJykgV0hFUkUgaWQgPSAnWzUsNV0nOworLS0gYSBQSyB1cGRhdGUgdGhhdCBz dWNjZWVkcyBldmVuIHRob3VnaCB0aGUgbnVtZXJpYyBpZCBpcyByZWZlcmVuY2VkIGJlY2F1 c2UgdGhlIHJhbmdlIGlzbid0OgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlk ID0gJ1s1LDVdJzsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNSw1XScs IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK0lOU0VSVCBJTlRPIHRl bXBvcmFsX3JuZyBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAx OC0wMy0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgn WzMsM10nLCB0c3JhbmdlKCcyMDE4LTAxLTA1JywgJzIwMTgtMDEtMTAnKSwgJ1s1LDVdJyk7 CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDIt MDEnLCAnMjAxNi0wMy0wMScpCitXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0g dHNyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJyk7CistLSBhIFBLIHVwZGF0ZSB0 aGF0IGZhaWxzIGJlY2F1c2UgYm90aCBhcmUgcmVmZXJlbmNlZDoKK1VQREFURSB0ZW1wb3Jh bF9ybmcgU0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxNi0wMS0wMScsICcyMDE2LTAyLTAx JykKK1dIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAx LTAxJywgJzIwMTgtMDItMDEnKTsKKy0tIHRoZW4gZGVsZXRlIHRoZSBvYmplY3RpbmcgRksg cmVjb3JkIGFuZCB0aGUgc2FtZSBQSyB1cGRhdGUgc3VjY2VlZHM6CitERUxFVEUgRlJPTSB0 ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1szLDNdJzsKK1VQREFURSB0ZW1wb3Jh bF9ybmcgU0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxNi0wMS0wMScsICcyMDE2LTAyLTAx JykKK1dIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAx LTAxJywgJzIwMTgtMDItMDEnKTsKKy0tIGNsZWFuIHVwOgorREVMRVRFIEZST00gdGVtcG9y YWxfZmtfcm5nMnJuZyBXSEVSRSBwYXJlbnRfaWQgPSAnWzUsNV0nOworREVMRVRFIEZST00g dGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKKworLS0KKy0tIHRlc3QgRksgcGFy ZW50IHVwZGF0ZXMgUkVTVFJJQ1QKKy0tCisKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3Ju ZzJybmcKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mazsKK0FMVEVS IFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9m a19ybmcycm5nX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0 KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nCisJT04gREVMRVRFIFJFU1RSSUNUOworLS0g YSBQSyB1cGRhdGUgdGhhdCBzdWNjZWVkcyBiZWNhdXNlIHRoZSBudW1lcmljIGlkIGlzbid0 IHJlZmVyZW5jZWQ6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzUsNV0n LCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSk7CitVUERBVEUgdGVtcG9y YWxfcm5nIFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0w MScpIFdIRVJFIGlkID0gJ1s1LDVdJzsKKy0tIGEgUEsgdXBkYXRlIHRoYXQgc3VjY2VlZHMg ZXZlbiB0aG91Z2ggdGhlIG51bWVyaWMgaWQgaXMgcmVmZXJlbmNlZCBiZWNhdXNlIHRoZSBy YW5nZSBpc24ndDoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1 XSc7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzUsNV0nLCB0c3Jhbmdl KCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9y bmcgVkFMVUVTICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEn KSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1szLDNdJywg dHNyYW5nZSgnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEwJyksICdbNSw1XScpOworVVBEQVRF IHRlbXBvcmFsX3JuZyBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAyLTAxJywgJzIw MTYtMDMtMDEnKQorV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2Uo JzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpOworLS0gYSBQSyB1cGRhdGUgdGhhdCBmYWls cyBiZWNhdXNlIGJvdGggYXJlIHJlZmVyZW5jZWQ6CitVUERBVEUgdGVtcG9yYWxfcm5nIFNF VCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0wMScpCitXSEVS RSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcy MDE4LTAyLTAxJyk7CistLSB0aGVuIGRlbGV0ZSB0aGUgb2JqZWN0aW5nIEZLIHJlY29yZCBh bmQgdGhlIHNhbWUgUEsgdXBkYXRlIHN1Y2NlZWRzOgorREVMRVRFIEZST00gdGVtcG9yYWxf Zmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMywzXSc7CitVUERBVEUgdGVtcG9yYWxfcm5nIFNF VCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0wMScpCitXSEVS RSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcy MDE4LTAyLTAxJyk7CistLSBjbGVhbiB1cDoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3Ju ZzJybmcgV0hFUkUgcGFyZW50X2lkID0gJ1s1LDVdJzsKK0RFTEVURSBGUk9NIHRlbXBvcmFs X3JuZyBXSEVSRSBpZCA9ICdbNSw1XSc7CistLQorLS0gdGVzdCBGSyBwYXJlbnQgZGVsZXRl cyBOTyBBQ1RJT04KKy0tCitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJRFJP UCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZms7CitBTFRFUiBUQUJMRSB0ZW1w b3JhbF9ma19ybmcycm5nCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19m aworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVO Q0VTIHRlbXBvcmFsX3JuZzsKKy0tIGEgUEsgZGVsZXRlIHRoYXQgc3VjY2VlZHMgYmVjYXVz ZSB0aGUgbnVtZXJpYyBpZCBpc24ndCByZWZlcmVuY2VkOgorSU5TRVJUIElOVE8gdGVtcG9y YWxfcm5nIFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAy LTAxJykpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsK Ky0tIGEgUEsgZGVsZXRlIHRoYXQgc3VjY2VlZHMgZXZlbiB0aG91Z2ggdGhlIG51bWVyaWMg aWQgaXMgcmVmZXJlbmNlZCBiZWNhdXNlIHRoZSByYW5nZSBpc24ndDoKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAn MjAxOC0wMi0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNSw1 XScsIHRzcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpKTsKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzMsM10nLCB0c3JhbmdlKCcyMDE4LTAx LTA1JywgJzIwMTgtMDEtMTAnKSwgJ1s1LDVdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9y bmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDIt MDEnLCAnMjAxOC0wMy0wMScpOworLS0gYSBQSyBkZWxldGUgdGhhdCBmYWlscyBiZWNhdXNl IGJvdGggYXJlIHJlZmVyZW5jZWQ6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUg aWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAx OC0wMi0wMScpOworLS0gdGhlbiBkZWxldGUgdGhlIG9iamVjdGluZyBGSyByZWNvcmQgYW5k IHRoZSBzYW1lIFBLIGRlbGV0ZSBzdWNjZWVkczoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2Zr X3JuZzJybmcgV0hFUkUgaWQgPSAnWzMsM10nOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5n IFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAx JywgJzIwMTgtMDItMDEnKTsKKworLS0KKy0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgUkVT VFJJQ1QKKy0tCisKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlEUk9QIENP TlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mazsKK0FMVEVSIFRBQkxFIHRlbXBvcmFs X2ZrX3JuZzJybmcKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisJ Rk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMg dGVtcG9yYWxfcm5nCisJT04gREVMRVRFIFJFU1RSSUNUOworSU5TRVJUIElOVE8gdGVtcG9y YWxfcm5nIFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAy LTAxJykpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsK Ky0tIGEgUEsgZGVsZXRlIHRoYXQgc3VjY2VlZHMgZXZlbiB0aG91Z2ggdGhlIG51bWVyaWMg aWQgaXMgcmVmZXJlbmNlZCBiZWNhdXNlIHRoZSByYW5nZSBpc24ndDoKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAn MjAxOC0wMi0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNSw1 XScsIHRzcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpKTsKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzMsM10nLCB0c3JhbmdlKCcyMDE4LTAx LTA1JywgJzIwMTgtMDEtMTAnKSwgJ1s1LDVdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9y bmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDIt MDEnLCAnMjAxOC0wMy0wMScpOworLS0gYSBQSyBkZWxldGUgdGhhdCBmYWlscyBiZWNhdXNl IGJvdGggYXJlIHJlZmVyZW5jZWQ6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUg aWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAx OC0wMi0wMScpOworLS0gdGhlbiBkZWxldGUgdGhlIG9iamVjdGluZyBGSyByZWNvcmQgYW5k IHRoZSBzYW1lIFBLIGRlbGV0ZSBzdWNjZWVkczoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2Zr X3JuZzJybmcgV0hFUkUgaWQgPSAnWzMsM10nOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5n IFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAx JywgJzIwMTgtMDItMDEnKTsKKworLS0KKy0tIHRlc3QgT04gVVBEQVRFL0RFTEVURSBvcHRp b25zCistLQorCistLSB0ZXN0IEZLIHBhcmVudCB1cGRhdGVzIENBU0NBREUKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEn LCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFM VUVTICgnWzQsNF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s2 LDZdJyk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJRFJPUCBDT05TVFJB SU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmssCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxf Zmtfcm5nMnJuZ19maworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRf YXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nCisJCU9OIERFTEVURSBDQVNDQURFIE9O IFVQREFURSBDQVNDQURFOworVVBEQVRFIHRlbXBvcmFsX3JuZyBGT1IgUE9SVElPTiBPRiB2 YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgU0VUIGlkID0gJ1s3 LDddJyBXSEVSRSBpZCA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3Ju ZzJybmcgV0hFUkUgaWQgPSAnWzQsNF0nOworVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgaWQg PSAnWzcsN10nIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxf Zmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbNCw0XSc7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9y bmcgVkFMVUVTICgnWzE1LDE1XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0w MScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbMTUsMTVdJywgdHNy YW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9y YWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMTAsMTBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDIxLTAxLTAxJyksICdbMTUsMTVdJyk7CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCBp ZCA9ICdbMTYsMTZdJyBXSEVSRSBpZCA9ICdbMTUsMTVdJyBBTkQgdmFsaWRfYXQgQD4gJzIw MTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJy bmcgV0hFUkUgaWQgPSAnWzEwLDEwXSc7CisKKy0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMg Q0FTQ0FERQorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s4LDhdJywgdHNy YW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9y YWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAn MjAyMS0wMS0wMScpLCAnWzgsOF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBGT1Ig UE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScg V0hFUkUgaWQgPSAnWzgsOF0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5n IFdIRVJFIGlkID0gJ1s1LDVdJzsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBp ZCA9ICdbOCw4XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUg aWQgPSAnWzUsNV0nOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1sxNywx N10nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7CitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzE3LDE3XScsIHRzcmFuZ2UoJzIwMjAtMDEtMDEn LCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFM VUVTICgnWzExLDExXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAn WzE3LDE3XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1sxNywx N10nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAq IEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTEsMTFdJzsKKworCist LSB0ZXN0IEZLIHBhcmVudCB1cGRhdGVzIFNFVCBOVUxMCitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9ybmcgVkFMVUVTICgnWzksOV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEt MDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1s2LDZd JywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbOSw5XScpOworQUxU RVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCURST1AgQ09OU1RSQUlOVCB0ZW1wb3Jh bF9ma19ybmcycm5nX2ZrLAorCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdf ZmsKKwkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZF UkVOQ0VTIHRlbXBvcmFsX3JuZworCQlPTiBERUxFVEUgU0VUIE5VTEwgT04gVVBEQVRFIFNF VCBOVUxMOworVVBEQVRFIHRlbXBvcmFsX3JuZyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBG Uk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgU0VUIGlkID0gJ1sxMCwxMF0nIFdI RVJFIGlkID0gJ1s5LDldJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBX SEVSRSBpZCA9ICdbNiw2XSc7CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCBpZCA9ICdbMTAs MTBdJyBXSEVSRSBpZCA9ICdbOSw5XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3Ju ZzJybmcgV0hFUkUgaWQgPSAnWzYsNl0nOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZB TFVFUyAoJ1sxOCwxOF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7 CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzE4LDE4XScsIHRzcmFuZ2Uo JzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2Zr X3JuZzJybmcgVkFMVUVTICgnWzEyLDEyXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAy MS0wMS0wMScpLCAnWzE4LDE4XScpOworVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgaWQgPSAn WzE5LDE5XScgV0hFUkUgaWQgPSAnWzE4LDE4XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAx LTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdI RVJFIGlkID0gJ1sxMiwxMl0nOworCistLSB0ZXN0IEZLIHBhcmVudCBkZWxldGVzIFNFVCBO VUxMCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzExLDExXScsIHRzcmFu Z2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X2ZrX3JuZzJybmcgVkFMVUVTICgnWzcsN10nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIw MjEtMDEtMDEnKSwgJ1sxMSwxMV0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBGT1Ig UE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScg V0hFUkUgaWQgPSAnWzExLDExXSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJy bmcgV0hFUkUgaWQgPSAnWzcsN10nOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJF IGlkID0gJ1sxMSwxMV0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdI RVJFIGlkID0gJ1s3LDddJzsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdb MjAsMjBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykpOworSU5TRVJU IElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1syMCwyMF0nLCB0c3JhbmdlKCcyMDIwLTAx LTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5n IFZBTFVFUyAoJ1sxMywxM10nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEn KSwgJ1syMCwyMF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdb MjAsMjBdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxF Q1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEzLDEzXSc7CisK Ky0tIHRlc3QgRksgcGFyZW50IHVwZGF0ZXMgU0VUIERFRkFVTFQKK0lOU0VSVCBJTlRPIHRl bXBvcmFsX3JuZyBWQUxVRVMgKCdbLTEsLTFdJywgdHNyYW5nZShudWxsLCBudWxsKSk7CitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzEyLDEyXScsIHRzcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3Ju ZzJybmcgVkFMVUVTICgnWzgsOF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEt MDEnKSwgJ1sxMiwxMl0nKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKyAg QUxURVIgQ09MVU1OIHBhcmVudF9pZCBTRVQgREVGQVVMVCAnWy0xLC0xXScsCisJRFJPUCBD T05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmssCisJQUREIENPTlNUUkFJTlQgdGVt cG9yYWxfZmtfcm5nMnJuZ19maworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0Qg dmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nCisJCU9OIERFTEVURSBTRVQg REVGQVVMVCBPTiBVUERBVEUgU0VUIERFRkFVTFQ7CitVUERBVEUgdGVtcG9yYWxfcm5nIEZP UiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAx JyBTRVQgaWQgPSAnWzEzLDEzXScgV0hFUkUgaWQgPSAnWzEyLDEyXSc7CitTRUxFQ1QgKiBG Uk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzgsOF0nOworVVBEQVRFIHRl bXBvcmFsX3JuZyBTRVQgaWQgPSAnWzEzLDEzXScgV0hFUkUgaWQgPSAnWzEyLDEyXSc7CitT RUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzgsOF0nOwor SU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1syMiwyMl0nLCB0c3JhbmdlKCcy MDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcg VkFMVUVTICgnWzIyLDIyXScsIHRzcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScp KTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzE0LDE0XScs IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzIyLDIyXScpOworVVBE QVRFIHRlbXBvcmFsX3JuZyBTRVQgaWQgPSAnWzIzLDIzXScgV0hFUkUgaWQgPSAnWzIyLDIy XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNUICog RlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1sxNCwxNF0nOworCistLSB0 ZXN0IEZLIHBhcmVudCBkZWxldGVzIFNFVCBERUZBVUxUCitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9ybmcgVkFMVUVTICgnWzE0LDE0XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0w MS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzks OV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1sxNCwxNF0nKTsK K0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9N ICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgV0hFUkUgaWQgPSAnWzE0LDE0XSc7CitT RUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzksOV0nOwor REVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1sxNCwxNF0nOworU0VMRUNU ICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1s5LDldJzsKK0lOU0VS VCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbMjQsMjRdJywgdHNyYW5nZSgnMjAxOC0w MS0wMScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVF UyAoJ1syNCwyNF0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1sxNSwxNV0nLCB0c3Jh bmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1syNCwyNF0nKTsKK0RFTEVURSBG Uk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbMjQsMjRdJyBBTkQgdmFsaWRfYXQgQD4g JzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3Ju ZzJybmcgV0hFUkUgaWQgPSAnWzE1LDE1XSc7CisKKworCistLQorLS0gdGVzdCBGT1JFSUdO IEtFWSwgcmFuZ2UgcmVmZXJlbmNlcyBQRVJJT0QKKy0tCisKK0RFTEVURSBGUk9NIHRlbXBv cmFsX3BlcjsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BlciBWQUxVRVMgKCdbMSwxXScsICcy MDE4LTAxLTAyJywgJzIwMTgtMDItMDMnKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BlciBW QUxVRVMgKCdbMSwxXScsICcyMDE4LTAzLTAzJywgJzIwMTgtMDQtMDQnKTsKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX3BlciBWQUxVRVMgKCdbMiwyXScsICcyMDE4LTAxLTAxJywgJzIwMTgt MDEtMDUnKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BlciBWQUxVRVMgKCdbMywzXScsICcy MDE4LTAxLTAxJywgTlVMTCk7CisKKy0tIENhbid0IGNyZWF0ZSBhIEZLIHdpdGggYSBtaXNt YXRjaGVkIHJhbmdlIHR5cGUKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycGVyICgK KwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgaW50NHJhbmdlLAorCXBhcmVudF9pZCBpbnQ0 cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycGVyX3BrMiBQUklNQVJZIEtF WSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAorCUNPTlNUUkFJTlQgdGVtcG9y YWxfZmtfcm5nMnBlcl9mazIgRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlk X2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3BlciAoaWQsIFBFUklPRCB2YWxpZF9hdCkK Kyk7CisKKy0tIHdpdGggaW5mZXJyZWQgUEsgb24gdGhlIHJlZmVyZW5jZWQgdGFibGU6CitD UkVBVEUgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnBlciAoCisJaWQgaW50NHJhbmdlLAorCXZh bGlkX2F0IHRzcmFuZ2UsCisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHRl bXBvcmFsX2ZrX3JuZzJwZXJfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VU IE9WRVJMQVBTKSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJwZXJfZmsgRk9SRUlH TiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBv cmFsX3BlcgorKTsKK0RST1AgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnBlcjsKKworLS0gc2hv dWxkIGZhaWwgYmVjYXVzZSBvZiBkdXBsaWNhdGUgcmVmZXJlbmNlZCBjb2x1bW5zOgorQ1JF QVRFIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJwZXIgKAorCWlkIGludDRyYW5nZSwKKwl2YWxp ZF9hdCB0c3JhbmdlLAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1w b3JhbF9ma19ybmcycGVyX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBP VkVSTEFQUyksCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycGVyX2ZrIEZPUkVJR04g S0VZIChwYXJlbnRfaWQsIFBFUklPRCBwYXJlbnRfaWQpCisJCVJFRkVSRU5DRVMgdGVtcG9y YWxfcGVyIChpZCwgUEVSSU9EIGlkKQorKTsKKworLS0KKy0tIHRlc3QgQUxURVIgVEFCTEUg QUREIENPTlNUUkFJTlQKKy0tCisKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycGVy ICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5nZSwKKwlwYXJlbnRfaWQgaW50 NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnBlcl9wayBQUklNQVJZIEtF WSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworQUxURVIgVEFCTEUgdGVt cG9yYWxfZmtfcm5nMnBlcgorCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJwZXJf ZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJF TkNFUyB0ZW1wb3JhbF9wZXIgKGlkLCBQRVJJT0QgdmFsaWRfYXQpOworQUxURVIgVEFCTEUg dGVtcG9yYWxfZmtfcm5nMnBlcgorCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcy cGVyX2ZrOworLS0gd2l0aCBpbmZlcnJlZCBQSyBvbiB0aGUgcmVmZXJlbmNlZCB0YWJsZToK K0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJwZXIKKwlBREQgQ09OU1RSQUlOVCB0ZW1w b3JhbF9ma19ybmcycGVyX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZh bGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfcGVyOworCistLSBzaG91bGQgZmFpbCBi ZWNhdXNlIG9mIGR1cGxpY2F0ZSByZWZlcmVuY2VkIGNvbHVtbnM6CitBTFRFUiBUQUJMRSB0 ZW1wb3JhbF9ma19ybmcycGVyCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnBl cl9mazIKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgcGFyZW50X2lkKQorCVJF RkVSRU5DRVMgdGVtcG9yYWxfcGVyIChpZCwgUEVSSU9EIGlkKTsKKworLS0KKy0tIHRlc3Qg d2l0aCByb3dzIGFscmVhZHkKKy0tCisKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJw ZXI7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycGVyCisJRFJPUCBDT05TVFJBSU5U IHRlbXBvcmFsX2ZrX3JuZzJwZXJfZms7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcy cGVyIFZBTFVFUyAoJ1sxLDFdJywgdHNyYW5nZSgnMjAxOC0wMS0wMicsICcyMDE4LTAyLTAx JyksICdbMSwxXScpOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnBlcgorCUFERCBD T05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJwZXJfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50 X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNFUyB0ZW1wb3JhbF9wZXI7CitBTFRF UiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycGVyCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFs X2ZrX3JuZzJwZXJfZms7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycGVyIFZBTFVF UyAoJ1syLDJdJywgdHNyYW5nZSgnMjAxOC0wMS0wMicsICcyMDE4LTA0LTAxJyksICdbMSwx XScpOworLS0gc2hvdWxkIGZhaWw6CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycGVy CisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnBlcl9maworCUZPUkVJR04gS0VZ IChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3Bl cjsKKy0tIG9rYXkgYWdhaW46CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycGVyOwor QUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnBlcgorCUFERCBDT05TVFJBSU5UIHRlbXBv cmFsX2ZrX3JuZzJwZXJfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFs aWRfYXQpCisJUkVGRVJFTkNFUyB0ZW1wb3JhbF9wZXI7CisKKy0tCistLSB0ZXN0IHBnX2dl dF9jb25zdHJhaW50ZGVmCistLQorCitTRUxFQ1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lk KSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ubmFtZSA9ICd0ZW1wb3JhbF9ma19ybmcy cGVyX2ZrJzsKKworLS0KKy0tIHRlc3QgRksgY2hpbGQgaW5zZXJ0cworLS0KKworSU5TRVJU IElOVE8gdGVtcG9yYWxfZmtfcm5nMnBlciBWQUxVRVMgKCdbMSwxXScsIHRzcmFuZ2UoJzIw MTgtMDEtMDInLCAnMjAxOC0wMi0wMScpLCAnWzEsMV0nKTsKKy0tIHNob3VsZCBmYWlsOgor SU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnBlciBWQUxVRVMgKCdbMiwyXScsIHRzcmFu Z2UoJzIwMTgtMDEtMDInLCAnMjAxOC0wNC0wMScpLCAnWzEsMV0nKTsKKy0tIG5vdyBpdCBz aG91bGQgd29yazoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BlciBWQUxVRVMgKCdbMSwxXScs ICcyMDE4LTAyLTAzJywgJzIwMTgtMDMtMDMnKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2Zr X3JuZzJwZXIgVkFMVUVTICgnWzIsMl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAyJywgJzIwMTgt MDQtMDEnKSwgJ1sxLDFdJyk7CisKKy0tCistLSB0ZXN0IEZLIGNoaWxkIHVwZGF0ZXMKKy0t CitVUERBVEUgdGVtcG9yYWxfZmtfcm5nMnBlciBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcy MDE4LTAxLTAyJywgJzIwMTgtMDMtMDEnKSBXSEVSRSBpZCA9ICdbMSwxXSc7CistLSBzaG91 bGQgZmFpbDoKK1VQREFURSB0ZW1wb3JhbF9ma19ybmcycGVyIFNFVCB2YWxpZF9hdCA9IHRz cmFuZ2UoJzIwMTgtMDEtMDInLCAnMjAxOC0wNS0wMScpIFdIRVJFIGlkID0gJ1sxLDFdJzsK K1VQREFURSB0ZW1wb3JhbF9ma19ybmcycGVyIFNFVCBwYXJlbnRfaWQgPSAnWzgsOF0nIFdI RVJFIGlkID0gJ1sxLDFdJzsKKworLS0KKy0tIHRlc3QgRksgcGFyZW50IHVwZGF0ZXMgTk8g QUNUSU9OCistLQorCistLSBhIFBLIHVwZGF0ZSB0aGF0IHN1Y2NlZWRzIGJlY2F1c2UgdGhl IG51bWVyaWMgaWQgaXNuJ3QgcmVmZXJlbmNlZDoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3Bl ciBWQUxVRVMgKCdbNSw1XScsICcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKK1VQREFU RSB0ZW1wb3JhbF9wZXIgU0VUIHZhbGlkX2Zyb20gPSAnMjAxNi0wMS0wMScsIHZhbGlkX3Rp bCA9ICcyMDE2LTAyLTAxJyBXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBhIFBLIHVwZGF0ZSB0 aGF0IHN1Y2NlZWRzIGV2ZW4gdGhvdWdoIHRoZSBudW1lcmljIGlkIGlzIHJlZmVyZW5jZWQg YmVjYXVzZSB0aGUgcmFuZ2UgaXNuJ3Q6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wZXIgV0hF UkUgaWQgPSAnWzUsNV0nOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGVyIFZBTFVFUyAoJ1s1 LDVdJywgJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworSU5TRVJUIElOVE8gdGVtcG9y YWxfcGVyIFZBTFVFUyAoJ1s1LDVdJywgJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpOwor SU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnBlciBWQUxVRVMgKCdbMywzXScsIHRzcmFu Z2UoJzIwMTgtMDEtMDUnLCAnMjAxOC0wMS0xMCcpLCAnWzUsNV0nKTsKK1VQREFURSB0ZW1w b3JhbF9wZXIgU0VUIHZhbGlkX2Zyb20gPSAnMjAxNi0wMi0wMScsIHZhbGlkX3RpbCA9ICcy MDE2LTAzLTAxJworV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9mcm9tID0gJzIwMTgt MDItMDEnIEFORCB2YWxpZF90aWwgPSAnMjAxOC0wMy0wMSc7CistLSBhIFBLIHVwZGF0ZSB0 aGF0IGZhaWxzIGJlY2F1c2UgYm90aCBhcmUgcmVmZXJlbmNlZDoKK1VQREFURSB0ZW1wb3Jh bF9wZXIgU0VUIHZhbGlkX2Zyb20gPSAnMjAxNi0wMS0wMScsIHZhbGlkX3RpbCA9ICcyMDE2 LTAyLTAxJworV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9mcm9tID0gJzIwMTgtMDEt MDEnIEFORCB2YWxpZF90aWwgPSAnMjAxOC0wMi0wMSc7CistLSB0aGVuIGRlbGV0ZSB0aGUg b2JqZWN0aW5nIEZLIHJlY29yZCBhbmQgdGhlIHNhbWUgUEsgdXBkYXRlIHN1Y2NlZWRzOgor REVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnBlciBXSEVSRSBpZCA9ICdbMywzXSc7CitV UERBVEUgdGVtcG9yYWxfcGVyIFNFVCB2YWxpZF9mcm9tID0gJzIwMTYtMDEtMDEnLCB2YWxp ZF90aWwgPSAnMjAxNi0wMi0wMScKK1dIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfZnJv bSA9ICcyMDE4LTAxLTAxJyBBTkQgdmFsaWRfdGlsID0gJzIwMTgtMDItMDEnOworLS0gY2xl YW4gdXA6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycGVyIFdIRVJFIHBhcmVudF9p ZCA9ICdbNSw1XSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wZXIgV0hFUkUgaWQgPSAnWzUs NV0nOworCistLQorLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBSRVNUUklDVAorLS0KKwor QUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnBlcgorCURST1AgQ09OU1RSQUlOVCB0ZW1w b3JhbF9ma19ybmcycGVyX2ZrOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnBlcgor CUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJwZXJfZmsKKwlGT1JFSUdOIEtFWSAo cGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNFUyB0ZW1wb3JhbF9wZXIK KwlPTiBERUxFVEUgUkVTVFJJQ1Q7CistLSBhIFBLIHVwZGF0ZSB0aGF0IHN1Y2NlZWRzIGJl Y2F1c2UgdGhlIG51bWVyaWMgaWQgaXNuJ3QgcmVmZXJlbmNlZDoKK0lOU0VSVCBJTlRPIHRl bXBvcmFsX3BlciBWQUxVRVMgKCdbNSw1XScsICcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEn KTsKK1VQREFURSB0ZW1wb3JhbF9wZXIgU0VUIHZhbGlkX2Zyb20gPSAnMjAxNi0wMS0wMScs IHZhbGlkX3RpbCA9ICcyMDE2LTAyLTAxJyBXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBhIFBL IHVwZGF0ZSB0aGF0IHN1Y2NlZWRzIGV2ZW4gdGhvdWdoIHRoZSBudW1lcmljIGlkIGlzIHJl ZmVyZW5jZWQgYmVjYXVzZSB0aGUgcmFuZ2UgaXNuJ3Q6CitERUxFVEUgRlJPTSB0ZW1wb3Jh bF9wZXIgV0hFUkUgaWQgPSAnWzUsNV0nOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGVyIFZB TFVFUyAoJ1s1LDVdJywgJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworSU5TRVJUIElO VE8gdGVtcG9yYWxfcGVyIFZBTFVFUyAoJ1s1LDVdJywgJzIwMTgtMDItMDEnLCAnMjAxOC0w My0wMScpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnBlciBWQUxVRVMgKCdbMywz XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDUnLCAnMjAxOC0wMS0xMCcpLCAnWzUsNV0nKTsKK1VQ REFURSB0ZW1wb3JhbF9wZXIgU0VUIHZhbGlkX2Zyb20gPSAnMjAxNi0wMi0wMScsIHZhbGlk X3RpbCA9ICcyMDE2LTAzLTAxJworV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9mcm9t ID0gJzIwMTgtMDItMDEnIEFORCB2YWxpZF90aWwgPSAnMjAxOC0wMy0wMSc7CistLSBhIFBL IHVwZGF0ZSB0aGF0IGZhaWxzIGJlY2F1c2UgYm90aCBhcmUgcmVmZXJlbmNlZDoKK1VQREFU RSB0ZW1wb3JhbF9wZXIgU0VUIHZhbGlkX2Zyb20gPSAnMjAxNi0wMS0wMScsIHZhbGlkX3Rp bCA9ICcyMDE2LTAyLTAxJworV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9mcm9tID0g JzIwMTgtMDEtMDEnIEFORCB2YWxpZF90aWwgPSAnMjAxOC0wMi0wMSc7CistLSB0aGVuIGRl bGV0ZSB0aGUgb2JqZWN0aW5nIEZLIHJlY29yZCBhbmQgdGhlIHNhbWUgUEsgdXBkYXRlIHN1 Y2NlZWRzOgorREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnBlciBXSEVSRSBpZCA9ICdb MywzXSc7CitVUERBVEUgdGVtcG9yYWxfcGVyIFNFVCB2YWxpZF9mcm9tID0gJzIwMTYtMDEt MDEnLCB2YWxpZF90aWwgPSAnMjAxNi0wMi0wMScKK1dIRVJFIGlkID0gJ1s1LDVdJyBBTkQg dmFsaWRfZnJvbSA9ICcyMDE4LTAxLTAxJyBBTkQgdmFsaWRfdGlsID0gJzIwMTgtMDItMDEn OworLS0gY2xlYW4gdXA6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycGVyIFdIRVJF IHBhcmVudF9pZCA9ICdbNSw1XSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wZXIgV0hFUkUg aWQgPSAnWzUsNV0nOworCistLQorLS0gdGVzdCBGSyBwYXJlbnQgZGVsZXRlcyBOTyBBQ1RJ T04KKy0tCisKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJwZXIKKwlEUk9QIENPTlNU UkFJTlQgdGVtcG9yYWxfZmtfcm5nMnBlcl9mazsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2Zr X3JuZzJwZXIKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycGVyX2ZrCisJRk9S RUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgdGVt cG9yYWxfcGVyOworLS0gYSBQSyBkZWxldGUgdGhhdCBzdWNjZWVkcyBiZWNhdXNlIHRoZSBu dW1lcmljIGlkIGlzbid0IHJlZmVyZW5jZWQ6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wZXIg VkFMVUVTICgnWzUsNV0nLCAnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CitERUxFVEUg RlJPTSB0ZW1wb3JhbF9wZXIgV0hFUkUgaWQgPSAnWzUsNV0nOworLS0gYSBQSyBkZWxldGUg dGhhdCBzdWNjZWVkcyBldmVuIHRob3VnaCB0aGUgbnVtZXJpYyBpZCBpcyByZWZlcmVuY2Vk IGJlY2F1c2UgdGhlIHJhbmdlIGlzbid0OgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcGVyIFZB TFVFUyAoJ1s1LDVdJywgJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworSU5TRVJUIElO VE8gdGVtcG9yYWxfcGVyIFZBTFVFUyAoJ1s1LDVdJywgJzIwMTgtMDItMDEnLCAnMjAxOC0w My0wMScpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnBlciBWQUxVRVMgKCdbMywz XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDUnLCAnMjAxOC0wMS0xMCcpLCAnWzUsNV0nKTsKK0RF TEVURSBGUk9NIHRlbXBvcmFsX3BlciBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2Zy b20gPSAnMjAxOC0wMi0wMScgQU5EIHZhbGlkX3RpbCA9ICcyMDE4LTAzLTAxJzsKKy0tIGEg UEsgZGVsZXRlIHRoYXQgZmFpbHMgYmVjYXVzZSBib3RoIGFyZSByZWZlcmVuY2VkOgorREVM RVRFIEZST00gdGVtcG9yYWxfcGVyIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfZnJv bSA9ICcyMDE4LTAxLTAxJyBBTkQgdmFsaWRfdGlsID0gJzIwMTgtMDItMDEnOworLS0gdGhl biBkZWxldGUgdGhlIG9iamVjdGluZyBGSyByZWNvcmQgYW5kIHRoZSBzYW1lIFBLIGRlbGV0 ZSBzdWNjZWVkczoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJwZXIgV0hFUkUgaWQg PSAnWzMsM10nOworREVMRVRFIEZST00gdGVtcG9yYWxfcGVyIFdIRVJFIGlkID0gJ1s1LDVd JyBBTkQgdmFsaWRfZnJvbSA9ICcyMDE4LTAxLTAxJyBBTkQgdmFsaWRfdGlsID0gJzIwMTgt MDItMDEnOworCistLQorLS0gdGVzdCBGSyBwYXJlbnQgZGVsZXRlcyBSRVNUUklDVAorLS0K KworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnBlcgorCURST1AgQ09OU1RSQUlOVCB0 ZW1wb3JhbF9ma19ybmcycGVyX2ZrOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnBl cgorCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJwZXJfZmsKKwlGT1JFSUdOIEtF WSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNFUyB0ZW1wb3JhbF9w ZXIKKwlPTiBERUxFVEUgUkVTVFJJQ1Q7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wZXIgVkFM VUVTICgnWzUsNV0nLCAnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CitERUxFVEUgRlJP TSB0ZW1wb3JhbF9wZXIgV0hFUkUgaWQgPSAnWzUsNV0nOworLS0gYSBQSyBkZWxldGUgdGhh dCBzdWNjZWVkcyBldmVuIHRob3VnaCB0aGUgbnVtZXJpYyBpZCBpcyByZWZlcmVuY2VkIGJl Y2F1c2UgdGhlIHJhbmdlIGlzbid0OgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcGVyIFZBTFVF UyAoJ1s1LDVdJywgJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworSU5TRVJUIElOVE8g dGVtcG9yYWxfcGVyIFZBTFVFUyAoJ1s1LDVdJywgJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0w MScpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnBlciBWQUxVRVMgKCdbMywzXScs IHRzcmFuZ2UoJzIwMTgtMDEtMDUnLCAnMjAxOC0wMS0xMCcpLCAnWzUsNV0nKTsKK0RFTEVU RSBGUk9NIHRlbXBvcmFsX3BlciBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2Zyb20g PSAnMjAxOC0wMi0wMScgQU5EIHZhbGlkX3RpbCA9ICcyMDE4LTAzLTAxJzsKKy0tIGEgUEsg ZGVsZXRlIHRoYXQgZmFpbHMgYmVjYXVzZSBib3RoIGFyZSByZWZlcmVuY2VkOgorREVMRVRF IEZST00gdGVtcG9yYWxfcGVyIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfZnJvbSA9 ICcyMDE4LTAxLTAxJyBBTkQgdmFsaWRfdGlsID0gJzIwMTgtMDItMDEnOworLS0gdGhlbiBk ZWxldGUgdGhlIG9iamVjdGluZyBGSyByZWNvcmQgYW5kIHRoZSBzYW1lIFBLIGRlbGV0ZSBz dWNjZWVkczoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJwZXIgV0hFUkUgaWQgPSAn WzMsM10nOworREVMRVRFIEZST00gdGVtcG9yYWxfcGVyIFdIRVJFIGlkID0gJ1s1LDVdJyBB TkQgdmFsaWRfZnJvbSA9ICcyMDE4LTAxLTAxJyBBTkQgdmFsaWRfdGlsID0gJzIwMTgtMDIt MDEnOworCistLQorLS0gdGVzdCBPTiBVUERBVEUvREVMRVRFIG9wdGlvbnMKKy0tCisKKy0t IHRlc3QgRksgcGFyZW50IHVwZGF0ZXMgQ0FTQ0FERQorSU5TRVJUIElOVE8gdGVtcG9yYWxf cGVyIFZBTFVFUyAoJ1s2LDZdJywgJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpOworSU5T RVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnBlciBWQUxVRVMgKCdbNCw0XScsIHRzcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzYsNl0nKTsKK0FMVEVSIFRBQkxFIHRl bXBvcmFsX2ZrX3JuZzJwZXIKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnBl cl9maywKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycGVyX2ZrCisJCUZPUkVJ R04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1w b3JhbF9wZXIKKwkJT04gREVMRVRFIENBU0NBREUgT04gVVBEQVRFIENBU0NBREU7CitVUERB VEUgdGVtcG9yYWxfcGVyIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEt MDEnIFRPICcyMDIwLTAxLTAxJyBTRVQgaWQgPSAnWzcsN10nIFdIRVJFIGlkID0gJ1s2LDZd JzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnBlciBXSEVSRSBpZCA9ICdbNCw0 XSc7CitVUERBVEUgdGVtcG9yYWxfcGVyIFNFVCBpZCA9ICdbNyw3XScgV0hFUkUgaWQgPSAn WzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycGVyIFdIRVJFIGlkID0g J1s0LDRdJzsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BlciBWQUxVRVMgKCdbMTUsMTVdJywg JzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGVy IFZBTFVFUyAoJ1sxNSwxNV0nLCAnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJyk7CitJTlNF UlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycGVyIFZBTFVFUyAoJ1sxMCwxMF0nLCB0c3Jhbmdl KCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1sxNSwxNV0nKTsKK1VQREFURSB0ZW1w b3JhbF9wZXIgU0VUIGlkID0gJ1sxNiwxNl0nIFdIRVJFIGlkID0gJ1sxNSwxNV0nIEFORCB0 c3JhbmdlKHZhbGlkX2Zyb20sIHZhbGlkX3RpbCkgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3Rh bXA7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJwZXIgV0hFUkUgaWQgPSAnWzEw LDEwXSc7CisKKy0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgQ0FTQ0FERQorSU5TRVJUIElO VE8gdGVtcG9yYWxfcGVyIFZBTFVFUyAoJ1s4LDhdJywgJzIwMTgtMDEtMDEnLCAnMjAyMS0w MS0wMScpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnBlciBWQUxVRVMgKCdbNSw1 XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzgsOF0nKTsKK0RF TEVURSBGUk9NIHRlbXBvcmFsX3BlciBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcy MDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgV0hFUkUgaWQgPSAnWzgsOF0nOworU0VMRUNU ICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycGVyIFdIRVJFIGlkID0gJ1s1LDVdJzsKK0RFTEVU RSBGUk9NIHRlbXBvcmFsX3BlciBXSEVSRSBpZCA9ICdbOCw4XSc7CitTRUxFQ1QgKiBGUk9N IHRlbXBvcmFsX2ZrX3JuZzJwZXIgV0hFUkUgaWQgPSAnWzUsNV0nOworSU5TRVJUIElOVE8g dGVtcG9yYWxfcGVyIFZBTFVFUyAoJ1sxNywxN10nLCAnMjAxOC0wMS0wMScsICcyMDIwLTAx LTAxJyk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wZXIgVkFMVUVTICgnWzE3LDE3XScsICcy MDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3Ju ZzJwZXIgVkFMVUVTICgnWzExLDExXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0w MS0wMScpLCAnWzE3LDE3XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcGVyIFdIRVJFIGlk ID0gJ1sxNywxN10nIEFORCB0c3JhbmdlKHZhbGlkX2Zyb20sIHZhbGlkX3RpbCkgQD4gJzIw MTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJw ZXIgV0hFUkUgaWQgPSAnWzExLDExXSc7CisKKy0tIHRlc3QgRksgcGFyZW50IHVwZGF0ZXMg U0VUIE5VTEwKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BlciBWQUxVRVMgKCdbOSw5XScsICcy MDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3Ju ZzJwZXIgVkFMVUVTICgnWzYsNl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEt MDEnKSwgJ1s5LDldJyk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycGVyCisJRFJP UCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJwZXJfZmssCisJQUREIENPTlNUUkFJTlQg dGVtcG9yYWxfZmtfcm5nMnBlcl9maworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJ T0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcGVyCisJCU9OIERFTEVURSBT RVQgTlVMTCBPTiBVUERBVEUgU0VUIE5VTEw7CitVUERBVEUgdGVtcG9yYWxfcGVyIEZPUiBQ T1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBT RVQgaWQgPSAnWzEwLDEwXScgV0hFUkUgaWQgPSAnWzksOV0nOworU0VMRUNUICogRlJPTSB0 ZW1wb3JhbF9ma19ybmcycGVyIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1VQREFURSB0ZW1wb3Jh bF9wZXIgU0VUIGlkID0gJ1sxMCwxMF0nIFdIRVJFIGlkID0gJ1s5LDldJzsKK1NFTEVDVCAq IEZST00gdGVtcG9yYWxfZmtfcm5nMnBlciBXSEVSRSBpZCA9ICdbNiw2XSc7CitJTlNFUlQg SU5UTyB0ZW1wb3JhbF9wZXIgVkFMVUVTICgnWzE4LDE4XScsICcyMDE4LTAxLTAxJywgJzIw MjAtMDEtMDEnKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BlciBWQUxVRVMgKCdbMTgsMThd JywgJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpOworSU5TRVJUIElOVE8gdGVtcG9yYWxf Zmtfcm5nMnBlciBWQUxVRVMgKCdbMTIsMTJdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcy MDIxLTAxLTAxJyksICdbMTgsMThdJyk7CitVUERBVEUgdGVtcG9yYWxfcGVyIFNFVCBpZCA9 ICdbMTksMTldJyBXSEVSRSBpZCA9ICdbMTgsMThdJyBBTkQgdHNyYW5nZSh2YWxpZF9mcm9t LCB2YWxpZF90aWwpIEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJP TSB0ZW1wb3JhbF9ma19ybmcycGVyIFdIRVJFIGlkID0gJ1sxMiwxMl0nOworCistLSB0ZXN0 IEZLIHBhcmVudCBkZWxldGVzIFNFVCBOVUxMCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wZXIg VkFMVUVTICgnWzExLDExXScsICcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKTsKK0lOU0VS VCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJwZXIgVkFMVUVTICgnWzcsN10nLCB0c3JhbmdlKCcy MDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1sxMSwxMV0nKTsKK0RFTEVURSBGUk9NIHRl bXBvcmFsX3BlciBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBU TyAnMjAyMC0wMS0wMScgV0hFUkUgaWQgPSAnWzExLDExXSc7CitTRUxFQ1QgKiBGUk9NIHRl bXBvcmFsX2ZrX3JuZzJwZXIgV0hFUkUgaWQgPSAnWzcsN10nOworREVMRVRFIEZST00gdGVt cG9yYWxfcGVyIFdIRVJFIGlkID0gJ1sxMSwxMV0nOworU0VMRUNUICogRlJPTSB0ZW1wb3Jh bF9ma19ybmcycGVyIFdIRVJFIGlkID0gJ1s3LDddJzsKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X3BlciBWQUxVRVMgKCdbMjAsMjBdJywgJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpOwor SU5TRVJUIElOVE8gdGVtcG9yYWxfcGVyIFZBTFVFUyAoJ1syMCwyMF0nLCAnMjAyMC0wMS0w MScsICcyMDIxLTAxLTAxJyk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycGVyIFZB TFVFUyAoJ1sxMywxM10nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwg J1syMCwyMF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3BlciBXSEVSRSBpZCA9ICdbMjAs MjBdJyBBTkQgdHNyYW5nZSh2YWxpZF9mcm9tLCB2YWxpZF90aWwpIEA+ICcyMDE5LTAxLTAx Jzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycGVyIFdIRVJF IGlkID0gJ1sxMywxM10nOworCistLSB0ZXN0IEZLIHBhcmVudCB1cGRhdGVzIFNFVCBERUZB VUxUCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wZXIgVkFMVUVTICgnWy0xLC0xXScsIG51bGws IG51bGwpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGVyIFZBTFVFUyAoJ1sxMiwxMl0nLCAn MjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19y bmcycGVyIFZBTFVFUyAoJ1s4LDhdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAx LTAxJyksICdbMTIsMTJdJyk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycGVyCisg IEFMVEVSIENPTFVNTiBwYXJlbnRfaWQgU0VUIERFRkFVTFQgJ1stMSwtMV0nLAorCURST1Ag Q09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycGVyX2ZrLAorCUFERCBDT05TVFJBSU5UIHRl bXBvcmFsX2ZrX3JuZzJwZXJfZmsKKwkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9E IHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3BlcgorCQlPTiBERUxFVEUgU0VU IERFRkFVTFQgT04gVVBEQVRFIFNFVCBERUZBVUxUOworVVBEQVRFIHRlbXBvcmFsX3BlciBG T1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0w MScgU0VUIGlkID0gJ1sxMywxM10nIFdIRVJFIGlkID0gJ1sxMiwxMl0nOworU0VMRUNUICog RlJPTSB0ZW1wb3JhbF9ma19ybmcycGVyIFdIRVJFIGlkID0gJ1s4LDhdJzsKK1VQREFURSB0 ZW1wb3JhbF9wZXIgU0VUIGlkID0gJ1sxMywxM10nIFdIRVJFIGlkID0gJ1sxMiwxMl0nOwor U0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycGVyIFdIRVJFIGlkID0gJ1s4LDhdJzsK K0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BlciBWQUxVRVMgKCdbMjIsMjJdJywgJzIwMTgtMDEt MDEnLCAnMjAyMC0wMS0wMScpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGVyIFZBTFVFUyAo J1syMiwyMl0nLCAnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJyk7CitJTlNFUlQgSU5UTyB0 ZW1wb3JhbF9ma19ybmcycGVyIFZBTFVFUyAoJ1sxNCwxNF0nLCB0c3JhbmdlKCcyMDE4LTAx LTAxJywgJzIwMjEtMDEtMDEnKSwgJ1syMiwyMl0nKTsKK1VQREFURSB0ZW1wb3JhbF9wZXIg U0VUIGlkID0gJ1syMywyM10nIFdIRVJFIGlkID0gJ1syMiwyMl0nIEFORCB0c3JhbmdlKHZh bGlkX2Zyb20sIHZhbGlkX3RpbCkgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxF Q1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJwZXIgV0hFUkUgaWQgPSAnWzE0LDE0XSc7CisK Ky0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgU0VUIERFRkFVTFQKK0lOU0VSVCBJTlRPIHRl bXBvcmFsX3BlciBWQUxVRVMgKCdbMTQsMTRdJywgJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0w MScpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnBlciBWQUxVRVMgKCdbOSw5XScs IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzE0LDE0XScpOworREVM RVRFIEZST00gdGVtcG9yYWxfcGVyIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIw MTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBXSEVSRSBpZCA9ICdbMTQsMTRdJzsKK1NFTEVD VCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnBlciBXSEVSRSBpZCA9ICdbOSw5XSc7CitERUxF VEUgRlJPTSB0ZW1wb3JhbF9wZXIgV0hFUkUgaWQgPSAnWzE0LDE0XSc7CitTRUxFQ1QgKiBG Uk9NIHRlbXBvcmFsX2ZrX3JuZzJwZXIgV0hFUkUgaWQgPSAnWzksOV0nOworSU5TRVJUIElO VE8gdGVtcG9yYWxfcGVyIFZBTFVFUyAoJ1syNCwyNF0nLCAnMjAxOC0wMS0wMScsICcyMDIw LTAxLTAxJyk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wZXIgVkFMVUVTICgnWzI0LDI0XScs ICcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2Zr X3JuZzJwZXIgVkFMVUVTICgnWzE1LDE1XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAy MS0wMS0wMScpLCAnWzI0LDI0XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcGVyIFdIRVJF IGlkID0gJ1syNCwyNF0nIEFORCB0c3JhbmdlKHZhbGlkX2Zyb20sIHZhbGlkX3RpbCkgQD4g JzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3Ju ZzJwZXIgV0hFUkUgaWQgPSAnWzE1LDE1XSc7CisKKworLS0KKy0tIHRlc3QgRk9SRUlHTiBL RVksIFBFUklPRCByZWZlcmVuY2VzIHJhbmdlCistLQorCitERUxFVEUgRlJPTSB0ZW1wb3Jh bF9ma19ybmcycm5nOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nOworSU5TRVJUIElOVE8g dGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1sxLDFdJywgdHNyYW5nZSgnMjAxOC0wMS0wMicsICcy MDE4LTAyLTAzJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1sxLDFd JywgdHNyYW5nZSgnMjAxOC0wMy0wMycsICcyMDE4LTA0LTA0JykpOworSU5TRVJUIElOVE8g dGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1syLDJdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcy MDE4LTAxLTA1JykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1szLDNd JywgdHNyYW5nZSgnMjAxOC0wMS0wMScsIE5VTEwpKTsKKworLS0gQ2FuJ3QgY3JlYXRlIGEg Rksgd2l0aCBhIG1pc21hdGNoZWQgcmFuZ2UgdHlwZQorQ1JFQVRFIFRBQkxFIHRlbXBvcmFs X2ZrX3BlcjJybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9mcm9tIGludDQsCisgIHZh bGlkX3RpbCBpbnQ0LAorCVBFUklPRCBGT1IgdmFsaWRfYXQgKHZhbGlkX2Zyb20sIHZhbGlk X3RpbCksCisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2Zr X3BlcjJybmdfcGsyIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQ UyksCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19wZXIycm5nX2ZrMiBGT1JFSUdOIEtFWSAo cGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5n IChpZCwgUEVSSU9EIHZhbGlkX2F0KQorKTsKKworLS0gd2l0aCBpbmZlcnJlZCBQSyBvbiB0 aGUgcmVmZXJlbmNlZCB0YWJsZToKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ma19wZXIycm5n ICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfZnJvbSB0aW1lc3RhbXAsCisJdmFsaWRfdGls IHRpbWVzdGFtcCwKKwlQRVJJT0QgRk9SIHZhbGlkX2F0ICh2YWxpZF9mcm9tLCB2YWxpZF90 aWwpLAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19w ZXIycm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyks CisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19wZXIycm5nX2ZrIEZPUkVJR04gS0VZIChwYXJl bnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcKKyk7 CitEUk9QIFRBQkxFIHRlbXBvcmFsX2ZrX3BlcjJybmc7CisKKy0tIHNob3VsZCBmYWlsIGJl Y2F1c2Ugb2YgZHVwbGljYXRlIHJlZmVyZW5jZWQgY29sdW1uczoKK0NSRUFURSBUQUJMRSB0 ZW1wb3JhbF9ma19wZXIycm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfZnJvbSB0aW1l c3RhbXAsCisJdmFsaWRfdGlsIHRpbWVzdGFtcCwKKwlQRVJJT0QgRk9SIHZhbGlkX2F0ICh2 YWxpZF9mcm9tLCB2YWxpZF90aWwpLAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RS QUlOVCB0ZW1wb3JhbF9ma19wZXIycm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQg V0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19wZXIycm5nX2Zr IEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCBwYXJlbnRfaWQpCisJCVJFRkVSRU5D RVMgdGVtcG9yYWxfcm5nIChpZCwgUEVSSU9EIGlkKQorKTsKKworLS0KKy0tIHRlc3QgQUxU RVIgVEFCTEUgQUREIENPTlNUUkFJTlQKKy0tCisKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9m a19wZXIycm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfZnJvbSB0aW1lc3RhbXAsCisJ dmFsaWRfdGlsIHRpbWVzdGFtcCwKKwlQRVJJT0QgRk9SIHZhbGlkX2F0ICh2YWxpZF9mcm9t LCB2YWxpZF90aWwpLAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1w b3JhbF9ma19wZXIycm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBP VkVSTEFQUykKKyk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19wZXIycm5nCisJQUREIENP TlNUUkFJTlQgdGVtcG9yYWxfZmtfcGVyMnJuZ19maworCUZPUkVJR04gS0VZIChwYXJlbnRf aWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZyAoaWQsIFBF UklPRCB2YWxpZF9hdCk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19wZXIycm5nCisJRFJP UCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3BlcjJybmdfZms7CistLSB3aXRoIGluZmVycmVk IFBLIG9uIHRoZSByZWZlcmVuY2VkIHRhYmxlOgorQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtf cGVyMnJuZworCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3BlcjJybmdfZmsKKwlGT1JF SUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNFUyB0ZW1w b3JhbF9ybmc7CisKKy0tIHNob3VsZCBmYWlsIGJlY2F1c2Ugb2YgZHVwbGljYXRlIHJlZmVy ZW5jZWQgY29sdW1uczoKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3BlcjJybmcKKwlBREQg Q09OU1RSQUlOVCB0ZW1wb3JhbF9ma19wZXIycm5nX2ZrMgorCUZPUkVJR04gS0VZIChwYXJl bnRfaWQsIFBFUklPRCBwYXJlbnRfaWQpCisJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcgKGlk LCBQRVJJT0QgaWQpOworCistLQorLS0gdGVzdCB3aXRoIHJvd3MgYWxyZWFkeQorLS0KKwor REVMRVRFIEZST00gdGVtcG9yYWxfZmtfcGVyMnJuZzsKK0FMVEVSIFRBQkxFIHRlbXBvcmFs X2ZrX3BlcjJybmcKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcGVyMnJuZ19mazsK K0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3BlcjJybmcgVkFMVUVTICgnWzEsMV0nLCAnMjAx OC0wMS0wMicsICcyMDE4LTAyLTAxJywgJ1sxLDFdJyk7CitBTFRFUiBUQUJMRSB0ZW1wb3Jh bF9ma19wZXIycm5nCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcGVyMnJuZ19mawor CUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VT IHRlbXBvcmFsX3JuZzsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3BlcjJybmcKKwlEUk9Q IENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcGVyMnJuZ19mazsKK0lOU0VSVCBJTlRPIHRlbXBv cmFsX2ZrX3BlcjJybmcgVkFMVUVTICgnWzIsMl0nLCAnMjAxOC0wMS0wMicsICcyMDE4LTA0 LTAxJywgJ1sxLDFdJyk7CistLSBzaG91bGQgZmFpbDoKK0FMVEVSIFRBQkxFIHRlbXBvcmFs X2ZrX3BlcjJybmcKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19wZXIycm5nX2ZrCisJ Rk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMg dGVtcG9yYWxfcm5nOworLS0gb2theSBhZ2FpbjoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2Zr X3BlcjJybmc7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19wZXIycm5nCisJQUREIENPTlNU UkFJTlQgdGVtcG9yYWxfZmtfcGVyMnJuZ19maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQs IFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzsKKworLS0KKy0t IHRlc3QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYKKy0tCisKK1NFTEVDVCBwZ19nZXRfY29uc3Ry YWludGRlZihvaWQpIEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25uYW1lID0gJ3RlbXBv cmFsX2ZrX3BlcjJybmdfZmsnOworCistLQorLS0gdGVzdCBGSyBjaGlsZCBpbnNlcnRzCist LQorCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19wZXIycm5nIFZBTFVFUyAoJ1sxLDFdJywg JzIwMTgtMDEtMDInLCAnMjAxOC0wMi0wMScsICdbMSwxXScpOworLS0gc2hvdWxkIGZhaWw6 CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19wZXIycm5nIFZBTFVFUyAoJ1syLDJdJywgJzIw MTgtMDEtMDInLCAnMjAxOC0wNC0wMScsICdbMSwxXScpOworLS0gbm93IGl0IHNob3VsZCB3 b3JrOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1sxLDFdJywgdHNyYW5n ZSgnMjAxOC0wMi0wMycsICcyMDE4LTAzLTAzJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxf ZmtfcGVyMnJuZyBWQUxVRVMgKCdbMiwyXScsICcyMDE4LTAxLTAyJywgJzIwMTgtMDQtMDEn LCAnWzEsMV0nKTsKKworLS0KKy0tIHRlc3QgRksgY2hpbGQgdXBkYXRlcworLS0KK1VQREFU RSB0ZW1wb3JhbF9ma19wZXIycm5nIFNFVCB2YWxpZF9mcm9tID0gJzIwMTgtMDEtMDInLCB2 YWxpZF90aWwgPSAnMjAxOC0wMy0wMScgV0hFUkUgaWQgPSAnWzEsMV0nOworLS0gc2hvdWxk IGZhaWw6CitVUERBVEUgdGVtcG9yYWxfZmtfcGVyMnJuZyBTRVQgdmFsaWRfZnJvbSA9ICcy MDE4LTAxLTAyJywgdmFsaWRfdGlsID0gJzIwMTgtMDUtMDEnIFdIRVJFIGlkID0gJ1sxLDFd JzsKK1VQREFURSB0ZW1wb3JhbF9ma19wZXIycm5nIFNFVCBwYXJlbnRfaWQgPSAnWzgsOF0n IFdIRVJFIGlkID0gJ1sxLDFdJzsKKworLS0KKy0tIHRlc3QgRksgcGFyZW50IHVwZGF0ZXMg Tk8gQUNUSU9OCistLQorCistLSBhIFBLIHVwZGF0ZSB0aGF0IHN1Y2NlZWRzIGJlY2F1c2Ug dGhlIG51bWVyaWMgaWQgaXNuJ3QgcmVmZXJlbmNlZDoKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X3JuZyBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0w MScpKTsKK1VQREFURSB0ZW1wb3JhbF9ybmcgU0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAx Ni0wMS0wMScsICcyMDE2LTAyLTAxJykgV0hFUkUgaWQgPSAnWzUsNV0nOworLS0gYSBQSyB1 cGRhdGUgdGhhdCBzdWNjZWVkcyBldmVuIHRob3VnaCB0aGUgbnVtZXJpYyBpZCBpcyByZWZl cmVuY2VkIGJlY2F1c2UgdGhlIHJhbmdlIGlzbid0OgorREVMRVRFIEZST00gdGVtcG9yYWxf cm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxV RVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgt MDItMDEnLCAnMjAxOC0wMy0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3BlcjJy bmcgVkFMVUVTICgnWzMsM10nLCAnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEwJywgJ1s1LDVd Jyk7CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYt MDItMDEnLCAnMjAxNi0wMy0wMScpCitXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0 ID0gdHNyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJyk7CistLSBhIFBLIHVwZGF0 ZSB0aGF0IGZhaWxzIGJlY2F1c2UgYm90aCBhcmUgcmVmZXJlbmNlZDoKK1VQREFURSB0ZW1w b3JhbF9ybmcgU0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxNi0wMS0wMScsICcyMDE2LTAy LTAxJykKK1dIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4 LTAxLTAxJywnMjAxOC0wMi0wMScpOworLS0gdGhlbiBkZWxldGUgdGhlIG9iamVjdGluZyBG SyByZWNvcmQgYW5kIHRoZSBzYW1lIFBLIHVwZGF0ZSBzdWNjZWVkczoKK0RFTEVURSBGUk9N IHRlbXBvcmFsX2ZrX3BlcjJybmcgV0hFUkUgaWQgPSAnWzMsM10nOworVVBEQVRFIHRlbXBv cmFsX3JuZyBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDIt MDEnKQorV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgt MDEtMDEnLCAnMjAxOC0wMi0wMScpOworLS0gY2xlYW4gdXA6CitERUxFVEUgRlJPTSB0ZW1w b3JhbF9ma19wZXIycm5nIFdIRVJFIHBhcmVudF9pZCA9ICdbNSw1XSc7CitERUxFVEUgRlJP TSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nOworCistLQorLS0gdGVzdCBGSyBw YXJlbnQgdXBkYXRlcyBSRVNUUklDVAorLS0KKworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtf cGVyMnJuZworCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19wZXIycm5nX2ZrOworQUxU RVIgVEFCTEUgdGVtcG9yYWxfZmtfcGVyMnJuZworCUFERCBDT05TVFJBSU5UIHRlbXBvcmFs X2ZrX3BlcjJybmdfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRf YXQpCisJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcKKwlPTiBERUxFVEUgUkVTVFJJQ1Q7Cist LSBhIFBLIHVwZGF0ZSB0aGF0IHN1Y2NlZWRzIGJlY2F1c2UgdGhlIG51bWVyaWMgaWQgaXNu J3QgcmVmZXJlbmNlZDoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNSw1 XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK1VQREFURSB0ZW1w b3JhbF9ybmcgU0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxNi0wMS0wMScsICcyMDE2LTAy LTAxJykgV0hFUkUgaWQgPSAnWzUsNV0nOworLS0gYSBQSyB1cGRhdGUgdGhhdCBzdWNjZWVk cyBldmVuIHRob3VnaCB0aGUgbnVtZXJpYyBpZCBpcyByZWZlcmVuY2VkIGJlY2F1c2UgdGhl IHJhbmdlIGlzbid0OgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1 LDVdJzsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNSw1XScsIHRzcmFu Z2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X3JuZyBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0w MScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3BlcjJybmcgVkFMVUVTICgnWzMsM10n LCAnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEwJywgJ1s1LDVdJyk7CitVUERBVEUgdGVtcG9y YWxfcm5nIFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDItMDEnLCAnMjAxNi0wMy0w MScpCitXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0w Mi0wMScsICcyMDE4LTAzLTAxJyk7CistLSBhIFBLIHVwZGF0ZSB0aGF0IGZhaWxzIGJlY2F1 c2UgYm90aCBhcmUgcmVmZXJlbmNlZDoKK1VQREFURSB0ZW1wb3JhbF9ybmcgU0VUIHZhbGlk X2F0ID0gdHNyYW5nZSgnMjAxNi0wMS0wMScsICcyMDE2LTAyLTAxJykKK1dIRVJFIGlkID0g J1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDIt MDEnKTsKKy0tIHRoZW4gZGVsZXRlIHRoZSBvYmplY3RpbmcgRksgcmVjb3JkIGFuZCB0aGUg c2FtZSBQSyB1cGRhdGUgc3VjY2VlZHM6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19wZXIy cm5nIFdIRVJFIGlkID0gJ1szLDNdJzsKK1VQREFURSB0ZW1wb3JhbF9ybmcgU0VUIHZhbGlk X2F0ID0gdHNyYW5nZSgnMjAxNi0wMS0wMScsICcyMDE2LTAyLTAxJykKK1dIRVJFIGlkID0g J1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDIt MDEnKTsKKy0tIGNsZWFuIHVwOgorREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcGVyMnJuZyBX SEVSRSBwYXJlbnRfaWQgPSAnWzUsNV0nOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdI RVJFIGlkID0gJ1s1LDVdJzsKKworLS0KKy0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgTk8g QUNUSU9OCistLQorCitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19wZXIycm5nCisJRFJPUCBD T05TVFJBSU5UIHRlbXBvcmFsX2ZrX3BlcjJybmdfZms7CitBTFRFUiBUQUJMRSB0ZW1wb3Jh bF9ma19wZXIycm5nCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcGVyMnJuZ19mawor CUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VT IHRlbXBvcmFsX3JuZzsKKy0tIGEgUEsgZGVsZXRlIHRoYXQgc3VjY2VlZHMgYmVjYXVzZSB0 aGUgbnVtZXJpYyBpZCBpc24ndCByZWZlcmVuY2VkOgorSU5TRVJUIElOVE8gdGVtcG9yYWxf cm5nIFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAx JykpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKKy0t IGEgUEsgZGVsZXRlIHRoYXQgc3VjY2VlZHMgZXZlbiB0aG91Z2ggdGhlIG51bWVyaWMgaWQg aXMgcmVmZXJlbmNlZCBiZWNhdXNlIHRoZSByYW5nZSBpc24ndDoKK0lOU0VSVCBJTlRPIHRl bXBvcmFsX3JuZyBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAx OC0wMi0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNSw1XScs IHRzcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpKTsKK0lOU0VSVCBJTlRPIHRl bXBvcmFsX2ZrX3BlcjJybmcgVkFMVUVTICgnWzMsM10nLCAnMjAxOC0wMS0wNScsICcyMDE4 LTAxLTEwJywgJ1s1LDVdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQg PSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0w My0wMScpOworLS0gYSBQSyBkZWxldGUgdGhhdCBmYWlscyBiZWNhdXNlIGJvdGggYXJlIHJl ZmVyZW5jZWQ6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0n IEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOwor LS0gdGhlbiBkZWxldGUgdGhlIG9iamVjdGluZyBGSyByZWNvcmQgYW5kIHRoZSBzYW1lIFBL IGRlbGV0ZSBzdWNjZWVkczoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3BlcjJybmcgV0hF UkUgaWQgPSAnWzMsM10nOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0g J1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDIt MDEnKTsKKworLS0KKy0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgUkVTVFJJQ1QKKy0tCisK K0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3BlcjJybmcKKwlEUk9QIENPTlNUUkFJTlQgdGVt cG9yYWxfZmtfcGVyMnJuZ19mazsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3BlcjJybmcK KwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19wZXIycm5nX2ZrCisJRk9SRUlHTiBLRVkg KHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5n CisJT04gREVMRVRFIFJFU1RSSUNUOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVF UyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpOworREVM RVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKKy0tIGEgUEsgZGVs ZXRlIHRoYXQgc3VjY2VlZHMgZXZlbiB0aG91Z2ggdGhlIG51bWVyaWMgaWQgaXMgcmVmZXJl bmNlZCBiZWNhdXNlIHRoZSByYW5nZSBpc24ndDoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3Ju ZyBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScp KTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2Uo JzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2Zr X3BlcjJybmcgVkFMVUVTICgnWzMsM10nLCAnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEwJywg J1s1LDVdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0n IEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpOwor LS0gYSBQSyBkZWxldGUgdGhhdCBmYWlscyBiZWNhdXNlIGJvdGggYXJlIHJlZmVyZW5jZWQ6 CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxp ZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworLS0gdGhlbiBk ZWxldGUgdGhlIG9iamVjdGluZyBGSyByZWNvcmQgYW5kIHRoZSBzYW1lIFBLIGRlbGV0ZSBz dWNjZWVkczoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3BlcjJybmcgV0hFUkUgaWQgPSAn WzMsM10nOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBB TkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKKwor LS0KKy0tIHRlc3QgT04gVVBEQVRFL0RFTEVURSBvcHRpb25zCistLQorCistLSB0ZXN0IEZL IHBhcmVudCB1cGRhdGVzIENBU0NBREUKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxV RVMgKCdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3BlcjJybmcgVkFMVUVTICgnWzQsNF0nLCAnMjAxOC0w MS0wMScsICcyMDIxLTAxLTAxJywgJ1s2LDZdJyk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9m a19wZXIycm5nCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3BlcjJybmdfZmssCisJ QUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcGVyMnJuZ19maworCQlGT1JFSUdOIEtFWSAo cGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5n CisJCU9OIERFTEVURSBDQVNDQURFIE9OIFVQREFURSBDQVNDQURFOworVVBEQVRFIHRlbXBv cmFsX3JuZyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAn MjAyMC0wMS0wMScgU0VUIGlkID0gJ1s3LDddJyBXSEVSRSBpZCA9ICdbNiw2XSc7CitTRUxF Q1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3BlcjJybmcgV0hFUkUgaWQgPSAnWzQsNF0nOworVVBE QVRFIHRlbXBvcmFsX3JuZyBTRVQgaWQgPSAnWzcsN10nIFdIRVJFIGlkID0gJ1s2LDZdJzsK K1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcGVyMnJuZyBXSEVSRSBpZCA9ICdbNCw0XSc7 CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzE1LDE1XScsIHRzcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3Ju ZyBWQUxVRVMgKCdbMTUsMTVdJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAx JykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcGVyMnJuZyBWQUxVRVMgKCdbMTAsMTBd JywgJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScsICdbMTUsMTVdJyk7CitVUERBVEUgdGVt cG9yYWxfcm5nIFNFVCBpZCA9ICdbMTYsMTZdJyBXSEVSRSBpZCA9ICdbMTUsMTVdJyBBTkQg dmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHRl bXBvcmFsX2ZrX3BlcjJybmcgV0hFUkUgaWQgPSAnWzEwLDEwXSc7CisKKy0tIHRlc3QgRksg cGFyZW50IGRlbGV0ZXMgQ0FTQ0FERQorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVF UyAoJ1s4LDhdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5T RVJUIElOVE8gdGVtcG9yYWxfZmtfcGVyMnJuZyBWQUxVRVMgKCdbNSw1XScsICcyMDE4LTAx LTAxJywgJzIwMjEtMDEtMDEnLCAnWzgsOF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3Ju ZyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0w MS0wMScgV0hFUkUgaWQgPSAnWzgsOF0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19w ZXIycm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBX SEVSRSBpZCA9ICdbOCw4XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3BlcjJybmcg V0hFUkUgaWQgPSAnWzUsNV0nOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAo J1sxNywxN10nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7CitJTlNF UlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzE3LDE3XScsIHRzcmFuZ2UoJzIwMjAt MDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3BlcjJy bmcgVkFMVUVTICgnWzExLDExXScsICcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnLCAnWzE3 LDE3XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1sxNywxN10n IEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZS T00gdGVtcG9yYWxfZmtfcGVyMnJuZyBXSEVSRSBpZCA9ICdbMTEsMTFdJzsKKworLS0gdGVz dCBGSyBwYXJlbnQgdXBkYXRlcyBTRVQgTlVMTAorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5n IFZBTFVFUyAoJ1s5LDldJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykp OworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcGVyMnJuZyBWQUxVRVMgKCdbNiw2XScsICcy MDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnLCAnWzksOV0nKTsKK0FMVEVSIFRBQkxFIHRlbXBv cmFsX2ZrX3BlcjJybmcKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcGVyMnJuZ19m aywKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19wZXIycm5nX2ZrCisJCUZPUkVJR04g S0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3Jh bF9ybmcKKwkJT04gREVMRVRFIFNFVCBOVUxMIE9OIFVQREFURSBTRVQgTlVMTDsKK1VQREFU RSB0ZW1wb3JhbF9ybmcgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0w MScgVE8gJzIwMjAtMDEtMDEnIFNFVCBpZCA9ICdbMTAsMTBdJyBXSEVSRSBpZCA9ICdbOSw5 XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3BlcjJybmcgV0hFUkUgaWQgPSAnWzYs Nl0nOworVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgaWQgPSAnWzEwLDEwXScgV0hFUkUgaWQg PSAnWzksOV0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19wZXIycm5nIFdIRVJFIGlk ID0gJ1s2LDZdJzsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbMTgsMThd JywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8g dGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1sxOCwxOF0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywg JzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19wZXIycm5nIFZBTFVF UyAoJ1sxMiwxMl0nLCAnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJywgJ1sxOCwxOF0nKTsK K1VQREFURSB0ZW1wb3JhbF9ybmcgU0VUIGlkID0gJ1sxOSwxOV0nIFdIRVJFIGlkID0gJ1sx OCwxOF0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVD VCAqIEZST00gdGVtcG9yYWxfZmtfcGVyMnJuZyBXSEVSRSBpZCA9ICdbMTIsMTJdJzsKKwor LS0gdGVzdCBGSyBwYXJlbnQgZGVsZXRlcyBTRVQgTlVMTAorSU5TRVJUIElOVE8gdGVtcG9y YWxfcm5nIFZBTFVFUyAoJ1sxMSwxMV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEt MDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19wZXIycm5nIFZBTFVFUyAoJ1s3 LDddJywgJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScsICdbMTEsMTFdJyk7CitERUxFVEUg RlJPTSB0ZW1wb3JhbF9ybmcgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0w MS0wMScgVE8gJzIwMjAtMDEtMDEnIFdIRVJFIGlkID0gJ1sxMSwxMV0nOworU0VMRUNUICog RlJPTSB0ZW1wb3JhbF9ma19wZXIycm5nIFdIRVJFIGlkID0gJ1s3LDddJzsKK0RFTEVURSBG Uk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbMTEsMTFdJzsKK1NFTEVDVCAqIEZST00g dGVtcG9yYWxfZmtfcGVyMnJuZyBXSEVSRSBpZCA9ICdbNyw3XSc7CitJTlNFUlQgSU5UTyB0 ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzIwLDIwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAn MjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbMjAs MjBdJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElO VE8gdGVtcG9yYWxfZmtfcGVyMnJuZyBWQUxVRVMgKCdbMTMsMTNdJywgJzIwMTgtMDEtMDEn LCAnMjAyMS0wMS0wMScsICdbMjAsMjBdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcg V0hFUkUgaWQgPSAnWzIwLDIwXScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6dGlt ZXN0YW1wOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19wZXIycm5nIFdIRVJFIGlkID0g J1sxMywxM10nOworCistLSB0ZXN0IEZLIHBhcmVudCB1cGRhdGVzIFNFVCBERUZBVUxUCitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWy0xLC0xXScsIHRzcmFuZ2UobnVs bCwgbnVsbCkpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1sxMiwxMl0n LCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0 ZW1wb3JhbF9ma19wZXIycm5nIFZBTFVFUyAoJ1s4LDhdJywgJzIwMTgtMDEtMDEnLCAnMjAy MS0wMS0wMScsICdbMTIsMTJdJyk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19wZXIycm5n CisgIEFMVEVSIENPTFVNTiBwYXJlbnRfaWQgU0VUIERFRkFVTFQgJ1stMSwtMV0nLAorCURS T1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19wZXIycm5nX2ZrLAorCUFERCBDT05TVFJBSU5U IHRlbXBvcmFsX2ZrX3BlcjJybmdfZmsKKwkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVS SU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZworCQlPTiBERUxFVEUg U0VUIERFRkFVTFQgT04gVVBEQVRFIFNFVCBERUZBVUxUOworVVBEQVRFIHRlbXBvcmFsX3Ju ZyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0w MS0wMScgU0VUIGlkID0gJ1sxMywxM10nIFdIRVJFIGlkID0gJ1sxMiwxMl0nOworU0VMRUNU ICogRlJPTSB0ZW1wb3JhbF9ma19wZXIycm5nIFdIRVJFIGlkID0gJ1s4LDhdJzsKK1VQREFU RSB0ZW1wb3JhbF9ybmcgU0VUIGlkID0gJ1sxMywxM10nIFdIRVJFIGlkID0gJ1sxMiwxMl0n OworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19wZXIycm5nIFdIRVJFIGlkID0gJ1s4LDhd JzsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbMjIsMjJdJywgdHNyYW5n ZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxf cm5nIFZBTFVFUyAoJ1syMiwyMl0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEt MDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19wZXIycm5nIFZBTFVFUyAoJ1sxNCwx NF0nLCAnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJywgJ1syMiwyMl0nKTsKK1VQREFURSB0 ZW1wb3JhbF9ybmcgU0VUIGlkID0gJ1syMywyM10nIFdIRVJFIGlkID0gJ1syMiwyMl0nIEFO RCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00g dGVtcG9yYWxfZmtfcGVyMnJuZyBXSEVSRSBpZCA9ICdbMTQsMTRdJzsKKworLS0gdGVzdCBG SyBwYXJlbnQgZGVsZXRlcyBTRVQgREVGQVVMVAorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5n IFZBTFVFUyAoJ1sxNCwxNF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEn KSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19wZXIycm5nIFZBTFVFUyAoJ1s5LDldJywg JzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScsICdbMTQsMTRdJyk7CitERUxFVEUgRlJPTSB0 ZW1wb3JhbF9ybmcgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScg VE8gJzIwMjAtMDEtMDEnIFdIRVJFIGlkID0gJ1sxNCwxNF0nOworU0VMRUNUICogRlJPTSB0 ZW1wb3JhbF9ma19wZXIycm5nIFdIRVJFIGlkID0gJ1s5LDldJzsKK0RFTEVURSBGUk9NIHRl bXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbMTQsMTRdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9y YWxfZmtfcGVyMnJuZyBXSEVSRSBpZCA9ICdbOSw5XSc7CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9ybmcgVkFMVUVTICgnWzI0LDI0XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0w MS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbMjQsMjRdJywg dHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVt cG9yYWxfZmtfcGVyMnJuZyBWQUxVRVMgKCdbMTUsMTVdJywgJzIwMTgtMDEtMDEnLCAnMjAy MS0wMS0wMScsICdbMjQsMjRdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUg aWQgPSAnWzI0LDI0XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1w OworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19wZXIycm5nIFdIRVJFIGlkID0gJ1sxNSwx NV0nOworCisKKy0tCistLSB0ZXN0IEZPUkVJR04gS0VZLCBQRVJJT0QgcmVmZXJlbmNlcyBQ RVJJT0QKKy0tCisKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJwZXI7CitERUxFVEUg RlJPTSB0ZW1wb3JhbF9wZXI7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wZXIgVkFMVUVTICgn WzEsMV0nLCAnMjAxOC0wMS0wMicsICcyMDE4LTAyLTAzJyk7CitJTlNFUlQgSU5UTyB0ZW1w b3JhbF9wZXIgVkFMVUVTICgnWzEsMV0nLCAnMjAxOC0wMy0wMycsICcyMDE4LTA0LTA0Jyk7 CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wZXIgVkFMVUVTICgnWzIsMl0nLCAnMjAxOC0wMS0w MScsICcyMDE4LTAxLTA1Jyk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wZXIgVkFMVUVTICgn WzMsM10nLCAnMjAxOC0wMS0wMScsIE5VTEwpOworCistLSBDYW4ndCBjcmVhdGUgYSBGSyB3 aXRoIGEgbWlzbWF0Y2hlZCByYW5nZSB0eXBlCitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfZmtf cGVyMnBlciAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2Zyb20gaW50NCwKKyAgdmFsaWRf dGlsIGludDQsCisJUEVSSU9EIEZPUiB2YWxpZF9hdCAodmFsaWRfZnJvbSwgdmFsaWRfdGls KSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcGVy MnBlcl9wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAor CUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcGVyMnBlcl9mayBGT1JFSUdOIEtFWSAocGFyZW50 X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcGVyIChpZCwg UEVSSU9EIHZhbGlkX2F0KQorKTsKKworLS0gd2l0aCBpbmZlcnJlZCBQSyBvbiB0aGUgcmVm ZXJlbmNlZCB0YWJsZToKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ma19wZXIycGVyICgKKwlp ZCBpbnQ0cmFuZ2UsCisJdmFsaWRfZnJvbSB0aW1lc3RhbXAsCisJdmFsaWRfdGlsIHRpbWVz dGFtcCwKKwlQRVJJT0QgRk9SIHZhbGlkX2F0ICh2YWxpZF9mcm9tLCB2YWxpZF90aWwpLAor CXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19wZXIycGVy X3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09O U1RSQUlOVCB0ZW1wb3JhbF9ma19wZXIycGVyX2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQs IFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9wZXIKKyk7CitEUk9Q IFRBQkxFIHRlbXBvcmFsX2ZrX3BlcjJwZXI7CisKKy0tIHNob3VsZCBmYWlsIGJlY2F1c2Ug b2YgZHVwbGljYXRlIHJlZmVyZW5jZWQgY29sdW1uczoKK0NSRUFURSBUQUJMRSB0ZW1wb3Jh bF9ma19wZXIycGVyICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfZnJvbSB0aW1lc3RhbXAs CisJdmFsaWRfdGlsIHRpbWVzdGFtcCwKKwlQRVJJT0QgRk9SIHZhbGlkX2F0ICh2YWxpZF9m cm9tLCB2YWxpZF90aWwpLAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0 ZW1wb3JhbF9ma19wZXIycGVyX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9V VCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19wZXIycGVyX2ZrIEZPUkVJ R04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCBwYXJlbnRfaWQpCisJCVJFRkVSRU5DRVMgdGVt cG9yYWxfcGVyIChpZCwgUEVSSU9EIGlkKQorKTsKKworLS0KKy0tIHRlc3QgQUxURVIgVEFC TEUgQUREIENPTlNUUkFJTlQKKy0tCisKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ma19wZXIy cGVyICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfZnJvbSB0aW1lc3RhbXAsCisJdmFsaWRf dGlsIHRpbWVzdGFtcCwKKwlQRVJJT0QgRk9SIHZhbGlkX2F0ICh2YWxpZF9mcm9tLCB2YWxp ZF90aWwpLAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9m a19wZXIycGVyX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQ UykKKyk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19wZXIycGVyCisJQUREIENPTlNUUkFJ TlQgdGVtcG9yYWxfZmtfcGVyMnBlcl9maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBF UklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3BlciAoaWQsIFBFUklPRCB2 YWxpZF9hdCk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19wZXIycGVyCisJRFJPUCBDT05T VFJBSU5UIHRlbXBvcmFsX2ZrX3BlcjJwZXJfZms7CistLSB3aXRoIGluZmVycmVkIFBLIG9u IHRoZSByZWZlcmVuY2VkIHRhYmxlOgorQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcGVyMnBl cgorCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3BlcjJwZXJfZmsKKwlGT1JFSUdOIEtF WSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNFUyB0ZW1wb3JhbF9w ZXI7CisKKy0tIHNob3VsZCBmYWlsIGJlY2F1c2Ugb2YgZHVwbGljYXRlIHJlZmVyZW5jZWQg Y29sdW1uczoKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3BlcjJwZXIKKwlBREQgQ09OU1RS QUlOVCB0ZW1wb3JhbF9ma19wZXIycGVyX2ZrMgorCUZPUkVJR04gS0VZIChwYXJlbnRfaWQs IFBFUklPRCBwYXJlbnRfaWQpCisJUkVGRVJFTkNFUyB0ZW1wb3JhbF9wZXIgKGlkLCBQRVJJ T0QgaWQpOworCistLQorLS0gdGVzdCB3aXRoIHJvd3MgYWxyZWFkeQorLS0KKworREVMRVRF IEZST00gdGVtcG9yYWxfZmtfcGVyMnBlcjsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3Bl cjJwZXIKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcGVyMnBlcl9mazsKK0lOU0VS VCBJTlRPIHRlbXBvcmFsX2ZrX3BlcjJwZXIgVkFMVUVTICgnWzEsMV0nLCAnMjAxOC0wMS0w MicsICcyMDE4LTAyLTAxJywgJ1sxLDFdJyk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19w ZXIycGVyCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcGVyMnBlcl9maworCUZPUkVJ R04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBv cmFsX3BlcjsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3BlcjJwZXIKKwlEUk9QIENPTlNU UkFJTlQgdGVtcG9yYWxfZmtfcGVyMnBlcl9mazsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2Zr X3BlcjJwZXIgVkFMVUVTICgnWzIsMl0nLCAnMjAxOC0wMS0wMicsICcyMDE4LTA0LTAxJywg J1sxLDFdJyk7CistLSBzaG91bGQgZmFpbDoKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3Bl cjJwZXIKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19wZXIycGVyX2ZrCisJRk9SRUlH TiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9y YWxfcGVyOworLS0gb2theSBhZ2FpbjoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3BlcjJw ZXI7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19wZXIycGVyCisJQUREIENPTlNUUkFJTlQg dGVtcG9yYWxfZmtfcGVyMnBlcl9maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklP RCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3BlcjsKKworLS0KKy0tIHRlc3Qg cGdfZ2V0X2NvbnN0cmFpbnRkZWYKKy0tCisKK1NFTEVDVCBwZ19nZXRfY29uc3RyYWludGRl ZihvaWQpIEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25uYW1lID0gJ3RlbXBvcmFsX2Zr X3BlcjJwZXJfZmsnOworCistLQorLS0gdGVzdCBGSyBjaGlsZCBpbnNlcnRzCistLQorCitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19wZXIycGVyIFZBTFVFUyAoJ1sxLDFdJywgJzIwMTgt MDEtMDInLCAnMjAxOC0wMi0wMScsICdbMSwxXScpOworLS0gc2hvdWxkIGZhaWw6CitJTlNF UlQgSU5UTyB0ZW1wb3JhbF9ma19wZXIycGVyIFZBTFVFUyAoJ1syLDJdJywgJzIwMTgtMDEt MDInLCAnMjAxOC0wNC0wMScsICdbMSwxXScpOworLS0gbm93IGl0IHNob3VsZCB3b3JrOgor SU5TRVJUIElOVE8gdGVtcG9yYWxfcGVyIFZBTFVFUyAoJ1sxLDFdJywgJzIwMTgtMDItMDMn LCAnMjAxOC0wMy0wMycpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcGVyMnBlciBWQUxV RVMgKCdbMiwyXScsICcyMDE4LTAxLTAyJywgJzIwMTgtMDQtMDEnLCAnWzEsMV0nKTsKKwor LS0KKy0tIHRlc3QgRksgY2hpbGQgdXBkYXRlcworLS0KK1VQREFURSB0ZW1wb3JhbF9ma19w ZXIycGVyIFNFVCB2YWxpZF9mcm9tID0gJzIwMTgtMDEtMDInLCB2YWxpZF90aWwgPSAnMjAx OC0wMy0wMScgV0hFUkUgaWQgPSAnWzEsMV0nOworLS0gc2hvdWxkIGZhaWw6CitVUERBVEUg dGVtcG9yYWxfZmtfcGVyMnBlciBTRVQgdmFsaWRfZnJvbSA9ICcyMDE4LTAxLTAyJywgdmFs aWRfdGlsID0gJzIwMTgtMDUtMDEnIFdIRVJFIGlkID0gJ1sxLDFdJzsKK1VQREFURSB0ZW1w b3JhbF9ma19wZXIycGVyIFNFVCBwYXJlbnRfaWQgPSAnWzgsOF0nIFdIRVJFIGlkID0gJ1sx LDFdJzsKKworLS0KKy0tIHRlc3QgRksgcGFyZW50IHVwZGF0ZXMgTk8gQUNUSU9OCistLQor CistLSBhIFBLIHVwZGF0ZSB0aGF0IHN1Y2NlZWRzIGJlY2F1c2UgdGhlIG51bWVyaWMgaWQg aXNuJ3QgcmVmZXJlbmNlZDoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BlciBWQUxVRVMgKCdb NSw1XScsICcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKK1VQREFURSB0ZW1wb3JhbF9w ZXIgU0VUIHZhbGlkX2Zyb20gPSAnMjAxNi0wMS0wMScsIHZhbGlkX3RpbCA9ICcyMDE2LTAy LTAxJyBXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBhIFBLIHVwZGF0ZSB0aGF0IHN1Y2NlZWRz IGV2ZW4gdGhvdWdoIHRoZSBudW1lcmljIGlkIGlzIHJlZmVyZW5jZWQgYmVjYXVzZSB0aGUg cmFuZ2UgaXNuJ3Q6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wZXIgV0hFUkUgaWQgPSAnWzUs NV0nOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGVyIFZBTFVFUyAoJ1s1LDVdJywgJzIwMTgt MDEtMDEnLCAnMjAxOC0wMi0wMScpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGVyIFZBTFVF UyAoJ1s1LDVdJywgJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpOworSU5TRVJUIElOVE8g dGVtcG9yYWxfZmtfcGVyMnBlciBWQUxVRVMgKCdbMywzXScsICcyMDE4LTAxLTA1JywgJzIw MTgtMDEtMTAnLCAnWzUsNV0nKTsKK1VQREFURSB0ZW1wb3JhbF9wZXIgU0VUIHZhbGlkX2Zy b20gPSAnMjAxNi0wMi0wMScsIHZhbGlkX3RpbCA9ICcyMDE2LTAzLTAxJworV0hFUkUgaWQg PSAnWzUsNV0nIEFORCB2YWxpZF9mcm9tID0gJzIwMTgtMDItMDEnIEFORCB2YWxpZF90aWwg PSAnMjAxOC0wMy0wMSc7CistLSBhIFBLIHVwZGF0ZSB0aGF0IGZhaWxzIGJlY2F1c2UgYm90 aCBhcmUgcmVmZXJlbmNlZDoKK1VQREFURSB0ZW1wb3JhbF9wZXIgU0VUIHZhbGlkX2Zyb20g PSAnMjAxNi0wMS0wMScsIHZhbGlkX3RpbCA9ICcyMDE2LTAyLTAxJworV0hFUkUgaWQgPSAn WzUsNV0nIEFORCB2YWxpZF9mcm9tID0gJzIwMTgtMDEtMDEnIEFORCB2YWxpZF90aWwgPSAn MjAxOC0wMi0wMSc7CistLSB0aGVuIGRlbGV0ZSB0aGUgb2JqZWN0aW5nIEZLIHJlY29yZCBh bmQgdGhlIHNhbWUgUEsgdXBkYXRlIHN1Y2NlZWRzOgorREVMRVRFIEZST00gdGVtcG9yYWxf ZmtfcGVyMnBlciBXSEVSRSBpZCA9ICdbMywzXSc7CitVUERBVEUgdGVtcG9yYWxfcGVyIFNF VCB2YWxpZF9mcm9tID0gJzIwMTYtMDEtMDEnLCB2YWxpZF90aWwgPSAnMjAxNi0wMi0wMScK K1dIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfZnJvbSA9ICcyMDE4LTAxLTAxJyBBTkQg dmFsaWRfdGlsID0gJzIwMTgtMDItMDEnOworLS0gY2xlYW4gdXA6CitERUxFVEUgRlJPTSB0 ZW1wb3JhbF9ma19wZXIycGVyIFdIRVJFIHBhcmVudF9pZCA9ICdbNSw1XSc7CitERUxFVEUg RlJPTSB0ZW1wb3JhbF9wZXIgV0hFUkUgaWQgPSAnWzUsNV0nOworCistLQorLS0gdGVzdCBG SyBwYXJlbnQgdXBkYXRlcyBSRVNUUklDVAorLS0KKworQUxURVIgVEFCTEUgdGVtcG9yYWxf ZmtfcGVyMnBlcgorCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19wZXIycGVyX2ZrOwor QUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcGVyMnBlcgorCUFERCBDT05TVFJBSU5UIHRlbXBv cmFsX2ZrX3BlcjJwZXJfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFs aWRfYXQpCisJUkVGRVJFTkNFUyB0ZW1wb3JhbF9wZXIKKwlPTiBERUxFVEUgUkVTVFJJQ1Q7 CistLSBhIFBLIHVwZGF0ZSB0aGF0IHN1Y2NlZWRzIGJlY2F1c2UgdGhlIG51bWVyaWMgaWQg aXNuJ3QgcmVmZXJlbmNlZDoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BlciBWQUxVRVMgKCdb NSw1XScsICcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKK1VQREFURSB0ZW1wb3JhbF9w ZXIgU0VUIHZhbGlkX2Zyb20gPSAnMjAxNi0wMS0wMScsIHZhbGlkX3RpbCA9ICcyMDE2LTAy LTAxJyBXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBhIFBLIHVwZGF0ZSB0aGF0IHN1Y2NlZWRz IGV2ZW4gdGhvdWdoIHRoZSBudW1lcmljIGlkIGlzIHJlZmVyZW5jZWQgYmVjYXVzZSB0aGUg cmFuZ2UgaXNuJ3Q6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wZXIgV0hFUkUgaWQgPSAnWzUs NV0nOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGVyIFZBTFVFUyAoJ1s1LDVdJywgJzIwMTgt MDEtMDEnLCAnMjAxOC0wMi0wMScpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGVyIFZBTFVF UyAoJ1s1LDVdJywgJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpOworSU5TRVJUIElOVE8g dGVtcG9yYWxfZmtfcGVyMnBlciBWQUxVRVMgKCdbMywzXScsICcyMDE4LTAxLTA1JywgJzIw MTgtMDEtMTAnLCAnWzUsNV0nKTsKK1VQREFURSB0ZW1wb3JhbF9wZXIgU0VUIHZhbGlkX2Zy b20gPSAnMjAxNi0wMi0wMScsIHZhbGlkX3RpbCA9ICcyMDE2LTAzLTAxJworV0hFUkUgaWQg PSAnWzUsNV0nIEFORCB2YWxpZF9mcm9tID0gJzIwMTgtMDItMDEnIEFORCB2YWxpZF90aWwg PSAnMjAxOC0wMy0wMSc7CistLSBhIFBLIHVwZGF0ZSB0aGF0IGZhaWxzIGJlY2F1c2UgYm90 aCBhcmUgcmVmZXJlbmNlZDoKK1VQREFURSB0ZW1wb3JhbF9wZXIgU0VUIHZhbGlkX2Zyb20g PSAnMjAxNi0wMS0wMScsIHZhbGlkX3RpbCA9ICcyMDE2LTAyLTAxJworV0hFUkUgaWQgPSAn WzUsNV0nIEFORCB2YWxpZF9mcm9tID0gJzIwMTgtMDEtMDEnIEFORCB2YWxpZF90aWwgPSAn MjAxOC0wMi0wMSc7CistLSB0aGVuIGRlbGV0ZSB0aGUgb2JqZWN0aW5nIEZLIHJlY29yZCBh bmQgdGhlIHNhbWUgUEsgdXBkYXRlIHN1Y2NlZWRzOgorREVMRVRFIEZST00gdGVtcG9yYWxf ZmtfcGVyMnBlciBXSEVSRSBpZCA9ICdbMywzXSc7CitVUERBVEUgdGVtcG9yYWxfcGVyIFNF VCB2YWxpZF9mcm9tID0gJzIwMTYtMDEtMDEnLCB2YWxpZF90aWwgPSAnMjAxNi0wMi0wMScK K1dIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfZnJvbSA9ICcyMDE4LTAxLTAxJyBBTkQg dmFsaWRfdGlsID0gJzIwMTgtMDItMDEnOworLS0gY2xlYW4gdXA6CitERUxFVEUgRlJPTSB0 ZW1wb3JhbF9ma19wZXIycGVyIFdIRVJFIHBhcmVudF9pZCA9ICdbNSw1XSc7CitERUxFVEUg RlJPTSB0ZW1wb3JhbF9wZXIgV0hFUkUgaWQgPSAnWzUsNV0nOworCistLQorLS0gdGVzdCBG SyBwYXJlbnQgZGVsZXRlcyBOTyBBQ1RJT04KKy0tCisKK0FMVEVSIFRBQkxFIHRlbXBvcmFs X2ZrX3BlcjJwZXIKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcGVyMnBlcl9mazsK K0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3BlcjJwZXIKKwlBREQgQ09OU1RSQUlOVCB0ZW1w b3JhbF9ma19wZXIycGVyX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZh bGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfcGVyOworLS0gYSBQSyBkZWxldGUgdGhh dCBzdWNjZWVkcyBiZWNhdXNlIHRoZSBudW1lcmljIGlkIGlzbid0IHJlZmVyZW5jZWQ6CitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9wZXIgVkFMVUVTICgnWzUsNV0nLCAnMjAxOC0wMS0wMScs ICcyMDE4LTAyLTAxJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wZXIgV0hFUkUgaWQgPSAn WzUsNV0nOworLS0gYSBQSyBkZWxldGUgdGhhdCBzdWNjZWVkcyBldmVuIHRob3VnaCB0aGUg bnVtZXJpYyBpZCBpcyByZWZlcmVuY2VkIGJlY2F1c2UgdGhlIHJhbmdlIGlzbid0OgorSU5T RVJUIElOVE8gdGVtcG9yYWxfcGVyIFZBTFVFUyAoJ1s1LDVdJywgJzIwMTgtMDEtMDEnLCAn MjAxOC0wMi0wMScpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGVyIFZBTFVFUyAoJ1s1LDVd JywgJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpOworSU5TRVJUIElOVE8gdGVtcG9yYWxf ZmtfcGVyMnBlciBWQUxVRVMgKCdbMywzXScsICcyMDE4LTAxLTA1JywgJzIwMTgtMDEtMTAn LCAnWzUsNV0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3BlciBXSEVSRSBpZCA9ICdbNSw1 XScgQU5EIHZhbGlkX2Zyb20gPSAnMjAxOC0wMi0wMScgQU5EIHZhbGlkX3RpbCA9ICcyMDE4 LTAzLTAxJzsKKy0tIGEgUEsgZGVsZXRlIHRoYXQgZmFpbHMgYmVjYXVzZSBib3RoIGFyZSBy ZWZlcmVuY2VkOgorREVMRVRFIEZST00gdGVtcG9yYWxfcGVyIFdIRVJFIGlkID0gJ1s1LDVd JyBBTkQgdmFsaWRfZnJvbSA9ICcyMDE4LTAxLTAxJyBBTkQgdmFsaWRfdGlsID0gJzIwMTgt MDItMDEnOworLS0gdGhlbiBkZWxldGUgdGhlIG9iamVjdGluZyBGSyByZWNvcmQgYW5kIHRo ZSBzYW1lIFBLIGRlbGV0ZSBzdWNjZWVkczoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3Bl cjJwZXIgV0hFUkUgaWQgPSAnWzMsM10nOworREVMRVRFIEZST00gdGVtcG9yYWxfcGVyIFdI RVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfZnJvbSA9ICcyMDE4LTAxLTAxJyBBTkQgdmFs aWRfdGlsID0gJzIwMTgtMDItMDEnOworCistLQorLS0gdGVzdCBGSyBwYXJlbnQgZGVsZXRl cyBSRVNUUklDVAorLS0KKworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcGVyMnBlcgorCURS T1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19wZXIycGVyX2ZrOworQUxURVIgVEFCTEUgdGVt cG9yYWxfZmtfcGVyMnBlcgorCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3BlcjJwZXJf ZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJF TkNFUyB0ZW1wb3JhbF9wZXIKKwlPTiBERUxFVEUgUkVTVFJJQ1Q7CitJTlNFUlQgSU5UTyB0 ZW1wb3JhbF9wZXIgVkFMVUVTICgnWzUsNV0nLCAnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAx Jyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wZXIgV0hFUkUgaWQgPSAnWzUsNV0nOworLS0g YSBQSyBkZWxldGUgdGhhdCBzdWNjZWVkcyBldmVuIHRob3VnaCB0aGUgbnVtZXJpYyBpZCBp cyByZWZlcmVuY2VkIGJlY2F1c2UgdGhlIHJhbmdlIGlzbid0OgorSU5TRVJUIElOVE8gdGVt cG9yYWxfcGVyIFZBTFVFUyAoJ1s1LDVdJywgJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScp OworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGVyIFZBTFVFUyAoJ1s1LDVdJywgJzIwMTgtMDIt MDEnLCAnMjAxOC0wMy0wMScpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcGVyMnBlciBW QUxVRVMgKCdbMywzXScsICcyMDE4LTAxLTA1JywgJzIwMTgtMDEtMTAnLCAnWzUsNV0nKTsK K0RFTEVURSBGUk9NIHRlbXBvcmFsX3BlciBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlk X2Zyb20gPSAnMjAxOC0wMi0wMScgQU5EIHZhbGlkX3RpbCA9ICcyMDE4LTAzLTAxJzsKKy0t IGEgUEsgZGVsZXRlIHRoYXQgZmFpbHMgYmVjYXVzZSBib3RoIGFyZSByZWZlcmVuY2VkOgor REVMRVRFIEZST00gdGVtcG9yYWxfcGVyIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRf ZnJvbSA9ICcyMDE4LTAxLTAxJyBBTkQgdmFsaWRfdGlsID0gJzIwMTgtMDItMDEnOworLS0g dGhlbiBkZWxldGUgdGhlIG9iamVjdGluZyBGSyByZWNvcmQgYW5kIHRoZSBzYW1lIFBLIGRl bGV0ZSBzdWNjZWVkczoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3BlcjJwZXIgV0hFUkUg aWQgPSAnWzMsM10nOworREVMRVRFIEZST00gdGVtcG9yYWxfcGVyIFdIRVJFIGlkID0gJ1s1 LDVdJyBBTkQgdmFsaWRfZnJvbSA9ICcyMDE4LTAxLTAxJyBBTkQgdmFsaWRfdGlsID0gJzIw MTgtMDItMDEnOworCistLQorLS0gdGVzdCBPTiBVUERBVEUvREVMRVRFIG9wdGlvbnMKKy0t CisKKy0tIHRlc3QgRksgcGFyZW50IHVwZGF0ZXMgQ0FTQ0FERQorSU5TRVJUIElOVE8gdGVt cG9yYWxfcGVyIFZBTFVFUyAoJ1s2LDZdJywgJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScp OworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcGVyMnBlciBWQUxVRVMgKCdbNCw0XScsICcy MDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnLCAnWzYsNl0nKTsKK0FMVEVSIFRBQkxFIHRlbXBv cmFsX2ZrX3BlcjJwZXIKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcGVyMnBlcl9m aywKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19wZXIycGVyX2ZrCisJCUZPUkVJR04g S0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3Jh bF9wZXIKKwkJT04gREVMRVRFIENBU0NBREUgT04gVVBEQVRFIENBU0NBREU7CitVUERBVEUg dGVtcG9yYWxfcGVyIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEn IFRPICcyMDIwLTAxLTAxJyBTRVQgaWQgPSAnWzcsN10nIFdIRVJFIGlkID0gJ1s2LDZdJzsK K1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcGVyMnBlciBXSEVSRSBpZCA9ICdbNCw0XSc7 CitVUERBVEUgdGVtcG9yYWxfcGVyIFNFVCBpZCA9ICdbNyw3XScgV0hFUkUgaWQgPSAnWzYs Nl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19wZXIycGVyIFdIRVJFIGlkID0gJ1s0 LDRdJzsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BlciBWQUxVRVMgKCdbMTUsMTVdJywgJzIw MTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGVyIFZB TFVFUyAoJ1sxNSwxNV0nLCAnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJyk7CitJTlNFUlQg SU5UTyB0ZW1wb3JhbF9ma19wZXIycGVyIFZBTFVFUyAoJ1sxMCwxMF0nLCAnMjAxOC0wMS0w MScsICcyMDIxLTAxLTAxJywgJ1sxNSwxNV0nKTsKK1VQREFURSB0ZW1wb3JhbF9wZXIgU0VU IGlkID0gJ1sxNiwxNl0nIFdIRVJFIGlkID0gJ1sxNSwxNV0nIEFORCB0c3JhbmdlKHZhbGlk X2Zyb20sIHZhbGlkX3RpbCkgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1Qg KiBGUk9NIHRlbXBvcmFsX2ZrX3BlcjJwZXIgV0hFUkUgaWQgPSAnWzEwLDEwXSc7CisKKy0t IHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgQ0FTQ0FERQorSU5TRVJUIElOVE8gdGVtcG9yYWxf cGVyIFZBTFVFUyAoJ1s4LDhdJywgJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpOworSU5T RVJUIElOVE8gdGVtcG9yYWxfZmtfcGVyMnBlciBWQUxVRVMgKCdbNSw1XScsICcyMDE4LTAx LTAxJywgJzIwMjEtMDEtMDEnLCAnWzgsOF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3Bl ciBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0w MS0wMScgV0hFUkUgaWQgPSAnWzgsOF0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19w ZXIycGVyIFdIRVJFIGlkID0gJ1s1LDVdJzsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3BlciBX SEVSRSBpZCA9ICdbOCw4XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3BlcjJwZXIg V0hFUkUgaWQgPSAnWzUsNV0nOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGVyIFZBTFVFUyAo J1sxNywxN10nLCAnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJyk7CitJTlNFUlQgSU5UTyB0 ZW1wb3JhbF9wZXIgVkFMVUVTICgnWzE3LDE3XScsICcyMDIwLTAxLTAxJywgJzIwMjEtMDEt MDEnKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3BlcjJwZXIgVkFMVUVTICgnWzExLDEx XScsICcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnLCAnWzE3LDE3XScpOworREVMRVRFIEZS T00gdGVtcG9yYWxfcGVyIFdIRVJFIGlkID0gJ1sxNywxN10nIEFORCB0c3JhbmdlKHZhbGlk X2Zyb20sIHZhbGlkX3RpbCkgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1Qg KiBGUk9NIHRlbXBvcmFsX2ZrX3BlcjJwZXIgV0hFUkUgaWQgPSAnWzExLDExXSc7CisKKy0t IHRlc3QgRksgcGFyZW50IHVwZGF0ZXMgU0VUIE5VTEwKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X3BlciBWQUxVRVMgKCdbOSw5XScsICcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKTsKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3BlcjJwZXIgVkFMVUVTICgnWzYsNl0nLCAnMjAxOC0w MS0wMScsICcyMDIxLTAxLTAxJywgJ1s5LDldJyk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9m a19wZXIycGVyCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3BlcjJwZXJfZmssCisJ QUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcGVyMnBlcl9maworCQlGT1JFSUdOIEtFWSAo cGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcGVy CisJCU9OIERFTEVURSBTRVQgTlVMTCBPTiBVUERBVEUgU0VUIE5VTEw7CitVUERBVEUgdGVt cG9yYWxfcGVyIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRP ICcyMDIwLTAxLTAxJyBTRVQgaWQgPSAnWzEwLDEwXScgV0hFUkUgaWQgPSAnWzksOV0nOwor U0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19wZXIycGVyIFdIRVJFIGlkID0gJ1s2LDZdJzsK K1VQREFURSB0ZW1wb3JhbF9wZXIgU0VUIGlkID0gJ1sxMCwxMF0nIFdIRVJFIGlkID0gJ1s5 LDldJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcGVyMnBlciBXSEVSRSBpZCA9ICdb Niw2XSc7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wZXIgVkFMVUVTICgnWzE4LDE4XScsICcy MDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BlciBW QUxVRVMgKCdbMTgsMThdJywgJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpOworSU5TRVJU IElOVE8gdGVtcG9yYWxfZmtfcGVyMnBlciBWQUxVRVMgKCdbMTIsMTJdJywgJzIwMTgtMDEt MDEnLCAnMjAyMS0wMS0wMScsICdbMTgsMThdJyk7CitVUERBVEUgdGVtcG9yYWxfcGVyIFNF VCBpZCA9ICdbMTksMTldJyBXSEVSRSBpZCA9ICdbMTgsMThdJyBBTkQgdHNyYW5nZSh2YWxp ZF9mcm9tLCB2YWxpZF90aWwpIEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNU ICogRlJPTSB0ZW1wb3JhbF9ma19wZXIycGVyIFdIRVJFIGlkID0gJ1sxMiwxMl0nOworCist LSB0ZXN0IEZLIHBhcmVudCBkZWxldGVzIFNFVCBOVUxMCitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9wZXIgVkFMVUVTICgnWzExLDExXScsICcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKTsK K0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3BlcjJwZXIgVkFMVUVTICgnWzcsN10nLCAnMjAx OC0wMS0wMScsICcyMDIxLTAxLTAxJywgJ1sxMSwxMV0nKTsKK0RFTEVURSBGUk9NIHRlbXBv cmFsX3BlciBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAn MjAyMC0wMS0wMScgV0hFUkUgaWQgPSAnWzExLDExXSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBv cmFsX2ZrX3BlcjJwZXIgV0hFUkUgaWQgPSAnWzcsN10nOworREVMRVRFIEZST00gdGVtcG9y YWxfcGVyIFdIRVJFIGlkID0gJ1sxMSwxMV0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9m a19wZXIycGVyIFdIRVJFIGlkID0gJ1s3LDddJzsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3Bl ciBWQUxVRVMgKCdbMjAsMjBdJywgJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpOworSU5T RVJUIElOVE8gdGVtcG9yYWxfcGVyIFZBTFVFUyAoJ1syMCwyMF0nLCAnMjAyMC0wMS0wMScs ICcyMDIxLTAxLTAxJyk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19wZXIycGVyIFZBTFVF UyAoJ1sxMywxM10nLCAnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJywgJ1syMCwyMF0nKTsK K0RFTEVURSBGUk9NIHRlbXBvcmFsX3BlciBXSEVSRSBpZCA9ICdbMjAsMjBdJyBBTkQgdHNy YW5nZSh2YWxpZF9mcm9tLCB2YWxpZF90aWwpIEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1w OworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19wZXIycGVyIFdIRVJFIGlkID0gJ1sxMywx M10nOworCistLSB0ZXN0IEZLIHBhcmVudCB1cGRhdGVzIFNFVCBERUZBVUxUCitJTlNFUlQg SU5UTyB0ZW1wb3JhbF9wZXIgVkFMVUVTICgnWy0xLC0xXScsIG51bGwsIG51bGwpOworSU5T RVJUIElOVE8gdGVtcG9yYWxfcGVyIFZBTFVFUyAoJ1sxMiwxMl0nLCAnMjAxOC0wMS0wMScs ICcyMDIxLTAxLTAxJyk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19wZXIycGVyIFZBTFVF UyAoJ1s4LDhdJywgJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScsICdbMTIsMTJdJyk7CitB TFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19wZXIycGVyCisgIEFMVEVSIENPTFVNTiBwYXJlbnRf aWQgU0VUIERFRkFVTFQgJ1stMSwtMV0nLAorCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9m a19wZXIycGVyX2ZrLAorCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3BlcjJwZXJfZmsK KwkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVO Q0VTIHRlbXBvcmFsX3BlcgorCQlPTiBERUxFVEUgU0VUIERFRkFVTFQgT04gVVBEQVRFIFNF VCBERUZBVUxUOworVVBEQVRFIHRlbXBvcmFsX3BlciBGT1IgUE9SVElPTiBPRiB2YWxpZF9h dCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgU0VUIGlkID0gJ1sxMywxM10n IFdIRVJFIGlkID0gJ1sxMiwxMl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19wZXIy cGVyIFdIRVJFIGlkID0gJ1s4LDhdJzsKK1VQREFURSB0ZW1wb3JhbF9wZXIgU0VUIGlkID0g J1sxMywxM10nIFdIRVJFIGlkID0gJ1sxMiwxMl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3Jh bF9ma19wZXIycGVyIFdIRVJFIGlkID0gJ1s4LDhdJzsKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X3BlciBWQUxVRVMgKCdbMjIsMjJdJywgJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpOwor SU5TRVJUIElOVE8gdGVtcG9yYWxfcGVyIFZBTFVFUyAoJ1syMiwyMl0nLCAnMjAyMC0wMS0w MScsICcyMDIxLTAxLTAxJyk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19wZXIycGVyIFZB TFVFUyAoJ1sxNCwxNF0nLCAnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJywgJ1syMiwyMl0n KTsKK1VQREFURSB0ZW1wb3JhbF9wZXIgU0VUIGlkID0gJ1syMywyM10nIFdIRVJFIGlkID0g J1syMiwyMl0nIEFORCB0c3JhbmdlKHZhbGlkX2Zyb20sIHZhbGlkX3RpbCkgQD4gJzIwMTkt MDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3BlcjJwZXIg V0hFUkUgaWQgPSAnWzE0LDE0XSc7CisKKy0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgU0VU IERFRkFVTFQKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BlciBWQUxVRVMgKCdbMTQsMTRdJywg JzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtf cGVyMnBlciBWQUxVRVMgKCdbOSw5XScsICcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnLCAn WzE0LDE0XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcGVyIEZPUiBQT1JUSU9OIE9GIHZh bGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBXSEVSRSBpZCA9ICdb MTQsMTRdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcGVyMnBlciBXSEVSRSBpZCA9 ICdbOSw5XSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wZXIgV0hFUkUgaWQgPSAnWzE0LDE0 XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3BlcjJwZXIgV0hFUkUgaWQgPSAnWzks OV0nOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGVyIFZBTFVFUyAoJ1syNCwyNF0nLCAnMjAx OC0wMS0wMScsICcyMDIwLTAxLTAxJyk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wZXIgVkFM VUVTICgnWzI0LDI0XScsICcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKTsKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX2ZrX3BlcjJwZXIgVkFMVUVTICgnWzE1LDE1XScsICcyMDE4LTAxLTAx JywgJzIwMjEtMDEtMDEnLCAnWzI0LDI0XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcGVy IFdIRVJFIGlkID0gJ1syNCwyNF0nIEFORCB0c3JhbmdlKHZhbGlkX2Zyb20sIHZhbGlkX3Rp bCkgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFs X2ZrX3BlcjJwZXIgV0hFUkUgaWQgPSAnWzE1LDE1XSc7Ci0tIAoyLjI1LjEKCg== --------------xLmCyd89q18NiaElblWAsYVm Content-Type: text/x-patch; charset=UTF-8; name="v11-0003-Add-UPDATE-DELETE-FOR-PORTION-OF.patch" Content-Disposition: attachment; filename="v11-0003-Add-UPDATE-DELETE-FOR-PORTION-OF.patch" Content-Transfer-Encoding: base64 RnJvbSA3NDVkMWM3YjU4NDYzZTI4YzJiZGU4NmJmZGU3NmVmNDE2NzRiNmM5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IEZyaSwgMjUgSnVuIDIwMjEgMTg6NTQ6MzUgLTA3 MDAKU3ViamVjdDogW1BBVENIIHYxMSAzLzRdIEFkZCBVUERBVEUvREVMRVRFIEZPUiBQT1JU SU9OIE9GCgotIEFkZGVkIGJpc29uIHN1cHBvcnQgZm9yIEZPUiBQT1JUSU9OIE9GIHN5bnRh eC4gVGhlIGJvdW5kcyBtdXN0IGJlCiAgY29uc3RhbnQsIHNvIHdlIGZvcmJpZCBjb2x1bW4g cmVmZXJlbmNlcywgc3VicXVlcmllcywgZXRjLiBCdXQgd2UKICBwZXJtaXQgdGhlIG1hZ2lj IFVOQk9VTkRFRCBrZXl3b3JkIGFzIHRoZSBGUk9NIG9yIHRoZSBUTyAob3IgYm90aCkKICB0 byBwZXJmb3JtIGFuIHVuYm91bmRlZCB1cGRhdGUvZGVsZXRlLiBXZSBhbHNvIGFjY2VwdCBm dW5jdGlvbnMgbGlrZQogIE5PVygpLgotIEFkZGVkIGxvZ2ljIHRvIGV4ZWN1dG9yIHRvIGlu c2VydCBuZXcgcm93cyBmb3IgdGhlICJsZWZ0b3ZlciIgcGFydCBvZgogIGEgcmVjb3JkIHRv dWNoZWQgYnkgYSBGT1IgUE9SVElPTiBPRiBxdWVyeS4KLSBBZGRlZCB0Z190ZW1wb3JhbCBk ZXNjcmlwdG9yIHRvIHRoZSBUcmlnZ2VyRGF0YSBzdHJ1Y3QgdGhhdCB3ZSBwYXNzIHRvCiAg dHJpZ2dlciBmdW5jdGlvbnMuIE91ciB0cmlnZ2VycyB1c2UgdGhpcyB0byBsZWFybiB3aGF0 IGJvdW5kcyB3ZXJlCiAgZ2l2ZW4gaW4gdGhlIEZPUiBQT1JUSU9OIE9GIGNsYXVzZS4KLSBE b2N1bWVudGVkIEZPUiBQT1JUSU9OIE9GLgotIERvY3VtZW50ZWQgdGdfdGVtcG9yYWwgc3Ry dWN0LgotIEFkZGVkIHRlc3RzLgotLS0KIGRvYy9zcmMvc2dtbC9kZGwuc2dtbCAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAgNCArCiBkb2Mvc3JjL3NnbWwvcmVmL2RlbGV0ZS5zZ21s ICAgICAgICAgICAgICAgICAgfCAgNDYgKwogZG9jL3NyYy9zZ21sL3JlZi91cGRhdGUuc2dt bCAgICAgICAgICAgICAgICAgIHwgIDQ3ICsrCiBkb2Mvc3JjL3NnbWwvdHJpZ2dlci5zZ21s ICAgICAgICAgICAgICAgICAgICAgfCAgNjAgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3Rh YmxlY21kcy5jICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9jb21tYW5kcy90 cmlnZ2VyLmMgICAgICAgICAgICAgICAgfCAgNDggKysKIHNyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNNYWluLmMgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlTW9kaWZ5VGFibGUuYyAgICAgICAgfCAyNTEgKysrKystCiBzcmMvYmFja2VuZC9u b2Rlcy9ub2RlRnVuY3MuYyAgICAgICAgICAgICAgICAgfCAgMjYgKwogc3JjL2JhY2tlbmQv b3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jICAgICAgIHwgICA4ICstCiBzcmMvYmFja2Vu ZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tl bmQvb3B0aW1pemVyL3V0aWwvcGF0aG5vZGUuYyAgICAgICAgIHwgICA0ICstCiBzcmMvYmFj a2VuZC9wYXJzZXIvYW5hbHl6ZS5jICAgICAgICAgICAgICAgICAgfCAzNDQgKysrKysrKy0K IHNyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgICAgICAgICAgICAgICAgICAgICB8ICA0NyAr LQogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2FnZy5jICAgICAgICAgICAgICAgIHwgIDEw ICsKIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9jb2xsYXRlLmMgICAgICAgICAgICB8ICAg MSArCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jICAgICAgICAgICAgICAgfCAg IDggKwogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2Z1bmMuYyAgICAgICAgICAgICAgIHwg ICAzICsKIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9tZXJnZS5jICAgICAgICAgICAgICB8 ICAgMiArLQogc3JjL2JhY2tlbmQvcmV3cml0ZS9yZXdyaXRlSGFuZGxlci5jICAgICAgICAg IHwgIDQwICsKIHNyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jICAgICAgICAgICAgICAgICAg ICB8ICAgMiArLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L01ha2VmaWxlICAgICAgICAgICAg ICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZXJpb2QuYyAgICAgICAgICAg ICAgICB8ICA1NiArKwogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JhbmdldHlwZXMuYyAgICAg ICAgICAgIHwgIDQyICsKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9yaV90cmlnZ2Vycy5jICAg ICAgICAgICB8ICAxOSArLQogc3JjL2luY2x1ZGUvY29tbWFuZHMvdHJpZ2dlci5oICAgICAg ICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oICAgICAg ICAgICAgICAgICB8ICAyNyArCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggICAg ICAgICAgICAgICAgfCAgNDQgKy0KIHNyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oICAg ICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaCAg ICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmgg ICAgICAgICAgICAgICAgIHwgIDIzICsKIHNyYy9pbmNsdWRlL29wdGltaXplci9wYXRobm9k ZS5oICAgICAgICAgICAgICB8ICAgMyArLQogc3JjL2luY2x1ZGUvcGFyc2VyL2FuYWx5emUu aCAgICAgICAgICAgICAgICAgIHwgICAzICstCiBzcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0 LmggICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNl X25vZGUuaCAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL3V0aWxzL3Blcmlv ZC5oICAgICAgICAgICAgICAgICAgICB8ICAxOSArCiBzcmMvaW5jbHVkZS91dGlscy9yYW5n ZXR5cGVzLmggICAgICAgICAgICAgICAgfCAgIDMgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9mb3JfcG9ydGlvbl9vZi5vdXQgIHwgNzk3ICsrKysrKysrKysrKysrKysrKwogc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wcml2aWxlZ2VzLm91dCAgICAgIHwgIDM2ICsKIHNy Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdXBkYXRhYmxlX3ZpZXdzLm91dCB8ICAzMiArCiAu Li4vcmVncmVzcy9leHBlY3RlZC93aXRob3V0X292ZXJsYXBzLm91dCAgICAgfCAxMTYgKy0t CiBzcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlICAgICAgICAgICAgfCAgIDIg Ky0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Zvcl9wb3J0aW9uX29mLnNxbCAgICAgICB8IDYy OCArKysrKysrKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHJpdmlsZWdlcy5zcWwg ICAgICAgICAgIHwgIDM2ICsKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3VwZGF0YWJsZV92aWV3 cy5zcWwgICAgICB8ICAxNCArCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC93aXRob3V0X292ZXJs YXBzLnNxbCAgICAgfCAgNjAgKy0KIDQ2IGZpbGVzIGNoYW5nZWQsIDI3NzggaW5zZXJ0aW9u cygrKSwgMTQyIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9iYWNrZW5k L3V0aWxzL2FkdC9wZXJpb2QuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9pbmNsdWRlL3V0 aWxzL3BlcmlvZC5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9mb3JfcG9ydGlvbl9vZi5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9y ZWdyZXNzL3NxbC9mb3JfcG9ydGlvbl9vZi5zcWwKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3Nn bWwvZGRsLnNnbWwgYi9kb2Mvc3JjL3NnbWwvZGRsLnNnbWwKaW5kZXggZjA1Nzg3OTk1NS4u MzQzZTkxYjk3NSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2RkbC5zZ21sCisrKyBiL2Rv Yy9zcmMvc2dtbC9kZGwuc2dtbApAQCAtMTI4Niw2ICsxMjg2LDEwIEBAIENSRUFURSBUQUJM RSBiaWxsaW5nX2FkZHJlc3NlcyAoCiAgICAgYW5kIHNlY29uZCBhIHBlcmlvZCAob3IgcmFu Z2UgY29sdW1uKSB0aGF0IHF1YWxpZmllcyB3aGVuIHRoZSByb3cgYXBwbGllcy4gU28gYSB0 ZW1wb3JhbCBwcmltYXJ5IHBlcm1pdHMgbXVsdGlwbGUgcm93cyB3aXRoIGVxdWFsIHZhbHVl cyBpbiB0aGUgb3JkaW5hcnkga2V5IHBhcnRzLCBhcyBsb25nIGFzIHRob3NlIHJvd3MgZG9u J3QgaGF2ZSBvdmVybGFwcGluZyBwZXJpb2RzLiBFYWNoIHJvdyBtYWtlcyBhIHN0YXRlbWVu dCBhYm91dCB0aGUgZW50aXR5IGlkZW50aWZpZWQgYnkgdGhlIG9yZGluYXJ5IGtleSBwYXJ0 cywgYnV0IGFwcGx5aW5nIG9ubHkgdG8gdGhlIHNwYW4gZ2l2ZW4gYnkgdGhlIHBlcmlvZC4K ICAgICBUZW1wb3JhbCBwcmltYXJ5IGtleXMgYXJlIGVzc2VudGlhbGx5IDxsaW5rIGxpbmtl bmQ9InNxbC1jcmVhdGV0YWJsZS1leGNsdWRlIj5leGNsdXNpb24gY29uc3RyYWludHM8L2xp bms+IHdoZXJlIHRoZSBmaXJzdCBrZXkgcGFydHMgYXJlIGNvbXBhcmVkIGZvciBlcXVhbGl0 eSBhbmQgdGhlIGxhc3QgcGFydCBmb3Igb3ZlcmxhcHMuCiAgICA8L3BhcmE+CisKKyAgIDxw YXJhPgorICAgIEFueSB0YWJsZSB3aXRoIGEgdGVtcG9yYWwgcHJpbWFyeSBrZXkgc3VwcG9y dHMgdGVtcG9yYWwgPGxpdGVyYWw+VVBEQVRFPC9saXRlcmFsPiBhbmQgPGxpdGVyYWw+REVM RVRFPC9saXRlcmFsPiB1c2luZyA8bGl0ZXJhbD5GT1IgUE9SVElPTiBPRjwvbGl0ZXJhbD4g c3ludGF4LiBTZWUgPHhyZWYgbGlua2VuZD0ic3FsLXVwZGF0ZSIvPiBhbmQgPHhyZWYgbGlu a2VuZD0ic3FsLWRlbGV0ZSIvPiBmb3IgZGV0YWlscy4KKyAgIDwvcGFyYT4KICAgPC9zZWN0 Mj4KIAogICA8c2VjdDIgaWQ9ImRkbC1wZXJpb2RzLXN5c3RlbS1wZXJpb2RzIj4KZGlmZiAt LWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvZGVsZXRlLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVm L2RlbGV0ZS5zZ21sCmluZGV4IDFiODFiNGU3ZDcuLjg2OGNmMGQxZjkgMTAwNjQ0Ci0tLSBh L2RvYy9zcmMvc2dtbC9yZWYvZGVsZXRlLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9k ZWxldGUuc2dtbApAQCAtMjMsNiArMjMsNyBAQCBQb3N0Z3JlU1FMIGRvY3VtZW50YXRpb24K IDxzeW5vcHNpcz4KIFsgV0lUSCBbIFJFQ1VSU0lWRSBdIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj53aXRoX3F1ZXJ5PC9yZXBsYWNlYWJsZT4gWywgLi4uXSBdCiBERUxFVEUg RlJPTSBbIE9OTFkgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFt ZTwvcmVwbGFjZWFibGU+IFsgKiBdIFsgWyBBUyBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5hbGlhczwvcmVwbGFjZWFibGU+IF0KKyAgICBbIEZPUiBQT1JUSU9OIE9GIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yYW5nZV9vcl9wZXJpb2RfbmFtZTwvcmVw bGFjZWFibGU+IEZST00gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnN0YXJ0X3Rp bWU8L3JlcGxhY2VhYmxlPiBUTyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZW5k X3RpbWU8L3JlcGxhY2VhYmxlPiBdCiAgICAgWyBVU0lORyA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+ZnJvbV9pdGVtPC9yZXBsYWNlYWJsZT4gWywgLi4uXSBdCiAgICAgWyBX SEVSRSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29uZGl0aW9uPC9yZXBsYWNl YWJsZT4gfCBXSEVSRSBDVVJSRU5UIE9GIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5jdXJzb3JfbmFtZTwvcmVwbGFjZWFibGU+IF0KICAgICBbIFJFVFVSTklORyAqIHwgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm91dHB1dF9leHByZXNzaW9uPC9yZXBsYWNl YWJsZT4gWyBbIEFTIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm91dHB1dF9u YW1lPC9yZXBsYWNlYWJsZT4gXSBbLCAuLi5dIF0KQEAgLTU0LDYgKzU1LDE1IEBAIERFTEVU RSBGUk9NIFsgT05MWSBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9u YW1lPC9yZXBsYWNlYWJsZT4gWyAqCiAgICBjaXJjdW1zdGFuY2VzLgogICA8L3BhcmE+CiAK KyAgPHBhcmE+CisgICBJZiB0aGUgdGFibGUgaGFzIGEgPGxpbmsgbGlua2VuZD0iZGRsLXBl cmlvZHMtYXBwbGljYXRpb24tcGVyaW9kcyI+dGVtcG9yYWwKKyAgIHByaW1hcnkga2V5PC9s aW5rPiwgeW91IG1heSBzdXBwbHkgYQorICAgPGxpdGVyYWw+Rk9SIFBPUlRJT04gT0Y8L2xp dGVyYWw+IGNsYXVzZSwgYW5kIHlvdXIgZGVsZXRlIHdpbGwgb25seSBhZmZlY3Qgcm93cwor ICAgdGhhdCBvdmVybGFwIHRoZSBnaXZlbiBpbnRlcnZhbC4gRnVydGhlcm1vcmUsIGlmIGEg cm93J3Mgc3BhbiBleHRlbmRzIG91dHNpZGUKKyAgIHRoZSA8bGl0ZXJhbD5GT1IgUE9SVElP TiBPRjwvbGl0ZXJhbD4gYm91bmRzLCB0aGVuIG5ldyByb3dzIHNwYW5uaW5nIHRoZSAiY3V0 CisgICBvZmYiIGR1cmF0aW9uIHdpbGwgYmUgaW5zZXJ0ZWQgdG8gcHJlc2VydmUgdGhlIG9s ZCB2YWx1ZXMuCisgIDwvcGFyYT4KKwogICA8cGFyYT4KICAgIFRoZSBvcHRpb25hbCA8bGl0 ZXJhbD5SRVRVUk5JTkc8L2xpdGVyYWw+IGNsYXVzZSBjYXVzZXMgPGNvbW1hbmQ+REVMRVRF PC9jb21tYW5kPgogICAgdG8gY29tcHV0ZSBhbmQgcmV0dXJuIHZhbHVlKHMpIGJhc2VkIG9u IGVhY2ggcm93IGFjdHVhbGx5IGRlbGV0ZWQuCkBAIC0xMTYsNiArMTI2LDQyIEBAIERFTEVU RSBGUk9NIFsgT05MWSBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9u YW1lPC9yZXBsYWNlYWJsZT4gWyAqCiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVu dHJ5PgogCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5yYW5nZV9vcl9wZXJpb2RfbmFtZTwvcmVwbGFjZWFibGU+PC90ZXJt PgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBUaGUgcmFuZ2UgY29sdW1u IG9yIHBlcmlvZCB0byB1c2Ugd2hlbiBwZXJmb3JtaW5nIGEgdGVtcG9yYWwgZGVsZXRlLiBU aGlzCisgICAgICBtdXN0IG1hdGNoIHRoZSByYW5nZSBvciBwZXJpb2QgdXNlZCBpbiB0aGUg dGFibGUncyB0ZW1wb3JhbCBwcmltYXJ5IGtleS4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlz dGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8 dGVybT48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c3RhcnRfdGltZTwvcmVwbGFj ZWFibGU+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBUaGUg ZWFybGllc3QgdGltZSAoaW5jbHVzaXZlKSB0byBjaGFuZ2UgaW4gYSB0ZW1wb3JhbCBkZWxl dGUuCisgICAgICBUaGlzIG11c3QgYmUgYSB2YWx1ZSBtYXRjaGluZyB0aGUgYmFzZSB0eXBl IG9mIHRoZSByYW5nZSBvciBwZXJpb2QgZnJvbQorICAgICAgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnJhbmdlX29yX3BlcmlvZF9uYW1lPC9yZXBsYWNlYWJsZT4uIEl0IG1h eSBhbHNvCisgICAgICBiZSB0aGUgc3BlY2lhbCB2YWx1ZSA8bGl0ZXJhbD5NSU5WQUxVRTwv bGl0ZXJhbD4gdG8gaW5kaWNhdGUgYSBkZWxldGUgd2hvc2UKKyAgICAgIGJlZ2lubmluZyBp cyB1bmJvdW5kZWQuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJs aXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPmVuZF90aW1lPC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAg PGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRoZSBsYXRlc3QgdGltZSAoZXhjbHVz aXZlKSB0byBjaGFuZ2UgaW4gYSB0ZW1wb3JhbCBkZWxldGUuCisgICAgICBUaGlzIG11c3Qg YmUgYSB2YWx1ZSBtYXRjaGluZyB0aGUgYmFzZSB0eXBlIG9mIHRoZSByYW5nZSBvciBwZXJp b2QgZnJvbQorICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJhbmdlX29y X3BlcmlvZF9uYW1lPC9yZXBsYWNlYWJsZT4uIEl0IG1heSBhbHNvCisgICAgICBiZSB0aGUg c3BlY2lhbCB2YWx1ZSA8bGl0ZXJhbD5NQVhWQUxVRTwvbGl0ZXJhbD4gdG8gaW5kaWNhdGUg YSBkZWxldGUgd2hvc2UKKyAgICAgIGVuZCBpcyB1bmJvdW5kZWQuCisgICAgIDwvcGFyYT4K KyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKICAgIDx2YXJsaXN0ZW50 cnk+CiAgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmZyb21faXRl bTwvcmVwbGFjZWFibGU+PC90ZXJtPgogICAgIDxsaXN0aXRlbT4KZGlmZiAtLWdpdCBhL2Rv Yy9zcmMvc2dtbC9yZWYvdXBkYXRlLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL3VwZGF0ZS5z Z21sCmluZGV4IDJhYjI0YjA1MjMuLmYyMDQyZTBiMjUgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMv c2dtbC9yZWYvdXBkYXRlLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi91cGRhdGUuc2dt bApAQCAtMjMsNiArMjMsNyBAQCBQb3N0Z3JlU1FMIGRvY3VtZW50YXRpb24KIDxzeW5vcHNp cz4KIFsgV0lUSCBbIFJFQ1VSU0lWRSBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij53aXRoX3F1ZXJ5PC9yZXBsYWNlYWJsZT4gWywgLi4uXSBdCiBVUERBVEUgWyBPTkxZIF0g PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxl PiBbICogXSBbIFsgQVMgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+YWxpYXM8 L3JlcGxhY2VhYmxlPiBdCisgICAgWyBGT1IgUE9SVElPTiBPRiA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+cmFuZ2Vfb3JfcGVyaW9kX25hbWU8L3JlcGxhY2VhYmxlPiBGUk9N IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zdGFydF90aW1lPC9yZXBsYWNlYWJs ZT4gVE8gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmVuZF90aW1lPC9yZXBsYWNl YWJsZT4gXQogICAgIFNFVCB7IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1 bW5fbmFtZTwvcmVwbGFjZWFibGU+ID0geyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+IHwgREVGQVVMVCB9IHwKICAgICAgICAgICAo IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFi bGU+IFssIC4uLl0gKSA9IFsgUk9XIF0gKCB7IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4gfCBERUZBVUxUIH0gWywgLi4uXSApIHwK ICAgICAgICAgICAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFt ZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gKSA9ICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnN1Yi1TRUxFQ1Q8L3JlcGxhY2VhYmxlPiApCkBAIC01MSw2ICs1MiwxNiBAQCBV UERBVEUgWyBPTkxZIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25h bWU8L3JlcGxhY2VhYmxlPiBbICogXSBbCiAgICBjaXJjdW1zdGFuY2VzLgogICA8L3BhcmE+ CiAKKyAgPHBhcmE+CisgICBJZiB0aGUgdGFibGUgaGFzIGEgPGxpbmsgbGlua2VuZD0iZGRs LXBlcmlvZHMtYXBwbGljYXRpb24tcGVyaW9kcyI+dGVtcG9yYWwKKyAgIHByaW1hcnkga2V5 PC9saW5rPiwgeW91IG1heSBzdXBwbHkgYQorICAgPGxpdGVyYWw+Rk9SIFBPUlRJT04gT0Y8 L2xpdGVyYWw+IGNsYXVzZSwgYW5kIHlvdXIgdXBkYXRlIHdpbGwgb25seSBhZmZlY3Qgcm93 cworICAgdGhhdCBvdmVybGFwIHRoZSBnaXZlbiBpbnRlcnZhbC4gRnVydGhlcm1vcmUsIGlm IGEgcm93J3Mgc3BhbiBleHRlbmRzIG91dHNpZGUKKyAgIHRoZSA8bGl0ZXJhbD5GT1IgUE9S VElPTiBPRjwvbGl0ZXJhbD4gYm91bmRzLCB0aGVuIGl0IHdpbGwgYmUgdHJ1bmNhdGVkIHRv IGZpdAorICAgd2l0aGluIHRoZSBib3VuZHMsIGFuZCBuZXcgcm93cyBzcGFubmluZyB0aGUg ImN1dCBvZmYiIGR1cmF0aW9uIHdpbGwgYmUKKyAgIGluc2VydGVkIHRvIHByZXNlcnZlIHRo ZSBvbGQgdmFsdWVzLgorICA8L3BhcmE+CisKICAgPHBhcmE+CiAgICBUaGUgb3B0aW9uYWwg PGxpdGVyYWw+UkVUVVJOSU5HPC9saXRlcmFsPiBjbGF1c2UgY2F1c2VzIDxjb21tYW5kPlVQ REFURTwvY29tbWFuZD4KICAgIHRvIGNvbXB1dGUgYW5kIHJldHVybiB2YWx1ZShzKSBiYXNl ZCBvbiBlYWNoIHJvdyBhY3R1YWxseSB1cGRhdGVkLgpAQCAtMTE0LDYgKzEyNSw0MiBAQCBV UERBVEUgWyBPTkxZIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25h bWU8L3JlcGxhY2VhYmxlPiBbICogXSBbCiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlz dGVudHJ5PgogCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5yYW5nZV9vcl9wZXJpb2RfbmFtZTwvcmVwbGFjZWFibGU+PC90 ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBUaGUgcmFuZ2UgY29s dW1uIG9yIHBlcmlvZCB0byB1c2Ugd2hlbiBwZXJmb3JtaW5nIGEgdGVtcG9yYWwgdXBkYXRl LiBUaGlzCisgICAgICBtdXN0IG1hdGNoIHRoZSByYW5nZSBvciBwZXJpb2QgdXNlZCBpbiB0 aGUgdGFibGUncyB0ZW1wb3JhbCBwcmltYXJ5IGtleS4KKyAgICAgPC9wYXJhPgorICAgIDwv bGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxpc3RlbnRyeT4KKyAg ICA8dGVybT48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c3RhcnRfdGltZTwvcmVw bGFjZWFibGU+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBU aGUgZWFybGllc3QgdGltZSAoaW5jbHVzaXZlKSB0byBjaGFuZ2UgaW4gYSB0ZW1wb3JhbCB1 cGRhdGUuCisgICAgICBUaGlzIG11c3QgYmUgYSB2YWx1ZSBtYXRjaGluZyB0aGUgYmFzZSB0 eXBlIG9mIHRoZSByYW5nZSBvciBwZXJpb2QgZnJvbQorICAgICAgPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPnJhbmdlX29yX3BlcmlvZF9uYW1lPC9yZXBsYWNlYWJsZT4uIEl0 IG1heSBhbHNvCisgICAgICBiZSB0aGUgc3BlY2lhbCB2YWx1ZSA8bGl0ZXJhbD5NSU5WQUxV RTwvbGl0ZXJhbD4gdG8gaW5kaWNhdGUgYW4gdXBkYXRlIHdob3NlCisgICAgICBiZWdpbm5p bmcgaXMgdW5ib3VuZGVkLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwv dmFybGlzdGVudHJ5PgorCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5lbmRfdGltZTwvcmVwbGFjZWFibGU+PC90ZXJtPgor ICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBUaGUgbGF0ZXN0IHRpbWUgKGV4 Y2x1c2l2ZSkgdG8gY2hhbmdlIGluIGEgdGVtcG9yYWwgdXBkYXRlLgorICAgICAgVGhpcyBt dXN0IGJlIGEgdmFsdWUgbWF0Y2hpbmcgdGhlIGJhc2UgdHlwZSBvZiB0aGUgcmFuZ2Ugb3Ig cGVyaW9kIGZyb20KKyAgICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yYW5n ZV9vcl9wZXJpb2RfbmFtZTwvcmVwbGFjZWFibGU+LiBJdCBtYXkgYWxzbworICAgICAgYmUg dGhlIHNwZWNpYWwgdmFsdWUgPGxpdGVyYWw+TUFYVkFMVUU8L2xpdGVyYWw+IHRvIGluZGlj YXRlIGFuIHVwZGF0ZSB3aG9zZQorICAgICAgZW5kIGlzIHVuYm91bmRlZC4KKyAgICAgPC9w YXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgPHZhcmxp c3RlbnRyeT4KICAgICA8dGVybT48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29s dW1uX25hbWU8L3JlcGxhY2VhYmxlPjwvdGVybT4KICAgICA8bGlzdGl0ZW0+CmRpZmYgLS1n aXQgYS9kb2Mvc3JjL3NnbWwvdHJpZ2dlci5zZ21sIGIvZG9jL3NyYy9zZ21sL3RyaWdnZXIu c2dtbAppbmRleCA2ZTFmMzcwYjIxLi5iNThlNjM0OGFkIDEwMDY0NAotLS0gYS9kb2Mvc3Jj L3NnbWwvdHJpZ2dlci5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC90cmlnZ2VyLnNnbWwKQEAg LTUzNywxNyArNTM3LDE4IEBAIENBTExFRF9BU19UUklHR0VSKGZjaW5mbykKIDxwcm9ncmFt bGlzdGluZz4KIHR5cGVkZWYgc3RydWN0IFRyaWdnZXJEYXRhCiB7Ci0gICAgTm9kZVRhZyAg ICAgICAgICB0eXBlOwotICAgIFRyaWdnZXJFdmVudCAgICAgdGdfZXZlbnQ7Ci0gICAgUmVs YXRpb24gICAgICAgICB0Z19yZWxhdGlvbjsKLSAgICBIZWFwVHVwbGUgICAgICAgIHRnX3Ry aWd0dXBsZTsKLSAgICBIZWFwVHVwbGUgICAgICAgIHRnX25ld3R1cGxlOwotICAgIFRyaWdn ZXIgICAgICAgICAqdGdfdHJpZ2dlcjsKLSAgICBUdXBsZVRhYmxlU2xvdCAgKnRnX3RyaWdz bG90OwotICAgIFR1cGxlVGFibGVTbG90ICAqdGdfbmV3c2xvdDsKLSAgICBUdXBsZXN0b3Jl c3RhdGUgKnRnX29sZHRhYmxlOwotICAgIFR1cGxlc3RvcmVzdGF0ZSAqdGdfbmV3dGFibGU7 Ci0gICAgY29uc3QgQml0bWFwc2V0ICp0Z191cGRhdGVkY29sczsKKyAgICBOb2RlVGFnICAg ICAgICAgICAgdHlwZTsKKyAgICBUcmlnZ2VyRXZlbnQgICAgICAgdGdfZXZlbnQ7CisgICAg UmVsYXRpb24gICAgICAgICAgIHRnX3JlbGF0aW9uOworICAgIEhlYXBUdXBsZSAgICAgICAg ICB0Z190cmlndHVwbGU7CisgICAgSGVhcFR1cGxlICAgICAgICAgIHRnX25ld3R1cGxlOwor ICAgIFRyaWdnZXIgICAgICAgICAgICp0Z190cmlnZ2VyOworICAgIFR1cGxlVGFibGVTbG90 ICAgICp0Z190cmlnc2xvdDsKKyAgICBUdXBsZVRhYmxlU2xvdCAgICAqdGdfbmV3c2xvdDsK KyAgICBUdXBsZXN0b3Jlc3RhdGUgICAqdGdfb2xkdGFibGU7CisgICAgVHVwbGVzdG9yZXN0 YXRlICAgKnRnX25ld3RhYmxlOworICAgIGNvbnN0IEJpdG1hcHNldCAgICp0Z191cGRhdGVk Y29sczsKKyAgICBGb3JQb3J0aW9uT2ZTdGF0ZSAqdGdfdGVtcG9yYWw7CiB9IFRyaWdnZXJE YXRhOwogPC9wcm9ncmFtbGlzdGluZz4KIApAQCAtODE1LDYgKzgxNiw0MyBAQCB0eXBlZGVm IHN0cnVjdCBUcmlnZ2VyCiAgICAgICAgPC9wYXJhPgogICAgICAgPC9saXN0aXRlbT4KICAg ICAgPC92YXJsaXN0ZW50cnk+CisKKyAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgIDx0ZXJt PjxzdHJ1Y3RmaWVsZD50Z190ZW1wb3JhbDwvc3RydWN0ZmllbGQ+PC90ZXJtPgorICAgICAg PGxpc3RpdGVtPgorICAgICAgIDxwYXJhPgorICAgICAgICBTZXQgZm9yIDxsaXRlcmFsPlVQ REFURTwvbGl0ZXJhbD4gYW5kIDxsaXRlcmFsPkRFTEVURTwvbGl0ZXJhbD4gcXVlcmllcwor ICAgICAgICB0aGF0IHVzZSA8bGl0ZXJhbD5GT1IgUE9SVElPTiBPRjwvbGl0ZXJhbD4sIG90 aGVyd2lzZSA8c3ltYm9sPk5VTEw8L3N5bWJvbD4uCisgICAgICAgIENvbnRhaW5zIGEgcG9p bnRlciB0byBhIHN0cnVjdHVyZSBvZiB0eXBlCisgICAgICAgIDxzdHJ1Y3RuYW1lPkZvclBv cnRpb25PZlN0YXRlPC9zdHJ1Y3RuYW1lPiwgZGVmaW5lZCBpbgorICAgICAgICA8ZmlsZW5h bWU+bm9kZXMvZXhlY25vZGVzLmg8L2ZpbGVuYW1lPjoKKworPHByb2dyYW1saXN0aW5nPgor dHlwZWRlZiBzdHJ1Y3QgRm9yUG9ydGlvbk9mU3RhdGUKK3sKKyAgICBOb2RlVGFnIHR5cGU7 CisKKyAgICBjaGFyICAgKmZwX3JhbmdlTmFtZTsgICAgICAgLyogdGhlIGNvbHVtbi9QRVJJ T0QgbmFtZWQgaW4gRk9SIFBPUlRJT04gT0YgKi8KKyAgICBPaWQgICAgIGZwX3JhbmdlVHlw ZTsgICAgICAgLyogdGhlIHR5cGUgb2YgdGhlIEZPUiBQT1JUSU9OIE9GIGV4cHJlc3Npb24g Ki8KKyAgICBib29sICAgIGZwX2hhc1BlcmlvZDsgICAgICAgLyogdHJ1ZSBpZmYgdGhpcyBp cyBhIFBFUklPRCBub3QgYSByYW5nZSAqLworICAgIGNoYXIgICAqZnBfcGVyaW9kU3RhcnRO YW1lOyAvKiB0aGUgUEVSSU9EJ3Mgc3RhcnQgY29sdW1uICovCisgICAgY2hhciAgICpmcF9w ZXJpb2RFbmROYW1lOyAgIC8qIHRoZSBQRVJJT0QncyBlbmQgY29sdW1uICovCisgICAgRGF0 dW0gICBmcF90YXJnZXRSYW5nZTsgICAgIC8qIHRoZSByYW5nZSBmcm9tIEZPUiBQT1JUSU9O IE9GICovCit9IEZvclBvcnRpb25PZlN0YXRlOworPC9wcm9ncmFtbGlzdGluZz4KKworICAg ICAgIHdoZXJlIDxzdHJ1Y3RmaWVsZD5mcF9yYW5nZU5hbWU8L3N0cnVjdGZpZWxkPiBpcyB0 aGUgcGVyaW9kIG9yIHJhbmdlCisgICAgICAgY29sdW1uIG5hbWVkIGluIHRoZSA8bGl0ZXJh bD5GT1IgUE9SVElPTiBPRjwvbGl0ZXJhbD4gY2xhdXNlLAorICAgICAgIDxzdHJ1Y3RmaWVs ZD5mcF9yYW5nZVR5cGU8L3N0cnVjdGZpZWxkPiBpcyBpdHMgcmFuZ2UgdHlwZSwKKyAgICAg ICA8c3RydWN0ZmllbGQ+ZnBfaGFzUGVyaW9kPC9zdHJ1Y3RmaWVsZD4gaW5kaWNhdGVzIHdo ZXRoZXIgYSBwZXJpb2Qgd2FzIHVzZWQKKyAgICAgICBvciBhIHJhbmdlIGNvbHVtbiwgPHN0 cnVjdGZpZWxkPmZwX3BlcmlvZFN0YXJ0TmFtZTwvc3RydWN0ZmllbGQ+IGFuZAorICAgICAg IDxzdHJ1Y3RmaWVsZD5mcF9wZXJpb2RFbmROYW1lPC9zdHJ1Y3RmaWVsZD4gYXJlIHRoZSBu YW1lcyBvZiB0aGUgcGVyaW9kJ3MKKyAgICAgICBzdGFydCBhbmQgZW5kIGNvbHVtbnMgKG9y IDxzeW1ib2w+TlVMTDwvc3ltYm9sPiBpZiBhIHJhbmdlIGNvbHVtbiB3YXMgdXNlZCksCisg ICAgICAgYW5kIDxzdHJ1Y3RmaWVsZD5mcF90YXJnZXRSYW5nZTwvc3RydWN0ZmllbGQ+IGlz IGEgcmFuZ2V0eXBlIHZhbHVlIGNyZWF0ZWQKKyAgICAgICBieSBldmFsdWF0aW5nIHRoZSA8 bGl0ZXJhbD5GT1IgUE9SVElPTiBPRjwvbGl0ZXJhbD4gYm91bmRzLgorICAgICAgIDwvcGFy YT4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAgIDwvdmFybGlzdGVudHJ5PgogICAgIDwvdmFy aWFibGVsaXN0PgogICAgPC9wYXJhPgogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21t YW5kcy90YWJsZWNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCmlu ZGV4IDkwNmYwYTQxYTcuLjYxMTdlZGM2ODQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3RhYmxlY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21k cy5jCkBAIC0xMjI3NSw2ICsxMjI3NSw3IEBAIHZhbGlkYXRlRm9yZWlnbktleUNvbnN0cmFp bnQoY2hhciAqY29ubmFtZSwKIAkJdHJpZ2RhdGEudGdfdHJpZ3R1cGxlID0gRXhlY0ZldGNo U2xvdEhlYXBUdXBsZShzbG90LCBmYWxzZSwgTlVMTCk7CiAJCXRyaWdkYXRhLnRnX3RyaWdz bG90ID0gc2xvdDsKIAkJdHJpZ2RhdGEudGdfdHJpZ2dlciA9ICZ0cmlnOworCQl0cmlnZGF0 YS50Z190ZW1wb3JhbCA9IE5VTEw7CiAKIAkJZmNpbmZvLT5jb250ZXh0ID0gKE5vZGUgKikg JnRyaWdkYXRhOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90cmlnZ2Vy LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90cmlnZ2VyLmMKaW5kZXggMzM1ZDMxYzRmMC4u YTYzMGM0NjNhNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dlci5j CisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIuYwpAQCAtNTQsNiArNTQsNyBA QAogI2luY2x1ZGUgInV0aWxzL2FjbC5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgi CiAjaW5jbHVkZSAidXRpbHMvYnl0ZWEuaCIKKyNpbmNsdWRlICJ1dGlscy9kYXR1bS5oIgog I2luY2x1ZGUgInV0aWxzL2ZtZ3JvaWRzLmgiCiAjaW5jbHVkZSAidXRpbHMvZ3VjX2hvb2tz LmgiCiAjaW5jbHVkZSAidXRpbHMvaW52YWwuaCIKQEAgLTI2MzksNiArMjY0MCw3IEBAIEV4 ZWNCU0RlbGV0ZVRyaWdnZXJzKEVTdGF0ZSAqZXN0YXRlLCBSZXN1bHRSZWxJbmZvICpyZWxp bmZvKQogCUxvY1RyaWdnZXJEYXRhLnRnX2V2ZW50ID0gVFJJR0dFUl9FVkVOVF9ERUxFVEUg fAogCQlUUklHR0VSX0VWRU5UX0JFRk9SRTsKIAlMb2NUcmlnZ2VyRGF0YS50Z19yZWxhdGlv biA9IHJlbGluZm8tPnJpX1JlbGF0aW9uRGVzYzsKKwlMb2NUcmlnZ2VyRGF0YS50Z190ZW1w b3JhbCA9IHJlbGluZm8tPnJpX2ZvclBvcnRpb25PZjsKIAlmb3IgKGkgPSAwOyBpIDwgdHJp Z2Rlc2MtPm51bXRyaWdnZXJzOyBpKyspCiAJewogCQlUcmlnZ2VyICAgICp0cmlnZ2VyID0g JnRyaWdkZXNjLT50cmlnZ2Vyc1tpXTsKQEAgLTI3MzgsNiArMjc0MCw3IEBAIEV4ZWNCUkRl bGV0ZVRyaWdnZXJzKEVTdGF0ZSAqZXN0YXRlLCBFUFFTdGF0ZSAqZXBxc3RhdGUsCiAJCVRS SUdHRVJfRVZFTlRfUk9XIHwKIAkJVFJJR0dFUl9FVkVOVF9CRUZPUkU7CiAJTG9jVHJpZ2dl ckRhdGEudGdfcmVsYXRpb24gPSByZWxpbmZvLT5yaV9SZWxhdGlvbkRlc2M7CisJTG9jVHJp Z2dlckRhdGEudGdfdGVtcG9yYWwgPSByZWxpbmZvLT5yaV9mb3JQb3J0aW9uT2Y7CiAJZm9y IChpID0gMDsgaSA8IHRyaWdkZXNjLT5udW10cmlnZ2VyczsgaSsrKQogCXsKIAkJSGVhcFR1 cGxlCW5ld3R1cGxlOwpAQCAtMjgyOSw2ICsyODMyLDcgQEAgRXhlY0lSRGVsZXRlVHJpZ2dl cnMoRVN0YXRlICplc3RhdGUsIFJlc3VsdFJlbEluZm8gKnJlbGluZm8sCiAJCVRSSUdHRVJf RVZFTlRfUk9XIHwKIAkJVFJJR0dFUl9FVkVOVF9JTlNURUFEOwogCUxvY1RyaWdnZXJEYXRh LnRnX3JlbGF0aW9uID0gcmVsaW5mby0+cmlfUmVsYXRpb25EZXNjOworCUxvY1RyaWdnZXJE YXRhLnRnX3RlbXBvcmFsID0gcmVsaW5mby0+cmlfZm9yUG9ydGlvbk9mOwogCiAJRXhlY0Zv cmNlU3RvcmVIZWFwVHVwbGUodHJpZ3R1cGxlLCBzbG90LCBmYWxzZSk7CiAKQEAgLTI4OTIs NiArMjg5Niw3IEBAIEV4ZWNCU1VwZGF0ZVRyaWdnZXJzKEVTdGF0ZSAqZXN0YXRlLCBSZXN1 bHRSZWxJbmZvICpyZWxpbmZvKQogCQlUUklHR0VSX0VWRU5UX0JFRk9SRTsKIAlMb2NUcmln Z2VyRGF0YS50Z19yZWxhdGlvbiA9IHJlbGluZm8tPnJpX1JlbGF0aW9uRGVzYzsKIAlMb2NU cmlnZ2VyRGF0YS50Z191cGRhdGVkY29scyA9IHVwZGF0ZWRDb2xzOworCUxvY1RyaWdnZXJE YXRhLnRnX3RlbXBvcmFsID0gcmVsaW5mby0+cmlfZm9yUG9ydGlvbk9mOwogCWZvciAoaSA9 IDA7IGkgPCB0cmlnZGVzYy0+bnVtdHJpZ2dlcnM7IGkrKykKIAl7CiAJCVRyaWdnZXIgICAg KnRyaWdnZXIgPSAmdHJpZ2Rlc2MtPnRyaWdnZXJzW2ldOwpAQCAtMzAwOSw2ICszMDE0LDcg QEAgRXhlY0JSVXBkYXRlVHJpZ2dlcnMoRVN0YXRlICplc3RhdGUsIEVQUVN0YXRlICplcHFz dGF0ZSwKIAkJVFJJR0dFUl9FVkVOVF9ST1cgfAogCQlUUklHR0VSX0VWRU5UX0JFRk9SRTsK IAlMb2NUcmlnZ2VyRGF0YS50Z19yZWxhdGlvbiA9IHJlbGluZm8tPnJpX1JlbGF0aW9uRGVz YzsKKwlMb2NUcmlnZ2VyRGF0YS50Z190ZW1wb3JhbCA9IHJlbGluZm8tPnJpX2ZvclBvcnRp b25PZjsKIAl1cGRhdGVkQ29scyA9IEV4ZWNHZXRBbGxVcGRhdGVkQ29scyhyZWxpbmZvLCBl c3RhdGUpOwogCUxvY1RyaWdnZXJEYXRhLnRnX3VwZGF0ZWRjb2xzID0gdXBkYXRlZENvbHM7 CiAJZm9yIChpID0gMDsgaSA8IHRyaWdkZXNjLT5udW10cmlnZ2VyczsgaSsrKQpAQCAtMzE1 OCw2ICszMTY0LDcgQEAgRXhlY0lSVXBkYXRlVHJpZ2dlcnMoRVN0YXRlICplc3RhdGUsIFJl c3VsdFJlbEluZm8gKnJlbGluZm8sCiAJCVRSSUdHRVJfRVZFTlRfUk9XIHwKIAkJVFJJR0dF Ul9FVkVOVF9JTlNURUFEOwogCUxvY1RyaWdnZXJEYXRhLnRnX3JlbGF0aW9uID0gcmVsaW5m by0+cmlfUmVsYXRpb25EZXNjOworCUxvY1RyaWdnZXJEYXRhLnRnX3RlbXBvcmFsID0gcmVs aW5mby0+cmlfZm9yUG9ydGlvbk9mOwogCiAJRXhlY0ZvcmNlU3RvcmVIZWFwVHVwbGUodHJp Z3R1cGxlLCBvbGRzbG90LCBmYWxzZSk7CiAKQEAgLTM2MjQsNiArMzYzMSw3IEBAIHR5cGVk ZWYgc3RydWN0IEFmdGVyVHJpZ2dlclNoYXJlZERhdGEKIAlPaWQJCQlhdHNfdGdvaWQ7CQkv KiB0aGUgdHJpZ2dlcidzIElEICovCiAJT2lkCQkJYXRzX3JlbGlkOwkJLyogdGhlIHJlbGF0 aW9uIGl0J3Mgb24gKi8KIAlDb21tYW5kSWQJYXRzX2ZpcmluZ19pZDsJLyogSUQgZm9yIGZp cmluZyBjeWNsZSAqLworCUZvclBvcnRpb25PZlN0YXRlICpmb3JfcG9ydGlvbl9vZjsJLyog dGhlIEZPUiBQT1JUSU9OIE9GIGNsYXVzZSAqLwogCXN0cnVjdCBBZnRlclRyaWdnZXJzVGFi bGVEYXRhICphdHNfdGFibGU7CS8qIHRyYW5zaXRpb24gdGFibGUgYWNjZXNzICovCiAJQml0 bWFwc2V0ICAqYXRzX21vZGlmaWVkY29sczsJLyogbW9kaWZpZWQgY29sdW1ucyAqLwogfSBB ZnRlclRyaWdnZXJTaGFyZWREYXRhOwpAQCAtMzg5Nyw2ICszOTA1LDcgQEAgc3RhdGljIFNl dENvbnN0cmFpbnRTdGF0ZSBTZXRDb25zdHJhaW50U3RhdGVDcmVhdGUoaW50IG51bWFsbG9j KTsKIHN0YXRpYyBTZXRDb25zdHJhaW50U3RhdGUgU2V0Q29uc3RyYWludFN0YXRlQ29weShT ZXRDb25zdHJhaW50U3RhdGUgb3JpZ3N0YXRlKTsKIHN0YXRpYyBTZXRDb25zdHJhaW50U3Rh dGUgU2V0Q29uc3RyYWludFN0YXRlQWRkSXRlbShTZXRDb25zdHJhaW50U3RhdGUgc3RhdGUs CiAJCQkJCQkJCQkJCQkJT2lkIHRnb2lkLCBib29sIHRnaXNkZWZlcnJlZCk7CitzdGF0aWMg Rm9yUG9ydGlvbk9mU3RhdGUgKkNvcHlGb3JQb3J0aW9uT2ZTdGF0ZShGb3JQb3J0aW9uT2ZT dGF0ZSAqc3JjKTsKIHN0YXRpYyB2b2lkIGNhbmNlbF9wcmlvcl9zdG10X3RyaWdnZXJzKE9p ZCByZWxpZCwgQ21kVHlwZSBjbWRUeXBlLCBpbnQgdGdldmVudCk7CiAKIApAQCAtNDQzOSw2 ICs0NDQ4LDcgQEAgQWZ0ZXJUcmlnZ2VyRXhlY3V0ZShFU3RhdGUgKmVzdGF0ZSwKIAlMb2NU cmlnZ2VyRGF0YS50Z19yZWxhdGlvbiA9IHJlbDsKIAlpZiAoVFJJR0dFUl9GT1JfVVBEQVRF KExvY1RyaWdnZXJEYXRhLnRnX3RyaWdnZXItPnRndHlwZSkpCiAJCUxvY1RyaWdnZXJEYXRh LnRnX3VwZGF0ZWRjb2xzID0gZXZ0c2hhcmVkLT5hdHNfbW9kaWZpZWRjb2xzOworCUxvY1Ry aWdnZXJEYXRhLnRnX3RlbXBvcmFsID0gZXZ0c2hhcmVkLT5mb3JfcG9ydGlvbl9vZjsKIAog CU1lbW9yeUNvbnRleHRSZXNldChwZXJfdHVwbGVfY29udGV4dCk7CiAKQEAgLTU5NzUsNiAr NTk4NSw0MyBAQCBBZnRlclRyaWdnZXJQZW5kaW5nT25SZWwoT2lkIHJlbGlkKQogCXJldHVy biBmYWxzZTsKIH0KIAorLyogLS0tLS0tLS0tLQorICogRm9yUG9ydGlvbk9mU3RhdGUoKQor ICoKKyAqIENvcGllcyBhIEZvclBvcnRpb25PZlN0YXRlIGludG8gdGhlIGN1cnJlbnQgbWVt b3J5IGNvbnRleHQuCisgKi8KK3N0YXRpYyBGb3JQb3J0aW9uT2ZTdGF0ZSAqCitDb3B5Rm9y UG9ydGlvbk9mU3RhdGUoRm9yUG9ydGlvbk9mU3RhdGUgKnNyYykKK3sKKwlGb3JQb3J0aW9u T2ZTdGF0ZSAqZHN0ID0gTlVMTDsKKwlpZiAoc3JjKSB7CisJCU1lbW9yeUNvbnRleHQgb2xk Y3R4OworCQlSYW5nZVR5cGUgKnI7CisJCVR5cGVDYWNoZUVudHJ5ICp0eXBjYWNoZTsKKwor CQkvKgorCQkgKiBOZWVkIHRvIGxpZnQgdGhlIEZPUiBQT1JUSU9OIE9GIGRldGFpbHMgaW50 byBhIGhpZ2hlciBtZW1vcnkgY29udGV4dAorCQkgKiBiZWNhdXNlIGNhc2NhZGluZyBmb3Jl aWduIGtleSB1cGRhdGUvZGVsZXRlcyBjYW4gY2F1c2UgdHJpZ2dlcnMgdG8gZmlyZQorCQkg KiB0cmlnZ2VycywgYW5kIHRoZSBBZnRlclRyaWdnZXJFdmVudHMgd2lsbCBvdXRsaXZlIHRo ZSBGUE8KKwkJICogZGV0YWlscyBvZiB0aGUgb3JpZ2luYWwgcXVlcnkuCisJCSAqLworCQlv bGRjdHggPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oVG9wVHJhbnNhY3Rpb25Db250ZXh0KTsK KwkJZHN0ID0gbWFrZU5vZGUoRm9yUG9ydGlvbk9mU3RhdGUpOworCQlkc3QtPmZwX3Jhbmdl TmFtZSA9IHBzdHJkdXAoc3JjLT5mcF9yYW5nZU5hbWUpOworCQlkc3QtPmZwX3JhbmdlVHlw ZSA9IHNyYy0+ZnBfcmFuZ2VUeXBlOworCQlkc3QtPmZwX2hhc1BlcmlvZCA9IHNyYy0+ZnBf aGFzUGVyaW9kOworCQlkc3QtPmZwX3JhbmdlQXR0bm8gPSBzcmMtPmZwX3JhbmdlQXR0bm87 CisJCWRzdC0+ZnBfcGVyaW9kU3RhcnRBdHRubyA9IHNyYy0+ZnBfcGVyaW9kU3RhcnRBdHRu bzsKKwkJZHN0LT5mcF9wZXJpb2RFbmRBdHRubyA9IHNyYy0+ZnBfcGVyaW9kRW5kQXR0bm87 CisKKwkJciA9IERhdHVtR2V0UmFuZ2VUeXBlUChzcmMtPmZwX3RhcmdldFJhbmdlKTsKKwkJ dHlwY2FjaGUgPSBsb29rdXBfdHlwZV9jYWNoZShSYW5nZVR5cGVHZXRPaWQociksIFRZUEVD QUNIRV9SQU5HRV9JTkZPKTsKKwkJZHN0LT5mcF90YXJnZXRSYW5nZSA9IGRhdHVtQ29weShz cmMtPmZwX3RhcmdldFJhbmdlLCB0eXBjYWNoZS0+dHlwYnl2YWwsIHR5cGNhY2hlLT50eXBs ZW4pOworCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3R4KTsKKwl9CisJcmV0dXJuIGRz dDsKK30KKwogLyogLS0tLS0tLS0tLQogICogQWZ0ZXJUcmlnZ2VyU2F2ZUV2ZW50KCkKICAq CkBAIC02MzkwLDYgKzY0MzcsNyBAQCBBZnRlclRyaWdnZXJTYXZlRXZlbnQoRVN0YXRlICpl c3RhdGUsIFJlc3VsdFJlbEluZm8gKnJlbGluZm8sCiAJCWVsc2UKIAkJCW5ld19zaGFyZWQu YXRzX3RhYmxlID0gTlVMTDsKIAkJbmV3X3NoYXJlZC5hdHNfbW9kaWZpZWRjb2xzID0gbW9k aWZpZWRDb2xzOworCQluZXdfc2hhcmVkLmZvcl9wb3J0aW9uX29mID0gQ29weUZvclBvcnRp b25PZlN0YXRlKHJlbGluZm8tPnJpX2ZvclBvcnRpb25PZik7CiAKIAkJYWZ0ZXJUcmlnZ2Vy QWRkRXZlbnQoJmFmdGVyVHJpZ2dlcnMucXVlcnlfc3RhY2tbYWZ0ZXJUcmlnZ2Vycy5xdWVy eV9kZXB0aF0uZXZlbnRzLAogCQkJCQkJCSAmbmV3X2V2ZW50LCAmbmV3X3NoYXJlZCk7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY01haW4uYwppbmRleCBlYWY2ZjMxYTE1Li43YjAzMzMzY2ZiIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCisrKyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKQEAgLTEyNDQsNiArMTI0NCw3IEBAIEluaXRS ZXN1bHRSZWxJbmZvKFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCiAJcmVzdWx0UmVs SW5mby0+cmlfcHJvamVjdFJldHVybmluZyA9IE5VTEw7CiAJcmVzdWx0UmVsSW5mby0+cmlf b25Db25mbGljdEFyYml0ZXJJbmRleGVzID0gTklMOwogCXJlc3VsdFJlbEluZm8tPnJpX29u Q29uZmxpY3QgPSBOVUxMOworCXJlc3VsdFJlbEluZm8tPnJpX2ZvclBvcnRpb25PZiA9IE5V TEw7CiAJcmVzdWx0UmVsSW5mby0+cmlfUmV0dXJuaW5nU2xvdCA9IE5VTEw7CiAJcmVzdWx0 UmVsSW5mby0+cmlfVHJpZ09sZFNsb3QgPSBOVUxMOwogCXJlc3VsdFJlbEluZm8tPnJpX1Ry aWdOZXdTbG90ID0gTlVMTDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVNb2RpZnlUYWJsZS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxl LmMKaW5kZXggZGMxYTJlYzU1MS4uYTMxNjBhMWY1ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZU1vZGlmeVRhYmxlLmMKQEAgLTYxLDYgKzYxLDkgQEAKICNpbmNsdWRlICJ1dGls cy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxzL2RhdHVtLmgiCiAjaW5jbHVkZSAidXRp bHMvbWVtdXRpbHMuaCIKKyNpbmNsdWRlICJ1dGlscy9wZXJpb2QuaCIKKyNpbmNsdWRlICJ1 dGlscy9yYW5nZXR5cGVzLmgiCisjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5j bHVkZSAidXRpbHMvcmVsLmgiCiAKIApAQCAtMTQxLDYgKzE0NCwxMCBAQCBzdGF0aWMgYm9v bCBFeGVjT25Db25mbGljdFVwZGF0ZShNb2RpZnlUYWJsZUNvbnRleHQgKmNvbnRleHQsCiAJ CQkJCQkJCSBUdXBsZVRhYmxlU2xvdCAqZXhjbHVkZWRTbG90LAogCQkJCQkJCQkgYm9vbCBj YW5TZXRUYWcsCiAJCQkJCQkJCSBUdXBsZVRhYmxlU2xvdCAqKnJldHVybmluZyk7CitzdGF0 aWMgdm9pZCBFeGVjRm9yUG9ydGlvbk9mTGVmdG92ZXJzKE1vZGlmeVRhYmxlQ29udGV4dCAq Y29udGV4dCwKKwkJCQkJCQkJCSAgRVN0YXRlICplc3RhdGUsCisJCQkJCQkJCQkgIFJlc3Vs dFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCisJCQkJCQkJCQkgIEl0ZW1Qb2ludGVyIHR1cGxl aWQpOwogc3RhdGljIFR1cGxlVGFibGVTbG90ICpFeGVjUHJlcGFyZVR1cGxlUm91dGluZyhN b2RpZnlUYWJsZVN0YXRlICptdHN0YXRlLAogCQkJCQkJCQkJCQkgICBFU3RhdGUgKmVzdGF0 ZSwKIAkJCQkJCQkJCQkJICAgUGFydGl0aW9uVHVwbGVSb3V0aW5nICpwcm91dGUsCkBAIC0x MjA1LDYgKzEyMTIsMTY0IEBAIEV4ZWNJbnNlcnQoTW9kaWZ5VGFibGVDb250ZXh0ICpjb250 ZXh0LAogCXJldHVybiByZXN1bHQ7CiB9CiAKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCQlzZXRfbGVm dG92ZXJfdHVwbGVfYm91bmRzCisgKgorICoJCVNhdmVzIHRoZSBuZXcgYm91bmRzIGludG8g ZWl0aGVyIHRoZSByYW5nZSBhdHRyaWJ1dGUgb3IgdGhlCisgKgkJUEVSSU9EIHN0YXJ0L2Vu ZCBhdHRyaWJ1dGVzLgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCitzdGF0aWMgdm9pZCBzZXRfbGVm dG92ZXJfdHVwbGVfYm91bmRzKFR1cGxlVGFibGVTbG90ICpsZWZ0b3ZlclR1cGxlLAorCQkJ CQkJCQkJICBGb3JQb3J0aW9uT2ZFeHByICpmb3JQb3J0aW9uT2YsCisJCQkJCQkJCQkgIFR5 cGVDYWNoZUVudHJ5ICp0eXBjYWNoZSwKKwkJCQkJCQkJCSAgUmFuZ2VUeXBlICpsZWZ0b3Zl clJhbmdlVHlwZSkKK3sKKwlpZiAoZm9yUG9ydGlvbk9mLT5yYW5nZVZhciA9PSBOVUxMKQor CXsKKwkJLyogU3RvcmUgdGhlIGxvd2VyL3VwcGVyIGJvdW5kcyB0byB0aGUgUEVSSU9EIHN0 YXJ0L2VuZCBjb2xzICovCisKKwkJUmFuZ2VCb3VuZAlsb3dlcjsKKwkJUmFuZ2VCb3VuZAl1 cHBlcjsKKwkJYm9vbAkJZW1wdHk7CisKKwkJcmFuZ2VfZGVzZXJpYWxpemUodHlwY2FjaGUs IGxlZnRvdmVyUmFuZ2VUeXBlLCAmbG93ZXIsICZ1cHBlciwgJmVtcHR5KTsKKworCQlpZiAo ZW1wdHkgfHwgbG93ZXIuaW5maW5pdGUpCisJCQlsZWZ0b3ZlclR1cGxlLT50dHNfaXNudWxs W2ZvclBvcnRpb25PZi0+c3RhcnRWYXItPnZhcmF0dG5vIC0gMV0gPSB0cnVlOworCQllbHNl CisJCXsKKwkJCWxlZnRvdmVyVHVwbGUtPnR0c192YWx1ZXNbZm9yUG9ydGlvbk9mLT5zdGFy dFZhci0+dmFyYXR0bm8gLSAxXSA9IGxvd2VyLnZhbDsKKwkJCWxlZnRvdmVyVHVwbGUtPnR0 c19pc251bGxbZm9yUG9ydGlvbk9mLT5zdGFydFZhci0+dmFyYXR0bm8gLSAxXSA9IGZhbHNl OworCQl9CisKKwkJaWYgKGVtcHR5IHx8IHVwcGVyLmluZmluaXRlKQorCQkJbGVmdG92ZXJU dXBsZS0+dHRzX2lzbnVsbFtmb3JQb3J0aW9uT2YtPmVuZFZhci0+dmFyYXR0bm8gLSAxXSA9 IHRydWU7CisJCWVsc2UKKwkJeworCQkJbGVmdG92ZXJUdXBsZS0+dHRzX3ZhbHVlc1tmb3JQ b3J0aW9uT2YtPmVuZFZhci0+dmFyYXR0bm8gLSAxXSA9IHVwcGVyLnZhbDsKKwkJCWxlZnRv dmVyVHVwbGUtPnR0c19pc251bGxbZm9yUG9ydGlvbk9mLT5lbmRWYXItPnZhcmF0dG5vIC0g MV0gPSBmYWxzZTsKKwkJfQorCX0KKwllbHNlCisJeworCQkvKiBTdG9yZSB0aGUgcmFuZ2Ug ZGlyZWN0bHkgKi8KKworCQlsZWZ0b3ZlclR1cGxlLT50dHNfdmFsdWVzW2ZvclBvcnRpb25P Zi0+cmFuZ2VWYXItPnZhcmF0dG5vIC0gMV0gPSBSYW5nZVR5cGVQR2V0RGF0dW0obGVmdG92 ZXJSYW5nZVR5cGUpOworCQlsZWZ0b3ZlclR1cGxlLT50dHNfaXNudWxsW2ZvclBvcnRpb25P Zi0+cmFuZ2VWYXItPnZhcmF0dG5vIC0gMV0gPSBmYWxzZTsKKwl9CisKK30KKworLyogLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorICoJCUV4ZWNGb3JQb3J0aW9uT2ZMZWZ0b3ZlcnMKKyAqCisgKgkJSW5zZXJ0 IHR1cGxlcyBmb3IgdGhlIHVudG91Y2hlZCB0aW1lc3RhbXAgb2YgYSByb3cgaW4gYSBGT1IK KyAqCQlQT1JUSU9OIE9GIFVQREFURS9ERUxFVEUKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworc3Rh dGljIHZvaWQKK0V4ZWNGb3JQb3J0aW9uT2ZMZWZ0b3ZlcnMoTW9kaWZ5VGFibGVDb250ZXh0 ICpjb250ZXh0LAorCQkJCQkJICBFU3RhdGUgKmVzdGF0ZSwKKwkJCQkJCSAgUmVzdWx0UmVs SW5mbyAqcmVzdWx0UmVsSW5mbywKKwkJCQkJCSAgSXRlbVBvaW50ZXIgdHVwbGVpZCkKK3sK KwkvLyBUT0RPOiBmaWd1cmUgb3V0IGlmIEkgbmVlZCB0byBtYWtlIGEgY295cCBvZiB0aGUg c2xvdCBzb21laG93IGluIG9yZGVyIHRvIGluc2VydCBpdC4uLgorCisJTW9kaWZ5VGFibGVT dGF0ZSAqbXRzdGF0ZSA9IGNvbnRleHQtPm10c3RhdGU7CisJTW9kaWZ5VGFibGUgKm5vZGUg PSAoTW9kaWZ5VGFibGUgKikgbXRzdGF0ZS0+cHMucGxhbjsKKwlGb3JQb3J0aW9uT2ZFeHBy ICpmb3JQb3J0aW9uT2YgPSAoRm9yUG9ydGlvbk9mRXhwciAqKSBub2RlLT5mb3JQb3J0aW9u T2Y7CisJRGF0dW0gb2xkUmFuZ2U7CisJUmFuZ2VUeXBlICpvbGRSYW5nZVR5cGU7CisJUmFu Z2VUeXBlICp0YXJnZXRSYW5nZVR5cGU7CisJUmFuZ2VUeXBlICpsZWZ0b3ZlclJhbmdlVHlw ZTE7CisJUmFuZ2VUeXBlICpsZWZ0b3ZlclJhbmdlVHlwZTI7CisJT2lkIHJhbmdlVHlwZU9p ZCA9IGZvclBvcnRpb25PZi0+cmFuZ2VUeXBlOworCWJvb2wgaXNOdWxsID0gZmFsc2U7CisJ VHlwZUNhY2hlRW50cnkgKnR5cGNhY2hlOworCVR1cGxlVGFibGVTbG90ICpvbGR0dXBsZVNs b3QgPSByZXN1bHRSZWxJbmZvLT5yaV9mb3JQb3J0aW9uT2YtPmZwX0V4aXN0aW5nOworCVR1 cGxlVGFibGVTbG90ICpsZWZ0b3ZlclR1cGxlMSA9IHJlc3VsdFJlbEluZm8tPnJpX2ZvclBv cnRpb25PZi0+ZnBfTGVmdG92ZXIxOworCVR1cGxlVGFibGVTbG90ICpsZWZ0b3ZlclR1cGxl MiA9IHJlc3VsdFJlbEluZm8tPnJpX2ZvclBvcnRpb25PZi0+ZnBfTGVmdG92ZXIyOworCisJ LyogR2V0IHRoZSByYW5nZSBvZiB0aGUgZXhpc3RpbmcgcHJlLVVQREFURS9ERUxFVEUgdHVw bGUgKi8KKworCS8vIFRPRE86IFNlZW1zIGxpa2Ugd2Ugc2hvdWxkbid0IGhhdmUgdG8gZG8g dGhpcywKKwkvLyBiZWNhdXNlIHRoZSBvbGQgdHVwbGUgc2hvdWxkIGFscmVhZHkgYmUgYXZh aWxhYmxlIHNvbWVob3c/CisJLy8gQnV0IHRoaXMgaXMgd2hhdCB0cmlnZ2VycyBkby4uLi4g KEFyZSB5b3Ugc3VyZSB0aGlzIGlzIGhvdyB0aGV5IGdldCB0aGUgT0xEIHR1cGxlPykKKwkv LyBBbmQgZXZlbiBpZiB3ZSBkbyBoYXZlIHRvIGRvIHRoaXMsIGlzIFNuYXBzaG90QW55IHJl YWxseSBjb3JyZWN0PworCS8vIFNob3VsZG4ndCBpdCBiZSB0aGUgc25hcHNob3Qgb2YgdGhl IFVQREFURT8KKwlpZiAoIXRhYmxlX3R1cGxlX2ZldGNoX3Jvd192ZXJzaW9uKHJlc3VsdFJl bEluZm8tPnJpX1JlbGF0aW9uRGVzYywgdHVwbGVpZCwgU25hcHNob3RBbnksIG9sZHR1cGxl U2xvdCkpCisJCWVsb2coRVJST1IsICJmYWlsZWQgdG8gZmV0Y2ggdHVwbGUgZm9yIEZPUiBQ T1JUSU9OIE9GIik7CisKKwlpZiAoZm9yUG9ydGlvbk9mLT5yYW5nZVZhciA9PSBOVUxMKQor CQlvbGRSYW5nZSA9IHBlcmlvZF90b19yYW5nZShvbGR0dXBsZVNsb3QsIGZvclBvcnRpb25P Zi0+c3RhcnRWYXItPnZhcmF0dG5vLCBmb3JQb3J0aW9uT2YtPmVuZFZhci0+dmFyYXR0bm8s IHJhbmdlVHlwZU9pZCk7CisJZWxzZQorCQlvbGRSYW5nZSA9IHNsb3RfZ2V0YXR0cihvbGR0 dXBsZVNsb3QsIGZvclBvcnRpb25PZi0+cmFuZ2VWYXItPnZhcmF0dG5vLCAmaXNOdWxsKTsK KworCisJaWYgKGlzTnVsbCkKKwkJZWxvZyhFUlJPUiwgImZvdW5kIGEgTlVMTCByYW5nZSBp biBhIHRlbXBvcmFsIHRhYmxlIik7CisJb2xkUmFuZ2VUeXBlID0gRGF0dW1HZXRSYW5nZVR5 cGVQKG9sZFJhbmdlKTsKKworCS8qIEV2YWx1YXRlIHRoZSB0YXJnZXQgcmFuZ2UgaWYgd2Ug aGF2ZW4ndCB5ZXQgKi8KKworCXRhcmdldFJhbmdlVHlwZSA9IERhdHVtR2V0UmFuZ2VUeXBl UChyZXN1bHRSZWxJbmZvLT5yaV9mb3JQb3J0aW9uT2YtPmZwX3RhcmdldFJhbmdlKTsKKwor CS8qCisJICogR2V0IHRoZSByYW5nZSdzIHR5cGUgY2FjaGUgZW50cnkuIFRoaXMgaXMgd29y dGggY2FjaGluZyBmb3IgdGhlIHdob2xlIFVQREFURQorCSAqIGxpa2UgcmFuZ2UgZnVuY3Rp b25zIGRvLgorCSAqLworCisJdHlwY2FjaGUgPSByZXN1bHRSZWxJbmZvLT5yaV9mb3JQb3J0 aW9uT2YtPmZwX3JhbmdldHlwY2FjaGU7CisJaWYgKHR5cGNhY2hlID09IE5VTEwpCisJewor CQl0eXBjYWNoZSA9IGxvb2t1cF90eXBlX2NhY2hlKHJhbmdlVHlwZU9pZCwgVFlQRUNBQ0hF X1JBTkdFX0lORk8pOworCQlpZiAodHlwY2FjaGUtPnJuZ2VsZW10eXBlID09IE5VTEwpCisJ CQllbG9nKEVSUk9SLCAidHlwZSAldSBpcyBub3QgYSByYW5nZSB0eXBlIiwgcmFuZ2VUeXBl T2lkKTsKKwkJcmVzdWx0UmVsSW5mby0+cmlfZm9yUG9ydGlvbk9mLT5mcF9yYW5nZXR5cGNh Y2hlID0gdHlwY2FjaGU7CisJfQorCisJLyogR2V0IHRoZSByYW5nZXMgdG8gdGhlIGxlZnQv cmlnaHQgb2YgdGhlIHRhcmdldGVkIHJhbmdlLiAqLworCisJcmFuZ2VfbGVmdG92ZXJfaW50 ZXJuYWwodHlwY2FjaGUsIG9sZFJhbmdlVHlwZSwgdGFyZ2V0UmFuZ2VUeXBlLCAmbGVmdG92 ZXJSYW5nZVR5cGUxLAorCQkJJmxlZnRvdmVyUmFuZ2VUeXBlMik7CisKKwkvKgorCSAqIElu c2VydCBhIGNvcHkgb2YgdGhlIHR1cGxlIHdpdGggdGhlIGxvd2VyIGxlZnRvdmVyIHJhbmdl LgorCSAqIEV2ZW4gaWYgdGhlIHRhYmxlIGlzIHBhcnRpdGlvbmVkLAorCSAqIG91ciBpbnNl cnQgd29uJ3QgZXh0ZW5kIHBhc3QgdGhlIGN1cnJlbnQgcm93LCBzbyB3ZSBkb24ndCBuZWVk IHRvIHJlLXJvdXRlLgorCSAqLworCisJaWYgKCFSYW5nZUlzRW1wdHkobGVmdG92ZXJSYW5n ZVR5cGUxKSkKKwl7CisJCU1pbmltYWxUdXBsZSBvbGR0dXBsZSA9IEV4ZWNGZXRjaFNsb3RN aW5pbWFsVHVwbGUob2xkdHVwbGVTbG90LCBOVUxMKTsKKwkJRXhlY0ZvcmNlU3RvcmVNaW5p bWFsVHVwbGUob2xkdHVwbGUsIGxlZnRvdmVyVHVwbGUxLCBmYWxzZSk7CisKKwkJc2V0X2xl ZnRvdmVyX3R1cGxlX2JvdW5kcyhsZWZ0b3ZlclR1cGxlMSwgZm9yUG9ydGlvbk9mLCB0eXBj YWNoZSwgbGVmdG92ZXJSYW5nZVR5cGUxKTsKKwkJRXhlY01hdGVyaWFsaXplU2xvdChsZWZ0 b3ZlclR1cGxlMSk7CisKKwkJLy8gVE9ETzogTmVlZCB0byBzYXZlIGNvbnRleHQtPm10c3Rh dGUtPm10X3RyYW5zaXRpb25fY2FwdHVyZT8gKFNlZSBjb21tZW50IG9uIEV4ZWNJbnNlcnQp CisJCUV4ZWNJbnNlcnQoY29udGV4dCwgcmVzdWx0UmVsSW5mbywgbGVmdG92ZXJUdXBsZTEs IG5vZGUtPmNhblNldFRhZywgTlVMTCwgTlVMTCk7CisJfQorCisJLyoKKwkgKiBJbnNlcnQg YSBjb3B5IG9mIHRoZSB0dXBsZSB3aXRoIHRoZSB1cHBlciBsZWZ0b3ZlciByYW5nZQorCSAq IEV2ZW4gaWYgdGhlIHRhYmxlIGlzIHBhcnRpdGlvbmVkLAorCSAqIG91ciBpbnNlcnQgd29u J3QgZXh0ZW5kIHBhc3QgdGhlIGN1cnJlbnQgcm93LCBzbyB3ZSBkb24ndCBuZWVkIHRvIHJl LXJvdXRlLgorCSAqLworCisJaWYgKCFSYW5nZUlzRW1wdHkobGVmdG92ZXJSYW5nZVR5cGUy KSkKKwl7CisJCU1pbmltYWxUdXBsZSBvbGR0dXBsZSA9IEV4ZWNGZXRjaFNsb3RNaW5pbWFs VHVwbGUob2xkdHVwbGVTbG90LCBOVUxMKTsKKwkJRXhlY0ZvcmNlU3RvcmVNaW5pbWFsVHVw bGUob2xkdHVwbGUsIGxlZnRvdmVyVHVwbGUyLCBmYWxzZSk7CisKKwkJc2V0X2xlZnRvdmVy X3R1cGxlX2JvdW5kcyhsZWZ0b3ZlclR1cGxlMiwgZm9yUG9ydGlvbk9mLCB0eXBjYWNoZSwg bGVmdG92ZXJSYW5nZVR5cGUyKTsKKwkJRXhlY01hdGVyaWFsaXplU2xvdChsZWZ0b3ZlclR1 cGxlMik7CisKKwkJLy8gVE9ETzogTmVlZCB0byBzYXZlIGNvbnRleHQtPm10c3RhdGUtPm10 X3RyYW5zaXRpb25fY2FwdHVyZT8gKFNlZSBjb21tZW50IG9uIEV4ZWNJbnNlcnQpCisJCUV4 ZWNJbnNlcnQoY29udGV4dCwgcmVzdWx0UmVsSW5mbywgbGVmdG92ZXJUdXBsZTIsIG5vZGUt PmNhblNldFRhZywgTlVMTCwgTlVMTCk7CisJfQorfQorCiAvKiAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgkJ RXhlY0JhdGNoSW5zZXJ0CiAgKgpAQCAtMTM1NywxMSArMTUyMiwxMyBAQCBFeGVjRGVsZXRl QWN0KE1vZGlmeVRhYmxlQ29udGV4dCAqY29udGV4dCwgUmVzdWx0UmVsSW5mbyAqcmVzdWx0 UmVsSW5mbywKICAqCiAgKiBDbG9zaW5nIHN0ZXBzIG9mIHR1cGxlIGRlbGV0aW9uOyB0aGlz IGludm9rZXMgQUZURVIgRk9SIEVBQ0ggUk9XIHRyaWdnZXJzLAogICogaW5jbHVkaW5nIHRo ZSBVUERBVEUgdHJpZ2dlcnMgaWYgdGhlIGRlbGV0aW9uIGlzIGJlaW5nIGRvbmUgYXMgcGFy dCBvZiBhCi0gKiBjcm9zcy1wYXJ0aXRpb24gdHVwbGUgbW92ZS4KKyAqIGNyb3NzLXBhcnRp dGlvbiB0dXBsZSBtb3ZlLiBJdCBhbHNvIGluc2VydHMgbGVmdG92ZXJzIGZyb20gYSBGT1Ig UE9SVElPTiBPRgorICogZGVsZXRlLgogICovCiBzdGF0aWMgdm9pZAogRXhlY0RlbGV0ZUVw aWxvZ3VlKE1vZGlmeVRhYmxlQ29udGV4dCAqY29udGV4dCwgUmVzdWx0UmVsSW5mbyAqcmVz dWx0UmVsSW5mbywKLQkJCQkgICBJdGVtUG9pbnRlciB0dXBsZWlkLCBIZWFwVHVwbGUgb2xk dHVwbGUsIGJvb2wgY2hhbmdpbmdQYXJ0KQorCQkJCSAgIEl0ZW1Qb2ludGVyIHR1cGxlaWQs IEhlYXBUdXBsZSBvbGR0dXBsZSwgYm9vbCBjaGFuZ2luZ1BhcnQsCisJCQkJICAgRm9yUG9y dGlvbk9mRXhwciAqZm9yUG9ydGlvbk9mKQogewogCU1vZGlmeVRhYmxlU3RhdGUgKm10c3Rh dGUgPSBjb250ZXh0LT5tdHN0YXRlOwogCUVTdGF0ZQkgICAqZXN0YXRlID0gY29udGV4dC0+ ZXN0YXRlOwpAQCAtMTM5MCw2ICsxNTU3LDExIEBAIEV4ZWNEZWxldGVFcGlsb2d1ZShNb2Rp ZnlUYWJsZUNvbnRleHQgKmNvbnRleHQsIFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8s CiAJCWFyX2RlbGV0ZV90cmlnX3RjcyA9IE5VTEw7CiAJfQogCisJLyogQ29tcHV0ZSBsZWZ0 b3ZlcnMgaW4gRk9SIFBPUlRJT04gT0YgKi8KKwkvLyBUT0RPOiBTa2lwIHRoaXMgZm9yIEZE VyBkZWxldGVzPworCWlmIChmb3JQb3J0aW9uT2YpCisJCUV4ZWNGb3JQb3J0aW9uT2ZMZWZ0 b3ZlcnMoY29udGV4dCwgZXN0YXRlLCByZXN1bHRSZWxJbmZvLCB0dXBsZWlkKTsKKwogCS8q IEFGVEVSIFJPVyBERUxFVEUgVHJpZ2dlcnMgKi8KIAlFeGVjQVJEZWxldGVUcmlnZ2Vycyhl c3RhdGUsIHJlc3VsdFJlbEluZm8sIHR1cGxlaWQsIG9sZHR1cGxlLAogCQkJCQkJIGFyX2Rl bGV0ZV90cmlnX3RjcywgY2hhbmdpbmdQYXJ0KTsKQEAgLTE2NjEsNyArMTgzMyw4IEBAIGxk ZWxldGU6CiAJaWYgKHR1cGxlRGVsZXRlZCkKIAkJKnR1cGxlRGVsZXRlZCA9IHRydWU7CiAK LQlFeGVjRGVsZXRlRXBpbG9ndWUoY29udGV4dCwgcmVzdWx0UmVsSW5mbywgdHVwbGVpZCwg b2xkdHVwbGUsIGNoYW5naW5nUGFydCk7CisJRXhlY0RlbGV0ZUVwaWxvZ3VlKGNvbnRleHQs IHJlc3VsdFJlbEluZm8sIHR1cGxlaWQsIG9sZHR1cGxlLCBjaGFuZ2luZ1BhcnQsCisJCQko Rm9yUG9ydGlvbk9mRXhwciAqKSgoTW9kaWZ5VGFibGUgKikgY29udGV4dC0+bXRzdGF0ZS0+ cHMucGxhbiktPmZvclBvcnRpb25PZik7CiAKIAkvKiBQcm9jZXNzIFJFVFVSTklORyBpZiBw cmVzZW50IGFuZCBpZiByZXF1ZXN0ZWQgKi8KIAlpZiAocHJvY2Vzc1JldHVybmluZyAmJiBy ZXN1bHRSZWxJbmZvLT5yaV9wcm9qZWN0UmV0dXJuaW5nKQpAQCAtMjEyMCw3ICsyMjkzLDgg QEAgbHJlcGxhY2U6CiBzdGF0aWMgdm9pZAogRXhlY1VwZGF0ZUVwaWxvZ3VlKE1vZGlmeVRh YmxlQ29udGV4dCAqY29udGV4dCwgVXBkYXRlQ29udGV4dCAqdXBkYXRlQ3h0LAogCQkJCSAg IFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sIEl0ZW1Qb2ludGVyIHR1cGxlaWQsCi0J CQkJICAgSGVhcFR1cGxlIG9sZHR1cGxlLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCkKKwkJCQkg ICBIZWFwVHVwbGUgb2xkdHVwbGUsIFR1cGxlVGFibGVTbG90ICpzbG90LAorCQkJCSAgIEZv clBvcnRpb25PZkV4cHIgKmZvclBvcnRpb25PZikKIHsKIAlNb2RpZnlUYWJsZVN0YXRlICpt dHN0YXRlID0gY29udGV4dC0+bXRzdGF0ZTsKIAlMaXN0CSAgICpyZWNoZWNrSW5kZXhlcyA9 IE5JTDsKQEAgLTIxMzMsNiArMjMwNywxMSBAQCBFeGVjVXBkYXRlRXBpbG9ndWUoTW9kaWZ5 VGFibGVDb250ZXh0ICpjb250ZXh0LCBVcGRhdGVDb250ZXh0ICp1cGRhdGVDeHQsCiAJCQkJ CQkJCQkJCSAgIE5VTEwsIE5JTCwKIAkJCQkJCQkJCQkJICAgKHVwZGF0ZUN4dC0+dXBkYXRl SW5kZXhlcyA9PSBUVV9TdW1tYXJpemluZykpOwogCisJLyogQ29tcHV0ZSBsZWZ0b3ZlcnMg aW4gRk9SIFBPUlRJT04gT0YgKi8KKwkvLyBUT0RPOiBTa2lwIHRoaXMgZm9yIEZEVyB1cGRh dGVzPworCWlmIChmb3JQb3J0aW9uT2YpCisJCUV4ZWNGb3JQb3J0aW9uT2ZMZWZ0b3ZlcnMo Y29udGV4dCwgY29udGV4dC0+ZXN0YXRlLCByZXN1bHRSZWxJbmZvLCB0dXBsZWlkKTsKKwog CS8qIEFGVEVSIFJPVyBVUERBVEUgVHJpZ2dlcnMgKi8KIAlFeGVjQVJVcGRhdGVUcmlnZ2Vy cyhjb250ZXh0LT5lc3RhdGUsIHJlc3VsdFJlbEluZm8sCiAJCQkJCQkgTlVMTCwgTlVMTCwK QEAgLTI0NzYsNyArMjY1NSw4IEBAIHJlZG9fYWN0OgogCQkoZXN0YXRlLT5lc19wcm9jZXNz ZWQpKys7CiAKIAlFeGVjVXBkYXRlRXBpbG9ndWUoY29udGV4dCwgJnVwZGF0ZUN4dCwgcmVz dWx0UmVsSW5mbywgdHVwbGVpZCwgb2xkdHVwbGUsCi0JCQkJCSAgIHNsb3QpOworCQkJCQkg ICBzbG90LAorCQkJCQkgICAoRm9yUG9ydGlvbk9mRXhwciAqKSAoKE1vZGlmeVRhYmxlICop IGNvbnRleHQtPm10c3RhdGUtPnBzLnBsYW4pLT5mb3JQb3J0aW9uT2YpOwogCiAJLyogUHJv Y2VzcyBSRVRVUk5JTkcgaWYgcHJlc2VudCAqLwogCWlmIChyZXN1bHRSZWxJbmZvLT5yaV9w cm9qZWN0UmV0dXJuaW5nKQpAQCAtMjkwMSw3ICszMDgxLDcgQEAgbG1lcmdlX21hdGNoZWQ6 CiAJCQkJaWYgKHJlc3VsdCA9PSBUTV9PayAmJiB1cGRhdGVDeHQudXBkYXRlZCkKIAkJCQl7 CiAJCQkJCUV4ZWNVcGRhdGVFcGlsb2d1ZShjb250ZXh0LCAmdXBkYXRlQ3h0LCByZXN1bHRS ZWxJbmZvLAotCQkJCQkJCQkJICAgdHVwbGVpZCwgTlVMTCwgbmV3c2xvdCk7CisJCQkJCQkJ CQkgICB0dXBsZWlkLCBOVUxMLCBuZXdzbG90LCBOVUxMKTsKIAkJCQkJbXRzdGF0ZS0+bXRf bWVyZ2VfdXBkYXRlZCArPSAxOwogCQkJCX0KIAkJCQlicmVhazsKQEAgLTI5MTksNyArMzA5 OSw3IEBAIGxtZXJnZV9tYXRjaGVkOgogCQkJCWlmIChyZXN1bHQgPT0gVE1fT2spCiAJCQkJ ewogCQkJCQlFeGVjRGVsZXRlRXBpbG9ndWUoY29udGV4dCwgcmVzdWx0UmVsSW5mbywgdHVw bGVpZCwgTlVMTCwKLQkJCQkJCQkJCSAgIGZhbHNlKTsKKwkJCQkJCQkJCSAgIGZhbHNlLCBO VUxMKTsKIAkJCQkJbXRzdGF0ZS0+bXRfbWVyZ2VfZGVsZXRlZCArPSAxOwogCQkJCX0KIAkJ CQlicmVhazsKQEAgLTQyODAsNiArNDQ2MCw2MyBAQCBFeGVjSW5pdE1vZGlmeVRhYmxlKE1v ZGlmeVRhYmxlICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJfQogCX0K IAorCS8qCisJICogSWYgbmVlZGVkLCBpbml0aWFsaXplIHRoZSB0YXJnZXQgcmFuZ2UgZm9y IEZPUiBQT1JUSU9OIE9GLgorCSAqLworCWlmIChub2RlLT5mb3JQb3J0aW9uT2YpCisJewor CQlUdXBsZURlc2MgdHVwRGVzYyA9IHJlc3VsdFJlbEluZm8tPnJpX1JlbGF0aW9uRGVzYy0+ cmRfYXR0OworCQlGb3JQb3J0aW9uT2ZFeHByICpmb3JQb3J0aW9uT2YgPSAoRm9yUG9ydGlv bk9mRXhwciAqKSBub2RlLT5mb3JQb3J0aW9uT2Y7CisJCURhdHVtCXRhcmdldFJhbmdlOwor CQlib29sCWlzTnVsbDsKKwkJRXhwckNvbnRleHQgKmVjb250ZXh0OworCQlFeHByU3RhdGUg KmV4cHJTdGF0ZTsKKworCQkvKiBFdmFsIHRoZSBGT1IgUE9SVElPTiBPRiB0YXJnZXQgKi8K KwkJaWYgKG10c3RhdGUtPnBzLnBzX0V4cHJDb250ZXh0ID09IE5VTEwpCisJCQlFeGVjQXNz aWduRXhwckNvbnRleHQoZXN0YXRlLCAmbXRzdGF0ZS0+cHMpOworCQllY29udGV4dCA9IG10 c3RhdGUtPnBzLnBzX0V4cHJDb250ZXh0OworCisJCWV4cHJTdGF0ZSA9IEV4ZWNQcmVwYXJl RXhwcigoRXhwciAqKSBmb3JQb3J0aW9uT2YtPnRhcmdldFJhbmdlLCBlc3RhdGUpOworCQl0 YXJnZXRSYW5nZSA9IEV4ZWNFdmFsRXhwcihleHByU3RhdGUsIGVjb250ZXh0LCAmaXNOdWxs KTsKKwkJaWYgKGlzTnVsbCkKKwkJCWVsb2coRVJST1IsICJHb3QgYSBOVUxMIEZPUiBQT1JU SU9OIE9GIHRhcmdldCByYW5nZSIpOworCisJCS8qIENyZWF0ZSBzdGF0ZSBmb3IgRk9SIFBP UlRJT04gT0Ygb3BlcmF0aW9uICovCisKKwkJcmVzdWx0UmVsSW5mby0+cmlfZm9yUG9ydGlv bk9mID0gbWFrZU5vZGUoRm9yUG9ydGlvbk9mU3RhdGUpOworCQlyZXN1bHRSZWxJbmZvLT5y aV9mb3JQb3J0aW9uT2YtPmZwX3JhbmdlTmFtZSA9IGZvclBvcnRpb25PZi0+cmFuZ2VfbmFt ZTsKKwkJcmVzdWx0UmVsSW5mby0+cmlfZm9yUG9ydGlvbk9mLT5mcF9yYW5nZVR5cGUgPSBm b3JQb3J0aW9uT2YtPnJhbmdlVHlwZTsKKwkJaWYgKGZvclBvcnRpb25PZi0+cmFuZ2VWYXIg PT0gTlVMTCkKKwkJeworCQkJcmVzdWx0UmVsSW5mby0+cmlfZm9yUG9ydGlvbk9mLT5mcF9o YXNQZXJpb2QgPSB0cnVlOworCQkJcmVzdWx0UmVsSW5mby0+cmlfZm9yUG9ydGlvbk9mLT5m cF9yYW5nZUF0dG5vID0gSW52YWxpZEF0dHJOdW1iZXI7CisJCQlyZXN1bHRSZWxJbmZvLT5y aV9mb3JQb3J0aW9uT2YtPmZwX3BlcmlvZFN0YXJ0QXR0bm8gPSBmb3JQb3J0aW9uT2YtPnN0 YXJ0VmFyLT52YXJhdHRubzsKKwkJCXJlc3VsdFJlbEluZm8tPnJpX2ZvclBvcnRpb25PZi0+ ZnBfcGVyaW9kRW5kQXR0bm8gPSBmb3JQb3J0aW9uT2YtPmVuZFZhci0+dmFyYXR0bm87CisJ CX0gZWxzZSB7CisJCQlyZXN1bHRSZWxJbmZvLT5yaV9mb3JQb3J0aW9uT2YtPmZwX2hhc1Bl cmlvZCA9IGZhbHNlOworCQkJcmVzdWx0UmVsSW5mby0+cmlfZm9yUG9ydGlvbk9mLT5mcF9y YW5nZUF0dG5vID0gZm9yUG9ydGlvbk9mLT5yYW5nZVZhci0+dmFyYXR0bm87CisJCQlyZXN1 bHRSZWxJbmZvLT5yaV9mb3JQb3J0aW9uT2YtPmZwX3BlcmlvZFN0YXJ0QXR0bm8gPSBJbnZh bGlkQXR0ck51bWJlcjsKKwkJCXJlc3VsdFJlbEluZm8tPnJpX2ZvclBvcnRpb25PZi0+ZnBf cGVyaW9kRW5kQXR0bm8gPSBJbnZhbGlkQXR0ck51bWJlcjsKKwkJfQorCQlyZXN1bHRSZWxJ bmZvLT5yaV9mb3JQb3J0aW9uT2YtPmZwX3RhcmdldFJhbmdlID0gdGFyZ2V0UmFuZ2U7CisK KwkJLyogSW5pdGlhbGl6ZSBzbG90IGZvciB0aGUgZXhpc3RpbmcgdHVwbGUgKi8KKworCQly ZXN1bHRSZWxJbmZvLT5yaV9mb3JQb3J0aW9uT2YtPmZwX0V4aXN0aW5nID0KKwkJCXRhYmxl X3Nsb3RfY3JlYXRlKHJlc3VsdFJlbEluZm8tPnJpX1JlbGF0aW9uRGVzYywKKwkJCQkJCQkg ICZtdHN0YXRlLT5wcy5zdGF0ZS0+ZXNfdHVwbGVUYWJsZSk7CisKKwkJLyogQ3JlYXRlIHRo ZSB0dXBsZSBzbG90cyBmb3IgSU5TRVJUaW5nIHRoZSBsZWZ0b3ZlcnMgKi8KKworCQlyZXN1 bHRSZWxJbmZvLT5yaV9mb3JQb3J0aW9uT2YtPmZwX0xlZnRvdmVyMSA9CisJCQlFeGVjSW5p dEV4dHJhVHVwbGVTbG90KG10c3RhdGUtPnBzLnN0YXRlLCB0dXBEZXNjLCAmVFRTT3BzVmly dHVhbCk7CisJCXJlc3VsdFJlbEluZm8tPnJpX2ZvclBvcnRpb25PZi0+ZnBfTGVmdG92ZXIy ID0KKwkJCUV4ZWNJbml0RXh0cmFUdXBsZVNsb3QobXRzdGF0ZS0+cHMuc3RhdGUsIHR1cERl c2MsICZUVFNPcHNWaXJ0dWFsKTsKKworCQkvKiBEb24ndCBmcmVlIHRoZSBFeHByQ29udGV4 dCBoZXJlIGJlY2F1c2UgdGhlIHJlc3VsdCBtdXN0IGxhc3QgZm9yIHRoZSB3aG9sZSBxdWVy eSAqLworCX0KKwogCS8qCiAJICogSWYgd2UgaGF2ZSBhbnkgc2Vjb25kYXJ5IHJlbGF0aW9u cyBpbiBhbiBVUERBVEUgb3IgREVMRVRFLCB0aGV5IG5lZWQgdG8KIAkgKiBiZSB0cmVhdGVk IGxpa2Ugbm9uLWxvY2tlZCByZWxhdGlvbnMgaW4gU0VMRUNUIEZPUiBVUERBVEUsIGllLCB0 aGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jIGIvc3JjL2Jh Y2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMKaW5kZXggYTExNjliNzdjZC4uOWU3ZjFlNGM5MyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMKKysrIGIvc3JjL2Jh Y2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMKQEAgLTI0MjUsNiArMjQyNSwxNCBAQCBleHByZXNz aW9uX3RyZWVfd2Fsa2VyX2ltcGwoTm9kZSAqbm9kZSwKIAkJCQkJcmV0dXJuIHRydWU7CiAJ CQl9CiAJCQlicmVhazsKKwkJY2FzZSBUX0ZvclBvcnRpb25PZkV4cHI6CisJCQl7CisJCQkJ Rm9yUG9ydGlvbk9mRXhwciAqZm9yUG9ydGlvbk9mID0gKEZvclBvcnRpb25PZkV4cHIgKikg bm9kZTsKKworCQkJCWlmIChXQUxLKGZvclBvcnRpb25PZi0+dGFyZ2V0UmFuZ2UpKQorCQkJ CQlyZXR1cm4gdHJ1ZTsKKwkJCX0KKwkJCWJyZWFrOwogCQljYXNlIFRfUGFydGl0aW9uUHJ1 bmVTdGVwT3A6CiAJCQl7CiAJCQkJUGFydGl0aW9uUHJ1bmVTdGVwT3AgKm9wc3RlcCA9IChQ YXJ0aXRpb25QcnVuZVN0ZXBPcCAqKSBub2RlOwpAQCAtMjU2NSw2ICsyNTczLDggQEAgcXVl cnlfdHJlZV93YWxrZXJfaW1wbChRdWVyeSAqcXVlcnksCiAJCXJldHVybiB0cnVlOwogCWlm IChXQUxLKHF1ZXJ5LT5tZXJnZUFjdGlvbkxpc3QpKQogCQlyZXR1cm4gdHJ1ZTsKKwlpZiAo V0FMSyhxdWVyeS0+Zm9yUG9ydGlvbk9mKSkKKwkJcmV0dXJuIHRydWU7CiAJaWYgKFdBTEso cXVlcnktPnJldHVybmluZ0xpc3QpKQogCQlyZXR1cm4gdHJ1ZTsKIAlpZiAoV0FMSyhxdWVy eS0+am9pbnRyZWUpKQpAQCAtMzQwNyw2ICszNDE3LDIxIEBAIGV4cHJlc3Npb25fdHJlZV9t dXRhdG9yX2ltcGwoTm9kZSAqbm9kZSwKIAkJCQlyZXR1cm4gKE5vZGUgKikgbmV3bm9kZTsK IAkJCX0KIAkJCWJyZWFrOworCQljYXNlIFRfRm9yUG9ydGlvbk9mRXhwcjoKKwkJCXsKKwkJ CQlGb3JQb3J0aW9uT2ZFeHByICpmcG8gPSAoRm9yUG9ydGlvbk9mRXhwciAqKSBub2RlOwor CQkJCUZvclBvcnRpb25PZkV4cHIgKm5ld25vZGU7CisKKwkJCQlGTEFUQ09QWShuZXdub2Rl LCBmcG8sIEZvclBvcnRpb25PZkV4cHIpOworCQkJCU1VVEFURShuZXdub2RlLT5yYW5nZVZh ciwgZnBvLT5yYW5nZVZhciwgVmFyICopOworCQkJCU1VVEFURShuZXdub2RlLT5zdGFydFZh ciwgZnBvLT5zdGFydFZhciwgVmFyICopOworCQkJCU1VVEFURShuZXdub2RlLT5lbmRWYXIs IGZwby0+ZW5kVmFyLCBWYXIgKik7CisJCQkJTVVUQVRFKG5ld25vZGUtPnRhcmdldFJhbmdl LCBmcG8tPnRhcmdldFJhbmdlLCBOb2RlICopOworCQkJCU1VVEFURShuZXdub2RlLT5yYW5n ZVNldCwgZnBvLT5yYW5nZVNldCwgTGlzdCAqKTsKKworCQkJCXJldHVybiAoTm9kZSAqKSBu ZXdub2RlOworCQkJfQorCQkJYnJlYWs7CiAJCWNhc2UgVF9QYXJ0aXRpb25QcnVuZVN0ZXBP cDoKIAkJCXsKIAkJCQlQYXJ0aXRpb25QcnVuZVN0ZXBPcCAqb3BzdGVwID0gKFBhcnRpdGlv blBydW5lU3RlcE9wICopIG5vZGU7CkBAIC0zNTg1LDYgKzM2MTAsNyBAQCBxdWVyeV90cmVl X211dGF0b3JfaW1wbChRdWVyeSAqcXVlcnksCiAJTVVUQVRFKHF1ZXJ5LT53aXRoQ2hlY2tP cHRpb25zLCBxdWVyeS0+d2l0aENoZWNrT3B0aW9ucywgTGlzdCAqKTsKIAlNVVRBVEUocXVl cnktPm9uQ29uZmxpY3QsIHF1ZXJ5LT5vbkNvbmZsaWN0LCBPbkNvbmZsaWN0RXhwciAqKTsK IAlNVVRBVEUocXVlcnktPm1lcmdlQWN0aW9uTGlzdCwgcXVlcnktPm1lcmdlQWN0aW9uTGlz dCwgTGlzdCAqKTsKKwlNVVRBVEUocXVlcnktPmZvclBvcnRpb25PZiwgcXVlcnktPmZvclBv cnRpb25PZiwgRm9yUG9ydGlvbk9mRXhwciAqKTsKIAlNVVRBVEUocXVlcnktPnJldHVybmlu Z0xpc3QsIHF1ZXJ5LT5yZXR1cm5pbmdMaXN0LCBMaXN0ICopOwogCU1VVEFURShxdWVyeS0+ am9pbnRyZWUsIHF1ZXJ5LT5qb2ludHJlZSwgRnJvbUV4cHIgKik7CiAJTVVUQVRFKHF1ZXJ5 LT5zZXRPcGVyYXRpb25zLCBxdWVyeS0+c2V0T3BlcmF0aW9ucywgTm9kZSAqKTsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYyBiL3NyYy9i YWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYwppbmRleCA5MTBmZmJmMWUxLi5l Y2NlZjNlMzQwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVh dGVwbGFuLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5j CkBAIC0zMTEsNyArMzExLDggQEAgc3RhdGljIE1vZGlmeVRhYmxlICptYWtlX21vZGlmeXRh YmxlKFBsYW5uZXJJbmZvICpyb290LCBQbGFuICpzdWJwbGFuLAogCQkJCQkJCQkJIExpc3Qg KnVwZGF0ZUNvbG5vc0xpc3RzLAogCQkJCQkJCQkJIExpc3QgKndpdGhDaGVja09wdGlvbkxp c3RzLCBMaXN0ICpyZXR1cm5pbmdMaXN0cywKIAkJCQkJCQkJCSBMaXN0ICpyb3dNYXJrcywg T25Db25mbGljdEV4cHIgKm9uY29uZmxpY3QsCi0JCQkJCQkJCQkgTGlzdCAqbWVyZ2VBY3Rp b25MaXN0cywgaW50IGVwcVBhcmFtKTsKKwkJCQkJCQkJCSBMaXN0ICptZXJnZUFjdGlvbkxp c3RzLCBGb3JQb3J0aW9uT2ZFeHByICpmb3JQb3J0aW9uT2YsCisJCQkJCQkJCQkgaW50IGVw cVBhcmFtKTsKIHN0YXRpYyBHYXRoZXJNZXJnZSAqY3JlYXRlX2dhdGhlcl9tZXJnZV9wbGFu KFBsYW5uZXJJbmZvICpyb290LAogCQkJCQkJCQkJCQkgR2F0aGVyTWVyZ2VQYXRoICpiZXN0 X3BhdGgpOwogCkBAIC0yODIzLDYgKzI4MjQsNyBAQCBjcmVhdGVfbW9kaWZ5dGFibGVfcGxh bihQbGFubmVySW5mbyAqcm9vdCwgTW9kaWZ5VGFibGVQYXRoICpiZXN0X3BhdGgpCiAJCQkJ CQkJYmVzdF9wYXRoLT5yb3dNYXJrcywKIAkJCQkJCQliZXN0X3BhdGgtPm9uY29uZmxpY3Qs CiAJCQkJCQkJYmVzdF9wYXRoLT5tZXJnZUFjdGlvbkxpc3RzLAorCQkJCQkJCWJlc3RfcGF0 aC0+Zm9yUG9ydGlvbk9mLAogCQkJCQkJCWJlc3RfcGF0aC0+ZXBxUGFyYW0pOwogCiAJY29w eV9nZW5lcmljX3BhdGhfaW5mbygmcGxhbi0+cGxhbiwgJmJlc3RfcGF0aC0+cGF0aCk7CkBA IC02OTg2LDcgKzY5ODgsOCBAQCBtYWtlX21vZGlmeXRhYmxlKFBsYW5uZXJJbmZvICpyb290 LCBQbGFuICpzdWJwbGFuLAogCQkJCSBMaXN0ICp1cGRhdGVDb2xub3NMaXN0cywKIAkJCQkg TGlzdCAqd2l0aENoZWNrT3B0aW9uTGlzdHMsIExpc3QgKnJldHVybmluZ0xpc3RzLAogCQkJ CSBMaXN0ICpyb3dNYXJrcywgT25Db25mbGljdEV4cHIgKm9uY29uZmxpY3QsCi0JCQkJIExp c3QgKm1lcmdlQWN0aW9uTGlzdHMsIGludCBlcHFQYXJhbSkKKwkJCQkgTGlzdCAqbWVyZ2VB Y3Rpb25MaXN0cywgRm9yUG9ydGlvbk9mRXhwciAqZm9yUG9ydGlvbk9mLAorCQkJCSBpbnQg ZXBxUGFyYW0pCiB7CiAJTW9kaWZ5VGFibGUgKm5vZGUgPSBtYWtlTm9kZShNb2RpZnlUYWJs ZSk7CiAJTGlzdAkgICAqZmR3X3ByaXZhdGVfbGlzdDsKQEAgLTcwNTIsNiArNzA1NSw3IEBA IG1ha2VfbW9kaWZ5dGFibGUoUGxhbm5lckluZm8gKnJvb3QsIFBsYW4gKnN1YnBsYW4sCiAJ CW5vZGUtPmV4Y2xSZWxUbGlzdCA9IG9uY29uZmxpY3QtPmV4Y2xSZWxUbGlzdDsKIAl9CiAJ bm9kZS0+dXBkYXRlQ29sbm9zTGlzdHMgPSB1cGRhdGVDb2xub3NMaXN0czsKKwlub2RlLT5m b3JQb3J0aW9uT2YgPSAoTm9kZSAqKSBmb3JQb3J0aW9uT2Y7CiAJbm9kZS0+d2l0aENoZWNr T3B0aW9uTGlzdHMgPSB3aXRoQ2hlY2tPcHRpb25MaXN0czsKIAlub2RlLT5yZXR1cm5pbmdM aXN0cyA9IHJldHVybmluZ0xpc3RzOwogCW5vZGUtPnJvd01hcmtzID0gcm93TWFya3M7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMgYi9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKaW5kZXggNTAyY2NiY2VhMi4uZWNk NTcxY2RhYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5l ci5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYwpAQCAtMTk0 OCw2ICsxOTQ4LDcgQEAgZ3JvdXBpbmdfcGxhbm5lcihQbGFubmVySW5mbyAqcm9vdCwgZG91 YmxlIHR1cGxlX2ZyYWN0aW9uKQogCQkJCQkJCQkJCXJvd01hcmtzLAogCQkJCQkJCQkJCXBh cnNlLT5vbkNvbmZsaWN0LAogCQkJCQkJCQkJCW1lcmdlQWN0aW9uTGlzdHMsCisJCQkJCQkJ CQkJcGFyc2UtPmZvclBvcnRpb25PZiwKIAkJCQkJCQkJCQlhc3NpZ25fc3BlY2lhbF9leGVj X3BhcmFtKHJvb3QpKTsKIAkJfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6 ZXIvdXRpbC9wYXRobm9kZS5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGF0aG5v ZGUuYwppbmRleCA1ZjU1OTY4NDFjLi5lN2FmZDU1ODZjIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9vcHRpbWl6ZXIvdXRpbC9wYXRobm9kZS5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGlt aXplci91dGlsL3BhdGhub2RlLmMKQEAgLTM2NTMsNyArMzY1Myw4IEBAIGNyZWF0ZV9tb2Rp Znl0YWJsZV9wYXRoKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwsCiAJCQkJ CQlMaXN0ICp1cGRhdGVDb2xub3NMaXN0cywKIAkJCQkJCUxpc3QgKndpdGhDaGVja09wdGlv bkxpc3RzLCBMaXN0ICpyZXR1cm5pbmdMaXN0cywKIAkJCQkJCUxpc3QgKnJvd01hcmtzLCBP bkNvbmZsaWN0RXhwciAqb25jb25mbGljdCwKLQkJCQkJCUxpc3QgKm1lcmdlQWN0aW9uTGlz dHMsIGludCBlcHFQYXJhbSkKKwkJCQkJCUxpc3QgKm1lcmdlQWN0aW9uTGlzdHMsIEZvclBv cnRpb25PZkV4cHIgKmZvclBvcnRpb25PZiwKKwkJCQkJCWludCBlcHFQYXJhbSkKIHsKIAlN b2RpZnlUYWJsZVBhdGggKnBhdGhub2RlID0gbWFrZU5vZGUoTW9kaWZ5VGFibGVQYXRoKTsK IApAQCAtMzcxOSw2ICszNzIwLDcgQEAgY3JlYXRlX21vZGlmeXRhYmxlX3BhdGgoUGxhbm5l ckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCwKIAlwYXRobm9kZS0+cmV0dXJuaW5nTGlz dHMgPSByZXR1cm5pbmdMaXN0czsKIAlwYXRobm9kZS0+cm93TWFya3MgPSByb3dNYXJrczsK IAlwYXRobm9kZS0+b25jb25mbGljdCA9IG9uY29uZmxpY3Q7CisJcGF0aG5vZGUtPmZvclBv cnRpb25PZiA9IGZvclBvcnRpb25PZjsKIAlwYXRobm9kZS0+ZXBxUGFyYW0gPSBlcHFQYXJh bTsKIAlwYXRobm9kZS0+bWVyZ2VBY3Rpb25MaXN0cyA9IG1lcmdlQWN0aW9uTGlzdHM7CiAK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9hbmFseXplLmMgYi9zcmMvYmFja2Vu ZC9wYXJzZXIvYW5hbHl6ZS5jCmluZGV4IDcwOTMyZGJhNjEuLjMwM2YzNTZjNTUgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9hbmFseXplLmMKKysrIGIvc3JjL2JhY2tlbmQv cGFyc2VyL2FuYWx5emUuYwpAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgInBvc3RncmVz LmgiCiAKICNpbmNsdWRlICJhY2Nlc3Mvc3lzYXR0ci5oIgorI2luY2x1ZGUgImNhdGFsb2cv cGdfcGVyaW9kLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19wcm9jLmgiCiAjaW5jbHVkZSAi Y2F0YWxvZy9wZ190eXBlLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvZGVmcmVtLmgiCkBAIC00 NywxMSArNDgsMTMgQEAKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfcmVsYXRpb24uaCIKICNp bmNsdWRlICJwYXJzZXIvcGFyc2VfdGFyZ2V0LmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNl X3R5cGUuaCIKKyNpbmNsdWRlICJwYXJzZXIvcGFyc2VyLmgiCiAjaW5jbHVkZSAicGFyc2Vy L3BhcnNldHJlZS5oIgogI2luY2x1ZGUgInJld3JpdGUvcmV3cml0ZU1hbmlwLmgiCiAjaW5j bHVkZSAidXRpbHMvYmFja2VuZF9zdGF0dXMuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlu cy5oIgogI2luY2x1ZGUgInV0aWxzL2d1Yy5oIgorI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNo ZS5oIgogI2luY2x1ZGUgInV0aWxzL3JlbC5oIgogI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hl LmgiCiAKQEAgLTYwLDEwICs2MywxNyBAQAogcG9zdF9wYXJzZV9hbmFseXplX2hvb2tfdHlw ZSBwb3N0X3BhcnNlX2FuYWx5emVfaG9vayA9IE5VTEw7CiAKIHN0YXRpYyBRdWVyeSAqdHJh bnNmb3JtT3B0aW9uYWxTZWxlY3RJbnRvKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqcGFy c2VUcmVlKTsKK3N0YXRpYyBOb2RlICphZGRGb3JQb3J0aW9uT2ZXaGVyZUNvbmRpdGlvbnMo UXVlcnkgKnFyeSwgRm9yUG9ydGlvbk9mQ2xhdXNlICpmb3JQb3J0aW9uT2YsCisJCQkJCQkJ CQkJCU5vZGUgKndoZXJlQ2xhdXNlKTsKIHN0YXRpYyBRdWVyeSAqdHJhbnNmb3JtRGVsZXRl U3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIERlbGV0ZVN0bXQgKnN0bXQpOwogc3RhdGljIFF1 ZXJ5ICp0cmFuc2Zvcm1JbnNlcnRTdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwgSW5zZXJ0U3Rt dCAqc3RtdCk7CiBzdGF0aWMgT25Db25mbGljdEV4cHIgKnRyYW5zZm9ybU9uQ29uZmxpY3RD bGF1c2UoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJCQkJCQkJIE9uQ29uZmxpY3RDbGF1 c2UgKm9uQ29uZmxpY3RDbGF1c2UpOworc3RhdGljIE5vZGUgKnRyYW5zZm9ybUZvclBvcnRp b25PZkJvdW5kKE5vZGUgKm4sIGJvb2wgaXNMb3dlckJvdW5kKTsKK3N0YXRpYyBGb3JQb3J0 aW9uT2ZFeHByICp0cmFuc2Zvcm1Gb3JQb3J0aW9uT2ZDbGF1c2UoUGFyc2VTdGF0ZSAqcHN0 YXRlLAorCQkJCQkJCQkJCQkJCSBpbnQgcnRpbmRleCwKKwkJCQkJCQkJCQkJCQkgRm9yUG9y dGlvbk9mQ2xhdXNlICpmb3JQb3J0aW9uT2ZDbGF1c2UsCisJCQkJCQkJCQkJCQkJIGJvb2wg aXNVcGRhdGUpOwogc3RhdGljIGludAljb3VudF9yb3dleHByX2NvbHVtbnMoUGFyc2VTdGF0 ZSAqcHN0YXRlLCBOb2RlICpleHByKTsKIHN0YXRpYyBRdWVyeSAqdHJhbnNmb3JtU2VsZWN0 U3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIFNlbGVjdFN0bXQgKnN0bXQpOwogc3RhdGljIFF1 ZXJ5ICp0cmFuc2Zvcm1WYWx1ZXNDbGF1c2UoUGFyc2VTdGF0ZSAqcHN0YXRlLCBTZWxlY3RT dG10ICpzdG10KTsKQEAgLTQ2NSw2ICs0NzUsMjAgQEAgYW5hbHl6ZV9yZXF1aXJlc19zbmFw c2hvdChSYXdTdG10ICpwYXJzZVRyZWUpCiAJcmV0dXJuIHJlc3VsdDsKIH0KIAorc3RhdGlj IE5vZGUgKgorYWRkRm9yUG9ydGlvbk9mV2hlcmVDb25kaXRpb25zKFF1ZXJ5ICpxcnksIEZv clBvcnRpb25PZkNsYXVzZSAqZm9yUG9ydGlvbk9mLCBOb2RlICp3aGVyZUNsYXVzZSkKK3sK KwlpZiAoZm9yUG9ydGlvbk9mKQorCXsKKwkJaWYgKHdoZXJlQ2xhdXNlKQorCQkJcmV0dXJu IChOb2RlICopIG1ha2VCb29sRXhwcihBTkRfRVhQUiwgbGlzdF9tYWtlMihxcnktPmZvclBv cnRpb25PZi0+b3ZlcmxhcHNFeHByLCB3aGVyZUNsYXVzZSksIC0xKTsKKwkJZWxzZQorCQkJ cmV0dXJuIHFyeS0+Zm9yUG9ydGlvbk9mLT5vdmVybGFwc0V4cHI7CisJfQorCWVsc2UKKwkJ cmV0dXJuIHdoZXJlQ2xhdXNlOworfQorCiAvKgogICogdHJhbnNmb3JtRGVsZXRlU3RtdCAt CiAgKgkgIHRyYW5zZm9ybXMgYSBEZWxldGUgU3RhdGVtZW50CkBAIC00NzQsNiArNDk4LDcg QEAgdHJhbnNmb3JtRGVsZXRlU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIERlbGV0ZVN0bXQg KnN0bXQpCiB7CiAJUXVlcnkJICAgKnFyeSA9IG1ha2VOb2RlKFF1ZXJ5KTsKIAlQYXJzZU5h bWVzcGFjZUl0ZW0gKm5zaXRlbTsKKwlOb2RlCSAgICp3aGVyZUNsYXVzZTsKIAlOb2RlCSAg ICpxdWFsOwogCiAJcXJ5LT5jb21tYW5kVHlwZSA9IENNRF9ERUxFVEU7CkBAIC01MTIsNyAr NTM3LDExIEBAIHRyYW5zZm9ybURlbGV0ZVN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBEZWxl dGVTdG10ICpzdG10KQogCW5zaXRlbS0+cF9sYXRlcmFsX29ubHkgPSBmYWxzZTsKIAluc2l0 ZW0tPnBfbGF0ZXJhbF9vayA9IHRydWU7CiAKLQlxdWFsID0gdHJhbnNmb3JtV2hlcmVDbGF1 c2UocHN0YXRlLCBzdG10LT53aGVyZUNsYXVzZSwKKwlpZiAoc3RtdC0+Zm9yUG9ydGlvbk9m KQorCQlxcnktPmZvclBvcnRpb25PZiA9IHRyYW5zZm9ybUZvclBvcnRpb25PZkNsYXVzZShw c3RhdGUsIHFyeS0+cmVzdWx0UmVsYXRpb24sIHN0bXQtPmZvclBvcnRpb25PZiwgZmFsc2Up OworCisJd2hlcmVDbGF1c2UgPSBhZGRGb3JQb3J0aW9uT2ZXaGVyZUNvbmRpdGlvbnMocXJ5 LCBzdG10LT5mb3JQb3J0aW9uT2YsIHN0bXQtPndoZXJlQ2xhdXNlKTsKKwlxdWFsID0gdHJh bnNmb3JtV2hlcmVDbGF1c2UocHN0YXRlLCB3aGVyZUNsYXVzZSwKIAkJCQkJCQkJRVhQUl9L SU5EX1dIRVJFLCAiV0hFUkUiKTsKIAogCXFyeS0+cmV0dXJuaW5nTGlzdCA9IHRyYW5zZm9y bVJldHVybmluZ0xpc3QocHN0YXRlLCBzdG10LT5yZXR1cm5pbmdMaXN0KTsKQEAgLTExMzUs NyArMTE2NCw3IEBAIHRyYW5zZm9ybU9uQ29uZmxpY3RDbGF1c2UoUGFyc2VTdGF0ZSAqcHN0 YXRlLAogCQkgKiBOb3cgdHJhbnNmb3JtIHRoZSBVUERBVEUgc3ViZXhwcmVzc2lvbnMuCiAJ CSAqLwogCQlvbkNvbmZsaWN0U2V0ID0KLQkJCXRyYW5zZm9ybVVwZGF0ZVRhcmdldExpc3Qo cHN0YXRlLCBvbkNvbmZsaWN0Q2xhdXNlLT50YXJnZXRMaXN0KTsKKwkJCXRyYW5zZm9ybVVw ZGF0ZVRhcmdldExpc3QocHN0YXRlLCBvbkNvbmZsaWN0Q2xhdXNlLT50YXJnZXRMaXN0LCBO VUxMKTsKIAogCQlvbkNvbmZsaWN0V2hlcmUgPSB0cmFuc2Zvcm1XaGVyZUNsYXVzZShwc3Rh dGUsCiAJCQkJCQkJCQkJCSAgIG9uQ29uZmxpY3RDbGF1c2UtPndoZXJlQ2xhdXNlLApAQCAt MTE2NSw2ICsxMTk0LDI3OCBAQCB0cmFuc2Zvcm1PbkNvbmZsaWN0Q2xhdXNlKFBhcnNlU3Rh dGUgKnBzdGF0ZSwKIAlyZXR1cm4gcmVzdWx0OwogfQogCisvKgorICogdHJhbnNmb3JtRm9y UG9ydGlvbk9mQm91bmQKKyAqICAgIHRyYW5zZm9ybXMgVU5CT1VOREVEIHBzZXVkby1jb2x1 bW4gcmVmZXJlbmNlcyB0byBOVUxMCisgKiAgICAod2hpY2ggcmVwcmVzZW50ICJ1bmJvdW5k ZWQiIGluIGEgcmFuZ2UgdHlwZSwgb3RoZXJ3aXNlIHJldHVybnMKKyAqICAgIGl0cyBpbnB1 dCB1bmNoYW5nZWQuCisgKi8KK3N0YXRpYyBOb2RlICoKK3RyYW5zZm9ybUZvclBvcnRpb25P ZkJvdW5kKE5vZGUgKm4sIGJvb2wgaXNMb3dlckJvdW5kKQoreworCWlmIChub2RlVGFnKG4p ID09IFRfQ29sdW1uUmVmKQorCXsKKwkJQ29sdW1uUmVmICAqY3JlZiA9IChDb2x1bW5SZWYg KikgbjsKKwkJY2hhcgkgICAqY25hbWUgPSAiIjsKKwkJQV9Db25zdAkgICAqbjI7CisKKwkJ aWYgKGxpc3RfbGVuZ3RoKGNyZWYtPmZpZWxkcykgPT0gMSAmJgorCQkJSXNBKGxpbml0aWFs KGNyZWYtPmZpZWxkcyksIFN0cmluZykpCisJCQljbmFtZSA9IHN0clZhbChsaW5pdGlhbChj cmVmLT5maWVsZHMpKTsKKworCQlpZiAoc3RyY21wKCJ1bmJvdW5kZWQiLCBjbmFtZSkgIT0g MCkKKwkJCXJldHVybiBuOworCisJCW4yID0gbWFrZU5vZGUoQV9Db25zdCk7CisJCW4yLT5p c251bGwgPSB0cnVlOworCQluMi0+bG9jYXRpb24gPSAoKENvbHVtblJlZiAqKW4pLT5sb2Nh dGlvbjsKKworCQlyZXR1cm4gKE5vZGUgKiluMjsKKwl9CisJZWxzZQorCQlyZXR1cm4gbjsK K30KKworLyoKKyAqIHRyYW5zZm9ybUZvclBvcnRpb25PZkNsYXVzZQorICoKKyAqCSAgVHJh bnNmb3JtcyBhIEZvclBvcnRpb25PZkNsYXVzZSBpbiBhbiBVUERBVEUvREVMRVRFIHN0YXRl bWVudC4KKyAqCisgKgkgIC0gTG9vayB1cCB0aGUgcmFuZ2UvcGVyaW9kIHJlcXVlc3RlZC4K KyAqCSAgLSBCdWlsZCBhIGNvbXBhdGlibGUgcmFuZ2UgdmFsdWUgZnJvbSB0aGUgRlJPTSBh bmQgVE8gZXhwcmVzc2lvbnMuCisgKgkgIC0gQnVpbGQgYW4gIm92ZXJsYXBzIiBleHByZXNz aW9uIGZvciBmaWx0ZXJpbmcuCisgKgkgIC0gRm9yIFVQREFURXMsIGJ1aWxkIGFuICJpbnRl cnNlY3RzIiBleHByZXNzaW9uIHRoZSByZXdyaXRlciBjYW4gYWRkCisgKgkgIC0gdG8gdGhl IHRhcmdldExpc3QgdG8gY2hhbmdlIHRoZSB0ZW1wb3JhbCBib3VuZHMuCisgKi8KK3N0YXRp YyBGb3JQb3J0aW9uT2ZFeHByICoKK3RyYW5zZm9ybUZvclBvcnRpb25PZkNsYXVzZShQYXJz ZVN0YXRlICpwc3RhdGUsCisJCQkJCQkJaW50IHJ0aW5kZXgsCisJCQkJCQkJRm9yUG9ydGlv bk9mQ2xhdXNlICpmb3JQb3J0aW9uT2YsCisJCQkJCQkJYm9vbCBpc1VwZGF0ZSkKK3sKKwlS ZWxhdGlvbiB0YXJnZXRyZWwgPSBwc3RhdGUtPnBfdGFyZ2V0X3JlbGF0aW9uOworCVJURVBl cm1pc3Npb25JbmZvICp0YXJnZXRfcGVybWluZm8gPSBwc3RhdGUtPnBfdGFyZ2V0X25zaXRl bS0+cF9wZXJtaW5mbzsKKwljaGFyICpyYW5nZV9uYW1lID0gZm9yUG9ydGlvbk9mLT5yYW5n ZV9uYW1lOworCWNoYXIgKnJhbmdlX3R5cGVfbmFtZSA9IE5VTEw7CisJaW50IHJhbmdlX2F0 dG5vID0gSW52YWxpZEF0dHJOdW1iZXI7CisJaW50IHN0YXJ0X2F0dG5vID0gSW52YWxpZEF0 dHJOdW1iZXI7CisJaW50IGVuZF9hdHRubyA9IEludmFsaWRBdHRyTnVtYmVyOworCWNoYXIg KnN0YXJ0Y29sbmFtZSA9IE5VTEw7CisJY2hhciAqZW5kY29sbmFtZSA9IE5VTEw7CisJRm9y UG9ydGlvbk9mRXhwciAqcmVzdWx0OworCUxpc3QgKnRhcmdldExpc3Q7CisJTm9kZSAqdGFy Z2V0X3N0YXJ0LCAqdGFyZ2V0X2VuZDsKKwlFeHByICpyYW5nZUV4cHIgPSBOVUxMOworCUZ1 bmNDYWxsICpmYzsKKworCXJlc3VsdCA9IG1ha2VOb2RlKEZvclBvcnRpb25PZkV4cHIpOwor CisJLyoKKwkgKiBMb29rIHVwIHRoZSBGT1IgUE9SVElPTiBPRiBuYW1lIHJlcXVlc3RlZC4K KwkgKiBGaXJzdCBsb29rIGZvciBhIHJhbmdlIGNvbHVtbiwgdGhlbiBsb29rIGZvciBhIHBl cmlvZC4KKwkgKiBJZiB0aGUgcmVsYXRpb24gaXMgYW4gdXBkYXRlYWJsZSB2aWV3LCB0aGVu IG9ubHkgcmFuZ2UgY29sdW1ucyBhcmUKKwkgKiBwb3NzaWJsZSwgc2luY2UgdGhlIHN0YW5k YXJkIGRvZXNuJ3QgZ2l2ZSBhbnkgd2F5IHRvIGRlZmluZSBhIHBlcmlvZAorCSAqIG9uIGEg dmlldy4KKwkgKi8KKwlyYW5nZV9hdHRubyA9IGF0dG5hbWVBdHROdW0odGFyZ2V0cmVsLCBy YW5nZV9uYW1lLCBmYWxzZSk7CisJaWYgKHJhbmdlX2F0dG5vICE9IEludmFsaWRBdHRyTnVt YmVyKQorCXsKKwkJRm9ybV9wZ19hdHRyaWJ1dGUgYXR0ciA9IFR1cGxlRGVzY0F0dHIodGFy Z2V0cmVsLT5yZF9hdHQsIHJhbmdlX2F0dG5vIC0gMSk7CisJCVZhciAqdjsKKworCQkvLyBU T0RPOiBjaGVjayBhdHRyLT5hdHRpc2Ryb3BwZWQgPworCisJCS8qIE1ha2Ugc3VyZSBpdCdz IGEgcmFuZ2UgY29sdW1uICovCisJCWlmICghdHlwZV9pc19yYW5nZShhdHRyLT5hdHR0eXBp ZCkpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURf Q09MVU1OX1JFRkVSRU5DRSksCisJCQkJCSBlcnJtc2coImNvbHVtbiBcIiVzXCIgb2YgcmVs YXRpb24gXCIlc1wiIGlzIG5vdCBhIHJhbmdlIHR5cGUiLAorCQkJCQkJCXJhbmdlX25hbWUs CisJCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUodGFyZ2V0cmVsKSksCisJCQkJCSBw YXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBmb3JQb3J0aW9uT2YtPnJhbmdlX25hbWVfbG9j YXRpb24pKSk7CisKKwkJdiA9IG1ha2VWYXIoCisJCQkJcnRpbmRleCwKKwkJCQlyYW5nZV9h dHRubywKKwkJCQlhdHRyLT5hdHR0eXBpZCwKKwkJCQlhdHRyLT5hdHR0eXBtb2QsCisJCQkJ YXR0ci0+YXR0Y29sbGF0aW9uLAorCQkJCTApOworCQl2LT5sb2NhdGlvbiA9IGZvclBvcnRp b25PZi0+cmFuZ2VfbmFtZV9sb2NhdGlvbjsKKwkJcmFuZ2VFeHByID0gKEV4cHIgKikgdjsK KwkJcmVzdWx0LT5yYW5nZVZhciA9IGNvcHlPYmplY3Qodik7CisJCXJlc3VsdC0+c3RhcnRW YXIgPSBOVUxMOworCQlyZXN1bHQtPmVuZFZhciA9IE5VTEw7CisJCXJlc3VsdC0+cmFuZ2VU eXBlID0gYXR0ci0+YXR0dHlwaWQ7CisJCXJhbmdlX3R5cGVfbmFtZSA9IGdldF90eXBuYW1l KGF0dHItPmF0dHR5cGlkKTsKKworCX0gZWxzZSB7CisJCU9pZCByZWxpZCA9IFJlbGF0aW9u R2V0UmVsaWQodGFyZ2V0cmVsKTsKKwkJSGVhcFR1cGxlIHBlclR1cGxlID0gU2VhcmNoU3lz Q2FjaGUyKFBFUklPRE5BTUUsCisJCQkJCQkJCQkJCSBPYmplY3RJZEdldERhdHVtKHJlbGlk KSwKKwkJCQkJCQkJCQkJIFBvaW50ZXJHZXREYXR1bShyYW5nZV9uYW1lKSk7CisJCWlmIChI ZWFwVHVwbGVJc1ZhbGlkKHBlclR1cGxlKSkKKwkJeworCQkJRm9ybV9wZ19wZXJpb2QgcGVy ID0gKEZvcm1fcGdfcGVyaW9kKSBHRVRTVFJVQ1QocGVyVHVwbGUpOworCQkJRm9ybV9wZ19h dHRyaWJ1dGUgc3RhcnRhdHRyLCBlbmRhdHRyOworCQkJVmFyICpzdGFydHZhciwgKmVuZHZh cjsKKworCQkJVHlwZSBybmd0eXBlID0gdHlwZWlkVHlwZShwZXItPnBlcnJuZ3R5cGUpOwor CQkJcmFuZ2VfdHlwZV9uYW1lID0gdHlwZVR5cGVOYW1lKHJuZ3R5cGUpOworCQkJUmVsZWFz ZVN5c0NhY2hlKHJuZ3R5cGUpOworCQkJc3RhcnRfYXR0bm8gPSBwZXItPnBlcnN0YXJ0Owor CQkJZW5kX2F0dG5vID0gcGVyLT5wZXJlbmQ7CisKKwkJCXN0YXJ0YXR0ciA9IFR1cGxlRGVz Y0F0dHIodGFyZ2V0cmVsLT5yZF9hdHQsIHN0YXJ0X2F0dG5vIC0gMSk7CisJCQllbmRhdHRy ID0gVHVwbGVEZXNjQXR0cih0YXJnZXRyZWwtPnJkX2F0dCwgZW5kX2F0dG5vIC0gMSk7CisK KwkJCXN0YXJ0Y29sbmFtZSA9IE5hbWVTdHIoc3RhcnRhdHRyLT5hdHRuYW1lKTsKKwkJCWVu ZGNvbG5hbWUgPSBOYW1lU3RyKGVuZGF0dHItPmF0dG5hbWUpOworCQkJcmVzdWx0LT5wZXJp b2Rfc3RhcnRfbmFtZSA9IHN0YXJ0Y29sbmFtZTsKKwkJCXJlc3VsdC0+cGVyaW9kX2VuZF9u YW1lID0gZW5kY29sbmFtZTsKKworCQkJc3RhcnR2YXIgPSBtYWtlVmFyKAorCQkJCQlydGlu ZGV4LAorCQkJCQlwZXItPnBlcnN0YXJ0LAorCQkJCQlzdGFydGF0dHItPmF0dHR5cGlkLAor CQkJCQlzdGFydGF0dHItPmF0dHR5cG1vZCwKKwkJCQkJc3RhcnRhdHRyLT5hdHRjb2xsYXRp b24sCisJCQkJCTApOworCQkJc3RhcnR2YXItPmxvY2F0aW9uID0gZm9yUG9ydGlvbk9mLT5y YW5nZV9uYW1lX2xvY2F0aW9uOworCisJCQllbmR2YXIgPSBtYWtlVmFyKAorCQkJCQlydGlu ZGV4LAorCQkJCQlwZXItPnBlcmVuZCwKKwkJCQkJZW5kYXR0ci0+YXR0dHlwaWQsCisJCQkJ CWVuZGF0dHItPmF0dHR5cG1vZCwKKwkJCQkJZW5kYXR0ci0+YXR0Y29sbGF0aW9uLAorCQkJ CQkwKTsKKwkJCWVuZHZhci0+bG9jYXRpb24gPSBmb3JQb3J0aW9uT2YtPnJhbmdlX25hbWVf bG9jYXRpb247CisKKwkJCVJlbGVhc2VTeXNDYWNoZShwZXJUdXBsZSk7CisKKwkJCXJhbmdl RXhwciA9IChFeHByICopIG1ha2VGdW5jQ2FsbChTeXN0ZW1GdW5jTmFtZShyYW5nZV90eXBl X25hbWUpLAorCQkJCQkJCQkJCQkgIGxpc3RfbWFrZTIoc3RhcnR2YXIsIGVuZHZhciksCisJ CQkJCQkJCQkJCSAgQ09FUkNFX0VYUExJQ0lUX0NBTEwsCisJCQkJCQkJCQkJCSAgZm9yUG9y dGlvbk9mLT5yYW5nZV9uYW1lX2xvY2F0aW9uKTsKKwkJCXJlc3VsdC0+cmFuZ2VWYXIgPSBO VUxMOworCQkJcmVzdWx0LT5zdGFydFZhciA9IGNvcHlPYmplY3Qoc3RhcnR2YXIpOworCQkJ cmVzdWx0LT5lbmRWYXIgPSBjb3B5T2JqZWN0KGVuZHZhcik7CisJCQlyZXN1bHQtPnJhbmdl VHlwZSA9IHR5cGVuYW1lVHlwZUlkKHBzdGF0ZSwgdHlwZVN0cmluZ1RvVHlwZU5hbWUocmFu Z2VfdHlwZV9uYW1lLCBOVUxMKSk7CisJCX0KKwl9CisKKwlpZiAocmFuZ2VFeHByID09IE5V TEwpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9VTkRFRklORURf Q09MVU1OKSwKKwkJCQkgZXJybXNnKCJjb2x1bW4gb3IgcGVyaW9kIFwiJXNcIiBvZiByZWxh dGlvbiBcIiVzXCIgZG9lcyBub3QgZXhpc3QiLAorCQkJCQkJcmFuZ2VfbmFtZSwKKwkJCQkJ CVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHRhcmdldHJlbCkpLAorCQkJCSBwYXJzZXJfZXJy cG9zaXRpb24ocHN0YXRlLCBmb3JQb3J0aW9uT2YtPnJhbmdlX25hbWVfbG9jYXRpb24pKSk7 CisKKwkvKgorCSAqIEJ1aWxkIGEgcmFuZ2UgZnJvbSB0aGUgRlJPTSAuLi4gVE8gLi4uLiBi b3VuZHMuCisJICogVGhpcyBzaG91bGQgZ2l2ZSBhIGNvbnN0YW50IHJlc3VsdCwgc28gd2Ug YWNjZXB0IGZ1bmN0aW9ucyBsaWtlIE5PVygpCisJICogYnV0IG5vdCBjb2x1bW4gcmVmZXJl bmNlcywgc3VicXVlcmllcywgZXRjLgorCSAqCisJICogSXQgYWxzbyBwZXJtaXRzIE1JTlZB TFVFIGFuZCBNQVhWQUxVRSBsaWtlIGRlY2xhcmF0aXZlIHBhcnRpdGlvbnMuCisJICovCisJ dGFyZ2V0X3N0YXJ0ID0gdHJhbnNmb3JtRm9yUG9ydGlvbk9mQm91bmQoZm9yUG9ydGlvbk9m LT50YXJnZXRfc3RhcnQsIHRydWUpOworCXRhcmdldF9lbmQgICA9IHRyYW5zZm9ybUZvclBv cnRpb25PZkJvdW5kKGZvclBvcnRpb25PZi0+dGFyZ2V0X2VuZCwgZmFsc2UpOworCWZjID0g bWFrZUZ1bmNDYWxsKFN5c3RlbUZ1bmNOYW1lKHJhbmdlX3R5cGVfbmFtZSksCisJCQkJCQkJ CWxpc3RfbWFrZTIodGFyZ2V0X3N0YXJ0LCB0YXJnZXRfZW5kKSwKKwkJCQkJCQkJQ09FUkNF X0VYUExJQ0lUX0NBTEwsCisJCQkJCQkJCWZvclBvcnRpb25PZi0+cmFuZ2VfbmFtZV9sb2Nh dGlvbik7CisJcmVzdWx0LT50YXJnZXRSYW5nZSA9IHRyYW5zZm9ybUV4cHIocHN0YXRlLCAo Tm9kZSAqKSBmYywgRVhQUl9LSU5EX1VQREFURV9QT1JUSU9OKTsKKworCS8qIG92ZXJsYXBz RXhwciBpcyBzb21ldGhpbmcgd2UgY2FuIGFkZCB0byB0aGUgd2hlcmVDbGF1c2UgKi8KKwly ZXN1bHQtPm92ZXJsYXBzRXhwciA9IChOb2RlICopIG1ha2VTaW1wbGVBX0V4cHIoQUVYUFJf T1AsICImJiIsCisJCQkoTm9kZSAqKSBjb3B5T2JqZWN0KHJhbmdlRXhwciksIChOb2RlICop IGZjLAorCQkJZm9yUG9ydGlvbk9mLT5yYW5nZV9uYW1lX2xvY2F0aW9uKTsKKworCWlmIChp c1VwZGF0ZSkKKwl7CisJCS8qCisJCSAqIE5vdyBtYWtlIHN1cmUgd2UgdXBkYXRlIHRoZSBz dGFydC9lbmQgdGltZSBvZiB0aGUgcmVjb3JkLgorCQkgKiBGb3IgYSByYW5nZSBjb2wgKHIp IHRoaXMgaXMgYHIgPSByICogdGFyZ2V0UmFuZ2VgLgorCQkgKiBGb3IgYSBQRVJJT0Qgd2l0 aCBjb2xzIChzLCBlKSB0aGlzIGlzIGBzID0gbG93ZXIodHNyYW5nZShzLCBlKSAqIHRhcmdl dFJhbmdlKWAKKwkJICogYW5kIGBlID0gdXBwZXIodHNyYW5nZShzLCBlKSAqIHRhcmdldFJh bmdlKWAgKG9mIGNvdXJzZSBub3QgbmVjZXNzYXJpbHkgd2l0aAorCQkgKiB0c3JhbmdlLCBi dXQgd2l0aCB3aGF0ZXZlciByYW5nZSB0eXBlIGlzIHVzZWQgdGhlcmUpLgorCQkgKi8KKwkJ dGFyZ2V0TGlzdCA9IE5JTDsKKwkJaWYgKHJhbmdlX2F0dG5vICE9IEludmFsaWRBdHRyTnVt YmVyKQorCQl7CisJCQlFeHByICpyYW5nZVNldEV4cHIgPSAoRXhwciAqKSBtYWtlU2ltcGxl QV9FeHByKEFFWFBSX09QLCAiKiIsCisJCQkJCShOb2RlICopIGNvcHlPYmplY3QocmFuZ2VF eHByKSwgKE5vZGUgKikgZmMsCisJCQkJCWZvclBvcnRpb25PZi0+cmFuZ2VfbmFtZV9sb2Nh dGlvbik7CisJCQlUYXJnZXRFbnRyeSAqdGxlOworCisJCQlyYW5nZVNldEV4cHIgPSAoRXhw ciAqKSB0cmFuc2Zvcm1FeHByKHBzdGF0ZSwgKE5vZGUgKikgcmFuZ2VTZXRFeHByLCBFWFBS X0tJTkRfVVBEQVRFX1BPUlRJT04pOworCQkJdGxlID0gbWFrZVRhcmdldEVudHJ5KHJhbmdl U2V0RXhwciwKKwkJCQkJCQkJICByYW5nZV9hdHRubywKKwkJCQkJCQkJICByYW5nZV9uYW1l LAorCQkJCQkJCQkgIGZhbHNlKTsKKworCQkJdGFyZ2V0TGlzdCA9IGxhcHBlbmQodGFyZ2V0 TGlzdCwgdGxlKTsKKworCQkJLyogTWFyayB0aGUgcmFuZ2UgY29sdW1uIGFzIHJlcXVpcmlu ZyB1cGRhdGUgcGVybWlzc2lvbnMgKi8KKwkJCXRhcmdldF9wZXJtaW5mby0+dXBkYXRlZENv bHMgPSBibXNfYWRkX21lbWJlcih0YXJnZXRfcGVybWluZm8tPnVwZGF0ZWRDb2xzLAorCQkJ CQkJCQkJCQkJCQkgIHJhbmdlX2F0dG5vIC0gRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0 ZU51bWJlcik7CisKKwkJfSBlbHNlIHsKKwkJCUV4cHIgKmludGVyc2VjdEV4cHI7CisJCQlF eHByICpib3VuZFNldEV4cHI7CisJCQlUYXJnZXRFbnRyeSAqdGxlOworCisJCQkvKiBTZXQg dXAgdGFyZ2V0TGlzdCBmb3IgdGhlIFBFUklPRCBzdGFydCBjb2x1bW4gKi8KKworCQkJaW50 ZXJzZWN0RXhwciA9IChFeHByICopIG1ha2VTaW1wbGVBX0V4cHIoQUVYUFJfT1AsICIqIiwK KwkJCQkJKE5vZGUgKikgY29weU9iamVjdChyYW5nZUV4cHIpLCAoTm9kZSAqKSBmYywKKwkJ CQkJZm9yUG9ydGlvbk9mLT5yYW5nZV9uYW1lX2xvY2F0aW9uKTsKKworCQkJYm91bmRTZXRF eHByID0gKEV4cHIgKikgbWFrZUZ1bmNDYWxsKFN5c3RlbUZ1bmNOYW1lKCJsb3dlciIpLAor CQkJCQkJCQkJbGlzdF9tYWtlMShpbnRlcnNlY3RFeHByKSwKKwkJCQkJCQkJCUNPRVJDRV9F WFBMSUNJVF9DQUxMLAorCQkJCQkJCQkJZm9yUG9ydGlvbk9mLT5yYW5nZV9uYW1lX2xvY2F0 aW9uKTsKKwkJCWJvdW5kU2V0RXhwciA9IChFeHByICopIHRyYW5zZm9ybUV4cHIocHN0YXRl LCAoTm9kZSAqKSBib3VuZFNldEV4cHIsIEVYUFJfS0lORF9VUERBVEVfUE9SVElPTik7CisK KwkJCXRsZSA9IG1ha2VUYXJnZXRFbnRyeShib3VuZFNldEV4cHIsCisJCQkJCQkJCSAgc3Rh cnRfYXR0bm8sCisJCQkJCQkJCSAgc3RhcnRjb2xuYW1lLAorCQkJCQkJCQkgIGZhbHNlKTsK KworCQkJdGFyZ2V0TGlzdCA9IGxhcHBlbmQodGFyZ2V0TGlzdCwgdGxlKTsKKworCQkJLyog U2V0IHVwIHRhcmdldExpc3QgZm9yIHRoZSBQRVJJT0QgZW5kIGNvbHVtbiAqLworCisJCQli b3VuZFNldEV4cHIgPSAoRXhwciAqKSBtYWtlRnVuY0NhbGwoU3lzdGVtRnVuY05hbWUoInVw cGVyIiksCisJCQkJCQkJCQlsaXN0X21ha2UxKGludGVyc2VjdEV4cHIpLAorCQkJCQkJCQkJ Q09FUkNFX0VYUExJQ0lUX0NBTEwsCisJCQkJCQkJCQlmb3JQb3J0aW9uT2YtPnJhbmdlX25h bWVfbG9jYXRpb24pOworCQkJYm91bmRTZXRFeHByID0gKEV4cHIgKikgdHJhbnNmb3JtRXhw cihwc3RhdGUsIChOb2RlICopIGJvdW5kU2V0RXhwciwgRVhQUl9LSU5EX1VQREFURV9QT1JU SU9OKTsKKworCQkJdGxlID0gbWFrZVRhcmdldEVudHJ5KGJvdW5kU2V0RXhwciwKKwkJCQkJ CQkJICBlbmRfYXR0bm8sCisJCQkJCQkJCSAgZW5kY29sbmFtZSwKKwkJCQkJCQkJICBmYWxz ZSk7CisKKwkJCXRhcmdldExpc3QgPSBsYXBwZW5kKHRhcmdldExpc3QsIHRsZSk7CisKKwkJ CS8qIE1hcmsgdGhlIGJvdW5kIGNvbHVtbnMgYXMgcmVxdWlyaW5nIHVwZGF0ZSBwZXJtaXNz aW9ucyAqLworCQkJdGFyZ2V0X3Blcm1pbmZvLT51cGRhdGVkQ29scyA9IGJtc19hZGRfbWVt YmVyKHRhcmdldF9wZXJtaW5mby0+dXBkYXRlZENvbHMsCisJCQkJCQkJCQkJCQkJCSAgc3Rh cnRfYXR0bm8gLSBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyKTsKKwkJCXRh cmdldF9wZXJtaW5mby0+dXBkYXRlZENvbHMgPSBibXNfYWRkX21lbWJlcih0YXJnZXRfcGVy bWluZm8tPnVwZGF0ZWRDb2xzLAorCQkJCQkJCQkJCQkJCQkgIGVuZF9hdHRubyAtIEZpcnN0 TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXIpOworCQl9CisJCXJlc3VsdC0+cmFuZ2VT ZXQgPSB0YXJnZXRMaXN0OworCX0KKwllbHNlCisJCXJlc3VsdC0+cmFuZ2VTZXQgPSBOSUw7 CisKKwlyZXN1bHQtPnJhbmdlX25hbWUgPSByYW5nZV9uYW1lOworCisJcmV0dXJuIHJlc3Vs dDsKK30KIAogLyoKICAqIEJ1aWxkT25Db25mbGljdEV4Y2x1ZGVkVGFyZ2V0bGlzdApAQCAt MjM3MSw2ICsyNjcyLDcgQEAgdHJhbnNmb3JtVXBkYXRlU3RtdChQYXJzZVN0YXRlICpwc3Rh dGUsIFVwZGF0ZVN0bXQgKnN0bXQpCiB7CiAJUXVlcnkJICAgKnFyeSA9IG1ha2VOb2RlKFF1 ZXJ5KTsKIAlQYXJzZU5hbWVzcGFjZUl0ZW0gKm5zaXRlbTsKKwlOb2RlCSAgICp3aGVyZUNs YXVzZTsKIAlOb2RlCSAgICpxdWFsOwogCiAJcXJ5LT5jb21tYW5kVHlwZSA9IENNRF9VUERB VEU7CkBAIC0yMzg4LDYgKzI2OTAsMTAgQEAgdHJhbnNmb3JtVXBkYXRlU3RtdChQYXJzZVN0 YXRlICpwc3RhdGUsIFVwZGF0ZVN0bXQgKnN0bXQpCiAJCQkJCQkJCQkJIHN0bXQtPnJlbGF0 aW9uLT5pbmgsCiAJCQkJCQkJCQkJIHRydWUsCiAJCQkJCQkJCQkJIEFDTF9VUERBVEUpOwor CisJaWYgKHN0bXQtPmZvclBvcnRpb25PZikKKwkJcXJ5LT5mb3JQb3J0aW9uT2YgPSB0cmFu c2Zvcm1Gb3JQb3J0aW9uT2ZDbGF1c2UocHN0YXRlLCBxcnktPnJlc3VsdFJlbGF0aW9uLCBz dG10LT5mb3JQb3J0aW9uT2YsIHRydWUpOworCiAJbnNpdGVtID0gcHN0YXRlLT5wX3Rhcmdl dF9uc2l0ZW07CiAKIAkvKiBzdWJxdWVyaWVzIGluIEZST00gY2Fubm90IGFjY2VzcyB0aGUg cmVzdWx0IHJlbGF0aW9uICovCkBAIC0yNDA0LDcgKzI3MTAsOCBAQCB0cmFuc2Zvcm1VcGRh dGVTdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwgVXBkYXRlU3RtdCAqc3RtdCkKIAluc2l0ZW0t PnBfbGF0ZXJhbF9vbmx5ID0gZmFsc2U7CiAJbnNpdGVtLT5wX2xhdGVyYWxfb2sgPSB0cnVl OwogCi0JcXVhbCA9IHRyYW5zZm9ybVdoZXJlQ2xhdXNlKHBzdGF0ZSwgc3RtdC0+d2hlcmVD bGF1c2UsCisJd2hlcmVDbGF1c2UgPSBhZGRGb3JQb3J0aW9uT2ZXaGVyZUNvbmRpdGlvbnMo cXJ5LCBzdG10LT5mb3JQb3J0aW9uT2YsIHN0bXQtPndoZXJlQ2xhdXNlKTsKKwlxdWFsID0g dHJhbnNmb3JtV2hlcmVDbGF1c2UocHN0YXRlLCB3aGVyZUNsYXVzZSwKIAkJCQkJCQkJRVhQ Ul9LSU5EX1dIRVJFLCAiV0hFUkUiKTsKIAogCXFyeS0+cmV0dXJuaW5nTGlzdCA9IHRyYW5z Zm9ybVJldHVybmluZ0xpc3QocHN0YXRlLCBzdG10LT5yZXR1cm5pbmdMaXN0KTsKQEAgLTI0 MTMsNyArMjcyMCw3IEBAIHRyYW5zZm9ybVVwZGF0ZVN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRl LCBVcGRhdGVTdG10ICpzdG10KQogCSAqIE5vdyB3ZSBhcmUgZG9uZSB3aXRoIFNFTEVDVC1s aWtlIHByb2Nlc3NpbmcsIGFuZCBjYW4gZ2V0IG9uIHdpdGgKIAkgKiB0cmFuc2Zvcm1pbmcg dGhlIHRhcmdldCBsaXN0IHRvIG1hdGNoIHRoZSBVUERBVEUgdGFyZ2V0IGNvbHVtbnMuCiAJ ICovCi0JcXJ5LT50YXJnZXRMaXN0ID0gdHJhbnNmb3JtVXBkYXRlVGFyZ2V0TGlzdChwc3Rh dGUsIHN0bXQtPnRhcmdldExpc3QpOworCXFyeS0+dGFyZ2V0TGlzdCA9IHRyYW5zZm9ybVVw ZGF0ZVRhcmdldExpc3QocHN0YXRlLCBzdG10LT50YXJnZXRMaXN0LCBxcnktPmZvclBvcnRp b25PZik7CiAKIAlxcnktPnJ0YWJsZSA9IHBzdGF0ZS0+cF9ydGFibGU7CiAJcXJ5LT5ydGVw ZXJtaW5mb3MgPSBwc3RhdGUtPnBfcnRlcGVybWluZm9zOwpAQCAtMjQzMiw3ICsyNzM5LDcg QEAgdHJhbnNmb3JtVXBkYXRlU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIFVwZGF0ZVN0bXQg KnN0bXQpCiAgKgloYW5kbGUgU0VUIGNsYXVzZSBpbiBVUERBVEUvTUVSR0UvSU5TRVJUIC4u LiBPTiBDT05GTElDVCBVUERBVEUKICAqLwogTGlzdCAqCi10cmFuc2Zvcm1VcGRhdGVUYXJn ZXRMaXN0KFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqb3JpZ1RsaXN0KQordHJhbnNmb3Jt VXBkYXRlVGFyZ2V0TGlzdChQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKm9yaWdUbGlzdCwg Rm9yUG9ydGlvbk9mRXhwciAqZm9yUG9ydGlvbk9mKQogewogCUxpc3QJICAgKnRsaXN0ID0g TklMOwogCVJURVBlcm1pc3Npb25JbmZvICp0YXJnZXRfcGVybWluZm87CkBAIC0yNDgyLDYg KzI3ODksMzMgQEAgdHJhbnNmb3JtVXBkYXRlVGFyZ2V0TGlzdChQYXJzZVN0YXRlICpwc3Rh dGUsIExpc3QgKm9yaWdUbGlzdCkKIAkJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShw c3RhdGUtPnBfdGFyZ2V0X3JlbGF0aW9uKSksCiAJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24o cHN0YXRlLCBvcmlnVGFyZ2V0LT5sb2NhdGlvbikpKTsKIAorCQkvKgorCQkgKiBJZiB0aGlz IGlzIGEgRk9SIFBPUlRJT04gT0YgdXBkYXRlLAorCQkgKiBmb3JiaWQgZGlyZWN0bHkgc2V0 dGluZyB0aGUgcmFuZ2UvcGVyaW9kIGNvbHVtbnMsCisJCSAqIHNpbmNlIHRoYXQgd291bGQg Y29uZmxpY3Qgd2l0aCB0aGUgaW1wbGljaXQgdXBkYXRlcy4KKwkJICovCisJCWlmIChmb3JQ b3J0aW9uT2YgIT0gTlVMTCkKKwkJeworCQkJaWYgKGZvclBvcnRpb25PZi0+cmFuZ2VWYXIg IT0gTlVMTCkKKwkJCXsKKwkJCQlpZiAoYXR0cm5vID09IGZvclBvcnRpb25PZi0+cmFuZ2VW YXItPnZhcmF0dG5vKQorCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCShlcnJjb2RlKEVS UkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCQkgZXJybXNnKCJjYW4ndCBkaXJlY3RseSBh c3NpZ24gdG8gXCIlc1wiIGluIGEgRk9SIFBPUlRJT04gT0YgdXBkYXRlIiwKKwkJCQkJCQkJ CW9yaWdUYXJnZXQtPm5hbWUpLAorCQkJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRl LCBvcmlnVGFyZ2V0LT5sb2NhdGlvbikpKTsKKwkJCX0KKwkJCWVsc2UKKwkJCXsKKwkJCQlp ZiAoYXR0cm5vID09IGZvclBvcnRpb25PZi0+c3RhcnRWYXItPnZhcmF0dG5vIHx8IGF0dHJu byA9PSBmb3JQb3J0aW9uT2YtPmVuZFZhci0+dmFyYXR0bm8pCisJCQkJCWVyZXBvcnQoRVJS T1IsCisJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkJCSBl cnJtc2coImNhbid0IGRpcmVjdGx5IGFzc2lnbiB0byBcIiVzXCIgaW4gYSBGT1IgUE9SVElP TiBPRiB1cGRhdGUiLAorCQkJCQkJCQkJb3JpZ1RhcmdldC0+bmFtZSksCisJCQkJCQkJIHBh cnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIG9yaWdUYXJnZXQtPmxvY2F0aW9uKSkpOworCQkJ fQorCQl9CisKIAkJdXBkYXRlVGFyZ2V0TGlzdEVudHJ5KHBzdGF0ZSwgdGxlLCBvcmlnVGFy Z2V0LT5uYW1lLAogCQkJCQkJCSAgYXR0cm5vLAogCQkJCQkJCSAgb3JpZ1RhcmdldC0+aW5k aXJlY3Rpb24sCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55IGIvc3Jj L2JhY2tlbmQvcGFyc2VyL2dyYW0ueQppbmRleCA3MDk3NDA4MWE1Li5iYTY5MjVhZDg5IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CisrKyBiL3NyYy9iYWNrZW5k L3BhcnNlci9ncmFtLnkKQEAgLTI1Niw2ICsyNTYsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJl Y3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAq cXVlcnkpOwogCVJhbmdlVmFyICAgKnJhbmdlOwogCUludG9DbGF1c2UgKmludG87CiAJV2l0 aENsYXVzZSAqd2l0aDsKKwlGb3JQb3J0aW9uT2ZDbGF1c2UgKmZvcnBvcnRpb25vZjsKIAlJ bmZlckNsYXVzZQkqaW5mZXI7CiAJT25Db25mbGljdENsYXVzZSAqb25jb25mbGljdDsKIAlB X0luZGljZXMgICphaW5kOwpAQCAtNTQ4LDYgKzU0OSw3IEBAIHN0YXRpYyBOb2RlICptYWtl UmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2Rl ICpxdWVyeSk7CiAldHlwZSA8cmFuZ2U+CXJlbGF0aW9uX2V4cHIKICV0eXBlIDxyYW5nZT4J ZXh0ZW5kZWRfcmVsYXRpb25fZXhwcgogJXR5cGUgPHJhbmdlPglyZWxhdGlvbl9leHByX29w dF9hbGlhcworJXR5cGUgPGZvcnBvcnRpb25vZj4gZm9yX3BvcnRpb25fb2ZfY2xhdXNlCiAl dHlwZSA8bm9kZT4JdGFibGVzYW1wbGVfY2xhdXNlIG9wdF9yZXBlYXRhYmxlX2NsYXVzZQog JXR5cGUgPHRhcmdldD4JdGFyZ2V0X2VsIHNldF90YXJnZXQgaW5zZXJ0X2NvbHVtbl9pdGVt CiAKQEAgLTc0Niw3ICs3NDgsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdT ZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCiAJ UEFSQUxMRUwgUEFSQU1FVEVSIFBBUlNFUiBQQVJUSUFMIFBBUlRJVElPTiBQQVNTSU5HIFBB U1NXT1JECiAJUEVSSU9EIFBMQUNJTkcgUExBTlMgUE9MSUNZCi0JUE9TSVRJT04gUFJFQ0VE SU5HIFBSRUNJU0lPTiBQUkVTRVJWRSBQUkVQQVJFIFBSRVBBUkVEIFBSSU1BUlkKKwlQT1JU SU9OIFBPU0lUSU9OIFBSRUNFRElORyBQUkVDSVNJT04gUFJFU0VSVkUgUFJFUEFSRSBQUkVQ QVJFRCBQUklNQVJZCiAJUFJJT1IgUFJJVklMRUdFUyBQUk9DRURVUkFMIFBST0NFRFVSRSBQ Uk9DRURVUkVTIFBST0dSQU0gUFVCTElDQVRJT04KIAogCVFVT1RFCkBAIC04MjcsNiArODI5 LDE2IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxu YW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAlbm9uYXNzb2MJS0VZUyBPQkpF Q1RfUCBTQ0FMQVIgVkFMVUVfUAogJW5vbmFzc29jCVdJVEggV0lUSE9VVAogCisvKgorICog V2UgbmVlZCB0byBoYW5kbGUgdGhpcyBzaGlmdC9yZWR1Y2UgY29uZmxpY3Q6CisgKiBGT1Ig UE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIElOVEVSVkFMIFlFQVIgVE8gTU9OVEggVE8gZm9v LgorICogVGhpcyBpcyBiYXNpY2FsbHkgdGhlIGNsYXNzaWMgImRhbmdsaW5nIGVsc2UiIHBy b2JsZW0sIGFuZCB3ZSB3YW50IGEKKyAqIHNpbWlsYXIgcmVzb2x1dGlvbjogdHJlYXQgdGhl IFRPIGFzIHBhcnQgb2YgdGhlIElOVEVSVkFMLCBub3QgYXMgcGFydCBvZgorICogdGhlIEZS T00gLi4uIFRPIC4uLi4gVXNlcnMgY2FuIGFkZCBwYXJlbnRoZXNlcyBpZiB0aGF0J3MgYSBw cm9ibGVtLgorICogVE8ganVzdCBuZWVkcyB0byBiZSBoaWdoZXIgcHJlY2VkZW5jZSB0aGFu IFlFQVJfUCBldGMuCisgKi8KKyVub25hc3NvYyBZRUFSX1AgTU9OVEhfUCBEQVlfUCBIT1VS X1AgTUlOVVRFX1AKKyVub25hc3NvYyBUTwogLyoKICAqIFRvIHN1cHBvcnQgdGFyZ2V0X2Vs IHdpdGhvdXQgQVMsIGl0IHVzZWQgdG8gYmUgbmVjZXNzYXJ5IHRvIGFzc2lnbiBJREVOVCBh bgogICogZXhwbGljaXQgcHJlY2VkZW5jZSBqdXN0IGxlc3MgdGhhbiBPcC4gIFdoaWxlIHRo YXQncyBub3QgcmVhbGx5IG5lY2Vzc2FyeQpAQCAtMTIxNjgsMTQgKzEyMTgwLDE2IEBAIHJl dHVybmluZ19jbGF1c2U6CiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIERlbGV0ZVN0 bXQ6IG9wdF93aXRoX2NsYXVzZSBERUxFVEVfUCBGUk9NIHJlbGF0aW9uX2V4cHJfb3B0X2Fs aWFzCisJCQlmb3JfcG9ydGlvbl9vZl9jbGF1c2UKIAkJCXVzaW5nX2NsYXVzZSB3aGVyZV9v cl9jdXJyZW50X2NsYXVzZSByZXR1cm5pbmdfY2xhdXNlCiAJCQkJewogCQkJCQlEZWxldGVT dG10ICpuID0gbWFrZU5vZGUoRGVsZXRlU3RtdCk7CiAKIAkJCQkJbi0+cmVsYXRpb24gPSAk NDsKLQkJCQkJbi0+dXNpbmdDbGF1c2UgPSAkNTsKLQkJCQkJbi0+d2hlcmVDbGF1c2UgPSAk NjsKLQkJCQkJbi0+cmV0dXJuaW5nTGlzdCA9ICQ3OworCQkJCQluLT5mb3JQb3J0aW9uT2Yg PSAkNTsKKwkJCQkJbi0+dXNpbmdDbGF1c2UgPSAkNjsKKwkJCQkJbi0+d2hlcmVDbGF1c2Ug PSAkNzsKKwkJCQkJbi0+cmV0dXJuaW5nTGlzdCA9ICQ4OwogCQkJCQluLT53aXRoQ2xhdXNl ID0gJDE7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKIAkJCQl9CkBAIC0xMjIzOCw2ICsxMjI1 Miw3IEBAIG9wdF9ub3dhaXRfb3Jfc2tpcDoKICAqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8K IAogVXBkYXRlU3RtdDogb3B0X3dpdGhfY2xhdXNlIFVQREFURSByZWxhdGlvbl9leHByX29w dF9hbGlhcworCQkJZm9yX3BvcnRpb25fb2ZfY2xhdXNlCiAJCQlTRVQgc2V0X2NsYXVzZV9s aXN0CiAJCQlmcm9tX2NsYXVzZQogCQkJd2hlcmVfb3JfY3VycmVudF9jbGF1c2UKQEAgLTEy MjQ2LDEwICsxMjI2MSwxMSBAQCBVcGRhdGVTdG10OiBvcHRfd2l0aF9jbGF1c2UgVVBEQVRF IHJlbGF0aW9uX2V4cHJfb3B0X2FsaWFzCiAJCQkJCVVwZGF0ZVN0bXQgKm4gPSBtYWtlTm9k ZShVcGRhdGVTdG10KTsKIAogCQkJCQluLT5yZWxhdGlvbiA9ICQzOwotCQkJCQluLT50YXJn ZXRMaXN0ID0gJDU7Ci0JCQkJCW4tPmZyb21DbGF1c2UgPSAkNjsKLQkJCQkJbi0+d2hlcmVD bGF1c2UgPSAkNzsKLQkJCQkJbi0+cmV0dXJuaW5nTGlzdCA9ICQ4OworCQkJCQluLT5mb3JQ b3J0aW9uT2YgPSAkNDsKKwkJCQkJbi0+dGFyZ2V0TGlzdCA9ICQ2OworCQkJCQluLT5mcm9t Q2xhdXNlID0gJDc7CisJCQkJCW4tPndoZXJlQ2xhdXNlID0gJDg7CisJCQkJCW4tPnJldHVy bmluZ0xpc3QgPSAkOTsKIAkJCQkJbi0+d2l0aENsYXVzZSA9ICQxOwogCQkJCQkkJCA9IChO b2RlICopIG47CiAJCQkJfQpAQCAtMTM2ODUsNiArMTM3MDEsMTkgQEAgcmVsYXRpb25fZXhw cl9vcHRfYWxpYXM6IHJlbGF0aW9uX2V4cHIJCQkJCSVwcmVjIFVNSU5VUwogCQkJCX0KIAkJ OwogCitmb3JfcG9ydGlvbl9vZl9jbGF1c2U6CisJCQlGT1IgUE9SVElPTiBPRiBDb2xJZCBG Uk9NIGFfZXhwciBUTyBhX2V4cHIKKwkJCQl7CisJCQkJCUZvclBvcnRpb25PZkNsYXVzZSAq biA9IG1ha2VOb2RlKEZvclBvcnRpb25PZkNsYXVzZSk7CisJCQkJCW4tPnJhbmdlX25hbWUg PSAkNDsKKwkJCQkJbi0+cmFuZ2VfbmFtZV9sb2NhdGlvbiA9IEA0OworCQkJCQluLT50YXJn ZXRfc3RhcnQgPSAkNjsKKwkJCQkJbi0+dGFyZ2V0X2VuZCA9ICQ4OworCQkJCQkkJCA9IG47 CisJCQkJfQorCQkJfCAvKkVNUFRZKi8JCQkJCXsgJCQgPSBOVUxMOyB9CisJCTsKKwogLyoK ICAqIFRBQkxFU0FNUExFIGRlY29yYXRpb24gaW4gYSBGUk9NIGl0ZW0KICAqLwpAQCAtMTcy NDYsNiArMTcyNzUsNyBAQCB1bnJlc2VydmVkX2tleXdvcmQ6CiAJCQl8IFBBU1NXT1JECiAJ CQl8IFBMQU5TCiAJCQl8IFBPTElDWQorCQkJfCBQT1JUSU9OCiAJCQl8IFBSRUNFRElORwog CQkJfCBQUkVQQVJFCiAJCQl8IFBSRVBBUkVECkBAIC0xNzg0NSw2ICsxNzg3NSw3IEBAIGJh cmVfbGFiZWxfa2V5d29yZDoKIAkJCXwgUExBQ0lORwogCQkJfCBQTEFOUwogCQkJfCBQT0xJ Q1kKKwkJCXwgUE9SVElPTgogCQkJfCBQT1NJVElPTgogCQkJfCBQUkVDRURJTkcKIAkJCXwg UFJFUEFSRQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2FnZy5jIGIv c3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2FnZy5jCmluZGV4IDg1Y2Q0N2I3YWUuLmNlOGUw YmUwNDUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9hZ2cuYworKysg Yi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfYWdnLmMKQEAgLTU2Myw2ICs1NjMsMTMgQEAg Y2hlY2tfYWdnbGV2ZWxzX2FuZF9jb25zdHJhaW50cyhQYXJzZVN0YXRlICpwc3RhdGUsIE5v ZGUgKmV4cHIpCiAJCWNhc2UgRVhQUl9LSU5EX0NZQ0xFX01BUks6CiAJCQllcnJraW5kID0g dHJ1ZTsKIAkJCWJyZWFrOworCQljYXNlIEVYUFJfS0lORF9VUERBVEVfUE9SVElPTjoKKwkJ CWlmIChpc0FnZykKKwkJCQllcnIgPSBfKCJhZ2dyZWdhdGUgZnVuY3Rpb25zIGFyZSBub3Qg YWxsb3dlZCBpbiBGT1IgUE9SVElPTiBPRiBleHByZXNzaW9ucyIpOworCQkJZWxzZQorCQkJ CWVyciA9IF8oImdyb3VwaW5nIG9wZXJhdGlvbnMgYXJlIG5vdCBhbGxvd2VkIGluIEZPUiBQ T1JUSU9OIE9GIGV4cHJlc3Npb25zIik7CisKKwkJCWJyZWFrOwogCiAJCQkvKgogCQkJICog VGhlcmUgaXMgaW50ZW50aW9uYWxseSBubyBkZWZhdWx0OiBjYXNlIGhlcmUsIHNvIHRoYXQg dGhlCkBAIC05NTMsNiArOTYwLDkgQEAgdHJhbnNmb3JtV2luZG93RnVuY0NhbGwoUGFyc2VT dGF0ZSAqcHN0YXRlLCBXaW5kb3dGdW5jICp3ZnVuYywKIAkJY2FzZSBFWFBSX0tJTkRfQ1lD TEVfTUFSSzoKIAkJCWVycmtpbmQgPSB0cnVlOwogCQkJYnJlYWs7CisJCWNhc2UgRVhQUl9L SU5EX1VQREFURV9QT1JUSU9OOgorCQkJZXJyID0gXygid2luZG93IGZ1bmN0aW9ucyBhcmUg bm90IGFsbG93ZWQgaW4gRk9SIFBPUlRJT04gT0YgZXhwcmVzc2lvbnMiKTsKKwkJCWJyZWFr OwogCiAJCQkvKgogCQkJICogVGhlcmUgaXMgaW50ZW50aW9uYWxseSBubyBkZWZhdWx0OiBj YXNlIGhlcmUsIHNvIHRoYXQgdGhlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIv cGFyc2VfY29sbGF0ZS5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2NvbGxhdGUuYwpp bmRleCA5ZjZhZmMzNTFjLi5kMDliMmQyYjFjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9w YXJzZXIvcGFyc2VfY29sbGF0ZS5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9j b2xsYXRlLmMKQEAgLTQ4NCw2ICs0ODQsNyBAQCBhc3NpZ25fY29sbGF0aW9uc193YWxrZXIo Tm9kZSAqbm9kZSwgYXNzaWduX2NvbGxhdGlvbnNfY29udGV4dCAqY29udGV4dCkKIAkJY2Fz ZSBUX0pvaW5FeHByOgogCQljYXNlIFRfRnJvbUV4cHI6CiAJCWNhc2UgVF9PbkNvbmZsaWN0 RXhwcjoKKwkJY2FzZSBUX0ZvclBvcnRpb25PZkV4cHI6CiAJCWNhc2UgVF9Tb3J0R3JvdXBD bGF1c2U6CiAJCWNhc2UgVF9NZXJnZUFjdGlvbjoKIAkJCSh2b2lkKSBleHByZXNzaW9uX3Ry ZWVfd2Fsa2VyKG5vZGUsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vf ZXhwci5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYwppbmRleCA2NDM1NjQz NmVmLi4xMjI5MTMxM2JjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vf ZXhwci5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKQEAgLTU0Myw2 ICs1NDMsOSBAQCB0cmFuc2Zvcm1Db2x1bW5SZWYoUGFyc2VTdGF0ZSAqcHN0YXRlLCBDb2x1 bW5SZWYgKmNyZWYpCiAJCWNhc2UgRVhQUl9LSU5EX1BBUlRJVElPTl9CT1VORDoKIAkJCWVy ciA9IF8oImNhbm5vdCB1c2UgY29sdW1uIHJlZmVyZW5jZSBpbiBwYXJ0aXRpb24gYm91bmQg ZXhwcmVzc2lvbiIpOwogCQkJYnJlYWs7CisJCWNhc2UgRVhQUl9LSU5EX1VQREFURV9QT1JU SU9OOgorCQkJZXJyID0gXygiY2Fubm90IHVzZSBjb2x1bW4gcmVmZXJlbmNlIGluIEZPUiBQ T1JUSU9OIE9GIGV4cHJlc3Npb24iKTsKKwkJCWJyZWFrOwogCiAJCQkvKgogCQkJICogVGhl cmUgaXMgaW50ZW50aW9uYWxseSBubyBkZWZhdWx0OiBjYXNlIGhlcmUsIHNvIHRoYXQgdGhl CkBAIC0xNzkwLDYgKzE3OTMsOSBAQCB0cmFuc2Zvcm1TdWJMaW5rKFBhcnNlU3RhdGUgKnBz dGF0ZSwgU3ViTGluayAqc3VibGluaykKIAkJY2FzZSBFWFBSX0tJTkRfR0VORVJBVEVEX0NP TFVNTjoKIAkJCWVyciA9IF8oImNhbm5vdCB1c2Ugc3VicXVlcnkgaW4gY29sdW1uIGdlbmVy YXRpb24gZXhwcmVzc2lvbiIpOwogCQkJYnJlYWs7CisJCWNhc2UgRVhQUl9LSU5EX1VQREFU RV9QT1JUSU9OOgorCQkJZXJyID0gXygiY2Fubm90IHVzZSBzdWJxdWVyeSBpbiBGT1IgUE9S VElPTiBPRiBleHByZXNzaW9uIik7CisJCQlicmVhazsKIAogCQkJLyoKIAkJCSAqIFRoZXJl IGlzIGludGVudGlvbmFsbHkgbm8gZGVmYXVsdDogY2FzZSBoZXJlLCBzbyB0aGF0IHRoZQpA QCAtMzAyOCw2ICszMDM0LDggQEAgUGFyc2VFeHByS2luZE5hbWUoUGFyc2VFeHByS2luZCBl eHByS2luZCkKIAkJCXJldHVybiAiVVBEQVRFIjsKIAkJY2FzZSBFWFBSX0tJTkRfTUVSR0Vf V0hFTjoKIAkJCXJldHVybiAiTUVSR0UgV0hFTiI7CisJCWNhc2UgRVhQUl9LSU5EX1VQREFU RV9QT1JUSU9OOgorCQkJcmV0dXJuICJGT1IgUE9SVElPTiBPRiI7CiAJCWNhc2UgRVhQUl9L SU5EX0dST1VQX0JZOgogCQkJcmV0dXJuICJHUk9VUCBCWSI7CiAJCWNhc2UgRVhQUl9LSU5E X09SREVSX0JZOgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2Z1bmMu YyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9mdW5jLmMKaW5kZXggYjNmMGI2YTEzNy4u MzFlZDAxYTg0ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2Z1bmMu YworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZnVuYy5jCkBAIC0yNjU2LDYgKzI2 NTYsOSBAQCBjaGVja19zcmZfY2FsbF9wbGFjZW1lbnQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBO b2RlICpsYXN0X3NyZiwgaW50IGxvY2F0aW9uKQogCQljYXNlIEVYUFJfS0lORF9DWUNMRV9N QVJLOgogCQkJZXJya2luZCA9IHRydWU7CiAJCQlicmVhazsKKwkJY2FzZSBFWFBSX0tJTkRf VVBEQVRFX1BPUlRJT046CisJCQllcnIgPSBfKCJzZXQtcmV0dXJuaW5nIGZ1bmN0aW9ucyBh cmUgbm90IGFsbG93ZWQgaW4gRk9SIFBPUlRJT04gT0YgZXhwcmVzc2lvbnMiKTsKKwkJCWJy ZWFrOwogCiAJCQkvKgogCQkJICogVGhlcmUgaXMgaW50ZW50aW9uYWxseSBubyBkZWZhdWx0 OiBjYXNlIGhlcmUsIHNvIHRoYXQgdGhlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJz ZXIvcGFyc2VfbWVyZ2UuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9tZXJnZS5jCmlu ZGV4IGQ4ODY2MzczYjguLjIyMzVkODFkZmUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bh cnNlci9wYXJzZV9tZXJnZS5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9tZXJn ZS5jCkBAIC0zNzIsNyArMzcyLDcgQEAgdHJhbnNmb3JtTWVyZ2VTdG10KFBhcnNlU3RhdGUg KnBzdGF0ZSwgTWVyZ2VTdG10ICpzdG10KQogCQkJCQlwc3RhdGUtPnBfaXNfaW5zZXJ0ID0g ZmFsc2U7CiAJCQkJCWFjdGlvbi0+dGFyZ2V0TGlzdCA9CiAJCQkJCQl0cmFuc2Zvcm1VcGRh dGVUYXJnZXRMaXN0KHBzdGF0ZSwKLQkJCQkJCQkJCQkJCSAgbWVyZ2VXaGVuQ2xhdXNlLT50 YXJnZXRMaXN0KTsKKwkJCQkJCQkJCQkJCSAgbWVyZ2VXaGVuQ2xhdXNlLT50YXJnZXRMaXN0 LCBOVUxMKTsKIAkJCQl9CiAJCQkJYnJlYWs7CiAJCQljYXNlIENNRF9ERUxFVEU6CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmMgYi9zcmMvYmFj a2VuZC9yZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmMKaW5kZXggOTgwZGMxODE2Zi4uN2Y1ZWU3 NTI1MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmV3cml0ZS9yZXdyaXRlSGFuZGxlci5j CisrKyBiL3NyYy9iYWNrZW5kL3Jld3JpdGUvcmV3cml0ZUhhbmRsZXIuYwpAQCAtMzQ3Miw2 ICszNDcyLDMwIEBAIHJld3JpdGVUYXJnZXRWaWV3KFF1ZXJ5ICpwYXJzZXRyZWUsIFJlbGF0 aW9uIHZpZXcpCiAJCQkJCQkJCQkgICZwYXJzZXRyZWUtPmhhc1N1YkxpbmtzKTsKIAl9CiAK KwlpZiAocGFyc2V0cmVlLT5mb3JQb3J0aW9uT2YgJiYgcGFyc2V0cmVlLT5jb21tYW5kVHlw ZSA9PSBDTURfVVBEQVRFKQorCXsKKwkJLyoKKwkJICogTGlrZSB0aGUgSU5TRVJUL1VQREFU RSBjb2RlIGFib3ZlLCB1cGRhdGUgdGhlIHJlc25vcyBpbiB0aGUKKwkJICogYXV4aWxpYXJ5 IFVQREFURSB0YXJnZXRsaXN0IHRvIHJlZmVyIHRvIGNvbHVtbnMgb2YgdGhlIGJhc2UKKwkJ ICogcmVsYXRpb24uCisJCSAqLworCQlmb3JlYWNoKGxjLCBwYXJzZXRyZWUtPmZvclBvcnRp b25PZi0+cmFuZ2VTZXQpCisJCXsKKwkJCVRhcmdldEVudHJ5ICp0bGUgPSAoVGFyZ2V0RW50 cnkgKikgbGZpcnN0KGxjKTsKKwkJCVRhcmdldEVudHJ5ICp2aWV3X3RsZTsKKworCQkJaWYg KHRsZS0+cmVzanVuaykKKwkJCQljb250aW51ZTsKKworCQkJdmlld190bGUgPSBnZXRfdGxl X2J5X3Jlc25vKHZpZXdfdGFyZ2V0bGlzdCwgdGxlLT5yZXNubyk7CisJCQlpZiAodmlld190 bGUgIT0gTlVMTCAmJiAhdmlld190bGUtPnJlc2p1bmsgJiYgSXNBKHZpZXdfdGxlLT5leHBy LCBWYXIpKQorCQkJCXRsZS0+cmVzbm8gPSAoKFZhciAqKSB2aWV3X3RsZS0+ZXhwciktPnZh cmF0dG5vOworCQkJZWxzZQorCQkJCWVsb2coRVJST1IsICJhdHRyaWJ1dGUgbnVtYmVyICVk IG5vdCBmb3VuZCBpbiB2aWV3IHRhcmdldGxpc3QiLAorCQkJCQkgdGxlLT5yZXNubyk7CisJ CX0KKwl9CisKIAkvKgogCSAqIEZvciBVUERBVEUvREVMRVRFLCBwdWxsIHVwIGFueSBXSEVS RSBxdWFscyBmcm9tIHRoZSB2aWV3LiAgV2Uga25vdyB0aGF0CiAJICogYW55IFZhcnMgaW4g dGhlIHF1YWxzIG11c3QgcmVmZXJlbmNlIHRoZSBvbmUgYmFzZSByZWxhdGlvbiwgc28gd2Ug bmVlZApAQCAtMzgxMCw2ICszODM0LDIyIEBAIFJld3JpdGVRdWVyeShRdWVyeSAqcGFyc2V0 cmVlLCBMaXN0ICpyZXdyaXRlX2V2ZW50cywgaW50IG9yaWdfcnRfbGVuZ3RoKQogCQllbHNl IGlmIChldmVudCA9PSBDTURfVVBEQVRFKQogCQl7CiAJCQlBc3NlcnQocGFyc2V0cmVlLT5v dmVycmlkZSA9PSBPVkVSUklESU5HX05PVF9TRVQpOworCQkJLyoKKwkJCSAqIFVwZGF0ZSBG T1IgUE9SVElPTiBPRiBjb2x1bW4ocykgYXV0b21hdGljYWxseS4gRG9uJ3QKKwkJCSAqIGRv IHRoaXMgdW50aWwgd2UncmUgZG9uZSByZXdyaXRpbmcgYSB2aWV3IHVwZGF0ZSwgc28KKwkJ CSAqIHRoYXQgd2UgZG9uJ3QgYWRkIHRoZSBzYW1lIHVwZGF0ZSBvbiB0aGUgcmVjdXJzaW9u LgorCQkJICovCisJCQlpZiAocGFyc2V0cmVlLT5mb3JQb3J0aW9uT2YgJiYKKwkJCQlydF9l bnRyeV9yZWxhdGlvbi0+cmRfcmVsLT5yZWxraW5kICE9IFJFTEtJTkRfVklFVykKKwkJCXsK KwkJCQlMaXN0Q2VsbCAqdGw7CisJCQkJZm9yZWFjaCh0bCwgcGFyc2V0cmVlLT5mb3JQb3J0 aW9uT2YtPnJhbmdlU2V0KQorCQkJCXsKKwkJCQkJVGFyZ2V0RW50cnkgKnRsZSA9IChUYXJn ZXRFbnRyeSAqKSBsZmlyc3QodGwpOworCQkJCQlwYXJzZXRyZWUtPnRhcmdldExpc3QgPSBs YXBwZW5kKHBhcnNldHJlZS0+dGFyZ2V0TGlzdCwgdGxlKTsKKwkJCQl9CisJCQl9CisKIAkJ CXBhcnNldHJlZS0+dGFyZ2V0TGlzdCA9CiAJCQkJcmV3cml0ZVRhcmdldExpc3RJVShwYXJz ZXRyZWUtPnRhcmdldExpc3QsCiAJCQkJCQkJCQlwYXJzZXRyZWUtPmNvbW1hbmRUeXBlLApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMgYi9zcmMvYmFja2VuZC90 Y29wL3V0aWxpdHkuYwppbmRleCAzMGI1MWJmNGQzLi43ZTZiNTc5ZjY0IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYworKysgYi9zcmMvYmFja2VuZC90Y29wL3V0 aWxpdHkuYwpAQCAtMTU1OSw3ICsxNTU5LDcgQEAgUHJvY2Vzc1V0aWxpdHlTbG93KFBhcnNl U3RhdGUgKnBzdGF0ZSwKIAkJCQkJCQkJCXRydWUsCS8qIGNoZWNrX3JpZ2h0cyAqLwogCQkJ CQkJCQkJdHJ1ZSwJLyogY2hlY2tfbm90X2luX3VzZSAqLwogCQkJCQkJCQkJZmFsc2UsCS8q IHNraXBfYnVpbGQgKi8KLQkJCQkJCQkJCWZhbHNlKTsgLyogcXVpZXQgKi8KKwkJCQkJCQkJ CWZhbHNlKTsJLyogcXVpZXQgKi8KIAogCQkJCQkvKgogCQkJCQkgKiBBZGQgdGhlIENSRUFU RSBJTkRFWCBub2RlIGl0c2VsZiB0byBzdGFzaCByaWdodCBhd2F5OwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L01ha2VmaWxlIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L01ha2VmaWxlCmluZGV4IDBkZTBiYmIxYjguLmE0ZjIyNmVjOGQgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9NYWtlZmlsZQorKysgYi9zcmMvYmFja2VuZC91dGlscy9h ZHQvTWFrZWZpbGUKQEAgLTc4LDYgKzc4LDcgQEAgT0JKUyA9IFwKIAlvcmFjbGVfY29tcGF0 Lm8gXAogCW9yZGVyZWRzZXRhZ2dzLm8gXAogCXBhcnRpdGlvbmZ1bmNzLm8gXAorCXBlcmlv ZC5vIFwKIAlwZ19sb2NhbGUubyBcCiAJcGdfbHNuLm8gXAogCXBnX3VwZ3JhZGVfc3VwcG9y dC5vIFwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZXJpb2QuYyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9wZXJpb2QuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwLi4wZWQ0MzA0ZTE2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L3BlcmlvZC5jCkBAIC0wLDAgKzEsNTYgQEAKKy8qLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorICoKKyAqIHBlcmlvZC5jCisgKgkgIEZ1bmN0aW9ucyB0byBzdXBwb3J0IHBl cmlvZHMuCisgKgorICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDIyLCBQ b3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICogUG9ydGlvbnMgQ29weXJp Z2h0IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEK KyAqCisgKgorICogSURFTlRJRklDQVRJT04KKyAqCSAgc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L3BlcmlvZC5jCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKyNpbmNsdWRlICJw b3N0Z3Jlcy5oIgorCisjaW5jbHVkZSAiZXhlY3V0b3IvdHVwdGFibGUuaCIKKyNpbmNsdWRl ICJmbWdyLmgiCisjaW5jbHVkZSAibm9kZXMvcHJpbW5vZGVzLmgiCisjaW5jbHVkZSAidXRp bHMvZm1ncnByb3Rvcy5oIgorI2luY2x1ZGUgInV0aWxzL3BlcmlvZC5oIgorI2luY2x1ZGUg InV0aWxzL3JhbmdldHlwZXMuaCIKKworRGF0dW0gcGVyaW9kX3RvX3JhbmdlKFR1cGxlVGFi bGVTbG90ICpzbG90LCBpbnQgc3RhcnRhdHRubywgaW50IGVuZGF0dG5vLCBPaWQgcmFuZ2V0 eXBlKQoreworCURhdHVtIHN0YXJ0dmFsdWU7CisJRGF0dW0gZW5kdmFsdWU7CisJRGF0dW0g cmVzdWx0OworCWJvb2wJc3RhcnRpc251bGw7CisJYm9vbAllbmRpc251bGw7CisJTE9DQUxf RkNJTkZPKGZjaW5mbywgMik7CisJRm1nckluZm8JZmxpbmZvOworCUZ1bmNFeHByICAgKmY7 CisKKwlJbml0RnVuY3Rpb25DYWxsSW5mb0RhdGEoKmZjaW5mbywgJmZsaW5mbywgMiwgSW52 YWxpZE9pZCwgTlVMTCwgTlVMTCk7CisJZiA9IG1ha2VOb2RlKEZ1bmNFeHByKTsKKwlmLT5m dW5jcmVzdWx0dHlwZSA9IHJhbmdldHlwZTsKKwlmbGluZm8uZm5fZXhwciA9IChOb2RlICop IGY7CisJZmxpbmZvLmZuX2V4dHJhID0gTlVMTDsKKworCS8qIGNvbXB1dGUgb2xkdmFsdWUg Ki8KKwlzdGFydHZhbHVlID0gc2xvdF9nZXRhdHRyKHNsb3QsIHN0YXJ0YXR0bm8sICZzdGFy dGlzbnVsbCk7CisJZW5kdmFsdWUgPSBzbG90X2dldGF0dHIoc2xvdCwgZW5kYXR0bm8sICZl bmRpc251bGwpOworCisJZmNpbmZvLT5hcmdzWzBdLnZhbHVlID0gc3RhcnR2YWx1ZTsKKwlm Y2luZm8tPmFyZ3NbMF0uaXNudWxsID0gc3RhcnRpc251bGw7CisJZmNpbmZvLT5hcmdzWzFd LnZhbHVlID0gZW5kdmFsdWU7CisJZmNpbmZvLT5hcmdzWzFdLmlzbnVsbCA9IGVuZGlzbnVs bDsKKworCXJlc3VsdCA9IHJhbmdlX2NvbnN0cnVjdG9yMihmY2luZm8pOworCWlmIChmY2lu Zm8tPmlzbnVsbCkKKwkJZWxvZyhFUlJPUiwgImZ1bmN0aW9uICV1IHJldHVybmVkIE5VTEwi LCBmbGluZm8uZm5fb2lkKTsKKworCXJldHVybiByZXN1bHQ7Cit9CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC91dGlscy9hZHQvcmFuZ2V0eXBlcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L3JhbmdldHlwZXMuYwppbmRleCBkNjVlNTYyNWM3Li5kNGUxNzMyMzc3IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcmFuZ2V0eXBlcy5jCisrKyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC9yYW5nZXR5cGVzLmMKQEAgLTEyMDYsNiArMTIwNiw0OCBAQCByYW5n ZV9zcGxpdF9pbnRlcm5hbChUeXBlQ2FjaGVFbnRyeSAqdHlwY2FjaGUsIGNvbnN0IFJhbmdl VHlwZSAqcjEsIGNvbnN0IFJhbmdlVAogCXJldHVybiBmYWxzZTsKIH0KIAorLyoKKyAqIHJh bmdlX2xlZnRvdmVyX2ludGVybmFsIC0gU2V0cyBvdXRwdXQxIGFuZCBvdXRwdXQyIHRvIHRo ZSByZW1haW5pbmcgcGFydHMgb2YgcjEKKyAqIGFmdGVyIHN1YnRyYWN0aW5nIHIyLCBvciBp ZiBub3RoaW5nIGlzIGxlZnQgdGhlbiB0byB0aGUgZW1wdHkgcmFuZ2UuCisgKiBvdXRwdXQx IHdpbGwgYWx3YXlzIGJlICJiZWZvcmUiIHIyIGFuZCBvdXRwdXQyICJhZnRlciIuCisgKi8K K3ZvaWQKK3JhbmdlX2xlZnRvdmVyX2ludGVybmFsKFR5cGVDYWNoZUVudHJ5ICp0eXBjYWNo ZSwgY29uc3QgUmFuZ2VUeXBlICpyMSwKKwkJCQkJCWNvbnN0IFJhbmdlVHlwZSAqcjIsIFJh bmdlVHlwZSAqKm91dHB1dDEsIFJhbmdlVHlwZSAqKm91dHB1dDIpCit7CisJUmFuZ2VCb3Vu ZAlsb3dlcjEsCisJCQkJbG93ZXIyOworCVJhbmdlQm91bmQJdXBwZXIxLAorCQkJCXVwcGVy MjsKKwlib29sCQllbXB0eTEsCisJCQkJZW1wdHkyOworCisJcmFuZ2VfZGVzZXJpYWxpemUo dHlwY2FjaGUsIHIxLCAmbG93ZXIxLCAmdXBwZXIxLCAmZW1wdHkxKTsKKwlyYW5nZV9kZXNl cmlhbGl6ZSh0eXBjYWNoZSwgcjIsICZsb3dlcjIsICZ1cHBlcjIsICZlbXB0eTIpOworCisJ aWYgKHJhbmdlX2NtcF9ib3VuZHModHlwY2FjaGUsICZsb3dlcjEsICZsb3dlcjIpIDwgMCkK Kwl7CisJCWxvd2VyMi5pbmNsdXNpdmUgPSAhbG93ZXIyLmluY2x1c2l2ZTsKKwkJbG93ZXIy Lmxvd2VyID0gZmFsc2U7CisJCSpvdXRwdXQxID0gbWFrZV9yYW5nZSh0eXBjYWNoZSwgJmxv d2VyMSwgJmxvd2VyMiwgZmFsc2UsIE5VTEwpOworCX0KKwllbHNlCisJeworCQkqb3V0cHV0 MSA9IG1ha2VfZW1wdHlfcmFuZ2UodHlwY2FjaGUpOworCX0KKworCWlmIChyYW5nZV9jbXBf Ym91bmRzKHR5cGNhY2hlLCAmdXBwZXIxLCAmdXBwZXIyKSA+IDApCisJeworCQl1cHBlcjIu aW5jbHVzaXZlID0gIXVwcGVyMi5pbmNsdXNpdmU7CisJCXVwcGVyMi5sb3dlciA9IHRydWU7 CisJCSpvdXRwdXQyID0gbWFrZV9yYW5nZSh0eXBjYWNoZSwgJnVwcGVyMiwgJnVwcGVyMSwg ZmFsc2UsIE5VTEwpOworCX0KKwllbHNlCisJeworCQkqb3V0cHV0MiA9IG1ha2VfZW1wdHlf cmFuZ2UodHlwY2FjaGUpOworCX0KK30KKwogLyogcmFuZ2UgLT4gcmFuZ2UgYWdncmVnYXRl IGZ1bmN0aW9ucyAqLwogCiBEYXR1bQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L3JpX3RyaWdnZXJzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcmlfdHJpZ2dlcnMu YwppbmRleCAzNzViMTdiOWYzLi5lMjY5NWMwYWE2IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC91dGlscy9hZHQvcmlfdHJpZ2dlcnMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQv cmlfdHJpZ2dlcnMuYwpAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1ZGUgInV0aWxzL2ludmFs LmgiCiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVt dXRpbHMuaCIKKyNpbmNsdWRlICJ1dGlscy9wZXJpb2QuaCIKICNpbmNsdWRlICJ1dGlscy9y ZWwuaCIKICNpbmNsdWRlICJ1dGlscy9ybHMuaCIKICNpbmNsdWRlICJ1dGlscy9ydWxldXRp bHMuaCIKQEAgLTI0NjMsOCArMjQ2NCwyMiBAQCByaV9FeHRyYWN0VmFsdWVzKFJlbGF0aW9u IHJlbCwgVHVwbGVUYWJsZVNsb3QgKnNsb3QsCiAKIAlmb3IgKGludCBpID0gMDsgaSA8IHJp aW5mby0+bmtleXM7IGkrKykKIAl7Ci0JCXZhbHNbaV0gPSBzbG90X2dldGF0dHIoc2xvdCwg YXR0bnVtc1tpXSwgJmlzbnVsbCk7Ci0JCW51bGxzW2ldID0gaXNudWxsID8gJ24nIDogJyAn OworCQlpZiAoYXR0bnVtc1tpXSAhPSBJbnZhbGlkQXR0ck51bWJlcikKKwkJeworCQkJdmFs c1tpXSA9IHNsb3RfZ2V0YXR0cihzbG90LCBhdHRudW1zW2ldLCAmaXNudWxsKTsKKwkJCW51 bGxzW2ldID0gaXNudWxsID8gJ24nIDogJyAnOworCQl9CisJCWVsc2UKKwkJeworCQkJdmFs c1tpXSA9IGJ1aWxkX3BlcmlvZF9yYW5nZShyaWluZm8sIHNsb3QsIHJlbF9pc19wayk7CisJ CQludWxsc1tpXSA9ICcgJzsKKwkJfQorCX0KKworCWlmIChoYXNGb3JQb3J0aW9uT2YpCisJ eworCQl2YWxzW3JpaW5mby0+bmtleXNdID0gZm9yUG9ydGlvbk9mOworCQludWxsc1tyaWlu Zm8tPm5rZXlzXSA9ICcgJzsKIAl9CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2Nv bW1hbmRzL3RyaWdnZXIuaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3RyaWdnZXIuaAppbmRl eCA0MzBlM2NhN2RkLi5iM2Q5MGRlYWE3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21t YW5kcy90cmlnZ2VyLmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvdHJpZ2dlci5oCkBA IC00MSw2ICs0MSw3IEBAIHR5cGVkZWYgc3RydWN0IFRyaWdnZXJEYXRhCiAJVHVwbGVzdG9y ZXN0YXRlICp0Z19vbGR0YWJsZTsKIAlUdXBsZXN0b3Jlc3RhdGUgKnRnX25ld3RhYmxlOwog CWNvbnN0IEJpdG1hcHNldCAqdGdfdXBkYXRlZGNvbHM7CisJRm9yUG9ydGlvbk9mU3RhdGUg KnRnX3RlbXBvcmFsOwogfSBUcmlnZ2VyRGF0YTsKIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVz LmgKaW5kZXggOTYxNDNjMDliMS4uNDk4MGMxYWU3NSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvbm9kZXMvZXhlY25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVz LmgKQEAgLTQxLDEyICs0MSwxNCBAQAogI2luY2x1ZGUgInN0b3JhZ2UvY29uZGl0aW9uX3Zh cmlhYmxlLmgiCiAjaW5jbHVkZSAidXRpbHMvaHNlYXJjaC5oIgogI2luY2x1ZGUgInV0aWxz L3F1ZXJ5ZW52aXJvbm1lbnQuaCIKKyNpbmNsdWRlICJ1dGlscy9yYW5nZXR5cGVzLmgiCiAj aW5jbHVkZSAidXRpbHMvcmVsdHJpZ2dlci5oIgogI2luY2x1ZGUgInV0aWxzL3NoYXJlZHR1 cGxlc3RvcmUuaCIKICNpbmNsdWRlICJ1dGlscy9zbmFwc2hvdC5oIgogI2luY2x1ZGUgInV0 aWxzL3NvcnRzdXBwb3J0LmgiCiAjaW5jbHVkZSAidXRpbHMvdHVwbGVzb3J0LmgiCiAjaW5j bHVkZSAidXRpbHMvdHVwbGVzdG9yZS5oIgorI2luY2x1ZGUgInV0aWxzL3R5cGNhY2hlLmgi CiAKIHN0cnVjdCBQbGFuU3RhdGU7CQkJCS8qIGZvcndhcmQgcmVmZXJlbmNlcyBpbiB0aGlz IGZpbGUgKi8KIHN0cnVjdCBQYXJhbGxlbEhhc2hKb2luU3RhdGU7CkBAIC00MjYsNiArNDI4 LDI4IEBAIHR5cGVkZWYgc3RydWN0IE1lcmdlQWN0aW9uU3RhdGUKIAlFeHByU3RhdGUgICpt YXNfd2hlbnF1YWw7CS8qIFdIRU4gW05PVF0gTUFUQ0hFRCBBTkQgY29uZGl0aW9ucyAqLwog fSBNZXJnZUFjdGlvblN0YXRlOwogCisvKgorICogRm9yUG9ydGlvbk9mU3RhdGUKKyAqCisg KiBFeGVjdXRvciBzdGF0ZSBvZiBhIEZPUiBQT1JUSU9OIE9GIG9wZXJhdGlvbi4KKyAqLwor dHlwZWRlZiBzdHJ1Y3QgRm9yUG9ydGlvbk9mU3RhdGUKK3sKKwlOb2RlVGFnCQl0eXBlOwor CisJY2hhciAgICpmcF9yYW5nZU5hbWU7CQkvKiB0aGUgY29sdW1uL1BFUklPRCBuYW1lZCBp biBGT1IgUE9SVElPTiBPRiAqLworCU9pZAkJZnBfcmFuZ2VUeXBlOwkJLyogdGhlIHR5cGUg b2YgdGhlIEZPUiBQT1JUSU9OIE9GIGV4cHJlc3Npb24gKi8KKwlib29sCWZwX2hhc1Blcmlv ZDsJCS8qIHRydWUgaWZmIHRoaXMgaXMgYSBQRVJJT0Qgbm90IGEgcmFuZ2UgKi8KKwlpbnQJ CWZwX3JhbmdlQXR0bm87CQkvKiB0aGUgYXR0bm8gb2YgdGhlIHJhbmdlIGNvbHVtbiAob3Ig MCBmb3IgYSBQRVJJT0QpICovCisJaW50CQlmcF9wZXJpb2RTdGFydEF0dG5vOwkvKiB0aGUg YXR0bm8gb2YgdGhlIFBFUklPRCBzdGFydCBjb2x1bW4gKG9yIDAgZm9yIGEgcmFuZ2UpICov CisJaW50CQlmcF9wZXJpb2RFbmRBdHRubzsJCS8qIHRoZSBhdHRubyBvZiB0aGUgUEVSSU9E IGVuZCBjb2x1bW4gKG9yIDAgZm9yIGEgcmFuZ2UpICovCisJRGF0dW0JZnBfdGFyZ2V0UmFu Z2U7CQkvKiB0aGUgcmFuZ2UgZnJvbSBGT1IgUE9SVElPTiBPRiAqLworCVR5cGVDYWNoZUVu dHJ5ICpmcF9yYW5nZXR5cGNhY2hlOwkvKiB0eXBlIGNhY2hlIGVudHJ5IG9mIHRoZSByYW5n ZSAqLworCVR1cGxlVGFibGVTbG90ICpmcF9FeGlzdGluZzsJCS8qIHNsb3QgdG8gc3RvcmUg ZXhpc3RpbmcgdGFyZ2V0IHR1cGxlIGluICovCisJVHVwbGVUYWJsZVNsb3QgKmZwX0xlZnRv dmVyMTsJCS8qIHNsb3QgdG8gc3RvcmUgbGVmdG92ZXIgYmVsb3cgdGhlIHRhcmdldCByYW5n ZSAqLworCVR1cGxlVGFibGVTbG90ICpmcF9MZWZ0b3ZlcjI7CQkvKiBzbG90IHRvIHN0b3Jl IGxlZnRvdmVyIGFib3ZlIHRoZSB0YXJnZXQgcmFuZ2UgKi8KK30gRm9yUG9ydGlvbk9mU3Rh dGU7CisKIC8qCiAgKiBSZXN1bHRSZWxJbmZvCiAgKgpAQCAtNTQ2LDYgKzU3MCw5IEBAIHR5 cGVkZWYgc3RydWN0IFJlc3VsdFJlbEluZm8KIAlMaXN0CSAgICpyaV9tYXRjaGVkTWVyZ2VB Y3Rpb247CiAJTGlzdAkgICAqcmlfbm90TWF0Y2hlZE1lcmdlQWN0aW9uOwogCisJLyogRk9S IFBPUlRJT04gT0YgZXZhbHVhdGlvbiBzdGF0ZSAqLworCUZvclBvcnRpb25PZlN0YXRlICpy aV9mb3JQb3J0aW9uT2Y7CisKIAkvKiBwYXJ0aXRpb24gY2hlY2sgZXhwcmVzc2lvbiBzdGF0 ZSAoTlVMTCBpZiBub3Qgc2V0IHVwIHlldCkgKi8KIAlFeHByU3RhdGUgICpyaV9QYXJ0aXRp b25DaGVja0V4cHI7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9k ZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAppbmRleCBkNmIyOGQwN2Vj Li5hNDQ1MmQ2ZDM5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVz LmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCkBAIC0xNDksNiArMTQ5 LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgUXVlcnkKIAkgKi8KIAlpbnQJCQlyZXN1bHRSZWxhdGlv biBwZ19ub2RlX2F0dHIocXVlcnlfanVtYmxlX2lnbm9yZSk7CiAKKwkvKiBGT1IgUE9SVElP TiBPRiBjbGF1c2UgZm9yIFVQREFURS9ERUxFVEUgKi8KKwlGb3JQb3J0aW9uT2ZFeHByICpm b3JQb3J0aW9uT2Y7CisKIAkvKiBoYXMgYWdncmVnYXRlcyBpbiB0bGlzdCBvciBoYXZpbmdR dWFsICovCiAJYm9vbAkJaGFzQWdncyBwZ19ub2RlX2F0dHIocXVlcnlfanVtYmxlX2lnbm9y ZSk7CiAJLyogaGFzIHdpbmRvdyBmdW5jdGlvbnMgaW4gdGxpc3QgKi8KQEAgLTE1MzYsNiAr MTUzOSwxOSBAQCB0eXBlZGVmIHN0cnVjdCBSb3dNYXJrQ2xhdXNlCiAJYm9vbAkJcHVzaGVk RG93bjsJCS8qIHB1c2hlZCBkb3duIGZyb20gaGlnaGVyIHF1ZXJ5IGxldmVsPyAqLwogfSBS b3dNYXJrQ2xhdXNlOwogCisvKgorICogRm9yUG9ydGlvbk9mQ2xhdXNlCisgKgkJcmVwcmVz ZW50YXRpb24gb2YgRk9SIFBPUlRJT04gT0YgPHBlcmlvZC1uYW1lPiBGUk9NIDx0MT4gVE8g PHQyPgorICovCit0eXBlZGVmIHN0cnVjdCBGb3JQb3J0aW9uT2ZDbGF1c2UKK3sKKwlOb2Rl VGFnCQl0eXBlOworCWNoYXIJICAgKnJhbmdlX25hbWU7CisJaW50CQkJcmFuZ2VfbmFtZV9s b2NhdGlvbjsKKwlOb2RlCSAgICp0YXJnZXRfc3RhcnQ7CisJTm9kZQkgICAqdGFyZ2V0X2Vu ZDsKK30gRm9yUG9ydGlvbk9mQ2xhdXNlOworCiAvKgogICogV2l0aENsYXVzZSAtCiAgKgkg ICByZXByZXNlbnRhdGlvbiBvZiBXSVRIIGNsYXVzZQpAQCAtMTg3OSwxMiArMTg5NSwxMyBA QCB0eXBlZGVmIHN0cnVjdCBJbnNlcnRTdG10CiAgKi8KIHR5cGVkZWYgc3RydWN0IERlbGV0 ZVN0bXQKIHsKLQlOb2RlVGFnCQl0eXBlOwotCVJhbmdlVmFyICAgKnJlbGF0aW9uOwkJLyog cmVsYXRpb24gdG8gZGVsZXRlIGZyb20gKi8KLQlMaXN0CSAgICp1c2luZ0NsYXVzZTsJLyog b3B0aW9uYWwgdXNpbmcgY2xhdXNlIGZvciBtb3JlIHRhYmxlcyAqLwotCU5vZGUJICAgKndo ZXJlQ2xhdXNlOwkvKiBxdWFsaWZpY2F0aW9ucyAqLwotCUxpc3QJICAgKnJldHVybmluZ0xp c3Q7CS8qIGxpc3Qgb2YgZXhwcmVzc2lvbnMgdG8gcmV0dXJuICovCi0JV2l0aENsYXVzZSAq d2l0aENsYXVzZTsJCS8qIFdJVEggY2xhdXNlICovCisJTm9kZVRhZwkJCQl0eXBlOworCVJh bmdlVmFyCQkgICAqcmVsYXRpb247CQkvKiByZWxhdGlvbiB0byBkZWxldGUgZnJvbSAqLwor CUZvclBvcnRpb25PZkNsYXVzZSAqZm9yUG9ydGlvbk9mOwkvKiBGT1IgUE9SVElPTiBPRiBj bGF1c2UgKi8KKwlMaXN0CQkJICAgKnVzaW5nQ2xhdXNlOwkvKiBvcHRpb25hbCB1c2luZyBj bGF1c2UgZm9yIG1vcmUgdGFibGVzICovCisJTm9kZQkJCSAgICp3aGVyZUNsYXVzZTsJLyog cXVhbGlmaWNhdGlvbnMgKi8KKwlMaXN0CQkJICAgKnJldHVybmluZ0xpc3Q7CS8qIGxpc3Qg b2YgZXhwcmVzc2lvbnMgdG8gcmV0dXJuICovCisJV2l0aENsYXVzZQkJICAgKndpdGhDbGF1 c2U7CQkvKiBXSVRIIGNsYXVzZSAqLwogfSBEZWxldGVTdG10OwogCiAvKiAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tCkBAIC0xODkzLDEzICsxOTEwLDE0IEBAIHR5cGVkZWYgc3RydWN0IERl bGV0ZVN0bXQKICAqLwogdHlwZWRlZiBzdHJ1Y3QgVXBkYXRlU3RtdAogewotCU5vZGVUYWcJ CXR5cGU7Ci0JUmFuZ2VWYXIgICAqcmVsYXRpb247CQkvKiByZWxhdGlvbiB0byB1cGRhdGUg Ki8KLQlMaXN0CSAgICp0YXJnZXRMaXN0OwkJLyogdGhlIHRhcmdldCBsaXN0IChvZiBSZXNU YXJnZXQpICovCi0JTm9kZQkgICAqd2hlcmVDbGF1c2U7CS8qIHF1YWxpZmljYXRpb25zICov Ci0JTGlzdAkgICAqZnJvbUNsYXVzZTsJCS8qIG9wdGlvbmFsIGZyb20gY2xhdXNlIGZvciBt b3JlIHRhYmxlcyAqLwotCUxpc3QJICAgKnJldHVybmluZ0xpc3Q7CS8qIGxpc3Qgb2YgZXhw cmVzc2lvbnMgdG8gcmV0dXJuICovCi0JV2l0aENsYXVzZSAqd2l0aENsYXVzZTsJCS8qIFdJ VEggY2xhdXNlICovCisJTm9kZVRhZwkJCQl0eXBlOworCVJhbmdlVmFyCQkgICAqcmVsYXRp b247CQkvKiByZWxhdGlvbiB0byB1cGRhdGUgKi8KKwlGb3JQb3J0aW9uT2ZDbGF1c2UgKmZv clBvcnRpb25PZjsJLyogRk9SIFBPUlRJT04gT0YgY2xhdXNlICovCisJTGlzdAkJCSAgICp0 YXJnZXRMaXN0OwkJLyogdGhlIHRhcmdldCBsaXN0IChvZiBSZXNUYXJnZXQpICovCisJTm9k ZQkJCSAgICp3aGVyZUNsYXVzZTsJLyogcXVhbGlmaWNhdGlvbnMgKi8KKwlMaXN0CQkJICAg KmZyb21DbGF1c2U7CQkvKiBvcHRpb25hbCBmcm9tIGNsYXVzZSBmb3IgbW9yZSB0YWJsZXMg Ki8KKwlMaXN0CQkJICAgKnJldHVybmluZ0xpc3Q7CS8qIGxpc3Qgb2YgZXhwcmVzc2lvbnMg dG8gcmV0dXJuICovCisJV2l0aENsYXVzZQkJICAgKndpdGhDbGF1c2U7CQkvKiBXSVRIIGNs YXVzZSAqLwogfSBVcGRhdGVTdG10OwogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaCBiL3NyYy9pbmNsdWRl L25vZGVzL3BhdGhub2Rlcy5oCmluZGV4IGNmMjg0MTZkYTguLmIwNmE0NzJiNzggMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRl L25vZGVzL3BhdGhub2Rlcy5oCkBAIC0yMzQ1LDYgKzIzNDUsNyBAQCB0eXBlZGVmIHN0cnVj dCBNb2RpZnlUYWJsZVBhdGgKIAlMaXN0CSAgICpyZXR1cm5pbmdMaXN0czsgLyogcGVyLXRh cmdldC10YWJsZSBSRVRVUk5JTkcgdGxpc3RzICovCiAJTGlzdAkgICAqcm93TWFya3M7CQkv KiBQbGFuUm93TWFya3MgKG5vbi1sb2NraW5nIG9ubHkpICovCiAJT25Db25mbGljdEV4cHIg Km9uY29uZmxpY3Q7IC8qIE9OIENPTkZMSUNUIGNsYXVzZSwgb3IgTlVMTCAqLworCUZvclBv cnRpb25PZkV4cHIgKmZvclBvcnRpb25PZjsJLyogRk9SIFBPUlRJT04gT0YgY2xhdXNlIGZv ciBVUERBVEUvREVMRVRFICovCiAJaW50CQkJZXBxUGFyYW07CQkvKiBJRCBvZiBQYXJhbSBm b3IgRXZhbFBsYW5RdWFsIHJlLWV2YWwgKi8KIAlMaXN0CSAgICptZXJnZUFjdGlvbkxpc3Rz OwkvKiBwZXItdGFyZ2V0LXRhYmxlIGxpc3RzIG9mIGFjdGlvbnMgZm9yCiAJCQkJCQkJCQkg KiBNRVJHRSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgg Yi9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaAppbmRleCA2NTliZDA1YzBjLi45NmY4 YWVhNmEwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaAorKysg Yi9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaApAQCAtMjQ2LDYgKzI0Niw3IEBAIHR5 cGVkZWYgc3RydWN0IE1vZGlmeVRhYmxlCiAJTGlzdAkgICAqcm93TWFya3M7CQkvKiBQbGFu Um93TWFya3MgKG5vbi1sb2NraW5nIG9ubHkpICovCiAJaW50CQkJZXBxUGFyYW07CQkvKiBJ RCBvZiBQYXJhbSBmb3IgRXZhbFBsYW5RdWFsIHJlLWV2YWwgKi8KIAlPbkNvbmZsaWN0QWN0 aW9uIG9uQ29uZmxpY3RBY3Rpb247CS8qIE9OIENPTkZMSUNUIGFjdGlvbiAqLworCU5vZGUJ ICAgKmZvclBvcnRpb25PZjsJLyogRk9SIFBPUlRJT04gT0YgY2xhdXNlIGZvciBVUERBVEUv REVMRVRFIC8vIFRPRE86IEluc3RlYWQgb2YgcmUtdXNpbmcgRXhwciBoZXJlLCBicmVhayBp dCBpbnRvIHBpZWNlcyBsaWtlIG9uQ29uZmxpY3R7QWN0aW9uLFNldCxXaGVyZX0/ICovCiAJ TGlzdAkgICAqYXJiaXRlckluZGV4ZXM7IC8qIExpc3Qgb2YgT04gQ09ORkxJQ1QgYXJiaXRl ciBpbmRleCBPSURzICAqLwogCUxpc3QJICAgKm9uQ29uZmxpY3RTZXQ7CS8qIElOU0VSVCBP TiBDT05GTElDVCBETyBVUERBVEUgdGFyZ2V0bGlzdCAqLwogCUxpc3QJICAgKm9uQ29uZmxp Y3RDb2xzOyAvKiB0YXJnZXQgY29sdW1uIG51bWJlcnMgZm9yIG9uQ29uZmxpY3RTZXQgKi8K ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oIGIvc3JjL2luY2x1 ZGUvbm9kZXMvcHJpbW5vZGVzLmgKaW5kZXggYmU5YzI5ZjBiZi4uOTA4NTNkYzJkZiAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmgKKysrIGIvc3JjL2luY2x1 ZGUvbm9kZXMvcHJpbW5vZGVzLmgKQEAgLTE5ODgsNCArMTk4OCwyNyBAQCB0eXBlZGVmIHN0 cnVjdCBPbkNvbmZsaWN0RXhwcgogCUxpc3QJICAgKmV4Y2xSZWxUbGlzdDsJLyogdGxpc3Qg b2YgdGhlIEVYQ0xVREVEIHBzZXVkbyByZWxhdGlvbiAqLwogfSBPbkNvbmZsaWN0RXhwcjsK IAorLyotLS0tLS0tLS0tCisgKiBGb3JQb3J0aW9uT2ZFeHByIC0gcmVwcmVzZW50cyBhIEZP UiBQT1JUSU9OIE9GIC4uLiBleHByZXNzaW9uCisgKgorICogVGhlIGNvbnRlbnRzIGhlcmUg d2lsbCB2YXJ5IGRlcGVuZGluZyBvbiB3aGV0aGVyIHdlIGFyZSB0YXJnZXRpbmcgYSByYW5n ZQorICogY29sdW1uIG9yIGEgUEVSSU9ELiBGb3IgUEVSSU9EcyB3ZSBob2xkIGV4dHJhIGlu Zm8gYWJvdXQgdGhlIHN0YXJ0L2VuZAorICogY29sdW1ucy4KKyAqLS0tLS0tLS0tLQorICov Cit0eXBlZGVmIHN0cnVjdCBGb3JQb3J0aW9uT2ZFeHByCit7CisJTm9kZVRhZwkJdHlwZTsK KwlWYXIJCSAgICpyYW5nZVZhcjsJCQkvKiBSYW5nZSBjb2x1bW4gKi8KKwlWYXIJCSAgICpz dGFydFZhcjsJCQkvKiBQRVJJT0Qgc3RhcnQgY29sdW1uICovCisJVmFyCQkgICAqZW5kVmFy OwkJCQkvKiBQRVJJT0QgZW5kIGNvbHVtbiAqLworCWNoYXIJICAgKnJhbmdlX25hbWU7CQkJ LyogUmFuZ2Ugb3IgUEVSSU9EIG5hbWUgKi8KKwljaGFyCSAgICpwZXJpb2Rfc3RhcnRfbmFt ZTsJLyogUEVSSU9EIHN0YXJ0IGNvbHVtbiBuYW1lICovCisJY2hhcgkgICAqcGVyaW9kX2Vu ZF9uYW1lOwkvKiBQRVJJT0QgZW5kIGNvbHVtbiBuYW1lICovCisJTm9kZQkgICAqdGFyZ2V0 UmFuZ2U7CQkvKiBGT1IgUE9SVElPTiBPRiBib3VuZHMgYXMgYSByYW5nZSAqLworCU9pZAkJ CXJhbmdlVHlwZTsJCQkvKiB0eXBlIG9mIHRhcmdldFJhbmdlICovCisJTm9kZQkgICAqb3Zl cmxhcHNFeHByOwkJLyogcmFuZ2UgJiYgdGFyZ2V0UmFuZ2UgKi8KKwlMaXN0CSAgICpyYW5n ZVNldDsJCQkvKiBMaXN0IG9mIFRhcmdldEVudHJ5cyB0byBzZXQgdGhlIHRpbWUgY29sdW1u KHMpICovCit9IEZvclBvcnRpb25PZkV4cHI7CisKICNlbmRpZgkJCQkJCQkvKiBQUklNTk9E RVNfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3BhdGhub2RlLmgg Yi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0aG5vZGUuaAppbmRleCA2OWJlNzAxYjE2Li4x ZjI1ZTJmYzNmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0aG5vZGUu aAorKysgYi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0aG5vZGUuaApAQCAtMjgwLDcgKzI4 MCw4IEBAIGV4dGVybiBNb2RpZnlUYWJsZVBhdGggKmNyZWF0ZV9tb2RpZnl0YWJsZV9wYXRo KFBsYW5uZXJJbmZvICpyb290LAogCQkJCQkJCQkJCQkJTGlzdCAqdXBkYXRlQ29sbm9zTGlz dHMsCiAJCQkJCQkJCQkJCQlMaXN0ICp3aXRoQ2hlY2tPcHRpb25MaXN0cywgTGlzdCAqcmV0 dXJuaW5nTGlzdHMsCiAJCQkJCQkJCQkJCQlMaXN0ICpyb3dNYXJrcywgT25Db25mbGljdEV4 cHIgKm9uY29uZmxpY3QsCi0JCQkJCQkJCQkJCQlMaXN0ICptZXJnZUFjdGlvbkxpc3RzLCBp bnQgZXBxUGFyYW0pOworCQkJCQkJCQkJCQkJTGlzdCAqbWVyZ2VBY3Rpb25MaXN0cywKKwkJ CQkJCQkJCQkJCUZvclBvcnRpb25PZkV4cHIgKmZvclBvcnRpb25PZiwgaW50IGVwcVBhcmFt KTsKIGV4dGVybiBMaW1pdFBhdGggKmNyZWF0ZV9saW1pdF9wYXRoKFBsYW5uZXJJbmZvICpy b290LCBSZWxPcHRJbmZvICpyZWwsCiAJCQkJCQkJCQlQYXRoICpzdWJwYXRoLAogCQkJCQkJ CQkJTm9kZSAqbGltaXRPZmZzZXQsIE5vZGUgKmxpbWl0Q291bnQsCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9wYXJzZXIvYW5hbHl6ZS5oIGIvc3JjL2luY2x1ZGUvcGFyc2VyL2FuYWx5 emUuaAppbmRleCAxY2VmMTgzM2E2Li4wODRlMTcxODdmIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9wYXJzZXIvYW5hbHl6ZS5oCisrKyBiL3NyYy9pbmNsdWRlL3BhcnNlci9hbmFseXpl LmgKQEAgLTQzLDcgKzQzLDggQEAgZXh0ZXJuIExpc3QgKnRyYW5zZm9ybUluc2VydFJvdyhQ YXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKmV4cHJsaXN0LAogCQkJCQkJCQlMaXN0ICpzdG10 Y29scywgTGlzdCAqaWNvbHVtbnMsIExpc3QgKmF0dHJub3MsCiAJCQkJCQkJCWJvb2wgc3Ry aXBfaW5kaXJlY3Rpb24pOwogZXh0ZXJuIExpc3QgKnRyYW5zZm9ybVVwZGF0ZVRhcmdldExp c3QoUGFyc2VTdGF0ZSAqcHN0YXRlLAotCQkJCQkJCQkJICAgTGlzdCAqb3JpZ1RsaXN0KTsK KwkJCQkJCQkJCSAgIExpc3QgKm9yaWdUbGlzdCwKKwkJCQkJCQkJCSAgIEZvclBvcnRpb25P ZkV4cHIgKmZvclBvcnRpb25PZik7CiBleHRlcm4gUXVlcnkgKnRyYW5zZm9ybVRvcExldmVs U3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIFJhd1N0bXQgKnBhcnNlVHJlZSk7CiBleHRlcm4g UXVlcnkgKnRyYW5zZm9ybVN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpwYXJzZVRy ZWUpOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmggYi9zcmMv aW5jbHVkZS9wYXJzZXIva3dsaXN0LmgKaW5kZXggMTk5Y2Q3NDczOC4uZWNhZTgyZWQ1NSAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCisrKyBiL3NyYy9pbmNs dWRlL3BhcnNlci9rd2xpc3QuaApAQCAtMzI4LDYgKzMyOCw3IEBAIFBHX0tFWVdPUkQoInBl cmlvZCIsIFBFUklPRCwgUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdP UkQoInBsYWNpbmciLCBQTEFDSU5HLCBSRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQog UEdfS0VZV09SRCgicGxhbnMiLCBQTEFOUywgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xB QkVMKQogUEdfS0VZV09SRCgicG9saWN5IiwgUE9MSUNZLCBVTlJFU0VSVkVEX0tFWVdPUkQs IEJBUkVfTEFCRUwpCitQR19LRVlXT1JEKCJwb3J0aW9uIiwgUE9SVElPTiwgVU5SRVNFUlZF RF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgicG9zaXRpb24iLCBQT1NJVElP TiwgQ09MX05BTUVfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInByZWNlZGlu ZyIsIFBSRUNFRElORywgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZ V09SRCgicHJlY2lzaW9uIiwgUFJFQ0lTSU9OLCBDT0xfTkFNRV9LRVlXT1JELCBBU19MQUJF TCkKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmggYi9zcmMv aW5jbHVkZS9wYXJzZXIvcGFyc2Vfbm9kZS5oCmluZGV4IGY1ODkxMTJkNWUuLjBkNjAxZjM0 YTUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmgKKysrIGIv c3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaApAQCAtNTYsNiArNTYsNyBAQCB0eXBl ZGVmIGVudW0gUGFyc2VFeHByS2luZAogCUVYUFJfS0lORF9VUERBVEVfU09VUkNFLAkvKiBV UERBVEUgYXNzaWdubWVudCBzb3VyY2UgaXRlbSAqLwogCUVYUFJfS0lORF9VUERBVEVfVEFS R0VULAkvKiBVUERBVEUgYXNzaWdubWVudCB0YXJnZXQgaXRlbSAqLwogCUVYUFJfS0lORF9N RVJHRV9XSEVOLAkJLyogTUVSR0UgV0hFTiBbTk9UXSBNQVRDSEVEIGNvbmRpdGlvbiAqLwor CUVYUFJfS0lORF9VUERBVEVfUE9SVElPTiwJLyogVVBEQVRFIEZPUiBQT1JUSU9OIE9GIGl0 ZW0gKi8KIAlFWFBSX0tJTkRfR1JPVVBfQlksCQkJLyogR1JPVVAgQlkgKi8KIAlFWFBSX0tJ TkRfT1JERVJfQlksCQkJLyogT1JERVIgQlkgKi8KIAlFWFBSX0tJTkRfRElTVElOQ1RfT04s CQkvKiBESVNUSU5DVCBPTiAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvcGVy aW9kLmggYi9zcmMvaW5jbHVkZS91dGlscy9wZXJpb2QuaApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwLi4wYThhZjNlZGIwCi0tLSAvZGV2L251bGwKKysrIGIvc3Jj L2luY2x1ZGUvdXRpbHMvcGVyaW9kLmgKQEAgLTAsMCArMSwxOSBAQAorLyotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgKgorICogcGVyaW9kLmgKKyAqCSAgc3VwcG9ydCBmb3IgUG9zdGdyZXMg cGVyaW9kcy4KKyAqCisgKgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjIs IFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKiBQb3J0aW9ucyBDb3B5 cmlnaHQgKGMpIDE5OTQsIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5p YQorICoKKyAqIHNyYy9pbmNsdWRlL3V0aWxzL3BlcmlvZC5oCisgKgorICotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgKi8KKyNpZm5kZWYgUEVSSU9EX0gKKyNkZWZpbmUgUEVSSU9EX0gKKwor ZXh0ZXJuIERhdHVtIHBlcmlvZF90b19yYW5nZShUdXBsZVRhYmxlU2xvdCAqc2xvdCwgaW50 IHN0YXJ0YXR0bm8sIGludCBlbmRhdHRubywgT2lkIHJhbmdldHlwZSk7CisKKyNlbmRpZgkJ CQkJCQkvKiBQRVJJT0RfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvcmFu Z2V0eXBlcy5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvcmFuZ2V0eXBlcy5oCmluZGV4IDZiNDIw YTg2MTguLjQ4ZWUyZGViZWQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3Jhbmdl dHlwZXMuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9yYW5nZXR5cGVzLmgKQEAgLTE2NCw1 ICsxNjQsOCBAQCBleHRlcm4gUmFuZ2VUeXBlICptYWtlX2VtcHR5X3JhbmdlKFR5cGVDYWNo ZUVudHJ5ICp0eXBjYWNoZSk7CiBleHRlcm4gYm9vbCByYW5nZV9zcGxpdF9pbnRlcm5hbChU eXBlQ2FjaGVFbnRyeSAqdHlwY2FjaGUsIGNvbnN0IFJhbmdlVHlwZSAqcjEsCiAJCQkJCQkJ CSBjb25zdCBSYW5nZVR5cGUgKnIyLCBSYW5nZVR5cGUgKipvdXRwdXQxLAogCQkJCQkJCQkg UmFuZ2VUeXBlICoqb3V0cHV0Mik7CitleHRlcm4gdm9pZCByYW5nZV9sZWZ0b3Zlcl9pbnRl cm5hbChUeXBlQ2FjaGVFbnRyeSAqdHlwY2FjaGUsIGNvbnN0IFJhbmdlVHlwZSAqcjEsCisJ CQkJCQkJCQljb25zdCBSYW5nZVR5cGUgKnIyLCBSYW5nZVR5cGUgKipvdXRwdXQxLAorCQkJ CQkJCQkJUmFuZ2VUeXBlICoqb3V0cHV0Mik7CiAKICNlbmRpZgkJCQkJCQkvKiBSQU5HRVRZ UEVTX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZm9yX3Bv cnRpb25fb2Yub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9mb3JfcG9ydGlvbl9v Zi5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uZTMxNzlhMGZi ZgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZm9yX3Bv cnRpb25fb2Yub3V0CkBAIC0wLDAgKzEsNzk3IEBACistLSBUZXN0cyBmb3IgVVBEQVRFL0RF TEVURSBGT1IgUE9SVElPTiBPRgorLS0gV29ya3Mgb24gbm9uLVBLIGNvbHVtbnMKK0NSRUFU RSBUQUJMRSBmb3JfcG9ydGlvbl9vZl90ZXN0ICgKKyAgaWQgaW50NHJhbmdlLAorICB2YWxp ZF9hdCB0c3JhbmdlLAorICBuYW1lIHRleHQgTk9UIE5VTEwKKyk7CitJTlNFUlQgSU5UTyBm b3JfcG9ydGlvbl9vZl90ZXN0IFZBTFVFUworKCdbMSwyKScsICdbMjAxOC0wMS0wMiwyMDIw LTAxLTAxKScsICdvbmUnKTsKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9S VElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAxLTE1JyBUTyAnMjAxOS0wMS0wMScKK1NF VCBuYW1lID0gJ2Zvbyc7CitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1Ig UE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTE1JyBUTyBVTkJPVU5ERUQ7CitT RUxFQ1QgKiBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3Q7CisgIGlkICAgfCAgICAgICAgICAg ICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgbmFtZSAK Ky0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLQorIFsxLDIpIHwgWyJNb24gSmFuIDE1IDAwOjAwOjAwIDIw MTgiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiKSB8IGZvbworIFsxLDIpIHwgWyJUdWUg SmFuIDAyIDAwOjAwOjAwIDIwMTgiLCJNb24gSmFuIDE1IDAwOjAwOjAwIDIwMTgiKSB8IG9u ZQorIFsxLDIpIHwgWyJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiLCJUdWUgSmFuIDE1IDAw OjAwOjAwIDIwMTkiKSB8IG9uZQorKDMgcm93cykKKworLS0gV29ya3Mgb24gbW9yZSB0aGFu IG9uZSBwZXJpb2QKK0RST1AgVEFCTEUgZm9yX3BvcnRpb25fb2ZfdGVzdDsKK0NSRUFURSBU QUJMRSBmb3JfcG9ydGlvbl9vZl90ZXN0ICgKKyAgaWQgaW50NHJhbmdlLAorICB2YWxpZDFf YXQgdHNyYW5nZSwKKyAgdmFsaWQyX2F0IHRzcmFuZ2UsCisgIG5hbWUgdGV4dCBOT1QgTlVM TAorKTsKK0lOU0VSVCBJTlRPIGZvcl9wb3J0aW9uX29mX3Rlc3QgVkFMVUVTCisoJ1sxLDIp JywgJ1syMDE4LTAxLTAyLDIwMTgtMDItMDMpJywgJ1syMDE1LTAxLTAxLDIwMjUtMDEtMDEp JywgJ29uZScpOworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9G IHZhbGlkMV9hdCBGUk9NICcyMDE4LTAxLTE1JyBUTyBVTkJPVU5ERUQKK1NFVCBuYW1lID0g J2Zvbyc7CitTRUxFQ1QgKiBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3Q7CisgIGlkICAgfCAg ICAgICAgICAgICAgICAgICAgICAgIHZhbGlkMV9hdCAgICAgICAgICAgICAgICAgICAgICAg IHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZDJfYXQgICAgICAgICAgICAgICAgICAg ICAgICB8IG5hbWUgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tCisgWzEsMikgfCBbIk1vbiBK YW4gMTUgMDA6MDA6MDAgMjAxOCIsIlNhdCBGZWIgMDMgMDA6MDA6MDAgMjAxOCIpIHwgWyJU aHUgSmFuIDAxIDAwOjAwOjAwIDIwMTUiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjUiKSB8 IGZvbworIFsxLDIpIHwgWyJUdWUgSmFuIDAyIDAwOjAwOjAwIDIwMTgiLCJNb24gSmFuIDE1 IDAwOjAwOjAwIDIwMTgiKSB8IFsiVGh1IEphbiAwMSAwMDowMDowMCAyMDE1IiwiV2VkIEph biAwMSAwMDowMDowMCAyMDI1IikgfCBvbmUKKygyIHJvd3MpCisKK1VQREFURSBmb3JfcG9y dGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZDJfYXQgRlJPTSAnMjAxOC0wMS0x NScgVE8gVU5CT1VOREVECitTRVQgbmFtZSA9ICdiYXInOworU0VMRUNUICogRlJPTSBmb3Jf cG9ydGlvbl9vZl90ZXN0OworICBpZCAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxp ZDFfYXQgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAg dmFsaWQyX2F0ICAgICAgICAgICAgICAgICAgICAgICAgfCBuYW1lIAorLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLQorIFsxLDIpIHwgWyJNb24gSmFuIDE1IDAwOjAwOjAwIDIwMTgiLCJTYXQg RmViIDAzIDAwOjAwOjAwIDIwMTgiKSB8IFsiTW9uIEphbiAxNSAwMDowMDowMCAyMDE4Iiwi V2VkIEphbiAwMSAwMDowMDowMCAyMDI1IikgfCBiYXIKKyBbMSwyKSB8IFsiTW9uIEphbiAx NSAwMDowMDowMCAyMDE4IiwiU2F0IEZlYiAwMyAwMDowMDowMCAyMDE4IikgfCBbIlRodSBK YW4gMDEgMDA6MDA6MDAgMjAxNSIsIk1vbiBKYW4gMTUgMDA6MDA6MDAgMjAxOCIpIHwgZm9v CisgWzEsMikgfCBbIlR1ZSBKYW4gMDIgMDA6MDA6MDAgMjAxOCIsIk1vbiBKYW4gMTUgMDA6 MDA6MDAgMjAxOCIpIHwgWyJNb24gSmFuIDE1IDAwOjAwOjAwIDIwMTgiLCJXZWQgSmFuIDAx IDAwOjAwOjAwIDIwMjUiKSB8IGJhcgorIFsxLDIpIHwgWyJUdWUgSmFuIDAyIDAwOjAwOjAw IDIwMTgiLCJNb24gSmFuIDE1IDAwOjAwOjAwIDIwMTgiKSB8IFsiVGh1IEphbiAwMSAwMDow MDowMCAyMDE1IiwiTW9uIEphbiAxNSAwMDowMDowMCAyMDE4IikgfCBvbmUKKyg0IHJvd3Mp CisKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZh bGlkMV9hdCBGUk9NICcyMDE4LTAxLTIwJyBUTyBVTkJPVU5ERUQ7CitTRUxFQ1QgKiBGUk9N IGZvcl9wb3J0aW9uX29mX3Rlc3Q7CisgIGlkICAgfCAgICAgICAgICAgICAgICAgICAgICAg IHZhbGlkMV9hdCAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAg ICAgICB2YWxpZDJfYXQgICAgICAgICAgICAgICAgICAgICAgICB8IG5hbWUgCistLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tCisgWzEsMikgfCBbIlR1ZSBKYW4gMDIgMDA6MDA6MDAgMjAxOCIs Ik1vbiBKYW4gMTUgMDA6MDA6MDAgMjAxOCIpIHwgWyJNb24gSmFuIDE1IDAwOjAwOjAwIDIw MTgiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjUiKSB8IGJhcgorIFsxLDIpIHwgWyJUdWUg SmFuIDAyIDAwOjAwOjAwIDIwMTgiLCJNb24gSmFuIDE1IDAwOjAwOjAwIDIwMTgiKSB8IFsi VGh1IEphbiAwMSAwMDowMDowMCAyMDE1IiwiTW9uIEphbiAxNSAwMDowMDowMCAyMDE4Iikg fCBvbmUKKyBbMSwyKSB8IFsiTW9uIEphbiAxNSAwMDowMDowMCAyMDE4IiwiU2F0IEphbiAy MCAwMDowMDowMCAyMDE4IikgfCBbIk1vbiBKYW4gMTUgMDA6MDA6MDAgMjAxOCIsIldlZCBK YW4gMDEgMDA6MDA6MDAgMjAyNSIpIHwgYmFyCisgWzEsMikgfCBbIk1vbiBKYW4gMTUgMDA6 MDA6MDAgMjAxOCIsIlNhdCBKYW4gMjAgMDA6MDA6MDAgMjAxOCIpIHwgWyJUaHUgSmFuIDAx IDAwOjAwOjAwIDIwMTUiLCJNb24gSmFuIDE1IDAwOjAwOjAwIDIwMTgiKSB8IGZvbworKDQg cm93cykKKworREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04g T0YgdmFsaWQyX2F0IEZST00gJzIwMTgtMDEtMjAnIFRPIFVOQk9VTkRFRDsKK1NFTEVDVCAq IEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdDsKKyAgaWQgICB8ICAgICAgICAgICAgICAgICAg ICAgICAgdmFsaWQxX2F0ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAg ICAgICAgICAgIHZhbGlkMl9hdCAgICAgICAgICAgICAgICAgICAgICAgIHwgbmFtZSAKKy0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0KKyBbMSwyKSB8IFsiVHVlIEphbiAwMiAwMDowMDowMCAy MDE4IiwiTW9uIEphbiAxNSAwMDowMDowMCAyMDE4IikgfCBbIlRodSBKYW4gMDEgMDA6MDA6 MDAgMjAxNSIsIk1vbiBKYW4gMTUgMDA6MDA6MDAgMjAxOCIpIHwgb25lCisgWzEsMikgfCBb Ik1vbiBKYW4gMTUgMDA6MDA6MDAgMjAxOCIsIlNhdCBKYW4gMjAgMDA6MDA6MDAgMjAxOCIp IHwgWyJUaHUgSmFuIDAxIDAwOjAwOjAwIDIwMTUiLCJNb24gSmFuIDE1IDAwOjAwOjAwIDIw MTgiKSB8IGZvbworIFsxLDIpIHwgWyJUdWUgSmFuIDAyIDAwOjAwOjAwIDIwMTgiLCJNb24g SmFuIDE1IDAwOjAwOjAwIDIwMTgiKSB8IFsiTW9uIEphbiAxNSAwMDowMDowMCAyMDE4Iiwi U2F0IEphbiAyMCAwMDowMDowMCAyMDE4IikgfCBiYXIKKyBbMSwyKSB8IFsiTW9uIEphbiAx NSAwMDowMDowMCAyMDE4IiwiU2F0IEphbiAyMCAwMDowMDowMCAyMDE4IikgfCBbIk1vbiBK YW4gMTUgMDA6MDA6MDAgMjAxOCIsIlNhdCBKYW4gMjAgMDA6MDA6MDAgMjAxOCIpIHwgYmFy CisoNCByb3dzKQorCitEUk9QIFRBQkxFIGZvcl9wb3J0aW9uX29mX3Rlc3Q7CitDUkVBVEUg VEFCTEUgZm9yX3BvcnRpb25fb2ZfdGVzdCAoCisgIGlkIGludDRyYW5nZSBOT1QgTlVMTCwK KyAgdmFsaWRfYXQgdHNyYW5nZSBOT1QgTlVMTCwKKyAgbmFtZSB0ZXh0IE5PVCBOVUxMLAor CUNPTlNUUkFJTlQgZm9yX3BvcnRpb25fb2ZfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9h dCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0lOU0VSVCBJTlRPIGZvcl9wb3J0aW9uX29mX3Rl c3QKK1ZBTFVFUworKCdbMSwyKScsICdbMjAxOC0wMS0wMiwyMDE4LTAyLTAzKScsICdvbmUn KSwKKygnWzEsMiknLCAnWzIwMTgtMDItMDMsMjAxOC0wMy0wMyknLCAnb25lJyksCisoJ1sx LDIpJywgJ1syMDE4LTAzLTAzLDIwMTgtMDQtMDQpJywgJ29uZScpLAorKCdbMiwzKScsICdb MjAxOC0wMS0wMSwyMDE4LTAxLTA1KScsICd0d28nKSwKKygnWzMsNCknLCAnWzIwMTgtMDEt MDEsKScsICd0aHJlZScpLAorKCdbNCw1KScsICcoLDIwMTgtMDQtMDEpJywgJ2ZvdXInKSwK KygnWzUsNiknLCAnKCwpJywgJ2ZpdmUnKQorOworLS0KKy0tIFVQREFURSB0ZXN0cworLS0K Ky0tIFNldHRpbmcgd2l0aCBhIG1pc3NpbmcgY29sdW1uIGZhaWxzCitVUERBVEUgZm9yX3Bv cnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgaW52YWxpZF9hdCBGUk9NICcyMDE4LTA2 LTAxJyBUTyBVTkJPVU5ERUQKK1NFVCBuYW1lID0gJ2ZvbycKK1dIRVJFIGlkID0gJ1s1LDYp JzsKK0VSUk9SOiAgY29sdW1uIG9yIHBlcmlvZCAiaW52YWxpZF9hdCIgb2YgcmVsYXRpb24g ImZvcl9wb3J0aW9uX29mX3Rlc3QiIGRvZXMgbm90IGV4aXN0CitMSU5FIDI6IEZPUiBQT1JU SU9OIE9GIGludmFsaWRfYXQgRlJPTSAnMjAxOC0wNi0wMScgVE8gVU5CT1VOREVECisgICAg ICAgICAgICAgICAgICAgICAgIF4KKy0tIFNldHRpbmcgdGhlIHJhbmdlIGZhaWxzCitVUERB VEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAn MjAxOC0wNi0wMScgVE8gVU5CT1VOREVECitTRVQgdmFsaWRfYXQgPSAnWzE5OTAtMDEtMDEs MTk5OS0wMS0wMSknCitXSEVSRSBpZCA9ICdbNSw2KSc7CitFUlJPUjogIGNhbid0IGRpcmVj dGx5IGFzc2lnbiB0byAidmFsaWRfYXQiIGluIGEgRk9SIFBPUlRJT04gT0YgdXBkYXRlCitM SU5FIDM6IFNFVCB2YWxpZF9hdCA9ICdbMTk5MC0wMS0wMSwxOTk5LTAxLTAxKScKKyAgICAg ICAgICAgIF4KKy0tIFRoZSB3cm9uZyB0eXBlIGZhaWxzCitVUERBVEUgZm9yX3BvcnRpb25f b2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAxIFRPIDQKK1NFVCBuYW1l ID0gJ25vcGUnCitXSEVSRSBpZCA9ICdbMyw0KSc7CitFUlJPUjogIGZ1bmN0aW9uIHBnX2Nh dGFsb2cudHNyYW5nZShpbnRlZ2VyLCBpbnRlZ2VyKSBkb2VzIG5vdCBleGlzdAorTElORSAy OiBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIDEgVE8gNAorICAgICAgICAgICAgICAg ICAgICAgICBeCitISU5UOiAgTm8gZnVuY3Rpb24gbWF0Y2hlcyB0aGUgZ2l2ZW4gbmFtZSBh bmQgYXJndW1lbnQgdHlwZXMuIFlvdSBtaWdodCBuZWVkIHRvIGFkZCBleHBsaWNpdCB0eXBl IGNhc3RzLgorLS0gU2V0dGluZyB3aXRoIHRpbWVzdGFtcHMgcmV2ZXJzZWQgZmFpbHMKK1VQ REFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9N ICcyMDE4LTA2LTAxJyBUTyAnMjAxOC0wMS0wMScKK1NFVCBuYW1lID0gJ3RocmVlXjEnCitX SEVSRSBpZCA9ICdbMyw0KSc7CitFUlJPUjogIHJhbmdlIGxvd2VyIGJvdW5kIG11c3QgYmUg bGVzcyB0aGFuIG9yIGVxdWFsIHRvIHJhbmdlIHVwcGVyIGJvdW5kCistLSBTZXR0aW5nIHdp dGggYSBzdWJxdWVyeSBmYWlscworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQ T1JUSU9OIE9GIHZhbGlkX2F0IEZST00gKFNFTEVDVCAnMjAxOC0wMS0wMScpIFRPICcyMDE4 LTA2LTAxJworU0VUIG5hbWUgPSAnbm9wZScKK1dIRVJFIGlkID0gJ1szLDQpJzsKK0VSUk9S OiAgY2Fubm90IHVzZSBzdWJxdWVyeSBpbiBGT1IgUE9SVElPTiBPRiBleHByZXNzaW9uCitM SU5FIDI6IEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gKFNFTEVDVCAnMjAxOC0wMS0w MScpIFRPICcyMDE4LS4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IF4KKy0tIFNldHRpbmcgd2l0aCBhIGNvbHVtbiBmYWlscworVVBEQVRFIGZvcl9wb3J0aW9u X29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gbG93ZXIodmFsaWRfYXQp IFRPIFVOQk9VTkRFRAorU0VUIG5hbWUgPSAnbm9wZScKK1dIRVJFIGlkID0gJ1szLDQpJzsK K0VSUk9SOiAgY2Fubm90IHVzZSBjb2x1bW4gcmVmZXJlbmNlIGluIEZPUiBQT1JUSU9OIE9G IGV4cHJlc3Npb24KK0xJTkUgMjogRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSBsb3dl cih2YWxpZF9hdCkgVE8gVU5CT1VOREVECisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXgorLS0gU2V0dGluZyB3aXRoIHRpbWVzdGFtcHMgZXF1YWwgZG9l cyBub3RoaW5nCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0Yg dmFsaWRfYXQgRlJPTSAnMjAxOC0wNC0wMScgVE8gJzIwMTgtMDQtMDEnCitTRVQgbmFtZSA9 ICd0aHJlZV4wJworV0hFUkUgaWQgPSAnWzMsNCknOworLS0gVXBkYXRpbmcgYSBmaW5pdGUv b3BlbiBwb3J0aW9uIHdpdGggYSBmaW5pdGUvb3BlbiB0YXJnZXQKK1VQREFURSBmb3JfcG9y dGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTA2LTAx JyBUTyBVTkJPVU5ERUQKK1NFVCBuYW1lID0gJ3RocmVlXjEnCitXSEVSRSBpZCA9ICdbMyw0 KSc7CistLSBVcGRhdGluZyBhIGZpbml0ZS9vcGVuIHBvcnRpb24gd2l0aCBhbiBvcGVuL2Zp bml0ZSB0YXJnZXQKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBP RiB2YWxpZF9hdCBGUk9NIFVOQk9VTkRFRCBUTyAnMjAxOC0wMy0wMScKK1NFVCBuYW1lID0g J3RocmVlXjInCitXSEVSRSBpZCA9ICdbMyw0KSc7CistLSBVcGRhdGluZyBhbiBvcGVuL2Zp bml0ZSBwb3J0aW9uIHdpdGggYW4gb3Blbi9maW5pdGUgdGFyZ2V0CitVUERBVEUgZm9yX3Bv cnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSBVTkJPVU5ERUQg VE8gJzIwMTgtMDItMDEnCitTRVQgbmFtZSA9ICdmb3VyXjEnCitXSEVSRSBpZCA9ICdbNCw1 KSc7CistLSBVcGRhdGluZyBhbiBvcGVuL2Zpbml0ZSBwb3J0aW9uIHdpdGggYSBmaW5pdGUv b3BlbiB0YXJnZXQKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBP RiB2YWxpZF9hdCBGUk9NICcyMDE3LTAxLTAxJyBUTyBVTkJPVU5ERUQKK1NFVCBuYW1lID0g J2ZvdXJeMicKK1dIRVJFIGlkID0gJ1s0LDUpJzsKKy0tIFVwZGF0aW5nIGEgZmluaXRlL2Zp bml0ZSBwb3J0aW9uIHdpdGggYW4gZXhhY3QgZml0CitVUERBVEUgZm9yX3BvcnRpb25fb2Zf dGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxNy0wMS0wMScgVE8gJzIw MTgtMDItMDEnCitTRVQgbmFtZSA9ICdmb3VyXjMnCitXSEVSRSBpZCA9ICdbNCw1KSc7Cist LSBVcGRhdGluZyBhbiBlbmNsb3NlZCBzcGFuCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVz dAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSBVTkJPVU5ERUQgVE8gVU5CT1VOREVE CitTRVQgbmFtZSA9ICd0d29eMicKK1dIRVJFIGlkID0gJ1syLDMpJzsKKy0tIFVwZGF0aW5n IGFuIG9wZW4vb3BlbiBwb3J0aW9uIHdpdGggYSBmaW5pdGUvZmluaXRlIHRhcmdldAorVVBE QVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00g JzIwMTgtMDEtMDEnIFRPICcyMDE5LTAxLTAxJworU0VUIG5hbWUgPSAnZml2ZV4yJworV0hF UkUgaWQgPSAnWzUsNiknOworLS0gVXBkYXRpbmcgYW4gZW5jbG9zZWQgc3BhbiB3aXRoIHNl cGFyYXRlIHByb3RydWRpbmcgc3BhbnMKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitG T1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE3LTAxLTAxJyBUTyAnMjAyMC0wMS0w MScKK1NFVCBuYW1lID0gJ2ZpdmVeMycKK1dIRVJFIGlkID0gJ1s1LDYpJzsKKy0tIFVwZGF0 aW5nIG11bHRpcGxlIGVuY2xvc2VkIHNwYW5zCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVz dAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSBOVUxMIFRPIE5VTEwKK1NFVCBuYW1l ID0gJ29uZV4yJworV0hFUkUgaWQgPSAnWzEsMiknOworLS0gVXBkYXRpbmcgd2l0aCBhIHNo aWZ0L3JlZHVjZSBjb25mbGljdAorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQ T1JUSU9OIE9GIHZhbGlkX2F0CisgIEZST00gJzIwMTgtMDMtMDEnIEFUIFRJTUUgWk9ORSBJ TlRFUlZBTCAnMScgSE9VUiBUTyBNSU5VVEUKKyAgVE8gJzIwMTktMDEtMDEnCitTRVQgbmFt ZSA9ICdvbmVeMycKK1dIRVJFIGlkID0gJ1sxLDIpJzsKK1VQREFURSBmb3JfcG9ydGlvbl9v Zl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdAorICBGUk9NICcyMDE4LTAzLTAxJyBB VCBUSU1FIFpPTkUgSU5URVJWQUwgJzInIEhPVVIKKyAgVE8gJzIwMTktMDEtMDEnCitTRVQg bmFtZSA9ICdvbmVeNCcKK1dIRVJFIGlkID0gJ1sxLDIpJzsKK0VSUk9SOiAgc3ludGF4IGVy cm9yIGF0IG9yIG5lYXIgIicyMDE5LTAxLTAxJyIKK0xJTkUgNDogICBUTyAnMjAxOS0wMS0w MScKKyAgICAgICAgICAgICBeCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBP UlRJT04gT0YgdmFsaWRfYXQKKyAgRlJPTSAoJzIwMTgtMDMtMDEnIEFUIFRJTUUgWk9ORSBJ TlRFUlZBTCAnMicgSE9VUikKKyAgVE8gJzIwMTktMDEtMDEnCitTRVQgbmFtZSA9ICdvbmVe NCcKK1dIRVJFIGlkID0gJ1sxLDIpJzsKKy0tIFVwZGF0aW5nIHRoZSBub24tcmFuZ2UgcGFy dCBvZiB0aGUgUEs6CitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04g T0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wMi0xNScgVE8gTlVMTAorU0VUIGlkID0gJ1s2LDcp JworV0hFUkUgaWQgPSAnWzEsMiknOworLS0gVVBEQVRFIHdpdGggbm8gV0hFUkUgY2xhdXNl CitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQg RlJPTSAnMjAzMC0wMS0wMScgVE8gTlVMTAorU0VUIG5hbWUgPSBuYW1lIHx8ICcqJzsKK1NF TEVDVCAqIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdCBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7 CisgIGlkICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAg ICAgICAgICAgICAgIHwgICBuYW1lICAgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgWzEs MikgfCBbIlR1ZSBKYW4gMDIgMDA6MDA6MDAgMjAxOCIsIlNhdCBGZWIgMDMgMDA6MDA6MDAg MjAxOCIpIHwgb25lXjIKKyBbMSwyKSB8IFsiU2F0IEZlYiAwMyAwMDowMDowMCAyMDE4Iiwi VGh1IEZlYiAxNSAwMDowMDowMCAyMDE4IikgfCBvbmVeMgorIFsyLDMpIHwgWyJNb24gSmFu IDAxIDAwOjAwOjAwIDIwMTgiLCJGcmkgSmFuIDA1IDAwOjAwOjAwIDIwMTgiKSB8IHR3b14y CisgWzMsNCkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlRodSBNYXIgMDEgMDA6 MDA6MDAgMjAxOCIpIHwgdGhyZWVeMgorIFszLDQpIHwgWyJUaHUgTWFyIDAxIDAwOjAwOjAw IDIwMTgiLCJGcmkgSnVuIDAxIDAwOjAwOjAwIDIwMTgiKSB8IHRocmVlCisgWzMsNCkgfCBb IkZyaSBKdW4gMDEgMDA6MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAzMCIp IHwgdGhyZWVeMQorIFszLDQpIHwgWyJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMzAiLCkgICAg ICAgICAgICAgICAgICAgICAgICAgICB8IHRocmVlXjEqCisgWzQsNSkgfCAoLCJTdW4gSmFu IDAxIDAwOjAwOjAwIDIwMTciKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZm91cl4x CisgWzQsNSkgfCBbIlN1biBKYW4gMDEgMDA6MDA6MDAgMjAxNyIsIlRodSBGZWIgMDEgMDA6 MDA6MDAgMjAxOCIpIHwgZm91cl4zCisgWzQsNSkgfCBbIlRodSBGZWIgMDEgMDA6MDA6MDAg MjAxOCIsIlN1biBBcHIgMDEgMDA6MDA6MDAgMjAxOCIpIHwgZm91cl4yCisgWzUsNikgfCAo LCJTdW4gSmFuIDAxIDAwOjAwOjAwIDIwMTciKSAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgZml2ZQorIFs1LDYpIHwgWyJTdW4gSmFuIDAxIDAwOjAwOjAwIDIwMTciLCJNb24gSmFu IDAxIDAwOjAwOjAwIDIwMTgiKSB8IGZpdmVeMworIFs1LDYpIHwgWyJNb24gSmFuIDAxIDAw OjAwOjAwIDIwMTgiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiKSB8IGZpdmVeMworIFs1 LDYpIHwgWyJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiLCJXZWQgSmFuIDAxIDAwOjAwOjAw IDIwMjAiKSB8IGZpdmVeMworIFs1LDYpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAi LCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMzAiKSB8IGZpdmUKKyBbNSw2KSB8IFsiVHVlIEph biAwMSAwMDowMDowMCAyMDMwIiwpICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmaXZl KgorIFs2LDcpIHwgWyJUaHUgRmViIDE1IDAwOjAwOjAwIDIwMTgiLCJUaHUgTWFyIDAxIDA4 OjAxOjAwIDIwMTgiKSB8IG9uZV4yCisgWzYsNykgfCBbIlRodSBNYXIgMDEgMDg6MDE6MDAg MjAxOCIsIlRodSBNYXIgMDEgMTA6MDA6MDAgMjAxOCIpIHwgb25lXjMKKyBbNiw3KSB8IFsi VGh1IE1hciAwMSAxMDowMDowMCAyMDE4IiwiU2F0IE1hciAwMyAwMDowMDowMCAyMDE4Iikg fCBvbmVeNAorIFs2LDcpIHwgWyJTYXQgTWFyIDAzIDAwOjAwOjAwIDIwMTgiLCJXZWQgQXBy IDA0IDAwOjAwOjAwIDIwMTgiKSB8IG9uZV40CisoMjAgcm93cykKKworLS0KKy0tIERFTEVU RSB0ZXN0cworLS0KKy0tIERlbGV0aW5nIHdpdGggYSBtaXNzaW5nIGNvbHVtbiBmYWlscwor REVMRVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgaW52YWxp ZF9hdCBGUk9NICcyMDE4LTA2LTAxJyBUTyBOVUxMCitXSEVSRSBpZCA9ICdbNSw2KSc7CitF UlJPUjogIGNvbHVtbiBvciBwZXJpb2QgImludmFsaWRfYXQiIG9mIHJlbGF0aW9uICJmb3Jf cG9ydGlvbl9vZl90ZXN0IiBkb2VzIG5vdCBleGlzdAorTElORSAyOiBGT1IgUE9SVElPTiBP RiBpbnZhbGlkX2F0IEZST00gJzIwMTgtMDYtMDEnIFRPIE5VTEwKKyAgICAgICAgICAgICAg ICAgICAgICAgXgorLS0gRGVsZXRpbmcgd2l0aCB0aW1lc3RhbXBzIHJldmVyc2VkIGZhaWxz CitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxp ZF9hdCBGUk9NICcyMDE4LTA2LTAxJyBUTyAnMjAxOC0wMS0wMScKK1dIRVJFIGlkID0gJ1sz LDQpJzsKK0VSUk9SOiAgcmFuZ2UgbG93ZXIgYm91bmQgbXVzdCBiZSBsZXNzIHRoYW4gb3Ig ZXF1YWwgdG8gcmFuZ2UgdXBwZXIgYm91bmQKKy0tIERlbGV0aW5nIHdpdGggdGltZXN0YW1w cyBlcXVhbCBkb2VzIG5vdGhpbmcKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QK K0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDQtMDEnIFRPICcyMDE4LTA0 LTAxJworV0hFUkUgaWQgPSAnWzMsNCknOworLS0gRGVsZXRpbmcgd2l0aCBhIGNsb3NlZC9j bG9zZWQgdGFyZ2V0CitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9S VElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTA2LTAxJyBUTyAnMjAyMC0wNi0wMScKK1dI RVJFIGlkID0gJ1s1LDYpJzsKKy0tIERlbGV0aW5nIHdpdGggYSBjbG9zZWQvb3BlbiB0YXJn ZXQKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZh bGlkX2F0IEZST00gJzIwMTgtMDQtMDEnIFRPIE5VTEwKK1dIRVJFIGlkID0gJ1szLDQpJzsK Ky0tIERlbGV0aW5nIHdpdGggYW4gb3Blbi9jbG9zZWQgdGFyZ2V0CitERUxFVEUgRlJPTSBm b3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIE5VTEwg VE8gJzIwMTgtMDItMDgnCitXSEVSRSBpZCA9ICdbMSwyKSc7CistLSBEZWxldGluZyB3aXRo IGFuIG9wZW4vb3BlbiB0YXJnZXQKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QK K0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gTlVMTCBUTyBOVUxMCitXSEVSRSBpZCA9 ICdbNiw3KSc7CistLSBERUxFVEUgd2l0aCBubyBXSEVSRSBjbGF1c2UKK0RFTEVURSBGUk9N IGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIw MjUtMDEtMDEnIFRPIE5VTEw7CitTRUxFQ1QgKiBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3Qg T1JERVIgQlkgaWQsIHZhbGlkX2F0OworICBpZCAgIHwgICAgICAgICAgICAgICAgICAgICAg ICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8ICBuYW1lICAgCistLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0KKyBbMSwyKSB8IFsiVGh1IEZlYiAwOCAwMDowMDowMCAyMDE4Iiwi VGh1IEZlYiAxNSAwMDowMDowMCAyMDE4IikgfCBvbmVeMgorIFsyLDMpIHwgWyJNb24gSmFu IDAxIDAwOjAwOjAwIDIwMTgiLCJGcmkgSmFuIDA1IDAwOjAwOjAwIDIwMTgiKSB8IHR3b14y CisgWzMsNCkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlRodSBNYXIgMDEgMDA6 MDA6MDAgMjAxOCIpIHwgdGhyZWVeMgorIFszLDQpIHwgWyJUaHUgTWFyIDAxIDAwOjAwOjAw IDIwMTgiLCJTdW4gQXByIDAxIDAwOjAwOjAwIDIwMTgiKSB8IHRocmVlCisgWzQsNSkgfCAo LCJTdW4gSmFuIDAxIDAwOjAwOjAwIDIwMTciKSAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgZm91cl4xCisgWzQsNSkgfCBbIlN1biBKYW4gMDEgMDA6MDA6MDAgMjAxNyIsIlRodSBG ZWIgMDEgMDA6MDA6MDAgMjAxOCIpIHwgZm91cl4zCisgWzQsNSkgfCBbIlRodSBGZWIgMDEg MDA6MDA6MDAgMjAxOCIsIlN1biBBcHIgMDEgMDA6MDA6MDAgMjAxOCIpIHwgZm91cl4yCisg WzUsNikgfCAoLCJTdW4gSmFuIDAxIDAwOjAwOjAwIDIwMTciKSAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgZml2ZQorIFs1LDYpIHwgWyJTdW4gSmFuIDAxIDAwOjAwOjAwIDIwMTci LCJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiKSB8IGZpdmVeMworIFs1LDYpIHwgWyJNb24g SmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJGcmkgSnVuIDAxIDAwOjAwOjAwIDIwMTgiKSB8IGZp dmVeMworIFs1LDYpIHwgWyJNb24gSnVuIDAxIDAwOjAwOjAwIDIwMjAiLCJXZWQgSmFuIDAx IDAwOjAwOjAwIDIwMjUiKSB8IGZpdmUKKygxMSByb3dzKQorCistLSBVUERBVEUgLi4uIFJF VFVSTklORyByZXR1cm5zIG9ubHkgdGhlIHVwZGF0ZWQgdmFsdWVzIChub3QgdGhlIGluc2Vy dGVkIHNpZGUgdmFsdWVzKQorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JU SU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDItMDEnIFRPICcyMDE4LTAyLTE1JworU0VU IG5hbWUgPSAndGhyZWVeMycKK1dIRVJFIGlkID0gJ1szLDQpJworUkVUVVJOSU5HICo7Cisg IGlkICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAg ICAgICAgICAgIHwgIG5hbWUgICAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLQorIFszLDQpIHwg WyJUaHUgRmViIDAxIDAwOjAwOjAwIDIwMTgiLCJUaHUgRmViIDE1IDAwOjAwOjAwIDIwMTgi KSB8IHRocmVlXjMKKygxIHJvdykKKworLS0gdGVzdCB0aGF0IHdlIHJ1biB0cmlnZ2VycyBv biB0aGUgVVBEQVRFL0RFTEVURWQgcm93IGFuZCB0aGUgSU5TRVJUZWQgcm93cworQ1JFQVRF IEZVTkNUSU9OIGZvcl9wb3J0aW9uX29mX3RyaWdnZXIoKQorUkVUVVJOUyB0cmlnZ2VyCitB UworJCQKK0JFR0lOCisgIFJBSVNFIE5PVElDRSAnJSAlICUgb2YgJScsIFRHX1dIRU4sIFRH X09QLCBORVcudmFsaWRfYXQsIE9MRC52YWxpZF9hdDsKKyAgSUYgVEdfT1AgPSAnREVMRVRF JyBUSEVOCisgICAgUkVUVVJOIE9MRDsKKyAgRUxTRQorICAgIFJFVFVSTiBORVc7CisgIEVO RCBJRjsKK0VORDsKKyQkCitMQU5HVUFHRSBwbHBnc3FsOworQ1JFQVRFIFRSSUdHRVIgdHJn X2Zvcl9wb3J0aW9uX29mX2JlZm9yZV9pbnNlcnQKKyAgQkVGT1JFIElOU0VSVCBPTiBmb3Jf cG9ydGlvbl9vZl90ZXN0CisgIEZPUiBFQUNIIFJPVworICBFWEVDVVRFIEZVTkNUSU9OIGZv cl9wb3J0aW9uX29mX3RyaWdnZXIoKTsKK0NSRUFURSBUUklHR0VSIHRyZ19mb3JfcG9ydGlv bl9vZl9hZnRlcl9pbnNlcnQKKyAgQUZURVIgSU5TRVJUIE9OIGZvcl9wb3J0aW9uX29mX3Rl c3QKKyAgRk9SIEVBQ0ggUk9XCisgIEVYRUNVVEUgRlVOQ1RJT04gZm9yX3BvcnRpb25fb2Zf dHJpZ2dlcigpOworQ1JFQVRFIFRSSUdHRVIgdHJnX2Zvcl9wb3J0aW9uX29mX2JlZm9yZV91 cGRhdGUKKyAgQkVGT1JFIFVQREFURSBPTiBmb3JfcG9ydGlvbl9vZl90ZXN0CisgIEZPUiBF QUNIIFJPVworICBFWEVDVVRFIEZVTkNUSU9OIGZvcl9wb3J0aW9uX29mX3RyaWdnZXIoKTsK K0NSRUFURSBUUklHR0VSIHRyZ19mb3JfcG9ydGlvbl9vZl9hZnRlcl91cGRhdGUKKyAgQUZU RVIgVVBEQVRFIE9OIGZvcl9wb3J0aW9uX29mX3Rlc3QKKyAgRk9SIEVBQ0ggUk9XCisgIEVY RUNVVEUgRlVOQ1RJT04gZm9yX3BvcnRpb25fb2ZfdHJpZ2dlcigpOworQ1JFQVRFIFRSSUdH RVIgdHJnX2Zvcl9wb3J0aW9uX29mX2JlZm9yZV9kZWxldGUKKyAgQkVGT1JFIERFTEVURSBP TiBmb3JfcG9ydGlvbl9vZl90ZXN0CisgIEZPUiBFQUNIIFJPVworICBFWEVDVVRFIEZVTkNU SU9OIGZvcl9wb3J0aW9uX29mX3RyaWdnZXIoKTsKK0NSRUFURSBUUklHR0VSIHRyZ19mb3Jf cG9ydGlvbl9vZl9hZnRlcl9kZWxldGUKKyAgQUZURVIgREVMRVRFIE9OIGZvcl9wb3J0aW9u X29mX3Rlc3QKKyAgRk9SIEVBQ0ggUk9XCisgIEVYRUNVVEUgRlVOQ1RJT04gZm9yX3BvcnRp b25fb2ZfdHJpZ2dlcigpOworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JU SU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMjEtMDEtMDEnIFRPICcyMDIyLTAxLTAxJworU0VU IG5hbWUgPSAnZml2ZV40JworV0hFUkUgaWQgPSAnWzUsNiknOworTk9USUNFOiAgQkVGT1JF IFVQREFURSBbIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIsIlNhdCBKYW4gMDEgMDA6MDA6 MDAgMjAyMiIpIG9mIFsiTW9uIEp1biAwMSAwMDowMDowMCAyMDIwIiwiV2VkIEphbiAwMSAw MDowMDowMCAyMDI1IikKK05PVElDRTogIEJFRk9SRSBJTlNFUlQgWyJNb24gSnVuIDAxIDAw OjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSBvZiA8TlVMTD4KK05P VElDRTogIEJFRk9SRSBJTlNFUlQgWyJTYXQgSmFuIDAxIDAwOjAwOjAwIDIwMjIiLCJXZWQg SmFuIDAxIDAwOjAwOjAwIDIwMjUiKSBvZiA8TlVMTD4KK05PVElDRTogIEFGVEVSIElOU0VS VCBbIk1vbiBKdW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAy MSIpIG9mIDxOVUxMPgorTk9USUNFOiAgQUZURVIgSU5TRVJUIFsiU2F0IEphbiAwMSAwMDow MDowMCAyMDIyIiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDI1Iikgb2YgPE5VTEw+CitOT1RJ Q0U6ICBBRlRFUiBVUERBVEUgWyJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiLCJTYXQgSmFu IDAxIDAwOjAwOjAwIDIwMjIiKSBvZiBbIk1vbiBKdW4gMDEgMDA6MDA6MDAgMjAyMCIsIldl ZCBKYW4gMDEgMDA6MDA6MDAgMjAyNSIpCitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90 ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDIzLTAxLTAxJyBUTyAnMjAy NC0wMS0wMScKK1dIRVJFIGlkID0gJ1s1LDYpJzsKK05PVElDRTogIEJFRk9SRSBERUxFVEUg PE5VTEw+IG9mIFsiU2F0IEphbiAwMSAwMDowMDowMCAyMDIyIiwiV2VkIEphbiAwMSAwMDow MDowMCAyMDI1IikKK05PVElDRTogIEJFRk9SRSBJTlNFUlQgWyJTYXQgSmFuIDAxIDAwOjAw OjAwIDIwMjIiLCJTdW4gSmFuIDAxIDAwOjAwOjAwIDIwMjMiKSBvZiA8TlVMTD4KK05PVElD RTogIEJFRk9SRSBJTlNFUlQgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMjQiLCJXZWQgSmFu IDAxIDAwOjAwOjAwIDIwMjUiKSBvZiA8TlVMTD4KK05PVElDRTogIEFGVEVSIElOU0VSVCBb IlNhdCBKYW4gMDEgMDA6MDA6MDAgMjAyMiIsIlN1biBKYW4gMDEgMDA6MDA6MDAgMjAyMyIp IG9mIDxOVUxMPgorTk9USUNFOiAgQUZURVIgSU5TRVJUIFsiTW9uIEphbiAwMSAwMDowMDow MCAyMDI0IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDI1Iikgb2YgPE5VTEw+CitOT1RJQ0U6 ICBBRlRFUiBERUxFVEUgPE5VTEw+IG9mIFsiU2F0IEphbiAwMSAwMDowMDowMCAyMDIyIiwi V2VkIEphbiAwMSAwMDowMDowMCAyMDI1IikKK1NFTEVDVCAqIEZST00gZm9yX3BvcnRpb25f b2ZfdGVzdCBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CisgIGlkICAgfCAgICAgICAgICAgICAg ICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgIG5hbWUgICAK Ky0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLQorIFsxLDIpIHwgWyJUaHUgRmViIDA4IDAwOjAwOjAw IDIwMTgiLCJUaHUgRmViIDE1IDAwOjAwOjAwIDIwMTgiKSB8IG9uZV4yCisgWzIsMykgfCBb Ik1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIkZyaSBKYW4gMDUgMDA6MDA6MDAgMjAxOCIp IHwgdHdvXjIKKyBbMyw0KSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVGh1IEZl YiAwMSAwMDowMDowMCAyMDE4IikgfCB0aHJlZV4yCisgWzMsNCkgfCBbIlRodSBGZWIgMDEg MDA6MDA6MDAgMjAxOCIsIlRodSBGZWIgMTUgMDA6MDA6MDAgMjAxOCIpIHwgdGhyZWVeMwor IFszLDQpIHwgWyJUaHUgRmViIDE1IDAwOjAwOjAwIDIwMTgiLCJUaHUgTWFyIDAxIDAwOjAw OjAwIDIwMTgiKSB8IHRocmVlXjIKKyBbMyw0KSB8IFsiVGh1IE1hciAwMSAwMDowMDowMCAy MDE4IiwiU3VuIEFwciAwMSAwMDowMDowMCAyMDE4IikgfCB0aHJlZQorIFs0LDUpIHwgKCwi U3VuIEphbiAwMSAwMDowMDowMCAyMDE3IikgICAgICAgICAgICAgICAgICAgICAgICAgICB8 IGZvdXJeMQorIFs0LDUpIHwgWyJTdW4gSmFuIDAxIDAwOjAwOjAwIDIwMTciLCJUaHUgRmVi IDAxIDAwOjAwOjAwIDIwMTgiKSB8IGZvdXJeMworIFs0LDUpIHwgWyJUaHUgRmViIDAxIDAw OjAwOjAwIDIwMTgiLCJTdW4gQXByIDAxIDAwOjAwOjAwIDIwMTgiKSB8IGZvdXJeMgorIFs1 LDYpIHwgKCwiU3VuIEphbiAwMSAwMDowMDowMCAyMDE3IikgICAgICAgICAgICAgICAgICAg ICAgICAgICB8IGZpdmUKKyBbNSw2KSB8IFsiU3VuIEphbiAwMSAwMDowMDowMCAyMDE3Iiwi TW9uIEphbiAwMSAwMDowMDowMCAyMDE4IikgfCBmaXZlXjMKKyBbNSw2KSB8IFsiTW9uIEph biAwMSAwMDowMDowMCAyMDE4IiwiRnJpIEp1biAwMSAwMDowMDowMCAyMDE4IikgfCBmaXZl XjMKKyBbNSw2KSB8IFsiTW9uIEp1biAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAw MDowMDowMCAyMDIxIikgfCBmaXZlCisgWzUsNikgfCBbIkZyaSBKYW4gMDEgMDA6MDA6MDAg MjAyMSIsIlNhdCBKYW4gMDEgMDA6MDA6MDAgMjAyMiIpIHwgZml2ZV40CisgWzUsNikgfCBb IlNhdCBKYW4gMDEgMDA6MDA6MDAgMjAyMiIsIlN1biBKYW4gMDEgMDA6MDA6MDAgMjAyMyIp IHwgZml2ZQorIFs1LDYpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMjQiLCJXZWQgSmFu IDAxIDAwOjAwOjAwIDIwMjUiKSB8IGZpdmUKKygxNiByb3dzKQorCistLQorLS0gTm93IHJl LXJ1biB0aGUgc2FtZSB0ZXN0cyBidXQgd2l0aCBhIFBFUklPRCBpbnN0ZWFkIG9mIGEgcmFu Z2U6CistLQorRFJPUCBUQUJMRSBmb3JfcG9ydGlvbl9vZl90ZXN0OworLS0gV29ya3Mgb24g bm9uLVBLIGNvbHVtbnMKK0NSRUFURSBUQUJMRSBmb3JfcG9ydGlvbl9vZl90ZXN0ICgKKyAg aWQgaW50NHJhbmdlLAorICB2YWxpZF9mcm9tIHRpbWVzdGFtcCwKKyAgdmFsaWRfdGlsIHRp bWVzdGFtcCwKKyAgUEVSSU9EIEZPUiB2YWxpZF9hdCAodmFsaWRfZnJvbSwgdmFsaWRfdGls KSwKKyAgbmFtZSB0ZXh0IE5PVCBOVUxMCispOworSU5TRVJUIElOVE8gZm9yX3BvcnRpb25f b2ZfdGVzdCBWQUxVRVMKKygnWzEsMiknLCAnMjAxOC0wMS0wMicsICcyMDIwLTAxLTAxJywg J29uZScpOworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZh bGlkX2F0IEZST00gJzIwMTgtMDEtMTUnIFRPICcyMDE5LTAxLTAxJworU0VUIG5hbWUgPSAn Zm9vJzsKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9G IHZhbGlkX2F0IEZST00gJzIwMTktMDEtMTUnIFRPIFVOQk9VTkRFRDsKK1NFTEVDVCAqIEZS T00gZm9yX3BvcnRpb25fb2ZfdGVzdDsKKyAgaWQgICB8ICAgICAgICB2YWxpZF9mcm9tICAg ICAgICB8ICAgICAgICB2YWxpZF90aWwgICAgICAgICB8IG5hbWUgCistLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LQorIFsxLDIpIHwgTW9uIEphbiAxNSAwMDowMDowMCAyMDE4IHwgVHVlIEphbiAwMSAwMDow MDowMCAyMDE5IHwgZm9vCisgWzEsMikgfCBUdWUgSmFuIDAyIDAwOjAwOjAwIDIwMTggfCBN b24gSmFuIDE1IDAwOjAwOjAwIDIwMTggfCBvbmUKKyBbMSwyKSB8IFR1ZSBKYW4gMDEgMDA6 MDA6MDAgMjAxOSB8IFR1ZSBKYW4gMTUgMDA6MDA6MDAgMjAxOSB8IG9uZQorKDMgcm93cykK KworLS0gV29ya3Mgb24gbW9yZSB0aGFuIG9uZSBwZXJpb2QKK0RST1AgVEFCTEUgZm9yX3Bv cnRpb25fb2ZfdGVzdDsKK0NSRUFURSBUQUJMRSBmb3JfcG9ydGlvbl9vZl90ZXN0ICgKKyAg aWQgaW50NHJhbmdlLAorICB2YWxpZDFfZnJvbSB0aW1lc3RhbXAsCisgIHZhbGlkMV90aWwg dGltZXN0YW1wLAorICB2YWxpZDJfZnJvbSB0aW1lc3RhbXAsCisgIHZhbGlkMl90aWwgdGlt ZXN0YW1wLAorICBQRVJJT0QgRk9SIHZhbGlkMV9hdCAodmFsaWQxX2Zyb20sIHZhbGlkMV90 aWwpLAorICBQRVJJT0QgRk9SIHZhbGlkMl9hdCAodmFsaWQyX2Zyb20sIHZhbGlkMl90aWwp LAorICBuYW1lIHRleHQgTk9UIE5VTEwKKyk7CitJTlNFUlQgSU5UTyBmb3JfcG9ydGlvbl9v Zl90ZXN0IFZBTFVFUworKCdbMSwyKScsICcyMDE4LTAxLTAyJywgJzIwMTgtMDItMDMnLCAn MjAxNS0wMS0wMScsICcyMDI1LTAxLTAxJywgJ29uZScpOworVVBEQVRFIGZvcl9wb3J0aW9u X29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkMV9hdCBGUk9NICcyMDE4LTAxLTE1JyBU TyBVTkJPVU5ERUQKK1NFVCBuYW1lID0gJ2Zvbyc7CitTRUxFQ1QgKiBGUk9NIGZvcl9wb3J0 aW9uX29mX3Rlc3Q7CisgIGlkICAgfCAgICAgICB2YWxpZDFfZnJvbSAgICAgICAgfCAgICAg ICAgdmFsaWQxX3RpbCAgICAgICAgfCAgICAgICB2YWxpZDJfZnJvbSAgICAgICAgfCAgICAg ICAgdmFsaWQyX3RpbCAgICAgICAgfCBuYW1lIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0KKyBbMSwyKSB8 IE1vbiBKYW4gMTUgMDA6MDA6MDAgMjAxOCB8IFNhdCBGZWIgMDMgMDA6MDA6MDAgMjAxOCB8 IFRodSBKYW4gMDEgMDA6MDA6MDAgMjAxNSB8IFdlZCBKYW4gMDEgMDA6MDA6MDAgMjAyNSB8 IGZvbworIFsxLDIpIHwgVHVlIEphbiAwMiAwMDowMDowMCAyMDE4IHwgTW9uIEphbiAxNSAw MDowMDowMCAyMDE4IHwgVGh1IEphbiAwMSAwMDowMDowMCAyMDE1IHwgV2VkIEphbiAwMSAw MDowMDowMCAyMDI1IHwgb25lCisoMiByb3dzKQorCitVUERBVEUgZm9yX3BvcnRpb25fb2Zf dGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWQyX2F0IEZST00gJzIwMTgtMDEtMTUnIFRPIFVO Qk9VTkRFRAorU0VUIG5hbWUgPSAnYmFyJzsKK1NFTEVDVCAqIEZST00gZm9yX3BvcnRpb25f b2ZfdGVzdDsKKyAgaWQgICB8ICAgICAgIHZhbGlkMV9mcm9tICAgICAgICB8ICAgICAgICB2 YWxpZDFfdGlsICAgICAgICB8ICAgICAgIHZhbGlkMl9mcm9tICAgICAgICB8ICAgICAgICB2 YWxpZDJfdGlsICAgICAgICB8IG5hbWUgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLQorIFsxLDIpIHwgTW9u IEphbiAxNSAwMDowMDowMCAyMDE4IHwgU2F0IEZlYiAwMyAwMDowMDowMCAyMDE4IHwgTW9u IEphbiAxNSAwMDowMDowMCAyMDE4IHwgV2VkIEphbiAwMSAwMDowMDowMCAyMDI1IHwgYmFy CisgWzEsMikgfCBNb24gSmFuIDE1IDAwOjAwOjAwIDIwMTggfCBTYXQgRmViIDAzIDAwOjAw OjAwIDIwMTggfCBUaHUgSmFuIDAxIDAwOjAwOjAwIDIwMTUgfCBNb24gSmFuIDE1IDAwOjAw OjAwIDIwMTggfCBmb28KKyBbMSwyKSB8IFR1ZSBKYW4gMDIgMDA6MDA6MDAgMjAxOCB8IE1v biBKYW4gMTUgMDA6MDA6MDAgMjAxOCB8IE1vbiBKYW4gMTUgMDA6MDA6MDAgMjAxOCB8IFdl ZCBKYW4gMDEgMDA6MDA6MDAgMjAyNSB8IGJhcgorIFsxLDIpIHwgVHVlIEphbiAwMiAwMDow MDowMCAyMDE4IHwgTW9uIEphbiAxNSAwMDowMDowMCAyMDE4IHwgVGh1IEphbiAwMSAwMDow MDowMCAyMDE1IHwgTW9uIEphbiAxNSAwMDowMDowMCAyMDE4IHwgb25lCisoNCByb3dzKQor CitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxp ZDFfYXQgRlJPTSAnMjAxOC0wMS0yMCcgVE8gVU5CT1VOREVEOworU0VMRUNUICogRlJPTSBm b3JfcG9ydGlvbl9vZl90ZXN0OworICBpZCAgIHwgICAgICAgdmFsaWQxX2Zyb20gICAgICAg IHwgICAgICAgIHZhbGlkMV90aWwgICAgICAgIHwgICAgICAgdmFsaWQyX2Zyb20gICAgICAg IHwgICAgICAgIHZhbGlkMl90aWwgICAgICAgIHwgbmFtZSAKKy0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tCisg WzEsMikgfCBUdWUgSmFuIDAyIDAwOjAwOjAwIDIwMTggfCBNb24gSmFuIDE1IDAwOjAwOjAw IDIwMTggfCBNb24gSmFuIDE1IDAwOjAwOjAwIDIwMTggfCBXZWQgSmFuIDAxIDAwOjAwOjAw IDIwMjUgfCBiYXIKKyBbMSwyKSB8IFR1ZSBKYW4gMDIgMDA6MDA6MDAgMjAxOCB8IE1vbiBK YW4gMTUgMDA6MDA6MDAgMjAxOCB8IFRodSBKYW4gMDEgMDA6MDA6MDAgMjAxNSB8IE1vbiBK YW4gMTUgMDA6MDA6MDAgMjAxOCB8IG9uZQorIFsxLDIpIHwgTW9uIEphbiAxNSAwMDowMDow MCAyMDE4IHwgU2F0IEphbiAyMCAwMDowMDowMCAyMDE4IHwgTW9uIEphbiAxNSAwMDowMDow MCAyMDE4IHwgV2VkIEphbiAwMSAwMDowMDowMCAyMDI1IHwgYmFyCisgWzEsMikgfCBNb24g SmFuIDE1IDAwOjAwOjAwIDIwMTggfCBTYXQgSmFuIDIwIDAwOjAwOjAwIDIwMTggfCBUaHUg SmFuIDAxIDAwOjAwOjAwIDIwMTUgfCBNb24gSmFuIDE1IDAwOjAwOjAwIDIwMTggfCBmb28K Kyg0IHJvd3MpCisKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JU SU9OIE9GIHZhbGlkMl9hdCBGUk9NICcyMDE4LTAxLTIwJyBUTyBVTkJPVU5ERUQ7CitTRUxF Q1QgKiBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3Q7CisgIGlkICAgfCAgICAgICB2YWxpZDFf ZnJvbSAgICAgICAgfCAgICAgICAgdmFsaWQxX3RpbCAgICAgICAgfCAgICAgICB2YWxpZDJf ZnJvbSAgICAgICAgfCAgICAgICAgdmFsaWQyX3RpbCAgICAgICAgfCBuYW1lIAorLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0KKyBbMSwyKSB8IFR1ZSBKYW4gMDIgMDA6MDA6MDAgMjAxOCB8IE1vbiBKYW4g MTUgMDA6MDA6MDAgMjAxOCB8IFRodSBKYW4gMDEgMDA6MDA6MDAgMjAxNSB8IE1vbiBKYW4g MTUgMDA6MDA6MDAgMjAxOCB8IG9uZQorIFsxLDIpIHwgTW9uIEphbiAxNSAwMDowMDowMCAy MDE4IHwgU2F0IEphbiAyMCAwMDowMDowMCAyMDE4IHwgVGh1IEphbiAwMSAwMDowMDowMCAy MDE1IHwgTW9uIEphbiAxNSAwMDowMDowMCAyMDE4IHwgZm9vCisgWzEsMikgfCBUdWUgSmFu IDAyIDAwOjAwOjAwIDIwMTggfCBNb24gSmFuIDE1IDAwOjAwOjAwIDIwMTggfCBNb24gSmFu IDE1IDAwOjAwOjAwIDIwMTggfCBTYXQgSmFuIDIwIDAwOjAwOjAwIDIwMTggfCBiYXIKKyBb MSwyKSB8IE1vbiBKYW4gMTUgMDA6MDA6MDAgMjAxOCB8IFNhdCBKYW4gMjAgMDA6MDA6MDAg MjAxOCB8IE1vbiBKYW4gMTUgMDA6MDA6MDAgMjAxOCB8IFNhdCBKYW4gMjAgMDA6MDA6MDAg MjAxOCB8IGJhcgorKDQgcm93cykKKworRFJPUCBUQUJMRSBmb3JfcG9ydGlvbl9vZl90ZXN0 OworQ1JFQVRFIFRBQkxFIGZvcl9wb3J0aW9uX29mX3Rlc3QgKAorICBpZCBpbnQ0cmFuZ2Ug Tk9UIE5VTEwsCisgIHZhbGlkX2Zyb20gdGltZXN0YW1wLAorICB2YWxpZF90aWwgdGltZXN0 YW1wLAorICBQRVJJT0QgRk9SIHZhbGlkX2F0ICh2YWxpZF9mcm9tLCB2YWxpZF90aWwpLAor ICBuYW1lIHRleHQgTk9UIE5VTEwsCisJQ09OU1RSQUlOVCBmb3JfcG9ydGlvbl9vZl9wayBQ UklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworSU5TRVJU IElOVE8gZm9yX3BvcnRpb25fb2ZfdGVzdAorVkFMVUVTCisoJ1sxLDIpJywgJzIwMTgtMDEt MDInLCAnMjAxOC0wMi0wMycsICdvbmUnKSwKKygnWzEsMiknLCAnMjAxOC0wMi0wMycsICcy MDE4LTAzLTAzJywgJ29uZScpLAorKCdbMSwyKScsICcyMDE4LTAzLTAzJywgJzIwMTgtMDQt MDQnLCAnb25lJyksCisoJ1syLDMpJywgJzIwMTgtMDEtMDEnLCAnMjAxOC0wMS0wNScsICd0 d28nKSwKKygnWzMsNCknLCAnMjAxOC0wMS0wMScsIG51bGwsICd0aHJlZScpLAorKCdbNCw1 KScsIG51bGwsICcyMDE4LTA0LTAxJywgJ2ZvdXInKSwKKygnWzUsNiknLCBudWxsLCBudWxs LCAnZml2ZScpCis7CistLQorLS0gVVBEQVRFIHRlc3RzCistLQorLS0gU2V0dGluZyB3aXRo IGEgbWlzc2luZyBjb2x1bW4gZmFpbHMKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitG T1IgUE9SVElPTiBPRiBpbnZhbGlkX2F0IEZST00gJzIwMTgtMDYtMDEnIFRPIFVOQk9VTkRF RAorU0VUIG5hbWUgPSAnZm9vJworV0hFUkUgaWQgPSAnWzUsNiknOworRVJST1I6ICBjb2x1 bW4gb3IgcGVyaW9kICJpbnZhbGlkX2F0IiBvZiByZWxhdGlvbiAiZm9yX3BvcnRpb25fb2Zf dGVzdCIgZG9lcyBub3QgZXhpc3QKK0xJTkUgMjogRk9SIFBPUlRJT04gT0YgaW52YWxpZF9h dCBGUk9NICcyMDE4LTA2LTAxJyBUTyBVTkJPVU5ERUQKKyAgICAgICAgICAgICAgICAgICAg ICAgXgorLS0gU2V0dGluZyB0aGUgc3RhcnQgY29sdW1uIGZhaWxzCitVUERBVEUgZm9yX3Bv cnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wNi0w MScgVE8gVU5CT1VOREVECitTRVQgdmFsaWRfZnJvbSA9ICcxOTkwLTAxLTAxJworV0hFUkUg aWQgPSAnWzUsNiknOworRVJST1I6ICBjYW4ndCBkaXJlY3RseSBhc3NpZ24gdG8gInZhbGlk X2Zyb20iIGluIGEgRk9SIFBPUlRJT04gT0YgdXBkYXRlCitMSU5FIDM6IFNFVCB2YWxpZF9m cm9tID0gJzE5OTAtMDEtMDEnCisgICAgICAgICAgICBeCistLSBTZXR0aW5nIHRoZSBlbmQg Y29sdW1uIGZhaWxzCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04g T0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wNi0wMScgVE8gVU5CT1VOREVECitTRVQgdmFsaWRf dGlsID0gJzE5OTktMDEtMDEnCitXSEVSRSBpZCA9ICdbNSw2KSc7CitFUlJPUjogIGNhbid0 IGRpcmVjdGx5IGFzc2lnbiB0byAidmFsaWRfdGlsIiBpbiBhIEZPUiBQT1JUSU9OIE9GIHVw ZGF0ZQorTElORSAzOiBTRVQgdmFsaWRfdGlsID0gJzE5OTktMDEtMDEnCisgICAgICAgICAg ICBeCistLSBTZXR0aW5nIHdpdGggdGltZXN0YW1wcyByZXZlcnNlZCBmYWlscworVVBEQVRF IGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIw MTgtMDYtMDEnIFRPICcyMDE4LTAxLTAxJworU0VUIG5hbWUgPSAndGhyZWVeMScKK1dIRVJF IGlkID0gJ1szLDQpJzsKK0VSUk9SOiAgcmFuZ2UgbG93ZXIgYm91bmQgbXVzdCBiZSBsZXNz IHRoYW4gb3IgZXF1YWwgdG8gcmFuZ2UgdXBwZXIgYm91bmQKKy0tIFNldHRpbmcgd2l0aCBh IHN1YnF1ZXJ5IGZhaWxzCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJ T04gT0YgdmFsaWRfYXQgRlJPTSAoU0VMRUNUICcyMDE4LTAxLTAxJykgVE8gJzIwMTgtMDYt MDEnCitTRVQgbmFtZSA9ICdub3BlJworV0hFUkUgaWQgPSAnWzMsNCknOworRVJST1I6ICBj YW5ub3QgdXNlIHN1YnF1ZXJ5IGluIEZPUiBQT1JUSU9OIE9GIGV4cHJlc3Npb24KK0xJTkUg MjogRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAoU0VMRUNUICcyMDE4LTAxLTAxJykg VE8gJzIwMTgtLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgor LS0gU2V0dGluZyB3aXRoIGEgY29sdW1uIGZhaWxzCitVUERBVEUgZm9yX3BvcnRpb25fb2Zf dGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSB2YWxpZF9mcm9tIFRPIFVOQk9V TkRFRAorU0VUIG5hbWUgPSAnbm9wZScKK1dIRVJFIGlkID0gJ1szLDQpJzsKK0VSUk9SOiAg Y2Fubm90IHVzZSBjb2x1bW4gcmVmZXJlbmNlIGluIEZPUiBQT1JUSU9OIE9GIGV4cHJlc3Np b24KK0xJTkUgMjogRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSB2YWxpZF9mcm9tIFRP IFVOQk9VTkRFRAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0t IFNldHRpbmcgd2l0aCB0aW1lc3RhbXBzIGVxdWFsIGRvZXMgbm90aGluZworVVBEQVRFIGZv cl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgt MDQtMDEnIFRPICcyMDE4LTA0LTAxJworU0VUIG5hbWUgPSAndGhyZWVeMCcKK1dIRVJFIGlk ID0gJ1szLDQpJzsKKy0tIFVwZGF0aW5nIGEgZmluaXRlL29wZW4gcG9ydGlvbiB3aXRoIGEg ZmluaXRlL29wZW4gdGFyZ2V0CitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBP UlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wNi0wMScgVE8gVU5CT1VOREVECitTRVQg bmFtZSA9ICd0aHJlZV4xJworV0hFUkUgaWQgPSAnWzMsNCknOworLS0gVXBkYXRpbmcgYSBm aW5pdGUvb3BlbiBwb3J0aW9uIHdpdGggYW4gb3Blbi9maW5pdGUgdGFyZ2V0CitVUERBVEUg Zm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSBVTkJP VU5ERUQgVE8gJzIwMTgtMDMtMDEnCitTRVQgbmFtZSA9ICd0aHJlZV4yJworV0hFUkUgaWQg PSAnWzMsNCknOworLS0gVXBkYXRpbmcgYW4gb3Blbi9maW5pdGUgcG9ydGlvbiB3aXRoIGFu IG9wZW4vZmluaXRlIHRhcmdldAorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQ T1JUSU9OIE9GIHZhbGlkX2F0IEZST00gVU5CT1VOREVEIFRPICcyMDE4LTAyLTAxJworU0VU IG5hbWUgPSAnZm91cl4xJworV0hFUkUgaWQgPSAnWzQsNSknOworLS0gVXBkYXRpbmcgYW4g b3Blbi9maW5pdGUgcG9ydGlvbiB3aXRoIGEgZmluaXRlL29wZW4gdGFyZ2V0CitVUERBVEUg Zm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAx Ny0wMS0wMScgVE8gVU5CT1VOREVECitTRVQgbmFtZSA9ICdmb3VyXjInCitXSEVSRSBpZCA9 ICdbNCw1KSc7CistLSBVcGRhdGluZyBhIGZpbml0ZS9maW5pdGUgcG9ydGlvbiB3aXRoIGFu IGV4YWN0IGZpdAorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9G IHZhbGlkX2F0IEZST00gJzIwMTctMDEtMDEnIFRPICcyMDE4LTAyLTAxJworU0VUIG5hbWUg PSAnZm91cl4zJworV0hFUkUgaWQgPSAnWzQsNSknOworLS0gVXBkYXRpbmcgYW4gZW5jbG9z ZWQgc3BhbgorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZh bGlkX2F0IEZST00gVU5CT1VOREVEIFRPIFVOQk9VTkRFRAorU0VUIG5hbWUgPSAndHdvXjIn CitXSEVSRSBpZCA9ICdbMiwzKSc7CistLSBVcGRhdGluZyBhbiBvcGVuL29wZW4gcG9ydGlv biB3aXRoIGEgZmluaXRlL2Zpbml0ZSB0YXJnZXQKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90 ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAxLTAxJyBUTyAnMjAx OS0wMS0wMScKK1NFVCBuYW1lID0gJ2ZpdmVeMicKK1dIRVJFIGlkID0gJ1s1LDYpJzsKKy0t IFVwZGF0aW5nIGFuIGVuY2xvc2VkIHNwYW4gd2l0aCBzZXBhcmF0ZSBwcm90cnVkaW5nIHNw YW5zCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRf YXQgRlJPTSAnMjAxNy0wMS0wMScgVE8gJzIwMjAtMDEtMDEnCitTRVQgbmFtZSA9ICdmaXZl XjMnCitXSEVSRSBpZCA9ICdbNSw2KSc7CistLSBVcGRhdGluZyBtdWx0aXBsZSBlbmNsb3Nl ZCBzcGFucworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZh bGlkX2F0IEZST00gTlVMTCBUTyBOVUxMCitTRVQgbmFtZSA9ICdvbmVeMicKK1dIRVJFIGlk ID0gJ1sxLDIpJzsKKy0tIFVwZGF0aW5nIHdpdGggYSBzaGlmdC9yZWR1Y2UgY29uZmxpY3QK K1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdAor ICBGUk9NICcyMDE4LTAzLTAxJyBBVCBUSU1FIFpPTkUgSU5URVJWQUwgJzEnIEhPVVIgVE8g TUlOVVRFCisgIFRPICcyMDE5LTAxLTAxJworU0VUIG5hbWUgPSAnb25lXjMnCitXSEVSRSBp ZCA9ICdbMSwyKSc7CitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04g T0YgdmFsaWRfYXQKKyAgRlJPTSAnMjAxOC0wMy0wMScgQVQgVElNRSBaT05FIElOVEVSVkFM ICcyJyBIT1VSCisgIFRPICcyMDE5LTAxLTAxJworU0VUIG5hbWUgPSAnb25lXjQnCitXSEVS RSBpZCA9ICdbMSwyKSc7CitFUlJPUjogIHN5bnRheCBlcnJvciBhdCBvciBuZWFyICInMjAx OS0wMS0wMSciCitMSU5FIDQ6ICAgVE8gJzIwMTktMDEtMDEnCisgICAgICAgICAgICAgXgor VVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0Cisg IEZST00gKCcyMDE4LTAzLTAxJyBBVCBUSU1FIFpPTkUgSU5URVJWQUwgJzInIEhPVVIpCisg IFRPICcyMDE5LTAxLTAxJworU0VUIG5hbWUgPSAnb25lXjQnCitXSEVSRSBpZCA9ICdbMSwy KSc7CistLSBVcGRhdGluZyB0aGUgbm9uLXJhbmdlIHBhcnQgb2YgdGhlIFBLOgorVVBEQVRF IGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIw MTgtMDItMTUnIFRPIE5VTEwKK1NFVCBpZCA9ICdbNiw3KScKK1dIRVJFIGlkID0gJ1sxLDIp JzsKKy0tIFVQREFURSB3aXRoIG5vIFdIRVJFIGNsYXVzZQorVVBEQVRFIGZvcl9wb3J0aW9u X29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMzAtMDEtMDEnIFRP IE5VTEwKK1NFVCBuYW1lID0gbmFtZSB8fCAnKic7CistLSBUT0RPOiBVUERBVEUgd2l0aCBn ZW5lcmF0ZWQgY29sdW1ucyB0b28KK1NFTEVDVCAqIEZST00gZm9yX3BvcnRpb25fb2ZfdGVz dCBPUkRFUiBCWSBpZCwgdmFsaWRfZnJvbSBOVUxMUyBGSVJTVCwgdmFsaWRfdGlsOworICBp ZCAgIHwgICAgICAgIHZhbGlkX2Zyb20gICAgICAgIHwgICAgICAgIHZhbGlkX3RpbCAgICAg ICAgIHwgICBuYW1lICAgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyBbMSwyKSB8IFR1ZSBKYW4g MDIgMDA6MDA6MDAgMjAxOCB8IFNhdCBGZWIgMDMgMDA6MDA6MDAgMjAxOCB8IG9uZV4yCisg WzEsMikgfCBTYXQgRmViIDAzIDAwOjAwOjAwIDIwMTggfCBUaHUgRmViIDE1IDAwOjAwOjAw IDIwMTggfCBvbmVeMgorIFsyLDMpIHwgTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IHwgRnJp IEphbiAwNSAwMDowMDowMCAyMDE4IHwgdHdvXjIKKyBbMyw0KSB8IE1vbiBKYW4gMDEgMDA6 MDA6MDAgMjAxOCB8IFRodSBNYXIgMDEgMDA6MDA6MDAgMjAxOCB8IHRocmVlXjIKKyBbMyw0 KSB8IFRodSBNYXIgMDEgMDA6MDA6MDAgMjAxOCB8IEZyaSBKdW4gMDEgMDA6MDA6MDAgMjAx OCB8IHRocmVlCisgWzMsNCkgfCBGcmkgSnVuIDAxIDAwOjAwOjAwIDIwMTggfCBUdWUgSmFu IDAxIDAwOjAwOjAwIDIwMzAgfCB0aHJlZV4xCisgWzMsNCkgfCBUdWUgSmFuIDAxIDAwOjAw OjAwIDIwMzAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0aHJlZV4xKgorIFs0LDUp IHwgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU3VuIEphbiAwMSAwMDowMDowMCAyMDE3 IHwgZm91cl4xCisgWzQsNSkgfCBTdW4gSmFuIDAxIDAwOjAwOjAwIDIwMTcgfCBUaHUgRmVi IDAxIDAwOjAwOjAwIDIwMTggfCBmb3VyXjMKKyBbNCw1KSB8IFRodSBGZWIgMDEgMDA6MDA6 MDAgMjAxOCB8IFN1biBBcHIgMDEgMDA6MDA6MDAgMjAxOCB8IGZvdXJeMgorIFs1LDYpIHwg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgU3VuIEphbiAwMSAwMDowMDowMCAyMDE3IHwg Zml2ZQorIFs1LDYpIHwgU3VuIEphbiAwMSAwMDowMDowMCAyMDE3IHwgTW9uIEphbiAwMSAw MDowMDowMCAyMDE4IHwgZml2ZV4zCisgWzUsNikgfCBNb24gSmFuIDAxIDAwOjAwOjAwIDIw MTggfCBUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkgfCBmaXZlXjMKKyBbNSw2KSB8IFR1ZSBK YW4gMDEgMDA6MDA6MDAgMjAxOSB8IFdlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCB8IGZpdmVe MworIFs1LDYpIHwgV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIHwgVHVlIEphbiAwMSAwMDow MDowMCAyMDMwIHwgZml2ZQorIFs1LDYpIHwgVHVlIEphbiAwMSAwMDowMDowMCAyMDMwIHwg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgZml2ZSoKKyBbNiw3KSB8IFRodSBGZWIgMTUg MDA6MDA6MDAgMjAxOCB8IFRodSBNYXIgMDEgMDg6MDE6MDAgMjAxOCB8IG9uZV4yCisgWzYs NykgfCBUaHUgTWFyIDAxIDA4OjAxOjAwIDIwMTggfCBUaHUgTWFyIDAxIDEwOjAwOjAwIDIw MTggfCBvbmVeMworIFs2LDcpIHwgVGh1IE1hciAwMSAxMDowMDowMCAyMDE4IHwgU2F0IE1h ciAwMyAwMDowMDowMCAyMDE4IHwgb25lXjQKKyBbNiw3KSB8IFNhdCBNYXIgMDMgMDA6MDA6 MDAgMjAxOCB8IFdlZCBBcHIgMDQgMDA6MDA6MDAgMjAxOCB8IG9uZV40CisoMjAgcm93cykK KworLS0KKy0tIERFTEVURSB0ZXN0cworLS0KKy0tIERlbGV0aW5nIHdpdGggYSBtaXNzaW5n IGNvbHVtbiBmYWlscworREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBP UlRJT04gT0YgaW52YWxpZF9hdCBGUk9NICcyMDE4LTA2LTAxJyBUTyBOVUxMCitXSEVSRSBp ZCA9ICdbNSw2KSc7CitFUlJPUjogIGNvbHVtbiBvciBwZXJpb2QgImludmFsaWRfYXQiIG9m IHJlbGF0aW9uICJmb3JfcG9ydGlvbl9vZl90ZXN0IiBkb2VzIG5vdCBleGlzdAorTElORSAy OiBGT1IgUE9SVElPTiBPRiBpbnZhbGlkX2F0IEZST00gJzIwMTgtMDYtMDEnIFRPIE5VTEwK KyAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gRGVsZXRpbmcgd2l0aCB0aW1lc3RhbXBz IHJldmVyc2VkIGZhaWxzCitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1Ig UE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTA2LTAxJyBUTyAnMjAxOC0wMS0wMScK K1dIRVJFIGlkID0gJ1szLDQpJzsKK0VSUk9SOiAgcmFuZ2UgbG93ZXIgYm91bmQgbXVzdCBi ZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gcmFuZ2UgdXBwZXIgYm91bmQKKy0tIERlbGV0aW5n IHdpdGggdGltZXN0YW1wcyBlcXVhbCBkb2VzIG5vdGhpbmcKK0RFTEVURSBGUk9NIGZvcl9w b3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDQt MDEnIFRPICcyMDE4LTA0LTAxJworV0hFUkUgaWQgPSAnWzMsNCknOworLS0gRGVsZXRpbmcg d2l0aCBhIGNsb3NlZC9jbG9zZWQgdGFyZ2V0CitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9v Zl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTA2LTAxJyBUTyAn MjAyMC0wNi0wMScKK1dIRVJFIGlkID0gJ1s1LDYpJzsKKy0tIERlbGV0aW5nIHdpdGggYSBj bG9zZWQvb3BlbiB0YXJnZXQKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZP UiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDQtMDEnIFRPIE5VTEwKK1dIRVJF IGlkID0gJ1szLDQpJzsKKy0tIERlbGV0aW5nIHdpdGggYW4gb3Blbi9jbG9zZWQgdGFyZ2V0 CitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxp ZF9hdCBGUk9NIE5VTEwgVE8gJzIwMTgtMDItMDgnCitXSEVSRSBpZCA9ICdbMSwyKSc7Cist LSBEZWxldGluZyB3aXRoIGFuIG9wZW4vb3BlbiB0YXJnZXQKK0RFTEVURSBGUk9NIGZvcl9w b3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gTlVMTCBUTyBO VUxMCitXSEVSRSBpZCA9ICdbNiw3KSc7CistLSBERUxFVEUgd2l0aCBubyBXSEVSRSBjbGF1 c2UKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZh bGlkX2F0IEZST00gJzIwMjUtMDEtMDEnIFRPIE5VTEw7CitTRUxFQ1QgKiBGUk9NIGZvcl9w b3J0aW9uX29mX3Rlc3QgT1JERVIgQlkgaWQsIHZhbGlkX2Zyb20gTlVMTFMgRklSU1QsIHZh bGlkX3RpbDsKKyAgaWQgICB8ICAgICAgICB2YWxpZF9mcm9tICAgICAgICB8ICAgICAgICB2 YWxpZF90aWwgICAgICAgICB8ICBuYW1lICAgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLQorIFsxLDIp IHwgVGh1IEZlYiAwOCAwMDowMDowMCAyMDE4IHwgVGh1IEZlYiAxNSAwMDowMDowMCAyMDE4 IHwgb25lXjIKKyBbMiwzKSB8IE1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCB8IEZyaSBKYW4g MDUgMDA6MDA6MDAgMjAxOCB8IHR3b14yCisgWzMsNCkgfCBNb24gSmFuIDAxIDAwOjAwOjAw IDIwMTggfCBUaHUgTWFyIDAxIDAwOjAwOjAwIDIwMTggfCB0aHJlZV4yCisgWzMsNCkgfCBU aHUgTWFyIDAxIDAwOjAwOjAwIDIwMTggfCBTdW4gQXByIDAxIDAwOjAwOjAwIDIwMTggfCB0 aHJlZQorIFs0LDUpIHwgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU3VuIEphbiAwMSAw MDowMDowMCAyMDE3IHwgZm91cl4xCisgWzQsNSkgfCBTdW4gSmFuIDAxIDAwOjAwOjAwIDIw MTcgfCBUaHUgRmViIDAxIDAwOjAwOjAwIDIwMTggfCBmb3VyXjMKKyBbNCw1KSB8IFRodSBG ZWIgMDEgMDA6MDA6MDAgMjAxOCB8IFN1biBBcHIgMDEgMDA6MDA6MDAgMjAxOCB8IGZvdXJe MgorIFs1LDYpIHwgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU3VuIEphbiAwMSAwMDow MDowMCAyMDE3IHwgZml2ZQorIFs1LDYpIHwgU3VuIEphbiAwMSAwMDowMDowMCAyMDE3IHwg TW9uIEphbiAwMSAwMDowMDowMCAyMDE4IHwgZml2ZV4zCisgWzUsNikgfCBNb24gSmFuIDAx IDAwOjAwOjAwIDIwMTggfCBGcmkgSnVuIDAxIDAwOjAwOjAwIDIwMTggfCBmaXZlXjMKKyBb NSw2KSB8IE1vbiBKdW4gMDEgMDA6MDA6MDAgMjAyMCB8IFdlZCBKYW4gMDEgMDA6MDA6MDAg MjAyNSB8IGZpdmUKKygxMSByb3dzKQorCistLSBVUERBVEUgLi4uIFJFVFVSTklORyByZXR1 cm5zIG9ubHkgdGhlIHVwZGF0ZWQgdmFsdWVzIChub3QgdGhlIGluc2VydGVkIHNpZGUgdmFs dWVzKQorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlk X2F0IEZST00gJzIwMTgtMDItMDEnIFRPICcyMDE4LTAyLTE1JworU0VUIG5hbWUgPSAndGhy ZWVeMycKK1dIRVJFIGlkID0gJ1szLDQpJworUkVUVVJOSU5HICo7CisgIGlkICAgfCAgICAg ICAgdmFsaWRfZnJvbSAgICAgICAgfCAgICAgICAgdmFsaWRfdGlsICAgICAgICAgfCAgbmFt ZSAgIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBbMyw0KSB8IFRodSBGZWIgMDEgMDA6MDA6MDAg MjAxOCB8IFRodSBGZWIgMTUgMDA6MDA6MDAgMjAxOCB8IHRocmVlXjMKKygxIHJvdykKKwor LS0gdGVzdCB0aGF0IHdlIHJ1biB0cmlnZ2VycyBvbiB0aGUgVVBEQVRFL0RFTEVURWQgcm93 IGFuZCB0aGUgSU5TRVJUZWQgcm93cworQ1JFQVRFIEZVTkNUSU9OIGZvcl9wb3J0aW9uX29m X3RyaWdnZXIyKCkKK1JFVFVSTlMgdHJpZ2dlcgorQVMKKyQkCitCRUdJTgorICBSQUlTRSBO T1RJQ0UgJyUgJSBbJSwlKSBvZiBbJSwlKScsIFRHX1dIRU4sIFRHX09QLCBORVcudmFsaWRf ZnJvbSwgTkVXLnZhbGlkX3RpbCwgT0xELnZhbGlkX2Zyb20sIE9MRC52YWxpZF90aWw7Cisg IElGIFRHX09QID0gJ0RFTEVURScgVEhFTgorICAgIFJFVFVSTiBPTEQ7CisgIEVMU0UKKyAg ICBSRVRVUk4gTkVXOworICBFTkQgSUY7CitFTkQ7CiskJAorTEFOR1VBR0UgcGxwZ3NxbDsK K0NSRUFURSBUUklHR0VSIHRyZ19mb3JfcG9ydGlvbl9vZl9iZWZvcmVfaW5zZXJ0CisgIEJF Rk9SRSBJTlNFUlQgT04gZm9yX3BvcnRpb25fb2ZfdGVzdAorICBGT1IgRUFDSCBST1cKKyAg RVhFQ1VURSBGVU5DVElPTiBmb3JfcG9ydGlvbl9vZl90cmlnZ2VyMigpOworQ1JFQVRFIFRS SUdHRVIgdHJnX2Zvcl9wb3J0aW9uX29mX2FmdGVyX2luc2VydAorICBBRlRFUiBJTlNFUlQg T04gZm9yX3BvcnRpb25fb2ZfdGVzdAorICBGT1IgRUFDSCBST1cKKyAgRVhFQ1VURSBGVU5D VElPTiBmb3JfcG9ydGlvbl9vZl90cmlnZ2VyMigpOworQ1JFQVRFIFRSSUdHRVIgdHJnX2Zv cl9wb3J0aW9uX29mX2JlZm9yZV91cGRhdGUKKyAgQkVGT1JFIFVQREFURSBPTiBmb3JfcG9y dGlvbl9vZl90ZXN0CisgIEZPUiBFQUNIIFJPVworICBFWEVDVVRFIEZVTkNUSU9OIGZvcl9w b3J0aW9uX29mX3RyaWdnZXIyKCk7CitDUkVBVEUgVFJJR0dFUiB0cmdfZm9yX3BvcnRpb25f b2ZfYWZ0ZXJfdXBkYXRlCisgIEFGVEVSIFVQREFURSBPTiBmb3JfcG9ydGlvbl9vZl90ZXN0 CisgIEZPUiBFQUNIIFJPVworICBFWEVDVVRFIEZVTkNUSU9OIGZvcl9wb3J0aW9uX29mX3Ry aWdnZXIyKCk7CitDUkVBVEUgVFJJR0dFUiB0cmdfZm9yX3BvcnRpb25fb2ZfYmVmb3JlX2Rl bGV0ZQorICBCRUZPUkUgREVMRVRFIE9OIGZvcl9wb3J0aW9uX29mX3Rlc3QKKyAgRk9SIEVB Q0ggUk9XCisgIEVYRUNVVEUgRlVOQ1RJT04gZm9yX3BvcnRpb25fb2ZfdHJpZ2dlcjIoKTsK K0NSRUFURSBUUklHR0VSIHRyZ19mb3JfcG9ydGlvbl9vZl9hZnRlcl9kZWxldGUKKyAgQUZU RVIgREVMRVRFIE9OIGZvcl9wb3J0aW9uX29mX3Rlc3QKKyAgRk9SIEVBQ0ggUk9XCisgIEVY RUNVVEUgRlVOQ1RJT04gZm9yX3BvcnRpb25fb2ZfdHJpZ2dlcjIoKTsKK1VQREFURSBmb3Jf cG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDIxLTAx LTAxJyBUTyAnMjAyMi0wMS0wMScKK1NFVCBuYW1lID0gJ2ZpdmVeNCcKK1dIRVJFIGlkID0g J1s1LDYpJzsKK05PVElDRTogIEJFRk9SRSBVUERBVEUgW0ZyaSBKYW4gMDEgMDA6MDA6MDAg MjAyMSxTYXQgSmFuIDAxIDAwOjAwOjAwIDIwMjIpIG9mIFtNb24gSnVuIDAxIDAwOjAwOjAw IDIwMjAsV2VkIEphbiAwMSAwMDowMDowMCAyMDI1KQorTk9USUNFOiAgQkVGT1JFIElOU0VS VCBbTW9uIEp1biAwMSAwMDowMDowMCAyMDIwLEZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSkg b2YgWzxOVUxMPiw8TlVMTD4pCitOT1RJQ0U6ICBCRUZPUkUgSU5TRVJUIFtTYXQgSmFuIDAx IDAwOjAwOjAwIDIwMjIsV2VkIEphbiAwMSAwMDowMDowMCAyMDI1KSBvZiBbPE5VTEw+LDxO VUxMPikKK05PVElDRTogIEFGVEVSIElOU0VSVCBbTW9uIEp1biAwMSAwMDowMDowMCAyMDIw LEZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSkgb2YgWzxOVUxMPiw8TlVMTD4pCitOT1RJQ0U6 ICBBRlRFUiBJTlNFUlQgW1NhdCBKYW4gMDEgMDA6MDA6MDAgMjAyMixXZWQgSmFuIDAxIDAw OjAwOjAwIDIwMjUpIG9mIFs8TlVMTD4sPE5VTEw+KQorTk9USUNFOiAgQUZURVIgVVBEQVRF IFtGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEsU2F0IEphbiAwMSAwMDowMDowMCAyMDIyKSBv ZiBbTW9uIEp1biAwMSAwMDowMDowMCAyMDIwLFdlZCBKYW4gMDEgMDA6MDA6MDAgMjAyNSkK K0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlk X2F0IEZST00gJzIwMjMtMDEtMDEnIFRPICcyMDI0LTAxLTAxJworV0hFUkUgaWQgPSAnWzUs NiknOworTk9USUNFOiAgQkVGT1JFIERFTEVURSBbPE5VTEw+LDxOVUxMPikgb2YgW1NhdCBK YW4gMDEgMDA6MDA6MDAgMjAyMixXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjUpCitOT1RJQ0U6 ICBCRUZPUkUgSU5TRVJUIFtTYXQgSmFuIDAxIDAwOjAwOjAwIDIwMjIsU3VuIEphbiAwMSAw MDowMDowMCAyMDIzKSBvZiBbPE5VTEw+LDxOVUxMPikKK05PVElDRTogIEJFRk9SRSBJTlNF UlQgW01vbiBKYW4gMDEgMDA6MDA6MDAgMjAyNCxXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjUp IG9mIFs8TlVMTD4sPE5VTEw+KQorTk9USUNFOiAgQUZURVIgSU5TRVJUIFtTYXQgSmFuIDAx IDAwOjAwOjAwIDIwMjIsU3VuIEphbiAwMSAwMDowMDowMCAyMDIzKSBvZiBbPE5VTEw+LDxO VUxMPikKK05PVElDRTogIEFGVEVSIElOU0VSVCBbTW9uIEphbiAwMSAwMDowMDowMCAyMDI0 LFdlZCBKYW4gMDEgMDA6MDA6MDAgMjAyNSkgb2YgWzxOVUxMPiw8TlVMTD4pCitOT1RJQ0U6 ICBBRlRFUiBERUxFVEUgWzxOVUxMPiw8TlVMTD4pIG9mIFtTYXQgSmFuIDAxIDAwOjAwOjAw IDIwMjIsV2VkIEphbiAwMSAwMDowMDowMCAyMDI1KQorU0VMRUNUICogRlJPTSBmb3JfcG9y dGlvbl9vZl90ZXN0IE9SREVSIEJZIGlkLCB2YWxpZF9mcm9tIE5VTExTIEZJUlNULCB2YWxp ZF90aWw7CisgIGlkICAgfCAgICAgICAgdmFsaWRfZnJvbSAgICAgICAgfCAgICAgICAgdmFs aWRfdGlsICAgICAgICAgfCAgbmFtZSAgIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBbMSwyKSB8 IFRodSBGZWIgMDggMDA6MDA6MDAgMjAxOCB8IFRodSBGZWIgMTUgMDA6MDA6MDAgMjAxOCB8 IG9uZV4yCisgWzIsMykgfCBNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTggfCBGcmkgSmFuIDA1 IDAwOjAwOjAwIDIwMTggfCB0d29eMgorIFszLDQpIHwgTW9uIEphbiAwMSAwMDowMDowMCAy MDE4IHwgVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4IHwgdGhyZWVeMgorIFszLDQpIHwgVGh1 IEZlYiAwMSAwMDowMDowMCAyMDE4IHwgVGh1IEZlYiAxNSAwMDowMDowMCAyMDE4IHwgdGhy ZWVeMworIFszLDQpIHwgVGh1IEZlYiAxNSAwMDowMDowMCAyMDE4IHwgVGh1IE1hciAwMSAw MDowMDowMCAyMDE4IHwgdGhyZWVeMgorIFszLDQpIHwgVGh1IE1hciAwMSAwMDowMDowMCAy MDE4IHwgU3VuIEFwciAwMSAwMDowMDowMCAyMDE4IHwgdGhyZWUKKyBbNCw1KSB8ICAgICAg ICAgICAgICAgICAgICAgICAgICB8IFN1biBKYW4gMDEgMDA6MDA6MDAgMjAxNyB8IGZvdXJe MQorIFs0LDUpIHwgU3VuIEphbiAwMSAwMDowMDowMCAyMDE3IHwgVGh1IEZlYiAwMSAwMDow MDowMCAyMDE4IHwgZm91cl4zCisgWzQsNSkgfCBUaHUgRmViIDAxIDAwOjAwOjAwIDIwMTgg fCBTdW4gQXByIDAxIDAwOjAwOjAwIDIwMTggfCBmb3VyXjIKKyBbNSw2KSB8ICAgICAgICAg ICAgICAgICAgICAgICAgICB8IFN1biBKYW4gMDEgMDA6MDA6MDAgMjAxNyB8IGZpdmUKKyBb NSw2KSB8IFN1biBKYW4gMDEgMDA6MDA6MDAgMjAxNyB8IE1vbiBKYW4gMDEgMDA6MDA6MDAg MjAxOCB8IGZpdmVeMworIFs1LDYpIHwgTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IHwgRnJp IEp1biAwMSAwMDowMDowMCAyMDE4IHwgZml2ZV4zCisgWzUsNikgfCBNb24gSnVuIDAxIDAw OjAwOjAwIDIwMjAgfCBGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEgfCBmaXZlCisgWzUsNikg fCBGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEgfCBTYXQgSmFuIDAxIDAwOjAwOjAwIDIwMjIg fCBmaXZlXjQKKyBbNSw2KSB8IFNhdCBKYW4gMDEgMDA6MDA6MDAgMjAyMiB8IFN1biBKYW4g MDEgMDA6MDA6MDAgMjAyMyB8IGZpdmUKKyBbNSw2KSB8IE1vbiBKYW4gMDEgMDA6MDA6MDAg MjAyNCB8IFdlZCBKYW4gMDEgMDA6MDA6MDAgMjAyNSB8IGZpdmUKKygxNiByb3dzKQorCmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3ByaXZpbGVnZXMub3V0IGIv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wcml2aWxlZ2VzLm91dAppbmRleCAzY2Y0YWM4 YzllLi4yMzIzMmI0NWFmIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3ByaXZpbGVnZXMub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHJpdmls ZWdlcy5vdXQKQEAgLTk4NSw2ICs5ODUsNDIgQEAgRVJST1I6ICBudWxsIHZhbHVlIGluIGNv bHVtbiAiYiIgb2YgcmVsYXRpb24gImVycnRzdF9wYXJ0XzIiIHZpb2xhdGVzIG5vdC1udWxs IGMKIERFVEFJTDogIEZhaWxpbmcgcm93IGNvbnRhaW5zIChhLCBiLCBjKSA9IChhYWFhLCBu dWxsLCBjY2MpLgogU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3ByaXZfdXNl cjE7CiBEUk9QIFRBQkxFIGVycnRzdDsKKy0tIHRlc3QgY29sdW1uLWxldmVsIHByaXZpbGVn ZXMgb24gdGhlIHJhbmdlL1BFUklPRCB1c2VkIGluIEZPUiBQT1JUSU9OIE9GCitTRVQgU0VT U0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcHJpdl91c2VyMTsKK0NSRUFURSBUQUJMRSB0 MSAoCisgIGMxIGludDRyYW5nZSwKKyAgdmFsaWRfYXQgdHNyYW5nZSwKKwlDT05TVFJBSU5U IHQxcGsgUFJJTUFSWSBLRVkgKGMxLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsK K0dSQU5UIFNFTEVDVCBPTiB0MSBUTyByZWdyZXNzX3ByaXZfdXNlcjI7CitHUkFOVCBTRUxF Q1QgT04gdDEgVE8gcmVncmVzc19wcml2X3VzZXIzOworR1JBTlQgVVBEQVRFIChjMSkgT04g dDEgVE8gcmVncmVzc19wcml2X3VzZXIyOworR1JBTlQgVVBEQVRFIChjMSwgdmFsaWRfYXQp IE9OIHQxIFRPIHJlZ3Jlc3NfcHJpdl91c2VyMzsKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJ T04gcmVncmVzc19wcml2X3VzZXIyOworVVBEQVRFIHQxIEZPUiBQT1JUSU9OIE9GIHZhbGlk X2F0IEZST00gJzIwMDAtMDEtMDEnIFRPICcyMDAxLTAxLTAxJyBTRVQgYzEgPSAnWzIsMykn OworRVJST1I6ICBwZXJtaXNzaW9uIGRlbmllZCBmb3IgdGFibGUgdDEKK1NFVCBTRVNTSU9O IEFVVEhPUklaQVRJT04gcmVncmVzc19wcml2X3VzZXIzOworVVBEQVRFIHQxIEZPUiBQT1JU SU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMDAtMDEtMDEnIFRPICcyMDAxLTAxLTAxJyBTRVQg YzEgPSAnWzIsMyknOworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3ByaXZf dXNlcjE7CitEUk9QIFRBQkxFIHQxOworQ1JFQVRFIFRBQkxFIHQxICgKKyAgYzEgaW50NHJh bmdlLAorICB2YWxpZF9mcm9tIHRpbWVzdGFtcCwKKyAgdmFsaWRfdGlsIHRpbWVzdGFtcCwK KyAgUEVSSU9EIEZPUiB2YWxpZF9hdCAodmFsaWRfZnJvbSwgdmFsaWRfdGlsKSwKKwlDT05T VFJBSU5UIHQxcGsgUFJJTUFSWSBLRVkgKGMxLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBT KQorKTsKK0dSQU5UIFNFTEVDVCBPTiB0MSBUTyByZWdyZXNzX3ByaXZfdXNlcjI7CitHUkFO VCBTRUxFQ1QgT04gdDEgVE8gcmVncmVzc19wcml2X3VzZXIzOworR1JBTlQgVVBEQVRFIChj MSkgT04gdDEgVE8gcmVncmVzc19wcml2X3VzZXIyOworR1JBTlQgVVBEQVRFIChjMSwgdmFs aWRfZnJvbSwgdmFsaWRfdGlsKSBPTiB0MSBUTyByZWdyZXNzX3ByaXZfdXNlcjM7CitTRVQg U0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcHJpdl91c2VyMjsKK1VQREFURSB0MSBG T1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTAxLTAxJyBUTyAnMjAwMS0wMS0w MScgU0VUIGMxID0gJ1syLDMpJzsKK0VSUk9SOiAgcGVybWlzc2lvbiBkZW5pZWQgZm9yIHRh YmxlIHQxCitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcHJpdl91c2VyMzsK K1VQREFURSB0MSBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTAxLTAxJyBU TyAnMjAwMS0wMS0wMScgU0VUIGMxID0gJ1syLDMpJzsKK1NFVCBTRVNTSU9OIEFVVEhPUkla QVRJT04gcmVncmVzc19wcml2X3VzZXIxOworRFJPUCBUQUJMRSB0MTsKIC0tIHRlc3QgY29s dW1uLWxldmVsIHByaXZpbGVnZXMgd2hlbiBpbnZvbHZlZCB3aXRoIERFTEVURQogU0VUIFNF U1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3ByaXZfdXNlcjE7CiBBTFRFUiBUQUJMRSBh dGVzdDYgQUREIENPTFVNTiB0aHJlZSBpbnRlZ2VyOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC91cGRhdGFibGVfdmlld3Mub3V0IGIvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC91cGRhdGFibGVfdmlld3Mub3V0CmluZGV4IDBjYmVkYzY1N2QuLmMwOWQ5 NDc0NjIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdXBkYXRhYmxl X3ZpZXdzLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3VwZGF0YWJsZV92 aWV3cy5vdXQKQEAgLTI5OTEsNiArMjk5MSwzOCBAQCBzZWxlY3QgKiBmcm9tIHV2X2lvY3Vf dGFiOwogCiBkcm9wIHZpZXcgdXZfaW9jdV92aWV3OwogZHJvcCB0YWJsZSB1dl9pb2N1X3Rh YjsKKy0tIENoZWNrIFVQREFURSBGT1IgUE9SVElPTiBPRiB3b3JrcyBjb3JyZWN0bHkKK2Ny ZWF0ZSB0YWJsZSB1dl9mcG9fdGFiIChpZCBpbnQ0cmFuZ2UsIHZhbGlkX2F0IHRzcmFuZ2Us IGIgZmxvYXQsCisgICAgY29uc3RyYWludCBwa191dl9mcG9fdGFiIHByaW1hcnkga2V5IChp ZCwgdmFsaWRfYXQgd2l0aG91dCBvdmVybGFwcykpOworaW5zZXJ0IGludG8gdXZfZnBvX3Rh YiB2YWx1ZXMgKCdbMSwxXScsICdbMjAyMC0wMS0wMSwgMjAzMC0wMS0wMSknLCAwKTsKK2Ny ZWF0ZSB2aWV3IHV2X2Zwb192aWV3IGFzCisgICAgc2VsZWN0IGIsIGIrMSBhcyBjLCB2YWxp ZF9hdCwgaWQsICcyLjAnOjp0ZXh0IGFzIHR3byBmcm9tIHV2X2Zwb190YWI7CitpbnNlcnQg aW50byB1dl9mcG9fdmlldyAoaWQsIHZhbGlkX2F0LCBiKSB2YWx1ZXMgKCdbMSwxXScsICdb MjAxMC0wMS0wMSwgMjAyMC0wMS0wMSknLCAxKTsKK3NlbGVjdCAqIGZyb20gdXZfZnBvX3Zp ZXc7CisgYiB8IGMgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAg ICAgICAgICAgICAgICAgIHwgIGlkICAgfCB0d28gCistLS0rLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0t LS0tCisgMCB8IDEgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIlR1ZSBKYW4gMDEg MDA6MDA6MDAgMjAzMCIpIHwgWzEsMikgfCAyLjAKKyAxIHwgMiB8IFsiRnJpIEphbiAwMSAw MDowMDowMCAyMDEwIiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCBbMSwyKSB8IDIu MAorKDIgcm93cykKKwordXBkYXRlIHV2X2Zwb192aWV3IGZvciBwb3J0aW9uIG9mIHZhbGlk X2F0IGZyb20gJzIwMTUtMDEtMDEnIHRvICcyMDIwLTAxLTAxJyBzZXQgYiA9IDIgd2hlcmUg aWQgPSAnWzEsMV0nOworc2VsZWN0ICogZnJvbSB1dl9mcG9fdmlldzsKKyBiIHwgYyB8ICAg ICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAg fCAgaWQgICB8IHR3byAKKy0tLSstLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0KKyAwIHwgMSB8IFsi V2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiVHVlIEphbiAwMSAwMDowMDowMCAyMDMwIikg fCBbMSwyKSB8IDIuMAorIDIgfCAzIHwgWyJUaHUgSmFuIDAxIDAwOjAwOjAwIDIwMTUiLCJX ZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8IFsxLDIpIHwgMi4wCisgMSB8IDIgfCBbIkZy aSBKYW4gMDEgMDA6MDA6MDAgMjAxMCIsIlRodSBKYW4gMDEgMDA6MDA6MDAgMjAxNSIpIHwg WzEsMikgfCAyLjAKKygzIHJvd3MpCisKK2RlbGV0ZSBmcm9tIHV2X2Zwb192aWV3IGZvciBw b3J0aW9uIG9mIHZhbGlkX2F0IGZyb20gJzIwMTctMDEtMDEnIHRvICcyMDIyLTAxLTAxJyB3 aGVyZSBpZCA9ICdbMSwxXSc7CitzZWxlY3QgKiBmcm9tIHV2X2Zwb192aWV3OworIGIgfCBj IHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAg ICAgICB8ICBpZCAgIHwgdHdvIAorLS0tKy0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLQorIDEgfCAy IHwgWyJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMTAiLCJUaHUgSmFuIDAxIDAwOjAwOjAwIDIw MTUiKSB8IFsxLDIpIHwgMi4wCisgMCB8IDEgfCBbIlNhdCBKYW4gMDEgMDA6MDA6MDAgMjAy MiIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAzMCIpIHwgWzEsMikgfCAyLjAKKyAyIHwgMyB8 IFsiVGh1IEphbiAwMSAwMDowMDowMCAyMDE1IiwiU3VuIEphbiAwMSAwMDowMDowMCAyMDE3 IikgfCBbMSwyKSB8IDIuMAorKDMgcm93cykKKwogLS0gVGVzdCB3aG9sZS1yb3cgcmVmZXJl bmNlcyB0byB0aGUgdmlldwogY3JlYXRlIHRhYmxlIHV2X2lvY3VfdGFiIChhIGludCB1bmlx dWUsIGIgdGV4dCk7CiBjcmVhdGUgdmlldyB1dl9pb2N1X3ZpZXcgYXMKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQgYi9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMub3V0CmluZGV4IDgzYmQy OWM5OGUuLjk4YjI5NTBmM2MgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC93aXRob3V0X292ZXJsYXBzLm91dApAQCAtNDU0LDcgKzQ1NCw3IEBAIERFVEFJTDogIEZh aWxpbmcgcm93IGNvbnRhaW5zIChbMyw0KSwgbnVsbCkuCiAtLQogQ1JFQVRFIFRBQkxFIHRl bXBvcmFsMyAoCiAgIGlkIGludDRyYW5nZSwKLSAgdmFsaWRfYXQgdHNyYW5nZSwKKyAgdmFs aWRfYXQgZGF0ZXJhbmdlLAogICBpZDIgaW50OHJhbmdlLAogICBuYW1lIFRFWFQsCiAgIENP TlNUUkFJTlQgdGVtcG9yYWwzX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9V VCBPVkVSTEFQUyksCkBAIC00NjIsMTA1ICs0NjIsMTA1IEBAIENSRUFURSBUQUJMRSB0ZW1w b3JhbDMgKAogKTsKIElOU0VSVCBJTlRPIHRlbXBvcmFsMyAoaWQsIHZhbGlkX2F0LCBpZDIs IG5hbWUpCiAgIFZBTFVFUwotICAoJ1sxLDFdJywgdHNyYW5nZSgnMjAwMC0wMS0wMScsICcy MDEwLTAxLTAxJyksICdbNyw3XScsICdmb28nKSwKLSAgKCdbMiwyXScsIHRzcmFuZ2UoJzIw MDAtMDEtMDEnLCAnMjAxMC0wMS0wMScpLCAnWzksOV0nLCAnYmFyJykKKyAgKCdbMSwxXScs IGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDEwLTAxLTAxJyksICdbNyw3XScsICdmb28n KSwKKyAgKCdbMiwyXScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDEwLTAxLTAxJyks ICdbOSw5XScsICdiYXInKQogOwotVVBEQVRFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdDIgRk9S IFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAwMC0wNS0wMScgVE8gJzIwMDAtMDctMDEn CitVUERBVEUgdGVtcG9yYWwzIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMDAt MDUtMDEnIFRPICcyMDAwLTA3LTAxJwogICBTRVQgbmFtZSA9IG5hbWUgfHwgJzEnOwotVVBE QVRFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdDIgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJP TSAnMjAwMC0wNC0wMScgVE8gJzIwMDAtMDYtMDEnCitVUERBVEUgdGVtcG9yYWwzIEZPUiBQ T1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMDAtMDQtMDEnIFRPICcyMDAwLTA2LTAxJwog ICBTRVQgbmFtZSA9IG5hbWUgfHwgJzInCiAgIFdIRVJFIGlkID0gJ1syLDJdJzsKLVNFTEVD VCAqIEZST00gd2l0aG91dF9vdmVybGFwc190ZXN0MiBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7 Ci0gIGlkICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAg ICAgICAgICAgICAgIHwgIGlkMiAgIHwgbmFtZSAgCi0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSst LS0tLS0tCi0gWzEsMikgfCBbIlNhdCBKYW4gMDEgMDA6MDA6MDAgMjAwMCIsIk1vbiBNYXkg MDEgMDA6MDA6MDAgMjAwMCIpIHwgWzcsOCkgIHwgZm9vCi0gWzEsMikgfCBbIk1vbiBNYXkg MDEgMDA6MDA6MDAgMjAwMCIsIlNhdCBKdWwgMDEgMDA6MDA6MDAgMjAwMCIpIHwgWzcsOCkg IHwgZm9vMQotIFsxLDIpIHwgWyJTYXQgSnVsIDAxIDAwOjAwOjAwIDIwMDAiLCJGcmkgSmFu IDAxIDAwOjAwOjAwIDIwMTAiKSB8IFs3LDgpICB8IGZvbwotIFsyLDMpIHwgWyJTYXQgSmFu IDAxIDAwOjAwOjAwIDIwMDAiLCJTYXQgQXByIDAxIDAwOjAwOjAwIDIwMDAiKSB8IFs5LDEw KSB8IGJhcgotIFsyLDMpIHwgWyJTYXQgQXByIDAxIDAwOjAwOjAwIDIwMDAiLCJNb24gTWF5 IDAxIDAwOjAwOjAwIDIwMDAiKSB8IFs5LDEwKSB8IGJhcjIKLSBbMiwzKSB8IFsiTW9uIE1h eSAwMSAwMDowMDowMCAyMDAwIiwiVGh1IEp1biAwMSAwMDowMDowMCAyMDAwIikgfCBbOSwx MCkgfCBiYXIxMgotIFsyLDMpIHwgWyJUaHUgSnVuIDAxIDAwOjAwOjAwIDIwMDAiLCJTYXQg SnVsIDAxIDAwOjAwOjAwIDIwMDAiKSB8IFs5LDEwKSB8IGJhcjEKLSBbMiwzKSB8IFsiU2F0 IEp1bCAwMSAwMDowMDowMCAyMDAwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDEwIikgfCBb OSwxMCkgfCBiYXIKK1NFTEVDVCAqIEZST00gdGVtcG9yYWwzIE9SREVSIEJZIGlkLCB2YWxp ZF9hdDsKKyAgaWQgICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwgIGlkMiAgIHwgbmFt ZSAgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0t LQorIFsxLDIpIHwgWzAxLTAxLTIwMDAsMDUtMDEtMjAwMCkgfCBbNyw4KSAgfCBmb28KKyBb MSwyKSB8IFswNS0wMS0yMDAwLDA3LTAxLTIwMDApIHwgWzcsOCkgIHwgZm9vMQorIFsxLDIp IHwgWzA3LTAxLTIwMDAsMDEtMDEtMjAxMCkgfCBbNyw4KSAgfCBmb28KKyBbMiwzKSB8IFsw MS0wMS0yMDAwLDA0LTAxLTIwMDApIHwgWzksMTApIHwgYmFyCisgWzIsMykgfCBbMDQtMDEt MjAwMCwwNS0wMS0yMDAwKSB8IFs5LDEwKSB8IGJhcjIKKyBbMiwzKSB8IFswNS0wMS0yMDAw LDA2LTAxLTIwMDApIHwgWzksMTApIHwgYmFyMTIKKyBbMiwzKSB8IFswNi0wMS0yMDAwLDA3 LTAxLTIwMDApIHwgWzksMTApIHwgYmFyMQorIFsyLDMpIHwgWzA3LTAxLTIwMDAsMDEtMDEt MjAxMCkgfCBbOSwxMCkgfCBiYXIKICg4IHJvd3MpCiAKIC0tIGNvbmZsaWN0aW5nIGlkIG9u bHk6Ci1JTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QyIChpZCwgdmFsaWRfYXQs IGlkMiwgbmFtZSkKK0lOU0VSVCBJTlRPIHRlbXBvcmFsMyAoaWQsIHZhbGlkX2F0LCBpZDIs IG5hbWUpCiAgIFZBTFVFUwotICAoJ1sxLDFdJywgdHNyYW5nZSgnMjAwNS0wMS0wMScsICcy MDA2LTAxLTAxJyksICdbOCw4XScsICdmb28zJyk7Ci1FUlJPUjogIGNvbmZsaWN0aW5nIGtl eSB2YWx1ZSB2aW9sYXRlcyBleGNsdXNpb24gY29uc3RyYWludCAid2l0aG91dF9vdmVybGFw c190ZXN0Ml9wayIKLURFVEFJTDogIEtleSAoaWQsIHZhbGlkX2F0KT0oWzEsMiksIFsiU2F0 IEphbiAwMSAwMDowMDowMCAyMDA1IiwiU3VuIEphbiAwMSAwMDowMDowMCAyMDA2IikpIGNv bmZsaWN0cyB3aXRoIGV4aXN0aW5nIGtleSAoaWQsIHZhbGlkX2F0KT0oWzEsMiksIFsiU2F0 IEp1bCAwMSAwMDowMDowMCAyMDAwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDEwIikpLgor ICAoJ1sxLDFdJywgZGF0ZXJhbmdlKCcyMDA1LTAxLTAxJywgJzIwMDYtMDEtMDEnKSwgJ1s4 LDhdJywgJ2ZvbzMnKTsKK0VSUk9SOiAgY29uZmxpY3Rpbmcga2V5IHZhbHVlIHZpb2xhdGVz IGV4Y2x1c2lvbiBjb25zdHJhaW50ICJ0ZW1wb3JhbDNfcGsiCitERVRBSUw6ICBLZXkgKGlk LCB2YWxpZF9hdCk9KFsxLDIpLCBbMDEtMDEtMjAwNSwwMS0wMS0yMDA2KSkgY29uZmxpY3Rz IHdpdGggZXhpc3Rpbmcga2V5IChpZCwgdmFsaWRfYXQpPShbMSwyKSwgWzA3LTAxLTIwMDAs MDEtMDEtMjAxMCkpLgogLS0gY29uZmxpY3RpbmcgaWQyIG9ubHk6Ci1JTlNFUlQgSU5UTyB3 aXRob3V0X292ZXJsYXBzX3Rlc3QyIChpZCwgdmFsaWRfYXQsIGlkMiwgbmFtZSkKK0lOU0VS VCBJTlRPIHRlbXBvcmFsMyAoaWQsIHZhbGlkX2F0LCBpZDIsIG5hbWUpCiAgIFZBTFVFUwot ICAoJ1szLDNdJywgdHNyYW5nZSgnMjAwNS0wMS0wMScsICcyMDEwLTAxLTAxJyksICdbOSw5 XScsICdiYXIzJykKKyAgKCdbMywzXScsIGRhdGVyYW5nZSgnMjAwNS0wMS0wMScsICcyMDEw LTAxLTAxJyksICdbOSw5XScsICdiYXIzJykKIDsKLUVSUk9SOiAgY29uZmxpY3Rpbmcga2V5 IHZhbHVlIHZpb2xhdGVzIGV4Y2x1c2lvbiBjb25zdHJhaW50ICJ3aXRob3V0X292ZXJsYXBz X3Rlc3QyX3VuaXEiCi1ERVRBSUw6ICBLZXkgKGlkMiwgdmFsaWRfYXQpPShbOSwxMCksIFsi U2F0IEphbiAwMSAwMDowMDowMCAyMDA1IiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDEwIikp IGNvbmZsaWN0cyB3aXRoIGV4aXN0aW5nIGtleSAoaWQyLCB2YWxpZF9hdCk9KFs5LDEwKSwg WyJTYXQgSnVsIDAxIDAwOjAwOjAwIDIwMDAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMTAi KSkuCi1EUk9QIFRBQkxFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdDI7CitFUlJPUjogIGNvbmZs aWN0aW5nIGtleSB2YWx1ZSB2aW9sYXRlcyBleGNsdXNpb24gY29uc3RyYWludCAidGVtcG9y YWwzX3VuaXEiCitERVRBSUw6ICBLZXkgKGlkMiwgdmFsaWRfYXQpPShbOSwxMCksIFswMS0w MS0yMDA1LDAxLTAxLTIwMTApKSBjb25mbGljdHMgd2l0aCBleGlzdGluZyBrZXkgKGlkMiwg dmFsaWRfYXQpPShbOSwxMCksIFswNy0wMS0yMDAwLDAxLTAxLTIwMTApKS4KK0RST1AgVEFC TEUgdGVtcG9yYWwzOwogLS0KIC0tIHRlc3QgYSBQRVJJT0Qgd2l0aCBib3RoIGEgUEsgYW5k IGEgVU5JUVVFIGNvbnN0cmFpbnQKIC0tCi1DUkVBVEUgVEFCTEUgd2l0aG91dF9vdmVybGFw c190ZXN0MiAoCitDUkVBVEUgVEFCTEUgdGVtcG9yYWwzICgKICAgaWQgaW50NHJhbmdlLAot CXZhbGlkX2Zyb20gdGltZXN0YW1wLAotCXZhbGlkX3RpbCB0aW1lc3RhbXAsCisJdmFsaWRf ZnJvbSBkYXRlLAorCXZhbGlkX3RpbCBkYXRlLAogCVBFUklPRCBGT1IgdmFsaWRfYXQgKHZh bGlkX2Zyb20sIHZhbGlkX3RpbCksCiAgIGlkMiBpbnQ4cmFuZ2UsCiAgIG5hbWUgVEVYVCwK LSAgQ09OU1RSQUlOVCB3aXRob3V0X292ZXJsYXBzX3Rlc3QyX3BrIFBSSU1BUlkgS0VZIChp ZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCi0gIENPTlNUUkFJTlQgd2l0aG91dF9v dmVybGFwc190ZXN0Ml91bmlxIFVOSVFVRSAoaWQyLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJM QVBTKQorICBDT05TVFJBSU5UIHRlbXBvcmFsM19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlk X2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAorICBDT05TVFJBSU5UIHRlbXBvcmFsM191bmlxIFVO SVFVRSAoaWQyLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQogKTsKLUlOU0VSVCBJTlRP IHdpdGhvdXRfb3ZlcmxhcHNfdGVzdDIgKGlkLCB2YWxpZF9mcm9tLCB2YWxpZF90aWwsIGlk MiwgbmFtZSkKK0lOU0VSVCBJTlRPIHRlbXBvcmFsMyAoaWQsIHZhbGlkX2Zyb20sIHZhbGlk X3RpbCwgaWQyLCBuYW1lKQogICBWQUxVRVMKICAgKCdbMSwxXScsICcyMDAwLTAxLTAxJywg JzIwMTAtMDEtMDEnLCAnWzcsN10nLCAnZm9vJyksCiAgICgnWzIsMl0nLCAnMjAwMC0wMS0w MScsICcyMDEwLTAxLTAxJywgJ1s5LDldJywgJ2JhcicpCiA7Ci1VUERBVEUgd2l0aG91dF9v dmVybGFwc190ZXN0MiBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTA1LTAx JyBUTyAnMjAwMC0wNy0wMScKK1VQREFURSB0ZW1wb3JhbDMgRk9SIFBPUlRJT04gT0YgdmFs aWRfYXQgRlJPTSAnMjAwMC0wNS0wMScgVE8gJzIwMDAtMDctMDEnCiAgIFNFVCBuYW1lID0g bmFtZSB8fCAnMSc7Ci1VUERBVEUgd2l0aG91dF9vdmVybGFwc190ZXN0MiBGT1IgUE9SVElP TiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTA0LTAxJyBUTyAnMjAwMC0wNi0wMScKK1VQREFU RSB0ZW1wb3JhbDMgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAwMC0wNC0wMScg VE8gJzIwMDAtMDYtMDEnCiAgIFNFVCBuYW1lID0gbmFtZSB8fCAnMicKICAgV0hFUkUgaWQg PSAnWzIsMl0nOwotU0VMRUNUICogRlJPTSB3aXRob3V0X292ZXJsYXBzX3Rlc3QyIE9SREVS IEJZIGlkLCB2YWxpZF9mcm9tLCB2YWxpZF90aWw7Ci0gIGlkICAgfCAgICAgICAgdmFsaWRf ZnJvbSAgICAgICAgfCAgICAgICAgdmFsaWRfdGlsICAgICAgICAgfCAgaWQyICAgfCBuYW1l ICAKLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLQotIFsxLDIpIHwgU2F0IEphbiAwMSAwMDow MDowMCAyMDAwIHwgTW9uIE1heSAwMSAwMDowMDowMCAyMDAwIHwgWzcsOCkgIHwgZm9vCi0g WzEsMikgfCBNb24gTWF5IDAxIDAwOjAwOjAwIDIwMDAgfCBTYXQgSnVsIDAxIDAwOjAwOjAw IDIwMDAgfCBbNyw4KSAgfCBmb28xCi0gWzEsMikgfCBTYXQgSnVsIDAxIDAwOjAwOjAwIDIw MDAgfCBGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMTAgfCBbNyw4KSAgfCBmb28KLSBbMiwzKSB8 IFNhdCBKYW4gMDEgMDA6MDA6MDAgMjAwMCB8IFNhdCBBcHIgMDEgMDA6MDA6MDAgMjAwMCB8 IFs5LDEwKSB8IGJhcgotIFsyLDMpIHwgU2F0IEFwciAwMSAwMDowMDowMCAyMDAwIHwgTW9u IE1heSAwMSAwMDowMDowMCAyMDAwIHwgWzksMTApIHwgYmFyMgotIFsyLDMpIHwgTW9uIE1h eSAwMSAwMDowMDowMCAyMDAwIHwgVGh1IEp1biAwMSAwMDowMDowMCAyMDAwIHwgWzksMTAp IHwgYmFyMTIKLSBbMiwzKSB8IFRodSBKdW4gMDEgMDA6MDA6MDAgMjAwMCB8IFNhdCBKdWwg MDEgMDA6MDA6MDAgMjAwMCB8IFs5LDEwKSB8IGJhcjEKLSBbMiwzKSB8IFNhdCBKdWwgMDEg MDA6MDA6MDAgMjAwMCB8IEZyaSBKYW4gMDEgMDA6MDA6MDAgMjAxMCB8IFs5LDEwKSB8IGJh cgorU0VMRUNUICogRlJPTSB0ZW1wb3JhbDMgT1JERVIgQlkgaWQsIHZhbGlkX2Zyb20sIHZh bGlkX3RpbDsKKyAgaWQgICB8IHZhbGlkX2Zyb20gfCB2YWxpZF90aWwgIHwgIGlkMiAgIHwg bmFtZSAgCistLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0t LS0tLQorIFsxLDIpIHwgMDEtMDEtMjAwMCB8IDA1LTAxLTIwMDAgfCBbNyw4KSAgfCBmb28K KyBbMSwyKSB8IDA1LTAxLTIwMDAgfCAwNy0wMS0yMDAwIHwgWzcsOCkgIHwgZm9vMQorIFsx LDIpIHwgMDctMDEtMjAwMCB8IDAxLTAxLTIwMTAgfCBbNyw4KSAgfCBmb28KKyBbMiwzKSB8 IDAxLTAxLTIwMDAgfCAwNC0wMS0yMDAwIHwgWzksMTApIHwgYmFyCisgWzIsMykgfCAwNC0w MS0yMDAwIHwgMDUtMDEtMjAwMCB8IFs5LDEwKSB8IGJhcjIKKyBbMiwzKSB8IDA1LTAxLTIw MDAgfCAwNi0wMS0yMDAwIHwgWzksMTApIHwgYmFyMTIKKyBbMiwzKSB8IDA2LTAxLTIwMDAg fCAwNy0wMS0yMDAwIHwgWzksMTApIHwgYmFyMQorIFsyLDMpIHwgMDctMDEtMjAwMCB8IDAx LTAxLTIwMTAgfCBbOSwxMCkgfCBiYXIKICg4IHJvd3MpCiAKIC0tIGNvbmZsaWN0aW5nIGlk IG9ubHk6Ci1JTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QyIChpZCwgdmFsaWRf ZnJvbSwgdmFsaWRfdGlsLCBpZDIsIG5hbWUpCitJTlNFUlQgSU5UTyB0ZW1wb3JhbDMgKGlk LCB2YWxpZF9mcm9tLCB2YWxpZF90aWwsIGlkMiwgbmFtZSkKICAgVkFMVUVTCiAgICgnWzEs MV0nLCAnMjAwNS0wMS0wMScsICcyMDA2LTAxLTAxJywgJ1s4LDhdJywgJ2ZvbzMnKTsKLUVS Uk9SOiAgY29uZmxpY3Rpbmcga2V5IHZhbHVlIHZpb2xhdGVzIGV4Y2x1c2lvbiBjb25zdHJh aW50ICJ3aXRob3V0X292ZXJsYXBzX3Rlc3QyX3BrIgotREVUQUlMOiAgS2V5IChpZCwgdHNy YW5nZSh2YWxpZF9mcm9tLCB2YWxpZF90aWwpKT0oWzEsMiksIFsiU2F0IEphbiAwMSAwMDow MDowMCAyMDA1IiwiU3VuIEphbiAwMSAwMDowMDowMCAyMDA2IikpIGNvbmZsaWN0cyB3aXRo IGV4aXN0aW5nIGtleSAoaWQsIHRzcmFuZ2UodmFsaWRfZnJvbSwgdmFsaWRfdGlsKSk9KFsx LDIpLCBbIlNhdCBKdWwgMDEgMDA6MDA6MDAgMjAwMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAg MjAxMCIpKS4KK0VSUk9SOiAgY29uZmxpY3Rpbmcga2V5IHZhbHVlIHZpb2xhdGVzIGV4Y2x1 c2lvbiBjb25zdHJhaW50ICJ0ZW1wb3JhbDNfcGsiCitERVRBSUw6ICBLZXkgKGlkLCBkYXRl cmFuZ2UodmFsaWRfZnJvbSwgdmFsaWRfdGlsKSk9KFsxLDIpLCBbMDEtMDEtMjAwNSwwMS0w MS0yMDA2KSkgY29uZmxpY3RzIHdpdGggZXhpc3Rpbmcga2V5IChpZCwgZGF0ZXJhbmdlKHZh bGlkX2Zyb20sIHZhbGlkX3RpbCkpPShbMSwyKSwgWzA3LTAxLTIwMDAsMDEtMDEtMjAxMCkp LgogLS0gY29uZmxpY3RpbmcgaWQyIG9ubHk6Ci1JTlNFUlQgSU5UTyB3aXRob3V0X292ZXJs YXBzX3Rlc3QyIChpZCwgdmFsaWRfZnJvbSwgdmFsaWRfdGlsLCBpZDIsIG5hbWUpCitJTlNF UlQgSU5UTyB0ZW1wb3JhbDMgKGlkLCB2YWxpZF9mcm9tLCB2YWxpZF90aWwsIGlkMiwgbmFt ZSkKICAgVkFMVUVTCiAgICgnWzMsM10nLCAnMjAwNS0wMS0wMScsICcyMDEwLTAxLTAxJywg J1s5LDldJywgJ2JhcjMnKQogOwotRVJST1I6ICBjb25mbGljdGluZyBrZXkgdmFsdWUgdmlv bGF0ZXMgZXhjbHVzaW9uIGNvbnN0cmFpbnQgIndpdGhvdXRfb3ZlcmxhcHNfdGVzdDJfdW5p cSIKLURFVEFJTDogIEtleSAoaWQyLCB0c3JhbmdlKHZhbGlkX2Zyb20sIHZhbGlkX3RpbCkp PShbOSwxMCksIFsiU2F0IEphbiAwMSAwMDowMDowMCAyMDA1IiwiRnJpIEphbiAwMSAwMDow MDowMCAyMDEwIikpIGNvbmZsaWN0cyB3aXRoIGV4aXN0aW5nIGtleSAoaWQyLCB0c3Jhbmdl KHZhbGlkX2Zyb20sIHZhbGlkX3RpbCkpPShbOSwxMCksIFsiU2F0IEp1bCAwMSAwMDowMDow MCAyMDAwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDEwIikpLgotRFJPUCBUQUJMRSB3aXRo b3V0X292ZXJsYXBzX3Rlc3QyOworRVJST1I6ICBjb25mbGljdGluZyBrZXkgdmFsdWUgdmlv bGF0ZXMgZXhjbHVzaW9uIGNvbnN0cmFpbnQgInRlbXBvcmFsM191bmlxIgorREVUQUlMOiAg S2V5IChpZDIsIGRhdGVyYW5nZSh2YWxpZF9mcm9tLCB2YWxpZF90aWwpKT0oWzksMTApLCBb MDEtMDEtMjAwNSwwMS0wMS0yMDEwKSkgY29uZmxpY3RzIHdpdGggZXhpc3Rpbmcga2V5IChp ZDIsIGRhdGVyYW5nZSh2YWxpZF9mcm9tLCB2YWxpZF90aWwpKT0oWzksMTApLCBbMDctMDEt MjAwMCwwMS0wMS0yMDEwKSkuCitEUk9QIFRBQkxFIHRlbXBvcmFsMzsKIC0tCiAtLSB0ZXN0 IGNoYW5naW5nIHRoZSBQSydzIGRlcGVuZGVuY2llcwogLS0KLUNSRUFURSBUQUJMRSB3aXRo b3V0X292ZXJsYXBzX3Rlc3QyICgKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbDMgKAogCWlkIGlu dDRyYW5nZSwKIAl2YWxpZF9hdCB0c3JhbmdlLAotCUNPTlNUUkFJTlQgd2l0aG91dF9vdmVy bGFwczJfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQor CUNPTlNUUkFJTlQgdGVtcG9yYWwzX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lU SE9VVCBPVkVSTEFQUykKICk7Ci1BTFRFUiBUQUJMRSB3aXRob3V0X292ZXJsYXBzX3Rlc3Qy IEFMVEVSIENPTFVNTiB2YWxpZF9hdCBEUk9QIE5PVCBOVUxMOworQUxURVIgVEFCTEUgdGVt cG9yYWwzIEFMVEVSIENPTFVNTiB2YWxpZF9hdCBEUk9QIE5PVCBOVUxMOwogRVJST1I6ICBj b2x1bW4gInZhbGlkX2F0IiBpcyBpbiBhIHByaW1hcnkga2V5Ci1BTFRFUiBUQUJMRSB3aXRo b3V0X292ZXJsYXBzX3Rlc3QyIEFMVEVSIENPTFVNTiB2YWxpZF9hdCBUWVBFIHRzdHpyYW5n ZSBVU0lORyB0c3R6cmFuZ2UobG93ZXIodmFsaWRfYXQpLCB1cHBlcih2YWxpZF9hdCkpOwot QUxURVIgVEFCTEUgd2l0aG91dF9vdmVybGFwc190ZXN0MiBSRU5BTUUgQ09MVU1OIHZhbGlk X2F0IFRPIHZhbGlkX3RocnU7Ci1BTFRFUiBUQUJMRSB3aXRob3V0X292ZXJsYXBzX3Rlc3Qy IERST1AgQ09MVU1OIHZhbGlkX3RocnU7Ci1EUk9QIFRBQkxFIHdpdGhvdXRfb3ZlcmxhcHNf dGVzdDI7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbDMgQUxURVIgQ09MVU1OIHZhbGlkX2F0IFRZ UEUgdHN0enJhbmdlIFVTSU5HIHRzdHpyYW5nZShsb3dlcih2YWxpZF9hdCksIHVwcGVyKHZh bGlkX2F0KSk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbDMgUkVOQU1FIENPTFVNTiB2YWxpZF9h dCBUTyB2YWxpZF90aHJ1OworQUxURVIgVEFCTEUgdGVtcG9yYWwzIERST1AgQ09MVU1OIHZh bGlkX3RocnU7CitEUk9QIFRBQkxFIHRlbXBvcmFsMzsKIC0tCiAtLSB0ZXN0IFBBUlRJVElP TiBCWSBmb3IgcmFuZ2VzCiAtLQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJh bGxlbF9zY2hlZHVsZSBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKaW5k ZXggZjM2ZTE1YTBmZS4uMjAyYzMyMGVkOCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVz cy9wYXJhbGxlbF9zY2hlZHVsZQorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3Nj aGVkdWxlCkBAIC00OCw3ICs0OCw3IEBAIHRlc3Q6IGNyZWF0ZV9pbmRleCBjcmVhdGVfaW5k ZXhfc3BnaXN0IGNyZWF0ZV92aWV3IGluZGV4X2luY2x1ZGluZyBpbmRleF9pbmNsdWRpCiAj IC0tLS0tLS0tLS0KICMgQW5vdGhlciBncm91cCBvZiBwYXJhbGxlbCB0ZXN0cwogIyAtLS0t LS0tLS0tCi10ZXN0OiBjcmVhdGVfYWdncmVnYXRlIGNyZWF0ZV9mdW5jdGlvbl9zcWwgY3Jl YXRlX2Nhc3QgY29uc3RyYWludHMgdHJpZ2dlcnMgc2VsZWN0IGluaGVyaXQgdHlwZWRfdGFi bGUgcGVyaW9kcyB2YWN1dW0gZHJvcF9pZl9leGlzdHMgdXBkYXRhYmxlX3ZpZXdzIHJvbGVh dHRyaWJ1dGVzIGNyZWF0ZV9hbSBoYXNoX2Z1bmMgZXJyb3JzIGluZmluaXRlX3JlY3Vyc2UK K3Rlc3Q6IGNyZWF0ZV9hZ2dyZWdhdGUgY3JlYXRlX2Z1bmN0aW9uX3NxbCBjcmVhdGVfY2Fz dCBjb25zdHJhaW50cyB0cmlnZ2VycyBzZWxlY3QgaW5oZXJpdCB0eXBlZF90YWJsZSBwZXJp b2RzIHZhY3V1bSBkcm9wX2lmX2V4aXN0cyB1cGRhdGFibGVfdmlld3Mgcm9sZWF0dHJpYnV0 ZXMgY3JlYXRlX2FtIGhhc2hfZnVuYyBlcnJvcnMgaW5maW5pdGVfcmVjdXJzZSBmb3JfcG9y dGlvbl9vZgogCiAjIC0tLS0tLS0tLS0KICMgc2FuaXR5X2NoZWNrIGRvZXMgYSB2YWN1dW0s IGFmZmVjdGluZyB0aGUgc29ydCBvcmRlciBvZiBTRUxFQ1QgKgpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvZm9yX3BvcnRpb25fb2Yuc3FsIGIvc3JjL3Rlc3QvcmVncmVz cy9zcWwvZm9yX3BvcnRpb25fb2Yuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAuLmJjN2YwYmFiOTYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdy ZXNzL3NxbC9mb3JfcG9ydGlvbl9vZi5zcWwKQEAgLTAsMCArMSw2MjggQEAKKy0tIFRlc3Rz IGZvciBVUERBVEUvREVMRVRFIEZPUiBQT1JUSU9OIE9GCisKKy0tIFdvcmtzIG9uIG5vbi1Q SyBjb2x1bW5zCitDUkVBVEUgVEFCTEUgZm9yX3BvcnRpb25fb2ZfdGVzdCAoCisgIGlkIGlu dDRyYW5nZSwKKyAgdmFsaWRfYXQgdHNyYW5nZSwKKyAgbmFtZSB0ZXh0IE5PVCBOVUxMCisp OworSU5TRVJUIElOVE8gZm9yX3BvcnRpb25fb2ZfdGVzdCBWQUxVRVMKKygnWzEsMiknLCAn WzIwMTgtMDEtMDIsMjAyMC0wMS0wMSknLCAnb25lJyk7CisKK1VQREFURSBmb3JfcG9ydGlv bl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAxLTE1JyBU TyAnMjAxOS0wMS0wMScKK1NFVCBuYW1lID0gJ2Zvbyc7CisKK0RFTEVURSBGUk9NIGZvcl9w b3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEt MTUnIFRPIFVOQk9VTkRFRDsKKworU0VMRUNUICogRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0 OworCistLSBXb3JrcyBvbiBtb3JlIHRoYW4gb25lIHBlcmlvZAorRFJPUCBUQUJMRSBmb3Jf cG9ydGlvbl9vZl90ZXN0OworQ1JFQVRFIFRBQkxFIGZvcl9wb3J0aW9uX29mX3Rlc3QgKAor ICBpZCBpbnQ0cmFuZ2UsCisgIHZhbGlkMV9hdCB0c3JhbmdlLAorICB2YWxpZDJfYXQgdHNy YW5nZSwKKyAgbmFtZSB0ZXh0IE5PVCBOVUxMCispOworSU5TRVJUIElOVE8gZm9yX3BvcnRp b25fb2ZfdGVzdCBWQUxVRVMKKygnWzEsMiknLCAnWzIwMTgtMDEtMDIsMjAxOC0wMi0wMykn LCAnWzIwMTUtMDEtMDEsMjAyNS0wMS0wMSknLCAnb25lJyk7CisKK1VQREFURSBmb3JfcG9y dGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZDFfYXQgRlJPTSAnMjAxOC0wMS0x NScgVE8gVU5CT1VOREVECitTRVQgbmFtZSA9ICdmb28nOworU0VMRUNUICogRlJPTSBmb3Jf cG9ydGlvbl9vZl90ZXN0OworCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBP UlRJT04gT0YgdmFsaWQyX2F0IEZST00gJzIwMTgtMDEtMTUnIFRPIFVOQk9VTkRFRAorU0VU IG5hbWUgPSAnYmFyJzsKK1NFTEVDVCAqIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdDsKKwor REVMRVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWQx X2F0IEZST00gJzIwMTgtMDEtMjAnIFRPIFVOQk9VTkRFRDsKK1NFTEVDVCAqIEZST00gZm9y X3BvcnRpb25fb2ZfdGVzdDsKKworREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdAor Rk9SIFBPUlRJT04gT0YgdmFsaWQyX2F0IEZST00gJzIwMTgtMDEtMjAnIFRPIFVOQk9VTkRF RDsKK1NFTEVDVCAqIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdDsKKworCitEUk9QIFRBQkxF IGZvcl9wb3J0aW9uX29mX3Rlc3Q7CitDUkVBVEUgVEFCTEUgZm9yX3BvcnRpb25fb2ZfdGVz dCAoCisgIGlkIGludDRyYW5nZSBOT1QgTlVMTCwKKyAgdmFsaWRfYXQgdHNyYW5nZSBOT1Qg TlVMTCwKKyAgbmFtZSB0ZXh0IE5PVCBOVUxMLAorCUNPTlNUUkFJTlQgZm9yX3BvcnRpb25f b2ZfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsK K0lOU0VSVCBJTlRPIGZvcl9wb3J0aW9uX29mX3Rlc3QKK1ZBTFVFUworKCdbMSwyKScsICdb MjAxOC0wMS0wMiwyMDE4LTAyLTAzKScsICdvbmUnKSwKKygnWzEsMiknLCAnWzIwMTgtMDIt MDMsMjAxOC0wMy0wMyknLCAnb25lJyksCisoJ1sxLDIpJywgJ1syMDE4LTAzLTAzLDIwMTgt MDQtMDQpJywgJ29uZScpLAorKCdbMiwzKScsICdbMjAxOC0wMS0wMSwyMDE4LTAxLTA1KScs ICd0d28nKSwKKygnWzMsNCknLCAnWzIwMTgtMDEtMDEsKScsICd0aHJlZScpLAorKCdbNCw1 KScsICcoLDIwMTgtMDQtMDEpJywgJ2ZvdXInKSwKKygnWzUsNiknLCAnKCwpJywgJ2ZpdmUn KQorOworCistLQorLS0gVVBEQVRFIHRlc3RzCistLQorCistLSBTZXR0aW5nIHdpdGggYSBt aXNzaW5nIGNvbHVtbiBmYWlscworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQ T1JUSU9OIE9GIGludmFsaWRfYXQgRlJPTSAnMjAxOC0wNi0wMScgVE8gVU5CT1VOREVECitT RVQgbmFtZSA9ICdmb28nCitXSEVSRSBpZCA9ICdbNSw2KSc7CisKKy0tIFNldHRpbmcgdGhl IHJhbmdlIGZhaWxzCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04g T0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wNi0wMScgVE8gVU5CT1VOREVECitTRVQgdmFsaWRf YXQgPSAnWzE5OTAtMDEtMDEsMTk5OS0wMS0wMSknCitXSEVSRSBpZCA9ICdbNSw2KSc7CisK Ky0tIFRoZSB3cm9uZyB0eXBlIGZhaWxzCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAor Rk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAxIFRPIDQKK1NFVCBuYW1lID0gJ25vcGUn CitXSEVSRSBpZCA9ICdbMyw0KSc7CisKKy0tIFNldHRpbmcgd2l0aCB0aW1lc3RhbXBzIHJl dmVyc2VkIGZhaWxzCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04g T0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wNi0wMScgVE8gJzIwMTgtMDEtMDEnCitTRVQgbmFt ZSA9ICd0aHJlZV4xJworV0hFUkUgaWQgPSAnWzMsNCknOworCistLSBTZXR0aW5nIHdpdGgg YSBzdWJxdWVyeSBmYWlscworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JU SU9OIE9GIHZhbGlkX2F0IEZST00gKFNFTEVDVCAnMjAxOC0wMS0wMScpIFRPICcyMDE4LTA2 LTAxJworU0VUIG5hbWUgPSAnbm9wZScKK1dIRVJFIGlkID0gJ1szLDQpJzsKKworLS0gU2V0 dGluZyB3aXRoIGEgY29sdW1uIGZhaWxzCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAor Rk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSBsb3dlcih2YWxpZF9hdCkgVE8gVU5CT1VO REVECitTRVQgbmFtZSA9ICdub3BlJworV0hFUkUgaWQgPSAnWzMsNCknOworCistLSBTZXR0 aW5nIHdpdGggdGltZXN0YW1wcyBlcXVhbCBkb2VzIG5vdGhpbmcKK1VQREFURSBmb3JfcG9y dGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTA0LTAx JyBUTyAnMjAxOC0wNC0wMScKK1NFVCBuYW1lID0gJ3RocmVlXjAnCitXSEVSRSBpZCA9ICdb Myw0KSc7CisKKy0tIFVwZGF0aW5nIGEgZmluaXRlL29wZW4gcG9ydGlvbiB3aXRoIGEgZmlu aXRlL29wZW4gdGFyZ2V0CitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJ T04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wNi0wMScgVE8gVU5CT1VOREVECitTRVQgbmFt ZSA9ICd0aHJlZV4xJworV0hFUkUgaWQgPSAnWzMsNCknOworCistLSBVcGRhdGluZyBhIGZp bml0ZS9vcGVuIHBvcnRpb24gd2l0aCBhbiBvcGVuL2Zpbml0ZSB0YXJnZXQKK1VQREFURSBm b3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIFVOQk9V TkRFRCBUTyAnMjAxOC0wMy0wMScKK1NFVCBuYW1lID0gJ3RocmVlXjInCitXSEVSRSBpZCA9 ICdbMyw0KSc7CisKKy0tIFVwZGF0aW5nIGFuIG9wZW4vZmluaXRlIHBvcnRpb24gd2l0aCBh biBvcGVuL2Zpbml0ZSB0YXJnZXQKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1Ig UE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIFVOQk9VTkRFRCBUTyAnMjAxOC0wMi0wMScKK1NF VCBuYW1lID0gJ2ZvdXJeMScKK1dIRVJFIGlkID0gJ1s0LDUpJzsKKworLS0gVXBkYXRpbmcg YW4gb3Blbi9maW5pdGUgcG9ydGlvbiB3aXRoIGEgZmluaXRlL29wZW4gdGFyZ2V0CitVUERB VEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAn MjAxNy0wMS0wMScgVE8gVU5CT1VOREVECitTRVQgbmFtZSA9ICdmb3VyXjInCitXSEVSRSBp ZCA9ICdbNCw1KSc7CisKKy0tIFVwZGF0aW5nIGEgZmluaXRlL2Zpbml0ZSBwb3J0aW9uIHdp dGggYW4gZXhhY3QgZml0CitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJ T04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxNy0wMS0wMScgVE8gJzIwMTgtMDItMDEnCitTRVQg bmFtZSA9ICdmb3VyXjMnCitXSEVSRSBpZCA9ICdbNCw1KSc7CisKKy0tIFVwZGF0aW5nIGFu IGVuY2xvc2VkIHNwYW4KK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElP TiBPRiB2YWxpZF9hdCBGUk9NIFVOQk9VTkRFRCBUTyBVTkJPVU5ERUQKK1NFVCBuYW1lID0g J3R3b14yJworV0hFUkUgaWQgPSAnWzIsMyknOworCistLSBVcGRhdGluZyBhbiBvcGVuL29w ZW4gcG9ydGlvbiB3aXRoIGEgZmluaXRlL2Zpbml0ZSB0YXJnZXQKK1VQREFURSBmb3JfcG9y dGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAxLTAx JyBUTyAnMjAxOS0wMS0wMScKK1NFVCBuYW1lID0gJ2ZpdmVeMicKK1dIRVJFIGlkID0gJ1s1 LDYpJzsKKworLS0gVXBkYXRpbmcgYW4gZW5jbG9zZWQgc3BhbiB3aXRoIHNlcGFyYXRlIHBy b3RydWRpbmcgc3BhbnMKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElP TiBPRiB2YWxpZF9hdCBGUk9NICcyMDE3LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScKK1NFVCBu YW1lID0gJ2ZpdmVeMycKK1dIRVJFIGlkID0gJ1s1LDYpJzsKKworLS0gVXBkYXRpbmcgbXVs dGlwbGUgZW5jbG9zZWQgc3BhbnMKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1Ig UE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIE5VTEwgVE8gTlVMTAorU0VUIG5hbWUgPSAnb25l XjInCitXSEVSRSBpZCA9ICdbMSwyKSc7CisKKy0tIFVwZGF0aW5nIHdpdGggYSBzaGlmdC9y ZWR1Y2UgY29uZmxpY3QKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElP TiBPRiB2YWxpZF9hdAorICBGUk9NICcyMDE4LTAzLTAxJyBBVCBUSU1FIFpPTkUgSU5URVJW QUwgJzEnIEhPVVIgVE8gTUlOVVRFCisgIFRPICcyMDE5LTAxLTAxJworU0VUIG5hbWUgPSAn b25lXjMnCitXSEVSRSBpZCA9ICdbMSwyKSc7CisKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90 ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdAorICBGUk9NICcyMDE4LTAzLTAxJyBBVCBU SU1FIFpPTkUgSU5URVJWQUwgJzInIEhPVVIKKyAgVE8gJzIwMTktMDEtMDEnCitTRVQgbmFt ZSA9ICdvbmVeNCcKK1dIRVJFIGlkID0gJ1sxLDIpJzsKKworVVBEQVRFIGZvcl9wb3J0aW9u X29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0CisgIEZST00gKCcyMDE4LTAzLTAx JyBBVCBUSU1FIFpPTkUgSU5URVJWQUwgJzInIEhPVVIpCisgIFRPICcyMDE5LTAxLTAxJwor U0VUIG5hbWUgPSAnb25lXjQnCitXSEVSRSBpZCA9ICdbMSwyKSc7CisKKy0tIFVwZGF0aW5n IHRoZSBub24tcmFuZ2UgcGFydCBvZiB0aGUgUEs6CitVUERBVEUgZm9yX3BvcnRpb25fb2Zf dGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wMi0xNScgVE8gTlVM TAorU0VUIGlkID0gJ1s2LDcpJworV0hFUkUgaWQgPSAnWzEsMiknOworCistLSBVUERBVEUg d2l0aCBubyBXSEVSRSBjbGF1c2UKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1Ig UE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDMwLTAxLTAxJyBUTyBOVUxMCitTRVQgbmFt ZSA9IG5hbWUgfHwgJyonOworCitTRUxFQ1QgKiBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3Qg T1JERVIgQlkgaWQsIHZhbGlkX2F0OworCistLQorLS0gREVMRVRFIHRlc3RzCistLQorCist LSBEZWxldGluZyB3aXRoIGEgbWlzc2luZyBjb2x1bW4gZmFpbHMKK0RFTEVURSBGUk9NIGZv cl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIGludmFsaWRfYXQgRlJPTSAnMjAx OC0wNi0wMScgVE8gTlVMTAorV0hFUkUgaWQgPSAnWzUsNiknOworCistLSBEZWxldGluZyB3 aXRoIHRpbWVzdGFtcHMgcmV2ZXJzZWQgZmFpbHMKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9u X29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDYtMDEnIFRP ICcyMDE4LTAxLTAxJworV0hFUkUgaWQgPSAnWzMsNCknOworCistLSBEZWxldGluZyB3aXRo IHRpbWVzdGFtcHMgZXF1YWwgZG9lcyBub3RoaW5nCitERUxFVEUgRlJPTSBmb3JfcG9ydGlv bl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTA0LTAxJyBU TyAnMjAxOC0wNC0wMScKK1dIRVJFIGlkID0gJ1szLDQpJzsKKworLS0gRGVsZXRpbmcgd2l0 aCBhIGNsb3NlZC9jbG9zZWQgdGFyZ2V0CitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90 ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTA2LTAxJyBUTyAnMjAy MC0wNi0wMScKK1dIRVJFIGlkID0gJ1s1LDYpJzsKKworLS0gRGVsZXRpbmcgd2l0aCBhIGNs b3NlZC9vcGVuIHRhcmdldAorREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9S IFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wNC0wMScgVE8gTlVMTAorV0hFUkUg aWQgPSAnWzMsNCknOworCistLSBEZWxldGluZyB3aXRoIGFuIG9wZW4vY2xvc2VkIHRhcmdl dAorREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFs aWRfYXQgRlJPTSBOVUxMIFRPICcyMDE4LTAyLTA4JworV0hFUkUgaWQgPSAnWzEsMiknOwor CistLSBEZWxldGluZyB3aXRoIGFuIG9wZW4vb3BlbiB0YXJnZXQKK0RFTEVURSBGUk9NIGZv cl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gTlVMTCBU TyBOVUxMCitXSEVSRSBpZCA9ICdbNiw3KSc7CisKKy0tIERFTEVURSB3aXRoIG5vIFdIRVJF IGNsYXVzZQorREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04g T0YgdmFsaWRfYXQgRlJPTSAnMjAyNS0wMS0wMScgVE8gTlVMTDsKKworU0VMRUNUICogRlJP TSBmb3JfcG9ydGlvbl9vZl90ZXN0IE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKKworLS0gVVBE QVRFIC4uLiBSRVRVUk5JTkcgcmV0dXJucyBvbmx5IHRoZSB1cGRhdGVkIHZhbHVlcyAobm90 IHRoZSBpbnNlcnRlZCBzaWRlIHZhbHVlcykKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0 CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAyLTAxJyBUTyAnMjAxOC0w Mi0xNScKK1NFVCBuYW1lID0gJ3RocmVlXjMnCitXSEVSRSBpZCA9ICdbMyw0KScKK1JFVFVS TklORyAqOworCistLSB0ZXN0IHRoYXQgd2UgcnVuIHRyaWdnZXJzIG9uIHRoZSBVUERBVEUv REVMRVRFZCByb3cgYW5kIHRoZSBJTlNFUlRlZCByb3dzCisKK0NSRUFURSBGVU5DVElPTiBm b3JfcG9ydGlvbl9vZl90cmlnZ2VyKCkKK1JFVFVSTlMgdHJpZ2dlcgorQVMKKyQkCitCRUdJ TgorICBSQUlTRSBOT1RJQ0UgJyUgJSAlIG9mICUnLCBUR19XSEVOLCBUR19PUCwgTkVXLnZh bGlkX2F0LCBPTEQudmFsaWRfYXQ7CisgIElGIFRHX09QID0gJ0RFTEVURScgVEhFTgorICAg IFJFVFVSTiBPTEQ7CisgIEVMU0UKKyAgICBSRVRVUk4gTkVXOworICBFTkQgSUY7CitFTkQ7 CiskJAorTEFOR1VBR0UgcGxwZ3NxbDsKKworQ1JFQVRFIFRSSUdHRVIgdHJnX2Zvcl9wb3J0 aW9uX29mX2JlZm9yZV9pbnNlcnQKKyAgQkVGT1JFIElOU0VSVCBPTiBmb3JfcG9ydGlvbl9v Zl90ZXN0CisgIEZPUiBFQUNIIFJPVworICBFWEVDVVRFIEZVTkNUSU9OIGZvcl9wb3J0aW9u X29mX3RyaWdnZXIoKTsKK0NSRUFURSBUUklHR0VSIHRyZ19mb3JfcG9ydGlvbl9vZl9hZnRl cl9pbnNlcnQKKyAgQUZURVIgSU5TRVJUIE9OIGZvcl9wb3J0aW9uX29mX3Rlc3QKKyAgRk9S IEVBQ0ggUk9XCisgIEVYRUNVVEUgRlVOQ1RJT04gZm9yX3BvcnRpb25fb2ZfdHJpZ2dlcigp OworQ1JFQVRFIFRSSUdHRVIgdHJnX2Zvcl9wb3J0aW9uX29mX2JlZm9yZV91cGRhdGUKKyAg QkVGT1JFIFVQREFURSBPTiBmb3JfcG9ydGlvbl9vZl90ZXN0CisgIEZPUiBFQUNIIFJPVwor ICBFWEVDVVRFIEZVTkNUSU9OIGZvcl9wb3J0aW9uX29mX3RyaWdnZXIoKTsKK0NSRUFURSBU UklHR0VSIHRyZ19mb3JfcG9ydGlvbl9vZl9hZnRlcl91cGRhdGUKKyAgQUZURVIgVVBEQVRF IE9OIGZvcl9wb3J0aW9uX29mX3Rlc3QKKyAgRk9SIEVBQ0ggUk9XCisgIEVYRUNVVEUgRlVO Q1RJT04gZm9yX3BvcnRpb25fb2ZfdHJpZ2dlcigpOworQ1JFQVRFIFRSSUdHRVIgdHJnX2Zv cl9wb3J0aW9uX29mX2JlZm9yZV9kZWxldGUKKyAgQkVGT1JFIERFTEVURSBPTiBmb3JfcG9y dGlvbl9vZl90ZXN0CisgIEZPUiBFQUNIIFJPVworICBFWEVDVVRFIEZVTkNUSU9OIGZvcl9w b3J0aW9uX29mX3RyaWdnZXIoKTsKK0NSRUFURSBUUklHR0VSIHRyZ19mb3JfcG9ydGlvbl9v Zl9hZnRlcl9kZWxldGUKKyAgQUZURVIgREVMRVRFIE9OIGZvcl9wb3J0aW9uX29mX3Rlc3QK KyAgRk9SIEVBQ0ggUk9XCisgIEVYRUNVVEUgRlVOQ1RJT04gZm9yX3BvcnRpb25fb2ZfdHJp Z2dlcigpOworCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0Yg dmFsaWRfYXQgRlJPTSAnMjAyMS0wMS0wMScgVE8gJzIwMjItMDEtMDEnCitTRVQgbmFtZSA9 ICdmaXZlXjQnCitXSEVSRSBpZCA9ICdbNSw2KSc7CisKK0RFTEVURSBGUk9NIGZvcl9wb3J0 aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMjMtMDEtMDEn IFRPICcyMDI0LTAxLTAxJworV0hFUkUgaWQgPSAnWzUsNiknOworCitTRUxFQ1QgKiBGUk9N IGZvcl9wb3J0aW9uX29mX3Rlc3QgT1JERVIgQlkgaWQsIHZhbGlkX2F0OworCistLQorLS0g Tm93IHJlLXJ1biB0aGUgc2FtZSB0ZXN0cyBidXQgd2l0aCBhIFBFUklPRCBpbnN0ZWFkIG9m IGEgcmFuZ2U6CistLQorCitEUk9QIFRBQkxFIGZvcl9wb3J0aW9uX29mX3Rlc3Q7CisKKy0t IFdvcmtzIG9uIG5vbi1QSyBjb2x1bW5zCitDUkVBVEUgVEFCTEUgZm9yX3BvcnRpb25fb2Zf dGVzdCAoCisgIGlkIGludDRyYW5nZSwKKyAgdmFsaWRfZnJvbSB0aW1lc3RhbXAsCisgIHZh bGlkX3RpbCB0aW1lc3RhbXAsCisgIFBFUklPRCBGT1IgdmFsaWRfYXQgKHZhbGlkX2Zyb20s IHZhbGlkX3RpbCksCisgIG5hbWUgdGV4dCBOT1QgTlVMTAorKTsKK0lOU0VSVCBJTlRPIGZv cl9wb3J0aW9uX29mX3Rlc3QgVkFMVUVTCisoJ1sxLDIpJywgJzIwMTgtMDEtMDInLCAnMjAy MC0wMS0wMScsICdvbmUnKTsKKworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQ T1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDEtMTUnIFRPICcyMDE5LTAxLTAxJwor U0VUIG5hbWUgPSAnZm9vJzsKKworREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdAor Rk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0xNScgVE8gVU5CT1VOREVE OworCitTRUxFQ1QgKiBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3Q7CisKKy0tIFdvcmtzIG9u IG1vcmUgdGhhbiBvbmUgcGVyaW9kCitEUk9QIFRBQkxFIGZvcl9wb3J0aW9uX29mX3Rlc3Q7 CitDUkVBVEUgVEFCTEUgZm9yX3BvcnRpb25fb2ZfdGVzdCAoCisgIGlkIGludDRyYW5nZSwK KyAgdmFsaWQxX2Zyb20gdGltZXN0YW1wLAorICB2YWxpZDFfdGlsIHRpbWVzdGFtcCwKKyAg dmFsaWQyX2Zyb20gdGltZXN0YW1wLAorICB2YWxpZDJfdGlsIHRpbWVzdGFtcCwKKyAgUEVS SU9EIEZPUiB2YWxpZDFfYXQgKHZhbGlkMV9mcm9tLCB2YWxpZDFfdGlsKSwKKyAgUEVSSU9E IEZPUiB2YWxpZDJfYXQgKHZhbGlkMl9mcm9tLCB2YWxpZDJfdGlsKSwKKyAgbmFtZSB0ZXh0 IE5PVCBOVUxMCispOworSU5TRVJUIElOVE8gZm9yX3BvcnRpb25fb2ZfdGVzdCBWQUxVRVMK KygnWzEsMiknLCAnMjAxOC0wMS0wMicsICcyMDE4LTAyLTAzJywgJzIwMTUtMDEtMDEnLCAn MjAyNS0wMS0wMScsICdvbmUnKTsKKworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZP UiBQT1JUSU9OIE9GIHZhbGlkMV9hdCBGUk9NICcyMDE4LTAxLTE1JyBUTyBVTkJPVU5ERUQK K1NFVCBuYW1lID0gJ2Zvbyc7CitTRUxFQ1QgKiBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3Q7 CisKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZDJf YXQgRlJPTSAnMjAxOC0wMS0xNScgVE8gVU5CT1VOREVECitTRVQgbmFtZSA9ICdiYXInOwor U0VMRUNUICogRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0OworCitERUxFVEUgRlJPTSBmb3Jf cG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZDFfYXQgRlJPTSAnMjAxOC0w MS0yMCcgVE8gVU5CT1VOREVEOworU0VMRUNUICogRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0 OworCitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2 YWxpZDJfYXQgRlJPTSAnMjAxOC0wMS0yMCcgVE8gVU5CT1VOREVEOworU0VMRUNUICogRlJP TSBmb3JfcG9ydGlvbl9vZl90ZXN0OworCisKK0RST1AgVEFCTEUgZm9yX3BvcnRpb25fb2Zf dGVzdDsKK0NSRUFURSBUQUJMRSBmb3JfcG9ydGlvbl9vZl90ZXN0ICgKKyAgaWQgaW50NHJh bmdlIE5PVCBOVUxMLAorICB2YWxpZF9mcm9tIHRpbWVzdGFtcCwKKyAgdmFsaWRfdGlsIHRp bWVzdGFtcCwKKyAgUEVSSU9EIEZPUiB2YWxpZF9hdCAodmFsaWRfZnJvbSwgdmFsaWRfdGls KSwKKyAgbmFtZSB0ZXh0IE5PVCBOVUxMLAorCUNPTlNUUkFJTlQgZm9yX3BvcnRpb25fb2Zf cGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0lO U0VSVCBJTlRPIGZvcl9wb3J0aW9uX29mX3Rlc3QKK1ZBTFVFUworKCdbMSwyKScsICcyMDE4 LTAxLTAyJywgJzIwMTgtMDItMDMnLCAnb25lJyksCisoJ1sxLDIpJywgJzIwMTgtMDItMDMn LCAnMjAxOC0wMy0wMycsICdvbmUnKSwKKygnWzEsMiknLCAnMjAxOC0wMy0wMycsICcyMDE4 LTA0LTA0JywgJ29uZScpLAorKCdbMiwzKScsICcyMDE4LTAxLTAxJywgJzIwMTgtMDEtMDUn LCAndHdvJyksCisoJ1szLDQpJywgJzIwMTgtMDEtMDEnLCBudWxsLCAndGhyZWUnKSwKKygn WzQsNSknLCBudWxsLCAnMjAxOC0wNC0wMScsICdmb3VyJyksCisoJ1s1LDYpJywgbnVsbCwg bnVsbCwgJ2ZpdmUnKQorOworCistLQorLS0gVVBEQVRFIHRlc3RzCistLQorCistLSBTZXR0 aW5nIHdpdGggYSBtaXNzaW5nIGNvbHVtbiBmYWlscworVVBEQVRFIGZvcl9wb3J0aW9uX29m X3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIGludmFsaWRfYXQgRlJPTSAnMjAxOC0wNi0wMScgVE8g VU5CT1VOREVECitTRVQgbmFtZSA9ICdmb28nCitXSEVSRSBpZCA9ICdbNSw2KSc7CisKKy0t IFNldHRpbmcgdGhlIHN0YXJ0IGNvbHVtbiBmYWlscworVVBEQVRFIGZvcl9wb3J0aW9uX29m X3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDYtMDEnIFRPIFVO Qk9VTkRFRAorU0VUIHZhbGlkX2Zyb20gPSAnMTk5MC0wMS0wMScKK1dIRVJFIGlkID0gJ1s1 LDYpJzsKKworLS0gU2V0dGluZyB0aGUgZW5kIGNvbHVtbiBmYWlscworVVBEQVRFIGZvcl9w b3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDYt MDEnIFRPIFVOQk9VTkRFRAorU0VUIHZhbGlkX3RpbCA9ICcxOTk5LTAxLTAxJworV0hFUkUg aWQgPSAnWzUsNiknOworCistLSBTZXR0aW5nIHdpdGggdGltZXN0YW1wcyByZXZlcnNlZCBm YWlscworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlk X2F0IEZST00gJzIwMTgtMDYtMDEnIFRPICcyMDE4LTAxLTAxJworU0VUIG5hbWUgPSAndGhy ZWVeMScKK1dIRVJFIGlkID0gJ1szLDQpJzsKKworLS0gU2V0dGluZyB3aXRoIGEgc3VicXVl cnkgZmFpbHMKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2 YWxpZF9hdCBGUk9NIChTRUxFQ1QgJzIwMTgtMDEtMDEnKSBUTyAnMjAxOC0wNi0wMScKK1NF VCBuYW1lID0gJ25vcGUnCitXSEVSRSBpZCA9ICdbMyw0KSc7CisKKy0tIFNldHRpbmcgd2l0 aCBhIGNvbHVtbiBmYWlscworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JU SU9OIE9GIHZhbGlkX2F0IEZST00gdmFsaWRfZnJvbSBUTyBVTkJPVU5ERUQKK1NFVCBuYW1l ID0gJ25vcGUnCitXSEVSRSBpZCA9ICdbMyw0KSc7CisKKy0tIFNldHRpbmcgd2l0aCB0aW1l c3RhbXBzIGVxdWFsIGRvZXMgbm90aGluZworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QK K0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDQtMDEnIFRPICcyMDE4LTA0 LTAxJworU0VUIG5hbWUgPSAndGhyZWVeMCcKK1dIRVJFIGlkID0gJ1szLDQpJzsKKworLS0g VXBkYXRpbmcgYSBmaW5pdGUvb3BlbiBwb3J0aW9uIHdpdGggYSBmaW5pdGUvb3BlbiB0YXJn ZXQKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9h dCBGUk9NICcyMDE4LTA2LTAxJyBUTyBVTkJPVU5ERUQKK1NFVCBuYW1lID0gJ3RocmVlXjEn CitXSEVSRSBpZCA9ICdbMyw0KSc7CisKKy0tIFVwZGF0aW5nIGEgZmluaXRlL29wZW4gcG9y dGlvbiB3aXRoIGFuIG9wZW4vZmluaXRlIHRhcmdldAorVVBEQVRFIGZvcl9wb3J0aW9uX29m X3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gVU5CT1VOREVEIFRPICcyMDE4 LTAzLTAxJworU0VUIG5hbWUgPSAndGhyZWVeMicKK1dIRVJFIGlkID0gJ1szLDQpJzsKKwor LS0gVXBkYXRpbmcgYW4gb3Blbi9maW5pdGUgcG9ydGlvbiB3aXRoIGFuIG9wZW4vZmluaXRl IHRhcmdldAorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZh bGlkX2F0IEZST00gVU5CT1VOREVEIFRPICcyMDE4LTAyLTAxJworU0VUIG5hbWUgPSAnZm91 cl4xJworV0hFUkUgaWQgPSAnWzQsNSknOworCistLSBVcGRhdGluZyBhbiBvcGVuL2Zpbml0 ZSBwb3J0aW9uIHdpdGggYSBmaW5pdGUvb3BlbiB0YXJnZXQKK1VQREFURSBmb3JfcG9ydGlv bl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE3LTAxLTAxJyBU TyBVTkJPVU5ERUQKK1NFVCBuYW1lID0gJ2ZvdXJeMicKK1dIRVJFIGlkID0gJ1s0LDUpJzsK KworLS0gVXBkYXRpbmcgYSBmaW5pdGUvZmluaXRlIHBvcnRpb24gd2l0aCBhbiBleGFjdCBm aXQKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9h dCBGUk9NICcyMDE3LTAxLTAxJyBUTyAnMjAxOC0wMi0wMScKK1NFVCBuYW1lID0gJ2ZvdXJe MycKK1dIRVJFIGlkID0gJ1s0LDUpJzsKKworLS0gVXBkYXRpbmcgYW4gZW5jbG9zZWQgc3Bh bgorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0 IEZST00gVU5CT1VOREVEIFRPIFVOQk9VTkRFRAorU0VUIG5hbWUgPSAndHdvXjInCitXSEVS RSBpZCA9ICdbMiwzKSc7CisKKy0tIFVwZGF0aW5nIGFuIG9wZW4vb3BlbiBwb3J0aW9uIHdp dGggYSBmaW5pdGUvZmluaXRlIHRhcmdldAorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QK K0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDEtMDEnIFRPICcyMDE5LTAx LTAxJworU0VUIG5hbWUgPSAnZml2ZV4yJworV0hFUkUgaWQgPSAnWzUsNiknOworCistLSBV cGRhdGluZyBhbiBlbmNsb3NlZCBzcGFuIHdpdGggc2VwYXJhdGUgcHJvdHJ1ZGluZyBzcGFu cworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0 IEZST00gJzIwMTctMDEtMDEnIFRPICcyMDIwLTAxLTAxJworU0VUIG5hbWUgPSAnZml2ZV4z JworV0hFUkUgaWQgPSAnWzUsNiknOworCistLSBVcGRhdGluZyBtdWx0aXBsZSBlbmNsb3Nl ZCBzcGFucworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZh bGlkX2F0IEZST00gTlVMTCBUTyBOVUxMCitTRVQgbmFtZSA9ICdvbmVeMicKK1dIRVJFIGlk ID0gJ1sxLDIpJzsKKworLS0gVXBkYXRpbmcgd2l0aCBhIHNoaWZ0L3JlZHVjZSBjb25mbGlj dAorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0 CisgIEZST00gJzIwMTgtMDMtMDEnIEFUIFRJTUUgWk9ORSBJTlRFUlZBTCAnMScgSE9VUiBU TyBNSU5VVEUKKyAgVE8gJzIwMTktMDEtMDEnCitTRVQgbmFtZSA9ICdvbmVeMycKK1dIRVJF IGlkID0gJ1sxLDIpJzsKKworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JU SU9OIE9GIHZhbGlkX2F0CisgIEZST00gJzIwMTgtMDMtMDEnIEFUIFRJTUUgWk9ORSBJTlRF UlZBTCAnMicgSE9VUgorICBUTyAnMjAxOS0wMS0wMScKK1NFVCBuYW1lID0gJ29uZV40Jwor V0hFUkUgaWQgPSAnWzEsMiknOworCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9S IFBPUlRJT04gT0YgdmFsaWRfYXQKKyAgRlJPTSAoJzIwMTgtMDMtMDEnIEFUIFRJTUUgWk9O RSBJTlRFUlZBTCAnMicgSE9VUikKKyAgVE8gJzIwMTktMDEtMDEnCitTRVQgbmFtZSA9ICdv bmVeNCcKK1dIRVJFIGlkID0gJ1sxLDIpJzsKKworLS0gVXBkYXRpbmcgdGhlIG5vbi1yYW5n ZSBwYXJ0IG9mIHRoZSBQSzoKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9S VElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAyLTE1JyBUTyBOVUxMCitTRVQgaWQgPSAn WzYsNyknCitXSEVSRSBpZCA9ICdbMSwyKSc7CisKKy0tIFVQREFURSB3aXRoIG5vIFdIRVJF IGNsYXVzZQorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZh bGlkX2F0IEZST00gJzIwMzAtMDEtMDEnIFRPIE5VTEwKK1NFVCBuYW1lID0gbmFtZSB8fCAn Kic7CisKKy0tIFRPRE86IFVQREFURSB3aXRoIGdlbmVyYXRlZCBjb2x1bW5zIHRvbworU0VM RUNUICogRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0IE9SREVSIEJZIGlkLCB2YWxpZF9mcm9t IE5VTExTIEZJUlNULCB2YWxpZF90aWw7CisKKy0tCistLSBERUxFVEUgdGVzdHMKKy0tCisK Ky0tIERlbGV0aW5nIHdpdGggYSBtaXNzaW5nIGNvbHVtbiBmYWlscworREVMRVRFIEZST00g Zm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgaW52YWxpZF9hdCBGUk9NICcy MDE4LTA2LTAxJyBUTyBOVUxMCitXSEVSRSBpZCA9ICdbNSw2KSc7CisKKy0tIERlbGV0aW5n IHdpdGggdGltZXN0YW1wcyByZXZlcnNlZCBmYWlscworREVMRVRFIEZST00gZm9yX3BvcnRp b25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wNi0wMScg VE8gJzIwMTgtMDEtMDEnCitXSEVSRSBpZCA9ICdbMyw0KSc7CisKKy0tIERlbGV0aW5nIHdp dGggdGltZXN0YW1wcyBlcXVhbCBkb2VzIG5vdGhpbmcKK0RFTEVURSBGUk9NIGZvcl9wb3J0 aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDQtMDEn IFRPICcyMDE4LTA0LTAxJworV0hFUkUgaWQgPSAnWzMsNCknOworCistLSBEZWxldGluZyB3 aXRoIGEgY2xvc2VkL2Nsb3NlZCB0YXJnZXQKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29m X3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDYtMDEnIFRPICcy MDIwLTA2LTAxJworV0hFUkUgaWQgPSAnWzUsNiknOworCistLSBEZWxldGluZyB3aXRoIGEg Y2xvc2VkL29wZW4gdGFyZ2V0CitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitG T1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTA0LTAxJyBUTyBOVUxMCitXSEVS RSBpZCA9ICdbMyw0KSc7CisKKy0tIERlbGV0aW5nIHdpdGggYW4gb3Blbi9jbG9zZWQgdGFy Z2V0CitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2 YWxpZF9hdCBGUk9NIE5VTEwgVE8gJzIwMTgtMDItMDgnCitXSEVSRSBpZCA9ICdbMSwyKSc7 CisKKy0tIERlbGV0aW5nIHdpdGggYW4gb3Blbi9vcGVuIHRhcmdldAorREVMRVRFIEZST00g Zm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSBOVUxM IFRPIE5VTEwKK1dIRVJFIGlkID0gJ1s2LDcpJzsKKworLS0gREVMRVRFIHdpdGggbm8gV0hF UkUgY2xhdXNlCitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElP TiBPRiB2YWxpZF9hdCBGUk9NICcyMDI1LTAxLTAxJyBUTyBOVUxMOworCitTRUxFQ1QgKiBG Uk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QgT1JERVIgQlkgaWQsIHZhbGlkX2Zyb20gTlVMTFMg RklSU1QsIHZhbGlkX3RpbDsKKworLS0gVVBEQVRFIC4uLiBSRVRVUk5JTkcgcmV0dXJucyBv bmx5IHRoZSB1cGRhdGVkIHZhbHVlcyAobm90IHRoZSBpbnNlcnRlZCBzaWRlIHZhbHVlcykK K1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBG Uk9NICcyMDE4LTAyLTAxJyBUTyAnMjAxOC0wMi0xNScKK1NFVCBuYW1lID0gJ3RocmVlXjMn CitXSEVSRSBpZCA9ICdbMyw0KScKK1JFVFVSTklORyAqOworCistLSB0ZXN0IHRoYXQgd2Ug cnVuIHRyaWdnZXJzIG9uIHRoZSBVUERBVEUvREVMRVRFZCByb3cgYW5kIHRoZSBJTlNFUlRl ZCByb3dzCisKK0NSRUFURSBGVU5DVElPTiBmb3JfcG9ydGlvbl9vZl90cmlnZ2VyMigpCitS RVRVUk5TIHRyaWdnZXIKK0FTCiskJAorQkVHSU4KKyAgUkFJU0UgTk9USUNFICclICUgWyUs JSkgb2YgWyUsJSknLCBUR19XSEVOLCBUR19PUCwgTkVXLnZhbGlkX2Zyb20sIE5FVy52YWxp ZF90aWwsIE9MRC52YWxpZF9mcm9tLCBPTEQudmFsaWRfdGlsOworICBJRiBUR19PUCA9ICdE RUxFVEUnIFRIRU4KKyAgICBSRVRVUk4gT0xEOworICBFTFNFCisgICAgUkVUVVJOIE5FVzsK KyAgRU5EIElGOworRU5EOworJCQKK0xBTkdVQUdFIHBscGdzcWw7CisKK0NSRUFURSBUUklH R0VSIHRyZ19mb3JfcG9ydGlvbl9vZl9iZWZvcmVfaW5zZXJ0CisgIEJFRk9SRSBJTlNFUlQg T04gZm9yX3BvcnRpb25fb2ZfdGVzdAorICBGT1IgRUFDSCBST1cKKyAgRVhFQ1VURSBGVU5D VElPTiBmb3JfcG9ydGlvbl9vZl90cmlnZ2VyMigpOworQ1JFQVRFIFRSSUdHRVIgdHJnX2Zv cl9wb3J0aW9uX29mX2FmdGVyX2luc2VydAorICBBRlRFUiBJTlNFUlQgT04gZm9yX3BvcnRp b25fb2ZfdGVzdAorICBGT1IgRUFDSCBST1cKKyAgRVhFQ1VURSBGVU5DVElPTiBmb3JfcG9y dGlvbl9vZl90cmlnZ2VyMigpOworQ1JFQVRFIFRSSUdHRVIgdHJnX2Zvcl9wb3J0aW9uX29m X2JlZm9yZV91cGRhdGUKKyAgQkVGT1JFIFVQREFURSBPTiBmb3JfcG9ydGlvbl9vZl90ZXN0 CisgIEZPUiBFQUNIIFJPVworICBFWEVDVVRFIEZVTkNUSU9OIGZvcl9wb3J0aW9uX29mX3Ry aWdnZXIyKCk7CitDUkVBVEUgVFJJR0dFUiB0cmdfZm9yX3BvcnRpb25fb2ZfYWZ0ZXJfdXBk YXRlCisgIEFGVEVSIFVQREFURSBPTiBmb3JfcG9ydGlvbl9vZl90ZXN0CisgIEZPUiBFQUNI IFJPVworICBFWEVDVVRFIEZVTkNUSU9OIGZvcl9wb3J0aW9uX29mX3RyaWdnZXIyKCk7CitD UkVBVEUgVFJJR0dFUiB0cmdfZm9yX3BvcnRpb25fb2ZfYmVmb3JlX2RlbGV0ZQorICBCRUZP UkUgREVMRVRFIE9OIGZvcl9wb3J0aW9uX29mX3Rlc3QKKyAgRk9SIEVBQ0ggUk9XCisgIEVY RUNVVEUgRlVOQ1RJT04gZm9yX3BvcnRpb25fb2ZfdHJpZ2dlcjIoKTsKK0NSRUFURSBUUklH R0VSIHRyZ19mb3JfcG9ydGlvbl9vZl9hZnRlcl9kZWxldGUKKyAgQUZURVIgREVMRVRFIE9O IGZvcl9wb3J0aW9uX29mX3Rlc3QKKyAgRk9SIEVBQ0ggUk9XCisgIEVYRUNVVEUgRlVOQ1RJ T04gZm9yX3BvcnRpb25fb2ZfdHJpZ2dlcjIoKTsKKworVVBEQVRFIGZvcl9wb3J0aW9uX29m X3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMjEtMDEtMDEnIFRPICcy MDIyLTAxLTAxJworU0VUIG5hbWUgPSAnZml2ZV40JworV0hFUkUgaWQgPSAnWzUsNiknOwor CitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxp ZF9hdCBGUk9NICcyMDIzLTAxLTAxJyBUTyAnMjAyNC0wMS0wMScKK1dIRVJFIGlkID0gJ1s1 LDYpJzsKKworU0VMRUNUICogRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0IE9SREVSIEJZIGlk LCB2YWxpZF9mcm9tIE5VTExTIEZJUlNULCB2YWxpZF90aWw7CmRpZmYgLS1naXQgYS9zcmMv dGVzdC9yZWdyZXNzL3NxbC9wcml2aWxlZ2VzLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L3ByaXZpbGVnZXMuc3FsCmluZGV4IDEzNDgwOWU4Y2MuLjU2OGNlOTdiNjAgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3ByaXZpbGVnZXMuc3FsCisrKyBiL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL3ByaXZpbGVnZXMuc3FsCkBAIC03MTMsNiArNzEzLDQyIEBAIFVQREFU RSBlcnJ0c3QgU0VUIGEgPSAnYWFhYScsIGIgPSBOVUxMIFdIRVJFIGEgPSAnYWFhJzsKIFNF VCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wcml2X3VzZXIxOwogRFJPUCBUQUJM RSBlcnJ0c3Q7CiAKKy0tIHRlc3QgY29sdW1uLWxldmVsIHByaXZpbGVnZXMgb24gdGhlIHJh bmdlL1BFUklPRCB1c2VkIGluIEZPUiBQT1JUSU9OIE9GCitTRVQgU0VTU0lPTiBBVVRIT1JJ WkFUSU9OIHJlZ3Jlc3NfcHJpdl91c2VyMTsKK0NSRUFURSBUQUJMRSB0MSAoCisgIGMxIGlu dDRyYW5nZSwKKyAgdmFsaWRfYXQgdHNyYW5nZSwKKwlDT05TVFJBSU5UIHQxcGsgUFJJTUFS WSBLRVkgKGMxLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0dSQU5UIFNFTEVD VCBPTiB0MSBUTyByZWdyZXNzX3ByaXZfdXNlcjI7CitHUkFOVCBTRUxFQ1QgT04gdDEgVE8g cmVncmVzc19wcml2X3VzZXIzOworR1JBTlQgVVBEQVRFIChjMSkgT04gdDEgVE8gcmVncmVz c19wcml2X3VzZXIyOworR1JBTlQgVVBEQVRFIChjMSwgdmFsaWRfYXQpIE9OIHQxIFRPIHJl Z3Jlc3NfcHJpdl91c2VyMzsKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19w cml2X3VzZXIyOworVVBEQVRFIHQxIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIw MDAtMDEtMDEnIFRPICcyMDAxLTAxLTAxJyBTRVQgYzEgPSAnWzIsMyknOworU0VUIFNFU1NJ T04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3ByaXZfdXNlcjM7CitVUERBVEUgdDEgRk9SIFBP UlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAwMC0wMS0wMScgVE8gJzIwMDEtMDEtMDEnIFNF VCBjMSA9ICdbMiwzKSc7CitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcHJp dl91c2VyMTsKK0RST1AgVEFCTEUgdDE7CisKK0NSRUFURSBUQUJMRSB0MSAoCisgIGMxIGlu dDRyYW5nZSwKKyAgdmFsaWRfZnJvbSB0aW1lc3RhbXAsCisgIHZhbGlkX3RpbCB0aW1lc3Rh bXAsCisgIFBFUklPRCBGT1IgdmFsaWRfYXQgKHZhbGlkX2Zyb20sIHZhbGlkX3RpbCksCisJ Q09OU1RSQUlOVCB0MXBrIFBSSU1BUlkgS0VZIChjMSwgdmFsaWRfYXQgV0lUSE9VVCBPVkVS TEFQUykKKyk7CitHUkFOVCBTRUxFQ1QgT04gdDEgVE8gcmVncmVzc19wcml2X3VzZXIyOwor R1JBTlQgU0VMRUNUIE9OIHQxIFRPIHJlZ3Jlc3NfcHJpdl91c2VyMzsKK0dSQU5UIFVQREFU RSAoYzEpIE9OIHQxIFRPIHJlZ3Jlc3NfcHJpdl91c2VyMjsKK0dSQU5UIFVQREFURSAoYzEs IHZhbGlkX2Zyb20sIHZhbGlkX3RpbCkgT04gdDEgVE8gcmVncmVzc19wcml2X3VzZXIzOwor U0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3ByaXZfdXNlcjI7CitVUERBVEUg dDEgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAwMC0wMS0wMScgVE8gJzIwMDEt MDEtMDEnIFNFVCBjMSA9ICdbMiwzKSc7CitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJl Z3Jlc3NfcHJpdl91c2VyMzsKK1VQREFURSB0MSBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBG Uk9NICcyMDAwLTAxLTAxJyBUTyAnMjAwMS0wMS0wMScgU0VUIGMxID0gJ1syLDMpJzsKK1NF VCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wcml2X3VzZXIxOworRFJPUCBUQUJM RSB0MTsKKwogLS0gdGVzdCBjb2x1bW4tbGV2ZWwgcHJpdmlsZWdlcyB3aGVuIGludm9sdmVk IHdpdGggREVMRVRFCiBTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcHJpdl91 c2VyMTsKIEFMVEVSIFRBQkxFIGF0ZXN0NiBBREQgQ09MVU1OIHRocmVlIGludGVnZXI7CmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC91cGRhdGFibGVfdmlld3Muc3FsIGIv c3JjL3Rlc3QvcmVncmVzcy9zcWwvdXBkYXRhYmxlX3ZpZXdzLnNxbAppbmRleCA3NzM5YjNi ZTc2Li45ODQ1YjNhODE3IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC91cGRh dGFibGVfdmlld3Muc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3VwZGF0YWJsZV92 aWV3cy5zcWwKQEAgLTE1MjQsNiArMTUyNCwyMCBAQCBzZWxlY3QgKiBmcm9tIHV2X2lvY3Vf dGFiOwogZHJvcCB2aWV3IHV2X2lvY3VfdmlldzsKIGRyb3AgdGFibGUgdXZfaW9jdV90YWI7 CiAKKy0tIENoZWNrIFVQREFURSBGT1IgUE9SVElPTiBPRiB3b3JrcyBjb3JyZWN0bHkKK2Ny ZWF0ZSB0YWJsZSB1dl9mcG9fdGFiIChpZCBpbnQ0cmFuZ2UsIHZhbGlkX2F0IHRzcmFuZ2Us IGIgZmxvYXQsCisgICAgY29uc3RyYWludCBwa191dl9mcG9fdGFiIHByaW1hcnkga2V5IChp ZCwgdmFsaWRfYXQgd2l0aG91dCBvdmVybGFwcykpOworaW5zZXJ0IGludG8gdXZfZnBvX3Rh YiB2YWx1ZXMgKCdbMSwxXScsICdbMjAyMC0wMS0wMSwgMjAzMC0wMS0wMSknLCAwKTsKK2Ny ZWF0ZSB2aWV3IHV2X2Zwb192aWV3IGFzCisgICAgc2VsZWN0IGIsIGIrMSBhcyBjLCB2YWxp ZF9hdCwgaWQsICcyLjAnOjp0ZXh0IGFzIHR3byBmcm9tIHV2X2Zwb190YWI7CisKK2luc2Vy dCBpbnRvIHV2X2Zwb192aWV3IChpZCwgdmFsaWRfYXQsIGIpIHZhbHVlcyAoJ1sxLDFdJywg J1syMDEwLTAxLTAxLCAyMDIwLTAxLTAxKScsIDEpOworc2VsZWN0ICogZnJvbSB1dl9mcG9f dmlldzsKK3VwZGF0ZSB1dl9mcG9fdmlldyBmb3IgcG9ydGlvbiBvZiB2YWxpZF9hdCBmcm9t ICcyMDE1LTAxLTAxJyB0byAnMjAyMC0wMS0wMScgc2V0IGIgPSAyIHdoZXJlIGlkID0gJ1sx LDFdJzsKK3NlbGVjdCAqIGZyb20gdXZfZnBvX3ZpZXc7CitkZWxldGUgZnJvbSB1dl9mcG9f dmlldyBmb3IgcG9ydGlvbiBvZiB2YWxpZF9hdCBmcm9tICcyMDE3LTAxLTAxJyB0byAnMjAy Mi0wMS0wMScgd2hlcmUgaWQgPSAnWzEsMV0nOworc2VsZWN0ICogZnJvbSB1dl9mcG9fdmll dzsKKwogLS0gVGVzdCB3aG9sZS1yb3cgcmVmZXJlbmNlcyB0byB0aGUgdmlldwogY3JlYXRl IHRhYmxlIHV2X2lvY3VfdGFiIChhIGludCB1bmlxdWUsIGIgdGV4dCk7CiBjcmVhdGUgdmll dyB1dl9pb2N1X3ZpZXcgYXMKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3dp dGhvdXRfb3ZlcmxhcHMuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvd2l0aG91dF9vdmVy bGFwcy5zcWwKaW5kZXggYmRmZGM1MDk2Ny4uNDYzNGE1ZWNjOSAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvd2l0aG91dF9vdmVybGFwcy5zcWwKKysrIGIvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvd2l0aG91dF9vdmVybGFwcy5zcWwKQEAgLTMwMyw3ICszMDMsNyBAQCBJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzMsM10nLCBOVUxMKTsKIAogQ1JF QVRFIFRBQkxFIHRlbXBvcmFsMyAoCiAgIGlkIGludDRyYW5nZSwKLSAgdmFsaWRfYXQgdHNy YW5nZSwKKyAgdmFsaWRfYXQgZGF0ZXJhbmdlLAogICBpZDIgaW50OHJhbmdlLAogICBuYW1l IFRFWFQsCiAgIENPTlNUUkFJTlQgdGVtcG9yYWwzX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFs aWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCkBAIC0zMTEsNzcgKzMxMSw3NyBAQCBDUkVBVEUg VEFCTEUgdGVtcG9yYWwzICgKICk7CiBJTlNFUlQgSU5UTyB0ZW1wb3JhbDMgKGlkLCB2YWxp ZF9hdCwgaWQyLCBuYW1lKQogICBWQUxVRVMKLSAgKCdbMSwxXScsIHRzcmFuZ2UoJzIwMDAt MDEtMDEnLCAnMjAxMC0wMS0wMScpLCAnWzcsN10nLCAnZm9vJyksCi0gICgnWzIsMl0nLCB0 c3JhbmdlKCcyMDAwLTAxLTAxJywgJzIwMTAtMDEtMDEnKSwgJ1s5LDldJywgJ2JhcicpCisg ICgnWzEsMV0nLCBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAxMC0wMS0wMScpLCAnWzcs N10nLCAnZm9vJyksCisgICgnWzIsMl0nLCBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAx MC0wMS0wMScpLCAnWzksOV0nLCAnYmFyJykKIDsKLVVQREFURSB3aXRob3V0X292ZXJsYXBz X3Rlc3QyIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMDAtMDUtMDEnIFRPICcy MDAwLTA3LTAxJworVVBEQVRFIHRlbXBvcmFsMyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBG Uk9NICcyMDAwLTA1LTAxJyBUTyAnMjAwMC0wNy0wMScKICAgU0VUIG5hbWUgPSBuYW1lIHx8 ICcxJzsKLVVQREFURSB3aXRob3V0X292ZXJsYXBzX3Rlc3QyIEZPUiBQT1JUSU9OIE9GIHZh bGlkX2F0IEZST00gJzIwMDAtMDQtMDEnIFRPICcyMDAwLTA2LTAxJworVVBEQVRFIHRlbXBv cmFsMyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTA0LTAxJyBUTyAnMjAw MC0wNi0wMScKICAgU0VUIG5hbWUgPSBuYW1lIHx8ICcyJwogICBXSEVSRSBpZCA9ICdbMiwy XSc7Ci1TRUxFQ1QgKiBGUk9NIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdDIgT1JERVIgQlkgaWQs IHZhbGlkX2F0OworU0VMRUNUICogRlJPTSB0ZW1wb3JhbDMgT1JERVIgQlkgaWQsIHZhbGlk X2F0OwogLS0gY29uZmxpY3RpbmcgaWQgb25seToKLUlOU0VSVCBJTlRPIHdpdGhvdXRfb3Zl cmxhcHNfdGVzdDIgKGlkLCB2YWxpZF9hdCwgaWQyLCBuYW1lKQorSU5TRVJUIElOVE8gdGVt cG9yYWwzIChpZCwgdmFsaWRfYXQsIGlkMiwgbmFtZSkKICAgVkFMVUVTCi0gICgnWzEsMV0n LCB0c3JhbmdlKCcyMDA1LTAxLTAxJywgJzIwMDYtMDEtMDEnKSwgJ1s4LDhdJywgJ2ZvbzMn KTsKKyAgKCdbMSwxXScsIGRhdGVyYW5nZSgnMjAwNS0wMS0wMScsICcyMDA2LTAxLTAxJyks ICdbOCw4XScsICdmb28zJyk7CiAtLSBjb25mbGljdGluZyBpZDIgb25seToKLUlOU0VSVCBJ TlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdDIgKGlkLCB2YWxpZF9hdCwgaWQyLCBuYW1lKQor SU5TRVJUIElOVE8gdGVtcG9yYWwzIChpZCwgdmFsaWRfYXQsIGlkMiwgbmFtZSkKICAgVkFM VUVTCi0gICgnWzMsM10nLCB0c3JhbmdlKCcyMDA1LTAxLTAxJywgJzIwMTAtMDEtMDEnKSwg J1s5LDldJywgJ2JhcjMnKQorICAoJ1szLDNdJywgZGF0ZXJhbmdlKCcyMDA1LTAxLTAxJywg JzIwMTAtMDEtMDEnKSwgJ1s5LDldJywgJ2JhcjMnKQogOwotRFJPUCBUQUJMRSB3aXRob3V0 X292ZXJsYXBzX3Rlc3QyOworRFJPUCBUQUJMRSB0ZW1wb3JhbDM7CiAKIC0tCiAtLSB0ZXN0 IGEgUEVSSU9EIHdpdGggYm90aCBhIFBLIGFuZCBhIFVOSVFVRSBjb25zdHJhaW50CiAtLQog Ci1DUkVBVEUgVEFCTEUgd2l0aG91dF9vdmVybGFwc190ZXN0MiAoCitDUkVBVEUgVEFCTEUg dGVtcG9yYWwzICgKICAgaWQgaW50NHJhbmdlLAotCXZhbGlkX2Zyb20gdGltZXN0YW1wLAot CXZhbGlkX3RpbCB0aW1lc3RhbXAsCisJdmFsaWRfZnJvbSBkYXRlLAorCXZhbGlkX3RpbCBk YXRlLAogCVBFUklPRCBGT1IgdmFsaWRfYXQgKHZhbGlkX2Zyb20sIHZhbGlkX3RpbCksCiAg IGlkMiBpbnQ4cmFuZ2UsCiAgIG5hbWUgVEVYVCwKLSAgQ09OU1RSQUlOVCB3aXRob3V0X292 ZXJsYXBzX3Rlc3QyX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVS TEFQUyksCi0gIENPTlNUUkFJTlQgd2l0aG91dF9vdmVybGFwc190ZXN0Ml91bmlxIFVOSVFV RSAoaWQyLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorICBDT05TVFJBSU5UIHRlbXBv cmFsM19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAor ICBDT05TVFJBSU5UIHRlbXBvcmFsM191bmlxIFVOSVFVRSAoaWQyLCB2YWxpZF9hdCBXSVRI T1VUIE9WRVJMQVBTKQogKTsKLUlOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdDIg KGlkLCB2YWxpZF9mcm9tLCB2YWxpZF90aWwsIGlkMiwgbmFtZSkKK0lOU0VSVCBJTlRPIHRl bXBvcmFsMyAoaWQsIHZhbGlkX2Zyb20sIHZhbGlkX3RpbCwgaWQyLCBuYW1lKQogICBWQUxV RVMKICAgKCdbMSwxXScsICcyMDAwLTAxLTAxJywgJzIwMTAtMDEtMDEnLCAnWzcsN10nLCAn Zm9vJyksCiAgICgnWzIsMl0nLCAnMjAwMC0wMS0wMScsICcyMDEwLTAxLTAxJywgJ1s5LDld JywgJ2JhcicpCiA7Ci1VUERBVEUgd2l0aG91dF9vdmVybGFwc190ZXN0MiBGT1IgUE9SVElP TiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTA1LTAxJyBUTyAnMjAwMC0wNy0wMScKK1VQREFU RSB0ZW1wb3JhbDMgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAwMC0wNS0wMScg VE8gJzIwMDAtMDctMDEnCiAgIFNFVCBuYW1lID0gbmFtZSB8fCAnMSc7Ci1VUERBVEUgd2l0 aG91dF9vdmVybGFwc190ZXN0MiBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAw LTA0LTAxJyBUTyAnMjAwMC0wNi0wMScKK1VQREFURSB0ZW1wb3JhbDMgRk9SIFBPUlRJT04g T0YgdmFsaWRfYXQgRlJPTSAnMjAwMC0wNC0wMScgVE8gJzIwMDAtMDYtMDEnCiAgIFNFVCBu YW1lID0gbmFtZSB8fCAnMicKICAgV0hFUkUgaWQgPSAnWzIsMl0nOwotU0VMRUNUICogRlJP TSB3aXRob3V0X292ZXJsYXBzX3Rlc3QyIE9SREVSIEJZIGlkLCB2YWxpZF9mcm9tLCB2YWxp ZF90aWw7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsMyBPUkRFUiBCWSBpZCwgdmFsaWRfZnJv bSwgdmFsaWRfdGlsOwogLS0gY29uZmxpY3RpbmcgaWQgb25seToKLUlOU0VSVCBJTlRPIHdp dGhvdXRfb3ZlcmxhcHNfdGVzdDIgKGlkLCB2YWxpZF9mcm9tLCB2YWxpZF90aWwsIGlkMiwg bmFtZSkKK0lOU0VSVCBJTlRPIHRlbXBvcmFsMyAoaWQsIHZhbGlkX2Zyb20sIHZhbGlkX3Rp bCwgaWQyLCBuYW1lKQogICBWQUxVRVMKICAgKCdbMSwxXScsICcyMDA1LTAxLTAxJywgJzIw MDYtMDEtMDEnLCAnWzgsOF0nLCAnZm9vMycpOwogLS0gY29uZmxpY3RpbmcgaWQyIG9ubHk6 Ci1JTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QyIChpZCwgdmFsaWRfZnJvbSwg dmFsaWRfdGlsLCBpZDIsIG5hbWUpCitJTlNFUlQgSU5UTyB0ZW1wb3JhbDMgKGlkLCB2YWxp ZF9mcm9tLCB2YWxpZF90aWwsIGlkMiwgbmFtZSkKICAgVkFMVUVTCiAgICgnWzMsM10nLCAn MjAwNS0wMS0wMScsICcyMDEwLTAxLTAxJywgJ1s5LDldJywgJ2JhcjMnKQogOwotRFJPUCBU QUJMRSB3aXRob3V0X292ZXJsYXBzX3Rlc3QyOworRFJPUCBUQUJMRSB0ZW1wb3JhbDM7CiAK IC0tCiAtLSB0ZXN0IGNoYW5naW5nIHRoZSBQSydzIGRlcGVuZGVuY2llcwogLS0KIAotQ1JF QVRFIFRBQkxFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdDIgKAorQ1JFQVRFIFRBQkxFIHRlbXBv cmFsMyAoCiAJaWQgaW50NHJhbmdlLAogCXZhbGlkX2F0IHRzcmFuZ2UsCi0JQ09OU1RSQUlO VCB3aXRob3V0X292ZXJsYXBzMl9wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhP VVQgT1ZFUkxBUFMpCisJQ09OU1RSQUlOVCB0ZW1wb3JhbDNfcGsgUFJJTUFSWSBLRVkgKGlk LCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQogKTsKIAotQUxURVIgVEFCTEUgd2l0aG91 dF9vdmVybGFwc190ZXN0MiBBTFRFUiBDT0xVTU4gdmFsaWRfYXQgRFJPUCBOT1QgTlVMTDsK LUFMVEVSIFRBQkxFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdDIgQUxURVIgQ09MVU1OIHZhbGlk X2F0IFRZUEUgdHN0enJhbmdlIFVTSU5HIHRzdHpyYW5nZShsb3dlcih2YWxpZF9hdCksIHVw cGVyKHZhbGlkX2F0KSk7Ci1BTFRFUiBUQUJMRSB3aXRob3V0X292ZXJsYXBzX3Rlc3QyIFJF TkFNRSBDT0xVTU4gdmFsaWRfYXQgVE8gdmFsaWRfdGhydTsKLUFMVEVSIFRBQkxFIHdpdGhv dXRfb3ZlcmxhcHNfdGVzdDIgRFJPUCBDT0xVTU4gdmFsaWRfdGhydTsKLURST1AgVEFCTEUg d2l0aG91dF9vdmVybGFwc190ZXN0MjsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsMyBBTFRFUiBD T0xVTU4gdmFsaWRfYXQgRFJPUCBOT1QgTlVMTDsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsMyBB TFRFUiBDT0xVTU4gdmFsaWRfYXQgVFlQRSB0c3R6cmFuZ2UgVVNJTkcgdHN0enJhbmdlKGxv d2VyKHZhbGlkX2F0KSwgdXBwZXIodmFsaWRfYXQpKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFs MyBSRU5BTUUgQ09MVU1OIHZhbGlkX2F0IFRPIHZhbGlkX3RocnU7CitBTFRFUiBUQUJMRSB0 ZW1wb3JhbDMgRFJPUCBDT0xVTU4gdmFsaWRfdGhydTsKK0RST1AgVEFCTEUgdGVtcG9yYWwz OwogCiAtLQogLS0gdGVzdCBQQVJUSVRJT04gQlkgZm9yIHJhbmdlcwotLSAKMi4yNS4xCgo= --------------xLmCyd89q18NiaElblWAsYVm Content-Type: text/x-patch; charset=UTF-8; name="v11-0002-Add-temporal-PRIMARY-KEY-and-UNIQUE-constraints.patch" Content-Disposition: attachment; filename*0="v11-0002-Add-temporal-PRIMARY-KEY-and-UNIQUE-constraints.pat"; filename*1="ch" Content-Transfer-Encoding: base64 RnJvbSA0MjZjYTNiZWQzNmQ3ZmQyMGFhZjM5MjUwNzViMTU2ZTc0ZmI2NDUyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IE1vbiwgMjggSnVuIDIwMjEgMTc6MzM6MjcgLTA3 MDAKU3ViamVjdDogW1BBVENIIHYxMSAyLzRdIEFkZCB0ZW1wb3JhbCBQUklNQVJZIEtFWSBh bmQgVU5JUVVFIGNvbnN0cmFpbnRzCgotIEFkZGVkIFdJVEhPVVQgT1ZFUkxBUFMgdG8gdGhl IGJpc29uIGdyYW1tYXIuIFdlIHBlcm1pdCBlaXRoZXIgcmFuZ2UKICBjb2x1bW5zIG9yIFBF UklPRHMuCi0gVGVtcG9yYWwgUFJJTUFSWSBLRVlzIGFuZCBVTklRVUUgY29uc3RyYWludHMg YXJlIGJhY2tlZCBieSBHaVNUCiAgaW5kZXhlcyBpbnN0ZWFkIG9mIEItdHJlZSBpbmRleGVz LCBzaW5jZSB0aGV5IGFyZSBlc3NlbnRpYWxseQogIGV4Y2x1c2lvbiBjb25zdHJhaW50cyB3 aXRoID0gZm9yIHRoZSBzY2FsYXIgcGFydHMgb2YgdGhlIGtleSBhbmQgJiYKICBmb3IgdGhl IHRlbXBvcmFsIHBhcnQuIFdpdGggUEVSSU9EcyB3ZSBpbmRleCBhIHJhbmdlIGV4cHJlc3Np b24gdXNpbmcKICB0aGUgUEVSSU9EIHN0YXJ0IGFuZCBlbmQgY29sdW1ucy4gV2l0aCByYW5n ZXMgd2UgY2FuIGp1c3QgaW5kZXggdGhlCiAgY29sdW1uLCBzbyBubyBleHByZXNzaW9uIGlz IG5lZWRlZC4KLSBBZGRlZCBwZ19pbmRleC5pbmRwZXJpb2QgdG8gcmVjb3JkIHdoZW4gYSBQ RVJJT0QgaXMgdXNlZCBpbiBhbiBpbmRleAogIGNvbnN0cmFpbnQuCi0gQWRkZWQgcGdfY29u c3RyYWludC5jb250ZW1wb3JhbCB0byBzYXkgd2hldGhlciBhIGNvbnN0cmFpbnQgaXMgYQog IHRlbXBvcmFsIGNvbnN0cmFpbnQuCi0gQWRkZWQgcGdfY29uc3RyYWludC5jb25wZXJpb2Qg dG8gcmVjb3JkIHRoZSBQRVJJT0Qgb2lkIGlmIGEgUEVSSU9EIGlzCiAgdXNlZC4gRm9yIHJh bmdlIGNvbHVtbnMgd2UgY2FuIGp1c3QgaW5jbHVkZSB0aGUgY29sdW1uIGF0dG51bSwgbGlr ZQogIGFueSBvdGhlciBjb2x1bW4gYXBwZWFyaW5nIGluIGEgY29uc3RyYWludC4KLSBBZGRl ZCBkb2NzIGFuZCB0ZXN0cy4KLSBBZGRlZCBwZ19kdW1wIHN1cHBvcnQuCi0tLQogZG9jL3Ny Yy9zZ21sL2RkbC5zZ21sICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA2ICsKIGRvYy9z cmMvc2dtbC9yZWYvY3JlYXRlX3RhYmxlLnNnbWwgICAgICAgICAgICB8ICAzOCArLQogc3Jj L2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMgICAgICAgICAgICAgICAgICAgIHwgICAyICsKIHNy Yy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyAgICAgICAgICAgICAgICAgICB8ICA2MyArLQog c3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19jb25zdHJhaW50LmMgICAgICAgICAgIHwgIDE1ICst CiBzcmMvYmFja2VuZC9jYXRhbG9nL3RvYXN0aW5nLmMgICAgICAgICAgICAgICAgfCAgIDEg Kwogc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMgICAgICAgICAgICAgIHwgMTgz ICsrKysrLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgICAgICAgICAgICAg IHwgIDE4ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy90cmlnZ2VyLmMgICAgICAgICAgICAg ICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvdHlwZWNtZHMuYyAgICAgICAgICAg ICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5jcy5jICAgICAgICAgICAg ICAgICB8ICAgMyArLQogc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSAgICAgICAgICAgICAg ICAgICAgIHwgIDMyICstCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jICAg ICAgICAgICAgfCAyMDcgKysrKysrLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGls cy5jICAgICAgICAgICAgIHwgIDU2ICstCiBzcmMvYmFja2VuZC91dGlscy9jYWNoZS9sc3lz Y2FjaGUuYyAgICAgICAgICAgfCAgMjYgKwogc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVs Y2FjaGUuYyAgICAgICAgICAgIHwgIDIwICstCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5j ICAgICAgICAgICAgICAgICAgICAgfCAgNzggKystCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVt cC5oICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKwogc3JjL2Jpbi9wZ19kdW1wL3QvMDAy X3BnX2R1bXAucGwgICAgICAgICAgICAgIHwgIDk2ICsrKwogc3JjL2Jpbi9wc3FsL2Rlc2Ny aWJlLmMgICAgICAgICAgICAgICAgICAgICAgIHwgIDEyICstCiBzcmMvaW5jbHVkZS9jYXRh bG9nL2luZGV4LmggICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvY2F0 YWxvZy9wZ19jb25zdHJhaW50LmggICAgICAgICAgIHwgIDEyICstCiBzcmMvaW5jbHVkZS9j b21tYW5kcy9kZWZyZW0uaCAgICAgICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9pbmNsdWRl L25vZGVzL2V4ZWNub2Rlcy5oICAgICAgICAgICAgICAgICB8ICAgNCArCiBzcmMvaW5jbHVk ZS9ub2Rlcy9tYWtlZnVuY3MuaCAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9pbmNs dWRlL25vZGVzL3BhcnNlbm9kZXMuaCAgICAgICAgICAgICAgICB8ICAgNCArCiBzcmMvaW5j bHVkZS91dGlscy9sc3lzY2FjaGUuaCAgICAgICAgICAgICAgICAgfCAgIDEgKwogLi4uL3Jl Z3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQgICAgIHwgNTg1ICsrKysrKysr KysrKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZSAgICAgICAg ICAgIHwgICAyICstCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC93aXRob3V0X292ZXJsYXBzLnNx bCAgICAgfCA0MDggKysrKysrKysrKysrCiAzMCBmaWxlcyBjaGFuZ2VkLCAxODE4IGluc2Vy dGlvbnMoKyksIDY3IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQKIGNyZWF0ZSBtb2RlIDEw MDY0NCBzcmMvdGVzdC9yZWdyZXNzL3NxbC93aXRob3V0X292ZXJsYXBzLnNxbAoKZGlmZiAt LWdpdCBhL2RvYy9zcmMvc2dtbC9kZGwuc2dtbCBiL2RvYy9zcmMvc2dtbC9kZGwuc2dtbApp bmRleCBlNzIyZTUzYjJmLi5mMDU3ODc5OTU1IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwv ZGRsLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2RkbC5zZ21sCkBAIC0xMjgwLDYgKzEyODAs MTIgQEAgQ1JFQVRFIFRBQkxFIGJpbGxpbmdfYWRkcmVzc2VzICgKICAgICBBcHBsaWNhdGlv biBwZXJpb2RzIGNhbiBiZSB1c2VkIHRvIGRlZmluZSB0ZW1wb3JhbCBwcmltYXJ5IGFuZCBm b3JlaWduIGtleXMuCiAgICAgQW55IHRhYmxlIHdpdGggYSB0ZW1wb3JhbCBwcmltYXJ5IGtl eSBpcyBhIHRlbXBvcmFsIHRhYmxlIGFuZCBzdXBwb3J0cyB0ZW1wb3JhbCB1cGRhdGUgYW5k IGRlbGV0ZSBjb21tYW5kcy4KICAgIDwvcGFyYT4KKworICAgPHBhcmE+CisgICAgVGVtcG9y YWwgcHJpbWFyeSBrZXlzIGVuZm9yY2UgYSBtb2RpZmllZCB2ZXJzaW9uIG9mIHJlZmVyZW50 aWFsIGludGVncml0eSBjYWxsZWQgdGVtcG9yYWwgcmVmZXJlbnRpYWwgaW50ZWdyaXR5LiBU aGV5IGhhdmUgdHdvIGtpbmRzIG9mIGVsZW1lbnQ6IGZpcnN0IG9uZSBvciBtb3JlIGNvbHVt bnMgdGhhdCBiZWhhdmUgYXMgaW4gb3JkaW5hcnkgcHJpbWFyeSBrZXlzLCB1bmlxdWVseSBk ZXRlcm1pbmlpbmcgYW4gZW50aXR5LAorICAgIGFuZCBzZWNvbmQgYSBwZXJpb2QgKG9yIHJh bmdlIGNvbHVtbikgdGhhdCBxdWFsaWZpZXMgd2hlbiB0aGUgcm93IGFwcGxpZXMuIFNvIGEg dGVtcG9yYWwgcHJpbWFyeSBwZXJtaXRzIG11bHRpcGxlIHJvd3Mgd2l0aCBlcXVhbCB2YWx1 ZXMgaW4gdGhlIG9yZGluYXJ5IGtleSBwYXJ0cywgYXMgbG9uZyBhcyB0aG9zZSByb3dzIGRv bid0IGhhdmUgb3ZlcmxhcHBpbmcgcGVyaW9kcy4gRWFjaCByb3cgbWFrZXMgYSBzdGF0ZW1l bnQgYWJvdXQgdGhlIGVudGl0eSBpZGVudGlmaWVkIGJ5IHRoZSBvcmRpbmFyeSBrZXkgcGFy dHMsIGJ1dCBhcHBseWluZyBvbmx5IHRvIHRoZSBzcGFuIGdpdmVuIGJ5IHRoZSBwZXJpb2Qu CisgICAgVGVtcG9yYWwgcHJpbWFyeSBrZXlzIGFyZSBlc3NlbnRpYWxseSA8bGluayBsaW5r ZW5kPSJzcWwtY3JlYXRldGFibGUtZXhjbHVkZSI+ZXhjbHVzaW9uIGNvbnN0cmFpbnRzPC9s aW5rPiB3aGVyZSB0aGUgZmlyc3Qga2V5IHBhcnRzIGFyZSBjb21wYXJlZCBmb3IgZXF1YWxp dHkgYW5kIHRoZSBsYXN0IHBhcnQgZm9yIG92ZXJsYXBzLgorICAgPC9wYXJhPgogICA8L3Nl Y3QyPgogCiAgIDxzZWN0MiBpZD0iZGRsLXBlcmlvZHMtc3lzdGVtLXBlcmlvZHMiPgpkaWZm IC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUuc2dtbCBiL2RvYy9zcmMv c2dtbC9yZWYvY3JlYXRlX3RhYmxlLnNnbWwKaW5kZXggNTNmOWVkNTVhYS4uYjAyNDg2Yjk0 MCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUuc2dtbAorKysg Yi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJsZS5zZ21sCkBAIC04NSw4ICs4NSw4IEBA IFBFUklPRCBGT1IgeyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGVyaW9kX25h bWU8L3JlcGxhY2VhYmxlPiB8IFNZU1RFTV9UCiAKIFsgQ09OU1RSQUlOVCA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+Y29uc3RyYWludF9uYW1lPC9yZXBsYWNlYWJsZT4gXQog eyBDSEVDSyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5leHByZXNzaW9uPC9y ZXBsYWNlYWJsZT4gKSBbIE5PIElOSEVSSVQgXSB8Ci0gIFVOSVFVRSBbIE5VTExTIFsgTk9U IF0gRElTVElOQ1QgXSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5f bmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLiBdICkgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPmluZGV4X3BhcmFtZXRlcnM8L3JlcGxhY2VhYmxlPiB8Ci0gIFBSSU1BUlkgS0VZ ICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNl YWJsZT4gWywgLi4uIF0gKSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+aW5kZXhf cGFyYW1ldGVyczwvcmVwbGFjZWFibGU+IHwKKyAgVU5JUVVFIFsgTlVMTFMgWyBOT1QgXSBE SVNUSU5DVCBdICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1l PC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gWywgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPnRlbXBvcmFsX2ludGVydmFsPC9yZXBsYWNlYWJsZT4gV0lUSE9VVCBPVkVSTEFQUyBd ICkgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmluZGV4X3BhcmFtZXRlcnM8L3Jl cGxhY2VhYmxlPiB8CisgIFBSSU1BUlkgS0VZICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gWywgPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRlbXBvcmFsX2ludGVydmFsPC9yZXBsYWNlYWJsZT4g V0lUSE9VVCBPVkVSTEFQUyBdICkgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmlu ZGV4X3BhcmFtZXRlcnM8L3JlcGxhY2VhYmxlPiB8CiAgIEVYQ0xVREUgWyBVU0lORyA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+aW5kZXhfbWV0aG9kPC9yZXBsYWNlYWJsZT4g XSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5leGNsdWRlX2VsZW1lbnQ8L3Jl cGxhY2VhYmxlPiBXSVRIIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5vcGVyYXRv cjwvcmVwbGFjZWFibGU+IFssIC4uLiBdICkgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPmluZGV4X3BhcmFtZXRlcnM8L3JlcGxhY2VhYmxlPiBbIFdIRVJFICggPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnByZWRpY2F0ZTwvcmVwbGFjZWFibGU+ICkgXSB8CiAg IEZPUkVJR04gS0VZICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9u YW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gKSBSRUZFUkVOQ0VTIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5yZWZ0YWJsZTwvcmVwbGFjZWFibGU+IFsgKCA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+cmVmY29sdW1uPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0g KSBdCiAgICAgWyBNQVRDSCBGVUxMIHwgTUFUQ0ggUEFSVElBTCB8IE1BVENIIFNJTVBMRSBd IFsgT04gREVMRVRFIDxyZXBsYWNlYWJsZQpAQCAtMTE0LDYgKzExNCwxMCBAQCBXSVRIICgg TU9EVUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtZXJpY19saXRlcmFs PC9yZXBsYWNlYWJsZT4sIFJFTQogCiB7IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IHwgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+ICkgfSBbIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5vcGNsYXNzPC9yZXBsYWNlYWJsZT4gXSBbIEFTQyB8IERFU0Mg XSBbIE5VTExTIHsgRklSU1QgfCBMQVNUIH0gXQogCis8cGhyYXNlPjxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj50ZW1wb3JhbF9pbnRlcnZhbDwvcmVwbGFjZWFibGU+IGluIGEg PGxpdGVyYWw+UFJJTUFSWSBLRVk8L2xpdGVyYWw+LCA8bGl0ZXJhbD5VTklRVUU8L2xpdGVy YWw+LCBvciA8bGl0ZXJhbD5GT1JFSUdOIEtFWTwvbGl0ZXJhbD4gY29uc3RyYWludCBpczo8 L3BocmFzZT4KKworPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJhbmdlX2NvbHVt bl9uYW1lPC9yZXBsYWNlYWJsZT4gfCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ cGVyaW9kX25hbWU8L3JlcGxhY2VhYmxlPgorCiA8cGhyYXNlPjxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5yZWZlcmVudGlhbF9hY3Rpb248L3JlcGxhY2VhYmxlPiBpbiBhIDxs aXRlcmFsPkZPUkVJR04gS0VZPC9saXRlcmFsPi88bGl0ZXJhbD5SRUZFUkVOQ0VTPC9saXRl cmFsPiBjb25zdHJhaW50IGlzOjwvcGhyYXNlPgogCiB7IE5PIEFDVElPTiB8IFJFU1RSSUNU IHwgQ0FTQ0FERSB8IFNFVCBOVUxMIFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSApIF0gfCBTRVQgREVGQVVM VCBbICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBs YWNlYWJsZT4gWywgLi4uIF0gKSBdIH0KQEAgLTEwNDAsNyArMTA0NCwxMCBAQCBXSVRIICgg TU9EVUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtZXJpY19saXRlcmFs PC9yZXBsYWNlYWJsZT4sIFJFTQogCiAgICAgIDxwYXJhPgogICAgICAgQWRkaW5nIGEgdW5p cXVlIGNvbnN0cmFpbnQgd2lsbCBhdXRvbWF0aWNhbGx5IGNyZWF0ZSBhIHVuaXF1ZSBidHJl ZQotICAgICAgaW5kZXggb24gdGhlIGNvbHVtbiBvciBncm91cCBvZiBjb2x1bW5zIHVzZWQg aW4gdGhlIGNvbnN0cmFpbnQuCisgICAgICBpbmRleCBvbiB0aGUgY29sdW1uIG9yIGdyb3Vw IG9mIGNvbHVtbnMgdXNlZCBpbiB0aGUgY29uc3RyYWludC4gQnV0IGlmCisgICAgICB0aGUg Y29uc3RyYWludCBpbmNsdWRlcyBhIDxsaXRlcmFsPldJVEhPVVQgT1ZFUkxBUFM8L2xpdGVy YWw+IGNsYXVzZSwKKyAgICAgIGl0IHdpbGwgdXNlIGEgR2lTVCBpbmRleCBhbmQgYmVoYXZl IGxpa2UgYSB0ZW1wb3JhbCA8bGl0ZXJhbD5QUklNQVJZCisgICAgICBLRVk8L2xpdGVyYWw+ OiBwcmV2ZW50aW5nIGR1cGxpY2F0ZXMgb25seSBpbiBvdmVybGFwcGluZyB0aW1lIHBlcmlv ZHMuCiAgICAgIDwvcGFyYT4KIAogICAgICA8cGFyYT4KQEAgLTEwNTgsNyArMTA2NSw4IEBA IFdJVEggKCBNT0RVTFVTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1lcmlj X2xpdGVyYWw8L3JlcGxhY2VhYmxlPiwgUkVNCiAKICAgIDx2YXJsaXN0ZW50cnkgaWQ9InNx bC1jcmVhdGV0YWJsZS1wYXJtcy1wcmltYXJ5LWtleSI+CiAgICAgPHRlcm0+PGxpdGVyYWw+ UFJJTUFSWSBLRVk8L2xpdGVyYWw+IChjb2x1bW4gY29uc3RyYWludCk8L3Rlcm0+Ci0gICAg PHRlcm0+PGxpdGVyYWw+UFJJTUFSWSBLRVkgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSApPC9saXRlcmFsPgor ICAgIDx0ZXJtPjxsaXRlcmFsPlBSSU1BUlkgS0VZICggPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0KKyAgICBbLCA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGVtcG9yYWxfaW50ZXJ2YWw8L3JlcGxh Y2VhYmxlPiBXSVRIT1VUIE9WRVJMQVBTIF0gKTwvbGl0ZXJhbD4KICAgICA8b3B0aW9uYWw+ IDxsaXRlcmFsPklOQ0xVREUgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29s dW1uX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi5dKTwvbGl0ZXJhbD4gPC9vcHRpb25hbD4g KHRhYmxlIGNvbnN0cmFpbnQpPC90ZXJtPgogICAgIDxsaXN0aXRlbT4KICAgICAgPHBhcmE+ CkBAIC0xMDkyLDggKzExMDAsOCBAQCBXSVRIICggTU9EVUxVUyA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+bnVtZXJpY19saXRlcmFsPC9yZXBsYWNlYWJsZT4sIFJFTQogCiAg ICAgIDxwYXJhPgogICAgICAgQWRkaW5nIGEgPGxpdGVyYWw+UFJJTUFSWSBLRVk8L2xpdGVy YWw+IGNvbnN0cmFpbnQgd2lsbCBhdXRvbWF0aWNhbGx5Ci0gICAgICBjcmVhdGUgYSB1bmlx dWUgYnRyZWUgaW5kZXggb24gdGhlIGNvbHVtbiBvciBncm91cCBvZiBjb2x1bW5zIHVzZWQg aW4gdGhlCi0gICAgICBjb25zdHJhaW50LgorICAgICAgY3JlYXRlIGEgdW5pcXVlIGJ0cmVl IGluZGV4IChvciBHaVNUIGlmIHRlbXBvcmFsKSBvbiB0aGUgY29sdW1uIG9yIGdyb3VwIG9m CisgICAgICBjb2x1bW5zIHVzZWQgaW4gdGhlIGNvbnN0cmFpbnQuCiAgICAgIDwvcGFyYT4K IAogICAgICA8cGFyYT4KQEAgLTExMDYsNiArMTExNCwyNCBAQCBXSVRIICggTU9EVUxVUyA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtZXJpY19saXRlcmFsPC9yZXBsYWNl YWJsZT4sIFJFTQogICAgICAgKGUuZy4sIDxsaXRlcmFsPkRST1AgQ09MVU1OPC9saXRlcmFs PikgY2FuIGNhdXNlIGNhc2NhZGVkIGNvbnN0cmFpbnQgYW5kCiAgICAgICBpbmRleCBkZWxl dGlvbi4KICAgICAgPC9wYXJhPgorCisgICAgIDxwYXJhPgorICAgICAgQSA8bGl0ZXJhbD5Q UklNQVJZIEtFWTwvbGl0ZXJhbD4gd2l0aCBhIDxsaXRlcmFsPldJVEhPVVQgT1ZFUkxBUFM8 L2xpdGVyYWw+IG9wdGlvbgorICAgICAgaXMgYSA8ZW1waGFzaXM+dGVtcG9yYWw8L2VtcGhh c2lzPiBwcmltYXJ5IGtleS4KKyAgICAgIFRoZSA8bGl0ZXJhbD5XSVRIT1VUIE9WRVJMQVBT PC9saXRlcmFsPiB2YWx1ZQorICAgICAgbXVzdCBiZSBhIHBlcmlvZCBvciByYW5nZSB0eXBl IGFuZCBpcyB1c2VkIHRvIGNvbnN0cmFpbiB0aGUgcmVjb3JkJ3MgYXBwbGljYWJpbGl0eQor ICAgICAgdG8ganVzdCB0aGF0IGludGVydmFsICh1c3VhbGx5IGEgcmFuZ2Ugb2YgZGF0ZXMg b3IgdGltZXN0YW1wcykuCisgICAgICBUaGUgbWFpbiBwYXJ0IG9mIHRoZSBwcmltYXJ5IGtl eSBtYXkgYmUgcmVwZWF0ZWQgaW4gb3RoZXIgcm93cyBvZiB0aGUgdGFibGUsCisgICAgICBh cyBsb25nIGFzIHJlY29yZHMgd2l0aCB0aGUgc2FtZSBrZXkgZG9uJ3Qgb3ZlcmxhcCBpbiB0 aGUKKyAgICAgIDxsaXRlcmFsPldJVEhPVVQgT1ZFUkxBUFM8L2xpdGVyYWw+IGNvbHVtbi4K KyAgICAgPC9wYXJhPgorCisgICAgIDxwYXJhPgorICAgICAgQSB0ZW1wb3JhbCA8bGl0ZXJh bD5QUklNQVJZIEtFWTwvbGl0ZXJhbD4gaXMgZW5mb3JjZWQgd2l0aCBhbgorICAgICAgPGxp dGVyYWw+RVhDTFVERTwvbGl0ZXJhbD4gY29uc3RyYWludCByYXRoZXIgdGhhbiBhIDxsaXRl cmFsPlVOSVFVRTwvbGl0ZXJhbD4KKyAgICAgIGNvbnN0cmFpbnQsIGJhY2tlZCBieSBhIEdp U1QgaW5kZXguIFlvdSBtYXkgbmVlZCB0byBpbnN0YWxsIHRoZQorICAgICAgPHhyZWYgbGlu a2VuZD0iYnRyZWUtZ2lzdCIvPiBleHRlbnNpb24gdG8gY3JlYXRlIHRlbXBvcmFsIHByaW1h cnkga2V5cy4KKyAgICAgPC9wYXJhPgogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3Rl bnRyeT4KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMgYi9zcmMv YmFja2VuZC9jYXRhbG9nL2hlYXAuYwppbmRleCBkNzkzODg5OGRiLi5jZjM2MTkyMWI0IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL2hlYXAuYworKysgYi9zcmMvYmFja2Vu ZC9jYXRhbG9nL2hlYXAuYwpAQCAtMjIxOCw2ICsyMjE4LDggQEAgU3RvcmVSZWxDaGVjayhS ZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIgKmNjbmFtZSwgTm9kZSAqZXhwciwKIAkJCQkJCQkg IGlzX2xvY2FsLCAvKiBjb25pc2xvY2FsICovCiAJCQkJCQkJICBpbmhjb3VudCwgLyogY29u aW5oY291bnQgKi8KIAkJCQkJCQkgIGlzX25vX2luaGVyaXQsCS8qIGNvbm5vaW5oZXJpdCAq LworCQkJCQkJCSAgZmFsc2UsCS8qIGNvbnRlbXBvcmFsICovCisJCQkJCQkJICBJbnZhbGlk T2lkLAkvKiBjb25wZXJpb2QgKi8KIAkJCQkJCQkgIGlzX2ludGVybmFsKTsgLyogaW50ZXJu YWxseSBjb25zdHJ1Y3RlZD8gKi8KIAogCXBmcmVlKGNjYmluKTsKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXgu YwppbmRleCAzNTJlNDNkMGU2Li5lNjQ4YmY3M2QzIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9jYXRhbG9nL2luZGV4LmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCkBA IC01MCw2ICs1MCw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19pbmhlcml0cy5oIgogI2lu Y2x1ZGUgImNhdGFsb2cvcGdfb3BjbGFzcy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfb3Bl cmF0b3IuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3BlcmlvZC5oIgogI2luY2x1ZGUgImNh dGFsb2cvcGdfdGFibGVzcGFjZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHJpZ2dlci5o IgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgpAQCAtMjQ5LDEzICsyNTAsMTYgQEAg aW5kZXhfY2hlY2tfcHJpbWFyeV9rZXkoUmVsYXRpb24gaGVhcFJlbCwKIAkJSGVhcFR1cGxl CWF0dHR1cGxlOwogCQlGb3JtX3BnX2F0dHJpYnV0ZSBhdHRmb3JtOwogCi0JCWlmIChhdHRu dW0gPT0gMCkKKwkJaWYgKGF0dG51bSA9PSAwICYmICEoc3RtdC0+aXN0ZW1wb3JhbCAmJiBp ID4gMCkpCiAJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRV UkVfTk9UX1NVUFBPUlRFRCksCiAJCQkJCSBlcnJtc2coInByaW1hcnkga2V5cyBjYW5ub3Qg YmUgZXhwcmVzc2lvbnMiKSkpOwogCi0JCS8qIFN5c3RlbSBhdHRyaWJ1dGVzIGFyZSBuZXZl ciBudWxsLCBzbyBubyBuZWVkIHRvIGNoZWNrICovCi0JCWlmIChhdHRudW0gPCAwKQorCQkv KgorCQkgKiBTeXN0ZW0gYXR0cmlidXRlcyBhcmUgbmV2ZXIgbnVsbCwgc28gbm8gbmVlZCB0 byBjaGVjay4KKwkJICogQWxzbyBza2lwIGV4cHJlc3Npb25zLgorCQkgKi8KKwkJaWYgKGF0 dG51bSA8PSAwKQogCQkJY29udGludWU7CiAKIAkJYXR0dHVwbGUgPSBTZWFyY2hTeXNDYWNo ZTIoQVRUTlVNLApAQCAtNTYxLDYgKzU2NSw3IEBAIFVwZGF0ZUluZGV4UmVsYXRpb24oT2lk IGluZGV4b2lkLAogCQkJCQlib29sIGlzcmVhZHkpCiB7CiAJaW50MnZlY3RvciAqaW5ka2V5 OworCU9pZAkJCWluZHBlcmlvZDsKIAlvaWR2ZWN0b3IgICppbmRjb2xsYXRpb247CiAJb2lk dmVjdG9yICAqaW5kY2xhc3M7CiAJaW50MnZlY3RvciAqaW5kb3B0aW9uOwpAQCAtNTc5LDYg KzU4NCw3IEBAIFVwZGF0ZUluZGV4UmVsYXRpb24oT2lkIGluZGV4b2lkLAogCWluZGtleSA9 IGJ1aWxkaW50MnZlY3RvcihOVUxMLCBpbmRleEluZm8tPmlpX051bUluZGV4QXR0cnMpOwog CWZvciAoaSA9IDA7IGkgPCBpbmRleEluZm8tPmlpX051bUluZGV4QXR0cnM7IGkrKykKIAkJ aW5ka2V5LT52YWx1ZXNbaV0gPSBpbmRleEluZm8tPmlpX0luZGV4QXR0ck51bWJlcnNbaV07 CisJaW5kcGVyaW9kID0gaW5kZXhJbmZvLT5paV9QZXJpb2QgPyAoKFBlcmlvZERlZiAqKSBp bmRleEluZm8tPmlpX1BlcmlvZCktPm9pZCA6IEludmFsaWRPaWQ7CiAJaW5kY29sbGF0aW9u ID0gYnVpbGRvaWR2ZWN0b3IoY29sbGF0aW9uT2lkcywgaW5kZXhJbmZvLT5paV9OdW1JbmRl eEtleUF0dHJzKTsKIAlpbmRjbGFzcyA9IGJ1aWxkb2lkdmVjdG9yKGNsYXNzT2lkcywgaW5k ZXhJbmZvLT5paV9OdW1JbmRleEtleUF0dHJzKTsKIAlpbmRvcHRpb24gPSBidWlsZGludDJ2 ZWN0b3IoY29sb3B0aW9ucywgaW5kZXhJbmZvLT5paV9OdW1JbmRleEtleUF0dHJzKTsKQEAg LTYzNyw2ICs2NDMsNyBAQCBVcGRhdGVJbmRleFJlbGF0aW9uKE9pZCBpbmRleG9pZCwKIAl2 YWx1ZXNbQW51bV9wZ19pbmRleF9pbmRpc2xpdmUgLSAxXSA9IEJvb2xHZXREYXR1bSh0cnVl KTsKIAl2YWx1ZXNbQW51bV9wZ19pbmRleF9pbmRpc3JlcGxpZGVudCAtIDFdID0gQm9vbEdl dERhdHVtKGZhbHNlKTsKIAl2YWx1ZXNbQW51bV9wZ19pbmRleF9pbmRrZXkgLSAxXSA9IFBv aW50ZXJHZXREYXR1bShpbmRrZXkpOworCXZhbHVlc1tBbnVtX3BnX2luZGV4X2luZHBlcmlv ZCAtIDFdID0gT2JqZWN0SWRHZXREYXR1bShpbmRwZXJpb2QpOwogCXZhbHVlc1tBbnVtX3Bn X2luZGV4X2luZGNvbGxhdGlvbiAtIDFdID0gUG9pbnRlckdldERhdHVtKGluZGNvbGxhdGlv bik7CiAJdmFsdWVzW0FudW1fcGdfaW5kZXhfaW5kY2xhc3MgLSAxXSA9IFBvaW50ZXJHZXRE YXR1bShpbmRjbGFzcyk7CiAJdmFsdWVzW0FudW1fcGdfaW5kZXhfaW5kb3B0aW9uIC0gMV0g PSBQb2ludGVyR2V0RGF0dW0oaW5kb3B0aW9uKTsKQEAgLTEyOTUsNiArMTMwMiw3IEBAIGlu ZGV4X2NvbmN1cnJlbnRseV9jcmVhdGVfY29weShSZWxhdGlvbiBoZWFwUmVsYXRpb24sIE9p ZCBvbGRJbmRleElkLAogCURhdHVtCQlpbmRjbGFzc0RhdHVtLAogCQkJCWNvbE9wdGlvbkRh dHVtLAogCQkJCW9wdGlvbkRhdHVtOworCU9pZAkJCXBlcmlvZGlkOwogCW9pZHZlY3RvciAg KmluZGNsYXNzOwogCWludDJ2ZWN0b3IgKmluZGNvbG9wdGlvbnM7CiAJYm9vbAkJaXNudWxs OwpAQCAtMTMyOCw2ICsxMzM2LDkgQEAgaW5kZXhfY29uY3VycmVudGx5X2NyZWF0ZV9jb3B5 KFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwgT2lkIG9sZEluZGV4SWQsCiAJCQkJCQkJCQkJCUFu dW1fcGdfaW5kZXhfaW5kb3B0aW9uKTsKIAlpbmRjb2xvcHRpb25zID0gKGludDJ2ZWN0b3Ig KikgRGF0dW1HZXRQb2ludGVyKGNvbE9wdGlvbkRhdHVtKTsKIAorCS8qIEdldCB0aGUgcGVy aW9kICovCisJcGVyaW9kaWQgPSBvbGRJbmZvLT5paV9QZXJpb2QgPyAoKFBlcmlvZERlZiAq KSBvbGRJbmZvLT5paV9QZXJpb2QpLT5vaWQgOiBJbnZhbGlkT2lkOworCiAJLyogRmV0Y2gg b3B0aW9ucyBvZiBpbmRleCBpZiBhbnkgKi8KIAljbGFzc1R1cGxlID0gU2VhcmNoU3lzQ2Fj aGUxKFJFTE9JRCwgb2xkSW5kZXhJZCk7CiAJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKGNsYXNz VHVwbGUpKQpAQCAtMTM4MCw3ICsxMzkxLDggQEAgaW5kZXhfY29uY3VycmVudGx5X2NyZWF0 ZV9jb3B5KFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwgT2lkIG9sZEluZGV4SWQsCiAJCQkJCQkJ b2xkSW5mby0+aWlfTnVsbHNOb3REaXN0aW5jdCwKIAkJCQkJCQlmYWxzZSwJLyogbm90IHJl YWR5IGZvciBpbnNlcnRzICovCiAJCQkJCQkJdHJ1ZSwKLQkJCQkJCQlpbmRleFJlbGF0aW9u LT5yZF9pbmRhbS0+YW1zdW1tYXJpemluZyk7CisJCQkJCQkJaW5kZXhSZWxhdGlvbi0+cmRf aW5kYW0tPmFtc3VtbWFyaXppbmcsCisJCQkJCQkJb2xkSW5mby0+aWlfVGVtcG9yYWwpOwog CiAJLyoKIAkgKiBFeHRyYWN0IHRoZSBsaXN0IG9mIGNvbHVtbiBuYW1lcyBhbmQgdGhlIGNv bHVtbiBudW1iZXJzIGZvciB0aGUgbmV3CkBAIC0xNDA1LDYgKzE0MTcsMTYgQEAgaW5kZXhf Y29uY3VycmVudGx5X2NyZWF0ZV9jb3B5KFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwgT2lkIG9s ZEluZGV4SWQsCiAJCQluZXdJbmZvLT5paV9PcGNsYXNzT3B0aW9uc1tpXSA9IGdldF9hdHRv cHRpb25zKG9sZEluZGV4SWQsIGkgKyAxKTsKIAl9CiAKKwkvKiBTZXQgdGhlIHBlcmlvZCAq LworCWlmIChwZXJpb2RpZCA9PSBJbnZhbGlkT2lkKQorCQluZXdJbmZvLT5paV9QZXJpb2Qg PSBOVUxMOworCWVsc2UKKwl7CisJCVBlcmlvZERlZiAqcCA9IG1ha2VOb2RlKFBlcmlvZERl Zik7CisJCXAtPm9pZCA9IHBlcmlvZGlkOworCQluZXdJbmZvLT5paV9QZXJpb2QgPSAoTm9k ZSAqKSBwOworCX0KKwogCS8qCiAJICogTm93IGNyZWF0ZSB0aGUgbmV3IGluZGV4LgogCSAq CkBAIC0xOTAwLDYgKzE5MjIsNyBAQCBpbmRleF9jb25jdXJyZW50bHlfc2V0X2RlYWQoT2lk IGhlYXBJZCwgT2lkIGluZGV4SWQpCiAgKgkJSU5ERVhfQ09OU1RSX0NSRUFURV9VUERBVEVf SU5ERVg6IHVwZGF0ZSB0aGUgcGdfaW5kZXggcm93CiAgKgkJSU5ERVhfQ09OU1RSX0NSRUFU RV9SRU1PVkVfT0xEX0RFUFM6IHJlbW92ZSBleGlzdGluZyBkZXBlbmRlbmNpZXMKICAqCQkJ b2YgaW5kZXggb24gdGFibGUncyBjb2x1bW5zCisgKgkJSU5ERVhfQ09OU1RSX0NSRUFURV9U RU1QT1JBTDogY29uc3RyYWludCBpcyBmb3IgYSB0ZW1wb3JhbCBwcmltYXJ5IGtleQogICog YWxsb3dfc3lzdGVtX3RhYmxlX21vZHM6IGFsbG93IHRhYmxlIHRvIGJlIGEgc3lzdGVtIGNh dGFsb2cKICAqIGlzX2ludGVybmFsOiBpbmRleCBpcyBjb25zdHJ1Y3RlZCBkdWUgdG8gaW50 ZXJuYWwgcHJvY2VzcwogICovCkBAIC0xOTE4LDE2ICsxOTQxLDE5IEBAIGluZGV4X2NvbnN0 cmFpbnRfY3JlYXRlKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAlPYmplY3RBZGRyZXNzIG15 c2VsZiwKIAkJCQlpZHhhZGRyOwogCU9pZAkJCWNvbk9pZDsKKwlPaWQJCQlwZXJpb2RpZDsK IAlib29sCQlkZWZlcnJhYmxlOwogCWJvb2wJCWluaXRkZWZlcnJlZDsKIAlib29sCQltYXJr X2FzX3ByaW1hcnk7CiAJYm9vbAkJaXNsb2NhbDsKIAlib29sCQlub2luaGVyaXQ7CisJYm9v bAkJaXNfdGVtcG9yYWw7CiAJaW50CQkJaW5oY291bnQ7CiAKIAlkZWZlcnJhYmxlID0gKGNv bnN0cl9mbGFncyAmIElOREVYX0NPTlNUUl9DUkVBVEVfREVGRVJSQUJMRSkgIT0gMDsKIAlp bml0ZGVmZXJyZWQgPSAoY29uc3RyX2ZsYWdzICYgSU5ERVhfQ09OU1RSX0NSRUFURV9JTklU X0RFRkVSUkVEKSAhPSAwOwogCW1hcmtfYXNfcHJpbWFyeSA9IChjb25zdHJfZmxhZ3MgJiBJ TkRFWF9DT05TVFJfQ1JFQVRFX01BUktfQVNfUFJJTUFSWSkgIT0gMDsKKwlpc190ZW1wb3Jh bCA9IChjb25zdHJfZmxhZ3MgJiBJTkRFWF9DT05TVFJfQ1JFQVRFX1RFTVBPUkFMKSAhPSAw OwogCiAJLyogY29uc3RyYWludCBjcmVhdGlvbiBzdXBwb3J0IGRvZXNuJ3Qgd29yayB3aGls ZSBib290c3RyYXBwaW5nICovCiAJQXNzZXJ0KCFJc0Jvb3RzdHJhcFByb2Nlc3NpbmdNb2Rl KCkpOwpAQCAtMTk0Miw3ICsxOTY4LDggQEAgaW5kZXhfY29uc3RyYWludF9jcmVhdGUoUmVs YXRpb24gaGVhcFJlbGF0aW9uLAogCiAJLyogcHJpbWFyeS91bmlxdWUgY29uc3RyYWludHMg c2hvdWxkbid0IGhhdmUgYW55IGV4cHJlc3Npb25zICovCiAJaWYgKGluZGV4SW5mby0+aWlf RXhwcmVzc2lvbnMgJiYKLQkJY29uc3RyYWludFR5cGUgIT0gQ09OU1RSQUlOVF9FWENMVVNJ T04pCisJCWNvbnN0cmFpbnRUeXBlICE9IENPTlNUUkFJTlRfRVhDTFVTSU9OICYmCisJCSFp bmRleEluZm8tPmlpX1RlbXBvcmFsKQogCQllbG9nKEVSUk9SLCAiY29uc3RyYWludHMgY2Fu bm90IGhhdmUgaW5kZXggZXhwcmVzc2lvbnMiKTsKIAogCS8qCkBAIC0xOTcxLDYgKzE5OTgs MTEgQEAgaW5kZXhfY29uc3RyYWludF9jcmVhdGUoUmVsYXRpb24gaGVhcFJlbGF0aW9uLAog CQlub2luaGVyaXQgPSB0cnVlOwogCX0KIAorCWlmIChpbmRleEluZm8tPmlpX1BlcmlvZCAh PSBOVUxMKQorCQlwZXJpb2RpZCA9ICgoUGVyaW9kRGVmICopaW5kZXhJbmZvLT5paV9QZXJp b2QpLT5vaWQ7CisJZWxzZQorCQlwZXJpb2RpZCA9IEludmFsaWRPaWQ7CisKIAkvKgogCSAq IENvbnN0cnVjdCBhIHBnX2NvbnN0cmFpbnQgZW50cnkuCiAJICovCkBAIC0yMDA0LDYgKzIw MzYsOCBAQCBpbmRleF9jb25zdHJhaW50X2NyZWF0ZShSZWxhdGlvbiBoZWFwUmVsYXRpb24s CiAJCQkJCQkJCSAgIGlzbG9jYWwsCiAJCQkJCQkJCSAgIGluaGNvdW50LAogCQkJCQkJCQkg ICBub2luaGVyaXQsCisJCQkJCQkJCSAgIGlzX3RlbXBvcmFsLAkvKiBjb250ZW1wb3JhbCAq LworCQkJCQkJCQkgICBwZXJpb2RpZCwgLyogY29ucGVyaW9kICovCiAJCQkJCQkJCSAgIGlz X2ludGVybmFsKTsKIAogCS8qCkBAIC0yNDUzLDEyICsyNDg3LDIzIEBAIEJ1aWxkSW5kZXhJ bmZvKFJlbGF0aW9uIGluZGV4KQogCQkJCQkgICBpbmRleFN0cnVjdC0+aW5kbnVsbHNub3Rk aXN0aW5jdCwKIAkJCQkJICAgaW5kZXhTdHJ1Y3QtPmluZGlzcmVhZHksCiAJCQkJCSAgIGZh bHNlLAotCQkJCQkgICBpbmRleC0+cmRfaW5kYW0tPmFtc3VtbWFyaXppbmcpOworCQkJCQkg ICBpbmRleC0+cmRfaW5kYW0tPmFtc3VtbWFyaXppbmcsCisJCQkJCSAgIGZhbHNlKTsKIAog CS8qIGZpbGwgaW4gYXR0cmlidXRlIG51bWJlcnMgKi8KIAlmb3IgKGkgPSAwOyBpIDwgbnVt QXR0czsgaSsrKQogCQlpaS0+aWlfSW5kZXhBdHRyTnVtYmVyc1tpXSA9IGluZGV4U3RydWN0 LT5pbmRrZXkudmFsdWVzW2ldOwogCisJLyogc2V0IHRoZSBwZXJpb2QgKi8KKwlpZiAoaW5k ZXhTdHJ1Y3QtPmluZHBlcmlvZCA9PSBJbnZhbGlkT2lkKQorCQlpaS0+aWlfUGVyaW9kID0g TlVMTDsKKwllbHNlCisJeworCQlQZXJpb2REZWYgKnAgPSBtYWtlTm9kZShQZXJpb2REZWYp OworCQlwLT5vaWQgPSBpbmRleFN0cnVjdC0+aW5kcGVyaW9kOworCQlpaS0+aWlfUGVyaW9k ID0gKE5vZGUgKikgcDsKKwl9CisKIAkvKiBmZXRjaCBleGNsdXNpb24gY29uc3RyYWludCBp bmZvIGlmIGFueSAqLwogCWlmIChpbmRleFN0cnVjdC0+aW5kaXNleGNsdXNpb24pCiAJewpA QCAtMjUxNCwxMiArMjU1OSwxNiBAQCBCdWlsZER1bW15SW5kZXhJbmZvKFJlbGF0aW9uIGlu ZGV4KQogCQkJCQkgICBpbmRleFN0cnVjdC0+aW5kbnVsbHNub3RkaXN0aW5jdCwKIAkJCQkJ ICAgaW5kZXhTdHJ1Y3QtPmluZGlzcmVhZHksCiAJCQkJCSAgIGZhbHNlLAotCQkJCQkgICBp bmRleC0+cmRfaW5kYW0tPmFtc3VtbWFyaXppbmcpOworCQkJCQkgICBpbmRleC0+cmRfaW5k YW0tPmFtc3VtbWFyaXppbmcsCisJCQkJCSAgIGZhbHNlKTsKIAogCS8qIGZpbGwgaW4gYXR0 cmlidXRlIG51bWJlcnMgKi8KIAlmb3IgKGkgPSAwOyBpIDwgbnVtQXR0czsgaSsrKQogCQlp aS0+aWlfSW5kZXhBdHRyTnVtYmVyc1tpXSA9IGluZGV4U3RydWN0LT5pbmRrZXkudmFsdWVz W2ldOwogCisJLyogbm8gbmVlZCBmb3IgYSBwZXJpb2QgKi8KKwlpaS0+aWlfUGVyaW9kID0g TlVMTDsKKwogCS8qIFdlIGlnbm9yZSB0aGUgZXhjbHVzaW9uIGNvbnN0cmFpbnQgaWYgYW55 ICovCiAKIAlyZXR1cm4gaWk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3Bn X2NvbnN0cmFpbnQuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfY29uc3RyYWludC5jCmlu ZGV4IDQwMDIzMTdmNzAuLjNiNWU4Y2Y1MzMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Nh dGFsb2cvcGdfY29uc3RyYWludC5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfY29u c3RyYWludC5jCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9vYmplY3Rh Y2Nlc3MuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2NvbnN0cmFpbnQuaCIKICNpbmNsdWRl ICJjYXRhbG9nL3BnX29wZXJhdG9yLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19wZXJpb2Qu aCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKICNpbmNsdWRlICJjb21tYW5kcy9k ZWZyZW0uaCIKICNpbmNsdWRlICJjb21tYW5kcy90YWJsZWNtZHMuaCIKQEAgLTc3LDYgKzc4 LDggQEAgQ3JlYXRlQ29uc3RyYWludEVudHJ5KGNvbnN0IGNoYXIgKmNvbnN0cmFpbnROYW1l LAogCQkJCQkgIGJvb2wgY29uSXNMb2NhbCwKIAkJCQkJICBpbnQgY29uSW5oQ291bnQsCiAJ CQkJCSAgYm9vbCBjb25Ob0luaGVyaXQsCisJCQkJCSAgYm9vbCBjb25UZW1wb3JhbCwKKwkJ CQkJICBPaWQgcGVyaW9kLAogCQkJCQkgIGJvb2wgaXNfaW50ZXJuYWwpCiB7CiAJUmVsYXRp b24JY29uRGVzYzsKQEAgLTE5Miw2ICsxOTUsOCBAQCBDcmVhdGVDb25zdHJhaW50RW50cnko Y29uc3QgY2hhciAqY29uc3RyYWludE5hbWUsCiAJdmFsdWVzW0FudW1fcGdfY29uc3RyYWlu dF9jb25pc2xvY2FsIC0gMV0gPSBCb29sR2V0RGF0dW0oY29uSXNMb2NhbCk7CiAJdmFsdWVz W0FudW1fcGdfY29uc3RyYWludF9jb25pbmhjb3VudCAtIDFdID0gSW50MTZHZXREYXR1bShj b25JbmhDb3VudCk7CiAJdmFsdWVzW0FudW1fcGdfY29uc3RyYWludF9jb25ub2luaGVyaXQg LSAxXSA9IEJvb2xHZXREYXR1bShjb25Ob0luaGVyaXQpOworCXZhbHVlc1tBbnVtX3BnX2Nv bnN0cmFpbnRfY29udGVtcG9yYWwgLSAxXSA9IEJvb2xHZXREYXR1bShjb25UZW1wb3JhbCk7 CisJdmFsdWVzW0FudW1fcGdfY29uc3RyYWludF9jb25wZXJpb2QgLSAxXSA9IE9iamVjdElk R2V0RGF0dW0ocGVyaW9kKTsKIAogCWlmIChjb25rZXlBcnJheSkKIAkJdmFsdWVzW0FudW1f cGdfY29uc3RyYWludF9jb25rZXkgLSAxXSA9IFBvaW50ZXJHZXREYXR1bShjb25rZXlBcnJh eSk7CkBAIC0yNDgsNyArMjUzLDcgQEAgQ3JlYXRlQ29uc3RyYWludEVudHJ5KGNvbnN0IGNo YXIgKmNvbnN0cmFpbnROYW1lLAogCXsKIAkJLyoKIAkJICogUmVnaXN0ZXIgYXV0byBkZXBl bmRlbmN5IGZyb20gY29uc3RyYWludCB0byBvd25pbmcgcmVsYXRpb24sIG9yIHRvCi0JCSAq IHNwZWNpZmljIGNvbHVtbihzKSBpZiBhbnkgYXJlIG1lbnRpb25lZC4KKwkJICogc3BlY2lm aWMgY29sdW1uKHMpIGFuZCBwZXJpb2QgaWYgYW55IGFyZSBtZW50aW9uZWQuCiAJCSAqLwog CQlPYmplY3RBZGRyZXNzIHJlbG9iamVjdDsKIApAQCAtMjY2LDYgKzI3MSwxNCBAQCBDcmVh dGVDb25zdHJhaW50RW50cnkoY29uc3QgY2hhciAqY29uc3RyYWludE5hbWUsCiAJCQlPYmpl Y3RBZGRyZXNzU2V0KHJlbG9iamVjdCwgUmVsYXRpb25SZWxhdGlvbklkLCByZWxJZCk7CiAJ CQlhZGRfZXhhY3Rfb2JqZWN0X2FkZHJlc3MoJnJlbG9iamVjdCwgYWRkcnNfYXV0byk7CiAJ CX0KKworCQlpZiAoT2lkSXNWYWxpZChwZXJpb2QpKQorCQl7CisJCQlPYmplY3RBZGRyZXNz IHBlcmlvZG9iamVjdDsKKworCQkJT2JqZWN0QWRkcmVzc1NldChwZXJpb2RvYmplY3QsIFBl cmlvZFJlbGF0aW9uSWQsIHBlcmlvZCk7CisJCQlhZGRfZXhhY3Rfb2JqZWN0X2FkZHJlc3Mo JnBlcmlvZG9iamVjdCwgYWRkcnNfYXV0byk7CisJCX0KIAl9CiAKIAlpZiAoT2lkSXNWYWxp ZChkb21haW5JZCkpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3RvYXN0aW5n LmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3RvYXN0aW5nLmMKaW5kZXggYWIxMmIwYjlkZS4u ZTJiY2I4YTA4ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy90b2FzdGluZy5j CisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvdG9hc3RpbmcuYwpAQCAtMjkyLDYgKzI5Miw3 IEBAIGNyZWF0ZV90b2FzdF90YWJsZShSZWxhdGlvbiByZWwsIE9pZCB0b2FzdE9pZCwgT2lk IHRvYXN0SW5kZXhPaWQsCiAJaW5kZXhJbmZvLT5paV9OdW1JbmRleEtleUF0dHJzID0gMjsK IAlpbmRleEluZm8tPmlpX0luZGV4QXR0ck51bWJlcnNbMF0gPSAxOwogCWluZGV4SW5mby0+ aWlfSW5kZXhBdHRyTnVtYmVyc1sxXSA9IDI7CisJaW5kZXhJbmZvLT5paV9QZXJpb2QgPSBO VUxMOwogCWluZGV4SW5mby0+aWlfRXhwcmVzc2lvbnMgPSBOSUw7CiAJaW5kZXhJbmZvLT5p aV9FeHByZXNzaW9uc1N0YXRlID0gTklMOwogCWluZGV4SW5mby0+aWlfUHJlZGljYXRlID0g TklMOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMgYi9z cmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYwppbmRleCBlNmVlOTllNTFmLi43ZTA2 MDdiNDdiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYwor KysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYwpAQCAtNzQsNiArNzQsMTEg QEAKIC8qIG5vbi1leHBvcnQgZnVuY3Rpb24gcHJvdG90eXBlcyAqLwogc3RhdGljIGJvb2wg Q29tcGFyZU9wY2xhc3NPcHRpb25zKERhdHVtICpvcHRzMSwgRGF0dW0gKm9wdHMyLCBpbnQg bmF0dHMpOwogc3RhdGljIHZvaWQgQ2hlY2tQcmVkaWNhdGUoRXhwciAqcHJlZGljYXRlKTsK K3N0YXRpYyB2b2lkIGdldF9pbmRleF9hdHRyX3RlbXBvcmFsX29wZXJhdG9yKE9pZCBvcGNs YXNzLAorCQkJCQkJCQkJCQkgT2lkIGF0dHR5cGUsCisJCQkJCQkJCQkJCSBib29sIGlzb3Zl cmxhcHMsCisJCQkJCQkJCQkJCSBPaWQgKm9waWQsCisJCQkJCQkJCQkJCSBpbnQgKnN0cmF0 KTsKIHN0YXRpYyB2b2lkIENvbXB1dGVJbmRleEF0dHJzKEluZGV4SW5mbyAqaW5kZXhJbmZv LAogCQkJCQkJCSAgT2lkICp0eXBlT2lkUCwKIAkJCQkJCQkgIE9pZCAqY29sbGF0aW9uT2lk UCwKQEAgLTg1LDkgKzkwLDEzIEBAIHN0YXRpYyB2b2lkIENvbXB1dGVJbmRleEF0dHJzKElu ZGV4SW5mbyAqaW5kZXhJbmZvLAogCQkJCQkJCSAgY29uc3QgY2hhciAqYWNjZXNzTWV0aG9k TmFtZSwgT2lkIGFjY2Vzc01ldGhvZElkLAogCQkJCQkJCSAgYm9vbCBhbWNhbm9yZGVyLAog CQkJCQkJCSAgYm9vbCBpc2NvbnN0cmFpbnQsCisJCQkJCQkJICBib29sIGlzdGVtcG9yYWws CiAJCQkJCQkJICBPaWQgZGRsX3VzZXJpZCwKIAkJCQkJCQkgIGludCBkZGxfc2VjX2NvbnRl eHQsCiAJCQkJCQkJICBpbnQgKmRkbF9zYXZlX25lc3RsZXZlbCk7CitzdGF0aWMgdm9pZCBD b21wdXRlSW5kZXhQZXJpb2QoSW5kZXhJbmZvICppbmRleEluZm8sCisJCQkJCQkJICAgT2lk IHJlbElkLAorCQkJCQkJCSAgIGNvbnN0IGNoYXIgKnBlcmlvZE5hbWUpOwogc3RhdGljIGNo YXIgKkNob29zZUluZGV4TmFtZShjb25zdCBjaGFyICp0YWJuYW1lLCBPaWQgbmFtZXNwYWNl SWQsCiAJCQkJCQkJIExpc3QgKmNvbG5hbWVzLCBMaXN0ICpleGNsdXNpb25PcE5hbWVzLAog CQkJCQkJCSBib29sIHByaW1hcnksIGJvb2wgaXNjb25zdHJhaW50KTsKQEAgLTE0Miw2ICsx NTEsMTAgQEAgdHlwZWRlZiBzdHJ1Y3QgUmVpbmRleEVycm9ySW5mbwogICoJCXRvIGluZGV4 IG9uLgogICogJ2V4Y2x1c2lvbk9wTmFtZXMnOiBsaXN0IG9mIG5hbWVzIG9mIGV4Y2x1c2lv bi1jb25zdHJhaW50IG9wZXJhdG9ycywKICAqCQlvciBOSUwgaWYgbm90IGFuIGV4Y2x1c2lv biBjb25zdHJhaW50LgorICogJ2lzdGVtcG9yYWwnOiB0cnVlIGlmZiB0aGlzIGluZGV4IGhh cyBhIFdJVEhPVVQgT1ZFUkxBUFMgY2xhdXNlLgorICogJ2luZGV4UGVyaW9kTmFtZSc6IHRo ZSBuYW1lIG9mIHRoZSBQRVJJT0QgdXNlZCBpbiBXSVRIT1VUIE9WRVJMQVBTLiBJZiBhCisg KgkJcmFuZ2UgY29sdW1uIGlzIHVzZWQsIHRoaXMgc2hvdWxkIGJlIE5VTEwuIFdlJ2xsIGNo ZWNrIHRoYXQgaW4KKyAqCQlhdHRyaWJ1dGVMaXN0LgogICoKICAqIFRoaXMgaXMgdGFpbG9y ZWQgdG8gdGhlIG5lZWRzIG9mIEFMVEVSIFRBQkxFIEFMVEVSIFRZUEUsIHdoaWNoIHJlY3Jl YXRlcwogICogYW55IGluZGV4ZXMgdGhhdCBkZXBlbmRlZCBvbiBhIGNoYW5naW5nIGNvbHVt biBmcm9tIHRoZWlyIHBnX2dldF9pbmRleGRlZgpAQCAtMTcxLDcgKzE4NCw5IEBAIGJvb2wK IENoZWNrSW5kZXhDb21wYXRpYmxlKE9pZCBvbGRJZCwKIAkJCQkJIGNvbnN0IGNoYXIgKmFj Y2Vzc01ldGhvZE5hbWUsCiAJCQkJCSBMaXN0ICphdHRyaWJ1dGVMaXN0LAotCQkJCQkgTGlz dCAqZXhjbHVzaW9uT3BOYW1lcykKKwkJCQkJIExpc3QgKmV4Y2x1c2lvbk9wTmFtZXMsCisJ CQkJCSBib29sIGlzdGVtcG9yYWwsCisJCQkJCSBjb25zdCBjaGFyICppbmRleFBlcmlvZE5h bWUpCiB7CiAJYm9vbAkJaXNjb25zdHJhaW50OwogCU9pZAkJICAgKnR5cGVPYmplY3RJZDsK QEAgLTE5MCw2ICsyMDUsOCBAQCBDaGVja0luZGV4Q29tcGF0aWJsZShPaWQgb2xkSWQsCiAJ aW50CQkJbnVtYmVyT2ZBdHRyaWJ1dGVzOwogCWludAkJCW9sZF9uYXR0czsKIAlib29sCQly ZXQgPSB0cnVlOworCU9pZAkJCW9sZF9wZXJpb2RpZDsKKwlPaWQJCQluZXdfcGVyaW9kaWQ7 CiAJb2lkdmVjdG9yICAqb2xkX2luZGNsYXNzOwogCW9pZHZlY3RvciAgKm9sZF9pbmRjb2xs YXRpb247CiAJUmVsYXRpb24JaXJlbDsKQEAgLTIzNCw3ICsyNTEsNyBAQCBDaGVja0luZGV4 Q29tcGF0aWJsZShPaWQgb2xkSWQsCiAJICovCiAJaW5kZXhJbmZvID0gbWFrZUluZGV4SW5m byhudW1iZXJPZkF0dHJpYnV0ZXMsIG51bWJlck9mQXR0cmlidXRlcywKIAkJCQkJCQkgIGFj Y2Vzc01ldGhvZElkLCBOSUwsIE5JTCwgZmFsc2UsIGZhbHNlLAotCQkJCQkJCSAgZmFsc2Us IGZhbHNlLCBhbXN1bW1hcml6aW5nKTsKKwkJCQkJCQkgIGZhbHNlLCBmYWxzZSwgYW1zdW1t YXJpemluZywgZmFsc2UpOwogCXR5cGVPYmplY3RJZCA9IHBhbGxvY19hcnJheShPaWQsIG51 bWJlck9mQXR0cmlidXRlcyk7CiAJY29sbGF0aW9uT2JqZWN0SWQgPSBwYWxsb2NfYXJyYXko T2lkLCBudW1iZXJPZkF0dHJpYnV0ZXMpOwogCWNsYXNzT2JqZWN0SWQgPSBwYWxsb2NfYXJy YXkoT2lkLCBudW1iZXJPZkF0dHJpYnV0ZXMpOwpAQCAtMjQ0LDggKzI2MSwxMCBAQCBDaGVj a0luZGV4Q29tcGF0aWJsZShPaWQgb2xkSWQsCiAJCQkJCSAgY29sb3B0aW9ucywgYXR0cmli dXRlTGlzdCwKIAkJCQkJICBleGNsdXNpb25PcE5hbWVzLCByZWxhdGlvbklkLAogCQkJCQkg IGFjY2Vzc01ldGhvZE5hbWUsIGFjY2Vzc01ldGhvZElkLAotCQkJCQkgIGFtY2Fub3JkZXIs IGlzY29uc3RyYWludCwgSW52YWxpZE9pZCwgMCwgTlVMTCk7CisJCQkJCSAgYW1jYW5vcmRl ciwgaXNjb25zdHJhaW50LCBpc3RlbXBvcmFsLCBJbnZhbGlkT2lkLAorCQkJCQkgIDAsIE5V TEwpOwogCisJQ29tcHV0ZUluZGV4UGVyaW9kKGluZGV4SW5mbywgcmVsYXRpb25JZCwgaW5k ZXhQZXJpb2ROYW1lKTsKIAogCS8qIEdldCB0aGUgc29vbi1vYnNvbGV0ZSBwZ19pbmRleCB0 dXBsZS4gKi8KIAl0dXBsZSA9IFNlYXJjaFN5c0NhY2hlMShJTkRFWFJFTElELCBPYmplY3RJ ZEdldERhdHVtKG9sZElkKSk7CkBAIC0yNjUsNiArMjg0LDIyIEBAIENoZWNrSW5kZXhDb21w YXRpYmxlKE9pZCBvbGRJZCwKIAkJcmV0dXJuIGZhbHNlOwogCX0KIAorCS8qIFRoZSB0d28g aW5kZXhlcyBzaG91bGQgYWdyZWUgb24gV0lUSE9VVCBPVkVSTEFQUy4gKi8KKwlpZiAoaW5k ZXhJbmZvLT5paV9UZW1wb3JhbCAhPSBpc3RlbXBvcmFsKQorCXsKKwkJUmVsZWFzZVN5c0Nh Y2hlKHR1cGxlKTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKworCS8qIFRoZSB0d28gaW5kZXhl cyBzaG91bGQgaGF2ZSB0aGUgc2FtZSBwZXJpb2QuICovCisJb2xkX3BlcmlvZGlkID0gaW5k ZXhGb3JtLT5pbmRwZXJpb2Q7CisJbmV3X3BlcmlvZGlkID0gaW5kZXhJbmZvLT5paV9QZXJp b2QgPyAoKFBlcmlvZERlZiAqKSBpbmRleEluZm8tPmlpX1BlcmlvZCktPm9pZCA6IEludmFs aWRPaWQ7CisJaWYgKG9sZF9wZXJpb2RpZCAhPSBuZXdfcGVyaW9kaWQpCisJeworCQlSZWxl YXNlU3lzQ2FjaGUodHVwbGUpOworCQlyZXR1cm4gZmFsc2U7CisJfQorCiAJLyogQW55IGNo YW5nZSBpbiBvcGVyYXRvciBjbGFzcyBvciBjb2xsYXRpb24gYnJlYWtzIGNvbXBhdGliaWxp dHkuICovCiAJb2xkX25hdHRzID0gaW5kZXhGb3JtLT5pbmRua2V5YXR0czsKIAlBc3NlcnQo b2xkX25hdHRzID09IG51bWJlck9mQXR0cmlidXRlcyk7CkBAIC01NDcsNiArNTgyLDcgQEAg RGVmaW5lSW5kZXgoT2lkIHJlbGF0aW9uSWQsCiAJT2lkCQkJdGFibGVzcGFjZUlkOwogCU9p ZAkJCWNyZWF0ZWRDb25zdHJhaW50SWQgPSBJbnZhbGlkT2lkOwogCUxpc3QJICAgKmluZGV4 Q29sTmFtZXM7CisJY2hhcgkgICAqaW5kZXhQZXJpb2ROYW1lOwogCUxpc3QJICAgKmFsbElu ZGV4UGFyYW1zOwogCVJlbGF0aW9uCXJlbDsKIAlIZWFwVHVwbGUJdHVwbGU7CkBAIC04MDMs NiArODM5LDExIEBAIERlZmluZUluZGV4KE9pZCByZWxhdGlvbklkLAogCSAqLwogCWluZGV4 Q29sTmFtZXMgPSBDaG9vc2VJbmRleENvbHVtbk5hbWVzKGFsbEluZGV4UGFyYW1zKTsKIAor CS8qCisJICogQ2hvb3NlIHRoZSBpbmRleCBwZXJpb2QgbmFtZS4KKwkgKi8KKwlpbmRleFBl cmlvZE5hbWUgPSBzdG10LT5wZXJpb2QgPyBzdG10LT5wZXJpb2QtPnBlcmlvZG5hbWUgOiBO VUxMOworCiAJLyoKIAkgKiBTZWxlY3QgbmFtZSBmb3IgaW5kZXggaWYgY2FsbGVyIGRpZG4n dCBzcGVjaWZ5CiAJICovCkBAIC04NDcsNyArODg4LDcgQEAgRGVmaW5lSW5kZXgoT2lkIHJl bGF0aW9uSWQsCiAJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVB VEVJRFhfQUNDRVNTX01FVEhPRF9PSUQsCiAJCQkJCQkJCSBhY2Nlc3NNZXRob2RJZCk7CiAK LQlpZiAoc3RtdC0+dW5pcXVlICYmICFhbVJvdXRpbmUtPmFtY2FudW5pcXVlKQorCWlmIChz dG10LT51bmlxdWUgJiYgIXN0bXQtPmlzdGVtcG9yYWwgJiYgIWFtUm91dGluZS0+YW1jYW51 bmlxdWUpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJF X05PVF9TVVBQT1JURUQpLAogCQkJCSBlcnJtc2coImFjY2VzcyBtZXRob2QgXCIlc1wiIGRv ZXMgbm90IHN1cHBvcnQgdW5pcXVlIGluZGV4ZXMiLApAQCAtOTAzLDcgKzk0NCw4IEBAIERl ZmluZUluZGV4KE9pZCByZWxhdGlvbklkLAogCQkJCQkJCSAgc3RtdC0+bnVsbHNfbm90X2Rp c3RpbmN0LAogCQkJCQkJCSAgIWNvbmN1cnJlbnQsCiAJCQkJCQkJICBjb25jdXJyZW50LAot CQkJCQkJCSAgYW1pc3N1bW1hcml6aW5nKTsKKwkJCQkJCQkgIGFtaXNzdW1tYXJpemluZywK KwkJCQkJCQkgIHN0bXQtPmlzdGVtcG9yYWwpOwogCiAJdHlwZU9iamVjdElkID0gcGFsbG9j X2FycmF5KE9pZCwgbnVtYmVyT2ZBdHRyaWJ1dGVzKTsKIAljb2xsYXRpb25PYmplY3RJZCA9 IHBhbGxvY19hcnJheShPaWQsIG51bWJlck9mQXR0cmlidXRlcyk7CkBAIC05MTQsOCArOTU2 LDExIEBAIERlZmluZUluZGV4KE9pZCByZWxhdGlvbklkLAogCQkJCQkgIGNvbG9wdGlvbnMs IGFsbEluZGV4UGFyYW1zLAogCQkJCQkgIHN0bXQtPmV4Y2x1ZGVPcE5hbWVzLCByZWxhdGlv bklkLAogCQkJCQkgIGFjY2Vzc01ldGhvZE5hbWUsIGFjY2Vzc01ldGhvZElkLAotCQkJCQkg IGFtY2Fub3JkZXIsIHN0bXQtPmlzY29uc3RyYWludCwgcm9vdF9zYXZlX3VzZXJpZCwKLQkJ CQkJICByb290X3NhdmVfc2VjX2NvbnRleHQsICZyb290X3NhdmVfbmVzdGxldmVsKTsKKwkJ CQkJICBhbWNhbm9yZGVyLCBzdG10LT5pc2NvbnN0cmFpbnQsIHN0bXQtPmlzdGVtcG9yYWws CisJCQkJCSAgcm9vdF9zYXZlX3VzZXJpZCwgcm9vdF9zYXZlX3NlY19jb250ZXh0LAorCQkJ CQkgICZyb290X3NhdmVfbmVzdGxldmVsKTsKKworCUNvbXB1dGVJbmRleFBlcmlvZChpbmRl eEluZm8sIHJlbGF0aW9uSWQsIGluZGV4UGVyaW9kTmFtZSk7CiAKIAkvKgogCSAqIEV4dHJh IGNoZWNrcyB3aGVuIGNyZWF0aW5nIGEgUFJJTUFSWSBLRVkgaW5kZXguCkBAIC05NDAsNiAr OTg1LDggQEAgRGVmaW5lSW5kZXgoT2lkIHJlbGF0aW9uSWQsCiAKIAkJaWYgKHN0bXQtPnBy aW1hcnkpCiAJCQljb25zdHJhaW50X3R5cGUgPSAiUFJJTUFSWSBLRVkiOworCQllbHNlIGlm IChzdG10LT51bmlxdWUgJiYgc3RtdC0+aXN0ZW1wb3JhbCkKKwkJCWNvbnN0cmFpbnRfdHlw ZSA9ICJ0ZW1wb3JhbCBVTklRVUUiOwogCQllbHNlIGlmIChzdG10LT51bmlxdWUpCiAJCQlj b25zdHJhaW50X3R5cGUgPSAiVU5JUVVFIjsKIAkJZWxzZSBpZiAoc3RtdC0+ZXhjbHVkZU9w TmFtZXMgIT0gTklMKQpAQCAtMTE1OSw2ICsxMjA2LDggQEAgRGVmaW5lSW5kZXgoT2lkIHJl bGF0aW9uSWQsCiAJCWNvbnN0cl9mbGFncyB8PSBJTkRFWF9DT05TVFJfQ1JFQVRFX0RFRkVS UkFCTEU7CiAJaWYgKHN0bXQtPmluaXRkZWZlcnJlZCkKIAkJY29uc3RyX2ZsYWdzIHw9IElO REVYX0NPTlNUUl9DUkVBVEVfSU5JVF9ERUZFUlJFRDsKKwlpZiAoc3RtdC0+aXN0ZW1wb3Jh bCkKKwkJY29uc3RyX2ZsYWdzIHw9IElOREVYX0NPTlNUUl9DUkVBVEVfVEVNUE9SQUw7CiAK IAlpbmRleFJlbGF0aW9uSWQgPQogCQlpbmRleF9jcmVhdGUocmVsLCBpbmRleFJlbGF0aW9u TmFtZSwgaW5kZXhSZWxhdGlvbklkLCBwYXJlbnRJbmRleElkLApAQCAtMTgxMSw2ICsxODYw LDkxIEBAIENoZWNrUHJlZGljYXRlKEV4cHIgKnByZWRpY2F0ZSkKIAkJCQkgZXJybXNnKCJm dW5jdGlvbnMgaW4gaW5kZXggcHJlZGljYXRlIG11c3QgYmUgbWFya2VkIElNTVVUQUJMRSIp KSk7CiB9CiAKKy8qCisgKiBnZXRfaW5kZXhfYXR0cl90ZW1wb3JhbF9vcGVyYXRvcgorICoK KyAqIEZpbmRzIGFuIG9wZXJhdG9yIGZvciBhIHRlbXBvcmFsIGluZGV4IGF0dHJpYnV0ZS4K KyAqIFdlIG5lZWQgYW4gZXF1YWxpdHkgb3BlcmF0b3IgZm9yIG5vcm1hbCBrZXlzCisgKiBh bmQgYW4gb3ZlcmxhcHMgb3BlcmF0b3IgZm9yIHRoZSByYW5nZS9QRVJJT0QuCisgKiBSZXR1 cm5zIHRoZSBvcGVyYXRvciBvaWQgYW5kIHN0cmF0ZWd5IGluIG9waWQgYW5kIHN0cmF0LAor ICogcmVzcGVjdGl2ZWx5LgorICovCitzdGF0aWMgdm9pZAorZ2V0X2luZGV4X2F0dHJfdGVt cG9yYWxfb3BlcmF0b3IoT2lkIG9wY2xhc3MsCisJCQkJCQkJCSBPaWQgYXR0dHlwZSwKKwkJ CQkJCQkJIGJvb2wgaXNvdmVybGFwcywKKwkJCQkJCQkJIE9pZCAqb3BpZCwKKwkJCQkJCQkJ IGludCAqc3RyYXQpCit7CisJT2lkIG9wZmFtaWx5OworCWNvbnN0IGNoYXIgKm9wbmFtZTsK KworCW9wZmFtaWx5ID0gZ2V0X29wY2xhc3NfZmFtaWx5KG9wY2xhc3MpOworCS8qCisJICog SWYgd2UgaGF2ZSBhIHJhbmdlIHR5cGUsIGZhbGwgYmFjayBvbiBhbnlyYW5nZS4KKwkgKiBU aGlzIHNlZW1zIGxpa2UgYSBoYWNrCisJICogYnV0IEkgY2FuJ3QgZmluZCBhbnkgZXhpc3Rp bmcgbG9va3VwIGZ1bmN0aW9uCisJICogdGhhdCBrbm93cyBhYm91dCBwc2V1ZG90eXBlcy4K KwkgKiBjb21wYXRpYmxlX29wZXIgaXMgY2xvc2UgYnV0IHdhbnRzIGEgKm5hbWUqLAorCSAq IGFuZCB0aGUgcG9pbnQgaGVyZSBpcyB0byBhdm9pZCBoYXJkY29kaW5nIGEgbmFtZQorCSAq IChhbHRob3VnaCBpdCBzaG91bGQgYWx3YXlzIGJlID0gYW5kICYmKS4KKwkgKgorCSAqIElu IGFkZGl0aW9uIGZvciB0aGUgbm9ybWFsIGtleSBlbGVtZW50cworCSAqIHRyeSBib3RoIFJU RXF1YWxTdHJhdGVneU51bWJlciBhbmQgQlRFcXVhbFN0cmF0ZWd5TnVtYmVyLgorCSAqIElm IHlvdSdyZSB1c2luZyBidHJlZV9naXN0IHRoZW4geW91J2xsIG5lZWQgdGhlIGxhdHRlci4K KwkgKi8KKwlpZiAoaXNvdmVybGFwcykKKwl7CisJCSpzdHJhdCA9IFJUT3ZlcmxhcFN0cmF0 ZWd5TnVtYmVyOworCQlvcG5hbWUgPSAib3ZlcmxhcHMiOworCQkqb3BpZCA9IGdldF9vcGZh bWlseV9tZW1iZXIob3BmYW1pbHksIGF0dHR5cGUsIGF0dHR5cGUsICpzdHJhdCk7CisJCWlm ICghT2lkSXNWYWxpZCgqb3BpZCkgJiYgdHlwZV9pc19yYW5nZShhdHR0eXBlKSkKKwkJCSpv cGlkID0gZ2V0X29wZmFtaWx5X21lbWJlcihvcGZhbWlseSwgQU5ZUkFOR0VPSUQsIEFOWVJB TkdFT0lELCAqc3RyYXQpOworCX0KKwllbHNlCisJeworCQkqc3RyYXQgPSBSVEVxdWFsU3Ry YXRlZ3lOdW1iZXI7CisJCW9wbmFtZSA9ICJlcXVhbGl0eSI7CisJCSpvcGlkID0gZ2V0X29w ZmFtaWx5X21lbWJlcihvcGZhbWlseSwgYXR0dHlwZSwgYXR0dHlwZSwgKnN0cmF0KTsKKwkJ aWYgKCFPaWRJc1ZhbGlkKCpvcGlkKSAmJiB0eXBlX2lzX3JhbmdlKGF0dHR5cGUpKQorCQkJ Km9waWQgPSBnZXRfb3BmYW1pbHlfbWVtYmVyKG9wZmFtaWx5LCBBTllSQU5HRU9JRCwgQU5Z UkFOR0VPSUQsICpzdHJhdCk7CisKKwkJaWYgKCFPaWRJc1ZhbGlkKCpvcGlkKSkKKwkJewor CQkJKnN0cmF0ID0gQlRFcXVhbFN0cmF0ZWd5TnVtYmVyOworCQkJKm9waWQgPSBnZXRfb3Bm YW1pbHlfbWVtYmVyKG9wZmFtaWx5LCBhdHR0eXBlLCBhdHR0eXBlLCAqc3RyYXQpOworCQkJ aWYgKCFPaWRJc1ZhbGlkKCpvcGlkKSAmJiB0eXBlX2lzX3JhbmdlKGF0dHR5cGUpKQorCQkJ CSpvcGlkID0gZ2V0X29wZmFtaWx5X21lbWJlcihvcGZhbWlseSwgQU5ZUkFOR0VPSUQsIEFO WVJBTkdFT0lELCAqc3RyYXQpOworCQl9CisJfQorCisJaWYgKCFPaWRJc1ZhbGlkKCpvcGlk KSkKKwl7CisJCUhlYXBUdXBsZQlvcGZ0dXBsZTsKKwkJRm9ybV9wZ19vcGZhbWlseSBvcGZm b3JtOworCisJCS8qCisJCSAqIGF0dHJpYnV0ZS0+b3BjbGFzcyBtaWdodCBub3QgZXhwbGlj aXRseSBuYW1lIHRoZSBvcGZhbWlseSwKKwkJICogc28gZmV0Y2ggdGhlIG5hbWUgb2YgdGhl IHNlbGVjdGVkIG9wZmFtaWx5IGZvciB1c2UgaW4gdGhlCisJCSAqIGVycm9yIG1lc3NhZ2Uu CisJCSAqLworCQlvcGZ0dXBsZSA9IFNlYXJjaFN5c0NhY2hlMShPUEZBTUlMWU9JRCwKKwkJ CQkJCQkJICAgT2JqZWN0SWRHZXREYXR1bShvcGZhbWlseSkpOworCQlpZiAoIUhlYXBUdXBs ZUlzVmFsaWQob3BmdHVwbGUpKQorCQkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWls ZWQgZm9yIG9wZmFtaWx5ICV1IiwKKwkJCQkgb3BmYW1pbHkpOworCQlvcGZmb3JtID0gKEZv cm1fcGdfb3BmYW1pbHkpIEdFVFNUUlVDVChvcGZ0dXBsZSk7CisKKwkJZXJlcG9ydChFUlJP UiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9PQkpFQ1QpLAorCQkJCSBlcnJt c2coIm5vICVzIG9wZXJhdG9yIGZvdW5kIGZvciBXSVRIT1VUIE9WRVJMQVBTIGNvbnN0cmFp bnQiLCBvcG5hbWUpLAorCQkJCSBlcnJkZXRhaWwoIlRoZXJlIG11c3QgYmUgYW4gJXMgb3Bl cmF0b3Igd2l0aGluIG9wZmFtaWx5IFwiJXNcIiBmb3IgdHlwZSBcIiVzXCIuIiwKKwkJCQkJ CSAgIG9wbmFtZSwKKwkJCQkJCSAgIE5hbWVTdHIob3BmZm9ybS0+b3BmbmFtZSksCisJCQkJ CQkgICBmb3JtYXRfdHlwZV9iZShhdHR0eXBlKSkpKTsKKwl9Cit9CisKIC8qCiAgKiBDb21w dXRlIHBlci1pbmRleC1jb2x1bW4gaW5mb3JtYXRpb24sIGluY2x1ZGluZyBpbmRleGVkIGNv bHVtbiBudW1iZXJzCiAgKiBvciBpbmRleCBleHByZXNzaW9ucywgb3BjbGFzc2VzIGFuZCB0 aGVpciBvcHRpb25zLiBOb3RlLCBhbGwgb3V0cHV0IHZlY3RvcnMKQEAgLTE4MzMsNiArMTk2 Nyw3IEBAIENvbXB1dGVJbmRleEF0dHJzKEluZGV4SW5mbyAqaW5kZXhJbmZvLAogCQkJCSAg T2lkIGFjY2Vzc01ldGhvZElkLAogCQkJCSAgYm9vbCBhbWNhbm9yZGVyLAogCQkJCSAgYm9v bCBpc2NvbnN0cmFpbnQsCisJCQkJICBib29sIGlzdGVtcG9yYWwsCiAJCQkJICBPaWQgZGRs X3VzZXJpZCwKIAkJCQkgIGludCBkZGxfc2VjX2NvbnRleHQsCiAJCQkJICBpbnQgKmRkbF9z YXZlX25lc3RsZXZlbCkKQEAgLTE4NTYsNiArMTk5MSwxNCBAQCBDb21wdXRlSW5kZXhBdHRy cyhJbmRleEluZm8gKmluZGV4SW5mbywKIAllbHNlCiAJCW5leHRFeGNsT3AgPSBOVUxMOwog CisJaWYgKGlzdGVtcG9yYWwpCisJeworCQlBc3NlcnQoZXhjbHVzaW9uT3BOYW1lcyA9PSBO SUwpOworCQlpbmRleEluZm8tPmlpX0V4Y2x1c2lvbk9wcyA9IHBhbGxvY19hcnJheShPaWQs IG5rZXljb2xzKTsKKwkJaW5kZXhJbmZvLT5paV9FeGNsdXNpb25Qcm9jcyA9IHBhbGxvY19h cnJheShPaWQsIG5rZXljb2xzKTsKKwkJaW5kZXhJbmZvLT5paV9FeGNsdXNpb25TdHJhdHMg PSBwYWxsb2NfYXJyYXkodWludDE2LCBua2V5Y29scyk7CisJfQorCiAJaWYgKE9pZElzVmFs aWQoZGRsX3VzZXJpZCkpCiAJCUdldFVzZXJJZEFuZFNlY0NvbnRleHQoJnNhdmVfdXNlcmlk LCAmc2F2ZV9zZWNfY29udGV4dCk7CiAKQEAgLTIxMzEsNiArMjI3NCwxOSBAQCBDb21wdXRl SW5kZXhBdHRycyhJbmRleEluZm8gKmluZGV4SW5mbywKIAkJCWluZGV4SW5mby0+aWlfRXhj bHVzaW9uU3RyYXRzW2F0dG5dID0gc3RyYXQ7CiAJCQluZXh0RXhjbE9wID0gbG5leHQoZXhj bHVzaW9uT3BOYW1lcywgbmV4dEV4Y2xPcCk7CiAJCX0KKwkJZWxzZSBpZiAoaXN0ZW1wb3Jh bCkKKwkJeworCQkJaW50IHN0cmF0OworCQkJT2lkIG9waWQ7CisJCQlnZXRfaW5kZXhfYXR0 cl90ZW1wb3JhbF9vcGVyYXRvcihjbGFzc09pZFBbYXR0bl0sCisJCQkJCQkJCQkJCSBhdHR0 eXBlLAorCQkJCQkJCQkJCQkgYXR0biA9PSBua2V5Y29scyAtIDEsCS8qIFRPRE86IERvbid0 IGFzc3VtZSBpdCdzIGxhc3Q/ICovCisJCQkJCQkJCQkJCSAmb3BpZCwKKwkJCQkJCQkJCQkJ ICZzdHJhdCk7CisJCQlpbmRleEluZm8tPmlpX0V4Y2x1c2lvbk9wc1thdHRuXSA9IG9waWQ7 CisJCQlpbmRleEluZm8tPmlpX0V4Y2x1c2lvblByb2NzW2F0dG5dID0gZ2V0X29wY29kZShv cGlkKTsKKwkJCWluZGV4SW5mby0+aWlfRXhjbHVzaW9uU3RyYXRzW2F0dG5dID0gc3RyYXQ7 CisJCX0KIAogCQkvKgogCQkgKiBTZXQgdXAgdGhlIHBlci1jb2x1bW4gb3B0aW9ucyAoaW5k b3B0aW9uIGZpZWxkKS4gIEZvciBub3csIHRoaXMgaXMKQEAgLTIxODUsNiArMjM0MSwxOSBA QCBDb21wdXRlSW5kZXhBdHRycyhJbmRleEluZm8gKmluZGV4SW5mbywKIAl9CiB9CiAKK3N0 YXRpYyB2b2lkCitDb21wdXRlSW5kZXhQZXJpb2QoSW5kZXhJbmZvICppbmRleEluZm8sIE9p ZCByZWxJZCwgY29uc3QgY2hhciAqcGVyaW9kTmFtZSkKK3sKKwlpZiAocGVyaW9kTmFtZSA9 PSBOVUxMKQorCQlpbmRleEluZm8tPmlpX1BlcmlvZCA9IE5VTEw7CisJZWxzZQorCXsKKwkJ UGVyaW9kRGVmICpwID0gbWFrZU5vZGUoUGVyaW9kRGVmKTsKKwkJcC0+b2lkID0gZ2V0X3Bl cmlvZF9vaWQocmVsSWQsIHBlcmlvZE5hbWUsIHRydWUpOworCQlpbmRleEluZm8tPmlpX1Bl cmlvZCA9IChOb2RlICopIHA7CisJfQorfQorCiAvKgogICogUmVzb2x2ZSBwb3NzaWJseS1k ZWZhdWx0ZWQgb3BlcmF0b3IgY2xhc3Mgc3BlY2lmaWNhdGlvbgogICoKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvdGFibGVjbWRzLmMKaW5kZXggMzhjYWMyYWZhNi4uOTA2ZjBhNDFhNyAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvdGFibGVjbWRzLmMKQEAgLTIxMyw2ICsyMTMsNyBAQCB0eXBlZGVmIHN0cnVj dCBOZXdDb25zdHJhaW50CiAJT2lkCQkJcmVmcmVsaWQ7CQkvKiBQSyByZWwsIGlmIEZPUkVJ R04gKi8KIAlPaWQJCQlyZWZpbmRpZDsJCS8qIE9JRCBvZiBQSydzIGluZGV4LCBpZiBGT1JF SUdOICovCiAJT2lkCQkJY29uaWQ7CQkJLyogT0lEIG9mIHBnX2NvbnN0cmFpbnQgZW50cnks IGlmIEZPUkVJR04gKi8KKwlib29sCQljb250ZW1wb3JhbDsJLyogV2hldGhlciB0aGUgbmV3 IGNvbnN0cmFpbnQgaXMgdGVtcG9yYWwgKi8KIAlOb2RlCSAgICpxdWFsOwkJCS8qIENoZWNr IGV4cHIgb3IgQ09OU1RSX0ZPUkVJR04gQ29uc3RyYWludCAqLwogCUV4cHJTdGF0ZSAgKnF1 YWxzdGF0ZTsJCS8qIEV4ZWN1dGlvbiBzdGF0ZSBmb3IgQ0hFQ0sgZXhwciAqLwogfSBOZXdD b25zdHJhaW50OwpAQCAtMTAyNDgsNiArMTAyNDksOCBAQCBhZGRGa1JlY3Vyc2VSZWZlcmVu Y2VkKExpc3QgKip3cXVldWUsIENvbnN0cmFpbnQgKmZrY29uc3RyYWludCwgUmVsYXRpb24g cmVsLAogCQkJCQkJCQkJICBjb25pc2xvY2FsLAkvKiBpc2xvY2FsICovCiAJCQkJCQkJCQkg IGNvbmluaGNvdW50LAkvKiBpbmhjb3VudCAqLwogCQkJCQkJCQkJICBjb25ub2luaGVyaXQs IC8qIGNvbk5vSW5oZXJpdCAqLworCQkJCQkJCQkJICBmYWxzZSwJLyogY29uVGVtcG9yYWwg Ki8KKwkJCQkJCQkJCSAgSW52YWxpZE9pZCwKIAkJCQkJCQkJCSAgZmFsc2UpOwkvKiBpc19p bnRlcm5hbCAqLwogCiAJT2JqZWN0QWRkcmVzc1NldChhZGRyZXNzLCBDb25zdHJhaW50UmVs YXRpb25JZCwgY29uc3RyT2lkKTsKQEAgLTEwNTQ2LDYgKzEwNTQ5LDggQEAgYWRkRmtSZWN1 cnNlUmVmZXJlbmNpbmcoTGlzdCAqKndxdWV1ZSwgQ29uc3RyYWludCAqZmtjb25zdHJhaW50 LCBSZWxhdGlvbiByZWwsCiAJCQkJCQkJCQkgIGZhbHNlLAogCQkJCQkJCQkJICAxLAogCQkJ CQkJCQkJICBmYWxzZSwKKwkJCQkJCQkJCSAgZmFsc2UsCS8qIGNvblRlbXBvcmFsICovCisJ CQkJCQkJCQkgIEludmFsaWRPaWQsCiAJCQkJCQkJCQkgIGZhbHNlKTsKIAogCQkJLyoKQEAg LTExMDUxLDYgKzExMDU2LDggQEAgQ2xvbmVGa1JlZmVyZW5jaW5nKExpc3QgKip3cXVldWUs IFJlbGF0aW9uIHBhcmVudFJlbCwgUmVsYXRpb24gcGFydFJlbCkKIAkJCQkJCQkJICBmYWxz ZSwJLyogaXNsb2NhbCAqLwogCQkJCQkJCQkgIDEsCS8qIGluaGNvdW50ICovCiAJCQkJCQkJ CSAgZmFsc2UsCS8qIGNvbk5vSW5oZXJpdCAqLworCQkJCQkJCQkgIGZhbHNlLAkvKiBjb25U ZW1wb3JhbCAqLworCQkJCQkJCQkgIEludmFsaWRPaWQsCiAJCQkJCQkJCSAgdHJ1ZSk7CiAK IAkJLyogU2V0IHVwIHBhcnRpdGlvbiBkZXBlbmRlbmNpZXMgZm9yIHRoZSBuZXcgY29uc3Ry YWludCAqLwpAQCAtMTE3MjUsNiArMTE3MzIsNyBAQCBBVEV4ZWNWYWxpZGF0ZUNvbnN0cmFp bnQoTGlzdCAqKndxdWV1ZSwgUmVsYXRpb24gcmVsLCBjaGFyICpjb25zdHJOYW1lLAogCQkJ bmV3Y29uLT5yZWZyZWxpZCA9IGNvbi0+Y29uZnJlbGlkOwogCQkJbmV3Y29uLT5yZWZpbmRp ZCA9IGNvbi0+Y29uaW5kaWQ7CiAJCQluZXdjb24tPmNvbmlkID0gY29uLT5vaWQ7CisJCQlu ZXdjb24tPmNvbnRlbXBvcmFsID0gY29uLT5jb250ZW1wb3JhbDsKIAkJCW5ld2Nvbi0+cXVh bCA9IChOb2RlICopIGZrY29uc3RyYWludDsKIAogCQkJLyogRmluZCBvciBjcmVhdGUgd29y ayBxdWV1ZSBlbnRyeSBmb3IgdGhpcyB0YWJsZSAqLwpAQCAtMTE4OTEsMTAgKzExODk5LDEy IEBAIHRyYW5zZm9ybUNvbHVtbk5hbWVMaXN0KE9pZCByZWxJZCwgTGlzdCAqY29sTGlzdCwK ICAqCiAgKglMb29rIHVwIHRoZSBuYW1lcywgYXR0bnVtcywgYW5kIHR5cGVzIG9mIHRoZSBw cmltYXJ5IGtleSBhdHRyaWJ1dGVzCiAgKglmb3IgdGhlIHBrcmVsLiAgQWxzbyByZXR1cm4g dGhlIGluZGV4IE9JRCBhbmQgaW5kZXggb3BjbGFzc2VzIG9mIHRoZQotICoJaW5kZXggc3Vw cG9ydGluZyB0aGUgcHJpbWFyeSBrZXkuCisgKglpbmRleCBzdXBwb3J0aW5nIHRoZSBwcmlt YXJ5IGtleS4gIElmIHRoaXMgaXMgYSB0ZW1wb3JhbCBwcmltYXJ5IGtleSwKKyAqCWFsc28g c2V0IHRoZSBXSVRIT1VUIE9WRVJMQVBTIGF0dHJpYnV0ZSBuYW1lLCBhdHRudW0sIGFuZCBh dHR0eXBpZC4KICAqCiAgKglBbGwgcGFyYW1ldGVycyBleGNlcHQgcGtyZWwgYXJlIG91dHB1 dCBwYXJhbWV0ZXJzLiAgQWxzbywgdGhlIGZ1bmN0aW9uCi0gKglyZXR1cm4gdmFsdWUgaXMg dGhlIG51bWJlciBvZiBhdHRyaWJ1dGVzIGluIHRoZSBwcmltYXJ5IGtleS4KKyAqCXJldHVy biB2YWx1ZSBpcyB0aGUgbnVtYmVyIG9mIGF0dHJpYnV0ZXMgaW4gdGhlIHByaW1hcnkga2V5 LAorICoJbm90IGluY2x1ZGluZyB0aGUgV0lUSE9VVCBPVkVSTEFQUyBpZiBhbnkuCiAgKgog ICoJVXNlZCB3aGVuIHRoZSBjb2x1bW4gbGlzdCBpbiB0aGUgUkVGRVJFTkNFUyBzcGVjaWZp Y2F0aW9uIGlzIG9taXR0ZWQuCiAgKi8KQEAgLTE0MTk2LDcgKzE0MjA2LDkgQEAgVHJ5UmV1 c2VJbmRleChPaWQgb2xkSWQsIEluZGV4U3RtdCAqc3RtdCkKIAlpZiAoQ2hlY2tJbmRleENv bXBhdGlibGUob2xkSWQsCiAJCQkJCQkJIHN0bXQtPmFjY2Vzc01ldGhvZCwKIAkJCQkJCQkg c3RtdC0+aW5kZXhQYXJhbXMsCi0JCQkJCQkJIHN0bXQtPmV4Y2x1ZGVPcE5hbWVzKSkKKwkJ CQkJCQkgc3RtdC0+ZXhjbHVkZU9wTmFtZXMsCisJCQkJCQkJIHN0bXQtPmlzdGVtcG9yYWws CisJCQkJCQkJIHN0bXQtPnBlcmlvZCA/IHN0bXQtPnBlcmlvZC0+cGVyaW9kbmFtZSA6IE5V TEwpKQogCXsKIAkJUmVsYXRpb24JaXJlbCA9IGluZGV4X29wZW4ob2xkSWQsIE5vTG9jayk7 CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIuYyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIuYwppbmRleCA0YjI5NWY4ZGE1Li4zMzVkMzFjNGYw IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90cmlnZ2VyLmMKKysrIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dlci5jCkBAIC04NDEsNiArODQxLDggQEAgQ3JlYXRl VHJpZ2dlckZpcmluZ09uKENyZWF0ZVRyaWdTdG10ICpzdG10LCBjb25zdCBjaGFyICpxdWVy eVN0cmluZywKIAkJCQkJCQkJCQkJICB0cnVlLCAvKiBpc2xvY2FsICovCiAJCQkJCQkJCQkJ CSAgMCwJLyogaW5oY291bnQgKi8KIAkJCQkJCQkJCQkJICB0cnVlLCAvKiBub2luaGVyaXQg Ki8KKwkJCQkJCQkJCQkJICBmYWxzZSwgLyogY29udGVtcG9yYWwgKi8KKwkJCQkJCQkJCQkJ ICBJbnZhbGlkT2lkLCAvKiBjb25wZXJpb2QgKi8KIAkJCQkJCQkJCQkJICBpc0ludGVybmFs KTsJLyogaXNfaW50ZXJuYWwgKi8KIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3R5cGVjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90eXBlY21kcy5jCmlu ZGV4IDM0NDBkYmM0NDAuLjc5NTExZTJhNmYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3R5cGVjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHlwZWNtZHMu YwpAQCAtMzU0NCw2ICszNTQ0LDggQEAgZG9tYWluQWRkQ29uc3RyYWludChPaWQgZG9tYWlu T2lkLCBPaWQgZG9tYWluTmFtZXNwYWNlLCBPaWQgYmFzZVR5cGVPaWQsCiAJCQkJCQkJICB0 cnVlLCAvKiBpcyBsb2NhbCAqLwogCQkJCQkJCSAgMCwJLyogaW5oY291bnQgKi8KIAkJCQkJ CQkgIGZhbHNlLAkvKiBjb25ub2luaGVyaXQgKi8KKwkJCQkJCQkgIGZhbHNlLAkvKiBjb250 ZW1wb3JhbCAqLworCQkJCQkJCSAgSW52YWxpZE9pZCwgLyogY29ucGVyaW9kICovCiAJCQkJ CQkJICBmYWxzZSk7CS8qIGlzX2ludGVybmFsICovCiAJaWYgKGNvbnN0ckFkZHIpCiAJCU9i amVjdEFkZHJlc3NTZXQoKmNvbnN0ckFkZHIsIENvbnN0cmFpbnRSZWxhdGlvbklkLCBjY29p ZCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9tYWtlZnVuY3MuYyBiL3NyYy9i YWNrZW5kL25vZGVzL21ha2VmdW5jcy5jCmluZGV4IDM5ZTE4ODRjZjQuLjI1ZThkOTE0ZjEg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5jcy5jCisrKyBiL3NyYy9i YWNrZW5kL25vZGVzL21ha2VmdW5jcy5jCkBAIC03NDUsNyArNzQ1LDcgQEAgbWFrZV9hbmRz X2ltcGxpY2l0KEV4cHIgKmNsYXVzZSkKIEluZGV4SW5mbyAqCiBtYWtlSW5kZXhJbmZvKGlu dCBudW1hdHRycywgaW50IG51bWtleWF0dHJzLCBPaWQgYW1vaWQsIExpc3QgKmV4cHJlc3Np b25zLAogCQkJICBMaXN0ICpwcmVkaWNhdGVzLCBib29sIHVuaXF1ZSwgYm9vbCBudWxsc19u b3RfZGlzdGluY3QsCi0JCQkgIGJvb2wgaXNyZWFkeSwgYm9vbCBjb25jdXJyZW50LCBib29s IHN1bW1hcml6aW5nKQorCQkJICBib29sIGlzcmVhZHksIGJvb2wgY29uY3VycmVudCwgYm9v bCBzdW1tYXJpemluZywgYm9vbCB0ZW1wb3JhbCkKIHsKIAlJbmRleEluZm8gICpuID0gbWFr ZU5vZGUoSW5kZXhJbmZvKTsKIApAQCAtNzU1LDYgKzc1NSw3IEBAIG1ha2VJbmRleEluZm8o aW50IG51bWF0dHJzLCBpbnQgbnVta2V5YXR0cnMsIE9pZCBhbW9pZCwgTGlzdCAqZXhwcmVz c2lvbnMsCiAJQXNzZXJ0KG4tPmlpX051bUluZGV4S2V5QXR0cnMgPD0gbi0+aWlfTnVtSW5k ZXhBdHRycyk7CiAJbi0+aWlfVW5pcXVlID0gdW5pcXVlOwogCW4tPmlpX051bGxzTm90RGlz dGluY3QgPSBudWxsc19ub3RfZGlzdGluY3Q7CisJbi0+aWlfVGVtcG9yYWwgPSB0ZW1wb3Jh bDsKIAluLT5paV9SZWFkeUZvckluc2VydHMgPSBpc3JlYWR5OwogCW4tPmlpX0NoZWNrZWRV bmNoYW5nZWQgPSBmYWxzZTsKIAluLT5paV9JbmRleFVuY2hhbmdlZCA9IGZhbHNlOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSBiL3NyYy9iYWNrZW5kL3BhcnNl ci9ncmFtLnkKaW5kZXggYWQxMjU3ZjUxZi4uNzA5NzQwODFhNSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvcGFyc2VyL2dyYW0ueQorKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55 CkBAIC01MjEsNyArNTIxLDggQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2Vs ZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKICV0eXBl IDxub2RlPglUYWJsZUVsZW1lbnQgVHlwZWRUYWJsZUVsZW1lbnQgQ29uc3RyYWludEVsZW0g VGFibGVGdW5jRWxlbWVudAogJXR5cGUgPG5vZGU+CWNvbHVtbkRlZiBjb2x1bW5PcHRpb25z CiAldHlwZSA8ZGVmZWx0PglkZWZfZWxlbSByZWxvcHRpb25fZWxlbSBvbGRfYWdncl9lbGVt IG9wZXJhdG9yX2RlZl9lbGVtCi0ldHlwZSA8bm9kZT4JZGVmX2FyZyBjb2x1bW5FbGVtIHdo ZXJlX2NsYXVzZSB3aGVyZV9vcl9jdXJyZW50X2NsYXVzZQorJXR5cGUgPG5vZGU+CWRlZl9h cmcgY29sdW1uRWxlbSB3aXRob3V0T3ZlcmxhcHNDbGF1c2UKKwkJCQl3aGVyZV9jbGF1c2Ug d2hlcmVfb3JfY3VycmVudF9jbGF1c2UKIAkJCQlhX2V4cHIgYl9leHByIGNfZXhwciBBZXhw ckNvbnN0IGluZGlyZWN0aW9uX2VsIG9wdF9zbGljZV9ib3VuZAogCQkJCWNvbHVtbnJlZiBp bl9leHByIGhhdmluZ19jbGF1c2UgZnVuY190YWJsZSB4bWx0YWJsZSBhcnJheV9leHByCiAJ CQkJT3B0V2hlcmVDbGF1c2Ugb3BlcmF0b3JfZGVmX2FyZwpAQCAtMzkxMyw2ICszOTE0LDcg QEAgQ29sQ29uc3RyYWludEVsZW06CiAJCQkJCW4tPmNvbnR5cGUgPSBDT05TVFJfUFJJTUFS WTsKIAkJCQkJbi0+bG9jYXRpb24gPSBAMTsKIAkJCQkJbi0+a2V5cyA9IE5VTEw7CisJCQkJ CW4tPndpdGhvdXRfb3ZlcmxhcHMgPSBOVUxMOwogCQkJCQluLT5vcHRpb25zID0gJDM7CiAJ CQkJCW4tPmluZGV4bmFtZSA9IE5VTEw7CiAJCQkJCW4tPmluZGV4c3BhY2UgPSAkNDsKQEAg LTQxMzIsNyArNDEzNCw3IEBAIENvbnN0cmFpbnRFbGVtOgogCQkJCQluLT5pbml0aWFsbHlf dmFsaWQgPSAhbi0+c2tpcF92YWxpZGF0aW9uOwogCQkJCQkkJCA9IChOb2RlICopIG47CiAJ CQkJfQotCQkJfCBVTklRVUUgb3B0X3VuaXF1ZV9udWxsX3RyZWF0bWVudCAnKCcgY29sdW1u TGlzdCAnKScgb3B0X2NfaW5jbHVkZSBvcHRfZGVmaW5pdGlvbiBPcHRDb25zVGFibGVTcGFj ZQorCQkJfCBVTklRVUUgb3B0X3VuaXF1ZV9udWxsX3RyZWF0bWVudCAnKCcgY29sdW1uTGlz dCB3aXRob3V0T3ZlcmxhcHNDbGF1c2UgJyknIG9wdF9jX2luY2x1ZGUgb3B0X2RlZmluaXRp b24gT3B0Q29uc1RhYmxlU3BhY2UKIAkJCQlDb25zdHJhaW50QXR0cmlidXRlU3BlYwogCQkJ CXsKIAkJCQkJQ29uc3RyYWludCAqbiA9IG1ha2VOb2RlKENvbnN0cmFpbnQpOwpAQCAtNDE0 MSwxMSArNDE0MywxMiBAQCBDb25zdHJhaW50RWxlbToKIAkJCQkJbi0+bG9jYXRpb24gPSBA MTsKIAkJCQkJbi0+bnVsbHNfbm90X2Rpc3RpbmN0ID0gISQyOwogCQkJCQluLT5rZXlzID0g JDQ7Ci0JCQkJCW4tPmluY2x1ZGluZyA9ICQ2OwotCQkJCQluLT5vcHRpb25zID0gJDc7CisJ CQkJCW4tPndpdGhvdXRfb3ZlcmxhcHMgPSAkNTsKKwkJCQkJbi0+aW5jbHVkaW5nID0gJDc7 CisJCQkJCW4tPm9wdGlvbnMgPSAkODsKIAkJCQkJbi0+aW5kZXhuYW1lID0gTlVMTDsKLQkJ CQkJbi0+aW5kZXhzcGFjZSA9ICQ4OwotCQkJCQlwcm9jZXNzQ0FTYml0cygkOSwgQDksICJV TklRVUUiLAorCQkJCQluLT5pbmRleHNwYWNlID0gJDk7CisJCQkJCXByb2Nlc3NDQVNiaXRz KCQxMCwgQDEwLCAiVU5JUVVFIiwKIAkJCQkJCQkJICAgJm4tPmRlZmVycmFibGUsICZuLT5p bml0ZGVmZXJyZWQsIE5VTEwsCiAJCQkJCQkJCSAgIE5VTEwsIHl5c2Nhbm5lcik7CiAJCQkJ CSQkID0gKE5vZGUgKikgbjsKQEAgLTQxNjYsNyArNDE2OSw3IEBAIENvbnN0cmFpbnRFbGVt OgogCQkJCQkJCQkgICBOVUxMLCB5eXNjYW5uZXIpOwogCQkJCQkkJCA9IChOb2RlICopIG47 CiAJCQkJfQotCQkJfCBQUklNQVJZIEtFWSAnKCcgY29sdW1uTGlzdCAnKScgb3B0X2NfaW5j bHVkZSBvcHRfZGVmaW5pdGlvbiBPcHRDb25zVGFibGVTcGFjZQorCQkJfCBQUklNQVJZIEtF WSAnKCcgY29sdW1uTGlzdCB3aXRob3V0T3ZlcmxhcHNDbGF1c2UgJyknIG9wdF9jX2luY2x1 ZGUgb3B0X2RlZmluaXRpb24gT3B0Q29uc1RhYmxlU3BhY2UKIAkJCQlDb25zdHJhaW50QXR0 cmlidXRlU3BlYwogCQkJCXsKIAkJCQkJQ29uc3RyYWludCAqbiA9IG1ha2VOb2RlKENvbnN0 cmFpbnQpOwpAQCAtNDE3NCwxMSArNDE3NywxMiBAQCBDb25zdHJhaW50RWxlbToKIAkJCQkJ bi0+Y29udHlwZSA9IENPTlNUUl9QUklNQVJZOwogCQkJCQluLT5sb2NhdGlvbiA9IEAxOwog CQkJCQluLT5rZXlzID0gJDQ7Ci0JCQkJCW4tPmluY2x1ZGluZyA9ICQ2OwotCQkJCQluLT5v cHRpb25zID0gJDc7CisJCQkJCW4tPndpdGhvdXRfb3ZlcmxhcHMgPSAkNTsKKwkJCQkJbi0+ aW5jbHVkaW5nID0gJDc7CisJCQkJCW4tPm9wdGlvbnMgPSAkODsKIAkJCQkJbi0+aW5kZXhu YW1lID0gTlVMTDsKLQkJCQkJbi0+aW5kZXhzcGFjZSA9ICQ4OwotCQkJCQlwcm9jZXNzQ0FT Yml0cygkOSwgQDksICJQUklNQVJZIEtFWSIsCisJCQkJCW4tPmluZGV4c3BhY2UgPSAkOTsK KwkJCQkJcHJvY2Vzc0NBU2JpdHMoJDEwLCBAMTAsICJQUklNQVJZIEtFWSIsCiAJCQkJCQkJ CSAgICZuLT5kZWZlcnJhYmxlLCAmbi0+aW5pdGRlZmVycmVkLCBOVUxMLAogCQkJCQkJCQkg ICBOVUxMLCB5eXNjYW5uZXIpOwogCQkJCQkkJCA9IChOb2RlICopIG47CkBAIC00MTkwLDYg KzQxOTQsNyBAQCBDb25zdHJhaW50RWxlbToKIAkJCQkJbi0+Y29udHlwZSA9IENPTlNUUl9Q UklNQVJZOwogCQkJCQluLT5sb2NhdGlvbiA9IEAxOwogCQkJCQluLT5rZXlzID0gTklMOwor CQkJCQluLT53aXRob3V0X292ZXJsYXBzID0gTlVMTDsKIAkJCQkJbi0+aW5jbHVkaW5nID0g TklMOwogCQkJCQluLT5vcHRpb25zID0gTklMOwogCQkJCQluLT5pbmRleG5hbWUgPSAkMzsK QEAgLTQyNTYsNiArNDI2MSwxMSBAQCBjb2x1bW5MaXN0OgogCQkJfCBjb2x1bW5MaXN0ICcs JyBjb2x1bW5FbGVtCQkJCXsgJCQgPSBsYXBwZW5kKCQxLCAkMyk7IH0KIAkJOwogCit3aXRo b3V0T3ZlcmxhcHNDbGF1c2U6CisJCQknLCcgY29sdW1uRWxlbSBXSVRIT1VUIE9WRVJMQVBT IHsgJCQgPSAkMjsgfQorCQkJfCAvKkVNUFRZKi8gICAgICAgICAgICAgICB7ICQkID0gTlVM TDsgfQorCTsKKwogY29sdW1uRWxlbTogQ29sSWQKIAkJCQl7CiAJCQkJCSQkID0gKE5vZGUg KikgbWFrZVN0cmluZygkMSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFy c2VfdXRpbGNtZC5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYwppbmRl eCBiOGNmNDY1ZGNjLi4yMWJlMTVmYTE0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJz ZXIvcGFyc2VfdXRpbGNtZC5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGls Y21kLmMKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX2NvbnN0cmFp bnQuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX29wY2xhc3MuaCIKICNpbmNsdWRlICJjYXRh bG9nL3BnX29wZXJhdG9yLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19wZXJpb2QuaCIKICNp bmNsdWRlICJjYXRhbG9nL3BnX3N0YXRpc3RpY19leHQuaCIKICNpbmNsdWRlICJjYXRhbG9n L3BnX3R5cGUuaCIKICNpbmNsdWRlICJjb21tYW5kcy9jb21tZW50LmgiCkBAIC0xMjYsNiAr MTI3LDggQEAgc3RhdGljIExpc3QgKmdldF9vcGNsYXNzKE9pZCBvcGNsYXNzLCBPaWQgYWN0 dWFsX2RhdGF0eXBlKTsKIHN0YXRpYyB2b2lkIHRyYW5zZm9ybUluZGV4Q29uc3RyYWludHMo Q3JlYXRlU3RtdENvbnRleHQgKmN4dCk7CiBzdGF0aWMgSW5kZXhTdG10ICp0cmFuc2Zvcm1J bmRleENvbnN0cmFpbnQoQ29uc3RyYWludCAqY29uc3RyYWludCwKIAkJCQkJCQkJCQkgICBD cmVhdGVTdG10Q29udGV4dCAqY3h0KTsKK3N0YXRpYyBib29sIGZpbmROZXdPck9sZENvbHVt bihDcmVhdGVTdG10Q29udGV4dCAqY3h0LCBjaGFyICpjb2xuYW1lLCBjaGFyICoqdHlwbmFt ZSwKKwkJCQkJCQkgICBPaWQgKnR5cGlkKTsKIHN0YXRpYyB2b2lkIHRyYW5zZm9ybUV4dGVu ZGVkU3RhdGlzdGljcyhDcmVhdGVTdG10Q29udGV4dCAqY3h0KTsKIHN0YXRpYyB2b2lkIHRy YW5zZm9ybUZLQ29uc3RyYWludHMoQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwKIAkJCQkJCQkJ ICAgYm9vbCBza2lwVmFsaWRhdGlvbiwKQEAgLTE2OTQsNiArMTY5Nyw3IEBAIGdlbmVyYXRl Q2xvbmVkSW5kZXhTdG10KFJhbmdlVmFyICpoZWFwUmVsLCBSZWxhdGlvbiBzb3VyY2VfaWR4 LAogCWluZGV4LT51bmlxdWUgPSBpZHhyZWMtPmluZGlzdW5pcXVlOwogCWluZGV4LT5udWxs c19ub3RfZGlzdGluY3QgPSBpZHhyZWMtPmluZG51bGxzbm90ZGlzdGluY3Q7CiAJaW5kZXgt PnByaW1hcnkgPSBpZHhyZWMtPmluZGlzcHJpbWFyeTsKKwlpbmRleC0+aXN0ZW1wb3JhbCA9 IGlkeHJlYy0+aW5kaXNwcmltYXJ5ICYmIGlkeHJlYy0+aW5kaXNleGNsdXNpb247CiAJaW5k ZXgtPnRyYW5zZm9ybWVkID0gdHJ1ZTsJLyogZG9uJ3QgbmVlZCB0cmFuc2Zvcm1JbmRleFN0 bXQgKi8KIAlpbmRleC0+Y29uY3VycmVudCA9IGZhbHNlOwogCWluZGV4LT5pZl9ub3RfZXhp c3RzID0gZmFsc2U7CkBAIC0xNzQ4LDcgKzE3NTIsNyBAQCBnZW5lcmF0ZUNsb25lZEluZGV4 U3RtdChSYW5nZVZhciAqaGVhcFJlbCwgUmVsYXRpb24gc291cmNlX2lkeCwKIAkJCQlpbnQJ CQluRWxlbXM7CiAJCQkJaW50CQkJaTsKIAotCQkJCUFzc2VydChjb25yZWMtPmNvbnR5cGUg PT0gQ09OU1RSQUlOVF9FWENMVVNJT04pOworCQkJCUFzc2VydChjb25yZWMtPmNvbnR5cGUg PT0gQ09OU1RSQUlOVF9FWENMVVNJT04gfHwgY29ucmVjLT5jb250eXBlID09IENPTlNUUkFJ TlRfUFJJTUFSWSk7CiAJCQkJLyogRXh0cmFjdCBvcGVyYXRvciBPSURzIGZyb20gdGhlIHBn X2NvbnN0cmFpbnQgdHVwbGUgKi8KIAkJCQlkYXR1bSA9IFN5c0NhY2hlR2V0QXR0ck5vdE51 bGwoQ09OU1RST0lELCBodF9jb25zdHIsCiAJCQkJCQkJCQkJCSAgIEFudW1fcGdfY29uc3Ry YWludF9jb25leGNsb3ApOwpAQCAtMjI5MCw2ICsyMjk0LDcgQEAgdHJhbnNmb3JtSW5kZXhD b25zdHJhaW50KENvbnN0cmFpbnQgKmNvbnN0cmFpbnQsIENyZWF0ZVN0bXRDb250ZXh0ICpj eHQpCiAJfQogCWluZGV4LT5udWxsc19ub3RfZGlzdGluY3QgPSBjb25zdHJhaW50LT5udWxs c19ub3RfZGlzdGluY3Q7CiAJaW5kZXgtPmlzY29uc3RyYWludCA9IHRydWU7CisJaW5kZXgt PmlzdGVtcG9yYWwgPSBjb25zdHJhaW50LT53aXRob3V0X292ZXJsYXBzICE9IE5VTEw7CiAJ aW5kZXgtPmRlZmVycmFibGUgPSBjb25zdHJhaW50LT5kZWZlcnJhYmxlOwogCWluZGV4LT5p bml0ZGVmZXJyZWQgPSBjb25zdHJhaW50LT5pbml0ZGVmZXJyZWQ7CiAKQEAgLTIzODIsNiAr MjM4NywxMSBAQCB0cmFuc2Zvcm1JbmRleENvbnN0cmFpbnQoQ29uc3RyYWludCAqY29uc3Ry YWludCwgQ3JlYXRlU3RtdENvbnRleHQgKmN4dCkKIAkJCQkJIGVycm1zZygiaW5kZXggXCIl c1wiIGlzIG5vdCB2YWxpZCIsIGluZGV4X25hbWUpLAogCQkJCQkgcGFyc2VyX2VycnBvc2l0 aW9uKGN4dC0+cHN0YXRlLCBjb25zdHJhaW50LT5sb2NhdGlvbikpKTsKIAorCQkvKgorCQkg KiBUb2RheSB3ZSBmb3JiaWQgbm9uLXVuaXF1ZSBpbmRleGVzLCBidXQgd2UgY291bGQgcGVy bWl0IEdpU1QKKwkJICogaW5kZXhlcyB3aG9zZSBsYXN0IGVudHJ5IGlzIGEgcmFuZ2UgdHlw ZSBhbmQgdXNlIHRoYXQgdG8gY3JlYXRlIGEKKwkJICogV0lUSE9VVCBPVkVSTEFQUyBjb25z dHJhaW50IChpLmUuIGEgdGVtcG9yYWwgY29uc3RyYWludCkuCisJCSAqLwogCQlpZiAoIWlu ZGV4X2Zvcm0tPmluZGlzdW5pcXVlKQogCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJKGVycmNv ZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSksCkBAIC0yNjcwLDYgKzI2ODAsMTUyIEBA IHRyYW5zZm9ybUluZGV4Q29uc3RyYWludChDb25zdHJhaW50ICpjb25zdHJhaW50LCBDcmVh dGVTdG10Q29udGV4dCAqY3h0KQogCQkJCW5vdG51bGxjbWRzID0gbGFwcGVuZChub3RudWxs Y21kcywgbm90bnVsbGNtZCk7CiAJCQl9CiAJCX0KKworCQkvKgorCQkgKiBBbnl0aGluZyBp biB3aXRob3V0X292ZXJsYXBzIHNob3VsZCBiZSBpbmNsdWRlZCwKKwkJICogYnV0IHdpdGgg dGhlIG92ZXJsYXBzIG9wZXJhdG9yICgmJikgaW5zdGVhZCBvZiBlcXVhbGl0eS4KKwkJICov CisJCWlmIChjb25zdHJhaW50LT53aXRob3V0X292ZXJsYXBzICE9IE5VTEwpIHsKKwkJCWNo YXIgKndpdGhvdXRfb3ZlcmxhcHNfc3RyID0gc3RyVmFsKGNvbnN0cmFpbnQtPndpdGhvdXRf b3ZlcmxhcHMpOworCQkJSW5kZXhFbGVtICppcGFyYW0gPSBtYWtlTm9kZShJbmRleEVsZW0p OworCQkJY2hhciAgICp0eXBuYW1lOworCQkJT2lkCQl0eXBpZDsKKworCQkJLyoKKwkJCSAq IEl0ZXJhdGUgdGhyb3VnaCB0aGUgdGFibGUncyBjb2x1bW5zCisJCQkgKiAobGlrZSBqdXN0 IGEgbGl0dGxlIGJpdCBhYm92ZSkuCisJCQkgKiBJZiB3ZSBmaW5kIG9uZSB3aG9zZSBuYW1l IGlzIHRoZSBzYW1lIGFzIHdpdGhvdXRfb3ZlcmxhcHMsCisJCQkgKiB2YWxpZGF0ZSB0aGF0 IGl0J3MgYSByYW5nZSB0eXBlLgorCQkJICoKKwkJCSAqIE90aGVyd2lzZSBpdGVyYXRlIHRo cm91Z2ggdGhlIHRhYmxlJ3Mgbm9uLXN5c3RlbSBQRVJJT0RzLAorCQkJICogYW5kIGlmIHdl IGZpbmQgb25lIHRoZW4gdXNlIGl0cyBzdGFydC9lbmQgY29sdW1ucworCQkJICogdG8gY29u c3RydWN0IGEgcmFuZ2UgZXhwcmVzc2lvbi4KKwkJCSAqCisJCQkgKiBPdGhlcndpc2UgcmVw b3J0IGFuIGVycm9yLgorCQkJICovCisKKwkJCWlmIChmaW5kTmV3T3JPbGRDb2x1bW4oY3h0 LCB3aXRob3V0X292ZXJsYXBzX3N0ciwgJnR5cG5hbWUsICZ0eXBpZCkpCisJCQl7CisJCQkJ aWYgKHR5cGVfaXNfcmFuZ2UodHlwaWQpKQorCQkJCXsKKwkJCQkJQWx0ZXJUYWJsZUNtZCAq bm90bnVsbGNtZDsKKworCQkJCQlpcGFyYW0tPm5hbWUgPSBwc3RyZHVwKHdpdGhvdXRfb3Zl cmxhcHNfc3RyKTsKKwkJCQkJaXBhcmFtLT5leHByID0gTlVMTDsKKworCQkJCQkvKgorCQkJ CQkgKiBGb3JjZSB0aGUgY29sdW1uIHRvIE5PVCBOVUxMIHNpbmNlIGl0IGlzIHBhcnQgb2Yg dGhlIHByaW1hcnkga2V5LgorCQkJCQkgKi8KKwkJCQkJbm90bnVsbGNtZCA9IG1ha2VOb2Rl KEFsdGVyVGFibGVDbWQpOworCisJCQkJCW5vdG51bGxjbWQtPnN1YnR5cGUgPSBBVF9TZXRO b3ROdWxsOworCQkJCQlub3RudWxsY21kLT5uYW1lID0gcHN0cmR1cCh3aXRob3V0X292ZXJs YXBzX3N0cik7CisJCQkJCW5vdG51bGxjbWRzID0gbGFwcGVuZChub3RudWxsY21kcywgbm90 bnVsbGNtZCk7CisJCQkJfQorCQkJCWVsc2UKKwkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJ CQkoZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENIKSwKKwkJCQkJCQkgZXJybXNn KCJjb2x1bW4gXCIlc1wiIG5hbWVkIGluIFdJVEhPVVQgT1ZFUkxBUFMgaXMgbm90IGEgcmFu Z2UgdHlwZSIsCisJCQkJCQkJCQl3aXRob3V0X292ZXJsYXBzX3N0cikpKTsKKwkJCX0KKwkJ CWVsc2UKKwkJCXsKKwkJCQkvKiBMb29rIGZvciBhIFBFUklPRCwgZmlyc3QgbmV3bHktZGVm aW5lZCAqLworCQkJCWNoYXIgKnN0YXJ0Y29sbmFtZSA9IE5VTEw7CisJCQkJY2hhciAqZW5k Y29sbmFtZSA9IE5VTEw7CisJCQkJTGlzdENlbGwgKnBlcmlvZHMgPSBOVUxMOworCQkJCWZv cmVhY2gocGVyaW9kcywgY3h0LT5wZXJpb2RzKQorCQkJCXsKKwkJCQkJUGVyaW9kRGVmICpw ZXJpb2QgPSBjYXN0Tm9kZShQZXJpb2REZWYsIGxmaXJzdChwZXJpb2RzKSk7CisJCQkJCWlm IChzdHJjbXAocGVyaW9kLT5wZXJpb2RuYW1lLCB3aXRob3V0X292ZXJsYXBzX3N0cikgPT0g MCkKKwkJCQkJeworCQkJCQkJc3RhcnRjb2xuYW1lID0gcGVyaW9kLT5zdGFydGNvbG5hbWU7 CisJCQkJCQllbmRjb2xuYW1lID0gcGVyaW9kLT5lbmRjb2xuYW1lOworCQkJCQkJLyogVGhl IHBlcmlvZCBoYXMgbm8gb2lkIHlldCwgYnV0IHRyYW5zZm9ybUluZGV4U3RtdCB3aWxsIGxv b2sgaXQgdXAgKi8KKwkJCQkJCWluZGV4LT5wZXJpb2QgPSBwZXJpb2Q7CisJCQkJCQlpbmRl eC0+cGVyaW9kLT5vaWQgPSBJbnZhbGlkT2lkOworCQkJCQkJaW5kZXgtPnBlcmlvZC0+cGVy aW9kbmFtZSA9IHdpdGhvdXRfb3ZlcmxhcHNfc3RyOworCQkJCQkJYnJlYWs7CisJCQkJCX0K KwkJCQl9CisKKwkJCQlpZiAoc3RhcnRjb2xuYW1lID09IE5VTEwgJiYgY3h0LT5yZWwpCisJ CQkJeworCQkJCQkvKiBMb29rIGZvciBhbiBhbHJlYWR5LWV4aXN0aW5nIFBFUklPRCAqLwor CQkJCQkvLyBUT0RPOiBsb2NraW5nPyByZWxlYXNpbmc/CisJCQkJCUhlYXBUdXBsZSBwZXJU dXBsZTsKKwkJCQkJT2lkIHJlbGlkID0gUmVsYXRpb25HZXRSZWxpZChjeHQtPnJlbCk7CisJ CQkJCXBlclR1cGxlID0gU2VhcmNoU3lzQ2FjaGUyKFBFUklPRE5BTUUsCisJCQkJCQkJT2Jq ZWN0SWRHZXREYXR1bShyZWxpZCksCisJCQkJCQkJUG9pbnRlckdldERhdHVtKHdpdGhvdXRf b3ZlcmxhcHNfc3RyKSk7CisJCQkJCWlmIChIZWFwVHVwbGVJc1ZhbGlkKHBlclR1cGxlKSkK KwkJCQkJeworCQkJCQkJRm9ybV9wZ19wZXJpb2QgcGVyID0gKEZvcm1fcGdfcGVyaW9kKSBH RVRTVFJVQ1QocGVyVHVwbGUpOworCQkJCQkJc3RhcnRjb2xuYW1lID0gZ2V0X2F0dG5hbWUo cmVsaWQsIHBlci0+cGVyc3RhcnQsIGZhbHNlKTsKKwkJCQkJCWVuZGNvbG5hbWUgPSBnZXRf YXR0bmFtZShyZWxpZCwgcGVyLT5wZXJlbmQsIGZhbHNlKTsKKwkJCQkJCWluZGV4LT5wZXJp b2QgPSBtYWtlTm9kZShQZXJpb2REZWYpOworCQkJCQkJaW5kZXgtPnBlcmlvZC0+b2lkID0g cGVyLT5vaWQ7CisJCQkJCQlpbmRleC0+cGVyaW9kLT5wZXJpb2RuYW1lID0gd2l0aG91dF9v dmVybGFwc19zdHI7CisKKwkJCQkJCVJlbGVhc2VTeXNDYWNoZShwZXJUdXBsZSk7CisJCQkJ CX0KKwkJCQl9CisJCQkJaWYgKHN0YXJ0Y29sbmFtZSAhPSBOVUxMKQorCQkJCXsKKwkJCQkJ Q29sdW1uUmVmICpzdGFydCwgKmVuZDsKKwkJCQkJT2lkIHJuZ3R5cGlkOworCQkJCQljaGFy ICpyYW5nZV90eXBlX25hbWU7CisKKwkJCQkJaWYgKCFmaW5kTmV3T3JPbGRDb2x1bW4oY3h0 LCBzdGFydGNvbG5hbWUsICZ0eXBuYW1lLCAmdHlwaWQpKQorCQkJCQkJZWxvZyhFUlJPUiwg Ik1pc3Npbmcgc3RhcnRjb2wgJXMgZm9yIHBlcmlvZCAlcyIsCisJCQkJCQkJIHN0YXJ0Y29s bmFtZSwgd2l0aG91dF9vdmVybGFwc19zdHIpOworCQkJCQlpZiAoIWZpbmROZXdPck9sZENv bHVtbihjeHQsIGVuZGNvbG5hbWUsICZ0eXBuYW1lLCAmdHlwaWQpKQorCQkJCQkJZWxvZyhF UlJPUiwgIk1pc3NpbmcgZW5kY29sICVzIGZvciBwZXJpb2QgJXMiLAorCQkJCQkJCSBlbmRj b2xuYW1lLCB3aXRob3V0X292ZXJsYXBzX3N0cik7CisKKwkJCQkJLyogVXNlIHRoZSBzdGFy dC9lbmQgY29sdW1ucyAqLworCisJCQkJCXN0YXJ0ID0gbWFrZU5vZGUoQ29sdW1uUmVmKTsK KwkJCQkJc3RhcnQtPmZpZWxkcyA9IGxpc3RfbWFrZTEobWFrZVN0cmluZyhzdGFydGNvbG5h bWUpKTsKKwkJCQkJc3RhcnQtPmxvY2F0aW9uID0gY29uc3RyYWludC0+bG9jYXRpb247CisK KwkJCQkJZW5kID0gbWFrZU5vZGUoQ29sdW1uUmVmKTsKKwkJCQkJZW5kLT5maWVsZHMgPSBs aXN0X21ha2UxKG1ha2VTdHJpbmcoZW5kY29sbmFtZSkpOworCQkJCQllbmQtPmxvY2F0aW9u ID0gY29uc3RyYWludC0+bG9jYXRpb247CisKKwkJCQkJcm5ndHlwaWQgPSBnZXRfc3VidHlw ZV9yYW5nZSh0eXBpZCk7CisJCQkJCWlmIChybmd0eXBpZCA9PSBJbnZhbGlkT2lkKQorCQkJ CQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9VTkRFRklORURf T0JKRUNUKSwKKwkJCQkJCQkJIGVycm1zZygiUEVSSU9EIFwiJXNcIiBjYW5ub3QgYmUgdXNl ZCBpbiBhIGNvbnN0cmFpbnQgd2l0aG91dCBhIGNvcnJlc3BvbmRpbmcgcmFuZ2UgdHlwZSIs CisJCQkJCQkJCQkJd2l0aG91dF9vdmVybGFwc19zdHIpKSk7CisKKwkJCQkJcmFuZ2VfdHlw ZV9uYW1lID0gZ2V0X3R5cG5hbWUocm5ndHlwaWQpOworCisJCQkJCS8qIEJ1aWxkIGEgcmFu Z2UgdG8gcmVwcmVzZW50IHRoZSBQRVJJT0QuICovCisJCQkJCWlwYXJhbS0+bmFtZSA9IE5V TEw7CisJCQkJCWlwYXJhbS0+ZXhwciA9IChOb2RlICopIG1ha2VGdW5jQ2FsbChTeXN0ZW1G dW5jTmFtZShyYW5nZV90eXBlX25hbWUpLAorCQkJCQkJCQkJCQkJCQkgbGlzdF9tYWtlMihz dGFydCwgZW5kKSwKKwkJCQkJCQkJCQkJCQkJIENPRVJDRV9FWFBMSUNJVF9DQUxMLAorCQkJ CQkJCQkJCQkJCQkgLTEpOworCQkJCX0KKwkJCQllbHNlCisJCQkJCWVyZXBvcnQoRVJST1Is CisJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfQ09MVU1OKSwKKwkJCQkJCQkg ZXJybXNnKCJyYW5nZSBvciBQRVJJT0QgXCIlc1wiIG5hbWVkIGluIFdJVEhPVVQgT1ZFUkxB UFMgZG9lcyBub3QgZXhpc3QiLAorCQkJCQkJCQkJd2l0aG91dF9vdmVybGFwc19zdHIpKSk7 CisJCQl9CisKKwkJCWlwYXJhbS0+aW5kZXhjb2xuYW1lID0gTlVMTDsKKwkJCWlwYXJhbS0+ Y29sbGF0aW9uID0gTklMOworCQkJaXBhcmFtLT5vcGNsYXNzID0gTklMOworCQkJaXBhcmFt LT5vcmRlcmluZyA9IFNPUlRCWV9ERUZBVUxUOworCQkJaXBhcmFtLT5udWxsc19vcmRlcmlu ZyA9IFNPUlRCWV9OVUxMU19ERUZBVUxUOworCQkJaW5kZXgtPmluZGV4UGFyYW1zID0gbGFw cGVuZChpbmRleC0+aW5kZXhQYXJhbXMsIGlwYXJhbSk7CisKKwkJCWluZGV4LT5hY2Nlc3NN ZXRob2QgPSAiZ2lzdCI7CisJCQljb25zdHJhaW50LT5hY2Nlc3NfbWV0aG9kID0gImdpc3Qi OworCQl9CiAJfQogCiAJLyoKQEAgLTI3ODksNiArMjk0NSw1NSBAQCB0cmFuc2Zvcm1JbmRl eENvbnN0cmFpbnQoQ29uc3RyYWludCAqY29uc3RyYWludCwgQ3JlYXRlU3RtdENvbnRleHQg KmN4dCkKIAlyZXR1cm4gaW5kZXg7CiB9CiAKKy8qCisgKiBUcmllcyB0byBmaW5kIGEgY29s dW1uIGJ5IG5hbWUgYW1vbmcgdGhlIGV4aXN0aW5nIG9uZXMgKGlmIGl0J3MgYW4gQUxURVIg VEFCTEUpCisgKiBhbmQgdGhlIG5ldyBvbmVzLiBTZXRzIHR5cG5hbWUgYW5kIHR5cGlkIGlm IG9uZSBpcyBmb3VuZC4gUmV0dXJucyBmYWxzZSBpZiB3ZQorICogY291bGRuJ3QgZmluZCBh IG1hdGNoLgorICovCitzdGF0aWMgYm9vbAorZmluZE5ld09yT2xkQ29sdW1uKENyZWF0ZVN0 bXRDb250ZXh0ICpjeHQsIGNoYXIgKmNvbG5hbWUsIGNoYXIgKip0eXBuYW1lLCBPaWQgKnR5 cGlkKQoreworCS8qIENoZWNrIHRoZSBuZXcgY29sdW1ucyBmaXJzdCBpbiBjYXNlIHRoZWly IHR5cGUgaXMgY2hhbmdpbmcuICovCisKKwlDb2x1bW5EZWYgICpjb2x1bW4gPSBOVUxMOwor CUxpc3RDZWxsICAgKmNvbHVtbnM7CisKKwlmb3JlYWNoKGNvbHVtbnMsIGN4dC0+Y29sdW1u cykKKwl7CisJCWNvbHVtbiA9IGxmaXJzdF9ub2RlKENvbHVtbkRlZiwgY29sdW1ucyk7CisJ CWlmIChzdHJjbXAoY29sdW1uLT5jb2xuYW1lLCBjb2xuYW1lKSA9PSAwKQorCQl7CisJCQkq dHlwaWQgPSB0eXBlbmFtZVR5cGVJZChOVUxMLCBjb2x1bW4tPnR5cGVOYW1lKTsKKwkJCSp0 eXBuYW1lID0gVHlwZU5hbWVUb1N0cmluZyhjb2x1bW4tPnR5cGVOYW1lKTsKKwkJCXJldHVy biB0cnVlOworCQl9CisJfQorCisJLy8gVE9ETzogc2hvdWxkIEkgY29uc2lkZXIgRFJPUCBD T0xVTU4/CisKKwkvKiBMb29rIHVwIGNvbHVtbnMgb24gZXhpc3RpbmcgdGFibGUuICovCisK KwlpZiAoY3h0LT5pc2FsdGVyKQorCXsKKwkJUmVsYXRpb24gcmVsID0gY3h0LT5yZWw7CisJ CWZvciAoaW50IGkgPSAwOyBpIDwgcmVsLT5yZF9hdHQtPm5hdHRzOyBpKyspCisJCXsKKwkJ CUZvcm1fcGdfYXR0cmlidXRlIGF0dHIgPSBUdXBsZURlc2NBdHRyKHJlbC0+cmRfYXR0LCBp KTsKKwkJCWNvbnN0IGNoYXIgKmF0dG5hbWUgPSBOYW1lU3RyKGF0dHItPmF0dG5hbWUpOwor CQkJaWYgKHN0cmNtcChhdHRuYW1lLCBjb2xuYW1lKSA9PSAwKQorCQkJeworCQkJCVR5cGUg dHlwZSA9IHR5cGVpZFR5cGUoYXR0ci0+YXR0dHlwaWQpOworCQkJCSp0eXBpZCA9IGF0dHIt PmF0dHR5cGlkOworCQkJCSp0eXBuYW1lID0gcHN0cmR1cCh0eXBlVHlwZU5hbWUodHlwZSkp OworCQkJCVJlbGVhc2VTeXNDYWNoZSh0eXBlKTsKKwkJCQlyZXR1cm4gdHJ1ZTsKKwkJCX0K KwkJfQorCX0KKworCXJldHVybiBmYWxzZTsKK30KKwogLyoKICAqIHRyYW5zZm9ybUV4dGVu ZGVkU3RhdGlzdGljcwogICogICAgIEhhbmRsZSBleHRlbmRlZCBzdGF0aXN0aWMgb2JqZWN0 cwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jIGIvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCmluZGV4IDQ2MTczNWU4NGYuLjAxY2Vi NmJmODEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYwor KysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKQEAgLTMzOCw4ICszMzgs OCBAQCBzdGF0aWMgY2hhciAqZGVwYXJzZV9leHByZXNzaW9uX3ByZXR0eShOb2RlICpleHBy LCBMaXN0ICpkcGNvbnRleHQsCiBzdGF0aWMgY2hhciAqcGdfZ2V0X3ZpZXdkZWZfd29ya2Vy KE9pZCB2aWV3b2lkLAogCQkJCQkJCQkgICBpbnQgcHJldHR5RmxhZ3MsIGludCB3cmFwQ29s dW1uKTsKIHN0YXRpYyBjaGFyICpwZ19nZXRfdHJpZ2dlcmRlZl93b3JrZXIoT2lkIHRyaWdp ZCwgYm9vbCBwcmV0dHkpOwotc3RhdGljIGludAlkZWNvbXBpbGVfY29sdW1uX2luZGV4X2Fy cmF5KERhdHVtIGNvbHVtbl9pbmRleF9hcnJheSwgT2lkIHJlbElkLAotCQkJCQkJCQkJCSBT dHJpbmdJbmZvIGJ1Zik7CitzdGF0aWMgaW50CWRlY29tcGlsZV9jb2x1bW5faW5kZXhfYXJy YXkoRGF0dW0gY29sdW1uX2luZGV4X2FycmF5LCBPaWQgcmVsSWQsIE9pZCBpbmRleElkLAor CQkJCQkJCQkJCSBib29sIHdpdGhvdXRPdmVybGFwcywgT2lkIHBlcmlvZGlkLCBTdHJpbmdJ bmZvIGJ1Zik7CiBzdGF0aWMgY2hhciAqcGdfZ2V0X3J1bGVkZWZfd29ya2VyKE9pZCBydWxl b2lkLCBpbnQgcHJldHR5RmxhZ3MpOwogc3RhdGljIGNoYXIgKnBnX2dldF9pbmRleGRlZl93 b3JrZXIoT2lkIGluZGV4cmVsaWQsIGludCBjb2xubywKIAkJCQkJCQkJCWNvbnN0IE9pZCAq ZXhjbHVkZU9wcywKQEAgLTIyMjksNyArMjIyOSw3IEBAIHBnX2dldF9jb25zdHJhaW50ZGVm X3dvcmtlcihPaWQgY29uc3RyYWludElkLCBib29sIGZ1bGxDb21tYW5kLAogCQkJCXZhbCA9 IFN5c0NhY2hlR2V0QXR0ck5vdE51bGwoQ09OU1RST0lELCB0dXAsCiAJCQkJCQkJCQkJCSBB bnVtX3BnX2NvbnN0cmFpbnRfY29ua2V5KTsKIAotCQkJCWRlY29tcGlsZV9jb2x1bW5faW5k ZXhfYXJyYXkodmFsLCBjb25Gb3JtLT5jb25yZWxpZCwgJmJ1Zik7CisJCQkJZGVjb21waWxl X2NvbHVtbl9pbmRleF9hcnJheSh2YWwsIGNvbkZvcm0tPmNvbnJlbGlkLCBjb25Gb3JtLT5j b25pbmRpZCwgZmFsc2UsIEludmFsaWRPaWQsICZidWYpOwogCiAJCQkJLyogYWRkIGZvcmVp Z24gcmVsYXRpb24gbmFtZSAqLwogCQkJCWFwcGVuZFN0cmluZ0luZm8oJmJ1ZiwgIikgUkVG RVJFTkNFUyAlcygiLApAQCAtMjI0MCw3ICsyMjQwLDcgQEAgcGdfZ2V0X2NvbnN0cmFpbnRk ZWZfd29ya2VyKE9pZCBjb25zdHJhaW50SWQsIGJvb2wgZnVsbENvbW1hbmQsCiAJCQkJdmFs ID0gU3lzQ2FjaGVHZXRBdHRyTm90TnVsbChDT05TVFJPSUQsIHR1cCwKIAkJCQkJCQkJCQkJ IEFudW1fcGdfY29uc3RyYWludF9jb25ma2V5KTsKIAotCQkJCWRlY29tcGlsZV9jb2x1bW5f aW5kZXhfYXJyYXkodmFsLCBjb25Gb3JtLT5jb25mcmVsaWQsICZidWYpOworCQkJCWRlY29t cGlsZV9jb2x1bW5faW5kZXhfYXJyYXkodmFsLCBjb25Gb3JtLT5jb25mcmVsaWQsIGNvbkZv cm0tPmNvbmluZGlkLCBmYWxzZSwgSW52YWxpZE9pZCwgJmJ1Zik7CiAKIAkJCQlhcHBlbmRT dHJpbmdJbmZvQ2hhcigmYnVmLCAnKScpOwogCkBAIC0yMzI2LDcgKzIzMjYsNyBAQCBwZ19n ZXRfY29uc3RyYWludGRlZl93b3JrZXIoT2lkIGNvbnN0cmFpbnRJZCwgYm9vbCBmdWxsQ29t bWFuZCwKIAkJCQlpZiAoIWlzbnVsbCkKIAkJCQl7CiAJCQkJCWFwcGVuZFN0cmluZ0luZm9T dHJpbmcoJmJ1ZiwgIiAoIik7Ci0JCQkJCWRlY29tcGlsZV9jb2x1bW5faW5kZXhfYXJyYXko dmFsLCBjb25Gb3JtLT5jb25yZWxpZCwgJmJ1Zik7CisJCQkJCWRlY29tcGlsZV9jb2x1bW5f aW5kZXhfYXJyYXkodmFsLCBjb25Gb3JtLT5jb25yZWxpZCwgSW52YWxpZE9pZCwgZmFsc2Us IEludmFsaWRPaWQsICZidWYpOwogCQkJCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcigmYnVmLCAn KScpOwogCQkJCX0KIApAQCAtMjMzOSw2ICsyMzM5LDcgQEAgcGdfZ2V0X2NvbnN0cmFpbnRk ZWZfd29ya2VyKE9pZCBjb25zdHJhaW50SWQsIGJvb2wgZnVsbENvbW1hbmQsCiAJCQkJT2lk CQkJaW5kZXhJZDsKIAkJCQlpbnQJCQlrZXlhdHRzOwogCQkJCUhlYXBUdXBsZQlpbmR0dXA7 CisJCQkJYm9vbAkJaXNudWxsOwogCiAJCQkJLyogU3RhcnQgb2ZmIHRoZSBjb25zdHJhaW50 IGRlZmluaXRpb24gKi8KIAkJCQlpZiAoY29uRm9ybS0+Y29udHlwZSA9PSBDT05TVFJBSU5U X1BSSU1BUlkpCkBAIC0yMzYxLDcgKzIzNjIsMTQgQEAgcGdfZ2V0X2NvbnN0cmFpbnRkZWZf d29ya2VyKE9pZCBjb25zdHJhaW50SWQsIGJvb2wgZnVsbENvbW1hbmQsCiAJCQkJdmFsID0g U3lzQ2FjaGVHZXRBdHRyTm90TnVsbChDT05TVFJPSUQsIHR1cCwKIAkJCQkJCQkJCQkJIEFu dW1fcGdfY29uc3RyYWludF9jb25rZXkpOwogCi0JCQkJa2V5YXR0cyA9IGRlY29tcGlsZV9j b2x1bW5faW5kZXhfYXJyYXkodmFsLCBjb25Gb3JtLT5jb25yZWxpZCwgJmJ1Zik7CisJCQkJ LyoKKwkJCQkgKiBJZiBpdCBoYXMgZXhjbHVzaW9uLXN0eWxlIG9wZXJhdG9yIE9JRHMKKwkJ CQkgKiB0aGVuIGl0IHVzZXMgV0lUSE9VVCBPVkVSTEFQUy4KKwkJCQkgKi8KKwkJCQlpbmRl eElkID0gY29uRm9ybS0+Y29uaW5kaWQ7CisJCQkJU3lzQ2FjaGVHZXRBdHRyKENPTlNUUk9J RCwgdHVwLAorCQkJCQkJICBBbnVtX3BnX2NvbnN0cmFpbnRfY29uZXhjbG9wLCAmaXNudWxs KTsKKwkJCQlrZXlhdHRzID0gZGVjb21waWxlX2NvbHVtbl9pbmRleF9hcnJheSh2YWwsIGNv bkZvcm0tPmNvbnJlbGlkLCBpbmRleElkLCAhaXNudWxsLCBJbnZhbGlkT2lkLCAmYnVmKTsK IAogCQkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKCZidWYsICcpJyk7CiAKQEAgLTI1NDIsOCAr MjU1MCw4IEBAIHBnX2dldF9jb25zdHJhaW50ZGVmX3dvcmtlcihPaWQgY29uc3RyYWludElk LCBib29sIGZ1bGxDb21tYW5kLAogICogb2Yga2V5cy4KICAqLwogc3RhdGljIGludAotZGVj b21waWxlX2NvbHVtbl9pbmRleF9hcnJheShEYXR1bSBjb2x1bW5faW5kZXhfYXJyYXksIE9p ZCByZWxJZCwKLQkJCQkJCQkgU3RyaW5nSW5mbyBidWYpCitkZWNvbXBpbGVfY29sdW1uX2lu ZGV4X2FycmF5KERhdHVtIGNvbHVtbl9pbmRleF9hcnJheSwgT2lkIHJlbElkLCBPaWQgaW5k ZXhJZCwKKwkJCQkJCQkgYm9vbCB3aXRob3V0T3ZlcmxhcHMsIE9pZCBwZXJpb2RpZCwgU3Ry aW5nSW5mbyBidWYpCiB7CiAJRGF0dW0JICAgKmtleXM7CiAJaW50CQkJbktleXM7CkBAIC0y NTU2LDExICsyNTY0LDQxIEBAIGRlY29tcGlsZV9jb2x1bW5faW5kZXhfYXJyYXkoRGF0dW0g Y29sdW1uX2luZGV4X2FycmF5LCBPaWQgcmVsSWQsCiAJZm9yIChqID0gMDsgaiA8IG5LZXlz OyBqKyspCiAJewogCQljaGFyCSAgICpjb2xOYW1lOworCQlpbnQJCQljb2xpZCA9IERhdHVt R2V0SW50MTYoa2V5c1tqXSk7CiAKLQkJY29sTmFtZSA9IGdldF9hdHRuYW1lKHJlbElkLCBE YXR1bUdldEludDE2KGtleXNbal0pLCBmYWxzZSk7CisJCS8qIFRoZSBrZXkgbWlnaHQgY29u dGFpbiBhIFBFUklPRCBpbnN0ZWFkIG9mIGFuIGF0dHJpYnV0ZSAqLworCQlpZiAoY29saWQg PT0gMCkKKwkJeworCQkJLyogRmlyc3QgdHJ5IHRoZSBnaXZlbiBwZXJpb2RpZCwgdGhlbiBm YWxsIGJhY2sgb24gdGhlIGluZGV4ICovCisJCQlpZiAocGVyaW9kaWQgPT0gSW52YWxpZE9p ZCAmJiBpbmRleElkICE9IEludmFsaWRPaWQpCisJCQl7CisJCQkJSGVhcFR1cGxlIGluZHR1 cDsKKwkJCQlib29sIGlzbnVsbDsKKwkJCQlEYXR1bSBwZXJpb2RpZERhdHVtOworCisJCQkJ aW5kdHVwID0gU2VhcmNoU3lzQ2FjaGUxKElOREVYUkVMSUQsIE9iamVjdElkR2V0RGF0dW0o aW5kZXhJZCkpOworCQkJCWlmICghSGVhcFR1cGxlSXNWYWxpZChpbmR0dXApKQorCQkJCQll bG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgaW5kZXggJXUiLCBpbmRleElk KTsKKworCQkJCXBlcmlvZGlkRGF0dW0gPSBTeXNDYWNoZUdldEF0dHIoSU5ERVhSRUxJRCwg aW5kdHVwLAorCQkJCQkJCQkJCSAgIEFudW1fcGdfaW5kZXhfaW5kcGVyaW9kLCAmaXNudWxs KTsKKwkJCQlpZiAoaXNudWxsKQorCQkJCQllbG9nKEVSUk9SLCAibWlzc2luZyBwZXJpb2Qg Zm9yIGluZGV4ICV1IiwgaW5kZXhJZCk7CisKKwkJCQlwZXJpb2RpZCA9IERhdHVtR2V0T2Jq ZWN0SWQocGVyaW9kaWREYXR1bSk7CisJCQkJUmVsZWFzZVN5c0NhY2hlKGluZHR1cCk7CisJ CQl9CisJCQljb2xOYW1lID0gZ2V0X3BlcmlvZG5hbWUocGVyaW9kaWQsIGZhbHNlKTsKKwkJ fQorCQllbHNlCisJCXsKKwkJCWNvbE5hbWUgPSBnZXRfYXR0bmFtZShyZWxJZCwgY29saWQs IGZhbHNlKTsKKwkJfQogCiAJCWlmIChqID09IDApCiAJCQlhcHBlbmRTdHJpbmdJbmZvU3Ry aW5nKGJ1ZiwgcXVvdGVfaWRlbnRpZmllcihjb2xOYW1lKSk7CisJCWVsc2UgaWYgKHdpdGhv dXRPdmVybGFwcyAmJiBqID09IG5LZXlzIC0gMSkKKwkJCWFwcGVuZFN0cmluZ0luZm8oYnVm LCAiLCAlcyBXSVRIT1VUIE9WRVJMQVBTIiwgcXVvdGVfaWRlbnRpZmllcihjb2xOYW1lKSk7 CiAJCWVsc2UKIAkJCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiLCAlcyIsIHF1b3RlX2lkZW50 aWZpZXIoY29sTmFtZSkpOwogCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2Nh Y2hlL2xzeXNjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMK aW5kZXggMGU5ZGRiYzJkMS4uNGEzYWQ0Y2VmMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv dXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUv bHN5c2NhY2hlLmMKQEAgLTIyMDksNiArMjIwOSwzMiBAQCBnZXRfdHlwaXNkZWZpbmVkKE9p ZCB0eXBpZCkKIAkJcmV0dXJuIGZhbHNlOwogfQogCisvKgorICogZ2V0X3R5cG5hbWUKKyAq CisgKgkJUmV0dXJucyB0aGUgbmFtZSBvZiBhIGdpdmVuIHR5cGUKKyAqCisgKiBSZXR1cm5z IGEgcGFsbG9jJ2QgY29weSBvZiB0aGUgc3RyaW5nLCBvciBOVUxMIGlmIG5vIHN1Y2ggdHlw ZS4KKyAqLworY2hhciAqCitnZXRfdHlwbmFtZShPaWQgdHlwaWQpCit7CisJSGVhcFR1cGxl CXRwOworCisJdHAgPSBTZWFyY2hTeXNDYWNoZTEoVFlQRU9JRCwgT2JqZWN0SWRHZXREYXR1 bSh0eXBpZCkpOworCWlmIChIZWFwVHVwbGVJc1ZhbGlkKHRwKSkKKwl7CisJCUZvcm1fcGdf dHlwZSB0eXB0dXAgPSAoRm9ybV9wZ190eXBlKSBHRVRTVFJVQ1QodHApOworCQljaGFyCSAg ICpyZXN1bHQ7CisKKwkJcmVzdWx0ID0gcHN0cmR1cChOYW1lU3RyKHR5cHR1cC0+dHlwbmFt ZSkpOworCQlSZWxlYXNlU3lzQ2FjaGUodHApOworCQlyZXR1cm4gcmVzdWx0OworCX0KKwll bHNlCisJCXJldHVybiBOVUxMOworfQorCiAvKgogICogZ2V0X3R5cGxlbgogICoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMgYi9zcmMvYmFja2Vu ZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jCmluZGV4IDQwMTQwZGU5NTguLmVhMjVjMTZhNDEg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMKKysrIGIv c3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYwpAQCAtNDc5MiwxMSArNDc5Miwx NyBAQCBSZWxhdGlvbkdldEluZGV4TGlzdChSZWxhdGlvbiByZWxhdGlvbikKIAkJICogaW50 ZXJlc3RpbmcgZm9yIGVpdGhlciBvaWQgaW5kZXhlcyBvciByZXBsaWNhdGlvbiBpZGVudGl0 eSBpbmRleGVzLAogCQkgKiBzbyBkb24ndCBjaGVjayB0aGVtLgogCQkgKi8KLQkJaWYgKCFp bmRleC0+aW5kaXN2YWxpZCB8fCAhaW5kZXgtPmluZGlzdW5pcXVlIHx8Ci0JCQkhaW5kZXgt PmluZGltbWVkaWF0ZSB8fAorCQlpZiAoIWluZGV4LT5pbmRpc3ZhbGlkIHx8ICFpbmRleC0+ aW5kaW1tZWRpYXRlIHx8CiAJCQkhaGVhcF9hdHRpc251bGwoaHR1cCwgQW51bV9wZ19pbmRl eF9pbmRwcmVkLCBOVUxMKSkKIAkJCWNvbnRpbnVlOwogCisJCS8qCisJCSAqIE5vbi11bmlx dWUgaW5kZXhlcyBhcmVuJ3QgaW50ZXJlc3RpbmcgZWl0aGVyLAorCQkgKiBleGNlcHQgd2hl biB0aGV5IGFyZSB0ZW1wb3JhbCBwcmltYXJ5IGtleXMuCisJCSAqLworCQlpZiAoIWluZGV4 LT5pbmRpc3VuaXF1ZSAmJiAhaW5kZXgtPmluZGlzcHJpbWFyeSkKKwkJCWNvbnRpbnVlOwor CiAJCS8qIHJlbWVtYmVyIHByaW1hcnkga2V5IGluZGV4IGlmIGFueSAqLwogCQlpZiAoaW5k ZXgtPmluZGlzcHJpbWFyeSkKIAkJCXBrZXlJbmRleCA9IGluZGV4LT5pbmRleHJlbGlkOwpA QCAtNTUwNyw4ICs1NTEzLDkgQEAgUmVsYXRpb25HZXRJZGVudGl0eUtleUJpdG1hcChSZWxh dGlvbiByZWxhdGlvbikKICAqIFJlbGF0aW9uR2V0RXhjbHVzaW9uSW5mbyAtLSBnZXQgaW5m byBhYm91dCBpbmRleCdzIGV4Y2x1c2lvbiBjb25zdHJhaW50CiAgKgogICogVGhpcyBzaG91 bGQgYmUgY2FsbGVkIG9ubHkgZm9yIGFuIGluZGV4IHRoYXQgaXMga25vd24gdG8gaGF2ZSBh bgotICogYXNzb2NpYXRlZCBleGNsdXNpb24gY29uc3RyYWludC4gIEl0IHJldHVybnMgYXJy YXlzIChwYWxsb2MnZCBpbiBjYWxsZXIncwotICogY29udGV4dCkgb2YgdGhlIGV4Y2x1c2lv biBvcGVyYXRvciBPSURzLCB0aGVpciB1bmRlcmx5aW5nIGZ1bmN0aW9ucycKKyAqIGFzc29j aWF0ZWQgZXhjbHVzaW9uIGNvbnN0cmFpbnQgb3IgdGVtcG9yYWwgcHJpbWFyeSBrZXkvdW5p cXVlCisgKiBjb25zdHJhaW50LiBJdCByZXR1cm5zIGFycmF5cyAocGFsbG9jJ2QgaW4gY2Fs bGVyJ3MgY29udGV4dCkKKyAqIG9mIHRoZSBleGNsdXNpb24gb3BlcmF0b3IgT0lEcywgdGhl aXIgdW5kZXJseWluZyBmdW5jdGlvbnMnCiAgKiBPSURzLCBhbmQgdGhlaXIgc3RyYXRlZ3kg bnVtYmVycyBpbiB0aGUgaW5kZXgncyBvcGNsYXNzZXMuICBXZSBjYWNoZQogICogYWxsIHRo aXMgaW5mb3JtYXRpb24gc2luY2UgaXQgcmVxdWlyZXMgYSBmYWlyIGFtb3VudCBvZiB3b3Jr IHRvIGdldC4KICAqLwpAQCAtNTU3NCw3ICs1NTgxLDEwIEBAIFJlbGF0aW9uR2V0RXhjbHVz aW9uSW5mbyhSZWxhdGlvbiBpbmRleFJlbGF0aW9uLAogCQlpbnQJCQluZWxlbTsKIAogCQkv KiBXZSB3YW50IHRoZSBleGNsdXNpb24gY29uc3RyYWludCBvd25pbmcgdGhlIGluZGV4ICov Ci0JCWlmIChjb25mb3JtLT5jb250eXBlICE9IENPTlNUUkFJTlRfRVhDTFVTSU9OIHx8CisJ CWlmICgoY29uZm9ybS0+Y29udHlwZSAhPSBDT05TVFJBSU5UX0VYQ0xVU0lPTiAmJgorCQkJ CQkhKGNvbmZvcm0tPmNvbnRlbXBvcmFsICYmICgKKwkJCQkJCQljb25mb3JtLT5jb250eXBl ID09IENPTlNUUkFJTlRfUFJJTUFSWQorCQkJCQkJCXx8IGNvbmZvcm0tPmNvbnR5cGUgPT0g Q09OU1RSQUlOVF9VTklRVUUpKSkgfHwKIAkJCWNvbmZvcm0tPmNvbmluZGlkICE9IFJlbGF0 aW9uR2V0UmVsaWQoaW5kZXhSZWxhdGlvbikpCiAJCQljb250aW51ZTsKIApkaWZmIC0tZ2l0 IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1w LmMKaW5kZXggNTA4NDFmNzU1Yi4uYzJmZTEwOTRkZSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9w Z19kdW1wL3BnX2R1bXAuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCkBAIC02 OTkwLDcgKzY5OTAsOSBAQCBnZXRJbmRleGVzKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5mbyB0 YmxpbmZvW10sIGludCBudW1UYWJsZXMpCiAJCQkJaV90YWJsZXNwYWNlLAogCQkJCWlfaW5k cmVsb3B0aW9ucywKIAkJCQlpX2luZHN0YXRjb2xzLAotCQkJCWlfaW5kc3RhdHZhbHM7CisJ CQkJaV9pbmRzdGF0dmFscywKKwkJCQlpX3dpdGhvdXRvdmVybGFwcywKKwkJCQlpX2luZHBl cmlvZDsKIAogCS8qCiAJICogV2Ugd2FudCB0byBwZXJmb3JtIGp1c3Qgb25lIHF1ZXJ5IGFn YWluc3QgcGdfaW5kZXguICBIb3dldmVyLCB3ZQpAQCAtNzA1NCwyMSArNzA1NiwzMCBAQCBn ZXRJbmRleGVzKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5mbyB0YmxpbmZvW10sIGludCBudW1U YWJsZXMpCiAJCQkJCQkJICIoU0VMRUNUIHBnX2NhdGFsb2cuYXJyYXlfYWdnKGF0dHN0YXR0 YXJnZXQgT1JERVIgQlkgYXR0bnVtKSAiCiAJCQkJCQkJICIgIEZST00gcGdfY2F0YWxvZy5w Z19hdHRyaWJ1dGUgIgogCQkJCQkJCSAiICBXSEVSRSBhdHRyZWxpZCA9IGkuaW5kZXhyZWxp ZCBBTkQgIgotCQkJCQkJCSAiICAgIGF0dHN0YXR0YXJnZXQgPj0gMCkgQVMgaW5kc3RhdHZh bHMsICIpOworCQkJCQkJCSAiICAgIGF0dHN0YXR0YXJnZXQgPj0gMCkgQVMgaW5kc3RhdHZh bHMsICIKKwkJCQkJCQkgImMuY29uZXhjbG9wIElTIE5PVCBOVUxMIEFTIHdpdGhvdXRvdmVy bGFwcywgIik7CiAJZWxzZQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKIAkJCQkJ CQkgIjAgQVMgcGFyZW50aWR4LCAiCiAJCQkJCQkJICJpLmluZG5hdHRzIEFTIGluZG5rZXlh dHRzLCAiCiAJCQkJCQkJICJpLmluZG5hdHRzIEFTIGluZG5hdHRzLCAiCiAJCQkJCQkJICIn JyBBUyBpbmRzdGF0Y29scywgIgotCQkJCQkJCSAiJycgQVMgaW5kc3RhdHZhbHMsICIpOwor CQkJCQkJCSAiJycgQVMgaW5kc3RhdHZhbHMsICIKKwkJCQkJCQkgIm51bGwgQVMgd2l0aG91 dG92ZXJsYXBzLCAiKTsKIAogCWlmIChmb3V0LT5yZW1vdGVWZXJzaW9uID49IDE1MDAwMCkK IAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksCi0JCQkJCQkJICJpLmluZG51bGxzbm90 ZGlzdGluY3QgIik7CisJCQkJCQkJICJpLmluZG51bGxzbm90ZGlzdGluY3QsICIpOwogCWVs c2UKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksCi0JCQkJCQkJICJmYWxzZSBBUyBp bmRudWxsc25vdGRpc3RpbmN0ICIpOworCQkJCQkJCSAiZmFsc2UgQVMgaW5kbnVsbHNub3Rk aXN0aW5jdCwgIik7CisKKwlpZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+PSAxNjAwMDApCisJ CWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LAorCQkJCQkJCSAicC5wZXJuYW1lIEFTIGlu ZHBlcmlvZCAiKTsKKwllbHNlCisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LAorCQkJ CQkJCSAibnVsbCBBUyBpbmRwZXJpb2QgIik7CiAKIAkvKgogCSAqIFRoZSBwb2ludCBvZiB0 aGUgbWVzc3ktbG9va2luZyBvdXRlciBqb2luIGlzIHRvIGZpbmQgYSBjb25zdHJhaW50IHRo YXQKQEAgLTcwNzksNyArNzA5MCwyNyBAQCBnZXRJbmRleGVzKEFyY2hpdmUgKmZvdXQsIFRh YmxlSW5mbyB0YmxpbmZvW10sIGludCBudW1UYWJsZXMpCiAJICogTm90ZTogdGhlIGNoZWNr IG9uIGNvbnJlbGlkIGlzIHJlZHVuZGFudCwgYnV0IHVzZWZ1bCBiZWNhdXNlIHRoYXQKIAkg KiBjb2x1bW4gaXMgaW5kZXhlZCB3aGlsZSBjb25pbmRpZCBpcyBub3QuCiAJICovCi0JaWYg KGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gMTEwMDAwKQorCWlmIChmb3V0LT5yZW1vdGVWZXJz aW9uID49IDE2MDAwMCkKKwl7CisJCWFwcGVuZFBRRXhwQnVmZmVyKHF1ZXJ5LAorCQkJCQkJ ICAiRlJPTSB1bm5lc3QoJyVzJzo6cGdfY2F0YWxvZy5vaWRbXSkgQVMgc3JjKHRibG9pZClc biIKKwkJCQkJCSAgIkpPSU4gcGdfY2F0YWxvZy5wZ19pbmRleCBpIE9OIChzcmMudGJsb2lk ID0gaS5pbmRyZWxpZCkgIgorCQkJCQkJICAiSk9JTiBwZ19jYXRhbG9nLnBnX2NsYXNzIHQg T04gKHQub2lkID0gaS5pbmRleHJlbGlkKSAiCisJCQkJCQkgICJKT0lOIHBnX2NhdGFsb2cu cGdfY2xhc3MgdDIgT04gKHQyLm9pZCA9IGkuaW5kcmVsaWQpICIKKwkJCQkJCSAgIkxFRlQg Sk9JTiBwZ19jYXRhbG9nLnBnX2NvbnN0cmFpbnQgYyAiCisJCQkJCQkgICJPTiAoaS5pbmRy ZWxpZCA9IGMuY29ucmVsaWQgQU5EICIKKwkJCQkJCSAgImkuaW5kZXhyZWxpZCA9IGMuY29u aW5kaWQgQU5EICIKKwkJCQkJCSAgImMuY29udHlwZSBJTiAoJ3AnLCd1JywneCcpKSAiCisJ CQkJCQkgICJMRUZUIEpPSU4gcGdfY2F0YWxvZy5wZ19wZXJpb2QgcCAiCisJCQkJCQkgICJP TiAocC5vaWQgPSBpLmluZHBlcmlvZCkgIgorCQkJCQkJICAiTEVGVCBKT0lOIHBnX2NhdGFs b2cucGdfaW5oZXJpdHMgaW5oICIKKwkJCQkJCSAgIk9OIChpbmguaW5ocmVsaWQgPSBpbmRl eHJlbGlkKSAiCisJCQkJCQkgICJXSEVSRSAoaS5pbmRpc3ZhbGlkIE9SIHQyLnJlbGtpbmQg PSAncCcpICIKKwkJCQkJCSAgIkFORCBpLmluZGlzcmVhZHkgIgorCQkJCQkJICAiT1JERVIg QlkgaS5pbmRyZWxpZCwgaW5kZXhuYW1lIiwKKwkJCQkJCSAgdGJsb2lkcy0+ZGF0YSk7CisJ fQorCWVsc2UgaWYgKGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gMTEwMDAwKQogCXsKIAkJYXBw ZW5kUFFFeHBCdWZmZXIocXVlcnksCiAJCQkJCQkgICJGUk9NIHVubmVzdCgnJXMnOjpwZ19j YXRhbG9nLm9pZFtdKSBBUyBzcmModGJsb2lkKVxuIgpAQCAtNzE0Myw2ICs3MTc0LDggQEAg Z2V0SW5kZXhlcyhBcmNoaXZlICpmb3V0LCBUYWJsZUluZm8gdGJsaW5mb1tdLCBpbnQgbnVt VGFibGVzKQogCWlfaW5kcmVsb3B0aW9ucyA9IFBRZm51bWJlcihyZXMsICJpbmRyZWxvcHRp b25zIik7CiAJaV9pbmRzdGF0Y29scyA9IFBRZm51bWJlcihyZXMsICJpbmRzdGF0Y29scyIp OwogCWlfaW5kc3RhdHZhbHMgPSBQUWZudW1iZXIocmVzLCAiaW5kc3RhdHZhbHMiKTsKKwlp X3dpdGhvdXRvdmVybGFwcyA9IFBRZm51bWJlcihyZXMsICJ3aXRob3V0b3ZlcmxhcHMiKTsK KwlpX2luZHBlcmlvZCA9IFBRZm51bWJlcihyZXMsICJpbmRwZXJpb2QiKTsKIAogCWluZHhp bmZvID0gKEluZHhJbmZvICopIHBnX21hbGxvYyhudHVwcyAqIHNpemVvZihJbmR4SW5mbykp OwogCkBAIC03MjQ1LDYgKzcyNzgsOCBAQCBnZXRJbmRleGVzKEFyY2hpdmUgKmZvdXQsIFRh YmxlSW5mbyB0YmxpbmZvW10sIGludCBudW1UYWJsZXMpCiAJCQkJY29uc3RyaW5mby0+Y29u ZGVmZXJyZWQgPSAqKFBRZ2V0dmFsdWUocmVzLCBqLCBpX2NvbmRlZmVycmVkKSkgPT0gJ3Qn OwogCQkJCWNvbnN0cmluZm8tPmNvbmlzbG9jYWwgPSB0cnVlOwogCQkJCWNvbnN0cmluZm8t PnNlcGFyYXRlID0gdHJ1ZTsKKwkJCQljb25zdHJpbmZvLT53aXRob3V0b3ZlcmxhcHMgPSAq KFBRZ2V0dmFsdWUocmVzLCBqLCBpX3dpdGhvdXRvdmVybGFwcykpID09ICd0JzsKKwkJCQlj b25zdHJpbmZvLT5pbmRwZXJpb2QgPSBwZ19zdHJkdXAoUFFnZXR2YWx1ZShyZXMsIGosIGlf aW5kcGVyaW9kKSk7CiAKIAkJCQlpbmR4aW5mb1tqXS5pbmRleGNvbnN0cmFpbnQgPSBjb25z dHJpbmZvLT5kb2JqLmR1bXBJZDsKIAkJCX0KQEAgLTE2ODAxLDEyICsxNjgzNiwzNSBAQCBk dW1wQ29uc3RyYWludChBcmNoaXZlICpmb3V0LCBjb25zdCBDb25zdHJhaW50SW5mbyAqY29u aW5mbykKIAkJCQljb25zdCBjaGFyICphdHRuYW1lOwogCiAJCQkJaWYgKGluZGtleSA9PSBJ bnZhbGlkQXR0ck51bWJlcikKLQkJCQkJYnJlYWs7CisJCQkJeworCQkJCQlpZiAoY29uaW5m by0+d2l0aG91dG92ZXJsYXBzKQorCQkJCQl7CisJCQkJCQkvKiBXZSBoYXZlIGEgUEVSSU9E LCBzbyB0aGVyZSBpcyBubyBhdHRuYW1lLiAqLworCQkJCQkJYXBwZW5kUFFFeHBCdWZmZXIo cSwgIiwgJXMgV0lUSE9VVCBPVkVSTEFQUyIsCisJCQkJCQkJCQkJICBmbXRJZChjb25pbmZv LT5pbmRwZXJpb2QpKTsKKwkJCQkJCWNvbnRpbnVlOworCQkJCQl9CisJCQkJCWVsc2UKKwkJ CQkJCWJyZWFrOworCQkJCX0KIAkJCQlhdHRuYW1lID0gZ2V0QXR0ck5hbWUoaW5ka2V5LCB0 YmluZm8pOwogCi0JCQkJYXBwZW5kUFFFeHBCdWZmZXIocSwgIiVzJXMiLAotCQkJCQkJCQkg IChrID09IDApID8gIiIgOiAiLCAiLAotCQkJCQkJCQkgIGZtdElkKGF0dG5hbWUpKTsKKwkJ CQlpZiAoayA9PSAwKQorCQkJCXsKKwkJCQkJYXBwZW5kUFFFeHBCdWZmZXIocSwgIiVzIiwK KwkJCQkJCQkJCQlmbXRJZChhdHRuYW1lKSk7CisJCQkJfQorCQkJCWVsc2UgaWYgKGsgPT0g aW5keGluZm8tPmluZG5rZXlhdHRycyAtIDEgJiYKKwkJCQkJCWNvbmluZm8tPndpdGhvdXRv dmVybGFwcykKKwkJCQl7CisJCQkJCWFwcGVuZFBRRXhwQnVmZmVyKHEsICIsICVzIFdJVEhP VVQgT1ZFUkxBUFMiLAorCQkJCQkJCQkJICBmbXRJZChhdHRuYW1lKSk7CisJCQkJfQorCQkJ CWVsc2UKKwkJCQl7CisJCQkJCWFwcGVuZFBRRXhwQnVmZmVyKHEsICIsICVzIiwKKwkJCQkJ CQkJCQlmbXRJZChhdHRuYW1lKSk7CisJCQkJfQogCQkJfQogCiAJCQlpZiAoaW5keGluZm8t PmluZG5rZXlhdHRycyA8IGluZHhpbmZvLT5pbmRuYXR0cnMpCmRpZmYgLS1naXQgYS9zcmMv YmluL3BnX2R1bXAvcGdfZHVtcC5oIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaAppbmRl eCBkZGExYmZhYzM4Li4yY2E3NGM3ODMzIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAv cGdfZHVtcC5oCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKQEAgLTQ4Nyw2ICs0 ODcsOCBAQCB0eXBlZGVmIHN0cnVjdCBfY29uc3RyYWludEluZm8KIAlib29sCQljb25kZWZl cnJlZDsJLyogdHJ1ZSBpZiBjb25zdHJhaW50IGlzIElOSVRJQUxMWSBERUZFUlJFRCAqLwog CWJvb2wJCWNvbmlzbG9jYWw7CQkvKiB0cnVlIGlmIGNvbnN0cmFpbnQgaGFzIGxvY2FsIGRl ZmluaXRpb24gKi8KIAlib29sCQlzZXBhcmF0ZTsJCS8qIHRydWUgaWYgbXVzdCBkdW1wIGFz IHNlcGFyYXRlIGl0ZW0gKi8KKwlib29sCQl3aXRob3V0b3ZlcmxhcHM7CS8qIHRydWUgaWYg dGhlIGxhc3QgZWxlbSBpcyBXSVRIT1VUIE9WRVJMQVBTICovCisJY2hhcgkgICAqaW5kcGVy aW9kOwkJLyogdGhlIFBFUklPRCB1c2VkIGluIFdJVEhPVVQgT1ZFUkxBUFMgKi8KIH0gQ29u c3RyYWludEluZm87CiAKIHR5cGVkZWYgc3RydWN0IF9wZXJpb2RJbmZvCmRpZmYgLS1naXQg YS9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbCBiL3NyYy9iaW4vcGdfZHVtcC90 LzAwMl9wZ19kdW1wLnBsCmluZGV4IDkzZTI0ZDUxNDUuLjM2YTViYjI3NTIgMTAwNjQ0Ci0t LSBhL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsCisrKyBiL3NyYy9iaW4vcGdf ZHVtcC90LzAwMl9wZ19kdW1wLnBsCkBAIC0xMDIwLDYgKzEwMjAsMTAyIEBAIG15ICV0ZXN0 cyA9ICgKIAkJfSwKIAl9LAogCisJJ0FMVEVSIFRBQkxFIE9OTFkgdGVzdF90YWJsZV90cGsg QUREIENPTlNUUkFJTlQgLi4uIFBSSU1BUlkgS0VZICguLi4sIC4uLiBXSVRIT1VUIE9WRVJM QVBTKScgPT4geworCQljcmVhdGVfc3FsICA9PiAnQ1JFQVRFIFRBQkxFIGR1bXBfdGVzdC50 ZXN0X3RhYmxlX3RwayAoCisJCQkJCQkJY29sMSBpbnQ0cmFuZ2UsCisJCQkJCQkJY29sMiB0 c3R6cmFuZ2UsCisJCQkJCQkJQ09OU1RSQUlOVCB0ZXN0X3RhYmxlX3Rwa19wa2V5IFBSSU1B UlkgS0VZCisJCQkJCQkJCShjb2wxLCBjb2wyIFdJVEhPVVQgT1ZFUkxBUFMpKTsnLAorCQly ZWdleHAgPT4gcXIvXgorCQkJXFFBTFRFUiBUQUJMRSBPTkxZIGR1bXBfdGVzdC50ZXN0X3Rh YmxlX3Rwa1xFIFxuXlxzKworCQkJXFFBREQgQ09OU1RSQUlOVCB0ZXN0X3RhYmxlX3Rwa19w a2V5IFBSSU1BUlkgS0VZIChjb2wxLCBjb2wyIFdJVEhPVVQgT1ZFUkxBUFMpO1xFCisJCQkv eG0sCisJCWxpa2UgPT4geworCQkJJWZ1bGxfcnVucywKKwkJCSVkdW1wX3Rlc3Rfc2NoZW1h X3J1bnMsCisJCQlzZWN0aW9uX3Bvc3RfZGF0YSAgPT4gMSwKKwkJCWV4Y2x1ZGVfdGVzdF90 YWJsZSA9PiAxLAorCQl9LAorCQl1bmxpa2UgPT4geworCQkJb25seV9kdW1wX3Rlc3RfdGFi bGUgICAgID0+IDEsCisJCQlleGNsdWRlX2R1bXBfdGVzdF9zY2hlbWEgPT4gMSwKKwkJCW9u bHlfZHVtcF9tZWFzdXJlbWVudCAgICA9PiAxLAorCQl9LAorCX0sCisKKwknQUxURVIgVEFC TEUgT05MWSB0ZXN0X3RhYmxlX3RwZXJwayBBREQgQ09OU1RSQUlOVCAuLi4gUFJJTUFSWSBL RVkgKC4uLiwgLi4uIFdJVEhPVVQgT1ZFUkxBUFMpJyA9PiB7CisJCWNyZWF0ZV9zcWwgID0+ ICdDUkVBVEUgVEFCTEUgZHVtcF90ZXN0LnRlc3RfdGFibGVfdHBlcnBrICgKKwkJCQkJCQlj b2wxIGludDRyYW5nZSwKKwkJCQkJCQlkcyBkYXRlLAorCQkJCQkJCWRlIGRhdGUsCisJCQkJ CQkJUEVSSU9EIEZPUiBwIChkcywgZGUpLAorCQkJCQkJCUNPTlNUUkFJTlQgdGVzdF90YWJs ZV90cGVycGtfcGtleSBQUklNQVJZIEtFWQorCQkJCQkJCQkoY29sMSwgcCBXSVRIT1VUIE9W RVJMQVBTKSk7JywKKwkJcmVnZXhwID0+IHFyL14KKwkJCVxRQUxURVIgVEFCTEUgT05MWSBk dW1wX3Rlc3QudGVzdF90YWJsZV90cGVycGtcRSBcbl5ccysKKwkJCVxRQUREIENPTlNUUkFJ TlQgdGVzdF90YWJsZV90cGVycGtfcGtleSBQUklNQVJZIEtFWSAoY29sMSwgcCBXSVRIT1VU IE9WRVJMQVBTKTtcRQorCQkJL3htLAorCQlsaWtlID0+IHsKKwkJCSVmdWxsX3J1bnMsCisJ CQklZHVtcF90ZXN0X3NjaGVtYV9ydW5zLAorCQkJc2VjdGlvbl9wb3N0X2RhdGEgID0+IDEs CisJCQlleGNsdWRlX3Rlc3RfdGFibGUgPT4gMSwKKwkJfSwKKwkJdW5saWtlID0+IHsKKwkJ CW9ubHlfZHVtcF90ZXN0X3RhYmxlICAgICA9PiAxLAorCQkJZXhjbHVkZV9kdW1wX3Rlc3Rf c2NoZW1hID0+IDEsCisJCQlvbmx5X2R1bXBfbWVhc3VyZW1lbnQgICAgPT4gMSwKKwkJfSwK Kwl9LAorCisJJ0FMVEVSIFRBQkxFIE9OTFkgdGVzdF90YWJsZV90dXEgQUREIENPTlNUUkFJ TlQgLi4uIFVOSVFVRSAoLi4uLCAuLi4gV0lUSE9VVCBPVkVSTEFQUyknID0+IHsKKwkJY3Jl YXRlX3NxbCAgPT4gJ0NSRUFURSBUQUJMRSBkdW1wX3Rlc3QudGVzdF90YWJsZV90dXEgKAor CQkJCQkJCWNvbDEgaW50NHJhbmdlLAorCQkJCQkJCWNvbDIgdHN0enJhbmdlLAorCQkJCQkJ CUNPTlNUUkFJTlQgdGVzdF90YWJsZV90dXFfdXEgVU5JUVVFCisJCQkJCQkJCShjb2wxLCBj b2wyIFdJVEhPVVQgT1ZFUkxBUFMpKTsnLAorCQlyZWdleHAgPT4gcXIvXgorCQkJXFFBTFRF UiBUQUJMRSBPTkxZIGR1bXBfdGVzdC50ZXN0X3RhYmxlX3R1cVxFIFxuXlxzKworCQkJXFFB REQgQ09OU1RSQUlOVCB0ZXN0X3RhYmxlX3R1cV91cSBVTklRVUUgKGNvbDEsIGNvbDIgV0lU SE9VVCBPVkVSTEFQUyk7XEUKKwkJCS94bSwKKwkJbGlrZSA9PiB7CisJCQklZnVsbF9ydW5z LAorCQkJJWR1bXBfdGVzdF9zY2hlbWFfcnVucywKKwkJCXNlY3Rpb25fcG9zdF9kYXRhICA9 PiAxLAorCQkJZXhjbHVkZV90ZXN0X3RhYmxlID0+IDEsCisJCX0sCisJCXVubGlrZSA9PiB7 CisJCQlvbmx5X2R1bXBfdGVzdF90YWJsZSAgICAgPT4gMSwKKwkJCWV4Y2x1ZGVfZHVtcF90 ZXN0X3NjaGVtYSA9PiAxLAorCQkJb25seV9kdW1wX21lYXN1cmVtZW50ICAgID0+IDEsCisJ CX0sCisJfSwKKworCSdBTFRFUiBUQUJMRSBPTkxZIHRlc3RfdGFibGVfdHBlcnVxIEFERCBD T05TVFJBSU5UIC4uLiBVTklRVUUgKC4uLiwgLi4uIFdJVEhPVVQgT1ZFUkxBUFMpJyA9PiB7 CisJCWNyZWF0ZV9zcWwgID0+ICdDUkVBVEUgVEFCTEUgZHVtcF90ZXN0LnRlc3RfdGFibGVf dHBlcnVxICgKKwkJCQkJCQljb2wxIGludDRyYW5nZSwKKwkJCQkJCQlkcyBkYXRlLAorCQkJ CQkJCWRlIGRhdGUsCisJCQkJCQkJUEVSSU9EIEZPUiBwIChkcywgZGUpLAorCQkJCQkJCUNP TlNUUkFJTlQgdGVzdF90YWJsZV90cGVydXFfdXEgVU5JUVVFCisJCQkJCQkJCShjb2wxLCBw IFdJVEhPVVQgT1ZFUkxBUFMpKTsnLAorCQlyZWdleHAgPT4gcXIvXgorCQkJXFFBTFRFUiBU QUJMRSBPTkxZIGR1bXBfdGVzdC50ZXN0X3RhYmxlX3RwZXJ1cVxFIFxuXlxzKworCQkJXFFB REQgQ09OU1RSQUlOVCB0ZXN0X3RhYmxlX3RwZXJ1cV91cSBVTklRVUUgKGNvbDEsIHAgV0lU SE9VVCBPVkVSTEFQUyk7XEUKKwkJCS94bSwKKwkJbGlrZSA9PiB7CisJCQklZnVsbF9ydW5z LAorCQkJJWR1bXBfdGVzdF9zY2hlbWFfcnVucywKKwkJCXNlY3Rpb25fcG9zdF9kYXRhICA9 PiAxLAorCQkJZXhjbHVkZV90ZXN0X3RhYmxlID0+IDEsCisJCX0sCisJCXVubGlrZSA9PiB7 CisJCQlvbmx5X2R1bXBfdGVzdF90YWJsZSAgICAgPT4gMSwKKwkJCWV4Y2x1ZGVfZHVtcF90 ZXN0X3NjaGVtYSA9PiAxLAorCQkJb25seV9kdW1wX21lYXN1cmVtZW50ICAgID0+IDEsCisJ CX0sCisJfSwKKwogCSdBTFRFUiBUQUJMRSAocGFydGl0aW9uZWQpIEFERCBDT05TVFJBSU5U IC4uLiBGT1JFSUdOIEtFWScgPT4gewogCQljcmVhdGVfb3JkZXIgPT4gNCwKIAkJY3JlYXRl X3NxbCAgID0+ICdDUkVBVEUgVEFCTEUgZHVtcF90ZXN0LnRlc3RfdGFibGVfZmsgKApkaWZm IC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMgYi9zcmMvYmluL3BzcWwvZGVzY3Jp YmUuYwppbmRleCBjYjFkYjVjODRmLi5jNzZlYzgzN2MzIDEwMDY0NAotLS0gYS9zcmMvYmlu L3BzcWwvZGVzY3JpYmUuYworKysgYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYwpAQCAtMjQx OCw2ICsyNDE4LDEwIEBAIGRlc2NyaWJlT25lVGFibGVEZXRhaWxzKGNvbnN0IGNoYXIgKnNj aGVtYW5hbWUsCiAJCQllbHNlCiAJCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmJ1ZiwgIiwg ZmFsc2UgQVMgaW5kaXNyZXBsaWRlbnQiKTsKIAkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZi dWYsICIsIGMyLnJlbHRhYmxlc3BhY2UiKTsKKwkJCWlmIChwc2V0LnN2ZXJzaW9uID49IDE2 MDAwMCkKKwkJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLCAiLCBjb24uY29udGVtcG9y YWwiKTsKKwkJCWVsc2UKKwkJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLCAiLCBmYWxz ZSBBUyBjb250ZW1wb3JhbCIpOwogCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKIAkJCQkJ CQkgICJcbkZST00gcGdfY2F0YWxvZy5wZ19jbGFzcyBjLCBwZ19jYXRhbG9nLnBnX2NsYXNz IGMyLCBwZ19jYXRhbG9nLnBnX2luZGV4IGlcbiIKIAkJCQkJCQkgICIgIExFRlQgSk9JTiBw Z19jYXRhbG9nLnBnX2NvbnN0cmFpbnQgY29uIE9OIChjb25yZWxpZCA9IGkuaW5kcmVsaWQg QU5EIGNvbmluZGlkID0gaS5pbmRleHJlbGlkIEFORCBjb250eXBlIElOICgncCcsJ3UnLCd4 JykpXG4iCkBAIC0yNDM5LDggKzI0NDMsMTIgQEAgZGVzY3JpYmVPbmVUYWJsZURldGFpbHMo Y29uc3QgY2hhciAqc2NoZW1hbmFtZSwKIAkJCQkJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1Ziwg IiAgICBcIiVzXCIiLAogCQkJCQkJCQkJICBQUWdldHZhbHVlKHJlc3VsdCwgaSwgMCkpOwog Ci0JCQkJCS8qIElmIGV4Y2x1c2lvbiBjb25zdHJhaW50LCBwcmludCB0aGUgY29uc3RyYWlu dGRlZiAqLwotCQkJCQlpZiAoc3RyY21wKFBRZ2V0dmFsdWUocmVzdWx0LCBpLCA3KSwgIngi KSA9PSAwKQorCQkJCQkvKgorCQkJCQkgKiBJZiBleGNsdXNpb24gY29uc3RyYWludCBvciB0 ZW1wb3JhbCBQSy9VTklRVUUgY29uc3RyYWludCwKKwkJCQkJICogcHJpbnQgdGhlIGNvbnN0 cmFpbnRkZWYKKwkJCQkJICovCisJCQkJCWlmIChzdHJjbXAoUFFnZXR2YWx1ZShyZXN1bHQs IGksIDcpLCAieCIpID09IDAgfHwKKwkJCQkJCQlzdHJjbXAoUFFnZXR2YWx1ZShyZXN1bHQs IGksIDEyKSwgInQiKSA9PSAwKQogCQkJCQl7CiAJCQkJCQlhcHBlbmRQUUV4cEJ1ZmZlcigm YnVmLCAiICVzIiwKIAkJCQkJCQkJCQkgIFBRZ2V0dmFsdWUocmVzdWx0LCBpLCA2KSk7CmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL2luZGV4LmggYi9zcmMvaW5jbHVkZS9j YXRhbG9nL2luZGV4LmgKaW5kZXggYzg1MzJmYjk3Yy4uN2FmYmM4Y2ZjNCAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFs b2cvaW5kZXguaApAQCAtOTEsNiArOTEsNyBAQCBleHRlcm4gT2lkCWluZGV4X2NyZWF0ZShS ZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAjZGVmaW5lCUlOREVYX0NPTlNUUl9DUkVBVEVfSU5J VF9ERUZFUlJFRAkoMSA8PCAyKQogI2RlZmluZQlJTkRFWF9DT05TVFJfQ1JFQVRFX1VQREFU RV9JTkRFWAkoMSA8PCAzKQogI2RlZmluZQlJTkRFWF9DT05TVFJfQ1JFQVRFX1JFTU9WRV9P TERfREVQUwkoMSA8PCA0KQorI2RlZmluZQlJTkRFWF9DT05TVFJfQ1JFQVRFX1RFTVBPUkFM CQkoMSA8PCA1KQogCiBleHRlcm4gT2lkCWluZGV4X2NvbmN1cnJlbnRseV9jcmVhdGVfY29w eShSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCQkJCQkJCQkJICAgT2lkIG9sZEluZGV4SWQs CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NvbnN0cmFpbnQuaCBiL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfY29uc3RyYWludC5oCmluZGV4IDE2YmY1ZjU1NzYuLmRj ZThkYTUwY2EgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY29uc3RyYWlu dC5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY29uc3RyYWludC5oCkBAIC0xMDcs NiArMTA3LDE0IEBAIENBVEFMT0cocGdfY29uc3RyYWludCwyNjA2LENvbnN0cmFpbnRSZWxh dGlvbklkKQogCS8qIEhhcyBhIGxvY2FsIGRlZmluaXRpb24gYW5kIGNhbm5vdCBiZSBpbmhl cml0ZWQgKi8KIAlib29sCQljb25ub2luaGVyaXQ7CiAKKwkvKgorCSAqIEZvciBwcmltYXJ5 IGFuZCBmb3JlaWduIGtleXMsIHNpZ25pZmllcyB0aGUgbGFzdCBjb2x1bW4gaXMgYSByYW5n ZQorCSAqIGFuZCBzaG91bGQgdXNlIG92ZXJsYXBzIGluc3RlYWQgb2YgZXF1YWxzLgorCSAq LworCWJvb2wJCWNvbnRlbXBvcmFsOworCisJT2lkCQkJY29ucGVyaW9kOwkJLyogbG9jYWwg UEVSSU9EIHVzZWQgaW4gUEsvRksgY29uc3RyYWludCAqLworCiAjaWZkZWYgQ0FUQUxPR19W QVJMRU4JCQkvKiB2YXJpYWJsZS1sZW5ndGggZmllbGRzIHN0YXJ0IGhlcmUgKi8KIAogCS8q CkBAIC0xNDYsNyArMTU0LDcgQEAgQ0FUQUxPRyhwZ19jb25zdHJhaW50LDI2MDYsQ29uc3Ry YWludFJlbGF0aW9uSWQpCiAKIAkvKgogCSAqIElmIGFuIGV4Y2x1c2lvbiBjb25zdHJhaW50 LCB0aGUgT0lEcyBvZiB0aGUgZXhjbHVzaW9uIG9wZXJhdG9ycyBmb3IKLQkgKiBlYWNoIGNv bHVtbiBvZiB0aGUgY29uc3RyYWludAorCSAqIGVhY2ggY29sdW1uIG9mIHRoZSBjb25zdHJh aW50LiBBbHNvIHNldCBmb3IgdGVtcG9yYWwgcHJpbWFyeSBrZXlzLgogCSAqLwogCU9pZAkJ CWNvbmV4Y2xvcFsxXSBCS0lfTE9PS1VQKHBnX29wZXJhdG9yKTsKIApAQCAtMjM1LDYgKzI0 Myw4IEBAIGV4dGVybiBPaWQJQ3JlYXRlQ29uc3RyYWludEVudHJ5KGNvbnN0IGNoYXIgKmNv bnN0cmFpbnROYW1lLAogCQkJCQkJCQkgIGJvb2wgY29uSXNMb2NhbCwKIAkJCQkJCQkJICBp bnQgY29uSW5oQ291bnQsCiAJCQkJCQkJCSAgYm9vbCBjb25Ob0luaGVyaXQsCisJCQkJCQkJ CSAgYm9vbCBjb25UZW1wb3JhbCwKKwkJCQkJCQkJICBPaWQgcGVyaW9kLAogCQkJCQkJCQkg IGJvb2wgaXNfaW50ZXJuYWwpOwogCiBleHRlcm4gdm9pZCBSZW1vdmVDb25zdHJhaW50QnlJ ZChPaWQgY29uSWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvZGVmcmVt LmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9kZWZyZW0uaAppbmRleCA0NzgyMDNlZDRjLi4z OWMxNGIwMWZiIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9kZWZyZW0uaAor KysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9kZWZyZW0uaApAQCAtNDQsNyArNDQsOSBAQCBl eHRlcm4gY2hhciAqQ2hvb3NlUmVsYXRpb25OYW1lKGNvbnN0IGNoYXIgKm5hbWUxLCBjb25z dCBjaGFyICpuYW1lMiwKIGV4dGVybiBib29sIENoZWNrSW5kZXhDb21wYXRpYmxlKE9pZCBv bGRJZCwKIAkJCQkJCQkJIGNvbnN0IGNoYXIgKmFjY2Vzc01ldGhvZE5hbWUsCiAJCQkJCQkJ CSBMaXN0ICphdHRyaWJ1dGVMaXN0LAotCQkJCQkJCQkgTGlzdCAqZXhjbHVzaW9uT3BOYW1l cyk7CisJCQkJCQkJCSBMaXN0ICpleGNsdXNpb25PcE5hbWVzLAorCQkJCQkJCQkgYm9vbCBp c3RlbXBvcmFsLAorCQkJCQkJCQkgY29uc3QgY2hhciAqaW5kZXhQZXJpb2ROYW1lKTsKIGV4 dGVybiBPaWQJR2V0RGVmYXVsdE9wQ2xhc3MoT2lkIHR5cGVfaWQsIE9pZCBhbV9pZCk7CiBl eHRlcm4gT2lkCVJlc29sdmVPcENsYXNzKExpc3QgKm9wY2xhc3MsIE9pZCBhdHRyVHlwZSwK IAkJCQkJCSAgIGNvbnN0IGNoYXIgKmFjY2Vzc01ldGhvZE5hbWUsIE9pZCBhY2Nlc3NNZXRo b2RJZCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCBiL3Ny Yy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCmluZGV4IDY5NWZmMDU2YmEuLjk2MTQzYzA5 YjEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCisrKyBiL3Ny Yy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCkBAIC0xNDQsNiArMTQ0LDcgQEAgdHlwZWRl ZiBzdHJ1Y3QgRXhwclN0YXRlCiAgKgkJSW5kZXhBdHRyTnVtYmVycwl1bmRlcmx5aW5nLXJl bCBhdHRyaWJ1dGUgbnVtYmVycyB1c2VkIGFzIGtleXMKICAqCQkJCQkJCSh6ZXJvZXMgaW5k aWNhdGUgZXhwcmVzc2lvbnMpLiBJdCBhbHNvIGNvbnRhaW5zCiAgKiAJCQkJCQkJaW5mbyBh Ym91dCBpbmNsdWRlZCBjb2x1bW5zLgorICoJCVBlcmlvZAkJCQlwZXJpb2QgdXNlZCBpbiB0 aGUgaW5kZXgsIG9yIE5VTEwgaWYgbm9uZQogICoJCUV4cHJlc3Npb25zCQkJZXhwciB0cmVl cyBmb3IgZXhwcmVzc2lvbiBlbnRyaWVzLCBvciBOSUwgaWYgbm9uZQogICoJCUV4cHJlc3Np b25zU3RhdGUJZXhlYyBzdGF0ZSBmb3IgZXhwcmVzc2lvbnMsIG9yIE5JTCBpZiBub25lCiAg KgkJUHJlZGljYXRlCQkJcGFydGlhbC1pbmRleCBwcmVkaWNhdGUsIG9yIE5JTCBpZiBub25l CkBAIC0xNTUsNiArMTU2LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgRXhwclN0YXRlCiAgKgkJVW5p cXVlUHJvY3MKICAqCQlVbmlxdWVTdHJhdHMKICAqCQlVbmlxdWUJCQkJaXMgaXQgYSB1bmlx dWUgaW5kZXg/CisgKgkJVGVtcG9yYWwJCQlpcyBpdCBmb3IgYSB0ZW1wb3JhbCBjb25zdHJh aW50PwogICoJCU9wY2xhc3NPcHRpb25zCQlvcGNsYXNzLXNwZWNpZmljIG9wdGlvbnMsIG9y IE5VTEwgaWYgbm9uZQogICoJCVJlYWR5Rm9ySW5zZXJ0cwkJaXMgaXQgdmFsaWQgZm9yIGlu c2VydHM/CiAgKgkJQ2hlY2tlZFVuY2hhbmdlZAlJbmRleFVuY2hhbmdlZCBzdGF0dXMgZGV0 ZXJtaW5lZCB5ZXQ/CkBAIC0xNzcsNiArMTc5LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgSW5kZXhJ bmZvCiAJaW50CQkJaWlfTnVtSW5kZXhBdHRyczsJLyogdG90YWwgbnVtYmVyIG9mIGNvbHVt bnMgaW4gaW5kZXggKi8KIAlpbnQJCQlpaV9OdW1JbmRleEtleUF0dHJzOwkvKiBudW1iZXIg b2Yga2V5IGNvbHVtbnMgaW4gaW5kZXggKi8KIAlBdHRyTnVtYmVyCWlpX0luZGV4QXR0ck51 bWJlcnNbSU5ERVhfTUFYX0tFWVNdOworCU5vZGUJICAgKmlpX1BlcmlvZDsJLyogcGVyaW9k IHVzZWQgaW4gdGhlIGluZGV4ICovCiAJTGlzdAkgICAqaWlfRXhwcmVzc2lvbnM7IC8qIGxp c3Qgb2YgRXhwciAqLwogCUxpc3QJICAgKmlpX0V4cHJlc3Npb25zU3RhdGU7CS8qIGxpc3Qg b2YgRXhwclN0YXRlICovCiAJTGlzdAkgICAqaWlfUHJlZGljYXRlOwkvKiBsaXN0IG9mIEV4 cHIgKi8KQEAgLTE5MCw2ICsxOTMsNyBAQCB0eXBlZGVmIHN0cnVjdCBJbmRleEluZm8KIAlE YXR1bQkgICAqaWlfT3BjbGFzc09wdGlvbnM7CS8qIGFycmF5IHdpdGggb25lIGVudHJ5IHBl ciBjb2x1bW4gKi8KIAlib29sCQlpaV9VbmlxdWU7CiAJYm9vbAkJaWlfTnVsbHNOb3REaXN0 aW5jdDsKKwlib29sCQlpaV9UZW1wb3JhbDsKIAlib29sCQlpaV9SZWFkeUZvckluc2VydHM7 CiAJYm9vbAkJaWlfQ2hlY2tlZFVuY2hhbmdlZDsKIAlib29sCQlpaV9JbmRleFVuY2hhbmdl ZDsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL21ha2VmdW5jcy5oIGIvc3JjL2lu Y2x1ZGUvbm9kZXMvbWFrZWZ1bmNzLmgKaW5kZXggMDZkOTkxYjcyNS4uNGVkM2FmMTg2NCAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvbWFrZWZ1bmNzLmgKKysrIGIvc3JjL2lu Y2x1ZGUvbm9kZXMvbWFrZWZ1bmNzLmgKQEAgLTk4LDcgKzk4LDcgQEAgZXh0ZXJuIEluZGV4 SW5mbyAqbWFrZUluZGV4SW5mbyhpbnQgbnVtYXR0cnMsIGludCBudW1rZXlhdHRycywgT2lk IGFtb2lkLAogCQkJCQkJCQlMaXN0ICpleHByZXNzaW9ucywgTGlzdCAqcHJlZGljYXRlcywK IAkJCQkJCQkJYm9vbCB1bmlxdWUsIGJvb2wgbnVsbHNfbm90X2Rpc3RpbmN0LAogCQkJCQkJ CQlib29sIGlzcmVhZHksIGJvb2wgY29uY3VycmVudCwKLQkJCQkJCQkJYm9vbCBzdW1tYXJp emluZyk7CisJCQkJCQkJCWJvb2wgc3VtbWFyaXppbmcsIGJvb2wgdGVtcG9yYWwpOwogCiBl eHRlcm4gRGVmRWxlbSAqbWFrZURlZkVsZW0oY2hhciAqbmFtZSwgTm9kZSAqYXJnLCBpbnQg bG9jYXRpb24pOwogZXh0ZXJuIERlZkVsZW0gKm1ha2VEZWZFbGVtRXh0ZW5kZWQoY2hhciAq bmFtZVNwYWNlLCBjaGFyICpuYW1lLCBOb2RlICphcmcsCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVz LmgKaW5kZXggM2I1MjNhZjE4ZS4uZDZiMjhkMDdlYyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9k ZXMuaApAQCAtMjYyNCw2ICsyNjI0LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgQ29uc3RyYWludAog CU9pZAkJCW9sZF9wa3RhYmxlX29pZDsJLyogcGdfY29uc3RyYWludC5jb25mcmVsaWQgb2Yg bXkgZm9ybWVyCiAJCQkJCQkJCQkgKiBzZWxmICovCiAKKyAgLyogRmllbGRzIHVzZWQgZm9y IHRlbXBvcmFsIFBSSU1BUlkgS0VZIGFuZCBGT1JFSUdOIEtFWSBjb25zdHJhaW50czogKi8K KwlOb2RlCSAgICp3aXRob3V0X292ZXJsYXBzOyAvKiBTdHJpbmcgbm9kZSBuYW1pbmcgUEVS SU9EIG9yIHJhbmdlIGNvbHVtbiAqLworCiAJLyogRmllbGRzIHVzZWQgZm9yIGNvbnN0cmFp bnRzIHRoYXQgYWxsb3cgYSBOT1QgVkFMSUQgc3BlY2lmaWNhdGlvbiAqLwogCWJvb2wJCXNr aXBfdmFsaWRhdGlvbjsJLyogc2tpcCB2YWxpZGF0aW9uIG9mIGV4aXN0aW5nIHJvd3M/ICov CiAJYm9vbAkJaW5pdGlhbGx5X3ZhbGlkOwkvKiBtYXJrIHRoZSBuZXcgY29uc3RyYWludCBh cyB2YWxpZD8gKi8KQEAgLTMyMjYsNiArMzIyOSw3IEBAIHR5cGVkZWYgc3RydWN0IEluZGV4 U3RtdAogCWJvb2wJCW51bGxzX25vdF9kaXN0aW5jdDsgLyogbnVsbCB0cmVhdG1lbnQgZm9y IFVOSVFVRSBjb25zdHJhaW50cyAqLwogCWJvb2wJCXByaW1hcnk7CQkvKiBpcyBpbmRleCBh IHByaW1hcnkga2V5PyAqLwogCWJvb2wJCWlzY29uc3RyYWludDsJLyogaXMgaXQgZm9yIGEg cGtleS91bmlxdWUgY29uc3RyYWludD8gKi8KKwlib29sCQlpc3RlbXBvcmFsOwkJLyogaXMg aXQgZm9yIGEgdGVtcG9yYWwgcGtleT8gKi8KIAlib29sCQlkZWZlcnJhYmxlOwkJLyogaXMg dGhlIGNvbnN0cmFpbnQgREVGRVJSQUJMRT8gKi8KIAlib29sCQlpbml0ZGVmZXJyZWQ7CS8q IGlzIHRoZSBjb25zdHJhaW50IElOSVRJQUxMWSBERUZFUlJFRD8gKi8KIAlib29sCQl0cmFu c2Zvcm1lZDsJLyogdHJ1ZSB3aGVuIHRyYW5zZm9ybUluZGV4U3RtdCBpcyBmaW5pc2hlZCAq LwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmggYi9zcmMvaW5j bHVkZS91dGlscy9sc3lzY2FjaGUuaAppbmRleCA4OGM1YzMxNGRiLi5jYjM3NDI0YWMwIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaAorKysgYi9zcmMvaW5j bHVkZS91dGlscy9sc3lzY2FjaGUuaApAQCAtMTQ0LDYgKzE0NCw3IEBAIGV4dGVybiBjaGFy IGdldF9yZWxfcGVyc2lzdGVuY2UoT2lkIHJlbGlkKTsKIGV4dGVybiBPaWQJZ2V0X3RyYW5z Zm9ybV9mcm9tc3FsKE9pZCB0eXBpZCwgT2lkIGxhbmdpZCwgTGlzdCAqdHJmdHlwZXMpOwog ZXh0ZXJuIE9pZAlnZXRfdHJhbnNmb3JtX3Rvc3FsKE9pZCB0eXBpZCwgT2lkIGxhbmdpZCwg TGlzdCAqdHJmdHlwZXMpOwogZXh0ZXJuIGJvb2wgZ2V0X3R5cGlzZGVmaW5lZChPaWQgdHlw aWQpOworZXh0ZXJuIGNoYXIgKmdldF90eXBuYW1lKE9pZCB0eXBpZCk7CiBleHRlcm4gaW50 MTYgZ2V0X3R5cGxlbihPaWQgdHlwaWQpOwogZXh0ZXJuIGJvb2wgZ2V0X3R5cGJ5dmFsKE9p ZCB0eXBpZCk7CiBleHRlcm4gdm9pZCBnZXRfdHlwbGVuYnl2YWwoT2lkIHR5cGlkLCBpbnQx NiAqdHlwbGVuLCBib29sICp0eXBieXZhbCk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC93aXRob3V0X292ZXJsYXBzLm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwLi44M2JkMjljOThlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC93aXRob3V0X292ZXJsYXBzLm91dApAQCAtMCwwICsxLDU4NSBA QAorLS0gVGVzdHMgZm9yIFdJVEhPVVQgT1ZFUkxBUFMuCistLQorLS0gV2UgbGVhdmUgYmVo aW5kIHNldmVyYWwgdGFibGVzIHRvIHRlc3QgcGdfZHVtcCBldGM6CistLSB0ZW1wb3JhbF9y bmcsIHRlbXBvcmFsX3BlciwgdGVtcG9yYWxfcm5nMiwgdGVtcG9yYWxfcGVyMiwKKy0tIHRl bXBvcmFsX2ZrX3tybmcscGVyfTJ7cm5nLHBlcn0uCistLQorLS0gdGVzdCBpbnB1dCBwYXJz ZXIKKy0tCistLSBQSyB3aXRoIG5vIGNvbHVtbnMganVzdCBXSVRIT1VUIE9WRVJMQVBTOgor Q1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZyAoCisJdmFsaWRfYXQgdHNyYW5nZSwKKwlDT05T VFJBSU5UIHRlbXBvcmFsX3JuZ19wayBQUklNQVJZIEtFWSAodmFsaWRfYXQgV0lUSE9VVCBP VkVSTEFQUykKKyk7CitFUlJPUjogIHN5bnRheCBlcnJvciBhdCBvciBuZWFyICJXSVRIT1VU IgorTElORSAzOiAgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ybmdfcGsgUFJJTUFSWSBLRVkgKHZh bGlkX2F0IFdJVEhPVVQgT1YuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBeCistLSBQSyB3aXRoIGEgcmFuZ2UgY29sdW1u L1BFUklPRCB0aGF0IGlzbid0IHRoZXJlOgorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZyAo CisJaWQgSU5URUdFUiwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3JuZ19wayBQUklNQVJZIEtF WSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworRVJST1I6ICByYW5nZSBv ciBQRVJJT0QgInZhbGlkX2F0IiBuYW1lZCBpbiBXSVRIT1VUIE9WRVJMQVBTIGRvZXMgbm90 IGV4aXN0CistLSBQSyB3aXRoIGEgbm9uLXJhbmdlIGNvbHVtbjoKK0NSRUFURSBUQUJMRSB0 ZW1wb3JhbF9ybmcgKAorCWlkIElOVEVHRVIsCisJdmFsaWRfYXQgVEVYVCwKKwlDT05TVFJB SU5UIHRlbXBvcmFsX3JuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQg T1ZFUkxBUFMpCispOworRVJST1I6ICBjb2x1bW4gInZhbGlkX2F0IiBuYW1lZCBpbiBXSVRI T1VUIE9WRVJMQVBTIGlzIG5vdCBhIHJhbmdlIHR5cGUKKy0tIFBLIHdpdGggb25lIGNvbHVt biBwbHVzIGEgcmFuZ2U6CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nICgKKwktLSBTaW5j ZSB3ZSBjYW4ndCBkZXBlbmQgb24gaGF2aW5nIGJ0cmVlX2dpc3QgaGVyZSwKKwktLSB1c2Ug YW4gaW50NHJhbmdlIGluc3RlYWQgb2YgYW4gaW50LgorCS0tIChUaGUgcmFuZ2V0eXBlcyBy ZWdyZXNzaW9uIHRlc3QgdXNlcyB0aGUgc2FtZSB0cmljay4pCisJaWQgaW50NHJhbmdlLAor CXZhbGlkX2F0IHRzcmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ybmdfcGsgUFJJTUFS WSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK1xkIHRlbXBvcmFs X3JuZworICAgICAgICAgICAgICBUYWJsZSAicHVibGljLnRlbXBvcmFsX3JuZyIKKyAgQ29s dW1uICB8ICAgVHlwZSAgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCAKKy0t LS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0K KyBpZCAgICAgICB8IGludDRyYW5nZSB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgCisgdmFs aWRfYXQgfCB0c3JhbmdlICAgfCAgICAgICAgICAgfCBub3QgbnVsbCB8IAorSW5kZXhlczoK KyAgICAidGVtcG9yYWxfcm5nX3BrIiBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhP VVQgT1ZFUkxBUFMpCisKK1NFTEVDVCBwZ19nZXRfY29uc3RyYWludGRlZihvaWQpIEZST00g cGdfY29uc3RyYWludCBXSEVSRSBjb25uYW1lID0gJ3RlbXBvcmFsX3JuZ19wayc7CisgICAg ICAgICAgICBwZ19nZXRfY29uc3RyYWludGRlZiAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFBSSU1BUlkgS0VZIChpZCwg dmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKygxIHJvdykKKworU0VMRUNUIHBnX2dldF9p bmRleGRlZihjb25pbmRpZCwgMCwgdHJ1ZSkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNv bm5hbWUgPSAndGVtcG9yYWxfcm5nX3BrJzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcGdfZ2V0X2luZGV4ZGVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUgVU5JUVVFIElOREVYIHRlbXBv cmFsX3JuZ19wayBPTiB0ZW1wb3JhbF9ybmcgVVNJTkcgZ2lzdCAoaWQsIHZhbGlkX2F0KQor KDEgcm93KQorCistLSBQSyB3aXRoIHR3byBjb2x1bW5zIHBsdXMgYSByYW5nZToKK0NSRUFU RSBUQUJMRSB0ZW1wb3JhbF9ybmcyICgKKwlpZDEgaW50NHJhbmdlLAorCWlkMiBpbnQ0cmFu Z2UsCisJdmFsaWRfYXQgdHNyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3JuZzJfcGsg UFJJTUFSWSBLRVkgKGlkMSwgaWQyLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsK K1xkIHRlbXBvcmFsX3JuZzIKKyAgICAgICAgICAgICBUYWJsZSAicHVibGljLnRlbXBvcmFs X3JuZzIiCisgIENvbHVtbiAgfCAgIFR5cGUgICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8 IERlZmF1bHQgCistLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0rLS0tLS0tLS0tCisgaWQxICAgICAgfCBpbnQ0cmFuZ2UgfCAgICAgICAgICAgfCBub3Qg bnVsbCB8IAorIGlkMiAgICAgIHwgaW50NHJhbmdlIHwgICAgICAgICAgIHwgbm90IG51bGwg fCAKKyB2YWxpZF9hdCB8IHRzcmFuZ2UgICB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgCitJ bmRleGVzOgorICAgICJ0ZW1wb3JhbF9ybmcyX3BrIiBQUklNQVJZIEtFWSAoaWQxLCBpZDIs IHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCisKK1NFTEVDVCBwZ19nZXRfY29uc3RyYWlu dGRlZihvaWQpIEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25uYW1lID0gJ3RlbXBvcmFs X3JuZzJfcGsnOworICAgICAgICAgICAgICAgcGdfZ2V0X2NvbnN0cmFpbnRkZWYgICAgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyBQUklNQVJZIEtFWSAoaWQxLCBpZDIsIHZhbGlkX2F0IFdJVEhPVVQgT1ZF UkxBUFMpCisoMSByb3cpCisKK1NFTEVDVCBwZ19nZXRfaW5kZXhkZWYoY29uaW5kaWQsIDAs IHRydWUpIEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25uYW1lID0gJ3RlbXBvcmFsX3Ju ZzJfcGsnOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2lu ZGV4ZGVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUgVU5JUVVFIElOREVYIHRlbXBvcmFs X3JuZzJfcGsgT04gdGVtcG9yYWxfcm5nMiBVU0lORyBnaXN0IChpZDEsIGlkMiwgdmFsaWRf YXQpCisoMSByb3cpCisKK0RST1AgVEFCTEUgdGVtcG9yYWxfcm5nMjsKKy0tIFBLIHdpdGgg b25lIGNvbHVtbiBwbHVzIGEgUEVSSU9EOgorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3BlciAo CisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2Zyb20gdGltZXN0YW1wLAorCXZhbGlkX3RpbCB0 aW1lc3RhbXAsCisJUEVSSU9EIEZPUiB2YWxpZF9hdCAodmFsaWRfZnJvbSwgdmFsaWRfdGls KSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3Blcl9wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlk X2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworXGQgdGVtcG9yYWxfcGVyCisgICAgICAgICAg ICAgICAgICAgICAgICBUYWJsZSAicHVibGljLnRlbXBvcmFsX3BlciIKKyAgIENvbHVtbiAg IHwgICAgICAgICAgICBUeXBlICAgICAgICAgICAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUg fCBEZWZhdWx0IAorLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCisgaWQgICAgICAgICB8IGludDRy YW5nZSAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgCisgdmFs aWRfZnJvbSB8IHRpbWVzdGFtcCB3aXRob3V0IHRpbWUgem9uZSB8ICAgICAgICAgICB8ICAg ICAgICAgIHwgCisgdmFsaWRfdGlsICB8IHRpbWVzdGFtcCB3aXRob3V0IHRpbWUgem9uZSB8 ICAgICAgICAgICB8ICAgICAgICAgIHwgCitQZXJpb2RzOgorICAgIHZhbGlkX2F0ICh2YWxp ZF9mcm9tLCB2YWxpZF90aWwpCitJbmRleGVzOgorICAgICJ0ZW1wb3JhbF9wZXJfcGsiIFBS SU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKK0NoZWNrIGNvbnN0 cmFpbnRzOgorICAgICJ0ZW1wb3JhbF9wZXJfdmFsaWRfYXRfY2hlY2siIENIRUNLICh2YWxp ZF9mcm9tIDwgdmFsaWRfdGlsKQorCitTRUxFQ1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lk KSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ubmFtZSA9ICd0ZW1wb3JhbF9wZXJfcGsn OworICAgICAgICAgICAgcGdfZ2V0X2NvbnN0cmFpbnRkZWYgICAgICAgICAgICAgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBQUklNQVJZIEtF WSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCisoMSByb3cpCisKK1NFTEVDVCBw Z19nZXRfaW5kZXhkZWYoY29uaW5kaWQsIDAsIHRydWUpIEZST00gcGdfY29uc3RyYWludCBX SEVSRSBjb25uYW1lID0gJ3RlbXBvcmFsX3Blcl9wayc7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2luZGV4ZGVmICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUgVU5JUVVFIElOREVYIHRlbXBvcmFs X3Blcl9wayBPTiB0ZW1wb3JhbF9wZXIgVVNJTkcgZ2lzdCAoaWQsIHRzcmFuZ2UodmFsaWRf ZnJvbSwgdmFsaWRfdGlsKSkKKygxIHJvdykKKworLS0gUEsgd2l0aCB0d28gY29sdW1ucyBw bHVzIGEgUEVSSU9EOgorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3BlcjIgKAorCWlkMSBpbnQ0 cmFuZ2UsCisJaWQyIGludDRyYW5nZSwKKwl2YWxpZF9mcm9tIHRpbWVzdGFtcCwKKwl2YWxp ZF90aWwgdGltZXN0YW1wLAorCVBFUklPRCBGT1IgdmFsaWRfYXQgKHZhbGlkX2Zyb20sIHZh bGlkX3RpbCksCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9wZXIyX3BrIFBSSU1BUlkgS0VZIChp ZDEsIGlkMiwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitcZCB0ZW1wb3JhbF9w ZXIyCisgICAgICAgICAgICAgICAgICAgICAgIFRhYmxlICJwdWJsaWMudGVtcG9yYWxfcGVy MiIKKyAgIENvbHVtbiAgIHwgICAgICAgICAgICBUeXBlICAgICAgICAgICAgIHwgQ29sbGF0 aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCisgaWQx ICAgICAgICB8IGludDRyYW5nZSAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICB8IG5v dCBudWxsIHwgCisgaWQyICAgICAgICB8IGludDRyYW5nZSAgICAgICAgICAgICAgICAgICB8 ICAgICAgICAgICB8IG5vdCBudWxsIHwgCisgdmFsaWRfZnJvbSB8IHRpbWVzdGFtcCB3aXRo b3V0IHRpbWUgem9uZSB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCisgdmFsaWRfdGlsICB8 IHRpbWVzdGFtcCB3aXRob3V0IHRpbWUgem9uZSB8ICAgICAgICAgICB8ICAgICAgICAgIHwg CitQZXJpb2RzOgorICAgIHZhbGlkX2F0ICh2YWxpZF9mcm9tLCB2YWxpZF90aWwpCitJbmRl eGVzOgorICAgICJ0ZW1wb3JhbF9wZXIyX3BrIiBQUklNQVJZIEtFWSAoaWQxLCBpZDIsIHZh bGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCitDaGVjayBjb25zdHJhaW50czoKKyAgICAidGVt cG9yYWxfcGVyMl92YWxpZF9hdF9jaGVjayIgQ0hFQ0sgKHZhbGlkX2Zyb20gPCB2YWxpZF90 aWwpCisKK1NFTEVDVCBwZ19nZXRfY29uc3RyYWludGRlZihvaWQpIEZST00gcGdfY29uc3Ry YWludCBXSEVSRSBjb25uYW1lID0gJ3RlbXBvcmFsX3BlcjJfcGsnOworICAgICAgICAgICAg ICAgcGdfZ2V0X2NvbnN0cmFpbnRkZWYgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBQUklNQVJZIEtFWSAo aWQxLCBpZDIsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCisoMSByb3cpCisKK1NFTEVD VCBwZ19nZXRfaW5kZXhkZWYoY29uaW5kaWQsIDAsIHRydWUpIEZST00gcGdfY29uc3RyYWlu dCBXSEVSRSBjb25uYW1lID0gJ3RlbXBvcmFsX3BlcjJfcGsnOworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfaW5kZXhkZWYgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIENSRUFURSBV TklRVUUgSU5ERVggdGVtcG9yYWxfcGVyMl9wayBPTiB0ZW1wb3JhbF9wZXIyIFVTSU5HIGdp c3QgKGlkMSwgaWQyLCB0c3JhbmdlKHZhbGlkX2Zyb20sIHZhbGlkX3RpbCkpCisoMSByb3cp CisKK0RST1AgVEFCTEUgdGVtcG9yYWxfcGVyMjsKKy0tIFBLIHdpdGggYSBjdXN0b20gcmFu Z2UgdHlwZToKK0NSRUFURSBUWVBFIHRleHRyYW5nZTIgQVMgcmFuZ2UgKHN1YnR5cGU9dGV4 dCwgY29sbGF0aW9uPSJDIik7CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nMiAoCisJaWQg aW50NHJhbmdlLAorCXZhbGlkX2F0IHRleHRyYW5nZTIsCisJQ09OU1RSQUlOVCB0ZW1wb3Jh bF9ybmcyX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykK Kyk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ybmcyIERST1AgQ09OU1RSQUlOVCB0ZW1wb3Jh bF9ybmcyX3BrOworRFJPUCBUQUJMRSB0ZW1wb3JhbF9ybmcyOworRFJPUCBUWVBFIHRleHRy YW5nZTI7CistLSBVTklRVUUgd2l0aCBubyBjb2x1bW5zIGp1c3QgV0lUSE9VVCBPVkVSTEFQ UzoKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ybmcyICgKKwl2YWxpZF9hdCB0c3JhbmdlLAor CUNPTlNUUkFJTlQgdGVtcG9yYWxfcm5nMl91cSBVTklRVUUgKHZhbGlkX2F0IFdJVEhPVVQg T1ZFUkxBUFMpCispOworRVJST1I6ICBzeW50YXggZXJyb3IgYXQgb3IgbmVhciAiV0lUSE9V VCIKK0xJTkUgMzogIENPTlNUUkFJTlQgdGVtcG9yYWxfcm5nMl91cSBVTklRVUUgKHZhbGlk X2F0IFdJVEhPVVQgT1ZFUkxBLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBeCistLSBVTklRVUUgd2l0aCBhIHJhbmdlIGNvbHVt bi9QRVJJT0QgdGhhdCBpc24ndCB0aGVyZToKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ybmcy ICgKKwlpZCBJTlRFR0VSLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcm5nMl91cSBVTklRVUUg KGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0VSUk9SOiAgcmFuZ2Ugb3Ig UEVSSU9EICJ2YWxpZF9hdCIgbmFtZWQgaW4gV0lUSE9VVCBPVkVSTEFQUyBkb2VzIG5vdCBl eGlzdAorLS0gVU5JUVVFIHdpdGggYSBub24tcmFuZ2UgY29sdW1uOgorQ1JFQVRFIFRBQkxF IHRlbXBvcmFsX3JuZzIgKAorCWlkIElOVEVHRVIsCisJdmFsaWRfYXQgVEVYVCwKKwlDT05T VFJBSU5UIHRlbXBvcmFsX3JuZzJfdXEgVU5JUVVFIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBP VkVSTEFQUykKKyk7CitFUlJPUjogIGNvbHVtbiAidmFsaWRfYXQiIG5hbWVkIGluIFdJVEhP VVQgT1ZFUkxBUFMgaXMgbm90IGEgcmFuZ2UgdHlwZQorLS0gVU5JUVVFIHdpdGggb25lIGNv bHVtbiBwbHVzIGEgcmFuZ2U6CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nMiAoCisJLS0g U2luY2Ugd2UgY2FuJ3QgZGVwZW5kIG9uIGhhdmluZyBidHJlZV9naXN0IGhlcmUsCisJLS0g dXNlIGFuIGludDRyYW5nZSBpbnN0ZWFkIG9mIGFuIGludC4KKwktLSAoVGhlIHJhbmdldHlw ZXMgcmVncmVzc2lvbiB0ZXN0IHVzZXMgdGhlIHNhbWUgdHJpY2suKQorCWlkIGludDRyYW5n ZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcm5nMl91cSBV TklRVUUgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK1xkIHRlbXBvcmFs X3JuZzIKKyAgICAgICAgICAgICBUYWJsZSAicHVibGljLnRlbXBvcmFsX3JuZzIiCisgIENv bHVtbiAgfCAgIFR5cGUgICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQgCist LS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0t CisgaWQgICAgICAgfCBpbnQ0cmFuZ2UgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorIHZh bGlkX2F0IHwgdHNyYW5nZSAgIHwgICAgICAgICAgIHwgbm90IG51bGwgfCAKK0luZGV4ZXM6 CisgICAgInRlbXBvcmFsX3JuZzJfdXEiIFVOSVFVRSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQg T1ZFUkxBUFMpCisKK1NFTEVDVCBwZ19nZXRfY29uc3RyYWludGRlZihvaWQpIEZST00gcGdf Y29uc3RyYWludCBXSEVSRSBjb25uYW1lID0gJ3RlbXBvcmFsX3JuZzJfdXEnOworICAgICAg ICAgIHBnX2dldF9jb25zdHJhaW50ZGVmICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFVOSVFVRSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQg T1ZFUkxBUFMpCisoMSByb3cpCisKK1NFTEVDVCBwZ19nZXRfaW5kZXhkZWYoY29uaW5kaWQs IDAsIHRydWUpIEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25uYW1lID0gJ3RlbXBvcmFs X3JuZzJfdXEnOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2lu ZGV4ZGVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUgVU5JUVVFIElOREVYIHRlbXBvcmFsX3JuZzJfdXEg T04gdGVtcG9yYWxfcm5nMiBVU0lORyBnaXN0IChpZCwgdmFsaWRfYXQpCisoMSByb3cpCisK Ky0tIFVOSVFVRSB3aXRoIHR3byBjb2x1bW5zIHBsdXMgYSByYW5nZToKK0NSRUFURSBUQUJM RSB0ZW1wb3JhbF9ybmczICgKKwlpZDEgaW50NHJhbmdlLAorCWlkMiBpbnQ0cmFuZ2UsCisJ dmFsaWRfYXQgdHNyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3JuZzNfdXEgVU5JUVVF IChpZDEsIGlkMiwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitcZCB0ZW1wb3Jh bF9ybmczCisgICAgICAgICAgICAgVGFibGUgInB1YmxpYy50ZW1wb3JhbF9ybmczIgorICBD b2x1bW4gIHwgICBUeXBlICAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAor LS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0t LQorIGlkMSAgICAgIHwgaW50NHJhbmdlIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKKyBp ZDIgICAgICB8IGludDRyYW5nZSB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCisgdmFsaWRf YXQgfCB0c3JhbmdlICAgfCAgICAgICAgICAgfCBub3QgbnVsbCB8IAorSW5kZXhlczoKKyAg ICAidGVtcG9yYWxfcm5nM191cSIgVU5JUVVFIChpZDEsIGlkMiwgdmFsaWRfYXQgV0lUSE9V VCBPVkVSTEFQUykKKworU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVmKG9pZCkgRlJPTSBw Z19jb25zdHJhaW50IFdIRVJFIGNvbm5hbWUgPSAndGVtcG9yYWxfcm5nM191cSc7CisgICAg ICAgICAgICAgcGdfZ2V0X2NvbnN0cmFpbnRkZWYgICAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgVU5JUVVFIChpZDEsIGlk MiwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKygxIHJvdykKKworU0VMRUNUIHBnX2dl dF9pbmRleGRlZihjb25pbmRpZCwgMCwgdHJ1ZSkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJF IGNvbm5hbWUgPSAndGVtcG9yYWxfcm5nM191cSc7CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBwZ19nZXRfaW5kZXhkZWYgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIENSRUFU RSBVTklRVUUgSU5ERVggdGVtcG9yYWxfcm5nM191cSBPTiB0ZW1wb3JhbF9ybmczIFVTSU5H IGdpc3QgKGlkMSwgaWQyLCB2YWxpZF9hdCkKKygxIHJvdykKKworRFJPUCBUQUJMRSB0ZW1w b3JhbF9ybmczOworLS0gVU5JUVVFIHdpdGggb25lIGNvbHVtbiBwbHVzIGEgUEVSSU9EOgor Q1JFQVRFIFRBQkxFIHRlbXBvcmFsX3BlcjIgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9m cm9tIHRpbWVzdGFtcCwKKwl2YWxpZF90aWwgdGltZXN0YW1wLAorCVBFUklPRCBGT1IgdmFs aWRfYXQgKHZhbGlkX2Zyb20sIHZhbGlkX3RpbCksCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9w ZXIyX3VxIFVOSVFVRSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworXGQg dGVtcG9yYWxfcGVyMgorICAgICAgICAgICAgICAgICAgICAgICBUYWJsZSAicHVibGljLnRl bXBvcmFsX3BlcjIiCisgICBDb2x1bW4gICB8ICAgICAgICAgICAgVHlwZSAgICAgICAgICAg ICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCAKKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0t LS0tLQorIGlkICAgICAgICAgfCBpbnQ0cmFuZ2UgICAgICAgICAgICAgICAgICAgfCAgICAg ICAgICAgfCAgICAgICAgICB8IAorIHZhbGlkX2Zyb20gfCB0aW1lc3RhbXAgd2l0aG91dCB0 aW1lIHpvbmUgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorIHZhbGlkX3RpbCAgfCB0aW1l c3RhbXAgd2l0aG91dCB0aW1lIHpvbmUgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorUGVy aW9kczoKKyAgICB2YWxpZF9hdCAodmFsaWRfZnJvbSwgdmFsaWRfdGlsKQorSW5kZXhlczoK KyAgICAidGVtcG9yYWxfcGVyMl91cSIgVU5JUVVFIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBP VkVSTEFQUykKK0NoZWNrIGNvbnN0cmFpbnRzOgorICAgICJ0ZW1wb3JhbF9wZXIyX3ZhbGlk X2F0X2NoZWNrIiBDSEVDSyAodmFsaWRfZnJvbSA8IHZhbGlkX3RpbCkKKworU0VMRUNUIHBn X2dldF9jb25zdHJhaW50ZGVmKG9pZCkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbm5h bWUgPSAndGVtcG9yYWxfcGVyMl91cSc7CisgICAgICAgICAgcGdfZ2V0X2NvbnN0cmFpbnRk ZWYgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgVU5JUVVFIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKygxIHJvdykKKwor U0VMRUNUIHBnX2dldF9pbmRleGRlZihjb25pbmRpZCwgMCwgdHJ1ZSkgRlJPTSBwZ19jb25z dHJhaW50IFdIRVJFIGNvbm5hbWUgPSAndGVtcG9yYWxfcGVyMl91cSc7CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9pbmRleGRlZiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQ1JFQVRFIFVOSVFVRSBJ TkRFWCB0ZW1wb3JhbF9wZXIyX3VxIE9OIHRlbXBvcmFsX3BlcjIgVVNJTkcgZ2lzdCAoaWQs IHRzcmFuZ2UodmFsaWRfZnJvbSwgdmFsaWRfdGlsKSkKKygxIHJvdykKKworLS0gVU5JUVVF IHdpdGggdHdvIGNvbHVtbnMgcGx1cyBhIFBFUklPRDoKK0NSRUFURSBUQUJMRSB0ZW1wb3Jh bF9wZXIzICgKKwlpZDEgaW50NHJhbmdlLAorCWlkMiBpbnQ0cmFuZ2UsCisJdmFsaWRfZnJv bSB0aW1lc3RhbXAsCisJdmFsaWRfdGlsIHRpbWVzdGFtcCwKKwlQRVJJT0QgRk9SIHZhbGlk X2F0ICh2YWxpZF9mcm9tLCB2YWxpZF90aWwpLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcGVy M191cSBVTklRVUUgKGlkMSwgaWQyLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsK K1xkIHRlbXBvcmFsX3BlcjMKKyAgICAgICAgICAgICAgICAgICAgICAgVGFibGUgInB1Ymxp Yy50ZW1wb3JhbF9wZXIzIgorICAgQ29sdW1uICAgfCAgICAgICAgICAgIFR5cGUgICAgICAg ICAgICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQgCistLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSst LS0tLS0tLS0KKyBpZDEgICAgICAgIHwgaW50NHJhbmdlICAgICAgICAgICAgICAgICAgIHwg ICAgICAgICAgIHwgICAgICAgICAgfCAKKyBpZDIgICAgICAgIHwgaW50NHJhbmdlICAgICAg ICAgICAgICAgICAgIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKKyB2YWxpZF9mcm9tIHwg dGltZXN0YW1wIHdpdGhvdXQgdGltZSB6b25lIHwgICAgICAgICAgIHwgICAgICAgICAgfCAK KyB2YWxpZF90aWwgIHwgdGltZXN0YW1wIHdpdGhvdXQgdGltZSB6b25lIHwgICAgICAgICAg IHwgICAgICAgICAgfCAKK1BlcmlvZHM6CisgICAgdmFsaWRfYXQgKHZhbGlkX2Zyb20sIHZh bGlkX3RpbCkKK0luZGV4ZXM6CisgICAgInRlbXBvcmFsX3BlcjNfdXEiIFVOSVFVRSAoaWQx LCBpZDIsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCitDaGVjayBjb25zdHJhaW50czoK KyAgICAidGVtcG9yYWxfcGVyM192YWxpZF9hdF9jaGVjayIgQ0hFQ0sgKHZhbGlkX2Zyb20g PCB2YWxpZF90aWwpCisKK1NFTEVDVCBwZ19nZXRfY29uc3RyYWludGRlZihvaWQpIEZST00g cGdfY29uc3RyYWludCBXSEVSRSBjb25uYW1lID0gJ3RlbXBvcmFsX3BlcjNfdXEnOworICAg ICAgICAgICAgIHBnX2dldF9jb25zdHJhaW50ZGVmICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFVOSVFVRSAoaWQxLCBp ZDIsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCisoMSByb3cpCisKK1NFTEVDVCBwZ19n ZXRfaW5kZXhkZWYoY29uaW5kaWQsIDAsIHRydWUpIEZST00gcGdfY29uc3RyYWludCBXSEVS RSBjb25uYW1lID0gJ3RlbXBvcmFsX3BlcjNfdXEnOworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfaW5kZXhkZWYgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIENSRUFURSBVTklRVUUg SU5ERVggdGVtcG9yYWxfcGVyM191cSBPTiB0ZW1wb3JhbF9wZXIzIFVTSU5HIGdpc3QgKGlk MSwgaWQyLCB0c3JhbmdlKHZhbGlkX2Zyb20sIHZhbGlkX3RpbCkpCisoMSByb3cpCisKK0RS T1AgVEFCTEUgdGVtcG9yYWxfcGVyMzsKKy0tIFVOSVFVRSB3aXRoIGEgY3VzdG9tIHJhbmdl IHR5cGU6CitDUkVBVEUgVFlQRSB0ZXh0cmFuZ2UyIEFTIHJhbmdlIChzdWJ0eXBlPXRleHQs IGNvbGxhdGlvbj0iQyIpOworQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3BlcjMgKAorCWlkIGlu dDRyYW5nZSwKKwl2YWxpZF9hdCB0ZXh0cmFuZ2UyLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxf cGVyM191cSBVTklRVUUgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0FM VEVSIFRBQkxFIHRlbXBvcmFsX3BlcjMgRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX3BlcjNf dXE7CitEUk9QIFRBQkxFIHRlbXBvcmFsX3BlcjM7CitEUk9QIFRZUEUgdGV4dHJhbmdlMjsK Ky0tCistLSB0ZXN0IEFMVEVSIFRBQkxFIEFERCBDT05TVFJBSU5UCistLQorRFJPUCBUQUJM RSB0ZW1wb3JhbF9ybmc7CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nICgKKwlpZCBpbnQ0 cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5nZQorKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX3Ju ZworCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX3JuZ19waworCVBSSU1BUlkgS0VZIChpZCwg dmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyk7CistLSBQSyB3aXRoIFVTSU5HIElOREVYIChu b3QgcG9zc2libGUpOgorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsMyAoCisJaWQgaW50NHJhbmdl LAorCXZhbGlkX2F0IHRzcmFuZ2UKKyk7CitDUkVBVEUgSU5ERVggaWR4X3RlbXBvcmFsM191 cSBPTiB0ZW1wb3JhbDMgVVNJTkcgZ2lzdCAoaWQsIHZhbGlkX2F0KTsKK0FMVEVSIFRBQkxF IHRlbXBvcmFsMworCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsM19waworCVBSSU1BUlkgS0VZ IFVTSU5HIElOREVYIGlkeF90ZW1wb3JhbDNfdXE7CitFUlJPUjogICJpZHhfdGVtcG9yYWwz X3VxIiBpcyBub3QgYSB1bmlxdWUgaW5kZXgKK0xJTkUgMjogIEFERCBDT05TVFJBSU5UIHRl bXBvcmFsM19waworICAgICAgICAgICAgIF4KK0RFVEFJTDogIENhbm5vdCBjcmVhdGUgYSBw cmltYXJ5IGtleSBvciB1bmlxdWUgY29uc3RyYWludCB1c2luZyBzdWNoIGFuIGluZGV4Lgor RFJPUCBUQUJMRSB0ZW1wb3JhbDM7CistLSBVTklRVUUgd2l0aCBVU0lORyBJTkRFWCAobm90 IHBvc3NpYmxlKToKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbDMgKAorCWlkIGludDRyYW5nZSwK Kwl2YWxpZF9hdCB0c3JhbmdlCispOworQ1JFQVRFIElOREVYIGlkeF90ZW1wb3JhbDNfdXEg T04gdGVtcG9yYWwzIFVTSU5HIGdpc3QgKGlkLCB2YWxpZF9hdCk7CitBTFRFUiBUQUJMRSB0 ZW1wb3JhbDMKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbDNfdXEKKwlVTklRVUUgVVNJTkcg SU5ERVggaWR4X3RlbXBvcmFsM191cTsKK0VSUk9SOiAgImlkeF90ZW1wb3JhbDNfdXEiIGlz IG5vdCBhIHVuaXF1ZSBpbmRleAorTElORSAyOiAgQUREIENPTlNUUkFJTlQgdGVtcG9yYWwz X3VxCisgICAgICAgICAgICAgXgorREVUQUlMOiAgQ2Fubm90IGNyZWF0ZSBhIHByaW1hcnkg a2V5IG9yIHVuaXF1ZSBjb25zdHJhaW50IHVzaW5nIHN1Y2ggYW4gaW5kZXguCitEUk9QIFRB QkxFIHRlbXBvcmFsMzsKKy0tIEFkZCByYW5nZSBjb2x1bW4gYW5kIHRoZSBQSyBhdCB0aGUg c2FtZSB0aW1lCitDUkVBVEUgVEFCTEUgdGVtcG9yYWwzICgKKwlpZCBpbnQ0cmFuZ2UKKyk7 CitBTFRFUiBUQUJMRSB0ZW1wb3JhbDMKKwlBREQgQ09MVU1OIHZhbGlkX2F0IHRzcmFuZ2Us CisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWwzX3BrCisJUFJJTUFSWSBLRVkgKGlkLCB2YWxp ZF9hdCBXSVRIT1VUIE9WRVJMQVBTKTsKK0RST1AgVEFCTEUgdGVtcG9yYWwzOworLS0gQWRk IFBFUklPRCBhbmQgdGhlIFBLIGF0IHRoZSBzYW1lIHRpbWUKK0NSRUFURSBUQUJMRSB0ZW1w b3JhbDMgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9mcm9tIGRhdGUsCisJdmFsaWRfdGls IGRhdGUKKyk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbDMKKwlBREQgUEVSSU9EIEZPUiB2YWxp ZF9hdCAodmFsaWRfZnJvbSwgdmFsaWRfdGlsKSwKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3Jh bDNfcGsKKwlQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpOwor RFJPUCBUQUJMRSB0ZW1wb3JhbDM7CistLSBBZGQgcmFuZ2UgY29sdW1uIGFuZCBVTklRVUUg Y29uc3RyYWludCBhdCB0aGUgc2FtZSB0aW1lCitDUkVBVEUgVEFCTEUgdGVtcG9yYWwzICgK KwlpZCBpbnQ0cmFuZ2UKKyk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbDMKKwlBREQgQ09MVU1O IHZhbGlkX2F0IHRzcmFuZ2UsCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWwzX3VxCisJVU5J UVVFIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyk7CitEUk9QIFRBQkxFIHRlbXBv cmFsMzsKKy0tIEFkZCBQRVJJT0QgY29sdW1uIGFuZCBVTklRVUUgY29uc3RyYWludCBhdCB0 aGUgc2FtZSB0aW1lCitDUkVBVEUgVEFCTEUgdGVtcG9yYWwzICgKKwlpZCBpbnQ0cmFuZ2Us CisJdmFsaWRfZnJvbSBkYXRlLAorCXZhbGlkX3RpbCBkYXRlCispOworQUxURVIgVEFCTEUg dGVtcG9yYWwzCisJQUREIFBFUklPRCBGT1IgdmFsaWRfYXQgKHZhbGlkX2Zyb20sIHZhbGlk X3RpbCksCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWwzX3VxCisJVU5JUVVFIChpZCwgdmFs aWRfYXQgV0lUSE9VVCBPVkVSTEFQUyk7CitEUk9QIFRBQkxFIHRlbXBvcmFsMzsKKy0tIEFk ZCBkYXRlIGNvbHVtbnMsIFBFUklPRCwgYW5kIHRoZSBQSyBhdCB0aGUgc2FtZSB0aW1lCitD UkVBVEUgVEFCTEUgdGVtcG9yYWwzICgKKwlpZCBpbnQ0cmFuZ2UKKyk7CitBTFRFUiBUQUJM RSB0ZW1wb3JhbDMKKwlBREQgQ09MVU1OIHZhbGlkX2Zyb20gZGF0ZSwKKwlBREQgQ09MVU1O IHZhbGlkX3RpbCBkYXRlLAorCUFERCBQRVJJT0QgRk9SIHZhbGlkX2F0ICh2YWxpZF9mcm9t LCB2YWxpZF90aWwpLAorCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsM19waworCVBSSU1BUlkg S0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyk7CitEUk9QIFRBQkxFIHRlbXBv cmFsMzsKKy0tIEFkZCBkYXRlIGNvbHVtbnMsIFBFUklPRCwgYW5kIFVOSVFVRSBjb25zdHJh aW50IGF0IHRoZSBzYW1lIHRpbWUKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbDMgKAorCWlkIGlu dDRyYW5nZQorKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsMworCUFERCBDT0xVTU4gdmFsaWRf ZnJvbSBkYXRlLAorCUFERCBDT0xVTU4gdmFsaWRfdGlsIGRhdGUsCisJQUREIFBFUklPRCBG T1IgdmFsaWRfYXQgKHZhbGlkX2Zyb20sIHZhbGlkX3RpbCksCisJQUREIENPTlNUUkFJTlQg dGVtcG9yYWwzX3VxCisJVU5JUVVFIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyk7 CitEUk9QIFRBQkxFIHRlbXBvcmFsMzsKKy0tCistLSB0ZXN0IFBLIGluc2VydHMKKy0tCist LSBva2F5OgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1sxLDFdJywgdHNy YW5nZSgnMjAxOC0wMS0wMicsICcyMDE4LTAyLTAzJykpOworSU5TRVJUIElOVE8gdGVtcG9y YWxfcm5nIFZBTFVFUyAoJ1sxLDFdJywgdHNyYW5nZSgnMjAxOC0wMy0wMycsICcyMDE4LTA0 LTA0JykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1syLDJdJywgdHNy YW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAxLTA1JykpOworSU5TRVJUIElOVE8gdGVtcG9y YWxfcm5nIFZBTFVFUyAoJ1szLDNdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsIE5VTEwpKTsK Ky0tIHNob3VsZCBmYWlsOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1sx LDFdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAxLTA1JykpOworRVJST1I6ICBj b25mbGljdGluZyBrZXkgdmFsdWUgdmlvbGF0ZXMgZXhjbHVzaW9uIGNvbnN0cmFpbnQgInRl bXBvcmFsX3JuZ19wayIKK0RFVEFJTDogIEtleSAoaWQsIHZhbGlkX2F0KT0oWzEsMiksIFsi TW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiRnJpIEphbiAwNSAwMDowMDowMCAyMDE4Iikp IGNvbmZsaWN0cyB3aXRoIGV4aXN0aW5nIGtleSAoaWQsIHZhbGlkX2F0KT0oWzEsMiksIFsi VHVlIEphbiAwMiAwMDowMDowMCAyMDE4IiwiU2F0IEZlYiAwMyAwMDowMDowMCAyMDE4Iikp LgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoTlVMTCwgdHNyYW5nZSgnMjAx OC0wMS0wMScsICcyMDE4LTAxLTA1JykpOworRVJST1I6ICBudWxsIHZhbHVlIGluIGNvbHVt biAiaWQiIG9mIHJlbGF0aW9uICJ0ZW1wb3JhbF9ybmciIHZpb2xhdGVzIG5vdC1udWxsIGNv bnN0cmFpbnQKK0RFVEFJTDogIEZhaWxpbmcgcm93IGNvbnRhaW5zIChudWxsLCBbIk1vbiBK YW4gMDEgMDA6MDA6MDAgMjAxOCIsIkZyaSBKYW4gMDUgMDA6MDA6MDAgMjAxOCIpKS4KK0lO U0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbMywzXScsIE5VTEwpOworRVJST1I6 ICBudWxsIHZhbHVlIGluIGNvbHVtbiAidmFsaWRfYXQiIG9mIHJlbGF0aW9uICJ0ZW1wb3Jh bF9ybmciIHZpb2xhdGVzIG5vdC1udWxsIGNvbnN0cmFpbnQKK0RFVEFJTDogIEZhaWxpbmcg cm93IGNvbnRhaW5zIChbMyw0KSwgbnVsbCkuCistLQorLS0gdGVzdCBhIHJhbmdlIHdpdGgg Ym90aCBhIFBLIGFuZCBhIFVOSVFVRSBjb25zdHJhaW50CistLQorQ1JFQVRFIFRBQkxFIHRl bXBvcmFsMyAoCisgIGlkIGludDRyYW5nZSwKKyAgdmFsaWRfYXQgdHNyYW5nZSwKKyAgaWQy IGludDhyYW5nZSwKKyAgbmFtZSBURVhULAorICBDT05TVFJBSU5UIHRlbXBvcmFsM19wayBQ UklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAorICBDT05TVFJB SU5UIHRlbXBvcmFsM191bmlxIFVOSVFVRSAoaWQyLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJM QVBTKQorKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsMyAoaWQsIHZhbGlkX2F0LCBpZDIsIG5h bWUpCisgIFZBTFVFUworICAoJ1sxLDFdJywgdHNyYW5nZSgnMjAwMC0wMS0wMScsICcyMDEw LTAxLTAxJyksICdbNyw3XScsICdmb28nKSwKKyAgKCdbMiwyXScsIHRzcmFuZ2UoJzIwMDAt MDEtMDEnLCAnMjAxMC0wMS0wMScpLCAnWzksOV0nLCAnYmFyJykKKzsKK1VQREFURSB3aXRo b3V0X292ZXJsYXBzX3Rlc3QyIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMDAt MDUtMDEnIFRPICcyMDAwLTA3LTAxJworICBTRVQgbmFtZSA9IG5hbWUgfHwgJzEnOworVVBE QVRFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdDIgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJP TSAnMjAwMC0wNC0wMScgVE8gJzIwMDAtMDYtMDEnCisgIFNFVCBuYW1lID0gbmFtZSB8fCAn MicKKyAgV0hFUkUgaWQgPSAnWzIsMl0nOworU0VMRUNUICogRlJPTSB3aXRob3V0X292ZXJs YXBzX3Rlc3QyIE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKKyAgaWQgICB8ICAgICAgICAgICAg ICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCAgaWQyICAg fCBuYW1lICAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0KKyBbMSwyKSB8IFsiU2F0 IEphbiAwMSAwMDowMDowMCAyMDAwIiwiTW9uIE1heSAwMSAwMDowMDowMCAyMDAwIikgfCBb Nyw4KSAgfCBmb28KKyBbMSwyKSB8IFsiTW9uIE1heSAwMSAwMDowMDowMCAyMDAwIiwiU2F0 IEp1bCAwMSAwMDowMDowMCAyMDAwIikgfCBbNyw4KSAgfCBmb28xCisgWzEsMikgfCBbIlNh dCBKdWwgMDEgMDA6MDA6MDAgMjAwMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAxMCIpIHwg WzcsOCkgIHwgZm9vCisgWzIsMykgfCBbIlNhdCBKYW4gMDEgMDA6MDA6MDAgMjAwMCIsIlNh dCBBcHIgMDEgMDA6MDA6MDAgMjAwMCIpIHwgWzksMTApIHwgYmFyCisgWzIsMykgfCBbIlNh dCBBcHIgMDEgMDA6MDA6MDAgMjAwMCIsIk1vbiBNYXkgMDEgMDA6MDA6MDAgMjAwMCIpIHwg WzksMTApIHwgYmFyMgorIFsyLDMpIHwgWyJNb24gTWF5IDAxIDAwOjAwOjAwIDIwMDAiLCJU aHUgSnVuIDAxIDAwOjAwOjAwIDIwMDAiKSB8IFs5LDEwKSB8IGJhcjEyCisgWzIsMykgfCBb IlRodSBKdW4gMDEgMDA6MDA6MDAgMjAwMCIsIlNhdCBKdWwgMDEgMDA6MDA6MDAgMjAwMCIp IHwgWzksMTApIHwgYmFyMQorIFsyLDMpIHwgWyJTYXQgSnVsIDAxIDAwOjAwOjAwIDIwMDAi LCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMTAiKSB8IFs5LDEwKSB8IGJhcgorKDggcm93cykK KworLS0gY29uZmxpY3RpbmcgaWQgb25seToKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3Zlcmxh cHNfdGVzdDIgKGlkLCB2YWxpZF9hdCwgaWQyLCBuYW1lKQorICBWQUxVRVMKKyAgKCdbMSwx XScsIHRzcmFuZ2UoJzIwMDUtMDEtMDEnLCAnMjAwNi0wMS0wMScpLCAnWzgsOF0nLCAnZm9v MycpOworRVJST1I6ICBjb25mbGljdGluZyBrZXkgdmFsdWUgdmlvbGF0ZXMgZXhjbHVzaW9u IGNvbnN0cmFpbnQgIndpdGhvdXRfb3ZlcmxhcHNfdGVzdDJfcGsiCitERVRBSUw6ICBLZXkg KGlkLCB2YWxpZF9hdCk9KFsxLDIpLCBbIlNhdCBKYW4gMDEgMDA6MDA6MDAgMjAwNSIsIlN1 biBKYW4gMDEgMDA6MDA6MDAgMjAwNiIpKSBjb25mbGljdHMgd2l0aCBleGlzdGluZyBrZXkg KGlkLCB2YWxpZF9hdCk9KFsxLDIpLCBbIlNhdCBKdWwgMDEgMDA6MDA6MDAgMjAwMCIsIkZy aSBKYW4gMDEgMDA6MDA6MDAgMjAxMCIpKS4KKy0tIGNvbmZsaWN0aW5nIGlkMiBvbmx5Ogor SU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0MiAoaWQsIHZhbGlkX2F0LCBpZDIs IG5hbWUpCisgIFZBTFVFUworICAoJ1szLDNdJywgdHNyYW5nZSgnMjAwNS0wMS0wMScsICcy MDEwLTAxLTAxJyksICdbOSw5XScsICdiYXIzJykKKzsKK0VSUk9SOiAgY29uZmxpY3Rpbmcg a2V5IHZhbHVlIHZpb2xhdGVzIGV4Y2x1c2lvbiBjb25zdHJhaW50ICJ3aXRob3V0X292ZXJs YXBzX3Rlc3QyX3VuaXEiCitERVRBSUw6ICBLZXkgKGlkMiwgdmFsaWRfYXQpPShbOSwxMCks IFsiU2F0IEphbiAwMSAwMDowMDowMCAyMDA1IiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDEw IikpIGNvbmZsaWN0cyB3aXRoIGV4aXN0aW5nIGtleSAoaWQyLCB2YWxpZF9hdCk9KFs5LDEw KSwgWyJTYXQgSnVsIDAxIDAwOjAwOjAwIDIwMDAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIw MTAiKSkuCitEUk9QIFRBQkxFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdDI7CistLQorLS0gdGVz dCBhIFBFUklPRCB3aXRoIGJvdGggYSBQSyBhbmQgYSBVTklRVUUgY29uc3RyYWludAorLS0K K0NSRUFURSBUQUJMRSB3aXRob3V0X292ZXJsYXBzX3Rlc3QyICgKKyAgaWQgaW50NHJhbmdl LAorCXZhbGlkX2Zyb20gdGltZXN0YW1wLAorCXZhbGlkX3RpbCB0aW1lc3RhbXAsCisJUEVS SU9EIEZPUiB2YWxpZF9hdCAodmFsaWRfZnJvbSwgdmFsaWRfdGlsKSwKKyAgaWQyIGludDhy YW5nZSwKKyAgbmFtZSBURVhULAorICBDT05TVFJBSU5UIHdpdGhvdXRfb3ZlcmxhcHNfdGVz dDJfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKSwKKyAg Q09OU1RSQUlOVCB3aXRob3V0X292ZXJsYXBzX3Rlc3QyX3VuaXEgVU5JUVVFIChpZDIsIHZh bGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVy bGFwc190ZXN0MiAoaWQsIHZhbGlkX2Zyb20sIHZhbGlkX3RpbCwgaWQyLCBuYW1lKQorICBW QUxVRVMKKyAgKCdbMSwxXScsICcyMDAwLTAxLTAxJywgJzIwMTAtMDEtMDEnLCAnWzcsN10n LCAnZm9vJyksCisgICgnWzIsMl0nLCAnMjAwMC0wMS0wMScsICcyMDEwLTAxLTAxJywgJ1s5 LDldJywgJ2JhcicpCis7CitVUERBVEUgd2l0aG91dF9vdmVybGFwc190ZXN0MiBGT1IgUE9S VElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTA1LTAxJyBUTyAnMjAwMC0wNy0wMScKKyAg U0VUIG5hbWUgPSBuYW1lIHx8ICcxJzsKK1VQREFURSB3aXRob3V0X292ZXJsYXBzX3Rlc3Qy IEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMDAtMDQtMDEnIFRPICcyMDAwLTA2 LTAxJworICBTRVQgbmFtZSA9IG5hbWUgfHwgJzInCisgIFdIRVJFIGlkID0gJ1syLDJdJzsK K1NFTEVDVCAqIEZST00gd2l0aG91dF9vdmVybGFwc190ZXN0MiBPUkRFUiBCWSBpZCwgdmFs aWRfZnJvbSwgdmFsaWRfdGlsOworICBpZCAgIHwgICAgICAgIHZhbGlkX2Zyb20gICAgICAg IHwgICAgICAgIHZhbGlkX3RpbCAgICAgICAgIHwgIGlkMiAgIHwgbmFtZSAgCistLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tKy0tLS0tLS0KKyBbMSwyKSB8IFNhdCBKYW4gMDEgMDA6MDA6MDAgMjAwMCB8 IE1vbiBNYXkgMDEgMDA6MDA6MDAgMjAwMCB8IFs3LDgpICB8IGZvbworIFsxLDIpIHwgTW9u IE1heSAwMSAwMDowMDowMCAyMDAwIHwgU2F0IEp1bCAwMSAwMDowMDowMCAyMDAwIHwgWzcs OCkgIHwgZm9vMQorIFsxLDIpIHwgU2F0IEp1bCAwMSAwMDowMDowMCAyMDAwIHwgRnJpIEph biAwMSAwMDowMDowMCAyMDEwIHwgWzcsOCkgIHwgZm9vCisgWzIsMykgfCBTYXQgSmFuIDAx IDAwOjAwOjAwIDIwMDAgfCBTYXQgQXByIDAxIDAwOjAwOjAwIDIwMDAgfCBbOSwxMCkgfCBi YXIKKyBbMiwzKSB8IFNhdCBBcHIgMDEgMDA6MDA6MDAgMjAwMCB8IE1vbiBNYXkgMDEgMDA6 MDA6MDAgMjAwMCB8IFs5LDEwKSB8IGJhcjIKKyBbMiwzKSB8IE1vbiBNYXkgMDEgMDA6MDA6 MDAgMjAwMCB8IFRodSBKdW4gMDEgMDA6MDA6MDAgMjAwMCB8IFs5LDEwKSB8IGJhcjEyCisg WzIsMykgfCBUaHUgSnVuIDAxIDAwOjAwOjAwIDIwMDAgfCBTYXQgSnVsIDAxIDAwOjAwOjAw IDIwMDAgfCBbOSwxMCkgfCBiYXIxCisgWzIsMykgfCBTYXQgSnVsIDAxIDAwOjAwOjAwIDIw MDAgfCBGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMTAgfCBbOSwxMCkgfCBiYXIKKyg4IHJvd3Mp CisKKy0tIGNvbmZsaWN0aW5nIGlkIG9ubHk6CitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJs YXBzX3Rlc3QyIChpZCwgdmFsaWRfZnJvbSwgdmFsaWRfdGlsLCBpZDIsIG5hbWUpCisgIFZB TFVFUworICAoJ1sxLDFdJywgJzIwMDUtMDEtMDEnLCAnMjAwNi0wMS0wMScsICdbOCw4XScs ICdmb28zJyk7CitFUlJPUjogIGNvbmZsaWN0aW5nIGtleSB2YWx1ZSB2aW9sYXRlcyBleGNs dXNpb24gY29uc3RyYWludCAid2l0aG91dF9vdmVybGFwc190ZXN0Ml9wayIKK0RFVEFJTDog IEtleSAoaWQsIHRzcmFuZ2UodmFsaWRfZnJvbSwgdmFsaWRfdGlsKSk9KFsxLDIpLCBbIlNh dCBKYW4gMDEgMDA6MDA6MDAgMjAwNSIsIlN1biBKYW4gMDEgMDA6MDA6MDAgMjAwNiIpKSBj b25mbGljdHMgd2l0aCBleGlzdGluZyBrZXkgKGlkLCB0c3JhbmdlKHZhbGlkX2Zyb20sIHZh bGlkX3RpbCkpPShbMSwyKSwgWyJTYXQgSnVsIDAxIDAwOjAwOjAwIDIwMDAiLCJGcmkgSmFu IDAxIDAwOjAwOjAwIDIwMTAiKSkuCistLSBjb25mbGljdGluZyBpZDIgb25seToKK0lOU0VS VCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdDIgKGlkLCB2YWxpZF9mcm9tLCB2YWxpZF90 aWwsIGlkMiwgbmFtZSkKKyAgVkFMVUVTCisgICgnWzMsM10nLCAnMjAwNS0wMS0wMScsICcy MDEwLTAxLTAxJywgJ1s5LDldJywgJ2JhcjMnKQorOworRVJST1I6ICBjb25mbGljdGluZyBr ZXkgdmFsdWUgdmlvbGF0ZXMgZXhjbHVzaW9uIGNvbnN0cmFpbnQgIndpdGhvdXRfb3Zlcmxh cHNfdGVzdDJfdW5pcSIKK0RFVEFJTDogIEtleSAoaWQyLCB0c3JhbmdlKHZhbGlkX2Zyb20s IHZhbGlkX3RpbCkpPShbOSwxMCksIFsiU2F0IEphbiAwMSAwMDowMDowMCAyMDA1IiwiRnJp IEphbiAwMSAwMDowMDowMCAyMDEwIikpIGNvbmZsaWN0cyB3aXRoIGV4aXN0aW5nIGtleSAo aWQyLCB0c3JhbmdlKHZhbGlkX2Zyb20sIHZhbGlkX3RpbCkpPShbOSwxMCksIFsiU2F0IEp1 bCAwMSAwMDowMDowMCAyMDAwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDEwIikpLgorRFJP UCBUQUJMRSB3aXRob3V0X292ZXJsYXBzX3Rlc3QyOworLS0KKy0tIHRlc3QgY2hhbmdpbmcg dGhlIFBLJ3MgZGVwZW5kZW5jaWVzCistLQorQ1JFQVRFIFRBQkxFIHdpdGhvdXRfb3Zlcmxh cHNfdGVzdDIgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCUNPTlNU UkFJTlQgd2l0aG91dF9vdmVybGFwczJfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBX SVRIT1VUIE9WRVJMQVBTKQorKTsKK0FMVEVSIFRBQkxFIHdpdGhvdXRfb3ZlcmxhcHNfdGVz dDIgQUxURVIgQ09MVU1OIHZhbGlkX2F0IERST1AgTk9UIE5VTEw7CitFUlJPUjogIGNvbHVt biAidmFsaWRfYXQiIGlzIGluIGEgcHJpbWFyeSBrZXkKK0FMVEVSIFRBQkxFIHdpdGhvdXRf b3ZlcmxhcHNfdGVzdDIgQUxURVIgQ09MVU1OIHZhbGlkX2F0IFRZUEUgdHN0enJhbmdlIFVT SU5HIHRzdHpyYW5nZShsb3dlcih2YWxpZF9hdCksIHVwcGVyKHZhbGlkX2F0KSk7CitBTFRF UiBUQUJMRSB3aXRob3V0X292ZXJsYXBzX3Rlc3QyIFJFTkFNRSBDT0xVTU4gdmFsaWRfYXQg VE8gdmFsaWRfdGhydTsKK0FMVEVSIFRBQkxFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdDIgRFJP UCBDT0xVTU4gdmFsaWRfdGhydTsKK0RST1AgVEFCTEUgd2l0aG91dF9vdmVybGFwc190ZXN0 MjsKKy0tCistLSB0ZXN0IFBBUlRJVElPTiBCWSBmb3IgcmFuZ2VzCistLQorQ1JFQVRFIFRB QkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQg ZGF0ZXJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcGFyaXRpb25lZF9wayBQUklNQVJZ IEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispIFBBUlRJVElPTiBCWSBM SVNUIChpZCk7CitFUlJPUjogIGNhbm5vdCBtYXRjaCBwYXJ0aXRpb24ga2V5IHRvIGFuIGlu ZGV4IHVzaW5nIGFjY2VzcyBtZXRob2QgImdpc3QiCistLSBUT0RPOiBhdHRhY2ggc29tZSBw YXJ0aXRpb25zLCBpbnNlcnQgaW50byB0aGVtLCB1cGRhdGUgdGhlbSB3aXRoIGFuZCB3aXRo b3V0IEZPUiBQT1JUSU9OIE9GLCBkZWxldGUgdGhlbSB0aGUgc2FtZSB3YXkuCistLQorLS0g dGVzdCBQQVJUSVRJT04gQlkgZm9yIFBFUklPRFMKKy0tCitDUkVBVEUgVEFCTEUgdGVtcG9y YWxfcGFydGl0aW9uZWQgKAorICBpZCBpbnQ0cmFuZ2UsCisgIHZhbGlkX2Zyb20gVElNRVNU QU1QLAorICB2YWxpZF90aWwgVElNRVNUQU1QLAorICBQRVJJT0QgRk9SIHZhbGlkX2F0ICh2 YWxpZF9mcm9tLCB2YWxpZF90aWwpLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcGFyaXRpb25l ZF9wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispIFBB UlRJVElPTiBCWSBMSVNUIChpZCk7CitFUlJPUjogIGNhbm5vdCBtYXRjaCBwYXJ0aXRpb24g a2V5IHRvIGFuIGluZGV4IHVzaW5nIGFjY2VzcyBtZXRob2QgImdpc3QiCistLSBUT0RPOiBh dHRhY2ggc29tZSBwYXJ0aXRpb25zLCBpbnNlcnQgaW50byB0aGVtLCB1cGRhdGUgdGhlbSB3 aXRoIGFuZCB3aXRob3V0IEZPUiBQT1JUSU9OIE9GLCBkZWxldGUgdGhlbSB0aGUgc2FtZSB3 YXkuCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlIGIv c3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQppbmRleCA5NzM4MjVmNWM3Li5m MzZlMTVhMGZlIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVk dWxlCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKQEAgLTI4LDcg KzI4LDcgQEAgdGVzdDogc3RyaW5ncyBtZDUgbnVtZXJvbG9neSBwb2ludCBsc2VnIGxpbmUg Ym94IHBhdGggcG9seWdvbiBjaXJjbGUgZGF0ZSB0aW1lIHQKICMgZ2VvbWV0cnkgZGVwZW5k cyBvbiBwb2ludCwgbHNlZywgbGluZSwgYm94LCBwYXRoLCBwb2x5Z29uLCBjaXJjbGUKICMg aG9yb2xvZ3kgZGVwZW5kcyBvbiBkYXRlLCB0aW1lLCB0aW1ldHosIHRpbWVzdGFtcCwgdGlt ZXN0YW1wdHosIGludGVydmFsCiAjIC0tLS0tLS0tLS0KLXRlc3Q6IGdlb21ldHJ5IGhvcm9s b2d5IHRzdHlwZXMgcmVnZXggdHlwZV9zYW5pdHkgb3ByX3Nhbml0eSBtaXNjX3Nhbml0eSBj b21tZW50cyBleHByZXNzaW9ucyB1bmljb2RlIHhpZCBtdmNjCit0ZXN0OiBnZW9tZXRyeSBo b3JvbG9neSB0c3R5cGVzIHJlZ2V4IHR5cGVfc2FuaXR5IG9wcl9zYW5pdHkgbWlzY19zYW5p dHkgY29tbWVudHMgZXhwcmVzc2lvbnMgdW5pY29kZSB4aWQgbXZjYyB3aXRob3V0X292ZXJs YXBzCiAKICMgLS0tLS0tLS0tLQogIyBMb2FkIGh1Z2UgYW1vdW50cyBvZiBkYXRhCmRpZmYg LS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC93aXRob3V0X292ZXJsYXBzLnNxbCBiL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL3dpdGhvdXRfb3ZlcmxhcHMuc3FsCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmJkZmRjNTA5NjcKLS0tIC9kZXYvbnVsbAorKysg Yi9zcmMvdGVzdC9yZWdyZXNzL3NxbC93aXRob3V0X292ZXJsYXBzLnNxbApAQCAtMCwwICsx LDQwOCBAQAorLS0gVGVzdHMgZm9yIFdJVEhPVVQgT1ZFUkxBUFMuCistLQorLS0gV2UgbGVh dmUgYmVoaW5kIHNldmVyYWwgdGFibGVzIHRvIHRlc3QgcGdfZHVtcCBldGM6CistLSB0ZW1w b3JhbF9ybmcsIHRlbXBvcmFsX3BlciwgdGVtcG9yYWxfcm5nMiwgdGVtcG9yYWxfcGVyMiwK Ky0tIHRlbXBvcmFsX2ZrX3tybmcscGVyfTJ7cm5nLHBlcn0uCisKKy0tCistLSB0ZXN0IGlu cHV0IHBhcnNlcgorLS0KKworLS0gUEsgd2l0aCBubyBjb2x1bW5zIGp1c3QgV0lUSE9VVCBP VkVSTEFQUzoKKworQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZyAoCisJdmFsaWRfYXQgdHNy YW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3JuZ19wayBQUklNQVJZIEtFWSAodmFsaWRf YXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CisKKy0tIFBLIHdpdGggYSByYW5nZSBjb2x1bW4v UEVSSU9EIHRoYXQgaXNuJ3QgdGhlcmU6CisKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ybmcg KAorCWlkIElOVEVHRVIsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ybmdfcGsgUFJJTUFSWSBL RVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKKworLS0gUEsgd2l0aCBh IG5vbi1yYW5nZSBjb2x1bW46CisKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ybmcgKAorCWlk IElOVEVHRVIsCisJdmFsaWRfYXQgVEVYVCwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3JuZ19w ayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworCist LSBQSyB3aXRoIG9uZSBjb2x1bW4gcGx1cyBhIHJhbmdlOgorCitDUkVBVEUgVEFCTEUgdGVt cG9yYWxfcm5nICgKKwktLSBTaW5jZSB3ZSBjYW4ndCBkZXBlbmQgb24gaGF2aW5nIGJ0cmVl X2dpc3QgaGVyZSwKKwktLSB1c2UgYW4gaW50NHJhbmdlIGluc3RlYWQgb2YgYW4gaW50Lgor CS0tIChUaGUgcmFuZ2V0eXBlcyByZWdyZXNzaW9uIHRlc3QgdXNlcyB0aGUgc2FtZSB0cmlj ay4pCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJQ09OU1RSQUlOVCB0 ZW1wb3JhbF9ybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJM QVBTKQorKTsKK1xkIHRlbXBvcmFsX3JuZworU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVm KG9pZCkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbm5hbWUgPSAndGVtcG9yYWxfcm5n X3BrJzsKK1NFTEVDVCBwZ19nZXRfaW5kZXhkZWYoY29uaW5kaWQsIDAsIHRydWUpIEZST00g cGdfY29uc3RyYWludCBXSEVSRSBjb25uYW1lID0gJ3RlbXBvcmFsX3JuZ19wayc7CisKKy0t IFBLIHdpdGggdHdvIGNvbHVtbnMgcGx1cyBhIHJhbmdlOgorQ1JFQVRFIFRBQkxFIHRlbXBv cmFsX3JuZzIgKAorCWlkMSBpbnQ0cmFuZ2UsCisJaWQyIGludDRyYW5nZSwKKwl2YWxpZF9h dCB0c3JhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcm5nMl9wayBQUklNQVJZIEtFWSAo aWQxLCBpZDIsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworXGQgdGVtcG9yYWxf cm5nMgorU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVmKG9pZCkgRlJPTSBwZ19jb25zdHJh aW50IFdIRVJFIGNvbm5hbWUgPSAndGVtcG9yYWxfcm5nMl9wayc7CitTRUxFQ1QgcGdfZ2V0 X2luZGV4ZGVmKGNvbmluZGlkLCAwLCB0cnVlKSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUg Y29ubmFtZSA9ICd0ZW1wb3JhbF9ybmcyX3BrJzsKK0RST1AgVEFCTEUgdGVtcG9yYWxfcm5n MjsKKworCistLSBQSyB3aXRoIG9uZSBjb2x1bW4gcGx1cyBhIFBFUklPRDoKK0NSRUFURSBU QUJMRSB0ZW1wb3JhbF9wZXIgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9mcm9tIHRpbWVz dGFtcCwKKwl2YWxpZF90aWwgdGltZXN0YW1wLAorCVBFUklPRCBGT1IgdmFsaWRfYXQgKHZh bGlkX2Zyb20sIHZhbGlkX3RpbCksCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9wZXJfcGsgUFJJ TUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK1xkIHRlbXBv cmFsX3BlcgorU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVmKG9pZCkgRlJPTSBwZ19jb25z dHJhaW50IFdIRVJFIGNvbm5hbWUgPSAndGVtcG9yYWxfcGVyX3BrJzsKK1NFTEVDVCBwZ19n ZXRfaW5kZXhkZWYoY29uaW5kaWQsIDAsIHRydWUpIEZST00gcGdfY29uc3RyYWludCBXSEVS RSBjb25uYW1lID0gJ3RlbXBvcmFsX3Blcl9wayc7CisKKy0tIFBLIHdpdGggdHdvIGNvbHVt bnMgcGx1cyBhIFBFUklPRDoKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9wZXIyICgKKwlpZDEg aW50NHJhbmdlLAorCWlkMiBpbnQ0cmFuZ2UsCisJdmFsaWRfZnJvbSB0aW1lc3RhbXAsCisJ dmFsaWRfdGlsIHRpbWVzdGFtcCwKKwlQRVJJT0QgRk9SIHZhbGlkX2F0ICh2YWxpZF9mcm9t LCB2YWxpZF90aWwpLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcGVyMl9wayBQUklNQVJZIEtF WSAoaWQxLCBpZDIsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworXGQgdGVtcG9y YWxfcGVyMgorU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVmKG9pZCkgRlJPTSBwZ19jb25z dHJhaW50IFdIRVJFIGNvbm5hbWUgPSAndGVtcG9yYWxfcGVyMl9wayc7CitTRUxFQ1QgcGdf Z2V0X2luZGV4ZGVmKGNvbmluZGlkLCAwLCB0cnVlKSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hF UkUgY29ubmFtZSA9ICd0ZW1wb3JhbF9wZXIyX3BrJzsKK0RST1AgVEFCTEUgdGVtcG9yYWxf cGVyMjsKKworLS0gUEsgd2l0aCBhIGN1c3RvbSByYW5nZSB0eXBlOgorQ1JFQVRFIFRZUEUg dGV4dHJhbmdlMiBBUyByYW5nZSAoc3VidHlwZT10ZXh0LCBjb2xsYXRpb249IkMiKTsKK0NS RUFURSBUQUJMRSB0ZW1wb3JhbF9ybmcyICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQg dGV4dHJhbmdlMiwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3JuZzJfcGsgUFJJTUFSWSBLRVkg KGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0FMVEVSIFRBQkxFIHRlbXBv cmFsX3JuZzIgRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX3JuZzJfcGs7CitEUk9QIFRBQkxF IHRlbXBvcmFsX3JuZzI7CitEUk9QIFRZUEUgdGV4dHJhbmdlMjsKKworLS0gVU5JUVVFIHdp dGggbm8gY29sdW1ucyBqdXN0IFdJVEhPVVQgT1ZFUkxBUFM6CisKK0NSRUFURSBUQUJMRSB0 ZW1wb3JhbF9ybmcyICgKKwl2YWxpZF9hdCB0c3JhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9y YWxfcm5nMl91cSBVTklRVUUgKHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworCist LSBVTklRVUUgd2l0aCBhIHJhbmdlIGNvbHVtbi9QRVJJT0QgdGhhdCBpc24ndCB0aGVyZToK KworQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZzIgKAorCWlkIElOVEVHRVIsCisJQ09OU1RS QUlOVCB0ZW1wb3JhbF9ybmcyX3VxIFVOSVFVRSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZF UkxBUFMpCispOworCistLSBVTklRVUUgd2l0aCBhIG5vbi1yYW5nZSBjb2x1bW46CisKK0NS RUFURSBUQUJMRSB0ZW1wb3JhbF9ybmcyICgKKwlpZCBJTlRFR0VSLAorCXZhbGlkX2F0IFRF WFQsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ybmcyX3VxIFVOSVFVRSAoaWQsIHZhbGlkX2F0 IFdJVEhPVVQgT1ZFUkxBUFMpCispOworCistLSBVTklRVUUgd2l0aCBvbmUgY29sdW1uIHBs dXMgYSByYW5nZToKKworQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZzIgKAorCS0tIFNpbmNl IHdlIGNhbid0IGRlcGVuZCBvbiBoYXZpbmcgYnRyZWVfZ2lzdCBoZXJlLAorCS0tIHVzZSBh biBpbnQ0cmFuZ2UgaW5zdGVhZCBvZiBhbiBpbnQuCisJLS0gKFRoZSByYW5nZXR5cGVzIHJl Z3Jlc3Npb24gdGVzdCB1c2VzIHRoZSBzYW1lIHRyaWNrLikKKwlpZCBpbnQ0cmFuZ2UsCisJ dmFsaWRfYXQgdHNyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3JuZzJfdXEgVU5JUVVF IChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitcZCB0ZW1wb3JhbF9ybmcy CitTRUxFQ1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lkKSBGUk9NIHBnX2NvbnN0cmFpbnQg V0hFUkUgY29ubmFtZSA9ICd0ZW1wb3JhbF9ybmcyX3VxJzsKK1NFTEVDVCBwZ19nZXRfaW5k ZXhkZWYoY29uaW5kaWQsIDAsIHRydWUpIEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25u YW1lID0gJ3RlbXBvcmFsX3JuZzJfdXEnOworCistLSBVTklRVUUgd2l0aCB0d28gY29sdW1u cyBwbHVzIGEgcmFuZ2U6CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nMyAoCisJaWQxIGlu dDRyYW5nZSwKKwlpZDIgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJQ09OU1RS QUlOVCB0ZW1wb3JhbF9ybmczX3VxIFVOSVFVRSAoaWQxLCBpZDIsIHZhbGlkX2F0IFdJVEhP VVQgT1ZFUkxBUFMpCispOworXGQgdGVtcG9yYWxfcm5nMworU0VMRUNUIHBnX2dldF9jb25z dHJhaW50ZGVmKG9pZCkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbm5hbWUgPSAndGVt cG9yYWxfcm5nM191cSc7CitTRUxFQ1QgcGdfZ2V0X2luZGV4ZGVmKGNvbmluZGlkLCAwLCB0 cnVlKSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ubmFtZSA9ICd0ZW1wb3JhbF9ybmcz X3VxJzsKK0RST1AgVEFCTEUgdGVtcG9yYWxfcm5nMzsKKworLS0gVU5JUVVFIHdpdGggb25l IGNvbHVtbiBwbHVzIGEgUEVSSU9EOgorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3BlcjIgKAor CWlkIGludDRyYW5nZSwKKwl2YWxpZF9mcm9tIHRpbWVzdGFtcCwKKwl2YWxpZF90aWwgdGlt ZXN0YW1wLAorCVBFUklPRCBGT1IgdmFsaWRfYXQgKHZhbGlkX2Zyb20sIHZhbGlkX3RpbCks CisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9wZXIyX3VxIFVOSVFVRSAoaWQsIHZhbGlkX2F0IFdJ VEhPVVQgT1ZFUkxBUFMpCispOworXGQgdGVtcG9yYWxfcGVyMgorU0VMRUNUIHBnX2dldF9j b25zdHJhaW50ZGVmKG9pZCkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbm5hbWUgPSAn dGVtcG9yYWxfcGVyMl91cSc7CitTRUxFQ1QgcGdfZ2V0X2luZGV4ZGVmKGNvbmluZGlkLCAw LCB0cnVlKSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ubmFtZSA9ICd0ZW1wb3JhbF9w ZXIyX3VxJzsKKworLS0gVU5JUVVFIHdpdGggdHdvIGNvbHVtbnMgcGx1cyBhIFBFUklPRDoK K0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9wZXIzICgKKwlpZDEgaW50NHJhbmdlLAorCWlkMiBp bnQ0cmFuZ2UsCisJdmFsaWRfZnJvbSB0aW1lc3RhbXAsCisJdmFsaWRfdGlsIHRpbWVzdGFt cCwKKwlQRVJJT0QgRk9SIHZhbGlkX2F0ICh2YWxpZF9mcm9tLCB2YWxpZF90aWwpLAorCUNP TlNUUkFJTlQgdGVtcG9yYWxfcGVyM191cSBVTklRVUUgKGlkMSwgaWQyLCB2YWxpZF9hdCBX SVRIT1VUIE9WRVJMQVBTKQorKTsKK1xkIHRlbXBvcmFsX3BlcjMKK1NFTEVDVCBwZ19nZXRf Y29uc3RyYWludGRlZihvaWQpIEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25uYW1lID0g J3RlbXBvcmFsX3BlcjNfdXEnOworU0VMRUNUIHBnX2dldF9pbmRleGRlZihjb25pbmRpZCwg MCwgdHJ1ZSkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbm5hbWUgPSAndGVtcG9yYWxf cGVyM191cSc7CitEUk9QIFRBQkxFIHRlbXBvcmFsX3BlcjM7CisKKy0tIFVOSVFVRSB3aXRo IGEgY3VzdG9tIHJhbmdlIHR5cGU6CitDUkVBVEUgVFlQRSB0ZXh0cmFuZ2UyIEFTIHJhbmdl IChzdWJ0eXBlPXRleHQsIGNvbGxhdGlvbj0iQyIpOworQ1JFQVRFIFRBQkxFIHRlbXBvcmFs X3BlcjMgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0ZXh0cmFuZ2UyLAorCUNPTlNU UkFJTlQgdGVtcG9yYWxfcGVyM191cSBVTklRVUUgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9W RVJMQVBTKQorKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX3BlcjMgRFJPUCBDT05TVFJBSU5U IHRlbXBvcmFsX3BlcjNfdXE7CitEUk9QIFRBQkxFIHRlbXBvcmFsX3BlcjM7CitEUk9QIFRZ UEUgdGV4dHJhbmdlMjsKKworLS0KKy0tIHRlc3QgQUxURVIgVEFCTEUgQUREIENPTlNUUkFJ TlQKKy0tCisKK0RST1AgVEFCTEUgdGVtcG9yYWxfcm5nOworQ1JFQVRFIFRBQkxFIHRlbXBv cmFsX3JuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UKKyk7CitBTFRF UiBUQUJMRSB0ZW1wb3JhbF9ybmcKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ybmdfcGsK KwlQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpOworCistLSBQ SyB3aXRoIFVTSU5HIElOREVYIChub3QgcG9zc2libGUpOgorQ1JFQVRFIFRBQkxFIHRlbXBv cmFsMyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UKKyk7CitDUkVBVEUg SU5ERVggaWR4X3RlbXBvcmFsM191cSBPTiB0ZW1wb3JhbDMgVVNJTkcgZ2lzdCAoaWQsIHZh bGlkX2F0KTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsMworCUFERCBDT05TVFJBSU5UIHRlbXBv cmFsM19waworCVBSSU1BUlkgS0VZIFVTSU5HIElOREVYIGlkeF90ZW1wb3JhbDNfdXE7CitE Uk9QIFRBQkxFIHRlbXBvcmFsMzsKKworLS0gVU5JUVVFIHdpdGggVVNJTkcgSU5ERVggKG5v dCBwb3NzaWJsZSk6CitDUkVBVEUgVEFCTEUgdGVtcG9yYWwzICgKKwlpZCBpbnQ0cmFuZ2Us CisJdmFsaWRfYXQgdHNyYW5nZQorKTsKK0NSRUFURSBJTkRFWCBpZHhfdGVtcG9yYWwzX3Vx IE9OIHRlbXBvcmFsMyBVU0lORyBnaXN0IChpZCwgdmFsaWRfYXQpOworQUxURVIgVEFCTEUg dGVtcG9yYWwzCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWwzX3VxCisJVU5JUVVFIFVTSU5H IElOREVYIGlkeF90ZW1wb3JhbDNfdXE7CitEUk9QIFRBQkxFIHRlbXBvcmFsMzsKKworLS0g QWRkIHJhbmdlIGNvbHVtbiBhbmQgdGhlIFBLIGF0IHRoZSBzYW1lIHRpbWUKK0NSRUFURSBU QUJMRSB0ZW1wb3JhbDMgKAorCWlkIGludDRyYW5nZQorKTsKK0FMVEVSIFRBQkxFIHRlbXBv cmFsMworCUFERCBDT0xVTU4gdmFsaWRfYXQgdHNyYW5nZSwKKwlBREQgQ09OU1RSQUlOVCB0 ZW1wb3JhbDNfcGsKKwlQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxB UFMpOworRFJPUCBUQUJMRSB0ZW1wb3JhbDM7CisKKy0tIEFkZCBQRVJJT0QgYW5kIHRoZSBQ SyBhdCB0aGUgc2FtZSB0aW1lCitDUkVBVEUgVEFCTEUgdGVtcG9yYWwzICgKKwlpZCBpbnQ0 cmFuZ2UsCisJdmFsaWRfZnJvbSBkYXRlLAorCXZhbGlkX3RpbCBkYXRlCispOworQUxURVIg VEFCTEUgdGVtcG9yYWwzCisJQUREIFBFUklPRCBGT1IgdmFsaWRfYXQgKHZhbGlkX2Zyb20s IHZhbGlkX3RpbCksCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWwzX3BrCisJUFJJTUFSWSBL RVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKTsKK0RST1AgVEFCTEUgdGVtcG9y YWwzOworCistLSBBZGQgcmFuZ2UgY29sdW1uIGFuZCBVTklRVUUgY29uc3RyYWludCBhdCB0 aGUgc2FtZSB0aW1lCitDUkVBVEUgVEFCTEUgdGVtcG9yYWwzICgKKwlpZCBpbnQ0cmFuZ2UK Kyk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbDMKKwlBREQgQ09MVU1OIHZhbGlkX2F0IHRzcmFu Z2UsCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWwzX3VxCisJVU5JUVVFIChpZCwgdmFsaWRf YXQgV0lUSE9VVCBPVkVSTEFQUyk7CitEUk9QIFRBQkxFIHRlbXBvcmFsMzsKKworLS0gQWRk IFBFUklPRCBjb2x1bW4gYW5kIFVOSVFVRSBjb25zdHJhaW50IGF0IHRoZSBzYW1lIHRpbWUK K0NSRUFURSBUQUJMRSB0ZW1wb3JhbDMgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9mcm9t IGRhdGUsCisJdmFsaWRfdGlsIGRhdGUKKyk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbDMKKwlB REQgUEVSSU9EIEZPUiB2YWxpZF9hdCAodmFsaWRfZnJvbSwgdmFsaWRfdGlsKSwKKwlBREQg Q09OU1RSQUlOVCB0ZW1wb3JhbDNfdXEKKwlVTklRVUUgKGlkLCB2YWxpZF9hdCBXSVRIT1VU IE9WRVJMQVBTKTsKK0RST1AgVEFCTEUgdGVtcG9yYWwzOworCistLSBBZGQgZGF0ZSBjb2x1 bW5zLCBQRVJJT0QsIGFuZCB0aGUgUEsgYXQgdGhlIHNhbWUgdGltZQorQ1JFQVRFIFRBQkxF IHRlbXBvcmFsMyAoCisJaWQgaW50NHJhbmdlCispOworQUxURVIgVEFCTEUgdGVtcG9yYWwz CisJQUREIENPTFVNTiB2YWxpZF9mcm9tIGRhdGUsCisJQUREIENPTFVNTiB2YWxpZF90aWwg ZGF0ZSwKKwlBREQgUEVSSU9EIEZPUiB2YWxpZF9hdCAodmFsaWRfZnJvbSwgdmFsaWRfdGls KSwKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbDNfcGsKKwlQUklNQVJZIEtFWSAoaWQsIHZh bGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpOworRFJPUCBUQUJMRSB0ZW1wb3JhbDM7CisKKy0t IEFkZCBkYXRlIGNvbHVtbnMsIFBFUklPRCwgYW5kIFVOSVFVRSBjb25zdHJhaW50IGF0IHRo ZSBzYW1lIHRpbWUKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbDMgKAorCWlkIGludDRyYW5nZQor KTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsMworCUFERCBDT0xVTU4gdmFsaWRfZnJvbSBkYXRl LAorCUFERCBDT0xVTU4gdmFsaWRfdGlsIGRhdGUsCisJQUREIFBFUklPRCBGT1IgdmFsaWRf YXQgKHZhbGlkX2Zyb20sIHZhbGlkX3RpbCksCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWwz X3VxCisJVU5JUVVFIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyk7CitEUk9QIFRB QkxFIHRlbXBvcmFsMzsKKworLS0KKy0tIHRlc3QgUEsgaW5zZXJ0cworLS0KKworLS0gb2th eToKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbMSwxXScsIHRzcmFuZ2Uo JzIwMTgtMDEtMDInLCAnMjAxOC0wMi0wMycpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3Ju ZyBWQUxVRVMgKCdbMSwxXScsIHRzcmFuZ2UoJzIwMTgtMDMtMDMnLCAnMjAxOC0wNC0wNCcp KTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbMiwyXScsIHRzcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAxOC0wMS0wNScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3Ju ZyBWQUxVRVMgKCdbMywzXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCBOVUxMKSk7CisKKy0t IHNob3VsZCBmYWlsOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1sxLDFd JywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAxLTA1JykpOworSU5TRVJUIElOVE8g dGVtcG9yYWxfcm5nIFZBTFVFUyAoTlVMTCwgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4 LTAxLTA1JykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1szLDNdJywg TlVMTCk7CisKKy0tCistLSB0ZXN0IGEgcmFuZ2Ugd2l0aCBib3RoIGEgUEsgYW5kIGEgVU5J UVVFIGNvbnN0cmFpbnQKKy0tCisKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbDMgKAorICBpZCBp bnQ0cmFuZ2UsCisgIHZhbGlkX2F0IHRzcmFuZ2UsCisgIGlkMiBpbnQ4cmFuZ2UsCisgIG5h bWUgVEVYVCwKKyAgQ09OU1RSQUlOVCB0ZW1wb3JhbDNfcGsgUFJJTUFSWSBLRVkgKGlkLCB2 YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKSwKKyAgQ09OU1RSQUlOVCB0ZW1wb3JhbDNfdW5p cSBVTklRVUUgKGlkMiwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitJTlNFUlQg SU5UTyB0ZW1wb3JhbDMgKGlkLCB2YWxpZF9hdCwgaWQyLCBuYW1lKQorICBWQUxVRVMKKyAg KCdbMSwxXScsIHRzcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAxMC0wMS0wMScpLCAnWzcsN10n LCAnZm9vJyksCisgICgnWzIsMl0nLCB0c3JhbmdlKCcyMDAwLTAxLTAxJywgJzIwMTAtMDEt MDEnKSwgJ1s5LDldJywgJ2JhcicpCis7CitVUERBVEUgd2l0aG91dF9vdmVybGFwc190ZXN0 MiBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTA1LTAxJyBUTyAnMjAwMC0w Ny0wMScKKyAgU0VUIG5hbWUgPSBuYW1lIHx8ICcxJzsKK1VQREFURSB3aXRob3V0X292ZXJs YXBzX3Rlc3QyIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMDAtMDQtMDEnIFRP ICcyMDAwLTA2LTAxJworICBTRVQgbmFtZSA9IG5hbWUgfHwgJzInCisgIFdIRVJFIGlkID0g J1syLDJdJzsKK1NFTEVDVCAqIEZST00gd2l0aG91dF9vdmVybGFwc190ZXN0MiBPUkRFUiBC WSBpZCwgdmFsaWRfYXQ7CistLSBjb25mbGljdGluZyBpZCBvbmx5OgorSU5TRVJUIElOVE8g d2l0aG91dF9vdmVybGFwc190ZXN0MiAoaWQsIHZhbGlkX2F0LCBpZDIsIG5hbWUpCisgIFZB TFVFUworICAoJ1sxLDFdJywgdHNyYW5nZSgnMjAwNS0wMS0wMScsICcyMDA2LTAxLTAxJyks ICdbOCw4XScsICdmb28zJyk7CistLSBjb25mbGljdGluZyBpZDIgb25seToKK0lOU0VSVCBJ TlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdDIgKGlkLCB2YWxpZF9hdCwgaWQyLCBuYW1lKQor ICBWQUxVRVMKKyAgKCdbMywzXScsIHRzcmFuZ2UoJzIwMDUtMDEtMDEnLCAnMjAxMC0wMS0w MScpLCAnWzksOV0nLCAnYmFyMycpCis7CitEUk9QIFRBQkxFIHdpdGhvdXRfb3ZlcmxhcHNf dGVzdDI7CisKKy0tCistLSB0ZXN0IGEgUEVSSU9EIHdpdGggYm90aCBhIFBLIGFuZCBhIFVO SVFVRSBjb25zdHJhaW50CistLQorCitDUkVBVEUgVEFCTEUgd2l0aG91dF9vdmVybGFwc190 ZXN0MiAoCisgIGlkIGludDRyYW5nZSwKKwl2YWxpZF9mcm9tIHRpbWVzdGFtcCwKKwl2YWxp ZF90aWwgdGltZXN0YW1wLAorCVBFUklPRCBGT1IgdmFsaWRfYXQgKHZhbGlkX2Zyb20sIHZh bGlkX3RpbCksCisgIGlkMiBpbnQ4cmFuZ2UsCisgIG5hbWUgVEVYVCwKKyAgQ09OU1RSQUlO VCB3aXRob3V0X292ZXJsYXBzX3Rlc3QyX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQg V0lUSE9VVCBPVkVSTEFQUyksCisgIENPTlNUUkFJTlQgd2l0aG91dF9vdmVybGFwc190ZXN0 Ml91bmlxIFVOSVFVRSAoaWQyLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0lO U0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdDIgKGlkLCB2YWxpZF9mcm9tLCB2YWxp ZF90aWwsIGlkMiwgbmFtZSkKKyAgVkFMVUVTCisgICgnWzEsMV0nLCAnMjAwMC0wMS0wMScs ICcyMDEwLTAxLTAxJywgJ1s3LDddJywgJ2ZvbycpLAorICAoJ1syLDJdJywgJzIwMDAtMDEt MDEnLCAnMjAxMC0wMS0wMScsICdbOSw5XScsICdiYXInKQorOworVVBEQVRFIHdpdGhvdXRf b3ZlcmxhcHNfdGVzdDIgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAwMC0wNS0w MScgVE8gJzIwMDAtMDctMDEnCisgIFNFVCBuYW1lID0gbmFtZSB8fCAnMSc7CitVUERBVEUg d2l0aG91dF9vdmVybGFwc190ZXN0MiBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcy MDAwLTA0LTAxJyBUTyAnMjAwMC0wNi0wMScKKyAgU0VUIG5hbWUgPSBuYW1lIHx8ICcyJwor ICBXSEVSRSBpZCA9ICdbMiwyXSc7CitTRUxFQ1QgKiBGUk9NIHdpdGhvdXRfb3ZlcmxhcHNf dGVzdDIgT1JERVIgQlkgaWQsIHZhbGlkX2Zyb20sIHZhbGlkX3RpbDsKKy0tIGNvbmZsaWN0 aW5nIGlkIG9ubHk6CitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QyIChpZCwg dmFsaWRfZnJvbSwgdmFsaWRfdGlsLCBpZDIsIG5hbWUpCisgIFZBTFVFUworICAoJ1sxLDFd JywgJzIwMDUtMDEtMDEnLCAnMjAwNi0wMS0wMScsICdbOCw4XScsICdmb28zJyk7CistLSBj b25mbGljdGluZyBpZDIgb25seToKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVz dDIgKGlkLCB2YWxpZF9mcm9tLCB2YWxpZF90aWwsIGlkMiwgbmFtZSkKKyAgVkFMVUVTCisg ICgnWzMsM10nLCAnMjAwNS0wMS0wMScsICcyMDEwLTAxLTAxJywgJ1s5LDldJywgJ2JhcjMn KQorOworRFJPUCBUQUJMRSB3aXRob3V0X292ZXJsYXBzX3Rlc3QyOworCistLQorLS0gdGVz dCBjaGFuZ2luZyB0aGUgUEsncyBkZXBlbmRlbmNpZXMKKy0tCisKK0NSRUFURSBUQUJMRSB3 aXRob3V0X292ZXJsYXBzX3Rlc3QyICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNy YW5nZSwKKwlDT05TVFJBSU5UIHdpdGhvdXRfb3ZlcmxhcHMyX3BrIFBSSU1BUlkgS0VZIChp ZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CisKK0FMVEVSIFRBQkxFIHdpdGhv dXRfb3ZlcmxhcHNfdGVzdDIgQUxURVIgQ09MVU1OIHZhbGlkX2F0IERST1AgTk9UIE5VTEw7 CitBTFRFUiBUQUJMRSB3aXRob3V0X292ZXJsYXBzX3Rlc3QyIEFMVEVSIENPTFVNTiB2YWxp ZF9hdCBUWVBFIHRzdHpyYW5nZSBVU0lORyB0c3R6cmFuZ2UobG93ZXIodmFsaWRfYXQpLCB1 cHBlcih2YWxpZF9hdCkpOworQUxURVIgVEFCTEUgd2l0aG91dF9vdmVybGFwc190ZXN0MiBS RU5BTUUgQ09MVU1OIHZhbGlkX2F0IFRPIHZhbGlkX3RocnU7CitBTFRFUiBUQUJMRSB3aXRo b3V0X292ZXJsYXBzX3Rlc3QyIERST1AgQ09MVU1OIHZhbGlkX3RocnU7CitEUk9QIFRBQkxF IHdpdGhvdXRfb3ZlcmxhcHNfdGVzdDI7CisKKy0tCistLSB0ZXN0IFBBUlRJVElPTiBCWSBm b3IgcmFuZ2VzCistLQorCitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWQgKAor CWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCBkYXRlcmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1w b3JhbF9wYXJpdGlvbmVkX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBP VkVSTEFQUykKKykgUEFSVElUSU9OIEJZIExJU1QgKGlkKTsKKy0tIFRPRE86IGF0dGFjaCBz b21lIHBhcnRpdGlvbnMsIGluc2VydCBpbnRvIHRoZW0sIHVwZGF0ZSB0aGVtIHdpdGggYW5k IHdpdGhvdXQgRk9SIFBPUlRJT04gT0YsIGRlbGV0ZSB0aGVtIHRoZSBzYW1lIHdheS4KKwor LS0KKy0tIHRlc3QgUEFSVElUSU9OIEJZIGZvciBQRVJJT0RTCistLQorCitDUkVBVEUgVEFC TEUgdGVtcG9yYWxfcGFydGl0aW9uZWQgKAorICBpZCBpbnQ0cmFuZ2UsCisgIHZhbGlkX2Zy b20gVElNRVNUQU1QLAorICB2YWxpZF90aWwgVElNRVNUQU1QLAorICBQRVJJT0QgRk9SIHZh bGlkX2F0ICh2YWxpZF9mcm9tLCB2YWxpZF90aWwpLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxf cGFyaXRpb25lZF9wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxB UFMpCispIFBBUlRJVElPTiBCWSBMSVNUIChpZCk7CistLSBUT0RPOiBhdHRhY2ggc29tZSBw YXJ0aXRpb25zLCBpbnNlcnQgaW50byB0aGVtLCB1cGRhdGUgdGhlbSB3aXRoIGFuZCB3aXRo b3V0IEZPUiBQT1JUSU9OIE9GLCBkZWxldGUgdGhlbSB0aGUgc2FtZSB3YXkuCi0tIAoyLjI1 LjEKCg== --------------xLmCyd89q18NiaElblWAsYVm Content-Type: text/x-patch; charset=UTF-8; name="v11-0001-Add-PERIODs.patch" Content-Disposition: attachment; filename="v11-0001-Add-PERIODs.patch" Content-Transfer-Encoding: base64 RnJvbSBiNjQ4NDZmYjZhNWU3MTE4NWQ2YzA4ZmM0NzYxZGFmODZhZTE1NzlmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IFNhdCwgOSBKYW4gMjAyMSAyMTo1OTo0MyAtMDgw MApTdWJqZWN0OiBbUEFUQ0ggdjExIDEvNF0gQWRkIFBFUklPRHMKCi0gQWRkZWQgcGFyc2lu ZyBmb3IgU1FMOjIwMTEgc3ludGF4IHRvIGRlZmluZSBhbiBhcHBsaWNhdGlvbi10aW1lIFBF UklPRCBvbiBhCiAgdGFibGUgKGluIGJvdGggQ1JFQVRFIFRBQkxFIGFuZCBBTFRFUiBUQUJM RSkuIE1ha2Ugc3VyZSB3ZSBjcmVhdGUgdGhlIFBFUklPRAogIGFmdGVyIGNvbHVtbnMgYXJl IGtub3duIChzaW5jZSBQRVJJT0RzIGNhbiByZWZlciB0byB0aGVtKSBidXQgYmVmb3JlCiAg Y29uc3RyYWludHMgYXJlIGhhbmRsZWQgKHNpbmNlIFBFUklPRHMgY2FuIGFwcGVhciBpbiB0 aGVtKS4KLSBBZGRlZCBBTFRFUiBUQUJMRSBEUk9QIHN1cHBvcnQgZm9yIFBFUklPRHMuCi0g Q3JlYXRlZCBwb3N0Z3Jlcy5wZ19wZXJpb2QgdGFibGUuCi0gQ3JlYXRlZCBpbmZvcm1hdGlv bl9zY2hlbWEucGVyaW9kcyB2aWV3LgotIEFkZGVkIHBnX2R1bXAgc3VwcG9ydC4KLSBBZGRl ZCB0ZXN0cyBhbmQgZG9jdW1lbnRhdGlvbi4KLSBBdXRvbWF0aWNhbGx5IGRlZmluZSBhIGNv bnN0cmFpbnQgZm9yIGVhY2ggUEVSSU9EIHJlcXVpcmluZyB0aGUgc3RhcnQgY29sdW1uCiAg dG8gYmUgbGVzcyB0aGFuIHRoZSBlbmQgY29sdW1uLgotIFdoZW4gY3JlYXRpbmcgYSBQRVJJ T0QsIGNob29zZSBhbiBhcHByb3ByaWF0ZSByYW5nZSB0eXBlIHdlIGNhbiB1c2UgdG8KICBp bXBsZW1lbnQgUEVSSU9ELXJlbGF0ZWQgb3BlcmF0aW9ucy4gWW91IGNhbiBjaG9vc2Ugb25l IGV4cGxpY2l0bHkgaWYgdGhlcmUKICBpcyBhbWJpZ3VpdHkgKGR1ZSB0byBtdWx0aXBsZSBy YW5nZSB0eXBlcyBjcmVhdGVkIG92ZXIgdGhlIHNhbWUgYmFzZSB0eXBlKS4KLS0tCiBkb2Mv c3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCAgICAgICAgICAgICAgICAgfCAxMTIgKysrKwogZG9j L3NyYy9zZ21sL2RkbC5zZ21sICAgICAgICAgICAgICAgICAgICAgIHwgIDU4ICsrCiBkb2Mv c3JjL3NnbWwvaW5mb3JtYXRpb25fc2NoZW1hLnNnbWwgICAgICAgfCAgNjMgKysrCiBkb2Mv c3JjL3NnbWwvcmVmL2FsdGVyX3RhYmxlLnNnbWwgICAgICAgICAgfCAgMjUgKwogZG9jL3Ny Yy9zZ21sL3JlZi9jb21tZW50LnNnbWwgICAgICAgICAgICAgIHwgICAyICsKIGRvYy9zcmMv c2dtbC9yZWYvY3JlYXRlX3RhYmxlLnNnbWwgICAgICAgICB8ICA0MCArKwogc3JjL2JhY2tl bmQvY2F0YWxvZy9NYWtlZmlsZSAgICAgICAgICAgICAgIHwgICAzICstCiBzcmMvYmFja2Vu ZC9jYXRhbG9nL2FjbGNoay5jICAgICAgICAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQv Y2F0YWxvZy9kZXBlbmRlbmN5LmMgICAgICAgICAgIHwgICA5ICsKIHNyYy9iYWNrZW5kL2Nh dGFsb2cvaGVhcC5jICAgICAgICAgICAgICAgICB8ICA2NSArKysKIHNyYy9iYWNrZW5kL2Nh dGFsb2cvaW5mb3JtYXRpb25fc2NoZW1hLnNxbCB8ICAyNCArLQogc3JjL2JhY2tlbmQvY2F0 YWxvZy9vYmplY3RhZGRyZXNzLmMgICAgICAgIHwgIDczICsrKwogc3JjL2JhY2tlbmQvY2F0 YWxvZy9wZ19wZXJpb2QuYyAgICAgICAgICAgIHwgMTA1ICsrKysKIHNyYy9iYWNrZW5kL2Nh dGFsb2cvc3FsX2ZlYXR1cmVzLnR4dCAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvY29t bWFuZHMvYWx0ZXIuYyAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2NvbW1h bmRzL2NvbW1lbnQuYyAgICAgICAgICAgICB8ICAxMCArCiBzcmMvYmFja2VuZC9jb21tYW5k cy9kcm9wY21kcy5jICAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvY29tbWFuZHMv ZXZlbnRfdHJpZ2dlci5jICAgICAgIHwgICA0ICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3Nl Y2xhYmVsLmMgICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9jb21tYW5kcy90YWJs ZWNtZHMuYyAgICAgICAgICAgfCA1ODYgKysrKysrKysrKysrKysrKysrKystCiBzcmMvYmFj a2VuZC9jb21tYW5kcy92aWV3LmMgICAgICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9iYWNr ZW5kL25vZGVzL25vZGVGdW5jcy5jICAgICAgICAgICAgICB8ICAgMyArCiBzcmMvYmFja2Vu ZC9wYXJzZXIvZ3JhbS55ICAgICAgICAgICAgICAgICAgfCAgNDcgKy0KIHNyYy9iYWNrZW5k L3BhcnNlci9wYXJzZV91dGlsY21kLmMgICAgICAgICB8IDEyMiArKysrKwogc3JjL2JhY2tl bmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMgICAgICAgIHwgIDg3ICsrKwogc3JjL2JhY2tl bmQvdXRpbHMvY2FjaGUvc3lzY2FjaGUuYyAgICAgICAgIHwgIDIxICsKIHNyYy9iaW4vcGdf ZHVtcC9wZ19iYWNrdXBfYXJjaGl2ZXIuYyAgICAgICB8ICAgMSArCiBzcmMvYmluL3BnX2R1 bXAvcGdfZHVtcC5jICAgICAgICAgICAgICAgICAgfCAxNzMgKysrKystCiBzcmMvYmluL3Bn X2R1bXAvcGdfZHVtcC5oICAgICAgICAgICAgICAgICAgfCAgMTQgKwogc3JjL2Jpbi9wZ19k dW1wL3BnX2R1bXBfc29ydC5jICAgICAgICAgICAgIHwgICA3ICsKIHNyYy9iaW4vcHNxbC9k ZXNjcmliZS5jICAgICAgICAgICAgICAgICAgICB8ICAzNCArKwogc3JjL2luY2x1ZGUvY2F0 YWxvZy9kZXBlbmRlbmN5LmggICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL2NhdGFs b2cvaGVhcC5oICAgICAgICAgICAgICAgICB8ICAgNCArCiBzcmMvaW5jbHVkZS9jYXRhbG9n L3BnX2luZGV4LmggICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9pbmNsdWRlL2NhdGFsb2cv cGdfcGVyaW9kLmggICAgICAgICAgICB8ICA1MyArKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19yYW5nZS5oICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL2NvbW1hbmRzL3Rh YmxlY21kcy5oICAgICAgICAgICB8ICAgNCArLQogc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vu b2Rlcy5oICAgICAgICAgICAgIHwgIDMxICstCiBzcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0 LmggICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX3V0 aWxjbWQuaCAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5o ICAgICAgICAgICAgICB8ICAgMyArCiBzcmMvaW5jbHVkZS91dGlscy9zeXNjYWNoZS5oICAg ICAgICAgICAgICAgfCAgIDMgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wZXJpb2Rz Lm91dCAgICAgIHwgMTQ5ICsrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hl ZHVsZSAgICAgICAgIHwgICAyICstCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9wZXJpb2RzLnNx bCAgICAgICAgICAgfCAgOTkgKysrKwogNDUgZmlsZXMgY2hhbmdlZCwgMjAxMSBpbnNlcnRp b25zKCspLCA0MiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmFja2Vu ZC9jYXRhbG9nL3BnX3BlcmlvZC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19wZXJpb2QuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvcGVyaW9kcy5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9y ZWdyZXNzL3NxbC9wZXJpb2RzLnNxbAoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jYXRh bG9ncy5zZ21sIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKaW5kZXggNTI0MDg0MDU1 Mi4uOWVlZmYwODc5NyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwK KysrIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKQEAgLTIzMCw2ICsyMzAsMTEgQEAK ICAgICAgIDxlbnRyeT5pbmZvcm1hdGlvbiBhYm91dCBwYXJ0aXRpb24ga2V5IG9mIHRhYmxl czwvZW50cnk+CiAgICAgIDwvcm93PgogCisgICAgIDxyb3c+CisgICAgICA8ZW50cnk+PGxp bmsgbGlua2VuZD0iY2F0YWxvZy1wZy1wZXJpb2QiPjxzdHJ1Y3RuYW1lPnBnX3BlcmlvZDwv c3RydWN0bmFtZT48L2xpbms+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT5wZXJpb2RzPC9lbnRy eT4KKyAgICAgPC9yb3c+CisKICAgICAgPHJvdz4KICAgICAgIDxlbnRyeT48bGluayBsaW5r ZW5kPSJjYXRhbG9nLXBnLXBvbGljeSI+PHN0cnVjdG5hbWU+cGdfcG9saWN5PC9zdHJ1Y3Ru YW1lPjwvbGluaz48L2VudHJ5PgogICAgICAgPGVudHJ5PnJvdy1zZWN1cml0eSBwb2xpY2ll czwvZW50cnk+CkBAIC01NzEwLDYgKzU3MTUsMTEzIEBAIFNDUkFNLVNIQS0yNTYkPHJlcGxh Y2VhYmxlPiZsdDtpdGVyYXRpb24gY291bnQmZ3Q7PC9yZXBsYWNlYWJsZT46PHJlcGxhY2Vh YmxlPiZsCiAgICAgICAgYXJlIHNpbXBsZSByZWZlcmVuY2VzLgogICAgICAgPC9wYXJhPjwv ZW50cnk+CiAgICAgIDwvcm93PgorCisgICAgPC90Ym9keT4KKyAgIDwvdGdyb3VwPgorICA8 L3RhYmxlPgorIDwvc2VjdDE+CisKKworIDxzZWN0MSBpZD0iY2F0YWxvZy1wZy1wZXJpb2Qi PgorICA8dGl0bGU+PHN0cnVjdG5hbWU+cGdfcGVyaW9kPC9zdHJ1Y3RuYW1lPjwvdGl0bGU+ CisKKyAgPGluZGV4dGVybSB6b25lPSJjYXRhbG9nLXBnLXBlcmlvZCI+CisgICA8cHJpbWFy eT5wZ19wZXJpb2Q8L3ByaW1hcnk+CisgIDwvaW5kZXh0ZXJtPgorCisgIDxwYXJhPgorICAg VGhlIGNhdGFsb2cgPHN0cnVjdG5hbWU+cGdfcGVyaW9kPC9zdHJ1Y3RuYW1lPiBzdG9yZXMK KyAgIGluZm9ybWF0aW9uIGFib3V0IHN5c3RlbSBhbmQgYXBwbGljYXRpb24gdGltZSBwZXJp b2RzLgorICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICBQZXJpb2RzIGFyZSBkZXNjcmliZWQg aW4gPHhyZWYgbGlua2VuZD0iZGRsLXBlcmlvZHMiLz4uCisgIDwvcGFyYT4KKworICA8dGFi bGU+CisgICA8dGl0bGU+PHN0cnVjdG5hbWU+cGdfcGVyaW9kPC9zdHJ1Y3RuYW1lPiBDb2x1 bW5zPC90aXRsZT4KKworICAgPHRncm91cCBjb2xzPSIxIj4KKyAgICA8dGhlYWQ+CisgICAg IDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEg cm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIENvbHVtbiBUeXBlCisgICAgICA8 L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBEZXNjcmlwdGlvbgorICAgICAgPC9wYXJh PjwvZW50cnk+CisgICAgIDwvcm93PgorICAgIDwvdGhlYWQ+CisKKyAgICA8dGJvZHk+Cisg ICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBh cmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5vaWQ8 L3N0cnVjdGZpZWxkPiA8dHlwZT5vaWQ8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8 cGFyYT4KKyAgICAgICBSb3cgaWRlbnRpZmllcgorICAgICAgPC9wYXJhPjwvZW50cnk+Cisg ICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190 YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxz dHJ1Y3RmaWVsZD5wZXJuYW1lPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+dGV4dDwvdHlwZT4KKyAg ICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFBlcmlvZCBuYW1lCisgICAgICA8 L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRy eSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5p dGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPnBlcnJlbGlkPC9zdHJ1Y3RmaWVsZD4gPHR5 cGU+b2lkPC90eXBlPgorICAgICAgIChyZWZlcmVuY2VzIDxsaW5rIGxpbmtlbmQ9ImNhdGFs b2ctcGctY2xhc3MiPjxzdHJ1Y3RuYW1lPnBnX2NsYXNzPC9zdHJ1Y3RuYW1lPjwvbGluaz4u PHN0cnVjdGZpZWxkPm9pZDwvc3RydWN0ZmllbGQ+KQorICAgICAgPC9wYXJhPgorICAgICAg PHBhcmE+CisgICAgICAgVGhlIHRhYmxlIHRoaXMgcGVyaW9kIGJlbG9uZ3MgdG8KKyAgICAg IDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVu dHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZp bml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+cGVyc3RhcnQ8L3N0cnVjdGZpZWxkPiA8 dHlwZT5pbnQyPC90eXBlPgorICAgICAgIChyZWZlcmVuY2VzIDxsaW5rIGxpbmtlbmQ9ImNh dGFsb2ctcGctYXR0cmlidXRlIj48c3RydWN0bmFtZT5wZ19hdHRyaWJ1dGU8L3N0cnVjdG5h bWU+PC9saW5rPi48c3RydWN0ZmllbGQ+YXR0bnVtPC9zdHJ1Y3RmaWVsZD4pCisgICAgICA8 L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBUaGUgbnVtYmVyIG9mIHRoZSBzdGFydCBj b2x1bW4KKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93 PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9 ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+cGVyZW5kPC9zdHJ1 Y3RmaWVsZD4gPHR5cGU+aW50MjwvdHlwZT4KKyAgICAgICAocmVmZXJlbmNlcyA8bGluayBs aW5rZW5kPSJjYXRhbG9nLXBnLWF0dHJpYnV0ZSI+PHN0cnVjdG5hbWU+cGdfYXR0cmlidXRl PC9zdHJ1Y3RuYW1lPjwvbGluaz4uPHN0cnVjdGZpZWxkPmF0dG51bTwvc3RydWN0ZmllbGQ+ KQorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgVGhlIG51bWJlciBvZiB0 aGUgZW5kIGNvbHVtbgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisg ICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBh cmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5wZXJy bmd0eXBlPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+b2lkPC90eXBlPgorICAgICAgIChyZWZlcmVu Y2VzIDxsaW5rIGxpbmtlbmQ9ImNhdGFsb2ctcGctdHlwZSI+PHN0cnVjdG5hbWU+cGdfdHlw ZTwvc3RydWN0bmFtZT48L2xpbms+LjxzdHJ1Y3RmaWVsZD5vaWQ8L3N0cnVjdGZpZWxkPikK KyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRoZSBPSUQgb2YgdGhlIHJh bmdlIHR5cGUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgcGVyaW9kCisgICAgICA8L3BhcmE+PC9l bnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJj YXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+Cisg ICAgICAgPHN0cnVjdGZpZWxkPnBlcmNvbnN0cmFpbnQ8L3N0cnVjdGZpZWxkPiA8dHlwZT5v aWQ8L3R5cGU+CisgICAgICAgKHJlZmVyZW5jZXMgPGxpbmsgbGlua2VuZD0iY2F0YWxvZy1w Zy1jb25zdHJhaW50Ij48c3RydWN0bmFtZT5wZ19jb25zdHJhaW50PC9zdHJ1Y3RuYW1lPjwv bGluaz4uPHN0cnVjdGZpZWxkPm9pZDwvc3RydWN0ZmllbGQ+KQorICAgICAgPC9wYXJhPgor ICAgICAgPHBhcmE+CisgICAgICAgVGhlIE9JRCBvZiB0aGUgcGVyaW9kJ3MgPGxpdGVyYWw+ Q0hFQ0s8L2xpdGVyYWw+IGNvbnN0cmFpbnQKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAg ICA8L3Jvdz4KKwogICAgIDwvdGJvZHk+CiAgICA8L3Rncm91cD4KICAgPC90YWJsZT4KZGlm ZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9kZGwuc2dtbCBiL2RvYy9zcmMvc2dtbC9kZGwuc2dt bAppbmRleCA0NThiODljMGNiLi5lNzIyZTUzYjJmIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3Nn bWwvZGRsLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2RkbC5zZ21sCkBAIC0xMjM4LDYgKzEy MzgsNjQgQEAgQ1JFQVRFIFRBQkxFIGNpcmNsZXMgKAogICA8L3NlY3QyPgogIDwvc2VjdDE+ CiAKKyA8c2VjdDEgaWQ9ImRkbC1wZXJpb2RzIj4KKyAgPHRpdGxlPlBlcmlvZHM8L3RpdGxl PgorCisgIDxwYXJhPgorICAgUGVyaW9kcyBhcmUgZGVmaW5pdGlvbnMgb24gYSB0YWJsZSB0 aGF0IGFzc29jaWF0ZSBhIHBlcmlvZCBuYW1lIHdpdGggYSBzdGFydAorICAgY29sdW1uIGFu ZCBhbiBlbmQgY29sdW1uLiAgQm90aCBjb2x1bW5zIG11c3QgYmUgb2YgZXhhY3RseSB0aGUg c2FtZSB0eXBlCisgICAoaW5jbHVkaW5nIGNvbGxhdGlvbiksIGhhdmUgYSBidHJlZSBvcGVy YXRvciBjbGFzcywgYW5kIHRoZSBzdGFydCBjb2x1bW4KKyAgIHZhbHVlIG11c3QgYmUgc3Ry aWN0bHkgbGVzcyB0aGFuIHRoZSBlbmQgY29sdW1uIHZhbHVlLgorICA8L3BhcmE+CisKKyAg PHBhcmE+CisgICBUaGVyZSBhcmUgdHdvIHR5cGVzIG9mIHBlcmlvZHM6IGFwcGxpY2F0aW9u IGFuZCBzeXN0ZW0uICBTeXN0ZW0gcGVyaW9kcyBhcmUKKyAgIGRpc3Rpbmd1aXNoZWQgYnkg dGhlaXIgbmFtZSB3aGljaCBtdXN0IGJlIDxsaXRlcmFsPlNZU1RFTV9USU1FPC9saXRlcmFs Pi4gIEFueQorICAgb3RoZXIgbmFtZSBpcyBhbiBhcHBsaWNhdGlvbiBwZXJpb2QuCisgIDwv cGFyYT4KKworICA8c2VjdDIgaWQ9ImRkbC1wZXJpb2RzLWFwcGxpY2F0aW9uLXBlcmlvZHMi PgorICA8dGl0bGU+QXBwbGljYXRpb24gUGVyaW9kczwvdGl0bGU+CisKKyAgIDxpbmRleHRl cm0+CisgICAgPHByaW1hcnk+cGVyaW9kPC9wcmltYXJ5PgorICAgIDxzZWNvbmRhcnk+YXBw bGljYXRpb248L3NlY29uZGFyeT4KKyAgIDwvaW5kZXh0ZXJtPgorCisgICA8cGFyYT4KKyAg ICBBcHBsaWNhdGlvbiBwZXJpb2RzIGFyZSBkZWZpbmVkIG9uIGEgdGFibGUgdXNpbmcgdGhl IGZvbGxvd2luZyBzeW50YXg6CisgICA8L3BhcmE+CisKKzxwcm9ncmFtbGlzdGluZz4KK0NS RUFURSBUQUJMRSBiaWxsaW5nX2FkZHJlc3NlcyAoCisgIGN1c3RvbWVyX2lkIGludGVnZXIs CisgIGFkZHJlc3NfaWQgaW50ZWdlciwKKyAgdmFsaWRfZnJvbSBkYXRlLAorICB2YWxpZF90 byBkYXRlLAorICA8ZW1waGFzaXM+UEVSSU9EIEZPUiB2YWxpZGl0eSAodmFsaWRfZnJvbSwg dmFsaWRfdG8pPC9lbXBoYXNpcz4KKyk7Cis8L3Byb2dyYW1saXN0aW5nPgorCisgICA8cGFy YT4KKyAgICBBcHBsaWNhdGlvbiBwZXJpb2RzIGNhbiBiZSB1c2VkIHRvIGRlZmluZSB0ZW1w b3JhbCBwcmltYXJ5IGFuZCBmb3JlaWduIGtleXMuCisgICAgQW55IHRhYmxlIHdpdGggYSB0 ZW1wb3JhbCBwcmltYXJ5IGtleSBpcyBhIHRlbXBvcmFsIHRhYmxlIGFuZCBzdXBwb3J0cyB0 ZW1wb3JhbCB1cGRhdGUgYW5kIGRlbGV0ZSBjb21tYW5kcy4KKyAgIDwvcGFyYT4KKyAgPC9z ZWN0Mj4KKworICA8c2VjdDIgaWQ9ImRkbC1wZXJpb2RzLXN5c3RlbS1wZXJpb2RzIj4KKyAg IDx0aXRsZT5TeXN0ZW0gUGVyaW9kczwvdGl0bGU+CisKKyAgIDxpbmRleHRlcm0+CisgICAg PHByaW1hcnk+cGVyaW9kPC9wcmltYXJ5PgorICAgIDxzZWNvbmRhcnk+c3lzdGVtPC9zZWNv bmRhcnk+CisgICA8L2luZGV4dGVybT4KKworICAgPHBhcmE+CisgICAgUGVyaW9kcyBmb3Ig PGxpdGVyYWw+U1lTVEVNX1RJTUU8L2xpdGVyYWw+IGFyZSBjdXJyZW50bHkgbm90IGltcGxl bWVudGVkLgorICAgPC9wYXJhPgorICA8L3NlY3QyPgorIDwvc2VjdDE+CisKICA8c2VjdDEg aWQ9ImRkbC1zeXN0ZW0tY29sdW1ucyI+CiAgIDx0aXRsZT5TeXN0ZW0gQ29sdW1uczwvdGl0 bGU+CiAKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9pbmZvcm1hdGlvbl9zY2hlbWEuc2dt bCBiL2RvYy9zcmMvc2dtbC9pbmZvcm1hdGlvbl9zY2hlbWEuc2dtbAppbmRleCAzNTBjNzVi YzMxLi5lZTlmYWE4MDc5IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvaW5mb3JtYXRpb25f c2NoZW1hLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2luZm9ybWF0aW9uX3NjaGVtYS5zZ21s CkBAIC00MTcxLDYgKzQxNzEsNjkgQEAgT1JERVIgQlkgYy5vcmRpbmFsX3Bvc2l0aW9uOwog ICA8L3RhYmxlPgogIDwvc2VjdDE+CiAKKyA8c2VjdDEgaWQ9ImluZm9zY2hlbWEtcGVyaW9k cyI+CisgIDx0aXRsZT48bGl0ZXJhbD5wZXJpb2RzPC9saXRlcmFsPjwvdGl0bGU+CisKKyAg PHBhcmE+CisgICBUaGUgdmlldyA8bGl0ZXJhbD5wYXJhbWV0ZXJzPC9saXRlcmFsPiBjb250 YWlucyBpbmZvcm1hdGlvbiBhYm91dCB0aGUKKyAgIHBlcmlvZHMgb2YgYWxsIHRhYmxlcyBp biB0aGUgY3VycmVudCBkYXRhYmFzZS4gIFRoZSBzdGFydCBhbmQgZW5kIGNvbHVtbgorICAg bmFtZXMgYXJlIG9ubHkgc2hvd24gaWYgdGhlIGN1cnJlbnQgdXNlciBoYXMgYWNjZXNzIHRv IHRoZW0gKGJ5IHdheSBvZiBiZWluZworICAgdGhlIG93bmVyIG9yIGhhdmluZyBzb21lIHBy aXZpbGVnZSkuCisgIDwvcGFyYT4KKworICA8dGFibGU+CisgICA8dGl0bGU+PGxpdGVyYWw+ cGVyaW9kczwvbGl0ZXJhbD4gQ29sdW1uczwvdGl0bGU+CisKKyAgIDx0Z3JvdXAgY29scz0i MyI+CisgICAgPHRoZWFkPgorICAgICA8cm93PgorICAgICAgPGVudHJ5Pk5hbWU8L2VudHJ5 PgorICAgICAgPGVudHJ5PkRhdGEgVHlwZTwvZW50cnk+CisgICAgICA8ZW50cnk+RGVzY3Jp cHRpb248L2VudHJ5PgorICAgICA8L3Jvdz4KKyAgICA8L3RoZWFkPgorCisgICAgPHRib2R5 PgorICAgICA8cm93PgorICAgICAgPGVudHJ5PjxsaXRlcmFsPnRhYmxlX2NhdGFsb2c8L2xp dGVyYWw+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT48dHlwZT5zcWxfaWRlbnRpZmllcjwvdHlw ZT48L2VudHJ5PgorICAgICAgPGVudHJ5Pk5hbWUgb2YgdGhlIGRhdGFiYXNlIGNvbnRhaW5p bmcgdGhlIHBlcmlvZCAoYWx3YXlzIHRoZSBjdXJyZW50IGRhdGFiYXNlKTwvZW50cnk+Cisg ICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnk+PGxpdGVyYWw+dGFibGVf c2NoZW1hPC9saXRlcmFsPjwvZW50cnk+CisgICAgICA8ZW50cnk+PHR5cGU+c3FsX2lkZW50 aWZpZXI8L3R5cGU+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT5OYW1lIG9mIHRoZSBzY2hlbWEg Y29udGFpbmluZyB0aGUgcGVyaW9kPC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJv dz4KKyAgICAgIDxlbnRyeT48bGl0ZXJhbD50YWJsZV9uYW1lPC9saXRlcmFsPjwvZW50cnk+ CisgICAgICA8ZW50cnk+PHR5cGU+c3FsX2lkZW50aWZpZXI8L3R5cGU+PC9lbnRyeT4KKyAg ICAgIDxlbnRyeT5OYW1lIG9mIHRoZSB0YWJsZSBjb250YWluaW5nIHRoZSBwZXJpb2Q8L2Vu dHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5PjxsaXRlcmFs PnBlcmlvZF9uYW1lPC9saXRlcmFsPjwvZW50cnk+CisgICAgICA8ZW50cnk+PHR5cGU+c3Fs X2lkZW50aWZpZXI8L3R5cGU+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT5OYW1lIG9mIHRoZSBw ZXJpb2Q8L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5 PjxsaXRlcmFsPnN0YXJ0X2NvbHVtbl9uYW1lPC9saXRlcmFsPjwvZW50cnk+CisgICAgICA8 ZW50cnk+PHR5cGU+c3FsX2lkZW50aWZpZXI8L3R5cGU+PC9lbnRyeT4KKyAgICAgIDxlbnRy eT5OYW1lIG9mIHRoZSBzdGFydCBjb2x1bW4gZm9yIHRoZSBwZXJpb2Q8L2VudHJ5PgorICAg ICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5PjxsaXRlcmFsPmVuZF9jb2x1 bW5fbmFtZTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgPGVudHJ5Pjx0eXBlPnNxbF9pZGVu dGlmaWVyPC90eXBlPjwvZW50cnk+CisgICAgICA8ZW50cnk+TmFtZSBvZiB0aGUgZW5kIGNv bHVtbiBmb3IgdGhlIHBlcmlvZDwvZW50cnk+CisgICAgIDwvcm93PgorICAgIDwvdGJvZHk+ CisgICA8L3Rncm91cD4KKyAgPC90YWJsZT4KKyA8L3NlY3QxPgorCiAgPHNlY3QxIGlkPSJp bmZvc2NoZW1hLXJlZmVyZW50aWFsLWNvbnN0cmFpbnRzIj4KICAgPHRpdGxlPjxsaXRlcmFs PnJlZmVyZW50aWFsX2NvbnN0cmFpbnRzPC9saXRlcmFsPjwvdGl0bGU+CiAKZGlmZiAtLWdp dCBhL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfdGFibGUuc2dtbCBiL2RvYy9zcmMvc2dtbC9y ZWYvYWx0ZXJfdGFibGUuc2dtbAppbmRleCBkNGQ5M2VlYjdjLi40ODdmMDlmODhhIDEwMDY0 NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3RhYmxlLnNnbWwKKysrIGIvZG9jL3Ny Yy9zZ21sL3JlZi9hbHRlcl90YWJsZS5zZ21sCkBAIC02MCw2ICs2MCw4IEBAIEFMVEVSIFRB QkxFIFsgSUYgRVhJU1RTIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8 L3JlcGxhY2VhYmxlPgogICAgIEFMVEVSIENPTlNUUkFJTlQgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPmNvbnN0cmFpbnRfbmFtZTwvcmVwbGFjZWFibGU+IFsgREVGRVJSQUJM RSB8IE5PVCBERUZFUlJBQkxFIF0gWyBJTklUSUFMTFkgREVGRVJSRUQgfCBJTklUSUFMTFkg SU1NRURJQVRFIF0KICAgICBWQUxJREFURSBDT05TVFJBSU5UIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5jb25zdHJhaW50X25hbWU8L3JlcGxhY2VhYmxlPgogICAgIERST1Ag Q09OU1RSQUlOVCBbIElGIEVYSVNUUyBdICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+Y29uc3RyYWludF9uYW1lPC9yZXBsYWNlYWJsZT4gWyBSRVNUUklDVCB8IENBU0NBREUg XQorICAgIEFERCBQRVJJT0QgRk9SIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5w ZXJpb2RfbmFtZTwvcmVwbGFjZWFibGU+ICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPnN0YXJ0X2NvbHVtbjwvcmVwbGFjZWFibGU+LCA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+ZW5kX2NvbHVtbjwvcmVwbGFjZWFibGU+ICkgWyBXSVRIICggPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBlcmlvZF9vcHRpb248L3JlcGxhY2VhYmxlPiA9IDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj52YWx1ZTwvcmVwbGFjZWFibGU+IFssIC4u LiBdICkgXQorICAgIERST1AgUEVSSU9EIEZPUiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+cGVyaW9kX25hbWU8L3JlcGxhY2VhYmxlPiBbIFJFU1RSSUNUIHwgQ0FTQ0FERSBd CiAgICAgRElTQUJMRSBUUklHR0VSIFsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PnRyaWdnZXJfbmFtZTwvcmVwbGFjZWFibGU+IHwgQUxMIHwgVVNFUiBdCiAgICAgRU5BQkxF IFRSSUdHRVIgWyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dHJpZ2dlcl9uYW1l PC9yZXBsYWNlYWJsZT4gfCBBTEwgfCBVU0VSIF0KICAgICBFTkFCTEUgUkVQTElDQSBUUklH R0VSIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50cmlnZ2VyX25hbWU8L3JlcGxh Y2VhYmxlPgpAQCAtNTcwLDYgKzU3MiwyOSBAQCBXSVRIICggTU9EVUxVUyA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+bnVtZXJpY19saXRlcmFsPC9yZXBsYWNlYWJsZT4sIFJF TQogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgPHZhcmxpc3Rl bnRyeSBpZD0ic3FsLWFsdGVydGFibGUtZGVzYy1hZGQtcGVyaW9kIj4KKyAgICA8dGVybT48 bGl0ZXJhbD5BREQgUEVSSU9EIEZPUjwvbGl0ZXJhbD48L3Rlcm0+CisgICAgPGxpc3RpdGVt PgorICAgICA8cGFyYT4KKyAgICAgIFRoaXMgZm9ybSBhZGRzIGEgbmV3IHBlcmlvZCB0byBh IHRhYmxlIHVzaW5nIHRoZSBzYW1lIHN5bnRheCBhcworICAgICAgPHhyZWYgbGlua2VuZD0i c3FsLWNyZWF0ZXRhYmxlIi8+LgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAg IDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxsaXRl cmFsPkRST1AgUEVSSU9EIEZPUjwvbGl0ZXJhbD48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgor ICAgICA8cGFyYT4KKyAgICAgIFRoaXMgZm9ybSBkcm9wcyB0aGUgc3BlY2lmaWVkIHBlcmlv ZCBvbiBhIHRhYmxlLiAgVGhlIHN0YXJ0IGFuZCBlbmQKKyAgICAgIGNvbHVtbnMgd2lsbCBu b3QgYmUgZHJvcHBlZCBieSB0aGlzIGNvbW1hbmQgYnV0IHRoZQorICAgICAgPGxpdGVyYWw+ Q0hFQ0s8L2xpdGVyYWw+IGNvbnN0cmFpbnQgd2lsbCBiZS4gIFlvdSB3aWxsIG5lZWQgdG8g c2F5CisgICAgICA8bGl0ZXJhbD5DQVNDQURFPC9saXRlcmFsPiBpZiBhbnl0aGluZyBvdXRz aWRlIHRoZSB0YWJsZSBkZXBlbmRzIG9uIHRoZQorICAgICAgY29sdW1uLgorICAgICA8L3Bh cmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCiAgICA8dmFybGlz dGVudHJ5IGlkPSJzcWwtYWx0ZXJ0YWJsZS1kZXNjLWRpc2FibGUtZW5hYmxlLXRyaWdnZXIi PgogICAgIDx0ZXJtPjxsaXRlcmFsPkRJU0FCTEU8L2xpdGVyYWw+LzxsaXRlcmFsPkVOQUJM RSBbIFJFUExJQ0EgfCBBTFdBWVMgXSBUUklHR0VSPC9saXRlcmFsPjwvdGVybT4KICAgICA8 bGlzdGl0ZW0+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2NvbW1lbnQuc2dtbCBi L2RvYy9zcmMvc2dtbC9yZWYvY29tbWVudC5zZ21sCmluZGV4IDViNDNjNTZiMTMuLjQ5YzJk Zjk5NDQgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvY29tbWVudC5zZ21sCisrKyBi L2RvYy9zcmMvc2dtbC9yZWYvY29tbWVudC5zZ21sCkBAIC00NCw2ICs0NCw3IEBAIENPTU1F TlQgT04KICAgT1BFUkFUT1IgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm9wZXJh dG9yX25hbWU8L3JlcGxhY2VhYmxlPiAoPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PmxlZnRfdHlwZTwvcmVwbGFjZWFibGU+LCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+cmlnaHRfdHlwZTwvcmVwbGFjZWFibGU+KSB8CiAgIE9QRVJBVE9SIENMQVNTIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5vYmplY3RfbmFtZTwvcmVwbGFjZWFibGU+IFVT SU5HIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5pbmRleF9tZXRob2Q8L3JlcGxh Y2VhYmxlPiB8CiAgIE9QRVJBVE9SIEZBTUlMWSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+b2JqZWN0X25hbWU8L3JlcGxhY2VhYmxlPiBVU0lORyA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+aW5kZXhfbWV0aG9kPC9yZXBsYWNlYWJsZT4gfAorICBQRVJJT0Qg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJlbGF0aW9uX25hbWU8L3JlcGxhY2Vh YmxlPi48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGVyaW9kX25hbWU8L3JlcGxh Y2VhYmxlPiB8CiAgIFBPTElDWSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cG9s aWN5X25hbWU8L3JlcGxhY2VhYmxlPiBPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+IHwKICAgWyBQUk9DRURVUkFMIF0gTEFOR1VB R0UgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm9iamVjdF9uYW1lPC9yZXBsYWNl YWJsZT4gfAogICBQUk9DRURVUkUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBy b2NlZHVyZV9uYW1lPC9yZXBsYWNlYWJsZT4gWyAoIFsgWyA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+YXJnbW9kZTwvcmVwbGFjZWFibGU+IF0gWyA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+YXJnbmFtZTwvcmVwbGFjZWFibGU+IF0gPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPmFyZ3R5cGU8L3JlcGxhY2VhYmxlPiBbLCAuLi5dIF0gKSBdIHwK QEAgLTM0MSw2ICszNDIsNyBAQCBDT01NRU5UIE9OIE9QRVJBVE9SIF4gKHRleHQsIHRleHQp IElTICdQZXJmb3JtcyBpbnRlcnNlY3Rpb24gb2YgdHdvIHRleHRzJzsKIENPTU1FTlQgT04g T1BFUkFUT1IgLSAoTk9ORSwgaW50ZWdlcikgSVMgJ1VuYXJ5IG1pbnVzJzsKIENPTU1FTlQg T04gT1BFUkFUT1IgQ0xBU1MgaW50NG9wcyBVU0lORyBidHJlZSBJUyAnNCBieXRlIGludGVn ZXIgb3BlcmF0b3JzIGZvciBidHJlZXMnOwogQ09NTUVOVCBPTiBPUEVSQVRPUiBGQU1JTFkg aW50ZWdlcl9vcHMgVVNJTkcgYnRyZWUgSVMgJ2FsbCBpbnRlZ2VyIG9wZXJhdG9ycyBmb3Ig YnRyZWVzJzsKK0NPTU1FTlQgT04gUEVSSU9EIG15X3RhYmxlLm15X2NvbHVtbiBJUyAnU2Fs ZXMgcHJvbW90aW9uIHZhbGlkaXR5JzsKIENPTU1FTlQgT04gUE9MSUNZIG15X3BvbGljeSBP TiBteXRhYmxlIElTICdGaWx0ZXIgcm93cyBieSB1c2Vycyc7CiBDT01NRU5UIE9OIFBST0NF RFVSRSBteV9wcm9jIChpbnRlZ2VyLCBpbnRlZ2VyKSBJUyAnUnVucyBhIHJlcG9ydCc7CiBD T01NRU5UIE9OIFBVQkxJQ0FUSU9OIGFsbHRhYmxlcyBJUyAnUHVibGlzaGVzIGFsbCBvcGVy YXRpb25zIG9uIGFsbCB0YWJsZXMnOwpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9j cmVhdGVfdGFibGUuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3RhYmxlLnNnbWwK aW5kZXggMTBlZjY5OWZhYi4uNTNmOWVkNTVhYSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21s L3JlZi9jcmVhdGVfdGFibGUuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90 YWJsZS5zZ21sCkBAIC0yMyw2ICsyMyw3IEBAIFBvc3RncmVTUUwgZG9jdW1lbnRhdGlvbgog PHN5bm9wc2lzPgogQ1JFQVRFIFsgWyBHTE9CQUwgfCBMT0NBTCBdIHsgVEVNUE9SQVJZIHwg VEVNUCB9IHwgVU5MT0dHRUQgXSBUQUJMRSBbIElGIE5PVCBFWElTVFMgXSA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+ICggWwogICB7 IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFi bGU+IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5kYXRhX3R5cGU8L3JlcGxhY2Vh YmxlPiBbIFNUT1JBR0UgeyBQTEFJTiB8IEVYVEVSTkFMIHwgRVhURU5ERUQgfCBNQUlOIHwg REVGQVVMVCB9IF0gWyBDT01QUkVTU0lPTiA8cmVwbGFjZWFibGU+Y29tcHJlc3Npb25fbWV0 aG9kPC9yZXBsYWNlYWJsZT4gXSBbIENPTExBVEUgPHJlcGxhY2VhYmxlPmNvbGxhdGlvbjwv cmVwbGFjZWFibGU+IF0gWyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1u X2NvbnN0cmFpbnQ8L3JlcGxhY2VhYmxlPiBbIC4uLiBdIF0KKyAgICB8IDxyZXBsYWNlYWJs ZT5wZXJpb2RfZGVmaW5pdGlvbjwvcmVwbGFjZWFibGU+CiAgICAgfCA8cmVwbGFjZWFibGU+ dGFibGVfY29uc3RyYWludDwvcmVwbGFjZWFibGU+CiAgICAgfCBMSUtFIDxyZXBsYWNlYWJs ZT5zb3VyY2VfdGFibGU8L3JlcGxhY2VhYmxlPiBbIDxyZXBsYWNlYWJsZT5saWtlX29wdGlv bjwvcmVwbGFjZWFibGU+IC4uLiBdIH0KICAgICBbLCAuLi4gXQpAQCAtMzcsNiArMzgsNyBA QCBDUkVBVEUgWyBbIEdMT0JBTCB8IExPQ0FMIF0geyBURU1QT1JBUlkgfCBURU1QIH0gfCBV TkxPR0dFRCBdIFRBQkxFIFsgSUYgTk9UIEVYSQogQ1JFQVRFIFsgWyBHTE9CQUwgfCBMT0NB TCBdIHsgVEVNUE9SQVJZIHwgVEVNUCB9IHwgVU5MT0dHRUQgXSBUQUJMRSBbIElGIE5PVCBF WElTVFMgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVw bGFjZWFibGU+CiAgICAgT0YgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnR5cGVf bmFtZTwvcmVwbGFjZWFibGU+IFsgKAogICB7IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFsgV0lUSCBPUFRJT05TIF0gWyA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX2NvbnN0cmFpbnQ8L3JlcGxhY2Vh YmxlPiBbIC4uLiBdIF0KKyAgICB8IDxyZXBsYWNlYWJsZT5wZXJpb2RfZGVmaW5pdGlvbjwv cmVwbGFjZWFibGU+CiAgICAgfCA8cmVwbGFjZWFibGU+dGFibGVfY29uc3RyYWludDwvcmVw bGFjZWFibGU+IH0KICAgICBbLCAuLi4gXQogKSBdCkBAIC00OSw2ICs1MSw3IEBAIENSRUFU RSBbIFsgR0xPQkFMIHwgTE9DQUwgXSB7IFRFTVBPUkFSWSB8IFRFTVAgfSB8IFVOTE9HR0VE IF0gVEFCTEUgWyBJRiBOT1QgRVhJCiBDUkVBVEUgWyBbIEdMT0JBTCB8IExPQ0FMIF0geyBU RU1QT1JBUlkgfCBURU1QIH0gfCBVTkxPR0dFRCBdIFRBQkxFIFsgSUYgTk9UIEVYSVNUUyBd IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJs ZT4KICAgICBQQVJUSVRJT04gT0YgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBh cmVudF90YWJsZTwvcmVwbGFjZWFibGU+IFsgKAogICB7IDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFsgV0lUSCBPUFRJT05TIF0g WyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX2NvbnN0cmFpbnQ8L3Jl cGxhY2VhYmxlPiBbIC4uLiBdIF0KKyAgICB8IDxyZXBsYWNlYWJsZT5wZXJpb2RfZGVmaW5p dGlvbjwvcmVwbGFjZWFibGU+CiAgICAgfCA8cmVwbGFjZWFibGU+dGFibGVfY29uc3RyYWlu dDwvcmVwbGFjZWFibGU+IH0KICAgICBbLCAuLi4gXQogKSBdIHsgRk9SIFZBTFVFUyA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX2JvdW5kX3NwZWM8L3JlcGxh Y2VhYmxlPiB8IERFRkFVTFQgfQpAQCAtNzMsNiArNzYsMTEgQEAgQ1JFQVRFIFsgWyBHTE9C QUwgfCBMT0NBTCBdIHsgVEVNUE9SQVJZIHwgVEVNUCB9IHwgVU5MT0dHRUQgXSBUQUJMRSBb IElGIE5PVCBFWEkKICAgICBbIE9OIERFTEVURSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+cmVmZXJlbnRpYWxfYWN0aW9uPC9yZXBsYWNlYWJsZT4gXSBbIE9OIFVQREFURSA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmZXJlbnRpYWxfYWN0aW9uPC9yZXBs YWNlYWJsZT4gXSB9CiBbIERFRkVSUkFCTEUgfCBOT1QgREVGRVJSQUJMRSBdIFsgSU5JVElB TExZIERFRkVSUkVEIHwgSU5JVElBTExZIElNTUVESUFURSBdCiAKKzxwaHJhc2U+YW5kIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wZXJpb2RfZGVmaW5pdGlvbjwvcmVwbGFj ZWFibGU+IGlzOjwvcGhyYXNlPgorCitQRVJJT0QgRk9SIHsgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnBlcmlvZF9uYW1lPC9yZXBsYWNlYWJsZT4gfCBTWVNURU1fVElNRSB9 ICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNl YWJsZT4sIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVw bGFjZWFibGU+ICkKK1sgV0lUSCAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5w ZXJpb2Rfb3B0aW9uPC9yZXBsYWNlYWJsZT4gPSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+dmFsdWU8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSApIF0KKwogPHBocmFzZT5hbmQg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX2NvbnN0cmFpbnQ8L3JlcGxh Y2VhYmxlPiBpczo8L3BocmFzZT4KIAogWyBDT05TVFJBSU5UIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5jb25zdHJhaW50X25hbWU8L3JlcGxhY2VhYmxlPiBdCkBAIC0xMzks NiArMTQ3LDE0IEBAIFdJVEggKCBNT0RVTFVTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5udW1lcmljX2xpdGVyYWw8L3JlcGxhY2VhYmxlPiwgUkVNCiAgICBuYW1lIGFzIGFu eSBleGlzdGluZyBkYXRhIHR5cGUgaW4gdGhlIHNhbWUgc2NoZW1hLgogICA8L3BhcmE+CiAK KyAgPHBhcmE+CisgICBQZXJpb2RzIG15IGJlIGRlZmluZWQgb24gdGFibGVzLCBzcGVjaWZ5 aW5nIHRoYXQgdHdvIGV4aXN0aW5nIGNvbHVtbnMKKyAgIHJlcHJlc2VudCBzdGFydCBhbmQg ZW5kIHZhbHVlcyBmb3IgdGhlIHBlcmlvZC4gIFBlcmlvZHMgbWF5IGhhdmUgYW55IG5hbWUK KyAgIHRoYXQgZG9lc24ndCBjb25mbGljdCB3aXRoIGEgY29sdW1uIG5hbWUsIGJ1dCB0aGUg bmFtZQorICAgPGxpdGVyYWw+U1lTVEVNX1RJTUU8L2xpdGVyYWw+IGlzIHNwZWNpYWwsIHVz ZWQgZm9yIHZlcnNpb25pbmcgdGFibGVzLgorICAgU3lzdGVtIHBlcmlvZHMgYXJlIG5vdCB5 ZXQgaW1wbGVtZW50ZWQuICBTZWUgPHhyZWYgbGlua2VuZD0iZGRsLXBlcmlvZHMiLz4gZm9y IG1vcmUgZGV0YWlscy4KKyAgPC9wYXJhPgorCiAgIDxwYXJhPgogICAgVGhlIG9wdGlvbmFs IGNvbnN0cmFpbnQgY2xhdXNlcyBzcGVjaWZ5IGNvbnN0cmFpbnRzICh0ZXN0cykgdGhhdAog ICAgbmV3IG9yIHVwZGF0ZWQgcm93cyBtdXN0IHNhdGlzZnkgZm9yIGFuIGluc2VydCBvciB1 cGRhdGUgb3BlcmF0aW9uCkBAIC03OTksNiArODE1LDMwIEBAIFdJVEggKCBNT0RVTFVTIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVyYWw8L3JlcGxhY2Vh YmxlPiwgUkVNCiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgogCisgICA8 dmFybGlzdGVudHJ5IGlkPSJzcWwtY3JlYXRldGFibGUtcGFybXMtcGVyaW9kIj4KKyAgICA8 dGVybT48bGl0ZXJhbD5QRVJJT0QgRk9SIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5wZXJpb2RfbmFtZTwvcmVwbGFjZWFibGU+ICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4sIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+ICkgWyBXSVRIICggPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBlcmlvZF9vcHRpb248L3JlcGxhY2VhYmxlPiA9 IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj52YWx1ZTwvcmVwbGFjZWFibGU+IFss IC4uLiBdICkgXTwvbGl0ZXJhbD48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFy YT4KKyAgICAgIEEgcGVyaW9kIGRlZmluaXRpb24gZ2l2ZXMgc2VtYW50aWMgbWVhbmluZyB0 byB0d28gZXhpc3RpbmcgY29sdW1ucyBvZgorICAgICAgdGhlIHRhYmxlLiAgSXQgZGVmaW5l cyBhICJzdGFydCBjb2x1bW4iIGFuZCBhbiAiZW5kIGNvbHVtbiIgd2hlcmUgdGhlCisgICAg ICBzdGFydCB2YWx1ZSBpcyBzdHJpY3RseSBsZXNzIHRoYW4gdGhlIGVuZCB2YWx1ZS4gIEEK KyAgICAgIDxsaXRlcmFsPkNIRUNLPC9saXRlcmFsPiBjb25zdHJhaW50IGlzIGF1dG9tYXRp Y2FsbHkgY3JlYXRlZCB0byBlbmZvcmNlCisgICAgICB0aGlzLiBZb3UgY2FuIHNwZWNpZnkg dGhlIG5hbWUgb2YgdGhhdCBjb25zdHJhaW50IHdpdGggdGhlCisgICAgICA8bGl0ZXJhbD5j aGVja19jb25zdHJhaW50X25hbWU8L2xpdGVyYWw+IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5wZXJpb2Rfb3B0aW9uPC9yZXBsYWNlYWJsZT4uCisgICAgIDwvcGFyYT4KKwor ICAgICA8cGFyYT4KKyAgICAgIEJvdGggY29sdW1ucyBtdXN0IGhhdmUgZXhhY3RseSB0aGUg c2FtZSB0eXBlIGFuZCBtdXN0IGhhdmUgYSByYW5nZSB0eXBlCisgICAgICBkZWZpbmVkIGZy b20gdGhlaXIgYmFzZSB0eXBlLiAgSWYgdGhlcmUgYXJlIHNldmVyYWwgcmFuZ2UgdHlwZXMg Zm9yIHRoYXQKKyAgICAgIGJhc2UgdHlwZSwgeW91IG11c3Qgc3BlY2lmeSB3aGljaCBvbmUg eW91IHdhbnQgYnkgdXNpbmcgdGhlCisgICAgICA8bGl0ZXJhbD5yYW5nZXR5cGU8L2xpdGVy YWw+IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wZXJpb2Rfb3B0aW9uPC9yZXBs YWNlYWJsZT4uCisgICAgICBBbnkgYmFzZSB0eXBlIGlzIGFsbG93ZWQsIGFzIGxvbmcgYXMg aXQgaGFzIGEgcmFuZ2UgdHlwZSwgYWx0aG91Z2ggaXQgaXMKKyAgICAgIGV4cGVjdGVkIHRo YXQgbW9zdCBwZXJpb2RzIHdpbGwgdXNlIHRlbXBvcmFsIHR5cGVzIGxpa2UgPGxpdGVyYWw+ dGltZXN0YW1wdHo8L2xpdGVyYWw+CisgICAgICBvciA8bGl0ZXJhbD5kYXRlPC9saXRlcmFs Pi4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4K KwogICAgPHZhcmxpc3RlbnRyeSBpZD0ic3FsLWNyZWF0ZXRhYmxlLXBhcm1zLWNvbnN0cmFp bnQiPgogICAgIDx0ZXJtPjxsaXRlcmFsPkNPTlNUUkFJTlQgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPmNvbnN0cmFpbnRfbmFtZTwvcmVwbGFjZWFibGU+PC9saXRlcmFsPjwv dGVybT4KICAgICA8bGlzdGl0ZW0+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9n L01ha2VmaWxlIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9NYWtlZmlsZQppbmRleCBhNjAxMDdi Zjk0Li5jOWUzN2E0ZDcxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL01ha2Vm aWxlCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvTWFrZWZpbGUKQEAgLTM5LDYgKzM5LDcg QEAgT0JKUyA9IFwKIAlwZ19uYW1lc3BhY2UubyBcCiAJcGdfb3BlcmF0b3IubyBcCiAJcGdf cGFyYW1ldGVyX2FjbC5vIFwKKwlwZ19wZXJpb2QubyBcCiAJcGdfcHJvYy5vIFwKIAlwZ19w dWJsaWNhdGlvbi5vIFwKIAlwZ19yYW5nZS5vIFwKQEAgLTcwLDcgKzcxLDcgQEAgQ0FUQUxP R19IRUFERVJTIDo9IFwKIAlwZ19mb3JlaWduX3RhYmxlLmggcGdfcG9saWN5LmggcGdfcmVw bGljYXRpb25fb3JpZ2luLmggXAogCXBnX2RlZmF1bHRfYWNsLmggcGdfaW5pdF9wcml2cy5o IHBnX3NlY2xhYmVsLmggcGdfc2hzZWNsYWJlbC5oIFwKIAlwZ19jb2xsYXRpb24uaCBwZ19w YXJhbWV0ZXJfYWNsLmggcGdfcGFydGl0aW9uZWRfdGFibGUuaCBcCi0JcGdfcmFuZ2UuaCBw Z190cmFuc2Zvcm0uaCBcCisJcGdfcGVyaW9kLmggcGdfcmFuZ2UuaCBwZ190cmFuc2Zvcm0u aCBcCiAJcGdfc2VxdWVuY2UuaCBwZ19wdWJsaWNhdGlvbi5oIHBnX3B1YmxpY2F0aW9uX25h bWVzcGFjZS5oIFwKIAlwZ19wdWJsaWNhdGlvbl9yZWwuaCBwZ19zdWJzY3JpcHRpb24uaCBw Z19zdWJzY3JpcHRpb25fcmVsLmgKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxv Zy9hY2xjaGsuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvYWNsY2hrLmMKaW5kZXggNDVjZGNk M2RjNi4uOTg4MGU1MmM4MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9hY2xj aGsuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2FjbGNoay5jCkBAIC0yNzk1LDYgKzI3 OTUsNyBAQCBhY2xjaGVja19lcnJvcihBY2xSZXN1bHQgYWNsZXJyLCBPYmplY3RUeXBlIG9i anR5cGUsCiAJCQkJCWNhc2UgT0JKRUNUX0RFRkFVTFQ6CiAJCQkJCWNhc2UgT0JKRUNUX0RF RkFDTDoKIAkJCQkJY2FzZSBPQkpFQ1RfRE9NQ09OU1RSQUlOVDoKKwkJCQkJY2FzZSBPQkpF Q1RfUEVSSU9EOgogCQkJCQljYXNlIE9CSkVDVF9QVUJMSUNBVElPTl9OQU1FU1BBQ0U6CiAJ CQkJCWNhc2UgT0JKRUNUX1BVQkxJQ0FUSU9OX1JFTDoKIAkJCQkJY2FzZSBPQkpFQ1RfUk9M RToKQEAgLTI5MzYsNiArMjkzNyw3IEBAIGFjbGNoZWNrX2Vycm9yKEFjbFJlc3VsdCBhY2xl cnIsIE9iamVjdFR5cGUgb2JqdHlwZSwKIAkJCQkJY2FzZSBPQkpFQ1RfREVGQUNMOgogCQkJ CQljYXNlIE9CSkVDVF9ET01DT05TVFJBSU5UOgogCQkJCQljYXNlIE9CSkVDVF9QQVJBTUVU RVJfQUNMOgorCQkJCQljYXNlIE9CSkVDVF9QRVJJT0Q6CiAJCQkJCWNhc2UgT0JKRUNUX1BV QkxJQ0FUSU9OX05BTUVTUEFDRToKIAkJCQkJY2FzZSBPQkpFQ1RfUFVCTElDQVRJT05fUkVM OgogCQkJCQljYXNlIE9CSkVDVF9ST0xFOgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0 YWxvZy9kZXBlbmRlbmN5LmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2RlcGVuZGVuY3kuYwpp bmRleCBmOGExMzZiYTBhLi4yMzJmNzdjOTZlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9j YXRhbG9nL2RlcGVuZGVuY3kuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2RlcGVuZGVu Y3kuYwpAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfb3BlcmF0b3Iu aCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX29wZmFtaWx5LmgiCiAjaW5jbHVkZSAiY2F0YWxv Zy9wZ19wYXJhbWV0ZXJfYWNsLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19wZXJpb2QuaCIK ICNpbmNsdWRlICJjYXRhbG9nL3BnX3BvbGljeS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdf cHJvYy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfcHVibGljYXRpb24uaCIKQEAgLTE1NCw2 ICsxNTUsNyBAQCBzdGF0aWMgY29uc3QgT2lkIG9iamVjdF9jbGFzc2VzW10gPSB7CiAJQ2Fz dFJlbGF0aW9uSWQsCQkJCS8qIE9DTEFTU19DQVNUICovCiAJQ29sbGF0aW9uUmVsYXRpb25J ZCwJCS8qIE9DTEFTU19DT0xMQVRJT04gKi8KIAlDb25zdHJhaW50UmVsYXRpb25JZCwJCS8q IE9DTEFTU19DT05TVFJBSU5UICovCisJUGVyaW9kUmVsYXRpb25JZCwJCQkvKiBPQ0xBU1Nf UEVSSU9EICovCiAJQ29udmVyc2lvblJlbGF0aW9uSWQsCQkvKiBPQ0xBU1NfQ09OVkVSU0lP TiAqLwogCUF0dHJEZWZhdWx0UmVsYXRpb25JZCwJCS8qIE9DTEFTU19ERUZBVUxUICovCiAJ TGFuZ3VhZ2VSZWxhdGlvbklkLAkJCS8qIE9DTEFTU19MQU5HVUFHRSAqLwpAQCAtMTQ0Myw2 ICsxNDQ1LDEwIEBAIGRvRGVsZXRpb24oY29uc3QgT2JqZWN0QWRkcmVzcyAqb2JqZWN0LCBp bnQgZmxhZ3MpCiAJCQlSZW1vdmVDb25zdHJhaW50QnlJZChvYmplY3QtPm9iamVjdElkKTsK IAkJCWJyZWFrOwogCisJCWNhc2UgT0NMQVNTX1BFUklPRDoKKwkJCVJlbW92ZVBlcmlvZEJ5 SWQob2JqZWN0LT5vYmplY3RJZCk7CisJCQlicmVhazsKKwogCQljYXNlIE9DTEFTU19ERUZB VUxUOgogCQkJUmVtb3ZlQXR0ckRlZmF1bHRCeUlkKG9iamVjdC0+b2JqZWN0SWQpOwogCQkJ YnJlYWs7CkBAIC0yODYyLDYgKzI4NjgsOSBAQCBnZXRPYmplY3RDbGFzcyhjb25zdCBPYmpl Y3RBZGRyZXNzICpvYmplY3QpCiAJCWNhc2UgQ29uc3RyYWludFJlbGF0aW9uSWQ6CiAJCQly ZXR1cm4gT0NMQVNTX0NPTlNUUkFJTlQ7CiAKKwkJY2FzZSBQZXJpb2RSZWxhdGlvbklkOgor CQkJcmV0dXJuIE9DTEFTU19QRVJJT0Q7CisKIAkJY2FzZSBDb252ZXJzaW9uUmVsYXRpb25J ZDoKIAkJCXJldHVybiBPQ0xBU1NfQ09OVkVSU0lPTjsKIApkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvY2F0YWxvZy9oZWFwLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2hlYXAuYwppbmRl eCAyYTBkODJhZWRkLi5kNzkzODg5OGRiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRh bG9nL2hlYXAuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2hlYXAuYwpAQCAtNDksNiAr NDksNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfbmFtZXNwYWNlLmgiCiAjaW5jbHVkZSAi Y2F0YWxvZy9wZ19vcGNsYXNzLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19wYXJ0aXRpb25l ZF90YWJsZS5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfcGVyaW9kLmgiCiAjaW5jbHVkZSAi Y2F0YWxvZy9wZ19zdGF0aXN0aWMuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3N1YnNjcmlw dGlvbl9yZWwuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3RhYmxlc3BhY2UuaCIKQEAgLTIw NTIsNiArMjA1Myw3MCBAQCBTZXRBdHRyTWlzc2luZyhPaWQgcmVsaWQsIGNoYXIgKmF0dG5h bWUsIGNoYXIgKnZhbHVlKQogCXRhYmxlX2Nsb3NlKHRhYmxlcmVsLCBBY2Nlc3NFeGNsdXNp dmVMb2NrKTsKIH0KIAorLyoKKyAqIFN0b3JlIGEgcGVyaW9kIG9mIHJlbGF0aW9uIHJlbC4K KyAqCisgKiBSZXR1cm5zIHRoZSBPSUQgb2YgdGhlIG5ldyBwZ19wZXJpb2QgdHVwbGUuCisg Ki8KK09pZAorU3RvcmVQZXJpb2QoUmVsYXRpb24gcmVsLCBjb25zdCBjaGFyICpwZXJpb2Ru YW1lLCBBdHRyTnVtYmVyIHN0YXJ0bnVtLAorCQkJQXR0ck51bWJlciBlbmRudW0sIE9pZCBy bmd0eXBpZCwgT2lkIGNvbm9pZCkKK3sKKwlEYXR1bQkJdmFsdWVzW05hdHRzX3BnX3Blcmlv ZF07CisJYm9vbAkJbnVsbHNbTmF0dHNfcGdfcGVyaW9kXTsKKwlSZWxhdGlvbglwZ19wZXJp b2Q7CisJSGVhcFR1cGxlCXR1cGxlOworCU9pZAkJCW9pZDsKKwlOYW1lRGF0YQlwZXJuYW1l OworCU9iamVjdEFkZHJlc3MJbXlzZWxmLCByZWZlcmVuY2VkOworCisJbmFtZXN0cmNweSgm cGVybmFtZSwgcGVyaW9kbmFtZSk7CisKKwlNZW1TZXQodmFsdWVzLCAwLCBzaXplb2YodmFs dWVzKSk7CisJTWVtU2V0KG51bGxzLCBmYWxzZSwgc2l6ZW9mKG51bGxzKSk7CisKKwlwZ19w ZXJpb2QgPSB0YWJsZV9vcGVuKFBlcmlvZFJlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2sp OworCisJb2lkID0gR2V0TmV3T2lkV2l0aEluZGV4KHBnX3BlcmlvZCwgQXR0ckRlZmF1bHRP aWRJbmRleElkLCBBbnVtX3BnX3BlcmlvZF9vaWQpOworCXZhbHVlc1tBbnVtX3BnX3Blcmlv ZF9vaWQgLSAxXSA9IE9iamVjdElkR2V0RGF0dW0ob2lkKTsKKwl2YWx1ZXNbQW51bV9wZ19w ZXJpb2RfcGVybmFtZSAtIDFdID0gTmFtZUdldERhdHVtKCZwZXJuYW1lKTsKKwl2YWx1ZXNb QW51bV9wZ19wZXJpb2RfcGVycmVsaWQgLSAxXSA9IFJlbGF0aW9uR2V0UmVsaWQocmVsKTsK Kwl2YWx1ZXNbQW51bV9wZ19wZXJpb2RfcGVyc3RhcnQgLSAxXSA9IHN0YXJ0bnVtOworCXZh bHVlc1tBbnVtX3BnX3BlcmlvZF9wZXJlbmQgLSAxXSA9IGVuZG51bTsKKwl2YWx1ZXNbQW51 bV9wZ19wZXJpb2RfcGVycm5ndHlwZSAtIDFdID0gcm5ndHlwaWQ7CisJdmFsdWVzW0FudW1f cGdfcGVyaW9kX3BlcmNvbnN0cmFpbnQgLSAxXSA9IGNvbm9pZDsKKworCXR1cGxlID0gaGVh cF9mb3JtX3R1cGxlKFJlbGF0aW9uR2V0RGVzY3IocGdfcGVyaW9kKSwgdmFsdWVzLCBudWxs cyk7CisJQ2F0YWxvZ1R1cGxlSW5zZXJ0KHBnX3BlcmlvZCwgdHVwbGUpOworCisJT2JqZWN0 QWRkcmVzc1NldChteXNlbGYsIFBlcmlvZFJlbGF0aW9uSWQsIG9pZCk7CisKKwkvKiBEcm9w IHRoZSBwZXJpb2Qgd2hlbiB0aGUgdGFibGUgaXMgZHJvcHBlZC4gKi8KKwlPYmplY3RBZGRy ZXNzU2V0KHJlZmVyZW5jZWQsIFJlbGF0aW9uUmVsYXRpb25JZCwgUmVsYXRpb25HZXRSZWxp ZChyZWwpKTsKKwlyZWNvcmREZXBlbmRlbmN5T24oJm15c2VsZiwgJnJlZmVyZW5jZWQsIERF UEVOREVOQ1lfQVVUTyk7CisKKwkvKiBGb3JiaWQgZHJvcHBpbmcgdGhlIGNvbHVtbnMgb2Yg dGhlIHBlcmlvZC4gKi8KKwlPYmplY3RBZGRyZXNzU3ViU2V0KHJlZmVyZW5jZWQsIFJlbGF0 aW9uUmVsYXRpb25JZCwgUmVsYXRpb25HZXRSZWxpZChyZWwpLCBzdGFydG51bSk7CisJcmVj b3JkRGVwZW5kZW5jeU9uKCZteXNlbGYsICZyZWZlcmVuY2VkLCBERVBFTkRFTkNZX05PUk1B TCk7CisJT2JqZWN0QWRkcmVzc1N1YlNldChyZWZlcmVuY2VkLCBSZWxhdGlvblJlbGF0aW9u SWQsIFJlbGF0aW9uR2V0UmVsaWQocmVsKSwgZW5kbnVtKTsKKwlyZWNvcmREZXBlbmRlbmN5 T24oJm15c2VsZiwgJnJlZmVyZW5jZWQsIERFUEVOREVOQ1lfTk9STUFMKTsKKworCS8qIE1h a2Ugc3VyZSB3ZSBkb24ndCBsb3NlIG91ciByYW5nZXR5cGUuICovCisJT2JqZWN0QWRkcmVz c1NldChyZWZlcmVuY2VkLCBUeXBlUmVsYXRpb25JZCwgcm5ndHlwaWQpOworCXJlY29yZERl cGVuZGVuY3lPbigmbXlzZWxmLCAmcmVmZXJlbmNlZCwgREVQRU5ERU5DWV9OT1JNQUwpOwor CisJLyoKKwkgKiBUaGUgY29uc3RyYWludCBpcyBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWws IHNvIHdlIG1hcmsgaXQgYXMgc3VjaC4KKwkgKiAoTm90ZSB0aGF0IG15c2VsZiBhbmQgcmVm ZXJlbmNlZCBhcmUgcmV2ZXJzZWQgZm9yIHRoaXMgb25lLikKKwkgKi8KKwlPYmplY3RBZGRy ZXNzU2V0KHJlZmVyZW5jZWQsIENvbnN0cmFpbnRSZWxhdGlvbklkLCBjb25vaWQpOworCXJl Y29yZERlcGVuZGVuY3lPbigmcmVmZXJlbmNlZCwgJm15c2VsZiwgREVQRU5ERU5DWV9JTlRF Uk5BTCk7CisKKwl0YWJsZV9jbG9zZShwZ19wZXJpb2QsIFJvd0V4Y2x1c2l2ZUxvY2spOwor CisJcmV0dXJuIG9pZDsKK30KKwogLyoKICAqIFN0b3JlIGEgY2hlY2stY29uc3RyYWludCBl eHByZXNzaW9uIGZvciB0aGUgZ2l2ZW4gcmVsYXRpb24uCiAgKgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvY2F0YWxvZy9pbmZvcm1hdGlvbl9zY2hlbWEuc3FsIGIvc3JjL2JhY2tlbmQv Y2F0YWxvZy9pbmZvcm1hdGlvbl9zY2hlbWEuc3FsCmluZGV4IDhiY2Q0MjQ2N2EuLmY1ZDZm ZmE5MmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5mb3JtYXRpb25fc2No ZW1hLnNxbAorKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZm9ybWF0aW9uX3NjaGVtYS5z cWwKQEAgLTEyMDAsNyArMTIwMCwyOSBAQCBHUkFOVCBTRUxFQ1QgT04gcGFyYW1ldGVycyBU TyBQVUJMSUM7CiAgKiBQRVJJT0RTIHZpZXcKICAqLwogCi0tLSBmZWF0dXJlIG5vdCBzdXBw b3J0ZWQKK0NSRUFURSBWSUVXIHBlcmlvZHMgQVMKKyAgICBTRUxFQ1QgY3VycmVudF9kYXRh YmFzZSgpOjppbmZvcm1hdGlvbl9zY2hlbWEuc3FsX2lkZW50aWZpZXIgQVMgdGFibGVfY2F0 YWxvZywKKyAgICAgICAgICAgbmMubnNwbmFtZTo6aW5mb3JtYXRpb25fc2NoZW1hLnNxbF9p ZGVudGlmaWVyIEFTIHRhYmxlX3NjaGVtYSwKKyAgICAgICAgICAgYy5yZWxuYW1lOjppbmZv cm1hdGlvbl9zY2hlbWEuc3FsX2lkZW50aWZpZXIgQVMgdGFibGVfbmFtZSwKKyAgICAgICAg ICAgcC5wZXJuYW1lOjppbmZvcm1hdGlvbl9zY2hlbWEuc3FsX2lkZW50aWZpZXIgQVMgcGVy aW9kX25hbWUsCisgICAgICAgICAgIENBU0UgV0hFTiBwZ19oYXNfcm9sZShjLnJlbG93bmVy LCAnVVNBR0UnKQorICAgICAgICAgICAgICAgICAgT1IgaGFzX2NvbHVtbl9wcml2aWxlZ2Uo c2EuYXR0cmVsaWQsIHNhLmF0dG51bSwgJ1NFTEVDVCwgSU5TRVJULCBVUERBVEUsIFJFRkVS RU5DRVMnKQorICAgICAgICAgICAgICAgIFRIRU4gc2EuYXR0bmFtZTo6aW5mb3JtYXRpb25f c2NoZW1hLnNxbF9pZGVudGlmaWVyCisgICAgICAgICAgIEVORCBBUyBzdGFydF9jb2x1bW5f bmFtZSwKKyAgICAgICAgICAgQ0FTRSBXSEVOIHBnX2hhc19yb2xlKGMucmVsb3duZXIsICdV U0FHRScpCisgICAgICAgICAgICAgICAgICBPUiBoYXNfY29sdW1uX3ByaXZpbGVnZShlYS5h dHRyZWxpZCwgZWEuYXR0bnVtLCAnU0VMRUNULCBJTlNFUlQsIFVQREFURSwgUkVGRVJFTkNF UycpCisgICAgICAgICAgICAgICAgVEhFTiBlYS5hdHRuYW1lOjppbmZvcm1hdGlvbl9zY2hl bWEuc3FsX2lkZW50aWZpZXIKKyAgICAgICAgICAgRU5EIEFTIGVuZF9jb2x1bW5fbmFtZQor ICAgIEZST00gcGdfcGVyaW9kIEFTIHAKKyAgICBKT0lOIHBnX2NsYXNzIEFTIGMgT04gYy5v aWQgPSBwLnBlcnJlbGlkCisgICAgSk9JTiBwZ19uYW1lc3BhY2UgQVMgbmMgT04gbmMub2lk ID0gYy5yZWxuYW1lc3BhY2UKKyAgICBKT0lOIHBnX2F0dHJpYnV0ZSBBUyBzYSBPTiAoc2Eu YXR0cmVsaWQsIHNhLmF0dG51bSkgPSAocC5wZXJyZWxpZCwgcC5wZXJzdGFydCkKKyAgICBK T0lOIHBnX2F0dHJpYnV0ZSBBUyBlYSBPTiAoZWEuYXR0cmVsaWQsIGVhLmF0dG51bSkgPSAo cC5wZXJyZWxpZCwgcC5wZXJlbmQpCisgICAgV0hFUkUgTk9UIHBnX2lzX290aGVyX3RlbXBf c2NoZW1hKG5jLm9pZCkKKyAgICAgIC0tQU5EIGMucmVsa2luZCA9IEFOWSAoQVJSQVlbJ3In XSk7CisgICAgICBBTkQgYy5yZWxraW5kIElOICgncicsICd2Jyk7CisKK0dSQU5UIFNFTEVD VCBPTiBwZXJpb2RzIFRPIFBVQkxJQzsKIAogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvY2F0YWxvZy9vYmplY3RhZGRyZXNzLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL29iamVj dGFkZHJlc3MuYwppbmRleCA5NWZlZmM3NTY1Li5hOTc5MjMzZTZiIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9jYXRhbG9nL29iamVjdGFkZHJlc3MuYworKysgYi9zcmMvYmFja2VuZC9j YXRhbG9nL29iamVjdGFkZHJlc3MuYwpAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgImNh dGFsb2cvcGdfb3BlcmF0b3IuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX29wZmFtaWx5Lmgi CiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19wYXJhbWV0ZXJfYWNsLmgiCisjaW5jbHVkZSAiY2F0 YWxvZy9wZ19wZXJpb2QuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3BvbGljeS5oIgogI2lu Y2x1ZGUgImNhdGFsb2cvcGdfcHJvYy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfcHVibGlj YXRpb24uaCIKQEAgLTczMCw2ICs3MzEsMTAgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBvYmpl Y3RfdHlwZV9tYXAKIAl7CiAJCSJkb21haW4gY29uc3RyYWludCIsIE9CSkVDVF9ET01DT05T VFJBSU5UCiAJfSwKKwkvKiBPQ0xBU1NfUEVSSU9EICovCisJeworCQkicGVyaW9kIiwgT0JK RUNUX1BFUklPRAorCX0sCiAJLyogT0NMQVNTX0NPTlZFUlNJT04gKi8KIAl7CiAJCSJjb252 ZXJzaW9uIiwgT0JKRUNUX0NPTlZFUlNJT04KQEAgLTEwMDgsNiArMTAxMyw3IEBAIGdldF9v YmplY3RfYWRkcmVzcyhPYmplY3RUeXBlIG9ianR5cGUsIE5vZGUgKm9iamVjdCwKIAkJCWNh c2UgT0JKRUNUX1RSSUdHRVI6CiAJCQljYXNlIE9CSkVDVF9UQUJDT05TVFJBSU5UOgogCQkJ Y2FzZSBPQkpFQ1RfUE9MSUNZOgorCQkJY2FzZSBPQkpFQ1RfUEVSSU9EOgogCQkJCWFkZHJl c3MgPSBnZXRfb2JqZWN0X2FkZHJlc3NfcmVsb2JqZWN0KG9ianR5cGUsIGNhc3ROb2RlKExp c3QsIG9iamVjdCksCiAJCQkJCQkJCQkJCQkJICAgJnJlbGF0aW9uLCBtaXNzaW5nX29rKTsK IAkJCQlicmVhazsKQEAgLTE1MDYsNiArMTUxMiwxMyBAQCBnZXRfb2JqZWN0X2FkZHJlc3Nf cmVsb2JqZWN0KE9iamVjdFR5cGUgb2JqdHlwZSwgTGlzdCAqb2JqZWN0LAogCQkJCUludmFs aWRPaWQ7CiAJCQlhZGRyZXNzLm9iamVjdFN1YklkID0gMDsKIAkJCWJyZWFrOworCQljYXNl IE9CSkVDVF9QRVJJT0Q6CisJCQlhZGRyZXNzLmNsYXNzSWQgPSBQZXJpb2RSZWxhdGlvbklk OworCQkJYWRkcmVzcy5vYmplY3RJZCA9IHJlbGF0aW9uID8KKwkJCQlnZXRfcmVsYXRpb25f cGVyaW9kX29pZChyZWxvaWQsIGRlcG5hbWUsIG1pc3Npbmdfb2spIDoKKwkJCQlJbnZhbGlk T2lkOworCQkJYWRkcmVzcy5vYmplY3RTdWJJZCA9IDA7CisJCQlicmVhazsKIAkJZGVmYXVs dDoKIAkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgb2JqZWN0IHR5cGU6ICVkIiwgKGlu dCkgb2JqdHlwZSk7CiAJfQpAQCAtMjMyMyw2ICsyMzM2LDcgQEAgcGdfZ2V0X29iamVjdF9h ZGRyZXNzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCWNhc2UgT0JKRUNUX1JVTEU6CiAJCWNhc2Ug T0JKRUNUX1RSSUdHRVI6CiAJCWNhc2UgT0JKRUNUX1RBQkNPTlNUUkFJTlQ6CisJCWNhc2Ug T0JKRUNUX1BFUklPRDoKIAkJY2FzZSBPQkpFQ1RfT1BDTEFTUzoKIAkJY2FzZSBPQkpFQ1Rf T1BGQU1JTFk6CiAJCQlvYmpub2RlID0gKE5vZGUgKikgbmFtZTsKQEAgLTI0MzMsNiArMjQ0 Nyw3IEBAIGNoZWNrX29iamVjdF9vd25lcnNoaXAoT2lkIHJvbGVpZCwgT2JqZWN0VHlwZSBv Ymp0eXBlLCBPYmplY3RBZGRyZXNzIGFkZHJlc3MsCiAJCWNhc2UgT0JKRUNUX1RSSUdHRVI6 CiAJCWNhc2UgT0JKRUNUX1BPTElDWToKIAkJY2FzZSBPQkpFQ1RfVEFCQ09OU1RSQUlOVDoK KwkJY2FzZSBPQkpFQ1RfUEVSSU9EOgogCQkJaWYgKCFvYmplY3Rfb3duZXJjaGVjayhSZWxh dGlvblJlbGF0aW9uSWQsIFJlbGF0aW9uR2V0UmVsaWQocmVsYXRpb24pLCByb2xlaWQpKQog CQkJCWFjbGNoZWNrX2Vycm9yKEFDTENIRUNLX05PVF9PV05FUiwgb2JqdHlwZSwKIAkJCQkJ CQkgICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWxhdGlvbikpOwpAQCAtMzA4MSw2ICsz MDk2LDM4IEBAIGdldE9iamVjdERlc2NyaXB0aW9uKGNvbnN0IE9iamVjdEFkZHJlc3MgKm9i amVjdCwgYm9vbCBtaXNzaW5nX29rKQogCQkJCWJyZWFrOwogCQkJfQogCisJCWNhc2UgT0NM QVNTX1BFUklPRDoKKwkJCXsKKwkJCQlIZWFwVHVwbGUJcGVyVHVwOworCQkJCUZvcm1fcGdf cGVyaW9kIHBlcjsKKworCQkJCXBlclR1cCA9IFNlYXJjaFN5c0NhY2hlMShQRVJJT0RPSUQs CisJCQkJCQkJCQkJIE9iamVjdElkR2V0RGF0dW0ob2JqZWN0LT5vYmplY3RJZCkpOworCQkJ CWlmICghSGVhcFR1cGxlSXNWYWxpZChwZXJUdXApKQorCQkJCQllbG9nKEVSUk9SLCAiY2Fj aGUgbG9va3VwIGZhaWxlZCBmb3IgcGVyaW9kICV1IiwKKwkJCQkJCSBvYmplY3QtPm9iamVj dElkKTsKKwkJCQlwZXIgPSAoRm9ybV9wZ19wZXJpb2QpIEdFVFNUUlVDVChwZXJUdXApOwor CisJCQkJaWYgKE9pZElzVmFsaWQocGVyLT5wZXJyZWxpZCkpCisJCQkJeworCQkJCQlTdHJp bmdJbmZvRGF0YSByZWw7CisKKwkJCQkJaW5pdFN0cmluZ0luZm8oJnJlbCk7CisJCQkJCWdl dFJlbGF0aW9uRGVzY3JpcHRpb24oJnJlbCwgcGVyLT5wZXJyZWxpZCwgZmFsc2UpOworCQkJ CQlhcHBlbmRTdHJpbmdJbmZvKCZidWZmZXIsIF8oInBlcmlvZCAlcyBvbiAlcyIpLAorCQkJ CQkJCQkJIE5hbWVTdHIocGVyLT5wZXJuYW1lKSwgcmVsLmRhdGEpOworCQkJCQlwZnJlZShy ZWwuZGF0YSk7CisJCQkJfQorCQkJCWVsc2UKKwkJCQl7CisJCQkJCWFwcGVuZFN0cmluZ0lu Zm8oJmJ1ZmZlciwgXygicGVyaW9kICVzIiksCisJCQkJCQkJCQkgTmFtZVN0cihwZXItPnBl cm5hbWUpKTsKKwkJCQl9CisKKwkJCQlSZWxlYXNlU3lzQ2FjaGUocGVyVHVwKTsKKwkJCQli cmVhazsKKwkJCX0KKwogCQljYXNlIE9DTEFTU19DT05WRVJTSU9OOgogCQkJewogCQkJCUhl YXBUdXBsZQljb25UdXA7CkBAIC00NDQ1LDYgKzQ0OTIsMTAgQEAgZ2V0T2JqZWN0VHlwZURl c2NyaXB0aW9uKGNvbnN0IE9iamVjdEFkZHJlc3MgKm9iamVjdCwgYm9vbCBtaXNzaW5nX29r KQogCQkJCQkJCQkJCSBtaXNzaW5nX29rKTsKIAkJCWJyZWFrOwogCisJCWNhc2UgT0NMQVNT X1BFUklPRDoKKwkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmJ1ZmZlciwgInBlcmlvZCIp OworCQkJYnJlYWs7CisKIAkJY2FzZSBPQ0xBU1NfQ09OVkVSU0lPTjoKIAkJCWFwcGVuZFN0 cmluZ0luZm9TdHJpbmcoJmJ1ZmZlciwgImNvbnZlcnNpb24iKTsKIAkJCWJyZWFrOwpAQCAt NDk1Miw2ICs1MDAzLDI4IEBAIGdldE9iamVjdElkZW50aXR5UGFydHMoY29uc3QgT2JqZWN0 QWRkcmVzcyAqb2JqZWN0LAogCQkJCWJyZWFrOwogCQkJfQogCisJCWNhc2UgT0NMQVNTX1BF UklPRDoKKwkJCXsKKwkJCQlIZWFwVHVwbGUJcGVyVHVwOworCQkJCUZvcm1fcGdfcGVyaW9k IHBlcjsKKworCQkJCXBlclR1cCA9IFNlYXJjaFN5c0NhY2hlMShQRVJJT0RPSUQsCisJCQkJ CQkJCQkJIE9iamVjdElkR2V0RGF0dW0ob2JqZWN0LT5vYmplY3RJZCkpOworCQkJCWlmICgh SGVhcFR1cGxlSXNWYWxpZChwZXJUdXApKQorCQkJCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9v a3VwIGZhaWxlZCBmb3IgcGVyaW9kICV1IiwKKwkJCQkJCSBvYmplY3QtPm9iamVjdElkKTsK KwkJCQlwZXIgPSAoRm9ybV9wZ19wZXJpb2QpIEdFVFNUUlVDVChwZXJUdXApOworCisJCQkJ YXBwZW5kU3RyaW5nSW5mbygmYnVmZmVyLCAiJXMgb24gIiwKKwkJCQkJCQkJIHF1b3RlX2lk ZW50aWZpZXIoTmFtZVN0cihwZXItPnBlcm5hbWUpKSk7CisJCQkJZ2V0UmVsYXRpb25JZGVu dGl0eSgmYnVmZmVyLCBwZXItPnBlcnJlbGlkLCBvYmpuYW1lLCBmYWxzZSk7CisJCQkJaWYg KG9iam5hbWUpCisJCQkJCSpvYmpuYW1lID0gbGFwcGVuZCgqb2JqbmFtZSwgcHN0cmR1cChO YW1lU3RyKHBlci0+cGVybmFtZSkpKTsKKworCQkJCVJlbGVhc2VTeXNDYWNoZShwZXJUdXAp OworCQkJCWJyZWFrOworCQkJfQorCiAJCWNhc2UgT0NMQVNTX0NPTlZFUlNJT046CiAJCQl7 CiAJCQkJSGVhcFR1cGxlCWNvblR1cDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFs b2cvcGdfcGVyaW9kLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3BlcmlvZC5jCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjhiNzk2ODMxMWIKLS0tIC9kZXYv bnVsbAorKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3BlcmlvZC5jCkBAIC0wLDAgKzEs MTA1IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBwZ19wZXJpb2QuYworICoJ ICByb3V0aW5lcyB0byBzdXBwb3J0IG1hbmlwdWxhdGlvbiBvZiB0aGUgcGdfcGVyaW9kIHJl bGF0aW9uCisgKgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjEsIFBvc3Rn cmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKgorICoKKyAqIElERU5USUZJQ0FU SU9OCisgKgkgIHNyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcGVyaW9kLmMKKyAqCisgKi0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAqLworI2luY2x1ZGUgInBvc3RncmVzLmgiCisKKyNpbmNsdWRl ICJhY2Nlc3MvZ2VuYW0uaCIKKyNpbmNsdWRlICJhY2Nlc3MvaGVhcGFtLmgiCisjaW5jbHVk ZSAiYWNjZXNzL2h0dXBfZGV0YWlscy5oIgorI2luY2x1ZGUgImNhdGFsb2cvaW5kZXhpbmcu aCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3BlcmlvZC5oIgorI2luY2x1ZGUgInV0aWxzL2Zt Z3JvaWRzLmgiCisjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCisjaW5jbHVkZSAidXRp bHMvcmVsLmgiCisjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKKworCisvKgorICogRGVs ZXRlIGEgc2luZ2xlIHBlcmlvZCByZWNvcmQuCisgKi8KK3ZvaWQKK1JlbW92ZVBlcmlvZEJ5 SWQoT2lkIHBlcmlvZElkKQoreworCVJlbGF0aW9uCXBnX3BlcmlvZDsKKwlIZWFwVHVwbGUJ dHVwOworCisJcGdfcGVyaW9kID0gdGFibGVfb3BlbihQZXJpb2RSZWxhdGlvbklkLCBSb3dF eGNsdXNpdmVMb2NrKTsKKworCXR1cCA9IFNlYXJjaFN5c0NhY2hlMShQRVJJT0RPSUQsIE9i amVjdElkR2V0RGF0dW0ocGVyaW9kSWQpKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHVw KSkgLyogc2hvdWxkIG5vdCBoYXBwZW4gKi8KKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1 cCBmYWlsZWQgZm9yIHBlcmlvZCAldSIsIHBlcmlvZElkKTsKKworCS8qIEZyeSB0aGUgcGVy aW9kIGl0c2VsZiAqLworCUNhdGFsb2dUdXBsZURlbGV0ZShwZ19wZXJpb2QsICZ0dXAtPnRf c2VsZik7CisKKwkvKiBDbGVhbiB1cCAqLworCVJlbGVhc2VTeXNDYWNoZSh0dXApOworCXRh YmxlX2Nsb3NlKHBnX3BlcmlvZCwgUm93RXhjbHVzaXZlTG9jayk7Cit9CisKKy8qCisgKiBn ZXRfcmVsYXRpb25fcGVyaW9kX29pZAorICoJCUZpbmQgYSBwZXJpb2Qgb24gdGhlIHNwZWNp ZmllZCByZWxhdGlvbiB3aXRoIHRoZSBzcGVjaWZpZWQgbmFtZS4KKyAqCQlSZXR1cm5zIHBl cmlvZCdzIE9JRC4KKyAqLworT2lkCitnZXRfcmVsYXRpb25fcGVyaW9kX29pZChPaWQgcmVs aWQsIGNvbnN0IGNoYXIgKnBlcm5hbWUsIGJvb2wgbWlzc2luZ19vaykKK3sKKwlSZWxhdGlv bglwZ19wZXJpb2Q7CisJSGVhcFR1cGxlCXR1cGxlOworCVN5c1NjYW5EZXNjIHNjYW47CisJ U2NhbktleURhdGEgc2tleVsxXTsKKwlPaWQJCQlwZXJPaWQgPSBJbnZhbGlkT2lkOworCisJ LyoKKwkgKiBGZXRjaCB0aGUgcGVyaW9kIHR1cGxlIGZyb20gcGdfcGVyaW9kLiAgUGVyaW9k cyBzaG91bGQgaGF2ZSB1bmlxdWUKKwkgKiBuYW1lcywgYnV0IGlmIHdlIGZpbmQgYSBkdXBs aWNhdGUgdGhlbiBlcnJvciBvdXQuCisJICovCisJcGdfcGVyaW9kID0gdGFibGVfb3BlbihQ ZXJpb2RSZWxhdGlvbklkLCBBY2Nlc3NTaGFyZUxvY2spOworCisJU2NhbktleUluaXQoJnNr ZXlbMF0sCisJCQkJQW51bV9wZ19wZXJpb2RfcGVycmVsaWQsCisJCQkJQlRFcXVhbFN0cmF0 ZWd5TnVtYmVyLCBGX09JREVRLAorCQkJCU9iamVjdElkR2V0RGF0dW0ocmVsaWQpKTsKKwor CXNjYW4gPSBzeXN0YWJsZV9iZWdpbnNjYW4ocGdfcGVyaW9kLCBQZXJpb2RSZWxpZE5hbWVJ bmRleElkLCB0cnVlLAorCQkJCQkJCSAgTlVMTCwgMSwgc2tleSk7CisKKwl3aGlsZSAoSGVh cFR1cGxlSXNWYWxpZCh0dXBsZSA9IHN5c3RhYmxlX2dldG5leHQoc2NhbikpKQorCXsKKwkJ Rm9ybV9wZ19wZXJpb2QgcGVyaW9kID0gKEZvcm1fcGdfcGVyaW9kKSBHRVRTVFJVQ1QodHVw bGUpOworCisJCWlmIChzdHJjbXAoTmFtZVN0cihwZXJpb2QtPnBlcm5hbWUpLCBwZXJuYW1l KSA9PSAwKQorCQl7CisJCQlpZiAoT2lkSXNWYWxpZChwZXJPaWQpKQorCQkJCWVyZXBvcnQo RVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX0RVUExJQ0FURV9PQkpFQ1QpLAorCQkJ CQkJIGVycm1zZygidGFibGUgXCIlc1wiIGhhcyBtdWx0aXBsZSBwZXJpb2RzIG5hbWVkIFwi JXNcIiIsCisJCQkJCQkJCWdldF9yZWxfbmFtZShyZWxpZCksIHBlcm5hbWUpKSk7CisJCQlw ZXJPaWQgPSBwZXJpb2QtPm9pZDsKKwkJfQorCX0KKworCXN5c3RhYmxlX2VuZHNjYW4oc2Nh bik7CisKKwkvKiBJZiBubyBzdWNoIHBlcmlvZCBleGlzdHMsIGNvbXBsYWluICovCisJaWYg KCFPaWRJc1ZhbGlkKHBlck9pZCkgJiYgIW1pc3Npbmdfb2spCisJCWVyZXBvcnQoRVJST1Is CisJCQkJKGVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfT0JKRUNUKSwKKwkJCQkgZXJybXNn KCJwZXJpb2QgXCIlc1wiIGZvciB0YWJsZSBcIiVzXCIgZG9lcyBub3QgZXhpc3QiLAorCQkJ CQkJcGVybmFtZSwgZ2V0X3JlbF9uYW1lKHJlbGlkKSkpKTsKKworCXRhYmxlX2Nsb3NlKHBn X3BlcmlvZCwgQWNjZXNzU2hhcmVMb2NrKTsKKworCXJldHVybiBwZXJPaWQ7Cit9CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3NxbF9mZWF0dXJlcy50eHQgYi9zcmMvYmFj a2VuZC9jYXRhbG9nL3NxbF9mZWF0dXJlcy50eHQKaW5kZXggYjMzMDY1ZDdiZi4uNzc1MDkw YTZlYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zcWxfZmVhdHVyZXMudHh0 CisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3FsX2ZlYXR1cmVzLnR4dApAQCAtNDQ5LDcg KzQ0OSw3IEBAIFQxNzYJU2VxdWVuY2UgZ2VuZXJhdG9yIHN1cHBvcnQJCQlOTwlzdXBwb3J0 ZWQgZXhjZXB0IGZvciBORVhUIFZBTFVFIEZPUgogVDE3NwlTZXF1ZW5jZSBnZW5lcmF0b3Ig c3VwcG9ydDogc2ltcGxlIHJlc3RhcnQgb3B0aW9uCQkJWUVTCQogVDE3OAlJZGVudGl0eSBj b2x1bW5zOiBzaW1wbGUgcmVzdGFydCBvcHRpb24JCQlZRVMJCiBUMTgwCVN5c3RlbS12ZXJz aW9uZWQgdGFibGVzCQkJTk8JCi1UMTgxCUFwcGxpY2F0aW9uLXRpbWUgcGVyaW9kIHRhYmxl cwkJCU5PCQorVDE4MQlBcHBsaWNhdGlvbi10aW1lIHBlcmlvZCB0YWJsZXMJCQlZRVMJCiBU MTkxCVJlZmVyZW50aWFsIGFjdGlvbiBSRVNUUklDVAkJCVlFUwkKIFQyMDAJVHJpZ2dlciBE REwJCQlOTwlzaW1pbGFyIGJ1dCBub3QgZnVsbHkgY29tcGF0aWJsZQogVDIwMQlDb21wYXJh YmxlIGRhdGEgdHlwZXMgZm9yIHJlZmVyZW50aWFsIGNvbnN0cmFpbnRzCQkJWUVTCQpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvYWx0ZXIuYyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2FsdGVyLmMKaW5kZXggMTBmMjhmOTRiYy4uMjU0Njc2M2YwNSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvYWx0ZXIuYworKysgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9hbHRlci5jCkBAIC02NjgsNiArNjY4LDcgQEAgQWx0ZXJPYmplY3ROYW1lc3BhY2Vf b2lkKE9pZCBjbGFzc0lkLCBPaWQgb2JqaWQsIE9pZCBuc3BPaWQsCiAKIAkJY2FzZSBPQ0xB U1NfQ0FTVDoKIAkJY2FzZSBPQ0xBU1NfQ09OU1RSQUlOVDoKKwkJY2FzZSBPQ0xBU1NfUEVS SU9EOgogCQljYXNlIE9DTEFTU19ERUZBVUxUOgogCQljYXNlIE9DTEFTU19MQU5HVUFHRToK IAkJY2FzZSBPQ0xBU1NfTEFSR0VPQkpFQ1Q6CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j b21tYW5kcy9jb21tZW50LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb21tZW50LmMKaW5k ZXggMjZjNGQ1OTIwMi4uNDUyYWYxZDQxMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvY29tbWVudC5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvbW1lbnQuYwpA QCAtMTAyLDYgKzEwMiwxNiBAQCBDb21tZW50T2JqZWN0KENvbW1lbnRTdG10ICpzdG10KQog CQkJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWxhdGlvbikpLAogCQkJCQkJIGVy cmRldGFpbF9yZWxraW5kX25vdF9zdXBwb3J0ZWQocmVsYXRpb24tPnJkX3JlbC0+cmVsa2lu ZCkpKTsKIAkJCWJyZWFrOworCisJCWNhc2UgT0JKRUNUX1BFUklPRDoKKwkJCS8qIFBlcmlv ZHMgY2FuIG9ubHkgZ28gb24gdGFibGVzICovCisJCQlpZiAocmVsYXRpb24tPnJkX3JlbC0+ cmVsa2luZCAhPSBSRUxLSU5EX1JFTEFUSU9OKQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJ CQkoZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVDVF9UWVBFKSwKKwkJCQkJCSBlcnJtc2co IlwiJXNcIiBpcyBub3QgYSB0YWJsZSIsCisJCQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25O YW1lKHJlbGF0aW9uKSkpKTsKKwkJCWJyZWFrOworCiAJCWRlZmF1bHQ6CiAJCQlicmVhazsK IAl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9kcm9wY21kcy5jIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvZHJvcGNtZHMuYwppbmRleCA4MmJkYTE1ODg5Li4yNWZiYmUz OTlhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9kcm9wY21kcy5jCisrKyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Ryb3BjbWRzLmMKQEAgLTUwOCw2ICs1MDgsNyBAQCBk b2VzX25vdF9leGlzdF9za2lwcGluZyhPYmplY3RUeXBlIG9ianR5cGUsIE5vZGUgKm9iamVj dCkKIAkJY2FzZSBPQkpFQ1RfRE9NQ09OU1RSQUlOVDoKIAkJY2FzZSBPQkpFQ1RfTEFSR0VP QkpFQ1Q6CiAJCWNhc2UgT0JKRUNUX1BBUkFNRVRFUl9BQ0w6CisJCWNhc2UgT0JKRUNUX1BF UklPRDoKIAkJY2FzZSBPQkpFQ1RfUFVCTElDQVRJT05fTkFNRVNQQUNFOgogCQljYXNlIE9C SkVDVF9QVUJMSUNBVElPTl9SRUw6CiAJCWNhc2UgT0JKRUNUX1RBQkNPTlNUUkFJTlQ6CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9ldmVudF90cmlnZ2VyLmMgYi9zcmMv YmFja2VuZC9jb21tYW5kcy9ldmVudF90cmlnZ2VyLmMKaW5kZXggZDRiMDBkMWE4Mi4uMTll NmRmZDM3YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXZlbnRfdHJpZ2dl ci5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V2ZW50X3RyaWdnZXIuYwpAQCAtOTcw LDYgKzk3MCw3IEBAIEV2ZW50VHJpZ2dlclN1cHBvcnRzT2JqZWN0VHlwZShPYmplY3RUeXBl IG9idHlwZSkKIAkJY2FzZSBPQkpFQ1RfT1BDTEFTUzoKIAkJY2FzZSBPQkpFQ1RfT1BFUkFU T1I6CiAJCWNhc2UgT0JKRUNUX09QRkFNSUxZOgorCQljYXNlIE9CSkVDVF9QRVJJT0Q6CiAJ CWNhc2UgT0JKRUNUX1BPTElDWToKIAkJY2FzZSBPQkpFQ1RfUFJPQ0VEVVJFOgogCQljYXNl IE9CSkVDVF9QVUJMSUNBVElPTjoKQEAgLTEwMjgsNiArMTAyOSw3IEBAIEV2ZW50VHJpZ2dl clN1cHBvcnRzT2JqZWN0Q2xhc3MoT2JqZWN0Q2xhc3Mgb2JqY2xhc3MpCiAJCWNhc2UgT0NM QVNTX0NBU1Q6CiAJCWNhc2UgT0NMQVNTX0NPTExBVElPTjoKIAkJY2FzZSBPQ0xBU1NfQ09O U1RSQUlOVDoKKwkJY2FzZSBPQ0xBU1NfUEVSSU9EOgogCQljYXNlIE9DTEFTU19DT05WRVJT SU9OOgogCQljYXNlIE9DTEFTU19ERUZBVUxUOgogCQljYXNlIE9DTEFTU19MQU5HVUFHRToK QEAgLTIwNjksNiArMjA3MSw3IEBAIHN0cmluZ2lmeV9ncmFudF9vYmp0eXBlKE9iamVjdFR5 cGUgb2JqdHlwZSkKIAkJY2FzZSBPQkpFQ1RfT1BDTEFTUzoKIAkJY2FzZSBPQkpFQ1RfT1BF UkFUT1I6CiAJCWNhc2UgT0JKRUNUX09QRkFNSUxZOgorCQljYXNlIE9CSkVDVF9QRVJJT0Q6 CiAJCWNhc2UgT0JKRUNUX1BPTElDWToKIAkJY2FzZSBPQkpFQ1RfUFVCTElDQVRJT046CiAJ CWNhc2UgT0JKRUNUX1BVQkxJQ0FUSU9OX05BTUVTUEFDRToKQEAgLTIxNTMsNiArMjE1Niw3 IEBAIHN0cmluZ2lmeV9hZGVmcHJpdnNfb2JqdHlwZShPYmplY3RUeXBlIG9ianR5cGUpCiAJ CWNhc2UgT0JKRUNUX09QRVJBVE9SOgogCQljYXNlIE9CSkVDVF9PUEZBTUlMWToKIAkJY2Fz ZSBPQkpFQ1RfUEFSQU1FVEVSX0FDTDoKKwkJY2FzZSBPQkpFQ1RfUEVSSU9EOgogCQljYXNl IE9CSkVDVF9QT0xJQ1k6CiAJCWNhc2UgT0JKRUNUX1BVQkxJQ0FUSU9OOgogCQljYXNlIE9C SkVDVF9QVUJMSUNBVElPTl9OQU1FU1BBQ0U6CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j b21tYW5kcy9zZWNsYWJlbC5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc2VjbGFiZWwuYwpp bmRleCA3ZmYxNmUzMjc2Li4zZGRjOTk1ODFhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9j b21tYW5kcy9zZWNsYWJlbC5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NlY2xhYmVs LmMKQEAgLTc5LDYgKzc5LDcgQEAgU2VjTGFiZWxTdXBwb3J0c09iamVjdFR5cGUoT2JqZWN0 VHlwZSBvYmp0eXBlKQogCQljYXNlIE9CSkVDVF9PUEVSQVRPUjoKIAkJY2FzZSBPQkpFQ1Rf T1BGQU1JTFk6CiAJCWNhc2UgT0JKRUNUX1BBUkFNRVRFUl9BQ0w6CisJCWNhc2UgT0JKRUNU X1BFUklPRDoKIAkJY2FzZSBPQkpFQ1RfUE9MSUNZOgogCQljYXNlIE9CSkVDVF9QVUJMSUNB VElPTl9OQU1FU1BBQ0U6CiAJCWNhc2UgT0JKRUNUX1BVQkxJQ0FUSU9OX1JFTDoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvdGFibGVjbWRzLmMKaW5kZXggYzdhOGE2ODliNy4uMzhjYWMyYWZhNiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKKysrIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRl ICJjYXRhbG9nL3BnX2xhcmdlb2JqZWN0LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19uYW1l c3BhY2UuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX29wY2xhc3MuaCIKKyNpbmNsdWRlICJj YXRhbG9nL3BnX3BlcmlvZC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfc3RhdGlzdGljX2V4 dC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdGFibGVzcGFjZS5oIgogI2luY2x1ZGUgImNh dGFsb2cvcGdfdHJpZ2dlci5oIgpAQCAtMTQ4LDEzICsxNDksMTggQEAgc3RhdGljIExpc3Qg Km9uX2NvbW1pdHMgPSBOSUw7CiAjZGVmaW5lIEFUX1BBU1NfT0xEX0NPTlNUUgkJMwkvKiBy ZS1hZGQgZXhpc3RpbmcgY29uc3RyYWludHMgKi8KIC8qIFdlIGNvdWxkIHN1cHBvcnQgYSBS RU5BTUUgQ09MVU1OIHBhc3MgaGVyZSwgYnV0IG5vdCBjdXJyZW50bHkgdXNlZCAqLwogI2Rl ZmluZSBBVF9QQVNTX0FERF9DT0wJCQk0CS8qIEFERCBDT0xVTU4gKi8KLSNkZWZpbmUgQVRf UEFTU19BRERfQ09OU1RSCQk1CS8qIEFERCBjb25zdHJhaW50cyAoaW5pdGlhbCBleGFtaW5h dGlvbikgKi8KLSNkZWZpbmUgQVRfUEFTU19DT0xfQVRUUlMJCTYJLyogc2V0IGNvbHVtbiBh dHRyaWJ1dGVzLCBlZyBOT1QgTlVMTCAqLwotI2RlZmluZSBBVF9QQVNTX0FERF9JTkRFWENP TlNUUgk3CS8qIEFERCBpbmRleC1iYXNlZCBjb25zdHJhaW50cyAqLwotI2RlZmluZSBBVF9Q QVNTX0FERF9JTkRFWAkJOAkvKiBBREQgaW5kZXhlcyAqLwotI2RlZmluZSBBVF9QQVNTX0FE RF9PVEhFUkNPTlNUUgk5CS8qIEFERCBvdGhlciBjb25zdHJhaW50cywgZGVmYXVsdHMgKi8K LSNkZWZpbmUgQVRfUEFTU19NSVNDCQkJMTAJLyogb3RoZXIgc3R1ZmYgKi8KLSNkZWZpbmUg QVRfTlVNX1BBU1NFUwkJCTExCisvKgorICogV2UgbXVzdCBhZGQgUEVSSU9EcyBhZnRlciBj b2x1bW5zLCBpbiBjYXNlIHRoZXkgcmVmZXJlbmNlIGEgbmV3bHktYWRkZWQgY29sdW1uLAor ICogYW5kIGJlZm9yZSBjb25zdHJhaW50cywgaW4gY2FzZSBhIG5ld2x5LWFkZGVkIFBLL0ZL IHJlZmVyZW5jZXMgdGhlbS4KKyAqLworI2RlZmluZSBBVF9QQVNTX0FERF9QRVJJT0QJCTUJ LyogQUREIFBFUklPRCAqLworI2RlZmluZSBBVF9QQVNTX0FERF9DT05TVFIJCTYJLyogQURE IGNvbnN0cmFpbnRzIChpbml0aWFsIGV4YW1pbmF0aW9uKSAqLworI2RlZmluZSBBVF9QQVNT X0NPTF9BVFRSUwkJNwkvKiBzZXQgY29sdW1uIGF0dHJpYnV0ZXMsIGVnIE5PVCBOVUxMICov CisjZGVmaW5lIEFUX1BBU1NfQUREX0lOREVYQ09OU1RSCTgJLyogQUREIGluZGV4LWJhc2Vk IGNvbnN0cmFpbnRzICovCisjZGVmaW5lIEFUX1BBU1NfQUREX0lOREVYCQk5CS8qIEFERCBp bmRleGVzICovCisjZGVmaW5lIEFUX1BBU1NfQUREX09USEVSQ09OU1RSCTEwCS8qIEFERCBv dGhlciBjb25zdHJhaW50cywgZGVmYXVsdHMgKi8KKyNkZWZpbmUgQVRfUEFTU19NSVNDCQkJ MTEJLyogb3RoZXIgc3R1ZmYgKi8KKyNkZWZpbmUgQVRfTlVNX1BBU1NFUwkJCTEyCiAKIHR5 cGVkZWYgc3RydWN0IEFsdGVyZWRUYWJsZUluZm8KIHsKQEAgLTM1MSw2ICszNTcsNyBAQCBz dGF0aWMgdm9pZCBSYW5nZVZhckNhbGxiYWNrRm9yVHJ1bmNhdGUoY29uc3QgUmFuZ2VWYXIg KnJlbGF0aW9uLAogCQkJCQkJCQkJCU9pZCByZWxJZCwgT2lkIG9sZFJlbElkLCB2b2lkICph cmcpOwogc3RhdGljIExpc3QgKk1lcmdlQXR0cmlidXRlcyhMaXN0ICpzY2hlbWEsIExpc3Qg KnN1cGVycywgY2hhciByZWxwZXJzaXN0ZW5jZSwKIAkJCQkJCQkgYm9vbCBpc19wYXJ0aXRp b24sIExpc3QgKipzdXBjb25zdHIpOworc3RhdGljIExpc3QgKk1lcmdlUGVyaW9kcyhMaXN0 ICpwZXJpb2RzLCBMaXN0ICpzdXBlcnMpOwogc3RhdGljIGJvb2wgTWVyZ2VDaGVja0NvbnN0 cmFpbnQoTGlzdCAqY29uc3RyYWludHMsIGNoYXIgKm5hbWUsIE5vZGUgKmV4cHIpOwogc3Rh dGljIHZvaWQgTWVyZ2VBdHRyaWJ1dGVzSW50b0V4aXN0aW5nKFJlbGF0aW9uIGNoaWxkX3Jl bCwgUmVsYXRpb24gcGFyZW50X3JlbCk7CiBzdGF0aWMgdm9pZCBNZXJnZUNvbnN0cmFpbnRz SW50b0V4aXN0aW5nKFJlbGF0aW9uIGNoaWxkX3JlbCwgUmVsYXRpb24gcGFyZW50X3JlbCk7 CkBAIC00MjksNiArNDM2LDggQEAgc3RhdGljIE9iamVjdEFkZHJlc3MgQVRFeGVjQWRkQ29s dW1uKExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwKIAkJCQkJCQkJCSBB bHRlclRhYmxlVXRpbGl0eUNvbnRleHQgKmNvbnRleHQpOwogc3RhdGljIGJvb2wgY2hlY2tf Zm9yX2NvbHVtbl9uYW1lX2NvbGxpc2lvbihSZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIgKmNv bG5hbWUsCiAJCQkJCQkJCQkJCWJvb2wgaWZfbm90X2V4aXN0cyk7CitzdGF0aWMgYm9vbCBj aGVja19mb3JfcGVyaW9kX25hbWVfY29sbGlzaW9uKFJlbGF0aW9uIHJlbCwgY29uc3QgY2hh ciAqcGVybmFtZSwKKwkJCQkJCQkJCQkJYm9vbCBpZl9ub3RfZXhpc3RzKTsKIHN0YXRpYyB2 b2lkIGFkZF9jb2x1bW5fZGF0YXR5cGVfZGVwZW5kZW5jeShPaWQgcmVsaWQsIGludDMyIGF0 dG51bSwgT2lkIHR5cGlkKTsKIHN0YXRpYyB2b2lkIGFkZF9jb2x1bW5fY29sbGF0aW9uX2Rl cGVuZGVuY3koT2lkIHJlbGlkLCBpbnQzMiBhdHRudW0sIE9pZCBjb2xsaWQpOwogc3RhdGlj IHZvaWQgQVRQcmVwRHJvcE5vdE51bGwoUmVsYXRpb24gcmVsLCBib29sIHJlY3Vyc2UsIGJv b2wgcmVjdXJzaW5nKTsKQEAgLTQ0OCw2ICs0NTcsMTIgQEAgc3RhdGljIE9iamVjdEFkZHJl c3MgQVRFeGVjQ29sdW1uRGVmYXVsdChSZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIgKmNvbE5h bWUsCiAJCQkJCQkJCQkJIE5vZGUgKm5ld0RlZmF1bHQsIExPQ0tNT0RFIGxvY2ttb2RlKTsK IHN0YXRpYyBPYmplY3RBZGRyZXNzIEFURXhlY0Nvb2tlZENvbHVtbkRlZmF1bHQoUmVsYXRp b24gcmVsLCBBdHRyTnVtYmVyIGF0dG51bSwKIAkJCQkJCQkJCQkJICAgTm9kZSAqbmV3RGVm YXVsdCk7CitzdGF0aWMgT2JqZWN0QWRkcmVzcyBBVEV4ZWNBZGRQZXJpb2QoUmVsYXRpb24g cmVsLCBQZXJpb2REZWYgKnBlcmlvZCwKKwkJCQkJCQkJCSBBbHRlclRhYmxlVXRpbGl0eUNv bnRleHQgKmNvbnRleHQpOworc3RhdGljIHZvaWQgQVRFeGVjRHJvcFBlcmlvZChSZWxhdGlv biByZWwsIGNvbnN0IGNoYXIgKnBlcmlvZE5hbWUsCisJCQkJCQkJIERyb3BCZWhhdmlvciBi ZWhhdmlvciwKKwkJCQkJCQkgYm9vbCByZWN1cnNlLCBib29sIHJlY3Vyc2luZywKKwkJCQkJ CQkgYm9vbCBtaXNzaW5nX29rKTsKIHN0YXRpYyBPYmplY3RBZGRyZXNzIEFURXhlY0FkZElk ZW50aXR5KFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqY29sTmFtZSwKIAkJCQkJCQkJCSAg IE5vZGUgKmRlZiwgTE9DS01PREUgbG9ja21vZGUpOwogc3RhdGljIE9iamVjdEFkZHJlc3Mg QVRFeGVjU2V0SWRlbnRpdHkoUmVsYXRpb24gcmVsLCBjb25zdCBjaGFyICpjb2xOYW1lLApA QCAtNjM4LDYgKzY1MywxMiBAQCBzdGF0aWMgTGlzdCAqR2V0UGFyZW50ZWRGb3JlaWduS2V5 UmVmcyhSZWxhdGlvbiBwYXJ0aXRpb24pOwogc3RhdGljIHZvaWQgQVREZXRhY2hDaGVja05v Rm9yZWlnbktleVJlZnMoUmVsYXRpb24gcGFydGl0aW9uKTsKIHN0YXRpYyBjaGFyIEdldEF0 dHJpYnV0ZUNvbXByZXNzaW9uKE9pZCBhdHR0eXBpZCwgY2hhciAqY29tcHJlc3Npb24pOwog c3RhdGljIGNoYXIgR2V0QXR0cmlidXRlU3RvcmFnZShPaWQgYXR0dHlwaWQsIGNvbnN0IGNo YXIgKnN0b3JhZ2Vtb2RlKTsKK3N0YXRpYyB2b2lkIEFkZFJlbGF0aW9uTmV3UGVyaW9kKFJl bGF0aW9uIHJlbCwgUGVyaW9kRGVmICpwZXJpb2QpOworc3RhdGljIHZvaWQgVmFsaWRhdGVQ ZXJpb2QoUmVsYXRpb24gcmVsLCBQZXJpb2REZWYgKnBlcmlvZCwKKwkJCQkJCSAgIE9pZCAq Y29sVHlwZUlkLAorCQkJCQkJICAgQXR0ck51bWJlciAqc3RhcnRhdHRudW0sIEF0dHJOdW1i ZXIgKmVuZGF0dG51bSk7CitzdGF0aWMgQ29uc3RyYWludCAqbWFrZV9jb25zdHJhaW50X2Zv cl9wZXJpb2QoUmVsYXRpb24gcmVsLCBQZXJpb2REZWYgKnBlcmlvZCwKKwkJCQkJCQkJCQkJ ICBPaWQgY29sdHlwaWQpOwogCiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTg2NCw2ICs4ODUsOSBA QCBEZWZpbmVSZWxhdGlvbihDcmVhdGVTdG10ICpzdG10LCBjaGFyIHJlbGtpbmQsIE9pZCBv d25lcklkLAogCQkJCQkJc3RtdC0+cGFydGJvdW5kICE9IE5VTEwsCiAJCQkJCQkmb2xkX2Nv bnN0cmFpbnRzKTsKIAorCS8qIFBFUklPRHMgc2hvdWxkIGJlIGluaGVyaXRlZCB0b28gKGJ1 dCBhcmVuJ3QgeWV0KS4gKi8KKwlzdG10LT5wZXJpb2RzID0gTWVyZ2VQZXJpb2RzKHN0bXQt PnBlcmlvZHMsIGluaGVyaXRPaWRzKTsKKwogCS8qCiAJICogQ3JlYXRlIGEgdHVwbGUgZGVz Y3JpcHRvciBmcm9tIHRoZSByZWxhdGlvbiBzY2hlbWEuICBOb3RlIHRoYXQgdGhpcwogCSAq IGRlYWxzIHdpdGggY29sdW1uIG5hbWVzLCB0eXBlcywgYW5kIE5PVCBOVUxMIGNvbnN0cmFp bnRzLCBidXQgbm90CkBAIC0xMjUwLDYgKzEyNzQsMjEgQEAgRGVmaW5lUmVsYXRpb24oQ3Jl YXRlU3RtdCAqc3RtdCwgY2hhciByZWxraW5kLCBPaWQgb3duZXJJZCwKIAkJQWRkUmVsYXRp b25OZXdDb25zdHJhaW50cyhyZWwsIE5JTCwgc3RtdC0+Y29uc3RyYWludHMsCiAJCQkJCQkJ CSAgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIHF1ZXJ5U3RyaW5nKTsKIAorCS8qCisJICogQ3JlYXRl IHBlcmlvZHMgZm9yIHRoZSB0YWJsZS4gVGhpcyBtdXN0IGNvbWUgYWZ0ZXIgd2UgY3JlYXRl IGNvbHVtbnMKKwkgKiBhbmQgYmVmb3JlIHdlIGNyZWF0ZSBpbmRleCBjb25zdHJhaW50cy4g SXQgd2lsbCBhdXRvbWF0aWNhbGx5IGNyZWF0ZQorCSAqIE5PVCBOVUxMIGFuZCBDSEVDSyBj b25zdHJhaW50cyBmb3IgdGhlIHBlcmlvZC4KKwkgKi8KKwlmb3JlYWNoKGxpc3RwdHIsIHN0 bXQtPnBlcmlvZHMpCisJeworCQlQZXJpb2REZWYgKnBlcmlvZCA9IChQZXJpb2REZWYgKikg bGZpcnN0KGxpc3RwdHIpOworCisJCS8qIERvbid0IHVwZGF0ZSB0aGUgY291bnQgb2YgY2hl Y2sgY29uc3RyYWludHMgdHdpY2UgKi8KKwkJQ29tbWFuZENvdW50ZXJJbmNyZW1lbnQoKTsK KworCQlBZGRSZWxhdGlvbk5ld1BlcmlvZChyZWwsIHBlcmlvZCk7CisJfQorCiAJT2JqZWN0 QWRkcmVzc1NldChhZGRyZXNzLCBSZWxhdGlvblJlbGF0aW9uSWQsIHJlbGF0aW9uSWQpOwog CiAJLyoKQEAgLTEyNjEsNiArMTMwMCwyMTYgQEAgRGVmaW5lUmVsYXRpb24oQ3JlYXRlU3Rt dCAqc3RtdCwgY2hhciByZWxraW5kLCBPaWQgb3duZXJJZCwKIAlyZXR1cm4gYWRkcmVzczsK IH0KIAorLyoKKyAqIG1ha2VfY29uc3RyYWludF9mb3JfcGVyaW9kCisgKgorICogQnVpbGRz IGEgQ0hFQ0sgQ29uc3RyYWludCB0byBlbnN1cmUgc3RhcnQgPCBlbmQuCisgKiBSZXR1cm5z IHRoZSBDSEVDSyBDb25zdHJhaW50LgorICogQWxzbyBmaWxscyBpbiBwZXJpb2QtPmNvbnN0 cmFpbnRuYW1lIGlmIG5lZWRlZC4KKyAqLworc3RhdGljIENvbnN0cmFpbnQgKgorbWFrZV9j b25zdHJhaW50X2Zvcl9wZXJpb2QoUmVsYXRpb24gcmVsLCBQZXJpb2REZWYgKnBlcmlvZCwg T2lkIGNvbHR5cGlkKQoreworCUNvbHVtblJlZiAgKnNjb2wsICplY29sOworCUNvbnN0cmFp bnQgKmNvbnN0cjsKKwlUeXBlQ2FjaGVFbnRyeSAqdHlwZTsKKworCWlmIChwZXJpb2QtPmNv bnN0cmFpbnRuYW1lID09IE5VTEwpCisJCXBlcmlvZC0+Y29uc3RyYWludG5hbWUgPSBDaG9v c2VDb25zdHJhaW50TmFtZShSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpLAorCQkJCQkJ CQkJCQkJCSAgcGVyaW9kLT5wZXJpb2RuYW1lLAorCQkJCQkJCQkJCQkJCSAgImNoZWNrIiwK KwkJCQkJCQkJCQkJCQkgIFJlbGF0aW9uR2V0TmFtZXNwYWNlKHJlbCksCisJCQkJCQkJCQkJ CQkJICBOSUwpOworCXNjb2wgPSBtYWtlTm9kZShDb2x1bW5SZWYpOworCXNjb2wtPmZpZWxk cyA9IGxpc3RfbWFrZTEobWFrZVN0cmluZyhwc3RyZHVwKHBlcmlvZC0+c3RhcnRjb2xuYW1l KSkpOworCXNjb2wtPmxvY2F0aW9uID0gMDsKKworCWVjb2wgPSBtYWtlTm9kZShDb2x1bW5S ZWYpOworCWVjb2wtPmZpZWxkcyA9IGxpc3RfbWFrZTEobWFrZVN0cmluZyhwc3RyZHVwKHBl cmlvZC0+ZW5kY29sbmFtZSkpKTsKKwllY29sLT5sb2NhdGlvbiA9IDA7CisKKwl0eXBlID0g bG9va3VwX3R5cGVfY2FjaGUoY29sdHlwaWQsIFRZUEVDQUNIRV9MVF9PUFIpOworCWlmICh0 eXBlLT5sdF9vcHIgPT0gSW52YWxpZE9pZCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJy Y29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJIGVycm1zZygiY29s dW1uIFwiJXNcIiBjYW5ub3QgYmUgdXNlZCBpbiBhIFBFUklPRCBiZWNhdXNlIGl0cyB0eXBl ICVzIGhhcyBubyBsZXNzIHRoYW4gb3BlcmF0b3IiLAorCQkJCQkJcGVyaW9kLT5zdGFydGNv bG5hbWUsIGZvcm1hdF90eXBlX2JlKGNvbHR5cGlkKSkpKTsKKworCWNvbnN0ciA9IG1ha2VO b2RlKENvbnN0cmFpbnQpOworCWNvbnN0ci0+Y29udHlwZSA9IENPTlNUUl9DSEVDSzsKKwlj b25zdHItPmNvbm5hbWUgPSBwZXJpb2QtPmNvbnN0cmFpbnRuYW1lOworCWNvbnN0ci0+ZGVm ZXJyYWJsZSA9IGZhbHNlOworCWNvbnN0ci0+aW5pdGRlZmVycmVkID0gZmFsc2U7CisJY29u c3RyLT5sb2NhdGlvbiA9IC0xOworCWNvbnN0ci0+aXNfbm9faW5oZXJpdCA9IGZhbHNlOwor CWNvbnN0ci0+cmF3X2V4cHIgPSAoTm9kZSAqKSBtYWtlU2ltcGxlQV9FeHByKEFFWFBSX09Q LAorCQkJCQkJCQkJCQkJIGdldF9vcG5hbWUodHlwZS0+bHRfb3ByKSwKKwkJCQkJCQkJCQkJ CSAoTm9kZSAqKSBzY29sLAorCQkJCQkJCQkJCQkJIChOb2RlICopIGVjb2wsCisJCQkJCQkJ CQkJCQkgMCk7CisJY29uc3RyLT5jb29rZWRfZXhwciA9IE5VTEw7CisJY29uc3RyLT5za2lw X3ZhbGlkYXRpb24gPSBmYWxzZTsKKwljb25zdHItPmluaXRpYWxseV92YWxpZCA9IHRydWU7 CisKKwlyZXR1cm4gY29uc3RyOworfQorCisvKgorICogVmFsaWRhdGVQZXJpb2QKKyAqCisg KiBMb29rIHVwIHRoZSBhdHRyaWJ1dGVzIHVzZWQgYnkgdGhlIFBFUklPRCwKKyAqIG1ha2Ug c3VyZSB0aGV5IGV4aXN0LCBhcmUgbm90IHN5c3RlbSBjb2x1bW5zLAorICogYW5kIGhhdmUg dGhlIHNhbWUgdHlwZSBhbmQgY29sbGF0aW9uLgorICoKKyAqIFlvdSBtdXN0IGhhdmUgYSBS b3dFeGNsdXNpdmVMb2NrIG9uIHBnX2F0dHJpYnV0ZQorICogYmVmb3JlIGNhbGxpbmcgdGhp cyBmdW5jdGlvbi4KKyAqCisgKiBSZXR1cm4gb3VyIGZpbmRpbmdzIGluIHRoZXNlIG91dHB1 dCBwYXJhbWV0ZXJzOgorICoKKyAqIGNvbFR5cGVJZCAtIHRoZSB0eXBlIG9mIFBFUklPRCBj b2x1bW5zLgorICogc3RhcnRhdHRudW0gLSB0aGUgYXR0bnVtIG9mIHRoZSBzdGFydCBjb2x1 bW4uCisgKiBlbmRhdHRudW0gLSB0aGUgYXR0bnVtIG9mIHRoZSBlbmQgY29sdW1uLgorICov CitzdGF0aWMgdm9pZAorVmFsaWRhdGVQZXJpb2QoUmVsYXRpb24gcmVsLCBQZXJpb2REZWYg KnBlcmlvZCwKKwkJCSAgIE9pZCAqY29sVHlwZUlkLAorCQkJICAgQXR0ck51bWJlciAqc3Rh cnRhdHRudW0sIEF0dHJOdW1iZXIgKmVuZGF0dG51bSkKK3sKKwlIZWFwVHVwbGUgc3RhcnR0 dXBsZTsKKwlIZWFwVHVwbGUgZW5kdHVwbGU7CisJRm9ybV9wZ19hdHRyaWJ1dGUJYXR0dHVw bGU7CisJT2lkCWF0dGNvbGxhdGlvbjsKKworCS8qIEZpbmQgdGhlIHN0YXJ0IGNvbHVtbiAq LworCXN0YXJ0dHVwbGUgPSBTZWFyY2hTeXNDYWNoZUNvcHlBdHROYW1lKFJlbGF0aW9uR2V0 UmVsaWQocmVsKSwgcGVyaW9kLT5zdGFydGNvbG5hbWUpOworCWlmICghSGVhcFR1cGxlSXNW YWxpZChzdGFydHR1cGxlKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJD T0RFX1VOREVGSU5FRF9DT0xVTU4pLAorCQkJCSBlcnJtc2coImNvbHVtbiBcIiVzXCIgb2Yg cmVsYXRpb24gXCIlc1wiIGRvZXMgbm90IGV4aXN0IiwKKwkJCQkJCXBlcmlvZC0+c3RhcnRj b2xuYW1lLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKSkpOworCWF0dHR1cGxlID0g KEZvcm1fcGdfYXR0cmlidXRlKSBHRVRTVFJVQ1Qoc3RhcnR0dXBsZSk7CisJKmNvbFR5cGVJ ZCA9IGF0dHR1cGxlLT5hdHR0eXBpZDsKKwlhdHRjb2xsYXRpb24gPSBhdHR0dXBsZS0+YXR0 Y29sbGF0aW9uOworCSpzdGFydGF0dG51bSA9IGF0dHR1cGxlLT5hdHRudW07CisKKwkvKiBN YWtlIHN1cmUgaXQncyBub3QgYSBzeXN0ZW0gY29sdW1uICovCisJaWYgKCpzdGFydGF0dG51 bSA8PSAwKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJ RF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJIGVycm1zZygiY2Fubm90IHVzZSBzeXN0ZW0g Y29sdW1uIFwiJXNcIiBpbiBwZXJpb2QiLAorCQkJCQkJcGVyaW9kLT5zdGFydGNvbG5hbWUp KSk7CisKKwkvKiBGaW5kIHRoZSBlbmQgY29sdW1uICovCisJZW5kdHVwbGUgPSBTZWFyY2hT eXNDYWNoZUNvcHlBdHROYW1lKFJlbGF0aW9uR2V0UmVsaWQocmVsKSwgcGVyaW9kLT5lbmRj b2xuYW1lKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQoZW5kdHVwbGUpKQorCQllcmVwb3J0 KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX0NPTFVNTiksCisJCQkJ IGVycm1zZygiY29sdW1uIFwiJXNcIiBvZiByZWxhdGlvbiBcIiVzXCIgZG9lcyBub3QgZXhp c3QiLAorCQkJCQkJcGVyaW9kLT5lbmRjb2xuYW1lLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFt ZShyZWwpKSkpOworCWF0dHR1cGxlID0gKEZvcm1fcGdfYXR0cmlidXRlKSBHRVRTVFJVQ1Qo ZW5kdHVwbGUpOworCSplbmRhdHRudW0gPSBhdHR0dXBsZS0+YXR0bnVtOworCisJLyogTWFr ZSBzdXJlIGl0J3Mgbm90IGEgc3lzdGVtIGNvbHVtbiAqLworCWlmICgqZW5kYXR0bnVtIDw9 IDApCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09C SkVDVF9ERUZJTklUSU9OKSwKKwkJCQkgZXJybXNnKCJjYW5ub3QgdXNlIHN5c3RlbSBjb2x1 bW4gXCIlc1wiIGluIHBlcmlvZCIsCisJCQkJCQlwZXJpb2QtPmVuZGNvbG5hbWUpKSk7CisK KwkvKiBCb3RoIGNvbHVtbnMgbXVzdCBiZSBvZiBzYW1lIHR5cGUgKi8KKwlpZiAoKmNvbFR5 cGVJZCAhPSBhdHR0dXBsZS0+YXR0dHlwaWQpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVy cmNvZGUoRVJSQ09ERV9EQVRBVFlQRV9NSVNNQVRDSCksCisJCQkJIGVycm1zZygic3RhcnQg YW5kIGVuZCBjb2x1bW5zIG9mIHBlcmlvZCBtdXN0IGJlIG9mIHNhbWUgdHlwZSIpKSk7CisK KwkvKiBCb3RoIGNvbHVtbnMgbXVzdCBoYXZlIHRoZSBzYW1lIGNvbGxhdGlvbiAqLworCWlm IChhdHRjb2xsYXRpb24gIT0gYXR0dHVwbGUtPmF0dGNvbGxhdGlvbikKKwkJZXJlcG9ydChF UlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0NPTExBVElPTl9NSVNNQVRDSCksCisJCQkJ IGVycm1zZygic3RhcnQgYW5kIGVuZCBjb2x1bW5zIG9mIHBlcmlvZCBtdXN0IGhhdmUgc2Ft ZSBjb2xsYXRpb24iKSkpOworCisJaGVhcF9mcmVldHVwbGUoc3RhcnR0dXBsZSk7CisJaGVh cF9mcmVldHVwbGUoZW5kdHVwbGUpOworfQorCisvKgorICogY2hvb3NlX3JhbmdldHlwZV9m b3JfcGVyaW9kCisgKgorICogRmluZCBhIHN1aXRhYmxlIHJhbmdlIHR5cGUgZm9yIG9wZXJh dGlvbnMgaW52b2x2aW5nIHRoaXMgcGVyaW9kLgorICogVXNlIHRoZSByYW5nZXR5cGUgb3B0 aW9uIGlmIHByb3ZpZGVkLCBvdGhlcndpc2UgdHJ5IHRvIGZpbmQgYQorICogbm9uLWFtYmln dW91cyBleGlzdGluZyB0eXBlLgorICovCitPaWQKK2Nob29zZV9yYW5nZXR5cGVfZm9yX3Bl cmlvZChQZXJpb2REZWYgKnBlcmlvZCwgT2lkIGNvbHR5cGlkKQoreworCU9pZAlybmd0eXBp ZDsKKworCWlmIChwZXJpb2QtPnJhbmdldHlwZW5hbWUgIT0gTlVMTCkKKwl7CisJCS8qIE1h a2Ugc3VyZSBpdCBleGlzdHMgKi8KKwkJcm5ndHlwaWQgPSBUeXBlbmFtZUdldFR5cGlkRXh0 ZW5kZWQocGVyaW9kLT5yYW5nZXR5cGVuYW1lLCBmYWxzZSk7CisJCWlmIChybmd0eXBpZCA9 PSBJbnZhbGlkT2lkKQorCQkJZXJlcG9ydChFUlJPUiwgKGVycmNvZGUoRVJSQ09ERV9VTkRF RklORURfT0JKRUNUKSwKKwkJCQkJIGVycm1zZygiUmFuZ2UgdHlwZSAlcyBub3QgZm91bmQi LCBwZXJpb2QtPnJhbmdldHlwZW5hbWUpKSk7CisKKwkJLyogTWFrZSBzdXJlIGl0IGlzIGEg cmFuZ2UgdHlwZSAqLworCQlpZiAoIXR5cGVfaXNfcmFuZ2Uocm5ndHlwaWQpKQorCQkJZXJl cG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBVFlQRV9NSVNNQVRDSCks CisJCQkJCSBlcnJtc2coIlR5cGUgJXMgaXMgbm90IGEgcmFuZ2UgdHlwZSIsIHBlcmlvZC0+ cmFuZ2V0eXBlbmFtZSkpKTsKKworCQkvKiBNYWtlIHN1cmUgaXQgbWF0Y2hlcyB0aGUgY29s dW1uIHR5cGUgKi8KKwkJaWYgKGdldF9yYW5nZV9zdWJ0eXBlKHJuZ3R5cGlkKSAhPSBjb2x0 eXBpZCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQVRZ UEVfTUlTTUFUQ0gpLAorCQkJCQkgZXJybXNnKCJSYW5nZSB0eXBlICVzIGRvZXMgbm90IG1h dGNoIGNvbHVtbiB0eXBlICVzIiwKKwkJCQkJCSBwZXJpb2QtPnJhbmdldHlwZW5hbWUsCisJ CQkJCQkgZm9ybWF0X3R5cGVfYmUoY29sdHlwaWQpKSkpOworCX0KKwllbHNlCisJeworCQly bmd0eXBpZCA9IGdldF9zdWJ0eXBlX3JhbmdlKGNvbHR5cGlkKTsKKwkJaWYgKHJuZ3R5cGlk ID09IEludmFsaWRPaWQpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJD T0RFX1VOREVGSU5FRF9PQkpFQ1QpLAorCQkJCQkgZXJybXNnKCJubyByYW5nZSB0eXBlIGZv ciAlcyBmb3VuZCBmb3IgcGVyaW9kICVzIiwKKwkJCQkJCQlmb3JtYXRfdHlwZV9iZShjb2x0 eXBpZCksCisJCQkJCQkJcGVyaW9kLT5wZXJpb2RuYW1lKSwKKwkJCQkJIGVycmhpbnQoIllv dSBjYW4gZGVmaW5lIGEgY3VzdG9tIHJhbmdlIHR5cGUgd2l0aCBDUkVBVEUgVFlQRSIpKSk7 CisKKwl9CisKKwlyZXR1cm4gcm5ndHlwaWQ7Cit9CisKK3N0YXRpYyB2b2lkCitBZGRSZWxh dGlvbk5ld1BlcmlvZChSZWxhdGlvbiByZWwsIFBlcmlvZERlZiAqcGVyaW9kKQoreworCVJl bGF0aW9uCWF0dHJlbGF0aW9uOworCU9pZAkJCWNvbHR5cGlkOworCUF0dHJOdW1iZXIJc3Rh cnRhdHRudW0sIGVuZGF0dG51bTsKKwlPaWQJCQljb25vaWQ7CisJQ29uc3RyYWludCAqY29u c3RyOworCUxpc3QJICAgKm5ld2NvbnN0cnM7CisKKwkvKiBUaGUgcGVyaW9kIG5hbWUgbXVz dCBub3QgYWxyZWFkeSBleGlzdCAqLworCSh2b2lkKSBjaGVja19mb3JfcGVyaW9kX25hbWVf Y29sbGlzaW9uKHJlbCwgcGVyaW9kLT5wZXJpb2RuYW1lLCBmYWxzZSk7CisKKwlhdHRyZWxh dGlvbiA9IHRhYmxlX29wZW4oQXR0cmlidXRlUmVsYXRpb25JZCwgUm93RXhjbHVzaXZlTG9j ayk7CisJVmFsaWRhdGVQZXJpb2QocmVsLCBwZXJpb2QsICZjb2x0eXBpZCwgJnN0YXJ0YXR0 bnVtLCAmZW5kYXR0bnVtKTsKKworCS8qIFRoZSBwYXJzZXIgaGFzIGFscmVhZHkgZm91bmQg cGVyaW9kLT5ybmd0eXBpZCAqLworCisJY29uc3RyID0gbWFrZV9jb25zdHJhaW50X2Zvcl9w ZXJpb2QocmVsLCBwZXJpb2QsIGNvbHR5cGlkKTsKKwluZXdjb25zdHJzID0gQWRkUmVsYXRp b25OZXdDb25zdHJhaW50cyhyZWwsIE5JTCwgbGlzdF9tYWtlMShjb25zdHIpLCBmYWxzZSwg dHJ1ZSwgdHJ1ZSwgTlVMTCk7CisJY29ub2lkID0gKChDb29rZWRDb25zdHJhaW50ICopIGxp bml0aWFsKG5ld2NvbnN0cnMpKS0+Y29ub2lkOworCisJLyogU2F2ZSBpdCAqLworCVN0b3Jl UGVyaW9kKHJlbCwgcGVyaW9kLT5wZXJpb2RuYW1lLCBzdGFydGF0dG51bSwgZW5kYXR0bnVt LCBwZXJpb2QtPnJuZ3R5cGlkLCBjb25vaWQpOworCisJdGFibGVfY2xvc2UoYXR0cmVsYXRp b24sIFJvd0V4Y2x1c2l2ZUxvY2spOworfQorCiAvKgogICogRW1pdCB0aGUgcmlnaHQgZXJy b3Igb3Igd2FybmluZyBtZXNzYWdlIGZvciBhICJEUk9QIiBjb21tYW5kIGlzc3VlZCBvbiBh CiAgKiBub24tZXhpc3RlbnQgcmVsYXRpb24KQEAgLTMxNjIsNiArMzQxMSw2NCBAQCBNZXJn ZUF0dHJpYnV0ZXMoTGlzdCAqc2NoZW1hLCBMaXN0ICpzdXBlcnMsIGNoYXIgcmVscGVyc2lz dGVuY2UsCiB9CiAKIAorLyotLS0tLS0tLS0tCisgKiBNZXJnZVBlcmlvZHMKKyAqCQlSZXR1 cm5zIG5ldyBwZXJpb2QgbGlzdCBnaXZlbiBpbml0aWFsIHBlcmlvZHMgYW5kIHN1cGVyY2xh c3Nlcy4KKyAqCisgKiBGb3Igbm93IHdlIGRvbid0IHN1cHBvcnQgaW5oZXJpdGVuY2Ugd2l0 aCBQRVJJT0RzLAorICogYnV0IHdlIG1pZ2h0IG1ha2UgaXQgd29yayBldmVudHVhbGx5Lgor ICoKKyAqIFdlIGNhbiBvbWl0IGxvdHMgb2YgY2hlY2tzIGhlcmUgYW5kIGFzc3VtZSBNZXJn ZUF0dHJpYnV0ZXMgYWxyZWFkeSBkaWQgdGhlbSwKKyAqIGZvciBleGFtcGxlIHRoYXQgY2hp bGQgJiBwYXJlbnRzIGFyZSBub3QgYSBtaXggb2YgcGVybWFuZW50IGFuZCB0ZW1wLgorICov CitzdGF0aWMgTGlzdCAqCitNZXJnZVBlcmlvZHMoTGlzdCAqcGVyaW9kcywgTGlzdCAqc3Vw ZXJzKQoreworCUxpc3RDZWxsICAgKmVudHJ5OworCisJLyogSWYgd2UgaGF2ZSBhIFBFUklP RCB0aGVuIHN1cGVycyBtdXN0IGJlIGVtcHR5LiAqLworCisJaWYgKGxpc3RfbGVuZ3RoKHBl cmlvZHMpID4gMCAmJiBsaXN0X2xlbmd0aChzdXBlcnMpID4gMCkKKwkJZXJlcG9ydChFUlJP UiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJ IGVycm1zZygiSW5oZXJpdGluZyBpcyBub3Qgc3VwcG9ydGVkIHdoZW4gYSB0YWJsZSBoYXMg YSBQRVJJT0QiKSkpOworCisJLyogSWYgYW55IHBhcmVudCB0YWJsZSBoYXMgYSBQRVJJT0Qs IHRoZW4gZmFpbC4gKi8KKworCWZvcmVhY2goZW50cnksIHN1cGVycykKKwl7CisJCU9pZAkJ CXBhcmVudCA9IGxmaXJzdF9vaWQoZW50cnkpOworCQlSZWxhdGlvbglyZWxhdGlvbjsKKwkJ UmVsYXRpb24JcGdfcGVyaW9kOworCQlTeXNTY2FuRGVzYyBzY2FuOworCQlTY2FuS2V5RGF0 YSBza2V5WzFdOworCQlIZWFwVHVwbGUJdHVwbGU7CisKKwkJLyogY2FsbGVyIGFscmVhZHkg Z290IGxvY2sgKi8KKwkJcmVsYXRpb24gPSB0YWJsZV9vcGVuKHBhcmVudCwgTm9Mb2NrKTsK KwkJcGdfcGVyaW9kID0gdGFibGVfb3BlbihQZXJpb2RSZWxhdGlvbklkLCBBY2Nlc3NTaGFy ZUxvY2spOworCisJCVNjYW5LZXlJbml0KCZza2V5WzBdLAorCQkJCQlBbnVtX3BnX3Blcmlv ZF9wZXJyZWxpZCwKKwkJCQkJQlRFcXVhbFN0cmF0ZWd5TnVtYmVyLCBGX09JREVRLAorCQkJ CQlPYmplY3RJZEdldERhdHVtKHBhcmVudCkpOworCisJCXNjYW4gPSBzeXN0YWJsZV9iZWdp bnNjYW4ocGdfcGVyaW9kLCBQZXJpb2RSZWxpZE5hbWVJbmRleElkLCB0cnVlLAorCQkJCQkJ CQkgIE5VTEwsIDEsIHNrZXkpOworCisJCWlmIChIZWFwVHVwbGVJc1ZhbGlkKHR1cGxlID0g c3lzdGFibGVfZ2V0bmV4dChzY2FuKSkpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJy Y29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJCSBlcnJtc2coIklu aGVyaXRpbmcgZnJvbSBhIHRhYmxlIHdpdGggYSBQRVJJT0QgaXMgbm90IHN1cHBvcnRlZCIp KSk7CisKKwkJc3lzdGFibGVfZW5kc2NhbihzY2FuKTsKKwkJdGFibGVfY2xvc2UocGdfcGVy aW9kLCBBY2Nlc3NTaGFyZUxvY2spOworCQl0YWJsZV9jbG9zZShyZWxhdGlvbiwgTm9Mb2Nr KTsKKwl9CisKKwlyZXR1cm4gcGVyaW9kczsKK30KKwogLyoKICAqIE1lcmdlQ2hlY2tDb25z dHJhaW50CiAgKgkJVHJ5IHRvIG1lcmdlIGFuIGluaGVyaXRlZCBDSEVDSyBjb25zdHJhaW50 IHdpdGggcHJldmlvdXMgb25lcwpAQCAtNDIwNCwxMiArNDUxMSwxMiBAQCBBbHRlclRhYmxl KEFsdGVyVGFibGVTdG10ICpzdG10LCBMT0NLTU9ERSBsb2NrbW9kZSwKICAqIGV4aXN0aW5n IHF1ZXJ5IHBsYW5zLiAgT24gdGhlIGFzc3VtcHRpb24gaXQncyBub3QgdXNlZCBmb3Igc3Vj aCwgd2UKICAqIGRvbid0IGhhdmUgdG8gcmVqZWN0IHBlbmRpbmcgQUZURVIgdHJpZ2dlcnMs IGVpdGhlci4KICAqCi0gKiBBbHNvLCBzaW5jZSB3ZSBkb24ndCBoYXZlIGFuIEFsdGVyVGFi bGVVdGlsaXR5Q29udGV4dCwgdGhpcyBjYW5ub3QgYmUKKyAqIEFsc28sIGlmIHlvdSBkb24n dCBwYXNzIGFuIEFsdGVyVGFibGVVdGlsaXR5Q29udGV4dCwgdGhpcyBjYW5ub3QgYmUKICAq IHVzZWQgZm9yIGFueSBzdWJjb21tYW5kIHR5cGVzIHRoYXQgcmVxdWlyZSBwYXJzZSB0cmFu c2Zvcm1hdGlvbiBvcgogICogY291bGQgZ2VuZXJhdGUgc3ViY29tbWFuZHMgdGhhdCBoYXZl IHRvIGJlIHBhc3NlZCB0byBQcm9jZXNzVXRpbGl0eS4KICAqLwogdm9pZAotQWx0ZXJUYWJs ZUludGVybmFsKE9pZCByZWxpZCwgTGlzdCAqY21kcywgYm9vbCByZWN1cnNlKQorQWx0ZXJU YWJsZUludGVybmFsKE9pZCByZWxpZCwgTGlzdCAqY21kcywgYm9vbCByZWN1cnNlLCBBbHRl clRhYmxlVXRpbGl0eUNvbnRleHQgKmNvbnRleHQpCiB7CiAJUmVsYXRpb24JcmVsOwogCUxP Q0tNT0RFCWxvY2ttb2RlID0gQWx0ZXJUYWJsZUdldExvY2tMZXZlbChjbWRzKTsKQEAgLTQy MTgsNyArNDUyNSw3IEBAIEFsdGVyVGFibGVJbnRlcm5hbChPaWQgcmVsaWQsIExpc3QgKmNt ZHMsIGJvb2wgcmVjdXJzZSkKIAogCUV2ZW50VHJpZ2dlckFsdGVyVGFibGVSZWxpZChyZWxp ZCk7CiAKLQlBVENvbnRyb2xsZXIoTlVMTCwgcmVsLCBjbWRzLCByZWN1cnNlLCBsb2NrbW9k ZSwgTlVMTCk7CisJQVRDb250cm9sbGVyKE5VTEwsIHJlbCwgY21kcywgcmVjdXJzZSwgbG9j a21vZGUsIGNvbnRleHQpOwogfQogCiAvKgpAQCAtNDMxMSw2ICs0NjE4LDggQEAgQWx0ZXJU YWJsZUdldExvY2tMZXZlbChMaXN0ICpjbWRzKQogCQkJY2FzZSBBVF9FbmFibGVSZXBsaWNh UnVsZToJLyogbWF5IGNoYW5nZSBTRUxFQ1QgcnVsZXMgKi8KIAkJCWNhc2UgQVRfRW5hYmxl UnVsZTogLyogbWF5IGNoYW5nZSBTRUxFQ1QgcnVsZXMgKi8KIAkJCWNhc2UgQVRfRGlzYWJs ZVJ1bGU6CS8qIG1heSBjaGFuZ2UgU0VMRUNUIHJ1bGVzICovCisJCQljYXNlIEFUX0FkZFBl cmlvZDogLyogc2hhcmVzIG5hbWVzcGFjZSB3aXRoIGNvbHVtbnMsIGFkZHMgY29uc3RyYWlu dCAqLworCQkJY2FzZSBBVF9Ecm9wUGVyaW9kOgogCQkJCWNtZF9sb2NrbW9kZSA9IEFjY2Vz c0V4Y2x1c2l2ZUxvY2s7CiAJCQkJYnJlYWs7CiAKQEAgLTQ2MzQsNiArNDk0MywxNCBAQCBB VFByZXBDbWQoTGlzdCAqKndxdWV1ZSwgUmVsYXRpb24gcmVsLCBBbHRlclRhYmxlQ21kICpj bWQsCiAJCQkvKiBUaGlzIGNvbW1hbmQgbmV2ZXIgcmVjdXJzZXMgKi8KIAkJCXBhc3MgPSBB VF9QQVNTX0FERF9PVEhFUkNPTlNUUjsKIAkJCWJyZWFrOworCQljYXNlIEFUX0FkZFBlcmlv ZDogLyogQUxURVIgVEFCTEUgLi4uIEFERCBQRVJJT0QgRk9SIG5hbWUgKHN0YXJ0LCBlbmQp ICovCisJCQlBVFNpbXBsZVBlcm1pc3Npb25zKGNtZC0+c3VidHlwZSwgcmVsLCBBVFRfVEFC TEUpOworCQkJcGFzcyA9IEFUX1BBU1NfQUREX1BFUklPRDsKKwkJCWJyZWFrOworCQljYXNl IEFUX0Ryb3BQZXJpb2Q6IC8qIEFMVEVSIFRBQkxFIC4uLiBEUk9QIFBFUklPRCBGT1IgbmFt ZSAqLworCQkJQVRTaW1wbGVQZXJtaXNzaW9ucyhjbWQtPnN1YnR5cGUsIHJlbCwgQVRUX1RB QkxFKTsKKwkJCXBhc3MgPSBBVF9QQVNTX0RST1A7CisJCQlicmVhazsKIAkJY2FzZSBBVF9B ZGRJZGVudGl0eToKIAkJCUFUU2ltcGxlUGVybWlzc2lvbnMoY21kLT5zdWJ0eXBlLCByZWws IEFUVF9UQUJMRSB8IEFUVF9WSUVXIHwgQVRUX0ZPUkVJR05fVEFCTEUpOwogCQkJLyogVGhp cyBjb21tYW5kIG5ldmVyIHJlY3Vyc2VzICovCkBAIC01MDI5LDYgKzUzNDYsMTQgQEAgQVRF eGVjQ21kKExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwKIAkJY2FzZSBB VF9Db29rZWRDb2x1bW5EZWZhdWx0OgkvKiBhZGQgYSBwcmUtY29va2VkIGRlZmF1bHQgKi8K IAkJCWFkZHJlc3MgPSBBVEV4ZWNDb29rZWRDb2x1bW5EZWZhdWx0KHJlbCwgY21kLT5udW0s IGNtZC0+ZGVmKTsKIAkJCWJyZWFrOworCQljYXNlIEFUX0FkZFBlcmlvZDoKKwkJCWFkZHJl c3MgPSBBVEV4ZWNBZGRQZXJpb2QocmVsLCAoUGVyaW9kRGVmICopIGNtZC0+ZGVmLCBjb250 ZXh0KTsKKwkJCWJyZWFrOworCQljYXNlIEFUX0Ryb3BQZXJpb2Q6CisJCQlBVEV4ZWNEcm9w UGVyaW9kKHJlbCwgY21kLT5uYW1lLCBjbWQtPmJlaGF2aW9yLAorCQkJCQkJCQkgZmFsc2Us IGZhbHNlLAorCQkJCQkJCQkgY21kLT5taXNzaW5nX29rKTsKKwkJCWJyZWFrOwogCQljYXNl IEFUX0FkZElkZW50aXR5OgogCQkJY21kID0gQVRQYXJzZVRyYW5zZm9ybUNtZCh3cXVldWUs IHRhYiwgcmVsLCBjbWQsIGZhbHNlLCBsb2NrbW9kZSwKIAkJCQkJCQkJCSAgY3VyX3Bhc3Ms IGNvbnRleHQpOwpAQCAtNjE2OCw2ICs2NDkzLDggQEAgYWx0ZXJfdGFibGVfdHlwZV90b19z dHJpbmcoQWx0ZXJUYWJsZVR5cGUgY21kdHlwZSkKIAkJY2FzZSBBVF9BZGRDb2x1bW46CiAJ CWNhc2UgQVRfQWRkQ29sdW1uVG9WaWV3OgogCQkJcmV0dXJuICJBREQgQ09MVU1OIjsKKwkJ Y2FzZSBBVF9BZGRQZXJpb2Q6CisJCQlyZXR1cm4gIkFERCBQRVJJT0QiOwogCQljYXNlIEFU X0NvbHVtbkRlZmF1bHQ6CiAJCWNhc2UgQVRfQ29va2VkQ29sdW1uRGVmYXVsdDoKIAkJCXJl dHVybiAiQUxURVIgQ09MVU1OIC4uLiBTRVQgREVGQVVMVCI7CkBAIC02MTkxLDYgKzY1MTgs OCBAQCBhbHRlcl90YWJsZV90eXBlX3RvX3N0cmluZyhBbHRlclRhYmxlVHlwZSBjbWR0eXBl KQogCQkJcmV0dXJuICJBTFRFUiBDT0xVTU4gLi4uIFNFVCBDT01QUkVTU0lPTiI7CiAJCWNh c2UgQVRfRHJvcENvbHVtbjoKIAkJCXJldHVybiAiRFJPUCBDT0xVTU4iOworCQljYXNlIEFU X0Ryb3BQZXJpb2Q6CisJCQlyZXR1cm4gIkRST1AgUEVSSU9EIjsKIAkJY2FzZSBBVF9BZGRJ bmRleDoKIAkJY2FzZSBBVF9SZUFkZEluZGV4OgogCQkJcmV0dXJuIE5VTEw7CQkvKiBub3Qg cmVhbCBncmFtbWFyICovCkBAIC03MTk3LDE0ICs3NTI2LDI5IEBAIEFURXhlY0FkZENvbHVt bihMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwK IC8qCiAgKiBJZiBhIG5ldyBvciByZW5hbWVkIGNvbHVtbiB3aWxsIGNvbGxpZGUgd2l0aCB0 aGUgbmFtZSBvZiBhbiBleGlzdGluZwogICogY29sdW1uIGFuZCBpZl9ub3RfZXhpc3RzIGlz IGZhbHNlIHRoZW4gZXJyb3Igb3V0LCBlbHNlIGRvIG5vdGhpbmcuCisgKgorICogU2VlIGFs c28gY2hlY2tfZm9yX3BlcmlvZF9uYW1lX2NvbGxpc2lvbi4KICAqLwogc3RhdGljIGJvb2wK IGNoZWNrX2Zvcl9jb2x1bW5fbmFtZV9jb2xsaXNpb24oUmVsYXRpb24gcmVsLCBjb25zdCBj aGFyICpjb2xuYW1lLAogCQkJCQkJCQlib29sIGlmX25vdF9leGlzdHMpCiB7Ci0JSGVhcFR1 cGxlCWF0dFR1cGxlOworCUhlYXBUdXBsZQlhdHRUdXBsZSwgcGVyVHVwbGU7CiAJaW50CQkJ YXR0bnVtOwogCisJLyogSWYgdGhlIG5hbWUgZXhpc3RzIGFzIGEgcGVyaW9kLCB3ZSdyZSBk b25lLiAqLworCXBlclR1cGxlID0gU2VhcmNoU3lzQ2FjaGUyKFBFUklPRE5BTUUsCisJCQkJ CQkJICAgT2JqZWN0SWRHZXREYXR1bShSZWxhdGlvbkdldFJlbGlkKHJlbCkpLAorCQkJCQkJ CSAgIFBvaW50ZXJHZXREYXR1bShjb2xuYW1lKSk7CisJaWYgKEhlYXBUdXBsZUlzVmFsaWQo cGVyVHVwbGUpKQorCXsKKwkJUmVsZWFzZVN5c0NhY2hlKHBlclR1cGxlKTsKKwkJZXJlcG9y dChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0RVUExJQ0FURV9DT0xVTU4pLAorCQkJ CSBlcnJtc2coImNvbHVtbiBuYW1lIFwiJXNcIiBjb25mbGljdHMgd2l0aCBhIHBlcmlvZCBu YW1lIiwKKwkJCQkJCWNvbG5hbWUpKSk7CisJfQorCiAJLyoKIAkgKiB0aGlzIHRlc3QgaXMg ZGVsaWJlcmF0ZWx5IG5vdCBhdHRpc2Ryb3BwZWQtYXdhcmUsIHNpbmNlIGlmIG9uZSB0cmll cyB0bwogCSAqIGFkZCBhIGNvbHVtbiBtYXRjaGluZyBhIGRyb3BwZWQgY29sdW1uIG5hbWUs IGl0J3MgZ29ubmEgZmFpbCBhbnl3YXkuCkBAIC03MjQ4LDYgKzc1OTIsNzggQEAgY2hlY2tf Zm9yX2NvbHVtbl9uYW1lX2NvbGxpc2lvbihSZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIgKmNv bG5hbWUsCiAJcmV0dXJuIHRydWU7CiB9CiAKKy8qCisgKiBJZiBhIG5ldyBwZXJpb2QgbmFt ZSB3aWxsIGNvbGxpZGUgd2l0aCB0aGUgbmFtZSBvZiBhbiBleGlzdGluZyBjb2x1bW4gb3IK KyAqIHBlcmlvZCBbYW5kIGlmX25vdF9leGlzdHMgaXMgZmFsc2VdIHRoZW4gZXJyb3Igb3V0 LCBlbHNlIGRvIG5vdGhpbmcuCisgKgorICogU2VlIGFsc28gY2hlY2tfZm9yX2NvbHVtbl9u YW1lX2NvbGxpc2lvbi4KKyAqLworc3RhdGljIGJvb2wKK2NoZWNrX2Zvcl9wZXJpb2RfbmFt ZV9jb2xsaXNpb24oUmVsYXRpb24gcmVsLCBjb25zdCBjaGFyICpwZXJuYW1lLAorCQkJCQkJ CQlib29sIGlmX25vdF9leGlzdHMpCit7CisJSGVhcFR1cGxlCWF0dFR1cGxlLCBwZXJUdXBs ZTsKKwlpbnQJCQlhdHRudW07CisKKwkvKiBUT0RPOiBpbXBsZW1lbnQgSUYgW05PVF0gRVhJ U1RTIGZvciBwZXJpb2RzICovCisJQXNzZXJ0KCFpZl9ub3RfZXhpc3RzKTsKKworCS8qIElm IHRoZXJlIGlzIGFscmVhZHkgYSBwZXJpb2Qgd2l0aCB0aGlzIG5hbWUsIHRoZW4gd2UncmUg ZG9uZS4gKi8KKwlwZXJUdXBsZSA9IFNlYXJjaFN5c0NhY2hlMihQRVJJT0ROQU1FLAorCQkJ CQkJCSAgIE9iamVjdElkR2V0RGF0dW0oUmVsYXRpb25HZXRSZWxpZChyZWwpKSwKKwkJCQkJ CQkgICBQb2ludGVyR2V0RGF0dW0ocGVybmFtZSkpOworCWlmIChIZWFwVHVwbGVJc1ZhbGlk KHBlclR1cGxlKSkKKwl7CisJCWlmIChpZl9ub3RfZXhpc3RzKQorCQl7CisJCQlSZWxlYXNl U3lzQ2FjaGUocGVyVHVwbGUpOworCisJCQllcmVwb3J0KE5PVElDRSwKKwkJCQkJKGVycmNv ZGUoRVJSQ09ERV9EVVBMSUNBVEVfQ09MVU1OKSwKKwkJCQkJIGVycm1zZygicGVyaW9kIFwi JXNcIiBvZiByZWxhdGlvbiBcIiVzXCIgYWxyZWFkeSBleGlzdHMsIHNraXBwaW5nIiwKKwkJ CQkJCQlwZXJuYW1lLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKSkpOworCQkJcmV0 dXJuIGZhbHNlOworCQl9CisKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJD T0RFX0RVUExJQ0FURV9DT0xVTU4pLAorCQkJCSBlcnJtc2coInBlcmlvZCBcIiVzXCIgb2Yg cmVsYXRpb24gXCIlc1wiIGFscmVhZHkgZXhpc3RzIiwKKwkJCQkJCXBlcm5hbWUsIFJlbGF0 aW9uR2V0UmVsYXRpb25OYW1lKHJlbCkpKSk7CisJfQorCisJLyoKKwkgKiB0aGlzIHRlc3Qg aXMgZGVsaWJlcmF0ZWx5IG5vdCBhdHRpc2Ryb3BwZWQtYXdhcmUsIHNpbmNlIGlmIG9uZSB0 cmllcyB0bworCSAqIGFkZCBhIGNvbHVtbiBtYXRjaGluZyBhIGRyb3BwZWQgY29sdW1uIG5h bWUsIGl0J3MgZ29ubmEgZmFpbCBhbnl3YXkuCisJICoKKwkgKiBYWFg6IERvZXMgdGhpcyBo b2xkIGZvciBwZXJpb2RzPworCSAqLworCWF0dFR1cGxlID0gU2VhcmNoU3lzQ2FjaGUyKEFU VE5BTUUsCisJCQkJCQkJICAgT2JqZWN0SWRHZXREYXR1bShSZWxhdGlvbkdldFJlbGlkKHJl bCkpLAorCQkJCQkJCSAgIFBvaW50ZXJHZXREYXR1bShwZXJuYW1lKSk7CisJaWYgKEhlYXBU dXBsZUlzVmFsaWQoYXR0VHVwbGUpKQorCXsKKwkJYXR0bnVtID0gKChGb3JtX3BnX2F0dHJp YnV0ZSkgR0VUU1RSVUNUKGF0dFR1cGxlKSktPmF0dG51bTsKKwkJUmVsZWFzZVN5c0NhY2hl KGF0dFR1cGxlKTsKKworCQkvKgorCQkgKiBXZSB0aHJvdyBhIGRpZmZlcmVudCBlcnJvciBt ZXNzYWdlIGZvciBjb25mbGljdHMgd2l0aCBzeXN0ZW0gY29sdW1uCisJCSAqIG5hbWVzLCBz aW5jZSB0aGV5IGFyZSBub3JtYWxseSBub3Qgc2hvd24gYW5kIHRoZSB1c2VyIG1pZ2h0IG90 aGVyd2lzZQorCQkgKiBiZSBjb25mdXNlZCBhYm91dCB0aGUgcmVhc29uIGZvciB0aGUgY29u ZmxpY3QuCisJCSAqLworCQlpZiAoYXR0bnVtIDw9IDApCisJCQllcmVwb3J0KEVSUk9SLAor CQkJCQkoZXJyY29kZShFUlJDT0RFX0RVUExJQ0FURV9DT0xVTU4pLAorCQkJCQkgZXJybXNn KCJwZXJpb2QgbmFtZSBcIiVzXCIgY29uZmxpY3RzIHdpdGggYSBzeXN0ZW0gY29sdW1uIG5h bWUiLAorCQkJCQkJCXBlcm5hbWUpKSk7CisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNv ZGUoRVJSQ09ERV9EVVBMSUNBVEVfQ09MVU1OKSwKKwkJCQkgZXJybXNnKCJwZXJpb2QgbmFt ZSBcIiVzXCIgY29uZmxpY3RzIHdpdGggYSBjb2x1bW4gbmFtZSIsCisJCQkJCQlwZXJuYW1l KSkpOworCX0KKworCXJldHVybiB0cnVlOworfQorCiAvKgogICogSW5zdGFsbCBhIGNvbHVt bidzIGRlcGVuZGVuY3kgb24gaXRzIGRhdGF0eXBlLgogICovCkBAIC03Nzc2LDYgKzgxOTIs MTQzIEBAIEFURXhlY0Nvb2tlZENvbHVtbkRlZmF1bHQoUmVsYXRpb24gcmVsLCBBdHRyTnVt YmVyIGF0dG51bSwKIAlyZXR1cm4gYWRkcmVzczsKIH0KIAorLyoKKyAqIEFMVEVSIFRBQkxF IEFERCBQRVJJT0QKKyAqCisgKiBSZXR1cm4gdGhlIGFkZHJlc3Mgb2YgdGhlIHBlcmlvZC4K KyAqLworc3RhdGljIE9iamVjdEFkZHJlc3MKK0FURXhlY0FkZFBlcmlvZChSZWxhdGlvbiBy ZWwsIFBlcmlvZERlZiAqcGVyaW9kLCBBbHRlclRhYmxlVXRpbGl0eUNvbnRleHQgKmNvbnRl eHQpCit7CisJUmVsYXRpb24JCWF0dHJlbGF0aW9uOworCUF0dHJOdW1iZXIJCXN0YXJ0YXR0 bnVtLCBlbmRhdHRudW07CisJT2lkCQkJCWNvbHR5cGlkLCBjb25vaWQsIHBlcmlvZG9pZDsK KwlPYmplY3RBZGRyZXNzCWFkZHJlc3MgPSBJbnZhbGlkT2JqZWN0QWRkcmVzczsKKwlDb25z dHJhaW50CSAgICpjb25zdHI7CisJTGlzdAkJICAgKmNtZHMgPSBOSUw7CisJQWx0ZXJUYWJs ZUNtZCAgKmNtZDsKKworCS8qCisJICogUEVSSU9EIEZPUiBTWVNURU1fVElNRSBpcyBub3Qg eWV0IGltcGxlbWVudGVkLCBidXQgbWFrZSBzdXJlIG5vIG9uZSB1c2VzCisJICogdGhlIG5h bWUuCisJICovCisJaWYgKHN0cmNtcChwZXJpb2QtPnBlcmlvZG5hbWUsICJzeXN0ZW1fdGlt ZSIpID09IDApCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZF QVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJCSBlcnJtc2coIlBFUklPRCBGT1IgU1lTVEVN X1RJTUUgaXMgbm90IHN1cHBvcnRlZCIpKSk7CisKKwkvKiBUaGUgcGVyaW9kIG5hbWUgbXVz dCBub3QgYWxyZWFkeSBleGlzdCAqLworCSh2b2lkKSBjaGVja19mb3JfcGVyaW9kX25hbWVf Y29sbGlzaW9uKHJlbCwgcGVyaW9kLT5wZXJpb2RuYW1lLCBmYWxzZSk7CisKKwkvKiBQYXJz ZSBvcHRpb25zICovCisJdHJhbnNmb3JtUGVyaW9kT3B0aW9ucyhwZXJpb2QpOworCisJYXR0 cmVsYXRpb24gPSB0YWJsZV9vcGVuKEF0dHJpYnV0ZVJlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2 ZUxvY2spOworCVZhbGlkYXRlUGVyaW9kKHJlbCwgcGVyaW9kLCAmY29sdHlwaWQsICZzdGFy dGF0dG51bSwgJmVuZGF0dG51bSk7CisKKwlwZXJpb2QtPnJuZ3R5cGlkID0gY2hvb3NlX3Jh bmdldHlwZV9mb3JfcGVyaW9kKHBlcmlvZCwgY29sdHlwaWQpOworCisJLyogTWFrZSB0aGUg Q0hFQ0sgY29uc3RyYWludCAqLworCWNvbnN0ciA9IG1ha2VfY29uc3RyYWludF9mb3JfcGVy aW9kKHJlbCwgcGVyaW9kLCBjb2x0eXBpZCk7CisJY21kID0gbWFrZU5vZGUoQWx0ZXJUYWJs ZUNtZCk7CisJY21kLT5zdWJ0eXBlID0gQVRfQWRkQ29uc3RyYWludDsKKwljbWQtPmRlZiA9 IChOb2RlICopIGNvbnN0cjsKKwljbWRzID0gbGFwcGVuZChjbWRzLCBjbWQpOworCUFsdGVy VGFibGVJbnRlcm5hbChSZWxhdGlvbkdldFJlbGlkKHJlbCksIGNtZHMsIHRydWUsIGNvbnRl eHQpOworCWNvbm9pZCA9IGdldF9yZWxhdGlvbl9jb25zdHJhaW50X29pZChSZWxhdGlvbkdl dFJlbGlkKHJlbCksIHBlcmlvZC0+Y29uc3RyYWludG5hbWUsIGZhbHNlKTsKKworCS8qIFNh dmUgdGhlIFBlcmlvZCAqLworCXBlcmlvZG9pZCA9IFN0b3JlUGVyaW9kKHJlbCwgcGVyaW9k LT5wZXJpb2RuYW1lLCBzdGFydGF0dG51bSwgZW5kYXR0bnVtLCBwZXJpb2QtPnJuZ3R5cGlk LCBjb25vaWQpOworCisJT2JqZWN0QWRkcmVzc1NldChhZGRyZXNzLCBQZXJpb2RSZWxhdGlv bklkLCBwZXJpb2RvaWQpOworCisJdGFibGVfY2xvc2UoYXR0cmVsYXRpb24sIFJvd0V4Y2x1 c2l2ZUxvY2spOworCisJcmV0dXJuIGFkZHJlc3M7Cit9CisKKy8qCisgKiBBTFRFUiBUQUJM RSBEUk9QIFBFUklPRAorICoKKyAqIExpa2UgRFJPUCBDT0xVTU4sIHdlIGNhbid0IHVzZSB0 aGUgbm9ybWFsIEFMVEVSIFRBQkxFIHJlY3Vyc2lvbiBtZWNoYW5pc20uCisgKi8KK3N0YXRp YyB2b2lkCitBVEV4ZWNEcm9wUGVyaW9kKFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqcGVy aW9kTmFtZSwKKwkJCQkJIERyb3BCZWhhdmlvciBiZWhhdmlvciwKKwkJCQkJIGJvb2wgcmVj dXJzZSwgYm9vbCByZWN1cnNpbmcsCisJCQkJCSBib29sIG1pc3Npbmdfb2spCit7CisJUmVs YXRpb24JcGdfcGVyaW9kOworCUZvcm1fcGdfcGVyaW9kIHBlcmlvZDsKKwlTeXNTY2FuRGVz YyBzY2FuOworCVNjYW5LZXlEYXRhIGtleTsKKwlIZWFwVHVwbGUJdHVwbGU7CisJYm9vbAkJ Zm91bmQgPSBmYWxzZTsKKworCS8qIEF0IHRvcCBsZXZlbCwgcGVybWlzc2lvbiBjaGVjayB3 YXMgZG9uZSBpbiBBVFByZXBDbWQsIGVsc2UgZG8gaXQgKi8KKwlpZiAocmVjdXJzaW5nKQor CQlBVFNpbXBsZVBlcm1pc3Npb25zKEFUX0Ryb3BQZXJpb2QsIHJlbCwgQVRUX1RBQkxFKTsK KworCXBnX3BlcmlvZCA9IHRhYmxlX29wZW4oUGVyaW9kUmVsYXRpb25JZCwgUm93RXhjbHVz aXZlTG9jayk7CisKKwkvKgorCSAqIEZpbmQgYW5kIGRyb3AgdGhlIHRhcmdldCBwZXJpb2QK KwkgKi8KKwlTY2FuS2V5SW5pdCgma2V5LAorCQkJCUFudW1fcGdfcGVyaW9kX3BlcnJlbGlk LAorCQkJCUJURXF1YWxTdHJhdGVneU51bWJlciwgRl9PSURFUSwKKwkJCQlPYmplY3RJZEdl dERhdHVtKFJlbGF0aW9uR2V0UmVsaWQocmVsKSkpOworCXNjYW4gPSBzeXN0YWJsZV9iZWdp bnNjYW4ocGdfcGVyaW9kLCBQZXJpb2RSZWxpZE5hbWVJbmRleElkLAorCQkJCQkJCSAgdHJ1 ZSwgTlVMTCwgMSwgJmtleSk7CisKKwl3aGlsZSAoSGVhcFR1cGxlSXNWYWxpZCh0dXBsZSA9 IHN5c3RhYmxlX2dldG5leHQoc2NhbikpKQorCXsKKwkJT2JqZWN0QWRkcmVzcyBwZXJvYmo7 CisKKwkJcGVyaW9kID0gKEZvcm1fcGdfcGVyaW9kKSBHRVRTVFJVQ1QodHVwbGUpOworCisJ CWlmIChzdHJjbXAoTmFtZVN0cihwZXJpb2QtPnBlcm5hbWUpLCBwZXJpb2ROYW1lKSAhPSAw KQorCQkJY29udGludWU7CisKKwkJLyoKKwkJICogUGVyZm9ybSB0aGUgYWN0dWFsIHBlcmlv ZCBkZWxldGlvbgorCQkgKi8KKwkJcGVyb2JqLmNsYXNzSWQgPSBQZXJpb2RSZWxhdGlvbklk OworCQlwZXJvYmoub2JqZWN0SWQgPSBwZXJpb2QtPm9pZDsKKwkJcGVyb2JqLm9iamVjdFN1 YklkID0gMDsKKworCQlwZXJmb3JtRGVsZXRpb24oJnBlcm9iaiwgYmVoYXZpb3IsIDApOwor CisJCWZvdW5kID0gdHJ1ZTsKKworCQkvKiBwZXJpb2QgZm91bmQgYW5kIGRyb3BwZWQgLS0g bm8gbmVlZCB0byBrZWVwIGxvb3BpbmcgKi8KKwkJYnJlYWs7CisJfQorCisJc3lzdGFibGVf ZW5kc2NhbihzY2FuKTsKKworCWlmICghZm91bmQpCisJeworCQlpZiAoIW1pc3Npbmdfb2sp CisJCXsKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfVU5ERUZJ TkVEX09CSkVDVCksCisJCQkJCSBlcnJtc2coInBlcmlvZCBcIiVzXCIgb24gcmVsYXRpb24g XCIlc1wiIGRvZXMgbm90IGV4aXN0IiwKKwkJCQkJCQlwZXJpb2ROYW1lLCBSZWxhdGlvbkdl dFJlbGF0aW9uTmFtZShyZWwpKSkpOworCQl9CisJCWVsc2UKKwkJeworCQkJZXJlcG9ydChO T1RJQ0UsCisJCQkJCShlcnJtc2coInBlcmlvZCBcIiVzXCIgb24gcmVsYXRpb24gXCIlc1wi IGRvZXMgbm90IGV4aXN0LCBza2lwcGluZyIsCisJCQkJCQkJcGVyaW9kTmFtZSwgUmVsYXRp b25HZXRSZWxhdGlvbk5hbWUocmVsKSkpKTsKKwkJCXRhYmxlX2Nsb3NlKHBnX3BlcmlvZCwg Um93RXhjbHVzaXZlTG9jayk7CisJCQlyZXR1cm47CisJCX0KKwl9CisKKwl0YWJsZV9jbG9z ZShwZ19wZXJpb2QsIFJvd0V4Y2x1c2l2ZUxvY2spOworfQorCiAvKgogICogQUxURVIgVEFC TEUgQUxURVIgQ09MVU1OIEFERCBJREVOVElUWQogICoKQEAgLTEyNzEwLDYgKzEzMjYzLDE1 IEBAIEFURXhlY0FsdGVyQ29sdW1uVHlwZShBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0 aW9uIHJlbCwKIAkJCQlSZW1lbWJlckNvbnN0cmFpbnRGb3JSZWJ1aWxkaW5nKGZvdW5kT2Jq ZWN0Lm9iamVjdElkLCB0YWIpOwogCQkJCWJyZWFrOwogCisJCQljYXNlIE9DTEFTU19QRVJJ T0Q6CisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVS RV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJCSBlcnJtc2coImNhbm5vdCBhbHRlciB0eXBlIG9m IGEgY29sdW1uIHVzZWQgYnkgYSBwZXJpb2QiKSwKKwkJCQkJCSBlcnJkZXRhaWwoIiVzIGRl cGVuZHMgb24gY29sdW1uIFwiJXNcIiIsCisJCQkJCQkJCSAgIGdldE9iamVjdERlc2NyaXB0 aW9uKCZmb3VuZE9iamVjdCwgZmFsc2UpLAorCQkJCQkJCQkgICBjb2xOYW1lKSkpOworCQkJ CWJyZWFrOworCiAJCQljYXNlIE9DTEFTU19SRVdSSVRFOgogCQkJCS8qIFhYWCBzb21lZGF5 IHNlZSBpZiB3ZSBjYW4gY29wZSB3aXRoIHJldmlzaW5nIHZpZXdzICovCiAJCQkJZXJlcG9y dChFUlJPUiwKQEAgLTE0NzY5LDcgKzE1MzMxLDcgQEAgQWx0ZXJUYWJsZU1vdmVBbGwoQWx0 ZXJUYWJsZU1vdmVBbGxTdG10ICpzdG10KQogCiAJCUV2ZW50VHJpZ2dlckFsdGVyVGFibGVT dGFydCgoTm9kZSAqKSBzdG10KTsKIAkJLyogT0lEIGlzIHNldCBieSBBbHRlclRhYmxlSW50 ZXJuYWwgKi8KLQkJQWx0ZXJUYWJsZUludGVybmFsKGxmaXJzdF9vaWQobCksIGNtZHMsIGZh bHNlKTsKKwkJQWx0ZXJUYWJsZUludGVybmFsKGxmaXJzdF9vaWQobCksIGNtZHMsIGZhbHNl LCBOVUxMKTsKIAkJRXZlbnRUcmlnZ2VyQWx0ZXJUYWJsZUVuZCgpOwogCX0KIApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmlldy5jIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvdmlldy5jCmluZGV4IGZmOThjNzczZjUuLjBkNWQ5MmZiYWYgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3ZpZXcuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92 aWV3LmMKQEAgLTE2OSw3ICsxNjksNyBAQCBEZWZpbmVWaXJ0dWFsUmVsYXRpb24oUmFuZ2VW YXIgKnJlbGF0aW9uLCBMaXN0ICp0bGlzdCwgYm9vbCByZXBsYWNlLAogCQkJfQogCiAJCQkv KiBFdmVudFRyaWdnZXJBbHRlclRhYmxlU3RhcnQgY2FsbGVkIGJ5IFByb2Nlc3NVdGlsaXR5 U2xvdyAqLwotCQkJQWx0ZXJUYWJsZUludGVybmFsKHZpZXdPaWQsIGF0Y21kcywgdHJ1ZSk7 CisJCQlBbHRlclRhYmxlSW50ZXJuYWwodmlld09pZCwgYXRjbWRzLCB0cnVlLCBOVUxMKTsK IAogCQkJLyogTWFrZSB0aGUgbmV3IHZpZXcgY29sdW1ucyB2aXNpYmxlICovCiAJCQlDb21t YW5kQ291bnRlckluY3JlbWVudCgpOwpAQCAtMjAxLDcgKzIwMSw3IEBAIERlZmluZVZpcnR1 YWxSZWxhdGlvbihSYW5nZVZhciAqcmVsYXRpb24sIExpc3QgKnRsaXN0LCBib29sIHJlcGxh Y2UsCiAJCWF0Y21kcyA9IGxpc3RfbWFrZTEoYXRjbWQpOwogCiAJCS8qIEV2ZW50VHJpZ2dl ckFsdGVyVGFibGVTdGFydCBjYWxsZWQgYnkgUHJvY2Vzc1V0aWxpdHlTbG93ICovCi0JCUFs dGVyVGFibGVJbnRlcm5hbCh2aWV3T2lkLCBhdGNtZHMsIHRydWUpOworCQlBbHRlclRhYmxl SW50ZXJuYWwodmlld09pZCwgYXRjbWRzLCB0cnVlLCBOVUxMKTsKIAogCQkvKgogCQkgKiBU aGVyZSBpcyB2ZXJ5IGxpdHRsZSB0byBkbyBoZXJlIHRvIHVwZGF0ZSB0aGUgdmlldydzIGRl cGVuZGVuY2llcy4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5j IGIvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMKaW5kZXggZmUzYTExM2M4Zi4uYTEx NjliNzdjZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMKKysr IGIvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMKQEAgLTE2MjAsNiArMTYyMCw5IEBA IGV4cHJMb2NhdGlvbihjb25zdCBOb2RlICpleHByKQogCQljYXNlIFRfQ29uc3RyYWludDoK IAkJCWxvYyA9ICgoY29uc3QgQ29uc3RyYWludCAqKSBleHByKS0+bG9jYXRpb247CiAJCQli cmVhazsKKwkJY2FzZSBUX1BlcmlvZERlZjoKKwkJCWxvYyA9ICgoY29uc3QgUGVyaW9kRGVm ICopIGV4cHIpLT5sb2NhdGlvbjsKKwkJCWJyZWFrOwogCQljYXNlIFRfRnVuY3Rpb25QYXJh bWV0ZXI6CiAJCQkvKiBqdXN0IHVzZSB0eXBlbmFtZSdzIGxvY2F0aW9uICovCiAJCQlsb2Mg PSBleHByTG9jYXRpb24oKE5vZGUgKikgKChjb25zdCBGdW5jdGlvblBhcmFtZXRlciAqKSBl eHByKS0+YXJnVHlwZSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55 IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQppbmRleCBhNzIzZDlkYjc4Li5hZDEyNTdm NTFmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CisrKyBiL3NyYy9i YWNrZW5kL3BhcnNlci9ncmFtLnkKQEAgLTU4OSw3ICs1ODksNyBAQCBzdGF0aWMgTm9kZSAq bWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywg Tm9kZSAqcXVlcnkpOwogJXR5cGUgPGtleXdvcmQ+IGNvbF9uYW1lX2tleXdvcmQgcmVzZXJ2 ZWRfa2V5d29yZAogJXR5cGUgPGtleXdvcmQ+IGJhcmVfbGFiZWxfa2V5d29yZAogCi0ldHlw ZSA8bm9kZT4JVGFibGVDb25zdHJhaW50IFRhYmxlTGlrZUNsYXVzZQorJXR5cGUgPG5vZGU+ CVRhYmxlQ29uc3RyYWludCBUYWJsZUxpa2VDbGF1c2UgVGFibGVQZXJpb2QKICV0eXBlIDxp dmFsPglUYWJsZUxpa2VPcHRpb25MaXN0IFRhYmxlTGlrZU9wdGlvbgogJXR5cGUgPHN0cj4J CWNvbHVtbl9jb21wcmVzc2lvbiBvcHRfY29sdW1uX2NvbXByZXNzaW9uIGNvbHVtbl9zdG9y YWdlIG9wdF9jb2x1bW5fc3RvcmFnZQogJXR5cGUgPGxpc3Q+CUNvbFF1YWxMaXN0CkBAIC03 NDQsNyArNzQ0LDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNo YXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAlPVkVSIE9WRVJM QVBTIE9WRVJMQVkgT1ZFUlJJRElORyBPV05FRCBPV05FUgogCiAJUEFSQUxMRUwgUEFSQU1F VEVSIFBBUlNFUiBQQVJUSUFMIFBBUlRJVElPTiBQQVNTSU5HIFBBU1NXT1JECi0JUExBQ0lO RyBQTEFOUyBQT0xJQ1kKKwlQRVJJT0QgUExBQ0lORyBQTEFOUyBQT0xJQ1kKIAlQT1NJVElP TiBQUkVDRURJTkcgUFJFQ0lTSU9OIFBSRVNFUlZFIFBSRVBBUkUgUFJFUEFSRUQgUFJJTUFS WQogCVBSSU9SIFBSSVZJTEVHRVMgUFJPQ0VEVVJBTCBQUk9DRURVUkUgUFJPQ0VEVVJFUyBQ Uk9HUkFNIFBVQkxJQ0FUSU9OCiAKQEAgLTI2MDcsNiArMjYwNywyNCBAQCBhbHRlcl90YWJs ZV9jbWQ6CiAJCQkJCW4tPmRlZiA9IChOb2RlICopICQ0OwogCQkJCQkkJCA9IChOb2RlICop IG47CiAJCQkJfQorCQkJLyogQUxURVIgVEFCTEUgPG5hbWU+IEFERCBQRVJJT0QgRk9SIDxu YW1lPiAoPG5hbWU+LCA8bmFtZT4pICovCisJCQl8IEFERF9QIFRhYmxlUGVyaW9kCisJCQkJ eworCQkJCQlBbHRlclRhYmxlQ21kICpuID0gbWFrZU5vZGUoQWx0ZXJUYWJsZUNtZCk7CisJ CQkJCW4tPnN1YnR5cGUgPSBBVF9BZGRQZXJpb2Q7CisJCQkJCW4tPmRlZiA9ICQyOworCQkJ CQkkJCA9IChOb2RlICopbjsKKwkJCQl9CisJCQkvKiBBTFRFUiBUQUJMRSA8bmFtZT4gRFJP UCBQRVJJT0QgRk9SIDxuYW1lPiBbUkVTVFJJQ1R8Q0FTQ0FERV0gKi8KKwkJCXwgRFJPUCBQ RVJJT0QgRk9SIG5hbWUgb3B0X2Ryb3BfYmVoYXZpb3IKKwkJCQl7CisJCQkJCUFsdGVyVGFi bGVDbWQgKm4gPSBtYWtlTm9kZShBbHRlclRhYmxlQ21kKTsKKwkJCQkJbi0+c3VidHlwZSA9 IEFUX0Ryb3BQZXJpb2Q7CisJCQkJCW4tPm5hbWUgPSAkNDsKKwkJCQkJbi0+YmVoYXZpb3Ig PSAkNTsKKwkJCQkJbi0+bWlzc2luZ19vayA9IGZhbHNlOworCQkJCQkkJCA9IChOb2RlICop bjsKKwkJCQl9CiAJCQkvKiBBTFRFUiBUQUJMRSA8bmFtZT4gQUREIENPTlNUUkFJTlQgLi4u ICovCiAJCQl8IEFERF9QIFRhYmxlQ29uc3RyYWludAogCQkJCXsKQEAgLTM3MTgsOCArMzcz NiwxMCBAQCBUYWJsZUVsZW1lbnQ6CiAJCQljb2x1bW5EZWYJCQkJCQkJeyAkJCA9ICQxOyB9 CiAJCQl8IFRhYmxlTGlrZUNsYXVzZQkJCQkJeyAkJCA9ICQxOyB9CiAJCQl8IFRhYmxlQ29u c3RyYWludAkJCQkJeyAkJCA9ICQxOyB9CisJCQl8IFRhYmxlUGVyaW9kCQkJCQkJeyAkJCA9 ICQxOyB9CiAJCTsKIAorCiBUeXBlZFRhYmxlRWxlbWVudDoKIAkJCWNvbHVtbk9wdGlvbnMJ CQkJCQl7ICQkID0gJDE7IH0KIAkJCXwgVGFibGVDb25zdHJhaW50CQkJCQl7ICQkID0gJDE7 IH0KQEAgLTQwNjgsNiArNDA4OCwxOSBAQCBUYWJsZUxpa2VPcHRpb246CiAJCTsKIAogCitU YWJsZVBlcmlvZDoKKwkJCVBFUklPRCBGT1IgbmFtZSAnKCcgbmFtZSAnLCcgbmFtZSAnKScg b3B0X2RlZmluaXRpb24KKwkJCQl7CisJCQkJCVBlcmlvZERlZiAqbiA9IG1ha2VOb2RlKFBl cmlvZERlZik7CisJCQkJCW4tPnBlcmlvZG5hbWUgPSAkMzsKKwkJCQkJbi0+c3RhcnRjb2xu YW1lID0gJDU7CisJCQkJCW4tPmVuZGNvbG5hbWUgPSAkNzsKKwkJCQkJbi0+b3B0aW9ucyA9 ICQ5OworCQkJCQluLT5sb2NhdGlvbiA9IEAxOworCQkJCQkkJCA9IChOb2RlICopIG47CisJ CQkJfQorCQk7CisKIC8qIENvbnN0cmFpbnRFbGVtIHNwZWNpZmllcyBjb25zdHJhaW50IHN5 bnRheCB3aGljaCBpcyBub3QgZW1iZWRkZWQgaW50bwogICoJYSBjb2x1bW4gZGVmaW5pdGlv bi4gQ29sQ29uc3RyYWludEVsZW0gc3BlY2lmaWVzIHRoZSBlbWJlZGRlZCBmb3JtLgogICog LSB0aG9tYXMgMTk5Ny0xMi0wMwpAQCAtNzA2Niw2ICs3MDk5LDE0IEBAIENvbW1lbnRTdG10 OgogCQkJCQluLT5jb21tZW50ID0gJDk7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKIAkJCQl9 CisJCQl8IENPTU1FTlQgT04gUEVSSU9EIGFueV9uYW1lIElTIGNvbW1lbnRfdGV4dAorCQkJ CXsKKwkJCQkJQ29tbWVudFN0bXQgKm4gPSBtYWtlTm9kZShDb21tZW50U3RtdCk7CisJCQkJ CW4tPm9ianR5cGUgPSBPQkpFQ1RfUEVSSU9EOworCQkJCQluLT5vYmplY3QgPSAoTm9kZSAq KSAkNDsKKwkJCQkJbi0+Y29tbWVudCA9ICQ2OworCQkJCQkkJCA9IChOb2RlICopIG47CisJ CQkJfQogCQkJfCBDT01NRU5UIE9OIExBUkdFX1AgT0JKRUNUX1AgTnVtZXJpY09ubHkgSVMg Y29tbWVudF90ZXh0CiAJCQkJewogCQkJCQlDb21tZW50U3RtdCAqbiA9IG1ha2VOb2RlKENv bW1lbnRTdG10KTsKQEAgLTE3NDgyLDYgKzE3NTIzLDcgQEAgcmVzZXJ2ZWRfa2V5d29yZDoK IAkJCXwgT05MWQogCQkJfCBPUgogCQkJfCBPUkRFUgorCQkJfCBQRVJJT0QKIAkJCXwgUExB Q0lORwogCQkJfCBQUklNQVJZCiAJCQl8IFJFRkVSRU5DRVMKQEAgLTE3Nzg5LDYgKzE3ODMx LDcgQEAgYmFyZV9sYWJlbF9rZXl3b3JkOgogCQkJfCBQQVJUSVRJT04KIAkJCXwgUEFTU0lO RwogCQkJfCBQQVNTV09SRAorCQkJfCBQRVJJT0QKIAkJCXwgUExBQ0lORwogCQkJfCBQTEFO UwogCQkJfCBQT0xJQ1kKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91 dGlsY21kLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jCmluZGV4IGIx MjU1ZTNiNzAuLmI4Y2Y0NjVkY2MgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9w YXJzZV91dGlsY21kLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQu YwpAQCAtODAsNiArODAsNyBAQCB0eXBlZGVmIHN0cnVjdAogCWJvb2wJCWlzZm9yZWlnbjsJ CS8qIHRydWUgaWYgQ1JFQVRFL0FMVEVSIEZPUkVJR04gVEFCTEUgKi8KIAlib29sCQlpc2Fs dGVyOwkJLyogdHJ1ZSBpZiBhbHRlcmluZyBleGlzdGluZyB0YWJsZSAqLwogCUxpc3QJICAg KmNvbHVtbnM7CQkvKiBDb2x1bW5EZWYgaXRlbXMgKi8KKwlMaXN0CSAgICpwZXJpb2RzOwkJ LyogUGVyaW9kRGVmIGl0ZW1zICovCiAJTGlzdAkgICAqY2tjb25zdHJhaW50czsJLyogQ0hF Q0sgY29uc3RyYWludHMgKi8KIAlMaXN0CSAgICpma2NvbnN0cmFpbnRzOwkvKiBGT1JFSUdO IEtFWSBjb25zdHJhaW50cyAqLwogCUxpc3QJICAgKml4Y29uc3RyYWludHM7CS8qIGluZGV4 LWNyZWF0aW5nIGNvbnN0cmFpbnRzICovCkBAIC0xMTAsNiArMTExLDggQEAgdHlwZWRlZiBz dHJ1Y3QKIAogc3RhdGljIHZvaWQgdHJhbnNmb3JtQ29sdW1uRGVmaW5pdGlvbihDcmVhdGVT dG10Q29udGV4dCAqY3h0LAogCQkJCQkJCQkJICBDb2x1bW5EZWYgKmNvbHVtbik7CitzdGF0 aWMgdm9pZCB0cmFuc2Zvcm1UYWJsZVBlcmlvZChDcmVhdGVTdG10Q29udGV4dCAqY3h0LAor CQkJCQkJCQkgUGVyaW9kRGVmICpwZXJpb2QpOwogc3RhdGljIHZvaWQgdHJhbnNmb3JtVGFi bGVDb25zdHJhaW50KENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsCiAJCQkJCQkJCQkgQ29uc3Ry YWludCAqY29uc3RyYWludCk7CiBzdGF0aWMgdm9pZCB0cmFuc2Zvcm1UYWJsZUxpa2VDbGF1 c2UoQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwKQEAgLTIzOSw2ICsyNDIsNyBAQCB0cmFuc2Zv cm1DcmVhdGVTdG10KENyZWF0ZVN0bXQgKnN0bXQsIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5n KQogCWN4dC5pbmhSZWxhdGlvbnMgPSBzdG10LT5pbmhSZWxhdGlvbnM7CiAJY3h0LmlzYWx0 ZXIgPSBmYWxzZTsKIAljeHQuY29sdW1ucyA9IE5JTDsKKwljeHQucGVyaW9kcyA9IE5JTDsK IAljeHQuY2tjb25zdHJhaW50cyA9IE5JTDsKIAljeHQuZmtjb25zdHJhaW50cyA9IE5JTDsK IAljeHQuaXhjb25zdHJhaW50cyA9IE5JTDsKQEAgLTI3OCw2ICsyODIsMTAgQEAgdHJhbnNm b3JtQ3JlYXRlU3RtdChDcmVhdGVTdG10ICpzdG10LCBjb25zdCBjaGFyICpxdWVyeVN0cmlu ZykKIAkJCQl0cmFuc2Zvcm1Db2x1bW5EZWZpbml0aW9uKCZjeHQsIChDb2x1bW5EZWYgKikg ZWxlbWVudCk7CiAJCQkJYnJlYWs7CiAKKwkJCWNhc2UgVF9QZXJpb2REZWY6CisJCQkJdHJh bnNmb3JtVGFibGVQZXJpb2QoJmN4dCwgKFBlcmlvZERlZiAqKSBlbGVtZW50KTsKKwkJCQli cmVhazsKKwogCQkJY2FzZSBUX0NvbnN0cmFpbnQ6CiAJCQkJdHJhbnNmb3JtVGFibGVDb25z dHJhaW50KCZjeHQsIChDb25zdHJhaW50ICopIGVsZW1lbnQpOwogCQkJCWJyZWFrOwpAQCAt MzQ1LDYgKzM1Myw3IEBAIHRyYW5zZm9ybUNyZWF0ZVN0bXQoQ3JlYXRlU3RtdCAqc3RtdCwg Y29uc3QgY2hhciAqcXVlcnlTdHJpbmcpCiAJICogT3V0cHV0IHJlc3VsdHMuCiAJICovCiAJ c3RtdC0+dGFibGVFbHRzID0gY3h0LmNvbHVtbnM7CisJc3RtdC0+cGVyaW9kcyA9IGN4dC5w ZXJpb2RzOwogCXN0bXQtPmNvbnN0cmFpbnRzID0gY3h0LmNrY29uc3RyYWludHM7CiAKIAly ZXN1bHQgPSBsYXBwZW5kKGN4dC5ibGlzdCwgc3RtdCk7CkBAIC04NjQsNiArODczLDEwMiBA QCB0cmFuc2Zvcm1Db2x1bW5EZWZpbml0aW9uKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsIENv bHVtbkRlZiAqY29sdW1uKQogCX0KIH0KIAordm9pZAordHJhbnNmb3JtUGVyaW9kT3B0aW9u cyhQZXJpb2REZWYgKnBlcmlvZCkKK3sKKwlMaXN0Q2VsbCAgICpvcHRpb247CisJRGVmRWxl bQkgICAqZGNvbnN0cmFpbnRuYW1lID0gTlVMTDsKKwlEZWZFbGVtCSAgICpkcmFuZ2V0eXBl bmFtZSA9IE5VTEw7CisKKwlmb3JlYWNoKG9wdGlvbiwgcGVyaW9kLT5vcHRpb25zKQorCXsK KwkJRGVmRWxlbSAgICAqZGVmZWwgPSAoRGVmRWxlbSAqKSBsZmlyc3Qob3B0aW9uKTsKKwor CQlpZiAoc3RyY21wKGRlZmVsLT5kZWZuYW1lLCAiY2hlY2tfY29uc3RyYWludF9uYW1lIikg PT0gMCkKKwkJeworCQkJaWYgKGRjb25zdHJhaW50bmFtZSkKKwkJCQllcmVwb3J0KEVSUk9S LAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkJIGVycm1z ZygiY29uZmxpY3Rpbmcgb3IgcmVkdW5kYW50IG9wdGlvbnMiKSkpOworCQkJZGNvbnN0cmFp bnRuYW1lID0gZGVmZWw7CisJCX0KKwkJZWxzZSBpZiAoc3RyY21wKGRlZmVsLT5kZWZuYW1l LCAicmFuZ2V0eXBlIikgPT0gMCkKKwkJeworCQkJaWYgKGRyYW5nZXR5cGVuYW1lKQorCQkJ CWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiks CisJCQkJCQkgZXJybXNnKCJjb25mbGljdGluZyBvciByZWR1bmRhbnQgb3B0aW9ucyIpKSk7 CisJCQlkcmFuZ2V0eXBlbmFtZSA9IGRlZmVsOworCQl9CisJCWVsc2UKKwkJCWVyZXBvcnQo RVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJIGVy cm1zZygib3B0aW9uIFwiJXNcIiBub3QgcmVjb2duaXplZCIsIGRlZmVsLT5kZWZuYW1lKSkp OworCX0KKworCWlmIChkY29uc3RyYWludG5hbWUgIT0gTlVMTCkKKwkJcGVyaW9kLT5jb25z dHJhaW50bmFtZSA9IGRlZkdldFN0cmluZyhkY29uc3RyYWludG5hbWUpOworCWVsc2UKKwkJ cGVyaW9kLT5jb25zdHJhaW50bmFtZSA9IE5VTEw7CisKKwlpZiAoZHJhbmdldHlwZW5hbWUg IT0gTlVMTCkKKwkJcGVyaW9kLT5yYW5nZXR5cGVuYW1lID0gZGVmR2V0U3RyaW5nKGRyYW5n ZXR5cGVuYW1lKTsKKwllbHNlCisJCXBlcmlvZC0+cmFuZ2V0eXBlbmFtZSA9IE5VTEw7Cit9 CisKKy8qCisgKiB0cmFuc2Zvcm1UYWJsZVBlcmlvZAorICoJCXRyYW5zZm9ybSBhIFBlcmlv ZERlZiBub2RlIHdpdGhpbiBDUkVBVEUgVEFCTEUgb3IgQUxURVIgVEFCTEUKKyAqLworc3Rh dGljIHZvaWQKK3RyYW5zZm9ybVRhYmxlUGVyaW9kKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQs IFBlcmlvZERlZiAqcGVyaW9kKQoreworCU9pZAkJCWNvbHR5cGlkOworCUNvbHVtbkRlZiAg KmNvbDsKKwlMaXN0Q2VsbCAgICpjb2x1bW5zOworCisJaWYgKHN0cmNtcChwZXJpb2QtPnBl cmlvZG5hbWUsICJzeXN0ZW1fdGltZSIpID09IDApCisJCQllcmVwb3J0KEVSUk9SLAorCQkJ CQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJCSBlcnJt c2coIlBFUklPRCBGT1IgU1lTVEVNX1RJTUUgaXMgbm90IHN1cHBvcnRlZCIpLAorCQkJCQkg cGFyc2VyX2VycnBvc2l0aW9uKGN4dC0+cHN0YXRlLAorCQkJCQkJCQkJCXBlcmlvZC0+bG9j YXRpb24pKSk7CisKKwkvKgorCSAqIERldGVybWluZSB0aGUgY29sdW1uIGluZm8gYW5kIHJh bmdlIHR5cGUgc28gdGhhdCB0cmFuc2Zvcm1JbmRleENvbnN0cmFpbnRzCisJICoga25vd3Mg aG93IHRvIGNyZWF0ZSBQUklNQVJZIEtFWS9VTklRVUUgY29uc3RyYWludHMgdXNpbmcgdGhp cyBQRVJJT0QuCisJICovCisJdHJhbnNmb3JtUGVyaW9kT3B0aW9ucyhwZXJpb2QpOworCisJ LyoKKwkgKiBGaW5kIGEgc3VpdGFibGUgcmFuZ2UgdHlwZSBmb3Igb3BlcmF0aW9ucyBpbnZv bHZpbmcgdGhpcyBwZXJpb2QuCisJICogVXNlIHRoZSByYW5nZXR5cGUgb3B0aW9uIGlmIHBy b3ZpZGVkLCBvdGhlcndpc2UgdHJ5IHRvIGZpbmQgYQorCSAqIG5vbi1hbWJpZ3VvdXMgZXhp c3RpbmcgdHlwZS4KKwkgKi8KKwljb2x0eXBpZCA9IEludmFsaWRPaWQ7CisKKwkvKiBGaXJz dCBmaW5kIG91dCB0aGUgdHlwZSBvZiB0aGUgcGVyaW9kJ3MgY29sdW1ucyAqLworCXBlcmlv ZC0+cm5ndHlwaWQgPSBJbnZhbGlkT2lkOworCWZvcmVhY2ggKGNvbHVtbnMsIGN4dC0+Y29s dW1ucykKKwl7CisJCWNvbCA9IChDb2x1bW5EZWYgKikgbGZpcnN0KGNvbHVtbnMpOworCQlp ZiAoc3RyY21wKGNvbC0+Y29sbmFtZSwgcGVyaW9kLT5zdGFydGNvbG5hbWUpID09IDApCisJ CXsKKwkJCWNvbHR5cGlkID0gdHlwZW5hbWVUeXBlSWQoY3h0LT5wc3RhdGUsIGNvbC0+dHlw ZU5hbWUpOworCQkJYnJlYWs7CisJCX0KKwl9CisJaWYgKGNvbHR5cGlkID09IEludmFsaWRP aWQpCisJCWVyZXBvcnQoRVJST1IsIChlcnJtc2coImNvbHVtbiBcIiVzXCIgb2YgcmVsYXRp b24gXCIlc1wiIGRvZXMgbm90IGV4aXN0IiwKKwkJCQkJCXBlcmlvZC0+c3RhcnRjb2xuYW1l LCBjeHQtPnJlbGF0aW9uLT5yZWxuYW1lKSkpOworCisJLyogTm93IG1ha2Ugc3VyZSBpdCBt YXRjaGVzIHJhbmdldHlwZW5hbWUgb3Igd2UgY2FuIGZpbmQgYSBtYXRjaGluZyByYW5nZSAq LworCXBlcmlvZC0+cm5ndHlwaWQgPSBjaG9vc2VfcmFuZ2V0eXBlX2Zvcl9wZXJpb2QocGVy aW9kLCBjb2x0eXBpZCk7CisKKwljeHQtPnBlcmlvZHMgPSBsYXBwZW5kKGN4dC0+cGVyaW9k cywgcGVyaW9kKTsKK30KKwogLyoKICAqIHRyYW5zZm9ybVRhYmxlQ29uc3RyYWludAogICoJ CXRyYW5zZm9ybSBhIENvbnN0cmFpbnQgbm9kZSB3aXRoaW4gQ1JFQVRFIFRBQkxFIG9yIEFM VEVSIFRBQkxFCkBAIC0xNTM3LDYgKzE2NDIsNyBAQCBnZW5lcmF0ZUNsb25lZEluZGV4U3Rt dChSYW5nZVZhciAqaGVhcFJlbCwgUmVsYXRpb24gc291cmNlX2lkeCwKIAlPaWQJCQlrZXlj b2x0eXBlOwogCURhdHVtCQlkYXR1bTsKIAlib29sCQlpc251bGw7CisJUGVyaW9kRGVmICAq cGVyaW9kOwogCiAJaWYgKGNvbnN0cmFpbnRPaWQpCiAJCSpjb25zdHJhaW50T2lkID0gSW52 YWxpZE9pZDsKQEAgLTE1OTMsNiArMTY5OSwxMSBAQCBnZW5lcmF0ZUNsb25lZEluZGV4U3Rt dChSYW5nZVZhciAqaGVhcFJlbCwgUmVsYXRpb24gc291cmNlX2lkeCwKIAlpbmRleC0+aWZf bm90X2V4aXN0cyA9IGZhbHNlOwogCWluZGV4LT5yZXNldF9kZWZhdWx0X3RibHNwYyA9IGZh bHNlOwogCisJLyogQ29weSB0aGUgcGVyaW9kICovCisJcGVyaW9kID0gbWFrZU5vZGUoUGVy aW9kRGVmKTsKKwlwZXJpb2QtPm9pZCA9IGlkeHJlYy0+aW5kcGVyaW9kOworCWluZGV4LT5w ZXJpb2QgPSBwZXJpb2Q7CisKIAkvKgogCSAqIFdlIGRvbid0IHRyeSB0byBwcmVzZXJ2ZSB0 aGUgbmFtZSBvZiB0aGUgc291cmNlIGluZGV4OyBpbnN0ZWFkLCBqdXN0CiAJICogbGV0IERl ZmluZUluZGV4KCkgY2hvb3NlIGEgcmVhc29uYWJsZSBuYW1lLiAgKElmIHdlIHRyaWVkIHRv IHByZXNlcnZlCkBAIC0yODY4LDYgKzI5NzksMTAgQEAgdHJhbnNmb3JtSW5kZXhTdG10KE9p ZCByZWxpZCwgSW5kZXhTdG10ICpzdG10LCBjb25zdCBjaGFyICpxdWVyeVN0cmluZykKIAkJ fQogCX0KIAorCS8qIHRha2UgY2FyZSBvZiB0aGUgcGVyaW9kICovCisJaWYgKHN0bXQtPnBl cmlvZCkKKwkJc3RtdC0+cGVyaW9kLT5vaWQgPSBnZXRfcGVyaW9kX29pZChyZWxpZCwgc3Rt dC0+cGVyaW9kLT5wZXJpb2RuYW1lLCBmYWxzZSk7CisKIAkvKgogCSAqIENoZWNrIHRoYXQg b25seSB0aGUgYmFzZSByZWwgaXMgbWVudGlvbmVkLiAgKFRoaXMgc2hvdWxkIGJlIGRlYWQg Y29kZQogCSAqIG5vdyB0aGF0IGFkZF9taXNzaW5nX2Zyb20gaXMgaGlzdG9yeS4pCkBAIC0z MzI1LDYgKzM0NDAsNyBAQCB0cmFuc2Zvcm1BbHRlclRhYmxlU3RtdChPaWQgcmVsaWQsIEFs dGVyVGFibGVTdG10ICpzdG10LAogCWN4dC5pbmhSZWxhdGlvbnMgPSBOSUw7CiAJY3h0Lmlz YWx0ZXIgPSB0cnVlOwogCWN4dC5jb2x1bW5zID0gTklMOworCWN4dC5wZXJpb2RzID0gTklM OwogCWN4dC5ja2NvbnN0cmFpbnRzID0gTklMOwogCWN4dC5ma2NvbnN0cmFpbnRzID0gTklM OwogCWN4dC5peGNvbnN0cmFpbnRzID0gTklMOwpAQCAtMzM4Niw2ICszNTAyLDEyIEBAIHRy YW5zZm9ybUFsdGVyVGFibGVTdG10KE9pZCByZWxpZCwgQWx0ZXJUYWJsZVN0bXQgKnN0bXQs CiAJCQkJCQkgKGludCkgbm9kZVRhZyhjbWQtPmRlZikpOwogCQkJCWJyZWFrOwogCisJCQlj YXNlIEFUX0FkZFBlcmlvZDoKKwkJCQl7CisJCQkJCW5ld2NtZHMgPSBsYXBwZW5kKG5ld2Nt ZHMsIGNtZCk7CisJCQkJCWJyZWFrOworCQkJCX0KKwogCQkJY2FzZSBBVF9BbHRlckNvbHVt blR5cGU6CiAJCQkJewogCQkJCQlDb2x1bW5EZWYgICpkZWYgPSBjYXN0Tm9kZShDb2x1bW5E ZWYsIGNtZC0+ZGVmKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xz eXNjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMKaW5kZXgg Yzc2MDc4OTVjZC4uMGU5ZGRiYzJkMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMv Y2FjaGUvbHN5c2NhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2Nh Y2hlLmMKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX25hbWVzcGFj ZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfb3BjbGFzcy5oIgogI2luY2x1ZGUgImNhdGFs b2cvcGdfb3BlcmF0b3IuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3BlcmlvZC5oIgogI2lu Y2x1ZGUgImNhdGFsb2cvcGdfcHJvYy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfcmFuZ2Uu aCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3N0YXRpc3RpYy5oIgpAQCAtMTAyMSw2ICsxMDIy LDY4IEBAIGdldF9hdHRvcHRpb25zKE9pZCByZWxpZCwgaW50MTYgYXR0bnVtKQogCXJldHVy biByZXN1bHQ7CiB9CiAKKy8qCQkJCS0tLS0tLS0tLS0gUEdfUEVSSU9EIENBQ0hFIC0tLS0t LS0tLS0JCQkJICovCisKKy8qCisgKiBnZXRfcGVyaW9kbmFtZSAtIGdpdmVuIGl0cyBPSUQs IGxvb2sgdXAgYSBwZXJpb2QKKyAqCisgKiBJZiBtaXNzaW5nX29rIGlzIGZhbHNlLCB0aHJv dyBhbiBlcnJvciBpZiB0aGUgcGVyaW9kIGlzIG5vdCBmb3VuZC4KKyAqIElmIHRydWUsIGp1 c3QgcmV0dXJuIEludmFsaWRPaWQuCisgKi8KK2NoYXIgKgorZ2V0X3BlcmlvZG5hbWUoT2lk IHBlcmlvZGlkLCBib29sIG1pc3Npbmdfb2spCit7CisJSGVhcFR1cGxlCXRwOworCisJdHAg PSBTZWFyY2hTeXNDYWNoZTEoUEVSSU9ET0lELAorCQkJCQkJIE9iamVjdElkR2V0RGF0dW0o cGVyaW9kaWQpKTsKKwlpZiAoSGVhcFR1cGxlSXNWYWxpZCh0cCkpCisJeworCQlGb3JtX3Bn X3BlcmlvZCBwZXJpb2RfdHVwID0gKEZvcm1fcGdfcGVyaW9kKSBHRVRTVFJVQ1QodHApOwor CQljaGFyCSAgICpyZXN1bHQ7CisKKwkJcmVzdWx0ID0gcHN0cmR1cChOYW1lU3RyKHBlcmlv ZF90dXAtPnBlcm5hbWUpKTsKKwkJUmVsZWFzZVN5c0NhY2hlKHRwKTsKKwkJcmV0dXJuIHJl c3VsdDsKKwl9CisKKwlpZiAoIW1pc3Npbmdfb2spCisJCWVsb2coRVJST1IsICJjYWNoZSBs b29rdXAgZmFpbGVkIGZvciBwZXJpb2QgJWQiLAorCQkJIHBlcmlvZGlkKTsKKwlyZXR1cm4g TlVMTDsKK30KKworLyoKKyAqIGdldF9wZXJpb2Rfb2lkIC0gZ2V0cyBpdHMgcmVsYXRpb24g YW5kIG5hbWUsIGxvb2sgdXAgYSBwZXJpb2QKKyAqCisgKiBJZiBtaXNzaW5nX29rIGlzIGZh bHNlLCB0aHJvdyBhbiBlcnJvciBpZiB0aGUgY2FzdCBpcyBub3QgZm91bmQuICBJZgorICog dHJ1ZSwganVzdCByZXR1cm4gSW52YWxpZE9pZC4KKyAqLworT2lkCitnZXRfcGVyaW9kX29p ZChPaWQgcmVsaWQsIGNvbnN0IGNoYXIgKnBlcmlvZG5hbWUsIGJvb2wgbWlzc2luZ19vaykK K3sKKwlIZWFwVHVwbGUJdHA7CisKKwl0cCA9IFNlYXJjaFN5c0NhY2hlMihQRVJJT0ROQU1F LAorCQkJCQkJIE9iamVjdElkR2V0RGF0dW0ocmVsaWQpLAorCQkJCQkJIFBvaW50ZXJHZXRE YXR1bShwZXJpb2RuYW1lKSk7CisKKwlpZiAoSGVhcFR1cGxlSXNWYWxpZCh0cCkpCisJewor CQlGb3JtX3BnX3BlcmlvZCBwZXJpb2RfdHVwID0gKEZvcm1fcGdfcGVyaW9kKSBHRVRTVFJV Q1QodHApOworCQlPaWQgcmVzdWx0OworCisJCXJlc3VsdCA9IHBlcmlvZF90dXAtPm9pZDsK KwkJUmVsZWFzZVN5c0NhY2hlKHRwKTsKKwkJcmV0dXJuIHJlc3VsdDsKKwl9CisKKwlpZiAo IW1pc3Npbmdfb2spCisJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBw ZXJpb2QgJXMiLAorCQkJIHBlcmlvZG5hbWUpOworCXJldHVybiBJbnZhbGlkT2lkOworfQor CiAvKgkJCQktLS0tLS0tLS0tIFBHX0NBU1QgQ0FDSEUgLS0tLS0tLS0tLQkJCQkJICovCiAK IC8qCkBAIC0zNDU2LDYgKzM1MTksMzAgQEAgZ2V0X211bHRpcmFuZ2VfcmFuZ2UoT2lkIG11 bHRpcmFuZ2VPaWQpCiAJCXJldHVybiBJbnZhbGlkT2lkOwogfQogCitPaWQKK2dldF9zdWJ0 eXBlX3JhbmdlKE9pZCBzdWJ0eXBlT2lkKQoreworCUNhdENMaXN0ICpjYXRsaXN0OworCU9p ZAlyZXN1bHQgPSBJbnZhbGlkT2lkOworCisJY2F0bGlzdCA9IFNlYXJjaFN5c0NhY2hlTGlz dDEoUkFOR0VTVUJUWVBFLCBPYmplY3RJZEdldERhdHVtKHN1YnR5cGVPaWQpKTsKKworCWlm IChjYXRsaXN0LT5uX21lbWJlcnMgPT0gMSkKKwl7CisJCUhlYXBUdXBsZQl0dXBsZSA9ICZj YXRsaXN0LT5tZW1iZXJzWzBdLT50dXBsZTsKKwkJRm9ybV9wZ19yYW5nZSBybmd0dXAgPSAo Rm9ybV9wZ19yYW5nZSkgR0VUU1RSVUNUKHR1cGxlKTsKKwkJcmVzdWx0ID0gcm5ndHVwLT5y bmd0eXBpZDsKKwkJUmVsZWFzZUNhdENhY2hlTGlzdChjYXRsaXN0KTsKKwl9CisJZWxzZSBp ZiAoY2F0bGlzdC0+bl9tZW1iZXJzID4gMSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJy Y29kZShFUlJDT0RFX0lOREVURVJNSU5BVEVfREFUQVRZUEUpLAorCQkJCSBlcnJtc2coImFt YmlndW91cyByYW5nZSBmb3IgdHlwZSAlcyIsCisJCQkJCQlmb3JtYXRfdHlwZV9iZShzdWJ0 eXBlT2lkKSkpKTsKKworCXJldHVybiByZXN1bHQ7Cit9CisKIC8qCQkJCS0tLS0tLS0tLS0g UEdfSU5ERVggQ0FDSEUgLS0tLS0tLS0tLQkJCQkgKi8KIAogLyoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2NhY2hlL3N5c2NhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9j YWNoZS9zeXNjYWNoZS5jCmluZGV4IDRlNGEzNGJkZTguLjJhMzUwM2EyODkgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3N5c2NhY2hlLmMKKysrIGIvc3JjL2JhY2tl bmQvdXRpbHMvY2FjaGUvc3lzY2FjaGUuYwpAQCAtNDksNiArNDksNyBAQAogI2luY2x1ZGUg ImNhdGFsb2cvcGdfb3BmYW1pbHkuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3BhcmFtZXRl cl9hY2wuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3BhcnRpdGlvbmVkX3RhYmxlLmgiCisj aW5jbHVkZSAiY2F0YWxvZy9wZ19wZXJpb2QuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3By b2MuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmgiCiAjaW5jbHVkZSAi Y2F0YWxvZy9wZ19wdWJsaWNhdGlvbl9uYW1lc3BhY2UuaCIKQEAgLTQyMiw2ICs0MjMsMTkg QEAgc3RhdGljIGNvbnN0IHN0cnVjdCBjYWNoZWRlc2MgY2FjaGVpbmZvW10gPSB7CiAJCUtF WShBbnVtX3BnX3BhcnRpdGlvbmVkX3RhYmxlX3BhcnRyZWxpZCksCiAJCTMyCiAJfSwKKwlb UEVSSU9ETkFNRV0gPSB7CisJCVBlcmlvZFJlbGF0aW9uSWQsCisJCVBlcmlvZFJlbGlkTmFt ZUluZGV4SWQsCisJCUtFWShBbnVtX3BnX3BlcmlvZF9wZXJyZWxpZCwKKwkJCUFudW1fcGdf cGVyaW9kX3Blcm5hbWUpLAorCQkzMgorCX0sCisJW1BFUklPRE9JRF0gPSB7CisJCVBlcmlv ZFJlbGF0aW9uSWQsCisJCVBlcmlvZE9iamVjdEluZGV4SWQsCisJCUtFWShBbnVtX3BnX3Bl cmlvZF9vaWQpLAorCQkzMgorCX0sCiAJW1BST0NOQU1FQVJHU05TUF0gPSB7CiAJCVByb2Nl ZHVyZVJlbGF0aW9uSWQsCiAJCVByb2NlZHVyZU5hbWVBcmdzTnNwSW5kZXhJZCwKQEAgLTQ4 MCw2ICs0OTQsMTMgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBjYWNoZWRlc2MgY2FjaGVpbmZv W10gPSB7CiAJCUtFWShBbnVtX3BnX3JhbmdlX3JuZ211bHRpdHlwaWQpLAogCQk0CiAJfSwK KwlbUkFOR0VTVUJUWVBFXSA9IHsKKwkJUmFuZ2VSZWxhdGlvbklkLAorCQlSYW5nZVN1YlR5 cGlkVHlwaWRJbmRleElkLAorCQlLRVkoQW51bV9wZ19yYW5nZV9ybmdzdWJ0eXBlLAorCQkJ QW51bV9wZ19yYW5nZV9ybmd0eXBpZCksCisJCTQKKwl9LAogCVtSQU5HRVRZUEVdID0gewog CQlSYW5nZVJlbGF0aW9uSWQsCiAJCVJhbmdlVHlwaWRJbmRleElkLApkaWZmIC0tZ2l0IGEv c3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5jIGIvc3JjL2Jpbi9wZ19kdW1w L3BnX2JhY2t1cF9hcmNoaXZlci5jCmluZGV4IGQ1MTgzNDllMTAuLmIwZmJlMjY3NjUgMTAw NjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfYXJjaGl2ZXIuYworKysgYi9z cmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hpdmVyLmMKQEAgLTM1MTUsNiArMzUxNSw3 IEBAIF9nZXRPYmplY3REZXNjcmlwdGlvbihQUUV4cEJ1ZmZlciBidWYsIGNvbnN0IFRvY0Vu dHJ5ICp0ZSkKIAkJCSBzdHJjbXAodHlwZSwgIkRBVEFCQVNFIFBST1BFUlRJRVMiKSA9PSAw IHx8CiAJCQkgc3RyY21wKHR5cGUsICJERUZBVUxUIikgPT0gMCB8fAogCQkJIHN0cmNtcCh0 eXBlLCAiRksgQ09OU1RSQUlOVCIpID09IDAgfHwKKwkJCSBzdHJjbXAodHlwZSwgIlBFUklP RCIpID09IDAgfHwKIAkJCSBzdHJjbXAodHlwZSwgIklOREVYIikgPT0gMCB8fAogCQkJIHN0 cmNtcCh0eXBlLCAiUlVMRSIpID09IDAgfHwKIAkJCSBzdHJjbXAodHlwZSwgIlRSSUdHRVIi KSA9PSAwIHx8CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jIGIvc3Jj L2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwppbmRleCA0MWE1MWVjNWNkLi41MDg0MWY3NTViIDEw MDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCisrKyBiL3NyYy9iaW4vcGdf ZHVtcC9wZ19kdW1wLmMKQEAgLTYzNDAsNiArNjM0MCw3IEBAIGdldFRhYmxlcyhBcmNoaXZl ICpmb3V0LCBpbnQgKm51bVRhYmxlcykKIAlpbnQJCQlpX3JlbHR5cGU7CiAJaW50CQkJaV9y ZWxvd25lcjsKIAlpbnQJCQlpX3JlbGNoZWNrczsKKwlpbnQJCQlpX25wZXJpb2Q7CiAJaW50 CQkJaV9yZWxoYXNpbmRleDsKIAlpbnQJCQlpX3JlbGhhc3J1bGVzOwogCWludAkJCWlfcmVs cGFnZXM7CkBAIC02NDE3LDYgKzY0MTgsMTQgQEAgZ2V0VGFibGVzKEFyY2hpdmUgKmZvdXQs IGludCAqbnVtVGFibGVzKQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKIAkJCQkJ CQkgImMucmVsaGFzb2lkcywgIik7CiAKKwkvKiBJbiBQRzE2IHVwd2FyZHMgd2UgaGF2ZSBQ RVJJT0RzLiAqLworCWlmIChmb3V0LT5yZW1vdGVWZXJzaW9uID49IDE2MDAwMCkKKwkJYXBw ZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksCisJCQkJCQkJICIoU0VMRUNUIGNvdW50KCopIEZS T00gcGdfcGVyaW9kIFdIRVJFIHBlcnJlbGlkID0gYy5vaWQpIEFTIG5wZXJpb2RzLCAiKTsK KwllbHNlCisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LAorCQkJCQkJCSAiMCBBUyBu cGVyaW9kcywgIik7CisKIAlpZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+PSA5MDMwMCkKIAkJ YXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksCiAJCQkJCQkJICJjLnJlbGlzcG9wdWxhdGVk LCAiKTsKQEAgLTY1NTQsNiArNjU2Myw3IEBAIGdldFRhYmxlcyhBcmNoaXZlICpmb3V0LCBp bnQgKm51bVRhYmxlcykKIAlpX3JlbHR5cGUgPSBQUWZudW1iZXIocmVzLCAicmVsdHlwZSIp OwogCWlfcmVsb3duZXIgPSBQUWZudW1iZXIocmVzLCAicmVsb3duZXIiKTsKIAlpX3JlbGNo ZWNrcyA9IFBRZm51bWJlcihyZXMsICJyZWxjaGVja3MiKTsKKwlpX25wZXJpb2QgPSBQUWZu dW1iZXIocmVzLCAibnBlcmlvZHMiKTsKIAlpX3JlbGhhc2luZGV4ID0gUFFmbnVtYmVyKHJl cywgInJlbGhhc2luZGV4Iik7CiAJaV9yZWxoYXNydWxlcyA9IFBRZm51bWJlcihyZXMsICJy ZWxoYXNydWxlcyIpOwogCWlfcmVscGFnZXMgPSBQUWZudW1iZXIocmVzLCAicmVscGFnZXMi KTsKQEAgLTY2MzcsNiArNjY0Nyw3IEBAIGdldFRhYmxlcyhBcmNoaXZlICpmb3V0LCBpbnQg Km51bVRhYmxlcykKIAkJfQogCQl0YmxpbmZvW2ldLnJlbHRhYmxlc3BhY2UgPSBwZ19zdHJk dXAoUFFnZXR2YWx1ZShyZXMsIGksIGlfcmVsdGFibGVzcGFjZSkpOwogCQl0YmxpbmZvW2ld Lmhhc29pZHMgPSAoc3RyY21wKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3JlbGhhc29pZHMpLCAi dCIpID09IDApOworCQl0YmxpbmZvW2ldLm5wZXJpb2QgPSBhdG9pKFBRZ2V0dmFsdWUocmVz LCBpLCBpX25wZXJpb2QpKTsKIAkJdGJsaW5mb1tpXS5oYXN0cmlnZ2VycyA9IChzdHJjbXAo UFFnZXR2YWx1ZShyZXMsIGksIGlfcmVsaGFzdHJpZ2dlcnMpLCAidCIpID09IDApOwogCQl0 YmxpbmZvW2ldLnJlbHBlcnNpc3RlbmNlID0gKihQUWdldHZhbHVlKHJlcywgaSwgaV9yZWxw ZXJzaXN0ZW5jZSkpOwogCQl0YmxpbmZvW2ldLnJlbGlzcG9wdWxhdGVkID0gKHN0cmNtcChQ UWdldHZhbHVlKHJlcywgaSwgaV9yZWxpc3BvcHVsYXRlZCksICJ0IikgPT0gMCk7CkBAIC04 MzYxLDcgKzgzNzIsNyBAQCBnZXRUcmFuc2Zvcm1zKEFyY2hpdmUgKmZvdXQsIGludCAqbnVt VHJhbnNmb3JtcykKIC8qCiAgKiBnZXRUYWJsZUF0dHJzIC0KICAqCSAgZm9yIGVhY2ggaW50 ZXJlc3RpbmcgdGFibGUsIHJlYWQgaW5mbyBhYm91dCBpdHMgYXR0cmlidXRlcwotICoJICAo bmFtZXMsIHR5cGVzLCBkZWZhdWx0IHZhbHVlcywgQ0hFQ0sgY29uc3RyYWludHMsIGV0YykK KyAqCSAgKG5hbWVzLCB0eXBlcywgZGVmYXVsdCB2YWx1ZXMsIENIRUNLIGNvbnN0cmFpbnRz LCBQRVJJT0RzLCBldGMpCiAgKgogICoJbW9kaWZpZXMgdGJsaW5mbwogICovCkBAIC04NDEx LDYgKzg0MjIsOCBAQCBnZXRUYWJsZUF0dHJzKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5mbyAq dGJsaW5mbywgaW50IG51bVRhYmxlcykKIAlmb3IgKGludCBpID0gMDsgaSA8IG51bVRhYmxl czsgaSsrKQogCXsKIAkJVGFibGVJbmZvICAqdGJpbmZvID0gJnRibGluZm9baV07CisJCWlu dAkJCW5kdW1wYWJsZWNoZWNrczsJLyogbnVtYmVyIG9mIENIRUNLIGNvbnN0cmFpbnRzIHRo YXQgZG8KKwkJCQkJCQkJCQkgICBub3QgYmVsb25nIHRvIGEgcGVyaW9kICovCiAKIAkJLyog RG9uJ3QgYm90aGVyIHRvIGNvbGxlY3QgaW5mbyBmb3Igc2VxdWVuY2VzICovCiAJCWlmICh0 YmluZm8tPnJlbGtpbmQgPT0gUkVMS0lORF9TRVFVRU5DRSkKQEAgLTg0MjUsNyArODQzOCw4 IEBAIGdldFRhYmxlQXR0cnMoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvICp0YmxpbmZvLCBp bnQgbnVtVGFibGVzKQogCQkJYXBwZW5kUFFFeHBCdWZmZXJDaGFyKHRibG9pZHMsICcsJyk7 CiAJCWFwcGVuZFBRRXhwQnVmZmVyKHRibG9pZHMsICIldSIsIHRiaW5mby0+ZG9iai5jYXRJ ZC5vaWQpOwogCi0JCWlmICh0YmluZm8tPm5jaGVjayA+IDApCisJCW5kdW1wYWJsZWNoZWNr cyA9IHRiaW5mby0+bmNoZWNrIC0gdGJpbmZvLT5ucGVyaW9kOworCQlpZiAobmR1bXBhYmxl Y2hlY2tzID4gMCkKIAkJewogCQkJLyogQWxzbyBtYWtlIGEgbGlzdCBvZiB0aGUgb25lcyB3 aXRoIGNoZWNrIGNvbnN0cmFpbnRzICovCiAJCQlpZiAoY2hlY2tvaWRzLT5sZW4gPiAxKSAv KiBkbyB3ZSBoYXZlIG1vcmUgdGhhbiB0aGUgJ3snPyAqLwpAQCAtODc4NCwxNSArODc5OCwz NiBAQCBnZXRUYWJsZUF0dHJzKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5mbyAqdGJsaW5mbywg aW50IG51bVRhYmxlcykKIAkJcGdfbG9nX2luZm8oImZpbmRpbmcgdGFibGUgY2hlY2sgY29u c3RyYWludHMiKTsKIAogCQlyZXNldFBRRXhwQnVmZmVyKHEpOwotCQlhcHBlbmRQUUV4cEJ1 ZmZlcihxLAotCQkJCQkJICAiU0VMRUNUIGMudGFibGVvaWQsIGMub2lkLCBjb25yZWxpZCwg Y29ubmFtZSwgIgotCQkJCQkJICAicGdfY2F0YWxvZy5wZ19nZXRfY29uc3RyYWludGRlZihj Lm9pZCkgQVMgY29uc3JjLCAiCi0JCQkJCQkgICJjb25pc2xvY2FsLCBjb252YWxpZGF0ZWQg IgotCQkJCQkJICAiRlJPTSB1bm5lc3QoJyVzJzo6cGdfY2F0YWxvZy5vaWRbXSkgQVMgc3Jj KHRibG9pZClcbiIKLQkJCQkJCSAgIkpPSU4gcGdfY2F0YWxvZy5wZ19jb25zdHJhaW50IGMg T04gKHNyYy50YmxvaWQgPSBjLmNvbnJlbGlkKVxuIgotCQkJCQkJICAiV0hFUkUgY29udHlw ZSA9ICdjJyAiCi0JCQkJCQkgICJPUkRFUiBCWSBjLmNvbnJlbGlkLCBjLmNvbm5hbWUiLAot CQkJCQkJICBjaGVja29pZHMtPmRhdGEpOworCQlpZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+ PSAxNjAwMDApCisJCXsKKwkJCS8qCisJCQkgKiBQRVJJT0RzIHdlcmUgYWRkZWQgaW4gdjE3 IGFuZCB3ZSBkb24ndCBkdW1wIENIRUNLCisJCQkgKiBjb25zdHJhaW50cyBmb3IgdGhlbS4K KwkJCSAqLworCQkJYXBwZW5kUFFFeHBCdWZmZXIocSwKKwkJCQkJCQkgICJTRUxFQ1QgYy50 YWJsZW9pZCwgYy5vaWQsIGNvbnJlbGlkLCBjb25uYW1lLCAiCisJCQkJCQkJICAicGdfY2F0 YWxvZy5wZ19nZXRfY29uc3RyYWludGRlZihjLm9pZCkgQVMgY29uc3JjLCAiCisJCQkJCQkJ ICAiY29uaXNsb2NhbCwgY29udmFsaWRhdGVkICIKKwkJCQkJCQkgICJGUk9NIHVubmVzdCgn JXMnOjpwZ19jYXRhbG9nLm9pZFtdKSBBUyBzcmModGJsb2lkKVxuIgorCQkJCQkJCSAgIkpP SU4gcGdfY2F0YWxvZy5wZ19jb25zdHJhaW50IGMgT04gKHNyYy50YmxvaWQgPSBjLmNvbnJl bGlkKVxuIgorCQkJCQkJCSAgIldIRVJFIGNvbnR5cGUgPSAnYycgIgorCQkJCQkJCSAgIiAg IEFORCBOT1QgRVhJU1RTIChTRUxFQ1QgRlJPTSBwZ19wZXJpb2QgIgorCQkJCQkJCSAgIiAg ICAgICAgICAgICAgICAgICBXSEVSRSAocGVycmVsaWQsIHBlcmNvbnN0cmFpbnQpID0gKGNv bnJlbGlkLCBjLm9pZCkpICIKKwkJCQkJCQkgICJPUkRFUiBCWSBjLmNvbnJlbGlkLCBjLmNv bm5hbWUiLAorCQkJCQkJCSAgY2hlY2tvaWRzLT5kYXRhKTsKKwkJfQorCQllbHNlCisJCXsK KwkJCWFwcGVuZFBRRXhwQnVmZmVyKHEsCisJCQkJCQkJICAiU0VMRUNUIGMudGFibGVvaWQs IGMub2lkLCBjb25yZWxpZCwgY29ubmFtZSwgIgorCQkJCQkJCSAgInBnX2NhdGFsb2cucGdf Z2V0X2NvbnN0cmFpbnRkZWYoYy5vaWQpIEFTIGNvbnNyYywgIgorCQkJCQkJCSAgImNvbmlz bG9jYWwsIGNvbnZhbGlkYXRlZCAiCisJCQkJCQkJICAiRlJPTSB1bm5lc3QoJyVzJzo6cGdf Y2F0YWxvZy5vaWRbXSkgQVMgc3JjKHRibG9pZClcbiIKKwkJCQkJCQkgICJKT0lOIHBnX2Nh dGFsb2cucGdfY29uc3RyYWludCBjIE9OIChzcmMudGJsb2lkID0gYy5jb25yZWxpZClcbiIK KwkJCQkJCQkgICJXSEVSRSBjb250eXBlID0gJ2MnICIKKwkJCQkJCQkgICJPUkRFUiBCWSBj LmNvbnJlbGlkLCBjLmNvbm5hbWUiLAorCQkJCQkJCSAgY2hlY2tvaWRzLT5kYXRhKTsKKwkJ fQogCiAJCXJlcyA9IEV4ZWN1dGVTcWxRdWVyeShmb3V0LCBxLT5kYXRhLCBQR1JFU19UVVBM RVNfT0spOwogCkBAIC04ODE0LDYgKzg4NDksNyBAQCBnZXRUYWJsZUF0dHJzKEFyY2hpdmUg KmZvdXQsIFRhYmxlSW5mbyAqdGJsaW5mbywgaW50IG51bVRhYmxlcykKIAkJCU9pZAkJCWNv bnJlbGlkID0gYXRvb2lkKFBRZ2V0dmFsdWUocmVzLCBqLCBpX2NvbnJlbGlkKSk7CiAJCQlU YWJsZUluZm8gICp0YmluZm8gPSBOVUxMOwogCQkJaW50CQkJbnVtY29uczsKKwkJCWludAkJ CW5kdW1wYWJsZWNoZWNrczsKIAogCQkJLyogQ291bnQgcm93cyBmb3IgdGhpcyB0YWJsZSAq LwogCQkJZm9yIChudW1jb25zID0gMTsgbnVtY29ucyA8IG51bUNvbnN0cnMgLSBqOyBudW1j b25zKyspCkBAIC04ODMzLDEyICs4ODY5LDEzIEBAIGdldFRhYmxlQXR0cnMoQXJjaGl2ZSAq Zm91dCwgVGFibGVJbmZvICp0YmxpbmZvLCBpbnQgbnVtVGFibGVzKQogCQkJaWYgKGN1cnRi bGluZHggPj0gbnVtVGFibGVzKQogCQkJCXBnX2ZhdGFsKCJ1bnJlY29nbml6ZWQgdGFibGUg T0lEICV1IiwgY29ucmVsaWQpOwogCi0JCQlpZiAobnVtY29ucyAhPSB0YmluZm8tPm5jaGVj aykKKwkJCW5kdW1wYWJsZWNoZWNrcyA9IHRiaW5mby0+bmNoZWNrIC0gdGJpbmZvLT5ucGVy aW9kOworCQkJaWYgKG51bWNvbnMgIT0gbmR1bXBhYmxlY2hlY2tzKQogCQkJewogCQkJCXBn X2xvZ19lcnJvcihuZ2V0dGV4dCgiZXhwZWN0ZWQgJWQgY2hlY2sgY29uc3RyYWludCBvbiB0 YWJsZSBcIiVzXCIgYnV0IGZvdW5kICVkIiwKIAkJCQkJCQkJCSAgImV4cGVjdGVkICVkIGNo ZWNrIGNvbnN0cmFpbnRzIG9uIHRhYmxlIFwiJXNcIiBidXQgZm91bmQgJWQiLAotCQkJCQkJ CQkJICB0YmluZm8tPm5jaGVjayksCi0JCQkJCQkJIHRiaW5mby0+bmNoZWNrLCB0YmluZm8t PmRvYmoubmFtZSwgbnVtY29ucyk7CisJCQkJCQkJCQkgIG5kdW1wYWJsZWNoZWNrcyksCisJ CQkJCQkJIG5kdW1wYWJsZWNoZWNrcywgdGJpbmZvLT5kb2JqLm5hbWUsIG51bWNvbnMpOwog CQkJCXBnX2xvZ19lcnJvcl9oaW50KCJUaGUgc3lzdGVtIGNhdGFsb2dzIG1pZ2h0IGJlIGNv cnJ1cHRlZC4iKTsKIAkJCQlleGl0X25pY2VseSgxKTsKIAkJCX0KQEAgLTg4OTcsNiArODkz NCw3OSBAQCBnZXRUYWJsZUF0dHJzKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5mbyAqdGJsaW5m bywgaW50IG51bVRhYmxlcykKIAkJUFFjbGVhcihyZXMpOwogCX0KIAorCWZvciAoaW50IGkg PSAwOyBpIDwgbnVtVGFibGVzOyBpKyspCisJeworCQlUYWJsZUluZm8gICp0YmluZm8gPSAm dGJsaW5mb1tpXTsKKworCQkvKgorCQkgKiBHZXQgaW5mbyBhYm91dCBQRVJJT0QgZGVmaW5p dGlvbnMKKwkJICovCisJCWlmICh0YmluZm8tPm5wZXJpb2QgPiAwKQorCQl7CisJCQlQZXJp b2RJbmZvICpwZXJpb2RzOworCQkJaW50CQkJbnVtUGVyaW9kczsKKwkJCWludAkJCWo7CisK KwkJCS8qIFdlIHNob3VsZG4ndCBoYXZlIGFueSBwZXJpb2RzIGJlZm9yZSB2MTcgKi8KKwkJ CUFzc2VydChmb3V0LT5yZW1vdGVWZXJzaW9uID49IDE2MDAwMCk7CisKKwkJCXBnX2xvZ19p bmZvKCJmaW5kaW5nIHBlcmlvZHMgZm9yIHRhYmxlIFwiJXMuJXNcIiIsCisJCQkJCQl0Ymlu Zm8tPmRvYmoubmFtZXNwYWNlLT5kb2JqLm5hbWUsCisJCQkJCQl0YmluZm8tPmRvYmoubmFt ZSk7CisKKwkJCXJlc2V0UFFFeHBCdWZmZXIocSk7CisJCQlhcHBlbmRQUUV4cEJ1ZmZlcihx LAorCQkJCSJTRUxFQ1QgcC50YWJsZW9pZCwgcC5vaWQsIHAucGVybmFtZSwgIgorCQkJCSIg ICAgICAgc2EuYXR0bmFtZSBBUyBwZXJzdGFydCwgZWEuYXR0bmFtZSBBUyBwZXJlbmQsICIK KwkJCQkiICAgICAgIHIudHlwbmFtZSBBUyBybmd0eXBlLCAiCisJCQkJIiAgICAgICBjLmNv bm5hbWUgQVMgY29ubmFtZSAiCisJCQkJIkZST00gcGdfY2F0YWxvZy5wZ19wZXJpb2QgQVMg cCAiCisJCQkJIkpPSU4gcGdfY2F0YWxvZy5wZ19hdHRyaWJ1dGUgQVMgc2EgT04gKHNhLmF0 dHJlbGlkLCBzYS5hdHRudW0pID0gKHAucGVycmVsaWQsIHAucGVyc3RhcnQpICIKKwkJCQki Sk9JTiBwZ19jYXRhbG9nLnBnX2F0dHJpYnV0ZSBBUyBlYSBPTiAoZWEuYXR0cmVsaWQsIGVh LmF0dG51bSkgPSAocC5wZXJyZWxpZCwgcC5wZXJlbmQpICIKKwkJCQkiSk9JTiBwZ19jYXRh bG9nLnBnX3R5cGUgQVMgciBPTiByLm9pZCA9IHAucGVycm5ndHlwZSAiCisJCQkJIkpPSU4g cGdfY2F0YWxvZy5wZ19jb25zdHJhaW50IEFTIGMgT04gYy5vaWQgPSBwLnBlcmNvbnN0cmFp bnQgIgorCQkJCSJXSEVSRSBwLnBlcnJlbGlkID0gJyV1Jzo6cGdfY2F0YWxvZy5vaWQgIgor CQkJCSJPUkRFUiBCWSBwLnBlcm5hbWUiLAorCQkJCXRiaW5mby0+ZG9iai5jYXRJZC5vaWQp OworCisJCQlyZXMgPSBFeGVjdXRlU3FsUXVlcnkoZm91dCwgcS0+ZGF0YSwgUEdSRVNfVFVQ TEVTX09LKTsKKworCQkJLyoKKwkJCSAqIElmIHdlIGRpZG4ndCBnZXQgdGhlIG51bWJlciBv ZiByb3dzIHdlIHRob3VnaHQgd2Ugd2VyZSBnb2luZyB0bywKKwkJCSAqIHRoZW4gdGhvc2Ug Sk9JTnMgZGlkbid0IHdvcmsuCisJCQkgKi8KKwkJCW51bVBlcmlvZHMgPSBQUW50dXBsZXMo cmVzKTsKKwkJCWlmIChudW1QZXJpb2RzICE9IHRiaW5mby0+bnBlcmlvZCkKKwkJCXsKKwkJ CQlwZ19sb2dfaW5mbyhuZ2V0dGV4dCgiZXhwZWN0ZWQgJWQgcGVyaW9kIG9uIHRhYmxlIFwi JXNcIiBidXQgZm91bmQgJWQiLAorCQkJCQkJCQkJICJleHBlY3RlZCAlZCBwZXJpb2RzIG9u IHRhYmxlIFwiJXNcIiBidXQgZm91bmQgJWQiLAorCQkJCQkJCQkJIHRiaW5mby0+bnBlcmlv ZCksCisJCQkJCQkJdGJpbmZvLT5ucGVyaW9kLCB0YmluZm8tPmRvYmoubmFtZSwgbnVtUGVy aW9kcyk7CisJCQkJcGdfbG9nX2luZm8oIihUaGUgc3lzdGVtIGNhdGFsb2dzIG1pZ2h0IGJl IGNvcnJ1cHRlZC4pIik7CisJCQkJZXhpdF9uaWNlbHkoMSk7CisJCQl9CisKKwkJCXBlcmlv ZHMgPSAoUGVyaW9kSW5mbyAqKSBwZ19tYWxsb2MobnVtUGVyaW9kcyAqIHNpemVvZihQZXJp b2RJbmZvKSk7CisJCQl0YmluZm8tPnBlcmlvZHMgPSBwZXJpb2RzOworCisJCQlmb3IgKGog PSAwOyBqIDwgbnVtUGVyaW9kczsgaisrKQorCQkJeworCQkJCXBlcmlvZHNbal0uZG9iai5v YmpUeXBlID0gRE9fUEVSSU9EOworCQkJCXBlcmlvZHNbal0uZG9iai5jYXRJZC50YWJsZW9p ZCA9IGF0b29pZChQUWdldHZhbHVlKHJlcywgaiwgMCkpOworCQkJCXBlcmlvZHNbal0uZG9i ai5jYXRJZC5vaWQgPSBhdG9vaWQoUFFnZXR2YWx1ZShyZXMsIGosIDEpKTsKKwkJCQlBc3Np Z25EdW1wSWQoJnBlcmlvZHNbal0uZG9iaik7CisJCQkJcGVyaW9kc1tqXS5kb2JqLm5hbWUg PSBwZ19zdHJkdXAoUFFnZXR2YWx1ZShyZXMsIGosIDIpKTsKKwkJCQlwZXJpb2RzW2pdLmRv YmoubmFtZXNwYWNlID0gdGJpbmZvLT5kb2JqLm5hbWVzcGFjZTsKKwkJCQlwZXJpb2RzW2pd LnBlcnRhYmxlID0gdGJpbmZvOworCQkJCXBlcmlvZHNbal0ucGVyc3RhcnQgPSBwZ19zdHJk dXAoUFFnZXR2YWx1ZShyZXMsIGosIDMpKTsKKwkJCQlwZXJpb2RzW2pdLnBlcmVuZCA9IHBn X3N0cmR1cChQUWdldHZhbHVlKHJlcywgaiwgNCkpOworCQkJCXBlcmlvZHNbal0ucm5ndHlw ZSA9IHBnX3N0cmR1cChQUWdldHZhbHVlKHJlcywgaiwgNSkpOworCQkJCXBlcmlvZHNbal0u Y29ubmFtZSA9IHBnX3N0cmR1cChQUWdldHZhbHVlKHJlcywgaiwgNikpOworCQkJfQorCQkJ UFFjbGVhcihyZXMpOworCQl9CisJfQorCiAJZGVzdHJveVBRRXhwQnVmZmVyKHEpOwogCWRl c3Ryb3lQUUV4cEJ1ZmZlcih0YmxvaWRzKTsKIAlkZXN0cm95UFFFeHBCdWZmZXIoY2hlY2tv aWRzKTsKQEAgLTEwMTY3LDYgKzEwMjc3LDggQEAgZHVtcER1bXBhYmxlT2JqZWN0KEFyY2hp dmUgKmZvdXQsIER1bXBhYmxlT2JqZWN0ICpkb2JqKQogCQljYXNlIERPX0ZLX0NPTlNUUkFJ TlQ6CiAJCQlkdW1wQ29uc3RyYWludChmb3V0LCAoY29uc3QgQ29uc3RyYWludEluZm8gKikg ZG9iaik7CiAJCQlicmVhazsKKwkJY2FzZSBET19QRVJJT0Q6CisJCQlicmVhazsKIAkJY2Fz ZSBET19QUk9DTEFORzoKIAkJCWR1bXBQcm9jTGFuZyhmb3V0LCAoY29uc3QgUHJvY0xhbmdJ bmZvICopIGRvYmopOwogCQkJYnJlYWs7CkBAIC0xNTY1MSw2ICsxNTc2MywzMiBAQCBkdW1w VGFibGVTY2hlbWEoQXJjaGl2ZSAqZm91dCwgY29uc3QgVGFibGVJbmZvICp0YmluZm8pCiAJ CQkJfQogCQkJfQogCisJCQkvKgorCQkJICogQWRkIG5vbi1pbmhlcml0ZWQgUEVSSU9EIGRl ZmluaXRpb25zLCBpZiBhbnkuCisJCQkgKi8KKwkJCWZvciAoaiA9IDA7IGogPCB0YmluZm8t Pm5wZXJpb2Q7IGorKykKKwkJCXsKKwkJCQlQZXJpb2RJbmZvICpwZXJpb2QgPSAmKHRiaW5m by0+cGVyaW9kc1tqXSk7CisKKwkJCQljaGFyCSAgICpuYW1lID0gcGdfc3RyZHVwKGZtdElk KHBlcmlvZC0+ZG9iai5uYW1lKSk7CisJCQkJY2hhcgkgICAqc3RhcnQgPSBwZ19zdHJkdXAo Zm10SWQocGVyaW9kLT5wZXJzdGFydCkpOworCQkJCWNoYXIJICAgKmVuZCA9IHBnX3N0cmR1 cChmbXRJZChwZXJpb2QtPnBlcmVuZCkpOworCQkJCWNoYXIJICAgKnJuZ3R5cGUgPSBwZ19z dHJkdXAoZm10SWQocGVyaW9kLT5ybmd0eXBlKSk7CisJCQkJY2hhcgkgICAqY29ubmFtZSA9 IHBnX3N0cmR1cChmbXRJZChwZXJpb2QtPmNvbm5hbWUpKTsKKworCQkJCWlmIChhY3R1YWxf YXR0cyA9PSAwKQorCQkJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxLCAiIChcbiAgICAiKTsK KwkJCQllbHNlCisJCQkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHEsICIsXG4gICAgIik7CisK KwkJCQlhcHBlbmRQUUV4cEJ1ZmZlcihxLCAiUEVSSU9EIEZPUiAlcyAoJXMsICVzKSAiCisJ CQkJCQkiV0lUSCAocmFuZ2V0eXBlID0gJXMsIGNoZWNrX2NvbnN0cmFpbnRfbmFtZSA9ICVz KSIsCisJCQkJCQkJCSAgbmFtZSwgc3RhcnQsIGVuZCwKKwkJCQkJCQkJICBybmd0eXBlLCBj b25uYW1lKTsKKworCQkJCWFjdHVhbF9hdHRzKys7CisJCQl9CisKIAkJCS8qCiAJCQkgKiBB ZGQgbm9uLWluaGVyaXRlZCBDSEVDSyBjb25zdHJhaW50cywgaWYgYW55LgogCQkJICoKQEAg LTE1NjU5LDcgKzE1Nzk3LDcgQEAgZHVtcFRhYmxlU2NoZW1hKEFyY2hpdmUgKmZvdXQsIGNv bnN0IFRhYmxlSW5mbyAqdGJpbmZvKQogCQkJICogUEFSVElUSU9OIHRoYXQgd2UnbGwgZW1p dCBsYXRlciBleHBlY3RzIHRoZSBjb25zdHJhaW50IHRvIGJlCiAJCQkgKiB0aGVyZS4gIChO byBuZWVkIHRvIGZpeCBjb25pc2xvY2FsOiBBVFRBQ0ggUEFSVElUSU9OIGRvZXMgdGhhdCkK IAkJCSAqLwotCQkJZm9yIChqID0gMDsgaiA8IHRiaW5mby0+bmNoZWNrOyBqKyspCisJCQlm b3IgKGogPSAwOyBqIDwgdGJpbmZvLT5uY2hlY2sgLSB0YmluZm8tPm5wZXJpb2Q7IGorKykK IAkJCXsKIAkJCQlDb25zdHJhaW50SW5mbyAqY29uc3RyID0gJih0YmluZm8tPmNoZWNrZXhw cnNbal0pOwogCkBAIC0xNTg1OCw3ICsxNTk5Niw3IEBAIGR1bXBUYWJsZVNjaGVtYShBcmNo aXZlICpmb3V0LCBjb25zdCBUYWJsZUluZm8gKnRiaW5mbykKIAkJCSAqIEZvciBwYXJ0aXRp b25zLCB0aGV5IHdlcmUgYWxyZWFkeSBkdW1wZWQsIGFuZCBjb25pc2xvY2FsCiAJCQkgKiBk b2Vzbid0IG5lZWQgZml4aW5nLgogCQkJICovCi0JCQlmb3IgKGsgPSAwOyBrIDwgdGJpbmZv LT5uY2hlY2s7IGsrKykKKwkJCWZvciAoayA9IDA7IGsgPCB0YmluZm8tPm5jaGVjayAtIHRi aW5mby0+bnBlcmlvZDsgaysrKQogCQkJewogCQkJCUNvbnN0cmFpbnRJbmZvICpjb25zdHIg PSAmKHRiaW5mby0+Y2hlY2tleHByc1trXSk7CiAKQEAgLTE2MTQ5LDcgKzE2Mjg3LDcgQEAg ZHVtcFRhYmxlU2NoZW1hKEFyY2hpdmUgKmZvdXQsIGNvbnN0IFRhYmxlSW5mbyAqdGJpbmZv KQogCQlkdW1wVGFibGVTZWNMYWJlbChmb3V0LCB0YmluZm8sIHJlbHR5cGVuYW1lKTsKIAog CS8qIER1bXAgY29tbWVudHMgb24gaW5saW5lZCB0YWJsZSBjb25zdHJhaW50cyAqLwotCWZv ciAoaiA9IDA7IGogPCB0YmluZm8tPm5jaGVjazsgaisrKQorCWZvciAoaiA9IDA7IGogPCB0 YmluZm8tPm5jaGVjayAtIHRiaW5mby0+bnBlcmlvZDsgaisrKQogCXsKIAkJQ29uc3RyYWlu dEluZm8gKmNvbnN0ciA9ICYodGJpbmZvLT5jaGVja2V4cHJzW2pdKTsKIApAQCAtMTgyMjIs NiArMTgzNjAsNyBAQCBhZGRCb3VuZGFyeURlcGVuZGVuY2llcyhEdW1wYWJsZU9iamVjdCAq KmRvYmpzLCBpbnQgbnVtT2JqcywKIAkJCWNhc2UgRE9fVFJJR0dFUjoKIAkJCWNhc2UgRE9f RVZFTlRfVFJJR0dFUjoKIAkJCWNhc2UgRE9fREVGQVVMVF9BQ0w6CisJCQljYXNlIERPX1BF UklPRDoKIAkJCWNhc2UgRE9fUE9MSUNZOgogCQkJY2FzZSBET19QVUJMSUNBVElPTjoKIAkJ CWNhc2UgRE9fUFVCTElDQVRJT05fUkVMOgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1w L3BnX2R1bXAuaCBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKaW5kZXggZWQ2Y2U0MWFk Ny4uZGRhMWJmYWMzOCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaAor KysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oCkBAIC01OSw2ICs1OSw3IEBAIHR5cGVk ZWYgZW51bQogCURPX1RSSUdHRVIsCiAJRE9fQ09OU1RSQUlOVCwKIAlET19GS19DT05TVFJB SU5ULAkJCS8qIHNlZSBub3RlIGZvciBDb25zdHJhaW50SW5mbyAqLworCURPX1BFUklPRCwK IAlET19QUk9DTEFORywKIAlET19DQVNULAogCURPX1RBQkxFX0RBVEEsCkBAIC0yOTgsMTIg KzI5OSwxNCBAQCB0eXBlZGVmIHN0cnVjdCBfdGFibGVJbmZvCiAJYm9vbAkJcm93c2VjOwkJ CS8qIGlzIHJvdyBzZWN1cml0eSBlbmFibGVkPyAqLwogCWJvb2wJCWZvcmNlcm93c2VjOwkv KiBpcyByb3cgc2VjdXJpdHkgZm9yY2VkPyAqLwogCWJvb2wJCWhhc29pZHM7CQkvKiBkb2Vz IGl0IGhhdmUgT0lEcz8gKi8KKwlib29sCQloYXNwZXJpb2RzOwkJLyogZG9lcyBpdCBoYXZl IGFueSBwZXJpb2RzPyAqLwogCXVpbnQzMgkJZnJvemVueGlkOwkJLyogdGFibGUncyByZWxm cm96ZW54aWQgKi8KIAl1aW50MzIJCW1pbm14aWQ7CQkvKiB0YWJsZSdzIHJlbG1pbm14aWQg Ki8KIAlPaWQJCQl0b2FzdF9vaWQ7CQkvKiB0b2FzdCB0YWJsZSdzIE9JRCwgb3IgMCBpZiBu b25lICovCiAJdWludDMyCQl0b2FzdF9mcm96ZW54aWQ7CS8qIHRvYXN0IHRhYmxlJ3MgcmVs ZnJvemVueGlkLCBpZiBhbnkgKi8KIAl1aW50MzIJCXRvYXN0X21pbm14aWQ7CS8qIHRvYXN0 IHRhYmxlJ3MgcmVsbWlubXhpZCAqLwogCWludAkJCW5jaGVjazsJCQkvKiAjIG9mIENIRUNL IGV4cHJlc3Npb25zICovCisJaW50CQkJbnBlcmlvZDsJCS8qICMgb2YgUEVSSU9EIGRlZmlu aXRpb25zICovCiAJT2lkCQkJcmVsdHlwZTsJCS8qIE9JRCBvZiB0YWJsZSdzIGNvbXBvc2l0 ZSB0eXBlLCBpZiBhbnkgKi8KIAlPaWQJCQlyZWxvZnR5cGU7CQkvKiB1bmRlcmx5aW5nIHR5 cGUgZm9yIHR5cGVkIHRhYmxlICovCiAJT2lkCQkJZm9yZWlnbl9zZXJ2ZXI7IC8qIGZvcmVp Z24gc2VydmVyIG9pZCwgaWYgYXBwbGljYWJsZSAqLwpAQCAtMzQ4LDYgKzM1MSw3IEBAIHR5 cGVkZWYgc3RydWN0IF90YWJsZUluZm8KIAlib29sCSAgICppbmhOb3ROdWxsOwkJLyogdHJ1 ZSBpZiBOT1QgTlVMTCBpcyBpbmhlcml0ZWQgKi8KIAlzdHJ1Y3QgX2F0dHJEZWZJbmZvICoq YXR0cmRlZnM7IC8qIERFRkFVTFQgZXhwcmVzc2lvbnMgKi8KIAlzdHJ1Y3QgX2NvbnN0cmFp bnRJbmZvICpjaGVja2V4cHJzOyAvKiBDSEVDSyBjb25zdHJhaW50cyAqLworCXN0cnVjdCBf cGVyaW9kSW5mbyAqcGVyaW9kczsJLyogUEVSSU9EIGRlZmluaXRpb25zICovCiAJYm9vbAkJ bmVlZHNfb3ZlcnJpZGU7IC8qIGhhcyBHRU5FUkFURUQgQUxXQVlTIEFTIElERU5USVRZICov CiAJY2hhcgkgICAqYW1uYW1lOwkJCS8qIHJlbGF0aW9uIGFjY2VzcyBtZXRob2QgKi8KIApA QCAtNDg1LDYgKzQ4OSwxNiBAQCB0eXBlZGVmIHN0cnVjdCBfY29uc3RyYWludEluZm8KIAli b29sCQlzZXBhcmF0ZTsJCS8qIHRydWUgaWYgbXVzdCBkdW1wIGFzIHNlcGFyYXRlIGl0ZW0g Ki8KIH0gQ29uc3RyYWludEluZm87CiAKK3R5cGVkZWYgc3RydWN0IF9wZXJpb2RJbmZvCit7 CisJRHVtcGFibGVPYmplY3QgZG9iajsKKwlUYWJsZUluZm8gICpwZXJ0YWJsZTsKKwljaGFy CSAgICpwZXJzdGFydDsJCS8qIHRoZSBuYW1lIG9mIHRoZSBzdGFydCBjb2x1bW4gKi8KKwlj aGFyCSAgICpwZXJlbmQ7CQkJLyogdGhlIG5hbWUgb2YgdGhlIGVuZCBjb2x1bW4gKi8KKwlj aGFyCSAgICpybmd0eXBlOwkJLyogdGhlIG5hbWUgb2YgdGhlIHJhbmdlIHR5cGUgKi8KKwlj aGFyCSAgICpjb25uYW1lOwkJLyogdGhlIG5hbWUgb2YgdGhlIENIRUNLIGNvbnN0cmFpbnQg Ki8KK30gUGVyaW9kSW5mbzsKKwogdHlwZWRlZiBzdHJ1Y3QgX3Byb2NMYW5nSW5mbwogewog CUR1bXBhYmxlT2JqZWN0IGRvYmo7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdf ZHVtcF9zb3J0LmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcF9zb3J0LmMKaW5kZXggNzQ1 NTc4ZDg1NS4uMDNhMjczNDJhNSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1 bXBfc29ydC5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wX3NvcnQuYwpAQCAtODQs NiArODQsNyBAQCBlbnVtIGRiT2JqZWN0VHlwZVByaW9yaXRpZXMKIAlQUklPX0NPTlNUUkFJ TlQsCiAJUFJJT19JTkRFWCwKIAlQUklPX0lOREVYX0FUVEFDSCwKKwlQUklPX1BFUklPRCwK IAlQUklPX1NUQVRTRVhULAogCVBSSU9fUlVMRSwKIAlQUklPX1RSSUdHRVIsCkBAIC0xMTgs NiArMTE5LDcgQEAgc3RhdGljIGNvbnN0IGludCBkYk9iamVjdFR5cGVQcmlvcml0eVtdID0K IAlQUklPX0FUVFJERUYsCQkJCS8qIERPX0FUVFJERUYgKi8KIAlQUklPX0lOREVYLAkJCQkJ LyogRE9fSU5ERVggKi8KIAlQUklPX0lOREVYX0FUVEFDSCwJCQkvKiBET19JTkRFWF9BVFRB Q0ggKi8KKwlQUklPX1BFUklPRCwJCQkJLyogRE9fUEVSSU9EICovCiAJUFJJT19TVEFUU0VY VCwJCQkJLyogRE9fU1RBVFNFWFQgKi8KIAlQUklPX1JVTEUsCQkJCQkvKiBET19SVUxFICov CiAJUFJJT19UUklHR0VSLAkJCQkvKiBET19UUklHR0VSICovCkBAIC0xMzk0LDYgKzEzOTYs MTEgQEAgZGVzY3JpYmVEdW1wYWJsZU9iamVjdChEdW1wYWJsZU9iamVjdCAqb2JqLCBjaGFy ICpidWYsIGludCBidWZzaXplKQogCQkJCQkgIkZLIENPTlNUUkFJTlQgJXMgIChJRCAlZCBP SUQgJXUpIiwKIAkJCQkJIG9iai0+bmFtZSwgb2JqLT5kdW1wSWQsIG9iai0+Y2F0SWQub2lk KTsKIAkJCXJldHVybjsKKwkJY2FzZSBET19QRVJJT0Q6CisJCQlzbnByaW50ZihidWYsIGJ1 ZnNpemUsCisJCQkJCSAiUEVSSU9EICVzICAoSUQgJWQgT0lEICV1KSIsCisJCQkJCSBvYmot Pm5hbWUsIG9iai0+ZHVtcElkLCBvYmotPmNhdElkLm9pZCk7CisJCQlyZXR1cm47CiAJCWNh c2UgRE9fUFJPQ0xBTkc6CiAJCQlzbnByaW50ZihidWYsIGJ1ZnNpemUsCiAJCQkJCSAiUFJP Q0VEVVJBTCBMQU5HVUFHRSAlcyAgKElEICVkIE9JRCAldSkiLApkaWZmIC0tZ2l0IGEvc3Jj L2Jpbi9wc3FsL2Rlc2NyaWJlLmMgYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYwppbmRleCAw NThlNDFlNzQ5Li5jYjFkYjVjODRmIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvZGVzY3Jp YmUuYworKysgYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYwpAQCAtMjM3MCw2ICsyMzcwLDQw IEBAIGRlc2NyaWJlT25lVGFibGVEZXRhaWxzKGNvbnN0IGNoYXIgKnNjaGVtYW5hbWUsCiAJ CVBHcmVzdWx0ICAgKnJlc3VsdCA9IE5VTEw7CiAJCWludAkJCXR1cGxlcyA9IDA7CiAKKwkJ LyogcHJpbnQgcGVyaW9kcyAqLworCQlpZiAocHNldC5zdmVyc2lvbiA+PSAxNTAwMDApCisJ CXsKKwkJCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsCisJCQkJCQkJICAiU0VMRUNUIHF1b3Rl X2lkZW50KHAucGVybmFtZSksIHF1b3RlX2lkZW50KHMuYXR0bmFtZSkgQVMgc3RhcnRhdHQs IHF1b3RlX2lkZW50KGUuYXR0bmFtZSkgQVMgZW5kYXR0XG4iCisJCQkJCQkJICAiRlJPTSBw Z19wZXJpb2QgQVMgcFxuIgorCQkJCQkJCSAgIkpPSU4gcGdfYXR0cmlidXRlIEFTIHMgT04g KHMuYXR0cmVsaWQsIHMuYXR0bnVtKSA9IChwLnBlcnJlbGlkLCBwLnBlcnN0YXJ0KVxuIgor CQkJCQkJCSAgIkpPSU4gcGdfYXR0cmlidXRlIEFTIGUgT04gKGUuYXR0cmVsaWQsIGUuYXR0 bnVtKSA9IChwLnBlcnJlbGlkLCBwLnBlcmVuZClcbiIKKwkJCQkJCQkgICJXSEVSRSBwLnBl cnJlbGlkID0gJyVzJ1xuIgorCQkJCQkJCSAgIk9SREVSIEJZIDE7IiwKKwkJCQkJCQkgIG9p ZCk7CisJCQlyZXN1bHQgPSBQU1FMZXhlYyhidWYuZGF0YSk7CisJCQlpZiAoIXJlc3VsdCkK KwkJCQlnb3RvIGVycm9yX3JldHVybjsKKwkJCWVsc2UKKwkJCQl0dXBsZXMgPSBQUW50dXBs ZXMocmVzdWx0KTsKKworCQkJaWYgKHR1cGxlcyA+IDApCisJCQl7CisJCQkJcHJpbnRUYWJs ZUFkZEZvb3RlcigmY29udCwgXygiUGVyaW9kczoiKSk7CisJCQkJZm9yIChpID0gMDsgaSA8 IHR1cGxlczsgaSsrKQorCQkJCXsKKwkJCQkJLyogdW50cmFuc2xhdGVkIGNvbnN0cmFpbnQg bmFtZSBhbmQgZGVmICovCisJCQkJCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsICIgICAgJXMg KCVzLCAlcykiLAorCQkJCQkJCQkJICBQUWdldHZhbHVlKHJlc3VsdCwgaSwgMCksCisJCQkJ CQkJCQkgIFBRZ2V0dmFsdWUocmVzdWx0LCBpLCAxKSwKKwkJCQkJCQkJCSAgUFFnZXR2YWx1 ZShyZXN1bHQsIGksIDIpKTsKKworCQkJCQlwcmludFRhYmxlQWRkRm9vdGVyKCZjb250LCBi dWYuZGF0YSk7CisJCQkJfQorCQkJfQorCQkJUFFjbGVhcihyZXN1bHQpOworCQl9CisKIAkJ LyogcHJpbnQgaW5kZXhlcyAqLwogCQlpZiAodGFibGVpbmZvLmhhc2luZGV4KQogCQl7CmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL2RlcGVuZGVuY3kuaCBiL3NyYy9pbmNs dWRlL2NhdGFsb2cvZGVwZW5kZW5jeS5oCmluZGV4IGZmZDVlOWRjODIuLjhmMDNiZjNkZTEg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvZGVwZW5kZW5jeS5oCisrKyBiL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvZGVwZW5kZW5jeS5oCkBAIC05Myw2ICs5Myw3IEBAIHR5cGVk ZWYgZW51bSBPYmplY3RDbGFzcwogCU9DTEFTU19DQVNULAkJCQkvKiBwZ19jYXN0ICovCiAJ T0NMQVNTX0NPTExBVElPTiwJCQkvKiBwZ19jb2xsYXRpb24gKi8KIAlPQ0xBU1NfQ09OU1RS QUlOVCwJCQkvKiBwZ19jb25zdHJhaW50ICovCisJT0NMQVNTX1BFUklPRCwJCQkJLyogcGdf cGVyaW9kICovCiAJT0NMQVNTX0NPTlZFUlNJT04sCQkJLyogcGdfY29udmVyc2lvbiAqLwog CU9DTEFTU19ERUZBVUxULAkJCQkvKiBwZ19hdHRyZGVmICovCiAJT0NMQVNTX0xBTkdVQUdF LAkJCS8qIHBnX2xhbmd1YWdlICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9n L2hlYXAuaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvaGVhcC5oCmluZGV4IGQwMWFiNTA0YjYu LmY0ZDAyMjY5MTAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvaGVhcC5oCisr KyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvaGVhcC5oCkBAIC0xMTcsNiArMTE3LDEwIEBAIGV4 dGVybiBMaXN0ICpBZGRSZWxhdGlvbk5ld0NvbnN0cmFpbnRzKFJlbGF0aW9uIHJlbCwKIGV4 dGVybiB2b2lkIFJlbGF0aW9uQ2xlYXJNaXNzaW5nKFJlbGF0aW9uIHJlbCk7CiBleHRlcm4g dm9pZCBTZXRBdHRyTWlzc2luZyhPaWQgcmVsaWQsIGNoYXIgKmF0dG5hbWUsIGNoYXIgKnZh bHVlKTsKIAorZXh0ZXJuIE9pZCBTdG9yZVBlcmlvZChSZWxhdGlvbiByZWwsIGNvbnN0IGNo YXIgKnBlcmlvZCwKKwkJCQkJICAgQXR0ck51bWJlciBzdGFydG51bSwgQXR0ck51bWJlciBl bmRudW0sCisJCQkJCSAgIE9pZCBybmd0eXBpZCwgT2lkIGNvbm9pZCk7CisKIGV4dGVybiBO b2RlICpjb29rRGVmYXVsdChQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkgTm9kZSAqcmF3 X2RlZmF1bHQsCiAJCQkJCQkgT2lkIGF0dHR5cGlkLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19pbmRleC5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19pbmRleC5o CmluZGV4IGIwNTkyNTcxZGEuLjZhZjY3N2Q4MTQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L2NhdGFsb2cvcGdfaW5kZXguaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2luZGV4 LmgKQEAgLTQ0LDExICs0NCwxMSBAQCBDQVRBTE9HKHBnX2luZGV4LDI2MTAsSW5kZXhSZWxh dGlvbklkKSBCS0lfU0NIRU1BX01BQ1JPCiAJYm9vbAkJaW5kaXNyZWFkeTsJCS8qIGlzIHRo aXMgaW5kZXggcmVhZHkgZm9yIGluc2VydHM/ICovCiAJYm9vbAkJaW5kaXNsaXZlOwkJLyog aXMgdGhpcyBpbmRleCBhbGl2ZSBhdCBhbGw/ICovCiAJYm9vbAkJaW5kaXNyZXBsaWRlbnQ7 IC8qIGlzIHRoaXMgaW5kZXggdGhlIGlkZW50aXR5IGZvciByZXBsaWNhdGlvbj8gKi8KKwlP aWQJCQlpbmRwZXJpb2Q7CQkvKiB0aGUgcGVyaW9kIGl0IGNvbnRhaW5zLCBpZiBhbnkgKi8K IAogCS8qIHZhcmlhYmxlLWxlbmd0aCBmaWVsZHMgc3RhcnQgaGVyZSwgYnV0IHdlIGFsbG93 IGRpcmVjdCBhY2Nlc3MgdG8gaW5ka2V5ICovCiAJaW50MnZlY3RvcglpbmRrZXkgQktJX0ZP UkNFX05PVF9OVUxMOwkvKiBjb2x1bW4gbnVtYmVycyBvZiBpbmRleGVkIGNvbHMsCiAJCQkJ CQkJCQkJCSAqIG9yIDAgKi8KLQogI2lmZGVmIENBVEFMT0dfVkFSTEVOCiAJb2lkdmVjdG9y CWluZGNvbGxhdGlvbiBCS0lfTE9PS1VQX09QVChwZ19jb2xsYXRpb24pIEJLSV9GT1JDRV9O T1RfTlVMTDsJLyogY29sbGF0aW9uIGlkZW50aWZpZXJzICovCiAJb2lkdmVjdG9yCWluZGNs YXNzIEJLSV9MT09LVVAocGdfb3BjbGFzcykgQktJX0ZPUkNFX05PVF9OVUxMOyAvKiBvcGNs YXNzIGlkZW50aWZpZXJzICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X3BlcmlvZC5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wZXJpb2QuaApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi45YjYxNTE5YWZjCi0tLSAvZGV2L251bGwK KysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wZXJpb2QuaApAQCAtMCwwICsxLDUzIEBA CisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBwZ19wZXJpb2QuaAorICoJICBkZWZp bml0aW9uIG9mIHRoZSAicGVyaW9kIiBzeXN0ZW0gY2F0YWxvZyAocGdfcGVyaW9kKQorICoK KyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAyMSwgUG9zdGdyZVNRTCBH bG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqCisgKiBzcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X3BlcmlvZC5oCisgKgorICogTk9URVMKKyAqCSAgVGhlIENhdGFsb2cucG0gbW9kdWxlIHJl YWRzIHRoaXMgZmlsZSBhbmQgZGVyaXZlcyBzY2hlbWEKKyAqCSAgaW5mb3JtYXRpb24uCisg KgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKyNpZm5kZWYgUEdfUEVSSU9EX0gKKyNk ZWZpbmUgUEdfUEVSSU9EX0gKKworI2luY2x1ZGUgImNhdGFsb2cvZ2VuYmtpLmgiCisjaW5j bHVkZSAiY2F0YWxvZy9wZ19wZXJpb2RfZC5oIgorCisvKiAtLS0tLS0tLS0tLS0tLS0tCisg KgkJcGdfcGVyaW9kIGRlZmluaXRpb24uICBjcHAgdHVybnMgdGhpcyBpbnRvCisgKgkJdHlw ZWRlZiBzdHJ1Y3QgRm9ybURhdGFfcGdfcGVyaW9kCisgKiAtLS0tLS0tLS0tLS0tLS0tCisg Ki8KK0NBVEFMT0cocGdfcGVyaW9kLDgwMDAsUGVyaW9kUmVsYXRpb25JZCkKK3sKKwlPaWQJ CQlvaWQ7CQkJLyogT0lEIG9mIHRoZSBwZXJpb2QgKi8KKwlOYW1lRGF0YQlwZXJuYW1lOwkJ LyogbmFtZSBvZiBwZXJpb2QgKi8KKwlPaWQJCQlwZXJyZWxpZDsJCS8qIE9JRCBvZiByZWxh dGlvbiBjb250YWluaW5nIHRoaXMgcGVyaW9kICovCisJaW50MTYJCXBlcnN0YXJ0OwkJLyog Y29sdW1uIGZvciBzdGFydCB2YWx1ZSAqLworCWludDE2CQlwZXJlbmQ7CQkJLyogY29sdW1u IGZvciBlbmQgdmFsdWUgKi8KKwlPaWQJCQlwZXJybmd0eXBlOwkJLyogT0lEIG9mIHRoZSBy YW5nZSB0eXBlIGZvciB0aGlzIHBlcmlvZCAqLworCU9pZAkJCXBlcmNvbnN0cmFpbnQ7CS8q IE9JRCBvZiAoc3RhcnQgPCBlbmQpIGNvbnN0cmFpbnQgKi8KK30gRm9ybURhdGFfcGdfcGVy aW9kOworCisvKiAtLS0tLS0tLS0tLS0tLS0tCisgKgkJRm9ybV9wZ19wZXJpb2QgY29ycmVz cG9uZHMgdG8gYSBwb2ludGVyIHRvIGEgdHVwbGUgd2l0aAorICoJCXRoZSBmb3JtYXQgb2Yg cGdfcGVyaW9kIHJlbGF0aW9uLgorICogLS0tLS0tLS0tLS0tLS0tLQorICovCit0eXBlZGVm IEZvcm1EYXRhX3BnX3BlcmlvZCAqRm9ybV9wZ19wZXJpb2Q7CisKK0RFQ0xBUkVfVU5JUVVF X0lOREVYX1BLRVkocGdfcGVyaW9kX29pZF9pbmRleCwgODAwMSwgUGVyaW9kT2JqZWN0SW5k ZXhJZCwgb24gcGdfcGVyaW9kIHVzaW5nIGJ0cmVlKG9pZCBvaWRfb3BzKSk7CitERUNMQVJF X1VOSVFVRV9JTkRFWChwZ19wZXJpb2RfcGVycmVsaWRfcGVybmFtZV9pbmRleCwgODAwMiwg UGVyaW9kUmVsaWROYW1lSW5kZXhJZCwgb24gcGdfcGVyaW9kIHVzaW5nIGJ0cmVlKHBlcnJl bGlkIG9pZF9vcHMsIHBlcm5hbWUgbmFtZV9vcHMpKTsKKworZXh0ZXJuIHZvaWQgUmVtb3Zl UGVyaW9kQnlJZChPaWQgcGVyaW9kSWQpOworCitleHRlcm4gT2lkIGdldF9yZWxhdGlvbl9w ZXJpb2Rfb2lkKE9pZCByZWxpZCwgY29uc3QgY2hhciAqcGVybmFtZSwgYm9vbCBtaXNzaW5n X29rKTsKKworI2VuZGlmCQkJCQkJCS8qIFBHX1BFUklPRF9IICovCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9jYXRhbG9nL3BnX3JhbmdlLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X3JhbmdlLmgKaW5kZXggZDAzZWYxODg1MS4uZjMwMzEwNzBmNyAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19yYW5nZS5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cv cGdfcmFuZ2UuaApAQCAtNTksNiArNTksNyBAQCB0eXBlZGVmIEZvcm1EYXRhX3BnX3Jhbmdl ICpGb3JtX3BnX3JhbmdlOwogCiBERUNMQVJFX1VOSVFVRV9JTkRFWF9QS0VZKHBnX3Jhbmdl X3JuZ3R5cGlkX2luZGV4LCAzNTQyLCBSYW5nZVR5cGlkSW5kZXhJZCwgb24gcGdfcmFuZ2Ug dXNpbmcgYnRyZWUocm5ndHlwaWQgb2lkX29wcykpOwogREVDTEFSRV9VTklRVUVfSU5ERVgo cGdfcmFuZ2Vfcm5nbXVsdGl0eXBpZF9pbmRleCwgMjIyOCwgUmFuZ2VNdWx0aXJhbmdlVHlw aWRJbmRleElkLCBvbiBwZ19yYW5nZSB1c2luZyBidHJlZShybmdtdWx0aXR5cGlkIG9pZF9v cHMpKTsKK0RFQ0xBUkVfVU5JUVVFX0lOREVYKHBnX3JhbmdlX3JuZ3N1YnR5cGVfcm5ndHlw aWRfaW5kZXgsIDgwMDMsIFJhbmdlU3ViVHlwaWRUeXBpZEluZGV4SWQsIG9uIHBnX3Jhbmdl IHVzaW5nIGJ0cmVlKHJuZ3N1YnR5cGUgb2lkX29wcywgcm5ndHlwaWQgb2lkX29wcykpOwog CiAvKgogICogcHJvdG90eXBlcyBmb3IgZnVuY3Rpb25zIGluIHBnX3JhbmdlLmMKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3RhYmxlY21kcy5oIGIvc3JjL2luY2x1ZGUv Y29tbWFuZHMvdGFibGVjbWRzLmgKaW5kZXggMTdiOTQwNDkzNy4uOTA4MzhhNWQ2NiAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvdGFibGVjbWRzLmgKKysrIGIvc3JjL2lu Y2x1ZGUvY29tbWFuZHMvdGFibGVjbWRzLmgKQEAgLTM4LDcgKzM4LDggQEAgZXh0ZXJuIExP Q0tNT0RFIEFsdGVyVGFibGVHZXRMb2NrTGV2ZWwoTGlzdCAqY21kcyk7CiAKIGV4dGVybiB2 b2lkIEFURXhlY0NoYW5nZU93bmVyKE9pZCByZWxhdGlvbk9pZCwgT2lkIG5ld093bmVySWQs IGJvb2wgcmVjdXJzaW5nLCBMT0NLTU9ERSBsb2NrbW9kZSk7CiAKLWV4dGVybiB2b2lkIEFs dGVyVGFibGVJbnRlcm5hbChPaWQgcmVsaWQsIExpc3QgKmNtZHMsIGJvb2wgcmVjdXJzZSk7 CitleHRlcm4gdm9pZCBBbHRlclRhYmxlSW50ZXJuYWwoT2lkIHJlbGlkLCBMaXN0ICpjbWRz LCBib29sIHJlY3Vyc2UsCisJCQkJCQkJICAgc3RydWN0IEFsdGVyVGFibGVVdGlsaXR5Q29u dGV4dCAqY29udGV4dCk7CiAKIGV4dGVybiBPaWQJQWx0ZXJUYWJsZU1vdmVBbGwoQWx0ZXJU YWJsZU1vdmVBbGxTdG10ICpzdG10KTsKIApAQCAtMTA1LDUgKzEwNiw2IEBAIGV4dGVybiB2 b2lkIFJhbmdlVmFyQ2FsbGJhY2tPd25zUmVsYXRpb24oY29uc3QgUmFuZ2VWYXIgKnJlbGF0 aW9uLAogCQkJCQkJCQkJCSBPaWQgcmVsSWQsIE9pZCBvbGRSZWxJZCwgdm9pZCAqYXJnKTsK IGV4dGVybiBib29sIFBhcnRDb25zdHJhaW50SW1wbGllZEJ5UmVsQ29uc3RyYWludChSZWxh dGlvbiBzY2FucmVsLAogCQkJCQkJCQkJCQkJIExpc3QgKnBhcnRDb25zdHJhaW50KTsKK2V4 dGVybiBPaWQgY2hvb3NlX3JhbmdldHlwZV9mb3JfcGVyaW9kKFBlcmlvZERlZiAqcGVyaW9k LCBPaWQgY29sdHlwaWQpOwogCiAjZW5kaWYJCQkJCQkJLyogVEFCTEVDTURTX0ggKi8KZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCBiL3NyYy9pbmNsdWRl L25vZGVzL3BhcnNlbm9kZXMuaAppbmRleCBjYzdiMzJiMjc5Li4zYjUyM2FmMThlIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIvc3JjL2luY2x1 ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCkBAIC0yMTA3LDYgKzIxMDcsNyBAQCB0eXBlZGVmIGVu dW0gT2JqZWN0VHlwZQogCU9CSkVDVF9PUEVSQVRPUiwKIAlPQkpFQ1RfT1BGQU1JTFksCiAJ T0JKRUNUX1BBUkFNRVRFUl9BQ0wsCisJT0JKRUNUX1BFUklPRCwKIAlPQkpFQ1RfUE9MSUNZ LAogCU9CSkVDVF9QUk9DRURVUkUsCiAJT0JKRUNUX1BVQkxJQ0FUSU9OLApAQCAtMjE5NCw2 ICsyMTk1LDggQEAgdHlwZWRlZiBlbnVtIEFsdGVyVGFibGVUeXBlCiAJQVRfVmFsaWRhdGVD b25zdHJhaW50LAkJLyogdmFsaWRhdGUgY29uc3RyYWludCAqLwogCUFUX0FkZEluZGV4Q29u c3RyYWludCwJCS8qIGFkZCBjb25zdHJhaW50IHVzaW5nIGV4aXN0aW5nIGluZGV4ICovCiAJ QVRfRHJvcENvbnN0cmFpbnQsCQkJLyogZHJvcCBjb25zdHJhaW50ICovCisJQVRfQWRkUGVy aW9kLAkJCQkvKiBBREQgUEVSSU9EICovCisJQVRfRHJvcFBlcmlvZCwJCQkJLyogRFJPUCBQ RVJJT0QgKi8KIAlBVF9SZUFkZENvbW1lbnQsCQkJLyogaW50ZXJuYWwgdG8gY29tbWFuZHMv dGFibGVjbWRzLmMgKi8KIAlBVF9BbHRlckNvbHVtblR5cGUsCQkJLyogYWx0ZXIgY29sdW1u IHR5cGUgKi8KIAlBVF9BbHRlckNvbHVtbkdlbmVyaWNPcHRpb25zLAkvKiBhbHRlciBjb2x1 bW4gT1BUSU9OUyAoLi4uKSAqLwpAQCAtMjQ2MSw5ICsyNDY0LDkgQEAgdHlwZWRlZiBzdHJ1 Y3QgVmFyaWFibGVTaG93U3RtdAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoJCUNy ZWF0ZSBUYWJsZSBTdGF0ZW1lbnQKICAqCi0gKiBOT1RFOiBpbiB0aGUgcmF3IGdyYW0ueSBv dXRwdXQsIENvbHVtbkRlZiBhbmQgQ29uc3RyYWludCBub2RlcyBhcmUKLSAqIGludGVybWl4 ZWQgaW4gdGFibGVFbHRzLCBhbmQgY29uc3RyYWludHMgaXMgTklMLiAgQWZ0ZXIgcGFyc2Ug YW5hbHlzaXMsCi0gKiB0YWJsZUVsdHMgY29udGFpbnMganVzdCBDb2x1bW5EZWZzLCBhbmQg Y29uc3RyYWludHMgY29udGFpbnMganVzdAorICogTk9URTogaW4gdGhlIHJhdyBncmFtLnkg b3V0cHV0LCBDb2x1bW5EZWYsIFBlcmlvZERlZiwgYW5kIENvbnN0cmFpbnQgbm9kZXMgYXJl CisgKiBpbnRlcm1peGVkIGluIHRhYmxlRWx0czsgcGVyaW9kcyBhbmQgY29uc3RyYWludHMg YXJlIE5JTC4gIEFmdGVyIHBhcnNlIGFuYWx5c2lzLAorICogdGFibGVFbHRzIGNvbnRhaW5z IGp1c3QgQ29sdW1uRGVmcywgcGVyaW9kcyBjb250YWlucyBqdXN0IFBlcmlvZERlZiBub2Rl cywgYW5kIGNvbnN0cmFpbnRzIGNvbnRhaW5zIGp1c3QKICAqIENvbnN0cmFpbnQgbm9kZXMg KGluIGZhY3QsIG9ubHkgQ09OU1RSX0NIRUNLIG5vZGVzLCBpbiB0aGUgcHJlc2VudAogICog aW1wbGVtZW50YXRpb24pLgogICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMjQ3NCw2 ICsyNDc3LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQ3JlYXRlU3RtdAogCU5vZGVUYWcJCXR5cGU7 CiAJUmFuZ2VWYXIgICAqcmVsYXRpb247CQkvKiByZWxhdGlvbiB0byBjcmVhdGUgKi8KIAlM aXN0CSAgICp0YWJsZUVsdHM7CQkvKiBjb2x1bW4gZGVmaW5pdGlvbnMgKGxpc3Qgb2YgQ29s dW1uRGVmKSAqLworCUxpc3QJICAgKnBlcmlvZHM7CQkvKiBwZXJpb2RzIChsaXN0IG9mIFBl cmlvZERlZiBub2RlcykgKi8KIAlMaXN0CSAgICppbmhSZWxhdGlvbnM7CS8qIHJlbGF0aW9u cyB0byBpbmhlcml0IGZyb20gKGxpc3Qgb2YKIAkJCQkJCQkJICogUmFuZ2VWYXIpICovCiAJ UGFydGl0aW9uQm91bmRTcGVjICpwYXJ0Ym91bmQ7CS8qIEZPUiBWQUxVRVMgY2xhdXNlICov CkBAIC0yNDg3LDYgKzI0OTEsMjYgQEAgdHlwZWRlZiBzdHJ1Y3QgQ3JlYXRlU3RtdAogCWJv b2wJCWlmX25vdF9leGlzdHM7CS8qIGp1c3QgZG8gbm90aGluZyBpZiBpdCBhbHJlYWR5IGV4 aXN0cz8gKi8KIH0gQ3JlYXRlU3RtdDsKIAorCisvKiAtLS0tLS0tLS0tCisgKiBEZWZpbml0 aW9ucyBmb3IgcGVyaW9kcyBpbiBDcmVhdGVTdG10CisgKiAtLS0tLS0tLS0tCisgKi8KKwor dHlwZWRlZiBzdHJ1Y3QgUGVyaW9kRGVmCit7CisJTm9kZVRhZwkJdHlwZTsKKwlPaWQJCQlv aWQ7CQkJLyogcGVyaW9kIG9pZCwgb25jZSBpdCdzIHRyYW5zZm9ybWVkICovCisJY2hhcgkg ICAqcGVyaW9kbmFtZTsJCS8qIHBlcmlvZCBuYW1lICovCisJY2hhcgkgICAqc3RhcnRjb2xu YW1lOwkvKiBuYW1lIG9mIHN0YXJ0IGNvbHVtbiAqLworCWNoYXIJICAgKmVuZGNvbG5hbWU7 CQkvKiBuYW1lIG9mIGVuZCBjb2x1bW4gKi8KKwlMaXN0CSAgICpvcHRpb25zOwkJLyogb3B0 aW9ucyBmcm9tIFdJVEggY2xhdXNlICovCisJY2hhcgkgICAqY29uc3RyYWludG5hbWU7CS8q IG5hbWUgb2YgdGhlIENIRUNLIGNvbnN0cmFpbnQgKi8KKwljaGFyCSAgICpyYW5nZXR5cGVu YW1lOwkvKiBuYW1lIG9mIHRoZSByYW5nZSB0eXBlICovCisJT2lkCQkJcm5ndHlwaWQ7CQkv KiB0aGUgcmFuZ2UgdHlwZSB0byB1c2UgKi8KKwlpbnQJCQlsb2NhdGlvbjsJCS8qIHRva2Vu IGxvY2F0aW9uLCBvciAtMSBpZiB1bmtub3duICovCit9IFBlcmlvZERlZjsKKwogLyogLS0t LS0tLS0tLQogICogRGVmaW5pdGlvbnMgZm9yIGNvbnN0cmFpbnRzIGluIENyZWF0ZVN0bXQK ICAqCkBAIC0zMTg4LDYgKzMyMTIsNyBAQCB0eXBlZGVmIHN0cnVjdCBJbmRleFN0bXQKIAlM aXN0CSAgICppbmRleFBhcmFtczsJLyogY29sdW1ucyB0byBpbmRleDogYSBsaXN0IG9mIElu ZGV4RWxlbSAqLwogCUxpc3QJICAgKmluZGV4SW5jbHVkaW5nUGFyYW1zOwkvKiBhZGRpdGlv bmFsIGNvbHVtbnMgdG8gaW5kZXg6IGEgbGlzdAogCQkJCQkJCQkJCSAqIG9mIEluZGV4RWxl bSAqLworCVBlcmlvZERlZiAgKnBlcmlvZDsJCQkvKiBUaGUgcGVyaW9kIGluY2x1ZGVkIGlu IHRoZSBpbmRleCAqLwogCUxpc3QJICAgKm9wdGlvbnM7CQkvKiBXSVRIIGNsYXVzZSBvcHRp b25zOiBhIGxpc3Qgb2YgRGVmRWxlbSAqLwogCU5vZGUJICAgKndoZXJlQ2xhdXNlOwkvKiBx dWFsaWZpY2F0aW9uIChwYXJ0aWFsLWluZGV4IHByZWRpY2F0ZSkgKi8KIAlMaXN0CSAgICpl eGNsdWRlT3BOYW1lczsgLyogZXhjbHVzaW9uIG9wZXJhdG9yIG5hbWVzLCBvciBOSUwgaWYg bm9uZSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oIGIvc3Jj L2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCmluZGV4IGY1YjJlNjFjYTUuLjE5OWNkNzQ3Mzgg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaAorKysgYi9zcmMvaW5j bHVkZS9wYXJzZXIva3dsaXN0LmgKQEAgLTMyNCw2ICszMjQsNyBAQCBQR19LRVlXT1JEKCJw YXJ0aWFsIiwgUEFSVElBTCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdf S0VZV09SRCgicGFydGl0aW9uIiwgUEFSVElUSU9OLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJB UkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwYXNzaW5nIiwgUEFTU0lORywgVU5SRVNFUlZFRF9L RVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgicGFzc3dvcmQiLCBQQVNTV09SRCwg VU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQorUEdfS0VZV09SRCgicGVyaW9kIiwg UEVSSU9ELCBSRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgicGxh Y2luZyIsIFBMQUNJTkcsIFJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlX T1JEKCJwbGFucyIsIFBMQU5TLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQ R19LRVlXT1JEKCJwb2xpY3kiLCBQT0xJQ1ksIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9M QUJFTCkKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV91dGlsY21kLmgg Yi9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfdXRpbGNtZC5oCmluZGV4IDJiNDBhMGI1YjEu LmZlYjZjMjYwMDcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV91dGls Y21kLmgKKysrIGIvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX3V0aWxjbWQuaApAQCAtNDAs NSArNDAsNiBAQCBleHRlcm4gSW5kZXhTdG10ICpnZW5lcmF0ZUNsb25lZEluZGV4U3RtdChS YW5nZVZhciAqaGVhcFJlbCwKIAkJCQkJCQkJCQkgIFJlbGF0aW9uIHNvdXJjZV9pZHgsCiAJ CQkJCQkJCQkJICBjb25zdCBzdHJ1Y3QgQXR0ck1hcCAqYXR0bWFwLAogCQkJCQkJCQkJCSAg T2lkICpjb25zdHJhaW50T2lkKTsKK2V4dGVybiB2b2lkIHRyYW5zZm9ybVBlcmlvZE9wdGlv bnMoUGVyaW9kRGVmICpwZXJpb2QpOwogCiAjZW5kaWYJCQkJCQkJLyogUEFSU0VfVVRJTENN RF9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaCBiL3Ny Yy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5oCmluZGV4IDRmNTQxOGI5NzIuLjg4YzVjMzE0 ZGIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5oCisrKyBiL3Ny Yy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5oCkBAIC05Niw2ICs5Niw4IEBAIGV4dGVybiBP aWQJZ2V0X2F0dHR5cGUoT2lkIHJlbGlkLCBBdHRyTnVtYmVyIGF0dG51bSk7CiBleHRlcm4g dm9pZCBnZXRfYXR0dHlwZXR5cG1vZGNvbGwoT2lkIHJlbGlkLCBBdHRyTnVtYmVyIGF0dG51 bSwKIAkJCQkJCQkJICBPaWQgKnR5cGlkLCBpbnQzMiAqdHlwbW9kLCBPaWQgKmNvbGxpZCk7 CiBleHRlcm4gRGF0dW0gZ2V0X2F0dG9wdGlvbnMoT2lkIHJlbGlkLCBpbnQxNiBhdHRudW0p OworZXh0ZXJuIGNoYXIgKmdldF9wZXJpb2RuYW1lKE9pZCBwZXJpb2RpZCwgYm9vbCBtaXNz aW5nX29rKTsKK2V4dGVybiBPaWQJZ2V0X3BlcmlvZF9vaWQoT2lkIHJlbGlkLCBjb25zdCBj aGFyICpwZXJpb2RuYW1lLCBib29sIG1pc3Npbmdfb2spOwogZXh0ZXJuIE9pZAlnZXRfY2Fz dF9vaWQoT2lkIHNvdXJjZXR5cGVpZCwgT2lkIHRhcmdldHR5cGVpZCwgYm9vbCBtaXNzaW5n X29rKTsKIGV4dGVybiBjaGFyICpnZXRfY29sbGF0aW9uX25hbWUoT2lkIGNvbGxvaWQpOwog ZXh0ZXJuIGJvb2wgZ2V0X2NvbGxhdGlvbl9pc2RldGVybWluaXN0aWMoT2lkIGNvbGxvaWQp OwpAQCAtMTk0LDYgKzE5Niw3IEBAIGV4dGVybiBPaWQJZ2V0X3JhbmdlX3N1YnR5cGUoT2lk IHJhbmdlT2lkKTsKIGV4dGVybiBPaWQJZ2V0X3JhbmdlX2NvbGxhdGlvbihPaWQgcmFuZ2VP aWQpOwogZXh0ZXJuIE9pZAlnZXRfcmFuZ2VfbXVsdGlyYW5nZShPaWQgcmFuZ2VPaWQpOwog ZXh0ZXJuIE9pZAlnZXRfbXVsdGlyYW5nZV9yYW5nZShPaWQgbXVsdGlyYW5nZU9pZCk7Citl eHRlcm4gT2lkCWdldF9zdWJ0eXBlX3JhbmdlKE9pZCBzdWJ0eXBlT2lkKTsKIGV4dGVybiBP aWQJZ2V0X2luZGV4X2NvbHVtbl9vcGNsYXNzKE9pZCBpbmRleF9vaWQsIGludCBhdHRubyk7 CiBleHRlcm4gYm9vbCBnZXRfaW5kZXhfaXNyZXBsaWRlbnQoT2lkIGluZGV4X29pZCk7CiBl eHRlcm4gYm9vbCBnZXRfaW5kZXhfaXN2YWxpZChPaWQgaW5kZXhfb2lkKTsKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL3V0aWxzL3N5c2NhY2hlLmggYi9zcmMvaW5jbHVkZS91dGlscy9z eXNjYWNoZS5oCmluZGV4IDY3ZWE2ZTQ5NDUuLjMzYmFiNDA2MWEgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL3V0aWxzL3N5c2NhY2hlLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvc3lz Y2FjaGUuaApAQCAtNzUsNiArNzUsOCBAQCBlbnVtIFN5c0NhY2hlSWRlbnRpZmllcgogCVBB UkFNRVRFUkFDTE5BTUUsCiAJUEFSQU1FVEVSQUNMT0lELAogCVBBUlRSRUxJRCwKKwlQRVJJ T0ROQU1FLAorCVBFUklPRE9JRCwKIAlQUk9DTkFNRUFSR1NOU1AsCiAJUFJPQ09JRCwKIAlQ VUJMSUNBVElPTk5BTUUsCkBAIC04NCw2ICs4Niw3IEBAIGVudW0gU3lzQ2FjaGVJZGVudGlm aWVyCiAJUFVCTElDQVRJT05SRUwsCiAJUFVCTElDQVRJT05SRUxNQVAsCiAJUkFOR0VNVUxU SVJBTkdFLAorCVJBTkdFU1VCVFlQRSwKIAlSQU5HRVRZUEUsCiAJUkVMTkFNRU5TUCwKIAlS RUxPSUQsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BlcmlvZHMu b3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wZXJpb2RzLm91dApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4yNjczYzBmMTdjCi0tLSAvZGV2L251bGwK KysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wZXJpb2RzLm91dApAQCAtMCwwICsx LDE0OSBAQAorLyogU3lzdGVtIHBlcmlvZHMgYXJlIG5vdCBpbXBsZW1lbnRlZCAqLworY3Jl YXRlIHRhYmxlIHB0IChpZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9y IHN5c3RlbV90aW1lIChkcywgZGUpKTsKK0VSUk9SOiAgUEVSSU9EIEZPUiBTWVNURU1fVElN RSBpcyBub3Qgc3VwcG9ydGVkCitMSU5FIDI6IGNyZWF0ZSB0YWJsZSBwdCAoaWQgaW50ZWdl ciwgZHMgZGF0ZSwgZGUgZGF0ZSwgcGVyaW9kIGZvciBzeS4uLgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy8qIFBlcmlvZHMg bXVzdCBzcGVjaWZ5IGFjdHVhbCBjb2x1bW5zICovCitjcmVhdGUgdGFibGUgcHQgKGlkIGlu dGVnZXIsIGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgcCAoYm9ndXMsIGRlKSk7CitF UlJPUjogIGNvbHVtbiAiYm9ndXMiIG9mIHJlbGF0aW9uICJwdCIgZG9lcyBub3QgZXhpc3QK K2NyZWF0ZSB0YWJsZSBwdCAoaWQgaW50ZWdlciwgZHMgZGF0ZSwgZGUgZGF0ZSwgcGVyaW9k IGZvciBwIChkcywgYm9ndXMpKTsKK0VSUk9SOiAgY29sdW1uICJib2d1cyIgb2YgcmVsYXRp b24gInB0IiBkb2VzIG5vdCBleGlzdAorLyogRGF0YSB0eXBlcyBtdXN0IG1hdGNoIGV4YWN0 bHkgKi8KK2NyZWF0ZSB0YWJsZSBwdCAoaWQgaW50ZWdlciwgZHMgZGF0ZSwgZGUgdGltZXN0 YW1wLCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkpOworRVJST1I6ICBzdGFydCBhbmQgZW5kIGNv bHVtbnMgb2YgcGVyaW9kIG11c3QgYmUgb2Ygc2FtZSB0eXBlCitjcmVhdGUgdGFibGUgcHQg KGlkIGludGVnZXIsIGRzIHRleHQgY29sbGF0ZSAiQyIsIGRlIHRleHQgY29sbGF0ZSAiUE9T SVgiLCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkpOworRVJST1I6ICBzdGFydCBhbmQgZW5kIGNv bHVtbnMgb2YgcGVyaW9kIG11c3QgaGF2ZSBzYW1lIGNvbGxhdGlvbgorLyogUGVyaW9kcyBt dXN0IGhhdmUgYSBkZWZhdWx0IEJUcmVlIG9wZXJhdG9yIGNsYXNzICovCitjcmVhdGUgdGFi bGUgcHQgKGlkIGludGVnZXIsIGRzIHhtbCwgZGUgeG1sLCBwZXJpb2QgZm9yIHAgKGRzLCBk ZSkpOworRVJST1I6ICBubyByYW5nZSB0eXBlIGZvciB4bWwgZm91bmQgZm9yIHBlcmlvZCBw CitISU5UOiAgWW91IGNhbiBkZWZpbmUgYSBjdXN0b20gcmFuZ2UgdHlwZSB3aXRoIENSRUFU RSBUWVBFCisvKiBQZXJpb2QgYW5kIGNvbHVtbiBuYW1lcyBhcmUgaW4gdGhlIHNhbWUgbmFt ZXNwYWNlICovCitjcmVhdGUgdGFibGUgcHQgKGlkIGludGVnZXIsIGRzIGRhdGUsIGRlIGRh dGUsIHBlcmlvZCBmb3IgY3RpZCAoZHMsIGRlKSk7CitFUlJPUjogIHBlcmlvZCBuYW1lICJj dGlkIiBjb25mbGljdHMgd2l0aCBhIHN5c3RlbSBjb2x1bW4gbmFtZQorY3JlYXRlIHRhYmxl IHB0IChpZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIGlkIChkcywg ZGUpKTsKK0VSUk9SOiAgcGVyaW9kIG5hbWUgImlkIiBjb25mbGljdHMgd2l0aCBhIGNvbHVt biBuYW1lCisvKiBOb3cgbWFrZSBvbmUgdGhhdCB3b3JrcyAqLworY3JlYXRlIHRhYmxlIHB0 IChpZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkp OworLyoKKyAqIENSRUFURSBUQUJMRSBjdXJyZW50bHkgYWRkcyBhbiBBTFRFUiBUQUJMRSB0 byBhZGQgdGhlIHBlcmlvZHMsIGJ1dCBsZXQncyBkbworICogc29tZSBleHBsaWNpdCB0ZXN0 aW5nIGFueXdheQorICovCithbHRlciB0YWJsZSBwdCBkcm9wIHBlcmlvZCBmb3IgcDsKK2Fs dGVyIHRhYmxlIHB0IGFkZCBwZXJpb2QgZm9yIHN5c3RlbV90aW1lIChkcywgZGUpOworRVJS T1I6ICBQRVJJT0QgRk9SIFNZU1RFTV9USU1FIGlzIG5vdCBzdXBwb3J0ZWQKK2FsdGVyIHRh YmxlIHB0IGFkZCBwZXJpb2QgZm9yIHAgKGRzLCBkZSk7CisvKiBDYW4ndCBkcm9wIGl0cyBj b2x1bW5zICovCithbHRlciB0YWJsZSBwdCBkcm9wIGNvbHVtbiBkczsKK0VSUk9SOiAgY2Fu bm90IGRyb3AgY29sdW1uIGRzIG9mIHRhYmxlIHB0IGJlY2F1c2Ugb3RoZXIgb2JqZWN0cyBk ZXBlbmQgb24gaXQKK0RFVEFJTDogIHBlcmlvZCBwIG9uIHRhYmxlIHB0IGRlcGVuZHMgb24g Y29sdW1uIGRzIG9mIHRhYmxlIHB0CitISU5UOiAgVXNlIERST1AgLi4uIENBU0NBREUgdG8g ZHJvcCB0aGUgZGVwZW5kZW50IG9iamVjdHMgdG9vLgorYWx0ZXIgdGFibGUgcHQgZHJvcCBj b2x1bW4gZGU7CitFUlJPUjogIGNhbm5vdCBkcm9wIGNvbHVtbiBkZSBvZiB0YWJsZSBwdCBi ZWNhdXNlIG90aGVyIG9iamVjdHMgZGVwZW5kIG9uIGl0CitERVRBSUw6ICBwZXJpb2QgcCBv biB0YWJsZSBwdCBkZXBlbmRzIG9uIGNvbHVtbiBkZSBvZiB0YWJsZSBwdAorSElOVDogIFVz ZSBEUk9QIC4uLiBDQVNDQURFIHRvIGRyb3AgdGhlIGRlcGVuZGVudCBvYmplY3RzIHRvby4K Ky8qIENhbid0IGNoYW5nZSB0aGUgZGF0YSB0eXBlcyAqLworYWx0ZXIgdGFibGUgcHQgYWx0 ZXIgY29sdW1uIGRzIHR5cGUgdGltZXN0YW1wOworRVJST1I6ICBjYW5ub3QgYWx0ZXIgdHlw ZSBvZiBhIGNvbHVtbiB1c2VkIGJ5IGEgcGVyaW9kCitERVRBSUw6ICBwZXJpb2QgcCBvbiB0 YWJsZSBwdCBkZXBlbmRzIG9uIGNvbHVtbiAiZHMiCithbHRlciB0YWJsZSBwdCBhbHRlciBj b2x1bW4gZHMgdHlwZSB0aW1lc3RhbXA7CitFUlJPUjogIGNhbm5vdCBhbHRlciB0eXBlIG9m IGEgY29sdW1uIHVzZWQgYnkgYSBwZXJpb2QKK0RFVEFJTDogIHBlcmlvZCBwIG9uIHRhYmxl IHB0IGRlcGVuZHMgb24gY29sdW1uICJkcyIKKy8qIGNvbHVtbi9wZXJpb2QgbmFtZXNwYWNl IGNvbmZsaWN0cyAqLworYWx0ZXIgdGFibGUgcHQgYWRkIGNvbHVtbiBwIGludGVnZXI7CitF UlJPUjogIGNvbHVtbiBuYW1lICJwIiBjb25mbGljdHMgd2l0aCBhIHBlcmlvZCBuYW1lCith bHRlciB0YWJsZSBwdCByZW5hbWUgY29sdW1uIGlkIHRvIHA7CitFUlJPUjogIGNvbHVtbiBu YW1lICJwIiBjb25mbGljdHMgd2l0aCBhIHBlcmlvZCBuYW1lCisvKiBhZGRpbmcgY29sdW1u cyBhbmQgdGhlIHBlcmlvZCBhdCB0aGUgc2FtZSB0aW1lICovCitjcmVhdGUgdGFibGUgcHQy IChpZCBpbnRlZ2VyKTsKK2FsdGVyIHRhYmxlIHB0MiBhZGQgY29sdW1uIGRzIGRhdGUsIGFk ZCBjb2x1bW4gZGUgZGF0ZSwgYWRkIHBlcmlvZCBmb3IgcCAoZHMsIGRlKTsKK2Ryb3AgdGFi bGUgcHQyOworLyogQW1iaWd1b3VzIHJhbmdlIHR5cGVzIHJhaXNlIGFuIGVycm9yICovCitj cmVhdGUgdHlwZSBteWRhdGVyYW5nZSBhcyByYW5nZShzdWJ0eXBlPWRhdGUpOworY3JlYXRl IHRhYmxlIHB0MiAoaWQgaW50LCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIHAgKGRz LCBkZSkpOworRVJST1I6ICBhbWJpZ3VvdXMgcmFuZ2UgZm9yIHR5cGUgZGF0ZQorLyogWW91 IGNhbiBnaXZlIGFuIGV4cGxpY2l0IHJhbmdlIHR5cGUgKi8KK2NyZWF0ZSB0YWJsZSBwdDIg KGlkIGludCwgZHMgZGF0ZSwgZGUgZGF0ZSwgcGVyaW9kIGZvciBwIChkcywgZGUpIHdpdGgg KHJhbmdldHlwZSA9ICdteWRhdGVyYW5nZScpKTsKK2Ryb3AgdHlwZSBteWRhdGVyYW5nZTsK K0VSUk9SOiAgY2Fubm90IGRyb3AgdHlwZSBteWRhdGVyYW5nZSBiZWNhdXNlIG90aGVyIG9i amVjdHMgZGVwZW5kIG9uIGl0CitERVRBSUw6ICBwZXJpb2QgcCBvbiB0YWJsZSBwdDIgZGVw ZW5kcyBvbiB0eXBlIG15ZGF0ZXJhbmdlCitISU5UOiAgVXNlIERST1AgLi4uIENBU0NBREUg dG8gZHJvcCB0aGUgZGVwZW5kZW50IG9iamVjdHMgdG9vLgorZHJvcCB0eXBlIG15ZGF0ZXJh bmdlIGNhc2NhZGU7CitOT1RJQ0U6ICBkcm9wIGNhc2NhZGVzIHRvIHBlcmlvZCBwIG9uIHRh YmxlIHB0MgorZHJvcCB0YWJsZSBwdDI7CitjcmVhdGUgdGFibGUgcHQyIChpZCBpbnQsIGRz IGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSB3aXRoIChyYW5nZXR5cGUg PSAnZGF0ZXJhbmdlJykpOworLyogUmFuZ2UgdHlwZSBpcyBub3QgZm91bmQgKi8KK2NyZWF0 ZSB0YWJsZSBwdDMgKGlkIGludCwgZHMgZGF0ZSwgZGUgZGF0ZSwgcGVyaW9kIGZvciBwIChk cywgZGUpIHdpdGggKHJhbmdldHlwZSA9ICdub3RhcmFuZ2UnKSk7CitFUlJPUjogIFJhbmdl IHR5cGUgbm90YXJhbmdlIG5vdCBmb3VuZAorLyogUmFuZ2UgdHlwZSBpcyB0aGUgd3Jvbmcg dHlwZSAqLworY3JlYXRlIHRhYmxlIHB0MyAoaWQgaW50LCBkcyBkYXRlLCBkZSBkYXRlLCBw ZXJpb2QgZm9yIHAgKGRzLCBkZSkgd2l0aCAocmFuZ2V0eXBlID0gJ3RzdHpyYW5nZScpKTsK K0VSUk9SOiAgUmFuZ2UgdHlwZSB0c3R6cmFuZ2UgZG9lcyBub3QgbWF0Y2ggY29sdW1uIHR5 cGUgZGF0ZQorZHJvcCB0YWJsZSBwdDI7CisvKiBDUkVBVEUgVEFCTEUgKExJS0UgLi4uKSAq LworLyogUGVyaW9kcyBhcmUgbm90IGNvcGllZCBieSBMSUtFICovCitjcmVhdGUgdGFibGUg cHQyIChsaWtlIHB0KTsKK1xkIHB0MgorICAgICAgICAgICAgICAgIFRhYmxlICJwdWJsaWMu cHQyIgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1 bHQgCistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0t LS0KKyBpZCAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKKyBkcyAg ICAgfCBkYXRlICAgIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKKyBkZSAgICAgfCBkYXRl ICAgIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKKworZHJvcCB0YWJsZSBwdDI7CisvKiBD YW4gYWRkIGEgcGVyaW9kIHJlZmVycmluZyB0byBMSUtFJ2QgY29sdW1ucyAqLworY3JlYXRl IHRhYmxlIG5vdF9wIChpZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRlKTsKK2NyZWF0ZSB0 YWJsZSBwdDIgKGxpa2Ugbm90X3AsIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSk7CitcZCBwdDIK KyAgICAgICAgICAgICAgICBUYWJsZSAicHVibGljLnB0MiIKKyBDb2x1bW4gfCAgVHlwZSAg IHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCisgaWQgICAgIHwgaW50ZWdlciB8 ICAgICAgICAgICB8ICAgICAgICAgIHwgCisgZHMgICAgIHwgZGF0ZSAgICB8ICAgICAgICAg ICB8ICAgICAgICAgIHwgCisgZGUgICAgIHwgZGF0ZSAgICB8ICAgICAgICAgICB8ICAgICAg ICAgIHwgCitQZXJpb2RzOgorICAgIHAgKGRzLCBkZSkKK0NoZWNrIGNvbnN0cmFpbnRzOgor ICAgICJwdDJfcF9jaGVjayIgQ0hFQ0sgKGRzIDwgZGUpCisKK2Ryb3AgdGFibGUgcHQyOwor LyogQ2FuIGFkZCBhIHBlcmlvZCB3aXRoIHRoZSBzYW1lIG5hbWUgKi8KK2NyZWF0ZSB0YWJs ZSBwdDIgKGxpa2UgcHQsIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSk7CitcZCBwdDIKKyAgICAg ICAgICAgICAgICBUYWJsZSAicHVibGljLnB0MiIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29s bGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCisgaWQgICAgIHwgaW50ZWdlciB8ICAgICAg ICAgICB8ICAgICAgICAgIHwgCisgZHMgICAgIHwgZGF0ZSAgICB8ICAgICAgICAgICB8ICAg ICAgICAgIHwgCisgZGUgICAgIHwgZGF0ZSAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwg CitQZXJpb2RzOgorICAgIHAgKGRzLCBkZSkKK0NoZWNrIGNvbnN0cmFpbnRzOgorICAgICJw dDJfcF9jaGVjayIgQ0hFQ0sgKGRzIDwgZGUpCisKK2Ryb3AgdGFibGUgcHQyOworLyogQ2Fu IGFkZCBhIHBlcmlvZCB3aXRoIGEgZGlmZmVyZW50IG5hbWUgKi8KK2NyZWF0ZSB0YWJsZSBw dDIgKGxpa2UgcHQsIHBlcmlvZCBmb3IgcDIgKGRzLCBkZSkpOworXGQgcHQyCisgICAgICAg ICAgICAgICAgVGFibGUgInB1YmxpYy5wdDIiCisgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxh dGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQorIGlkICAgICB8IGludGVnZXIgfCAgICAgICAg ICAgfCAgICAgICAgICB8IAorIGRzICAgICB8IGRhdGUgICAgfCAgICAgICAgICAgfCAgICAg ICAgICB8IAorIGRlICAgICB8IGRhdGUgICAgfCAgICAgICAgICAgfCAgICAgICAgICB8IAor UGVyaW9kczoKKyAgICBwMiAoZHMsIGRlKQorQ2hlY2sgY29uc3RyYWludHM6CisgICAgInB0 Ml9wMl9jaGVjayIgQ0hFQ0sgKGRzIDwgZGUpCisKK2Ryb3AgdGFibGUgcHQyOworLyogQ2Fu J3QgYWRkIGEgcGVyaW9kIHdob3NlIG5hbWUgY29uZmxpY3RzIHdpdGggYSBMSUtFJ2QgY29s dW1uICovCitjcmVhdGUgdGFibGUgcHQyIChsaWtlIHB0LCBwZXJpb2QgZm9yIGlkIChkcywg ZGUpKTsKK0VSUk9SOiAgcGVyaW9kIG5hbWUgImlkIiBjb25mbGljdHMgd2l0aCBhIGNvbHVt biBuYW1lCisvKiBDUkVBVEUgVEFMQkUgSU5IRVJJVFMgKi8KKy8qIENhbid0IGluaGVyaXQg ZnJvbSBhIHRhYmxlIHdpdGggYSBwZXJpb2QgKi8KK2NyZWF0ZSB0YWJsZSBwdDIgKG5hbWUg dGV4dCkgaW5oZXJpdHMgKHB0KTsKK0VSUk9SOiAgSW5oZXJpdGluZyBmcm9tIGEgdGFibGUg d2l0aCBhIFBFUklPRCBpcyBub3Qgc3VwcG9ydGVkCisvKiBDYW4ndCBpbmhlcml0IHdpdGgg YSBwZXJpb2QgKi8KK2NyZWF0ZSB0YWJsZSBwdDIgKGQycyBkYXRlLCBkMmUgZGF0ZSwgcGVy aW9kIGZvciBwIChkMnMsIGQyZSkpIGluaGVyaXRzIChub3RfcCk7CitFUlJPUjogIEluaGVy aXRpbmcgaXMgbm90IHN1cHBvcnRlZCB3aGVuIGEgdGFibGUgaGFzIGEgUEVSSU9ECitkcm9w IHRhYmxlIG5vdF9wOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9z Y2hlZHVsZSBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKaW5kZXggY2Y0 NmZhMzM1OS4uOTczODI1ZjVjNyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJh bGxlbF9zY2hlZHVsZQorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxl CkBAIC00OCw3ICs0OCw3IEBAIHRlc3Q6IGNyZWF0ZV9pbmRleCBjcmVhdGVfaW5kZXhfc3Bn aXN0IGNyZWF0ZV92aWV3IGluZGV4X2luY2x1ZGluZyBpbmRleF9pbmNsdWRpCiAjIC0tLS0t LS0tLS0KICMgQW5vdGhlciBncm91cCBvZiBwYXJhbGxlbCB0ZXN0cwogIyAtLS0tLS0tLS0t Ci10ZXN0OiBjcmVhdGVfYWdncmVnYXRlIGNyZWF0ZV9mdW5jdGlvbl9zcWwgY3JlYXRlX2Nh c3QgY29uc3RyYWludHMgdHJpZ2dlcnMgc2VsZWN0IGluaGVyaXQgdHlwZWRfdGFibGUgdmFj dXVtIGRyb3BfaWZfZXhpc3RzIHVwZGF0YWJsZV92aWV3cyByb2xlYXR0cmlidXRlcyBjcmVh dGVfYW0gaGFzaF9mdW5jIGVycm9ycyBpbmZpbml0ZV9yZWN1cnNlCit0ZXN0OiBjcmVhdGVf YWdncmVnYXRlIGNyZWF0ZV9mdW5jdGlvbl9zcWwgY3JlYXRlX2Nhc3QgY29uc3RyYWludHMg dHJpZ2dlcnMgc2VsZWN0IGluaGVyaXQgdHlwZWRfdGFibGUgcGVyaW9kcyB2YWN1dW0gZHJv cF9pZl9leGlzdHMgdXBkYXRhYmxlX3ZpZXdzIHJvbGVhdHRyaWJ1dGVzIGNyZWF0ZV9hbSBo YXNoX2Z1bmMgZXJyb3JzIGluZmluaXRlX3JlY3Vyc2UKIAogIyAtLS0tLS0tLS0tCiAjIHNh bml0eV9jaGVjayBkb2VzIGEgdmFjdXVtLCBhZmZlY3RpbmcgdGhlIHNvcnQgb3JkZXIgb2Yg U0VMRUNUICoKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BlcmlvZHMuc3Fs IGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGVyaW9kcy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMC4uODI2Yjg3NzJmYwotLS0gL2Rldi9udWxsCisrKyBiL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL3BlcmlvZHMuc3FsCkBAIC0wLDAgKzEsOTkgQEAKKy8qIFN5 c3RlbSBwZXJpb2RzIGFyZSBub3QgaW1wbGVtZW50ZWQgKi8KK2NyZWF0ZSB0YWJsZSBwdCAo aWQgaW50ZWdlciwgZHMgZGF0ZSwgZGUgZGF0ZSwgcGVyaW9kIGZvciBzeXN0ZW1fdGltZSAo ZHMsIGRlKSk7CisKKy8qIFBlcmlvZHMgbXVzdCBzcGVjaWZ5IGFjdHVhbCBjb2x1bW5zICov CitjcmVhdGUgdGFibGUgcHQgKGlkIGludGVnZXIsIGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlv ZCBmb3IgcCAoYm9ndXMsIGRlKSk7CitjcmVhdGUgdGFibGUgcHQgKGlkIGludGVnZXIsIGRz IGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgcCAoZHMsIGJvZ3VzKSk7CisKKy8qIERhdGEg dHlwZXMgbXVzdCBtYXRjaCBleGFjdGx5ICovCitjcmVhdGUgdGFibGUgcHQgKGlkIGludGVn ZXIsIGRzIGRhdGUsIGRlIHRpbWVzdGFtcCwgcGVyaW9kIGZvciBwIChkcywgZGUpKTsKK2Ny ZWF0ZSB0YWJsZSBwdCAoaWQgaW50ZWdlciwgZHMgdGV4dCBjb2xsYXRlICJDIiwgZGUgdGV4 dCBjb2xsYXRlICJQT1NJWCIsIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSk7CisKKy8qIFBlcmlv ZHMgbXVzdCBoYXZlIGEgZGVmYXVsdCBCVHJlZSBvcGVyYXRvciBjbGFzcyAqLworY3JlYXRl IHRhYmxlIHB0IChpZCBpbnRlZ2VyLCBkcyB4bWwsIGRlIHhtbCwgcGVyaW9kIGZvciBwIChk cywgZGUpKTsKKworLyogUGVyaW9kIGFuZCBjb2x1bW4gbmFtZXMgYXJlIGluIHRoZSBzYW1l IG5hbWVzcGFjZSAqLworY3JlYXRlIHRhYmxlIHB0IChpZCBpbnRlZ2VyLCBkcyBkYXRlLCBk ZSBkYXRlLCBwZXJpb2QgZm9yIGN0aWQgKGRzLCBkZSkpOworY3JlYXRlIHRhYmxlIHB0IChp ZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIGlkIChkcywgZGUpKTsK KworLyogTm93IG1ha2Ugb25lIHRoYXQgd29ya3MgKi8KK2NyZWF0ZSB0YWJsZSBwdCAoaWQg aW50ZWdlciwgZHMgZGF0ZSwgZGUgZGF0ZSwgcGVyaW9kIGZvciBwIChkcywgZGUpKTsKKwor LyoKKyAqIENSRUFURSBUQUJMRSBjdXJyZW50bHkgYWRkcyBhbiBBTFRFUiBUQUJMRSB0byBh ZGQgdGhlIHBlcmlvZHMsIGJ1dCBsZXQncyBkbworICogc29tZSBleHBsaWNpdCB0ZXN0aW5n IGFueXdheQorICovCithbHRlciB0YWJsZSBwdCBkcm9wIHBlcmlvZCBmb3IgcDsKK2FsdGVy IHRhYmxlIHB0IGFkZCBwZXJpb2QgZm9yIHN5c3RlbV90aW1lIChkcywgZGUpOworYWx0ZXIg dGFibGUgcHQgYWRkIHBlcmlvZCBmb3IgcCAoZHMsIGRlKTsKKworLyogQ2FuJ3QgZHJvcCBp dHMgY29sdW1ucyAqLworYWx0ZXIgdGFibGUgcHQgZHJvcCBjb2x1bW4gZHM7CithbHRlciB0 YWJsZSBwdCBkcm9wIGNvbHVtbiBkZTsKKworLyogQ2FuJ3QgY2hhbmdlIHRoZSBkYXRhIHR5 cGVzICovCithbHRlciB0YWJsZSBwdCBhbHRlciBjb2x1bW4gZHMgdHlwZSB0aW1lc3RhbXA7 CithbHRlciB0YWJsZSBwdCBhbHRlciBjb2x1bW4gZHMgdHlwZSB0aW1lc3RhbXA7CisKKy8q IGNvbHVtbi9wZXJpb2QgbmFtZXNwYWNlIGNvbmZsaWN0cyAqLworYWx0ZXIgdGFibGUgcHQg YWRkIGNvbHVtbiBwIGludGVnZXI7CithbHRlciB0YWJsZSBwdCByZW5hbWUgY29sdW1uIGlk IHRvIHA7CisKKy8qIGFkZGluZyBjb2x1bW5zIGFuZCB0aGUgcGVyaW9kIGF0IHRoZSBzYW1l IHRpbWUgKi8KK2NyZWF0ZSB0YWJsZSBwdDIgKGlkIGludGVnZXIpOworYWx0ZXIgdGFibGUg cHQyIGFkZCBjb2x1bW4gZHMgZGF0ZSwgYWRkIGNvbHVtbiBkZSBkYXRlLCBhZGQgcGVyaW9k IGZvciBwIChkcywgZGUpOworZHJvcCB0YWJsZSBwdDI7CisKKy8qIEFtYmlndW91cyByYW5n ZSB0eXBlcyByYWlzZSBhbiBlcnJvciAqLworY3JlYXRlIHR5cGUgbXlkYXRlcmFuZ2UgYXMg cmFuZ2Uoc3VidHlwZT1kYXRlKTsKK2NyZWF0ZSB0YWJsZSBwdDIgKGlkIGludCwgZHMgZGF0 ZSwgZGUgZGF0ZSwgcGVyaW9kIGZvciBwIChkcywgZGUpKTsKKworLyogWW91IGNhbiBnaXZl IGFuIGV4cGxpY2l0IHJhbmdlIHR5cGUgKi8KK2NyZWF0ZSB0YWJsZSBwdDIgKGlkIGludCwg ZHMgZGF0ZSwgZGUgZGF0ZSwgcGVyaW9kIGZvciBwIChkcywgZGUpIHdpdGggKHJhbmdldHlw ZSA9ICdteWRhdGVyYW5nZScpKTsKK2Ryb3AgdHlwZSBteWRhdGVyYW5nZTsKK2Ryb3AgdHlw ZSBteWRhdGVyYW5nZSBjYXNjYWRlOworZHJvcCB0YWJsZSBwdDI7CitjcmVhdGUgdGFibGUg cHQyIChpZCBpbnQsIGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSB3 aXRoIChyYW5nZXR5cGUgPSAnZGF0ZXJhbmdlJykpOworCisvKiBSYW5nZSB0eXBlIGlzIG5v dCBmb3VuZCAqLworY3JlYXRlIHRhYmxlIHB0MyAoaWQgaW50LCBkcyBkYXRlLCBkZSBkYXRl LCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkgd2l0aCAocmFuZ2V0eXBlID0gJ25vdGFyYW5nZScp KTsKKworLyogUmFuZ2UgdHlwZSBpcyB0aGUgd3JvbmcgdHlwZSAqLworY3JlYXRlIHRhYmxl IHB0MyAoaWQgaW50LCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkg d2l0aCAocmFuZ2V0eXBlID0gJ3RzdHpyYW5nZScpKTsKK2Ryb3AgdGFibGUgcHQyOworCisv KiBDUkVBVEUgVEFCTEUgKExJS0UgLi4uKSAqLworCisvKiBQZXJpb2RzIGFyZSBub3QgY29w aWVkIGJ5IExJS0UgKi8KK2NyZWF0ZSB0YWJsZSBwdDIgKGxpa2UgcHQpOworXGQgcHQyCitk cm9wIHRhYmxlIHB0MjsKKworLyogQ2FuIGFkZCBhIHBlcmlvZCByZWZlcnJpbmcgdG8gTElL RSdkIGNvbHVtbnMgKi8KK2NyZWF0ZSB0YWJsZSBub3RfcCAoaWQgaW50ZWdlciwgZHMgZGF0 ZSwgZGUgZGF0ZSk7CitjcmVhdGUgdGFibGUgcHQyIChsaWtlIG5vdF9wLCBwZXJpb2QgZm9y IHAgKGRzLCBkZSkpOworXGQgcHQyCitkcm9wIHRhYmxlIHB0MjsKKworLyogQ2FuIGFkZCBh IHBlcmlvZCB3aXRoIHRoZSBzYW1lIG5hbWUgKi8KK2NyZWF0ZSB0YWJsZSBwdDIgKGxpa2Ug cHQsIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSk7CitcZCBwdDIKK2Ryb3AgdGFibGUgcHQyOwor CisvKiBDYW4gYWRkIGEgcGVyaW9kIHdpdGggYSBkaWZmZXJlbnQgbmFtZSAqLworY3JlYXRl IHRhYmxlIHB0MiAobGlrZSBwdCwgcGVyaW9kIGZvciBwMiAoZHMsIGRlKSk7CitcZCBwdDIK K2Ryb3AgdGFibGUgcHQyOworCisvKiBDYW4ndCBhZGQgYSBwZXJpb2Qgd2hvc2UgbmFtZSBj b25mbGljdHMgd2l0aCBhIExJS0UnZCBjb2x1bW4gKi8KK2NyZWF0ZSB0YWJsZSBwdDIgKGxp a2UgcHQsIHBlcmlvZCBmb3IgaWQgKGRzLCBkZSkpOworCisvKiBDUkVBVEUgVEFMQkUgSU5I RVJJVFMgKi8KKworLyogQ2FuJ3QgaW5oZXJpdCBmcm9tIGEgdGFibGUgd2l0aCBhIHBlcmlv ZCAqLworY3JlYXRlIHRhYmxlIHB0MiAobmFtZSB0ZXh0KSBpbmhlcml0cyAocHQpOworCisv KiBDYW4ndCBpbmhlcml0IHdpdGggYSBwZXJpb2QgKi8KK2NyZWF0ZSB0YWJsZSBwdDIgKGQy cyBkYXRlLCBkMmUgZGF0ZSwgcGVyaW9kIGZvciBwIChkMnMsIGQyZSkpIGluaGVyaXRzIChu b3RfcCk7CisKK2Ryb3AgdGFibGUgbm90X3A7Ci0tIAoyLjI1LjEKCg== --------------xLmCyd89q18NiaElblWAsYVm--